Built motion from commit 8322a8b8.|2.5.34
authorAndrea Amorese <andrea.amorese@xenialab.it>
Tue, 31 Aug 2021 09:28:30 +0000 (11:28 +0200)
committerAndrea Amorese <andrea.amorese@xenialab.it>
Tue, 31 Aug 2021 09:28:30 +0000 (11:28 +0200)
1164 files changed:
apidoc/api_project.js
apidoc/api_project.json
public/app/forgot/i18n/de.json
public/app/login/i18n/de.json
public/app/main/apps/analytics/i18n/de.json
public/app/main/apps/chat/i18n/de.json
public/app/main/apps/contactmanager/i18n/de.json
public/app/main/apps/dashboards/i18n/de.json
public/app/main/apps/mail/i18n/de.json
public/app/main/apps/openchannel/i18n/de.json
public/app/main/apps/staff/i18n/de.json
public/app/main/apps/tools/i18n/de.json
public/app/main/apps/voice/i18n/de.json
public/app/main/apps/whatsapp/i18n/de.json
public/app/quick-panel/i18n/de.json
public/app/reset/i18n/de.json
public/app/toolbar/i18n/de.json
public/index.html
public/scripts/app.dd839c8d.js [moved from public/scripts/app.b7a358c4.js with 55% 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/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.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.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.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/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/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/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/mysqldb/index.js
server/routes.js
server/rpc/index.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/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

index babd526..2fdaa93 100644 (file)
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-08-30T09:46:11.237Z",
+    "time": "2021-08-31T09:18:32.852Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 3b91c00..aa246f0 100644 (file)
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-08-30T09:46:11.237Z",
+    "time": "2021-08-31T09:18:32.852Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 5c4734e..53a27fb 100644 (file)
@@ -1,15 +1,15 @@
 {
   "FORGOTPASSWORD": {
-    "TITLE": "Passwort wiederherstellen",
-    "EMAIL_ADRESS": "E-Mail Adresse",
+    "TITLE": "Ihr Passwort wiederherstellen",
+    "EMAIL_ADRESS": "E-mail Adresse",
     "SEND_RESET_LINK": "LINK ZUM ZURÃœCKSETZEN SENDEN",
     "GO_BACK": "Zurück zum Login",
     "LINK_SENT": "Link gesendet",
-    "LINNK_SENT_MESSAGE": "Eine E-Mail mit einem Link zum Zurücksetzen des Passwortes wurde an Ihre Adresse gesendet.",
-    "PASSWORD_RESET_ERROR": "Fehler beim Zurücksetzen des Passwortes",
+    "LINNK_SENT_MESSAGE": "Eine e-Mail mit einem Link zum Zurücksetzen des Kennworts wurde an Ihre Adresse gesendet!",
+    "PASSWORD_RESET_ERROR": "Passwort Fehler zurücksetzen",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Eingabe E-Mail Adresse erforderlich",
-      "EMAIL_MUST_VALID": "Es muss eine gültige E-Mail Adresse eingegeben werden"
+      "EMAIL_REQUIRED": "Im Feld E-Mail ist erforderlich",
+      "EMAIL_MUST_VALID": "E-Mail muss eine gültige e-mail Adresse"
     }
   }
 }
index bced170..c090dfa 100644 (file)
@@ -1,16 +1,16 @@
 {
   "LOGIN": {
-    "TITLE": "Bitte mit Ihrem Konto anmelden",
+    "TITLE": "Melden Sie sich bei Ihrem Konto an",
     "EMAIL": "E-Mail",
     "PASSWORD": "Passwort",
-    "REMEMBER_ME": "Anmeldedaten merken",
+    "REMEMBER_ME": "Erinnere Dich an Mich",
     "FORGOT_PASSWORD": "Passwort vergessen?",
-    "LOG_IN": "ANMELDEN",
+    "LOG_IN": "LOG IN",
     "OR": "Oder",
-    "WITH_GOOGLE": "Anmeldung mit Google",
-    "WITH_FACEBOOK": "Anmeldung mit Facebook",
+    "WITH_GOOGLE": "Melden Sie sich mit Google",
+    "WITH_FACEBOOK": "Mit Facebook anmelden",
     "DONT_HAVE_ACCOUNT": "Sie haben noch kein Konto?",
-    "CREATE_ACCOUNT": "Konto erstellen",
+    "CREATE_ACCOUNT": "Erstellen Sie ein Konto",
     "ERRORS": {
       "EMAIL_REQUIRED": "Pflichtfeld",
       "EMAIL_MUST_VALID": "Falsches Format",
@@ -18,8 +18,8 @@
       "USERNAME_REQUIRED": "Pflichtfeld"
     },
     "USERNAME": "Benutzername",
-    "CANCEL": "Abbrechen",
-    "SELECT": "Auswählen",
+    "CANCEL": "Stornieren",
+    "SELECT": "Wählen",
     "TELEPHONES": "Telefone"
   }
 }
index e6b577a..e60162b 100644 (file)
@@ -13,7 +13,7 @@
       "METRIC_REQUIRED": "Pflichtfeld",
       "COLUMN_REQUIRED": "Pflichtfeld",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "CUSTOM_METRIC_REQUIRED": "Pflichtfeld",
+      "CUSTOM_METRIC_REQUIRED": "benutzerdefinierte Metrik (erforderlich)",
       "ALIAS_REQUIRED": "Pflichtfeld"
     },
     "NEW_METRIC": "Neue Metrik",
@@ -23,8 +23,8 @@
     "SAVE": "Speichern",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Keine auswählen",
     "TYPE": "Typ",
     "EXTRACTEDREPORTS": "Extrahierte Berichte",
     "DATE_RANGE_FROM": "Datum von",
     "GENERAL": "Allgemein",
     "FIELDS": "Felder",
     "CONDITION": "Bedingung",
-    "OPERATOR": "Operator",
+    "OPERATOR": "Betreiber",
     "GROUP": "Gruppe",
     "COLUMN": "Spalte",
     "VALUE": "Wert",
     "PREVIEW": "Vorschau",
-    "LIMITED_RESULT": "Ergebins begrenzt",
+    "LIMITED_RESULT": "BEGRENZTES ERGEBNIS",
     "NO_DATA": "Keine Daten",
     "CONDITIONS": "Bedingungen",
     "ALIAS": "Alias",
     "FUNCTION": "Funktion",
     "GROUP_BY": "Gruppieren nach",
-    "ORDER_BY": "Sortieren nach",
+    "ORDER_BY": "Bestellung von",
     "ADD_REPORTFIELD": "Feld hinzufügen",
     "EDIT_REPORTFIELD": "Feld bearbeiten",
     "DELETE_REPORTFIELD": "Feld löschen",
     "NO_METRIC_FOUND": "Keine Metrik gefunden",
     "NO_AVAILABLE_INFO": "keine Informationen verfügbar",
     "CUSTOM_METRIC": "Benutzerdefinierte Metrik",
-    "DELETE_EXTRACTEDREPORT": "Extrahierte Berichte löschen",
+    "DELETE_EXTRACTEDREPORT": "Löschen extrahierte Berichte",
     "EDIT_EXTRACTEDREPORT": "Extrahierte Berichte bearbeiten",
-    "DOWNLOAD_EXTRACTEDREPORT": "Extrahierte Berichte herunterladen",
+    "DOWNLOAD_EXTRACTEDREPORT": "Herunterladen extrahierte Berichte",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "DELETE": "Löschen",
     "REPORTNAME": "Berichtsname",
     "SEND_IF_EMPTY": "Senden, wenn leer",
index 02f4f10..4bc9896 100644 (file)
@@ -2,12 +2,12 @@
   "CHAT": {
     "AMAZONLEX": "Amazon Lex",
     "TEXT": "Text",
-    "TIMES": "Anzahl der Zeiten pro Interaktion",
+    "TIMES": "Anzahl von Malen pro Interaktion",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
-    "NEW_CHATDISPOSITION": "Neue Chat-Qualifizierung",
+    "NEW_CHATDISPOSITION": "Neue Chat-Disposition",
     "ENABLECUSTOMERATTACHMENT": "Kundenanhänge aktivieren",
-    "OFFLINE_CHAT_BUTTON": "Button Chat offline",
+    "OFFLINE_CHAT_BUTTON": "Offline-Chat-Taste",
     "OFFLINESTATUS": "Offline Status",
     "NAME": "Name",
     "CHATQUEUES": "Chat-Warteschlangen",
     "STRATEGY": "Strategie",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "KEY": "Schlüssel",
+    "KEY": "Key",
     "ALIAS": "Alias-Name",
     "VARIABLE": "Variable",
     "INTERVAL": "Intervall",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
     "TIMEZONE": "Zeitzone",
     "MESSAGE": "Nachricht",
     "ADVANCED": "Erweitert",
     "FORWARDTRANSCRIPT": "Transkript weiterleiten",
     "FORWARDTRANSCRIPTMESSAGE": "Transkript-Nachricht weiterleiten",
-    "SKIPMESSAGEBUTTON": "Nachrichtenbutton Ã¼berspringen",
+    "SKIPMESSAGEBUTTON": "Nachrichtentaste Ã¼berspringen",
     "EDIT_MESSAGE": "Nachricht bearbeiten",
-    "CONDITION_AGREEMENT": "Konditionelle Vereinbarung",
-    "NONE": "Nichts",
+    "CONDITION_AGREEMENT": "Bedingungsvereinbarung",
+    "NONE": "Keine",
     "PRIORITY": "Priorität",
     "ONLINESTATUS": "Online Status",
-    "UNMANAGEDSTATUS": "Status nicht bearbeitet",
+    "UNMANAGEDSTATUS": "Nicht verwalteter Status",
     "AUTOCLOSE": "Automatisches Schließen aktivieren",
-    "ENABLEUNMANAGEDNOTE": "Unbearbeitete Nachricht aktivieren",
-    "UNMANAGEDMESSAGE": "Unbearbeitete Nachricht",
+    "ENABLEUNMANAGEDNOTE": "Nicht verwaltete Nachricht aktivieren",
+    "UNMANAGEDMESSAGE": "Nachricht",
     "SKIPUNMANAGED": "Nachricht Ã¼berspringen",
     "SENDUNMANAGED": "Nachricht senden",
-    "WEBSITESCRIPT": "Webseiten-Skript",
+    "WEBSITESCRIPT": "Website-Script",
     "DELETE_OFFLINEMESSAGE": "Löschen",
     "OFFLINEMESSAGES": "Offline Nachrichten",
     "FORWARD_OFFLINE": "Offline weiterleiten",
     "FORWARD_OFFLINE_ADDRESS": "Offline-Adresse weiterleiten",
     "CLOSINGFORM": "Formular schließen",
     "ENABLERATING": "Bewertung aktivieren",
-    "ENABLECUSTOMERWRITING": "Kunde kann schreiben, bevor Chat akzeptiert wird",
+    "ENABLECUSTOMERWRITING": "Dem Kunden \"schreiben\" erlauben, bevor der Agent akzeptiert",
     "ENABLEFEEDBACK": "Feedback aktivieren",
     "RATINGTYPE": "Bewertungstyp",
-    "CLOSINGMESSAGE": "Abschluss Nachricht",
-    "CLOSINGMESSAGEBUTTON": "Button für Abschluss Nachricht",
+    "CLOSINGMESSAGE": "Nachricht schließen",
+    "CLOSINGMESSAGEBUTTON": "Nachrichtentaste schließen",
     "RATINGSTARSNUMBER": "Anzahl der Bewertungssterne",
     "EDIT_GOTOIF": "GotoIf bearbeiten",
     "CONDITION": "Bedingung",
-    "TRUEPRIORITY": "Wahre Priorität",
+    "TRUEPRIORITY": "Echte Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "WEBSITEALIAS": "Website-Alias",
     "ERRORS": {
       "TEXT_REQUIRED": "Pflichtfeld",
       "SENDUNMANAGED_REQUIRED": "Pflichtfeld",
-      "SENDUNMANAGED_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "SKIPUNMANAGED_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "UNMANAGEDMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "WEBSITEALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "SENDUNMANAGED_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "SKIPUNMANAGED_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
+      "UNMANAGEDMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
+      "WEBSITEALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
       "AGENT_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
       "CONDITION_REQUIRED": "Pflichtfeld",
       "TIMEOUT_REQUIRED": "Pflichtfeld",
       "REJECTURL_MUST_VALID_URL": "Falsches Format",
       "CLOSEURL_MUST_VALID_URL": "Falsches Format",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
       "WAITINGMESSAGE_REQUIRED": "Pflichtfeld",
       "WAITINGTITLE_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
       "KEY_REQUIRED": "Pflichtfeld",
-      "WAITINGMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "WAITINGTITLE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "HEADER_OFFLINE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "CLOSINGQUESTION_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "WAITINGMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "WAITINGTITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "HEADER_OFFLINE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "CLOSINGQUESTION_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "NOTETITLE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "NOTETITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
       "FONTSIZE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
       "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "VERTICALPOSITION_REQUIRED": "Pflichtfeld",
-      "CUSTOMERALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "CUSTOMERALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
       "TAG_REQUIRED": "Pflichtfeld",
-      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "MESSAGEFONTSIZE_REQUIRED": "Pflichtfeld",
       "AGENTALIAS_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "CUSTOMERALIAS_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "SYSTEMALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "SYSTEMALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
       "SYSTEMALIAS_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Pflichtfeld",
       "BOTNAME_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld",
       "VIDAOOTOPIC_REQUIRED": "Pflichtfeld"
     },
-    "CM_FIELD": "Kontaktmanager-Feld",
-    "CHATPROACTIVEACTIONS": "Proaktive Anfragen",
-    "NEW_CHATPROACTIVEACTION": "Neue proaktive Anfrage",
-    "EDIT_CHATPROACTIVEACTION": "Proaktive Anfrage bearbeiten",
-    "DELETE_CHATPROACTIVEACTION": "Proaktive Anfrage löschen",
-    "ADD_CHATPROACTIVEACTION": "Proaktive Anfrage hinzufügen",
-    "NO_CHATPROACTIVEACTION_AVAILABLE": "Keine proaktiven Anfragen verfügbar",
+    "CM_FIELD": "Kontakt Manager Feld",
+    "CHATPROACTIVEACTIONS": "Proaktive Aktionen",
+    "NEW_CHATPROACTIVEACTION": "Neue proaktive Aktion",
+    "EDIT_CHATPROACTIVEACTION": "Proaktive Aktion bearbeiten",
+    "DELETE_CHATPROACTIVEACTION": "Proaktive Aktion löschen",
+    "ADD_CHATPROACTIVEACTION": "Proaktive Aktion hinzufügen",
+    "NO_CHATPROACTIVEACTION_AVAILABLE": "Keine proaktiven Aktionen verfügbar",
     "NO_OFFLINEMESSAGE_AVAILABLE": "Keine Offline-Nachrichten verfügbar",
-    "MOUSEOVER": "Mouse-Over",
+    "MOUSEOVER": "Maus Ã¼ber",
     "TIMEOUT": "Timeout",
     "TYPE": "Typ",
-    "SELECTOR": "Selektion",
+    "SELECTOR": "Wählschalter",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "GotoIf",
     "QUEUE": "Warteschlange",
     "BUILDER": "Builder",
     "PREVIEW": "Vorschau",
-    "EDIT_AGENT": "Agenten bearbeiten",
+    "EDIT_AGENT": "Agent bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_GOTO": "Goto bearbeiten",
     "EDIT_GOTOIf": "GotoIf bearbeiten",
     "LIST": "Liste",
     "SNIPPET": "Snippet",
     "FORMS": "Formulare",
-    "UP": "Nach Oben",
-    "DOWN": "Nach Unten",
-    "COLLAPSE": "Einklappen",
-    "PROACTIVEACTIONS": "Proaktive Anfragen",
-    "DISPOSITIONS": "Qualifizierungen",
+    "UP": "Bis",
+    "DOWN": "Unten",
+    "COLLAPSE": "Zusammenklappen",
+    "PROACTIVEACTIONS": "Proaktive Aktionen",
+    "DISPOSITIONS": "Dispositionen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "FIDELITY": "Treue",
-    "APPEARANCE": "Darstellung",
+    "APPEARANCE": "Aussehen",
     "MAINCOLOR": "Hauptfarbe",
     "FOCUSCOLOR": "Fokusfarbe",
-    "BUTTONCOLOR": "Buttonfarbe",
+    "BUTTONCOLOR": "Tastenfarbe",
     "HEADERSHAPE": "Kopfzeilenform",
     "ANIMATION": "Animation",
     "DEFAULT": "Standard",
     "LABELS": "Labels",
     "HEADER_ONLINE": "Online-Kopfzeile",
     "ONLINE_MESSAGE": "Online Nachricht",
-    "NAME_TITLE": "Name Titel",
-    "USERNAME_PLACEHOLDER": "Platzhalter für Nutzernamen",
-    "EMAIL_TITLE": "E-Mail Titel",
-    "EMAIL_PLACEHOLDER": "Platzhalter für E-Mail Adresse",
-    "START_CHAT_BUTTON": "'Chat starten' Button",
-    "AGENTS_BUSY": "Agenten besetzt",
+    "NAME_TITLE": "Name Eingabebezeichnung",
+    "USERNAME_PLACEHOLDER": "Benutzername Eingabe Platzhalter",
+    "EMAIL_TITLE": "E-Mail-Eingabe Label",
+    "EMAIL_PLACEHOLDER": "Platzhalter für E-Mail-Eingabe",
+    "START_CHAT_BUTTON": "'Chat starten' Taste",
+    "AGENTS_BUSY": "Meldung für besetzte Agenten",
     "HEADER_OFFLINE": "Offline-Kopfzeile",
     "OFFLINE_MESSAGE": "Offline Nachricht",
-    "MESSAGE_TITLE": "Nachricht Titel",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für Nachrichteneingabe",
-    "ENQUIRY_BUTTON": "Anfrage-Button",
+    "MESSAGE_TITLE": "Nachrichtenbezeichnung",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für die Eingabe von Anfragenachrichten",
+    "ENQUIRY_BUTTON": "Anfrage-Taste Text",
     "RATING_MESSAGE": "Bewertungsnachricht",
-    "RATING_SEND": "Button Bewertung senden",
-    "RATING_SKIP": "Button Bewertung Ã¼berspringen",
+    "RATING_SEND": "Bewertung Senden Tasten-Text",
+    "RATING_SKIP": "Bewertung Ãœberspringen Tasten-Text",
     "ONLINE": "Online",
     "OFFLINE": "Offline",
-    "PROACTIVE": "Proaktiv",
+    "PROACTIVE": "Proaktive",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode akzeptieren",
+    "ACCEPTMETHOD": "Methode",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen",
+    "CLOSE": "Schliessen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "EMBEDDING": "Einbetten",
+    "EMBEDDING": "Einbettung",
     "GENERAL": "Allgemein",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "BACK": "Zurück",
     "HELP": {
-      "MAPKEY": "Das folgende Feld aus dem Kontaktmanager:",
-      "FROMKEY": "wird in dem Chat-Snippet wie folgt zugeordnet:",
-      "TOKEN": "Automatisch generierter Token zur Verwendung im Skript",
+      "MAPKEY": "Das folgende Motion Contact Manager-Feld:",
+      "FROMKEY": "Wird in Ihrem Motion Chat-Snippet wie folgt zugeordnet:",
+      "TOKEN": "Automatisch generiertes Token, das im Skript verwendet wird",
       "COPYSCRIPTTOCLIPBOARD": "Kopieren Sie den Skripttext und fügen Sie ihn in Ihre Website ein",
       "FORWARD_OFFLINE": "Sie können mehrere durch Kommas getrennte Adressen hinzufügen (z. B. john.doe@xcally.com, jane.miller@xcally.com)",
       "MOTIONADDRESS": "Das Feld muss das folgende Format haben: â‰ªprotocol>://<IP-Adresse>[:<port>]. Beispiel: https://X.Y.Z.W",
       "MOTIONPROXY": "Das Feld muss das folgende Format haben: â‰ªProtocol>:// â‰ªIP-Adresse>: â‰ªport>]. Beispiel: https://X.Y.Z.W",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "LIST": "Liste für die Zuordnung aus dem Kontaktmanager",
+      "LIST": "Contact Manager-Liste, die zum Zuordnen von Kontakten verwendet wird",
       "KEY": "Website-Kurzname (5 Zeichen), der auf der Registerkarte \"Agent\" angezeigt wird",
-      "INTEVAL": "Wählen aus der Liste der verfügbaren Intervalle",
-      "TIMEZONE": "Zeitzone auswählen (Standard = lokale Zeitzone)",
-      "ENABLERATING": "Bewertung nach Chat durch Kunden aktivieren",
-      "ENABLEFEEDBACK": "Feedback nach Chat durch Kunden aktivieren (Max. 150 Zeichen)",
-      "FORWARDTRANSCRIPT": "Chatprotokoll nach Abschluss per E-Mail senden",
-      "AUTOCLOSE": "Aktivieren Sie diese Option, wenn Chat-Sitzungen als nicht bearbeitet geschlossen werden sollen, sofern kein Agent verfügbar ist.",
-      "ENABLEUNMANAGEDNOTE": "Automatische Nachricht an den Kunden, wenn alle Agenten besetzt sind und somit der Chat nicht verfügbar ist",
-      "ENABLECUSTOMERWRITING": "Legt fest, ob der Kunde bereits im Chat schreiben kann, bevor ein Agent den Chat entgegen nimmmt. Hinweis: Dadurch kein Status \"unbearbeitet\"",
-      "INTERVAL": "Bitte aus der Liste wählen",
+      "INTEVAL": "Wird aus der Liste der verfügbaren Intervalle ausgewählt",
+      "TIMEZONE": "Wählen Sie eine aus der Liste aus (Standard = lokale Zeitzone)",
+      "ENABLERATING": "Aktivieren Sie es, wenn Sie möchten, dass der Webbesucher die Interaktion am Ende bewerten kann",
+      "ENABLEFEEDBACK": "Aktivieren Sie es, wenn Sie möchten, dass der Webbesucher am Ende ein Feedback (bis zu 150 Zeichen) senden kann",
+      "FORWARDTRANSCRIPT": "Aktivieren Sie diese Option, wenn der Webbesucher aufgefordert wird, ein Chat-Protokoll per E-Mail zu erhalten",
+      "AUTOCLOSE": "Aktivieren Sie diese Option, wenn Chat-Sitzungen als nicht verwaltet geschlossen werden sollen, wenn kein Agent verfügbar ist. Weitere Informationen finden Sie unter: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
+      "ENABLEUNMANAGEDNOTE": "Aktivieren Sie diese Option, wenn dem Besucher eine Nachricht angezeigt werden soll, wenn alle Agenten besetzt sind und der Chat nicht mehr verwaltet wird",
+      "ENABLECUSTOMERWRITING": "Aktivieren Sie es, wenn der Chat gestartet werden soll, ohne auf einen verfügbaren Agenten zu warten (Achtung: Wenn Sie ihn aktivieren, werden Ihre Chats niemals nicht verwaltet). Weitere Informationen finden Sie unter: https://wiki.xcallymotion.com/display/XMV/ Chat + Websites # ChatWebsites-Snippet ",
+      "INTERVAL": "Wählen Sie eins aus der Liste aus",
       "HIDEWHENOFFLINE": "Snippet ausblenden, wenn offline",
-      "AGENTIDENTIFIER": "Agentenkennung innerhalb der Chat-Sitzung im Snippet",
+      "AGENTIDENTIFIER": "Repräsentiert die Agentenkennung innerhalb der Chat-Sitzung im Snippet",
       "WEBSITEALIAS": "Ein Präfix, mit dem der Agentenname (Präfix + Agenten-ID) erstellt wird, der dem Webbesucher während der Chat-Sitzung angezeigt wird",
-      "VERTICALPOSITION": "Prozentualer Abstand in Prozent vom oberen Bildschirmrand",
-      "WELCOMEMESSAGE": "Leer lassen, um keine Nachricht zu senden",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
+      "VERTICALPOSITION": "Stellt den Abstand in Prozent von oben dar",
+      "WELCOMEMESSAGE": "Lassen Sie das Feld leer, wenn Sie keine Willkommensnachricht senden möchten",
+      "MANDATORYDISPOSITION": "Obligatorische Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Pausieren Sie die Verwendung, wenn die obligatorische Disposition aktiviert ist"
     },
     "ADDRESS": "Adresse",
     "ONLINESTATE": "Online Status",
     "RATINGSTATE": "Bewertungsstatus",
     "ENQUIRY": "Anfrage",
     "OFFLINETEMPLATE": "Offline Vorlage",
-    "CHATDISPOSITIONS": "Chat-Qualifizierungen",
-    "NO_CHATDISPOSITION_AVAILABLE": "Keine Qualifizierung verfügbar",
-    "ADD_CHATDISPOSITION": "Qualifizierung hinzufügen",
+    "CHATDISPOSITIONS": "Chat-Dispositionen",
+    "NO_CHATDISPOSITION_AVAILABLE": "Keine Chat-Dispositionen verfügbar",
+    "ADD_CHATDISPOSITION": "Chat Disposition hinzufügen",
     "DELETE": "Löschen",
-    "EDIT_CHATDISPOSITION": "Qualifizierung bearbeiten",
-    "DELETE_CHATDISPOSITION": "Qualifizierung löschen",
+    "EDIT_CHATDISPOSITION": "Chat-Disposition bearbeiten",
+    "DELETE_CHATDISPOSITION": "Chat-Disposition löschen",
     "CHAT": "Chat",
     "ID": "ID",
     "NEW_CHATQUEUE": "Neue Chat-Warteschlange",
     "NEW_CHATWEBSITE": "Neue Chat-Website",
-    "ROUNDED": "Rundes Design",
-    "SQUARED": "Eckiges Design",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ROUNDED": "Abgerundet",
+    "SQUARED": "Quadratisch",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
     "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "CONTACT": "Kontakt",
     "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "CLOSED": "Geschlossen",
-    "OPENED": "Geöffnet",
-    "OPEN": "Offen",
+    "OPENED": "Öffnen",
+    "OPEN": "Öffnen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
     "INTERACTIONS": "Interaktionen",
     "WEBSITE": "Website",
-    "ALL": "Alles",
-    "SELECT_STATUS": "Status auswählen",
+    "ALL": "Alle",
+    "SELECT_STATUS": "Wählen Sie einen Status",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "TEAMADD_CHATQUEUE": "Team zur Chat-Warteschlange hinzufügen",
-    "AGENTADD_CHATQUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_CHATQUEUE": "Agent zur Chat-Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CLOSEDAT": "Geschlossen am",
-    "DISPOSITION": "Qualifizierung",
+    "DISPOSITION": "Disposition",
     "CREATEDAT": "Erstellt am",
     "NOTES": "Notizen",
     "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
-    "SELECTED_WEBSITE": "Ausgewählte Webseite",
+    "SELECTED_WEBSITE": "Wählen Sie eine Website",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "SELECT_WEBSITE": "Webseite auswählen",
+    "SELECT_WEBSITE": "Wählen Sie eine Website",
     "INFO": "Info",
     "OFFLINEMESSAGES_CHATWEBSITE": "Zu Offline-Nachrichten gehen",
-    "WAITINGTITLE": "Titel während Warten",
-    "WAITINGMESSAGE": "Wartenachricht",
+    "WAITINGTITLE": "Wartetitel",
+    "WAITINGMESSAGE": "Wartende Nachricht",
     "RATING": "Bewertung",
     "NO_RATINGVALUE": "Keine Bewertung",
-    "AGENTSADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
     "QUEUES": "Warteschlangen",
     "LOGGED_IN": "Angemeldet",
-    "PAUSED": "in Pause",
+    "PAUSED": "Pausiert",
     "READY": "Bereit",
-    "WAITING": "Wartezustand",
-    "WRITING": "am Schreiben",
+    "WAITING": "Warten",
+    "WRITING": "Schreiben",
     "MAIL": "E-Mail",
     "SMS": "SMS",
-    "OPENCHANNEL": "Offener Kanal",
+    "OPENCHANNEL": "Openchannel",
     "FAX": "Fax",
     "PAUSE": "Pause",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Intern",
+    "INTERNAL": "Interne",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "LOGOUT": "Abmelden",
     "UNPAUSE": "Pause beenden",
-    "AGENTADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
     "DEFAULT_PAUSE": "Standard Pause",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "UNAVAILABLE": "Nicht verfügbar",
     "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "In Verwendung",
-    "VOICE": "Anrufe",
+    "IN_USE": "Im Einsatz",
+    "VOICE": "Sprache",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_CHATQUEUE": "Zur Echtzeit-Warteschlange für Chat gehen",
+    "GOTOREALTIME_CHATQUEUE": "Go to Echtzeit-Chat-Warteschlange",
     "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
     "SHOWAGENTAVATAR": "Persönlichen Agenten-Avatar anzeigen",
-    "AGENTAVATAR": "Agenten-Avatar",
-    "SPYINTERACTION": "Mitlesen",
+    "AGENTAVATAR": "Agent Avatar",
+    "SPYINTERACTION": "Spion",
     "INTERACTIONS_CHATWEBSITE": "Zu den Interaktionen gehen",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "CLOSINGQUESTION": "Abschlussfrage",
+    "CLOSINGQUESTION": "Frage schließen",
     "WEBSCRIPT": "Webskript",
-    "NO_CHATCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
-    "NEW_CHATCANNEDANSWER": "Neue Textvorlage",
-    "ADD_CHATCANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_CHATCANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_CHATCANNEDANSWER": "Textvorlage löschen",
-    "OFFLINEMESSAGESUBJECT": "Betreff der Nachricht bei Offline",
-    "OFFLINEMESSAGEBODY": "Test der Nachricht bei Offline",
-    "FORMSUBMITSUCCESSMESSAGE": "Meldung Formular erfolgreich gesendet",
-    "FORMSUBMITFAILUREMESSAGE": "Meldung Fehler beim Senden des Formulars",
-    "PLACEHOLDERMESSAGE": "Nachricht für Platzhalter",
+    "NO_CHATCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
+    "NEW_CHATCANNEDANSWER": "Neue vordefinierte Antwort",
+    "ADD_CHATCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_CHATCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "DELETE_CHATCANNEDANSWER": "Vordefinierte Antwort löschen",
+    "OFFLINEMESSAGESUBJECT": "Betreff der Nachricht",
+    "OFFLINEMESSAGEBODY": "Nachrichtentext",
+    "FORMSUBMITSUCCESSMESSAGE": "Erfolgsmeldung beim Absenden des Formulars",
+    "FORMSUBMITFAILUREMESSAGE": "Fehlermeldung beim Absenden des Formulars",
+    "PLACEHOLDERMESSAGE": "Platzhalter für Nachrichten",
     "NOTETITLE": "Titel der Notiz",
     "DELETE_INTERACTION": "Interaktion löschen",
     "FONTSIZE": "Schriftgröße",
     "TEXTCOLOR": "Textfarbe",
-    "COMMAND": "Eingabe",
+    "COMMAND": "Befehl",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "NOTIFICATION": "Benachrichtigung",
     "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSOUND": "Ton",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "HIDEWHENOFFLINE": "Ausblenden, wenn offline",
-    "INSERT_MESSAGE_HERE": "Nachricht hier eingeben",
+    "HIDEWHENOFFLINE": "Ausblenden",
+    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
     "AGENTALIAS": "Agent Alias",
     "AGENTFULLNAME": "Vollständiger Name des Agenten",
     "AGENTIDENTIFIER": "Identifikator",
-    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Mitarbeiter",
+    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Agenten",
     "ALIGNMENT": "Ausrichtung",
     "BOTTOM_RIGHT": "Unten rechts",
     "LEFT": "Links",
     "CUSTOMERALIAS": "Kunden-Alias",
     "EDIT_TAG": "Tag bearbeiten",
     "TAG": "Tag",
-    "AGENTADD_CHATWEBSITE": "Agenten zur Chat-Website hinzufügen",
+    "AGENTADD_CHATWEBSITE": "Agent zur Chat-Website hinzufügen",
     "BACKGROUNDCOLOR": "Hintergrundfarbe",
     "MESSAGEFONTSIZE": "Schriftgröße der Nachricht",
     "AGENTTRANSFER": "Agententransfer",
     "DIALOGFLOW": "Dialogflow",
     "EDIT_DIALOGFLOW": "Dialogflow bearbeiten",
     "LANGUAGE": "Sprache",
-    "QUEUETRANSFER": "Transfer in Warteschlange",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
     "QUEUETRANSFERTIMEOUT": "Timeout bei der Warteschlangenübertragung",
     "SYSTEMALIAS": "Systemalias",
     "SYSTEMAVATAR": "System-Avatar",
     "TRANSFER": "Transfer",
     "WELCOMEMESSAGE": "Willkommensnachricht",
-    "ENABLECUSTOMERCHECKMARKS": "Bestätigung Nachricht erhalten/gelesen",
-    "CANNEDANSWERS": "Textvorlagen",
-    "CHATCANNEDANSWERS": "Textvorlagen",
+    "ENABLECUSTOMERCHECKMARKS": "Aktivieren vom Kunden gelieferten / gelesenen Benachrichtigungen",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "CHATCANNEDANSWERS": "Vordefinierte Antworten",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
-    "BOTNAME": "Botname",
+    "BOTNAME": "Bot-Name",
     "EDIT_AMAZONLEX": "Amazon Lex bearbeiten",
     "LEXREGION": "Region",
     "SECRETACCESSKEY": "Geheimer Zugangsschlüssel",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "PausenID, wenn Qualifizierung erforderlich",
-    "ENABLESENDBUTTON": "Senden-Button aktivieren",
+    "TEAMS_ASSOCIATION": "Teams Verband",
+    "MANDATORYDISPOSITION": "Obligatorische Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pausieren Sie die Verwendung, wenn die obligatorische Disposition aktiviert ist",
+    "ENABLESENDBUTTON": "Sendetaste aktivieren",
     "FEEDBACKTITLE": "Feedback-Titel",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
     "LASTMESSAGE": "Letzte Nachricht",
     "VIDAOO": "Vidaoo",
     "VIDAOOAPIKEY": "Vidaoo Api Key",
     "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privater Schlüssel",
+    "PRIVATEKEY": "Privat Key",
     "PROJECTID": "Projekt-ID",
     "EMAIL_ACCOUNT": "Email-Konto",
     "OPEN_NEW_INTERACTION": "Neue Interaktion Ã¶ffnen",
-    "SUBJECT": "Betreff",
+    "SUBJECT": "Gegenstand",
     "ADD_NOTE": "Notiz hinzufügen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "NOTE": "Notiz",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "NOTE": "Hinweis",
     "VIDAOOMETADATA": "Vidaoo-Metadaten",
     "VIDAOONOTE": "Vidaoo-Hinweis",
     "VIDAOOTOPIC": "Vidaoo-Thema"
index 3c27f23..da8b00a 100644 (file)
@@ -1,8 +1,8 @@
 {
   "CONTACTMANAGER": {
-    "VOICEQUEUEID": "ID Warteschlange für Sprachanrufe",
-    "CAMPAIGNID": "Kampagnen-ID",
-    "STATE": "Status",
+    "VOICEQUEUEID": "Sprachwarteschlange ID",
+    "CAMPAIGNID": "Kampagne ID",
+    "STATE": "Zustand",
     "NAME": "Name",
     "LISTS": "Listen",
     "UNIQUEID": "Eindeutige ID",
@@ -11,8 +11,8 @@
     "ENDTIME": "Endzeit",
     "MOTION_BULL": "Motion Bull",
     "HOPPER": "Hopper",
-    "FINAL": "Hopper final",
-    "HISTORY": "Hopper historisch",
+    "FINAL": "Hopper Final",
+    "HISTORY": "Hopper Geschichte",
     "SCHEDULEDAT": "Geplant am",
     "SEARCH_FOR_ANYONE": "Suche",
     "EDIT_LIST": "Liste bearbeiten",
     "DELETE_HOPPER": "Hopper löschen",
     "RELOAD": "Neu laden",
     "NO_COMPANIES": "Kein Unternehmen",
-    "NO_AVAILABLE_ITEMS": "Keine Einträge verfügbar",
+    "NO_AVAILABLE_ITEMS": "Keine verfügbaren Artikel",
     "ADD": "Hinzufügen",
     "ERRORS": {
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "FIRSTNAME_REQUIRED": "Vorname ist erforderlich",
-      "PHONE_REQUIRED": "Telefonnummer ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "FIRSTNAME_REQUIRED": "Der Vorname ist erforderlich",
+      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
       "ALIAS_REQUIRED": "Alias ist erforderlich",
-      "VALUE_REQUIRED": "Wert ist erforderlich",
+      "VALUE_REQUIRED": "Der Wert ist erforderlich",
       "EMAIL_MUST_VALID": "Falsches Format",
-      "PHONEBAR_API": "Statusprüfung für die MotionBar und des Remote-Switches für den Agenten",
+      "PHONEBAR_API": "Prüfen, ob die MotionBar ausgeführt wird und der Fernbedienungsschalter für den Agenten eingeschaltet ist",
       "ACTIONTYPE_REQUIRED": "Pflichtfeld",
       "CLICKTOACTION_REQUIRED": "Pflichtfeld"
     },
     "DESCRIPTION": "Beschreibung",
-    "DISPOSITION": "Qualifizierung",
-    "DISPOSITIONS": "Qualifizierungen",
-    "VOICEDISPOSITIONS": "Anrufqualifizierungen",
-    "NEW_VOICEDISPOSITION": "Neue Anrufqualifizierung",
+    "DISPOSITION": "Disposition",
+    "DISPOSITIONS": "Dispositionen",
+    "VOICEDISPOSITIONS": "Sprachdispositionen",
+    "NEW_VOICEDISPOSITION": "Neue Sprachdisposition",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "ADD_LIST": "Liste hinzufügen",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Keine auswählen",
     "COMPANIES": "Unternehmen",
     "EDIT_COMPANY": "Unternehmen bearbeiten",
     "DELETE_COMPANY": "Unternehmen löschen",
@@ -76,7 +76,7 @@
     "STREET": "Straße",
     "POSTALCODE": "Postleitzahl",
     "DELETE": "Löschen",
-    "DELETE_ALL": "Alles Löschen",
+    "DELETE_ALL": "Alle Löschen",
     "CONTACTMANAGER": "Kontaktmanager",
     "ID": "ID",
     "SETTINGS": "Einstellungen",
     "NEW_CONTACT": "Neuer Kontakt",
     "NEW_TAG": "Neuer Tag",
     "UPLOAD_CONTACTS": "Kontakte hochladen",
-    "FINISH": "Beenden",
-    "SUCCESS": "Erfolg",
+    "FINISH": "Fertig",
+    "SUCCESS": "Erfolgreich",
     "FAILURE": "Fehler",
     "ALL_CONTACTS": "Alle Kontakte",
     "NEW_CUSTOMFIELD": "Neues benutzerdefiniertes Feld",
-    "NO_VOICEDISPOSITION_AVAILABLE": "Keine Anrufqualifizierung verfügbar",
-    "ADD_VOICEDISPOSITION": "Anrufqualifizierung hinzufügen",
-    "EDIT_VOICEDISPOSITION": "Anrufqualifizierung bearbeiten",
-    "DELETE_VOICEDISPOSITION": "Anrufqualifizierung löschen",
-    "VAT": "Ust-ID.",
-    "COMPANYID": "Unternehmens-ID",
+    "NO_VOICEDISPOSITION_AVAILABLE": "Keine Sprachdispositionen verfügbar",
+    "ADD_VOICEDISPOSITION": "Sprachdisposition hinzufügen",
+    "EDIT_VOICEDISPOSITION": "Sprachdisposition bearbeiten",
+    "DELETE_VOICEDISPOSITION": "Sprachdisposition löschen",
+    "VAT": "Mwst.",
+    "COMPANYID": "Ihre Unternehmens-ID",
     "WEBSITE": "Website",
     "EMAIL_DOMAIN": "E-Mail Domain",
     "ADDRESS": "Adresse",
     "GOTOCONTACTS_COMPANY": "Kontakte anzeigen",
     "ADD_AGENT_TO_LIST": "Agenten zur Liste hinzufügen",
     "AGENTADD_LIST": "Agenten zur Liste hinzufügen",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
-    "NONE": "Nichts",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "NONE": "Keine",
     "FULLNAME": "Vollständiger Name",
-    "CHECK_DUPLICATES": "auf Duplikate prüfen",
+    "CHECK_DUPLICATES": "Duplikate prüfen",
     "DUPLICATES": "Duplikate",
-    "UPLOAD_CSV": "Hochladen von CSV-Datei",
+    "UPLOAD_CSV": "Hochladen von CSV",
     "TAG": "Tag",
     "UPLOAD": "Hochladen",
     "ALL_AGENTS": "Alle Agenten",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "DATEOFBIRTH": "Geburtsdatum",
     "NOTES": "Notizen",
-    "EXPORTCSVCONTACTS_LIST": "In CSV-Datei exportieren",
+    "EXPORTCSVCONTACTS_LIST": "In CSV exportieren",
     "GOTO_LIST": "Kontakte anzeigen",
     "GOTO_COMPANY": "Kontakte anzeigen",
     "REQUIRED": "Erforderlich",
     "SESSIONS": "Sitzungen",
     "AGENT": "Agent",
     "PROJECT": "Projekt",
-    "SELECT_LIST": "Liste auswählen",
-    "SELECT_COMPANY": "Unternehmen auswählen",
-    "SELECT_TAGS": "Tags auswählen",
+    "SELECT_LIST": "Wählen Sie eine Liste aus",
+    "SELECT_COMPANY": "Wählen Sie ein Unternehmen aus",
+    "SELECT_TAGS": "Wählen Sie ein oder mehrere Tags aus",
     "HELP": {
-      "PHONEBAR_API": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und Ã¼berprüfen Sie, ob der Remote-Switch für den Agenten eingeschaltet ist",
-      "PHONEBAR_API_MESSAGE": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und Ã¼berprüfen Sie, ob der Remote-Switch für den Agenten eingeschaltet ist"
+      "PHONEBAR_API": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und Ã¼berprüfen Sie, ob der Fernbedienungsschalter für den Agenten eingeschaltet ist",
+      "PHONEBAR_API_MESSAGE": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und Ã¼berprüfen Sie, ob der Fernbedienungsschalter für den Agenten eingeschaltet ist"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "SOCIAL": "Social",
     "ROW": "Reihe",
-    "EXPORT_ERRORS": "Fehler-Log exportieren",
+    "EXPORT_ERRORS": "Fehler exportieren",
     "UPLOAD_COMPLETED": "Hochladen abgeschlossen",
     "STOP": "Stopp",
-    "SELECT_FILE": "Datei auswählen",
+    "SELECT_FILE": "Datei aussuchen",
     "IMPORT_CONTACTS": "Kontakte importieren",
     "MOTIONDIALER": "Motion Bull",
     "PREFIX": "Vorwahl wählen",
     "PRIORITY": "Priorität",
     "USERID": "Agent-ID abrufen",
-    "CUSTOMER_JOURNEY": "Kundenhistorie",
-    "SELECT_TAG": "Tag auswählen",
+    "CUSTOMER_JOURNEY": "Kundenreise",
+    "SELECT_TAG": "Wählen Sie Tags aus",
     "ALL": "Alle",
     "BILLINGINFORMATION": "Abrechnungsdaten",
     "COMPANY_FISCAL_TYPE": "Unternehmenssteuerart",
     "CREATE": "Erstellen",
     "EUROPE": "Europa",
-    "EXPIREDAY": "Ablauftag",
+    "EXPIREDAY": "Ablauftage",
     "FLATDISCOUNT": "Firmenrabatt",
     "INVOICEARTICLE": "Gesetzliche Artikel",
     "ISOCODE": "Nationaler ISO-Code",
     "RELATIONSHIPCOMPANY": " ... mit",
     "SDICODE": "SDI-Code",
     "SOCIAL_CAPITAL": "Aktienkapital",
-    "VATNUMBER_CF": "Umsatzsteuer Identnummer / VAT",
-    "RECALLME": "Rückruf anfordern",
+    "VATNUMBER_CF": "Codice Fiscale / VAT",
+    "RECALLME": "Ruf mich zurück",
     "ACTIONTYPE": "Aktionstyp",
-    "CLICKTOACTION": "Klicken für Aktion"
+    "CLICKTOACTION": "Zur Aktion klicken"
   }
 }
index dbfb7c7..df9fabe 100644 (file)
@@ -1,10 +1,10 @@
 {
   "DASHBOARDS": {
-    "HOME": "Startseite",
+    "HOME": "Home",
     "CHAT": "Chat",
-    "MAIL": "E-Mail",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Offener Kanal",
+    "MAIL": "Email",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
     "RATING": "Bewertung",
     "FEEDBACK": "Feedback",
     "AGENT": "Agent",
     "CREATED_AT": "Erstellt am",
     "CLOSED_AT": "Geschlossen am",
-    "DISPOSITION": "Qualifizierung",
+    "DISPOSITION": "Disposition",
     "CONTACT": "Kontakt",
     "INTERACTION": "Interaktion",
     "BROWSER_NAME": "Browser Name",
     "BROWSER_VERSION": "Browser Version",
-    "OS_NAME": "Betriebssystem Name",
-    "OS_VERSION": "Betriebssystem Version",
+    "OS_NAME": "Name des Betriebssystems",
+    "OS_VERSION": "Version des Betriebssystems",
     "DEVICE_MODEL": "Gerätemodell",
     "DEVICE_VENDOR": "Gerätehersteller",
     "DEVICE_TYPE": "Gerätetyp",
-    "RECALLME": "Rückruf anfordern",
-    "DROP_RATE": "Abbruchrate Anrufe",
+    "RECALLME": "Ruf mich zurück",
+    "DROP_RATE": "Abgebrochene Anrufrate",
     "DROPPED": "Abgebrochen",
-    "DROPPED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
+    "DROPPED_TEXT": "Abgebrochene Anrufe aus der Warteschlange",
     "DETAIL": "Detail",
     "MOTION_BULL": "Motion Bull",
     "LIMITED": "Limitiert",
     "LIMITED_TEXT": "IVR-Kampagnen Anrufe getätigt/limitiert",
     "DASHBOARDS": "Dashboards",
-    "RECORDINGS": "Aufzeichnungen",
-    "TODAY_MOTION_BULL_STATS": "Tagesstatistiken Warteschlangen",
+    "RECORDINGS": "Aufnahmen",
+    "TODAY_MOTION_BULL_STATS": "Warteschlangen-Kampagnen Tagesstatistiken",
     "ORIGINATED": "Gewählt",
     "ORIGINATED_TEXT": "Anrufe aus der Warteschlange gewählt",
     "UPDATE": "Aktualisieren",
     "MORE": "Mehr",
     "MOTIONDIALER": "Motion Dialer",
-    "DISPOSE": "Qualifizieren",
+    "DISPOSE": "Entsorgen",
     "QUEUES": "Warteschlangen",
-    "DIALER_CALL": "Dialer-Anruf",
+    "DIALER_CALL": "Dialer Anruf",
     "ELAPSED_TIME": "Abgelaufene Zeit",
     "EDIT": "Bearbeiten",
     "MERGE": "Zusammenführen",
     "DUPLICATE": "Duplizieren",
     "UNIQUEID": "Eindeutige ID",
     "CAMPAIGN": "Kampagne",
-    "NONE": "Nichts",
+    "NONE": "Keine",
     "NAME": "Name",
     "ANSWER_MACHINE": "Anrufbeantworter",
     "INTERESTED": "Interessiert",
     "NOT_INTERESTED": "Kein Interesse",
     "PERSONAL_INFO": "Persönliche Infos",
     "SOLD": "Verkauft",
-    "SPECIAL": "Speziell",
+    "SPECIAL": "Spezielle",
     "BLACKLIST": "Blacklist",
-    "RESCHEDULE": "erneut Planen",
+    "RESCHEDULE": "Verschieben",
     "FIRSTNAME": "Vorname",
     "LASTNAME": "Nachname",
-    "MOBILE": "Mobilnummer",
+    "MOBILE": "Mobile",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "COMPANY": "Unternehmen",
     "TAG": "Tag",
     "POSTALCODE": "Postleitzahl",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "GENERAL": "Allgemein",
-    "VOICE": "Sprachanrufe",
+    "VOICE": "Sprache",
     "TODAY_IVR_CAMPAIGNS_STATS": "IVR-Tagesstatistiken",
-    "TODAY_INBOUND_STATS": "Tagesstatistiken - eingehende Warteschlangen",
-    "TODAY_OUTBOUND_STATS": "Tagesstatistiken - ausgehende Warteschlangen",
-    "WAITING": "Anrufe in Warteschlange",
+    "TODAY_INBOUND_STATS": "Inbound Warteschlangen Tagesstatistiken",
+    "TODAY_OUTBOUND_STATS": "Outbound Warteschlangen Tagesstatistiken",
+    "WAITING": "Anrufe in der Warteschlange",
     "TALKING": "Im Gespräch",
-    "INBOUND_ANSWERED": "Angenommen eingehend",
-    "OUTBOUND_ANSWERED": "Angenommen ausgehend",
-    "ABANDONED": "Abgebrochen",
-    "TOTAL_OFFERED": "Gesamt angeboten",
+    "INBOUND_ANSWERED": "Angenommen",
+    "OUTBOUND_ANSWERED": "Angenommen",
+    "ABANDONED": "Verlassen",
+    "TOTAL_OFFERED": "Insgesamt",
     "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "INBOUND_ANSWER_RATE": "Antwortrate eingehend",
-    "OUTBOUND_ANSWER_RATE": "Antwortrate ausgehend",
-    "ABANDON_RATE": "Abbruchrate",
-    "UNMANAGED": "Nicht bearbeitet",
-    "TOTAL": "Gesamt",
+    "INBOUND_ANSWER_RATE": "Angenommene Anrufrate",
+    "OUTBOUND_ANSWER_RATE": "Angenommene Anrufrate",
+    "ABANDON_RATE": "Verlassene Anrufrate",
+    "UNMANAGED": "Nicht verwaltete",
+    "TOTAL": "Insgesamt",
     "TOT_DURATION": "Gesamtdauer",
     "AVG_DURATION": "Durchschnittliche Dauer",
     "HELP": {
-      "ORIGINATEDLIMITED": "IVR Kampagnen gewählt/limitiert",
-      "DROPPED": "Gesamtzahl abgebrochener Anrufe innerhalb der Warteschlange",
-      "DROP_RATE": "Abbruchrate aller Anrufe in der Warteschlange",
-      "WAITING": "Gesamtzahl der wartenden Anrufe aus der Warteschlange",
-      "OUTBOUND_ANSWERED": "Gesamtzahl der angenommenen ausgehenden Anrufe",
-      "ABANDONED": "Gesamtzahl der abgebrochenen Anrufe innerhalb der Warteschlange",
-      "TOTAL_OFFERED": "Gesamtzahl der angebotenen Anrufe in der Warteschlange (angenommen + abgebrochen + nicht bearbeitet in der letzten Warteschlange des Callflows). Hinweis: Anrufe innerhalb der IVR werden nicht berücksichtigt.",
-      "AVG_HOLD_TIME": "Durchschnittliche Wartezeit einer Interaktion bis zur Beantwortung durch einen Agenten.",
-      "OUTBOUND_ANSWER_RATE": "Rate aller angenommenen ausgehenden Anrufe",
-      "ABANDON_RATE": "Rate aller abgebrochener Anrufe innerhalb der Warteschlange",
-      "UNMANAGED": "Gesamtzahl der nicht bearbeiteten Anrufe für alle Warteschlangen. Enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen wurden (siehe Asterisk-Dokumentation für weitere Informationen).",
-      "TOTAL": "Gesamtzahl der ausgehenden Anrufe",
-      "TOT_DURATION": "Gesamtdauer aller ausgehenden Anrufe",
-      "AVG_DURATION": "Durchschnittliche Dauer aller angenommenen ausgehenden Anrufe",
-      "ORIGINATED": "Gesamtzahl der in den Warteschlangen-Kampagnen gewählten Anrufe",
-      "ABANDONED_RATE": "Rate aller abgebrochenen Interaktionen",
-      "AVG_MANAGED_TIME": "Durchschnittliche Bearbeitungszeit einer Interaktion",
-      "MANAGED": "Gesamtzahl der abgeschlossenen Interaktionen",
-      "MANAGED_RATE": "Rate aller bearbeiteten Anrufe",
-      "OPENED": "Gesamtzahl der aktiven Interaktionen",
-      "UNMANAGED_RATE": "Rate aller unbearbeiteten Interaktionen",
-      "VOICE_ABANDONED": "Gesamtzahl der abgebrochenen Anrufe in der Warteschlange unter Berücksichtigung aller vorhandenen Warteschlangen. Hinweis: Anrufe, die wegen Timeout und joinempty abgebrochen wurden, werden nicht berücksichtigt.",
-      "VOICE_ANSWERED": "Gesamtzahl der abgeschlossenen Anrufe für alle vorhandenen Warteschlangen",
-      "VOICE_ANSWER_RATE": "Antwortrate aller Anrufe in der Warteschlange",
-      "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit bis zur Beantwortung durch einen Agenten für alle vorhandenen Warteschlangen",
-      "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit für alle Anrufe aus der Warteschlange ",
-      "VOICE_TALKING": "Gesamtzahl der aktiven Anrufe für alle vorhandenen Warteschlangen",
-      "VOICE_TOTAL_OFFERED": "Gesamtzahl der Anrufe der Warteschlangen (angenommen + abgebrochen + nicht bearbeitet in der letzten Warteschlange des Callflows). Hinweis: Anrufe innerhalb der IVR werden nicht berücksichtigt.",
-      "VOICE_UNMANAGED": "Gesamtzahl der nicht bearbeiteten Anrufe für alle vorhandenen Warteschlangen. Enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen wurden (siehe Asterisk-Dokumentation für weitere Informationen).",
-      "VOICE_WAITING": "Gesamtanzahl der aktuell wartenden Anrufe für alle vorhandenen Warteschlangen",
-      "MANDATORY_DISPOSITION_ENABLED": "Kontaktqualifizierung erforderlich",
-      "EXACT_MATCH_FILTER": "Suche nach einer genauen Ãœbereinstimmung der Suchbegriffe",
-      "LIKE_FILTER": "Suche nach variablen Ãœbereinstimmungen der Suchbegriffe"
+      "ORIGINATEDLIMITED": "IVR Kampagnen gewählt/Limitiert",
+      "DROPPED": "Die Gesamtzahl abgebrochener Anrufe aus der Warteschlange",
+      "DROP_RATE": "Die Rate aller abgebrochener Anrufe aus der Warteschlange",
+      "WAITING": "Die Gesamtzahl der wartenden Anrufe aus der Warteschlange",
+      "OUTBOUND_ANSWERED": "Die Gesamtzahl der angenommenen ausgehenden Anrufe",
+      "ABANDONED": "Die Gesamtzahl der abgebrochenen Anrufe aus der Warteschlange",
+      "TOTAL_OFFERED": "Die Gesamtzahl der Warteschlangenanrufe (angenommen + verlassen + nicht verwaltet in der letzten Warteschlange des Datenflusses). Beachten Sie, dass Anrufe, die in ein IVR und nicht in eine Warteschlange eingehen, nicht berücksichtigt werden.",
+      "AVG_HOLD_TIME": "Die durchschnittliche Interaktionswartezeit, d.h. die durchschnittliche Wartezeit auf die Antwort eines Agenten für alle vorhandenen Interaktionen.",
+      "OUTBOUND_ANSWER_RATE": "Die Rate aller angenommenen ausgehenden Anrufe",
+      "ABANDON_RATE": "Die Rate aller verlassenen Anrufe aus der Warteschlange",
+      "UNMANAGED": "Die Gesamtzahl der nicht verwalteten Warteschlangenanfrufe für alle vorhandenen Warteschlangen. Es enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen werden (siehe Asterisk-Dokumentation für weitere Informationen).",
+      "TOTAL": "Die Gesamtzahl der ausgehenden Anrufe",
+      "TOT_DURATION": "Die Gesamtdauer aller ausgehenden Anrufe",
+      "AVG_DURATION": "Die durchschnittliche Dauer aller angenommenen ausgehenden Anrufe",
+      "ORIGINATED": "Die Gesamtzahl der in den Warteschlangenkampagnen gewählten Anrufe",
+      "ABANDONED_RATE": "Die Rate aller abgebrochenen Interaktionen",
+      "AVG_MANAGED_TIME": "Die durchschnittliche verwaltete Interaktionszeit, nämlich die durchschnittliche Zeit, die während des Gesprächs verbracht wird",
+      "MANAGED": "Die Gesamtzahl der abgeschlossenen Interaktionen",
+      "MANAGED_RATE": "Die verwaltete Rate aller Interaktionen",
+      "OPENED": "Die Gesamtzahl der aktiven Interaktionen",
+      "UNMANAGED_RATE": "Die nicht verwaltete Rate aller Interaktionen",
+      "VOICE_ABANDONED": "Die Gesamtzahl der aufgegebenen Warteschlangenanrufe unter Berücksichtigung aller vorhandenen Warteschlangen. Beachten Sie, dass Anrufe, die wegen Timeout und joinempty abgebrochen werden, nicht berücksichtigt werden",
+      "VOICE_ANSWERED": "Die Gesamtzahl der abgeschlossenen Warteschlangenanrufe für alle vorhandenen Warteschlangen",
+      "VOICE_ANSWER_RATE": "Die Antwortrate aller Warteschlangenanrufe",
+      "VOICE_AVG_HOLD_TIME": "Die durchschnittliche Wartezeit für Warteschlangen, nämlich die durchschnittliche Wartezeit auf die Antwort eines Agenten für alle vorhandenen Warteschlangen",
+      "VOICE_AVG_TALK_TIME": "Die durchschnittliche Gesprächszeit in der Warteschlange, nämlich die durchschnittliche Gesprächszeit für alle vorhandenen Warteschlangen",
+      "VOICE_TALKING": "Die Gesamtzahl der aktiven Warteschlangenanrufe für alle vorhandenen Warteschlangen",
+      "VOICE_TOTAL_OFFERED": "Die Gesamtzahl der Warteschlangenanrufe (angenommen + verlassen + nicht verwaltet in der letzten Warteschlange des Datenflusses). Beachten Sie, dass Anrufe, die in ein IVR und nicht in eine Warteschlange eingehen, nicht berücksichtigt werden.",
+      "VOICE_UNMANAGED": "Die Gesamtzahl der nicht verwalteten Warteschlangenanfrufe für alle vorhandenen Warteschlangen. Es enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen werden (siehe Asterisk-Dokumentation für weitere Informationen).",
+      "VOICE_WAITING": "Die Gesamtanzahl der wartenden Warteschlangenanrufe für alle vorhandenen Warteschlangen",
+      "MANDATORY_DISPOSITION_ENABLED": "Obligatorische Disposition für dieses Konto aktiviert",
+      "EXACT_MATCH_FILTER": "Suche nach einer genauen Ãœbereinstimmung",
+      "LIKE_FILTER": "Suchen Sie nach dem angegebenen Muster"
     },
     "ERRORS": {
       "FIRSTNAME_REQUIRED": "Der erste Name ist erforderlich",
       "CAMPAIGN_REQUIRED": "Pflichtfeld",
       "FAILED_INITIALIZATION": "Fehler während der Initialisierung"
     },
-    "NO_AVAILABLE_INFO": "Keine Information vorhanden",
-    "WELCOME_TO_MOTION": "Willkommen zu Motion",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "WELCOME_TO_MOTION": "Willkommen bei Motion",
     "WELCOME_MESSAGE": "Verwenden Sie die linke Seitenleiste, um durch die verfügbaren Abschnitte zu navigieren",
     "ADD": "Hinzufügen",
-    "CONTACTMANAGER": "Kontaktmanager",
+    "CONTACTMANAGER": "Contact Manager",
     "DASHBOARD": "Dashboard",
     "EDIT_CONTACT": "Kontakt bearbeiten",
     "EMAIL": "E-Mail",
     "NEW_CONTACT": "Neuer Kontakt",
     "PHONE": "Telefon",
     "SAVE": "Speichern",
-    "INBOUND_WAITING_CALLS": "Wartende Anrufe (Eingehend)",
+    "INBOUND_WAITING_CALLS": "Eingehende Anrufe in der Warteschlange",
     "CONTACTS": "Kontakte",
     "MYCONTACTS": "Meine Kontakte",
     "ADD_CONTACT": "Kontakt hinzufügen",
-    "RELOAD": "Neu Laden",
+    "RELOAD": "Neu laden",
     "WAITING_TEXT": "Wartende Interaktionen",
-    "TALKING_TEXT": "Aktive Anrufe",
-    "INBOUND_ANSWERED_TEXT": "Angenommene Anrufe",
-    "ABANDONED_TEXT": "Abgebrochene Anrufe",
-    "DROP_RATE_TEXT": "Abbruchrate",
-    "TOTAL_OFFERED_TEXT": "Gesamt angebotene Interaktionen",
-    "AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit",
-    "AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit",
-    "INBOUND_ANSWER_RATE_TEXT": "Antwortrate ",
-    "UNMANAGED_TEXT": "Nicht bearbeitete Interaktionen",
-    "TOTAL_TEXT": "Gesamt ausgehende Anrufe",
-    "OUTBOUND_ANSWERED_TEXT": "Beantwortete Anrufe (Ausgehend) ",
+    "TALKING_TEXT": "Aktive Anrufe in der Warteschlange",
+    "INBOUND_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
+    "ABANDONED_TEXT": "Verlassene Anrufe in der Warteschlange",
+    "DROP_RATE_TEXT": "Rate abgebrochener Anrufe in der Warteschlange",
+    "TOTAL_OFFERED_TEXT": "Gesamtzahl der Interaktionen",
+    "AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit der Interaktionen",
+    "AVG_TALK_TIME_TEXT": "Gesprächszeit der Warteschlangenanrufe",
+    "INBOUND_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange ",
+    "UNMANAGED_TEXT": "Nicht verwaltete Interaktionen",
+    "TOTAL_TEXT": "Gesamtzahl ausgehender Anrufe",
+    "OUTBOUND_ANSWERED_TEXT": "Ausgehende angenommene Anrufe ",
     "TOT_DURATION_TEXT": "Gesamtdauer ausgehender Anrufe ",
     "AVG_DURATION_TEXT": "Durchschnittliche Dauer ausgehender Anrufe",
     "OUTBOUND_ANSWER_RATE_TEXT": "Rate angenommener ausgehender Anrufe",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
-    "REPLY_PLACEHOLDER": "Text eingeben und ENTER drücken zum Senden",
+    "OF": "Von",
+    "REPLY_PLACEHOLDER": "Geben Sie ein und drücken Sie die Eingabetaste, um eine Nachricht zu senden",
     "CONTACT_INFO": "Kontaktinformationen",
-    "CLOSE_AND_DISPOSE": "Schließen und Qualifizieren",
-    "DISPOSITIONS": "Qualifizierungen",
-    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Qualifizierung",
-    "ACCEPT": "Annehmen",
+    "CLOSE_AND_DISPOSE": "Schließen und Entsorgen",
+    "DISPOSITIONS": "Dispositionen",
+    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Entsorgen",
+    "ACCEPT": "Akzeptieren",
     "REJECT": "Ablehnen",
     "CLOSED": "Geschlossen",
-    "INFO": "Information",
+    "INFO": "Info",
     "NOTE": "Hinweis",
-    "ACCEPT_ELSEWHERE": "Von anderem Teilnehmer angenommen",
+    "ACCEPT_ELSEWHERE": "Anderswo akzeptiert",
     "ATTENTION": "Achtung",
     "SOCIAL": "Sozial",
     "NO_JSCRIPTY_PROJECTS_AVAILABLE": "Keine Jscripty-Projekte verfügbar",
     "FILTER": "Filter",
     "SELECT_STATUS": "Status auswählen",
     "SELECT_ACCOUNT": "Konto auswählen",
-    "SELECT_WEBSITE": "Webseite auswählen",
-    "ALL": "Alles",
+    "SELECT_WEBSITE": "Wählen Sie die Webseite",
+    "ALL": "Alle",
     "INTERACTIONS": "Interaktionen",
-    "STARTEDAT": "Begonnen am",
+    "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "OPEN": "Öffnen",
-    "SHOW": "Anzeigen",
+    "SHOW": "Zeigen",
     "ME": "ICH",
     "NOT_ASSIGNED": "Nicht zugewiesen",
     "UNKNOWN": "Unbekannt",
-    "SELECT_USER": "Benutzer auswählen",
+    "SELECT_USER": "Wählen Sie einen Benutzer",
     "LAST_MESSAGE": "Letzte Nachricht",
     "USER": "Benutzer",
     "TAGS": "Tags",
     "SOURCE": "Quelle",
     "DESTINATION": "Ziel",
     "CALLERID": "Anrufer-ID",
-    "END_AT": "Beendet am",
+    "END_AT": "Ende am",
     "DURATION": "Dauer",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
     "EXTERNAL_URL": "Externer Link",
     "SET_AS": "Festlegen als",
     "PENDING": "Ausstehend",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textbausteine gefunden",
-    "CANNED_ANSWER_SEARCH": "Hier nach einem Textbaustein suchen",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
     "NO_MAIL_ACCOUNTS_AVAILABLE": "Keine E-Mail-Konten verfügbar",
     "NO_FAX_ACCOUNTS_AVAILABLE": "Keine Fax-Konten verfügbar",
     "NO_SMS_ACCOUNTS_AVAILABLE": "Keine SMS-Konten verfügbar",
-    "FILTER_VOICE_QUEUES": "Anrufwarteschlangen filtern",
-    "LOADING_INTERACTION": "Interaktion wird geladen",
+    "FILTER_VOICE_QUEUES": "Sprachwarteschlangen filtern",
+    "LOADING_INTERACTION": "Wir laden die Interaktion ...",
     "JANUARY": "Januar",
     "FEBRUARY": "Februar",
     "MARCH": "März",
     "SELECT_DATE": "Datum auswählen",
     "SELECT_DATE_RANGE": "Wählen Sie einen Datumsbereich",
     "CLEAR": "Löschen",
-    "CALL_NUMBER": "Anrufen",
+    "CALL_NUMBER": "Anruf",
     "TRANSFER_NUMBER": "Transfer",
-    "CALL_SAVED": "Anruf erfolgreich gespeichert",
-    "CALL_DISPOSED": "Anruf erfolgreich qualifiziert",
-    "CHANNEL_WAITING_TEXT": "Wartende Interaktionen",
+    "CALL_SAVED": "Anruf richtig gespeichert",
+    "CALL_DISPOSED": "Anruf richtig entsorgt",
+    "CHANNEL_WAITING_TEXT": "Wartende Warteschlangen-Interaktionen",
     "CHANNEL_QUEUE": "Warteschlange",
-    "CHANNEL_FROM": "von",
+    "CHANNEL_FROM": "Von",
     "MARK_AS_UNREAD": "Als ungelesen markieren",
-    "SELECT_AGENT": "Agenten auswählen",
+    "SELECT_AGENT": "Wählen Sie den Agenten aus",
     "READ": "Gelesen",
-    "SELECT_READ_UNREAD": "Wählen ob Lesen/Ungelesen",
-    "SELECT_SUBSTATUS": "Zwischenstatus auswählen",
+    "SELECT_READ_UNREAD": "Wählen Sie Lesen/Ungelesen",
+    "SELECT_SUBSTATUS": "Wählen Sie Substatus",
     "UNREAD": "Ungelesen",
-    "ABANDONAT": "Abgebrochen",
-    "ABANDONEDQUEUECALLS": "Abgebrochene Anrufe",
+    "ABANDONAT": "Verlassen",
+    "ABANDONEDQUEUECALLS": "Verlassene Warteschlangenanrufe",
     "FREE": "Frei",
     "LASTASSIGNEDTO": "Zuletzt zugewiesen an",
     "QUEUE": "Warteschlange",
     "QUEUECALLEREXITAT": "Abgebrochen",
     "QUEUECALLEREXITREASON": "Grund",
     "RESERVED": "Reserviert",
-    "SELECT_CAMPAIGN": "Warteschlange auswählen",
+    "SELECT_CAMPAIGN": "Wählen Sie eine Warteschlange",
     "ASSIGNTO": "Zuweisen",
-    "CLICKRELOAD": "Verpasste Anrufe! Bitte Seite erneut laden",
+    "CLICKRELOAD": "Neue verlassene Anrufe! Bitte neu laden",
     "NOTAVAILABLE": "Nicht verfügbar",
-    "CURRENTLY_IN_USE_BY": "Derzeit verwendet von",
-    "CUSTOMER_JOURNEY": "Kundenhistorie",
+    "CURRENTLY_IN_USE_BY": "Derzeit im Einsatz von",
+    "CUSTOMER_JOURNEY": "Kundenreise",
     "NO_DATA_AVAILABLE": "Keine Daten verfügbar",
     "AGENTS": "Agenten",
     "TRANSFER": "Transfer",
-    "NO_DISPOSITION_SET": "Keine Qualifizierungen definiert",
-    "ABANDONED_RATE": "Abbruchrate",
-    "ABANDONED_RATE_TEXT": "Rate der abgebrochenen Anrufe innerhalb der Warteschlange",
-    "AVG_MANAGED_TIME": "Durchschnittliche Bearbeitungszeit",
-    "AVG_MANAGED_TIME_TEXT": "Durchschnittliche Bearbeitungszeit aller Interkationen",
-    "MANAGED": "Bearbeitet",
-    "MANAGED_RATE": "Bearbeitungsrate",
-    "MANAGED_RATE_TEXT": "Rate der bearbeiteten Interaktionen",
-    "MANAGED_TEXT": "Interaktionen bearbeitet",
-    "OPENED_TEXT": "Interaktionen geöffnet",
+    "NO_DISPOSITION_SET": "Keine Disposition festgelegt",
+    "ABANDONED_RATE": "Verlassene Rate",
+    "ABANDONED_RATE_TEXT": "Rate verlassener Interaktionen",
+    "AVG_MANAGED_TIME": " Durchschnittliche Verwaltungszeit",
+    "AVG_MANAGED_TIME_TEXT": "Durchschnittliche Verwaltungszeit der Interkationen",
+    "MANAGED": "Verwaltet",
+    "MANAGED_RATE": "Verwaltete Rate",
+    "MANAGED_RATE_TEXT": "Verwaltete Interaktionsrate",
+    "MANAGED_TEXT": "Verwaltete Interaktionen",
+    "OPENED_TEXT": "Geöffnete Interaktionen",
     "TODAY_INTERACTIONS_STATS": "Interaktionen Tagesstatistiken",
-    "UNMANAGED_RATE": "Rate nicht Bearbeitet",
-    "UNMANAGED_RATE_TEXT": "Rate der nicht bearbeiteten Interaktionen in der Warteschlange",
-    "VOICE_ABANDONED": "Abgebrochen",
-    "VOICE_ABANDONED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
-    "VOICE_ABANDON_RATE": "Abbruchrate",
-    "VOICE_ABANDON_RATE_TEXT": "Rate der abgebrochenen Anrufe innerhalb der Warteschlange",
+    "UNMANAGED_RATE": "Nicht verwaltete Rate",
+    "UNMANAGED_RATE_TEXT": "Nicht verwaltete Interaktionsate",
+    "VOICE_ABANDONED": "Verlassen",
+    "VOICE_ABANDONED_TEXT": "Verlassene Warteschlangenanrufe",
+    "VOICE_ABANDON_RATE": "Verlassene Rate",
+    "VOICE_ABANDON_RATE_TEXT": "Rate verlassener Warteschlangenanrufe",
     "VOICE_ANSWERED": "Angenommen",
     "VOICE_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
-    "VOICE_ANSWER_RATE": "Antwortrate",
+    "VOICE_ANSWER_RATE": "Angenommene Rate",
     "VOICE_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange",
     "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "VOICE_AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit aller Sprachanrufe",
+    "VOICE_AVG_HOLD_TIME_TEXT": "Queue ruft AVG HOLD TIME an",
     "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit",
-    "VOICE_AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit aller Anrufe nach der Warteschleife",
+    "VOICE_AVG_TALK_TIME_TEXT": "Gesprächszeit der Anrufe in der Warteschlage",
     "VOICE_TALKING": "IM GESPRÄCH",
     "VOICE_TALKING_TEXT": "Aktive Anrufe in der Warteschlange",
-    "VOICE_TOTAL_OFFERED": "Gesamt angeboten",
-    "VOICE_TOTAL_OFFERED_TEXT": "Gesamtzahl der angebotenen Anrufe in der Warteschlange",
-    "VOICE_UNMANAGED": "Nicht bearbeitet",
-    "VOICE_UNMANAGED_TEXT": "Nicht bearbeitete Anrufe in der Warteschlange",
+    "VOICE_TOTAL_OFFERED": "Insgesamt",
+    "VOICE_TOTAL_OFFERED_TEXT": "Gesamtzahl der Anrufe in der Warteschlange",
+    "VOICE_UNMANAGED": "Nicht verwaltet",
+    "VOICE_UNMANAGED_TEXT": "Nicht verwaltete Anrufe in der Warteschlange",
     "VOICE_WAITING": "Wartende Anrufe",
     "VOICE_WAITING_TEXT": "Wartende Anrufe in der Warteschlange",
     "DOWNLOAD": "Herunterladen",
     "SCHEDULED_CALLS": "Geplante Anrufe",
-    "PRIVATE": "Persönlich",
+    "PRIVATE": "Privat",
     "PUBLIC": "Öffentlich",
-    "PUBLIC_INTERACTION": "Öffentliche Interaktion",
+    "PUBLIC_INTERACTION": "Die Interaktion ist Ã¶ffentlich",
     "VISIBILITY": "Sichtbarkeit",
-    "INTERACTION_CLOSED": "Interaktion erfolgreich geschlossen",
-    "INTERACTION_CLOSED_DISPOSED": "Interaktion erfolgreich geschlossen und qualifiziert",
-    "INTERACTION_DISPOSED": "Interaktion erfolgreich qualifiziert",
-    "ASSIGNED_TO_OTHERS": "An Andere zugewiesen",
-    "SELECT_ALL": "Alles auswählen",
+    "INTERACTION_CLOSED": "Interaktion korrekt geschlossen",
+    "INTERACTION_CLOSED_DISPOSED": "Interaktion korrekt geschlossen und entsorgt",
+    "INTERACTION_DISPOSED": "Interaktion korrekt entsorgt",
+    "ASSIGNED_TO_OTHERS": "An andere zugewiesen",
+    "SELECT_ALL": "Alle auswählen",
     "CHAT_INTERACTIONS": "Chat-Interaktionen",
     "FAX_INTERACTIONS": "Fax-Interaktionen",
-    "ID": "ID",
+    "ID": "Id",
     "MAIL_INTERACTIONS": "E-Mail-Interaktionen",
-    "OPENCHANNEL_INTERACTIONS": "Offener-Kanal-Interaktionen",
+    "OPENCHANNEL_INTERACTIONS": "Open Channel-Interaktionen",
     "SMS_INTERACTIONS": "SMS-Interaktionen",
-    "CANCEL": "Abbrechen",
-    "DRAFT": "Entwurf speichern",
-    "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Möchten Sie diesen Ã¼berschreiben?",
+    "CANCEL": "Stornieren",
+    "DRAFT": "Entwurf",
+    "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Sind Sie sicher, dass Sie ihn Ã¼berschreiben möchten?",
     "DRAFT_SAVE_WARNING_TITLE": "Vorhandenen Entwurf Ã¼berschreiben?",
     "OVERWRITE": "Ãœberschreiben",
     "SAVE_AS_DRAFT": "Als Entwurf speichern",
     "UNTITLED": "Ohne Titel",
     "UPDATE_DRAFT": "Entwurf aktualisieren",
     "NO_AVAILABLE_INTERACTION": "Keine Interaktionen verfügbar",
-    "ACCOUNTINGDOC": "Abrechnungsdokumente",
+    "ACCOUNTINGDOC": "Buchhaltung",
     "ADD_PRODUCTPRICELIST": "PRODUKT HINZUFÃœGEN",
     "AGENTFULLNAME": "Agent",
     "ALL_COMPANIES": "Alle Unternehmen",
-    "ALL_PRODUCTS": "Alles",
-    "ALL_STATUS": "Alles",
-    "ALL_STEP": "Alles",
+    "ALL_PRODUCTS": "Alle",
+    "ALL_STATUS": "Alle",
+    "ALL_STEP": "Alle",
     "ALL_WORKFLOW": "Alle Arbeitsabläufe",
     "ATTENDACELASTINVOICE": "Letzte Rechnung",
     "ATTENDACENEXTINVOICE": "Nächste Rechnung",
     "AUTHORIZED": "AUTORISIERT",
     "AUTOINVOICE": "SELBSTABRECHNUNG",
     "AUTOPROFORMA": "SELBST-PROFORMA",
-    "BALANCE": "SALDO",
+    "BALANCE": "BALANCE",
     "BY": "Durch",
     "CLONEPROFORMA": "Klon",
     "COMPANIES": "Unternehmen",
     "DOSSIERS": "Dossiers",
     "DOSSIER_INFO": "Information",
     "ENDDATE": "Ablaufdatum",
-    "FROM": "von",
+    "FROM": "Von",
     "GRAPHINVOICES": "Diagramm der Rechnungsemission",
     "INASSET": "Kapital",
     "INVOICE": "RECHNUNG",
     "INVOICEPAYED": "Bezahlt",
     "INVOICES": "RECHNUNGEN",
     "INVOICESTATUS": "Status",
-    "INVOICETOTAL": "Gesamt",
+    "INVOICETOTAL": "Insgesamt",
     "INVOICE_INFO": "Rechnung",
     "MANAGESALES": "Abonnements",
     "MOVEASSET": "Kapital",
     "QUOTATIONSTATUS": "Status",
     "QUOTATIONSUBSCRIPTION": "Dauer",
     "QUOTATIONTAX": "MwSt",
-    "QUOTATIONTOTAL": "Gesamt",
+    "QUOTATIONTOTAL": "Insgesamt",
     "QUOTATIONTOTALPRICE": "Gesamt netto",
-    "QUOTATIONTOTALS": "Gesamt",
+    "QUOTATIONTOTALS": "Insgesamt",
     "QUOTATIONTOTALTAX": "Gesamtsteuer",
     "QUOTATIONUNIT": "Einheit",
     "QUOTATIONVAT": "VAT",
     "TOTALPAYMENTS": "Gesamtzahlungen",
     "UPDATED_AT": "Geändert am",
     "UPDATE_PRODUCT": "Produkt aktualisieren",
-    "WORKFLOW": "Arbeitsablauf wählen",
+    "WORKFLOW": "Wählen Sie einen Arbeitsablauf",
     "YEARS": "Jahre",
     "CUSTOMER_IP": "Ursprüngliche IP-Adresse",
     "CUSTOMER_PORT": "Ursprünglicher TCP-Port",
     "ADVANCED_SEARCH": "Erweiterte Suche",
-    "AND": "und",
+    "AND": "Und",
     "APPLY": "Anwenden",
-    "CONTAINS": "enthält",
+    "CONTAINS": "Enthält",
     "DISABLED": "Deaktiviert",
     "ENABLED": "Aktiviert",
     "ENDING_DATE": "Enddatum",
     "ENDING_VALUE": "Endwert",
-    "ENDS_WITH": "endet mit",
-    "EQUALS": "gleich",
-    "IS_AMONG": "ist unter",
-    "IS_BETWEEN": "ist zwischen",
-    "IS_GREATER_THAN": "ist größer als",
-    "IS_GREATER_THAN_OR_EQUAL_TO": "ist größer oder gleich",
-    "IS_LESS_THAN": "ist kleiner als",
-    "IS_LESS_THAN_OR_EQUAL_TO": "ist kleiner oder gleich",
-    "IS_NOT_AMONG": "ist nicht innerhalb",
-    "IS_NOT_EQUAL": "ist nicht gleich",
+    "ENDS_WITH": "Endet mit",
+    "EQUALS": "Gleich",
+    "IS_AMONG": "Ist unter",
+    "IS_BETWEEN": "Ist zwischen",
+    "IS_GREATER_THAN": "Ist größer als",
+    "IS_GREATER_THAN_OR_EQUAL_TO": "Ist größer oder gleich",
+    "IS_LESS_THAN": "Ist kleiner als",
+    "IS_LESS_THAN_OR_EQUAL_TO": "Ist kleiner oder gleich",
+    "IS_NOT_AMONG": "Ist nicht unter",
+    "IS_NOT_EQUAL": "Ist nicht gleich",
     "MEET_ALL_CONDITIONS": "Alle Bedingungen erfüllen",
     "MEET_ANY_CONDITIONS": "Mindestens eine Bedingung erfüllen",
     "NEW_CONDITION": "Neue Bedingung",
     "SELECT_OPERATOR": "Operator auswählen",
     "STARTING_DATE": "Startdatum",
     "STARTING_VALUE": "Startwert",
-    "STARTS_WITH": "beginnt mit",
+    "STARTS_WITH": "Beginnt mit",
     "VALUE": "Wert",
     "VALUES": "Werte",
     "VALUE_RANGE_CHECK": "Wert muss größer sein als",
-    "CHOOSE": "Auswählen",
+    "CHOOSE": "Wählen",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
     "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
-    "SELECT_QUEUE": "Warteschlange auswählen",
+    "SELECT_QUEUE": "Wählen Sie eine Warteschlange aus",
     "VIDAOOSESSION": "Videoanruf starten",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPP_INTERACTIONS": "WhatsApp-Interaktionen",
+    "WHATSAPP_INTERACTIONS": "WhatsApp Connector-Interaktionen",
     "LAST_UPDATED": "Zuletzt aktualisiert",
     "MATCHING_FIELD": "Ãœbereinstimmendes Feld",
     "MULTIPLE_CONTACTS_FOUND": "Mehrere Kontakte für Nummer gefunden",
-    "SELECT": "Auswählen",
+    "SELECT": "Wählen",
     "SELECT_CONTACT": "Kontakt auswählen",
-    "WHICH_ONE_TO_USE": "Welcher Eintrag soll verwendet werden?",
+    "WHICH_ONE_TO_USE": "Welches möchten Sie verwenden?",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Kein WhatsApp-Konto verfügbar",
-    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
     "LICENSE_EXPIRE_REMAINING_DAYS": "Ihre Lizenz läuft bald ab! Bitte wenden Sie sich an Ihren Administrator",
     "CREATEDAT": "Hergestellt in",
     "ELAPSED_ANSWERED": "Verstrichene Zeit seit dem Start des Anrufs",
     "ELAPSED_DISPOSED": "Verstrichene Zeit seit Beendigung des Anrufs",
-    "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte Internetverbindung prüfen.",
+    "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte Ã¼berprüfe deine Internetverbindung.",
     "NO_RESULTS_AVAILABLE": "Keine Ergebnisse verfügbar",
-    "AUTOCLOSE": "Tab nach Qualifizierung automatisch schließen",
-    "AGENT_PRESENCE": "Bereitschaftsstatus",
-    "SELECT_TEAM": "Team auswählen"
+    "AUTOCLOSE": "Schließen Sie die Kontaktlasche nach der Entsorgung automatisch",
+    "AGENT_PRESENCE": "Agentenpräsenz",
+    "SELECT_TEAM": "Team auswählen",
+    "AVAILABLE": "Erhältlich"
   }
 }
index fd1c6a8..4b2f44e 100644 (file)
@@ -1,83 +1,83 @@
 {
   "MAIL": {
     "TEXT": "Text",
-    "TIMES": "Zeitstempel",
-    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
+    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
+    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
     "AUTOREPLY": "Automatische Antwort",
-    "SHOW_AUTOREPLY": "Automatische Antwort anzeigen",
+    "SHOW_AUTOREPLY": "Die automatische Antwort anzeigen",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
-    "TO": "An",
+    "TO": "Zu",
     "FROM": "Von",
     "DATE": "Datum",
-    "CC": "CC",
-    "REPLY": "Antworten",
+    "CC": "Cc",
+    "REPLY": "Antwort",
     "REPLY_ALL": "Allen antworten",
-    "FORWARD": "Weiterleiten",
+    "FORWARD": "Vorwärts",
     "SUBJECT": "Betreff",
-    "BCC": "BCC",
+    "BCC": "Bcc",
     "SEND": "Senden",
     "ATTACHMENT": "Anhang",
     "ATTACHMENTS": "Anhänge",
     "NAME": "Name",
     "MAILQUEUES": "E-Mail Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "STRATEGY": "Strategie",
     "ERRORS": {
-      "TEXT_REQUIRED": "Feld \"Text\" ist erforderlich",
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Agent Timeout ist erforderlich",
-      "EMAIL_ADDRESS_REQUIRED": "E-Mail-Adresse ist erforderlich",
-      "EMAIL_ADDRESS_MUST_VALID": "E-Mail ungültiges Format",
-      "HOST_REQUIRED": "Host wird benötigt",
-      "USERNAME_REQUIRED": "Benutzername ist erforderlich",
-      "PORT_REQUIRED": "Port ist erforderlich",
+      "TEXT_REQUIRED": "Das Feld \"Text\" ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
+      "EMAIL_ADDRESS_REQUIRED": "Die E-Mail-Adresse ist erforderlich",
+      "EMAIL_ADDRESS_MUST_VALID": "Die E-Mail Adresse muss in einem gültigen Format",
+      "HOST_REQUIRED": "Der Host wird benötigt",
+      "USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
+      "PORT_REQUIRED": "Der Port ist erforderlich",
       "CONNTIMEOUT_REQUIRED": "Timeout der Verbindung ist erforderlich",
-      "AUTHTIMEOUT_REQUIRED": "Zeitlimit für die Authentifizierung ist erforderlich",
-      "ACCEPTURL_MUST_VALID_URL": "URL ungültiges Format",
-      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
-      "REJECTURL_MUST_VALID_URL": "URL ungültiges Format",
-      "CLOSEURL_MUST_VALID_URL": "URL ungültiges Format",
-      "AGENT_REQUIRED": "Agent ist erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Timeout muss größer oder gleich sein als",
-      "DISPOSITION_REQUIRED": "Qualifizierung ist erforderlich",
-      "CONDITION_REQUIRED": "Bedingung ist erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Wahre Priorität ist erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Falsche Priorität ist erforderlich",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wahre Priorität muss größer oder gleich sein als",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Falsche Priorität muss größer oder gleich sein als",
-      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität muss größer oder gleich sein als",
-      "QUEUE_REQUIRED": "Warteschlange ist erforderlich",
-      "LIST_REQUIRED": "Liste ist erforderlich",
-      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
-      "SERVICE_REQUIRED": "Dienst ist erforderlich,",
-      "IMAP_HOST_REQUIRED": "IMAP-Host ist erforderlich",
-      "IMAP_PORT_REQUIRED": "IMAP-Port erforderlich",
-      "SMTP_HOST_REQUIRED": "SMTP-Host ist erforderlich",
-      "SMTP_PORT_REQUIRED": "SMTP-Port ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht Ã¼berein",
-      "KEY_MAX_LENGTH": "Schlüssel darf eine maximale Länge haben von {{max}}",
-      "KEY_REQUIRED": "Schlüssel ist erforderlich",
-      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}}",
+      "AUTHTIMEOUT_REQUIRED": "Das Zeitlimit für die Authentifizierung erforderlich ist",
+      "ACCEPTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
+      "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "AGENT_REQUIRED": "Der Agent ist erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Timeout muss größer als oder gleich",
+      "DISPOSITION_REQUIRED": "Die Disposition ist erforderlich",
+      "CONDITION_REQUIRED": "Der Zustand ist erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Die wahre Priorität ist erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Die falsche Priorität ist erforderlich",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die wahre Priorität muss größer als oder gleich",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die falsche Priorität muss größer als oder gleich",
+      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Priorität muss größer als oder gleich",
+      "QUEUE_REQUIRED": "Die Warteschlange ist erforderlich",
+      "LIST_REQUIRED": "Die Liste ist erforderlich",
+      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
+      "SERVICE_REQUIRED": "Der Dienst ist erforderlich,",
+      "IMAP_HOST_REQUIRED": "Der IMAP-Host wird benötigt",
+      "IMAP_PORT_REQUIRED": "Der IMAP-Anschluss erforderlich",
+      "SMTP_HOST_REQUIRED": "Der SMTP-Host ist erforderlich",
+      "SMTP_PORT_REQUIRED": "Der SMTP-Port ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter nicht Ã¼bereinstimmen",
+      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
+      "KEY_REQUIRED": "Der Schlüssel ist erforderlich",
+      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "FONT_SIZE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
       "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "REPLY_TYPE_REQUIRED": "Pflichtfeld"
@@ -93,9 +93,9 @@
     "MAILACCOUNTS": "E-Mail Konten",
     "EMAIL_ADDRESS": "E-Mail Adresse",
     "ADD_MAILACCOUNT": "E-Mail Konto hinzufügen",
-    "EDIT_MAILACCOUNT": "E-Mail Konto bearbeiten",
-    "DELETE_MAILACCOUNT": "E-Mail Konto löschen",
-    "DISPOSITIONS": "Qualifizierungen",
+    "EDIT_MAILACCOUNT": "E-Mail-Konto bearbeiten",
+    "DELETE_MAILACCOUNT": "E-Mail-Konten löschen",
+    "DISPOSITIONS": "Bestimmungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "OTHERS": "Andere",
     "SERVICE": "Service",
     "CREATED_AT": "Erstellt am",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode akzeptieren",
+    "ACCEPTMETHOD": "Die Methode",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen",
-    "CLOSEMETHOD": "Methode schließen",
-    "CLOSEURL": "URL schließen",
+    "CLOSE": "In der Nähe",
+    "CLOSEMETHOD": "In der Nähe Methode",
+    "CLOSEURL": "Der URL",
     "WHITELABEL": "White Label",
-    "SIGNATURE": "Signatur",
+    "SIGNATURE": "Unterschrift",
     "IMAP": "IMAP",
     "HOST": "Host",
     "USERNAME": "Benutzername",
-    "PORT": "Port",
+    "PORT": "Hafen",
     "MAILBOX": "Mailbox",
     "FILTER": "Filter",
     "CONNTIMEOUT": "Connection Timeout [sek]",
     "SMTP": "SMTP",
     "SELECTED": "Ausgewählte",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "BACK": "Zurück",
     "MAIL": "E-Mail",
-    "ID": "ID",
+    "ID": "Id",
     "TIMEOUT": "Timeout",
     "PASSWORD": "Passwort",
-    "NO_MAILDISPOSITION_AVAILABLE": "Keine E-Mail Qualifizierung verfügbar",
-    "ADD_MAILDISPOSITION": "Qualifizierung hinzufügen",
-    "NEW_MAILDISPOSITION": "Neue E-Mail Qualifizierung",
-    "EDIT_MAILDISPOSITION": "Qualifizierung bearbeiten",
-    "DELETE_MAILDISPOSITION": "Qualifizierung löschen",
-    "MAILDISPOSITIONS": "E-Mail Qualifizierungen",
+    "NO_MAILDISPOSITION_AVAILABLE": "Keine E-Mail zur Verfügung Verfügungen",
+    "ADD_MAILDISPOSITION": "E-Mail hinzufügen Disposition",
+    "NEW_MAILDISPOSITION": "Neue E-Mail zur Verfügung",
+    "EDIT_MAILDISPOSITION": "Bearbeiten von E-Mail zur Verfügung",
+    "DELETE_MAILDISPOSITION": "Löschen von E-Mail zur Verfügung",
+    "MAILDISPOSITIONS": "E-Mail Verfügungen",
     "NEW_MAILQUEUE": "Neue E-Mail Warteschlange",
-    "NEW_MAILACCOUNT": "Neues E-Mail Konto",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "ALL_TEAMS": "Alle Teams",
+    "NEW_MAILACCOUNT": "Neue E-Mail Konto",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "HELP": {
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "USERNAME": "Benutzername für die Authentifizierung",
-      "PASSWORD": "Passwort für die Authentifizierung",
-      "SECURE": "Bei true wird die Verbindung TLS verwenden, wenn eine Verbindung zum Server aufgebaut wird",
-      "FONT_FAMILY": "Standard-Schriften",
+      "USERNAME": "Benutzername für die Authentifizierung verwendet werden",
+      "PASSWORD": "Kennwort für die Authentifizierung verwendet werden",
+      "SECURE": "Bei true wird die Verbindung TLS verwenden, wenn eine Verbindung zu Server",
+      "FONT_FAMILY": "Standardschriftfamilie",
       "FONT_SIZE": "Standard Schriftgröße",
-      "MARK_AS_UNREAD": "Aktivieren / deaktivieren, um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
+      "MARK_AS_UNREAD": "Agent aktivieren / deaktivieren, um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
+      "MANDATORYDISPOSITION": "Zwingende Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Anhalten, um zu verwenden, wenn die obligatorische Disposition aktiviert ist"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
-    "TEAMADD_MAILQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_MAILQUEUE": "Agenten zur Warteschlange hinzufügen",
+    "OF": "Von",
+    "TEAMADD_MAILQUEUE": "Team Chat Warteschlange hinzufügen",
+    "AGENTADD_MAILQUEUE": "Agent zu Chatten Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "AGENT": "Agent",
     "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
-    "DISPOSITION": "Qualifizierung",
-    "GOTOIF": "GoToIf",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "DISPOSITION": "Disposition",
+    "GOTOIF": "GotoIf",
     "EDIT_GOTOIF": "Bearbeiten GotoIf",
-    "CONDITION": "Bedingung",
+    "CONDITION": "Zustand",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "GOTOP": "GotoP",
     "VALUE": "Wert",
     "QUEUE": "Warteschlange",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "INTERACTIONS": "Interaktionen",
-    "STARTEDAT": "Startdatum",
+    "INTERACTIONS": "Wechselwirkungen",
+    "STARTEDAT": "Gestartet am",
     "CONTACT": "Kontakt",
     "CLOSEDAT": "Geschlossen",
-    "NOTES": "Anmerkungen",
-    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
+    "NOTES": "Hinweise",
+    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
     "ACTIVE": "Aktiv",
-    "SECURE": "Sicher",
+    "SECURE": "Sichere",
     "AUTHENTICATION": "Authentifizierung",
     "SMTP_HOST": "SMTP-Host",
     "SMTP_PORT": "SMTP-Port",
     "IMAP_PORT": "IMAP-Port",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "SELECT_STATUS": "Status auswählen",
-    "OPENED": "Geöffnet",
+    "OPENED": "Öffnen",
     "CLOSED": "Geschlossen",
     "ALL": "Alle",
     "SELECT_ACCOUNT": "Konto auswählen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "VOICE": "Anrufe",
+    "AGENTADD_QUEUE": "Agent E-Mail Warteschlange hinzufügen",
+    "VOICE": "Voice",
     "CHAT": "Chat",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Offener Kanal",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Channel Ã¶ffnen",
     "FAX": "Fax",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
     "ACCOUNTS": "Konten",
-    "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Intern",
+    "FULLNAME": "Voller Name",
+    "INTERNAL": "Interne",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Wartezustand",
-    "TOTAL": "Gesamt",
-    "IN": "Eingehend",
-    "OUT": "Ausgehend",
+    "WAITING": "Warten",
+    "TOTAL": "Insgesamt",
+    "IN": "In",
+    "OUT": "Aus",
     "IMAP_STATUS": "IMAP-Status",
     "SMTP_STATUS": "SMTP-Status",
     "DISABLED": "Deaktiviert",
     "CONNECTED": "Verbunden",
-    "NEVER_VERIFIED": "Noch nicht verifiziert",
+    "NEVER_VERIFIED": "Nie verifiziert",
     "ERROR": "Fehler",
     "EDIT_ACCOUNT": "Konto bearbeiten",
-    "VERIFY_SMTP": "Bitte SMTP-Einstellungen prüfen",
+    "VERIFY_SMTP": "Ãœberprüfen Sie die SMTP-",
     "VERIFIED": "Ãœberprüft",
-    "VERIFYSMTP_MAILACCOUNT": "Bitte SMTP-Einstellungen prüfen",
-    "GOTOREALTIME_MAILACCOUNT": "Zum E-Mail-Konto Echtzeitmonitoring",
-    "GOTO_MAILACCOUNT": "Zum E-Mail Konto gehen",
+    "VERIFYSMTP_MAILACCOUNT": "Ãœberprüfen Sie die SMTP-",
+    "GOTOREALTIME_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
+    "GOTO_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Verwendung",
+    "NOT_INUSE": "Nicht in Gebrauch",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "In Verwendung",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "INFO": "Information",
+    "IN_USE": "Im Einsatz",
+    "AGENTSADD_QUEUE": "Agenten zu Warteschlange hinzufügen",
+    "INFO": "Info",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_MAILQUEUE": "Echtzeitmonitoring E-Mail Warteschlangen",
-    "PARTIALPAUSE": "Teilpause",
+    "GOTOREALTIME_MAILQUEUE": "In Echtzeit, E-Mail Warteschlange",
+    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
-    "SPYINTERACTION": "Mithören",
+    "SPYINTERACTION": "Spy",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Notiz",
+    "NOTE": "Hinweis",
     "TAGS": "Tags",
-    "INTERACTIONS_MAILACCOUNT": "Zu den Interaktionen gehen",
-    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "PENDING": "Warten auf Rückmeldung",
-    "SEND_AS_PENDING": "Senden und auf Rückmeldung warten",
-    "SEND_AND_CLOSE": "Senden und schließen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
-    "NEW_MAILCANNEDANSWER": "Neue Textvorlage",
-    "ADD_MAILCANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_MAILCANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_MAILCANNEDANSWER": "Textvorlage löschen",
+    "INTERACTIONS_MAILACCOUNT": "Zu Wechselwirkungen gehen",
+    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
+    "PENDING": "Ausstehend",
+    "SEND_AS_PENDING": "Senden als Ausstehend",
+    "SEND_AND_CLOSE": "Senden und Schließen",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
+    "NO_MAILCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
+    "NEW_MAILCANNEDANSWER": "Neue vordefinierte Antowrt",
+    "ADD_MAILCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_MAILCANNEDANSWER": "Vordefiierte Antwort bearbeiten",
+    "DELETE_MAILCANNEDANSWER": "Vordefinierte Antwort löschen",
     "SHOW_ORIGINAL_MESSAGE": "Ursprüngliche Nachricht anzeigen",
     "DELETE_INTERACTION": "Interaktion löschen",
     "ACCEPTED": "Akzeptiert",
     "FONT_FAMILY": "Schriftfamilie",
     "FONT_SIZE": "Schriftgröße",
-    "MARK_AS_UNREAD": "Als ungelesen markieren",
-    "ADD_MAILSUBSTATUS": "SubStatus hinzufügen",
-    "DELETE_MAILSUBSTATUS": "SubStatus löschen",
-    "EDIT_MAILSUBSTATUS": "SubStatus bearbeiten",
-    "MAILSUBSTATUSES": "E-Mail SubStatus",
-    "NEW_MAILSUBSTATUS": "Neuer SubStatus",
-    "SEND_AS": "Senden als",
-    "COMMAND": "Eingabe",
+    "MARK_AS_UNREAD": "als ungelesen markieren",
+    "ADD_MAILSUBSTATUS": "Unterstatus hinzufügen",
+    "DELETE_MAILSUBSTATUS": "Löschen",
+    "EDIT_MAILSUBSTATUS": "Bearbeiten",
+    "MAILSUBSTATUSES": "E-Mail-Unterstatus",
+    "NEW_MAILSUBSTATUS": "Neuer Unterstatus",
+    "SEND_AS": "Senden Als",
+    "COMMAND": "Befehl",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONSOUND": "Klingen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Tag",
-    "AGENTTRANSFER": "Weiterleitung Agent",
-    "AGENTTRANSFERTIMEOUT": "Zeitlimit für Agententransfer",
-    "QUEUETRANSFER": "Weiterleitung Warteschlange",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
-    "TRANSFER": "Weiterleitung",
-    "AGENTADD_MAILACCOUNT": "Agenten zum E-Mail Konto hinzufügen",
+    "TAG": "Etikett",
+    "AGENTTRANSFER": "Agentenübertragung",
+    "AGENTTRANSFERTIMEOUT": "Zeitlimit für Agentenübertragungen",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
+    "TRANSFER": "Transfer",
+    "AGENTADD_MAILACCOUNT": "Fügen Sie dem E-Mail-Konto Agent hinzu",
     "YOU_ARE_REGISTERED_AS_A": "Sie sind registriert als",
-    "CANNEDANSWERS": "Textvorlagen",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "MAILCANNEDANSWERS": "E-Mail Textvorlagen",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "MAILCANNEDANSWERS": "Vordefinierte Antworten",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "DOWNLOAD": "Herunterladen",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterlagen inkl. Anhänge",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern sonst erforderlich",
-    "ADVANCED": "Erweitert",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung angehalten",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Herunterladen ohne Anhang",
-    "DOWNLOAD_WITH_ATTACHMENT": "Herunterladen inkl. Anhang",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "MANDATORYDISPOSITION": "Zwingende Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
+    "ADVANCED": "Fortgeschritten",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Ohne Anhang herunterladen",
+    "DOWNLOAD_WITH_ATTACHMENT": "Download mit Anhang",
     "LASTMESSAGE": "Letzte Nachricht",
     "REPLY_TYPE": "Antworttyp"
   }
index d002733..0ef1225 100644 (file)
@@ -1,59 +1,59 @@
 {
   "OPENCHANNEL": {
     "TEXT": "Text",
-    "TIMES": "Zeitstempel",
-    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
+    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
+    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
     "AUTOREPLY": "Automatische Antwort",
     "NAME": "Name",
-    "OPENCHANNELQUEUES": "Warteschlangen offener Kanal",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "OPENCHANNELQUEUES": "Offener Kanal Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "ERRORS": {
-      "TEXT_REQUIRED": "Feld \"Text\" ist erforderlich",
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Agent Timeout ist erforderlich",
-      "MOTIONADDRESS_REQUIRED": "Adresse ist erforderlich",
-      "MOTIONADDRESS_MUST_VALID_URL": "Adresse ungültiges Format",
-      "ACCEPTURL_MUST_VALID_URL": "URL ungültiges Format",
-      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
-      "REJECTURL_MUST_VALID_URL": "URL ungültiges Format",
-      "CLOSEURL_MUST_VALID_URL": "URL ungültiges Format",
-      "REPLYURI_REQUIRED": "Antwort-URL ungültiges Format",
-      "REPLYURI_MUST_VALID_URL": "Antwort-URL ungültiges Format",
-      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
-      "CONDITION_REQUIRED": "Bedingung ist erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Wahre Priorität ist erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Falsche Priorität ist erforderlich",
+      "TEXT_REQUIRED": "Das Feld \"Text\" ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
+      "MOTIONADDRESS_REQUIRED": "Die Adresse ist erforderlich",
+      "MOTIONADDRESS_MUST_VALID_URL": "Die Adresse muss in einem gültigen Format",
+      "ACCEPTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
+      "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "REPLYURI_REQUIRED": "Die Antwort URL ist erforderlich",
+      "REPLYURI_MUST_VALID_URL": "Die Antwort URL muss im gültigen Format geschrieben werden",
+      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
+      "CONDITION_REQUIRED": "Der Zustand ist erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Die wahre Priorität ist erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Die falsche Priorität ist erforderlich",
       "AGENT_REQUIRED": "Pflichtfeld",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
       "DISPOSITION_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Schlüssel darf eine maximale Länge haben von {{max}}",
-      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}}",
+      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
+      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
       "VALUE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
       "LIST_REQUIRED": "Pflichtfeld",
       "KEY_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "NAME_MUST_VALID_PATTERN": "Format ungültig",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "NAME_MUST_VALID_PATTERN": "Falsches Format",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Zugangsschlüssel-ID ist erforderlich",
-      "BOTNAME_REQUIRED": "Bot-Name ist erforderlich",
-      "SECRETACCESSKEY_REQUIRED": "Geheimer Schlüssel ist erforderlich",
+      "BOTNAME_REQUIRED": "Der Bot-Name ist erforderlich",
+      "SECRETACCESSKEY_REQUIRED": "Zugangsschlüssel geheim ist erforderlich",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld"
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
     "QUEUE": "Warteschlange",
-    "EDIT_AGENT": "Agenteb bearbeiten",
-    "EDIT_GOTO": "Gehe zu bearbeiten",
-    "EDIT_NOOP": "Noop bearbeiten",
-    "EDIT_GOTOIF": "GoToIf bearbeiten",
+    "EDIT_AGENT": "Agent bearbeiten",
+    "EDIT_GOTO": "Bearbeiten Gehe zu",
+    "EDIT_NOOP": "Bearbeiten Noop",
+    "EDIT_GOTOIF": "Bearbeiten Gotoif",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "CONDITION": "Bedingung",
+    "CONDITION": "Zustand",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "PRIORITY": "Priorität",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "ADD_OPENCHANNELQUEUE": "Warteschlange offener Kanal hinzufügen",
-    "EDIT_OPENCHANNELQUEUE": "Warteschlange offener Kanal bearbeiten",
-    "DELETE_OPENCHANNELQUEUE": "Warteschlange offener Kanal löschen",
-    "PENALTY": "Verzögerung",
+    "ADD_OPENCHANNELQUEUE": "Fügen Sie im Offenen Kanal Warteschlange",
+    "EDIT_OPENCHANNELQUEUE": "Offener Kanal Warteschlange bearbeiten",
+    "DELETE_OPENCHANNELQUEUE": "Löschen der Warteschlange im Offenen Kanal",
+    "PENALTY": "Strafe",
     "TEAMADD_OPENCHANNELQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_OPENCHANNELQUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTADD_OPENCHANNELQUEUE": "Agent zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CREATED_AT": "Erstellt am",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
     "GENERAL": "Allgemein",
-    "OPENCHANNELACCOUNTS": "Konten offener Kanal",
+    "OPENCHANNELACCOUNTS": "Offener Kanal Konten",
     "MOTIONADDRESS": "Motion Adresse",
-    "ADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
-    "EDIT_OPENCHANNELACCOUNT": "Konto offener Kanal bearbeiten",
-    "DELETE_OPENCHANNELACCOUNT": "Konto offener Kanal löschen",
+    "ADD_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account hinzufügen",
+    "EDIT_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account bearbeiten",
+    "DELETE_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account löschen.",
     "API": "API",
-    "DISPOSITIONS": "Qualifizierungen",
+    "DISPOSITIONS": "Bestimmungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "LIST": "Liste",
     "FIDELITY": "Treue",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode akzeptieren",
+    "ACCEPTMETHOD": "Die Methode",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen",
-    "CLOSEMETHOD": "Methode schließen",
-    "CLOSEURL": "URL schließen",
-    "SELECTED": "Ausgewählt",
+    "CLOSE": "In der Nähe",
+    "CLOSEMETHOD": "In der Nähe Methode",
+    "CLOSEURL": "Der URL",
+    "SELECTED": "Ausgewählte",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "BACK": "Zurück",
     "OPENCHANNEL": "Offener Kanal",
-    "ID": "ID",
+    "ID": "Id",
     "TIMEOUT": "Timeout",
-    "OPENCHANNELDISPOSITIONS": "Qualifizierungen offener Kanal",
-    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Keine Qualifizierungen verfügbar",
-    "NEW_OPENCHANNELDISPOSITION": "Neue Qualifizierung",
-    "ADD_OPENCHANNELDISPOSITION": "Qualifizierung offener Kanal hinzufügen",
-    "EDIT_OPENCHANNELDISPOSITION": "Qualifizierung bearbeiten",
-    "DELETE_OPENCHANNELDISPOSITION": "Qualifizierung löschen",
-    "NEW_OPENCHANNELQUEUE": "Neue Warteschlange offener Kanal",
-    "NEW_OPENCHANNELACCOUNT": "Neues Konto offener Kanal",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "ALL_TEAMS": "Alle Teams",
+    "OPENCHANNELDISPOSITIONS": "Offener Kanal Verfügungen",
+    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Keine offenen Kanal Dispositionen verfügbar",
+    "NEW_OPENCHANNELDISPOSITION": "Neue Offene Kanal inspektion",
+    "ADD_OPENCHANNELDISPOSITION": "Fügen Sie im Offenen Kanal inspektion",
+    "EDIT_OPENCHANNELDISPOSITION": "Bearbeiten Sie im Offenen Kanal inspektion",
+    "DELETE_OPENCHANNELDISPOSITION": "Löschen Sie im Offenen Kanal inspektion",
+    "NEW_OPENCHANNELQUEUE": "Neue Offene Kanal Warteschlange",
+    "NEW_OPENCHANNELACCOUNT": "Neue Open Channel Account",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "REPLYURI": "Antwort URL",
     "RECEIVEURI": "Erhalten URL",
     "HELP": {
-      "RECEIVEURI": "Automatisch generierter API-String, um die Nachrichten Ã¼ber den offenen Kanal zu erhalten (POST-Methode). Zum Kopieren in die Zwischenablage klicken",
-      "REPLYURI": "URL des offenen Kanals zum Senden und Empfangen von Nachrichten",
+      "RECEIVEURI": "Dies ist die automatisch generierte API-String müssen Sie die Nachrichten in Ihrem offenen Kanal zu erhalten von der externen Anwendung (POST-Methode verwendet werden muss). Drücken Sie die Zwischenablage, um Sie in die Zwischenablage zu kopieren.",
+      "REPLYURI": "Dies ist die URL der Offene Kanal wird beim Senden oder Beantworten von Nachrichten",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "LIST": "Contact Manager Liste zu verknüpfen von Kontakten",
       "TOKEN": "Fügen Sie diese Eigenschaft als Abfragezeichenfolge in Ihrer Web-Service-URL hinzu. Weitere Informationen finden Sie im Dokument doc <a target = \"_ blank\" href = \"https://wiki.xcallymotion.com/display/XMV/New Channels Configuration Steps",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
-      "WELCOMEMESSAGE": "Willkommensnachricht beim Eintreffen der ersten Anfrage"
+      "MANDATORYDISPOSITION": "Zwingende Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
+      "WELCOMEMESSAGE": "Dies ist die erste Nachricht, die an das Schütz gesendet wird"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "CONTACT": "Kontakt",
-    "STARTEDAT": "Startdatum",
+    "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "CLOSED": "Geschlossen",
-    "OPENED": "Geöffnet",
+    "OPENED": "Öffnen",
     "OPEN": "Öffnen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
-    "INTERACTIONS": "Interaktionen",
+    "INTERACTIONS": "Wechselwirkungen",
     "ALL": "Alle",
-    "SELECT_STATUS": "Status auswählen",
+    "SELECT_STATUS": "Wählen Sie einen Status",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "CLOSEDAT": "Geschlossen",
-    "DISPOSITION": "Qualifizierung",
-    "NOTES": "Anmerkungen",
-    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
-    "SELECT_ACCOUNT": "Konto auswählen",
+    "DISPOSITION": "Disposition",
+    "NOTES": "Hinweise",
+    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
+    "SELECT_ACCOUNT": "Wählen Sie ein Konto",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
-    "INFO": "Information",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "INFO": "Info",
     "KEY": "Schlüssel",
     "REALTIME": "Echtzeit",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Verwendung",
+    "NOT_INUSE": "Nicht in Gebrauch",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "In Verwendung",
+    "IN_USE": "Im Einsatz",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
-    "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Intern",
+    "FULLNAME": "Fullname",
+    "INTERNAL": "Interne",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
+    "AGENTADD_QUEUE": "Agent zu Offenen Kanal Warteschlange hinzufügen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Wartezustand",
-    "VOICE": "Anrufe",
+    "WAITING": "Warten",
+    "VOICE": "Voice",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "SMS": "SMS",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten, die Offenen Kanal Warteschlange hinzufügen",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "Zum offener Kanal Echtzeitmonitoring",
-    "PARTIALPAUSE": "Teilpause",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "In Echtzeit, offenen Kanal Warteschlange",
+    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
-    "SPYINTERACTION": "Mithören",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Interaktionen gehen",
-    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
+    "SPYINTERACTION": "Spy",
+    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Wechselwirkungen gehen",
+    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
     "DELETE": "Löschen",
-    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
-    "NEW_OPENCHANNELCANNEDANSWER": "Neue Textvorlage",
-    "ADD_OPENCHANNELCANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_OPENCHANNELCANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_OPENCHANNELCANNEDANSWER": "Textvorlage löschen",
-    "DELIVERYREPORTURL": "URL für Zustellungsbericht",
+    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
+    "NEW_OPENCHANNELCANNEDANSWER": "Neue vordefinierte Antwort",
+    "ADD_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "DELETE_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort löschen",
+    "DELIVERYREPORTURL": "Zustellungsbericht-URL",
     "DELETE_INTERACTION": "Interaktion löschen",
-    "COMMAND": "Eingabe",
+    "COMMAND": "Befehl",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONSOUND": "Klingen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "INSERT_MESSAGE_HERE": "Textnachricht hier eingeben",
+    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
-    "ADVANCED": "Erweitert",
+    "ADVANCED": "Fortgeschritten",
     "PROXY": "Proxy",
-    "TOKEN": "Token",
+    "TOKEN": "Zeichen",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Tag",
-    "AGENTADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
-    "MAPKEY": "MAP-KEY",
+    "TAG": "Etikett",
+    "AGENTADD_OPENCHANNELACCOUNT": "Fügen Sie Agent zu Openchannel Account hinzu",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
+    "MAPKEY": "Karten Schlüssel",
     "SEND": "Senden",
-    "TO": "An",
-    "AGENTTRANSFER": "Weiterleitung Agent",
+    "TO": "Zu",
+    "AGENTTRANSFER": "Agent Transfer",
     "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
-    "QUEUETRANSFER": "Weiterleitung Warteschlange",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
-    "TRANSFER": "Weiterleitung",
-    "CANNEDANSWERS": "Textvorlagen",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFERTIMEOUT": "Warteschlangenübertragungs-Timeout",
+    "TRANSFER": "Transfer",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "OPENCHANNELCANNEDANSWERS": "Textvorlagen offener Kanal",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern sonst erforderlich",
-    "DIALOGFLOW": "DialogFlow",
-    "EDIT_DIALOGFLOW": "DialogFlow bearbeiten",
+    "OPENCHANNELCANNEDANSWERS": "Vordefinierte Antworten",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "MANDATORYDISPOSITION": "Zwingende Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
+    "DIALOGFLOW": "Dialogablauf",
+    "EDIT_DIALOGFLOW": "Bearbeiten Sie die Dialogflow-Konfiguration",
     "LANGUAGE": "Sprache",
-    "WELCOMEMESSAGE": "Willkommensnachricht",
+    "WELCOMEMESSAGE": "Willkommen Messsage",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
     "AMAZONLEX": "AmazonLex",
-    "BOTNAME": "Botname",
-    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
-    "LEXREGION": "Lex Region",
-    "SECRETACCESSKEY": "Geheimer Schlüssel",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme angehalten",
+    "BOTNAME": "Bot-Name",
+    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
+    "LEXREGION": "Region",
+    "SECRETACCESSKEY": "Zugangsschlüssel geheim",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
     "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterlagen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterlagen inkl. Anhänge",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
     "LASTMESSAGE": "Letzte Nachricht",
-    "CLIENTEMAIL": "Kunden E-Mail",
+    "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privater Schlüssel",
+    "PRIVATEKEY": "Privat Schlüssel",
     "PROJECTID": "Projekt-ID",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Notiz"
+    "NOTE": "Hinweis"
   }
 }
index ee88755..b5e8a7a 100644 (file)
 {
   "STAFF": {
     "CONTEXT": "Kontext",
-    "RINGINUSE": "Innerhalb Verteilungsgrupppe",
+    "RINGINUSE": "Ring im Einsatz",
     "USERS": "Benutzer",
     "AGENTS": "Agenten",
-    "TOGGLE_SIDENAV": "Navigationsleiste umschalten",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "TOGGLE_SIDENAV": "Um sidenav",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "BACK": "Zurück",
-    "MULTI_SELECT_TOGGLE": "Mehrfachauswahl ja/nein",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
-    "SELECTED": "Ausgewählt",
+    "MULTI_SELECT_TOGGLE": "Wählen Sie toggle multi",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECTED": "Ausgewählte",
     "DELETE_SELECTED": "Auswahl löschen",
     "EXPORT_SELECTED": "Auswahl exportieren",
     "ALL_USERS": "Alle Benutzer",
     "ALL_AGENTS": "Alle Agenten",
     "SORT": "Sortieren",
     "NAME": "Name",
-    "FULLNAME": "Vollständiger Name",
+    "FULLNAME": "Voller Name",
     "A_TO_Z": "(A bis Z)",
     "Z_TO_A": "(Z bis A)",
     "MORE": "Mehr",
     "DELETE_USER": "Benutzer löschen",
     "EDIT_USER": "Benutzer bearbeiten",
-    "DELETE_AGENT": "Agenten löschen",
-    "EDIT_AGENT": "Agenten bearbeiten",
+    "DELETE_AGENT": "Bedienplatz löschen",
+    "EDIT_AGENT": "Agent bearbeiten",
     "DELETE": "Löschen",
     "SAVE": "Speichern",
     "ADD_USER": "Benutzer hinzufügen",
     "ADD_AGENT": "AGENT HINZUFÃœGEN",
-    "NO_RESULTS": "Keine Ergebnisse",
+    "NO_RESULTS": "Keine Ergebnisse.",
     "CLOSE_DIALOG": "Dialog schließen",
-    "NAME_REQUIRED": "Name (erforderlich)",
+    "NAME_REQUIRED": "Name (erforderlich).",
     "USERNAME": "Benutzername",
     "SHOW_ALL_FIELDS": "Alle Felder anzeigen",
     "PHONE_NUMBER": "Telefonnummer",
     "EMAIL": "E-Mail",
     "PASSWORD": "Passwort",
     "ERRORS": {
-      "FULLNAME_REQUIRED": "Vollständiger Name ist erforderlich",
-      "USERNAME_REQUIRED": "Benutzername ist erforderlich",
-      "EMAIL_REQUIRED": "E-Mail ist erforderlich",
-      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht Ã¼berein",
-      "EMAIL_MUST_VALID": "E-Mail Format ungültig",
-      "ACCOUNTNAME_REQUIRED": "Konto ist erforderlich",
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "HOST_REQUIRED": "Host ist erforderlich",
-      "CHATCAPACITY_REQUIRED": "Kapazität Chat ist erforderlich",
-      "MAILCAPACITY_REQUIRED": "Kapazität E-Msil ist erforderlich",
-      "FAXCAPACITY_REQUIRED": "Kapazität Fax ist erforderlich",
-      "SMSCAPACITY_REQUIRED": "Kapazität SMS ist erforderlich",
-      "OPENCHANNELCAPACITY_REQUIRED": "Kapazität offener Kanal ist erforderlich",
-      "SIPEXPIRES_REQUIRED": "SIP-Ablaufdatum ist erforderlich",
-      "SIPPORT_REQUIRED": "SIP-Port ist erforderlich",
-      "UNCONDITIONALNUMBER_REQUIRED": "Zielrufnummer ist erforderlich",
-      "NOREPLYNUMBER_REQUIRED": "Nummer bei keiner Antwort ist erforderlich",
-      "BUSYNUMBER_REQUIRED": "Nummer bei Besetzt ist erforderlich",
-      "USERNAME_MUST_VALID_PATTERN": "Benutzername ungültig {{regex}}.",
-      "REMOTECONTROLPORT_REQUIRED": "Port für Remote ist erforderlich",
-      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität Chat muss größer oder gleich sein als",
-      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität E-Mail muss größer oder gleich sein als",
-      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität Fax muss größer oder gleich sein als",
-      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität offener Kanal muss größer oder gleich sein als",
-      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "FULLNAME_REQUIRED": "Der Fullname ist erforderlich",
+      "USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
+      "EMAIL_REQUIRED": "Die E-Mail ist erforderlich",
+      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Kennwörter stimmen nicht Ã¼berein.",
+      "EMAIL_MUST_VALID": "Die e-Mail muss in einem gültigen Format",
+      "ACCOUNTNAME_REQUIRED": "Der Account ist erforderlich.",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "HOST_REQUIRED": "Der Host wird benötigt",
+      "CHATCAPACITY_REQUIRED": "Die Kapazität ist erforderlich",
+      "MAILCAPACITY_REQUIRED": "Die E-Mail Kapazität erforderlich ist",
+      "FAXCAPACITY_REQUIRED": "Die Kapazität ist erforderlich",
+      "SMSCAPACITY_REQUIRED": "Die SMS-Kapazität erforderlich ist",
+      "OPENCHANNELCAPACITY_REQUIRED": "Der Offene Kanal Kapazität erforderlich ist",
+      "SIPEXPIRES_REQUIRED": "Der SIP-Ablauf ist erforderlich",
+      "SIPPORT_REQUIRED": "Die SIP-Port erforderlich.",
+      "UNCONDITIONALNUMBER_REQUIRED": "Die Zielrufnummer ist erforderlich",
+      "NOREPLYNUMBER_REQUIRED": "Die Nummer ist keine Antwort erforderlich",
+      "BUSYNUMBER_REQUIRED": "Die besetzt ist erforderlich",
+      "USERNAME_MUST_VALID_PATTERN": "Der Benutzername muss gültige {{regex}}.",
+      "REMOTECONTROLPORT_REQUIRED": "Die Fernbedienung Anschluss erforderlich",
+      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Chat Kapazität muss größer als oder gleich",
+      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die E-Mail Kapazität muss größer als oder gleich",
+      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Fax Kapazität muss größer als oder gleich",
+      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der offene Kanal Kapazität muss größer als oder gleich",
+      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
       "AUTOANSWERDELAY_REQUIRED": "Pflichtfeld",
       "MONITOREXTENSION_REQUIRED": "Pflichtfeld",
       "ENCRYPTION": "SRTP (Secure Realtime Protocol) Verschlüsselung",
       "DTLSCERTFILE_REQUIRED": "Pflichtfeld",
       "DTLSPRIVATEKEY_REQUIRED": "Pflichtfeld",
-      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstaben, 1 Großbuchstaben, 1 Zahl und 1 Sonderzeichen enthalten",
+      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
       "ALLOWCODECS_REQUIRED": "Pflichtfeld",
       "CRUDPERMISSIONS_REQUIRED": "Pflichtfeld",
       "USERPROFILE_REQUIRED": "Pflichtfeld",
-      "PASSWORD_OLDPASSWORD_MATCH": "Neues und altes Passwort dürfen nicht gleich sein",
+      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden",
       "CONFIRM_REQUIRED": "Pflichtfeld",
       "WHATSAPPCAPACITY_REQUIRED": "Pflichtfeld"
     },
     "ACCOUNT": "Konto",
-    "VOICE": "Anrufe",
+    "VOICE": "Voice",
     "CREATED_AT": "Erstellt am",
     "ROLE": "Rolle",
-    "PERSONAL_INFO": "Persönliche Informationen",
+    "PERSONAL_INFO": "Persönliche Infos",
     "DESCRIPTION": "Beschreibung",
-    "CHANGE_AVATAR": "Avatar Ã¤ndern",
+    "CHANGE_AVATAR": "Avatar Ã¤ndern.",
     "GENERAL": "Allgemein",
-    "INTERNAL": "Intern",
-    "TRANSPORT": "Transport",
+    "INTERNAL": "Interne",
+    "TRANSPORT": "Verkehr",
     "ALLOWCODECS": "Codecs erlaubt",
     "HELP": {
       "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "HOST": "Wie finden Sie die Client-IP oder den Host-Namen um das Telefon zu registrieren, verwenden Sie das Schlüsselwort Dynamic anstelle von Host-IP.",
-      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall. Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
-      "SIPEXPIRES": "Standardeinstellung: 160",
+      "HOST": "Wie finden Sie die Client-IP oder den Host-Namen. Wenn Sie möchten, dass das Telefon zu registrieren, verwenden Sie das Schlüsselwort Dynamic anstelle von Host-IP.",
+      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall.Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
+      "SIPEXPIRES": "Standardeinstellung: 120",
       "SIPPORT": "Standardeinstellung: 5160",
-      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: eingehende Authentifizierung - Peer: für ausgehende Anrufe - Freund: Deckt beide Eigenschaften",
-      "CHATCAPACITY": "0 für unbegrenzt",
-      "MAILCAPACITY": "0 für unbegrenzt",
-      "FAXCAPACITY": "0 für unbegrenzt",
-      "SMSCAPACITY": "0 für unbegrenzt",
-      "OPENCHANNELCAPACITY": "0 für unbegrenzt",
-      "CALLGROUP": "Anrufgruppe",
-      "PICKUPGROUP": "Ãœbernahmegruppe",
+      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: Wird verwendet, um die Authentifizierung für eingehende - Peer: für ausgehende Anrufe - Freund: Deckt sowohl die Eigenschaften der oben genannten.",
+      "CHATCAPACITY": "Null bedeutet unbegrenzt.",
+      "MAILCAPACITY": "Null bedeutet unbegrenzt.",
+      "FAXCAPACITY": "Null bedeutet unbegrenzt.",
+      "SMSCAPACITY": "Null bedeutet unbegrenzt.",
+      "OPENCHANNELCAPACITY": "Null bedeutet unbegrenzt.",
+      "CALLGROUP": "Legt der Agent callgroup",
+      "PICKUPGROUP": "Definiert die Gruppen in denen der Agent Anrufe annehmen können",
       "USERNAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "ENCRYPTION": "SRTP (Secure Realtime Protocol) Verschlüsselung",
       "LAST_PASSWORD_RESET_AT": "Letztes Datum und Uhrzeit, zu der das Passwort geändert wurde. Wenn die Allgemeinen Einstellungen für Secure Suite aktiviert sind, läuft das Passwort nach 90 Tagen ab.",
       "DTLSCERTFILE": "Verknüpfen Sie mit dem gültigen TLS-Zertifikat (.crt-Datei). Standardwert: '/etc/pki/tls/certs/motion.crt'.",
       "DTLSPRIVATEKEY": "Verknüpfen Sie mit dem privaten Schlüssel des Zertifikats (.key-Datei). Standardwert: '/etc/pki/tls/private/motion.key'.",
       "SAVE_PERMISSIONS": "Jeder Abschnitt, der ausstehende Ã„nderungen enthält, wird gespeichert",
-      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Werkzeuge-Modul verwaltet",
+      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Modul Tools verwaltet",
       "APIKEY": "Verwenden Sie die Schaltfläche \"API-Schlüsselmanager\" in der Symbolleiste, um diesen Schlüssel zu verwalten",
-      "ENABLEAUTOMATICSCREENRECORDING": "Funktionalität ist nur für Sprachkanäle verfügbar",
-      "BLOCKED": "Zugriff sperren/entsperren",
-      "DISABLED": "Auswählen zum Aktivieren",
-      "WHATSAPPCAPACITY": "Maximale Anzahl gleichzeitiger Whatsapp-Interaktionen pro Agent (0 = unbegrenzt)",
+      "ENABLEAUTOMATICSCREENRECORDING": "Die Funktionalität ist nur für Sprachkanäle verfügbar",
+      "BLOCKED": "Zugriff sperren / entsperren",
+      "DISABLED": "Zum Deaktivieren auswählen / Zum Reaktivieren deaktivieren",
+      "WHATSAPPCAPACITY": "Maximale Anzahl gleichzeitiger Kanalinteraktionen pro Agent (0 = unbegrenzt)",
       "MASK_SENSITIVE_DATA": "Maskieren Sie vertrauliche Daten in der gesamten Anwendung (z. B. Telefonnummern und E-Mail-Adressen).",
       "WSS_PORT": "Standard: 8089"
     },
-    "NEW_PASSWORD": "Neues Passwort",
+    "NEW_PASSWORD": "Neues Kennwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "CHANGE_PASSWORD": "Passwort Ã¤ndern",
-    "CHANGEPASSWORD_AGENT": "Agent",
-    "CHANGEPASSWORD_USER": "Nutzer",
-    "CHANGEPASSWORD_TELEPHONE": "Telefon",
-    "LOGININPAUSE": "Pause nach Anmelden",
+    "CHANGEPASSWORD_AGENT": "Passwort Ã¤ndern",
+    "CHANGEPASSWORD_USER": "Passwort Ã¤ndern",
+    "CHANGEPASSWORD_TELEPHONE": "Passwort Ã¤ndern",
+    "LOGININPAUSE": "Geben Sie Ihren Benutzernamen und Ihr Passwort In der Pause",
     "HOST": "Host",
     "NAT": "NAT",
-    "CHANSPY": "Listen-In",
+    "CHANSPY": "ChanSpy",
     "OTHER_CHANNELS": "Andere Kanäle",
-    "CHATCAPACITY": "Kapazität Chats",
-    "MAILCAPACITY": "Kapazität E-Mail",
-    "FAXCAPACITY": "Kapazität Fax",
-    "SMSCAPACITY": "Kapazität SMSW",
-    "OPENCHANNELCAPACITY": "Kapazität offener Kanal",
+    "CHATCAPACITY": "Chat Kapazität",
+    "MAILCAPACITY": "E-Kapazität",
+    "FAXCAPACITY": "Fax Kapazität",
+    "SMSCAPACITY": "Sms-Kapazität",
+    "OPENCHANNELCAPACITY": "Offener Kanal Kapazität",
     "MOTIONBAR": "Motion Bar",
     "SETTINGS": "Einstellungen",
-    "AUTOANSWER": "Auto-Antwort",
+    "AUTOANSWER": "\"Autom. Antwort\"",
     "ENABLESETTINGS": "Einstellungen aktivieren",
     "CALL_FORWARDING": "Anrufweiterleitung",
-    "UNCONDITIONAL": "Generell",
-    "UNCONDITIONALNUMBER": "Nummer Weiterleitung generell",
-    "NOREPLY": "Bei keiner Antwort",
-    "NOREPLYNUMBER": "Nummer Weiterleitung keine Antwort",
-    "BUSY": "Bei Besetzt",
-    "BUSYNUMBER": "Nummer Weiterleitung Besetzt",
-    "REMOTE_CONTROL": "Remote-Nebenstelle",
-    "REMOTECONTROL": "Remote-Nebenstelle",
-    "REMOTECONTROLPORT": "Port Remote-Nebenstelle",
+    "UNCONDITIONAL": "Unbedingte",
+    "UNCONDITIONALNUMBER": "Uneingeschränkte Anzahl",
+    "NOREPLY": "Keine Antwort",
+    "NOREPLYNUMBER": "\"Keine Antwort\"-Nummer",
+    "BUSY": "Besetzt",
+    "BUSYNUMBER": "Nummer besetzt",
+    "REMOTE_CONTROL": "Fernbedienung",
+    "REMOTECONTROL": "Fernbedienung",
+    "REMOTECONTROLPORT": "Fernbedienung",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP-Ablaufdatum",
+    "SIPEXPIRES": "SIP läuft [sec]",
     "SIPPORT": "SIP-Port",
-    "PENALTY": "Verzögerung",
+    "PENALTY": "Strafe",
     "ACCOUNTNAME": "Account Name",
     "ADD_TELEPHONE": "Telefon hinzufügen",
     "EDIT_TELEPHONE": "Telefon bearbeiten",
     "DELETE_TELEPHONE": "Telefon löschen",
     "TEAMS": "Teams",
     "DELETE_TEAM": "Team löschen",
-    "AGENTADD_TEAM": "Agenten zu einem Team hinzufügen",
-    "EDIT_TEAM": "Team bearbeiten",
+    "AGENTADD_TEAM": "Hinzufügen von Agenten zu einer Gruppe",
+    "EDIT_TEAM": "Team bearbeiten.",
     "TYPE": "Typ",
-    "TELEPHONES": "Telefonnummern",
-    "CALLERID": "Anrufer-ID",
-    "ENABLERECORDING": "Aufzeichnung aktiv",
+    "TELEPHONES": "Telefone",
+    "CALLERID": "Die Anrufer-ID",
+    "ENABLERECORDING": "Aktivieren der Aufzeichnung",
     "STAFF": "Personal",
-    "ID": "ID",
+    "ID": "Id",
     "NEW_USER": "Neuer Benutzer",
     "NEW_AGENT": "Neuer Agent",
     "NEW_TELEPHONE": "Neues Telefon",
     "NEW_TEAM": "Neues Team",
     "ADD_TEAM": "Team hinzufügen",
-    "JOIN_QUEUE": "In Warteschlange beitreten",
+    "JOIN_QUEUE": "Melden Sie Warteschlange",
     "CAPACITY": "Kapazität",
     "AUTOINTERNAL": "Interne Nummer automatisch generieren",
-    "ADD_AGENT_TO_TEAM": "Agenten zum Team hinzufügen",
-    "TEAMADD_AGENT": "Zum Team hinzufügen",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ADD_AGENT_TO_TEAM": "Hinzufügen von Agenten zu einer Gruppe",
+    "TEAMADD_AGENT": "Agent zu Gruppe hinzufügen",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
     "PERMISSIONS": "Berechtigungen",
-    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
     "ALL_MODULES_AVAILABLE": "Alle Module verfügbar",
-    "CALLGROUP": "Gruppenanruf",
+    "CALLGROUP": "Gruppenruf",
     "PICKUPGROUP": "Ãœbernahmegruppe",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agenten hinzufügen - ausgehende Anrufe",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Agenten hinzufügen - eingehende Anrufe",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Agenten hinzufügen - Chat-Warteschlangen",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Agenten hinzufügen - E-Mail-Warteschlangen",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Agenten hinzufügen - SMS-Warteschlangen",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Agenten hinzufügen - offener Kanal-Warteschlangen",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Agenten hinzufügen - Fax-Warteschlangen",
-    "QUEUEADD_USER_VOICE_INBOUND": "Nutzer hinzufügen - eingehende Anrufe",
-    "QUEUEADD_USER_CHAT_INBOUND": "Nutzer hinzufügen - eingehende Chats",
-    "QUEUEADD_USER_MAIL_INBOUND": "Nutzer hinzufügen - eingehende E-Mails",
-    "QUEUEADD_USER_SMS_INBOUND": "Nutzer hinzufügen - eingehende SMS",
-    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Nutzer hinzufügen - eingehender offener Kanal",
-    "QUEUEADD_USER_FAX_INBOUND": "Nutzer hinzufügen - eingehende Faxe",
-    "ALL_TEAMS": "Alle Teams",
+    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agent in der Warteschlange Kampagnen hinzufügen",
+    "QUEUEADD_AGENT_VOICE_INBOUND": "Agent Voice Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_CHAT_INBOUND": "Agent zu chatten Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_MAIL_INBOUND": "Agent Mail Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_SMS_INBOUND": "Agent sms-Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Agent zu offenen Kanal Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_FAX_INBOUND": "Agent fax Warteschlangen hinzufügen",
+    "QUEUEADD_USER_VOICE_INBOUND": "Benutzer stimme Warteschlangen hinzufügen",
+    "QUEUEADD_USER_CHAT_INBOUND": "Benutzer zu chatten Warteschlangen hinzufügen",
+    "QUEUEADD_USER_MAIL_INBOUND": "Benutzer Mail Warteschlangen hinzufügen",
+    "QUEUEADD_USER_SMS_INBOUND": "Benutzer von SMS-Warteschlangen hinzufügen",
+    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Benutzer zum offenen Kanal Warteschlangen hinzufügen",
+    "QUEUEADD_USER_FAX_INBOUND": "Benutzer fax Warteschlangen hinzufügen",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Alle Warteschlangen - ausgehende Anrufe",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Gewählte Warteschlangen - ausgehende Anrufe",
-    "ALL_QUEUES_VOICE_INBOUND": "Alle Warteschlangen - eingehende Anrufe",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Ausgewählte Warteschlangen - eingehende Anrufe",
-    "ALL_QUEUES_CHAT_INBOUND": "Alle Warteschlangen - Chat",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Ausgewählte Warteschlangen - Chat",
-    "ALL_QUEUES_MAIL_INBOUND": "Alle Warteschlangen - E-Mail",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Ausgewählte Warteschlangen - E-Mail",
-    "ALL_QUEUES_SMS_INBOUND": "Alle Warteschlangen - SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "Ausgewählte Warteschlangen - SMS",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle Warteschlangen - offener Kanal",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Ausgewählte Warteschlangen - offener Kanal",
-    "ALL_QUEUES_FAX_INBOUND": "Alle Warteschlangen - Fax",
-    "SELECTED_QUEUES_FAX_INBOUND": "Ausgewählte Warteschlangen - Fax",
+    "ALL_QUEUES_VOICE_OUTBOUND": "Alle Queue Kampagnen",
+    "SELECTED_QUEUES_VOICE_OUTBOUND": "Ausgewählte Warteschlange Kampagnen",
+    "ALL_QUEUES_VOICE_INBOUND": "Alle Warteschlangen",
+    "SELECTED_QUEUES_VOICE_INBOUND": "Ausgewählte Voice Warteschlangen",
+    "ALL_QUEUES_CHAT_INBOUND": "Alle Chat Warteschlangen",
+    "SELECTED_QUEUES_CHAT_INBOUND": "Ausgewählte Chat-warteschlangen",
+    "ALL_QUEUES_MAIL_INBOUND": "Alle E-Mail-Warteschlangen",
+    "SELECTED_QUEUES_MAIL_INBOUND": "Ausgewählte Mail Warteschlangen",
+    "ALL_QUEUES_SMS_INBOUND": "Alle SMS-Warteschlangen",
+    "SELECTED_QUEUES_SMS_INBOUND": "Ausgewählte SMS-Warteschlangen",
+    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle offenen Kanal Warteschlangen",
+    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Ausgewählten Offenen Kanal Warteschlangen",
+    "ALL_QUEUES_FAX_INBOUND": "Alle Fax Warteschlangen",
+    "SELECTED_QUEUES_FAX_INBOUND": "Ausgewählte Fax Warteschlangen",
     "VOICEMAIL": "Voicemail",
-    "SHOWWEBCONTROL": "WebControl anzeigen",
+    "SHOWWEBCONTROL": "Anzeigen Web Control",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "CALLFORWARDING": "Anrufweiterleitung",
-    "DND": "Nicht stören",
-    "UNANSWEREDCALLBADGE": "Badge unbeantwortete Anrufe",
-    "ENABLEDTMFTONE": "DMFT-Töne aktivieren",
-    "AUTOANSWERDELAY": "Automatische Antwort nach",
+    "DND": "Während der Pause nicht stören",
+    "UNANSWEREDCALLBADGE": "Zeige unbeantwortete Anruf Abzeichen",
+    "ENABLEDTMFTONE": "Dtmf-Töne aktivieren",
+    "AUTOANSWERDELAY": "Auto Antwortverzögerung",
     "ENCRYPTION": "Verschlüsselung",
     "CHANNELS": "Kanäle",
     "CHAT": "Chat",
-    "SMS": "SMS",
+    "SMS": "Sms",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Nutzer zu Warteschlange für eingehende Anrufe hinzufügen",
-    "MONITOREXTENSION": "Nebenstelle des Nutzers aufzeichnen",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Benutzer in Warteschlange Kampagnen hinzufügen",
+    "MONITOREXTENSION": "Anrufe an die Nebenstelle des Benutzers aufzeichnen",
     "NO_PASSWORD_CHANGE": "Keine Passwortänderung",
     "SECURITY_SUITE": "Sicherheitssuite",
-    "LAST_PASSWORD_RESET_AT": "Passwort zuletzt zurückgesetzt am:",
-    "SIP_WEBRTC": "SIP/WebRTC",
-    "SETTINGS_WEBRTC": "Einstellungen",
+    "LAST_PASSWORD_RESET_AT": "Letzte Passwort zurücksetzen um",
+    "SIP_WEBRTC": "Schluck",
+    "SETTINGS_WEBRTC": "die Einstellungen",
     "WEBRTC": "WebRTC",
     "DTLSCERTFILE": "TLS-Zertifikat",
-    "DTLSPRIVATEKEY": "Privater Schlüssel des TLS-Zertifikats",
-    "EDITPERMISSIONS": "Berechtigungen verwalten",
-    "READANDEDIT": "Lesen und Bearbeiten",
-    "READANDEDITANDDELETE": "Lesen, Bearbeiten und Löschen",
-    "GENERAL_PERMISSIONS": "Allgemein",
-    "ENABLEMESSENGER": "Internen Messenger aktivieren",
-    "OUTBOUNDPROXY": "Outbound-Proxy",
+    "DTLSPRIVATEKEY": "Der private Schlüssel des TLS-Zertifikats",
+    "EDITPERMISSIONS": "Bearbeiten von Berechtigungen",
+    "READANDEDIT": "Lesen, Bearbeiten",
+    "READANDEDITANDDELETE": "Lesen, Bearbeiten, Löschen",
+    "GENERAL_PERMISSIONS": "Allgemeines",
+    "ENABLEMESSENGER": "Aktivieren Sie den internen Messenger",
+    "OUTBOUNDPROXY": "Oubound-Proxy",
     "PHONE": "Telefon",
     "MOBILE": "Handy, Mobiltelefon",
     "ALIAS": "Alias",
     "ENABLEJAWSINTEGRATION": "Jaws-Integration aktivieren",
     "PREFIXREQUIRED": "Präfix erforderlich",
-    "ENABLEVIDEORECORDING": "Videoaufzeichnung aktivieren",
+    "ENABLEVIDEORECORDING": "Aktiviere Videoaufnahme",
     "OLD_PASSWORD": "Altes Passwort",
     "ALL_CHATQUEUES": "Alle Chat-Warteschlangen",
     "ALL_CHATWEBSITES": "Alle Chat-Websites",
     "ALL_FAXACCOUNTS": "Alle Faxkonten",
-    "ALL_FAXQUEUES": "Alle Fax-Warteschlangen",
+    "ALL_FAXQUEUES": "Alle Faxwarteschlangen",
     "ALL_MAILACCOUNTS": "Alle E-Mail-Konten",
     "ALL_MAILQUEUES": "Alle E-Mail-Warteschlangen",
-    "ALL_OPENCHANNELACCOUNTS": "Alle offener Kanal-Konten",
-    "ALL_OPENCHANNELQUEUES": "Alle offener Kanal-Warteschlangen",
+    "ALL_OPENCHANNELACCOUNTS": "Alle offenen Channel-Konten",
+    "ALL_OPENCHANNELQUEUES": "Alle offenen Kanalwarteschlangen",
     "ALL_PROJECTS": "Alle Cally Square-Projekte",
     "ALL_QUEUECAMPAIGNS": "Alle Queue-Kampagnen",
     "ALL_SMSACCOUNTS": "Alle SMS-Konten",
     "SELECTED_CHATQUEUES": "Ausgewählte E-Mail-Warteschlangen",
     "SELECTED_CHATWEBSITES": "Ausgewählte Chat-Websites",
     "SELECTED_FAXACCOUNTS": "Ausgewählte Faxkonten",
-    "SELECTED_FAXQUEUES": "Ausgewählte Fax-Warteschlangen",
+    "SELECTED_FAXQUEUES": "Ausgewählte Faxwarteschlangen",
     "SELECTED_MAILACCOUNTS": "Ausgewählte E-Mail-Konten",
     "SELECTED_MAILQUEUES": "Ausgewählte Chat-Warteschlangen",
-    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offener Kanal-Konten",
-    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanal-Warteschlangen",
+    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offene Channel-Konten",
+    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanalwarteschlangen",
     "SELECTED_PROJECTS": "Ausgewählte Projekte von Cally Square",
     "SELECTED_QUEUECAMPAIGNS": "Ausgewählte Queue-Kampagnen",
     "SELECTED_SMSACCOUNTS": "Ausgewählte SMS-Konten",
     "SELECTED_SMSQUEUES": "Ausgewählte SMS-Warteschlangen",
-    "SELECTED_VOICEQUEUES": "Ausgewählte Anruf-Warteschlangen",
+    "SELECTED_VOICEQUEUES": "Ausgewählte Sprachwarteschlangen",
     "USERADD_CHATQUEUES": "Chat-Warteschlange zum Benutzer hinzufügen",
     "USERADD_CHATWEBSITES": "Chat-Website zum Benutzer hinzufügen",
     "USERADD_FAXACCOUNTS": "Faxkonto zum Benutzer hinzufügen",
-    "USERADD_FAXQUEUES": "Fax-Warteschlange zum Benutzer hinzufügen",
+    "USERADD_FAXQUEUES": "Faxwarteschlange zum Benutzer hinzufügen",
     "USERADD_MAILACCOUNTS": "E-Mail-Konto zum Benutzer hinzufügen",
     "USERADD_MAILQUEUES": "E-Mail-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELACCOUNTS": "Offener Kanal-Konto zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELQUEUES": "Offener Kanal-Warteschlange zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELACCOUNTS": "Open Channel-Konto zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELQUEUES": "Open Channel-Warteschlange zum Benutzer hinzufügen",
     "USERADD_PROJECTS": "Cally Square-Projekt zum Benutzer hinzufügen",
     "USERADD_QUEUECAMPAIGNS": "Queue-Kampagne zum Benutzer hinzufügen",
     "USERADD_SMSACCOUNTS": "SMS-Konto zum Benutzer hinzufügen",
     "USERADD_SMSQUEUES": "SMS-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_VOICEQUEUES": "Anruf-Warteschlange zum Benutzer hinzufügen",
-    "HOTDESK": "Wechselnder Arbeitsplatz",
+    "USERADD_VOICEQUEUES": "Sprachwarteschlange zum Benutzer hinzufügen",
+    "HOTDESK": "Heißer Schreibtisch",
     "ADD_USERPROFILE": "Benutzerprofil hinzufügen",
-    "CANCEL": "Abbrechen",
+    "CANCEL": "Stornieren",
     "CLONE_USERPROFILE": "Benutzerprofil klonen",
     "CLOSE": "Schließen",
     "CONFIRM": "Bestätigen",
     "PERMISSIONS_SELECTED_RESOURCES": "Ausgewählte Ressourcen",
     "PERMISSIONS_SELECT_REPORT_TYPE": "Wählen Sie den Berichtstyp",
     "PERMISSIONS_SELECT_SECTION": "Wählen Sie einen Abschnitt aus",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Kein Zugriff auf den ausgewählten Bereich",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Sie dürfen nicht auf den ausgewählten Bereich zugreifen",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Unbefugte Handlung",
-    "PERMISSIONS_WARNING_CLOSE": "Es wurden Ã„nderungen nicht gespeichert. Fortfahren?",
+    "PERMISSIONS_WARNING_CLOSE": "Du hast nicht gespeicherte Ã„nderungen. Möchten Sie den Vorgang wirklich ohne Speichern beenden?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Alle {{sectionName}} Unterabschnitte und ihre Ressourcen werden aktiviert. Sind Sie sicher, dass Sie fortfahren möchten?",
-    "QUEUES_ASSOCIATION": "{{channel}} Warteschlangen-Zuweisung",
+    "QUEUES_ASSOCIATION": "{{channel}} Queues Association",
     "READ_PERMISSION": "Lesen",
     "REPORT_TYPE": "Berichtstyp",
     "SECTIONS": "Abschnitte",
     "SUMMARY": "Zusammenfassung",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
     "USERPROFILE": "Benutzerprofil",
     "USERPROFILES": "Benutzerprofil",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Keine Berechtigung zum Erstellen der Ressource",
-    "VIDEOSUPPORT": "Unterstützt Video",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Sie dürfen die Ressource nicht erstellen",
+    "VIDEOSUPPORT": "Video-Unterstützung",
     "APIKEY": "API-Schlüssel",
     "APIKEYMANAGER_USER": "API Key Manager",
-    "GENERATE": "Erneut generieren",
+    "GENERATE": "(Regenerieren",
     "MANAGE_API_KEY": "API-Schlüsselmanager",
-    "REMOVE": "Entfernen",
-    "ENABLEAUTOMATICSCREENRECORDING": "Automatische Bildschirmaufzeichnung aktivieren",
-    "ENABLESCREENRECORDINGBYAGENT": "Bildschirmaufzeichnung durch Agenten aktivieren",
-    "ENABLEVIDEOECORDING": "Videoaufzeichnung aktivieren",
+    "REMOVE": "Löschen",
+    "ENABLEAUTOMATICSCREENRECORDING": "Aktivieren Sie die automatische Bildschirmaufnahme",
+    "ENABLESCREENRECORDINGBYAGENT": "Aktivieren Sie die Bildschirmaufzeichnung nach Agent",
+    "ENABLEVIDEOECORDING": "Videoaufnahme aktivieren",
     "BLOCKED": "Gesperrt",
     "DISABLED": "Deaktiviert",
-    "REGENERATE": "Erneut generieren",
+    "REGENERATE": "Regenerieren",
     "ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-Warteschlangen",
     "ALL_WHATSAPPACCOUNTS": "Alle WhatsApp-Konten",
     "ALL_WHATSAPPQUEUES": "Alle Whataspp-Warteschlangen",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agenten zu WhatsApp-Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agent zu WhatsApp-Warteschlangen hinzufügen",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Benutzer zu WhatsApp-Warteschlangen hinzufügen",
     "SELECTED_QUEUES_WHATSAPP_INBOUND": "Ausgewählte WhatsApp-Warteschlangen",
     "SELECTED_WHATSAPPACCOUNTS": "Ausgewählte WhatsApp-Konten",
     "SELECTED_WHATSAPPQUEUES": "Ausgewählte WhatsApp-Warteschlangen",
     "USERADD_WHATSAPPACCOUNTS": "WhatsApp-Konto zum Benutzer hinzufügen",
-    "USERADD_WHATSAPPQUEUES": "Whataspp-Warteschlange dem Benutzer hinzufügen",
+    "USERADD_WHATSAPPQUEUES": "Fügen Sie dem Benutzer die Whataspp-Warteschlange hinzu",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPPCAPACITY": "Kapazität Whatsapp",
+    "WHATSAPPCAPACITY": "WhatsApp Connector-Kapazität",
     "MASK_SENSITIVE_DATA": "Sensitive Daten maskieren",
     "WSS_PORT": "WSS-Port",
     "ATTACHMENTS": "Anhänge",
     "CALLYSQUARE_RECORDINGS": "Cally Square-Aufnahmen",
-    "CONTACT_MANAGER_LISTS": "Kontaktmanager Listen",
+    "CONTACT_MANAGER_LISTS": "Kontaktmanagerlisten",
     "DOWNLOADS": "Downloads",
     "DOWNLOAD_PERMISSIONS": "Download-Berechtigungen",
     "JSCRIPTY_SESSIONS": "Jscripty-Sitzungen",
     "OMNICHANNEL_INTERACTIONS": "Omnichannel-Interaktionen",
-    "SCREEN_RECORDINGS": "Bildschirmaufzeichnungen",
-    "VOICE_RECORDINGS": "Sprachaufzeichnungen"
+    "SCREEN_RECORDINGS": "Bildschirmaufnahmen",
+    "VOICE_RECORDINGS": "Sprachaufnahmen"
   }
 }
index d62768d..6207bf0 100644 (file)
     "BOT": "Voicebot",
     "CALL": "Anruf",
     "NAME": "Name",
-    "TRUNKS": "Trunks",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "TRUNKS": "Amtsleitungen",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "ERRORS": {
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "HOST_REQUIRED": "Host wird benötigt",
-      "DEFAULTUSER_REQUIRED": "Standardbenutzer ist erforderlich",
-      "CALLERID_REQUIRED": "Anrufer-ID ist erforderlich",
-      "KEY_REQUIRED": "Schlüssel ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht Ã¼berein",
-      "VALIDITYSTART_REQUIRED": "Startzeit ist erforderlich",
-      "VALIDITYEND_REQUIRED": "Endzeit ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "HOST_REQUIRED": "Der Host wird benötigt",
+      "DEFAULTUSER_REQUIRED": "Der Standardbenutzer ist erforderlich",
+      "CALLERID_REQUIRED": "Die Anrufer-ID ist erforderlich",
+      "KEY_REQUIRED": "Der Schlüssel ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Kennwörter nicht Ã¼bereinstimmen",
+      "VALIDITYSTART_REQUIRED": "Die Startzeit ist erforderlich",
+      "VALIDITYEND_REQUIRED": "Das Ende der Zeit ist erforderlich",
       "MONTHDAY_REQUIRED": "Tag des Monats ist erforderlich",
-      "HOUR_REQUIRED": "Stunde ist erforderlich",
-      "CONTENT_REQUIRED": "Inhalt ist erforderlich",
-      "URL_REQUIRED": "URL ist erforderlich",
-      "URL_MUST_VALID_URL": "URL ungültiges Format",
-      "APPLICATION_REQUIRED": "Anwendung ist erforderlich",
-      "ARGUMENTS_REQUIRED": "Bedingungen sind erforderlich",
-      "NAME_MUST_VALID_PATTERN": "Name ungültiges Format",
-      "POLLING_INTERVAL_REQUIRED": "Abfrageintervall ist erforderlich",
-      "TITLE_REQUIRED": "Titel ist erforderlich",
-      "EMAILADDRESS_REQUIRED": "E-Mail Adresse ist erforderlich",
-      "EVENTVARIABLES_REQUIRED": "Variablen sind erforderlich",
-      "TYPE_REQUIRED": "Typ ist erforderlich",
-      "VALUE_REQUIRED": "Wert ist erforderlich",
-      "ACCOUNT_REQUIRED": "Konto ist erforderlich",
-      "FIELD_REQUIRED": "Feld ist erforderlich",
-      "INTEGRATION_REQUIRED": "Integration ist erforderlich",
-      "LIST_REQUIRED": "Liste ist erforderlich",
-      "TEMPLATE_REQUIRED": "Vorlage ist erforderlich",
-      "AUTOCREATECONTACT_REQUIRED": "Kontakterstellung erforderlich",
-      "OUTBOUNDROUTE_REQUIRED": "Ausgehende Route erforderlich",
-      "QUEUE_REQUIRED": "Warteschlange erforderlich",
-      "TIME_RANGE_TO_REQUIRED": "Zeitintervall erforderlich",
-      "WEEK_DAYS_TO_REQUIRED": "Wochentage erforderlich",
-      "MONTH_DAYS_TO_REQUIRED": "Tage des Monats erforderlich",
-      "MONTH_TO_REQUIRED": "Monat erforderlich",
+      "HOUR_REQUIRED": "Die Stunde ist erforderlich",
+      "CONTENT_REQUIRED": "Der Inhalt ist erforderlich",
+      "URL_REQUIRED": "Die URL ist erforderlich",
+      "URL_MUST_VALID_URL": "Die URL muss gültig sein",
+      "APPLICATION_REQUIRED": "Die Anwendung ist erforderlich",
+      "ARGUMENTS_REQUIRED": "Die Argumente sind erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden",
+      "POLLING_INTERVAL_REQUIRED": "Das Abfrageintervall ist erforderlich",
+      "TITLE_REQUIRED": "Der Titel ist erforderlich",
+      "EMAILADDRESS_REQUIRED": "Die E-Mail Adresse ist erforderlich",
+      "EVENTVARIABLES_REQUIRED": "Pflichtfeld",
+      "TYPE_REQUIRED": "Pflichtfeld",
+      "VALUE_REQUIRED": "Pflichtfeld",
+      "ACCOUNT_REQUIRED": "Pflichtfeld",
+      "FIELD_REQUIRED": "Pflichtfeld",
+      "INTEGRATION_REQUIRED": "Pflichtfeld",
+      "LIST_REQUIRED": "Pflichtfeld",
+      "TEMPLATE_REQUIRED": "Pflichtfeld",
+      "AUTOCREATECONTACT_REQUIRED": "Pflichtfeld",
+      "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
+      "QUEUE_REQUIRED": "Pflichtfeld",
+      "TIME_RANGE_TO_REQUIRED": "Pflichtfeld",
+      "WEEK_DAYS_TO_REQUIRED": "Pflichtfeld",
+      "MONTH_DAYS_TO_REQUIRED": "Pflichtfeld",
+      "MONTH_TO_REQUIRED": "Pflichtfeld",
       "TIME_RANGE_FROM_INVALID": "Falsches Format",
       "TIME_RANGE_TO_INVALID": "Falsches Format",
-      "ACTION_REQUIRED": "Aktion erforderlich",
-      "CONFIGURATION_REQUIRED": "Konfiguration erforderlich",
-      "PROJECT_REQUIRED": "Projekt erforderlich",
-      "LOCATION_REQUIRED": "Standort erforderlich",
-      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "FONTSIZE_REQUIRED": "Schriftgröße erforderlich",
-      "PATH_REQUIRED": "Pfad erforderlich",
-      "FORMAT_REQUIRED": "Format erforderlich",
-      "REPORT_REQUIRED": "Report erforderlich",
-      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "REFRESH_REQUIRED": "Aktualisieren erforderlich",
-      "TITLE_MAX_LENGTH": "Titel darf eine maximale Länge haben von {{max}} ",
-      "NAME_MAX_LENGTH": "Name darf eine maximale Länge haben von {{max}} ",
-      "OUTPUT_REQUIRED": "Ausgabe erforderlich",
-      "REPORTFOLDER_REQUIRED": "Ordner erforderlich",
-      "REPORTSUBFOLDER_REQUIRED": "Unterordner erforderlich",
-      "REPORTTYPE_REQUIRED": "Reporttyp erforderlich",
-      "AGENT_REQUIRED": "Agent erforderlich",
-      "INFO_REQUIRED": "Information erforderlich",
-      "SCRIPT_REQUIRED": "Skript erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "TIMEOUT_REQUIRED": "Timeout erforderlich",
-      "AUTOCREATE_FIELD_REQUIRED": "Automatisches Erstellen erforderlich"
+      "ACTION_REQUIRED": "Pflichtfeld",
+      "CONFIGURATION_REQUIRED": "Pflichtfeld",
+      "PROJECT_REQUIRED": "Pflichtfeld",
+      "LOCATION_REQUIRED": "Pflichtfeld",
+      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "FONTSIZE_REQUIRED": "Pflichtfeld",
+      "PATH_REQUIRED": "Pflichtfeld",
+      "FORMAT_REQUIRED": "Pflichtfeld",
+      "REPORT_REQUIRED": "Pflichtfeld",
+      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "REFRESH_REQUIRED": "Pflichtfeld",
+      "TITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "NAME_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "OUTPUT_REQUIRED": "Pflichtfeld",
+      "REPORTFOLDER_REQUIRED": "Pflichtfeld",
+      "REPORTSUBFOLDER_REQUIRED": "Pflichtfeld",
+      "REPORTTYPE_REQUIRED": "Pflichtfeld",
+      "AGENT_REQUIRED": "Pflichtfeld",
+      "INFO_REQUIRED": "Pflichtfeld",
+      "SCRIPT_REQUIRED": "Pflichtfeld",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "TIMEOUT_REQUIRED": "Pflichtfeld",
+      "AUTOCREATE_FIELD_REQUIRED": "Pflichtfeld"
     },
     "HOST": "Host",
-    "SECRET": "Secret",
-    "DEFAULTUSER": "Standardnutzer",
+    "SECRET": "Geheimnis",
+    "DEFAULTUSER": "Default User",
     "DESCRIPTION": "Beschreibung",
-    "ADD_TRUNK": "Trunk hinzufügen",
+    "ADD_TRUNK": "Amtsleitung hinzufügen",
     "HELP": {
-      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Systemadministrator.",
+      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Anbieter.",
       "HOST": "Die Domäne oder den Hostnamen für den Anbieter.",
       "DEFAULTUSER": "Authentifizierung Benutzernamen, wenden Sie sich an den Anbieter.",
       "CALLERID": "Die Anrufer-ID im Format \"name\" <Nummer>.",
-      "REGISTRY": "Die SIP-Registry, die von einigen Anbietern, die in der Regel defaultuser:Secret@host.",
-      "FROMDOMAIN": "Legt Standardeinstellungen von:domain in SIP-Nachrichten als SIP-ua (Client).",
-      "FROMUSER": "SIP-Nutzereinstellungen. Nur gültig für den Typ=peer.",
+      "REGISTRY": "Die amtsleitung Registry, die von einigen Anbietern, die in der Regel defaultuser:Secret@host.",
+      "FROMDOMAIN": "Legt Standardeinstellungen von:domain in SIP-Nachrichten als SIP-ua (Client). Einige Ziele können die obligatorische Identität Name anstatt nur die IP-Adresse.",
+      "FROMUSER": "Rovider wie ihr sie kennt. Dies ist der Benutzer, um anstelle der Anrufer-ID beim Tätigen von Anrufen zu anderen Peer (SIP-Proxy). Nur gültig für den Typ=peer.",
       "OUTBOUNDPROXY": "IP-Adresse oder DNS-SRV-Ressourceneintrag name (ausgenommen die _sip._udp-Präfix): SRV Name, den Hostnamen oder die IP-Adresse des ausgehenden SIP-Proxy. Senden Sie ausgehende Signale zu diesem Proxy und nicht direkt an die Geräte. Nur gültig für den Typ=peer.",
-      "PORT": "Die Nummer des Ports, zu dem Sie eine Verbindung herstellen möchten.",
-      "CONTEXT": "Die nutzbaren Kontext für den Trunk.",
-      "TYPE": "Definiert die SIP-Rolle innerhalb der Anwendung. User: Authentifizierung für eingehende Verbindungen; Peer: für ausgehende Verbindungen - Freund: Beide Eigenschaften werden erfüllt",
-      "DTMFMODE": "Sendeart von DTMF-Tönen (Dual-Tone Multi-Frequency): RFC2833: Standardeinstellung, DMTF wird Ã¼ber RTP gesendet (außerhalb des Audiostreams) - INBAND DTMF wird innerhalb des Audiostreams gesendet, Ã¼ber die Lautsprecher hörbar. Erfordert eine höhere CPU-Last.",
-      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall. Wenn \"Nein\", ignoriert der Asterisk alle anderen Einstellungen und die nat=No.",
+      "PORT": "Die Nummer des Ports, zu dem Sie eine Verbindung herstellen möchten wir auf der anderen Seite.",
+      "CONTEXT": "Die nutzbaren Rahmen für den Trunk.",
+      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: Wird verwendet, um die Authentifizierung für eingehende - Peer: für ausgehende Anrufe - Freund: Deckt sowohl die Eigenschaften der oben genannten.",
+      "DTMFMODE": "Wie DTMF (Dual-Tone Multi-Frequency): RFC2833: Die Standardeinstellung, die DTMF gesendet mit RTP, aber außerhalb der Audio Stream. INBAND DTMF gesendet wird: Die in der Audio Stream des aktuellen Gesprächs, wird Ã¼ber die Lautsprecher hörbar. Erfordert eine hohe CPU-Last. INFO: Diese Methode ist zwar sehr zuverlässig, es ist nicht für alle TK-Anlagen und viele SIP-Trunk.",
+      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall.Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
       "QUALIFY": "Legt fest, wann die SIP erreichbar ist.",
       "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz.",
-      "INSECURE": "Erlaubt unsichere Einstellungen für peer",
-      "CALL_LIMIT": "Maximale Anzahl aller gleichzeitigen ein- und ausgehenden Anrufe",
-      "DIRECTMEDIA": "Der Asterisk versucht, den RTP-Stream im Standard direkt zwischen dem Anrufer und dem Angerufenen aufzubauen. Manche Geräte (z.B. Firewalls) unterstützen diese Funktion nicht. Daher kann hier eine Umstellung erfolgen.",
-      "CALLCOUNTER": "Aktivieren der Anrufzähler für die Geräte",
-      "ADD_PHONE_TO_URI": "Fügt im SIP den user=phone zur URL hinzu",
-      "TRUST_REMOTE_PARTY_ID": "Soll der URL der anderen Partei vertraut werden?",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Soll die ID der anderen Partei gesendet werden?",
-      "ENCRYPTION": "Legt fest, ob die Verbindung Ã¼ber SRTP verschlüsselt vorliegt. Sollte das peer kein SRTP unterstützen, werden Anrufe mit dem HANGUPCAUSE=58 beendet.",
+      "INSECURE": "Legt fest, wie Verbindungen mit Peer, dass unsichere Einstellungen.",
+      "CALL_LIMIT": "Die Anzahl der eingehenden und abgehenden Anrufe, die zu einer Zeit.",
+      "DIRECTMEDIA": "Sternchen standardmäßig versucht, die RTP-Stream direkt aus den Anrufer an den Angerufenen. Einige Geräte werden nicht unterstützt wird (vor allem, wenn einer von Ihnen hinter einem NAT-Gerät befindet). Die Standardeinstellung ist Ja. Wenn Sie alle Clients hinter einem NAT-Gerät befindet, oder aus einem anderen Grund nicht möchten, dass Sternchen in der Audiospur, können Sie diese ausschalten.",
+      "CALLCOUNTER": "Aktivieren Sie die Zähler auf Geräte.",
+      "ADD_PHONE_TO_URI": "Legen Sie fest, ob die Provider ';user=Telefon\" an den URL.",
+      "TRUST_REMOTE_PARTY_ID": "Wenn Remote-Party-ID definieren sollte.",
+      "SEND_REMOTE_PARTY_ID_HEADER": "Status",
+      "ENCRYPTION": "Festlegen, ob die Remote-Party-ID gesendet werden soll (standardmäßig auf Nein).",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "OTHERFIELDS": "Weitere Felder hinzufügen, in der Trunks conf-Dateien. In Sternchen format (key=value), jedes Feld auf einer Zeile.",
-      "EMAILADDRESS": "Mehrere Adressen mit Komma getrennt eingeben: (z. b. John.doe@xcally.com, jane.miller@xcally.com)",
+      "OTHERFIELDS": "Weitere Felder hinzufügen, in der Amtsleitungen conf-Dateien. In Sternchen format (key=value), jedes Feld auf einer Zeile.",
+      "EMAILADDRESS": "Sie können mehrere Adressen mit Kommata (z. b. John.doe@xcally.com, jane.miller@xcally.com)",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "EVENTVARIABLES": "Fügt die Event-Variablen der URL hinzu",
+      "EVENTVARIABLES": "Wenn aktiviert, Es fügt alle Event Variablen an die Url",
       "T38PT_UDPTL": "Es: Ja, Redundanz, maxdatagram = 400",
       "EMAILBCCADDRESS": "Fügen Sie eine oder mehrere durch Kommas getrennte Adressen hinzu (z. B. john.doe@xcally.com, jane.miller@xcally.com).",
       "EMAILCCADDRESS": "Fügen Sie eine oder mehrere durch Kommas getrennte Adressen hinzu (z. B. john.doe@xcally.com, jane.miller@xcally.com).",
-      "BODY": "(RAW-JSON-Format) Wenn nicht ausgefüllt, wird der Standardwert verwendet",
+      "BODY": "Wenn nicht ausgefüllt, wird der Standardwert gesendet",
       "INFO": "Titel einfügen",
       "SCRIPT": "Skript einfügen",
       "SCRIPT_INFO": "Fügen Sie eine Beschreibung für das Skript ein",
       "SCRIPT_TYPE": "Geben Sie eine Typologie für das Skript ein (zB curl, bash ...)",
-      "HEADERS": "Hinweis: Der Header-Abschnitt muss im RAW-JSON-Format {\"key\": \"value\"} vorliegen.\nHinweis: Wenn nicht ausgefüllt, wird der Standardwert verwendet",
-      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen - Standardwert ist 5."
+      "HEADERS": "Hinweis: Der Header-Abschnitt muss im RAW-JSON-Format {\"key\": \"value\"} vorliegen.\nHinweis: Wenn nicht ausgefüllt, wird der Standardwert gesendet",
+      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen und der Standardwert ist 5."
     },
     "EDIT_TRUNK": "Trunk bearbeiten",
-    "DELETE_TRUNK": "Trunk löschen",
+    "DELETE_TRUNK": "Löschen Sie Trunk",
     "CREATED_AT": "Erstellt am",
     "SETTINGS": "Einstellungen",
-    "ADVANCED": "Erweitert",
+    "ADVANCED": "Erweiterte",
     "OTHER": "Andere",
     "ACTIVE": "Aktiv",
     "CONTEXT": "Kontext",
-    "CALLERID": "Anrufer-ID",
+    "CALLERID": "Die Anrufer-ID",
     "TYPE": "Typ",
-    "DTMFMODE": "DTMF-Modus",
+    "DTMFMODE": "Mfv-Modus",
     "NAT": "NAT",
     "QUALIFY": "Qualifizieren",
     "ALLOWCODECS": "Codecs erlaubt",
     "INSECURE": "Unsicher",
     "REGISTRY": "Registrierung",
-    "DIRECTMEDIA": "Direct Media",
+    "DIRECTMEDIA": "Direkte Medien",
     "CALLCOUNTER": "Anrufzähler",
-    "FROMDOMAIN": "From Domain",
-    "FROMUSER": "From Nutzer",
-    "OUTBOUNDPROXY": "Outbound Proxy",
-    "ADD_PHONE_TO_URI": "Telefon zur URL hinzufügen",
-    "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Remote Party im Header senden",
+    "FROMDOMAIN": "Aus der Domäne",
+    "FROMUSER": "Vom Benutzer",
+    "OUTBOUNDPROXY": "Ausgehender Proxy",
+    "ADD_PHONE_TO_URI": "Telefon hinzufügen, URL",
+    "TRUST_REMOTE_PARTY_ID": "Vertrauen Gegenstelle ID",
+    "SEND_REMOTE_PARTY_ID_HEADER": "Senden einer Partner-ID Header",
     "ENCRYPTION": "Verschlüsselung",
-    "PORT": "Port",
-    "TRANSPORT": "Transport",
+    "PORT": "Hafen",
+    "TRANSPORT": "Verkehr",
     "SAVE": "Speichern",
     "VARIABLES": "Variablen",
     "ADD_VARIABLE": "Variable hinzufügen",
     "EDIT_VARIABLE": "Variable bearbeiten",
     "DELETE_VARIABLE": "Variable löschen",
-    "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECTED": "Ausgewählte",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "TAGS": "Tags",
-    "ADD_TAG": "Tag hinzufügen",
-    "EDIT_TAG": "Tag bearbeiten",
-    "DELETE_TAG": "Tag löschen",
+    "ADD_TAG": "Variable hinzufügen",
+    "EDIT_TAG": "Variable bearbeiten",
+    "DELETE_TAG": "Variable löschen",
     "PAUSES": "Pausen",
     "ADD_PAUSE": "Pause hinzufügen",
     "EDIT_PAUSE": "Pause bearbeiten",
     "DELETE_PAUSE": "Pause löschen",
-    "ADD_CANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_CANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_CANNEDANSWER": "Testvorlage löschen",
+    "ADD_CANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_CANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "DELETE_CANNEDANSWER": "Vordefinierte Antwort löschen",
     "KEY": "Schlüssel",
     "VALUE": "Wert",
-    "SOUNDS": "Audiodateien",
-    "EDIT_SOUND": "Audiodatei bearbeiten",
-    "DELETE_SOUND": "Audiodatei löschen",
-    "FINISH": "Abschließen",
+    "SOUNDS": "Sounds",
+    "EDIT_SOUND": "Ton bearbeiten",
+    "DELETE_SOUND": "Sound löschen",
+    "FINISH": "Fertig stellen",
     "DROP_TO_UPLOAD": "Drop hochladen",
     "TRIGGERS": "Trigger",
-    "EDIT_TRIGGER": "Trigger bearbeiten",
-    "DELETE_TRIGGER": "Trigger löschen",
+    "EDIT_TRIGGER": "Auslöser bearbeiten",
+    "DELETE_TRIGGER": "Auslöser löschen",
     "ADD_TRIGGER": "Trigger hinzufügen",
     "DELETE": "Löschen",
-    "AUTOMATIONS": "Automation",
-    "EDIT_AUTOMATION": "Automation bearbeiten",
+    "AUTOMATIONS": "Automatisierungen",
+    "EDIT_AUTOMATION": "Bearbeiten einer Automation",
     "DELETE_AUTOMATION": "Automation löschen",
     "ADD_AUTOMATION": "Automation hinzufügen",
     "INTERVALS": "Intervalle",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_INTERVAL": "Intervall löschen",
+    "DELETE_INTERVAL": "Intervall für Löschen.",
     "ADD_INTERVAL": "Intervall hinzufügen",
     "TOOLS": "Werkzeuge",
-    "ID": "ID",
+    "ID": "Id",
     "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Audiodatei herunterladen",
-    "UPLOAD_SOUND": "Audiodatei hochladen",
+    "DOWNLOAD_SOUND": "Download Sound",
+    "UPLOAD_SOUND": "Werkzeuge",
     "CHANNEL": "Kanal",
     "NEW_TRIGGER": "Neue Trigger",
     "GENERAL": "Allgemein",
     "STATUS": "Status",
     "CONDITIONS&ACTIONS": "Bedingungen und Aktionen",
-    "ALLCONDITIONS": "Alle Bedingungen werden erfüllt",
-    "ANYCONDITIONS": "Einige Bedingungen werden erfüllt",
-    "ACTIONS": "Aktionen",
+    "ALLCONDITIONS": "Alle diese Bedingungen erfüllen:",
+    "ANYCONDITIONS": "Treffen diese Voraussetzungen:",
+    "ACTIONS": "Aktionen:",
     "NEW_AUTOMATION": "Neue Automation",
     "TIMEOUT": "Timeout",
     "PEERSTATUS": "Peer Status",
-    "CALL_LIMIT": "Anrufe limitieren",
-    "OTHERFIELDS": "Weitere Felder",
+    "CALL_LIMIT": "Anrufe beschränken",
+    "OTHERFIELDS": "Andere Felder",
     "NEW_VARIABLE": "Neue Variable",
     "NEW_TAG": "Neuer Tag",
     "NEW_PAUSE": "Neue Pause",
-    "NEW_CANNEDANSWER": "Neue Textvorlage",
+    "NEW_CANNEDANSWER": "Neue vordefinierte Antwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
-    "NEW_TRUNK": "Neuer Trunk",
-    "FROM": "von",
-    "TO": "an",
-    "WEEKDAY": "Wochentag",
-    "MONTHDAY": "Monatstag",
+    "NEW_TRUNK": "Neue Leitung",
+    "FROM": "Von",
+    "TO": "Zu",
+    "WEEKDAY": "Woche Tag",
+    "MONTHDAY": "Monat Tag",
     "MONTH": "Monat",
     "ALWAYS": "Immer",
     "MON": "Montag",
     "PASSWORD": "Passwort",
     "CUSTOMDASHBOARDS": "Benutzerdefinierte Dashboards",
     "NEW_CUSTOMDASHBOARD": "Neues benutzerdefiniertes Dashboard",
-    "ADD_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard hinzufügen",
-    "EDIT_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard bearbeiten",
-    "DELETE_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard löschen",
-    "SCHEDULER": "Berichtsplanung",
-    "NEW_SCHEDULE": "Neue Planung",
-    "ADD_SCHEDULE": "Planung hinzufügen",
-    "EDIT_SCHEDULE": "Planung bearbeiten",
-    "DELETE_SCHEDULE": "Planung löschen",
+    "ADD_CUSTOMDASHBOARD": "Hinzufügen von benutzerdefinierten Dashboard",
+    "EDIT_CUSTOMDASHBOARD": "Benutzerdefinierte Dashboards bearbeiten",
+    "DELETE_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard löschen.",
+    "SCHEDULER": "Scheduler",
+    "NEW_SCHEDULE": "Neuer Zeitplan",
+    "ADD_SCHEDULE": "Zeitplan hinzufügen",
+    "EDIT_SCHEDULE": "Zeitplan bearbeiten",
+    "DELETE_SCHEDULE": "Zeitplan löschen",
     "SENDMAIL": "E-Mail senden",
     "CONFIGURATION": "Konfiguration",
     "MAIL": "E-Mail",
     "REPORTTYPE": "Berichtstyp",
     "REPORT": "Bericht",
-    "OUTPUT": "Ausgabe",
+    "OUTPUT": "Ausgang",
     "EXECUTEON": "Ausführung",
-    "REPORTRANGE": "Bereich",
+    "REPORTRANGE": "Berichtsbereich",
     "VALIDITYSTART": "Startzeit",
     "VALIDITYEND": "Endzeit",
     "EXECUTEEVERY": "Alle ausführen",
     "MONTHLY": "Monatlich",
     "PREVIOUS_DAY": "Vorheriger Tag",
     "LAST_SEVEN_DAYS": "Letzte sieben Tage",
-    "LAST_THIRTY_DAYS": "Letzte 30 Tage",
+    "LAST_THIRTY_DAYS": "33 verbotenen letzte Tage",
     "LAST_MONTH": "Letzter Monat",
-    "WEEKDAYS": "Wochentage",
+    "WEEKDAYS": "Woche Tage",
     "HOUR": "Stunde",
     "DEFAULT": "Standard",
     "CSV": "CSV",
     "15MIN": "15 Minuten",
     "30MIN": "30 Minuten",
     "1H": "1 Stunde",
-    "VOICE": "Sprachanrufe",
+    "VOICE": "Voice",
     "CHAT": "Chat",
     "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "ADD_ALLCONDITION": "Bedingung hinzufügen",
     "EDIT_ACTION": "Aktion bearbeiten",
     "DELETE_ACTION": "Aktion löschen",
-    "NEW_ACTION": "Neue Aktion",
+    "NEW_ACTION": "Neue Maßnahme",
     "ADD_ACTION": "Aktion hinzufügen",
     "QUEUE": "Warteschlange",
     "CALL_STATUS": "Anrufstatus",
-    "OUTBOUNDROUTE": "Ausgehende Routen",
-    "EQUALS": "ist gleich",
-    "NOT_EQUALS": "ist nicht gleich",
-    "CONTACT_MANAGER": "Kontaktmanager",
+    "OUTBOUNDROUTE": "Abgehende Routen",
+    "EQUALS": "Ist gleich",
+    "NOT_EQUALS": "Nicht gleich",
+    "CONTACT_MANAGER": "Contacts Manager",
     "INTEGRATIONS": "Integrationen",
     "MOTIONBAR": "Motion Bar",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL-Weiterleitung",
-    "WEB_POPUP": "Web-Popup",
+    "URL_FORWARD": "URL Weiterleitung",
+    "WEB_POPUP": "Web Popup",
     "LIST": "Liste",
     "INTEGRATION": "Integration",
     "TEMPLATE": "Vorlage",
     "OPERATOR": "Betreiber",
     "NO_INTERVALS_AVAILABLE": "Keine Intervalle zur Verfügung",
     "YES": "Ja",
-    "NO": "Nein",
+    "NO": "Keine",
     "SUBJECT": "Betreff",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
     "BROWSER": "Browser",
     "INTERVAL": "Intervall",
-    "INFO": "Information",
+    "INFO": "Info",
     "TIME_RANGE": "Zeitbereich",
-    "WEEK_DAYS": "Wochentage",
-    "MONTH_DAYS": "Monatstage",
+    "WEEK_DAYS": "Woche Tage",
+    "MONTH_DAYS": "Monat Tage",
     "MONTHS": "Monate",
-    "DROP_TO_UPLOAD_MESSAGE": "Dateien hier hinein ziehen zum Hochladen. Unterstütze Formate: .mp3, .wav, .gsm; Max. Dateigröße: 15 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Sie können auch Audiodateien hier ablegen\" hochzuladen. Nur MP3-, WAV-, GSM-Max. 15 MB",
     "POLLING_INTERVAL": "Abfrageintervall (Sekunden)",
-    "DASHBOARD": "Dashboard",
-    "NEW_DASHBOARDITEM": "Neues Dashboard-Widget",
+    "DASHBOARD": "Armaturenbrett",
+    "NEW_DASHBOARDITEM": "Neue Dashboard Widget",
     "COUNTER": "Zähler",
     "IFRAME": "IFrame",
     "CLOCK": "Uhr",
-    "ADD_DASHBOARDITEM": "Dashboard-Widget hinzufügen",
-    "EDIT_WIDGET": "Widget bearbeiten",
-    "DELETE_WIDGET": "Widget löschen",
-    "FLIP_WIDGET": "Widget drehen",
+    "ADD_DASHBOARDITEM": "Dashboard Widget hinzufügen",
+    "EDIT_WIDGET": "Bearbeiten Widget",
+    "DELETE_WIDGET": "Löschen Widget",
+    "FLIP_WIDGET": "Flip Widget",
     "TITLE": "Titel",
     "UPDATE": "Aktualisieren",
     "LAYOUT": "Layout",
     "FOREGROUND_COLOR": "Vordergrundfarbe",
     "FOREGROUND_TITLE_COLOR": "Vordergrund Titel Farbe",
     "THEME": "Thema",
-    "LIGHT": "Hell",
+    "LIGHT": "Licht",
     "DARK": "Dunkel",
     "TIMEZONE": "Zeitzone",
-    "DIGITAL_FORMAT": "Digitales Datumsformat",
+    "DIGITAL_FORMAT": "Digitale Datum Format",
     "TOOLS_QUERY": "Abfrage",
-    "SELECT": "Auswählen",
+    "SELECT": "Wählen Sie",
     "WHERE": "Wo",
     "BACK": "Zurück",
     "PROJECT": "Projekt",
-    "GOTOREALTIME_TRUNK": "Zum Echtzeitmonitoring SIP-Trunks gehen",
-    "GOTO_TRUNK": "Zum SIP-Trunk gehen",
-    "CRON": "CrOn",
+    "GOTOREALTIME_TRUNK": "In Echtzeit, Trunk gehen",
+    "GOTO_TRUNK": "Um die Leitungsbündel gehen",
+    "CRON": "Cron",
     "MINUTES": "Minuten",
     "HOURLY": "Stündlich",
     "YEARLY": "Jährlich",
     "EVERY": "Jede",
     "MINUTE": "Minute",
-    "ON_SECOND": "Zur Sekunde",
-    "HOUR_ON_MINUTE": "Stunde zur Minute",
-    "AND_SECOND": "und Sekunde",
-    "DAY_AT": "Am Tag",
+    "ON_SECOND": "Im 2.",
+    "HOUR_ON_MINUTE": "Stunde Minute",
+    "AND_SECOND": "Und 2.",
+    "DAY_AT": "Tag an",
     "START_TIME": "Startzeit",
-    "ON_THE": "Am",
-    "OF_EVERY": "An jedem",
+    "ON_THE": "Auf der",
+    "OF_EVERY": "Jedes",
     "MONTH_AT": "Monat",
-    "AT": "Um",
+    "AT": "An",
     "LAST": "Letzte",
     "LASTUNIT": "Einheit",
     "MAILACCOUNT": "E-Mail Konto",
-    "OF": "von",
+    "OF": "Von",
     "PAST_THE_HOUR": "Nach der vollen Stunde",
     "DAY": "Tag",
     "WEEK": "Woche",
     "YEAR": "Jahr",
-    "ON": "Am",
+    "ON": "Auf",
     "PAI": "P-Asserted-Identity",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OUTBOUND_ROUTE": "Ausgehende Routen",
-    "EVENTVARIABLES": "Event-Variablen",
+    "OUTBOUND_ROUTE": "Abgehende Routen",
+    "EVENTVARIABLES": "Bei Variablen",
     "FAX": "Fax",
     "INTERACTION": "Interaktion",
     "MESSAGE": "Nachricht",
     "T38PT_UDPTL": "T38 pt Udptl",
-    "AUTOCREATECONTACT": "Automatische Kontakterstellung",
+    "AUTOCREATECONTACT": "Erstellen Sie automatisch",
     "COLOR": "Farbe",
-    "LOCATION": "Standort",
-    "NEW_TAB": "Neuer Tab",
+    "LOCATION": "Lage",
+    "NEW_TAB": "Neue Registerkarte",
     "NEW_WINDOW": "Neues Fenster",
-    "WINDOWWIDTH": "Fensterbreite (px)",
+    "WINDOWWIDTH": "Fenster Breite (px)",
     "WINDOWHEIGHT": "Fensterhöhe (px)",
     "EDIT_DASHBOARDITEM": "Dashboard-Widget bearbeiten",
     "FONTSIZE": "Schriftgröße",
     "FOREGROUND": "Vordergrund",
     "NONE": "Keiner",
     "TOTAL": "Gesamt",
-    "ABANDONED": "Abgebrochen",
+    "ABANDONED": "Verlassen",
     "WAITING": "Warten",
-    "TALKING": "im Gespräch",
-    "ANSWERED": "Beantwortet",
-    "UNMANAGED": "Nicht bearbeitet",
+    "TALKING": "Reden",
+    "ANSWERED": "Antwortete",
+    "UNMANAGED": "Nicht verwaltet",
     "CUSTOMTYPE": "Benutzerdefiniert [Pfad]",
     "WEBREPORT": "Webbericht",
     "PIECHART": "Kuchendiagramm",
     "MULTIBARCHART": "Multibar-Diagramm",
     "MOVE_WIDGET": "Widget verschieben",
-    "USERADD_CUSTOMDASHBOARD": "Berechtigungen hinzufügen",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Vorschau Dashboard",
-    "GOTO_CUSTOMDASHBOARD": "Vorschau Dashboard",
+    "USERADD_CUSTOMDASHBOARD": "Hinzufügen von Benutzerberechtigungen",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
+    "GOTO_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
     "METRIC": "Metrisch",
-    "FILTERVOICEQUEUES": "Anruf-Warteschlangen filtern",
+    "FILTERVOICEQUEUES": "Voice-Warteschlangen filtern",
     "SERIE1": "Serie 1",
     "SERIE2": "Serie 2",
     "SERIE3": "Serie 3",
     "ALL_USERS": "Alle Nutzer",
     "SELECTED_USERS": "Ausgewählte Benutzer",
     "ADD_WIDGET": "Widget hinzufügen",
-    "NEXTCONTACT": "Nächster Kontakt",
+    "NEXTCONTACT": "Nächster",
     "SENDIFEMPTY": "Senden, wenn leer",
-    "CANCEL": "Abbrechen",
+    "CANCEL": "Stornieren",
     "UPLOADING": "Hochladen",
-    "EMAILBCCADDRESS": "BCC",
-    "EMAILCCADDRESS": "CC",
-    "RUN_SCHEDULE": "Zeitplanung ausführen",
-    "ADD_DISPOSITION": "Qualifizierung hinzufügen",
-    "DELETE_DISPOSITION": "Qualifizierung löschen",
-    "DISPOSITIONS": "Qualifizierungen",
-    "EDIT_DISPOSITION": "Qualifizierung bearbeiten",
-    "NEW_DISPOSITION": "Neue Qualifizierung",
-    "CLONE_TRUNK": "Trunk klonen",
-    "BODY": "Textinhalt",
-    "CANNEDANSWERS": "Textvorlagen",
+    "EMAILBCCADDRESS": "Bcc",
+    "EMAILCCADDRESS": "Cc",
+    "RUN_SCHEDULE": "Zeitplan ausführen",
+    "ADD_DISPOSITION": "Disposition hinzufügen",
+    "DELETE_DISPOSITION": "Disposition löschen",
+    "DISPOSITIONS": "Dispositionen",
+    "EDIT_DISPOSITION": "Disposition bearbeiten",
+    "NEW_DISPOSITION": "Neue Disposition",
+    "CLONE_TRUNK": "Klon-Trunk",
+    "BODY": "Karosserie",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
     "REPORTFOLDER": "Berichtsordner",
-    "REPORTSUBFOLDER": "Unterordner",
-    "PREVIOUSCONTACT": "Vorherigen Kontakt",
+    "REPORTSUBFOLDER": "Unterordner melden",
+    "PREVIOUSCONTACT": "Bisherige",
     "VIDEOSUPPORT": "Video-Unterstützung",
     "AGENT": "Agent",
     "HEADERS": "Ãœberschriften",
     "SCRIPT": "Skript",
-    "SCRIPT_INFO": "Information",
+    "SCRIPT_INFO": "Info",
     "SCRIPT_TYPE": "Art",
     "MOTION_TAB": "Neue Registerkarte \"Agent Dashboard\"",
     "WHATSAPP": "WhatsApp Connector",
     "AUTOCREATE_FIELD": "Feld automatisch erstellen",
-    "GLOBALS": "Globale Werte",
+    "GLOBALS": "Globals",
     "SEARCH_FIELDS": "Suchfelder",
     "STANDARD": "Standard",
     "MOTION_BAR": "Motion Bar",
     "ALL": "Alle",
-    "ALL_DISPOSITIONS": "Alle Qualifizierungen",
-    "FIRST_LEVEL_DISPOSITION": "Qualifizierung der ersten Ebene",
-    "LEVEL": "Ebene",
-    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
-    "SELECT_LEVEL": "Ebene auswählen",
-    "TITLEFONTSIZE": "Schriftgröße Titel"
+    "ALL_DISPOSITIONS": "Alle Dispositionen",
+    "FIRST_LEVEL_DISPOSITION": "First Level Disposition",
+    "LEVEL": "Niveau",
+    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
+    "SELECT_LEVEL": "Wählen Sie eine Ebene",
+    "TITLEFONTSIZE": "Schrifttitelgröße"
   }
 }
index b21bd68..c698d09 100644 (file)
@@ -1,68 +1,68 @@
 {
   "VOICE": {
-    "GOTO_VOICEQUEUE": "Zur Anruf-Warteschlange gehen",
-    "GOTOREALTIME_VOICEQUEUE": "Zur Echtzeitansicht Anruf-Warteschlange gehen",
+    "GOTO_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
+    "GOTOREALTIME_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
     "NAME": "Name",
     "LOGOUT": "An-/Abmelden",
-    "VOICEQUEUES": "Anruf-Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "VOICEQUEUES": "Voice Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "BACK": "Zurück",
-    "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
-    "DELETE_VOICEDISPOSITION": "Qualifizierung löschen",
-    "EDIT_VOICEDISPOSITION": "Qualifizierung bearbeiten",
-    "EDIT_VOICEQUEUE": "Anruf-Warteschlange bearbeiten",
-    "DELETE_VOICEQUEUE": "Anruf-Warteschlange löschen",
-    "MOHSOUNDS": "MOH-Töne",
+    "SELECTED": "Ausgewählte",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "DELETE_VOICEDISPOSITION": "Disposition löschen",
+    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
+    "EDIT_VOICEQUEUE": "Edit Voice Warteschlange",
+    "DELETE_VOICEQUEUE": "Warteschlange löschen",
+    "MOHSOUNDS": "Die MOH-Sounds",
     "STRATEGY": "Strategie",
     "DESCRIPTION": "Beschreibung",
-    "ADD_VOICEQUEUE": "Warteschlangen hinzufügen",
+    "ADD_VOICEQUEUE": "Hinzufügen von Warteschlangen",
     "CREATED_AT": "Erstellt am",
-    "CANT_PLAY_GSM_AUDIO_FILES": "Nicht GSM-Audiodateien",
+    "CANT_PLAY_GSM_AUDIO_FILES": "Nicht gsm-Audiodateien",
     "APPLICATIONS_LIST": "Liste der Anwendungen",
     "LEGEND": {
       "CUSTOM_APPLICATION": "(*) - Benutzerdefinierte Anwendung."
     },
     "ERRORS": {
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "APPLICATION_NAME_REQUIRED": "Name der Anwendung ist erforderlich",
-      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
-      "PHONENUMBER_REQUIRED": "Telefonnummer ist erforderlich",
-      "CONTEXT_REQUIRED": "Kontext ist erforderlich",
-      "DESTINATIONPATTERN_REQUIRED": "Ziel-Pattern ist erforderlich",
-      "FULLNAME_REQUIRED": "Vollständiger Name ist erforderlich",
-      "EMAIL_REQUIRED": "E-Mail ist erforderlich",
-      "EMAIL_MUST_VALID": "E-Mail Format ungültig",
-      "MAILBOX_REQUIRED": "Mailbox ist erforderlich",
-      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht Ã¼berein",
-      "TIMEZONE_REQUIRED": "Zeitzone ist erforderlich",
-      "PREFIX_REQUIRED": "Präfix ist erforderlich",
-      "OPTIONS_REQUIRED": "Bedingungen sind Erforderlich",
-      "AFTERCALLWORKDURATION_REQUIRED": "Dauer Nacharbeit ist erforderlich",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Ressource ist erforderlich",
-      "PHONE_REQUIRED": "Telefonnummer ist erforderlich",
-      "VALUE_REQUIRED": "Wert ist erforderlich",
-      "EXTENSION_REQUIRED": "Nebenstelle ist erforderlich",
-      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
-      "NAME_MUST_VALID_PATTERN": "Format Name ungültig",
-      "APPLICATION_REQUIRED": "Anwendung ist erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Timeout muss größer oder gleich sein als",
-      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die max. Länge muss größer oder gleich sein als",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wiederversuche muss größer oder gleich sein als",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nacharbeit Zeit muss größer oder gleich sein als",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gewichtung muss größer oder gleich sein als",
-      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Frequenz der Ansagen muss größer oder gleich sein als",
-      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min. Frequenz der Ansagen muss größer oder gleich sein als",
-      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wiederholende Frequenz der Ansagen muss größer oder gleich sein als",
-      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nacharbeit Zeit muss größer oder gleich sein als",
-      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Verzögerung muss größer oder gleich sein als",
-      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Position muss größer oder gleich sein als",
-      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Schnitt muss größer oder gleich sein als",
-      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Sekundenmuss größer oder gleich sein als",
-      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Nachrichten muss größer oder gleich sein als",
-      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Nachrichten muss kleiner oder gleich sein als",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "APPLICATION_NAME_REQUIRED": "Der Name der Anwendung ist erforderlich",
+      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
+      "PHONENUMBER_REQUIRED": "Die Telefonnummer ist erforderlich",
+      "CONTEXT_REQUIRED": "Der Rahmen ist erforderlich",
+      "DESTINATIONPATTERN_REQUIRED": "Das Ziel-pattern ist erforderlich",
+      "FULLNAME_REQUIRED": "Der vollständige Name ist erforderlich",
+      "EMAIL_REQUIRED": "Die E-Mail ist erforderlich",
+      "EMAIL_MUST_VALID": "Die e-Mail muss in einem gültigen Format",
+      "MAILBOX_REQUIRED": "Die Mailbox ist erforderlich",
+      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Kennwörter stimmen nicht Ã¼berein.",
+      "TIMEZONE_REQUIRED": "Die Zeitzone ist erforderlich",
+      "PREFIX_REQUIRED": "Das Präfix ist erforderlich",
+      "OPTIONS_REQUIRED": "Die Optionen sind Erforderlich",
+      "AFTERCALLWORKDURATION_REQUIRED": "Die Arbeit nach Anruf Dauer ist erforderlich",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Die Technologie/Ressource erforderlich ist",
+      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
+      "VALUE_REQUIRED": "Der Wert ist erforderlich",
+      "EXTENSION_REQUIRED": "Die Verlängerung ist erforderlich",
+      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden",
+      "APPLICATION_REQUIRED": "Die Anwendung ist erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Timeout muss größer als oder gleich",
+      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die max. Länge muss größer als oder gleich",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Wiederholung muss größer als oder gleich",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Nachlese Zeit muss größer als oder gleich",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Gewicht muss größer als oder gleich",
+      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Häufigkeit verkünden muss größer als oder gleich",
+      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Min Frequenz ankündigen muss größer als oder gleich",
+      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die periodische Frequenz ankündigen muss größer als oder gleich",
+      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Arbeit nach Anruf Dauer muss größer als oder gleich",
+      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Verzögerung muss größer als oder gleich",
+      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Position muss größer als oder gleich",
+      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den Schnitt stellen muss größer als oder gleich",
+      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Muss die Max Sekunden größer als oder gleich",
+      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Max Meldungen muss größer als oder gleich",
+      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Max Meldungen muss kleiner als oder gleich",
       "CALLERIDALL_MUST_VALID_PATTERN": "Falsches Format",
       "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
       "VARIABLE_REQUIRED": "Pflichtfeld",
       "TRUNK_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "PROJECT_REQUIRED": "Pflichtfeld",
-      "PENALTY_REQUIRED": "Wert für Verzögerung erforderlich"
+      "PENALTY_REQUIRED": "Sie müssen einen Wert für die Strafe angeben"
     },
     "GENERAL": "Allgemein",
     "TIMEOUT": "Timeout",
     "MAXLENGTH": "Maximale Länge",
-    "RETRY": "Bitte erneut versuchen",
-    "WRAPUPTIME": "Nacharbeit",
-    "WEIGHT": "Gewichtung",
-    "JOINWHENEMPTY": "Beitreten, wenn leer",
-    "LEAVEWHENEMPTY": "Verlassen, wenn leer",
+    "RETRY": "Versuchen Sie es erneut",
+    "WRAPUPTIME": "-Zeit",
+    "WEIGHT": "Gewicht",
+    "JOINWHENEMPTY": "Melden Sie wenn sie leer sind",
+    "LEAVEWHENEMPTY": "Wenn sie leer lassen",
     "HELP": {
-      "TIMEOUT": "Zeitüberschreitung in Sekunden",
-      "MAXLENGTH": "Maximaler Anrufer in der Warteschlange. Wenn Wert 0, dann keine Begrenzung.",
-      "RETRY": "Klingelzeit in Sekunden pro Mitglied. Danach erfolgt ein weiterer Versuch bei der nächsten freien Nebenstelle.",
-      "WRAPUPTIME": "Nacharbeitszeit in Sekunden, bis ein Nutzer nach einem Anruf wieder verfügbar ist.",
-      "WEIGHT": "Gewichtung der Warteschlange. Ein höherer Wert bedeutet eine Priorisierung gegenüber anderen Warteschlangen.",
-      "JOINWHENEMPTY": "Legt fest, ob ein Anruf in die Warteschlange eintreten kann, wenn dort keine Nutzer angemeldet sind.",
-      "LEAVEWHENEMPTY": "Wirft den Anruf aus der Warteschlange, wenn dort kein Nutzer angemeldet ist.",
-      "ANNOUNCEFREQUENCY": "Intervall für automatische Ansagen der Wartezeit, Position, etc. Der Wert 0 deaktiviert diese Option.",
-      "MINANNOUNCEFREQUENCY": "Minimales Intervall für die Ansagen der Wartezeit. Verhindert, dass ein Nutzer bei häufigen Wechsel der Warteposition zu viele Ansagen erhält.",
-      "PERIODICANNOUNCEFREQUENCY": "Legt fest, wie oft die sich wiederholenden Ansagen gespielt werden sollen",
-      "ANNOUNCEPOSITIONLIMIT": "Wird verwendet, wenn der Wert für die Warteposition auf \"Limitierung\" oder \"Mehr\" gestellt wird.",
-      "AFTERCALLWORKDURATION": "Die Dauer der Nacharbeit nach einem Anruf",
-      "MEMBERDELAY": "Erstellt eine Verzögerung des Anrufes für bestimmte Agenten. Kann zum Skillbasierten Routing verwendet werden.",
-      "MUSICONHOLD": "Legt die Haltemusik auf Basis der Warteschlange fest",
-      "ANNOUNCETOAGENT": "Legt fest, ob der Agent vor Annahme des Anrufes einen Hinweis auf die eingehende Warteschlange hört",
-      "RANDOMPERIODICANNOUNCE": "Bei ja, werden die zugewiesenen Ansagen zufällig abgespielt",
-      "ANNOUNCEHOLDTIME": "Spielt die geschätzte Wartezeit zusammen oder ohne die sich wiederholenden Ansagen ab.",
-      "ANNOUNCECALLERPOSITION": "Definiert die Ansage der Warteposition für den Anrufer. Nein = Niemals; Ja = Immer; Limitierung = nur, wenn die Zeit innerhalb dem eingetragenen Wert liegt; Mehr = nur, wenn die Zeit oberhalb dem eingetragenen Wert liegt ",
-      "REPORTHOLDTIMEAGENT": "Haltezeiten der Agenten in den Berichten verwenden",
-      "PERIODICANNOUNCE": "Sich wiederholende Ansagen; können je nach Konfiguration in definierter Reihenfolge oder zufällig abgespielt werden.",
-      "HOLDTIMEANNOUNCE": "Ansage der Wartezeit. Leer lassen zum Ãœberspringen",
-      "YOUARENEXTANNOUNCE": "Ansage \"Sie sind an erster Position der Warteschlange\", Leer lassen zum Ãœberspringen",
-      "THEREAREANNOUNCE": "Ansage \"Es befinden sich..\" Leer lassen zum Ãœberspringen",
-      "WAITINGCALLSANNOUNCE": "Ansage \"...Anrufe in der Warteschlange\" Leer lassen zum Ãœberspringen",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Ansage: \"Die geschätzte Wartezeit beträgt derzeit...\" Leer lassen zum Ãœberspringen",
-      "MINUTESANNOUNCE": "Ansage \"Minuten\"",
-      "MINUTEANNOUNCE": "Ansage \"Minute\"",
-      "SECONDSANNOUNCE": "Ansage \"Sekunden\" Leer lassen zum Ãœberspringen",
-      "THANKYOUANNOUNCE": "Ansage \"Vielen Dank für Ihre Geduld\" Leer lassen zum Ãœberspringen",
-      "AFTERCALLWORK": "Wenn aktiviert, erhalten die Agenten eine kurze Pause nach jedem Anruf",
-      "AUTOPAUSE": "Aktiviert/Deaktiviert die automatische Pause der Agenten, bei einem verpassten Anruf. Hinweis: bezieht sich dann auf alle Anruf-Warteschlangen des Agenten.",
-      "RINGINUSE": "Verhindert das Klingeln bei Agenten, deren Nebenstelle in Verwendung ist",
-      "TIMEOUTRESTART": "Wenn ja, wird die Zeitüberschreitung bei Agenten mit \"Besetzt\" oder \"Verbindungsfehler\"-Status Ã¼bersprungen",
-      "CONTEXT": "Ermöglicht einem Anrufer, durch Drücken einer einzelnen Taste, die Warteschlange zu verlassen.",
-      "SETINTERFACEVARIABLES": "Definiert die Variablen im Interface, welche bei einem Anruf Ã¼bergeben werden können. ",
-      "SETQUEUEVARIABLES": "Definiert die Variablen in der Warteschlange, welche bei einem Anruf Ã¼bergeben werden können. ",
-      "SETQUEUEENTRYVARIABLES": "Definiert die Variablen beim Eintritt in die Warteschlange, welche bei einem Anruf Ã¼bergeben werden können. ",
+      "TIMEOUT": "Gibt die Anzahl von Sekunden an, die das Gerät.",
+      "MAXLENGTH": "Gibt die maximale Anzahl der Anrufer, die in der Warteschlange. Ein Wert von Null bedeutet, dass eine unbegrenzte Anzahl von Anrufern in der Warteschlange sind erlaubt.",
+      "RETRY": "Gibt die Anzahl der Sekunden, die gewartet wird, bevor das nächste Mitglied in die Warteschlange, wenn der Wert für die Zeitüberschreitung erschöpft ist, während versucht wird, den ein Mitglied der Warteschlange.",
+      "WRAPUPTIME": "Die Anzahl der Sekunden, die ein Mitglied in einer Warteschlange verfügbar, nachdem Sie einen Anruf.",
+      "WEIGHT": "Legt das Gewicht einer Warteschlange. Eine Warteschlange mit einem höheren Gewicht definiert werden erste Priorität, wenn Mitglieder, die mit mehreren Warteschlangen.",
+      "JOINWHENEMPTY": "Steuert, ob ein Anrufer wird zur Warteschlange hinzugefügt werden, wenn keine Mitglieder verfügbar sind.",
+      "LEAVEWHENEMPTY": "Zur Kontrolle, ob die Anrufer aus der Warteschlange, wenn die Mitglieder nicht mehr bereit sind, Anrufe zu beantworten.",
+      "ANNOUNCEFREQUENCY": "Legt fest, wie oft sollten wir den Anrufer ankündigen und/oder geschätzte Wartezeit in der Warteschlange. Setzen Sie diesen Wert auf Null, um die Funktion zu deaktivieren.",
+      "MINANNOUNCEFREQUENCY": "Gibt die minimale Zeit, die verstreichen müssen, bevor wir Ihnen die Anrufer in der Warteschlange wieder. Dieser wird verwendet, wenn der Anrufer die Position kann sich häufig Ã¤ndern, um zu verhindern, dass der Anrufer hören mehrere Updates in einem kurzen Zeitraum.",
+      "PERIODICANNOUNCEFREQUENCY": "Gibt an, wie oft wir sollten regelmäßige Ansagen, die dem Anrufer vorgespielt werden.",
+      "ANNOUNCEPOSITIONLIMIT": "Sie kann verwendet werden, wenn Sie definiert haben, verkünden-Position entweder als Begrenzung oder mehr.",
+      "AFTERCALLWORKDURATION": "Die Dauer der Pause durch die Option \"Arbeit nach Anruf",
+      "MEMBERDELAY": "Sie kann verwendet werden, wenn Sie wollen, dass es eine Verzögerung, bevor der Anrufer und Mitglied der Warteschlange, die miteinander verbunden sind.",
+      "MUSICONHOLD": "Setzt die Musik klasse verwendet werden, die von einer bestimmten Warteschlange an.",
+      "ANNOUNCETOAGENT": "Für die Wiedergabe einer Ansage auf den Agenten, der den Anruf entgegengenommen hat, ihn wissen zu lassen, was der Anrufer die Warteschlange aus.",
+      "RANDOMPERIODICANNOUNCE": "Falls auf Ja eingestellt, wird die festgelegte regelmäßige Mitteilungen in einer zufälligen Reihenfolge.",
+      "ANNOUNCEHOLDTIME": "Legt fest, ob die geschätzte Wartezeit gespielt werden sollte zusammen mit den regelmäßigen Ankündigungen.",
+      "ANNOUNCECALLERPOSITION": "Legt fest, ob es sich bei dem Anrufer seine Position in der Warteschlange mitgeteilt werden sollten. Wenn die Einstellung Nein lautet, die Position wird nicht bekannt gegeben. Falls auf Ja eingestellt, wird die Position des Anrufers wird immer bekannt gegeben. Wenn der Wert Ã¼berschritten wird, wird der Anrufer hört ihre Position in der Warteschlange nur, wenn er sich innerhalb der Grenze von AK-Position. Wenn der Wert auf Mehr, hört der Anrufer ihre Position, wenn es Ã¼ber die Zahl von AK-Position.",
+      "REPORTHOLDTIMEAGENT": "Die Berichterstattung Ã¼ber die CLI des Anrufers mit der Zeit in der Warteschleife in der Warteschlange vor.",
+      "PERIODICANNOUNCE": "Eine Reihe von regelmäßigen Mitteilungen gespielt zu werden, in der Reihenfolge wiedergegeben, in der sie definiert sind.",
+      "HOLDTIMEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Hold\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "YOUARENEXTANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Sie sind jetzt in erster Linie\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "THEREAREANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Es gibt\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "WAITINGCALLSANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Wartende Anrufe\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Die voraussichtliche Wartezeit ist\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "MINUTESANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"min\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "MINUTEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"min\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "SECONDSANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Sekunden\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "THANKYOUANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Vielen Dank für Ihre Geduld.\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "AFTERCALLWORK": "Wenn der Agent aktiv ist, wird auf eine Pause nach einer abgeschlossenen Anruf in der Warteschlange",
+      "AUTOPAUSE": "Aktiviert/Deaktiviert die automatische Unterbrechung der Mitglieder, die es versäumen, um einen Anruf zu beantworten. Wenn aktiv, wird diese Mitgliedstaaten angehalten zu werden in allen Warteschlangen er Mitglied ist.",
+      "RINGINUSE": "Verwendet werden, um zu vermeiden, Senden von Anrufen an Mitglieder, deren Status im Einsatz ist.",
+      "TIMEOUTRESTART": "Falls auf Ja eingestellt, wird das Timeout für einen Agenten zu beantworten, wenn entweder ein Besetztzeichen oder wird mit dem Status \"Ãœberlastung des Kanals.",
+      "CONTEXT": "Ermöglicht einem Anrufer zu beenden, die die Warteschlange durch Drücken einer einzigen Taste MFV-Ziffer. Wenn Sie einen Kontext angegeben ist und der Anrufer gibt eine Zahl, Ziffer wird versuchen, die angepasst werden können, im Rahmen festgelegt, und es wird auch weiterhin die Ausführung Nummernplan.",
+      "SETINTERFACEVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange, die einige Variablen werden(siehe wiki)",
+      "SETQUEUEVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange und kurz vor dem Anrufer die Warteschlange verlassen einige Variablen werden(siehe wiki)",
+      "SETQUEUEENTRYVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange, die einige Variablen werden(siehe wiki)",
       "RECORDING": "Aktivieren der Aufzeichnung",
-      "VOICEMAIL_CONTEXT": "Kontext der verwendeten Nebenstellen",
+      "VOICEMAIL_CONTEXT": "Im Rahmen der relativen Erweiterung.",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "CALLERIDALL": "Unterstützte Formate: \"CallerId\" & lt; number & gt;",
       "CALLER_ID": "Unterstützte Formate: \"CallerId\" & lt; number & gt;",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus, welcher während einer erforderlichen Qualifizierung verwendet wird",
-      "SERVICELEVEL": "Zweite Einstellungen für Service-Level (Standard = 0, kein SL). Wird für Service Level-Statistiken verwendet (Anrufe werden innerhalb des Service Level-Zeitrahmens beantwortet)",
-      "MONITORFORMAT": "Gibt das Format der Aufzeichnungsdatei an. Bei 'inaktiv', werden Anrufe nicht aufgezeichnet"
+      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus, der während der Zwangsdisposition festgelegt werden soll",
+      "SERVICELEVEL": "Zweite Einstellungen für Service Level (Standard = 0, kein SL). Wird für Service Level-Statistiken verwendet (Anrufe werden innerhalb des Service Level-Zeitrahmens beantwortet)",
+      "MONITORFORMAT": "Gibt das Format der Aufnahmedatei an. Wenn es auf 'inaktiv' gesetzt ist, werden Anrufe nicht aufgezeichnet",
+      "SAVE_ROUTES": "Die Streckenführung wurde geändert. Denken Sie daran, zu speichern, wenn Sie Ihre Ã„nderungen nicht verlieren möchten."
     },
-    "MUSICONHOLD": "Wartemusik",
-    "ANNOUNCETOAGENT": "Ansage an Agenten",
-    "ANNOUNCEMENTS": "Ansagen",
-    "ADVANCED": "Erweitert",
-    "ANNOUNCEFREQUENCY": "Ansagefrequenz",
-    "MINANNOUNCEFREQUENCY": "Min. Ansagefrequenz",
-    "PERIODICANNOUNCEFREQUENCY": "Frequenz wiederholende Ansagen",
-    "RANDOMPERIODICANNOUNCE": "Zufällige Ansagen",
-    "ANNOUNCEHOLDTIME": "Wartezeit ansagen",
-    "ANNOUNCECALLERPOSITION": "Warteposition ansagen",
-    "ANNOUNCEPOSITIONLIMIT": "Limitierung Warteposition ansagen",
-    "REPORTHOLDTIMEAGENT": "Haltezeit in Agentenbericht",
-    "PERIODICANNOUNCE": "Wiederholende Ansagen",
-    "HOLDTIMEANNOUNCE": "Wartezeit ansagen",
-    "YOUARENEXTANNOUNCE": "Erste Position",
-    "THEREAREANNOUNCE": "Es befinden sich",
-    "WAITINGCALLSANNOUNCE": "Wartende Anrufe",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Geschätzte Wartezeit ansagen",
-    "MINUTESANNOUNCE": "Minuten",
-    "MINUTEANNOUNCE": "Minute",
-    "SECONDSANNOUNCE": "Sekunden",
+    "MUSICONHOLD": "Musik auf Halten",
+    "ANNOUNCETOAGENT": "Geben Sie Agent",
+    "ANNOUNCEMENTS": "Ankündigungen",
+    "ADVANCED": "Erweiterte",
+    "ANNOUNCEFREQUENCY": "Frequenz ankündigen",
+    "MINANNOUNCEFREQUENCY": "Minimale Frequenz ankündigen",
+    "PERIODICANNOUNCEFREQUENCY": "Periodische Frequenz ankündigen",
+    "RANDOMPERIODICANNOUNCE": "Random Periodische verkünden",
+    "ANNOUNCEHOLDTIME": "Geben Sie Zeit",
+    "ANNOUNCECALLERPOSITION": "Position des Anrufers bekannt",
+    "ANNOUNCEPOSITIONLIMIT": "Geben Position Limit",
+    "REPORTHOLDTIMEAGENT": "Bericht Agenten",
+    "PERIODICANNOUNCE": "Periodische verkünden",
+    "HOLDTIMEANNOUNCE": "Zeit in der Warteschleife verkünden",
+    "YOUARENEXTANNOUNCE": "\"Sie sind weiter' verkünden",
+    "THEREAREANNOUNCE": "'Es gibt' verkünden",
+    "WAITINGCALLSANNOUNCE": "Wartende Anrufe,",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Geschätzte Zeit halten,",
+    "MINUTESANNOUNCE": "Minuten ankündigen",
+    "MINUTEANNOUNCE": "Minute verkünden",
+    "SECONDSANNOUNCE": "Sekunden,",
     "THANKYOUANNOUNCE": "'Vielen Dank' verkünden",
     "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "Nacharbeit",
-    "AFTERCALLWORKDURATION": "Dauer Nacharbeit",
-    "RINGINUSE": "Klingeln bei Besetzt",
-    "MEMBERDELAY": "Verzögerung",
-    "TIMEOUTRESTART": "Zeitüberschreitung",
+    "AFTERCALLWORK": "Arbeit nach Anruf",
+    "AFTERCALLWORKDURATION": "Arbeit nach Anruf Dauer",
+    "RINGINUSE": "Ring in Verwendung",
+    "MEMBERDELAY": "Die Verzögerung",
+    "TIMEOUTRESTART": "Timeout starten",
     "MONITORFORMAT": "Aufzeichnungsformat",
-    "SETINTERFACEVARIABLES": "Interface-Variablen",
-    "SETQUEUEVARIABLES": "Warteschlangen-Variablen",
-    "SETQUEUEENTRYVARIABLES": "Warteschlangen-Eintritts-Variablen",
+    "SETINTERFACEVARIABLES": "Die Interface- Variablen",
+    "SETQUEUEVARIABLES": "Die Warteschlange Variablen",
+    "SETQUEUEENTRYVARIABLES": "Die Warteschlange ENTRY-Variablen",
     "VARIABLE": "Variable",
-    "CONTEXT": "Kontext Austritt aus Warteschlange",
+    "CONTEXT": "Kontext",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
-    "INBOUNDROUTES": "Eingehende Routen",
+    "INBOUNDROUTES": "Ankommende Routen",
     "PHONENUMBER": "Telefonnummer",
     "ADD_INBOUNDROUTE": "Eingehende Route hinzufügen",
-    "EDIT_INBOUNDROUTE": "Eingehende Route bearbeiten",
-    "DELETE_INBOUNDROUTE": "Eingehende Route löschen",
+    "EDIT_INBOUNDROUTE": "Route für eingehende Anrufe bearbeiten.",
+    "DELETE_INBOUNDROUTE": "Löschen der Route für eingehende Anrufe",
     "ACTIONS": "Aktionen",
-    "OUTBOUNDROUTES": "Ausgehende Routen",
-    "DESTINATIONPATTERN": "Ziel-Pattern",
+    "OUTBOUNDROUTES": "Abgehende Routen",
+    "DESTINATIONPATTERN": "Ziel Muster",
     "ADD_OUTBOUNDROUTE": "Ausgehende Route hinzufügen",
-    "EDIT_OUTBOUNDROUTE": "Ausgehende Route bearbeiten",
-    "DELETE_OUTBOUNDROUTE": "Ausgehende Route löschen",
-    "CUTDIGITS": "Ziffern",
-    "RECORDING": "Aufzeichnung",
+    "EDIT_OUTBOUNDROUTE": "Abgehende Route bearbeiten",
+    "DELETE_OUTBOUNDROUTE": "Abgehende Route löschen",
+    "CUTDIGITS": "Die Ziffern",
+    "RECORDING": "Aufnahme",
     "RECORDINGFORMAT": "Aufzeichnungsformat",
     "INTERNALROUTES": "Interne Routen",
-    "ADD_INTERNALROUTE": "Interne Route hinzufügen",
+    "ADD_INTERNALROUTE": "Fügen Sie interne Routen",
     "EDIT_INTERNALROUTE": "Interne Route bearbeiten",
-    "DELETE_INTERNALROUTE": "Interne Route löschen",
+    "DELETE_INTERNALROUTE": "Interne Routen löschen",
     "CONTEXTS": "Kontexte",
-    "ADD_CONTEXT": "Kontext hinzufügen",
+    "ADD_CONTEXT": "Rahmen hinzufügen",
     "EDIT_CONTEXT": "Kontext bearbeiten",
-    "DELETE_CONTEXT": "Kontext löschen",
-    "VOICEMAILS": "Voicemails",
-    "ADD_VOICEMAIL": "Voicemail hinzufügen",
-    "EDIT_VOICEMAIL": "Voicemail bearbeiten",
+    "DELETE_CONTEXT": "Löschen von Rahmen",
+    "VOICEMAILS": "Von Voicemails",
+    "ADD_VOICEMAIL": "Fügen Sie Voicemail",
+    "EDIT_VOICEMAIL": "Bearbeiten von Voicemail",
     "DELETE_VOICEMAIL": "Voicemail löschen",
-    "FULLNAME": "Vollständiger Name",
+    "FULLNAME": "Voller Name",
     "EMAIL": "E-Mail",
     "MAILBOX": "Mailbox",
     "PASSWORD": "Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "TIMEZONE": "Zeitzone",
-    "ATTACH": "Anhängen",
+    "ATTACH": "Befestigen Sie",
     "ENVELOPE": "Umschlag",
     "DELETE": "Löschen",
     "EMAILBODY": "E-Mail-Text",
     "EMAILSUBJECT": "Betreff der E-Mail",
-    "MAXSECONDS": "Max. Sekunden",
+    "MAXSECONDS": "In Sekunden",
     "MAXMESSAGES": "Max. Nachrichten",
     "MESSAGES": "Nachrichten",
     "SORT": "Sortieren",
-    "ADD_MUSICONHOLD": "Wartemusik hinzufügen",
-    "MUSICONHOLDS": "Wartemusik",
-    "EDIT_MUSICONHOLD": "Wartemusik bearbeiten",
-    "DELETE_MUSICONHOLD": "Wartemusik löschen",
+    "ADD_MUSICONHOLD": "Hinzufügen von Musik auf Halten",
+    "MUSICONHOLDS": "Musik auf Halten",
+    "EDIT_MUSICONHOLD": "Bearbeiten Musik auf Halten",
+    "DELETE_MUSICONHOLD": "Löschen Sie Musik auf Halten",
     "DIRECTORY": "Verzeichnis",
     "AUDIOFILES": "Audiodateien",
-    "RECORDINGS": "Aufzeichnungen",
-    "CHANSPY": "Listen-In",
+    "RECORDINGS": "Aufnahmen",
+    "CHANSPY": "ChanSpy",
     "PREFIX": "Präfix",
     "OPTIONS": "Optionen",
-    "AUTH": "Authentifizierung",
-    "ADD_CHANSPY": "Listen-In hinzufügen",
-    "EDIT_CHANSPY": "Listen-In bearbeiten",
-    "DELETE_CHANSPY": "Listen-In löschen",
+    "AUTH": "Auth",
+    "ADD_CHANSPY": "Fügen Sie ChanSpy",
+    "EDIT_CHANSPY": "Bearbeiten Sie ChanSpy",
+    "DELETE_CHANSPY": "Löschen Sie ChanSpy",
     "AGENTS": "Agenten",
     "TELEPHONES": "Telefone",
     "QUEUES": "Warteschlangen",
-    "QUEUE_CALLS": "Anrufe in Warteschlange",
-    "QUEUE_PARAMETERS": "Warteschlangen Parameter",
+    "QUEUE_CALLS": "Anrufe aus einer Warteschlange",
+    "QUEUE_PARAMETERS": "Queue Parameter",
     "ABANDONED_CALLS": "Abgebrochene Anrufe",
     "OUTBOUND_CALLS": "Ausgehende Anrufe",
     "AGI": "AGI",
-    "DIAL": "Wählen",
+    "DIAL": "Kurzwahl",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Interner Anruf",
-    "EXTERNALDIAL": "Externer Anruf",
-    "RINGGROUP": "Rufgruppe",
+    "INTERNALDIAL": "Interne Wahl",
+    "EXTERNALDIAL": "Externes Wählen",
+    "RINGGROUP": "Ring-Gruppe",
     "PLAYBACK": "Wiedergabe",
     "QUEUE": "Warteschlange",
-    "SET": "Einstellen",
+    "SET": "Set",
     "VOICEMAIL": "Voicemail",
     "GOTO": "Gehe zu",
     "HANGUP": "Auflegen",
-    "CUSTOM": "Benutzerdefiniert",
+    "CUSTOM": "Benutzerdefinierte",
     "PROJECT": "Cally-Square Projekt",
     "TECHNOLOGY/RESOURCE": "Technologie-/Ressourcen",
     "URL": "URL",
-    "EDIT_APP": "App bearbeiten.",
+    "EDIT_APP": "Anwendung bearbeiten.",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_APP": "App löschen",
+    "DELETE_APP": "Anwendung löschen",
     "INTERVALS": "Intervalle",
     "USER": "Benutzer",
-    "TRUNK": "Trunk",
+    "TRUNK": "Amtsleitung",
     "PHONE": "Telefon",
     "AUDIO_FILES": "Audiodateien",
-    "ANNOUNCE_OVERRIDES": "Ãœberschreibungen ankündigen",
+    "ANNOUNCE_OVERRIDES": "Ãœberschreibt ankündigen",
     "MACRO": "Makro",
     "GOSUB": "GoSub",
     "RULE": "Regel",
     "ANSWER": "Antwort",
     "VALUE": "Wert",
     "MAILBOX@CONTEXT": "Mailbox@Kontext",
-    "EXTENSION": "Nebenstelle",
+    "EXTENSION": "Erweiterung",
     "PRIORITY": "Priorität",
-    "HANGUP_CAUSE": "Ablehnungsgrund",
-    "OUTBOUNDDIAL": "Extern wählen",
-    "CALLER_ID": "Anrufer-ID",
+    "HANGUP_CAUSE": "Ursache auflegen",
+    "OUTBOUNDDIAL": "Wählen Sie für abgehende Anrufe",
+    "CALLER_ID": "Die Anrufer-ID",
     "NO_MESSAGE_AVAILABLE": "Keine Meldungen vorhanden",
     "NO_SOUND_AVAILABLE": "Kein Ton verfügbar",
-    "VOICERECORDINGS": "Sprachaufzeichnungen",
-    "CHANSPIES": "Listen-Ins",
-    "VOICE": "Anrufe",
+    "VOICERECORDINGS": "Sprachaufnahmen",
+    "CHANSPIES": "Chan Spies",
+    "VOICE": "Voice",
     "REALTIME": "Echtzeit",
-    "ID": "ID",
+    "ID": "Id",
     "VOICEMAIL_CONTEXT": "Kontext",
     "NO_MOHSOUND_AVAILABLE": "Keine Wartemusik verfügbar",
     "FILE": "Datei",
-    "ADD_MOHSOUND": "Musik bei Halten hinzufügen",
-    "DOWNLOAD_MOHSOUND": "Musik bei Halten herunterladen",
-    "DELETE_MOHSOUND": "Musik bei Halten löschen",
+    "ADD_MOHSOUND": "Hinzufügen von Musik auf Halten sound",
+    "DOWNLOAD_MOHSOUND": "Download Music-on-Hold sound",
+    "DELETE_MOHSOUND": "Löschen Sie Music On Hold sound",
     "UNIQUEID": "Eindeutige ID",
     "AGENT": "Agent",
     "TYPE": "Typ",
     "RATING": "Bewertung",
     "AUDIO": "Audio",
     "DATE": "Datum",
-    "NEW_VOICEQUEUE": "Neue Anruf-Warteschlange",
-    "NEW_INBOUNDROUTE": "Neue eingehende Route",
-    "NEW_OUTBOUNDROUTE": "Neue ausgehende Route",
-    "NEW_INTERNALROUTE": "Neue interne Route",
-    "NEW_CONTEXT": "Neuer Kontext",
+    "NEW_VOICEQUEUE": "Neue Stimme der Warteschlange",
+    "NEW_INBOUNDROUTE": "Neue Route für eingehende Anrufe",
+    "NEW_OUTBOUNDROUTE": "Neue abgehende Route",
+    "NEW_INTERNALROUTE": "Neue interne Routen",
+    "NEW_CONTEXT": "Neue Kontext",
     "NEW_VOICEMAIL": "Neue Voicemail",
-    "NEW_MUSICONHOLD": "Neue Haltemusik",
-    "NEW_CHANSPY": "Neuer Listen-In",
-    "PENALTY": "Verzögerung",
-    "ADD_TEAM_TO_VOICEQUEUE": "Team zur Warteschlange hinzufügen",
-    "ADD_AGENT_TO_VOICEQUEUE": "Agenten zur Warteschlange hinzufügen",
-    "EDIT_DIAL": "Wählen anpassen",
+    "NEW_MUSICONHOLD": "Neue Musik auf Halten",
+    "NEW_CHANSPY": "Neue ChanSpy",
+    "PENALTY": "Strafe",
+    "ADD_TEAM_TO_VOICEQUEUE": "Team hinzufügen, Warteschlange",
+    "ADD_AGENT_TO_VOICEQUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
+    "EDIT_DIAL": "Wählen Sie Bearbeiten.",
     "EDIT_AGI": "AGI bearbeiten",
-    "EDIT_INTERNALDIAL": "Internes Wählen bearbeiten",
-    "EDIT_EXTERNALDIAL": "Externes Wählen bearbeiten",
-    "EDIT_RINGGROUP": "Rufgruppe bearbeiten",
-    "EDIT_PLAYBACK": "Wiedergabe bearbeiten",
-    "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "EDIT_SET": "Set bearbeiten",
-    "EDIT_GOTO": "Gehe zu bearbeiten",
-    "EDIT_HANGUP": "Auflegen bearbeiten",
-    "EDIT_CUSTOM": "Benutzerdef. Einstellungen bearbeiten",
+    "EDIT_INTERNALDIAL": "Interne Wahl bearbeiten.",
+    "EDIT_EXTERNALDIAL": "Wählen Sie Externen bearbeiten",
+    "EDIT_RINGGROUP": "Gruppe bearbeiten",
+    "EDIT_PLAYBACK": "Bearbeiten Sie die Wiedergabe",
+    "EDIT_QUEUE": "Bearbeiten von Warteschlangen",
+    "EDIT_SET": "Bearbeiten",
+    "EDIT_GOTO": "Gehe zu bearbeiten.",
+    "EDIT_HANGUP": "Bearbeiten Sie Auflegen",
+    "EDIT_CUSTOM": "Bearbeiten von benutzerdefinierten",
     "DURATION": "Dauer",
-    "RECEIVED_AT": "Eingegangen am",
+    "RECEIVED_AT": "Empfangen am",
     "YES": "Ja",
-    "NO": "Nein",
-    "HANGUPCAUSE_1": "1 = Nummer nicht zugewiesen",
-    "HANGUPCAUSE_16": "16 = Beenden durch Nutzer",
-    "HANGUPCAUSE_17": "17 = Besetzt",
-    "HANGUPCAUSE_18": "18 = Keine Antwort (Nebenstelle nicht verbunden)",
+    "NO": "Keine",
+    "HANGUPCAUSE_1": "1 = Nicht zugewiesene Nummer",
+    "HANGUPCAUSE_16": "16 = Normail Anruf löschen",
+    "HANGUPCAUSE_17": "17 = Benutzer besetzt",
+    "HANGUPCAUSE_18": "18 = Keine Reaktion (Telefon Gerät nicht verbunden)",
     "HANGUPCAUSE_21": "21 = Anruf abgelehnt",
-    "HANGUPCAUSE_22": "22 = Nummer geändert",
-    "HANGUPCAUSE_27": "27 = Ziel nicht verfügbar",
-    "HANGUPCAUSE_38": "38 = Netzwerk nicht verfügbar",
+    "HANGUPCAUSE_22": "22 = Anzahl geändert",
+    "HANGUPCAUSE_27": "27 = Ziel nicht in Ordnung",
+    "HANGUPCAUSE_38": "38 = Netzwerk aus, um",
     "HANGUPCAUSE_41": "41 = vorübergehende Störung",
-    "RANDOM": "Zufall",
+    "RANDOM": "Random",
     "ALPHABETICAL": "Alphabetisch",
     "NO_APPS_AVAILABLE": "Keine Anwendungen verfügbar",
-    "DOWNLOAD_VOICERECORDING": "Sprachaufzeichnung herunterladen",
-    "DELETE_VOICERECORDING": "Sprachaufzeichnung löschen",
-    "INTERNAL": "Intern",
+    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
+    "DELETE_VOICERECORDING": "Löschen von Voice Recording",
+    "INTERNAL": "Interne",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "TRUNK_STATUS": "Trunk Status",
     "REGISTERED": "Registriert",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "LAGGED": "Zurück",
     "REACHABLE": "Erreichbar",
     "UNREACHABLE": "Nicht erreichbar",
     "UNKNOWN": "Unbekannt",
-    "NOT_INUSE": "Nicht in Verwendung",
-    "INUSE": "In Verwendung",
+    "NOT_INUSE": "Nicht in Gebrauch",
+    "INUSE": "Im Einsatz",
     "BUSY": "Besetzt",
     "INVALID": "Ungültig",
     "UNAVAILABLE": "Nicht verfügbar",
     "RINGING": "Klingeln",
-    "ONHOLD": "Halten",
-    "RING": "Klingeln",
-    "UP": "Nach Oben",
-    "INFO": "Information",
-    "TRUNKS": "Trunks",
+    "ONHOLD": "Auf Halten",
+    "RING": "Ring",
+    "UP": "Bis",
+    "INFO": "Info",
+    "TRUNKS": "Amtsleitungen",
     "REGISTRY": "Registrierung",
-    "NO_REGISTRY": "Keine Registrierung",
+    "NO_REGISTRY": "Keine registry",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
-    "WAITING": "Wartezustand",
-    "TALKING": "Im Gespräch",
-    "DID": "DID",
+    "WAITING": "Warten",
+    "TALKING": "Sprechen",
+    "DID": "Haben",
     "CALLER": "Anrufer",
-    "TOTAL": "Gesamt",
+    "TOTAL": "Insgesamt",
     "ANSWERED": "Beantwortet",
     "ABANDONED": "Abgebrochen",
-    "UNMANAGED": "Nicht bearbeitet",
-    "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "AVG_DURATION": "Durchschnittliche Dauer",
-    "AVG_BILLABLE": "Durchschnittliche abrechenbare Zeit",
-    "SOURCE": "Ursprung",
+    "UNMANAGED": "Nicht verwaltete",
+    "AVG_HOLD_TIME": "Durchschnittl. Warteschleifenzeit",
+    "AVG_DURATION": "Av-Dauer",
+    "AVG_BILLABLE": "Avg Fakturierbaren",
+    "SOURCE": "Quelle",
     "DESTINATION": "Ziel",
     "REJECTED": "Abgelehnt",
     "FAILED": "Fehlgeschlagen",
-    "CALLED": "Angerufen",
+    "CALLED": "Aufgerufen",
     "CONNECTED": "Verbunden",
     "NO_RATING": "Keine Bewertung",
-    "EDIT_VOICERECORDING": "Sprachaufzeichnungen verwalten",
+    "EDIT_VOICERECORDING": "Edit Voice Recording",
     "APPLICATION_NAME": "Name der Anwendung",
     "ARGUMENTS": "Argumente",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "DEFAULT_PAUSE": "Standard Pause",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
+    "DEFAULT_PAUSE": "Standard PAUSE",
     "PAUSE": "Pause",
-    "UNPAUSE": "Fortsetzen",
-    "REDIRECT_TO_NUMBER": "Weiterleiten an Nummer",
-    "REDIRECT_TO_AGENT": "Weiterleiten an Agenten",
-    "AGENTADD_VOICEQUEUE": "Agenten zu Anruf-Warteschlange hinzufügen",
+    "UNPAUSE": "Pause",
+    "REDIRECT_TO_NUMBER": "Umleiten zu: Anzahl",
+    "REDIRECT_TO_AGENT": "Umleiten zu: Agent",
+    "AGENTADD_VOICEQUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
     "APPLICATION": "Anwendung",
     "FILES": "Dateien",
     "FORMAT": "Format",
     "MODE": "Modus",
     "RECORD": "Datensatz",
-    "TEAMADD_VOICEQUEUE": "Team zur Anruf-Warteschlange hinzufügen",
-    "NEW_MOHSOUND": "Neue Wartemusik",
-    "DOWNLOAD_MESSAGE": "Herunterladen",
+    "TEAMADD_VOICEQUEUE": "Hinzufügen Team voicequeue",
+    "NEW_MOHSOUND": "Neue Musik auf Halten",
+    "DOWNLOAD_MESSAGE": "Download",
     "DELETE_MESSAGE": "Löschen",
     "QUEUE_PARAMS": "Queue Parameter",
-    "TOTAL_OFFERED": "Gesamt",
+    "TOTAL_OFFERED": "Insgesamt",
     "READY": "Bereit",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlangen hinzufügen",
-    "ALL_TEAMS": "Alle Teams",
+    "AGENTADD_QUEUE": "Agent hinzufügen Warteschlangen zu Voice",
+    "AGENTSADD_QUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CLOSING": "Schließen",
     "TAGS": "Tags",
     "WAITING_FOR_AGENT": "Warten auf Agenten",
-    "EDIT_OUTBOUNDDIAL": "Wählverhalten ausgehend bearbeiten",
-    "ACCOUNTNAME": "Kontoname",
+    "EDIT_OUTBOUNDDIAL": "Bearbeiten ausgehenden DFÃœ",
+    "ACCOUNTNAME": "Konto Name",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
-    "DISPOSITION": "Qualifizierung",
+    "OF": "Von",
+    "DISPOSITION": "Disposition",
     "WAITING_FOR_AGENTS": "Warten auf Agenten",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "PARTIALPAUSE": "Teilpause",
+    "PARTIALPAUSE": "Teilweise Pause",
     "STATUS": "Status",
     "TIMER": "Timer",
     "ALL": "Alle",
     "IDLE": "Leerlauf",
-    "EDIT_TRUNK": "Trunk bearbeiten",
+    "EDIT_TRUNK": "Bearbeiten Trunk",
     "ACTIVE": "Aktiv",
-    "CLEAR": "Leeren",
+    "CLEAR": "klar",
     "CALLS": "Anrufe",
-    "STARTEDAT": "Startdatum",
-    "ENDEDAT": "Enddatum",
-    "TAG": "Tag",
-    "DETAILS": "Details",
+    "STARTEDAT": "Fing an bei",
+    "ENDEDAT": "Beendet bei",
+    "TAG": "Etikett",
+    "DETAILS": "Einzelheiten",
     "BILLABLESECONDS": "Abrechenbare Sekunden",
-    "ANSWEREDAT": "Beantwortet am",
-    "NOTE": "Notiz",
+    "ANSWEREDAT": "Beantwortet bei",
+    "NOTE": "Hinweis",
     "CLOSE": "Schließen",
-    "SELECT_DATE": "Startdatum auswählen",
-    "SELECT_TYPE": "Typ auswählen",
-    "ABANDONEDCALLS": "Abgebrochene Anrufe",
+    "SELECT_DATE": "Wählen Sie Startdatum",
+    "SELECT_TYPE": "Art auswählen",
+    "ABANDONEDCALLS": "Verlassene Warteschlangenanrufe",
     "ADD_VOICEPREFIX": "Präfix hinzufügen",
-    "AGENTADD_VOICEPREFIX": "Agentenpräfix hinzufügen",
+    "AGENTADD_VOICEPREFIX": "Fügen Sie Agent zu Präfix hinzu",
     "DELETE_VOICEPREFIX": "Präfix löschen",
     "EDIT_VOICEPREFIX": "Präfix bearbeiten",
     "NEW_VOICEPREFIX": "Neues Präfix",
-    "VOICEPREFIXES": "Präfixe für Sprachanrufe",
+    "VOICEPREFIXES": "Vorgegebene Präfixe",
     "CALLERIDALL": "Anruferidentifikation",
     "OUTBOUNDROUTE": "Ausgehende Route",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "DIALER": "Dialer",
-    "INBOUND": "Eingehend",
+    "INBOUND": "Eingehende",
     "OUTBOUND": "Ausgehend",
-    "MANDATORYDISPOSITION": "Qualifikation erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "MANDATORYDISPOSITION": "Zwingende Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Status der obligatorischen Dispositionspause",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
     "CANT_DOWNLOAD_THIS_FILE": "Diese Datei kann nicht heruntergeladen werden",
     "FILE_NOT_FOUND": "Datei nicht gefunden",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
-    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
-    "STOP_SCREENRECORDING": "Bildschirmaufzeichnung beenden",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
-    "WRONG_EXTENSION": "Ungültige Dateiendung",
+    "START_SCREENRECORDING": "Starten Sie die Bildschirmaufnahme",
+    "STOP_SCREENRECORDING": "Beenden Sie die Bildschirmaufnahme",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "WRONG_EXTENSION": "Die Datei weist die falsche Erweiterung auf",
     "DOWNLOADTRANSCRIBE_VOICERECORDING": "Transkript herunterladen",
     "FAILUREREASON": "Fehlergrund",
-    "RUNSENTIMENT_VOICERECORDING": "Starten Sprachaufzeichnung inkl. Sentiment",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Transkription und Sentinemtaufzeichnung starten",
-    "RUNTRANSCRIBE_VOICERECORDING": "Transkription starten",
-    "SENTIMENT": "Sentiment",
-    "SENTIMENTANALYSIS": "Sentiment-Analyse",
+    "RUNSENTIMENT_VOICERECORDING": "Führen Sie Sentiment",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Führen Sie Transcribe & Sentiment aus",
+    "RUNTRANSCRIBE_VOICERECORDING": "Führen Sie Transcribe aus",
+    "SENTIMENT": "Gefühl",
+    "SENTIMENTANALYSIS": "Stimmungsanalyse",
     "SENTIMENT_MIXED": "Gemischt",
     "SENTIMENT_NEGATIVE": "Negativ",
     "SENTIMENT_NEUTRAL": "Neutral",
     "SENTIMENT_POSITIVE": "Positiv",
     "TEXT": "Text",
     "TRANSCRIBE": "Transkribieren",
-    "TRANSCRIBESTATUS_COMPLETED": "Transkription abgeschlossen",
-    "TRANSCRIBESTATUS_FAILED": "Transkription fehlgeschlagen",
+    "TRANSCRIBESTATUS_COMPLETED": "Abgeschlossen",
+    "TRANSCRIBESTATUS_FAILED": "Gescheitert",
     "TRANSCRIBESTATUS_IN_PROGRESS": "In Bearbeitung",
     "TRANSCRIBESTATUS_NEW": "Neu",
     "TRANSCRIPT": "Transkript",
     "TRANSCRIPTANALYSIS": "Transkript & Analyse",
     "SERVICELEVEL": "Service Level",
-    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene"
+    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
+    "ALIAS": "Alias"
   }
 }
index c10b0a5..80b51fd 100644 (file)
@@ -3,8 +3,8 @@
     "ERRORS": {
       "ACCESSKEYID_REQUIRED": "Pflichtfeld",
       "ACCOUNTSID_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "AGENT_REQUIRED": "Pflichtfeld",
       "AGENT_TIMEOUT_REQUIRED": "Pflichtfeld",
@@ -14,9 +14,9 @@
       "CONDITION_REQUIRED": "Pflichtfeld",
       "DESCRIPTION_REQUIRED": "Pflichtfeld",
       "DISPOSITION_REQUIRED": "Pflichtfeld",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
       "FALSEPRIORITY_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
       "KEY_REQUIRED": "Pflichtfeld",
       "LANGUAGE_REQUIRED": "Pflichtfeld",
       "LEXREGION_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "NAME_REQUIRED": "Pflichtfeld",
       "PHONE_REQUIRED": "Pflichtfeld",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
       "PRIORITY_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
       "SECRETACCESSKEY_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
       "TEXT_REQUIRED": "Pflichtfeld",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "TIMEOUT_REQUIRED": "Pflichtfeld",
       "TIMES_REQUIRED": "Pflichtfeld",
       "TOKEN_REQUIRED": "Pflichtfeld",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
       "TRUEPRIORITY_REQUIRED": "Pflichtfeld",
       "TYPE_REQUIRED": "Pflichtfeld",
       "VALUE_REQUIRED": "Pflichtfeld",
       "VARIABLE_REQUIRED": "Pflichtfeld",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "WELCOMEMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "WELCOMEMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
       "WELCOMEMESSAGE_REQUIRED": "Pflichtfeld",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld"
     },
     "HELP": {
-      "LIST": "Liste für die Zuordnung von Kontakten",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
+      "LIST": "Kontaktmanagerliste zum Zuordnen von Kontakten",
+      "MANDATORYDISPOSITION": "Obligatorische Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
       "MOTIONPROXY": "Das Feld muss das folgende Format haben: <Protokoll>: // <IP-Adresse> [: <Port>]. Beispiel: https: //X.Y.Z.W",
       "NAME": "Es werden nur Zahlen, Buchstaben und bestimmte Zeichen (._) unterstützt",
       "RECEIVEURL": "Dies ist die automatisch generierte API-Zeichenfolge, die Sie zum Empfangen der Nachrichten in Ihrem Konto von Ihrem WhatsApp Connector-Anbieter verwenden müssen (POST-Methode muss verwendet werden): Klicken Sie auf die Schaltfläche in der Zwischenablage, um sie zu kopieren",
-      "WELCOMEMESSAGE": "Dies ist die erste Antwortnachricht, welche bei einer neuen Interaktion gesendet wird"
+      "WELCOMEMESSAGE": "Dies ist die erste Antwortnachricht, die an neue Interaktionen gesendet wird"
     },
     "ACCESSKEYID": "Zugriffsschlüssel-ID",
-    "ACCOUNTSID": "Konto-ID",
+    "ACCOUNTSID": "Konto-SID",
     "ACTIONS": "Aktionen",
     "ADD_NOTE": "Notiz hinzufügen",
-    "ADD_WHATSAPPACCOUNT": "Whatsapp Konto konzufügen",
-    "ADD_WHATSAPPCANNEDANSWER": "Textvorlage hinzufügen",
-    "ADD_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung hinzufügen",
+    "ADD_WHATSAPPACCOUNT": "Hinzufügen",
+    "ADD_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "ADD_WHATSAPPDISPOSITION": "WhatsApp Disposition hinzufügen",
     "ADD_WHATSAPPQUEUE": "WhatsApp-Warteschlange hinzufügen",
-    "ADVANCED": "Erweitert",
+    "ADVANCED": "Fortgeschrittene",
     "AGENT": "Agent",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "AGENTADD_WHATSAPPACCOUNT": "Agenten zum WhatsApp-Konto hinzufügen",
-    "AGENTADD_WHATSAPPQUEUE": "Agenten zur WhatsApp-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
+    "AGENTADD_WHATSAPPACCOUNT": "Agent zum WhatsApp-Konto hinzufügen",
+    "AGENTADD_WHATSAPPQUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
     "AGENTS": "Agenten",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "AGENTTRANSFER": "Transfer Agent",
-    "AGENTTRANSFERTIMEOUT": "Timeout Agententransfer",
-    "AGENT_TIMEOUT": "Timeout Agent",
+    "AGENTSADD_QUEUE": "Hinzufügen von Agenten zur WhatsApp-Warteschlange",
+    "AGENTTRANSFER": "Agententransfer",
+    "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung bei der Agentenübertragung",
+    "AGENT_TIMEOUT": "Agent Timeout",
     "ALL": "Alles",
     "ALL_AGENTS": "Alle Agenten",
     "ALL_TEAMS": "Alle Teams",
     "AUTHTOKEN": "Auth Token",
     "AUTOREPLY": "Automatische Antwort",
     "BACK": "Zurück",
-    "BOTNAME": "Botname",
+    "BOTNAME": "Bot Name",
     "BUSY": "Beschäftigt",
-    "CANNEDANSWERS": "Textvorlagen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "CANNED_ANSWER_SEARCH": "Suchen nach Textvorlagen",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
     "CAPACITY": "Kapazität",
     "CLOSE": "Schließen",
     "CLOSED": "Geschlossen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "COMMAND": "Eingabe",
+    "COMMAND": "Befehl",
     "CONDITION": "Bedingung",
     "CONTACT": "Kontakt",
-    "CREATED_AT": "Erstellt am",
-    "DEFAULT_PAUSE": "Standard Pause",
+    "CREATED_AT": "Hergestellt in",
+    "DEFAULT_PAUSE": "STANDARD PAUSE",
     "DELETE": "Löschen",
     "DELETE_INTERACTION": "Interaktion löschen",
     "DELETE_SELECTED": "Ausgewählte löschen",
     "DELETE_WHATSAPPACCOUNT": "WhatsApp-Konto löschen",
-    "DELETE_WHATSAPPCANNEDANSWER": "Textvorlage löschen",
-    "DELETE_WHATSAPPDISPOSITION": "Qualifizierung löschen",
+    "DELETE_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort löschen",
+    "DELETE_WHATSAPPDISPOSITION": "WhatsApp-Disposition löschen",
     "DELETE_WHATSAPPQUEUE": "WhatsApp-Warteschlange löschen",
     "DESCRIPTION": "Beschreibung",
     "DIALOGFLOW": "DialogFlow",
-    "DISPOSITION": "Qualifizierung",
-    "DISPOSITIONS": "Qualifizierungen",
-    "DOWNLOAD_INTERACTION": "Interaktion herunterladen",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
-    "EDIT_AGENT": "Agenten bearbeiten",
-    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
+    "DISPOSITION": "Anordnung",
+    "DISPOSITIONS": "Dispositionen",
+    "DOWNLOAD_INTERACTION": "Herunterladen",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Ohne Anhänge herunterladen",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "EDIT_AGENT": "Agent bearbeiten",
+    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
-    "EDIT_DIALOGFLOW": "DialogFlow-Konfiguration bearbeiten",
-    "EDIT_GOTOIF": "GoToIf bearbeiten",
-    "EDIT_GOTOP": "GoTop bearbeiten",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "EDIT_DIALOGFLOW": "Bearbeiten Sie die DialogFlow-Konfiguration",
+    "EDIT_GOTOIF": "Bearbeiten Sie Gotoif",
+    "EDIT_GOTOP": "Gotop bearbeiten",
     "EDIT_NOOP": "Noop bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_SYSTEM": "System bearbeiten",
     "EDIT_TAG": "Tag bearbeiten",
     "EDIT_WHATSAPPACCOUNT": "WhatsApp-Konto bearbeiten",
-    "EDIT_WHATSAPPCANNEDANSWER": "Textvorlage bearbeiten",
-    "EDIT_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung bearbeiten",
-    "EDIT_WHATSAPPQUEUE": "Whatsapp-Warteschlange bearbeiten",
-    "FALSEPRIORITY": "Priorität falsch",
-    "GENERAL": "Allgemein",
+    "EDIT_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "EDIT_WHATSAPPDISPOSITION": "WhatsApp-Disposition bearbeiten",
+    "EDIT_WHATSAPPQUEUE": "Bearbeiten Sie die WhatsApp-Warteschlange",
+    "FALSEPRIORITY": "Falsche Priorität",
+    "GENERAL": "Allgemeines",
     "GOTOIF": "Gotoif",
     "GOTOP": "Zum Seitenanfang",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Zur Echtzeitansicht gehen",
-    "GO_TO_WHATSAPPACCOUNTS": "Zum Whatsapp-Konto gehen",
-    "ID": "ID",
+    "GOTOREALTIME_WHATSAPPQUEUE": "Wechseln Sie zur WhatsApp-Warteschlange in Echtzeit",
+    "GO_TO_WHATSAPPACCOUNTS": "Gehe zu Konto",
+    "ID": "Ich würde",
     "IDLE": "Leerlauf",
     "INSERT_MESSAGE_HERE": "Nachricht hier einfügen",
     "INTERACTIONS": "Interaktionen",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Zu Interaktionen gehen",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Gehen Sie zu Interaktionen",
     "KEY": "Schlüssel",
     "LANGUAGE": "Sprache",
     "LASTMESSAGE": "Letzte Nachricht",
-    "LEXREGION": "LexRegion",
-    "LIST": "Liste",
-    "LOGGED_IN": "Eingeloggt (Verbunden mit SIP)",
+    "LEXREGION": "Region",
+    "LIST": "Aufführen",
+    "LOGGED_IN": "Eingeloggt (SIP verbunden)",
     "LOGIN_TIME": "Anmeldezeit",
     "LOGOUT": "Ausloggen",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern erforderlich",
+    "MANDATORYDISPOSITION": "Obligatorische Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
     "MORE": "Mehr",
-    "MOTIONPROXY": "Proxy",
+    "MOTIONPROXY": "Proxy- oder Bewegungsdomäne",
     "MULTI_SELECT_TOGGLE": "Mehrfachauswahl umschalten",
     "NAME": "Name",
     "NEW_WHATSAPPACCOUNT": "Neues WhatsApp-Konto",
-    "NEW_WHATSAPPCANNEDANSWER": "Neue WhatsApp-Textvorlage",
-    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Quailifizierung",
+    "NEW_WHATSAPPCANNEDANSWER": "Neue vordefinierte WhatsApp-Antwort",
+    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Disposition",
     "NEW_WHATSAPPQUEUE": "Neue WhatsApp-Warteschlange",
     "NOOP": "Noop",
-    "NOTE": "Anmerkung",
+    "NOTE": "Hinweis",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONSOUND": "Klang",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "NO_AGENT_ONLINE": "Kein Agent online",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
-    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
-    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Keine Qualifizierungen verfügbar",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
+    "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
+    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Keine vordefinierten WhatsApp-Antworten verfügbar",
+    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Keine WhatsApp-Dispositionen verfügbar",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Keine WhatsApp-Konten verfügbar",
     "OF": "von",
     "OPENED": "Geöffnet",
     "PROXY": "Proxy",
     "QUEUE": "Warteschlange",
     "QUEUES": "Warteschlangen",
-    "QUEUETRANSFER": "Transfer an Warteschlange",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangentransfer",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
     "READY": "Bereit",
     "REALTIME": "Echtzeit",
-    "RECEIVEURL": "URL für Erhalt",
+    "RECEIVEURL": "URL erhalten",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "REMOTE": "Remote",
+    "REMOTE": "Fernbedienung",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "SAVE": "Speichern",
+    "SAVE": "sparen",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
     "SEARCH_FOR_ANYONE": "Suche",
-    "SECRETACCESSKEY": "Geheimer Schlüssel",
+    "SECRETACCESSKEY": "Zugriffsschlüsselgeheimnis",
     "SELECTED": "Ausgewählt",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "SELECTED_TEAMS": "Ausgewählte Teams",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Wählen Sie Alle",
+    "SELECT_NONE": "Nichts ausgewählt",
     "SEND": "Senden",
-    "SETTINGS": "Einstellungen",
-    "SPYINTERACTION": "Mitlesen",
-    "STARTEDAT": "Startdatum",
-    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
+    "SETTINGS": "die Einstellungen",
+    "SPYINTERACTION": "Spionage-Interaktion",
+    "STARTEDAT": "Fing an bei",
+    "START_SCREENRECORDING": "Bildschirmaufnahme starten",
     "STATUS": "Status",
     "STOP_SCREENRECORDING": "Bildschirmaufzeichnung stoppen",
     "STRATEGY": "Strategie",
     "SYSTEM": "System",
-    "TAG": "Tag",
-    "TAGS": "Tags",
+    "TAG": "Etikett",
+    "TAGS": "Stichworte",
     "TEAMADD_WHATSAPPQUEUE": "Team zur WhatsApp-Warteschlange hinzufügen",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "TEAMS_ASSOCIATION": "Mannschaftsverband",
     "TEXT": "Text",
-    "TIMEOUT": "Zeitüberschreitung",
+    "TIMEOUT": "Auszeit",
     "TIMER": "Timer",
-    "TIMES": "Zeiten",
-    "TO": "an",
-    "TOKEN": "Token",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
-    "TRANSFER": "Weiterleiten",
+    "TIMES": "Mal",
+    "TO": "Zu",
+    "TOKEN": "Zeichen",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "TRANSFER": "Transfer",
     "TRUEPRIORITY": "Wahre Priorität",
-    "TYPE": "Typ",
+    "TYPE": "Art",
     "UNPAUSE": "Pause beenden",
     "VALUE": "Wert",
     "VARIABLE": "Variable",
-    "WAITFORTHEASSIGNEDAGENT": "Auf den zugewiesenen Mitarbeiter warten",
+    "WAITFORTHEASSIGNEDAGENT": "Warten Sie auf den zugewiesenen Agenten",
     "WAITING": "Warten",
     "WELCOMEMESSAGE": "Willkommensnachricht",
     "WHATSAPP": "WhatsApp Connector",
     "WHATSAPPACCOUNTS": "WhatsApp-Konten",
-    "WHATSAPPCANNEDANSWERS": "WhatsApp-Textvorlagen",
-    "WHATSAPPDISPOSITIONS": "WhatsApp-Qualifizierungen",
+    "WHATSAPPCANNEDANSWERS": "WhatsApp vordefinierte Antworten",
+    "WHATSAPPDISPOSITIONS": "WhatsApp Dispositionen",
     "WHATSAPPQUEUES": "WhatsApp-Warteschlangen",
-    "CLIENTEMAIL": "Kunden E-Mail",
+    "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privater Schlüssel",
+    "PRIVATEKEY": "Privat Schlüssel",
     "PROJECTID": "Projekt-ID"
   }
 }
index fd8ccd9..3162f7a 100644 (file)
     "CHAT": "CHAT",
     "ACTIVITY": "Aktivität",
     "FRIENDS": "Freunde",
-    "APP_SERVERS": "Server Anwendung",
-    "USER_STATS": "Benutzer Statistiken",
-    "EVENTS": "Ereignisse",
-    "NOTES": "Notizen",
-    "QUICK_SETTINGS": "Schnelleinstellungen",
+    "APP_SERVERS": "Anwendungsserver",
+    "USER_STATS": "Benutzer Stats",
+    "EVENTS": "Veranstaltungen",
+    "NOTES": "Hinweise",
+    "QUICK_SETTINGS": "Schnelle Einstellungen",
     "NOTIFICATIONS": "Benachrichtigungen",
     "CLOUD_SYNC": "Cloud Synchronisieren",
-    "RETRO_THRUSTERS": "Retro Thrusters",
-    "RECENT": "Neuste",
+    "RETRO_THRUSTERS": "Retro Triebwerke",
+    "RECENT": "Die jüngsten",
     "START_NEW_CHAT": "Neuen Chat starten",
     "BACK": "Zurück",
-    "CALL": "Anrufen",
+    "CALL": "Anruf",
     "MORE": "Mehr",
     "SEND_MESSAGE": "Nachricht senden",
-    "REPLY_PLACEHOLDER": "Nachricht eingeben und Enter drücken zum Senden",
-    "CONTACT_XCALLY_MOTION_SUPPORT": "Support kontaktieren",
+    "REPLY_PLACEHOLDER": "Geben Sie ein, und drücken Sie die Eingabetaste, um Nachricht senden",
+    "CONTACT_XCALLY_MOTION_SUPPORT": "Kontakt xCALLY Motion Support",
     "EXPIRATION_DATE": "Ablaufdatum",
     "EXPIRATION_REASON": "Ablauf Grund",
     "LICENSE": "Lizenz",
-    "NEW_TOKEN": "Neuer Token",
-    "OLD_TOKEN": "Alter Token",
+    "NEW_TOKEN": "Neue Token",
+    "OLD_TOKEN": "Alte Token",
     "SEND_EMAIL_TO": "E-Mail senden an",
     "TOKEN": "Token",
-    "EXPIRATION_REASON_MESSAGE": "Ihre Lizenz ist abgelaufen oder Ihre eindeutige ID wurde aufgrund einer Ã„nderung an Ihrem System aktualisiert. Bitte den Support kontaktieren",
-    "GRAY_PERIOD_EXPIRATION": "Ablauf Testphase",
+    "EXPIRATION_REASON_MESSAGE": "Ihre Lizenz ist abgelaufen oder Ihre Maschine eindeutige Id wurde aufgrund einer Ã„nderung an Ihrem System aktualisiert. Die xCALLY Motion Support Team Ihre alte und Ihre neue uuid senden Kontakt.",
+    "GRAY_PERIOD_EXPIRATION": "Grau Zeitraum Ablauf",
     "ERRORS": {
       "NAME_REQUIRED": "Pflichtfeld"
     },
-    "EXPIRATION_GRAY_PERIOD": "Ablauf Testphase",
-    "NO_AVAILABLE_GROUPS": "Keine Gruppen verfügbar",
-    "SAVE": "Speichern",
-    "INFO": "Information",
+    "EXPIRATION_GRAY_PERIOD": "Ablauf Grauzeit",
+    "NO_AVAILABLE_GROUPS": "Keine verfügbaren Gruppen",
+    "SAVE": "sparen",
+    "INFO": "Info",
     "NEW_CHATGROUP": "Neue Gruppe",
     "NAME": "Name",
     "MEMBERS": "Mitglieder",
@@ -65,9 +65,9 @@
     "DELETE": "Löschen",
     "SEARCH": "Suche",
     "USERS": "Benutzer",
-    "EXPIRATION_REASON_MESSAGE_GRAY": "Ihre Lizenz ist abgelaufen oder wurde deaktiviert. Bitte den Support kontaktieren.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Ihre Lizenz ist abgelaufen oder Ihre eindeutige ID wurde aufgrund einer Ã„nderung an Ihrem System aktualisiert. Bitte den Support kontaktieren",
-    "MESSENGER_DISABLED": "Internes Messaging für diesen Benutzer nicht aktiviert",
+    "EXPIRATION_REASON_MESSAGE_GRAY": "Ihre Lizenz ist abgelaufen oder wurde deaktiviert. Kontaktieren Sie xCALLY Motion Support Team.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Die eindeutige ID Ihres Rechners wurde aufgrund einer Ã„nderung Ihres Systems aktualisiert. Kontaktieren Sie xCALLY Motion Support Team, das sowohl Ihren alten als auch Ihren neuen UUID sendet.",
+    "MESSENGER_DISABLED": "Das interne Messaging ist für diesen Agenten deaktiviert!",
     "WARNING": "Warnung"
   }
 }
index 6eb58fc..1d7248b 100644 (file)
@@ -1,20 +1,20 @@
 {
   "RESETPASSWORD": {
-    "TITLE": "Passwort zurücksetzen",
-    "EMAIL_ADRESS": "E-Mail Adresse",
-    "PASSWORD": "Passwort",
-    "PASSWORD_CONFIRM": "Passwort bestätigen",
-    "UPDATE_PASSWORD": "Passwort zurücksetzen",
+    "TITLE": "Ihr Kennwort zurücksetzen",
+    "EMAIL_ADRESS": "E-mail Adresse",
+    "PASSWORD": "Kennwort",
+    "PASSWORD_CONFIRM": "Kennwort (bestätigen)",
+    "UPDATE_PASSWORD": "Kennwort zurücksetzen",
     "GO_BACK": "Zurück zum Login",
-    "PASSWORD_RESET": "Passwort zurücksetzen",
-    "PASSWORD_RESET_MESSAGE": "Das Passwort wurde erfolgreich zurückgesetzt. Sie können sich nun erneut anmelden",
-    "PASSWORD_RESET_ERROR": "Fehler beim Zurücksetzen des Passwortes",
+    "PASSWORD_RESET": "Kennwort zurücksetzen",
+    "PASSWORD_RESET_MESSAGE": "Ihr Passwort wurde korrekt zurückgesetzt wurde, können Sie sich jetzt!",
+    "PASSWORD_RESET_ERROR": "Passwort Fehler zurücksetzen",
     "ERRORS": {
-      "EMAIL_REQUIRED": "E-Mail Adresse erfoderlich",
-      "EMAIL_MUST_VALID": "E-Mail Adresse ungültig",
-      "PASSWORD_REQUIRED": "Passwort erforderlich",
+      "EMAIL_REQUIRED": "Im Feld \"E-Mail ist erforderlich",
+      "EMAIL_MUST_VALID": "E-Mail muss eine gültige e-mail Adresse",
+      "PASSWORD_REQUIRED": "Kennwort Feld ist erforderlich.",
       "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht Ã¼berein.",
-      "SECURE_PASSWORD_PATTERN": "Muss mindestens 8 Zeichen enthalten, Minimum von 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen ~!?*@#$%^&-_=+[{]}."
+      "SECURE_PASSWORD_PATTERN": "Muss mindestens 8 Zeichen enthalten, mit einem Minimum von 1 Kleinbuchstaben, Großbuchstaben, 1 numerisches und 1 Sonderzeichen ~!?*@#$%^&-_=+[{]}."
     }
   }
 }
index b6abdf2..a399ee6 100644 (file)
@@ -1,11 +1,11 @@
 {
   "TOOLBAR": {
-    "TOGGLE_NAVIGATION": "Navigation umschalten",
-    "TOGGLE_NAVIGATION_FOLD": "Navigation einklappen",
-    "TOGGLE_NAVIGATION_MODE": "Navigation Moduswechsel",
+    "TOGGLE_NAVIGATION": "Navigation wechseln",
+    "TOGGLE_NAVIGATION_FOLD": "Navigation wechseln Fach",
+    "TOGGLE_NAVIGATION_MODE": "Navigation Modus umschalten",
     "SEARCH": "Suche",
-    "USER_SETTINGS": "Nutzereinstellungen",
-    "TOGGLE_QUICK_PANEL": "Schnelles Panel umschalten",
+    "USER_SETTINGS": "Benutzereinstellungen",
+    "TOGGLE_QUICK_PANEL": "Um schnelle Panel",
     "ENGLISH": "Englisch",
     "ITALIAN": "Italienisch",
     "FRENCH": "Französisch",
     "CHINESESIMPLIFIED": "Vereinfachtes Chinesisch",
     "CHINESETRADITIONAL": "Traditionelles Chinesisch",
     "DUTCH": "Niederländisch",
-    "FINNISH": "Finnisch",
+    "FINNISH": "Finnische",
     "DANISH": "Dänisch",
     "PORTUGUESE": "Portugiesisch",
     "NORWEGIAN": "Norwegisch",
     "HINDI": "Hindi",
     "TURKISH": "Türkisch",
     "PERSIAN": "Persisch",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "LOGIN_TIME": "Login Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "PREVIEW": "Vorschau",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "NEW_PASSWORD": "Neues Passwort",
     "OLD_PASSWORD": "Altes Passwort",
     "SAVE": "Speichern",
     "TRIAL_VERSION": "Testversion",
-    "SOMEONE_LOGGED_YOU_OUT": "Sie wurden von einem anderen Benutzer abgemeldet. Erneut anmelden?",
+    "SOMEONE_LOGGED_YOU_OUT": "Jemand eingeloggt haben, möchten Sie angemeldet bleiben?",
     "STAY_LOGGED": "Angemeldet bleiben",
     "WARNING": "Warnung",
     "PAUSE": "Pause",
-    "RESUME": "Fortsetzen",
-    "NO_PAUSES_AVAILABLE": "Keine Pausen verfügbar",
-    "LATVIAN": "Lettisch",
+    "RESUME": "Lebenslauf",
+    "NO_PAUSES_AVAILABLE": "Keine Pausen zur Verfügung",
+    "LATVIAN": "Lettische",
     "POLISH": "Polnisch",
     "ERRORS": {
       "FIELD_REQUIRED": "Pflichtfeld",
       "PASSWORD_REQUIRED": "Pflichtfeld",
       "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht Ã¼berein",
-      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstaben, 1 Großbuchstaben, 1 Zahl und 1 Sonderzeichen enthalten.",
-      "PASSWORD_OLDPASSWORD_MATCH": "Die Passwörter stimmen nicht Ã¼berein"
+      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
+      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden"
     },
     "RESETPASSWORD": "Passwort zurücksetzen",
-    "PASSWORD_EXPIRE_REMAINING_DAYS": "Verbleibende Tage, bis zum Ablauf des Passwortes",
+    "PASSWORD_EXPIRE_REMAINING_DAYS": "Verbleibende Tage, bevor Ihr Passwort abläuft",
     "BROWSER_COMPATIBILITY": "Browserkompatibilität [Chrome, Opera, Safari]",
     "RECORDING": "Aufzeichnung",
-    "INVALID_LICENSE": "Lizenz ungültig",
+    "INVALID_LICENSE": "Ungültige Lizenz",
     "BROWSER": "Browser",
     "OS": "Betriebssystem",
-    "REQUIREMENTS": "Anforderungen",
+    "REQUIREMENTS": "Bedarf",
     "LICENSE": "Lizenz",
     "HTTPS": "HTTPS",
     "WEBRTCSUPPORT": "WebRTC-Unterstützung",
-    "REGISTERED": "Registriert",
+    "REGISTERED": "Eingetragen",
     "NOT_REGISTERED": "Nicht registriert",
-    "WEBRTC_LICENSE_NOT_ENABELD": "WebRTC-Lizenz ist nicht aktiviert",
-    "ATTENDED_TRANSFER": "Warmer Transfer",
+    "WEBRTC_LICENSE_NOT_ENABELD": "Die WebRTC-Lizenz ist nicht aktiviert",
+    "ATTENDED_TRANSFER": "Begleiteter Tranfer",
     "TRANSFER": "Transfer",
     "TARGET": "Ziel",
-    "CANCEL": "Abbrechen",
+    "CANCEL": "Stornieren",
     "FILENAME": "Dateiname",
     "STATUS": "Status",
     "ACTIONS": "Aktionen",
-    "SPEAKER": "Lautsprecher",
-    "RINGING": "Klingeln",
+    "SPEAKER": "Redner",
+    "RINGING": "Klingelton",
     "MICROPHONE": "Mikrofon",
     "PROFILE": "Profil",
-    "SERVICES": "Dienste",
+    "SERVICES": "Dienstleistungen",
     "AUDIO": "Audio",
     "FULLNAME": "Vollständiger Name",
     "NAME": "Name",
     "INTERNAL": "Intern",
-    "RINGINGDEVICE": "Klingeln auf Gerät",
-    "SPEAKERDEVICE": "Verwendeter Lautsprecher",
-    "MICROPHONEDEVICE": "Verwendetes Mikrofon",
+    "RINGINGDEVICE": "Klingelgerät",
+    "SPEAKERDEVICE": "Lautsprechergerät",
+    "MICROPHONEDEVICE": "Mikrofon Gerät",
     "CHANGEPASSWORD": "Passwort Ã¤ndern",
-    "SETTINGS": "Einstellungen",
+    "SETTINGS": "die Einstellungen",
     "AUTOANSWER": "Automatische Antwort",
     "INDONESIAN": "Indonesisch",
     "ARABIC": "Arabisch",
-    "CALL": "Anrufen",
+    "CALL": "Anruf",
     "PREFIXES": "Präfixe",
     "HEBREW": "Hebräisch",
-    "ESTONIAN": "Estnisch",
+    "ESTONIAN": "estnisch",
     "CZECH": "Tschechisch",
-    "BRAZILIAN": "Brasilianisch",
-    "CONFERENCE": "Konferenz mit 2 aktiven Sitzungen",
-    "CHANGE_LANGUAGE_MESSAGE": "Bitte Seite aktualisieren, um Ã„nderungen zu Ã¼bernehmen",
+    "BRAZILIAN": "Brasilianer",
+    "CONFERENCE": "Konferenz mit 2 aktiven Sessions",
+    "CHANGE_LANGUAGE_MESSAGE": "Denken Sie daran, die Seite zu aktualisieren, um die RTL-Unterstützung anzuwenden (falls aktiviert).",
     "CHANGE_LANGUAGE_TITLE": "Sprache Ã¤ndern",
     "WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Keine Audiogeräte verfügbar",
     "WEBRTC_MICROPHONE_NOT_AVAILABLE": "Kein Mikrofon vorhanden",
     "WEBRTC_SPEAKER_NOT_AVAILABLE": "Kein Lautsprecher verfügbar",
     "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
-    "LITHUANIAN": "Litauisch",
+    "LITHUANIAN": "litauisch",
     "NOTIFICATION_TITLE": "Neue Benachrichtigung von {{Absender}}",
     "NOTIFICATION_TITLE_RECIPIENT": "an {{Empfänger}}",
     "USER_FORCE_LOGOUT": "{{ip}} hat sich mit Ihren Anmeldeinformationen angemeldet.\nMehrfachanmeldungen sind nicht zulässig",
index 4f9ba95..0260fbb 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.b7a358c4.js"></script>
+  <script src="scripts/app.dd839c8d.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 55%
rename from public/scripts/app.b7a358c4.js
rename to public/scripts/app.dd839c8d.js
index 3d6c0d3..780016c 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.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,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,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,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",controller:"AgentsChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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"):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 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 a=e,n.resolve("rpc@getVoiceQueues")}).then(function(e){if(e)for(var n,t=0;t<e.rows.length;t+=1)(n=_.find(a.rows,{id:e.rows[t].id}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged","abandoned"]));return a})}],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",function(e,n,t){return 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,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,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,key,email,ListId,active,cservice,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,key,email,ListId,active,cservice,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",controller:"AgentsFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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,t,a){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,key,email,ListId,active,cservice,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,key,email,ListId,active,cservice,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,key,email,ListId,active,cservice,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})}],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","Auth",function(e,n){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","msApiProvider","msNavigationServiceProvider"],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",controller:"AgentsMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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",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",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",controller:"AgentsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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",controller:"AgentsOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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";function e(e,n,t,a){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",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:{smtps:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}]},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,data2,data1",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],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",controller:"AgentsSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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,t,a){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","Auth",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",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",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",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",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",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","Auth",function(e,n){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","msApiProvider","msNavigationServiceProvider"],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",controller:"AgentsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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",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})}],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",controller:"AgentsWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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",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 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,i,o,n,s,r,l){var d;return{getToken:e,getCurrentUser:function(){return d},getPermissions:h,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){g()?a(!0):r.userProfileSection.get({userProfileId:d.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={};g()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:d.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!!d&&d.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:d.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 f().then(function(){_.includes(d.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!g())return f().then(function(){a.forEach(function(e){_.includes(d.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:p,isAdmin:g,isLoggedIn:function(){return!!e()},isTelephone:function(){return"telephone"===d.role},isUser:v,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return i.put("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(d=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),b("LOCAL_LOGIN")}).then(function(){if(p()&&1===d.showWebBar&&d.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 p()&&0!==d.showWebBar?c(e):g()||v()?m(!0):void 0}).then(function(e){d=_.assign(d,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(u(),e()):o.resolve().then(function(){return p()&&0!==d.showWebBar?o(function(e,n){r.user.logout({id:d.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):g()||v()?m(!1):void 0}).then(function(){u(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return g()?{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:c,reloadPermissions:f,removeCookies:u,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?h(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(d=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){d=_.merge(d,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return b("SSO_LOGIN"),"/api/auth/"+e}};function e(){return i.get("motion.token")}function c(e){return o(function(n,t){r.user.login({id:d.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function m(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:d.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(){i.remove("motion.token"),d&&(n.localStorage.removeItem("motion.user:"+d.id),n.localStorage.removeItem("motion.authenticationtype"),d=null)}function p(){return"agent"===d.role}function g(){return"admin"===d.role}function v(){return"user"===d.role}function t(e){return!!d&&_.includes(d.permissions,e)}function h(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 f(){return o(function(n,t){h(d.userProfileId).then(function(e){d.permissions=e,n()}).catch(function(e){t(e)})})}function b(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService"],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(a,i,s,o){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 t(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0}function e(){"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),t()}function l(){var e=c();r.options.conditions.push(e),u()}function d(){var e=c(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),u(),r.pendingCondition.style=null,r.pendingCondition=void 0}function c(){return{name:r.selectedField.name,operator:a.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:m(r.value),displayEndValue:m(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||"id";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 m(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 u(){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=l,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=d,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(){var n=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var e=0;e<Object.keys(n.params).length;e++){var t=Object.keys(n.params)[e];"@autocomplete"===n.params[t]&&(n.params[t]=r.searchText)}{if(!r.selectedField.values)return s[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return r.selectedField.values=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=r.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return i.when(n)}).catch(function(e){o.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()})});r.selectedField.values.forEach(function(e){e.translate&&(e.name=a.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=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})));t()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?e():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),t()):t()},r.checkRange=e,r.handleKeyboardAction=function(){r.pendingCondition?d():l()}}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(u,t,p,e,a,i,n,g,s,v,h,f,b,o,A){var E=this,r=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],l=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function d(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:g.instant("TOOLBAR.WARNING"),msg:g.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:g.instant("TOOLBAR.WARNING"),msg:g.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(){new Promise(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:g.instant("TOOLBAR.WARNING"),msg:g.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:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){l.webrtc=_.pick(E.conf,r),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(l))}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 C(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 O(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 c(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",u.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function m(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 x(){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 N(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 D(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function P(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(l.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:p(function(){E.showDialpad=!1})}}),E.$onInit=function(){d(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];Promise.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();if(c.voicePause&&c.phoneBarDnd||E.originateInProgress)r=!1;else if(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&&p(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 m=0==d?500:1e3*d;console.debug("auto answer enabled after:"+m+" ms"),p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},m)}}r?(o.call_id=e.request.call_id,n&&P(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=O.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)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&P(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=O.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,C(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()})})}.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),p(function(){u.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),o.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)),o.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(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)),o.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?D(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)),o.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(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)),o.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=D(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),o.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=D(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(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)),o.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,u.$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 m(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){c()})}},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 m(e)}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(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,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):c():c()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),c())},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(){x()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){x()},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=x,u.$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}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!1)))})}),u.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),u.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),u.$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 m(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:N(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:N(E.sessions[t],"requestFailed","top right",3e3)}})})}),u.$on("$destroy",function(){console.debug("$destroy event fired"),o.removeAllListeners("webbar:originate"),o.removeAllListeners("webbar:hangup"),o.removeAllListeners("webbar:answer"),o.removeAllListeners("webbar:hold"),o.removeAllListeners("webbar:unhold"),o.removeAllListeners("webbar:transfer"),o.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","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){var t=this;function a(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=a(n,"audiooutput","ringingId"),s.speakerId=a(n,"audiooutput","speakerId"),s.microphoneId=a(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,t.conf=angular.copy(s),t.devices=n,t.saveSettings=function(){e.hide(t.conf)},t.closeDialog=function(){e.hide()},t.isCompatibleBrowser=function(){return"chrome"===t.conf.browserName.toLowerCase()||"opera"===t.conf.browserName.toLowerCase()||"safari"===t.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices"],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 a=this;a.filter=[],a.filtered=!1,a.fontSize=20,a.getCount=function(e){var n=0;if(e){a.fontSize=e.attrs[2]&&e.attrs[2].value?parseInt(e.attrs[2].value)-parseInt(e.attrs[2].value)%2:20,e.attrs[1].value&&e.attrs[1].value.length?(a.filtered=!0,a.filter=_.intersection(e.voiceQueuesSelected,e.attrs[1].value)):(a.filtered=!1,a.filter=e.voiceQueuesSelected);for(var t=0;t<e.voiceQueues.rows.length;t+=1)_.includes(a.filter,e.voiceQueues.rows[t].id)&&(n+=e.voiceQueues.rows[t][e.attrs[0].value]?parseInt(e.voiceQueues.rows[t][e.attrs[0].value]):0)}return n}})}(),function(){"use strict";function e(o,e){var r=this;r.filter=[],r.filtered=!1,r.properties=[],r.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"}}]}}},r.getMultiBarChart=function(e){e&&(e.attrs&&function(e){r.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(r.filtered=!0,r.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(r.filtered=!1,r.filter=e.voiceQueuesSelected);if(r.multiBarChart.series.length>r.properties.length){var n=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,n),r.multiBarChart.data.splice(0,n)}for(var t=0;t<r.properties.length;t+=1){if(r.multiBarChart.series[t]=o.instant("TOOLS."+r.properties[t].toUpperCase()),_.isNil(r.multiBarChart.data[t])&&(r.multiBarChart.data[t]=[]),r.multiBarChart.labels.length>r.filter.length){var a=r.multiBarChart.labels.length-r.filter.length;r.multiBarChart.labels.splice(0,a),r.multiBarChart.data[t].splice(0,a)}for(var i=0,s=0;i<e.voiceQueues.rows.length;i+=1)_.includes(r.filter,e.voiceQueues.rows[i].id)&&(r.multiBarChart.labels[s]=e.voiceQueues.rows[i].name,r.multiBarChart.data[t][s]=e.voiceQueues.rows[i][r.properties[t]]?parseInt(e.voiceQueues.rows[i][r.properties[t]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.xAxes.length;n+=1)r.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.yAxes.length;t+=1)r.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){o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),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){o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase());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 Promise.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";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;if(n)return 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("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("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()}}}}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){var t=this;t.currentUser=e.getCurrentUser(),t.cookieAlertHide=n.get("motion.cookieAlertHide:"+t.currentUser.id)||!1,t.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],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"}}),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"},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"}}}),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"}}),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"}}}),r.realtime=e(r.baseUrl+"realtime",{},{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("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){var r=this;r.progresslogin=!1,r.googleSsoEnabled=!1,r.login=function(){return r.progresslogin=!0,r.message="",s.login(r.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){r.message=e.data?e.data.message:e.message}).finally(function(){r.progresslogin=!1})},r.loginOauth=function(e){r.message="",t.location.href=s.loginSSO(e)},r.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),r.progresslogin=!0,e.put("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(){r.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}r.googleSsoEnabled=o.googleSsoEnabled},r.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting"],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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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(n){var a={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(a,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){return n[a[e]].describe().$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=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:t}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=t),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,_.pick(e.toJSON(),_.keys(n))),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,C,O,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(C,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.sms_account_id=U(C,"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(C,"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(O,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.pause_id=U(O,"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(O,"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(C,"id","name"),pause_id:U(O,"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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,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,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,_.pick(e.toJSON(),_.keys(n))),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"]),{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(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,_.pick(e.toJSON(),_.keys(n))),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){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},d.tag.get().$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(){g(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=u,m.getChatWebsiteInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"chat",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsChatRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("chat_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userChatQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userChatQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.chatPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.chatPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("chat_queue:save"),o.removeAllListeners("userChatQueue:remove"),o.removeAllListeners("userChatQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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(){C(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=C,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){C(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 C(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(){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,c.ListId=c.contact.ListId||void 0):(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!":""}),m()}).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!":""}),m()}).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!":""}),m()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=m,c.getCustomFields=function(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});l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}},c.getDateFromString=function(e){return null===e?void 0:new Date(e)}}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 C(){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 O(){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=C,S.getHistories=O,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),C())}),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),O())})}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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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){var d=this;d.currentUser=s.getCurrentUser(),d.userProfile=r,d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=s.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null),d.customDashboard={},d.voiceQueues=o&&o.count?o:{count:0,rows:[]},d.voiceQueuesSelected=o&&o.count?_.map(o.rows,"id"):[],d.interval=n(function(){},1e3),d.onChangeVoiceQueues=function(){for(var e=0;e<d.customDashboard.widgets.length;e+=1)d.customDashboard.widgets[e].voiceQueuesSelected=d.voiceQueuesSelected},d.goToEdit=function(){e.go("app.tools.customDashboards.edit",{id:d.customDashboard.id,tab:1})},i.onWithoutApply("voice_queue:save",function(e){var n=_.find(d.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return d.customDashboard=e,d.customDashboard.widgets=[],d.customDashboard.preview=!0,d.customDashboard.draggable={enabled:!1},d.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:d.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=d.voiceQueues,e.rows[n].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[n])}).catch(function(e){d.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&n.cancel(d.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","voiceQueues","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",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){var A=this;function E(e){var n={};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&(n[t]=_.pick(A.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(A.tabs[t].contact)||(n[t].contact=_.pick(A.tabs[t].contact,["id","ListId"])),_.isNil(A.tabs[t].calls)||(n[t].calls=A.tabs[t].calls),A.tabs[t].interaction&&(n[t].interaction=_.pick(A.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+A.user.id));a?(a.tabs=n,a.currentTab=A.currentTab,a.autoClose=A.autoClose):a={tabs:n,currentTab:A.currentTab,autoClose:A.autoClose},s.localStorage.setItem("motion2.user:"+A.user.id,JSON.stringify(a)),e&&y(e)}function y(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:A.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 A.tabs)A.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(A.tabs[t].channel)&&A.tabs[t].interaction&&!A.tabs[t].interaction.closed&&(n.capacity[A.tabs[t].channel]+=1,n.interaction[A.tabs[t].channel].push(A.tabs[t].interaction.id));if(!_.isEqual(A.agentCapacity,n.capacity))return A.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function S(e){A.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:A.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(A.tabs[e.id]),delete A.tabs[e.id],A.currentTab=0,E(e))}function T(e){e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,A.tabs[e.id]=e,A.currentTab=e.id,E(e)}function I(n){return _.find(A.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=A.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)&&N(t)),n){var s=_.find(A.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];A.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(D()).finally(function(){T(i)});T(i)}}else T(i)}function O(n,t){var e=_.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,A.currentTab=e.id):T(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 w(e){e&&e.uniqueid&&A.notifications[e.uniqueid]&&(a.clear(A.notifications[e.uniqueid]),delete A.notifications[e.uniqueid])}function R(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),A.tabs)if(A.tabs.hasOwnProperty(e)){var a=A.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),N(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(x(t,a.contact.id,a),1e3)}}E()}function x(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 N(e){e.disposedAt=new Date}function D(){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){A.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()})}}A.license=g,A.setting=v,A.detectBrowser=f.detectBrowser(),A.user=n.getCurrentUser(),A.currentTab=0,A.notifications={},A.tabs={},A.agentCapacity={},A.autoClose=!1,A.globalUserLists=c||{count:0,rows:[]},A.globalLists=m||{count:0,rows:[]},A.globalCompanies=u||{count:0,rows:[]},A.globalTags=p||{count:0,rows:[]},A.onClickTab=function(e){A.currentTab=e,E(A.tabs[e])},A.isActiveTab=function(e){return e===A.currentTab},A.alreadyExistsTab=I,A.addContactTab=C,A.addInteractionTab=O,A.addTab=T,A.removeTab=S,A.updateLocalStorage=E,A.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=A.user.voicePause||A.user.chatPause||A.user.mailPause||A.user.openchannelPause||A.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){A.user&&a&&!t&&d.user.unpause({id:A.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:A.user,channel:e.channel,interaction:e.interaction}}),S(e)}).catch(function(){"interaction"===e.type&&S(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(){S(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 S(e)}},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:A.user,contact:e}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(D());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(D())}),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&&T({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};T(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&T({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=I(e);if(n){if(d[e.channel+"Message"])return A.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id}).$promise.catch(D())}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(){A.notifications[e.uniqueid]=this.id},onAccept:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id,manual:!0}).$promise.then(function(e){O(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(D())},onReject:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:A.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(D())}})}var t}),t.on("notification:remove",w),t.on("voice_queue_channel:remove",R),t.on("voice_outbound_channel:remove",R),function(){var e=s.localStorage.getItem("motion2.user:"+A.user.id);if(e)try{e=JSON.parse(e),A.tabs=e.tabs?e.tabs:{},A.currentTab=e.currentTab?e.currentTab:0,A.autoClose=!!e.autoClose&&e.autoClose,y(A.tabs[A.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in A.notifications)A.notifications.hasOwnProperty(e)&&w({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"],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,i,s,o,e,t,a,r,l,d,c,m){var u=this;function p(){var e=u.selectedDisposition?u.selectedDisposition.name.toLowerCase():void 0;return{id:u.call.uniqueid,disposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,secondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,thirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?l.getCurrentUser().id:null,OwnerId:l.getCurrentUser().id}}function g(e){n.hide([e,u.autoClose])}u.isReschedule=!1,u.recallme=!1,u.queueCampaign=void 0,u.queueCampaigns={count:0,rows:[]},u.dispositions=_.orderBy(_.concat([],e.rows,t.rows),["name"],["asc"]),u.contact=r,u.call=a,u.note=u.call.note||void 0,u.dialerCall=!1,u.hasBlackLists=!1,u.availableCalls=c,u.autoClose=m,u.hopper={minDate:new Date,dateTime:new Date},u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]?(u.dialerCall=!0,o.voiceQueue.getBlackLists({id:u.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(u.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()})})):o.user.getQueues({id:l.getCurrentUser().id,fields:"id,name,dialActive",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){u.queueCampaigns=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),u.onDispositionChange=function(e){switch(e){case"first":u.selectedDisposition=u.firstLevelDisposition,u.anySecondLevelDisposition=_.some(u.dispositions,["ParentId",u.firstLevelDisposition.id]),u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.anyThirdLevelDisposition=!1;break;case"second":u.selectedDisposition=u.secondLevelDisposition,u.anyThirdLevelDisposition=_.some(u.dispositions,["ParentId",u.secondLevelDisposition.id]);break;case"third":u.selectedDisposition=u.thirdLevelDisposition}},u.clearDispositionSelection=function(e){"second"===e?(u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.selectedDisposition=u.firstLevelDisposition):"third"===e&&(u.thirdLevelDisposition=void 0,u.selectedDisposition=u.secondLevelDisposition)},u.saveDisposition=function(e){u.selectedDisposition=_.isNil(e)?u.selectedDisposition:{name:e},e&&(u.firstLevelDisposition=u.selectedDisposition);u.call.note=u.note,o.voiceCallReport.update({id:u.call.uniqueid,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,note:u.note,UserId:l.getCurrentUser().id,ContactId:u.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:u.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:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.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()})}),u.dialerCall&&(o.cmHopperFinal.update(p()).$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(p()).$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(u.selectedDisposition))g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"");else switch(u.selectedDisposition.name.toLowerCase()){case"blacklist":u.call&&u.call.variables&&u.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(u.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.NOTAVAILABLE")+" "+u.selectedDisposition}),u.selectedDisposition=void 0}).then(function(e){e&&g(u.selectedDisposition?u.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()}),g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}(u.call.variables["xmd-voicequeueid"]);break;case"reschedule":u.isReschedule=!0,u.recallme=!1;break;case"recallme":u.isReschedule=!0,u.recallme=!0;break;default:g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}},u.closeDialog=function(){n.cancel()},u.saveReschedule=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:u.recallme?l.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:u.dialerCall?Number(u.call["xmd-voicequeueid"]):u.queueCampaign?u.queueCampaign.id:null,scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:u.recallme,OwnerId:l.getCurrentUser().id}).$promise.then(function(){u.dialerCall&&o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:u.recallme}).$promise.catch(function(e){console.log(e)})}).then(function(){s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.CALL_DISPOSED")+" "+(u.recallme?d.instant("DASHBOARDS.RECALLME"):d.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).finally(function(){u.disable=!1,g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$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(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&A(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)p(c.chatInteractions.rows[n])}function u(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,m).$promise}function p(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function g(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 v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function h(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&&u(c.query.page)}}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function b(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 A(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||u()},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.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"]}}]},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().$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"}]}).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",h),l.on("chatInteraction:update",h),l.on("chatInteractionTags:save",f),l.on("chatMessage:save",b),l.on("chatMessage:update",b),l.on("user_has_chat_interactions:save",g),l.on("user_has_chat_interactions:remove",v),u(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&A()})},c.success=m,c.getChatInteractions=u,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=p,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,u())}).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().$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(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||p()},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)g(m.faxInteractions.rows[n])}function p(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,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function v(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 h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(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 p(m.query.page)}}function b(e){if(e){var n=_.find(m.faxInteractions.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(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.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"]}}]},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().$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"}]}).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",f),l.on("faxInteraction:update",f),l.on("faxInteractionTags:save",b),l.on("faxMessage:save",A),l.on("faxMessage:update",A),l.on("user_has_fax_interactions:save",v),l.on("user_has_fax_interactions:remove",h),p(m.query.page)})},m.success=u,m.getFaxInteractions=p,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=g,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,p())}).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(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&y(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)v(u.mailInteractions.rows[n])}function p(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,s).$promise}function g(e,n){o.$parent.vm.addInteractionTab("mail",n)}function v(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 h(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 f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(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&&p(u.query.page)}}function A(e){if(e){var n=_.find(u.mailInteractions.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(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 y(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||p()},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.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"]}}]},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().$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"}]}).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",b),i.on("mailInteraction:update",b),i.on("mailInteractionTags:save",A),i.on("mailMessage:save",E),i.on("mailMessage:update",E),i.on("user_has_mail_interactions:save",h),i.on("user_has_mail_interactions:remove",f),p(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&y()})},u.success=s,u.getMailInteractions=p,u.showMailInteraction=g,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=v,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,p())}).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,g(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().$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(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)g(m.openchannelInteractions.rows[n])}function p(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,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(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 h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(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&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.openchannelInteractions.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(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 E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},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.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"]}}]},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().$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"}]}).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",f),l.on("openchannelInteraction:update",f),l.on("openchannelInteractionTags:save",b),l.on("openchannelMessage:save",A),l.on("openchannelMessage:update",A),l.on("user_has_openchannel_interactions:save",v),l.on("user_has_openchannel_interactions:remove",h),p(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&E()})},m.success=u,m.getOpenchannelInteractions=p,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=g,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,p())}).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(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)g(m.smsInteractions.rows[n])}function p(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,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(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 h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(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&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.smsInteractions.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(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 E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},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.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"]}}]},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().$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"}]}).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",f),l.on("smsInteraction:update",f),l.on("smsInteractionTags:save",b),l.on("smsMessage:save",A),l.on("smsMessage:update",A),l.on("user_has_sms_interactions:save",v),l.on("user_has_sms_interactions:remove",h),p(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&E()})},m.success=u,m.getSmsInteractions=p,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=g,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,p())}).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().$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(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)g(m.whatsappInteractions.rows[n])}function p(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,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(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 h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(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&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.whatsappInteractions.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(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 E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},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.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"]}}]},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().$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"}]}).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",f),l.on("whatsappInteraction:update",f),l.on("whatsappInteractionTags:save",b),l.on("whatsappMessage:save",A),l.on("whatsappMessage:update",A),l.on("user_has_whatsapp_interactions:save",v),l.on("user_has_whatsapp_interactions:remove",h),p(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&E()})},m.success=u,m.getWhatsappInteractions=p,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=g,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,p())}).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.replace(/\n$/,"")))},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").filter("secToTime",function(){return function(e){return new Date(1e3*e).toISOString().substr(11,8)}}).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,_.pick(e.toJSON(),_.keys(n))),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){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},d.tag.get().$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(){g(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=u,m.getFaxAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"fax",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsFaxRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("fax_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userFaxQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userFaxQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.faxPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.faxPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("fax_queue:save"),o.removeAllListeners("userFaxQueue:remove"),o.removeAllListeners("userFaxQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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.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.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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,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_MAILACCOUNT",g.mailAccount=angular.copy(l),g.mailAccounts=r,g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,cservice:"null",cauthentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="MAIL.NEW_MAILACCOUNT",g.newMailAccount=!0),n.params.id&&(g.mailAccount.MailAccountId=n.params.id),g.addNewMailAccount=function(){g.errors=[],d.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),o.success({title:"MailAccount properly created",msg:g.mailAccount.name?g.mailAccount.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.mailAccount.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.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],d.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailAccount properly saved!",msg:g.mailAccount.name?g.mailAccount.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.mailAccount.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.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return o.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),o.success({title:"MailAccount properly deleted!",msg:(g.mailAccount.name||"mailAccount")+" has been deleted!"}),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++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.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.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.mailAccount&&(t=_.find(g.lists,{id:Number(g.mailAccount.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.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.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","mailAccounts","mailAccount","api","Auth","license","setting","crudPermissions"],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){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){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,u).$promise}function g(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||p(),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 v(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 h(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"]}}]},d.tag.get().$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(){g(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=u,m.getMailAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,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.mailAccount=c||t.params.mailAccount||{},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:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?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()})});t.go("app.mail.realtime.accounts",{})}},p.agentadddialog=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:p.mailAccounts?p.mailAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},p.saveMailAccount=function(){r.mailAccount.update({id:p.mailAccount.id},p.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:p.mailAccount.name?p.mailAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",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.mailAccount&&(t=_.find(p.lists,{id:Number(p.mailAccount.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.mailAccount&&(a=_.find(p.lists,{id:Number(p.mailAccount.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","mailAccount","userProfile","userProfileSection"],angular.module("app.mail").controller("MailAccountController",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.mailAccounts=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="mailAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedMailAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,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},f.arraycservice=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arrayImap.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arraySmtp.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:f.crudPermissions})},f.verifysmtpverifysmtp=function(e,n){{if(e&&e.id)return m.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){p.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});p.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},f.interactionsgoto=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:7})},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.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.mail.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailAccount")+"?").htmlContent("<b>"+(e.name||"mailAccount")+"</b> will be deleted.").ariaLabel("delete mailAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailAccount=function(e,n){i.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:f.mailAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailAccount=y,f.exportSelectedMailAccounts=function(){var e=angular.copy(f.selectedMailAccounts);return f.selectedMailAccounts=[],e},f.deleteSelectedMailAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+f.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailAccounts.forEach(function(e){y(e)}),f.selectedMailAccounts=[]})},f.deselectMailAccounts=function(){f.selectedMailAccounts=[]},f.selectAllMailAccounts=function(){f.selectedMailAccounts=f.mailAccounts.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.mailAccount&&(t=_.find(f.lists,{id:Number(f.mailAccount.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.mailAccount&&(a=_.find(f.lists,{id:Number(f.mailAccount.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.mailAccounts=e||{count:0,rows:[]}}function y(e){if(e.service)return p.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});m.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.mailAccounts.rows,{id:e.id}),f.mailAccounts.count-=1,f.mailAccounts.rows.length||f.getMailAccounts(),p.success({title:_.startCase("MailAccount")+" 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:DELETEmailAccount"}];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:DELETEmailAccount",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.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"mail",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMailRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("mail_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userMailQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userMailQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.mailPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.mailPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("mail_queue:save"),o.removeAllListeners("userMailQueue:remove"),o.removeAllListeners("userMailQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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=2,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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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",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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"outbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMotionDialerRealtimeController",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){var m=this,u=["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"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},m.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}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(_.merge(n,_.pick(e,u)),_.isNil(e.startPredictive)&&(n.startPredictive=void 0))}),o.on("userVoiceQueueRt:save",function(e){var n=_.find(m.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueueRt:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function h(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"]}}]},d.tag.get().$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(){g(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=u,m.getOpenchannelAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"openchannel",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsOpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("openchannel_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userOpenchannelQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userOpenchannelQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.openchannelPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.openchannelPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("openchannel_queue:save"),o.removeAllListeners("userOpenchannelQueue:remove"),o.removeAllListeners("userOpenchannelQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.cloudProviders=l||{count:0,rows:[]},v.table="cloudProviders",v.listOrder="",v.listOrderAsc=null,v.selectedAiTools=[],v.query={fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,page:1},v.arrayservice=_.keyBy([{option:"AmazonAWS",value:"'AmazonAWS'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:v.cloudProviders.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("cloudProvider")+"?").htmlContent("<b>"+(e.name||"cloudProvider")+"</b> will be deleted.").ariaLabel("delete cloudProvider").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getAiTools=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.cloudProvider.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="AiTools",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditCloudProvider=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:v.cloudProviders.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteCloudProvider=A,v.exportSelectedAiTools=function(){var e=angular.copy(v.selectedAiTools);return v.selectedAiTools=[],e},v.deleteSelectedAiTools=function(e){var n=i.confirm().title("Are you sure want to delete the selected cloudProviders?").htmlContent("<b>"+v.selectedAiTools.length+" selected</b> will be deleted.").ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedAiTools.forEach(function(e){A(e)}),v.selectedAiTools=[]})},v.deselectAiTools=function(){v.selectedAiTools=[]},v.selectAllAiTools=function(){v.selectedAiTools=v.cloudProviders.rows};var h=!0,f=1;function b(e){v.cloudProviders=e||{count:0,rows:[]}}function A(e){d.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(v.cloudProviders.rows,{id:e.id}),v.cloudProviders.count-=1,v.cloudProviders.rows.length||v.getAiTools(),m.success({title:_.startCase("CloudProvider")+" 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:DELETEcloudProvider"}];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:DELETEcloudProvider",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.getAiTools())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cloudProviders","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",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_CLOUDPROVIDER",p.cloudProvider=angular.copy(l),p.cloudProviders=r,p.newCloudProvider=!1,p.cloudProvider||(p.cloudProvider={},p.title="SETTINGS.NEW_CLOUDPROVIDER",p.newCloudProvider=!0),p.addNewCloudProvider=function(){p.errors=[],d.cloudProvider.save(p.cloudProvider).$promise.then(function(e){p.cloudProviders.unshift(e.toJSON()),o.success({title:"CloudProvider properly created",msg:p.cloudProvider.name?p.cloudProvider.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.cloudProvider.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.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveCloudProvider=function(){p.errors=[],d.cloudProvider.update({id:p.cloudProvider.id},p.cloudProvider).$promise.then(function(e){var n=_.find(p.cloudProviders,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CloudProvider properly saved!",msg:p.cloudProvider.name?p.cloudProvider.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.cloudProvider.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.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteCloudProvider=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The cloudProvider will be deleted.").ariaLabel("Delete CloudProvider").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cloudProvider.delete({id:p.cloudProvider.id}).$promise.then(function(){_.remove(p.cloudProviders,{id:p.cloudProvider.id}),o.success({title:"CloudProvider properly deleted!",msg:(p.cloudProvider.name||"cloudProvider")+" has been deleted!"}),g(p.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.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.cloudProvider.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","cloudProviders","cloudProvider","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,t,a,i,e,s){var o=this;o.license=i||{},o.agents=0,o.users=0,o.telephones=0,o.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"}],o.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],o.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"}],o.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],o.others=[{name:"update",icon:"icon-cloud-download"}],o.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:o.channels,modules:o.modules,addons:o.addons,sessions:o.sessions,others:o.others}})},o.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}})},o.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},s.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return o.agents=e&&e.count?e.count:0,s.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return o.users=e&&e.count?e.count:0,s.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){o.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$mdDialog","$state","license","toasty","api"],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,_.pick(e.toJSON(),_.keys(n))),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(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_SMTP",g.smtp=angular.copy(l),g.smtps=r,g.newSmtp=!1,g.smtp||(g.smtp={service:!0},g.title="SETTINGS.NEW_SMTP",g.newSmtp=!0),g.addNewSmtp=function(){g.errors=[],d.mailAccount.save(g.smtp).$promise.then(function(e){g.smtps.unshift(e.toJSON()),o.success({title:"Smtp properly created",msg:g.smtp.name?g.smtp.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.mailAccount.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.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmtp=function(){g.errors=[],d.mailAccount.update({id:g.smtp.id},g.smtp).$promise.then(function(e){var n=_.find(g.smtps,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Smtp properly saved!",msg:g.smtp.name?g.smtp.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.mailAccount.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.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmtp=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.smtp.id}).$promise.then(function(){_.remove(g.smtps,{id:g.smtp.id}),o.success({title:"Smtp properly deleted!",msg:(g.smtp.name||"smtp")+" has been deleted!"}),v(g.smtp)}).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++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.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.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smtps","smtp","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditSmtpDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.smtps=e,s.smtp={},s.smtps&&s.smtps.rows&&s.smtps.rows.length?s.smtp=s.smtps.rows[0]:s.smtp={service:!0,Smtp:{service:null}},s.saveSmtp=function(){s.smtp.id?n.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.verifySmtp=function(){s.smtp.id&&n.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){t.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){t.error({title:"Smtp not verified! Remember to save before to verify!",msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})}}e.$inject=["smtps","api","toasty","license","Auth"],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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"sms",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsSmsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("sms_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userSmsQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userSmsQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.smsPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.smsPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("sms_queue:save"),o.removeAllListeners("userSmsQueue:remove"),o.removeAllListeners("userSmsQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},d.tag.get().$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(){g(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=u,m.getSmsAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,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.agents=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="agents",f.listOrder="",f.listOrderAsc=null,f.selectedAgents=[],f.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",role:"agent",sort:"-updatedAt",limit:10,page:1},f.arrayshowWebBar=_.keyBy([{option:"Phonebar",value:"0"},{option:"External",value:"1"},{option:"WebRTC",value:"2"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'",ngIf:"vm.agent.showWebBar == 1"},{option:"wss",value:"'wss'",ngIf:"vm.agent.showWebBar == 1"},{option:"tls",value:"'tls'",ngIf:"vm.agent.showWebBar == 1"}],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.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],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.arrayextensionMonitor=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'WAV'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:f.crudPermissions})},f.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:f.agents?f.agents.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.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");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getAgents=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="Agents",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditAgent=function(e,n){i.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:f.agents.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteAgent=y,f.exportSelectedAgents=function(){var e=angular.copy(f.selectedAgents);return f.selectedAgents=[],e},f.deleteSelectedAgents=function(e){var n=i.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+f.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedAgents.forEach(function(e){y(e)}),f.selectedAgents=[]})},f.deselectAgents=function(){f.selectedAgents=[]},f.selectAllAgents=function(){f.selectedAgents=f.agents.rows};var b=!0,A=1;function E(e){f.agents=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.agents.rows,{id:e.id}),f.agents.count-=1,f.agents.rows.length||f.getAgents(),p.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){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.getAgents())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","agents","userProfile","userProfileSection","api","msUtils","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,_.pick(e.toJSON(),_.keys(n))),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:"bull"===c.channel?"voice":c.channel,type:c.direction,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:c.direction,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.QUEUEADD_AGENT_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),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_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),labelSelected:s.instant("STAFF.SELECTED_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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",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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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"}),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].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].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",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,_.pick(e.toJSON(),_.keys(n))),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.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()})})}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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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:"-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,_.pick(e.toJSON(),_.keys(n))),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()})})))):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"},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()})})}()}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(){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()})})))):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"},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()})})}()}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(){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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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-sip"},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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording","routealias"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsVoiceRealtimeController",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){var m=this,u=["loggedIn","available","waiting","talking","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting),_.merge(n,_.pick(e,u)))}),o.on("userVoiceQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userVoiceQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueue:remove"),o.removeAllListeners("userVoiceQueue:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,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.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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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){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.voiceRecording=c||e.params.voiceRecording||{},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.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},u.saveVoiceRecording=function(){r.voiceRecording.update({id:u.voiceRecording.id},u.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:u.voiceRecording.name?u.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","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){var f=this;function b(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 A(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 E(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()})})}f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceRecordings=r||{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="voiceRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceRecordings=[],f.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},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:f.crudPermissions})},f.runtranscriberuntranscribesentiment=b,f.runtranscribesentimentruntranscribesentiment=A,f.runsentimentruntranscribesentiment=E,f.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()})})},f.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()})})},f.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(){I(e)},function(){console.log("CANCEL")})},f.success=T,f.getVoiceRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceRecording.get(f.query,T).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceRecordings",f.promise=m.userProfile.getResources(f.query,T).$promise)},f.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:f.voiceRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceRecording=I,f.exportSelectedVoiceRecordings=function(){var e=angular.copy(f.selectedVoiceRecordings);return f.selectedVoiceRecordings=[],e},f.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+f.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceRecordings.forEach(function(e){I(e)}),f.selectedVoiceRecordings=[]})},f.deselectVoiceRecordings=function(){f.selectedVoiceRecordings=[]},f.selectAllVoiceRecordings=function(){f.selectedVoiceRecordings=f.voiceRecordings.rows},f.runtranscribeSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){b(e,n)}),f.selectedVoiceRecordings=[]},f.runtranscribesentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){A(e,n)}),f.selectedVoiceRecordings=[]},f.runsentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){E(e,n)}),f.selectedVoiceRecordings=[]};var y=!0,S=1;function T(e){f.voiceRecordings=e||{count:0,rows:[]}}function I(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceRecordings.rows,{id:e.id}),f.voiceRecordings.count-=1,f.voiceRecordings.rows.length||f.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){f.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){y?o(function(){y=!1}):(n||(S=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=S),f.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"whatsapp",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsWhatsappRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("whatsapp_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userWhatsappQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userWhatsappQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.whatsappPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.whatsappPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("whatsapp_queue:save"),o.removeAllListeners("userWhatsappQueue:remove"),o.removeAllListeners("userWhatsappQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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(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=[],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!":""}),v(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=[],d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.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.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!"}),v(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=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.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){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},d.tag.get().$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(){g(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=u,m.getWhatsappAccountInteractions=p,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,p()}}).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=g,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){g(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.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(){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,_.pick(e.toJSON(),_.keys(n))),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",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"}],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,_.pick(e.toJSON(),_.keys(n))),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,c){var m=this;function u(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 p(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 g(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 v(e){return _.map(e.children,function(e){return e.id})}i.clear(),m.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){m.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){m.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+m.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,u(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(v(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,p(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)g(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(v(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(v(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(v(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(v(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(v(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(v(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(v(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(v(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(v(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(v(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(v(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(v(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(v(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.AITOOLS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return!r.ai||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(v(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 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(v(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(v(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(v(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(v(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","socket"],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,l){var d=this;function c(e){_.isNil(e)&&s.cmHopper.update({id:d.preview.id,UserId:null}),a.hide()}d.customFieldsMap=l&&l.rows?_.mapValues(_.keyBy(l.rows,function(e){return"cf_"+e.id}),"name"):{},d.errors=[],d.hopperIds=[],d.preview=o,d.currentUser=r,d.originated=!1,d.disable=!1,d.disableGetContact=!1,d.hopperIds.push(d.preview.id),d.originatePreview=function(){d.originated=!0,d.disable=!0,_.isEmpty(d.preview)?(i.error({title:"Message",msg:"Contact not available"}),d.disable=!1,d.hopperIds=[],c(!0)):s.rpc.getVoiceQueuesPreview({id:d.preview.id}).$promise.then(function(e){c(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),c(!0)}).finally(function(){d.disable=!1,d.hopperIds=[]})},d.closeDialog=c,d.nextContact=function(){return d.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:d.hopperIds,direction:"next"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(d.disableGetContact=!1,d.hopperIds=[],404===e.status)d.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()})})},d.previousContact=function(){if(d.disableGetContact=!0,1<d.hopperIds.length){var e=_.without(d.hopperIds,d.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(d.hopperIds,function(e){return e==d.preview.id}),d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e)}).catch(function(e){if(404===e.status)d.hopperIds=[d.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){d.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 d.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()})})}},d.getFirstAvailableContact=function(){return d.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[d.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"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.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(){d.disableGetContact=!1})},d.isCustomField=function(e){return _.startsWith(e,"cf_")},d.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)},d.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){d.originated||s.cmHopper.update({id:d.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","currentUser","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"},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"},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 C(){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 O(){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 O(),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 O(),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;O();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(){C(),_.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&&T.currentUser.name===e.membername){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(),C(),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 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)" ng-disabled="!vm_pb.registered">\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" />\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              <div layout="row" layout-align="space-between center">\n                <md-switch 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.\' + widget.attrs[0].value | 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" 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    </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/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            <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              <form name="scriptForm" flex="100" novalidate>\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              </form>\n            </div>\n\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              </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">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\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" style="width:200px">{{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/agents/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="CHAT.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'CHAT.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'CHAT.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'CHAT.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'CHAT.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'CHAT.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'CHAT.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          {{ \'CHAT.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'CHAT.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'CHAT.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'CHAT.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'CHAT.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"CHAT.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"CHAT.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"CHAT.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"CHAT.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"CHAT.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"CHAT.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"CHAT.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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-init="vm.getCustomFields(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\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        </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        <div layout="column">\n          <span class="font-size-10" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.onChangeVoiceQueues()" ng-model="vm.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.voiceQueues.rows">{{ voiceQueue.name }}</md-option>\n          </md-select>\n        </div>\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/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">\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 mr-0">\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-card-header>\n            <md-divider></md-divider>\n            <md-card-content>\n              <div layout="row" layout-align="end center" class="reload-container">\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"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </div>\n              <div layout="column" layout-align="space-between start" class="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="mr-8">\n                  </md-icon>\n                  <span class="h1" 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"></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"></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"></md-icon>\n                  Extra: {{call.variables.extravar}}\n                </div>\n              </div>\n              <div layout="row" layout-align="end center">\n                <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised">\n                  {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                </md-button>\n              </div>\n            </md-card-content>\n          </md-card>\n          <div flex layout="row" layout-align="end 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        <md-input-container ng-if="!vm.dialerCall" class="md-block">\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              {{ queueCampaign.name }} ({{ queueCampaign.dialActive ? \'Active\' : \'Not Active\' }})</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    </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              <md-card class="tooltip-preview-text" ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}">\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" style="width:200px">{{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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'FAX.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'FAX.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'FAX.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'FAX.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'FAX.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'FAX.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          {{ \'FAX.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'FAX.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'FAX.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'FAX.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'FAX.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"FAX.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"FAX.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"FAX.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"FAX.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"FAX.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"FAX.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"FAX.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" 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      <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\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\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/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.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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="cservice" ng-model="vm.mailAccount.cservice" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'cservice\'].$error" ng-show="mailAccountForm[\'cservice\'].$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      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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">\n\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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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">\n\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      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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">\n\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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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">\n\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      <md-input-container ng-if="vm.mailAccount.cservice !== undefined && vm.mailAccount.cservice == null && vm.newMailAccount" class="md-block">\n        <md-switch ng-model="vm.mailAccount.cauthentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount" class="md-block">\n        <label translate="MAIL.USERNAME">Username</label>\n        <input type="text" name="cuser" ng-model="vm.mailAccount.cuser" ng-required="true">\n\n        <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n        <div ng-messages="mailAccountForm[\'cuser\'].$error" ng-show="mailAccountForm[\'cuser\'].$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.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount">\n        <label translate="MAIL.PASSWORD">Password</label>\n        <input type="password" name="cpassword" ng-model="vm.mailAccount.cpassword" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n        <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n        <div ng-messages="mailAccountForm[\'cpassword\'].$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\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\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 MAILACCOUNT\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  \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-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.gotogoto(vm.mailAccount, $event)" 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.agentadddialog(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) || (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  \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="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.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                <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="generalForm[\'fontFamily\'].$error" ng-show="generalForm[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="generalForm[\'fontSize\'].$error" ng-show="generalForm[\'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              <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\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          <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          <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        </md-tab-body>\n      </md-tab>\n      <md-tab>\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.SERVICE">Service</label>\n                <md-select name="Imap.service" ng-model="vm.mailAccount.Imap.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="imapForm[\'Imap.service\'].$error" ng-show="imapForm[\'Imap.service\'].$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              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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\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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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\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 ng-if="vm.mailAccount.Imap.service == null" 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 == true || vm.mailAccount.Imap.service != null" 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\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 == true || vm.mailAccount.Imap.service != null">\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\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\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">connTimeout</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\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">connTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">connTimeout 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">authTimeout</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\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">authTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">authTimeout must be a valid greater or equal than</span> <span>1</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.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.SERVICE">Service</label>\n                <md-select name="Smtp.service" ng-model="vm.mailAccount.Smtp.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$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              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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 ng-if="vm.mailAccount.Smtp.service == null" 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 ng-if="vm.mailAccount.Smtp.service == null" 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 == true || vm.mailAccount.Smtp.service != null" 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 == true || vm.mailAccount.Smtp.service != null">\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\n\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 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" style="width:200px">{{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  \x3c!-- / CONTENT --\x3e\n\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  \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.MAILACCOUNTS">MailAccounts</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.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  \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!-- MAILACCOUNT TABLE --\x3e\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 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="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">\n                <td md-cell ng-if="mailAccount.userpic"><img class="avatar" alt="{{mailAccount.name}}" ng-src="api/users/{{mailAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="id ">{{mailAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="name ">{{mailAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="key ">{{mailAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="email ">{{mailAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" 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 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="description ">{{mailAccount.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="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(mailAccount, $event    )" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit MailAccount\n                        </md-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.verifysmtpverifysmtp(mailAccount, $event    )" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          verifysmtp MailAccount\n                        </md-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(mailAccount, $event    )" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Interactions MailAccount\n                        </md-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(mailAccount, $event    )" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          goToRealtime MailAccount\n                        </md-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(mailAccount, $event    )" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          AgentAdd MailAccount\n                        </md-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(mailAccount, $event    )" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete MailAccount\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.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILACCOUNT 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 MAILACCOUNT BUTTON --\x3e\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  \x3c!-- / ADD MAILACCOUNT BUTTON --\x3e\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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MAIL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MAIL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MAIL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MAIL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MAIL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MAIL.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          {{ \'MAIL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MAIL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MAIL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MAIL.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MAIL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"MAIL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MAIL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MAIL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MAIL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"MAIL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MAIL.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MAIL.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" 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\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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MOTIONDIALER.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MOTIONDIALER.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MOTIONDIALER.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MOTIONDIALER.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MOTIONDIALER.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MOTIONDIALER.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          {{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MOTIONDIALER.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MOTIONDIALER.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MOTIONDIALER.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"MOTIONDIALER.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MOTIONDIALER.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MOTIONDIALER.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MOTIONDIALER.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"MOTIONDIALER.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MOTIONDIALER.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MOTIONDIALER.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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" style="width:200px">{{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/agents/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="OPENCHANNEL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'OPENCHANNEL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'OPENCHANNEL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'OPENCHANNEL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'OPENCHANNEL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'OPENCHANNEL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'OPENCHANNEL.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          {{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'OPENCHANNEL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'OPENCHANNEL.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'OPENCHANNEL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"OPENCHANNEL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"OPENCHANNEL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"OPENCHANNEL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"OPENCHANNEL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"OPENCHANNEL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"OPENCHANNEL.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"OPENCHANNEL.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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/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.AITOOLS">AiTools</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 md-cell ng-if="cloudProvider.userpic"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="api/users/{{cloudProvider.id}}/avatar" /></td>\n                <td md-cell ng-if="!cloudProvider.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="assets/images/avatars/profile.png" /></td>\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.arrayservice[cloudProvider.service].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="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(cloudProvider, $event    )" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-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(cloudProvider, $event    )" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\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.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.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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-value="\'AmazonAWS\'">AmazonAWS</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      <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 class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-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/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\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\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\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        </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        </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              </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 class="text-italic text-bold">{{vm.license.uuid}}</span></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 class="text-italic text-bold">{{vm.license.machineUuid}}</span></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/create/dialog.html",'<md-dialog class="smtp-dialog" aria-label="New Smtp">\n  <form name="smtpForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.ACCOUNTNAME">AccountName</label>\n        <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n        <div ng-messages="smtpForm[\'name\'].$error" ng-show="smtpForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.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="SETTINGS.EMAILADDRESS">EmailAddress</label>\n        <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="smtpForm[\'email\'].$error" ng-show="smtpForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress 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.SMTP_SERVICE">SMTP_Service</label>\n        <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\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="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\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="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n        <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n        <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_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="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n        <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n        <input type="password" name="Smtp.pass" ng-model="vm.smtp.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="smtpForm[\'Smtp.pass\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.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="SETTINGS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.smtp.description">\n\n        <div ng-messages="smtpForm[\'description\'].$error" ng-show="smtpForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.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.newSmtp" ng-click="vm.saveSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid || smtpForm.$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.newSmtp" ng-click="vm.addNewSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_SMTP" translate-attr-aria-label="SETTINGS.ADD_SMTP">\n          ADD SMTP\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmtp" ng-click="vm.deleteSmtp($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/smtps/smtps.html",'<div id="smtps" 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.SMTP">Smtp</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.smtp.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  \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="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          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n            <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.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="SETTINGS.EMAILADDRESS">EmailAddress</label>\n            <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\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.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress 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.SMTP_SERVICE">SMTP_Service</label>\n            <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n              <md-option ng-value="null">Custom</md-option>\n              <md-option ng-value="\'gmail\'">Gmail</md-option>\n              <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n              <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n              <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'Smtp.service\'].$error" ng-show="generalForm[\'Smtp.service\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.host\'].$error" ng-show="generalForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.port\'].$error" ng-show="generalForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n            <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n            <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n            <div ng-messages="generalForm[\'Smtp.user\'].$error" ng-show="generalForm[\'Smtp.user\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n            <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n            <input type="password" name="Smtp.pass" ng-model="vm.smtp.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[\'Smtp.pass\'].$error" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n              </div>\n              <div ng-message="pattern">\n                <span translate="SETTINGS.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="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.smtp.description">\n\n            <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description 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/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/agents/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="SMS.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'SMS.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'SMS.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'SMS.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'SMS.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'SMS.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'SMS.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          {{ \'SMS.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'SMS.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'SMS.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'SMS.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'SMS.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"SMS.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"SMS.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"SMS.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"SMS.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"SMS.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"SMS.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"SMS.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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" style="width:200px">{{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 ng-if="vm.table == \'users\' || vm.table == \'agents\'" 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 && (vm.table == \'users\' || vm.table == \'agents\')"><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 ">{{ vm.arrayshowWebBar[agent.showWebBar].option }}</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\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\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\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="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\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\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\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\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\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\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 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" 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 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | 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)" 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 == \'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)" 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  <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-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 == \'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-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      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-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.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-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 == \'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-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      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-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" style="width:200px">{{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" style="width:200px">{{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" 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" 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" style="width:200px">{{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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\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.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\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.order.length">\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="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"VOICE.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"VOICE.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"VOICE.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"VOICE.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" 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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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="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 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>{{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            {{ \'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.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 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/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 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" 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" 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" 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" 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 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 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 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 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/agents/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="WHATSAPP.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'WHATSAPP.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'WHATSAPP.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'WHATSAPP.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'WHATSAPP.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'WHATSAPP.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'WHATSAPP.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          {{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'WHATSAPP.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'WHATSAPP.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'WHATSAPP.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"WHATSAPP.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"WHATSAPP.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"WHATSAPP.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"WHATSAPP.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"WHATSAPP.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"WHATSAPP.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"WHATSAPP.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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-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\'" 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\'" 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      <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\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\'" 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\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              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" 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              <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\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                <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 ng-if="vm.whatsappAccount.type == \'twillo\'" class="md-block">\n                <label translate="WHATSAPP.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.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/status?token=\' + vm.whatsappAccount.token + (vm.whatsappAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.DELIVERYREPORTURL"></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" style="width:200px">{{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 translate="{{lang.translation}}">{{lang.title}}</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">Preview</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" ng-if="vm.preview">\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" privacy=\'vm.currentUser.privacyEnabled && (key === "firstName" || key === "lastName" || key === "phone" || key === "mobile" || key === "email" || key === "fax") \' ng-cloak>\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 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.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,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,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,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",controller:"AgentsChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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"):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 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 a=e,n.resolve("rpc@getVoiceQueues")}).then(function(e){if(e)for(var n,t=0;t<e.rows.length;t+=1)(n=_.find(a.rows,{id:e.rows[t].id}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged","abandoned"]));return a})}],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",function(e,n,t){return 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,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,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,key,email,ListId,active,cservice,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,key,email,ListId,active,cservice,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",controller:"AgentsFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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,t,a){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,key,email,ListId,active,cservice,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,key,email,ListId,active,cservice,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,key,email,ListId,active,cservice,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})}],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","Auth",function(e,n){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","msApiProvider","msNavigationServiceProvider"],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",controller:"AgentsMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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",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",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",controller:"AgentsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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",controller:"AgentsOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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";function e(e,n,t,a){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",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:{smtps:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}]},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,data2,data1",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],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",controller:"AgentsSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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,t,a){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","Auth",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",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",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",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",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",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","Auth",function(e,n){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","msApiProvider","msNavigationServiceProvider"],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",controller:"AgentsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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",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})}],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",controller:"AgentsWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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",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 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,i,o,n,s,r,l){var d;return{getToken:e,getCurrentUser:function(){return d},getPermissions:h,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){g()?a(!0):r.userProfileSection.get({userProfileId:d.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={};g()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:d.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!!d&&d.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:d.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 f().then(function(){_.includes(d.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!g())return f().then(function(){a.forEach(function(e){_.includes(d.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:p,isAdmin:g,isLoggedIn:function(){return!!e()},isTelephone:function(){return"telephone"===d.role},isUser:v,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return i.put("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(d=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),b("LOCAL_LOGIN")}).then(function(){if(p()&&1===d.showWebBar&&d.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 p()&&0!==d.showWebBar?c(e):g()||v()?m(!0):void 0}).then(function(e){d=_.assign(d,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(u(),e()):o.resolve().then(function(){return p()&&0!==d.showWebBar?o(function(e,n){r.user.logout({id:d.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):g()||v()?m(!1):void 0}).then(function(){u(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return g()?{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:c,reloadPermissions:f,removeCookies:u,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?h(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(d=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){d=_.merge(d,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return b("SSO_LOGIN"),"/api/auth/"+e}};function e(){return i.get("motion.token")}function c(e){return o(function(n,t){r.user.login({id:d.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function m(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:d.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(){i.remove("motion.token"),d&&(n.localStorage.removeItem("motion.user:"+d.id),n.localStorage.removeItem("motion.authenticationtype"),d=null)}function p(){return"agent"===d.role}function g(){return"admin"===d.role}function v(){return"user"===d.role}function t(e){return!!d&&_.includes(d.permissions,e)}function h(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 f(){return o(function(n,t){h(d.userProfileId).then(function(e){d.permissions=e,n()}).catch(function(e){t(e)})})}function b(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService"],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(a,i,s,o){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 t(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0}function e(){"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),t()}function l(){var e=c();r.options.conditions.push(e),u()}function d(){var e=c(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),u(),r.pendingCondition.style=null,r.pendingCondition=void 0}function c(){return{name:r.selectedField.name,operator:a.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:m(r.value),displayEndValue:m(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||"id";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 m(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 u(){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=l,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=d,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(){var n=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var e=0;e<Object.keys(n.params).length;e++){var t=Object.keys(n.params)[e];"@autocomplete"===n.params[t]&&(n.params[t]=r.searchText)}{if(!r.selectedField.values)return s[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return r.selectedField.values=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=r.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return i.when(n)}).catch(function(e){o.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()})});r.selectedField.values.forEach(function(e){e.translate&&(e.name=a.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=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})));t()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?e():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),t()):t()},r.checkRange=e,r.handleKeyboardAction=function(){r.pendingCondition?d():l()}}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(u,t,p,e,a,i,n,g,s,v,h,f,b,o,A){var E=this,r=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],l=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function d(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:g.instant("TOOLBAR.WARNING"),msg:g.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:g.instant("TOOLBAR.WARNING"),msg:g.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(){new Promise(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:g.instant("TOOLBAR.WARNING"),msg:g.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:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){l.webrtc=_.pick(E.conf,r),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(l))}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 C(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 O(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 c(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",u.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function m(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 x(){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 N(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 D(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function P(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(l.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:p(function(){E.showDialpad=!1})}}),E.$onInit=function(){d(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];Promise.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();if(c.voicePause&&c.phoneBarDnd||E.originateInProgress)r=!1;else if(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&&p(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 m=0==d?500:1e3*d;console.debug("auto answer enabled after:"+m+" ms"),p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},m)}}r?(o.call_id=e.request.call_id,n&&P(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=O.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)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&P(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=O.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,C(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()})})}.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),p(function(){u.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),o.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)),o.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(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)),o.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?D(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)),o.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(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)),o.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=D(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),o.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=D(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(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)),o.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,u.$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 m(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){c()})}},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 m(e)}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(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,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):c():c()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),c())},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(){x()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){x()},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=x,u.$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}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!1)))})}),u.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),u.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),u.$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 m(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:N(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:N(E.sessions[t],"requestFailed","top right",3e3)}})})}),u.$on("$destroy",function(){console.debug("$destroy event fired"),o.removeAllListeners("webbar:originate"),o.removeAllListeners("webbar:hangup"),o.removeAllListeners("webbar:answer"),o.removeAllListeners("webbar:hold"),o.removeAllListeners("webbar:unhold"),o.removeAllListeners("webbar:transfer"),o.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","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){var t=this;function a(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=a(n,"audiooutput","ringingId"),s.speakerId=a(n,"audiooutput","speakerId"),s.microphoneId=a(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,t.conf=angular.copy(s),t.devices=n,t.saveSettings=function(){e.hide(t.conf)},t.closeDialog=function(){e.hide()},t.isCompatibleBrowser=function(){return"chrome"===t.conf.browserName.toLowerCase()||"opera"===t.conf.browserName.toLowerCase()||"safari"===t.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices"],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 a=this;a.filter=[],a.filtered=!1,a.fontSize=20,a.getCount=function(e){var n=0;if(e){a.fontSize=e.attrs[2]&&e.attrs[2].value?parseInt(e.attrs[2].value)-parseInt(e.attrs[2].value)%2:20,e.attrs[1].value&&e.attrs[1].value.length?(a.filtered=!0,a.filter=_.intersection(e.voiceQueuesSelected,e.attrs[1].value)):(a.filtered=!1,a.filter=e.voiceQueuesSelected);for(var t=0;t<e.voiceQueues.rows.length;t+=1)_.includes(a.filter,e.voiceQueues.rows[t].id)&&(n+=e.voiceQueues.rows[t][e.attrs[0].value]?parseInt(e.voiceQueues.rows[t][e.attrs[0].value]):0)}return n}})}(),function(){"use strict";function e(o,e){var r=this;r.filter=[],r.filtered=!1,r.properties=[],r.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"}}]}}},r.getMultiBarChart=function(e){e&&(e.attrs&&function(e){r.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(r.filtered=!0,r.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(r.filtered=!1,r.filter=e.voiceQueuesSelected);if(r.multiBarChart.series.length>r.properties.length){var n=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,n),r.multiBarChart.data.splice(0,n)}for(var t=0;t<r.properties.length;t+=1){if(r.multiBarChart.series[t]=o.instant("TOOLS."+r.properties[t].toUpperCase()),_.isNil(r.multiBarChart.data[t])&&(r.multiBarChart.data[t]=[]),r.multiBarChart.labels.length>r.filter.length){var a=r.multiBarChart.labels.length-r.filter.length;r.multiBarChart.labels.splice(0,a),r.multiBarChart.data[t].splice(0,a)}for(var i=0,s=0;i<e.voiceQueues.rows.length;i+=1)_.includes(r.filter,e.voiceQueues.rows[i].id)&&(r.multiBarChart.labels[s]=e.voiceQueues.rows[i].name,r.multiBarChart.data[t][s]=e.voiceQueues.rows[i][r.properties[t]]?parseInt(e.voiceQueues.rows[i][r.properties[t]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.xAxes.length;n+=1)r.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.yAxes.length;t+=1)r.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){o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),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){o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase());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 Promise.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";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;if(n)return 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("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("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()}}}}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){var t=this;t.currentUser=e.getCurrentUser(),t.cookieAlertHide=n.get("motion.cookieAlertHide:"+t.currentUser.id)||!1,t.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],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"}}),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"},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"}}}),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"}}),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"}}}),r.realtime=e(r.baseUrl+"realtime",{},{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("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){var r=this;r.progresslogin=!1,r.googleSsoEnabled=!1,r.login=function(){return r.progresslogin=!0,r.message="",s.login(r.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){r.message=e.data?e.data.message:e.message}).finally(function(){r.progresslogin=!1})},r.loginOauth=function(e){r.message="",t.location.href=s.loginSSO(e)},r.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),r.progresslogin=!0,e.put("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(){r.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}r.googleSsoEnabled=o.googleSsoEnabled},r.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting"],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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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(n){var a={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(a,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){return n[a[e]].describe().$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=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:t}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=t),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,_.pick(e.toJSON(),_.keys(n))),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,C,O,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(C,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.sms_account_id=U(C,"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(C,"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(O,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.pause_id=U(O,"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(O,"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(C,"id","name"),pause_id:U(O,"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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,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,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,_.pick(e.toJSON(),_.keys(n))),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"]),{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(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,_.pick(e.toJSON(),_.keys(n))),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){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},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(){g(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=u,m.getChatWebsiteInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"chat",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsChatRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("chat_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userChatQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userChatQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.chatPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.chatPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("chat_queue:save"),o.removeAllListeners("userChatQueue:remove"),o.removeAllListeners("userChatQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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(){C(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=C,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){C(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 C(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(){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,c.ListId=c.contact.ListId||void 0):(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!":""}),m()}).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!":""}),m()}).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!":""}),m()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=m,c.getCustomFields=function(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});l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}},c.getDateFromString=function(e){return null===e?void 0:new Date(e)}}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 C(){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 O(){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=C,S.getHistories=O,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),C())}),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),O())})}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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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){var d=this;d.currentUser=s.getCurrentUser(),d.userProfile=r,d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=s.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null),d.customDashboard={},d.voiceQueues=o&&o.count?o:{count:0,rows:[]},d.voiceQueuesSelected=o&&o.count?_.map(o.rows,"id"):[],d.interval=n(function(){},1e3),d.onChangeVoiceQueues=function(){for(var e=0;e<d.customDashboard.widgets.length;e+=1)d.customDashboard.widgets[e].voiceQueuesSelected=d.voiceQueuesSelected},d.goToEdit=function(){e.go("app.tools.customDashboards.edit",{id:d.customDashboard.id,tab:1})},i.onWithoutApply("voice_queue:save",function(e){var n=_.find(d.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return d.customDashboard=e,d.customDashboard.widgets=[],d.customDashboard.preview=!0,d.customDashboard.draggable={enabled:!1},d.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:d.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=d.voiceQueues,e.rows[n].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[n])}).catch(function(e){d.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&n.cancel(d.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","voiceQueues","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",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){var A=this;function E(e){var n={};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&(n[t]=_.pick(A.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(A.tabs[t].contact)||(n[t].contact=_.pick(A.tabs[t].contact,["id","ListId"])),_.isNil(A.tabs[t].calls)||(n[t].calls=A.tabs[t].calls),A.tabs[t].interaction&&(n[t].interaction=_.pick(A.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+A.user.id));a?(a.tabs=n,a.currentTab=A.currentTab,a.autoClose=A.autoClose):a={tabs:n,currentTab:A.currentTab,autoClose:A.autoClose},s.localStorage.setItem("motion2.user:"+A.user.id,JSON.stringify(a)),e&&y(e)}function y(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:A.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 A.tabs)A.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(A.tabs[t].channel)&&A.tabs[t].interaction&&!A.tabs[t].interaction.closed&&(n.capacity[A.tabs[t].channel]+=1,n.interaction[A.tabs[t].channel].push(A.tabs[t].interaction.id));if(!_.isEqual(A.agentCapacity,n.capacity))return A.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function S(e){A.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:A.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(A.tabs[e.id]),delete A.tabs[e.id],A.currentTab=0,E(e))}function T(e){e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,A.tabs[e.id]=e,A.currentTab=e.id,E(e)}function I(n){return _.find(A.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=A.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)&&N(t)),n){var s=_.find(A.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];A.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(D()).finally(function(){T(i)});T(i)}}else T(i)}function O(n,t){var e=_.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,A.currentTab=e.id):T(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 w(e){e&&e.uniqueid&&A.notifications[e.uniqueid]&&(a.clear(A.notifications[e.uniqueid]),delete A.notifications[e.uniqueid])}function R(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),A.tabs)if(A.tabs.hasOwnProperty(e)){var a=A.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),N(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(x(t,a.contact.id,a),1e3)}}E()}function x(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 N(e){e.disposedAt=new Date}function D(){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){A.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()})}}A.license=g,A.setting=v,A.detectBrowser=f.detectBrowser(),A.user=n.getCurrentUser(),A.currentTab=0,A.notifications={},A.tabs={},A.agentCapacity={},A.autoClose=!1,A.globalUserLists=c||{count:0,rows:[]},A.globalLists=m||{count:0,rows:[]},A.globalCompanies=u||{count:0,rows:[]},A.globalTags=p||{count:0,rows:[]},A.onClickTab=function(e){A.currentTab=e,E(A.tabs[e])},A.isActiveTab=function(e){return e===A.currentTab},A.alreadyExistsTab=I,A.addContactTab=C,A.addInteractionTab=O,A.addTab=T,A.removeTab=S,A.updateLocalStorage=E,A.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=A.user.voicePause||A.user.chatPause||A.user.mailPause||A.user.openchannelPause||A.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){A.user&&a&&!t&&d.user.unpause({id:A.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:A.user,channel:e.channel,interaction:e.interaction}}),S(e)}).catch(function(){"interaction"===e.type&&S(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(){S(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 S(e)}},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:A.user,contact:e}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(D());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(D())}),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&&T({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};T(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&T({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=I(e);if(n){if(d[e.channel+"Message"])return A.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id}).$promise.catch(D())}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(){A.notifications[e.uniqueid]=this.id},onAccept:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id,manual:!0}).$promise.then(function(e){O(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(D())},onReject:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:A.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(D())}})}var t}),t.on("notification:remove",w),t.on("voice_queue_channel:remove",R),t.on("voice_outbound_channel:remove",R),function(){var e=s.localStorage.getItem("motion2.user:"+A.user.id);if(e)try{e=JSON.parse(e),A.tabs=e.tabs?e.tabs:{},A.currentTab=e.currentTab?e.currentTab:0,A.autoClose=!!e.autoClose&&e.autoClose,y(A.tabs[A.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in A.notifications)A.notifications.hasOwnProperty(e)&&w({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"],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,i,s,o,e,t,a,r,l,d,c,m){var u=this;function p(){var e=u.selectedDisposition?u.selectedDisposition.name.toLowerCase():void 0;return{id:u.call.uniqueid,disposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,secondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,thirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?l.getCurrentUser().id:null,OwnerId:l.getCurrentUser().id}}function g(e){n.hide([e,u.autoClose])}u.isReschedule=!1,u.recallme=!1,u.queueCampaign=void 0,u.queueCampaigns={count:0,rows:[]},u.dispositions=_.orderBy(_.concat([],e.rows,t.rows),["name"],["asc"]),u.contact=r,u.call=a,u.note=u.call.note||void 0,u.dialerCall=!1,u.hasBlackLists=!1,u.availableCalls=c,u.autoClose=m,u.hopper={minDate:new Date,dateTime:new Date},u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]?(u.dialerCall=!0,o.voiceQueue.getBlackLists({id:u.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(u.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()})})):o.user.getQueues({id:l.getCurrentUser().id,fields:"id,name,dialActive",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){u.queueCampaigns=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),u.onDispositionChange=function(e){switch(e){case"first":u.selectedDisposition=u.firstLevelDisposition,u.anySecondLevelDisposition=_.some(u.dispositions,["ParentId",u.firstLevelDisposition.id]),u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.anyThirdLevelDisposition=!1;break;case"second":u.selectedDisposition=u.secondLevelDisposition,u.anyThirdLevelDisposition=_.some(u.dispositions,["ParentId",u.secondLevelDisposition.id]);break;case"third":u.selectedDisposition=u.thirdLevelDisposition}},u.clearDispositionSelection=function(e){"second"===e?(u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.selectedDisposition=u.firstLevelDisposition):"third"===e&&(u.thirdLevelDisposition=void 0,u.selectedDisposition=u.secondLevelDisposition)},u.saveDisposition=function(e){u.selectedDisposition=_.isNil(e)?u.selectedDisposition:{name:e},e&&(u.firstLevelDisposition=u.selectedDisposition);u.call.note=u.note,o.voiceCallReport.update({id:u.call.uniqueid,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,note:u.note,UserId:l.getCurrentUser().id,ContactId:u.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:u.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:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.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()})}),u.dialerCall&&(o.cmHopperFinal.update(p()).$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(p()).$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(u.selectedDisposition))g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"");else switch(u.selectedDisposition.name.toLowerCase()){case"blacklist":u.call&&u.call.variables&&u.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(u.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.NOTAVAILABLE")+" "+u.selectedDisposition}),u.selectedDisposition=void 0}).then(function(e){e&&g(u.selectedDisposition?u.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()}),g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}(u.call.variables["xmd-voicequeueid"]);break;case"reschedule":u.isReschedule=!0,u.recallme=!1;break;case"recallme":u.isReschedule=!0,u.recallme=!0;break;default:g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}},u.closeDialog=function(){n.cancel()},u.saveReschedule=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:u.recallme?l.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:u.dialerCall?Number(u.call["xmd-voicequeueid"]):u.queueCampaign?u.queueCampaign.id:null,scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:u.recallme,OwnerId:l.getCurrentUser().id}).$promise.then(function(){u.dialerCall&&o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:u.recallme}).$promise.catch(function(e){console.log(e)})}).then(function(){s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.CALL_DISPOSED")+" "+(u.recallme?d.instant("DASHBOARDS.RECALLME"):d.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).finally(function(){u.disable=!1,g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$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(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&A(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)p(c.chatInteractions.rows[n])}function u(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,m).$promise}function p(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function g(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 v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function h(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&&u(c.query.page)}}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function b(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 A(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||u()},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.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"]}}]},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"}]}).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",h),l.on("chatInteraction:update",h),l.on("chatInteractionTags:save",f),l.on("chatMessage:save",b),l.on("chatMessage:update",b),l.on("user_has_chat_interactions:save",g),l.on("user_has_chat_interactions:remove",v),u(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&A()})},c.success=m,c.getChatInteractions=u,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=p,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,u())}).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(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||p()},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)g(m.faxInteractions.rows[n])}function p(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,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function v(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 h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(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 p(m.query.page)}}function b(e){if(e){var n=_.find(m.faxInteractions.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(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.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"]}}]},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"}]}).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",f),l.on("faxInteraction:update",f),l.on("faxInteractionTags:save",b),l.on("faxMessage:save",A),l.on("faxMessage:update",A),l.on("user_has_fax_interactions:save",v),l.on("user_has_fax_interactions:remove",h),p(m.query.page)})},m.success=u,m.getFaxInteractions=p,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=g,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,p())}).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(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&y(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)v(u.mailInteractions.rows[n])}function p(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,s).$promise}function g(e,n){o.$parent.vm.addInteractionTab("mail",n)}function v(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 h(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 f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(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&&p(u.query.page)}}function A(e){if(e){var n=_.find(u.mailInteractions.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(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 y(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||p()},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.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"]}}]},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"}]}).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",b),i.on("mailInteraction:update",b),i.on("mailInteractionTags:save",A),i.on("mailMessage:save",E),i.on("mailMessage:update",E),i.on("user_has_mail_interactions:save",h),i.on("user_has_mail_interactions:remove",f),p(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&y()})},u.success=s,u.getMailInteractions=p,u.showMailInteraction=g,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=v,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,p())}).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,g(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(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)g(m.openchannelInteractions.rows[n])}function p(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,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(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 h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(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&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.openchannelInteractions.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(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 E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},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.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"]}}]},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"}]}).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",f),l.on("openchannelInteraction:update",f),l.on("openchannelInteractionTags:save",b),l.on("openchannelMessage:save",A),l.on("openchannelMessage:update",A),l.on("user_has_openchannel_interactions:save",v),l.on("user_has_openchannel_interactions:remove",h),p(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&E()})},m.success=u,m.getOpenchannelInteractions=p,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=g,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,p())}).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(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)g(m.smsInteractions.rows[n])}function p(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,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(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 h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(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&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.smsInteractions.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(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 E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},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.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"]}}]},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"}]}).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",f),l.on("smsInteraction:update",f),l.on("smsInteractionTags:save",b),l.on("smsMessage:save",A),l.on("smsMessage:update",A),l.on("user_has_sms_interactions:save",v),l.on("user_has_sms_interactions:remove",h),p(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&E()})},m.success=u,m.getSmsInteractions=p,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=g,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,p())}).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(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)g(m.whatsappInteractions.rows[n])}function p(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,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(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 h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(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&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.whatsappInteractions.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(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 E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},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.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"]}}]},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"}]}).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",f),l.on("whatsappInteraction:update",f),l.on("whatsappInteractionTags:save",b),l.on("whatsappMessage:save",A),l.on("whatsappMessage:update",A),l.on("user_has_whatsapp_interactions:save",v),l.on("user_has_whatsapp_interactions:remove",h),p(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&E()})},m.success=u,m.getWhatsappInteractions=p,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=g,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,p())}).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.replace(/\n$/,"")))},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").filter("secToTime",function(){return function(e){return new Date(1e3*e).toISOString().substr(11,8)}}).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,_.pick(e.toJSON(),_.keys(n))),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){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},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(){g(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=u,m.getFaxAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"fax",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsFaxRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("fax_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userFaxQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userFaxQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.faxPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.faxPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("fax_queue:save"),o.removeAllListeners("userFaxQueue:remove"),o.removeAllListeners("userFaxQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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.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.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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,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_MAILACCOUNT",g.mailAccount=angular.copy(l),g.mailAccounts=r,g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,cservice:"null",cauthentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="MAIL.NEW_MAILACCOUNT",g.newMailAccount=!0),n.params.id&&(g.mailAccount.MailAccountId=n.params.id),g.addNewMailAccount=function(){g.errors=[],d.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),o.success({title:"MailAccount properly created",msg:g.mailAccount.name?g.mailAccount.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.mailAccount.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.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],d.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailAccount properly saved!",msg:g.mailAccount.name?g.mailAccount.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.mailAccount.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.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return o.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),o.success({title:"MailAccount properly deleted!",msg:(g.mailAccount.name||"mailAccount")+" has been deleted!"}),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++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.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.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.mailAccount&&(t=_.find(g.lists,{id:Number(g.mailAccount.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.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.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","mailAccounts","mailAccount","api","Auth","license","setting","crudPermissions"],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){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){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,u).$promise}function g(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||p(),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 v(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 h(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"]}}]},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(){g(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=u,m.getMailAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,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.mailAccount=c||t.params.mailAccount||{},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:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?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()})});t.go("app.mail.realtime.accounts",{})}},p.agentadddialog=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:p.mailAccounts?p.mailAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},p.saveMailAccount=function(){r.mailAccount.update({id:p.mailAccount.id},p.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:p.mailAccount.name?p.mailAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",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.mailAccount&&(t=_.find(p.lists,{id:Number(p.mailAccount.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.mailAccount&&(a=_.find(p.lists,{id:Number(p.mailAccount.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","mailAccount","userProfile","userProfileSection"],angular.module("app.mail").controller("MailAccountController",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.mailAccounts=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="mailAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedMailAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,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},f.arraycservice=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arrayImap.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arraySmtp.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:f.crudPermissions})},f.verifysmtpverifysmtp=function(e,n){{if(e&&e.id)return m.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){p.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});p.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},f.interactionsgoto=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:7})},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.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.mail.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailAccount")+"?").htmlContent("<b>"+(e.name||"mailAccount")+"</b> will be deleted.").ariaLabel("delete mailAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailAccount=function(e,n){i.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:f.mailAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailAccount=y,f.exportSelectedMailAccounts=function(){var e=angular.copy(f.selectedMailAccounts);return f.selectedMailAccounts=[],e},f.deleteSelectedMailAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+f.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailAccounts.forEach(function(e){y(e)}),f.selectedMailAccounts=[]})},f.deselectMailAccounts=function(){f.selectedMailAccounts=[]},f.selectAllMailAccounts=function(){f.selectedMailAccounts=f.mailAccounts.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.mailAccount&&(t=_.find(f.lists,{id:Number(f.mailAccount.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.mailAccount&&(a=_.find(f.lists,{id:Number(f.mailAccount.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.mailAccounts=e||{count:0,rows:[]}}function y(e){if(e.service)return p.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});m.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.mailAccounts.rows,{id:e.id}),f.mailAccounts.count-=1,f.mailAccounts.rows.length||f.getMailAccounts(),p.success({title:_.startCase("MailAccount")+" 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:DELETEmailAccount"}];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:DELETEmailAccount",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.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"mail",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMailRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("mail_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userMailQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userMailQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.mailPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.mailPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("mail_queue:save"),o.removeAllListeners("userMailQueue:remove"),o.removeAllListeners("userMailQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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=2,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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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",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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"outbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMotionDialerRealtimeController",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){var m=this,u=["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"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},m.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}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(_.merge(n,_.pick(e,u)),_.isNil(e.startPredictive)&&(n.startPredictive=void 0))}),o.on("userVoiceQueueRt:save",function(e){var n=_.find(m.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueueRt:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function h(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"]}}]},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(){g(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=u,m.getOpenchannelAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"openchannel",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsOpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("openchannel_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userOpenchannelQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userOpenchannelQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.openchannelPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.openchannelPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("openchannel_queue:save"),o.removeAllListeners("userOpenchannelQueue:remove"),o.removeAllListeners("userOpenchannelQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.cloudProviders=l||{count:0,rows:[]},v.table="cloudProviders",v.listOrder="",v.listOrderAsc=null,v.selectedAiTools=[],v.query={fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,page:1},v.arrayservice=_.keyBy([{option:"AmazonAWS",value:"'AmazonAWS'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:v.cloudProviders.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("cloudProvider")+"?").htmlContent("<b>"+(e.name||"cloudProvider")+"</b> will be deleted.").ariaLabel("delete cloudProvider").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getAiTools=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.cloudProvider.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="AiTools",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditCloudProvider=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:v.cloudProviders.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteCloudProvider=A,v.exportSelectedAiTools=function(){var e=angular.copy(v.selectedAiTools);return v.selectedAiTools=[],e},v.deleteSelectedAiTools=function(e){var n=i.confirm().title("Are you sure want to delete the selected cloudProviders?").htmlContent("<b>"+v.selectedAiTools.length+" selected</b> will be deleted.").ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedAiTools.forEach(function(e){A(e)}),v.selectedAiTools=[]})},v.deselectAiTools=function(){v.selectedAiTools=[]},v.selectAllAiTools=function(){v.selectedAiTools=v.cloudProviders.rows};var h=!0,f=1;function b(e){v.cloudProviders=e||{count:0,rows:[]}}function A(e){d.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(v.cloudProviders.rows,{id:e.id}),v.cloudProviders.count-=1,v.cloudProviders.rows.length||v.getAiTools(),m.success({title:_.startCase("CloudProvider")+" 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:DELETEcloudProvider"}];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:DELETEcloudProvider",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.getAiTools())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cloudProviders","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",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_CLOUDPROVIDER",p.cloudProvider=angular.copy(l),p.cloudProviders=r,p.newCloudProvider=!1,p.cloudProvider||(p.cloudProvider={},p.title="SETTINGS.NEW_CLOUDPROVIDER",p.newCloudProvider=!0),p.addNewCloudProvider=function(){p.errors=[],d.cloudProvider.save(p.cloudProvider).$promise.then(function(e){p.cloudProviders.unshift(e.toJSON()),o.success({title:"CloudProvider properly created",msg:p.cloudProvider.name?p.cloudProvider.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.cloudProvider.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.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveCloudProvider=function(){p.errors=[],d.cloudProvider.update({id:p.cloudProvider.id},p.cloudProvider).$promise.then(function(e){var n=_.find(p.cloudProviders,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CloudProvider properly saved!",msg:p.cloudProvider.name?p.cloudProvider.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.cloudProvider.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.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteCloudProvider=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The cloudProvider will be deleted.").ariaLabel("Delete CloudProvider").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cloudProvider.delete({id:p.cloudProvider.id}).$promise.then(function(){_.remove(p.cloudProviders,{id:p.cloudProvider.id}),o.success({title:"CloudProvider properly deleted!",msg:(p.cloudProvider.name||"cloudProvider")+" has been deleted!"}),g(p.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.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.cloudProvider.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","cloudProviders","cloudProvider","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,t,a,i,e,s){var o=this;o.license=i||{},o.agents=0,o.users=0,o.telephones=0,o.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"}],o.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],o.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"}],o.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],o.others=[{name:"update",icon:"icon-cloud-download"}],o.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:o.channels,modules:o.modules,addons:o.addons,sessions:o.sessions,others:o.others}})},o.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}})},o.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},s.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return o.agents=e&&e.count?e.count:0,s.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return o.users=e&&e.count?e.count:0,s.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){o.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$mdDialog","$state","license","toasty","api"],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,_.pick(e.toJSON(),_.keys(n))),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(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_SMTP",g.smtp=angular.copy(l),g.smtps=r,g.newSmtp=!1,g.smtp||(g.smtp={service:!0},g.title="SETTINGS.NEW_SMTP",g.newSmtp=!0),g.addNewSmtp=function(){g.errors=[],d.mailAccount.save(g.smtp).$promise.then(function(e){g.smtps.unshift(e.toJSON()),o.success({title:"Smtp properly created",msg:g.smtp.name?g.smtp.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.mailAccount.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.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmtp=function(){g.errors=[],d.mailAccount.update({id:g.smtp.id},g.smtp).$promise.then(function(e){var n=_.find(g.smtps,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Smtp properly saved!",msg:g.smtp.name?g.smtp.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.mailAccount.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.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmtp=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.smtp.id}).$promise.then(function(){_.remove(g.smtps,{id:g.smtp.id}),o.success({title:"Smtp properly deleted!",msg:(g.smtp.name||"smtp")+" has been deleted!"}),v(g.smtp)}).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++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.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.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smtps","smtp","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditSmtpDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.smtps=e,s.smtp={},s.smtps&&s.smtps.rows&&s.smtps.rows.length?s.smtp=s.smtps.rows[0]:s.smtp={service:!0,Smtp:{service:null}},s.saveSmtp=function(){s.smtp.id?n.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.verifySmtp=function(){s.smtp.id&&n.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){t.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){t.error({title:"Smtp not verified! Remember to save before to verify!",msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})}}e.$inject=["smtps","api","toasty","license","Auth"],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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"sms",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsSmsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("sms_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userSmsQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userSmsQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.smsPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.smsPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("sms_queue:save"),o.removeAllListeners("userSmsQueue:remove"),o.removeAllListeners("userSmsQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},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(){g(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=u,m.getSmsAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,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.agents=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="agents",f.listOrder="",f.listOrderAsc=null,f.selectedAgents=[],f.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",role:"agent",sort:"-updatedAt",limit:10,page:1},f.arrayshowWebBar=_.keyBy([{option:"Phonebar",value:"0"},{option:"External",value:"1"},{option:"WebRTC",value:"2"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'",ngIf:"vm.agent.showWebBar == 1"},{option:"wss",value:"'wss'",ngIf:"vm.agent.showWebBar == 1"},{option:"tls",value:"'tls'",ngIf:"vm.agent.showWebBar == 1"}],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.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],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.arrayextensionMonitor=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'WAV'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:f.crudPermissions})},f.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:f.agents?f.agents.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.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");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getAgents=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="Agents",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditAgent=function(e,n){i.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:f.agents.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteAgent=y,f.exportSelectedAgents=function(){var e=angular.copy(f.selectedAgents);return f.selectedAgents=[],e},f.deleteSelectedAgents=function(e){var n=i.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+f.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedAgents.forEach(function(e){y(e)}),f.selectedAgents=[]})},f.deselectAgents=function(){f.selectedAgents=[]},f.selectAllAgents=function(){f.selectedAgents=f.agents.rows};var b=!0,A=1;function E(e){f.agents=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.agents.rows,{id:e.id}),f.agents.count-=1,f.agents.rows.length||f.getAgents(),p.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){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.getAgents())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","agents","userProfile","userProfileSection","api","msUtils","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,_.pick(e.toJSON(),_.keys(n))),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:"bull"===c.channel?"voice":c.channel,type:c.direction,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:c.direction,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.QUEUEADD_AGENT_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),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_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),labelSelected:s.instant("STAFF.SELECTED_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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",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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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"}),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].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].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",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,_.pick(e.toJSON(),_.keys(n))),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.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()})})}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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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()})})))):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"},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()})})}()}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(){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()})})))):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"},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()})})}()}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(){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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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-sip"},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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording","routealias"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsVoiceRealtimeController",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){var m=this,u=["loggedIn","available","waiting","talking","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting),_.merge(n,_.pick(e,u)))}),o.on("userVoiceQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userVoiceQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueue:remove"),o.removeAllListeners("userVoiceQueue:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,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.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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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){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.voiceRecording=c||e.params.voiceRecording||{},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.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},u.saveVoiceRecording=function(){r.voiceRecording.update({id:u.voiceRecording.id},u.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:u.voiceRecording.name?u.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","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){var f=this;function b(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 A(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 E(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()})})}f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceRecordings=r||{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="voiceRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceRecordings=[],f.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},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:f.crudPermissions})},f.runtranscriberuntranscribesentiment=b,f.runtranscribesentimentruntranscribesentiment=A,f.runsentimentruntranscribesentiment=E,f.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()})})},f.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()})})},f.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(){I(e)},function(){console.log("CANCEL")})},f.success=T,f.getVoiceRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceRecording.get(f.query,T).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceRecordings",f.promise=m.userProfile.getResources(f.query,T).$promise)},f.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:f.voiceRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceRecording=I,f.exportSelectedVoiceRecordings=function(){var e=angular.copy(f.selectedVoiceRecordings);return f.selectedVoiceRecordings=[],e},f.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+f.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceRecordings.forEach(function(e){I(e)}),f.selectedVoiceRecordings=[]})},f.deselectVoiceRecordings=function(){f.selectedVoiceRecordings=[]},f.selectAllVoiceRecordings=function(){f.selectedVoiceRecordings=f.voiceRecordings.rows},f.runtranscribeSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){b(e,n)}),f.selectedVoiceRecordings=[]},f.runtranscribesentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){A(e,n)}),f.selectedVoiceRecordings=[]},f.runsentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){E(e,n)}),f.selectedVoiceRecordings=[]};var y=!0,S=1;function T(e){f.voiceRecordings=e||{count:0,rows:[]}}function I(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceRecordings.rows,{id:e.id}),f.voiceRecordings.count-=1,f.voiceRecordings.rows.length||f.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){f.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){y?o(function(){y=!1}):(n||(S=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=S),f.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"whatsapp",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsWhatsappRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("whatsapp_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userWhatsappQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userWhatsappQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.whatsappPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.whatsappPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("whatsapp_queue:save"),o.removeAllListeners("userWhatsappQueue:remove"),o.removeAllListeners("userWhatsappQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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(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=[],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!":""}),v(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=[],d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.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.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!"}),v(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=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.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){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},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(){g(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=u,m.getWhatsappAccountInteractions=p,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,p()}}).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=g,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){g(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.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(){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,_.pick(e.toJSON(),_.keys(n))),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",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"}],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,_.pick(e.toJSON(),_.keys(n))),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,c){var m=this;function u(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 p(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 g(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 v(e){return _.map(e.children,function(e){return e.id})}i.clear(),m.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){m.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){m.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+m.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,u(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(v(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,p(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)g(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(v(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(v(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(v(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(v(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(v(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(v(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(v(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(v(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(v(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(v(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(v(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(v(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(v(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.AITOOLS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return!r.ai||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(v(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 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(v(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(v(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(v(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(v(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","socket"],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,l){var d=this;function c(e){_.isNil(e)&&s.cmHopper.update({id:d.preview.id,UserId:null}),a.hide()}d.customFieldsMap=l&&l.rows?_.mapValues(_.keyBy(l.rows,function(e){return"cf_"+e.id}),"name"):{},d.errors=[],d.hopperIds=[],d.preview=o,d.currentUser=r,d.originated=!1,d.disable=!1,d.disableGetContact=!1,d.hopperIds.push(d.preview.id),d.originatePreview=function(){d.originated=!0,d.disable=!0,_.isEmpty(d.preview)?(i.error({title:"Message",msg:"Contact not available"}),d.disable=!1,d.hopperIds=[],c(!0)):s.rpc.getVoiceQueuesPreview({id:d.preview.id}).$promise.then(function(e){c(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),c(!0)}).finally(function(){d.disable=!1,d.hopperIds=[]})},d.closeDialog=c,d.nextContact=function(){return d.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:d.hopperIds,direction:"next"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(d.disableGetContact=!1,d.hopperIds=[],404===e.status)d.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()})})},d.previousContact=function(){if(d.disableGetContact=!0,1<d.hopperIds.length){var e=_.without(d.hopperIds,d.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(d.hopperIds,function(e){return e==d.preview.id}),d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e)}).catch(function(e){if(404===e.status)d.hopperIds=[d.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){d.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 d.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()})})}},d.getFirstAvailableContact=function(){return d.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[d.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"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.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(){d.disableGetContact=!1})},d.isCustomField=function(e){return _.startsWith(e,"cf_")},d.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)},d.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){d.originated||s.cmHopper.update({id:d.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","currentUser","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"},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"},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 C(){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 O(){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 O(),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 O(),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;O();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(){C(),_.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&&T.currentUser.name===e.membername){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(),C(),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 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)" ng-disabled="!vm_pb.registered">\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" />\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              <div layout="row" layout-align="space-between center">\n                <md-switch 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.\' + widget.attrs[0].value | 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" 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    </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/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            <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              <form name="scriptForm" flex="100" novalidate>\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              </form>\n            </div>\n\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              </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">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\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" style="width:200px">{{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/agents/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="CHAT.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'CHAT.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'CHAT.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'CHAT.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'CHAT.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'CHAT.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'CHAT.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          {{ \'CHAT.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'CHAT.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'CHAT.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'CHAT.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'CHAT.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"CHAT.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"CHAT.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"CHAT.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"CHAT.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"CHAT.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"CHAT.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"CHAT.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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-init="vm.getCustomFields(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\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        </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        <div layout="column">\n          <span class="font-size-10" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.onChangeVoiceQueues()" ng-model="vm.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.voiceQueues.rows">{{ voiceQueue.name }}</md-option>\n          </md-select>\n        </div>\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/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">\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 mr-0">\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-card-header>\n            <md-divider></md-divider>\n            <md-card-content>\n              <div layout="row" layout-align="end center" class="reload-container">\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"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </div>\n              <div layout="column" layout-align="space-between start" class="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="mr-8">\n                  </md-icon>\n                  <span class="h1" 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"></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"></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"></md-icon>\n                  Extra: {{call.variables.extravar}}\n                </div>\n              </div>\n              <div layout="row" layout-align="end center">\n                <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised">\n                  {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                </md-button>\n              </div>\n            </md-card-content>\n          </md-card>\n          <div flex layout="row" layout-align="end 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        <md-input-container ng-if="!vm.dialerCall" class="md-block">\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              {{ queueCampaign.name }} ({{ queueCampaign.dialActive ? \'Active\' : \'Not Active\' }})</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    </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              <md-card class="tooltip-preview-text" ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}">\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" style="width:200px">{{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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'FAX.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'FAX.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'FAX.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'FAX.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'FAX.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'FAX.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          {{ \'FAX.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'FAX.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'FAX.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'FAX.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'FAX.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"FAX.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"FAX.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"FAX.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"FAX.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"FAX.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"FAX.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"FAX.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" 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      <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\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\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/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.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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="cservice" ng-model="vm.mailAccount.cservice" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'cservice\'].$error" ng-show="mailAccountForm[\'cservice\'].$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      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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">\n\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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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">\n\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      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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">\n\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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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">\n\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      <md-input-container ng-if="vm.mailAccount.cservice !== undefined && vm.mailAccount.cservice == null && vm.newMailAccount" class="md-block">\n        <md-switch ng-model="vm.mailAccount.cauthentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount" class="md-block">\n        <label translate="MAIL.USERNAME">Username</label>\n        <input type="text" name="cuser" ng-model="vm.mailAccount.cuser" ng-required="true">\n\n        <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n        <div ng-messages="mailAccountForm[\'cuser\'].$error" ng-show="mailAccountForm[\'cuser\'].$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.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount">\n        <label translate="MAIL.PASSWORD">Password</label>\n        <input type="password" name="cpassword" ng-model="vm.mailAccount.cpassword" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n        <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n        <div ng-messages="mailAccountForm[\'cpassword\'].$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\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\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 MAILACCOUNT\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  \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-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.gotogoto(vm.mailAccount, $event)" 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.agentadddialog(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) || (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  \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="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.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                <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="generalForm[\'fontFamily\'].$error" ng-show="generalForm[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="generalForm[\'fontSize\'].$error" ng-show="generalForm[\'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              <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\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          <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          <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        </md-tab-body>\n      </md-tab>\n      <md-tab>\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.SERVICE">Service</label>\n                <md-select name="Imap.service" ng-model="vm.mailAccount.Imap.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="imapForm[\'Imap.service\'].$error" ng-show="imapForm[\'Imap.service\'].$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              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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\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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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\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 ng-if="vm.mailAccount.Imap.service == null" 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 == true || vm.mailAccount.Imap.service != null" 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\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 == true || vm.mailAccount.Imap.service != null">\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\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\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">connTimeout</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\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">connTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">connTimeout 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">authTimeout</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\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">authTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">authTimeout must be a valid greater or equal than</span> <span>1</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.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.SERVICE">Service</label>\n                <md-select name="Smtp.service" ng-model="vm.mailAccount.Smtp.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$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              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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 ng-if="vm.mailAccount.Smtp.service == null" 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 ng-if="vm.mailAccount.Smtp.service == null" 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 == true || vm.mailAccount.Smtp.service != null" 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 == true || vm.mailAccount.Smtp.service != null">\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\n\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 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" style="width:200px">{{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  \x3c!-- / CONTENT --\x3e\n\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  \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.MAILACCOUNTS">MailAccounts</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.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  \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!-- MAILACCOUNT TABLE --\x3e\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 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="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">\n                <td md-cell ng-if="mailAccount.userpic"><img class="avatar" alt="{{mailAccount.name}}" ng-src="api/users/{{mailAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="id ">{{mailAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="name ">{{mailAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="key ">{{mailAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="email ">{{mailAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" 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 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="description ">{{mailAccount.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="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(mailAccount, $event    )" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit MailAccount\n                        </md-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.verifysmtpverifysmtp(mailAccount, $event    )" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          verifysmtp MailAccount\n                        </md-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(mailAccount, $event    )" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Interactions MailAccount\n                        </md-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(mailAccount, $event    )" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          goToRealtime MailAccount\n                        </md-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(mailAccount, $event    )" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          AgentAdd MailAccount\n                        </md-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(mailAccount, $event    )" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete MailAccount\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.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILACCOUNT 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 MAILACCOUNT BUTTON --\x3e\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  \x3c!-- / ADD MAILACCOUNT BUTTON --\x3e\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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MAIL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MAIL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MAIL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MAIL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MAIL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MAIL.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          {{ \'MAIL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MAIL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MAIL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MAIL.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MAIL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"MAIL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MAIL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MAIL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MAIL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"MAIL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MAIL.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MAIL.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" 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\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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MOTIONDIALER.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MOTIONDIALER.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MOTIONDIALER.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MOTIONDIALER.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MOTIONDIALER.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MOTIONDIALER.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          {{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MOTIONDIALER.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MOTIONDIALER.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MOTIONDIALER.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"MOTIONDIALER.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MOTIONDIALER.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MOTIONDIALER.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MOTIONDIALER.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"MOTIONDIALER.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MOTIONDIALER.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MOTIONDIALER.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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" style="width:200px">{{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/agents/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="OPENCHANNEL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'OPENCHANNEL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'OPENCHANNEL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'OPENCHANNEL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'OPENCHANNEL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'OPENCHANNEL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'OPENCHANNEL.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          {{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'OPENCHANNEL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'OPENCHANNEL.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'OPENCHANNEL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"OPENCHANNEL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"OPENCHANNEL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"OPENCHANNEL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"OPENCHANNEL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"OPENCHANNEL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"OPENCHANNEL.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"OPENCHANNEL.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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/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.AITOOLS">AiTools</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 md-cell ng-if="cloudProvider.userpic"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="api/users/{{cloudProvider.id}}/avatar" /></td>\n                <td md-cell ng-if="!cloudProvider.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="assets/images/avatars/profile.png" /></td>\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.arrayservice[cloudProvider.service].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="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(cloudProvider, $event    )" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-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(cloudProvider, $event    )" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\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.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.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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-value="\'AmazonAWS\'">AmazonAWS</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      <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 class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-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/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\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\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\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        </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        </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              </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 class="text-italic text-bold">{{vm.license.uuid}}</span></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 class="text-italic text-bold">{{vm.license.machineUuid}}</span></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/create/dialog.html",'<md-dialog class="smtp-dialog" aria-label="New Smtp">\n  <form name="smtpForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.ACCOUNTNAME">AccountName</label>\n        <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n        <div ng-messages="smtpForm[\'name\'].$error" ng-show="smtpForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.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="SETTINGS.EMAILADDRESS">EmailAddress</label>\n        <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="smtpForm[\'email\'].$error" ng-show="smtpForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress 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.SMTP_SERVICE">SMTP_Service</label>\n        <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\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="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\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="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n        <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n        <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_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="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n        <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n        <input type="password" name="Smtp.pass" ng-model="vm.smtp.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="smtpForm[\'Smtp.pass\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.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="SETTINGS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.smtp.description">\n\n        <div ng-messages="smtpForm[\'description\'].$error" ng-show="smtpForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.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.newSmtp" ng-click="vm.saveSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid || smtpForm.$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.newSmtp" ng-click="vm.addNewSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_SMTP" translate-attr-aria-label="SETTINGS.ADD_SMTP">\n          ADD SMTP\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmtp" ng-click="vm.deleteSmtp($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/smtps/smtps.html",'<div id="smtps" 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.SMTP">Smtp</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.smtp.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  \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="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          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n            <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.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="SETTINGS.EMAILADDRESS">EmailAddress</label>\n            <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\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.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress 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.SMTP_SERVICE">SMTP_Service</label>\n            <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n              <md-option ng-value="null">Custom</md-option>\n              <md-option ng-value="\'gmail\'">Gmail</md-option>\n              <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n              <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n              <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'Smtp.service\'].$error" ng-show="generalForm[\'Smtp.service\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.host\'].$error" ng-show="generalForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.port\'].$error" ng-show="generalForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n            <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n            <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n            <div ng-messages="generalForm[\'Smtp.user\'].$error" ng-show="generalForm[\'Smtp.user\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n            <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n            <input type="password" name="Smtp.pass" ng-model="vm.smtp.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[\'Smtp.pass\'].$error" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n              </div>\n              <div ng-message="pattern">\n                <span translate="SETTINGS.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="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.smtp.description">\n\n            <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description 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/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/agents/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="SMS.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'SMS.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'SMS.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'SMS.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'SMS.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'SMS.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'SMS.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          {{ \'SMS.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'SMS.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'SMS.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'SMS.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'SMS.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"SMS.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"SMS.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"SMS.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"SMS.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"SMS.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"SMS.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"SMS.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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" style="width:200px">{{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 ng-if="vm.table == \'users\' || vm.table == \'agents\'" 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 && (vm.table == \'users\' || vm.table == \'agents\')"><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 ">{{ vm.arrayshowWebBar[agent.showWebBar].option }}</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\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\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\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="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\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\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\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\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\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\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 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" 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 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | 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)" 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 == \'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)" 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  <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-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 == \'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-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      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-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.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-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 == \'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-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      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-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" style="width:200px">{{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" style="width:200px">{{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" 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" 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" style="width:200px">{{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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\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.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\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.order.length">\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="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"VOICE.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"VOICE.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"VOICE.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"VOICE.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" 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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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="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 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>{{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            {{ \'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.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 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/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 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" 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" 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" 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" 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 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 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 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 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/agents/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="WHATSAPP.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'WHATSAPP.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'WHATSAPP.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'WHATSAPP.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'WHATSAPP.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'WHATSAPP.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'WHATSAPP.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          {{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'WHATSAPP.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'WHATSAPP.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'WHATSAPP.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"WHATSAPP.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"WHATSAPP.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"WHATSAPP.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"WHATSAPP.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"WHATSAPP.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"WHATSAPP.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"WHATSAPP.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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-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\'" 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\'" 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      <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\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\'" 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\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              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" 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              <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\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                <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 ng-if="vm.whatsappAccount.type == \'twillo\'" class="md-block">\n                <label translate="WHATSAPP.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.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/status?token=\' + vm.whatsappAccount.token + (vm.whatsappAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.DELIVERYREPORTURL"></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" style="width:200px">{{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 translate="{{lang.translation}}">{{lang.title}}</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">Preview</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" ng-if="vm.preview">\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" privacy=\'vm.currentUser.privacyEnabled && (key === "firstName" || key === "lastName" || key === "phone" || key === "mobile" || key === "email" || key === "fax") \' ng-cloak>\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 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 93dec69..8c20875 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa9c=['getDataValue','action','STRING','contactManager','integration','motionbar','urlForward','browser','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','motionbar[NULL,NULL,WinAppArguments]','TEXT','sequelize','exports','VIRTUAL'];(function(_0x2f94d4,_0x32da01){var _0x5d91b4=function(_0x49ba81){while(--_0x49ba81){_0x2f94d4['push'](_0x2f94d4['shift']());}};_0x5d91b4(++_0x32da01);}(_0xfa9c,0x7b));var _0xcfa9=function(_0x5d6e53,_0x22855a){_0x5d6e53=_0x5d6e53-0x0;var _0x149733=_0xfa9c[_0x5d6e53];return _0x149733;};'use strict';var Sequelize=require(_0xcfa9('0x0'));module[_0xcfa9('0x1')]={'name':{'type':Sequelize[_0xcfa9('0x2')],'get':function(_0x5c9c4e){return this[_0xcfa9('0x3')](_0xcfa9('0x4'));}},'action':{'type':Sequelize[_0xcfa9('0x5')],'allowNull':![],'validate':{'isIn':{'args':[[_0xcfa9('0x6'),_0xcfa9('0x7'),_0xcfa9('0x8'),'jscripty',_0xcfa9('0x9'),_0xcfa9('0xa'),'bot','script']],'msg':_0xcfa9('0xb')}},'comment':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'},'data1':{'type':Sequelize[_0xcfa9('0x5')](0x1000),'comment':'contactManager[ListId],\x20integration[intName(zendesk)],\x20motionbar[Popup(0),URL(1),WinApp(2)],\x20urlForward[GET,POST],\x20browser[TemplateId(0),URL(1)]'},'data2':{'type':Sequelize[_0xcfa9('0x5')](0x1000),'comment':'integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20urlForward[URL]'},'data3':{'type':Sequelize[_0xcfa9('0x5')](0x1000),'comment':_0xcfa9('0xc')},'data4':{'type':Sequelize[_0xcfa9('0x5')](0x1000)},'data5':{'type':Sequelize[_0xcfa9('0x5')](0x1000)},'data6':{'type':Sequelize[_0xcfa9('0x5')]},'data7':{'type':Sequelize[_0xcfa9('0xd')]}};
\ No newline at end of file
+var _0x39e6=['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[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]','sequelize','VIRTUAL','action','STRING','integration','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(_0x1a028b,_0x2254cd){var _0x1da227=function(_0x2ce4d3){while(--_0x2ce4d3){_0x1a028b['push'](_0x1a028b['shift']());}};_0x1da227(++_0x2254cd);}(_0x39e6,0x9e));var _0x639e=function(_0x49fd3f,_0x1f0be1){_0x49fd3f=_0x49fd3f-0x0;var _0x243538=_0x39e6[_0x49fd3f];return _0x243538;};'use strict';var Sequelize=require(_0x639e('0x0'));module['exports']={'name':{'type':Sequelize[_0x639e('0x1')],'get':function(_0x5719fc){return this['getDataValue'](_0x639e('0x2'));}},'action':{'type':Sequelize[_0x639e('0x3')],'allowNull':![],'validate':{'isIn':{'args':[['contactManager',_0x639e('0x4'),_0x639e('0x5'),_0x639e('0x6'),_0x639e('0x7'),_0x639e('0x8'),_0x639e('0x9'),_0x639e('0xa')]],'msg':_0x639e('0xb')}},'comment':_0x639e('0xb')},'data1':{'type':Sequelize[_0x639e('0x3')](0x1000),'comment':_0x639e('0xc')},'data2':{'type':Sequelize[_0x639e('0x3')](0x1000),'comment':_0x639e('0xd')},'data3':{'type':Sequelize[_0x639e('0x3')](0x1000),'comment':_0x639e('0xe')},'data4':{'type':Sequelize[_0x639e('0x3')](0x1000),'comments':_0x639e('0xf')},'data5':{'type':Sequelize[_0x639e('0x3')](0x1000),'comments':'urlForward[timeout],\x20browser[windowWidth]'},'data6':{'type':Sequelize['STRING'],'comments':_0x639e('0x10')},'data7':{'type':Sequelize[_0x639e('0x11')],'comments':_0x639e('0x12')}};
\ No newline at end of file
index d07348d..bfdcc21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd498=['limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','body','find','catch','Action','params','rimraf','zip-dir','request-promise','moment','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','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined'];(function(_0x2d2ca2,_0x51873f){var _0x48489d=function(_0x1a2cf7){while(--_0x1a2cf7){_0x2d2ca2['push'](_0x2d2ca2['shift']());}};_0x48489d(++_0x51873f);}(_0xd498,0x144));var _0x8d49=function(_0x292f93,_0x2c6e8e){_0x292f93=_0x292f93-0x0;var _0x5a94b1=_0xd498[_0x292f93];return _0x5a94b1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8d49('0x0'));var zipdir=require(_0x8d49('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8d49('0x2'));var moment=require(_0x8d49('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x8d49('0x4'));var util=require('util');var path=require(_0x8d49('0x5'));var sox=require(_0x8d49('0x6'));var csv=require(_0x8d49('0x7'));var ejs=require(_0x8d49('0x8'));var fs=require('fs');var fs_extra=require(_0x8d49('0x9'));var _=require(_0x8d49('0xa'));var squel=require(_0x8d49('0xb'));var crypto=require(_0x8d49('0xc'));var jsforce=require(_0x8d49('0xd'));var deskjs=require(_0x8d49('0xe'));var toCsv=require(_0x8d49('0x7'));var querystring=require('querystring');var Papa=require(_0x8d49('0xf'));var Redis=require(_0x8d49('0x10'));var authService=require(_0x8d49('0x11'));var qs=require(_0x8d49('0x12'));var as=require(_0x8d49('0x13'));var hardwareService=require(_0x8d49('0x14'));var logger=require(_0x8d49('0x15'))(_0x8d49('0x16'));var utils=require(_0x8d49('0x17'));var config=require(_0x8d49('0x18'));var licenseUtil=require(_0x8d49('0x19'));var db=require(_0x8d49('0x1a'))['db'];function respondWithStatusCode(_0x56c1d6,_0x402809){_0x402809=_0x402809||0xcc;return function(_0x16e989){if(_0x16e989){return _0x56c1d6[_0x8d49('0x1b')](_0x402809);}return _0x56c1d6[_0x8d49('0x1c')](_0x402809)[_0x8d49('0x1d')]();};}function respondWithResult(_0x227d06,_0xc1c41f){_0xc1c41f=_0xc1c41f||0xc8;return function(_0x37c4e9){if(_0x37c4e9){return _0x227d06[_0x8d49('0x1c')](_0xc1c41f)[_0x8d49('0x1e')](_0x37c4e9);}};}function respondWithFilteredResult(_0x479a53,_0xd14724){return function(_0x284fec){if(_0x284fec){var _0x4ea6d4=typeof _0xd14724[_0x8d49('0x1f')]===_0x8d49('0x20')&&typeof _0xd14724[_0x8d49('0x21')]===_0x8d49('0x20');var _0x234b40=_0x284fec['count'];var _0x5584c0=_0x4ea6d4?0x0:_0xd14724[_0x8d49('0x1f')];var _0x43a7a1=_0x4ea6d4?_0x284fec[_0x8d49('0x22')]:_0xd14724['offset']+_0xd14724[_0x8d49('0x21')];var _0x541e5d;if(_0x43a7a1>=_0x234b40){_0x43a7a1=_0x234b40;_0x541e5d=0xc8;}else{_0x541e5d=0xce;}_0x479a53['status'](_0x541e5d);return _0x479a53[_0x8d49('0x23')]('Content-Range',_0x5584c0+'-'+_0x43a7a1+'/'+_0x234b40)['json'](_0x284fec);}return null;};}function patchUpdates(_0x5b8bd9){return function(_0x29f209){try{jsonpatch[_0x8d49('0x24')](_0x29f209,_0x5b8bd9,!![]);}catch(_0x318c27){return BPromise[_0x8d49('0x25')](_0x318c27);}return _0x29f209[_0x8d49('0x26')]();};}function saveUpdates(_0x851fa2,_0x542d37){return function(_0x33c907){if(_0x33c907){return _0x33c907[_0x8d49('0x27')](_0x851fa2)[_0x8d49('0x28')](function(_0x412824){return _0x412824;});}return null;};}function removeEntity(_0x51b44e,_0x8bb88a){return function(_0x487a2d){if(_0x487a2d){return _0x487a2d[_0x8d49('0x29')]()['then'](function(){_0x51b44e[_0x8d49('0x1c')](0xcc)[_0x8d49('0x1d')]();});}};}function handleEntityNotFound(_0x2c0170,_0x1ce84b){return function(_0x5cf10b){if(!_0x5cf10b){_0x2c0170['sendStatus'](0x194);}return _0x5cf10b;};}function handleError(_0x589bc9,_0xd35859){_0xd35859=_0xd35859||0x1f4;return function(_0x57b81d){logger[_0x8d49('0x2a')](_0x57b81d[_0x8d49('0x2b')]);if(_0x57b81d[_0x8d49('0x2c')]){delete _0x57b81d['name'];}_0x589bc9[_0x8d49('0x1c')](_0xd35859)[_0x8d49('0x2d')](_0x57b81d);};}exports[_0x8d49('0x27')]=function(_0x1e60f6,_0x5a3d5c){if(_0x1e60f6[_0x8d49('0x2e')]['id']){delete _0x1e60f6[_0x8d49('0x2e')]['id'];}return db['Action'][_0x8d49('0x2f')]({'where':{'id':_0x1e60f6['params']['id']}})[_0x8d49('0x28')](handleEntityNotFound(_0x5a3d5c,null))[_0x8d49('0x28')](saveUpdates(_0x1e60f6[_0x8d49('0x2e')],null))[_0x8d49('0x28')](respondWithResult(_0x5a3d5c,null))[_0x8d49('0x30')](handleError(_0x5a3d5c,null));};exports['destroy']=function(_0x46f0cf,_0x2397ea){return db[_0x8d49('0x31')][_0x8d49('0x2f')]({'where':{'id':_0x46f0cf[_0x8d49('0x32')]['id']}})['then'](handleEntityNotFound(_0x2397ea,null))[_0x8d49('0x28')](removeEntity(_0x2397ea,null))[_0x8d49('0x30')](handleError(_0x2397ea,null));};
\ No newline at end of file
+var _0x599e=['sendStatus','error','name','body','Action','find','params','catch','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then'];(function(_0x54d771,_0x156160){var _0x1f12a0=function(_0x15c5a3){while(--_0x15c5a3){_0x54d771['push'](_0x54d771['shift']());}};_0x1f12a0(++_0x156160);}(_0x599e,0x1df));var _0xe599=function(_0x392fa7,_0x46b1eb){_0x392fa7=_0x392fa7-0x0;var _0x1b8d51=_0x599e[_0x392fa7];return _0x1b8d51;};'use strict';var emlformat=require(_0xe599('0x0'));var rimraf=require(_0xe599('0x1'));var zipdir=require(_0xe599('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe599('0x3'));var moment=require(_0xe599('0x4'));var BPromise=require(_0xe599('0x5'));var Mustache=require(_0xe599('0x6'));var util=require(_0xe599('0x7'));var path=require(_0xe599('0x8'));var sox=require(_0xe599('0x9'));var csv=require(_0xe599('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe599('0xb'));var squel=require(_0xe599('0xc'));var crypto=require(_0xe599('0xd'));var jsforce=require(_0xe599('0xe'));var deskjs=require(_0xe599('0xf'));var toCsv=require(_0xe599('0xa'));var querystring=require(_0xe599('0x10'));var Papa=require(_0xe599('0x11'));var Redis=require('ioredis');var authService=require(_0xe599('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xe599('0x13'));var hardwareService=require(_0xe599('0x14'));var logger=require(_0xe599('0x15'))('api');var utils=require(_0xe599('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xe599('0x17'));var db=require(_0xe599('0x18'))['db'];function respondWithStatusCode(_0x540a64,_0x12c55f){_0x12c55f=_0x12c55f||0xcc;return function(_0x1acd70){if(_0x1acd70){return _0x540a64['sendStatus'](_0x12c55f);}return _0x540a64['status'](_0x12c55f)[_0xe599('0x19')]();};}function respondWithResult(_0xc87582,_0x428582){_0x428582=_0x428582||0xc8;return function(_0xa51b41){if(_0xa51b41){return _0xc87582[_0xe599('0x1a')](_0x428582)[_0xe599('0x1b')](_0xa51b41);}};}function respondWithFilteredResult(_0x1effa6,_0x478cfa){return function(_0x154088){if(_0x154088){var _0x4f96e7=typeof _0x478cfa[_0xe599('0x1c')]===_0xe599('0x1d')&&typeof _0x478cfa[_0xe599('0x1e')]===_0xe599('0x1d');var _0xed17d1=_0x154088[_0xe599('0x1f')];var _0x6fdb6b=_0x4f96e7?0x0:_0x478cfa[_0xe599('0x1c')];var _0x32bdf0=_0x4f96e7?_0x154088[_0xe599('0x1f')]:_0x478cfa[_0xe599('0x1c')]+_0x478cfa[_0xe599('0x1e')];var _0x1a8247;if(_0x32bdf0>=_0xed17d1){_0x32bdf0=_0xed17d1;_0x1a8247=0xc8;}else{_0x1a8247=0xce;}_0x1effa6[_0xe599('0x1a')](_0x1a8247);return _0x1effa6[_0xe599('0x20')](_0xe599('0x21'),_0x6fdb6b+'-'+_0x32bdf0+'/'+_0xed17d1)[_0xe599('0x1b')](_0x154088);}return null;};}function patchUpdates(_0x35b4a8){return function(_0x62b742){try{jsonpatch[_0xe599('0x22')](_0x62b742,_0x35b4a8,!![]);}catch(_0x2da140){return BPromise['reject'](_0x2da140);}return _0x62b742[_0xe599('0x23')]();};}function saveUpdates(_0xba8ab8,_0x4d9111){return function(_0x10c988){if(_0x10c988){return _0x10c988[_0xe599('0x24')](_0xba8ab8)[_0xe599('0x25')](function(_0x31d575){return _0x31d575;});}return null;};}function removeEntity(_0xe4c6ca,_0x1b4670){return function(_0x11813b){if(_0x11813b){return _0x11813b['destroy']()[_0xe599('0x25')](function(){_0xe4c6ca[_0xe599('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5abaf2,_0x491a6a){return function(_0x58c2a9){if(!_0x58c2a9){_0x5abaf2[_0xe599('0x26')](0x194);}return _0x58c2a9;};}function handleError(_0x5091d6,_0x1ab0cf){_0x1ab0cf=_0x1ab0cf||0x1f4;return function(_0x54c5b6){logger[_0xe599('0x27')](_0x54c5b6['stack']);if(_0x54c5b6[_0xe599('0x28')]){delete _0x54c5b6[_0xe599('0x28')];}_0x5091d6['status'](_0x1ab0cf)['send'](_0x54c5b6);};}exports[_0xe599('0x24')]=function(_0x57253e,_0x363d9c){if(_0x57253e['body']['id']){delete _0x57253e[_0xe599('0x29')]['id'];}return db[_0xe599('0x2a')][_0xe599('0x2b')]({'where':{'id':_0x57253e[_0xe599('0x2c')]['id']}})['then'](handleEntityNotFound(_0x363d9c,null))[_0xe599('0x25')](saveUpdates(_0x57253e['body'],null))[_0xe599('0x25')](respondWithResult(_0x363d9c,null))[_0xe599('0x2d')](handleError(_0x363d9c,null));};exports[_0xe599('0x2e')]=function(_0x27ace4,_0x22a742){return db[_0xe599('0x2a')][_0xe599('0x2b')]({'where':{'id':_0x27ace4[_0xe599('0x2c')]['id']}})[_0xe599('0x25')](handleEntityNotFound(_0x22a742,null))[_0xe599('0x25')](removeEntity(_0x22a742,null))[_0xe599('0x2d')](handleError(_0x22a742,null));};
\ No newline at end of file
index 8b2b6ed..7bde7bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x418b=['request-promise','rimraf','../../config/environment','./action.attributes','exports','define','tools_actions','lodash','util','../../config/logger','api','moment'];(function(_0x3e1fcd,_0x5c7a98){var _0x59ab42=function(_0x312093){while(--_0x312093){_0x3e1fcd['push'](_0x3e1fcd['shift']());}};_0x59ab42(++_0x5c7a98);}(_0x418b,0x67));var _0xb418=function(_0x12324b,_0x258dd1){_0x12324b=_0x12324b-0x0;var _0x31ad22=_0x418b[_0x12324b];return _0x31ad22;};'use strict';var _=require(_0xb418('0x0'));var util=require(_0xb418('0x1'));var logger=require(_0xb418('0x2'))(_0xb418('0x3'));var moment=require(_0xb418('0x4'));var BPromise=require('bluebird');var rp=require(_0xb418('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb418('0x6'));var config=require(_0xb418('0x7'));var attributes=require(_0xb418('0x8'));module[_0xb418('0x9')]=function(_0x598aca,_0x16ca06){return _0x598aca[_0xb418('0xa')]('Action',attributes,{'tableName':_0xb418('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe698=['path','rimraf','../../config/environment','./action.attributes','exports','define','lodash','util','moment','bluebird','request-promise'];(function(_0xf71120,_0x25b7f9){var _0xbe2fd3=function(_0x1acbdd){while(--_0x1acbdd){_0xf71120['push'](_0xf71120['shift']());}};_0xbe2fd3(++_0x25b7f9);}(_0xe698,0x69));var _0x8e69=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe698[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x8e69('0x0'));var util=require(_0x8e69('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x8e69('0x2'));var BPromise=require(_0x8e69('0x3'));var rp=require(_0x8e69('0x4'));var fs=require('fs');var path=require(_0x8e69('0x5'));var rimraf=require(_0x8e69('0x6'));var config=require(_0x8e69('0x7'));var attributes=require(_0x8e69('0x8'));module[_0x8e69('0x9')]=function(_0x1d6979,_0x3aa1ff){return _0x1d6979[_0x8e69('0xa')]('Action',attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5dbad1e..4b0c783 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['info','Action,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x531d60,_0xd8dab6){var _0x4657e8=function(_0x30b78a){while(--_0x30b78a){_0x531d60['push'](_0x531d60['shift']());}};_0x4657e8(++_0xd8dab6);}(_0x326f,0xd1));var _0xf326=function(_0x4320a6,_0x359ec3){_0x4320a6=_0x4320a6-0x0;var _0x3d29bc=_0x326f[_0x4320a6];return _0x3d29bc;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf326('0x1'));var rs=require(_0xf326('0x2'));var fs=require('fs');var Redis=require(_0xf326('0x3'));var db=require(_0xf326('0x4'))['db'];var utils=require(_0xf326('0x5'));var logger=require(_0xf326('0x6'))(_0xf326('0x7'));var config=require(_0xf326('0x8'));var jayson=require(_0xf326('0x9'));var client=jayson[_0xf326('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c254d,_0x3851eb,_0x165f95){return new BPromise(function(_0x1e7b8a,_0x515bfa){return client['request'](_0x3c254d,_0x165f95)['then'](function(_0x3bacf2){logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));logger[_0xf326('0xe')]('Action,\x20%s,\x20%s,\x20%s',_0x3851eb,_0xf326('0xd'),JSON['stringify'](_0x3bacf2));if(_0x3bacf2[_0xf326('0xf')]){if(_0x3bacf2['error'][_0xf326('0x10')]===0x1f4){logger['error'](_0xf326('0xc'),_0x3851eb,_0x3bacf2[_0xf326('0xf')]['message']);return _0x515bfa(_0x3bacf2[_0xf326('0xf')][_0xf326('0x11')]);}logger[_0xf326('0xf')](_0xf326('0xc'),_0x3851eb,_0x3bacf2['error'][_0xf326('0x11')]);return _0x1e7b8a(_0x3bacf2['error']['message']);}else{logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));_0x1e7b8a(_0x3bacf2[_0xf326('0x12')][_0xf326('0x11')]);}})[_0xf326('0x13')](function(_0x34128e){logger[_0xf326('0xf')]('Action,\x20%s,\x20%s',_0x3851eb,_0x34128e);_0x515bfa(_0x34128e);});});}
\ No newline at end of file
+var _0x5fab=['../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Action,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x426384,_0x1901ab){var _0x3aa40a=function(_0x2db297){while(--_0x2db297){_0x426384['push'](_0x426384['shift']());}};_0x3aa40a(++_0x1901ab);}(_0x5fab,0x177));var _0xb5fa=function(_0x8a0140,_0x4a1b16){_0x8a0140=_0x8a0140-0x0;var _0x1be8a8=_0x5fab[_0x8a0140];return _0x1be8a8;};'use strict';var _=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var moment=require('moment');var BPromise=require(_0xb5fa('0x2'));var rs=require(_0xb5fa('0x3'));var fs=require('fs');var Redis=require(_0xb5fa('0x4'));var db=require(_0xb5fa('0x5'))['db'];var utils=require(_0xb5fa('0x6'));var logger=require(_0xb5fa('0x7'))(_0xb5fa('0x8'));var config=require(_0xb5fa('0x9'));var jayson=require(_0xb5fa('0xa'));var client=jayson[_0xb5fa('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5d70f6,_0x2e3804,_0x1aec3e){return new BPromise(function(_0x9c7bce,_0x56d018){return client[_0xb5fa('0xc')](_0x5d70f6,_0x1aec3e)[_0xb5fa('0xd')](function(_0x2cf4a5){logger['info']('Action,\x20%s,\x20%s',_0x2e3804,_0xb5fa('0xe'));logger[_0xb5fa('0xf')](_0xb5fa('0x10'),_0x2e3804,_0xb5fa('0xe'),JSON[_0xb5fa('0x11')](_0x2cf4a5));if(_0x2cf4a5[_0xb5fa('0x12')]){if(_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x13')]===0x1f4){logger[_0xb5fa('0x12')]('Action,\x20%s,\x20%s',_0x2e3804,_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);return _0x56d018(_0x2cf4a5['error'][_0xb5fa('0x14')]);}logger['error'](_0xb5fa('0x15'),_0x2e3804,_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);return _0x9c7bce(_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);}else{logger['info']('Action,\x20%s,\x20%s',_0x2e3804,_0xb5fa('0xe'));_0x9c7bce(_0x2cf4a5[_0xb5fa('0x16')][_0xb5fa('0x14')]);}})[_0xb5fa('0x17')](function(_0x56fe10){logger['error'](_0xb5fa('0x15'),_0x2e3804,_0x56fe10);_0x56d018(_0x56fe10);});});}
\ No newline at end of file
index 2693aaf..459b535 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6d1=['express','Router','fs-extra','../../components/interaction/service','./action.controller','put','isAuthenticated','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xe6d1,0x192));var _0x1e6d=function(_0x3070dc,_0x40cf11){_0x3070dc=_0x3070dc-0x0;var _0x431489=_0xe6d1[_0x3070dc];return _0x431489;};'use strict';var multer=require(_0x1e6d('0x0'));var util=require(_0x1e6d('0x1'));var path=require(_0x1e6d('0x2'));var timeout=require(_0x1e6d('0x3'));var express=require(_0x1e6d('0x4'));var router=express[_0x1e6d('0x5')]();var fs_extra=require(_0x1e6d('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x1e6d('0x7'));var config=require('../../config/environment');var controller=require(_0x1e6d('0x8'));router[_0x1e6d('0x9')]('/:id',auth[_0x1e6d('0xa')](),controller['update']);router[_0x1e6d('0xb')]('/:id',auth[_0x1e6d('0xa')](),controller[_0x1e6d('0xc')]);module[_0x1e6d('0xd')]=router;
\ No newline at end of file
+var _0x0e37=['/:id','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./action.controller','put','isAuthenticated','update','delete'];(function(_0x5e3af6,_0x3c97dd){var _0x215aa8=function(_0x3adef5){while(--_0x3adef5){_0x5e3af6['push'](_0x5e3af6['shift']());}};_0x215aa8(++_0x3c97dd);}(_0x0e37,0xbd));var _0x70e3=function(_0x4c7136,_0x2ada46){_0x4c7136=_0x4c7136-0x0;var _0x3549a0=_0x0e37[_0x4c7136];return _0x3549a0;};'use strict';var multer=require(_0x70e3('0x0'));var util=require(_0x70e3('0x1'));var path=require(_0x70e3('0x2'));var timeout=require(_0x70e3('0x3'));var express=require(_0x70e3('0x4'));var router=express[_0x70e3('0x5')]();var fs_extra=require(_0x70e3('0x6'));var auth=require(_0x70e3('0x7'));var interaction=require(_0x70e3('0x8'));var config=require(_0x70e3('0x9'));var controller=require(_0x70e3('0xa'));router[_0x70e3('0xb')]('/:id',auth[_0x70e3('0xc')](),controller[_0x70e3('0xd')]);router[_0x70e3('0xe')](_0x70e3('0xf'),auth['isAuthenticated'](),controller['destroy']);module[_0x70e3('0x10')]=router;
\ No newline at end of file
index 2137c67..b637131 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda19=['exports','STRING','TEXT'];(function(_0x28dbff,_0x3068ff){var _0x52c675=function(_0x2cf36f){while(--_0x2cf36f){_0x28dbff['push'](_0x28dbff['shift']());}};_0x52c675(++_0x3068ff);}(_0xda19,0xd5));var _0x9da1=function(_0x95bee6,_0x1e2b8d){_0x95bee6=_0x95bee6-0x0;var _0x5bcb02=_0xda19[_0x95bee6];return _0x5bcb02;};'use strict';var Sequelize=require('sequelize');module[_0x9da1('0x0')]={'name':{'type':Sequelize[_0x9da1('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x9da1('0x1')]},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize[_0x9da1('0x2')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xabce=['exports','STRING','TEXT','sequelize'];(function(_0x3ead99,_0x2a6278){var _0x2c29e7=function(_0x15cd43){while(--_0x15cd43){_0x3ead99['push'](_0x3ead99['shift']());}};_0x2c29e7(++_0x2a6278);}(_0xabce,0x103));var _0xeabc=function(_0x4bfac3,_0x58324d){_0x4bfac3=_0x4bfac3-0x0;var _0x15f0f2=_0xabce[_0x4bfac3];return _0x15f0f2;};'use strict';var Sequelize=require(_0xeabc('0x0'));module[_0xeabc('0x1')]={'name':{'type':Sequelize[_0xeabc('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xeabc('0x2')]},'parent':{'type':Sequelize[_0xeabc('0x2')]},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0xeabc('0x3')]}};
\ No newline at end of file
index c1dc740..d0b6632 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bdb=['mustache','path','sox','ejs','lodash','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','status','end','json','limit','count','offset','set','Content-Range','apply','reject','save','update','then','get','CustomReports','UserProfileResource','destroy','error','name','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','AnalyticCustomReport','includeAll','include','rows','show','params','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Reports','userProfileId','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','left_join','cross_join','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','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','options','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','findAll','keyBy','select','from','MetricId','metric','replace','format','groupBy','orderBy','order','joins','parse','parentKey','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','clone','Limited\x20Query:','toString','sequelize','QueryTypes','right_join','COUNT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','getFields','table','function','DESC','output','web','fullPath','%s-%s.%s','randomstring','csv','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','startDate','info','Run\x20Query:','fork','../../components/export/','../../files/reports','SELECT','run','SUM(%s)','Sequelize','alias','debug','eml-format','rimraf','zip-dir','request-promise','moment','bluebird'];(function(_0x1068c5,_0x390acf){var _0x5a5d37=function(_0x1edb20){while(--_0x1edb20){_0x1068c5['push'](_0x1068c5['shift']());}};_0x5a5d37(++_0x390acf);}(_0x2bdb,0x1e3));var _0xb2bd=function(_0x564416,_0x5492ea){_0x564416=_0x564416-0x0;var _0x4ef890=_0x2bdb[_0x564416];return _0x4ef890;};'use strict';var emlformat=require(_0xb2bd('0x0'));var rimraf=require(_0xb2bd('0x1'));var zipdir=require(_0xb2bd('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb2bd('0x3'));var moment=require(_0xb2bd('0x4'));var BPromise=require(_0xb2bd('0x5'));var Mustache=require(_0xb2bd('0x6'));var util=require('util');var path=require(_0xb2bd('0x7'));var sox=require(_0xb2bd('0x8'));var csv=require('to-csv');var ejs=require(_0xb2bd('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb2bd('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xb2bd('0xb'));var deskjs=require(_0xb2bd('0xc'));var toCsv=require(_0xb2bd('0xd'));var querystring=require(_0xb2bd('0xe'));var Papa=require('papaparse');var Redis=require(_0xb2bd('0xf'));var authService=require(_0xb2bd('0x10'));var qs=require(_0xb2bd('0x11'));var as=require(_0xb2bd('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb2bd('0x13'))(_0xb2bd('0x14'));var utils=require('../../config/utils');var config=require(_0xb2bd('0x15'));var licenseUtil=require(_0xb2bd('0x16'));var db=require('../../mysqldb')['db'];var dbH=require(_0xb2bd('0x17'))[_0xb2bd('0x18')];function respondWithStatusCode(_0x4ccf37,_0x27371d){_0x27371d=_0x27371d||0xcc;return function(_0x361902){if(_0x361902){return _0x4ccf37[_0xb2bd('0x19')](_0x27371d);}return _0x4ccf37[_0xb2bd('0x1a')](_0x27371d)[_0xb2bd('0x1b')]();};}function respondWithResult(_0x3d7e66,_0x1008e0){_0x1008e0=_0x1008e0||0xc8;return function(_0x26cd85){if(_0x26cd85){return _0x3d7e66['status'](_0x1008e0)[_0xb2bd('0x1c')](_0x26cd85);}};}function respondWithFilteredResult(_0x5a48ba,_0x27d270){return function(_0x16d227){if(_0x16d227){var _0x4d493c=typeof _0x27d270['offset']==='undefined'&&typeof _0x27d270[_0xb2bd('0x1d')]==='undefined';var _0x6fedf0=_0x16d227[_0xb2bd('0x1e')];var _0x99401d=_0x4d493c?0x0:_0x27d270['offset'];var _0x16ec04=_0x4d493c?_0x16d227[_0xb2bd('0x1e')]:_0x27d270[_0xb2bd('0x1f')]+_0x27d270[_0xb2bd('0x1d')];var _0x3970a5;if(_0x16ec04>=_0x6fedf0){_0x16ec04=_0x6fedf0;_0x3970a5=0xc8;}else{_0x3970a5=0xce;}_0x5a48ba[_0xb2bd('0x1a')](_0x3970a5);return _0x5a48ba[_0xb2bd('0x20')](_0xb2bd('0x21'),_0x99401d+'-'+_0x16ec04+'/'+_0x6fedf0)['json'](_0x16d227);}return null;};}function patchUpdates(_0x43be5c){return function(_0x249ae9){try{jsonpatch[_0xb2bd('0x22')](_0x249ae9,_0x43be5c,!![]);}catch(_0x6d3e6d){return BPromise[_0xb2bd('0x23')](_0x6d3e6d);}return _0x249ae9[_0xb2bd('0x24')]();};}function saveUpdates(_0x42fc61,_0x2e6997){return function(_0x527ec9){if(_0x527ec9){return _0x527ec9[_0xb2bd('0x25')](_0x42fc61)[_0xb2bd('0x26')](function(_0x4873e6){return _0x4873e6;});}return null;};}function removeEntity(_0x5ce7a1,_0x1258f5){return function(_0x566a3e){if(_0x566a3e){return _0x566a3e['destroy']()[_0xb2bd('0x26')](function(){var _0x28d5a7=_0x566a3e[_0xb2bd('0x27')]({'plain':!![]});var _0x12d88d=_0xb2bd('0x28');return db[_0xb2bd('0x29')][_0xb2bd('0x2a')]({'where':{'type':_0x12d88d,'resourceId':_0x28d5a7['id']}})[_0xb2bd('0x26')](function(){return _0x566a3e;});})[_0xb2bd('0x26')](function(){_0x5ce7a1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ee3d3,_0xf271d){return function(_0x3fa4cb){if(!_0x3fa4cb){_0x1ee3d3[_0xb2bd('0x19')](0x194);}return _0x3fa4cb;};}function handleError(_0x430e27,_0x237b3c){_0x237b3c=_0x237b3c||0x1f4;return function(_0xfa7d9b){logger[_0xb2bd('0x2b')](_0xfa7d9b['stack']);if(_0xfa7d9b[_0xb2bd('0x2c')]){delete _0xfa7d9b[_0xb2bd('0x2c')];}_0x430e27[_0xb2bd('0x1a')](_0x237b3c)['send'](_0xfa7d9b);};}exports['index']=function(_0x300c8a,_0x5bd3a2){var _0x341aab={},_0x51f391={},_0x433407={'count':0x0,'rows':[]};var _0x2e0559=_[_0xb2bd('0x2d')](db['AnalyticCustomReport']['rawAttributes'],function(_0x1483ae){return{'name':_0x1483ae[_0xb2bd('0x2e')],'type':_0x1483ae[_0xb2bd('0x2f')][_0xb2bd('0x30')]};});_0x51f391[_0xb2bd('0x31')]=_['map'](_0x2e0559,'name');_0x51f391[_0xb2bd('0x32')]=_[_0xb2bd('0x33')](_0x300c8a[_0xb2bd('0x32')]);_0x51f391[_0xb2bd('0x34')]=_[_0xb2bd('0x35')](_0x51f391['model'],_0x51f391[_0xb2bd('0x32')]);_0x341aab[_0xb2bd('0x36')]=_[_0xb2bd('0x35')](_0x51f391[_0xb2bd('0x31')],qs[_0xb2bd('0x37')](_0x300c8a[_0xb2bd('0x32')][_0xb2bd('0x37')]));_0x341aab[_0xb2bd('0x36')]=_0x341aab[_0xb2bd('0x36')][_0xb2bd('0x38')]?_0x341aab[_0xb2bd('0x36')]:_0x51f391[_0xb2bd('0x31')];if(!_0x300c8a[_0xb2bd('0x32')][_0xb2bd('0x39')]('nolimit')){_0x341aab['limit']=qs['limit'](_0x300c8a[_0xb2bd('0x32')]['limit']);_0x341aab[_0xb2bd('0x1f')]=qs[_0xb2bd('0x1f')](_0x300c8a['query']['offset']);}_0x341aab['order']=qs[_0xb2bd('0x3a')](_0x300c8a[_0xb2bd('0x32')][_0xb2bd('0x3a')]);_0x341aab[_0xb2bd('0x3b')]=qs[_0xb2bd('0x34')](_[_0xb2bd('0x3c')](_0x300c8a['query'],_0x51f391[_0xb2bd('0x34')]),_0x2e0559);if(_0x300c8a['query'][_0xb2bd('0x3d')]){_0x341aab['where']=_[_0xb2bd('0x3e')](_0x341aab[_0xb2bd('0x3b')],{'$or':_['map'](_0x2e0559,function(_0x224c44){if(_0x224c44[_0xb2bd('0x2f')]!==_0xb2bd('0x3f')){var _0x167b5e={};_0x167b5e[_0x224c44[_0xb2bd('0x2c')]]={'$like':'%'+_0x300c8a['query'][_0xb2bd('0x3d')]+'%'};return _0x167b5e;}})});}_0x341aab=_[_0xb2bd('0x3e')]({},_0x341aab,_0x300c8a['options']);var _0x277c89={'where':_0x341aab[_0xb2bd('0x3b')]};return db[_0xb2bd('0x40')][_0xb2bd('0x1e')](_0x277c89)[_0xb2bd('0x26')](function(_0x48a90e){_0x433407['count']=_0x48a90e;if(_0x300c8a['query'][_0xb2bd('0x41')]){_0x341aab[_0xb2bd('0x42')]=[{'all':!![]}];}return db[_0xb2bd('0x40')]['findAll'](_0x341aab);})[_0xb2bd('0x26')](function(_0x234ef8){_0x433407[_0xb2bd('0x43')]=_0x234ef8;return _0x433407;})[_0xb2bd('0x26')](respondWithFilteredResult(_0x5bd3a2,_0x341aab))['catch'](handleError(_0x5bd3a2,null));};exports[_0xb2bd('0x44')]=function(_0x40b993,_0x359734){var _0x4b2303={'raw':![],'where':{'id':_0x40b993[_0xb2bd('0x45')]['id']}},_0x3276ad={};_0x3276ad[_0xb2bd('0x31')]=_[_0xb2bd('0x33')](db[_0xb2bd('0x40')][_0xb2bd('0x46')]);_0x3276ad[_0xb2bd('0x32')]=_[_0xb2bd('0x33')](_0x40b993[_0xb2bd('0x32')]);_0x3276ad[_0xb2bd('0x34')]=_[_0xb2bd('0x35')](_0x3276ad['model'],_0x3276ad[_0xb2bd('0x32')]);_0x4b2303[_0xb2bd('0x36')]=_[_0xb2bd('0x35')](_0x3276ad[_0xb2bd('0x31')],qs[_0xb2bd('0x37')](_0x40b993[_0xb2bd('0x32')][_0xb2bd('0x37')]));_0x4b2303['attributes']=_0x4b2303[_0xb2bd('0x36')][_0xb2bd('0x38')]?_0x4b2303[_0xb2bd('0x36')]:_0x3276ad[_0xb2bd('0x31')];if(_0x40b993[_0xb2bd('0x32')]['includeAll']){_0x4b2303[_0xb2bd('0x42')]=[{'all':!![]}];}_0x4b2303=_[_0xb2bd('0x3e')]({},_0x4b2303,_0x40b993['options']);return db[_0xb2bd('0x40')][_0xb2bd('0x47')](_0x4b2303)[_0xb2bd('0x26')](handleEntityNotFound(_0x359734,null))[_0xb2bd('0x26')](respondWithResult(_0x359734,null))['catch'](handleError(_0x359734,null));};exports['create']=function(_0x49a19e,_0x17357c){return db[_0xb2bd('0x40')][_0xb2bd('0x48')](_0x49a19e[_0xb2bd('0x49')],{})[_0xb2bd('0x26')](function(_0x2934f0){var _0x1db885=_0x49a19e[_0xb2bd('0x4a')][_0xb2bd('0x27')]({'plain':!![]});if(!_0x1db885)throw new Error(_0xb2bd('0x4b'));if(_0x1db885['role']===_0xb2bd('0x4a')){var _0x3576bc=_0x2934f0[_0xb2bd('0x27')]({'plain':!![]});var _0xc9dcd5=_0xb2bd('0x4c');return db['UserProfileSection'][_0xb2bd('0x47')]({'where':{'name':_0xc9dcd5,'userProfileId':_0x1db885[_0xb2bd('0x4d')]},'raw':!![]})[_0xb2bd('0x26')](function(_0xcaab30){if(_0xcaab30&&_0xcaab30[_0xb2bd('0x4e')]===0x0){return db[_0xb2bd('0x29')][_0xb2bd('0x48')]({'name':_0x3576bc[_0xb2bd('0x2c')],'resourceId':_0x3576bc['id'],'type':_0xb2bd('0x28'),'sectionId':_0xcaab30['id']},{})[_0xb2bd('0x26')](function(){return _0x2934f0;});}else{return _0x2934f0;}})[_0xb2bd('0x4f')](function(_0x4859c3){logger['error'](_0xb2bd('0x50'),_0x4859c3);throw _0x4859c3;});}return _0x2934f0;})[_0xb2bd('0x26')](respondWithResult(_0x17357c,0xc9))[_0xb2bd('0x4f')](handleError(_0x17357c,null));};exports[_0xb2bd('0x25')]=function(_0x417c83,_0x442d8b){if(_0x417c83['body']['id']){delete _0x417c83['body']['id'];}return db[_0xb2bd('0x40')][_0xb2bd('0x47')]({'where':{'id':_0x417c83[_0xb2bd('0x45')]['id']}})[_0xb2bd('0x26')](handleEntityNotFound(_0x442d8b,null))[_0xb2bd('0x26')](saveUpdates(_0x417c83['body'],null))['then'](respondWithResult(_0x442d8b,null))[_0xb2bd('0x4f')](handleError(_0x442d8b,null));};exports[_0xb2bd('0x2a')]=function(_0x1e763a,_0x242394){return db[_0xb2bd('0x40')][_0xb2bd('0x47')]({'where':{'id':_0x1e763a[_0xb2bd('0x45')]['id']}})['then'](handleEntityNotFound(_0x242394,null))[_0xb2bd('0x26')](removeEntity(_0x242394,null))[_0xb2bd('0x4f')](handleError(_0x242394,null));};exports['preview']=function(_0x3dd227,_0x3eae66){var _0x20eac7=0xa;var _0x3bc3ba=[_0xb2bd('0x51'),_0xb2bd('0x52'),'right_join',_0xb2bd('0x53')];var _0xa5b824={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':_0xb2bd('0x54'),'MAX':_0xb2bd('0x55'),'MIN':_0xb2bd('0x56'),'AVG':_0xb2bd('0x57'),'GROUP_CONCAT':_0xb2bd('0x58'),'GROUP_CONCAT ASC':_0xb2bd('0x59'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x12d0f0={'SEC_TO_TIME':_0xb2bd('0x5a'),'DATE':_0xb2bd('0x5b'),'HOUR':_0xb2bd('0x5c'),'ROUND':_0xb2bd('0x5d'),'UNIX_TIMESTAMP':_0xb2bd('0x5e')};var _0x357645=function(_0x55a37a){return!_[_0xb2bd('0x5f')]([_0xb2bd('0x60'),_0xb2bd('0x61'),_0xb2bd('0x62'),_0xb2bd('0x63')],_0x55a37a);};var _0x462554=function(_0x3fc3dc){if(!_0x3fc3dc||!_0x3fc3dc[_0xb2bd('0x64')][_0xb2bd('0x38')]){return'';}for(var _0x431c0a='(',_0x5aae8d=0x0;_0x5aae8d<_0x3fc3dc[_0xb2bd('0x64')][_0xb2bd('0x38')];_0x5aae8d+=0x1){_0x5aae8d>0x0&&(_0x431c0a+='\x20'+_0x3fc3dc[_0xb2bd('0x65')]+'\x20');_0x431c0a+=_0x3fc3dc[_0xb2bd('0x64')][_0x5aae8d][_0xb2bd('0x66')]?_0x462554(_0x3fc3dc[_0xb2bd('0x64')][_0x5aae8d]['group']):_0x3fc3dc[_0xb2bd('0x64')][_0x5aae8d][_0xb2bd('0x67')]+'\x20'+_0x3fc3dc[_0xb2bd('0x64')][_0x5aae8d][_0xb2bd('0x68')]+(_0x357645(_0x3fc3dc['rules'][_0x5aae8d][_0xb2bd('0x68')])?'\x20'+_0x3fc3dc[_0xb2bd('0x64')][_0x5aae8d][_0xb2bd('0x69')]:'');}return _0x431c0a+')';};var _0x5bb7e2={'where':{'id':_0x3dd227['params']['id']}},_0x19231a,_0x34f1e3,_0xe62a8f,_0x12c43,_0x28451e;_0x5bb7e2=_[_0xb2bd('0x3e')]({},_0x5bb7e2,_0x3dd227[_0xb2bd('0x6a')]);return db[_0xb2bd('0x40')]['find'](_0x5bb7e2)[_0xb2bd('0x26')](function(_0x3a5267){if(_0x3a5267){_0x19231a=_0x3a5267;return _0x3a5267['getFields']();}return null;})[_0xb2bd('0x26')](function(_0xecc81){if(_0xecc81){if(!_0xecc81[_0xb2bd('0x38')]){throw new db['Sequelize'][(_0xb2bd('0x6b'))](_0xb2bd('0x6c'),0x193);}_0x34f1e3=_0xecc81;return db[_0xb2bd('0x6d')][_0xb2bd('0x6e')]({'raw':!![]});}return null;})[_0xb2bd('0x26')](function(_0x1595f4){if(_0x1595f4){_0xe62a8f=_[_0xb2bd('0x6f')](_0x1595f4,'id');var _0x28af3a;var _0x15ddfd=squel[_0xb2bd('0x70')]();_0x15ddfd[_0xb2bd('0x71')](_0x19231a['table']);for(var _0x3d211d=0x0;_0x3d211d<_0x34f1e3[_0xb2bd('0x38')];_0x3d211d+=0x1){_0x28af3a=_0x34f1e3[_0x3d211d][_0xb2bd('0x72')]?_0xe62a8f[_0x34f1e3[_0x3d211d][_0xb2bd('0x72')]][_0xb2bd('0x73')]:_0x34f1e3[_0x3d211d][_0xb2bd('0x67')];_0x28af3a=_0x34f1e3[_0x3d211d]['function']?_[_0xb2bd('0x74')](_0xa5b824[_0x34f1e3[_0x3d211d]['function']],'%s',_0x28af3a):_0x28af3a;_0x28af3a=_0x34f1e3[_0x3d211d][_0xb2bd('0x75')]?_[_0xb2bd('0x74')](_0x12d0f0[_0x34f1e3[_0x3d211d][_0xb2bd('0x75')]],'%s',_0x28af3a):_0x28af3a;if(_0x34f1e3[_0x3d211d][_0xb2bd('0x76')]){_0x15ddfd[_0xb2bd('0x66')](_0x28af3a);}_0x34f1e3[_0x3d211d][_0xb2bd('0x77')]&&_0x15ddfd[_0xb2bd('0x78')](_0x28af3a,_0x34f1e3[_0x3d211d][_0xb2bd('0x77')]==='DESC'?![]:!![]);_0x15ddfd[_0xb2bd('0x67')](_0x28af3a,_0x34f1e3[_0x3d211d]['alias']||_0x28af3a);}if(_0x19231a[_0xb2bd('0x79')]){_0x19231a[_0xb2bd('0x79')]=JSON[_0xb2bd('0x7a')](_0x19231a[_0xb2bd('0x79')]);for(var _0x50bb4f=0x0;_0x50bb4f<_0x19231a[_0xb2bd('0x79')][_0xb2bd('0x38')];_0x50bb4f+=0x1){if(_0x19231a[_0xb2bd('0x79')][_0x50bb4f][_0xb2bd('0x2f')]&&_[_0xb2bd('0x5f')](_0x3bc3ba,_0x19231a[_0xb2bd('0x79')][_0x50bb4f][_0xb2bd('0x2f')])&&_0x19231a[_0xb2bd('0x79')][_0x50bb4f][_0xb2bd('0x7b')]&&_0x19231a['joins'][_0x50bb4f]['foreignTable']&&_0x19231a[_0xb2bd('0x79')][_0x50bb4f][_0xb2bd('0x7c')]){_0x15ddfd[_0x19231a[_0xb2bd('0x79')][_0x50bb4f][_0xb2bd('0x2f')]](_0x19231a[_0xb2bd('0x79')][_0x50bb4f][_0xb2bd('0x7d')],null,util[_0xb2bd('0x75')](_0xb2bd('0x7e'),_0x19231a['table'],_0x19231a[_0xb2bd('0x79')][_0x50bb4f][_0xb2bd('0x7b')],_0x19231a[_0xb2bd('0x79')][_0x50bb4f][_0xb2bd('0x7d')],_0x19231a['joins'][_0x50bb4f][_0xb2bd('0x7c')]));}}}if(_0x19231a['conditions']){_0x19231a[_0xb2bd('0x7f')]=JSON[_0xb2bd('0x7a')](_0x19231a[_0xb2bd('0x7f')]);_0x15ddfd[_0xb2bd('0x3b')](_0x462554(_0x19231a['conditions']['group']));}_0x28451e=_0x15ddfd[_0xb2bd('0x80')]();_0x15ddfd[_0xb2bd('0x1d')](_0x20eac7);_0x15ddfd[_0xb2bd('0x1f')](0x0);logger['debug'](_0xb2bd('0x81'),_0x15ddfd[_0xb2bd('0x82')]());return dbH[_0xb2bd('0x83')]['query'](_0x15ddfd[_0xb2bd('0x82')](),{'type':dbH[_0xb2bd('0x83')][_0xb2bd('0x84')]['SELECT']});}})['then'](respondWithResult(_0x3eae66,null))[_0xb2bd('0x4f')](handleError(_0x3eae66,null));};function runReport(_0x527c0e,_0x77b969,_0x4f385e){var _0x2f4e75=_0x77b969[_0xb2bd('0x2c')];var _0x193550=0xa;var _0x52d936=[_0xb2bd('0x51'),_0xb2bd('0x52'),_0xb2bd('0x85'),_0xb2bd('0x53')];var _0x2cb92e={'SUM':'SUM(%s)','COUNT':_0xb2bd('0x86'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xb2bd('0x55'),'MIN':_0xb2bd('0x56'),'AVG':_0xb2bd('0x57'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xb2bd('0x59'),'GROUP_CONCAT DESC':_0xb2bd('0x87')};var _0x175680={'SEC_TO_TIME':_0xb2bd('0x5a'),'DATE':_0xb2bd('0x5b'),'HOUR':_0xb2bd('0x5c'),'ROUND':_0xb2bd('0x5d'),'UNIX_TIMESTAMP':_0xb2bd('0x5e')};var _0x53a7fb=function(_0x2978a0){return!_[_0xb2bd('0x5f')](['IS\x20NULL',_0xb2bd('0x61'),'IS\x20EMPTY',_0xb2bd('0x63')],_0x2978a0);};var _0x135b71=function(_0x5da6f7){if(!_0x5da6f7||!_0x5da6f7[_0xb2bd('0x64')][_0xb2bd('0x38')]){return'';}for(var _0x5c779a='(',_0x11df94=0x0;_0x11df94<_0x5da6f7['rules'][_0xb2bd('0x38')];_0x11df94+=0x1){_0x11df94>0x0&&(_0x5c779a+='\x20'+_0x5da6f7[_0xb2bd('0x65')]+'\x20');_0x5c779a+=_0x5da6f7[_0xb2bd('0x64')][_0x11df94]['group']?_0x135b71(_0x5da6f7[_0xb2bd('0x64')][_0x11df94]['group']):_0x5da6f7[_0xb2bd('0x64')][_0x11df94]['field']+'\x20'+_0x5da6f7[_0xb2bd('0x64')][_0x11df94]['condition']+(_0x53a7fb(_0x5da6f7['rules'][_0x11df94]['condition'])?'\x20'+_0x5da6f7[_0xb2bd('0x64')][_0x11df94]['value']:'');}return _0x5c779a+')';};var _0x1a4459={'where':{'id':_0x527c0e['id']}},_0x51d0c3,_0x27e076,_0x28d467,_0x137c6e,_0x1f7120;_0x1a4459=_['merge']({},_0x1a4459,_0x4f385e);return db['AnalyticCustomReport'][_0xb2bd('0x47')](_0x1a4459)[_0xb2bd('0x26')](function(_0x4ba5d6){if(_0x4ba5d6){_0x51d0c3=_0x4ba5d6;return _0x4ba5d6[_0xb2bd('0x88')]();}return null;})['then'](function(_0x565870){if(_0x565870){if(!_0x565870[_0xb2bd('0x38')]){throw new db['Sequelize'][(_0xb2bd('0x6b'))](_0xb2bd('0x6c'),0x193);}_0x27e076=_0x565870;return db[_0xb2bd('0x6d')][_0xb2bd('0x6e')]({'raw':!![]});}return null;})['then'](function(_0x42e002){if(_0x42e002){_0x28d467=_[_0xb2bd('0x6f')](_0x42e002,'id');var _0x2f96fd;var _0x1aa4ff=squel[_0xb2bd('0x70')]();_0x1aa4ff['from'](_0x51d0c3[_0xb2bd('0x89')]);for(var _0x1ff4dc=0x0;_0x1ff4dc<_0x27e076[_0xb2bd('0x38')];_0x1ff4dc+=0x1){_0x2f96fd=_0x27e076[_0x1ff4dc]['MetricId']?_0x28d467[_0x27e076[_0x1ff4dc][_0xb2bd('0x72')]]['metric']:_0x27e076[_0x1ff4dc]['field'];_0x2f96fd=_0x27e076[_0x1ff4dc][_0xb2bd('0x8a')]?_[_0xb2bd('0x74')](_0x2cb92e[_0x27e076[_0x1ff4dc]['function']],'%s',_0x2f96fd):_0x2f96fd;_0x2f96fd=_0x27e076[_0x1ff4dc][_0xb2bd('0x75')]?_[_0xb2bd('0x74')](_0x175680[_0x27e076[_0x1ff4dc]['format']],'%s',_0x2f96fd):_0x2f96fd;if(_0x27e076[_0x1ff4dc]['groupBy']){_0x1aa4ff[_0xb2bd('0x66')](_0x2f96fd);}_0x27e076[_0x1ff4dc]['orderBy']&&_0x1aa4ff[_0xb2bd('0x78')](_0x2f96fd,_0x27e076[_0x1ff4dc][_0xb2bd('0x77')]===_0xb2bd('0x8b')?![]:!![]);_0x1aa4ff[_0xb2bd('0x67')](_0x2f96fd,_0x27e076[_0x1ff4dc]['alias']||_0x2f96fd);}if(_0x51d0c3[_0xb2bd('0x79')]){_0x51d0c3[_0xb2bd('0x79')]=JSON[_0xb2bd('0x7a')](_0x51d0c3[_0xb2bd('0x79')]);for(var _0xb2e8b0=0x0;_0xb2e8b0<_0x51d0c3[_0xb2bd('0x79')][_0xb2bd('0x38')];_0xb2e8b0+=0x1){if(_0x51d0c3[_0xb2bd('0x79')][_0xb2e8b0][_0xb2bd('0x2f')]&&_['includes'](_0x52d936,_0x51d0c3[_0xb2bd('0x79')][_0xb2e8b0][_0xb2bd('0x2f')])&&_0x51d0c3[_0xb2bd('0x79')][_0xb2e8b0]['parentKey']&&_0x51d0c3[_0xb2bd('0x79')][_0xb2e8b0][_0xb2bd('0x7d')]&&_0x51d0c3[_0xb2bd('0x79')][_0xb2e8b0][_0xb2bd('0x7c')]){_0x1aa4ff[_0x51d0c3['joins'][_0xb2e8b0][_0xb2bd('0x2f')]](_0x51d0c3[_0xb2bd('0x79')][_0xb2e8b0]['foreignTable'],null,util['format'](_0xb2bd('0x7e'),_0x51d0c3[_0xb2bd('0x89')],_0x51d0c3['joins'][_0xb2e8b0][_0xb2bd('0x7b')],_0x51d0c3[_0xb2bd('0x79')][_0xb2e8b0][_0xb2bd('0x7d')],_0x51d0c3[_0xb2bd('0x79')][_0xb2e8b0][_0xb2bd('0x7c')]));}}}if(_0x51d0c3['conditions']){_0x51d0c3['conditions']=JSON[_0xb2bd('0x7a')](_0x51d0c3[_0xb2bd('0x7f')]);_0x1aa4ff[_0xb2bd('0x3b')](_0x135b71(_0x51d0c3[_0xb2bd('0x7f')][_0xb2bd('0x66')]));}_0x1f7120=_0x1aa4ff[_0xb2bd('0x80')]();_0x1aa4ff[_0xb2bd('0x1d')](_0x193550);_0x1aa4ff[_0xb2bd('0x1f')](0x0);return;}})['then'](function(){if(_0x77b969[_0xb2bd('0x8c')]===_0xb2bd('0x8d')){return null;}var _0x3e7429=_[_0xb2bd('0x3e')](_0x77b969,{'name':_0x77b969[_0xb2bd('0x8e')]||_0x77b969[_0xb2bd('0x2c')]||_0x51d0c3[_0xb2bd('0x2c')],'basename':_0x2f4e75,'savename':util['format'](_0xb2bd('0x8f'),_0x77b969[_0xb2bd('0x2c')]||_0x51d0c3[_0xb2bd('0x2c')],require(_0xb2bd('0x90'))['generate'](0x4),_0x77b969[_0xb2bd('0x8c')]||_0xb2bd('0x91')),'reportId':_0x51d0c3['id'],'reportType':'custom'});return db[_0xb2bd('0x92')][_0xb2bd('0x48')](_0x3e7429,{'raw':!![]});})[_0xb2bd('0x26')](function(_0x1d5a6d){if(_0x51d0c3[_0xb2bd('0x89')]===_0xb2bd('0x93')){_0x1f7120[_0xb2bd('0x3b')](_0x51d0c3[_0xb2bd('0x89')]+_0xb2bd('0x94'),_0x77b969['startDate'],_0x77b969[_0xb2bd('0x95')]);}else{_0x1f7120[_0xb2bd('0x3b')](_0x51d0c3[_0xb2bd('0x89')]+_0xb2bd('0x96'),_0x77b969[_0xb2bd('0x97')],_0x77b969[_0xb2bd('0x95')]);}if(_0x1d5a6d){logger[_0xb2bd('0x98')](_0xb2bd('0x99'),_0x1f7120['toString']());require('child_process')[_0xb2bd('0x9a')](path[_0xb2bd('0x51')](__dirname,_0xb2bd('0x9b'),_0x1d5a6d['output']),[_0x1d5a6d['id'],_0x1f7120[_0xb2bd('0x82')](),path['join'](__dirname,_0xb2bd('0x9c'),_0x1d5a6d['savename']),_0x2f4e75]);return _0x1d5a6d;}else{var _0x64b619=squel[_0xb2bd('0x70')]();_0x64b619[_0xb2bd('0x71')]('('+_0x1f7120['toString']()+')','countTable');_0x64b619[_0xb2bd('0x67')]('COUNT(*)',_0xb2bd('0x1e'));_0x1f7120[_0xb2bd('0x1d')](_0x77b969[_0xb2bd('0x1d')]||_0x193550);_0x1f7120[_0xb2bd('0x1f')](_0x77b969[_0xb2bd('0x1f')]||0x0);return dbH[_0xb2bd('0x83')]['query'](_0x64b619[_0xb2bd('0x82')](),{'type':dbH[_0xb2bd('0x83')]['QueryTypes']['SELECT']})[_0xb2bd('0x26')](function(_0x6d815b){if(!_0x6d815b[_0xb2bd('0x38')]){_0x137c6e=0x0;}else{_0x137c6e=_0x6d815b[0x0]['count']||0x0;}return dbH['sequelize']['query'](_0x1f7120['toString'](),{'type':dbH[_0xb2bd('0x83')]['QueryTypes'][_0xb2bd('0x9d')]});})[_0xb2bd('0x26')](function(_0x46533e){return{'rows':_0x46533e||[],'count':_0x137c6e};});}});}exports[_0xb2bd('0x9e')]=function(_0x12ff05,_0x13de90){return runReport(_0x12ff05[_0xb2bd('0x45')],_0x12ff05[_0xb2bd('0x32')],_0x12ff05[_0xb2bd('0x6a')])[_0xb2bd('0x26')](respondWithResult(_0x13de90,null))[_0xb2bd('0x4f')](handleError(_0x13de90,null));};exports['runReport']=runReport;exports[_0xb2bd('0x32')]=function(_0x4a5239,_0x4d2a85){var _0x50500a=0xa;var _0x41eb79=[_0xb2bd('0x51'),_0xb2bd('0x52'),_0xb2bd('0x85'),_0xb2bd('0x53')];var _0x5c4c97={'SUM':_0xb2bd('0x9f'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xb2bd('0x54'),'MAX':_0xb2bd('0x55'),'MIN':_0xb2bd('0x56'),'AVG':_0xb2bd('0x57'),'GROUP_CONCAT':_0xb2bd('0x58'),'GROUP_CONCAT ASC':_0xb2bd('0x59'),'GROUP_CONCAT DESC':_0xb2bd('0x87')};var _0x274746={'SEC_TO_TIME':_0xb2bd('0x5a'),'DATE':_0xb2bd('0x5b'),'HOUR':_0xb2bd('0x5c'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x576e70=function(_0x3e303b){return!_['includes']([_0xb2bd('0x60'),'IS\x20NOT\x20NULL','IS\x20EMPTY',_0xb2bd('0x63')],_0x3e303b);};var _0x499c9c=function(_0x1a3521){if(!_0x1a3521||!_0x1a3521[_0xb2bd('0x64')][_0xb2bd('0x38')]){return'';}for(var _0x1eaf47='(',_0x38d043=0x0;_0x38d043<_0x1a3521[_0xb2bd('0x64')][_0xb2bd('0x38')];_0x38d043+=0x1){_0x38d043>0x0&&(_0x1eaf47+='\x20'+_0x1a3521[_0xb2bd('0x65')]+'\x20');_0x1eaf47+=_0x1a3521[_0xb2bd('0x64')][_0x38d043]['group']?_0x499c9c(_0x1a3521[_0xb2bd('0x64')][_0x38d043][_0xb2bd('0x66')]):_0x1a3521['rules'][_0x38d043][_0xb2bd('0x67')]+'\x20'+_0x1a3521[_0xb2bd('0x64')][_0x38d043][_0xb2bd('0x68')]+(_0x576e70(_0x1a3521[_0xb2bd('0x64')][_0x38d043][_0xb2bd('0x68')])?'\x20'+_0x1a3521['rules'][_0x38d043][_0xb2bd('0x69')]:'');}return _0x1eaf47+')';};var _0x446a69={'where':{'id':_0x4a5239[_0xb2bd('0x45')]['id']}},_0x23a629,_0x3b546a,_0x4da760,_0x3679c2,_0x38efa1;_0x446a69=_['merge']({},_0x446a69,_0x4a5239['options']);return db[_0xb2bd('0x40')][_0xb2bd('0x47')](_0x446a69)['then'](function(_0x24432b){if(_0x24432b){_0x23a629=_0x24432b;return _0x24432b[_0xb2bd('0x88')]();}return null;})[_0xb2bd('0x26')](function(_0x340006){if(_0x340006){if(!_0x340006[_0xb2bd('0x38')]){throw new db[(_0xb2bd('0xa0'))][(_0xb2bd('0x6b'))](_0xb2bd('0x6c'),0x193);}_0x3b546a=_0x340006;return db[_0xb2bd('0x6d')]['findAll']({'raw':!![]});}return null;})[_0xb2bd('0x26')](function(_0x2acb08){if(_0x2acb08){_0x4da760=_[_0xb2bd('0x6f')](_0x2acb08,'id');var _0x28fe65;var _0x14b3e3=squel[_0xb2bd('0x70')]();_0x14b3e3[_0xb2bd('0x71')](_0x23a629[_0xb2bd('0x89')]);for(var _0x57b5d2=0x0;_0x57b5d2<_0x3b546a['length'];_0x57b5d2+=0x1){_0x28fe65=_0x3b546a[_0x57b5d2][_0xb2bd('0x72')]?_0x4da760[_0x3b546a[_0x57b5d2]['MetricId']][_0xb2bd('0x73')]:_0x3b546a[_0x57b5d2][_0xb2bd('0x67')];_0x28fe65=_0x3b546a[_0x57b5d2][_0xb2bd('0x8a')]?_[_0xb2bd('0x74')](_0x5c4c97[_0x3b546a[_0x57b5d2][_0xb2bd('0x8a')]],'%s',_0x28fe65):_0x28fe65;_0x28fe65=_0x3b546a[_0x57b5d2]['format']?_[_0xb2bd('0x74')](_0x274746[_0x3b546a[_0x57b5d2]['format']],'%s',_0x28fe65):_0x28fe65;if(_0x3b546a[_0x57b5d2][_0xb2bd('0x76')]){_0x14b3e3[_0xb2bd('0x66')](_0x28fe65);}_0x3b546a[_0x57b5d2]['orderBy']&&_0x14b3e3['order'](_0x28fe65,_0x3b546a[_0x57b5d2]['orderBy']===_0xb2bd('0x8b')?![]:!![]);_0x14b3e3[_0xb2bd('0x67')](_0x28fe65,_0x3b546a[_0x57b5d2][_0xb2bd('0xa1')]||_0x28fe65);}if(_0x23a629[_0xb2bd('0x79')]){_0x23a629[_0xb2bd('0x79')]=JSON[_0xb2bd('0x7a')](_0x23a629[_0xb2bd('0x79')]);for(var _0x175289=0x0;_0x175289<_0x23a629[_0xb2bd('0x79')][_0xb2bd('0x38')];_0x175289+=0x1){if(_0x23a629[_0xb2bd('0x79')][_0x175289][_0xb2bd('0x2f')]&&_[_0xb2bd('0x5f')](_0x41eb79,_0x23a629[_0xb2bd('0x79')][_0x175289][_0xb2bd('0x2f')])&&_0x23a629[_0xb2bd('0x79')][_0x175289][_0xb2bd('0x7b')]&&_0x23a629[_0xb2bd('0x79')][_0x175289][_0xb2bd('0x7d')]&&_0x23a629[_0xb2bd('0x79')][_0x175289][_0xb2bd('0x7c')]){_0x14b3e3[_0x23a629['joins'][_0x175289][_0xb2bd('0x2f')]](_0x23a629[_0xb2bd('0x79')][_0x175289][_0xb2bd('0x7d')],null,util[_0xb2bd('0x75')](_0xb2bd('0x7e'),_0x23a629['table'],_0x23a629['joins'][_0x175289][_0xb2bd('0x7b')],_0x23a629[_0xb2bd('0x79')][_0x175289][_0xb2bd('0x7d')],_0x23a629[_0xb2bd('0x79')][_0x175289][_0xb2bd('0x7c')]));}}}if(_0x23a629['conditions']){_0x23a629['conditions']=JSON[_0xb2bd('0x7a')](_0x23a629[_0xb2bd('0x7f')]);_0x14b3e3[_0xb2bd('0x3b')](_0x499c9c(_0x23a629[_0xb2bd('0x7f')][_0xb2bd('0x66')]));}_0x38efa1=_0x14b3e3[_0xb2bd('0x80')]();_0x14b3e3['limit'](_0x50500a);_0x14b3e3[_0xb2bd('0x1f')](0x0);logger[_0xb2bd('0xa2')]('Limited\x20Query:',_0x14b3e3[_0xb2bd('0x82')]());return dbH[_0xb2bd('0x83')][_0xb2bd('0x32')](_0x14b3e3[_0xb2bd('0x82')](),{'type':dbH[_0xb2bd('0x83')]['QueryTypes'][_0xb2bd('0x9d')]});}})[_0xb2bd('0x26')](function(){return{'sql':_0x38efa1[_0xb2bd('0x82')]()};})[_0xb2bd('0x26')](respondWithResult(_0x4d2a85,null))[_0xb2bd('0x4f')](handleError(_0x4d2a85,null));};
\ No newline at end of file
+var _0xe550=['keyBy','select','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','DESC','alias','joins','parse','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','COUNT(DISTINCT\x20%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','IS\x20EMPTY','getFields','%s-%s.%s','randomstring','output','csv','custom','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','child_process','fork','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','run','runReport','IS\x20NOT\x20NULL','operator','clone','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','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/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','then','destroy','get','UserProfileResource','error','stack','name','index','AnalyticCustomReport','rawAttributes','type','key','map','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Reports','UserProfileSection','autoAssociation','CustomReports','update','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','MAX(%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20EMPTY','rules','group','field','condition','value','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric'];(function(_0x35fbfb,_0x62a6af){var _0x247285=function(_0x4780d2){while(--_0x4780d2){_0x35fbfb['push'](_0x35fbfb['shift']());}};_0x247285(++_0x62a6af);}(_0xe550,0x18e));var _0x0e55=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xe550[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x0e55('0x0'));var rimraf=require(_0x0e55('0x1'));var zipdir=require(_0x0e55('0x2'));var jsonpatch=require(_0x0e55('0x3'));var rp=require(_0x0e55('0x4'));var moment=require('moment');var BPromise=require(_0x0e55('0x5'));var Mustache=require(_0x0e55('0x6'));var util=require(_0x0e55('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x0e55('0x8'));var ejs=require(_0x0e55('0x9'));var fs=require('fs');var fs_extra=require(_0x0e55('0xa'));var _=require(_0x0e55('0xb'));var squel=require(_0x0e55('0xc'));var crypto=require(_0x0e55('0xd'));var jsforce=require(_0x0e55('0xe'));var deskjs=require(_0x0e55('0xf'));var toCsv=require(_0x0e55('0x8'));var querystring=require(_0x0e55('0x10'));var Papa=require(_0x0e55('0x11'));var Redis=require(_0x0e55('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x0e55('0x13'));var as=require(_0x0e55('0x14'));var hardwareService=require(_0x0e55('0x15'));var logger=require(_0x0e55('0x16'))(_0x0e55('0x17'));var utils=require(_0x0e55('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x0e55('0x19'));var db=require('../../mysqldb')['db'];var dbH=require(_0x0e55('0x1a'))['dbH'];function respondWithStatusCode(_0x27cb53,_0x302666){_0x302666=_0x302666||0xcc;return function(_0x100a54){if(_0x100a54){return _0x27cb53[_0x0e55('0x1b')](_0x302666);}return _0x27cb53['status'](_0x302666)[_0x0e55('0x1c')]();};}function respondWithResult(_0x157155,_0x46a43f){_0x46a43f=_0x46a43f||0xc8;return function(_0x2fccc5){if(_0x2fccc5){return _0x157155[_0x0e55('0x1d')](_0x46a43f)[_0x0e55('0x1e')](_0x2fccc5);}};}function respondWithFilteredResult(_0xe82e0f,_0x5d1c88){return function(_0x9002ab){if(_0x9002ab){var _0x93a4a9=typeof _0x5d1c88['offset']===_0x0e55('0x1f')&&typeof _0x5d1c88[_0x0e55('0x20')]===_0x0e55('0x1f');var _0xe3d864=_0x9002ab['count'];var _0x4cc9fd=_0x93a4a9?0x0:_0x5d1c88['offset'];var _0x3841e1=_0x93a4a9?_0x9002ab[_0x0e55('0x21')]:_0x5d1c88[_0x0e55('0x22')]+_0x5d1c88[_0x0e55('0x20')];var _0x165e2b;if(_0x3841e1>=_0xe3d864){_0x3841e1=_0xe3d864;_0x165e2b=0xc8;}else{_0x165e2b=0xce;}_0xe82e0f['status'](_0x165e2b);return _0xe82e0f[_0x0e55('0x23')](_0x0e55('0x24'),_0x4cc9fd+'-'+_0x3841e1+'/'+_0xe3d864)[_0x0e55('0x1e')](_0x9002ab);}return null;};}function patchUpdates(_0x12ceb3){return function(_0x391e7a){try{jsonpatch[_0x0e55('0x25')](_0x391e7a,_0x12ceb3,!![]);}catch(_0xa08a3b){return BPromise[_0x0e55('0x26')](_0xa08a3b);}return _0x391e7a[_0x0e55('0x27')]();};}function saveUpdates(_0x3f3503,_0x521f2b){return function(_0x7727e2){if(_0x7727e2){return _0x7727e2['update'](_0x3f3503)[_0x0e55('0x28')](function(_0x35d59f){return _0x35d59f;});}return null;};}function removeEntity(_0x5380f4,_0x1fc3fb){return function(_0x2227cc){if(_0x2227cc){return _0x2227cc[_0x0e55('0x29')]()[_0x0e55('0x28')](function(){var _0x46a05c=_0x2227cc[_0x0e55('0x2a')]({'plain':!![]});var _0x39c694='CustomReports';return db[_0x0e55('0x2b')][_0x0e55('0x29')]({'where':{'type':_0x39c694,'resourceId':_0x46a05c['id']}})[_0x0e55('0x28')](function(){return _0x2227cc;});})[_0x0e55('0x28')](function(){_0x5380f4[_0x0e55('0x1d')](0xcc)[_0x0e55('0x1c')]();});}};}function handleEntityNotFound(_0x3aae44,_0x5bae7c){return function(_0x2634c1){if(!_0x2634c1){_0x3aae44[_0x0e55('0x1b')](0x194);}return _0x2634c1;};}function handleError(_0x9636c9,_0x4f47f8){_0x4f47f8=_0x4f47f8||0x1f4;return function(_0x2f346c){logger[_0x0e55('0x2c')](_0x2f346c[_0x0e55('0x2d')]);if(_0x2f346c[_0x0e55('0x2e')]){delete _0x2f346c[_0x0e55('0x2e')];}_0x9636c9['status'](_0x4f47f8)['send'](_0x2f346c);};}exports[_0x0e55('0x2f')]=function(_0x29754f,_0x201451){var _0x434206={},_0x33e6cf={},_0x95f7b1={'count':0x0,'rows':[]};var _0x588c09=_['map'](db[_0x0e55('0x30')][_0x0e55('0x31')],function(_0x3e36b9){return{'name':_0x3e36b9['fieldName'],'type':_0x3e36b9[_0x0e55('0x32')][_0x0e55('0x33')]};});_0x33e6cf['model']=_[_0x0e55('0x34')](_0x588c09,_0x0e55('0x2e'));_0x33e6cf['query']=_[_0x0e55('0x35')](_0x29754f[_0x0e55('0x36')]);_0x33e6cf[_0x0e55('0x37')]=_[_0x0e55('0x38')](_0x33e6cf[_0x0e55('0x39')],_0x33e6cf['query']);_0x434206[_0x0e55('0x3a')]=_[_0x0e55('0x38')](_0x33e6cf[_0x0e55('0x39')],qs[_0x0e55('0x3b')](_0x29754f[_0x0e55('0x36')]['fields']));_0x434206[_0x0e55('0x3a')]=_0x434206[_0x0e55('0x3a')][_0x0e55('0x3c')]?_0x434206[_0x0e55('0x3a')]:_0x33e6cf['model'];if(!_0x29754f[_0x0e55('0x36')][_0x0e55('0x3d')](_0x0e55('0x3e'))){_0x434206[_0x0e55('0x20')]=qs[_0x0e55('0x20')](_0x29754f[_0x0e55('0x36')][_0x0e55('0x20')]);_0x434206[_0x0e55('0x22')]=qs['offset'](_0x29754f['query'][_0x0e55('0x22')]);}_0x434206[_0x0e55('0x3f')]=qs[_0x0e55('0x40')](_0x29754f[_0x0e55('0x36')][_0x0e55('0x40')]);_0x434206['where']=qs[_0x0e55('0x37')](_[_0x0e55('0x41')](_0x29754f['query'],_0x33e6cf['filters']),_0x588c09);if(_0x29754f[_0x0e55('0x36')][_0x0e55('0x42')]){_0x434206['where']=_[_0x0e55('0x43')](_0x434206[_0x0e55('0x44')],{'$or':_[_0x0e55('0x34')](_0x588c09,function(_0x490f6e){if(_0x490f6e[_0x0e55('0x32')]!==_0x0e55('0x45')){var _0x14a30a={};_0x14a30a[_0x490f6e['name']]={'$like':'%'+_0x29754f[_0x0e55('0x36')][_0x0e55('0x42')]+'%'};return _0x14a30a;}})});}_0x434206=_['merge']({},_0x434206,_0x29754f[_0x0e55('0x46')]);var _0x34e53a={'where':_0x434206[_0x0e55('0x44')]};return db[_0x0e55('0x30')][_0x0e55('0x21')](_0x34e53a)[_0x0e55('0x28')](function(_0x22c4a7){_0x95f7b1[_0x0e55('0x21')]=_0x22c4a7;if(_0x29754f['query'][_0x0e55('0x47')]){_0x434206[_0x0e55('0x48')]=[{'all':!![]}];}return db[_0x0e55('0x30')][_0x0e55('0x49')](_0x434206);})[_0x0e55('0x28')](function(_0x36752f){_0x95f7b1[_0x0e55('0x4a')]=_0x36752f;return _0x95f7b1;})[_0x0e55('0x28')](respondWithFilteredResult(_0x201451,_0x434206))[_0x0e55('0x4b')](handleError(_0x201451,null));};exports[_0x0e55('0x4c')]=function(_0x3dad73,_0x5db42a){var _0x2d3bfa={'raw':![],'where':{'id':_0x3dad73[_0x0e55('0x4d')]['id']}},_0x1f0de1={};_0x1f0de1['model']=_[_0x0e55('0x35')](db['AnalyticCustomReport'][_0x0e55('0x31')]);_0x1f0de1[_0x0e55('0x36')]=_[_0x0e55('0x35')](_0x3dad73[_0x0e55('0x36')]);_0x1f0de1[_0x0e55('0x37')]=_[_0x0e55('0x38')](_0x1f0de1[_0x0e55('0x39')],_0x1f0de1[_0x0e55('0x36')]);_0x2d3bfa[_0x0e55('0x3a')]=_[_0x0e55('0x38')](_0x1f0de1[_0x0e55('0x39')],qs[_0x0e55('0x3b')](_0x3dad73[_0x0e55('0x36')][_0x0e55('0x3b')]));_0x2d3bfa[_0x0e55('0x3a')]=_0x2d3bfa['attributes'][_0x0e55('0x3c')]?_0x2d3bfa[_0x0e55('0x3a')]:_0x1f0de1[_0x0e55('0x39')];if(_0x3dad73[_0x0e55('0x36')][_0x0e55('0x47')]){_0x2d3bfa['include']=[{'all':!![]}];}_0x2d3bfa=_[_0x0e55('0x43')]({},_0x2d3bfa,_0x3dad73[_0x0e55('0x46')]);return db['AnalyticCustomReport'][_0x0e55('0x4e')](_0x2d3bfa)[_0x0e55('0x28')](handleEntityNotFound(_0x5db42a,null))['then'](respondWithResult(_0x5db42a,null))[_0x0e55('0x4b')](handleError(_0x5db42a,null));};exports[_0x0e55('0x4f')]=function(_0x4d425f,_0x2c10f3){return db['AnalyticCustomReport'][_0x0e55('0x4f')](_0x4d425f[_0x0e55('0x50')],{})[_0x0e55('0x28')](function(_0x1c08fb){var _0x291280=_0x4d425f[_0x0e55('0x51')][_0x0e55('0x2a')]({'plain':!![]});if(!_0x291280)throw new Error(_0x0e55('0x52'));if(_0x291280['role']==='user'){var _0x44d786=_0x1c08fb['get']({'plain':!![]});var _0x3e8350=_0x0e55('0x53');return db[_0x0e55('0x54')]['find']({'where':{'name':_0x3e8350,'userProfileId':_0x291280['userProfileId']},'raw':!![]})[_0x0e55('0x28')](function(_0x4f207a){if(_0x4f207a&&_0x4f207a[_0x0e55('0x55')]===0x0){return db[_0x0e55('0x2b')][_0x0e55('0x4f')]({'name':_0x44d786[_0x0e55('0x2e')],'resourceId':_0x44d786['id'],'type':_0x0e55('0x56'),'sectionId':_0x4f207a['id']},{})[_0x0e55('0x28')](function(){return _0x1c08fb;});}else{return _0x1c08fb;}})['catch'](function(_0x503098){logger[_0x0e55('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x503098);throw _0x503098;});}return _0x1c08fb;})['then'](respondWithResult(_0x2c10f3,0xc9))['catch'](handleError(_0x2c10f3,null));};exports[_0x0e55('0x57')]=function(_0xfe97b6,_0x44a84e){if(_0xfe97b6[_0x0e55('0x50')]['id']){delete _0xfe97b6[_0x0e55('0x50')]['id'];}return db['AnalyticCustomReport'][_0x0e55('0x4e')]({'where':{'id':_0xfe97b6[_0x0e55('0x4d')]['id']}})[_0x0e55('0x28')](handleEntityNotFound(_0x44a84e,null))[_0x0e55('0x28')](saveUpdates(_0xfe97b6[_0x0e55('0x50')],null))['then'](respondWithResult(_0x44a84e,null))['catch'](handleError(_0x44a84e,null));};exports['destroy']=function(_0x1524fe,_0x5aff59){return db[_0x0e55('0x30')][_0x0e55('0x4e')]({'where':{'id':_0x1524fe[_0x0e55('0x4d')]['id']}})[_0x0e55('0x28')](handleEntityNotFound(_0x5aff59,null))[_0x0e55('0x28')](removeEntity(_0x5aff59,null))[_0x0e55('0x4b')](handleError(_0x5aff59,null));};exports[_0x0e55('0x58')]=function(_0x332153,_0x4fa308){var _0x42717e=0xa;var _0x4c7f97=[_0x0e55('0x59'),_0x0e55('0x5a'),_0x0e55('0x5b'),_0x0e55('0x5c')];var _0x5c2a0d={'SUM':_0x0e55('0x5d'),'COUNT':_0x0e55('0x5e'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x0e55('0x5f'),'MIN':_0x0e55('0x60'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x0e55('0x61'),'GROUP_CONCAT ASC':_0x0e55('0x62'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x314ff3={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x0e55('0x63'),'HOUR':_0x0e55('0x64'),'ROUND':_0x0e55('0x65'),'UNIX_TIMESTAMP':_0x0e55('0x66')};var _0x49c982=function(_0x84aaa2){return!_[_0x0e55('0x67')]([_0x0e55('0x68'),'IS\x20NOT\x20NULL','IS\x20EMPTY',_0x0e55('0x69')],_0x84aaa2);};var _0x4e7a7d=function(_0x5ac1f8){if(!_0x5ac1f8||!_0x5ac1f8[_0x0e55('0x6a')][_0x0e55('0x3c')]){return'';}for(var _0x259fea='(',_0x3f5031=0x0;_0x3f5031<_0x5ac1f8['rules']['length'];_0x3f5031+=0x1){_0x3f5031>0x0&&(_0x259fea+='\x20'+_0x5ac1f8['operator']+'\x20');_0x259fea+=_0x5ac1f8[_0x0e55('0x6a')][_0x3f5031]['group']?_0x4e7a7d(_0x5ac1f8[_0x0e55('0x6a')][_0x3f5031][_0x0e55('0x6b')]):_0x5ac1f8['rules'][_0x3f5031][_0x0e55('0x6c')]+'\x20'+_0x5ac1f8[_0x0e55('0x6a')][_0x3f5031][_0x0e55('0x6d')]+(_0x49c982(_0x5ac1f8[_0x0e55('0x6a')][_0x3f5031]['condition'])?'\x20'+_0x5ac1f8['rules'][_0x3f5031][_0x0e55('0x6e')]:'');}return _0x259fea+')';};var _0x5d3232={'where':{'id':_0x332153[_0x0e55('0x4d')]['id']}},_0x3b50ed,_0x28607c,_0x58d804,_0x55eb9e,_0x22489f;_0x5d3232=_[_0x0e55('0x43')]({},_0x5d3232,_0x332153['options']);return db['AnalyticCustomReport'][_0x0e55('0x4e')](_0x5d3232)[_0x0e55('0x28')](function(_0x5a2fe2){if(_0x5a2fe2){_0x3b50ed=_0x5a2fe2;return _0x5a2fe2['getFields']();}return null;})['then'](function(_0x29c469){if(_0x29c469){if(!_0x29c469[_0x0e55('0x3c')]){throw new db[(_0x0e55('0x6f'))][(_0x0e55('0x70'))](_0x0e55('0x71'),0x193);}_0x28607c=_0x29c469;return db[_0x0e55('0x72')]['findAll']({'raw':!![]});}return null;})[_0x0e55('0x28')](function(_0x260ded){if(_0x260ded){_0x58d804=_[_0x0e55('0x73')](_0x260ded,'id');var _0x4330e7;var _0x508900=squel[_0x0e55('0x74')]();_0x508900[_0x0e55('0x75')](_0x3b50ed[_0x0e55('0x76')]);for(var _0x16e73a=0x0;_0x16e73a<_0x28607c[_0x0e55('0x3c')];_0x16e73a+=0x1){_0x4330e7=_0x28607c[_0x16e73a]['MetricId']?_0x58d804[_0x28607c[_0x16e73a][_0x0e55('0x77')]][_0x0e55('0x78')]:_0x28607c[_0x16e73a][_0x0e55('0x6c')];_0x4330e7=_0x28607c[_0x16e73a][_0x0e55('0x79')]?_[_0x0e55('0x7a')](_0x5c2a0d[_0x28607c[_0x16e73a][_0x0e55('0x79')]],'%s',_0x4330e7):_0x4330e7;_0x4330e7=_0x28607c[_0x16e73a][_0x0e55('0x7b')]?_[_0x0e55('0x7a')](_0x314ff3[_0x28607c[_0x16e73a][_0x0e55('0x7b')]],'%s',_0x4330e7):_0x4330e7;if(_0x28607c[_0x16e73a][_0x0e55('0x7c')]){_0x508900['group'](_0x4330e7);}_0x28607c[_0x16e73a]['orderBy']&&_0x508900['order'](_0x4330e7,_0x28607c[_0x16e73a][_0x0e55('0x7d')]===_0x0e55('0x7e')?![]:!![]);_0x508900[_0x0e55('0x6c')](_0x4330e7,_0x28607c[_0x16e73a][_0x0e55('0x7f')]||_0x4330e7);}if(_0x3b50ed[_0x0e55('0x80')]){_0x3b50ed['joins']=JSON[_0x0e55('0x81')](_0x3b50ed['joins']);for(var _0x37ed79=0x0;_0x37ed79<_0x3b50ed[_0x0e55('0x80')][_0x0e55('0x3c')];_0x37ed79+=0x1){if(_0x3b50ed[_0x0e55('0x80')][_0x37ed79][_0x0e55('0x32')]&&_[_0x0e55('0x67')](_0x4c7f97,_0x3b50ed['joins'][_0x37ed79][_0x0e55('0x32')])&&_0x3b50ed['joins'][_0x37ed79][_0x0e55('0x82')]&&_0x3b50ed[_0x0e55('0x80')][_0x37ed79][_0x0e55('0x83')]&&_0x3b50ed['joins'][_0x37ed79][_0x0e55('0x84')]){_0x508900[_0x3b50ed[_0x0e55('0x80')][_0x37ed79]['type']](_0x3b50ed[_0x0e55('0x80')][_0x37ed79]['foreignTable'],null,util[_0x0e55('0x7b')](_0x0e55('0x85'),_0x3b50ed[_0x0e55('0x76')],_0x3b50ed[_0x0e55('0x80')][_0x37ed79][_0x0e55('0x82')],_0x3b50ed[_0x0e55('0x80')][_0x37ed79]['foreignTable'],_0x3b50ed['joins'][_0x37ed79]['foreignKey']));}}}if(_0x3b50ed['conditions']){_0x3b50ed[_0x0e55('0x86')]=JSON['parse'](_0x3b50ed[_0x0e55('0x86')]);_0x508900[_0x0e55('0x44')](_0x4e7a7d(_0x3b50ed[_0x0e55('0x86')][_0x0e55('0x6b')]));}_0x22489f=_0x508900['clone']();_0x508900[_0x0e55('0x20')](_0x42717e);_0x508900[_0x0e55('0x22')](0x0);logger[_0x0e55('0x87')](_0x0e55('0x88'),_0x508900[_0x0e55('0x89')]());return dbH[_0x0e55('0x8a')][_0x0e55('0x36')](_0x508900['toString'](),{'type':dbH['sequelize'][_0x0e55('0x8b')][_0x0e55('0x8c')]});}})[_0x0e55('0x28')](respondWithResult(_0x4fa308,null))[_0x0e55('0x4b')](handleError(_0x4fa308,null));};function runReport(_0x337ed1,_0x4f2557,_0x1079c8){var _0x941caa=_0x4f2557[_0x0e55('0x2e')];var _0x34fea9=0xa;var _0x402f53=[_0x0e55('0x59'),_0x0e55('0x5a'),_0x0e55('0x5b'),_0x0e55('0x5c')];var _0x2b7818={'SUM':_0x0e55('0x5d'),'COUNT':_0x0e55('0x5e'),'COUNT DISTINCT':_0x0e55('0x8d'),'MAX':_0x0e55('0x5f'),'MIN':'MIN(%s)','AVG':_0x0e55('0x8e'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x0e55('0x8f')};var _0x25186a={'SEC_TO_TIME':_0x0e55('0x90'),'DATE':_0x0e55('0x63'),'HOUR':_0x0e55('0x64'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x0e55('0x66')};var _0x2ef209=function(_0x351d4e){return!_[_0x0e55('0x67')]([_0x0e55('0x68'),'IS\x20NOT\x20NULL',_0x0e55('0x91'),'IS\x20NOT\x20EMPTY'],_0x351d4e);};var _0x147212=function(_0xef3db6){if(!_0xef3db6||!_0xef3db6[_0x0e55('0x6a')][_0x0e55('0x3c')]){return'';}for(var _0x1226c5='(',_0x39b46b=0x0;_0x39b46b<_0xef3db6['rules'][_0x0e55('0x3c')];_0x39b46b+=0x1){_0x39b46b>0x0&&(_0x1226c5+='\x20'+_0xef3db6['operator']+'\x20');_0x1226c5+=_0xef3db6[_0x0e55('0x6a')][_0x39b46b][_0x0e55('0x6b')]?_0x147212(_0xef3db6['rules'][_0x39b46b][_0x0e55('0x6b')]):_0xef3db6[_0x0e55('0x6a')][_0x39b46b]['field']+'\x20'+_0xef3db6['rules'][_0x39b46b]['condition']+(_0x2ef209(_0xef3db6[_0x0e55('0x6a')][_0x39b46b][_0x0e55('0x6d')])?'\x20'+_0xef3db6[_0x0e55('0x6a')][_0x39b46b][_0x0e55('0x6e')]:'');}return _0x1226c5+')';};var _0x4876ad={'where':{'id':_0x337ed1['id']}},_0x61fd9d,_0x1063b3,_0x463f52,_0x594a23,_0x1d4e1b;_0x4876ad=_['merge']({},_0x4876ad,_0x1079c8);return db[_0x0e55('0x30')][_0x0e55('0x4e')](_0x4876ad)[_0x0e55('0x28')](function(_0x2afecc){if(_0x2afecc){_0x61fd9d=_0x2afecc;return _0x2afecc[_0x0e55('0x92')]();}return null;})[_0x0e55('0x28')](function(_0x36b68e){if(_0x36b68e){if(!_0x36b68e['length']){throw new db[(_0x0e55('0x6f'))][(_0x0e55('0x70'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x1063b3=_0x36b68e;return db[_0x0e55('0x72')][_0x0e55('0x49')]({'raw':!![]});}return null;})['then'](function(_0xb8cecb){if(_0xb8cecb){_0x463f52=_['keyBy'](_0xb8cecb,'id');var _0x224103;var _0x4f92bd=squel[_0x0e55('0x74')]();_0x4f92bd[_0x0e55('0x75')](_0x61fd9d[_0x0e55('0x76')]);for(var _0x221c88=0x0;_0x221c88<_0x1063b3[_0x0e55('0x3c')];_0x221c88+=0x1){_0x224103=_0x1063b3[_0x221c88]['MetricId']?_0x463f52[_0x1063b3[_0x221c88][_0x0e55('0x77')]][_0x0e55('0x78')]:_0x1063b3[_0x221c88][_0x0e55('0x6c')];_0x224103=_0x1063b3[_0x221c88][_0x0e55('0x79')]?_[_0x0e55('0x7a')](_0x2b7818[_0x1063b3[_0x221c88]['function']],'%s',_0x224103):_0x224103;_0x224103=_0x1063b3[_0x221c88][_0x0e55('0x7b')]?_[_0x0e55('0x7a')](_0x25186a[_0x1063b3[_0x221c88][_0x0e55('0x7b')]],'%s',_0x224103):_0x224103;if(_0x1063b3[_0x221c88][_0x0e55('0x7c')]){_0x4f92bd[_0x0e55('0x6b')](_0x224103);}_0x1063b3[_0x221c88]['orderBy']&&_0x4f92bd[_0x0e55('0x3f')](_0x224103,_0x1063b3[_0x221c88]['orderBy']===_0x0e55('0x7e')?![]:!![]);_0x4f92bd[_0x0e55('0x6c')](_0x224103,_0x1063b3[_0x221c88][_0x0e55('0x7f')]||_0x224103);}if(_0x61fd9d[_0x0e55('0x80')]){_0x61fd9d['joins']=JSON[_0x0e55('0x81')](_0x61fd9d['joins']);for(var _0x14f92b=0x0;_0x14f92b<_0x61fd9d['joins'][_0x0e55('0x3c')];_0x14f92b+=0x1){if(_0x61fd9d[_0x0e55('0x80')][_0x14f92b]['type']&&_['includes'](_0x402f53,_0x61fd9d[_0x0e55('0x80')][_0x14f92b]['type'])&&_0x61fd9d[_0x0e55('0x80')][_0x14f92b][_0x0e55('0x82')]&&_0x61fd9d['joins'][_0x14f92b][_0x0e55('0x83')]&&_0x61fd9d[_0x0e55('0x80')][_0x14f92b][_0x0e55('0x84')]){_0x4f92bd[_0x61fd9d[_0x0e55('0x80')][_0x14f92b][_0x0e55('0x32')]](_0x61fd9d[_0x0e55('0x80')][_0x14f92b]['foreignTable'],null,util[_0x0e55('0x7b')]('%s.%s\x20=\x20%s.%s',_0x61fd9d[_0x0e55('0x76')],_0x61fd9d[_0x0e55('0x80')][_0x14f92b][_0x0e55('0x82')],_0x61fd9d[_0x0e55('0x80')][_0x14f92b][_0x0e55('0x83')],_0x61fd9d['joins'][_0x14f92b]['foreignKey']));}}}if(_0x61fd9d[_0x0e55('0x86')]){_0x61fd9d[_0x0e55('0x86')]=JSON[_0x0e55('0x81')](_0x61fd9d[_0x0e55('0x86')]);_0x4f92bd[_0x0e55('0x44')](_0x147212(_0x61fd9d[_0x0e55('0x86')][_0x0e55('0x6b')]));}_0x1d4e1b=_0x4f92bd['clone']();_0x4f92bd[_0x0e55('0x20')](_0x34fea9);_0x4f92bd['offset'](0x0);return;}})[_0x0e55('0x28')](function(){if(_0x4f2557['output']==='web'){return null;}var _0x169d42=_[_0x0e55('0x43')](_0x4f2557,{'name':_0x4f2557['fullPath']||_0x4f2557[_0x0e55('0x2e')]||_0x61fd9d['name'],'basename':_0x941caa,'savename':util[_0x0e55('0x7b')](_0x0e55('0x93'),_0x4f2557[_0x0e55('0x2e')]||_0x61fd9d['name'],require(_0x0e55('0x94'))['generate'](0x4),_0x4f2557[_0x0e55('0x95')]||_0x0e55('0x96')),'reportId':_0x61fd9d['id'],'reportType':_0x0e55('0x97')});return db[_0x0e55('0x98')]['create'](_0x169d42,{'raw':!![]});})[_0x0e55('0x28')](function(_0x2be6f8){if(_0x61fd9d[_0x0e55('0x76')]===_0x0e55('0x99')){_0x1d4e1b[_0x0e55('0x44')](_0x61fd9d[_0x0e55('0x76')]+_0x0e55('0x9a'),_0x4f2557[_0x0e55('0x9b')],_0x4f2557[_0x0e55('0x9c')]);}else{_0x1d4e1b[_0x0e55('0x44')](_0x61fd9d['table']+_0x0e55('0x9d'),_0x4f2557[_0x0e55('0x9b')],_0x4f2557[_0x0e55('0x9c')]);}if(_0x2be6f8){logger[_0x0e55('0x9e')]('Run\x20Query:',_0x1d4e1b[_0x0e55('0x89')]());require(_0x0e55('0x9f'))[_0x0e55('0xa0')](path[_0x0e55('0x59')](__dirname,_0x0e55('0xa1'),_0x2be6f8[_0x0e55('0x95')]),[_0x2be6f8['id'],_0x1d4e1b['toString'](),path[_0x0e55('0x59')](__dirname,_0x0e55('0xa2'),_0x2be6f8[_0x0e55('0xa3')]),_0x941caa]);return _0x2be6f8;}else{var _0x35148c=squel['select']();_0x35148c[_0x0e55('0x75')]('('+_0x1d4e1b[_0x0e55('0x89')]()+')',_0x0e55('0xa4'));_0x35148c[_0x0e55('0x6c')](_0x0e55('0xa5'),_0x0e55('0x21'));_0x1d4e1b[_0x0e55('0x20')](_0x4f2557[_0x0e55('0x20')]||_0x34fea9);_0x1d4e1b['offset'](_0x4f2557[_0x0e55('0x22')]||0x0);return dbH[_0x0e55('0x8a')][_0x0e55('0x36')](_0x35148c[_0x0e55('0x89')](),{'type':dbH['sequelize']['QueryTypes']['SELECT']})[_0x0e55('0x28')](function(_0x39e619){if(!_0x39e619[_0x0e55('0x3c')]){_0x594a23=0x0;}else{_0x594a23=_0x39e619[0x0][_0x0e55('0x21')]||0x0;}return dbH[_0x0e55('0x8a')][_0x0e55('0x36')](_0x1d4e1b[_0x0e55('0x89')](),{'type':dbH[_0x0e55('0x8a')][_0x0e55('0x8b')][_0x0e55('0x8c')]});})['then'](function(_0x2cc83e){return{'rows':_0x2cc83e||[],'count':_0x594a23};});}});}exports[_0x0e55('0xa6')]=function(_0x4417df,_0x2f6017){return runReport(_0x4417df['params'],_0x4417df[_0x0e55('0x36')],_0x4417df[_0x0e55('0x46')])[_0x0e55('0x28')](respondWithResult(_0x2f6017,null))['catch'](handleError(_0x2f6017,null));};exports[_0x0e55('0xa7')]=runReport;exports[_0x0e55('0x36')]=function(_0x4cce3a,_0xd99a4){var _0x3241ae=0xa;var _0x5ad05d=[_0x0e55('0x59'),'left_join',_0x0e55('0x5b'),'cross_join'];var _0x2b9bd3={'SUM':_0x0e55('0x5d'),'COUNT':_0x0e55('0x5e'),'COUNT DISTINCT':_0x0e55('0x8d'),'MAX':_0x0e55('0x5f'),'MIN':_0x0e55('0x60'),'AVG':_0x0e55('0x8e'),'GROUP_CONCAT':_0x0e55('0x61'),'GROUP_CONCAT ASC':_0x0e55('0x62'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x1c55c3={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x0e55('0x63'),'HOUR':_0x0e55('0x64'),'ROUND':_0x0e55('0x65'),'UNIX_TIMESTAMP':_0x0e55('0x66')};var _0x53457c=function(_0x590f30){return!_[_0x0e55('0x67')](['IS\x20NULL',_0x0e55('0xa8'),_0x0e55('0x91'),_0x0e55('0x69')],_0x590f30);};var _0x3d5641=function(_0x4a88e8){if(!_0x4a88e8||!_0x4a88e8[_0x0e55('0x6a')][_0x0e55('0x3c')]){return'';}for(var _0x552364='(',_0x32e584=0x0;_0x32e584<_0x4a88e8[_0x0e55('0x6a')][_0x0e55('0x3c')];_0x32e584+=0x1){_0x32e584>0x0&&(_0x552364+='\x20'+_0x4a88e8[_0x0e55('0xa9')]+'\x20');_0x552364+=_0x4a88e8[_0x0e55('0x6a')][_0x32e584][_0x0e55('0x6b')]?_0x3d5641(_0x4a88e8[_0x0e55('0x6a')][_0x32e584][_0x0e55('0x6b')]):_0x4a88e8[_0x0e55('0x6a')][_0x32e584]['field']+'\x20'+_0x4a88e8[_0x0e55('0x6a')][_0x32e584][_0x0e55('0x6d')]+(_0x53457c(_0x4a88e8[_0x0e55('0x6a')][_0x32e584]['condition'])?'\x20'+_0x4a88e8['rules'][_0x32e584][_0x0e55('0x6e')]:'');}return _0x552364+')';};var _0x2a6229={'where':{'id':_0x4cce3a[_0x0e55('0x4d')]['id']}},_0x3b9c20,_0x3997cb,_0x140097,_0x40f41c,_0x1ddf71;_0x2a6229=_[_0x0e55('0x43')]({},_0x2a6229,_0x4cce3a[_0x0e55('0x46')]);return db['AnalyticCustomReport']['find'](_0x2a6229)[_0x0e55('0x28')](function(_0x16e1aa){if(_0x16e1aa){_0x3b9c20=_0x16e1aa;return _0x16e1aa[_0x0e55('0x92')]();}return null;})[_0x0e55('0x28')](function(_0x1a1701){if(_0x1a1701){if(!_0x1a1701[_0x0e55('0x3c')]){throw new db['Sequelize']['ValidationErrorItem'](_0x0e55('0x71'),0x193);}_0x3997cb=_0x1a1701;return db[_0x0e55('0x72')]['findAll']({'raw':!![]});}return null;})[_0x0e55('0x28')](function(_0xf07450){if(_0xf07450){_0x140097=_[_0x0e55('0x73')](_0xf07450,'id');var _0x2feb43;var _0x474ea0=squel['select']();_0x474ea0[_0x0e55('0x75')](_0x3b9c20[_0x0e55('0x76')]);for(var _0x3835a2=0x0;_0x3835a2<_0x3997cb[_0x0e55('0x3c')];_0x3835a2+=0x1){_0x2feb43=_0x3997cb[_0x3835a2][_0x0e55('0x77')]?_0x140097[_0x3997cb[_0x3835a2][_0x0e55('0x77')]]['metric']:_0x3997cb[_0x3835a2][_0x0e55('0x6c')];_0x2feb43=_0x3997cb[_0x3835a2][_0x0e55('0x79')]?_['replace'](_0x2b9bd3[_0x3997cb[_0x3835a2][_0x0e55('0x79')]],'%s',_0x2feb43):_0x2feb43;_0x2feb43=_0x3997cb[_0x3835a2][_0x0e55('0x7b')]?_['replace'](_0x1c55c3[_0x3997cb[_0x3835a2]['format']],'%s',_0x2feb43):_0x2feb43;if(_0x3997cb[_0x3835a2][_0x0e55('0x7c')]){_0x474ea0['group'](_0x2feb43);}_0x3997cb[_0x3835a2][_0x0e55('0x7d')]&&_0x474ea0[_0x0e55('0x3f')](_0x2feb43,_0x3997cb[_0x3835a2][_0x0e55('0x7d')]===_0x0e55('0x7e')?![]:!![]);_0x474ea0[_0x0e55('0x6c')](_0x2feb43,_0x3997cb[_0x3835a2][_0x0e55('0x7f')]||_0x2feb43);}if(_0x3b9c20[_0x0e55('0x80')]){_0x3b9c20[_0x0e55('0x80')]=JSON[_0x0e55('0x81')](_0x3b9c20[_0x0e55('0x80')]);for(var _0x2b22f6=0x0;_0x2b22f6<_0x3b9c20[_0x0e55('0x80')][_0x0e55('0x3c')];_0x2b22f6+=0x1){if(_0x3b9c20[_0x0e55('0x80')][_0x2b22f6]['type']&&_[_0x0e55('0x67')](_0x5ad05d,_0x3b9c20[_0x0e55('0x80')][_0x2b22f6][_0x0e55('0x32')])&&_0x3b9c20[_0x0e55('0x80')][_0x2b22f6]['parentKey']&&_0x3b9c20[_0x0e55('0x80')][_0x2b22f6][_0x0e55('0x83')]&&_0x3b9c20['joins'][_0x2b22f6][_0x0e55('0x84')]){_0x474ea0[_0x3b9c20[_0x0e55('0x80')][_0x2b22f6]['type']](_0x3b9c20[_0x0e55('0x80')][_0x2b22f6][_0x0e55('0x83')],null,util[_0x0e55('0x7b')](_0x0e55('0x85'),_0x3b9c20[_0x0e55('0x76')],_0x3b9c20[_0x0e55('0x80')][_0x2b22f6][_0x0e55('0x82')],_0x3b9c20[_0x0e55('0x80')][_0x2b22f6]['foreignTable'],_0x3b9c20['joins'][_0x2b22f6][_0x0e55('0x84')]));}}}if(_0x3b9c20[_0x0e55('0x86')]){_0x3b9c20[_0x0e55('0x86')]=JSON[_0x0e55('0x81')](_0x3b9c20[_0x0e55('0x86')]);_0x474ea0[_0x0e55('0x44')](_0x3d5641(_0x3b9c20[_0x0e55('0x86')][_0x0e55('0x6b')]));}_0x1ddf71=_0x474ea0[_0x0e55('0xaa')]();_0x474ea0[_0x0e55('0x20')](_0x3241ae);_0x474ea0[_0x0e55('0x22')](0x0);logger[_0x0e55('0x87')](_0x0e55('0x88'),_0x474ea0[_0x0e55('0x89')]());return dbH[_0x0e55('0x8a')][_0x0e55('0x36')](_0x474ea0['toString'](),{'type':dbH['sequelize'][_0x0e55('0x8b')][_0x0e55('0x8c')]});}})[_0x0e55('0x28')](function(){return{'sql':_0x1ddf71['toString']()};})[_0x0e55('0x28')](respondWithResult(_0xd99a4,null))[_0x0e55('0x4b')](handleError(_0xd99a4,null));};
\ No newline at end of file
index f8786b5..09720f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd114=['lodash','../../config/logger','moment','path','./analyticCustomReport.attributes','exports','define','AnalyticCustomReport'];(function(_0x3a3c3d,_0x3b8542){var _0xf3142f=function(_0x479bb0){while(--_0x479bb0){_0x3a3c3d['push'](_0x3a3c3d['shift']());}};_0xf3142f(++_0x3b8542);}(_0xd114,0x1e8));var _0x4d11=function(_0x485a63,_0x2709c3){_0x485a63=_0x485a63-0x0;var _0x4c7866=_0xd114[_0x485a63];return _0x4c7866;};'use strict';var _=require(_0x4d11('0x0'));var util=require('util');var logger=require(_0x4d11('0x1'))('api');var moment=require(_0x4d11('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x4d11('0x3'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4d11('0x4'));module[_0x4d11('0x5')]=function(_0x3a3c84,_0x1747e0){return _0x3a3c84[_0x4d11('0x6')](_0x4d11('0x7'),attributes,{'tableName':'analytics_custom_reports','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x815e=['path','rimraf','./analyticCustomReport.attributes','exports','define','AnalyticCustomReport','analytics_custom_reports','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x40f070,_0xcadfa2){var _0x168220=function(_0x24d2f4){while(--_0x24d2f4){_0x40f070['push'](_0x40f070['shift']());}};_0x168220(++_0xcadfa2);}(_0x815e,0x165));var _0xe815=function(_0x4365fc,_0x3165c2){_0x4365fc=_0x4365fc-0x0;var _0x246d0e=_0x815e[_0x4365fc];return _0x246d0e;};'use strict';var _=require(_0xe815('0x0'));var util=require(_0xe815('0x1'));var logger=require(_0xe815('0x2'))(_0xe815('0x3'));var moment=require(_0xe815('0x4'));var BPromise=require(_0xe815('0x5'));var rp=require(_0xe815('0x6'));var fs=require('fs');var path=require(_0xe815('0x7'));var rimraf=require(_0xe815('0x8'));var config=require('../../config/environment');var attributes=require(_0xe815('0x9'));module[_0xe815('0xa')]=function(_0xd7d77c,_0x52fb30){return _0xd7d77c[_0xe815('0xb')](_0xe815('0xc'),attributes,{'tableName':_0xe815('0xd'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5fc7c8b..4a2134d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a26=['moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','util'];(function(_0x3f9ba6,_0x2a7f16){var _0x4b8e66=function(_0x7d78ce){while(--_0x7d78ce){_0x3f9ba6['push'](_0x3f9ba6['shift']());}};_0x4b8e66(++_0x2a7f16);}(_0x5a26,0xda));var _0x65a2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5a26[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x65a2('0x0'));var util=require(_0x65a2('0x1'));var moment=require(_0x65a2('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x65a2('0x3'));var db=require(_0x65a2('0x4'))['db'];var utils=require(_0x65a2('0x5'));var logger=require(_0x65a2('0x6'))(_0x65a2('0x7'));var config=require('../../config/environment');var jayson=require(_0x65a2('0x8'));var client=jayson[_0x65a2('0x9')][_0x65a2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x27e017,_0x55a889,_0xdeddbc){return new BPromise(function(_0x5f0163,_0x583ceb){return client[_0x65a2('0xb')](_0x27e017,_0xdeddbc)[_0x65a2('0xc')](function(_0x4eacb3){logger[_0x65a2('0xd')](_0x65a2('0xe'),_0x55a889,_0x65a2('0xf'));logger[_0x65a2('0x10')]('AnalyticCustomReport,\x20%s,\x20%s,\x20%s',_0x55a889,_0x65a2('0xf'),JSON[_0x65a2('0x11')](_0x4eacb3));if(_0x4eacb3['error']){if(_0x4eacb3[_0x65a2('0x12')][_0x65a2('0x13')]===0x1f4){logger['error'](_0x65a2('0xe'),_0x55a889,_0x4eacb3['error'][_0x65a2('0x14')]);return _0x583ceb(_0x4eacb3[_0x65a2('0x12')]['message']);}logger[_0x65a2('0x12')](_0x65a2('0xe'),_0x55a889,_0x4eacb3[_0x65a2('0x12')][_0x65a2('0x14')]);return _0x5f0163(_0x4eacb3['error']['message']);}else{logger[_0x65a2('0xd')](_0x65a2('0xe'),_0x55a889,'request\x20sent');_0x5f0163(_0x4eacb3['result'][_0x65a2('0x14')]);}})[_0x65a2('0x15')](function(_0x546bf6){logger[_0x65a2('0x12')](_0x65a2('0xe'),_0x55a889,_0x546bf6);_0x583ceb(_0x546bf6);});});}
\ No newline at end of file
+var _0x4d76=['util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch'];(function(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0x4d76,0xd2));var _0x64d7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4d76[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x64d7('0x0'));var moment=require(_0x64d7('0x1'));var BPromise=require('bluebird');var rs=require(_0x64d7('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x64d7('0x3'))['db'];var utils=require(_0x64d7('0x4'));var logger=require(_0x64d7('0x5'))(_0x64d7('0x6'));var config=require(_0x64d7('0x7'));var jayson=require(_0x64d7('0x8'));var client=jayson[_0x64d7('0x9')][_0x64d7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x29c536,_0x40899c,_0x12693c){return new BPromise(function(_0x560567,_0x5de231){return client[_0x64d7('0xb')](_0x29c536,_0x12693c)['then'](function(_0x3f6b5f){logger[_0x64d7('0xc')](_0x64d7('0xd'),_0x40899c,_0x64d7('0xe'));logger['debug'](_0x64d7('0xf'),_0x40899c,_0x64d7('0xe'),JSON[_0x64d7('0x10')](_0x3f6b5f));if(_0x3f6b5f[_0x64d7('0x11')]){if(_0x3f6b5f[_0x64d7('0x11')][_0x64d7('0x12')]===0x1f4){logger[_0x64d7('0x11')]('AnalyticCustomReport,\x20%s,\x20%s',_0x40899c,_0x3f6b5f[_0x64d7('0x11')][_0x64d7('0x13')]);return _0x5de231(_0x3f6b5f[_0x64d7('0x11')][_0x64d7('0x13')]);}logger['error']('AnalyticCustomReport,\x20%s,\x20%s',_0x40899c,_0x3f6b5f[_0x64d7('0x11')][_0x64d7('0x13')]);return _0x560567(_0x3f6b5f[_0x64d7('0x11')][_0x64d7('0x13')]);}else{logger['info'](_0x64d7('0xd'),_0x40899c,'request\x20sent');_0x560567(_0x3f6b5f['result'][_0x64d7('0x13')]);}})[_0x64d7('0x14')](function(_0x52dbcf){logger[_0x64d7('0x11')](_0x64d7('0xd'),_0x40899c,_0x52dbcf);_0x5de231(_0x52dbcf);});});}
\ No newline at end of file
index 96faea5..3bc0600 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74ab=['post','create','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/preview','preview','/:id/run','run','/:id/query','query'];(function(_0x1c90a7,_0x115e4d){var _0x408b33=function(_0x4b2b46){while(--_0x4b2b46){_0x1c90a7['push'](_0x1c90a7['shift']());}};_0x408b33(++_0x115e4d);}(_0x74ab,0x109));var _0xb74a=function(_0x355235,_0x58565a){_0x355235=_0x355235-0x0;var _0x4cf1b2=_0x74ab[_0x355235];return _0x4cf1b2;};'use strict';var multer=require(_0xb74a('0x0'));var util=require(_0xb74a('0x1'));var path=require(_0xb74a('0x2'));var timeout=require(_0xb74a('0x3'));var express=require(_0xb74a('0x4'));var router=express[_0xb74a('0x5')]();var fs_extra=require(_0xb74a('0x6'));var auth=require(_0xb74a('0x7'));var interaction=require(_0xb74a('0x8'));var config=require(_0xb74a('0x9'));var controller=require('./analyticCustomReport.controller');router[_0xb74a('0xa')]('/',auth[_0xb74a('0xb')](),controller[_0xb74a('0xc')]);router[_0xb74a('0xa')](_0xb74a('0xd'),auth[_0xb74a('0xb')](),controller[_0xb74a('0xe')]);router[_0xb74a('0xa')](_0xb74a('0xf'),auth[_0xb74a('0xb')](),controller[_0xb74a('0x10')]);router[_0xb74a('0xa')](_0xb74a('0x11'),auth['isAuthenticated'](),controller[_0xb74a('0x12')]);router['get'](_0xb74a('0x13'),auth[_0xb74a('0xb')](),controller[_0xb74a('0x14')]);router[_0xb74a('0x15')]('/',auth['isAuthenticated'](),controller[_0xb74a('0x16')]);router['put'](_0xb74a('0xd'),auth['isAuthenticated'](),controller[_0xb74a('0x17')]);router[_0xb74a('0x18')](_0xb74a('0xd'),auth[_0xb74a('0xb')](),controller[_0xb74a('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0x0cab=['post','create','update','exports','util','connect-timeout','Router','../../components/interaction/service','./analyticCustomReport.controller','isAuthenticated','index','get','/:id','show','/:id/preview','preview','/:id/run','/:id/query','query'];(function(_0x291cd4,_0x44288d){var _0x3bc45c=function(_0x8011cc){while(--_0x8011cc){_0x291cd4['push'](_0x291cd4['shift']());}};_0x3bc45c(++_0x44288d);}(_0x0cab,0x1f2));var _0xb0ca=function(_0x4baeec,_0x156ecf){_0x4baeec=_0x4baeec-0x0;var _0x39fbb0=_0x0cab[_0x4baeec];return _0x39fbb0;};'use strict';var multer=require('multer');var util=require(_0xb0ca('0x0'));var path=require('path');var timeout=require(_0xb0ca('0x1'));var express=require('express');var router=express[_0xb0ca('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xb0ca('0x3'));var config=require('../../config/environment');var controller=require(_0xb0ca('0x4'));router['get']('/',auth[_0xb0ca('0x5')](),controller[_0xb0ca('0x6')]);router[_0xb0ca('0x7')](_0xb0ca('0x8'),auth[_0xb0ca('0x5')](),controller[_0xb0ca('0x9')]);router[_0xb0ca('0x7')](_0xb0ca('0xa'),auth[_0xb0ca('0x5')](),controller[_0xb0ca('0xb')]);router[_0xb0ca('0x7')](_0xb0ca('0xc'),auth[_0xb0ca('0x5')](),controller['run']);router[_0xb0ca('0x7')](_0xb0ca('0xd'),auth[_0xb0ca('0x5')](),controller[_0xb0ca('0xe')]);router[_0xb0ca('0xf')]('/',auth[_0xb0ca('0x5')](),controller[_0xb0ca('0x10')]);router['put']('/:id',auth[_0xb0ca('0x5')](),controller[_0xb0ca('0x11')]);router['delete']('/:id',auth[_0xb0ca('0x5')](),controller['destroy']);module[_0xb0ca('0x12')]=router;
\ No newline at end of file
index 9f231a8..0a76989 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeda8=['sequelize','exports','STRING','TEXT'];(function(_0x44fb9d,_0x2382b6){var _0x2240bb=function(_0x3d6231){while(--_0x3d6231){_0x44fb9d['push'](_0x44fb9d['shift']());}};_0x2240bb(++_0x2382b6);}(_0xeda8,0x104));var _0x8eda=function(_0x4ab0d2,_0x3007c7){_0x4ab0d2=_0x4ab0d2-0x0;var _0x451d19=_0xeda8[_0x4ab0d2];return _0x451d19;};'use strict';var Sequelize=require(_0x8eda('0x0'));module[_0x8eda('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x8eda('0x2')]},'parent':{'type':Sequelize[_0x8eda('0x2')]},'table':{'type':Sequelize[_0x8eda('0x2')]},'conditions':{'type':Sequelize[_0x8eda('0x3')]},'joins':{'type':Sequelize[_0x8eda('0x3')]}};
\ No newline at end of file
+var _0x7dfd=['STRING','TEXT','sequelize','exports'];(function(_0x41413a,_0xbd7ec6){var _0x3c3321=function(_0x493773){while(--_0x493773){_0x41413a['push'](_0x41413a['shift']());}};_0x3c3321(++_0xbd7ec6);}(_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')]={'name':{'type':Sequelize[_0xd7df('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xd7df('0x2')]},'parent':{'type':Sequelize[_0xd7df('0x2')]},'table':{'type':Sequelize[_0xd7df('0x2')]},'conditions':{'type':Sequelize[_0xd7df('0x3')]},'joins':{'type':Sequelize[_0xd7df('0x3')]}};
\ No newline at end of file
index ec9da82..02dbf58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','COUNT(DISTINCT\x20%s)','from','function','order','output','web','fullPath','%s-%s.%s','randomstring','generate','csv','default','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','countTable','run','params','runReport','AVG(%s)','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','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','dbH','status','end','limit','undefined','count','offset','Content-Range','apply','save','update','then','destroy','get','DefaultReports','UserProfileResource','sendStatus','error','stack','name','send','index','map','AnalyticDefaultReport','rawAttributes','type','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','query','where','pick','filters','filter','VIRTUAL','merge','options','include','findAll','rows','catch','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','MAX(%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','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','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','table','MetricId','metric','replace','format','groupBy','orderBy','DESC','alias','joins','parentKey','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','parse','clone'];(function(_0x510bff,_0x439572){var _0x35dbe2=function(_0x568531){while(--_0x568531){_0x510bff['push'](_0x510bff['shift']());}};_0x35dbe2(++_0x439572);}(_0x5fab,0x177));var _0xb5fa=function(_0x41d6c7,_0xc0db02){_0x41d6c7=_0x41d6c7-0x0;var _0x36ed7d=_0x5fab[_0x41d6c7];return _0x36ed7d;};'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'];var dbH=require('../../mysqldb')[_0xb5fa('0x1a')];function respondWithStatusCode(_0x3dad4d,_0x56e8b0){_0x56e8b0=_0x56e8b0||0xcc;return function(_0x116849){if(_0x116849){return _0x3dad4d['sendStatus'](_0x56e8b0);}return _0x3dad4d[_0xb5fa('0x1b')](_0x56e8b0)[_0xb5fa('0x1c')]();};}function respondWithResult(_0x40c914,_0xca8d82){_0xca8d82=_0xca8d82||0xc8;return function(_0x8e9d1c){if(_0x8e9d1c){return _0x40c914['status'](_0xca8d82)['json'](_0x8e9d1c);}};}function respondWithFilteredResult(_0x38e964,_0x587043){return function(_0x31f252){if(_0x31f252){var _0x27c8f7=typeof _0x587043['offset']==='undefined'&&typeof _0x587043[_0xb5fa('0x1d')]===_0xb5fa('0x1e');var _0x32e9e5=_0x31f252[_0xb5fa('0x1f')];var _0x324ba5=_0x27c8f7?0x0:_0x587043[_0xb5fa('0x20')];var _0x3b0f69=_0x27c8f7?_0x31f252[_0xb5fa('0x1f')]:_0x587043[_0xb5fa('0x20')]+_0x587043[_0xb5fa('0x1d')];var _0x3c8d53;if(_0x3b0f69>=_0x32e9e5){_0x3b0f69=_0x32e9e5;_0x3c8d53=0xc8;}else{_0x3c8d53=0xce;}_0x38e964[_0xb5fa('0x1b')](_0x3c8d53);return _0x38e964['set'](_0xb5fa('0x21'),_0x324ba5+'-'+_0x3b0f69+'/'+_0x32e9e5)['json'](_0x31f252);}return null;};}function patchUpdates(_0x37ae06){return function(_0x4a6c04){try{jsonpatch[_0xb5fa('0x22')](_0x4a6c04,_0x37ae06,!![]);}catch(_0x43c09f){return BPromise['reject'](_0x43c09f);}return _0x4a6c04[_0xb5fa('0x23')]();};}function saveUpdates(_0x3a2ab9,_0x283a56){return function(_0x47f71a){if(_0x47f71a){return _0x47f71a[_0xb5fa('0x24')](_0x3a2ab9)[_0xb5fa('0x25')](function(_0x444237){return _0x444237;});}return null;};}function removeEntity(_0x542348,_0x224ec8){return function(_0x5d55f7){if(_0x5d55f7){return _0x5d55f7[_0xb5fa('0x26')]()[_0xb5fa('0x25')](function(){var _0x11053a=_0x5d55f7[_0xb5fa('0x27')]({'plain':!![]});var _0x2dbd22=_0xb5fa('0x28');return db[_0xb5fa('0x29')][_0xb5fa('0x26')]({'where':{'type':_0x2dbd22,'resourceId':_0x11053a['id']}})['then'](function(){return _0x5d55f7;});})['then'](function(){_0x542348['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x28a350,_0x460b54){return function(_0x12c0d4){if(!_0x12c0d4){_0x28a350[_0xb5fa('0x2a')](0x194);}return _0x12c0d4;};}function handleError(_0x534884,_0x3506a4){_0x3506a4=_0x3506a4||0x1f4;return function(_0x358549){logger[_0xb5fa('0x2b')](_0x358549[_0xb5fa('0x2c')]);if(_0x358549[_0xb5fa('0x2d')]){delete _0x358549[_0xb5fa('0x2d')];}_0x534884[_0xb5fa('0x1b')](_0x3506a4)[_0xb5fa('0x2e')](_0x358549);};}exports[_0xb5fa('0x2f')]=function(_0xed02e,_0x116773){var _0x5a0152={},_0x3fd1fb={},_0x21fc7e={'count':0x0,'rows':[]};var _0x319c48=_[_0xb5fa('0x30')](db[_0xb5fa('0x31')][_0xb5fa('0x32')],function(_0x25fc7c){return{'name':_0x25fc7c['fieldName'],'type':_0x25fc7c[_0xb5fa('0x33')]['key']};});_0x3fd1fb['model']=_['map'](_0x319c48,_0xb5fa('0x2d'));_0x3fd1fb['query']=_[_0xb5fa('0x34')](_0xed02e['query']);_0x3fd1fb['filters']=_[_0xb5fa('0x35')](_0x3fd1fb[_0xb5fa('0x36')],_0x3fd1fb['query']);_0x5a0152['attributes']=_[_0xb5fa('0x35')](_0x3fd1fb[_0xb5fa('0x36')],qs[_0xb5fa('0x37')](_0xed02e['query'][_0xb5fa('0x37')]));_0x5a0152[_0xb5fa('0x38')]=_0x5a0152['attributes'][_0xb5fa('0x39')]?_0x5a0152[_0xb5fa('0x38')]:_0x3fd1fb[_0xb5fa('0x36')];if(!_0xed02e['query'][_0xb5fa('0x3a')](_0xb5fa('0x3b'))){_0x5a0152[_0xb5fa('0x1d')]=qs['limit'](_0xed02e[_0xb5fa('0x3c')][_0xb5fa('0x1d')]);_0x5a0152[_0xb5fa('0x20')]=qs[_0xb5fa('0x20')](_0xed02e['query']['offset']);}_0x5a0152['order']=qs['sort'](_0xed02e['query']['sort']);_0x5a0152[_0xb5fa('0x3d')]=qs['filters'](_[_0xb5fa('0x3e')](_0xed02e[_0xb5fa('0x3c')],_0x3fd1fb[_0xb5fa('0x3f')]),_0x319c48);if(_0xed02e[_0xb5fa('0x3c')][_0xb5fa('0x40')]){_0x5a0152[_0xb5fa('0x3d')]=_['merge'](_0x5a0152['where'],{'$or':_['map'](_0x319c48,function(_0x534b38){if(_0x534b38['type']!==_0xb5fa('0x41')){var _0x5addd5={};_0x5addd5[_0x534b38['name']]={'$like':'%'+_0xed02e[_0xb5fa('0x3c')][_0xb5fa('0x40')]+'%'};return _0x5addd5;}})});}_0x5a0152=_[_0xb5fa('0x42')]({},_0x5a0152,_0xed02e[_0xb5fa('0x43')]);var _0x5bc93f={'where':_0x5a0152[_0xb5fa('0x3d')]};return db[_0xb5fa('0x31')][_0xb5fa('0x1f')](_0x5bc93f)[_0xb5fa('0x25')](function(_0x402a68){_0x21fc7e['count']=_0x402a68;if(_0xed02e[_0xb5fa('0x3c')]['includeAll']){_0x5a0152[_0xb5fa('0x44')]=[{'all':!![]}];}return db[_0xb5fa('0x31')][_0xb5fa('0x45')](_0x5a0152);})[_0xb5fa('0x25')](function(_0x1c706b){_0x21fc7e[_0xb5fa('0x46')]=_0x1c706b;return _0x21fc7e;})[_0xb5fa('0x25')](respondWithFilteredResult(_0x116773,_0x5a0152))[_0xb5fa('0x47')](handleError(_0x116773,null));};exports['show']=function(_0x1c3c2c,_0xc03e44){var _0x59ae64={'raw':!![],'where':{'id':_0x1c3c2c['params']['id']}},_0x293c19={};_0x293c19[_0xb5fa('0x36')]=_[_0xb5fa('0x34')](db['AnalyticDefaultReport']['rawAttributes']);_0x293c19[_0xb5fa('0x3c')]=_[_0xb5fa('0x34')](_0x1c3c2c[_0xb5fa('0x3c')]);_0x293c19[_0xb5fa('0x3f')]=_[_0xb5fa('0x35')](_0x293c19[_0xb5fa('0x36')],_0x293c19[_0xb5fa('0x3c')]);_0x59ae64[_0xb5fa('0x38')]=_['intersection'](_0x293c19[_0xb5fa('0x36')],qs[_0xb5fa('0x37')](_0x1c3c2c['query'][_0xb5fa('0x37')]));_0x59ae64[_0xb5fa('0x38')]=_0x59ae64[_0xb5fa('0x38')][_0xb5fa('0x39')]?_0x59ae64[_0xb5fa('0x38')]:_0x293c19[_0xb5fa('0x36')];if(_0x1c3c2c[_0xb5fa('0x3c')][_0xb5fa('0x48')]){_0x59ae64[_0xb5fa('0x44')]=[{'all':!![]}];}_0x59ae64=_[_0xb5fa('0x42')]({},_0x59ae64,_0x1c3c2c[_0xb5fa('0x43')]);return db[_0xb5fa('0x31')][_0xb5fa('0x49')](_0x59ae64)[_0xb5fa('0x25')](handleEntityNotFound(_0xc03e44,null))[_0xb5fa('0x25')](respondWithResult(_0xc03e44,null))[_0xb5fa('0x47')](handleError(_0xc03e44,null));};exports['create']=function(_0x56dceb,_0x46194d){return db['AnalyticDefaultReport'][_0xb5fa('0x4a')](_0x56dceb[_0xb5fa('0x4b')],{})['then'](function(_0x4ef1d0){var _0x2931a7=_0x56dceb[_0xb5fa('0x4c')][_0xb5fa('0x27')]({'plain':!![]});if(!_0x2931a7)throw new Error(_0xb5fa('0x4d'));if(_0x2931a7[_0xb5fa('0x4e')]==='user'){var _0x27a651=_0x4ef1d0['get']({'plain':!![]});var _0x251d36=_0xb5fa('0x4f');return db[_0xb5fa('0x50')]['find']({'where':{'name':_0x251d36,'userProfileId':_0x2931a7[_0xb5fa('0x51')]},'raw':!![]})[_0xb5fa('0x25')](function(_0x4dea87){if(_0x4dea87&&_0x4dea87['autoAssociation']===0x0){return db[_0xb5fa('0x29')][_0xb5fa('0x4a')]({'name':_0x27a651[_0xb5fa('0x2d')],'resourceId':_0x27a651['id'],'type':_0xb5fa('0x28'),'sectionId':_0x4dea87['id']},{})[_0xb5fa('0x25')](function(){return _0x4ef1d0;});}else{return _0x4ef1d0;}})[_0xb5fa('0x47')](function(_0x31c91f){logger[_0xb5fa('0x2b')](_0xb5fa('0x52'),_0x31c91f);throw _0x31c91f;});}return _0x4ef1d0;})[_0xb5fa('0x25')](respondWithResult(_0x46194d,0xc9))[_0xb5fa('0x47')](handleError(_0x46194d,null));};exports[_0xb5fa('0x24')]=function(_0x3ccfd1,_0x2799e7){if(_0x3ccfd1[_0xb5fa('0x4b')]['id']){delete _0x3ccfd1[_0xb5fa('0x4b')]['id'];}return db[_0xb5fa('0x31')][_0xb5fa('0x49')]({'where':{'id':_0x3ccfd1['params']['id']}})[_0xb5fa('0x25')](handleEntityNotFound(_0x2799e7,null))[_0xb5fa('0x25')](saveUpdates(_0x3ccfd1[_0xb5fa('0x4b')],null))[_0xb5fa('0x25')](respondWithResult(_0x2799e7,null))[_0xb5fa('0x47')](handleError(_0x2799e7,null));};exports[_0xb5fa('0x26')]=function(_0x4224cf,_0x24117e){return db[_0xb5fa('0x31')][_0xb5fa('0x49')]({'where':{'id':_0x4224cf['params']['id']}})['then'](handleEntityNotFound(_0x24117e,null))[_0xb5fa('0x25')](removeEntity(_0x24117e,null))[_0xb5fa('0x47')](handleError(_0x24117e,null));};exports[_0xb5fa('0x53')]=function(_0x5caf84,_0x441c41){var _0x367f7a=0xa;var _0x1572fb=[_0xb5fa('0x54'),_0xb5fa('0x55'),_0xb5fa('0x56'),_0xb5fa('0x57')];var _0x4f82f0={'SUM':_0xb5fa('0x58'),'COUNT':_0xb5fa('0x59'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xb5fa('0x5a'),'MIN':_0xb5fa('0x5b'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xb5fa('0x5c'),'GROUP_CONCAT ASC':_0xb5fa('0x5d'),'GROUP_CONCAT DESC':_0xb5fa('0x5e')};var _0x2b9a45={'SEC_TO_TIME':_0xb5fa('0x5f'),'DATE':_0xb5fa('0x60'),'HOUR':_0xb5fa('0x61'),'ROUND':_0xb5fa('0x62'),'UNIX_TIMESTAMP':_0xb5fa('0x63')};var _0x1c24e3=function(_0xfb88cc){return!_[_0xb5fa('0x64')]([_0xb5fa('0x65'),_0xb5fa('0x66'),_0xb5fa('0x67'),_0xb5fa('0x68')],_0xfb88cc);};var _0x41cce9=function(_0x23fb01){if(!_0x23fb01||!_0x23fb01[_0xb5fa('0x69')][_0xb5fa('0x39')]){return'';}for(var _0x421a93='(',_0x36fc0f=0x0;_0x36fc0f<_0x23fb01['rules'][_0xb5fa('0x39')];_0x36fc0f+=0x1){_0x36fc0f>0x0&&(_0x421a93+='\x20'+_0x23fb01[_0xb5fa('0x6a')]+'\x20');_0x421a93+=_0x23fb01[_0xb5fa('0x69')][_0x36fc0f]['group']?_0x41cce9(_0x23fb01[_0xb5fa('0x69')][_0x36fc0f][_0xb5fa('0x6b')]):_0x23fb01['rules'][_0x36fc0f][_0xb5fa('0x6c')]+'\x20'+_0x23fb01[_0xb5fa('0x69')][_0x36fc0f][_0xb5fa('0x6d')]+(_0x1c24e3(_0x23fb01['rules'][_0x36fc0f]['condition'])?'\x20'+_0x23fb01[_0xb5fa('0x69')][_0x36fc0f][_0xb5fa('0x6e')]:'');}return _0x421a93+')';};var _0x432f04={'where':{'id':_0x5caf84['params']['id']}},_0x57d8b7,_0x597206,_0x30d53b,_0x199555,_0x12b0a2;_0x432f04=_['merge']({},_0x432f04,_0x5caf84['options']);return db[_0xb5fa('0x31')][_0xb5fa('0x49')](_0x432f04)[_0xb5fa('0x25')](function(_0x4ce1bd){if(_0x4ce1bd){_0x57d8b7=_0x4ce1bd;return _0x4ce1bd[_0xb5fa('0x6f')]();}return null;})[_0xb5fa('0x25')](function(_0x13ef3a){if(_0x13ef3a){if(!_0x13ef3a[_0xb5fa('0x39')]){throw new db[(_0xb5fa('0x70'))][(_0xb5fa('0x71'))](_0xb5fa('0x72'),0x193);}_0x597206=_0x13ef3a;return db[_0xb5fa('0x73')][_0xb5fa('0x45')]({'raw':!![]});}return null;})[_0xb5fa('0x25')](function(_0x3a1db9){if(_0x3a1db9){_0x30d53b=_[_0xb5fa('0x74')](_0x3a1db9,'id');var _0xecdff3;var _0x38faa6=squel[_0xb5fa('0x75')]();_0x38faa6['from'](_0x57d8b7[_0xb5fa('0x76')]);for(var _0x5a6f74=0x0;_0x5a6f74<_0x597206[_0xb5fa('0x39')];_0x5a6f74+=0x1){_0xecdff3=_0x597206[_0x5a6f74][_0xb5fa('0x77')]?_0x30d53b[_0x597206[_0x5a6f74][_0xb5fa('0x77')]][_0xb5fa('0x78')]:_0x597206[_0x5a6f74][_0xb5fa('0x6c')];_0xecdff3=_0x597206[_0x5a6f74]['function']?_[_0xb5fa('0x79')](_0x4f82f0[_0x597206[_0x5a6f74]['function']],'%s',_0xecdff3):_0xecdff3;_0xecdff3=_0x597206[_0x5a6f74][_0xb5fa('0x7a')]?_[_0xb5fa('0x79')](_0x2b9a45[_0x597206[_0x5a6f74][_0xb5fa('0x7a')]],'%s',_0xecdff3):_0xecdff3;if(_0x597206[_0x5a6f74][_0xb5fa('0x7b')]){_0x38faa6['group'](_0xecdff3);}_0x597206[_0x5a6f74]['orderBy']&&_0x38faa6['order'](_0xecdff3,_0x597206[_0x5a6f74][_0xb5fa('0x7c')]===_0xb5fa('0x7d')?![]:!![]);_0x38faa6[_0xb5fa('0x6c')](_0xecdff3,_0x597206[_0x5a6f74][_0xb5fa('0x7e')]||_0xecdff3);}if(_0x57d8b7[_0xb5fa('0x7f')]){_0x57d8b7[_0xb5fa('0x7f')]=JSON['parse'](_0x57d8b7[_0xb5fa('0x7f')]);for(var _0x5c08e1=0x0;_0x5c08e1<_0x57d8b7['joins'][_0xb5fa('0x39')];_0x5c08e1+=0x1){if(_0x57d8b7['joins'][_0x5c08e1]['type']&&_['includes'](_0x1572fb,_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1]['type'])&&_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1][_0xb5fa('0x80')]&&_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1]['foreignTable']&&_0x57d8b7['joins'][_0x5c08e1][_0xb5fa('0x81')]){_0x38faa6[_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1]['type']](_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1][_0xb5fa('0x82')],null,util[_0xb5fa('0x7a')](_0xb5fa('0x83'),_0x57d8b7['table'],_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1][_0xb5fa('0x80')],_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1][_0xb5fa('0x82')],_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1][_0xb5fa('0x81')]));}}}if(_0x57d8b7[_0xb5fa('0x84')]){_0x57d8b7['conditions']=JSON[_0xb5fa('0x85')](_0x57d8b7['conditions']);_0x38faa6[_0xb5fa('0x3d')](_0x41cce9(_0x57d8b7[_0xb5fa('0x84')]['group']));}_0x12b0a2=_0x38faa6[_0xb5fa('0x86')]();_0x38faa6[_0xb5fa('0x1d')](_0x367f7a);_0x38faa6[_0xb5fa('0x20')](0x0);logger[_0xb5fa('0x87')](_0xb5fa('0x88'),_0x38faa6[_0xb5fa('0x89')]());return dbH[_0xb5fa('0x8a')][_0xb5fa('0x3c')](_0x38faa6['toString'](),{'type':dbH[_0xb5fa('0x8a')][_0xb5fa('0x8b')][_0xb5fa('0x8c')]});}})[_0xb5fa('0x25')](respondWithResult(_0x441c41,null))['catch'](handleError(_0x441c41,null));};function runReport(_0x593386,_0x47d72b,_0x5557a3){var _0x1c60bd=_0x47d72b[_0xb5fa('0x2d')];var _0xff504d=0xa;var _0x188e66=['join','left_join',_0xb5fa('0x56'),'cross_join'];var _0x32eebd={'SUM':_0xb5fa('0x58'),'COUNT':_0xb5fa('0x59'),'COUNT DISTINCT':_0xb5fa('0x8d'),'MAX':'MAX(%s)','MIN':_0xb5fa('0x5b'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xb5fa('0x5c'),'GROUP_CONCAT ASC':_0xb5fa('0x5d'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x5e6852={'SEC_TO_TIME':_0xb5fa('0x5f'),'DATE':_0xb5fa('0x60'),'HOUR':_0xb5fa('0x61'),'ROUND':_0xb5fa('0x62'),'UNIX_TIMESTAMP':_0xb5fa('0x63')};var _0xa7fd3b=function(_0x42e210){return!_[_0xb5fa('0x64')]([_0xb5fa('0x65'),_0xb5fa('0x66'),_0xb5fa('0x67'),_0xb5fa('0x68')],_0x42e210);};var _0x86dfe9=function(_0x53c7b5){if(!_0x53c7b5||!_0x53c7b5['rules'][_0xb5fa('0x39')]){return'';}for(var _0x52384b='(',_0x1cb113=0x0;_0x1cb113<_0x53c7b5[_0xb5fa('0x69')]['length'];_0x1cb113+=0x1){_0x1cb113>0x0&&(_0x52384b+='\x20'+_0x53c7b5[_0xb5fa('0x6a')]+'\x20');_0x52384b+=_0x53c7b5[_0xb5fa('0x69')][_0x1cb113]['group']?_0x86dfe9(_0x53c7b5[_0xb5fa('0x69')][_0x1cb113][_0xb5fa('0x6b')]):_0x53c7b5['rules'][_0x1cb113][_0xb5fa('0x6c')]+'\x20'+_0x53c7b5[_0xb5fa('0x69')][_0x1cb113][_0xb5fa('0x6d')]+(_0xa7fd3b(_0x53c7b5['rules'][_0x1cb113]['condition'])?'\x20'+_0x53c7b5[_0xb5fa('0x69')][_0x1cb113][_0xb5fa('0x6e')]:'');}return _0x52384b+')';};var _0x3b5e1d={'where':{'id':_0x593386['id']}},_0x3d18a9,_0x397830,_0x234d9d,_0x10222c,_0x1eec65;_0x3b5e1d=_[_0xb5fa('0x42')]({},_0x3b5e1d,_0x5557a3);return db[_0xb5fa('0x31')]['find'](_0x3b5e1d)['then'](function(_0x3c5563){if(_0x3c5563){_0x3d18a9=_0x3c5563;return _0x3c5563[_0xb5fa('0x6f')]();}return null;})[_0xb5fa('0x25')](function(_0x18498d){if(_0x18498d){if(!_0x18498d['length']){throw new db[(_0xb5fa('0x70'))][(_0xb5fa('0x71'))](_0xb5fa('0x72'),0x193);}_0x397830=_0x18498d;return db['AnalyticMetric'][_0xb5fa('0x45')]({'raw':!![]});}return null;})[_0xb5fa('0x25')](function(_0x109dd9){if(_0x109dd9){_0x234d9d=_[_0xb5fa('0x74')](_0x109dd9,'id');var _0x5ba2e7;var _0x1175da=squel[_0xb5fa('0x75')]();_0x1175da[_0xb5fa('0x8e')](_0x3d18a9[_0xb5fa('0x76')]);for(var _0x19717a=0x0;_0x19717a<_0x397830[_0xb5fa('0x39')];_0x19717a+=0x1){_0x5ba2e7=_0x397830[_0x19717a][_0xb5fa('0x77')]?_0x234d9d[_0x397830[_0x19717a][_0xb5fa('0x77')]][_0xb5fa('0x78')]:_0x397830[_0x19717a][_0xb5fa('0x6c')];_0x5ba2e7=_0x397830[_0x19717a][_0xb5fa('0x8f')]?_[_0xb5fa('0x79')](_0x32eebd[_0x397830[_0x19717a][_0xb5fa('0x8f')]],'%s',_0x5ba2e7):_0x5ba2e7;_0x5ba2e7=_0x397830[_0x19717a][_0xb5fa('0x7a')]?_[_0xb5fa('0x79')](_0x5e6852[_0x397830[_0x19717a]['format']],'%s',_0x5ba2e7):_0x5ba2e7;if(_0x397830[_0x19717a][_0xb5fa('0x7b')]){_0x1175da[_0xb5fa('0x6b')](_0x5ba2e7);}_0x397830[_0x19717a][_0xb5fa('0x7c')]&&_0x1175da[_0xb5fa('0x90')](_0x5ba2e7,_0x397830[_0x19717a][_0xb5fa('0x7c')]===_0xb5fa('0x7d')?![]:!![]);_0x1175da[_0xb5fa('0x6c')](_0x5ba2e7,_0x397830[_0x19717a][_0xb5fa('0x7e')]||_0x5ba2e7);}if(_0x3d18a9['joins']){_0x3d18a9['joins']=JSON[_0xb5fa('0x85')](_0x3d18a9['joins']);for(var _0x5d0ca8=0x0;_0x5d0ca8<_0x3d18a9[_0xb5fa('0x7f')][_0xb5fa('0x39')];_0x5d0ca8+=0x1){if(_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8]['type']&&_[_0xb5fa('0x64')](_0x188e66,_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8][_0xb5fa('0x33')])&&_0x3d18a9['joins'][_0x5d0ca8][_0xb5fa('0x80')]&&_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8]['foreignTable']&&_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8][_0xb5fa('0x81')]){_0x1175da[_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8][_0xb5fa('0x33')]](_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8][_0xb5fa('0x82')],null,util[_0xb5fa('0x7a')]('%s.%s\x20=\x20%s.%s',_0x3d18a9[_0xb5fa('0x76')],_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8][_0xb5fa('0x80')],_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8]['foreignTable'],_0x3d18a9['joins'][_0x5d0ca8][_0xb5fa('0x81')]));}}}if(_0x3d18a9[_0xb5fa('0x84')]){_0x3d18a9[_0xb5fa('0x84')]=JSON[_0xb5fa('0x85')](_0x3d18a9['conditions']);_0x1175da['where'](_0x86dfe9(_0x3d18a9['conditions']['group']));}_0x1eec65=_0x1175da[_0xb5fa('0x86')]();_0x1175da[_0xb5fa('0x1d')](_0xff504d);_0x1175da[_0xb5fa('0x20')](0x0);return;}})[_0xb5fa('0x25')](function(){if(_0x47d72b[_0xb5fa('0x91')]===_0xb5fa('0x92')){return null;}var _0x3c36a8=_[_0xb5fa('0x42')](_0x47d72b,{'name':_0x47d72b[_0xb5fa('0x93')]||_0x47d72b[_0xb5fa('0x2d')]||_0x3d18a9[_0xb5fa('0x2d')],'basename':_0x1c60bd,'savename':util['format'](_0xb5fa('0x94'),_0x47d72b[_0xb5fa('0x2d')]||_0x3d18a9['name'],require(_0xb5fa('0x95'))[_0xb5fa('0x96')](0x4),_0x47d72b['output']||_0xb5fa('0x97')),'reportId':_0x3d18a9['id'],'reportType':_0xb5fa('0x98')});return db[_0xb5fa('0x99')][_0xb5fa('0x4a')](_0x3c36a8,{'raw':!![]});})[_0xb5fa('0x25')](function(_0x2b449a){if(_0x3d18a9[_0xb5fa('0x76')]===_0xb5fa('0x9a')){_0x1eec65[_0xb5fa('0x3d')](_0x3d18a9['table']+_0xb5fa('0x9b'),_0x47d72b[_0xb5fa('0x9c')],_0x47d72b[_0xb5fa('0x9d')]);}else{_0x1eec65[_0xb5fa('0x3d')](_0x3d18a9[_0xb5fa('0x76')]+_0xb5fa('0x9e'),_0x47d72b[_0xb5fa('0x9c')],_0x47d72b[_0xb5fa('0x9d')]);}if(_0x2b449a){logger['info'](_0xb5fa('0x9f'),_0x1eec65['toString']());require(_0xb5fa('0xa0'))[_0xb5fa('0xa1')](path[_0xb5fa('0x54')](__dirname,_0xb5fa('0xa2'),_0x2b449a[_0xb5fa('0x91')]),[_0x2b449a['id'],_0x1eec65[_0xb5fa('0x89')](),path[_0xb5fa('0x54')](__dirname,_0xb5fa('0xa3'),_0x2b449a[_0xb5fa('0xa4')]),_0x1c60bd]);return _0x2b449a;}else{var _0x4bb9b4=squel['select']();_0x4bb9b4[_0xb5fa('0x8e')]('('+_0x1eec65[_0xb5fa('0x89')]()+')',_0xb5fa('0xa5'));_0x4bb9b4[_0xb5fa('0x6c')]('COUNT(*)',_0xb5fa('0x1f'));_0x1eec65['limit'](_0x47d72b[_0xb5fa('0x1d')]||_0xff504d);_0x1eec65[_0xb5fa('0x20')](_0x47d72b['offset']||0x0);return dbH[_0xb5fa('0x8a')]['query'](_0x4bb9b4[_0xb5fa('0x89')](),{'type':dbH['sequelize'][_0xb5fa('0x8b')][_0xb5fa('0x8c')]})[_0xb5fa('0x25')](function(_0x70e4ae){if(!_0x70e4ae[_0xb5fa('0x39')]){_0x10222c=0x0;}else{_0x10222c=_0x70e4ae[0x0][_0xb5fa('0x1f')]||0x0;}return dbH[_0xb5fa('0x8a')][_0xb5fa('0x3c')](_0x1eec65[_0xb5fa('0x89')](),{'type':dbH[_0xb5fa('0x8a')][_0xb5fa('0x8b')]['SELECT']});})[_0xb5fa('0x25')](function(_0x284b34){return{'rows':_0x284b34||[],'count':_0x10222c};});}});}exports[_0xb5fa('0xa6')]=function(_0x497931,_0x2145d8){return runReport(_0x497931[_0xb5fa('0xa7')],_0x497931[_0xb5fa('0x3c')],_0x497931[_0xb5fa('0x43')])[_0xb5fa('0x25')](respondWithResult(_0x2145d8,null))[_0xb5fa('0x47')](handleError(_0x2145d8,null));};exports[_0xb5fa('0xa8')]=runReport;exports[_0xb5fa('0x3c')]=function(_0x59fd75,_0x245ee1){var _0x5c1e1f=0xa;var _0x3ba723=[_0xb5fa('0x54'),_0xb5fa('0x55'),_0xb5fa('0x56'),_0xb5fa('0x57')];var _0x105c0f={'SUM':_0xb5fa('0x58'),'COUNT':_0xb5fa('0x59'),'COUNT DISTINCT':_0xb5fa('0x8d'),'MAX':_0xb5fa('0x5a'),'MIN':_0xb5fa('0x5b'),'AVG':_0xb5fa('0xa9'),'GROUP_CONCAT':_0xb5fa('0x5c'),'GROUP_CONCAT ASC':_0xb5fa('0x5d'),'GROUP_CONCAT DESC':_0xb5fa('0x5e')};var _0x41e086={'SEC_TO_TIME':_0xb5fa('0x5f'),'DATE':'DATE(%s)','HOUR':_0xb5fa('0x61'),'ROUND':_0xb5fa('0x62'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0xd34c31=function(_0x2e614e){return!_['includes'](['IS\x20NULL','IS\x20NOT\x20NULL',_0xb5fa('0x67'),_0xb5fa('0x68')],_0x2e614e);};var _0x1aae82=function(_0x474bb){if(!_0x474bb||!_0x474bb[_0xb5fa('0x69')][_0xb5fa('0x39')]){return'';}for(var _0x17ae50='(',_0x51c9ba=0x0;_0x51c9ba<_0x474bb['rules']['length'];_0x51c9ba+=0x1){_0x51c9ba>0x0&&(_0x17ae50+='\x20'+_0x474bb[_0xb5fa('0x6a')]+'\x20');_0x17ae50+=_0x474bb['rules'][_0x51c9ba]['group']?_0x1aae82(_0x474bb[_0xb5fa('0x69')][_0x51c9ba]['group']):_0x474bb[_0xb5fa('0x69')][_0x51c9ba][_0xb5fa('0x6c')]+'\x20'+_0x474bb[_0xb5fa('0x69')][_0x51c9ba][_0xb5fa('0x6d')]+(_0xd34c31(_0x474bb[_0xb5fa('0x69')][_0x51c9ba]['condition'])?'\x20'+_0x474bb[_0xb5fa('0x69')][_0x51c9ba][_0xb5fa('0x6e')]:'');}return _0x17ae50+')';};var _0x2fe715={'where':{'id':_0x59fd75[_0xb5fa('0xa7')]['id']}},_0x3c5ac4,_0x23b70f,_0x488818,_0x15b228,_0x42fd84;_0x2fe715=_[_0xb5fa('0x42')]({},_0x2fe715,_0x59fd75[_0xb5fa('0x43')]);return db[_0xb5fa('0x31')]['find'](_0x2fe715)[_0xb5fa('0x25')](function(_0x390043){if(_0x390043){_0x3c5ac4=_0x390043;return _0x390043[_0xb5fa('0x6f')]();}return null;})[_0xb5fa('0x25')](function(_0x32c191){if(_0x32c191){if(!_0x32c191[_0xb5fa('0x39')]){throw new db[(_0xb5fa('0x70'))][(_0xb5fa('0x71'))](_0xb5fa('0x72'),0x193);}_0x23b70f=_0x32c191;return db[_0xb5fa('0x73')][_0xb5fa('0x45')]({'raw':!![]});}return null;})[_0xb5fa('0x25')](function(_0x1d307c){if(_0x1d307c){_0x488818=_[_0xb5fa('0x74')](_0x1d307c,'id');var _0x3347eb;var _0x349e0b=squel[_0xb5fa('0x75')]();_0x349e0b[_0xb5fa('0x8e')](_0x3c5ac4[_0xb5fa('0x76')]);for(var _0x2b1c3f=0x0;_0x2b1c3f<_0x23b70f[_0xb5fa('0x39')];_0x2b1c3f+=0x1){_0x3347eb=_0x23b70f[_0x2b1c3f][_0xb5fa('0x77')]?_0x488818[_0x23b70f[_0x2b1c3f]['MetricId']]['metric']:_0x23b70f[_0x2b1c3f][_0xb5fa('0x6c')];_0x3347eb=_0x23b70f[_0x2b1c3f][_0xb5fa('0x8f')]?_[_0xb5fa('0x79')](_0x105c0f[_0x23b70f[_0x2b1c3f][_0xb5fa('0x8f')]],'%s',_0x3347eb):_0x3347eb;_0x3347eb=_0x23b70f[_0x2b1c3f][_0xb5fa('0x7a')]?_[_0xb5fa('0x79')](_0x41e086[_0x23b70f[_0x2b1c3f]['format']],'%s',_0x3347eb):_0x3347eb;if(_0x23b70f[_0x2b1c3f]['groupBy']){_0x349e0b['group'](_0x3347eb);}_0x23b70f[_0x2b1c3f][_0xb5fa('0x7c')]&&_0x349e0b[_0xb5fa('0x90')](_0x3347eb,_0x23b70f[_0x2b1c3f]['orderBy']===_0xb5fa('0x7d')?![]:!![]);_0x349e0b[_0xb5fa('0x6c')](_0x3347eb,_0x23b70f[_0x2b1c3f]['alias']||_0x3347eb);}if(_0x3c5ac4[_0xb5fa('0x7f')]){_0x3c5ac4[_0xb5fa('0x7f')]=JSON[_0xb5fa('0x85')](_0x3c5ac4[_0xb5fa('0x7f')]);for(var _0x10dbdf=0x0;_0x10dbdf<_0x3c5ac4[_0xb5fa('0x7f')][_0xb5fa('0x39')];_0x10dbdf+=0x1){if(_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf]['type']&&_[_0xb5fa('0x64')](_0x3ba723,_0x3c5ac4['joins'][_0x10dbdf][_0xb5fa('0x33')])&&_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf][_0xb5fa('0x80')]&&_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf]['foreignTable']&&_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf][_0xb5fa('0x81')]){_0x349e0b[_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf][_0xb5fa('0x33')]](_0x3c5ac4['joins'][_0x10dbdf][_0xb5fa('0x82')],null,util[_0xb5fa('0x7a')](_0xb5fa('0x83'),_0x3c5ac4[_0xb5fa('0x76')],_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf][_0xb5fa('0x80')],_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf]['foreignTable'],_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf]['foreignKey']));}}}if(_0x3c5ac4[_0xb5fa('0x84')]){_0x3c5ac4[_0xb5fa('0x84')]=JSON[_0xb5fa('0x85')](_0x3c5ac4[_0xb5fa('0x84')]);_0x349e0b[_0xb5fa('0x3d')](_0x1aae82(_0x3c5ac4[_0xb5fa('0x84')][_0xb5fa('0x6b')]));}_0x42fd84=_0x349e0b['clone']();_0x349e0b['limit'](_0x5c1e1f);_0x349e0b[_0xb5fa('0x20')](0x0);logger[_0xb5fa('0x87')](_0xb5fa('0x88'),_0x349e0b[_0xb5fa('0x89')]());return dbH[_0xb5fa('0x8a')][_0xb5fa('0x3c')](_0x349e0b[_0xb5fa('0x89')](),{'type':dbH[_0xb5fa('0x8a')]['QueryTypes'][_0xb5fa('0x8c')]});}})[_0xb5fa('0x25')](function(){return{'sql':_0x42fd84[_0xb5fa('0x89')]()};})[_0xb5fa('0x25')](respondWithResult(_0x245ee1,null))[_0xb5fa('0x47')](handleError(_0x245ee1,null));};
\ No newline at end of file
+var _0xc4aa=['Content-Range','apply','reject','save','update','then','destroy','get','DefaultReports','UserProfileResource','name','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','AnalyticDefaultReport','findAll','rows','catch','show','length','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','IS\x20NULL','IS\x20EMPTY','rules','operator','group','field','condition','getFields','Sequelize','AnalyticMetric','keyBy','select','from','table','MetricId','metric','function','replace','format','orderBy','joins','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','parse','clone','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','COUNT(%s)','MAX(%s)','AVG(%s)','SEC_TO_TIME(%s)','IS\x20NOT\x20EMPTY','value','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','groupBy','alias','includes','foreignKey','output','web','fullPath','%s-%s.%s','randomstring','default','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','startDate','info','Run\x20Query:','child_process','fork','countTable','runReport','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','IS\x20NOT\x20NULL','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set'];(function(_0x50f392,_0x1d8441){var _0x5926f2=function(_0x17df32){while(--_0x17df32){_0x50f392['push'](_0x50f392['shift']());}};_0x5926f2(++_0x1d8441);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0xc4aa[_0x3b0731];return _0x4204d7;};'use strict';var emlformat=require(_0xac4a('0x0'));var rimraf=require(_0xac4a('0x1'));var zipdir=require(_0xac4a('0x2'));var jsonpatch=require(_0xac4a('0x3'));var rp=require(_0xac4a('0x4'));var moment=require(_0xac4a('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xac4a('0x6'));var sox=require(_0xac4a('0x7'));var csv=require(_0xac4a('0x8'));var ejs=require(_0xac4a('0x9'));var fs=require('fs');var fs_extra=require(_0xac4a('0xa'));var _=require(_0xac4a('0xb'));var squel=require(_0xac4a('0xc'));var crypto=require(_0xac4a('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xac4a('0x8'));var querystring=require(_0xac4a('0xe'));var Papa=require(_0xac4a('0xf'));var Redis=require('ioredis');var authService=require(_0xac4a('0x10'));var qs=require(_0xac4a('0x11'));var as=require(_0xac4a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xac4a('0x13'))('api');var utils=require(_0xac4a('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xac4a('0x15'));var db=require(_0xac4a('0x16'))['db'];var dbH=require(_0xac4a('0x16'))['dbH'];function respondWithStatusCode(_0x21a79,_0x68424a){_0x68424a=_0x68424a||0xcc;return function(_0x247b78){if(_0x247b78){return _0x21a79[_0xac4a('0x17')](_0x68424a);}return _0x21a79[_0xac4a('0x18')](_0x68424a)[_0xac4a('0x19')]();};}function respondWithResult(_0x34bc01,_0x33c287){_0x33c287=_0x33c287||0xc8;return function(_0x190418){if(_0x190418){return _0x34bc01[_0xac4a('0x18')](_0x33c287)[_0xac4a('0x1a')](_0x190418);}};}function respondWithFilteredResult(_0x26dbb8,_0x4a2119){return function(_0x402fff){if(_0x402fff){var _0x34d797=typeof _0x4a2119[_0xac4a('0x1b')]===_0xac4a('0x1c')&&typeof _0x4a2119[_0xac4a('0x1d')]===_0xac4a('0x1c');var _0x28e304=_0x402fff[_0xac4a('0x1e')];var _0x546c5d=_0x34d797?0x0:_0x4a2119['offset'];var _0x21a729=_0x34d797?_0x402fff[_0xac4a('0x1e')]:_0x4a2119[_0xac4a('0x1b')]+_0x4a2119['limit'];var _0x39e83e;if(_0x21a729>=_0x28e304){_0x21a729=_0x28e304;_0x39e83e=0xc8;}else{_0x39e83e=0xce;}_0x26dbb8[_0xac4a('0x18')](_0x39e83e);return _0x26dbb8[_0xac4a('0x1f')](_0xac4a('0x20'),_0x546c5d+'-'+_0x21a729+'/'+_0x28e304)[_0xac4a('0x1a')](_0x402fff);}return null;};}function patchUpdates(_0x3e829c){return function(_0xe38996){try{jsonpatch[_0xac4a('0x21')](_0xe38996,_0x3e829c,!![]);}catch(_0x534092){return BPromise[_0xac4a('0x22')](_0x534092);}return _0xe38996[_0xac4a('0x23')]();};}function saveUpdates(_0x599787,_0x3d7ce0){return function(_0x4169c0){if(_0x4169c0){return _0x4169c0[_0xac4a('0x24')](_0x599787)[_0xac4a('0x25')](function(_0x4d2d6c){return _0x4d2d6c;});}return null;};}function removeEntity(_0x1b7998,_0x2503d8){return function(_0x15435c){if(_0x15435c){return _0x15435c[_0xac4a('0x26')]()[_0xac4a('0x25')](function(){var _0x2b0dc2=_0x15435c[_0xac4a('0x27')]({'plain':!![]});var _0x36054a=_0xac4a('0x28');return db[_0xac4a('0x29')][_0xac4a('0x26')]({'where':{'type':_0x36054a,'resourceId':_0x2b0dc2['id']}})[_0xac4a('0x25')](function(){return _0x15435c;});})[_0xac4a('0x25')](function(){_0x1b7998[_0xac4a('0x18')](0xcc)[_0xac4a('0x19')]();});}};}function handleEntityNotFound(_0x20202c,_0x4e17ce){return function(_0x23b061){if(!_0x23b061){_0x20202c[_0xac4a('0x17')](0x194);}return _0x23b061;};}function handleError(_0x42a33c,_0x2772fe){_0x2772fe=_0x2772fe||0x1f4;return function(_0x116700){logger['error'](_0x116700['stack']);if(_0x116700[_0xac4a('0x2a')]){delete _0x116700[_0xac4a('0x2a')];}_0x42a33c[_0xac4a('0x18')](_0x2772fe)['send'](_0x116700);};}exports['index']=function(_0x355755,_0x2896bc){var _0x228629={},_0x432066={},_0x17118e={'count':0x0,'rows':[]};var _0x53d3a5=_[_0xac4a('0x2b')](db['AnalyticDefaultReport'][_0xac4a('0x2c')],function(_0x57adcf){return{'name':_0x57adcf[_0xac4a('0x2d')],'type':_0x57adcf[_0xac4a('0x2e')][_0xac4a('0x2f')]};});_0x432066[_0xac4a('0x30')]=_[_0xac4a('0x2b')](_0x53d3a5,_0xac4a('0x2a'));_0x432066[_0xac4a('0x31')]=_[_0xac4a('0x32')](_0x355755[_0xac4a('0x31')]);_0x432066[_0xac4a('0x33')]=_[_0xac4a('0x34')](_0x432066[_0xac4a('0x30')],_0x432066[_0xac4a('0x31')]);_0x228629[_0xac4a('0x35')]=_['intersection'](_0x432066[_0xac4a('0x30')],qs[_0xac4a('0x36')](_0x355755['query'][_0xac4a('0x36')]));_0x228629[_0xac4a('0x35')]=_0x228629['attributes']['length']?_0x228629[_0xac4a('0x35')]:_0x432066[_0xac4a('0x30')];if(!_0x355755[_0xac4a('0x31')][_0xac4a('0x37')]('nolimit')){_0x228629[_0xac4a('0x1d')]=qs[_0xac4a('0x1d')](_0x355755['query'][_0xac4a('0x1d')]);_0x228629[_0xac4a('0x1b')]=qs[_0xac4a('0x1b')](_0x355755['query'][_0xac4a('0x1b')]);}_0x228629[_0xac4a('0x38')]=qs[_0xac4a('0x39')](_0x355755['query'][_0xac4a('0x39')]);_0x228629[_0xac4a('0x3a')]=qs['filters'](_['pick'](_0x355755[_0xac4a('0x31')],_0x432066['filters']),_0x53d3a5);if(_0x355755['query']['filter']){_0x228629['where']=_[_0xac4a('0x3b')](_0x228629[_0xac4a('0x3a')],{'$or':_[_0xac4a('0x2b')](_0x53d3a5,function(_0x472484){if(_0x472484[_0xac4a('0x2e')]!==_0xac4a('0x3c')){var _0x4220e2={};_0x4220e2[_0x472484[_0xac4a('0x2a')]]={'$like':'%'+_0x355755[_0xac4a('0x31')][_0xac4a('0x3d')]+'%'};return _0x4220e2;}})});}_0x228629=_[_0xac4a('0x3b')]({},_0x228629,_0x355755[_0xac4a('0x3e')]);var _0x4e4994={'where':_0x228629['where']};return db['AnalyticDefaultReport'][_0xac4a('0x1e')](_0x4e4994)[_0xac4a('0x25')](function(_0x14e80b){_0x17118e[_0xac4a('0x1e')]=_0x14e80b;if(_0x355755[_0xac4a('0x31')][_0xac4a('0x3f')]){_0x228629[_0xac4a('0x40')]=[{'all':!![]}];}return db[_0xac4a('0x41')][_0xac4a('0x42')](_0x228629);})[_0xac4a('0x25')](function(_0x561cb7){_0x17118e[_0xac4a('0x43')]=_0x561cb7;return _0x17118e;})[_0xac4a('0x25')](respondWithFilteredResult(_0x2896bc,_0x228629))[_0xac4a('0x44')](handleError(_0x2896bc,null));};exports[_0xac4a('0x45')]=function(_0x1a96cf,_0x57b879){var _0x8700b4={'raw':!![],'where':{'id':_0x1a96cf['params']['id']}},_0x1b77bb={};_0x1b77bb[_0xac4a('0x30')]=_['keys'](db[_0xac4a('0x41')][_0xac4a('0x2c')]);_0x1b77bb[_0xac4a('0x31')]=_[_0xac4a('0x32')](_0x1a96cf[_0xac4a('0x31')]);_0x1b77bb[_0xac4a('0x33')]=_[_0xac4a('0x34')](_0x1b77bb[_0xac4a('0x30')],_0x1b77bb[_0xac4a('0x31')]);_0x8700b4[_0xac4a('0x35')]=_[_0xac4a('0x34')](_0x1b77bb[_0xac4a('0x30')],qs['fields'](_0x1a96cf[_0xac4a('0x31')][_0xac4a('0x36')]));_0x8700b4[_0xac4a('0x35')]=_0x8700b4['attributes'][_0xac4a('0x46')]?_0x8700b4[_0xac4a('0x35')]:_0x1b77bb['model'];if(_0x1a96cf[_0xac4a('0x31')]['includeAll']){_0x8700b4[_0xac4a('0x40')]=[{'all':!![]}];}_0x8700b4=_[_0xac4a('0x3b')]({},_0x8700b4,_0x1a96cf[_0xac4a('0x3e')]);return db['AnalyticDefaultReport']['find'](_0x8700b4)[_0xac4a('0x25')](handleEntityNotFound(_0x57b879,null))['then'](respondWithResult(_0x57b879,null))[_0xac4a('0x44')](handleError(_0x57b879,null));};exports['create']=function(_0x3d2aaf,_0x530bbb){return db[_0xac4a('0x41')][_0xac4a('0x47')](_0x3d2aaf[_0xac4a('0x48')],{})[_0xac4a('0x25')](function(_0x54782f){var _0x31c794=_0x3d2aaf[_0xac4a('0x49')][_0xac4a('0x27')]({'plain':!![]});if(!_0x31c794)throw new Error(_0xac4a('0x4a'));if(_0x31c794[_0xac4a('0x4b')]===_0xac4a('0x49')){var _0x187306=_0x54782f['get']({'plain':!![]});var _0x35dee5=_0xac4a('0x4c');return db['UserProfileSection'][_0xac4a('0x4d')]({'where':{'name':_0x35dee5,'userProfileId':_0x31c794[_0xac4a('0x4e')]},'raw':!![]})[_0xac4a('0x25')](function(_0x3ac36e){if(_0x3ac36e&&_0x3ac36e['autoAssociation']===0x0){return db[_0xac4a('0x29')][_0xac4a('0x47')]({'name':_0x187306[_0xac4a('0x2a')],'resourceId':_0x187306['id'],'type':_0xac4a('0x28'),'sectionId':_0x3ac36e['id']},{})[_0xac4a('0x25')](function(){return _0x54782f;});}else{return _0x54782f;}})['catch'](function(_0x179373){logger['error'](_0xac4a('0x4f'),_0x179373);throw _0x179373;});}return _0x54782f;})[_0xac4a('0x25')](respondWithResult(_0x530bbb,0xc9))['catch'](handleError(_0x530bbb,null));};exports['update']=function(_0x437466,_0x70fdc3){if(_0x437466['body']['id']){delete _0x437466[_0xac4a('0x48')]['id'];}return db[_0xac4a('0x41')][_0xac4a('0x4d')]({'where':{'id':_0x437466[_0xac4a('0x50')]['id']}})['then'](handleEntityNotFound(_0x70fdc3,null))[_0xac4a('0x25')](saveUpdates(_0x437466[_0xac4a('0x48')],null))[_0xac4a('0x25')](respondWithResult(_0x70fdc3,null))[_0xac4a('0x44')](handleError(_0x70fdc3,null));};exports[_0xac4a('0x26')]=function(_0x411547,_0x36179a){return db['AnalyticDefaultReport'][_0xac4a('0x4d')]({'where':{'id':_0x411547[_0xac4a('0x50')]['id']}})[_0xac4a('0x25')](handleEntityNotFound(_0x36179a,null))[_0xac4a('0x25')](removeEntity(_0x36179a,null))[_0xac4a('0x44')](handleError(_0x36179a,null));};exports[_0xac4a('0x51')]=function(_0x213df2,_0x236f57){var _0x159e43=0xa;var _0x786d9=[_0xac4a('0x52'),_0xac4a('0x53'),_0xac4a('0x54'),_0xac4a('0x55')];var _0x5222f3={'SUM':_0xac4a('0x56'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xac4a('0x57'),'MAX':'MAX(%s)','MIN':_0xac4a('0x58'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xac4a('0x59'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xac4a('0x5a')};var _0x5cac9b={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xac4a('0x5b'),'HOUR':_0xac4a('0x5c'),'ROUND':_0xac4a('0x5d'),'UNIX_TIMESTAMP':_0xac4a('0x5e')};var _0x2f9940=function(_0xb7b884){return!_['includes']([_0xac4a('0x5f'),'IS\x20NOT\x20NULL',_0xac4a('0x60'),'IS\x20NOT\x20EMPTY'],_0xb7b884);};var _0x347880=function(_0x19ce2c){if(!_0x19ce2c||!_0x19ce2c[_0xac4a('0x61')][_0xac4a('0x46')]){return'';}for(var _0x429273='(',_0x2bc39a=0x0;_0x2bc39a<_0x19ce2c[_0xac4a('0x61')][_0xac4a('0x46')];_0x2bc39a+=0x1){_0x2bc39a>0x0&&(_0x429273+='\x20'+_0x19ce2c[_0xac4a('0x62')]+'\x20');_0x429273+=_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x63')]?_0x347880(_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x63')]):_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x64')]+'\x20'+_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x65')]+(_0x2f9940(_0x19ce2c['rules'][_0x2bc39a][_0xac4a('0x65')])?'\x20'+_0x19ce2c[_0xac4a('0x61')][_0x2bc39a]['value']:'');}return _0x429273+')';};var _0x3c3576={'where':{'id':_0x213df2['params']['id']}},_0x34bd1c,_0x2d24c7,_0x2b8562,_0x357cac,_0x4d1440;_0x3c3576=_[_0xac4a('0x3b')]({},_0x3c3576,_0x213df2[_0xac4a('0x3e')]);return db[_0xac4a('0x41')][_0xac4a('0x4d')](_0x3c3576)[_0xac4a('0x25')](function(_0x21ef8b){if(_0x21ef8b){_0x34bd1c=_0x21ef8b;return _0x21ef8b[_0xac4a('0x66')]();}return null;})[_0xac4a('0x25')](function(_0x44c60b){if(_0x44c60b){if(!_0x44c60b[_0xac4a('0x46')]){throw new db[(_0xac4a('0x67'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x2d24c7=_0x44c60b;return db[_0xac4a('0x68')][_0xac4a('0x42')]({'raw':!![]});}return null;})[_0xac4a('0x25')](function(_0x423f70){if(_0x423f70){_0x2b8562=_[_0xac4a('0x69')](_0x423f70,'id');var _0x283107;var _0x1d24bb=squel[_0xac4a('0x6a')]();_0x1d24bb[_0xac4a('0x6b')](_0x34bd1c[_0xac4a('0x6c')]);for(var _0xb09b89=0x0;_0xb09b89<_0x2d24c7[_0xac4a('0x46')];_0xb09b89+=0x1){_0x283107=_0x2d24c7[_0xb09b89]['MetricId']?_0x2b8562[_0x2d24c7[_0xb09b89][_0xac4a('0x6d')]][_0xac4a('0x6e')]:_0x2d24c7[_0xb09b89][_0xac4a('0x64')];_0x283107=_0x2d24c7[_0xb09b89][_0xac4a('0x6f')]?_['replace'](_0x5222f3[_0x2d24c7[_0xb09b89][_0xac4a('0x6f')]],'%s',_0x283107):_0x283107;_0x283107=_0x2d24c7[_0xb09b89]['format']?_[_0xac4a('0x70')](_0x5cac9b[_0x2d24c7[_0xb09b89][_0xac4a('0x71')]],'%s',_0x283107):_0x283107;if(_0x2d24c7[_0xb09b89]['groupBy']){_0x1d24bb['group'](_0x283107);}_0x2d24c7[_0xb09b89][_0xac4a('0x72')]&&_0x1d24bb[_0xac4a('0x38')](_0x283107,_0x2d24c7[_0xb09b89][_0xac4a('0x72')]==='DESC'?![]:!![]);_0x1d24bb[_0xac4a('0x64')](_0x283107,_0x2d24c7[_0xb09b89]['alias']||_0x283107);}if(_0x34bd1c[_0xac4a('0x73')]){_0x34bd1c['joins']=JSON['parse'](_0x34bd1c[_0xac4a('0x73')]);for(var _0x56ef2a=0x0;_0x56ef2a<_0x34bd1c[_0xac4a('0x73')]['length'];_0x56ef2a+=0x1){if(_0x34bd1c[_0xac4a('0x73')][_0x56ef2a][_0xac4a('0x2e')]&&_['includes'](_0x786d9,_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['type'])&&_0x34bd1c[_0xac4a('0x73')][_0x56ef2a][_0xac4a('0x74')]&&_0x34bd1c['joins'][_0x56ef2a][_0xac4a('0x75')]&&_0x34bd1c['joins'][_0x56ef2a]['foreignKey']){_0x1d24bb[_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['type']](_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['foreignTable'],null,util['format'](_0xac4a('0x76'),_0x34bd1c[_0xac4a('0x6c')],_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['parentKey'],_0x34bd1c['joins'][_0x56ef2a][_0xac4a('0x75')],_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['foreignKey']));}}}if(_0x34bd1c['conditions']){_0x34bd1c[_0xac4a('0x77')]=JSON[_0xac4a('0x78')](_0x34bd1c[_0xac4a('0x77')]);_0x1d24bb[_0xac4a('0x3a')](_0x347880(_0x34bd1c[_0xac4a('0x77')][_0xac4a('0x63')]));}_0x4d1440=_0x1d24bb[_0xac4a('0x79')]();_0x1d24bb[_0xac4a('0x1d')](_0x159e43);_0x1d24bb[_0xac4a('0x1b')](0x0);logger['debug'](_0xac4a('0x7a'),_0x1d24bb[_0xac4a('0x7b')]());return dbH[_0xac4a('0x7c')]['query'](_0x1d24bb[_0xac4a('0x7b')](),{'type':dbH[_0xac4a('0x7c')][_0xac4a('0x7d')][_0xac4a('0x7e')]});}})[_0xac4a('0x25')](respondWithResult(_0x236f57,null))['catch'](handleError(_0x236f57,null));};function runReport(_0x290a73,_0x19ce24,_0xc9d040){var _0x37e519=_0x19ce24[_0xac4a('0x2a')];var _0x451248=0xa;var _0xd7bdd6=['join',_0xac4a('0x53'),_0xac4a('0x54'),_0xac4a('0x55')];var _0x35a97c={'SUM':_0xac4a('0x56'),'COUNT':_0xac4a('0x7f'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xac4a('0x80'),'MIN':_0xac4a('0x58'),'AVG':_0xac4a('0x81'),'GROUP_CONCAT':_0xac4a('0x59'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xac4a('0x5a')};var _0x56a934={'SEC_TO_TIME':_0xac4a('0x82'),'DATE':_0xac4a('0x5b'),'HOUR':'HOUR(%s)','ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0xac4a('0x5e')};var _0x212a22=function(_0x1fe86a){return!_['includes']([_0xac4a('0x5f'),'IS\x20NOT\x20NULL',_0xac4a('0x60'),_0xac4a('0x83')],_0x1fe86a);};var _0x406b64=function(_0x35328e){if(!_0x35328e||!_0x35328e[_0xac4a('0x61')]['length']){return'';}for(var _0x50f471='(',_0x31cda0=0x0;_0x31cda0<_0x35328e[_0xac4a('0x61')][_0xac4a('0x46')];_0x31cda0+=0x1){_0x31cda0>0x0&&(_0x50f471+='\x20'+_0x35328e[_0xac4a('0x62')]+'\x20');_0x50f471+=_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x63')]?_0x406b64(_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x63')]):_0x35328e['rules'][_0x31cda0]['field']+'\x20'+_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x65')]+(_0x212a22(_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x65')])?'\x20'+_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x84')]:'');}return _0x50f471+')';};var _0xdaa2ef={'where':{'id':_0x290a73['id']}},_0x2e704b,_0x540d8e,_0x5e0be4,_0x32fd0c,_0x168f30;_0xdaa2ef=_[_0xac4a('0x3b')]({},_0xdaa2ef,_0xc9d040);return db[_0xac4a('0x41')][_0xac4a('0x4d')](_0xdaa2ef)[_0xac4a('0x25')](function(_0x338af3){if(_0x338af3){_0x2e704b=_0x338af3;return _0x338af3['getFields']();}return null;})[_0xac4a('0x25')](function(_0x1bacf2){if(_0x1bacf2){if(!_0x1bacf2[_0xac4a('0x46')]){throw new db['Sequelize'][(_0xac4a('0x85'))](_0xac4a('0x86'),0x193);}_0x540d8e=_0x1bacf2;return db[_0xac4a('0x68')][_0xac4a('0x42')]({'raw':!![]});}return null;})[_0xac4a('0x25')](function(_0x27d023){if(_0x27d023){_0x5e0be4=_[_0xac4a('0x69')](_0x27d023,'id');var _0x2ef42a;var _0x322465=squel['select']();_0x322465[_0xac4a('0x6b')](_0x2e704b['table']);for(var _0x203321=0x0;_0x203321<_0x540d8e[_0xac4a('0x46')];_0x203321+=0x1){_0x2ef42a=_0x540d8e[_0x203321][_0xac4a('0x6d')]?_0x5e0be4[_0x540d8e[_0x203321][_0xac4a('0x6d')]][_0xac4a('0x6e')]:_0x540d8e[_0x203321][_0xac4a('0x64')];_0x2ef42a=_0x540d8e[_0x203321][_0xac4a('0x6f')]?_['replace'](_0x35a97c[_0x540d8e[_0x203321][_0xac4a('0x6f')]],'%s',_0x2ef42a):_0x2ef42a;_0x2ef42a=_0x540d8e[_0x203321][_0xac4a('0x71')]?_[_0xac4a('0x70')](_0x56a934[_0x540d8e[_0x203321][_0xac4a('0x71')]],'%s',_0x2ef42a):_0x2ef42a;if(_0x540d8e[_0x203321][_0xac4a('0x87')]){_0x322465['group'](_0x2ef42a);}_0x540d8e[_0x203321][_0xac4a('0x72')]&&_0x322465[_0xac4a('0x38')](_0x2ef42a,_0x540d8e[_0x203321]['orderBy']==='DESC'?![]:!![]);_0x322465[_0xac4a('0x64')](_0x2ef42a,_0x540d8e[_0x203321][_0xac4a('0x88')]||_0x2ef42a);}if(_0x2e704b['joins']){_0x2e704b[_0xac4a('0x73')]=JSON[_0xac4a('0x78')](_0x2e704b[_0xac4a('0x73')]);for(var _0x37657e=0x0;_0x37657e<_0x2e704b[_0xac4a('0x73')][_0xac4a('0x46')];_0x37657e+=0x1){if(_0x2e704b['joins'][_0x37657e][_0xac4a('0x2e')]&&_[_0xac4a('0x89')](_0xd7bdd6,_0x2e704b[_0xac4a('0x73')][_0x37657e]['type'])&&_0x2e704b[_0xac4a('0x73')][_0x37657e][_0xac4a('0x74')]&&_0x2e704b[_0xac4a('0x73')][_0x37657e][_0xac4a('0x75')]&&_0x2e704b[_0xac4a('0x73')][_0x37657e][_0xac4a('0x8a')]){_0x322465[_0x2e704b['joins'][_0x37657e][_0xac4a('0x2e')]](_0x2e704b[_0xac4a('0x73')][_0x37657e]['foreignTable'],null,util[_0xac4a('0x71')]('%s.%s\x20=\x20%s.%s',_0x2e704b[_0xac4a('0x6c')],_0x2e704b[_0xac4a('0x73')][_0x37657e]['parentKey'],_0x2e704b[_0xac4a('0x73')][_0x37657e]['foreignTable'],_0x2e704b[_0xac4a('0x73')][_0x37657e]['foreignKey']));}}}if(_0x2e704b[_0xac4a('0x77')]){_0x2e704b[_0xac4a('0x77')]=JSON[_0xac4a('0x78')](_0x2e704b[_0xac4a('0x77')]);_0x322465[_0xac4a('0x3a')](_0x406b64(_0x2e704b[_0xac4a('0x77')][_0xac4a('0x63')]));}_0x168f30=_0x322465[_0xac4a('0x79')]();_0x322465[_0xac4a('0x1d')](_0x451248);_0x322465[_0xac4a('0x1b')](0x0);return;}})[_0xac4a('0x25')](function(){if(_0x19ce24[_0xac4a('0x8b')]===_0xac4a('0x8c')){return null;}var _0x4217df=_['merge'](_0x19ce24,{'name':_0x19ce24[_0xac4a('0x8d')]||_0x19ce24[_0xac4a('0x2a')]||_0x2e704b['name'],'basename':_0x37e519,'savename':util[_0xac4a('0x71')](_0xac4a('0x8e'),_0x19ce24[_0xac4a('0x2a')]||_0x2e704b[_0xac4a('0x2a')],require(_0xac4a('0x8f'))['generate'](0x4),_0x19ce24[_0xac4a('0x8b')]||'csv'),'reportId':_0x2e704b['id'],'reportType':_0xac4a('0x90')});return db[_0xac4a('0x91')][_0xac4a('0x47')](_0x4217df,{'raw':!![]});})[_0xac4a('0x25')](function(_0x53f23d){if(_0x2e704b[_0xac4a('0x6c')]==='cdr'){_0x168f30[_0xac4a('0x3a')](_0x2e704b[_0xac4a('0x6c')]+_0xac4a('0x92'),_0x19ce24['startDate'],_0x19ce24[_0xac4a('0x93')]);}else{_0x168f30[_0xac4a('0x3a')](_0x2e704b[_0xac4a('0x6c')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x19ce24[_0xac4a('0x94')],_0x19ce24[_0xac4a('0x93')]);}if(_0x53f23d){logger[_0xac4a('0x95')](_0xac4a('0x96'),_0x168f30[_0xac4a('0x7b')]());require(_0xac4a('0x97'))[_0xac4a('0x98')](path[_0xac4a('0x52')](__dirname,'../../components/export/',_0x53f23d[_0xac4a('0x8b')]),[_0x53f23d['id'],_0x168f30['toString'](),path['join'](__dirname,'../../files/reports',_0x53f23d['savename']),_0x37e519]);return _0x53f23d;}else{var _0x502275=squel[_0xac4a('0x6a')]();_0x502275[_0xac4a('0x6b')]('('+_0x168f30[_0xac4a('0x7b')]()+')',_0xac4a('0x99'));_0x502275[_0xac4a('0x64')]('COUNT(*)',_0xac4a('0x1e'));_0x168f30[_0xac4a('0x1d')](_0x19ce24[_0xac4a('0x1d')]||_0x451248);_0x168f30[_0xac4a('0x1b')](_0x19ce24[_0xac4a('0x1b')]||0x0);return dbH[_0xac4a('0x7c')][_0xac4a('0x31')](_0x502275[_0xac4a('0x7b')](),{'type':dbH['sequelize'][_0xac4a('0x7d')][_0xac4a('0x7e')]})[_0xac4a('0x25')](function(_0x25331f){if(!_0x25331f[_0xac4a('0x46')]){_0x32fd0c=0x0;}else{_0x32fd0c=_0x25331f[0x0][_0xac4a('0x1e')]||0x0;}return dbH[_0xac4a('0x7c')]['query'](_0x168f30['toString'](),{'type':dbH[_0xac4a('0x7c')][_0xac4a('0x7d')]['SELECT']});})[_0xac4a('0x25')](function(_0x366f5a){return{'rows':_0x366f5a||[],'count':_0x32fd0c};});}});}exports['run']=function(_0x5bd013,_0x2fe103){return runReport(_0x5bd013[_0xac4a('0x50')],_0x5bd013[_0xac4a('0x31')],_0x5bd013[_0xac4a('0x3e')])[_0xac4a('0x25')](respondWithResult(_0x2fe103,null))['catch'](handleError(_0x2fe103,null));};exports[_0xac4a('0x9a')]=runReport;exports['query']=function(_0x4f2d85,_0x538cfd){var _0x63c30=0xa;var _0x4301c3=[_0xac4a('0x52'),_0xac4a('0x53'),_0xac4a('0x54'),_0xac4a('0x55')];var _0xcad25d={'SUM':_0xac4a('0x56'),'COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0xac4a('0x58'),'AVG':_0xac4a('0x81'),'GROUP_CONCAT':_0xac4a('0x59'),'GROUP_CONCAT ASC':_0xac4a('0x9b'),'GROUP_CONCAT DESC':_0xac4a('0x5a')};var _0xcd140e={'SEC_TO_TIME':_0xac4a('0x82'),'DATE':_0xac4a('0x5b'),'HOUR':_0xac4a('0x5c'),'ROUND':_0xac4a('0x5d'),'UNIX_TIMESTAMP':_0xac4a('0x5e')};var _0x37cb49=function(_0xe0fd57){return!_[_0xac4a('0x89')]([_0xac4a('0x5f'),_0xac4a('0x9c'),_0xac4a('0x60'),_0xac4a('0x83')],_0xe0fd57);};var _0x41cdb5=function(_0x172d03){if(!_0x172d03||!_0x172d03[_0xac4a('0x61')][_0xac4a('0x46')]){return'';}for(var _0x3e2575='(',_0x4cc581=0x0;_0x4cc581<_0x172d03[_0xac4a('0x61')][_0xac4a('0x46')];_0x4cc581+=0x1){_0x4cc581>0x0&&(_0x3e2575+='\x20'+_0x172d03[_0xac4a('0x62')]+'\x20');_0x3e2575+=_0x172d03[_0xac4a('0x61')][_0x4cc581][_0xac4a('0x63')]?_0x41cdb5(_0x172d03[_0xac4a('0x61')][_0x4cc581][_0xac4a('0x63')]):_0x172d03[_0xac4a('0x61')][_0x4cc581]['field']+'\x20'+_0x172d03['rules'][_0x4cc581][_0xac4a('0x65')]+(_0x37cb49(_0x172d03[_0xac4a('0x61')][_0x4cc581][_0xac4a('0x65')])?'\x20'+_0x172d03['rules'][_0x4cc581]['value']:'');}return _0x3e2575+')';};var _0x5de198={'where':{'id':_0x4f2d85[_0xac4a('0x50')]['id']}},_0x2b6773,_0x52df82,_0x59e82c,_0x216055,_0x52963c;_0x5de198=_['merge']({},_0x5de198,_0x4f2d85[_0xac4a('0x3e')]);return db[_0xac4a('0x41')][_0xac4a('0x4d')](_0x5de198)[_0xac4a('0x25')](function(_0x403a16){if(_0x403a16){_0x2b6773=_0x403a16;return _0x403a16[_0xac4a('0x66')]();}return null;})['then'](function(_0x25bf23){if(_0x25bf23){if(!_0x25bf23[_0xac4a('0x46')]){throw new db[(_0xac4a('0x67'))]['ValidationErrorItem'](_0xac4a('0x86'),0x193);}_0x52df82=_0x25bf23;return db[_0xac4a('0x68')][_0xac4a('0x42')]({'raw':!![]});}return null;})[_0xac4a('0x25')](function(_0x5bb911){if(_0x5bb911){_0x59e82c=_[_0xac4a('0x69')](_0x5bb911,'id');var _0x403f5a;var _0x3eae2f=squel[_0xac4a('0x6a')]();_0x3eae2f[_0xac4a('0x6b')](_0x2b6773[_0xac4a('0x6c')]);for(var _0x4a0cd9=0x0;_0x4a0cd9<_0x52df82['length'];_0x4a0cd9+=0x1){_0x403f5a=_0x52df82[_0x4a0cd9][_0xac4a('0x6d')]?_0x59e82c[_0x52df82[_0x4a0cd9][_0xac4a('0x6d')]][_0xac4a('0x6e')]:_0x52df82[_0x4a0cd9][_0xac4a('0x64')];_0x403f5a=_0x52df82[_0x4a0cd9][_0xac4a('0x6f')]?_[_0xac4a('0x70')](_0xcad25d[_0x52df82[_0x4a0cd9]['function']],'%s',_0x403f5a):_0x403f5a;_0x403f5a=_0x52df82[_0x4a0cd9][_0xac4a('0x71')]?_['replace'](_0xcd140e[_0x52df82[_0x4a0cd9][_0xac4a('0x71')]],'%s',_0x403f5a):_0x403f5a;if(_0x52df82[_0x4a0cd9]['groupBy']){_0x3eae2f[_0xac4a('0x63')](_0x403f5a);}_0x52df82[_0x4a0cd9][_0xac4a('0x72')]&&_0x3eae2f[_0xac4a('0x38')](_0x403f5a,_0x52df82[_0x4a0cd9][_0xac4a('0x72')]==='DESC'?![]:!![]);_0x3eae2f[_0xac4a('0x64')](_0x403f5a,_0x52df82[_0x4a0cd9][_0xac4a('0x88')]||_0x403f5a);}if(_0x2b6773[_0xac4a('0x73')]){_0x2b6773[_0xac4a('0x73')]=JSON[_0xac4a('0x78')](_0x2b6773['joins']);for(var _0x3dd60a=0x0;_0x3dd60a<_0x2b6773[_0xac4a('0x73')][_0xac4a('0x46')];_0x3dd60a+=0x1){if(_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x2e')]&&_['includes'](_0x4301c3,_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x2e')])&&_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x74')]&&_0x2b6773[_0xac4a('0x73')][_0x3dd60a]['foreignTable']&&_0x2b6773['joins'][_0x3dd60a]['foreignKey']){_0x3eae2f[_0x2b6773['joins'][_0x3dd60a][_0xac4a('0x2e')]](_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x75')],null,util[_0xac4a('0x71')](_0xac4a('0x76'),_0x2b6773['table'],_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x74')],_0x2b6773['joins'][_0x3dd60a][_0xac4a('0x75')],_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x8a')]));}}}if(_0x2b6773['conditions']){_0x2b6773[_0xac4a('0x77')]=JSON[_0xac4a('0x78')](_0x2b6773[_0xac4a('0x77')]);_0x3eae2f[_0xac4a('0x3a')](_0x41cdb5(_0x2b6773[_0xac4a('0x77')][_0xac4a('0x63')]));}_0x52963c=_0x3eae2f[_0xac4a('0x79')]();_0x3eae2f[_0xac4a('0x1d')](_0x63c30);_0x3eae2f[_0xac4a('0x1b')](0x0);logger['debug'](_0xac4a('0x7a'),_0x3eae2f[_0xac4a('0x7b')]());return dbH['sequelize'][_0xac4a('0x31')](_0x3eae2f['toString'](),{'type':dbH[_0xac4a('0x7c')][_0xac4a('0x7d')]['SELECT']});}})[_0xac4a('0x25')](function(){return{'sql':_0x52963c[_0xac4a('0x7b')]()};})[_0xac4a('0x25')](respondWithResult(_0x538cfd,null))[_0xac4a('0x44')](handleError(_0x538cfd,null));};
\ No newline at end of file
index d829228..9d5e975 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf96b=['rimraf','../../config/environment','./analyticDefaultReport.attributes','define','AnalyticDefaultReport','analytics_default_reports','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x4edbee,_0x1c610a){var _0x300648=function(_0x3aff62){while(--_0x3aff62){_0x4edbee['push'](_0x4edbee['shift']());}};_0x300648(++_0x1c610a);}(_0xf96b,0x132));var _0xbf96=function(_0x194e09,_0x3ff27e){_0x194e09=_0x194e09-0x0;var _0x10a36b=_0xf96b[_0x194e09];return _0x10a36b;};'use strict';var _=require('lodash');var util=require(_0xbf96('0x0'));var logger=require(_0xbf96('0x1'))(_0xbf96('0x2'));var moment=require('moment');var BPromise=require(_0xbf96('0x3'));var rp=require(_0xbf96('0x4'));var fs=require('fs');var path=require(_0xbf96('0x5'));var rimraf=require(_0xbf96('0x6'));var config=require(_0xbf96('0x7'));var attributes=require(_0xbf96('0x8'));module['exports']=function(_0x144070,_0x26495c){return _0x144070[_0xbf96('0x9')](_0xbf96('0xa'),attributes,{'tableName':_0xbf96('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x64f2=['./analyticDefaultReport.attributes','AnalyticDefaultReport','lodash','util','../../config/logger','moment','bluebird','rimraf'];(function(_0x3df9dd,_0x26f5cd){var _0x4f11e4=function(_0x1993fe){while(--_0x1993fe){_0x3df9dd['push'](_0x3df9dd['shift']());}};_0x4f11e4(++_0x26f5cd);}(_0x64f2,0x7a));var _0x264f=function(_0x27e670,_0x3174d6){_0x27e670=_0x27e670-0x0;var _0xf68588=_0x64f2[_0x27e670];return _0xf68588;};'use strict';var _=require(_0x264f('0x0'));var util=require(_0x264f('0x1'));var logger=require(_0x264f('0x2'))('api');var moment=require(_0x264f('0x3'));var BPromise=require(_0x264f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x264f('0x5'));var config=require('../../config/environment');var attributes=require(_0x264f('0x6'));module['exports']=function(_0x5ebc40,_0x287875){return _0x5ebc40['define'](_0x264f('0x7'),attributes,{'tableName':'analytics_default_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 23612ed..a8d6ff5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81ee=['request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x52d645,_0x4d2238){var _0x2fd4a7=function(_0x358fbb){while(--_0x358fbb){_0x52d645['push'](_0x52d645['shift']());}};_0x2fd4a7(++_0x4d2238);}(_0x81ee,0x7a));var _0xe81e=function(_0x3baca5,_0x2834ee){_0x3baca5=_0x3baca5-0x0;var _0x1bc1e9=_0x81ee[_0x3baca5];return _0x1bc1e9;};'use strict';var _=require('lodash');var util=require(_0xe81e('0x0'));var moment=require(_0xe81e('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe81e('0x2'));var db=require(_0xe81e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xe81e('0x4'))(_0xe81e('0x5'));var config=require(_0xe81e('0x6'));var jayson=require(_0xe81e('0x7'));var client=jayson[_0xe81e('0x8')][_0xe81e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x44365a,_0x42da6a,_0x352111){return new BPromise(function(_0x394506,_0x51670f){return client[_0xe81e('0xa')](_0x44365a,_0x352111)[_0xe81e('0xb')](function(_0x1bb95f){logger[_0xe81e('0xc')](_0xe81e('0xd'),_0x42da6a,_0xe81e('0xe'));logger[_0xe81e('0xf')](_0xe81e('0x10'),_0x42da6a,_0xe81e('0xe'),JSON[_0xe81e('0x11')](_0x1bb95f));if(_0x1bb95f['error']){if(_0x1bb95f[_0xe81e('0x12')][_0xe81e('0x13')]===0x1f4){logger[_0xe81e('0x12')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x42da6a,_0x1bb95f['error'][_0xe81e('0x14')]);return _0x51670f(_0x1bb95f['error'][_0xe81e('0x14')]);}logger[_0xe81e('0x12')](_0xe81e('0xd'),_0x42da6a,_0x1bb95f['error'][_0xe81e('0x14')]);return _0x394506(_0x1bb95f['error']['message']);}else{logger[_0xe81e('0xc')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x42da6a,_0xe81e('0xe'));_0x394506(_0x1bb95f[_0xe81e('0x15')][_0xe81e('0x14')]);}})['catch'](function(_0x36af86){logger[_0xe81e('0x12')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x42da6a,_0x36af86);_0x51670f(_0x36af86);});});}
\ No newline at end of file
+var _0x205e=['jayson/promise','client','http','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x15cc1c,_0x3e8a24){var _0x56bc3b=function(_0x24d5b2){while(--_0x24d5b2){_0x15cc1c['push'](_0x15cc1c['shift']());}};_0x56bc3b(++_0x3e8a24);}(_0x205e,0xa7));var _0xe205=function(_0xcd52ea,_0x4bc4b9){_0xcd52ea=_0xcd52ea-0x0;var _0x2b3b74=_0x205e[_0xcd52ea];return _0x2b3b74;};'use strict';var _=require(_0xe205('0x0'));var util=require(_0xe205('0x1'));var moment=require(_0xe205('0x2'));var BPromise=require('bluebird');var rs=require(_0xe205('0x3'));var fs=require('fs');var Redis=require(_0xe205('0x4'));var db=require(_0xe205('0x5'))['db'];var utils=require(_0xe205('0x6'));var logger=require(_0xe205('0x7'))(_0xe205('0x8'));var config=require('../../config/environment');var jayson=require(_0xe205('0x9'));var client=jayson[_0xe205('0xa')][_0xe205('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbfe4df,_0x18cd7c,_0x28f38b){return new BPromise(function(_0x514d24,_0x3d5b37){return client['request'](_0xbfe4df,_0x28f38b)[_0xe205('0xc')](function(_0x4a53cc){logger[_0xe205('0xd')](_0xe205('0xe'),_0x18cd7c,_0xe205('0xf'));logger['debug']('AnalyticDefaultReport,\x20%s,\x20%s,\x20%s',_0x18cd7c,_0xe205('0xf'),JSON[_0xe205('0x10')](_0x4a53cc));if(_0x4a53cc[_0xe205('0x11')]){if(_0x4a53cc[_0xe205('0x11')][_0xe205('0x12')]===0x1f4){logger[_0xe205('0x11')](_0xe205('0xe'),_0x18cd7c,_0x4a53cc[_0xe205('0x11')][_0xe205('0x13')]);return _0x3d5b37(_0x4a53cc['error'][_0xe205('0x13')]);}logger[_0xe205('0x11')](_0xe205('0xe'),_0x18cd7c,_0x4a53cc[_0xe205('0x11')][_0xe205('0x13')]);return _0x514d24(_0x4a53cc[_0xe205('0x11')]['message']);}else{logger[_0xe205('0xd')](_0xe205('0xe'),_0x18cd7c,_0xe205('0xf'));_0x514d24(_0x4a53cc[_0xe205('0x14')][_0xe205('0x13')]);}})[_0xe205('0x15')](function(_0x5da891){logger[_0xe205('0x11')](_0xe205('0xe'),_0x18cd7c,_0x5da891);_0x3d5b37(_0x5da891);});});}
\ No newline at end of file
index 8e77fea..544fabf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8ae=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','get','isAuthenticated','index','/:id','/:id/preview','preview','/:id/run','run','query','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express'];(function(_0x2f3794,_0x3c3bec){var _0x1c9fbe=function(_0x2d2eac){while(--_0x2d2eac){_0x2f3794['push'](_0x2f3794['shift']());}};_0x1c9fbe(++_0x3c3bec);}(_0xf8ae,0x168));var _0xef8a=function(_0x5d8792,_0x4f5438){_0x5d8792=_0x5d8792-0x0;var _0x986d0e=_0xf8ae[_0x5d8792];return _0x986d0e;};'use strict';var multer=require(_0xef8a('0x0'));var util=require(_0xef8a('0x1'));var path=require('path');var timeout=require(_0xef8a('0x2'));var express=require(_0xef8a('0x3'));var router=express[_0xef8a('0x4')]();var fs_extra=require(_0xef8a('0x5'));var auth=require(_0xef8a('0x6'));var interaction=require(_0xef8a('0x7'));var config=require(_0xef8a('0x8'));var controller=require(_0xef8a('0x9'));router[_0xef8a('0xa')]('/',auth[_0xef8a('0xb')](),controller[_0xef8a('0xc')]);router[_0xef8a('0xa')](_0xef8a('0xd'),auth[_0xef8a('0xb')](),controller['show']);router['get'](_0xef8a('0xe'),auth[_0xef8a('0xb')](),controller[_0xef8a('0xf')]);router['get'](_0xef8a('0x10'),auth[_0xef8a('0xb')](),controller[_0xef8a('0x11')]);router['get']('/:id/query',auth[_0xef8a('0xb')](),controller[_0xef8a('0x12')]);router[_0xef8a('0x13')]('/',auth[_0xef8a('0xb')](),controller[_0xef8a('0x14')]);router[_0xef8a('0x15')]('/:id',auth[_0xef8a('0xb')](),controller[_0xef8a('0x16')]);router[_0xef8a('0x17')](_0xef8a('0xd'),auth['isAuthenticated'](),controller[_0xef8a('0x18')]);module[_0xef8a('0x19')]=router;
\ No newline at end of file
+var _0xd4af=['connect-timeout','express','fs-extra','./analyticDefaultReport.controller','isAuthenticated','index','/:id','show','get','/:id/preview','preview','/:id/run','run','query','post','put','delete','destroy','exports','multer','util'];(function(_0x2fc7c4,_0xe9325b){var _0x209f4a=function(_0x5c70eb){while(--_0x5c70eb){_0x2fc7c4['push'](_0x2fc7c4['shift']());}};_0x209f4a(++_0xe9325b);}(_0xd4af,0xe5));var _0xfd4a=function(_0x485df3,_0x253fac){_0x485df3=_0x485df3-0x0;var _0x481d6b=_0xd4af[_0x485df3];return _0x481d6b;};'use strict';var multer=require(_0xfd4a('0x0'));var util=require(_0xfd4a('0x1'));var path=require('path');var timeout=require(_0xfd4a('0x2'));var express=require(_0xfd4a('0x3'));var router=express['Router']();var fs_extra=require(_0xfd4a('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xfd4a('0x5'));router['get']('/',auth[_0xfd4a('0x6')](),controller[_0xfd4a('0x7')]);router['get'](_0xfd4a('0x8'),auth['isAuthenticated'](),controller[_0xfd4a('0x9')]);router[_0xfd4a('0xa')](_0xfd4a('0xb'),auth[_0xfd4a('0x6')](),controller[_0xfd4a('0xc')]);router[_0xfd4a('0xa')](_0xfd4a('0xd'),auth[_0xfd4a('0x6')](),controller[_0xfd4a('0xe')]);router[_0xfd4a('0xa')]('/:id/query',auth[_0xfd4a('0x6')](),controller[_0xfd4a('0xf')]);router[_0xfd4a('0x10')]('/',auth[_0xfd4a('0x6')](),controller['create']);router[_0xfd4a('0x11')]('/:id',auth[_0xfd4a('0x6')](),controller['update']);router[_0xfd4a('0x12')](_0xfd4a('0x8'),auth[_0xfd4a('0x6')](),controller[_0xfd4a('0x13')]);module[_0xfd4a('0x14')]=router;
\ No newline at end of file
index 6e3c5d2..2534151 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b67=['pdf','DATE','Loading','manual','sequelize','moment','exports','STRING','ENUM','csv'];(function(_0x527a20,_0x347399){var _0x21f5e0=function(_0x2e01f8){while(--_0x2e01f8){_0x527a20['push'](_0x527a20['shift']());}};_0x21f5e0(++_0x347399);}(_0x7b67,0x108));var _0x77b6=function(_0x3fcff7,_0xc21e92){_0x3fcff7=_0x3fcff7-0x0;var _0x4d49e0=_0x7b67[_0x3fcff7];return _0x4d49e0;};'use strict';var Sequelize=require(_0x77b6('0x0'));var moment=require(_0x77b6('0x1'));module[_0x77b6('0x2')]={'name':{'type':Sequelize[_0x77b6('0x3')],'allowNull':![]},'basename':{'type':Sequelize[_0x77b6('0x3')],'allowNull':![]},'output':{'type':Sequelize[_0x77b6('0x4')](_0x77b6('0x5'),_0x77b6('0x6'),'xlsx'),'allowNull':![],'defaultValue':_0x77b6('0x5')},'savename':{'type':Sequelize[_0x77b6('0x3')],'allowNull':![]},'startDate':{'type':Sequelize[_0x77b6('0x7')]},'endDate':{'type':Sequelize[_0x77b6('0x7')]},'status':{'type':Sequelize['STRING'],'defaultValue':_0x77b6('0x8')},'type':{'type':Sequelize[_0x77b6('0x4')](_0x77b6('0x9'),'scheduled'),'allowNull':![],'defaultValue':_0x77b6('0x9')},'reportId':{'type':Sequelize['INTEGER'](0xb)['UNSIGNED']},'reportType':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x6a10=['INTEGER','moment','exports','STRING','ENUM','pdf','DATE','Loading','scheduled'];(function(_0x510faf,_0x583969){var _0x2ba9e9=function(_0x43d245){while(--_0x43d245){_0x510faf['push'](_0x510faf['shift']());}};_0x2ba9e9(++_0x583969);}(_0x6a10,0x1d5));var _0x06a1=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0x6a10[_0x68c979];return _0x4f0001;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x06a1('0x0'));module[_0x06a1('0x1')]={'name':{'type':Sequelize[_0x06a1('0x2')],'allowNull':![]},'basename':{'type':Sequelize['STRING'],'allowNull':![]},'output':{'type':Sequelize[_0x06a1('0x3')]('csv',_0x06a1('0x4'),'xlsx'),'allowNull':![],'defaultValue':'csv'},'savename':{'type':Sequelize[_0x06a1('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0x06a1('0x5')]},'endDate':{'type':Sequelize[_0x06a1('0x5')]},'status':{'type':Sequelize[_0x06a1('0x2')],'defaultValue':_0x06a1('0x6')},'type':{'type':Sequelize['ENUM']('manual',_0x06a1('0x7')),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize[_0x06a1('0x8')](0xb)['UNSIGNED']},'reportType':{'type':Sequelize[_0x06a1('0x2')]}};
\ No newline at end of file
index e66be6e..9f2a196 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb25f=['lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','then','destroy','get','UserProfileResource','status','error','name','send','index','AnalyticExtractedReport','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','include','findAll','rows','show','params','length','includeAll','find','catch','create','body','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','download','basename','root','server/files/reports','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','join','savename','format','%s.%s','output','toLowerCase','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs'];(function(_0x3e30a8,_0x257732){var _0x5d5d1d=function(_0x2987f1){while(--_0x2987f1){_0x3e30a8['push'](_0x3e30a8['shift']());}};_0x5d5d1d(++_0x257732);}(_0xb25f,0x1d0));var _0xfb25=function(_0x4f5cc9,_0x40593b){_0x4f5cc9=_0x4f5cc9-0x0;var _0x382ed4=_0xb25f[_0x4f5cc9];return _0x382ed4;};'use strict';var emlformat=require(_0xfb25('0x0'));var rimraf=require(_0xfb25('0x1'));var zipdir=require(_0xfb25('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfb25('0x3'));var moment=require(_0xfb25('0x4'));var BPromise=require(_0xfb25('0x5'));var Mustache=require(_0xfb25('0x6'));var util=require(_0xfb25('0x7'));var path=require('path');var sox=require(_0xfb25('0x8'));var csv=require(_0xfb25('0x9'));var ejs=require(_0xfb25('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfb25('0xb'));var squel=require(_0xfb25('0xc'));var crypto=require(_0xfb25('0xd'));var jsforce=require(_0xfb25('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xfb25('0xf'));var Papa=require(_0xfb25('0x10'));var Redis=require(_0xfb25('0x11'));var authService=require(_0xfb25('0x12'));var qs=require(_0xfb25('0x13'));var as=require(_0xfb25('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xfb25('0x15'))(_0xfb25('0x16'));var utils=require(_0xfb25('0x17'));var config=require(_0xfb25('0x18'));var licenseUtil=require(_0xfb25('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x515693,_0x52aa6a){_0x52aa6a=_0x52aa6a||0xcc;return function(_0x5a0e90){if(_0x5a0e90){return _0x515693[_0xfb25('0x1a')](_0x52aa6a);}return _0x515693['status'](_0x52aa6a)[_0xfb25('0x1b')]();};}function respondWithResult(_0x4ab3c8,_0x562be3){_0x562be3=_0x562be3||0xc8;return function(_0x151b36){if(_0x151b36){return _0x4ab3c8['status'](_0x562be3)['json'](_0x151b36);}};}function respondWithFilteredResult(_0x230414,_0x4ce85b){return function(_0x33885c){if(_0x33885c){var _0xdfb6e9=typeof _0x4ce85b[_0xfb25('0x1c')]===_0xfb25('0x1d')&&typeof _0x4ce85b[_0xfb25('0x1e')]==='undefined';var _0x3f612d=_0x33885c[_0xfb25('0x1f')];var _0x3b2549=_0xdfb6e9?0x0:_0x4ce85b['offset'];var _0x6c17cd=_0xdfb6e9?_0x33885c['count']:_0x4ce85b[_0xfb25('0x1c')]+_0x4ce85b['limit'];var _0x4047ef;if(_0x6c17cd>=_0x3f612d){_0x6c17cd=_0x3f612d;_0x4047ef=0xc8;}else{_0x4047ef=0xce;}_0x230414['status'](_0x4047ef);return _0x230414['set'](_0xfb25('0x20'),_0x3b2549+'-'+_0x6c17cd+'/'+_0x3f612d)[_0xfb25('0x21')](_0x33885c);}return null;};}function patchUpdates(_0x2de3b9){return function(_0x1e1f2c){try{jsonpatch[_0xfb25('0x22')](_0x1e1f2c,_0x2de3b9,!![]);}catch(_0x37c5dd){return BPromise[_0xfb25('0x23')](_0x37c5dd);}return _0x1e1f2c[_0xfb25('0x24')]();};}function saveUpdates(_0x530092,_0xe039c7){return function(_0x9a062d){if(_0x9a062d){return _0x9a062d['update'](_0x530092)[_0xfb25('0x25')](function(_0x1f5f61){return _0x1f5f61;});}return null;};}function removeEntity(_0x2c70c8,_0x5c8c7e){return function(_0x1dd5b4){if(_0x1dd5b4){return _0x1dd5b4[_0xfb25('0x26')]()['then'](function(){var _0x31d85b=_0x1dd5b4[_0xfb25('0x27')]({'plain':!![]});var _0x30621a='ExtractedReports';return db[_0xfb25('0x28')][_0xfb25('0x26')]({'where':{'type':_0x30621a,'resourceId':_0x31d85b['id']}})[_0xfb25('0x25')](function(){return _0x1dd5b4;});})['then'](function(){_0x2c70c8[_0xfb25('0x29')](0xcc)[_0xfb25('0x1b')]();});}};}function handleEntityNotFound(_0x53a168,_0x34b833){return function(_0x1dd08c){if(!_0x1dd08c){_0x53a168[_0xfb25('0x1a')](0x194);}return _0x1dd08c;};}function handleError(_0x2566b0,_0x471fe9){_0x471fe9=_0x471fe9||0x1f4;return function(_0x3ecb7c){logger[_0xfb25('0x2a')](_0x3ecb7c['stack']);if(_0x3ecb7c[_0xfb25('0x2b')]){delete _0x3ecb7c['name'];}_0x2566b0[_0xfb25('0x29')](_0x471fe9)[_0xfb25('0x2c')](_0x3ecb7c);};}exports[_0xfb25('0x2d')]=function(_0x1f0a34,_0x46e3ff){var _0x1668b4={},_0x5dc5da={},_0x5b1740={'count':0x0,'rows':[]};var _0x2c07a8=_['map'](db[_0xfb25('0x2e')][_0xfb25('0x2f')],function(_0x24ca92){return{'name':_0x24ca92[_0xfb25('0x30')],'type':_0x24ca92[_0xfb25('0x31')]['key']};});_0x5dc5da[_0xfb25('0x32')]=_[_0xfb25('0x33')](_0x2c07a8,_0xfb25('0x2b'));_0x5dc5da[_0xfb25('0x34')]=_[_0xfb25('0x35')](_0x1f0a34[_0xfb25('0x34')]);_0x5dc5da[_0xfb25('0x36')]=_[_0xfb25('0x37')](_0x5dc5da[_0xfb25('0x32')],_0x5dc5da[_0xfb25('0x34')]);_0x1668b4[_0xfb25('0x38')]=_[_0xfb25('0x37')](_0x5dc5da[_0xfb25('0x32')],qs[_0xfb25('0x39')](_0x1f0a34[_0xfb25('0x34')][_0xfb25('0x39')]));_0x1668b4[_0xfb25('0x38')]=_0x1668b4[_0xfb25('0x38')]['length']?_0x1668b4[_0xfb25('0x38')]:_0x5dc5da['model'];if(!_0x1f0a34['query'][_0xfb25('0x3a')](_0xfb25('0x3b'))){_0x1668b4[_0xfb25('0x1e')]=qs[_0xfb25('0x1e')](_0x1f0a34[_0xfb25('0x34')]['limit']);_0x1668b4[_0xfb25('0x1c')]=qs[_0xfb25('0x1c')](_0x1f0a34['query'][_0xfb25('0x1c')]);}_0x1668b4[_0xfb25('0x3c')]=qs[_0xfb25('0x3d')](_0x1f0a34[_0xfb25('0x34')][_0xfb25('0x3d')]);_0x1668b4[_0xfb25('0x3e')]=qs[_0xfb25('0x36')](_[_0xfb25('0x3f')](_0x1f0a34[_0xfb25('0x34')],_0x5dc5da[_0xfb25('0x36')]),_0x2c07a8);if(_0x1f0a34[_0xfb25('0x34')]['filter']){_0x1668b4[_0xfb25('0x3e')]=_['merge'](_0x1668b4[_0xfb25('0x3e')],{'$or':_[_0xfb25('0x33')](_0x2c07a8,function(_0x1f04dd){if(_0x1f04dd['type']!=='VIRTUAL'){var _0x787ec4={};_0x787ec4[_0x1f04dd[_0xfb25('0x2b')]]={'$like':'%'+_0x1f0a34[_0xfb25('0x34')]['filter']+'%'};return _0x787ec4;}})});}_0x1668b4=_[_0xfb25('0x40')]({},_0x1668b4,_0x1f0a34['options']);var _0x2e9ea2={'where':_0x1668b4[_0xfb25('0x3e')]};return db[_0xfb25('0x2e')][_0xfb25('0x1f')](_0x2e9ea2)[_0xfb25('0x25')](function(_0x122057){_0x5b1740[_0xfb25('0x1f')]=_0x122057;if(_0x1f0a34[_0xfb25('0x34')]['includeAll']){_0x1668b4[_0xfb25('0x41')]=[{'all':!![]}];}return db[_0xfb25('0x2e')][_0xfb25('0x42')](_0x1668b4);})['then'](function(_0x4a3165){_0x5b1740[_0xfb25('0x43')]=_0x4a3165;return _0x5b1740;})[_0xfb25('0x25')](respondWithFilteredResult(_0x46e3ff,_0x1668b4))['catch'](handleError(_0x46e3ff,null));};exports[_0xfb25('0x44')]=function(_0x415094,_0x3be90a){var _0x279a3d={'raw':!![],'where':{'id':_0x415094[_0xfb25('0x45')]['id']}},_0xda4079={};_0xda4079[_0xfb25('0x32')]=_[_0xfb25('0x35')](db[_0xfb25('0x2e')]['rawAttributes']);_0xda4079[_0xfb25('0x34')]=_[_0xfb25('0x35')](_0x415094[_0xfb25('0x34')]);_0xda4079[_0xfb25('0x36')]=_[_0xfb25('0x37')](_0xda4079['model'],_0xda4079[_0xfb25('0x34')]);_0x279a3d[_0xfb25('0x38')]=_[_0xfb25('0x37')](_0xda4079['model'],qs[_0xfb25('0x39')](_0x415094[_0xfb25('0x34')][_0xfb25('0x39')]));_0x279a3d['attributes']=_0x279a3d[_0xfb25('0x38')][_0xfb25('0x46')]?_0x279a3d[_0xfb25('0x38')]:_0xda4079[_0xfb25('0x32')];if(_0x415094[_0xfb25('0x34')][_0xfb25('0x47')]){_0x279a3d[_0xfb25('0x41')]=[{'all':!![]}];}_0x279a3d=_[_0xfb25('0x40')]({},_0x279a3d,_0x415094['options']);return db[_0xfb25('0x2e')][_0xfb25('0x48')](_0x279a3d)[_0xfb25('0x25')](handleEntityNotFound(_0x3be90a,null))[_0xfb25('0x25')](respondWithResult(_0x3be90a,null))[_0xfb25('0x49')](handleError(_0x3be90a,null));};exports['create']=function(_0xe70469,_0x52badd){return db[_0xfb25('0x2e')][_0xfb25('0x4a')](_0xe70469[_0xfb25('0x4b')],{})[_0xfb25('0x25')](function(_0x29d09e){var _0xed1fce=_0xe70469['user'][_0xfb25('0x27')]({'plain':!![]});if(!_0xed1fce)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xed1fce[_0xfb25('0x4c')]==='user'){var _0x4c4602=_0x29d09e[_0xfb25('0x27')]({'plain':!![]});var _0x2fdaa4='ExtractedReports';return db[_0xfb25('0x4d')]['find']({'where':{'name':_0x2fdaa4,'userProfileId':_0xed1fce['userProfileId']},'raw':!![]})[_0xfb25('0x25')](function(_0x1723d3){if(_0x1723d3&&_0x1723d3[_0xfb25('0x4e')]===0x0){return db['UserProfileResource'][_0xfb25('0x4a')]({'name':_0x4c4602[_0xfb25('0x2b')],'resourceId':_0x4c4602['id'],'type':_0x1723d3[_0xfb25('0x2b')],'sectionId':_0x1723d3['id']},{})[_0xfb25('0x25')](function(){return _0x29d09e;});}else{return _0x29d09e;}})['catch'](function(_0x3a952f){logger[_0xfb25('0x2a')](_0xfb25('0x4f'),_0x3a952f);throw _0x3a952f;});}return _0x29d09e;})[_0xfb25('0x25')](respondWithResult(_0x52badd,0xc9))[_0xfb25('0x49')](handleError(_0x52badd,null));};exports[_0xfb25('0x50')]=function(_0x5260f9,_0x4bd494){if(_0x5260f9[_0xfb25('0x4b')]['id']){delete _0x5260f9[_0xfb25('0x4b')]['id'];}return db[_0xfb25('0x2e')][_0xfb25('0x48')]({'where':{'id':_0x5260f9[_0xfb25('0x45')]['id']}})[_0xfb25('0x25')](handleEntityNotFound(_0x4bd494,null))[_0xfb25('0x25')](saveUpdates(_0x5260f9['body'],null))[_0xfb25('0x25')](respondWithResult(_0x4bd494,null))[_0xfb25('0x49')](handleError(_0x4bd494,null));};exports['destroy']=function(_0x2b2efe,_0x4877b3){return db[_0xfb25('0x2e')][_0xfb25('0x48')]({'where':{'id':_0x2b2efe[_0xfb25('0x45')]['id']}})[_0xfb25('0x25')](handleEntityNotFound(_0x4877b3,null))['then'](removeEntity(_0x4877b3,null))[_0xfb25('0x49')](handleError(_0x4877b3,null));};exports[_0xfb25('0x51')]=function(_0x339a47,_0x177f26,_0x4182a3){return db[_0xfb25('0x2e')]['find']({'where':{'id':_0x339a47['params']['id']},'attributes':['name',_0xfb25('0x52'),'savename','output'],'raw':!![]})[_0xfb25('0x25')](handleEntityNotFound(_0x177f26,null))[_0xfb25('0x25')](function(_0x4f9a54){if(_0x4f9a54){if(!fs['existsSync'](path['join'](config[_0xfb25('0x53')],_0xfb25('0x54'),_0x4f9a54['savename']))){throw new db[(_0xfb25('0x55'))][(_0xfb25('0x56'))](_0xfb25('0x57'));}if(_0x339a47[_0xfb25('0x34')][_0xfb25('0x58')]){return _0x177f26[_0xfb25('0x1a')](0xc8);}return _0x177f26[_0xfb25('0x51')](path[_0xfb25('0x59')](config[_0xfb25('0x53')],'server/files/reports',_0x4f9a54[_0xfb25('0x5a')]),util[_0xfb25('0x5b')](_0xfb25('0x5c'),_0x4f9a54['basename']||_0x4f9a54[_0xfb25('0x2b')],_0x4f9a54[_0xfb25('0x5d')][_0xfb25('0x5e')]()));}})['catch'](handleError(_0x177f26,null));};
\ No newline at end of file
+var _0xd88c=['catch','show','params','find','create','body','user','get','download','basename','savename','output','existsSync','join','root','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','server/files/reports','format','%s.%s','toLowerCase','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','limit','set','apply','reject','save','update','then','ExtractedReports','UserProfileResource','destroy','error','name','send','index','map','AnalyticExtractedReport','rawAttributes','fieldName','type','key','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','offset','order','sort','where','merge','filter','options','includeAll','include','findAll','rows'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0xd88c,0x73));var _0xcd88=function(_0x4de1a4,_0x3d21d7){_0x4de1a4=_0x4de1a4-0x0;var _0x2be3fb=_0xd88c[_0x4de1a4];return _0x2be3fb;};'use strict';var emlformat=require(_0xcd88('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xcd88('0x1'));var rp=require(_0xcd88('0x2'));var moment=require(_0xcd88('0x3'));var BPromise=require(_0xcd88('0x4'));var Mustache=require(_0xcd88('0x5'));var util=require(_0xcd88('0x6'));var path=require(_0xcd88('0x7'));var sox=require(_0xcd88('0x8'));var csv=require(_0xcd88('0x9'));var ejs=require(_0xcd88('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcd88('0xb'));var squel=require(_0xcd88('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xcd88('0xd'));var toCsv=require(_0xcd88('0x9'));var querystring=require('querystring');var Papa=require(_0xcd88('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xcd88('0xf'));var as=require(_0xcd88('0x10'));var hardwareService=require(_0xcd88('0x11'));var logger=require(_0xcd88('0x12'))(_0xcd88('0x13'));var utils=require(_0xcd88('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xcd88('0x15'));var db=require(_0xcd88('0x16'))['db'];function respondWithStatusCode(_0x2f67ab,_0x369adb){_0x369adb=_0x369adb||0xcc;return function(_0x2d0e94){if(_0x2d0e94){return _0x2f67ab[_0xcd88('0x17')](_0x369adb);}return _0x2f67ab[_0xcd88('0x18')](_0x369adb)[_0xcd88('0x19')]();};}function respondWithResult(_0x11ff1f,_0x5e3351){_0x5e3351=_0x5e3351||0xc8;return function(_0x40c095){if(_0x40c095){return _0x11ff1f[_0xcd88('0x18')](_0x5e3351)[_0xcd88('0x1a')](_0x40c095);}};}function respondWithFilteredResult(_0x5afb29,_0x27f523){return function(_0x463886){if(_0x463886){var _0x53250e=typeof _0x27f523['offset']===_0xcd88('0x1b')&&typeof _0x27f523['limit']==='undefined';var _0x22d42a=_0x463886[_0xcd88('0x1c')];var _0x4289e7=_0x53250e?0x0:_0x27f523['offset'];var _0x514ccc=_0x53250e?_0x463886[_0xcd88('0x1c')]:_0x27f523['offset']+_0x27f523[_0xcd88('0x1d')];var _0x5e904d;if(_0x514ccc>=_0x22d42a){_0x514ccc=_0x22d42a;_0x5e904d=0xc8;}else{_0x5e904d=0xce;}_0x5afb29[_0xcd88('0x18')](_0x5e904d);return _0x5afb29[_0xcd88('0x1e')]('Content-Range',_0x4289e7+'-'+_0x514ccc+'/'+_0x22d42a)[_0xcd88('0x1a')](_0x463886);}return null;};}function patchUpdates(_0x2428ab){return function(_0x5c2a4c){try{jsonpatch[_0xcd88('0x1f')](_0x5c2a4c,_0x2428ab,!![]);}catch(_0x3ab6f5){return BPromise[_0xcd88('0x20')](_0x3ab6f5);}return _0x5c2a4c[_0xcd88('0x21')]();};}function saveUpdates(_0x2a96dc,_0x513321){return function(_0x9c5a41){if(_0x9c5a41){return _0x9c5a41[_0xcd88('0x22')](_0x2a96dc)[_0xcd88('0x23')](function(_0x13d62f){return _0x13d62f;});}return null;};}function removeEntity(_0x174126,_0x291828){return function(_0x269bde){if(_0x269bde){return _0x269bde['destroy']()['then'](function(){var _0x2fbe6d=_0x269bde['get']({'plain':!![]});var _0x3810f1=_0xcd88('0x24');return db[_0xcd88('0x25')][_0xcd88('0x26')]({'where':{'type':_0x3810f1,'resourceId':_0x2fbe6d['id']}})[_0xcd88('0x23')](function(){return _0x269bde;});})[_0xcd88('0x23')](function(){_0x174126['status'](0xcc)[_0xcd88('0x19')]();});}};}function handleEntityNotFound(_0x3fbd49,_0x148f5a){return function(_0x42d336){if(!_0x42d336){_0x3fbd49[_0xcd88('0x17')](0x194);}return _0x42d336;};}function handleError(_0x3ee0d7,_0x53f33f){_0x53f33f=_0x53f33f||0x1f4;return function(_0x36e088){logger[_0xcd88('0x27')](_0x36e088['stack']);if(_0x36e088[_0xcd88('0x28')]){delete _0x36e088['name'];}_0x3ee0d7['status'](_0x53f33f)[_0xcd88('0x29')](_0x36e088);};}exports[_0xcd88('0x2a')]=function(_0x31df24,_0xb5742){var _0x44a5d4={},_0x1cde81={},_0x3f26d6={'count':0x0,'rows':[]};var _0x22c6f7=_[_0xcd88('0x2b')](db[_0xcd88('0x2c')][_0xcd88('0x2d')],function(_0x34ae1d){return{'name':_0x34ae1d[_0xcd88('0x2e')],'type':_0x34ae1d[_0xcd88('0x2f')][_0xcd88('0x30')]};});_0x1cde81['model']=_[_0xcd88('0x2b')](_0x22c6f7,'name');_0x1cde81['query']=_[_0xcd88('0x31')](_0x31df24[_0xcd88('0x32')]);_0x1cde81[_0xcd88('0x33')]=_[_0xcd88('0x34')](_0x1cde81['model'],_0x1cde81[_0xcd88('0x32')]);_0x44a5d4[_0xcd88('0x35')]=_[_0xcd88('0x34')](_0x1cde81[_0xcd88('0x36')],qs[_0xcd88('0x37')](_0x31df24[_0xcd88('0x32')]['fields']));_0x44a5d4[_0xcd88('0x35')]=_0x44a5d4[_0xcd88('0x35')][_0xcd88('0x38')]?_0x44a5d4['attributes']:_0x1cde81[_0xcd88('0x36')];if(!_0x31df24[_0xcd88('0x32')][_0xcd88('0x39')]('nolimit')){_0x44a5d4[_0xcd88('0x1d')]=qs[_0xcd88('0x1d')](_0x31df24[_0xcd88('0x32')][_0xcd88('0x1d')]);_0x44a5d4['offset']=qs['offset'](_0x31df24[_0xcd88('0x32')][_0xcd88('0x3a')]);}_0x44a5d4[_0xcd88('0x3b')]=qs[_0xcd88('0x3c')](_0x31df24[_0xcd88('0x32')][_0xcd88('0x3c')]);_0x44a5d4['where']=qs[_0xcd88('0x33')](_['pick'](_0x31df24[_0xcd88('0x32')],_0x1cde81['filters']),_0x22c6f7);if(_0x31df24[_0xcd88('0x32')]['filter']){_0x44a5d4[_0xcd88('0x3d')]=_[_0xcd88('0x3e')](_0x44a5d4[_0xcd88('0x3d')],{'$or':_[_0xcd88('0x2b')](_0x22c6f7,function(_0x1f5063){if(_0x1f5063['type']!=='VIRTUAL'){var _0x4cd1d9={};_0x4cd1d9[_0x1f5063[_0xcd88('0x28')]]={'$like':'%'+_0x31df24[_0xcd88('0x32')][_0xcd88('0x3f')]+'%'};return _0x4cd1d9;}})});}_0x44a5d4=_[_0xcd88('0x3e')]({},_0x44a5d4,_0x31df24[_0xcd88('0x40')]);var _0xb40e35={'where':_0x44a5d4[_0xcd88('0x3d')]};return db[_0xcd88('0x2c')][_0xcd88('0x1c')](_0xb40e35)[_0xcd88('0x23')](function(_0x3d7877){_0x3f26d6['count']=_0x3d7877;if(_0x31df24[_0xcd88('0x32')][_0xcd88('0x41')]){_0x44a5d4[_0xcd88('0x42')]=[{'all':!![]}];}return db[_0xcd88('0x2c')][_0xcd88('0x43')](_0x44a5d4);})[_0xcd88('0x23')](function(_0x403616){_0x3f26d6[_0xcd88('0x44')]=_0x403616;return _0x3f26d6;})[_0xcd88('0x23')](respondWithFilteredResult(_0xb5742,_0x44a5d4))[_0xcd88('0x45')](handleError(_0xb5742,null));};exports[_0xcd88('0x46')]=function(_0x13bfc8,_0x25d233){var _0x656fe9={'raw':!![],'where':{'id':_0x13bfc8[_0xcd88('0x47')]['id']}},_0x49a0d8={};_0x49a0d8[_0xcd88('0x36')]=_['keys'](db['AnalyticExtractedReport'][_0xcd88('0x2d')]);_0x49a0d8[_0xcd88('0x32')]=_['keys'](_0x13bfc8[_0xcd88('0x32')]);_0x49a0d8['filters']=_['intersection'](_0x49a0d8['model'],_0x49a0d8[_0xcd88('0x32')]);_0x656fe9[_0xcd88('0x35')]=_['intersection'](_0x49a0d8['model'],qs[_0xcd88('0x37')](_0x13bfc8[_0xcd88('0x32')][_0xcd88('0x37')]));_0x656fe9[_0xcd88('0x35')]=_0x656fe9[_0xcd88('0x35')][_0xcd88('0x38')]?_0x656fe9['attributes']:_0x49a0d8[_0xcd88('0x36')];if(_0x13bfc8[_0xcd88('0x32')][_0xcd88('0x41')]){_0x656fe9[_0xcd88('0x42')]=[{'all':!![]}];}_0x656fe9=_[_0xcd88('0x3e')]({},_0x656fe9,_0x13bfc8[_0xcd88('0x40')]);return db[_0xcd88('0x2c')][_0xcd88('0x48')](_0x656fe9)[_0xcd88('0x23')](handleEntityNotFound(_0x25d233,null))[_0xcd88('0x23')](respondWithResult(_0x25d233,null))['catch'](handleError(_0x25d233,null));};exports[_0xcd88('0x49')]=function(_0x20cdff,_0x570f13){return db[_0xcd88('0x2c')][_0xcd88('0x49')](_0x20cdff[_0xcd88('0x4a')],{})[_0xcd88('0x23')](function(_0x16afce){var _0x354824=_0x20cdff[_0xcd88('0x4b')][_0xcd88('0x4c')]({'plain':!![]});if(!_0x354824)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x354824['role']==='user'){var _0x1513ae=_0x16afce[_0xcd88('0x4c')]({'plain':!![]});var _0x2c07c9='ExtractedReports';return db['UserProfileSection'][_0xcd88('0x48')]({'where':{'name':_0x2c07c9,'userProfileId':_0x354824['userProfileId']},'raw':!![]})[_0xcd88('0x23')](function(_0x42c7d3){if(_0x42c7d3&&_0x42c7d3['autoAssociation']===0x0){return db['UserProfileResource'][_0xcd88('0x49')]({'name':_0x1513ae[_0xcd88('0x28')],'resourceId':_0x1513ae['id'],'type':_0x42c7d3[_0xcd88('0x28')],'sectionId':_0x42c7d3['id']},{})[_0xcd88('0x23')](function(){return _0x16afce;});}else{return _0x16afce;}})[_0xcd88('0x45')](function(_0x292c06){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x292c06);throw _0x292c06;});}return _0x16afce;})[_0xcd88('0x23')](respondWithResult(_0x570f13,0xc9))[_0xcd88('0x45')](handleError(_0x570f13,null));};exports['update']=function(_0x588005,_0x225b3c){if(_0x588005['body']['id']){delete _0x588005[_0xcd88('0x4a')]['id'];}return db['AnalyticExtractedReport'][_0xcd88('0x48')]({'where':{'id':_0x588005[_0xcd88('0x47')]['id']}})[_0xcd88('0x23')](handleEntityNotFound(_0x225b3c,null))['then'](saveUpdates(_0x588005[_0xcd88('0x4a')],null))[_0xcd88('0x23')](respondWithResult(_0x225b3c,null))['catch'](handleError(_0x225b3c,null));};exports[_0xcd88('0x26')]=function(_0x43f37d,_0xcc76d2){return db[_0xcd88('0x2c')][_0xcd88('0x48')]({'where':{'id':_0x43f37d[_0xcd88('0x47')]['id']}})[_0xcd88('0x23')](handleEntityNotFound(_0xcc76d2,null))[_0xcd88('0x23')](removeEntity(_0xcc76d2,null))[_0xcd88('0x45')](handleError(_0xcc76d2,null));};exports[_0xcd88('0x4d')]=function(_0x9eb505,_0x22fc3f,_0x18f3d0){return db[_0xcd88('0x2c')][_0xcd88('0x48')]({'where':{'id':_0x9eb505[_0xcd88('0x47')]['id']},'attributes':[_0xcd88('0x28'),_0xcd88('0x4e'),_0xcd88('0x4f'),_0xcd88('0x50')],'raw':!![]})[_0xcd88('0x23')](handleEntityNotFound(_0x22fc3f,null))[_0xcd88('0x23')](function(_0x23a2aa){if(_0x23a2aa){if(!fs[_0xcd88('0x51')](path[_0xcd88('0x52')](config[_0xcd88('0x53')],'server/files/reports',_0x23a2aa['savename']))){throw new db[(_0xcd88('0x54'))][(_0xcd88('0x55'))](_0xcd88('0x56'));}if(_0x9eb505['query'][_0xcd88('0x57')]){return _0x22fc3f[_0xcd88('0x17')](0xc8);}return _0x22fc3f[_0xcd88('0x4d')](path[_0xcd88('0x52')](config[_0xcd88('0x53')],_0xcd88('0x58'),_0x23a2aa[_0xcd88('0x4f')]),util[_0xcd88('0x59')](_0xcd88('0x5a'),_0x23a2aa['basename']||_0x23a2aa[_0xcd88('0x28')],_0x23a2aa[_0xcd88('0x50')][_0xcd88('0x5b')]()));}})[_0xcd88('0x45')](handleError(_0x22fc3f,null));};
\ No newline at end of file
index b1b9e49..f979596 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3db5=['path','rimraf','./analyticExtractedReport.attributes','exports','define','analytics_extracted_reports','lodash','util','moment','bluebird','request-promise'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0x3db5,0x166));var _0x53db=function(_0x28d225,_0x43be18){_0x28d225=_0x28d225-0x0;var _0x1f79e1=_0x3db5[_0x28d225];return _0x1f79e1;};'use strict';var _=require(_0x53db('0x0'));var util=require(_0x53db('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x53db('0x2'));var BPromise=require(_0x53db('0x3'));var rp=require(_0x53db('0x4'));var fs=require('fs');var path=require(_0x53db('0x5'));var rimraf=require(_0x53db('0x6'));var config=require('../../config/environment');var attributes=require(_0x53db('0x7'));module[_0x53db('0x8')]=function(_0x3f75d4,_0x4fb5af){return _0x3f75d4[_0x53db('0x9')]('AnalyticExtractedReport',attributes,{'tableName':_0x53db('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3f65=['api','bluebird','request-promise','path','rimraf','exports','define','AnalyticExtractedReport','analytics_extracted_reports','lodash','util','../../config/logger'];(function(_0x4e0b8c,_0x443f31){var _0x633ecc=function(_0x1f1f36){while(--_0x1f1f36){_0x4e0b8c['push'](_0x4e0b8c['shift']());}};_0x633ecc(++_0x443f31);}(_0x3f65,0x171));var _0x53f6=function(_0xec4dc7,_0x345c4c){_0xec4dc7=_0xec4dc7-0x0;var _0x5e8142=_0x3f65[_0xec4dc7];return _0x5e8142;};'use strict';var _=require(_0x53f6('0x0'));var util=require(_0x53f6('0x1'));var logger=require(_0x53f6('0x2'))(_0x53f6('0x3'));var moment=require('moment');var BPromise=require(_0x53f6('0x4'));var rp=require(_0x53f6('0x5'));var fs=require('fs');var path=require(_0x53f6('0x6'));var rimraf=require(_0x53f6('0x7'));var config=require('../../config/environment');var attributes=require('./analyticExtractedReport.attributes');module[_0x53f6('0x8')]=function(_0x97032f,_0x3feccd){return _0x97032f[_0x53f6('0x9')](_0x53f6('0xa'),attributes,{'tableName':_0x53f6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ffccb96..bc215d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e82=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','request\x20sent','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','code','AnalyticExtractedReport,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x328699,_0x2355b8){var _0x30cf7c=function(_0xa775b3){while(--_0xa775b3){_0x328699['push'](_0x328699['shift']());}};_0x30cf7c(++_0x2355b8);}(_0x3e82,0x18a));var _0x23e8=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x3e82[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0x23e8('0x0'));var util=require(_0x23e8('0x1'));var moment=require(_0x23e8('0x2'));var BPromise=require(_0x23e8('0x3'));var rs=require(_0x23e8('0x4'));var fs=require('fs');var Redis=require(_0x23e8('0x5'));var db=require(_0x23e8('0x6'))['db'];var utils=require(_0x23e8('0x7'));var logger=require(_0x23e8('0x8'))(_0x23e8('0x9'));var config=require(_0x23e8('0xa'));var jayson=require(_0x23e8('0xb'));var client=jayson[_0x23e8('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x29effc,_0x1d1a55,_0x16a3bb){return new BPromise(function(_0x164c59,_0x1afc29){return client['request'](_0x29effc,_0x16a3bb)[_0x23e8('0xd')](function(_0x4f01b5){logger[_0x23e8('0xe')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x1d1a55,_0x23e8('0xf'));logger[_0x23e8('0x10')](_0x23e8('0x11'),_0x1d1a55,'request\x20sent',JSON[_0x23e8('0x12')](_0x4f01b5));if(_0x4f01b5[_0x23e8('0x13')]){if(_0x4f01b5[_0x23e8('0x13')][_0x23e8('0x14')]===0x1f4){logger[_0x23e8('0x13')](_0x23e8('0x15'),_0x1d1a55,_0x4f01b5[_0x23e8('0x13')][_0x23e8('0x16')]);return _0x1afc29(_0x4f01b5[_0x23e8('0x13')][_0x23e8('0x16')]);}logger[_0x23e8('0x13')](_0x23e8('0x15'),_0x1d1a55,_0x4f01b5[_0x23e8('0x13')]['message']);return _0x164c59(_0x4f01b5[_0x23e8('0x13')][_0x23e8('0x16')]);}else{logger[_0x23e8('0xe')](_0x23e8('0x15'),_0x1d1a55,'request\x20sent');_0x164c59(_0x4f01b5[_0x23e8('0x17')][_0x23e8('0x16')]);}})[_0x23e8('0x18')](function(_0x96768d){logger[_0x23e8('0x13')](_0x23e8('0x15'),_0x1d1a55,_0x96768d);_0x1afc29(_0x96768d);});});}
\ No newline at end of file
+var _0x578c=['stringify','code','error','message','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0xf7aa86,_0x171456){var _0x5eb1ed=function(_0x47175f){while(--_0x47175f){_0xf7aa86['push'](_0xf7aa86['shift']());}};_0x5eb1ed(++_0x171456);}(_0x578c,0x1e8));var _0xc578=function(_0x4072a9,_0x270f79){_0x4072a9=_0x4072a9-0x0;var _0x595ab1=_0x578c[_0x4072a9];return _0x595ab1;};'use strict';var _=require(_0xc578('0x0'));var util=require(_0xc578('0x1'));var moment=require(_0xc578('0x2'));var BPromise=require(_0xc578('0x3'));var rs=require(_0xc578('0x4'));var fs=require('fs');var Redis=require(_0xc578('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc578('0x6'));var logger=require(_0xc578('0x7'))(_0xc578('0x8'));var config=require(_0xc578('0x9'));var jayson=require(_0xc578('0xa'));var client=jayson[_0xc578('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2be6a7,_0x475daa,_0x308eb2){return new BPromise(function(_0xe8792a,_0x5b667c){return client[_0xc578('0xc')](_0x2be6a7,_0x308eb2)[_0xc578('0xd')](function(_0x2f05c0){logger[_0xc578('0xe')](_0xc578('0xf'),_0x475daa,_0xc578('0x10'));logger[_0xc578('0x11')]('AnalyticExtractedReport,\x20%s,\x20%s,\x20%s',_0x475daa,_0xc578('0x10'),JSON[_0xc578('0x12')](_0x2f05c0));if(_0x2f05c0['error']){if(_0x2f05c0['error'][_0xc578('0x13')]===0x1f4){logger['error'](_0xc578('0xf'),_0x475daa,_0x2f05c0['error']['message']);return _0x5b667c(_0x2f05c0[_0xc578('0x14')][_0xc578('0x15')]);}logger[_0xc578('0x14')](_0xc578('0xf'),_0x475daa,_0x2f05c0[_0xc578('0x14')][_0xc578('0x15')]);return _0xe8792a(_0x2f05c0['error'][_0xc578('0x15')]);}else{logger[_0xc578('0xe')](_0xc578('0xf'),_0x475daa,_0xc578('0x10'));_0xe8792a(_0x2f05c0['result']['message']);}})['catch'](function(_0x688791){logger[_0xc578('0x14')](_0xc578('0xf'),_0x475daa,_0x688791);_0x5b667c(_0x688791);});});}
\ No newline at end of file
index 452014b..cea8408 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82c1=['/:id','isAuthenticated','show','download','post','put','update','delete','destroy','exports','multer','util','path','Router','../../components/interaction/service','./analyticExtractedReport.controller','get','index'];(function(_0x864d71,_0x29fc0e){var _0x16995b=function(_0x3afb8e){while(--_0x3afb8e){_0x864d71['push'](_0x864d71['shift']());}};_0x16995b(++_0x29fc0e);}(_0x82c1,0x9a));var _0x182c=function(_0x40e4b9,_0x26c18e){_0x40e4b9=_0x40e4b9-0x0;var _0x240100=_0x82c1[_0x40e4b9];return _0x240100;};'use strict';var multer=require(_0x182c('0x0'));var util=require(_0x182c('0x1'));var path=require(_0x182c('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x182c('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x182c('0x4'));var config=require('../../config/environment');var controller=require(_0x182c('0x5'));router[_0x182c('0x6')]('/',auth['isAuthenticated'](),controller[_0x182c('0x7')]);router['get'](_0x182c('0x8'),auth[_0x182c('0x9')](),controller[_0x182c('0xa')]);router[_0x182c('0x6')]('/:id/download',auth[_0x182c('0x9')](),controller[_0x182c('0xb')]);router[_0x182c('0xc')]('/',auth[_0x182c('0x9')](),controller['create']);router[_0x182c('0xd')](_0x182c('0x8'),auth[_0x182c('0x9')](),controller[_0x182c('0xe')]);router[_0x182c('0xf')]('/:id',auth[_0x182c('0x9')](),controller[_0x182c('0x10')]);module[_0x182c('0x11')]=router;
\ No newline at end of file
+var _0x5c53=['exports','multer','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticExtractedReport.controller','get','isAuthenticated','index','/:id','/:id/download','download','post','create','update','delete','destroy'];(function(_0x5592bd,_0x15ac28){var _0x2ab33d=function(_0xca5c8d){while(--_0xca5c8d){_0x5592bd['push'](_0x5592bd['shift']());}};_0x2ab33d(++_0x15ac28);}(_0x5c53,0x1b9));var _0x35c5=function(_0x501148,_0x3cfffe){_0x501148=_0x501148-0x0;var _0x2a1d91=_0x5c53[_0x501148];return _0x2a1d91;};'use strict';var multer=require(_0x35c5('0x0'));var util=require('util');var path=require(_0x35c5('0x1'));var timeout=require(_0x35c5('0x2'));var express=require('express');var router=express[_0x35c5('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x35c5('0x4'));var interaction=require(_0x35c5('0x5'));var config=require(_0x35c5('0x6'));var controller=require(_0x35c5('0x7'));router[_0x35c5('0x8')]('/',auth[_0x35c5('0x9')](),controller[_0x35c5('0xa')]);router[_0x35c5('0x8')](_0x35c5('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x35c5('0x8')](_0x35c5('0xc'),auth[_0x35c5('0x9')](),controller[_0x35c5('0xd')]);router[_0x35c5('0xe')]('/',auth[_0x35c5('0x9')](),controller[_0x35c5('0xf')]);router['put'](_0x35c5('0xb'),auth[_0x35c5('0x9')](),controller[_0x35c5('0x10')]);router[_0x35c5('0x11')](_0x35c5('0xb'),auth['isAuthenticated'](),controller[_0x35c5('0x12')]);module[_0x35c5('0x13')]=router;
\ No newline at end of file
index 5a0963a..0970536 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7538=['exports','STRING','BOOLEAN','sequelize'];(function(_0x37ae14,_0x56ab35){var _0x4ae5bb=function(_0x38d48b){while(--_0x38d48b){_0x37ae14['push'](_0x37ae14['shift']());}};_0x4ae5bb(++_0x56ab35);}(_0x7538,0x1a7));var _0x8753=function(_0x276f6d,_0x10a50e){_0x276f6d=_0x276f6d-0x0;var _0xda31b5=_0x7538[_0x276f6d];return _0xda31b5;};'use strict';var Sequelize=require(_0x8753('0x0'));module[_0x8753('0x1')]={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize[_0x8753('0x2')]},'function':{'type':Sequelize[_0x8753('0x2')]},'format':{'type':Sequelize[_0x8753('0x2')]},'groupBy':{'type':Sequelize[_0x8753('0x3')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x8753('0x2')]},'custom':{'type':Sequelize[_0x8753('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xbc80=['TEXT','STRING','BOOLEAN','sequelize','exports'];(function(_0x126b14,_0x47a656){var _0xf42030=function(_0x38f89f){while(--_0x38f89f){_0x126b14['push'](_0x126b14['shift']());}};_0xf42030(++_0x47a656);}(_0xbc80,0xad));var _0x0bc8=function(_0x20ef64,_0x4a8fe9){_0x20ef64=_0x20ef64-0x0;var _0x3707d8=_0xbc80[_0x20ef64];return _0x3707d8;};'use strict';var Sequelize=require(_0x0bc8('0x0'));module[_0x0bc8('0x1')]={'field':{'type':Sequelize[_0x0bc8('0x2')]},'alias':{'type':Sequelize[_0x0bc8('0x3')]},'function':{'type':Sequelize[_0x0bc8('0x3')]},'format':{'type':Sequelize[_0x0bc8('0x3')]},'groupBy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'orderBy':{'type':Sequelize['STRING']},'custom':{'type':Sequelize[_0x0bc8('0x4')],'defaultValue':![]}};
\ No newline at end of file
index 9c22b06..d78465d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x815f=['findAll','rows','catch','show','params','find','create','body','destroy','bulkDestroy','ids','addFields','AnalyticCustomReport','findOne','CustomReportId','bulkCreate','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','update','then','end','error','stack','name','send','map','AnalyticFieldReport','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','includeAll','include'];(function(_0x25162c,_0x20ce2b){var _0x304133=function(_0x27094d){while(--_0x27094d){_0x25162c['push'](_0x25162c['shift']());}};_0x304133(++_0x20ce2b);}(_0x815f,0x150));var _0xf815=function(_0x147078,_0x4e509c){_0x147078=_0x147078-0x0;var _0x2d2f5c=_0x815f[_0x147078];return _0x2d2f5c;};'use strict';var emlformat=require(_0xf815('0x0'));var rimraf=require(_0xf815('0x1'));var zipdir=require(_0xf815('0x2'));var jsonpatch=require(_0xf815('0x3'));var rp=require('request-promise');var moment=require(_0xf815('0x4'));var BPromise=require(_0xf815('0x5'));var Mustache=require('mustache');var util=require(_0xf815('0x6'));var path=require(_0xf815('0x7'));var sox=require(_0xf815('0x8'));var csv=require(_0xf815('0x9'));var ejs=require(_0xf815('0xa'));var fs=require('fs');var fs_extra=require(_0xf815('0xb'));var _=require(_0xf815('0xc'));var squel=require('squel');var crypto=require(_0xf815('0xd'));var jsforce=require(_0xf815('0xe'));var deskjs=require(_0xf815('0xf'));var toCsv=require(_0xf815('0x9'));var querystring=require(_0xf815('0x10'));var Papa=require(_0xf815('0x11'));var Redis=require(_0xf815('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xf815('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf815('0x14'));var logger=require('../../config/logger')(_0xf815('0x15'));var utils=require(_0xf815('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xf815('0x17'));var db=require(_0xf815('0x18'))['db'];function respondWithStatusCode(_0xb59a2d,_0x277675){_0x277675=_0x277675||0xcc;return function(_0x2f6918){if(_0x2f6918){return _0xb59a2d['sendStatus'](_0x277675);}return _0xb59a2d['status'](_0x277675)['end']();};}function respondWithResult(_0x44b809,_0xd48d6c){_0xd48d6c=_0xd48d6c||0xc8;return function(_0xacbf83){if(_0xacbf83){return _0x44b809[_0xf815('0x19')](_0xd48d6c)['json'](_0xacbf83);}};}function respondWithFilteredResult(_0x5f0d00,_0x1a96ab){return function(_0x127e92){if(_0x127e92){var _0xa4d05a=typeof _0x1a96ab['offset']===_0xf815('0x1a')&&typeof _0x1a96ab[_0xf815('0x1b')]===_0xf815('0x1a');var _0x14851e=_0x127e92[_0xf815('0x1c')];var _0x599b1e=_0xa4d05a?0x0:_0x1a96ab[_0xf815('0x1d')];var _0x1cf01f=_0xa4d05a?_0x127e92[_0xf815('0x1c')]:_0x1a96ab[_0xf815('0x1d')]+_0x1a96ab['limit'];var _0x577d8d;if(_0x1cf01f>=_0x14851e){_0x1cf01f=_0x14851e;_0x577d8d=0xc8;}else{_0x577d8d=0xce;}_0x5f0d00[_0xf815('0x19')](_0x577d8d);return _0x5f0d00[_0xf815('0x1e')](_0xf815('0x1f'),_0x599b1e+'-'+_0x1cf01f+'/'+_0x14851e)[_0xf815('0x20')](_0x127e92);}return null;};}function patchUpdates(_0xfa572){return function(_0x202a36){try{jsonpatch[_0xf815('0x21')](_0x202a36,_0xfa572,!![]);}catch(_0x1f9b1a){return BPromise[_0xf815('0x22')](_0x1f9b1a);}return _0x202a36['save']();};}function saveUpdates(_0x15f6cb,_0x3859b){return function(_0x79ad0d){if(_0x79ad0d){return _0x79ad0d[_0xf815('0x23')](_0x15f6cb)[_0xf815('0x24')](function(_0x5e665c){return _0x5e665c;});}return null;};}function removeEntity(_0x1ac9f1,_0x370aab){return function(_0x3f27ad){if(_0x3f27ad){return _0x3f27ad['destroy']()['then'](function(){_0x1ac9f1[_0xf815('0x19')](0xcc)[_0xf815('0x25')]();});}};}function handleEntityNotFound(_0x18eb4a,_0x1194d1){return function(_0x2223b3){if(!_0x2223b3){_0x18eb4a['sendStatus'](0x194);}return _0x2223b3;};}function handleError(_0xa8726f,_0x3ece20){_0x3ece20=_0x3ece20||0x1f4;return function(_0x439b52){logger[_0xf815('0x26')](_0x439b52[_0xf815('0x27')]);if(_0x439b52[_0xf815('0x28')]){delete _0x439b52[_0xf815('0x28')];}_0xa8726f[_0xf815('0x19')](_0x3ece20)[_0xf815('0x29')](_0x439b52);};}exports['index']=function(_0x504764,_0xc6788f){var _0x28a02f={},_0x5c49cc={},_0x32d34a={'count':0x0,'rows':[]};var _0x5ec0e7=_[_0xf815('0x2a')](db[_0xf815('0x2b')][_0xf815('0x2c')],function(_0x2b7a2c){return{'name':_0x2b7a2c[_0xf815('0x2d')],'type':_0x2b7a2c['type']['key']};});_0x5c49cc[_0xf815('0x2e')]=_[_0xf815('0x2a')](_0x5ec0e7,_0xf815('0x28'));_0x5c49cc[_0xf815('0x2f')]=_[_0xf815('0x30')](_0x504764['query']);_0x5c49cc[_0xf815('0x31')]=_[_0xf815('0x32')](_0x5c49cc[_0xf815('0x2e')],_0x5c49cc[_0xf815('0x2f')]);_0x28a02f[_0xf815('0x33')]=_[_0xf815('0x32')](_0x5c49cc[_0xf815('0x2e')],qs[_0xf815('0x34')](_0x504764[_0xf815('0x2f')][_0xf815('0x34')]));_0x28a02f[_0xf815('0x33')]=_0x28a02f[_0xf815('0x33')][_0xf815('0x35')]?_0x28a02f[_0xf815('0x33')]:_0x5c49cc['model'];if(!_0x504764[_0xf815('0x2f')][_0xf815('0x36')](_0xf815('0x37'))){_0x28a02f[_0xf815('0x1b')]=qs[_0xf815('0x1b')](_0x504764[_0xf815('0x2f')][_0xf815('0x1b')]);_0x28a02f[_0xf815('0x1d')]=qs['offset'](_0x504764[_0xf815('0x2f')]['offset']);}_0x28a02f['order']=qs[_0xf815('0x38')](_0x504764['query'][_0xf815('0x38')]);_0x28a02f[_0xf815('0x39')]=qs[_0xf815('0x31')](_[_0xf815('0x3a')](_0x504764[_0xf815('0x2f')],_0x5c49cc['filters']),_0x5ec0e7);if(_0x504764[_0xf815('0x2f')][_0xf815('0x3b')]){_0x28a02f[_0xf815('0x39')]=_['merge'](_0x28a02f[_0xf815('0x39')],{'$or':_[_0xf815('0x2a')](_0x5ec0e7,function(_0x45e060){if(_0x45e060['type']!==_0xf815('0x3c')){var _0xc30239={};_0xc30239[_0x45e060[_0xf815('0x28')]]={'$like':'%'+_0x504764[_0xf815('0x2f')]['filter']+'%'};return _0xc30239;}})});}_0x28a02f=_[_0xf815('0x3d')]({},_0x28a02f,_0x504764['options']);var _0xd17e9f={'where':_0x28a02f[_0xf815('0x39')]};return db[_0xf815('0x2b')][_0xf815('0x1c')](_0xd17e9f)[_0xf815('0x24')](function(_0x20b041){_0x32d34a['count']=_0x20b041;if(_0x504764[_0xf815('0x2f')][_0xf815('0x3e')]){_0x28a02f[_0xf815('0x3f')]=[{'all':!![]}];}return db[_0xf815('0x2b')][_0xf815('0x40')](_0x28a02f);})[_0xf815('0x24')](function(_0x4a368b){_0x32d34a[_0xf815('0x41')]=_0x4a368b;return _0x32d34a;})[_0xf815('0x24')](respondWithFilteredResult(_0xc6788f,_0x28a02f))[_0xf815('0x42')](handleError(_0xc6788f,null));};exports[_0xf815('0x43')]=function(_0x4cd922,_0x97edab){var _0x53c070={'raw':![],'where':{'id':_0x4cd922[_0xf815('0x44')]['id']}},_0x29a97a={};_0x29a97a['model']=_[_0xf815('0x30')](db[_0xf815('0x2b')][_0xf815('0x2c')]);_0x29a97a[_0xf815('0x2f')]=_[_0xf815('0x30')](_0x4cd922[_0xf815('0x2f')]);_0x29a97a['filters']=_[_0xf815('0x32')](_0x29a97a[_0xf815('0x2e')],_0x29a97a[_0xf815('0x2f')]);_0x53c070[_0xf815('0x33')]=_[_0xf815('0x32')](_0x29a97a[_0xf815('0x2e')],qs[_0xf815('0x34')](_0x4cd922['query']['fields']));_0x53c070[_0xf815('0x33')]=_0x53c070[_0xf815('0x33')]['length']?_0x53c070[_0xf815('0x33')]:_0x29a97a[_0xf815('0x2e')];if(_0x4cd922[_0xf815('0x2f')][_0xf815('0x3e')]){_0x53c070['include']=[{'all':!![]}];}_0x53c070=_['merge']({},_0x53c070,_0x4cd922['options']);return db[_0xf815('0x2b')][_0xf815('0x45')](_0x53c070)[_0xf815('0x24')](handleEntityNotFound(_0x97edab,null))[_0xf815('0x24')](respondWithResult(_0x97edab,null))['catch'](handleError(_0x97edab,null));};exports[_0xf815('0x46')]=function(_0x3f676f,_0x1a2f3e){return db[_0xf815('0x2b')][_0xf815('0x46')](_0x3f676f[_0xf815('0x47')],{})[_0xf815('0x24')](respondWithResult(_0x1a2f3e,0xc9))[_0xf815('0x42')](handleError(_0x1a2f3e,null));};exports['bulkCreate']=function(_0x22bcb5,_0x1abcdb){return db[_0xf815('0x2b')]['bulkCreate'](_0x22bcb5[_0xf815('0x47')],{'raw':![],'individualHooks':!![]})[_0xf815('0x24')](respondWithResult(_0x1abcdb,0xc9))[_0xf815('0x42')](handleError(_0x1abcdb,null));};exports[_0xf815('0x23')]=function(_0x56e7d4,_0x3d43b9){if(_0x56e7d4['body']['id']){delete _0x56e7d4['body']['id'];}return db[_0xf815('0x2b')][_0xf815('0x45')]({'where':{'id':_0x56e7d4[_0xf815('0x44')]['id']}})[_0xf815('0x24')](handleEntityNotFound(_0x3d43b9,null))[_0xf815('0x24')](saveUpdates(_0x56e7d4['body'],null))[_0xf815('0x24')](respondWithResult(_0x3d43b9,null))[_0xf815('0x42')](handleError(_0x3d43b9,null));};exports[_0xf815('0x48')]=function(_0x5107e5,_0x2ef987){return db[_0xf815('0x2b')][_0xf815('0x45')]({'where':{'id':_0x5107e5[_0xf815('0x44')]['id']}})[_0xf815('0x24')](handleEntityNotFound(_0x2ef987,null))[_0xf815('0x24')](removeEntity(_0x2ef987,null))[_0xf815('0x42')](handleError(_0x2ef987,null));};exports[_0xf815('0x49')]=function(_0x41f1a2,_0x59e7c9){return db[_0xf815('0x2b')][_0xf815('0x48')]({'where':{'id':_0x41f1a2[_0xf815('0x2f')][_0xf815('0x4a')]||[]},'raw':![],'individualHooks':!![]})[_0xf815('0x24')](respondWithResult(_0x59e7c9,0xcc))[_0xf815('0x42')](handleError(_0x59e7c9,null));};exports[_0xf815('0x4b')]=function(_0x17e5a5,_0x43d684,_0x5967c8){return db[_0xf815('0x4c')][_0xf815('0x4d')]({'where':{'id':_0x17e5a5[_0xf815('0x44')]['id']}})[_0xf815('0x24')](handleEntityNotFound(_0x43d684,null))[_0xf815('0x24')](function(_0xbb2d2a){if(_0xbb2d2a){return db['sequelize']['transaction'](function(_0x189e52){return db[_0xf815('0x2b')][_0xf815('0x48')]({'where':{'CustomReportId':_0x17e5a5[_0xf815('0x44')]['id']},'transaction':_0x189e52})[_0xf815('0x24')](function(_0x5eec26){var _0x7a3244=_[_0xf815('0x2a')](_0x17e5a5[_0xf815('0x47')],function(_0x5ab0d5){delete _0x5ab0d5['id'];_0x5ab0d5[_0xf815('0x4e')]=_0x17e5a5[_0xf815('0x44')]['id'];return _0x5ab0d5;});return db['AnalyticFieldReport'][_0xf815('0x4f')](_0x7a3244,{'transaction':_0x189e52});});})[_0xf815('0x24')](function(){return db[_0xf815('0x2b')][_0xf815('0x40')]({'where':{'CustomReportId':_0x17e5a5[_0xf815('0x44')]['id']}});});}})['then'](respondWithResult(_0x43d684,null))[_0xf815('0x42')](handleError(_0x43d684,null));};
\ No newline at end of file
+var _0x826e=['hasOwnProperty','nolimit','order','sort','where','pick','map','type','VIRTUAL','merge','options','count','includeAll','include','findAll','rows','params','rawAttributes','fields','find','catch','create','body','bulkCreate','update','ids','addFields','AnalyticCustomReport','findOne','sequelize','transaction','CustomReportId','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','then','destroy','stack','name','send','AnalyticFieldReport','key','keys','query','filters','intersection','attributes','model','length'];(function(_0x2dfffc,_0x3411af){var _0xf9d20d=function(_0x137b78){while(--_0x137b78){_0x2dfffc['push'](_0x2dfffc['shift']());}};_0xf9d20d(++_0x3411af);}(_0x826e,0x170));var _0xe826=function(_0x1ae005,_0xdbce79){_0x1ae005=_0x1ae005-0x0;var _0x35b3c2=_0x826e[_0x1ae005];return _0x35b3c2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe826('0x0'));var zipdir=require(_0xe826('0x1'));var jsonpatch=require(_0xe826('0x2'));var rp=require(_0xe826('0x3'));var moment=require(_0xe826('0x4'));var BPromise=require(_0xe826('0x5'));var Mustache=require(_0xe826('0x6'));var util=require(_0xe826('0x7'));var path=require(_0xe826('0x8'));var sox=require(_0xe826('0x9'));var csv=require(_0xe826('0xa'));var ejs=require(_0xe826('0xb'));var fs=require('fs');var fs_extra=require(_0xe826('0xc'));var _=require('lodash');var squel=require(_0xe826('0xd'));var crypto=require(_0xe826('0xe'));var jsforce=require(_0xe826('0xf'));var deskjs=require(_0xe826('0x10'));var toCsv=require(_0xe826('0xa'));var querystring=require(_0xe826('0x11'));var Papa=require(_0xe826('0x12'));var Redis=require('ioredis');var authService=require(_0xe826('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xe826('0x14'));var hardwareService=require(_0xe826('0x15'));var logger=require(_0xe826('0x16'))(_0xe826('0x17'));var utils=require(_0xe826('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xe826('0x19'))['db'];function respondWithStatusCode(_0x486bf3,_0x363a1c){_0x363a1c=_0x363a1c||0xcc;return function(_0xf0bac6){if(_0xf0bac6){return _0x486bf3[_0xe826('0x1a')](_0x363a1c);}return _0x486bf3[_0xe826('0x1b')](_0x363a1c)[_0xe826('0x1c')]();};}function respondWithResult(_0x26a733,_0x230aa0){_0x230aa0=_0x230aa0||0xc8;return function(_0x50aad6){if(_0x50aad6){return _0x26a733[_0xe826('0x1b')](_0x230aa0)[_0xe826('0x1d')](_0x50aad6);}};}function respondWithFilteredResult(_0x48234f,_0x5139db){return function(_0x3d3580){if(_0x3d3580){var _0x2cd4b1=typeof _0x5139db[_0xe826('0x1e')]===_0xe826('0x1f')&&typeof _0x5139db[_0xe826('0x20')]===_0xe826('0x1f');var _0x5cc375=_0x3d3580['count'];var _0x370bd3=_0x2cd4b1?0x0:_0x5139db[_0xe826('0x1e')];var _0x52e860=_0x2cd4b1?_0x3d3580['count']:_0x5139db['offset']+_0x5139db['limit'];var _0xbf52ff;if(_0x52e860>=_0x5cc375){_0x52e860=_0x5cc375;_0xbf52ff=0xc8;}else{_0xbf52ff=0xce;}_0x48234f[_0xe826('0x1b')](_0xbf52ff);return _0x48234f[_0xe826('0x21')](_0xe826('0x22'),_0x370bd3+'-'+_0x52e860+'/'+_0x5cc375)[_0xe826('0x1d')](_0x3d3580);}return null;};}function patchUpdates(_0x1e5f03){return function(_0x5ced23){try{jsonpatch[_0xe826('0x23')](_0x5ced23,_0x1e5f03,!![]);}catch(_0x43b404){return BPromise[_0xe826('0x24')](_0x43b404);}return _0x5ced23[_0xe826('0x25')]();};}function saveUpdates(_0x128624,_0x54afc2){return function(_0x1e1193){if(_0x1e1193){return _0x1e1193['update'](_0x128624)[_0xe826('0x26')](function(_0x872d91){return _0x872d91;});}return null;};}function removeEntity(_0x48528d,_0x27b38b){return function(_0x4d4362){if(_0x4d4362){return _0x4d4362[_0xe826('0x27')]()[_0xe826('0x26')](function(){_0x48528d['status'](0xcc)[_0xe826('0x1c')]();});}};}function handleEntityNotFound(_0x3a5106,_0x4828a7){return function(_0x49ed7e){if(!_0x49ed7e){_0x3a5106[_0xe826('0x1a')](0x194);}return _0x49ed7e;};}function handleError(_0x153a63,_0x549e2b){_0x549e2b=_0x549e2b||0x1f4;return function(_0x28c5d2){logger['error'](_0x28c5d2[_0xe826('0x28')]);if(_0x28c5d2[_0xe826('0x29')]){delete _0x28c5d2['name'];}_0x153a63['status'](_0x549e2b)[_0xe826('0x2a')](_0x28c5d2);};}exports['index']=function(_0x93fe47,_0x16b8db){var _0x5a5753={},_0x286f96={},_0x2f4986={'count':0x0,'rows':[]};var _0x5ee9d0=_['map'](db[_0xe826('0x2b')]['rawAttributes'],function(_0x36da8f){return{'name':_0x36da8f['fieldName'],'type':_0x36da8f['type'][_0xe826('0x2c')]};});_0x286f96['model']=_['map'](_0x5ee9d0,_0xe826('0x29'));_0x286f96['query']=_[_0xe826('0x2d')](_0x93fe47[_0xe826('0x2e')]);_0x286f96[_0xe826('0x2f')]=_[_0xe826('0x30')](_0x286f96['model'],_0x286f96[_0xe826('0x2e')]);_0x5a5753[_0xe826('0x31')]=_[_0xe826('0x30')](_0x286f96[_0xe826('0x32')],qs['fields'](_0x93fe47[_0xe826('0x2e')]['fields']));_0x5a5753[_0xe826('0x31')]=_0x5a5753['attributes'][_0xe826('0x33')]?_0x5a5753[_0xe826('0x31')]:_0x286f96['model'];if(!_0x93fe47[_0xe826('0x2e')][_0xe826('0x34')](_0xe826('0x35'))){_0x5a5753['limit']=qs[_0xe826('0x20')](_0x93fe47['query'][_0xe826('0x20')]);_0x5a5753[_0xe826('0x1e')]=qs[_0xe826('0x1e')](_0x93fe47['query']['offset']);}_0x5a5753[_0xe826('0x36')]=qs[_0xe826('0x37')](_0x93fe47['query'][_0xe826('0x37')]);_0x5a5753[_0xe826('0x38')]=qs[_0xe826('0x2f')](_[_0xe826('0x39')](_0x93fe47[_0xe826('0x2e')],_0x286f96[_0xe826('0x2f')]),_0x5ee9d0);if(_0x93fe47[_0xe826('0x2e')]['filter']){_0x5a5753['where']=_['merge'](_0x5a5753['where'],{'$or':_[_0xe826('0x3a')](_0x5ee9d0,function(_0x41a0dd){if(_0x41a0dd[_0xe826('0x3b')]!==_0xe826('0x3c')){var _0x85ebf9={};_0x85ebf9[_0x41a0dd[_0xe826('0x29')]]={'$like':'%'+_0x93fe47[_0xe826('0x2e')]['filter']+'%'};return _0x85ebf9;}})});}_0x5a5753=_[_0xe826('0x3d')]({},_0x5a5753,_0x93fe47[_0xe826('0x3e')]);var _0x2c905b={'where':_0x5a5753[_0xe826('0x38')]};return db[_0xe826('0x2b')][_0xe826('0x3f')](_0x2c905b)['then'](function(_0x480db1){_0x2f4986['count']=_0x480db1;if(_0x93fe47['query'][_0xe826('0x40')]){_0x5a5753[_0xe826('0x41')]=[{'all':!![]}];}return db[_0xe826('0x2b')][_0xe826('0x42')](_0x5a5753);})[_0xe826('0x26')](function(_0x5ccc1c){_0x2f4986[_0xe826('0x43')]=_0x5ccc1c;return _0x2f4986;})['then'](respondWithFilteredResult(_0x16b8db,_0x5a5753))['catch'](handleError(_0x16b8db,null));};exports['show']=function(_0x15eaed,_0x458f51){var _0x933cbe={'raw':![],'where':{'id':_0x15eaed[_0xe826('0x44')]['id']}},_0x1b5aa5={};_0x1b5aa5[_0xe826('0x32')]=_['keys'](db['AnalyticFieldReport'][_0xe826('0x45')]);_0x1b5aa5['query']=_['keys'](_0x15eaed[_0xe826('0x2e')]);_0x1b5aa5['filters']=_['intersection'](_0x1b5aa5[_0xe826('0x32')],_0x1b5aa5['query']);_0x933cbe['attributes']=_['intersection'](_0x1b5aa5[_0xe826('0x32')],qs[_0xe826('0x46')](_0x15eaed['query'][_0xe826('0x46')]));_0x933cbe[_0xe826('0x31')]=_0x933cbe['attributes']['length']?_0x933cbe[_0xe826('0x31')]:_0x1b5aa5[_0xe826('0x32')];if(_0x15eaed['query'][_0xe826('0x40')]){_0x933cbe['include']=[{'all':!![]}];}_0x933cbe=_[_0xe826('0x3d')]({},_0x933cbe,_0x15eaed[_0xe826('0x3e')]);return db[_0xe826('0x2b')][_0xe826('0x47')](_0x933cbe)['then'](handleEntityNotFound(_0x458f51,null))[_0xe826('0x26')](respondWithResult(_0x458f51,null))[_0xe826('0x48')](handleError(_0x458f51,null));};exports[_0xe826('0x49')]=function(_0x1b85fb,_0x2dd090){return db[_0xe826('0x2b')]['create'](_0x1b85fb[_0xe826('0x4a')],{})[_0xe826('0x26')](respondWithResult(_0x2dd090,0xc9))[_0xe826('0x48')](handleError(_0x2dd090,null));};exports[_0xe826('0x4b')]=function(_0x3a4507,_0x3b2001){return db[_0xe826('0x2b')][_0xe826('0x4b')](_0x3a4507[_0xe826('0x4a')],{'raw':![],'individualHooks':!![]})[_0xe826('0x26')](respondWithResult(_0x3b2001,0xc9))[_0xe826('0x48')](handleError(_0x3b2001,null));};exports[_0xe826('0x4c')]=function(_0x366dd2,_0x3806fe){if(_0x366dd2[_0xe826('0x4a')]['id']){delete _0x366dd2['body']['id'];}return db[_0xe826('0x2b')][_0xe826('0x47')]({'where':{'id':_0x366dd2[_0xe826('0x44')]['id']}})[_0xe826('0x26')](handleEntityNotFound(_0x3806fe,null))['then'](saveUpdates(_0x366dd2[_0xe826('0x4a')],null))['then'](respondWithResult(_0x3806fe,null))[_0xe826('0x48')](handleError(_0x3806fe,null));};exports[_0xe826('0x27')]=function(_0x54fef3,_0x14ccd4){return db[_0xe826('0x2b')][_0xe826('0x47')]({'where':{'id':_0x54fef3['params']['id']}})[_0xe826('0x26')](handleEntityNotFound(_0x14ccd4,null))['then'](removeEntity(_0x14ccd4,null))[_0xe826('0x48')](handleError(_0x14ccd4,null));};exports['bulkDestroy']=function(_0x4ce2bc,_0x598271){return db[_0xe826('0x2b')]['destroy']({'where':{'id':_0x4ce2bc[_0xe826('0x2e')][_0xe826('0x4d')]||[]},'raw':![],'individualHooks':!![]})[_0xe826('0x26')](respondWithResult(_0x598271,0xcc))[_0xe826('0x48')](handleError(_0x598271,null));};exports[_0xe826('0x4e')]=function(_0x1e3e58,_0x53c144,_0x4e9b8e){return db[_0xe826('0x4f')][_0xe826('0x50')]({'where':{'id':_0x1e3e58[_0xe826('0x44')]['id']}})[_0xe826('0x26')](handleEntityNotFound(_0x53c144,null))[_0xe826('0x26')](function(_0x98946e){if(_0x98946e){return db[_0xe826('0x51')][_0xe826('0x52')](function(_0x4a00d0){return db[_0xe826('0x2b')]['destroy']({'where':{'CustomReportId':_0x1e3e58[_0xe826('0x44')]['id']},'transaction':_0x4a00d0})[_0xe826('0x26')](function(_0x25fdfc){var _0x1c9f0d=_['map'](_0x1e3e58['body'],function(_0x169fc9){delete _0x169fc9['id'];_0x169fc9[_0xe826('0x53')]=_0x1e3e58[_0xe826('0x44')]['id'];return _0x169fc9;});return db[_0xe826('0x2b')][_0xe826('0x4b')](_0x1c9f0d,{'transaction':_0x4a00d0});});})['then'](function(){return db['AnalyticFieldReport']['findAll']({'where':{'CustomReportId':_0x1e3e58[_0xe826('0x44')]['id']}});});}})[_0xe826('0x26')](respondWithResult(_0x53c144,null))[_0xe826('0x48')](handleError(_0x53c144,null));};
\ No newline at end of file
index e22f8c6..f5fe583 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0838=['util','../../config/logger','moment','bluebird','path','./analyticFieldReport.attributes','define','AnalyticFieldReport','analytics_report_fields','lodash'];(function(_0x218d12,_0x140854){var _0x38cb27=function(_0x4e5a49){while(--_0x4e5a49){_0x218d12['push'](_0x218d12['shift']());}};_0x38cb27(++_0x140854);}(_0x0838,0x199));var _0x8083=function(_0x2f2f30,_0x582bd6){_0x2f2f30=_0x2f2f30-0x0;var _0x4119c0=_0x0838[_0x2f2f30];return _0x4119c0;};'use strict';var _=require(_0x8083('0x0'));var util=require(_0x8083('0x1'));var logger=require(_0x8083('0x2'))('api');var moment=require(_0x8083('0x3'));var BPromise=require(_0x8083('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8083('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x8083('0x6'));module['exports']=function(_0x51bda0,_0x28b5a9){return _0x51bda0[_0x8083('0x7')](_0x8083('0x8'),attributes,{'tableName':_0x8083('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x122d=['./analyticFieldReport.attributes','exports','AnalyticFieldReport','analytics_report_fields','lodash','../../config/logger','api','moment','request-promise','rimraf','../../config/environment'];(function(_0x293c95,_0x3f6393){var _0x986ea0=function(_0x4f3397){while(--_0x4f3397){_0x293c95['push'](_0x293c95['shift']());}};_0x986ea0(++_0x3f6393);}(_0x122d,0xca));var _0xd122=function(_0x503950,_0x5022eb){_0x503950=_0x503950-0x0;var _0x1657a9=_0x122d[_0x503950];return _0x1657a9;};'use strict';var _=require(_0xd122('0x0'));var util=require('util');var logger=require(_0xd122('0x1'))(_0xd122('0x2'));var moment=require(_0xd122('0x3'));var BPromise=require('bluebird');var rp=require(_0xd122('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd122('0x5'));var config=require(_0xd122('0x6'));var attributes=require(_0xd122('0x7'));module[_0xd122('0x8')]=function(_0x18fe72,_0x5ac154){return _0x18fe72['define'](_0xd122('0x9'),attributes,{'tableName':_0xd122('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e87931c..506868c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaba=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','debug','stringify','error','message','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0xeaba,0x1c7));var _0xaeab=function(_0xa6cc5c,_0x239c99){_0xa6cc5c=_0xa6cc5c-0x0;var _0x44803d=_0xeaba[_0xa6cc5c];return _0x44803d;};'use strict';var _=require(_0xaeab('0x0'));var util=require(_0xaeab('0x1'));var moment=require(_0xaeab('0x2'));var BPromise=require('bluebird');var rs=require(_0xaeab('0x3'));var fs=require('fs');var Redis=require(_0xaeab('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xaeab('0x5'));var logger=require(_0xaeab('0x6'))(_0xaeab('0x7'));var config=require(_0xaeab('0x8'));var jayson=require(_0xaeab('0x9'));var client=jayson[_0xaeab('0xa')][_0xaeab('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x41e691,_0x5e6133,_0x370947){return new BPromise(function(_0x15af3e,_0x5af31a){return client[_0xaeab('0xc')](_0x41e691,_0x370947)[_0xaeab('0xd')](function(_0x218635){logger[_0xaeab('0xe')](_0xaeab('0xf'),_0x5e6133,'request\x20sent');logger[_0xaeab('0x10')]('AnalyticFieldReport,\x20%s,\x20%s,\x20%s',_0x5e6133,'request\x20sent',JSON[_0xaeab('0x11')](_0x218635));if(_0x218635[_0xaeab('0x12')]){if(_0x218635[_0xaeab('0x12')]['code']===0x1f4){logger[_0xaeab('0x12')](_0xaeab('0xf'),_0x5e6133,_0x218635[_0xaeab('0x12')][_0xaeab('0x13')]);return _0x5af31a(_0x218635['error'][_0xaeab('0x13')]);}logger['error']('AnalyticFieldReport,\x20%s,\x20%s',_0x5e6133,_0x218635['error'][_0xaeab('0x13')]);return _0x15af3e(_0x218635[_0xaeab('0x12')][_0xaeab('0x13')]);}else{logger[_0xaeab('0xe')]('AnalyticFieldReport,\x20%s,\x20%s',_0x5e6133,'request\x20sent');_0x15af3e(_0x218635[_0xaeab('0x14')][_0xaeab('0x13')]);}})[_0xaeab('0x15')](function(_0x151e23){logger[_0xaeab('0x12')](_0xaeab('0xf'),_0x5e6133,_0x151e23);_0x5af31a(_0x151e23);});});}
\ No newline at end of file
+var _0x601e=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','moment','randomstring'];(function(_0x1b1574,_0x5c44d8){var _0x3afd35=function(_0x26e939){while(--_0x26e939){_0x1b1574['push'](_0x1b1574['shift']());}};_0x3afd35(++_0x5c44d8);}(_0x601e,0x1e0));var _0xe601=function(_0x1d0499,_0x23e22f){_0x1d0499=_0x1d0499-0x0;var _0x153fb3=_0x601e[_0x1d0499];return _0x153fb3;};'use strict';var _=require(_0xe601('0x0'));var util=require('util');var moment=require(_0xe601('0x1'));var BPromise=require('bluebird');var rs=require(_0xe601('0x2'));var fs=require('fs');var Redis=require(_0xe601('0x3'));var db=require(_0xe601('0x4'))['db'];var utils=require(_0xe601('0x5'));var logger=require(_0xe601('0x6'))(_0xe601('0x7'));var config=require(_0xe601('0x8'));var jayson=require(_0xe601('0x9'));var client=jayson[_0xe601('0xa')][_0xe601('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4ba00f,_0x1077a5,_0x4b3254){return new BPromise(function(_0x1b603d,_0x125065){return client['request'](_0x4ba00f,_0x4b3254)[_0xe601('0xc')](function(_0xa6fa81){logger[_0xe601('0xd')](_0xe601('0xe'),_0x1077a5,_0xe601('0xf'));logger[_0xe601('0x10')](_0xe601('0x11'),_0x1077a5,_0xe601('0xf'),JSON[_0xe601('0x12')](_0xa6fa81));if(_0xa6fa81[_0xe601('0x13')]){if(_0xa6fa81[_0xe601('0x13')][_0xe601('0x14')]===0x1f4){logger[_0xe601('0x13')](_0xe601('0xe'),_0x1077a5,_0xa6fa81['error'][_0xe601('0x15')]);return _0x125065(_0xa6fa81[_0xe601('0x13')][_0xe601('0x15')]);}logger[_0xe601('0x13')](_0xe601('0xe'),_0x1077a5,_0xa6fa81[_0xe601('0x13')][_0xe601('0x15')]);return _0x1b603d(_0xa6fa81[_0xe601('0x13')][_0xe601('0x15')]);}else{logger[_0xe601('0xd')](_0xe601('0xe'),_0x1077a5,_0xe601('0xf'));_0x1b603d(_0xa6fa81['result']['message']);}})[_0xe601('0x16')](function(_0xb5996b){logger[_0xe601('0x13')](_0xe601('0xe'),_0x1077a5,_0xb5996b);_0x125065(_0xb5996b);});});}
\ No newline at end of file
index e9f52f6..9d78679 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(_0x20d5f6,_0x561836){var _0x11262f=function(_0xf75c57){while(--_0xf75c57){_0x20d5f6['push'](_0x20d5f6['shift']());}};_0x11262f(++_0x561836);}(_0xa9e0,0x123));var _0x0a9e=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xa9e0[_0xae7c2f];return _0x5d7001;};'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(_0x52a22e,_0x25f3ea){var _0x3fdeb0=function(_0x266f7c){while(--_0x266f7c){_0x52a22e['push'](_0x52a22e['shift']());}};_0x3fdeb0(++_0x25f3ea);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xa9e0[_0x4243a3];return _0x1b2a33;};'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 9bcd51a..6382a4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94df=['STRING','name','TEXT','sequelize','exports'];(function(_0x21df63,_0x5b4a72){var _0x3c0835=function(_0xa2cd4c){while(--_0xa2cd4c){_0x21df63['push'](_0x21df63['shift']());}};_0x3c0835(++_0x5b4a72);}(_0x94df,0xa3));var _0xf94d=function(_0x34ada2,_0x543aeb){_0x34ada2=_0x34ada2-0x0;var _0x2bb6c3=_0x94df[_0x34ada2];return _0x2bb6c3;};'use strict';var Sequelize=require(_0xf94d('0x0'));module[_0xf94d('0x1')]={'name':{'type':Sequelize[_0xf94d('0x2')],'allowNull':![],'unique':_0xf94d('0x3')},'table':{'type':Sequelize[_0xf94d('0x2')]},'metric':{'type':Sequelize[_0xf94d('0x4')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2cbd=['exports','name','STRING','TEXT','sequelize'];(function(_0x1988c0,_0x6e5d0a){var _0x5c6be3=function(_0x29e815){while(--_0x29e815){_0x1988c0['push'](_0x1988c0['shift']());}};_0x5c6be3(++_0x6e5d0a);}(_0x2cbd,0x19e));var _0xd2cb=function(_0x3cae69,_0x233c38){_0x3cae69=_0x3cae69-0x0;var _0x3128eb=_0x2cbd[_0x3cae69];return _0x3128eb;};'use strict';var Sequelize=require(_0xd2cb('0x0'));module[_0xd2cb('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xd2cb('0x2')},'table':{'type':Sequelize[_0xd2cb('0x3')]},'metric':{'type':Sequelize[_0xd2cb('0x4')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 15eb4c8..e9d6922 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81bd=['filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','type','VIRTUAL','filter','options','AnalyticMetric','includeAll','include','findAll','rows','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','catch','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','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','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','get','Metrics','stack','name','send','index','map','fieldName','query','keys'];(function(_0x5923f7,_0x1d6fbf){var _0x22b6ab=function(_0x57b016){while(--_0x57b016){_0x5923f7['push'](_0x5923f7['shift']());}};_0x22b6ab(++_0x1d6fbf);}(_0x81bd,0x7c));var _0xd81b=function(_0x331d58,_0x3701d1){_0x331d58=_0x331d58-0x0;var _0x429bff=_0x81bd[_0x331d58];return _0x429bff;};'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'];function respondWithStatusCode(_0x21dfff,_0x57f71d){_0x57f71d=_0x57f71d||0xcc;return function(_0x3f2405){if(_0x3f2405){return _0x21dfff[_0xd81b('0x1b')](_0x57f71d);}return _0x21dfff['status'](_0x57f71d)[_0xd81b('0x1c')]();};}function respondWithResult(_0x47dd04,_0x13dd00){_0x13dd00=_0x13dd00||0xc8;return function(_0x41bf7a){if(_0x41bf7a){return _0x47dd04[_0xd81b('0x1d')](_0x13dd00)[_0xd81b('0x1e')](_0x41bf7a);}};}function respondWithFilteredResult(_0x128162,_0x552215){return function(_0x1c620d){if(_0x1c620d){var _0x27b7a0=typeof _0x552215['offset']===_0xd81b('0x1f')&&typeof _0x552215[_0xd81b('0x20')]===_0xd81b('0x1f');var _0x15e860=_0x1c620d[_0xd81b('0x21')];var _0xc49b8d=_0x27b7a0?0x0:_0x552215[_0xd81b('0x22')];var _0x3d4d34=_0x27b7a0?_0x1c620d[_0xd81b('0x21')]:_0x552215[_0xd81b('0x22')]+_0x552215[_0xd81b('0x20')];var _0x453952;if(_0x3d4d34>=_0x15e860){_0x3d4d34=_0x15e860;_0x453952=0xc8;}else{_0x453952=0xce;}_0x128162[_0xd81b('0x1d')](_0x453952);return _0x128162[_0xd81b('0x23')](_0xd81b('0x24'),_0xc49b8d+'-'+_0x3d4d34+'/'+_0x15e860)[_0xd81b('0x1e')](_0x1c620d);}return null;};}function patchUpdates(_0x5f101a){return function(_0x4d566e){try{jsonpatch[_0xd81b('0x25')](_0x4d566e,_0x5f101a,!![]);}catch(_0x1b7876){return BPromise[_0xd81b('0x26')](_0x1b7876);}return _0x4d566e['save']();};}function saveUpdates(_0x19ed0e,_0x6571a6){return function(_0x542ee2){if(_0x542ee2){return _0x542ee2[_0xd81b('0x27')](_0x19ed0e)[_0xd81b('0x28')](function(_0x1670cd){return _0x1670cd;});}return null;};}function removeEntity(_0x1ad65c,_0x279176){return function(_0xcb4f91){if(_0xcb4f91){return _0xcb4f91[_0xd81b('0x29')]()[_0xd81b('0x28')](function(){var _0x341aec=_0xcb4f91[_0xd81b('0x2a')]({'plain':!![]});var _0x2ccedf=_0xd81b('0x2b');return db['UserProfileResource'][_0xd81b('0x29')]({'where':{'type':_0x2ccedf,'resourceId':_0x341aec['id']}})[_0xd81b('0x28')](function(){return _0xcb4f91;});})[_0xd81b('0x28')](function(){_0x1ad65c[_0xd81b('0x1d')](0xcc)[_0xd81b('0x1c')]();});}};}function handleEntityNotFound(_0x2d0d02,_0x3e28dd){return function(_0x73dc09){if(!_0x73dc09){_0x2d0d02[_0xd81b('0x1b')](0x194);}return _0x73dc09;};}function handleError(_0x483a3d,_0x469cc4){_0x469cc4=_0x469cc4||0x1f4;return function(_0x4e2eff){logger['error'](_0x4e2eff[_0xd81b('0x2c')]);if(_0x4e2eff[_0xd81b('0x2d')]){delete _0x4e2eff['name'];}_0x483a3d['status'](_0x469cc4)[_0xd81b('0x2e')](_0x4e2eff);};}exports[_0xd81b('0x2f')]=function(_0x1b1434,_0x289f54){var _0x1a1572={},_0x4654ba={},_0x5527ed={'count':0x0,'rows':[]};var _0x37d381=_[_0xd81b('0x30')](db['AnalyticMetric']['rawAttributes'],function(_0x165892){return{'name':_0x165892[_0xd81b('0x31')],'type':_0x165892['type']['key']};});_0x4654ba['model']=_[_0xd81b('0x30')](_0x37d381,_0xd81b('0x2d'));_0x4654ba[_0xd81b('0x32')]=_[_0xd81b('0x33')](_0x1b1434[_0xd81b('0x32')]);_0x4654ba[_0xd81b('0x34')]=_[_0xd81b('0x35')](_0x4654ba['model'],_0x4654ba[_0xd81b('0x32')]);_0x1a1572['attributes']=_[_0xd81b('0x35')](_0x4654ba[_0xd81b('0x36')],qs[_0xd81b('0x37')](_0x1b1434[_0xd81b('0x32')][_0xd81b('0x37')]));_0x1a1572[_0xd81b('0x38')]=_0x1a1572[_0xd81b('0x38')][_0xd81b('0x39')]?_0x1a1572[_0xd81b('0x38')]:_0x4654ba[_0xd81b('0x36')];if(!_0x1b1434[_0xd81b('0x32')][_0xd81b('0x3a')](_0xd81b('0x3b'))){_0x1a1572['limit']=qs['limit'](_0x1b1434[_0xd81b('0x32')][_0xd81b('0x20')]);_0x1a1572[_0xd81b('0x22')]=qs['offset'](_0x1b1434[_0xd81b('0x32')][_0xd81b('0x22')]);}_0x1a1572['order']=qs[_0xd81b('0x3c')](_0x1b1434[_0xd81b('0x32')]['sort']);_0x1a1572[_0xd81b('0x3d')]=qs['filters'](_[_0xd81b('0x3e')](_0x1b1434[_0xd81b('0x32')],_0x4654ba[_0xd81b('0x34')]),_0x37d381);if(_0x1b1434[_0xd81b('0x32')]['filter']){_0x1a1572[_0xd81b('0x3d')]=_[_0xd81b('0x3f')](_0x1a1572[_0xd81b('0x3d')],{'$or':_[_0xd81b('0x30')](_0x37d381,function(_0x3abd60){if(_0x3abd60[_0xd81b('0x40')]!==_0xd81b('0x41')){var _0x532ada={};_0x532ada[_0x3abd60[_0xd81b('0x2d')]]={'$like':'%'+_0x1b1434[_0xd81b('0x32')][_0xd81b('0x42')]+'%'};return _0x532ada;}})});}_0x1a1572=_['merge']({},_0x1a1572,_0x1b1434[_0xd81b('0x43')]);var _0x3a05f4={'where':_0x1a1572[_0xd81b('0x3d')]};return db[_0xd81b('0x44')][_0xd81b('0x21')](_0x3a05f4)['then'](function(_0x3dfba7){_0x5527ed[_0xd81b('0x21')]=_0x3dfba7;if(_0x1b1434[_0xd81b('0x32')][_0xd81b('0x45')]){_0x1a1572[_0xd81b('0x46')]=[{'all':!![]}];}return db[_0xd81b('0x44')][_0xd81b('0x47')](_0x1a1572);})[_0xd81b('0x28')](function(_0x4405a8){_0x5527ed[_0xd81b('0x48')]=_0x4405a8;return _0x5527ed;})[_0xd81b('0x28')](respondWithFilteredResult(_0x289f54,_0x1a1572))['catch'](handleError(_0x289f54,null));};exports[_0xd81b('0x49')]=function(_0x2778b3,_0x25824e){var _0xa5e391={'raw':!![],'where':{'id':_0x2778b3[_0xd81b('0x4a')]['id']}},_0x1e6654={};_0x1e6654[_0xd81b('0x36')]=_[_0xd81b('0x33')](db['AnalyticMetric']['rawAttributes']);_0x1e6654[_0xd81b('0x32')]=_[_0xd81b('0x33')](_0x2778b3[_0xd81b('0x32')]);_0x1e6654[_0xd81b('0x34')]=_[_0xd81b('0x35')](_0x1e6654[_0xd81b('0x36')],_0x1e6654[_0xd81b('0x32')]);_0xa5e391[_0xd81b('0x38')]=_[_0xd81b('0x35')](_0x1e6654[_0xd81b('0x36')],qs[_0xd81b('0x37')](_0x2778b3[_0xd81b('0x32')]['fields']));_0xa5e391[_0xd81b('0x38')]=_0xa5e391[_0xd81b('0x38')][_0xd81b('0x39')]?_0xa5e391[_0xd81b('0x38')]:_0x1e6654[_0xd81b('0x36')];if(_0x2778b3[_0xd81b('0x32')][_0xd81b('0x45')]){_0xa5e391[_0xd81b('0x46')]=[{'all':!![]}];}_0xa5e391=_[_0xd81b('0x3f')]({},_0xa5e391,_0x2778b3['options']);return db[_0xd81b('0x44')][_0xd81b('0x4b')](_0xa5e391)[_0xd81b('0x28')](handleEntityNotFound(_0x25824e,null))[_0xd81b('0x28')](respondWithResult(_0x25824e,null))['catch'](handleError(_0x25824e,null));};exports[_0xd81b('0x4c')]=function(_0x151127,_0x15030b){return db[_0xd81b('0x44')][_0xd81b('0x4c')](_0x151127[_0xd81b('0x4d')],{})[_0xd81b('0x28')](function(_0x43d7ce){var _0x133a76=_0x151127['user']['get']({'plain':!![]});if(!_0x133a76)throw new Error(_0xd81b('0x4e'));if(_0x133a76[_0xd81b('0x4f')]===_0xd81b('0x50')){var _0x4da281=_0x43d7ce[_0xd81b('0x2a')]({'plain':!![]});var _0x3d6ab3=_0xd81b('0x2b');return db[_0xd81b('0x51')]['find']({'where':{'name':_0x3d6ab3,'userProfileId':_0x133a76[_0xd81b('0x52')]},'raw':!![]})[_0xd81b('0x28')](function(_0x1b523c){if(_0x1b523c&&_0x1b523c[_0xd81b('0x53')]===0x0){return db[_0xd81b('0x54')]['create']({'name':_0x4da281[_0xd81b('0x2d')],'resourceId':_0x4da281['id'],'type':_0x1b523c[_0xd81b('0x2d')],'sectionId':_0x1b523c['id']},{})['then'](function(){return _0x43d7ce;});}else{return _0x43d7ce;}})[_0xd81b('0x55')](function(_0x315bd5){logger[_0xd81b('0x56')](_0xd81b('0x57'),_0x315bd5);throw _0x315bd5;});}return _0x43d7ce;})[_0xd81b('0x28')](respondWithResult(_0x15030b,0xc9))[_0xd81b('0x55')](handleError(_0x15030b,null));};exports[_0xd81b('0x27')]=function(_0x22f588,_0x3ed626){if(_0x22f588[_0xd81b('0x4d')]['id']){delete _0x22f588[_0xd81b('0x4d')]['id'];}return db['AnalyticMetric'][_0xd81b('0x4b')]({'where':{'id':_0x22f588['params']['id']}})[_0xd81b('0x28')](handleEntityNotFound(_0x3ed626,null))[_0xd81b('0x28')](saveUpdates(_0x22f588[_0xd81b('0x4d')],null))[_0xd81b('0x28')](respondWithResult(_0x3ed626,null))[_0xd81b('0x55')](handleError(_0x3ed626,null));};exports[_0xd81b('0x29')]=function(_0x5c196a,_0x2d978d){return db[_0xd81b('0x44')]['find']({'where':{'id':_0x5c196a['params']['id']}})[_0xd81b('0x28')](handleEntityNotFound(_0x2d978d,null))['then'](removeEntity(_0x2d978d,null))[_0xd81b('0x55')](handleError(_0x2d978d,null));};
\ No newline at end of file
+var _0x425d=['VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','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','eml-format','zip-dir','fast-json-patch','request-promise','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','../../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','get','Metrics','UserProfileResource','destroy','error','stack','name','send','index','map','AnalyticMetric','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','nolimit','order','sort','filters','pick','where','merge'];(function(_0x5c3b5f,_0x14a426){var _0xbceeb0=function(_0x4364bc){while(--_0x4364bc){_0x5c3b5f['push'](_0x5c3b5f['shift']());}};_0xbceeb0(++_0x14a426);}(_0x425d,0x1e0));var _0xd425=function(_0x1d606e,_0x438c6a){_0x1d606e=_0x1d606e-0x0;var _0x528543=_0x425d[_0x1d606e];return _0x528543;};'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(){var _0x264b0e=_0x40e84b[_0xd425('0x2b')]({'plain':!![]});var _0x1908a5=_0xd425('0x2c');return db[_0xd425('0x2d')][_0xd425('0x2e')]({'where':{'type':_0x1908a5,'resourceId':_0x264b0e['id']}})['then'](function(){return _0x40e84b;});})[_0xd425('0x2a')](function(){_0x2b030b[_0xd425('0x1f')](0xcc)[_0xd425('0x1e')]();});}};}function handleEntityNotFound(_0x57c950,_0x27ef8a){return function(_0x3ad9bd){if(!_0x3ad9bd){_0x57c950[_0xd425('0x1d')](0x194);}return _0x3ad9bd;};}function handleError(_0x999fb9,_0x27d29a){_0x27d29a=_0x27d29a||0x1f4;return function(_0x185d7e){logger[_0xd425('0x2f')](_0x185d7e[_0xd425('0x30')]);if(_0x185d7e[_0xd425('0x31')]){delete _0x185d7e[_0xd425('0x31')];}_0x999fb9['status'](_0x27d29a)[_0xd425('0x32')](_0x185d7e);};}exports[_0xd425('0x33')]=function(_0x298602,_0x3695dd){var _0x3275b1={},_0x1abf33={},_0x47405f={'count':0x0,'rows':[]};var _0x40c392=_[_0xd425('0x34')](db[_0xd425('0x35')][_0xd425('0x36')],function(_0x5f3dab){return{'name':_0x5f3dab[_0xd425('0x37')],'type':_0x5f3dab[_0xd425('0x38')][_0xd425('0x39')]};});_0x1abf33[_0xd425('0x3a')]=_[_0xd425('0x34')](_0x40c392,'name');_0x1abf33[_0xd425('0x3b')]=_[_0xd425('0x3c')](_0x298602['query']);_0x1abf33['filters']=_['intersection'](_0x1abf33[_0xd425('0x3a')],_0x1abf33[_0xd425('0x3b')]);_0x3275b1[_0xd425('0x3d')]=_[_0xd425('0x3e')](_0x1abf33['model'],qs[_0xd425('0x3f')](_0x298602[_0xd425('0x3b')][_0xd425('0x3f')]));_0x3275b1[_0xd425('0x3d')]=_0x3275b1[_0xd425('0x3d')][_0xd425('0x40')]?_0x3275b1[_0xd425('0x3d')]:_0x1abf33['model'];if(!_0x298602[_0xd425('0x3b')]['hasOwnProperty'](_0xd425('0x41'))){_0x3275b1[_0xd425('0x23')]=qs[_0xd425('0x23')](_0x298602['query'][_0xd425('0x23')]);_0x3275b1[_0xd425('0x21')]=qs[_0xd425('0x21')](_0x298602[_0xd425('0x3b')]['offset']);}_0x3275b1[_0xd425('0x42')]=qs[_0xd425('0x43')](_0x298602['query']['sort']);_0x3275b1['where']=qs[_0xd425('0x44')](_[_0xd425('0x45')](_0x298602[_0xd425('0x3b')],_0x1abf33['filters']),_0x40c392);if(_0x298602['query']['filter']){_0x3275b1[_0xd425('0x46')]=_[_0xd425('0x47')](_0x3275b1[_0xd425('0x46')],{'$or':_[_0xd425('0x34')](_0x40c392,function(_0xa9fd7c){if(_0xa9fd7c[_0xd425('0x38')]!==_0xd425('0x48')){var _0x4b922f={};_0x4b922f[_0xa9fd7c[_0xd425('0x31')]]={'$like':'%'+_0x298602[_0xd425('0x3b')][_0xd425('0x49')]+'%'};return _0x4b922f;}})});}_0x3275b1=_['merge']({},_0x3275b1,_0x298602[_0xd425('0x4a')]);var _0x2dffc7={'where':_0x3275b1[_0xd425('0x46')]};return db['AnalyticMetric'][_0xd425('0x24')](_0x2dffc7)[_0xd425('0x2a')](function(_0x1c5ba6){_0x47405f[_0xd425('0x24')]=_0x1c5ba6;if(_0x298602['query'][_0xd425('0x4b')]){_0x3275b1[_0xd425('0x4c')]=[{'all':!![]}];}return db[_0xd425('0x35')][_0xd425('0x4d')](_0x3275b1);})[_0xd425('0x2a')](function(_0x2f6bf7){_0x47405f[_0xd425('0x4e')]=_0x2f6bf7;return _0x47405f;})['then'](respondWithFilteredResult(_0x3695dd,_0x3275b1))[_0xd425('0x4f')](handleError(_0x3695dd,null));};exports[_0xd425('0x50')]=function(_0x5b65fe,_0x1a44a8){var _0x491c51={'raw':!![],'where':{'id':_0x5b65fe[_0xd425('0x51')]['id']}},_0x5e12bf={};_0x5e12bf['model']=_[_0xd425('0x3c')](db['AnalyticMetric'][_0xd425('0x36')]);_0x5e12bf[_0xd425('0x3b')]=_[_0xd425('0x3c')](_0x5b65fe[_0xd425('0x3b')]);_0x5e12bf[_0xd425('0x44')]=_['intersection'](_0x5e12bf[_0xd425('0x3a')],_0x5e12bf['query']);_0x491c51[_0xd425('0x3d')]=_['intersection'](_0x5e12bf[_0xd425('0x3a')],qs[_0xd425('0x3f')](_0x5b65fe[_0xd425('0x3b')][_0xd425('0x3f')]));_0x491c51[_0xd425('0x3d')]=_0x491c51['attributes'][_0xd425('0x40')]?_0x491c51[_0xd425('0x3d')]:_0x5e12bf[_0xd425('0x3a')];if(_0x5b65fe[_0xd425('0x3b')][_0xd425('0x4b')]){_0x491c51['include']=[{'all':!![]}];}_0x491c51=_[_0xd425('0x47')]({},_0x491c51,_0x5b65fe[_0xd425('0x4a')]);return db[_0xd425('0x35')][_0xd425('0x52')](_0x491c51)[_0xd425('0x2a')](handleEntityNotFound(_0x1a44a8,null))[_0xd425('0x2a')](respondWithResult(_0x1a44a8,null))['catch'](handleError(_0x1a44a8,null));};exports[_0xd425('0x53')]=function(_0x128cb3,_0x5bfac6){return db[_0xd425('0x35')][_0xd425('0x53')](_0x128cb3[_0xd425('0x54')],{})[_0xd425('0x2a')](function(_0x5c0219){var _0x54f1d=_0x128cb3[_0xd425('0x55')][_0xd425('0x2b')]({'plain':!![]});if(!_0x54f1d)throw new Error(_0xd425('0x56'));if(_0x54f1d[_0xd425('0x57')]==='user'){var _0x4be6fa=_0x5c0219[_0xd425('0x2b')]({'plain':!![]});var _0x5496d8=_0xd425('0x2c');return db[_0xd425('0x58')]['find']({'where':{'name':_0x5496d8,'userProfileId':_0x54f1d[_0xd425('0x59')]},'raw':!![]})['then'](function(_0x48d5b8){if(_0x48d5b8&&_0x48d5b8[_0xd425('0x5a')]===0x0){return db[_0xd425('0x2d')][_0xd425('0x53')]({'name':_0x4be6fa[_0xd425('0x31')],'resourceId':_0x4be6fa['id'],'type':_0x48d5b8[_0xd425('0x31')],'sectionId':_0x48d5b8['id']},{})[_0xd425('0x2a')](function(){return _0x5c0219;});}else{return _0x5c0219;}})[_0xd425('0x4f')](function(_0x4118fe){logger['error'](_0xd425('0x5b'),_0x4118fe);throw _0x4118fe;});}return _0x5c0219;})[_0xd425('0x2a')](respondWithResult(_0x5bfac6,0xc9))[_0xd425('0x4f')](handleError(_0x5bfac6,null));};exports[_0xd425('0x29')]=function(_0x7b1080,_0x1c80c2){if(_0x7b1080[_0xd425('0x54')]['id']){delete _0x7b1080[_0xd425('0x54')]['id'];}return db['AnalyticMetric']['find']({'where':{'id':_0x7b1080['params']['id']}})[_0xd425('0x2a')](handleEntityNotFound(_0x1c80c2,null))[_0xd425('0x2a')](saveUpdates(_0x7b1080[_0xd425('0x54')],null))[_0xd425('0x2a')](respondWithResult(_0x1c80c2,null))['catch'](handleError(_0x1c80c2,null));};exports['destroy']=function(_0x499a60,_0x5e1294){return db[_0xd425('0x35')][_0xd425('0x52')]({'where':{'id':_0x499a60['params']['id']}})[_0xd425('0x2a')](handleEntityNotFound(_0x5e1294,null))[_0xd425('0x2a')](removeEntity(_0x5e1294,null))[_0xd425('0x4f')](handleError(_0x5e1294,null));};
\ No newline at end of file
index d02bc83..28b81f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02ca=['path','rimraf','../../config/environment','./analyticMetric.attributes','exports','define','AnalyticMetric','analytics_metrics','lodash','../../config/logger','api','moment','bluebird'];(function(_0x15a29e,_0x5498b3){var _0x36f2de=function(_0x42cd9c){while(--_0x42cd9c){_0x15a29e['push'](_0x15a29e['shift']());}};_0x36f2de(++_0x5498b3);}(_0x02ca,0x97));var _0xa02c=function(_0x204ad0,_0xb3460d){_0x204ad0=_0x204ad0-0x0;var _0x4ceff2=_0x02ca[_0x204ad0];return _0x4ceff2;};'use strict';var _=require(_0xa02c('0x0'));var util=require('util');var logger=require(_0xa02c('0x1'))(_0xa02c('0x2'));var moment=require(_0xa02c('0x3'));var BPromise=require(_0xa02c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa02c('0x5'));var rimraf=require(_0xa02c('0x6'));var config=require(_0xa02c('0x7'));var attributes=require(_0xa02c('0x8'));module[_0xa02c('0x9')]=function(_0x46533c,_0xa0f1fe){return _0x46533c[_0xa02c('0xa')](_0xa02c('0xb'),attributes,{'tableName':_0xa02c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5e0e=['../../config/environment','exports','define','AnalyticMetric','analytics_metrics','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x2a9fe5,_0x14b23b){var _0x283856=function(_0x1f4190){while(--_0x1f4190){_0x2a9fe5['push'](_0x2a9fe5['shift']());}};_0x283856(++_0x14b23b);}(_0x5e0e,0x89));var _0xe5e0=function(_0x2ae6ee,_0x16805a){_0x2ae6ee=_0x2ae6ee-0x0;var _0x17653b=_0x5e0e[_0x2ae6ee];return _0x17653b;};'use strict';var _=require(_0xe5e0('0x0'));var util=require(_0xe5e0('0x1'));var logger=require('../../config/logger')(_0xe5e0('0x2'));var moment=require(_0xe5e0('0x3'));var BPromise=require(_0xe5e0('0x4'));var rp=require(_0xe5e0('0x5'));var fs=require('fs');var path=require(_0xe5e0('0x6'));var rimraf=require('rimraf');var config=require(_0xe5e0('0x7'));var attributes=require('./analyticMetric.attributes');module[_0xe5e0('0x8')]=function(_0x3e564e,_0x2ff9ac){return _0x3e564e[_0xe5e0('0x9')](_0xe5e0('0xa'),attributes,{'tableName':_0xe5e0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9013349..4e71c69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8259=['error','code','message','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x27c6cd,_0x54cd1f){var _0x1085dd=function(_0x432a26){while(--_0x432a26){_0x27c6cd['push'](_0x27c6cd['shift']());}};_0x1085dd(++_0x54cd1f);}(_0x8259,0xff));var _0x9825=function(_0x3fd114,_0x20b3a5){_0x3fd114=_0x3fd114-0x0;var _0x305157=_0x8259[_0x3fd114];return _0x305157;};'use strict';var _=require('lodash');var util=require(_0x9825('0x0'));var moment=require(_0x9825('0x1'));var BPromise=require(_0x9825('0x2'));var rs=require(_0x9825('0x3'));var fs=require('fs');var Redis=require(_0x9825('0x4'));var db=require(_0x9825('0x5'))['db'];var utils=require(_0x9825('0x6'));var logger=require('../../config/logger')(_0x9825('0x7'));var config=require('../../config/environment');var jayson=require(_0x9825('0x8'));var client=jayson[_0x9825('0x9')][_0x9825('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x43bd8e,_0x306cc7,_0x311237){return new BPromise(function(_0x3e2af3,_0xbd002f){return client[_0x9825('0xb')](_0x43bd8e,_0x311237)['then'](function(_0x530503){logger[_0x9825('0xc')](_0x9825('0xd'),_0x306cc7,_0x9825('0xe'));logger[_0x9825('0xf')](_0x9825('0x10'),_0x306cc7,_0x9825('0xe'),JSON[_0x9825('0x11')](_0x530503));if(_0x530503[_0x9825('0x12')]){if(_0x530503[_0x9825('0x12')][_0x9825('0x13')]===0x1f4){logger[_0x9825('0x12')](_0x9825('0xd'),_0x306cc7,_0x530503[_0x9825('0x12')]['message']);return _0xbd002f(_0x530503['error']['message']);}logger[_0x9825('0x12')](_0x9825('0xd'),_0x306cc7,_0x530503['error'][_0x9825('0x14')]);return _0x3e2af3(_0x530503[_0x9825('0x12')]['message']);}else{logger[_0x9825('0xc')](_0x9825('0xd'),_0x306cc7,_0x9825('0xe'));_0x3e2af3(_0x530503['result'][_0x9825('0x14')]);}})['catch'](function(_0x2155ef){logger[_0x9825('0x12')](_0x9825('0xd'),_0x306cc7,_0x2155ef);_0xbd002f(_0x2155ef);});});}
\ No newline at end of file
+var _0x8ad5=['../../config/environment','jayson/promise','client','http','request','then','info','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','AnalyticMetric,\x20%s,\x20%s','result','catch','util','moment','randomstring','rpc'];(function(_0x4e1d6b,_0x157bdb){var _0x16ca93=function(_0x53dd51){while(--_0x53dd51){_0x4e1d6b['push'](_0x4e1d6b['shift']());}};_0x16ca93(++_0x157bdb);}(_0x8ad5,0x18b));var _0x58ad=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x8ad5[_0x5b644e];return _0x49c6bf;};'use strict';var _=require('lodash');var util=require(_0x58ad('0x0'));var moment=require(_0x58ad('0x1'));var BPromise=require('bluebird');var rs=require(_0x58ad('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x58ad('0x3'));var config=require(_0x58ad('0x4'));var jayson=require(_0x58ad('0x5'));var client=jayson[_0x58ad('0x6')][_0x58ad('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x288f1e,_0x4cdcbb,_0x15b98b){return new BPromise(function(_0x174071,_0x48077c){return client[_0x58ad('0x8')](_0x288f1e,_0x15b98b)[_0x58ad('0x9')](function(_0x1576a0){logger[_0x58ad('0xa')]('AnalyticMetric,\x20%s,\x20%s',_0x4cdcbb,'request\x20sent');logger[_0x58ad('0xb')](_0x58ad('0xc'),_0x4cdcbb,_0x58ad('0xd'),JSON[_0x58ad('0xe')](_0x1576a0));if(_0x1576a0[_0x58ad('0xf')]){if(_0x1576a0[_0x58ad('0xf')][_0x58ad('0x10')]===0x1f4){logger[_0x58ad('0xf')]('AnalyticMetric,\x20%s,\x20%s',_0x4cdcbb,_0x1576a0[_0x58ad('0xf')][_0x58ad('0x11')]);return _0x48077c(_0x1576a0[_0x58ad('0xf')]['message']);}logger[_0x58ad('0xf')](_0x58ad('0x12'),_0x4cdcbb,_0x1576a0[_0x58ad('0xf')][_0x58ad('0x11')]);return _0x174071(_0x1576a0[_0x58ad('0xf')]['message']);}else{logger['info'](_0x58ad('0x12'),_0x4cdcbb,_0x58ad('0xd'));_0x174071(_0x1576a0[_0x58ad('0x13')]['message']);}})[_0x58ad('0x14')](function(_0x5f3c33){logger[_0x58ad('0xf')](_0x58ad('0x12'),_0x4cdcbb,_0x5f3c33);_0x48077c(_0x5f3c33);});});}
\ No newline at end of file
index 85279b7..10f47f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4074=['multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','index','/:id','show','post','update','delete','destroy','exports'];(function(_0x2eb1e9,_0x1deafb){var _0x2630e1=function(_0x1437fd){while(--_0x1437fd){_0x2eb1e9['push'](_0x2eb1e9['shift']());}};_0x2630e1(++_0x1deafb);}(_0x4074,0xf0));var _0x4407=function(_0x134213,_0x1298a){_0x134213=_0x134213-0x0;var _0x4e1882=_0x4074[_0x134213];return _0x4e1882;};'use strict';var multer=require(_0x4407('0x0'));var util=require(_0x4407('0x1'));var path=require(_0x4407('0x2'));var timeout=require('connect-timeout');var express=require(_0x4407('0x3'));var router=express[_0x4407('0x4')]();var fs_extra=require(_0x4407('0x5'));var auth=require(_0x4407('0x6'));var interaction=require(_0x4407('0x7'));var config=require(_0x4407('0x8'));var controller=require(_0x4407('0x9'));router[_0x4407('0xa')]('/',auth[_0x4407('0xb')](),controller[_0x4407('0xc')]);router['get'](_0x4407('0xd'),auth['isAuthenticated'](),controller[_0x4407('0xe')]);router[_0x4407('0xf')]('/',auth[_0x4407('0xb')](),controller['create']);router['put']('/:id',auth[_0x4407('0xb')](),controller[_0x4407('0x10')]);router[_0x4407('0x11')](_0x4407('0xd'),auth[_0x4407('0xb')](),controller[_0x4407('0x12')]);module[_0x4407('0x13')]=router;
\ No newline at end of file
+var _0x4250=['post','create','put','update','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','index','/:id','show'];(function(_0x307ba9,_0x55cb03){var _0x198dcb=function(_0x4ec59c){while(--_0x4ec59c){_0x307ba9['push'](_0x307ba9['shift']());}};_0x198dcb(++_0x55cb03);}(_0x4250,0x146));var _0x0425=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0x4250[_0x3ce3c];return _0x55a2c9;};'use strict';var multer=require(_0x0425('0x0'));var util=require(_0x0425('0x1'));var path=require(_0x0425('0x2'));var timeout=require(_0x0425('0x3'));var express=require('express');var router=express[_0x0425('0x4')]();var fs_extra=require(_0x0425('0x5'));var auth=require(_0x0425('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x0425('0x7'));var controller=require(_0x0425('0x8'));router[_0x0425('0x9')]('/',auth[_0x0425('0xa')](),controller[_0x0425('0xb')]);router[_0x0425('0x9')](_0x0425('0xc'),auth[_0x0425('0xa')](),controller[_0x0425('0xd')]);router[_0x0425('0xe')]('/',auth[_0x0425('0xa')](),controller[_0x0425('0xf')]);router[_0x0425('0x10')](_0x0425('0xc'),auth[_0x0425('0xa')](),controller[_0x0425('0x11')]);router[_0x0425('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x0425('0x13')]);module['exports']=router;
\ No newline at end of file
index 7400469..05c3796 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7aaa=['TEXT','exports'];(function(_0x59b684,_0x1685dc){var _0x1abd27=function(_0x52a625){while(--_0x52a625){_0x59b684['push'](_0x59b684['shift']());}};_0x1abd27(++_0x1685dc);}(_0x7aaa,0xcf));var _0xa7aa=function(_0x4179b3,_0x2eaff2){_0x4179b3=_0x4179b3-0x0;var _0x5b5c7e=_0x7aaa[_0x4179b3];return _0x5b5c7e;};'use strict';var Sequelize=require('sequelize');module[_0xa7aa('0x0')]={'tree':{'type':Sequelize[_0xa7aa('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x86d1=['exports','TEXT','sequelize'];(function(_0x4a6f93,_0x35d940){var _0x3e19eb=function(_0x30d207){while(--_0x30d207){_0x4a6f93['push'](_0x4a6f93['shift']());}};_0x3e19eb(++_0x35d940);}(_0x86d1,0xc5));var _0x186d=function(_0x3300f3,_0x3d3773){_0x3300f3=_0x3300f3-0x0;var _0x1262a5=_0x86d1[_0x3300f3];return _0x1262a5;};'use strict';var Sequelize=require(_0x186d('0x0'));module[_0x186d('0x1')]={'tree':{'type':Sequelize[_0x186d('0x2')],'allowNull':![]}};
\ No newline at end of file
index 9a161dd..8624747 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30ac=['options','includeAll','findAll','rows','catch','params','find','create','body','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','path','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','Content-Range','json','apply','save','update','destroy','then','error','stack','name','send','index','map','AnalyticTreeReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','type','VIRTUAL'];(function(_0x7ad10e,_0x44cdf2){var _0x2a318f=function(_0x5687f4){while(--_0x5687f4){_0x7ad10e['push'](_0x7ad10e['shift']());}};_0x2a318f(++_0x44cdf2);}(_0x30ac,0x9b));var _0xc30a=function(_0x49eed8,_0x9aa73c){_0x49eed8=_0x49eed8-0x0;var _0x1b2667=_0x30ac[_0x49eed8];return _0x1b2667;};'use strict';var emlformat=require(_0xc30a('0x0'));var rimraf=require(_0xc30a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc30a('0x2'));var rp=require('request-promise');var moment=require(_0xc30a('0x3'));var BPromise=require(_0xc30a('0x4'));var Mustache=require(_0xc30a('0x5'));var util=require('util');var path=require(_0xc30a('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xc30a('0x7'));var fs=require('fs');var fs_extra=require(_0xc30a('0x8'));var _=require(_0xc30a('0x9'));var squel=require('squel');var crypto=require(_0xc30a('0xa'));var jsforce=require(_0xc30a('0xb'));var deskjs=require(_0xc30a('0xc'));var toCsv=require('to-csv');var querystring=require(_0xc30a('0xd'));var Papa=require(_0xc30a('0xe'));var Redis=require(_0xc30a('0xf'));var authService=require(_0xc30a('0x10'));var qs=require(_0xc30a('0x11'));var as=require(_0xc30a('0x12'));var hardwareService=require(_0xc30a('0x13'));var logger=require('../../config/logger')(_0xc30a('0x14'));var utils=require('../../config/utils');var config=require(_0xc30a('0x15'));var licenseUtil=require(_0xc30a('0x16'));var db=require(_0xc30a('0x17'))['db'];function respondWithStatusCode(_0x1526d7,_0x2fd705){_0x2fd705=_0x2fd705||0xcc;return function(_0x308bce){if(_0x308bce){return _0x1526d7[_0xc30a('0x18')](_0x2fd705);}return _0x1526d7[_0xc30a('0x19')](_0x2fd705)[_0xc30a('0x1a')]();};}function respondWithResult(_0x1bc526,_0x4615cb){_0x4615cb=_0x4615cb||0xc8;return function(_0x287d2b){if(_0x287d2b){return _0x1bc526[_0xc30a('0x19')](_0x4615cb)['json'](_0x287d2b);}};}function respondWithFilteredResult(_0x1744d7,_0x2a6984){return function(_0x2ac374){if(_0x2ac374){var _0x164b3a=typeof _0x2a6984[_0xc30a('0x1b')]===_0xc30a('0x1c')&&typeof _0x2a6984['limit']==='undefined';var _0x42310b=_0x2ac374[_0xc30a('0x1d')];var _0x368100=_0x164b3a?0x0:_0x2a6984[_0xc30a('0x1b')];var _0x3e97df=_0x164b3a?_0x2ac374[_0xc30a('0x1d')]:_0x2a6984[_0xc30a('0x1b')]+_0x2a6984['limit'];var _0x47c2d0;if(_0x3e97df>=_0x42310b){_0x3e97df=_0x42310b;_0x47c2d0=0xc8;}else{_0x47c2d0=0xce;}_0x1744d7['status'](_0x47c2d0);return _0x1744d7['set'](_0xc30a('0x1e'),_0x368100+'-'+_0x3e97df+'/'+_0x42310b)[_0xc30a('0x1f')](_0x2ac374);}return null;};}function patchUpdates(_0x57df33){return function(_0x5c7cfa){try{jsonpatch[_0xc30a('0x20')](_0x5c7cfa,_0x57df33,!![]);}catch(_0x40200f){return BPromise['reject'](_0x40200f);}return _0x5c7cfa[_0xc30a('0x21')]();};}function saveUpdates(_0x1adcfa,_0x4b6b84){return function(_0x36a4a2){if(_0x36a4a2){return _0x36a4a2[_0xc30a('0x22')](_0x1adcfa)['then'](function(_0x284098){return _0x284098;});}return null;};}function removeEntity(_0x1bf302,_0x1a4bac){return function(_0x31638d){if(_0x31638d){return _0x31638d[_0xc30a('0x23')]()[_0xc30a('0x24')](function(){_0x1bf302[_0xc30a('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x56ce1f,_0x599ddb){return function(_0x4ee8dc){if(!_0x4ee8dc){_0x56ce1f[_0xc30a('0x18')](0x194);}return _0x4ee8dc;};}function handleError(_0x256c2e,_0x181b89){_0x181b89=_0x181b89||0x1f4;return function(_0x4b5248){logger[_0xc30a('0x25')](_0x4b5248[_0xc30a('0x26')]);if(_0x4b5248[_0xc30a('0x27')]){delete _0x4b5248[_0xc30a('0x27')];}_0x256c2e[_0xc30a('0x19')](_0x181b89)[_0xc30a('0x28')](_0x4b5248);};}exports[_0xc30a('0x29')]=function(_0x16c3df,_0x4d2313){var _0x22c492={},_0x15d4f9={},_0x2b716f={'count':0x0,'rows':[]};var _0x37830a=_[_0xc30a('0x2a')](db[_0xc30a('0x2b')][_0xc30a('0x2c')],function(_0x3d7c12){return{'name':_0x3d7c12[_0xc30a('0x2d')],'type':_0x3d7c12['type'][_0xc30a('0x2e')]};});_0x15d4f9[_0xc30a('0x2f')]=_[_0xc30a('0x2a')](_0x37830a,_0xc30a('0x27'));_0x15d4f9[_0xc30a('0x30')]=_[_0xc30a('0x31')](_0x16c3df[_0xc30a('0x30')]);_0x15d4f9[_0xc30a('0x32')]=_[_0xc30a('0x33')](_0x15d4f9[_0xc30a('0x2f')],_0x15d4f9[_0xc30a('0x30')]);_0x22c492[_0xc30a('0x34')]=_[_0xc30a('0x33')](_0x15d4f9[_0xc30a('0x2f')],qs[_0xc30a('0x35')](_0x16c3df[_0xc30a('0x30')][_0xc30a('0x35')]));_0x22c492[_0xc30a('0x34')]=_0x22c492[_0xc30a('0x34')][_0xc30a('0x36')]?_0x22c492[_0xc30a('0x34')]:_0x15d4f9[_0xc30a('0x2f')];if(!_0x16c3df[_0xc30a('0x30')][_0xc30a('0x37')](_0xc30a('0x38'))){_0x22c492[_0xc30a('0x39')]=qs['limit'](_0x16c3df[_0xc30a('0x30')]['limit']);_0x22c492[_0xc30a('0x1b')]=qs['offset'](_0x16c3df[_0xc30a('0x30')][_0xc30a('0x1b')]);}_0x22c492[_0xc30a('0x3a')]=qs[_0xc30a('0x3b')](_0x16c3df[_0xc30a('0x30')][_0xc30a('0x3b')]);_0x22c492[_0xc30a('0x3c')]=qs[_0xc30a('0x32')](_['pick'](_0x16c3df[_0xc30a('0x30')],_0x15d4f9[_0xc30a('0x32')]),_0x37830a);if(_0x16c3df[_0xc30a('0x30')][_0xc30a('0x3d')]){_0x22c492[_0xc30a('0x3c')]=_['merge'](_0x22c492[_0xc30a('0x3c')],{'$or':_['map'](_0x37830a,function(_0x49df6e){if(_0x49df6e[_0xc30a('0x3e')]!==_0xc30a('0x3f')){var _0x370ca7={};_0x370ca7[_0x49df6e[_0xc30a('0x27')]]={'$like':'%'+_0x16c3df['query'][_0xc30a('0x3d')]+'%'};return _0x370ca7;}})});}_0x22c492=_['merge']({},_0x22c492,_0x16c3df[_0xc30a('0x40')]);var _0x988ce0={'where':_0x22c492['where']};return db['AnalyticTreeReport'][_0xc30a('0x1d')](_0x988ce0)['then'](function(_0x5fb64d){_0x2b716f[_0xc30a('0x1d')]=_0x5fb64d;if(_0x16c3df[_0xc30a('0x30')][_0xc30a('0x41')]){_0x22c492['include']=[{'all':!![]}];}return db[_0xc30a('0x2b')][_0xc30a('0x42')](_0x22c492);})[_0xc30a('0x24')](function(_0x677859){_0x2b716f[_0xc30a('0x43')]=_0x677859;return _0x2b716f;})[_0xc30a('0x24')](respondWithFilteredResult(_0x4d2313,_0x22c492))[_0xc30a('0x44')](handleError(_0x4d2313,null));};exports['show']=function(_0x588931,_0x1e591e){var _0x4d063a={'raw':!![],'where':{'id':_0x588931[_0xc30a('0x45')]['id']}},_0x430182={};_0x430182[_0xc30a('0x2f')]=_['keys'](db[_0xc30a('0x2b')][_0xc30a('0x2c')]);_0x430182[_0xc30a('0x30')]=_[_0xc30a('0x31')](_0x588931[_0xc30a('0x30')]);_0x430182[_0xc30a('0x32')]=_['intersection'](_0x430182[_0xc30a('0x2f')],_0x430182[_0xc30a('0x30')]);_0x4d063a['attributes']=_[_0xc30a('0x33')](_0x430182[_0xc30a('0x2f')],qs[_0xc30a('0x35')](_0x588931['query']['fields']));_0x4d063a['attributes']=_0x4d063a[_0xc30a('0x34')][_0xc30a('0x36')]?_0x4d063a[_0xc30a('0x34')]:_0x430182['model'];if(_0x588931[_0xc30a('0x30')]['includeAll']){_0x4d063a['include']=[{'all':!![]}];}_0x4d063a=_['merge']({},_0x4d063a,_0x588931['options']);return db['AnalyticTreeReport'][_0xc30a('0x46')](_0x4d063a)[_0xc30a('0x24')](handleEntityNotFound(_0x1e591e,null))[_0xc30a('0x24')](respondWithResult(_0x1e591e,null))['catch'](handleError(_0x1e591e,null));};exports[_0xc30a('0x47')]=function(_0x5ca8ce,_0x270f3e){return db['AnalyticTreeReport']['create'](_0x5ca8ce[_0xc30a('0x48')],{})['then'](respondWithResult(_0x270f3e,0xc9))[_0xc30a('0x44')](handleError(_0x270f3e,null));};exports[_0xc30a('0x22')]=function(_0x1eb354,_0x15ee2d){if(_0x1eb354['body']['id']){delete _0x1eb354[_0xc30a('0x48')]['id'];}return db['AnalyticTreeReport'][_0xc30a('0x46')]({'where':{'id':_0x1eb354['params']['id']}})[_0xc30a('0x24')](handleEntityNotFound(_0x15ee2d,null))[_0xc30a('0x24')](saveUpdates(_0x1eb354[_0xc30a('0x48')],null))[_0xc30a('0x24')](respondWithResult(_0x15ee2d,null))[_0xc30a('0x44')](handleError(_0x15ee2d,null));};exports[_0xc30a('0x23')]=function(_0x2f7799,_0x517c1a){return db['AnalyticTreeReport']['find']({'where':{'id':_0x2f7799[_0xc30a('0x45')]['id']}})[_0xc30a('0x24')](handleEntityNotFound(_0x517c1a,null))[_0xc30a('0x24')](removeEntity(_0x517c1a,null))[_0xc30a('0x44')](handleError(_0x517c1a,null));};
\ No newline at end of file
+var _0xa362=['catch','find','create','update','body','params','destroy','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','fs-extra','lodash','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','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','then','end','sendStatus','error','name','send','AnalyticTreeReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','map','VIRTUAL','merge','options','includeAll','include','rows'];(function(_0x530182,_0x3a7dab){var _0x495d44=function(_0x255612){while(--_0x255612){_0x530182['push'](_0x530182['shift']());}};_0x495d44(++_0x3a7dab);}(_0xa362,0x9f));var _0x2a36=function(_0x185848,_0x1ce0fb){_0x185848=_0x185848-0x0;var _0x310fe7=_0xa362[_0x185848];return _0x310fe7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2a36('0x0'));var zipdir=require(_0x2a36('0x1'));var jsonpatch=require(_0x2a36('0x2'));var rp=require(_0x2a36('0x3'));var moment=require(_0x2a36('0x4'));var BPromise=require(_0x2a36('0x5'));var Mustache=require('mustache');var util=require(_0x2a36('0x6'));var path=require('path');var sox=require(_0x2a36('0x7'));var csv=require(_0x2a36('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2a36('0x9'));var _=require(_0x2a36('0xa'));var squel=require('squel');var crypto=require(_0x2a36('0xb'));var jsforce=require(_0x2a36('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x2a36('0x8'));var querystring=require(_0x2a36('0xd'));var Papa=require(_0x2a36('0xe'));var Redis=require(_0x2a36('0xf'));var authService=require(_0x2a36('0x10'));var qs=require(_0x2a36('0x11'));var as=require(_0x2a36('0x12'));var hardwareService=require(_0x2a36('0x13'));var logger=require(_0x2a36('0x14'))(_0x2a36('0x15'));var utils=require(_0x2a36('0x16'));var config=require(_0x2a36('0x17'));var licenseUtil=require(_0x2a36('0x18'));var db=require(_0x2a36('0x19'))['db'];function respondWithStatusCode(_0x29a1d8,_0x5d00a6){_0x5d00a6=_0x5d00a6||0xcc;return function(_0x78b58e){if(_0x78b58e){return _0x29a1d8['sendStatus'](_0x5d00a6);}return _0x29a1d8[_0x2a36('0x1a')](_0x5d00a6)['end']();};}function respondWithResult(_0x984093,_0x44f7f6){_0x44f7f6=_0x44f7f6||0xc8;return function(_0x302557){if(_0x302557){return _0x984093[_0x2a36('0x1a')](_0x44f7f6)['json'](_0x302557);}};}function respondWithFilteredResult(_0x3a4cbe,_0x29df16){return function(_0x2a6078){if(_0x2a6078){var _0x401298=typeof _0x29df16[_0x2a36('0x1b')]===_0x2a36('0x1c')&&typeof _0x29df16[_0x2a36('0x1d')]==='undefined';var _0x34ba16=_0x2a6078[_0x2a36('0x1e')];var _0x3ccaba=_0x401298?0x0:_0x29df16[_0x2a36('0x1b')];var _0x5f0c8d=_0x401298?_0x2a6078[_0x2a36('0x1e')]:_0x29df16['offset']+_0x29df16[_0x2a36('0x1d')];var _0x24ba69;if(_0x5f0c8d>=_0x34ba16){_0x5f0c8d=_0x34ba16;_0x24ba69=0xc8;}else{_0x24ba69=0xce;}_0x3a4cbe[_0x2a36('0x1a')](_0x24ba69);return _0x3a4cbe[_0x2a36('0x1f')](_0x2a36('0x20'),_0x3ccaba+'-'+_0x5f0c8d+'/'+_0x34ba16)[_0x2a36('0x21')](_0x2a6078);}return null;};}function patchUpdates(_0xdfcd1e){return function(_0x5f1fe9){try{jsonpatch[_0x2a36('0x22')](_0x5f1fe9,_0xdfcd1e,!![]);}catch(_0x21de3b){return BPromise[_0x2a36('0x23')](_0x21de3b);}return _0x5f1fe9[_0x2a36('0x24')]();};}function saveUpdates(_0x6f5cfb,_0x18a336){return function(_0x5e0994){if(_0x5e0994){return _0x5e0994['update'](_0x6f5cfb)[_0x2a36('0x25')](function(_0x4c20d2){return _0x4c20d2;});}return null;};}function removeEntity(_0x39be1a,_0x37df4f){return function(_0x38216a){if(_0x38216a){return _0x38216a['destroy']()[_0x2a36('0x25')](function(){_0x39be1a[_0x2a36('0x1a')](0xcc)[_0x2a36('0x26')]();});}};}function handleEntityNotFound(_0x4e5ed1,_0x2f5885){return function(_0x5b8cdc){if(!_0x5b8cdc){_0x4e5ed1[_0x2a36('0x27')](0x194);}return _0x5b8cdc;};}function handleError(_0x516c54,_0x221523){_0x221523=_0x221523||0x1f4;return function(_0x10445a){logger[_0x2a36('0x28')](_0x10445a['stack']);if(_0x10445a['name']){delete _0x10445a[_0x2a36('0x29')];}_0x516c54['status'](_0x221523)[_0x2a36('0x2a')](_0x10445a);};}exports['index']=function(_0x4acca7,_0x104613){var _0x5ca01d={},_0x2064dd={},_0x2a797f={'count':0x0,'rows':[]};var _0x1dfa30=_['map'](db[_0x2a36('0x2b')][_0x2a36('0x2c')],function(_0x4421da){return{'name':_0x4421da[_0x2a36('0x2d')],'type':_0x4421da[_0x2a36('0x2e')][_0x2a36('0x2f')]};});_0x2064dd['model']=_['map'](_0x1dfa30,_0x2a36('0x29'));_0x2064dd[_0x2a36('0x30')]=_[_0x2a36('0x31')](_0x4acca7[_0x2a36('0x30')]);_0x2064dd[_0x2a36('0x32')]=_[_0x2a36('0x33')](_0x2064dd['model'],_0x2064dd[_0x2a36('0x30')]);_0x5ca01d['attributes']=_[_0x2a36('0x33')](_0x2064dd[_0x2a36('0x34')],qs[_0x2a36('0x35')](_0x4acca7['query'][_0x2a36('0x35')]));_0x5ca01d['attributes']=_0x5ca01d[_0x2a36('0x36')][_0x2a36('0x37')]?_0x5ca01d[_0x2a36('0x36')]:_0x2064dd[_0x2a36('0x34')];if(!_0x4acca7[_0x2a36('0x30')][_0x2a36('0x38')](_0x2a36('0x39'))){_0x5ca01d[_0x2a36('0x1d')]=qs[_0x2a36('0x1d')](_0x4acca7[_0x2a36('0x30')][_0x2a36('0x1d')]);_0x5ca01d['offset']=qs[_0x2a36('0x1b')](_0x4acca7[_0x2a36('0x30')]['offset']);}_0x5ca01d['order']=qs[_0x2a36('0x3a')](_0x4acca7[_0x2a36('0x30')]['sort']);_0x5ca01d[_0x2a36('0x3b')]=qs['filters'](_[_0x2a36('0x3c')](_0x4acca7[_0x2a36('0x30')],_0x2064dd[_0x2a36('0x32')]),_0x1dfa30);if(_0x4acca7[_0x2a36('0x30')][_0x2a36('0x3d')]){_0x5ca01d[_0x2a36('0x3b')]=_['merge'](_0x5ca01d[_0x2a36('0x3b')],{'$or':_[_0x2a36('0x3e')](_0x1dfa30,function(_0x1b0616){if(_0x1b0616[_0x2a36('0x2e')]!==_0x2a36('0x3f')){var _0x4f8114={};_0x4f8114[_0x1b0616['name']]={'$like':'%'+_0x4acca7[_0x2a36('0x30')][_0x2a36('0x3d')]+'%'};return _0x4f8114;}})});}_0x5ca01d=_[_0x2a36('0x40')]({},_0x5ca01d,_0x4acca7[_0x2a36('0x41')]);var _0x2d4afb={'where':_0x5ca01d[_0x2a36('0x3b')]};return db[_0x2a36('0x2b')]['count'](_0x2d4afb)[_0x2a36('0x25')](function(_0x472f79){_0x2a797f[_0x2a36('0x1e')]=_0x472f79;if(_0x4acca7[_0x2a36('0x30')][_0x2a36('0x42')]){_0x5ca01d[_0x2a36('0x43')]=[{'all':!![]}];}return db[_0x2a36('0x2b')]['findAll'](_0x5ca01d);})[_0x2a36('0x25')](function(_0x4ee205){_0x2a797f[_0x2a36('0x44')]=_0x4ee205;return _0x2a797f;})[_0x2a36('0x25')](respondWithFilteredResult(_0x104613,_0x5ca01d))[_0x2a36('0x45')](handleError(_0x104613,null));};exports['show']=function(_0x2b8713,_0x386925){var _0x995a22={'raw':!![],'where':{'id':_0x2b8713['params']['id']}},_0x42037f={};_0x42037f[_0x2a36('0x34')]=_[_0x2a36('0x31')](db['AnalyticTreeReport'][_0x2a36('0x2c')]);_0x42037f['query']=_[_0x2a36('0x31')](_0x2b8713[_0x2a36('0x30')]);_0x42037f[_0x2a36('0x32')]=_['intersection'](_0x42037f[_0x2a36('0x34')],_0x42037f[_0x2a36('0x30')]);_0x995a22[_0x2a36('0x36')]=_[_0x2a36('0x33')](_0x42037f[_0x2a36('0x34')],qs[_0x2a36('0x35')](_0x2b8713[_0x2a36('0x30')][_0x2a36('0x35')]));_0x995a22['attributes']=_0x995a22['attributes']['length']?_0x995a22[_0x2a36('0x36')]:_0x42037f[_0x2a36('0x34')];if(_0x2b8713[_0x2a36('0x30')]['includeAll']){_0x995a22[_0x2a36('0x43')]=[{'all':!![]}];}_0x995a22=_[_0x2a36('0x40')]({},_0x995a22,_0x2b8713['options']);return db[_0x2a36('0x2b')][_0x2a36('0x46')](_0x995a22)[_0x2a36('0x25')](handleEntityNotFound(_0x386925,null))[_0x2a36('0x25')](respondWithResult(_0x386925,null))['catch'](handleError(_0x386925,null));};exports['create']=function(_0x3431b2,_0x1bd7d6){return db[_0x2a36('0x2b')][_0x2a36('0x47')](_0x3431b2['body'],{})[_0x2a36('0x25')](respondWithResult(_0x1bd7d6,0xc9))[_0x2a36('0x45')](handleError(_0x1bd7d6,null));};exports[_0x2a36('0x48')]=function(_0x474c1d,_0x41013e){if(_0x474c1d[_0x2a36('0x49')]['id']){delete _0x474c1d['body']['id'];}return db[_0x2a36('0x2b')][_0x2a36('0x46')]({'where':{'id':_0x474c1d[_0x2a36('0x4a')]['id']}})[_0x2a36('0x25')](handleEntityNotFound(_0x41013e,null))[_0x2a36('0x25')](saveUpdates(_0x474c1d[_0x2a36('0x49')],null))[_0x2a36('0x25')](respondWithResult(_0x41013e,null))[_0x2a36('0x45')](handleError(_0x41013e,null));};exports[_0x2a36('0x4b')]=function(_0x4f5864,_0x4277de){return db[_0x2a36('0x2b')][_0x2a36('0x46')]({'where':{'id':_0x4f5864[_0x2a36('0x4a')]['id']}})[_0x2a36('0x25')](handleEntityNotFound(_0x4277de,null))[_0x2a36('0x25')](removeEntity(_0x4277de,null))[_0x2a36('0x45')](handleError(_0x4277de,null));};
\ No newline at end of file
index 8b7a429..e799b39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae46=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','define','AnalyticTreeReport','analytics_report_trees','lodash','util','../../config/logger'];(function(_0x460264,_0x51ddff){var _0x2d75a1=function(_0x5a02a8){while(--_0x5a02a8){_0x460264['push'](_0x460264['shift']());}};_0x2d75a1(++_0x51ddff);}(_0xae46,0x1b0));var _0x6ae4=function(_0x295b80,_0x3bf87d){_0x295b80=_0x295b80-0x0;var _0xfc29b6=_0xae46[_0x295b80];return _0xfc29b6;};'use strict';var _=require(_0x6ae4('0x0'));var util=require(_0x6ae4('0x1'));var logger=require(_0x6ae4('0x2'))(_0x6ae4('0x3'));var moment=require(_0x6ae4('0x4'));var BPromise=require(_0x6ae4('0x5'));var rp=require(_0x6ae4('0x6'));var fs=require('fs');var path=require(_0x6ae4('0x7'));var rimraf=require(_0x6ae4('0x8'));var config=require(_0x6ae4('0x9'));var attributes=require(_0x6ae4('0xa'));module[_0x6ae4('0xb')]=function(_0x4a7101,_0x349f2a){return _0x4a7101[_0x6ae4('0xc')](_0x6ae4('0xd'),attributes,{'tableName':_0x6ae4('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x57ea=['bluebird','request-promise','rimraf','../../config/environment','exports','define','analytics_report_trees','lodash','util','api','moment'];(function(_0x38889b,_0x6cf56b){var _0x4b3c97=function(_0x5acfaf){while(--_0x5acfaf){_0x38889b['push'](_0x38889b['shift']());}};_0x4b3c97(++_0x6cf56b);}(_0x57ea,0x17d));var _0xa57e=function(_0x4e7f3f,_0x5c57da){_0x4e7f3f=_0x4e7f3f-0x0;var _0x441fd2=_0x57ea[_0x4e7f3f];return _0x441fd2;};'use strict';var _=require(_0xa57e('0x0'));var util=require(_0xa57e('0x1'));var logger=require('../../config/logger')(_0xa57e('0x2'));var moment=require(_0xa57e('0x3'));var BPromise=require(_0xa57e('0x4'));var rp=require(_0xa57e('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa57e('0x6'));var config=require(_0xa57e('0x7'));var attributes=require('./analyticTreeReport.attributes');module[_0xa57e('0x8')]=function(_0x3f8396,_0x2153f9){return _0x3f8396[_0xa57e('0x9')]('AnalyticTreeReport',attributes,{'tableName':_0xa57e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 38f76a0..12a036e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x2b012b,_0x463e28){var _0x32c4cf=function(_0x5871f2){while(--_0x5871f2){_0x2b012b['push'](_0x2b012b['shift']());}};_0x32c4cf(++_0x463e28);}(_0xadb5,0xad));var _0x5adb=function(_0x581378,_0x3bdad0){_0x581378=_0x581378-0x0;var _0x450159=_0xadb5[_0x581378];return _0x450159;};'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});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}
\ No newline at end of file
+var _0x5f2f=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','AnalyticTreeReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x22bbbc,_0x91ae9f){var _0x2aa3cc=function(_0x1b1f53){while(--_0x1b1f53){_0x22bbbc['push'](_0x22bbbc['shift']());}};_0x2aa3cc(++_0x91ae9f);}(_0x5f2f,0x73));var _0xf5f2=function(_0x1998c7,_0x2afce7){_0x1998c7=_0x1998c7-0x0;var _0x54b045=_0x5f2f[_0x1998c7];return _0x54b045;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3133bc,_0x473100,_0x5907aa){return new BPromise(function(_0x466882,_0x46cd9c){return client[_0xf5f2('0xc')](_0x3133bc,_0x5907aa)['then'](function(_0x375da4){logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,'request\x20sent');logger[_0xf5f2('0xf')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x473100,'request\x20sent',JSON[_0xf5f2('0x10')](_0x375da4));if(_0x375da4[_0xf5f2('0x11')]){if(_0x375da4['error'][_0xf5f2('0x12')]===0x1f4){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x46cd9c(_0x375da4[_0xf5f2('0x11')]['message']);}logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x466882(_0x375da4[_0xf5f2('0x11')]['message']);}else{logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,_0xf5f2('0x14'));_0x466882(_0x375da4[_0xf5f2('0x15')][_0xf5f2('0x13')]);}})[_0xf5f2('0x16')](function(_0xdb61b3){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0xdb61b3);_0x46cd9c(_0xdb61b3);});});}
\ No newline at end of file
index 2939e68..799205d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea16=['./analyticTreeReport.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../config/environment'];(function(_0x499a0a,_0x3854dc){var _0x5107fc=function(_0x3df961){while(--_0x3df961){_0x499a0a['push'](_0x499a0a['shift']());}};_0x5107fc(++_0x3854dc);}(_0xea16,0x19d));var _0x6ea1=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0xea16[_0x160c73];return _0xd9302;};'use strict';var multer=require(_0x6ea1('0x0'));var util=require(_0x6ea1('0x1'));var path=require(_0x6ea1('0x2'));var timeout=require(_0x6ea1('0x3'));var express=require(_0x6ea1('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x6ea1('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x6ea1('0x6'));var controller=require(_0x6ea1('0x7'));router[_0x6ea1('0x8')]('/',auth[_0x6ea1('0x9')](),controller[_0x6ea1('0xa')]);router[_0x6ea1('0x8')](_0x6ea1('0xb'),auth['isAuthenticated'](),controller[_0x6ea1('0xc')]);router[_0x6ea1('0xd')]('/',auth[_0x6ea1('0x9')](),controller[_0x6ea1('0xe')]);router[_0x6ea1('0xf')](_0x6ea1('0xb'),auth[_0x6ea1('0x9')](),controller[_0x6ea1('0x10')]);router[_0x6ea1('0x11')](_0x6ea1('0xb'),auth[_0x6ea1('0x9')](),controller[_0x6ea1('0x12')]);module[_0x6ea1('0x13')]=router;
\ No newline at end of file
+var _0xafa7=['put','/:id','update','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated','index','post','create'];(function(_0x3d61fe,_0x3d2c36){var _0x457e37=function(_0x29ae75){while(--_0x29ae75){_0x3d61fe['push'](_0x3d61fe['shift']());}};_0x457e37(++_0x3d2c36);}(_0xafa7,0x77));var _0x7afa=function(_0x3299d1,_0x545733){_0x3299d1=_0x3299d1-0x0;var _0x44356e=_0xafa7[_0x3299d1];return _0x44356e;};'use strict';var multer=require(_0x7afa('0x0'));var util=require(_0x7afa('0x1'));var path=require('path');var timeout=require(_0x7afa('0x2'));var express=require(_0x7afa('0x3'));var router=express[_0x7afa('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x7afa('0x5'));var interaction=require(_0x7afa('0x6'));var config=require(_0x7afa('0x7'));var controller=require(_0x7afa('0x8'));router[_0x7afa('0x9')]('/',auth[_0x7afa('0xa')](),controller[_0x7afa('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x7afa('0xc')]('/',auth[_0x7afa('0xa')](),controller[_0x7afa('0xd')]);router[_0x7afa('0xe')](_0x7afa('0xf'),auth[_0x7afa('0xa')](),controller[_0x7afa('0x10')]);router['delete'](_0x7afa('0xf'),auth[_0x7afa('0xa')](),controller[_0x7afa('0x11')]);module[_0x7afa('0x12')]=router;
\ No newline at end of file
index d97ffab..477cc54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5af0=['exports','STRING','sequelize'];(function(_0x50cd41,_0x4874a7){var _0x399475=function(_0x1946da){while(--_0x1946da){_0x50cd41['push'](_0x50cd41['shift']());}};_0x399475(++_0x4874a7);}(_0x5af0,0x1eb));var _0x05af=function(_0x53fe5d,_0x22155e){_0x53fe5d=_0x53fe5d-0x0;var _0x1b1bbd=_0x5af0[_0x53fe5d];return _0x1b1bbd;};'use strict';var Sequelize=require(_0x05af('0x0'));module[_0x05af('0x1')]={'name':{'type':Sequelize[_0x05af('0x2')]},'basename':{'type':Sequelize[_0x05af('0x2')]},'type':{'type':Sequelize[_0x05af('0x2')]}};
\ No newline at end of file
+var _0x9ade=['exports','STRING','sequelize'];(function(_0x54263c,_0xe6a363){var _0x43b8a4=function(_0x51866e){while(--_0x51866e){_0x54263c['push'](_0x54263c['shift']());}};_0x43b8a4(++_0xe6a363);}(_0x9ade,0x107));var _0xe9ad=function(_0x193bec,_0x5bbea3){_0x193bec=_0x193bec-0x0;var _0x3aea83=_0x9ade[_0x193bec];return _0x3aea83;};'use strict';var Sequelize=require(_0xe9ad('0x0'));module[_0xe9ad('0x1')]={'name':{'type':Sequelize['STRING']},'basename':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xe9ad('0x2')]}};
\ No newline at end of file
index 2ad5ed2..50507b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a34=['save','then','destroy','sendStatus','stack','name','send','Attachment','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','rawAttributes','find','clone','get','omit','createdAt','updatedAt','body','update','create','file','originalname','basename','filename','mimetype','download','findOne','join','root','server/files/attachments/','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject'];(function(_0x24c0ee,_0x3b5cb7){var _0x3f2686=function(_0x2c66d6){while(--_0x2c66d6){_0x24c0ee['push'](_0x24c0ee['shift']());}};_0x3f2686(++_0x3b5cb7);}(_0x7a34,0x13d));var _0x47a3=function(_0x7281a3,_0x43baf0){_0x7281a3=_0x7281a3-0x0;var _0xaece9=_0x7a34[_0x7281a3];return _0xaece9;};'use strict';var emlformat=require(_0x47a3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x47a3('0x1'));var jsonpatch=require(_0x47a3('0x2'));var rp=require('request-promise');var moment=require(_0x47a3('0x3'));var BPromise=require(_0x47a3('0x4'));var Mustache=require(_0x47a3('0x5'));var util=require('util');var path=require(_0x47a3('0x6'));var sox=require(_0x47a3('0x7'));var csv=require(_0x47a3('0x8'));var ejs=require(_0x47a3('0x9'));var fs=require('fs');var fs_extra=require(_0x47a3('0xa'));var _=require(_0x47a3('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x47a3('0xc'));var deskjs=require(_0x47a3('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x47a3('0xe'));var Redis=require('ioredis');var authService=require(_0x47a3('0xf'));var qs=require(_0x47a3('0x10'));var as=require(_0x47a3('0x11'));var hardwareService=require(_0x47a3('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x47a3('0x13'));var db=require(_0x47a3('0x14'))['db'];function respondWithStatusCode(_0x1f0e18,_0x3d78d9){_0x3d78d9=_0x3d78d9||0xcc;return function(_0x32bb94){if(_0x32bb94){return _0x1f0e18['sendStatus'](_0x3d78d9);}return _0x1f0e18[_0x47a3('0x15')](_0x3d78d9)[_0x47a3('0x16')]();};}function respondWithResult(_0x5c16b4,_0x2c462b){_0x2c462b=_0x2c462b||0xc8;return function(_0x27360e){if(_0x27360e){return _0x5c16b4[_0x47a3('0x15')](_0x2c462b)[_0x47a3('0x17')](_0x27360e);}};}function respondWithFilteredResult(_0x53414b,_0x55ad88){return function(_0x4f148c){if(_0x4f148c){var _0x5e296a=typeof _0x55ad88[_0x47a3('0x18')]==='undefined'&&typeof _0x55ad88[_0x47a3('0x19')]===_0x47a3('0x1a');var _0x1b9c0c=_0x4f148c[_0x47a3('0x1b')];var _0x141971=_0x5e296a?0x0:_0x55ad88[_0x47a3('0x18')];var _0x34f99b=_0x5e296a?_0x4f148c['count']:_0x55ad88[_0x47a3('0x18')]+_0x55ad88[_0x47a3('0x19')];var _0x597caf;if(_0x34f99b>=_0x1b9c0c){_0x34f99b=_0x1b9c0c;_0x597caf=0xc8;}else{_0x597caf=0xce;}_0x53414b[_0x47a3('0x15')](_0x597caf);return _0x53414b['set'](_0x47a3('0x1c'),_0x141971+'-'+_0x34f99b+'/'+_0x1b9c0c)['json'](_0x4f148c);}return null;};}function patchUpdates(_0x2aad2f){return function(_0x2a7aa5){try{jsonpatch[_0x47a3('0x1d')](_0x2a7aa5,_0x2aad2f,!![]);}catch(_0x4d08ee){return BPromise[_0x47a3('0x1e')](_0x4d08ee);}return _0x2a7aa5[_0x47a3('0x1f')]();};}function saveUpdates(_0x4cd495,_0x52f1b9){return function(_0x2b8ec5){if(_0x2b8ec5){return _0x2b8ec5['update'](_0x4cd495)[_0x47a3('0x20')](function(_0x4a955d){return _0x4a955d;});}return null;};}function removeEntity(_0x5e9643,_0x2bbe23){return function(_0x679b1c){if(_0x679b1c){return _0x679b1c[_0x47a3('0x21')]()['then'](function(){_0x5e9643[_0x47a3('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x194ef5,_0x1ada93){return function(_0x5522ca){if(!_0x5522ca){_0x194ef5[_0x47a3('0x22')](0x194);}return _0x5522ca;};}function handleError(_0x409f59,_0x27bb57){_0x27bb57=_0x27bb57||0x1f4;return function(_0x614e34){logger['error'](_0x614e34[_0x47a3('0x23')]);if(_0x614e34[_0x47a3('0x24')]){delete _0x614e34['name'];}_0x409f59[_0x47a3('0x15')](_0x27bb57)[_0x47a3('0x25')](_0x614e34);};}exports['index']=function(_0x242d2b,_0x4ab186){var _0x5ac4ac={},_0x396921={},_0x378c38={'count':0x0,'rows':[]};var _0x33d261=_['map'](db[_0x47a3('0x26')]['rawAttributes'],function(_0x25e3ea){return{'name':_0x25e3ea[_0x47a3('0x27')],'type':_0x25e3ea[_0x47a3('0x28')][_0x47a3('0x29')]};});_0x396921[_0x47a3('0x2a')]=_[_0x47a3('0x2b')](_0x33d261,'name');_0x396921[_0x47a3('0x2c')]=_[_0x47a3('0x2d')](_0x242d2b[_0x47a3('0x2c')]);_0x396921[_0x47a3('0x2e')]=_[_0x47a3('0x2f')](_0x396921[_0x47a3('0x2a')],_0x396921[_0x47a3('0x2c')]);_0x5ac4ac[_0x47a3('0x30')]=_['intersection'](_0x396921[_0x47a3('0x2a')],qs[_0x47a3('0x31')](_0x242d2b[_0x47a3('0x2c')][_0x47a3('0x31')]));_0x5ac4ac[_0x47a3('0x30')]=_0x5ac4ac[_0x47a3('0x30')][_0x47a3('0x32')]?_0x5ac4ac[_0x47a3('0x30')]:_0x396921[_0x47a3('0x2a')];if(!_0x242d2b[_0x47a3('0x2c')][_0x47a3('0x33')](_0x47a3('0x34'))){_0x5ac4ac[_0x47a3('0x19')]=qs[_0x47a3('0x19')](_0x242d2b[_0x47a3('0x2c')][_0x47a3('0x19')]);_0x5ac4ac[_0x47a3('0x18')]=qs[_0x47a3('0x18')](_0x242d2b[_0x47a3('0x2c')][_0x47a3('0x18')]);}_0x5ac4ac[_0x47a3('0x35')]=qs[_0x47a3('0x36')](_0x242d2b['query'][_0x47a3('0x36')]);_0x5ac4ac[_0x47a3('0x37')]=qs[_0x47a3('0x2e')](_[_0x47a3('0x38')](_0x242d2b[_0x47a3('0x2c')],_0x396921[_0x47a3('0x2e')]),_0x33d261);if(_0x242d2b['query'][_0x47a3('0x39')]){_0x5ac4ac['where']=_[_0x47a3('0x3a')](_0x5ac4ac[_0x47a3('0x37')],{'$or':_['map'](_0x33d261,function(_0x9dd874){if(_0x9dd874[_0x47a3('0x28')]!==_0x47a3('0x3b')){var _0x5cd0b4={};_0x5cd0b4[_0x9dd874['name']]={'$like':'%'+_0x242d2b[_0x47a3('0x2c')]['filter']+'%'};return _0x5cd0b4;}})});}_0x5ac4ac=_[_0x47a3('0x3a')]({},_0x5ac4ac,_0x242d2b[_0x47a3('0x3c')]);var _0xae91f2={'where':_0x5ac4ac[_0x47a3('0x37')]};return db[_0x47a3('0x26')][_0x47a3('0x1b')](_0xae91f2)[_0x47a3('0x20')](function(_0x422354){_0x378c38['count']=_0x422354;if(_0x242d2b['query'][_0x47a3('0x3d')]){_0x5ac4ac[_0x47a3('0x3e')]=[{'all':!![]}];}return db['Attachment'][_0x47a3('0x3f')](_0x5ac4ac);})[_0x47a3('0x20')](function(_0x2c1f58){_0x378c38[_0x47a3('0x40')]=_0x2c1f58;return _0x378c38;})['then'](respondWithFilteredResult(_0x4ab186,_0x5ac4ac))[_0x47a3('0x41')](handleError(_0x4ab186,null));};exports['show']=function(_0xdc880d,_0x2deebb){var _0x204f42={'raw':!![],'where':{'id':_0xdc880d[_0x47a3('0x42')]['id']}},_0x4ac29a={};_0x4ac29a['model']=_[_0x47a3('0x2d')](db[_0x47a3('0x26')][_0x47a3('0x43')]);_0x4ac29a[_0x47a3('0x2c')]=_[_0x47a3('0x2d')](_0xdc880d[_0x47a3('0x2c')]);_0x4ac29a[_0x47a3('0x2e')]=_[_0x47a3('0x2f')](_0x4ac29a[_0x47a3('0x2a')],_0x4ac29a['query']);_0x204f42[_0x47a3('0x30')]=_['intersection'](_0x4ac29a[_0x47a3('0x2a')],qs[_0x47a3('0x31')](_0xdc880d[_0x47a3('0x2c')][_0x47a3('0x31')]));_0x204f42['attributes']=_0x204f42[_0x47a3('0x30')][_0x47a3('0x32')]?_0x204f42[_0x47a3('0x30')]:_0x4ac29a[_0x47a3('0x2a')];if(_0xdc880d[_0x47a3('0x2c')][_0x47a3('0x3d')]){_0x204f42['include']=[{'all':!![]}];}_0x204f42=_[_0x47a3('0x3a')]({},_0x204f42,_0xdc880d[_0x47a3('0x3c')]);return db['Attachment'][_0x47a3('0x44')](_0x204f42)[_0x47a3('0x20')](handleEntityNotFound(_0x2deebb,null))['then'](respondWithResult(_0x2deebb,null))['catch'](handleError(_0x2deebb,null));};exports[_0x47a3('0x45')]=function(_0x1e4aeb,_0x24b614){var _0x260e80={'where':{'id':_0x1e4aeb[_0x47a3('0x42')]['id']}},_0xc0b0d6={};_0xc0b0d6['model']=_[_0x47a3('0x2d')](db['Attachment']['rawAttributes']);_0x260e80[_0x47a3('0x30')]=_[_0x47a3('0x2f')](_0xc0b0d6[_0x47a3('0x2a')],qs[_0x47a3('0x31')](_0x1e4aeb[_0x47a3('0x2c')][_0x47a3('0x31')]));_0x260e80[_0x47a3('0x30')]=_0x260e80['attributes'][_0x47a3('0x32')]?_0x260e80[_0x47a3('0x30')]:_0xc0b0d6[_0x47a3('0x2a')];if(_0x1e4aeb[_0x47a3('0x2c')][_0x47a3('0x3d')]){_0x260e80['include']=[{'all':!![]}];}_0x260e80=_['merge']({},_0x260e80,_0x1e4aeb['options']);return db['Attachment'][_0x47a3('0x44')](_0x260e80)[_0x47a3('0x20')](handleEntityNotFound(_0x24b614,null))['then'](function(_0x191d30){if(_0x191d30){var _0x431aaa=_0x191d30[_0x47a3('0x46')]({'plain':!![]});_0x431aaa=qs[_0x47a3('0x47')](_0x431aaa,['id',_0x47a3('0x48'),_0x47a3('0x49')]);_0x1e4aeb['body']=_['omit'](_0x1e4aeb[_0x47a3('0x4a')],['id',_0x47a3('0x48'),_0x47a3('0x49')]);return db[_0x47a3('0x26')]['create'](_['merge'](_0x431aaa,_0x1e4aeb[_0x47a3('0x4a')]),{'include':_0x1e4aeb[_0x47a3('0x2c')][_0x47a3('0x3d')]?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x24b614,0xc9))['catch'](handleError(_0x24b614,null));};exports[_0x47a3('0x4b')]=function(_0x35b285,_0x55db77){if(_0x35b285['body']['id']){delete _0x35b285[_0x47a3('0x4a')]['id'];}return db[_0x47a3('0x26')]['find']({'where':{'id':_0x35b285[_0x47a3('0x42')]['id']}})[_0x47a3('0x20')](handleEntityNotFound(_0x55db77,null))[_0x47a3('0x20')](saveUpdates(_0x35b285[_0x47a3('0x4a')],null))['then'](respondWithResult(_0x55db77,null))['catch'](handleError(_0x55db77,null));};exports[_0x47a3('0x21')]=function(_0x12c3e0,_0x1446a4){return db[_0x47a3('0x26')][_0x47a3('0x44')]({'where':{'id':_0x12c3e0[_0x47a3('0x42')]['id']}})[_0x47a3('0x20')](handleEntityNotFound(_0x1446a4,null))['then'](removeEntity(_0x1446a4,null))['catch'](handleError(_0x1446a4,null));};exports[_0x47a3('0x4c')]=function(_0x1933dd,_0x302065,_0x48d634){_0x1933dd[_0x47a3('0x4a')][_0x47a3('0x24')]=_0x1933dd[_0x47a3('0x4d')][_0x47a3('0x4e')];_0x1933dd[_0x47a3('0x4a')][_0x47a3('0x4f')]=_0x1933dd[_0x47a3('0x4d')][_0x47a3('0x50')];_0x1933dd['body'][_0x47a3('0x28')]=_0x1933dd[_0x47a3('0x4d')][_0x47a3('0x51')];return db['Attachment'][_0x47a3('0x4c')](_0x1933dd[_0x47a3('0x4a')])[_0x47a3('0x20')](respondWithResult(_0x302065,0xc9))[_0x47a3('0x41')](handleError(_0x302065,null));};exports[_0x47a3('0x52')]=function(_0x454ece,_0x982e27,_0x507d75){return db['Attachment'][_0x47a3('0x53')]({'where':{'id':_0x454ece['params']['id']},'raw':!![]})['then'](handleEntityNotFound(_0x982e27,null))[_0x47a3('0x20')](function(_0xc893df){if(_0xc893df){var _0x1d31f2=_0xc893df['ChatOfflineMessageId']!==null;var _0x35942e=path[_0x47a3('0x54')](config[_0x47a3('0x55')],_0x47a3('0x56'));if(_0x1d31f2){_0x35942e=path[_0x47a3('0x54')](_0x35942e,'offline-chat/');}var _0x8a030=path[_0x47a3('0x54')](_0x35942e,_0xc893df[_0x47a3('0x4f')]);return _0x982e27[_0x47a3('0x52')](_0x8a030);}})[_0x47a3('0x41')](handleError(_0x982e27,null));};
\ No newline at end of file
+var _0x7e75=['catch','clone','include','updatedAt','body','omit','create','file','originalname','basename','filename','mimetype','download','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','lodash','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','sendStatus','status','json','undefined','limit','count','offset','set','reject','save','update','then','destroy','end','error','stack','name','send','map','Attachment','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','findAll','show','params','length','find'];(function(_0xa8369a,_0x3d2319){var _0x4b74b7=function(_0x11d138){while(--_0x11d138){_0xa8369a['push'](_0xa8369a['shift']());}};_0x4b74b7(++_0x3d2319);}(_0x7e75,0x1d4));var _0x57e7=function(_0x4d75b4,_0x1eca80){_0x4d75b4=_0x4d75b4-0x0;var _0xaf0841=_0x7e75[_0x4d75b4];return _0xaf0841;};'use strict';var emlformat=require(_0x57e7('0x0'));var rimraf=require(_0x57e7('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x57e7('0x2'));var rp=require(_0x57e7('0x3'));var moment=require(_0x57e7('0x4'));var BPromise=require(_0x57e7('0x5'));var Mustache=require(_0x57e7('0x6'));var util=require(_0x57e7('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x57e7('0x8'));var ejs=require(_0x57e7('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x57e7('0xa'));var squel=require('squel');var crypto=require(_0x57e7('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x57e7('0xc'));var toCsv=require(_0x57e7('0x8'));var querystring=require(_0x57e7('0xd'));var Papa=require(_0x57e7('0xe'));var Redis=require(_0x57e7('0xf'));var authService=require(_0x57e7('0x10'));var qs=require(_0x57e7('0x11'));var as=require(_0x57e7('0x12'));var hardwareService=require(_0x57e7('0x13'));var logger=require(_0x57e7('0x14'))('api');var utils=require(_0x57e7('0x15'));var config=require(_0x57e7('0x16'));var licenseUtil=require(_0x57e7('0x17'));var db=require(_0x57e7('0x18'))['db'];function respondWithStatusCode(_0x362dfa,_0x4bc873){_0x4bc873=_0x4bc873||0xcc;return function(_0x5e9796){if(_0x5e9796){return _0x362dfa[_0x57e7('0x19')](_0x4bc873);}return _0x362dfa[_0x57e7('0x1a')](_0x4bc873)['end']();};}function respondWithResult(_0x19bf37,_0x2e99bd){_0x2e99bd=_0x2e99bd||0xc8;return function(_0x4eb45e){if(_0x4eb45e){return _0x19bf37[_0x57e7('0x1a')](_0x2e99bd)[_0x57e7('0x1b')](_0x4eb45e);}};}function respondWithFilteredResult(_0x5ab13f,_0x1d6bf1){return function(_0x3b2111){if(_0x3b2111){var _0x3fd66c=typeof _0x1d6bf1['offset']===_0x57e7('0x1c')&&typeof _0x1d6bf1[_0x57e7('0x1d')]===_0x57e7('0x1c');var _0x2971be=_0x3b2111[_0x57e7('0x1e')];var _0x2c2bbe=_0x3fd66c?0x0:_0x1d6bf1['offset'];var _0x52c4f1=_0x3fd66c?_0x3b2111[_0x57e7('0x1e')]:_0x1d6bf1[_0x57e7('0x1f')]+_0x1d6bf1[_0x57e7('0x1d')];var _0x469f07;if(_0x52c4f1>=_0x2971be){_0x52c4f1=_0x2971be;_0x469f07=0xc8;}else{_0x469f07=0xce;}_0x5ab13f[_0x57e7('0x1a')](_0x469f07);return _0x5ab13f[_0x57e7('0x20')]('Content-Range',_0x2c2bbe+'-'+_0x52c4f1+'/'+_0x2971be)[_0x57e7('0x1b')](_0x3b2111);}return null;};}function patchUpdates(_0x4ed07d){return function(_0x3edada){try{jsonpatch['apply'](_0x3edada,_0x4ed07d,!![]);}catch(_0x15ab09){return BPromise[_0x57e7('0x21')](_0x15ab09);}return _0x3edada[_0x57e7('0x22')]();};}function saveUpdates(_0x1625e0,_0x293ac5){return function(_0x4d2270){if(_0x4d2270){return _0x4d2270[_0x57e7('0x23')](_0x1625e0)[_0x57e7('0x24')](function(_0x57b82c){return _0x57b82c;});}return null;};}function removeEntity(_0x43c2d0,_0x334e70){return function(_0x4cf689){if(_0x4cf689){return _0x4cf689[_0x57e7('0x25')]()['then'](function(){_0x43c2d0[_0x57e7('0x1a')](0xcc)[_0x57e7('0x26')]();});}};}function handleEntityNotFound(_0x2cce38,_0x4b02f8){return function(_0x1de6db){if(!_0x1de6db){_0x2cce38[_0x57e7('0x19')](0x194);}return _0x1de6db;};}function handleError(_0x132ad4,_0x58660b){_0x58660b=_0x58660b||0x1f4;return function(_0x5019de){logger[_0x57e7('0x27')](_0x5019de[_0x57e7('0x28')]);if(_0x5019de[_0x57e7('0x29')]){delete _0x5019de[_0x57e7('0x29')];}_0x132ad4[_0x57e7('0x1a')](_0x58660b)[_0x57e7('0x2a')](_0x5019de);};}exports['index']=function(_0x3a3fa2,_0x1ec2bb){var _0xf16e7b={},_0x31e525={},_0x14d807={'count':0x0,'rows':[]};var _0x32db8c=_[_0x57e7('0x2b')](db[_0x57e7('0x2c')][_0x57e7('0x2d')],function(_0x3da06c){return{'name':_0x3da06c[_0x57e7('0x2e')],'type':_0x3da06c[_0x57e7('0x2f')][_0x57e7('0x30')]};});_0x31e525[_0x57e7('0x31')]=_[_0x57e7('0x2b')](_0x32db8c,_0x57e7('0x29'));_0x31e525[_0x57e7('0x32')]=_[_0x57e7('0x33')](_0x3a3fa2[_0x57e7('0x32')]);_0x31e525[_0x57e7('0x34')]=_[_0x57e7('0x35')](_0x31e525['model'],_0x31e525[_0x57e7('0x32')]);_0xf16e7b['attributes']=_[_0x57e7('0x35')](_0x31e525[_0x57e7('0x31')],qs['fields'](_0x3a3fa2[_0x57e7('0x32')][_0x57e7('0x36')]));_0xf16e7b[_0x57e7('0x37')]=_0xf16e7b[_0x57e7('0x37')]['length']?_0xf16e7b[_0x57e7('0x37')]:_0x31e525[_0x57e7('0x31')];if(!_0x3a3fa2[_0x57e7('0x32')][_0x57e7('0x38')](_0x57e7('0x39'))){_0xf16e7b[_0x57e7('0x1d')]=qs[_0x57e7('0x1d')](_0x3a3fa2[_0x57e7('0x32')]['limit']);_0xf16e7b[_0x57e7('0x1f')]=qs[_0x57e7('0x1f')](_0x3a3fa2['query']['offset']);}_0xf16e7b[_0x57e7('0x3a')]=qs[_0x57e7('0x3b')](_0x3a3fa2[_0x57e7('0x32')][_0x57e7('0x3b')]);_0xf16e7b[_0x57e7('0x3c')]=qs[_0x57e7('0x34')](_[_0x57e7('0x3d')](_0x3a3fa2[_0x57e7('0x32')],_0x31e525['filters']),_0x32db8c);if(_0x3a3fa2[_0x57e7('0x32')]['filter']){_0xf16e7b[_0x57e7('0x3c')]=_[_0x57e7('0x3e')](_0xf16e7b[_0x57e7('0x3c')],{'$or':_[_0x57e7('0x2b')](_0x32db8c,function(_0x10e330){if(_0x10e330[_0x57e7('0x2f')]!==_0x57e7('0x3f')){var _0x2c60af={};_0x2c60af[_0x10e330[_0x57e7('0x29')]]={'$like':'%'+_0x3a3fa2[_0x57e7('0x32')][_0x57e7('0x40')]+'%'};return _0x2c60af;}})});}_0xf16e7b=_[_0x57e7('0x3e')]({},_0xf16e7b,_0x3a3fa2[_0x57e7('0x41')]);var _0x1244fd={'where':_0xf16e7b['where']};return db[_0x57e7('0x2c')][_0x57e7('0x1e')](_0x1244fd)['then'](function(_0xf7207f){_0x14d807[_0x57e7('0x1e')]=_0xf7207f;if(_0x3a3fa2[_0x57e7('0x32')][_0x57e7('0x42')]){_0xf16e7b['include']=[{'all':!![]}];}return db[_0x57e7('0x2c')][_0x57e7('0x43')](_0xf16e7b);})[_0x57e7('0x24')](function(_0xd1ac7e){_0x14d807['rows']=_0xd1ac7e;return _0x14d807;})['then'](respondWithFilteredResult(_0x1ec2bb,_0xf16e7b))['catch'](handleError(_0x1ec2bb,null));};exports[_0x57e7('0x44')]=function(_0x21467b,_0x1f29bd){var _0x49a2fc={'raw':!![],'where':{'id':_0x21467b[_0x57e7('0x45')]['id']}},_0xf4c6f6={};_0xf4c6f6['model']=_[_0x57e7('0x33')](db[_0x57e7('0x2c')]['rawAttributes']);_0xf4c6f6['query']=_['keys'](_0x21467b[_0x57e7('0x32')]);_0xf4c6f6['filters']=_['intersection'](_0xf4c6f6['model'],_0xf4c6f6[_0x57e7('0x32')]);_0x49a2fc[_0x57e7('0x37')]=_[_0x57e7('0x35')](_0xf4c6f6['model'],qs[_0x57e7('0x36')](_0x21467b['query']['fields']));_0x49a2fc[_0x57e7('0x37')]=_0x49a2fc['attributes'][_0x57e7('0x46')]?_0x49a2fc[_0x57e7('0x37')]:_0xf4c6f6[_0x57e7('0x31')];if(_0x21467b[_0x57e7('0x32')][_0x57e7('0x42')]){_0x49a2fc['include']=[{'all':!![]}];}_0x49a2fc=_[_0x57e7('0x3e')]({},_0x49a2fc,_0x21467b['options']);return db[_0x57e7('0x2c')][_0x57e7('0x47')](_0x49a2fc)['then'](handleEntityNotFound(_0x1f29bd,null))[_0x57e7('0x24')](respondWithResult(_0x1f29bd,null))[_0x57e7('0x48')](handleError(_0x1f29bd,null));};exports[_0x57e7('0x49')]=function(_0x323745,_0x1ffc79){var _0x11dd29={'where':{'id':_0x323745[_0x57e7('0x45')]['id']}},_0x290bf3={};_0x290bf3[_0x57e7('0x31')]=_[_0x57e7('0x33')](db[_0x57e7('0x2c')][_0x57e7('0x2d')]);_0x11dd29['attributes']=_['intersection'](_0x290bf3[_0x57e7('0x31')],qs[_0x57e7('0x36')](_0x323745['query']['fields']));_0x11dd29[_0x57e7('0x37')]=_0x11dd29['attributes']['length']?_0x11dd29[_0x57e7('0x37')]:_0x290bf3[_0x57e7('0x31')];if(_0x323745[_0x57e7('0x32')][_0x57e7('0x42')]){_0x11dd29[_0x57e7('0x4a')]=[{'all':!![]}];}_0x11dd29=_['merge']({},_0x11dd29,_0x323745[_0x57e7('0x41')]);return db['Attachment'][_0x57e7('0x47')](_0x11dd29)[_0x57e7('0x24')](handleEntityNotFound(_0x1ffc79,null))[_0x57e7('0x24')](function(_0x4995d5){if(_0x4995d5){var _0x20892c=_0x4995d5['get']({'plain':!![]});_0x20892c=qs['omit'](_0x20892c,['id','createdAt',_0x57e7('0x4b')]);_0x323745[_0x57e7('0x4c')]=_[_0x57e7('0x4d')](_0x323745[_0x57e7('0x4c')],['id','createdAt',_0x57e7('0x4b')]);return db[_0x57e7('0x2c')][_0x57e7('0x4e')](_[_0x57e7('0x3e')](_0x20892c,_0x323745[_0x57e7('0x4c')]),{'include':_0x323745[_0x57e7('0x32')]['includeAll']?[{'all':!![]}]:undefined});}})[_0x57e7('0x24')](respondWithResult(_0x1ffc79,0xc9))['catch'](handleError(_0x1ffc79,null));};exports[_0x57e7('0x23')]=function(_0x2e5bc8,_0x5ef5c9){if(_0x2e5bc8[_0x57e7('0x4c')]['id']){delete _0x2e5bc8['body']['id'];}return db[_0x57e7('0x2c')][_0x57e7('0x47')]({'where':{'id':_0x2e5bc8[_0x57e7('0x45')]['id']}})['then'](handleEntityNotFound(_0x5ef5c9,null))[_0x57e7('0x24')](saveUpdates(_0x2e5bc8[_0x57e7('0x4c')],null))[_0x57e7('0x24')](respondWithResult(_0x5ef5c9,null))[_0x57e7('0x48')](handleError(_0x5ef5c9,null));};exports[_0x57e7('0x25')]=function(_0x5065ab,_0x3c73fd){return db[_0x57e7('0x2c')]['find']({'where':{'id':_0x5065ab[_0x57e7('0x45')]['id']}})['then'](handleEntityNotFound(_0x3c73fd,null))[_0x57e7('0x24')](removeEntity(_0x3c73fd,null))[_0x57e7('0x48')](handleError(_0x3c73fd,null));};exports['create']=function(_0x23fb78,_0x4eed94,_0x3d6da6){_0x23fb78[_0x57e7('0x4c')][_0x57e7('0x29')]=_0x23fb78[_0x57e7('0x4f')][_0x57e7('0x50')];_0x23fb78[_0x57e7('0x4c')][_0x57e7('0x51')]=_0x23fb78[_0x57e7('0x4f')][_0x57e7('0x52')];_0x23fb78['body'][_0x57e7('0x2f')]=_0x23fb78['file'][_0x57e7('0x53')];return db[_0x57e7('0x2c')][_0x57e7('0x4e')](_0x23fb78[_0x57e7('0x4c')])[_0x57e7('0x24')](respondWithResult(_0x4eed94,0xc9))[_0x57e7('0x48')](handleError(_0x4eed94,null));};exports[_0x57e7('0x54')]=function(_0x439c2a,_0x1861e6,_0x58f84e){return db[_0x57e7('0x2c')]['findOne']({'where':{'id':_0x439c2a['params']['id']},'raw':!![]})[_0x57e7('0x24')](handleEntityNotFound(_0x1861e6,null))[_0x57e7('0x24')](function(_0x218fbf){if(_0x218fbf){var _0x191346=_0x218fbf[_0x57e7('0x55')]!==null;var _0x4870e1=path[_0x57e7('0x56')](config[_0x57e7('0x57')],_0x57e7('0x58'));if(_0x191346){_0x4870e1=path[_0x57e7('0x56')](_0x4870e1,_0x57e7('0x59'));}var _0x14f461=path[_0x57e7('0x56')](_0x4870e1,_0x218fbf['basename']);return _0x1861e6[_0x57e7('0x54')](_0x14f461);}})[_0x57e7('0x48')](handleError(_0x1861e6,null));};
\ No newline at end of file
index 10a5399..7056777 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c5f=['api','moment','request-promise','path','rimraf','../../config/environment','exports','define','Attachment','util'];(function(_0x3a2a3c,_0x37bd31){var _0x50ac9a=function(_0x494a7f){while(--_0x494a7f){_0x3a2a3c['push'](_0x3a2a3c['shift']());}};_0x50ac9a(++_0x37bd31);}(_0x4c5f,0x1a3));var _0xf4c5=function(_0x139270,_0x50516f){_0x139270=_0x139270-0x0;var _0x523e1e=_0x4c5f[_0x139270];return _0x523e1e;};'use strict';var _=require('lodash');var util=require(_0xf4c5('0x0'));var logger=require('../../config/logger')(_0xf4c5('0x1'));var moment=require(_0xf4c5('0x2'));var BPromise=require('bluebird');var rp=require(_0xf4c5('0x3'));var fs=require('fs');var path=require(_0xf4c5('0x4'));var rimraf=require(_0xf4c5('0x5'));var config=require(_0xf4c5('0x6'));var attributes=require('./attachment.attributes');module[_0xf4c5('0x7')]=function(_0x51b680,_0x580373){return _0x51b680[_0xf4c5('0x8')](_0xf4c5('0x9'),attributes,{'tableName':'attachments','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5a3a=['bluebird','request-promise','path','../../config/environment','./attachment.attributes','exports','define','Attachment','lodash','util','../../config/logger'];(function(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0x5a3a,0x1d6));var _0xa5a3=function(_0x3823ef,_0x158ade){_0x3823ef=_0x3823ef-0x0;var _0x4e256f=_0x5a3a[_0x3823ef];return _0x4e256f;};'use strict';var _=require(_0xa5a3('0x0'));var util=require(_0xa5a3('0x1'));var logger=require(_0xa5a3('0x2'))('api');var moment=require('moment');var BPromise=require(_0xa5a3('0x3'));var rp=require(_0xa5a3('0x4'));var fs=require('fs');var path=require(_0xa5a3('0x5'));var rimraf=require('rimraf');var config=require(_0xa5a3('0x6'));var attributes=require(_0xa5a3('0x7'));module[_0xa5a3('0x8')]=function(_0x3c2d67,_0x1f7592){return _0x3c2d67[_0xa5a3('0x9')](_0xa5a3('0xa'),attributes,{'tableName':'attachments','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 60932c3..0044caf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0eaa=['rpc','../../config/environment','jayson/promise','http','then','info','Attachment,\x20%s,\x20%s','request\x20sent','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateAttachment','Attachment','create','body','options','raw','lodash','util','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x1ce759,_0x417860){var _0x26a4a7=function(_0x593cb5){while(--_0x593cb5){_0x1ce759['push'](_0x1ce759['shift']());}};_0x26a4a7(++_0x417860);}(_0x0eaa,0x1c5));var _0xa0ea=function(_0x356596,_0x1a1a8c){_0x356596=_0x356596-0x0;var _0x231fa9=_0x0eaa[_0x356596];return _0x231fa9;};'use strict';var _=require(_0xa0ea('0x0'));var util=require(_0xa0ea('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xa0ea('0x2'));var fs=require('fs');var Redis=require(_0xa0ea('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xa0ea('0x4'));var logger=require(_0xa0ea('0x5'))(_0xa0ea('0x6'));var config=require(_0xa0ea('0x7'));var jayson=require(_0xa0ea('0x8'));var client=jayson['client'][_0xa0ea('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x521881,_0x4b8856,_0x361178){return new BPromise(function(_0x8632a1,_0x5b2adc){return client['request'](_0x521881,_0x361178)[_0xa0ea('0xa')](function(_0x2746f2){logger[_0xa0ea('0xb')](_0xa0ea('0xc'),_0x4b8856,_0xa0ea('0xd'));logger['debug'](_0xa0ea('0xe'),_0x4b8856,_0xa0ea('0xd'),JSON[_0xa0ea('0xf')](_0x2746f2));if(_0x2746f2[_0xa0ea('0x10')]){if(_0x2746f2['error'][_0xa0ea('0x11')]===0x1f4){logger[_0xa0ea('0x10')](_0xa0ea('0xc'),_0x4b8856,_0x2746f2[_0xa0ea('0x10')][_0xa0ea('0x12')]);return _0x5b2adc(_0x2746f2['error'][_0xa0ea('0x12')]);}logger[_0xa0ea('0x10')]('Attachment,\x20%s,\x20%s',_0x4b8856,_0x2746f2[_0xa0ea('0x10')][_0xa0ea('0x12')]);return _0x8632a1(_0x2746f2[_0xa0ea('0x10')][_0xa0ea('0x12')]);}else{logger['info'](_0xa0ea('0xc'),_0x4b8856,_0xa0ea('0xd'));_0x8632a1(_0x2746f2[_0xa0ea('0x13')][_0xa0ea('0x12')]);}})[_0xa0ea('0x14')](function(_0x34b94c){logger[_0xa0ea('0x10')](_0xa0ea('0xc'),_0x4b8856,_0x34b94c);_0x5b2adc(_0x34b94c);});});}exports[_0xa0ea('0x15')]=function(_0x405f7f){var _0x581f59=this;return new Promise(function(_0x4ca082,_0xe116e2){return db[_0xa0ea('0x16')][_0xa0ea('0x17')](_0x405f7f[_0xa0ea('0x18')],{'raw':_0x405f7f[_0xa0ea('0x19')]?_0x405f7f[_0xa0ea('0x19')][_0xa0ea('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x916f1){logger[_0xa0ea('0xb')](_0xa0ea('0x15'),_0x405f7f);logger['debug'](_0xa0ea('0x15'),_0x405f7f,JSON[_0xa0ea('0xf')](_0x916f1));_0x4ca082(_0x916f1);})[_0xa0ea('0x14')](function(_0x12cda2){logger[_0xa0ea('0x10')](_0xa0ea('0x15'),_0x12cda2['message'],_0x405f7f);_0xe116e2(_0x581f59[_0xa0ea('0x10')](0x1f4,_0x12cda2['message']));});});};
\ No newline at end of file
+var _0xb2ff=['body','options','CreateAttachment','lodash','util','bluebird','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','Attachment,\x20%s,\x20%s','message','result','catch','Attachment','create'];(function(_0x221888,_0x1d2891){var _0x18bc6c=function(_0x485060){while(--_0x485060){_0x221888['push'](_0x221888['shift']());}};_0x18bc6c(++_0x1d2891);}(_0xb2ff,0x123));var _0xfb2f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb2ff[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xfb2f('0x0'));var util=require(_0xfb2f('0x1'));var moment=require('moment');var BPromise=require(_0xfb2f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xfb2f('0x3'));var logger=require('../../config/logger')(_0xfb2f('0x4'));var config=require(_0xfb2f('0x5'));var jayson=require(_0xfb2f('0x6'));var client=jayson[_0xfb2f('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4a0fd7,_0x28cb13,_0x4ff2df){return new BPromise(function(_0x34c04e,_0x4588d6){return client[_0xfb2f('0x8')](_0x4a0fd7,_0x4ff2df)[_0xfb2f('0x9')](function(_0x5abcdb){logger[_0xfb2f('0xa')]('Attachment,\x20%s,\x20%s',_0x28cb13,_0xfb2f('0xb'));logger['debug'](_0xfb2f('0xc'),_0x28cb13,_0xfb2f('0xb'),JSON[_0xfb2f('0xd')](_0x5abcdb));if(_0x5abcdb[_0xfb2f('0xe')]){if(_0x5abcdb[_0xfb2f('0xe')]['code']===0x1f4){logger[_0xfb2f('0xe')](_0xfb2f('0xf'),_0x28cb13,_0x5abcdb[_0xfb2f('0xe')][_0xfb2f('0x10')]);return _0x4588d6(_0x5abcdb[_0xfb2f('0xe')][_0xfb2f('0x10')]);}logger[_0xfb2f('0xe')](_0xfb2f('0xf'),_0x28cb13,_0x5abcdb['error'][_0xfb2f('0x10')]);return _0x34c04e(_0x5abcdb[_0xfb2f('0xe')][_0xfb2f('0x10')]);}else{logger[_0xfb2f('0xa')](_0xfb2f('0xf'),_0x28cb13,'request\x20sent');_0x34c04e(_0x5abcdb[_0xfb2f('0x11')][_0xfb2f('0x10')]);}})[_0xfb2f('0x12')](function(_0x240b79){logger[_0xfb2f('0xe')](_0xfb2f('0xf'),_0x28cb13,_0x240b79);_0x4588d6(_0x240b79);});});}exports['CreateAttachment']=function(_0x1d28e7){var _0x239a88=this;return new Promise(function(_0x507caa,_0x28bb16){return db[_0xfb2f('0x13')][_0xfb2f('0x14')](_0x1d28e7[_0xfb2f('0x15')],{'raw':_0x1d28e7[_0xfb2f('0x16')]?_0x1d28e7['options']['raw']===undefined?!![]:![]:!![]})[_0xfb2f('0x9')](function(_0x5d0afa){logger[_0xfb2f('0xa')]('CreateAttachment',_0x1d28e7);logger['debug'](_0xfb2f('0x17'),_0x1d28e7,JSON[_0xfb2f('0xd')](_0x5d0afa));_0x507caa(_0x5d0afa);})['catch'](function(_0x296340){logger[_0xfb2f('0xe')](_0xfb2f('0x17'),_0x296340[_0xfb2f('0x10')],_0x1d28e7);_0x28bb16(_0x239a88[_0xfb2f('0xe')](0x1f4,_0x296340['message']));});});};
\ No newline at end of file
index 44da92e..42c2a84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['./attachment.controller','get','isAuthenticated','index','/:id','show','download','/:id/clone','clone','root','server/files/attachments/','now','post','single','file','create','put','update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x1f6873,_0x2ea6f9){var _0x35f3bd=function(_0x5e11c1){while(--_0x5e11c1){_0x1f6873['push'](_0x1f6873['shift']());}};_0x35f3bd(++_0x2ea6f9);}(_0x2032,0xd9));var _0x2203=function(_0x31cc71,_0x230560){_0x31cc71=_0x31cc71-0x0;var _0xf72cbd=_0x2032[_0x31cc71];return _0xf72cbd;};'use strict';var multer=require('multer');var util=require(_0x2203('0x0'));var path=require(_0x2203('0x1'));var timeout=require(_0x2203('0x2'));var express=require('express');var router=express[_0x2203('0x3')]();var fs_extra=require(_0x2203('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2203('0x5'));var config=require(_0x2203('0x6'));var controller=require(_0x2203('0x7'));router[_0x2203('0x8')]('/',auth[_0x2203('0x9')](),controller[_0x2203('0xa')]);router[_0x2203('0x8')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0xc')]);router[_0x2203('0x8')]('/:id/download',auth['isAuthenticated'](),controller[_0x2203('0xd')]);router['post'](_0x2203('0xe'),auth[_0x2203('0x9')](),controller[_0x2203('0xf')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x849049,_0x4a6832,_0x3f690a){_0x3f690a(null,path['join'](config[_0x2203('0x10')],_0x2203('0x11')));},'filename':function(_0x4b9376,_0x583bc7,_0x585c76){_0x585c76(null,util['format']('%s-%s',Date[_0x2203('0x12')](),_0x583bc7['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x2203('0x13')]('/',upload[_0x2203('0x14')](_0x2203('0x15')),controller[_0x2203('0x16')]);router[_0x2203('0x17')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0x18')]);router[_0x2203('0x19')](_0x2203('0xb'),auth['isAuthenticated'](),controller[_0x2203('0x1a')]);module[_0x2203('0x1b')]=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(_0x1a881a,_0x2ca020){var _0x1ac705=function(_0x595466){while(--_0x595466){_0x1a881a['push'](_0x1a881a['shift']());}};_0x1ac705(++_0x2ca020);}(_0xb10b,0x12a));var _0xbb10=function(_0x2c9e54,_0x178247){_0x2c9e54=_0x2c9e54-0x0;var _0x25d074=_0xb10b[_0x2c9e54];return _0x25d074;};'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 6da3e69..e46f73a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad6b=['../../components/auth/service','../../config/utils','login','authenticate','profile','email','callback','google','use','clientID','clientSecret','secret','findOne','allowedLoginAttempts','blockDuration','then','User','find','map','emails','value','user','agent','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockedAt','add','clearBlockUser','getLicense','catch','lodash','passport','Strategy','moment','../../mysqldb'];(function(_0x2235bf,_0x3a06a7){var _0x4c3a64=function(_0x3b3bb6){while(--_0x3b3bb6){_0x2235bf['push'](_0x2235bf['shift']());}};_0x4c3a64(++_0x3a06a7);}(_0xad6b,0x159));var _0xbad6=function(_0x45783c,_0x49c56d){_0x45783c=_0x45783c-0x0;var _0x1161da=_0xad6b[_0x45783c];return _0x1161da;};'use strict';var _=require(_0xbad6('0x0'));var passport=require(_0xbad6('0x1'));var GoogleStrategy=require('passport-google-oauth20')[_0xbad6('0x2')];var moment=require(_0xbad6('0x3'));var db=require(_0xbad6('0x4'))['db'];var config=require('../../config/environment');var signToken=require(_0xbad6('0x5'))['signToken'];var utils=require(_0xbad6('0x6'));exports[_0xbad6('0x7')]=passport[_0xbad6('0x8')]('google',{'failureRedirect':'/login','scope':[_0xbad6('0x9'),_0xbad6('0xa')],'session':![]});exports[_0xbad6('0xb')]=passport[_0xbad6('0x8')](_0xbad6('0xc'),{'failureRedirect':'/login','session':![]});passport[_0xbad6('0xd')](new GoogleStrategy({'clientID':config[_0xbad6('0xc')]?config[_0xbad6('0xc')][_0xbad6('0xe')]:'id','clientSecret':config[_0xbad6('0xc')]?config[_0xbad6('0xc')][_0xbad6('0xf')]:_0xbad6('0x10'),'callbackURL':config[_0xbad6('0xc')]?config[_0xbad6('0xc')]['callbackURL']:''},function(_0xd29333,_0x403d59,_0x12005c,_0x14e47b){var _0x6b9e27,_0x17a767;return db['Setting'][_0xbad6('0x11')]({'where':{'id':0x1},'attributes':[_0xbad6('0x12'),_0xbad6('0x13')],'raw':!![]})[_0xbad6('0x14')](function(_0x38012a){_0x6b9e27=_0x38012a;return db[_0xbad6('0x15')][_0xbad6('0x16')]({'where':{'email':_[_0xbad6('0x17')](_0x12005c[_0xbad6('0x18')],_0xbad6('0x19')),'role':{'$or':['admin',_0xbad6('0x1a'),_0xbad6('0x1b')]}}});})[_0xbad6('0x14')](function(_0x3ad476){_0x17a767=_0x3ad476;if(_0x17a767){if(_0x17a767[_0xbad6('0x1c')]){return _0x14e47b(_0xbad6('0x1d'));}else if(_0x6b9e27[_0xbad6('0x13')]>0x0){if(_0x17a767['blocked']){if(moment(_0x17a767[_0xbad6('0x1e')])[_0xbad6('0x1f')](_0x6b9e27[_0xbad6('0x13')],'minutes')>moment()){return _0x14e47b(_0xbad6('0x1d'));}else{return utils[_0xbad6('0x20')](_0x17a767,0x0,![],null)[_0xbad6('0x14')](function(){return utils['getLicense'](_0x17a767);})['then'](function(){return _0x14e47b(null,_0x17a767);});}}else{return utils[_0xbad6('0x21')](_0x17a767)[_0xbad6('0x14')](function(){return _0x14e47b(null,_0x17a767);});}}else{return utils[_0xbad6('0x21')](_0x17a767)[_0xbad6('0x14')](function(){return _0x14e47b(null,_0x17a767);});}}return _0x14e47b('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');})[_0xbad6('0x22')](function(_0x1fd6f0){_0x14e47b(_0x1fd6f0);});}));
\ No newline at end of file
+var _0x07db=['blocked','add','clearBlockUser','getLicense','lodash','passport','passport-google-oauth20','Strategy','../../mysqldb','../../config/environment','../../components/auth/service','../../config/utils','login','google','/login','profile','callback','authenticate','use','clientID','clientSecret','secret','Setting','findOne','blockDuration','User','find','map','emails','admin','user','agent','then','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0x07db,0x19c));var _0xb07d=function(_0x2fdce0,_0x496242){_0x2fdce0=_0x2fdce0-0x0;var _0x36f07e=_0x07db[_0x2fdce0];return _0x36f07e;};'use strict';var _=require(_0xb07d('0x0'));var passport=require(_0xb07d('0x1'));var GoogleStrategy=require(_0xb07d('0x2'))[_0xb07d('0x3')];var moment=require('moment');var db=require(_0xb07d('0x4'))['db'];var config=require(_0xb07d('0x5'));var signToken=require(_0xb07d('0x6'))['signToken'];var utils=require(_0xb07d('0x7'));exports[_0xb07d('0x8')]=passport['authenticate'](_0xb07d('0x9'),{'failureRedirect':_0xb07d('0xa'),'scope':[_0xb07d('0xb'),'email'],'session':![]});exports[_0xb07d('0xc')]=passport[_0xb07d('0xd')](_0xb07d('0x9'),{'failureRedirect':_0xb07d('0xa'),'session':![]});passport[_0xb07d('0xe')](new GoogleStrategy({'clientID':config[_0xb07d('0x9')]?config[_0xb07d('0x9')][_0xb07d('0xf')]:'id','clientSecret':config[_0xb07d('0x9')]?config[_0xb07d('0x9')][_0xb07d('0x10')]:_0xb07d('0x11'),'callbackURL':config[_0xb07d('0x9')]?config[_0xb07d('0x9')]['callbackURL']:''},function(_0x131f53,_0x2464c7,_0x9ac877,_0x46bab6){var _0x17a2aa,_0x24390b;return db[_0xb07d('0x12')][_0xb07d('0x13')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xb07d('0x14')],'raw':!![]})['then'](function(_0x12cf9a){_0x17a2aa=_0x12cf9a;return db[_0xb07d('0x15')][_0xb07d('0x16')]({'where':{'email':_[_0xb07d('0x17')](_0x9ac877[_0xb07d('0x18')],'value'),'role':{'$or':[_0xb07d('0x19'),_0xb07d('0x1a'),_0xb07d('0x1b')]}}});})[_0xb07d('0x1c')](function(_0xf6e454){_0x24390b=_0xf6e454;if(_0x24390b){if(_0x24390b['disabled']){return _0x46bab6(_0xb07d('0x1d'));}else if(_0x17a2aa[_0xb07d('0x14')]>0x0){if(_0x24390b[_0xb07d('0x1e')]){if(moment(_0x24390b['blockedAt'])[_0xb07d('0x1f')](_0x17a2aa['blockDuration'],'minutes')>moment()){return _0x46bab6(_0xb07d('0x1d'));}else{return utils[_0xb07d('0x20')](_0x24390b,0x0,![],null)[_0xb07d('0x1c')](function(){return utils[_0xb07d('0x21')](_0x24390b);})['then'](function(){return _0x46bab6(null,_0x24390b);});}}else{return utils[_0xb07d('0x21')](_0x24390b)[_0xb07d('0x1c')](function(){return _0x46bab6(null,_0x24390b);});}}else{return utils[_0xb07d('0x21')](_0x24390b)[_0xb07d('0x1c')](function(){return _0x46bab6(null,_0x24390b);});}}return _0x46bab6(_0xb07d('0x1d'));})['catch'](function(_0x126e51){_0x46bab6(_0x126e51);});}));
\ No newline at end of file
index 5cbf2ba..25fe1aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9479=['Router','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','login','get','isMiddleware','express','passport'];(function(_0x22cdfc,_0x205dfe){var _0x48629f=function(_0x5809ce){while(--_0x5809ce){_0x22cdfc['push'](_0x22cdfc['shift']());}};_0x48629f(++_0x205dfe);}(_0x9479,0x10c));var _0x9947=function(_0x4454c3,_0x24c130){_0x4454c3=_0x4454c3-0x0;var _0x195fa6=_0x9479[_0x4454c3];return _0x195fa6;};'use strict';var express=require(_0x9947('0x0'));var passport=require(_0x9947('0x1'));var router=express[_0x9947('0x2')]();var controller=require(_0x9947('0x3'));var userController=require(_0x9947('0x4'));var authService=require(_0x9947('0x5'));router['get']('/',controller[_0x9947('0x6')]);router[_0x9947('0x7')]('/callback',controller['callback'],authService[_0x9947('0x8')],userController[_0x9947('0x6')],authService['setTokenCookie']);module['exports']=router;
\ No newline at end of file
+var _0x3fc6=['get','login','/callback','setTokenCookie','exports','express','passport','Router','../user/user.controller.js','../../components/auth/service'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x3fc6,0x159));var _0x63fc=function(_0x591b32,_0x5d7305){_0x591b32=_0x591b32-0x0;var _0x4f68d3=_0x3fc6[_0x591b32];return _0x4f68d3;};'use strict';var express=require(_0x63fc('0x0'));var passport=require(_0x63fc('0x1'));var router=express[_0x63fc('0x2')]();var controller=require('./authGoogle.controller');var userController=require(_0x63fc('0x3'));var authService=require(_0x63fc('0x4'));router[_0x63fc('0x5')]('/',controller[_0x63fc('0x6')]);router[_0x63fc('0x5')](_0x63fc('0x7'),controller['callback'],authService['isMiddleware'],userController[_0x63fc('0x6')],authService[_0x63fc('0x8')]);module[_0x63fc('0x9')]=router;
\ No newline at end of file
index 3ec5a32..8784d23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x481c=['findOne','allowedLoginAttempts','password','disabled','blocked','blockedAt','loginAttempts','admin','then','name','authenticate','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockDuration','add','minutes','clearBlockUser','getLicense','catch','MailAccount','find','email','MailServerOut','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','host','port','secure','auth','user','pass','merge','\x22%s\x22\x20<%s>','error','format','message','stringify','login','local','Something\x20went\x20wrong,\x20please\x20try\x20again.','role','json','forgot','Email\x20parameter\x20is\x20missing','generate','body','toLowerCase','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','https://','headers','status','send','Reset\x20Email\x20sent!','reset','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','validatePasswordHistory','previousPasswords','resetPasswordExpires','use','util','passport','passport-local','jayson/promise','lodash','randomstring','moment','../../mysqldb','../../config/utils','client','http','Setting'];(function(_0x35c624,_0xc238b1){var _0x215e7b=function(_0x493396){while(--_0x493396){_0x35c624['push'](_0x35c624['shift']());}};_0x215e7b(++_0xc238b1);}(_0x481c,0x18e));var _0xc481=function(_0x2ba58f,_0x209aa5){_0x2ba58f=_0x2ba58f-0x0;var _0x4e0860=_0x481c[_0x2ba58f];return _0x4e0860;};'use strict';var util=require(_0xc481('0x0'));var passport=require(_0xc481('0x1'));var LocalStrategy=require(_0xc481('0x2'))['Strategy'];var jayson=require(_0xc481('0x3'));var _=require(_0xc481('0x4'));var rs=require(_0xc481('0x5'));var moment=require(_0xc481('0x6'));var db=require(_0xc481('0x7'))['db'];var authService=require('../../components/auth/service');var utils=require(_0xc481('0x8'));var client=jayson[_0xc481('0x9')][_0xc481('0xa')]({'port':0x232b});function localAuthenticate(_0x1b6259,_0x30cf81,_0x15155d,_0x4db90e){var _0x526777,_0x1fca01;return db[_0xc481('0xb')][_0xc481('0xc')]({'where':{'id':0x1},'attributes':[_0xc481('0xd'),'blockDuration'],'raw':!![]})['then'](function(_0x4dcba2){_0x526777=_0x4dcba2;return _0x1b6259[_0xc481('0xc')]({'attributes':['id','name',_0xc481('0xe'),'salt','role',_0xc481('0xf'),_0xc481('0x10'),_0xc481('0x11'),_0xc481('0x12')],'where':{'name':_0x30cf81,'role':{'$or':[_0xc481('0x13'),'user','agent']}}});})[_0xc481('0x14')](function(_0x3732b2){if(!_0x3732b2||_0x3732b2&&_0x3732b2[_0xc481('0x15')]!==_0x30cf81){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x1fca01=_0x3732b2;return _0x1fca01;}})[_0xc481('0x14')](function(){_0x1fca01[_0xc481('0x16')](_0x15155d,function(_0x34409e,_0x5c692c){var _0x4e6199=_0x1fca01[_0xc481('0x12')]+0x1;if(_0x34409e){return _0x4db90e(_0x34409e);}else if(!_0x5c692c){if(_0x1fca01['disabled']){return _0x4db90e(null,![],{'message':_0xc481('0x17')});}else if(_0x526777['allowedLoginAttempts']>0x0){if(_0x1fca01[_0xc481('0x10')]){if(_0x526777[_0xc481('0x18')]>0x0){if(moment(_0x1fca01[_0xc481('0x11')])[_0xc481('0x19')](_0x526777[_0xc481('0x18')],_0xc481('0x1a'))>moment()){return _0x4db90e(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xc481('0x1b')](_0x1fca01,_0x4e6199,![],null)['then'](function(){return _0x4db90e(null,![],{'message':_0xc481('0x17')});});}}else{return _0x4db90e(null,![],{'message':_0xc481('0x17')});}}else{if(_0x4e6199>=_0x526777[_0xc481('0xd')]){return utils[_0xc481('0x1b')](_0x1fca01,0x0,!![],moment())['then'](function(){return _0x4db90e(null,![],{'message':_0xc481('0x17')});});}else{return utils[_0xc481('0x1b')](_0x1fca01,_0x4e6199,![],null)[_0xc481('0x14')](function(){return _0x4db90e(null,![],{'message':_0xc481('0x17')});});}}}else{return _0x4db90e(null,![],{'message':_0xc481('0x17')});}}else{if(_0x1fca01[_0xc481('0xf')]){return _0x4db90e(null,![],{'message':_0xc481('0x17')});}else if(_0x526777[_0xc481('0xd')]>0x0){if(_0x1fca01['blocked']){if(_0x526777[_0xc481('0x18')]>0x0){if(moment(_0x1fca01['blockedAt'])[_0xc481('0x19')](_0x526777[_0xc481('0x18')],_0xc481('0x1a'))>moment()){return _0x4db90e(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xc481('0x1b')](_0x1fca01,0x0,![],null)[_0xc481('0x14')](function(){return utils['getLicense'](_0x1fca01);})['then'](function(){return _0x4db90e(null,_0x1fca01);});}}else{return _0x4db90e(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils[_0xc481('0x1b')](_0x1fca01,0x0,![],null)[_0xc481('0x14')](function(){return utils[_0xc481('0x1c')](_0x1fca01);})[_0xc481('0x14')](function(){return _0x4db90e(null,_0x1fca01);})[_0xc481('0x1d')](function(_0x1b9075){return _0x4db90e(null,![],_0x1b9075);});}}else{if(_0x1fca01[_0xc481('0x10')]){return _0x4db90e(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xc481('0x1c')](_0x1fca01)[_0xc481('0x14')](function(){return _0x4db90e(null,_0x1fca01);});}}}});})[_0xc481('0x1d')](function(_0x4f6940){return _0x4db90e(null,![],_0x4f6940);});}function sendServiceMail(_0x282071){return db[_0xc481('0x1e')][_0xc481('0x1f')]({'where':{'service':!![]},'attributes':['id',_0xc481('0x15'),_0xc481('0x20')],'include':[{'model':db[_0xc481('0x21')],'as':_0xc481('0x22')}]})[_0xc481('0x14')](function(_0xdde2a0){if(!_0xdde2a0){throw new Error(_0xc481('0x23'));}var _0x46b8ad={'tls':{'rejectUnauthorized':![]}};if(_0xdde2a0['Smtp']['service']){_0x46b8ad['service']=_0xdde2a0[_0xc481('0x22')]['service'];}else{_0x46b8ad[_0xc481('0x24')]=_0xdde2a0[_0xc481('0x22')][_0xc481('0x24')];_0x46b8ad[_0xc481('0x25')]=_0xdde2a0['Smtp']['port'];_0x46b8ad[_0xc481('0x26')]=_0xdde2a0[_0xc481('0x22')][_0xc481('0x26')];}if(_0xdde2a0[_0xc481('0x22')]['authentication']){_0x46b8ad[_0xc481('0x27')]={'user':_0xdde2a0[_0xc481('0x22')][_0xc481('0x28')],'pass':_0xdde2a0['Smtp'][_0xc481('0x29')]};}var _0x1d0e58={'account':_0x46b8ad,'message':_[_0xc481('0x2a')]({'from':util['format'](_0xc481('0x2b'),_0xdde2a0[_0xc481('0x15')],_0xdde2a0[_0xc481('0x20')]||_0xdde2a0['Smtp']['user'])},_0x282071)};return client['request']('SendMail',_0x1d0e58);})[_0xc481('0x14')](function(_0x54ffdf){if(_0x54ffdf[_0xc481('0x2c')]){throw new Error(util[_0xc481('0x2d')]('SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!',_0x54ffdf[_0xc481('0x2c')][_0xc481('0x2e')]||JSON[_0xc481('0x2f')](_0x54ffdf['error'])));}return!![];});}function handleError(_0x2187c5,_0x4d299b,_0x2af6ae){return _0x2187c5['status'](_0x4d299b||0x1f4)['send']({'message':_0x2af6ae?_0x2af6ae[_0xc481('0x2e')]||_0x2af6ae:''});}exports[_0xc481('0x30')]=function(_0x57000f,_0x34566c,_0xb59de0){passport[_0xc481('0x16')](_0xc481('0x31'),function(_0x10d521,_0xe357a8,_0x3b0a7c){var _0x1aa8c2=_0x10d521||_0x3b0a7c;if(_0x1aa8c2){return handleError(_0x34566c,0x191,_0x1aa8c2);}if(!_0xe357a8){return handleError(_0x34566c,0x194,{'message':_0xc481('0x32')});}else{var _0xe9231f={'payload':{'id':_0xe357a8['id'],'role':_0xe357a8[_0xc481('0x33')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0xe9231f)[_0xc481('0x14')](function(_0x3f87b1){_0x34566c[_0xc481('0x34')]({'id':_0xe357a8['id'],'token':_0x3f87b1,'statusCall':'','isAlreadyLogged':_0xe357a8['online']});});}})(_0x57000f,_0x34566c,_0xb59de0);};exports[_0xc481('0x35')]=function(_0x4fc53c,_0x3e0490,_0x298d1e){if(!_0x4fc53c['body'][_0xc481('0x20')]){return handleError(_0x3e0490,0x1f4,{'message':_0xc481('0x36')});}var _0x6f081f=rs[_0xc481('0x37')]();_0x4fc53c[_0xc481('0x38')][_0xc481('0x20')]=_0x4fc53c['body']['email']['trim']()[_0xc481('0x39')]();var _0x27e6aa;return db[_0xc481('0xb')][_0xc481('0xc')]({'where':{'id':0x1},'attributes':[_0xc481('0xd'),'blockDuration'],'raw':!![]})[_0xc481('0x14')](function(_0x271f8e){_0x27e6aa=_0x271f8e;return db[_0xc481('0x3a')]['find']({'where':{'email':_0x4fc53c[_0xc481('0x38')][_0xc481('0x20')]}});})[_0xc481('0x14')](function(_0x234e80){if(!_0x234e80){throw new Error(_0xc481('0x3b'));}if(_0x234e80['disabled']){throw new Error(_0xc481('0x3c'));}if(_0x234e80[_0xc481('0x10')]){if(moment(_0x234e80[_0xc481('0x11')])[_0xc481('0x19')](_0x27e6aa['blockDuration'],'minutes')>moment()){throw new Error(_0xc481('0x3d'));}else{_0x234e80['blocked']=![];_0x234e80[_0xc481('0x11')]=null;}}_0x234e80[_0xc481('0x3e')]=_0x6f081f;_0x234e80['resetPasswordExpires']=Date['now']()+0x36ee80;return _0x234e80['save']();})[_0xc481('0x14')](function(){return sendServiceMail({'to':_0x4fc53c[_0xc481('0x38')][_0xc481('0x20')],'subject':_0xc481('0x3f'),'text':_0xc481('0x40')+'Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'+_0xc481('0x41')+_0x4fc53c[_0xc481('0x42')][_0xc481('0x24')]+'/reset/'+_0x6f081f+'\x0a\x0a'+'If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a'});})[_0xc481('0x14')](function(){_0x3e0490[_0xc481('0x43')](0xc8)[_0xc481('0x44')]({'message':_0xc481('0x45')});})[_0xc481('0x1d')](function(_0x4d7eb0){return handleError(_0x3e0490,0x1f4,_0x4d7eb0);});};exports[_0xc481('0x46')]=function(_0x1bac92,_0x3e5060,_0x17f596){return db[_0xc481('0x3a')][_0xc481('0x1f')]({'where':{'resetPasswordToken':_0x1bac92[_0xc481('0x47')][_0xc481('0x48')],'resetPasswordExpires':{'$gt':Date['now']()}}})[_0xc481('0x14')](function(_0x21224f){if(!_0x21224f){throw new Error(_0xc481('0x49'));}return db['Setting'][_0xc481('0xc')]({'attributes':['id',_0xc481('0x4a'),_0xc481('0x4b'),_0xc481('0x4c')]})[_0xc481('0x14')](function(_0x8dce4c){if(_0x8dce4c[_0xc481('0x4a')])authService[_0xc481('0x4d')](_0x1bac92[_0xc481('0x38')][_0xc481('0xe')]);if(!_0x8dce4c[_0xc481('0x4b')]||!_0x21224f['previousPasswords'])return _0x21224f;authService[_0xc481('0x4e')](_0x1bac92[_0xc481('0x38')][_0xc481('0xe')],_0x21224f[_0xc481('0x4f')],_0x8dce4c[_0xc481('0x4c')]);return _0x21224f;})['then'](function(){_0x21224f[_0xc481('0xe')]=_0x1bac92[_0xc481('0x38')][_0xc481('0xe')];_0x21224f['resetPasswordToken']=null;_0x21224f[_0xc481('0x50')]=null;return _0x21224f['save']();});})[_0xc481('0x14')](function(){_0x3e5060[_0xc481('0x43')](0xc8)[_0xc481('0x44')]({'message':'Password\x20reset!'});})[_0xc481('0x1d')](function(_0x4eb435){return handleError(_0x3e5060,0x1f4,_0x4eb435);});};passport[_0xc481('0x51')](new LocalStrategy({'usernameField':_0xc481('0x15'),'passwordField':_0xc481('0xe')},function(_0x45e42c,_0x13f21c,_0x49fa33){return localAuthenticate(db[_0xc481('0x3a')],_0x45e42c,_0x13f21c,_0x49fa33);}));
\ No newline at end of file
+var _0x3437=['xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','headers','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','params','token','now','securePassword','validatePasswordPattern','enforcePasswordHistory','previousPasswords','save','Password\x20reset!','passport','passport-local','Strategy','jayson/promise','lodash','moment','../../mysqldb','../../components/auth/service','client','http','Setting','findOne','allowedLoginAttempts','blockDuration','then','name','password','salt','role','disabled','blocked','blockedAt','admin','user','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','loginAttempts','add','clearBlockUser','minutes','getLicense','catch','MailAccount','email','MailServerOut','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','port','secure','auth','pass','merge','format','request','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','status','login','Something\x20went\x20wrong,\x20please\x20try\x20again.','json','body','Email\x20parameter\x20is\x20missing','toLowerCase','User','find','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires'];(function(_0x5bdf15,_0x39f070){var _0x1c7939=function(_0x2895e9){while(--_0x2895e9){_0x5bdf15['push'](_0x5bdf15['shift']());}};_0x1c7939(++_0x39f070);}(_0x3437,0x19b));var _0x7343=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x3437[_0x17d9e3];return _0x14192d;};'use strict';var util=require('util');var passport=require(_0x7343('0x0'));var LocalStrategy=require(_0x7343('0x1'))[_0x7343('0x2')];var jayson=require(_0x7343('0x3'));var _=require(_0x7343('0x4'));var rs=require('randomstring');var moment=require(_0x7343('0x5'));var db=require(_0x7343('0x6'))['db'];var authService=require(_0x7343('0x7'));var utils=require('../../config/utils');var client=jayson[_0x7343('0x8')][_0x7343('0x9')]({'port':0x232b});function localAuthenticate(_0x8d601b,_0x4dddd4,_0x2b4096,_0x185be5){var _0xcd591,_0x200969;return db[_0x7343('0xa')][_0x7343('0xb')]({'where':{'id':0x1},'attributes':[_0x7343('0xc'),_0x7343('0xd')],'raw':!![]})[_0x7343('0xe')](function(_0x2e353e){_0xcd591=_0x2e353e;return _0x8d601b['findOne']({'attributes':['id',_0x7343('0xf'),_0x7343('0x10'),_0x7343('0x11'),_0x7343('0x12'),_0x7343('0x13'),_0x7343('0x14'),_0x7343('0x15'),'loginAttempts'],'where':{'name':_0x4dddd4,'role':{'$or':[_0x7343('0x16'),_0x7343('0x17'),'agent']}}});})[_0x7343('0xe')](function(_0x1563aa){if(!_0x1563aa||_0x1563aa&&_0x1563aa[_0x7343('0xf')]!==_0x4dddd4){throw new Error(_0x7343('0x18'));}else{_0x200969=_0x1563aa;return _0x200969;}})[_0x7343('0xe')](function(){_0x200969[_0x7343('0x19')](_0x2b4096,function(_0x3092f7,_0x51e3b0){var _0x170a6a=_0x200969[_0x7343('0x1a')]+0x1;if(_0x3092f7){return _0x185be5(_0x3092f7);}else if(!_0x51e3b0){if(_0x200969[_0x7343('0x13')]){return _0x185be5(null,![],{'message':_0x7343('0x18')});}else if(_0xcd591[_0x7343('0xc')]>0x0){if(_0x200969[_0x7343('0x14')]){if(_0xcd591[_0x7343('0xd')]>0x0){if(moment(_0x200969[_0x7343('0x15')])[_0x7343('0x1b')](_0xcd591[_0x7343('0xd')],'minutes')>moment()){return _0x185be5(null,![],{'message':_0x7343('0x18')});}else{return utils[_0x7343('0x1c')](_0x200969,_0x170a6a,![],null)[_0x7343('0xe')](function(){return _0x185be5(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}else{return _0x185be5(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x170a6a>=_0xcd591['allowedLoginAttempts']){return utils[_0x7343('0x1c')](_0x200969,0x0,!![],moment())['then'](function(){return _0x185be5(null,![],{'message':_0x7343('0x18')});});}else{return utils[_0x7343('0x1c')](_0x200969,_0x170a6a,![],null)['then'](function(){return _0x185be5(null,![],{'message':_0x7343('0x18')});});}}}else{return _0x185be5(null,![],{'message':_0x7343('0x18')});}}else{if(_0x200969['disabled']){return _0x185be5(null,![],{'message':_0x7343('0x18')});}else if(_0xcd591['allowedLoginAttempts']>0x0){if(_0x200969[_0x7343('0x14')]){if(_0xcd591[_0x7343('0xd')]>0x0){if(moment(_0x200969[_0x7343('0x15')])[_0x7343('0x1b')](_0xcd591[_0x7343('0xd')],_0x7343('0x1d'))>moment()){return _0x185be5(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x7343('0x1c')](_0x200969,0x0,![],null)[_0x7343('0xe')](function(){return utils[_0x7343('0x1e')](_0x200969);})[_0x7343('0xe')](function(){return _0x185be5(null,_0x200969);});}}else{return _0x185be5(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils[_0x7343('0x1c')](_0x200969,0x0,![],null)[_0x7343('0xe')](function(){return utils[_0x7343('0x1e')](_0x200969);})[_0x7343('0xe')](function(){return _0x185be5(null,_0x200969);})[_0x7343('0x1f')](function(_0x5c15fd){return _0x185be5(null,![],_0x5c15fd);});}}else{if(_0x200969[_0x7343('0x14')]){return _0x185be5(null,![],{'message':_0x7343('0x18')});}else{return utils[_0x7343('0x1e')](_0x200969)[_0x7343('0xe')](function(){return _0x185be5(null,_0x200969);});}}}});})['catch'](function(_0xf2a5a2){return _0x185be5(null,![],_0xf2a5a2);});}function sendServiceMail(_0x340ae4){return db[_0x7343('0x20')]['find']({'where':{'service':!![]},'attributes':['id','name',_0x7343('0x21')],'include':[{'model':db[_0x7343('0x22')],'as':_0x7343('0x23')}]})[_0x7343('0xe')](function(_0xe6e4bc){if(!_0xe6e4bc){throw new Error(_0x7343('0x24'));}var _0x2e0f17={'tls':{'rejectUnauthorized':![]}};if(_0xe6e4bc[_0x7343('0x23')][_0x7343('0x25')]){_0x2e0f17[_0x7343('0x25')]=_0xe6e4bc[_0x7343('0x23')][_0x7343('0x25')];}else{_0x2e0f17[_0x7343('0x26')]=_0xe6e4bc[_0x7343('0x23')][_0x7343('0x26')];_0x2e0f17[_0x7343('0x27')]=_0xe6e4bc[_0x7343('0x23')][_0x7343('0x27')];_0x2e0f17[_0x7343('0x28')]=_0xe6e4bc['Smtp']['secure'];}if(_0xe6e4bc[_0x7343('0x23')]['authentication']){_0x2e0f17[_0x7343('0x29')]={'user':_0xe6e4bc[_0x7343('0x23')]['user'],'pass':_0xe6e4bc[_0x7343('0x23')][_0x7343('0x2a')]};}var _0x4ac80a={'account':_0x2e0f17,'message':_[_0x7343('0x2b')]({'from':util[_0x7343('0x2c')]('\x22%s\x22\x20<%s>',_0xe6e4bc[_0x7343('0xf')],_0xe6e4bc[_0x7343('0x21')]||_0xe6e4bc[_0x7343('0x23')][_0x7343('0x17')])},_0x340ae4)};return client[_0x7343('0x2d')](_0x7343('0x2e'),_0x4ac80a);})[_0x7343('0xe')](function(_0x1b36b4){if(_0x1b36b4[_0x7343('0x2f')]){throw new Error(util[_0x7343('0x2c')](_0x7343('0x30'),_0x1b36b4[_0x7343('0x2f')][_0x7343('0x31')]||JSON['stringify'](_0x1b36b4['error'])));}return!![];});}function handleError(_0x2c6df0,_0x11439f,_0x277ea7){return _0x2c6df0[_0x7343('0x32')](_0x11439f||0x1f4)['send']({'message':_0x277ea7?_0x277ea7[_0x7343('0x31')]||_0x277ea7:''});}exports[_0x7343('0x33')]=function(_0x8d3609,_0x1ec36f,_0x15babc){passport[_0x7343('0x19')]('local',function(_0x12a63f,_0x26f625,_0x19f7a8){var _0x182823=_0x12a63f||_0x19f7a8;if(_0x182823){return handleError(_0x1ec36f,0x191,_0x182823);}if(!_0x26f625){return handleError(_0x1ec36f,0x194,{'message':_0x7343('0x34')});}else{var _0x55211f={'payload':{'id':_0x26f625['id'],'role':_0x26f625['role']},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x55211f)[_0x7343('0xe')](function(_0x5c1870){_0x1ec36f[_0x7343('0x35')]({'id':_0x26f625['id'],'token':_0x5c1870,'statusCall':'','isAlreadyLogged':_0x26f625['online']});});}})(_0x8d3609,_0x1ec36f,_0x15babc);};exports['forgot']=function(_0x54e40b,_0x30528a,_0x21cc35){if(!_0x54e40b[_0x7343('0x36')][_0x7343('0x21')]){return handleError(_0x30528a,0x1f4,{'message':_0x7343('0x37')});}var _0x544d3a=rs['generate']();_0x54e40b[_0x7343('0x36')][_0x7343('0x21')]=_0x54e40b[_0x7343('0x36')][_0x7343('0x21')]['trim']()[_0x7343('0x38')]();var _0x25aaa9;return db[_0x7343('0xa')][_0x7343('0xb')]({'where':{'id':0x1},'attributes':[_0x7343('0xc'),_0x7343('0xd')],'raw':!![]})[_0x7343('0xe')](function(_0x3371ce){_0x25aaa9=_0x3371ce;return db[_0x7343('0x39')][_0x7343('0x3a')]({'where':{'email':_0x54e40b[_0x7343('0x36')]['email']}});})['then'](function(_0x22daa4){if(!_0x22daa4){throw new Error(_0x7343('0x3b'));}if(_0x22daa4[_0x7343('0x13')]){throw new Error('The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.');}if(_0x22daa4[_0x7343('0x14')]){if(moment(_0x22daa4['blockedAt'])[_0x7343('0x1b')](_0x25aaa9['blockDuration'],_0x7343('0x1d'))>moment()){throw new Error(_0x7343('0x3c'));}else{_0x22daa4[_0x7343('0x14')]=![];_0x22daa4[_0x7343('0x15')]=null;}}_0x22daa4[_0x7343('0x3d')]=_0x544d3a;_0x22daa4[_0x7343('0x3e')]=Date['now']()+0x36ee80;return _0x22daa4['save']();})[_0x7343('0xe')](function(){return sendServiceMail({'to':_0x54e40b[_0x7343('0x36')]['email'],'subject':_0x7343('0x3f'),'text':_0x7343('0x40')+'Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'+'https://'+_0x54e40b[_0x7343('0x41')][_0x7343('0x26')]+_0x7343('0x42')+_0x544d3a+'\x0a\x0a'+_0x7343('0x43')});})[_0x7343('0xe')](function(){_0x30528a[_0x7343('0x32')](0xc8)['send']({'message':_0x7343('0x44')});})['catch'](function(_0x27700c){return handleError(_0x30528a,0x1f4,_0x27700c);});};exports[_0x7343('0x45')]=function(_0x2302c1,_0x44df87,_0x21a003){return db[_0x7343('0x39')][_0x7343('0x3a')]({'where':{'resetPasswordToken':_0x2302c1[_0x7343('0x46')][_0x7343('0x47')],'resetPasswordExpires':{'$gt':Date[_0x7343('0x48')]()}}})[_0x7343('0xe')](function(_0x27f4cc){if(!_0x27f4cc){throw new Error('Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.');}return db['Setting'][_0x7343('0xb')]({'attributes':['id',_0x7343('0x49'),'enforcePasswordHistory','passwordHistoryLimit']})[_0x7343('0xe')](function(_0x1cb1ff){if(_0x1cb1ff[_0x7343('0x49')])authService[_0x7343('0x4a')](_0x2302c1[_0x7343('0x36')][_0x7343('0x10')]);if(!_0x1cb1ff[_0x7343('0x4b')]||!_0x27f4cc[_0x7343('0x4c')])return _0x27f4cc;authService['validatePasswordHistory'](_0x2302c1[_0x7343('0x36')][_0x7343('0x10')],_0x27f4cc['previousPasswords'],_0x1cb1ff['passwordHistoryLimit']);return _0x27f4cc;})[_0x7343('0xe')](function(){_0x27f4cc[_0x7343('0x10')]=_0x2302c1['body']['password'];_0x27f4cc['resetPasswordToken']=null;_0x27f4cc[_0x7343('0x3e')]=null;return _0x27f4cc[_0x7343('0x4d')]();});})['then'](function(){_0x44df87[_0x7343('0x32')](0xc8)['send']({'message':_0x7343('0x4e')});})[_0x7343('0x1f')](function(_0x3a5b67){return handleError(_0x44df87,0x1f4,_0x3a5b67);});};passport['use'](new LocalStrategy({'usernameField':'name','passwordField':_0x7343('0x10')},function(_0x5388ff,_0x51817a,_0x1d915e){return localAuthenticate(db[_0x7343('0x39')],_0x5388ff,_0x51817a,_0x1d915e);}));
\ No newline at end of file
index 50c0a48..4a70250 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71ba=['/forgot','forgot','reset','exports','Router','./authLocal.controller','post','login'];(function(_0x43d9a1,_0x31bb27){var _0xaf051e=function(_0x20bba6){while(--_0x20bba6){_0x43d9a1['push'](_0x43d9a1['shift']());}};_0xaf051e(++_0x31bb27);}(_0x71ba,0x164));var _0xa71b=function(_0x32c0db,_0x438fcd){_0x32c0db=_0x32c0db-0x0;var _0x323588=_0x71ba[_0x32c0db];return _0x323588;};'use strict';var express=require('express');var router=express[_0xa71b('0x0')]();var controller=require(_0xa71b('0x1'));router[_0xa71b('0x2')]('/',controller[_0xa71b('0x3')]);router[_0xa71b('0x2')](_0xa71b('0x4'),controller[_0xa71b('0x5')]);router['post']('/reset/:token',controller[_0xa71b('0x6')]);module[_0xa71b('0x7')]=router;
\ No newline at end of file
+var _0x35fe=['express','Router','post','login','/forgot','forgot','/reset/:token','reset'];(function(_0x3311ae,_0x362cee){var _0x107949=function(_0x2082a3){while(--_0x2082a3){_0x3311ae['push'](_0x3311ae['shift']());}};_0x107949(++_0x362cee);}(_0x35fe,0x180));var _0xe35f=function(_0x179b53,_0x31f6fe){_0x179b53=_0x179b53-0x0;var _0x38a146=_0x35fe[_0x179b53];return _0x38a146;};'use strict';var express=require(_0xe35f('0x0'));var router=express[_0xe35f('0x1')]();var controller=require('./authLocal.controller');router[_0xe35f('0x2')]('/',controller[_0xe35f('0x3')]);router[_0xe35f('0x2')](_0xe35f('0x4'),controller[_0xe35f('0x5')]);router[_0xe35f('0x2')](_0xe35f('0x6'),controller[_0xe35f('0x7')]);module['exports']=router;
\ No newline at end of file
index 544428a..92e2664 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60a9=['BOOLEAN','sequelize','STRING'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x60a9,0xe2));var _0x960a=function(_0x2c4971,_0x236edb){_0x2c4971=_0x2c4971-0x0;var _0x5746b0=_0x60a9[_0x2c4971];return _0x5746b0;};'use strict';var Sequelize=require(_0x960a('0x0'));module['exports']={'name':{'type':Sequelize[_0x960a('0x1')],'allowNull':![]},'channel':{'type':Sequelize[_0x960a('0x1')]},'description':{'type':Sequelize[_0x960a('0x1')]},'status':{'type':Sequelize[_0x960a('0x2')],'defaultValue':![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa}};
\ No newline at end of file
+var _0xa269=['sequelize','exports','STRING','BOOLEAN'];(function(_0x26a3e4,_0x2ac518){var _0x4b8201=function(_0x5e247b){while(--_0x5e247b){_0x26a3e4['push'](_0x26a3e4['shift']());}};_0x4b8201(++_0x2ac518);}(_0xa269,0x100));var _0x9a26=function(_0x1e2029,_0x48fbe6){_0x1e2029=_0x1e2029-0x0;var _0x55547c=_0xa269[_0x1e2029];return _0x55547c;};'use strict';var Sequelize=require(_0x9a26('0x0'));module[_0x9a26('0x1')]={'name':{'type':Sequelize[_0x9a26('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0x9a26('0x2')]},'description':{'type':Sequelize[_0x9a26('0x2')]},'status':{'type':Sequelize[_0x9a26('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa}};
\ No newline at end of file
index ba494b7..38a3904 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8beb=['set','save','then','destroy','error','name','send','index','Automation','type','model','map','query','keys','filters','intersection','fields','attributes','sort','where','pick','filter','merge','options','includeAll','findAll','catch','show','params','rawAttributes','length','create','update','body','find','Condition','addConditions','ids','omit','findOne','order','getConditions','hasOwnProperty','nolimit','addActions','Action','getActions','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','count','limit'];(function(_0x2e2ef6,_0x17211){var _0x42b718=function(_0xaaf7dc){while(--_0xaaf7dc){_0x2e2ef6['push'](_0x2e2ef6['shift']());}};_0x42b718(++_0x17211);}(_0x8beb,0x167));var _0xb8be=function(_0x270096,_0x23121d){_0x270096=_0x270096-0x0;var _0x221ed5=_0x8beb[_0x270096];return _0x221ed5;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xb8be('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb8be('0x1'));var moment=require(_0xb8be('0x2'));var BPromise=require(_0xb8be('0x3'));var Mustache=require(_0xb8be('0x4'));var util=require(_0xb8be('0x5'));var path=require(_0xb8be('0x6'));var sox=require(_0xb8be('0x7'));var csv=require(_0xb8be('0x8'));var ejs=require(_0xb8be('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb8be('0xa'));var squel=require(_0xb8be('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xb8be('0xc'));var toCsv=require('to-csv');var querystring=require(_0xb8be('0xd'));var Papa=require('papaparse');var Redis=require(_0xb8be('0xe'));var authService=require(_0xb8be('0xf'));var qs=require(_0xb8be('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb8be('0x11'));var logger=require(_0xb8be('0x12'))(_0xb8be('0x13'));var utils=require(_0xb8be('0x14'));var config=require(_0xb8be('0x15'));var licenseUtil=require(_0xb8be('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x53d426,_0x3d7267){_0x3d7267=_0x3d7267||0xcc;return function(_0x54572a){if(_0x54572a){return _0x53d426[_0xb8be('0x17')](_0x3d7267);}return _0x53d426['status'](_0x3d7267)[_0xb8be('0x18')]();};}function respondWithResult(_0x626408,_0x1dee53){_0x1dee53=_0x1dee53||0xc8;return function(_0x10feb2){if(_0x10feb2){return _0x626408[_0xb8be('0x19')](_0x1dee53)[_0xb8be('0x1a')](_0x10feb2);}};}function respondWithFilteredResult(_0x5c7284,_0x5e3faa){return function(_0x175672){if(_0x175672){var _0x1bce39=typeof _0x5e3faa[_0xb8be('0x1b')]===_0xb8be('0x1c')&&typeof _0x5e3faa['limit']===_0xb8be('0x1c');var _0x5951d2=_0x175672[_0xb8be('0x1d')];var _0x47c254=_0x1bce39?0x0:_0x5e3faa['offset'];var _0x41a33e=_0x1bce39?_0x175672[_0xb8be('0x1d')]:_0x5e3faa[_0xb8be('0x1b')]+_0x5e3faa[_0xb8be('0x1e')];var _0x59a039;if(_0x41a33e>=_0x5951d2){_0x41a33e=_0x5951d2;_0x59a039=0xc8;}else{_0x59a039=0xce;}_0x5c7284[_0xb8be('0x19')](_0x59a039);return _0x5c7284[_0xb8be('0x1f')]('Content-Range',_0x47c254+'-'+_0x41a33e+'/'+_0x5951d2)[_0xb8be('0x1a')](_0x175672);}return null;};}function patchUpdates(_0x503d67){return function(_0xce3a80){try{jsonpatch['apply'](_0xce3a80,_0x503d67,!![]);}catch(_0x555279){return BPromise['reject'](_0x555279);}return _0xce3a80[_0xb8be('0x20')]();};}function saveUpdates(_0x329b03,_0x3c19ef){return function(_0x4eaee5){if(_0x4eaee5){return _0x4eaee5['update'](_0x329b03)[_0xb8be('0x21')](function(_0x2d6a5e){return _0x2d6a5e;});}return null;};}function removeEntity(_0x58f618,_0x24094d){return function(_0xd8078c){if(_0xd8078c){return _0xd8078c[_0xb8be('0x22')]()[_0xb8be('0x21')](function(){_0x58f618[_0xb8be('0x19')](0xcc)[_0xb8be('0x18')]();});}};}function handleEntityNotFound(_0x411e4c,_0x29a57f){return function(_0x4442c0){if(!_0x4442c0){_0x411e4c[_0xb8be('0x17')](0x194);}return _0x4442c0;};}function handleError(_0x1b610e,_0x81e995){_0x81e995=_0x81e995||0x1f4;return function(_0x5340ab){logger[_0xb8be('0x23')](_0x5340ab['stack']);if(_0x5340ab['name']){delete _0x5340ab[_0xb8be('0x24')];}_0x1b610e[_0xb8be('0x19')](_0x81e995)[_0xb8be('0x25')](_0x5340ab);};}exports[_0xb8be('0x26')]=function(_0x2ad7cf,_0x16af94){var _0x44b465={},_0xc4abf8={},_0x406b29={'count':0x0,'rows':[]};var _0xa72cc1=_['map'](db[_0xb8be('0x27')]['rawAttributes'],function(_0x1e8d03){return{'name':_0x1e8d03['fieldName'],'type':_0x1e8d03[_0xb8be('0x28')]['key']};});_0xc4abf8[_0xb8be('0x29')]=_[_0xb8be('0x2a')](_0xa72cc1,_0xb8be('0x24'));_0xc4abf8[_0xb8be('0x2b')]=_[_0xb8be('0x2c')](_0x2ad7cf[_0xb8be('0x2b')]);_0xc4abf8[_0xb8be('0x2d')]=_[_0xb8be('0x2e')](_0xc4abf8[_0xb8be('0x29')],_0xc4abf8[_0xb8be('0x2b')]);_0x44b465['attributes']=_[_0xb8be('0x2e')](_0xc4abf8['model'],qs[_0xb8be('0x2f')](_0x2ad7cf[_0xb8be('0x2b')][_0xb8be('0x2f')]));_0x44b465['attributes']=_0x44b465['attributes']['length']?_0x44b465[_0xb8be('0x30')]:_0xc4abf8['model'];if(!_0x2ad7cf['query']['hasOwnProperty']('nolimit')){_0x44b465[_0xb8be('0x1e')]=qs['limit'](_0x2ad7cf[_0xb8be('0x2b')]['limit']);_0x44b465['offset']=qs[_0xb8be('0x1b')](_0x2ad7cf[_0xb8be('0x2b')][_0xb8be('0x1b')]);}_0x44b465['order']=qs['sort'](_0x2ad7cf[_0xb8be('0x2b')][_0xb8be('0x31')]);_0x44b465[_0xb8be('0x32')]=qs[_0xb8be('0x2d')](_[_0xb8be('0x33')](_0x2ad7cf[_0xb8be('0x2b')],_0xc4abf8[_0xb8be('0x2d')]),_0xa72cc1);if(_0x2ad7cf['query'][_0xb8be('0x34')]){_0x44b465[_0xb8be('0x32')]=_[_0xb8be('0x35')](_0x44b465['where'],{'$or':_[_0xb8be('0x2a')](_0xa72cc1,function(_0xe57ac1){if(_0xe57ac1[_0xb8be('0x28')]!=='VIRTUAL'){var _0x51b395={};_0x51b395[_0xe57ac1[_0xb8be('0x24')]]={'$like':'%'+_0x2ad7cf[_0xb8be('0x2b')][_0xb8be('0x34')]+'%'};return _0x51b395;}})});}_0x44b465=_['merge']({},_0x44b465,_0x2ad7cf[_0xb8be('0x36')]);var _0x48ab48={'where':_0x44b465['where']};return db[_0xb8be('0x27')][_0xb8be('0x1d')](_0x48ab48)[_0xb8be('0x21')](function(_0x32da6d){_0x406b29[_0xb8be('0x1d')]=_0x32da6d;if(_0x2ad7cf[_0xb8be('0x2b')][_0xb8be('0x37')]){_0x44b465['include']=[{'all':!![]}];}return db['Automation'][_0xb8be('0x38')](_0x44b465);})[_0xb8be('0x21')](function(_0x3d087a){_0x406b29['rows']=_0x3d087a;return _0x406b29;})['then'](respondWithFilteredResult(_0x16af94,_0x44b465))[_0xb8be('0x39')](handleError(_0x16af94,null));};exports[_0xb8be('0x3a')]=function(_0x2807e7,_0x4a2840){var _0x2ee1e0={'raw':![],'where':{'id':_0x2807e7[_0xb8be('0x3b')]['id']}},_0x2954de={};_0x2954de[_0xb8be('0x29')]=_[_0xb8be('0x2c')](db[_0xb8be('0x27')][_0xb8be('0x3c')]);_0x2954de[_0xb8be('0x2b')]=_[_0xb8be('0x2c')](_0x2807e7['query']);_0x2954de['filters']=_['intersection'](_0x2954de[_0xb8be('0x29')],_0x2954de[_0xb8be('0x2b')]);_0x2ee1e0[_0xb8be('0x30')]=_[_0xb8be('0x2e')](_0x2954de[_0xb8be('0x29')],qs['fields'](_0x2807e7[_0xb8be('0x2b')][_0xb8be('0x2f')]));_0x2ee1e0[_0xb8be('0x30')]=_0x2ee1e0[_0xb8be('0x30')][_0xb8be('0x3d')]?_0x2ee1e0[_0xb8be('0x30')]:_0x2954de['model'];if(_0x2807e7['query'][_0xb8be('0x37')]){_0x2ee1e0['include']=[{'all':!![]}];}_0x2ee1e0=_[_0xb8be('0x35')]({},_0x2ee1e0,_0x2807e7[_0xb8be('0x36')]);return db[_0xb8be('0x27')]['find'](_0x2ee1e0)[_0xb8be('0x21')](handleEntityNotFound(_0x4a2840,null))['then'](respondWithResult(_0x4a2840,null))[_0xb8be('0x39')](handleError(_0x4a2840,null));};exports[_0xb8be('0x3e')]=function(_0x311c08,_0xf42aef){return db[_0xb8be('0x27')][_0xb8be('0x3e')](_0x311c08['body'],{})[_0xb8be('0x21')](respondWithResult(_0xf42aef,0xc9))[_0xb8be('0x39')](handleError(_0xf42aef,null));};exports[_0xb8be('0x3f')]=function(_0x159988,_0x400a38){if(_0x159988[_0xb8be('0x40')]['id']){delete _0x159988['body']['id'];}return db['Automation']['find']({'where':{'id':_0x159988['params']['id']}})['then'](handleEntityNotFound(_0x400a38,null))['then'](saveUpdates(_0x159988[_0xb8be('0x40')],null))[_0xb8be('0x21')](respondWithResult(_0x400a38,null))[_0xb8be('0x39')](handleError(_0x400a38,null));};exports[_0xb8be('0x22')]=function(_0x14af24,_0x43ae6c){return db[_0xb8be('0x27')][_0xb8be('0x41')]({'where':{'id':_0x14af24[_0xb8be('0x3b')]['id']}})[_0xb8be('0x21')](handleEntityNotFound(_0x43ae6c,null))['then'](removeEntity(_0x43ae6c,null))['catch'](handleError(_0x43ae6c,null));};exports['addConditions']=function(_0x2f37e7,_0x2cd781,_0x1c7d85){return db[_0xb8be('0x42')][_0xb8be('0x41')]({'where':{'id':_0x2f37e7[_0xb8be('0x3b')]['id']}})[_0xb8be('0x21')](handleEntityNotFound(_0x2cd781,null))[_0xb8be('0x21')](function(_0x4d48b4){if(_0x4d48b4){return _0x4d48b4[_0xb8be('0x43')](_0x2f37e7['body'][_0xb8be('0x44')],_[_0xb8be('0x45')](_0x2f37e7[_0xb8be('0x40')],[_0xb8be('0x44'),'id'])||{});}})['then'](respondWithResult(_0x2cd781,null))[_0xb8be('0x39')](handleError(_0x2cd781,null));};exports['getConditions']=function(_0x236f81,_0x35c6e4,_0x427c34){var _0x4249dd={};var _0x5f56d1={};var _0x2f443c;var _0x4bcb10;return db['Automation'][_0xb8be('0x46')]({'where':{'id':_0x236f81['params']['id']}})[_0xb8be('0x21')](handleEntityNotFound(_0x35c6e4,null))[_0xb8be('0x21')](function(_0x2a6a33){if(_0x2a6a33){_0x2f443c=_0x2a6a33;_0x5f56d1[_0xb8be('0x29')]=_[_0xb8be('0x2c')](db[_0xb8be('0x42')][_0xb8be('0x3c')]);_0x5f56d1[_0xb8be('0x2b')]=_['keys'](_0x236f81[_0xb8be('0x2b')]);_0x5f56d1[_0xb8be('0x2d')]=_[_0xb8be('0x2e')](_0x5f56d1['model'],_0x5f56d1[_0xb8be('0x2b')]);_0x4249dd[_0xb8be('0x30')]=_[_0xb8be('0x2e')](_0x5f56d1[_0xb8be('0x29')],qs[_0xb8be('0x2f')](_0x236f81[_0xb8be('0x2b')][_0xb8be('0x2f')]));_0x4249dd['attributes']=_0x4249dd['attributes'][_0xb8be('0x3d')]?_0x4249dd[_0xb8be('0x30')]:_0x5f56d1['model'];_0x4249dd[_0xb8be('0x47')]=qs[_0xb8be('0x31')](_0x236f81['query'][_0xb8be('0x31')]);_0x4249dd['where']=qs['filters'](_[_0xb8be('0x33')](_0x236f81[_0xb8be('0x2b')],_0x5f56d1['filters']));if(_0x236f81[_0xb8be('0x2b')][_0xb8be('0x34')]){_0x4249dd[_0xb8be('0x32')]=_['merge'](_0x4249dd['where'],{'$or':_[_0xb8be('0x2a')](_0x4249dd['attributes'],function(_0x4500fd){var _0x24d335={};_0x24d335[_0x4500fd]={'$like':'%'+_0x236f81[_0xb8be('0x2b')][_0xb8be('0x34')]+'%'};return _0x24d335;})});}_0x4249dd=_[_0xb8be('0x35')]({},_0x4249dd,_0x236f81[_0xb8be('0x36')]);return _0x2f443c[_0xb8be('0x48')](_0x4249dd);}})[_0xb8be('0x21')](function(_0x39a6e4){if(_0x39a6e4){_0x4bcb10=_0x39a6e4[_0xb8be('0x3d')];if(!_0x236f81[_0xb8be('0x2b')][_0xb8be('0x49')](_0xb8be('0x4a'))){_0x4249dd[_0xb8be('0x1e')]=qs[_0xb8be('0x1e')](_0x236f81[_0xb8be('0x2b')][_0xb8be('0x1e')]);_0x4249dd[_0xb8be('0x1b')]=qs[_0xb8be('0x1b')](_0x236f81[_0xb8be('0x2b')][_0xb8be('0x1b')]);}return _0x2f443c[_0xb8be('0x48')](_0x4249dd);}})['then'](function(_0x446a71){if(_0x446a71){return _0x446a71?{'count':_0x4bcb10,'rows':_0x446a71}:null;}})[_0xb8be('0x21')](respondWithResult(_0x35c6e4,null))[_0xb8be('0x39')](handleError(_0x35c6e4,null));};exports[_0xb8be('0x4b')]=function(_0x14d84e,_0x55b272,_0x391897){return db[_0xb8be('0x4c')][_0xb8be('0x41')]({'where':{'id':_0x14d84e[_0xb8be('0x3b')]['id']}})[_0xb8be('0x21')](handleEntityNotFound(_0x55b272,null))[_0xb8be('0x21')](function(_0x208e98){if(_0x208e98){return _0x208e98['addActions'](_0x14d84e['body'][_0xb8be('0x44')],_[_0xb8be('0x45')](_0x14d84e[_0xb8be('0x40')],[_0xb8be('0x44'),'id'])||{});}})[_0xb8be('0x21')](respondWithResult(_0x55b272,null))['catch'](handleError(_0x55b272,null));};exports['getActions']=function(_0x3234b7,_0x42e59b,_0x314a0b){var _0x5a23c8={};var _0x145332={};var _0x2a107e;var _0x31ae46;return db[_0xb8be('0x27')][_0xb8be('0x46')]({'where':{'id':_0x3234b7[_0xb8be('0x3b')]['id']}})[_0xb8be('0x21')](handleEntityNotFound(_0x42e59b,null))['then'](function(_0x3510b4){if(_0x3510b4){_0x2a107e=_0x3510b4;_0x145332[_0xb8be('0x29')]=_['keys'](db['Action'][_0xb8be('0x3c')]);_0x145332[_0xb8be('0x2b')]=_[_0xb8be('0x2c')](_0x3234b7[_0xb8be('0x2b')]);_0x145332[_0xb8be('0x2d')]=_[_0xb8be('0x2e')](_0x145332[_0xb8be('0x29')],_0x145332[_0xb8be('0x2b')]);_0x5a23c8[_0xb8be('0x30')]=_['intersection'](_0x145332[_0xb8be('0x29')],qs[_0xb8be('0x2f')](_0x3234b7[_0xb8be('0x2b')][_0xb8be('0x2f')]));_0x5a23c8[_0xb8be('0x30')]=_0x5a23c8[_0xb8be('0x30')][_0xb8be('0x3d')]?_0x5a23c8[_0xb8be('0x30')]:_0x145332[_0xb8be('0x29')];_0x5a23c8[_0xb8be('0x47')]=qs[_0xb8be('0x31')](_0x3234b7[_0xb8be('0x2b')][_0xb8be('0x31')]);_0x5a23c8[_0xb8be('0x32')]=qs[_0xb8be('0x2d')](_[_0xb8be('0x33')](_0x3234b7[_0xb8be('0x2b')],_0x145332['filters']));if(_0x3234b7[_0xb8be('0x2b')]['filter']){_0x5a23c8['where']=_[_0xb8be('0x35')](_0x5a23c8[_0xb8be('0x32')],{'$or':_[_0xb8be('0x2a')](_0x5a23c8[_0xb8be('0x30')],function(_0x5cf85d){var _0x12cfc4={};_0x12cfc4[_0x5cf85d]={'$like':'%'+_0x3234b7['query'][_0xb8be('0x34')]+'%'};return _0x12cfc4;})});}_0x5a23c8=_['merge']({},_0x5a23c8,_0x3234b7[_0xb8be('0x36')]);return _0x2a107e['getActions'](_0x5a23c8);}})[_0xb8be('0x21')](function(_0x2bbcfa){if(_0x2bbcfa){_0x31ae46=_0x2bbcfa[_0xb8be('0x3d')];if(!_0x3234b7[_0xb8be('0x2b')]['hasOwnProperty']('nolimit')){_0x5a23c8[_0xb8be('0x1e')]=qs[_0xb8be('0x1e')](_0x3234b7['query'][_0xb8be('0x1e')]);_0x5a23c8[_0xb8be('0x1b')]=qs[_0xb8be('0x1b')](_0x3234b7[_0xb8be('0x2b')][_0xb8be('0x1b')]);}return _0x2a107e[_0xb8be('0x4d')](_0x5a23c8);}})[_0xb8be('0x21')](function(_0x4e2aee){if(_0x4e2aee){return _0x4e2aee?{'count':_0x31ae46,'rows':_0x4e2aee}:null;}})[_0xb8be('0x21')](respondWithResult(_0x42e59b,null))[_0xb8be('0x39')](handleError(_0x42e59b,null));};
\ No newline at end of file
+var _0x1fdd=['Automation','rawAttributes','type','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','VIRTUAL','options','where','include','findAll','rows','show','params','intersection','catch','create','body','find','destroy','Condition','addConditions','ids','omit','getConditions','addActions','getActions','findOne','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','name','index','map'];(function(_0x2bbcbf,_0x234d3f){var _0x4ac797=function(_0xcf1402){while(--_0xcf1402){_0x2bbcbf['push'](_0x2bbcbf['shift']());}};_0x4ac797(++_0x234d3f);}(_0x1fdd,0x11a));var _0xd1fd=function(_0x4d3ebb,_0x4c95dd){_0x4d3ebb=_0x4d3ebb-0x0;var _0x2864ca=_0x1fdd[_0x4d3ebb];return _0x2864ca;};'use strict';var emlformat=require(_0xd1fd('0x0'));var rimraf=require(_0xd1fd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd1fd('0x2'));var rp=require(_0xd1fd('0x3'));var moment=require(_0xd1fd('0x4'));var BPromise=require(_0xd1fd('0x5'));var Mustache=require(_0xd1fd('0x6'));var util=require(_0xd1fd('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xd1fd('0x8'));var ejs=require(_0xd1fd('0x9'));var fs=require('fs');var fs_extra=require(_0xd1fd('0xa'));var _=require(_0xd1fd('0xb'));var squel=require(_0xd1fd('0xc'));var crypto=require(_0xd1fd('0xd'));var jsforce=require(_0xd1fd('0xe'));var deskjs=require(_0xd1fd('0xf'));var toCsv=require(_0xd1fd('0x8'));var querystring=require('querystring');var Papa=require(_0xd1fd('0x10'));var Redis=require(_0xd1fd('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xd1fd('0x12'));var as=require(_0xd1fd('0x13'));var hardwareService=require(_0xd1fd('0x14'));var logger=require(_0xd1fd('0x15'))(_0xd1fd('0x16'));var utils=require(_0xd1fd('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xd1fd('0x18'))['db'];function respondWithStatusCode(_0x4fc5f4,_0x235d20){_0x235d20=_0x235d20||0xcc;return function(_0x34566d){if(_0x34566d){return _0x4fc5f4[_0xd1fd('0x19')](_0x235d20);}return _0x4fc5f4[_0xd1fd('0x1a')](_0x235d20)[_0xd1fd('0x1b')]();};}function respondWithResult(_0x514927,_0x57c3f7){_0x57c3f7=_0x57c3f7||0xc8;return function(_0x255ece){if(_0x255ece){return _0x514927[_0xd1fd('0x1a')](_0x57c3f7)[_0xd1fd('0x1c')](_0x255ece);}};}function respondWithFilteredResult(_0x5b2c12,_0x383b01){return function(_0x430bd8){if(_0x430bd8){var _0x2367a8=typeof _0x383b01[_0xd1fd('0x1d')]===_0xd1fd('0x1e')&&typeof _0x383b01[_0xd1fd('0x1f')]==='undefined';var _0x341234=_0x430bd8[_0xd1fd('0x20')];var _0xe7db59=_0x2367a8?0x0:_0x383b01['offset'];var _0x532b5e=_0x2367a8?_0x430bd8[_0xd1fd('0x20')]:_0x383b01[_0xd1fd('0x1d')]+_0x383b01['limit'];var _0x335a9a;if(_0x532b5e>=_0x341234){_0x532b5e=_0x341234;_0x335a9a=0xc8;}else{_0x335a9a=0xce;}_0x5b2c12[_0xd1fd('0x1a')](_0x335a9a);return _0x5b2c12[_0xd1fd('0x21')](_0xd1fd('0x22'),_0xe7db59+'-'+_0x532b5e+'/'+_0x341234)['json'](_0x430bd8);}return null;};}function patchUpdates(_0x1750af){return function(_0x5c31fe){try{jsonpatch[_0xd1fd('0x23')](_0x5c31fe,_0x1750af,!![]);}catch(_0x415445){return BPromise['reject'](_0x415445);}return _0x5c31fe[_0xd1fd('0x24')]();};}function saveUpdates(_0x1a6582,_0x5071c4){return function(_0x5eaedb){if(_0x5eaedb){return _0x5eaedb[_0xd1fd('0x25')](_0x1a6582)[_0xd1fd('0x26')](function(_0x3ba45b){return _0x3ba45b;});}return null;};}function removeEntity(_0x49c925,_0x52f8e7){return function(_0x36c45a){if(_0x36c45a){return _0x36c45a['destroy']()['then'](function(){_0x49c925['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ca57a,_0x39f3e5){return function(_0x2215bd){if(!_0x2215bd){_0x1ca57a['sendStatus'](0x194);}return _0x2215bd;};}function handleError(_0x38f000,_0x3dde5c){_0x3dde5c=_0x3dde5c||0x1f4;return function(_0x33592e){logger['error'](_0x33592e['stack']);if(_0x33592e['name']){delete _0x33592e[_0xd1fd('0x27')];}_0x38f000[_0xd1fd('0x1a')](_0x3dde5c)['send'](_0x33592e);};}exports[_0xd1fd('0x28')]=function(_0x106a30,_0x2779c8){var _0x1f3375={},_0x2089fb={},_0x463164={'count':0x0,'rows':[]};var _0x1be238=_[_0xd1fd('0x29')](db[_0xd1fd('0x2a')][_0xd1fd('0x2b')],function(_0x4d00bd){return{'name':_0x4d00bd['fieldName'],'type':_0x4d00bd[_0xd1fd('0x2c')]['key']};});_0x2089fb[_0xd1fd('0x2d')]=_[_0xd1fd('0x29')](_0x1be238,_0xd1fd('0x27'));_0x2089fb[_0xd1fd('0x2e')]=_[_0xd1fd('0x2f')](_0x106a30['query']);_0x2089fb[_0xd1fd('0x30')]=_['intersection'](_0x2089fb['model'],_0x2089fb[_0xd1fd('0x2e')]);_0x1f3375[_0xd1fd('0x31')]=_['intersection'](_0x2089fb[_0xd1fd('0x2d')],qs[_0xd1fd('0x32')](_0x106a30['query'][_0xd1fd('0x32')]));_0x1f3375[_0xd1fd('0x31')]=_0x1f3375['attributes'][_0xd1fd('0x33')]?_0x1f3375[_0xd1fd('0x31')]:_0x2089fb['model'];if(!_0x106a30['query'][_0xd1fd('0x34')](_0xd1fd('0x35'))){_0x1f3375[_0xd1fd('0x1f')]=qs['limit'](_0x106a30[_0xd1fd('0x2e')][_0xd1fd('0x1f')]);_0x1f3375[_0xd1fd('0x1d')]=qs[_0xd1fd('0x1d')](_0x106a30[_0xd1fd('0x2e')][_0xd1fd('0x1d')]);}_0x1f3375[_0xd1fd('0x36')]=qs['sort'](_0x106a30['query'][_0xd1fd('0x37')]);_0x1f3375['where']=qs[_0xd1fd('0x30')](_[_0xd1fd('0x38')](_0x106a30[_0xd1fd('0x2e')],_0x2089fb[_0xd1fd('0x30')]),_0x1be238);if(_0x106a30[_0xd1fd('0x2e')][_0xd1fd('0x39')]){_0x1f3375['where']=_[_0xd1fd('0x3a')](_0x1f3375['where'],{'$or':_[_0xd1fd('0x29')](_0x1be238,function(_0x2949c1){if(_0x2949c1['type']!==_0xd1fd('0x3b')){var _0x1f3f24={};_0x1f3f24[_0x2949c1[_0xd1fd('0x27')]]={'$like':'%'+_0x106a30['query'][_0xd1fd('0x39')]+'%'};return _0x1f3f24;}})});}_0x1f3375=_[_0xd1fd('0x3a')]({},_0x1f3375,_0x106a30[_0xd1fd('0x3c')]);var _0x4748ae={'where':_0x1f3375[_0xd1fd('0x3d')]};return db[_0xd1fd('0x2a')][_0xd1fd('0x20')](_0x4748ae)[_0xd1fd('0x26')](function(_0x5a12bb){_0x463164['count']=_0x5a12bb;if(_0x106a30[_0xd1fd('0x2e')]['includeAll']){_0x1f3375[_0xd1fd('0x3e')]=[{'all':!![]}];}return db['Automation'][_0xd1fd('0x3f')](_0x1f3375);})[_0xd1fd('0x26')](function(_0x1301a4){_0x463164[_0xd1fd('0x40')]=_0x1301a4;return _0x463164;})[_0xd1fd('0x26')](respondWithFilteredResult(_0x2779c8,_0x1f3375))['catch'](handleError(_0x2779c8,null));};exports[_0xd1fd('0x41')]=function(_0x1c4e2e,_0x5633da){var _0x46d311={'raw':![],'where':{'id':_0x1c4e2e[_0xd1fd('0x42')]['id']}},_0x146a74={};_0x146a74[_0xd1fd('0x2d')]=_[_0xd1fd('0x2f')](db[_0xd1fd('0x2a')][_0xd1fd('0x2b')]);_0x146a74[_0xd1fd('0x2e')]=_[_0xd1fd('0x2f')](_0x1c4e2e[_0xd1fd('0x2e')]);_0x146a74[_0xd1fd('0x30')]=_['intersection'](_0x146a74[_0xd1fd('0x2d')],_0x146a74['query']);_0x46d311[_0xd1fd('0x31')]=_[_0xd1fd('0x43')](_0x146a74[_0xd1fd('0x2d')],qs['fields'](_0x1c4e2e[_0xd1fd('0x2e')][_0xd1fd('0x32')]));_0x46d311[_0xd1fd('0x31')]=_0x46d311[_0xd1fd('0x31')][_0xd1fd('0x33')]?_0x46d311[_0xd1fd('0x31')]:_0x146a74[_0xd1fd('0x2d')];if(_0x1c4e2e[_0xd1fd('0x2e')]['includeAll']){_0x46d311['include']=[{'all':!![]}];}_0x46d311=_[_0xd1fd('0x3a')]({},_0x46d311,_0x1c4e2e[_0xd1fd('0x3c')]);return db['Automation']['find'](_0x46d311)[_0xd1fd('0x26')](handleEntityNotFound(_0x5633da,null))['then'](respondWithResult(_0x5633da,null))[_0xd1fd('0x44')](handleError(_0x5633da,null));};exports[_0xd1fd('0x45')]=function(_0x8b649,_0x380b1a){return db[_0xd1fd('0x2a')][_0xd1fd('0x45')](_0x8b649['body'],{})[_0xd1fd('0x26')](respondWithResult(_0x380b1a,0xc9))[_0xd1fd('0x44')](handleError(_0x380b1a,null));};exports[_0xd1fd('0x25')]=function(_0x1ef378,_0x31aa4c){if(_0x1ef378[_0xd1fd('0x46')]['id']){delete _0x1ef378[_0xd1fd('0x46')]['id'];}return db[_0xd1fd('0x2a')][_0xd1fd('0x47')]({'where':{'id':_0x1ef378[_0xd1fd('0x42')]['id']}})['then'](handleEntityNotFound(_0x31aa4c,null))[_0xd1fd('0x26')](saveUpdates(_0x1ef378[_0xd1fd('0x46')],null))['then'](respondWithResult(_0x31aa4c,null))['catch'](handleError(_0x31aa4c,null));};exports[_0xd1fd('0x48')]=function(_0x320165,_0x5dd7ec){return db[_0xd1fd('0x2a')][_0xd1fd('0x47')]({'where':{'id':_0x320165[_0xd1fd('0x42')]['id']}})[_0xd1fd('0x26')](handleEntityNotFound(_0x5dd7ec,null))['then'](removeEntity(_0x5dd7ec,null))[_0xd1fd('0x44')](handleError(_0x5dd7ec,null));};exports['addConditions']=function(_0x4db6a8,_0xe6f8c1,_0x14f494){return db[_0xd1fd('0x49')][_0xd1fd('0x47')]({'where':{'id':_0x4db6a8[_0xd1fd('0x42')]['id']}})[_0xd1fd('0x26')](handleEntityNotFound(_0xe6f8c1,null))[_0xd1fd('0x26')](function(_0x99c722){if(_0x99c722){return _0x99c722[_0xd1fd('0x4a')](_0x4db6a8[_0xd1fd('0x46')][_0xd1fd('0x4b')],_[_0xd1fd('0x4c')](_0x4db6a8[_0xd1fd('0x46')],[_0xd1fd('0x4b'),'id'])||{});}})[_0xd1fd('0x26')](respondWithResult(_0xe6f8c1,null))[_0xd1fd('0x44')](handleError(_0xe6f8c1,null));};exports[_0xd1fd('0x4d')]=function(_0x5397aa,_0x2c5293,_0x317956){var _0x3e5e1e={};var _0x35908c={};var _0x55226d;var _0xdd692;return db[_0xd1fd('0x2a')]['findOne']({'where':{'id':_0x5397aa['params']['id']}})[_0xd1fd('0x26')](handleEntityNotFound(_0x2c5293,null))[_0xd1fd('0x26')](function(_0x5d3a56){if(_0x5d3a56){_0x55226d=_0x5d3a56;_0x35908c[_0xd1fd('0x2d')]=_[_0xd1fd('0x2f')](db[_0xd1fd('0x49')][_0xd1fd('0x2b')]);_0x35908c[_0xd1fd('0x2e')]=_[_0xd1fd('0x2f')](_0x5397aa[_0xd1fd('0x2e')]);_0x35908c[_0xd1fd('0x30')]=_[_0xd1fd('0x43')](_0x35908c[_0xd1fd('0x2d')],_0x35908c[_0xd1fd('0x2e')]);_0x3e5e1e['attributes']=_[_0xd1fd('0x43')](_0x35908c['model'],qs[_0xd1fd('0x32')](_0x5397aa[_0xd1fd('0x2e')][_0xd1fd('0x32')]));_0x3e5e1e[_0xd1fd('0x31')]=_0x3e5e1e[_0xd1fd('0x31')][_0xd1fd('0x33')]?_0x3e5e1e[_0xd1fd('0x31')]:_0x35908c[_0xd1fd('0x2d')];_0x3e5e1e[_0xd1fd('0x36')]=qs[_0xd1fd('0x37')](_0x5397aa['query']['sort']);_0x3e5e1e[_0xd1fd('0x3d')]=qs[_0xd1fd('0x30')](_[_0xd1fd('0x38')](_0x5397aa[_0xd1fd('0x2e')],_0x35908c[_0xd1fd('0x30')]));if(_0x5397aa['query'][_0xd1fd('0x39')]){_0x3e5e1e['where']=_[_0xd1fd('0x3a')](_0x3e5e1e[_0xd1fd('0x3d')],{'$or':_[_0xd1fd('0x29')](_0x3e5e1e[_0xd1fd('0x31')],function(_0x157130){var _0x2305bd={};_0x2305bd[_0x157130]={'$like':'%'+_0x5397aa[_0xd1fd('0x2e')][_0xd1fd('0x39')]+'%'};return _0x2305bd;})});}_0x3e5e1e=_[_0xd1fd('0x3a')]({},_0x3e5e1e,_0x5397aa[_0xd1fd('0x3c')]);return _0x55226d[_0xd1fd('0x4d')](_0x3e5e1e);}})['then'](function(_0x40390a){if(_0x40390a){_0xdd692=_0x40390a[_0xd1fd('0x33')];if(!_0x5397aa[_0xd1fd('0x2e')]['hasOwnProperty'](_0xd1fd('0x35'))){_0x3e5e1e['limit']=qs[_0xd1fd('0x1f')](_0x5397aa['query'][_0xd1fd('0x1f')]);_0x3e5e1e[_0xd1fd('0x1d')]=qs[_0xd1fd('0x1d')](_0x5397aa['query'][_0xd1fd('0x1d')]);}return _0x55226d[_0xd1fd('0x4d')](_0x3e5e1e);}})[_0xd1fd('0x26')](function(_0x195e75){if(_0x195e75){return _0x195e75?{'count':_0xdd692,'rows':_0x195e75}:null;}})['then'](respondWithResult(_0x2c5293,null))[_0xd1fd('0x44')](handleError(_0x2c5293,null));};exports[_0xd1fd('0x4e')]=function(_0x242399,_0x505b85,_0x1abdd9){return db['Action'][_0xd1fd('0x47')]({'where':{'id':_0x242399[_0xd1fd('0x42')]['id']}})[_0xd1fd('0x26')](handleEntityNotFound(_0x505b85,null))['then'](function(_0x46ef43){if(_0x46ef43){return _0x46ef43[_0xd1fd('0x4e')](_0x242399['body'][_0xd1fd('0x4b')],_[_0xd1fd('0x4c')](_0x242399[_0xd1fd('0x46')],['ids','id'])||{});}})[_0xd1fd('0x26')](respondWithResult(_0x505b85,null))['catch'](handleError(_0x505b85,null));};exports[_0xd1fd('0x4f')]=function(_0x5bcd7a,_0x16a140,_0xe4b77a){var _0x287037={};var _0x180c0a={};var _0x1e610b;var _0x2b6896;return db[_0xd1fd('0x2a')][_0xd1fd('0x50')]({'where':{'id':_0x5bcd7a[_0xd1fd('0x42')]['id']}})[_0xd1fd('0x26')](handleEntityNotFound(_0x16a140,null))[_0xd1fd('0x26')](function(_0x743b41){if(_0x743b41){_0x1e610b=_0x743b41;_0x180c0a[_0xd1fd('0x2d')]=_[_0xd1fd('0x2f')](db['Action'][_0xd1fd('0x2b')]);_0x180c0a['query']=_[_0xd1fd('0x2f')](_0x5bcd7a['query']);_0x180c0a[_0xd1fd('0x30')]=_['intersection'](_0x180c0a[_0xd1fd('0x2d')],_0x180c0a[_0xd1fd('0x2e')]);_0x287037[_0xd1fd('0x31')]=_[_0xd1fd('0x43')](_0x180c0a[_0xd1fd('0x2d')],qs['fields'](_0x5bcd7a[_0xd1fd('0x2e')]['fields']));_0x287037[_0xd1fd('0x31')]=_0x287037[_0xd1fd('0x31')][_0xd1fd('0x33')]?_0x287037[_0xd1fd('0x31')]:_0x180c0a[_0xd1fd('0x2d')];_0x287037[_0xd1fd('0x36')]=qs[_0xd1fd('0x37')](_0x5bcd7a[_0xd1fd('0x2e')]['sort']);_0x287037[_0xd1fd('0x3d')]=qs['filters'](_[_0xd1fd('0x38')](_0x5bcd7a[_0xd1fd('0x2e')],_0x180c0a[_0xd1fd('0x30')]));if(_0x5bcd7a[_0xd1fd('0x2e')][_0xd1fd('0x39')]){_0x287037[_0xd1fd('0x3d')]=_[_0xd1fd('0x3a')](_0x287037[_0xd1fd('0x3d')],{'$or':_[_0xd1fd('0x29')](_0x287037[_0xd1fd('0x31')],function(_0x599b7d){var _0x1bc942={};_0x1bc942[_0x599b7d]={'$like':'%'+_0x5bcd7a['query'][_0xd1fd('0x39')]+'%'};return _0x1bc942;})});}_0x287037=_[_0xd1fd('0x3a')]({},_0x287037,_0x5bcd7a['options']);return _0x1e610b['getActions'](_0x287037);}})[_0xd1fd('0x26')](function(_0x1d2944){if(_0x1d2944){_0x2b6896=_0x1d2944[_0xd1fd('0x33')];if(!_0x5bcd7a[_0xd1fd('0x2e')][_0xd1fd('0x34')]('nolimit')){_0x287037[_0xd1fd('0x1f')]=qs[_0xd1fd('0x1f')](_0x5bcd7a['query'][_0xd1fd('0x1f')]);_0x287037[_0xd1fd('0x1d')]=qs[_0xd1fd('0x1d')](_0x5bcd7a[_0xd1fd('0x2e')]['offset']);}return _0x1e610b[_0xd1fd('0x4f')](_0x287037);}})[_0xd1fd('0x26')](function(_0x49117c){if(_0x49117c){return _0x49117c?{'count':_0x2b6896,'rows':_0x49117c}:null;}})[_0xd1fd('0x26')](respondWithResult(_0x16a140,null))['catch'](handleError(_0x16a140,null));};
\ No newline at end of file
index d01ef44..867d55e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94b4=['moment','path','rimraf','../../config/environment','./automation.attributes','exports','Automation','tools_automations','lodash','util','api'];(function(_0x10dad1,_0x2e7e33){var _0x5f32c5=function(_0x5b0086){while(--_0x5b0086){_0x10dad1['push'](_0x10dad1['shift']());}};_0x5f32c5(++_0x2e7e33);}(_0x94b4,0x6b));var _0x494b=function(_0x1aab04,_0x5c71b9){_0x1aab04=_0x1aab04-0x0;var _0x46514e=_0x94b4[_0x1aab04];return _0x46514e;};'use strict';var _=require(_0x494b('0x0'));var util=require(_0x494b('0x1'));var logger=require('../../config/logger')(_0x494b('0x2'));var moment=require(_0x494b('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x494b('0x4'));var rimraf=require(_0x494b('0x5'));var config=require(_0x494b('0x6'));var attributes=require(_0x494b('0x7'));module[_0x494b('0x8')]=function(_0x6e0ce5,_0x3da29b){return _0x6e0ce5['define'](_0x494b('0x9'),attributes,{'tableName':_0x494b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5006=['define','Automation','tools_automations','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment','./automation.attributes','exports'];(function(_0x109bc8,_0x53c816){var _0x420c92=function(_0x501329){while(--_0x501329){_0x109bc8['push'](_0x109bc8['shift']());}};_0x420c92(++_0x53c816);}(_0x5006,0x85));var _0x6500=function(_0x17a32f,_0x1e8d1b){_0x17a32f=_0x17a32f-0x0;var _0x32a571=_0x5006[_0x17a32f];return _0x32a571;};'use strict';var _=require(_0x6500('0x0'));var util=require(_0x6500('0x1'));var logger=require(_0x6500('0x2'))(_0x6500('0x3'));var moment=require(_0x6500('0x4'));var BPromise=require('bluebird');var rp=require(_0x6500('0x5'));var fs=require('fs');var path=require(_0x6500('0x6'));var rimraf=require('rimraf');var config=require(_0x6500('0x7'));var attributes=require(_0x6500('0x8'));module[_0x6500('0x9')]=function(_0x57ba04,_0x21dd3c){return _0x57ba04[_0x6500('0xa')](_0x6500('0xb'),attributes,{'tableName':_0x6500('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a4ae36d..18fa46c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd237=['client','request','then','info','Automation,\x20%s,\x20%s','debug','Automation,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x584378,_0x5ce718){var _0x2a311d=function(_0x3a197b){while(--_0x3a197b){_0x584378['push'](_0x584378['shift']());}};_0x2a311d(++_0x5ce718);}(_0xd237,0x14f));var _0x7d23=function(_0x2e4e48,_0x322a92){_0x2e4e48=_0x2e4e48-0x0;var _0x2642a0=_0xd237[_0x2e4e48];return _0x2642a0;};'use strict';var _=require(_0x7d23('0x0'));var util=require(_0x7d23('0x1'));var moment=require(_0x7d23('0x2'));var BPromise=require(_0x7d23('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7d23('0x4'));var db=require(_0x7d23('0x5'))['db'];var utils=require(_0x7d23('0x6'));var logger=require(_0x7d23('0x7'))(_0x7d23('0x8'));var config=require(_0x7d23('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x7d23('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5ca126,_0x48358f,_0xc43371){return new BPromise(function(_0x42c334,_0x6ce28d){return client[_0x7d23('0xb')](_0x5ca126,_0xc43371)[_0x7d23('0xc')](function(_0x23f1d6){logger[_0x7d23('0xd')](_0x7d23('0xe'),_0x48358f,'request\x20sent');logger[_0x7d23('0xf')](_0x7d23('0x10'),_0x48358f,_0x7d23('0x11'),JSON['stringify'](_0x23f1d6));if(_0x23f1d6[_0x7d23('0x12')]){if(_0x23f1d6['error'][_0x7d23('0x13')]===0x1f4){logger[_0x7d23('0x12')](_0x7d23('0xe'),_0x48358f,_0x23f1d6[_0x7d23('0x12')][_0x7d23('0x14')]);return _0x6ce28d(_0x23f1d6[_0x7d23('0x12')][_0x7d23('0x14')]);}logger['error']('Automation,\x20%s,\x20%s',_0x48358f,_0x23f1d6[_0x7d23('0x12')][_0x7d23('0x14')]);return _0x42c334(_0x23f1d6[_0x7d23('0x12')][_0x7d23('0x14')]);}else{logger['info'](_0x7d23('0xe'),_0x48358f,'request\x20sent');_0x42c334(_0x23f1d6[_0x7d23('0x15')]['message']);}})[_0x7d23('0x16')](function(_0x46a35b){logger[_0x7d23('0x12')](_0x7d23('0xe'),_0x48358f,_0x46a35b);_0x6ce28d(_0x46a35b);});});}
\ No newline at end of file
+var _0x0598=['../../config/utils','jayson/promise','client','info','Automation,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','lodash','util','bluebird','../../mysqldb'];(function(_0x43bf96,_0x436e04){var _0x15b6e5=function(_0x4bd062){while(--_0x4bd062){_0x43bf96['push'](_0x43bf96['shift']());}};_0x15b6e5(++_0x436e04);}(_0x0598,0x92));var _0x8059=function(_0x1452a6,_0x83702){_0x1452a6=_0x1452a6-0x0;var _0x3ab433=_0x0598[_0x1452a6];return _0x3ab433;};'use strict';var _=require(_0x8059('0x0'));var util=require(_0x8059('0x1'));var moment=require('moment');var BPromise=require(_0x8059('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8059('0x3'))['db'];var utils=require(_0x8059('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x8059('0x5'));var client=jayson[_0x8059('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5996d7,_0x248273,_0x347f1b){return new BPromise(function(_0x4610d2,_0x116946){return client['request'](_0x5996d7,_0x347f1b)['then'](function(_0x89dda1){logger[_0x8059('0x7')](_0x8059('0x8'),_0x248273,_0x8059('0x9'));logger[_0x8059('0xa')]('Automation,\x20%s,\x20%s,\x20%s',_0x248273,'request\x20sent',JSON[_0x8059('0xb')](_0x89dda1));if(_0x89dda1[_0x8059('0xc')]){if(_0x89dda1['error']['code']===0x1f4){logger['error'](_0x8059('0x8'),_0x248273,_0x89dda1[_0x8059('0xc')][_0x8059('0xd')]);return _0x116946(_0x89dda1[_0x8059('0xc')][_0x8059('0xd')]);}logger['error'](_0x8059('0x8'),_0x248273,_0x89dda1['error'][_0x8059('0xd')]);return _0x4610d2(_0x89dda1['error'][_0x8059('0xd')]);}else{logger[_0x8059('0x7')](_0x8059('0x8'),_0x248273,'request\x20sent');_0x4610d2(_0x89dda1['result']['message']);}})[_0x8059('0xe')](function(_0x239195){logger[_0x8059('0xc')](_0x8059('0x8'),_0x248273,_0x239195);_0x116946(_0x239195);});});}
\ No newline at end of file
index 73479fc..3120a2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61df=['/:id/conditions','getConditions','/:id/actions','getActions','post','create','/:id','delete','destroy','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./automation.controller','get','isAuthenticated','index'];(function(_0x25c09e,_0x48718c){var _0x96ee69=function(_0x19d5a4){while(--_0x19d5a4){_0x25c09e['push'](_0x25c09e['shift']());}};_0x96ee69(++_0x48718c);}(_0x61df,0xbd));var _0xf61d=function(_0x3e3478,_0x43dab7){_0x3e3478=_0x3e3478-0x0;var _0x32e4aa=_0x61df[_0x3e3478];return _0x32e4aa;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xf61d('0x0'));var express=require(_0xf61d('0x1'));var router=express['Router']();var fs_extra=require(_0xf61d('0x2'));var auth=require(_0xf61d('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xf61d('0x4'));var controller=require(_0xf61d('0x5'));router[_0xf61d('0x6')]('/',auth[_0xf61d('0x7')](),controller[_0xf61d('0x8')]);router[_0xf61d('0x6')]('/:id',auth[_0xf61d('0x7')](),controller['show']);router[_0xf61d('0x6')](_0xf61d('0x9'),auth[_0xf61d('0x7')](),controller[_0xf61d('0xa')]);router[_0xf61d('0x6')](_0xf61d('0xb'),auth[_0xf61d('0x7')](),controller[_0xf61d('0xc')]);router[_0xf61d('0xd')]('/',auth[_0xf61d('0x7')](),controller[_0xf61d('0xe')]);router[_0xf61d('0xd')]('/:id/conditions',auth[_0xf61d('0x7')](),controller['addConditions']);router['post'](_0xf61d('0xb'),auth['isAuthenticated'](),controller['addActions']);router['put'](_0xf61d('0xf'),auth['isAuthenticated'](),controller['update']);router[_0xf61d('0x10')](_0xf61d('0xf'),auth[_0xf61d('0x7')](),controller[_0xf61d('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x8eac=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','isAuthenticated','/:id','show','/:id/conditions','getConditions','/:id/actions','create','addConditions','post','addActions','put','update','delete','destroy','exports','multer','path'];(function(_0x4c3afd,_0x3e7a45){var _0x4e2ef3=function(_0x426053){while(--_0x426053){_0x4c3afd['push'](_0x4c3afd['shift']());}};_0x4e2ef3(++_0x3e7a45);}(_0x8eac,0x11c));var _0xc8ea=function(_0x1a1f82,_0x16e88b){_0x1a1f82=_0x1a1f82-0x0;var _0x152427=_0x8eac[_0x1a1f82];return _0x152427;};'use strict';var multer=require(_0xc8ea('0x0'));var util=require('util');var path=require(_0xc8ea('0x1'));var timeout=require(_0xc8ea('0x2'));var express=require(_0xc8ea('0x3'));var router=express[_0xc8ea('0x4')]();var fs_extra=require(_0xc8ea('0x5'));var auth=require(_0xc8ea('0x6'));var interaction=require(_0xc8ea('0x7'));var config=require(_0xc8ea('0x8'));var controller=require(_0xc8ea('0x9'));router[_0xc8ea('0xa')]('/',auth[_0xc8ea('0xb')](),controller['index']);router[_0xc8ea('0xa')](_0xc8ea('0xc'),auth[_0xc8ea('0xb')](),controller[_0xc8ea('0xd')]);router[_0xc8ea('0xa')](_0xc8ea('0xe'),auth[_0xc8ea('0xb')](),controller[_0xc8ea('0xf')]);router[_0xc8ea('0xa')](_0xc8ea('0x10'),auth['isAuthenticated'](),controller['getActions']);router['post']('/',auth['isAuthenticated'](),controller[_0xc8ea('0x11')]);router['post'](_0xc8ea('0xe'),auth['isAuthenticated'](),controller[_0xc8ea('0x12')]);router[_0xc8ea('0x13')](_0xc8ea('0x10'),auth[_0xc8ea('0xb')](),controller[_0xc8ea('0x14')]);router[_0xc8ea('0x15')]('/:id',auth['isAuthenticated'](),controller[_0xc8ea('0x16')]);router[_0xc8ea('0x17')](_0xc8ea('0xc'),auth[_0xc8ea('0xb')](),controller[_0xc8ea('0x18')]);module[_0xc8ea('0x19')]=router;
\ No newline at end of file
index d0ce117..ce71431 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0f8=['#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','never','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','DESC','ASC','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','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\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','STRING','ENUM','BOOLEAN','Active/Disactive\x20Campaign','UNSIGNED','Max\x20200\x20calls.','INTEGER'];(function(_0xab2865,_0x32e71e){var _0x31f344=function(_0x2a3762){while(--_0x2a3762){_0xab2865['push'](_0xab2865['shift']());}};_0x31f344(++_0x32e71e);}(_0xf0f8,0x1e1));var _0x8f0f=function(_0x3f8403,_0x3af621){_0x3f8403=_0x3f8403-0x0;var _0x76dcc9=_0xf0f8[_0x3f8403];return _0x76dcc9;};'use strict';var Sequelize=require(_0x8f0f('0x0'));module[_0x8f0f('0x1')]={'name':{'type':Sequelize[_0x8f0f('0x2')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x8f0f('0x3')]('ivr'),'allowNull':![],'defaultValue':'ivr'},'description':{'type':Sequelize[_0x8f0f('0x2')]},'active':{'type':Sequelize[_0x8f0f('0x4')],'defaultValue':0x0,'comment':_0x8f0f('0x5')},'limitCalls':{'type':Sequelize['INTEGER'](0x4)[_0x8f0f('0x6')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x8f0f('0x7')},'dialOriginateCallerIdName':{'type':Sequelize[_0x8f0f('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x8f0f('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0x8f0f('0x8')](0x3)[_0x8f0f('0x6')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialCongestionMaxRetry':{'type':Sequelize[_0x8f0f('0x8')](0x3)[_0x8f0f('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8f0f('0x9')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x8f0f('0x8')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8f0f('0xa')},'dialBusyMaxRetry':{'type':Sequelize[_0x8f0f('0x8')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8f0f('0xb')},'dialBusyRetryFrequency':{'type':Sequelize[_0x8f0f('0x8')](0x5)[_0x8f0f('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8f0f('0xc')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x8f0f('0x6')],'defaultValue':0x3,'comment':_0x8f0f('0xd')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x8f0f('0x8')](0x5)[_0x8f0f('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8f0f('0xe')},'dialGlobalMaxRetry':{'type':Sequelize[_0x8f0f('0x8')](0x3)[_0x8f0f('0x6')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x8f0f('0xf')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x8f0f('0x2')],'defaultValue':_0x8f0f('0x10')},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0x8f0f('0x11'),_0x8f0f('0x12'),'onlyIfOpen'),'defaultValue':_0x8f0f('0x11')},'dialAMDActive':{'type':Sequelize[_0x8f0f('0x4')],'defaultValue':0x0,'comment':_0x8f0f('0x13')},'dialAMDInitialSilence':{'type':Sequelize[_0x8f0f('0x8')](0x9)[_0x8f0f('0x6')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x8f0f('0x14')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0x8f0f('0x6')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x8f0f('0x15')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x8f0f('0x16')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x8f0f('0x8')](0x9)[_0x8f0f('0x6')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x8f0f('0x17')},'dialAMDMinWordLength':{'type':Sequelize[_0x8f0f('0x8')](0x9)[_0x8f0f('0x6')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x8f0f('0x8')](0x9)[_0x8f0f('0x6')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x8f0f('0x8')](0x9)[_0x8f0f('0x6')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x8f0f('0x18')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x8f0f('0x8')](0x5)[_0x8f0f('0x6')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x8f0f('0x19')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x8f0f('0x8')](0x9)[_0x8f0f('0x6')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize[_0x8f0f('0x3')](_0x8f0f('0x1a'),_0x8f0f('0x1b')),'defaultValue':_0x8f0f('0x1a')},'dialPrefix':{'type':Sequelize[_0x8f0f('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0x8f0f('0x8')](0x3)[_0x8f0f('0x6')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x8f0f('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8f0f('0x1c')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x8f0f('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize[_0x8f0f('0x8')](0x5)[_0x8f0f('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8f0f('0x1d')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x8f0f('0x8')](0x3)[_0x8f0f('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8f0f('0x1e')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x8f0f('0x8')](0x5)[_0x8f0f('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8f0f('0x1f')},'dialMachineMaxRetry':{'type':Sequelize[_0x8f0f('0x8')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8f0f('0x20')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x8f0f('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8f0f('0x21')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x8f0f('0x8')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x8f0f('0x8')](0x5)[_0x8f0f('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8f0f('0x22')}};
\ No newline at end of file
+var _0x6918=['never','Active/Disactive\x20AMD','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','exports','STRING','name','ENUM','ivr','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','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\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','always'];(function(_0x51f1af,_0x55a1a4){var _0x3ae83d=function(_0xd475e6){while(--_0xd475e6){_0x51f1af['push'](_0x51f1af['shift']());}};_0x3ae83d(++_0x55a1a4);}(_0x6918,0xc8));var _0x8691=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x6918[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require('sequelize');module[_0x8691('0x0')]={'name':{'type':Sequelize[_0x8691('0x1')],'unique':_0x8691('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x8691('0x3')](_0x8691('0x4')),'allowNull':![],'defaultValue':_0x8691('0x4')},'description':{'type':Sequelize[_0x8691('0x1')]},'active':{'type':Sequelize[_0x8691('0x5')],'defaultValue':0x0,'comment':_0x8691('0x6')},'limitCalls':{'type':Sequelize[_0x8691('0x7')](0x4)[_0x8691('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':'Max\x20200\x20calls.'},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x8691('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0x8691('0x7')](0x3)[_0x8691('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8691('0x9')},'dialCongestionMaxRetry':{'type':Sequelize[_0x8691('0x7')](0x3)[_0x8691('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8691('0xa')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x8691('0x7')](0x5)[_0x8691('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8691('0xb')},'dialBusyMaxRetry':{'type':Sequelize[_0x8691('0x7')](0x3)[_0x8691('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8691('0xc')},'dialBusyRetryFrequency':{'type':Sequelize[_0x8691('0x7')](0x5)[_0x8691('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8691('0xd')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x8691('0x7')](0x3)[_0x8691('0x8')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x8691('0x7')](0x5)[_0x8691('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8691('0xe')},'dialGlobalMaxRetry':{'type':Sequelize[_0x8691('0x7')](0x3)[_0x8691('0x8')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x8691('0xf')},'dialTimezone':{'type':Sequelize[_0x8691('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x8691('0x1')],'defaultValue':'07:00-22:00,*,*,*'},'dialCheckDuplicateType':{'type':Sequelize[_0x8691('0x3')](_0x8691('0x10'),_0x8691('0x11'),'onlyIfOpen'),'defaultValue':_0x8691('0x10')},'dialAMDActive':{'type':Sequelize[_0x8691('0x5')],'defaultValue':0x0,'comment':_0x8691('0x12')},'dialAMDInitialSilence':{'type':Sequelize[_0x8691('0x7')](0x9)[_0x8691('0x8')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0x8691('0x7')](0x9)[_0x8691('0x8')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x8691('0x7')](0x9)[_0x8691('0x8')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x8691('0x13')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x8691('0x7')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0x8691('0x7')](0x9)[_0x8691('0x8')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0x8691('0x8')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x8691('0x14')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0x8691('0x8')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x8691('0x15')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x8691('0x7')](0x5)[_0x8691('0x8')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize[_0x8691('0x7')](0x9)[_0x8691('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize[_0x8691('0x3')](_0x8691('0x16'),_0x8691('0x17')),'defaultValue':_0x8691('0x16')},'dialPrefix':{'type':Sequelize[_0x8691('0x1')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x8691('0x7')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x8691('0x18')},'dialCutDigit':{'type':Sequelize[_0x8691('0x7')](0x3)[_0x8691('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x8691('0x7')](0x3)[_0x8691('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8691('0x19')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x8691('0x7')](0x5)[_0x8691('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8691('0x1a')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8691('0x1b')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x8691('0x7')](0x3)[_0x8691('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8691('0x1c')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x8691('0x7')](0x5)[_0x8691('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8691('0x1d')},'dialMachineMaxRetry':{'type':Sequelize[_0x8691('0x7')](0x3)[_0x8691('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0x8691('0x7')](0x5)[_0x8691('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x8691('0x7')](0x3)[_0x8691('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8691('0x1e')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x8691('0x7')](0x5)[_0x8691('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'}};
\ No newline at end of file
index dc0e673..6bada14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43cd=['includeAll','findAll','rows','catch','show','find','create','body','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','include','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','getHoppers','CmHopper','CampaignId','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','CmHopperBlack','getLists','findOne','CmList','addLists','ids','omit','spread','dialCheckDuplicateType','fromQuery','scheduledAt','ListId','select','field','phone','NOW()','CmListId','toString','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','onlyIfOpen','into','ContactId','COALESCE(phone,\x27\x27)','cm_hopper','CampaignId\x20=\x20?','push','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','sequelize','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','to-csv','ejs','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','count','Content-Range','apply','save','update','then','destroy','get','IvrCampaigns','UserProfileResource','error','name','send','map','rawAttributes','fieldName','key','model','keys','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filters','filter','where','merge','type','options','Campaign'];(function(_0x1ae5ab,_0xc5d441){var _0x1ce001=function(_0x5ef96d){while(--_0x5ef96d){_0x1ae5ab['push'](_0x1ae5ab['shift']());}};_0x1ce001(++_0xc5d441);}(_0x43cd,0x142));var _0xd43c=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0x43cd[_0x5bd426];return _0x23a7eb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd43c('0x0'));var zipdir=require(_0xd43c('0x1'));var jsonpatch=require(_0xd43c('0x2'));var rp=require('request-promise');var moment=require(_0xd43c('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xd43c('0x4'));var util=require(_0xd43c('0x5'));var path=require(_0xd43c('0x6'));var sox=require('sox');var csv=require(_0xd43c('0x7'));var ejs=require(_0xd43c('0x8'));var fs=require('fs');var fs_extra=require(_0xd43c('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xd43c('0xa'));var jsforce=require(_0xd43c('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xd43c('0x7'));var querystring=require(_0xd43c('0xc'));var Papa=require(_0xd43c('0xd'));var Redis=require(_0xd43c('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xd43c('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd43c('0x10'));var logger=require(_0xd43c('0x11'))(_0xd43c('0x12'));var utils=require(_0xd43c('0x13'));var config=require(_0xd43c('0x14'));var licenseUtil=require(_0xd43c('0x15'));var db=require(_0xd43c('0x16'))['db'];function respondWithStatusCode(_0x42f049,_0x33705c){_0x33705c=_0x33705c||0xcc;return function(_0x2d504f){if(_0x2d504f){return _0x42f049[_0xd43c('0x17')](_0x33705c);}return _0x42f049['status'](_0x33705c)[_0xd43c('0x18')]();};}function respondWithResult(_0x56d5c6,_0x2408ab){_0x2408ab=_0x2408ab||0xc8;return function(_0x3ec686){if(_0x3ec686){return _0x56d5c6[_0xd43c('0x19')](_0x2408ab)[_0xd43c('0x1a')](_0x3ec686);}};}function respondWithFilteredResult(_0x38d929,_0x34b924){return function(_0xb5a790){if(_0xb5a790){var _0xf2b1a9=typeof _0x34b924[_0xd43c('0x1b')]==='undefined'&&typeof _0x34b924[_0xd43c('0x1c')]==='undefined';var _0x1f125b=_0xb5a790[_0xd43c('0x1d')];var _0x2bc018=_0xf2b1a9?0x0:_0x34b924[_0xd43c('0x1b')];var _0x76420e=_0xf2b1a9?_0xb5a790[_0xd43c('0x1d')]:_0x34b924['offset']+_0x34b924[_0xd43c('0x1c')];var _0x2340b9;if(_0x76420e>=_0x1f125b){_0x76420e=_0x1f125b;_0x2340b9=0xc8;}else{_0x2340b9=0xce;}_0x38d929[_0xd43c('0x19')](_0x2340b9);return _0x38d929['set'](_0xd43c('0x1e'),_0x2bc018+'-'+_0x76420e+'/'+_0x1f125b)[_0xd43c('0x1a')](_0xb5a790);}return null;};}function patchUpdates(_0x58c3f8){return function(_0x5cb21e){try{jsonpatch[_0xd43c('0x1f')](_0x5cb21e,_0x58c3f8,!![]);}catch(_0x579c3f){return BPromise['reject'](_0x579c3f);}return _0x5cb21e[_0xd43c('0x20')]();};}function saveUpdates(_0x1262d7,_0x466f0f){return function(_0x41f816){if(_0x41f816){return _0x41f816[_0xd43c('0x21')](_0x1262d7)[_0xd43c('0x22')](function(_0x56c395){return _0x56c395;});}return null;};}function removeEntity(_0x20e594,_0x2214d3){return function(_0x226ae2){if(_0x226ae2){return _0x226ae2[_0xd43c('0x23')]()[_0xd43c('0x22')](function(){var _0x36dbed=_0x226ae2[_0xd43c('0x24')]({'plain':!![]});var _0x2bf344=_0xd43c('0x25');return db[_0xd43c('0x26')][_0xd43c('0x23')]({'where':{'type':_0x2bf344,'resourceId':_0x36dbed['id']}})[_0xd43c('0x22')](function(){return _0x226ae2;});})['then'](function(){_0x20e594['status'](0xcc)[_0xd43c('0x18')]();});}};}function handleEntityNotFound(_0x4d73ab,_0xb5d158){return function(_0x251235){if(!_0x251235){_0x4d73ab[_0xd43c('0x17')](0x194);}return _0x251235;};}function handleError(_0x4a5989,_0x4937d4){_0x4937d4=_0x4937d4||0x1f4;return function(_0x450bcb){logger[_0xd43c('0x27')](_0x450bcb['stack']);if(_0x450bcb[_0xd43c('0x28')]){delete _0x450bcb[_0xd43c('0x28')];}_0x4a5989[_0xd43c('0x19')](_0x4937d4)[_0xd43c('0x29')](_0x450bcb);};}exports['index']=function(_0x3fa71b,_0x39dd2c){var _0x593087={},_0xb9c411={},_0x5983f0={'count':0x0,'rows':[]};var _0x4af260=_[_0xd43c('0x2a')](db['Campaign'][_0xd43c('0x2b')],function(_0x23e566){return{'name':_0x23e566[_0xd43c('0x2c')],'type':_0x23e566['type'][_0xd43c('0x2d')]};});_0xb9c411[_0xd43c('0x2e')]=_[_0xd43c('0x2a')](_0x4af260,'name');_0xb9c411['query']=_[_0xd43c('0x2f')](_0x3fa71b[_0xd43c('0x30')]);_0xb9c411['filters']=_[_0xd43c('0x31')](_0xb9c411[_0xd43c('0x2e')],_0xb9c411[_0xd43c('0x30')]);_0x593087['attributes']=_[_0xd43c('0x31')](_0xb9c411[_0xd43c('0x2e')],qs[_0xd43c('0x32')](_0x3fa71b[_0xd43c('0x30')][_0xd43c('0x32')]));_0x593087[_0xd43c('0x33')]=_0x593087[_0xd43c('0x33')][_0xd43c('0x34')]?_0x593087['attributes']:_0xb9c411['model'];if(!_0x3fa71b[_0xd43c('0x30')][_0xd43c('0x35')](_0xd43c('0x36'))){_0x593087[_0xd43c('0x1c')]=qs[_0xd43c('0x1c')](_0x3fa71b[_0xd43c('0x30')][_0xd43c('0x1c')]);_0x593087[_0xd43c('0x1b')]=qs[_0xd43c('0x1b')](_0x3fa71b[_0xd43c('0x30')][_0xd43c('0x1b')]);}_0x593087[_0xd43c('0x37')]=qs[_0xd43c('0x38')](_0x3fa71b[_0xd43c('0x30')][_0xd43c('0x38')]);_0x593087['where']=qs['filters'](_[_0xd43c('0x39')](_0x3fa71b[_0xd43c('0x30')],_0xb9c411[_0xd43c('0x3a')]),_0x4af260);if(_0x3fa71b[_0xd43c('0x30')][_0xd43c('0x3b')]){_0x593087[_0xd43c('0x3c')]=_[_0xd43c('0x3d')](_0x593087[_0xd43c('0x3c')],{'$or':_[_0xd43c('0x2a')](_0x4af260,function(_0x398e0d){if(_0x398e0d[_0xd43c('0x3e')]!=='VIRTUAL'){var _0x22313a={};_0x22313a[_0x398e0d[_0xd43c('0x28')]]={'$like':'%'+_0x3fa71b[_0xd43c('0x30')]['filter']+'%'};return _0x22313a;}})});}_0x593087=_[_0xd43c('0x3d')]({},_0x593087,_0x3fa71b[_0xd43c('0x3f')]);var _0x486c3d={'where':_0x593087[_0xd43c('0x3c')]};return db[_0xd43c('0x40')][_0xd43c('0x1d')](_0x486c3d)[_0xd43c('0x22')](function(_0x27ad64){_0x5983f0[_0xd43c('0x1d')]=_0x27ad64;if(_0x3fa71b[_0xd43c('0x30')][_0xd43c('0x41')]){_0x593087['include']=[{'all':!![]}];}return db['Campaign'][_0xd43c('0x42')](_0x593087);})[_0xd43c('0x22')](function(_0x426327){_0x5983f0[_0xd43c('0x43')]=_0x426327;return _0x5983f0;})['then'](respondWithFilteredResult(_0x39dd2c,_0x593087))[_0xd43c('0x44')](handleError(_0x39dd2c,null));};exports[_0xd43c('0x45')]=function(_0x4ceb6b,_0x3d5bcd){var _0x4947f8={'raw':![],'where':{'id':_0x4ceb6b['params']['id']}},_0x2eb231={};_0x2eb231[_0xd43c('0x2e')]=_[_0xd43c('0x2f')](db[_0xd43c('0x40')][_0xd43c('0x2b')]);_0x2eb231['query']=_[_0xd43c('0x2f')](_0x4ceb6b[_0xd43c('0x30')]);_0x2eb231[_0xd43c('0x3a')]=_[_0xd43c('0x31')](_0x2eb231[_0xd43c('0x2e')],_0x2eb231[_0xd43c('0x30')]);_0x4947f8[_0xd43c('0x33')]=_[_0xd43c('0x31')](_0x2eb231['model'],qs['fields'](_0x4ceb6b[_0xd43c('0x30')]['fields']));_0x4947f8['attributes']=_0x4947f8['attributes'][_0xd43c('0x34')]?_0x4947f8['attributes']:_0x2eb231[_0xd43c('0x2e')];if(_0x4ceb6b['query'][_0xd43c('0x41')]){_0x4947f8['include']=[{'all':!![]}];}_0x4947f8=_[_0xd43c('0x3d')]({},_0x4947f8,_0x4ceb6b[_0xd43c('0x3f')]);return db['Campaign'][_0xd43c('0x46')](_0x4947f8)[_0xd43c('0x22')](handleEntityNotFound(_0x3d5bcd,null))[_0xd43c('0x22')](respondWithResult(_0x3d5bcd,null))[_0xd43c('0x44')](handleError(_0x3d5bcd,null));};exports['create']=function(_0x40d966,_0x54cf59){return db[_0xd43c('0x40')][_0xd43c('0x47')](_0x40d966[_0xd43c('0x48')],{})[_0xd43c('0x22')](function(_0x29aec9){var _0x479db8=_0x40d966[_0xd43c('0x49')][_0xd43c('0x24')]({'plain':!![]});if(!_0x479db8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x479db8['role']===_0xd43c('0x49')){var _0x11e810=_0x29aec9['get']({'plain':!![]});var _0x2e6e8c=_0xd43c('0x25');return db[_0xd43c('0x4a')][_0xd43c('0x46')]({'where':{'name':_0x2e6e8c,'userProfileId':_0x479db8['userProfileId']},'raw':!![]})[_0xd43c('0x22')](function(_0x2d4f3d){if(_0x2d4f3d&&_0x2d4f3d[_0xd43c('0x4b')]===0x0){return db[_0xd43c('0x26')]['create']({'name':_0x11e810['name'],'resourceId':_0x11e810['id'],'type':_0x2d4f3d['name'],'sectionId':_0x2d4f3d['id']},{})['then'](function(){return _0x29aec9;});}else{return _0x29aec9;}})[_0xd43c('0x44')](function(_0x35e81c){logger[_0xd43c('0x27')](_0xd43c('0x4c'),_0x35e81c);throw _0x35e81c;});}return _0x29aec9;})[_0xd43c('0x22')](respondWithResult(_0x54cf59,0xc9))[_0xd43c('0x44')](handleError(_0x54cf59,null));};exports[_0xd43c('0x4d')]=function(_0x1446ca,_0x2002c2){var _0x5ed3fc={'where':{'id':_0x1446ca[_0xd43c('0x4e')]['id']}},_0x4e8b6f={};_0x4e8b6f[_0xd43c('0x2e')]=_[_0xd43c('0x2f')](db[_0xd43c('0x40')]['rawAttributes']);_0x5ed3fc['attributes']=_[_0xd43c('0x31')](_0x4e8b6f[_0xd43c('0x2e')],qs[_0xd43c('0x32')](_0x1446ca[_0xd43c('0x30')][_0xd43c('0x32')]));_0x5ed3fc[_0xd43c('0x33')]=_0x5ed3fc[_0xd43c('0x33')][_0xd43c('0x34')]?_0x5ed3fc['attributes']:_0x4e8b6f['model'];if(_0x1446ca[_0xd43c('0x30')][_0xd43c('0x41')]){_0x5ed3fc[_0xd43c('0x4f')]=[{'all':!![]}];}_0x5ed3fc=_[_0xd43c('0x3d')]({},_0x5ed3fc,_0x1446ca[_0xd43c('0x3f')]);return db[_0xd43c('0x40')][_0xd43c('0x46')](_0x5ed3fc)[_0xd43c('0x22')](handleEntityNotFound(_0x2002c2,null))['then'](function(_0x316c56){if(_0x316c56){var _0x36db4c=_0x316c56[_0xd43c('0x24')]({'plain':!![]});_0x36db4c=qs['omit'](_0x36db4c,['id',_0xd43c('0x50'),_0xd43c('0x51')]);_0x1446ca[_0xd43c('0x48')]=_['omit'](_0x1446ca[_0xd43c('0x48')],['id','createdAt','updatedAt']);return db[_0xd43c('0x40')][_0xd43c('0x47')](_[_0xd43c('0x3d')](_0x36db4c,_0x1446ca[_0xd43c('0x48')]),{'include':_0x1446ca['query'][_0xd43c('0x41')]?[{'all':!![]}]:undefined})['then'](function(_0x40f0c8){var _0x1847a5=_0x1446ca['user'][_0xd43c('0x24')]({'plain':!![]});if(!_0x1847a5)throw new Error(_0xd43c('0x52'));if(_0x1847a5[_0xd43c('0x53')]==='user'){var _0x13baa0=_0x40f0c8[_0xd43c('0x24')]({'plain':!![]});var _0x1e66bd=_0xd43c('0x25');return db[_0xd43c('0x4a')]['find']({'where':{'name':_0x1e66bd,'userProfileId':_0x1847a5['userProfileId']},'raw':!![]})[_0xd43c('0x22')](function(_0x21627e){if(_0x21627e&&_0x21627e[_0xd43c('0x4b')]===0x0){return db['UserProfileResource'][_0xd43c('0x47')]({'name':_0x13baa0[_0xd43c('0x28')],'resourceId':_0x13baa0['id'],'type':_0x21627e[_0xd43c('0x28')],'sectionId':_0x21627e['id']},{})[_0xd43c('0x22')](function(){return _0x40f0c8;});}else{return _0x40f0c8;}})[_0xd43c('0x44')](function(_0x445814){logger[_0xd43c('0x27')](_0xd43c('0x4c'),_0x445814);throw _0x445814;});}return _0x40f0c8;});}})[_0xd43c('0x22')](respondWithResult(_0x2002c2,0xc9))[_0xd43c('0x44')](handleError(_0x2002c2,null));};exports['update']=function(_0x372874,_0x155b07){if(_0x372874[_0xd43c('0x48')]['id']){delete _0x372874['body']['id'];}return db[_0xd43c('0x40')][_0xd43c('0x46')]({'where':{'id':_0x372874['params']['id']}})[_0xd43c('0x22')](handleEntityNotFound(_0x155b07,null))[_0xd43c('0x22')](saveUpdates(_0x372874[_0xd43c('0x48')],null))[_0xd43c('0x22')](respondWithResult(_0x155b07,null))[_0xd43c('0x44')](handleError(_0x155b07,null));};exports[_0xd43c('0x23')]=function(_0x392e5c,_0x3802b8){return db['Campaign'][_0xd43c('0x46')]({'where':{'id':_0x392e5c[_0xd43c('0x4e')]['id']}})[_0xd43c('0x22')](handleEntityNotFound(_0x3802b8,null))[_0xd43c('0x22')](removeEntity(_0x3802b8,null))[_0xd43c('0x44')](handleError(_0x3802b8,null));};exports[_0xd43c('0x54')]=function(_0x10f10e,_0x16893b,_0x3fffd0){var _0x3c1543={'raw':!![],'where':{}};var _0x1e044e={};var _0x117802={'count':0x0,'rows':[]};return db[_0xd43c('0x40')]['findOne']({'where':{'id':_0x10f10e['params']['id']}})[_0xd43c('0x22')](handleEntityNotFound(_0x16893b,null))[_0xd43c('0x22')](function(_0x6b5b12){if(_0x6b5b12){_0x1e044e[_0xd43c('0x2e')]=_['keys'](db[_0xd43c('0x55')][_0xd43c('0x2b')]);_0x1e044e['query']=_[_0xd43c('0x2f')](_0x10f10e[_0xd43c('0x30')]);_0x1e044e[_0xd43c('0x3a')]=_[_0xd43c('0x31')](_0x1e044e[_0xd43c('0x2e')],_0x1e044e[_0xd43c('0x30')]);_0x3c1543[_0xd43c('0x33')]=_[_0xd43c('0x31')](_0x1e044e['model'],qs[_0xd43c('0x32')](_0x10f10e['query'][_0xd43c('0x32')]));_0x3c1543[_0xd43c('0x33')]=_0x3c1543[_0xd43c('0x33')][_0xd43c('0x34')]?_0x3c1543[_0xd43c('0x33')]:_0x1e044e[_0xd43c('0x2e')];if(!_0x10f10e[_0xd43c('0x30')][_0xd43c('0x35')]('nolimit')){_0x3c1543[_0xd43c('0x1c')]=qs[_0xd43c('0x1c')](_0x10f10e[_0xd43c('0x30')][_0xd43c('0x1c')]);_0x3c1543['offset']=qs['offset'](_0x10f10e[_0xd43c('0x30')][_0xd43c('0x1b')]);}_0x3c1543['order']=qs[_0xd43c('0x38')](_0x10f10e[_0xd43c('0x30')][_0xd43c('0x38')]);_0x3c1543['where']=qs['filters'](_['pick'](_0x10f10e['query'],_0x1e044e[_0xd43c('0x3a')]));_0x3c1543[_0xd43c('0x3c')][_0xd43c('0x56')]=_0x6b5b12['id'];if(_0x10f10e[_0xd43c('0x30')][_0xd43c('0x3b')]){_0x3c1543[_0xd43c('0x3c')]=_[_0xd43c('0x3d')](_0x3c1543[_0xd43c('0x3c')],{'$or':_['map'](_0x3c1543['attributes'],function(_0x56f916){var _0x161461={};_0x161461[_0x56f916]={'$like':'%'+_0x10f10e[_0xd43c('0x30')][_0xd43c('0x3b')]+'%'};return _0x161461;})});}_0x3c1543=_[_0xd43c('0x3d')]({},_0x3c1543,_0x10f10e[_0xd43c('0x3f')]);return db['CmHopper'][_0xd43c('0x1d')]({'where':_0x3c1543['where']})[_0xd43c('0x22')](function(_0x574755){_0x117802[_0xd43c('0x1d')]=_0x574755;if(_0x10f10e[_0xd43c('0x30')]['includeAll']){_0x3c1543['include']=[{'all':!![]}];}return db[_0xd43c('0x55')]['findAll'](_0x3c1543);})[_0xd43c('0x22')](function(_0x40ee5a){_0x117802[_0xd43c('0x43')]=_0x40ee5a;return _0x117802;});}})[_0xd43c('0x22')](respondWithFilteredResult(_0x16893b,_0x3c1543))[_0xd43c('0x44')](handleError(_0x16893b,null));};exports[_0xd43c('0x57')]=function(_0x2321fa,_0x50ac53,_0x386584){var _0x1938fb={'raw':!![],'where':{}};var _0x3f5bb6={};var _0x2050e7={'count':0x0,'rows':[]};return db[_0xd43c('0x40')]['findOne']({'where':{'id':_0x2321fa[_0xd43c('0x4e')]['id']}})[_0xd43c('0x22')](handleEntityNotFound(_0x50ac53,null))[_0xd43c('0x22')](function(_0x1f07e3){if(_0x1f07e3){_0x3f5bb6[_0xd43c('0x2e')]=_['keys'](db[_0xd43c('0x58')][_0xd43c('0x2b')]);_0x3f5bb6[_0xd43c('0x30')]=_[_0xd43c('0x2f')](_0x2321fa[_0xd43c('0x30')]);_0x3f5bb6[_0xd43c('0x3a')]=_[_0xd43c('0x31')](_0x3f5bb6[_0xd43c('0x2e')],_0x3f5bb6[_0xd43c('0x30')]);_0x1938fb[_0xd43c('0x33')]=_[_0xd43c('0x31')](_0x3f5bb6[_0xd43c('0x2e')],qs[_0xd43c('0x32')](_0x2321fa[_0xd43c('0x30')]['fields']));_0x1938fb[_0xd43c('0x33')]=_0x1938fb[_0xd43c('0x33')]['length']?_0x1938fb['attributes']:_0x3f5bb6[_0xd43c('0x2e')];if(!_0x2321fa[_0xd43c('0x30')][_0xd43c('0x35')](_0xd43c('0x36'))){_0x1938fb[_0xd43c('0x1c')]=qs[_0xd43c('0x1c')](_0x2321fa['query'][_0xd43c('0x1c')]);_0x1938fb[_0xd43c('0x1b')]=qs[_0xd43c('0x1b')](_0x2321fa['query'][_0xd43c('0x1b')]);}_0x1938fb[_0xd43c('0x37')]=qs[_0xd43c('0x38')](_0x2321fa[_0xd43c('0x30')][_0xd43c('0x38')]);_0x1938fb[_0xd43c('0x3c')]=qs[_0xd43c('0x3a')](_['pick'](_0x2321fa[_0xd43c('0x30')],_0x3f5bb6[_0xd43c('0x3a')]));_0x1938fb[_0xd43c('0x3c')]['CampaignId']=_0x1f07e3['id'];if(_0x2321fa['query']['filter']){_0x1938fb[_0xd43c('0x3c')]=_[_0xd43c('0x3d')](_0x1938fb[_0xd43c('0x3c')],{'$or':_[_0xd43c('0x2a')](_0x1938fb['attributes'],function(_0x1aa047){var _0x28f111={};_0x28f111[_0x1aa047]={'$like':'%'+_0x2321fa[_0xd43c('0x30')][_0xd43c('0x3b')]+'%'};return _0x28f111;})});}_0x1938fb=_[_0xd43c('0x3d')]({},_0x1938fb,_0x2321fa['options']);return db[_0xd43c('0x58')]['count']({'where':_0x1938fb[_0xd43c('0x3c')]})['then'](function(_0x5c2457){_0x2050e7['count']=_0x5c2457;if(_0x2321fa[_0xd43c('0x30')][_0xd43c('0x41')]){_0x1938fb[_0xd43c('0x4f')]=[{'all':!![]}];}return db[_0xd43c('0x58')][_0xd43c('0x42')](_0x1938fb);})['then'](function(_0x358d97){_0x2050e7[_0xd43c('0x43')]=_0x358d97;return _0x2050e7;});}})[_0xd43c('0x22')](respondWithFilteredResult(_0x50ac53,_0x1938fb))['catch'](handleError(_0x50ac53,null));};exports[_0xd43c('0x59')]=function(_0x3d8e93,_0x1986c0,_0x1b4956){var _0x4d81c2={'raw':!![],'where':{}};var _0x4d8605={};var _0x451c47={'count':0x0,'rows':[]};return db[_0xd43c('0x40')]['findOne']({'where':{'id':_0x3d8e93[_0xd43c('0x4e')]['id']}})[_0xd43c('0x22')](handleEntityNotFound(_0x1986c0,null))[_0xd43c('0x22')](function(_0x4417b9){if(_0x4417b9){_0x4d8605['model']=_['keys'](db[_0xd43c('0x5a')]['rawAttributes']);_0x4d8605[_0xd43c('0x30')]=_['keys'](_0x3d8e93['query']);_0x4d8605[_0xd43c('0x3a')]=_[_0xd43c('0x31')](_0x4d8605[_0xd43c('0x2e')],_0x4d8605[_0xd43c('0x30')]);_0x4d81c2[_0xd43c('0x33')]=_[_0xd43c('0x31')](_0x4d8605[_0xd43c('0x2e')],qs['fields'](_0x3d8e93['query']['fields']));_0x4d81c2[_0xd43c('0x33')]=_0x4d81c2[_0xd43c('0x33')]['length']?_0x4d81c2[_0xd43c('0x33')]:_0x4d8605[_0xd43c('0x2e')];if(!_0x3d8e93[_0xd43c('0x30')][_0xd43c('0x35')](_0xd43c('0x36'))){_0x4d81c2['limit']=qs[_0xd43c('0x1c')](_0x3d8e93['query'][_0xd43c('0x1c')]);_0x4d81c2[_0xd43c('0x1b')]=qs[_0xd43c('0x1b')](_0x3d8e93[_0xd43c('0x30')][_0xd43c('0x1b')]);}_0x4d81c2[_0xd43c('0x37')]=qs[_0xd43c('0x38')](_0x3d8e93[_0xd43c('0x30')]['sort']);_0x4d81c2[_0xd43c('0x3c')]=qs[_0xd43c('0x3a')](_['pick'](_0x3d8e93['query'],_0x4d8605['filters']));_0x4d81c2[_0xd43c('0x3c')][_0xd43c('0x56')]=_0x4417b9['id'];if(_0x3d8e93[_0xd43c('0x30')][_0xd43c('0x3b')]){_0x4d81c2[_0xd43c('0x3c')]=_[_0xd43c('0x3d')](_0x4d81c2[_0xd43c('0x3c')],{'$or':_[_0xd43c('0x2a')](_0x4d81c2[_0xd43c('0x33')],function(_0x834f6){var _0x55070b={};_0x55070b[_0x834f6]={'$like':'%'+_0x3d8e93[_0xd43c('0x30')][_0xd43c('0x3b')]+'%'};return _0x55070b;})});}_0x4d81c2=_['merge']({},_0x4d81c2,_0x3d8e93['options']);return db[_0xd43c('0x5a')][_0xd43c('0x1d')]({'where':_0x4d81c2[_0xd43c('0x3c')]})[_0xd43c('0x22')](function(_0x5dfefb){_0x451c47['count']=_0x5dfefb;if(_0x3d8e93[_0xd43c('0x30')][_0xd43c('0x41')]){_0x4d81c2[_0xd43c('0x4f')]=[{'all':!![]}];}return db['CmHopperFinal'][_0xd43c('0x42')](_0x4d81c2);})[_0xd43c('0x22')](function(_0x1027d5){_0x451c47['rows']=_0x1027d5;return _0x451c47;});}})[_0xd43c('0x22')](respondWithFilteredResult(_0x1986c0,_0x4d81c2))[_0xd43c('0x44')](handleError(_0x1986c0,null));};exports['getHopperBlacks']=function(_0x4ee4d9,_0x192fa4,_0x412289){var _0x3a3112={'raw':!![],'where':{}};var _0x496cbb={};var _0x159f84={'count':0x0,'rows':[]};return db[_0xd43c('0x40')]['findOne']({'where':{'id':_0x4ee4d9['params']['id']}})[_0xd43c('0x22')](handleEntityNotFound(_0x192fa4,null))['then'](function(_0x17425e){if(_0x17425e){_0x496cbb[_0xd43c('0x2e')]=_[_0xd43c('0x2f')](db[_0xd43c('0x5b')][_0xd43c('0x2b')]);_0x496cbb[_0xd43c('0x30')]=_['keys'](_0x4ee4d9[_0xd43c('0x30')]);_0x496cbb[_0xd43c('0x3a')]=_['intersection'](_0x496cbb['model'],_0x496cbb[_0xd43c('0x30')]);_0x3a3112[_0xd43c('0x33')]=_[_0xd43c('0x31')](_0x496cbb[_0xd43c('0x2e')],qs[_0xd43c('0x32')](_0x4ee4d9[_0xd43c('0x30')][_0xd43c('0x32')]));_0x3a3112[_0xd43c('0x33')]=_0x3a3112[_0xd43c('0x33')][_0xd43c('0x34')]?_0x3a3112[_0xd43c('0x33')]:_0x496cbb['model'];if(!_0x4ee4d9[_0xd43c('0x30')][_0xd43c('0x35')](_0xd43c('0x36'))){_0x3a3112[_0xd43c('0x1c')]=qs['limit'](_0x4ee4d9[_0xd43c('0x30')][_0xd43c('0x1c')]);_0x3a3112[_0xd43c('0x1b')]=qs[_0xd43c('0x1b')](_0x4ee4d9['query'][_0xd43c('0x1b')]);}_0x3a3112[_0xd43c('0x37')]=qs[_0xd43c('0x38')](_0x4ee4d9[_0xd43c('0x30')]['sort']);_0x3a3112[_0xd43c('0x3c')]=qs[_0xd43c('0x3a')](_[_0xd43c('0x39')](_0x4ee4d9[_0xd43c('0x30')],_0x496cbb['filters']));_0x3a3112[_0xd43c('0x3c')][_0xd43c('0x56')]=_0x17425e['id'];if(_0x4ee4d9[_0xd43c('0x30')]['filter']){_0x3a3112[_0xd43c('0x3c')]=_[_0xd43c('0x3d')](_0x3a3112['where'],{'$or':_[_0xd43c('0x2a')](_0x3a3112['attributes'],function(_0x1eba84){var _0x5426f7={};_0x5426f7[_0x1eba84]={'$like':'%'+_0x4ee4d9[_0xd43c('0x30')][_0xd43c('0x3b')]+'%'};return _0x5426f7;})});}_0x3a3112=_[_0xd43c('0x3d')]({},_0x3a3112,_0x4ee4d9[_0xd43c('0x3f')]);return db[_0xd43c('0x5b')]['count']({'where':_0x3a3112[_0xd43c('0x3c')]})[_0xd43c('0x22')](function(_0x569ee9){_0x159f84[_0xd43c('0x1d')]=_0x569ee9;if(_0x4ee4d9[_0xd43c('0x30')]['includeAll']){_0x3a3112['include']=[{'all':!![]}];}return db[_0xd43c('0x5b')]['findAll'](_0x3a3112);})[_0xd43c('0x22')](function(_0x242d6b){_0x159f84['rows']=_0x242d6b;return _0x159f84;});}})['then'](respondWithFilteredResult(_0x192fa4,_0x3a3112))[_0xd43c('0x44')](handleError(_0x192fa4,null));};exports[_0xd43c('0x5c')]=function(_0x5b92ff,_0x4f4f13,_0x3cdb5b){var _0x19f4c3={};var _0x5085ad={};var _0x41d3c0;var _0x2dbfac;return db[_0xd43c('0x40')][_0xd43c('0x5d')]({'where':{'id':_0x5b92ff[_0xd43c('0x4e')]['id']}})[_0xd43c('0x22')](handleEntityNotFound(_0x4f4f13,null))[_0xd43c('0x22')](function(_0x40ca2e){if(_0x40ca2e){_0x41d3c0=_0x40ca2e;_0x5085ad[_0xd43c('0x2e')]=_[_0xd43c('0x2f')](db[_0xd43c('0x5e')][_0xd43c('0x2b')]);_0x5085ad['query']=_['keys'](_0x5b92ff['query']);_0x5085ad[_0xd43c('0x3a')]=_[_0xd43c('0x31')](_0x5085ad[_0xd43c('0x2e')],_0x5085ad[_0xd43c('0x30')]);_0x19f4c3[_0xd43c('0x33')]=_[_0xd43c('0x31')](_0x5085ad['model'],qs[_0xd43c('0x32')](_0x5b92ff[_0xd43c('0x30')]['fields']));_0x19f4c3[_0xd43c('0x33')]=_0x19f4c3[_0xd43c('0x33')][_0xd43c('0x34')]?_0x19f4c3['attributes']:_0x5085ad[_0xd43c('0x2e')];_0x19f4c3['order']=qs[_0xd43c('0x38')](_0x5b92ff['query']['sort']);_0x19f4c3[_0xd43c('0x3c')]=qs[_0xd43c('0x3a')](_[_0xd43c('0x39')](_0x5b92ff[_0xd43c('0x30')],_0x5085ad[_0xd43c('0x3a')]));if(_0x5b92ff['query']['filter']){_0x19f4c3[_0xd43c('0x3c')]=_[_0xd43c('0x3d')](_0x19f4c3[_0xd43c('0x3c')],{'$or':_[_0xd43c('0x2a')](_0x19f4c3[_0xd43c('0x33')],function(_0x2c090d){var _0x4fcc63={};_0x4fcc63[_0x2c090d]={'$like':'%'+_0x5b92ff[_0xd43c('0x30')][_0xd43c('0x3b')]+'%'};return _0x4fcc63;})});}_0x19f4c3=_[_0xd43c('0x3d')]({},_0x19f4c3,_0x5b92ff[_0xd43c('0x3f')]);return _0x41d3c0[_0xd43c('0x5c')](_0x19f4c3);}})[_0xd43c('0x22')](function(_0x505096){if(_0x505096){_0x2dbfac=_0x505096[_0xd43c('0x34')];if(!_0x5b92ff[_0xd43c('0x30')][_0xd43c('0x35')]('nolimit')){_0x19f4c3[_0xd43c('0x1c')]=qs['limit'](_0x5b92ff[_0xd43c('0x30')][_0xd43c('0x1c')]);_0x19f4c3['offset']=qs['offset'](_0x5b92ff[_0xd43c('0x30')][_0xd43c('0x1b')]);}return _0x41d3c0[_0xd43c('0x5c')](_0x19f4c3);}})[_0xd43c('0x22')](function(_0x5387b1){if(_0x5387b1){return _0x5387b1?{'count':_0x2dbfac,'rows':_0x5387b1}:null;}})[_0xd43c('0x22')](respondWithResult(_0x4f4f13,null))['catch'](handleError(_0x4f4f13,null));};exports['addLists']=function(_0x11397f,_0x3c833c,_0x443292){var _0x1c137f,_0x4be3c7;return db[_0xd43c('0x40')][_0xd43c('0x46')]({'where':{'id':_0x11397f[_0xd43c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3c833c,null))[_0xd43c('0x22')](function(_0x5a32f9){if(_0x5a32f9){_0x4be3c7=_0x5a32f9;return _0x5a32f9[_0xd43c('0x5f')](_0x11397f[_0xd43c('0x48')][_0xd43c('0x60')],_[_0xd43c('0x61')](_0x11397f[_0xd43c('0x48')],[_0xd43c('0x60'),'id'])||{});}return null;})[_0xd43c('0x62')](function(_0x30f99d){var _0x4bd076;_0x1c137f=_0x30f99d||[];var _0x1c5b25=[];if(_0x30f99d){for(var _0x53f34c=0x0;_0x53f34c<_0x30f99d[_0xd43c('0x34')];_0x53f34c+=0x1){var _0x2a6e61=_0x30f99d[_0x53f34c][_0xd43c('0x24')]({'plain':!![]});_0x4be3c7[_0xd43c('0x63')]=_0x11397f[_0xd43c('0x48')]['dialCheckDuplicateType']?_0x11397f[_0xd43c('0x48')]['dialCheckDuplicateType']:_0x4be3c7[_0xd43c('0x63')];switch(_0x4be3c7[_0xd43c('0x63')]){case'always':_0x4bd076=squel['insert']()['into']('cm_hopper')[_0xd43c('0x64')](['phone',_0xd43c('0x65'),'ContactId',_0xd43c('0x66'),_0xd43c('0x56'),_0xd43c('0x50'),_0xd43c('0x51')],squel[_0xd43c('0x67')]()[_0xd43c('0x68')](_0xd43c('0x69'),'phone')[_0xd43c('0x68')](_0xd43c('0x6a'),_0xd43c('0x65'))[_0xd43c('0x68')]('id','ContactId')[_0xd43c('0x68')](_0x2a6e61[_0xd43c('0x6b')][_0xd43c('0x6c')](),_0xd43c('0x66'))[_0xd43c('0x68')](_0x11397f[_0xd43c('0x4e')]['id'][_0xd43c('0x6c')](),_0xd43c('0x56'))[_0xd43c('0x68')](_0xd43c('0x6a'),'createdAt')[_0xd43c('0x68')](_0xd43c('0x6a'),'updatedAt')[_0xd43c('0x6d')](_0xd43c('0x6e'))[_0xd43c('0x3c')](_0xd43c('0x6f'))[_0xd43c('0x3c')](_0xd43c('0x70'),_0x2a6e61['CmListId'][_0xd43c('0x6c')]())[_0xd43c('0x3c')](_0xd43c('0x71'))[_0xd43c('0x3c')](_0xd43c('0x72'),squel[_0xd43c('0x67')]()['field'](_0xd43c('0x73'))[_0xd43c('0x6d')]('cm_hopper_final')[_0xd43c('0x3c')]('CampaignId\x20=\x20?',_0x11397f[_0xd43c('0x4e')]['id']['toString']()))[_0xd43c('0x3c')](_0xd43c('0x72'),squel[_0xd43c('0x67')]()[_0xd43c('0x68')]('COALESCE(phone,\x27\x27)')[_0xd43c('0x6d')]('cm_hopper')[_0xd43c('0x3c')]('CampaignId\x20=\x20?',_0x11397f[_0xd43c('0x4e')]['id'][_0xd43c('0x6c')]())))[_0xd43c('0x6c')]();break;case _0xd43c('0x74'):_0x4bd076=squel['insert']()[_0xd43c('0x75')]('cm_hopper')[_0xd43c('0x64')]([_0xd43c('0x69'),_0xd43c('0x65'),'ContactId',_0xd43c('0x66'),'CampaignId',_0xd43c('0x50'),_0xd43c('0x51')],squel['select']()['field'](_0xd43c('0x69'),_0xd43c('0x69'))['field'](_0xd43c('0x6a'),'scheduledAt')[_0xd43c('0x68')]('id',_0xd43c('0x76'))[_0xd43c('0x68')](_0x2a6e61[_0xd43c('0x6b')]['toString'](),_0xd43c('0x66'))[_0xd43c('0x68')](_0x11397f[_0xd43c('0x4e')]['id'][_0xd43c('0x6c')](),_0xd43c('0x56'))['field'](_0xd43c('0x6a'),_0xd43c('0x50'))[_0xd43c('0x68')](_0xd43c('0x6a'),_0xd43c('0x51'))[_0xd43c('0x6d')]('cm_contacts')[_0xd43c('0x3c')]('deletedAt\x20IS\x20NULL')[_0xd43c('0x3c')](_0xd43c('0x70'),_0x2a6e61[_0xd43c('0x6b')]['toString']())[_0xd43c('0x3c')]('phone\x20IS\x20NOT\x20NULL')[_0xd43c('0x3c')](_0xd43c('0x72'),squel['select']()['field'](_0xd43c('0x77'))[_0xd43c('0x6d')](_0xd43c('0x78'))[_0xd43c('0x3c')](_0xd43c('0x79'),_0x11397f[_0xd43c('0x4e')]['id'][_0xd43c('0x6c')]())))[_0xd43c('0x6c')]();break;default:_0x4bd076=squel['insert']()[_0xd43c('0x75')](_0xd43c('0x78'))['fromQuery'](['phone',_0xd43c('0x65'),'ContactId','ListId',_0xd43c('0x56'),_0xd43c('0x50'),_0xd43c('0x51')],squel[_0xd43c('0x67')]()[_0xd43c('0x68')]('phone',_0xd43c('0x69'))['field'](_0xd43c('0x6a'),_0xd43c('0x65'))[_0xd43c('0x68')]('id','ContactId')[_0xd43c('0x68')](_0x2a6e61['CmListId'][_0xd43c('0x6c')](),_0xd43c('0x66'))[_0xd43c('0x68')](_0x11397f[_0xd43c('0x4e')]['id'][_0xd43c('0x6c')](),_0xd43c('0x56'))['field'](_0xd43c('0x6a'),'createdAt')[_0xd43c('0x68')](_0xd43c('0x6a'),_0xd43c('0x51'))[_0xd43c('0x6d')](_0xd43c('0x6e'))[_0xd43c('0x3c')](_0xd43c('0x6f'))[_0xd43c('0x3c')](_0xd43c('0x70'),_0x2a6e61[_0xd43c('0x6b')][_0xd43c('0x6c')]())[_0xd43c('0x3c')](_0xd43c('0x71')))['toString']();}_0x1c5b25[_0xd43c('0x7a')](db['sequelize'][_0xd43c('0x30')](_0x4bd076));}return BPromise[_0xd43c('0x7b')](_0x1c5b25);}})[_0xd43c('0x22')](function(){return _0x1c137f;})['then'](respondWithResult(_0x3c833c,null))[_0xd43c('0x44')](handleError(_0x3c833c,null));};exports[_0xd43c('0x7c')]=function(_0x23521e,_0x14674e,_0x5715f4){return db[_0xd43c('0x40')][_0xd43c('0x46')]({'where':{'id':_0x23521e[_0xd43c('0x4e')]['id']}})[_0xd43c('0x22')](handleEntityNotFound(_0x14674e,null))[_0xd43c('0x22')](function(_0x2c92e5){if(_0x2c92e5){return _0x2c92e5[_0xd43c('0x7c')](_0x23521e[_0xd43c('0x30')][_0xd43c('0x60')]);}})[_0xd43c('0x22')](function(_0x3c5aed){if(_0x3c5aed){return db[_0xd43c('0x55')][_0xd43c('0x23')]({'where':{'ListId':_0x23521e[_0xd43c('0x30')][_0xd43c('0x60')],'CampaignId':_0x23521e[_0xd43c('0x4e')]['id']}})[_0xd43c('0x22')](function(){return _0x3c5aed;});}})[_0xd43c('0x22')](respondWithStatusCode(_0x14674e,null))['catch'](handleError(_0x14674e,null));};exports[_0xd43c('0x7d')]=function(_0x25a20a,_0xa1a52d,_0x533125){var _0x2c6e1b={};var _0x52551b={};var _0x1297da;var _0x3c16ef;return db[_0xd43c('0x40')][_0xd43c('0x5d')]({'where':{'id':_0x25a20a[_0xd43c('0x4e')]['id']}})['then'](handleEntityNotFound(_0xa1a52d,null))[_0xd43c('0x22')](function(_0x240665){if(_0x240665){_0x1297da=_0x240665;_0x52551b[_0xd43c('0x2e')]=_[_0xd43c('0x2f')](db[_0xd43c('0x5e')][_0xd43c('0x2b')]);_0x52551b[_0xd43c('0x30')]=_[_0xd43c('0x2f')](_0x25a20a[_0xd43c('0x30')]);_0x52551b['filters']=_[_0xd43c('0x31')](_0x52551b[_0xd43c('0x2e')],_0x52551b[_0xd43c('0x30')]);_0x2c6e1b[_0xd43c('0x33')]=_[_0xd43c('0x31')](_0x52551b[_0xd43c('0x2e')],qs[_0xd43c('0x32')](_0x25a20a[_0xd43c('0x30')][_0xd43c('0x32')]));_0x2c6e1b[_0xd43c('0x33')]=_0x2c6e1b[_0xd43c('0x33')][_0xd43c('0x34')]?_0x2c6e1b[_0xd43c('0x33')]:_0x52551b[_0xd43c('0x2e')];_0x2c6e1b[_0xd43c('0x37')]=qs[_0xd43c('0x38')](_0x25a20a[_0xd43c('0x30')][_0xd43c('0x38')]);_0x2c6e1b[_0xd43c('0x3c')]=qs['filters'](_[_0xd43c('0x39')](_0x25a20a[_0xd43c('0x30')],_0x52551b[_0xd43c('0x3a')]));if(_0x25a20a['query'][_0xd43c('0x3b')]){_0x2c6e1b[_0xd43c('0x3c')]=_[_0xd43c('0x3d')](_0x2c6e1b[_0xd43c('0x3c')],{'$or':_[_0xd43c('0x2a')](_0x2c6e1b['attributes'],function(_0xa084bd){var _0x59d37d={};_0x59d37d[_0xa084bd]={'$like':'%'+_0x25a20a['query'][_0xd43c('0x3b')]+'%'};return _0x59d37d;})});}_0x2c6e1b=_['merge']({},_0x2c6e1b,_0x25a20a[_0xd43c('0x3f')]);return _0x1297da[_0xd43c('0x7d')](_0x2c6e1b);}})[_0xd43c('0x22')](function(_0x154e6f){if(_0x154e6f){_0x3c16ef=_0x154e6f['length'];if(!_0x25a20a['query'][_0xd43c('0x35')](_0xd43c('0x36'))){_0x2c6e1b[_0xd43c('0x1c')]=qs['limit'](_0x25a20a[_0xd43c('0x30')][_0xd43c('0x1c')]);_0x2c6e1b[_0xd43c('0x1b')]=qs[_0xd43c('0x1b')](_0x25a20a[_0xd43c('0x30')][_0xd43c('0x1b')]);}return _0x1297da['getBlackLists'](_0x2c6e1b);}})[_0xd43c('0x22')](function(_0x3683bb){if(_0x3683bb){return _0x3683bb?{'count':_0x3c16ef,'rows':_0x3683bb}:null;}})[_0xd43c('0x22')](respondWithResult(_0xa1a52d,null))['catch'](handleError(_0xa1a52d,null));};exports['addBlackLists']=function(_0x2fa135,_0xf78ee0,_0x358fa5){var _0x1ee612,_0x237236;return db['Campaign'][_0xd43c('0x46')]({'where':{'id':_0x2fa135[_0xd43c('0x4e')]['id']}})[_0xd43c('0x22')](handleEntityNotFound(_0xf78ee0,null))[_0xd43c('0x22')](function(_0x3e9748){if(_0x3e9748){_0x237236=_0x3e9748;return _0x3e9748[_0xd43c('0x7e')](_0x2fa135[_0xd43c('0x48')][_0xd43c('0x60')],_['omit'](_0x2fa135[_0xd43c('0x48')],[_0xd43c('0x60'),'id'])||{});}return null;})[_0xd43c('0x62')](function(_0x4e3b0a){var _0x505ca4;_0x1ee612=_0x4e3b0a||[];var _0x7ac00d=[];if(_0x4e3b0a){for(var _0x47036c=0x0;_0x47036c<_0x4e3b0a[_0xd43c('0x34')];_0x47036c+=0x1){var _0x433c06=_0x4e3b0a[_0x47036c][_0xd43c('0x24')]({'plain':!![]});_0x505ca4=squel['insert']()[_0xd43c('0x75')](_0xd43c('0x7f'))[_0xd43c('0x64')]([_0xd43c('0x69'),'ContactId',_0xd43c('0x66'),_0xd43c('0x56'),_0xd43c('0x50'),_0xd43c('0x51')],squel[_0xd43c('0x67')]()['field'](_0xd43c('0x69'),_0xd43c('0x69'))['field']('id',_0xd43c('0x76'))[_0xd43c('0x68')](_0x433c06[_0xd43c('0x6b')]['toString'](),_0xd43c('0x66'))[_0xd43c('0x68')](_0x2fa135[_0xd43c('0x4e')]['id'][_0xd43c('0x6c')](),'CampaignId')[_0xd43c('0x68')]('NOW()',_0xd43c('0x50'))[_0xd43c('0x68')](_0xd43c('0x6a'),_0xd43c('0x51'))['from']('cm_contacts')['where'](_0xd43c('0x6f'))[_0xd43c('0x3c')](_0xd43c('0x70'),_0x433c06['CmListId'][_0xd43c('0x6c')]())[_0xd43c('0x3c')](_0xd43c('0x71')))[_0xd43c('0x6c')]();_0x7ac00d[_0xd43c('0x7a')](db[_0xd43c('0x80')][_0xd43c('0x30')](_0x505ca4));}return BPromise[_0xd43c('0x7b')](_0x7ac00d);}})[_0xd43c('0x22')](function(){return _0x1ee612;})[_0xd43c('0x22')](respondWithResult(_0xf78ee0,null))['catch'](handleError(_0xf78ee0,null));};exports['removeBlackLists']=function(_0x5119ed,_0x3935b6,_0xfbd01f){return db[_0xd43c('0x40')][_0xd43c('0x46')]({'where':{'id':_0x5119ed[_0xd43c('0x4e')]['id']}})[_0xd43c('0x22')](handleEntityNotFound(_0x3935b6,null))[_0xd43c('0x22')](function(_0x434b03){if(_0x434b03){return _0x434b03['removeBlackLists'](_0x5119ed[_0xd43c('0x30')][_0xd43c('0x60')]);}})['then'](function(_0x11ee5c){if(_0x11ee5c){return db['CmHopperBlack'][_0xd43c('0x23')]({'where':{'ListId':_0x5119ed[_0xd43c('0x30')][_0xd43c('0x60')],'CampaignId':_0x5119ed[_0xd43c('0x4e')]['id']}})[_0xd43c('0x22')](function(){return _0x11ee5c;});}})[_0xd43c('0x22')](respondWithStatusCode(_0x3935b6,null))[_0xd43c('0x44')](handleError(_0x3935b6,null));};
\ No newline at end of file
+var _0xae20=['IvrCampaigns','UserProfileResource','then','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','hasOwnProperty','order','sort','where','pick','filter','merge','options','Campaign','includeAll','include','findAll','catch','show','params','fields','length','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','updatedAt','body','UserProfileSection','find','getHoppers','findOne','CmHopper','nolimit','CampaignId','getHopperHistories','CmHopperHistory','rows','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','CmList','getLists','addLists','ids','spread','dialCheckDuplicateType','insert','cm_hopper','fromQuery','phone','ContactId','ListId','createdAt','field','scheduledAt','CmListId','toString','NOW()','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','select','cm_hopper_final','CampaignId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','COALESCE(phone,\x27\x27)','from','onlyIfOpen','into','phone\x20IS\x20NOT\x20NULL','push','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','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','limit','count','set','apply','reject','save','update','destroy','get'];(function(_0x151e67,_0x41cca0){var _0x8dc7c7=function(_0x68515c){while(--_0x68515c){_0x151e67['push'](_0x151e67['shift']());}};_0x8dc7c7(++_0x41cca0);}(_0xae20,0xea));var _0x0ae2=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xae20[_0x57b54c];return _0x59cc19;};'use strict';var emlformat=require(_0x0ae2('0x0'));var rimraf=require(_0x0ae2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0ae2('0x2'));var rp=require(_0x0ae2('0x3'));var moment=require(_0x0ae2('0x4'));var BPromise=require(_0x0ae2('0x5'));var Mustache=require(_0x0ae2('0x6'));var util=require(_0x0ae2('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x0ae2('0x8'));var ejs=require(_0x0ae2('0x9'));var fs=require('fs');var fs_extra=require(_0x0ae2('0xa'));var _=require('lodash');var squel=require(_0x0ae2('0xb'));var crypto=require(_0x0ae2('0xc'));var jsforce=require(_0x0ae2('0xd'));var deskjs=require(_0x0ae2('0xe'));var toCsv=require(_0x0ae2('0x8'));var querystring=require(_0x0ae2('0xf'));var Papa=require(_0x0ae2('0x10'));var Redis=require(_0x0ae2('0x11'));var authService=require(_0x0ae2('0x12'));var qs=require(_0x0ae2('0x13'));var as=require(_0x0ae2('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0ae2('0x15'))('api');var utils=require(_0x0ae2('0x16'));var config=require(_0x0ae2('0x17'));var licenseUtil=require(_0x0ae2('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x54578d,_0x50a02e){_0x50a02e=_0x50a02e||0xcc;return function(_0x146c76){if(_0x146c76){return _0x54578d[_0x0ae2('0x19')](_0x50a02e);}return _0x54578d[_0x0ae2('0x1a')](_0x50a02e)['end']();};}function respondWithResult(_0x3f1a7d,_0x20ccfd){_0x20ccfd=_0x20ccfd||0xc8;return function(_0x21a1af){if(_0x21a1af){return _0x3f1a7d[_0x0ae2('0x1a')](_0x20ccfd)[_0x0ae2('0x1b')](_0x21a1af);}};}function respondWithFilteredResult(_0x5777e6,_0x5452cb){return function(_0x558a8f){if(_0x558a8f){var _0x240787=typeof _0x5452cb[_0x0ae2('0x1c')]==='undefined'&&typeof _0x5452cb[_0x0ae2('0x1d')]==='undefined';var _0x1dfa4f=_0x558a8f[_0x0ae2('0x1e')];var _0x368fff=_0x240787?0x0:_0x5452cb[_0x0ae2('0x1c')];var _0x2a12ac=_0x240787?_0x558a8f[_0x0ae2('0x1e')]:_0x5452cb[_0x0ae2('0x1c')]+_0x5452cb[_0x0ae2('0x1d')];var _0x1036e5;if(_0x2a12ac>=_0x1dfa4f){_0x2a12ac=_0x1dfa4f;_0x1036e5=0xc8;}else{_0x1036e5=0xce;}_0x5777e6[_0x0ae2('0x1a')](_0x1036e5);return _0x5777e6[_0x0ae2('0x1f')]('Content-Range',_0x368fff+'-'+_0x2a12ac+'/'+_0x1dfa4f)[_0x0ae2('0x1b')](_0x558a8f);}return null;};}function patchUpdates(_0x51cb67){return function(_0x3cdefe){try{jsonpatch[_0x0ae2('0x20')](_0x3cdefe,_0x51cb67,!![]);}catch(_0x38b119){return BPromise[_0x0ae2('0x21')](_0x38b119);}return _0x3cdefe[_0x0ae2('0x22')]();};}function saveUpdates(_0x1534c8,_0xa78782){return function(_0x3db830){if(_0x3db830){return _0x3db830[_0x0ae2('0x23')](_0x1534c8)['then'](function(_0x8e1ba0){return _0x8e1ba0;});}return null;};}function removeEntity(_0x28112d,_0x2933de){return function(_0x2e05d3){if(_0x2e05d3){return _0x2e05d3[_0x0ae2('0x24')]()['then'](function(){var _0x48509b=_0x2e05d3[_0x0ae2('0x25')]({'plain':!![]});var _0x30f6f6=_0x0ae2('0x26');return db[_0x0ae2('0x27')][_0x0ae2('0x24')]({'where':{'type':_0x30f6f6,'resourceId':_0x48509b['id']}})['then'](function(){return _0x2e05d3;});})[_0x0ae2('0x28')](function(){_0x28112d['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1aa0df,_0x26b449){return function(_0x33094d){if(!_0x33094d){_0x1aa0df['sendStatus'](0x194);}return _0x33094d;};}function handleError(_0x422df4,_0xfe905d){_0xfe905d=_0xfe905d||0x1f4;return function(_0xfd7236){logger[_0x0ae2('0x29')](_0xfd7236[_0x0ae2('0x2a')]);if(_0xfd7236[_0x0ae2('0x2b')]){delete _0xfd7236['name'];}_0x422df4[_0x0ae2('0x1a')](_0xfe905d)['send'](_0xfd7236);};}exports[_0x0ae2('0x2c')]=function(_0x6a8830,_0x5b59d0){var _0x31bd70={},_0x2c033a={},_0x289d3b={'count':0x0,'rows':[]};var _0x5963fc=_[_0x0ae2('0x2d')](db['Campaign'][_0x0ae2('0x2e')],function(_0x37cad0){return{'name':_0x37cad0[_0x0ae2('0x2f')],'type':_0x37cad0[_0x0ae2('0x30')][_0x0ae2('0x31')]};});_0x2c033a[_0x0ae2('0x32')]=_[_0x0ae2('0x2d')](_0x5963fc,_0x0ae2('0x2b'));_0x2c033a['query']=_[_0x0ae2('0x33')](_0x6a8830[_0x0ae2('0x34')]);_0x2c033a[_0x0ae2('0x35')]=_['intersection'](_0x2c033a[_0x0ae2('0x32')],_0x2c033a[_0x0ae2('0x34')]);_0x31bd70[_0x0ae2('0x36')]=_[_0x0ae2('0x37')](_0x2c033a['model'],qs['fields'](_0x6a8830['query']['fields']));_0x31bd70['attributes']=_0x31bd70[_0x0ae2('0x36')]['length']?_0x31bd70[_0x0ae2('0x36')]:_0x2c033a[_0x0ae2('0x32')];if(!_0x6a8830[_0x0ae2('0x34')][_0x0ae2('0x38')]('nolimit')){_0x31bd70[_0x0ae2('0x1d')]=qs[_0x0ae2('0x1d')](_0x6a8830[_0x0ae2('0x34')][_0x0ae2('0x1d')]);_0x31bd70[_0x0ae2('0x1c')]=qs['offset'](_0x6a8830[_0x0ae2('0x34')][_0x0ae2('0x1c')]);}_0x31bd70[_0x0ae2('0x39')]=qs[_0x0ae2('0x3a')](_0x6a8830[_0x0ae2('0x34')][_0x0ae2('0x3a')]);_0x31bd70[_0x0ae2('0x3b')]=qs['filters'](_[_0x0ae2('0x3c')](_0x6a8830[_0x0ae2('0x34')],_0x2c033a[_0x0ae2('0x35')]),_0x5963fc);if(_0x6a8830['query'][_0x0ae2('0x3d')]){_0x31bd70[_0x0ae2('0x3b')]=_[_0x0ae2('0x3e')](_0x31bd70[_0x0ae2('0x3b')],{'$or':_['map'](_0x5963fc,function(_0x39e5fd){if(_0x39e5fd[_0x0ae2('0x30')]!=='VIRTUAL'){var _0x1556e1={};_0x1556e1[_0x39e5fd[_0x0ae2('0x2b')]]={'$like':'%'+_0x6a8830[_0x0ae2('0x34')][_0x0ae2('0x3d')]+'%'};return _0x1556e1;}})});}_0x31bd70=_[_0x0ae2('0x3e')]({},_0x31bd70,_0x6a8830[_0x0ae2('0x3f')]);var _0x3014cd={'where':_0x31bd70[_0x0ae2('0x3b')]};return db[_0x0ae2('0x40')][_0x0ae2('0x1e')](_0x3014cd)['then'](function(_0x3851e5){_0x289d3b[_0x0ae2('0x1e')]=_0x3851e5;if(_0x6a8830[_0x0ae2('0x34')][_0x0ae2('0x41')]){_0x31bd70[_0x0ae2('0x42')]=[{'all':!![]}];}return db[_0x0ae2('0x40')][_0x0ae2('0x43')](_0x31bd70);})[_0x0ae2('0x28')](function(_0x18af12){_0x289d3b['rows']=_0x18af12;return _0x289d3b;})[_0x0ae2('0x28')](respondWithFilteredResult(_0x5b59d0,_0x31bd70))[_0x0ae2('0x44')](handleError(_0x5b59d0,null));};exports[_0x0ae2('0x45')]=function(_0x46c8ea,_0x39a28c){var _0x5a28ed={'raw':![],'where':{'id':_0x46c8ea[_0x0ae2('0x46')]['id']}},_0x50e3fc={};_0x50e3fc[_0x0ae2('0x32')]=_[_0x0ae2('0x33')](db[_0x0ae2('0x40')][_0x0ae2('0x2e')]);_0x50e3fc[_0x0ae2('0x34')]=_[_0x0ae2('0x33')](_0x46c8ea[_0x0ae2('0x34')]);_0x50e3fc[_0x0ae2('0x35')]=_[_0x0ae2('0x37')](_0x50e3fc[_0x0ae2('0x32')],_0x50e3fc['query']);_0x5a28ed[_0x0ae2('0x36')]=_['intersection'](_0x50e3fc[_0x0ae2('0x32')],qs[_0x0ae2('0x47')](_0x46c8ea[_0x0ae2('0x34')][_0x0ae2('0x47')]));_0x5a28ed[_0x0ae2('0x36')]=_0x5a28ed[_0x0ae2('0x36')][_0x0ae2('0x48')]?_0x5a28ed[_0x0ae2('0x36')]:_0x50e3fc['model'];if(_0x46c8ea[_0x0ae2('0x34')][_0x0ae2('0x41')]){_0x5a28ed[_0x0ae2('0x42')]=[{'all':!![]}];}_0x5a28ed=_[_0x0ae2('0x3e')]({},_0x5a28ed,_0x46c8ea[_0x0ae2('0x3f')]);return db[_0x0ae2('0x40')]['find'](_0x5a28ed)['then'](handleEntityNotFound(_0x39a28c,null))[_0x0ae2('0x28')](respondWithResult(_0x39a28c,null))['catch'](handleError(_0x39a28c,null));};exports['create']=function(_0x2e9357,_0x34feb1){return db['Campaign'][_0x0ae2('0x49')](_0x2e9357['body'],{})[_0x0ae2('0x28')](function(_0x386ebc){var _0x5663ac=_0x2e9357['user'][_0x0ae2('0x25')]({'plain':!![]});if(!_0x5663ac)throw new Error(_0x0ae2('0x4a'));if(_0x5663ac[_0x0ae2('0x4b')]===_0x0ae2('0x4c')){var _0x235de1=_0x386ebc[_0x0ae2('0x25')]({'plain':!![]});var _0x1a9240=_0x0ae2('0x26');return db['UserProfileSection']['find']({'where':{'name':_0x1a9240,'userProfileId':_0x5663ac[_0x0ae2('0x4d')]},'raw':!![]})['then'](function(_0x3d8331){if(_0x3d8331&&_0x3d8331[_0x0ae2('0x4e')]===0x0){return db[_0x0ae2('0x27')]['create']({'name':_0x235de1[_0x0ae2('0x2b')],'resourceId':_0x235de1['id'],'type':_0x3d8331[_0x0ae2('0x2b')],'sectionId':_0x3d8331['id']},{})['then'](function(){return _0x386ebc;});}else{return _0x386ebc;}})['catch'](function(_0x1d744f){logger[_0x0ae2('0x29')](_0x0ae2('0x4f'),_0x1d744f);throw _0x1d744f;});}return _0x386ebc;})[_0x0ae2('0x28')](respondWithResult(_0x34feb1,0xc9))['catch'](handleError(_0x34feb1,null));};exports[_0x0ae2('0x50')]=function(_0x3e1fee,_0x356b4a){var _0x2bb93e={'where':{'id':_0x3e1fee[_0x0ae2('0x46')]['id']}},_0x12795f={};_0x12795f[_0x0ae2('0x32')]=_['keys'](db[_0x0ae2('0x40')][_0x0ae2('0x2e')]);_0x2bb93e['attributes']=_[_0x0ae2('0x37')](_0x12795f['model'],qs[_0x0ae2('0x47')](_0x3e1fee[_0x0ae2('0x34')][_0x0ae2('0x47')]));_0x2bb93e[_0x0ae2('0x36')]=_0x2bb93e[_0x0ae2('0x36')][_0x0ae2('0x48')]?_0x2bb93e[_0x0ae2('0x36')]:_0x12795f[_0x0ae2('0x32')];if(_0x3e1fee['query'][_0x0ae2('0x41')]){_0x2bb93e['include']=[{'all':!![]}];}_0x2bb93e=_[_0x0ae2('0x3e')]({},_0x2bb93e,_0x3e1fee[_0x0ae2('0x3f')]);return db['Campaign']['find'](_0x2bb93e)[_0x0ae2('0x28')](handleEntityNotFound(_0x356b4a,null))[_0x0ae2('0x28')](function(_0x2183fe){if(_0x2183fe){var _0x588b27=_0x2183fe['get']({'plain':!![]});_0x588b27=qs[_0x0ae2('0x51')](_0x588b27,['id','createdAt',_0x0ae2('0x52')]);_0x3e1fee['body']=_['omit'](_0x3e1fee[_0x0ae2('0x53')],['id','createdAt',_0x0ae2('0x52')]);return db['Campaign']['create'](_[_0x0ae2('0x3e')](_0x588b27,_0x3e1fee[_0x0ae2('0x53')]),{'include':_0x3e1fee['query'][_0x0ae2('0x41')]?[{'all':!![]}]:undefined})[_0x0ae2('0x28')](function(_0x31c6b7){var _0x45b655=_0x3e1fee['user']['get']({'plain':!![]});if(!_0x45b655)throw new Error(_0x0ae2('0x4a'));if(_0x45b655[_0x0ae2('0x4b')]===_0x0ae2('0x4c')){var _0x305c02=_0x31c6b7[_0x0ae2('0x25')]({'plain':!![]});var _0x3883d8=_0x0ae2('0x26');return db[_0x0ae2('0x54')][_0x0ae2('0x55')]({'where':{'name':_0x3883d8,'userProfileId':_0x45b655['userProfileId']},'raw':!![]})[_0x0ae2('0x28')](function(_0x4e721e){if(_0x4e721e&&_0x4e721e['autoAssociation']===0x0){return db[_0x0ae2('0x27')][_0x0ae2('0x49')]({'name':_0x305c02['name'],'resourceId':_0x305c02['id'],'type':_0x4e721e[_0x0ae2('0x2b')],'sectionId':_0x4e721e['id']},{})[_0x0ae2('0x28')](function(){return _0x31c6b7;});}else{return _0x31c6b7;}})[_0x0ae2('0x44')](function(_0x3bfa2e){logger[_0x0ae2('0x29')](_0x0ae2('0x4f'),_0x3bfa2e);throw _0x3bfa2e;});}return _0x31c6b7;});}})[_0x0ae2('0x28')](respondWithResult(_0x356b4a,0xc9))['catch'](handleError(_0x356b4a,null));};exports[_0x0ae2('0x23')]=function(_0x518b60,_0x19cb4c){if(_0x518b60[_0x0ae2('0x53')]['id']){delete _0x518b60[_0x0ae2('0x53')]['id'];}return db['Campaign'][_0x0ae2('0x55')]({'where':{'id':_0x518b60['params']['id']}})[_0x0ae2('0x28')](handleEntityNotFound(_0x19cb4c,null))[_0x0ae2('0x28')](saveUpdates(_0x518b60[_0x0ae2('0x53')],null))[_0x0ae2('0x28')](respondWithResult(_0x19cb4c,null))[_0x0ae2('0x44')](handleError(_0x19cb4c,null));};exports[_0x0ae2('0x24')]=function(_0x2a2675,_0x235cd6){return db[_0x0ae2('0x40')][_0x0ae2('0x55')]({'where':{'id':_0x2a2675[_0x0ae2('0x46')]['id']}})[_0x0ae2('0x28')](handleEntityNotFound(_0x235cd6,null))[_0x0ae2('0x28')](removeEntity(_0x235cd6,null))['catch'](handleError(_0x235cd6,null));};exports[_0x0ae2('0x56')]=function(_0x492e60,_0x1e4af4,_0x1e1558){var _0x266cb9={'raw':!![],'where':{}};var _0xade6b0={};var _0x50ac56={'count':0x0,'rows':[]};return db[_0x0ae2('0x40')][_0x0ae2('0x57')]({'where':{'id':_0x492e60[_0x0ae2('0x46')]['id']}})['then'](handleEntityNotFound(_0x1e4af4,null))[_0x0ae2('0x28')](function(_0x405660){if(_0x405660){_0xade6b0[_0x0ae2('0x32')]=_[_0x0ae2('0x33')](db[_0x0ae2('0x58')][_0x0ae2('0x2e')]);_0xade6b0[_0x0ae2('0x34')]=_[_0x0ae2('0x33')](_0x492e60['query']);_0xade6b0[_0x0ae2('0x35')]=_[_0x0ae2('0x37')](_0xade6b0['model'],_0xade6b0[_0x0ae2('0x34')]);_0x266cb9['attributes']=_['intersection'](_0xade6b0[_0x0ae2('0x32')],qs['fields'](_0x492e60['query']['fields']));_0x266cb9['attributes']=_0x266cb9[_0x0ae2('0x36')][_0x0ae2('0x48')]?_0x266cb9[_0x0ae2('0x36')]:_0xade6b0[_0x0ae2('0x32')];if(!_0x492e60[_0x0ae2('0x34')]['hasOwnProperty'](_0x0ae2('0x59'))){_0x266cb9[_0x0ae2('0x1d')]=qs[_0x0ae2('0x1d')](_0x492e60[_0x0ae2('0x34')][_0x0ae2('0x1d')]);_0x266cb9['offset']=qs['offset'](_0x492e60['query'][_0x0ae2('0x1c')]);}_0x266cb9[_0x0ae2('0x39')]=qs['sort'](_0x492e60[_0x0ae2('0x34')][_0x0ae2('0x3a')]);_0x266cb9[_0x0ae2('0x3b')]=qs[_0x0ae2('0x35')](_[_0x0ae2('0x3c')](_0x492e60[_0x0ae2('0x34')],_0xade6b0[_0x0ae2('0x35')]));_0x266cb9['where'][_0x0ae2('0x5a')]=_0x405660['id'];if(_0x492e60[_0x0ae2('0x34')][_0x0ae2('0x3d')]){_0x266cb9[_0x0ae2('0x3b')]=_[_0x0ae2('0x3e')](_0x266cb9[_0x0ae2('0x3b')],{'$or':_[_0x0ae2('0x2d')](_0x266cb9[_0x0ae2('0x36')],function(_0x39ec80){var _0x1c4099={};_0x1c4099[_0x39ec80]={'$like':'%'+_0x492e60[_0x0ae2('0x34')][_0x0ae2('0x3d')]+'%'};return _0x1c4099;})});}_0x266cb9=_[_0x0ae2('0x3e')]({},_0x266cb9,_0x492e60[_0x0ae2('0x3f')]);return db[_0x0ae2('0x58')]['count']({'where':_0x266cb9[_0x0ae2('0x3b')]})[_0x0ae2('0x28')](function(_0x2ec229){_0x50ac56[_0x0ae2('0x1e')]=_0x2ec229;if(_0x492e60['query']['includeAll']){_0x266cb9[_0x0ae2('0x42')]=[{'all':!![]}];}return db[_0x0ae2('0x58')][_0x0ae2('0x43')](_0x266cb9);})[_0x0ae2('0x28')](function(_0x137734){_0x50ac56['rows']=_0x137734;return _0x50ac56;});}})[_0x0ae2('0x28')](respondWithFilteredResult(_0x1e4af4,_0x266cb9))[_0x0ae2('0x44')](handleError(_0x1e4af4,null));};exports[_0x0ae2('0x5b')]=function(_0x4d6912,_0x377663,_0x275bc6){var _0x40cd17={'raw':!![],'where':{}};var _0x14116f={};var _0x46ea44={'count':0x0,'rows':[]};return db[_0x0ae2('0x40')][_0x0ae2('0x57')]({'where':{'id':_0x4d6912[_0x0ae2('0x46')]['id']}})[_0x0ae2('0x28')](handleEntityNotFound(_0x377663,null))[_0x0ae2('0x28')](function(_0x4ad8e9){if(_0x4ad8e9){_0x14116f[_0x0ae2('0x32')]=_['keys'](db['CmHopperHistory'][_0x0ae2('0x2e')]);_0x14116f[_0x0ae2('0x34')]=_[_0x0ae2('0x33')](_0x4d6912[_0x0ae2('0x34')]);_0x14116f[_0x0ae2('0x35')]=_['intersection'](_0x14116f[_0x0ae2('0x32')],_0x14116f[_0x0ae2('0x34')]);_0x40cd17[_0x0ae2('0x36')]=_[_0x0ae2('0x37')](_0x14116f[_0x0ae2('0x32')],qs[_0x0ae2('0x47')](_0x4d6912[_0x0ae2('0x34')][_0x0ae2('0x47')]));_0x40cd17['attributes']=_0x40cd17[_0x0ae2('0x36')][_0x0ae2('0x48')]?_0x40cd17['attributes']:_0x14116f['model'];if(!_0x4d6912[_0x0ae2('0x34')][_0x0ae2('0x38')](_0x0ae2('0x59'))){_0x40cd17[_0x0ae2('0x1d')]=qs['limit'](_0x4d6912[_0x0ae2('0x34')][_0x0ae2('0x1d')]);_0x40cd17['offset']=qs['offset'](_0x4d6912[_0x0ae2('0x34')][_0x0ae2('0x1c')]);}_0x40cd17[_0x0ae2('0x39')]=qs[_0x0ae2('0x3a')](_0x4d6912[_0x0ae2('0x34')][_0x0ae2('0x3a')]);_0x40cd17['where']=qs[_0x0ae2('0x35')](_['pick'](_0x4d6912[_0x0ae2('0x34')],_0x14116f['filters']));_0x40cd17[_0x0ae2('0x3b')][_0x0ae2('0x5a')]=_0x4ad8e9['id'];if(_0x4d6912[_0x0ae2('0x34')][_0x0ae2('0x3d')]){_0x40cd17['where']=_['merge'](_0x40cd17['where'],{'$or':_['map'](_0x40cd17['attributes'],function(_0x1d615d){var _0x440454={};_0x440454[_0x1d615d]={'$like':'%'+_0x4d6912[_0x0ae2('0x34')][_0x0ae2('0x3d')]+'%'};return _0x440454;})});}_0x40cd17=_['merge']({},_0x40cd17,_0x4d6912[_0x0ae2('0x3f')]);return db[_0x0ae2('0x5c')]['count']({'where':_0x40cd17['where']})['then'](function(_0x434244){_0x46ea44[_0x0ae2('0x1e')]=_0x434244;if(_0x4d6912['query'][_0x0ae2('0x41')]){_0x40cd17[_0x0ae2('0x42')]=[{'all':!![]}];}return db[_0x0ae2('0x5c')][_0x0ae2('0x43')](_0x40cd17);})['then'](function(_0x47b992){_0x46ea44[_0x0ae2('0x5d')]=_0x47b992;return _0x46ea44;});}})[_0x0ae2('0x28')](respondWithFilteredResult(_0x377663,_0x40cd17))['catch'](handleError(_0x377663,null));};exports[_0x0ae2('0x5e')]=function(_0x31cb76,_0x19bc38,_0x4489de){var _0x172fde={'raw':!![],'where':{}};var _0x4d2bbb={};var _0x4a8bae={'count':0x0,'rows':[]};return db[_0x0ae2('0x40')]['findOne']({'where':{'id':_0x31cb76['params']['id']}})[_0x0ae2('0x28')](handleEntityNotFound(_0x19bc38,null))[_0x0ae2('0x28')](function(_0x282be1){if(_0x282be1){_0x4d2bbb['model']=_[_0x0ae2('0x33')](db[_0x0ae2('0x5f')][_0x0ae2('0x2e')]);_0x4d2bbb['query']=_[_0x0ae2('0x33')](_0x31cb76[_0x0ae2('0x34')]);_0x4d2bbb[_0x0ae2('0x35')]=_[_0x0ae2('0x37')](_0x4d2bbb['model'],_0x4d2bbb[_0x0ae2('0x34')]);_0x172fde['attributes']=_[_0x0ae2('0x37')](_0x4d2bbb[_0x0ae2('0x32')],qs[_0x0ae2('0x47')](_0x31cb76[_0x0ae2('0x34')][_0x0ae2('0x47')]));_0x172fde[_0x0ae2('0x36')]=_0x172fde[_0x0ae2('0x36')][_0x0ae2('0x48')]?_0x172fde[_0x0ae2('0x36')]:_0x4d2bbb[_0x0ae2('0x32')];if(!_0x31cb76['query'][_0x0ae2('0x38')]('nolimit')){_0x172fde[_0x0ae2('0x1d')]=qs[_0x0ae2('0x1d')](_0x31cb76['query']['limit']);_0x172fde[_0x0ae2('0x1c')]=qs['offset'](_0x31cb76[_0x0ae2('0x34')][_0x0ae2('0x1c')]);}_0x172fde[_0x0ae2('0x39')]=qs[_0x0ae2('0x3a')](_0x31cb76[_0x0ae2('0x34')][_0x0ae2('0x3a')]);_0x172fde['where']=qs[_0x0ae2('0x35')](_[_0x0ae2('0x3c')](_0x31cb76[_0x0ae2('0x34')],_0x4d2bbb[_0x0ae2('0x35')]));_0x172fde[_0x0ae2('0x3b')][_0x0ae2('0x5a')]=_0x282be1['id'];if(_0x31cb76['query'][_0x0ae2('0x3d')]){_0x172fde[_0x0ae2('0x3b')]=_[_0x0ae2('0x3e')](_0x172fde['where'],{'$or':_[_0x0ae2('0x2d')](_0x172fde[_0x0ae2('0x36')],function(_0x5d7a68){var _0x3c77f7={};_0x3c77f7[_0x5d7a68]={'$like':'%'+_0x31cb76['query'][_0x0ae2('0x3d')]+'%'};return _0x3c77f7;})});}_0x172fde=_[_0x0ae2('0x3e')]({},_0x172fde,_0x31cb76['options']);return db[_0x0ae2('0x5f')][_0x0ae2('0x1e')]({'where':_0x172fde[_0x0ae2('0x3b')]})[_0x0ae2('0x28')](function(_0x838a9a){_0x4a8bae['count']=_0x838a9a;if(_0x31cb76[_0x0ae2('0x34')]['includeAll']){_0x172fde[_0x0ae2('0x42')]=[{'all':!![]}];}return db['CmHopperFinal'][_0x0ae2('0x43')](_0x172fde);})['then'](function(_0x3bd9af){_0x4a8bae[_0x0ae2('0x5d')]=_0x3bd9af;return _0x4a8bae;});}})['then'](respondWithFilteredResult(_0x19bc38,_0x172fde))[_0x0ae2('0x44')](handleError(_0x19bc38,null));};exports[_0x0ae2('0x60')]=function(_0x351f2d,_0x29b9fc,_0x6333dc){var _0x370a34={'raw':!![],'where':{}};var _0x49c2c0={};var _0x17f0e7={'count':0x0,'rows':[]};return db[_0x0ae2('0x40')][_0x0ae2('0x57')]({'where':{'id':_0x351f2d['params']['id']}})[_0x0ae2('0x28')](handleEntityNotFound(_0x29b9fc,null))[_0x0ae2('0x28')](function(_0x44bf94){if(_0x44bf94){_0x49c2c0[_0x0ae2('0x32')]=_['keys'](db[_0x0ae2('0x61')][_0x0ae2('0x2e')]);_0x49c2c0[_0x0ae2('0x34')]=_['keys'](_0x351f2d[_0x0ae2('0x34')]);_0x49c2c0[_0x0ae2('0x35')]=_['intersection'](_0x49c2c0[_0x0ae2('0x32')],_0x49c2c0[_0x0ae2('0x34')]);_0x370a34[_0x0ae2('0x36')]=_[_0x0ae2('0x37')](_0x49c2c0['model'],qs[_0x0ae2('0x47')](_0x351f2d[_0x0ae2('0x34')][_0x0ae2('0x47')]));_0x370a34[_0x0ae2('0x36')]=_0x370a34['attributes']['length']?_0x370a34[_0x0ae2('0x36')]:_0x49c2c0['model'];if(!_0x351f2d[_0x0ae2('0x34')]['hasOwnProperty']('nolimit')){_0x370a34['limit']=qs[_0x0ae2('0x1d')](_0x351f2d['query'][_0x0ae2('0x1d')]);_0x370a34['offset']=qs['offset'](_0x351f2d[_0x0ae2('0x34')][_0x0ae2('0x1c')]);}_0x370a34['order']=qs[_0x0ae2('0x3a')](_0x351f2d[_0x0ae2('0x34')][_0x0ae2('0x3a')]);_0x370a34[_0x0ae2('0x3b')]=qs['filters'](_[_0x0ae2('0x3c')](_0x351f2d['query'],_0x49c2c0[_0x0ae2('0x35')]));_0x370a34[_0x0ae2('0x3b')][_0x0ae2('0x5a')]=_0x44bf94['id'];if(_0x351f2d[_0x0ae2('0x34')]['filter']){_0x370a34['where']=_[_0x0ae2('0x3e')](_0x370a34['where'],{'$or':_['map'](_0x370a34[_0x0ae2('0x36')],function(_0xbf1327){var _0x579fc9={};_0x579fc9[_0xbf1327]={'$like':'%'+_0x351f2d['query']['filter']+'%'};return _0x579fc9;})});}_0x370a34=_[_0x0ae2('0x3e')]({},_0x370a34,_0x351f2d[_0x0ae2('0x3f')]);return db[_0x0ae2('0x61')][_0x0ae2('0x1e')]({'where':_0x370a34[_0x0ae2('0x3b')]})[_0x0ae2('0x28')](function(_0x18c78d){_0x17f0e7['count']=_0x18c78d;if(_0x351f2d[_0x0ae2('0x34')]['includeAll']){_0x370a34['include']=[{'all':!![]}];}return db[_0x0ae2('0x61')][_0x0ae2('0x43')](_0x370a34);})['then'](function(_0x1ddbc3){_0x17f0e7[_0x0ae2('0x5d')]=_0x1ddbc3;return _0x17f0e7;});}})[_0x0ae2('0x28')](respondWithFilteredResult(_0x29b9fc,_0x370a34))['catch'](handleError(_0x29b9fc,null));};exports['getLists']=function(_0x163f4d,_0x3bf6a2,_0x2186ef){var _0x4f5141={};var _0x4f5e9e={};var _0x3ad153;var _0x3cd4d8;return db['Campaign'][_0x0ae2('0x57')]({'where':{'id':_0x163f4d[_0x0ae2('0x46')]['id']}})[_0x0ae2('0x28')](handleEntityNotFound(_0x3bf6a2,null))['then'](function(_0x1747f3){if(_0x1747f3){_0x3ad153=_0x1747f3;_0x4f5e9e[_0x0ae2('0x32')]=_[_0x0ae2('0x33')](db[_0x0ae2('0x62')]['rawAttributes']);_0x4f5e9e[_0x0ae2('0x34')]=_['keys'](_0x163f4d['query']);_0x4f5e9e[_0x0ae2('0x35')]=_[_0x0ae2('0x37')](_0x4f5e9e[_0x0ae2('0x32')],_0x4f5e9e[_0x0ae2('0x34')]);_0x4f5141[_0x0ae2('0x36')]=_[_0x0ae2('0x37')](_0x4f5e9e[_0x0ae2('0x32')],qs[_0x0ae2('0x47')](_0x163f4d[_0x0ae2('0x34')][_0x0ae2('0x47')]));_0x4f5141[_0x0ae2('0x36')]=_0x4f5141['attributes']['length']?_0x4f5141[_0x0ae2('0x36')]:_0x4f5e9e[_0x0ae2('0x32')];_0x4f5141[_0x0ae2('0x39')]=qs[_0x0ae2('0x3a')](_0x163f4d[_0x0ae2('0x34')][_0x0ae2('0x3a')]);_0x4f5141['where']=qs[_0x0ae2('0x35')](_[_0x0ae2('0x3c')](_0x163f4d[_0x0ae2('0x34')],_0x4f5e9e[_0x0ae2('0x35')]));if(_0x163f4d[_0x0ae2('0x34')]['filter']){_0x4f5141[_0x0ae2('0x3b')]=_[_0x0ae2('0x3e')](_0x4f5141[_0x0ae2('0x3b')],{'$or':_[_0x0ae2('0x2d')](_0x4f5141[_0x0ae2('0x36')],function(_0x3e6b78){var _0x472c06={};_0x472c06[_0x3e6b78]={'$like':'%'+_0x163f4d[_0x0ae2('0x34')][_0x0ae2('0x3d')]+'%'};return _0x472c06;})});}_0x4f5141=_['merge']({},_0x4f5141,_0x163f4d[_0x0ae2('0x3f')]);return _0x3ad153[_0x0ae2('0x63')](_0x4f5141);}})['then'](function(_0x121b78){if(_0x121b78){_0x3cd4d8=_0x121b78[_0x0ae2('0x48')];if(!_0x163f4d['query']['hasOwnProperty'](_0x0ae2('0x59'))){_0x4f5141[_0x0ae2('0x1d')]=qs[_0x0ae2('0x1d')](_0x163f4d[_0x0ae2('0x34')]['limit']);_0x4f5141[_0x0ae2('0x1c')]=qs[_0x0ae2('0x1c')](_0x163f4d['query'][_0x0ae2('0x1c')]);}return _0x3ad153['getLists'](_0x4f5141);}})[_0x0ae2('0x28')](function(_0x5d357d){if(_0x5d357d){return _0x5d357d?{'count':_0x3cd4d8,'rows':_0x5d357d}:null;}})[_0x0ae2('0x28')](respondWithResult(_0x3bf6a2,null))[_0x0ae2('0x44')](handleError(_0x3bf6a2,null));};exports[_0x0ae2('0x64')]=function(_0x449c17,_0x17336a,_0x47186e){var _0x201c30,_0x3c6fd1;return db[_0x0ae2('0x40')]['find']({'where':{'id':_0x449c17[_0x0ae2('0x46')]['id']}})[_0x0ae2('0x28')](handleEntityNotFound(_0x17336a,null))['then'](function(_0x2203d9){if(_0x2203d9){_0x3c6fd1=_0x2203d9;return _0x2203d9[_0x0ae2('0x64')](_0x449c17['body'][_0x0ae2('0x65')],_['omit'](_0x449c17[_0x0ae2('0x53')],[_0x0ae2('0x65'),'id'])||{});}return null;})[_0x0ae2('0x66')](function(_0x382854){var _0x290af5;_0x201c30=_0x382854||[];var _0xfc1ee1=[];if(_0x382854){for(var _0x339e54=0x0;_0x339e54<_0x382854[_0x0ae2('0x48')];_0x339e54+=0x1){var _0x4faf6e=_0x382854[_0x339e54][_0x0ae2('0x25')]({'plain':!![]});_0x3c6fd1['dialCheckDuplicateType']=_0x449c17[_0x0ae2('0x53')][_0x0ae2('0x67')]?_0x449c17[_0x0ae2('0x53')][_0x0ae2('0x67')]:_0x3c6fd1[_0x0ae2('0x67')];switch(_0x3c6fd1[_0x0ae2('0x67')]){case'always':_0x290af5=squel[_0x0ae2('0x68')]()['into'](_0x0ae2('0x69'))[_0x0ae2('0x6a')]([_0x0ae2('0x6b'),'scheduledAt',_0x0ae2('0x6c'),_0x0ae2('0x6d'),_0x0ae2('0x5a'),_0x0ae2('0x6e'),_0x0ae2('0x52')],squel['select']()[_0x0ae2('0x6f')](_0x0ae2('0x6b'),_0x0ae2('0x6b'))[_0x0ae2('0x6f')]('NOW()',_0x0ae2('0x70'))[_0x0ae2('0x6f')]('id',_0x0ae2('0x6c'))[_0x0ae2('0x6f')](_0x4faf6e[_0x0ae2('0x71')][_0x0ae2('0x72')](),_0x0ae2('0x6d'))[_0x0ae2('0x6f')](_0x449c17['params']['id'][_0x0ae2('0x72')](),_0x0ae2('0x5a'))[_0x0ae2('0x6f')](_0x0ae2('0x73'),_0x0ae2('0x6e'))[_0x0ae2('0x6f')]('NOW()',_0x0ae2('0x52'))['from'](_0x0ae2('0x74'))[_0x0ae2('0x3b')](_0x0ae2('0x75'))['where'](_0x0ae2('0x76'),_0x4faf6e[_0x0ae2('0x71')][_0x0ae2('0x72')]())[_0x0ae2('0x3b')]('phone\x20IS\x20NOT\x20NULL')[_0x0ae2('0x3b')]('phone\x20NOT\x20IN\x20(?)',squel[_0x0ae2('0x77')]()['field']('COALESCE(calleridnum,\x27\x27)')['from'](_0x0ae2('0x78'))[_0x0ae2('0x3b')](_0x0ae2('0x79'),_0x449c17['params']['id']['toString']()))[_0x0ae2('0x3b')](_0x0ae2('0x7a'),squel['select']()[_0x0ae2('0x6f')](_0x0ae2('0x7b'))[_0x0ae2('0x7c')](_0x0ae2('0x69'))[_0x0ae2('0x3b')](_0x0ae2('0x79'),_0x449c17[_0x0ae2('0x46')]['id']['toString']())))['toString']();break;case _0x0ae2('0x7d'):_0x290af5=squel['insert']()[_0x0ae2('0x7e')]('cm_hopper')[_0x0ae2('0x6a')]([_0x0ae2('0x6b'),_0x0ae2('0x70'),'ContactId','ListId',_0x0ae2('0x5a'),_0x0ae2('0x6e'),_0x0ae2('0x52')],squel[_0x0ae2('0x77')]()[_0x0ae2('0x6f')]('phone',_0x0ae2('0x6b'))[_0x0ae2('0x6f')](_0x0ae2('0x73'),_0x0ae2('0x70'))[_0x0ae2('0x6f')]('id',_0x0ae2('0x6c'))[_0x0ae2('0x6f')](_0x4faf6e[_0x0ae2('0x71')][_0x0ae2('0x72')](),'ListId')['field'](_0x449c17['params']['id'][_0x0ae2('0x72')](),'CampaignId')[_0x0ae2('0x6f')](_0x0ae2('0x73'),_0x0ae2('0x6e'))['field'](_0x0ae2('0x73'),'updatedAt')['from'](_0x0ae2('0x74'))['where'](_0x0ae2('0x75'))[_0x0ae2('0x3b')](_0x0ae2('0x76'),_0x4faf6e[_0x0ae2('0x71')]['toString']())[_0x0ae2('0x3b')](_0x0ae2('0x7f'))[_0x0ae2('0x3b')](_0x0ae2('0x7a'),squel[_0x0ae2('0x77')]()[_0x0ae2('0x6f')](_0x0ae2('0x7b'))[_0x0ae2('0x7c')]('cm_hopper')['where'](_0x0ae2('0x79'),_0x449c17['params']['id'][_0x0ae2('0x72')]())))[_0x0ae2('0x72')]();break;default:_0x290af5=squel['insert']()[_0x0ae2('0x7e')](_0x0ae2('0x69'))[_0x0ae2('0x6a')]([_0x0ae2('0x6b'),_0x0ae2('0x70'),_0x0ae2('0x6c'),'ListId',_0x0ae2('0x5a'),_0x0ae2('0x6e'),_0x0ae2('0x52')],squel['select']()[_0x0ae2('0x6f')](_0x0ae2('0x6b'),_0x0ae2('0x6b'))[_0x0ae2('0x6f')](_0x0ae2('0x73'),_0x0ae2('0x70'))['field']('id','ContactId')[_0x0ae2('0x6f')](_0x4faf6e[_0x0ae2('0x71')]['toString'](),'ListId')[_0x0ae2('0x6f')](_0x449c17[_0x0ae2('0x46')]['id'][_0x0ae2('0x72')](),_0x0ae2('0x5a'))[_0x0ae2('0x6f')](_0x0ae2('0x73'),'createdAt')[_0x0ae2('0x6f')]('NOW()',_0x0ae2('0x52'))[_0x0ae2('0x7c')](_0x0ae2('0x74'))[_0x0ae2('0x3b')](_0x0ae2('0x75'))['where'](_0x0ae2('0x76'),_0x4faf6e[_0x0ae2('0x71')][_0x0ae2('0x72')]())[_0x0ae2('0x3b')](_0x0ae2('0x7f')))[_0x0ae2('0x72')]();}_0xfc1ee1[_0x0ae2('0x80')](db[_0x0ae2('0x81')]['query'](_0x290af5));}return BPromise[_0x0ae2('0x82')](_0xfc1ee1);}})[_0x0ae2('0x28')](function(){return _0x201c30;})[_0x0ae2('0x28')](respondWithResult(_0x17336a,null))[_0x0ae2('0x44')](handleError(_0x17336a,null));};exports[_0x0ae2('0x83')]=function(_0x27e7b4,_0x109b7e,_0x68078d){return db[_0x0ae2('0x40')]['find']({'where':{'id':_0x27e7b4['params']['id']}})[_0x0ae2('0x28')](handleEntityNotFound(_0x109b7e,null))[_0x0ae2('0x28')](function(_0xe5899c){if(_0xe5899c){return _0xe5899c[_0x0ae2('0x83')](_0x27e7b4['query'][_0x0ae2('0x65')]);}})[_0x0ae2('0x28')](function(_0x374e87){if(_0x374e87){return db[_0x0ae2('0x58')][_0x0ae2('0x24')]({'where':{'ListId':_0x27e7b4[_0x0ae2('0x34')]['ids'],'CampaignId':_0x27e7b4[_0x0ae2('0x46')]['id']}})[_0x0ae2('0x28')](function(){return _0x374e87;});}})[_0x0ae2('0x28')](respondWithStatusCode(_0x109b7e,null))[_0x0ae2('0x44')](handleError(_0x109b7e,null));};exports[_0x0ae2('0x84')]=function(_0x7fcc8a,_0x38317f,_0x3a1d0b){var _0x92d7bd={};var _0x5a2391={};var _0x1889e6;var _0x5cdd41;return db[_0x0ae2('0x40')][_0x0ae2('0x57')]({'where':{'id':_0x7fcc8a[_0x0ae2('0x46')]['id']}})['then'](handleEntityNotFound(_0x38317f,null))[_0x0ae2('0x28')](function(_0x5af8fe){if(_0x5af8fe){_0x1889e6=_0x5af8fe;_0x5a2391[_0x0ae2('0x32')]=_[_0x0ae2('0x33')](db[_0x0ae2('0x62')][_0x0ae2('0x2e')]);_0x5a2391['query']=_['keys'](_0x7fcc8a[_0x0ae2('0x34')]);_0x5a2391[_0x0ae2('0x35')]=_[_0x0ae2('0x37')](_0x5a2391['model'],_0x5a2391[_0x0ae2('0x34')]);_0x92d7bd[_0x0ae2('0x36')]=_['intersection'](_0x5a2391[_0x0ae2('0x32')],qs[_0x0ae2('0x47')](_0x7fcc8a[_0x0ae2('0x34')][_0x0ae2('0x47')]));_0x92d7bd[_0x0ae2('0x36')]=_0x92d7bd[_0x0ae2('0x36')][_0x0ae2('0x48')]?_0x92d7bd[_0x0ae2('0x36')]:_0x5a2391[_0x0ae2('0x32')];_0x92d7bd[_0x0ae2('0x39')]=qs[_0x0ae2('0x3a')](_0x7fcc8a['query'][_0x0ae2('0x3a')]);_0x92d7bd[_0x0ae2('0x3b')]=qs[_0x0ae2('0x35')](_['pick'](_0x7fcc8a[_0x0ae2('0x34')],_0x5a2391[_0x0ae2('0x35')]));if(_0x7fcc8a[_0x0ae2('0x34')]['filter']){_0x92d7bd[_0x0ae2('0x3b')]=_[_0x0ae2('0x3e')](_0x92d7bd[_0x0ae2('0x3b')],{'$or':_[_0x0ae2('0x2d')](_0x92d7bd[_0x0ae2('0x36')],function(_0x59f1c3){var _0x7f9dea={};_0x7f9dea[_0x59f1c3]={'$like':'%'+_0x7fcc8a[_0x0ae2('0x34')][_0x0ae2('0x3d')]+'%'};return _0x7f9dea;})});}_0x92d7bd=_[_0x0ae2('0x3e')]({},_0x92d7bd,_0x7fcc8a[_0x0ae2('0x3f')]);return _0x1889e6['getBlackLists'](_0x92d7bd);}})[_0x0ae2('0x28')](function(_0x53ecd1){if(_0x53ecd1){_0x5cdd41=_0x53ecd1[_0x0ae2('0x48')];if(!_0x7fcc8a[_0x0ae2('0x34')][_0x0ae2('0x38')](_0x0ae2('0x59'))){_0x92d7bd[_0x0ae2('0x1d')]=qs[_0x0ae2('0x1d')](_0x7fcc8a[_0x0ae2('0x34')][_0x0ae2('0x1d')]);_0x92d7bd[_0x0ae2('0x1c')]=qs[_0x0ae2('0x1c')](_0x7fcc8a['query'][_0x0ae2('0x1c')]);}return _0x1889e6['getBlackLists'](_0x92d7bd);}})[_0x0ae2('0x28')](function(_0xc2fc3f){if(_0xc2fc3f){return _0xc2fc3f?{'count':_0x5cdd41,'rows':_0xc2fc3f}:null;}})['then'](respondWithResult(_0x38317f,null))[_0x0ae2('0x44')](handleError(_0x38317f,null));};exports[_0x0ae2('0x85')]=function(_0x6abb83,_0x45b612,_0x47654d){var _0x34f041,_0x35e95b;return db[_0x0ae2('0x40')]['find']({'where':{'id':_0x6abb83[_0x0ae2('0x46')]['id']}})[_0x0ae2('0x28')](handleEntityNotFound(_0x45b612,null))['then'](function(_0x461d87){if(_0x461d87){_0x35e95b=_0x461d87;return _0x461d87[_0x0ae2('0x85')](_0x6abb83['body'][_0x0ae2('0x65')],_[_0x0ae2('0x51')](_0x6abb83[_0x0ae2('0x53')],[_0x0ae2('0x65'),'id'])||{});}return null;})[_0x0ae2('0x66')](function(_0x1ca82f){var _0x1fafe7;_0x34f041=_0x1ca82f||[];var _0x4480ec=[];if(_0x1ca82f){for(var _0x54a963=0x0;_0x54a963<_0x1ca82f[_0x0ae2('0x48')];_0x54a963+=0x1){var _0x8e94b=_0x1ca82f[_0x54a963][_0x0ae2('0x25')]({'plain':!![]});_0x1fafe7=squel[_0x0ae2('0x68')]()['into'](_0x0ae2('0x86'))[_0x0ae2('0x6a')]([_0x0ae2('0x6b'),'ContactId','ListId',_0x0ae2('0x5a'),'createdAt',_0x0ae2('0x52')],squel[_0x0ae2('0x77')]()[_0x0ae2('0x6f')](_0x0ae2('0x6b'),'phone')['field']('id',_0x0ae2('0x6c'))[_0x0ae2('0x6f')](_0x8e94b[_0x0ae2('0x71')][_0x0ae2('0x72')](),'ListId')[_0x0ae2('0x6f')](_0x6abb83[_0x0ae2('0x46')]['id']['toString'](),_0x0ae2('0x5a'))['field'](_0x0ae2('0x73'),_0x0ae2('0x6e'))['field']('NOW()',_0x0ae2('0x52'))[_0x0ae2('0x7c')](_0x0ae2('0x74'))[_0x0ae2('0x3b')](_0x0ae2('0x75'))[_0x0ae2('0x3b')](_0x0ae2('0x76'),_0x8e94b[_0x0ae2('0x71')][_0x0ae2('0x72')]())[_0x0ae2('0x3b')](_0x0ae2('0x7f')))[_0x0ae2('0x72')]();_0x4480ec[_0x0ae2('0x80')](db[_0x0ae2('0x81')][_0x0ae2('0x34')](_0x1fafe7));}return BPromise['all'](_0x4480ec);}})[_0x0ae2('0x28')](function(){return _0x34f041;})[_0x0ae2('0x28')](respondWithResult(_0x45b612,null))[_0x0ae2('0x44')](handleError(_0x45b612,null));};exports[_0x0ae2('0x87')]=function(_0xd1ec60,_0x1baf46,_0x28d1e1){return db[_0x0ae2('0x40')]['find']({'where':{'id':_0xd1ec60[_0x0ae2('0x46')]['id']}})[_0x0ae2('0x28')](handleEntityNotFound(_0x1baf46,null))[_0x0ae2('0x28')](function(_0x17535f){if(_0x17535f){return _0x17535f[_0x0ae2('0x87')](_0xd1ec60[_0x0ae2('0x34')][_0x0ae2('0x65')]);}})['then'](function(_0x1a39ca){if(_0x1a39ca){return db[_0x0ae2('0x61')][_0x0ae2('0x24')]({'where':{'ListId':_0xd1ec60['query'][_0x0ae2('0x65')],'CampaignId':_0xd1ec60[_0x0ae2('0x46')]['id']}})[_0x0ae2('0x28')](function(){return _0x1a39ca;});}})[_0x0ae2('0x28')](respondWithStatusCode(_0x1baf46,null))[_0x0ae2('0x44')](handleError(_0x1baf46,null));};
\ No newline at end of file
index 4e7be5b..7d1ba4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','define','Campaign','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./campaign.attributes'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'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':'campaigns','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9957=['exports','define','Campaign','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./campaign.attributes'];(function(_0x172747,_0x1732bd){var _0x509692=function(_0x448c56){while(--_0x448c56){_0x172747['push'](_0x172747['shift']());}};_0x509692(++_0x1732bd);}(_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':'campaigns','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0233065..5e5d364 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e5c=['request\x20sent','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetCampaign','Campaign','findAll','options','where','limit','include','map','model','attributes','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','Campaign,\x20%s,\x20%s'];(function(_0x37fe28,_0x5048e1){var _0x5dd4a0=function(_0x3b4f0a){while(--_0x3b4f0a){_0x37fe28['push'](_0x37fe28['shift']());}};_0x5dd4a0(++_0x5048e1);}(_0x3e5c,0x9a));var _0xc3e5=function(_0x48edf5,_0x10bd9){_0x48edf5=_0x48edf5-0x0;var _0x4f6fc8=_0x3e5c[_0x48edf5];return _0x4f6fc8;};'use strict';var _=require(_0xc3e5('0x0'));var util=require(_0xc3e5('0x1'));var moment=require(_0xc3e5('0x2'));var BPromise=require(_0xc3e5('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc3e5('0x4'));var db=require(_0xc3e5('0x5'))['db'];var utils=require(_0xc3e5('0x6'));var logger=require(_0xc3e5('0x7'))(_0xc3e5('0x8'));var config=require(_0xc3e5('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xc3e5('0xa')][_0xc3e5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2d6089,_0xcbbec0,_0x2d580e){return new BPromise(function(_0x4864a2,_0x196f3a){return client[_0xc3e5('0xc')](_0x2d6089,_0x2d580e)[_0xc3e5('0xd')](function(_0x19813b){logger[_0xc3e5('0xe')](_0xc3e5('0xf'),_0xcbbec0,_0xc3e5('0x10'));logger['debug'](_0xc3e5('0x11'),_0xcbbec0,_0xc3e5('0x10'),JSON[_0xc3e5('0x12')](_0x19813b));if(_0x19813b[_0xc3e5('0x13')]){if(_0x19813b['error'][_0xc3e5('0x14')]===0x1f4){logger[_0xc3e5('0x13')](_0xc3e5('0xf'),_0xcbbec0,_0x19813b[_0xc3e5('0x13')][_0xc3e5('0x15')]);return _0x196f3a(_0x19813b[_0xc3e5('0x13')]['message']);}logger['error']('Campaign,\x20%s,\x20%s',_0xcbbec0,_0x19813b[_0xc3e5('0x13')]['message']);return _0x4864a2(_0x19813b[_0xc3e5('0x13')][_0xc3e5('0x15')]);}else{logger['info'](_0xc3e5('0xf'),_0xcbbec0,_0xc3e5('0x10'));_0x4864a2(_0x19813b[_0xc3e5('0x16')][_0xc3e5('0x15')]);}})[_0xc3e5('0x17')](function(_0x47cfd8){logger[_0xc3e5('0x13')](_0xc3e5('0xf'),_0xcbbec0,_0x47cfd8);_0x196f3a(_0x47cfd8);});});}exports[_0xc3e5('0x18')]=function(_0xa33d84){var _0x1e884a=this;return new Promise(function(_0x1e1eea,_0x538f71){return db[_0xc3e5('0x19')][_0xc3e5('0x1a')]({'raw':_0xa33d84['options']?_0xa33d84[_0xc3e5('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0xa33d84[_0xc3e5('0x1b')]?_0xa33d84[_0xc3e5('0x1b')][_0xc3e5('0x1c')]||null:null,'attributes':_0xa33d84[_0xc3e5('0x1b')]?_0xa33d84[_0xc3e5('0x1b')]['attributes']||null:null,'limit':_0xa33d84[_0xc3e5('0x1b')]?_0xa33d84[_0xc3e5('0x1b')][_0xc3e5('0x1d')]||null:null,'include':_0xa33d84[_0xc3e5('0x1b')]?_0xa33d84[_0xc3e5('0x1b')][_0xc3e5('0x1e')]?_[_0xc3e5('0x1f')](_0xa33d84['options'][_0xc3e5('0x1e')],function(_0x430cb4){return{'model':db[_0x430cb4[_0xc3e5('0x20')]],'as':_0x430cb4['as'],'attributes':_0x430cb4[_0xc3e5('0x21')],'include':_0x430cb4[_0xc3e5('0x1e')]?_[_0xc3e5('0x1f')](_0x430cb4[_0xc3e5('0x1e')],function(_0x45556e){return{'model':db[_0x45556e['model']],'as':_0x45556e['as'],'attributes':_0x45556e[_0xc3e5('0x21')],'include':_0x45556e['include']?_['map'](_0x45556e[_0xc3e5('0x1e')],function(_0x12ad6e){return{'model':db[_0x12ad6e[_0xc3e5('0x20')]],'as':_0x12ad6e['as'],'attributes':_0x12ad6e['attributes']};}):[]};}):[]};}):[]:[]})[_0xc3e5('0xd')](function(_0x38a961){logger[_0xc3e5('0xe')](_0xc3e5('0x18'),_0xa33d84);logger['debug'](_0xc3e5('0x18'),_0xa33d84,JSON['stringify'](_0x38a961));_0x1e1eea(_0x38a961);})[_0xc3e5('0x17')](function(_0xc0e6e7){logger[_0xc3e5('0x13')]('GetCampaign',_0xc0e6e7['message'],_0xa33d84);_0x538f71(_0x1e884a['error'](0x1f4,_0xc0e6e7[_0xc3e5('0x15')]));});});};
\ No newline at end of file
+var _0xe356=['util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','Campaign,\x20%s,\x20%s','Campaign,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','GetCampaign','Campaign','findAll','options','raw','where','attributes','limit','map','model','include','then','stringify','catch','lodash'];(function(_0xda66e7,_0x5120a2){var _0xe0bade=function(_0x4dcc00){while(--_0x4dcc00){_0xda66e7['push'](_0xda66e7['shift']());}};_0xe0bade(++_0x5120a2);}(_0xe356,0x1ee));var _0x6e35=function(_0x323474,_0x37cde7){_0x323474=_0x323474-0x0;var _0x4b732f=_0xe356[_0x323474];return _0x4b732f;};'use strict';var _=require(_0x6e35('0x0'));var util=require(_0x6e35('0x1'));var moment=require(_0x6e35('0x2'));var BPromise=require(_0x6e35('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6e35('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6e35('0x5'));var logger=require(_0x6e35('0x6'))(_0x6e35('0x7'));var config=require('../../config/environment');var jayson=require(_0x6e35('0x8'));var client=jayson[_0x6e35('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x389ae2,_0xba948e,_0x114b4c){return new BPromise(function(_0x1da99b,_0x5119fa){return client[_0x6e35('0xa')](_0x389ae2,_0x114b4c)['then'](function(_0x3b3c16){logger['info'](_0x6e35('0xb'),_0xba948e,'request\x20sent');logger['debug'](_0x6e35('0xc'),_0xba948e,_0x6e35('0xd'),JSON['stringify'](_0x3b3c16));if(_0x3b3c16['error']){if(_0x3b3c16[_0x6e35('0xe')][_0x6e35('0xf')]===0x1f4){logger[_0x6e35('0xe')]('Campaign,\x20%s,\x20%s',_0xba948e,_0x3b3c16[_0x6e35('0xe')][_0x6e35('0x10')]);return _0x5119fa(_0x3b3c16[_0x6e35('0xe')]['message']);}logger[_0x6e35('0xe')](_0x6e35('0xb'),_0xba948e,_0x3b3c16[_0x6e35('0xe')]['message']);return _0x1da99b(_0x3b3c16[_0x6e35('0xe')][_0x6e35('0x10')]);}else{logger[_0x6e35('0x11')]('Campaign,\x20%s,\x20%s',_0xba948e,_0x6e35('0xd'));_0x1da99b(_0x3b3c16[_0x6e35('0x12')][_0x6e35('0x10')]);}})['catch'](function(_0x3e7e7a){logger[_0x6e35('0xe')](_0x6e35('0xb'),_0xba948e,_0x3e7e7a);_0x5119fa(_0x3e7e7a);});});}exports[_0x6e35('0x13')]=function(_0x58a622){var _0x408504=this;return new Promise(function(_0x2bd771,_0x53e26d){return db[_0x6e35('0x14')][_0x6e35('0x15')]({'raw':_0x58a622[_0x6e35('0x16')]?_0x58a622[_0x6e35('0x16')][_0x6e35('0x17')]===undefined?!![]:![]:!![],'where':_0x58a622[_0x6e35('0x16')]?_0x58a622['options'][_0x6e35('0x18')]||null:null,'attributes':_0x58a622[_0x6e35('0x16')]?_0x58a622[_0x6e35('0x16')][_0x6e35('0x19')]||null:null,'limit':_0x58a622[_0x6e35('0x16')]?_0x58a622[_0x6e35('0x16')][_0x6e35('0x1a')]||null:null,'include':_0x58a622[_0x6e35('0x16')]?_0x58a622[_0x6e35('0x16')]['include']?_[_0x6e35('0x1b')](_0x58a622['options']['include'],function(_0x301c39){return{'model':db[_0x301c39[_0x6e35('0x1c')]],'as':_0x301c39['as'],'attributes':_0x301c39[_0x6e35('0x19')],'include':_0x301c39['include']?_[_0x6e35('0x1b')](_0x301c39[_0x6e35('0x1d')],function(_0x24afad){return{'model':db[_0x24afad[_0x6e35('0x1c')]],'as':_0x24afad['as'],'attributes':_0x24afad[_0x6e35('0x19')],'include':_0x24afad[_0x6e35('0x1d')]?_[_0x6e35('0x1b')](_0x24afad[_0x6e35('0x1d')],function(_0x353bfb){return{'model':db[_0x353bfb[_0x6e35('0x1c')]],'as':_0x353bfb['as'],'attributes':_0x353bfb['attributes']};}):[]};}):[]};}):[]:[]})[_0x6e35('0x1e')](function(_0x30ae66){logger[_0x6e35('0x11')]('GetCampaign',_0x58a622);logger['debug'](_0x6e35('0x13'),_0x58a622,JSON[_0x6e35('0x1f')](_0x30ae66));_0x2bd771(_0x30ae66);})[_0x6e35('0x20')](function(_0x4f4514){logger['error'](_0x6e35('0x13'),_0x4f4514[_0x6e35('0x10')],_0x58a622);_0x53e26d(_0x408504[_0x6e35('0xe')](0x1f4,_0x4f4514['message']));});});};
\ No newline at end of file
index add5247..7f417cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2174=['isAuthenticated','show','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperFinals','getHopperBlacks','getLists','/:id/blacklists','getBlackLists','create','post','/:id/clone','/:id/lists','addLists','addBlackLists','put','update','destroy','delete','removeLists','removeBlackLists','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./campaign.controller','get','/:id'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x2174,0xe3));var _0x4217=function(_0x274155,_0x12b03c){_0x274155=_0x274155-0x0;var _0xb1c1bf=_0x2174[_0x274155];return _0xb1c1bf;};'use strict';var multer=require(_0x4217('0x0'));var util=require(_0x4217('0x1'));var path=require(_0x4217('0x2'));var timeout=require(_0x4217('0x3'));var express=require('express');var router=express[_0x4217('0x4')]();var fs_extra=require(_0x4217('0x5'));var auth=require(_0x4217('0x6'));var interaction=require(_0x4217('0x7'));var config=require('../../config/environment');var controller=require(_0x4217('0x8'));router[_0x4217('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x4217('0x9')](_0x4217('0xa'),auth[_0x4217('0xb')](),controller[_0x4217('0xc')]);router[_0x4217('0x9')](_0x4217('0xd'),auth[_0x4217('0xb')](),controller[_0x4217('0xe')]);router['get'](_0x4217('0xf'),auth[_0x4217('0xb')](),controller['getHopperHistories']);router[_0x4217('0x9')]('/:id/hopper_finals',auth['isAuthenticated'](),controller[_0x4217('0x10')]);router[_0x4217('0x9')]('/:id/hopper_black',auth[_0x4217('0xb')](),controller[_0x4217('0x11')]);router[_0x4217('0x9')]('/:id/lists',auth[_0x4217('0xb')](),controller[_0x4217('0x12')]);router[_0x4217('0x9')](_0x4217('0x13'),auth['isAuthenticated'](),controller[_0x4217('0x14')]);router['post']('/',auth[_0x4217('0xb')](),controller[_0x4217('0x15')]);router[_0x4217('0x16')](_0x4217('0x17'),auth[_0x4217('0xb')](),controller['clone']);router[_0x4217('0x16')](_0x4217('0x18'),auth['isAuthenticated'](),controller[_0x4217('0x19')]);router[_0x4217('0x16')](_0x4217('0x13'),auth[_0x4217('0xb')](),controller[_0x4217('0x1a')]);router[_0x4217('0x1b')](_0x4217('0xa'),auth[_0x4217('0xb')](),controller[_0x4217('0x1c')]);router['delete'](_0x4217('0xa'),auth[_0x4217('0xb')](),controller[_0x4217('0x1d')]);router[_0x4217('0x1e')](_0x4217('0x18'),auth['isAuthenticated'](),controller[_0x4217('0x1f')]);router[_0x4217('0x1e')]('/:id/blacklists',auth[_0x4217('0xb')](),controller[_0x4217('0x20')]);module[_0x4217('0x21')]=router;
\ No newline at end of file
+var _0xc6d9=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperBlacks','/:id/lists','getLists','/:id/blacklists','getBlackLists','create','post','/:id/clone','clone','addBlackLists','removeBlackLists','exports','util','path'];(function(_0x351e51,_0x337d1a){var _0x169cce=function(_0x893459){while(--_0x893459){_0x351e51['push'](_0x351e51['shift']());}};_0x169cce(++_0x337d1a);}(_0xc6d9,0xd0));var _0x9c6d=function(_0x1172a7,_0x23f9ee){_0x1172a7=_0x1172a7-0x0;var _0x5badf9=_0xc6d9[_0x1172a7];return _0x5badf9;};'use strict';var multer=require('multer');var util=require(_0x9c6d('0x0'));var path=require(_0x9c6d('0x1'));var timeout=require(_0x9c6d('0x2'));var express=require(_0x9c6d('0x3'));var router=express[_0x9c6d('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x9c6d('0x5'));var interaction=require(_0x9c6d('0x6'));var config=require(_0x9c6d('0x7'));var controller=require('./campaign.controller');router[_0x9c6d('0x8')]('/',auth[_0x9c6d('0x9')](),controller[_0x9c6d('0xa')]);router[_0x9c6d('0x8')](_0x9c6d('0xb'),auth[_0x9c6d('0x9')](),controller[_0x9c6d('0xc')]);router['get'](_0x9c6d('0xd'),auth[_0x9c6d('0x9')](),controller[_0x9c6d('0xe')]);router[_0x9c6d('0x8')](_0x9c6d('0xf'),auth[_0x9c6d('0x9')](),controller[_0x9c6d('0x10')]);router['get'](_0x9c6d('0x11'),auth[_0x9c6d('0x9')](),controller['getHopperFinals']);router[_0x9c6d('0x8')]('/:id/hopper_black',auth[_0x9c6d('0x9')](),controller[_0x9c6d('0x12')]);router['get'](_0x9c6d('0x13'),auth[_0x9c6d('0x9')](),controller[_0x9c6d('0x14')]);router[_0x9c6d('0x8')](_0x9c6d('0x15'),auth[_0x9c6d('0x9')](),controller[_0x9c6d('0x16')]);router['post']('/',auth['isAuthenticated'](),controller[_0x9c6d('0x17')]);router[_0x9c6d('0x18')](_0x9c6d('0x19'),auth[_0x9c6d('0x9')](),controller[_0x9c6d('0x1a')]);router[_0x9c6d('0x18')](_0x9c6d('0x13'),auth[_0x9c6d('0x9')](),controller['addLists']);router['post'](_0x9c6d('0x15'),auth[_0x9c6d('0x9')](),controller[_0x9c6d('0x1b')]);router['put'](_0x9c6d('0xb'),auth[_0x9c6d('0x9')](),controller['update']);router['delete'](_0x9c6d('0xb'),auth[_0x9c6d('0x9')](),controller['destroy']);router['delete'](_0x9c6d('0x13'),auth[_0x9c6d('0x9')](),controller['removeLists']);router['delete'](_0x9c6d('0x15'),auth[_0x9c6d('0x9')](),controller[_0x9c6d('0x1c')]);module[_0x9c6d('0x1d')]=router;
\ No newline at end of file
index 0994686..1ff8642 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33ad=['key','sequelize','STRING','TEXT','VIRTUAL'];(function(_0x148fb8,_0x47def3){var _0x5ec111=function(_0x4d337e){while(--_0x4d337e){_0x148fb8['push'](_0x148fb8['shift']());}};_0x5ec111(++_0x47def3);}(_0x33ad,0x137));var _0xd33a=function(_0x257c4d,_0x3a3224){_0x257c4d=_0x257c4d-0x0;var _0x2629a5=_0x33ad[_0x257c4d];return _0x2629a5;};'use strict';var Sequelize=require(_0xd33a('0x0'));module['exports']={'key':{'type':Sequelize[_0xd33a('0x1')],'allowNull':![]},'value':{'type':Sequelize[_0xd33a('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xd33a('0x1')]},'name':{'type':Sequelize[_0xd33a('0x3')],'get':function(){return this['getDataValue'](_0xd33a('0x4'));}}};
\ No newline at end of file
+var _0x6eee=['STRING','getDataValue','key','sequelize','exports','TEXT'];(function(_0x1a8132,_0x1d4978){var _0x5b9329=function(_0x1f1447){while(--_0x1f1447){_0x1a8132['push'](_0x1a8132['shift']());}};_0x5b9329(++_0x1d4978);}(_0x6eee,0x1ef));var _0xe6ee=function(_0x1495c4,_0x4a2fd4){_0x1495c4=_0x1495c4-0x0;var _0x24e8b0=_0x6eee[_0x1495c4];return _0x24e8b0;};'use strict';var Sequelize=require(_0xe6ee('0x0'));module[_0xe6ee('0x1')]={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0xe6ee('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xe6ee('0x3')]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xe6ee('0x4')](_0xe6ee('0x5'));}}};
\ No newline at end of file
index c3a9c13..c54c784 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a3b=['hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','find','body','params','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','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','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','offset','json','update','then','destroy','CannedAnswers','UserProfileResource','end','error','stack','name','index','map','CannedAnswer','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length'];(function(_0x432093,_0x148267){var _0x2914c4=function(_0x5caa9c){while(--_0x5caa9c){_0x432093['push'](_0x432093['shift']());}};_0x2914c4(++_0x148267);}(_0x0a3b,0x1d7));var _0xb0a3=function(_0x1876b2,_0x5d0225){_0x1876b2=_0x1876b2-0x0;var _0x9fb1e0=_0x0a3b[_0x1876b2];return _0x9fb1e0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb0a3('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb0a3('0x1'));var rp=require(_0xb0a3('0x2'));var moment=require(_0xb0a3('0x3'));var BPromise=require(_0xb0a3('0x4'));var Mustache=require(_0xb0a3('0x5'));var util=require('util');var path=require('path');var sox=require(_0xb0a3('0x6'));var csv=require(_0xb0a3('0x7'));var ejs=require(_0xb0a3('0x8'));var fs=require('fs');var fs_extra=require(_0xb0a3('0x9'));var _=require(_0xb0a3('0xa'));var squel=require(_0xb0a3('0xb'));var crypto=require(_0xb0a3('0xc'));var jsforce=require(_0xb0a3('0xd'));var deskjs=require(_0xb0a3('0xe'));var toCsv=require(_0xb0a3('0x7'));var querystring=require(_0xb0a3('0xf'));var Papa=require(_0xb0a3('0x10'));var Redis=require(_0xb0a3('0x11'));var authService=require(_0xb0a3('0x12'));var qs=require(_0xb0a3('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb0a3('0x14'));var logger=require(_0xb0a3('0x15'))(_0xb0a3('0x16'));var utils=require(_0xb0a3('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xb0a3('0x18'));var db=require(_0xb0a3('0x19'))['db'];function respondWithStatusCode(_0x4a7657,_0x5c760c){_0x5c760c=_0x5c760c||0xcc;return function(_0x432ecb){if(_0x432ecb){return _0x4a7657[_0xb0a3('0x1a')](_0x5c760c);}return _0x4a7657[_0xb0a3('0x1b')](_0x5c760c)['end']();};}function respondWithResult(_0x33c7e5,_0x1822c6){_0x1822c6=_0x1822c6||0xc8;return function(_0x29ab93){if(_0x29ab93){return _0x33c7e5[_0xb0a3('0x1b')](_0x1822c6)['json'](_0x29ab93);}};}function respondWithFilteredResult(_0x4a86d4,_0x3ad3b3){return function(_0x1228a8){if(_0x1228a8){var _0x2184d5=typeof _0x3ad3b3['offset']===_0xb0a3('0x1c')&&typeof _0x3ad3b3[_0xb0a3('0x1d')]===_0xb0a3('0x1c');var _0x882c3f=_0x1228a8[_0xb0a3('0x1e')];var _0x2d1fcf=_0x2184d5?0x0:_0x3ad3b3[_0xb0a3('0x1f')];var _0x21ad81=_0x2184d5?_0x1228a8['count']:_0x3ad3b3[_0xb0a3('0x1f')]+_0x3ad3b3[_0xb0a3('0x1d')];var _0x3a2b62;if(_0x21ad81>=_0x882c3f){_0x21ad81=_0x882c3f;_0x3a2b62=0xc8;}else{_0x3a2b62=0xce;}_0x4a86d4['status'](_0x3a2b62);return _0x4a86d4['set']('Content-Range',_0x2d1fcf+'-'+_0x21ad81+'/'+_0x882c3f)[_0xb0a3('0x20')](_0x1228a8);}return null;};}function patchUpdates(_0x3ad20b){return function(_0x42cbc8){try{jsonpatch['apply'](_0x42cbc8,_0x3ad20b,!![]);}catch(_0x27fc08){return BPromise['reject'](_0x27fc08);}return _0x42cbc8['save']();};}function saveUpdates(_0x146711,_0x28288a){return function(_0x73fd7b){if(_0x73fd7b){return _0x73fd7b[_0xb0a3('0x21')](_0x146711)[_0xb0a3('0x22')](function(_0x461b3c){return _0x461b3c;});}return null;};}function removeEntity(_0x5ba0f3,_0x283511){return function(_0x404fd5){if(_0x404fd5){return _0x404fd5[_0xb0a3('0x23')]()[_0xb0a3('0x22')](function(){var _0x2d6c66=_0x404fd5['get']({'plain':!![]});var _0xaf061b=_0xb0a3('0x24');return db[_0xb0a3('0x25')]['destroy']({'where':{'type':_0xaf061b,'resourceId':_0x2d6c66['id']}})[_0xb0a3('0x22')](function(){return _0x404fd5;});})['then'](function(){_0x5ba0f3[_0xb0a3('0x1b')](0xcc)[_0xb0a3('0x26')]();});}};}function handleEntityNotFound(_0x260bcd,_0x564c61){return function(_0x4aaf55){if(!_0x4aaf55){_0x260bcd[_0xb0a3('0x1a')](0x194);}return _0x4aaf55;};}function handleError(_0x2abdf2,_0x58cc00){_0x58cc00=_0x58cc00||0x1f4;return function(_0x478237){logger[_0xb0a3('0x27')](_0x478237[_0xb0a3('0x28')]);if(_0x478237[_0xb0a3('0x29')]){delete _0x478237['name'];}_0x2abdf2[_0xb0a3('0x1b')](_0x58cc00)['send'](_0x478237);};}exports[_0xb0a3('0x2a')]=function(_0x6b8b5d,_0x55eb14){var _0x35e2f8={},_0x1c8fcf={},_0x4b2043={'count':0x0,'rows':[]};var _0x4a6564=_[_0xb0a3('0x2b')](db[_0xb0a3('0x2c')][_0xb0a3('0x2d')],function(_0xffd4ce){return{'name':_0xffd4ce[_0xb0a3('0x2e')],'type':_0xffd4ce[_0xb0a3('0x2f')][_0xb0a3('0x30')]};});_0x1c8fcf[_0xb0a3('0x31')]=_[_0xb0a3('0x2b')](_0x4a6564,_0xb0a3('0x29'));_0x1c8fcf[_0xb0a3('0x32')]=_[_0xb0a3('0x33')](_0x6b8b5d[_0xb0a3('0x32')]);_0x1c8fcf[_0xb0a3('0x34')]=_[_0xb0a3('0x35')](_0x1c8fcf[_0xb0a3('0x31')],_0x1c8fcf[_0xb0a3('0x32')]);_0x35e2f8['attributes']=_[_0xb0a3('0x35')](_0x1c8fcf[_0xb0a3('0x31')],qs[_0xb0a3('0x36')](_0x6b8b5d[_0xb0a3('0x32')][_0xb0a3('0x36')]));_0x35e2f8['attributes']=_0x35e2f8[_0xb0a3('0x37')][_0xb0a3('0x38')]?_0x35e2f8[_0xb0a3('0x37')]:_0x1c8fcf[_0xb0a3('0x31')];if(!_0x6b8b5d[_0xb0a3('0x32')][_0xb0a3('0x39')](_0xb0a3('0x3a'))){_0x35e2f8['limit']=qs[_0xb0a3('0x1d')](_0x6b8b5d[_0xb0a3('0x32')][_0xb0a3('0x1d')]);_0x35e2f8[_0xb0a3('0x1f')]=qs[_0xb0a3('0x1f')](_0x6b8b5d[_0xb0a3('0x32')]['offset']);}_0x35e2f8[_0xb0a3('0x3b')]=qs[_0xb0a3('0x3c')](_0x6b8b5d['query']['sort']);_0x35e2f8[_0xb0a3('0x3d')]=qs[_0xb0a3('0x34')](_[_0xb0a3('0x3e')](_0x6b8b5d[_0xb0a3('0x32')],_0x1c8fcf[_0xb0a3('0x34')]),_0x4a6564);if(_0x6b8b5d[_0xb0a3('0x32')][_0xb0a3('0x3f')]){_0x35e2f8[_0xb0a3('0x3d')]=_[_0xb0a3('0x40')](_0x35e2f8[_0xb0a3('0x3d')],{'$or':[{'key':{'$like':'%'+_0x6b8b5d['query'][_0xb0a3('0x3f')]+'%'}},{'value':{'$like':'%'+_0x6b8b5d[_0xb0a3('0x32')][_0xb0a3('0x3f')]+'%'}}]});}_0x35e2f8=_[_0xb0a3('0x40')]({},_0x35e2f8,_0x6b8b5d[_0xb0a3('0x41')]);var _0x4565f4={'where':_0x35e2f8['where']};return db[_0xb0a3('0x2c')][_0xb0a3('0x1e')](_0x4565f4)['then'](function(_0x1a4117){_0x4b2043[_0xb0a3('0x1e')]=_0x1a4117;if(_0x6b8b5d[_0xb0a3('0x32')][_0xb0a3('0x42')]){_0x35e2f8[_0xb0a3('0x43')]=[{'all':!![]}];}return db[_0xb0a3('0x2c')][_0xb0a3('0x44')](_0x35e2f8);})['then'](function(_0x175642){_0x4b2043[_0xb0a3('0x45')]=_0x175642;return _0x4b2043;})['then'](respondWithFilteredResult(_0x55eb14,_0x35e2f8))[_0xb0a3('0x46')](handleError(_0x55eb14,null));};exports[_0xb0a3('0x47')]=function(_0x268145,_0x178741){var _0x4c95a3={'raw':!![],'where':{'id':_0x268145['params']['id']}},_0x3d0c83={};_0x3d0c83[_0xb0a3('0x31')]=_['keys'](db['CannedAnswer'][_0xb0a3('0x2d')]);_0x3d0c83[_0xb0a3('0x32')]=_[_0xb0a3('0x33')](_0x268145[_0xb0a3('0x32')]);_0x3d0c83['filters']=_[_0xb0a3('0x35')](_0x3d0c83[_0xb0a3('0x31')],_0x3d0c83['query']);_0x4c95a3[_0xb0a3('0x37')]=_[_0xb0a3('0x35')](_0x3d0c83[_0xb0a3('0x31')],qs['fields'](_0x268145[_0xb0a3('0x32')][_0xb0a3('0x36')]));_0x4c95a3['attributes']=_0x4c95a3['attributes'][_0xb0a3('0x38')]?_0x4c95a3[_0xb0a3('0x37')]:_0x3d0c83[_0xb0a3('0x31')];if(_0x268145[_0xb0a3('0x32')][_0xb0a3('0x42')]){_0x4c95a3['include']=[{'all':!![]}];}_0x4c95a3=_['merge']({},_0x4c95a3,_0x268145[_0xb0a3('0x41')]);return db[_0xb0a3('0x2c')][_0xb0a3('0x48')](_0x4c95a3)[_0xb0a3('0x22')](handleEntityNotFound(_0x178741,null))[_0xb0a3('0x22')](respondWithResult(_0x178741,null))['catch'](handleError(_0x178741,null));};exports['update']=function(_0x2c9478,_0x1b5345){if(_0x2c9478[_0xb0a3('0x49')]['id']){delete _0x2c9478[_0xb0a3('0x49')]['id'];}return db[_0xb0a3('0x2c')][_0xb0a3('0x48')]({'where':{'id':_0x2c9478[_0xb0a3('0x4a')]['id']}})[_0xb0a3('0x22')](handleEntityNotFound(_0x1b5345,null))[_0xb0a3('0x22')](saveUpdates(_0x2c9478[_0xb0a3('0x49')],null))[_0xb0a3('0x22')](respondWithResult(_0x1b5345,null))[_0xb0a3('0x46')](handleError(_0x1b5345,null));};exports['destroy']=function(_0xad6393,_0x1db031){return db['CannedAnswer'][_0xb0a3('0x48')]({'where':{'id':_0xad6393[_0xb0a3('0x4a')]['id']}})[_0xb0a3('0x22')](handleEntityNotFound(_0x1db031,null))['then'](removeEntity(_0x1db031,null))['catch'](handleError(_0x1db031,null));};exports['create']=function(_0x413e4b,_0x57a2){var _0x186239={'key':_0x413e4b['body'][_0xb0a3('0x30')]};if(_0x413e4b[_0xb0a3('0x49')][_0xb0a3('0x4b')]){_0x186239['MailAccountId']=_0x413e4b['body'][_0xb0a3('0x4b')];}else if(_0x413e4b['body'][_0xb0a3('0x4c')]){_0x186239[_0xb0a3('0x4c')]=_0x413e4b[_0xb0a3('0x49')][_0xb0a3('0x4c')];}else if(_0x413e4b[_0xb0a3('0x49')]['OpenchannelAccountId']){_0x186239[_0xb0a3('0x4d')]=_0x413e4b['body'][_0xb0a3('0x4d')];}else if(_0x413e4b[_0xb0a3('0x49')][_0xb0a3('0x4e')]){_0x186239[_0xb0a3('0x4e')]=_0x413e4b[_0xb0a3('0x49')][_0xb0a3('0x4e')];}return db[_0xb0a3('0x2c')][_0xb0a3('0x48')]({'where':_0x186239})[_0xb0a3('0x22')](function(_0x10cd55){if(_0x10cd55){throw new db[(_0xb0a3('0x4f'))][(_0xb0a3('0x50'))]('The\x20inserted\x20key\x20already\x20exists.');}return db['CannedAnswer'][_0xb0a3('0x51')](_0x413e4b[_0xb0a3('0x49')]);})[_0xb0a3('0x22')](function(_0x26fff9){var _0x313c37=_0x413e4b['user'][_0xb0a3('0x52')]({'plain':!![]});if(!_0x313c37)throw new Error(_0xb0a3('0x53'));if(_0x313c37[_0xb0a3('0x54')]===_0xb0a3('0x55')){var _0xafbc56=_0x26fff9[_0xb0a3('0x52')]({'plain':!![]});return db[_0xb0a3('0x56')][_0xb0a3('0x48')]({'where':{'name':_0xb0a3('0x24'),'userProfileId':_0x313c37['userProfileId']},'raw':!![]})[_0xb0a3('0x22')](function(_0x31ffd9){if(_0x31ffd9&&_0x31ffd9['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0xafbc56[_0xb0a3('0x29')],'resourceId':_0xafbc56['id'],'type':_0x31ffd9[_0xb0a3('0x29')],'sectionId':_0x31ffd9['id']},{})[_0xb0a3('0x22')](function(){return _0x26fff9;});}else{return _0x26fff9;}})[_0xb0a3('0x46')](function(_0x429b9a){logger[_0xb0a3('0x27')](_0xb0a3('0x57'),_0x429b9a);throw _0x429b9a;});}return _0x26fff9;})['then'](respondWithResult(_0x57a2,0xc9))[_0xb0a3('0x46')](handleError(_0x57a2,null));};
\ No newline at end of file
+var _0xb03e=['includeAll','include','findAll','rows','catch','params','find','body','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','UserProfileSection','userProfileId','autoAssociation','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','../../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','limit','count','set','apply','reject','update','then','CannedAnswers','UserProfileResource','destroy','error','stack','name','send','index','CannedAnswer','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','options'];(function(_0x4e8144,_0x3e0b99){var _0x58342f=function(_0x1f778e){while(--_0x1f778e){_0x4e8144['push'](_0x4e8144['shift']());}};_0x58342f(++_0x3e0b99);}(_0xb03e,0x12b));var _0xeb03=function(_0xbd2f63,_0x34bda6){_0xbd2f63=_0xbd2f63-0x0;var _0x3cf268=_0xb03e[_0xbd2f63];return _0x3cf268;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xeb03('0x0'));var zipdir=require(_0xeb03('0x1'));var jsonpatch=require(_0xeb03('0x2'));var rp=require(_0xeb03('0x3'));var moment=require(_0xeb03('0x4'));var BPromise=require(_0xeb03('0x5'));var Mustache=require(_0xeb03('0x6'));var util=require(_0xeb03('0x7'));var path=require(_0xeb03('0x8'));var sox=require(_0xeb03('0x9'));var csv=require(_0xeb03('0xa'));var ejs=require(_0xeb03('0xb'));var fs=require('fs');var fs_extra=require(_0xeb03('0xc'));var _=require(_0xeb03('0xd'));var squel=require(_0xeb03('0xe'));var crypto=require(_0xeb03('0xf'));var jsforce=require(_0xeb03('0x10'));var deskjs=require(_0xeb03('0x11'));var toCsv=require(_0xeb03('0xa'));var querystring=require(_0xeb03('0x12'));var Papa=require(_0xeb03('0x13'));var Redis=require('ioredis');var authService=require(_0xeb03('0x14'));var qs=require(_0xeb03('0x15'));var as=require(_0xeb03('0x16'));var hardwareService=require(_0xeb03('0x17'));var logger=require(_0xeb03('0x18'))(_0xeb03('0x19'));var utils=require(_0xeb03('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0xeb03('0x1b'));var db=require(_0xeb03('0x1c'))['db'];function respondWithStatusCode(_0x32d6b2,_0x45a9a7){_0x45a9a7=_0x45a9a7||0xcc;return function(_0x585b46){if(_0x585b46){return _0x32d6b2[_0xeb03('0x1d')](_0x45a9a7);}return _0x32d6b2[_0xeb03('0x1e')](_0x45a9a7)[_0xeb03('0x1f')]();};}function respondWithResult(_0x30be93,_0x657818){_0x657818=_0x657818||0xc8;return function(_0x442ac2){if(_0x442ac2){return _0x30be93['status'](_0x657818)[_0xeb03('0x20')](_0x442ac2);}};}function respondWithFilteredResult(_0x10d306,_0x4d8e49){return function(_0x1d8ddc){if(_0x1d8ddc){var _0x5ce478=typeof _0x4d8e49[_0xeb03('0x21')]===_0xeb03('0x22')&&typeof _0x4d8e49[_0xeb03('0x23')]===_0xeb03('0x22');var _0x187472=_0x1d8ddc['count'];var _0x1d6a50=_0x5ce478?0x0:_0x4d8e49[_0xeb03('0x21')];var _0x49aa82=_0x5ce478?_0x1d8ddc[_0xeb03('0x24')]:_0x4d8e49[_0xeb03('0x21')]+_0x4d8e49[_0xeb03('0x23')];var _0x38560d;if(_0x49aa82>=_0x187472){_0x49aa82=_0x187472;_0x38560d=0xc8;}else{_0x38560d=0xce;}_0x10d306[_0xeb03('0x1e')](_0x38560d);return _0x10d306[_0xeb03('0x25')]('Content-Range',_0x1d6a50+'-'+_0x49aa82+'/'+_0x187472)[_0xeb03('0x20')](_0x1d8ddc);}return null;};}function patchUpdates(_0x4280a5){return function(_0x90853c){try{jsonpatch[_0xeb03('0x26')](_0x90853c,_0x4280a5,!![]);}catch(_0x385908){return BPromise[_0xeb03('0x27')](_0x385908);}return _0x90853c['save']();};}function saveUpdates(_0x41436b,_0x13bdff){return function(_0x4454dc){if(_0x4454dc){return _0x4454dc[_0xeb03('0x28')](_0x41436b)[_0xeb03('0x29')](function(_0x2ef095){return _0x2ef095;});}return null;};}function removeEntity(_0x43b490,_0x2674fe){return function(_0x3e043a){if(_0x3e043a){return _0x3e043a['destroy']()[_0xeb03('0x29')](function(){var _0x435aae=_0x3e043a['get']({'plain':!![]});var _0x28645a=_0xeb03('0x2a');return db[_0xeb03('0x2b')][_0xeb03('0x2c')]({'where':{'type':_0x28645a,'resourceId':_0x435aae['id']}})[_0xeb03('0x29')](function(){return _0x3e043a;});})[_0xeb03('0x29')](function(){_0x43b490['status'](0xcc)[_0xeb03('0x1f')]();});}};}function handleEntityNotFound(_0x3dd818,_0x8c3ba3){return function(_0x4bd353){if(!_0x4bd353){_0x3dd818[_0xeb03('0x1d')](0x194);}return _0x4bd353;};}function handleError(_0xac72e,_0x398f27){_0x398f27=_0x398f27||0x1f4;return function(_0xc9103f){logger[_0xeb03('0x2d')](_0xc9103f[_0xeb03('0x2e')]);if(_0xc9103f[_0xeb03('0x2f')]){delete _0xc9103f[_0xeb03('0x2f')];}_0xac72e[_0xeb03('0x1e')](_0x398f27)[_0xeb03('0x30')](_0xc9103f);};}exports[_0xeb03('0x31')]=function(_0x381b4d,_0x2032ba){var _0x5b055b={},_0x30166d={},_0xf062de={'count':0x0,'rows':[]};var _0xb30f61=_['map'](db[_0xeb03('0x32')][_0xeb03('0x33')],function(_0x2302f4){return{'name':_0x2302f4[_0xeb03('0x34')],'type':_0x2302f4[_0xeb03('0x35')][_0xeb03('0x36')]};});_0x30166d[_0xeb03('0x37')]=_[_0xeb03('0x38')](_0xb30f61,_0xeb03('0x2f'));_0x30166d[_0xeb03('0x39')]=_[_0xeb03('0x3a')](_0x381b4d[_0xeb03('0x39')]);_0x30166d[_0xeb03('0x3b')]=_['intersection'](_0x30166d[_0xeb03('0x37')],_0x30166d[_0xeb03('0x39')]);_0x5b055b[_0xeb03('0x3c')]=_[_0xeb03('0x3d')](_0x30166d[_0xeb03('0x37')],qs['fields'](_0x381b4d[_0xeb03('0x39')][_0xeb03('0x3e')]));_0x5b055b[_0xeb03('0x3c')]=_0x5b055b[_0xeb03('0x3c')][_0xeb03('0x3f')]?_0x5b055b[_0xeb03('0x3c')]:_0x30166d[_0xeb03('0x37')];if(!_0x381b4d[_0xeb03('0x39')][_0xeb03('0x40')](_0xeb03('0x41'))){_0x5b055b[_0xeb03('0x23')]=qs['limit'](_0x381b4d['query'][_0xeb03('0x23')]);_0x5b055b[_0xeb03('0x21')]=qs['offset'](_0x381b4d[_0xeb03('0x39')][_0xeb03('0x21')]);}_0x5b055b[_0xeb03('0x42')]=qs[_0xeb03('0x43')](_0x381b4d[_0xeb03('0x39')][_0xeb03('0x43')]);_0x5b055b[_0xeb03('0x44')]=qs[_0xeb03('0x3b')](_[_0xeb03('0x45')](_0x381b4d[_0xeb03('0x39')],_0x30166d[_0xeb03('0x3b')]),_0xb30f61);if(_0x381b4d[_0xeb03('0x39')]['filter']){_0x5b055b['where']=_[_0xeb03('0x46')](_0x5b055b[_0xeb03('0x44')],{'$or':[{'key':{'$like':'%'+_0x381b4d[_0xeb03('0x39')][_0xeb03('0x47')]+'%'}},{'value':{'$like':'%'+_0x381b4d[_0xeb03('0x39')][_0xeb03('0x47')]+'%'}}]});}_0x5b055b=_[_0xeb03('0x46')]({},_0x5b055b,_0x381b4d[_0xeb03('0x48')]);var _0xb0397f={'where':_0x5b055b[_0xeb03('0x44')]};return db['CannedAnswer']['count'](_0xb0397f)[_0xeb03('0x29')](function(_0xcf29b0){_0xf062de[_0xeb03('0x24')]=_0xcf29b0;if(_0x381b4d[_0xeb03('0x39')][_0xeb03('0x49')]){_0x5b055b[_0xeb03('0x4a')]=[{'all':!![]}];}return db['CannedAnswer'][_0xeb03('0x4b')](_0x5b055b);})['then'](function(_0x4a0e38){_0xf062de[_0xeb03('0x4c')]=_0x4a0e38;return _0xf062de;})[_0xeb03('0x29')](respondWithFilteredResult(_0x2032ba,_0x5b055b))[_0xeb03('0x4d')](handleError(_0x2032ba,null));};exports['show']=function(_0x92bb3,_0x5cc4f5){var _0x26b326={'raw':!![],'where':{'id':_0x92bb3[_0xeb03('0x4e')]['id']}},_0x353fde={};_0x353fde['model']=_[_0xeb03('0x3a')](db[_0xeb03('0x32')]['rawAttributes']);_0x353fde[_0xeb03('0x39')]=_[_0xeb03('0x3a')](_0x92bb3['query']);_0x353fde[_0xeb03('0x3b')]=_[_0xeb03('0x3d')](_0x353fde['model'],_0x353fde[_0xeb03('0x39')]);_0x26b326[_0xeb03('0x3c')]=_[_0xeb03('0x3d')](_0x353fde[_0xeb03('0x37')],qs[_0xeb03('0x3e')](_0x92bb3['query'][_0xeb03('0x3e')]));_0x26b326[_0xeb03('0x3c')]=_0x26b326[_0xeb03('0x3c')]['length']?_0x26b326[_0xeb03('0x3c')]:_0x353fde[_0xeb03('0x37')];if(_0x92bb3[_0xeb03('0x39')][_0xeb03('0x49')]){_0x26b326['include']=[{'all':!![]}];}_0x26b326=_[_0xeb03('0x46')]({},_0x26b326,_0x92bb3[_0xeb03('0x48')]);return db[_0xeb03('0x32')][_0xeb03('0x4f')](_0x26b326)[_0xeb03('0x29')](handleEntityNotFound(_0x5cc4f5,null))[_0xeb03('0x29')](respondWithResult(_0x5cc4f5,null))['catch'](handleError(_0x5cc4f5,null));};exports[_0xeb03('0x28')]=function(_0x547e39,_0x1ff353){if(_0x547e39[_0xeb03('0x50')]['id']){delete _0x547e39[_0xeb03('0x50')]['id'];}return db[_0xeb03('0x32')][_0xeb03('0x4f')]({'where':{'id':_0x547e39[_0xeb03('0x4e')]['id']}})[_0xeb03('0x29')](handleEntityNotFound(_0x1ff353,null))[_0xeb03('0x29')](saveUpdates(_0x547e39[_0xeb03('0x50')],null))[_0xeb03('0x29')](respondWithResult(_0x1ff353,null))[_0xeb03('0x4d')](handleError(_0x1ff353,null));};exports[_0xeb03('0x2c')]=function(_0x5b43fd,_0x4ad85d){return db[_0xeb03('0x32')][_0xeb03('0x4f')]({'where':{'id':_0x5b43fd['params']['id']}})[_0xeb03('0x29')](handleEntityNotFound(_0x4ad85d,null))['then'](removeEntity(_0x4ad85d,null))[_0xeb03('0x4d')](handleError(_0x4ad85d,null));};exports[_0xeb03('0x51')]=function(_0x3fed3d,_0x3068b0){var _0x3691b1={'key':_0x3fed3d[_0xeb03('0x50')][_0xeb03('0x36')]};if(_0x3fed3d[_0xeb03('0x50')][_0xeb03('0x52')]){_0x3691b1[_0xeb03('0x52')]=_0x3fed3d['body'][_0xeb03('0x52')];}else if(_0x3fed3d[_0xeb03('0x50')]['SmsAccountId']){_0x3691b1[_0xeb03('0x53')]=_0x3fed3d['body'][_0xeb03('0x53')];}else if(_0x3fed3d[_0xeb03('0x50')][_0xeb03('0x54')]){_0x3691b1[_0xeb03('0x54')]=_0x3fed3d[_0xeb03('0x50')][_0xeb03('0x54')];}else if(_0x3fed3d[_0xeb03('0x50')]['ChatWebsiteId']){_0x3691b1['ChatWebsiteId']=_0x3fed3d[_0xeb03('0x50')][_0xeb03('0x55')];}return db[_0xeb03('0x32')]['find']({'where':_0x3691b1})[_0xeb03('0x29')](function(_0x1bf4fd){if(_0x1bf4fd){throw new db[(_0xeb03('0x56'))][(_0xeb03('0x57'))](_0xeb03('0x58'));}return db[_0xeb03('0x32')][_0xeb03('0x51')](_0x3fed3d[_0xeb03('0x50')]);})[_0xeb03('0x29')](function(_0x179c8a){var _0x5f24b1=_0x3fed3d[_0xeb03('0x59')]['get']({'plain':!![]});if(!_0x5f24b1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5f24b1['role']===_0xeb03('0x59')){var _0x58f0ca=_0x179c8a['get']({'plain':!![]});return db[_0xeb03('0x5a')][_0xeb03('0x4f')]({'where':{'name':_0xeb03('0x2a'),'userProfileId':_0x5f24b1[_0xeb03('0x5b')]},'raw':!![]})[_0xeb03('0x29')](function(_0x1b0284){if(_0x1b0284&&_0x1b0284[_0xeb03('0x5c')]===0x0){return db[_0xeb03('0x2b')][_0xeb03('0x51')]({'name':_0x58f0ca[_0xeb03('0x2f')],'resourceId':_0x58f0ca['id'],'type':_0x1b0284['name'],'sectionId':_0x1b0284['id']},{})[_0xeb03('0x29')](function(){return _0x179c8a;});}else{return _0x179c8a;}})['catch'](function(_0x5bb44a){logger[_0xeb03('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5bb44a);throw _0x5bb44a;});}return _0x179c8a;})[_0xeb03('0x29')](respondWithResult(_0x3068b0,0xc9))['catch'](handleError(_0x3068b0,null));};
\ No newline at end of file
index b7b72f3..22328b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e24=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./cannedAnswer.attributes','exports','define','CannedAnswer','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api'];(function(_0x1344d6,_0x2181e6){var _0xf45b24=function(_0x2d90c1){while(--_0x2d90c1){_0x1344d6['push'](_0x1344d6['shift']());}};_0xf45b24(++_0x2181e6);}(_0x0e24,0x1da));var _0x40e2=function(_0x5608a3,_0x5b33c5){_0x5608a3=_0x5608a3-0x0;var _0x1ed50a=_0x0e24[_0x5608a3];return _0x1ed50a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x40e2('0x0'))(_0x40e2('0x1'));var moment=require(_0x40e2('0x2'));var BPromise=require(_0x40e2('0x3'));var rp=require(_0x40e2('0x4'));var fs=require('fs');var path=require(_0x40e2('0x5'));var rimraf=require(_0x40e2('0x6'));var config=require(_0x40e2('0x7'));var attributes=require(_0x40e2('0x8'));module[_0x40e2('0x9')]=function(_0x2c4fc1,_0x38f499){return _0x2c4fc1[_0x40e2('0xa')](_0x40e2('0xb'),attributes,{'tableName':'tools_canned_answers','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x40e2('0xc'),'collate':_0x40e2('0xd')});};
\ No newline at end of file
+var _0x0541=['../../config/logger','moment','bluebird','./cannedAnswer.attributes','define','CannedAnswer','tools_canned_answers','utf8mb4','lodash','util'];(function(_0x44bb23,_0x2c1b28){var _0x42147c=function(_0xb6e405){while(--_0xb6e405){_0x44bb23['push'](_0x44bb23['shift']());}};_0x42147c(++_0x2c1b28);}(_0x0541,0x1f2));var _0x1054=function(_0x548e1d,_0x3534d3){_0x548e1d=_0x548e1d-0x0;var _0x398584=_0x0541[_0x548e1d];return _0x398584;};'use strict';var _=require(_0x1054('0x0'));var util=require(_0x1054('0x1'));var logger=require(_0x1054('0x2'))('api');var moment=require(_0x1054('0x3'));var BPromise=require(_0x1054('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(_0x1054('0x5'));module['exports']=function(_0x5cdfff,_0x1a3a45){return _0x5cdfff[_0x1054('0x6')](_0x1054('0x7'),attributes,{'tableName':_0x1054('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1054('0x9'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 4a06487..d0000df 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(_0x1224f4,_0x1d3f87){var _0x2212d0=function(_0x5dc05e){while(--_0x5dc05e){_0x1224f4['push'](_0x1224f4['shift']());}};_0x2212d0(++_0x1d3f87);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0xa9e0[_0x1b349a];return _0x5d1f7c;};'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(_0x1d6198,_0x226b3e){var _0x2659d4=function(_0x27c563){while(--_0x27c563){_0x1d6198['push'](_0x1d6198['shift']());}};_0x2659d4(++_0x226b3e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5037ab,_0x43209e){_0x5037ab=_0x5037ab-0x0;var _0x512adb=_0xa9e0[_0x5037ab];return _0x512adb;};'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 954ca91..9757e03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x203f=['get','isAuthenticated','index','/:id','show','put','update','delete','destroy','multer','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x5cb1af,_0x4bdc8c){var _0x8d7940=function(_0x3db70a){while(--_0x3db70a){_0x5cb1af['push'](_0x5cb1af['shift']());}};_0x8d7940(++_0x4bdc8c);}(_0x203f,0x19e));var _0xf203=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x203f[_0x465028];return _0xb783d4;};'use strict';var multer=require(_0xf203('0x0'));var util=require('util');var path=require(_0xf203('0x1'));var timeout=require('connect-timeout');var express=require(_0xf203('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xf203('0x3'));var interaction=require(_0xf203('0x4'));var config=require(_0xf203('0x5'));var controller=require('./cannedAnswer.controller');router[_0xf203('0x6')]('/',auth[_0xf203('0x7')](),controller[_0xf203('0x8')]);router[_0xf203('0x6')](_0xf203('0x9'),auth['isAuthenticated'](),controller[_0xf203('0xa')]);router['post']('/',auth[_0xf203('0x7')](),controller['create']);router[_0xf203('0xb')]('/:id',auth[_0xf203('0x7')](),controller[_0xf203('0xc')]);router[_0xf203('0xd')](_0xf203('0x9'),auth[_0xf203('0x7')](),controller[_0xf203('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0xd8e7=['get','index','isAuthenticated','show','post','create','put','/:id','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x59b439,_0x14ae7b){var _0x521ea3=function(_0x5af627){while(--_0x5af627){_0x59b439['push'](_0x59b439['shift']());}};_0x521ea3(++_0x14ae7b);}(_0xd8e7,0x82));var _0x7d8e=function(_0x1c3665,_0x3c8c8e){_0x1c3665=_0x1c3665-0x0;var _0x4f6949=_0xd8e7[_0x1c3665];return _0x4f6949;};'use strict';var multer=require(_0x7d8e('0x0'));var util=require(_0x7d8e('0x1'));var path=require(_0x7d8e('0x2'));var timeout=require(_0x7d8e('0x3'));var express=require(_0x7d8e('0x4'));var router=express[_0x7d8e('0x5')]();var fs_extra=require(_0x7d8e('0x6'));var auth=require(_0x7d8e('0x7'));var interaction=require(_0x7d8e('0x8'));var config=require(_0x7d8e('0x9'));var controller=require('./cannedAnswer.controller');router[_0x7d8e('0xa')]('/',auth['isAuthenticated'](),controller[_0x7d8e('0xb')]);router[_0x7d8e('0xa')]('/:id',auth[_0x7d8e('0xc')](),controller[_0x7d8e('0xd')]);router[_0x7d8e('0xe')]('/',auth['isAuthenticated'](),controller[_0x7d8e('0xf')]);router[_0x7d8e('0x10')](_0x7d8e('0x11'),auth['isAuthenticated'](),controller['update']);router[_0x7d8e('0x12')](_0x7d8e('0x11'),auth['isAuthenticated'](),controller['destroy']);module[_0x7d8e('0x13')]=router;
\ No newline at end of file
index fa8aaf3..bfb9f86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6e8=['1970-01-01\x2000:00:01','STRING','INTEGER','exports','DATE'];(function(_0x22ad96,_0x549fb4){var _0x46befb=function(_0x22f676){while(--_0x22f676){_0x22ad96['push'](_0x22ad96['shift']());}};_0x46befb(++_0x549fb4);}(_0xf6e8,0xc1));var _0x8f6e=function(_0x528867,_0x435a1b){_0x528867=_0x528867-0x0;var _0x4a3d36=_0xf6e8[_0x528867];return _0x4a3d36;};'use strict';var Sequelize=require('sequelize');module[_0x8f6e('0x0')]={'calldate':{'type':Sequelize[_0x8f6e('0x1')],'allowNull':![],'defaultValue':_0x8f6e('0x2')},'clid':{'type':Sequelize[_0x8f6e('0x3')]},'src':{'type':Sequelize[_0x8f6e('0x3')]},'dst':{'type':Sequelize[_0x8f6e('0x3')]},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x8f6e('0x3')]},'dstchannel':{'type':Sequelize['STRING']},'lastapp':{'type':Sequelize[_0x8f6e('0x3')]},'lastdata':{'type':Sequelize[_0x8f6e('0x3')]},'duration':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x8f6e('0x4')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x8f6e('0x3')]},'amaflags':{'type':Sequelize[_0x8f6e('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x8f6e('0x3')]},'userfield':{'type':Sequelize[_0x8f6e('0x3')]},'uniqueid':{'type':Sequelize[_0x8f6e('0x3')]},'linkedid':{'type':Sequelize[_0x8f6e('0x3')]},'sequence':{'type':Sequelize[_0x8f6e('0x3')]},'peeraccount':{'type':Sequelize[_0x8f6e('0x3')]},'type':{'type':Sequelize[_0x8f6e('0x3')]},'tag':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x933b=['STRING','INTEGER','sequelize','exports'];(function(_0x47335c,_0xa64542){var _0x5b3c5c=function(_0x5eadfb){while(--_0x5eadfb){_0x47335c['push'](_0x47335c['shift']());}};_0x5b3c5c(++_0xa64542);}(_0x933b,0x16e));var _0xb933=function(_0x231940,_0x20a072){_0x231940=_0x231940-0x0;var _0xffb384=_0x933b[_0x231940];return _0xffb384;};'use strict';var Sequelize=require(_0xb933('0x0'));module[_0xb933('0x1')]={'calldate':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':'1970-01-01\x2000:00:01'},'clid':{'type':Sequelize[_0xb933('0x2')]},'src':{'type':Sequelize[_0xb933('0x2')]},'dst':{'type':Sequelize['STRING']},'dcontext':{'type':Sequelize[_0xb933('0x2')]},'channel':{'type':Sequelize[_0xb933('0x2')]},'dstchannel':{'type':Sequelize['STRING']},'lastapp':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize[_0xb933('0x2')]},'duration':{'type':Sequelize[_0xb933('0x3')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0xb933('0x3')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xb933('0x2')]},'amaflags':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xb933('0x2')]},'userfield':{'type':Sequelize[_0xb933('0x2')]},'uniqueid':{'type':Sequelize[_0xb933('0x2')]},'linkedid':{'type':Sequelize[_0xb933('0x2')]},'sequence':{'type':Sequelize[_0xb933('0x2')]},'peeraccount':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xb933('0x2')]},'tag':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 4e9d6a1..df0d5dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9b1=['where','merge','includeAll','include','findAll','rows','catch','show','params','length','options','find','create','body','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','map','Cdr','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','pick','filter'];(function(_0x38a155,_0x2aa026){var _0x269403=function(_0x47263b){while(--_0x47263b){_0x38a155['push'](_0x38a155['shift']());}};_0x269403(++_0x2aa026);}(_0xa9b1,0x133));var _0x1a9b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa9b1[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1a9b('0x0'));var jsonpatch=require(_0x1a9b('0x1'));var rp=require(_0x1a9b('0x2'));var moment=require(_0x1a9b('0x3'));var BPromise=require(_0x1a9b('0x4'));var Mustache=require(_0x1a9b('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x1a9b('0x6'));var ejs=require(_0x1a9b('0x7'));var fs=require('fs');var fs_extra=require(_0x1a9b('0x8'));var _=require(_0x1a9b('0x9'));var squel=require(_0x1a9b('0xa'));var crypto=require(_0x1a9b('0xb'));var jsforce=require(_0x1a9b('0xc'));var deskjs=require(_0x1a9b('0xd'));var toCsv=require(_0x1a9b('0x6'));var querystring=require(_0x1a9b('0xe'));var Papa=require(_0x1a9b('0xf'));var Redis=require(_0x1a9b('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x1a9b('0x11'));var hardwareService=require(_0x1a9b('0x12'));var logger=require(_0x1a9b('0x13'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x1a9b('0x14'));var db=require(_0x1a9b('0x15'))['db'];function respondWithStatusCode(_0x2c75cf,_0x11bf7e){_0x11bf7e=_0x11bf7e||0xcc;return function(_0x2c3170){if(_0x2c3170){return _0x2c75cf[_0x1a9b('0x16')](_0x11bf7e);}return _0x2c75cf['status'](_0x11bf7e)[_0x1a9b('0x17')]();};}function respondWithResult(_0x34f082,_0x245883){_0x245883=_0x245883||0xc8;return function(_0x53c725){if(_0x53c725){return _0x34f082[_0x1a9b('0x18')](_0x245883)[_0x1a9b('0x19')](_0x53c725);}};}function respondWithFilteredResult(_0x55a00d,_0x2a7d72){return function(_0x57ca87){if(_0x57ca87){var _0x439acd=typeof _0x2a7d72[_0x1a9b('0x1a')]===_0x1a9b('0x1b')&&typeof _0x2a7d72[_0x1a9b('0x1c')]===_0x1a9b('0x1b');var _0x20b8dc=_0x57ca87[_0x1a9b('0x1d')];var _0x205a0d=_0x439acd?0x0:_0x2a7d72[_0x1a9b('0x1a')];var _0x1281c2=_0x439acd?_0x57ca87['count']:_0x2a7d72[_0x1a9b('0x1a')]+_0x2a7d72[_0x1a9b('0x1c')];var _0x3df7d2;if(_0x1281c2>=_0x20b8dc){_0x1281c2=_0x20b8dc;_0x3df7d2=0xc8;}else{_0x3df7d2=0xce;}_0x55a00d[_0x1a9b('0x18')](_0x3df7d2);return _0x55a00d['set'](_0x1a9b('0x1e'),_0x205a0d+'-'+_0x1281c2+'/'+_0x20b8dc)[_0x1a9b('0x19')](_0x57ca87);}return null;};}function patchUpdates(_0x4b3cd3){return function(_0x23e327){try{jsonpatch[_0x1a9b('0x1f')](_0x23e327,_0x4b3cd3,!![]);}catch(_0x44cebf){return BPromise[_0x1a9b('0x20')](_0x44cebf);}return _0x23e327[_0x1a9b('0x21')]();};}function saveUpdates(_0x590568,_0x189e78){return function(_0x17b1dd){if(_0x17b1dd){return _0x17b1dd[_0x1a9b('0x22')](_0x590568)[_0x1a9b('0x23')](function(_0x36391a){return _0x36391a;});}return null;};}function removeEntity(_0x2e42f1,_0x28f937){return function(_0x488a33){if(_0x488a33){return _0x488a33[_0x1a9b('0x24')]()['then'](function(){_0x2e42f1[_0x1a9b('0x18')](0xcc)[_0x1a9b('0x17')]();});}};}function handleEntityNotFound(_0xad6541,_0x4e7234){return function(_0x213841){if(!_0x213841){_0xad6541[_0x1a9b('0x16')](0x194);}return _0x213841;};}function handleError(_0x1521f4,_0x181331){_0x181331=_0x181331||0x1f4;return function(_0x18c9dd){logger[_0x1a9b('0x25')](_0x18c9dd['stack']);if(_0x18c9dd[_0x1a9b('0x26')]){delete _0x18c9dd[_0x1a9b('0x26')];}_0x1521f4['status'](_0x181331)[_0x1a9b('0x27')](_0x18c9dd);};}exports[_0x1a9b('0x28')]=function(_0x5d70dc,_0x5d7e8c){var _0x3f8e98={},_0x1d981e={},_0x5362b8={'count':0x0,'rows':[]};var _0x30278b=_[_0x1a9b('0x29')](db[_0x1a9b('0x2a')][_0x1a9b('0x2b')],function(_0x1a5085){return{'name':_0x1a5085[_0x1a9b('0x2c')],'type':_0x1a5085[_0x1a9b('0x2d')]['key']};});_0x1d981e[_0x1a9b('0x2e')]=_[_0x1a9b('0x29')](_0x30278b,_0x1a9b('0x26'));_0x1d981e[_0x1a9b('0x2f')]=_[_0x1a9b('0x30')](_0x5d70dc[_0x1a9b('0x2f')]);_0x1d981e[_0x1a9b('0x31')]=_[_0x1a9b('0x32')](_0x1d981e[_0x1a9b('0x2e')],_0x1d981e[_0x1a9b('0x2f')]);_0x3f8e98[_0x1a9b('0x33')]=_['intersection'](_0x1d981e['model'],qs[_0x1a9b('0x34')](_0x5d70dc[_0x1a9b('0x2f')][_0x1a9b('0x34')]));_0x3f8e98['attributes']=_0x3f8e98[_0x1a9b('0x33')]['length']?_0x3f8e98[_0x1a9b('0x33')]:_0x1d981e['model'];if(!_0x5d70dc[_0x1a9b('0x2f')][_0x1a9b('0x35')]('nolimit')){_0x3f8e98[_0x1a9b('0x1c')]=qs['limit'](_0x5d70dc[_0x1a9b('0x2f')][_0x1a9b('0x1c')]);_0x3f8e98[_0x1a9b('0x1a')]=qs[_0x1a9b('0x1a')](_0x5d70dc['query'][_0x1a9b('0x1a')]);}_0x3f8e98[_0x1a9b('0x36')]=qs[_0x1a9b('0x37')](_0x5d70dc['query'][_0x1a9b('0x37')]);_0x3f8e98['where']=qs['filters'](_[_0x1a9b('0x38')](_0x5d70dc[_0x1a9b('0x2f')],_0x1d981e[_0x1a9b('0x31')]),_0x30278b);if(_0x5d70dc[_0x1a9b('0x2f')][_0x1a9b('0x39')]){_0x3f8e98[_0x1a9b('0x3a')]=_[_0x1a9b('0x3b')](_0x3f8e98['where'],{'$or':_[_0x1a9b('0x29')](_0x30278b,function(_0x230fc6){if(_0x230fc6[_0x1a9b('0x2d')]!=='VIRTUAL'){var _0x466827={};_0x466827[_0x230fc6[_0x1a9b('0x26')]]={'$like':'%'+_0x5d70dc[_0x1a9b('0x2f')][_0x1a9b('0x39')]+'%'};return _0x466827;}})});}_0x3f8e98=_['merge']({},_0x3f8e98,_0x5d70dc['options']);var _0x10e80f={'where':_0x3f8e98[_0x1a9b('0x3a')]};return db[_0x1a9b('0x2a')]['count'](_0x10e80f)['then'](function(_0x2b9bcf){_0x5362b8[_0x1a9b('0x1d')]=_0x2b9bcf;if(_0x5d70dc[_0x1a9b('0x2f')][_0x1a9b('0x3c')]){_0x3f8e98[_0x1a9b('0x3d')]=[{'all':!![]}];}return db[_0x1a9b('0x2a')][_0x1a9b('0x3e')](_0x3f8e98);})['then'](function(_0x313921){_0x5362b8[_0x1a9b('0x3f')]=_0x313921;return _0x5362b8;})[_0x1a9b('0x23')](respondWithFilteredResult(_0x5d7e8c,_0x3f8e98))[_0x1a9b('0x40')](handleError(_0x5d7e8c,null));};exports[_0x1a9b('0x41')]=function(_0x1decb8,_0xb4cbf4){var _0x398db3={'raw':!![],'where':{'id':_0x1decb8[_0x1a9b('0x42')]['id']}},_0x35f6d8={};_0x35f6d8[_0x1a9b('0x2e')]=_[_0x1a9b('0x30')](db[_0x1a9b('0x2a')][_0x1a9b('0x2b')]);_0x35f6d8[_0x1a9b('0x2f')]=_[_0x1a9b('0x30')](_0x1decb8['query']);_0x35f6d8[_0x1a9b('0x31')]=_[_0x1a9b('0x32')](_0x35f6d8['model'],_0x35f6d8[_0x1a9b('0x2f')]);_0x398db3['attributes']=_['intersection'](_0x35f6d8[_0x1a9b('0x2e')],qs[_0x1a9b('0x34')](_0x1decb8[_0x1a9b('0x2f')][_0x1a9b('0x34')]));_0x398db3[_0x1a9b('0x33')]=_0x398db3[_0x1a9b('0x33')][_0x1a9b('0x43')]?_0x398db3['attributes']:_0x35f6d8[_0x1a9b('0x2e')];if(_0x1decb8[_0x1a9b('0x2f')][_0x1a9b('0x3c')]){_0x398db3[_0x1a9b('0x3d')]=[{'all':!![]}];}_0x398db3=_['merge']({},_0x398db3,_0x1decb8[_0x1a9b('0x44')]);return db[_0x1a9b('0x2a')][_0x1a9b('0x45')](_0x398db3)[_0x1a9b('0x23')](handleEntityNotFound(_0xb4cbf4,null))['then'](respondWithResult(_0xb4cbf4,null))[_0x1a9b('0x40')](handleError(_0xb4cbf4,null));};exports[_0x1a9b('0x46')]=function(_0x41e9fc,_0x1e93df){return db[_0x1a9b('0x2a')]['create'](_0x41e9fc['body'],{})[_0x1a9b('0x23')](respondWithResult(_0x1e93df,0xc9))[_0x1a9b('0x40')](handleError(_0x1e93df,null));};exports['update']=function(_0x52b06e,_0x252140){if(_0x52b06e[_0x1a9b('0x47')]['id']){delete _0x52b06e[_0x1a9b('0x47')]['id'];}return db['Cdr'][_0x1a9b('0x45')]({'where':{'id':_0x52b06e[_0x1a9b('0x42')]['id']}})[_0x1a9b('0x23')](handleEntityNotFound(_0x252140,null))[_0x1a9b('0x23')](saveUpdates(_0x52b06e[_0x1a9b('0x47')],null))[_0x1a9b('0x23')](respondWithResult(_0x252140,null))[_0x1a9b('0x40')](handleError(_0x252140,null));};exports['destroy']=function(_0x54b9ac,_0x5465d0){return db[_0x1a9b('0x2a')][_0x1a9b('0x45')]({'where':{'id':_0x54b9ac[_0x1a9b('0x42')]['id']}})[_0x1a9b('0x23')](handleEntityNotFound(_0x5465d0,null))[_0x1a9b('0x23')](removeEntity(_0x5465d0,null))['catch'](handleError(_0x5465d0,null));};exports[_0x1a9b('0x48')]=function(_0x222bba,_0x3b1fdf){return db[_0x1a9b('0x2a')][_0x1a9b('0x48')]()[_0x1a9b('0x23')](respondWithResult(_0x3b1fdf,null))[_0x1a9b('0x40')](handleError(_0x3b1fdf,null));};
\ No newline at end of file
+var _0x6c32=['name','send','index','map','Cdr','rawAttributes','fieldName','type','key','query','keys','filters','model','fields','attributes','length','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','intersection','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','Content-Range','apply','save','update','destroy','then','error'];(function(_0x292f93,_0x2c6e8e){var _0x5a94b1=function(_0x25735e){while(--_0x25735e){_0x292f93['push'](_0x292f93['shift']());}};_0x5a94b1(++_0x2c6e8e);}(_0x6c32,0x6e));var _0x26c3=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x6c32[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x26c3('0x0'));var rimraf=require(_0x26c3('0x1'));var zipdir=require(_0x26c3('0x2'));var jsonpatch=require(_0x26c3('0x3'));var rp=require(_0x26c3('0x4'));var moment=require(_0x26c3('0x5'));var BPromise=require(_0x26c3('0x6'));var Mustache=require(_0x26c3('0x7'));var util=require(_0x26c3('0x8'));var path=require('path');var sox=require(_0x26c3('0x9'));var csv=require(_0x26c3('0xa'));var ejs=require(_0x26c3('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x26c3('0xc'));var squel=require('squel');var crypto=require(_0x26c3('0xd'));var jsforce=require(_0x26c3('0xe'));var deskjs=require(_0x26c3('0xf'));var toCsv=require(_0x26c3('0xa'));var querystring=require(_0x26c3('0x10'));var Papa=require(_0x26c3('0x11'));var Redis=require(_0x26c3('0x12'));var authService=require(_0x26c3('0x13'));var qs=require(_0x26c3('0x14'));var as=require(_0x26c3('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x26c3('0x16'));var licenseUtil=require(_0x26c3('0x17'));var db=require(_0x26c3('0x18'))['db'];function respondWithStatusCode(_0x457fc9,_0x4b8d92){_0x4b8d92=_0x4b8d92||0xcc;return function(_0x4c7b94){if(_0x4c7b94){return _0x457fc9[_0x26c3('0x19')](_0x4b8d92);}return _0x457fc9[_0x26c3('0x1a')](_0x4b8d92)[_0x26c3('0x1b')]();};}function respondWithResult(_0x3cd3c7,_0x17c399){_0x17c399=_0x17c399||0xc8;return function(_0x568d0b){if(_0x568d0b){return _0x3cd3c7['status'](_0x17c399)[_0x26c3('0x1c')](_0x568d0b);}};}function respondWithFilteredResult(_0xc14c69,_0x4f4256){return function(_0x4ed7c1){if(_0x4ed7c1){var _0x124cb3=typeof _0x4f4256['offset']===_0x26c3('0x1d')&&typeof _0x4f4256['limit']==='undefined';var _0x3931d5=_0x4ed7c1['count'];var _0x38fe17=_0x124cb3?0x0:_0x4f4256['offset'];var _0x170039=_0x124cb3?_0x4ed7c1[_0x26c3('0x1e')]:_0x4f4256[_0x26c3('0x1f')]+_0x4f4256[_0x26c3('0x20')];var _0x20317d;if(_0x170039>=_0x3931d5){_0x170039=_0x3931d5;_0x20317d=0xc8;}else{_0x20317d=0xce;}_0xc14c69['status'](_0x20317d);return _0xc14c69['set'](_0x26c3('0x21'),_0x38fe17+'-'+_0x170039+'/'+_0x3931d5)[_0x26c3('0x1c')](_0x4ed7c1);}return null;};}function patchUpdates(_0x480b76){return function(_0x5344e7){try{jsonpatch[_0x26c3('0x22')](_0x5344e7,_0x480b76,!![]);}catch(_0x5c2f7d){return BPromise['reject'](_0x5c2f7d);}return _0x5344e7[_0x26c3('0x23')]();};}function saveUpdates(_0x4eb863,_0x21034d){return function(_0x4a76b5){if(_0x4a76b5){return _0x4a76b5[_0x26c3('0x24')](_0x4eb863)['then'](function(_0x449548){return _0x449548;});}return null;};}function removeEntity(_0x146b69,_0x2f1648){return function(_0xdc0f2c){if(_0xdc0f2c){return _0xdc0f2c[_0x26c3('0x25')]()[_0x26c3('0x26')](function(){_0x146b69[_0x26c3('0x1a')](0xcc)[_0x26c3('0x1b')]();});}};}function handleEntityNotFound(_0x85a057,_0x3f6a18){return function(_0x52dae1){if(!_0x52dae1){_0x85a057[_0x26c3('0x19')](0x194);}return _0x52dae1;};}function handleError(_0x4c7696,_0x50d85e){_0x50d85e=_0x50d85e||0x1f4;return function(_0x44b4f8){logger[_0x26c3('0x27')](_0x44b4f8['stack']);if(_0x44b4f8[_0x26c3('0x28')]){delete _0x44b4f8['name'];}_0x4c7696[_0x26c3('0x1a')](_0x50d85e)[_0x26c3('0x29')](_0x44b4f8);};}exports[_0x26c3('0x2a')]=function(_0x130fcc,_0x3dbda5){var _0x50cd11={},_0x1d3331={},_0x27f556={'count':0x0,'rows':[]};var _0xebb766=_[_0x26c3('0x2b')](db[_0x26c3('0x2c')][_0x26c3('0x2d')],function(_0x5557b8){return{'name':_0x5557b8[_0x26c3('0x2e')],'type':_0x5557b8[_0x26c3('0x2f')][_0x26c3('0x30')]};});_0x1d3331['model']=_[_0x26c3('0x2b')](_0xebb766,_0x26c3('0x28'));_0x1d3331[_0x26c3('0x31')]=_[_0x26c3('0x32')](_0x130fcc[_0x26c3('0x31')]);_0x1d3331[_0x26c3('0x33')]=_['intersection'](_0x1d3331[_0x26c3('0x34')],_0x1d3331[_0x26c3('0x31')]);_0x50cd11['attributes']=_['intersection'](_0x1d3331['model'],qs['fields'](_0x130fcc['query'][_0x26c3('0x35')]));_0x50cd11[_0x26c3('0x36')]=_0x50cd11['attributes'][_0x26c3('0x37')]?_0x50cd11[_0x26c3('0x36')]:_0x1d3331['model'];if(!_0x130fcc['query'][_0x26c3('0x38')]('nolimit')){_0x50cd11[_0x26c3('0x20')]=qs['limit'](_0x130fcc[_0x26c3('0x31')][_0x26c3('0x20')]);_0x50cd11[_0x26c3('0x1f')]=qs[_0x26c3('0x1f')](_0x130fcc[_0x26c3('0x31')]['offset']);}_0x50cd11[_0x26c3('0x39')]=qs[_0x26c3('0x3a')](_0x130fcc[_0x26c3('0x31')][_0x26c3('0x3a')]);_0x50cd11[_0x26c3('0x3b')]=qs[_0x26c3('0x33')](_['pick'](_0x130fcc['query'],_0x1d3331[_0x26c3('0x33')]),_0xebb766);if(_0x130fcc[_0x26c3('0x31')][_0x26c3('0x3c')]){_0x50cd11[_0x26c3('0x3b')]=_[_0x26c3('0x3d')](_0x50cd11['where'],{'$or':_['map'](_0xebb766,function(_0x4c2df1){if(_0x4c2df1[_0x26c3('0x2f')]!==_0x26c3('0x3e')){var _0x832ef2={};_0x832ef2[_0x4c2df1[_0x26c3('0x28')]]={'$like':'%'+_0x130fcc[_0x26c3('0x31')]['filter']+'%'};return _0x832ef2;}})});}_0x50cd11=_['merge']({},_0x50cd11,_0x130fcc[_0x26c3('0x3f')]);var _0x16e680={'where':_0x50cd11[_0x26c3('0x3b')]};return db[_0x26c3('0x2c')]['count'](_0x16e680)[_0x26c3('0x26')](function(_0x2b4bdf){_0x27f556[_0x26c3('0x1e')]=_0x2b4bdf;if(_0x130fcc[_0x26c3('0x31')][_0x26c3('0x40')]){_0x50cd11[_0x26c3('0x41')]=[{'all':!![]}];}return db[_0x26c3('0x2c')][_0x26c3('0x42')](_0x50cd11);})[_0x26c3('0x26')](function(_0x1c0d6c){_0x27f556[_0x26c3('0x43')]=_0x1c0d6c;return _0x27f556;})[_0x26c3('0x26')](respondWithFilteredResult(_0x3dbda5,_0x50cd11))[_0x26c3('0x44')](handleError(_0x3dbda5,null));};exports['show']=function(_0x2f775b,_0x2ecb43){var _0xfb596a={'raw':!![],'where':{'id':_0x2f775b[_0x26c3('0x45')]['id']}},_0x46ebfb={};_0x46ebfb[_0x26c3('0x34')]=_['keys'](db[_0x26c3('0x2c')]['rawAttributes']);_0x46ebfb[_0x26c3('0x31')]=_['keys'](_0x2f775b[_0x26c3('0x31')]);_0x46ebfb[_0x26c3('0x33')]=_['intersection'](_0x46ebfb[_0x26c3('0x34')],_0x46ebfb[_0x26c3('0x31')]);_0xfb596a[_0x26c3('0x36')]=_[_0x26c3('0x46')](_0x46ebfb[_0x26c3('0x34')],qs['fields'](_0x2f775b[_0x26c3('0x31')]['fields']));_0xfb596a[_0x26c3('0x36')]=_0xfb596a['attributes']['length']?_0xfb596a[_0x26c3('0x36')]:_0x46ebfb[_0x26c3('0x34')];if(_0x2f775b[_0x26c3('0x31')]['includeAll']){_0xfb596a[_0x26c3('0x41')]=[{'all':!![]}];}_0xfb596a=_[_0x26c3('0x3d')]({},_0xfb596a,_0x2f775b[_0x26c3('0x3f')]);return db[_0x26c3('0x2c')][_0x26c3('0x47')](_0xfb596a)[_0x26c3('0x26')](handleEntityNotFound(_0x2ecb43,null))['then'](respondWithResult(_0x2ecb43,null))[_0x26c3('0x44')](handleError(_0x2ecb43,null));};exports[_0x26c3('0x48')]=function(_0x378982,_0x133cf7){return db['Cdr'][_0x26c3('0x48')](_0x378982[_0x26c3('0x49')],{})['then'](respondWithResult(_0x133cf7,0xc9))[_0x26c3('0x44')](handleError(_0x133cf7,null));};exports[_0x26c3('0x24')]=function(_0x522fe2,_0x4566ab){if(_0x522fe2['body']['id']){delete _0x522fe2[_0x26c3('0x49')]['id'];}return db[_0x26c3('0x2c')][_0x26c3('0x47')]({'where':{'id':_0x522fe2[_0x26c3('0x45')]['id']}})[_0x26c3('0x26')](handleEntityNotFound(_0x4566ab,null))[_0x26c3('0x26')](saveUpdates(_0x522fe2[_0x26c3('0x49')],null))['then'](respondWithResult(_0x4566ab,null))[_0x26c3('0x44')](handleError(_0x4566ab,null));};exports['destroy']=function(_0x4ada42,_0x3b3e31){return db[_0x26c3('0x2c')][_0x26c3('0x47')]({'where':{'id':_0x4ada42['params']['id']}})['then'](handleEntityNotFound(_0x3b3e31,null))[_0x26c3('0x26')](removeEntity(_0x3b3e31,null))[_0x26c3('0x44')](handleError(_0x3b3e31,null));};exports[_0x26c3('0x4a')]=function(_0x4d1ec7,_0x446453){return db[_0x26c3('0x2c')][_0x26c3('0x4a')]()['then'](respondWithResult(_0x446453,null))[_0x26c3('0x44')](handleError(_0x446453,null));};
\ No newline at end of file
index 7448eff..b1c69ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Cdr','cdr','accountcode','disposition','dst','src','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cdr.attributes','exports'];(function(_0x31f75a,_0x5037d3){var _0xbd788b=function(_0x1968c9){while(--_0x1968c9){_0x31f75a['push'](_0x31f75a['shift']());}};_0xbd788b(++_0x5037d3);}(_0x7a54,0x106));var _0x47a5=function(_0x4b39f5,_0xd516b5){_0x4b39f5=_0x4b39f5-0x0;var _0x4d264c=_0x7a54[_0x4b39f5];return _0x4d264c;};'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':'accountcode','fields':[_0x47a5('0xc')]},{'name':'calldate','fields':['calldate']},{'name':'disposition','fields':[_0x47a5('0xd')]},{'name':_0x47a5('0xe'),'fields':['dst']},{'name':_0x47a5('0xf'),'fields':['src']},{'name':'uniqueid','fields':[_0x47a5('0x10')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x7a54=['Cdr','cdr','accountcode','disposition','dst','src','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cdr.attributes','exports'];(function(_0x48d5d0,_0x573cd4){var _0x474fb6=function(_0x434704){while(--_0x434704){_0x48d5d0['push'](_0x48d5d0['shift']());}};_0x474fb6(++_0x573cd4);}(_0x7a54,0x106));var _0x47a5=function(_0x2351cf,_0x39539b){_0x2351cf=_0x2351cf-0x0;var _0x5c3a50=_0x7a54[_0x2351cf];return _0x5c3a50;};'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':'accountcode','fields':[_0x47a5('0xc')]},{'name':'calldate','fields':['calldate']},{'name':'disposition','fields':[_0x47a5('0xd')]},{'name':_0x47a5('0xe'),'fields':['dst']},{'name':_0x47a5('0xf'),'fields':['src']},{'name':'uniqueid','fields':[_0x47a5('0x10')]}],'timestamps':![]});};
\ No newline at end of file
index 8f38351..2afb372 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1f8=['catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','Cdr,\x20%s,\x20%s','request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xb1f8,0x12d));var _0x8b1f=function(_0x2e1811,_0x28ba13){_0x2e1811=_0x2e1811-0x0;var _0x3957e0=_0xb1f8[_0x2e1811];return _0x3957e0;};'use strict';var _=require('lodash');var util=require(_0x8b1f('0x0'));var moment=require('moment');var BPromise=require(_0x8b1f('0x1'));var rs=require(_0x8b1f('0x2'));var fs=require('fs');var Redis=require(_0x8b1f('0x3'));var db=require(_0x8b1f('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x8b1f('0x5'))(_0x8b1f('0x6'));var config=require(_0x8b1f('0x7'));var jayson=require(_0x8b1f('0x8'));var client=jayson[_0x8b1f('0x9')][_0x8b1f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x91859e,_0x291e86,_0x2ae456){return new BPromise(function(_0x5b2ab5,_0x1f1a09){return client[_0x8b1f('0xb')](_0x91859e,_0x2ae456)['then'](function(_0x2d8390){logger['info'](_0x8b1f('0xc'),_0x291e86,_0x8b1f('0xd'));logger[_0x8b1f('0xe')](_0x8b1f('0xf'),_0x291e86,_0x8b1f('0xd'),JSON['stringify'](_0x2d8390));if(_0x2d8390[_0x8b1f('0x10')]){if(_0x2d8390['error'][_0x8b1f('0x11')]===0x1f4){logger['error'](_0x8b1f('0xc'),_0x291e86,_0x2d8390['error'][_0x8b1f('0x12')]);return _0x1f1a09(_0x2d8390[_0x8b1f('0x10')][_0x8b1f('0x12')]);}logger[_0x8b1f('0x10')](_0x8b1f('0xc'),_0x291e86,_0x2d8390[_0x8b1f('0x10')][_0x8b1f('0x12')]);return _0x5b2ab5(_0x2d8390[_0x8b1f('0x10')]['message']);}else{logger['info'](_0x8b1f('0xc'),_0x291e86,_0x8b1f('0xd'));_0x5b2ab5(_0x2d8390['result'][_0x8b1f('0x12')]);}})[_0x8b1f('0x13')](function(_0x5d031b){logger['error'](_0x8b1f('0xc'),_0x291e86,_0x5d031b);_0x1f1a09(_0x5d031b);});});}
\ No newline at end of file
+var _0xb307=['error','code','message','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','client','request','then','info','Cdr,\x20%s,\x20%s','request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xb307,0xa4));var _0x7b30=function(_0x339eee,_0xccb61b){_0x339eee=_0x339eee-0x0;var _0x319b12=_0xb307[_0x339eee];return _0x319b12;};'use strict';var _=require(_0x7b30('0x0'));var util=require(_0x7b30('0x1'));var moment=require('moment');var BPromise=require(_0x7b30('0x2'));var rs=require(_0x7b30('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7b30('0x4'))['db'];var utils=require(_0x7b30('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x7b30('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x7b30('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32f0d4,_0x31bde1,_0x1f9739){return new BPromise(function(_0x186428,_0x1ff178){return client[_0x7b30('0x8')](_0x32f0d4,_0x1f9739)[_0x7b30('0x9')](function(_0x304972){logger[_0x7b30('0xa')](_0x7b30('0xb'),_0x31bde1,_0x7b30('0xc'));logger[_0x7b30('0xd')](_0x7b30('0xe'),_0x31bde1,_0x7b30('0xc'),JSON[_0x7b30('0xf')](_0x304972));if(_0x304972[_0x7b30('0x10')]){if(_0x304972['error'][_0x7b30('0x11')]===0x1f4){logger[_0x7b30('0x10')](_0x7b30('0xb'),_0x31bde1,_0x304972[_0x7b30('0x10')][_0x7b30('0x12')]);return _0x1ff178(_0x304972['error'][_0x7b30('0x12')]);}logger[_0x7b30('0x10')](_0x7b30('0xb'),_0x31bde1,_0x304972[_0x7b30('0x10')]['message']);return _0x186428(_0x304972['error'][_0x7b30('0x12')]);}else{logger[_0x7b30('0xa')](_0x7b30('0xb'),_0x31bde1,_0x7b30('0xc'));_0x186428(_0x304972['result'][_0x7b30('0x12')]);}})[_0x7b30('0x13')](function(_0x17bb8f){logger[_0x7b30('0x10')](_0x7b30('0xb'),_0x31bde1,_0x17bb8f);_0x1ff178(_0x17bb8f);});});}
\ No newline at end of file
index 6677512..02de4ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x4214ae,_0x2dd218){var _0x1f15ec=function(_0x398062){while(--_0x398062){_0x4214ae['push'](_0x4214ae['shift']());}};_0x1f15ec(++_0x2dd218);}(_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
+var _0xa9e0=['isAuthenticated','create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cdr.controller','get','index','/describe','show','post'];(function(_0x3c0dcc,_0x18c419){var _0x1a224c=function(_0x238ae7){while(--_0x238ae7){_0x3c0dcc['push'](_0x3c0dcc['shift']());}};_0x1a224c(++_0x18c419);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xa9e0[_0x3054be];return _0x3df150;};'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('0xc')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')](_0x0a9e('0x10'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);module[_0x0a9e('0x12')]=router;
\ No newline at end of file
index 83d5bdb..7e1809f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x476e=['exports','INTEGER','STRING','TEXT','*,*,*,*','sequelize'];(function(_0x4abb2f,_0xa69cb4){var _0x14cbad=function(_0x5c1d65){while(--_0x5c1d65){_0x4abb2f['push'](_0x4abb2f['shift']());}};_0x14cbad(++_0xa69cb4);}(_0x476e,0xa1));var _0xe476=function(_0xa82a03,_0x560a8b){_0xa82a03=_0xa82a03-0x0;var _0x3ed242=_0x476e[_0xa82a03];return _0x3ed242;};'use strict';var Sequelize=require(_0xe476('0x0'));module[_0xe476('0x1')]={'priority':{'type':Sequelize[_0xe476('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xe476('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xe476('0x4')]()},'description':{'type':Sequelize[_0xe476('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xe476('0x5')}};
\ No newline at end of file
+var _0xeb37=['*,*,*,*','sequelize','INTEGER','STRING','noop','TEXT'];(function(_0x549d57,_0x6b8598){var _0x330291=function(_0x53483d){while(--_0x53483d){_0x549d57['push'](_0x549d57['shift']());}};_0x330291(++_0x6b8598);}(_0xeb37,0x18d));var _0x7eb3=function(_0x2d126d,_0x235723){_0x2d126d=_0x2d126d-0x0;var _0x4e9654=_0xeb37[_0x2d126d];return _0x4e9654;};'use strict';var Sequelize=require(_0x7eb3('0x0'));module['exports']={'priority':{'type':Sequelize[_0x7eb3('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x7eb3('0x2')],'allowNull':![],'defaultValue':_0x7eb3('0x3')},'appdata':{'type':Sequelize[_0x7eb3('0x4')]()},'description':{'type':Sequelize[_0x7eb3('0x2')]},'interval':{'type':Sequelize[_0x7eb3('0x2')],'defaultValue':_0x7eb3('0x5')}};
\ No newline at end of file
index 8bfe02d..71a23cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84e1=['fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','undefined','offset','count','limit','apply','save','update','then','destroy','end','sendStatus','error','name','send','show','params','model','keys','ChatApplication','rawAttributes','query','intersection','attributes','length','includeAll','include','merge','options','find','catch','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs'];(function(_0x32e274,_0x1cd585){var _0x579b6e=function(_0x4aab2e){while(--_0x4aab2e){_0x32e274['push'](_0x32e274['shift']());}};_0x579b6e(++_0x1cd585);}(_0x84e1,0x1dc));var _0x184e=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0x84e1[_0x68c979];return _0x4f0001;};'use strict';var emlformat=require(_0x184e('0x0'));var rimraf=require(_0x184e('0x1'));var zipdir=require(_0x184e('0x2'));var jsonpatch=require(_0x184e('0x3'));var rp=require(_0x184e('0x4'));var moment=require(_0x184e('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x184e('0x6'));var util=require(_0x184e('0x7'));var path=require(_0x184e('0x8'));var sox=require(_0x184e('0x9'));var csv=require(_0x184e('0xa'));var ejs=require(_0x184e('0xb'));var fs=require('fs');var fs_extra=require(_0x184e('0xc'));var _=require('lodash');var squel=require(_0x184e('0xd'));var crypto=require(_0x184e('0xe'));var jsforce=require(_0x184e('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x184e('0xa'));var querystring=require(_0x184e('0x10'));var Papa=require(_0x184e('0x11'));var Redis=require(_0x184e('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x184e('0x13'));var as=require(_0x184e('0x14'));var hardwareService=require(_0x184e('0x15'));var logger=require(_0x184e('0x16'))(_0x184e('0x17'));var utils=require(_0x184e('0x18'));var config=require(_0x184e('0x19'));var licenseUtil=require(_0x184e('0x1a'));var db=require(_0x184e('0x1b'))['db'];function respondWithStatusCode(_0x7acac7,_0x20abe6){_0x20abe6=_0x20abe6||0xcc;return function(_0x13e59e){if(_0x13e59e){return _0x7acac7['sendStatus'](_0x20abe6);}return _0x7acac7[_0x184e('0x1c')](_0x20abe6)['end']();};}function respondWithResult(_0x230abf,_0x15dfad){_0x15dfad=_0x15dfad||0xc8;return function(_0x583745){if(_0x583745){return _0x230abf[_0x184e('0x1c')](_0x15dfad)[_0x184e('0x1d')](_0x583745);}};}function respondWithFilteredResult(_0x446813,_0x28047d){return function(_0x374153){if(_0x374153){var _0x10b179=typeof _0x28047d['offset']===_0x184e('0x1e')&&typeof _0x28047d['limit']===_0x184e('0x1e');var _0x4ce10a=_0x374153['count'];var _0x2625a7=_0x10b179?0x0:_0x28047d[_0x184e('0x1f')];var _0x28ab7f=_0x10b179?_0x374153[_0x184e('0x20')]:_0x28047d[_0x184e('0x1f')]+_0x28047d[_0x184e('0x21')];var _0x4628ab;if(_0x28ab7f>=_0x4ce10a){_0x28ab7f=_0x4ce10a;_0x4628ab=0xc8;}else{_0x4628ab=0xce;}_0x446813[_0x184e('0x1c')](_0x4628ab);return _0x446813['set']('Content-Range',_0x2625a7+'-'+_0x28ab7f+'/'+_0x4ce10a)[_0x184e('0x1d')](_0x374153);}return null;};}function patchUpdates(_0x274c30){return function(_0x192892){try{jsonpatch[_0x184e('0x22')](_0x192892,_0x274c30,!![]);}catch(_0x26c272){return BPromise['reject'](_0x26c272);}return _0x192892[_0x184e('0x23')]();};}function saveUpdates(_0x3c1fd9,_0x240026){return function(_0x245a67){if(_0x245a67){return _0x245a67[_0x184e('0x24')](_0x3c1fd9)[_0x184e('0x25')](function(_0x21da6a){return _0x21da6a;});}return null;};}function removeEntity(_0x71ac9c,_0x1bb97c){return function(_0x1f8d96){if(_0x1f8d96){return _0x1f8d96[_0x184e('0x26')]()['then'](function(){_0x71ac9c[_0x184e('0x1c')](0xcc)[_0x184e('0x27')]();});}};}function handleEntityNotFound(_0x5f24cf,_0x173317){return function(_0x56b7c6){if(!_0x56b7c6){_0x5f24cf[_0x184e('0x28')](0x194);}return _0x56b7c6;};}function handleError(_0x43637a,_0x3a8f05){_0x3a8f05=_0x3a8f05||0x1f4;return function(_0x4a96c2){logger[_0x184e('0x29')](_0x4a96c2['stack']);if(_0x4a96c2[_0x184e('0x2a')]){delete _0x4a96c2[_0x184e('0x2a')];}_0x43637a['status'](_0x3a8f05)[_0x184e('0x2b')](_0x4a96c2);};}exports[_0x184e('0x2c')]=function(_0x42a11e,_0x424f62){var _0x5600cc={'raw':!![],'where':{'id':_0x42a11e[_0x184e('0x2d')]['id']}},_0x5753ea={};_0x5753ea[_0x184e('0x2e')]=_[_0x184e('0x2f')](db[_0x184e('0x30')][_0x184e('0x31')]);_0x5753ea[_0x184e('0x32')]=_[_0x184e('0x2f')](_0x42a11e[_0x184e('0x32')]);_0x5753ea['filters']=_[_0x184e('0x33')](_0x5753ea[_0x184e('0x2e')],_0x5753ea['query']);_0x5600cc[_0x184e('0x34')]=_[_0x184e('0x33')](_0x5753ea[_0x184e('0x2e')],qs['fields'](_0x42a11e[_0x184e('0x32')]['fields']));_0x5600cc['attributes']=_0x5600cc[_0x184e('0x34')][_0x184e('0x35')]?_0x5600cc['attributes']:_0x5753ea[_0x184e('0x2e')];if(_0x42a11e[_0x184e('0x32')][_0x184e('0x36')]){_0x5600cc[_0x184e('0x37')]=[{'all':!![]}];}_0x5600cc=_[_0x184e('0x38')]({},_0x5600cc,_0x42a11e[_0x184e('0x39')]);return db[_0x184e('0x30')][_0x184e('0x3a')](_0x5600cc)[_0x184e('0x25')](handleEntityNotFound(_0x424f62,null))['then'](respondWithResult(_0x424f62,null))[_0x184e('0x3b')](handleError(_0x424f62,null));};exports[_0x184e('0x24')]=function(_0x342274,_0x5b90cd){if(_0x342274['body']['id']){delete _0x342274[_0x184e('0x3c')]['id'];}return db[_0x184e('0x30')][_0x184e('0x3a')]({'where':{'id':_0x342274[_0x184e('0x2d')]['id']}})[_0x184e('0x25')](handleEntityNotFound(_0x5b90cd,null))[_0x184e('0x25')](saveUpdates(_0x342274['body'],null))[_0x184e('0x25')](respondWithResult(_0x5b90cd,null))[_0x184e('0x3b')](handleError(_0x5b90cd,null));};exports[_0x184e('0x26')]=function(_0x100c08,_0x457f79){return db[_0x184e('0x30')][_0x184e('0x3a')]({'where':{'id':_0x100c08[_0x184e('0x2d')]['id']}})['then'](handleEntityNotFound(_0x457f79,null))[_0x184e('0x25')](removeEntity(_0x457f79,null))[_0x184e('0x3b')](handleError(_0x457f79,null));};
\ No newline at end of file
+var _0xac72=['body','find','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','error','stack','name','send','params','model','keys','ChatApplication','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','include','merge','options','catch'];(function(_0x52cbab,_0x243e32){var _0x5eb55a=function(_0x381399){while(--_0x381399){_0x52cbab['push'](_0x52cbab['shift']());}};_0x5eb55a(++_0x243e32);}(_0xac72,0x1eb));var _0x2ac7=function(_0x2fc95b,_0x2ed4f){_0x2fc95b=_0x2fc95b-0x0;var _0x631439=_0xac72[_0x2fc95b];return _0x631439;};'use strict';var emlformat=require(_0x2ac7('0x0'));var rimraf=require(_0x2ac7('0x1'));var zipdir=require(_0x2ac7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2ac7('0x3'));var moment=require(_0x2ac7('0x4'));var BPromise=require(_0x2ac7('0x5'));var Mustache=require(_0x2ac7('0x6'));var util=require(_0x2ac7('0x7'));var path=require(_0x2ac7('0x8'));var sox=require(_0x2ac7('0x9'));var csv=require(_0x2ac7('0xa'));var ejs=require(_0x2ac7('0xb'));var fs=require('fs');var fs_extra=require(_0x2ac7('0xc'));var _=require(_0x2ac7('0xd'));var squel=require(_0x2ac7('0xe'));var crypto=require(_0x2ac7('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x2ac7('0x10'));var toCsv=require(_0x2ac7('0xa'));var querystring=require('querystring');var Papa=require(_0x2ac7('0x11'));var Redis=require(_0x2ac7('0x12'));var authService=require(_0x2ac7('0x13'));var qs=require(_0x2ac7('0x14'));var as=require(_0x2ac7('0x15'));var hardwareService=require(_0x2ac7('0x16'));var logger=require(_0x2ac7('0x17'))('api');var utils=require(_0x2ac7('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x2ac7('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1f054d,_0x80af2c){_0x80af2c=_0x80af2c||0xcc;return function(_0x4ddc6c){if(_0x4ddc6c){return _0x1f054d['sendStatus'](_0x80af2c);}return _0x1f054d[_0x2ac7('0x1a')](_0x80af2c)[_0x2ac7('0x1b')]();};}function respondWithResult(_0x49fd6d,_0x98d965){_0x98d965=_0x98d965||0xc8;return function(_0x16ef90){if(_0x16ef90){return _0x49fd6d['status'](_0x98d965)[_0x2ac7('0x1c')](_0x16ef90);}};}function respondWithFilteredResult(_0xb7b036,_0x4cc90a){return function(_0x48c250){if(_0x48c250){var _0x150ecc=typeof _0x4cc90a[_0x2ac7('0x1d')]===_0x2ac7('0x1e')&&typeof _0x4cc90a[_0x2ac7('0x1f')]==='undefined';var _0x17932f=_0x48c250[_0x2ac7('0x20')];var _0x206d33=_0x150ecc?0x0:_0x4cc90a[_0x2ac7('0x1d')];var _0x30378f=_0x150ecc?_0x48c250[_0x2ac7('0x20')]:_0x4cc90a[_0x2ac7('0x1d')]+_0x4cc90a[_0x2ac7('0x1f')];var _0x44188c;if(_0x30378f>=_0x17932f){_0x30378f=_0x17932f;_0x44188c=0xc8;}else{_0x44188c=0xce;}_0xb7b036[_0x2ac7('0x1a')](_0x44188c);return _0xb7b036[_0x2ac7('0x21')](_0x2ac7('0x22'),_0x206d33+'-'+_0x30378f+'/'+_0x17932f)[_0x2ac7('0x1c')](_0x48c250);}return null;};}function patchUpdates(_0x16907c){return function(_0x57941){try{jsonpatch['apply'](_0x57941,_0x16907c,!![]);}catch(_0x4d4db2){return BPromise['reject'](_0x4d4db2);}return _0x57941[_0x2ac7('0x23')]();};}function saveUpdates(_0x5556cd,_0x1c88f6){return function(_0x3cb589){if(_0x3cb589){return _0x3cb589[_0x2ac7('0x24')](_0x5556cd)[_0x2ac7('0x25')](function(_0x4d6d65){return _0x4d6d65;});}return null;};}function removeEntity(_0x12813b,_0x2821e0){return function(_0x325818){if(_0x325818){return _0x325818['destroy']()[_0x2ac7('0x25')](function(){_0x12813b[_0x2ac7('0x1a')](0xcc)[_0x2ac7('0x1b')]();});}};}function handleEntityNotFound(_0x5a8c01,_0x4d5518){return function(_0xea00e2){if(!_0xea00e2){_0x5a8c01['sendStatus'](0x194);}return _0xea00e2;};}function handleError(_0x1a2ac5,_0x5f610e){_0x5f610e=_0x5f610e||0x1f4;return function(_0x1dbcbd){logger[_0x2ac7('0x26')](_0x1dbcbd[_0x2ac7('0x27')]);if(_0x1dbcbd[_0x2ac7('0x28')]){delete _0x1dbcbd[_0x2ac7('0x28')];}_0x1a2ac5['status'](_0x5f610e)[_0x2ac7('0x29')](_0x1dbcbd);};}exports['show']=function(_0x2f4326,_0x39179d){var _0x53e46d={'raw':!![],'where':{'id':_0x2f4326[_0x2ac7('0x2a')]['id']}},_0x3fac0e={};_0x3fac0e[_0x2ac7('0x2b')]=_[_0x2ac7('0x2c')](db[_0x2ac7('0x2d')][_0x2ac7('0x2e')]);_0x3fac0e[_0x2ac7('0x2f')]=_[_0x2ac7('0x2c')](_0x2f4326['query']);_0x3fac0e[_0x2ac7('0x30')]=_[_0x2ac7('0x31')](_0x3fac0e[_0x2ac7('0x2b')],_0x3fac0e['query']);_0x53e46d[_0x2ac7('0x32')]=_['intersection'](_0x3fac0e[_0x2ac7('0x2b')],qs[_0x2ac7('0x33')](_0x2f4326[_0x2ac7('0x2f')][_0x2ac7('0x33')]));_0x53e46d[_0x2ac7('0x32')]=_0x53e46d[_0x2ac7('0x32')][_0x2ac7('0x34')]?_0x53e46d[_0x2ac7('0x32')]:_0x3fac0e['model'];if(_0x2f4326[_0x2ac7('0x2f')][_0x2ac7('0x35')]){_0x53e46d[_0x2ac7('0x36')]=[{'all':!![]}];}_0x53e46d=_[_0x2ac7('0x37')]({},_0x53e46d,_0x2f4326[_0x2ac7('0x38')]);return db[_0x2ac7('0x2d')]['find'](_0x53e46d)['then'](handleEntityNotFound(_0x39179d,null))[_0x2ac7('0x25')](respondWithResult(_0x39179d,null))[_0x2ac7('0x39')](handleError(_0x39179d,null));};exports[_0x2ac7('0x24')]=function(_0x5129fd,_0x4b3c6a){if(_0x5129fd[_0x2ac7('0x3a')]['id']){delete _0x5129fd[_0x2ac7('0x3a')]['id'];}return db['ChatApplication'][_0x2ac7('0x3b')]({'where':{'id':_0x5129fd[_0x2ac7('0x2a')]['id']}})[_0x2ac7('0x25')](handleEntityNotFound(_0x4b3c6a,null))['then'](saveUpdates(_0x5129fd['body'],null))[_0x2ac7('0x25')](respondWithResult(_0x4b3c6a,null))[_0x2ac7('0x39')](handleError(_0x4b3c6a,null));};exports[_0x2ac7('0x3c')]=function(_0x384b9b,_0x5d4492){return db[_0x2ac7('0x2d')][_0x2ac7('0x3b')]({'where':{'id':_0x384b9b[_0x2ac7('0x2a')]['id']}})[_0x2ac7('0x25')](handleEntityNotFound(_0x5d4492,null))['then'](removeEntity(_0x5d4492,null))['catch'](handleError(_0x5d4492,null));};
\ No newline at end of file
index 36237df..470cd2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36f4=['../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./chatApplication.attributes','exports','define','chat_applications','utf8mb4_unicode_ci','util'];(function(_0x3b0f37,_0x2fb980){var _0x147dc4=function(_0x315634){while(--_0x315634){_0x3b0f37['push'](_0x3b0f37['shift']());}};_0x147dc4(++_0x2fb980);}(_0x36f4,0xb3));var _0x436f=function(_0x26edc2,_0xf069f4){_0x26edc2=_0x26edc2-0x0;var _0x4c17e7=_0x36f4[_0x26edc2];return _0x4c17e7;};'use strict';var _=require('lodash');var util=require(_0x436f('0x0'));var logger=require(_0x436f('0x1'))(_0x436f('0x2'));var moment=require(_0x436f('0x3'));var BPromise=require(_0x436f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x436f('0x5'));var config=require(_0x436f('0x6'));var attributes=require(_0x436f('0x7'));module[_0x436f('0x8')]=function(_0x59cfcf,_0x5f31ff){return _0x59cfcf[_0x436f('0x9')]('ChatApplication',attributes,{'tableName':_0x436f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x436f('0xb')});};
\ No newline at end of file
+var _0x6d9f=['chat_applications','utf8mb4','utf8mb4_unicode_ci','api','moment','request-promise','path','rimraf','./chatApplication.attributes','ChatApplication'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0x6d9f,0x16b));var _0xf6d9=function(_0x20d353,_0x2e2108){_0x20d353=_0x20d353-0x0;var _0x542001=_0x6d9f[_0x20d353];return _0x542001;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xf6d9('0x0'));var moment=require(_0xf6d9('0x1'));var BPromise=require('bluebird');var rp=require(_0xf6d9('0x2'));var fs=require('fs');var path=require(_0xf6d9('0x3'));var rimraf=require(_0xf6d9('0x4'));var config=require('../../config/environment');var attributes=require(_0xf6d9('0x5'));module['exports']=function(_0x592a43,_0x2ad980){return _0x592a43['define'](_0xf6d9('0x6'),attributes,{'tableName':_0xf6d9('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf6d9('0x8'),'collate':_0xf6d9('0x9')});};
\ No newline at end of file
index 99a515d..25583d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe47e=['error','code','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','ChatApplication,\x20%s,\x20%s','request\x20sent'];(function(_0x43d739,_0x3f9fe7){var _0x5f22e3=function(_0x10919e){while(--_0x10919e){_0x43d739['push'](_0x43d739['shift']());}};_0x5f22e3(++_0x3f9fe7);}(_0xe47e,0x17e));var _0xee47=function(_0x2ef8f1,_0x1280a3){_0x2ef8f1=_0x2ef8f1-0x0;var _0x17498d=_0xe47e[_0x2ef8f1];return _0x17498d;};'use strict';var _=require(_0xee47('0x0'));var util=require(_0xee47('0x1'));var moment=require(_0xee47('0x2'));var BPromise=require('bluebird');var rs=require(_0xee47('0x3'));var fs=require('fs');var Redis=require(_0xee47('0x4'));var db=require(_0xee47('0x5'))['db'];var utils=require(_0xee47('0x6'));var logger=require(_0xee47('0x7'))(_0xee47('0x8'));var config=require(_0xee47('0x9'));var jayson=require(_0xee47('0xa'));var client=jayson[_0xee47('0xb')][_0xee47('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x296387,_0x349809,_0x338333){return new BPromise(function(_0xd02748,_0x173ef9){return client[_0xee47('0xd')](_0x296387,_0x338333)['then'](function(_0xd550df){logger[_0xee47('0xe')](_0xee47('0xf'),_0x349809,_0xee47('0x10'));logger['debug']('ChatApplication,\x20%s,\x20%s,\x20%s',_0x349809,_0xee47('0x10'),JSON['stringify'](_0xd550df));if(_0xd550df[_0xee47('0x11')]){if(_0xd550df['error'][_0xee47('0x12')]===0x1f4){logger[_0xee47('0x11')](_0xee47('0xf'),_0x349809,_0xd550df[_0xee47('0x11')][_0xee47('0x13')]);return _0x173ef9(_0xd550df[_0xee47('0x11')][_0xee47('0x13')]);}logger[_0xee47('0x11')]('ChatApplication,\x20%s,\x20%s',_0x349809,_0xd550df[_0xee47('0x11')][_0xee47('0x13')]);return _0xd02748(_0xd550df['error'][_0xee47('0x13')]);}else{logger[_0xee47('0xe')](_0xee47('0xf'),_0x349809,_0xee47('0x10'));_0xd02748(_0xd550df[_0xee47('0x14')][_0xee47('0x13')]);}})['catch'](function(_0x2d8651){logger[_0xee47('0x11')]('ChatApplication,\x20%s,\x20%s',_0x349809,_0x2d8651);_0x173ef9(_0x2d8651);});});}
\ No newline at end of file
+var _0xb7dd=['request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','error','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','ChatApplication,\x20%s,\x20%s'];(function(_0x45fcb3,_0x1381c4){var _0x506991=function(_0x6dc617){while(--_0x6dc617){_0x45fcb3['push'](_0x45fcb3['shift']());}};_0x506991(++_0x1381c4);}(_0xb7dd,0x1bf));var _0xdb7d=function(_0x46a559,_0x2dd5e6){_0x46a559=_0x46a559-0x0;var _0x31c613=_0xb7dd[_0x46a559];return _0x31c613;};'use strict';var _=require('lodash');var util=require(_0xdb7d('0x0'));var moment=require(_0xdb7d('0x1'));var BPromise=require(_0xdb7d('0x2'));var rs=require(_0xdb7d('0x3'));var fs=require('fs');var Redis=require(_0xdb7d('0x4'));var db=require(_0xdb7d('0x5'))['db'];var utils=require(_0xdb7d('0x6'));var logger=require(_0xdb7d('0x7'))(_0xdb7d('0x8'));var config=require(_0xdb7d('0x9'));var jayson=require(_0xdb7d('0xa'));var client=jayson['client'][_0xdb7d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x36b164,_0x5ee352,_0x47e123){return new BPromise(function(_0x45cff0,_0x53cbe9){return client[_0xdb7d('0xc')](_0x36b164,_0x47e123)['then'](function(_0x1ce89c){logger[_0xdb7d('0xd')](_0xdb7d('0xe'),_0x5ee352,_0xdb7d('0xf'));logger[_0xdb7d('0x10')](_0xdb7d('0x11'),_0x5ee352,_0xdb7d('0xf'),JSON['stringify'](_0x1ce89c));if(_0x1ce89c[_0xdb7d('0x12')]){if(_0x1ce89c[_0xdb7d('0x12')]['code']===0x1f4){logger[_0xdb7d('0x12')]('ChatApplication,\x20%s,\x20%s',_0x5ee352,_0x1ce89c[_0xdb7d('0x12')][_0xdb7d('0x13')]);return _0x53cbe9(_0x1ce89c[_0xdb7d('0x12')]['message']);}logger[_0xdb7d('0x12')]('ChatApplication,\x20%s,\x20%s',_0x5ee352,_0x1ce89c[_0xdb7d('0x12')][_0xdb7d('0x13')]);return _0x45cff0(_0x1ce89c[_0xdb7d('0x12')][_0xdb7d('0x13')]);}else{logger[_0xdb7d('0xd')]('ChatApplication,\x20%s,\x20%s',_0x5ee352,_0xdb7d('0xf'));_0x45cff0(_0x1ce89c['result'][_0xdb7d('0x13')]);}})[_0xdb7d('0x14')](function(_0x4ccd69){logger[_0xdb7d('0x12')]('ChatApplication,\x20%s,\x20%s',_0x5ee352,_0x4ccd69);_0x53cbe9(_0x4ccd69);});});}
\ No newline at end of file
index 73d0577..aad4199 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd14c=['./chatApplication.controller','get','isAuthenticated','show','put','update','delete','/:id','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x16647f,_0x4c57b2){var _0x1f4da6=function(_0x5496bb){while(--_0x5496bb){_0x16647f['push'](_0x16647f['shift']());}};_0x1f4da6(++_0x4c57b2);}(_0xd14c,0x183));var _0xcd14=function(_0x3b9935,_0x405a97){_0x3b9935=_0x3b9935-0x0;var _0xd9bb00=_0xd14c[_0x3b9935];return _0xd9bb00;};'use strict';var multer=require(_0xcd14('0x0'));var util=require(_0xcd14('0x1'));var path=require(_0xcd14('0x2'));var timeout=require('connect-timeout');var express=require(_0xcd14('0x3'));var router=express[_0xcd14('0x4')]();var fs_extra=require(_0xcd14('0x5'));var auth=require(_0xcd14('0x6'));var interaction=require(_0xcd14('0x7'));var config=require(_0xcd14('0x8'));var controller=require(_0xcd14('0x9'));router[_0xcd14('0xa')]('/:id',auth[_0xcd14('0xb')](),controller[_0xcd14('0xc')]);router[_0xcd14('0xd')]('/:id',auth['isAuthenticated'](),controller[_0xcd14('0xe')]);router[_0xcd14('0xf')](_0xcd14('0x10'),auth[_0xcd14('0xb')](),controller['destroy']);module[_0xcd14('0x11')]=router;
\ No newline at end of file
+var _0x9328=['destroy','exports','path','Router','../../components/auth/service','../../components/interaction/service','get','/:id','isAuthenticated','show','put','delete'];(function(_0xcd0918,_0x56bdf9){var _0x250704=function(_0x56788e){while(--_0x56788e){_0xcd0918['push'](_0xcd0918['shift']());}};_0x250704(++_0x56bdf9);}(_0x9328,0xf2));var _0x8932=function(_0x5254d8,_0x2ce5dc){_0x5254d8=_0x5254d8-0x0;var _0x326c93=_0x9328[_0x5254d8];return _0x326c93;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x8932('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x8932('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0x8932('0x2'));var interaction=require(_0x8932('0x3'));var config=require('../../config/environment');var controller=require('./chatApplication.controller');router[_0x8932('0x4')](_0x8932('0x5'),auth[_0x8932('0x6')](),controller[_0x8932('0x7')]);router[_0x8932('0x8')](_0x8932('0x5'),auth[_0x8932('0x6')](),controller['update']);router[_0x8932('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x8932('0xa')]);module[_0x8932('0xb')]=router;
\ No newline at end of file
index 47731f0..fc352a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb37=['BOOLEAN','sequelize','exports','STRING'];(function(_0x518b8f,_0x476de4){var _0x51cece=function(_0x13e53e){while(--_0x13e53e){_0x518b8f['push'](_0x518b8f['shift']());}};_0x51cece(++_0x476de4);}(_0xeb37,0x1ad));var _0x7eb3=function(_0x42fdec,_0x1405f9){_0x42fdec=_0x42fdec-0x0;var _0x4eaa79=_0xeb37[_0x42fdec];return _0x4eaa79;};'use strict';var Sequelize=require(_0x7eb3('0x0'));module[_0x7eb3('0x1')]={'name':{'type':Sequelize[_0x7eb3('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x7eb3('0x2')]},'write':{'type':Sequelize[_0x7eb3('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xae59=['STRING','sequelize'];(function(_0x321227,_0x261976){var _0x1dc172=function(_0x1d3e7a){while(--_0x1d3e7a){_0x321227['push'](_0x321227['shift']());}};_0x1dc172(++_0x261976);}(_0xae59,0x8d));var _0x9ae5=function(_0x2f8564,_0x35f38f){_0x2f8564=_0x2f8564-0x0;var _0x58cf05=_0xae59[_0x2f8564];return _0x58cf05;};'use strict';var Sequelize=require(_0x9ae5('0x0'));module['exports']={'name':{'type':Sequelize[_0x9ae5('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x9ae5('0x1')]},'write':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 13b98dc..a7c6bb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x844c=['merge','then','includeAll','include','findAll','rows','catch','rawAttributes','keys','find','create','body','params','getUnread','ChatInternalMessage','user','toInteger','addMembers','omit','getMembers','findOne','options','removeMembers','ids','addMessage','ChatGroupId','getMessages','$gte','split','YYYY-MM-DD\x20HH:mm:ss','eml-format','rimraf','zip-dir','request-promise','moment','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','localhost','socket.io-emitter','./chatGroup.socket','register','sendStatus','status','offset','undefined','limit','count','set','json','reject','save','update','destroy','error','stack','name','index','ChatGroup','fieldName','type','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL'];(function(_0xca04ff,_0xcb449f){var _0x6b547=function(_0xc91e4b){while(--_0xc91e4b){_0xca04ff['push'](_0xca04ff['shift']());}};_0x6b547(++_0xcb449f);}(_0x844c,0xd8));var _0xc844=function(_0x245690,_0x3bf938){_0x245690=_0x245690-0x0;var _0x3fb9a4=_0x844c[_0x245690];return _0x3fb9a4;};'use strict';var emlformat=require(_0xc844('0x0'));var rimraf=require(_0xc844('0x1'));var zipdir=require(_0xc844('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc844('0x3'));var moment=require(_0xc844('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xc844('0x5'));var path=require(_0xc844('0x6'));var sox=require(_0xc844('0x7'));var csv=require(_0xc844('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc844('0x9'));var _=require('lodash');var squel=require(_0xc844('0xa'));var crypto=require(_0xc844('0xb'));var jsforce=require(_0xc844('0xc'));var deskjs=require(_0xc844('0xd'));var toCsv=require(_0xc844('0x8'));var querystring=require(_0xc844('0xe'));var Papa=require(_0xc844('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xc844('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc844('0x11'));var logger=require(_0xc844('0x12'))('api');var utils=require(_0xc844('0x13'));var config=require(_0xc844('0x14'));var licenseUtil=require(_0xc844('0x15'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xc844('0x16')](config[_0xc844('0x17')],{'host':_0xc844('0x18'),'port':0x18eb});var socket=require(_0xc844('0x19'))(new Redis(config[_0xc844('0x17')]));require(_0xc844('0x1a'))[_0xc844('0x1b')](socket);function respondWithStatusCode(_0x56bd50,_0x5cc2d0){_0x5cc2d0=_0x5cc2d0||0xcc;return function(_0x33d68c){if(_0x33d68c){return _0x56bd50[_0xc844('0x1c')](_0x5cc2d0);}return _0x56bd50['status'](_0x5cc2d0)['end']();};}function respondWithResult(_0x36d7e4,_0x51b60d){_0x51b60d=_0x51b60d||0xc8;return function(_0x3b1376){if(_0x3b1376){return _0x36d7e4[_0xc844('0x1d')](_0x51b60d)['json'](_0x3b1376);}};}function respondWithFilteredResult(_0x35db6d,_0x460236){return function(_0x34f955){if(_0x34f955){var _0x53b173=typeof _0x460236[_0xc844('0x1e')]===_0xc844('0x1f')&&typeof _0x460236[_0xc844('0x20')]===_0xc844('0x1f');var _0xc76ec3=_0x34f955[_0xc844('0x21')];var _0x5d03d5=_0x53b173?0x0:_0x460236[_0xc844('0x1e')];var _0x1878fa=_0x53b173?_0x34f955['count']:_0x460236[_0xc844('0x1e')]+_0x460236[_0xc844('0x20')];var _0x5568f9;if(_0x1878fa>=_0xc76ec3){_0x1878fa=_0xc76ec3;_0x5568f9=0xc8;}else{_0x5568f9=0xce;}_0x35db6d['status'](_0x5568f9);return _0x35db6d[_0xc844('0x22')]('Content-Range',_0x5d03d5+'-'+_0x1878fa+'/'+_0xc76ec3)[_0xc844('0x23')](_0x34f955);}return null;};}function patchUpdates(_0x4464ab){return function(_0x5b31ec){try{jsonpatch['apply'](_0x5b31ec,_0x4464ab,!![]);}catch(_0x1166f5){return BPromise[_0xc844('0x24')](_0x1166f5);}return _0x5b31ec[_0xc844('0x25')]();};}function saveUpdates(_0x1b1fb7,_0x2cfb13){return function(_0xeae54f){if(_0xeae54f){return _0xeae54f[_0xc844('0x26')](_0x1b1fb7)['then'](function(_0x5562b8){return _0x5562b8;});}return null;};}function removeEntity(_0x21a2b8,_0x444fc5){return function(_0x3f5387){if(_0x3f5387){return _0x3f5387[_0xc844('0x27')]()['then'](function(){_0x21a2b8[_0xc844('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x192950,_0x480bbf){return function(_0x32ac64){if(!_0x32ac64){_0x192950[_0xc844('0x1c')](0x194);}return _0x32ac64;};}function handleError(_0x4973ca,_0x6fb0c7){_0x6fb0c7=_0x6fb0c7||0x1f4;return function(_0x2d4b41){logger[_0xc844('0x28')](_0x2d4b41[_0xc844('0x29')]);if(_0x2d4b41['name']){delete _0x2d4b41[_0xc844('0x2a')];}_0x4973ca['status'](_0x6fb0c7)['send'](_0x2d4b41);};}exports[_0xc844('0x2b')]=function(_0xde4b8a,_0x100f70){var _0x250669={},_0x2bd243={},_0x48af04={'count':0x0,'rows':[]};var _0x259ca0=_['map'](db[_0xc844('0x2c')]['rawAttributes'],function(_0x19d249){return{'name':_0x19d249[_0xc844('0x2d')],'type':_0x19d249[_0xc844('0x2e')]['key']};});_0x2bd243[_0xc844('0x2f')]=_[_0xc844('0x30')](_0x259ca0,_0xc844('0x2a'));_0x2bd243['query']=_['keys'](_0xde4b8a[_0xc844('0x31')]);_0x2bd243[_0xc844('0x32')]=_[_0xc844('0x33')](_0x2bd243[_0xc844('0x2f')],_0x2bd243[_0xc844('0x31')]);_0x250669[_0xc844('0x34')]=_[_0xc844('0x33')](_0x2bd243[_0xc844('0x2f')],qs[_0xc844('0x35')](_0xde4b8a[_0xc844('0x31')][_0xc844('0x35')]));_0x250669[_0xc844('0x34')]=_0x250669[_0xc844('0x34')][_0xc844('0x36')]?_0x250669[_0xc844('0x34')]:_0x2bd243['model'];if(!_0xde4b8a[_0xc844('0x31')][_0xc844('0x37')](_0xc844('0x38'))){_0x250669['limit']=qs[_0xc844('0x20')](_0xde4b8a['query'][_0xc844('0x20')]);_0x250669[_0xc844('0x1e')]=qs['offset'](_0xde4b8a[_0xc844('0x31')][_0xc844('0x1e')]);}_0x250669[_0xc844('0x39')]=qs[_0xc844('0x3a')](_0xde4b8a[_0xc844('0x31')][_0xc844('0x3a')]);_0x250669[_0xc844('0x3b')]=qs['filters'](_[_0xc844('0x3c')](_0xde4b8a['query'],_0x2bd243[_0xc844('0x32')]),_0x259ca0);if(_0xde4b8a[_0xc844('0x31')][_0xc844('0x3d')]){_0x250669['where']=_['merge'](_0x250669[_0xc844('0x3b')],{'$or':_['map'](_0x259ca0,function(_0x4dd10c){if(_0x4dd10c['type']!==_0xc844('0x3e')){var _0x2b4614={};_0x2b4614[_0x4dd10c[_0xc844('0x2a')]]={'$like':'%'+_0xde4b8a[_0xc844('0x31')][_0xc844('0x3d')]+'%'};return _0x2b4614;}})});}_0x250669=_[_0xc844('0x3f')]({},_0x250669,_0xde4b8a['options']);var _0x34c7b7={'where':_0x250669[_0xc844('0x3b')]};return db[_0xc844('0x2c')][_0xc844('0x21')](_0x34c7b7)[_0xc844('0x40')](function(_0x54eb0d){_0x48af04['count']=_0x54eb0d;if(_0xde4b8a[_0xc844('0x31')][_0xc844('0x41')]){_0x250669[_0xc844('0x42')]=[{'all':!![]}];}return db[_0xc844('0x2c')][_0xc844('0x43')](_0x250669);})[_0xc844('0x40')](function(_0x17963d){_0x48af04[_0xc844('0x44')]=_0x17963d;return _0x48af04;})[_0xc844('0x40')](respondWithFilteredResult(_0x100f70,_0x250669))[_0xc844('0x45')](handleError(_0x100f70,null));};exports['show']=function(_0x42f2ff,_0x160ae5){var _0x52be53={'raw':!![],'where':{'id':_0x42f2ff['params']['id']}},_0x27e7f2={};_0x27e7f2[_0xc844('0x2f')]=_['keys'](db[_0xc844('0x2c')][_0xc844('0x46')]);_0x27e7f2[_0xc844('0x31')]=_[_0xc844('0x47')](_0x42f2ff['query']);_0x27e7f2[_0xc844('0x32')]=_[_0xc844('0x33')](_0x27e7f2[_0xc844('0x2f')],_0x27e7f2['query']);_0x52be53['attributes']=_[_0xc844('0x33')](_0x27e7f2[_0xc844('0x2f')],qs['fields'](_0x42f2ff[_0xc844('0x31')]['fields']));_0x52be53['attributes']=_0x52be53[_0xc844('0x34')][_0xc844('0x36')]?_0x52be53[_0xc844('0x34')]:_0x27e7f2[_0xc844('0x2f')];if(_0x42f2ff[_0xc844('0x31')][_0xc844('0x41')]){_0x52be53[_0xc844('0x42')]=[{'all':!![]}];}_0x52be53=_[_0xc844('0x3f')]({},_0x52be53,_0x42f2ff['options']);return db['ChatGroup'][_0xc844('0x48')](_0x52be53)[_0xc844('0x40')](handleEntityNotFound(_0x160ae5,null))[_0xc844('0x40')](respondWithResult(_0x160ae5,null))[_0xc844('0x45')](handleError(_0x160ae5,null));};exports['create']=function(_0xf2ad73,_0xf806b){return db['ChatGroup'][_0xc844('0x49')](_0xf2ad73[_0xc844('0x4a')],{})[_0xc844('0x40')](respondWithResult(_0xf806b,0xc9))[_0xc844('0x45')](handleError(_0xf806b,null));};exports[_0xc844('0x26')]=function(_0x130112,_0x4c03d1){if(_0x130112['body']['id']){delete _0x130112[_0xc844('0x4a')]['id'];}return db[_0xc844('0x2c')][_0xc844('0x48')]({'where':{'id':_0x130112['params']['id']}})['then'](handleEntityNotFound(_0x4c03d1,null))[_0xc844('0x40')](saveUpdates(_0x130112['body'],null))['then'](respondWithResult(_0x4c03d1,null))['catch'](handleError(_0x4c03d1,null));};exports[_0xc844('0x27')]=function(_0x3455e2,_0xbe358){return db[_0xc844('0x2c')][_0xc844('0x48')]({'where':{'id':_0x3455e2[_0xc844('0x4b')]['id']}})[_0xc844('0x40')](handleEntityNotFound(_0xbe358,null))['then'](removeEntity(_0xbe358,null))[_0xc844('0x45')](handleError(_0xbe358,null));};exports['describe']=function(_0x323e3a,_0x23d730){return db[_0xc844('0x2c')]['describe']()[_0xc844('0x40')](respondWithResult(_0x23d730,null))[_0xc844('0x45')](handleError(_0x23d730,null));};exports[_0xc844('0x4c')]=function(_0x4b2814,_0x55e06e,_0x8ddc5e){return db[_0xc844('0x4d')]['count']({'where':{'ChatGroupId':_0x4b2814[_0xc844('0x4b')]['id'],'ToId':_0x4b2814[_0xc844('0x4e')]['id'],'read':![]}})['then'](function(_0x54b2ea){return{'id':_[_0xc844('0x4f')](_0x4b2814[_0xc844('0x4b')]['id']),'count':_0x54b2ea};})['then'](respondWithResult(_0x55e06e,null))[_0xc844('0x45')](handleError(_0x55e06e,null));};exports[_0xc844('0x50')]=function(_0x4bd1bc,_0x1a6271,_0x234ac8){return db['ChatGroup'][_0xc844('0x48')]({'where':{'id':_0x4bd1bc[_0xc844('0x4b')]['id']}})[_0xc844('0x40')](handleEntityNotFound(_0x1a6271,null))[_0xc844('0x40')](function(_0xd4a332){if(_0xd4a332){return _0xd4a332['addMembers'](_0x4bd1bc[_0xc844('0x4a')]['ids'],_[_0xc844('0x51')](_0x4bd1bc['body'],['ids','id'])||{});}})[_0xc844('0x40')](respondWithResult(_0x1a6271,null))[_0xc844('0x45')](handleError(_0x1a6271,null));};exports[_0xc844('0x52')]=function(_0x7f6e9e,_0x4b16f3,_0x426959){var _0x20663={};var _0x3ac56f={};var _0x51d9dd;var _0x279169;return db[_0xc844('0x2c')][_0xc844('0x53')]({'where':{'id':_0x7f6e9e['params']['id']}})[_0xc844('0x40')](handleEntityNotFound(_0x4b16f3,null))['then'](function(_0x4c9e10){if(_0x4c9e10){_0x51d9dd=_0x4c9e10;_0x3ac56f['model']=_[_0xc844('0x47')](db['User'][_0xc844('0x46')]);_0x3ac56f[_0xc844('0x31')]=_['keys'](_0x7f6e9e[_0xc844('0x31')]);_0x3ac56f[_0xc844('0x32')]=_[_0xc844('0x33')](_0x3ac56f[_0xc844('0x2f')],_0x3ac56f[_0xc844('0x31')]);_0x20663[_0xc844('0x34')]=_[_0xc844('0x33')](_0x3ac56f[_0xc844('0x2f')],qs['fields'](_0x7f6e9e[_0xc844('0x31')][_0xc844('0x35')]));_0x20663[_0xc844('0x34')]=_0x20663[_0xc844('0x34')][_0xc844('0x36')]?_0x20663['attributes']:_0x3ac56f[_0xc844('0x2f')];_0x20663['order']=qs['sort'](_0x7f6e9e[_0xc844('0x31')][_0xc844('0x3a')]);_0x20663[_0xc844('0x3b')]=qs['filters'](_[_0xc844('0x3c')](_0x7f6e9e['query'],_0x3ac56f[_0xc844('0x32')]));if(_0x7f6e9e[_0xc844('0x31')][_0xc844('0x3d')]){_0x20663[_0xc844('0x3b')]=_['merge'](_0x20663[_0xc844('0x3b')],{'$or':_[_0xc844('0x30')](_0x20663[_0xc844('0x34')],function(_0x2be635){var _0x44acde={};_0x44acde[_0x2be635]={'$like':'%'+_0x7f6e9e[_0xc844('0x31')][_0xc844('0x3d')]+'%'};return _0x44acde;})});}_0x20663=_[_0xc844('0x3f')]({},_0x20663,_0x7f6e9e[_0xc844('0x54')]);return _0x51d9dd[_0xc844('0x52')](_0x20663);}})['then'](function(_0x50782b){if(_0x50782b){_0x279169=_0x50782b[_0xc844('0x36')];if(!_0x7f6e9e['query'][_0xc844('0x37')](_0xc844('0x38'))){_0x20663[_0xc844('0x20')]=qs['limit'](_0x7f6e9e['query'][_0xc844('0x20')]);_0x20663[_0xc844('0x1e')]=qs[_0xc844('0x1e')](_0x7f6e9e[_0xc844('0x31')][_0xc844('0x1e')]);}return _0x51d9dd[_0xc844('0x52')](_0x20663);}})['then'](function(_0x2520c5){if(_0x2520c5){return _0x2520c5?{'count':_0x279169,'rows':_0x2520c5}:null;}})['then'](respondWithResult(_0x4b16f3,null))[_0xc844('0x45')](handleError(_0x4b16f3,null));};exports['removeMembers']=function(_0x3a21b6,_0x4768e1,_0x3c930e){return db[_0xc844('0x2c')]['find']({'where':{'id':_0x3a21b6['params']['id']}})[_0xc844('0x40')](handleEntityNotFound(_0x4768e1,null))[_0xc844('0x40')](function(_0x33fdf8){if(_0x33fdf8){return _0x33fdf8[_0xc844('0x55')](_0x3a21b6['query'][_0xc844('0x56')]);}})[_0xc844('0x40')](respondWithStatusCode(_0x4768e1,null))[_0xc844('0x45')](handleError(_0x4768e1,null));};exports[_0xc844('0x57')]=function(_0xa2709f,_0x4f3da9,_0x59f4c7){if(_0xa2709f[_0xc844('0x4a')]['id']){delete _0xa2709f[_0xc844('0x4a')]['id'];}return db['ChatGroup']['find']({'where':{'id':_0xa2709f[_0xc844('0x4b')]['id']}})[_0xc844('0x40')](handleEntityNotFound(_0x4f3da9,null))[_0xc844('0x40')](function(_0x59c6f8){if(_0x59c6f8){_0xa2709f[_0xc844('0x4a')][_0xc844('0x58')]=_0x59c6f8['id'];return db[_0xc844('0x4d')][_0xc844('0x49')](_0xa2709f[_0xc844('0x4a')]);}})['then'](respondWithResult(_0x4f3da9,null))[_0xc844('0x45')](handleError(_0x4f3da9,null));};exports[_0xc844('0x59')]=function(_0x46bff8,_0x391720,_0x50f0cb){var _0x380fab={};var _0x36ad44={};var _0x5239dd;var _0x84abd5;return db[_0xc844('0x2c')]['findOne']({'where':{'id':_0x46bff8[_0xc844('0x4b')]['id']}})[_0xc844('0x40')](handleEntityNotFound(_0x391720,null))[_0xc844('0x40')](function(_0x5a5be9){if(_0x5a5be9){_0x5239dd=_0x5a5be9;_0x36ad44[_0xc844('0x2f')]=_['keys'](db[_0xc844('0x4d')]['rawAttributes']);_0x36ad44['query']=_[_0xc844('0x47')](_0x46bff8['query']);_0x36ad44['filters']=_[_0xc844('0x33')](_0x36ad44['model'],_0x36ad44['query']);_0x380fab[_0xc844('0x34')]=_[_0xc844('0x33')](_0x36ad44['model'],qs[_0xc844('0x35')](_0x46bff8[_0xc844('0x31')]['fields']));_0x380fab[_0xc844('0x34')]=_0x380fab['attributes'][_0xc844('0x36')]?_0x380fab[_0xc844('0x34')]:_0x36ad44['model'];_0x380fab[_0xc844('0x39')]=qs[_0xc844('0x3a')](_0x46bff8[_0xc844('0x31')][_0xc844('0x3a')]);_0x380fab[_0xc844('0x3b')]=qs[_0xc844('0x32')](_[_0xc844('0x3c')](_0x46bff8[_0xc844('0x31')],_0x36ad44[_0xc844('0x32')]));if(_0x46bff8[_0xc844('0x31')][_0xc844('0x3d')]){_0x380fab[_0xc844('0x3b')]=_[_0xc844('0x3f')](_0x380fab[_0xc844('0x3b')],{'$or':_[_0xc844('0x30')](_0x380fab[_0xc844('0x34')],function(_0x2f2737){var _0x77cff={};_0x77cff[_0x2f2737]={'$like':'%'+_0x46bff8[_0xc844('0x31')]['filter']+'%'};return _0x77cff;})});}if(_0x46bff8[_0xc844('0x31')][_0xc844('0x5a')]){var _0x3bf6be=_0x46bff8['query'][_0xc844('0x5a')][_0xc844('0x5b')](',');var _0x33348e={};_0x33348e[_0x3bf6be[0x0]]={'$gte':moment(_0x3bf6be[0x1])['format'](_0xc844('0x5c'))};_0x380fab[_0xc844('0x3b')]=_['merge'](_0x380fab[_0xc844('0x3b')],_0x33348e);}_0x380fab=_[_0xc844('0x3f')]({},_0x380fab,_0x46bff8['options']);return _0x5239dd['getMessages'](_0x380fab);}})[_0xc844('0x40')](function(_0x4a411c){if(_0x4a411c){_0x84abd5=_0x4a411c['length'];if(!_0x46bff8[_0xc844('0x31')]['hasOwnProperty'](_0xc844('0x38'))){_0x380fab[_0xc844('0x20')]=qs[_0xc844('0x20')](_0x46bff8[_0xc844('0x31')][_0xc844('0x20')]);_0x380fab[_0xc844('0x1e')]=qs['offset'](_0x46bff8[_0xc844('0x31')][_0xc844('0x1e')]);}return _0x5239dd['getMessages'](_0x380fab);}})['then'](function(_0x107681){if(_0x107681){return _0x107681?{'count':_0x84abd5,'rows':_0x107681}:null;}})[_0xc844('0x40')](respondWithResult(_0x391720,null))[_0xc844('0x45')](handleError(_0x391720,null));};
\ No newline at end of file
+var _0x7a17=['pick','filter','where','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','create','body','find','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','ids','getMembers','findOne','User','removeMembers','addMessage','ChatGroupId','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','rimraf','zip-dir','request-promise','bluebird','util','path','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/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','destroy','error','send','index','map','ChatGroup','rawAttributes','type','key','model','name','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters'];(function(_0x2c618d,_0x300f9e){var _0x43467e=function(_0x1fa460){while(--_0x1fa460){_0x2c618d['push'](_0x2c618d['shift']());}};_0x43467e(++_0x300f9e);}(_0x7a17,0x13e));var _0x77a1=function(_0xd58bce,_0xe415c2){_0xd58bce=_0xd58bce-0x0;var _0x6eac4f=_0x7a17[_0xd58bce];return _0x6eac4f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x77a1('0x0'));var zipdir=require(_0x77a1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x77a1('0x2'));var moment=require('moment');var BPromise=require(_0x77a1('0x3'));var Mustache=require('mustache');var util=require(_0x77a1('0x4'));var path=require(_0x77a1('0x5'));var sox=require('sox');var csv=require(_0x77a1('0x6'));var ejs=require(_0x77a1('0x7'));var fs=require('fs');var fs_extra=require(_0x77a1('0x8'));var _=require('lodash');var squel=require(_0x77a1('0x9'));var crypto=require(_0x77a1('0xa'));var jsforce=require(_0x77a1('0xb'));var deskjs=require(_0x77a1('0xc'));var toCsv=require(_0x77a1('0x6'));var querystring=require(_0x77a1('0xd'));var Papa=require('papaparse');var Redis=require(_0x77a1('0xe'));var authService=require(_0x77a1('0xf'));var qs=require(_0x77a1('0x10'));var as=require(_0x77a1('0x11'));var hardwareService=require(_0x77a1('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x77a1('0x13'));var config=require(_0x77a1('0x14'));var licenseUtil=require(_0x77a1('0x15'));var db=require(_0x77a1('0x16'))['db'];config['redis']=_[_0x77a1('0x17')](config[_0x77a1('0x18')],{'host':_0x77a1('0x19'),'port':0x18eb});var socket=require(_0x77a1('0x1a'))(new Redis(config['redis']));require('./chatGroup.socket')[_0x77a1('0x1b')](socket);function respondWithStatusCode(_0xb35517,_0x2e99d4){_0x2e99d4=_0x2e99d4||0xcc;return function(_0x479d0f){if(_0x479d0f){return _0xb35517['sendStatus'](_0x2e99d4);}return _0xb35517[_0x77a1('0x1c')](_0x2e99d4)[_0x77a1('0x1d')]();};}function respondWithResult(_0x30c3fb,_0x20fc28){_0x20fc28=_0x20fc28||0xc8;return function(_0x31dec1){if(_0x31dec1){return _0x30c3fb[_0x77a1('0x1c')](_0x20fc28)[_0x77a1('0x1e')](_0x31dec1);}};}function respondWithFilteredResult(_0x159d4f,_0x1ec9c3){return function(_0x433059){if(_0x433059){var _0x352d58=typeof _0x1ec9c3[_0x77a1('0x1f')]===_0x77a1('0x20')&&typeof _0x1ec9c3[_0x77a1('0x21')]==='undefined';var _0x164472=_0x433059[_0x77a1('0x22')];var _0x5ca52a=_0x352d58?0x0:_0x1ec9c3[_0x77a1('0x1f')];var _0x6aa1b3=_0x352d58?_0x433059[_0x77a1('0x22')]:_0x1ec9c3[_0x77a1('0x1f')]+_0x1ec9c3[_0x77a1('0x21')];var _0x59ab13;if(_0x6aa1b3>=_0x164472){_0x6aa1b3=_0x164472;_0x59ab13=0xc8;}else{_0x59ab13=0xce;}_0x159d4f[_0x77a1('0x1c')](_0x59ab13);return _0x159d4f['set'](_0x77a1('0x23'),_0x5ca52a+'-'+_0x6aa1b3+'/'+_0x164472)[_0x77a1('0x1e')](_0x433059);}return null;};}function patchUpdates(_0x46569b){return function(_0x2ec831){try{jsonpatch[_0x77a1('0x24')](_0x2ec831,_0x46569b,!![]);}catch(_0x49b497){return BPromise['reject'](_0x49b497);}return _0x2ec831[_0x77a1('0x25')]();};}function saveUpdates(_0xe08b10,_0x46f588){return function(_0x11a092){if(_0x11a092){return _0x11a092[_0x77a1('0x26')](_0xe08b10)[_0x77a1('0x27')](function(_0x5d3295){return _0x5d3295;});}return null;};}function removeEntity(_0x459a0a,_0x5e7d66){return function(_0x545ae6){if(_0x545ae6){return _0x545ae6[_0x77a1('0x28')]()[_0x77a1('0x27')](function(){_0x459a0a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5e7367,_0x2d24f2){return function(_0x472056){if(!_0x472056){_0x5e7367['sendStatus'](0x194);}return _0x472056;};}function handleError(_0x8ccc62,_0x47ca55){_0x47ca55=_0x47ca55||0x1f4;return function(_0x536eeb){logger[_0x77a1('0x29')](_0x536eeb['stack']);if(_0x536eeb['name']){delete _0x536eeb['name'];}_0x8ccc62[_0x77a1('0x1c')](_0x47ca55)[_0x77a1('0x2a')](_0x536eeb);};}exports[_0x77a1('0x2b')]=function(_0x5ba6e5,_0x5694f1){var _0x2fe128={},_0x301c9c={},_0x5e84d0={'count':0x0,'rows':[]};var _0x24acb2=_[_0x77a1('0x2c')](db[_0x77a1('0x2d')][_0x77a1('0x2e')],function(_0x5cbff8){return{'name':_0x5cbff8['fieldName'],'type':_0x5cbff8[_0x77a1('0x2f')][_0x77a1('0x30')]};});_0x301c9c[_0x77a1('0x31')]=_[_0x77a1('0x2c')](_0x24acb2,_0x77a1('0x32'));_0x301c9c['query']=_[_0x77a1('0x33')](_0x5ba6e5[_0x77a1('0x34')]);_0x301c9c['filters']=_[_0x77a1('0x35')](_0x301c9c[_0x77a1('0x31')],_0x301c9c[_0x77a1('0x34')]);_0x2fe128[_0x77a1('0x36')]=_[_0x77a1('0x35')](_0x301c9c[_0x77a1('0x31')],qs[_0x77a1('0x37')](_0x5ba6e5[_0x77a1('0x34')][_0x77a1('0x37')]));_0x2fe128[_0x77a1('0x36')]=_0x2fe128[_0x77a1('0x36')][_0x77a1('0x38')]?_0x2fe128['attributes']:_0x301c9c['model'];if(!_0x5ba6e5[_0x77a1('0x34')][_0x77a1('0x39')](_0x77a1('0x3a'))){_0x2fe128[_0x77a1('0x21')]=qs[_0x77a1('0x21')](_0x5ba6e5[_0x77a1('0x34')][_0x77a1('0x21')]);_0x2fe128['offset']=qs[_0x77a1('0x1f')](_0x5ba6e5['query'][_0x77a1('0x1f')]);}_0x2fe128[_0x77a1('0x3b')]=qs[_0x77a1('0x3c')](_0x5ba6e5[_0x77a1('0x34')]['sort']);_0x2fe128['where']=qs[_0x77a1('0x3d')](_[_0x77a1('0x3e')](_0x5ba6e5[_0x77a1('0x34')],_0x301c9c['filters']),_0x24acb2);if(_0x5ba6e5[_0x77a1('0x34')][_0x77a1('0x3f')]){_0x2fe128[_0x77a1('0x40')]=_[_0x77a1('0x41')](_0x2fe128[_0x77a1('0x40')],{'$or':_['map'](_0x24acb2,function(_0x26ad1b){if(_0x26ad1b[_0x77a1('0x2f')]!==_0x77a1('0x42')){var _0x4b8ee7={};_0x4b8ee7[_0x26ad1b[_0x77a1('0x32')]]={'$like':'%'+_0x5ba6e5[_0x77a1('0x34')][_0x77a1('0x3f')]+'%'};return _0x4b8ee7;}})});}_0x2fe128=_[_0x77a1('0x41')]({},_0x2fe128,_0x5ba6e5[_0x77a1('0x43')]);var _0x4b62d7={'where':_0x2fe128[_0x77a1('0x40')]};return db['ChatGroup'][_0x77a1('0x22')](_0x4b62d7)[_0x77a1('0x27')](function(_0x3ab4b6){_0x5e84d0[_0x77a1('0x22')]=_0x3ab4b6;if(_0x5ba6e5['query'][_0x77a1('0x44')]){_0x2fe128[_0x77a1('0x45')]=[{'all':!![]}];}return db[_0x77a1('0x2d')]['findAll'](_0x2fe128);})[_0x77a1('0x27')](function(_0x57d0b9){_0x5e84d0[_0x77a1('0x46')]=_0x57d0b9;return _0x5e84d0;})[_0x77a1('0x27')](respondWithFilteredResult(_0x5694f1,_0x2fe128))[_0x77a1('0x47')](handleError(_0x5694f1,null));};exports[_0x77a1('0x48')]=function(_0xfef315,_0x3fffbf){var _0x2c8384={'raw':!![],'where':{'id':_0xfef315[_0x77a1('0x49')]['id']}},_0xdf594={};_0xdf594[_0x77a1('0x31')]=_[_0x77a1('0x33')](db[_0x77a1('0x2d')][_0x77a1('0x2e')]);_0xdf594[_0x77a1('0x34')]=_[_0x77a1('0x33')](_0xfef315[_0x77a1('0x34')]);_0xdf594[_0x77a1('0x3d')]=_[_0x77a1('0x35')](_0xdf594['model'],_0xdf594[_0x77a1('0x34')]);_0x2c8384['attributes']=_['intersection'](_0xdf594[_0x77a1('0x31')],qs['fields'](_0xfef315[_0x77a1('0x34')][_0x77a1('0x37')]));_0x2c8384[_0x77a1('0x36')]=_0x2c8384[_0x77a1('0x36')]['length']?_0x2c8384['attributes']:_0xdf594[_0x77a1('0x31')];if(_0xfef315[_0x77a1('0x34')][_0x77a1('0x44')]){_0x2c8384['include']=[{'all':!![]}];}_0x2c8384=_[_0x77a1('0x41')]({},_0x2c8384,_0xfef315['options']);return db[_0x77a1('0x2d')]['find'](_0x2c8384)[_0x77a1('0x27')](handleEntityNotFound(_0x3fffbf,null))[_0x77a1('0x27')](respondWithResult(_0x3fffbf,null))['catch'](handleError(_0x3fffbf,null));};exports[_0x77a1('0x4a')]=function(_0x220754,_0x54ec0d){return db[_0x77a1('0x2d')][_0x77a1('0x4a')](_0x220754['body'],{})[_0x77a1('0x27')](respondWithResult(_0x54ec0d,0xc9))['catch'](handleError(_0x54ec0d,null));};exports[_0x77a1('0x26')]=function(_0x34fd78,_0x24ad99){if(_0x34fd78['body']['id']){delete _0x34fd78[_0x77a1('0x4b')]['id'];}return db[_0x77a1('0x2d')][_0x77a1('0x4c')]({'where':{'id':_0x34fd78[_0x77a1('0x49')]['id']}})[_0x77a1('0x27')](handleEntityNotFound(_0x24ad99,null))[_0x77a1('0x27')](saveUpdates(_0x34fd78['body'],null))[_0x77a1('0x27')](respondWithResult(_0x24ad99,null))[_0x77a1('0x47')](handleError(_0x24ad99,null));};exports[_0x77a1('0x28')]=function(_0x59791e,_0x752202){return db['ChatGroup'][_0x77a1('0x4c')]({'where':{'id':_0x59791e[_0x77a1('0x49')]['id']}})['then'](handleEntityNotFound(_0x752202,null))[_0x77a1('0x27')](removeEntity(_0x752202,null))[_0x77a1('0x47')](handleError(_0x752202,null));};exports[_0x77a1('0x4d')]=function(_0x38d573,_0x623852){return db['ChatGroup']['describe']()[_0x77a1('0x27')](respondWithResult(_0x623852,null))['catch'](handleError(_0x623852,null));};exports[_0x77a1('0x4e')]=function(_0x4001e8,_0x6807b2,_0x38205a){return db[_0x77a1('0x4f')][_0x77a1('0x22')]({'where':{'ChatGroupId':_0x4001e8[_0x77a1('0x49')]['id'],'ToId':_0x4001e8[_0x77a1('0x50')]['id'],'read':![]}})[_0x77a1('0x27')](function(_0x498c3e){return{'id':_[_0x77a1('0x51')](_0x4001e8[_0x77a1('0x49')]['id']),'count':_0x498c3e};})[_0x77a1('0x27')](respondWithResult(_0x6807b2,null))[_0x77a1('0x47')](handleError(_0x6807b2,null));};exports[_0x77a1('0x52')]=function(_0x1d1cd3,_0x3ca529,_0x2c698b){return db[_0x77a1('0x2d')][_0x77a1('0x4c')]({'where':{'id':_0x1d1cd3[_0x77a1('0x49')]['id']}})['then'](handleEntityNotFound(_0x3ca529,null))[_0x77a1('0x27')](function(_0x180d8c){if(_0x180d8c){return _0x180d8c[_0x77a1('0x52')](_0x1d1cd3[_0x77a1('0x4b')][_0x77a1('0x53')],_['omit'](_0x1d1cd3['body'],['ids','id'])||{});}})[_0x77a1('0x27')](respondWithResult(_0x3ca529,null))[_0x77a1('0x47')](handleError(_0x3ca529,null));};exports[_0x77a1('0x54')]=function(_0x501eed,_0x17b32e,_0xd9e788){var _0x15ab82={};var _0x135425={};var _0x429978;var _0x1a1f57;return db[_0x77a1('0x2d')][_0x77a1('0x55')]({'where':{'id':_0x501eed[_0x77a1('0x49')]['id']}})['then'](handleEntityNotFound(_0x17b32e,null))['then'](function(_0x405cc6){if(_0x405cc6){_0x429978=_0x405cc6;_0x135425[_0x77a1('0x31')]=_['keys'](db[_0x77a1('0x56')][_0x77a1('0x2e')]);_0x135425[_0x77a1('0x34')]=_[_0x77a1('0x33')](_0x501eed[_0x77a1('0x34')]);_0x135425['filters']=_[_0x77a1('0x35')](_0x135425['model'],_0x135425['query']);_0x15ab82[_0x77a1('0x36')]=_[_0x77a1('0x35')](_0x135425['model'],qs[_0x77a1('0x37')](_0x501eed[_0x77a1('0x34')][_0x77a1('0x37')]));_0x15ab82[_0x77a1('0x36')]=_0x15ab82[_0x77a1('0x36')]['length']?_0x15ab82['attributes']:_0x135425[_0x77a1('0x31')];_0x15ab82[_0x77a1('0x3b')]=qs[_0x77a1('0x3c')](_0x501eed[_0x77a1('0x34')][_0x77a1('0x3c')]);_0x15ab82[_0x77a1('0x40')]=qs[_0x77a1('0x3d')](_['pick'](_0x501eed['query'],_0x135425['filters']));if(_0x501eed[_0x77a1('0x34')][_0x77a1('0x3f')]){_0x15ab82[_0x77a1('0x40')]=_[_0x77a1('0x41')](_0x15ab82['where'],{'$or':_[_0x77a1('0x2c')](_0x15ab82['attributes'],function(_0x471e46){var _0x13b80e={};_0x13b80e[_0x471e46]={'$like':'%'+_0x501eed[_0x77a1('0x34')][_0x77a1('0x3f')]+'%'};return _0x13b80e;})});}_0x15ab82=_[_0x77a1('0x41')]({},_0x15ab82,_0x501eed[_0x77a1('0x43')]);return _0x429978[_0x77a1('0x54')](_0x15ab82);}})[_0x77a1('0x27')](function(_0x877f4d){if(_0x877f4d){_0x1a1f57=_0x877f4d[_0x77a1('0x38')];if(!_0x501eed[_0x77a1('0x34')][_0x77a1('0x39')]('nolimit')){_0x15ab82[_0x77a1('0x21')]=qs[_0x77a1('0x21')](_0x501eed[_0x77a1('0x34')][_0x77a1('0x21')]);_0x15ab82[_0x77a1('0x1f')]=qs[_0x77a1('0x1f')](_0x501eed[_0x77a1('0x34')][_0x77a1('0x1f')]);}return _0x429978[_0x77a1('0x54')](_0x15ab82);}})['then'](function(_0x265d78){if(_0x265d78){return _0x265d78?{'count':_0x1a1f57,'rows':_0x265d78}:null;}})[_0x77a1('0x27')](respondWithResult(_0x17b32e,null))['catch'](handleError(_0x17b32e,null));};exports[_0x77a1('0x57')]=function(_0x260ae2,_0x6361c6,_0x5be9e2){return db[_0x77a1('0x2d')][_0x77a1('0x4c')]({'where':{'id':_0x260ae2[_0x77a1('0x49')]['id']}})['then'](handleEntityNotFound(_0x6361c6,null))['then'](function(_0x1cce58){if(_0x1cce58){return _0x1cce58[_0x77a1('0x57')](_0x260ae2[_0x77a1('0x34')][_0x77a1('0x53')]);}})['then'](respondWithStatusCode(_0x6361c6,null))[_0x77a1('0x47')](handleError(_0x6361c6,null));};exports[_0x77a1('0x58')]=function(_0x4541d7,_0x4adff9,_0x36e2da){if(_0x4541d7['body']['id']){delete _0x4541d7[_0x77a1('0x4b')]['id'];}return db[_0x77a1('0x2d')]['find']({'where':{'id':_0x4541d7[_0x77a1('0x49')]['id']}})[_0x77a1('0x27')](handleEntityNotFound(_0x4adff9,null))[_0x77a1('0x27')](function(_0x2a1059){if(_0x2a1059){_0x4541d7[_0x77a1('0x4b')][_0x77a1('0x59')]=_0x2a1059['id'];return db[_0x77a1('0x4f')][_0x77a1('0x4a')](_0x4541d7['body']);}})[_0x77a1('0x27')](respondWithResult(_0x4adff9,null))['catch'](handleError(_0x4adff9,null));};exports[_0x77a1('0x5a')]=function(_0x2c54be,_0x5b21df,_0x489aa5){var _0x426f31={};var _0x62d4bd={};var _0x5b3cbc;var _0x4eebbc;return db['ChatGroup'][_0x77a1('0x55')]({'where':{'id':_0x2c54be[_0x77a1('0x49')]['id']}})[_0x77a1('0x27')](handleEntityNotFound(_0x5b21df,null))[_0x77a1('0x27')](function(_0x44e71d){if(_0x44e71d){_0x5b3cbc=_0x44e71d;_0x62d4bd['model']=_['keys'](db[_0x77a1('0x4f')][_0x77a1('0x2e')]);_0x62d4bd[_0x77a1('0x34')]=_['keys'](_0x2c54be['query']);_0x62d4bd[_0x77a1('0x3d')]=_[_0x77a1('0x35')](_0x62d4bd['model'],_0x62d4bd[_0x77a1('0x34')]);_0x426f31[_0x77a1('0x36')]=_['intersection'](_0x62d4bd[_0x77a1('0x31')],qs[_0x77a1('0x37')](_0x2c54be['query'][_0x77a1('0x37')]));_0x426f31[_0x77a1('0x36')]=_0x426f31[_0x77a1('0x36')][_0x77a1('0x38')]?_0x426f31[_0x77a1('0x36')]:_0x62d4bd['model'];_0x426f31[_0x77a1('0x3b')]=qs['sort'](_0x2c54be[_0x77a1('0x34')][_0x77a1('0x3c')]);_0x426f31[_0x77a1('0x40')]=qs[_0x77a1('0x3d')](_[_0x77a1('0x3e')](_0x2c54be[_0x77a1('0x34')],_0x62d4bd[_0x77a1('0x3d')]));if(_0x2c54be['query']['filter']){_0x426f31[_0x77a1('0x40')]=_[_0x77a1('0x41')](_0x426f31[_0x77a1('0x40')],{'$or':_[_0x77a1('0x2c')](_0x426f31[_0x77a1('0x36')],function(_0x21c9d5){var _0x4e649a={};_0x4e649a[_0x21c9d5]={'$like':'%'+_0x2c54be[_0x77a1('0x34')][_0x77a1('0x3f')]+'%'};return _0x4e649a;})});}if(_0x2c54be[_0x77a1('0x34')]['$gte']){var _0x2bf6ca=_0x2c54be[_0x77a1('0x34')][_0x77a1('0x5b')][_0x77a1('0x5c')](',');var _0x4f34e8={};_0x4f34e8[_0x2bf6ca[0x0]]={'$gte':moment(_0x2bf6ca[0x1])[_0x77a1('0x5d')](_0x77a1('0x5e'))};_0x426f31[_0x77a1('0x40')]=_[_0x77a1('0x41')](_0x426f31[_0x77a1('0x40')],_0x4f34e8);}_0x426f31=_[_0x77a1('0x41')]({},_0x426f31,_0x2c54be[_0x77a1('0x43')]);return _0x5b3cbc[_0x77a1('0x5a')](_0x426f31);}})[_0x77a1('0x27')](function(_0x13af84){if(_0x13af84){_0x4eebbc=_0x13af84[_0x77a1('0x38')];if(!_0x2c54be[_0x77a1('0x34')][_0x77a1('0x39')](_0x77a1('0x3a'))){_0x426f31[_0x77a1('0x21')]=qs[_0x77a1('0x21')](_0x2c54be['query']['limit']);_0x426f31[_0x77a1('0x1f')]=qs['offset'](_0x2c54be[_0x77a1('0x34')][_0x77a1('0x1f')]);}return _0x5b3cbc[_0x77a1('0x5a')](_0x426f31);}})[_0x77a1('0x27')](function(_0x5e2bb3){if(_0x5e2bb3){return _0x5e2bb3?{'count':_0x4eebbc,'rows':_0x5e2bb3}:null;}})[_0x77a1('0x27')](respondWithResult(_0x5b21df,null))['catch'](handleError(_0x5b21df,null));};
\ No newline at end of file
index 91b88e0..75f0c1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2041=['../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x19e9a7,_0x57e686){var _0x3a8442=function(_0x154567){while(--_0x154567){_0x19e9a7['push'](_0x19e9a7['shift']());}};_0x3a8442(++_0x57e686);}(_0x2041,0x10d));var _0x1204=function(_0x2f516d,_0x2daa72){_0x2f516d=_0x2f516d-0x0;var _0x292f0f=_0x2041[_0x2f516d];return _0x292f0f;};'use strict';var EventEmitter=require(_0x1204('0x0'));var ChatGroup=require(_0x1204('0x1'))['db']['ChatGroup'];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x1204('0x2')](0x0);var events={'afterCreate':_0x1204('0x3'),'afterUpdate':_0x1204('0x4'),'afterDestroy':_0x1204('0x5')};function emitEvent(_0x50c564){return function(_0x898b04,_0x249777,_0x12b91d){ChatGroupEvents[_0x1204('0x6')](_0x50c564+':'+_0x898b04['id'],_0x898b04);ChatGroupEvents[_0x1204('0x6')](_0x50c564,_0x898b04);_0x12b91d(null);};}for(var e in events){if(events[_0x1204('0x7')](e)){var event=events[e];ChatGroup[_0x1204('0x8')](e,emitEvent(event));}}module[_0x1204('0x9')]=ChatGroupEvents;
\ No newline at end of file
+var _0xe6c0=['../../mysqldb','ChatGroup','setMaxListeners','update','remove','emit','hasOwnProperty','hook'];(function(_0xf482d4,_0x55210d){var _0x1331f0=function(_0x64509a){while(--_0x64509a){_0xf482d4['push'](_0xf482d4['shift']());}};_0x1331f0(++_0x55210d);}(_0xe6c0,0x88));var _0x0e6c=function(_0x50007c,_0x1cbf11){_0x50007c=_0x50007c-0x0;var _0x5c1ec7=_0xe6c0[_0x50007c];return _0x5c1ec7;};'use strict';var EventEmitter=require('events');var ChatGroup=require(_0x0e6c('0x0'))['db'][_0x0e6c('0x1')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x0e6c('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0e6c('0x3'),'afterDestroy':_0x0e6c('0x4')};function emitEvent(_0x27070e){return function(_0x37d20e,_0x11ec6f,_0x441f36){ChatGroupEvents[_0x0e6c('0x5')](_0x27070e+':'+_0x37d20e['id'],_0x37d20e);ChatGroupEvents[_0x0e6c('0x5')](_0x27070e,_0x37d20e);_0x441f36(null);};}for(var e in events){if(events[_0x0e6c('0x6')](e)){var event=events[e];ChatGroup[_0x0e6c('0x7')](e,emitEvent(event));}}module['exports']=ChatGroupEvents;
\ No newline at end of file
index aa9d2f7..9ad6284 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe825=['./chatGroup.attributes','exports','ChatGroup','chat_groups','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x5a03b6,_0x1440b3){var _0xeb3f22=function(_0x1860c0){while(--_0x1860c0){_0x5a03b6['push'](_0x5a03b6['shift']());}};_0xeb3f22(++_0x1440b3);}(_0xe825,0x10c));var _0x5e82=function(_0x215904,_0x314567){_0x215904=_0x215904-0x0;var _0x547881=_0xe825[_0x215904];return _0x547881;};'use strict';var _=require('lodash');var util=require(_0x5e82('0x0'));var logger=require(_0x5e82('0x1'))(_0x5e82('0x2'));var moment=require(_0x5e82('0x3'));var BPromise=require(_0x5e82('0x4'));var rp=require(_0x5e82('0x5'));var fs=require('fs');var path=require(_0x5e82('0x6'));var rimraf=require('rimraf');var config=require(_0x5e82('0x7'));var attributes=require(_0x5e82('0x8'));module[_0x5e82('0x9')]=function(_0x57b496,_0x4b12b8){return _0x57b496['define'](_0x5e82('0xa'),attributes,{'tableName':_0x5e82('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbff6=['./chatGroup.attributes','exports','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xbff6,0x1ba));var _0x6bff=function(_0x47aa64,_0xfb8a07){_0x47aa64=_0x47aa64-0x0;var _0x549c7a=_0xbff6[_0x47aa64];return _0x549c7a;};'use strict';var _=require(_0x6bff('0x0'));var util=require(_0x6bff('0x1'));var logger=require('../../config/logger')(_0x6bff('0x2'));var moment=require(_0x6bff('0x3'));var BPromise=require(_0x6bff('0x4'));var rp=require(_0x6bff('0x5'));var fs=require('fs');var path=require(_0x6bff('0x6'));var rimraf=require('rimraf');var config=require(_0x6bff('0x7'));var attributes=require(_0x6bff('0x8'));module[_0x6bff('0x9')]=function(_0xa84feb,_0x136b16){return _0xa84feb['define']('ChatGroup',attributes,{'tableName':'chat_groups','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a6b90a7..b92aa57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa676=['request','then','info','request\x20sent','ChatGroup,\x20%s,\x20%s,\x20%s','error','code','ChatGroup,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./chatGroup.socket','register'];(function(_0x1654f5,_0x5e1214){var _0x37cd7d=function(_0x9d544e){while(--_0x9d544e){_0x1654f5['push'](_0x1654f5['shift']());}};_0x37cd7d(++_0x5e1214);}(_0xa676,0x15b));var _0x6a67=function(_0x16d1f7,_0x20b06d){_0x16d1f7=_0x16d1f7-0x0;var _0x478127=_0xa676[_0x16d1f7];return _0x478127;};'use strict';var _=require(_0x6a67('0x0'));var util=require(_0x6a67('0x1'));var moment=require(_0x6a67('0x2'));var BPromise=require(_0x6a67('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6a67('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6a67('0x5'));var logger=require(_0x6a67('0x6'))(_0x6a67('0x7'));var config=require(_0x6a67('0x8'));var jayson=require(_0x6a67('0x9'));var client=jayson[_0x6a67('0xa')][_0x6a67('0xb')]({'port':0x232a});config[_0x6a67('0xc')]=_[_0x6a67('0xd')](config[_0x6a67('0xc')],{'host':_0x6a67('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x6a67('0xf'))[_0x6a67('0x10')](socket);function respondWithRpcPromise(_0x53f382,_0x2a9437,_0x1ec9dc){return new BPromise(function(_0x80bfe5,_0x3e559d){return client[_0x6a67('0x11')](_0x53f382,_0x1ec9dc)[_0x6a67('0x12')](function(_0x556960){logger[_0x6a67('0x13')]('ChatGroup,\x20%s,\x20%s',_0x2a9437,_0x6a67('0x14'));logger['debug'](_0x6a67('0x15'),_0x2a9437,_0x6a67('0x14'),JSON['stringify'](_0x556960));if(_0x556960[_0x6a67('0x16')]){if(_0x556960['error'][_0x6a67('0x17')]===0x1f4){logger[_0x6a67('0x16')](_0x6a67('0x18'),_0x2a9437,_0x556960[_0x6a67('0x16')][_0x6a67('0x19')]);return _0x3e559d(_0x556960['error'][_0x6a67('0x19')]);}logger['error'](_0x6a67('0x18'),_0x2a9437,_0x556960[_0x6a67('0x16')][_0x6a67('0x19')]);return _0x80bfe5(_0x556960[_0x6a67('0x16')][_0x6a67('0x19')]);}else{logger[_0x6a67('0x13')]('ChatGroup,\x20%s,\x20%s',_0x2a9437,'request\x20sent');_0x80bfe5(_0x556960[_0x6a67('0x1a')]['message']);}})[_0x6a67('0x1b')](function(_0x206e20){logger[_0x6a67('0x16')](_0x6a67('0x18'),_0x2a9437,_0x206e20);_0x3e559d(_0x206e20);});});}
\ No newline at end of file
+var _0xe599=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','defaults','redis','socket.io-emitter','./chatGroup.socket','register','request','then','info','request\x20sent','debug','stringify','error','ChatGroup,\x20%s,\x20%s','message','catch','lodash'];(function(_0x560d66,_0xf86af7){var _0x1a7191=function(_0x47fdbc){while(--_0x47fdbc){_0x560d66['push'](_0x560d66['shift']());}};_0x1a7191(++_0xf86af7);}(_0xe599,0x1e5));var _0x9e59=function(_0x4aa192,_0x2a1a42){_0x4aa192=_0x4aa192-0x0;var _0x43913d=_0xe599[_0x4aa192];return _0x43913d;};'use strict';var _=require(_0x9e59('0x0'));var util=require(_0x9e59('0x1'));var moment=require(_0x9e59('0x2'));var BPromise=require(_0x9e59('0x3'));var rs=require(_0x9e59('0x4'));var fs=require('fs');var Redis=require(_0x9e59('0x5'));var db=require(_0x9e59('0x6'))['db'];var utils=require(_0x9e59('0x7'));var logger=require(_0x9e59('0x8'))('rpc');var config=require(_0x9e59('0x9'));var jayson=require(_0x9e59('0xa'));var client=jayson['client'][_0x9e59('0xb')]({'port':0x232a});config['redis']=_[_0x9e59('0xc')](config[_0x9e59('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x9e59('0xe'))(new Redis(config[_0x9e59('0xd')]));require(_0x9e59('0xf'))[_0x9e59('0x10')](socket);function respondWithRpcPromise(_0x64d093,_0x14a5d7,_0x578fdc){return new BPromise(function(_0x312bc6,_0x5ba142){return client[_0x9e59('0x11')](_0x64d093,_0x578fdc)[_0x9e59('0x12')](function(_0x21c404){logger[_0x9e59('0x13')]('ChatGroup,\x20%s,\x20%s',_0x14a5d7,_0x9e59('0x14'));logger[_0x9e59('0x15')]('ChatGroup,\x20%s,\x20%s,\x20%s',_0x14a5d7,_0x9e59('0x14'),JSON[_0x9e59('0x16')](_0x21c404));if(_0x21c404[_0x9e59('0x17')]){if(_0x21c404[_0x9e59('0x17')]['code']===0x1f4){logger[_0x9e59('0x17')](_0x9e59('0x18'),_0x14a5d7,_0x21c404[_0x9e59('0x17')][_0x9e59('0x19')]);return _0x5ba142(_0x21c404[_0x9e59('0x17')][_0x9e59('0x19')]);}logger[_0x9e59('0x17')](_0x9e59('0x18'),_0x14a5d7,_0x21c404['error'][_0x9e59('0x19')]);return _0x312bc6(_0x21c404['error']['message']);}else{logger['info'](_0x9e59('0x18'),_0x14a5d7,_0x9e59('0x14'));_0x312bc6(_0x21c404['result'][_0x9e59('0x19')]);}})[_0x9e59('0x1a')](function(_0x40f315){logger[_0x9e59('0x17')](_0x9e59('0x18'),_0x14a5d7,_0x40f315);_0x5ba142(_0x40f315);});});}
\ No newline at end of file
index f43b702..6ceb0e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1009=['remove','update','emit','removeListener','length','./chatGroup.events','save'];(function(_0x2a1ced,_0x23765b){var _0x56609d=function(_0xb17580){while(--_0xb17580){_0x2a1ced['push'](_0x2a1ced['shift']());}};_0x56609d(++_0x23765b);}(_0x1009,0xb4));var _0x9100=function(_0x39d567,_0x5b5e9e){_0x39d567=_0x39d567-0x0;var _0x2f7436=_0x1009[_0x39d567];return _0x2f7436;};'use strict';var ChatGroupEvents=require(_0x9100('0x0'));var events=[_0x9100('0x1'),_0x9100('0x2'),_0x9100('0x3')];function createListener(_0x269e2f,_0x569960){return function(_0x21e6bb){_0x569960[_0x9100('0x4')](_0x269e2f,_0x21e6bb);};}function removeListener(_0x150639,_0xb2c376){return function(){ChatGroupEvents[_0x9100('0x5')](_0x150639,_0xb2c376);};}exports['register']=function(_0x2b025d){for(var _0x4f2bd8=0x0,_0x2c04a0=events[_0x9100('0x6')];_0x4f2bd8<_0x2c04a0;_0x4f2bd8++){var _0x31a756=events[_0x4f2bd8];var _0xd352c=createListener('chatGroup:'+_0x31a756,_0x2b025d);ChatGroupEvents['on'](_0x31a756,_0xd352c);}};
\ No newline at end of file
+var _0x58a4=['update','emit','removeListener','register','length','chatGroup:','./chatGroup.events','remove'];(function(_0x3ceb54,_0x5bddfd){var _0x26d8a6=function(_0x32e484){while(--_0x32e484){_0x3ceb54['push'](_0x3ceb54['shift']());}};_0x26d8a6(++_0x5bddfd);}(_0x58a4,0x1ee));var _0x458a=function(_0xd050c6,_0x58ffb4){_0xd050c6=_0xd050c6-0x0;var _0x7278a=_0x58a4[_0xd050c6];return _0x7278a;};'use strict';var ChatGroupEvents=require(_0x458a('0x0'));var events=['save',_0x458a('0x1'),_0x458a('0x2')];function createListener(_0x317933,_0x415584){return function(_0x25e1c0){_0x415584[_0x458a('0x3')](_0x317933,_0x25e1c0);};}function removeListener(_0x5ef3ca,_0x2d013f){return function(){ChatGroupEvents[_0x458a('0x4')](_0x5ef3ca,_0x2d013f);};}exports[_0x458a('0x5')]=function(_0x2d22e8){for(var _0x451367=0x0,_0x43064e=events[_0x458a('0x6')];_0x451367<_0x43064e;_0x451367++){var _0x1ce74b=events[_0x451367];var _0x54889e=createListener(_0x458a('0x7')+_0x1ce74b,_0x2d22e8);ChatGroupEvents['on'](_0x1ce74b,_0x54889e);}};
\ No newline at end of file
index ad342c0..f8be791 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5a3=['getUnread','getMembers','/:id/messages','post','/:id/members','addMembers','addMessage','put','update','destroy','removeMembers','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','isAuthenticated','/:id','/:id/unread'];(function(_0x1c2f29,_0x5a2668){var _0x258465=function(_0x30332f){while(--_0x30332f){_0x1c2f29['push'](_0x1c2f29['shift']());}};_0x258465(++_0x5a2668);}(_0xb5a3,0xe3));var _0x3b5a=function(_0xd22d95,_0xc59f8f){_0xd22d95=_0xd22d95-0x0;var _0x15d7a3=_0xb5a3[_0xd22d95];return _0x15d7a3;};'use strict';var multer=require('multer');var util=require(_0x3b5a('0x0'));var path=require('path');var timeout=require(_0x3b5a('0x1'));var express=require(_0x3b5a('0x2'));var router=express[_0x3b5a('0x3')]();var fs_extra=require(_0x3b5a('0x4'));var auth=require(_0x3b5a('0x5'));var interaction=require(_0x3b5a('0x6'));var config=require(_0x3b5a('0x7'));var controller=require(_0x3b5a('0x8'));router[_0x3b5a('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x3b5a('0x9')]('/describe',auth[_0x3b5a('0xa')](),controller['describe']);router['get'](_0x3b5a('0xb'),auth[_0x3b5a('0xa')](),controller['show']);router[_0x3b5a('0x9')](_0x3b5a('0xc'),auth['isAuthenticated'](),controller[_0x3b5a('0xd')]);router[_0x3b5a('0x9')]('/:id/members',auth['isAuthenticated'](),controller[_0x3b5a('0xe')]);router[_0x3b5a('0x9')](_0x3b5a('0xf'),auth[_0x3b5a('0xa')](),controller['getMessages']);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x3b5a('0x10')](_0x3b5a('0x11'),auth[_0x3b5a('0xa')](),controller[_0x3b5a('0x12')]);router[_0x3b5a('0x10')](_0x3b5a('0xf'),auth[_0x3b5a('0xa')](),controller[_0x3b5a('0x13')]);router[_0x3b5a('0x14')](_0x3b5a('0xb'),auth['isAuthenticated'](),controller[_0x3b5a('0x15')]);router['delete']('/:id',auth[_0x3b5a('0xa')](),controller[_0x3b5a('0x16')]);router['delete'](_0x3b5a('0x11'),auth[_0x3b5a('0xa')](),controller[_0x3b5a('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0xa2d5=['../../config/environment','./chatGroup.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/unread','getUnread','/:id/members','getMembers','post','/:id/messages','addMessage','put','update','destroy','delete','removeMembers','exports','multer','util','connect-timeout','express','Router','../../components/interaction/service'];(function(_0x28001b,_0x5854cf){var _0x238a36=function(_0x582a51){while(--_0x582a51){_0x28001b['push'](_0x28001b['shift']());}};_0x238a36(++_0x5854cf);}(_0xa2d5,0x12e));var _0x5a2d=function(_0x181ac8,_0x4d7515){_0x181ac8=_0x181ac8-0x0;var _0x449ae3=_0xa2d5[_0x181ac8];return _0x449ae3;};'use strict';var multer=require(_0x5a2d('0x0'));var util=require(_0x5a2d('0x1'));var path=require('path');var timeout=require(_0x5a2d('0x2'));var express=require(_0x5a2d('0x3'));var router=express[_0x5a2d('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x5a2d('0x5'));var config=require(_0x5a2d('0x6'));var controller=require(_0x5a2d('0x7'));router[_0x5a2d('0x8')]('/',auth[_0x5a2d('0x9')](),controller[_0x5a2d('0xa')]);router[_0x5a2d('0x8')](_0x5a2d('0xb'),auth[_0x5a2d('0x9')](),controller[_0x5a2d('0xc')]);router[_0x5a2d('0x8')](_0x5a2d('0xd'),auth[_0x5a2d('0x9')](),controller[_0x5a2d('0xe')]);router['get'](_0x5a2d('0xf'),auth[_0x5a2d('0x9')](),controller[_0x5a2d('0x10')]);router['get'](_0x5a2d('0x11'),auth['isAuthenticated'](),controller[_0x5a2d('0x12')]);router[_0x5a2d('0x8')]('/:id/messages',auth[_0x5a2d('0x9')](),controller['getMessages']);router['post']('/',auth['isAuthenticated'](),controller['create']);router['post'](_0x5a2d('0x11'),auth[_0x5a2d('0x9')](),controller['addMembers']);router[_0x5a2d('0x13')](_0x5a2d('0x14'),auth[_0x5a2d('0x9')](),controller[_0x5a2d('0x15')]);router[_0x5a2d('0x16')](_0x5a2d('0xd'),auth['isAuthenticated'](),controller[_0x5a2d('0x17')]);router['delete'](_0x5a2d('0xd'),auth[_0x5a2d('0x9')](),controller[_0x5a2d('0x18')]);router[_0x5a2d('0x19')]('/:id/members',auth[_0x5a2d('0x9')](),controller[_0x5a2d('0x1a')]);module[_0x5a2d('0x1b')]=router;
\ No newline at end of file
index 1512bda..e02b666 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa902=['BOOLEAN','INTEGER','ENUM','thumb','TEXT','STRING','DATE','long','out','sequelize','exports'];(function(_0xcfeeab,_0x1f3270){var _0x45c78c=function(_0x2702e5){while(--_0x2702e5){_0xcfeeab['push'](_0xcfeeab['shift']());}};_0x45c78c(++_0x1f3270);}(_0xa902,0x8d));var _0x2a90=function(_0x3b05fc,_0x2af6dd){_0x3b05fc=_0x3b05fc-0x0;var _0x3f9df0=_0xa902[_0x3b05fc];return _0x3f9df0;};'use strict';var Sequelize=require(_0x2a90('0x0'));module[_0x2a90('0x1')]={'closed':{'type':Sequelize[_0x2a90('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x2a90('0x3')]},'ratingType':{'type':Sequelize[_0x2a90('0x4')]('star',_0x2a90('0x5')),'defaultValue':'star'},'ratingMessage':{'type':Sequelize['TEXT']},'pathTranscript':{'type':Sequelize[_0x2a90('0x6')]},'mailTranscript':{'type':Sequelize[_0x2a90('0x7')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x2a90('0x8')]},'disposition':{'type':Sequelize[_0x2a90('0x7')]},'secondDisposition':{'type':Sequelize[_0x2a90('0x7')]},'thirdDisposition':{'type':Sequelize[_0x2a90('0x7')]},'note':{'type':Sequelize['STRING']},'browserName':{'type':Sequelize[_0x2a90('0x7')]},'browserVersion':{'type':Sequelize['STRING']},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize[_0x2a90('0x7')]},'deviceModel':{'type':Sequelize[_0x2a90('0x7')]},'deviceVendor':{'type':Sequelize[_0x2a90('0x7')]},'deviceType':{'type':Sequelize[_0x2a90('0x7')]},'referer':{'type':Sequelize[_0x2a90('0x6')]},'customerIp':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0x2a90('0x6')](_0x2a90('0x9'))},'read1stAt':{'type':Sequelize[_0x2a90('0x8')]},'lastMsgAt':{'type':Sequelize[_0x2a90('0x8')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x2a90('0xa')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize['STRING']},'customerPort':{'type':Sequelize[_0x2a90('0x7')]},'vidaooSessionId':{'type':Sequelize['TEXT']},'autoreplyExecuted':{'type':Sequelize[_0x2a90('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x3266=['BOOLEAN','INTEGER','ENUM','star','thumb','TEXT','STRING','long','DATE','out','sequelize','exports'];(function(_0x5a2da5,_0x12e6c3){var _0x477530=function(_0x4a64f5){while(--_0x4a64f5){_0x5a2da5['push'](_0x5a2da5['shift']());}};_0x477530(++_0x12e6c3);}(_0x3266,0x6a));var _0x6326=function(_0x548627,_0x4ec392){_0x548627=_0x548627-0x0;var _0x844a84=_0x3266[_0x548627];return _0x844a84;};'use strict';var Sequelize=require(_0x6326('0x0'));module[_0x6326('0x1')]={'closed':{'type':Sequelize[_0x6326('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x6326('0x3')]},'ratingType':{'type':Sequelize[_0x6326('0x4')](_0x6326('0x5'),_0x6326('0x6')),'defaultValue':_0x6326('0x5')},'ratingMessage':{'type':Sequelize[_0x6326('0x7')]},'pathTranscript':{'type':Sequelize['TEXT']},'mailTranscript':{'type':Sequelize[_0x6326('0x8')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x6326('0x8')]},'secondDisposition':{'type':Sequelize[_0x6326('0x8')]},'thirdDisposition':{'type':Sequelize[_0x6326('0x8')]},'note':{'type':Sequelize['STRING']},'browserName':{'type':Sequelize[_0x6326('0x8')]},'browserVersion':{'type':Sequelize['STRING']},'osName':{'type':Sequelize[_0x6326('0x8')]},'osVersion':{'type':Sequelize[_0x6326('0x8')]},'deviceModel':{'type':Sequelize[_0x6326('0x8')]},'deviceVendor':{'type':Sequelize[_0x6326('0x8')]},'deviceType':{'type':Sequelize[_0x6326('0x8')]},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize[_0x6326('0x8')]},'formData':{'type':Sequelize[_0x6326('0x7')](_0x6326('0x9'))},'read1stAt':{'type':Sequelize[_0x6326('0xa')]},'lastMsgAt':{'type':Sequelize[_0x6326('0xa')]},'lastMsgDirection':{'type':Sequelize[_0x6326('0x4')]('in',_0x6326('0xb')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x6326('0x8')]},'customerPort':{'type':Sequelize[_0x6326('0x8')]},'vidaooSessionId':{'type':Sequelize[_0x6326('0x7')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 7387b33..deddf79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea28=['fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./chatInteraction.socket','register','jayson/promise','client','http','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','error','code','message','catch','status','end','json','offset','undefined','limit','count','Content-Range','apply','update','destroy','sendStatus','stack','name','merge','contact','agent','interaction','account','Users','map','TagIds','Tags','split','forEach','index','ChatInteraction','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','u.id','ui.ChatInteractionId','from','user_has_chat_interactions','users','u.id\x20=\x20ui.UserId','chat_interactions','left_join','cm_contacts','o.id\x20=\x20i.UserId','chat_websites','a.id\x20=\x20i.ChatWebsiteId','chat_messages','me.ChatInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','search','parseSearch','conditions','find','unreadMessages','having','`\x20=\x200','Contact','$substring','value','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','start','Tag','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','compact','i.ChatWebsiteId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','isNumeric','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','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','isEmpty','t.id\x20IN\x20?','resolve','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','role','user','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','sequelize','toString','keyBy','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.*','Contact.firstName','Contact.lastName','Contact.email','Contact.phone','c.mobile','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.ChatInteractionId\x20IN\x20?','groupBy','ChatInteractionId','push','all','params','includeAll','options','create','body','describe','createVidaooSession','findOne','ChatWebsite','ChatWebsiteId','vidaooApiKey','vidaooEscalation','vidaooNote','vidaooMetadata','POST','https://api-vidaoo.xcally.com/api/v1/meetings','email','isNull','follow','metadata','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','join_url','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','entity\x20not\x20found','Interaction\x20already\x20assigned','disposition','AbandonInteraction','attachmentUpload','file','originalname','basename','filename','mimetype','attachmentDownload','closed','Unauthorized','Attachment','attachId','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','download','close','mailTranscript','server/files/chat/upload/','now','pathTranscript','%s%d','agentAlias','System','customer','format','Visitor','agentIdentifier','website_alias','agent_alias','alias','agent_fullname','fullname','[%s]\x20%s:\x20%s\x0a','direction','appendFileSync','MailServerOut','Smtp','service','port','secure','authentication','auth','SendMail','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','addMessage','ids','omit','getMessages','include','findAll','rows','getMyMessages','secret','includeAgent','addTags','setTags','spread','emit','removeTags','files','attachments','transcript-%d-%s.zip','firstName','lastName','Messages','read','Account','Chat','Owner','YYYY-MM-DD\x20HH:mm:ss','browserName','customerIp','customerPort','tail','existsSync','createReadStream','pipe','createWriteStream','out','renderFile','views','downloadInteraction.ejs','transcript-','log','unlinkSync','eml-format','rimraf','zip-dir'];(function(_0x3303d3,_0x293b9f){var _0x2e6d66=function(_0x3c990e){while(--_0x3c990e){_0x3303d3['push'](_0x3303d3['shift']());}};_0x2e6d66(++_0x293b9f);}(_0xea28,0x13a));var _0x8ea2=function(_0x4d3873,_0x3c0c2d){_0x4d3873=_0x4d3873-0x0;var _0x1be31c=_0xea28[_0x4d3873];return _0x1be31c;};'use strict';var emlformat=require(_0x8ea2('0x0'));var rimraf=require(_0x8ea2('0x1'));var zipdir=require(_0x8ea2('0x2'));var jsonpatch=require(_0x8ea2('0x3'));var rp=require(_0x8ea2('0x4'));var moment=require(_0x8ea2('0x5'));var BPromise=require(_0x8ea2('0x6'));var Mustache=require(_0x8ea2('0x7'));var util=require('util');var path=require(_0x8ea2('0x8'));var sox=require(_0x8ea2('0x9'));var csv=require(_0x8ea2('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8ea2('0xb'));var _=require(_0x8ea2('0xc'));var squel=require(_0x8ea2('0xd'));var crypto=require(_0x8ea2('0xe'));var jsforce=require(_0x8ea2('0xf'));var deskjs=require(_0x8ea2('0x10'));var toCsv=require(_0x8ea2('0xa'));var querystring=require(_0x8ea2('0x11'));var Papa=require(_0x8ea2('0x12'));var Redis=require(_0x8ea2('0x13'));var authService=require(_0x8ea2('0x14'));var qs=require(_0x8ea2('0x15'));var as=require('../../components/parsers/advancedSearch');var pdf=require('../../components/export/pdf');var hardwareService=require(_0x8ea2('0x16'));var logger=require(_0x8ea2('0x17'))(_0x8ea2('0x18'));var utils=require('../../config/utils');var config=require(_0x8ea2('0x19'));var licenseUtil=require(_0x8ea2('0x1a'));var db=require(_0x8ea2('0x1b'))['db'];config[_0x8ea2('0x1c')]=_[_0x8ea2('0x1d')](config['redis'],{'host':_0x8ea2('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x8ea2('0x1f'))[_0x8ea2('0x20')](socket);var jayson=require(_0x8ea2('0x21'));var client=jayson[_0x8ea2('0x22')][_0x8ea2('0x23')]({'port':0x232b});var client9004=jayson[_0x8ea2('0x22')][_0x8ea2('0x23')]({'port':0x232c});function respondWithRpcPromise(_0x11f5e8,_0x474873,_0x396aab,_0x2dfa7c){return new BPromise(function(_0x1c1715,_0x3bc774){var _0xaa8abf=_0x2dfa7c||client;return _0xaa8abf[_0x8ea2('0x24')](_0x11f5e8,_0x396aab)[_0x8ea2('0x25')](function(_0x467045){logger[_0x8ea2('0x26')](_0x8ea2('0x27'),_0x474873,_0x8ea2('0x28'));logger[_0x8ea2('0x29')](_0x8ea2('0x2a'),_0x474873,'request\x20sent',JSON['stringify'](_0x467045));if(_0x467045[_0x8ea2('0x2b')]){if(_0x467045[_0x8ea2('0x2b')][_0x8ea2('0x2c')]===0x1f4){logger['error'](_0x8ea2('0x27'),_0x474873,_0x467045[_0x8ea2('0x2b')]['message']);return _0x3bc774(_0x467045[_0x8ea2('0x2b')][_0x8ea2('0x2d')]);}logger[_0x8ea2('0x2b')](_0x8ea2('0x27'),_0x474873,_0x467045[_0x8ea2('0x2b')][_0x8ea2('0x2d')]);return _0x1c1715(_0x467045[_0x8ea2('0x2b')][_0x8ea2('0x2d')]);}else{logger[_0x8ea2('0x26')]('ChatInteraction,\x20%s,\x20%s',_0x474873,_0x8ea2('0x28'));_0x1c1715(_0x467045['result'][_0x8ea2('0x2d')]);}})[_0x8ea2('0x2e')](function(_0x29b38f){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x474873,_0x29b38f);_0x3bc774(_0x29b38f);});});}function respondWithStatusCode(_0x2e4da3,_0x4dc7bf){_0x4dc7bf=_0x4dc7bf||0xcc;return function(_0x200a49){if(_0x200a49){return _0x2e4da3['sendStatus'](_0x4dc7bf);}return _0x2e4da3[_0x8ea2('0x2f')](_0x4dc7bf)[_0x8ea2('0x30')]();};}function respondWithResult(_0x21c526,_0x266db8){_0x266db8=_0x266db8||0xc8;return function(_0x4e1b90){if(_0x4e1b90){return _0x21c526['status'](_0x266db8)[_0x8ea2('0x31')](_0x4e1b90);}};}function respondWithFilteredResult(_0x4da5b3,_0x4a9875){return function(_0x287078){if(_0x287078){var _0x24f187=typeof _0x4a9875[_0x8ea2('0x32')]===_0x8ea2('0x33')&&typeof _0x4a9875[_0x8ea2('0x34')]===_0x8ea2('0x33');var _0x316707=_0x287078[_0x8ea2('0x35')];var _0x9c5fac=_0x24f187?0x0:_0x4a9875['offset'];var _0x5b7ff9=_0x24f187?_0x287078[_0x8ea2('0x35')]:_0x4a9875[_0x8ea2('0x32')]+_0x4a9875['limit'];var _0x4a110f;if(_0x5b7ff9>=_0x316707){_0x5b7ff9=_0x316707;_0x4a110f=0xc8;}else{_0x4a110f=0xce;}_0x4da5b3[_0x8ea2('0x2f')](_0x4a110f);return _0x4da5b3['set'](_0x8ea2('0x36'),_0x9c5fac+'-'+_0x5b7ff9+'/'+_0x316707)[_0x8ea2('0x31')](_0x287078);}return null;};}function patchUpdates(_0x53fd06){return function(_0x17b21c){try{jsonpatch[_0x8ea2('0x37')](_0x17b21c,_0x53fd06,!![]);}catch(_0x33abc8){return BPromise['reject'](_0x33abc8);}return _0x17b21c['save']();};}function saveUpdates(_0x49a252,_0x3880c3){return function(_0x233e12){if(_0x233e12){return _0x233e12[_0x8ea2('0x38')](_0x49a252)['then'](function(_0x456487){return _0x456487;});}return null;};}function removeEntity(_0x391b08,_0x3d5bf0){return function(_0x278e5d){if(_0x278e5d){return _0x278e5d[_0x8ea2('0x39')]()[_0x8ea2('0x25')](function(){_0x391b08[_0x8ea2('0x2f')](0xcc)[_0x8ea2('0x30')]();});}};}function handleEntityNotFound(_0x5e9b1f,_0x955ef3){return function(_0x29e3f5){if(!_0x29e3f5){_0x5e9b1f[_0x8ea2('0x3a')](0x194);}return _0x29e3f5;};}function handleError(_0x467d97,_0x4eebc1){_0x4eebc1=_0x4eebc1||0x1f4;return function(_0x2a1f14){logger['error'](_0x2a1f14[_0x8ea2('0x3b')]);if(_0x2a1f14[_0x8ea2('0x3c')]){delete _0x2a1f14[_0x8ea2('0x3c')];}_0x467d97[_0x8ea2('0x2f')](_0x4eebc1)['send'](_0x2a1f14);};}function getMustacheRender(_0x2bed24,_0x531979){return Mustache['render'](_0x2bed24,_[_0x8ea2('0x3d')](_0x531979['body'],{'contact':_0x531979[_0x8ea2('0x3e')],'message':_0x531979[_0x8ea2('0x2d')],'agent':_0x531979[_0x8ea2('0x3f')],'interaction':_0x531979[_0x8ea2('0x40')],'account':_0x531979[_0x8ea2('0x41')]}))||'';}function getInteractionUsers(_0x4ae536,_0x84685d){return new BPromise(function(_0x5c5d2d,_0x12a6c2){try{if(_0x84685d[_0x4ae536['id']]){_0x4ae536[_0x8ea2('0x42')]=_[_0x8ea2('0x43')](_0x84685d[_0x4ae536['id']],function(_0x3995ff){return{'id':_0x3995ff['id'],'fullname':_0x3995ff['fullname']};});}}catch(_0x44e8bc){_0x12a6c2(_0x44e8bc);}_0x5c5d2d(_0x4ae536);});}function getInteractionTags(_0x57a6b8,_0x3f0c78){return new BPromise(function(_0x5ba351,_0x2ee78b){try{if(_0x57a6b8[_0x8ea2('0x44')]){_0x57a6b8[_0x8ea2('0x45')]=[];_0x57a6b8[_0x8ea2('0x44')][_0x8ea2('0x46')](',')[_0x8ea2('0x47')](function(_0x2f4fa8){_0x57a6b8['Tags']['push'](_0x3f0c78[_0x2f4fa8]);});}delete _0x57a6b8[_0x8ea2('0x44')];}catch(_0x53455a){_0x2ee78b(_0x53455a);}_0x5ba351(_0x57a6b8);});}function updateChatInteraction(_0x4b03fa,_0x59e2fa,_0x3cbc09){return new BPromise(function(_0x5d9ba0,_0x40a532){return getInteractionUsers(_0x4b03fa,_0x3cbc09)[_0x8ea2('0x25')](function(_0x39c944){return getInteractionTags(_0x39c944,_0x59e2fa);})[_0x8ea2('0x25')](function(_0x989d9b){_0x5d9ba0(_0x989d9b);})[_0x8ea2('0x2e')](function(_0x3b2219){_0x40a532(_0x3b2219);});});}exports[_0x8ea2('0x48')]=function(_0x5352b9,_0x3afb80){var _0x1ef615={},_0x1db25c={},_0x5cb6ad={'count':0x0,'rows':[]};var _0x2d6bbb=_[_0x8ea2('0x43')](db[_0x8ea2('0x49')][_0x8ea2('0x4a')],function(_0x20992d){return{'name':_0x20992d['fieldName'],'type':_0x20992d[_0x8ea2('0x4b')][_0x8ea2('0x4c')]};});_0x1db25c[_0x8ea2('0x4d')]=_['map'](_0x2d6bbb,_0x8ea2('0x3c'));_0x1db25c[_0x8ea2('0x4e')]=_[_0x8ea2('0x4f')](_0x5352b9[_0x8ea2('0x4e')]);_0x1db25c[_0x8ea2('0x50')]=_[_0x8ea2('0x51')](_0x1db25c[_0x8ea2('0x4d')],_0x1db25c[_0x8ea2('0x4e')]);_0x1ef615[_0x8ea2('0x52')]=_[_0x8ea2('0x51')](_0x1db25c[_0x8ea2('0x4d')],qs[_0x8ea2('0x53')](_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x53')]));_0x1ef615['attributes']=_0x1ef615[_0x8ea2('0x52')][_0x8ea2('0x54')]?_0x1ef615[_0x8ea2('0x52')]:_0x1db25c[_0x8ea2('0x4d')];if(!_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x55')](_0x8ea2('0x56'))){_0x1ef615[_0x8ea2('0x34')]=qs['limit'](_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x34')]);_0x1ef615[_0x8ea2('0x32')]=qs['offset'](_0x5352b9['query'][_0x8ea2('0x32')]);}_0x1ef615[_0x8ea2('0x57')]=qs[_0x8ea2('0x58')](_0x5352b9['query'][_0x8ea2('0x58')]);_0x1ef615[_0x8ea2('0x59')]=qs[_0x8ea2('0x50')](_[_0x8ea2('0x5a')](_0x5352b9[_0x8ea2('0x4e')],_0x1db25c['filters']),_0x2d6bbb);var _0x4afd85=[];var _0x24a22a=squel[_0x8ea2('0x5b')]()[_0x8ea2('0x5c')]('id')['field'](_0x8ea2('0x3c'))[_0x8ea2('0x5c')](_0x8ea2('0x5d'))['from']('tools_tags');var _0x48aebf=squel['select']()['field'](_0x8ea2('0x5e'))[_0x8ea2('0x5c')]('u.fullname')['field'](_0x8ea2('0x5f'))[_0x8ea2('0x60')](_0x8ea2('0x61'),'ui')['left_join'](_0x8ea2('0x62'),'u',_0x8ea2('0x63'));var _0x59e3df=squel[_0x8ea2('0x5b')]()[_0x8ea2('0x60')](_0x8ea2('0x64'),'i')[_0x8ea2('0x65')](_0x8ea2('0x66'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')['left_join']('users','o',_0x8ea2('0x67'))[_0x8ea2('0x65')](_0x8ea2('0x68'),'a',_0x8ea2('0x69'))[_0x8ea2('0x65')](_0x8ea2('0x6a'),'me',_0x8ea2('0x6b'))['left_join']('chat_interaction_has_tags','it','it.ChatInteractionId\x20=\x20i.id')[_0x8ea2('0x65')](_0x8ea2('0x6c'),'t',_0x8ea2('0x6d'));var _0x2bbec0=squel['expr']();var _0x11824e=[];var _0x2b8662=squel['expr']();var _0x21485a;if(_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x6e')]){_0x21485a=as[_0x8ea2('0x6f')](_0x5352b9[_0x8ea2('0x4e')]['search']);var _0x479c05=_0x21485a['sqlOperator'];for(var _0x53a62c=0x0;_0x53a62c<_0x21485a[_0x8ea2('0x70')][_0x8ea2('0x54')];_0x53a62c++){var _0x2d8221=_0x21485a[_0x8ea2('0x70')][_0x53a62c];var _0x491d3d='i';var _0x461d32=_[_0x8ea2('0x71')](_0x2d6bbb,[_0x8ea2('0x3c'),_0x2d8221[_0x8ea2('0x5c')]]);if(!_0x461d32){switch(_0x2d8221['field']){case _0x8ea2('0x72'):if(_0x2d8221['value']==0x1){_0x59e3df[_0x8ea2('0x73')]('`'+_0x2d8221['field']+_0x8ea2('0x74'));}else{_0x59e3df[_0x8ea2('0x73')]('`'+_0x2d8221['field']+'`\x20>\x200');}break;case _0x8ea2('0x75'):if(_0x2d8221['operator']===_0x8ea2('0x76')){if(_0x2d8221[_0x8ea2('0x77')][_0x8ea2('0x46')]('\x20')[_0x8ea2('0x54')]>0x1){_0x2bbec0[_0x479c05]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x8ea2('0x78')](_0x2d8221[_0x8ea2('0x77')]),null);}else{var _0x39776d='%'+_0x2d8221[_0x8ea2('0x77')]+'%';_0x2bbec0[_0x479c05](_0x8ea2('0x79'),_0x39776d,_0x39776d,_0x39776d);}}else{_0x461d32=_[_0x8ea2('0x71')](_0x2d6bbb,[_0x8ea2('0x3c'),_0x8ea2('0x7a')]);_0x2d8221[_0x8ea2('0x5c')]=_0x8ea2('0x7a');_0x3d55db=as[_0x8ea2('0x7b')](_0x491d3d,_0x461d32[_0x8ea2('0x4b')],_0x2d8221);_0x2bbec0[_0x479c05](_0x3d55db['text'],_0x3d55db[_0x8ea2('0x77')][_0x8ea2('0x7c')],_0x3d55db[_0x8ea2('0x77')][_0x8ea2('0x30')]);}break;case _0x8ea2('0x7d'):var _0x219f78=_0x2d8221[_0x8ea2('0x77')][_0x8ea2('0x46')](',')[_0x8ea2('0x43')](function(_0xefb7b){return Number(_0xefb7b);});_0x219f78[_0x8ea2('0x47')](function(_0x35cfc5){_0x2b8662['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x35cfc5+',%');});_0x11824e=_[_0x8ea2('0x7e')](_0x11824e,_0x219f78);break;case _0x8ea2('0x7f'):if(_0x2d8221[_0x8ea2('0x80')]===_0x8ea2('0x76')){_0x2bbec0[_0x479c05](_0x8ea2('0x81'),'%'+_0x2d8221['value']+'%',null);}else{_0x461d32=_['find'](_0x2d6bbb,['name',_0x8ea2('0x82')]);_0x2d8221[_0x8ea2('0x5c')]=_0x8ea2('0x82');_0x3d55db=as[_0x8ea2('0x7b')](_0x491d3d,_0x461d32[_0x8ea2('0x4b')],_0x2d8221);_0x2bbec0[_0x479c05](_0x3d55db[_0x8ea2('0x83')],_0x3d55db['value'][_0x8ea2('0x7c')],_0x3d55db[_0x8ea2('0x77')]['end']);}break;case'body':_0x3d55db=as[_0x8ea2('0x7b')]('me',null,_0x2d8221);_0x2bbec0[_0x479c05](_0x3d55db[_0x8ea2('0x83')],_0x3d55db[_0x8ea2('0x77')][_0x8ea2('0x7c')],_0x3d55db[_0x8ea2('0x77')][_0x8ea2('0x30')]);break;}}else{var _0x3d55db=as['buildExpression'](_0x491d3d,_0x461d32[_0x8ea2('0x4b')],_0x2d8221);_0x2bbec0[_0x479c05](_0x3d55db[_0x8ea2('0x83')],_0x3d55db[_0x8ea2('0x77')][_0x8ea2('0x7c')],_0x3d55db['value'][_0x8ea2('0x30')]);}}}else{var _0x356099=_(_0x5352b9[_0x8ea2('0x4e')])['keys']()[_0x8ea2('0x43')](function(_0x5c2d05){return _['some'](_0x2d6bbb,[_0x8ea2('0x3c'),_0x5c2d05])?_0x5c2d05:undefined;})[_0x8ea2('0x84')]()['value']();if(!_['isEmpty'](_0x356099)){_0x356099['forEach'](function(_0x167f15){if(_0x167f15==='ChatWebsiteId'){_0x59e3df['where'](_0x8ea2('0x85'),[][_0x8ea2('0x86')](_0x5352b9[_0x8ea2('0x4e')][_0x167f15]));}else if(_0x167f15===_0x8ea2('0x87')){var _0x1681d8=JSON[_0x8ea2('0x88')](_0x5352b9[_0x8ea2('0x4e')][_0x167f15])[_0x8ea2('0x89')];var _0x14a5de=JSON[_0x8ea2('0x88')](_0x5352b9[_0x8ea2('0x4e')][_0x167f15])[_0x8ea2('0x8a')];_0x59e3df[_0x8ea2('0x59')](_0x8ea2('0x8b'),_0x1681d8,_0x14a5de);}else{if(_0x5352b9['query'][_0x167f15]===_0x8ea2('0x8c')){_0x59e3df[_0x8ea2('0x59')]('i.'+_0x167f15+_0x8ea2('0x8d'));}else{_0x59e3df['where']('i.'+_0x167f15+_0x8ea2('0x8e'),_0x5352b9['query'][_0x167f15]);}}});}if(_0x5352b9[_0x8ea2('0x4e')]['read']){if(_0x5352b9[_0x8ea2('0x4e')]['read']==0x1){_0x59e3df[_0x8ea2('0x73')](_0x8ea2('0x8f'));}else{_0x59e3df['having'](_0x8ea2('0x90'));}}if(_0x5352b9['query'][_0x8ea2('0x91')]){_0x11824e=_[_0x8ea2('0x92')](_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x91')])?_0x5352b9[_0x8ea2('0x4e')]['tag']:new Array(_0x5352b9['query'][_0x8ea2('0x91')]);_0x11824e['forEach'](function(_0x410f78){_0x2b8662['or'](_0x8ea2('0x93'),'%,'+_0x410f78+',%');});}if(_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x94')]){var _0x262cef=_0x5352b9[_0x8ea2('0x4e')]['filter']['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x8ea2('0x95')](_0x262cef)){_0x2bbec0['or']('i.id\x20LIKE\x20?',_0x262cef+'%');}else{_0x2bbec0['or'](_0x8ea2('0x96'),qs[_0x8ea2('0x78')](_0x262cef))['or'](_0x8ea2('0x97'),_0x262cef+'%');}}}_0x59e3df[_0x8ea2('0x59')](_0x2bbec0);_0x59e3df[_0x8ea2('0x98')](_0x8ea2('0x99'));var _0x4b4d64={'type':db[_0x8ea2('0x9a')][_0x8ea2('0x9b')][_0x8ea2('0x9c')],'raw':!![]};var _0x335a96=_0x59e3df[_0x8ea2('0x9d')]();_0x335a96['field']('i.id');_0x335a96[_0x8ea2('0x5c')](_0x8ea2('0x9e'),_0x8ea2('0x72'));if(_0x1ef615[_0x8ea2('0x57')]){_0x1ef615[_0x8ea2('0x57')][_0x8ea2('0x47')](function(_0x2e0bbe){var _0x9c4960=_0x2e0bbe[0x0]===_0x8ea2('0x9f')?_0x2e0bbe[0x0]:'i.'+_0x2e0bbe[0x0];_0x59e3df[_0x8ea2('0x57')](_0x9c4960,_0x2e0bbe[0x1]===_0x8ea2('0xa0')?![]:!![]);});}if(!_[_0x8ea2('0xa1')](_0x11824e)){_0x59e3df[_0x8ea2('0x73')](_0x2b8662);_0x335a96[_0x8ea2('0x59')](_0x8ea2('0xa2'),_0x11824e);}BPromise[_0x8ea2('0xa3')]()[_0x8ea2('0x25')](function(){if(!_0x21485a){if(_0x5352b9['query']['ChatWebsiteId'])return;_0x335a96[_0x8ea2('0x59')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');_0x59e3df[_0x8ea2('0x59')](_0x8ea2('0xa4'));return;}if(_0x5352b9['user'][_0x8ea2('0xa5')]!=='agent')return;return _0x5352b9[_0x8ea2('0xa6')][_0x8ea2('0xa7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x17dee8){if(_[_0x8ea2('0xa1')](_0x17dee8)){_0x335a96[_0x8ea2('0x59')](_0x8ea2('0xa8'));_0x59e3df[_0x8ea2('0x59')](_0x8ea2('0xa8'));}else{_0x335a96[_0x8ea2('0x59')](_0x8ea2('0x85'),_[_0x8ea2('0x43')](_0x17dee8,'id'));_0x59e3df[_0x8ea2('0x59')]('i.ChatWebsiteId\x20IN\x20?',_[_0x8ea2('0x43')](_0x17dee8,'id'));}});})[_0x8ea2('0x25')](function(){if(_0x5352b9['user'][_0x8ea2('0xa5')]==='agent'&&!_0x21485a&&!_0x5352b9['query']['ChatWebsiteId'])return[];return db[_0x8ea2('0xa9')]['query'](_0x335a96[_0x8ea2('0xaa')](),_0x4b4d64);})[_0x8ea2('0x25')](function(_0x12ed20){_0x5cb6ad[_0x8ea2('0x35')]=_0x12ed20[_0x8ea2('0x54')];if(_0x5cb6ad[_0x8ea2('0x35')]===0x0)return[];return db['sequelize'][_0x8ea2('0x4e')](_0x24a22a['toString'](),_0x4b4d64)[_0x8ea2('0x25')](function(_0x18aa81){_0x4afd85=_[_0x8ea2('0xab')](_0x18aa81,'id');_0x4b4d64=_[_0x8ea2('0x3d')](_0x4b4d64,{'model':db[_0x8ea2('0x49')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5352b9['query'][_0x8ea2('0x53')]){_0x1ef615[_0x8ea2('0x52')][_0x8ea2('0x47')](function(_0x2a82b2){_0x59e3df[_0x8ea2('0x5c')]('i.'+_0x2a82b2);});}else{_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0x9e'),_0x8ea2('0x72'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xac'),_0x8ea2('0xad'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xae'),_0x8ea2('0xaf'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xb0'),_0x8ea2('0x9f'));_0x59e3df['field'](_0x8ea2('0xb1'));_0x59e3df['field']('c.firstName',_0x8ea2('0xb2'));_0x59e3df[_0x8ea2('0x5c')]('c.lastName',_0x8ea2('0xb3'));_0x59e3df[_0x8ea2('0x5c')]('c.email',_0x8ea2('0xb4'));_0x59e3df[_0x8ea2('0x5c')]('c.phone',_0x8ea2('0xb5'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xb6'),_0x8ea2('0xb7'));_0x59e3df[_0x8ea2('0x5c')]('c.fax',_0x8ea2('0xb8'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xb9'),_0x8ea2('0xba'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xbb'),_0x8ea2('0xbc'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xbd'),'TagIds');}if(_0x1ef615[_0x8ea2('0x34')])_0x59e3df['limit'](_0x1ef615[_0x8ea2('0x34')]);if(_0x1ef615[_0x8ea2('0x32')])_0x59e3df[_0x8ea2('0x32')](_0x1ef615[_0x8ea2('0x32')]);return db[_0x8ea2('0xa9')]['query'](_0x59e3df[_0x8ea2('0xaa')](),_0x4b4d64);})[_0x8ea2('0x25')](function(_0x4fdd16){if(_0x4fdd16['length']>0x0)_0x48aebf[_0x8ea2('0x59')](_0x8ea2('0xbe'),_['map'](_0x4fdd16,'id'));return db['sequelize'][_0x8ea2('0x4e')](_0x48aebf[_0x8ea2('0xaa')](),_0x4b4d64)['then'](function(_0x2b7e80){var _0x2f6673=_[_0x8ea2('0xbf')](_0x2b7e80,_0x8ea2('0xc0'));var _0xdf4de9=[];_0x4fdd16['forEach'](function(_0x2e3a5d){_0xdf4de9[_0x8ea2('0xc1')](updateChatInteraction(_0x2e3a5d,_0x4afd85,_0x2f6673));});return BPromise[_0x8ea2('0xc2')](_0xdf4de9);});});})[_0x8ea2('0x25')](function(_0x412af1){_0x5cb6ad['rows']=_0x412af1;return _0x5cb6ad;})[_0x8ea2('0x25')](respondWithFilteredResult(_0x3afb80,_0x1ef615))['catch'](handleError(_0x3afb80,null));};exports['show']=function(_0x9468be,_0x17e9fc){var _0x5c95ec={'raw':![],'where':{'id':_0x9468be[_0x8ea2('0xc3')]['id']}},_0x239516={};_0x239516[_0x8ea2('0x4d')]=_[_0x8ea2('0x4f')](db[_0x8ea2('0x49')][_0x8ea2('0x4a')]);_0x239516['query']=_[_0x8ea2('0x4f')](_0x9468be[_0x8ea2('0x4e')]);_0x239516[_0x8ea2('0x50')]=_['intersection'](_0x239516[_0x8ea2('0x4d')],_0x239516[_0x8ea2('0x4e')]);_0x5c95ec[_0x8ea2('0x52')]=_[_0x8ea2('0x51')](_0x239516[_0x8ea2('0x4d')],qs['fields'](_0x9468be[_0x8ea2('0x4e')][_0x8ea2('0x53')]));_0x5c95ec[_0x8ea2('0x52')]=_0x5c95ec[_0x8ea2('0x52')]['length']?_0x5c95ec['attributes']:_0x239516[_0x8ea2('0x4d')];if(_0x9468be['query'][_0x8ea2('0xc4')]){_0x5c95ec['include']=[{'all':!![]}];}_0x5c95ec=_[_0x8ea2('0x3d')]({},_0x5c95ec,_0x9468be[_0x8ea2('0xc5')]);return db[_0x8ea2('0x49')][_0x8ea2('0x71')](_0x5c95ec)[_0x8ea2('0x25')](handleEntityNotFound(_0x17e9fc,null))[_0x8ea2('0x25')](respondWithResult(_0x17e9fc,null))[_0x8ea2('0x2e')](handleError(_0x17e9fc,null));};exports['create']=function(_0x2c5677,_0x224fca){return db[_0x8ea2('0x49')][_0x8ea2('0xc6')](_0x2c5677[_0x8ea2('0xc7')],{})[_0x8ea2('0x25')](respondWithResult(_0x224fca,0xc9))['catch'](handleError(_0x224fca,null));};exports[_0x8ea2('0x38')]=function(_0x463372,_0x76085){if(_0x463372[_0x8ea2('0xc7')]['id']){delete _0x463372['body']['id'];}return db['ChatInteraction']['find']({'where':{'id':_0x463372[_0x8ea2('0xc3')]['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x76085,null))[_0x8ea2('0x25')](saveUpdates(_0x463372['body'],null))[_0x8ea2('0x25')](respondWithResult(_0x76085,null))[_0x8ea2('0x2e')](handleError(_0x76085,null));};exports[_0x8ea2('0x39')]=function(_0x500b47,_0x331019){return db[_0x8ea2('0x49')]['find']({'where':{'id':_0x500b47[_0x8ea2('0xc3')]['id']}})['then'](handleEntityNotFound(_0x331019,null))['then'](removeEntity(_0x331019,null))[_0x8ea2('0x2e')](handleError(_0x331019,null));};exports[_0x8ea2('0xc8')]=function(_0x405020,_0x5c9359){return db[_0x8ea2('0x49')][_0x8ea2('0xc8')]()[_0x8ea2('0x25')](respondWithResult(_0x5c9359,null))[_0x8ea2('0x2e')](handleError(_0x5c9359,null));};exports[_0x8ea2('0xc9')]=function(_0x11c59e,_0x11b02a){var _0x5ab2c4=_0x11c59e[_0x8ea2('0xc3')]['id'];var _0x111f97;var _0xf76d70;var _0x384500;return db[_0x8ea2('0x49')][_0x8ea2('0xca')]({'where':{'id':_0x5ab2c4}})[_0x8ea2('0x25')](function(_0x568581){_0x111f97=_0x568581;return db[_0x8ea2('0xcb')][_0x8ea2('0xca')]({'where':{'id':_0x568581[_0x8ea2('0xcc')]},'attributes':['id',_0x8ea2('0xcd'),_0x8ea2('0xce'),'vidaooTopic',_0x8ea2('0xcf'),_0x8ea2('0xd0')],'raw':!![]});})[_0x8ea2('0x25')](function(_0x1c336e){if(_0x1c336e&&_0x1c336e[_0x8ea2('0xcd')]&&_0x1c336e[_0x8ea2('0xce')]){_0xf76d70=_0x1c336e;var _0x473ae2={'interaction':{'id':_0x5ab2c4},'agent':{'id':_0x11c59e[_0x8ea2('0xa6')]['id'],'name':_0x11c59e[_0x8ea2('0xa6')]['name'],'fullname':_0x11c59e['user']['fullname'],'email':_0x11c59e[_0x8ea2('0xa6')]['email']},'contact':_0x11c59e[_0x8ea2('0xc7')][_0x8ea2('0x3e')],'account':_0x11c59e[_0x8ea2('0xc7')][_0x8ea2('0x41')]};var _0x6c0ccc={'rejectUnauthorized':![],'method':_0x8ea2('0xd1'),'url':_0x8ea2('0xd2'),'headers':{'X-APIKEY':_0x1c336e[_0x8ea2('0xcd')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x11c59e[_0x8ea2('0xa6')][_0x8ea2('0xd3')]],'buttons':null,'topic':_0xf76d70['vidaooTopic'],'note':_[_0x8ea2('0xd4')](_0xf76d70[_0x8ea2('0xcf')])?null:getMustacheRender(_0xf76d70[_0x8ea2('0xcf')],_0x473ae2),'metadata':null},'redirect':_0x8ea2('0xd5'),'json':!![]};try{if(!_[_0x8ea2('0xd4')](_0xf76d70[_0x8ea2('0xd0')])){var _0xc6888c=getMustacheRender(_0xf76d70[_0x8ea2('0xd0')],_0x473ae2);var _0x152d46=JSON[_0x8ea2('0x88')](_0xc6888c);_0x6c0ccc[_0x8ea2('0xc7')][_0x8ea2('0xd6')]=_0x152d46;}}catch(_0x465e7f){throw new db[(_0x8ea2('0x9a'))][(_0x8ea2('0xd7'))](_0x8ea2('0xd8'));}return rp(_0x6c0ccc);}else{throw new db[(_0x8ea2('0x9a'))]['ValidationError']('Error\x20in\x20Vidaoo\x20configuration');}})['then'](function(_0x4b2c0f){_0x384500=_0x4b2c0f;if(_0x384500['id']){var _0x2fcddc={'body':_0x384500[_0x8ea2('0xd9')],'ChatWebsiteId':_0xf76d70['id'],'ChatInteractionId':_0x111f97['id'],'direction':'out','UserId':_0x11c59e[_0x8ea2('0xa6')]['id']};return db[_0x8ea2('0xda')][_0x8ea2('0xc6')](_0x2fcddc,{});}else{throw new db[(_0x8ea2('0x9a'))]['ValidationError'](_0x8ea2('0xdb'));}})['then'](function(){return _0x111f97[_0x8ea2('0xdc')]({'vidaooSessionId':_0x384500['id']});})[_0x8ea2('0x25')](respondWithResult(_0x11b02a,null))[_0x8ea2('0x2e')](handleError(_0x11b02a,null));};exports[_0x8ea2('0xdd')]=function(_0x3b6b03,_0x3292bc){if(_0x3b6b03['body']['id']){delete _0x3b6b03['body']['id'];}return db[_0x8ea2('0x49')][_0x8ea2('0x71')]({'where':{'id':_0x3b6b03['params']['id']},'include':[{'model':db[_0x8ea2('0xde')],'as':'Contact'}]})[_0x8ea2('0x25')](handleEntityNotFound(_0x3292bc,null))[_0x8ea2('0x25')](saveUpdates(_0x3b6b03[_0x8ea2('0xc7')],null))[_0x8ea2('0x25')](respondWithResult(_0x3292bc,null))[_0x8ea2('0x2e')](handleError(_0x3292bc,null));};exports[_0x8ea2('0xdf')]=function(_0x1383b4,_0x4c1b9d,_0x3f3822){if(_0x1383b4[_0x8ea2('0xc7')]['id']){delete _0x1383b4[_0x8ea2('0xc7')]['id'];}return db[_0x8ea2('0x49')][_0x8ea2('0x71')]({'where':{'id':_0x1383b4[_0x8ea2('0xc3')]['id']}})[_0x8ea2('0x25')](function(_0x1c974d){if(!_0x1c974d){logger[_0x8ea2('0x2b')]('abandonInteraction,\x20%s,\x20%s,\x20%s',_0x8ea2('0xdf'),0x194,_0x8ea2('0xe0'));_0x4c1b9d[_0x8ea2('0x3a')](0x194);}else{if(_0x1c974d['UserId']){throw new db[(_0x8ea2('0x9a'))][(_0x8ea2('0xd7'))](_0x8ea2('0xe1'));}}return _0x1c974d;})[_0x8ea2('0x25')](function(_0xe18090){if(_0xe18090){return _0xe18090[_0x8ea2('0x38')]({'closed':_0x1383b4['body']['closed'],'disposition':_0x1383b4[_0x8ea2('0xc7')][_0x8ea2('0xe2')]})[_0x8ea2('0x25')](function(_0x695f4a){return _0x695f4a;});}})[_0x8ea2('0x25')](function(_0x57ff72){return respondWithRpcPromise(_0x8ea2('0xe3'),'abandon',_0x1383b4[_0x8ea2('0xc7')],client9004);})[_0x8ea2('0x25')](respondWithResult(_0x4c1b9d,null))['catch'](handleError(_0x4c1b9d,null));};exports[_0x8ea2('0xe4')]=function(_0x254b51,_0x2c11d2,_0x2aaa88){_0x254b51[_0x8ea2('0xc7')][_0x8ea2('0x3c')]=_0x254b51[_0x8ea2('0xe5')][_0x8ea2('0xe6')];_0x254b51[_0x8ea2('0xc7')][_0x8ea2('0xe7')]=_0x254b51['file'][_0x8ea2('0xe8')];_0x254b51[_0x8ea2('0xc7')][_0x8ea2('0x4b')]=_0x254b51['file'][_0x8ea2('0xe9')];return db['Attachment'][_0x8ea2('0xc6')](_0x254b51[_0x8ea2('0xc7')])[_0x8ea2('0x25')](respondWithResult(_0x2c11d2,0xc9))[_0x8ea2('0x2e')](handleError(_0x2c11d2,null));};exports[_0x8ea2('0xea')]=function(_0x1786ac,_0x7a45a8,_0x3a68e2){return db[_0x8ea2('0x49')]['findOne']({'where':{'id':_0x1786ac[_0x8ea2('0xc3')]['id']},'raw':!![]})[_0x8ea2('0x25')](handleEntityNotFound(_0x7a45a8,null))[_0x8ea2('0x25')](function(_0x8d4abd){if(_0x8d4abd){if(_0x8d4abd[_0x8ea2('0xeb')]){return _0x7a45a8[_0x8ea2('0x2f')](0x193)[_0x8ea2('0x31')]({'status':0x193,'message':_0x8ea2('0xec')});}return db[_0x8ea2('0xed')]['findOne']({'where':{'id':_0x1786ac[_0x8ea2('0x4e')][_0x8ea2('0xee')]},'raw':!![]})[_0x8ea2('0x25')](handleEntityNotFound(_0x7a45a8,null));}})[_0x8ea2('0x25')](function(_0xcbb6b3){if(_0xcbb6b3){var _0x4bdbe0=_0xcbb6b3[_0x8ea2('0xef')]!==null;var _0x44791f=path[_0x8ea2('0xf0')](config[_0x8ea2('0xf1')],_0x8ea2('0xf2'));if(_0x4bdbe0){_0x44791f=path['join'](_0x44791f,_0x8ea2('0xf3'));}var _0x4e7aff=path[_0x8ea2('0xf0')](_0x44791f,_0xcbb6b3[_0x8ea2('0xe7')]);return _0x7a45a8[_0x8ea2('0xf4')](_0x4e7aff);}})['catch'](handleError(_0x7a45a8,null));};exports[_0x8ea2('0xf5')]=function(_0x48a2e2,_0x4e804c){var _0x487bab=null;var _0x1a0966=null;var _0x50087b=null;var _0x196b89=null;if(_0x48a2e2[_0x8ea2('0xc7')]['id']){delete _0x48a2e2[_0x8ea2('0xc7')]['id'];}if(_0x48a2e2[_0x8ea2('0xc7')][_0x8ea2('0xf6')]){_0x196b89=path[_0x8ea2('0xf0')](config[_0x8ea2('0xf1')],_0x8ea2('0xf7'),util['format']('transcript-%s.txt',Date[_0x8ea2('0xf8')]()));_0x48a2e2[_0x8ea2('0xc7')][_0x8ea2('0xf9')]=_0x196b89;}return db['ChatInteraction']['find']({'where':{'id':_0x48a2e2['params']['id']},'include':[{'model':db[_0x8ea2('0xda')],'as':'Messages','include':[{'model':db['User'],'as':_0x8ea2('0x7f')}]}]})[_0x8ea2('0x25')](handleEntityNotFound(_0x4e804c,null))['then'](saveUpdates(_0x48a2e2['body'],null))[_0x8ea2('0x25')](function(_0x48eac8){if(_0x48eac8){_0x487bab=_0x48eac8;return db['ChatWebsite'][_0x8ea2('0x71')]({'where':{'id':_0x487bab[_0x8ea2('0xcc')]}});}})[_0x8ea2('0x25')](function(_0x54da21){if(_0x54da21){_0x50087b=_0x54da21;return db[_0x8ea2('0xde')][_0x8ea2('0x71')]({'where':{'id':_0x487bab[_0x8ea2('0x7a')]}});}})[_0x8ea2('0x25')](function(_0x3a43d5){if(_0x3a43d5){_0x1a0966=_0x3a43d5;if(_0x196b89){var _0x535b01=null;for(var _0x22e4cd=0x1;_0x22e4cd<_0x487bab['Messages'][_0x8ea2('0x54')];++_0x22e4cd){_0x535b01=_0x487bab['Messages'][_0x22e4cd];var _0x230a70=_0x535b01['UserId']?util['format'](_0x8ea2('0xfa'),_0x50087b[_0x8ea2('0xfb')],_0x535b01[_0x8ea2('0x82')]):_0x8ea2('0xfc');var _0x332670=_0x48a2e2[_0x8ea2('0xc7')][_0x8ea2('0xfd')]||util[_0x8ea2('0xfe')]('%s%d',_0x8ea2('0xff'),_0x535b01[_0x8ea2('0x7a')]);switch(_0x50087b[_0x8ea2('0x100')]){case _0x8ea2('0x101'):_0x230a70=_0x535b01[_0x8ea2('0x82')]?util['format'](_0x8ea2('0xfa'),_0x50087b['agentAlias'],_0x535b01[_0x8ea2('0x82')]):'System';break;case _0x8ea2('0x102'):_0x230a70=_0x535b01[_0x8ea2('0x82')]?_0x535b01[_0x8ea2('0x7f')][_0x8ea2('0x103')]||_0x535b01['User']['fullname']:'System';break;case _0x8ea2('0x104'):_0x230a70=_0x535b01[_0x8ea2('0x82')]?_0x535b01['User'][_0x8ea2('0x105')]:_0x8ea2('0xfc');break;default:_0x230a70=_0x535b01[_0x8ea2('0x82')]?util[_0x8ea2('0xfe')](_0x8ea2('0xfa'),_0x50087b[_0x8ea2('0xfb')],_0x535b01[_0x8ea2('0x82')]):_0x8ea2('0xfc');}var _0x422280=util[_0x8ea2('0xfe')](_0x8ea2('0x106'),moment(_0x535b01[_0x8ea2('0x87')])[_0x8ea2('0xfe')]('MM/DD/YYYY\x20HH:mm:ss'),_0x535b01[_0x8ea2('0x107')]==='in'?_0x332670:_0x230a70,_0x535b01['body']);if(!_0x535b01['secret']){fs[_0x8ea2('0x108')](_0x196b89,_0x422280);}}return db['MailAccount'][_0x8ea2('0xca')]({'where':{'service':!![]},'include':[{'model':db[_0x8ea2('0x109')],'as':_0x8ea2('0x10a'),'raw':!![]}]});}}})[_0x8ea2('0x25')](function(_0xff0fae){if(_0xff0fae&&_0xff0fae['Smtp']&&_0x48a2e2[_0x8ea2('0xc7')]){var _0x3f5688={'tls':{'rejectUnauthorized':![]}};if(_0xff0fae[_0x8ea2('0x10a')]['service']){_0x3f5688['service']=_0xff0fae[_0x8ea2('0x10a')][_0x8ea2('0x10b')];}else{_0x3f5688['host']=_0xff0fae[_0x8ea2('0x10a')]['host'];_0x3f5688[_0x8ea2('0x10c')]=_0xff0fae[_0x8ea2('0x10a')][_0x8ea2('0x10c')];_0x3f5688[_0x8ea2('0x10d')]=_0xff0fae[_0x8ea2('0x10a')][_0x8ea2('0x10d')];}if(_0xff0fae[_0x8ea2('0x10a')][_0x8ea2('0x10e')]){_0x3f5688[_0x8ea2('0x10f')]={'user':_0xff0fae['Smtp']['user'],'pass':_0xff0fae[_0x8ea2('0x10a')]['pass']};}return respondWithRpcPromise(_0x8ea2('0x110'),_0x8ea2('0x111'),{'account':_0x3f5688,'message':{'from':util[_0x8ea2('0xfe')](_0x8ea2('0x112'),_0xff0fae['name'],_0xff0fae[_0x8ea2('0xd3')]||_0xff0fae[_0x8ea2('0x10a')]['user']),'to':_0x48a2e2[_0x8ea2('0xc7')][_0x8ea2('0xf6')],'subject':_0x8ea2('0x113'),'text':util['format']('Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a',_0x48a2e2['body'][_0x8ea2('0xf6')]),'attachments':[{'path':_0x196b89}]}})['then'](function(){return _0x487bab;})[_0x8ea2('0x2e')](function(_0x488acb){console[_0x8ea2('0x2b')](_0x488acb);});}else{return _0x487bab;}})[_0x8ea2('0x25')](respondWithStatusCode(_0x4e804c,0xc8))[_0x8ea2('0x2e')](handleError(_0x4e804c,null));};exports[_0x8ea2('0x114')]=function(_0x54925a,_0x295339,_0x55c23c){return db['ChatMessage']['find']({'where':{'id':_0x54925a[_0x8ea2('0xc3')]['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x295339,null))[_0x8ea2('0x25')](function(_0x48b51d){if(_0x48b51d){return _0x48b51d[_0x8ea2('0x114')](_0x54925a[_0x8ea2('0xc7')][_0x8ea2('0x115')],_[_0x8ea2('0x116')](_0x54925a[_0x8ea2('0xc7')],[_0x8ea2('0x115'),'id'])||{});}})[_0x8ea2('0x25')](respondWithResult(_0x295339,null))[_0x8ea2('0x2e')](handleError(_0x295339,null));};exports[_0x8ea2('0x117')]=function(_0x102d70,_0x2b014d,_0xc35654){var _0x355b91={'raw':![],'where':{}};var _0x1cf414={};var _0x48e543={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x8ea2('0xca')]({'where':{'id':_0x102d70['params']['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x2b014d,null))[_0x8ea2('0x25')](function(_0x3ebbc8){if(_0x3ebbc8){_0x1cf414['model']=_[_0x8ea2('0x4f')](db['ChatMessage']['rawAttributes']);_0x1cf414[_0x8ea2('0x4e')]=_[_0x8ea2('0x4f')](_0x102d70[_0x8ea2('0x4e')]);_0x1cf414[_0x8ea2('0x50')]=_[_0x8ea2('0x51')](_0x1cf414[_0x8ea2('0x4d')],_0x1cf414[_0x8ea2('0x4e')]);_0x355b91['attributes']=_[_0x8ea2('0x51')](_0x1cf414[_0x8ea2('0x4d')],qs[_0x8ea2('0x53')](_0x102d70['query'][_0x8ea2('0x53')]));_0x355b91[_0x8ea2('0x52')]=_0x355b91[_0x8ea2('0x52')]['length']?_0x355b91[_0x8ea2('0x52')]:_0x1cf414[_0x8ea2('0x4d')];if(!_0x102d70[_0x8ea2('0x4e')]['hasOwnProperty']('nolimit')){_0x355b91[_0x8ea2('0x34')]=qs['limit'](_0x102d70[_0x8ea2('0x4e')]['limit']);_0x355b91[_0x8ea2('0x32')]=qs[_0x8ea2('0x32')](_0x102d70[_0x8ea2('0x4e')][_0x8ea2('0x32')]);}_0x355b91[_0x8ea2('0x57')]=qs['sort'](_0x102d70[_0x8ea2('0x4e')][_0x8ea2('0x58')]);_0x355b91[_0x8ea2('0x59')]=qs[_0x8ea2('0x50')](_[_0x8ea2('0x5a')](_0x102d70[_0x8ea2('0x4e')],_0x1cf414['filters']));_0x355b91['where'][_0x8ea2('0xc0')]=_0x3ebbc8['id'];if(_0x102d70[_0x8ea2('0x4e')]['filter']){_0x355b91[_0x8ea2('0x59')]=_[_0x8ea2('0x3d')](_0x355b91[_0x8ea2('0x59')],{'$or':_[_0x8ea2('0x43')](_0x355b91['attributes'],function(_0x19ea2b){var _0x4450e8={};_0x4450e8[_0x19ea2b]={'$like':'%'+_0x102d70['query'][_0x8ea2('0x94')]+'%'};return _0x4450e8;})});}if(_0x102d70['query'][_0x8ea2('0x89')]){var _0x479b40=_0x102d70['query'][_0x8ea2('0x89')][_0x8ea2('0x46')](',');var _0xbb5964={};_0xbb5964[_0x479b40[0x0]]={'$gte':moment(_0x479b40[0x1])[_0x8ea2('0xfe')]('YYYY-MM-DD\x20HH:mm:ss')};_0x355b91[_0x8ea2('0x59')]=_[_0x8ea2('0x3d')](_0x355b91[_0x8ea2('0x59')],_0xbb5964);}_0x355b91=_['merge']({},_0x355b91,_0x102d70[_0x8ea2('0xc5')]);return db[_0x8ea2('0xda')][_0x8ea2('0x35')]({'where':_0x355b91[_0x8ea2('0x59')]})[_0x8ea2('0x25')](function(_0x46d38e){_0x48e543[_0x8ea2('0x35')]=_0x46d38e;if(_0x102d70['query'][_0x8ea2('0xc4')]){_0x355b91[_0x8ea2('0x118')]=[{'all':!![]}];}return db[_0x8ea2('0xda')][_0x8ea2('0x119')](_0x355b91);})[_0x8ea2('0x25')](function(_0x23f247){_0x48e543[_0x8ea2('0x11a')]=_0x23f247;return _0x48e543;});}})[_0x8ea2('0x25')](respondWithFilteredResult(_0x2b014d,_0x355b91))[_0x8ea2('0x2e')](handleError(_0x2b014d,null));};exports[_0x8ea2('0x11b')]=function(_0x3a37fb,_0x455009,_0x556919){var _0x58a0e5={'where':{}},_0x3be2ce={},_0x56a973={'count':0x0,'rows':[]};return db[_0x8ea2('0x49')][_0x8ea2('0xca')]({'where':{'id':_0x3a37fb[_0x8ea2('0xc3')]['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x455009,null))[_0x8ea2('0x25')](function(_0x515381){if(_0x515381){_0x3be2ce[_0x8ea2('0x4d')]=_[_0x8ea2('0x4f')](db['ChatMessage'][_0x8ea2('0x4a')]);_0x3be2ce[_0x8ea2('0x4e')]=_[_0x8ea2('0x4f')](_0x3a37fb[_0x8ea2('0x4e')]);_0x3be2ce['filters']=_[_0x8ea2('0x51')](_0x3be2ce[_0x8ea2('0x4d')],_0x3be2ce[_0x8ea2('0x4e')]);_0x58a0e5[_0x8ea2('0x52')]=_['intersection'](_0x3be2ce[_0x8ea2('0x4d')],qs[_0x8ea2('0x53')](_0x3a37fb[_0x8ea2('0x4e')]['fields']));_0x58a0e5[_0x8ea2('0x52')]=_0x58a0e5[_0x8ea2('0x52')][_0x8ea2('0x54')]?_0x58a0e5['attributes']:_0x3be2ce['model'];if(!_0x3a37fb[_0x8ea2('0x4e')]['hasOwnProperty'](_0x8ea2('0x56'))){_0x58a0e5[_0x8ea2('0x34')]=qs[_0x8ea2('0x34')](_0x3a37fb[_0x8ea2('0x4e')]['limit']);_0x58a0e5[_0x8ea2('0x32')]=qs['offset'](_0x3a37fb['query']['offset']);}_0x58a0e5['order']=qs[_0x8ea2('0x58')](_0x3a37fb[_0x8ea2('0x4e')][_0x8ea2('0x58')]);_0x58a0e5[_0x8ea2('0x59')]=qs[_0x8ea2('0x50')](_['pick'](_0x3a37fb['query'],_0x3be2ce[_0x8ea2('0x50')]));_0x58a0e5['where']['ChatInteractionId']=_0x515381['id'];if(_0x3a37fb[_0x8ea2('0x4e')][_0x8ea2('0x94')]){_0x58a0e5[_0x8ea2('0x59')]=_['merge'](_0x58a0e5[_0x8ea2('0x59')],{'$or':_['map'](_0x58a0e5[_0x8ea2('0x52')],function(_0x4041ec){var _0x56178b={};_0x56178b[_0x4041ec]={'$like':'%'+_0x3a37fb[_0x8ea2('0x4e')][_0x8ea2('0x94')]+'%'};return _0x56178b;})});}_0x58a0e5['where'][_0x8ea2('0x11c')]=![];if(_0x3a37fb[_0x8ea2('0x4e')]['id']){_0x58a0e5[_0x8ea2('0x59')]['id']={'$gt':_0x3a37fb[_0x8ea2('0x4e')]['id']};}_0x58a0e5=_[_0x8ea2('0x3d')]({},_0x58a0e5,_0x3a37fb[_0x8ea2('0xc5')]);return db[_0x8ea2('0xda')][_0x8ea2('0x35')]({'where':_0x58a0e5[_0x8ea2('0x59')]})['then'](function(_0xcedece){_0x56a973['count']=_0xcedece;_0x58a0e5[_0x8ea2('0x118')]=[];if(_0x3a37fb[_0x8ea2('0x4e')][_0x8ea2('0x11d')]){_0x58a0e5[_0x8ea2('0x118')][_0x8ea2('0xc1')]({'model':db[_0x8ea2('0x7f')],'as':_0x8ea2('0x7f'),'attributes':['id',_0x8ea2('0x105'),'alias']});}if(_0x3a37fb['query'][_0x8ea2('0xc4')]){_0x58a0e5[_0x8ea2('0x118')]=[{'all':!![]}];}return db[_0x8ea2('0xda')][_0x8ea2('0x119')](_0x58a0e5);})[_0x8ea2('0x25')](function(_0x52bf7c){_0x56a973[_0x8ea2('0x11a')]=_0x52bf7c;return _0x56a973;});}})[_0x8ea2('0x25')](respondWithFilteredResult(_0x455009,_0x58a0e5))['catch'](handleError(_0x455009,null));};exports[_0x8ea2('0x11e')]=function(_0x3be5d0,_0x3ac848,_0x52ce76){return db['ChatInteraction'][_0x8ea2('0x71')]({'where':{'id':_0x3be5d0['params']['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x3ac848,null))[_0x8ea2('0x25')](function(_0x1030c9){if(_0x1030c9){return _0x1030c9[_0x8ea2('0x11f')](_0x3be5d0[_0x8ea2('0xc7')][_0x8ea2('0x115')],_[_0x8ea2('0x116')](_0x3be5d0[_0x8ea2('0xc7')],[_0x8ea2('0x115'),'id'])||{})[_0x8ea2('0x120')](function(){return db[_0x8ea2('0x7d')][_0x8ea2('0x119')]({'attributes':['id',_0x8ea2('0x3c'),_0x8ea2('0x5d')],'where':{'id':_0x3be5d0[_0x8ea2('0xc7')][_0x8ea2('0x115')]}});})[_0x8ea2('0x25')](function(_0x452b94){socket[_0x8ea2('0x121')]('chatInteractionTags:save',{'id':Number(_0x3be5d0['params']['id']),'tags':_0x452b94||[]});return{'id':Number(_0x3be5d0['params']['id']),'tags':_0x452b94||[]};});}})[_0x8ea2('0x25')](respondWithResult(_0x3ac848,null))[_0x8ea2('0x2e')](handleError(_0x3ac848,null));};exports[_0x8ea2('0x122')]=function(_0x9410dd,_0x497671,_0x5e3e8d){return db[_0x8ea2('0x49')]['find']({'where':{'id':_0x9410dd[_0x8ea2('0xc3')]['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x497671,null))[_0x8ea2('0x25')](function(_0x19b042){if(_0x19b042){return _0x19b042[_0x8ea2('0x122')](_0x9410dd[_0x8ea2('0x4e')][_0x8ea2('0x115')]);}})['then'](respondWithStatusCode(_0x497671,null))[_0x8ea2('0x2e')](handleError(_0x497671,null));};exports[_0x8ea2('0xf4')]=function(_0x2dc450,_0x34e1c5){var _0x5b929c=moment()['unix']()[_0x8ea2('0xaa')]();var _0x263123=path[_0x8ea2('0xf0')](config['root'],'server',_0x8ea2('0x123'),'tmp');var _0x40e8e6=path[_0x8ea2('0xf0')](config[_0x8ea2('0xf1')],'server',_0x8ea2('0x123'),_0x8ea2('0x124'));var _0x2dfabc=path[_0x8ea2('0xf0')](_0x263123,_0x5b929c);var _0x515049=util['format'](_0x8ea2('0x125'),_0x2dc450[_0x8ea2('0xc3')]['id'],_0x5b929c);var _0x39000d=path['join'](_0x263123,_0x515049);var _0x3a1752=[];_0x3a1752['push']({'model':db[_0x8ea2('0x7f')],'as':'User','attributes':['id',_0x8ea2('0x105')],'raw':!![]});_0x3a1752['push']({'model':db[_0x8ea2('0xde')],'as':_0x8ea2('0x75'),'attributes':['id',_0x8ea2('0x126'),_0x8ea2('0x127')],'raw':!![]});if(_0x2dc450['query'][_0x8ea2('0x124')]){_0x3a1752[_0x8ea2('0xc1')]({'model':db[_0x8ea2('0xed')],'as':_0x8ea2('0xed'),'raw':!![]});}var _0x5ba508=[{'model':db[_0x8ea2('0xda')],'as':_0x8ea2('0x128'),'attributes':['id',_0x8ea2('0xc7'),_0x8ea2('0x87'),_0x8ea2('0x107'),'secret',_0x8ea2('0x129')],'include':_0x3a1752}];_0x5ba508[_0x8ea2('0xc1')]({'model':db[_0x8ea2('0xcb')],'as':_0x8ea2('0x12a'),'attributes':['id','name']});_0x5ba508[_0x8ea2('0xc1')]({'model':db[_0x8ea2('0x7f')],'as':'Owner','attributes':['id','fullname']});return db['ChatInteraction'][_0x8ea2('0x71')]({'where':{'id':_0x2dc450[_0x8ea2('0xc3')]['id']},'include':_0x5ba508})[_0x8ea2('0x25')](handleEntityNotFound(_0x34e1c5,null))[_0x8ea2('0x25')](function(_0x3c9013){if(_0x3c9013){var _0x103c43=_0x3c9013['get']({'plain':!![]});fs['mkdirSync'](_0x2dfabc);var _0xc099b6={'channel':_0x8ea2('0x12b'),'account':_0x103c43[_0x8ea2('0x12a')]['name'],'agent':_0x103c43['Owner']?_0x103c43[_0x8ea2('0x12c')][_0x8ea2('0x105')]:'N.A.','createdAt':moment(_0x103c43[_0x8ea2('0x87')])['format'](_0x8ea2('0x12d'))[_0x8ea2('0xaa')](),'closedAt':_0x103c43[_0x8ea2('0xeb')]?moment(_0x103c43['closedAt'])[_0x8ea2('0xfe')](_0x8ea2('0x12d'))['toString']():'','disposition':_0x103c43[_0x8ea2('0xe2')],'chatInfo':{'browser':_0x103c43[_0x8ea2('0x12e')],'os':_0x103c43['osName'],'referer':_0x103c43['referer'],'customerIp':_0x103c43[_0x8ea2('0x12f')],'customerPort':_0x103c43[_0x8ea2('0x130')]?_0x103c43[_0x8ea2('0x130')]:'N.A.'},'messages':_(_0x103c43[_0x8ea2('0x128')])[_0x8ea2('0x131')]()[_0x8ea2('0x94')]({'secret':![]})[_0x8ea2('0x43')](function(_0x36799a){if(_0x36799a['Attachment']){var _0x1cc1d9=path['join'](_0x40e8e6,_0x36799a[_0x8ea2('0xed')]['basename']);if(fs[_0x8ea2('0x132')](_0x1cc1d9)){fs[_0x8ea2('0x133')](_0x1cc1d9)[_0x8ea2('0x134')](fs[_0x8ea2('0x135')](path['join'](_0x2dfabc,_0x36799a[_0x8ea2('0xed')][_0x8ea2('0xe7')])));}}return{'date':moment(_0x36799a[_0x8ea2('0x87')])[_0x8ea2('0xfe')](_0x8ea2('0x12d'))[_0x8ea2('0xaa')](),'sender':_0x36799a[_0x8ea2('0x107')]===_0x8ea2('0x136')?_0x36799a[_0x8ea2('0x7f')]?_0x36799a[_0x8ea2('0x7f')][_0x8ea2('0x105')]:'System':_0x36799a[_0x8ea2('0x75')][_0x8ea2('0x126')]+(_0x36799a[_0x8ea2('0x75')]['lastName']?'\x20'+_0x36799a[_0x8ea2('0x75')][_0x8ea2('0x127')]:''),'body':_0x36799a[_0x8ea2('0xed')]?_0x36799a[_0x8ea2('0xed')][_0x8ea2('0xe7')]:_0x36799a[_0x8ea2('0xc7')],'direction':_0x36799a[_0x8ea2('0x107')]===_0x8ea2('0x136')?'A':'C','secret':_0x36799a[_0x8ea2('0x11c')],'read':_0x36799a[_0x8ea2('0x129')],'attachment':_0x36799a['Attachment']};})[_0x8ea2('0x77')]()};return ejs[_0x8ea2('0x137')](path[_0x8ea2('0xf0')](config[_0x8ea2('0xf1')],'server',_0x8ea2('0x138'),_0x8ea2('0x139')),{'interaction':_0xc099b6})[_0x8ea2('0x25')](function(_0x10d2b3){var _0x12a217=path[_0x8ea2('0xf0')](_0x2dfabc,_0x8ea2('0x13a')+_0x103c43['id']+'-'+_0x5b929c+'.pdf');var _0x44b0dc={'path':_0x12a217,'channel':_0x8ea2('0x12b'),'interactionId':_0x103c43['id']};return pdf['createPdfFromHTML'](_0x10d2b3,_0x44b0dc);})[_0x8ea2('0x25')](function(){return new BPromise(function(_0x27f5e9,_0x19b678){zipdir(_0x2dfabc,{'saveTo':_0x39000d},function(_0x50ebcd,_0x5d6c63){if(_0x50ebcd)return _0x19b678(_0x50ebcd);return _0x27f5e9(_0x5d6c63);});})[_0x8ea2('0x25')](function(){return new BPromise(function(_0x55b3a1,_0x57e228){rimraf(_0x2dfabc,function(_0x3c669b){if(_0x3c669b)_0x57e228(_0x3c669b);return _0x55b3a1();});});})[_0x8ea2('0x25')](function(){return _0x34e1c5['download'](_0x39000d,_0x515049,function(_0x688d21){if(_0x688d21){console[_0x8ea2('0x13b')]('err',_0x688d21);}else{fs[_0x8ea2('0x13c')](_0x39000d);}});});});}else{return _0x34e1c5['sendStatus'](0xc8);}})[_0x8ea2('0x2e')](handleError(_0x34e1c5,null));};
\ No newline at end of file
+var _0x0abf=['query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','select','field','color','from','tools_tags','user_has_chat_interactions','users','chat_interactions','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','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','having','`\x20=\x200','`\x20>\x200','Contact','$substring','value','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','Tag','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','start','compact','isEmpty','ChatWebsiteId','i.ChatWebsiteId\x20IN\x20?','parse','$lte','where','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','SELECT','clone','unreadMessages','contactName','DESC','t.id\x20IN\x20?','resolve','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','sequelize','toString','ChatInteraction','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.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.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','ui.ChatInteractionId\x20IN\x20?','groupBy','all','rows','show','includeAll','include','options','params','describe','ChatWebsite','findOne','vidaooApiKey','vidaooTopic','vidaooMetadata','vidaooEscalation','email','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','vidaooNote','follow','metadata','Sequelize','ValidationError','Error\x20in\x20Vidaoo\x20configuration','join_url','ChatMessage','create','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','Interaction\x20already\x20assigned','closed','disposition','AbandonInteraction','file','basename','filename','mimetype','Attachment','attachmentDownload','Unauthorized','attachId','ChatOfflineMessageId','join','server/files/attachments/','download','mailTranscript','format','transcript-%s.txt','now','User','CmContact','Messages','%s%d','agentAlias','System','customer','Visitor','agentIdentifier','website_alias','agent_alias','alias','[%s]\x20%s:\x20%s\x0a','createdAt','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount','Smtp','service','host','port','secure','authentication','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','omit','pick','ChatInteractionId','YYYY-MM-DD\x20HH:mm:ss','findAll','getMyMessages','includeAgent','setTags','spread','emit','chatInteractionTags:save','removeTags','unix','server','files','tmp','root','attachments','lastName','Account','Owner','get','mkdirSync','Chat','N.A.','browserName','osName','referer','customerIp','customerPort','tail','existsSync','pipe','createWriteStream','firstName','views','.pdf','createPdfFromHTML','log','err','unlinkSync','eml-format','zip-dir','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/export/pdf','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','jayson/promise','client','http','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','sendStatus','status','json','offset','undefined','limit','count','reject','update','destroy','end','stack','name','render','merge','body','contact','agent','account','Users','map','fullname','Tags','TagIds','split','forEach','push','catch','rawAttributes','fieldName','type','key','model'];(function(_0x429746,_0x4b5f94){var _0x46c4c3=function(_0x57509f){while(--_0x57509f){_0x429746['push'](_0x429746['shift']());}};_0x46c4c3(++_0x4b5f94);}(_0x0abf,0xe8));var _0xf0ab=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x0abf[_0x5b644e];return _0x49c6bf;};'use strict';var emlformat=require(_0xf0ab('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf0ab('0x1'));var jsonpatch=require(_0xf0ab('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xf0ab('0x3'));var Mustache=require('mustache');var util=require(_0xf0ab('0x4'));var path=require(_0xf0ab('0x5'));var sox=require(_0xf0ab('0x6'));var csv=require(_0xf0ab('0x7'));var ejs=require(_0xf0ab('0x8'));var fs=require('fs');var fs_extra=require(_0xf0ab('0x9'));var _=require(_0xf0ab('0xa'));var squel=require('squel');var crypto=require(_0xf0ab('0xb'));var jsforce=require(_0xf0ab('0xc'));var deskjs=require(_0xf0ab('0xd'));var toCsv=require(_0xf0ab('0x7'));var querystring=require('querystring');var Papa=require(_0xf0ab('0xe'));var Redis=require(_0xf0ab('0xf'));var authService=require(_0xf0ab('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var pdf=require(_0xf0ab('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf0ab('0x12'))(_0xf0ab('0x13'));var utils=require(_0xf0ab('0x14'));var config=require(_0xf0ab('0x15'));var licenseUtil=require(_0xf0ab('0x16'));var db=require(_0xf0ab('0x17'))['db'];config[_0xf0ab('0x18')]=_['defaults'](config[_0xf0ab('0x18')],{'host':_0xf0ab('0x19'),'port':0x18eb});var socket=require(_0xf0ab('0x1a'))(new Redis(config[_0xf0ab('0x18')]));require(_0xf0ab('0x1b'))[_0xf0ab('0x1c')](socket);var jayson=require(_0xf0ab('0x1d'));var client=jayson[_0xf0ab('0x1e')][_0xf0ab('0x1f')]({'port':0x232b});var client9004=jayson[_0xf0ab('0x1e')][_0xf0ab('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0x221bac,_0x200cf5,_0x2f4618,_0x230f40){return new BPromise(function(_0x54b0ce,_0x457465){var _0x9e3b47=_0x230f40||client;return _0x9e3b47[_0xf0ab('0x20')](_0x221bac,_0x2f4618)[_0xf0ab('0x21')](function(_0x776619){logger[_0xf0ab('0x22')](_0xf0ab('0x23'),_0x200cf5,_0xf0ab('0x24'));logger[_0xf0ab('0x25')](_0xf0ab('0x26'),_0x200cf5,_0xf0ab('0x24'),JSON[_0xf0ab('0x27')](_0x776619));if(_0x776619[_0xf0ab('0x28')]){if(_0x776619[_0xf0ab('0x28')][_0xf0ab('0x29')]===0x1f4){logger[_0xf0ab('0x28')]('ChatInteraction,\x20%s,\x20%s',_0x200cf5,_0x776619[_0xf0ab('0x28')][_0xf0ab('0x2a')]);return _0x457465(_0x776619[_0xf0ab('0x28')][_0xf0ab('0x2a')]);}logger[_0xf0ab('0x28')](_0xf0ab('0x23'),_0x200cf5,_0x776619[_0xf0ab('0x28')][_0xf0ab('0x2a')]);return _0x54b0ce(_0x776619[_0xf0ab('0x28')][_0xf0ab('0x2a')]);}else{logger[_0xf0ab('0x22')]('ChatInteraction,\x20%s,\x20%s',_0x200cf5,'request\x20sent');_0x54b0ce(_0x776619['result'][_0xf0ab('0x2a')]);}})['catch'](function(_0x3eca32){logger[_0xf0ab('0x28')]('ChatInteraction,\x20%s,\x20%s',_0x200cf5,_0x3eca32);_0x457465(_0x3eca32);});});}function respondWithStatusCode(_0x163078,_0x22671e){_0x22671e=_0x22671e||0xcc;return function(_0x10bf5f){if(_0x10bf5f){return _0x163078[_0xf0ab('0x2b')](_0x22671e);}return _0x163078[_0xf0ab('0x2c')](_0x22671e)['end']();};}function respondWithResult(_0x2d0da7,_0x574ce7){_0x574ce7=_0x574ce7||0xc8;return function(_0x55d799){if(_0x55d799){return _0x2d0da7[_0xf0ab('0x2c')](_0x574ce7)[_0xf0ab('0x2d')](_0x55d799);}};}function respondWithFilteredResult(_0x1b223d,_0x445160){return function(_0x43476c){if(_0x43476c){var _0x174052=typeof _0x445160[_0xf0ab('0x2e')]===_0xf0ab('0x2f')&&typeof _0x445160[_0xf0ab('0x30')]===_0xf0ab('0x2f');var _0x21e8ac=_0x43476c[_0xf0ab('0x31')];var _0x58cbe1=_0x174052?0x0:_0x445160[_0xf0ab('0x2e')];var _0x35973a=_0x174052?_0x43476c['count']:_0x445160['offset']+_0x445160[_0xf0ab('0x30')];var _0x1dc84e;if(_0x35973a>=_0x21e8ac){_0x35973a=_0x21e8ac;_0x1dc84e=0xc8;}else{_0x1dc84e=0xce;}_0x1b223d[_0xf0ab('0x2c')](_0x1dc84e);return _0x1b223d['set']('Content-Range',_0x58cbe1+'-'+_0x35973a+'/'+_0x21e8ac)[_0xf0ab('0x2d')](_0x43476c);}return null;};}function patchUpdates(_0x58fa03){return function(_0x1cfd52){try{jsonpatch['apply'](_0x1cfd52,_0x58fa03,!![]);}catch(_0x3f66fa){return BPromise[_0xf0ab('0x32')](_0x3f66fa);}return _0x1cfd52['save']();};}function saveUpdates(_0x56e728,_0x469f42){return function(_0x27c6f9){if(_0x27c6f9){return _0x27c6f9[_0xf0ab('0x33')](_0x56e728)[_0xf0ab('0x21')](function(_0x2519c7){return _0x2519c7;});}return null;};}function removeEntity(_0x36195d,_0x17f3b3){return function(_0xf8f0f4){if(_0xf8f0f4){return _0xf8f0f4[_0xf0ab('0x34')]()[_0xf0ab('0x21')](function(){_0x36195d[_0xf0ab('0x2c')](0xcc)[_0xf0ab('0x35')]();});}};}function handleEntityNotFound(_0x22dcfe,_0x437fdb){return function(_0x5d8443){if(!_0x5d8443){_0x22dcfe[_0xf0ab('0x2b')](0x194);}return _0x5d8443;};}function handleError(_0x45c449,_0xc575ed){_0xc575ed=_0xc575ed||0x1f4;return function(_0x5c9192){logger[_0xf0ab('0x28')](_0x5c9192[_0xf0ab('0x36')]);if(_0x5c9192[_0xf0ab('0x37')]){delete _0x5c9192['name'];}_0x45c449[_0xf0ab('0x2c')](_0xc575ed)['send'](_0x5c9192);};}function getMustacheRender(_0xda3971,_0x492d7c){return Mustache[_0xf0ab('0x38')](_0xda3971,_[_0xf0ab('0x39')](_0x492d7c[_0xf0ab('0x3a')],{'contact':_0x492d7c[_0xf0ab('0x3b')],'message':_0x492d7c[_0xf0ab('0x2a')],'agent':_0x492d7c[_0xf0ab('0x3c')],'interaction':_0x492d7c['interaction'],'account':_0x492d7c[_0xf0ab('0x3d')]}))||'';}function getInteractionUsers(_0x683d08,_0x5a6df5){return new BPromise(function(_0x207fbb,_0xce89bc){try{if(_0x5a6df5[_0x683d08['id']]){_0x683d08[_0xf0ab('0x3e')]=_[_0xf0ab('0x3f')](_0x5a6df5[_0x683d08['id']],function(_0x31fa72){return{'id':_0x31fa72['id'],'fullname':_0x31fa72[_0xf0ab('0x40')]};});}}catch(_0x28c20c){_0xce89bc(_0x28c20c);}_0x207fbb(_0x683d08);});}function getInteractionTags(_0x528d4b,_0x406a1d){return new BPromise(function(_0x4f6e93,_0x7c4629){try{if(_0x528d4b['TagIds']){_0x528d4b[_0xf0ab('0x41')]=[];_0x528d4b[_0xf0ab('0x42')][_0xf0ab('0x43')](',')[_0xf0ab('0x44')](function(_0x2b7ed5){_0x528d4b['Tags'][_0xf0ab('0x45')](_0x406a1d[_0x2b7ed5]);});}delete _0x528d4b[_0xf0ab('0x42')];}catch(_0x28e7a4){_0x7c4629(_0x28e7a4);}_0x4f6e93(_0x528d4b);});}function updateChatInteraction(_0x197955,_0x191caf,_0x17a73){return new BPromise(function(_0x45849c,_0x413f5c){return getInteractionUsers(_0x197955,_0x17a73)[_0xf0ab('0x21')](function(_0x3b214a){return getInteractionTags(_0x3b214a,_0x191caf);})[_0xf0ab('0x21')](function(_0x32ec93){_0x45849c(_0x32ec93);})[_0xf0ab('0x46')](function(_0x5e6b6b){_0x413f5c(_0x5e6b6b);});});}exports['index']=function(_0x2fc677,_0x4e6c41){var _0x1fc766={},_0x2d50c0={},_0x4bbdf6={'count':0x0,'rows':[]};var _0x8c2d2c=_[_0xf0ab('0x3f')](db['ChatInteraction'][_0xf0ab('0x47')],function(_0x29cc6a){return{'name':_0x29cc6a[_0xf0ab('0x48')],'type':_0x29cc6a[_0xf0ab('0x49')][_0xf0ab('0x4a')]};});_0x2d50c0[_0xf0ab('0x4b')]=_[_0xf0ab('0x3f')](_0x8c2d2c,_0xf0ab('0x37'));_0x2d50c0[_0xf0ab('0x4c')]=_[_0xf0ab('0x4d')](_0x2fc677[_0xf0ab('0x4c')]);_0x2d50c0[_0xf0ab('0x4e')]=_[_0xf0ab('0x4f')](_0x2d50c0[_0xf0ab('0x4b')],_0x2d50c0['query']);_0x1fc766['attributes']=_[_0xf0ab('0x4f')](_0x2d50c0['model'],qs['fields'](_0x2fc677['query'][_0xf0ab('0x50')]));_0x1fc766[_0xf0ab('0x51')]=_0x1fc766[_0xf0ab('0x51')][_0xf0ab('0x52')]?_0x1fc766[_0xf0ab('0x51')]:_0x2d50c0[_0xf0ab('0x4b')];if(!_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x53')](_0xf0ab('0x54'))){_0x1fc766[_0xf0ab('0x30')]=qs[_0xf0ab('0x30')](_0x2fc677[_0xf0ab('0x4c')]['limit']);_0x1fc766[_0xf0ab('0x2e')]=qs[_0xf0ab('0x2e')](_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x2e')]);}_0x1fc766[_0xf0ab('0x55')]=qs[_0xf0ab('0x56')](_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x56')]);_0x1fc766['where']=qs['filters'](_['pick'](_0x2fc677[_0xf0ab('0x4c')],_0x2d50c0[_0xf0ab('0x4e')]),_0x8c2d2c);var _0x577c85=[];var _0xa1a416=squel[_0xf0ab('0x57')]()['field']('id')[_0xf0ab('0x58')](_0xf0ab('0x37'))[_0xf0ab('0x58')](_0xf0ab('0x59'))[_0xf0ab('0x5a')](_0xf0ab('0x5b'));var _0x26508b=squel['select']()[_0xf0ab('0x58')]('u.id')[_0xf0ab('0x58')]('u.fullname')[_0xf0ab('0x58')]('ui.ChatInteractionId')['from'](_0xf0ab('0x5c'),'ui')['left_join'](_0xf0ab('0x5d'),'u','u.id\x20=\x20ui.UserId');var _0x2eff07=squel['select']()[_0xf0ab('0x5a')](_0xf0ab('0x5e'),'i')[_0xf0ab('0x5f')]('cm_contacts','c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')['left_join'](_0xf0ab('0x5d'),'o',_0xf0ab('0x60'))['left_join']('chat_websites','a',_0xf0ab('0x61'))[_0xf0ab('0x5f')](_0xf0ab('0x62'),'me',_0xf0ab('0x63'))[_0xf0ab('0x5f')](_0xf0ab('0x64'),'it',_0xf0ab('0x65'))[_0xf0ab('0x5f')](_0xf0ab('0x5b'),'t',_0xf0ab('0x66'));var _0x1e6a4e=squel['expr']();var _0x41ed17=[];var _0x5b24e3=squel[_0xf0ab('0x67')]();var _0x61d3db;if(_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x68')]){_0x61d3db=as[_0xf0ab('0x69')](_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x68')]);var _0x1f11aa=_0x61d3db[_0xf0ab('0x6a')];for(var _0x180ee6=0x0;_0x180ee6<_0x61d3db['conditions'][_0xf0ab('0x52')];_0x180ee6++){var _0x2266f3=_0x61d3db[_0xf0ab('0x6b')][_0x180ee6];var _0x1d4a72='i';var _0x2232eb=_[_0xf0ab('0x6c')](_0x8c2d2c,[_0xf0ab('0x37'),_0x2266f3[_0xf0ab('0x58')]]);if(!_0x2232eb){switch(_0x2266f3[_0xf0ab('0x58')]){case'unreadMessages':if(_0x2266f3['value']==0x1){_0x2eff07[_0xf0ab('0x6d')]('`'+_0x2266f3[_0xf0ab('0x58')]+_0xf0ab('0x6e'));}else{_0x2eff07['having']('`'+_0x2266f3[_0xf0ab('0x58')]+_0xf0ab('0x6f'));}break;case _0xf0ab('0x70'):if(_0x2266f3['operator']===_0xf0ab('0x71')){if(_0x2266f3[_0xf0ab('0x72')][_0xf0ab('0x43')]('\x20')[_0xf0ab('0x52')]>0x1){_0x1e6a4e[_0x1f11aa](_0xf0ab('0x73'),qs['getFullTextValue'](_0x2266f3[_0xf0ab('0x72')]),null);}else{var _0x70b02d='%'+_0x2266f3[_0xf0ab('0x72')]+'%';_0x1e6a4e[_0x1f11aa](_0xf0ab('0x74'),_0x70b02d,_0x70b02d,_0x70b02d);}}else{_0x2232eb=_[_0xf0ab('0x6c')](_0x8c2d2c,[_0xf0ab('0x37'),_0xf0ab('0x75')]);_0x2266f3[_0xf0ab('0x58')]=_0xf0ab('0x75');_0x5154f5=as[_0xf0ab('0x76')](_0x1d4a72,_0x2232eb[_0xf0ab('0x49')],_0x2266f3);_0x1e6a4e[_0x1f11aa](_0x5154f5[_0xf0ab('0x77')],_0x5154f5[_0xf0ab('0x72')]['start'],_0x5154f5['value'][_0xf0ab('0x35')]);}break;case _0xf0ab('0x78'):var _0x325ad6=_0x2266f3['value'][_0xf0ab('0x43')](',')['map'](function(_0x1a32dc){return Number(_0x1a32dc);});_0x325ad6[_0xf0ab('0x44')](function(_0x1787e2){_0x5b24e3['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x1787e2+',%');});_0x41ed17=_[_0xf0ab('0x79')](_0x41ed17,_0x325ad6);break;case'User':if(_0x2266f3['operator']===_0xf0ab('0x71')){_0x1e6a4e[_0x1f11aa](_0xf0ab('0x7a'),'%'+_0x2266f3[_0xf0ab('0x72')]+'%',null);}else{_0x2232eb=_['find'](_0x8c2d2c,[_0xf0ab('0x37'),_0xf0ab('0x7b')]);_0x2266f3[_0xf0ab('0x58')]=_0xf0ab('0x7b');_0x5154f5=as['buildExpression'](_0x1d4a72,_0x2232eb['type'],_0x2266f3);_0x1e6a4e[_0x1f11aa](_0x5154f5['text'],_0x5154f5[_0xf0ab('0x72')][_0xf0ab('0x7c')],_0x5154f5[_0xf0ab('0x72')][_0xf0ab('0x35')]);}break;case _0xf0ab('0x3a'):_0x5154f5=as[_0xf0ab('0x76')]('me',null,_0x2266f3);_0x1e6a4e[_0x1f11aa](_0x5154f5[_0xf0ab('0x77')],_0x5154f5[_0xf0ab('0x72')][_0xf0ab('0x7c')],_0x5154f5[_0xf0ab('0x72')][_0xf0ab('0x35')]);break;}}else{var _0x5154f5=as[_0xf0ab('0x76')](_0x1d4a72,_0x2232eb[_0xf0ab('0x49')],_0x2266f3);_0x1e6a4e[_0x1f11aa](_0x5154f5[_0xf0ab('0x77')],_0x5154f5[_0xf0ab('0x72')][_0xf0ab('0x7c')],_0x5154f5[_0xf0ab('0x72')][_0xf0ab('0x35')]);}}}else{var _0x42f067=_(_0x2fc677['query'])[_0xf0ab('0x4d')]()[_0xf0ab('0x3f')](function(_0x4c8e95){return _['some'](_0x8c2d2c,['name',_0x4c8e95])?_0x4c8e95:undefined;})[_0xf0ab('0x7d')]()[_0xf0ab('0x72')]();if(!_[_0xf0ab('0x7e')](_0x42f067)){_0x42f067[_0xf0ab('0x44')](function(_0x15aa78){if(_0x15aa78===_0xf0ab('0x7f')){_0x2eff07['where'](_0xf0ab('0x80'),[]['concat'](_0x2fc677[_0xf0ab('0x4c')][_0x15aa78]));}else if(_0x15aa78==='createdAt'){var _0x2978a9=JSON['parse'](_0x2fc677[_0xf0ab('0x4c')][_0x15aa78])['$gte'];var _0x58ca28=JSON[_0xf0ab('0x81')](_0x2fc677[_0xf0ab('0x4c')][_0x15aa78])[_0xf0ab('0x82')];_0x2eff07[_0xf0ab('0x83')](_0xf0ab('0x84'),_0x2978a9,_0x58ca28);}else{if(_0x2fc677[_0xf0ab('0x4c')][_0x15aa78]===_0xf0ab('0x85')){_0x2eff07[_0xf0ab('0x83')]('i.'+_0x15aa78+_0xf0ab('0x86'));}else{_0x2eff07[_0xf0ab('0x83')]('i.'+_0x15aa78+_0xf0ab('0x87'),_0x2fc677[_0xf0ab('0x4c')][_0x15aa78]);}}});}if(_0x2fc677[_0xf0ab('0x4c')]['read']){if(_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x88')]==0x1){_0x2eff07[_0xf0ab('0x6d')](_0xf0ab('0x89'));}else{_0x2eff07[_0xf0ab('0x6d')](_0xf0ab('0x8a'));}}if(_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x8b')]){_0x41ed17=_[_0xf0ab('0x8c')](_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x8b')])?_0x2fc677[_0xf0ab('0x4c')]['tag']:new Array(_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x8b')]);_0x41ed17[_0xf0ab('0x44')](function(_0x2196a7){_0x5b24e3['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2196a7+',%');});}if(_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x8d')]){var _0x4463cc=_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x8d')]['replace']('\x5c','\x5c\x5c')[_0xf0ab('0x8e')](/'/g,'\x27\x27');if(qs[_0xf0ab('0x8f')](_0x4463cc)){_0x1e6a4e['or']('i.id\x20LIKE\x20?',_0x4463cc+'%');}else{_0x1e6a4e['or'](_0xf0ab('0x90'),qs['getFullTextValue'](_0x4463cc))['or'](_0xf0ab('0x91'),_0x4463cc+'%');}}}_0x2eff07[_0xf0ab('0x83')](_0x1e6a4e);_0x2eff07['group'](_0xf0ab('0x92'));var _0x148a72={'type':db['Sequelize']['QueryTypes'][_0xf0ab('0x93')],'raw':!![]};var _0x58140c=_0x2eff07[_0xf0ab('0x94')]();_0x58140c[_0xf0ab('0x58')]('i.id');_0x58140c['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xf0ab('0x95'));if(_0x1fc766[_0xf0ab('0x55')]){_0x1fc766[_0xf0ab('0x55')][_0xf0ab('0x44')](function(_0x49c89f){var _0x272f9c=_0x49c89f[0x0]===_0xf0ab('0x96')?_0x49c89f[0x0]:'i.'+_0x49c89f[0x0];_0x2eff07[_0xf0ab('0x55')](_0x272f9c,_0x49c89f[0x1]===_0xf0ab('0x97')?![]:!![]);});}if(!_[_0xf0ab('0x7e')](_0x41ed17)){_0x2eff07['having'](_0x5b24e3);_0x58140c['where'](_0xf0ab('0x98'),_0x41ed17);}BPromise[_0xf0ab('0x99')]()['then'](function(){if(!_0x61d3db){if(_0x2fc677['query'][_0xf0ab('0x7f')])return;_0x58140c[_0xf0ab('0x83')](_0xf0ab('0x9a'));_0x2eff07[_0xf0ab('0x83')](_0xf0ab('0x9a'));return;}if(_0x2fc677[_0xf0ab('0x9b')][_0xf0ab('0x9c')]!==_0xf0ab('0x3c'))return;return _0x2fc677[_0xf0ab('0x9b')][_0xf0ab('0x9d')]({'attributes':['id'],'raw':!![]})[_0xf0ab('0x21')](function(_0x52eca9){if(_['isEmpty'](_0x52eca9)){_0x58140c[_0xf0ab('0x83')]('i.ChatWebsiteId\x20IS\x20NULL');_0x2eff07[_0xf0ab('0x83')](_0xf0ab('0x9e'));}else{_0x58140c[_0xf0ab('0x83')](_0xf0ab('0x80'),_['map'](_0x52eca9,'id'));_0x2eff07[_0xf0ab('0x83')](_0xf0ab('0x80'),_[_0xf0ab('0x3f')](_0x52eca9,'id'));}});})[_0xf0ab('0x21')](function(){if(_0x2fc677[_0xf0ab('0x9b')][_0xf0ab('0x9c')]===_0xf0ab('0x3c')&&!_0x61d3db&&!_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x7f')])return[];return db[_0xf0ab('0x9f')][_0xf0ab('0x4c')](_0x58140c[_0xf0ab('0xa0')](),_0x148a72);})[_0xf0ab('0x21')](function(_0x4211a1){_0x4bbdf6['count']=_0x4211a1[_0xf0ab('0x52')];if(_0x4bbdf6[_0xf0ab('0x31')]===0x0)return[];return db[_0xf0ab('0x9f')][_0xf0ab('0x4c')](_0xa1a416[_0xf0ab('0xa0')](),_0x148a72)[_0xf0ab('0x21')](function(_0x611cf7){_0x577c85=_['keyBy'](_0x611cf7,'id');_0x148a72=_['merge'](_0x148a72,{'model':db[_0xf0ab('0xa1')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2fc677[_0xf0ab('0x4c')][_0xf0ab('0x50')]){_0x1fc766['attributes'][_0xf0ab('0x44')](function(_0x405b34){_0x2eff07[_0xf0ab('0x58')]('i.'+_0x405b34);});}else{_0x2eff07[_0xf0ab('0x58')](_0xf0ab('0xa2'),'unreadMessages');_0x2eff07['field'](_0xf0ab('0xa3'),'Account.key');_0x2eff07[_0xf0ab('0x58')](_0xf0ab('0xa4'),'Account.mandatoryDisposition');_0x2eff07[_0xf0ab('0x58')](_0xf0ab('0xa5'),_0xf0ab('0x96'));_0x2eff07[_0xf0ab('0x58')](_0xf0ab('0xa6'));_0x2eff07['field'](_0xf0ab('0xa7'),_0xf0ab('0xa8'));_0x2eff07[_0xf0ab('0x58')](_0xf0ab('0xa9'),_0xf0ab('0xaa'));_0x2eff07['field'](_0xf0ab('0xab'),_0xf0ab('0xac'));_0x2eff07[_0xf0ab('0x58')](_0xf0ab('0xad'),_0xf0ab('0xae'));_0x2eff07['field'](_0xf0ab('0xaf'),_0xf0ab('0xb0'));_0x2eff07[_0xf0ab('0x58')]('c.fax',_0xf0ab('0xb1'));_0x2eff07['field'](_0xf0ab('0xb2'),_0xf0ab('0xb3'));_0x2eff07[_0xf0ab('0x58')](_0xf0ab('0xb4'),'Owner.internal');_0x2eff07[_0xf0ab('0x58')]('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0x1fc766[_0xf0ab('0x30')])_0x2eff07['limit'](_0x1fc766['limit']);if(_0x1fc766[_0xf0ab('0x2e')])_0x2eff07[_0xf0ab('0x2e')](_0x1fc766['offset']);return db['sequelize']['query'](_0x2eff07['toString'](),_0x148a72);})[_0xf0ab('0x21')](function(_0x12d9b6){if(_0x12d9b6[_0xf0ab('0x52')]>0x0)_0x26508b[_0xf0ab('0x83')](_0xf0ab('0xb5'),_['map'](_0x12d9b6,'id'));return db[_0xf0ab('0x9f')][_0xf0ab('0x4c')](_0x26508b[_0xf0ab('0xa0')](),_0x148a72)[_0xf0ab('0x21')](function(_0x84eab9){var _0x27cd98=_[_0xf0ab('0xb6')](_0x84eab9,'ChatInteractionId');var _0x16dca7=[];_0x12d9b6[_0xf0ab('0x44')](function(_0x39633a){_0x16dca7[_0xf0ab('0x45')](updateChatInteraction(_0x39633a,_0x577c85,_0x27cd98));});return BPromise[_0xf0ab('0xb7')](_0x16dca7);});});})[_0xf0ab('0x21')](function(_0x527a4b){_0x4bbdf6[_0xf0ab('0xb8')]=_0x527a4b;return _0x4bbdf6;})[_0xf0ab('0x21')](respondWithFilteredResult(_0x4e6c41,_0x1fc766))[_0xf0ab('0x46')](handleError(_0x4e6c41,null));};exports[_0xf0ab('0xb9')]=function(_0x4ca7a3,_0x426419){var _0x395bf6={'raw':![],'where':{'id':_0x4ca7a3['params']['id']}},_0x5b7744={};_0x5b7744[_0xf0ab('0x4b')]=_[_0xf0ab('0x4d')](db[_0xf0ab('0xa1')][_0xf0ab('0x47')]);_0x5b7744[_0xf0ab('0x4c')]=_[_0xf0ab('0x4d')](_0x4ca7a3[_0xf0ab('0x4c')]);_0x5b7744[_0xf0ab('0x4e')]=_['intersection'](_0x5b7744[_0xf0ab('0x4b')],_0x5b7744['query']);_0x395bf6['attributes']=_[_0xf0ab('0x4f')](_0x5b7744[_0xf0ab('0x4b')],qs[_0xf0ab('0x50')](_0x4ca7a3[_0xf0ab('0x4c')][_0xf0ab('0x50')]));_0x395bf6[_0xf0ab('0x51')]=_0x395bf6[_0xf0ab('0x51')][_0xf0ab('0x52')]?_0x395bf6['attributes']:_0x5b7744[_0xf0ab('0x4b')];if(_0x4ca7a3[_0xf0ab('0x4c')][_0xf0ab('0xba')]){_0x395bf6[_0xf0ab('0xbb')]=[{'all':!![]}];}_0x395bf6=_[_0xf0ab('0x39')]({},_0x395bf6,_0x4ca7a3[_0xf0ab('0xbc')]);return db[_0xf0ab('0xa1')][_0xf0ab('0x6c')](_0x395bf6)[_0xf0ab('0x21')](handleEntityNotFound(_0x426419,null))[_0xf0ab('0x21')](respondWithResult(_0x426419,null))['catch'](handleError(_0x426419,null));};exports['create']=function(_0x58946c,_0x2f339d){return db['ChatInteraction']['create'](_0x58946c[_0xf0ab('0x3a')],{})[_0xf0ab('0x21')](respondWithResult(_0x2f339d,0xc9))[_0xf0ab('0x46')](handleError(_0x2f339d,null));};exports[_0xf0ab('0x33')]=function(_0xdf495,_0x55a296){if(_0xdf495[_0xf0ab('0x3a')]['id']){delete _0xdf495[_0xf0ab('0x3a')]['id'];}return db[_0xf0ab('0xa1')][_0xf0ab('0x6c')]({'where':{'id':_0xdf495[_0xf0ab('0xbd')]['id']}})[_0xf0ab('0x21')](handleEntityNotFound(_0x55a296,null))[_0xf0ab('0x21')](saveUpdates(_0xdf495[_0xf0ab('0x3a')],null))['then'](respondWithResult(_0x55a296,null))[_0xf0ab('0x46')](handleError(_0x55a296,null));};exports['destroy']=function(_0x3c1a2c,_0x17a3b6){return db['ChatInteraction'][_0xf0ab('0x6c')]({'where':{'id':_0x3c1a2c[_0xf0ab('0xbd')]['id']}})[_0xf0ab('0x21')](handleEntityNotFound(_0x17a3b6,null))[_0xf0ab('0x21')](removeEntity(_0x17a3b6,null))[_0xf0ab('0x46')](handleError(_0x17a3b6,null));};exports[_0xf0ab('0xbe')]=function(_0x1f2efa,_0x1d12fb){return db[_0xf0ab('0xa1')]['describe']()[_0xf0ab('0x21')](respondWithResult(_0x1d12fb,null))[_0xf0ab('0x46')](handleError(_0x1d12fb,null));};exports['createVidaooSession']=function(_0x35486d,_0x3f5ade){var _0x135a10=_0x35486d[_0xf0ab('0xbd')]['id'];var _0x48fc7e;var _0x5f55d2;var _0x7c7c3b;return db[_0xf0ab('0xa1')]['findOne']({'where':{'id':_0x135a10}})[_0xf0ab('0x21')](function(_0x2beaaa){_0x48fc7e=_0x2beaaa;return db[_0xf0ab('0xbf')][_0xf0ab('0xc0')]({'where':{'id':_0x2beaaa[_0xf0ab('0x7f')]},'attributes':['id',_0xf0ab('0xc1'),'vidaooEscalation',_0xf0ab('0xc2'),'vidaooNote',_0xf0ab('0xc3')],'raw':!![]});})[_0xf0ab('0x21')](function(_0x354e18){if(_0x354e18&&_0x354e18['vidaooApiKey']&&_0x354e18[_0xf0ab('0xc4')]){_0x5f55d2=_0x354e18;var _0x2068d6={'interaction':{'id':_0x135a10},'agent':{'id':_0x35486d[_0xf0ab('0x9b')]['id'],'name':_0x35486d[_0xf0ab('0x9b')][_0xf0ab('0x37')],'fullname':_0x35486d[_0xf0ab('0x9b')][_0xf0ab('0x40')],'email':_0x35486d[_0xf0ab('0x9b')][_0xf0ab('0xc5')]},'contact':_0x35486d['body']['contact'],'account':_0x35486d[_0xf0ab('0x3a')][_0xf0ab('0x3d')]};var _0x35b480={'rejectUnauthorized':![],'method':_0xf0ab('0xc6'),'url':_0xf0ab('0xc7'),'headers':{'X-APIKEY':_0x354e18[_0xf0ab('0xc1')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x35486d[_0xf0ab('0x9b')][_0xf0ab('0xc5')]],'buttons':null,'topic':_0x5f55d2[_0xf0ab('0xc2')],'note':_[_0xf0ab('0xc8')](_0x5f55d2['vidaooNote'])?null:getMustacheRender(_0x5f55d2[_0xf0ab('0xc9')],_0x2068d6),'metadata':null},'redirect':_0xf0ab('0xca'),'json':!![]};try{if(!_[_0xf0ab('0xc8')](_0x5f55d2[_0xf0ab('0xc3')])){var _0x41e2d8=getMustacheRender(_0x5f55d2[_0xf0ab('0xc3')],_0x2068d6);var _0x57f44d=JSON[_0xf0ab('0x81')](_0x41e2d8);_0x35b480[_0xf0ab('0x3a')][_0xf0ab('0xcb')]=_0x57f44d;}}catch(_0x533b37){throw new db[(_0xf0ab('0xcc'))]['ValidationError']('Error\x20in\x20conversion\x20vidaooMetadata');}return rp(_0x35b480);}else{throw new db[(_0xf0ab('0xcc'))][(_0xf0ab('0xcd'))](_0xf0ab('0xce'));}})['then'](function(_0x1697ca){_0x7c7c3b=_0x1697ca;if(_0x7c7c3b['id']){var _0x15da8a={'body':_0x7c7c3b[_0xf0ab('0xcf')],'ChatWebsiteId':_0x5f55d2['id'],'ChatInteractionId':_0x48fc7e['id'],'direction':'out','UserId':_0x35486d[_0xf0ab('0x9b')]['id']};return db[_0xf0ab('0xd0')][_0xf0ab('0xd1')](_0x15da8a,{});}else{throw new db['Sequelize'][(_0xf0ab('0xcd'))](_0xf0ab('0xd2'));}})[_0xf0ab('0x21')](function(){return _0x48fc7e[_0xf0ab('0xd3')]({'vidaooSessionId':_0x7c7c3b['id']});})[_0xf0ab('0x21')](respondWithResult(_0x3f5ade,null))[_0xf0ab('0x46')](handleError(_0x3f5ade,null));};exports[_0xf0ab('0xd4')]=function(_0x115e3d,_0x2d0f9c){if(_0x115e3d[_0xf0ab('0x3a')]['id']){delete _0x115e3d[_0xf0ab('0x3a')]['id'];}return db[_0xf0ab('0xa1')][_0xf0ab('0x6c')]({'where':{'id':_0x115e3d[_0xf0ab('0xbd')]['id']},'include':[{'model':db['CmContact'],'as':'Contact'}]})[_0xf0ab('0x21')](handleEntityNotFound(_0x2d0f9c,null))[_0xf0ab('0x21')](saveUpdates(_0x115e3d['body'],null))[_0xf0ab('0x21')](respondWithResult(_0x2d0f9c,null))['catch'](handleError(_0x2d0f9c,null));};exports[_0xf0ab('0xd5')]=function(_0x1e9768,_0x4398a3,_0x4195d9){if(_0x1e9768[_0xf0ab('0x3a')]['id']){delete _0x1e9768[_0xf0ab('0x3a')]['id'];}return db[_0xf0ab('0xa1')][_0xf0ab('0x6c')]({'where':{'id':_0x1e9768[_0xf0ab('0xbd')]['id']}})[_0xf0ab('0x21')](function(_0x5f10a5){if(!_0x5f10a5){logger[_0xf0ab('0x28')](_0xf0ab('0xd6'),_0xf0ab('0xd5'),0x194,_0xf0ab('0xd7'));_0x4398a3[_0xf0ab('0x2b')](0x194);}else{if(_0x5f10a5[_0xf0ab('0x7b')]){throw new db['Sequelize']['ValidationError'](_0xf0ab('0xd8'));}}return _0x5f10a5;})[_0xf0ab('0x21')](function(_0x564124){if(_0x564124){return _0x564124[_0xf0ab('0x33')]({'closed':_0x1e9768[_0xf0ab('0x3a')][_0xf0ab('0xd9')],'disposition':_0x1e9768['body'][_0xf0ab('0xda')]})[_0xf0ab('0x21')](function(_0x2d9046){return _0x2d9046;});}})[_0xf0ab('0x21')](function(_0x4e5f1e){return respondWithRpcPromise(_0xf0ab('0xdb'),_0xf0ab('0xd5'),_0x1e9768[_0xf0ab('0x3a')],client9004);})['then'](respondWithResult(_0x4398a3,null))['catch'](handleError(_0x4398a3,null));};exports['attachmentUpload']=function(_0x581cb1,_0x22251d,_0x2b5993){_0x581cb1[_0xf0ab('0x3a')]['name']=_0x581cb1[_0xf0ab('0xdc')]['originalname'];_0x581cb1[_0xf0ab('0x3a')][_0xf0ab('0xdd')]=_0x581cb1[_0xf0ab('0xdc')][_0xf0ab('0xde')];_0x581cb1[_0xf0ab('0x3a')][_0xf0ab('0x49')]=_0x581cb1[_0xf0ab('0xdc')][_0xf0ab('0xdf')];return db[_0xf0ab('0xe0')][_0xf0ab('0xd1')](_0x581cb1[_0xf0ab('0x3a')])[_0xf0ab('0x21')](respondWithResult(_0x22251d,0xc9))[_0xf0ab('0x46')](handleError(_0x22251d,null));};exports[_0xf0ab('0xe1')]=function(_0x4d09bf,_0x415b9d,_0x11ed58){return db[_0xf0ab('0xa1')]['findOne']({'where':{'id':_0x4d09bf[_0xf0ab('0xbd')]['id']},'raw':!![]})[_0xf0ab('0x21')](handleEntityNotFound(_0x415b9d,null))[_0xf0ab('0x21')](function(_0x278e32){if(_0x278e32){if(_0x278e32['closed']){return _0x415b9d[_0xf0ab('0x2c')](0x193)[_0xf0ab('0x2d')]({'status':0x193,'message':_0xf0ab('0xe2')});}return db[_0xf0ab('0xe0')][_0xf0ab('0xc0')]({'where':{'id':_0x4d09bf[_0xf0ab('0x4c')][_0xf0ab('0xe3')]},'raw':!![]})[_0xf0ab('0x21')](handleEntityNotFound(_0x415b9d,null));}})['then'](function(_0xadae03){if(_0xadae03){var _0x550b00=_0xadae03[_0xf0ab('0xe4')]!==null;var _0x2bfb6a=path[_0xf0ab('0xe5')](config['root'],_0xf0ab('0xe6'));if(_0x550b00){_0x2bfb6a=path[_0xf0ab('0xe5')](_0x2bfb6a,'offline-chat/');}var _0x5d62e4=path['join'](_0x2bfb6a,_0xadae03['basename']);return _0x415b9d[_0xf0ab('0xe7')](_0x5d62e4);}})['catch'](handleError(_0x415b9d,null));};exports['close']=function(_0x3b8bbe,_0x7e24c4){var _0x2d0ea3=null;var _0x4a18ad=null;var _0x57aaae=null;var _0x2ab0be=null;if(_0x3b8bbe[_0xf0ab('0x3a')]['id']){delete _0x3b8bbe['body']['id'];}if(_0x3b8bbe[_0xf0ab('0x3a')][_0xf0ab('0xe8')]){_0x2ab0be=path['join'](config['root'],'server/files/chat/upload/',util[_0xf0ab('0xe9')](_0xf0ab('0xea'),Date[_0xf0ab('0xeb')]()));_0x3b8bbe[_0xf0ab('0x3a')]['pathTranscript']=_0x2ab0be;}return db[_0xf0ab('0xa1')][_0xf0ab('0x6c')]({'where':{'id':_0x3b8bbe['params']['id']},'include':[{'model':db['ChatMessage'],'as':'Messages','include':[{'model':db[_0xf0ab('0xec')],'as':'User'}]}]})[_0xf0ab('0x21')](handleEntityNotFound(_0x7e24c4,null))[_0xf0ab('0x21')](saveUpdates(_0x3b8bbe[_0xf0ab('0x3a')],null))[_0xf0ab('0x21')](function(_0x116c84){if(_0x116c84){_0x2d0ea3=_0x116c84;return db[_0xf0ab('0xbf')][_0xf0ab('0x6c')]({'where':{'id':_0x2d0ea3[_0xf0ab('0x7f')]}});}})[_0xf0ab('0x21')](function(_0x1d6e15){if(_0x1d6e15){_0x57aaae=_0x1d6e15;return db[_0xf0ab('0xed')][_0xf0ab('0x6c')]({'where':{'id':_0x2d0ea3['ContactId']}});}})[_0xf0ab('0x21')](function(_0x29427c){if(_0x29427c){_0x4a18ad=_0x29427c;if(_0x2ab0be){var _0x29d4a1=null;for(var _0x50e996=0x1;_0x50e996<_0x2d0ea3['Messages'][_0xf0ab('0x52')];++_0x50e996){_0x29d4a1=_0x2d0ea3[_0xf0ab('0xee')][_0x50e996];var _0x8e04bb=_0x29d4a1[_0xf0ab('0x7b')]?util[_0xf0ab('0xe9')](_0xf0ab('0xef'),_0x57aaae[_0xf0ab('0xf0')],_0x29d4a1[_0xf0ab('0x7b')]):_0xf0ab('0xf1');var _0xc1537e=_0x3b8bbe[_0xf0ab('0x3a')][_0xf0ab('0xf2')]||util[_0xf0ab('0xe9')](_0xf0ab('0xef'),_0xf0ab('0xf3'),_0x29d4a1[_0xf0ab('0x75')]);switch(_0x57aaae[_0xf0ab('0xf4')]){case _0xf0ab('0xf5'):_0x8e04bb=_0x29d4a1[_0xf0ab('0x7b')]?util[_0xf0ab('0xe9')](_0xf0ab('0xef'),_0x57aaae['agentAlias'],_0x29d4a1[_0xf0ab('0x7b')]):'System';break;case _0xf0ab('0xf6'):_0x8e04bb=_0x29d4a1[_0xf0ab('0x7b')]?_0x29d4a1[_0xf0ab('0xec')][_0xf0ab('0xf7')]||_0x29d4a1['User'][_0xf0ab('0x40')]:'System';break;case'agent_fullname':_0x8e04bb=_0x29d4a1['UserId']?_0x29d4a1[_0xf0ab('0xec')][_0xf0ab('0x40')]:_0xf0ab('0xf1');break;default:_0x8e04bb=_0x29d4a1['UserId']?util[_0xf0ab('0xe9')](_0xf0ab('0xef'),_0x57aaae[_0xf0ab('0xf0')],_0x29d4a1[_0xf0ab('0x7b')]):_0xf0ab('0xf1');}var _0x2c39f0=util[_0xf0ab('0xe9')](_0xf0ab('0xf8'),moment(_0x29d4a1[_0xf0ab('0xf9')])[_0xf0ab('0xe9')](_0xf0ab('0xfa')),_0x29d4a1[_0xf0ab('0xfb')]==='in'?_0xc1537e:_0x8e04bb,_0x29d4a1['body']);if(!_0x29d4a1[_0xf0ab('0xfc')]){fs[_0xf0ab('0xfd')](_0x2ab0be,_0x2c39f0);}}return db[_0xf0ab('0xfe')][_0xf0ab('0xc0')]({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0xf0ab('0xff'),'raw':!![]}]});}}})['then'](function(_0x21eb2b){if(_0x21eb2b&&_0x21eb2b['Smtp']&&_0x3b8bbe[_0xf0ab('0x3a')]){var _0x262659={'tls':{'rejectUnauthorized':![]}};if(_0x21eb2b['Smtp'][_0xf0ab('0x100')]){_0x262659[_0xf0ab('0x100')]=_0x21eb2b[_0xf0ab('0xff')][_0xf0ab('0x100')];}else{_0x262659[_0xf0ab('0x101')]=_0x21eb2b['Smtp'][_0xf0ab('0x101')];_0x262659[_0xf0ab('0x102')]=_0x21eb2b[_0xf0ab('0xff')]['port'];_0x262659['secure']=_0x21eb2b[_0xf0ab('0xff')][_0xf0ab('0x103')];}if(_0x21eb2b[_0xf0ab('0xff')][_0xf0ab('0x104')]){_0x262659['auth']={'user':_0x21eb2b['Smtp'][_0xf0ab('0x9b')],'pass':_0x21eb2b[_0xf0ab('0xff')]['pass']};}return respondWithRpcPromise('SendMail',_0xf0ab('0x105'),{'account':_0x262659,'message':{'from':util['format'](_0xf0ab('0x106'),_0x21eb2b['name'],_0x21eb2b[_0xf0ab('0xc5')]||_0x21eb2b[_0xf0ab('0xff')][_0xf0ab('0x9b')]),'to':_0x3b8bbe[_0xf0ab('0x3a')][_0xf0ab('0xe8')],'subject':_0xf0ab('0x107'),'text':util[_0xf0ab('0xe9')](_0xf0ab('0x108'),_0x3b8bbe['body'][_0xf0ab('0xe8')]),'attachments':[{'path':_0x2ab0be}]}})[_0xf0ab('0x21')](function(){return _0x2d0ea3;})[_0xf0ab('0x46')](function(_0x15f041){console[_0xf0ab('0x28')](_0x15f041);});}else{return _0x2d0ea3;}})['then'](respondWithStatusCode(_0x7e24c4,0xc8))[_0xf0ab('0x46')](handleError(_0x7e24c4,null));};exports[_0xf0ab('0x109')]=function(_0x5eda4b,_0x57a8ab,_0x3cee1d){return db[_0xf0ab('0xd0')][_0xf0ab('0x6c')]({'where':{'id':_0x5eda4b[_0xf0ab('0xbd')]['id']}})[_0xf0ab('0x21')](handleEntityNotFound(_0x57a8ab,null))[_0xf0ab('0x21')](function(_0x4dff6e){if(_0x4dff6e){return _0x4dff6e[_0xf0ab('0x109')](_0x5eda4b[_0xf0ab('0x3a')][_0xf0ab('0x10a')],_[_0xf0ab('0x10b')](_0x5eda4b[_0xf0ab('0x3a')],[_0xf0ab('0x10a'),'id'])||{});}})['then'](respondWithResult(_0x57a8ab,null))[_0xf0ab('0x46')](handleError(_0x57a8ab,null));};exports['getMessages']=function(_0x283bf5,_0x1afcea,_0x22a9f8){var _0x33dbfc={'raw':![],'where':{}};var _0x487318={};var _0x546e13={'count':0x0,'rows':[]};return db[_0xf0ab('0xa1')]['findOne']({'where':{'id':_0x283bf5[_0xf0ab('0xbd')]['id']}})[_0xf0ab('0x21')](handleEntityNotFound(_0x1afcea,null))[_0xf0ab('0x21')](function(_0xa3b903){if(_0xa3b903){_0x487318['model']=_[_0xf0ab('0x4d')](db[_0xf0ab('0xd0')][_0xf0ab('0x47')]);_0x487318[_0xf0ab('0x4c')]=_['keys'](_0x283bf5[_0xf0ab('0x4c')]);_0x487318[_0xf0ab('0x4e')]=_['intersection'](_0x487318[_0xf0ab('0x4b')],_0x487318[_0xf0ab('0x4c')]);_0x33dbfc[_0xf0ab('0x51')]=_[_0xf0ab('0x4f')](_0x487318[_0xf0ab('0x4b')],qs['fields'](_0x283bf5[_0xf0ab('0x4c')][_0xf0ab('0x50')]));_0x33dbfc[_0xf0ab('0x51')]=_0x33dbfc['attributes'][_0xf0ab('0x52')]?_0x33dbfc[_0xf0ab('0x51')]:_0x487318[_0xf0ab('0x4b')];if(!_0x283bf5[_0xf0ab('0x4c')][_0xf0ab('0x53')](_0xf0ab('0x54'))){_0x33dbfc[_0xf0ab('0x30')]=qs[_0xf0ab('0x30')](_0x283bf5[_0xf0ab('0x4c')][_0xf0ab('0x30')]);_0x33dbfc['offset']=qs['offset'](_0x283bf5[_0xf0ab('0x4c')]['offset']);}_0x33dbfc['order']=qs[_0xf0ab('0x56')](_0x283bf5[_0xf0ab('0x4c')]['sort']);_0x33dbfc[_0xf0ab('0x83')]=qs[_0xf0ab('0x4e')](_[_0xf0ab('0x10c')](_0x283bf5['query'],_0x487318[_0xf0ab('0x4e')]));_0x33dbfc['where'][_0xf0ab('0x10d')]=_0xa3b903['id'];if(_0x283bf5['query'][_0xf0ab('0x8d')]){_0x33dbfc[_0xf0ab('0x83')]=_[_0xf0ab('0x39')](_0x33dbfc['where'],{'$or':_[_0xf0ab('0x3f')](_0x33dbfc[_0xf0ab('0x51')],function(_0x2ddc1d){var _0x3cef14={};_0x3cef14[_0x2ddc1d]={'$like':'%'+_0x283bf5['query'][_0xf0ab('0x8d')]+'%'};return _0x3cef14;})});}if(_0x283bf5[_0xf0ab('0x4c')]['$gte']){var _0x38ea18=_0x283bf5[_0xf0ab('0x4c')]['$gte']['split'](',');var _0x7ee6b3={};_0x7ee6b3[_0x38ea18[0x0]]={'$gte':moment(_0x38ea18[0x1])[_0xf0ab('0xe9')](_0xf0ab('0x10e'))};_0x33dbfc['where']=_[_0xf0ab('0x39')](_0x33dbfc['where'],_0x7ee6b3);}_0x33dbfc=_[_0xf0ab('0x39')]({},_0x33dbfc,_0x283bf5['options']);return db[_0xf0ab('0xd0')]['count']({'where':_0x33dbfc['where']})['then'](function(_0x1d1451){_0x546e13['count']=_0x1d1451;if(_0x283bf5[_0xf0ab('0x4c')][_0xf0ab('0xba')]){_0x33dbfc[_0xf0ab('0xbb')]=[{'all':!![]}];}return db[_0xf0ab('0xd0')][_0xf0ab('0x10f')](_0x33dbfc);})['then'](function(_0x16a1d2){_0x546e13[_0xf0ab('0xb8')]=_0x16a1d2;return _0x546e13;});}})[_0xf0ab('0x21')](respondWithFilteredResult(_0x1afcea,_0x33dbfc))[_0xf0ab('0x46')](handleError(_0x1afcea,null));};exports[_0xf0ab('0x110')]=function(_0x4b91de,_0x3a602f,_0x47788a){var _0x3592f1={'where':{}},_0x577f13={},_0x2f99c2={'count':0x0,'rows':[]};return db['ChatInteraction'][_0xf0ab('0xc0')]({'where':{'id':_0x4b91de[_0xf0ab('0xbd')]['id']}})['then'](handleEntityNotFound(_0x3a602f,null))['then'](function(_0x43c6b8){if(_0x43c6b8){_0x577f13['model']=_[_0xf0ab('0x4d')](db[_0xf0ab('0xd0')][_0xf0ab('0x47')]);_0x577f13[_0xf0ab('0x4c')]=_[_0xf0ab('0x4d')](_0x4b91de[_0xf0ab('0x4c')]);_0x577f13['filters']=_[_0xf0ab('0x4f')](_0x577f13[_0xf0ab('0x4b')],_0x577f13[_0xf0ab('0x4c')]);_0x3592f1[_0xf0ab('0x51')]=_[_0xf0ab('0x4f')](_0x577f13[_0xf0ab('0x4b')],qs[_0xf0ab('0x50')](_0x4b91de['query'][_0xf0ab('0x50')]));_0x3592f1[_0xf0ab('0x51')]=_0x3592f1['attributes'][_0xf0ab('0x52')]?_0x3592f1['attributes']:_0x577f13[_0xf0ab('0x4b')];if(!_0x4b91de['query']['hasOwnProperty']('nolimit')){_0x3592f1[_0xf0ab('0x30')]=qs[_0xf0ab('0x30')](_0x4b91de[_0xf0ab('0x4c')][_0xf0ab('0x30')]);_0x3592f1[_0xf0ab('0x2e')]=qs[_0xf0ab('0x2e')](_0x4b91de[_0xf0ab('0x4c')][_0xf0ab('0x2e')]);}_0x3592f1[_0xf0ab('0x55')]=qs[_0xf0ab('0x56')](_0x4b91de[_0xf0ab('0x4c')][_0xf0ab('0x56')]);_0x3592f1[_0xf0ab('0x83')]=qs[_0xf0ab('0x4e')](_[_0xf0ab('0x10c')](_0x4b91de[_0xf0ab('0x4c')],_0x577f13[_0xf0ab('0x4e')]));_0x3592f1['where'][_0xf0ab('0x10d')]=_0x43c6b8['id'];if(_0x4b91de['query'][_0xf0ab('0x8d')]){_0x3592f1['where']=_[_0xf0ab('0x39')](_0x3592f1[_0xf0ab('0x83')],{'$or':_[_0xf0ab('0x3f')](_0x3592f1['attributes'],function(_0x58f64c){var _0x5dc7d4={};_0x5dc7d4[_0x58f64c]={'$like':'%'+_0x4b91de[_0xf0ab('0x4c')][_0xf0ab('0x8d')]+'%'};return _0x5dc7d4;})});}_0x3592f1['where'][_0xf0ab('0xfc')]=![];if(_0x4b91de[_0xf0ab('0x4c')]['id']){_0x3592f1[_0xf0ab('0x83')]['id']={'$gt':_0x4b91de[_0xf0ab('0x4c')]['id']};}_0x3592f1=_['merge']({},_0x3592f1,_0x4b91de['options']);return db[_0xf0ab('0xd0')][_0xf0ab('0x31')]({'where':_0x3592f1[_0xf0ab('0x83')]})[_0xf0ab('0x21')](function(_0x2ab983){_0x2f99c2['count']=_0x2ab983;_0x3592f1[_0xf0ab('0xbb')]=[];if(_0x4b91de['query'][_0xf0ab('0x111')]){_0x3592f1[_0xf0ab('0xbb')][_0xf0ab('0x45')]({'model':db['User'],'as':_0xf0ab('0xec'),'attributes':['id',_0xf0ab('0x40'),_0xf0ab('0xf7')]});}if(_0x4b91de[_0xf0ab('0x4c')]['includeAll']){_0x3592f1[_0xf0ab('0xbb')]=[{'all':!![]}];}return db[_0xf0ab('0xd0')][_0xf0ab('0x10f')](_0x3592f1);})[_0xf0ab('0x21')](function(_0x3d70c0){_0x2f99c2[_0xf0ab('0xb8')]=_0x3d70c0;return _0x2f99c2;});}})[_0xf0ab('0x21')](respondWithFilteredResult(_0x3a602f,_0x3592f1))[_0xf0ab('0x46')](handleError(_0x3a602f,null));};exports['addTags']=function(_0x4d10af,_0x5cf4bd,_0x368523){return db['ChatInteraction'][_0xf0ab('0x6c')]({'where':{'id':_0x4d10af['params']['id']}})[_0xf0ab('0x21')](handleEntityNotFound(_0x5cf4bd,null))[_0xf0ab('0x21')](function(_0x46a38a){if(_0x46a38a){return _0x46a38a[_0xf0ab('0x112')](_0x4d10af[_0xf0ab('0x3a')][_0xf0ab('0x10a')],_['omit'](_0x4d10af[_0xf0ab('0x3a')],[_0xf0ab('0x10a'),'id'])||{})[_0xf0ab('0x113')](function(){return db['Tag'][_0xf0ab('0x10f')]({'attributes':['id',_0xf0ab('0x37'),_0xf0ab('0x59')],'where':{'id':_0x4d10af[_0xf0ab('0x3a')][_0xf0ab('0x10a')]}});})[_0xf0ab('0x21')](function(_0x1df97b){socket[_0xf0ab('0x114')](_0xf0ab('0x115'),{'id':Number(_0x4d10af[_0xf0ab('0xbd')]['id']),'tags':_0x1df97b||[]});return{'id':Number(_0x4d10af[_0xf0ab('0xbd')]['id']),'tags':_0x1df97b||[]};});}})[_0xf0ab('0x21')](respondWithResult(_0x5cf4bd,null))['catch'](handleError(_0x5cf4bd,null));};exports[_0xf0ab('0x116')]=function(_0x3ca465,_0x4e379d,_0x122e66){return db['ChatInteraction'][_0xf0ab('0x6c')]({'where':{'id':_0x3ca465[_0xf0ab('0xbd')]['id']}})[_0xf0ab('0x21')](handleEntityNotFound(_0x4e379d,null))[_0xf0ab('0x21')](function(_0x5c56e0){if(_0x5c56e0){return _0x5c56e0[_0xf0ab('0x116')](_0x3ca465[_0xf0ab('0x4c')][_0xf0ab('0x10a')]);}})['then'](respondWithStatusCode(_0x4e379d,null))[_0xf0ab('0x46')](handleError(_0x4e379d,null));};exports[_0xf0ab('0xe7')]=function(_0x2baa40,_0x4ff52d){var _0x2a2fea=moment()[_0xf0ab('0x117')]()[_0xf0ab('0xa0')]();var _0x4eccbd=path['join'](config['root'],_0xf0ab('0x118'),_0xf0ab('0x119'),_0xf0ab('0x11a'));var _0x5b6475=path[_0xf0ab('0xe5')](config[_0xf0ab('0x11b')],'server',_0xf0ab('0x119'),_0xf0ab('0x11c'));var _0x595bda=path[_0xf0ab('0xe5')](_0x4eccbd,_0x2a2fea);var _0x2bd3e3=util['format']('transcript-%d-%s.zip',_0x2baa40[_0xf0ab('0xbd')]['id'],_0x2a2fea);var _0x25242e=path[_0xf0ab('0xe5')](_0x4eccbd,_0x2bd3e3);var _0x3d8794=[];_0x3d8794[_0xf0ab('0x45')]({'model':db['User'],'as':_0xf0ab('0xec'),'attributes':['id','fullname'],'raw':!![]});_0x3d8794[_0xf0ab('0x45')]({'model':db[_0xf0ab('0xed')],'as':_0xf0ab('0x70'),'attributes':['id','firstName',_0xf0ab('0x11d')],'raw':!![]});if(_0x2baa40[_0xf0ab('0x4c')][_0xf0ab('0x11c')]){_0x3d8794[_0xf0ab('0x45')]({'model':db[_0xf0ab('0xe0')],'as':'Attachment','raw':!![]});}var _0x243763=[{'model':db[_0xf0ab('0xd0')],'as':_0xf0ab('0xee'),'attributes':['id',_0xf0ab('0x3a'),'createdAt',_0xf0ab('0xfb'),_0xf0ab('0xfc'),_0xf0ab('0x88')],'include':_0x3d8794}];_0x243763['push']({'model':db[_0xf0ab('0xbf')],'as':_0xf0ab('0x11e'),'attributes':['id',_0xf0ab('0x37')]});_0x243763['push']({'model':db[_0xf0ab('0xec')],'as':_0xf0ab('0x11f'),'attributes':['id',_0xf0ab('0x40')]});return db[_0xf0ab('0xa1')]['find']({'where':{'id':_0x2baa40[_0xf0ab('0xbd')]['id']},'include':_0x243763})[_0xf0ab('0x21')](handleEntityNotFound(_0x4ff52d,null))[_0xf0ab('0x21')](function(_0x2c2e20){if(_0x2c2e20){var _0x57bd77=_0x2c2e20[_0xf0ab('0x120')]({'plain':!![]});fs[_0xf0ab('0x121')](_0x595bda);var _0x169b02={'channel':_0xf0ab('0x122'),'account':_0x57bd77[_0xf0ab('0x11e')]['name'],'agent':_0x57bd77[_0xf0ab('0x11f')]?_0x57bd77['Owner'][_0xf0ab('0x40')]:_0xf0ab('0x123'),'createdAt':moment(_0x57bd77[_0xf0ab('0xf9')])['format'](_0xf0ab('0x10e'))['toString'](),'closedAt':_0x57bd77['closed']?moment(_0x57bd77['closedAt'])[_0xf0ab('0xe9')]('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x57bd77[_0xf0ab('0xda')],'chatInfo':{'browser':_0x57bd77[_0xf0ab('0x124')],'os':_0x57bd77[_0xf0ab('0x125')],'referer':_0x57bd77[_0xf0ab('0x126')],'customerIp':_0x57bd77[_0xf0ab('0x127')],'customerPort':_0x57bd77['customerPort']?_0x57bd77[_0xf0ab('0x128')]:_0xf0ab('0x123')},'messages':_(_0x57bd77['Messages'])[_0xf0ab('0x129')]()[_0xf0ab('0x8d')]({'secret':![]})[_0xf0ab('0x3f')](function(_0x2aa512){if(_0x2aa512['Attachment']){var _0x26009e=path[_0xf0ab('0xe5')](_0x5b6475,_0x2aa512['Attachment'][_0xf0ab('0xdd')]);if(fs[_0xf0ab('0x12a')](_0x26009e)){fs['createReadStream'](_0x26009e)[_0xf0ab('0x12b')](fs[_0xf0ab('0x12c')](path['join'](_0x595bda,_0x2aa512[_0xf0ab('0xe0')][_0xf0ab('0xdd')])));}}return{'date':moment(_0x2aa512[_0xf0ab('0xf9')])[_0xf0ab('0xe9')](_0xf0ab('0x10e'))['toString'](),'sender':_0x2aa512[_0xf0ab('0xfb')]==='out'?_0x2aa512[_0xf0ab('0xec')]?_0x2aa512['User'][_0xf0ab('0x40')]:_0xf0ab('0xf1'):_0x2aa512[_0xf0ab('0x70')][_0xf0ab('0x12d')]+(_0x2aa512[_0xf0ab('0x70')][_0xf0ab('0x11d')]?'\x20'+_0x2aa512[_0xf0ab('0x70')]['lastName']:''),'body':_0x2aa512[_0xf0ab('0xe0')]?_0x2aa512[_0xf0ab('0xe0')][_0xf0ab('0xdd')]:_0x2aa512[_0xf0ab('0x3a')],'direction':_0x2aa512[_0xf0ab('0xfb')]==='out'?'A':'C','secret':_0x2aa512[_0xf0ab('0xfc')],'read':_0x2aa512[_0xf0ab('0x88')],'attachment':_0x2aa512[_0xf0ab('0xe0')]};})[_0xf0ab('0x72')]()};return ejs['renderFile'](path[_0xf0ab('0xe5')](config[_0xf0ab('0x11b')],_0xf0ab('0x118'),_0xf0ab('0x12e'),'downloadInteraction.ejs'),{'interaction':_0x169b02})['then'](function(_0x3ad886){var _0x3df4a2=path['join'](_0x595bda,'transcript-'+_0x57bd77['id']+'-'+_0x2a2fea+_0xf0ab('0x12f'));var _0x378d44={'path':_0x3df4a2,'channel':_0xf0ab('0x122'),'interactionId':_0x57bd77['id']};return pdf[_0xf0ab('0x130')](_0x3ad886,_0x378d44);})[_0xf0ab('0x21')](function(){return new BPromise(function(_0x1e4acb,_0x25a1eb){zipdir(_0x595bda,{'saveTo':_0x25242e},function(_0x406090,_0x414d09){if(_0x406090)return _0x25a1eb(_0x406090);return _0x1e4acb(_0x414d09);});})[_0xf0ab('0x21')](function(){return new BPromise(function(_0x235528,_0x581c80){rimraf(_0x595bda,function(_0x14332a){if(_0x14332a)_0x581c80(_0x14332a);return _0x235528();});});})[_0xf0ab('0x21')](function(){return _0x4ff52d[_0xf0ab('0xe7')](_0x25242e,_0x2bd3e3,function(_0x4f9211){if(_0x4f9211){console[_0xf0ab('0x131')](_0xf0ab('0x132'),_0x4f9211);}else{fs[_0xf0ab('0x133')](_0x25242e);}});});});}else{return _0x4ff52d['sendStatus'](0xc8);}})[_0xf0ab('0x46')](handleError(_0x4ff52d,null));};
\ No newline at end of file
index b43f62f..cc6a0ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6a3=['map','findAll','unreadMessages','length','emit','events','../../mysqldb','ChatMessage','setMaxListeners','update','remove','then','setDataValue'];(function(_0x59dd10,_0x125d21){var _0x2d3777=function(_0x4c346e){while(--_0x4c346e){_0x59dd10['push'](_0x59dd10['shift']());}};_0x2d3777(++_0x125d21);}(_0xa6a3,0x1a5));var _0x3a6a=function(_0x16d1b6,_0x5912db){_0x16d1b6=_0x16d1b6-0x0;var _0x2ca1f5=_0xa6a3[_0x16d1b6];return _0x2ca1f5;};'use strict';var EventEmitter=require(_0x3a6a('0x0'));var ChatInteraction=require(_0x3a6a('0x1'))['db']['ChatInteraction'];var ChatMessage=require(_0x3a6a('0x1'))['db'][_0x3a6a('0x2')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x3a6a('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x3a6a('0x4'),'afterDestroy':_0x3a6a('0x5')};function emitEvent(_0x2676aa){return function(_0x926a5a,_0x17f63c,_0x16a72d){_0x926a5a['getUsers']({'attributes':['id'],'raw':!![]})[_0x3a6a('0x6')](function(_0x36457f){_0x926a5a[_0x3a6a('0x7')]('Users',_0x36457f[_0x3a6a('0x8')](function(_0xffb3aa){return{'id':_0xffb3aa['id']};}));return ChatMessage[_0x3a6a('0x9')]({'where':{'ChatInteractionId':_0x926a5a['id'],'direction':'in','read':![]},'raw':!![]});})[_0x3a6a('0x6')](function(_0x1d2f0b){_0x926a5a[_0x3a6a('0x7')](_0x3a6a('0xa'),_0x1d2f0b[_0x3a6a('0xb')]);ChatInteractionEvents[_0x3a6a('0xc')](_0x2676aa+':'+_0x926a5a['id'],_0x926a5a);ChatInteractionEvents[_0x3a6a('0xc')](_0x2676aa,_0x926a5a);_0x16a72d(null);})['catch'](_0x16a72d(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInteraction['hook'](e,emitEvent(event));}}module['exports']=ChatInteractionEvents;
\ No newline at end of file
+var _0x3b86=['then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','../../mysqldb','ChatInteraction','ChatMessage','setMaxListeners','save','update','remove','getUsers'];(function(_0x4914e2,_0x48be8f){var _0x2dcd07=function(_0x1a2565){while(--_0x1a2565){_0x4914e2['push'](_0x4914e2['shift']());}};_0x2dcd07(++_0x48be8f);}(_0x3b86,0xc0));var _0x63b8=function(_0x5c5b24,_0xe2eb09){_0x5c5b24=_0x5c5b24-0x0;var _0x32321b=_0x3b86[_0x5c5b24];return _0x32321b;};'use strict';var EventEmitter=require('events');var ChatInteraction=require(_0x63b8('0x0'))['db'][_0x63b8('0x1')];var ChatMessage=require('../../mysqldb')['db'][_0x63b8('0x2')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x63b8('0x3')](0x0);var events={'afterCreate':_0x63b8('0x4'),'afterUpdate':_0x63b8('0x5'),'afterDestroy':_0x63b8('0x6')};function emitEvent(_0x17a88d){return function(_0x296afa,_0x12fd73,_0x2d43d5){_0x296afa[_0x63b8('0x7')]({'attributes':['id'],'raw':!![]})[_0x63b8('0x8')](function(_0x378487){_0x296afa[_0x63b8('0x9')](_0x63b8('0xa'),_0x378487[_0x63b8('0xb')](function(_0x1a2cad){return{'id':_0x1a2cad['id']};}));return ChatMessage[_0x63b8('0xc')]({'where':{'ChatInteractionId':_0x296afa['id'],'direction':'in','read':![]},'raw':!![]});})[_0x63b8('0x8')](function(_0x2b2eeb){_0x296afa[_0x63b8('0x9')](_0x63b8('0xd'),_0x2b2eeb[_0x63b8('0xe')]);ChatInteractionEvents['emit'](_0x17a88d+':'+_0x296afa['id'],_0x296afa);ChatInteractionEvents[_0x63b8('0xf')](_0x17a88d,_0x296afa);_0x2d43d5(null);})[_0x63b8('0x10')](_0x2d43d5(null));};}for(var e in events){if(events[_0x63b8('0x11')](e)){var event=events[e];ChatInteraction[_0x63b8('0x12')](e,emitEvent(event));}}module[_0x63b8('0x13')]=ChatInteractionEvents;
\ No newline at end of file
index e564857..db8cafd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x376f=['rimraf','../../config/environment','./chatInteraction.attributes','ChatInteraction','chat_interactions','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','path'];(function(_0x4e49e0,_0x3f08bf){var _0x3edb28=function(_0xcca27d){while(--_0xcca27d){_0x4e49e0['push'](_0x4e49e0['shift']());}};_0x3edb28(++_0x3f08bf);}(_0x376f,0x18a));var _0xf376=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0x376f[_0x1cc8fe];return _0x230054;};'use strict';var _=require(_0xf376('0x0'));var util=require(_0xf376('0x1'));var logger=require('../../config/logger')(_0xf376('0x2'));var moment=require(_0xf376('0x3'));var BPromise=require(_0xf376('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf376('0x5'));var rimraf=require(_0xf376('0x6'));var config=require(_0xf376('0x7'));var attributes=require(_0xf376('0x8'));module['exports']=function(_0x28fe39,_0x5963dd){return _0x28fe39['define'](_0xf376('0x9'),attributes,{'tableName':_0xf376('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0xfc8a9d,_0x1636b7,_0x5b244e){if(_0xfc8a9d['changed'](_0xf376('0xb'))){_0xfc8a9d[_0xf376('0xc')]=moment()[_0xf376('0xd')](_0xf376('0xe'));}_0x5b244e(null,_0xfc8a9d);}},'charset':'utf8mb4','collate':_0xf376('0xf')});};
\ No newline at end of file
+var _0x7f1c=['api','bluebird','request-promise','path','rimraf','./chatInteraction.attributes','exports','define','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x7f1c,0x1d1));var _0xc7f1=function(_0x28c2dd,_0x45c558){_0x28c2dd=_0x28c2dd-0x0;var _0x5a2895=_0x7f1c[_0x28c2dd];return _0x5a2895;};'use strict';var _=require(_0xc7f1('0x0'));var util=require(_0xc7f1('0x1'));var logger=require(_0xc7f1('0x2'))(_0xc7f1('0x3'));var moment=require('moment');var BPromise=require(_0xc7f1('0x4'));var rp=require(_0xc7f1('0x5'));var fs=require('fs');var path=require(_0xc7f1('0x6'));var rimraf=require(_0xc7f1('0x7'));var config=require('../../config/environment');var attributes=require(_0xc7f1('0x8'));module[_0xc7f1('0x9')]=function(_0x4acc5d,_0x464815){return _0x4acc5d[_0xc7f1('0xa')]('ChatInteraction',attributes,{'tableName':'chat_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x20ecfd,_0x120f45,_0x8b46da){if(_0x20ecfd[_0xc7f1('0xb')](_0xc7f1('0xc'))){_0x20ecfd[_0xc7f1('0xd')]=moment()[_0xc7f1('0xe')](_0xc7f1('0xf'));}_0x8b46da(null,_0x20ecfd);}},'charset':_0xc7f1('0x10'),'collate':_0xc7f1('0x11')});};
\ No newline at end of file
index c324746..9e9cb4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2de=['body','options','where','attributes','limit','AddTagsToChatInteraction','find','then','ids','omit','spread','AddTags','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','register','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateChatInteraction','ChatInteraction','update'];(function(_0x3d9e1c,_0x1d6056){var _0x356fc5=function(_0x100a74){while(--_0x100a74){_0x3d9e1c['push'](_0x3d9e1c['shift']());}};_0x356fc5(++_0x1d6056);}(_0xf2de,0xe8));var _0xef2d=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0xf2de[_0x1969a7];return _0x3d665f;};'use strict';var _=require(_0xef2d('0x0'));var util=require(_0xef2d('0x1'));var moment=require(_0xef2d('0x2'));var BPromise=require(_0xef2d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xef2d('0x4'))['db'];var utils=require(_0xef2d('0x5'));var logger=require(_0xef2d('0x6'))(_0xef2d('0x7'));var config=require(_0xef2d('0x8'));var jayson=require(_0xef2d('0x9'));var client=jayson[_0xef2d('0xa')][_0xef2d('0xb')]({'port':0x232a});config[_0xef2d('0xc')]=_[_0xef2d('0xd')](config[_0xef2d('0xc')],{'host':_0xef2d('0xe'),'port':0x18eb});var socket=require(_0xef2d('0xf'))(new Redis(config['redis']));require(_0xef2d('0x10'))[_0xef2d('0x11')](socket);function respondWithRpcPromise(_0x353d5e,_0x1f57cf,_0x9b2fbf){return new BPromise(function(_0x4ee62e,_0x1dc68f){return client['request'](_0x353d5e,_0x9b2fbf)['then'](function(_0x56715b){logger[_0xef2d('0x12')](_0xef2d('0x13'),_0x1f57cf,_0xef2d('0x14'));logger[_0xef2d('0x15')](_0xef2d('0x16'),_0x1f57cf,_0xef2d('0x14'),JSON[_0xef2d('0x17')](_0x56715b));if(_0x56715b[_0xef2d('0x18')]){if(_0x56715b['error'][_0xef2d('0x19')]===0x1f4){logger[_0xef2d('0x18')](_0xef2d('0x13'),_0x1f57cf,_0x56715b[_0xef2d('0x18')][_0xef2d('0x1a')]);return _0x1dc68f(_0x56715b[_0xef2d('0x18')][_0xef2d('0x1a')]);}logger[_0xef2d('0x18')]('ChatInteraction,\x20%s,\x20%s',_0x1f57cf,_0x56715b['error'][_0xef2d('0x1a')]);return _0x4ee62e(_0x56715b['error'][_0xef2d('0x1a')]);}else{logger['info'](_0xef2d('0x13'),_0x1f57cf,'request\x20sent');_0x4ee62e(_0x56715b[_0xef2d('0x1b')]['message']);}})[_0xef2d('0x1c')](function(_0x19e020){logger[_0xef2d('0x18')](_0xef2d('0x13'),_0x1f57cf,_0x19e020);_0x1dc68f(_0x19e020);});});}exports[_0xef2d('0x1d')]=function(_0x558bdf){var _0x580931=this;return new Promise(function(_0x29dfec,_0x737070){return db[_0xef2d('0x1e')][_0xef2d('0x1f')](_0x558bdf[_0xef2d('0x20')],{'raw':_0x558bdf[_0xef2d('0x21')]?_0x558bdf[_0xef2d('0x21')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x558bdf[_0xef2d('0x21')]?_0x558bdf[_0xef2d('0x21')][_0xef2d('0x22')]||null:null,'attributes':_0x558bdf[_0xef2d('0x21')]?_0x558bdf[_0xef2d('0x21')][_0xef2d('0x23')]||null:null,'limit':_0x558bdf[_0xef2d('0x21')]?_0x558bdf[_0xef2d('0x21')][_0xef2d('0x24')]||null:null})['then'](function(_0x4607b5){logger[_0xef2d('0x12')](_0xef2d('0x1d'),_0x558bdf);logger[_0xef2d('0x15')](_0xef2d('0x1d'),_0x558bdf,JSON['stringify'](_0x4607b5));_0x29dfec(_0x4607b5);})['catch'](function(_0x654f5e){logger['error']('UpdateChatInteraction',_0x654f5e[_0xef2d('0x1a')],_0x558bdf);_0x737070(_0x580931[_0xef2d('0x18')](0x1f4,_0x654f5e['message']));});});};exports[_0xef2d('0x25')]=function(_0x4c246d){return new Promise(function(_0x10d1e3,_0x41074c){return db[_0xef2d('0x1e')][_0xef2d('0x26')]({'where':_0x4c246d[_0xef2d('0x21')]?_0x4c246d[_0xef2d('0x21')][_0xef2d('0x22')]||null:null})[_0xef2d('0x27')](function(_0x1ff670){if(_0x1ff670){return _0x1ff670['addTags'](_0x4c246d[_0xef2d('0x20')][_0xef2d('0x28')],_[_0xef2d('0x29')](_0x4c246d[_0xef2d('0x20')],[_0xef2d('0x28'),'id'])||{});}})[_0xef2d('0x2a')](function(_0x32dbbe){logger['info']('AddTags',_0x4c246d);logger[_0xef2d('0x15')]('AddTags',_0x4c246d,JSON[_0xef2d('0x17')](_0x32dbbe));_0x10d1e3(_0x32dbbe);})[_0xef2d('0x1c')](function(_0x45a079){logger[_0xef2d('0x18')](_0xef2d('0x2b'),_0x45a079['message'],_0x4c246d);_0x41074c(_this[_0xef2d('0x18')](0x1f4,_0x45a079[_0xef2d('0x1a')]));});});};
\ No newline at end of file
+var _0x27ef=['result','catch','ChatInteraction','options','raw','where','attributes','UpdateChatInteraction','stringify','AddTagsToChatInteraction','then','addTags','body','ids','spread','AddTags','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','error','code','message','info'];(function(_0xcdc1e2,_0xe7a35b){var _0x21e4da=function(_0x3e40a1){while(--_0x3e40a1){_0xcdc1e2['push'](_0xcdc1e2['shift']());}};_0x21e4da(++_0xe7a35b);}(_0x27ef,0x1c8));var _0xf27e=function(_0x2a8122,_0xd957e){_0x2a8122=_0x2a8122-0x0;var _0x49a5c7=_0x27ef[_0x2a8122];return _0x49a5c7;};'use strict';var _=require('lodash');var util=require(_0xf27e('0x0'));var moment=require(_0xf27e('0x1'));var BPromise=require(_0xf27e('0x2'));var rs=require(_0xf27e('0x3'));var fs=require('fs');var Redis=require(_0xf27e('0x4'));var db=require(_0xf27e('0x5'))['db'];var utils=require(_0xf27e('0x6'));var logger=require(_0xf27e('0x7'))('rpc');var config=require(_0xf27e('0x8'));var jayson=require(_0xf27e('0x9'));var client=jayson[_0xf27e('0xa')]['http']({'port':0x232a});config[_0xf27e('0xb')]=_[_0xf27e('0xc')](config[_0xf27e('0xb')],{'host':_0xf27e('0xd'),'port':0x18eb});var socket=require(_0xf27e('0xe'))(new Redis(config[_0xf27e('0xb')]));require(_0xf27e('0xf'))['register'](socket);function respondWithRpcPromise(_0x1d9240,_0x394be9,_0x44667a){return new BPromise(function(_0x5b5201,_0x5b9265){return client['request'](_0x1d9240,_0x44667a)['then'](function(_0x1c3710){logger['info'](_0xf27e('0x10'),_0x394be9,_0xf27e('0x11'));logger[_0xf27e('0x12')](_0xf27e('0x13'),_0x394be9,'request\x20sent',JSON['stringify'](_0x1c3710));if(_0x1c3710[_0xf27e('0x14')]){if(_0x1c3710[_0xf27e('0x14')][_0xf27e('0x15')]===0x1f4){logger[_0xf27e('0x14')](_0xf27e('0x10'),_0x394be9,_0x1c3710[_0xf27e('0x14')][_0xf27e('0x16')]);return _0x5b9265(_0x1c3710[_0xf27e('0x14')][_0xf27e('0x16')]);}logger[_0xf27e('0x14')](_0xf27e('0x10'),_0x394be9,_0x1c3710['error'][_0xf27e('0x16')]);return _0x5b5201(_0x1c3710[_0xf27e('0x14')][_0xf27e('0x16')]);}else{logger[_0xf27e('0x17')]('ChatInteraction,\x20%s,\x20%s',_0x394be9,_0xf27e('0x11'));_0x5b5201(_0x1c3710[_0xf27e('0x18')][_0xf27e('0x16')]);}})[_0xf27e('0x19')](function(_0x5adb0d){logger['error'](_0xf27e('0x10'),_0x394be9,_0x5adb0d);_0x5b9265(_0x5adb0d);});});}exports['UpdateChatInteraction']=function(_0xf21199){var _0x1c584a=this;return new Promise(function(_0xac4baf,_0x58577a){return db[_0xf27e('0x1a')]['update'](_0xf21199['body'],{'raw':_0xf21199[_0xf27e('0x1b')]?_0xf21199['options'][_0xf27e('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xf21199[_0xf27e('0x1b')]?_0xf21199['options'][_0xf27e('0x1d')]||null:null,'attributes':_0xf21199[_0xf27e('0x1b')]?_0xf21199['options'][_0xf27e('0x1e')]||null:null,'limit':_0xf21199[_0xf27e('0x1b')]?_0xf21199['options']['limit']||null:null})['then'](function(_0x359742){logger[_0xf27e('0x17')](_0xf27e('0x1f'),_0xf21199);logger[_0xf27e('0x12')](_0xf27e('0x1f'),_0xf21199,JSON[_0xf27e('0x20')](_0x359742));_0xac4baf(_0x359742);})[_0xf27e('0x19')](function(_0x211436){logger[_0xf27e('0x14')](_0xf27e('0x1f'),_0x211436[_0xf27e('0x16')],_0xf21199);_0x58577a(_0x1c584a[_0xf27e('0x14')](0x1f4,_0x211436[_0xf27e('0x16')]));});});};exports[_0xf27e('0x21')]=function(_0x546f8e){return new Promise(function(_0x575890,_0x56898c){return db[_0xf27e('0x1a')]['find']({'where':_0x546f8e['options']?_0x546f8e['options']['where']||null:null})[_0xf27e('0x22')](function(_0x3e7bd1){if(_0x3e7bd1){return _0x3e7bd1[_0xf27e('0x23')](_0x546f8e[_0xf27e('0x24')]['ids'],_['omit'](_0x546f8e[_0xf27e('0x24')],[_0xf27e('0x25'),'id'])||{});}})[_0xf27e('0x26')](function(_0xb0a813){logger[_0xf27e('0x17')](_0xf27e('0x27'),_0x546f8e);logger[_0xf27e('0x12')](_0xf27e('0x27'),_0x546f8e,JSON[_0xf27e('0x20')](_0xb0a813));_0x575890(_0xb0a813);})[_0xf27e('0x19')](function(_0x532e0c){logger[_0xf27e('0x14')](_0xf27e('0x27'),_0x532e0c['message'],_0x546f8e);_0x56898c(_this[_0xf27e('0x14')](0x1f4,_0x532e0c['message']));});});};
\ No newline at end of file
index 168f5dd..e51a812 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc91=['removeListener','length','chatInteraction:','./chatInteraction.events','save','remove','update','emit'];(function(_0x2feb53,_0x264ef7){var _0x5700ee=function(_0x700c98){while(--_0x700c98){_0x2feb53['push'](_0x2feb53['shift']());}};_0x5700ee(++_0x264ef7);}(_0xdc91,0x183));var _0x1dc9=function(_0x29b6a7,_0x3987c5){_0x29b6a7=_0x29b6a7-0x0;var _0x4d8aab=_0xdc91[_0x29b6a7];return _0x4d8aab;};'use strict';var ChatInteractionEvents=require(_0x1dc9('0x0'));var events=[_0x1dc9('0x1'),_0x1dc9('0x2'),_0x1dc9('0x3')];function createListener(_0x1ef0bb,_0x57a96b){return function(_0x198b5c){_0x57a96b[_0x1dc9('0x4')](_0x1ef0bb,_0x198b5c);};}function removeListener(_0x38f7b8,_0x5b08a6){return function(){ChatInteractionEvents[_0x1dc9('0x5')](_0x38f7b8,_0x5b08a6);};}exports['register']=function(_0x167133){for(var _0x1a596b=0x0,_0x412d8e=events[_0x1dc9('0x6')];_0x1a596b<_0x412d8e;_0x1a596b++){var _0x290af7=events[_0x1a596b];var _0x507248=createListener(_0x1dc9('0x7')+_0x290af7,_0x167133);ChatInteractionEvents['on'](_0x290af7,_0x507248);}};
\ No newline at end of file
+var _0x3667=['remove','update','emit','removeListener','register','length','chatInteraction:','./chatInteraction.events','save'];(function(_0x496e49,_0x15b358){var _0x49d8da=function(_0x488292){while(--_0x488292){_0x496e49['push'](_0x496e49['shift']());}};_0x49d8da(++_0x15b358);}(_0x3667,0xcd));var _0x7366=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3667[_0x3dd15e];return _0x231fd0;};'use strict';var ChatInteractionEvents=require(_0x7366('0x0'));var events=[_0x7366('0x1'),_0x7366('0x2'),_0x7366('0x3')];function createListener(_0x3c601d,_0x5d1072){return function(_0x27a90d){_0x5d1072[_0x7366('0x4')](_0x3c601d,_0x27a90d);};}function removeListener(_0x4b32a7,_0x27726b){return function(){ChatInteractionEvents[_0x7366('0x5')](_0x4b32a7,_0x27726b);};}exports[_0x7366('0x6')]=function(_0x1c0cf4){for(var _0x101e3d=0x0,_0x589397=events[_0x7366('0x7')];_0x101e3d<_0x589397;_0x101e3d++){var _0xa1a3c5=events[_0x101e3d];var _0x2dd32b=createListener(_0x7366('0x8')+_0xa1a3c5,_0x1c0cf4);ChatInteractionEvents['on'](_0xa1a3c5,_0x2dd32b);}};
\ No newline at end of file
index 3b1f641..b84a55f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e3d=['/:id/messages','getMessages','getMyMessages','/:id/download','download','post','create','createVidaooSession','diskStorage','root','format','%s-%s','now','originalname','replace','/:id/attachment_upload','single','attachmentUpload','addMessage','/:id/tags','chat','chatinteraction:addtags','addTags','put','tracked','chatinteraction:update','/:id/custom_update','customUpdate','/:id/abandon','abandon','/:id/close','close','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','isChatInteractionAuthorized','show','attachmentDownload'];(function(_0x27eda0,_0x42a3cf){var _0x2b63a5=function(_0x431084){while(--_0x431084){_0x27eda0['push'](_0x27eda0['shift']());}};_0x2b63a5(++_0x42a3cf);}(_0x7e3d,0x18e));var _0xd7e3=function(_0x3fb391,_0x539bd5){_0x3fb391=_0x3fb391-0x0;var _0x3dd627=_0x7e3d[_0x3fb391];return _0x3dd627;};'use strict';var multer=require('multer');var util=require(_0xd7e3('0x0'));var path=require(_0xd7e3('0x1'));var timeout=require(_0xd7e3('0x2'));var express=require(_0xd7e3('0x3'));var router=express[_0xd7e3('0x4')]();var fs_extra=require(_0xd7e3('0x5'));var auth=require(_0xd7e3('0x6'));var interaction=require(_0xd7e3('0x7'));var config=require('../../config/environment');var controller=require(_0xd7e3('0x8'));router[_0xd7e3('0x9')]('/',auth[_0xd7e3('0xa')](),controller[_0xd7e3('0xb')]);router[_0xd7e3('0x9')](_0xd7e3('0xc'),auth[_0xd7e3('0xa')](),controller[_0xd7e3('0xd')]);router[_0xd7e3('0x9')](_0xd7e3('0xe'),auth[_0xd7e3('0xf')](),controller[_0xd7e3('0x10')]);router[_0xd7e3('0x9')]('/:id/attachment_download',auth['isChatInteractionAuthorized'](),controller[_0xd7e3('0x11')]);router[_0xd7e3('0x9')](_0xd7e3('0x12'),auth['isAuthenticated'](),controller[_0xd7e3('0x13')]);router[_0xd7e3('0x9')]('/:id/my_messages',auth['isChatInteractionAuthorized'](),controller[_0xd7e3('0x14')]);router['get'](_0xd7e3('0x15'),auth[_0xd7e3('0xa')](),controller[_0xd7e3('0x16')]);router[_0xd7e3('0x17')]('/',auth['isAuthenticated'](),controller[_0xd7e3('0x18')]);router['post']('/:id/vidaoo',auth[_0xd7e3('0xa')](),controller[_0xd7e3('0x19')]);var upload=multer({'storage':multer[_0xd7e3('0x1a')]({'destination':function(_0x42737c,_0x215785,_0x3537b8){_0x3537b8(null,path['join'](config[_0xd7e3('0x1b')],'server/files/attachments/'));},'filename':function(_0x2a7df2,_0xac97b4,_0x492708){_0x492708(null,util[_0xd7e3('0x1c')](_0xd7e3('0x1d'),Date[_0xd7e3('0x1e')](),_0xac97b4[_0xd7e3('0x1f')][_0xd7e3('0x20')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xd7e3('0x17')](_0xd7e3('0x21'),upload[_0xd7e3('0x22')]('file'),controller[_0xd7e3('0x23')]);router['post']('/:id/messages',auth[_0xd7e3('0xf')](),controller[_0xd7e3('0x24')]);router[_0xd7e3('0x17')](_0xd7e3('0x25'),auth['isAuthenticated'](),interaction['tracked'](_0xd7e3('0x26'),_0xd7e3('0x27')),controller[_0xd7e3('0x28')]);router[_0xd7e3('0x29')]('/:id',auth[_0xd7e3('0xa')](),interaction[_0xd7e3('0x2a')]('chat',_0xd7e3('0x2b')),controller['update']);router[_0xd7e3('0x29')](_0xd7e3('0x2c'),controller[_0xd7e3('0x2d')]);router[_0xd7e3('0x29')](_0xd7e3('0x2e'),auth[_0xd7e3('0xf')](),controller[_0xd7e3('0x2f')]);router[_0xd7e3('0x29')](_0xd7e3('0x30'),controller[_0xd7e3('0x31')]);router['delete'](_0xd7e3('0xe'),auth[_0xd7e3('0xa')](),interaction[_0xd7e3('0x2a')](_0xd7e3('0x26'),'chatinteraction:destroy'),controller[_0xd7e3('0x32')]);router['delete'](_0xd7e3('0x25'),auth[_0xd7e3('0xa')](),controller['removeTags']);module[_0xd7e3('0x33')]=router;
\ No newline at end of file
+var _0x703b=['chat','chatinteraction:addtags','addTags','put','chatinteraction:update','update','/:id/abandon','abandon','close','delete','chatinteraction:destroy','removeTags','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','describe','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','getMessages','getMyMessages','/:id/download','download','post','create','/:id/vidaoo','diskStorage','root','%s-%s','now','originalname','/:id/attachment_upload','single','file','/:id/messages','addMessage','/:id/tags','tracked'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x703b,0x185));var _0xb703=function(_0x43593d,_0x59b4b8){_0x43593d=_0x43593d-0x0;var _0x55a3ab=_0x703b[_0x43593d];return _0x55a3ab;};'use strict';var multer=require(_0xb703('0x0'));var util=require(_0xb703('0x1'));var path=require(_0xb703('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xb703('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xb703('0x4'));var interaction=require(_0xb703('0x5'));var config=require('../../config/environment');var controller=require('./chatInteraction.controller');router[_0xb703('0x6')]('/',auth[_0xb703('0x7')](),controller[_0xb703('0x8')]);router[_0xb703('0x6')]('/describe',auth['isAuthenticated'](),controller[_0xb703('0x9')]);router[_0xb703('0x6')](_0xb703('0xa'),auth[_0xb703('0xb')](),controller[_0xb703('0xc')]);router[_0xb703('0x6')](_0xb703('0xd'),auth['isChatInteractionAuthorized'](),controller[_0xb703('0xe')]);router[_0xb703('0x6')]('/:id/messages',auth[_0xb703('0x7')](),controller[_0xb703('0xf')]);router['get']('/:id/my_messages',auth[_0xb703('0xb')](),controller[_0xb703('0x10')]);router[_0xb703('0x6')](_0xb703('0x11'),auth[_0xb703('0x7')](),controller[_0xb703('0x12')]);router[_0xb703('0x13')]('/',auth[_0xb703('0x7')](),controller[_0xb703('0x14')]);router[_0xb703('0x13')](_0xb703('0x15'),auth[_0xb703('0x7')](),controller['createVidaooSession']);var upload=multer({'storage':multer[_0xb703('0x16')]({'destination':function(_0x4a6b1f,_0x3d4d0f,_0x229da7){_0x229da7(null,path['join'](config[_0xb703('0x17')],'server/files/attachments/'));},'filename':function(_0x1f5cfe,_0x2b99ba,_0x4d5da0){_0x4d5da0(null,util['format'](_0xb703('0x18'),Date[_0xb703('0x19')](),_0x2b99ba[_0xb703('0x1a')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router['post'](_0xb703('0x1b'),upload[_0xb703('0x1c')](_0xb703('0x1d')),controller['attachmentUpload']);router[_0xb703('0x13')](_0xb703('0x1e'),auth['isChatInteractionAuthorized'](),controller[_0xb703('0x1f')]);router[_0xb703('0x13')](_0xb703('0x20'),auth['isAuthenticated'](),interaction[_0xb703('0x21')](_0xb703('0x22'),_0xb703('0x23')),controller[_0xb703('0x24')]);router[_0xb703('0x25')](_0xb703('0xa'),auth[_0xb703('0x7')](),interaction[_0xb703('0x21')](_0xb703('0x22'),_0xb703('0x26')),controller[_0xb703('0x27')]);router[_0xb703('0x25')]('/:id/custom_update',controller['customUpdate']);router[_0xb703('0x25')](_0xb703('0x28'),auth[_0xb703('0xb')](),controller[_0xb703('0x29')]);router[_0xb703('0x25')]('/:id/close',controller[_0xb703('0x2a')]);router[_0xb703('0x2b')](_0xb703('0xa'),auth['isAuthenticated'](),interaction['tracked'](_0xb703('0x22'),_0xb703('0x2c')),controller['destroy']);router[_0xb703('0x2b')](_0xb703('0x20'),auth[_0xb703('0x7')](),controller[_0xb703('0x2d')]);module[_0xb703('0x2e')]=router;
\ No newline at end of file
index e27b0d1..fd7d0bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd32=['sequelize','exports','TEXT','medium','BOOLEAN','INTEGER'];(function(_0x4c718a,_0x430fbe){var _0x452e16=function(_0x5cddf2){while(--_0x5cddf2){_0x4c718a['push'](_0x4c718a['shift']());}};_0x452e16(++_0x430fbe);}(_0xdd32,0xae));var _0x2dd3=function(_0x1a0a0f,_0x207c07){_0x1a0a0f=_0x1a0a0f-0x0;var _0x1bec19=_0xdd32[_0x1a0a0f];return _0x1bec19;};'use strict';var Sequelize=require(_0x2dd3('0x0'));module[_0x2dd3('0x1')]={'body':{'type':Sequelize[_0x2dd3('0x2')](_0x2dd3('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x2dd3('0x4')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x2dd3('0x5')]}};
\ No newline at end of file
+var _0xd115=['INTEGER','sequelize','TEXT','medium','BOOLEAN'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd115,0x83));var _0x5d11=function(_0x280c4c,_0x4bf8b6){_0x280c4c=_0x280c4c-0x0;var _0x525c92=_0xd115[_0x280c4c];return _0x525c92;};'use strict';var Sequelize=require(_0x5d11('0x0'));module['exports']={'body':{'type':Sequelize[_0x5d11('0x1')](_0x5d11('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x5d11('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x5d11('0x4')]}};
\ No newline at end of file
index 5e9a71d..7873744 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2d1=['FromId','-createdAt','length','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','end','error','stack','index','map','ChatInternalMessage','rawAttributes','fieldName','type','key','model','name','query','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','filters','VIRTUAL','filter','merge','includeAll','include','findAll','rows','catch','show','params','keys','options','find','create','body','describe','get','messages','createdAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','agent','fullname','role','internal','online','lastLoginAt','-online','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','Agents','userProfileId','autoAssociation','isEmpty','resourceId','push'];(function(_0x3289e9,_0x2cd263){var _0x3e61ba=function(_0x14cfa3){while(--_0x14cfa3){_0x3289e9['push'](_0x3289e9['shift']());}};_0x3e61ba(++_0x2cd263);}(_0xc2d1,0x141));var _0x1c2d=function(_0x3c2541,_0x37f09e){_0x3c2541=_0x3c2541-0x0;var _0x4f77b5=_0xc2d1[_0x3c2541];return _0x4f77b5;};'use strict';var emlformat=require(_0x1c2d('0x0'));var rimraf=require(_0x1c2d('0x1'));var zipdir=require(_0x1c2d('0x2'));var jsonpatch=require(_0x1c2d('0x3'));var rp=require(_0x1c2d('0x4'));var moment=require(_0x1c2d('0x5'));var BPromise=require(_0x1c2d('0x6'));var Mustache=require('mustache');var util=require(_0x1c2d('0x7'));var path=require(_0x1c2d('0x8'));var sox=require('sox');var csv=require(_0x1c2d('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x1c2d('0xa'));var crypto=require('crypto');var jsforce=require(_0x1c2d('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x1c2d('0x9'));var querystring=require(_0x1c2d('0xc'));var Papa=require(_0x1c2d('0xd'));var Redis=require('ioredis');var authService=require(_0x1c2d('0xe'));var qs=require(_0x1c2d('0xf'));var as=require(_0x1c2d('0x10'));var hardwareService=require(_0x1c2d('0x11'));var logger=require(_0x1c2d('0x12'))(_0x1c2d('0x13'));var utils=require(_0x1c2d('0x14'));var config=require(_0x1c2d('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x1c2d('0x16'))['db'];config[_0x1c2d('0x17')]=_['defaults'](config[_0x1c2d('0x17')],{'host':_0x1c2d('0x18'),'port':0x18eb});var socket=require(_0x1c2d('0x19'))(new Redis(config[_0x1c2d('0x17')]));require(_0x1c2d('0x1a'))[_0x1c2d('0x1b')](socket);function respondWithStatusCode(_0x28db3f,_0x3fe705){_0x3fe705=_0x3fe705||0xcc;return function(_0x5370b0){if(_0x5370b0){return _0x28db3f[_0x1c2d('0x1c')](_0x3fe705);}return _0x28db3f[_0x1c2d('0x1d')](_0x3fe705)['end']();};}function respondWithResult(_0xef2a14,_0x45b8d4){_0x45b8d4=_0x45b8d4||0xc8;return function(_0xd0c556){if(_0xd0c556){return _0xef2a14['status'](_0x45b8d4)['json'](_0xd0c556);}};}function respondWithFilteredResult(_0x417325,_0x3f3e28){return function(_0x5eef13){if(_0x5eef13){var _0x29ca28=typeof _0x3f3e28[_0x1c2d('0x1e')]===_0x1c2d('0x1f')&&typeof _0x3f3e28[_0x1c2d('0x20')]==='undefined';var _0x50dc90=_0x5eef13[_0x1c2d('0x21')];var _0x80c9dc=_0x29ca28?0x0:_0x3f3e28[_0x1c2d('0x1e')];var _0x408ea1=_0x29ca28?_0x5eef13['count']:_0x3f3e28[_0x1c2d('0x1e')]+_0x3f3e28['limit'];var _0x470163;if(_0x408ea1>=_0x50dc90){_0x408ea1=_0x50dc90;_0x470163=0xc8;}else{_0x470163=0xce;}_0x417325['status'](_0x470163);return _0x417325[_0x1c2d('0x22')](_0x1c2d('0x23'),_0x80c9dc+'-'+_0x408ea1+'/'+_0x50dc90)['json'](_0x5eef13);}return null;};}function patchUpdates(_0x485fc7){return function(_0x12839d){try{jsonpatch[_0x1c2d('0x24')](_0x12839d,_0x485fc7,!![]);}catch(_0x24ebb4){return BPromise[_0x1c2d('0x25')](_0x24ebb4);}return _0x12839d[_0x1c2d('0x26')]();};}function saveUpdates(_0x10f02c,_0x5de188){return function(_0x5b769d){if(_0x5b769d){return _0x5b769d['update'](_0x10f02c)['then'](function(_0x27bccc){return _0x27bccc;});}return null;};}function removeEntity(_0x83ca52,_0x167d37){return function(_0x4e8f5d){if(_0x4e8f5d){return _0x4e8f5d[_0x1c2d('0x27')]()[_0x1c2d('0x28')](function(){_0x83ca52['status'](0xcc)[_0x1c2d('0x29')]();});}};}function handleEntityNotFound(_0x2c120d,_0x5c3d79){return function(_0x4fb7f0){if(!_0x4fb7f0){_0x2c120d['sendStatus'](0x194);}return _0x4fb7f0;};}function handleError(_0x1a9ead,_0x5bdabc){_0x5bdabc=_0x5bdabc||0x1f4;return function(_0x27b4ac){logger[_0x1c2d('0x2a')](_0x27b4ac[_0x1c2d('0x2b')]);if(_0x27b4ac['name']){delete _0x27b4ac['name'];}_0x1a9ead[_0x1c2d('0x1d')](_0x5bdabc)['send'](_0x27b4ac);};}exports[_0x1c2d('0x2c')]=function(_0x4fa7c1,_0x26a9df){var _0x3768dc={},_0x45745e={},_0x181b35={'count':0x0,'rows':[]};var _0x2c6fc2=_[_0x1c2d('0x2d')](db[_0x1c2d('0x2e')][_0x1c2d('0x2f')],function(_0x2f16dd){return{'name':_0x2f16dd[_0x1c2d('0x30')],'type':_0x2f16dd[_0x1c2d('0x31')][_0x1c2d('0x32')]};});_0x45745e[_0x1c2d('0x33')]=_[_0x1c2d('0x2d')](_0x2c6fc2,_0x1c2d('0x34'));_0x45745e[_0x1c2d('0x35')]=_['keys'](_0x4fa7c1['query']);_0x45745e['filters']=_['intersection'](_0x45745e[_0x1c2d('0x33')],_0x45745e[_0x1c2d('0x35')]);_0x3768dc[_0x1c2d('0x36')]=_[_0x1c2d('0x37')](_0x45745e['model'],qs[_0x1c2d('0x38')](_0x4fa7c1[_0x1c2d('0x35')][_0x1c2d('0x38')]));_0x3768dc[_0x1c2d('0x36')]=_0x3768dc[_0x1c2d('0x36')]['length']?_0x3768dc['attributes']:_0x45745e[_0x1c2d('0x33')];if(!_0x4fa7c1[_0x1c2d('0x35')][_0x1c2d('0x39')](_0x1c2d('0x3a'))){_0x3768dc[_0x1c2d('0x20')]=qs['limit'](_0x4fa7c1['query'][_0x1c2d('0x20')]);_0x3768dc[_0x1c2d('0x1e')]=qs[_0x1c2d('0x1e')](_0x4fa7c1[_0x1c2d('0x35')][_0x1c2d('0x1e')]);}_0x3768dc[_0x1c2d('0x3b')]=qs[_0x1c2d('0x3c')](_0x4fa7c1[_0x1c2d('0x35')][_0x1c2d('0x3c')]);_0x3768dc[_0x1c2d('0x3d')]=qs[_0x1c2d('0x3e')](_['pick'](_0x4fa7c1[_0x1c2d('0x35')],_0x45745e['filters']),_0x2c6fc2);if(_0x4fa7c1[_0x1c2d('0x35')]['filter']){_0x3768dc[_0x1c2d('0x3d')]=_['merge'](_0x3768dc[_0x1c2d('0x3d')],{'$or':_['map'](_0x2c6fc2,function(_0x4cc19c){if(_0x4cc19c[_0x1c2d('0x31')]!==_0x1c2d('0x3f')){var _0x4f95ad={};_0x4f95ad[_0x4cc19c['name']]={'$like':'%'+_0x4fa7c1[_0x1c2d('0x35')][_0x1c2d('0x40')]+'%'};return _0x4f95ad;}})});}_0x3768dc=_[_0x1c2d('0x41')]({},_0x3768dc,_0x4fa7c1['options']);var _0x39ac56={'where':_0x3768dc[_0x1c2d('0x3d')]};return db[_0x1c2d('0x2e')]['count'](_0x39ac56)['then'](function(_0x1ed136){_0x181b35[_0x1c2d('0x21')]=_0x1ed136;if(_0x4fa7c1[_0x1c2d('0x35')][_0x1c2d('0x42')]){_0x3768dc[_0x1c2d('0x43')]=[{'all':!![]}];}return db[_0x1c2d('0x2e')][_0x1c2d('0x44')](_0x3768dc);})[_0x1c2d('0x28')](function(_0x16d19f){_0x181b35[_0x1c2d('0x45')]=_0x16d19f;return _0x181b35;})['then'](respondWithFilteredResult(_0x26a9df,_0x3768dc))[_0x1c2d('0x46')](handleError(_0x26a9df,null));};exports[_0x1c2d('0x47')]=function(_0x308944,_0x602ef7){var _0x2328ec={'raw':!![],'where':{'id':_0x308944[_0x1c2d('0x48')]['id']}},_0x5c63ec={};_0x5c63ec[_0x1c2d('0x33')]=_[_0x1c2d('0x49')](db['ChatInternalMessage'][_0x1c2d('0x2f')]);_0x5c63ec['query']=_[_0x1c2d('0x49')](_0x308944[_0x1c2d('0x35')]);_0x5c63ec[_0x1c2d('0x3e')]=_[_0x1c2d('0x37')](_0x5c63ec[_0x1c2d('0x33')],_0x5c63ec['query']);_0x2328ec[_0x1c2d('0x36')]=_['intersection'](_0x5c63ec['model'],qs[_0x1c2d('0x38')](_0x308944[_0x1c2d('0x35')][_0x1c2d('0x38')]));_0x2328ec[_0x1c2d('0x36')]=_0x2328ec['attributes']['length']?_0x2328ec['attributes']:_0x5c63ec['model'];if(_0x308944[_0x1c2d('0x35')]['includeAll']){_0x2328ec[_0x1c2d('0x43')]=[{'all':!![]}];}_0x2328ec=_[_0x1c2d('0x41')]({},_0x2328ec,_0x308944[_0x1c2d('0x4a')]);return db[_0x1c2d('0x2e')][_0x1c2d('0x4b')](_0x2328ec)[_0x1c2d('0x28')](handleEntityNotFound(_0x602ef7,null))[_0x1c2d('0x28')](respondWithResult(_0x602ef7,null))[_0x1c2d('0x46')](handleError(_0x602ef7,null));};exports[_0x1c2d('0x4c')]=function(_0x166e69,_0x16d984){return db['ChatInternalMessage'][_0x1c2d('0x4c')](_0x166e69[_0x1c2d('0x4d')],{})[_0x1c2d('0x28')](respondWithResult(_0x16d984,0xc9))['catch'](handleError(_0x16d984,null));};exports['update']=function(_0x2e128d,_0x49d875){if(_0x2e128d['body']['id']){delete _0x2e128d['body']['id'];}return db[_0x1c2d('0x2e')][_0x1c2d('0x4b')]({'where':{'id':_0x2e128d[_0x1c2d('0x48')]['id']}})[_0x1c2d('0x28')](handleEntityNotFound(_0x49d875,null))[_0x1c2d('0x28')](saveUpdates(_0x2e128d[_0x1c2d('0x4d')],null))[_0x1c2d('0x28')](respondWithResult(_0x49d875,null))[_0x1c2d('0x46')](handleError(_0x49d875,null));};exports[_0x1c2d('0x27')]=function(_0x510c14,_0x3d3127){return db[_0x1c2d('0x2e')][_0x1c2d('0x4b')]({'where':{'id':_0x510c14[_0x1c2d('0x48')]['id']}})[_0x1c2d('0x28')](handleEntityNotFound(_0x3d3127,null))[_0x1c2d('0x28')](removeEntity(_0x3d3127,null))['catch'](handleError(_0x3d3127,null));};exports[_0x1c2d('0x4e')]=function(_0x5c97e0,_0x5076a2){return db[_0x1c2d('0x2e')]['describe']()[_0x1c2d('0x28')](respondWithResult(_0x5076a2,null))[_0x1c2d('0x46')](handleError(_0x5076a2,null));};function wrapUser(_0x52ec2a){return function(_0x19ae89){var _0x4e336c=_0x52ec2a[_0x1c2d('0x4f')]({'plain':!![]});_0x4e336c[_0x1c2d('0x50')]=[];if(_0x19ae89){_0x4e336c['lastMessageAt']=_0x19ae89[_0x1c2d('0x51')];_0x4e336c[_0x1c2d('0x52')]=_0x19ae89;}else{_0x4e336c['lastMessageAt']=moment(0x0)[_0x1c2d('0x53')](_0x1c2d('0x54'));_0x4e336c['lastMessage']={};}return _0x4e336c;};}exports[_0x1c2d('0x55')]=function(_0x447d59,_0x3aaa63,_0x23ec0e){var _0x66225a=[];return db[_0x1c2d('0x56')][_0x1c2d('0x44')]({'where':{'role':[_0x1c2d('0x57'),'admin','user']},'attributes':['id',_0x1c2d('0x58'),'name',_0x1c2d('0x59'),'userpic',_0x1c2d('0x5a'),_0x1c2d('0x5b'),_0x1c2d('0x5c'),'allowmessenger','showWebBar'],'order':qs[_0x1c2d('0x3c')](_0x1c2d('0x5d')),'include':[{'model':db['VoiceQueue'],'as':'VoiceQueues','attributes':['id',_0x1c2d('0x34'),_0x1c2d('0x31')],'through':{'attributes':[]}}]})['then'](function(_0x40c780){if(_0x40c780){var _0x110c9c=_0x447d59['user']['get']({'plain':!![]});if(!_0x110c9c)throw new Error(_0x1c2d('0x5e'));if(_0x110c9c[_0x1c2d('0x59')]===_0x1c2d('0x5f')){return db[_0x1c2d('0x60')][_0x1c2d('0x4b')]({'where':{'name':_0x1c2d('0x61'),'userProfileId':_0x110c9c[_0x1c2d('0x62')]},'raw':!![]})[_0x1c2d('0x28')](function(_0x5e613c){if(_0x5e613c){if(_0x5e613c[_0x1c2d('0x63')]===0x0){return db['UserProfileResource'][_0x1c2d('0x44')]({'where':{'sectionId':_0x5e613c['id']},'raw':!![]})[_0x1c2d('0x28')](function(_0x4782d0){var _0x283925=[];if(_[_0x1c2d('0x64')](_0x4782d0)){_0x283925=_[_0x1c2d('0x40')](_0x40c780,function(_0x183dd2){if(_0x183dd2[_0x1c2d('0x59')]!==_0x1c2d('0x57')){return _0x183dd2;}});return _0x283925;}else{for(var _0xd647c4=0x0;_0xd647c4<_0x40c780['length'];_0xd647c4++){var _0x29e6e5=_0x40c780[_0xd647c4];if(_0x29e6e5['role']===_0x1c2d('0x57')){var _0x39b1ed=_[_0x1c2d('0x4b')](_0x4782d0,function(_0x404a0f){return _0x404a0f[_0x1c2d('0x65')]===_0x29e6e5['id'];});if(_0x39b1ed)_0x283925['push'](_0x29e6e5);}else{_0x283925[_0x1c2d('0x66')](_0x29e6e5);}}return _0x283925;}});}else{return _0x40c780;}}else{var _0x4006b2=_[_0x1c2d('0x40')](_0x40c780,function(_0x703e76){if(_0x703e76['role']!==_0x1c2d('0x57')){return _0x703e76;}});return _0x4006b2;}});}else{return _0x40c780;}}})[_0x1c2d('0x28')](function(_0x3e1d6c){var _0xa82a9f=[];if(_0x3e1d6c){_0x66225a=_0x3e1d6c;for(var _0x239b83=0x0;_0x239b83<_0x3e1d6c['length'];_0x239b83+=0x1){_0x66225a[_0x239b83]['messages']=[];_0xa82a9f['push'](db[_0x1c2d('0x2e')]['find']({'where':{'FromId':[_0x447d59[_0x1c2d('0x5f')]['id'],_0x3e1d6c[_0x239b83]['id']],'ToId':[_0x447d59['user']['id'],_0x3e1d6c[_0x239b83]['id']],'ChatGroupId':null},'attributes':['id',_0x1c2d('0x51'),_0x1c2d('0x67'),'ToId','read',_0x1c2d('0x4d')],'order':qs[_0x1c2d('0x3c')](_0x1c2d('0x68')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x1c2d('0x28')](wrapUser(_0x3e1d6c[_0x239b83])));}return BPromise['all'](_0xa82a9f);}return[];})[_0x1c2d('0x28')](function(_0x17e9a2){return{'rows':_0x17e9a2,'count':_0x17e9a2[_0x1c2d('0x69')]};})[_0x1c2d('0x28')](respondWithResult(_0x3aaa63,null))['catch'](handleError(_0x3aaa63,null));};
\ No newline at end of file
+var _0xa747=['FromId','read','-createdAt','all','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','destroy','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','filter','where','VIRTUAL','merge','options','includeAll','ChatInternalMessage','findAll','rows','catch','show','include','find','create','update','body','params','describe','get','messages','lastMessageAt','createdAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','agent','admin','user','fullname','userpic','internal','online','lastLoginAt','allowmessenger','showWebBar','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','isEmpty','length','push'];(function(_0x357681,_0x7447cc){var _0xa009ba=function(_0x28673a){while(--_0x28673a){_0x357681['push'](_0x357681['shift']());}};_0xa009ba(++_0x7447cc);}(_0xa747,0xe6));var _0x7a74=function(_0x1dfa47,_0x227d10){_0x1dfa47=_0x1dfa47-0x0;var _0x39a4df=_0xa747[_0x1dfa47];return _0x39a4df;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7a74('0x0'));var zipdir=require(_0x7a74('0x1'));var jsonpatch=require(_0x7a74('0x2'));var rp=require(_0x7a74('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x7a74('0x4'));var util=require(_0x7a74('0x5'));var path=require(_0x7a74('0x6'));var sox=require('sox');var csv=require(_0x7a74('0x7'));var ejs=require(_0x7a74('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7a74('0x9'));var squel=require(_0x7a74('0xa'));var crypto=require('crypto');var jsforce=require(_0x7a74('0xb'));var deskjs=require(_0x7a74('0xc'));var toCsv=require('to-csv');var querystring=require(_0x7a74('0xd'));var Papa=require(_0x7a74('0xe'));var Redis=require(_0x7a74('0xf'));var authService=require(_0x7a74('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x7a74('0x11'));var hardwareService=require(_0x7a74('0x12'));var logger=require(_0x7a74('0x13'))('api');var utils=require(_0x7a74('0x14'));var config=require(_0x7a74('0x15'));var licenseUtil=require(_0x7a74('0x16'));var db=require('../../mysqldb')['db'];config[_0x7a74('0x17')]=_[_0x7a74('0x18')](config[_0x7a74('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x7a74('0x19'))(new Redis(config[_0x7a74('0x17')]));require(_0x7a74('0x1a'))[_0x7a74('0x1b')](socket);function respondWithStatusCode(_0x36a10b,_0x35c6f6){_0x35c6f6=_0x35c6f6||0xcc;return function(_0x45137e){if(_0x45137e){return _0x36a10b[_0x7a74('0x1c')](_0x35c6f6);}return _0x36a10b[_0x7a74('0x1d')](_0x35c6f6)[_0x7a74('0x1e')]();};}function respondWithResult(_0x246f2f,_0x5f1a60){_0x5f1a60=_0x5f1a60||0xc8;return function(_0x3266c7){if(_0x3266c7){return _0x246f2f['status'](_0x5f1a60)[_0x7a74('0x1f')](_0x3266c7);}};}function respondWithFilteredResult(_0x2b9dc9,_0x54f284){return function(_0x47934e){if(_0x47934e){var _0x124412=typeof _0x54f284[_0x7a74('0x20')]===_0x7a74('0x21')&&typeof _0x54f284[_0x7a74('0x22')]===_0x7a74('0x21');var _0x121d44=_0x47934e['count'];var _0x594dbc=_0x124412?0x0:_0x54f284['offset'];var _0x5d6688=_0x124412?_0x47934e[_0x7a74('0x23')]:_0x54f284[_0x7a74('0x20')]+_0x54f284[_0x7a74('0x22')];var _0x4433c8;if(_0x5d6688>=_0x121d44){_0x5d6688=_0x121d44;_0x4433c8=0xc8;}else{_0x4433c8=0xce;}_0x2b9dc9[_0x7a74('0x1d')](_0x4433c8);return _0x2b9dc9[_0x7a74('0x24')](_0x7a74('0x25'),_0x594dbc+'-'+_0x5d6688+'/'+_0x121d44)[_0x7a74('0x1f')](_0x47934e);}return null;};}function patchUpdates(_0x14da3b){return function(_0x260872){try{jsonpatch[_0x7a74('0x26')](_0x260872,_0x14da3b,!![]);}catch(_0x499b0b){return BPromise['reject'](_0x499b0b);}return _0x260872[_0x7a74('0x27')]();};}function saveUpdates(_0xae306,_0x3627f7){return function(_0x2c6be8){if(_0x2c6be8){return _0x2c6be8['update'](_0xae306)['then'](function(_0x20f571){return _0x20f571;});}return null;};}function removeEntity(_0x3d702e,_0x9ac5b2){return function(_0x453f49){if(_0x453f49){return _0x453f49[_0x7a74('0x28')]()[_0x7a74('0x29')](function(){_0x3d702e['status'](0xcc)[_0x7a74('0x1e')]();});}};}function handleEntityNotFound(_0xce99ef,_0xc4f96f){return function(_0x58adc0){if(!_0x58adc0){_0xce99ef['sendStatus'](0x194);}return _0x58adc0;};}function handleError(_0x25db80,_0x376535){_0x376535=_0x376535||0x1f4;return function(_0x10e51b){logger[_0x7a74('0x2a')](_0x10e51b[_0x7a74('0x2b')]);if(_0x10e51b[_0x7a74('0x2c')]){delete _0x10e51b[_0x7a74('0x2c')];}_0x25db80[_0x7a74('0x1d')](_0x376535)[_0x7a74('0x2d')](_0x10e51b);};}exports[_0x7a74('0x2e')]=function(_0x3d9f15,_0x2a0413){var _0x24a896={},_0x2425ac={},_0x517f06={'count':0x0,'rows':[]};var _0x57bd57=_[_0x7a74('0x2f')](db['ChatInternalMessage'][_0x7a74('0x30')],function(_0x1ce78e){return{'name':_0x1ce78e[_0x7a74('0x31')],'type':_0x1ce78e[_0x7a74('0x32')]['key']};});_0x2425ac[_0x7a74('0x33')]=_[_0x7a74('0x2f')](_0x57bd57,'name');_0x2425ac[_0x7a74('0x34')]=_[_0x7a74('0x35')](_0x3d9f15[_0x7a74('0x34')]);_0x2425ac[_0x7a74('0x36')]=_[_0x7a74('0x37')](_0x2425ac[_0x7a74('0x33')],_0x2425ac['query']);_0x24a896[_0x7a74('0x38')]=_[_0x7a74('0x37')](_0x2425ac[_0x7a74('0x33')],qs[_0x7a74('0x39')](_0x3d9f15[_0x7a74('0x34')][_0x7a74('0x39')]));_0x24a896[_0x7a74('0x38')]=_0x24a896['attributes']['length']?_0x24a896[_0x7a74('0x38')]:_0x2425ac[_0x7a74('0x33')];if(!_0x3d9f15[_0x7a74('0x34')][_0x7a74('0x3a')](_0x7a74('0x3b'))){_0x24a896[_0x7a74('0x22')]=qs[_0x7a74('0x22')](_0x3d9f15[_0x7a74('0x34')][_0x7a74('0x22')]);_0x24a896[_0x7a74('0x20')]=qs[_0x7a74('0x20')](_0x3d9f15['query'][_0x7a74('0x20')]);}_0x24a896['order']=qs[_0x7a74('0x3c')](_0x3d9f15[_0x7a74('0x34')][_0x7a74('0x3c')]);_0x24a896['where']=qs['filters'](_['pick'](_0x3d9f15[_0x7a74('0x34')],_0x2425ac[_0x7a74('0x36')]),_0x57bd57);if(_0x3d9f15[_0x7a74('0x34')][_0x7a74('0x3d')]){_0x24a896[_0x7a74('0x3e')]=_['merge'](_0x24a896[_0x7a74('0x3e')],{'$or':_['map'](_0x57bd57,function(_0xa9822){if(_0xa9822[_0x7a74('0x32')]!==_0x7a74('0x3f')){var _0x1dd5a0={};_0x1dd5a0[_0xa9822[_0x7a74('0x2c')]]={'$like':'%'+_0x3d9f15[_0x7a74('0x34')][_0x7a74('0x3d')]+'%'};return _0x1dd5a0;}})});}_0x24a896=_[_0x7a74('0x40')]({},_0x24a896,_0x3d9f15[_0x7a74('0x41')]);var _0x316ba2={'where':_0x24a896[_0x7a74('0x3e')]};return db['ChatInternalMessage'][_0x7a74('0x23')](_0x316ba2)[_0x7a74('0x29')](function(_0x438148){_0x517f06[_0x7a74('0x23')]=_0x438148;if(_0x3d9f15['query'][_0x7a74('0x42')]){_0x24a896['include']=[{'all':!![]}];}return db[_0x7a74('0x43')][_0x7a74('0x44')](_0x24a896);})[_0x7a74('0x29')](function(_0x369df4){_0x517f06[_0x7a74('0x45')]=_0x369df4;return _0x517f06;})['then'](respondWithFilteredResult(_0x2a0413,_0x24a896))[_0x7a74('0x46')](handleError(_0x2a0413,null));};exports[_0x7a74('0x47')]=function(_0xd4432c,_0x2ed6f9){var _0x59dfd2={'raw':!![],'where':{'id':_0xd4432c['params']['id']}},_0x1ab441={};_0x1ab441['model']=_[_0x7a74('0x35')](db[_0x7a74('0x43')][_0x7a74('0x30')]);_0x1ab441['query']=_['keys'](_0xd4432c[_0x7a74('0x34')]);_0x1ab441[_0x7a74('0x36')]=_[_0x7a74('0x37')](_0x1ab441['model'],_0x1ab441[_0x7a74('0x34')]);_0x59dfd2[_0x7a74('0x38')]=_[_0x7a74('0x37')](_0x1ab441[_0x7a74('0x33')],qs[_0x7a74('0x39')](_0xd4432c[_0x7a74('0x34')][_0x7a74('0x39')]));_0x59dfd2[_0x7a74('0x38')]=_0x59dfd2[_0x7a74('0x38')]['length']?_0x59dfd2['attributes']:_0x1ab441[_0x7a74('0x33')];if(_0xd4432c[_0x7a74('0x34')]['includeAll']){_0x59dfd2[_0x7a74('0x48')]=[{'all':!![]}];}_0x59dfd2=_[_0x7a74('0x40')]({},_0x59dfd2,_0xd4432c[_0x7a74('0x41')]);return db[_0x7a74('0x43')][_0x7a74('0x49')](_0x59dfd2)[_0x7a74('0x29')](handleEntityNotFound(_0x2ed6f9,null))[_0x7a74('0x29')](respondWithResult(_0x2ed6f9,null))[_0x7a74('0x46')](handleError(_0x2ed6f9,null));};exports[_0x7a74('0x4a')]=function(_0x43c821,_0x24ba8c){return db[_0x7a74('0x43')][_0x7a74('0x4a')](_0x43c821['body'],{})[_0x7a74('0x29')](respondWithResult(_0x24ba8c,0xc9))[_0x7a74('0x46')](handleError(_0x24ba8c,null));};exports[_0x7a74('0x4b')]=function(_0x384b5c,_0x1da816){if(_0x384b5c[_0x7a74('0x4c')]['id']){delete _0x384b5c[_0x7a74('0x4c')]['id'];}return db[_0x7a74('0x43')]['find']({'where':{'id':_0x384b5c['params']['id']}})[_0x7a74('0x29')](handleEntityNotFound(_0x1da816,null))['then'](saveUpdates(_0x384b5c[_0x7a74('0x4c')],null))[_0x7a74('0x29')](respondWithResult(_0x1da816,null))[_0x7a74('0x46')](handleError(_0x1da816,null));};exports[_0x7a74('0x28')]=function(_0x2d5c8a,_0x26cae8){return db[_0x7a74('0x43')]['find']({'where':{'id':_0x2d5c8a[_0x7a74('0x4d')]['id']}})['then'](handleEntityNotFound(_0x26cae8,null))[_0x7a74('0x29')](removeEntity(_0x26cae8,null))['catch'](handleError(_0x26cae8,null));};exports[_0x7a74('0x4e')]=function(_0x5e843c,_0x287e18){return db[_0x7a74('0x43')]['describe']()[_0x7a74('0x29')](respondWithResult(_0x287e18,null))['catch'](handleError(_0x287e18,null));};function wrapUser(_0x3b1fae){return function(_0x19a0ce){var _0x5534ae=_0x3b1fae[_0x7a74('0x4f')]({'plain':!![]});_0x5534ae[_0x7a74('0x50')]=[];if(_0x19a0ce){_0x5534ae[_0x7a74('0x51')]=_0x19a0ce[_0x7a74('0x52')];_0x5534ae[_0x7a74('0x53')]=_0x19a0ce;}else{_0x5534ae[_0x7a74('0x51')]=moment(0x0)[_0x7a74('0x54')](_0x7a74('0x55'));_0x5534ae[_0x7a74('0x53')]={};}return _0x5534ae;};}exports[_0x7a74('0x56')]=function(_0x3cb0ef,_0x315e1d,_0x54357f){var _0x5687e9=[];return db[_0x7a74('0x57')][_0x7a74('0x44')]({'where':{'role':[_0x7a74('0x58'),_0x7a74('0x59'),_0x7a74('0x5a')]},'attributes':['id',_0x7a74('0x5b'),_0x7a74('0x2c'),'role',_0x7a74('0x5c'),_0x7a74('0x5d'),_0x7a74('0x5e'),_0x7a74('0x5f'),_0x7a74('0x60'),_0x7a74('0x61')],'order':qs['sort']('-online'),'include':[{'model':db['VoiceQueue'],'as':_0x7a74('0x62'),'attributes':['id',_0x7a74('0x2c'),_0x7a74('0x32')],'through':{'attributes':[]}}]})[_0x7a74('0x29')](function(_0x41ecaa){if(_0x41ecaa){var _0x1645ef=_0x3cb0ef[_0x7a74('0x5a')][_0x7a74('0x4f')]({'plain':!![]});if(!_0x1645ef)throw new Error(_0x7a74('0x63'));if(_0x1645ef[_0x7a74('0x64')]===_0x7a74('0x5a')){return db[_0x7a74('0x65')][_0x7a74('0x49')]({'where':{'name':_0x7a74('0x66'),'userProfileId':_0x1645ef[_0x7a74('0x67')]},'raw':!![]})[_0x7a74('0x29')](function(_0x17e239){if(_0x17e239){if(_0x17e239[_0x7a74('0x68')]===0x0){return db[_0x7a74('0x69')]['findAll']({'where':{'sectionId':_0x17e239['id']},'raw':!![]})[_0x7a74('0x29')](function(_0x3bf624){var _0x2c5fab=[];if(_[_0x7a74('0x6a')](_0x3bf624)){_0x2c5fab=_[_0x7a74('0x3d')](_0x41ecaa,function(_0x38a07b){if(_0x38a07b[_0x7a74('0x64')]!==_0x7a74('0x58')){return _0x38a07b;}});return _0x2c5fab;}else{for(var _0x33df4b=0x0;_0x33df4b<_0x41ecaa[_0x7a74('0x6b')];_0x33df4b++){var _0x9fd9c1=_0x41ecaa[_0x33df4b];if(_0x9fd9c1['role']===_0x7a74('0x58')){var _0x22f2bf=_[_0x7a74('0x49')](_0x3bf624,function(_0x1e62d4){return _0x1e62d4['resourceId']===_0x9fd9c1['id'];});if(_0x22f2bf)_0x2c5fab['push'](_0x9fd9c1);}else{_0x2c5fab['push'](_0x9fd9c1);}}return _0x2c5fab;}});}else{return _0x41ecaa;}}else{var _0x1b60fd=_[_0x7a74('0x3d')](_0x41ecaa,function(_0x498989){if(_0x498989['role']!==_0x7a74('0x58')){return _0x498989;}});return _0x1b60fd;}});}else{return _0x41ecaa;}}})['then'](function(_0x69d50e){var _0x5c9e9e=[];if(_0x69d50e){_0x5687e9=_0x69d50e;for(var _0x173aa6=0x0;_0x173aa6<_0x69d50e[_0x7a74('0x6b')];_0x173aa6+=0x1){_0x5687e9[_0x173aa6][_0x7a74('0x50')]=[];_0x5c9e9e[_0x7a74('0x6c')](db[_0x7a74('0x43')][_0x7a74('0x49')]({'where':{'FromId':[_0x3cb0ef[_0x7a74('0x5a')]['id'],_0x69d50e[_0x173aa6]['id']],'ToId':[_0x3cb0ef[_0x7a74('0x5a')]['id'],_0x69d50e[_0x173aa6]['id']],'ChatGroupId':null},'attributes':['id',_0x7a74('0x52'),_0x7a74('0x6d'),'ToId',_0x7a74('0x6e'),_0x7a74('0x4c')],'order':qs[_0x7a74('0x3c')](_0x7a74('0x6f')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x7a74('0x29')](wrapUser(_0x69d50e[_0x173aa6])));}return BPromise[_0x7a74('0x70')](_0x5c9e9e);}return[];})['then'](function(_0x492072){return{'rows':_0x492072,'count':_0x492072['length']};})[_0x7a74('0x29')](respondWithResult(_0x315e1d,null))[_0x7a74('0x46')](handleError(_0x315e1d,null));};
\ No newline at end of file
index bbdf024..8767498 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb98d=['../../mysqldb','ChatInternalMessage','setMaxListeners','save','update','emit','hasOwnProperty','exports','events'];(function(_0xaeb3e3,_0x54edd8){var _0x3cc771=function(_0x2afcd4){while(--_0x2afcd4){_0xaeb3e3['push'](_0xaeb3e3['shift']());}};_0x3cc771(++_0x54edd8);}(_0xb98d,0x19d));var _0xdb98=function(_0x4ff6fa,_0x4f2bbb){_0x4ff6fa=_0x4ff6fa-0x0;var _0x48e0a6=_0xb98d[_0x4ff6fa];return _0x48e0a6;};'use strict';var EventEmitter=require(_0xdb98('0x0'));var ChatInternalMessage=require(_0xdb98('0x1'))['db'][_0xdb98('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0xdb98('0x3')](0x0);var events={'afterCreate':_0xdb98('0x4'),'afterUpdate':_0xdb98('0x5'),'afterDestroy':'remove'};function emitEvent(_0x4d8437){return function(_0x12bc4d,_0x5796f5,_0x31ace0){ChatInternalMessageEvents[_0xdb98('0x6')](_0x4d8437+':'+_0x12bc4d['id'],_0x12bc4d);ChatInternalMessageEvents['emit'](_0x4d8437,_0x12bc4d);_0x31ace0(null);};}for(var e in events){if(events[_0xdb98('0x7')](e)){var event=events[e];ChatInternalMessage['hook'](e,emitEvent(event));}}module[_0xdb98('0x8')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0x7cfd=['setMaxListeners','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x5e70b6,_0x4bd147){var _0x1c33cb=function(_0x2ef898){while(--_0x2ef898){_0x5e70b6['push'](_0x5e70b6['shift']());}};_0x1c33cb(++_0x4bd147);}(_0x7cfd,0x10e));var _0xd7cf=function(_0x5c9e7b,_0x1f38d5){_0x5c9e7b=_0x5c9e7b-0x0;var _0x1a4936=_0x7cfd[_0x5c9e7b];return _0x1a4936;};'use strict';var EventEmitter=require(_0xd7cf('0x0'));var ChatInternalMessage=require(_0xd7cf('0x1'))['db']['ChatInternalMessage'];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0xd7cf('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xd7cf('0x3')};function emitEvent(_0x45c0a9){return function(_0x1b8ec7,_0x16946b,_0x59eb8b){ChatInternalMessageEvents[_0xd7cf('0x4')](_0x45c0a9+':'+_0x1b8ec7['id'],_0x1b8ec7);ChatInternalMessageEvents['emit'](_0x45c0a9,_0x1b8ec7);_0x59eb8b(null);};}for(var e in events){if(events[_0xd7cf('0x5')](e)){var event=events[e];ChatInternalMessage[_0xd7cf('0x6')](e,emitEvent(event));}}module[_0xd7cf('0x7')]=ChatInternalMessageEvents;
\ No newline at end of file
index 661ba12..c542f47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b1a=['./chatInternalMessage.attributes','exports','define','chat_internal_messages','utf8mb4','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x35c478,_0x33f1ac){var _0x85ee9a=function(_0x385109){while(--_0x385109){_0x35c478['push'](_0x35c478['shift']());}};_0x85ee9a(++_0x33f1ac);}(_0x2b1a,0x1f3));var _0xa2b1=function(_0x19cdd5,_0x24dd67){_0x19cdd5=_0x19cdd5-0x0;var _0x5a6db5=_0x2b1a[_0x19cdd5];return _0x5a6db5;};'use strict';var _=require(_0xa2b1('0x0'));var util=require(_0xa2b1('0x1'));var logger=require(_0xa2b1('0x2'))(_0xa2b1('0x3'));var moment=require('moment');var BPromise=require(_0xa2b1('0x4'));var rp=require(_0xa2b1('0x5'));var fs=require('fs');var path=require(_0xa2b1('0x6'));var rimraf=require(_0xa2b1('0x7'));var config=require('../../config/environment');var attributes=require(_0xa2b1('0x8'));module[_0xa2b1('0x9')]=function(_0x3a5fca,_0x54cf0a){return _0x3a5fca[_0xa2b1('0xa')]('ChatInternalMessage',attributes,{'tableName':_0xa2b1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xa2b1('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x6d86=['moment','bluebird','request-promise','rimraf','./chatInternalMessage.attributes','exports','ChatInternalMessage','chat_internal_messages','utf8mb4_unicode_ci','util','../../config/logger'];(function(_0x562f3b,_0x4c65ae){var _0x1edd55=function(_0xe67e06){while(--_0xe67e06){_0x562f3b['push'](_0x562f3b['shift']());}};_0x1edd55(++_0x4c65ae);}(_0x6d86,0xfb));var _0x66d8=function(_0x48703a,_0x53d4ef){_0x48703a=_0x48703a-0x0;var _0x4e9e36=_0x6d86[_0x48703a];return _0x4e9e36;};'use strict';var _=require('lodash');var util=require(_0x66d8('0x0'));var logger=require(_0x66d8('0x1'))('api');var moment=require(_0x66d8('0x2'));var BPromise=require(_0x66d8('0x3'));var rp=require(_0x66d8('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x66d8('0x5'));var config=require('../../config/environment');var attributes=require(_0x66d8('0x6'));module[_0x66d8('0x7')]=function(_0xe9daa8,_0x572eb1){return _0xe9daa8['define'](_0x66d8('0x8'),attributes,{'tableName':_0x66d8('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x66d8('0xa')});};
\ No newline at end of file
index 9550a45..972879d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45aa=['./chatInternalMessage.socket','register','request','then','info','debug','request\x20sent','error','ChatInternalMessage,\x20%s,\x20%s','message','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost'];(function(_0x4e341a,_0x9deed3){var _0x7fcf4d=function(_0x2e9d2c){while(--_0x2e9d2c){_0x4e341a['push'](_0x4e341a['shift']());}};_0x7fcf4d(++_0x9deed3);}(_0x45aa,0x176));var _0xa45a=function(_0x152876,_0x4419be){_0x152876=_0x152876-0x0;var _0x180866=_0x45aa[_0x152876];return _0x180866;};'use strict';var _=require('lodash');var util=require(_0xa45a('0x0'));var moment=require(_0xa45a('0x1'));var BPromise=require(_0xa45a('0x2'));var rs=require(_0xa45a('0x3'));var fs=require('fs');var Redis=require(_0xa45a('0x4'));var db=require(_0xa45a('0x5'))['db'];var utils=require(_0xa45a('0x6'));var logger=require(_0xa45a('0x7'))(_0xa45a('0x8'));var config=require(_0xa45a('0x9'));var jayson=require(_0xa45a('0xa'));var client=jayson[_0xa45a('0xb')][_0xa45a('0xc')]({'port':0x232a});config[_0xa45a('0xd')]=_[_0xa45a('0xe')](config[_0xa45a('0xd')],{'host':_0xa45a('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa45a('0xd')]));require(_0xa45a('0x10'))[_0xa45a('0x11')](socket);function respondWithRpcPromise(_0x10f0c1,_0x3f07d3,_0x39b641){return new BPromise(function(_0x3a52a6,_0x12de65){return client[_0xa45a('0x12')](_0x10f0c1,_0x39b641)[_0xa45a('0x13')](function(_0x1386a3){logger[_0xa45a('0x14')]('ChatInternalMessage,\x20%s,\x20%s',_0x3f07d3,'request\x20sent');logger[_0xa45a('0x15')]('ChatInternalMessage,\x20%s,\x20%s,\x20%s',_0x3f07d3,_0xa45a('0x16'),JSON['stringify'](_0x1386a3));if(_0x1386a3[_0xa45a('0x17')]){if(_0x1386a3[_0xa45a('0x17')]['code']===0x1f4){logger[_0xa45a('0x17')](_0xa45a('0x18'),_0x3f07d3,_0x1386a3[_0xa45a('0x17')][_0xa45a('0x19')]);return _0x12de65(_0x1386a3['error']['message']);}logger[_0xa45a('0x17')]('ChatInternalMessage,\x20%s,\x20%s',_0x3f07d3,_0x1386a3[_0xa45a('0x17')][_0xa45a('0x19')]);return _0x3a52a6(_0x1386a3[_0xa45a('0x17')][_0xa45a('0x19')]);}else{logger[_0xa45a('0x14')]('ChatInternalMessage,\x20%s,\x20%s',_0x3f07d3,_0xa45a('0x16'));_0x3a52a6(_0x1386a3['result'][_0xa45a('0x19')]);}})['catch'](function(_0x2fb93b){logger[_0xa45a('0x17')](_0xa45a('0x18'),_0x3f07d3,_0x2fb93b);_0x12de65(_0x2fb93b);});});}
\ No newline at end of file
+var _0x0a09=['redis','defaults','socket.io-emitter','./chatInternalMessage.socket','register','then','info','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ChatInternalMessage,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','http'];(function(_0x90aac9,_0x1caf1f){var _0x5b0665=function(_0xcc2179){while(--_0xcc2179){_0x90aac9['push'](_0x90aac9['shift']());}};_0x5b0665(++_0x1caf1f);}(_0x0a09,0x1ed));var _0x90a0=function(_0x4f1da5,_0x4ced17){_0x4f1da5=_0x4f1da5-0x0;var _0xe972a8=_0x0a09[_0x4f1da5];return _0xe972a8;};'use strict';var _=require(_0x90a0('0x0'));var util=require(_0x90a0('0x1'));var moment=require(_0x90a0('0x2'));var BPromise=require(_0x90a0('0x3'));var rs=require(_0x90a0('0x4'));var fs=require('fs');var Redis=require(_0x90a0('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x90a0('0x6'));var logger=require('../../config/logger')(_0x90a0('0x7'));var config=require(_0x90a0('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x90a0('0x9')][_0x90a0('0xa')]({'port':0x232a});config[_0x90a0('0xb')]=_[_0x90a0('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x90a0('0xd'))(new Redis(config[_0x90a0('0xb')]));require(_0x90a0('0xe'))[_0x90a0('0xf')](socket);function respondWithRpcPromise(_0x9d3f7c,_0x3143c9,_0x9f55e9){return new BPromise(function(_0x260df6,_0x2c113c){return client['request'](_0x9d3f7c,_0x9f55e9)[_0x90a0('0x10')](function(_0x26de29){logger[_0x90a0('0x11')]('ChatInternalMessage,\x20%s,\x20%s',_0x3143c9,_0x90a0('0x12'));logger[_0x90a0('0x13')](_0x90a0('0x14'),_0x3143c9,_0x90a0('0x12'),JSON[_0x90a0('0x15')](_0x26de29));if(_0x26de29[_0x90a0('0x16')]){if(_0x26de29['error'][_0x90a0('0x17')]===0x1f4){logger[_0x90a0('0x16')]('ChatInternalMessage,\x20%s,\x20%s',_0x3143c9,_0x26de29[_0x90a0('0x16')]['message']);return _0x2c113c(_0x26de29['error'][_0x90a0('0x18')]);}logger[_0x90a0('0x16')](_0x90a0('0x19'),_0x3143c9,_0x26de29[_0x90a0('0x16')]['message']);return _0x260df6(_0x26de29[_0x90a0('0x16')][_0x90a0('0x18')]);}else{logger[_0x90a0('0x11')]('ChatInternalMessage,\x20%s,\x20%s',_0x3143c9,_0x90a0('0x12'));_0x260df6(_0x26de29[_0x90a0('0x1a')]['message']);}})[_0x90a0('0x1b')](function(_0x6f659a){logger[_0x90a0('0x16')](_0x90a0('0x19'),_0x3143c9,_0x6f659a);_0x2c113c(_0x6f659a);});});}
\ No newline at end of file
index 544ec00..ee9d3f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc978=['save','remove','update','removeListener','register','length','./chatInternalMessage.events'];(function(_0x2892da,_0x191a40){var _0x28cff2=function(_0x57023d){while(--_0x57023d){_0x2892da['push'](_0x2892da['shift']());}};_0x28cff2(++_0x191a40);}(_0xc978,0x99));var _0x8c97=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc978[_0x20a584];return _0x4b41a8;};'use strict';var ChatInternalMessageEvents=require(_0x8c97('0x0'));var events=[_0x8c97('0x1'),_0x8c97('0x2'),_0x8c97('0x3')];function createListener(_0x55ad86,_0x20f86a){return function(_0x1e4128){_0x20f86a['emit'](_0x55ad86,_0x1e4128);};}function removeListener(_0x3fae3d,_0x482359){return function(){ChatInternalMessageEvents[_0x8c97('0x4')](_0x3fae3d,_0x482359);};}exports[_0x8c97('0x5')]=function(_0x1f8029){for(var _0x4e7bf3=0x0,_0xa5ca0f=events[_0x8c97('0x6')];_0x4e7bf3<_0xa5ca0f;_0x4e7bf3++){var _0x2c73fb=events[_0x4e7bf3];var _0x3cce5d=createListener('chatInternalMessage:'+_0x2c73fb,_0x1f8029);ChatInternalMessageEvents['on'](_0x2c73fb,_0x3cce5d);}};
\ No newline at end of file
+var _0xe1d9=['length','./chatInternalMessage.events','save','remove','update','register'];(function(_0x40c9dc,_0x40fd93){var _0x242ea5=function(_0x389ec6){while(--_0x389ec6){_0x40c9dc['push'](_0x40c9dc['shift']());}};_0x242ea5(++_0x40fd93);}(_0xe1d9,0xf7));var _0x9e1d=function(_0x4e877f,_0x548d48){_0x4e877f=_0x4e877f-0x0;var _0x4718c1=_0xe1d9[_0x4e877f];return _0x4718c1;};'use strict';var ChatInternalMessageEvents=require(_0x9e1d('0x0'));var events=[_0x9e1d('0x1'),_0x9e1d('0x2'),_0x9e1d('0x3')];function createListener(_0x502b84,_0x81bc47){return function(_0x947468){_0x81bc47['emit'](_0x502b84,_0x947468);};}function removeListener(_0x1f8145,_0x57a85c){return function(){ChatInternalMessageEvents['removeListener'](_0x1f8145,_0x57a85c);};}exports[_0x9e1d('0x4')]=function(_0x58da79){for(var _0x3c4ff1=0x0,_0x1e77d6=events[_0x9e1d('0x5')];_0x3c4ff1<_0x1e77d6;_0x3c4ff1++){var _0x915e7b=events[_0x3c4ff1];var _0x105a8f=createListener('chatInternalMessage:'+_0x915e7b,_0x58da79);ChatInternalMessageEvents['on'](_0x915e7b,_0x105a8f);}};
\ No newline at end of file
index 22f83ff..51b6ec7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb84=['put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','index','get','/describe','isAuthenticated','describe','/users','getUsers','/:id','show','post','create'];(function(_0x4f8494,_0x44059f){var _0x4dce4b=function(_0x21f3fb){while(--_0x21f3fb){_0x4f8494['push'](_0x4f8494['shift']());}};_0x4dce4b(++_0x44059f);}(_0xcb84,0xcd));var _0x4cb8=function(_0x50fda9,_0x5ee44b){_0x50fda9=_0x50fda9-0x0;var _0x36b92b=_0xcb84[_0x50fda9];return _0x36b92b;};'use strict';var multer=require(_0x4cb8('0x0'));var util=require(_0x4cb8('0x1'));var path=require(_0x4cb8('0x2'));var timeout=require('connect-timeout');var express=require(_0x4cb8('0x3'));var router=express[_0x4cb8('0x4')]();var fs_extra=require(_0x4cb8('0x5'));var auth=require(_0x4cb8('0x6'));var interaction=require(_0x4cb8('0x7'));var config=require(_0x4cb8('0x8'));var controller=require('./chatInternalMessage.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x4cb8('0x9')]);router[_0x4cb8('0xa')](_0x4cb8('0xb'),auth[_0x4cb8('0xc')](),controller[_0x4cb8('0xd')]);router[_0x4cb8('0xa')](_0x4cb8('0xe'),auth['isAuthenticated'](),controller[_0x4cb8('0xf')]);router[_0x4cb8('0xa')](_0x4cb8('0x10'),auth[_0x4cb8('0xc')](),controller[_0x4cb8('0x11')]);router[_0x4cb8('0x12')]('/',auth[_0x4cb8('0xc')](),controller[_0x4cb8('0x13')]);router[_0x4cb8('0x14')]('/:id',controller[_0x4cb8('0x15')]);router[_0x4cb8('0x16')](_0x4cb8('0x10'),auth[_0x4cb8('0xc')](),controller[_0x4cb8('0x17')]);module[_0x4cb8('0x18')]=router;
\ No newline at end of file
+var _0x8d6b=['index','/describe','/users','getUsers','/:id','post','create','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatInternalMessage.controller','get','isAuthenticated'];(function(_0x1d5a10,_0x76b262){var _0x561067=function(_0x1d6da9){while(--_0x1d6da9){_0x1d5a10['push'](_0x1d5a10['shift']());}};_0x561067(++_0x76b262);}(_0x8d6b,0x1aa));var _0xb8d6=function(_0x3730b3,_0x5b3c63){_0x3730b3=_0x3730b3-0x0;var _0x4f1b23=_0x8d6b[_0x3730b3];return _0x4f1b23;};'use strict';var multer=require(_0xb8d6('0x0'));var util=require(_0xb8d6('0x1'));var path=require(_0xb8d6('0x2'));var timeout=require('connect-timeout');var express=require(_0xb8d6('0x3'));var router=express[_0xb8d6('0x4')]();var fs_extra=require(_0xb8d6('0x5'));var auth=require(_0xb8d6('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xb8d6('0x7'));var controller=require(_0xb8d6('0x8'));router[_0xb8d6('0x9')]('/',auth[_0xb8d6('0xa')](),controller[_0xb8d6('0xb')]);router[_0xb8d6('0x9')](_0xb8d6('0xc'),auth[_0xb8d6('0xa')](),controller['describe']);router[_0xb8d6('0x9')](_0xb8d6('0xd'),auth[_0xb8d6('0xa')](),controller[_0xb8d6('0xe')]);router[_0xb8d6('0x9')](_0xb8d6('0xf'),auth[_0xb8d6('0xa')](),controller['show']);router[_0xb8d6('0x10')]('/',auth['isAuthenticated'](),controller[_0xb8d6('0x11')]);router[_0xb8d6('0x12')](_0xb8d6('0xf'),controller[_0xb8d6('0x13')]);router[_0xb8d6('0x14')](_0xb8d6('0xf'),auth[_0xb8d6('0xa')](),controller[_0xb8d6('0x15')]);module[_0xb8d6('0x16')]=router;
\ No newline at end of file
index c64b2ba..ddc3ff0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3da6=['DATE','sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out'];(function(_0x402cfe,_0x196e4f){var _0x366097=function(_0x28494c){while(--_0x28494c){_0x402cfe['push'](_0x402cfe['shift']());}};_0x366097(++_0x196e4f);}(_0x3da6,0xc1));var _0x63da=function(_0x5ea231,_0x36d2f2){_0x5ea231=_0x5ea231-0x0;var _0x23584a=_0x3da6[_0x5ea231];return _0x23584a;};'use strict';var Sequelize=require(_0x63da('0x0'));module[_0x63da('0x1')]={'body':{'type':Sequelize[_0x63da('0x2')](_0x63da('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x63da('0x4')],'defaultValue':![]},'secret':{'type':Sequelize[_0x63da('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x63da('0x5')]('in','out'),'defaultValue':_0x63da('0x6'),'allowNull':![]},'readAt':{'type':Sequelize[_0x63da('0x7')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x63da('0x2')]}};
\ No newline at end of file
+var _0x80ed=['BOOLEAN','ENUM','out','DATE','sequelize','TEXT','medium'];(function(_0x3ec143,_0x505aea){var _0x19e682=function(_0x36c4dd){while(--_0x36c4dd){_0x3ec143['push'](_0x3ec143['shift']());}};_0x19e682(++_0x505aea);}(_0x80ed,0x11c));var _0xd80e=function(_0x241a95,_0x475183){_0x241a95=_0x241a95-0x0;var _0x50f683=_0x80ed[_0x241a95];return _0x50f683;};'use strict';var Sequelize=require(_0xd80e('0x0'));module['exports']={'body':{'type':Sequelize[_0xd80e('0x1')](_0xd80e('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xd80e('0x3')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xd80e('0x4')]('in',_0xd80e('0x5')),'defaultValue':_0xd80e('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0xd80e('0x6')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xd80e('0x1')]}};
\ No newline at end of file
index 5cc4cac..f3e7b22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2a0=['../../config/logger','chat-interactions','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','socket.io-emitter','./chatMessage.socket','register','jayson/promise','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','end','offset','limit','count','set','Content-Range','json','apply','reject','update','stack','name','send','map','ChatMessage','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','merge','VIRTUAL','options','includeAll','include','findAll','rawAttributes','find','create','body','params','destroy','describe','accept','chat','read','format','agent','UserId','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','stringify','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','parse','formData'];(function(_0x30395d,_0x2a148a){var _0x711966=function(_0x537905){while(--_0x537905){_0x30395d['push'](_0x30395d['shift']());}};_0x711966(++_0x2a148a);}(_0xd2a0,0x89));var _0x0d2a=function(_0x4c7cbb,_0x3d0828){_0x4c7cbb=_0x4c7cbb-0x0;var _0x55f644=_0xd2a0[_0x4c7cbb];return _0x55f644;};'use strict';var emlformat=require(_0x0d2a('0x0'));var rimraf=require(_0x0d2a('0x1'));var zipdir=require(_0x0d2a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0d2a('0x3'));var moment=require(_0x0d2a('0x4'));var BPromise=require(_0x0d2a('0x5'));var Mustache=require(_0x0d2a('0x6'));var util=require(_0x0d2a('0x7'));var path=require(_0x0d2a('0x8'));var sox=require('sox');var csv=require(_0x0d2a('0x9'));var ejs=require(_0x0d2a('0xa'));var fs=require('fs');var fs_extra=require(_0x0d2a('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x0d2a('0xc'));var jsforce=require(_0x0d2a('0xd'));var deskjs=require(_0x0d2a('0xe'));var toCsv=require(_0x0d2a('0x9'));var querystring=require('querystring');var Papa=require(_0x0d2a('0xf'));var Redis=require(_0x0d2a('0x10'));var authService=require(_0x0d2a('0x11'));var qs=require(_0x0d2a('0x12'));var as=require(_0x0d2a('0x13'));var hardwareService=require(_0x0d2a('0x14'));var logger=require('../../config/logger')(_0x0d2a('0x15'));var utils=require(_0x0d2a('0x16'));var config=require(_0x0d2a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x0d2a('0x18'))['db'];config[_0x0d2a('0x19')]=_['defaults'](config[_0x0d2a('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0x0d2a('0x1a'))(new Redis(config[_0x0d2a('0x19')]));require(_0x0d2a('0x1b'))[_0x0d2a('0x1c')](socket);var jayson=require(_0x0d2a('0x1d'));var client=jayson[_0x0d2a('0x1e')][_0x0d2a('0x1f')]({'port':0x232c});var client9002=jayson[_0x0d2a('0x1e')][_0x0d2a('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x498c93,_0x4b216a,_0x27593d,_0x2f3dc5){return new BPromise(function(_0x1755f9,_0xfc83e5){var _0x4674df=_0x2f3dc5||client;return _0x4674df[_0x0d2a('0x20')](_0x498c93,_0x27593d)[_0x0d2a('0x21')](function(_0x53a792){logger[_0x0d2a('0x22')](_0x0d2a('0x23'),_0x4b216a,_0x0d2a('0x24'));logger[_0x0d2a('0x25')](_0x0d2a('0x26'),_0x4b216a,_0x0d2a('0x24'),JSON['stringify'](_0x53a792));if(_0x53a792[_0x0d2a('0x27')]){if(_0x53a792[_0x0d2a('0x27')][_0x0d2a('0x28')]===0x1f4){logger[_0x0d2a('0x27')](_0x0d2a('0x23'),_0x4b216a,_0x53a792[_0x0d2a('0x27')]['message']);return _0xfc83e5(_0x53a792['error'][_0x0d2a('0x29')]);}logger[_0x0d2a('0x27')]('ChatMessage,\x20%s,\x20%s',_0x4b216a,_0x53a792[_0x0d2a('0x27')][_0x0d2a('0x29')]);return _0x1755f9(_0x53a792['error'][_0x0d2a('0x29')]);}else{logger[_0x0d2a('0x22')](_0x0d2a('0x23'),_0x4b216a,_0x0d2a('0x24'));_0x1755f9(_0x53a792[_0x0d2a('0x2a')][_0x0d2a('0x29')]);}})[_0x0d2a('0x2b')](function(_0x5f0e13){logger[_0x0d2a('0x27')](_0x0d2a('0x23'),_0x4b216a,_0x5f0e13);_0xfc83e5(_0x5f0e13);});});}function respondWithStatusCode(_0x3d4c37,_0x56ab50){_0x56ab50=_0x56ab50||0xcc;return function(_0x125992){if(_0x125992){return _0x3d4c37[_0x0d2a('0x2c')](_0x56ab50);}return _0x3d4c37[_0x0d2a('0x2d')](_0x56ab50)[_0x0d2a('0x2e')]();};}function respondWithResult(_0x353a36,_0x22b9f7){_0x22b9f7=_0x22b9f7||0xc8;return function(_0x349cb8){if(_0x349cb8){return _0x353a36[_0x0d2a('0x2d')](_0x22b9f7)['json'](_0x349cb8);}};}function respondWithFilteredResult(_0x41c2a8,_0x3b2e8e){return function(_0x3e6892){if(_0x3e6892){var _0x552858=typeof _0x3b2e8e[_0x0d2a('0x2f')]==='undefined'&&typeof _0x3b2e8e[_0x0d2a('0x30')]==='undefined';var _0x2e8b13=_0x3e6892[_0x0d2a('0x31')];var _0x57a950=_0x552858?0x0:_0x3b2e8e[_0x0d2a('0x2f')];var _0x6487df=_0x552858?_0x3e6892[_0x0d2a('0x31')]:_0x3b2e8e[_0x0d2a('0x2f')]+_0x3b2e8e[_0x0d2a('0x30')];var _0xb5c2ab;if(_0x6487df>=_0x2e8b13){_0x6487df=_0x2e8b13;_0xb5c2ab=0xc8;}else{_0xb5c2ab=0xce;}_0x41c2a8[_0x0d2a('0x2d')](_0xb5c2ab);return _0x41c2a8[_0x0d2a('0x32')](_0x0d2a('0x33'),_0x57a950+'-'+_0x6487df+'/'+_0x2e8b13)[_0x0d2a('0x34')](_0x3e6892);}return null;};}function patchUpdates(_0x49c75c){return function(_0x322a89){try{jsonpatch[_0x0d2a('0x35')](_0x322a89,_0x49c75c,!![]);}catch(_0x3ca69a){return BPromise[_0x0d2a('0x36')](_0x3ca69a);}return _0x322a89['save']();};}function saveUpdates(_0x551029,_0x262795){return function(_0x471aeb){if(_0x471aeb){return _0x471aeb[_0x0d2a('0x37')](_0x551029)['then'](function(_0x26b57d){return _0x26b57d;});}return null;};}function removeEntity(_0x552032,_0xd3bf74){return function(_0x35183f){if(_0x35183f){return _0x35183f['destroy']()[_0x0d2a('0x21')](function(){_0x552032[_0x0d2a('0x2d')](0xcc)[_0x0d2a('0x2e')]();});}};}function handleEntityNotFound(_0x3f40cf,_0x22bf32){return function(_0x1ca941){if(!_0x1ca941){_0x3f40cf[_0x0d2a('0x2c')](0x194);}return _0x1ca941;};}function handleError(_0x51d5d6,_0x2e5eeb){_0x2e5eeb=_0x2e5eeb||0x1f4;return function(_0x1c4033){logger[_0x0d2a('0x27')](_0x1c4033[_0x0d2a('0x38')]);if(_0x1c4033['name']){delete _0x1c4033[_0x0d2a('0x39')];}_0x51d5d6[_0x0d2a('0x2d')](_0x2e5eeb)[_0x0d2a('0x3a')](_0x1c4033);};}exports['index']=function(_0x1093d8,_0x1d332d){var _0x53a665={},_0x26cf86={},_0x5c8b49={'count':0x0,'rows':[]};var _0x4d21f7=_[_0x0d2a('0x3b')](db[_0x0d2a('0x3c')]['rawAttributes'],function(_0xb612e9){return{'name':_0xb612e9[_0x0d2a('0x3d')],'type':_0xb612e9[_0x0d2a('0x3e')][_0x0d2a('0x3f')]};});_0x26cf86[_0x0d2a('0x40')]=_[_0x0d2a('0x3b')](_0x4d21f7,_0x0d2a('0x39'));_0x26cf86[_0x0d2a('0x41')]=_[_0x0d2a('0x42')](_0x1093d8[_0x0d2a('0x41')]);_0x26cf86[_0x0d2a('0x43')]=_[_0x0d2a('0x44')](_0x26cf86[_0x0d2a('0x40')],_0x26cf86[_0x0d2a('0x41')]);_0x53a665[_0x0d2a('0x45')]=_['intersection'](_0x26cf86[_0x0d2a('0x40')],qs[_0x0d2a('0x46')](_0x1093d8[_0x0d2a('0x41')][_0x0d2a('0x46')]));_0x53a665[_0x0d2a('0x45')]=_0x53a665[_0x0d2a('0x45')][_0x0d2a('0x47')]?_0x53a665[_0x0d2a('0x45')]:_0x26cf86['model'];if(!_0x1093d8[_0x0d2a('0x41')][_0x0d2a('0x48')]('nolimit')){_0x53a665[_0x0d2a('0x30')]=qs[_0x0d2a('0x30')](_0x1093d8[_0x0d2a('0x41')][_0x0d2a('0x30')]);_0x53a665[_0x0d2a('0x2f')]=qs[_0x0d2a('0x2f')](_0x1093d8[_0x0d2a('0x41')][_0x0d2a('0x2f')]);}_0x53a665['order']=qs[_0x0d2a('0x49')](_0x1093d8[_0x0d2a('0x41')][_0x0d2a('0x49')]);_0x53a665[_0x0d2a('0x4a')]=qs['filters'](_['pick'](_0x1093d8[_0x0d2a('0x41')],_0x26cf86['filters']),_0x4d21f7);if(_0x1093d8[_0x0d2a('0x41')]['filter']){_0x53a665[_0x0d2a('0x4a')]=_[_0x0d2a('0x4b')](_0x53a665[_0x0d2a('0x4a')],{'$or':_[_0x0d2a('0x3b')](_0x4d21f7,function(_0x393e2b){if(_0x393e2b[_0x0d2a('0x3e')]!==_0x0d2a('0x4c')){var _0x3cad00={};_0x3cad00[_0x393e2b[_0x0d2a('0x39')]]={'$like':'%'+_0x1093d8['query']['filter']+'%'};return _0x3cad00;}})});}_0x53a665=_['merge']({},_0x53a665,_0x1093d8[_0x0d2a('0x4d')]);var _0x5b0bef={'where':_0x53a665[_0x0d2a('0x4a')]};return db['ChatMessage'][_0x0d2a('0x31')](_0x5b0bef)[_0x0d2a('0x21')](function(_0x329794){_0x5c8b49['count']=_0x329794;if(_0x1093d8['query'][_0x0d2a('0x4e')]){_0x53a665[_0x0d2a('0x4f')]=[{'all':!![]}];}return db[_0x0d2a('0x3c')][_0x0d2a('0x50')](_0x53a665);})[_0x0d2a('0x21')](function(_0x3fb375){_0x5c8b49['rows']=_0x3fb375;return _0x5c8b49;})[_0x0d2a('0x21')](respondWithFilteredResult(_0x1d332d,_0x53a665))[_0x0d2a('0x2b')](handleError(_0x1d332d,null));};exports['show']=function(_0x12ac91,_0x3c2c8c){var _0x3dfa18={'raw':!![],'where':{'id':_0x12ac91['params']['id']}},_0x36fb9f={};_0x36fb9f['model']=_[_0x0d2a('0x42')](db[_0x0d2a('0x3c')][_0x0d2a('0x51')]);_0x36fb9f['query']=_[_0x0d2a('0x42')](_0x12ac91[_0x0d2a('0x41')]);_0x36fb9f[_0x0d2a('0x43')]=_[_0x0d2a('0x44')](_0x36fb9f[_0x0d2a('0x40')],_0x36fb9f['query']);_0x3dfa18[_0x0d2a('0x45')]=_[_0x0d2a('0x44')](_0x36fb9f[_0x0d2a('0x40')],qs[_0x0d2a('0x46')](_0x12ac91[_0x0d2a('0x41')]['fields']));_0x3dfa18[_0x0d2a('0x45')]=_0x3dfa18[_0x0d2a('0x45')]['length']?_0x3dfa18[_0x0d2a('0x45')]:_0x36fb9f[_0x0d2a('0x40')];if(_0x12ac91[_0x0d2a('0x41')][_0x0d2a('0x4e')]){_0x3dfa18[_0x0d2a('0x4f')]=[{'all':!![]}];}_0x3dfa18=_[_0x0d2a('0x4b')]({},_0x3dfa18,_0x12ac91[_0x0d2a('0x4d')]);return db[_0x0d2a('0x3c')][_0x0d2a('0x52')](_0x3dfa18)[_0x0d2a('0x21')](handleEntityNotFound(_0x3c2c8c,null))[_0x0d2a('0x21')](respondWithResult(_0x3c2c8c,null))[_0x0d2a('0x2b')](handleError(_0x3c2c8c,null));};exports['create']=function(_0x3bb46d,_0x4a45c8){return db[_0x0d2a('0x3c')][_0x0d2a('0x53')](_0x3bb46d[_0x0d2a('0x54')],{})[_0x0d2a('0x21')](respondWithResult(_0x4a45c8,0xc9))[_0x0d2a('0x2b')](handleError(_0x4a45c8,null));};exports[_0x0d2a('0x37')]=function(_0x2e4487,_0x56bc6b){if(_0x2e4487[_0x0d2a('0x54')]['id']){delete _0x2e4487[_0x0d2a('0x54')]['id'];}return db[_0x0d2a('0x3c')][_0x0d2a('0x52')]({'where':{'id':_0x2e4487[_0x0d2a('0x55')]['id']}})[_0x0d2a('0x21')](handleEntityNotFound(_0x56bc6b,null))[_0x0d2a('0x21')](saveUpdates(_0x2e4487[_0x0d2a('0x54')],null))['then'](respondWithResult(_0x56bc6b,null))[_0x0d2a('0x2b')](handleError(_0x56bc6b,null));};exports[_0x0d2a('0x56')]=function(_0x24527b,_0x418de9){return db[_0x0d2a('0x3c')]['find']({'where':{'id':_0x24527b[_0x0d2a('0x55')]['id']}})[_0x0d2a('0x21')](handleEntityNotFound(_0x418de9,null))[_0x0d2a('0x21')](removeEntity(_0x418de9,null))[_0x0d2a('0x2b')](handleError(_0x418de9,null));};exports[_0x0d2a('0x57')]=function(_0x4ac820,_0x37ee5d){return db[_0x0d2a('0x3c')][_0x0d2a('0x57')]()[_0x0d2a('0x21')](respondWithResult(_0x37ee5d,null))[_0x0d2a('0x2b')](handleError(_0x37ee5d,null));};var interaction_log=require('../../config/logger')('chat-interactions');exports[_0x0d2a('0x58')]=function(_0x428351,_0x1edb38,_0x57226d){var _0xc031ad={'agent':{},'channel':_0x0d2a('0x59')};if(_0x428351[_0x0d2a('0x54')]['id']){delete _0x428351[_0x0d2a('0x54')]['id'];}_0x428351[_0x0d2a('0x54')][_0x0d2a('0x5a')]=!![];_0x428351[_0x0d2a('0x54')]['readAt']=moment()[_0x0d2a('0x5b')]('YYYY-MM-DD\x20HH:mm:ss');_0x428351[_0x0d2a('0x54')]['UserId']=_0x428351['body']['UserId']||_0x428351['user']['id'];_0xc031ad[_0x0d2a('0x5c')]['id']=_0x428351[_0x0d2a('0x54')][_0x0d2a('0x5d')];return db[_0x0d2a('0x3c')][_0x0d2a('0x52')]({'where':{'id':_0x428351['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1edb38,null))[_0x0d2a('0x21')](saveUpdates(_0x428351[_0x0d2a('0x54')],null))[_0x0d2a('0x21')](function(_0x30b1a4){if(_0x30b1a4){_0xc031ad[_0x0d2a('0x29')]=_0x30b1a4[_0x0d2a('0x5e')]({'plain':!![]});return db[_0x0d2a('0x5f')][_0x0d2a('0x52')]({'where':{'id':_0x30b1a4[_0x0d2a('0x60')]}});}return null;})[_0x0d2a('0x21')](handleEntityNotFound(_0x1edb38,null))[_0x0d2a('0x21')](function(_0x37cdd4){if(_0x37cdd4){return _0x37cdd4[_0x0d2a('0x37')]({'UserId':_0x428351[_0x0d2a('0x54')]['UserId'],'read1stAt':_[_0x0d2a('0x61')](_0x37cdd4[_0x0d2a('0x62')])?moment()[_0x0d2a('0x5b')](_0x0d2a('0x63')):undefined});}return null;})[_0x0d2a('0x21')](function(_0xf622b0){if(_0xf622b0){_0xc031ad[_0x0d2a('0x64')]=_0xf622b0['get']({'plain':!![]});interaction_log['info'](_0x0d2a('0x65'),_0x428351[_0x0d2a('0x66')]['id'],_0x428351['user'][_0x0d2a('0x39')],_0x428351['user'][_0x0d2a('0x67')],_0xc031ad[_0x0d2a('0x64')]['id'],_0x428351[_0x0d2a('0x54')]?JSON[_0x0d2a('0x68')](_0x428351[_0x0d2a('0x54')]):'null');return respondWithRpcPromise('AcceptMessage',_0x0d2a('0x69'),_0xc031ad);}return null;})[_0x0d2a('0x21')](function(_0x20b31f){var _0x341a29=_0x0d2a('0x6a')+_0x20b31f[_0x0d2a('0x29')][_0x0d2a('0x6b')];return db[_0x0d2a('0x6c')]['query'](_0x341a29,{'type':db[_0x0d2a('0x6d')][_0x0d2a('0x6e')][_0x0d2a('0x6f')],'raw':!![]})['then'](function(_0x111035){return _0x111035;});})[_0x0d2a('0x21')](function(_0x34f005){if(_0x34f005){_0xc031ad[_0x0d2a('0x29')][_0x0d2a('0x70')]=_0x34f005[0x0];if(!_0x428351[_0x0d2a('0x54')][_0x0d2a('0x5d')])return;return db[_0x0d2a('0x71')][_0x0d2a('0x52')]({'where':{'id':_0x428351[_0x0d2a('0x54')][_0x0d2a('0x5d')],'role':_0x0d2a('0x5c')},'attributes':['id','name',_0x0d2a('0x72'),_0x0d2a('0x73'),'internal'],'raw':!![]});}return null;})[_0x0d2a('0x21')](function(_0x2aaf69){if(!_0x2aaf69)return null;_0xc031ad[_0x0d2a('0x29')][_0x0d2a('0x5c')]=_0x2aaf69;return _0xc031ad;})[_0x0d2a('0x21')](function(_0x34861e){if(_0x34861e){if(_0x428351[_0x0d2a('0x54')]['manual']){_0xc031ad[_0x0d2a('0x29')][_0x0d2a('0x74')]=util['format'](_0x0d2a('0x75'),_0x428351[_0x0d2a('0x66')][_0x0d2a('0x39')]);_0xc031ad[_0x0d2a('0x29')][_0x0d2a('0x76')]=_0xc031ad[_0x0d2a('0x76')];_0xc031ad[_0x0d2a('0x29')][_0x0d2a('0x77')]=_0xc031ad['channel'];_0xc031ad[_0x0d2a('0x29')][_0x0d2a('0x78')]=_0x0d2a('0x58');return respondWithRpcPromise('EventManager',_0x0d2a('0x79'),{'event':_0x0d2a('0x7a'),'message':_['merge'](_0xc031ad[_0x0d2a('0x29')],JSON[_0x0d2a('0x7b')](_0xc031ad['interaction'][_0x0d2a('0x7c')]))},client9002)[_0x0d2a('0x21')](function(){return _0xc031ad;});}return _0xc031ad;}return null;})['then'](respondWithResult(_0x1edb38,null))[_0x0d2a('0x2b')](handleError(_0x1edb38,null));};var interaction_log=require(_0x0d2a('0x7d'))(_0x0d2a('0x7e'));exports[_0x0d2a('0x36')]=function(_0x219d0f,_0x1986dc,_0x2cc640){var _0x2b0daa={'agent':{},'channel':_0x0d2a('0x59')};if(_0x219d0f['body']['id']){delete _0x219d0f['body']['id'];}_0x219d0f[_0x0d2a('0x54')]['UserId']=_0x219d0f[_0x0d2a('0x54')][_0x0d2a('0x5d')]||_0x219d0f[_0x0d2a('0x66')]['id'];_0x2b0daa[_0x0d2a('0x5c')]['id']=_0x219d0f['body']['UserId'];return db[_0x0d2a('0x3c')][_0x0d2a('0x52')]({'where':{'id':_0x219d0f[_0x0d2a('0x55')]['id'],'UserId':null}})[_0x0d2a('0x21')](handleEntityNotFound(_0x1986dc,null))[_0x0d2a('0x21')](function(_0x5132f6){if(_0x5132f6){_0x2b0daa['message']=_0x5132f6[_0x0d2a('0x5e')]({'plain':!![]});return db['ChatInteraction'][_0x0d2a('0x52')]({'where':{'id':_0x5132f6[_0x0d2a('0x60')]}});}return null;})[_0x0d2a('0x21')](handleEntityNotFound(_0x1986dc,null))[_0x0d2a('0x21')](function(_0x29c053){if(_0x29c053){_0x2b0daa[_0x0d2a('0x64')]=_0x29c053['get']({'plain':!![]});interaction_log[_0x0d2a('0x22')](_0x0d2a('0x7f'),_0x219d0f[_0x0d2a('0x66')]['id'],_0x219d0f[_0x0d2a('0x66')][_0x0d2a('0x39')],_0x219d0f[_0x0d2a('0x66')]['role'],_0x2b0daa[_0x0d2a('0x64')]['id'],_0x219d0f[_0x0d2a('0x54')]?JSON['stringify'](_0x219d0f[_0x0d2a('0x54')]):_0x0d2a('0x80'));return respondWithRpcPromise(_0x0d2a('0x81'),_0x0d2a('0x82'),_0x2b0daa);}return null;})[_0x0d2a('0x21')](function(_0x201bb4){var _0x1f5677=_0x0d2a('0x6a')+_0x201bb4[_0x0d2a('0x29')][_0x0d2a('0x6b')];return db[_0x0d2a('0x6c')][_0x0d2a('0x41')](_0x1f5677,{'type':db[_0x0d2a('0x6d')]['QueryTypes'][_0x0d2a('0x6f')],'raw':!![]})['then'](function(_0xec4f20){return _0xec4f20;});})[_0x0d2a('0x21')](function(_0x5364a6){if(_0x5364a6){_0x2b0daa[_0x0d2a('0x29')][_0x0d2a('0x70')]=_0x5364a6[0x0];if(!_0x219d0f[_0x0d2a('0x54')][_0x0d2a('0x5d')])return;return db[_0x0d2a('0x71')][_0x0d2a('0x52')]({'where':{'id':_0x219d0f['body'][_0x0d2a('0x5d')],'role':_0x0d2a('0x5c')},'attributes':['id','name',_0x0d2a('0x72'),_0x0d2a('0x73'),'internal'],'raw':!![]});}return null;})['then'](function(_0x568cbb){if(!_0x568cbb)return null;_0x2b0daa[_0x0d2a('0x29')][_0x0d2a('0x5c')]=_0x568cbb;return _0x2b0daa;})[_0x0d2a('0x21')](function(_0x4f8b07){if(_0x4f8b07){_0x4f8b07[_0x0d2a('0x29')][_0x0d2a('0x74')]=util['format'](_0x0d2a('0x75'),_0x219d0f[_0x0d2a('0x66')][_0x0d2a('0x39')]);_0x4f8b07[_0x0d2a('0x29')]['channel']=_0x2b0daa[_0x0d2a('0x76')];_0x4f8b07[_0x0d2a('0x29')]['motionChannel']=_0x2b0daa[_0x0d2a('0x76')];_0x4f8b07[_0x0d2a('0x29')][_0x0d2a('0x78')]=_0x0d2a('0x36');respondWithRpcPromise(_0x0d2a('0x79'),_0x0d2a('0x79'),{'event':'rejectmessage','message':_[_0x0d2a('0x4b')](_0x2b0daa[_0x0d2a('0x29')],JSON[_0x0d2a('0x7b')](_0x2b0daa[_0x0d2a('0x64')][_0x0d2a('0x7c')]))},client9002);return _0x2b0daa;}return null;})[_0x0d2a('0x21')](respondWithResult(_0x1986dc,null))[_0x0d2a('0x2b')](handleError(_0x1986dc,null));};
\ No newline at end of file
+var _0xa9e0=['interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','contact','email','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','parse','formData','chat-interactions','chat','ChatInteraction','RejectMessage','rejectMessage','Sequelize','QueryTypes','SELECT','fullname','rejectmessage','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','redis','defaults','localhost','./chatMessage.socket','register','jayson/promise','client','http','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','destroy','stack','name','send','map','ChatMessage','fieldName','type','keys','query','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','body','find','describe','../../config/logger','accept','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','ChatInteractionId','isNil','read1stAt','format'];(function(_0x67766e,_0x50858c){var _0x351e53=function(_0x151a6){while(--_0x151a6){_0x67766e['push'](_0x67766e['shift']());}};_0x351e53(++_0x50858c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa9e0[_0x14add3];return _0x4a174f;};'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'];config[_0x0a9e('0x15')]=_[_0x0a9e('0x16')](config[_0x0a9e('0x15')],{'host':_0x0a9e('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0a9e('0x15')]));require(_0x0a9e('0x18'))[_0x0a9e('0x19')](socket);var jayson=require(_0x0a9e('0x1a'));var client=jayson[_0x0a9e('0x1b')][_0x0a9e('0x1c')]({'port':0x232c});var client9002=jayson['client'][_0x0a9e('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x5d0880,_0x1985b6,_0x519dfd,_0x16033c){return new BPromise(function(_0x12066b,_0x48f32d){var _0x225616=_0x16033c||client;return _0x225616['request'](_0x5d0880,_0x519dfd)[_0x0a9e('0x1d')](function(_0x478723){logger[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x1985b6,_0x0a9e('0x20'));logger[_0x0a9e('0x21')](_0x0a9e('0x22'),_0x1985b6,_0x0a9e('0x20'),JSON[_0x0a9e('0x23')](_0x478723));if(_0x478723[_0x0a9e('0x24')]){if(_0x478723[_0x0a9e('0x24')][_0x0a9e('0x25')]===0x1f4){logger['error'](_0x0a9e('0x1f'),_0x1985b6,_0x478723[_0x0a9e('0x24')]['message']);return _0x48f32d(_0x478723[_0x0a9e('0x24')]['message']);}logger['error'](_0x0a9e('0x1f'),_0x1985b6,_0x478723[_0x0a9e('0x24')][_0x0a9e('0x26')]);return _0x12066b(_0x478723[_0x0a9e('0x24')]['message']);}else{logger[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x1985b6,_0x0a9e('0x20'));_0x12066b(_0x478723[_0x0a9e('0x27')][_0x0a9e('0x26')]);}})[_0x0a9e('0x28')](function(_0x16b1ca){logger['error']('ChatMessage,\x20%s,\x20%s',_0x1985b6,_0x16b1ca);_0x48f32d(_0x16b1ca);});});}function respondWithStatusCode(_0x197ec0,_0x3a8e58){_0x3a8e58=_0x3a8e58||0xcc;return function(_0x40c424){if(_0x40c424){return _0x197ec0[_0x0a9e('0x29')](_0x3a8e58);}return _0x197ec0['status'](_0x3a8e58)[_0x0a9e('0x2a')]();};}function respondWithResult(_0x479bc4,_0x45a1e7){_0x45a1e7=_0x45a1e7||0xc8;return function(_0x5bfb33){if(_0x5bfb33){return _0x479bc4[_0x0a9e('0x2b')](_0x45a1e7)[_0x0a9e('0x2c')](_0x5bfb33);}};}function respondWithFilteredResult(_0x25fba9,_0x14433c){return function(_0x140511){if(_0x140511){var _0x1538a4=typeof _0x14433c[_0x0a9e('0x2d')]===_0x0a9e('0x2e')&&typeof _0x14433c['limit']===_0x0a9e('0x2e');var _0x468813=_0x140511[_0x0a9e('0x2f')];var _0x2ec755=_0x1538a4?0x0:_0x14433c['offset'];var _0x15b200=_0x1538a4?_0x140511[_0x0a9e('0x2f')]:_0x14433c[_0x0a9e('0x2d')]+_0x14433c[_0x0a9e('0x30')];var _0x58b06f;if(_0x15b200>=_0x468813){_0x15b200=_0x468813;_0x58b06f=0xc8;}else{_0x58b06f=0xce;}_0x25fba9[_0x0a9e('0x2b')](_0x58b06f);return _0x25fba9[_0x0a9e('0x31')](_0x0a9e('0x32'),_0x2ec755+'-'+_0x15b200+'/'+_0x468813)[_0x0a9e('0x2c')](_0x140511);}return null;};}function patchUpdates(_0x540530){return function(_0x426950){try{jsonpatch['apply'](_0x426950,_0x540530,!![]);}catch(_0x2407f9){return BPromise[_0x0a9e('0x33')](_0x2407f9);}return _0x426950[_0x0a9e('0x34')]();};}function saveUpdates(_0x33bdb7,_0x25ce3a){return function(_0x5180f1){if(_0x5180f1){return _0x5180f1[_0x0a9e('0x35')](_0x33bdb7)[_0x0a9e('0x1d')](function(_0x40cb85){return _0x40cb85;});}return null;};}function removeEntity(_0x2da5c0,_0x2b45ea){return function(_0x409319){if(_0x409319){return _0x409319[_0x0a9e('0x36')]()[_0x0a9e('0x1d')](function(){_0x2da5c0['status'](0xcc)[_0x0a9e('0x2a')]();});}};}function handleEntityNotFound(_0x5e7238,_0x2cc7a0){return function(_0x14b13f){if(!_0x14b13f){_0x5e7238[_0x0a9e('0x29')](0x194);}return _0x14b13f;};}function handleError(_0x3f3d41,_0x567193){_0x567193=_0x567193||0x1f4;return function(_0x191e91){logger[_0x0a9e('0x24')](_0x191e91[_0x0a9e('0x37')]);if(_0x191e91[_0x0a9e('0x38')]){delete _0x191e91['name'];}_0x3f3d41['status'](_0x567193)[_0x0a9e('0x39')](_0x191e91);};}exports['index']=function(_0x24936a,_0x3d9717){var _0x381c37={},_0x1ef87a={},_0x4f41ae={'count':0x0,'rows':[]};var _0x31916f=_[_0x0a9e('0x3a')](db[_0x0a9e('0x3b')]['rawAttributes'],function(_0x1dbf74){return{'name':_0x1dbf74[_0x0a9e('0x3c')],'type':_0x1dbf74[_0x0a9e('0x3d')]['key']};});_0x1ef87a['model']=_[_0x0a9e('0x3a')](_0x31916f,_0x0a9e('0x38'));_0x1ef87a['query']=_[_0x0a9e('0x3e')](_0x24936a[_0x0a9e('0x3f')]);_0x1ef87a[_0x0a9e('0x40')]=_[_0x0a9e('0x41')](_0x1ef87a['model'],_0x1ef87a['query']);_0x381c37[_0x0a9e('0x42')]=_[_0x0a9e('0x41')](_0x1ef87a['model'],qs[_0x0a9e('0x43')](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x43')]));_0x381c37['attributes']=_0x381c37[_0x0a9e('0x42')][_0x0a9e('0x44')]?_0x381c37[_0x0a9e('0x42')]:_0x1ef87a[_0x0a9e('0x45')];if(!_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x46')](_0x0a9e('0x47'))){_0x381c37[_0x0a9e('0x30')]=qs[_0x0a9e('0x30')](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x30')]);_0x381c37[_0x0a9e('0x2d')]=qs[_0x0a9e('0x2d')](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x2d')]);}_0x381c37['order']=qs['sort'](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x48')]);_0x381c37[_0x0a9e('0x49')]=qs[_0x0a9e('0x40')](_[_0x0a9e('0x4a')](_0x24936a[_0x0a9e('0x3f')],_0x1ef87a[_0x0a9e('0x40')]),_0x31916f);if(_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x4b')]){_0x381c37[_0x0a9e('0x49')]=_[_0x0a9e('0x4c')](_0x381c37[_0x0a9e('0x49')],{'$or':_['map'](_0x31916f,function(_0x117c99){if(_0x117c99[_0x0a9e('0x3d')]!==_0x0a9e('0x4d')){var _0xfbd5ad={};_0xfbd5ad[_0x117c99[_0x0a9e('0x38')]]={'$like':'%'+_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x4b')]+'%'};return _0xfbd5ad;}})});}_0x381c37=_[_0x0a9e('0x4c')]({},_0x381c37,_0x24936a['options']);var _0x2e9d90={'where':_0x381c37['where']};return db[_0x0a9e('0x3b')][_0x0a9e('0x2f')](_0x2e9d90)[_0x0a9e('0x1d')](function(_0x562fb4){_0x4f41ae[_0x0a9e('0x2f')]=_0x562fb4;if(_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x4e')]){_0x381c37[_0x0a9e('0x4f')]=[{'all':!![]}];}return db[_0x0a9e('0x3b')][_0x0a9e('0x50')](_0x381c37);})[_0x0a9e('0x1d')](function(_0x5bbcde){_0x4f41ae[_0x0a9e('0x51')]=_0x5bbcde;return _0x4f41ae;})[_0x0a9e('0x1d')](respondWithFilteredResult(_0x3d9717,_0x381c37))[_0x0a9e('0x28')](handleError(_0x3d9717,null));};exports[_0x0a9e('0x52')]=function(_0x409789,_0x992c77){var _0x6054ee={'raw':!![],'where':{'id':_0x409789[_0x0a9e('0x53')]['id']}},_0x19383e={};_0x19383e['model']=_[_0x0a9e('0x3e')](db[_0x0a9e('0x3b')]['rawAttributes']);_0x19383e['query']=_['keys'](_0x409789[_0x0a9e('0x3f')]);_0x19383e[_0x0a9e('0x40')]=_[_0x0a9e('0x41')](_0x19383e[_0x0a9e('0x45')],_0x19383e[_0x0a9e('0x3f')]);_0x6054ee[_0x0a9e('0x42')]=_[_0x0a9e('0x41')](_0x19383e[_0x0a9e('0x45')],qs['fields'](_0x409789['query']['fields']));_0x6054ee[_0x0a9e('0x42')]=_0x6054ee[_0x0a9e('0x42')][_0x0a9e('0x44')]?_0x6054ee['attributes']:_0x19383e[_0x0a9e('0x45')];if(_0x409789[_0x0a9e('0x3f')]['includeAll']){_0x6054ee['include']=[{'all':!![]}];}_0x6054ee=_[_0x0a9e('0x4c')]({},_0x6054ee,_0x409789['options']);return db[_0x0a9e('0x3b')]['find'](_0x6054ee)[_0x0a9e('0x1d')](handleEntityNotFound(_0x992c77,null))[_0x0a9e('0x1d')](respondWithResult(_0x992c77,null))[_0x0a9e('0x28')](handleError(_0x992c77,null));};exports['create']=function(_0x2f82da,_0x1bf38a){return db['ChatMessage']['create'](_0x2f82da[_0x0a9e('0x54')],{})[_0x0a9e('0x1d')](respondWithResult(_0x1bf38a,0xc9))['catch'](handleError(_0x1bf38a,null));};exports[_0x0a9e('0x35')]=function(_0x5ce9ac,_0x211ef9){if(_0x5ce9ac['body']['id']){delete _0x5ce9ac[_0x0a9e('0x54')]['id'];}return db['ChatMessage']['find']({'where':{'id':_0x5ce9ac['params']['id']}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x211ef9,null))['then'](saveUpdates(_0x5ce9ac[_0x0a9e('0x54')],null))[_0x0a9e('0x1d')](respondWithResult(_0x211ef9,null))[_0x0a9e('0x28')](handleError(_0x211ef9,null));};exports[_0x0a9e('0x36')]=function(_0x232830,_0x272738){return db[_0x0a9e('0x3b')][_0x0a9e('0x55')]({'where':{'id':_0x232830['params']['id']}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x272738,null))[_0x0a9e('0x1d')](removeEntity(_0x272738,null))[_0x0a9e('0x28')](handleError(_0x272738,null));};exports[_0x0a9e('0x56')]=function(_0xb83dfd,_0x156662){return db['ChatMessage'][_0x0a9e('0x56')]()[_0x0a9e('0x1d')](respondWithResult(_0x156662,null))['catch'](handleError(_0x156662,null));};var interaction_log=require(_0x0a9e('0x57'))('chat-interactions');exports[_0x0a9e('0x58')]=function(_0x5ba1f9,_0x4b3c1a,_0x5674ee){var _0x273cb5={'agent':{},'channel':'chat'};if(_0x5ba1f9[_0x0a9e('0x54')]['id']){delete _0x5ba1f9[_0x0a9e('0x54')]['id'];}_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x59')]=!![];_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5a')]=moment()['format'](_0x0a9e('0x5b'));_0x5ba1f9['body'][_0x0a9e('0x5c')]=_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')]||_0x5ba1f9['user']['id'];_0x273cb5[_0x0a9e('0x5d')]['id']=_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')];return db[_0x0a9e('0x3b')]['find']({'where':{'id':_0x5ba1f9[_0x0a9e('0x53')]['id'],'UserId':null}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x4b3c1a,null))['then'](saveUpdates(_0x5ba1f9[_0x0a9e('0x54')],null))[_0x0a9e('0x1d')](function(_0x88dcbf){if(_0x88dcbf){_0x273cb5[_0x0a9e('0x26')]=_0x88dcbf[_0x0a9e('0x5e')]({'plain':!![]});return db['ChatInteraction'][_0x0a9e('0x55')]({'where':{'id':_0x88dcbf[_0x0a9e('0x5f')]}});}return null;})[_0x0a9e('0x1d')](handleEntityNotFound(_0x4b3c1a,null))['then'](function(_0x3528b7){if(_0x3528b7){return _0x3528b7['update']({'UserId':_0x5ba1f9['body'][_0x0a9e('0x5c')],'read1stAt':_[_0x0a9e('0x60')](_0x3528b7[_0x0a9e('0x61')])?moment()[_0x0a9e('0x62')](_0x0a9e('0x5b')):undefined});}return null;})[_0x0a9e('0x1d')](function(_0x387489){if(_0x387489){_0x273cb5[_0x0a9e('0x63')]=_0x387489[_0x0a9e('0x5e')]({'plain':!![]});interaction_log[_0x0a9e('0x1e')](_0x0a9e('0x64'),_0x5ba1f9[_0x0a9e('0x65')]['id'],_0x5ba1f9[_0x0a9e('0x65')][_0x0a9e('0x38')],_0x5ba1f9[_0x0a9e('0x65')][_0x0a9e('0x66')],_0x273cb5[_0x0a9e('0x63')]['id'],_0x5ba1f9[_0x0a9e('0x54')]?JSON['stringify'](_0x5ba1f9[_0x0a9e('0x54')]):_0x0a9e('0x67'));return respondWithRpcPromise(_0x0a9e('0x68'),'acceptMessage',_0x273cb5);}return null;})[_0x0a9e('0x1d')](function(_0x30944e){var _0x4b341d=_0x0a9e('0x69')+_0x30944e[_0x0a9e('0x26')][_0x0a9e('0x6a')];return db[_0x0a9e('0x6b')][_0x0a9e('0x3f')](_0x4b341d,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]})[_0x0a9e('0x1d')](function(_0x18bf5d){return _0x18bf5d;});})[_0x0a9e('0x1d')](function(_0x23a7d3){if(_0x23a7d3){_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x6c')]=_0x23a7d3[0x0];if(!_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')])return;return db['User'][_0x0a9e('0x55')]({'where':{'id':_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')],'role':'agent'},'attributes':['id',_0x0a9e('0x38'),'fullname',_0x0a9e('0x6d'),_0x0a9e('0x6e')],'raw':!![]});}return null;})['then'](function(_0x2ed01e){if(!_0x2ed01e)return null;_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x5d')]=_0x2ed01e;return _0x273cb5;})[_0x0a9e('0x1d')](function(_0x542ece){if(_0x542ece){if(_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x6f')]){_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x70')]=util['format'](_0x0a9e('0x71'),_0x5ba1f9[_0x0a9e('0x65')][_0x0a9e('0x38')]);_0x273cb5[_0x0a9e('0x26')]['channel']=_0x273cb5[_0x0a9e('0x72')];_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x73')]=_0x0a9e('0x58');return respondWithRpcPromise(_0x0a9e('0x74'),_0x0a9e('0x74'),{'event':_0x0a9e('0x75'),'message':_[_0x0a9e('0x4c')](_0x273cb5[_0x0a9e('0x26')],JSON[_0x0a9e('0x76')](_0x273cb5[_0x0a9e('0x63')][_0x0a9e('0x77')]))},client9002)[_0x0a9e('0x1d')](function(){return _0x273cb5;});}return _0x273cb5;}return null;})[_0x0a9e('0x1d')](respondWithResult(_0x4b3c1a,null))['catch'](handleError(_0x4b3c1a,null));};var interaction_log=require(_0x0a9e('0x57'))(_0x0a9e('0x78'));exports[_0x0a9e('0x33')]=function(_0x563627,_0x3736e0,_0x33dda0){var _0x8cea96={'agent':{},'channel':_0x0a9e('0x79')};if(_0x563627['body']['id']){delete _0x563627['body']['id'];}_0x563627[_0x0a9e('0x54')][_0x0a9e('0x5c')]=_0x563627['body'][_0x0a9e('0x5c')]||_0x563627['user']['id'];_0x8cea96[_0x0a9e('0x5d')]['id']=_0x563627[_0x0a9e('0x54')]['UserId'];return db[_0x0a9e('0x3b')][_0x0a9e('0x55')]({'where':{'id':_0x563627[_0x0a9e('0x53')]['id'],'UserId':null}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x3736e0,null))[_0x0a9e('0x1d')](function(_0x1f42a0){if(_0x1f42a0){_0x8cea96[_0x0a9e('0x26')]=_0x1f42a0['get']({'plain':!![]});return db[_0x0a9e('0x7a')][_0x0a9e('0x55')]({'where':{'id':_0x1f42a0[_0x0a9e('0x5f')]}});}return null;})[_0x0a9e('0x1d')](handleEntityNotFound(_0x3736e0,null))['then'](function(_0xf51744){if(_0xf51744){_0x8cea96[_0x0a9e('0x63')]=_0xf51744['get']({'plain':!![]});interaction_log[_0x0a9e('0x1e')]('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x563627[_0x0a9e('0x65')]['id'],_0x563627[_0x0a9e('0x65')][_0x0a9e('0x38')],_0x563627[_0x0a9e('0x65')]['role'],_0x8cea96['interaction']['id'],_0x563627[_0x0a9e('0x54')]?JSON[_0x0a9e('0x23')](_0x563627[_0x0a9e('0x54')]):'null');return respondWithRpcPromise(_0x0a9e('0x7b'),_0x0a9e('0x7c'),_0x8cea96);}return null;})['then'](function(_0x4e46b2){var _0xf0a802='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4e46b2['message']['ContactId'];return db[_0x0a9e('0x6b')][_0x0a9e('0x3f')](_0xf0a802,{'type':db[_0x0a9e('0x7d')][_0x0a9e('0x7e')][_0x0a9e('0x7f')],'raw':!![]})[_0x0a9e('0x1d')](function(_0x5a8854){return _0x5a8854;});})[_0x0a9e('0x1d')](function(_0x5955f1){if(_0x5955f1){_0x8cea96[_0x0a9e('0x26')][_0x0a9e('0x6c')]=_0x5955f1[0x0];if(!_0x563627[_0x0a9e('0x54')][_0x0a9e('0x5c')])return;return db['User'][_0x0a9e('0x55')]({'where':{'id':_0x563627[_0x0a9e('0x54')][_0x0a9e('0x5c')],'role':'agent'},'attributes':['id',_0x0a9e('0x38'),_0x0a9e('0x80'),_0x0a9e('0x6d'),_0x0a9e('0x6e')],'raw':!![]});}return null;})[_0x0a9e('0x1d')](function(_0x1910bf){if(!_0x1910bf)return null;_0x8cea96[_0x0a9e('0x26')][_0x0a9e('0x5d')]=_0x1910bf;return _0x8cea96;})['then'](function(_0x2645d6){if(_0x2645d6){_0x2645d6[_0x0a9e('0x26')]['interface']=util[_0x0a9e('0x62')](_0x0a9e('0x71'),_0x563627[_0x0a9e('0x65')]['name']);_0x2645d6[_0x0a9e('0x26')]['channel']=_0x8cea96[_0x0a9e('0x72')];_0x2645d6[_0x0a9e('0x26')][_0x0a9e('0x73')]=_0x0a9e('0x33');respondWithRpcPromise(_0x0a9e('0x74'),_0x0a9e('0x74'),{'event':_0x0a9e('0x81'),'message':_[_0x0a9e('0x4c')](_0x8cea96['message'],JSON[_0x0a9e('0x76')](_0x8cea96[_0x0a9e('0x63')][_0x0a9e('0x77')]))},client9002);return _0x8cea96;}return null;})[_0x0a9e('0x1d')](respondWithResult(_0x3736e0,null))[_0x0a9e('0x28')](handleError(_0x3736e0,null));};
\ No newline at end of file
index be4b494..a8ccc83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad3d=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x5b4ebf,_0x342f0f){var _0x1282be=function(_0x960c2b){while(--_0x960c2b){_0x5b4ebf['push'](_0x5b4ebf['shift']());}};_0x1282be(++_0x342f0f);}(_0xad3d,0x8e));var _0xdad3=function(_0x27a4a1,_0x135730){_0x27a4a1=_0x27a4a1-0x0;var _0x2871cd=_0xad3d[_0x27a4a1];return _0x2871cd;};'use strict';var EventEmitter=require(_0xdad3('0x0'));var ChatMessage=require(_0xdad3('0x1'))['db']['ChatMessage'];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0xdad3('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xdad3('0x3'),'afterDestroy':_0xdad3('0x4')};function emitEvent(_0x336e40){return function(_0x2d4955,_0x364406,_0x332ecc){ChatMessageEvents[_0xdad3('0x5')](_0x336e40+':'+_0x2d4955['id'],_0x2d4955);ChatMessageEvents['emit'](_0x336e40,_0x2d4955);_0x332ecc(null);};}for(var e in events){if(events[_0xdad3('0x6')](e)){var event=events[e];ChatMessage[_0xdad3('0x7')](e,emitEvent(event));}}module['exports']=ChatMessageEvents;
\ No newline at end of file
+var _0xe3cf=['update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','ChatMessage','setMaxListeners','save'];(function(_0x24b11c,_0x356378){var _0x349837=function(_0x37938f){while(--_0x37938f){_0x24b11c['push'](_0x24b11c['shift']());}};_0x349837(++_0x356378);}(_0xe3cf,0xce));var _0xfe3c=function(_0x2d9562,_0x5073fc){_0x2d9562=_0x2d9562-0x0;var _0x3d11c1=_0xe3cf[_0x2d9562];return _0x3d11c1;};'use strict';var EventEmitter=require('events');var ChatMessage=require(_0xfe3c('0x0'))['db'][_0xfe3c('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0xfe3c('0x2')](0x0);var events={'afterCreate':_0xfe3c('0x3'),'afterUpdate':_0xfe3c('0x4'),'afterDestroy':_0xfe3c('0x5')};function emitEvent(_0x32dbd7){return function(_0x7a565c,_0x1d0f83,_0x3ff64d){ChatMessageEvents[_0xfe3c('0x6')](_0x32dbd7+':'+_0x7a565c['id'],_0x7a565c);ChatMessageEvents[_0xfe3c('0x6')](_0x32dbd7,_0x7a565c);_0x3ff64d(null);};}for(var e in events){if(events[_0xfe3c('0x7')](e)){var event=events[e];ChatMessage[_0xfe3c('0x8')](e,emitEvent(event));}}module[_0xfe3c('0x9')]=ChatMessageEvents;
\ No newline at end of file
index f11f213..f5321eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fb6=['error','utf8mb4','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatMessage.attributes','exports','define','ChatMessage','chat_messages','fti_chat_messages','body','FULLTEXT','get','toLowerCase','out','isNil','UserId','ChatInteraction','ChatInteractionId','then','createdAt','direction','catch'];(function(_0xa3c06b,_0x490f99){var _0x33aa1d=function(_0x23a88e){while(--_0x23a88e){_0xa3c06b['push'](_0xa3c06b['shift']());}};_0x33aa1d(++_0x490f99);}(_0x0fb6,0x12e));var _0x60fb=function(_0x4794a5,_0x14490c){_0x4794a5=_0x4794a5-0x0;var _0x32646d=_0x0fb6[_0x4794a5];return _0x32646d;};'use strict';var _=require(_0x60fb('0x0'));var util=require('util');var logger=require(_0x60fb('0x1'))(_0x60fb('0x2'));var moment=require(_0x60fb('0x3'));var BPromise=require(_0x60fb('0x4'));var rp=require(_0x60fb('0x5'));var fs=require('fs');var path=require(_0x60fb('0x6'));var rimraf=require(_0x60fb('0x7'));var config=require(_0x60fb('0x8'));var attributes=require(_0x60fb('0x9'));module[_0x60fb('0xa')]=function(_0x590d67,_0x4c3da5){return _0x590d67[_0x60fb('0xb')](_0x60fb('0xc'),attributes,{'tableName':_0x60fb('0xd'),'paranoid':![],'indexes':[{'name':_0x60fb('0xe'),'fields':[_0x60fb('0xf')],'type':_0x60fb('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x22d172,_0x450996,_0x2f829d){var _0x5a1bc1=_0x590d67['models'];var _0x420bd8=_0x22d172[_0x60fb('0x11')]({'plain':!![]});if(_0x420bd8['direction']['toLowerCase']()==='in'||_0x420bd8['direction'][_0x60fb('0x12')]()===_0x60fb('0x13')&&!_0x420bd8['secret']&&!_[_0x60fb('0x14')](_0x420bd8[_0x60fb('0x15')])){_0x5a1bc1[_0x60fb('0x16')]['findOne']({'where':{'id':_0x420bd8[_0x60fb('0x17')]}})[_0x60fb('0x18')](function(_0x6d67d7){if(_0x6d67d7){_0x6d67d7['update']({'lastMsgAt':_0x420bd8[_0x60fb('0x19')],'lastMsgDirection':_0x420bd8[_0x60fb('0x1a')]['toLowerCase']()});}})[_0x60fb('0x1b')](function(_0x1b828d){console[_0x60fb('0x1c')](_0x1b828d);});}_0x2f829d();}},'charset':_0x60fb('0x1d'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x0869=['rimraf','../../config/environment','./chatMessage.attributes','define','chat_messages','body','FULLTEXT','models','direction','secret','isNil','ChatInteraction','findOne','ChatInteractionId','then','update','catch','error','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x3f8169,_0x540e58){var _0x1f527c=function(_0x1f6b4f){while(--_0x1f6b4f){_0x3f8169['push'](_0x3f8169['shift']());}};_0x1f527c(++_0x540e58);}(_0x0869,0xaf));var _0x9086=function(_0x85bcf9,_0x3953e2){_0x85bcf9=_0x85bcf9-0x0;var _0x42324c=_0x0869[_0x85bcf9];return _0x42324c;};'use strict';var _=require(_0x9086('0x0'));var util=require(_0x9086('0x1'));var logger=require(_0x9086('0x2'))(_0x9086('0x3'));var moment=require('moment');var BPromise=require(_0x9086('0x4'));var rp=require(_0x9086('0x5'));var fs=require('fs');var path=require(_0x9086('0x6'));var rimraf=require(_0x9086('0x7'));var config=require(_0x9086('0x8'));var attributes=require(_0x9086('0x9'));module['exports']=function(_0x330294,_0x3bd9f3){return _0x330294[_0x9086('0xa')]('ChatMessage',attributes,{'tableName':_0x9086('0xb'),'paranoid':![],'indexes':[{'name':'fti_chat_messages','fields':[_0x9086('0xc')],'type':_0x9086('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0xd45e64,_0x1edb3a,_0x107cc5){var _0x1b1fda=_0x330294[_0x9086('0xe')];var _0x43c230=_0xd45e64['get']({'plain':!![]});if(_0x43c230['direction']['toLowerCase']()==='in'||_0x43c230[_0x9086('0xf')]['toLowerCase']()==='out'&&!_0x43c230[_0x9086('0x10')]&&!_[_0x9086('0x11')](_0x43c230['UserId'])){_0x1b1fda[_0x9086('0x12')][_0x9086('0x13')]({'where':{'id':_0x43c230[_0x9086('0x14')]}})[_0x9086('0x15')](function(_0x4a4c04){if(_0x4a4c04){_0x4a4c04[_0x9086('0x16')]({'lastMsgAt':_0x43c230['createdAt'],'lastMsgDirection':_0x43c230['direction']['toLowerCase']()});}})[_0x9086('0x17')](function(_0x7616f1){console[_0x9086('0x18')](_0x7616f1);});}_0x107cc5();}},'charset':'utf8mb4','collate':_0x9086('0x19')});};
\ No newline at end of file
index df9517b..e4b641c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x323a=['ChatMessage','create','body','options','stringify','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','register','request','then','ChatMessage,\x20%s,\x20%s','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','CreateChatMessage'];(function(_0x26f702,_0x3919bf){var _0x11417d=function(_0x1aa3e8){while(--_0x1aa3e8){_0x26f702['push'](_0x26f702['shift']());}};_0x11417d(++_0x3919bf);}(_0x323a,0x68));var _0xa323=function(_0x21fc0a,_0x1c3a72){_0x21fc0a=_0x21fc0a-0x0;var _0x485574=_0x323a[_0x21fc0a];return _0x485574;};'use strict';var _=require('lodash');var util=require(_0xa323('0x0'));var moment=require(_0xa323('0x1'));var BPromise=require(_0xa323('0x2'));var rs=require(_0xa323('0x3'));var fs=require('fs');var Redis=require(_0xa323('0x4'));var db=require(_0xa323('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xa323('0x6'))('rpc');var config=require(_0xa323('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xa323('0x8')][_0xa323('0x9')]({'port':0x232a});config[_0xa323('0xa')]=_[_0xa323('0xb')](config[_0xa323('0xa')],{'host':_0xa323('0xc'),'port':0x18eb});var socket=require(_0xa323('0xd'))(new Redis(config[_0xa323('0xa')]));require(_0xa323('0xe'))[_0xa323('0xf')](socket);function respondWithRpcPromise(_0x44bb08,_0x4a916d,_0x3473ee){return new BPromise(function(_0x4bf2ef,_0x2bef3e){return client[_0xa323('0x10')](_0x44bb08,_0x3473ee)[_0xa323('0x11')](function(_0x28787b){logger['info'](_0xa323('0x12'),_0x4a916d,_0xa323('0x13'));logger['debug'](_0xa323('0x14'),_0x4a916d,_0xa323('0x13'),JSON['stringify'](_0x28787b));if(_0x28787b[_0xa323('0x15')]){if(_0x28787b[_0xa323('0x15')][_0xa323('0x16')]===0x1f4){logger[_0xa323('0x15')](_0xa323('0x12'),_0x4a916d,_0x28787b[_0xa323('0x15')]['message']);return _0x2bef3e(_0x28787b['error'][_0xa323('0x17')]);}logger[_0xa323('0x15')]('ChatMessage,\x20%s,\x20%s',_0x4a916d,_0x28787b[_0xa323('0x15')][_0xa323('0x17')]);return _0x4bf2ef(_0x28787b[_0xa323('0x15')]['message']);}else{logger[_0xa323('0x18')](_0xa323('0x12'),_0x4a916d,_0xa323('0x13'));_0x4bf2ef(_0x28787b[_0xa323('0x19')][_0xa323('0x17')]);}})[_0xa323('0x1a')](function(_0x4c2de7){logger[_0xa323('0x15')](_0xa323('0x12'),_0x4a916d,_0x4c2de7);_0x2bef3e(_0x4c2de7);});});}exports[_0xa323('0x1b')]=function(_0x3ea7b7){var _0x3b98e8=this;return new Promise(function(_0x351700,_0x11f3a8){return db[_0xa323('0x1c')][_0xa323('0x1d')](_0x3ea7b7[_0xa323('0x1e')],{'raw':_0x3ea7b7[_0xa323('0x1f')]?_0x3ea7b7[_0xa323('0x1f')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x2b810b){logger[_0xa323('0x18')](_0xa323('0x1b'),_0x3ea7b7);logger['debug'](_0xa323('0x1b'),_0x3ea7b7,JSON[_0xa323('0x20')](_0x2b810b));_0x351700(_0x2b810b);})['catch'](function(_0xd3d439){logger[_0xa323('0x15')](_0xa323('0x1b'),_0xd3d439[_0xa323('0x17')],_0x3ea7b7);_0x11f3a8(_0x3b98e8[_0xa323('0x15')](0x1f4,_0xd3d439['message']));});});};
\ No newline at end of file
+var _0x7753=['bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./chatMessage.socket','register','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','CreateChatMessage','ChatMessage','create','options','raw','lodash','util','moment'];(function(_0x39772f,_0x5605cb){var _0xc9edbf=function(_0x106a39){while(--_0x106a39){_0x39772f['push'](_0x39772f['shift']());}};_0xc9edbf(++_0x5605cb);}(_0x7753,0xfd));var _0x3775=function(_0x5806c3,_0x5105d8){_0x5806c3=_0x5806c3-0x0;var _0x48ac77=_0x7753[_0x5806c3];return _0x48ac77;};'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')]('ChatMessage,\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);});});}exports[_0x3775('0x1b')]=function(_0x6974b9){var _0x39f873=this;return new Promise(function(_0x43d3b4,_0x4aa5b7){return db[_0x3775('0x1c')][_0x3775('0x1d')](_0x6974b9['body'],{'raw':_0x6974b9[_0x3775('0x1e')]?_0x6974b9[_0x3775('0x1e')][_0x3775('0x1f')]===undefined?!![]:![]:!![]})[_0x3775('0x11')](function(_0x58affa){logger['info'](_0x3775('0x1b'),_0x6974b9);logger[_0x3775('0x15')](_0x3775('0x1b'),_0x6974b9,JSON['stringify'](_0x58affa));_0x43d3b4(_0x58affa);})['catch'](function(_0xb7222){logger[_0x3775('0x16')](_0x3775('0x1b'),_0xb7222['message'],_0x6974b9);_0x4aa5b7(_0x39f873[_0x3775('0x16')](0x1f4,_0xb7222[_0x3775('0x18')]));});});};
\ No newline at end of file
index c0156e2..640523b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0dee=['chatMessage:','./chatMessage.events','save','update','removeListener','length'];(function(_0x12aa03,_0x2c2acf){var _0x323b86=function(_0x209c35){while(--_0x209c35){_0x12aa03['push'](_0x12aa03['shift']());}};_0x323b86(++_0x2c2acf);}(_0x0dee,0xf7));var _0xe0de=function(_0x33b645,_0x2486c3){_0x33b645=_0x33b645-0x0;var _0x5bb4bd=_0x0dee[_0x33b645];return _0x5bb4bd;};'use strict';var ChatMessageEvents=require(_0xe0de('0x0'));var events=[_0xe0de('0x1'),'remove',_0xe0de('0x2')];function createListener(_0x584824,_0x30c586){return function(_0x41edf0){_0x30c586['emit'](_0x584824,_0x41edf0);};}function removeListener(_0x2df224,_0x345364){return function(){ChatMessageEvents[_0xe0de('0x3')](_0x2df224,_0x345364);};}exports['register']=function(_0x2fc94c){for(var _0x4957d7=0x0,_0xfe1fd9=events[_0xe0de('0x4')];_0x4957d7<_0xfe1fd9;_0x4957d7++){var _0x349fd2=events[_0x4957d7];var _0x5b644c=createListener(_0xe0de('0x5')+_0x349fd2,_0x2fc94c);ChatMessageEvents['on'](_0x349fd2,_0x5b644c);}};
\ No newline at end of file
+var _0xa41a=['emit','removeListener','./chatMessage.events','save','update'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0xa41a,0x6b));var _0xaa41=function(_0x2bfc14,_0x126a00){_0x2bfc14=_0x2bfc14-0x0;var _0x49260d=_0xa41a[_0x2bfc14];return _0x49260d;};'use strict';var ChatMessageEvents=require(_0xaa41('0x0'));var events=[_0xaa41('0x1'),'remove',_0xaa41('0x2')];function createListener(_0x2a96ba,_0x43654a){return function(_0xc5ce74){_0x43654a[_0xaa41('0x3')](_0x2a96ba,_0xc5ce74);};}function removeListener(_0x3168be,_0x42896b){return function(){ChatMessageEvents[_0xaa41('0x4')](_0x3168be,_0x42896b);};}exports['register']=function(_0x2122a0){for(var _0x1ec9d4=0x0,_0x54bc5a=events['length'];_0x1ec9d4<_0x54bc5a;_0x1ec9d4++){var _0x179545=events[_0x1ec9d4];var _0x202cce=createListener('chatMessage:'+_0x179545,_0x2122a0);ChatMessageEvents['on'](_0x179545,_0x202cce);}};
\ No newline at end of file
index 24aeb46..3ee549c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe20e=['put','/:id','update','/:id/accept','accept','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','./chatMessage.controller','get','/describe','isAuthenticated','show','post','tracked','chat','create'];(function(_0x1bcd86,_0xa1dcc){var _0x3c0526=function(_0x515382){while(--_0x515382){_0x1bcd86['push'](_0x1bcd86['shift']());}};_0x3c0526(++_0xa1dcc);}(_0xe20e,0x1e8));var _0xee20=function(_0x58c56a,_0x40d9e4){_0x58c56a=_0x58c56a-0x0;var _0x4f83d0=_0xe20e[_0x58c56a];return _0x4f83d0;};'use strict';var multer=require(_0xee20('0x0'));var util=require(_0xee20('0x1'));var path=require(_0xee20('0x2'));var timeout=require(_0xee20('0x3'));var express=require(_0xee20('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xee20('0x5'));var interaction=require(_0xee20('0x6'));var config=require('../../config/environment');var controller=require(_0xee20('0x7'));router[_0xee20('0x8')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xee20('0x9'),auth[_0xee20('0xa')](),controller['describe']);router['get']('/:id',auth[_0xee20('0xa')](),controller[_0xee20('0xb')]);router[_0xee20('0xc')]('/',auth[_0xee20('0xa')](),interaction[_0xee20('0xd')](_0xee20('0xe'),'chatmessage:create'),controller[_0xee20('0xf')]);router[_0xee20('0x10')](_0xee20('0x11'),controller[_0xee20('0x12')]);router['put'](_0xee20('0x13'),auth[_0xee20('0xa')](),controller[_0xee20('0x14')]);router[_0xee20('0x10')]('/:id/reject',auth[_0xee20('0xa')](),controller['reject']);router[_0xee20('0x15')](_0xee20('0x11'),auth['isAuthenticated'](),controller[_0xee20('0x16')]);module[_0xee20('0x17')]=router;
\ No newline at end of file
+var _0x707b=['/:id/accept','/:id/reject','reject','destroy','exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','tracked','chat','chatmessage:create','create','put'];(function(_0x304c70,_0x599404){var _0x74595=function(_0x5c4ee3){while(--_0x5c4ee3){_0x304c70['push'](_0x304c70['shift']());}};_0x74595(++_0x599404);}(_0x707b,0x165));var _0xb707=function(_0x15833e,_0x58a046){_0x15833e=_0x15833e-0x0;var _0x5c4745=_0x707b[_0x15833e];return _0x5c4745;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xb707('0x0'));var timeout=require(_0xb707('0x1'));var express=require('express');var router=express[_0xb707('0x2')]();var fs_extra=require(_0xb707('0x3'));var auth=require(_0xb707('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xb707('0x5'));var controller=require('./chatMessage.controller');router[_0xb707('0x6')]('/',auth[_0xb707('0x7')](),controller['index']);router['get'](_0xb707('0x8'),auth[_0xb707('0x7')](),controller[_0xb707('0x9')]);router[_0xb707('0x6')](_0xb707('0xa'),auth['isAuthenticated'](),controller[_0xb707('0xb')]);router['post']('/',auth[_0xb707('0x7')](),interaction[_0xb707('0xc')](_0xb707('0xd'),_0xb707('0xe')),controller[_0xb707('0xf')]);router['put']('/:id',controller['update']);router[_0xb707('0x10')](_0xb707('0x11'),auth[_0xb707('0x7')](),controller['accept']);router['put'](_0xb707('0x12'),auth[_0xb707('0x7')](),controller[_0xb707('0x13')]);router['delete']('/:id',auth[_0xb707('0x7')](),controller[_0xb707('0x14')]);module[_0xb707('0x15')]=router;
\ No newline at end of file
index 26d72f2..620c63c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe82b=['medium','sequelize','exports','TEXT'];(function(_0x305c31,_0x466b17){var _0x17f39f=function(_0x53ae03){while(--_0x53ae03){_0x305c31['push'](_0x305c31['shift']());}};_0x17f39f(++_0x466b17);}(_0xe82b,0xb9));var _0xbe82=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xe82b[_0xae7c2f];return _0x5d7001;};'use strict';var Sequelize=require(_0xbe82('0x0'));module[_0xbe82('0x1')]={'body':{'type':Sequelize[_0xbe82('0x2')](_0xbe82('0x3')),'allowNull':![]}};
\ No newline at end of file
+var _0x2b14=['medium','sequelize','TEXT'];(function(_0x2962d5,_0x38deda){var _0x273406=function(_0x3e0775){while(--_0x3e0775){_0x2962d5['push'](_0x2962d5['shift']());}};_0x273406(++_0x38deda);}(_0x2b14,0x13f));var _0x42b1=function(_0x215772,_0x52e22a){_0x215772=_0x215772-0x0;var _0x4c2adc=_0x2b14[_0x215772];return _0x4c2adc;};'use strict';var Sequelize=require(_0x42b1('0x0'));module['exports']={'body':{'type':Sequelize[_0x42b1('0x1')](_0x42b1('0x2')),'allowNull':![]}};
\ No newline at end of file
index 59f1a0d..fd5f81a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['filter','VIRTUAL','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','body','Attachment','join','server','attachments','offline-chat','basename','remove','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','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','index','ChatOfflineMessage','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x187ee1,_0x3fd1e6){var _0x388160=function(_0x542dd2){while(--_0x542dd2){_0x187ee1['push'](_0x187ee1['shift']());}};_0x388160(++_0x3fd1e6);}(_0x7a54,0x106));var _0x47a5=function(_0x4794d9,_0x370f84){_0x4794d9=_0x4794d9-0x0;var _0x48c533=_0x7a54[_0x4794d9];return _0x48c533;};'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('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['ChatOfflineMessage'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['ChatOfflineMessage']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['ChatOfflineMessage']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x48')][_0x47a5('0x3e')]({'where':{'ChatOfflineMessageId':_0x2dd1db[_0x47a5('0x41')]['id']},'raw':!![]})[_0x47a5('0x23')](function(_0x249de5){_0x249de5['forEach'](function(_0x45cca5){var _0x1c9a62=path[_0x47a5('0x49')](config['root'],_0x47a5('0x4a'),'files',_0x47a5('0x4b'),_0x47a5('0x4c'),_0x45cca5[_0x47a5('0x4d')]);var _0xf03bd5=fs['existsSync'](_0x1c9a62);if(_0xf03bd5)fs_extra[_0x47a5('0x4e')](_0x1c9a62);});})[_0x47a5('0x23')](function(){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']},'individualHooks':!![]});})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};exports[_0x47a5('0x4f')]=function(_0x43721b,_0x187d7e){return db[_0x47a5('0x2a')][_0x47a5('0x4f')]()[_0x47a5('0x23')](respondWithResult(_0x187d7e,null))['catch'](handleError(_0x187d7e,null));};
\ No newline at end of file
+var _0x7a54=['filter','VIRTUAL','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','body','Attachment','join','server','attachments','offline-chat','basename','remove','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','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','index','ChatOfflineMessage','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x37c22c,_0x28a70d){var _0x119d79=function(_0x243a13){while(--_0x243a13){_0x37c22c['push'](_0x37c22c['shift']());}};_0x119d79(++_0x28a70d);}(_0x7a54,0x106));var _0x47a5=function(_0x47b893,_0x9e44b){_0x47b893=_0x47b893-0x0;var _0x1968e1=_0x7a54[_0x47b893];return _0x1968e1;};'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('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['ChatOfflineMessage'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['ChatOfflineMessage']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['ChatOfflineMessage']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x48')][_0x47a5('0x3e')]({'where':{'ChatOfflineMessageId':_0x2dd1db[_0x47a5('0x41')]['id']},'raw':!![]})[_0x47a5('0x23')](function(_0x249de5){_0x249de5['forEach'](function(_0x45cca5){var _0x1c9a62=path[_0x47a5('0x49')](config['root'],_0x47a5('0x4a'),'files',_0x47a5('0x4b'),_0x47a5('0x4c'),_0x45cca5[_0x47a5('0x4d')]);var _0xf03bd5=fs['existsSync'](_0x1c9a62);if(_0xf03bd5)fs_extra[_0x47a5('0x4e')](_0x1c9a62);});})[_0x47a5('0x23')](function(){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']},'individualHooks':!![]});})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};exports[_0x47a5('0x4f')]=function(_0x43721b,_0x187d7e){return db[_0x47a5('0x2a')][_0x47a5('0x4f')]()[_0x47a5('0x23')](respondWithResult(_0x187d7e,null))['catch'](handleError(_0x187d7e,null));};
\ No newline at end of file
index 16c3dc4..ffdddac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cc8=['../../config/logger','api','request-promise','path','../../config/environment','exports','ChatOfflineMessage','utf8mb4','utf8mb4_unicode_ci','lodash','util'];(function(_0x181518,_0x477b59){var _0x349052=function(_0x532f8f){while(--_0x532f8f){_0x181518['push'](_0x181518['shift']());}};_0x349052(++_0x477b59);}(_0x4cc8,0x82));var _0x84cc=function(_0x5dec70,_0x581b95){_0x5dec70=_0x5dec70-0x0;var _0x153361=_0x4cc8[_0x5dec70];return _0x153361;};'use strict';var _=require(_0x84cc('0x0'));var util=require(_0x84cc('0x1'));var logger=require(_0x84cc('0x2'))(_0x84cc('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x84cc('0x4'));var fs=require('fs');var path=require(_0x84cc('0x5'));var rimraf=require('rimraf');var config=require(_0x84cc('0x6'));var attributes=require('./chatOfflineMessage.attributes');module[_0x84cc('0x7')]=function(_0x3fb950,_0x34fe09){return _0x3fb950['define'](_0x84cc('0x8'),attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x84cc('0x9'),'collate':_0x84cc('0xa')});};
\ No newline at end of file
+var _0x5ef9=['rimraf','exports','define','ChatOfflineMessage','utf8mb4','lodash','../../config/logger','moment','bluebird'];(function(_0x13639d,_0x3c996b){var _0x52ef14=function(_0x3faf51){while(--_0x3faf51){_0x13639d['push'](_0x13639d['shift']());}};_0x52ef14(++_0x3c996b);}(_0x5ef9,0xdd));var _0x95ef=function(_0x5a3cf0,_0x160a68){_0x5a3cf0=_0x5a3cf0-0x0;var _0x5a64ee=_0x5ef9[_0x5a3cf0];return _0x5a64ee;};'use strict';var _=require(_0x95ef('0x0'));var util=require('util');var logger=require(_0x95ef('0x1'))('api');var moment=require(_0x95ef('0x2'));var BPromise=require(_0x95ef('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x95ef('0x4'));var config=require('../../config/environment');var attributes=require('./chatOfflineMessage.attributes');module[_0x95ef('0x5')]=function(_0x34e538,_0x501b0b){return _0x34e538[_0x95ef('0x6')](_0x95ef('0x7'),attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x95ef('0x8'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 337b8d7..c0422d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc03e=['catch','lodash','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x3c7d53,_0x2826d0){var _0x2c8387=function(_0x21f0e8){while(--_0x21f0e8){_0x3c7d53['push'](_0x3c7d53['shift']());}};_0x2c8387(++_0x2826d0);}(_0xc03e,0x15a));var _0xec03=function(_0xe7d07d,_0x52e4e3){_0xe7d07d=_0xe7d07d-0x0;var _0x229e46=_0xc03e[_0xe7d07d];return _0x229e46;};'use strict';var _=require(_0xec03('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xec03('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xec03('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xec03('0x3'));var logger=require(_0xec03('0x4'))(_0xec03('0x5'));var config=require(_0xec03('0x6'));var jayson=require(_0xec03('0x7'));var client=jayson[_0xec03('0x8')][_0xec03('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xcaaf03,_0x278f90,_0x529ebd){return new BPromise(function(_0x4205e9,_0xb0638e){return client[_0xec03('0xa')](_0xcaaf03,_0x529ebd)[_0xec03('0xb')](function(_0x4d7e09){logger[_0xec03('0xc')](_0xec03('0xd'),_0x278f90,_0xec03('0xe'));logger[_0xec03('0xf')](_0xec03('0x10'),_0x278f90,_0xec03('0xe'),JSON[_0xec03('0x11')](_0x4d7e09));if(_0x4d7e09[_0xec03('0x12')]){if(_0x4d7e09['error'][_0xec03('0x13')]===0x1f4){logger[_0xec03('0x12')](_0xec03('0xd'),_0x278f90,_0x4d7e09[_0xec03('0x12')][_0xec03('0x14')]);return _0xb0638e(_0x4d7e09[_0xec03('0x12')][_0xec03('0x14')]);}logger[_0xec03('0x12')]('ChatOfflineMessage,\x20%s,\x20%s',_0x278f90,_0x4d7e09['error']['message']);return _0x4205e9(_0x4d7e09[_0xec03('0x12')][_0xec03('0x14')]);}else{logger[_0xec03('0xc')](_0xec03('0xd'),_0x278f90,_0xec03('0xe'));_0x4205e9(_0x4d7e09[_0xec03('0x15')][_0xec03('0x14')]);}})[_0xec03('0x16')](function(_0x5c2f1a){logger[_0xec03('0x12')]('ChatOfflineMessage,\x20%s,\x20%s',_0x278f90,_0x5c2f1a);_0xb0638e(_0x5c2f1a);});});}
\ No newline at end of file
+var _0xa992=['http','request','then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x27b834,_0x21e37e){var _0x34b47c=function(_0x70dabc){while(--_0x70dabc){_0x27b834['push'](_0x27b834['shift']());}};_0x34b47c(++_0x21e37e);}(_0xa992,0x18c));var _0x2a99=function(_0x291c7f,_0x17b1e5){_0x291c7f=_0x291c7f-0x0;var _0x5ee1bf=_0xa992[_0x291c7f];return _0x5ee1bf;};'use strict';var _=require(_0x2a99('0x0'));var util=require(_0x2a99('0x1'));var moment=require(_0x2a99('0x2'));var BPromise=require(_0x2a99('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2a99('0x4'));var db=require(_0x2a99('0x5'))['db'];var utils=require(_0x2a99('0x6'));var logger=require(_0x2a99('0x7'))(_0x2a99('0x8'));var config=require(_0x2a99('0x9'));var jayson=require(_0x2a99('0xa'));var client=jayson[_0x2a99('0xb')][_0x2a99('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x9325b0,_0x483fb7,_0x365583){return new BPromise(function(_0x3b6f29,_0x3edcfc){return client[_0x2a99('0xd')](_0x9325b0,_0x365583)[_0x2a99('0xe')](function(_0x243164){logger[_0x2a99('0xf')](_0x2a99('0x10'),_0x483fb7,_0x2a99('0x11'));logger[_0x2a99('0x12')](_0x2a99('0x13'),_0x483fb7,'request\x20sent',JSON['stringify'](_0x243164));if(_0x243164[_0x2a99('0x14')]){if(_0x243164[_0x2a99('0x14')][_0x2a99('0x15')]===0x1f4){logger[_0x2a99('0x14')](_0x2a99('0x10'),_0x483fb7,_0x243164[_0x2a99('0x14')]['message']);return _0x3edcfc(_0x243164[_0x2a99('0x14')][_0x2a99('0x16')]);}logger[_0x2a99('0x14')](_0x2a99('0x10'),_0x483fb7,_0x243164[_0x2a99('0x14')]['message']);return _0x3b6f29(_0x243164[_0x2a99('0x14')]['message']);}else{logger['info'](_0x2a99('0x10'),_0x483fb7,_0x2a99('0x11'));_0x3b6f29(_0x243164[_0x2a99('0x17')]['message']);}})['catch'](function(_0x55d1f0){logger[_0x2a99('0x14')](_0x2a99('0x10'),_0x483fb7,_0x55d1f0);_0x3edcfc(_0x55d1f0);});});}
\ No newline at end of file
index d0d8d49..2757c80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ed8=['destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','post','create','put','delete'];(function(_0x3faab8,_0x3ef854){var _0x4fc15e=function(_0x471cf3){while(--_0x471cf3){_0x3faab8['push'](_0x3faab8['shift']());}};_0x4fc15e(++_0x3ef854);}(_0x0ed8,0x70));var _0x80ed=function(_0x5847ad,_0x1dcff6){_0x5847ad=_0x5847ad-0x0;var _0x5c565c=_0x0ed8[_0x5847ad];return _0x5c565c;};'use strict';var multer=require(_0x80ed('0x0'));var util=require(_0x80ed('0x1'));var path=require(_0x80ed('0x2'));var timeout=require('connect-timeout');var express=require(_0x80ed('0x3'));var router=express[_0x80ed('0x4')]();var fs_extra=require(_0x80ed('0x5'));var auth=require(_0x80ed('0x6'));var interaction=require(_0x80ed('0x7'));var config=require(_0x80ed('0x8'));var controller=require(_0x80ed('0x9'));router[_0x80ed('0xa')]('/',auth[_0x80ed('0xb')](),controller[_0x80ed('0xc')]);router[_0x80ed('0xa')](_0x80ed('0xd'),auth[_0x80ed('0xb')](),controller[_0x80ed('0xe')]);router[_0x80ed('0xa')](_0x80ed('0xf'),auth[_0x80ed('0xb')](),controller['show']);router[_0x80ed('0x10')]('/',auth[_0x80ed('0xb')](),controller[_0x80ed('0x11')]);router[_0x80ed('0x12')]('/:id',auth[_0x80ed('0xb')](),controller['update']);router[_0x80ed('0x13')](_0x80ed('0xf'),auth[_0x80ed('0xb')](),controller[_0x80ed('0x14')]);module[_0x80ed('0x15')]=router;
\ No newline at end of file
+var _0x07ae=['create','put','delete','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatOfflineMessage.controller','get','isAuthenticated','/describe','describe','/:id','show','post'];(function(_0x334841,_0x2bbc4c){var _0x5beb4b=function(_0x4bea72){while(--_0x4bea72){_0x334841['push'](_0x334841['shift']());}};_0x5beb4b(++_0x2bbc4c);}(_0x07ae,0x1a6));var _0xe07a=function(_0x5d0260,_0x3ffa21){_0x5d0260=_0x5d0260-0x0;var _0x58b075=_0x07ae[_0x5d0260];return _0x58b075;};'use strict';var multer=require('multer');var util=require(_0xe07a('0x0'));var path=require(_0xe07a('0x1'));var timeout=require('connect-timeout');var express=require(_0xe07a('0x2'));var router=express[_0xe07a('0x3')]();var fs_extra=require(_0xe07a('0x4'));var auth=require(_0xe07a('0x5'));var interaction=require(_0xe07a('0x6'));var config=require('../../config/environment');var controller=require(_0xe07a('0x7'));router[_0xe07a('0x8')]('/',auth[_0xe07a('0x9')](),controller['index']);router[_0xe07a('0x8')](_0xe07a('0xa'),auth[_0xe07a('0x9')](),controller[_0xe07a('0xb')]);router[_0xe07a('0x8')](_0xe07a('0xc'),auth[_0xe07a('0x9')](),controller[_0xe07a('0xd')]);router[_0xe07a('0xe')]('/',auth[_0xe07a('0x9')](),controller[_0xe07a('0xf')]);router[_0xe07a('0x10')](_0xe07a('0xc'),auth[_0xe07a('0x9')](),controller['update']);router[_0xe07a('0x11')](_0xe07a('0xc'),auth[_0xe07a('0x9')](),controller['destroy']);module[_0xe07a('0x12')]=router;
\ No newline at end of file
index 4cbeff6..8eb222d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd838=['timeout','STRING','INTEGER','sequelize','exports','ENUM','mouseOver'];(function(_0x2c3957,_0x222c30){var _0x3a3524=function(_0x3fca8a){while(--_0x3fca8a){_0x2c3957['push'](_0x2c3957['shift']());}};_0x3a3524(++_0x222c30);}(_0xd838,0xff));var _0x8d83=function(_0x39dbf8,_0x37113d){_0x39dbf8=_0x39dbf8-0x0;var _0x399db6=_0xd838[_0x39dbf8];return _0x399db6;};'use strict';var Sequelize=require(_0x8d83('0x0'));module[_0x8d83('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x8d83('0x2')](_0x8d83('0x3'),_0x8d83('0x4')),'defaultValue':_0x8d83('0x3')},'selector':{'type':Sequelize[_0x8d83('0x5')]},'timeout':{'type':Sequelize[_0x8d83('0x6')]}};
\ No newline at end of file
+var _0xb0da=['exports','STRING','ENUM','mouseOver'];(function(_0x5dca3b,_0x1fdac5){var _0x585514=function(_0x5ec8b3){while(--_0x5ec8b3){_0x5dca3b['push'](_0x5dca3b['shift']());}};_0x585514(++_0x1fdac5);}(_0xb0da,0x6c));var _0xab0d=function(_0x2af71e,_0x4e23c8){_0x2af71e=_0x2af71e-0x0;var _0x24564f=_0xb0da[_0x2af71e];return _0x24564f;};'use strict';var Sequelize=require('sequelize');module[_0xab0d('0x0')]={'name':{'type':Sequelize[_0xab0d('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xab0d('0x2')](_0xab0d('0x3'),'timeout'),'defaultValue':_0xab0d('0x3')},'selector':{'type':Sequelize[_0xab0d('0x1')]},'timeout':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 5c632b4..35848f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7ce=['../../config/environment','sendStatus','status','offset','undefined','limit','count','json','apply','save','update','then','destroy','error','stack','name','show','keys','ChatProactiveAction','query','intersection','model','fields','attributes','length','includeAll','include','options','catch','create','body','params','find','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x611df1,_0x28e5be){var _0x488168=function(_0x2f40bb){while(--_0x2f40bb){_0x611df1['push'](_0x611df1['shift']());}};_0x488168(++_0x28e5be);}(_0xd7ce,0x16b));var _0xed7c=function(_0x1c0f41,_0x26d95d){_0x1c0f41=_0x1c0f41-0x0;var _0x369a9f=_0xd7ce[_0x1c0f41];return _0x369a9f;};'use strict';var emlformat=require(_0xed7c('0x0'));var rimraf=require(_0xed7c('0x1'));var zipdir=require(_0xed7c('0x2'));var jsonpatch=require(_0xed7c('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xed7c('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xed7c('0x5'));var csv=require(_0xed7c('0x6'));var ejs=require(_0xed7c('0x7'));var fs=require('fs');var fs_extra=require(_0xed7c('0x8'));var _=require(_0xed7c('0x9'));var squel=require(_0xed7c('0xa'));var crypto=require(_0xed7c('0xb'));var jsforce=require(_0xed7c('0xc'));var deskjs=require(_0xed7c('0xd'));var toCsv=require(_0xed7c('0x6'));var querystring=require(_0xed7c('0xe'));var Papa=require(_0xed7c('0xf'));var Redis=require('ioredis');var authService=require(_0xed7c('0x10'));var qs=require(_0xed7c('0x11'));var as=require(_0xed7c('0x12'));var hardwareService=require(_0xed7c('0x13'));var logger=require(_0xed7c('0x14'))(_0xed7c('0x15'));var utils=require('../../config/utils');var config=require(_0xed7c('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4e104b,_0x3519bb){_0x3519bb=_0x3519bb||0xcc;return function(_0x24a769){if(_0x24a769){return _0x4e104b[_0xed7c('0x17')](_0x3519bb);}return _0x4e104b['status'](_0x3519bb)['end']();};}function respondWithResult(_0x92d778,_0x498838){_0x498838=_0x498838||0xc8;return function(_0x4400a1){if(_0x4400a1){return _0x92d778[_0xed7c('0x18')](_0x498838)['json'](_0x4400a1);}};}function respondWithFilteredResult(_0x352cb,_0x2b0c33){return function(_0x4f3f3e){if(_0x4f3f3e){var _0x513ea6=typeof _0x2b0c33[_0xed7c('0x19')]===_0xed7c('0x1a')&&typeof _0x2b0c33[_0xed7c('0x1b')]==='undefined';var _0x575651=_0x4f3f3e[_0xed7c('0x1c')];var _0x125447=_0x513ea6?0x0:_0x2b0c33[_0xed7c('0x19')];var _0x1be073=_0x513ea6?_0x4f3f3e[_0xed7c('0x1c')]:_0x2b0c33[_0xed7c('0x19')]+_0x2b0c33[_0xed7c('0x1b')];var _0x3f817a;if(_0x1be073>=_0x575651){_0x1be073=_0x575651;_0x3f817a=0xc8;}else{_0x3f817a=0xce;}_0x352cb[_0xed7c('0x18')](_0x3f817a);return _0x352cb['set']('Content-Range',_0x125447+'-'+_0x1be073+'/'+_0x575651)[_0xed7c('0x1d')](_0x4f3f3e);}return null;};}function patchUpdates(_0x593652){return function(_0xb5f7f9){try{jsonpatch[_0xed7c('0x1e')](_0xb5f7f9,_0x593652,!![]);}catch(_0x13fe87){return BPromise['reject'](_0x13fe87);}return _0xb5f7f9[_0xed7c('0x1f')]();};}function saveUpdates(_0x442946,_0x2b4043){return function(_0x177cdf){if(_0x177cdf){return _0x177cdf[_0xed7c('0x20')](_0x442946)[_0xed7c('0x21')](function(_0x2c821b){return _0x2c821b;});}return null;};}function removeEntity(_0x2ec187,_0x2a72d9){return function(_0x10e1e1){if(_0x10e1e1){return _0x10e1e1[_0xed7c('0x22')]()[_0xed7c('0x21')](function(){_0x2ec187['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5d20e6,_0x453257){return function(_0x3c03a2){if(!_0x3c03a2){_0x5d20e6[_0xed7c('0x17')](0x194);}return _0x3c03a2;};}function handleError(_0x3923e4,_0x28a010){_0x28a010=_0x28a010||0x1f4;return function(_0xb37289){logger[_0xed7c('0x23')](_0xb37289[_0xed7c('0x24')]);if(_0xb37289[_0xed7c('0x25')]){delete _0xb37289[_0xed7c('0x25')];}_0x3923e4[_0xed7c('0x18')](_0x28a010)['send'](_0xb37289);};}exports[_0xed7c('0x26')]=function(_0x1cf8d2,_0xfd8117){var _0x33e027={'raw':!![],'where':{'id':_0x1cf8d2['params']['id']}},_0x12ec4e={};_0x12ec4e['model']=_[_0xed7c('0x27')](db[_0xed7c('0x28')]['rawAttributes']);_0x12ec4e[_0xed7c('0x29')]=_[_0xed7c('0x27')](_0x1cf8d2['query']);_0x12ec4e['filters']=_[_0xed7c('0x2a')](_0x12ec4e[_0xed7c('0x2b')],_0x12ec4e[_0xed7c('0x29')]);_0x33e027['attributes']=_[_0xed7c('0x2a')](_0x12ec4e['model'],qs[_0xed7c('0x2c')](_0x1cf8d2[_0xed7c('0x29')]['fields']));_0x33e027[_0xed7c('0x2d')]=_0x33e027['attributes'][_0xed7c('0x2e')]?_0x33e027[_0xed7c('0x2d')]:_0x12ec4e[_0xed7c('0x2b')];if(_0x1cf8d2[_0xed7c('0x29')][_0xed7c('0x2f')]){_0x33e027[_0xed7c('0x30')]=[{'all':!![]}];}_0x33e027=_['merge']({},_0x33e027,_0x1cf8d2[_0xed7c('0x31')]);return db['ChatProactiveAction']['find'](_0x33e027)[_0xed7c('0x21')](handleEntityNotFound(_0xfd8117,null))['then'](respondWithResult(_0xfd8117,null))[_0xed7c('0x32')](handleError(_0xfd8117,null));};exports[_0xed7c('0x33')]=function(_0x11ba1c,_0x56a4a5){return db[_0xed7c('0x28')][_0xed7c('0x33')](_0x11ba1c[_0xed7c('0x34')],{})[_0xed7c('0x21')](respondWithResult(_0x56a4a5,0xc9))['catch'](handleError(_0x56a4a5,null));};exports[_0xed7c('0x20')]=function(_0xe27900,_0x1fca4f){if(_0xe27900[_0xed7c('0x34')]['id']){delete _0xe27900['body']['id'];}return db[_0xed7c('0x28')]['find']({'where':{'id':_0xe27900[_0xed7c('0x35')]['id']}})[_0xed7c('0x21')](handleEntityNotFound(_0x1fca4f,null))[_0xed7c('0x21')](saveUpdates(_0xe27900[_0xed7c('0x34')],null))[_0xed7c('0x21')](respondWithResult(_0x1fca4f,null))[_0xed7c('0x32')](handleError(_0x1fca4f,null));};exports[_0xed7c('0x22')]=function(_0x5d4a94,_0x5c55cb){return db['ChatProactiveAction'][_0xed7c('0x36')]({'where':{'id':_0x5d4a94[_0xed7c('0x35')]['id']}})[_0xed7c('0x21')](handleEntityNotFound(_0x5c55cb,null))[_0xed7c('0x21')](removeEntity(_0x5c55cb,null))[_0xed7c('0x32')](handleError(_0x5c55cb,null));};
\ No newline at end of file
+var _0xf8b2=['set','Content-Range','reject','save','update','destroy','sendStatus','stack','name','send','show','model','keys','rawAttributes','query','filters','intersection','attributes','fields','includeAll','include','merge','options','ChatProactiveAction','find','catch','create','body','then','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count'];(function(_0x5b0144,_0x48dcce){var _0x17903f=function(_0x404099){while(--_0x404099){_0x5b0144['push'](_0x5b0144['shift']());}};_0x17903f(++_0x48dcce);}(_0xf8b2,0x15e));var _0x2f8b=function(_0x390636,_0x156bce){_0x390636=_0x390636-0x0;var _0x4a6ae8=_0xf8b2[_0x390636];return _0x4a6ae8;};'use strict';var emlformat=require(_0x2f8b('0x0'));var rimraf=require(_0x2f8b('0x1'));var zipdir=require(_0x2f8b('0x2'));var jsonpatch=require(_0x2f8b('0x3'));var rp=require(_0x2f8b('0x4'));var moment=require(_0x2f8b('0x5'));var BPromise=require(_0x2f8b('0x6'));var Mustache=require(_0x2f8b('0x7'));var util=require('util');var path=require('path');var sox=require(_0x2f8b('0x8'));var csv=require(_0x2f8b('0x9'));var ejs=require(_0x2f8b('0xa'));var fs=require('fs');var fs_extra=require(_0x2f8b('0xb'));var _=require(_0x2f8b('0xc'));var squel=require(_0x2f8b('0xd'));var crypto=require(_0x2f8b('0xe'));var jsforce=require(_0x2f8b('0xf'));var deskjs=require(_0x2f8b('0x10'));var toCsv=require('to-csv');var querystring=require(_0x2f8b('0x11'));var Papa=require(_0x2f8b('0x12'));var Redis=require(_0x2f8b('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x2f8b('0x14'));var as=require(_0x2f8b('0x15'));var hardwareService=require(_0x2f8b('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0x2f8b('0x17'));var config=require(_0x2f8b('0x18'));var licenseUtil=require(_0x2f8b('0x19'));var db=require(_0x2f8b('0x1a'))['db'];function respondWithStatusCode(_0x175111,_0x4cb1e0){_0x4cb1e0=_0x4cb1e0||0xcc;return function(_0x16d5a2){if(_0x16d5a2){return _0x175111['sendStatus'](_0x4cb1e0);}return _0x175111[_0x2f8b('0x1b')](_0x4cb1e0)[_0x2f8b('0x1c')]();};}function respondWithResult(_0x1b6a17,_0x15634){_0x15634=_0x15634||0xc8;return function(_0xf9cbe0){if(_0xf9cbe0){return _0x1b6a17[_0x2f8b('0x1b')](_0x15634)[_0x2f8b('0x1d')](_0xf9cbe0);}};}function respondWithFilteredResult(_0x2b6003,_0x532fe4){return function(_0x14a248){if(_0x14a248){var _0xdec711=typeof _0x532fe4[_0x2f8b('0x1e')]===_0x2f8b('0x1f')&&typeof _0x532fe4[_0x2f8b('0x20')]===_0x2f8b('0x1f');var _0x3d65ee=_0x14a248[_0x2f8b('0x21')];var _0x35ec40=_0xdec711?0x0:_0x532fe4['offset'];var _0x23dd63=_0xdec711?_0x14a248[_0x2f8b('0x21')]:_0x532fe4[_0x2f8b('0x1e')]+_0x532fe4['limit'];var _0xdc8171;if(_0x23dd63>=_0x3d65ee){_0x23dd63=_0x3d65ee;_0xdc8171=0xc8;}else{_0xdc8171=0xce;}_0x2b6003['status'](_0xdc8171);return _0x2b6003[_0x2f8b('0x22')](_0x2f8b('0x23'),_0x35ec40+'-'+_0x23dd63+'/'+_0x3d65ee)[_0x2f8b('0x1d')](_0x14a248);}return null;};}function patchUpdates(_0x26d78f){return function(_0x3be6dc){try{jsonpatch['apply'](_0x3be6dc,_0x26d78f,!![]);}catch(_0x29c2f3){return BPromise[_0x2f8b('0x24')](_0x29c2f3);}return _0x3be6dc[_0x2f8b('0x25')]();};}function saveUpdates(_0x17b251,_0x3ad38b){return function(_0x1ffbae){if(_0x1ffbae){return _0x1ffbae[_0x2f8b('0x26')](_0x17b251)['then'](function(_0x273950){return _0x273950;});}return null;};}function removeEntity(_0x23f73c,_0x3560c4){return function(_0x41e12b){if(_0x41e12b){return _0x41e12b[_0x2f8b('0x27')]()['then'](function(){_0x23f73c[_0x2f8b('0x1b')](0xcc)[_0x2f8b('0x1c')]();});}};}function handleEntityNotFound(_0x152492,_0x46a95a){return function(_0x183e51){if(!_0x183e51){_0x152492[_0x2f8b('0x28')](0x194);}return _0x183e51;};}function handleError(_0x45e313,_0x347f5a){_0x347f5a=_0x347f5a||0x1f4;return function(_0x4145b3){logger['error'](_0x4145b3[_0x2f8b('0x29')]);if(_0x4145b3['name']){delete _0x4145b3[_0x2f8b('0x2a')];}_0x45e313[_0x2f8b('0x1b')](_0x347f5a)[_0x2f8b('0x2b')](_0x4145b3);};}exports[_0x2f8b('0x2c')]=function(_0x72b23b,_0x4adacd){var _0x2cfbea={'raw':!![],'where':{'id':_0x72b23b['params']['id']}},_0x5cc78c={};_0x5cc78c[_0x2f8b('0x2d')]=_[_0x2f8b('0x2e')](db['ChatProactiveAction'][_0x2f8b('0x2f')]);_0x5cc78c[_0x2f8b('0x30')]=_[_0x2f8b('0x2e')](_0x72b23b[_0x2f8b('0x30')]);_0x5cc78c[_0x2f8b('0x31')]=_[_0x2f8b('0x32')](_0x5cc78c['model'],_0x5cc78c[_0x2f8b('0x30')]);_0x2cfbea[_0x2f8b('0x33')]=_[_0x2f8b('0x32')](_0x5cc78c[_0x2f8b('0x2d')],qs[_0x2f8b('0x34')](_0x72b23b[_0x2f8b('0x30')][_0x2f8b('0x34')]));_0x2cfbea['attributes']=_0x2cfbea[_0x2f8b('0x33')]['length']?_0x2cfbea[_0x2f8b('0x33')]:_0x5cc78c[_0x2f8b('0x2d')];if(_0x72b23b[_0x2f8b('0x30')][_0x2f8b('0x35')]){_0x2cfbea[_0x2f8b('0x36')]=[{'all':!![]}];}_0x2cfbea=_[_0x2f8b('0x37')]({},_0x2cfbea,_0x72b23b[_0x2f8b('0x38')]);return db[_0x2f8b('0x39')][_0x2f8b('0x3a')](_0x2cfbea)['then'](handleEntityNotFound(_0x4adacd,null))['then'](respondWithResult(_0x4adacd,null))[_0x2f8b('0x3b')](handleError(_0x4adacd,null));};exports[_0x2f8b('0x3c')]=function(_0x339648,_0x3f7f9c){return db['ChatProactiveAction'][_0x2f8b('0x3c')](_0x339648[_0x2f8b('0x3d')],{})[_0x2f8b('0x3e')](respondWithResult(_0x3f7f9c,0xc9))[_0x2f8b('0x3b')](handleError(_0x3f7f9c,null));};exports[_0x2f8b('0x26')]=function(_0x523419,_0x56c05c){if(_0x523419[_0x2f8b('0x3d')]['id']){delete _0x523419[_0x2f8b('0x3d')]['id'];}return db[_0x2f8b('0x39')][_0x2f8b('0x3a')]({'where':{'id':_0x523419[_0x2f8b('0x3f')]['id']}})[_0x2f8b('0x3e')](handleEntityNotFound(_0x56c05c,null))[_0x2f8b('0x3e')](saveUpdates(_0x523419['body'],null))[_0x2f8b('0x3e')](respondWithResult(_0x56c05c,null))[_0x2f8b('0x3b')](handleError(_0x56c05c,null));};exports['destroy']=function(_0x13c969,_0x4594b2){return db[_0x2f8b('0x39')]['find']({'where':{'id':_0x13c969[_0x2f8b('0x3f')]['id']}})[_0x2f8b('0x3e')](handleEntityNotFound(_0x4594b2,null))['then'](removeEntity(_0x4594b2,null))[_0x2f8b('0x3b')](handleError(_0x4594b2,null));};
\ No newline at end of file
index a8c3c99..562d4a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa344=['lodash','util','../../config/logger','api','moment','request-promise','../../config/environment','exports','ChatProactiveAction','chat_proactive_actions'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0xa344,0x1b8));var _0x4a34=function(_0x1e46ca,_0x19b966){_0x1e46ca=_0x1e46ca-0x0;var _0x4e9380=_0xa344[_0x1e46ca];return _0x4e9380;};'use strict';var _=require(_0x4a34('0x0'));var util=require(_0x4a34('0x1'));var logger=require(_0x4a34('0x2'))(_0x4a34('0x3'));var moment=require(_0x4a34('0x4'));var BPromise=require('bluebird');var rp=require(_0x4a34('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x4a34('0x6'));var attributes=require('./chatProactiveAction.attributes');module[_0x4a34('0x7')]=function(_0x28eaef,_0x1294b3){return _0x28eaef['define'](_0x4a34('0x8'),attributes,{'tableName':_0x4a34('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x602a=['moment','bluebird','request-promise','path','../../config/environment','./chatProactiveAction.attributes','exports','define','ChatProactiveAction','lodash','util','../../config/logger'];(function(_0x573e49,_0x4d92cd){var _0x20ee7b=function(_0x42801c){while(--_0x42801c){_0x573e49['push'](_0x573e49['shift']());}};_0x20ee7b(++_0x4d92cd);}(_0x602a,0x129));var _0xa602=function(_0x4cc765,_0x3bf3a5){_0x4cc765=_0x4cc765-0x0;var _0x5e9e1e=_0x602a[_0x4cc765];return _0x5e9e1e;};'use strict';var _=require(_0xa602('0x0'));var util=require(_0xa602('0x1'));var logger=require(_0xa602('0x2'))('api');var moment=require(_0xa602('0x3'));var BPromise=require(_0xa602('0x4'));var rp=require(_0xa602('0x5'));var fs=require('fs');var path=require(_0xa602('0x6'));var rimraf=require('rimraf');var config=require(_0xa602('0x7'));var attributes=require(_0xa602('0x8'));module[_0xa602('0x9')]=function(_0x1a1ee9,_0x572716){return _0x1a1ee9[_0xa602('0xa')](_0xa602('0xb'),attributes,{'tableName':'chat_proactive_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4555838..24a97ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4071=['request','then','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x40aaea,_0x3f4db7){var _0x3bac0f=function(_0xd057f9){while(--_0xd057f9){_0x40aaea['push'](_0x40aaea['shift']());}};_0x3bac0f(++_0x3f4db7);}(_0x4071,0x64));var _0x1407=function(_0x36a7e4,_0x408691){_0x36a7e4=_0x36a7e4-0x0;var _0x289236=_0x4071[_0x36a7e4];return _0x289236;};'use strict';var _=require(_0x1407('0x0'));var util=require(_0x1407('0x1'));var moment=require(_0x1407('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1407('0x3'));var db=require(_0x1407('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x1407('0x5'))(_0x1407('0x6'));var config=require(_0x1407('0x7'));var jayson=require(_0x1407('0x8'));var client=jayson['client'][_0x1407('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4b7d12,_0x4e8245,_0x5039e1){return new BPromise(function(_0x4d8468,_0x4f8c9c){return client[_0x1407('0xa')](_0x4b7d12,_0x5039e1)[_0x1407('0xb')](function(_0x33ab8e){logger[_0x1407('0xc')](_0x1407('0xd'),_0x4e8245,_0x1407('0xe'));logger[_0x1407('0xf')](_0x1407('0x10'),_0x4e8245,_0x1407('0xe'),JSON[_0x1407('0x11')](_0x33ab8e));if(_0x33ab8e[_0x1407('0x12')]){if(_0x33ab8e[_0x1407('0x12')][_0x1407('0x13')]===0x1f4){logger[_0x1407('0x12')](_0x1407('0xd'),_0x4e8245,_0x33ab8e[_0x1407('0x12')][_0x1407('0x14')]);return _0x4f8c9c(_0x33ab8e[_0x1407('0x12')][_0x1407('0x14')]);}logger[_0x1407('0x12')](_0x1407('0xd'),_0x4e8245,_0x33ab8e[_0x1407('0x12')]['message']);return _0x4d8468(_0x33ab8e[_0x1407('0x12')][_0x1407('0x14')]);}else{logger[_0x1407('0xc')](_0x1407('0xd'),_0x4e8245,_0x1407('0xe'));_0x4d8468(_0x33ab8e['result']['message']);}})[_0x1407('0x15')](function(_0x41ef18){logger['error'](_0x1407('0xd'),_0x4e8245,_0x41ef18);_0x4f8c9c(_0x41ef18);});});}
\ No newline at end of file
+var _0x66f1=['../../config/environment','jayson/promise','http','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','error','code','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x485e7b,_0x3cb71b){var _0x18404e=function(_0x1c2fae){while(--_0x1c2fae){_0x485e7b['push'](_0x485e7b['shift']());}};_0x18404e(++_0x3cb71b);}(_0x66f1,0x114));var _0x166f=function(_0x124eba,_0x22cb6b){_0x124eba=_0x124eba-0x0;var _0x2c8e35=_0x66f1[_0x124eba];return _0x2c8e35;};'use strict';var _=require(_0x166f('0x0'));var util=require('util');var moment=require(_0x166f('0x1'));var BPromise=require(_0x166f('0x2'));var rs=require(_0x166f('0x3'));var fs=require('fs');var Redis=require(_0x166f('0x4'));var db=require(_0x166f('0x5'))['db'];var utils=require(_0x166f('0x6'));var logger=require(_0x166f('0x7'))(_0x166f('0x8'));var config=require(_0x166f('0x9'));var jayson=require(_0x166f('0xa'));var client=jayson['client'][_0x166f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x329eb1,_0x3d0dcf,_0x57a5ca){return new BPromise(function(_0x1ebc23,_0x2329d){return client['request'](_0x329eb1,_0x57a5ca)['then'](function(_0x13f6dd){logger[_0x166f('0xc')](_0x166f('0xd'),_0x3d0dcf,_0x166f('0xe'));logger['debug']('ChatProactiveAction,\x20%s,\x20%s,\x20%s',_0x3d0dcf,_0x166f('0xe'),JSON['stringify'](_0x13f6dd));if(_0x13f6dd[_0x166f('0xf')]){if(_0x13f6dd[_0x166f('0xf')][_0x166f('0x10')]===0x1f4){logger[_0x166f('0xf')](_0x166f('0xd'),_0x3d0dcf,_0x13f6dd[_0x166f('0xf')][_0x166f('0x11')]);return _0x2329d(_0x13f6dd[_0x166f('0xf')]['message']);}logger[_0x166f('0xf')](_0x166f('0xd'),_0x3d0dcf,_0x13f6dd[_0x166f('0xf')][_0x166f('0x11')]);return _0x1ebc23(_0x13f6dd[_0x166f('0xf')][_0x166f('0x11')]);}else{logger[_0x166f('0xc')](_0x166f('0xd'),_0x3d0dcf,_0x166f('0xe'));_0x1ebc23(_0x13f6dd[_0x166f('0x12')][_0x166f('0x11')]);}})['catch'](function(_0x5d825a){logger[_0x166f('0xf')](_0x166f('0xd'),_0x3d0dcf,_0x5d825a);_0x2329d(_0x5d825a);});});}
\ No newline at end of file
index 6dacf0e..1cf90e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4c7=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','/:id','isAuthenticated','show','create'];(function(_0x37ffea,_0x25b006){var _0x2e2615=function(_0x5e6c74){while(--_0x5e6c74){_0x37ffea['push'](_0x37ffea['shift']());}};_0x2e2615(++_0x25b006);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x333b14,_0x3823e8){_0x333b14=_0x333b14-0x0;var _0x4b5938=_0xb4c7[_0x333b14];return _0x4b5938;};'use strict';var multer=require(_0x7b4c('0x0'));var util=require(_0x7b4c('0x1'));var path=require(_0x7b4c('0x2'));var timeout=require(_0x7b4c('0x3'));var express=require(_0x7b4c('0x4'));var router=express['Router']();var fs_extra=require(_0x7b4c('0x5'));var auth=require(_0x7b4c('0x6'));var interaction=require(_0x7b4c('0x7'));var config=require(_0x7b4c('0x8'));var controller=require(_0x7b4c('0x9'));router['get'](_0x7b4c('0xa'),auth[_0x7b4c('0xb')](),controller[_0x7b4c('0xc')]);router['post']('/',auth[_0x7b4c('0xb')](),controller[_0x7b4c('0xd')]);router['put'](_0x7b4c('0xa'),auth[_0x7b4c('0xb')](),controller[_0x7b4c('0xe')]);router[_0x7b4c('0xf')](_0x7b4c('0xa'),auth[_0x7b4c('0xb')](),controller[_0x7b4c('0x10')]);module[_0x7b4c('0x11')]=router;
\ No newline at end of file
+var _0x5d58=['/:id','isAuthenticated','show','create','update','delete','Router','fs-extra','../../components/interaction/service','../../config/environment','get'];(function(_0x23c550,_0x7e41c4){var _0x5635b1=function(_0x68f9ce){while(--_0x68f9ce){_0x23c550['push'](_0x23c550['shift']());}};_0x5635b1(++_0x7e41c4);}(_0x5d58,0x187));var _0x85d5=function(_0x189bd5,_0x3fa4c5){_0x189bd5=_0x189bd5-0x0;var _0x1f3987=_0x5d58[_0x189bd5];return _0x1f3987;};'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[_0x85d5('0x0')]();var fs_extra=require(_0x85d5('0x1'));var auth=require('../../components/auth/service');var interaction=require(_0x85d5('0x2'));var config=require(_0x85d5('0x3'));var controller=require('./chatProactiveAction.controller');router[_0x85d5('0x4')](_0x85d5('0x5'),auth[_0x85d5('0x6')](),controller[_0x85d5('0x7')]);router['post']('/',auth[_0x85d5('0x6')](),controller[_0x85d5('0x8')]);router['put'](_0x85d5('0x5'),auth['isAuthenticated'](),controller[_0x85d5('0x9')]);router[_0x85d5('0xa')](_0x85d5('0x5'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index d420f07..487c5e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82b8=['rrmemory','beepall','roundrobin','exports','STRING','name'];(function(_0x20f1d1,_0x4ce49e){var _0x536bd5=function(_0x41840a){while(--_0x41840a){_0x20f1d1['push'](_0x20f1d1['shift']());}};_0x536bd5(++_0x4ce49e);}(_0x82b8,0xcf));var _0x882b=function(_0x1b5fd2,_0x5c175a){_0x1b5fd2=_0x1b5fd2-0x0;var _0x21ce93=_0x82b8[_0x1b5fd2];return _0x21ce93;};'use strict';var Sequelize=require('sequelize');module[_0x882b('0x0')]={'name':{'type':Sequelize[_0x882b('0x1')],'unique':_0x882b('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x882b('0x1')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x882b('0x3'),_0x882b('0x4'),_0x882b('0x5'))}};
\ No newline at end of file
+var _0xf4cc=['INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports','STRING','name'];(function(_0x3a9f32,_0x3092f4){var _0x473794=function(_0x5e0e8e){while(--_0x5e0e8e){_0x3a9f32['push'](_0x3a9f32['shift']());}};_0x473794(++_0x3092f4);}(_0xf4cc,0x1f4));var _0xcf4c=function(_0x382407,_0x31eef6){_0x382407=_0x382407-0x0;var _0x52655c=_0xf4cc[_0x382407];return _0x52655c;};'use strict';var Sequelize=require(_0xcf4c('0x0'));module[_0xcf4c('0x1')]={'name':{'type':Sequelize[_0xcf4c('0x2')],'unique':_0xcf4c('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xcf4c('0x2')]},'timeout':{'type':Sequelize[_0xcf4c('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xcf4c('0x5')](_0xcf4c('0x6'),_0xcf4c('0x7'),_0xcf4c('0x8'))}};
\ No newline at end of file
index b5cc872..b863b9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d78=['select','field','from','team_has_chat_queues','join','user_has_teams','ChatQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','transaction','isEmpty','removeAgents','userChatQueue:remove','addAgents','spread','isArray','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','register','client','http','request','then','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatQueue,\x20%s,\x20%s','message','info','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','get','ChatQueues','UserProfileResource','stack','name','send','map','ChatQueue','rawAttributes','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','UserChatQueue','order','ChatQueueId','User','findAndCountAll','UserId','agent','chatPause','updatedAt','format','%s/%s','createdAt','getTeams','Team','Agents','voicePause','flatMap','sequelize','each','findOrCreate','forEach','emit','userChatQueue:save','removeTeams','ids'];(function(_0x4e7d25,_0x58285f){var _0x526fe6=function(_0x4f0aec){while(--_0x4f0aec){_0x4e7d25['push'](_0x4e7d25['shift']());}};_0x526fe6(++_0x58285f);}(_0x8d78,0x14e));var _0x88d7=function(_0x4a5a38,_0x2bff51){_0x4a5a38=_0x4a5a38-0x0;var _0x10820f=_0x8d78[_0x4a5a38];return _0x10820f;};'use strict';var emlformat=require(_0x88d7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x88d7('0x1'));var jsonpatch=require(_0x88d7('0x2'));var rp=require(_0x88d7('0x3'));var moment=require('moment');var BPromise=require(_0x88d7('0x4'));var Mustache=require(_0x88d7('0x5'));var util=require(_0x88d7('0x6'));var path=require(_0x88d7('0x7'));var sox=require(_0x88d7('0x8'));var csv=require(_0x88d7('0x9'));var ejs=require(_0x88d7('0xa'));var fs=require('fs');var fs_extra=require(_0x88d7('0xb'));var _=require(_0x88d7('0xc'));var squel=require(_0x88d7('0xd'));var crypto=require(_0x88d7('0xe'));var jsforce=require(_0x88d7('0xf'));var deskjs=require(_0x88d7('0x10'));var toCsv=require(_0x88d7('0x9'));var querystring=require(_0x88d7('0x11'));var Papa=require(_0x88d7('0x12'));var Redis=require(_0x88d7('0x13'));var authService=require(_0x88d7('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x88d7('0x15'));var logger=require(_0x88d7('0x16'))(_0x88d7('0x17'));var utils=require(_0x88d7('0x18'));var config=require(_0x88d7('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x88d7('0x1a'))['db'];config[_0x88d7('0x1b')]=_[_0x88d7('0x1c')](config['redis'],{'host':_0x88d7('0x1d'),'port':0x18eb});var socket=require(_0x88d7('0x1e'))(new Redis(config['redis']));require(_0x88d7('0x1f'))[_0x88d7('0x20')](socket);var jayson=require('jayson/promise');var client=jayson[_0x88d7('0x21')][_0x88d7('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x221b46,_0x2ad59f,_0xe2026,_0x178c7f){return new BPromise(function(_0x2aebe5,_0x4c3355){var _0x33a60e=_0x178c7f||client;return _0x33a60e[_0x88d7('0x23')](_0x221b46,_0xe2026)[_0x88d7('0x24')](function(_0x150aa8){logger['info']('ChatQueue,\x20%s,\x20%s',_0x2ad59f,_0x88d7('0x25'));logger['debug'](_0x88d7('0x26'),_0x2ad59f,_0x88d7('0x25'),JSON[_0x88d7('0x27')](_0x150aa8));if(_0x150aa8[_0x88d7('0x28')]){if(_0x150aa8[_0x88d7('0x28')][_0x88d7('0x29')]===0x1f4){logger[_0x88d7('0x28')](_0x88d7('0x2a'),_0x2ad59f,_0x150aa8['error'][_0x88d7('0x2b')]);return _0x4c3355(_0x150aa8[_0x88d7('0x28')][_0x88d7('0x2b')]);}logger['error'](_0x88d7('0x2a'),_0x2ad59f,_0x150aa8['error'][_0x88d7('0x2b')]);return _0x2aebe5(_0x150aa8['error']['message']);}else{logger[_0x88d7('0x2c')](_0x88d7('0x2a'),_0x2ad59f,_0x88d7('0x25'));_0x2aebe5(_0x150aa8['result'][_0x88d7('0x2b')]);}})[_0x88d7('0x2d')](function(_0x563c12){logger['error'](_0x88d7('0x2a'),_0x2ad59f,_0x563c12);_0x4c3355(_0x563c12);});});}function respondWithStatusCode(_0x25b9fb,_0x19446d){_0x19446d=_0x19446d||0xcc;return function(_0x5b7dd3){if(_0x5b7dd3){return _0x25b9fb[_0x88d7('0x2e')](_0x19446d);}return _0x25b9fb[_0x88d7('0x2f')](_0x19446d)[_0x88d7('0x30')]();};}function respondWithResult(_0x2909ed,_0x2c45e8){_0x2c45e8=_0x2c45e8||0xc8;return function(_0x113f57){if(_0x113f57){return _0x2909ed['status'](_0x2c45e8)[_0x88d7('0x31')](_0x113f57);}};}function respondWithFilteredResult(_0x11d7fe,_0x557fd3){return function(_0x18295a){if(_0x18295a){var _0x288ef6=typeof _0x557fd3[_0x88d7('0x32')]===_0x88d7('0x33')&&typeof _0x557fd3[_0x88d7('0x34')]===_0x88d7('0x33');var _0x33e999=_0x18295a[_0x88d7('0x35')];var _0x8747a1=_0x288ef6?0x0:_0x557fd3[_0x88d7('0x32')];var _0x3002ab=_0x288ef6?_0x18295a[_0x88d7('0x35')]:_0x557fd3[_0x88d7('0x32')]+_0x557fd3[_0x88d7('0x34')];var _0x44322c;if(_0x3002ab>=_0x33e999){_0x3002ab=_0x33e999;_0x44322c=0xc8;}else{_0x44322c=0xce;}_0x11d7fe['status'](_0x44322c);return _0x11d7fe[_0x88d7('0x36')](_0x88d7('0x37'),_0x8747a1+'-'+_0x3002ab+'/'+_0x33e999)[_0x88d7('0x31')](_0x18295a);}return null;};}function patchUpdates(_0x48f1b4){return function(_0x5efb42){try{jsonpatch[_0x88d7('0x38')](_0x5efb42,_0x48f1b4,!![]);}catch(_0x36b2b5){return BPromise[_0x88d7('0x39')](_0x36b2b5);}return _0x5efb42[_0x88d7('0x3a')]();};}function saveUpdates(_0x20e7ee,_0x5b15e5){return function(_0x20ba6f){if(_0x20ba6f){return _0x20ba6f[_0x88d7('0x3b')](_0x20e7ee)[_0x88d7('0x24')](function(_0x336790){return _0x336790;});}return null;};}function removeEntity(_0x36c41b,_0xc231fe){return function(_0x349b79){if(_0x349b79){return _0x349b79[_0x88d7('0x3c')]()[_0x88d7('0x24')](function(){var _0x1c65e5=_0x349b79[_0x88d7('0x3d')]({'plain':!![]});var _0x4f6e9d=_0x88d7('0x3e');return db[_0x88d7('0x3f')][_0x88d7('0x3c')]({'where':{'type':_0x4f6e9d,'resourceId':_0x1c65e5['id']}})[_0x88d7('0x24')](function(){return _0x349b79;});})[_0x88d7('0x24')](function(){_0x36c41b[_0x88d7('0x2f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x32f352,_0x4aef42){return function(_0xf60a5a){if(!_0xf60a5a){_0x32f352['sendStatus'](0x194);}return _0xf60a5a;};}function handleError(_0x1f712b,_0x57c519){_0x57c519=_0x57c519||0x1f4;return function(_0x26a4ec){logger[_0x88d7('0x28')](_0x26a4ec[_0x88d7('0x40')]);if(_0x26a4ec['name']){delete _0x26a4ec[_0x88d7('0x41')];}_0x1f712b[_0x88d7('0x2f')](_0x57c519)[_0x88d7('0x42')](_0x26a4ec);};}exports['index']=function(_0x3c65a8,_0x20f595){var _0x32257b={},_0x2e1a37={},_0x2c0494={'count':0x0,'rows':[]};var _0x19da89=_[_0x88d7('0x43')](db[_0x88d7('0x44')][_0x88d7('0x45')],function(_0x51a1c8){return{'name':_0x51a1c8['fieldName'],'type':_0x51a1c8['type'][_0x88d7('0x46')]};});_0x2e1a37[_0x88d7('0x47')]=_[_0x88d7('0x43')](_0x19da89,_0x88d7('0x41'));_0x2e1a37['query']=_[_0x88d7('0x48')](_0x3c65a8[_0x88d7('0x49')]);_0x2e1a37[_0x88d7('0x4a')]=_[_0x88d7('0x4b')](_0x2e1a37['model'],_0x2e1a37[_0x88d7('0x49')]);_0x32257b['attributes']=_[_0x88d7('0x4b')](_0x2e1a37[_0x88d7('0x47')],qs[_0x88d7('0x4c')](_0x3c65a8['query'][_0x88d7('0x4c')]));_0x32257b['attributes']=_0x32257b[_0x88d7('0x4d')][_0x88d7('0x4e')]?_0x32257b['attributes']:_0x2e1a37[_0x88d7('0x47')];if(!_0x3c65a8[_0x88d7('0x49')][_0x88d7('0x4f')](_0x88d7('0x50'))){_0x32257b[_0x88d7('0x34')]=qs[_0x88d7('0x34')](_0x3c65a8[_0x88d7('0x49')][_0x88d7('0x34')]);_0x32257b[_0x88d7('0x32')]=qs[_0x88d7('0x32')](_0x3c65a8['query'][_0x88d7('0x32')]);}_0x32257b['order']=qs[_0x88d7('0x51')](_0x3c65a8['query'][_0x88d7('0x51')]);_0x32257b['where']=qs[_0x88d7('0x4a')](_[_0x88d7('0x52')](_0x3c65a8[_0x88d7('0x49')],_0x2e1a37['filters']),_0x19da89);if(_0x3c65a8[_0x88d7('0x49')][_0x88d7('0x53')]){_0x32257b[_0x88d7('0x54')]=_[_0x88d7('0x55')](_0x32257b[_0x88d7('0x54')],{'$or':_[_0x88d7('0x43')](_0x19da89,function(_0x13ca71){if(_0x13ca71[_0x88d7('0x56')]!==_0x88d7('0x57')){var _0x1ac4c8={};_0x1ac4c8[_0x13ca71[_0x88d7('0x41')]]={'$like':'%'+_0x3c65a8[_0x88d7('0x49')]['filter']+'%'};return _0x1ac4c8;}})});}_0x32257b=_[_0x88d7('0x55')]({},_0x32257b,_0x3c65a8[_0x88d7('0x58')]);var _0xe21ae3={'where':_0x32257b[_0x88d7('0x54')]};return db[_0x88d7('0x44')][_0x88d7('0x35')](_0xe21ae3)[_0x88d7('0x24')](function(_0x36cecc){_0x2c0494[_0x88d7('0x35')]=_0x36cecc;if(_0x3c65a8['query'][_0x88d7('0x59')]){_0x32257b[_0x88d7('0x5a')]=[{'all':!![]}];}return db['ChatQueue'][_0x88d7('0x5b')](_0x32257b);})[_0x88d7('0x24')](function(_0x1ffa10){_0x2c0494[_0x88d7('0x5c')]=_0x1ffa10;return _0x2c0494;})[_0x88d7('0x24')](respondWithFilteredResult(_0x20f595,_0x32257b))[_0x88d7('0x2d')](handleError(_0x20f595,null));};exports[_0x88d7('0x5d')]=function(_0x2f3775,_0x41b71d){var _0x4c24c7={'raw':!![],'where':{'id':_0x2f3775[_0x88d7('0x5e')]['id']}},_0x29ca57={};_0x29ca57[_0x88d7('0x47')]=_[_0x88d7('0x48')](db['ChatQueue'][_0x88d7('0x45')]);_0x29ca57[_0x88d7('0x49')]=_[_0x88d7('0x48')](_0x2f3775['query']);_0x29ca57[_0x88d7('0x4a')]=_[_0x88d7('0x4b')](_0x29ca57['model'],_0x29ca57[_0x88d7('0x49')]);_0x4c24c7['attributes']=_[_0x88d7('0x4b')](_0x29ca57[_0x88d7('0x47')],qs[_0x88d7('0x4c')](_0x2f3775[_0x88d7('0x49')][_0x88d7('0x4c')]));_0x4c24c7['attributes']=_0x4c24c7[_0x88d7('0x4d')][_0x88d7('0x4e')]?_0x4c24c7[_0x88d7('0x4d')]:_0x29ca57['model'];if(_0x2f3775['query'][_0x88d7('0x59')]){_0x4c24c7[_0x88d7('0x5a')]=[{'all':!![]}];}_0x4c24c7=_[_0x88d7('0x55')]({},_0x4c24c7,_0x2f3775[_0x88d7('0x58')]);return db[_0x88d7('0x44')][_0x88d7('0x5f')](_0x4c24c7)[_0x88d7('0x24')](handleEntityNotFound(_0x41b71d,null))['then'](respondWithResult(_0x41b71d,null))[_0x88d7('0x2d')](handleError(_0x41b71d,null));};exports[_0x88d7('0x60')]=function(_0x594441,_0x195a97){return db[_0x88d7('0x44')][_0x88d7('0x60')](_0x594441['body'],{})[_0x88d7('0x24')](function(_0x25b544){var _0x2f2de7=_0x594441['user'][_0x88d7('0x3d')]({'plain':!![]});if(!_0x2f2de7)throw new Error(_0x88d7('0x61'));if(_0x2f2de7['role']===_0x88d7('0x62')){var _0x4e38f4=_0x25b544[_0x88d7('0x3d')]({'plain':!![]});var _0x33c6f1=_0x88d7('0x3e');return db[_0x88d7('0x63')][_0x88d7('0x5f')]({'where':{'name':_0x33c6f1,'userProfileId':_0x2f2de7['userProfileId']},'raw':!![]})[_0x88d7('0x24')](function(_0x1d0ee6){if(_0x1d0ee6&&_0x1d0ee6[_0x88d7('0x64')]===0x0){return db[_0x88d7('0x3f')][_0x88d7('0x60')]({'name':_0x4e38f4[_0x88d7('0x41')],'resourceId':_0x4e38f4['id'],'type':_0x1d0ee6[_0x88d7('0x41')],'sectionId':_0x1d0ee6['id']},{})[_0x88d7('0x24')](function(){return _0x25b544;});}else{return _0x25b544;}})[_0x88d7('0x2d')](function(_0x352252){logger[_0x88d7('0x28')](_0x88d7('0x65'),_0x352252);throw _0x352252;});}return _0x25b544;})[_0x88d7('0x24')](respondWithResult(_0x195a97,0xc9))['catch'](handleError(_0x195a97,null));};exports[_0x88d7('0x3b')]=function(_0x55dd29,_0x306a16){if(_0x55dd29['body']['id']){delete _0x55dd29[_0x88d7('0x66')]['id'];}return db['ChatQueue']['find']({'where':{'id':_0x55dd29[_0x88d7('0x5e')]['id']}})[_0x88d7('0x24')](handleEntityNotFound(_0x306a16,null))[_0x88d7('0x24')](saveUpdates(_0x55dd29[_0x88d7('0x66')],null))[_0x88d7('0x24')](respondWithResult(_0x306a16,null))[_0x88d7('0x2d')](handleError(_0x306a16,null));};exports[_0x88d7('0x3c')]=function(_0x1a26aa,_0x4221ab){return db[_0x88d7('0x44')][_0x88d7('0x5f')]({'where':{'id':_0x1a26aa[_0x88d7('0x5e')]['id']}})[_0x88d7('0x24')](handleEntityNotFound(_0x4221ab,null))[_0x88d7('0x24')](removeEntity(_0x4221ab,null))['catch'](handleError(_0x4221ab,null));};exports['describe']=function(_0x260fc8,_0x295ea7){return db[_0x88d7('0x44')][_0x88d7('0x67')]()[_0x88d7('0x24')](respondWithResult(_0x295ea7,null))[_0x88d7('0x2d')](handleError(_0x295ea7,null));};exports[_0x88d7('0x68')]=function(_0x4f1c96,_0x3db710,_0x4bd22a){var _0x38d54b={'raw':!![],'where':{}},_0x48ec9a={},_0x33f4a0;return db[_0x88d7('0x44')][_0x88d7('0x69')]({'where':{'id':_0x4f1c96[_0x88d7('0x5e')]['id']}})['then'](handleEntityNotFound(_0x3db710,null))[_0x88d7('0x24')](function(_0x1b74dc){if(_0x1b74dc){_0x33f4a0=_0x1b74dc[_0x88d7('0x3d')]({'plain':!![]});_0x48ec9a[_0x88d7('0x47')]=_['keys'](db[_0x88d7('0x6a')][_0x88d7('0x45')]);_0x48ec9a[_0x88d7('0x49')]=_[_0x88d7('0x48')](_0x4f1c96['query']);_0x48ec9a['filters']=_['intersection'](_0x48ec9a[_0x88d7('0x47')],_0x48ec9a[_0x88d7('0x49')]);_0x38d54b['attributes']=_[_0x88d7('0x4b')](_0x48ec9a[_0x88d7('0x47')],qs[_0x88d7('0x4c')](_0x4f1c96[_0x88d7('0x49')][_0x88d7('0x4c')]));_0x38d54b['attributes']=_0x38d54b[_0x88d7('0x4d')][_0x88d7('0x4e')]?_0x38d54b[_0x88d7('0x4d')]:_0x48ec9a[_0x88d7('0x47')];if(!_0x4f1c96[_0x88d7('0x49')][_0x88d7('0x4f')](_0x88d7('0x50'))){_0x38d54b[_0x88d7('0x34')]=qs[_0x88d7('0x34')](_0x4f1c96[_0x88d7('0x49')][_0x88d7('0x34')]);_0x38d54b[_0x88d7('0x32')]=qs[_0x88d7('0x32')](_0x4f1c96['query'][_0x88d7('0x32')]);}_0x38d54b[_0x88d7('0x6b')]=qs[_0x88d7('0x51')](_0x4f1c96[_0x88d7('0x49')]['sort']);_0x38d54b['where']=qs['filters'](_[_0x88d7('0x52')](_0x4f1c96[_0x88d7('0x49')],_0x48ec9a[_0x88d7('0x4a')]));_0x38d54b['where'][_0x88d7('0x6c')]=_0x1b74dc['id'];if(_0x4f1c96[_0x88d7('0x49')][_0x88d7('0x53')]){_0x38d54b['where']=_[_0x88d7('0x55')](_0x38d54b['where'],{'$or':_['map'](_0x38d54b[_0x88d7('0x4d')],function(_0x47c4c9){var _0xe56e04={};_0xe56e04[_0x47c4c9]={'$like':'%'+_0x4f1c96['query'][_0x88d7('0x53')]+'%'};return _0xe56e04;})});}_0x38d54b=_[_0x88d7('0x55')]({},_0x38d54b,_0x4f1c96[_0x88d7('0x58')]);return db[_0x88d7('0x6a')][_0x88d7('0x5b')](_0x38d54b);}})[_0x88d7('0x24')](function(_0xea59b0){if(_0xea59b0){return db[_0x88d7('0x6d')][_0x88d7('0x6e')]({'where':{'id':_['map'](_0xea59b0,_0x88d7('0x6f')),'role':_0x88d7('0x70')},'attributes':['id',_0x88d7('0x41'),_0x88d7('0x71'),_0x88d7('0x72'),'createdAt']});}})[_0x88d7('0x24')](function(_0x38c43b){if(_0x38c43b){return{'count':_0x38c43b[_0x88d7('0x35')],'rows':_[_0x88d7('0x43')](_0x38c43b[_0x88d7('0x5c')],function(_0x481ec7){return{'membername':_0x481ec7[_0x88d7('0x41')],'UserId':_0x481ec7['id'],'queue_name':_0x33f4a0[_0x88d7('0x41')],'ChatQueueId':_0x33f4a0['id'],'interface':util[_0x88d7('0x73')](_0x88d7('0x74'),'SIP',_0x481ec7[_0x88d7('0x41')]),'penalty':0x0,'paused':_0x481ec7['chatPause'],'createdAt':_0x481ec7[_0x88d7('0x75')],'updatedAt':_0x481ec7['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x88d7('0x24')](respondWithFilteredResult(_0x3db710,_0x38d54b))[_0x88d7('0x2d')](handleError(_0x3db710,null));};exports[_0x88d7('0x76')]=function(_0x71a84b,_0x9533ea,_0x2894dc){var _0x5362dc={};var _0x3da926={};var _0x25ceb1;var _0x4d3316;return db[_0x88d7('0x44')]['findOne']({'where':{'id':_0x71a84b[_0x88d7('0x5e')]['id']}})[_0x88d7('0x24')](handleEntityNotFound(_0x9533ea,null))[_0x88d7('0x24')](function(_0x17d068){if(_0x17d068){_0x25ceb1=_0x17d068;_0x3da926[_0x88d7('0x47')]=_['keys'](db[_0x88d7('0x77')][_0x88d7('0x45')]);_0x3da926['query']=_[_0x88d7('0x48')](_0x71a84b['query']);_0x3da926[_0x88d7('0x4a')]=_[_0x88d7('0x4b')](_0x3da926[_0x88d7('0x47')],_0x3da926[_0x88d7('0x49')]);_0x5362dc[_0x88d7('0x4d')]=_[_0x88d7('0x4b')](_0x3da926[_0x88d7('0x47')],qs[_0x88d7('0x4c')](_0x71a84b[_0x88d7('0x49')][_0x88d7('0x4c')]));_0x5362dc[_0x88d7('0x4d')]=_0x5362dc[_0x88d7('0x4d')][_0x88d7('0x4e')]?_0x5362dc[_0x88d7('0x4d')]:_0x3da926[_0x88d7('0x47')];_0x5362dc['order']=qs[_0x88d7('0x51')](_0x71a84b[_0x88d7('0x49')]['sort']);_0x5362dc[_0x88d7('0x54')]=qs[_0x88d7('0x4a')](_[_0x88d7('0x52')](_0x71a84b[_0x88d7('0x49')],_0x3da926[_0x88d7('0x4a')]));if(_0x71a84b[_0x88d7('0x49')][_0x88d7('0x53')]){_0x5362dc[_0x88d7('0x54')]=_['merge'](_0x5362dc[_0x88d7('0x54')],{'$or':_[_0x88d7('0x43')](_0x5362dc[_0x88d7('0x4d')],function(_0x3fc8c5){var _0x170a3d={};_0x170a3d[_0x3fc8c5]={'$like':'%'+_0x71a84b[_0x88d7('0x49')][_0x88d7('0x53')]+'%'};return _0x170a3d;})});}_0x5362dc=_[_0x88d7('0x55')]({},_0x5362dc,_0x71a84b[_0x88d7('0x58')]);return _0x25ceb1[_0x88d7('0x76')](_0x5362dc);}})[_0x88d7('0x24')](function(_0x27550f){if(_0x27550f){_0x4d3316=_0x27550f[_0x88d7('0x4e')];if(!_0x71a84b[_0x88d7('0x49')]['hasOwnProperty'](_0x88d7('0x50'))){_0x5362dc[_0x88d7('0x34')]=qs[_0x88d7('0x34')](_0x71a84b[_0x88d7('0x49')][_0x88d7('0x34')]);_0x5362dc[_0x88d7('0x32')]=qs['offset'](_0x71a84b[_0x88d7('0x49')]['offset']);}return _0x25ceb1[_0x88d7('0x76')](_0x5362dc);}})[_0x88d7('0x24')](function(_0x3c2efe){if(_0x3c2efe){return _0x3c2efe?{'count':_0x4d3316,'rows':_0x3c2efe}:null;}})[_0x88d7('0x24')](respondWithResult(_0x9533ea,null))[_0x88d7('0x2d')](handleError(_0x9533ea,null));};exports['addTeams']=function(_0x5de019,_0x2b2b41,_0xacaa35){var _0x5f0ef7=_0x5de019[_0x88d7('0x66')]['ids'];return db[_0x88d7('0x77')]['findAll']({'where':{'id':_0x5f0ef7},'attributes':['id'],'include':[{'model':db[_0x88d7('0x6d')],'as':_0x88d7('0x78'),'attributes':['id',_0x88d7('0x41'),'online',_0x88d7('0x79'),'interface'],'raw':!![]}]})[_0x88d7('0x24')](function(_0x5a3ead){if(_0x5a3ead){var _0xc28154=_[_0x88d7('0x7a')](_0x5a3ead,function(_0x3fcd54){var _0x4c78bf=_0x3fcd54['get']({'plain':!![]});return _0x4c78bf[_0x88d7('0x78')];});return db[_0x88d7('0x44')][_0x88d7('0x5f')]({'where':{'id':_0x5de019['params']['id']}})[_0x88d7('0x24')](function(_0x60d4b2){return db[_0x88d7('0x7b')]['transaction'](function(_0x10522){return _0x60d4b2['addTeams'](_0x5f0ef7,{'transaction':_0x10522})[_0x88d7('0x24')](function(){return BPromise[_0x88d7('0x7c')](_0xc28154,function(_0x354611){return db[_0x88d7('0x6a')][_0x88d7('0x7d')]({'where':{'UserId':_0x354611['id'],'ChatQueueId':_0x5de019['params']['id']},'transaction':_0x10522});});})[_0x88d7('0x24')](function(){_0xc28154[_0x88d7('0x7e')](function(_0xe2f41f){socket[_0x88d7('0x7f')](_0x88d7('0x80'),{'UserId':_0xe2f41f['id'],'ChatQueueId':_0x60d4b2['id']});});});});});}})['then'](respondWithStatusCode(_0x2b2b41,null))[_0x88d7('0x2d')](handleError(_0x2b2b41,null));};exports[_0x88d7('0x81')]=function(_0x3dadec,_0x4a2dbb,_0x107e16){return db[_0x88d7('0x77')][_0x88d7('0x5b')]({'where':{'id':_0x3dadec[_0x88d7('0x49')][_0x88d7('0x82')]},'attributes':['id'],'include':[{'model':db[_0x88d7('0x6d')],'as':_0x88d7('0x78'),'attributes':['id'],'raw':!![]}]})[_0x88d7('0x24')](handleEntityNotFound(_0x4a2dbb,null))[_0x88d7('0x24')](function(_0x524579){var _0x2faeda=_['map'](_0x524579,'id');var _0x307b49=[];var _0x1df551=[];var _0x271d84=squel[_0x88d7('0x83')]();_0x271d84[_0x88d7('0x84')]('tq.TeamId')[_0x88d7('0x85')](_0x88d7('0x86'),'tq')[_0x88d7('0x87')](_0x88d7('0x88'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0x88d7('0x89'),_0x3dadec[_0x88d7('0x5e')]['id']);for(var _0xc89ffd=0x0;_0xc89ffd<_0x524579[_0x88d7('0x4e')];_0xc89ffd+=0x1){let _0x103ec6=_0x524579[_0xc89ffd];for(var _0x181287=0x0;_0x181287<_0x103ec6[_0x88d7('0x78')][_0x88d7('0x4e')];_0x181287+=0x1){let _0x349f97=_0x103ec6[_0x88d7('0x78')][_0x181287];var _0x197aea=_0x271d84[_0x88d7('0x8a')]();_0x197aea[_0x88d7('0x54')](_0x88d7('0x8b'),_0x349f97['id']);_0x1df551[_0x88d7('0x8c')](db[_0x88d7('0x7b')]['query'](_0x197aea[_0x88d7('0x8d')](),{'type':db['sequelize'][_0x88d7('0x8e')][_0x88d7('0x8f')]})[_0x88d7('0x24')](function(_0x4f3fa3){if(_0x4f3fa3[_0x88d7('0x4e')]===0x1){return _0x349f97['id'];}else{var _0x1071dc=_[_0x88d7('0x90')](_[_0x88d7('0x43')](_0x4f3fa3,_0x88d7('0x91')),function(_0x38bb9d){return _[_0x88d7('0x92')](_0x2faeda,_0x38bb9d);});if(_0x1071dc){return _0x349f97['id'];}}}));}}return BPromise['all'](_0x1df551)['then'](function(_0x2d0b2d){_0x307b49=_(_0x307b49)['union'](_0x2d0b2d)['compact']()['value']();return db[_0x88d7('0x44')]['find']({'where':{'id':_0x3dadec[_0x88d7('0x5e')]['id']}})[_0x88d7('0x24')](function(_0x2870c5){return db[_0x88d7('0x7b')][_0x88d7('0x93')](function(_0x55f253){return _0x2870c5[_0x88d7('0x81')](_0x3dadec[_0x88d7('0x49')][_0x88d7('0x82')],{'transaction':_0x55f253})[_0x88d7('0x24')](function(){if(!_[_0x88d7('0x94')](_0x307b49)){return _0x2870c5[_0x88d7('0x95')](_0x307b49,{'transaction':_0x55f253});}})['then'](function(){_0x307b49[_0x88d7('0x7e')](function(_0x17119b){socket['emit'](_0x88d7('0x96'),{'UserId':_0x17119b,'ChatQueueId':_0x2870c5['id']});});});});});});})[_0x88d7('0x24')](respondWithStatusCode(_0x4a2dbb,null))['catch'](handleError(_0x4a2dbb,null));};exports[_0x88d7('0x97')]=function(_0xe6a7eb,_0xc88f89,_0x24a8fa){return db[_0x88d7('0x44')][_0x88d7('0x5f')]({'where':{'id':_0xe6a7eb[_0x88d7('0x5e')]['id']}})[_0x88d7('0x24')](handleEntityNotFound(_0xc88f89,null))[_0x88d7('0x24')](function(_0x1cb0c3){if(_0x1cb0c3){return _0x1cb0c3['addAgents'](_0xe6a7eb[_0x88d7('0x66')][_0x88d7('0x82')],_['omit'](_0xe6a7eb['body'],['ids','id'])||{})[_0x88d7('0x98')](function(_0x2f1dc3){for(var _0xc1d366=0x0;_0xc1d366<_0xe6a7eb['body']['ids'][_0x88d7('0x4e')];_0xc1d366+=0x1){socket[_0x88d7('0x7f')](_0x88d7('0x80'),{'UserId':Number(_0xe6a7eb[_0x88d7('0x66')][_0x88d7('0x82')][_0xc1d366]),'ChatQueueId':Number(_0xe6a7eb['params']['id'])});}return _0x2f1dc3;});}})[_0x88d7('0x24')](respondWithResult(_0xc88f89,null))[_0x88d7('0x2d')](handleError(_0xc88f89,null));};exports[_0x88d7('0x95')]=function(_0x839e47,_0x4a5ffa,_0x3651ea){return db[_0x88d7('0x44')][_0x88d7('0x5f')]({'where':{'id':_0x839e47['params']['id']}})['then'](handleEntityNotFound(_0x4a5ffa,null))[_0x88d7('0x24')](function(_0xec0b7){if(_0xec0b7){return _0xec0b7[_0x88d7('0x95')](_0x839e47[_0x88d7('0x49')][_0x88d7('0x82')])['then'](function(){if(_[_0x88d7('0x99')](_0x839e47[_0x88d7('0x49')][_0x88d7('0x82')])){for(var _0x4814a4=0x0;_0x4814a4<_0x839e47[_0x88d7('0x49')]['ids'][_0x88d7('0x4e')];_0x4814a4+=0x1){socket[_0x88d7('0x7f')](_0x88d7('0x96'),{'UserId':Number(_0x839e47[_0x88d7('0x49')]['ids'][_0x4814a4]),'ChatQueueId':Number(_0x839e47[_0x88d7('0x5e')]['id'])});}}else{socket[_0x88d7('0x7f')](_0x88d7('0x96'),{'UserId':Number(_0x839e47['query']['ids']),'ChatQueueId':Number(_0x839e47[_0x88d7('0x5e')]['id'])});}});}})[_0x88d7('0x24')](respondWithStatusCode(_0x4a5ffa,null))[_0x88d7('0x2d')](handleError(_0x4a5ffa,null));};exports[_0x88d7('0x9a')]=function(_0x41d391,_0x5cd7d3,_0x12c21e){var _0x3d645b={};var _0x1a713a={};var _0x1a0d35;var _0x3d7727;return db[_0x88d7('0x44')][_0x88d7('0x69')]({'where':{'id':_0x41d391[_0x88d7('0x5e')]['id']}})['then'](handleEntityNotFound(_0x5cd7d3,null))[_0x88d7('0x24')](function(_0x567e80){if(_0x567e80){_0x1a0d35=_0x567e80;_0x1a713a[_0x88d7('0x47')]=_[_0x88d7('0x48')](db[_0x88d7('0x6d')][_0x88d7('0x45')]);_0x1a713a[_0x88d7('0x49')]=_[_0x88d7('0x48')](_0x41d391[_0x88d7('0x49')]);_0x1a713a[_0x88d7('0x4a')]=_[_0x88d7('0x4b')](_0x1a713a[_0x88d7('0x47')],_0x1a713a[_0x88d7('0x49')]);_0x3d645b['attributes']=_[_0x88d7('0x4b')](_0x1a713a[_0x88d7('0x47')],qs[_0x88d7('0x4c')](_0x41d391[_0x88d7('0x49')][_0x88d7('0x4c')]));_0x3d645b[_0x88d7('0x4d')]=_0x3d645b['attributes']['length']?_0x3d645b[_0x88d7('0x4d')]:_0x1a713a[_0x88d7('0x47')];_0x3d645b[_0x88d7('0x6b')]=qs[_0x88d7('0x51')](_0x41d391[_0x88d7('0x49')][_0x88d7('0x51')]);_0x3d645b[_0x88d7('0x54')]=qs[_0x88d7('0x4a')](_[_0x88d7('0x52')](_0x41d391[_0x88d7('0x49')],_0x1a713a[_0x88d7('0x4a')]));if(_0x41d391['query'][_0x88d7('0x53')]){_0x3d645b['where']=_[_0x88d7('0x55')](_0x3d645b[_0x88d7('0x54')],{'$or':_[_0x88d7('0x43')](_0x3d645b['attributes'],function(_0x348535){var _0x193852={};_0x193852[_0x348535]={'$like':'%'+_0x41d391['query'][_0x88d7('0x53')]+'%'};return _0x193852;})});}_0x3d645b=_[_0x88d7('0x55')]({},_0x3d645b,_0x41d391['options']);return _0x1a0d35[_0x88d7('0x9a')](_0x3d645b);}})[_0x88d7('0x24')](function(_0x1af4d5){if(_0x1af4d5){_0x3d7727=_0x1af4d5[_0x88d7('0x4e')];if(!_0x41d391['query'][_0x88d7('0x4f')](_0x88d7('0x50'))){_0x3d645b['limit']=qs[_0x88d7('0x34')](_0x41d391[_0x88d7('0x49')][_0x88d7('0x34')]);_0x3d645b[_0x88d7('0x32')]=qs['offset'](_0x41d391[_0x88d7('0x49')][_0x88d7('0x32')]);}return _0x1a0d35[_0x88d7('0x9a')](_0x3d645b);}})['then'](function(_0x4e1234){if(_0x4e1234){return _0x4e1234?{'count':_0x3d7727,'rows':_0x4e1234}:null;}})[_0x88d7('0x24')](respondWithResult(_0x5cd7d3,null))['catch'](handleError(_0x5cd7d3,null));};
\ No newline at end of file
+var _0xc07d=['every','TeamId','all','union','compact','removeAgents','emit','userChatQueue:remove','addAgents','omit','spread','userChatQueue:save','isArray','getAgents','eml-format','rimraf','fast-json-patch','moment','mustache','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','register','jayson/promise','client','http','request','then','ChatQueue,\x20%s,\x20%s','debug','request\x20sent','error','code','message','info','catch','end','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','destroy','get','ChatQueues','sendStatus','stack','name','send','index','map','ChatQueue','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','sort','where','merge','VIRTUAL','options','include','findAll','rows','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','findOne','UserChatQueue','hasOwnProperty','nolimit','order','pick','ChatQueueId','filter','User','findAndCountAll','agent','chatPause','createdAt','format','%s/%s','getTeams','addTeams','ids','Team','Agents','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','removeTeams','field','tq.TeamId','from','team_has_chat_queues','join','user_has_teams','ChatQueueId\x20=\x20?','clone','push','toString','SELECT'];(function(_0x2b49cc,_0x358e17){var _0x199256=function(_0x297325){while(--_0x297325){_0x2b49cc['push'](_0x2b49cc['shift']());}};_0x199256(++_0x358e17);}(_0xc07d,0xa2));var _0xdc07=function(_0x446e5a,_0x1b7c65){_0x446e5a=_0x446e5a-0x0;var _0x44d13a=_0xc07d[_0x446e5a];return _0x44d13a;};'use strict';var emlformat=require(_0xdc07('0x0'));var rimraf=require(_0xdc07('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdc07('0x2'));var rp=require('request-promise');var moment=require(_0xdc07('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xdc07('0x4'));var util=require('util');var path=require(_0xdc07('0x5'));var sox=require('sox');var csv=require(_0xdc07('0x6'));var ejs=require(_0xdc07('0x7'));var fs=require('fs');var fs_extra=require(_0xdc07('0x8'));var _=require(_0xdc07('0x9'));var squel=require(_0xdc07('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xdc07('0xb'));var toCsv=require(_0xdc07('0x6'));var querystring=require(_0xdc07('0xc'));var Papa=require(_0xdc07('0xd'));var Redis=require(_0xdc07('0xe'));var authService=require(_0xdc07('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdc07('0x10'));var logger=require(_0xdc07('0x11'))(_0xdc07('0x12'));var utils=require(_0xdc07('0x13'));var config=require(_0xdc07('0x14'));var licenseUtil=require(_0xdc07('0x15'));var db=require(_0xdc07('0x16'))['db'];config[_0xdc07('0x17')]=_[_0xdc07('0x18')](config[_0xdc07('0x17')],{'host':_0xdc07('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xdc07('0x17')]));require('./chatQueue.socket')[_0xdc07('0x1a')](socket);var jayson=require(_0xdc07('0x1b'));var client=jayson[_0xdc07('0x1c')][_0xdc07('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x3241d5,_0x40bf88,_0x81c2a7,_0x3966b7){return new BPromise(function(_0x272b68,_0x406bc4){var _0x5ac477=_0x3966b7||client;return _0x5ac477[_0xdc07('0x1e')](_0x3241d5,_0x81c2a7)[_0xdc07('0x1f')](function(_0x246b7b){logger['info'](_0xdc07('0x20'),_0x40bf88,'request\x20sent');logger[_0xdc07('0x21')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x40bf88,_0xdc07('0x22'),JSON['stringify'](_0x246b7b));if(_0x246b7b[_0xdc07('0x23')]){if(_0x246b7b['error'][_0xdc07('0x24')]===0x1f4){logger[_0xdc07('0x23')]('ChatQueue,\x20%s,\x20%s',_0x40bf88,_0x246b7b[_0xdc07('0x23')]['message']);return _0x406bc4(_0x246b7b[_0xdc07('0x23')][_0xdc07('0x25')]);}logger[_0xdc07('0x23')](_0xdc07('0x20'),_0x40bf88,_0x246b7b[_0xdc07('0x23')][_0xdc07('0x25')]);return _0x272b68(_0x246b7b[_0xdc07('0x23')][_0xdc07('0x25')]);}else{logger[_0xdc07('0x26')](_0xdc07('0x20'),_0x40bf88,_0xdc07('0x22'));_0x272b68(_0x246b7b['result'][_0xdc07('0x25')]);}})[_0xdc07('0x27')](function(_0x5aa0f6){logger['error'](_0xdc07('0x20'),_0x40bf88,_0x5aa0f6);_0x406bc4(_0x5aa0f6);});});}function respondWithStatusCode(_0x3a5657,_0x3b716d){_0x3b716d=_0x3b716d||0xcc;return function(_0x487e11){if(_0x487e11){return _0x3a5657['sendStatus'](_0x3b716d);}return _0x3a5657['status'](_0x3b716d)[_0xdc07('0x28')]();};}function respondWithResult(_0x6d82c6,_0x181fb4){_0x181fb4=_0x181fb4||0xc8;return function(_0x3c6d6e){if(_0x3c6d6e){return _0x6d82c6[_0xdc07('0x29')](_0x181fb4)['json'](_0x3c6d6e);}};}function respondWithFilteredResult(_0x3821e0,_0x2cc57b){return function(_0x27b9cf){if(_0x27b9cf){var _0x24e98b=typeof _0x2cc57b[_0xdc07('0x2a')]===_0xdc07('0x2b')&&typeof _0x2cc57b[_0xdc07('0x2c')]===_0xdc07('0x2b');var _0x15692f=_0x27b9cf['count'];var _0x4d50d2=_0x24e98b?0x0:_0x2cc57b['offset'];var _0x5a73a0=_0x24e98b?_0x27b9cf[_0xdc07('0x2d')]:_0x2cc57b[_0xdc07('0x2a')]+_0x2cc57b[_0xdc07('0x2c')];var _0x446be6;if(_0x5a73a0>=_0x15692f){_0x5a73a0=_0x15692f;_0x446be6=0xc8;}else{_0x446be6=0xce;}_0x3821e0[_0xdc07('0x29')](_0x446be6);return _0x3821e0[_0xdc07('0x2e')](_0xdc07('0x2f'),_0x4d50d2+'-'+_0x5a73a0+'/'+_0x15692f)[_0xdc07('0x30')](_0x27b9cf);}return null;};}function patchUpdates(_0x411570){return function(_0x3cf22f){try{jsonpatch['apply'](_0x3cf22f,_0x411570,!![]);}catch(_0x13e8da){return BPromise[_0xdc07('0x31')](_0x13e8da);}return _0x3cf22f[_0xdc07('0x32')]();};}function saveUpdates(_0x53f2e2,_0x50124e){return function(_0x126c85){if(_0x126c85){return _0x126c85[_0xdc07('0x33')](_0x53f2e2)['then'](function(_0x681550){return _0x681550;});}return null;};}function removeEntity(_0x309495,_0x76f25b){return function(_0x1dd014){if(_0x1dd014){return _0x1dd014[_0xdc07('0x34')]()['then'](function(){var _0xa2d502=_0x1dd014[_0xdc07('0x35')]({'plain':!![]});var _0x1840c8=_0xdc07('0x36');return db['UserProfileResource'][_0xdc07('0x34')]({'where':{'type':_0x1840c8,'resourceId':_0xa2d502['id']}})[_0xdc07('0x1f')](function(){return _0x1dd014;});})['then'](function(){_0x309495['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x330517,_0x2e8bbb){return function(_0xbc7276){if(!_0xbc7276){_0x330517[_0xdc07('0x37')](0x194);}return _0xbc7276;};}function handleError(_0x544d69,_0x554af9){_0x554af9=_0x554af9||0x1f4;return function(_0x10a88f){logger[_0xdc07('0x23')](_0x10a88f[_0xdc07('0x38')]);if(_0x10a88f[_0xdc07('0x39')]){delete _0x10a88f[_0xdc07('0x39')];}_0x544d69['status'](_0x554af9)[_0xdc07('0x3a')](_0x10a88f);};}exports[_0xdc07('0x3b')]=function(_0x50c058,_0x35bb80){var _0x3c44bf={},_0x3b8fcd={},_0x3f3457={'count':0x0,'rows':[]};var _0x13b496=_[_0xdc07('0x3c')](db[_0xdc07('0x3d')][_0xdc07('0x3e')],function(_0x456573){return{'name':_0x456573[_0xdc07('0x3f')],'type':_0x456573[_0xdc07('0x40')][_0xdc07('0x41')]};});_0x3b8fcd[_0xdc07('0x42')]=_[_0xdc07('0x3c')](_0x13b496,_0xdc07('0x39'));_0x3b8fcd[_0xdc07('0x43')]=_[_0xdc07('0x44')](_0x50c058['query']);_0x3b8fcd[_0xdc07('0x45')]=_['intersection'](_0x3b8fcd[_0xdc07('0x42')],_0x3b8fcd['query']);_0x3c44bf[_0xdc07('0x46')]=_[_0xdc07('0x47')](_0x3b8fcd['model'],qs[_0xdc07('0x48')](_0x50c058['query']['fields']));_0x3c44bf[_0xdc07('0x46')]=_0x3c44bf[_0xdc07('0x46')][_0xdc07('0x49')]?_0x3c44bf[_0xdc07('0x46')]:_0x3b8fcd[_0xdc07('0x42')];if(!_0x50c058['query']['hasOwnProperty']('nolimit')){_0x3c44bf['limit']=qs[_0xdc07('0x2c')](_0x50c058['query'][_0xdc07('0x2c')]);_0x3c44bf[_0xdc07('0x2a')]=qs[_0xdc07('0x2a')](_0x50c058[_0xdc07('0x43')][_0xdc07('0x2a')]);}_0x3c44bf['order']=qs[_0xdc07('0x4a')](_0x50c058['query'][_0xdc07('0x4a')]);_0x3c44bf[_0xdc07('0x4b')]=qs[_0xdc07('0x45')](_['pick'](_0x50c058[_0xdc07('0x43')],_0x3b8fcd[_0xdc07('0x45')]),_0x13b496);if(_0x50c058[_0xdc07('0x43')]['filter']){_0x3c44bf[_0xdc07('0x4b')]=_[_0xdc07('0x4c')](_0x3c44bf['where'],{'$or':_[_0xdc07('0x3c')](_0x13b496,function(_0x87bf44){if(_0x87bf44[_0xdc07('0x40')]!==_0xdc07('0x4d')){var _0x4e24fc={};_0x4e24fc[_0x87bf44['name']]={'$like':'%'+_0x50c058[_0xdc07('0x43')]['filter']+'%'};return _0x4e24fc;}})});}_0x3c44bf=_[_0xdc07('0x4c')]({},_0x3c44bf,_0x50c058[_0xdc07('0x4e')]);var _0x4c3293={'where':_0x3c44bf[_0xdc07('0x4b')]};return db[_0xdc07('0x3d')][_0xdc07('0x2d')](_0x4c3293)[_0xdc07('0x1f')](function(_0x11dc10){_0x3f3457['count']=_0x11dc10;if(_0x50c058['query']['includeAll']){_0x3c44bf[_0xdc07('0x4f')]=[{'all':!![]}];}return db[_0xdc07('0x3d')][_0xdc07('0x50')](_0x3c44bf);})[_0xdc07('0x1f')](function(_0x5086ae){_0x3f3457[_0xdc07('0x51')]=_0x5086ae;return _0x3f3457;})[_0xdc07('0x1f')](respondWithFilteredResult(_0x35bb80,_0x3c44bf))[_0xdc07('0x27')](handleError(_0x35bb80,null));};exports['show']=function(_0x49ff5f,_0x4381fe){var _0x254302={'raw':!![],'where':{'id':_0x49ff5f['params']['id']}},_0x2c6090={};_0x2c6090[_0xdc07('0x42')]=_[_0xdc07('0x44')](db[_0xdc07('0x3d')][_0xdc07('0x3e')]);_0x2c6090[_0xdc07('0x43')]=_[_0xdc07('0x44')](_0x49ff5f[_0xdc07('0x43')]);_0x2c6090[_0xdc07('0x45')]=_['intersection'](_0x2c6090[_0xdc07('0x42')],_0x2c6090['query']);_0x254302[_0xdc07('0x46')]=_['intersection'](_0x2c6090['model'],qs[_0xdc07('0x48')](_0x49ff5f[_0xdc07('0x43')]['fields']));_0x254302[_0xdc07('0x46')]=_0x254302[_0xdc07('0x46')][_0xdc07('0x49')]?_0x254302[_0xdc07('0x46')]:_0x2c6090[_0xdc07('0x42')];if(_0x49ff5f[_0xdc07('0x43')]['includeAll']){_0x254302['include']=[{'all':!![]}];}_0x254302=_[_0xdc07('0x4c')]({},_0x254302,_0x49ff5f[_0xdc07('0x4e')]);return db[_0xdc07('0x3d')]['find'](_0x254302)[_0xdc07('0x1f')](handleEntityNotFound(_0x4381fe,null))[_0xdc07('0x1f')](respondWithResult(_0x4381fe,null))[_0xdc07('0x27')](handleError(_0x4381fe,null));};exports[_0xdc07('0x52')]=function(_0x5bddb5,_0x8d9d9e){return db[_0xdc07('0x3d')][_0xdc07('0x52')](_0x5bddb5[_0xdc07('0x53')],{})[_0xdc07('0x1f')](function(_0x35c0c5){var _0x17c04e=_0x5bddb5['user']['get']({'plain':!![]});if(!_0x17c04e)throw new Error(_0xdc07('0x54'));if(_0x17c04e['role']===_0xdc07('0x55')){var _0x213aa1=_0x35c0c5[_0xdc07('0x35')]({'plain':!![]});var _0x343b9d=_0xdc07('0x36');return db[_0xdc07('0x56')][_0xdc07('0x57')]({'where':{'name':_0x343b9d,'userProfileId':_0x17c04e[_0xdc07('0x58')]},'raw':!![]})[_0xdc07('0x1f')](function(_0x4f625e){if(_0x4f625e&&_0x4f625e[_0xdc07('0x59')]===0x0){return db['UserProfileResource'][_0xdc07('0x52')]({'name':_0x213aa1[_0xdc07('0x39')],'resourceId':_0x213aa1['id'],'type':_0x4f625e[_0xdc07('0x39')],'sectionId':_0x4f625e['id']},{})[_0xdc07('0x1f')](function(){return _0x35c0c5;});}else{return _0x35c0c5;}})[_0xdc07('0x27')](function(_0x15fd28){logger[_0xdc07('0x23')](_0xdc07('0x5a'),_0x15fd28);throw _0x15fd28;});}return _0x35c0c5;})[_0xdc07('0x1f')](respondWithResult(_0x8d9d9e,0xc9))['catch'](handleError(_0x8d9d9e,null));};exports['update']=function(_0x19691e,_0x734314){if(_0x19691e['body']['id']){delete _0x19691e['body']['id'];}return db[_0xdc07('0x3d')][_0xdc07('0x57')]({'where':{'id':_0x19691e['params']['id']}})['then'](handleEntityNotFound(_0x734314,null))[_0xdc07('0x1f')](saveUpdates(_0x19691e[_0xdc07('0x53')],null))[_0xdc07('0x1f')](respondWithResult(_0x734314,null))[_0xdc07('0x27')](handleError(_0x734314,null));};exports[_0xdc07('0x34')]=function(_0x37ec92,_0x52873f){return db['ChatQueue']['find']({'where':{'id':_0x37ec92[_0xdc07('0x5b')]['id']}})[_0xdc07('0x1f')](handleEntityNotFound(_0x52873f,null))[_0xdc07('0x1f')](removeEntity(_0x52873f,null))[_0xdc07('0x27')](handleError(_0x52873f,null));};exports[_0xdc07('0x5c')]=function(_0x50da68,_0x20f658){return db[_0xdc07('0x3d')][_0xdc07('0x5c')]()[_0xdc07('0x1f')](respondWithResult(_0x20f658,null))[_0xdc07('0x27')](handleError(_0x20f658,null));};exports[_0xdc07('0x5d')]=function(_0x4771c3,_0x58be89,_0x1b2266){var _0x382ce3={'raw':!![],'where':{}},_0x54d919={},_0x25da59;return db[_0xdc07('0x3d')][_0xdc07('0x5e')]({'where':{'id':_0x4771c3[_0xdc07('0x5b')]['id']}})[_0xdc07('0x1f')](handleEntityNotFound(_0x58be89,null))['then'](function(_0x424d40){if(_0x424d40){_0x25da59=_0x424d40[_0xdc07('0x35')]({'plain':!![]});_0x54d919[_0xdc07('0x42')]=_['keys'](db[_0xdc07('0x5f')]['rawAttributes']);_0x54d919[_0xdc07('0x43')]=_[_0xdc07('0x44')](_0x4771c3['query']);_0x54d919[_0xdc07('0x45')]=_['intersection'](_0x54d919['model'],_0x54d919[_0xdc07('0x43')]);_0x382ce3[_0xdc07('0x46')]=_[_0xdc07('0x47')](_0x54d919[_0xdc07('0x42')],qs['fields'](_0x4771c3[_0xdc07('0x43')][_0xdc07('0x48')]));_0x382ce3[_0xdc07('0x46')]=_0x382ce3[_0xdc07('0x46')][_0xdc07('0x49')]?_0x382ce3[_0xdc07('0x46')]:_0x54d919[_0xdc07('0x42')];if(!_0x4771c3[_0xdc07('0x43')][_0xdc07('0x60')](_0xdc07('0x61'))){_0x382ce3[_0xdc07('0x2c')]=qs[_0xdc07('0x2c')](_0x4771c3[_0xdc07('0x43')][_0xdc07('0x2c')]);_0x382ce3['offset']=qs[_0xdc07('0x2a')](_0x4771c3[_0xdc07('0x43')]['offset']);}_0x382ce3[_0xdc07('0x62')]=qs[_0xdc07('0x4a')](_0x4771c3[_0xdc07('0x43')][_0xdc07('0x4a')]);_0x382ce3['where']=qs[_0xdc07('0x45')](_[_0xdc07('0x63')](_0x4771c3['query'],_0x54d919[_0xdc07('0x45')]));_0x382ce3['where'][_0xdc07('0x64')]=_0x424d40['id'];if(_0x4771c3[_0xdc07('0x43')][_0xdc07('0x65')]){_0x382ce3['where']=_['merge'](_0x382ce3[_0xdc07('0x4b')],{'$or':_['map'](_0x382ce3['attributes'],function(_0x2e5857){var _0x117e82={};_0x117e82[_0x2e5857]={'$like':'%'+_0x4771c3[_0xdc07('0x43')][_0xdc07('0x65')]+'%'};return _0x117e82;})});}_0x382ce3=_['merge']({},_0x382ce3,_0x4771c3['options']);return db[_0xdc07('0x5f')]['findAll'](_0x382ce3);}})['then'](function(_0x433896){if(_0x433896){return db[_0xdc07('0x66')][_0xdc07('0x67')]({'where':{'id':_['map'](_0x433896,'UserId'),'role':_0xdc07('0x68')},'attributes':['id',_0xdc07('0x39'),_0xdc07('0x69'),'updatedAt',_0xdc07('0x6a')]});}})[_0xdc07('0x1f')](function(_0x3c4db1){if(_0x3c4db1){return{'count':_0x3c4db1[_0xdc07('0x2d')],'rows':_[_0xdc07('0x3c')](_0x3c4db1[_0xdc07('0x51')],function(_0x57d5b4){return{'membername':_0x57d5b4['name'],'UserId':_0x57d5b4['id'],'queue_name':_0x25da59[_0xdc07('0x39')],'ChatQueueId':_0x25da59['id'],'interface':util[_0xdc07('0x6b')](_0xdc07('0x6c'),'SIP',_0x57d5b4[_0xdc07('0x39')]),'penalty':0x0,'paused':_0x57d5b4[_0xdc07('0x69')],'createdAt':_0x57d5b4['createdAt'],'updatedAt':_0x57d5b4['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xdc07('0x1f')](respondWithFilteredResult(_0x58be89,_0x382ce3))[_0xdc07('0x27')](handleError(_0x58be89,null));};exports['getTeams']=function(_0x212df7,_0x30a0b2,_0x38f5c7){var _0xeb8fd9={};var _0x32bf47={};var _0x1f175d;var _0x1183a3;return db['ChatQueue']['findOne']({'where':{'id':_0x212df7[_0xdc07('0x5b')]['id']}})[_0xdc07('0x1f')](handleEntityNotFound(_0x30a0b2,null))[_0xdc07('0x1f')](function(_0x21edb1){if(_0x21edb1){_0x1f175d=_0x21edb1;_0x32bf47['model']=_[_0xdc07('0x44')](db['Team'][_0xdc07('0x3e')]);_0x32bf47[_0xdc07('0x43')]=_[_0xdc07('0x44')](_0x212df7[_0xdc07('0x43')]);_0x32bf47[_0xdc07('0x45')]=_[_0xdc07('0x47')](_0x32bf47[_0xdc07('0x42')],_0x32bf47['query']);_0xeb8fd9[_0xdc07('0x46')]=_['intersection'](_0x32bf47[_0xdc07('0x42')],qs[_0xdc07('0x48')](_0x212df7['query'][_0xdc07('0x48')]));_0xeb8fd9[_0xdc07('0x46')]=_0xeb8fd9[_0xdc07('0x46')][_0xdc07('0x49')]?_0xeb8fd9[_0xdc07('0x46')]:_0x32bf47[_0xdc07('0x42')];_0xeb8fd9[_0xdc07('0x62')]=qs[_0xdc07('0x4a')](_0x212df7[_0xdc07('0x43')]['sort']);_0xeb8fd9[_0xdc07('0x4b')]=qs[_0xdc07('0x45')](_[_0xdc07('0x63')](_0x212df7[_0xdc07('0x43')],_0x32bf47[_0xdc07('0x45')]));if(_0x212df7[_0xdc07('0x43')]['filter']){_0xeb8fd9['where']=_[_0xdc07('0x4c')](_0xeb8fd9[_0xdc07('0x4b')],{'$or':_[_0xdc07('0x3c')](_0xeb8fd9[_0xdc07('0x46')],function(_0x35c5cc){var _0x3c005e={};_0x3c005e[_0x35c5cc]={'$like':'%'+_0x212df7[_0xdc07('0x43')][_0xdc07('0x65')]+'%'};return _0x3c005e;})});}_0xeb8fd9=_[_0xdc07('0x4c')]({},_0xeb8fd9,_0x212df7[_0xdc07('0x4e')]);return _0x1f175d[_0xdc07('0x6d')](_0xeb8fd9);}})['then'](function(_0x24d9ad){if(_0x24d9ad){_0x1183a3=_0x24d9ad[_0xdc07('0x49')];if(!_0x212df7[_0xdc07('0x43')][_0xdc07('0x60')](_0xdc07('0x61'))){_0xeb8fd9[_0xdc07('0x2c')]=qs[_0xdc07('0x2c')](_0x212df7[_0xdc07('0x43')][_0xdc07('0x2c')]);_0xeb8fd9[_0xdc07('0x2a')]=qs[_0xdc07('0x2a')](_0x212df7['query'][_0xdc07('0x2a')]);}return _0x1f175d['getTeams'](_0xeb8fd9);}})[_0xdc07('0x1f')](function(_0x26b645){if(_0x26b645){return _0x26b645?{'count':_0x1183a3,'rows':_0x26b645}:null;}})[_0xdc07('0x1f')](respondWithResult(_0x30a0b2,null))[_0xdc07('0x27')](handleError(_0x30a0b2,null));};exports[_0xdc07('0x6e')]=function(_0x38c5ed,_0x337f58,_0xb652a4){var _0x474216=_0x38c5ed[_0xdc07('0x53')][_0xdc07('0x6f')];return db[_0xdc07('0x70')][_0xdc07('0x50')]({'where':{'id':_0x474216},'attributes':['id'],'include':[{'model':db[_0xdc07('0x66')],'as':_0xdc07('0x71'),'attributes':['id',_0xdc07('0x39'),'online',_0xdc07('0x72'),_0xdc07('0x73')],'raw':!![]}]})['then'](function(_0x5aa893){if(_0x5aa893){var _0x12bd86=_[_0xdc07('0x74')](_0x5aa893,function(_0x50c560){var _0x37155d=_0x50c560[_0xdc07('0x35')]({'plain':!![]});return _0x37155d[_0xdc07('0x71')];});return db['ChatQueue']['find']({'where':{'id':_0x38c5ed[_0xdc07('0x5b')]['id']}})['then'](function(_0x516be7){return db[_0xdc07('0x75')][_0xdc07('0x76')](function(_0x50f527){return _0x516be7['addTeams'](_0x474216,{'transaction':_0x50f527})[_0xdc07('0x1f')](function(){return BPromise[_0xdc07('0x77')](_0x12bd86,function(_0x2803f3){return db[_0xdc07('0x5f')][_0xdc07('0x78')]({'where':{'UserId':_0x2803f3['id'],'ChatQueueId':_0x38c5ed[_0xdc07('0x5b')]['id']},'transaction':_0x50f527});});})['then'](function(){_0x12bd86[_0xdc07('0x79')](function(_0x379b90){socket['emit']('userChatQueue:save',{'UserId':_0x379b90['id'],'ChatQueueId':_0x516be7['id']});});});});});}})[_0xdc07('0x1f')](respondWithStatusCode(_0x337f58,null))[_0xdc07('0x27')](handleError(_0x337f58,null));};exports[_0xdc07('0x7a')]=function(_0x280bc1,_0x198319,_0x778403){return db[_0xdc07('0x70')]['findAll']({'where':{'id':_0x280bc1['query']['ids']},'attributes':['id'],'include':[{'model':db[_0xdc07('0x66')],'as':_0xdc07('0x71'),'attributes':['id'],'raw':!![]}]})[_0xdc07('0x1f')](handleEntityNotFound(_0x198319,null))[_0xdc07('0x1f')](function(_0x2e61c3){var _0x17f377=_[_0xdc07('0x3c')](_0x2e61c3,'id');var _0x3c5409=[];var _0x569267=[];var _0x9e3931=squel['select']();_0x9e3931[_0xdc07('0x7b')](_0xdc07('0x7c'))[_0xdc07('0x7d')](_0xdc07('0x7e'),'tq')[_0xdc07('0x7f')](_0xdc07('0x80'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xdc07('0x4b')](_0xdc07('0x81'),_0x280bc1[_0xdc07('0x5b')]['id']);for(var _0x35e778=0x0;_0x35e778<_0x2e61c3[_0xdc07('0x49')];_0x35e778+=0x1){let _0x25eb01=_0x2e61c3[_0x35e778];for(var _0x49e051=0x0;_0x49e051<_0x25eb01[_0xdc07('0x71')]['length'];_0x49e051+=0x1){let _0x5f1f42=_0x25eb01['Agents'][_0x49e051];var _0x7d898f=_0x9e3931[_0xdc07('0x82')]();_0x7d898f[_0xdc07('0x4b')]('ut.UserId\x20=\x20?',_0x5f1f42['id']);_0x569267[_0xdc07('0x83')](db[_0xdc07('0x75')][_0xdc07('0x43')](_0x7d898f[_0xdc07('0x84')](),{'type':db[_0xdc07('0x75')]['QueryTypes'][_0xdc07('0x85')]})[_0xdc07('0x1f')](function(_0x53c648){if(_0x53c648[_0xdc07('0x49')]===0x1){return _0x5f1f42['id'];}else{var _0x13ee2b=_[_0xdc07('0x86')](_['map'](_0x53c648,_0xdc07('0x87')),function(_0x4beedf){return _['includes'](_0x17f377,_0x4beedf);});if(_0x13ee2b){return _0x5f1f42['id'];}}}));}}return BPromise[_0xdc07('0x88')](_0x569267)[_0xdc07('0x1f')](function(_0x267f19){_0x3c5409=_(_0x3c5409)[_0xdc07('0x89')](_0x267f19)[_0xdc07('0x8a')]()['value']();return db[_0xdc07('0x3d')][_0xdc07('0x57')]({'where':{'id':_0x280bc1[_0xdc07('0x5b')]['id']}})[_0xdc07('0x1f')](function(_0x29f04c){return db[_0xdc07('0x75')][_0xdc07('0x76')](function(_0x18a485){return _0x29f04c[_0xdc07('0x7a')](_0x280bc1[_0xdc07('0x43')][_0xdc07('0x6f')],{'transaction':_0x18a485})['then'](function(){if(!_['isEmpty'](_0x3c5409)){return _0x29f04c[_0xdc07('0x8b')](_0x3c5409,{'transaction':_0x18a485});}})[_0xdc07('0x1f')](function(){_0x3c5409[_0xdc07('0x79')](function(_0x3696c5){socket[_0xdc07('0x8c')](_0xdc07('0x8d'),{'UserId':_0x3696c5,'ChatQueueId':_0x29f04c['id']});});});});});});})[_0xdc07('0x1f')](respondWithStatusCode(_0x198319,null))['catch'](handleError(_0x198319,null));};exports['addAgents']=function(_0x6a1a93,_0x5684c0,_0xbefdc0){return db['ChatQueue'][_0xdc07('0x57')]({'where':{'id':_0x6a1a93[_0xdc07('0x5b')]['id']}})[_0xdc07('0x1f')](handleEntityNotFound(_0x5684c0,null))['then'](function(_0x295298){if(_0x295298){return _0x295298[_0xdc07('0x8e')](_0x6a1a93[_0xdc07('0x53')][_0xdc07('0x6f')],_[_0xdc07('0x8f')](_0x6a1a93[_0xdc07('0x53')],[_0xdc07('0x6f'),'id'])||{})[_0xdc07('0x90')](function(_0x409e77){for(var _0x379290=0x0;_0x379290<_0x6a1a93['body'][_0xdc07('0x6f')][_0xdc07('0x49')];_0x379290+=0x1){socket['emit'](_0xdc07('0x91'),{'UserId':Number(_0x6a1a93[_0xdc07('0x53')][_0xdc07('0x6f')][_0x379290]),'ChatQueueId':Number(_0x6a1a93[_0xdc07('0x5b')]['id'])});}return _0x409e77;});}})[_0xdc07('0x1f')](respondWithResult(_0x5684c0,null))[_0xdc07('0x27')](handleError(_0x5684c0,null));};exports[_0xdc07('0x8b')]=function(_0x3812fd,_0x4e11d9,_0x27b87c){return db[_0xdc07('0x3d')]['find']({'where':{'id':_0x3812fd['params']['id']}})[_0xdc07('0x1f')](handleEntityNotFound(_0x4e11d9,null))[_0xdc07('0x1f')](function(_0x3ccbc4){if(_0x3ccbc4){return _0x3ccbc4['removeAgents'](_0x3812fd['query']['ids'])[_0xdc07('0x1f')](function(){if(_[_0xdc07('0x92')](_0x3812fd['query']['ids'])){for(var _0x38a54e=0x0;_0x38a54e<_0x3812fd[_0xdc07('0x43')][_0xdc07('0x6f')][_0xdc07('0x49')];_0x38a54e+=0x1){socket[_0xdc07('0x8c')](_0xdc07('0x8d'),{'UserId':Number(_0x3812fd[_0xdc07('0x43')][_0xdc07('0x6f')][_0x38a54e]),'ChatQueueId':Number(_0x3812fd[_0xdc07('0x5b')]['id'])});}}else{socket[_0xdc07('0x8c')](_0xdc07('0x8d'),{'UserId':Number(_0x3812fd[_0xdc07('0x43')][_0xdc07('0x6f')]),'ChatQueueId':Number(_0x3812fd[_0xdc07('0x5b')]['id'])});}});}})[_0xdc07('0x1f')](respondWithStatusCode(_0x4e11d9,null))[_0xdc07('0x27')](handleError(_0x4e11d9,null));};exports['getAgents']=function(_0x220b7c,_0x41ae1b,_0x5dae67){var _0x321c87={};var _0x1dd2ab={};var _0xf318d7;var _0x11e337;return db[_0xdc07('0x3d')][_0xdc07('0x5e')]({'where':{'id':_0x220b7c[_0xdc07('0x5b')]['id']}})[_0xdc07('0x1f')](handleEntityNotFound(_0x41ae1b,null))['then'](function(_0x2e71b7){if(_0x2e71b7){_0xf318d7=_0x2e71b7;_0x1dd2ab[_0xdc07('0x42')]=_[_0xdc07('0x44')](db[_0xdc07('0x66')][_0xdc07('0x3e')]);_0x1dd2ab[_0xdc07('0x43')]=_[_0xdc07('0x44')](_0x220b7c[_0xdc07('0x43')]);_0x1dd2ab[_0xdc07('0x45')]=_[_0xdc07('0x47')](_0x1dd2ab[_0xdc07('0x42')],_0x1dd2ab[_0xdc07('0x43')]);_0x321c87[_0xdc07('0x46')]=_['intersection'](_0x1dd2ab[_0xdc07('0x42')],qs[_0xdc07('0x48')](_0x220b7c['query']['fields']));_0x321c87[_0xdc07('0x46')]=_0x321c87[_0xdc07('0x46')][_0xdc07('0x49')]?_0x321c87[_0xdc07('0x46')]:_0x1dd2ab[_0xdc07('0x42')];_0x321c87[_0xdc07('0x62')]=qs[_0xdc07('0x4a')](_0x220b7c[_0xdc07('0x43')]['sort']);_0x321c87['where']=qs[_0xdc07('0x45')](_[_0xdc07('0x63')](_0x220b7c[_0xdc07('0x43')],_0x1dd2ab['filters']));if(_0x220b7c[_0xdc07('0x43')][_0xdc07('0x65')]){_0x321c87['where']=_[_0xdc07('0x4c')](_0x321c87[_0xdc07('0x4b')],{'$or':_[_0xdc07('0x3c')](_0x321c87[_0xdc07('0x46')],function(_0x4b9549){var _0x2ad90b={};_0x2ad90b[_0x4b9549]={'$like':'%'+_0x220b7c['query'][_0xdc07('0x65')]+'%'};return _0x2ad90b;})});}_0x321c87=_['merge']({},_0x321c87,_0x220b7c[_0xdc07('0x4e')]);return _0xf318d7[_0xdc07('0x93')](_0x321c87);}})['then'](function(_0x76fe99){if(_0x76fe99){_0x11e337=_0x76fe99['length'];if(!_0x220b7c[_0xdc07('0x43')]['hasOwnProperty'](_0xdc07('0x61'))){_0x321c87[_0xdc07('0x2c')]=qs['limit'](_0x220b7c[_0xdc07('0x43')][_0xdc07('0x2c')]);_0x321c87['offset']=qs[_0xdc07('0x2a')](_0x220b7c[_0xdc07('0x43')][_0xdc07('0x2a')]);}return _0xf318d7[_0xdc07('0x93')](_0x321c87);}})[_0xdc07('0x1f')](function(_0x400ba2){if(_0x400ba2){return _0x400ba2?{'count':_0x11e337,'rows':_0x400ba2}:null;}})[_0xdc07('0x1f')](respondWithResult(_0x41ae1b,null))['catch'](handleError(_0x41ae1b,null));};
\ No newline at end of file
index dc1bf33..306292e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b61=['emit','hasOwnProperty','exports','events','../../mysqldb','ChatQueue','update','remove'];(function(_0x56b913,_0x3ddf4e){var _0x4d2bcf=function(_0x5994db){while(--_0x5994db){_0x56b913['push'](_0x56b913['shift']());}};_0x4d2bcf(++_0x3ddf4e);}(_0x9b61,0x6b));var _0x19b6=function(_0x18f8fe,_0x238539){_0x18f8fe=_0x18f8fe-0x0;var _0xb16bbf=_0x9b61[_0x18f8fe];return _0xb16bbf;};'use strict';var EventEmitter=require(_0x19b6('0x0'));var ChatQueue=require(_0x19b6('0x1'))['db'][_0x19b6('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x19b6('0x3'),'afterDestroy':_0x19b6('0x4')};function emitEvent(_0xf644e8){return function(_0x1c4cb9,_0x371136,_0x14fedd){ChatQueueEvents['emit'](_0xf644e8+':'+_0x1c4cb9['id'],_0x1c4cb9);ChatQueueEvents[_0x19b6('0x5')](_0xf644e8,_0x1c4cb9);_0x14fedd(null);};}for(var e in events){if(events[_0x19b6('0x6')](e)){var event=events[e];ChatQueue['hook'](e,emitEvent(event));}}module[_0x19b6('0x7')]=ChatQueueEvents;
\ No newline at end of file
+var _0x7fad=['emit','hook','exports','../../mysqldb','setMaxListeners','save','update','remove'];(function(_0x2d66f1,_0x5713b4){var _0x2c8138=function(_0x556625){while(--_0x556625){_0x2d66f1['push'](_0x2d66f1['shift']());}};_0x2c8138(++_0x5713b4);}(_0x7fad,0x1db));var _0xd7fa=function(_0x231b2e,_0x2a33f9){_0x231b2e=_0x231b2e-0x0;var _0x3feb2a=_0x7fad[_0x231b2e];return _0x3feb2a;};'use strict';var EventEmitter=require('events');var ChatQueue=require(_0xd7fa('0x0'))['db']['ChatQueue'];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xd7fa('0x1')](0x0);var events={'afterCreate':_0xd7fa('0x2'),'afterUpdate':_0xd7fa('0x3'),'afterDestroy':_0xd7fa('0x4')};function emitEvent(_0x33c68a){return function(_0x1d03c9,_0x20316e,_0x22a644){ChatQueueEvents[_0xd7fa('0x5')](_0x33c68a+':'+_0x1d03c9['id'],_0x1d03c9);ChatQueueEvents[_0xd7fa('0x5')](_0x33c68a,_0x1d03c9);_0x22a644(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatQueue[_0xd7fa('0x6')](e,emitEvent(event));}}module[_0xd7fa('0x7')]=ChatQueueEvents;
\ No newline at end of file
index 0337dda..dee847d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58b2=['define','ChatQueue','util','api','bluebird','request-promise','path','./chatQueue.attributes','exports'];(function(_0x2de9c0,_0x2ae1f2){var _0x1c4daa=function(_0x56c941){while(--_0x56c941){_0x2de9c0['push'](_0x2de9c0['shift']());}};_0x1c4daa(++_0x2ae1f2);}(_0x58b2,0xd1));var _0x258b=function(_0x5121f7,_0x189f9c){_0x5121f7=_0x5121f7-0x0;var _0x26fdf8=_0x58b2[_0x5121f7];return _0x26fdf8;};'use strict';var _=require('lodash');var util=require(_0x258b('0x0'));var logger=require('../../config/logger')(_0x258b('0x1'));var moment=require('moment');var BPromise=require(_0x258b('0x2'));var rp=require(_0x258b('0x3'));var fs=require('fs');var path=require(_0x258b('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x258b('0x5'));module[_0x258b('0x6')]=function(_0x26af14,_0x4c4c30){return _0x26af14[_0x258b('0x7')](_0x258b('0x8'),attributes,{'tableName':'chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7afc=['ChatQueue','chat_queues','moment','request-promise','path','rimraf','../../config/environment','./chatQueue.attributes','exports','define'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x7afc,0xde));var _0xc7af=function(_0x6d6a66,_0x2924af){_0x6d6a66=_0x6d6a66-0x0;var _0x11eb6e=_0x7afc[_0x6d6a66];return _0x11eb6e;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xc7af('0x0'));var BPromise=require('bluebird');var rp=require(_0xc7af('0x1'));var fs=require('fs');var path=require(_0xc7af('0x2'));var rimraf=require(_0xc7af('0x3'));var config=require(_0xc7af('0x4'));var attributes=require(_0xc7af('0x5'));module[_0xc7af('0x6')]=function(_0xb6e4eb,_0x420087){return _0xb6e4eb[_0xc7af('0x7')](_0xc7af('0x8'),attributes,{'tableName':_0xc7af('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5d80531..a403531 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x087b=['info','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatQueue,\x20%s,\x20%s','message','result','catch','GetChatQueue','findAll','options','raw','where','attributes','limit','include','map','model','ChatQueue','find','ShowChatQueue','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','register','request','then'];(function(_0x58175c,_0x2d9373){var _0x55b88f=function(_0x13ed84){while(--_0x13ed84){_0x58175c['push'](_0x58175c['shift']());}};_0x55b88f(++_0x2d9373);}(_0x087b,0x11a));var _0xb087=function(_0x2aec52,_0x59d962){_0x2aec52=_0x2aec52-0x0;var _0x3b8835=_0x087b[_0x2aec52];return _0x3b8835;};'use strict';var _=require(_0xb087('0x0'));var util=require(_0xb087('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb087('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb087('0x3'))['db'];var utils=require(_0xb087('0x4'));var logger=require(_0xb087('0x5'))(_0xb087('0x6'));var config=require(_0xb087('0x7'));var jayson=require(_0xb087('0x8'));var client=jayson[_0xb087('0x9')][_0xb087('0xa')]({'port':0x232a});config[_0xb087('0xb')]=_[_0xb087('0xc')](config[_0xb087('0xb')],{'host':_0xb087('0xd'),'port':0x18eb});var socket=require(_0xb087('0xe'))(new Redis(config[_0xb087('0xb')]));require(_0xb087('0xf'))[_0xb087('0x10')](socket);function respondWithRpcPromise(_0x379041,_0x583d25,_0x244abc){return new BPromise(function(_0x108451,_0x903a16){return client[_0xb087('0x11')](_0x379041,_0x244abc)[_0xb087('0x12')](function(_0x2f43e9){logger[_0xb087('0x13')]('ChatQueue,\x20%s,\x20%s',_0x583d25,_0xb087('0x14'));logger[_0xb087('0x15')](_0xb087('0x16'),_0x583d25,'request\x20sent',JSON[_0xb087('0x17')](_0x2f43e9));if(_0x2f43e9[_0xb087('0x18')]){if(_0x2f43e9[_0xb087('0x18')][_0xb087('0x19')]===0x1f4){logger[_0xb087('0x18')](_0xb087('0x1a'),_0x583d25,_0x2f43e9[_0xb087('0x18')][_0xb087('0x1b')]);return _0x903a16(_0x2f43e9[_0xb087('0x18')][_0xb087('0x1b')]);}logger['error'](_0xb087('0x1a'),_0x583d25,_0x2f43e9[_0xb087('0x18')]['message']);return _0x108451(_0x2f43e9[_0xb087('0x18')][_0xb087('0x1b')]);}else{logger[_0xb087('0x13')]('ChatQueue,\x20%s,\x20%s',_0x583d25,_0xb087('0x14'));_0x108451(_0x2f43e9[_0xb087('0x1c')][_0xb087('0x1b')]);}})[_0xb087('0x1d')](function(_0x4e333b){logger[_0xb087('0x18')](_0xb087('0x1a'),_0x583d25,_0x4e333b);_0x903a16(_0x4e333b);});});}exports[_0xb087('0x1e')]=function(_0x23c1b6){var _0x5b4ef0=this;return new Promise(function(_0x5aeab1,_0x5ea3dc){return db['ChatQueue'][_0xb087('0x1f')]({'raw':_0x23c1b6[_0xb087('0x20')]?_0x23c1b6[_0xb087('0x20')][_0xb087('0x21')]===undefined?!![]:![]:!![],'where':_0x23c1b6[_0xb087('0x20')]?_0x23c1b6[_0xb087('0x20')][_0xb087('0x22')]||null:null,'attributes':_0x23c1b6['options']?_0x23c1b6[_0xb087('0x20')][_0xb087('0x23')]||null:null,'limit':_0x23c1b6[_0xb087('0x20')]?_0x23c1b6[_0xb087('0x20')][_0xb087('0x24')]||null:null,'include':_0x23c1b6['options']?_0x23c1b6[_0xb087('0x20')][_0xb087('0x25')]?_['map'](_0x23c1b6['options']['include'],function(_0x598b99){return{'model':db[_0x598b99['model']],'as':_0x598b99['as'],'attributes':_0x598b99[_0xb087('0x23')],'include':_0x598b99[_0xb087('0x25')]?_[_0xb087('0x26')](_0x598b99[_0xb087('0x25')],function(_0xd9ec66){return{'model':db[_0xd9ec66[_0xb087('0x27')]],'as':_0xd9ec66['as'],'attributes':_0xd9ec66[_0xb087('0x23')],'include':_0xd9ec66[_0xb087('0x25')]?_[_0xb087('0x26')](_0xd9ec66[_0xb087('0x25')],function(_0x18058c){return{'model':db[_0x18058c[_0xb087('0x27')]],'as':_0x18058c['as'],'attributes':_0x18058c[_0xb087('0x23')]};}):[]};}):[]};}):[]:[]})[_0xb087('0x12')](function(_0x593b78){logger[_0xb087('0x13')](_0xb087('0x1e'),_0x23c1b6);logger[_0xb087('0x15')](_0xb087('0x1e'),_0x23c1b6,JSON[_0xb087('0x17')](_0x593b78));_0x5aeab1(_0x593b78);})[_0xb087('0x1d')](function(_0x2e1c57){logger[_0xb087('0x18')]('GetChatQueue',_0x2e1c57['message'],_0x23c1b6);_0x5ea3dc(_0x5b4ef0[_0xb087('0x18')](0x1f4,_0x2e1c57[_0xb087('0x1b')]));});});};exports['ShowChatQueue']=function(_0x60bfe2){var _0x7d3776=this;return new Promise(function(_0x2a48d3,_0x32b20d){return db[_0xb087('0x28')][_0xb087('0x29')]({'raw':_0x60bfe2[_0xb087('0x20')]?_0x60bfe2[_0xb087('0x20')][_0xb087('0x21')]===undefined?!![]:![]:!![],'where':_0x60bfe2[_0xb087('0x20')]?_0x60bfe2[_0xb087('0x20')][_0xb087('0x22')]||null:null,'attributes':_0x60bfe2['options']?_0x60bfe2[_0xb087('0x20')]['attributes']||null:null,'include':_0x60bfe2[_0xb087('0x20')]?_0x60bfe2[_0xb087('0x20')][_0xb087('0x25')]?_[_0xb087('0x26')](_0x60bfe2[_0xb087('0x20')][_0xb087('0x25')],function(_0x32c3e8){return{'model':db[_0x32c3e8[_0xb087('0x27')]],'as':_0x32c3e8['as'],'attributes':_0x32c3e8[_0xb087('0x23')],'include':_0x32c3e8['include']?_['map'](_0x32c3e8[_0xb087('0x25')],function(_0x3c4f33){return{'model':db[_0x3c4f33[_0xb087('0x27')]],'as':_0x3c4f33['as'],'attributes':_0x3c4f33[_0xb087('0x23')],'include':_0x3c4f33[_0xb087('0x25')]?_['map'](_0x3c4f33[_0xb087('0x25')],function(_0x1fdc19){return{'model':db[_0x1fdc19['model']],'as':_0x1fdc19['as'],'attributes':_0x1fdc19['attributes']};}):[]};}):[]};}):[]:[]})[_0xb087('0x12')](function(_0x1c7d90){logger[_0xb087('0x13')]('ShowChatQueue',_0x60bfe2);logger[_0xb087('0x15')](_0xb087('0x2a'),_0x60bfe2,JSON[_0xb087('0x17')](_0x1c7d90));_0x2a48d3(_0x1c7d90);})[_0xb087('0x1d')](function(_0x3c8f51){logger['error'](_0xb087('0x2a'),_0x3c8f51['message'],_0x60bfe2);_0x32b20d(_0x7d3776[_0xb087('0x18')](0x1f4,_0x3c8f51['message']));});});};
\ No newline at end of file
+var _0xd8d7=['GetChatQueue','ChatQueue','findAll','options','raw','attributes','limit','include','map','model','ShowChatQueue','find','lodash','util','moment','bluebird','randomstring','rpc','jayson/promise','client','http','redis','defaults','localhost','./chatQueue.socket','register','request','then','info','ChatQueue,\x20%s,\x20%s','debug','ChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch'];(function(_0x35f0c6,_0x946290){var _0xc12a2a=function(_0x472d18){while(--_0x472d18){_0x35f0c6['push'](_0x35f0c6['shift']());}};_0xc12a2a(++_0x946290);}(_0xd8d7,0x1d4));var _0x7d8d=function(_0x460150,_0x232949){_0x460150=_0x460150-0x0;var _0x340677=_0xd8d7[_0x460150];return _0x340677;};'use strict';var _=require(_0x7d8d('0x0'));var util=require(_0x7d8d('0x1'));var moment=require(_0x7d8d('0x2'));var BPromise=require(_0x7d8d('0x3'));var rs=require(_0x7d8d('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7d8d('0x5'));var config=require('../../config/environment');var jayson=require(_0x7d8d('0x6'));var client=jayson[_0x7d8d('0x7')][_0x7d8d('0x8')]({'port':0x232a});config[_0x7d8d('0x9')]=_[_0x7d8d('0xa')](config[_0x7d8d('0x9')],{'host':_0x7d8d('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7d8d('0x9')]));require(_0x7d8d('0xc'))[_0x7d8d('0xd')](socket);function respondWithRpcPromise(_0x144911,_0x407423,_0x27efce){return new BPromise(function(_0x2a0f33,_0x5aa889){return client[_0x7d8d('0xe')](_0x144911,_0x27efce)[_0x7d8d('0xf')](function(_0xe1ca5f){logger[_0x7d8d('0x10')](_0x7d8d('0x11'),_0x407423,'request\x20sent');logger[_0x7d8d('0x12')](_0x7d8d('0x13'),_0x407423,_0x7d8d('0x14'),JSON[_0x7d8d('0x15')](_0xe1ca5f));if(_0xe1ca5f[_0x7d8d('0x16')]){if(_0xe1ca5f[_0x7d8d('0x16')]['code']===0x1f4){logger[_0x7d8d('0x16')](_0x7d8d('0x11'),_0x407423,_0xe1ca5f[_0x7d8d('0x16')][_0x7d8d('0x17')]);return _0x5aa889(_0xe1ca5f[_0x7d8d('0x16')]['message']);}logger[_0x7d8d('0x16')]('ChatQueue,\x20%s,\x20%s',_0x407423,_0xe1ca5f[_0x7d8d('0x16')]['message']);return _0x2a0f33(_0xe1ca5f[_0x7d8d('0x16')][_0x7d8d('0x17')]);}else{logger[_0x7d8d('0x10')](_0x7d8d('0x11'),_0x407423,_0x7d8d('0x14'));_0x2a0f33(_0xe1ca5f[_0x7d8d('0x18')][_0x7d8d('0x17')]);}})[_0x7d8d('0x19')](function(_0x4b15c0){logger[_0x7d8d('0x16')](_0x7d8d('0x11'),_0x407423,_0x4b15c0);_0x5aa889(_0x4b15c0);});});}exports[_0x7d8d('0x1a')]=function(_0x17e3cf){var _0x888ca2=this;return new Promise(function(_0x3db362,_0x3b32d3){return db[_0x7d8d('0x1b')][_0x7d8d('0x1c')]({'raw':_0x17e3cf[_0x7d8d('0x1d')]?_0x17e3cf[_0x7d8d('0x1d')][_0x7d8d('0x1e')]===undefined?!![]:![]:!![],'where':_0x17e3cf[_0x7d8d('0x1d')]?_0x17e3cf[_0x7d8d('0x1d')]['where']||null:null,'attributes':_0x17e3cf['options']?_0x17e3cf['options'][_0x7d8d('0x1f')]||null:null,'limit':_0x17e3cf[_0x7d8d('0x1d')]?_0x17e3cf[_0x7d8d('0x1d')][_0x7d8d('0x20')]||null:null,'include':_0x17e3cf[_0x7d8d('0x1d')]?_0x17e3cf['options'][_0x7d8d('0x21')]?_[_0x7d8d('0x22')](_0x17e3cf[_0x7d8d('0x1d')][_0x7d8d('0x21')],function(_0x3a8cf4){return{'model':db[_0x3a8cf4[_0x7d8d('0x23')]],'as':_0x3a8cf4['as'],'attributes':_0x3a8cf4[_0x7d8d('0x1f')],'include':_0x3a8cf4['include']?_[_0x7d8d('0x22')](_0x3a8cf4[_0x7d8d('0x21')],function(_0x23afc4){return{'model':db[_0x23afc4[_0x7d8d('0x23')]],'as':_0x23afc4['as'],'attributes':_0x23afc4[_0x7d8d('0x1f')],'include':_0x23afc4['include']?_['map'](_0x23afc4[_0x7d8d('0x21')],function(_0x198f21){return{'model':db[_0x198f21[_0x7d8d('0x23')]],'as':_0x198f21['as'],'attributes':_0x198f21['attributes']};}):[]};}):[]};}):[]:[]})[_0x7d8d('0xf')](function(_0xadbf05){logger[_0x7d8d('0x10')]('GetChatQueue',_0x17e3cf);logger[_0x7d8d('0x12')](_0x7d8d('0x1a'),_0x17e3cf,JSON['stringify'](_0xadbf05));_0x3db362(_0xadbf05);})[_0x7d8d('0x19')](function(_0x46319a){logger[_0x7d8d('0x16')](_0x7d8d('0x1a'),_0x46319a[_0x7d8d('0x17')],_0x17e3cf);_0x3b32d3(_0x888ca2['error'](0x1f4,_0x46319a['message']));});});};exports[_0x7d8d('0x24')]=function(_0x1226ba){var _0x5c0370=this;return new Promise(function(_0x311ee8,_0x5232c3){return db[_0x7d8d('0x1b')][_0x7d8d('0x25')]({'raw':_0x1226ba['options']?_0x1226ba[_0x7d8d('0x1d')][_0x7d8d('0x1e')]===undefined?!![]:![]:!![],'where':_0x1226ba[_0x7d8d('0x1d')]?_0x1226ba[_0x7d8d('0x1d')]['where']||null:null,'attributes':_0x1226ba[_0x7d8d('0x1d')]?_0x1226ba['options'][_0x7d8d('0x1f')]||null:null,'include':_0x1226ba[_0x7d8d('0x1d')]?_0x1226ba[_0x7d8d('0x1d')][_0x7d8d('0x21')]?_['map'](_0x1226ba[_0x7d8d('0x1d')][_0x7d8d('0x21')],function(_0x95ab0c){return{'model':db[_0x95ab0c[_0x7d8d('0x23')]],'as':_0x95ab0c['as'],'attributes':_0x95ab0c[_0x7d8d('0x1f')],'include':_0x95ab0c[_0x7d8d('0x21')]?_[_0x7d8d('0x22')](_0x95ab0c[_0x7d8d('0x21')],function(_0x4c8e96){return{'model':db[_0x4c8e96[_0x7d8d('0x23')]],'as':_0x4c8e96['as'],'attributes':_0x4c8e96[_0x7d8d('0x1f')],'include':_0x4c8e96[_0x7d8d('0x21')]?_['map'](_0x4c8e96['include'],function(_0x5767ac){return{'model':db[_0x5767ac[_0x7d8d('0x23')]],'as':_0x5767ac['as'],'attributes':_0x5767ac[_0x7d8d('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x7d8d('0xf')](function(_0x21cdd2){logger[_0x7d8d('0x10')]('ShowChatQueue',_0x1226ba);logger[_0x7d8d('0x12')](_0x7d8d('0x24'),_0x1226ba,JSON['stringify'](_0x21cdd2));_0x311ee8(_0x21cdd2);})[_0x7d8d('0x19')](function(_0x12100b){logger[_0x7d8d('0x16')](_0x7d8d('0x24'),_0x12100b[_0x7d8d('0x17')],_0x1226ba);_0x5232c3(_0x5c0370[_0x7d8d('0x16')](0x1f4,_0x12100b[_0x7d8d('0x17')]));});});};
\ No newline at end of file
index 61186ca..ec20d08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['register','length','chatQueue:','./chatQueue.events','save','remove','update','emit','removeListener'];(function(_0x24061a,_0x1c9f4d){var _0x82054e=function(_0x2ec346){while(--_0x2ec346){_0x24061a['push'](_0x24061a['shift']());}};_0x82054e(++_0x1c9f4d);}(_0x34e8,0x12c));var _0x834e=function(_0xf66808,_0x4e5e5e){_0xf66808=_0xf66808-0x0;var _0x4ba64c=_0x34e8[_0xf66808];return _0x4ba64c;};'use strict';var ChatQueueEvents=require(_0x834e('0x0'));var events=[_0x834e('0x1'),_0x834e('0x2'),_0x834e('0x3')];function createListener(_0x530939,_0x832422){return function(_0x21e2e0){_0x832422[_0x834e('0x4')](_0x530939,_0x21e2e0);};}function removeListener(_0x31bf20,_0x289ef2){return function(){ChatQueueEvents[_0x834e('0x5')](_0x31bf20,_0x289ef2);};}exports[_0x834e('0x6')]=function(_0x4a2018){for(var _0x858aa1=0x0,_0x52056d=events[_0x834e('0x7')];_0x858aa1<_0x52056d;_0x858aa1++){var _0x3cc2e3=events[_0x858aa1];var _0x3a3ef6=createListener(_0x834e('0x8')+_0x3cc2e3,_0x4a2018);ChatQueueEvents['on'](_0x3cc2e3,_0x3a3ef6);}};
\ No newline at end of file
+var _0xa41a=['emit','removeListener','./chatQueue.events','save','update'];(function(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0xa41a,0x6b));var _0xaa41=function(_0x1241ff,_0x541ca2){_0x1241ff=_0x1241ff-0x0;var _0x4a7d7d=_0xa41a[_0x1241ff];return _0x4a7d7d;};'use strict';var ChatQueueEvents=require(_0xaa41('0x0'));var events=[_0xaa41('0x1'),'remove',_0xaa41('0x2')];function createListener(_0x2a96ba,_0x43654a){return function(_0xc5ce74){_0x43654a[_0xaa41('0x3')](_0x2a96ba,_0xc5ce74);};}function removeListener(_0x3168be,_0x42896b){return function(){ChatQueueEvents[_0xaa41('0x4')](_0x3168be,_0x42896b);};}exports['register']=function(_0x2122a0){for(var _0x1ec9d4=0x0,_0x54bc5a=events['length'];_0x1ec9d4<_0x54bc5a;_0x1ec9d4++){var _0x179545=events[_0x1ec9d4];var _0x202cce=createListener('chatQueue:'+_0x179545,_0x2122a0);ChatQueueEvents['on'](_0x179545,_0x202cce);}};
\ No newline at end of file
index 0db0674..5363ebb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['../../config/environment','./chatQueue.controller','get','isAuthenticated','index','show','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','addAgents','update','delete','/:id','removeTeams','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x5a2c38,_0x24ed38){var _0xebee36=function(_0x4266a2){while(--_0x4266a2){_0x5a2c38['push'](_0x5a2c38['shift']());}};_0xebee36(++_0x24ed38);}(_0x008c,0x188));var _0xc008=function(_0x1d5352,_0x4f7974){_0x1d5352=_0x1d5352-0x0;var _0x3395c2=_0x008c[_0x1d5352];return _0x3395c2;};'use strict';var multer=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var path=require(_0xc008('0x2'));var timeout=require(_0xc008('0x3'));var express=require(_0xc008('0x4'));var router=express['Router']();var fs_extra=require(_0xc008('0x5'));var auth=require(_0xc008('0x6'));var interaction=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var controller=require(_0xc008('0x9'));router[_0xc008('0xa')]('/',auth[_0xc008('0xb')](),controller[_0xc008('0xc')]);router[_0xc008('0xa')]('/describe',auth[_0xc008('0xb')](),controller['describe']);router[_0xc008('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xc008('0xd')]);router[_0xc008('0xa')]('/:id/members',auth['isAuthenticated'](),controller['getMembers']);router[_0xc008('0xa')](_0xc008('0xe'),auth['isAuthenticated'](),controller[_0xc008('0xf')]);router[_0xc008('0xa')](_0xc008('0x10'),auth[_0xc008('0xb')](),controller[_0xc008('0x11')]);router[_0xc008('0x12')]('/',auth[_0xc008('0xb')](),controller['create']);router['post'](_0xc008('0xe'),auth['isAuthenticated'](),controller[_0xc008('0x13')]);router[_0xc008('0x12')](_0xc008('0x10'),auth[_0xc008('0xb')](),controller[_0xc008('0x14')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xc008('0x15')]);router[_0xc008('0x16')](_0xc008('0x17'),auth[_0xc008('0xb')](),controller['destroy']);router['delete']('/:id/teams',auth['isAuthenticated'](),controller[_0xc008('0x18')]);router[_0xc008('0x16')]('/:id/users',auth[_0xc008('0xb')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','/:id','delete','destroy','/:id/teams','removeTeams','multer','util','path'];(function(_0x99ae42,_0x9187d9){var _0x45e06c=function(_0x1f6f64){while(--_0x1f6f64){_0x99ae42['push'](_0x99ae42['shift']());}};_0x45e06c(++_0x9187d9);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'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',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/teams',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/teams',auth['isAuthenticated'](),controller[_0x7995('0x16')]);router[_0x7995('0x14')](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x17')]);router[_0x7995('0x18')](_0x7995('0x19'),auth[_0x7995('0xa')](),controller['update']);router[_0x7995('0x1a')]('/:id',auth[_0x7995('0xa')](),controller[_0x7995('0x1b')]);router[_0x7995('0x1a')](_0x7995('0x1c'),auth[_0x7995('0xa')](),controller[_0x7995('0x1d')]);router['delete']('/:id/users',auth[_0x7995('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index 68c0585..5099e64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd946=['sequelize','exports','STRING','DATE'];(function(_0x1b828b,_0x344400){var _0x98da1a=function(_0x1a0f5b){while(--_0x1a0f5b){_0x1b828b['push'](_0x1b828b['shift']());}};_0x98da1a(++_0x344400);}(_0xd946,0x8c));var _0x6d94=function(_0x53e81f,_0x8f5bab){_0x53e81f=_0x53e81f-0x0;var _0x166b04=_0xd946[_0x53e81f];return _0x166b04;};'use strict';var moment=require('moment');var Sequelize=require(_0x6d94('0x0'));module[_0x6d94('0x1')]={'uniqueid':{'type':Sequelize[_0x6d94('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x6d94('0x2')]},'joinAt':{'type':Sequelize[_0x6d94('0x3')]},'leaveAt':{'type':Sequelize[_0x6d94('0x3')]},'acceptAt':{'type':Sequelize[_0x6d94('0x3')]},'exitAt':{'type':Sequelize[_0x6d94('0x3')]},'reason':{'type':Sequelize[_0x6d94('0x2')]}};
\ No newline at end of file
+var _0x8813=['STRING','DATE','moment','exports'];(function(_0x5123b6,_0x46b621){var _0x116a74=function(_0x26f872){while(--_0x26f872){_0x5123b6['push'](_0x5123b6['shift']());}};_0x116a74(++_0x46b621);}(_0x8813,0x86));var _0x3881=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8813[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require(_0x3881('0x0'));var Sequelize=require('sequelize');module[_0x3881('0x1')]={'uniqueid':{'type':Sequelize[_0x3881('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x3881('0x2')]},'joinAt':{'type':Sequelize[_0x3881('0x3')]},'leaveAt':{'type':Sequelize[_0x3881('0x3')]},'acceptAt':{'type':Sequelize[_0x3881('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 3b33a7c..b3daeb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbea5=['attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','keys','find','create','body','destroy','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','squel','desk.js','to-csv','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','set','apply','reject','save','update','then','error','name','index','map','ChatQueueReport','rawAttributes','fieldName','model','query','filters','intersection'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0xbea5,0x177));var _0x5bea=function(_0x3ff2f9,_0x544ba1){_0x3ff2f9=_0x3ff2f9-0x0;var _0x3b0913=_0xbea5[_0x3ff2f9];return _0x3b0913;};'use strict';var emlformat=require(_0x5bea('0x0'));var rimraf=require(_0x5bea('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5bea('0x2'));var rp=require(_0x5bea('0x3'));var moment=require(_0x5bea('0x4'));var BPromise=require(_0x5bea('0x5'));var Mustache=require(_0x5bea('0x6'));var util=require('util');var path=require('path');var sox=require(_0x5bea('0x7'));var csv=require('to-csv');var ejs=require(_0x5bea('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x5bea('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5bea('0xa'));var toCsv=require(_0x5bea('0xb'));var querystring=require(_0x5bea('0xc'));var Papa=require('papaparse');var Redis=require(_0x5bea('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x5bea('0xe'));var hardwareService=require(_0x5bea('0xf'));var logger=require(_0x5bea('0x10'))(_0x5bea('0x11'));var utils=require(_0x5bea('0x12'));var config=require(_0x5bea('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x5bea('0x14'))['db'];function respondWithStatusCode(_0x1f49a0,_0x5aef2d){_0x5aef2d=_0x5aef2d||0xcc;return function(_0x289d99){if(_0x289d99){return _0x1f49a0[_0x5bea('0x15')](_0x5aef2d);}return _0x1f49a0['status'](_0x5aef2d)[_0x5bea('0x16')]();};}function respondWithResult(_0x229e09,_0x26cfca){_0x26cfca=_0x26cfca||0xc8;return function(_0xda336a){if(_0xda336a){return _0x229e09[_0x5bea('0x17')](_0x26cfca)[_0x5bea('0x18')](_0xda336a);}};}function respondWithFilteredResult(_0x14d46c,_0x5e0518){return function(_0x492190){if(_0x492190){var _0x1ad017=typeof _0x5e0518[_0x5bea('0x19')]===_0x5bea('0x1a')&&typeof _0x5e0518['limit']===_0x5bea('0x1a');var _0x18d13f=_0x492190[_0x5bea('0x1b')];var _0x49ba83=_0x1ad017?0x0:_0x5e0518[_0x5bea('0x19')];var _0x23fa96=_0x1ad017?_0x492190['count']:_0x5e0518[_0x5bea('0x19')]+_0x5e0518['limit'];var _0xd0f100;if(_0x23fa96>=_0x18d13f){_0x23fa96=_0x18d13f;_0xd0f100=0xc8;}else{_0xd0f100=0xce;}_0x14d46c[_0x5bea('0x17')](_0xd0f100);return _0x14d46c[_0x5bea('0x1c')]('Content-Range',_0x49ba83+'-'+_0x23fa96+'/'+_0x18d13f)['json'](_0x492190);}return null;};}function patchUpdates(_0x4169e5){return function(_0x2bf974){try{jsonpatch[_0x5bea('0x1d')](_0x2bf974,_0x4169e5,!![]);}catch(_0x52f12e){return BPromise[_0x5bea('0x1e')](_0x52f12e);}return _0x2bf974[_0x5bea('0x1f')]();};}function saveUpdates(_0x146177,_0xda92cf){return function(_0x595ee1){if(_0x595ee1){return _0x595ee1[_0x5bea('0x20')](_0x146177)[_0x5bea('0x21')](function(_0xcc0685){return _0xcc0685;});}return null;};}function removeEntity(_0x245c81,_0x5984f8){return function(_0x406ac8){if(_0x406ac8){return _0x406ac8['destroy']()[_0x5bea('0x21')](function(){_0x245c81['status'](0xcc)[_0x5bea('0x16')]();});}};}function handleEntityNotFound(_0x10282f,_0x37b196){return function(_0x5a8361){if(!_0x5a8361){_0x10282f['sendStatus'](0x194);}return _0x5a8361;};}function handleError(_0x4de13e,_0x57cde3){_0x57cde3=_0x57cde3||0x1f4;return function(_0x4c0821){logger[_0x5bea('0x22')](_0x4c0821['stack']);if(_0x4c0821['name']){delete _0x4c0821[_0x5bea('0x23')];}_0x4de13e[_0x5bea('0x17')](_0x57cde3)['send'](_0x4c0821);};}exports[_0x5bea('0x24')]=function(_0x5db06b,_0x577cf3){var _0x1a784b={},_0x2e773a={},_0x10b5e6={'count':0x0,'rows':[]};var _0x102ffb=_[_0x5bea('0x25')](db[_0x5bea('0x26')][_0x5bea('0x27')],function(_0x2d2308){return{'name':_0x2d2308[_0x5bea('0x28')],'type':_0x2d2308['type']['key']};});_0x2e773a[_0x5bea('0x29')]=_[_0x5bea('0x25')](_0x102ffb,_0x5bea('0x23'));_0x2e773a[_0x5bea('0x2a')]=_['keys'](_0x5db06b[_0x5bea('0x2a')]);_0x2e773a[_0x5bea('0x2b')]=_[_0x5bea('0x2c')](_0x2e773a[_0x5bea('0x29')],_0x2e773a['query']);_0x1a784b[_0x5bea('0x2d')]=_[_0x5bea('0x2c')](_0x2e773a[_0x5bea('0x29')],qs['fields'](_0x5db06b[_0x5bea('0x2a')][_0x5bea('0x2e')]));_0x1a784b[_0x5bea('0x2d')]=_0x1a784b[_0x5bea('0x2d')][_0x5bea('0x2f')]?_0x1a784b[_0x5bea('0x2d')]:_0x2e773a['model'];if(!_0x5db06b['query'][_0x5bea('0x30')](_0x5bea('0x31'))){_0x1a784b['limit']=qs[_0x5bea('0x32')](_0x5db06b['query'][_0x5bea('0x32')]);_0x1a784b[_0x5bea('0x19')]=qs['offset'](_0x5db06b[_0x5bea('0x2a')][_0x5bea('0x19')]);}_0x1a784b[_0x5bea('0x33')]=qs['sort'](_0x5db06b['query'][_0x5bea('0x34')]);_0x1a784b[_0x5bea('0x35')]=qs[_0x5bea('0x2b')](_[_0x5bea('0x36')](_0x5db06b[_0x5bea('0x2a')],_0x2e773a['filters']),_0x102ffb);if(_0x5db06b[_0x5bea('0x2a')]['filter']){_0x1a784b[_0x5bea('0x35')]=_[_0x5bea('0x37')](_0x1a784b[_0x5bea('0x35')],{'$or':_[_0x5bea('0x25')](_0x102ffb,function(_0x475307){if(_0x475307['type']!==_0x5bea('0x38')){var _0x439e27={};_0x439e27[_0x475307[_0x5bea('0x23')]]={'$like':'%'+_0x5db06b[_0x5bea('0x2a')]['filter']+'%'};return _0x439e27;}})});}_0x1a784b=_[_0x5bea('0x37')]({},_0x1a784b,_0x5db06b[_0x5bea('0x39')]);var _0x291d60={'where':_0x1a784b[_0x5bea('0x35')]};return db[_0x5bea('0x26')]['count'](_0x291d60)[_0x5bea('0x21')](function(_0x35e9f4){_0x10b5e6['count']=_0x35e9f4;if(_0x5db06b[_0x5bea('0x2a')][_0x5bea('0x3a')]){_0x1a784b[_0x5bea('0x3b')]=[{'all':!![]}];}return db[_0x5bea('0x26')]['findAll'](_0x1a784b);})[_0x5bea('0x21')](function(_0x2e1976){_0x10b5e6[_0x5bea('0x3c')]=_0x2e1976;return _0x10b5e6;})[_0x5bea('0x21')](respondWithFilteredResult(_0x577cf3,_0x1a784b))[_0x5bea('0x3d')](handleError(_0x577cf3,null));};exports[_0x5bea('0x3e')]=function(_0x5610b2,_0x378bfb){var _0x52ce37={'raw':!![],'where':{'id':_0x5610b2[_0x5bea('0x3f')]['id']}},_0x1b6332={};_0x1b6332[_0x5bea('0x29')]=_[_0x5bea('0x40')](db['ChatQueueReport']['rawAttributes']);_0x1b6332['query']=_[_0x5bea('0x40')](_0x5610b2[_0x5bea('0x2a')]);_0x1b6332[_0x5bea('0x2b')]=_['intersection'](_0x1b6332[_0x5bea('0x29')],_0x1b6332[_0x5bea('0x2a')]);_0x52ce37[_0x5bea('0x2d')]=_['intersection'](_0x1b6332['model'],qs[_0x5bea('0x2e')](_0x5610b2['query'][_0x5bea('0x2e')]));_0x52ce37[_0x5bea('0x2d')]=_0x52ce37[_0x5bea('0x2d')][_0x5bea('0x2f')]?_0x52ce37['attributes']:_0x1b6332[_0x5bea('0x29')];if(_0x5610b2[_0x5bea('0x2a')][_0x5bea('0x3a')]){_0x52ce37[_0x5bea('0x3b')]=[{'all':!![]}];}_0x52ce37=_[_0x5bea('0x37')]({},_0x52ce37,_0x5610b2['options']);return db['ChatQueueReport'][_0x5bea('0x41')](_0x52ce37)[_0x5bea('0x21')](handleEntityNotFound(_0x378bfb,null))['then'](respondWithResult(_0x378bfb,null))[_0x5bea('0x3d')](handleError(_0x378bfb,null));};exports['create']=function(_0x2a6695,_0x455bcb){return db[_0x5bea('0x26')][_0x5bea('0x42')](_0x2a6695[_0x5bea('0x43')],{})[_0x5bea('0x21')](respondWithResult(_0x455bcb,0xc9))[_0x5bea('0x3d')](handleError(_0x455bcb,null));};exports[_0x5bea('0x20')]=function(_0x52af41,_0x4b6783){if(_0x52af41['body']['id']){delete _0x52af41[_0x5bea('0x43')]['id'];}return db[_0x5bea('0x26')]['find']({'where':{'id':_0x52af41[_0x5bea('0x3f')]['id']}})['then'](handleEntityNotFound(_0x4b6783,null))[_0x5bea('0x21')](saveUpdates(_0x52af41[_0x5bea('0x43')],null))['then'](respondWithResult(_0x4b6783,null))[_0x5bea('0x3d')](handleError(_0x4b6783,null));};exports[_0x5bea('0x44')]=function(_0xaa37af,_0x11f275){return db[_0x5bea('0x26')][_0x5bea('0x41')]({'where':{'id':_0xaa37af[_0x5bea('0x3f')]['id']}})['then'](handleEntityNotFound(_0x11f275,null))[_0x5bea('0x21')](removeEntity(_0x11f275,null))[_0x5bea('0x3d')](handleError(_0x11f275,null));};exports[_0x5bea('0x45')]=function(_0x3c4dd2,_0x2416b5){return db[_0x5bea('0x26')]['describe']()[_0x5bea('0x21')](respondWithResult(_0x2416b5,null))[_0x5bea('0x3d')](handleError(_0x2416b5,null));};
\ No newline at end of file
+var _0x022a=['then','end','error','stack','name','send','index','map','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','ChatQueueReport','includeAll','include','findAll','rows','catch','show','params','find','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','apply','save','destroy'];(function(_0x258197,_0x1caee0){var _0x312eee=function(_0x6c8baf){while(--_0x6c8baf){_0x258197['push'](_0x258197['shift']());}};_0x312eee(++_0x1caee0);}(_0x022a,0x1f0));var _0xa022=function(_0x4347ec,_0x41c4b8){_0x4347ec=_0x4347ec-0x0;var _0x4c8314=_0x022a[_0x4347ec];return _0x4c8314;};'use strict';var emlformat=require(_0xa022('0x0'));var rimraf=require(_0xa022('0x1'));var zipdir=require(_0xa022('0x2'));var jsonpatch=require(_0xa022('0x3'));var rp=require(_0xa022('0x4'));var moment=require(_0xa022('0x5'));var BPromise=require(_0xa022('0x6'));var Mustache=require(_0xa022('0x7'));var util=require(_0xa022('0x8'));var path=require(_0xa022('0x9'));var sox=require(_0xa022('0xa'));var csv=require(_0xa022('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa022('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xa022('0xd'));var jsforce=require(_0xa022('0xe'));var deskjs=require(_0xa022('0xf'));var toCsv=require(_0xa022('0xb'));var querystring=require(_0xa022('0x10'));var Papa=require(_0xa022('0x11'));var Redis=require(_0xa022('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xa022('0x13'));var as=require(_0xa022('0x14'));var hardwareService=require(_0xa022('0x15'));var logger=require('../../config/logger')(_0xa022('0x16'));var utils=require('../../config/utils');var config=require(_0xa022('0x17'));var licenseUtil=require(_0xa022('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5c3326,_0x41dffb){_0x41dffb=_0x41dffb||0xcc;return function(_0x2ddabf){if(_0x2ddabf){return _0x5c3326[_0xa022('0x19')](_0x41dffb);}return _0x5c3326[_0xa022('0x1a')](_0x41dffb)['end']();};}function respondWithResult(_0x51a098,_0x1c9bc3){_0x1c9bc3=_0x1c9bc3||0xc8;return function(_0x5a57c5){if(_0x5a57c5){return _0x51a098[_0xa022('0x1a')](_0x1c9bc3)[_0xa022('0x1b')](_0x5a57c5);}};}function respondWithFilteredResult(_0x34db44,_0x2bc4d6){return function(_0x1fb150){if(_0x1fb150){var _0x1a16a4=typeof _0x2bc4d6[_0xa022('0x1c')]===_0xa022('0x1d')&&typeof _0x2bc4d6[_0xa022('0x1e')]===_0xa022('0x1d');var _0xd094d2=_0x1fb150[_0xa022('0x1f')];var _0x32bb92=_0x1a16a4?0x0:_0x2bc4d6[_0xa022('0x1c')];var _0x5aafa5=_0x1a16a4?_0x1fb150[_0xa022('0x1f')]:_0x2bc4d6[_0xa022('0x1c')]+_0x2bc4d6[_0xa022('0x1e')];var _0xb97bc8;if(_0x5aafa5>=_0xd094d2){_0x5aafa5=_0xd094d2;_0xb97bc8=0xc8;}else{_0xb97bc8=0xce;}_0x34db44[_0xa022('0x1a')](_0xb97bc8);return _0x34db44[_0xa022('0x20')]('Content-Range',_0x32bb92+'-'+_0x5aafa5+'/'+_0xd094d2)[_0xa022('0x1b')](_0x1fb150);}return null;};}function patchUpdates(_0x4e7005){return function(_0x5e80f6){try{jsonpatch[_0xa022('0x21')](_0x5e80f6,_0x4e7005,!![]);}catch(_0x3731e6){return BPromise['reject'](_0x3731e6);}return _0x5e80f6[_0xa022('0x22')]();};}function saveUpdates(_0x443984,_0x2d0c76){return function(_0x24b800){if(_0x24b800){return _0x24b800['update'](_0x443984)['then'](function(_0x81c0ae){return _0x81c0ae;});}return null;};}function removeEntity(_0xa326f2,_0x428ccf){return function(_0xf730bd){if(_0xf730bd){return _0xf730bd[_0xa022('0x23')]()[_0xa022('0x24')](function(){_0xa326f2['status'](0xcc)[_0xa022('0x25')]();});}};}function handleEntityNotFound(_0x5400ff,_0xcfce3f){return function(_0x5ce466){if(!_0x5ce466){_0x5400ff[_0xa022('0x19')](0x194);}return _0x5ce466;};}function handleError(_0x32cad9,_0x280352){_0x280352=_0x280352||0x1f4;return function(_0x5d2215){logger[_0xa022('0x26')](_0x5d2215[_0xa022('0x27')]);if(_0x5d2215[_0xa022('0x28')]){delete _0x5d2215[_0xa022('0x28')];}_0x32cad9[_0xa022('0x1a')](_0x280352)[_0xa022('0x29')](_0x5d2215);};}exports[_0xa022('0x2a')]=function(_0x2a6cb7,_0x295cbc){var _0x5f53c1={},_0x16df86={},_0x312e7b={'count':0x0,'rows':[]};var _0x6fc8a9=_[_0xa022('0x2b')](db['ChatQueueReport'][_0xa022('0x2c')],function(_0x358d37){return{'name':_0x358d37['fieldName'],'type':_0x358d37[_0xa022('0x2d')][_0xa022('0x2e')]};});_0x16df86['model']=_['map'](_0x6fc8a9,_0xa022('0x28'));_0x16df86[_0xa022('0x2f')]=_[_0xa022('0x30')](_0x2a6cb7['query']);_0x16df86[_0xa022('0x31')]=_[_0xa022('0x32')](_0x16df86[_0xa022('0x33')],_0x16df86[_0xa022('0x2f')]);_0x5f53c1[_0xa022('0x34')]=_[_0xa022('0x32')](_0x16df86[_0xa022('0x33')],qs[_0xa022('0x35')](_0x2a6cb7[_0xa022('0x2f')]['fields']));_0x5f53c1['attributes']=_0x5f53c1[_0xa022('0x34')][_0xa022('0x36')]?_0x5f53c1[_0xa022('0x34')]:_0x16df86['model'];if(!_0x2a6cb7[_0xa022('0x2f')][_0xa022('0x37')](_0xa022('0x38'))){_0x5f53c1[_0xa022('0x1e')]=qs[_0xa022('0x1e')](_0x2a6cb7[_0xa022('0x2f')][_0xa022('0x1e')]);_0x5f53c1[_0xa022('0x1c')]=qs[_0xa022('0x1c')](_0x2a6cb7[_0xa022('0x2f')][_0xa022('0x1c')]);}_0x5f53c1['order']=qs[_0xa022('0x39')](_0x2a6cb7[_0xa022('0x2f')][_0xa022('0x39')]);_0x5f53c1[_0xa022('0x3a')]=qs[_0xa022('0x31')](_['pick'](_0x2a6cb7[_0xa022('0x2f')],_0x16df86['filters']),_0x6fc8a9);if(_0x2a6cb7[_0xa022('0x2f')][_0xa022('0x3b')]){_0x5f53c1['where']=_[_0xa022('0x3c')](_0x5f53c1[_0xa022('0x3a')],{'$or':_[_0xa022('0x2b')](_0x6fc8a9,function(_0x24ef5c){if(_0x24ef5c[_0xa022('0x2d')]!==_0xa022('0x3d')){var _0xe38116={};_0xe38116[_0x24ef5c[_0xa022('0x28')]]={'$like':'%'+_0x2a6cb7[_0xa022('0x2f')][_0xa022('0x3b')]+'%'};return _0xe38116;}})});}_0x5f53c1=_[_0xa022('0x3c')]({},_0x5f53c1,_0x2a6cb7[_0xa022('0x3e')]);var _0x21f194={'where':_0x5f53c1[_0xa022('0x3a')]};return db[_0xa022('0x3f')][_0xa022('0x1f')](_0x21f194)[_0xa022('0x24')](function(_0x1b349a){_0x312e7b[_0xa022('0x1f')]=_0x1b349a;if(_0x2a6cb7[_0xa022('0x2f')][_0xa022('0x40')]){_0x5f53c1[_0xa022('0x41')]=[{'all':!![]}];}return db[_0xa022('0x3f')][_0xa022('0x42')](_0x5f53c1);})[_0xa022('0x24')](function(_0x28b0b4){_0x312e7b[_0xa022('0x43')]=_0x28b0b4;return _0x312e7b;})[_0xa022('0x24')](respondWithFilteredResult(_0x295cbc,_0x5f53c1))[_0xa022('0x44')](handleError(_0x295cbc,null));};exports[_0xa022('0x45')]=function(_0x26efc5,_0x3ef0a9){var _0xcd433a={'raw':!![],'where':{'id':_0x26efc5[_0xa022('0x46')]['id']}},_0x296f49={};_0x296f49[_0xa022('0x33')]=_['keys'](db[_0xa022('0x3f')]['rawAttributes']);_0x296f49[_0xa022('0x2f')]=_[_0xa022('0x30')](_0x26efc5[_0xa022('0x2f')]);_0x296f49[_0xa022('0x31')]=_[_0xa022('0x32')](_0x296f49[_0xa022('0x33')],_0x296f49[_0xa022('0x2f')]);_0xcd433a['attributes']=_['intersection'](_0x296f49['model'],qs['fields'](_0x26efc5['query']['fields']));_0xcd433a[_0xa022('0x34')]=_0xcd433a[_0xa022('0x34')][_0xa022('0x36')]?_0xcd433a[_0xa022('0x34')]:_0x296f49[_0xa022('0x33')];if(_0x26efc5[_0xa022('0x2f')][_0xa022('0x40')]){_0xcd433a[_0xa022('0x41')]=[{'all':!![]}];}_0xcd433a=_[_0xa022('0x3c')]({},_0xcd433a,_0x26efc5[_0xa022('0x3e')]);return db[_0xa022('0x3f')][_0xa022('0x47')](_0xcd433a)[_0xa022('0x24')](handleEntityNotFound(_0x3ef0a9,null))[_0xa022('0x24')](respondWithResult(_0x3ef0a9,null))['catch'](handleError(_0x3ef0a9,null));};exports[_0xa022('0x48')]=function(_0x176482,_0x29bbf1){return db[_0xa022('0x3f')][_0xa022('0x48')](_0x176482[_0xa022('0x49')],{})['then'](respondWithResult(_0x29bbf1,0xc9))['catch'](handleError(_0x29bbf1,null));};exports[_0xa022('0x4a')]=function(_0xffd646,_0x298dfe){if(_0xffd646['body']['id']){delete _0xffd646[_0xa022('0x49')]['id'];}return db[_0xa022('0x3f')][_0xa022('0x47')]({'where':{'id':_0xffd646[_0xa022('0x46')]['id']}})[_0xa022('0x24')](handleEntityNotFound(_0x298dfe,null))['then'](saveUpdates(_0xffd646['body'],null))[_0xa022('0x24')](respondWithResult(_0x298dfe,null))[_0xa022('0x44')](handleError(_0x298dfe,null));};exports[_0xa022('0x23')]=function(_0x22cd5c,_0x5a4f39){return db[_0xa022('0x3f')][_0xa022('0x47')]({'where':{'id':_0x22cd5c['params']['id']}})['then'](handleEntityNotFound(_0x5a4f39,null))[_0xa022('0x24')](removeEntity(_0x5a4f39,null))[_0xa022('0x44')](handleError(_0x5a4f39,null));};exports[_0xa022('0x4b')]=function(_0x24c245,_0x3ff64e){return db[_0xa022('0x3f')]['describe']()[_0xa022('0x24')](respondWithResult(_0x3ff64e,null))[_0xa022('0x44')](handleError(_0x3ff64e,null));};
\ No newline at end of file
index 1ef3e7e..76e160d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['path','rimraf','./chatQueueReport.attributes','exports','define','report_chat_queue','uniqueid','../../config/logger','api','moment','bluebird'];(function(_0x56b1b6,_0x3f0f16){var _0x15cacd=function(_0x26e1e5){while(--_0x26e1e5){_0x56b1b6['push'](_0x56b1b6['shift']());}};_0x15cacd(++_0x3f0f16);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2df724,_0x411382){_0x2df724=_0x2df724-0x0;var _0x1b2504=_0xcb91[_0x2df724];return _0x1b2504;};'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')]('ChatQueueReport',attributes,{'tableName':_0x1cb9('0x9'),'paranoid':![],'indexes':[{'name':_0x1cb9('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd8b0=['define','report_chat_queue','uniqueid','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x928d97,_0x1f4d41){var _0x2268ed=function(_0x1d53ce){while(--_0x1d53ce){_0x928d97['push'](_0x928d97['shift']());}};_0x2268ed(++_0x1f4d41);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'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('./chatQueueReport.attributes');module['exports']=function(_0x3f8b6f,_0x227c63){return _0x3f8b6f[_0x0d8b('0x7')]('ChatQueueReport',attributes,{'tableName':_0x0d8b('0x8'),'paranoid':![],'indexes':[{'name':_0x0d8b('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 087a589..f52bcd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb765=['raw','UpdateChatQueueReport','update','options','limit','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateChatQueueReport','ChatQueueReport','body'];(function(_0x20c4a2,_0x83cf29){var _0x151d44=function(_0x3f2f36){while(--_0x3f2f36){_0x20c4a2['push'](_0x20c4a2['shift']());}};_0x151d44(++_0x83cf29);}(_0xb765,0x15a));var _0x5b76=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0xb765[_0x46e363];return _0x3fb059;};'use strict';var _=require(_0x5b76('0x0'));var util=require('util');var moment=require(_0x5b76('0x1'));var BPromise=require(_0x5b76('0x2'));var rs=require(_0x5b76('0x3'));var fs=require('fs');var Redis=require(_0x5b76('0x4'));var db=require(_0x5b76('0x5'))['db'];var utils=require(_0x5b76('0x6'));var logger=require('../../config/logger')(_0x5b76('0x7'));var config=require(_0x5b76('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x5b76('0x9')][_0x5b76('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2672a1,_0x193fd9,_0x43179e){return new BPromise(function(_0x25084d,_0x3769b3){return client[_0x5b76('0xb')](_0x2672a1,_0x43179e)[_0x5b76('0xc')](function(_0x526a5c){logger[_0x5b76('0xd')](_0x5b76('0xe'),_0x193fd9,_0x5b76('0xf'));logger[_0x5b76('0x10')](_0x5b76('0x11'),_0x193fd9,_0x5b76('0xf'),JSON[_0x5b76('0x12')](_0x526a5c));if(_0x526a5c['error']){if(_0x526a5c['error']['code']===0x1f4){logger[_0x5b76('0x13')]('ChatQueueReport,\x20%s,\x20%s',_0x193fd9,_0x526a5c['error'][_0x5b76('0x14')]);return _0x3769b3(_0x526a5c['error']['message']);}logger[_0x5b76('0x13')](_0x5b76('0xe'),_0x193fd9,_0x526a5c[_0x5b76('0x13')]['message']);return _0x25084d(_0x526a5c[_0x5b76('0x13')][_0x5b76('0x14')]);}else{logger[_0x5b76('0xd')]('ChatQueueReport,\x20%s,\x20%s',_0x193fd9,_0x5b76('0xf'));_0x25084d(_0x526a5c[_0x5b76('0x15')][_0x5b76('0x14')]);}})[_0x5b76('0x16')](function(_0x3a3d27){logger['error'](_0x5b76('0xe'),_0x193fd9,_0x3a3d27);_0x3769b3(_0x3a3d27);});});}exports[_0x5b76('0x17')]=function(_0x5dc649){var _0x1b7a73=this;return new Promise(function(_0x4dca34,_0x1fe4a8){return db[_0x5b76('0x18')]['create'](_0x5dc649[_0x5b76('0x19')],{'raw':_0x5dc649['options']?_0x5dc649['options'][_0x5b76('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x1ae4c4){logger['info']('CreateChatQueueReport',_0x5dc649);logger[_0x5b76('0x10')](_0x5b76('0x17'),_0x5dc649,JSON['stringify'](_0x1ae4c4));_0x4dca34(_0x1ae4c4);})['catch'](function(_0x530f94){logger['error'](_0x5b76('0x17'),_0x530f94[_0x5b76('0x14')],_0x5dc649);_0x1fe4a8(_0x1b7a73[_0x5b76('0x13')](0x1f4,_0x530f94[_0x5b76('0x14')]));});});};exports[_0x5b76('0x1b')]=function(_0x11b6fe){var _0x3c57c9=this;return new Promise(function(_0x26200a,_0x319513){return db['ChatQueueReport'][_0x5b76('0x1c')](_0x11b6fe[_0x5b76('0x19')],{'raw':_0x11b6fe['options']?_0x11b6fe[_0x5b76('0x1d')][_0x5b76('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x11b6fe[_0x5b76('0x1d')]?_0x11b6fe[_0x5b76('0x1d')]['where']||null:null,'attributes':_0x11b6fe[_0x5b76('0x1d')]?_0x11b6fe['options']['attributes']||null:null,'limit':_0x11b6fe[_0x5b76('0x1d')]?_0x11b6fe[_0x5b76('0x1d')][_0x5b76('0x1e')]||null:null})[_0x5b76('0xc')](function(_0x163bad){logger['info'](_0x5b76('0x1b'),_0x11b6fe);logger[_0x5b76('0x10')](_0x5b76('0x1b'),_0x11b6fe,JSON[_0x5b76('0x12')](_0x163bad));_0x26200a(_0x163bad);})[_0x5b76('0x16')](function(_0x190320){logger[_0x5b76('0x13')](_0x5b76('0x1b'),_0x190320[_0x5b76('0x14')],_0x11b6fe);_0x319513(_0x3c57c9[_0x5b76('0x13')](0x1f4,_0x190320[_0x5b76('0x14')]));});});};
\ No newline at end of file
+var _0x6777=['../../config/logger','jayson/promise','client','http','then','info','ChatQueueReport,\x20%s,\x20%s','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','CreateChatQueueReport','ChatQueueReport','create','raw','stringify','UpdateChatQueueReport','update','body','options','where','attributes','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x6777,0xb9));var _0x7677=function(_0x1d87fc,_0x1e5321){_0x1d87fc=_0x1d87fc-0x0;var _0x492b56=_0x6777[_0x1d87fc];return _0x492b56;};'use strict';var _=require(_0x7677('0x0'));var util=require(_0x7677('0x1'));var moment=require(_0x7677('0x2'));var BPromise=require('bluebird');var rs=require(_0x7677('0x3'));var fs=require('fs');var Redis=require(_0x7677('0x4'));var db=require(_0x7677('0x5'))['db'];var utils=require(_0x7677('0x6'));var logger=require(_0x7677('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x7677('0x8'));var client=jayson[_0x7677('0x9')][_0x7677('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x581df1,_0x4c5f3c,_0x329839){return new BPromise(function(_0x2dd39f,_0x1e45d6){return client['request'](_0x581df1,_0x329839)[_0x7677('0xb')](function(_0x488188){logger[_0x7677('0xc')](_0x7677('0xd'),_0x4c5f3c,'request\x20sent');logger[_0x7677('0xe')](_0x7677('0xf'),_0x4c5f3c,_0x7677('0x10'),JSON['stringify'](_0x488188));if(_0x488188['error']){if(_0x488188['error']['code']===0x1f4){logger[_0x7677('0x11')](_0x7677('0xd'),_0x4c5f3c,_0x488188[_0x7677('0x11')][_0x7677('0x12')]);return _0x1e45d6(_0x488188[_0x7677('0x11')]['message']);}logger[_0x7677('0x11')](_0x7677('0xd'),_0x4c5f3c,_0x488188[_0x7677('0x11')]['message']);return _0x2dd39f(_0x488188[_0x7677('0x11')]['message']);}else{logger[_0x7677('0xc')](_0x7677('0xd'),_0x4c5f3c,'request\x20sent');_0x2dd39f(_0x488188[_0x7677('0x13')][_0x7677('0x12')]);}})[_0x7677('0x14')](function(_0x587231){logger[_0x7677('0x11')](_0x7677('0xd'),_0x4c5f3c,_0x587231);_0x1e45d6(_0x587231);});});}exports[_0x7677('0x15')]=function(_0x525926){var _0x36041e=this;return new Promise(function(_0x8d9825,_0x1c5b6b){return db[_0x7677('0x16')][_0x7677('0x17')](_0x525926['body'],{'raw':_0x525926['options']?_0x525926['options'][_0x7677('0x18')]===undefined?!![]:![]:!![]})[_0x7677('0xb')](function(_0x5dd74d){logger[_0x7677('0xc')](_0x7677('0x15'),_0x525926);logger[_0x7677('0xe')](_0x7677('0x15'),_0x525926,JSON[_0x7677('0x19')](_0x5dd74d));_0x8d9825(_0x5dd74d);})['catch'](function(_0x45619f){logger[_0x7677('0x11')]('CreateChatQueueReport',_0x45619f['message'],_0x525926);_0x1c5b6b(_0x36041e[_0x7677('0x11')](0x1f4,_0x45619f[_0x7677('0x12')]));});});};exports[_0x7677('0x1a')]=function(_0x59d1e6){var _0x1ef4aa=this;return new Promise(function(_0x53a949,_0x3884bc){return db['ChatQueueReport'][_0x7677('0x1b')](_0x59d1e6[_0x7677('0x1c')],{'raw':_0x59d1e6['options']?_0x59d1e6['options'][_0x7677('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x59d1e6[_0x7677('0x1d')]?_0x59d1e6['options'][_0x7677('0x1e')]||null:null,'attributes':_0x59d1e6[_0x7677('0x1d')]?_0x59d1e6[_0x7677('0x1d')][_0x7677('0x1f')]||null:null,'limit':_0x59d1e6[_0x7677('0x1d')]?_0x59d1e6[_0x7677('0x1d')]['limit']||null:null})[_0x7677('0xb')](function(_0x37524d){logger['info'](_0x7677('0x1a'),_0x59d1e6);logger[_0x7677('0xe')]('UpdateChatQueueReport',_0x59d1e6,JSON[_0x7677('0x19')](_0x37524d));_0x53a949(_0x37524d);})[_0x7677('0x14')](function(_0x3a7b39){logger['error'](_0x7677('0x1a'),_0x3a7b39[_0x7677('0x12')],_0x59d1e6);_0x3884bc(_0x1ef4aa['error'](0x1f4,_0x3a7b39[_0x7677('0x12')]));});});};
\ No newline at end of file
index 38e8135..ac032cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3fb=['describe','/:id','show','post','create','put','update','delete','exports','util','path','connect-timeout','express','fs-extra','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','index'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd3fb,0x15f));var _0xbd3f=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xd3fb[_0x502c7d];return _0x30b7ed;};'use strict';var multer=require('multer');var util=require(_0xbd3f('0x0'));var path=require(_0xbd3f('0x1'));var timeout=require(_0xbd3f('0x2'));var express=require(_0xbd3f('0x3'));var router=express['Router']();var fs_extra=require(_0xbd3f('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xbd3f('0x5'));var controller=require(_0xbd3f('0x6'));router[_0xbd3f('0x7')]('/',auth[_0xbd3f('0x8')](),controller[_0xbd3f('0x9')]);router[_0xbd3f('0x7')]('/describe',auth[_0xbd3f('0x8')](),controller[_0xbd3f('0xa')]);router[_0xbd3f('0x7')](_0xbd3f('0xb'),auth[_0xbd3f('0x8')](),controller[_0xbd3f('0xc')]);router[_0xbd3f('0xd')]('/',auth['isAuthenticated'](),controller[_0xbd3f('0xe')]);router[_0xbd3f('0xf')](_0xbd3f('0xb'),auth['isAuthenticated'](),controller[_0xbd3f('0x10')]);router[_0xbd3f('0x11')](_0xbd3f('0xb'),auth[_0xbd3f('0x8')](),controller['destroy']);module[_0xbd3f('0x12')]=router;
\ No newline at end of file
+var _0x361b=['../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','post','create','delete','destroy','exports','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x26d779,_0x4c7d16){var _0x44d48a=function(_0x51ec1e){while(--_0x51ec1e){_0x26d779['push'](_0x26d779['shift']());}};_0x44d48a(++_0x4c7d16);}(_0x361b,0x13e));var _0xb361=function(_0x30ad25,_0x2d5e6f){_0x30ad25=_0x30ad25-0x0;var _0x30388a=_0x361b[_0x30ad25];return _0x30388a;};'use strict';var multer=require('multer');var util=require(_0xb361('0x0'));var path=require(_0xb361('0x1'));var timeout=require(_0xb361('0x2'));var express=require('express');var router=express[_0xb361('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xb361('0x4'));var interaction=require(_0xb361('0x5'));var config=require(_0xb361('0x6'));var controller=require('./chatQueueReport.controller');router[_0xb361('0x7')]('/',auth[_0xb361('0x8')](),controller[_0xb361('0x9')]);router[_0xb361('0x7')](_0xb361('0xa'),auth[_0xb361('0x8')](),controller[_0xb361('0xb')]);router[_0xb361('0x7')](_0xb361('0xc'),auth[_0xb361('0x8')](),controller['show']);router[_0xb361('0xd')]('/',auth['isAuthenticated'](),controller[_0xb361('0xe')]);router['put']('/:id',auth[_0xb361('0x8')](),controller['update']);router[_0xb361('0xf')](_0xb361('0xc'),auth[_0xb361('0x8')](),controller[_0xb361('0x10')]);module[_0xb361('0x11')]=router;
\ No newline at end of file
index caaab54..2241a6f 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(_0x1e1965,_0x55785c){var _0x1a2e96=function(_0x27d366){while(--_0x27d366){_0x1e1965['push'](_0x1e1965['shift']());}};_0x1a2e96(++_0x55785c);}(_0xb43b,0x1b2));var _0xbb43=function(_0xb5ce2d,_0x19a973){_0xb5ce2d=_0xb5ce2d-0x0;var _0x30183a=_0xb43b[_0xb5ce2d];return _0x30183a;};'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 _0xaa88=['account','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x949fa7,_0x2bd1b2){var _0x4874f4=function(_0x5602b7){while(--_0x5602b7){_0x949fa7['push'](_0x949fa7['shift']());}};_0x4874f4(++_0x2bd1b2);}(_0xaa88,0x137));var _0x8aa8=function(_0x468b0f,_0x408566){_0x468b0f=_0x468b0f-0x0;var _0x3e74d9=_0xaa88[_0x468b0f];return _0x3e74d9;};'use strict';var moment=require(_0x8aa8('0x0'));var Sequelize=require(_0x8aa8('0x1'));module[_0x8aa8('0x2')]={'uniqueid':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x8aa8('0x4'),_0x8aa8('0x5'),_0x8aa8('0x6')),'allowNull':![],'defaultValue':_0x8aa8('0x6')},'transferredAt':{'type':Sequelize[_0x8aa8('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x8aa8('0x8')]}};
\ No newline at end of file
index 692e5e4..da9597d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20ac=['fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','params','length','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','lodash','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','ChatTransferReport','rawAttributes','fieldName','type','model','keys','query','filters','attributes','intersection'];(function(_0x1871ea,_0x164bc9){var _0x430db0=function(_0x3b0a25){while(--_0x3b0a25){_0x1871ea['push'](_0x1871ea['shift']());}};_0x430db0(++_0x164bc9);}(_0x20ac,0xfa));var _0xc20a=function(_0x2a98e3,_0x488997){_0x2a98e3=_0x2a98e3-0x0;var _0x370a71=_0x20ac[_0x2a98e3];return _0x370a71;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc20a('0x0'));var zipdir=require(_0xc20a('0x1'));var jsonpatch=require(_0xc20a('0x2'));var rp=require(_0xc20a('0x3'));var moment=require('moment');var BPromise=require(_0xc20a('0x4'));var Mustache=require(_0xc20a('0x5'));var util=require(_0xc20a('0x6'));var path=require('path');var sox=require(_0xc20a('0x7'));var csv=require('to-csv');var ejs=require(_0xc20a('0x8'));var fs=require('fs');var fs_extra=require(_0xc20a('0x9'));var _=require(_0xc20a('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xc20a('0xb'));var toCsv=require(_0xc20a('0xc'));var querystring=require(_0xc20a('0xd'));var Papa=require(_0xc20a('0xe'));var Redis=require(_0xc20a('0xf'));var authService=require(_0xc20a('0x10'));var qs=require(_0xc20a('0x11'));var as=require(_0xc20a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc20a('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xc20a('0x14'));var licenseUtil=require(_0xc20a('0x15'));var db=require(_0xc20a('0x16'))['db'];function respondWithStatusCode(_0xe320fc,_0x311e13){_0x311e13=_0x311e13||0xcc;return function(_0x24ffc9){if(_0x24ffc9){return _0xe320fc['sendStatus'](_0x311e13);}return _0xe320fc[_0xc20a('0x17')](_0x311e13)[_0xc20a('0x18')]();};}function respondWithResult(_0x5e30dd,_0x972815){_0x972815=_0x972815||0xc8;return function(_0x4e1cb0){if(_0x4e1cb0){return _0x5e30dd[_0xc20a('0x17')](_0x972815)[_0xc20a('0x19')](_0x4e1cb0);}};}function respondWithFilteredResult(_0x54dc98,_0x42a4a2){return function(_0x23a12e){if(_0x23a12e){var _0x4bce27=typeof _0x42a4a2[_0xc20a('0x1a')]===_0xc20a('0x1b')&&typeof _0x42a4a2[_0xc20a('0x1c')]===_0xc20a('0x1b');var _0x4fff64=_0x23a12e['count'];var _0x36ba09=_0x4bce27?0x0:_0x42a4a2['offset'];var _0x91f9c1=_0x4bce27?_0x23a12e[_0xc20a('0x1d')]:_0x42a4a2[_0xc20a('0x1a')]+_0x42a4a2['limit'];var _0x445190;if(_0x91f9c1>=_0x4fff64){_0x91f9c1=_0x4fff64;_0x445190=0xc8;}else{_0x445190=0xce;}_0x54dc98[_0xc20a('0x17')](_0x445190);return _0x54dc98[_0xc20a('0x1e')](_0xc20a('0x1f'),_0x36ba09+'-'+_0x91f9c1+'/'+_0x4fff64)[_0xc20a('0x19')](_0x23a12e);}return null;};}function patchUpdates(_0xdad018){return function(_0x4c6588){try{jsonpatch[_0xc20a('0x20')](_0x4c6588,_0xdad018,!![]);}catch(_0xa46fdb){return BPromise[_0xc20a('0x21')](_0xa46fdb);}return _0x4c6588[_0xc20a('0x22')]();};}function saveUpdates(_0x43e107,_0x249844){return function(_0x3835c9){if(_0x3835c9){return _0x3835c9[_0xc20a('0x23')](_0x43e107)[_0xc20a('0x24')](function(_0xf28138){return _0xf28138;});}return null;};}function removeEntity(_0x1f4b39,_0x4b407e){return function(_0x18124f){if(_0x18124f){return _0x18124f[_0xc20a('0x25')]()[_0xc20a('0x24')](function(){_0x1f4b39[_0xc20a('0x17')](0xcc)[_0xc20a('0x18')]();});}};}function handleEntityNotFound(_0x288385,_0x4d0822){return function(_0x2f1bee){if(!_0x2f1bee){_0x288385['sendStatus'](0x194);}return _0x2f1bee;};}function handleError(_0x590df0,_0x5ef43d){_0x5ef43d=_0x5ef43d||0x1f4;return function(_0x1dd1f2){logger[_0xc20a('0x26')](_0x1dd1f2[_0xc20a('0x27')]);if(_0x1dd1f2[_0xc20a('0x28')]){delete _0x1dd1f2[_0xc20a('0x28')];}_0x590df0[_0xc20a('0x17')](_0x5ef43d)[_0xc20a('0x29')](_0x1dd1f2);};}exports[_0xc20a('0x2a')]=function(_0x3ee013,_0x57e7b3){var _0x47c971={},_0x3b64df={},_0xe550c1={'count':0x0,'rows':[]};var _0x557fb8=_[_0xc20a('0x2b')](db[_0xc20a('0x2c')][_0xc20a('0x2d')],function(_0x3ae52b){return{'name':_0x3ae52b[_0xc20a('0x2e')],'type':_0x3ae52b[_0xc20a('0x2f')]['key']};});_0x3b64df[_0xc20a('0x30')]=_['map'](_0x557fb8,_0xc20a('0x28'));_0x3b64df['query']=_[_0xc20a('0x31')](_0x3ee013[_0xc20a('0x32')]);_0x3b64df[_0xc20a('0x33')]=_['intersection'](_0x3b64df[_0xc20a('0x30')],_0x3b64df[_0xc20a('0x32')]);_0x47c971[_0xc20a('0x34')]=_[_0xc20a('0x35')](_0x3b64df['model'],qs[_0xc20a('0x36')](_0x3ee013[_0xc20a('0x32')][_0xc20a('0x36')]));_0x47c971[_0xc20a('0x34')]=_0x47c971[_0xc20a('0x34')]['length']?_0x47c971['attributes']:_0x3b64df[_0xc20a('0x30')];if(!_0x3ee013[_0xc20a('0x32')][_0xc20a('0x37')](_0xc20a('0x38'))){_0x47c971[_0xc20a('0x1c')]=qs[_0xc20a('0x1c')](_0x3ee013[_0xc20a('0x32')]['limit']);_0x47c971[_0xc20a('0x1a')]=qs[_0xc20a('0x1a')](_0x3ee013[_0xc20a('0x32')][_0xc20a('0x1a')]);}_0x47c971[_0xc20a('0x39')]=qs[_0xc20a('0x3a')](_0x3ee013[_0xc20a('0x32')]['sort']);_0x47c971[_0xc20a('0x3b')]=qs[_0xc20a('0x33')](_[_0xc20a('0x3c')](_0x3ee013[_0xc20a('0x32')],_0x3b64df['filters']),_0x557fb8);if(_0x3ee013[_0xc20a('0x32')]['filter']){_0x47c971[_0xc20a('0x3b')]=_[_0xc20a('0x3d')](_0x47c971[_0xc20a('0x3b')],{'$or':_[_0xc20a('0x2b')](_0x557fb8,function(_0x2821cb){if(_0x2821cb[_0xc20a('0x2f')]!==_0xc20a('0x3e')){var _0x9536f9={};_0x9536f9[_0x2821cb['name']]={'$like':'%'+_0x3ee013[_0xc20a('0x32')][_0xc20a('0x3f')]+'%'};return _0x9536f9;}})});}_0x47c971=_[_0xc20a('0x3d')]({},_0x47c971,_0x3ee013[_0xc20a('0x40')]);var _0x447fd9={'where':_0x47c971[_0xc20a('0x3b')]};return db['ChatTransferReport'][_0xc20a('0x1d')](_0x447fd9)['then'](function(_0x32f5e6){_0xe550c1['count']=_0x32f5e6;if(_0x3ee013[_0xc20a('0x32')][_0xc20a('0x41')]){_0x47c971[_0xc20a('0x42')]=[{'all':!![]}];}return db['ChatTransferReport'][_0xc20a('0x43')](_0x47c971);})[_0xc20a('0x24')](function(_0x225234){_0xe550c1['rows']=_0x225234;return _0xe550c1;})[_0xc20a('0x24')](respondWithFilteredResult(_0x57e7b3,_0x47c971))[_0xc20a('0x44')](handleError(_0x57e7b3,null));};exports[_0xc20a('0x45')]=function(_0x43a027,_0x5a60f4){var _0x279843={'raw':!![],'where':{'id':_0x43a027[_0xc20a('0x46')]['id']}},_0x3d31c6={};_0x3d31c6[_0xc20a('0x30')]=_['keys'](db['ChatTransferReport'][_0xc20a('0x2d')]);_0x3d31c6['query']=_['keys'](_0x43a027[_0xc20a('0x32')]);_0x3d31c6['filters']=_[_0xc20a('0x35')](_0x3d31c6[_0xc20a('0x30')],_0x3d31c6[_0xc20a('0x32')]);_0x279843[_0xc20a('0x34')]=_[_0xc20a('0x35')](_0x3d31c6['model'],qs[_0xc20a('0x36')](_0x43a027[_0xc20a('0x32')][_0xc20a('0x36')]));_0x279843[_0xc20a('0x34')]=_0x279843[_0xc20a('0x34')][_0xc20a('0x47')]?_0x279843[_0xc20a('0x34')]:_0x3d31c6[_0xc20a('0x30')];if(_0x43a027[_0xc20a('0x32')]['includeAll']){_0x279843[_0xc20a('0x42')]=[{'all':!![]}];}_0x279843=_['merge']({},_0x279843,_0x43a027['options']);return db[_0xc20a('0x2c')][_0xc20a('0x48')](_0x279843)[_0xc20a('0x24')](handleEntityNotFound(_0x5a60f4,null))[_0xc20a('0x24')](respondWithResult(_0x5a60f4,null))['catch'](handleError(_0x5a60f4,null));};exports['create']=function(_0x1317cd,_0x3e06f6){return db['ChatTransferReport'][_0xc20a('0x49')](_0x1317cd[_0xc20a('0x4a')],{})['then'](respondWithResult(_0x3e06f6,0xc9))[_0xc20a('0x44')](handleError(_0x3e06f6,null));};exports[_0xc20a('0x23')]=function(_0x38b9fe,_0x5563e6){if(_0x38b9fe['body']['id']){delete _0x38b9fe[_0xc20a('0x4a')]['id'];}return db[_0xc20a('0x2c')][_0xc20a('0x48')]({'where':{'id':_0x38b9fe[_0xc20a('0x46')]['id']}})[_0xc20a('0x24')](handleEntityNotFound(_0x5563e6,null))[_0xc20a('0x24')](saveUpdates(_0x38b9fe[_0xc20a('0x4a')],null))['then'](respondWithResult(_0x5563e6,null))[_0xc20a('0x44')](handleError(_0x5563e6,null));};exports[_0xc20a('0x25')]=function(_0x54f30b,_0x2d2928){return db[_0xc20a('0x2c')][_0xc20a('0x48')]({'where':{'id':_0x54f30b['params']['id']}})[_0xc20a('0x24')](handleEntityNotFound(_0x2d2928,null))[_0xc20a('0x24')](removeEntity(_0x2d2928,null))[_0xc20a('0x44')](handleError(_0x2d2928,null));};exports[_0xc20a('0x4b')]=function(_0x4e3cd7,_0x4002af){return db['ChatTransferReport']['describe']()[_0xc20a('0x24')](respondWithResult(_0x4002af,null))[_0xc20a('0x44')](handleError(_0x4002af,null));};
\ No newline at end of file
+var _0x82b3=['where','filters','pick','filter','merge','options','ChatTransferReport','then','includeAll','include','findAll','rows','catch','params','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','count','limit','set','apply','reject','update','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','offset','order','sort'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x82b3,0xf6));var _0x382b=function(_0x1ace50,_0x36aaef){_0x1ace50=_0x1ace50-0x0;var _0x59c30e=_0x82b3[_0x1ace50];return _0x59c30e;};'use strict';var emlformat=require(_0x382b('0x0'));var rimraf=require(_0x382b('0x1'));var zipdir=require(_0x382b('0x2'));var jsonpatch=require(_0x382b('0x3'));var rp=require('request-promise');var moment=require(_0x382b('0x4'));var BPromise=require(_0x382b('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x382b('0x6'));var sox=require(_0x382b('0x7'));var csv=require(_0x382b('0x8'));var ejs=require(_0x382b('0x9'));var fs=require('fs');var fs_extra=require(_0x382b('0xa'));var _=require(_0x382b('0xb'));var squel=require('squel');var crypto=require(_0x382b('0xc'));var jsforce=require(_0x382b('0xd'));var deskjs=require(_0x382b('0xe'));var toCsv=require('to-csv');var querystring=require(_0x382b('0xf'));var Papa=require(_0x382b('0x10'));var Redis=require(_0x382b('0x11'));var authService=require(_0x382b('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x382b('0x13'));var hardwareService=require(_0x382b('0x14'));var logger=require(_0x382b('0x15'))(_0x382b('0x16'));var utils=require('../../config/utils');var config=require(_0x382b('0x17'));var licenseUtil=require(_0x382b('0x18'));var db=require(_0x382b('0x19'))['db'];function respondWithStatusCode(_0x4af95e,_0x14e480){_0x14e480=_0x14e480||0xcc;return function(_0x3ed04e){if(_0x3ed04e){return _0x4af95e[_0x382b('0x1a')](_0x14e480);}return _0x4af95e['status'](_0x14e480)[_0x382b('0x1b')]();};}function respondWithResult(_0x3448c6,_0x3b96ba){_0x3b96ba=_0x3b96ba||0xc8;return function(_0x430196){if(_0x430196){return _0x3448c6[_0x382b('0x1c')](_0x3b96ba)[_0x382b('0x1d')](_0x430196);}};}function respondWithFilteredResult(_0x4502cd,_0x1bbd79){return function(_0x3cc3e5){if(_0x3cc3e5){var _0x28a221=typeof _0x1bbd79['offset']===_0x382b('0x1e')&&typeof _0x1bbd79['limit']==='undefined';var _0x599d43=_0x3cc3e5[_0x382b('0x1f')];var _0xb0e20=_0x28a221?0x0:_0x1bbd79['offset'];var _0x504ccd=_0x28a221?_0x3cc3e5[_0x382b('0x1f')]:_0x1bbd79['offset']+_0x1bbd79[_0x382b('0x20')];var _0x1ea2f8;if(_0x504ccd>=_0x599d43){_0x504ccd=_0x599d43;_0x1ea2f8=0xc8;}else{_0x1ea2f8=0xce;}_0x4502cd['status'](_0x1ea2f8);return _0x4502cd[_0x382b('0x21')]('Content-Range',_0xb0e20+'-'+_0x504ccd+'/'+_0x599d43)['json'](_0x3cc3e5);}return null;};}function patchUpdates(_0x10e7ce){return function(_0x1ac23b){try{jsonpatch[_0x382b('0x22')](_0x1ac23b,_0x10e7ce,!![]);}catch(_0x4d9a17){return BPromise[_0x382b('0x23')](_0x4d9a17);}return _0x1ac23b['save']();};}function saveUpdates(_0x426119,_0x2d1df4){return function(_0x3a5066){if(_0x3a5066){return _0x3a5066[_0x382b('0x24')](_0x426119)['then'](function(_0x4735bf){return _0x4735bf;});}return null;};}function removeEntity(_0x1fd102,_0x523210){return function(_0x15dce1){if(_0x15dce1){return _0x15dce1[_0x382b('0x25')]()['then'](function(){_0x1fd102[_0x382b('0x1c')](0xcc)[_0x382b('0x1b')]();});}};}function handleEntityNotFound(_0x11838e,_0x450535){return function(_0x523f81){if(!_0x523f81){_0x11838e[_0x382b('0x1a')](0x194);}return _0x523f81;};}function handleError(_0x57be29,_0x151cb0){_0x151cb0=_0x151cb0||0x1f4;return function(_0x6e324d){logger[_0x382b('0x26')](_0x6e324d[_0x382b('0x27')]);if(_0x6e324d[_0x382b('0x28')]){delete _0x6e324d[_0x382b('0x28')];}_0x57be29['status'](_0x151cb0)[_0x382b('0x29')](_0x6e324d);};}exports[_0x382b('0x2a')]=function(_0x478764,_0x4ab3dc){var _0x198251={},_0x138449={},_0x180ee4={'count':0x0,'rows':[]};var _0x1458ac=_[_0x382b('0x2b')](db['ChatTransferReport'][_0x382b('0x2c')],function(_0x333e16){return{'name':_0x333e16[_0x382b('0x2d')],'type':_0x333e16[_0x382b('0x2e')][_0x382b('0x2f')]};});_0x138449[_0x382b('0x30')]=_['map'](_0x1458ac,_0x382b('0x28'));_0x138449['query']=_[_0x382b('0x31')](_0x478764[_0x382b('0x32')]);_0x138449['filters']=_[_0x382b('0x33')](_0x138449[_0x382b('0x30')],_0x138449['query']);_0x198251[_0x382b('0x34')]=_['intersection'](_0x138449[_0x382b('0x30')],qs[_0x382b('0x35')](_0x478764[_0x382b('0x32')]['fields']));_0x198251[_0x382b('0x34')]=_0x198251['attributes'][_0x382b('0x36')]?_0x198251['attributes']:_0x138449[_0x382b('0x30')];if(!_0x478764['query']['hasOwnProperty']('nolimit')){_0x198251[_0x382b('0x20')]=qs[_0x382b('0x20')](_0x478764['query']['limit']);_0x198251[_0x382b('0x37')]=qs[_0x382b('0x37')](_0x478764[_0x382b('0x32')][_0x382b('0x37')]);}_0x198251[_0x382b('0x38')]=qs['sort'](_0x478764[_0x382b('0x32')][_0x382b('0x39')]);_0x198251[_0x382b('0x3a')]=qs[_0x382b('0x3b')](_[_0x382b('0x3c')](_0x478764['query'],_0x138449['filters']),_0x1458ac);if(_0x478764['query'][_0x382b('0x3d')]){_0x198251[_0x382b('0x3a')]=_['merge'](_0x198251[_0x382b('0x3a')],{'$or':_[_0x382b('0x2b')](_0x1458ac,function(_0x450fa9){if(_0x450fa9[_0x382b('0x2e')]!=='VIRTUAL'){var _0x339605={};_0x339605[_0x450fa9[_0x382b('0x28')]]={'$like':'%'+_0x478764[_0x382b('0x32')][_0x382b('0x3d')]+'%'};return _0x339605;}})});}_0x198251=_[_0x382b('0x3e')]({},_0x198251,_0x478764[_0x382b('0x3f')]);var _0x2639b0={'where':_0x198251[_0x382b('0x3a')]};return db[_0x382b('0x40')]['count'](_0x2639b0)[_0x382b('0x41')](function(_0x5f0f76){_0x180ee4[_0x382b('0x1f')]=_0x5f0f76;if(_0x478764[_0x382b('0x32')][_0x382b('0x42')]){_0x198251[_0x382b('0x43')]=[{'all':!![]}];}return db[_0x382b('0x40')][_0x382b('0x44')](_0x198251);})[_0x382b('0x41')](function(_0x3f04f4){_0x180ee4[_0x382b('0x45')]=_0x3f04f4;return _0x180ee4;})['then'](respondWithFilteredResult(_0x4ab3dc,_0x198251))[_0x382b('0x46')](handleError(_0x4ab3dc,null));};exports['show']=function(_0x53996e,_0x1902a5){var _0x3d71b1={'raw':!![],'where':{'id':_0x53996e[_0x382b('0x47')]['id']}},_0x408977={};_0x408977[_0x382b('0x30')]=_['keys'](db[_0x382b('0x40')]['rawAttributes']);_0x408977['query']=_[_0x382b('0x31')](_0x53996e[_0x382b('0x32')]);_0x408977[_0x382b('0x3b')]=_['intersection'](_0x408977[_0x382b('0x30')],_0x408977[_0x382b('0x32')]);_0x3d71b1[_0x382b('0x34')]=_[_0x382b('0x33')](_0x408977[_0x382b('0x30')],qs['fields'](_0x53996e['query'][_0x382b('0x35')]));_0x3d71b1[_0x382b('0x34')]=_0x3d71b1[_0x382b('0x34')][_0x382b('0x36')]?_0x3d71b1[_0x382b('0x34')]:_0x408977[_0x382b('0x30')];if(_0x53996e[_0x382b('0x32')][_0x382b('0x42')]){_0x3d71b1['include']=[{'all':!![]}];}_0x3d71b1=_['merge']({},_0x3d71b1,_0x53996e['options']);return db[_0x382b('0x40')]['find'](_0x3d71b1)[_0x382b('0x41')](handleEntityNotFound(_0x1902a5,null))['then'](respondWithResult(_0x1902a5,null))['catch'](handleError(_0x1902a5,null));};exports[_0x382b('0x48')]=function(_0x2fe564,_0x107201){return db['ChatTransferReport'][_0x382b('0x48')](_0x2fe564[_0x382b('0x49')],{})[_0x382b('0x41')](respondWithResult(_0x107201,0xc9))[_0x382b('0x46')](handleError(_0x107201,null));};exports[_0x382b('0x24')]=function(_0x176ca9,_0x38f834){if(_0x176ca9[_0x382b('0x49')]['id']){delete _0x176ca9['body']['id'];}return db[_0x382b('0x40')]['find']({'where':{'id':_0x176ca9[_0x382b('0x47')]['id']}})[_0x382b('0x41')](handleEntityNotFound(_0x38f834,null))[_0x382b('0x41')](saveUpdates(_0x176ca9['body'],null))[_0x382b('0x41')](respondWithResult(_0x38f834,null))[_0x382b('0x46')](handleError(_0x38f834,null));};exports[_0x382b('0x25')]=function(_0xa9d081,_0xf82722){return db[_0x382b('0x40')][_0x382b('0x4a')]({'where':{'id':_0xa9d081['params']['id']}})['then'](handleEntityNotFound(_0xf82722,null))['then'](removeEntity(_0xf82722,null))['catch'](handleError(_0xf82722,null));};exports[_0x382b('0x4b')]=function(_0x39ea43,_0x533ee6){return db[_0x382b('0x40')]['describe']()[_0x382b('0x41')](respondWithResult(_0x533ee6,null))[_0x382b('0x46')](handleError(_0x533ee6,null));};
\ No newline at end of file
index 9d1c088..e68962e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1b9=['util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./chatTransferReport.attributes','exports','define','ChatTransferReport','report_chat_transfer','uniqueid','lodash'];(function(_0x2be495,_0x321b67){var _0x4dbfcb=function(_0x27672e){while(--_0x27672e){_0x2be495['push'](_0x2be495['shift']());}};_0x4dbfcb(++_0x321b67);}(_0xa1b9,0x1a3));var _0x9a1b=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0xa1b9[_0x2f3848];return _0x102668;};'use strict';var _=require(_0x9a1b('0x0'));var util=require(_0x9a1b('0x1'));var logger=require(_0x9a1b('0x2'))(_0x9a1b('0x3'));var moment=require(_0x9a1b('0x4'));var BPromise=require(_0x9a1b('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9a1b('0x6'));var rimraf=require(_0x9a1b('0x7'));var config=require(_0x9a1b('0x8'));var attributes=require(_0x9a1b('0x9'));module[_0x9a1b('0xa')]=function(_0x38beea,_0x1af00a){return _0x38beea[_0x9a1b('0xb')](_0x9a1b('0xc'),attributes,{'tableName':_0x9a1b('0xd'),'paranoid':![],'indexes':[{'name':_0x9a1b('0xe'),'fields':[_0x9a1b('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe8f5=['util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./chatTransferReport.attributes','exports','define','ChatTransferReport','report_chat_transfer','uniqueid','lodash'];(function(_0x36a680,_0x298c65){var _0x308a59=function(_0x553dba){while(--_0x553dba){_0x36a680['push'](_0x36a680['shift']());}};_0x308a59(++_0x298c65);}(_0xe8f5,0xed));var _0x5e8f=function(_0x1fe67a,_0x3794b1){_0x1fe67a=_0x1fe67a-0x0;var _0x3c5f44=_0xe8f5[_0x1fe67a];return _0x3c5f44;};'use strict';var _=require(_0x5e8f('0x0'));var util=require(_0x5e8f('0x1'));var logger=require(_0x5e8f('0x2'))('api');var moment=require('moment');var BPromise=require(_0x5e8f('0x3'));var rp=require(_0x5e8f('0x4'));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(_0x4bbdc5,_0x19f626){return _0x4bbdc5[_0x5e8f('0xa')](_0x5e8f('0xb'),attributes,{'tableName':_0x5e8f('0xc'),'paranoid':![],'indexes':[{'name':_0x5e8f('0xd'),'fields':[_0x5e8f('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 7b80b13..3761308 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9839=['debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','ChatTransferReport,\x20%s,\x20%s','request\x20sent'];(function(_0x1386f0,_0x4104e5){var _0x79569a=function(_0x49299e){while(--_0x49299e){_0x1386f0['push'](_0x1386f0['shift']());}};_0x79569a(++_0x4104e5);}(_0x9839,0x105));var _0x9983=function(_0x4e79b0,_0x111f3d){_0x4e79b0=_0x4e79b0-0x0;var _0x522030=_0x9839[_0x4e79b0];return _0x522030;};'use strict';var _=require(_0x9983('0x0'));var util=require(_0x9983('0x1'));var moment=require(_0x9983('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9983('0x3'))['db'];var utils=require(_0x9983('0x4'));var logger=require(_0x9983('0x5'))(_0x9983('0x6'));var config=require(_0x9983('0x7'));var jayson=require(_0x9983('0x8'));var client=jayson['client'][_0x9983('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x346a04,_0x457454,_0xfc1b9c){return new BPromise(function(_0x542c1a,_0x3db9ae){return client[_0x9983('0xa')](_0x346a04,_0xfc1b9c)[_0x9983('0xb')](function(_0x4e4050){logger[_0x9983('0xc')](_0x9983('0xd'),_0x457454,_0x9983('0xe'));logger[_0x9983('0xf')](_0x9983('0x10'),_0x457454,_0x9983('0xe'),JSON[_0x9983('0x11')](_0x4e4050));if(_0x4e4050['error']){if(_0x4e4050[_0x9983('0x12')][_0x9983('0x13')]===0x1f4){logger[_0x9983('0x12')](_0x9983('0xd'),_0x457454,_0x4e4050['error']['message']);return _0x3db9ae(_0x4e4050[_0x9983('0x12')][_0x9983('0x14')]);}logger['error'](_0x9983('0xd'),_0x457454,_0x4e4050[_0x9983('0x12')][_0x9983('0x14')]);return _0x542c1a(_0x4e4050[_0x9983('0x12')][_0x9983('0x14')]);}else{logger['info'](_0x9983('0xd'),_0x457454,_0x9983('0xe'));_0x542c1a(_0x4e4050[_0x9983('0x15')]['message']);}})[_0x9983('0x16')](function(_0x44453d){logger[_0x9983('0x12')](_0x9983('0xd'),_0x457454,_0x44453d);_0x3db9ae(_0x44453d);});});}
\ No newline at end of file
+var _0x51ff=['catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','info','ChatTransferReport,\x20%s,\x20%s','request\x20sent','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x39f210,_0x2fe032){var _0x19b0a6=function(_0x2338b6){while(--_0x2338b6){_0x39f210['push'](_0x39f210['shift']());}};_0x19b0a6(++_0x2fe032);}(_0x51ff,0x1b6));var _0xf51f=function(_0x3db05c,_0x2be283){_0x3db05c=_0x3db05c-0x0;var _0x3243e5=_0x51ff[_0x3db05c];return _0x3243e5;};'use strict';var _=require(_0xf51f('0x0'));var util=require(_0xf51f('0x1'));var moment=require('moment');var BPromise=require(_0xf51f('0x2'));var rs=require(_0xf51f('0x3'));var fs=require('fs');var Redis=require(_0xf51f('0x4'));var db=require(_0xf51f('0x5'))['db'];var utils=require(_0xf51f('0x6'));var logger=require(_0xf51f('0x7'))(_0xf51f('0x8'));var config=require(_0xf51f('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xf51f('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2ae39a,_0x190db8,_0x383fa8){return new BPromise(function(_0x298617,_0x24eadd){return client[_0xf51f('0xb')](_0x2ae39a,_0x383fa8)['then'](function(_0x290286){logger[_0xf51f('0xc')](_0xf51f('0xd'),_0x190db8,_0xf51f('0xe'));logger[_0xf51f('0xf')](_0xf51f('0x10'),_0x190db8,_0xf51f('0xe'),JSON[_0xf51f('0x11')](_0x290286));if(_0x290286[_0xf51f('0x12')]){if(_0x290286[_0xf51f('0x12')][_0xf51f('0x13')]===0x1f4){logger[_0xf51f('0x12')](_0xf51f('0xd'),_0x190db8,_0x290286['error'][_0xf51f('0x14')]);return _0x24eadd(_0x290286[_0xf51f('0x12')]['message']);}logger[_0xf51f('0x12')]('ChatTransferReport,\x20%s,\x20%s',_0x190db8,_0x290286[_0xf51f('0x12')]['message']);return _0x298617(_0x290286[_0xf51f('0x12')]['message']);}else{logger[_0xf51f('0xc')](_0xf51f('0xd'),_0x190db8,_0xf51f('0xe'));_0x298617(_0x290286[_0xf51f('0x15')][_0xf51f('0x14')]);}})[_0xf51f('0x16')](function(_0x192355){logger[_0xf51f('0x12')](_0xf51f('0xd'),_0x190db8,_0x192355);_0x24eadd(_0x192355);});});}
\ No newline at end of file
index 9be5956..92c2563 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06ba=['/describe','isAuthenticated','describe','/:id','show','post','put','update','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatTransferReport.controller','get','index'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x06ba,0x1c3));var _0xa06b=function(_0x453298,_0x3b39e3){_0x453298=_0x453298-0x0;var _0x3fccb8=_0x06ba[_0x453298];return _0x3fccb8;};'use strict';var multer=require('multer');var util=require(_0xa06b('0x0'));var path=require(_0xa06b('0x1'));var timeout=require(_0xa06b('0x2'));var express=require(_0xa06b('0x3'));var router=express[_0xa06b('0x4')]();var fs_extra=require(_0xa06b('0x5'));var auth=require(_0xa06b('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xa06b('0x7'));var controller=require(_0xa06b('0x8'));router[_0xa06b('0x9')]('/',auth['isAuthenticated'](),controller[_0xa06b('0xa')]);router[_0xa06b('0x9')](_0xa06b('0xb'),auth[_0xa06b('0xc')](),controller[_0xa06b('0xd')]);router[_0xa06b('0x9')](_0xa06b('0xe'),auth[_0xa06b('0xc')](),controller[_0xa06b('0xf')]);router[_0xa06b('0x10')]('/',auth[_0xa06b('0xc')](),controller['create']);router[_0xa06b('0x11')]('/:id',auth[_0xa06b('0xc')](),controller[_0xa06b('0x12')]);router[_0xa06b('0x13')](_0xa06b('0xe'),auth[_0xa06b('0xc')](),controller[_0xa06b('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x51a6=['../../config/environment','./chatTransferReport.controller','get','isAuthenticated','/describe','describe','/:id','show','post','put','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service'];(function(_0x41b91b,_0x9d49fa){var _0x2508f6=function(_0x21c5ea){while(--_0x21c5ea){_0x41b91b['push'](_0x41b91b['shift']());}};_0x2508f6(++_0x9d49fa);}(_0x51a6,0x117));var _0x651a=function(_0x4bed75,_0x211cc7){_0x4bed75=_0x4bed75-0x0;var _0x2dd8e8=_0x51a6[_0x4bed75];return _0x2dd8e8;};'use strict';var multer=require(_0x651a('0x0'));var util=require(_0x651a('0x1'));var path=require('path');var timeout=require(_0x651a('0x2'));var express=require('express');var router=express[_0x651a('0x3')]();var fs_extra=require(_0x651a('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x651a('0x5'));var config=require(_0x651a('0x6'));var controller=require(_0x651a('0x7'));router[_0x651a('0x8')]('/',auth[_0x651a('0x9')](),controller['index']);router[_0x651a('0x8')](_0x651a('0xa'),auth[_0x651a('0x9')](),controller[_0x651a('0xb')]);router[_0x651a('0x8')](_0x651a('0xc'),auth[_0x651a('0x9')](),controller[_0x651a('0xd')]);router[_0x651a('0xe')]('/',auth[_0x651a('0x9')](),controller['create']);router[_0x651a('0xf')](_0x651a('0xc'),auth[_0x651a('0x9')](),controller['update']);router[_0x651a('0x10')]('/:id',auth[_0x651a('0x9')](),controller[_0x651a('0x11')]);module[_0x651a('0x12')]=router;
\ No newline at end of file
index 6651cc2..577085d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff57=['#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','STRING','address','email','#011F6A','#ffffff','BOOLEAN','ENUM','rounded','squared','We\x20are\x20here!','Chat','Send','Contact\x20us','INTEGER','Powered\x20by\x20xCALLY','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Type\x20a\x20message','star','TEXT','stringify','input','name','text','getDataValue','parse','onlineForm','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','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','alternate'];(function(_0x442b6d,_0x377805){var _0x5d1c18=function(_0x45f44c){while(--_0x45f44c){_0x442b6d['push'](_0x442b6d['shift']());}};_0x5d1c18(++_0x377805);}(_0xff57,0x150));var _0x7ff5=function(_0xa5fdf4,_0x553bc8){_0xa5fdf4=_0xa5fdf4-0x0;var _0x45a73d=_0xff57[_0xa5fdf4];return _0x45a73d;};'use strict';var Sequelize=require(_0x7ff5('0x0'));var rs=require('randomstring');module['exports']={'name':{'type':Sequelize[_0x7ff5('0x1')],'allowNull':![]},'address':{'type':Sequelize[_0x7ff5('0x1')],'allowNull':![],'unique':_0x7ff5('0x2')},'description':{'type':Sequelize[_0x7ff5('0x1')]},'mapKey':{'type':Sequelize['STRING'],'defaultValue':_0x7ff5('0x3')},'mapKeyOffline':{'type':Sequelize['STRING'],'defaultValue':_0x7ff5('0x3')},'key':{'type':Sequelize[_0x7ff5('0x1')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x7ff5('0x1')],'defaultValue':'Agent'},'customerAlias':{'type':Sequelize[_0x7ff5('0x1')],'defaultValue':'Me'},'color':{'type':Sequelize[_0x7ff5('0x1')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x7ff5('0x1')],'allowNull':![],'defaultValue':_0x7ff5('0x4'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x7ff5('0x1')],'allowNull':![],'defaultValue':_0x7ff5('0x5'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xf},'remote':{'type':Sequelize[_0x7ff5('0x1')]},'animation':{'type':Sequelize[_0x7ff5('0x6')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x7ff5('0x7')](_0x7ff5('0x8'),_0x7ff5('0x9')),'defaultValue':_0x7ff5('0x8')},'header_online':{'type':Sequelize[_0x7ff5('0x1')],'defaultValue':_0x7ff5('0xa')},'start_chat_button':{'type':Sequelize[_0x7ff5('0x1')],'defaultValue':_0x7ff5('0xb')},'offline_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0x7ff5('0xc')},'header_offline':{'type':Sequelize['STRING'],'defaultValue':_0x7ff5('0xd')},'download_transcript':{'type':Sequelize[_0x7ff5('0x6')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x7ff5('0xe')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x7ff5('0x1')],'defaultValue':_0x7ff5('0xf')},'defaultWhiteLabel':{'type':Sequelize[_0x7ff5('0x6')],'defaultValue':!![]},'sitepic':{'type':Sequelize['TEXT']},'closingQuestion':{'type':Sequelize[_0x7ff5('0x1')],'defaultValue':_0x7ff5('0x10')},'formSubmitSuccessMessage':{'type':Sequelize[_0x7ff5('0x1')],'defaultValue':'Form\x20properly\x20submitted'},'formSubmitFailureMessage':{'type':Sequelize[_0x7ff5('0x1')],'defaultValue':'Form\x20submission\x20error'},'noteTitle':{'type':Sequelize['STRING'],'defaultValue':'Note'},'placeholderMessage':{'type':Sequelize['STRING'],'defaultValue':_0x7ff5('0x11')},'closingMessage':{'type':Sequelize[_0x7ff5('0x1')],'defaultValue':'Thanks\x20you\x20for\x20your\x20time!'},'closingMessageButton':{'type':Sequelize[_0x7ff5('0x1')],'defaultValue':_0x7ff5('0xc')},'skipMessageButton':{'type':Sequelize[_0x7ff5('0x1')],'defaultValue':'Skip'},'conditionAgreement':{'type':Sequelize[_0x7ff5('0x6')],'defaultValue':![]},'enableRating':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableFeedback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x7ff5('0x6')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x7ff5('0x1')],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize[_0x7ff5('0x7')](_0x7ff5('0x12'),'thumb'),'defaultValue':_0x7ff5('0x12')},'ratingStarsNumber':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x7ff5('0x13')],'defaultValue':function(){return JSON[_0x7ff5('0x14')]({'items':[{'type':_0x7ff5('0x15'),'variable':null,'config':{'placeholder':_0x7ff5('0x16'),'type':_0x7ff5('0x17'),'required':!![]},'props':{'title':_0x7ff5('0x16'),'helpText':''}},{'type':_0x7ff5('0x15'),'props':{'title':_0x7ff5('0x3'),'helpText':''},'config':{'required':!![],'placeholder':_0x7ff5('0x3'),'type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x7ff5('0x18')]('onlineForm')?JSON[_0x7ff5('0x19')](this[_0x7ff5('0x18')]('onlineForm')):{};},'set':function(_0x385178){return this['setDataValue'](_0x7ff5('0x1a'),JSON[_0x7ff5('0x14')](_0x385178));}},'offlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0x7ff5('0x14')]({'items':[{'type':_0x7ff5('0x15'),'props':{'title':_0x7ff5('0x3'),'helpText':''},'config':{'required':!![],'placeholder':_0x7ff5('0x3'),'type':_0x7ff5('0x3')},'variable':null},{'type':_0x7ff5('0x1b'),'config':{'placeholder':_0x7ff5('0x1c')},'props':{'title':_0x7ff5('0x1c'),'helpText':_0x7ff5('0x1d')}}],'fromKey':0x0});},'get':function(){return this[_0x7ff5('0x18')](_0x7ff5('0x1e'))?JSON[_0x7ff5('0x19')](this[_0x7ff5('0x18')]('offlineForm')):{};},'set':function(_0x2b779c){return this[_0x7ff5('0x1f')]('offlineForm',JSON[_0x7ff5('0x14')](_0x2b779c));}},'token':{'type':Sequelize[_0x7ff5('0x1')],'defaultValue':function(){return rs[_0x7ff5('0x20')]();}},'autoclose':{'type':Sequelize[_0x7ff5('0x6')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x7ff5('0x6')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x7ff5('0x1')]},'forwardOffline':{'type':Sequelize[_0x7ff5('0x6')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize['STRING']},'waitingTitle':{'type':Sequelize['STRING'],'defaultValue':_0x7ff5('0x21')},'waitingMessage':{'type':Sequelize[_0x7ff5('0x1')],'defaultValue':_0x7ff5('0x22')},'offlineMessageSubject':{'type':Sequelize['STRING'],'defaultValue':_0x7ff5('0x23')},'offlineMessageBody':{'type':Sequelize[_0x7ff5('0x1')],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize['STRING'],'defaultValue':'Your\x20request\x20has\x20not\x20been\x20processed.'},'skipUnmanaged':{'type':Sequelize[_0x7ff5('0x1')],'defaultValue':'Skip'},'sendUnmanaged':{'type':Sequelize[_0x7ff5('0x1')],'defaultValue':'Send'},'enableCustomerAttachment':{'type':Sequelize[_0x7ff5('0x6')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x7ff5('0x6')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x7ff5('0x13')]},'showAgentAvatar':{'type':Sequelize[_0x7ff5('0x6')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x7ff5('0x1')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x7ff5('0x24');}},'notificationSound':{'type':Sequelize[_0x7ff5('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x7ff5('0x6')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x7ff5('0x1')],'defaultValue':_0x7ff5('0x25')},'waitForTheAssignedAgent':{'type':Sequelize[_0x7ff5('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x7ff5('0x1')],'defaultValue':_0x7ff5('0x26')},'verticalAlignment':{'type':Sequelize[_0x7ff5('0xe')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize['STRING'],'defaultValue':_0x7ff5('0x27')},'defaultTitle':{'type':Sequelize[_0x7ff5('0x1')]},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize[_0x7ff5('0x6')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x7ff5('0xe')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x7ff5('0x1')],'allowNull':![],'defaultValue':_0x7ff5('0x28'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x7ff5('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x7ff5('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize['STRING'],'defaultValue':_0x7ff5('0x29')},'systemAvatar':{'type':Sequelize[_0x7ff5('0x13')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x7ff5('0xe')],'comment':_0x7ff5('0x2a')},'mandatoryDisposition':{'type':Sequelize[_0x7ff5('0x6')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x8c7de8){if(!_0x8c7de8)this['setDataValue'](_0x7ff5('0x2b'),null);this['setDataValue'](_0x7ff5('0x2c'),_0x8c7de8);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x7ff5('0x1')]},'vidaooTopic':{'type':Sequelize[_0x7ff5('0x1')],'allowNull':![],'defaultValue':_0x7ff5('0x2d')},'vidaooNote':{'type':Sequelize['STRING'],'defaultValue':function(){return _0x7ff5('0x2e');}},'vidaooMetadata':{'type':Sequelize[_0x7ff5('0x13')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x7ff5('0x6')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x509d=['Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Skip','Feedback','ENUM','thumb','star','input','name','onlineForm','parse','getDataValue','setDataValue','stringify','textarea','Comments','Leave\x20your\x20comments','offlineForm','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.','website_alias','bottom_right','alternate','System','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','exports','STRING','address','email','Agent','#011F6A','#ffffff','squared','We\x20are\x20here!','Chat','Send','Contact\x20us','BOOLEAN','INTEGER','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20submission\x20error','Note'];(function(_0x4d8e54,_0xef2374){var _0x76b44f=function(_0x31f393){while(--_0x31f393){_0x4d8e54['push'](_0x4d8e54['shift']());}};_0x76b44f(++_0xef2374);}(_0x509d,0x151));var _0xd509=function(_0x4dfb1b,_0x26850a){_0x4dfb1b=_0x4dfb1b-0x0;var _0x4dc88=_0x509d[_0x4dfb1b];return _0x4dc88;};'use strict';var Sequelize=require(_0xd509('0x0'));var rs=require('randomstring');module[_0xd509('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'address':{'type':Sequelize[_0xd509('0x2')],'allowNull':![],'unique':_0xd509('0x3')},'description':{'type':Sequelize['STRING']},'mapKey':{'type':Sequelize['STRING'],'defaultValue':_0xd509('0x4')},'mapKeyOffline':{'type':Sequelize['STRING'],'defaultValue':_0xd509('0x4')},'key':{'type':Sequelize[_0xd509('0x2')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0xd509('0x2')],'defaultValue':_0xd509('0x5')},'customerAlias':{'type':Sequelize[_0xd509('0x2')],'defaultValue':'Me'},'color':{'type':Sequelize[_0xd509('0x2')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0xd509('0x2')],'allowNull':![],'defaultValue':_0xd509('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0xd509('0x2')],'allowNull':![],'defaultValue':_0xd509('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xf},'remote':{'type':Sequelize[_0xd509('0x2')]},'animation':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'header_shape':{'type':Sequelize['ENUM']('rounded',_0xd509('0x8')),'defaultValue':'rounded'},'header_online':{'type':Sequelize[_0xd509('0x2')],'defaultValue':_0xd509('0x9')},'start_chat_button':{'type':Sequelize[_0xd509('0x2')],'defaultValue':_0xd509('0xa')},'offline_chat_button':{'type':Sequelize[_0xd509('0x2')],'defaultValue':_0xd509('0xb')},'header_offline':{'type':Sequelize[_0xd509('0x2')],'defaultValue':_0xd509('0xc')},'download_transcript':{'type':Sequelize[_0xd509('0xd')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0xd509('0xe')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize['STRING'],'defaultValue':_0xd509('0xf')},'defaultWhiteLabel':{'type':Sequelize[_0xd509('0xd')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0xd509('0x10')]},'closingQuestion':{'type':Sequelize[_0xd509('0x2')],'defaultValue':_0xd509('0x11')},'formSubmitSuccessMessage':{'type':Sequelize[_0xd509('0x2')],'defaultValue':'Form\x20properly\x20submitted'},'formSubmitFailureMessage':{'type':Sequelize['STRING'],'defaultValue':_0xd509('0x12')},'noteTitle':{'type':Sequelize[_0xd509('0x2')],'defaultValue':_0xd509('0x13')},'placeholderMessage':{'type':Sequelize['STRING'],'defaultValue':_0xd509('0x14')},'closingMessage':{'type':Sequelize['STRING'],'defaultValue':_0xd509('0x15')},'closingMessageButton':{'type':Sequelize[_0xd509('0x2')],'defaultValue':_0xd509('0xb')},'skipMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0xd509('0x16')},'conditionAgreement':{'type':Sequelize[_0xd509('0xd')],'defaultValue':![]},'enableRating':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0xd509('0xd')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0xd509('0xd')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xd509('0x2')],'defaultValue':_0xd509('0x17')},'ratingType':{'type':Sequelize[_0xd509('0x18')]('star',_0xd509('0x19')),'defaultValue':_0xd509('0x1a')},'ratingStarsNumber':{'type':Sequelize[_0xd509('0xe')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0xd509('0x10')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0xd509('0x1b'),'variable':null,'config':{'placeholder':_0xd509('0x1c'),'type':'text','required':!![]},'props':{'title':_0xd509('0x1c'),'helpText':''}},{'type':_0xd509('0x1b'),'props':{'title':_0xd509('0x4'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':_0xd509('0x4')},'variable':null}],'fromKey':0x1});},'get':function(){return this['getDataValue'](_0xd509('0x1d'))?JSON[_0xd509('0x1e')](this[_0xd509('0x1f')]('onlineForm')):{};},'set':function(_0x5bd9e6){return this[_0xd509('0x20')](_0xd509('0x1d'),JSON['stringify'](_0x5bd9e6));}},'offlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0xd509('0x21')]({'items':[{'type':_0xd509('0x1b'),'props':{'title':_0xd509('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0xd509('0x4'),'type':_0xd509('0x4')},'variable':null},{'type':_0xd509('0x22'),'config':{'placeholder':_0xd509('0x23')},'props':{'title':_0xd509('0x23'),'helpText':_0xd509('0x24')}}],'fromKey':0x0});},'get':function(){return this['getDataValue']('offlineForm')?JSON[_0xd509('0x1e')](this['getDataValue'](_0xd509('0x25'))):{};},'set':function(_0x1e17e6){return this['setDataValue'](_0xd509('0x25'),JSON['stringify'](_0x1e17e6));}},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0xd509('0x26')]();}},'autoclose':{'type':Sequelize[_0xd509('0xd')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xd509('0xd')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0xd509('0xd')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize[_0xd509('0xd')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0xd509('0x2')]},'waitingTitle':{'type':Sequelize[_0xd509('0x2')],'defaultValue':_0xd509('0x27')},'waitingMessage':{'type':Sequelize[_0xd509('0x2')],'defaultValue':'Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.'},'offlineMessageSubject':{'type':Sequelize[_0xd509('0x2')],'defaultValue':_0xd509('0x28')},'offlineMessageBody':{'type':Sequelize[_0xd509('0x2')],'defaultValue':_0xd509('0x29')},'enableUnmanagedNote':{'type':Sequelize[_0xd509('0xd')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0xd509('0x2')],'defaultValue':_0xd509('0x2a')},'skipUnmanaged':{'type':Sequelize[_0xd509('0x2')],'defaultValue':'Skip'},'sendUnmanaged':{'type':Sequelize[_0xd509('0x2')],'defaultValue':_0xd509('0xb')},'enableCustomerAttachment':{'type':Sequelize[_0xd509('0xd')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0xd509('0xd')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0xd509('0x10')]},'showAgentAvatar':{'type':Sequelize[_0xd509('0xd')],'defaultValue':![]},'timezone':{'type':Sequelize[_0xd509('0x2')]},'notificationTemplate':{'type':Sequelize[_0xd509('0x10')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0xd509('0xd')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xd509('0xd')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize['STRING'],'defaultValue':_0xd509('0x2b')},'waitForTheAssignedAgent':{'type':Sequelize[_0xd509('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize['STRING'],'defaultValue':_0xd509('0x2c')},'verticalAlignment':{'type':Sequelize[_0xd509('0xe')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0xd509('0x2')],'defaultValue':_0xd509('0x2d')},'defaultTitle':{'type':Sequelize[_0xd509('0x2')]},'customerAvatar':{'type':Sequelize[_0xd509('0x10')]},'showCustomerAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0xd509('0xe')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0xd509('0x2')],'allowNull':![],'defaultValue':'#fafafa','validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xd509('0xd')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xd509('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0xd509('0x2')],'defaultValue':_0xd509('0x2e')},'systemAvatar':{'type':Sequelize['TEXT']},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xd509('0x2f'),'set':function(_0x29a6f2){if(!_0x29a6f2)this[_0xd509('0x20')]('mandatoryDispositionPauseId',null);this[_0xd509('0x20')](_0xd509('0x30'),_0x29a6f2);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0xd509('0x2')]},'vidaooTopic':{'type':Sequelize[_0xd509('0x2')],'allowNull':![],'defaultValue':_0xd509('0x31')},'vidaooNote':{'type':Sequelize[_0xd509('0x2')],'defaultValue':function(){return _0xd509('0x32');}},'vidaooMetadata':{'type':Sequelize[_0xd509('0x10')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xd509('0xd')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 73262e7..1447450 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd945=['threadId','externalUrl','ChatInteraction','ContactId','interaction','spread','firstName','messageId','created','autoclose','close','*,*,*,*','ChatMessage','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','notify','offline','files','no\x20available\x20attributes','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','MailAccount','findOrCreate','server/files/templates/chatOfflineMessage.ejs','render','toPairs','offlineMessageBody','ChatOfflineMessage','originalname','mimetype','attachments','basename','openNewInteraction','sequelize','transaction','bulkCreate','MailServerOut','Smtp','forwardOffline','service','host','port','secure','authentication','auth','user','SendMail','sendMail','email','subjectOffline','toPairsIn','mapValues','Chat','MailAccountId','NotifyMailAccount','offline-chat','remove','addInteraction','getInteractions','Contact','Owner','fullname','Tag','Tags','color','tag','Command','getSnippet','timezone','iftime\x20%s,%s','interval','iftime\x20%s','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','inspect','Interval','Intervals','../../config/license/util','getLicense','virtual','License','increment','chatLicenseExceeded','push','some','readFileSync','server/files/chat/iframe.ejs','remote','connection','remoteAddress','replace','alignment','verticalAlignment','textColor','color_button','findAndCountAll','getApplications','addProactiveActions','omit','getProactiveActions','ChatProactiveAction','getFields','online','false','offlineForm','onlineForm','items','fromKey','getOfflineMessages','Attachment','Attachments','addAgents','emit','removeAgents','isArray','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','./chatWebsite.socket','register','client','http','request','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','ChatWebsites','UserProfileResource','stack','name','send','mandatoryDispositionPause','ChatWebsite','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Pause','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','hasOwnProperty','pick','map','removeDispositions','ids','CannedAnswer','getAnswers','addLogo','sitepic','file','filename','addSystemAvatar','getLogo','root','server/files/images/logos/default_logo.svg','custom','existsSync','join','server/files/images/logos/','download','server/files/images/avatars/default_avatar.png','agentAvatar','isNil','server/files/images/avatars/','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','customerAvatar','server/files/images/avatars/system_avatar.png','systemAvatar','user-agent-parser','setUA','user-agent','CmContact','describe','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','Contacts','ChatApplication','Applications','account','applications','list','List','orderBy','priority','asc','contact','customerIp','headers','cf-connecting-ip','x-forwarded-for','split','lastName','x-real-port','referer','browser','%s\x20%s','unknown','version','format','device','vendor','%s\x20%s\x20%s'];(function(_0x555cac,_0x220fc4){var _0x26850b=function(_0x426fca){while(--_0x426fca){_0x555cac['push'](_0x555cac['shift']());}};_0x26850b(++_0x220fc4);}(_0xd945,0x7f));var _0x5d94=function(_0x520cb5,_0x2f6a0e){_0x520cb5=_0x520cb5-0x0;var _0x32ae6a=_0xd945[_0x520cb5];return _0x32ae6a;};'use strict';var emlformat=require(_0x5d94('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5d94('0x1'));var jsonpatch=require(_0x5d94('0x2'));var rp=require(_0x5d94('0x3'));var moment=require(_0x5d94('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x5d94('0x5'));var util=require(_0x5d94('0x6'));var path=require(_0x5d94('0x7'));var sox=require(_0x5d94('0x8'));var csv=require('to-csv');var ejs=require(_0x5d94('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5d94('0xa'));var squel=require(_0x5d94('0xb'));var crypto=require(_0x5d94('0xc'));var jsforce=require(_0x5d94('0xd'));var deskjs=require(_0x5d94('0xe'));var toCsv=require(_0x5d94('0xf'));var querystring=require('querystring');var Papa=require(_0x5d94('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x5d94('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5d94('0x12'));var logger=require('../../config/logger')(_0x5d94('0x13'));var utils=require(_0x5d94('0x14'));var config=require(_0x5d94('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x5d94('0x16'))['db'];config['redis']=_[_0x5d94('0x17')](config[_0x5d94('0x18')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5d94('0x18')]));require(_0x5d94('0x19'))[_0x5d94('0x1a')](socket);var jayson=require('jayson/promise');var client=jayson[_0x5d94('0x1b')][_0x5d94('0x1c')]({'port':0x232c});var client9002=jayson['client'][_0x5d94('0x1c')]({'port':0x232a});var client9003=jayson[_0x5d94('0x1b')][_0x5d94('0x1c')]({'port':0x232b});var client9001=jayson[_0x5d94('0x1b')][_0x5d94('0x1c')]({'port':0x2329});function respondWithRpcPromise(_0x3ebc1d,_0x17b4e1,_0x471628,_0x526356){return new BPromise(function(_0x14f8f6,_0x380f59){var _0x6abdcb=_0x526356||client;return _0x6abdcb[_0x5d94('0x1d')](_0x3ebc1d,_0x471628)['then'](function(_0x3a5b18){logger[_0x5d94('0x1e')](_0x5d94('0x1f'),_0x17b4e1,_0x5d94('0x20'));logger['debug']('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x17b4e1,'request\x20sent',JSON[_0x5d94('0x21')](_0x3a5b18));if(_0x3a5b18[_0x5d94('0x22')]){if(_0x3a5b18[_0x5d94('0x22')][_0x5d94('0x23')]===0x1f4){logger[_0x5d94('0x22')](_0x5d94('0x1f'),_0x17b4e1,_0x3a5b18['error'][_0x5d94('0x24')]);return _0x380f59(_0x3a5b18['error'][_0x5d94('0x24')]);}logger[_0x5d94('0x22')](_0x5d94('0x1f'),_0x17b4e1,_0x3a5b18[_0x5d94('0x22')][_0x5d94('0x24')]);return _0x14f8f6(_0x3a5b18[_0x5d94('0x22')]['message']);}else{logger[_0x5d94('0x1e')](_0x5d94('0x1f'),_0x17b4e1,'request\x20sent');_0x14f8f6(_0x3a5b18[_0x5d94('0x25')]['message']);}})[_0x5d94('0x26')](function(_0x144bb1){logger['error'](_0x5d94('0x1f'),_0x17b4e1,_0x144bb1);_0x380f59(_0x144bb1);});});}function respondWithStatusCode(_0x4b78af,_0x2a58df){_0x2a58df=_0x2a58df||0xcc;return function(_0x1f7c4f){if(_0x1f7c4f){return _0x4b78af[_0x5d94('0x27')](_0x2a58df);}return _0x4b78af[_0x5d94('0x28')](_0x2a58df)[_0x5d94('0x29')]();};}function respondWithResult(_0x1ce17b,_0x2ddfcf){_0x2ddfcf=_0x2ddfcf||0xc8;return function(_0x22cb81){if(_0x22cb81){return _0x1ce17b[_0x5d94('0x28')](_0x2ddfcf)[_0x5d94('0x2a')](_0x22cb81);}};}function respondWithFilteredResult(_0x1ba572,_0x157a3c){return function(_0x328835){if(_0x328835){var _0xe3f924=typeof _0x157a3c['offset']==='undefined'&&typeof _0x157a3c[_0x5d94('0x2b')]===_0x5d94('0x2c');var _0x9dfa9e=_0x328835[_0x5d94('0x2d')];var _0x2d6db0=_0xe3f924?0x0:_0x157a3c[_0x5d94('0x2e')];var _0x25179b=_0xe3f924?_0x328835['count']:_0x157a3c[_0x5d94('0x2e')]+_0x157a3c[_0x5d94('0x2b')];var _0x163f36;if(_0x25179b>=_0x9dfa9e){_0x25179b=_0x9dfa9e;_0x163f36=0xc8;}else{_0x163f36=0xce;}_0x1ba572[_0x5d94('0x28')](_0x163f36);return _0x1ba572[_0x5d94('0x2f')](_0x5d94('0x30'),_0x2d6db0+'-'+_0x25179b+'/'+_0x9dfa9e)['json'](_0x328835);}return null;};}function patchUpdates(_0x4b12fd){return function(_0x587012){try{jsonpatch[_0x5d94('0x31')](_0x587012,_0x4b12fd,!![]);}catch(_0xb798ce){return BPromise[_0x5d94('0x32')](_0xb798ce);}return _0x587012[_0x5d94('0x33')]();};}function saveUpdates(_0x58aad1,_0x204018){return function(_0x16a6bb){if(_0x16a6bb){return _0x16a6bb[_0x5d94('0x34')](_0x58aad1)[_0x5d94('0x35')](function(_0x8f6b2d){return _0x8f6b2d;});}return null;};}function removeEntity(_0x55f400,_0x48d25e){return function(_0x170aec){if(_0x170aec){return _0x170aec[_0x5d94('0x36')]()['then'](function(){var _0x10721d=_0x170aec[_0x5d94('0x37')]({'plain':!![]});var _0x417f3a=_0x5d94('0x38');return db[_0x5d94('0x39')][_0x5d94('0x36')]({'where':{'type':_0x417f3a,'resourceId':_0x10721d['id']}})[_0x5d94('0x35')](function(){return _0x170aec;});})[_0x5d94('0x35')](function(){_0x55f400['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x313609,_0x10eaa9){return function(_0x39f585){if(!_0x39f585){_0x313609['sendStatus'](0x194);}return _0x39f585;};}function handleError(_0x547271,_0x4dc72b){_0x4dc72b=_0x4dc72b||0x1f4;return function(_0x46fe61){logger['error'](_0x46fe61[_0x5d94('0x3a')]);if(_0x46fe61[_0x5d94('0x3b')]){delete _0x46fe61['name'];}_0x547271['status'](_0x4dc72b)[_0x5d94('0x3c')](_0x46fe61);};}exports['index']=function(_0xb1dfb9,_0x5463d8){var _0x4b7660={'include':[{'model':db['Pause'],'as':_0x5d94('0x3d')}]},_0x79b80={},_0x2535aa={'count':0x0,'rows':[]};var _0xfb3eb3=_['map'](db[_0x5d94('0x3e')][_0x5d94('0x3f')],function(_0x40c9a8){return{'name':_0x40c9a8[_0x5d94('0x40')],'type':_0x40c9a8['type'][_0x5d94('0x41')]};});_0x79b80[_0x5d94('0x42')]=_['map'](_0xfb3eb3,_0x5d94('0x3b'));_0x79b80['query']=_[_0x5d94('0x43')](_0xb1dfb9[_0x5d94('0x44')]);_0x79b80[_0x5d94('0x45')]=_[_0x5d94('0x46')](_0x79b80[_0x5d94('0x42')],_0x79b80['query']);_0x4b7660[_0x5d94('0x47')]=_[_0x5d94('0x46')](_0x79b80['model'],qs['fields'](_0xb1dfb9[_0x5d94('0x44')][_0x5d94('0x48')]));_0x4b7660[_0x5d94('0x47')]=_0x4b7660['attributes'][_0x5d94('0x49')]?_0x4b7660[_0x5d94('0x47')]:_0x79b80[_0x5d94('0x42')];if(!_0xb1dfb9['query']['hasOwnProperty'](_0x5d94('0x4a'))){_0x4b7660['limit']=qs[_0x5d94('0x2b')](_0xb1dfb9['query'][_0x5d94('0x2b')]);_0x4b7660[_0x5d94('0x2e')]=qs[_0x5d94('0x2e')](_0xb1dfb9[_0x5d94('0x44')][_0x5d94('0x2e')]);}_0x4b7660[_0x5d94('0x4b')]=qs['sort'](_0xb1dfb9[_0x5d94('0x44')][_0x5d94('0x4c')]);_0x4b7660[_0x5d94('0x4d')]=qs[_0x5d94('0x45')](_['pick'](_0xb1dfb9[_0x5d94('0x44')],_0x79b80[_0x5d94('0x45')]),_0xfb3eb3);if(_0xb1dfb9[_0x5d94('0x44')][_0x5d94('0x4e')]){_0x4b7660[_0x5d94('0x4d')]=_[_0x5d94('0x4f')](_0x4b7660[_0x5d94('0x4d')],{'$or':_['map'](_0xfb3eb3,function(_0x1d26cb){if(_0x1d26cb[_0x5d94('0x50')]!==_0x5d94('0x51')){var _0x354c24={};_0x354c24[_0x1d26cb[_0x5d94('0x3b')]]={'$like':'%'+_0xb1dfb9[_0x5d94('0x44')]['filter']+'%'};return _0x354c24;}})});}_0x4b7660=_['merge']({},_0x4b7660,_0xb1dfb9[_0x5d94('0x52')]);var _0x4a1c77={'where':_0x4b7660[_0x5d94('0x4d')]};return db['ChatWebsite'][_0x5d94('0x2d')](_0x4a1c77)[_0x5d94('0x35')](function(_0xd7847c){_0x2535aa[_0x5d94('0x2d')]=_0xd7847c;if(_0xb1dfb9['query'][_0x5d94('0x53')]){_0x4b7660[_0x5d94('0x54')]=[{'all':!![]}];}return db[_0x5d94('0x3e')][_0x5d94('0x55')](_0x4b7660);})[_0x5d94('0x35')](function(_0x38227e){_0x2535aa[_0x5d94('0x56')]=_0x38227e;return _0x2535aa;})['then'](respondWithFilteredResult(_0x5463d8,_0x4b7660))[_0x5d94('0x26')](handleError(_0x5463d8,null));};exports[_0x5d94('0x57')]=function(_0x44a6ba,_0x236387){var _0x171611={'raw':![],'where':{'id':_0x44a6ba[_0x5d94('0x58')]['id']},'include':[{'model':db['Pause'],'as':_0x5d94('0x3d')}]},_0x135ccc={};_0x135ccc[_0x5d94('0x42')]=_[_0x5d94('0x43')](db[_0x5d94('0x3e')][_0x5d94('0x3f')]);_0x135ccc[_0x5d94('0x44')]=_['keys'](_0x44a6ba[_0x5d94('0x44')]);_0x135ccc[_0x5d94('0x45')]=_[_0x5d94('0x46')](_0x135ccc['model'],_0x135ccc[_0x5d94('0x44')]);_0x171611['attributes']=_[_0x5d94('0x46')](_0x135ccc[_0x5d94('0x42')],qs[_0x5d94('0x48')](_0x44a6ba[_0x5d94('0x44')][_0x5d94('0x48')]));_0x171611[_0x5d94('0x47')]=_0x171611[_0x5d94('0x47')][_0x5d94('0x49')]?_0x171611['attributes']:_0x135ccc[_0x5d94('0x42')];if(_0x44a6ba[_0x5d94('0x44')]['includeAll']){_0x171611[_0x5d94('0x54')]=[{'all':!![]}];}_0x171611=_[_0x5d94('0x4f')]({},_0x171611,_0x44a6ba['options']);return db[_0x5d94('0x3e')][_0x5d94('0x59')](_0x171611)[_0x5d94('0x35')](handleEntityNotFound(_0x236387,null))[_0x5d94('0x35')](respondWithResult(_0x236387,null))[_0x5d94('0x26')](handleError(_0x236387,null));};exports[_0x5d94('0x5a')]=function(_0x281520,_0x2d492f){return db['ChatWebsite'][_0x5d94('0x5a')](_0x281520[_0x5d94('0x5b')],{})['then'](function(_0x24a7bb){var _0x1eabc2=_0x281520['user']['get']({'plain':!![]});if(!_0x1eabc2)throw new Error(_0x5d94('0x5c'));if(_0x1eabc2[_0x5d94('0x5d')]==='user'){var _0xf9961e=_0x24a7bb[_0x5d94('0x37')]({'plain':!![]});var _0x1e4317=_0x5d94('0x38');return db[_0x5d94('0x5e')][_0x5d94('0x59')]({'where':{'name':_0x1e4317,'userProfileId':_0x1eabc2[_0x5d94('0x5f')]},'raw':!![]})[_0x5d94('0x35')](function(_0x333295){if(_0x333295&&_0x333295[_0x5d94('0x60')]===0x0){return db[_0x5d94('0x39')][_0x5d94('0x5a')]({'name':_0xf9961e[_0x5d94('0x3b')],'resourceId':_0xf9961e['id'],'type':_0x333295[_0x5d94('0x3b')],'sectionId':_0x333295['id']},{})[_0x5d94('0x35')](function(){return _0x24a7bb;});}else{return _0x24a7bb;}})[_0x5d94('0x26')](function(_0x5c7560){logger[_0x5d94('0x22')](_0x5d94('0x61'),_0x5c7560);throw _0x5c7560;});}return _0x24a7bb;})['then'](respondWithResult(_0x2d492f,0xc9))[_0x5d94('0x26')](handleError(_0x2d492f,null));};exports[_0x5d94('0x34')]=function(_0x52a8d0,_0x3712b0){if(_0x52a8d0[_0x5d94('0x5b')]['id']){delete _0x52a8d0['body']['id'];}return db[_0x5d94('0x3e')][_0x5d94('0x59')]({'where':{'id':_0x52a8d0[_0x5d94('0x58')]['id']},'include':[{'model':db[_0x5d94('0x62')],'as':_0x5d94('0x3d')}]})[_0x5d94('0x35')](handleEntityNotFound(_0x3712b0,null))['then'](saveUpdates(_0x52a8d0['body'],null))['then'](respondWithResult(_0x3712b0,null))['catch'](handleError(_0x3712b0,null));};exports[_0x5d94('0x36')]=function(_0x446ff1,_0x3ec116){return db[_0x5d94('0x3e')][_0x5d94('0x59')]({'where':{'id':_0x446ff1[_0x5d94('0x58')]['id']}})[_0x5d94('0x35')](handleEntityNotFound(_0x3ec116,null))[_0x5d94('0x35')](removeEntity(_0x3ec116,null))['catch'](handleError(_0x3ec116,null));};exports['describe']=function(_0x5155b4,_0x2d5d13){return db[_0x5d94('0x3e')]['describe']()[_0x5d94('0x35')](respondWithResult(_0x2d5d13,null))[_0x5d94('0x26')](handleError(_0x2d5d13,null));};exports[_0x5d94('0x63')]=function(_0xe8453f,_0xd06584,_0x404ded){if(_0xe8453f[_0x5d94('0x5b')]['id']){delete _0xe8453f['body']['id'];}return db['ChatWebsite'][_0x5d94('0x59')]({'where':{'id':_0xe8453f['params']['id']}})[_0x5d94('0x35')](handleEntityNotFound(_0xd06584,null))[_0x5d94('0x35')](function(_0x445d32){if(_0x445d32){_0xe8453f[_0x5d94('0x5b')][_0x5d94('0x64')]=_0x445d32['id'];return db[_0x5d94('0x65')][_0x5d94('0x5a')](_0xe8453f[_0x5d94('0x5b')]);}})[_0x5d94('0x35')](respondWithResult(_0xd06584,null))['catch'](handleError(_0xd06584,null));};exports[_0x5d94('0x66')]=function(_0x36d9b7,_0x16310d,_0x3c0b5b){var _0x49625c={'raw':![],'where':{}};var _0x49d1d1={};var _0x581042={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x5d94('0x67')]({'where':{'id':_0x36d9b7[_0x5d94('0x58')]['id']}})[_0x5d94('0x35')](handleEntityNotFound(_0x16310d,null))['then'](function(_0x424a5d){if(_0x424a5d){_0x49d1d1[_0x5d94('0x42')]=_[_0x5d94('0x43')](db[_0x5d94('0x65')]['rawAttributes']);_0x49d1d1[_0x5d94('0x44')]=_['keys'](_0x36d9b7['query']);_0x49d1d1[_0x5d94('0x45')]=_[_0x5d94('0x46')](_0x49d1d1[_0x5d94('0x42')],_0x49d1d1[_0x5d94('0x44')]);_0x49625c['attributes']=_[_0x5d94('0x46')](_0x49d1d1[_0x5d94('0x42')],qs['fields'](_0x36d9b7['query']['fields']));_0x49625c['attributes']=_0x49625c[_0x5d94('0x47')]['length']?_0x49625c[_0x5d94('0x47')]:_0x49d1d1[_0x5d94('0x42')];if(!_0x36d9b7[_0x5d94('0x44')][_0x5d94('0x68')](_0x5d94('0x4a'))){_0x49625c['limit']=qs[_0x5d94('0x2b')](_0x36d9b7[_0x5d94('0x44')][_0x5d94('0x2b')]);_0x49625c[_0x5d94('0x2e')]=qs[_0x5d94('0x2e')](_0x36d9b7[_0x5d94('0x44')][_0x5d94('0x2e')]);}_0x49625c[_0x5d94('0x4b')]=qs[_0x5d94('0x4c')](_0x36d9b7[_0x5d94('0x44')]['sort']);_0x49625c[_0x5d94('0x4d')]=qs[_0x5d94('0x45')](_[_0x5d94('0x69')](_0x36d9b7[_0x5d94('0x44')],_0x49d1d1[_0x5d94('0x45')]));_0x49625c['where'][_0x5d94('0x64')]=_0x424a5d['id'];if(_0x36d9b7[_0x5d94('0x44')][_0x5d94('0x4e')]){_0x49625c['where']=_[_0x5d94('0x4f')](_0x49625c[_0x5d94('0x4d')],{'$or':_[_0x5d94('0x6a')](_0x49625c['attributes'],function(_0x1e7b99){var _0x44bd33={};_0x44bd33[_0x1e7b99]={'$like':'%'+_0x36d9b7['query'][_0x5d94('0x4e')]+'%'};return _0x44bd33;})});}_0x49625c=_[_0x5d94('0x4f')]({},_0x49625c,_0x36d9b7[_0x5d94('0x52')]);return db['Disposition']['count']({'where':_0x49625c[_0x5d94('0x4d')]})['then'](function(_0x53e4c1){_0x581042[_0x5d94('0x2d')]=_0x53e4c1;if(_0x36d9b7[_0x5d94('0x44')][_0x5d94('0x53')]){_0x49625c[_0x5d94('0x54')]=[{'all':!![]}];}return db[_0x5d94('0x65')]['findAll'](_0x49625c);})[_0x5d94('0x35')](function(_0xc1ae2c){_0x581042[_0x5d94('0x56')]=_0xc1ae2c;return _0x581042;});}})[_0x5d94('0x35')](respondWithFilteredResult(_0x16310d,_0x49625c))['catch'](handleError(_0x16310d,null));};exports[_0x5d94('0x6b')]=function(_0x1da82f,_0x12bd25,_0x30fc0f){return db[_0x5d94('0x3e')][_0x5d94('0x59')]({'where':{'id':_0x1da82f['params']['id']}})[_0x5d94('0x35')](handleEntityNotFound(_0x12bd25,null))[_0x5d94('0x35')](function(_0xdd338e){if(_0xdd338e){return _0xdd338e[_0x5d94('0x6b')](_0x1da82f['query'][_0x5d94('0x6c')]);}})['then'](respondWithStatusCode(_0x12bd25,null))['catch'](handleError(_0x12bd25,null));};exports['addAnswer']=function(_0x3593c2,_0x595e6e,_0x549026){if(_0x3593c2[_0x5d94('0x5b')]['id']){delete _0x3593c2[_0x5d94('0x5b')]['id'];}return db[_0x5d94('0x3e')]['find']({'where':{'id':_0x3593c2['params']['id']}})[_0x5d94('0x35')](handleEntityNotFound(_0x595e6e,null))[_0x5d94('0x35')](function(_0x5dcf0d){if(_0x5dcf0d){_0x3593c2[_0x5d94('0x5b')]['ChatWebsiteId']=_0x5dcf0d['id'];return db[_0x5d94('0x6d')][_0x5d94('0x5a')](_0x3593c2[_0x5d94('0x5b')]);}})[_0x5d94('0x35')](respondWithResult(_0x595e6e,null))['catch'](handleError(_0x595e6e,null));};exports[_0x5d94('0x6e')]=function(_0x12175d,_0x180db0,_0x17ee3b){var _0x5185e7={'raw':![],'where':{}};var _0x55ebfe={};var _0x5090a6={'count':0x0,'rows':[]};return db[_0x5d94('0x3e')]['findOne']({'where':{'id':_0x12175d[_0x5d94('0x58')]['id']}})[_0x5d94('0x35')](handleEntityNotFound(_0x180db0,null))[_0x5d94('0x35')](function(_0x2b291d){if(_0x2b291d){_0x55ebfe['model']=_[_0x5d94('0x43')](db[_0x5d94('0x6d')][_0x5d94('0x3f')]);_0x55ebfe[_0x5d94('0x44')]=_[_0x5d94('0x43')](_0x12175d['query']);_0x55ebfe[_0x5d94('0x45')]=_['intersection'](_0x55ebfe['model'],_0x55ebfe['query']);_0x5185e7['attributes']=_[_0x5d94('0x46')](_0x55ebfe[_0x5d94('0x42')],qs[_0x5d94('0x48')](_0x12175d[_0x5d94('0x44')]['fields']));_0x5185e7[_0x5d94('0x47')]=_0x5185e7[_0x5d94('0x47')][_0x5d94('0x49')]?_0x5185e7[_0x5d94('0x47')]:_0x55ebfe[_0x5d94('0x42')];if(!_0x12175d['query']['hasOwnProperty'](_0x5d94('0x4a'))){_0x5185e7[_0x5d94('0x2b')]=qs[_0x5d94('0x2b')](_0x12175d[_0x5d94('0x44')]['limit']);_0x5185e7[_0x5d94('0x2e')]=qs['offset'](_0x12175d['query'][_0x5d94('0x2e')]);}_0x5185e7[_0x5d94('0x4b')]=qs[_0x5d94('0x4c')](_0x12175d[_0x5d94('0x44')]['sort']);_0x5185e7[_0x5d94('0x4d')]=qs[_0x5d94('0x45')](_['pick'](_0x12175d['query'],_0x55ebfe[_0x5d94('0x45')]));_0x5185e7['where'][_0x5d94('0x64')]=_0x2b291d['id'];if(_0x12175d[_0x5d94('0x44')]['filter']){_0x5185e7['where']=_['merge'](_0x5185e7[_0x5d94('0x4d')],{'$or':_[_0x5d94('0x6a')](_0x5185e7[_0x5d94('0x47')],function(_0xc832a2){var _0x5a8eb8={};_0x5a8eb8[_0xc832a2]={'$like':'%'+_0x12175d[_0x5d94('0x44')][_0x5d94('0x4e')]+'%'};return _0x5a8eb8;})});}_0x5185e7=_[_0x5d94('0x4f')]({},_0x5185e7,_0x12175d[_0x5d94('0x52')]);return db['CannedAnswer']['count']({'where':_0x5185e7[_0x5d94('0x4d')]})[_0x5d94('0x35')](function(_0x29173d){_0x5090a6[_0x5d94('0x2d')]=_0x29173d;if(_0x12175d['query'][_0x5d94('0x53')]){_0x5185e7['include']=[{'all':!![]}];}return db[_0x5d94('0x6d')]['findAll'](_0x5185e7);})[_0x5d94('0x35')](function(_0xa2ce6a){_0x5090a6['rows']=_0xa2ce6a;return _0x5090a6;});}})[_0x5d94('0x35')](respondWithFilteredResult(_0x180db0,_0x5185e7))[_0x5d94('0x26')](handleError(_0x180db0,null));};exports['removeAnswers']=function(_0x320991,_0x3e9943,_0x4c51ea){return db['ChatWebsite']['find']({'where':{'id':_0x320991['params']['id']}})['then'](handleEntityNotFound(_0x3e9943,null))['then'](function(_0x443a72){if(_0x443a72){return _0x443a72['removeAnswers'](_0x320991[_0x5d94('0x44')][_0x5d94('0x6c')]);}})[_0x5d94('0x35')](respondWithStatusCode(_0x3e9943,null))[_0x5d94('0x26')](handleError(_0x3e9943,null));};exports[_0x5d94('0x6f')]=function(_0x2d307a,_0x5c3818,_0x5bab33){_0x2d307a[_0x5d94('0x5b')][_0x5d94('0x70')]=_0x2d307a[_0x5d94('0x71')]['filename'];return db[_0x5d94('0x3e')][_0x5d94('0x59')]({'where':{'id':_0x2d307a['params']['id']}})['then'](handleEntityNotFound(_0x5c3818,null))[_0x5d94('0x35')](saveUpdates(_0x2d307a[_0x5d94('0x5b')],null))[_0x5d94('0x35')](respondWithResult(_0x5c3818,null))[_0x5d94('0x26')](handleError(_0x5c3818,null));};exports['addAvatar']=function(_0x4a301e,_0x2727b0,_0x3a904b){_0x4a301e[_0x5d94('0x5b')]['agentAvatar']=_0x4a301e['file'][_0x5d94('0x72')];return db[_0x5d94('0x3e')][_0x5d94('0x59')]({'where':{'id':_0x4a301e['params']['id']}})[_0x5d94('0x35')](handleEntityNotFound(_0x2727b0,null))[_0x5d94('0x35')](saveUpdates(_0x4a301e[_0x5d94('0x5b')],null))[_0x5d94('0x35')](respondWithResult(_0x2727b0,null))['catch'](handleError(_0x2727b0,null));};exports['addCustomerAvatar']=function(_0x3d1488,_0x1e22a2,_0x477170){_0x3d1488[_0x5d94('0x5b')]['customerAvatar']=_0x3d1488[_0x5d94('0x71')][_0x5d94('0x72')];return db[_0x5d94('0x3e')][_0x5d94('0x59')]({'where':{'id':_0x3d1488[_0x5d94('0x58')]['id']}})['then'](handleEntityNotFound(_0x1e22a2,null))[_0x5d94('0x35')](saveUpdates(_0x3d1488[_0x5d94('0x5b')],null))['then'](respondWithResult(_0x1e22a2,null))[_0x5d94('0x26')](handleError(_0x1e22a2,null));};exports[_0x5d94('0x73')]=function(_0x5e9f55,_0x57687b,_0x1443bc){_0x5e9f55['body']['systemAvatar']=_0x5e9f55['file'][_0x5d94('0x72')];return db[_0x5d94('0x3e')][_0x5d94('0x59')]({'where':{'id':_0x5e9f55[_0x5d94('0x58')]['id']}})['then'](handleEntityNotFound(_0x57687b,null))[_0x5d94('0x35')](saveUpdates(_0x5e9f55[_0x5d94('0x5b')],null))['then'](respondWithResult(_0x57687b,null))['catch'](handleError(_0x57687b,null));};exports[_0x5d94('0x74')]=function(_0x5300c,_0x35c129,_0x40fd6a){var _0x1c126a=path['join'](config[_0x5d94('0x75')],_0x5d94('0x76'));var _0x63667b={'where':{'id':_0x5300c[_0x5d94('0x58')]['id']},'attributes':['id','sitepic'],'raw':!![]};var _0x41cf16=![];return require('../../config/license/util')['getLicense']()[_0x5d94('0x35')](function(_0x4c7be3){if(_0x4c7be3){_0x41cf16=_0x4c7be3[_0x5d94('0x77')];}})[_0x5d94('0x35')](function(){return db[_0x5d94('0x3e')][_0x5d94('0x59')](_0x63667b);})[_0x5d94('0x35')](handleEntityNotFound(_0x35c129,null))[_0x5d94('0x35')](function(_0x4108ad){if(_0x4108ad){if(!_['isNil'](_0x4108ad[_0x5d94('0x70')])){if(fs[_0x5d94('0x78')](path[_0x5d94('0x79')](config[_0x5d94('0x75')],_0x5d94('0x7a'),_0x4108ad[_0x5d94('0x70')]))&&_0x41cf16){_0x1c126a=path[_0x5d94('0x79')](config[_0x5d94('0x75')],_0x5d94('0x7a'),_0x4108ad[_0x5d94('0x70')]);}}return _0x35c129[_0x5d94('0x7b')](_0x1c126a);}})[_0x5d94('0x26')](handleError(_0x35c129,null));};exports['getAvatar']=function(_0x3a847c,_0x504f08,_0x5acc22){var _0x3e4675=path[_0x5d94('0x79')](config[_0x5d94('0x75')],_0x5d94('0x7c'));var _0x15c1b7={'where':{'id':_0x3a847c[_0x5d94('0x58')]['id']},'attributes':['id',_0x5d94('0x7d')],'raw':!![]};return db[_0x5d94('0x3e')][_0x5d94('0x59')](_0x15c1b7)[_0x5d94('0x35')](handleEntityNotFound(_0x504f08,null))[_0x5d94('0x35')](function(_0xfa6f75){if(_0xfa6f75){if(!_[_0x5d94('0x7e')](_0xfa6f75[_0x5d94('0x7d')])){if(fs[_0x5d94('0x78')](path[_0x5d94('0x79')](config['root'],_0x5d94('0x7f'),_0xfa6f75[_0x5d94('0x7d')]))){_0x3e4675=path[_0x5d94('0x79')](config['root'],'server/files/images/avatars/',_0xfa6f75[_0x5d94('0x7d')]);}}return _0x504f08['download'](_0x3e4675);}})['catch'](handleError(_0x504f08,null));};exports['getCustomerAvatar']=function(_0x1b47bc,_0x492254,_0x454576){var _0x22b4e8=path[_0x5d94('0x79')](config['root'],_0x5d94('0x80'));var _0x5c294f={'where':{'id':_0x1b47bc[_0x5d94('0x58')]['id']},'attributes':['id','customerAvatar',_0x5d94('0x81')],'raw':!![]};return db['ChatWebsite'][_0x5d94('0x59')](_0x5c294f)[_0x5d94('0x35')](handleEntityNotFound(_0x492254,null))[_0x5d94('0x35')](function(_0x3dc379){if(_0x3dc379){if(!_[_0x5d94('0x7e')](_0x3dc379[_0x5d94('0x82')])){if(fs[_0x5d94('0x78')](path[_0x5d94('0x79')](config[_0x5d94('0x75')],_0x5d94('0x7f'),_0x3dc379[_0x5d94('0x82')]))&&_0x3dc379['showCustomerAvatar']){_0x22b4e8=path[_0x5d94('0x79')](config[_0x5d94('0x75')],_0x5d94('0x7f'),_0x3dc379[_0x5d94('0x82')]);}}return _0x492254[_0x5d94('0x7b')](_0x22b4e8);}})[_0x5d94('0x26')](handleError(_0x492254,null));};exports['getSystemAvatar']=function(_0x3c2660,_0x267fe6,_0x29a33c){var _0x2d1040=path['join'](config[_0x5d94('0x75')],_0x5d94('0x83'));var _0x5145f5={'where':{'id':_0x3c2660[_0x5d94('0x58')]['id']},'attributes':['id',_0x5d94('0x84')],'raw':!![]};return db['ChatWebsite'][_0x5d94('0x59')](_0x5145f5)[_0x5d94('0x35')](handleEntityNotFound(_0x267fe6,null))[_0x5d94('0x35')](function(_0x1b63a4){if(_0x1b63a4){if(!_[_0x5d94('0x7e')](_0x1b63a4[_0x5d94('0x84')])){if(fs['existsSync'](path[_0x5d94('0x79')](config[_0x5d94('0x75')],_0x5d94('0x7f'),_0x1b63a4[_0x5d94('0x84')]))){_0x2d1040=path[_0x5d94('0x79')](config['root'],_0x5d94('0x7f'),_0x1b63a4[_0x5d94('0x84')]);}}return _0x267fe6['download'](_0x2d1040);}})[_0x5d94('0x26')](handleError(_0x267fe6,null));};exports['notify']=function(_0x223749,_0x192506,_0x22dade){var _0x2ee3f0=require(_0x5d94('0x85'));var _0x12686e=new _0x2ee3f0();var _0x4ac1ed=_0x12686e[_0x5d94('0x86')](_0x223749['headers'][_0x5d94('0x87')])['getResult']();var _0x3c1338={'body':_0x223749[_0x5d94('0x5b')],'channel':'chat'};var _0x46c37f=[];var _0x3a18a5=[];var _0x5ec58e={};var _0x57ff39=![];return db[_0x5d94('0x88')][_0x5d94('0x89')]()['then'](function(_0x2a95b6){if(!_0x2a95b6){throw new db[(_0x5d94('0x8a'))][(_0x5d94('0x8b'))]('no\x20available\x20attributes');}_0x46c37f=_[_0x5d94('0x8c')](_[_0x5d94('0x43')](_0x2a95b6),[_0x5d94('0x8d'),_0x5d94('0x8e')]);_0x3a18a5=_[_0x5d94('0x8c')](_['keys'](_0x2a95b6),[_0x5d94('0x8d'),_0x5d94('0x8e'),_0x5d94('0x8f'),_0x5d94('0x90')]);if(_0x223749[_0x5d94('0x5b')]['id']){delete _0x223749[_0x5d94('0x5b')]['id'];}if(_['isNil'](_0x223749[_0x5d94('0x5b')][_0x5d94('0x91')])){throw new db['Sequelize'][(_0x5d94('0x8b'))](_0x5d94('0x92'));}if(_[_0x5d94('0x7e')](_0x223749[_0x5d94('0x5b')][_0x5d94('0x5b')])||_0x223749[_0x5d94('0x5b')][_0x5d94('0x5b')]===''){throw new db[(_0x5d94('0x8a'))][(_0x5d94('0x8b'))](_0x5d94('0x93'));}if(_['isNil'](_0x223749['body']['mapKey'])){throw new db['Sequelize'][(_0x5d94('0x8b'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x3a18a5);}if(!_['includes'](_0x3a18a5,_0x223749[_0x5d94('0x5b')][_0x5d94('0x94')])){throw new db['Sequelize'][(_0x5d94('0x8b'))](_0x5d94('0x95')+_0x3a18a5);}_0x5ec58e[_0x223749[_0x5d94('0x5b')]['mapKey']]=_0x223749[_0x5d94('0x5b')][_0x5d94('0x91')];})[_0x5d94('0x35')](function(){return db[_0x5d94('0x3e')][_0x5d94('0x59')]({'where':{'id':_0x223749[_0x5d94('0x58')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0x5d94('0x88')],'as':_0x5d94('0x96'),'where':_0x5ec58e,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0x5d94('0x97')],'as':_0x5d94('0x98')}]});})[_0x5d94('0x35')](handleEntityNotFound(_0x192506,null))['then'](function(_0x1c0f10){if(_0x1c0f10&&_0x1c0f10['List']){_0x3c1338[_0x5d94('0x99')]=_0x1c0f10;_0x3c1338[_0x5d94('0x9a')]=_0x1c0f10[_0x5d94('0x98')];_0x3c1338[_0x5d94('0x9b')]=_0x1c0f10[_0x5d94('0x9c')];_0x3c1338['applications']=_[_0x5d94('0x9d')](_0x3c1338['applications'],[_0x5d94('0x9e')],[_0x5d94('0x9f')]);if(_0x3c1338[_0x5d94('0x99')][_0x5d94('0x98')]){delete _0x3c1338['account'][_0x5d94('0x98')];}if(_0x3c1338[_0x5d94('0x99')]['List']&&_0x3c1338[_0x5d94('0x99')][_0x5d94('0x9c')][_0x5d94('0x96')][_0x5d94('0x49')]){return _0x3c1338[_0x5d94('0x99')][_0x5d94('0x9c')]['Contacts'][0x0];}var _0x3b9f25=_[_0x5d94('0x17')](_0x223749[_0x5d94('0x5b')],{'firstName':_0x223749['body']['from'],'ListId':_0x1c0f10['ListId']});_0x3b9f25[_0x223749['body'][_0x5d94('0x94')]]=_0x223749[_0x5d94('0x5b')][_0x5d94('0x91')];return db[_0x5d94('0x88')][_0x5d94('0x5a')](_0x3b9f25,{'fields':_0x46c37f,'raw':!![]});}})[_0x5d94('0x35')](handleEntityNotFound(_0x192506,null))[_0x5d94('0x35')](function(_0x5068ec){_0x3c1338[_0x5d94('0xa0')]=_0x5068ec;var _0x4e74d3=_0x223749[_0x5d94('0x5b')][_0x5d94('0xa1')];if(_0x223749[_0x5d94('0xa2')]['cf-connecting-ip']){_0x4e74d3=_0x223749[_0x5d94('0xa2')][_0x5d94('0xa3')];}else if(_0x223749[_0x5d94('0xa2')][_0x5d94('0xa4')]){_0x4e74d3=_['first'](_0x223749['headers'][_0x5d94('0xa4')][_0x5d94('0xa5')](','));}if(_0x5068ec){var _0x59abd5={'ContactId':_0x5068ec['id'],'ChatWebsiteId':_0x223749[_0x5d94('0x58')]['id'],'from':(_0x5068ec['firstName']||'')+'\x20'+(_0x5068ec[_0x5d94('0xa6')]||''),'customerIp':_0x4e74d3,'customerPort':_0x223749[_0x5d94('0xa2')][_0x5d94('0xa7')]?_0x223749[_0x5d94('0xa2')]['x-real-port']:null,'referer':_0x223749[_0x5d94('0x5b')][_0x5d94('0xa8')],'browserName':_0x4ac1ed['browser']['name']&&_0x4ac1ed[_0x5d94('0xa9')]['version']?util['format'](_0x5d94('0xaa'),_0x4ac1ed[_0x5d94('0xa9')][_0x5d94('0x3b')],_0x4ac1ed[_0x5d94('0xa9')]['version']):_0x5d94('0xab'),'browserVersion':_0x4ac1ed['browser'][_0x5d94('0xac')]||_0x5d94('0xab'),'osName':util[_0x5d94('0xad')](_0x5d94('0xaa'),_0x4ac1ed['os'][_0x5d94('0x3b')],_0x4ac1ed['os']['version']),'osVersion':_0x4ac1ed['os'][_0x5d94('0xac')],'deviceModel':_0x4ac1ed[_0x5d94('0xae')][_0x5d94('0x42')]&&_0x4ac1ed[_0x5d94('0xae')][_0x5d94('0xaf')]?util[_0x5d94('0xad')](_0x5d94('0xb0'),_0x4ac1ed['device'][_0x5d94('0x42')],_0x4ac1ed['device'][_0x5d94('0xaf')],_0x4ac1ed[_0x5d94('0xae')]['type']):null,'deviceVendor':_0x4ac1ed[_0x5d94('0xae')][_0x5d94('0xaf')],'deviceType':_0x4ac1ed[_0x5d94('0xae')][_0x5d94('0x50')],'formData':JSON[_0x5d94('0x21')](_0x223749[_0x5d94('0x5b')])};var _0x4e33b0={'ChatWebsiteId':_0x223749['params']['id'],'closed':![]};if(_0x223749[_0x5d94('0x5b')][_0x5d94('0xb1')]){_0x4e33b0[_0x5d94('0xb1')]=_0x223749[_0x5d94('0x5b')][_0x5d94('0xb1')];return db['ChatInteraction'][_0x5d94('0x59')]({'where':_0x4e33b0})['then'](function(_0x5c12c0){if(_0x5c12c0){return[_0x5c12c0,![]];}_0x59abd5['threadId']=_0x223749['body'][_0x5d94('0xb1')];_0x59abd5[_0x5d94('0xb2')]=_0x223749[_0x5d94('0x5b')][_0x5d94('0xb2')];return db[_0x5d94('0xb3')][_0x5d94('0x5a')](_0x59abd5)[_0x5d94('0x35')](function(_0x487e56){return[_0x487e56,!![]];});});}_0x4e33b0[_0x5d94('0xb4')]=_0x5068ec['id'];if(_0x223749[_0x5d94('0x5b')][_0x5d94('0xb5')]&&_0x223749[_0x5d94('0x5b')][_0x5d94('0xb5')]['id']){_0x4e33b0['id']=_0x223749['body'][_0x5d94('0xb5')]['id'];return db[_0x5d94('0xb3')][_0x5d94('0x59')]({'where':_0x4e33b0})['then'](function(_0x16c9cd){if(_0x16c9cd){return[_0x16c9cd,![]];}return db['ChatInteraction'][_0x5d94('0x5a')](_0x59abd5)[_0x5d94('0x35')](function(_0x5c9dce){return[_0x5c9dce,!![]];});});}return db[_0x5d94('0xb3')][_0x5d94('0x5a')](_0x59abd5)[_0x5d94('0x35')](function(_0x55809e){return[_0x55809e,!![]];});}})[_0x5d94('0xb6')](function(_0x5cce14,_0x5f18bb){if(_0x5cce14){_0x57ff39=_0x5f18bb;if(!_0x5f18bb){var _0x5152d1={'from':(_0x3c1338['contact'][_0x5d94('0xb7')]||'')+'\x20'+(_0x3c1338['contact'][_0x5d94('0xa6')]||'')};if(_0x223749['body'][_0x5d94('0xb1')]&&_0x223749[_0x5d94('0x5b')][_0x5d94('0xb8')]&&_0x223749[_0x5d94('0x5b')][_0x5d94('0xb1')]!=_0x223749[_0x5d94('0x5b')]['messageId']){_0x5152d1[_0x5d94('0xb1')]=_0x223749[_0x5d94('0x5b')][_0x5d94('0xb8')];}return _0x5cce14[_0x5d94('0x34')](_0x5152d1);}else{return _0x5cce14;}}})[_0x5d94('0x35')](function(_0x32a416){_0x3c1338[_0x5d94('0xb5')]=_0x32a416['get']({'plain':!![]});_0x3c1338[_0x5d94('0xb5')]['created']=_0x57ff39;if(_0x3c1338[_0x5d94('0xb5')][_0x5d94('0xb9')]){if(_0x3c1338[_0x5d94('0x99')][_0x5d94('0xba')]){_0x3c1338['applications']['push']({'id':0x0,'priority':_0x3c1338[_0x5d94('0x9a')][_0x5d94('0x49')]+0x1,'app':_0x5d94('0xbb'),'appdata':'unmanaged','interval':_0x5d94('0xbc')});}}return db[_0x5d94('0xbd')][_0x5d94('0x5a')]({'body':_0x223749[_0x5d94('0x5b')]['body'],'ChatWebsiteId':_0x223749[_0x5d94('0x58')]['id'],'ChatInteractionId':_0x32a416['id'],'direction':'in','ContactId':_0x3c1338[_0x5d94('0xa0')]['id'],'AttachmentId':_0x223749[_0x5d94('0x5b')]['AttachmentId']});})[_0x5d94('0x35')](function(_0x37fc76){_0x3c1338[_0x5d94('0x24')]=_0x37fc76;if(_0x3c1338[_0x5d94('0xb5')][_0x5d94('0xbe')]){return db[_0x5d94('0xbf')][_0x5d94('0x59')]({'attributes':['id',_0x5d94('0x3b')],'where':{'id':_0x3c1338[_0x5d94('0xb5')][_0x5d94('0xbe')]}})[_0x5d94('0x35')](function(_0x2ffdab){if(_0x2ffdab){_0x3c1338['applications'][_0x5d94('0xc0')]({'id':0x0,'priority':0x0,'app':_0x5d94('0xc1'),'appdata':_0x2ffdab[_0x5d94('0x3b')]+','+(_0x3c1338[_0x5d94('0x99')][_0x5d94('0xc2')]||0xa),'interval':_0x5d94('0xbc')});_0x3c1338[_0x5d94('0xc3')]=!![];}return respondWithRpcPromise(_0x5d94('0xc4'),_0x5d94('0xc5'),_0x3c1338);});}return respondWithRpcPromise(_0x5d94('0xc4'),'startRouting',_0x3c1338);})[_0x5d94('0x35')](function(_0x40ef72){respondWithRpcPromise(_0x5d94('0xc6'),_0x5d94('0xc6'),{'event':_0x5d94('0xc7'),'message':_0x40ef72},client9002);return _0x40ef72;})[_0x5d94('0x35')](respondWithResult(_0x192506,null))['catch'](handleError(_0x192506,null));};exports[_0x5d94('0xc8')]=function(_0x1c653a,_0x476895,_0x9c0543){var _0x11d215,_0x358a98,_0x32af57;var _0x4677dc=[];var _0x42ea43=[];var _0x1cc310={};var _0x442e8d=_0x1c653a[_0x5d94('0xc9')]||[];var _0x2f2f94=[];var _0x5c982b;return db[_0x5d94('0x88')]['describe']()[_0x5d94('0x35')](function(_0x586ecf){if(!_0x586ecf){throw new db[(_0x5d94('0x8a'))][(_0x5d94('0x8b'))](_0x5d94('0xca'));}_0x42ea43=_[_0x5d94('0x8c')](_[_0x5d94('0x43')](_0x586ecf),[_0x5d94('0x8d'),_0x5d94('0x8e')]);_0x4677dc=_[_0x5d94('0x8c')](_[_0x5d94('0x43')](_0x586ecf),[_0x5d94('0x8d'),'updatedAt',_0x5d94('0x8f'),_0x5d94('0x90')]);if(_0x1c653a[_0x5d94('0x5b')]['id']){delete _0x1c653a[_0x5d94('0x5b')]['id'];}if(_[_0x5d94('0x7e')](_0x1c653a[_0x5d94('0x5b')]['from'])){throw _0x476895[_0x5d94('0x28')](0x1f4)['send'](new db['Sequelize'][(_0x5d94('0x8b'))](_0x5d94('0x92')));}if(_['isNil'](_0x1c653a[_0x5d94('0x5b')][_0x5d94('0x5b')])||_0x1c653a[_0x5d94('0x5b')]['body']===''){throw _0x476895[_0x5d94('0x28')](0x1f4)[_0x5d94('0x3c')](new db['Sequelize'][(_0x5d94('0x8b'))](_0x5d94('0x93')));}if(_[_0x5d94('0x7e')](_0x1c653a[_0x5d94('0x5b')][_0x5d94('0xcb')])){throw _0x476895[_0x5d94('0x28')](0x1f4)['send'](new db['Sequelize']['ValidationError'](_0x5d94('0xcc')+_0x4677dc));}if(!_[_0x5d94('0xcd')](_0x4677dc,_0x1c653a[_0x5d94('0x5b')][_0x5d94('0xcb')])){throw _0x476895['status'](0x1f4)['send'](new db['Sequelize'][(_0x5d94('0x8b'))]('mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4677dc));}_0x1cc310[_0x1c653a['body'][_0x5d94('0xcb')]]=_0x1c653a[_0x5d94('0x5b')][_0x5d94('0x91')];})[_0x5d94('0x35')](function(){return db[_0x5d94('0x3e')][_0x5d94('0x59')]({'where':{'id':_0x1c653a[_0x5d94('0x58')]['id']},'include':[{'model':db['CmList'],'as':_0x5d94('0x9c')},{'model':db[_0x5d94('0xce')],'as':_0x5d94('0xce')}]});})[_0x5d94('0x35')](handleEntityNotFound(_0x476895,null))[_0x5d94('0x35')](function(_0x4dc13b){if(_0x4dc13b&&_0x4dc13b[_0x5d94('0x9c')]){_0x358a98=_0x4dc13b;var _0x1267c4=_[_0x5d94('0x17')](_0x1c653a[_0x5d94('0x5b')],{'firstName':_0x1c653a[_0x5d94('0x5b')]['from'],'phone':_0x1c653a[_0x5d94('0x5b')][_0x5d94('0x91')],'ListId':_0x4dc13b['ListId']});_0x1267c4[_0x1c653a[_0x5d94('0x5b')][_0x5d94('0xcb')]]=_0x1c653a[_0x5d94('0x5b')][_0x5d94('0x91')];return db[_0x5d94('0x88')][_0x5d94('0xcf')]({'where':_0x1cc310,'defaults':_0x1267c4});}})[_0x5d94('0xb6')](function(_0x57ee8c){if(_0x57ee8c){_0x32af57=_0x57ee8c;var _0x153728=fs['readFileSync'](path[_0x5d94('0x79')](config[_0x5d94('0x75')],_0x5d94('0xd0')),'utf8');var _0x2344df=ejs[_0x5d94('0xd1')](_0x153728,{'body':_[_0x5d94('0xd2')](_0x1c653a[_0x5d94('0x5b')][_0x5d94('0x5b')]),'bodyTitle':_0x358a98[_0x5d94('0xd3')]});return db[_0x5d94('0xd4')][_0x5d94('0x5a')]({'body':_0x2344df,'ContactId':_0x57ee8c['id'],'ChatWebsiteId':_0x358a98['id']});}})[_0x5d94('0x35')](function(_0x45781f){_0x5c982b=_0x45781f;if(_0x442e8d['length']){var _0x408a52=_0x442e8d['map'](function(_0x4676ea){return{'name':_0x4676ea[_0x5d94('0xd5')],'basename':_0x4676ea[_0x5d94('0x72')],'type':_0x4676ea[_0x5d94('0xd6')],'ChatOfflineMessageId':_0x45781f['id']};});_0x2f2f94=_0x408a52[_0x5d94('0x6a')](_0x3f778b=>{var _0x55b759={'filename':_0x3f778b[_0x5d94('0x3b')],'path':path[_0x5d94('0x79')](config[_0x5d94('0x75')],'server',_0x5d94('0xc9'),_0x5d94('0xd7'),'offline-chat',_0x3f778b[_0x5d94('0xd8')])};return _0x55b759;});if(!_0x358a98[_0x5d94('0xd9')]){return db[_0x5d94('0xda')][_0x5d94('0xdb')](function(_0x11bd0e){return db['Attachment'][_0x5d94('0xdc')](_0x408a52,{'transaction':_0x11bd0e});});}}})[_0x5d94('0x35')](function(){if(_0x5c982b){_0x11d215=_0x5c982b;return db[_0x5d94('0xce')][_0x5d94('0x67')]({'where':{'active':!![]},'include':[{'model':db[_0x5d94('0xdd')],'as':_0x5d94('0xde'),'raw':!![]}]});}})[_0x5d94('0x35')](function(_0x35ca2d){if(_0x35ca2d&&_0x35ca2d[_0x5d94('0xde')]&&_0x358a98[_0x5d94('0xdf')]&&_0x358a98['forwardOfflineAddress']){var _0xd559cf={'tls':{'rejectUnauthorized':![]}};if(_0x35ca2d[_0x5d94('0xde')][_0x5d94('0xe0')]){_0xd559cf['service']=_0x35ca2d[_0x5d94('0xde')][_0x5d94('0xe0')];}else{_0xd559cf[_0x5d94('0xe1')]=_0x35ca2d[_0x5d94('0xde')]['host'];_0xd559cf[_0x5d94('0xe2')]=_0x35ca2d[_0x5d94('0xde')][_0x5d94('0xe2')];_0xd559cf[_0x5d94('0xe3')]=_0x35ca2d['Smtp'][_0x5d94('0xe3')];}if(_0x35ca2d[_0x5d94('0xde')][_0x5d94('0xe4')]){_0xd559cf[_0x5d94('0xe5')]={'user':_0x35ca2d['Smtp'][_0x5d94('0xe6')],'pass':_0x35ca2d[_0x5d94('0xde')]['pass']};}return respondWithRpcPromise(_0x5d94('0xe7'),_0x5d94('0xe8'),{'account':_0xd559cf,'message':{'from':util['format']('\x22%s\x22\x20<%s>',_0x35ca2d[_0x5d94('0x3b')],_0x35ca2d[_0x5d94('0xe9')]||_0x35ca2d[_0x5d94('0xde')][_0x5d94('0xe6')]),'to':_0x358a98['forwardOfflineAddress'],'subject':_0x358a98['offlineMessageSubject'],'html':_0x11d215['body'],'attachments':_0x2f2f94}},client9003)[_0x5d94('0x35')](function(){return _0x11d215;})[_0x5d94('0x26')](function(_0x33ccc7){console[_0x5d94('0x22')](_0x33ccc7);});}})['then'](function(){if(_0x358a98&&_0x358a98[_0x5d94('0xd9')]&&_0x358a98['MailAccountId']){var _0x25c5f9=[];if(_0x442e8d[_0x5d94('0x49')]){_0x25c5f9=_0x442e8d[_0x5d94('0x6a')](function(_0x199090){return{'name':_0x199090[_0x5d94('0xd5')],'basename':_0x199090[_0x5d94('0x72')],'type':_0x199090[_0x5d94('0xd6')],'ChatOfflineMessageId':_0x5c982b['id']};});}var _0x5d4b10;if(!_[_0x5d94('0x7e')](_0x358a98[_0x5d94('0xea')])){var _0x3edfe7=_[_0x5d94('0x6a')](_0x1c653a[_0x5d94('0x5b')],function(_0x39a5e3){return _0x39a5e3;});var _0x14d544=_[_0x5d94('0xeb')](_0x3edfe7)[0x0];var _0x3cf8f3=_[_0x5d94('0xec')](_0x14d544,function(_0x2f1e4c){return _0x2f1e4c;});_0x5d4b10=_0x3cf8f3[0x1][_0x358a98[_0x5d94('0xea')]];}var _0x48101d={'from':_0x32af57['email'],'firstName':_0x32af57[_0x5d94('0xb7')],'lastName':_0x32af57['lastName'],'mapKey':'email','message':{'from':_0x32af57[_0x5d94('0xe9')],'to':_0x358a98['MailAccount'][_0x5d94('0xe9')],'cc':'','subject':_['isNil'](_0x5d4b10)?_0x358a98['offlineMessageSubject']:_0x5d4b10,'messageId':'','sentAt':new Date(),'attach':_0x25c5f9[_0x5d94('0x49')],'attachments':_0x25c5f9,'originChannel':_0x5d94('0xed'),'ChatWebsiteId':_0x358a98['id'],'ChatOfflineMessageId':_0x11d215['id'],'originTo':_0x358a98['MailAccount'][_0x5d94('0xe9')]},'body':_0x11d215[_0x5d94('0x5b')]};var _0x1f8de8={'account':{'id':_0x358a98[_0x5d94('0xee')]},'body':_0x48101d,'log':'NotifyMailAccount'};return respondWithRpcPromise(_0x5d94('0xef'),'notifyMail',_0x1f8de8,client9001)[_0x5d94('0x35')](function(){return _0x11d215;})['catch'](function(_0x299fe7){console['error'](_0x299fe7);});}return;})[_0x5d94('0x35')](function(){if(_0x11d215){return _0x11d215;}})[_0x5d94('0x35')](respondWithResult(_0x476895,null))[_0x5d94('0x26')](function(_0x3fe01c){console[_0x5d94('0x22')](_0x5d94('0x26'),_0x3fe01c);for(var _0x39570a of _0x442e8d){var _0x1429e8=path[_0x5d94('0x79')](config[_0x5d94('0x75')],'server','files','attachments',_0x5d94('0xf0'),_0x39570a[_0x5d94('0x72')]);fs_extra[_0x5d94('0xf1')](_0x1429e8)[_0x5d94('0x26')](function(_0x2c36a0){console[_0x5d94('0x22')]('Could\x20not\x20remove\x20attachment\x20file',_0x1429e8,_0x2c36a0);});}});};exports[_0x5d94('0xf2')]=function(_0x2ced69,_0x5a12be,_0x3d768a){return db[_0x5d94('0xb3')][_0x5d94('0x59')]({'where':{'id':_0x2ced69[_0x5d94('0x58')]['id']}})[_0x5d94('0x35')](handleEntityNotFound(_0x5a12be,null))['then'](function(_0x48e282){if(_0x48e282){return _0x48e282[_0x5d94('0xf2')](_0x2ced69[_0x5d94('0x5b')]['ids'],_['omit'](_0x2ced69['body'],[_0x5d94('0x6c'),'id'])||{});}})[_0x5d94('0x35')](respondWithResult(_0x5a12be,null))['catch'](handleError(_0x5a12be,null));};exports[_0x5d94('0xf3')]=function(_0x169abc,_0x1f3d7a,_0x6def57){var _0x53fbb8={'raw':![],'where':{}};var _0x2d1bf6={};var _0x46a246={'count':0x0,'rows':[]};return db['ChatWebsite']['findOne']({'where':{'id':_0x169abc[_0x5d94('0x58')]['id']}})['then'](handleEntityNotFound(_0x1f3d7a,null))[_0x5d94('0x35')](function(_0x14f4ee){if(_0x14f4ee){_0x2d1bf6['model']=_['keys'](db['ChatInteraction'][_0x5d94('0x3f')]);_0x2d1bf6[_0x5d94('0x44')]=_[_0x5d94('0x43')](_0x169abc[_0x5d94('0x44')]);_0x2d1bf6[_0x5d94('0x45')]=_[_0x5d94('0x46')](_0x2d1bf6['model'],_0x2d1bf6[_0x5d94('0x44')]);_0x53fbb8[_0x5d94('0x47')]=_[_0x5d94('0x46')](_0x2d1bf6[_0x5d94('0x42')],qs[_0x5d94('0x48')](_0x169abc['query'][_0x5d94('0x48')]));_0x53fbb8[_0x5d94('0x47')]=_0x53fbb8[_0x5d94('0x47')][_0x5d94('0x49')]?_0x53fbb8[_0x5d94('0x47')]:_0x2d1bf6[_0x5d94('0x42')];if(!_0x169abc['query']['hasOwnProperty'](_0x5d94('0x4a'))){_0x53fbb8[_0x5d94('0x2b')]=qs['limit'](_0x169abc[_0x5d94('0x44')]['limit']);_0x53fbb8['offset']=qs['offset'](_0x169abc[_0x5d94('0x44')][_0x5d94('0x2e')]);}_0x53fbb8[_0x5d94('0x4b')]=qs[_0x5d94('0x4c')](_0x169abc[_0x5d94('0x44')]['sort']);_0x53fbb8[_0x5d94('0x4d')]=qs[_0x5d94('0x45')](_[_0x5d94('0x69')](_0x169abc[_0x5d94('0x44')],_0x2d1bf6[_0x5d94('0x45')]));_0x53fbb8[_0x5d94('0x4d')]['ChatWebsiteId']=_0x14f4ee['id'];if(_0x169abc['query']['filter']){_0x53fbb8[_0x5d94('0x4d')]=_['merge'](_0x53fbb8[_0x5d94('0x4d')],{'$or':_[_0x5d94('0x6a')](_0x53fbb8['attributes'],function(_0x10783a){var _0x4d573c={};_0x4d573c[_0x10783a]={'$like':'%'+_0x169abc['query'][_0x5d94('0x4e')]+'%'};return _0x4d573c;})});}_0x53fbb8=_[_0x5d94('0x4f')]({},_0x53fbb8,_0x169abc[_0x5d94('0x52')]);return db[_0x5d94('0xb3')]['count']({'where':_0x53fbb8[_0x5d94('0x4d')]})[_0x5d94('0x35')](function(_0x3c7283){_0x46a246['count']=_0x3c7283;if(_0x169abc[_0x5d94('0x44')][_0x5d94('0x53')]){_0x53fbb8[_0x5d94('0x54')]=[{'model':db[_0x5d94('0x88')],'as':_0x5d94('0xf4'),'required':![]},{'model':db['User'],'as':_0x5d94('0xf5'),'attributes':[_0x5d94('0x3b'),_0x5d94('0xf6'),'internal'],'required':![]},{'model':db[_0x5d94('0xf7')],'as':_0x5d94('0xf8'),'attributes':['id',_0x5d94('0x3b'),_0x5d94('0xf9')],'where':_0x169abc[_0x5d94('0x44')][_0x5d94('0xfa')]?{'id':_0x169abc['query'][_0x5d94('0xfa')]}:undefined,'required':_0x169abc[_0x5d94('0x44')]['tag']?!![]:![]}];}return db['ChatInteraction'][_0x5d94('0x55')](_0x53fbb8);})[_0x5d94('0x35')](function(_0x1d43b4){_0x46a246[_0x5d94('0x56')]=_0x1d43b4;return _0x46a246;});}})[_0x5d94('0x35')](respondWithFilteredResult(_0x1f3d7a,_0x53fbb8))[_0x5d94('0x26')](handleError(_0x1f3d7a,null));};function iftimePromise(_0x1a51f9,_0xfe5a10){return respondWithRpcPromise(_0x5d94('0xfb'),_0x5d94('0xfc'),{'command':_0xfe5a10[_0x5d94('0xfd')]?util[_0x5d94('0xad')](_0x5d94('0xfe'),_0x1a51f9[_0x5d94('0xff')],_0xfe5a10[_0x5d94('0xfd')]):util[_0x5d94('0xad')](_0x5d94('0x100'),_0x1a51f9[_0x5d94('0xff')])},client9002)[_0x5d94('0x35')](function(_0x441694){var _0x22b7c9=_0x441694&&_0x441694[_0x5d94('0x101')](_0x5d94('0x102'))>=0x0?!![]:![];logger[_0x5d94('0x1e')](_0x5d94('0x103'),_0xfe5a10['id'],_0x1a51f9['id'],_0x1a51f9[_0x5d94('0xff')],_0x22b7c9?_0x5d94('0x104'):_0x5d94('0x105'),_0xfe5a10[_0x5d94('0xfd')]?_0xfe5a10[_0x5d94('0xfd')]:'No\x20timezone');return _0x22b7c9;})['catch'](function(_0x1baf5e){logger[_0x5d94('0x22')](_0x5d94('0x103'),_0xfe5a10['id'],_0x1a51f9['id'],_0x1a51f9['interval'],util[_0x5d94('0x106')](_0x1baf5e,{'showHidden':![],'depth':null}),_0xfe5a10[_0x5d94('0xfd')]?_0xfe5a10[_0x5d94('0xfd')]:'No\x20timezone');return![];});}exports[_0x5d94('0xfc')]=function(_0x2162d9,_0x4b5fc8,_0x4608b0){var _0x3b8777=0x0;var _0x3b965d=0x0;var _0x2338a5=![];var _0x2caae2;var _0x41d33c;return db[_0x5d94('0x3e')]['find']({'where':{'id':_0x2162d9[_0x5d94('0x58')]['id']},'include':[{'model':db['Interval'],'as':_0x5d94('0x107'),'include':[{'model':db[_0x5d94('0x107')],'as':_0x5d94('0x108'),'attributes':['id','interval'],'raw':!![]}]}]})[_0x5d94('0x35')](handleEntityNotFound(_0x4b5fc8,null))['then'](function(_0x39b832){if(_0x39b832){_0x2caae2=_0x39b832;return _0x39b832['getProactiveActions']({'raw':!![]});}})[_0x5d94('0x35')](function(_0x59943e){if(_0x2caae2){if(_0x59943e){_0x41d33c=_0x59943e;}}return require(_0x5d94('0x109'))[_0x5d94('0x10a')]();})[_0x5d94('0x35')](function(_0x58c964){if(_0x58c964){_0x3b965d=_0x58c964[_0x5d94('0x10b')];_0x2338a5=_0x58c964[_0x5d94('0x77')];}})[_0x5d94('0x35')](function(){return db['ChatInteraction'][_0x5d94('0x2d')]({'where':{'closed':![]}});})['then'](function(_0x2ae0e5){_0x3b8777=_0x2ae0e5;if(_0x3b965d&&_0x2ae0e5>_0x3b965d){return db[_0x5d94('0x10c')][_0x5d94('0x67')]({'where':{'id':0x1}})['then'](function(_0x29e973){if(_0x29e973){_0x29e973[_0x5d94('0x10d')](_0x5d94('0x10e'));}});}})[_0x5d94('0x35')](function(){if(_0x2caae2[_0x5d94('0x107')]&&_0x2caae2[_0x5d94('0x107')][_0x5d94('0x108')]){var _0x1dbe8c=[];for(var _0x15599f=0x0;_0x15599f<_0x2caae2['Interval']['Intervals'][_0x5d94('0x49')];_0x15599f++){var _0x4ff506=_0x2caae2[_0x5d94('0x107')][_0x5d94('0x108')][_0x15599f][_0x5d94('0x37')]({'plain':!![]});_0x1dbe8c[_0x5d94('0x10f')](iftimePromise(_0x4ff506,_0x2caae2));}return BPromise['all'](_0x1dbe8c)[_0x5d94('0x35')](function(_0xc71489){return _[_0x5d94('0x110')](_0xc71489);});}else{return!![];}})[_0x5d94('0x35')](function(_0x553ee0){var _0x6559e7=fs[_0x5d94('0x111')](path[_0x5d94('0x79')](config[_0x5d94('0x75')],_0x5d94('0x112')),'utf8');var _0x4b2ac7={'remote':_0x2caae2[_0x5d94('0x113')],'query':querystring[_0x5d94('0x21')](_[_0x5d94('0x4f')](_0x2caae2[_0x5d94('0x37')]({'plain':!![]}),{'customerIp':_0x2162d9[_0x5d94('0xa2')][_0x5d94('0xa4')]||_0x2162d9[_0x5d94('0xa2')]['x-real-ip']||_0x2162d9[_0x5d94('0x114')][_0x5d94('0x115')]||_0x2162d9['ip'],'referer':_0x2162d9[_0x5d94('0xa2')][_0x5d94('0xa8')],'openedInteractions':_0x3b8777,'maxInteractions':_0x3b965d,'virtual':_0x2338a5['virtual'],'online':_0x553ee0,'custom':_0x2338a5}))[_0x5d94('0x116')](/'/g,'\x5c\x27')};_0x4b5fc8[_0x5d94('0x3c')](ejs[_0x5d94('0xd1')](Mustache['render'](_0x6559e7,_0x4b2ac7),{'proactiveActions':_0x41d33c,'alignment':_0x2caae2[_0x5d94('0x117')],'verticalAlignment':_0x2caae2[_0x5d94('0x118')],'div_color':_0x2caae2[_0x5d94('0xf9')],'text_color':_0x2caae2[_0x5d94('0x119')],'button_color':_0x2caae2[_0x5d94('0x11a')],'background_color':_0x2caae2['backgroundColor']}));})['catch'](handleError(_0x4b5fc8,null));};exports['addApplications']=function(_0x9ae99d,_0x29d3c2,_0x484bf4){return db['ChatWebsite'][_0x5d94('0x67')]({'where':{'id':_0x9ae99d[_0x5d94('0x58')]['id']}})[_0x5d94('0x35')](handleEntityNotFound(_0x29d3c2,null))[_0x5d94('0x35')](function(_0x21dac1){if(_0x21dac1){return db['sequelize'][_0x5d94('0xdb')](function(_0x3b013f){return db[_0x5d94('0x97')][_0x5d94('0x36')]({'where':{'ChatWebsiteId':_0x9ae99d[_0x5d94('0x58')]['id']},'transaction':_0x3b013f})[_0x5d94('0x35')](function(_0x3e0f44){var _0x16cb32=_[_0x5d94('0x6a')](_0x9ae99d['body'],function(_0x32a413){_0x32a413['ChatWebsiteId']=_0x9ae99d[_0x5d94('0x58')]['id'];return _0x32a413;});return db[_0x5d94('0x97')]['bulkCreate'](_0x16cb32,{'transaction':_0x3b013f});});})['then'](function(){return db[_0x5d94('0x97')][_0x5d94('0x11b')]({'where':{'ChatWebsiteId':_0x9ae99d[_0x5d94('0x58')]['id']},'order':_0x5d94('0x9e')});});}})[_0x5d94('0x35')](respondWithResult(_0x29d3c2,null))[_0x5d94('0x26')](handleError(_0x29d3c2,null));};exports['getApplications']=function(_0xe44424,_0x2b2a5a,_0x74dfdb){var _0x282546={};var _0x513bc5={};var _0x3ac244;var _0x18bfa2;return db[_0x5d94('0x3e')][_0x5d94('0x67')]({'where':{'id':_0xe44424[_0x5d94('0x58')]['id']}})[_0x5d94('0x35')](handleEntityNotFound(_0x2b2a5a,null))[_0x5d94('0x35')](function(_0x307179){if(_0x307179){_0x3ac244=_0x307179;_0x513bc5[_0x5d94('0x42')]=_['keys'](db[_0x5d94('0x97')][_0x5d94('0x3f')]);_0x513bc5[_0x5d94('0x44')]=_[_0x5d94('0x43')](_0xe44424[_0x5d94('0x44')]);_0x513bc5[_0x5d94('0x45')]=_['intersection'](_0x513bc5[_0x5d94('0x42')],_0x513bc5[_0x5d94('0x44')]);_0x282546[_0x5d94('0x47')]=_['intersection'](_0x513bc5['model'],qs['fields'](_0xe44424[_0x5d94('0x44')]['fields']));_0x282546[_0x5d94('0x47')]=_0x282546['attributes'][_0x5d94('0x49')]?_0x282546[_0x5d94('0x47')]:_0x513bc5[_0x5d94('0x42')];_0x282546[_0x5d94('0x4b')]=qs[_0x5d94('0x4c')](_0xe44424[_0x5d94('0x44')][_0x5d94('0x4c')]);_0x282546['where']=qs[_0x5d94('0x45')](_['pick'](_0xe44424['query'],_0x513bc5[_0x5d94('0x45')]));if(_0xe44424['query'][_0x5d94('0x4e')]){_0x282546[_0x5d94('0x4d')]=_[_0x5d94('0x4f')](_0x282546[_0x5d94('0x4d')],{'$or':_[_0x5d94('0x6a')](_0x282546[_0x5d94('0x47')],function(_0x595bc0){var _0x2fc6aa={};_0x2fc6aa[_0x595bc0]={'$like':'%'+_0xe44424[_0x5d94('0x44')][_0x5d94('0x4e')]+'%'};return _0x2fc6aa;})});}_0x282546=_[_0x5d94('0x4f')]({},_0x282546,_0xe44424[_0x5d94('0x52')]);return _0x3ac244['getApplications'](_0x282546);}})[_0x5d94('0x35')](function(_0x55f61f){if(_0x55f61f){_0x18bfa2=_0x55f61f[_0x5d94('0x49')];if(!_0xe44424[_0x5d94('0x44')]['hasOwnProperty'](_0x5d94('0x4a'))){_0x282546[_0x5d94('0x2b')]=qs['limit'](_0xe44424[_0x5d94('0x44')][_0x5d94('0x2b')]);_0x282546[_0x5d94('0x2e')]=qs[_0x5d94('0x2e')](_0xe44424[_0x5d94('0x44')][_0x5d94('0x2e')]);}return _0x3ac244[_0x5d94('0x11c')](_0x282546);}})[_0x5d94('0x35')](function(_0x404d81){if(_0x404d81){return _0x404d81?{'count':_0x18bfa2,'rows':_0x404d81}:null;}})[_0x5d94('0x35')](respondWithResult(_0x2b2a5a,null))['catch'](handleError(_0x2b2a5a,null));};exports[_0x5d94('0x11d')]=function(_0xec5fe7,_0x3c31a1,_0x3e74c2){return db['chatProactiveAction'][_0x5d94('0x59')]({'where':{'id':_0xec5fe7[_0x5d94('0x58')]['id']}})[_0x5d94('0x35')](handleEntityNotFound(_0x3c31a1,null))['then'](function(_0x1bb376){if(_0x1bb376){return _0x1bb376['addProactiveActions'](_0xec5fe7[_0x5d94('0x5b')]['ids'],_[_0x5d94('0x11e')](_0xec5fe7[_0x5d94('0x5b')],[_0x5d94('0x6c'),'id'])||{});}})['then'](respondWithResult(_0x3c31a1,null))[_0x5d94('0x26')](handleError(_0x3c31a1,null));};exports[_0x5d94('0x11f')]=function(_0x1310c0,_0x4e61df,_0x95d64e){var _0x418bdc={};var _0x53a438={};var _0x44eb7b;var _0xc3f406;return db[_0x5d94('0x3e')][_0x5d94('0x67')]({'where':{'id':_0x1310c0[_0x5d94('0x58')]['id']}})[_0x5d94('0x35')](handleEntityNotFound(_0x4e61df,null))[_0x5d94('0x35')](function(_0x2b2099){if(_0x2b2099){_0x44eb7b=_0x2b2099;_0x53a438[_0x5d94('0x42')]=_[_0x5d94('0x43')](db[_0x5d94('0x120')]['rawAttributes']);_0x53a438['query']=_[_0x5d94('0x43')](_0x1310c0['query']);_0x53a438['filters']=_[_0x5d94('0x46')](_0x53a438[_0x5d94('0x42')],_0x53a438['query']);_0x418bdc[_0x5d94('0x47')]=_[_0x5d94('0x46')](_0x53a438[_0x5d94('0x42')],qs['fields'](_0x1310c0['query'][_0x5d94('0x48')]));_0x418bdc[_0x5d94('0x47')]=_0x418bdc[_0x5d94('0x47')][_0x5d94('0x49')]?_0x418bdc['attributes']:_0x53a438[_0x5d94('0x42')];_0x418bdc['order']=qs[_0x5d94('0x4c')](_0x1310c0[_0x5d94('0x44')]['sort']);_0x418bdc[_0x5d94('0x4d')]=qs[_0x5d94('0x45')](_['pick'](_0x1310c0[_0x5d94('0x44')],_0x53a438[_0x5d94('0x45')]));if(_0x1310c0[_0x5d94('0x44')][_0x5d94('0x4e')]){_0x418bdc[_0x5d94('0x4d')]=_[_0x5d94('0x4f')](_0x418bdc[_0x5d94('0x4d')],{'$or':_['map'](_0x418bdc[_0x5d94('0x47')],function(_0x5dbc84){var _0x997f4d={};_0x997f4d[_0x5dbc84]={'$like':'%'+_0x1310c0[_0x5d94('0x44')][_0x5d94('0x4e')]+'%'};return _0x997f4d;})});}_0x418bdc=_[_0x5d94('0x4f')]({},_0x418bdc,_0x1310c0[_0x5d94('0x52')]);return _0x44eb7b['getProactiveActions'](_0x418bdc);}})[_0x5d94('0x35')](function(_0x481e4b){if(_0x481e4b){_0xc3f406=_0x481e4b['length'];if(!_0x1310c0[_0x5d94('0x44')]['hasOwnProperty'](_0x5d94('0x4a'))){_0x418bdc['limit']=qs['limit'](_0x1310c0[_0x5d94('0x44')][_0x5d94('0x2b')]);_0x418bdc[_0x5d94('0x2e')]=qs[_0x5d94('0x2e')](_0x1310c0[_0x5d94('0x44')]['offset']);}return _0x44eb7b['getProactiveActions'](_0x418bdc);}})[_0x5d94('0x35')](function(_0x4fd55a){if(_0x4fd55a){return _0x4fd55a?{'count':_0xc3f406,'rows':_0x4fd55a}:null;}})['then'](respondWithResult(_0x4e61df,null))[_0x5d94('0x26')](handleError(_0x4e61df,null));};exports[_0x5d94('0x121')]=function(_0x50c2b3,_0x4aa9d8,_0x3af7c3){var _0x19325b=_0x50c2b3[_0x5d94('0x44')][_0x5d94('0x122')]===_0x5d94('0x123')?_0x5d94('0x124'):_0x5d94('0x125');return db[_0x5d94('0x3e')]['find']({'attributes':['id',_0x19325b],'where':{'id':_0x50c2b3[_0x5d94('0x58')]['id']}})[_0x5d94('0x35')](handleEntityNotFound(_0x4aa9d8,null))[_0x5d94('0x35')](function(_0x1a5565){if(_0x1a5565){var _0x4e6ddc=_0x1a5565[_0x19325b];var _0x25f5af=_0x4e6ddc&&_0x4e6ddc[_0x5d94('0x126')]?_0x4e6ddc[_0x5d94('0x126')]:[];_0x4aa9d8['send']({'fromKey':_[_0x5d94('0x7e')](_0x4e6ddc[_0x5d94('0x127')])?undefined:_0x4e6ddc[_0x5d94('0x127')],'count':_0x25f5af[_0x5d94('0x49')],'rows':_0x25f5af});}})[_0x5d94('0x26')](handleError(_0x4aa9d8,null));};exports[_0x5d94('0x128')]=function(_0x57f46e,_0x5978b5,_0x2aaff7){var _0x46689d={'raw':![],'where':{}};var _0x243c78={};var _0x3da7f7={'count':0x0,'rows':[]};return db[_0x5d94('0x3e')][_0x5d94('0x67')]({'where':{'id':_0x57f46e['params']['id']}})[_0x5d94('0x35')](handleEntityNotFound(_0x5978b5,null))[_0x5d94('0x35')](function(_0x4418f9){if(_0x4418f9){_0x243c78[_0x5d94('0x42')]=_[_0x5d94('0x43')](db[_0x5d94('0xd4')]['rawAttributes']);_0x243c78[_0x5d94('0x44')]=_[_0x5d94('0x43')](_0x57f46e['query']);_0x243c78[_0x5d94('0x45')]=_[_0x5d94('0x46')](_0x243c78[_0x5d94('0x42')],_0x243c78[_0x5d94('0x44')]);_0x46689d[_0x5d94('0x47')]=_[_0x5d94('0x46')](_0x243c78['model'],qs[_0x5d94('0x48')](_0x57f46e[_0x5d94('0x44')][_0x5d94('0x48')]));_0x46689d[_0x5d94('0x47')]=_0x46689d[_0x5d94('0x47')][_0x5d94('0x49')]?_0x46689d['attributes']:_0x243c78['model'];if(!_0x57f46e[_0x5d94('0x44')][_0x5d94('0x68')](_0x5d94('0x4a'))){_0x46689d[_0x5d94('0x2b')]=qs[_0x5d94('0x2b')](_0x57f46e[_0x5d94('0x44')]['limit']);_0x46689d[_0x5d94('0x2e')]=qs[_0x5d94('0x2e')](_0x57f46e[_0x5d94('0x44')][_0x5d94('0x2e')]);}_0x46689d[_0x5d94('0x4b')]=qs[_0x5d94('0x4c')](_0x57f46e[_0x5d94('0x44')][_0x5d94('0x4c')]);_0x46689d[_0x5d94('0x4d')]=qs[_0x5d94('0x45')](_['pick'](_0x57f46e['query'],_0x243c78[_0x5d94('0x45')]));_0x46689d[_0x5d94('0x4d')][_0x5d94('0x64')]=_0x4418f9['id'];if(_0x57f46e[_0x5d94('0x44')][_0x5d94('0x4e')]){_0x46689d[_0x5d94('0x4d')]=_[_0x5d94('0x4f')](_0x46689d[_0x5d94('0x4d')],{'$or':_[_0x5d94('0x6a')](_0x46689d[_0x5d94('0x47')],function(_0x14ed4f){var _0x510df5={};_0x510df5[_0x14ed4f]={'$like':'%'+_0x57f46e[_0x5d94('0x44')][_0x5d94('0x4e')]+'%'};return _0x510df5;})});}_0x46689d=_[_0x5d94('0x4f')]({},_0x46689d,_0x57f46e[_0x5d94('0x52')]);return db[_0x5d94('0xd4')][_0x5d94('0x2d')]({'where':_0x46689d[_0x5d94('0x4d')]})[_0x5d94('0x35')](function(_0x29f56f){_0x3da7f7[_0x5d94('0x2d')]=_0x29f56f;if(_0x57f46e['query'][_0x5d94('0x53')]){_0x46689d['include']=[{'all':!![]}];}else{_0x46689d[_0x5d94('0x54')]=[{'model':db[_0x5d94('0x88')],'as':_0x5d94('0xf4'),'required':![]},{'model':db[_0x5d94('0x129')],'as':_0x5d94('0x12a'),'required':![]}];}return db['ChatOfflineMessage'][_0x5d94('0x55')](_0x46689d);})['then'](function(_0x51ff1a){_0x3da7f7[_0x5d94('0x56')]=_0x51ff1a;return _0x3da7f7;});}})[_0x5d94('0x35')](respondWithFilteredResult(_0x5978b5,_0x46689d))[_0x5d94('0x26')](handleError(_0x5978b5,null));};exports[_0x5d94('0x12b')]=function(_0x3edfc3,_0x532282,_0x35f351){return db['ChatWebsite'][_0x5d94('0x59')]({'where':{'id':_0x3edfc3[_0x5d94('0x58')]['id']}})['then'](handleEntityNotFound(_0x532282,null))['then'](function(_0x38f102){if(_0x38f102){return _0x38f102[_0x5d94('0x12b')](_0x3edfc3['body'][_0x5d94('0x6c')],_[_0x5d94('0x11e')](_0x3edfc3[_0x5d94('0x5b')],['ids','id'])||{})['spread'](function(_0x42dd4a){for(var _0x1e96d3=0x0;_0x1e96d3<_0x3edfc3[_0x5d94('0x5b')]['ids'][_0x5d94('0x49')];_0x1e96d3+=0x1){socket[_0x5d94('0x12c')]('userChatWebsite:save',{'UserId':Number(_0x3edfc3[_0x5d94('0x5b')]['ids'][_0x1e96d3]),'ChatWebsiteId':Number(_0x3edfc3[_0x5d94('0x58')]['id'])});}return _0x42dd4a;});}})['then'](respondWithResult(_0x532282,null))[_0x5d94('0x26')](handleError(_0x532282,null));};exports[_0x5d94('0x12d')]=function(_0x51e4de,_0xdfc2d8,_0x59ce4a){return db[_0x5d94('0x3e')][_0x5d94('0x59')]({'where':{'id':_0x51e4de[_0x5d94('0x58')]['id']}})[_0x5d94('0x35')](handleEntityNotFound(_0xdfc2d8,null))[_0x5d94('0x35')](function(_0x227fca){if(_0x227fca){return _0x227fca['removeAgents'](_0x51e4de[_0x5d94('0x44')][_0x5d94('0x6c')])[_0x5d94('0x35')](function(){if(_[_0x5d94('0x12e')](_0x51e4de[_0x5d94('0x44')][_0x5d94('0x6c')])){for(var _0x490c09=0x0;_0x490c09<_0x51e4de[_0x5d94('0x44')][_0x5d94('0x6c')][_0x5d94('0x49')];_0x490c09+=0x1){socket['emit']('userChatWebsite:remove',{'UserId':Number(_0x51e4de[_0x5d94('0x44')][_0x5d94('0x6c')][_0x490c09]),'ChatWebsiteId':Number(_0x51e4de[_0x5d94('0x58')]['id'])});}}else{socket[_0x5d94('0x12c')]('userChatWebsite:remove',{'UserId':Number(_0x51e4de['query'][_0x5d94('0x6c')]),'ChatWebsiteId':Number(_0x51e4de[_0x5d94('0x58')]['id'])});}});}})['then'](respondWithStatusCode(_0xdfc2d8,null))[_0x5d94('0x26')](handleError(_0xdfc2d8,null));};exports[_0x5d94('0x12f')]=function(_0x1c7f4c,_0x227daa,_0x2fc81c){var _0x2843dd={};var _0x574b41={};var _0xb3626a;var _0x362475;return db['ChatWebsite'][_0x5d94('0x67')]({'where':{'id':_0x1c7f4c[_0x5d94('0x58')]['id']}})[_0x5d94('0x35')](handleEntityNotFound(_0x227daa,null))[_0x5d94('0x35')](function(_0x4cf483){if(_0x4cf483){_0xb3626a=_0x4cf483;_0x574b41['model']=_[_0x5d94('0x43')](db[_0x5d94('0xbf')]['rawAttributes']);_0x574b41[_0x5d94('0x44')]=_[_0x5d94('0x43')](_0x1c7f4c['query']);_0x574b41[_0x5d94('0x45')]=_[_0x5d94('0x46')](_0x574b41[_0x5d94('0x42')],_0x574b41[_0x5d94('0x44')]);_0x2843dd[_0x5d94('0x47')]=_['intersection'](_0x574b41[_0x5d94('0x42')],qs[_0x5d94('0x48')](_0x1c7f4c['query'][_0x5d94('0x48')]));_0x2843dd[_0x5d94('0x47')]=_0x2843dd['attributes'][_0x5d94('0x49')]?_0x2843dd[_0x5d94('0x47')]:_0x574b41['model'];_0x2843dd[_0x5d94('0x4b')]=qs['sort'](_0x1c7f4c[_0x5d94('0x44')][_0x5d94('0x4c')]);_0x2843dd[_0x5d94('0x4d')]=qs['filters'](_['pick'](_0x1c7f4c[_0x5d94('0x44')],_0x574b41[_0x5d94('0x45')]));if(_0x1c7f4c[_0x5d94('0x44')][_0x5d94('0x4e')]){_0x2843dd['where']=_[_0x5d94('0x4f')](_0x2843dd[_0x5d94('0x4d')],{'$or':_['map'](_0x2843dd[_0x5d94('0x47')],function(_0xfef47a){var _0x1256bc={};_0x1256bc[_0xfef47a]={'$like':'%'+_0x1c7f4c[_0x5d94('0x44')][_0x5d94('0x4e')]+'%'};return _0x1256bc;})});}_0x2843dd=_[_0x5d94('0x4f')]({},_0x2843dd,_0x1c7f4c[_0x5d94('0x52')]);return _0xb3626a[_0x5d94('0x12f')](_0x2843dd);}})[_0x5d94('0x35')](function(_0x30616c){if(_0x30616c){_0x362475=_0x30616c[_0x5d94('0x49')];if(!_0x1c7f4c[_0x5d94('0x44')][_0x5d94('0x68')](_0x5d94('0x4a'))){_0x2843dd[_0x5d94('0x2b')]=qs[_0x5d94('0x2b')](_0x1c7f4c[_0x5d94('0x44')]['limit']);_0x2843dd['offset']=qs[_0x5d94('0x2e')](_0x1c7f4c[_0x5d94('0x44')][_0x5d94('0x2e')]);}return _0xb3626a[_0x5d94('0x12f')](_0x2843dd);}})[_0x5d94('0x35')](function(_0x5e0201){if(_0x5e0201){return _0x5e0201?{'count':_0x362475,'rows':_0x5e0201}:null;}})[_0x5d94('0x35')](respondWithResult(_0x227daa,null))[_0x5d94('0x26')](handleError(_0x227daa,null));};
\ No newline at end of file
+var _0xc17a=['first','split','firstName','lastName','referer','browser','format','version','unknown','%s\x20%s','device','vendor','%s\x20%s\x20%s','ChatInteraction','threadId','ContactId','interaction','spread','messageId','created','autoclose','push','close','unmanaged','*,*,*,*','ChatMessage','AttachmentId','UserId','User','agent','forcedOwnership','startRouting','Start','EventManager','files','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline','MailAccount','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','ChatOfflineMessage','originalname','mimetype','server','attachments','offline-chat','basename','openNewInteraction','sequelize','transaction','Attachment','bulkCreate','Smtp','forwardOffline','forwardOfflineAddress','service','host','port','secure','authentication','auth','user','SendMail','sendMail','\x22%s\x22\x20<%s>','email','offlineMessageSubject','MailAccountId','toPairsIn','mapValues','subjectOffline','NotifyMailAccount','notifyMail','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','Owner','fullname','internal','Tag','color','tag','Command','getSnippet','timezone','iftime\x20%s,%s','iftime\x20%s','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','interval','ONLINE','OFFLINE','inspect','No\x20timezone','Interval','Intervals','getProactiveActions','virtual','increment','chatLicenseExceeded','all','some','remote','x-real-ip','replace','verticalAlignment','backgroundColor','addApplications','getApplications','addProactiveActions','chatProactiveAction','ChatProactiveAction','getFields','online','offlineForm','onlineForm','items','fromKey','getOfflineMessages','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','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','./chatWebsite.socket','jayson/promise','client','http','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','undefined','count','offset','limit','Content-Range','apply','save','update','then','destroy','get','ChatWebsites','UserProfileResource','stack','name','send','map','ChatWebsite','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','where','VIRTUAL','filter','merge','options','includeAll','include','rows','show','params','Pause','mandatoryDispositionPause','filters','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','nolimit','findAll','removeDispositions','addAnswer','getAnswers','CannedAnswer','ids','addLogo','sitepic','file','agentAvatar','filename','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','getLogo','join','root','server/files/images/logos/default_logo.svg','getLicense','custom','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','existsSync','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','server/files/images/avatars/system_avatar.png','isNil','notify','user-agent-parser','setUA','headers','user-agent','getResult','chat','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','CmList','List','Contacts','DESC','ChatApplication','Applications','account','applications','list','orderBy','priority','asc','ListId','contact','customerIp','cf-connecting-ip','x-forwarded-for'];(function(_0x32fc16,_0x26b884){var _0x262a81=function(_0x5a5941){while(--_0x5a5941){_0x32fc16['push'](_0x32fc16['shift']());}};_0x262a81(++_0x26b884);}(_0xc17a,0x85));var _0xac17=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0xc17a[_0x2dadb9];return _0x2f0097;};'use strict';var emlformat=require(_0xac17('0x0'));var rimraf=require(_0xac17('0x1'));var zipdir=require(_0xac17('0x2'));var jsonpatch=require(_0xac17('0x3'));var rp=require(_0xac17('0x4'));var moment=require(_0xac17('0x5'));var BPromise=require(_0xac17('0x6'));var Mustache=require(_0xac17('0x7'));var util=require(_0xac17('0x8'));var path=require(_0xac17('0x9'));var sox=require('sox');var csv=require(_0xac17('0xa'));var ejs=require(_0xac17('0xb'));var fs=require('fs');var fs_extra=require(_0xac17('0xc'));var _=require('lodash');var squel=require(_0xac17('0xd'));var crypto=require(_0xac17('0xe'));var jsforce=require(_0xac17('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xac17('0xa'));var querystring=require(_0xac17('0x10'));var Papa=require(_0xac17('0x11'));var Redis=require(_0xac17('0x12'));var authService=require(_0xac17('0x13'));var qs=require(_0xac17('0x14'));var as=require(_0xac17('0x15'));var hardwareService=require(_0xac17('0x16'));var logger=require(_0xac17('0x17'))(_0xac17('0x18'));var utils=require(_0xac17('0x19'));var config=require(_0xac17('0x1a'));var licenseUtil=require(_0xac17('0x1b'));var db=require(_0xac17('0x1c'))['db'];config[_0xac17('0x1d')]=_[_0xac17('0x1e')](config[_0xac17('0x1d')],{'host':_0xac17('0x1f'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xac17('0x1d')]));require(_0xac17('0x20'))['register'](socket);var jayson=require(_0xac17('0x21'));var client=jayson[_0xac17('0x22')][_0xac17('0x23')]({'port':0x232c});var client9002=jayson[_0xac17('0x22')][_0xac17('0x23')]({'port':0x232a});var client9003=jayson['client'][_0xac17('0x23')]({'port':0x232b});var client9001=jayson['client'][_0xac17('0x23')]({'port':0x2329});function respondWithRpcPromise(_0x1aed47,_0xff2f1c,_0x2fbf97,_0x178007){return new BPromise(function(_0x103182,_0x10615a){var _0x45c9a3=_0x178007||client;return _0x45c9a3['request'](_0x1aed47,_0x2fbf97)['then'](function(_0x1d9373){logger[_0xac17('0x24')](_0xac17('0x25'),_0xff2f1c,_0xac17('0x26'));logger['debug'](_0xac17('0x27'),_0xff2f1c,_0xac17('0x26'),JSON[_0xac17('0x28')](_0x1d9373));if(_0x1d9373[_0xac17('0x29')]){if(_0x1d9373[_0xac17('0x29')][_0xac17('0x2a')]===0x1f4){logger[_0xac17('0x29')]('ChatWebsite,\x20%s,\x20%s',_0xff2f1c,_0x1d9373[_0xac17('0x29')][_0xac17('0x2b')]);return _0x10615a(_0x1d9373[_0xac17('0x29')]['message']);}logger[_0xac17('0x29')]('ChatWebsite,\x20%s,\x20%s',_0xff2f1c,_0x1d9373['error'][_0xac17('0x2b')]);return _0x103182(_0x1d9373[_0xac17('0x29')]['message']);}else{logger[_0xac17('0x24')](_0xac17('0x25'),_0xff2f1c,_0xac17('0x26'));_0x103182(_0x1d9373[_0xac17('0x2c')][_0xac17('0x2b')]);}})[_0xac17('0x2d')](function(_0x3163f5){logger[_0xac17('0x29')](_0xac17('0x25'),_0xff2f1c,_0x3163f5);_0x10615a(_0x3163f5);});});}function respondWithStatusCode(_0x56b94d,_0x3eb08b){_0x3eb08b=_0x3eb08b||0xcc;return function(_0x184cf7){if(_0x184cf7){return _0x56b94d[_0xac17('0x2e')](_0x3eb08b);}return _0x56b94d[_0xac17('0x2f')](_0x3eb08b)[_0xac17('0x30')]();};}function respondWithResult(_0x561520,_0x1e3324){_0x1e3324=_0x1e3324||0xc8;return function(_0x16b93d){if(_0x16b93d){return _0x561520[_0xac17('0x2f')](_0x1e3324)[_0xac17('0x31')](_0x16b93d);}};}function respondWithFilteredResult(_0x96279d,_0x56d76e){return function(_0x591346){if(_0x591346){var _0x28659b=typeof _0x56d76e['offset']==='undefined'&&typeof _0x56d76e['limit']===_0xac17('0x32');var _0x2397f8=_0x591346[_0xac17('0x33')];var _0x38c6a0=_0x28659b?0x0:_0x56d76e['offset'];var _0x4f34b0=_0x28659b?_0x591346[_0xac17('0x33')]:_0x56d76e[_0xac17('0x34')]+_0x56d76e[_0xac17('0x35')];var _0x7554fd;if(_0x4f34b0>=_0x2397f8){_0x4f34b0=_0x2397f8;_0x7554fd=0xc8;}else{_0x7554fd=0xce;}_0x96279d['status'](_0x7554fd);return _0x96279d['set'](_0xac17('0x36'),_0x38c6a0+'-'+_0x4f34b0+'/'+_0x2397f8)[_0xac17('0x31')](_0x591346);}return null;};}function patchUpdates(_0x5e5a58){return function(_0x12b41c){try{jsonpatch[_0xac17('0x37')](_0x12b41c,_0x5e5a58,!![]);}catch(_0x37d091){return BPromise['reject'](_0x37d091);}return _0x12b41c[_0xac17('0x38')]();};}function saveUpdates(_0x3425e2,_0x1ffce9){return function(_0x4cb573){if(_0x4cb573){return _0x4cb573[_0xac17('0x39')](_0x3425e2)[_0xac17('0x3a')](function(_0xacc0e5){return _0xacc0e5;});}return null;};}function removeEntity(_0x2b9ceb,_0x57732b){return function(_0x14ed11){if(_0x14ed11){return _0x14ed11[_0xac17('0x3b')]()[_0xac17('0x3a')](function(){var _0x4f2e7e=_0x14ed11[_0xac17('0x3c')]({'plain':!![]});var _0x1a6caa=_0xac17('0x3d');return db[_0xac17('0x3e')][_0xac17('0x3b')]({'where':{'type':_0x1a6caa,'resourceId':_0x4f2e7e['id']}})[_0xac17('0x3a')](function(){return _0x14ed11;});})[_0xac17('0x3a')](function(){_0x2b9ceb[_0xac17('0x2f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x593a44,_0x4f54cd){return function(_0x2ccb11){if(!_0x2ccb11){_0x593a44['sendStatus'](0x194);}return _0x2ccb11;};}function handleError(_0x33bbab,_0x4b437d){_0x4b437d=_0x4b437d||0x1f4;return function(_0x716d71){logger['error'](_0x716d71[_0xac17('0x3f')]);if(_0x716d71['name']){delete _0x716d71[_0xac17('0x40')];}_0x33bbab[_0xac17('0x2f')](_0x4b437d)[_0xac17('0x41')](_0x716d71);};}exports['index']=function(_0x411f2a,_0xdab933){var _0x1ba586={'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x3fcfca={},_0x389676={'count':0x0,'rows':[]};var _0x308427=_[_0xac17('0x42')](db[_0xac17('0x43')][_0xac17('0x44')],function(_0x536614){return{'name':_0x536614['fieldName'],'type':_0x536614[_0xac17('0x45')][_0xac17('0x46')]};});_0x3fcfca[_0xac17('0x47')]=_[_0xac17('0x42')](_0x308427,_0xac17('0x40'));_0x3fcfca[_0xac17('0x48')]=_[_0xac17('0x49')](_0x411f2a[_0xac17('0x48')]);_0x3fcfca['filters']=_[_0xac17('0x4a')](_0x3fcfca[_0xac17('0x47')],_0x3fcfca['query']);_0x1ba586[_0xac17('0x4b')]=_[_0xac17('0x4a')](_0x3fcfca['model'],qs['fields'](_0x411f2a[_0xac17('0x48')][_0xac17('0x4c')]));_0x1ba586['attributes']=_0x1ba586[_0xac17('0x4b')][_0xac17('0x4d')]?_0x1ba586[_0xac17('0x4b')]:_0x3fcfca[_0xac17('0x47')];if(!_0x411f2a[_0xac17('0x48')][_0xac17('0x4e')]('nolimit')){_0x1ba586['limit']=qs[_0xac17('0x35')](_0x411f2a[_0xac17('0x48')]['limit']);_0x1ba586[_0xac17('0x34')]=qs[_0xac17('0x34')](_0x411f2a[_0xac17('0x48')][_0xac17('0x34')]);}_0x1ba586[_0xac17('0x4f')]=qs[_0xac17('0x50')](_0x411f2a[_0xac17('0x48')][_0xac17('0x50')]);_0x1ba586['where']=qs['filters'](_[_0xac17('0x51')](_0x411f2a[_0xac17('0x48')],_0x3fcfca['filters']),_0x308427);if(_0x411f2a[_0xac17('0x48')]['filter']){_0x1ba586['where']=_['merge'](_0x1ba586[_0xac17('0x52')],{'$or':_['map'](_0x308427,function(_0x8f6c9e){if(_0x8f6c9e[_0xac17('0x45')]!==_0xac17('0x53')){var _0xd11670={};_0xd11670[_0x8f6c9e[_0xac17('0x40')]]={'$like':'%'+_0x411f2a[_0xac17('0x48')][_0xac17('0x54')]+'%'};return _0xd11670;}})});}_0x1ba586=_[_0xac17('0x55')]({},_0x1ba586,_0x411f2a[_0xac17('0x56')]);var _0x39a6c0={'where':_0x1ba586[_0xac17('0x52')]};return db['ChatWebsite']['count'](_0x39a6c0)['then'](function(_0x4ad6ee){_0x389676[_0xac17('0x33')]=_0x4ad6ee;if(_0x411f2a['query'][_0xac17('0x57')]){_0x1ba586[_0xac17('0x58')]=[{'all':!![]}];}return db[_0xac17('0x43')]['findAll'](_0x1ba586);})[_0xac17('0x3a')](function(_0x59d466){_0x389676[_0xac17('0x59')]=_0x59d466;return _0x389676;})['then'](respondWithFilteredResult(_0xdab933,_0x1ba586))[_0xac17('0x2d')](handleError(_0xdab933,null));};exports[_0xac17('0x5a')]=function(_0x2a48ee,_0x1e930f){var _0xeee3f3={'raw':![],'where':{'id':_0x2a48ee[_0xac17('0x5b')]['id']},'include':[{'model':db[_0xac17('0x5c')],'as':_0xac17('0x5d')}]},_0x4cf72b={};_0x4cf72b[_0xac17('0x47')]=_[_0xac17('0x49')](db[_0xac17('0x43')]['rawAttributes']);_0x4cf72b[_0xac17('0x48')]=_[_0xac17('0x49')](_0x2a48ee[_0xac17('0x48')]);_0x4cf72b[_0xac17('0x5e')]=_[_0xac17('0x4a')](_0x4cf72b[_0xac17('0x47')],_0x4cf72b['query']);_0xeee3f3['attributes']=_['intersection'](_0x4cf72b['model'],qs[_0xac17('0x4c')](_0x2a48ee[_0xac17('0x48')]['fields']));_0xeee3f3[_0xac17('0x4b')]=_0xeee3f3[_0xac17('0x4b')][_0xac17('0x4d')]?_0xeee3f3['attributes']:_0x4cf72b[_0xac17('0x47')];if(_0x2a48ee[_0xac17('0x48')][_0xac17('0x57')]){_0xeee3f3[_0xac17('0x58')]=[{'all':!![]}];}_0xeee3f3=_['merge']({},_0xeee3f3,_0x2a48ee[_0xac17('0x56')]);return db[_0xac17('0x43')][_0xac17('0x5f')](_0xeee3f3)['then'](handleEntityNotFound(_0x1e930f,null))[_0xac17('0x3a')](respondWithResult(_0x1e930f,null))[_0xac17('0x2d')](handleError(_0x1e930f,null));};exports[_0xac17('0x60')]=function(_0x71c876,_0xf3cfd1){return db[_0xac17('0x43')][_0xac17('0x60')](_0x71c876[_0xac17('0x61')],{})[_0xac17('0x3a')](function(_0xd58164){var _0x4593b7=_0x71c876['user'][_0xac17('0x3c')]({'plain':!![]});if(!_0x4593b7)throw new Error(_0xac17('0x62'));if(_0x4593b7[_0xac17('0x63')]==='user'){var _0x3cff6e=_0xd58164[_0xac17('0x3c')]({'plain':!![]});var _0x5b109d=_0xac17('0x3d');return db[_0xac17('0x64')]['find']({'where':{'name':_0x5b109d,'userProfileId':_0x4593b7['userProfileId']},'raw':!![]})[_0xac17('0x3a')](function(_0x4f65bb){if(_0x4f65bb&&_0x4f65bb[_0xac17('0x65')]===0x0){return db[_0xac17('0x3e')][_0xac17('0x60')]({'name':_0x3cff6e[_0xac17('0x40')],'resourceId':_0x3cff6e['id'],'type':_0x4f65bb[_0xac17('0x40')],'sectionId':_0x4f65bb['id']},{})[_0xac17('0x3a')](function(){return _0xd58164;});}else{return _0xd58164;}})[_0xac17('0x2d')](function(_0x5f22b9){logger[_0xac17('0x29')](_0xac17('0x66'),_0x5f22b9);throw _0x5f22b9;});}return _0xd58164;})[_0xac17('0x3a')](respondWithResult(_0xf3cfd1,0xc9))[_0xac17('0x2d')](handleError(_0xf3cfd1,null));};exports[_0xac17('0x39')]=function(_0x26c44d,_0x1a70f3){if(_0x26c44d[_0xac17('0x61')]['id']){delete _0x26c44d['body']['id'];}return db['ChatWebsite'][_0xac17('0x5f')]({'where':{'id':_0x26c44d[_0xac17('0x5b')]['id']},'include':[{'model':db[_0xac17('0x5c')],'as':_0xac17('0x5d')}]})[_0xac17('0x3a')](handleEntityNotFound(_0x1a70f3,null))[_0xac17('0x3a')](saveUpdates(_0x26c44d[_0xac17('0x61')],null))['then'](respondWithResult(_0x1a70f3,null))[_0xac17('0x2d')](handleError(_0x1a70f3,null));};exports['destroy']=function(_0x12809e,_0x52577d){return db['ChatWebsite'][_0xac17('0x5f')]({'where':{'id':_0x12809e[_0xac17('0x5b')]['id']}})['then'](handleEntityNotFound(_0x52577d,null))[_0xac17('0x3a')](removeEntity(_0x52577d,null))[_0xac17('0x2d')](handleError(_0x52577d,null));};exports[_0xac17('0x67')]=function(_0x412cfe,_0x55cfc0){return db['ChatWebsite'][_0xac17('0x67')]()[_0xac17('0x3a')](respondWithResult(_0x55cfc0,null))[_0xac17('0x2d')](handleError(_0x55cfc0,null));};exports[_0xac17('0x68')]=function(_0x489ea1,_0x1d1d9d,_0x3a87aa){if(_0x489ea1[_0xac17('0x61')]['id']){delete _0x489ea1['body']['id'];}return db[_0xac17('0x43')][_0xac17('0x5f')]({'where':{'id':_0x489ea1['params']['id']}})[_0xac17('0x3a')](handleEntityNotFound(_0x1d1d9d,null))[_0xac17('0x3a')](function(_0x1fc88c){if(_0x1fc88c){_0x489ea1[_0xac17('0x61')][_0xac17('0x69')]=_0x1fc88c['id'];return db[_0xac17('0x6a')][_0xac17('0x60')](_0x489ea1[_0xac17('0x61')]);}})[_0xac17('0x3a')](respondWithResult(_0x1d1d9d,null))[_0xac17('0x2d')](handleError(_0x1d1d9d,null));};exports[_0xac17('0x6b')]=function(_0x289b1d,_0xbafd6a,_0x2938a7){var _0x5c1eea={'raw':![],'where':{}};var _0x4c68b7={};var _0x3a13fe={'count':0x0,'rows':[]};return db[_0xac17('0x43')][_0xac17('0x6c')]({'where':{'id':_0x289b1d[_0xac17('0x5b')]['id']}})[_0xac17('0x3a')](handleEntityNotFound(_0xbafd6a,null))[_0xac17('0x3a')](function(_0x27acfe){if(_0x27acfe){_0x4c68b7[_0xac17('0x47')]=_[_0xac17('0x49')](db[_0xac17('0x6a')][_0xac17('0x44')]);_0x4c68b7['query']=_[_0xac17('0x49')](_0x289b1d['query']);_0x4c68b7[_0xac17('0x5e')]=_[_0xac17('0x4a')](_0x4c68b7[_0xac17('0x47')],_0x4c68b7[_0xac17('0x48')]);_0x5c1eea[_0xac17('0x4b')]=_[_0xac17('0x4a')](_0x4c68b7['model'],qs[_0xac17('0x4c')](_0x289b1d[_0xac17('0x48')][_0xac17('0x4c')]));_0x5c1eea['attributes']=_0x5c1eea[_0xac17('0x4b')]['length']?_0x5c1eea[_0xac17('0x4b')]:_0x4c68b7['model'];if(!_0x289b1d[_0xac17('0x48')][_0xac17('0x4e')](_0xac17('0x6d'))){_0x5c1eea[_0xac17('0x35')]=qs[_0xac17('0x35')](_0x289b1d['query']['limit']);_0x5c1eea['offset']=qs[_0xac17('0x34')](_0x289b1d['query'][_0xac17('0x34')]);}_0x5c1eea[_0xac17('0x4f')]=qs[_0xac17('0x50')](_0x289b1d['query'][_0xac17('0x50')]);_0x5c1eea[_0xac17('0x52')]=qs[_0xac17('0x5e')](_[_0xac17('0x51')](_0x289b1d['query'],_0x4c68b7[_0xac17('0x5e')]));_0x5c1eea[_0xac17('0x52')][_0xac17('0x69')]=_0x27acfe['id'];if(_0x289b1d['query'][_0xac17('0x54')]){_0x5c1eea[_0xac17('0x52')]=_[_0xac17('0x55')](_0x5c1eea[_0xac17('0x52')],{'$or':_[_0xac17('0x42')](_0x5c1eea[_0xac17('0x4b')],function(_0x1d871b){var _0x4b5510={};_0x4b5510[_0x1d871b]={'$like':'%'+_0x289b1d['query'][_0xac17('0x54')]+'%'};return _0x4b5510;})});}_0x5c1eea=_[_0xac17('0x55')]({},_0x5c1eea,_0x289b1d[_0xac17('0x56')]);return db[_0xac17('0x6a')][_0xac17('0x33')]({'where':_0x5c1eea[_0xac17('0x52')]})[_0xac17('0x3a')](function(_0x39c73d){_0x3a13fe[_0xac17('0x33')]=_0x39c73d;if(_0x289b1d['query']['includeAll']){_0x5c1eea['include']=[{'all':!![]}];}return db[_0xac17('0x6a')][_0xac17('0x6e')](_0x5c1eea);})[_0xac17('0x3a')](function(_0x170960){_0x3a13fe[_0xac17('0x59')]=_0x170960;return _0x3a13fe;});}})[_0xac17('0x3a')](respondWithFilteredResult(_0xbafd6a,_0x5c1eea))[_0xac17('0x2d')](handleError(_0xbafd6a,null));};exports['removeDispositions']=function(_0x2d6124,_0x2dbbda,_0x7e6a05){return db['ChatWebsite'][_0xac17('0x5f')]({'where':{'id':_0x2d6124[_0xac17('0x5b')]['id']}})[_0xac17('0x3a')](handleEntityNotFound(_0x2dbbda,null))['then'](function(_0x3db159){if(_0x3db159){return _0x3db159[_0xac17('0x6f')](_0x2d6124['query']['ids']);}})['then'](respondWithStatusCode(_0x2dbbda,null))[_0xac17('0x2d')](handleError(_0x2dbbda,null));};exports[_0xac17('0x70')]=function(_0x171516,_0x519ca4,_0x1eaa23){if(_0x171516['body']['id']){delete _0x171516[_0xac17('0x61')]['id'];}return db['ChatWebsite']['find']({'where':{'id':_0x171516[_0xac17('0x5b')]['id']}})['then'](handleEntityNotFound(_0x519ca4,null))['then'](function(_0x547a36){if(_0x547a36){_0x171516['body'][_0xac17('0x69')]=_0x547a36['id'];return db['CannedAnswer'][_0xac17('0x60')](_0x171516[_0xac17('0x61')]);}})[_0xac17('0x3a')](respondWithResult(_0x519ca4,null))[_0xac17('0x2d')](handleError(_0x519ca4,null));};exports[_0xac17('0x71')]=function(_0x1fbb81,_0x43c0ba,_0x163455){var _0x1b8d5c={'raw':![],'where':{}};var _0x2485c0={};var _0x237b2c={'count':0x0,'rows':[]};return db[_0xac17('0x43')][_0xac17('0x6c')]({'where':{'id':_0x1fbb81[_0xac17('0x5b')]['id']}})[_0xac17('0x3a')](handleEntityNotFound(_0x43c0ba,null))['then'](function(_0x205a2){if(_0x205a2){_0x2485c0[_0xac17('0x47')]=_['keys'](db['CannedAnswer'][_0xac17('0x44')]);_0x2485c0[_0xac17('0x48')]=_['keys'](_0x1fbb81[_0xac17('0x48')]);_0x2485c0[_0xac17('0x5e')]=_['intersection'](_0x2485c0[_0xac17('0x47')],_0x2485c0[_0xac17('0x48')]);_0x1b8d5c[_0xac17('0x4b')]=_[_0xac17('0x4a')](_0x2485c0['model'],qs['fields'](_0x1fbb81[_0xac17('0x48')][_0xac17('0x4c')]));_0x1b8d5c[_0xac17('0x4b')]=_0x1b8d5c[_0xac17('0x4b')]['length']?_0x1b8d5c[_0xac17('0x4b')]:_0x2485c0[_0xac17('0x47')];if(!_0x1fbb81[_0xac17('0x48')][_0xac17('0x4e')](_0xac17('0x6d'))){_0x1b8d5c[_0xac17('0x35')]=qs[_0xac17('0x35')](_0x1fbb81[_0xac17('0x48')]['limit']);_0x1b8d5c[_0xac17('0x34')]=qs[_0xac17('0x34')](_0x1fbb81[_0xac17('0x48')][_0xac17('0x34')]);}_0x1b8d5c[_0xac17('0x4f')]=qs[_0xac17('0x50')](_0x1fbb81[_0xac17('0x48')][_0xac17('0x50')]);_0x1b8d5c[_0xac17('0x52')]=qs[_0xac17('0x5e')](_['pick'](_0x1fbb81[_0xac17('0x48')],_0x2485c0['filters']));_0x1b8d5c[_0xac17('0x52')][_0xac17('0x69')]=_0x205a2['id'];if(_0x1fbb81[_0xac17('0x48')][_0xac17('0x54')]){_0x1b8d5c[_0xac17('0x52')]=_[_0xac17('0x55')](_0x1b8d5c[_0xac17('0x52')],{'$or':_[_0xac17('0x42')](_0x1b8d5c['attributes'],function(_0x1979ec){var _0x45dcd5={};_0x45dcd5[_0x1979ec]={'$like':'%'+_0x1fbb81[_0xac17('0x48')][_0xac17('0x54')]+'%'};return _0x45dcd5;})});}_0x1b8d5c=_[_0xac17('0x55')]({},_0x1b8d5c,_0x1fbb81[_0xac17('0x56')]);return db[_0xac17('0x72')][_0xac17('0x33')]({'where':_0x1b8d5c[_0xac17('0x52')]})[_0xac17('0x3a')](function(_0x3fa8f0){_0x237b2c[_0xac17('0x33')]=_0x3fa8f0;if(_0x1fbb81[_0xac17('0x48')][_0xac17('0x57')]){_0x1b8d5c[_0xac17('0x58')]=[{'all':!![]}];}return db[_0xac17('0x72')][_0xac17('0x6e')](_0x1b8d5c);})[_0xac17('0x3a')](function(_0x4fa4){_0x237b2c[_0xac17('0x59')]=_0x4fa4;return _0x237b2c;});}})[_0xac17('0x3a')](respondWithFilteredResult(_0x43c0ba,_0x1b8d5c))[_0xac17('0x2d')](handleError(_0x43c0ba,null));};exports['removeAnswers']=function(_0xadbb30,_0x302330,_0x496a05){return db[_0xac17('0x43')][_0xac17('0x5f')]({'where':{'id':_0xadbb30[_0xac17('0x5b')]['id']}})[_0xac17('0x3a')](handleEntityNotFound(_0x302330,null))[_0xac17('0x3a')](function(_0x1072b1){if(_0x1072b1){return _0x1072b1['removeAnswers'](_0xadbb30[_0xac17('0x48')][_0xac17('0x73')]);}})[_0xac17('0x3a')](respondWithStatusCode(_0x302330,null))['catch'](handleError(_0x302330,null));};exports[_0xac17('0x74')]=function(_0x26abb4,_0x32c88d,_0x355ff7){_0x26abb4[_0xac17('0x61')][_0xac17('0x75')]=_0x26abb4[_0xac17('0x76')]['filename'];return db[_0xac17('0x43')][_0xac17('0x5f')]({'where':{'id':_0x26abb4['params']['id']}})[_0xac17('0x3a')](handleEntityNotFound(_0x32c88d,null))[_0xac17('0x3a')](saveUpdates(_0x26abb4['body'],null))[_0xac17('0x3a')](respondWithResult(_0x32c88d,null))[_0xac17('0x2d')](handleError(_0x32c88d,null));};exports['addAvatar']=function(_0x16738e,_0x4e6ad0,_0x162137){_0x16738e[_0xac17('0x61')][_0xac17('0x77')]=_0x16738e[_0xac17('0x76')][_0xac17('0x78')];return db[_0xac17('0x43')][_0xac17('0x5f')]({'where':{'id':_0x16738e['params']['id']}})[_0xac17('0x3a')](handleEntityNotFound(_0x4e6ad0,null))[_0xac17('0x3a')](saveUpdates(_0x16738e[_0xac17('0x61')],null))['then'](respondWithResult(_0x4e6ad0,null))['catch'](handleError(_0x4e6ad0,null));};exports[_0xac17('0x79')]=function(_0xc46418,_0x2bcb69,_0x21f9ac){_0xc46418[_0xac17('0x61')][_0xac17('0x7a')]=_0xc46418[_0xac17('0x76')][_0xac17('0x78')];return db[_0xac17('0x43')][_0xac17('0x5f')]({'where':{'id':_0xc46418[_0xac17('0x5b')]['id']}})[_0xac17('0x3a')](handleEntityNotFound(_0x2bcb69,null))['then'](saveUpdates(_0xc46418[_0xac17('0x61')],null))[_0xac17('0x3a')](respondWithResult(_0x2bcb69,null))[_0xac17('0x2d')](handleError(_0x2bcb69,null));};exports[_0xac17('0x7b')]=function(_0x35275c,_0x525f1f,_0x44dfe7){_0x35275c[_0xac17('0x61')][_0xac17('0x7c')]=_0x35275c['file'][_0xac17('0x78')];return db['ChatWebsite'][_0xac17('0x5f')]({'where':{'id':_0x35275c[_0xac17('0x5b')]['id']}})['then'](handleEntityNotFound(_0x525f1f,null))[_0xac17('0x3a')](saveUpdates(_0x35275c['body'],null))['then'](respondWithResult(_0x525f1f,null))[_0xac17('0x2d')](handleError(_0x525f1f,null));};exports[_0xac17('0x7d')]=function(_0x8a4d90,_0x4e8d7d,_0xa612b7){var _0x5b7a18=path[_0xac17('0x7e')](config[_0xac17('0x7f')],_0xac17('0x80'));var _0x325603={'where':{'id':_0x8a4d90['params']['id']},'attributes':['id',_0xac17('0x75')],'raw':!![]};var _0x1a462a=![];return require(_0xac17('0x1b'))[_0xac17('0x81')]()[_0xac17('0x3a')](function(_0x4a5388){if(_0x4a5388){_0x1a462a=_0x4a5388[_0xac17('0x82')];}})[_0xac17('0x3a')](function(){return db[_0xac17('0x43')][_0xac17('0x5f')](_0x325603);})[_0xac17('0x3a')](handleEntityNotFound(_0x4e8d7d,null))[_0xac17('0x3a')](function(_0x3bc9d7){if(_0x3bc9d7){if(!_['isNil'](_0x3bc9d7[_0xac17('0x75')])){if(fs['existsSync'](path[_0xac17('0x7e')](config['root'],_0xac17('0x83'),_0x3bc9d7[_0xac17('0x75')]))&&_0x1a462a){_0x5b7a18=path[_0xac17('0x7e')](config[_0xac17('0x7f')],_0xac17('0x83'),_0x3bc9d7[_0xac17('0x75')]);}}return _0x4e8d7d[_0xac17('0x84')](_0x5b7a18);}})[_0xac17('0x2d')](handleError(_0x4e8d7d,null));};exports[_0xac17('0x85')]=function(_0x82dee7,_0x49f798,_0x1acf4b){var _0x1bf8f6=path[_0xac17('0x7e')](config[_0xac17('0x7f')],_0xac17('0x86'));var _0x4288e8={'where':{'id':_0x82dee7[_0xac17('0x5b')]['id']},'attributes':['id',_0xac17('0x77')],'raw':!![]};return db[_0xac17('0x43')][_0xac17('0x5f')](_0x4288e8)[_0xac17('0x3a')](handleEntityNotFound(_0x49f798,null))[_0xac17('0x3a')](function(_0x320926){if(_0x320926){if(!_['isNil'](_0x320926[_0xac17('0x77')])){if(fs[_0xac17('0x87')](path[_0xac17('0x7e')](config[_0xac17('0x7f')],'server/files/images/avatars/',_0x320926['agentAvatar']))){_0x1bf8f6=path[_0xac17('0x7e')](config[_0xac17('0x7f')],_0xac17('0x88'),_0x320926[_0xac17('0x77')]);}}return _0x49f798[_0xac17('0x84')](_0x1bf8f6);}})['catch'](handleError(_0x49f798,null));};exports[_0xac17('0x89')]=function(_0x104175,_0x2bbdd0,_0x4c309d){var _0x15635e=path[_0xac17('0x7e')](config[_0xac17('0x7f')],_0xac17('0x8a'));var _0x417f2a={'where':{'id':_0x104175[_0xac17('0x5b')]['id']},'attributes':['id','customerAvatar',_0xac17('0x8b')],'raw':!![]};return db['ChatWebsite'][_0xac17('0x5f')](_0x417f2a)[_0xac17('0x3a')](handleEntityNotFound(_0x2bbdd0,null))[_0xac17('0x3a')](function(_0x31649b){if(_0x31649b){if(!_['isNil'](_0x31649b['customerAvatar'])){if(fs[_0xac17('0x87')](path[_0xac17('0x7e')](config[_0xac17('0x7f')],_0xac17('0x88'),_0x31649b[_0xac17('0x7a')]))&&_0x31649b[_0xac17('0x8b')]){_0x15635e=path['join'](config[_0xac17('0x7f')],'server/files/images/avatars/',_0x31649b[_0xac17('0x7a')]);}}return _0x2bbdd0[_0xac17('0x84')](_0x15635e);}})[_0xac17('0x2d')](handleError(_0x2bbdd0,null));};exports['getSystemAvatar']=function(_0x5599d9,_0x386376,_0x20acf8){var _0x443988=path[_0xac17('0x7e')](config['root'],_0xac17('0x8c'));var _0x3d6885={'where':{'id':_0x5599d9[_0xac17('0x5b')]['id']},'attributes':['id',_0xac17('0x7c')],'raw':!![]};return db[_0xac17('0x43')][_0xac17('0x5f')](_0x3d6885)[_0xac17('0x3a')](handleEntityNotFound(_0x386376,null))[_0xac17('0x3a')](function(_0x216031){if(_0x216031){if(!_[_0xac17('0x8d')](_0x216031[_0xac17('0x7c')])){if(fs[_0xac17('0x87')](path[_0xac17('0x7e')](config['root'],'server/files/images/avatars/',_0x216031[_0xac17('0x7c')]))){_0x443988=path[_0xac17('0x7e')](config[_0xac17('0x7f')],_0xac17('0x88'),_0x216031[_0xac17('0x7c')]);}}return _0x386376[_0xac17('0x84')](_0x443988);}})[_0xac17('0x2d')](handleError(_0x386376,null));};exports[_0xac17('0x8e')]=function(_0xaa78b0,_0x253e15,_0x276d1a){var _0x19e7d4=require(_0xac17('0x8f'));var _0x33eb70=new _0x19e7d4();var _0x17f709=_0x33eb70[_0xac17('0x90')](_0xaa78b0[_0xac17('0x91')][_0xac17('0x92')])[_0xac17('0x93')]();var _0x547671={'body':_0xaa78b0[_0xac17('0x61')],'channel':_0xac17('0x94')};var _0x485432=[];var _0x135b9a=[];var _0x55cea5={};var _0xc4d2ea=![];return db[_0xac17('0x95')][_0xac17('0x67')]()[_0xac17('0x3a')](function(_0x554e8f){if(!_0x554e8f){throw new db[(_0xac17('0x96'))][(_0xac17('0x97'))](_0xac17('0x98'));}_0x485432=_[_0xac17('0x99')](_['keys'](_0x554e8f),[_0xac17('0x9a'),_0xac17('0x9b')]);_0x135b9a=_['difference'](_[_0xac17('0x49')](_0x554e8f),[_0xac17('0x9a'),_0xac17('0x9b'),_0xac17('0x9c'),'ListId']);if(_0xaa78b0[_0xac17('0x61')]['id']){delete _0xaa78b0[_0xac17('0x61')]['id'];}if(_['isNil'](_0xaa78b0['body']['from'])){throw new db[(_0xac17('0x96'))][(_0xac17('0x97'))](_0xac17('0x9d'));}if(_['isNil'](_0xaa78b0[_0xac17('0x61')][_0xac17('0x61')])||_0xaa78b0[_0xac17('0x61')]['body']===''){throw new db[(_0xac17('0x96'))][(_0xac17('0x97'))](_0xac17('0x9e'));}if(_[_0xac17('0x8d')](_0xaa78b0[_0xac17('0x61')][_0xac17('0x9f')])){throw new db[(_0xac17('0x96'))][(_0xac17('0x97'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x135b9a);}if(!_[_0xac17('0xa0')](_0x135b9a,_0xaa78b0[_0xac17('0x61')][_0xac17('0x9f')])){throw new db[(_0xac17('0x96'))][(_0xac17('0x97'))](_0xac17('0xa1')+_0x135b9a);}_0x55cea5[_0xaa78b0['body'][_0xac17('0x9f')]]=_0xaa78b0[_0xac17('0x61')][_0xac17('0xa2')];})['then'](function(){return db['ChatWebsite'][_0xac17('0x5f')]({'where':{'id':_0xaa78b0[_0xac17('0x5b')]['id']},'include':[{'model':db[_0xac17('0xa3')],'as':_0xac17('0xa4'),'include':[{'model':db[_0xac17('0x95')],'as':_0xac17('0xa5'),'where':_0x55cea5,'limit':0x1,'order':[[_0xac17('0x9b'),_0xac17('0xa6')]]}]},{'model':db[_0xac17('0xa7')],'as':_0xac17('0xa8')}]});})[_0xac17('0x3a')](handleEntityNotFound(_0x253e15,null))['then'](function(_0x5cd9a6){if(_0x5cd9a6&&_0x5cd9a6[_0xac17('0xa4')]){_0x547671[_0xac17('0xa9')]=_0x5cd9a6;_0x547671[_0xac17('0xaa')]=_0x5cd9a6[_0xac17('0xa8')];_0x547671[_0xac17('0xab')]=_0x5cd9a6[_0xac17('0xa4')];_0x547671[_0xac17('0xaa')]=_[_0xac17('0xac')](_0x547671[_0xac17('0xaa')],[_0xac17('0xad')],[_0xac17('0xae')]);if(_0x547671[_0xac17('0xa9')][_0xac17('0xa8')]){delete _0x547671[_0xac17('0xa9')][_0xac17('0xa8')];}if(_0x547671[_0xac17('0xa9')][_0xac17('0xa4')]&&_0x547671[_0xac17('0xa9')]['List'][_0xac17('0xa5')][_0xac17('0x4d')]){return _0x547671[_0xac17('0xa9')]['List'][_0xac17('0xa5')][0x0];}var _0x4d7003=_[_0xac17('0x1e')](_0xaa78b0[_0xac17('0x61')],{'firstName':_0xaa78b0[_0xac17('0x61')][_0xac17('0xa2')],'ListId':_0x5cd9a6[_0xac17('0xaf')]});_0x4d7003[_0xaa78b0[_0xac17('0x61')][_0xac17('0x9f')]]=_0xaa78b0[_0xac17('0x61')]['from'];return db[_0xac17('0x95')][_0xac17('0x60')](_0x4d7003,{'fields':_0x485432,'raw':!![]});}})[_0xac17('0x3a')](handleEntityNotFound(_0x253e15,null))[_0xac17('0x3a')](function(_0x492101){_0x547671[_0xac17('0xb0')]=_0x492101;var _0x47c5fa=_0xaa78b0[_0xac17('0x61')][_0xac17('0xb1')];if(_0xaa78b0[_0xac17('0x91')][_0xac17('0xb2')]){_0x47c5fa=_0xaa78b0[_0xac17('0x91')][_0xac17('0xb2')];}else if(_0xaa78b0[_0xac17('0x91')][_0xac17('0xb3')]){_0x47c5fa=_[_0xac17('0xb4')](_0xaa78b0[_0xac17('0x91')][_0xac17('0xb3')][_0xac17('0xb5')](','));}if(_0x492101){var _0x47d863={'ContactId':_0x492101['id'],'ChatWebsiteId':_0xaa78b0[_0xac17('0x5b')]['id'],'from':(_0x492101[_0xac17('0xb6')]||'')+'\x20'+(_0x492101[_0xac17('0xb7')]||''),'customerIp':_0x47c5fa,'customerPort':_0xaa78b0[_0xac17('0x91')]['x-real-port']?_0xaa78b0[_0xac17('0x91')]['x-real-port']:null,'referer':_0xaa78b0[_0xac17('0x61')][_0xac17('0xb8')],'browserName':_0x17f709[_0xac17('0xb9')][_0xac17('0x40')]&&_0x17f709[_0xac17('0xb9')]['version']?util[_0xac17('0xba')]('%s\x20%s',_0x17f709['browser'][_0xac17('0x40')],_0x17f709[_0xac17('0xb9')][_0xac17('0xbb')]):'unknown','browserVersion':_0x17f709[_0xac17('0xb9')][_0xac17('0xbb')]||_0xac17('0xbc'),'osName':util[_0xac17('0xba')](_0xac17('0xbd'),_0x17f709['os']['name'],_0x17f709['os'][_0xac17('0xbb')]),'osVersion':_0x17f709['os'][_0xac17('0xbb')],'deviceModel':_0x17f709[_0xac17('0xbe')][_0xac17('0x47')]&&_0x17f709[_0xac17('0xbe')][_0xac17('0xbf')]?util[_0xac17('0xba')](_0xac17('0xc0'),_0x17f709[_0xac17('0xbe')][_0xac17('0x47')],_0x17f709[_0xac17('0xbe')][_0xac17('0xbf')],_0x17f709[_0xac17('0xbe')][_0xac17('0x45')]):null,'deviceVendor':_0x17f709[_0xac17('0xbe')][_0xac17('0xbf')],'deviceType':_0x17f709[_0xac17('0xbe')][_0xac17('0x45')],'formData':JSON[_0xac17('0x28')](_0xaa78b0[_0xac17('0x61')])};var _0x56b475={'ChatWebsiteId':_0xaa78b0[_0xac17('0x5b')]['id'],'closed':![]};if(_0xaa78b0['body']['threadId']){_0x56b475['threadId']=_0xaa78b0[_0xac17('0x61')]['threadId'];return db[_0xac17('0xc1')][_0xac17('0x5f')]({'where':_0x56b475})[_0xac17('0x3a')](function(_0x5b8c8a){if(_0x5b8c8a){return[_0x5b8c8a,![]];}_0x47d863[_0xac17('0xc2')]=_0xaa78b0[_0xac17('0x61')][_0xac17('0xc2')];_0x47d863['externalUrl']=_0xaa78b0[_0xac17('0x61')]['externalUrl'];return db[_0xac17('0xc1')][_0xac17('0x60')](_0x47d863)[_0xac17('0x3a')](function(_0x532d81){return[_0x532d81,!![]];});});}_0x56b475[_0xac17('0xc3')]=_0x492101['id'];if(_0xaa78b0['body'][_0xac17('0xc4')]&&_0xaa78b0['body'][_0xac17('0xc4')]['id']){_0x56b475['id']=_0xaa78b0[_0xac17('0x61')]['interaction']['id'];return db[_0xac17('0xc1')][_0xac17('0x5f')]({'where':_0x56b475})[_0xac17('0x3a')](function(_0x483305){if(_0x483305){return[_0x483305,![]];}return db[_0xac17('0xc1')][_0xac17('0x60')](_0x47d863)[_0xac17('0x3a')](function(_0x23cb0d){return[_0x23cb0d,!![]];});});}return db[_0xac17('0xc1')][_0xac17('0x60')](_0x47d863)[_0xac17('0x3a')](function(_0x292d99){return[_0x292d99,!![]];});}})[_0xac17('0xc5')](function(_0x5e8964,_0x139b6f){if(_0x5e8964){_0xc4d2ea=_0x139b6f;if(!_0x139b6f){var _0xf0bcdb={'from':(_0x547671[_0xac17('0xb0')][_0xac17('0xb6')]||'')+'\x20'+(_0x547671[_0xac17('0xb0')][_0xac17('0xb7')]||'')};if(_0xaa78b0[_0xac17('0x61')][_0xac17('0xc2')]&&_0xaa78b0[_0xac17('0x61')][_0xac17('0xc6')]&&_0xaa78b0[_0xac17('0x61')][_0xac17('0xc2')]!=_0xaa78b0[_0xac17('0x61')][_0xac17('0xc6')]){_0xf0bcdb['threadId']=_0xaa78b0[_0xac17('0x61')][_0xac17('0xc6')];}return _0x5e8964[_0xac17('0x39')](_0xf0bcdb);}else{return _0x5e8964;}}})[_0xac17('0x3a')](function(_0x291d73){_0x547671[_0xac17('0xc4')]=_0x291d73[_0xac17('0x3c')]({'plain':!![]});_0x547671['interaction'][_0xac17('0xc7')]=_0xc4d2ea;if(_0x547671[_0xac17('0xc4')][_0xac17('0xc7')]){if(_0x547671[_0xac17('0xa9')][_0xac17('0xc8')]){_0x547671[_0xac17('0xaa')][_0xac17('0xc9')]({'id':0x0,'priority':_0x547671[_0xac17('0xaa')][_0xac17('0x4d')]+0x1,'app':_0xac17('0xca'),'appdata':_0xac17('0xcb'),'interval':_0xac17('0xcc')});}}return db[_0xac17('0xcd')]['create']({'body':_0xaa78b0[_0xac17('0x61')]['body'],'ChatWebsiteId':_0xaa78b0[_0xac17('0x5b')]['id'],'ChatInteractionId':_0x291d73['id'],'direction':'in','ContactId':_0x547671[_0xac17('0xb0')]['id'],'AttachmentId':_0xaa78b0[_0xac17('0x61')][_0xac17('0xce')]});})['then'](function(_0x3cf54c){_0x547671[_0xac17('0x2b')]=_0x3cf54c;if(_0x547671['interaction'][_0xac17('0xcf')]){return db[_0xac17('0xd0')][_0xac17('0x5f')]({'attributes':['id',_0xac17('0x40')],'where':{'id':_0x547671[_0xac17('0xc4')][_0xac17('0xcf')]}})[_0xac17('0x3a')](function(_0x2eed83){if(_0x2eed83){_0x547671['applications']['unshift']({'id':0x0,'priority':0x0,'app':_0xac17('0xd1'),'appdata':_0x2eed83[_0xac17('0x40')]+','+(_0x547671[_0xac17('0xa9')]['waitForTheAssignedAgent']||0xa),'interval':_0xac17('0xcc')});_0x547671[_0xac17('0xd2')]=!![];}return respondWithRpcPromise('Start',_0xac17('0xd3'),_0x547671);});}return respondWithRpcPromise(_0xac17('0xd4'),_0xac17('0xd3'),_0x547671);})['then'](function(_0x5f2cd9){respondWithRpcPromise('EventManager',_0xac17('0xd5'),{'event':_0xac17('0x8e'),'message':_0x5f2cd9},client9002);return _0x5f2cd9;})[_0xac17('0x3a')](respondWithResult(_0x253e15,null))[_0xac17('0x2d')](handleError(_0x253e15,null));};exports['offline']=function(_0x5f1eeb,_0x4c0a9e,_0x552fd1){var _0x4b3471,_0x453166,_0xe65166;var _0x8b8006=[];var _0x27be03=[];var _0x1ea00d={};var _0x2d6304=_0x5f1eeb[_0xac17('0xd6')]||[];var _0x52f936=[];var _0x18db33;return db['CmContact'][_0xac17('0x67')]()[_0xac17('0x3a')](function(_0x643d8c){if(!_0x643d8c){throw new db[(_0xac17('0x96'))][(_0xac17('0x97'))](_0xac17('0x98'));}_0x27be03=_[_0xac17('0x99')](_[_0xac17('0x49')](_0x643d8c),['createdAt',_0xac17('0x9b')]);_0x8b8006=_['difference'](_[_0xac17('0x49')](_0x643d8c),['createdAt',_0xac17('0x9b'),'CompanyId',_0xac17('0xaf')]);if(_0x5f1eeb['body']['id']){delete _0x5f1eeb['body']['id'];}if(_[_0xac17('0x8d')](_0x5f1eeb[_0xac17('0x61')][_0xac17('0xa2')])){throw _0x4c0a9e['status'](0x1f4)[_0xac17('0x41')](new db[(_0xac17('0x96'))][(_0xac17('0x97'))]('from\x20is\x20mandatory'));}if(_[_0xac17('0x8d')](_0x5f1eeb['body']['body'])||_0x5f1eeb[_0xac17('0x61')][_0xac17('0x61')]===''){throw _0x4c0a9e[_0xac17('0x2f')](0x1f4)[_0xac17('0x41')](new db[(_0xac17('0x96'))][(_0xac17('0x97'))](_0xac17('0x9e')));}if(_[_0xac17('0x8d')](_0x5f1eeb['body']['mapKeyOffline'])){throw _0x4c0a9e[_0xac17('0x2f')](0x1f4)[_0xac17('0x41')](new db[(_0xac17('0x96'))][(_0xac17('0x97'))](_0xac17('0xd7')+_0x8b8006));}if(!_['includes'](_0x8b8006,_0x5f1eeb[_0xac17('0x61')]['mapKeyOffline'])){throw _0x4c0a9e[_0xac17('0x2f')](0x1f4)[_0xac17('0x41')](new db[(_0xac17('0x96'))]['ValidationError']('mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x8b8006));}_0x1ea00d[_0x5f1eeb['body'][_0xac17('0xd8')]]=_0x5f1eeb[_0xac17('0x61')]['from'];})[_0xac17('0x3a')](function(){return db[_0xac17('0x43')]['find']({'where':{'id':_0x5f1eeb[_0xac17('0x5b')]['id']},'include':[{'model':db[_0xac17('0xa3')],'as':_0xac17('0xa4')},{'model':db[_0xac17('0xd9')],'as':_0xac17('0xd9')}]});})['then'](handleEntityNotFound(_0x4c0a9e,null))[_0xac17('0x3a')](function(_0x300e4c){if(_0x300e4c&&_0x300e4c[_0xac17('0xa4')]){_0x453166=_0x300e4c;var _0x2f372a=_[_0xac17('0x1e')](_0x5f1eeb['body'],{'firstName':_0x5f1eeb['body']['from'],'phone':_0x5f1eeb[_0xac17('0x61')][_0xac17('0xa2')],'ListId':_0x300e4c[_0xac17('0xaf')]});_0x2f372a[_0x5f1eeb[_0xac17('0x61')][_0xac17('0xd8')]]=_0x5f1eeb[_0xac17('0x61')][_0xac17('0xa2')];return db[_0xac17('0x95')][_0xac17('0xda')]({'where':_0x1ea00d,'defaults':_0x2f372a});}})[_0xac17('0xc5')](function(_0x43d839){if(_0x43d839){_0xe65166=_0x43d839;var _0xdcd8fb=fs[_0xac17('0xdb')](path['join'](config[_0xac17('0x7f')],_0xac17('0xdc')),_0xac17('0xdd'));var _0x27a78a=ejs[_0xac17('0xde')](_0xdcd8fb,{'body':_[_0xac17('0xdf')](_0x5f1eeb[_0xac17('0x61')][_0xac17('0x61')]),'bodyTitle':_0x453166['offlineMessageBody']});return db[_0xac17('0xe0')][_0xac17('0x60')]({'body':_0x27a78a,'ContactId':_0x43d839['id'],'ChatWebsiteId':_0x453166['id']});}})[_0xac17('0x3a')](function(_0xb75fe4){_0x18db33=_0xb75fe4;if(_0x2d6304[_0xac17('0x4d')]){var _0x403fe6=_0x2d6304[_0xac17('0x42')](function(_0x373a9c){return{'name':_0x373a9c[_0xac17('0xe1')],'basename':_0x373a9c[_0xac17('0x78')],'type':_0x373a9c[_0xac17('0xe2')],'ChatOfflineMessageId':_0xb75fe4['id']};});_0x52f936=_0x403fe6[_0xac17('0x42')](_0x28c3fa=>{var _0x3c7134={'filename':_0x28c3fa['name'],'path':path['join'](config[_0xac17('0x7f')],_0xac17('0xe3'),'files',_0xac17('0xe4'),_0xac17('0xe5'),_0x28c3fa[_0xac17('0xe6')])};return _0x3c7134;});if(!_0x453166[_0xac17('0xe7')]){return db[_0xac17('0xe8')][_0xac17('0xe9')](function(_0x4d6bc2){return db[_0xac17('0xea')][_0xac17('0xeb')](_0x403fe6,{'transaction':_0x4d6bc2});});}}})['then'](function(){if(_0x18db33){_0x4b3471=_0x18db33;return db['MailAccount']['findOne']({'where':{'active':!![]},'include':[{'model':db['MailServerOut'],'as':_0xac17('0xec'),'raw':!![]}]});}})[_0xac17('0x3a')](function(_0x54e0ca){if(_0x54e0ca&&_0x54e0ca[_0xac17('0xec')]&&_0x453166[_0xac17('0xed')]&&_0x453166[_0xac17('0xee')]){var _0x4e5c61={'tls':{'rejectUnauthorized':![]}};if(_0x54e0ca[_0xac17('0xec')]['service']){_0x4e5c61[_0xac17('0xef')]=_0x54e0ca[_0xac17('0xec')]['service'];}else{_0x4e5c61[_0xac17('0xf0')]=_0x54e0ca[_0xac17('0xec')]['host'];_0x4e5c61['port']=_0x54e0ca['Smtp'][_0xac17('0xf1')];_0x4e5c61['secure']=_0x54e0ca['Smtp'][_0xac17('0xf2')];}if(_0x54e0ca[_0xac17('0xec')][_0xac17('0xf3')]){_0x4e5c61[_0xac17('0xf4')]={'user':_0x54e0ca['Smtp'][_0xac17('0xf5')],'pass':_0x54e0ca[_0xac17('0xec')]['pass']};}return respondWithRpcPromise(_0xac17('0xf6'),_0xac17('0xf7'),{'account':_0x4e5c61,'message':{'from':util['format'](_0xac17('0xf8'),_0x54e0ca[_0xac17('0x40')],_0x54e0ca[_0xac17('0xf9')]||_0x54e0ca[_0xac17('0xec')]['user']),'to':_0x453166[_0xac17('0xee')],'subject':_0x453166[_0xac17('0xfa')],'html':_0x4b3471[_0xac17('0x61')],'attachments':_0x52f936}},client9003)[_0xac17('0x3a')](function(){return _0x4b3471;})[_0xac17('0x2d')](function(_0x37e9d2){console[_0xac17('0x29')](_0x37e9d2);});}})[_0xac17('0x3a')](function(){if(_0x453166&&_0x453166[_0xac17('0xe7')]&&_0x453166[_0xac17('0xfb')]){var _0x1fcf08=[];if(_0x2d6304[_0xac17('0x4d')]){_0x1fcf08=_0x2d6304[_0xac17('0x42')](function(_0x383204){return{'name':_0x383204[_0xac17('0xe1')],'basename':_0x383204[_0xac17('0x78')],'type':_0x383204[_0xac17('0xe2')],'ChatOfflineMessageId':_0x18db33['id']};});}var _0x27702b;if(!_[_0xac17('0x8d')](_0x453166['subjectOffline'])){var _0x4674de=_[_0xac17('0x42')](_0x5f1eeb[_0xac17('0x61')],function(_0x926b36){return _0x926b36;});var _0x5d875b=_[_0xac17('0xfc')](_0x4674de)[0x0];var _0x19f91b=_[_0xac17('0xfd')](_0x5d875b,function(_0x33cd4c){return _0x33cd4c;});_0x27702b=_0x19f91b[0x1][_0x453166[_0xac17('0xfe')]];}var _0x1dedeb={'from':_0xe65166[_0xac17('0xf9')],'firstName':_0xe65166[_0xac17('0xb6')],'lastName':_0xe65166['lastName'],'mapKey':_0xac17('0xf9'),'message':{'from':_0xe65166['email'],'to':_0x453166[_0xac17('0xd9')][_0xac17('0xf9')],'cc':'','subject':_['isNil'](_0x27702b)?_0x453166[_0xac17('0xfa')]:_0x27702b,'messageId':'','sentAt':new Date(),'attach':_0x1fcf08[_0xac17('0x4d')],'attachments':_0x1fcf08,'originChannel':'Chat','ChatWebsiteId':_0x453166['id'],'ChatOfflineMessageId':_0x4b3471['id'],'originTo':_0x453166[_0xac17('0xd9')]['email']},'body':_0x4b3471['body']};var _0x3c3333={'account':{'id':_0x453166[_0xac17('0xfb')]},'body':_0x1dedeb,'log':_0xac17('0xff')};return respondWithRpcPromise(_0xac17('0xff'),_0xac17('0x100'),_0x3c3333,client9001)[_0xac17('0x3a')](function(){return _0x4b3471;})[_0xac17('0x2d')](function(_0x490984){console[_0xac17('0x29')](_0x490984);});}return;})[_0xac17('0x3a')](function(){if(_0x4b3471){return _0x4b3471;}})[_0xac17('0x3a')](respondWithResult(_0x4c0a9e,null))['catch'](function(_0x80d7ff){console[_0xac17('0x29')](_0xac17('0x2d'),_0x80d7ff);for(var _0x7e77ae of _0x2d6304){var _0x31d851=path[_0xac17('0x7e')](config[_0xac17('0x7f')],_0xac17('0xe3'),_0xac17('0xd6'),_0xac17('0xe4'),'offline-chat',_0x7e77ae['filename']);fs_extra['remove'](_0x31d851)[_0xac17('0x2d')](function(_0x3fa835){console[_0xac17('0x29')](_0xac17('0x101'),_0x31d851,_0x3fa835);});}});};exports[_0xac17('0x102')]=function(_0x3f1a01,_0x2f2b8b,_0xf479d8){return db[_0xac17('0xc1')]['find']({'where':{'id':_0x3f1a01[_0xac17('0x5b')]['id']}})['then'](handleEntityNotFound(_0x2f2b8b,null))[_0xac17('0x3a')](function(_0x4b10ae){if(_0x4b10ae){return _0x4b10ae['addInteraction'](_0x3f1a01[_0xac17('0x61')][_0xac17('0x73')],_[_0xac17('0x103')](_0x3f1a01[_0xac17('0x61')],['ids','id'])||{});}})[_0xac17('0x3a')](respondWithResult(_0x2f2b8b,null))['catch'](handleError(_0x2f2b8b,null));};exports[_0xac17('0x104')]=function(_0x64b33b,_0x94020c,_0x2fcc4d){var _0x19cd39={'raw':![],'where':{}};var _0x74e100={};var _0x2446b8={'count':0x0,'rows':[]};return db[_0xac17('0x43')][_0xac17('0x6c')]({'where':{'id':_0x64b33b[_0xac17('0x5b')]['id']}})[_0xac17('0x3a')](handleEntityNotFound(_0x94020c,null))[_0xac17('0x3a')](function(_0x4f1865){if(_0x4f1865){_0x74e100[_0xac17('0x47')]=_[_0xac17('0x49')](db[_0xac17('0xc1')][_0xac17('0x44')]);_0x74e100[_0xac17('0x48')]=_[_0xac17('0x49')](_0x64b33b[_0xac17('0x48')]);_0x74e100[_0xac17('0x5e')]=_[_0xac17('0x4a')](_0x74e100[_0xac17('0x47')],_0x74e100[_0xac17('0x48')]);_0x19cd39[_0xac17('0x4b')]=_[_0xac17('0x4a')](_0x74e100[_0xac17('0x47')],qs[_0xac17('0x4c')](_0x64b33b[_0xac17('0x48')][_0xac17('0x4c')]));_0x19cd39[_0xac17('0x4b')]=_0x19cd39[_0xac17('0x4b')]['length']?_0x19cd39['attributes']:_0x74e100[_0xac17('0x47')];if(!_0x64b33b[_0xac17('0x48')]['hasOwnProperty'](_0xac17('0x6d'))){_0x19cd39[_0xac17('0x35')]=qs[_0xac17('0x35')](_0x64b33b['query'][_0xac17('0x35')]);_0x19cd39[_0xac17('0x34')]=qs['offset'](_0x64b33b[_0xac17('0x48')]['offset']);}_0x19cd39[_0xac17('0x4f')]=qs[_0xac17('0x50')](_0x64b33b['query'][_0xac17('0x50')]);_0x19cd39[_0xac17('0x52')]=qs[_0xac17('0x5e')](_[_0xac17('0x51')](_0x64b33b['query'],_0x74e100[_0xac17('0x5e')]));_0x19cd39[_0xac17('0x52')]['ChatWebsiteId']=_0x4f1865['id'];if(_0x64b33b[_0xac17('0x48')]['filter']){_0x19cd39[_0xac17('0x52')]=_[_0xac17('0x55')](_0x19cd39[_0xac17('0x52')],{'$or':_['map'](_0x19cd39[_0xac17('0x4b')],function(_0x160f45){var _0x408e3c={};_0x408e3c[_0x160f45]={'$like':'%'+_0x64b33b['query'][_0xac17('0x54')]+'%'};return _0x408e3c;})});}_0x19cd39=_[_0xac17('0x55')]({},_0x19cd39,_0x64b33b[_0xac17('0x56')]);return db['ChatInteraction'][_0xac17('0x33')]({'where':_0x19cd39[_0xac17('0x52')]})['then'](function(_0x5a91bb){_0x2446b8[_0xac17('0x33')]=_0x5a91bb;if(_0x64b33b['query'][_0xac17('0x57')]){_0x19cd39[_0xac17('0x58')]=[{'model':db[_0xac17('0x95')],'as':'Contact','required':![]},{'model':db['User'],'as':_0xac17('0x105'),'attributes':[_0xac17('0x40'),_0xac17('0x106'),_0xac17('0x107')],'required':![]},{'model':db[_0xac17('0x108')],'as':'Tags','attributes':['id',_0xac17('0x40'),_0xac17('0x109')],'where':_0x64b33b[_0xac17('0x48')][_0xac17('0x10a')]?{'id':_0x64b33b[_0xac17('0x48')][_0xac17('0x10a')]}:undefined,'required':_0x64b33b[_0xac17('0x48')]['tag']?!![]:![]}];}return db[_0xac17('0xc1')][_0xac17('0x6e')](_0x19cd39);})[_0xac17('0x3a')](function(_0x38369e){_0x2446b8[_0xac17('0x59')]=_0x38369e;return _0x2446b8;});}})['then'](respondWithFilteredResult(_0x94020c,_0x19cd39))['catch'](handleError(_0x94020c,null));};function iftimePromise(_0x24241d,_0x3991ce){return respondWithRpcPromise(_0xac17('0x10b'),_0xac17('0x10c'),{'command':_0x3991ce[_0xac17('0x10d')]?util[_0xac17('0xba')](_0xac17('0x10e'),_0x24241d['interval'],_0x3991ce[_0xac17('0x10d')]):util['format'](_0xac17('0x10f'),_0x24241d['interval'])},client9002)[_0xac17('0x3a')](function(_0xb2d1ad){var _0x31783f=_0xb2d1ad&&_0xb2d1ad[_0xac17('0x110')](_0xac17('0x111'))>=0x0?!![]:![];logger[_0xac17('0x24')](_0xac17('0x112'),_0x3991ce['id'],_0x24241d['id'],_0x24241d[_0xac17('0x113')],_0x31783f?_0xac17('0x114'):_0xac17('0x115'),_0x3991ce[_0xac17('0x10d')]?_0x3991ce['timezone']:'No\x20timezone');return _0x31783f;})['catch'](function(_0x319c20){logger['error'](_0xac17('0x112'),_0x3991ce['id'],_0x24241d['id'],_0x24241d[_0xac17('0x113')],util[_0xac17('0x116')](_0x319c20,{'showHidden':![],'depth':null}),_0x3991ce[_0xac17('0x10d')]?_0x3991ce[_0xac17('0x10d')]:_0xac17('0x117'));return![];});}exports['getSnippet']=function(_0x1a3a36,_0x364128,_0x3cd6ea){var _0x553805=0x0;var _0x15bb88=0x0;var _0x266e29=![];var _0x29979a;var _0x588eb3;return db[_0xac17('0x43')][_0xac17('0x5f')]({'where':{'id':_0x1a3a36[_0xac17('0x5b')]['id']},'include':[{'model':db[_0xac17('0x118')],'as':_0xac17('0x118'),'include':[{'model':db['Interval'],'as':_0xac17('0x119'),'attributes':['id',_0xac17('0x113')],'raw':!![]}]}]})[_0xac17('0x3a')](handleEntityNotFound(_0x364128,null))['then'](function(_0x221f59){if(_0x221f59){_0x29979a=_0x221f59;return _0x221f59[_0xac17('0x11a')]({'raw':!![]});}})[_0xac17('0x3a')](function(_0x12c121){if(_0x29979a){if(_0x12c121){_0x588eb3=_0x12c121;}}return require(_0xac17('0x1b'))[_0xac17('0x81')]();})[_0xac17('0x3a')](function(_0x1fbce1){if(_0x1fbce1){_0x15bb88=_0x1fbce1[_0xac17('0x11b')];_0x266e29=_0x1fbce1['custom'];}})[_0xac17('0x3a')](function(){return db[_0xac17('0xc1')][_0xac17('0x33')]({'where':{'closed':![]}});})[_0xac17('0x3a')](function(_0x1c5e34){_0x553805=_0x1c5e34;if(_0x15bb88&&_0x1c5e34>_0x15bb88){return db['License'][_0xac17('0x6c')]({'where':{'id':0x1}})[_0xac17('0x3a')](function(_0xb9b860){if(_0xb9b860){_0xb9b860[_0xac17('0x11c')](_0xac17('0x11d'));}});}})[_0xac17('0x3a')](function(){if(_0x29979a[_0xac17('0x118')]&&_0x29979a['Interval'][_0xac17('0x119')]){var _0x3f3b1e=[];for(var _0x553fa0=0x0;_0x553fa0<_0x29979a[_0xac17('0x118')]['Intervals'][_0xac17('0x4d')];_0x553fa0++){var _0x1d99f6=_0x29979a[_0xac17('0x118')]['Intervals'][_0x553fa0][_0xac17('0x3c')]({'plain':!![]});_0x3f3b1e['push'](iftimePromise(_0x1d99f6,_0x29979a));}return BPromise[_0xac17('0x11e')](_0x3f3b1e)[_0xac17('0x3a')](function(_0x4e35da){return _[_0xac17('0x11f')](_0x4e35da);});}else{return!![];}})[_0xac17('0x3a')](function(_0x5a4f92){var _0x2bad1f=fs[_0xac17('0xdb')](path[_0xac17('0x7e')](config[_0xac17('0x7f')],'server/files/chat/iframe.ejs'),_0xac17('0xdd'));var _0x2f545c={'remote':_0x29979a[_0xac17('0x120')],'query':querystring['stringify'](_['merge'](_0x29979a[_0xac17('0x3c')]({'plain':!![]}),{'customerIp':_0x1a3a36['headers'][_0xac17('0xb3')]||_0x1a3a36[_0xac17('0x91')][_0xac17('0x121')]||_0x1a3a36['connection']['remoteAddress']||_0x1a3a36['ip'],'referer':_0x1a3a36[_0xac17('0x91')][_0xac17('0xb8')],'openedInteractions':_0x553805,'maxInteractions':_0x15bb88,'virtual':_0x266e29[_0xac17('0x11b')],'online':_0x5a4f92,'custom':_0x266e29}))[_0xac17('0x122')](/'/g,'\x5c\x27')};_0x364128[_0xac17('0x41')](ejs[_0xac17('0xde')](Mustache[_0xac17('0xde')](_0x2bad1f,_0x2f545c),{'proactiveActions':_0x588eb3,'alignment':_0x29979a['alignment'],'verticalAlignment':_0x29979a[_0xac17('0x123')],'div_color':_0x29979a[_0xac17('0x109')],'text_color':_0x29979a['textColor'],'button_color':_0x29979a['color_button'],'background_color':_0x29979a[_0xac17('0x124')]}));})[_0xac17('0x2d')](handleError(_0x364128,null));};exports[_0xac17('0x125')]=function(_0x1dc736,_0x5a01d5,_0x3493d4){return db[_0xac17('0x43')][_0xac17('0x6c')]({'where':{'id':_0x1dc736[_0xac17('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5a01d5,null))[_0xac17('0x3a')](function(_0x34f15b){if(_0x34f15b){return db[_0xac17('0xe8')][_0xac17('0xe9')](function(_0x50ed76){return db['ChatApplication'][_0xac17('0x3b')]({'where':{'ChatWebsiteId':_0x1dc736['params']['id']},'transaction':_0x50ed76})['then'](function(_0x51c1c0){var _0x440748=_[_0xac17('0x42')](_0x1dc736[_0xac17('0x61')],function(_0x658777){_0x658777[_0xac17('0x69')]=_0x1dc736[_0xac17('0x5b')]['id'];return _0x658777;});return db[_0xac17('0xa7')][_0xac17('0xeb')](_0x440748,{'transaction':_0x50ed76});});})[_0xac17('0x3a')](function(){return db[_0xac17('0xa7')]['findAndCountAll']({'where':{'ChatWebsiteId':_0x1dc736[_0xac17('0x5b')]['id']},'order':_0xac17('0xad')});});}})[_0xac17('0x3a')](respondWithResult(_0x5a01d5,null))[_0xac17('0x2d')](handleError(_0x5a01d5,null));};exports[_0xac17('0x126')]=function(_0x8d257e,_0xa07e9b,_0x5f468f){var _0x584df4={};var _0x2c028d={};var _0x5d96b9;var _0x43b2e3;return db[_0xac17('0x43')][_0xac17('0x6c')]({'where':{'id':_0x8d257e[_0xac17('0x5b')]['id']}})[_0xac17('0x3a')](handleEntityNotFound(_0xa07e9b,null))[_0xac17('0x3a')](function(_0x398afe){if(_0x398afe){_0x5d96b9=_0x398afe;_0x2c028d[_0xac17('0x47')]=_[_0xac17('0x49')](db[_0xac17('0xa7')][_0xac17('0x44')]);_0x2c028d[_0xac17('0x48')]=_[_0xac17('0x49')](_0x8d257e[_0xac17('0x48')]);_0x2c028d[_0xac17('0x5e')]=_[_0xac17('0x4a')](_0x2c028d[_0xac17('0x47')],_0x2c028d[_0xac17('0x48')]);_0x584df4[_0xac17('0x4b')]=_[_0xac17('0x4a')](_0x2c028d[_0xac17('0x47')],qs[_0xac17('0x4c')](_0x8d257e[_0xac17('0x48')][_0xac17('0x4c')]));_0x584df4[_0xac17('0x4b')]=_0x584df4[_0xac17('0x4b')][_0xac17('0x4d')]?_0x584df4['attributes']:_0x2c028d[_0xac17('0x47')];_0x584df4[_0xac17('0x4f')]=qs[_0xac17('0x50')](_0x8d257e[_0xac17('0x48')][_0xac17('0x50')]);_0x584df4['where']=qs[_0xac17('0x5e')](_['pick'](_0x8d257e[_0xac17('0x48')],_0x2c028d[_0xac17('0x5e')]));if(_0x8d257e[_0xac17('0x48')][_0xac17('0x54')]){_0x584df4['where']=_[_0xac17('0x55')](_0x584df4['where'],{'$or':_['map'](_0x584df4[_0xac17('0x4b')],function(_0x3e3aff){var _0x1e150a={};_0x1e150a[_0x3e3aff]={'$like':'%'+_0x8d257e['query']['filter']+'%'};return _0x1e150a;})});}_0x584df4=_['merge']({},_0x584df4,_0x8d257e['options']);return _0x5d96b9[_0xac17('0x126')](_0x584df4);}})[_0xac17('0x3a')](function(_0x101b81){if(_0x101b81){_0x43b2e3=_0x101b81[_0xac17('0x4d')];if(!_0x8d257e[_0xac17('0x48')][_0xac17('0x4e')](_0xac17('0x6d'))){_0x584df4[_0xac17('0x35')]=qs[_0xac17('0x35')](_0x8d257e['query'][_0xac17('0x35')]);_0x584df4[_0xac17('0x34')]=qs['offset'](_0x8d257e[_0xac17('0x48')][_0xac17('0x34')]);}return _0x5d96b9[_0xac17('0x126')](_0x584df4);}})[_0xac17('0x3a')](function(_0x25245b){if(_0x25245b){return _0x25245b?{'count':_0x43b2e3,'rows':_0x25245b}:null;}})['then'](respondWithResult(_0xa07e9b,null))[_0xac17('0x2d')](handleError(_0xa07e9b,null));};exports[_0xac17('0x127')]=function(_0x479019,_0x4b7f73,_0x1f9741){return db[_0xac17('0x128')][_0xac17('0x5f')]({'where':{'id':_0x479019[_0xac17('0x5b')]['id']}})['then'](handleEntityNotFound(_0x4b7f73,null))['then'](function(_0x570166){if(_0x570166){return _0x570166['addProactiveActions'](_0x479019['body'][_0xac17('0x73')],_['omit'](_0x479019['body'],[_0xac17('0x73'),'id'])||{});}})[_0xac17('0x3a')](respondWithResult(_0x4b7f73,null))[_0xac17('0x2d')](handleError(_0x4b7f73,null));};exports[_0xac17('0x11a')]=function(_0x3e5d88,_0x290fa5,_0x14bf77){var _0x384a98={};var _0x306f29={};var _0x2e92b1;var _0x33a006;return db['ChatWebsite'][_0xac17('0x6c')]({'where':{'id':_0x3e5d88[_0xac17('0x5b')]['id']}})[_0xac17('0x3a')](handleEntityNotFound(_0x290fa5,null))['then'](function(_0x4c830){if(_0x4c830){_0x2e92b1=_0x4c830;_0x306f29[_0xac17('0x47')]=_[_0xac17('0x49')](db[_0xac17('0x129')][_0xac17('0x44')]);_0x306f29[_0xac17('0x48')]=_[_0xac17('0x49')](_0x3e5d88[_0xac17('0x48')]);_0x306f29[_0xac17('0x5e')]=_[_0xac17('0x4a')](_0x306f29['model'],_0x306f29[_0xac17('0x48')]);_0x384a98[_0xac17('0x4b')]=_[_0xac17('0x4a')](_0x306f29[_0xac17('0x47')],qs[_0xac17('0x4c')](_0x3e5d88['query'][_0xac17('0x4c')]));_0x384a98[_0xac17('0x4b')]=_0x384a98[_0xac17('0x4b')][_0xac17('0x4d')]?_0x384a98['attributes']:_0x306f29['model'];_0x384a98[_0xac17('0x4f')]=qs[_0xac17('0x50')](_0x3e5d88[_0xac17('0x48')][_0xac17('0x50')]);_0x384a98['where']=qs[_0xac17('0x5e')](_['pick'](_0x3e5d88[_0xac17('0x48')],_0x306f29[_0xac17('0x5e')]));if(_0x3e5d88[_0xac17('0x48')][_0xac17('0x54')]){_0x384a98['where']=_[_0xac17('0x55')](_0x384a98[_0xac17('0x52')],{'$or':_[_0xac17('0x42')](_0x384a98[_0xac17('0x4b')],function(_0x38d1c1){var _0x5034cf={};_0x5034cf[_0x38d1c1]={'$like':'%'+_0x3e5d88[_0xac17('0x48')]['filter']+'%'};return _0x5034cf;})});}_0x384a98=_[_0xac17('0x55')]({},_0x384a98,_0x3e5d88[_0xac17('0x56')]);return _0x2e92b1[_0xac17('0x11a')](_0x384a98);}})['then'](function(_0x435d96){if(_0x435d96){_0x33a006=_0x435d96['length'];if(!_0x3e5d88[_0xac17('0x48')][_0xac17('0x4e')]('nolimit')){_0x384a98[_0xac17('0x35')]=qs[_0xac17('0x35')](_0x3e5d88['query'][_0xac17('0x35')]);_0x384a98[_0xac17('0x34')]=qs[_0xac17('0x34')](_0x3e5d88[_0xac17('0x48')]['offset']);}return _0x2e92b1[_0xac17('0x11a')](_0x384a98);}})[_0xac17('0x3a')](function(_0x3df343){if(_0x3df343){return _0x3df343?{'count':_0x33a006,'rows':_0x3df343}:null;}})['then'](respondWithResult(_0x290fa5,null))['catch'](handleError(_0x290fa5,null));};exports[_0xac17('0x12a')]=function(_0x3ad464,_0x1d6c51,_0xc95eb8){var _0x164124=_0x3ad464[_0xac17('0x48')][_0xac17('0x12b')]==='false'?_0xac17('0x12c'):_0xac17('0x12d');return db['ChatWebsite'][_0xac17('0x5f')]({'attributes':['id',_0x164124],'where':{'id':_0x3ad464['params']['id']}})['then'](handleEntityNotFound(_0x1d6c51,null))['then'](function(_0x582359){if(_0x582359){var _0x3275dd=_0x582359[_0x164124];var _0x16a749=_0x3275dd&&_0x3275dd[_0xac17('0x12e')]?_0x3275dd[_0xac17('0x12e')]:[];_0x1d6c51[_0xac17('0x41')]({'fromKey':_[_0xac17('0x8d')](_0x3275dd[_0xac17('0x12f')])?undefined:_0x3275dd[_0xac17('0x12f')],'count':_0x16a749[_0xac17('0x4d')],'rows':_0x16a749});}})[_0xac17('0x2d')](handleError(_0x1d6c51,null));};exports[_0xac17('0x130')]=function(_0x37d941,_0x5879aa,_0xa523d7){var _0x41713e={'raw':![],'where':{}};var _0xa3b60e={};var _0x7c439d={'count':0x0,'rows':[]};return db['ChatWebsite']['findOne']({'where':{'id':_0x37d941[_0xac17('0x5b')]['id']}})[_0xac17('0x3a')](handleEntityNotFound(_0x5879aa,null))[_0xac17('0x3a')](function(_0x16226a){if(_0x16226a){_0xa3b60e[_0xac17('0x47')]=_[_0xac17('0x49')](db[_0xac17('0xe0')]['rawAttributes']);_0xa3b60e['query']=_[_0xac17('0x49')](_0x37d941[_0xac17('0x48')]);_0xa3b60e[_0xac17('0x5e')]=_[_0xac17('0x4a')](_0xa3b60e[_0xac17('0x47')],_0xa3b60e[_0xac17('0x48')]);_0x41713e[_0xac17('0x4b')]=_[_0xac17('0x4a')](_0xa3b60e[_0xac17('0x47')],qs[_0xac17('0x4c')](_0x37d941[_0xac17('0x48')][_0xac17('0x4c')]));_0x41713e['attributes']=_0x41713e[_0xac17('0x4b')][_0xac17('0x4d')]?_0x41713e['attributes']:_0xa3b60e['model'];if(!_0x37d941[_0xac17('0x48')][_0xac17('0x4e')]('nolimit')){_0x41713e[_0xac17('0x35')]=qs['limit'](_0x37d941['query']['limit']);_0x41713e[_0xac17('0x34')]=qs[_0xac17('0x34')](_0x37d941[_0xac17('0x48')][_0xac17('0x34')]);}_0x41713e[_0xac17('0x4f')]=qs[_0xac17('0x50')](_0x37d941[_0xac17('0x48')][_0xac17('0x50')]);_0x41713e['where']=qs['filters'](_['pick'](_0x37d941['query'],_0xa3b60e[_0xac17('0x5e')]));_0x41713e['where'][_0xac17('0x69')]=_0x16226a['id'];if(_0x37d941[_0xac17('0x48')][_0xac17('0x54')]){_0x41713e[_0xac17('0x52')]=_[_0xac17('0x55')](_0x41713e[_0xac17('0x52')],{'$or':_['map'](_0x41713e['attributes'],function(_0x559f96){var _0x472396={};_0x472396[_0x559f96]={'$like':'%'+_0x37d941[_0xac17('0x48')][_0xac17('0x54')]+'%'};return _0x472396;})});}_0x41713e=_[_0xac17('0x55')]({},_0x41713e,_0x37d941[_0xac17('0x56')]);return db[_0xac17('0xe0')]['count']({'where':_0x41713e[_0xac17('0x52')]})[_0xac17('0x3a')](function(_0x3c01a4){_0x7c439d[_0xac17('0x33')]=_0x3c01a4;if(_0x37d941[_0xac17('0x48')][_0xac17('0x57')]){_0x41713e[_0xac17('0x58')]=[{'all':!![]}];}else{_0x41713e[_0xac17('0x58')]=[{'model':db['CmContact'],'as':'Contact','required':![]},{'model':db['Attachment'],'as':_0xac17('0x131'),'required':![]}];}return db['ChatOfflineMessage']['findAll'](_0x41713e);})['then'](function(_0x1806c2){_0x7c439d[_0xac17('0x59')]=_0x1806c2;return _0x7c439d;});}})['then'](respondWithFilteredResult(_0x5879aa,_0x41713e))['catch'](handleError(_0x5879aa,null));};exports[_0xac17('0x132')]=function(_0x348248,_0x430ad1,_0xfc000e){return db['ChatWebsite'][_0xac17('0x5f')]({'where':{'id':_0x348248[_0xac17('0x5b')]['id']}})[_0xac17('0x3a')](handleEntityNotFound(_0x430ad1,null))[_0xac17('0x3a')](function(_0x1d9224){if(_0x1d9224){return _0x1d9224[_0xac17('0x132')](_0x348248['body']['ids'],_[_0xac17('0x103')](_0x348248['body'],[_0xac17('0x73'),'id'])||{})[_0xac17('0xc5')](function(_0x1fadb6){for(var _0x32257c=0x0;_0x32257c<_0x348248[_0xac17('0x61')]['ids'][_0xac17('0x4d')];_0x32257c+=0x1){socket[_0xac17('0x133')](_0xac17('0x134'),{'UserId':Number(_0x348248[_0xac17('0x61')][_0xac17('0x73')][_0x32257c]),'ChatWebsiteId':Number(_0x348248[_0xac17('0x5b')]['id'])});}return _0x1fadb6;});}})[_0xac17('0x3a')](respondWithResult(_0x430ad1,null))[_0xac17('0x2d')](handleError(_0x430ad1,null));};exports[_0xac17('0x135')]=function(_0x36dd23,_0x4aef42,_0x5ec1d0){return db['ChatWebsite']['find']({'where':{'id':_0x36dd23[_0xac17('0x5b')]['id']}})['then'](handleEntityNotFound(_0x4aef42,null))['then'](function(_0x27382b){if(_0x27382b){return _0x27382b[_0xac17('0x135')](_0x36dd23[_0xac17('0x48')][_0xac17('0x73')])[_0xac17('0x3a')](function(){if(_[_0xac17('0x136')](_0x36dd23['query'][_0xac17('0x73')])){for(var _0x949b03=0x0;_0x949b03<_0x36dd23[_0xac17('0x48')][_0xac17('0x73')][_0xac17('0x4d')];_0x949b03+=0x1){socket['emit'](_0xac17('0x137'),{'UserId':Number(_0x36dd23['query'][_0xac17('0x73')][_0x949b03]),'ChatWebsiteId':Number(_0x36dd23[_0xac17('0x5b')]['id'])});}}else{socket[_0xac17('0x133')]('userChatWebsite:remove',{'UserId':Number(_0x36dd23[_0xac17('0x48')][_0xac17('0x73')]),'ChatWebsiteId':Number(_0x36dd23['params']['id'])});}});}})[_0xac17('0x3a')](respondWithStatusCode(_0x4aef42,null))[_0xac17('0x2d')](handleError(_0x4aef42,null));};exports[_0xac17('0x138')]=function(_0x3c58bc,_0x64903d,_0x1dfe5b){var _0x1e8cff={};var _0x1dded9={};var _0x27041f;var _0x266188;return db['ChatWebsite'][_0xac17('0x6c')]({'where':{'id':_0x3c58bc[_0xac17('0x5b')]['id']}})[_0xac17('0x3a')](handleEntityNotFound(_0x64903d,null))['then'](function(_0x4e66cd){if(_0x4e66cd){_0x27041f=_0x4e66cd;_0x1dded9[_0xac17('0x47')]=_['keys'](db[_0xac17('0xd0')]['rawAttributes']);_0x1dded9[_0xac17('0x48')]=_[_0xac17('0x49')](_0x3c58bc[_0xac17('0x48')]);_0x1dded9[_0xac17('0x5e')]=_[_0xac17('0x4a')](_0x1dded9[_0xac17('0x47')],_0x1dded9[_0xac17('0x48')]);_0x1e8cff[_0xac17('0x4b')]=_[_0xac17('0x4a')](_0x1dded9[_0xac17('0x47')],qs[_0xac17('0x4c')](_0x3c58bc['query']['fields']));_0x1e8cff[_0xac17('0x4b')]=_0x1e8cff[_0xac17('0x4b')][_0xac17('0x4d')]?_0x1e8cff[_0xac17('0x4b')]:_0x1dded9[_0xac17('0x47')];_0x1e8cff[_0xac17('0x4f')]=qs[_0xac17('0x50')](_0x3c58bc[_0xac17('0x48')]['sort']);_0x1e8cff[_0xac17('0x52')]=qs['filters'](_[_0xac17('0x51')](_0x3c58bc[_0xac17('0x48')],_0x1dded9[_0xac17('0x5e')]));if(_0x3c58bc['query']['filter']){_0x1e8cff[_0xac17('0x52')]=_[_0xac17('0x55')](_0x1e8cff['where'],{'$or':_[_0xac17('0x42')](_0x1e8cff[_0xac17('0x4b')],function(_0x3b2cb8){var _0x559291={};_0x559291[_0x3b2cb8]={'$like':'%'+_0x3c58bc[_0xac17('0x48')][_0xac17('0x54')]+'%'};return _0x559291;})});}_0x1e8cff=_[_0xac17('0x55')]({},_0x1e8cff,_0x3c58bc['options']);return _0x27041f['getAgents'](_0x1e8cff);}})[_0xac17('0x3a')](function(_0xa0bea6){if(_0xa0bea6){_0x266188=_0xa0bea6[_0xac17('0x4d')];if(!_0x3c58bc[_0xac17('0x48')][_0xac17('0x4e')]('nolimit')){_0x1e8cff[_0xac17('0x35')]=qs[_0xac17('0x35')](_0x3c58bc[_0xac17('0x48')]['limit']);_0x1e8cff[_0xac17('0x34')]=qs[_0xac17('0x34')](_0x3c58bc[_0xac17('0x48')][_0xac17('0x34')]);}return _0x27041f[_0xac17('0x138')](_0x1e8cff);}})['then'](function(_0x520a6d){if(_0x520a6d){return _0x520a6d?{'count':_0x266188,'rows':_0x520a6d}:null;}})[_0xac17('0x3a')](respondWithResult(_0x64903d,null))[_0xac17('0x2d')](handleError(_0x64903d,null));};
\ No newline at end of file
index a88aa5a..6c2127d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9491=['hasOwnProperty','hook','events','../../mysqldb','ChatWebsite','setMaxListeners','save','update','remove','emit'];(function(_0x36829a,_0x4dc7e3){var _0x37acff=function(_0x1f93ba){while(--_0x1f93ba){_0x36829a['push'](_0x36829a['shift']());}};_0x37acff(++_0x4dc7e3);}(_0x9491,0xb6));var _0x1949=function(_0x552a88,_0x396aa0){_0x552a88=_0x552a88-0x0;var _0x517a75=_0x9491[_0x552a88];return _0x517a75;};'use strict';var EventEmitter=require(_0x1949('0x0'));var ChatWebsite=require(_0x1949('0x1'))['db'][_0x1949('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0x1949('0x3')](0x0);var events={'afterCreate':_0x1949('0x4'),'afterUpdate':_0x1949('0x5'),'afterDestroy':_0x1949('0x6')};function emitEvent(_0x39082e){return function(_0x4270d7,_0x358907,_0x4b5676){ChatWebsiteEvents[_0x1949('0x7')](_0x39082e+':'+_0x4270d7['id'],_0x4270d7);ChatWebsiteEvents['emit'](_0x39082e,_0x4270d7);_0x4b5676(null);};}for(var e in events){if(events[_0x1949('0x8')](e)){var event=events[e];ChatWebsite[_0x1949('0x9')](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
+var _0xe8f7=['update','remove','emit','hook','exports','events','ChatWebsite','setMaxListeners','save'];(function(_0x2096ed,_0x368818){var _0x4899de=function(_0x326316){while(--_0x326316){_0x2096ed['push'](_0x2096ed['shift']());}};_0x4899de(++_0x368818);}(_0xe8f7,0x137));var _0x7e8f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe8f7[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x7e8f('0x0'));var ChatWebsite=require('../../mysqldb')['db'][_0x7e8f('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0x7e8f('0x2')](0x0);var events={'afterCreate':_0x7e8f('0x3'),'afterUpdate':_0x7e8f('0x4'),'afterDestroy':_0x7e8f('0x5')};function emitEvent(_0xa9b6b5){return function(_0x4249af,_0x47c258,_0x4dcc25){ChatWebsiteEvents[_0x7e8f('0x6')](_0xa9b6b5+':'+_0x4249af['id'],_0x4249af);ChatWebsiteEvents[_0x7e8f('0x6')](_0xa9b6b5,_0x4249af);_0x4dcc25(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatWebsite[_0x7e8f('0x7')](e,emitEvent(event));}}module[_0x7e8f('0x8')]=ChatWebsiteEvents;
\ No newline at end of file
index bbd5361..e995414 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93d8=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','ChatWebsite','lodash'];(function(_0x49e0eb,_0x4af328){var _0x481233=function(_0x55edd7){while(--_0x55edd7){_0x49e0eb['push'](_0x49e0eb['shift']());}};_0x481233(++_0x4af328);}(_0x93d8,0xbf));var _0x893d=function(_0x73ea27,_0xf9ccfc){_0x73ea27=_0x73ea27-0x0;var _0x38141f=_0x93d8[_0x73ea27];return _0x38141f;};'use strict';var _=require(_0x893d('0x0'));var util=require(_0x893d('0x1'));var logger=require('../../config/logger')(_0x893d('0x2'));var moment=require(_0x893d('0x3'));var BPromise=require(_0x893d('0x4'));var rp=require(_0x893d('0x5'));var fs=require('fs');var path=require(_0x893d('0x6'));var rimraf=require(_0x893d('0x7'));var config=require(_0x893d('0x8'));var attributes=require('./chatWebsite.attributes');module[_0x893d('0x9')]=function(_0x360acc,_0x3a5f50){return _0x360acc[_0x893d('0xa')](_0x893d('0xb'),attributes,{'tableName':'chat_websites','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4ac2=['path','rimraf','../../config/environment','./chatWebsite.attributes','exports','define','ChatWebsite','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x5cc26e,_0x4a8851){var _0x2b528a=function(_0x43b0e1){while(--_0x43b0e1){_0x5cc26e['push'](_0x5cc26e['shift']());}};_0x2b528a(++_0x4a8851);}(_0x4ac2,0x19a));var _0x24ac=function(_0x140200,_0xc14af3){_0x140200=_0x140200-0x0;var _0x479b9a=_0x4ac2[_0x140200];return _0x479b9a;};'use strict';var _=require(_0x24ac('0x0'));var util=require('util');var logger=require(_0x24ac('0x1'))(_0x24ac('0x2'));var moment=require(_0x24ac('0x3'));var BPromise=require(_0x24ac('0x4'));var rp=require(_0x24ac('0x5'));var fs=require('fs');var path=require(_0x24ac('0x6'));var rimraf=require(_0x24ac('0x7'));var config=require(_0x24ac('0x8'));var attributes=require(_0x24ac('0x9'));module[_0x24ac('0xa')]=function(_0x438108,_0x25dd51){return _0x438108[_0x24ac('0xb')](_0x24ac('0xc'),attributes,{'tableName':'chat_websites','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0fc1f34..b2d0612 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b92=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','redis','localhost','socket.io-emitter','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','randomstring'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x6b92,0x15b));var _0x26b9=function(_0x522be6,_0x81f173){_0x522be6=_0x522be6-0x0;var _0x3bd60c=_0x6b92[_0x522be6];return _0x3bd60c;};'use strict';var _=require(_0x26b9('0x0'));var util=require(_0x26b9('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x26b9('0x2'));var fs=require('fs');var Redis=require(_0x26b9('0x3'));var db=require(_0x26b9('0x4'))['db'];var utils=require(_0x26b9('0x5'));var logger=require(_0x26b9('0x6'))(_0x26b9('0x7'));var config=require('../../config/environment');var jayson=require(_0x26b9('0x8'));var client=jayson['client'][_0x26b9('0x9')]({'port':0x232a});config[_0x26b9('0xa')]=_['defaults'](config[_0x26b9('0xa')],{'host':_0x26b9('0xb'),'port':0x18eb});var socket=require(_0x26b9('0xc'))(new Redis(config[_0x26b9('0xa')]));require('./chatWebsite.socket')['register'](socket);function respondWithRpcPromise(_0x278ac3,_0xcef261,_0x4ccd3a){return new BPromise(function(_0x16c577,_0x3d6a0b){return client['request'](_0x278ac3,_0x4ccd3a)[_0x26b9('0xd')](function(_0x18f2dc){logger[_0x26b9('0xe')](_0x26b9('0xf'),_0xcef261,_0x26b9('0x10'));logger[_0x26b9('0x11')](_0x26b9('0x12'),_0xcef261,_0x26b9('0x10'),JSON[_0x26b9('0x13')](_0x18f2dc));if(_0x18f2dc[_0x26b9('0x14')]){if(_0x18f2dc[_0x26b9('0x14')][_0x26b9('0x15')]===0x1f4){logger[_0x26b9('0x14')](_0x26b9('0xf'),_0xcef261,_0x18f2dc['error'][_0x26b9('0x16')]);return _0x3d6a0b(_0x18f2dc[_0x26b9('0x14')][_0x26b9('0x16')]);}logger[_0x26b9('0x14')](_0x26b9('0xf'),_0xcef261,_0x18f2dc[_0x26b9('0x14')][_0x26b9('0x16')]);return _0x16c577(_0x18f2dc['error'][_0x26b9('0x16')]);}else{logger[_0x26b9('0xe')](_0x26b9('0xf'),_0xcef261,_0x26b9('0x10'));_0x16c577(_0x18f2dc[_0x26b9('0x17')][_0x26b9('0x16')]);}})[_0x26b9('0x18')](function(_0x1e16bb){logger[_0x26b9('0x14')]('ChatWebsite,\x20%s,\x20%s',_0xcef261,_0x1e16bb);_0x3d6a0b(_0x1e16bb);});});}
\ No newline at end of file
+var _0x5d5e=['info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','ioredis','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','register','request','then'];(function(_0x1b91b4,_0x1c9f21){var _0x48245b=function(_0x28c34e){while(--_0x28c34e){_0x1b91b4['push'](_0x1b91b4['shift']());}};_0x48245b(++_0x1c9f21);}(_0x5d5e,0x6b));var _0xe5d5=function(_0x772c80,_0x3c9cd4){_0x772c80=_0x772c80-0x0;var _0x33ddda=_0x5d5e[_0x772c80];return _0x33ddda;};'use strict';var _=require(_0xe5d5('0x0'));var util=require(_0xe5d5('0x1'));var moment=require('moment');var BPromise=require(_0xe5d5('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe5d5('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xe5d5('0x4'));var jayson=require(_0xe5d5('0x5'));var client=jayson[_0xe5d5('0x6')]['http']({'port':0x232a});config[_0xe5d5('0x7')]=_['defaults'](config['redis'],{'host':_0xe5d5('0x8'),'port':0x18eb});var socket=require(_0xe5d5('0x9'))(new Redis(config[_0xe5d5('0x7')]));require('./chatWebsite.socket')[_0xe5d5('0xa')](socket);function respondWithRpcPromise(_0x79431b,_0x20f7d1,_0x29923c){return new BPromise(function(_0xe42126,_0x51cdce){return client[_0xe5d5('0xb')](_0x79431b,_0x29923c)[_0xe5d5('0xc')](function(_0x3f74fe){logger[_0xe5d5('0xd')](_0xe5d5('0xe'),_0x20f7d1,_0xe5d5('0xf'));logger[_0xe5d5('0x10')](_0xe5d5('0x11'),_0x20f7d1,_0xe5d5('0xf'),JSON[_0xe5d5('0x12')](_0x3f74fe));if(_0x3f74fe[_0xe5d5('0x13')]){if(_0x3f74fe[_0xe5d5('0x13')][_0xe5d5('0x14')]===0x1f4){logger[_0xe5d5('0x13')](_0xe5d5('0xe'),_0x20f7d1,_0x3f74fe[_0xe5d5('0x13')][_0xe5d5('0x15')]);return _0x51cdce(_0x3f74fe['error'][_0xe5d5('0x15')]);}logger[_0xe5d5('0x13')](_0xe5d5('0xe'),_0x20f7d1,_0x3f74fe[_0xe5d5('0x13')][_0xe5d5('0x15')]);return _0xe42126(_0x3f74fe['error'][_0xe5d5('0x15')]);}else{logger['info'](_0xe5d5('0xe'),_0x20f7d1,_0xe5d5('0xf'));_0xe42126(_0x3f74fe[_0xe5d5('0x16')][_0xe5d5('0x15')]);}})[_0xe5d5('0x17')](function(_0xaad865){logger[_0xe5d5('0x13')](_0xe5d5('0xe'),_0x20f7d1,_0xaad865);_0x51cdce(_0xaad865);});});}
\ No newline at end of file
index 475c176..6b27dcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb940=['./chatWebsite.events','save','remove','update','removeListener','register','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb940,0x10a));var _0x0b94=function(_0x5e58b2,_0x1b7ed4){_0x5e58b2=_0x5e58b2-0x0;var _0x4facd0=_0xb940[_0x5e58b2];return _0x4facd0;};'use strict';var ChatWebsiteEvents=require(_0x0b94('0x0'));var events=[_0x0b94('0x1'),_0x0b94('0x2'),_0x0b94('0x3')];function createListener(_0x456577,_0x577c55){return function(_0xe14bc2){_0x577c55['emit'](_0x456577,_0xe14bc2);};}function removeListener(_0x120e99,_0xce36e3){return function(){ChatWebsiteEvents[_0x0b94('0x4')](_0x120e99,_0xce36e3);};}exports[_0x0b94('0x5')]=function(_0x15501c){for(var _0x28b273=0x0,_0x507e2e=events[_0x0b94('0x6')];_0x28b273<_0x507e2e;_0x28b273++){var _0xa5fa5d=events[_0x28b273];var _0x304817=createListener('chatWebsite:'+_0xa5fa5d,_0x15501c);ChatWebsiteEvents['on'](_0xa5fa5d,_0x304817);}};
\ No newline at end of file
+var _0xd7f0=['remove','update','emit','register','chatWebsite:','./chatWebsite.events','save'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd7f0,0x1a9));var _0x0d7f=function(_0x4fbfc1,_0x278e58){_0x4fbfc1=_0x4fbfc1-0x0;var _0x4bbc50=_0xd7f0[_0x4fbfc1];return _0x4bbc50;};'use strict';var ChatWebsiteEvents=require(_0x0d7f('0x0'));var events=[_0x0d7f('0x1'),_0x0d7f('0x2'),_0x0d7f('0x3')];function createListener(_0x12c403,_0x15aa0c){return function(_0x22ea54){_0x15aa0c[_0x0d7f('0x4')](_0x12c403,_0x22ea54);};}function removeListener(_0x2fbb70,_0x307308){return function(){ChatWebsiteEvents['removeListener'](_0x2fbb70,_0x307308);};}exports[_0x0d7f('0x5')]=function(_0x577479){for(var _0x21dd20=0x0,_0x47f575=events['length'];_0x21dd20<_0x47f575;_0x21dd20++){var _0xd53d9f=events[_0x21dd20];var _0x5d284b=createListener(_0x0d7f('0x6')+_0xd53d9f,_0x577479);ChatWebsiteEvents['on'](_0xd53d9f,_0x5d284b);}};
\ No newline at end of file
index 1c5e3ed..53f615f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdddc=['/:id','update','delete','removeDispositions','/:id/canned_answers','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','index','/describe','isAuthenticated','describe','show','/:id/dispositions','getDispositions','getAnswers','getLogo','getAvatar','getCustomerAvatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','getApplications','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','/:id/users','getAgents','post','create','addAnswer','diskStorage','join','root','server/files/images/logos/','format','%s-%s','/:id/logo','single','file','addLogo','server/files/images/avatars/','now','/:id/avatar','originalname','addCustomerAvatar','/:id/system_avatar','addSystemAvatar','/:id/notify','notify','server/files','attachments','offline-chat','ensureDir','replace','extname','/:id/offline','any','addInteraction','/:id/applications','addProactiveActions','put'];(function(_0x51b709,_0x5c79fe){var _0x1fa418=function(_0x5d3bda){while(--_0x5d3bda){_0x51b709['push'](_0x51b709['shift']());}};_0x1fa418(++_0x5c79fe);}(_0xdddc,0xe7));var _0xcddd=function(_0x35b8c1,_0x4ab19b){_0x35b8c1=_0x35b8c1-0x0;var _0x2cfb43=_0xdddc[_0x35b8c1];return _0x2cfb43;};'use strict';var multer=require(_0xcddd('0x0'));var util=require(_0xcddd('0x1'));var path=require(_0xcddd('0x2'));var timeout=require(_0xcddd('0x3'));var express=require('express');var router=express[_0xcddd('0x4')]();var fs_extra=require(_0xcddd('0x5'));var auth=require(_0xcddd('0x6'));var interaction=require(_0xcddd('0x7'));var config=require(_0xcddd('0x8'));var controller=require(_0xcddd('0x9'));router[_0xcddd('0xa')]('/',auth['isAuthenticated'](),controller[_0xcddd('0xb')]);router['get'](_0xcddd('0xc'),auth[_0xcddd('0xd')](),controller[_0xcddd('0xe')]);router[_0xcddd('0xa')]('/:id',auth[_0xcddd('0xd')](),controller[_0xcddd('0xf')]);router['get'](_0xcddd('0x10'),auth['isAuthenticated'](),controller[_0xcddd('0x11')]);router[_0xcddd('0xa')]('/:id/canned_answers',auth[_0xcddd('0xd')](),controller[_0xcddd('0x12')]);router['get']('/:id/logo',controller[_0xcddd('0x13')]);router[_0xcddd('0xa')]('/:id/avatar',controller[_0xcddd('0x14')]);router[_0xcddd('0xa')]('/:id/customer_avatar',controller[_0xcddd('0x15')]);router[_0xcddd('0xa')]('/:id/system_avatar',controller[_0xcddd('0x16')]);router[_0xcddd('0xa')](_0xcddd('0x17'),auth[_0xcddd('0xd')](),controller[_0xcddd('0x18')]);router[_0xcddd('0xa')](_0xcddd('0x19'),controller[_0xcddd('0x1a')]);router[_0xcddd('0xa')]('/:id/applications',auth[_0xcddd('0xd')](),controller[_0xcddd('0x1b')]);router[_0xcddd('0xa')](_0xcddd('0x1c'),auth[_0xcddd('0xd')](),controller[_0xcddd('0x1d')]);router[_0xcddd('0xa')](_0xcddd('0x1e'),controller[_0xcddd('0x1f')]);router[_0xcddd('0xa')](_0xcddd('0x20'),auth[_0xcddd('0xd')](),controller['getOfflineMessages']);router[_0xcddd('0xa')](_0xcddd('0x21'),auth[_0xcddd('0xd')](),controller[_0xcddd('0x22')]);router[_0xcddd('0x23')]('/',auth[_0xcddd('0xd')](),controller[_0xcddd('0x24')]);router['post']('/:id/dispositions',auth[_0xcddd('0xd')](),controller['addDisposition']);router[_0xcddd('0x23')]('/:id/canned_answers',auth[_0xcddd('0xd')](),controller[_0xcddd('0x25')]);var upload=multer({'storage':multer[_0xcddd('0x26')]({'destination':function(_0xe1c09,_0x244afd,_0x5a8ae0){_0x5a8ae0(null,path[_0xcddd('0x27')](config[_0xcddd('0x28')],_0xcddd('0x29')));},'filename':function(_0x502b39,_0x26e933,_0x402ef2){_0x402ef2(null,util[_0xcddd('0x2a')](_0xcddd('0x2b'),Date['now'](),_0x26e933['originalname']));}})});router[_0xcddd('0x23')](_0xcddd('0x2c'),upload[_0xcddd('0x2d')](_0xcddd('0x2e')),controller[_0xcddd('0x2f')]);var upload=multer({'storage':multer[_0xcddd('0x26')]({'destination':function(_0x351dcb,_0x125781,_0x41f769){_0x41f769(null,path['join'](config[_0xcddd('0x28')],_0xcddd('0x30')));},'filename':function(_0x5a171e,_0x2e5f6f,_0x3df19b){_0x3df19b(null,util[_0xcddd('0x2a')](_0xcddd('0x2b'),Date[_0xcddd('0x31')](),_0x2e5f6f['originalname']));}})});router[_0xcddd('0x23')](_0xcddd('0x32'),upload['single'](_0xcddd('0x2e')),controller['addAvatar']);var upload=multer({'storage':multer[_0xcddd('0x26')]({'destination':function(_0x500d53,_0xc3a66b,_0x5c6a45){_0x5c6a45(null,path[_0xcddd('0x27')](config[_0xcddd('0x28')],'server/files/images/avatars/'));},'filename':function(_0x452066,_0x2fdc47,_0x4d1e4a){_0x4d1e4a(null,util['format']('%s-%s',Date[_0xcddd('0x31')](),_0x2fdc47[_0xcddd('0x33')]));}})});router[_0xcddd('0x23')]('/:id/customer_avatar',upload[_0xcddd('0x2d')](_0xcddd('0x2e')),controller[_0xcddd('0x34')]);var upload=multer({'storage':multer[_0xcddd('0x26')]({'destination':function(_0x54c40d,_0x2474da,_0xb75f41){_0xb75f41(null,path[_0xcddd('0x27')](config[_0xcddd('0x28')],_0xcddd('0x30')));},'filename':function(_0xd0772f,_0x46be50,_0xe7c9){_0xe7c9(null,util[_0xcddd('0x2a')](_0xcddd('0x2b'),Date[_0xcddd('0x31')](),_0x46be50[_0xcddd('0x33')]));}})});router[_0xcddd('0x23')](_0xcddd('0x35'),upload[_0xcddd('0x2d')](_0xcddd('0x2e')),controller[_0xcddd('0x36')]);router['post'](_0xcddd('0x37'),controller[_0xcddd('0x38')]);const offlineUploadMulter=multer({'storage':multer['diskStorage']({'destination':function(_0xd0649d,_0x2e7aac,_0x4aa845){const _0x3d5f62=path[_0xcddd('0x27')](config['root'],_0xcddd('0x39'),_0xcddd('0x3a'),_0xcddd('0x3b'));fs_extra[_0xcddd('0x3c')](_0x3d5f62,function(){_0x4aa845(null,_0x3d5f62);});},'filename':function(_0x1b6cef,_0x27f7c3,_0x92b9d){const _0x4d114a=_0x27f7c3[_0xcddd('0x33')][_0xcddd('0x3d')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x25c1d7=path[_0xcddd('0x3e')](_0x4d114a);const _0x2caeb0=Date[_0xcddd('0x31')]()+'-'+_0x4d114a[_0xcddd('0x3d')](_0x25c1d7,'')+_0x25c1d7;_0x92b9d(null,_0x2caeb0);}})});router['post'](_0xcddd('0x3f'),offlineUploadMulter[_0xcddd('0x40')](),controller['offline']);router[_0xcddd('0x23')](_0xcddd('0x17'),auth[_0xcddd('0xd')](),controller[_0xcddd('0x41')]);router[_0xcddd('0x23')](_0xcddd('0x42'),auth[_0xcddd('0xd')](),controller['addApplications']);router[_0xcddd('0x23')](_0xcddd('0x1c'),auth['isAuthenticated'](),controller[_0xcddd('0x43')]);router[_0xcddd('0x23')]('/:id/users',auth['isAuthenticated'](),controller['addAgents']);router[_0xcddd('0x44')](_0xcddd('0x45'),auth['isAuthenticated'](),controller[_0xcddd('0x46')]);router['delete']('/:id',auth[_0xcddd('0xd')](),controller['destroy']);router[_0xcddd('0x47')](_0xcddd('0x10'),auth[_0xcddd('0xd')](),controller[_0xcddd('0x48')]);router['delete'](_0xcddd('0x49'),auth[_0xcddd('0xd')](),controller['removeAnswers']);router[_0xcddd('0x47')](_0xcddd('0x21'),auth[_0xcddd('0xd')](),controller['removeAgents']);module[_0xcddd('0x4a')]=router;
\ No newline at end of file
+var _0x675f=['isAuthenticated','index','get','describe','/:id/dispositions','getDispositions','/:id/canned_answers','getLogo','/:id/avatar','getAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','/:id/applications','getApplications','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','/:id/users','getAgents','post','create','addDisposition','addAnswer','diskStorage','join','root','format','%s-%s','now','/:id/logo','single','file','addLogo','server/files/images/avatars/','originalname','addAvatar','/:id/system_avatar','server/files','attachments','offline-chat','ensureDir','extname','/:id/offline','offline','addInteraction','addProactiveActions','addAgents','put','/:id','update','delete','removeAnswers','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller'];(function(_0x424a9a,_0x2dd9af){var _0xa7831c=function(_0x512534){while(--_0x512534){_0x424a9a['push'](_0x424a9a['shift']());}};_0xa7831c(++_0x2dd9af);}(_0x675f,0x149));var _0xf675=function(_0xa62b04,_0x40a760){_0xa62b04=_0xa62b04-0x0;var _0x2729d8=_0x675f[_0xa62b04];return _0x2729d8;};'use strict';var multer=require(_0xf675('0x0'));var util=require(_0xf675('0x1'));var path=require(_0xf675('0x2'));var timeout=require(_0xf675('0x3'));var express=require(_0xf675('0x4'));var router=express[_0xf675('0x5')]();var fs_extra=require(_0xf675('0x6'));var auth=require(_0xf675('0x7'));var interaction=require(_0xf675('0x8'));var config=require(_0xf675('0x9'));var controller=require(_0xf675('0xa'));router['get']('/',auth[_0xf675('0xb')](),controller[_0xf675('0xc')]);router[_0xf675('0xd')]('/describe',auth[_0xf675('0xb')](),controller[_0xf675('0xe')]);router[_0xf675('0xd')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xf675('0xd')](_0xf675('0xf'),auth[_0xf675('0xb')](),controller[_0xf675('0x10')]);router['get'](_0xf675('0x11'),auth['isAuthenticated'](),controller['getAnswers']);router[_0xf675('0xd')]('/:id/logo',controller[_0xf675('0x12')]);router[_0xf675('0xd')](_0xf675('0x13'),controller[_0xf675('0x14')]);router[_0xf675('0xd')]('/:id/customer_avatar',controller['getCustomerAvatar']);router[_0xf675('0xd')]('/:id/system_avatar',controller['getSystemAvatar']);router[_0xf675('0xd')](_0xf675('0x15'),auth[_0xf675('0xb')](),controller[_0xf675('0x16')]);router['get'](_0xf675('0x17'),controller[_0xf675('0x18')]);router[_0xf675('0xd')](_0xf675('0x19'),auth[_0xf675('0xb')](),controller[_0xf675('0x1a')]);router[_0xf675('0xd')](_0xf675('0x1b'),auth['isAuthenticated'](),controller[_0xf675('0x1c')]);router['get'](_0xf675('0x1d'),controller[_0xf675('0x1e')]);router[_0xf675('0xd')](_0xf675('0x1f'),auth['isAuthenticated'](),controller['getOfflineMessages']);router[_0xf675('0xd')](_0xf675('0x20'),auth[_0xf675('0xb')](),controller[_0xf675('0x21')]);router[_0xf675('0x22')]('/',auth['isAuthenticated'](),controller[_0xf675('0x23')]);router[_0xf675('0x22')](_0xf675('0xf'),auth['isAuthenticated'](),controller[_0xf675('0x24')]);router[_0xf675('0x22')]('/:id/canned_answers',auth[_0xf675('0xb')](),controller[_0xf675('0x25')]);var upload=multer({'storage':multer[_0xf675('0x26')]({'destination':function(_0x261e22,_0xe35d0e,_0x436f25){_0x436f25(null,path[_0xf675('0x27')](config[_0xf675('0x28')],'server/files/images/logos/'));},'filename':function(_0x2b4193,_0xbaa712,_0xbd115a){_0xbd115a(null,util[_0xf675('0x29')](_0xf675('0x2a'),Date[_0xf675('0x2b')](),_0xbaa712['originalname']));}})});router[_0xf675('0x22')](_0xf675('0x2c'),upload[_0xf675('0x2d')](_0xf675('0x2e')),controller[_0xf675('0x2f')]);var upload=multer({'storage':multer[_0xf675('0x26')]({'destination':function(_0x1be7ab,_0x376ff8,_0x2cdb38){_0x2cdb38(null,path[_0xf675('0x27')](config['root'],_0xf675('0x30')));},'filename':function(_0x4e40a7,_0x4a2bcc,_0x555e19){_0x555e19(null,util[_0xf675('0x29')](_0xf675('0x2a'),Date[_0xf675('0x2b')](),_0x4a2bcc[_0xf675('0x31')]));}})});router[_0xf675('0x22')](_0xf675('0x13'),upload[_0xf675('0x2d')](_0xf675('0x2e')),controller[_0xf675('0x32')]);var upload=multer({'storage':multer[_0xf675('0x26')]({'destination':function(_0x5d3235,_0x3b6082,_0x2292d9){_0x2292d9(null,path[_0xf675('0x27')](config[_0xf675('0x28')],_0xf675('0x30')));},'filename':function(_0x1f8358,_0x267adc,_0x4f6b2c){_0x4f6b2c(null,util[_0xf675('0x29')](_0xf675('0x2a'),Date[_0xf675('0x2b')](),_0x267adc[_0xf675('0x31')]));}})});router['post']('/:id/customer_avatar',upload[_0xf675('0x2d')]('file'),controller['addCustomerAvatar']);var upload=multer({'storage':multer[_0xf675('0x26')]({'destination':function(_0x5dba7f,_0x3216c0,_0x26eb36){_0x26eb36(null,path['join'](config[_0xf675('0x28')],_0xf675('0x30')));},'filename':function(_0x33b416,_0x41df8c,_0x396e66){_0x396e66(null,util[_0xf675('0x29')]('%s-%s',Date[_0xf675('0x2b')](),_0x41df8c[_0xf675('0x31')]));}})});router[_0xf675('0x22')](_0xf675('0x33'),upload['single']('file'),controller['addSystemAvatar']);router[_0xf675('0x22')]('/:id/notify',controller['notify']);const offlineUploadMulter=multer({'storage':multer[_0xf675('0x26')]({'destination':function(_0x27b839,_0x5196a7,_0x4b2c95){const _0x44d952=path[_0xf675('0x27')](config[_0xf675('0x28')],_0xf675('0x34'),_0xf675('0x35'),_0xf675('0x36'));fs_extra[_0xf675('0x37')](_0x44d952,function(){_0x4b2c95(null,_0x44d952);});},'filename':function(_0x17813e,_0x5da6a2,_0x41b5f3){const _0x5ad593=_0x5da6a2[_0xf675('0x31')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x4bdd80=path[_0xf675('0x38')](_0x5ad593);const _0x464c57=Date[_0xf675('0x2b')]()+'-'+_0x5ad593['replace'](_0x4bdd80,'')+_0x4bdd80;_0x41b5f3(null,_0x464c57);}})});router['post'](_0xf675('0x39'),offlineUploadMulter['any'](),controller[_0xf675('0x3a')]);router[_0xf675('0x22')](_0xf675('0x15'),auth[_0xf675('0xb')](),controller[_0xf675('0x3b')]);router[_0xf675('0x22')](_0xf675('0x19'),auth[_0xf675('0xb')](),controller['addApplications']);router['post']('/:id/proactive_actions',auth[_0xf675('0xb')](),controller[_0xf675('0x3c')]);router[_0xf675('0x22')](_0xf675('0x20'),auth[_0xf675('0xb')](),controller[_0xf675('0x3d')]);router[_0xf675('0x3e')](_0xf675('0x3f'),auth[_0xf675('0xb')](),controller[_0xf675('0x40')]);router[_0xf675('0x41')]('/:id',auth[_0xf675('0xb')](),controller['destroy']);router[_0xf675('0x41')](_0xf675('0xf'),auth[_0xf675('0xb')](),controller['removeDispositions']);router[_0xf675('0x41')]('/:id/canned_answers',auth[_0xf675('0xb')](),controller[_0xf675('0x42')]);router[_0xf675('0x41')]('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0xf675('0x43')]=router;
\ No newline at end of file
index 5e2fbc5..80c596a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b4e=['exports','STRING'];(function(_0x2fa0d1,_0x4537f4){var _0xd7329=function(_0x424440){while(--_0x424440){_0x2fa0d1['push'](_0x2fa0d1['shift']());}};_0xd7329(++_0x4537f4);}(_0x6b4e,0x1a8));var _0xe6b4=function(_0x23d09b,_0x27ef79){_0x23d09b=_0x23d09b-0x0;var _0x347656=_0x6b4e[_0x23d09b];return _0x347656;};'use strict';var Sequelize=require('sequelize');module[_0xe6b4('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM']('AmazonAWS','Google'),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0xe6b4('0x1')]},'data2':{'type':Sequelize[_0xe6b4('0x1')]}};
\ No newline at end of file
+var _0x938d=['sequelize','exports','ENUM','AmazonAWS','Google'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x938d,0x122));var _0xd938=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x938d[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xd938('0x0'));module[_0xd938('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xd938('0x2')](_0xd938('0x3'),_0xd938('0x4')),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize['STRING']}};
\ No newline at end of file
index ed9fa42..c0377aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['error','stack','name','send','index','CloudProvider','fieldName','type','key','map','query','keys','model','fields','attributes','length','nolimit','order','sort','filters','filter','where','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','rawAttributes','intersection','include','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','apply','save','update','then','sendStatus'];(function(_0x391606,_0x36e844){var _0x579bc3=function(_0x822d86){while(--_0x822d86){_0x391606['push'](_0x391606['shift']());}};_0x579bc3(++_0x36e844);}(_0xdb28,0x106));var _0x8db2=function(_0x238688,_0x16eac4){_0x238688=_0x238688-0x0;var _0x5149c3=_0xdb28[_0x238688];return _0x5149c3;};'use strict';var emlformat=require(_0x8db2('0x0'));var rimraf=require(_0x8db2('0x1'));var zipdir=require(_0x8db2('0x2'));var jsonpatch=require(_0x8db2('0x3'));var rp=require('request-promise');var moment=require(_0x8db2('0x4'));var BPromise=require(_0x8db2('0x5'));var Mustache=require(_0x8db2('0x6'));var util=require(_0x8db2('0x7'));var path=require(_0x8db2('0x8'));var sox=require('sox');var csv=require(_0x8db2('0x9'));var ejs=require(_0x8db2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8db2('0xb'));var crypto=require(_0x8db2('0xc'));var jsforce=require(_0x8db2('0xd'));var deskjs=require(_0x8db2('0xe'));var toCsv=require(_0x8db2('0x9'));var querystring=require(_0x8db2('0xf'));var Papa=require(_0x8db2('0x10'));var Redis=require('ioredis');var authService=require(_0x8db2('0x11'));var qs=require(_0x8db2('0x12'));var as=require(_0x8db2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8db2('0x14'))(_0x8db2('0x15'));var utils=require('../../config/utils');var config=require(_0x8db2('0x16'));var licenseUtil=require(_0x8db2('0x17'));var db=require(_0x8db2('0x18'))['db'];function respondWithStatusCode(_0x204f49,_0x37d017){_0x37d017=_0x37d017||0xcc;return function(_0x559fb1){if(_0x559fb1){return _0x204f49['sendStatus'](_0x37d017);}return _0x204f49[_0x8db2('0x19')](_0x37d017)[_0x8db2('0x1a')]();};}function respondWithResult(_0x350d61,_0x1d6a15){_0x1d6a15=_0x1d6a15||0xc8;return function(_0x227355){if(_0x227355){return _0x350d61[_0x8db2('0x19')](_0x1d6a15)[_0x8db2('0x1b')](_0x227355);}};}function respondWithFilteredResult(_0x3c96a7,_0x131252){return function(_0x16c8c2){if(_0x16c8c2){var _0x5489a9=typeof _0x131252[_0x8db2('0x1c')]===_0x8db2('0x1d')&&typeof _0x131252['limit']===_0x8db2('0x1d');var _0x44957d=_0x16c8c2[_0x8db2('0x1e')];var _0x3fddc2=_0x5489a9?0x0:_0x131252[_0x8db2('0x1c')];var _0x46ce14=_0x5489a9?_0x16c8c2['count']:_0x131252['offset']+_0x131252[_0x8db2('0x1f')];var _0x104e33;if(_0x46ce14>=_0x44957d){_0x46ce14=_0x44957d;_0x104e33=0xc8;}else{_0x104e33=0xce;}_0x3c96a7[_0x8db2('0x19')](_0x104e33);return _0x3c96a7[_0x8db2('0x20')]('Content-Range',_0x3fddc2+'-'+_0x46ce14+'/'+_0x44957d)[_0x8db2('0x1b')](_0x16c8c2);}return null;};}function patchUpdates(_0x36a9ff){return function(_0x260940){try{jsonpatch[_0x8db2('0x21')](_0x260940,_0x36a9ff,!![]);}catch(_0x3dbe8e){return BPromise['reject'](_0x3dbe8e);}return _0x260940[_0x8db2('0x22')]();};}function saveUpdates(_0x3e30e6,_0x18f69c){return function(_0x125be2){if(_0x125be2){return _0x125be2[_0x8db2('0x23')](_0x3e30e6)[_0x8db2('0x24')](function(_0x796ec1){return _0x796ec1;});}return null;};}function removeEntity(_0x5c6614,_0x256202){return function(_0x4f6516){if(_0x4f6516){return _0x4f6516['destroy']()['then'](function(){_0x5c6614['status'](0xcc)[_0x8db2('0x1a')]();});}};}function handleEntityNotFound(_0x29b5cd,_0x3be281){return function(_0x2baed0){if(!_0x2baed0){_0x29b5cd[_0x8db2('0x25')](0x194);}return _0x2baed0;};}function handleError(_0x8d4f54,_0x58cd9d){_0x58cd9d=_0x58cd9d||0x1f4;return function(_0x3544ba){logger[_0x8db2('0x26')](_0x3544ba[_0x8db2('0x27')]);if(_0x3544ba[_0x8db2('0x28')]){delete _0x3544ba['name'];}_0x8d4f54[_0x8db2('0x19')](_0x58cd9d)[_0x8db2('0x29')](_0x3544ba);};}exports[_0x8db2('0x2a')]=function(_0x1687ed,_0xbe5ece){var _0x21bae5={},_0xa54ea3={},_0x3124d5={'count':0x0,'rows':[]};var _0xbc5366=_['map'](db[_0x8db2('0x2b')]['rawAttributes'],function(_0x59cb77){return{'name':_0x59cb77[_0x8db2('0x2c')],'type':_0x59cb77[_0x8db2('0x2d')][_0x8db2('0x2e')]};});_0xa54ea3['model']=_[_0x8db2('0x2f')](_0xbc5366,'name');_0xa54ea3[_0x8db2('0x30')]=_[_0x8db2('0x31')](_0x1687ed[_0x8db2('0x30')]);_0xa54ea3['filters']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],_0xa54ea3[_0x8db2('0x30')]);_0x21bae5['attributes']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],qs[_0x8db2('0x33')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x33')]));_0x21bae5[_0x8db2('0x34')]=_0x21bae5[_0x8db2('0x34')][_0x8db2('0x35')]?_0x21bae5[_0x8db2('0x34')]:_0xa54ea3[_0x8db2('0x32')];if(!_0x1687ed[_0x8db2('0x30')]['hasOwnProperty'](_0x8db2('0x36'))){_0x21bae5[_0x8db2('0x1f')]=qs['limit'](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x1f')]);_0x21bae5['offset']=qs['offset'](_0x1687ed[_0x8db2('0x30')]['offset']);}_0x21bae5[_0x8db2('0x37')]=qs[_0x8db2('0x38')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x38')]);_0x21bae5['where']=qs[_0x8db2('0x39')](_['pick'](_0x1687ed[_0x8db2('0x30')],_0xa54ea3[_0x8db2('0x39')]),_0xbc5366);if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]){_0x21bae5['where']=_['merge'](_0x21bae5[_0x8db2('0x3b')],{'$or':_[_0x8db2('0x2f')](_0xbc5366,function(_0x5dc2b4){if(_0x5dc2b4[_0x8db2('0x2d')]!==_0x8db2('0x3c')){var _0x656dd2={};_0x656dd2[_0x5dc2b4['name']]={'$like':'%'+_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]+'%'};return _0x656dd2;}})});}_0x21bae5=_[_0x8db2('0x3d')]({},_0x21bae5,_0x1687ed[_0x8db2('0x3e')]);var _0x2e6f0c={'where':_0x21bae5[_0x8db2('0x3b')]};return db[_0x8db2('0x2b')][_0x8db2('0x1e')](_0x2e6f0c)[_0x8db2('0x24')](function(_0x63c561){_0x3124d5[_0x8db2('0x1e')]=_0x63c561;if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3f')]){_0x21bae5['include']=[{'all':!![]}];}return db[_0x8db2('0x2b')][_0x8db2('0x40')](_0x21bae5);})['then'](function(_0x49a7ae){_0x3124d5[_0x8db2('0x41')]=_0x49a7ae;return _0x3124d5;})['then'](respondWithFilteredResult(_0xbe5ece,_0x21bae5))[_0x8db2('0x42')](handleError(_0xbe5ece,null));};exports[_0x8db2('0x43')]=function(_0x313130,_0x307783){var _0xb4fe2c={'raw':!![],'where':{'id':_0x313130[_0x8db2('0x44')]['id']}},_0x30d606={};_0x30d606['model']=_[_0x8db2('0x31')](db[_0x8db2('0x2b')][_0x8db2('0x45')]);_0x30d606[_0x8db2('0x30')]=_['keys'](_0x313130[_0x8db2('0x30')]);_0x30d606[_0x8db2('0x39')]=_[_0x8db2('0x46')](_0x30d606[_0x8db2('0x32')],_0x30d606['query']);_0xb4fe2c[_0x8db2('0x34')]=_['intersection'](_0x30d606[_0x8db2('0x32')],qs[_0x8db2('0x33')](_0x313130[_0x8db2('0x30')]['fields']));_0xb4fe2c['attributes']=_0xb4fe2c[_0x8db2('0x34')]['length']?_0xb4fe2c[_0x8db2('0x34')]:_0x30d606[_0x8db2('0x32')];if(_0x313130[_0x8db2('0x30')][_0x8db2('0x3f')]){_0xb4fe2c[_0x8db2('0x47')]=[{'all':!![]}];}_0xb4fe2c=_[_0x8db2('0x3d')]({},_0xb4fe2c,_0x313130[_0x8db2('0x3e')]);return db[_0x8db2('0x2b')][_0x8db2('0x48')](_0xb4fe2c)[_0x8db2('0x24')](handleEntityNotFound(_0x307783,null))[_0x8db2('0x24')](respondWithResult(_0x307783,null))[_0x8db2('0x42')](handleError(_0x307783,null));};exports['create']=function(_0x449109,_0x2ada52){return db[_0x8db2('0x2b')][_0x8db2('0x49')](_0x449109['body'],{})['then'](respondWithResult(_0x2ada52,0xc9))[_0x8db2('0x42')](handleError(_0x2ada52,null));};exports[_0x8db2('0x23')]=function(_0x164020,_0x4c66e5){if(_0x164020['body']['id']){delete _0x164020['body']['id'];}return db[_0x8db2('0x2b')][_0x8db2('0x48')]({'where':{'id':_0x164020[_0x8db2('0x44')]['id']}})[_0x8db2('0x24')](handleEntityNotFound(_0x4c66e5,null))[_0x8db2('0x24')](saveUpdates(_0x164020[_0x8db2('0x4a')],null))[_0x8db2('0x24')](respondWithResult(_0x4c66e5,null))['catch'](handleError(_0x4c66e5,null));};exports['destroy']=function(_0x3d29bc,_0x18c6ef){return db[_0x8db2('0x2b')][_0x8db2('0x48')]({'where':{'id':_0x3d29bc[_0x8db2('0x44')]['id']}})[_0x8db2('0x24')](handleEntityNotFound(_0x18c6ef,null))[_0x8db2('0x24')](removeEntity(_0x18c6ef,null))[_0x8db2('0x42')](handleError(_0x18c6ef,null));};
\ No newline at end of file
+var _0x5f66=['update','catch','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','destroy','then','error','name','send','index','map','CloudProvider','rawAttributes','fieldName','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','show','params','find','create','body'];(function(_0x2e4d24,_0x2ec28b){var _0x53eb15=function(_0x4dc1c2){while(--_0x4dc1c2){_0x2e4d24['push'](_0x2e4d24['shift']());}};_0x53eb15(++_0x2ec28b);}(_0x5f66,0x1a0));var _0x65f6=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x5f66[_0x173441];return _0x2423a8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x65f6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x65f6('0x1'));var rp=require(_0x65f6('0x2'));var moment=require(_0x65f6('0x3'));var BPromise=require(_0x65f6('0x4'));var Mustache=require(_0x65f6('0x5'));var util=require('util');var path=require(_0x65f6('0x6'));var sox=require('sox');var csv=require(_0x65f6('0x7'));var ejs=require(_0x65f6('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x65f6('0x9'));var crypto=require(_0x65f6('0xa'));var jsforce=require(_0x65f6('0xb'));var deskjs=require(_0x65f6('0xc'));var toCsv=require(_0x65f6('0x7'));var querystring=require(_0x65f6('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x65f6('0xe'));var qs=require(_0x65f6('0xf'));var as=require(_0x65f6('0x10'));var hardwareService=require(_0x65f6('0x11'));var logger=require('../../config/logger')(_0x65f6('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x65f6('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x419819,_0x4862a5){_0x4862a5=_0x4862a5||0xcc;return function(_0x2f964a){if(_0x2f964a){return _0x419819[_0x65f6('0x14')](_0x4862a5);}return _0x419819[_0x65f6('0x15')](_0x4862a5)[_0x65f6('0x16')]();};}function respondWithResult(_0x369f96,_0x1d29fd){_0x1d29fd=_0x1d29fd||0xc8;return function(_0x44144b){if(_0x44144b){return _0x369f96[_0x65f6('0x15')](_0x1d29fd)[_0x65f6('0x17')](_0x44144b);}};}function respondWithFilteredResult(_0x3440af,_0x59154e){return function(_0x19b9ff){if(_0x19b9ff){var _0x49a913=typeof _0x59154e['offset']===_0x65f6('0x18')&&typeof _0x59154e[_0x65f6('0x19')]===_0x65f6('0x18');var _0x1c955c=_0x19b9ff[_0x65f6('0x1a')];var _0x1f974c=_0x49a913?0x0:_0x59154e[_0x65f6('0x1b')];var _0x18380e=_0x49a913?_0x19b9ff['count']:_0x59154e['offset']+_0x59154e[_0x65f6('0x19')];var _0x5b4055;if(_0x18380e>=_0x1c955c){_0x18380e=_0x1c955c;_0x5b4055=0xc8;}else{_0x5b4055=0xce;}_0x3440af['status'](_0x5b4055);return _0x3440af['set'](_0x65f6('0x1c'),_0x1f974c+'-'+_0x18380e+'/'+_0x1c955c)[_0x65f6('0x17')](_0x19b9ff);}return null;};}function patchUpdates(_0x5114a4){return function(_0x39e19f){try{jsonpatch[_0x65f6('0x1d')](_0x39e19f,_0x5114a4,!![]);}catch(_0xbee6a4){return BPromise[_0x65f6('0x1e')](_0xbee6a4);}return _0x39e19f[_0x65f6('0x1f')]();};}function saveUpdates(_0xc139c2,_0x581374){return function(_0x197a49){if(_0x197a49){return _0x197a49['update'](_0xc139c2)['then'](function(_0x212247){return _0x212247;});}return null;};}function removeEntity(_0xd173f4,_0x524e42){return function(_0x1eeaaa){if(_0x1eeaaa){return _0x1eeaaa[_0x65f6('0x20')]()[_0x65f6('0x21')](function(){_0xd173f4[_0x65f6('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9d7bb0,_0x59ea32){return function(_0x20a161){if(!_0x20a161){_0x9d7bb0['sendStatus'](0x194);}return _0x20a161;};}function handleError(_0x5cb131,_0x4fde2f){_0x4fde2f=_0x4fde2f||0x1f4;return function(_0x29abdb){logger[_0x65f6('0x22')](_0x29abdb['stack']);if(_0x29abdb[_0x65f6('0x23')]){delete _0x29abdb[_0x65f6('0x23')];}_0x5cb131['status'](_0x4fde2f)[_0x65f6('0x24')](_0x29abdb);};}exports[_0x65f6('0x25')]=function(_0x28d0df,_0x559330){var _0x4ac04b={},_0x488d36={},_0x266cfe={'count':0x0,'rows':[]};var _0x3c032f=_[_0x65f6('0x26')](db[_0x65f6('0x27')][_0x65f6('0x28')],function(_0x14a387){return{'name':_0x14a387[_0x65f6('0x29')],'type':_0x14a387['type']['key']};});_0x488d36[_0x65f6('0x2a')]=_[_0x65f6('0x26')](_0x3c032f,'name');_0x488d36['query']=_[_0x65f6('0x2b')](_0x28d0df[_0x65f6('0x2c')]);_0x488d36[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],_0x488d36[_0x65f6('0x2c')]);_0x4ac04b['attributes']=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],qs[_0x65f6('0x2f')](_0x28d0df['query'][_0x65f6('0x2f')]));_0x4ac04b[_0x65f6('0x30')]=_0x4ac04b[_0x65f6('0x30')][_0x65f6('0x31')]?_0x4ac04b[_0x65f6('0x30')]:_0x488d36[_0x65f6('0x2a')];if(!_0x28d0df['query'][_0x65f6('0x32')](_0x65f6('0x33'))){_0x4ac04b['limit']=qs[_0x65f6('0x19')](_0x28d0df['query'][_0x65f6('0x19')]);_0x4ac04b['offset']=qs[_0x65f6('0x1b')](_0x28d0df[_0x65f6('0x2c')]['offset']);}_0x4ac04b[_0x65f6('0x34')]=qs[_0x65f6('0x35')](_0x28d0df[_0x65f6('0x2c')]['sort']);_0x4ac04b['where']=qs[_0x65f6('0x2d')](_['pick'](_0x28d0df[_0x65f6('0x2c')],_0x488d36['filters']),_0x3c032f);if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]){_0x4ac04b['where']=_[_0x65f6('0x37')](_0x4ac04b['where'],{'$or':_['map'](_0x3c032f,function(_0x71b16b){if(_0x71b16b[_0x65f6('0x38')]!==_0x65f6('0x39')){var _0x313be5={};_0x313be5[_0x71b16b[_0x65f6('0x23')]]={'$like':'%'+_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]+'%'};return _0x313be5;}})});}_0x4ac04b=_[_0x65f6('0x37')]({},_0x4ac04b,_0x28d0df['options']);var _0x3aa254={'where':_0x4ac04b['where']};return db[_0x65f6('0x27')][_0x65f6('0x1a')](_0x3aa254)[_0x65f6('0x21')](function(_0x2ea7f7){_0x266cfe['count']=_0x2ea7f7;if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x4ac04b[_0x65f6('0x3b')]=[{'all':!![]}];}return db[_0x65f6('0x27')][_0x65f6('0x3c')](_0x4ac04b);})[_0x65f6('0x21')](function(_0xed4c96){_0x266cfe[_0x65f6('0x3d')]=_0xed4c96;return _0x266cfe;})[_0x65f6('0x21')](respondWithFilteredResult(_0x559330,_0x4ac04b))['catch'](handleError(_0x559330,null));};exports[_0x65f6('0x3e')]=function(_0x400ed2,_0x377ae5){var _0x181798={'raw':!![],'where':{'id':_0x400ed2[_0x65f6('0x3f')]['id']}},_0x83e2d9={};_0x83e2d9[_0x65f6('0x2a')]=_[_0x65f6('0x2b')](db[_0x65f6('0x27')][_0x65f6('0x28')]);_0x83e2d9[_0x65f6('0x2c')]=_[_0x65f6('0x2b')](_0x400ed2[_0x65f6('0x2c')]);_0x83e2d9[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x83e2d9[_0x65f6('0x2a')],_0x83e2d9['query']);_0x181798[_0x65f6('0x30')]=_[_0x65f6('0x2e')](_0x83e2d9[_0x65f6('0x2a')],qs[_0x65f6('0x2f')](_0x400ed2['query'][_0x65f6('0x2f')]));_0x181798[_0x65f6('0x30')]=_0x181798[_0x65f6('0x30')]['length']?_0x181798[_0x65f6('0x30')]:_0x83e2d9[_0x65f6('0x2a')];if(_0x400ed2[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x181798['include']=[{'all':!![]}];}_0x181798=_[_0x65f6('0x37')]({},_0x181798,_0x400ed2['options']);return db[_0x65f6('0x27')][_0x65f6('0x40')](_0x181798)['then'](handleEntityNotFound(_0x377ae5,null))[_0x65f6('0x21')](respondWithResult(_0x377ae5,null))['catch'](handleError(_0x377ae5,null));};exports[_0x65f6('0x41')]=function(_0x4d9b76,_0x2d1706){return db[_0x65f6('0x27')][_0x65f6('0x41')](_0x4d9b76[_0x65f6('0x42')],{})['then'](respondWithResult(_0x2d1706,0xc9))['catch'](handleError(_0x2d1706,null));};exports[_0x65f6('0x43')]=function(_0x15d3ba,_0x3b647a){if(_0x15d3ba[_0x65f6('0x42')]['id']){delete _0x15d3ba[_0x65f6('0x42')]['id'];}return db[_0x65f6('0x27')][_0x65f6('0x40')]({'where':{'id':_0x15d3ba[_0x65f6('0x3f')]['id']}})[_0x65f6('0x21')](handleEntityNotFound(_0x3b647a,null))['then'](saveUpdates(_0x15d3ba[_0x65f6('0x42')],null))[_0x65f6('0x21')](respondWithResult(_0x3b647a,null))[_0x65f6('0x44')](handleError(_0x3b647a,null));};exports['destroy']=function(_0x47e749,_0x42d453){return db['CloudProvider'][_0x65f6('0x40')]({'where':{'id':_0x47e749[_0x65f6('0x3f')]['id']}})['then'](handleEntityNotFound(_0x42d453,null))[_0x65f6('0x21')](removeEntity(_0x42d453,null))['catch'](handleError(_0x42d453,null));};
\ No newline at end of file
index cad7376..46a84fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31bb=['api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','lodash','util','../../config/logger'];(function(_0xe0c162,_0x38fb47){var _0x2e5d28=function(_0x1067f1){while(--_0x1067f1){_0xe0c162['push'](_0xe0c162['shift']());}};_0x2e5d28(++_0x38fb47);}(_0x31bb,0x15d));var _0xb31b=function(_0x464f7c,_0x2d0d64){_0x464f7c=_0x464f7c-0x0;var _0x504007=_0x31bb[_0x464f7c];return _0x504007;};'use strict';var _=require(_0xb31b('0x0'));var util=require(_0xb31b('0x1'));var logger=require(_0xb31b('0x2'))(_0xb31b('0x3'));var moment=require('moment');var BPromise=require(_0xb31b('0x4'));var rp=require(_0xb31b('0x5'));var fs=require('fs');var path=require(_0xb31b('0x6'));var rimraf=require(_0xb31b('0x7'));var config=require(_0xb31b('0x8'));var attributes=require('./cloudProvider.attributes');module[_0xb31b('0x9')]=function(_0x2db231,_0x1ec9b5){return _0x2db231[_0xb31b('0xa')]('CloudProvider',attributes,{'tableName':'cloud_providers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x07ca=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','define','CloudProvider'];(function(_0x1cca4d,_0x1aa72f){var _0x270153=function(_0x1386d4){while(--_0x1386d4){_0x1cca4d['push'](_0x1cca4d['shift']());}};_0x270153(++_0x1aa72f);}(_0x07ca,0x16b));var _0xa07c=function(_0x9e0cb3,_0x9cd497){_0x9e0cb3=_0x9e0cb3-0x0;var _0x5926b7=_0x07ca[_0x9e0cb3];return _0x5926b7;};'use strict';var _=require(_0xa07c('0x0'));var util=require(_0xa07c('0x1'));var logger=require(_0xa07c('0x2'))(_0xa07c('0x3'));var moment=require(_0xa07c('0x4'));var BPromise=require(_0xa07c('0x5'));var rp=require(_0xa07c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa07c('0x7'));var config=require(_0xa07c('0x8'));var attributes=require('./cloudProvider.attributes');module['exports']=function(_0x740cf,_0x9e1f39){return _0x740cf[_0xa07c('0x9')](_0xa07c('0xa'),attributes,{'tableName':'cloud_providers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2156d64..40d83fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x056b=['stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','CloudProvider,\x20%s,\x20%s','request\x20sent','CloudProvider,\x20%s,\x20%s,\x20%s'];(function(_0x30bba0,_0x2f9580){var _0x507c27=function(_0x5aa1b4){while(--_0x5aa1b4){_0x30bba0['push'](_0x30bba0['shift']());}};_0x507c27(++_0x2f9580);}(_0x056b,0xb6));var _0xb056=function(_0x161863,_0x7256e3){_0x161863=_0x161863-0x0;var _0x5bf184=_0x056b[_0x161863];return _0x5bf184;};'use strict';var _=require('lodash');var util=require(_0xb056('0x0'));var moment=require(_0xb056('0x1'));var BPromise=require(_0xb056('0x2'));var rs=require(_0xb056('0x3'));var fs=require('fs');var Redis=require(_0xb056('0x4'));var db=require(_0xb056('0x5'))['db'];var utils=require(_0xb056('0x6'));var logger=require(_0xb056('0x7'))(_0xb056('0x8'));var config=require(_0xb056('0x9'));var jayson=require(_0xb056('0xa'));var client=jayson['client'][_0xb056('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x314637,_0x3eae69,_0x3c9b89){return new BPromise(function(_0x80daf1,_0x6bf4c){return client['request'](_0x314637,_0x3c9b89)['then'](function(_0x37a86d){logger[_0xb056('0xc')](_0xb056('0xd'),_0x3eae69,_0xb056('0xe'));logger['debug'](_0xb056('0xf'),_0x3eae69,'request\x20sent',JSON[_0xb056('0x10')](_0x37a86d));if(_0x37a86d[_0xb056('0x11')]){if(_0x37a86d[_0xb056('0x11')][_0xb056('0x12')]===0x1f4){logger[_0xb056('0x11')]('CloudProvider,\x20%s,\x20%s',_0x3eae69,_0x37a86d['error'][_0xb056('0x13')]);return _0x6bf4c(_0x37a86d[_0xb056('0x11')]['message']);}logger[_0xb056('0x11')](_0xb056('0xd'),_0x3eae69,_0x37a86d[_0xb056('0x11')][_0xb056('0x13')]);return _0x80daf1(_0x37a86d[_0xb056('0x11')][_0xb056('0x13')]);}else{logger[_0xb056('0xc')]('CloudProvider,\x20%s,\x20%s',_0x3eae69,_0xb056('0xe'));_0x80daf1(_0x37a86d[_0xb056('0x14')][_0xb056('0x13')]);}})[_0xb056('0x15')](function(_0x5a4ef1){logger[_0xb056('0x11')]('CloudProvider,\x20%s,\x20%s',_0x3eae69,_0x5a4ef1);_0x6bf4c(_0x5a4ef1);});});}
\ No newline at end of file
+var _0x0c3a=['jayson/promise','client','request','then','info','CloudProvider,\x20%s,\x20%s','CloudProvider,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0x0c3a,0x171));var _0xa0c3=function(_0x24358b,_0x11ba19){_0x24358b=_0x24358b-0x0;var _0xae1267=_0x0c3a[_0x24358b];return _0xae1267;};'use strict';var _=require(_0xa0c3('0x0'));var util=require(_0xa0c3('0x1'));var moment=require(_0xa0c3('0x2'));var BPromise=require(_0xa0c3('0x3'));var rs=require(_0xa0c3('0x4'));var fs=require('fs');var Redis=require(_0xa0c3('0x5'));var db=require(_0xa0c3('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xa0c3('0x7'))(_0xa0c3('0x8'));var config=require('../../config/environment');var jayson=require(_0xa0c3('0x9'));var client=jayson[_0xa0c3('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2fd974,_0x4f90f8,_0x5770bd){return new BPromise(function(_0x10da7c,_0x109c9a){return client[_0xa0c3('0xb')](_0x2fd974,_0x5770bd)[_0xa0c3('0xc')](function(_0x5d7c35){logger[_0xa0c3('0xd')](_0xa0c3('0xe'),_0x4f90f8,'request\x20sent');logger['debug'](_0xa0c3('0xf'),_0x4f90f8,_0xa0c3('0x10'),JSON['stringify'](_0x5d7c35));if(_0x5d7c35[_0xa0c3('0x11')]){if(_0x5d7c35[_0xa0c3('0x11')][_0xa0c3('0x12')]===0x1f4){logger['error'](_0xa0c3('0xe'),_0x4f90f8,_0x5d7c35[_0xa0c3('0x11')]['message']);return _0x109c9a(_0x5d7c35['error'][_0xa0c3('0x13')]);}logger[_0xa0c3('0x11')](_0xa0c3('0xe'),_0x4f90f8,_0x5d7c35[_0xa0c3('0x11')][_0xa0c3('0x13')]);return _0x10da7c(_0x5d7c35['error'][_0xa0c3('0x13')]);}else{logger['info'](_0xa0c3('0xe'),_0x4f90f8,'request\x20sent');_0x10da7c(_0x5d7c35['result']['message']);}})[_0xa0c3('0x14')](function(_0x474695){logger[_0xa0c3('0x11')]('CloudProvider,\x20%s,\x20%s',_0x4f90f8,_0x474695);_0x109c9a(_0x474695);});});}
\ No newline at end of file
index 548520c..b1191f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbf5=['create','put','update','delete','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./cloudProvider.controller','get','/:id','show','post','isAuthenticated'];(function(_0x378b89,_0x24bbc2){var _0x12e99a=function(_0x177d1a){while(--_0x177d1a){_0x378b89['push'](_0x378b89['shift']());}};_0x12e99a(++_0x24bbc2);}(_0xfbf5,0x174));var _0x5fbf=function(_0x205ef0,_0x288507){_0x205ef0=_0x205ef0-0x0;var _0x2fedf8=_0xfbf5[_0x205ef0];return _0x2fedf8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x5fbf('0x0'));var timeout=require(_0x5fbf('0x1'));var express=require(_0x5fbf('0x2'));var router=express[_0x5fbf('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x5fbf('0x4'));var config=require(_0x5fbf('0x5'));var controller=require(_0x5fbf('0x6'));router[_0x5fbf('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x5fbf('0x7')](_0x5fbf('0x8'),auth['isAuthenticated'](),controller[_0x5fbf('0x9')]);router[_0x5fbf('0xa')]('/',auth[_0x5fbf('0xb')](),controller[_0x5fbf('0xc')]);router[_0x5fbf('0xd')](_0x5fbf('0x8'),auth[_0x5fbf('0xb')](),controller[_0x5fbf('0xe')]);router[_0x5fbf('0xf')](_0x5fbf('0x8'),auth[_0x5fbf('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x9b12=['create','put','delete','multer','util','connect-timeout','Router','../../components/interaction/service','../../config/environment','./cloudProvider.controller','get','isAuthenticated','index','/:id','show','post'];(function(_0xd4a4ca,_0x3172df){var _0x15803d=function(_0x320d25){while(--_0x320d25){_0xd4a4ca['push'](_0xd4a4ca['shift']());}};_0x15803d(++_0x3172df);}(_0x9b12,0x83));var _0x29b1=function(_0x542e27,_0x549ee5){_0x542e27=_0x542e27-0x0;var _0x272d32=_0x9b12[_0x542e27];return _0x272d32;};'use strict';var multer=require(_0x29b1('0x0'));var util=require(_0x29b1('0x1'));var path=require('path');var timeout=require(_0x29b1('0x2'));var express=require('express');var router=express[_0x29b1('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x29b1('0x4'));var config=require(_0x29b1('0x5'));var controller=require(_0x29b1('0x6'));router[_0x29b1('0x7')]('/',auth[_0x29b1('0x8')](),controller[_0x29b1('0x9')]);router['get'](_0x29b1('0xa'),auth['isAuthenticated'](),controller[_0x29b1('0xb')]);router[_0x29b1('0xc')]('/',auth[_0x29b1('0x8')](),controller[_0x29b1('0xd')]);router[_0x29b1('0xe')](_0x29b1('0xa'),auth[_0x29b1('0x8')](),controller['update']);router[_0x29b1('0xf')](_0x29b1('0xa'),auth[_0x29b1('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index b497b8d..245c09e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8322=['sequelize','exports','STRING','name'];(function(_0x282ad3,_0x284e00){var _0x17bed9=function(_0x346ff9){while(--_0x346ff9){_0x282ad3['push'](_0x282ad3['shift']());}};_0x17bed9(++_0x284e00);}(_0x8322,0xc8));var _0x2832=function(_0x1bb58c,_0x2c8a4d){_0x1bb58c=_0x1bb58c-0x0;var _0x277586=_0x8322[_0x1bb58c];return _0x277586;};'use strict';var Sequelize=require(_0x2832('0x0'));module[_0x2832('0x1')]={'name':{'type':Sequelize[_0x2832('0x2')],'unique':_0x2832('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x2832('0x2')]},'companyId':{'type':Sequelize[_0x2832('0x2')]},'website':{'type':Sequelize['STRING']},'phone':{'type':Sequelize['STRING']},'fax':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0x2832('0x2')]},'postalCode':{'type':Sequelize[_0x2832('0x2')]},'city':{'type':Sequelize[_0x2832('0x2')]},'country':{'type':Sequelize[_0x2832('0x2')]},'email':{'type':Sequelize[_0x2832('0x2')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x2832('0x2')]},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize[_0x2832('0x2')]},'sCity':{'type':Sequelize['STRING']},'sCountry':{'type':Sequelize[_0x2832('0x2')]},'description':{'type':Sequelize[_0x2832('0x2')]}};
\ No newline at end of file
+var _0x590b=['sequelize','exports','STRING','name'];(function(_0x153b2a,_0x37188a){var _0x3907e1=function(_0x16c456){while(--_0x16c456){_0x153b2a['push'](_0x153b2a['shift']());}};_0x3907e1(++_0x37188a);}(_0x590b,0x1cc));var _0xb590=function(_0x1f2e09,_0x51d100){_0x1f2e09=_0x1f2e09-0x0;var _0x32b2a6=_0x590b[_0x1f2e09];return _0x32b2a6;};'use strict';var Sequelize=require(_0xb590('0x0'));module[_0xb590('0x1')]={'name':{'type':Sequelize[_0xb590('0x2')],'unique':_0xb590('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0xb590('0x2')]},'companyId':{'type':Sequelize[_0xb590('0x2')]},'website':{'type':Sequelize[_0xb590('0x2')]},'phone':{'type':Sequelize[_0xb590('0x2')]},'fax':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0xb590('0x2')]},'postalCode':{'type':Sequelize[_0xb590('0x2')]},'city':{'type':Sequelize[_0xb590('0x2')]},'country':{'type':Sequelize[_0xb590('0x2')]},'email':{'type':Sequelize[_0xb590('0x2')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0xb590('0x2')]},'sStreet':{'type':Sequelize[_0xb590('0x2')]},'sPostalCode':{'type':Sequelize[_0xb590('0x2')]},'sCity':{'type':Sequelize[_0xb590('0x2')]},'sCountry':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xb590('0x2')]}};
\ No newline at end of file
index 1d0114f..fecc301 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaad0=['sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','get','Companies','UserProfileResource','destroy','then','end','stack','name','send','index','CmCompany','describe','model','keys','query','intersection','fields','attributes','length','nolimit','order','sort','where','filters','pick','merge','map','filter','options','findAll','rows','catch','show','rawAttributes','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','CmContact','addContacts','ids','omit','params','getContacts','hasOwnProperty','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path'];(function(_0x491a7f,_0x28bb80){var _0x3d8f44=function(_0xdaa716){while(--_0xdaa716){_0x491a7f['push'](_0x491a7f['shift']());}};_0x3d8f44(++_0x28bb80);}(_0xaad0,0x1b0));var _0x0aad=function(_0x3a87c1,_0x27326f){_0x3a87c1=_0x3a87c1-0x0;var _0x2117c2=_0xaad0[_0x3a87c1];return _0x2117c2;};'use strict';var emlformat=require(_0x0aad('0x0'));var rimraf=require(_0x0aad('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0aad('0x2'));var rp=require(_0x0aad('0x3'));var moment=require(_0x0aad('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0aad('0x5'));var util=require(_0x0aad('0x6'));var path=require(_0x0aad('0x7'));var sox=require(_0x0aad('0x8'));var csv=require(_0x0aad('0x9'));var ejs=require(_0x0aad('0xa'));var fs=require('fs');var fs_extra=require(_0x0aad('0xb'));var _=require(_0x0aad('0xc'));var squel=require(_0x0aad('0xd'));var crypto=require(_0x0aad('0xe'));var jsforce=require(_0x0aad('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x0aad('0x9'));var querystring=require(_0x0aad('0x10'));var Papa=require('papaparse');var Redis=require(_0x0aad('0x11'));var authService=require(_0x0aad('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x0aad('0x13'));var hardwareService=require(_0x0aad('0x14'));var logger=require('../../config/logger')(_0x0aad('0x15'));var utils=require(_0x0aad('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0aad('0x17'));var db=require(_0x0aad('0x18'))['db'];function respondWithStatusCode(_0x469a90,_0x4e995c){_0x4e995c=_0x4e995c||0xcc;return function(_0x1d1c4a){if(_0x1d1c4a){return _0x469a90[_0x0aad('0x19')](_0x4e995c);}return _0x469a90[_0x0aad('0x1a')](_0x4e995c)['end']();};}function respondWithResult(_0x73d246,_0x1446b1){_0x1446b1=_0x1446b1||0xc8;return function(_0x26bd4b){if(_0x26bd4b){return _0x73d246[_0x0aad('0x1a')](_0x1446b1)[_0x0aad('0x1b')](_0x26bd4b);}};}function respondWithFilteredResult(_0x123c2a,_0x3ea857){return function(_0x4958d8){if(_0x4958d8){var _0x25931e=typeof _0x3ea857[_0x0aad('0x1c')]===_0x0aad('0x1d')&&typeof _0x3ea857[_0x0aad('0x1e')]===_0x0aad('0x1d');var _0x343518=_0x4958d8[_0x0aad('0x1f')];var _0x2fe3ad=_0x25931e?0x0:_0x3ea857['offset'];var _0x399877=_0x25931e?_0x4958d8[_0x0aad('0x1f')]:_0x3ea857['offset']+_0x3ea857['limit'];var _0x201b85;if(_0x399877>=_0x343518){_0x399877=_0x343518;_0x201b85=0xc8;}else{_0x201b85=0xce;}_0x123c2a[_0x0aad('0x1a')](_0x201b85);return _0x123c2a[_0x0aad('0x20')](_0x0aad('0x21'),_0x2fe3ad+'-'+_0x399877+'/'+_0x343518)['json'](_0x4958d8);}return null;};}function patchUpdates(_0x5a8444){return function(_0xdd63af){try{jsonpatch[_0x0aad('0x22')](_0xdd63af,_0x5a8444,!![]);}catch(_0x3045a1){return BPromise[_0x0aad('0x23')](_0x3045a1);}return _0xdd63af[_0x0aad('0x24')]();};}function saveUpdates(_0x2305e0,_0x49df56){return function(_0x24909b){if(_0x24909b){return _0x24909b[_0x0aad('0x25')](_0x2305e0)['then'](function(_0xa567fc){return _0xa567fc;});}return null;};}function removeEntity(_0x25226c,_0x5c19df){return function(_0xded4e6){if(_0xded4e6){return _0xded4e6['destroy']()['then'](function(){var _0x11bacb=_0xded4e6[_0x0aad('0x26')]({'plain':!![]});var _0xd60035=_0x0aad('0x27');return db[_0x0aad('0x28')][_0x0aad('0x29')]({'where':{'type':_0xd60035,'resourceId':_0x11bacb['id']}})[_0x0aad('0x2a')](function(){return _0xded4e6;});})[_0x0aad('0x2a')](function(){_0x25226c[_0x0aad('0x1a')](0xcc)[_0x0aad('0x2b')]();});}};}function handleEntityNotFound(_0x5e9912,_0x117dac){return function(_0x4f0865){if(!_0x4f0865){_0x5e9912['sendStatus'](0x194);}return _0x4f0865;};}function handleError(_0x29349d,_0xf2266b){_0xf2266b=_0xf2266b||0x1f4;return function(_0xa64ab){logger['error'](_0xa64ab[_0x0aad('0x2c')]);if(_0xa64ab[_0x0aad('0x2d')]){delete _0xa64ab[_0x0aad('0x2d')];}_0x29349d[_0x0aad('0x1a')](_0xf2266b)[_0x0aad('0x2e')](_0xa64ab);};}exports[_0x0aad('0x2f')]=function(_0xe1b64d,_0x618e4c){var _0x4b1da4={},_0x5acc99={},_0xaef93b={'count':0x0,'rows':[]};return db[_0x0aad('0x30')][_0x0aad('0x31')]()[_0x0aad('0x2a')](function(_0x2a89a6){_0x5acc99[_0x0aad('0x32')]=_[_0x0aad('0x33')](_0x2a89a6);_0x5acc99[_0x0aad('0x34')]=_[_0x0aad('0x33')](_0xe1b64d[_0x0aad('0x34')]);_0x5acc99['filters']=_['intersection'](_0x5acc99[_0x0aad('0x32')],_0x5acc99['query']);_0x4b1da4['attributes']=_[_0x0aad('0x35')](_0x5acc99[_0x0aad('0x32')],qs[_0x0aad('0x36')](_0xe1b64d['query'][_0x0aad('0x36')]));_0x4b1da4[_0x0aad('0x37')]=_0x4b1da4[_0x0aad('0x37')][_0x0aad('0x38')]?_0x4b1da4[_0x0aad('0x37')]:_0x5acc99[_0x0aad('0x32')];if(!_0xe1b64d[_0x0aad('0x34')]['hasOwnProperty'](_0x0aad('0x39'))){_0x4b1da4[_0x0aad('0x1e')]=qs[_0x0aad('0x1e')](_0xe1b64d[_0x0aad('0x34')][_0x0aad('0x1e')]);_0x4b1da4[_0x0aad('0x1c')]=qs[_0x0aad('0x1c')](_0xe1b64d[_0x0aad('0x34')]['offset']);}_0x4b1da4[_0x0aad('0x3a')]=qs[_0x0aad('0x3b')](_0xe1b64d[_0x0aad('0x34')]['sort']);_0x4b1da4[_0x0aad('0x3c')]=qs[_0x0aad('0x3d')](_[_0x0aad('0x3e')](_0xe1b64d[_0x0aad('0x34')],_0x5acc99['filters']),_0x2a89a6);if(_0xe1b64d[_0x0aad('0x34')]['filter']){_0x4b1da4['where']=_[_0x0aad('0x3f')](_0x4b1da4[_0x0aad('0x3c')],{'$or':_[_0x0aad('0x40')](_0x4b1da4['attributes'],function(_0x97febc){var _0x294c80={};_0x294c80[_0x97febc]={'$like':'%'+_0xe1b64d[_0x0aad('0x34')][_0x0aad('0x41')]+'%'};return _0x294c80;})});}_0x4b1da4=_['merge']({},_0x4b1da4,_0xe1b64d[_0x0aad('0x42')]);var _0x2f7f5a={'where':_0x4b1da4[_0x0aad('0x3c')]};return db[_0x0aad('0x30')][_0x0aad('0x1f')](_0x2f7f5a)[_0x0aad('0x2a')](function(_0x3783e7){_0xaef93b[_0x0aad('0x1f')]=_0x3783e7;if(_0xe1b64d[_0x0aad('0x34')]['includeAll']){_0x4b1da4['include']=[{'all':!![]}];}return db[_0x0aad('0x30')][_0x0aad('0x43')](_0x4b1da4);})['then'](function(_0x59e29a){_0xaef93b[_0x0aad('0x44')]=_0x59e29a;return _0xaef93b;})['then'](respondWithFilteredResult(_0x618e4c,_0x4b1da4))[_0x0aad('0x45')](handleError(_0x618e4c,null));})[_0x0aad('0x45')](handleError(_0x618e4c,null));};exports[_0x0aad('0x46')]=function(_0x39c1d2,_0x3d4f70){var _0x14e3cf={'raw':![],'where':{'id':_0x39c1d2['params']['id']}},_0x3bbe6e={};_0x3bbe6e[_0x0aad('0x32')]=_[_0x0aad('0x33')](db[_0x0aad('0x30')][_0x0aad('0x47')]);_0x3bbe6e[_0x0aad('0x34')]=_[_0x0aad('0x33')](_0x39c1d2[_0x0aad('0x34')]);_0x3bbe6e[_0x0aad('0x3d')]=_[_0x0aad('0x35')](_0x3bbe6e[_0x0aad('0x32')],_0x3bbe6e['query']);_0x14e3cf[_0x0aad('0x37')]=_['intersection'](_0x3bbe6e[_0x0aad('0x32')],qs[_0x0aad('0x36')](_0x39c1d2[_0x0aad('0x34')][_0x0aad('0x36')]));_0x14e3cf[_0x0aad('0x37')]=_0x14e3cf['attributes'][_0x0aad('0x38')]?_0x14e3cf['attributes']:_0x3bbe6e[_0x0aad('0x32')];if(_0x39c1d2[_0x0aad('0x34')]['includeAll']){_0x14e3cf[_0x0aad('0x48')]=[{'all':!![]}];}_0x14e3cf=_['merge']({},_0x14e3cf,_0x39c1d2[_0x0aad('0x42')]);return db['CmCompany'][_0x0aad('0x49')](_0x14e3cf)[_0x0aad('0x2a')](handleEntityNotFound(_0x3d4f70,null))[_0x0aad('0x2a')](respondWithResult(_0x3d4f70,null))[_0x0aad('0x45')](handleError(_0x3d4f70,null));};exports[_0x0aad('0x4a')]=function(_0x30cb4d,_0x377b62){return db[_0x0aad('0x30')][_0x0aad('0x4a')](_0x30cb4d[_0x0aad('0x4b')],{})[_0x0aad('0x2a')](function(_0x3544e0){var _0x281630=_0x30cb4d[_0x0aad('0x4c')][_0x0aad('0x26')]({'plain':!![]});if(!_0x281630)throw new Error(_0x0aad('0x4d'));if(_0x281630[_0x0aad('0x4e')]==='user'){var _0x3a5f2b=_0x3544e0[_0x0aad('0x26')]({'plain':!![]});var _0x2e3ac1='Companies';return db[_0x0aad('0x4f')]['find']({'where':{'name':_0x2e3ac1,'userProfileId':_0x281630[_0x0aad('0x50')]},'raw':!![]})[_0x0aad('0x2a')](function(_0x4f381d){if(_0x4f381d&&_0x4f381d['autoAssociation']===0x0){return db['UserProfileResource'][_0x0aad('0x4a')]({'name':_0x3a5f2b[_0x0aad('0x2d')],'resourceId':_0x3a5f2b['id'],'type':_0x4f381d[_0x0aad('0x2d')],'sectionId':_0x4f381d['id']},{})[_0x0aad('0x2a')](function(){return _0x3544e0;});}else{return _0x3544e0;}})[_0x0aad('0x45')](function(_0x4c9e25){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4c9e25);throw _0x4c9e25;});}return _0x3544e0;})[_0x0aad('0x2a')](respondWithResult(_0x377b62,0xc9))[_0x0aad('0x45')](handleError(_0x377b62,null));};exports[_0x0aad('0x25')]=function(_0x3f82bf,_0x1afdbe){if(_0x3f82bf['body']['id']){delete _0x3f82bf[_0x0aad('0x4b')]['id'];}return db['CmCompany'][_0x0aad('0x49')]({'where':{'id':_0x3f82bf['params']['id']}})[_0x0aad('0x2a')](handleEntityNotFound(_0x1afdbe,null))[_0x0aad('0x2a')](saveUpdates(_0x3f82bf[_0x0aad('0x4b')],null))[_0x0aad('0x2a')](respondWithResult(_0x1afdbe,null))[_0x0aad('0x45')](handleError(_0x1afdbe,null));};exports[_0x0aad('0x29')]=function(_0x5c6d84,_0x5a616e){return db[_0x0aad('0x30')][_0x0aad('0x49')]({'where':{'id':_0x5c6d84['params']['id']}})[_0x0aad('0x2a')](handleEntityNotFound(_0x5a616e,null))[_0x0aad('0x2a')](removeEntity(_0x5a616e,null))[_0x0aad('0x45')](handleError(_0x5a616e,null));};exports[_0x0aad('0x31')]=function(_0x2cc22d,_0x384746){return db[_0x0aad('0x30')][_0x0aad('0x31')]()[_0x0aad('0x2a')](respondWithResult(_0x384746,null))[_0x0aad('0x45')](handleError(_0x384746,null));};exports['addContacts']=function(_0x36af40,_0x46a8b4,_0x8bf3c8){return db[_0x0aad('0x51')]['find']({'where':{'id':_0x36af40['params']['id']}})[_0x0aad('0x2a')](handleEntityNotFound(_0x46a8b4,null))['then'](function(_0x462194){if(_0x462194){return _0x462194[_0x0aad('0x52')](_0x36af40['body'][_0x0aad('0x53')],_[_0x0aad('0x54')](_0x36af40['body'],['ids','id'])||{});}})[_0x0aad('0x2a')](respondWithResult(_0x46a8b4,null))[_0x0aad('0x45')](handleError(_0x46a8b4,null));};exports['getContacts']=function(_0x2853f2,_0x40a1ef,_0x9487fd){var _0x212011={};var _0x197c7f={};var _0x51ed6d;var _0x1e66a1;return db[_0x0aad('0x30')]['findOne']({'where':{'id':_0x2853f2[_0x0aad('0x55')]['id']}})[_0x0aad('0x2a')](handleEntityNotFound(_0x40a1ef,null))['then'](function(_0x4e46d9){if(_0x4e46d9){_0x51ed6d=_0x4e46d9;_0x197c7f[_0x0aad('0x32')]=_[_0x0aad('0x33')](db[_0x0aad('0x51')][_0x0aad('0x47')]);_0x197c7f[_0x0aad('0x34')]=_[_0x0aad('0x33')](_0x2853f2[_0x0aad('0x34')]);_0x197c7f[_0x0aad('0x3d')]=_['intersection'](_0x197c7f[_0x0aad('0x32')],_0x197c7f[_0x0aad('0x34')]);_0x212011[_0x0aad('0x37')]=_[_0x0aad('0x35')](_0x197c7f[_0x0aad('0x32')],qs[_0x0aad('0x36')](_0x2853f2[_0x0aad('0x34')][_0x0aad('0x36')]));_0x212011[_0x0aad('0x37')]=_0x212011[_0x0aad('0x37')][_0x0aad('0x38')]?_0x212011['attributes']:_0x197c7f[_0x0aad('0x32')];_0x212011[_0x0aad('0x3a')]=qs[_0x0aad('0x3b')](_0x2853f2[_0x0aad('0x34')][_0x0aad('0x3b')]);_0x212011['where']=qs[_0x0aad('0x3d')](_['pick'](_0x2853f2[_0x0aad('0x34')],_0x197c7f[_0x0aad('0x3d')]));if(_0x2853f2[_0x0aad('0x34')][_0x0aad('0x41')]){_0x212011[_0x0aad('0x3c')]=_[_0x0aad('0x3f')](_0x212011[_0x0aad('0x3c')],{'$or':_[_0x0aad('0x40')](_0x212011['attributes'],function(_0xbcc1f5){var _0x5679db={};_0x5679db[_0xbcc1f5]={'$like':'%'+_0x2853f2[_0x0aad('0x34')][_0x0aad('0x41')]+'%'};return _0x5679db;})});}_0x212011=_[_0x0aad('0x3f')]({},_0x212011,_0x2853f2[_0x0aad('0x42')]);return _0x51ed6d[_0x0aad('0x56')](_0x212011);}})[_0x0aad('0x2a')](function(_0x1859ce){if(_0x1859ce){_0x1e66a1=_0x1859ce[_0x0aad('0x38')];if(!_0x2853f2['query'][_0x0aad('0x57')]('nolimit')){_0x212011[_0x0aad('0x1e')]=qs[_0x0aad('0x1e')](_0x2853f2[_0x0aad('0x34')][_0x0aad('0x1e')]);_0x212011[_0x0aad('0x1c')]=qs[_0x0aad('0x1c')](_0x2853f2[_0x0aad('0x34')][_0x0aad('0x1c')]);}return _0x51ed6d['getContacts'](_0x212011);}})[_0x0aad('0x2a')](function(_0x423b06){if(_0x423b06){return _0x423b06?{'count':_0x1e66a1,'rows':_0x423b06}:null;}})[_0x0aad('0x2a')](respondWithResult(_0x40a1ef,null))[_0x0aad('0x45')](handleError(_0x40a1ef,null));};
\ No newline at end of file
+var _0x389f=['findAll','rows','catch','show','params','rawAttributes','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Companies','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addContacts','CmContact','ids','omit','getContacts','map','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','end','status','undefined','limit','count','offset','set','Content-Range','json','reject','then','destroy','UserProfileResource','error','name','send','index','CmCompany','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','filter','options','includeAll','include'];(function(_0x34caae,_0x5f4c73){var _0x3c6480=function(_0x244cd3){while(--_0x244cd3){_0x34caae['push'](_0x34caae['shift']());}};_0x3c6480(++_0x5f4c73);}(_0x389f,0x17a));var _0xf389=function(_0xb7caad,_0x170fc6){_0xb7caad=_0xb7caad-0x0;var _0x53ba91=_0x389f[_0xb7caad];return _0x53ba91;};'use strict';var emlformat=require(_0xf389('0x0'));var rimraf=require(_0xf389('0x1'));var zipdir=require(_0xf389('0x2'));var jsonpatch=require(_0xf389('0x3'));var rp=require(_0xf389('0x4'));var moment=require(_0xf389('0x5'));var BPromise=require(_0xf389('0x6'));var Mustache=require(_0xf389('0x7'));var util=require(_0xf389('0x8'));var path=require(_0xf389('0x9'));var sox=require(_0xf389('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf389('0xb'));var _=require(_0xf389('0xc'));var squel=require(_0xf389('0xd'));var crypto=require(_0xf389('0xe'));var jsforce=require(_0xf389('0xf'));var deskjs=require(_0xf389('0x10'));var toCsv=require(_0xf389('0x11'));var querystring=require(_0xf389('0x12'));var Papa=require('papaparse');var Redis=require(_0xf389('0x13'));var authService=require(_0xf389('0x14'));var qs=require(_0xf389('0x15'));var as=require(_0xf389('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf389('0x17'));var utils=require(_0xf389('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xf389('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2fec4a,_0x5e85b3){_0x5e85b3=_0x5e85b3||0xcc;return function(_0x45a4ec){if(_0x45a4ec){return _0x2fec4a['sendStatus'](_0x5e85b3);}return _0x2fec4a['status'](_0x5e85b3)[_0xf389('0x1a')]();};}function respondWithResult(_0x286dc6,_0x33f9b7){_0x33f9b7=_0x33f9b7||0xc8;return function(_0x5106cb){if(_0x5106cb){return _0x286dc6[_0xf389('0x1b')](_0x33f9b7)['json'](_0x5106cb);}};}function respondWithFilteredResult(_0x3ef789,_0x3f541d){return function(_0x4517c4){if(_0x4517c4){var _0x8b0fad=typeof _0x3f541d['offset']===_0xf389('0x1c')&&typeof _0x3f541d[_0xf389('0x1d')]===_0xf389('0x1c');var _0x2680b8=_0x4517c4[_0xf389('0x1e')];var _0x3d5584=_0x8b0fad?0x0:_0x3f541d[_0xf389('0x1f')];var _0x144295=_0x8b0fad?_0x4517c4['count']:_0x3f541d[_0xf389('0x1f')]+_0x3f541d['limit'];var _0x47d3c4;if(_0x144295>=_0x2680b8){_0x144295=_0x2680b8;_0x47d3c4=0xc8;}else{_0x47d3c4=0xce;}_0x3ef789[_0xf389('0x1b')](_0x47d3c4);return _0x3ef789[_0xf389('0x20')](_0xf389('0x21'),_0x3d5584+'-'+_0x144295+'/'+_0x2680b8)[_0xf389('0x22')](_0x4517c4);}return null;};}function patchUpdates(_0xa15940){return function(_0x6f8356){try{jsonpatch['apply'](_0x6f8356,_0xa15940,!![]);}catch(_0x2535f4){return BPromise[_0xf389('0x23')](_0x2535f4);}return _0x6f8356['save']();};}function saveUpdates(_0xc13762,_0x190551){return function(_0x36e52f){if(_0x36e52f){return _0x36e52f['update'](_0xc13762)[_0xf389('0x24')](function(_0x52ae40){return _0x52ae40;});}return null;};}function removeEntity(_0x31c9e6,_0x3bbeae){return function(_0x44f891){if(_0x44f891){return _0x44f891[_0xf389('0x25')]()['then'](function(){var _0x1076a7=_0x44f891['get']({'plain':!![]});var _0x5924ac='Companies';return db[_0xf389('0x26')][_0xf389('0x25')]({'where':{'type':_0x5924ac,'resourceId':_0x1076a7['id']}})[_0xf389('0x24')](function(){return _0x44f891;});})[_0xf389('0x24')](function(){_0x31c9e6['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1127a7,_0x300558){return function(_0x41447f){if(!_0x41447f){_0x1127a7['sendStatus'](0x194);}return _0x41447f;};}function handleError(_0x1fc437,_0xa69da3){_0xa69da3=_0xa69da3||0x1f4;return function(_0x3c30db){logger[_0xf389('0x27')](_0x3c30db['stack']);if(_0x3c30db[_0xf389('0x28')]){delete _0x3c30db[_0xf389('0x28')];}_0x1fc437[_0xf389('0x1b')](_0xa69da3)[_0xf389('0x29')](_0x3c30db);};}exports[_0xf389('0x2a')]=function(_0x51e089,_0xac3d95){var _0x443729={},_0x41371c={},_0x4d0a98={'count':0x0,'rows':[]};return db[_0xf389('0x2b')]['describe']()[_0xf389('0x24')](function(_0x320621){_0x41371c[_0xf389('0x2c')]=_[_0xf389('0x2d')](_0x320621);_0x41371c['query']=_[_0xf389('0x2d')](_0x51e089[_0xf389('0x2e')]);_0x41371c[_0xf389('0x2f')]=_[_0xf389('0x30')](_0x41371c[_0xf389('0x2c')],_0x41371c[_0xf389('0x2e')]);_0x443729[_0xf389('0x31')]=_[_0xf389('0x30')](_0x41371c['model'],qs[_0xf389('0x32')](_0x51e089[_0xf389('0x2e')][_0xf389('0x32')]));_0x443729[_0xf389('0x31')]=_0x443729[_0xf389('0x31')][_0xf389('0x33')]?_0x443729[_0xf389('0x31')]:_0x41371c[_0xf389('0x2c')];if(!_0x51e089['query'][_0xf389('0x34')]('nolimit')){_0x443729[_0xf389('0x1d')]=qs[_0xf389('0x1d')](_0x51e089[_0xf389('0x2e')]['limit']);_0x443729[_0xf389('0x1f')]=qs[_0xf389('0x1f')](_0x51e089[_0xf389('0x2e')][_0xf389('0x1f')]);}_0x443729[_0xf389('0x35')]=qs[_0xf389('0x36')](_0x51e089[_0xf389('0x2e')]['sort']);_0x443729[_0xf389('0x37')]=qs[_0xf389('0x2f')](_[_0xf389('0x38')](_0x51e089[_0xf389('0x2e')],_0x41371c['filters']),_0x320621);if(_0x51e089[_0xf389('0x2e')]['filter']){_0x443729[_0xf389('0x37')]=_[_0xf389('0x39')](_0x443729[_0xf389('0x37')],{'$or':_['map'](_0x443729[_0xf389('0x31')],function(_0x3e5b89){var _0x59c03d={};_0x59c03d[_0x3e5b89]={'$like':'%'+_0x51e089[_0xf389('0x2e')][_0xf389('0x3a')]+'%'};return _0x59c03d;})});}_0x443729=_[_0xf389('0x39')]({},_0x443729,_0x51e089[_0xf389('0x3b')]);var _0x489eec={'where':_0x443729['where']};return db[_0xf389('0x2b')][_0xf389('0x1e')](_0x489eec)[_0xf389('0x24')](function(_0x2c107e){_0x4d0a98['count']=_0x2c107e;if(_0x51e089[_0xf389('0x2e')][_0xf389('0x3c')]){_0x443729[_0xf389('0x3d')]=[{'all':!![]}];}return db[_0xf389('0x2b')][_0xf389('0x3e')](_0x443729);})[_0xf389('0x24')](function(_0x4e9eb5){_0x4d0a98[_0xf389('0x3f')]=_0x4e9eb5;return _0x4d0a98;})[_0xf389('0x24')](respondWithFilteredResult(_0xac3d95,_0x443729))['catch'](handleError(_0xac3d95,null));})[_0xf389('0x40')](handleError(_0xac3d95,null));};exports[_0xf389('0x41')]=function(_0x4e67a6,_0x26ea8d){var _0x5301c9={'raw':![],'where':{'id':_0x4e67a6[_0xf389('0x42')]['id']}},_0x22b7f2={};_0x22b7f2[_0xf389('0x2c')]=_['keys'](db[_0xf389('0x2b')][_0xf389('0x43')]);_0x22b7f2['query']=_[_0xf389('0x2d')](_0x4e67a6[_0xf389('0x2e')]);_0x22b7f2[_0xf389('0x2f')]=_[_0xf389('0x30')](_0x22b7f2[_0xf389('0x2c')],_0x22b7f2['query']);_0x5301c9[_0xf389('0x31')]=_[_0xf389('0x30')](_0x22b7f2[_0xf389('0x2c')],qs[_0xf389('0x32')](_0x4e67a6[_0xf389('0x2e')][_0xf389('0x32')]));_0x5301c9['attributes']=_0x5301c9[_0xf389('0x31')][_0xf389('0x33')]?_0x5301c9[_0xf389('0x31')]:_0x22b7f2[_0xf389('0x2c')];if(_0x4e67a6[_0xf389('0x2e')][_0xf389('0x3c')]){_0x5301c9[_0xf389('0x3d')]=[{'all':!![]}];}_0x5301c9=_[_0xf389('0x39')]({},_0x5301c9,_0x4e67a6[_0xf389('0x3b')]);return db[_0xf389('0x2b')][_0xf389('0x44')](_0x5301c9)[_0xf389('0x24')](handleEntityNotFound(_0x26ea8d,null))[_0xf389('0x24')](respondWithResult(_0x26ea8d,null))[_0xf389('0x40')](handleError(_0x26ea8d,null));};exports[_0xf389('0x45')]=function(_0x233904,_0x45fda2){return db[_0xf389('0x2b')][_0xf389('0x45')](_0x233904[_0xf389('0x46')],{})['then'](function(_0xc4c48){var _0x333c67=_0x233904[_0xf389('0x47')][_0xf389('0x48')]({'plain':!![]});if(!_0x333c67)throw new Error(_0xf389('0x49'));if(_0x333c67[_0xf389('0x4a')]===_0xf389('0x47')){var _0x333ff5=_0xc4c48[_0xf389('0x48')]({'plain':!![]});var _0x276312=_0xf389('0x4b');return db[_0xf389('0x4c')]['find']({'where':{'name':_0x276312,'userProfileId':_0x333c67['userProfileId']},'raw':!![]})[_0xf389('0x24')](function(_0x45eea8){if(_0x45eea8&&_0x45eea8[_0xf389('0x4d')]===0x0){return db[_0xf389('0x26')]['create']({'name':_0x333ff5[_0xf389('0x28')],'resourceId':_0x333ff5['id'],'type':_0x45eea8['name'],'sectionId':_0x45eea8['id']},{})[_0xf389('0x24')](function(){return _0xc4c48;});}else{return _0xc4c48;}})[_0xf389('0x40')](function(_0x519721){logger[_0xf389('0x27')](_0xf389('0x4e'),_0x519721);throw _0x519721;});}return _0xc4c48;})['then'](respondWithResult(_0x45fda2,0xc9))[_0xf389('0x40')](handleError(_0x45fda2,null));};exports[_0xf389('0x4f')]=function(_0xdbf77f,_0x498429){if(_0xdbf77f[_0xf389('0x46')]['id']){delete _0xdbf77f['body']['id'];}return db[_0xf389('0x2b')][_0xf389('0x44')]({'where':{'id':_0xdbf77f[_0xf389('0x42')]['id']}})['then'](handleEntityNotFound(_0x498429,null))[_0xf389('0x24')](saveUpdates(_0xdbf77f[_0xf389('0x46')],null))[_0xf389('0x24')](respondWithResult(_0x498429,null))[_0xf389('0x40')](handleError(_0x498429,null));};exports[_0xf389('0x25')]=function(_0x28ce40,_0x418536){return db[_0xf389('0x2b')]['find']({'where':{'id':_0x28ce40[_0xf389('0x42')]['id']}})[_0xf389('0x24')](handleEntityNotFound(_0x418536,null))[_0xf389('0x24')](removeEntity(_0x418536,null))['catch'](handleError(_0x418536,null));};exports[_0xf389('0x50')]=function(_0x361667,_0x5dc590){return db['CmCompany'][_0xf389('0x50')]()[_0xf389('0x24')](respondWithResult(_0x5dc590,null))['catch'](handleError(_0x5dc590,null));};exports[_0xf389('0x51')]=function(_0x327323,_0x11a76c,_0x908c50){return db[_0xf389('0x52')]['find']({'where':{'id':_0x327323['params']['id']}})[_0xf389('0x24')](handleEntityNotFound(_0x11a76c,null))['then'](function(_0x577012){if(_0x577012){return _0x577012[_0xf389('0x51')](_0x327323[_0xf389('0x46')][_0xf389('0x53')],_[_0xf389('0x54')](_0x327323[_0xf389('0x46')],[_0xf389('0x53'),'id'])||{});}})[_0xf389('0x24')](respondWithResult(_0x11a76c,null))[_0xf389('0x40')](handleError(_0x11a76c,null));};exports[_0xf389('0x55')]=function(_0x32beb6,_0x5a233d,_0x14f147){var _0x2209fc={};var _0x3e24ae={};var _0x95d1b9;var _0x14132c;return db[_0xf389('0x2b')]['findOne']({'where':{'id':_0x32beb6['params']['id']}})[_0xf389('0x24')](handleEntityNotFound(_0x5a233d,null))[_0xf389('0x24')](function(_0x416080){if(_0x416080){_0x95d1b9=_0x416080;_0x3e24ae['model']=_[_0xf389('0x2d')](db[_0xf389('0x52')][_0xf389('0x43')]);_0x3e24ae[_0xf389('0x2e')]=_['keys'](_0x32beb6[_0xf389('0x2e')]);_0x3e24ae['filters']=_[_0xf389('0x30')](_0x3e24ae[_0xf389('0x2c')],_0x3e24ae['query']);_0x2209fc[_0xf389('0x31')]=_[_0xf389('0x30')](_0x3e24ae[_0xf389('0x2c')],qs[_0xf389('0x32')](_0x32beb6[_0xf389('0x2e')][_0xf389('0x32')]));_0x2209fc['attributes']=_0x2209fc[_0xf389('0x31')][_0xf389('0x33')]?_0x2209fc[_0xf389('0x31')]:_0x3e24ae[_0xf389('0x2c')];_0x2209fc[_0xf389('0x35')]=qs[_0xf389('0x36')](_0x32beb6['query'][_0xf389('0x36')]);_0x2209fc[_0xf389('0x37')]=qs[_0xf389('0x2f')](_[_0xf389('0x38')](_0x32beb6['query'],_0x3e24ae[_0xf389('0x2f')]));if(_0x32beb6[_0xf389('0x2e')][_0xf389('0x3a')]){_0x2209fc[_0xf389('0x37')]=_['merge'](_0x2209fc[_0xf389('0x37')],{'$or':_[_0xf389('0x56')](_0x2209fc[_0xf389('0x31')],function(_0x3702a6){var _0x117bd3={};_0x117bd3[_0x3702a6]={'$like':'%'+_0x32beb6['query']['filter']+'%'};return _0x117bd3;})});}_0x2209fc=_[_0xf389('0x39')]({},_0x2209fc,_0x32beb6[_0xf389('0x3b')]);return _0x95d1b9['getContacts'](_0x2209fc);}})[_0xf389('0x24')](function(_0x3cfb09){if(_0x3cfb09){_0x14132c=_0x3cfb09[_0xf389('0x33')];if(!_0x32beb6['query'][_0xf389('0x34')](_0xf389('0x57'))){_0x2209fc[_0xf389('0x1d')]=qs[_0xf389('0x1d')](_0x32beb6['query'][_0xf389('0x1d')]);_0x2209fc['offset']=qs[_0xf389('0x1f')](_0x32beb6[_0xf389('0x2e')][_0xf389('0x1f')]);}return _0x95d1b9[_0xf389('0x55')](_0x2209fc);}})['then'](function(_0x3c834c){if(_0x3c834c){return _0x3c834c?{'count':_0x14132c,'rows':_0x3c834c}:null;}})[_0xf389('0x24')](respondWithResult(_0x5a233d,null))['catch'](handleError(_0x5a233d,null));};
\ No newline at end of file
index 261c3d5..595e325 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5360=['exports','define','lodash','api','moment','bluebird','request-promise','rimraf'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x5360,0xe2));var _0x0536=function(_0x2c0d89,_0x1d0f30){_0x2c0d89=_0x2c0d89-0x0;var _0x57576a=_0x5360[_0x2c0d89];return _0x57576a;};'use strict';var _=require(_0x0536('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x0536('0x1'));var moment=require(_0x0536('0x2'));var BPromise=require(_0x0536('0x3'));var rp=require(_0x0536('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0536('0x5'));var config=require('../../config/environment');var attributes=require('./cmCompany.attributes');module[_0x0536('0x6')]=function(_0x1d1cc0,_0x4aa5db){return _0x1d1cc0[_0x0536('0x7')]('CmCompany',attributes,{'tableName':'cm_companies','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x15ff=['moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','CmCompany','cm_companies','util','../../config/logger','api'];(function(_0x4ee23c,_0x81eb23){var _0x1c5772=function(_0x2cd653){while(--_0x2cd653){_0x4ee23c['push'](_0x4ee23c['shift']());}};_0x1c5772(++_0x81eb23);}(_0x15ff,0x1dd));var _0xf15f=function(_0x54af5c,_0x21792f){_0x54af5c=_0x54af5c-0x0;var _0x4a0c95=_0x15ff[_0x54af5c];return _0x4a0c95;};'use strict';var _=require('lodash');var util=require(_0xf15f('0x0'));var logger=require(_0xf15f('0x1'))(_0xf15f('0x2'));var moment=require(_0xf15f('0x3'));var BPromise=require(_0xf15f('0x4'));var rp=require(_0xf15f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf15f('0x6'));var config=require(_0xf15f('0x7'));var attributes=require('./cmCompany.attributes');module[_0xf15f('0x8')]=function(_0x533b68,_0x4d55c0){return _0x533b68[_0xf15f('0x9')](_0xf15f('0xa'),attributes,{'tableName':_0xf15f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9ebcd67..a07ff60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08da=['message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info','CmCompany,\x20%s,\x20%s','CmCompany,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x10f2cb,_0x18a26f){var _0x1e67de=function(_0x591a7f){while(--_0x591a7f){_0x10f2cb['push'](_0x10f2cb['shift']());}};_0x1e67de(++_0x18a26f);}(_0x08da,0x123));var _0xa08d=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0x08da[_0x40220a];return _0x3903cc;};'use strict';var _=require(_0xa08d('0x0'));var util=require(_0xa08d('0x1'));var moment=require(_0xa08d('0x2'));var BPromise=require(_0xa08d('0x3'));var rs=require(_0xa08d('0x4'));var fs=require('fs');var Redis=require(_0xa08d('0x5'));var db=require(_0xa08d('0x6'))['db'];var utils=require(_0xa08d('0x7'));var logger=require(_0xa08d('0x8'))(_0xa08d('0x9'));var config=require(_0xa08d('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xa08d('0xb')][_0xa08d('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x53260e,_0x4da1f3,_0x24fc05){return new BPromise(function(_0x147f17,_0x5daffa){return client['request'](_0x53260e,_0x24fc05)[_0xa08d('0xd')](function(_0x27fab3){logger[_0xa08d('0xe')](_0xa08d('0xf'),_0x4da1f3,'request\x20sent');logger['debug'](_0xa08d('0x10'),_0x4da1f3,_0xa08d('0x11'),JSON[_0xa08d('0x12')](_0x27fab3));if(_0x27fab3[_0xa08d('0x13')]){if(_0x27fab3[_0xa08d('0x13')][_0xa08d('0x14')]===0x1f4){logger[_0xa08d('0x13')](_0xa08d('0xf'),_0x4da1f3,_0x27fab3[_0xa08d('0x13')][_0xa08d('0x15')]);return _0x5daffa(_0x27fab3[_0xa08d('0x13')][_0xa08d('0x15')]);}logger['error'](_0xa08d('0xf'),_0x4da1f3,_0x27fab3[_0xa08d('0x13')]['message']);return _0x147f17(_0x27fab3['error'][_0xa08d('0x15')]);}else{logger[_0xa08d('0xe')](_0xa08d('0xf'),_0x4da1f3,_0xa08d('0x11'));_0x147f17(_0x27fab3[_0xa08d('0x16')][_0xa08d('0x15')]);}})[_0xa08d('0x17')](function(_0x5e609c){logger[_0xa08d('0x13')](_0xa08d('0xf'),_0x4da1f3,_0x5e609c);_0x5daffa(_0x5e609c);});});}
\ No newline at end of file
+var _0x443e=['request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','CmCompany,\x20%s,\x20%s'];(function(_0x53e531,_0x28658f){var _0x51e130=function(_0x4ada37){while(--_0x4ada37){_0x53e531['push'](_0x53e531['shift']());}};_0x51e130(++_0x28658f);}(_0x443e,0x127));var _0xe443=function(_0xe1b5f6,_0x210c09){_0xe1b5f6=_0xe1b5f6-0x0;var _0x44636e=_0x443e[_0xe1b5f6];return _0x44636e;};'use strict';var _=require(_0xe443('0x0'));var util=require(_0xe443('0x1'));var moment=require(_0xe443('0x2'));var BPromise=require(_0xe443('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe443('0x4'));var db=require(_0xe443('0x5'))['db'];var utils=require(_0xe443('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xe443('0x7'));var jayson=require(_0xe443('0x8'));var client=jayson[_0xe443('0x9')][_0xe443('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x16b2c0,_0xe0681b,_0x2533c0){return new BPromise(function(_0x3f7548,_0x349031){return client[_0xe443('0xb')](_0x16b2c0,_0x2533c0)['then'](function(_0x5a3c68){logger['info'](_0xe443('0xc'),_0xe0681b,_0xe443('0xd'));logger[_0xe443('0xe')](_0xe443('0xf'),_0xe0681b,_0xe443('0xd'),JSON[_0xe443('0x10')](_0x5a3c68));if(_0x5a3c68[_0xe443('0x11')]){if(_0x5a3c68['error'][_0xe443('0x12')]===0x1f4){logger[_0xe443('0x11')](_0xe443('0xc'),_0xe0681b,_0x5a3c68[_0xe443('0x11')][_0xe443('0x13')]);return _0x349031(_0x5a3c68[_0xe443('0x11')][_0xe443('0x13')]);}logger['error']('CmCompany,\x20%s,\x20%s',_0xe0681b,_0x5a3c68[_0xe443('0x11')]['message']);return _0x3f7548(_0x5a3c68[_0xe443('0x11')][_0xe443('0x13')]);}else{logger['info'](_0xe443('0xc'),_0xe0681b,_0xe443('0xd'));_0x3f7548(_0x5a3c68[_0xe443('0x14')][_0xe443('0x13')]);}})[_0xe443('0x15')](function(_0x533c6c){logger[_0xe443('0x11')]('CmCompany,\x20%s,\x20%s',_0xe0681b,_0x533c6c);_0x349031(_0x533c6c);});});}
\ No newline at end of file
index 5a1129d..e7e5844 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x162b=['../../components/auth/service','../../components/interaction/service','./cmCompany.controller','get','isAuthenticated','describe','/:id','show','/:id/contacts','getContacts','post','create','addContacts','update','delete','destroy','exports','util','path','express','Router','fs-extra'];(function(_0x1e197d,_0x2e551d){var _0x4ca88e=function(_0x55a74d){while(--_0x55a74d){_0x1e197d['push'](_0x1e197d['shift']());}};_0x4ca88e(++_0x2e551d);}(_0x162b,0x1df));var _0xb162=function(_0x47e93d,_0x26bbdd){_0x47e93d=_0x47e93d-0x0;var _0xe86c46=_0x162b[_0x47e93d];return _0xe86c46;};'use strict';var multer=require('multer');var util=require(_0xb162('0x0'));var path=require(_0xb162('0x1'));var timeout=require('connect-timeout');var express=require(_0xb162('0x2'));var router=express[_0xb162('0x3')]();var fs_extra=require(_0xb162('0x4'));var auth=require(_0xb162('0x5'));var interaction=require(_0xb162('0x6'));var config=require('../../config/environment');var controller=require(_0xb162('0x7'));router[_0xb162('0x8')]('/',auth[_0xb162('0x9')](),controller['index']);router[_0xb162('0x8')]('/describe',auth[_0xb162('0x9')](),controller[_0xb162('0xa')]);router[_0xb162('0x8')](_0xb162('0xb'),auth[_0xb162('0x9')](),controller[_0xb162('0xc')]);router['get'](_0xb162('0xd'),auth[_0xb162('0x9')](),controller[_0xb162('0xe')]);router[_0xb162('0xf')]('/',auth['isAuthenticated'](),controller[_0xb162('0x10')]);router[_0xb162('0xf')](_0xb162('0xd'),auth[_0xb162('0x9')](),controller[_0xb162('0x11')]);router['put'](_0xb162('0xb'),auth[_0xb162('0x9')](),controller[_0xb162('0x12')]);router[_0xb162('0x13')](_0xb162('0xb'),auth[_0xb162('0x9')](),controller[_0xb162('0x14')]);module[_0xb162('0x15')]=router;
\ No newline at end of file
+var _0x0f60=['./cmCompany.controller','get','isAuthenticated','index','/describe','/:id/contacts','getContacts','post','addContacts','put','update','/:id','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../config/environment'];(function(_0x17928f,_0x4ad33f){var _0x500b63=function(_0x127644){while(--_0x127644){_0x17928f['push'](_0x17928f['shift']());}};_0x500b63(++_0x4ad33f);}(_0x0f60,0x1f1));var _0x00f6=function(_0x2f71f6,_0x3a1f4d){_0x2f71f6=_0x2f71f6-0x0;var _0x2b23ea=_0x0f60[_0x2f71f6];return _0x2b23ea;};'use strict';var multer=require(_0x00f6('0x0'));var util=require(_0x00f6('0x1'));var path=require(_0x00f6('0x2'));var timeout=require(_0x00f6('0x3'));var express=require('express');var router=express[_0x00f6('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x00f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x00f6('0x6'));var controller=require(_0x00f6('0x7'));router[_0x00f6('0x8')]('/',auth[_0x00f6('0x9')](),controller[_0x00f6('0xa')]);router[_0x00f6('0x8')](_0x00f6('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0x00f6('0x8')]('/:id',auth[_0x00f6('0x9')](),controller['show']);router[_0x00f6('0x8')](_0x00f6('0xc'),auth[_0x00f6('0x9')](),controller[_0x00f6('0xd')]);router[_0x00f6('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x00f6('0xe')]('/:id/contacts',auth['isAuthenticated'](),controller[_0x00f6('0xf')]);router[_0x00f6('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x00f6('0x11')]);router['delete'](_0x00f6('0x12'),auth['isAuthenticated'](),controller[_0x00f6('0x13')]);module[_0x00f6('0x14')]=router;
\ No newline at end of file
index bbe2026..a1efe66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e6d=['INTEGER','UNSIGNED','STRING','TEXT'];(function(_0x3758df,_0x4e2b9e){var _0x35dfa9=function(_0x57243a){while(--_0x57243a){_0x3758df['push'](_0x3758df['shift']());}};_0x35dfa9(++_0x4e2b9e);}(_0x7e6d,0x86));var _0xd7e6=function(_0x3ab5a4,_0x1a21a8){_0x3ab5a4=_0x3ab5a4-0x0;var _0x5caea1=_0x7e6d[_0x3ab5a4];return _0x5caea1;};'use strict';var _=require('lodash');var Sequelize=require('sequelize');module['exports']={'firstName':{'type':Sequelize[_0xd7e6('0x0')],'allowNull':![]},'lastName':{'type':Sequelize[_0xd7e6('0x0')]},'street':{'type':Sequelize[_0xd7e6('0x0')]},'postalCode':{'type':Sequelize[_0xd7e6('0x0')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize['STRING']},'dateOfBirth':{'type':Sequelize[_0xd7e6('0x0')]},'description':{'type':Sequelize[_0xd7e6('0x1')]},'phone':{'type':Sequelize[_0xd7e6('0x0')]},'mobile':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0xd7e6('0x0')]},'email':{'type':Sequelize[_0xd7e6('0x0')]},'url':{'type':Sequelize[_0xd7e6('0x0')]},'facebook':{'type':Sequelize['STRING']},'fb_data':{'type':Sequelize[_0xd7e6('0x0')]},'twitter':{'type':Sequelize[_0xd7e6('0x0')]},'skype':{'type':Sequelize[_0xd7e6('0x0')]},'teams':{'type':Sequelize[_0xd7e6('0x0')]},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize[_0xd7e6('0x0')]},'wechat':{'type':Sequelize[_0xd7e6('0x0')]},'telegram':{'type':Sequelize[_0xd7e6('0x0')]},'UserId':{'type':Sequelize['INTEGER']},'priority':{'type':Sequelize[_0xd7e6('0x2')](0x2)[_0xd7e6('0x3')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
+var _0xd2ce=['sequelize','STRING','TEXT','INTEGER','UNSIGNED','DATE','NOW','lodash'];(function(_0x2e2e5b,_0x56a052){var _0x1d0bdf=function(_0x421167){while(--_0x421167){_0x2e2e5b['push'](_0x2e2e5b['shift']());}};_0x1d0bdf(++_0x56a052);}(_0xd2ce,0x12f));var _0xed2c=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xd2ce[_0x3b5250];return _0xc844a1;};'use strict';var _=require(_0xed2c('0x0'));var Sequelize=require(_0xed2c('0x1'));module['exports']={'firstName':{'type':Sequelize['STRING'],'allowNull':![]},'lastName':{'type':Sequelize[_0xed2c('0x2')]},'street':{'type':Sequelize[_0xed2c('0x2')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0xed2c('0x2')]},'country':{'type':Sequelize[_0xed2c('0x2')]},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xed2c('0x3')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0xed2c('0x2')]},'fax':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xed2c('0x2')]},'url':{'type':Sequelize['STRING']},'facebook':{'type':Sequelize[_0xed2c('0x2')]},'fb_data':{'type':Sequelize[_0xed2c('0x2')]},'twitter':{'type':Sequelize[_0xed2c('0x2')]},'skype':{'type':Sequelize[_0xed2c('0x2')]},'teams':{'type':Sequelize[_0xed2c('0x2')]},'viber':{'type':Sequelize[_0xed2c('0x2')]},'line':{'type':Sequelize[_0xed2c('0x2')]},'wechat':{'type':Sequelize[_0xed2c('0x2')]},'telegram':{'type':Sequelize['STRING']},'UserId':{'type':Sequelize['INTEGER']},'priority':{'type':Sequelize[_0xed2c('0x4')](0x2)[_0xed2c('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xed2c('0x6')],'defaultValue':Sequelize[_0xed2c('0x7')]}};
\ No newline at end of file
index c8594a7..be7f95d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb147=['SmsQueueReport','WhatsappMessage','WhatsappQueueReport','duplicates','$or','findOrCreate','spread','show','$and','omit','format','table','cm_contacts','setFields','id\x20=\x20?','toParam','text','values','phone','CmHopper','getTags','rawAttributes','options','setTags','ids','getHoppers','ContactId','includeAll','getHopperHistories','include','getHopperFinals','CmHopperFinal','getJscriptySessions','JscriptySessionReport','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','server/files/tmp','file','chmodSync','fork','../../components/import/cm/csv','CompanyId','json','File\x20uploaded\x20correctly!','pid','send','upload','parse','import','binding','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','child_process','stringify','start\x20child\x20process\x20correctly!','exit','error\x20child\x20process','getJourney','mail','chat','openchannel','fax','whatsapp','voice','channel','includes','Invalid\x20channel','toLowerCase','range','isValid','Invalid\x20createdAt\x20filter','uniqueid','source','destination','starttime','endtime','note','userDisposition','userSecondDisposition','userThirdDisposition','UserId','alias','createdAt','findAndCountAll','fullname','startCase','Website','closed','closedAt','secondDisposition','thirdDisposition','Account','key','Owner','browserName','customerIp','customerPort','deviceModel','referer','subject','substatus','threadId','Interaction','flatten','reverse','slice','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','register','sendStatus','status','end','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','index','CmContact','describe','keys','length','cf_','push','CmCustomField','findOne','trimStart','all','fieldType','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','pick','select','field','color','from','tools_tags','cm_user_has_contacts','left_join','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','c.deletedAt\x20IS\x20NULL','expr','search','parseSearch','sqlOperator','conditions','find','Tag','value','split','map','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','and','uc.UserId\x20=\x20?','dateOfBirth','datetime','buildExpression','type','start','filter','isNil','Contact','isEmpty','ListId','where','c.ListId\x20IN\x20?','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)','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','group','c.id','Sequelize','clone','order','DESC','having','resolve','role','some','user','getLists','c.ListId\x20IS\x20NULL','agent','sequelize','toString','keyBy','merge','c.firstName','c.lastName','c.phone','c.mobile','c.fax','c.createdAt','c.deletedAt','c.CompanyId','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','rows','catch','params','tags','startsWith','displayName','findAll','columnName','custom','body','get','mergeWith','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatMessage','MailMessage','MailInteraction','SmsInteraction','SmsMessage','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmHopperHistory','ReportAgentPreview','VoiceCallReport','ChatQueueReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport'];(function(_0x108b89,_0x3ec2e7){var _0x5ba7d3=function(_0x26663e){while(--_0x26663e){_0x108b89['push'](_0x108b89['shift']());}};_0x5ba7d3(++_0x3ec2e7);}(_0xb147,0x74));var _0x7b14=function(_0x4c446e,_0x19a934){_0x4c446e=_0x4c446e-0x0;var _0x367191=_0xb147[_0x4c446e];return _0x367191;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7b14('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7b14('0x1'));var rp=require(_0x7b14('0x2'));var moment=require(_0x7b14('0x3'));var BPromise=require(_0x7b14('0x4'));var Mustache=require(_0x7b14('0x5'));var util=require(_0x7b14('0x6'));var path=require(_0x7b14('0x7'));var sox=require(_0x7b14('0x8'));var csv=require(_0x7b14('0x9'));var ejs=require(_0x7b14('0xa'));var fs=require('fs');var fs_extra=require(_0x7b14('0xb'));var _=require('lodash');var squel=require(_0x7b14('0xc'));var crypto=require(_0x7b14('0xd'));var jsforce=require(_0x7b14('0xe'));var deskjs=require(_0x7b14('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7b14('0x10'));var Papa=require(_0x7b14('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x7b14('0x12'));var as=require(_0x7b14('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7b14('0x14'))(_0x7b14('0x15'));var utils=require(_0x7b14('0x16'));var config=require(_0x7b14('0x17'));var licenseUtil=require(_0x7b14('0x18'));var db=require('../../mysqldb')['db'];config[_0x7b14('0x19')]=_[_0x7b14('0x1a')](config[_0x7b14('0x19')],{'host':_0x7b14('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7b14('0x19')]));require('./cmContact.socket')[_0x7b14('0x1c')](socket);function respondWithStatusCode(_0x45fa7b,_0x2b9343){_0x2b9343=_0x2b9343||0xcc;return function(_0x4daf49){if(_0x4daf49){return _0x45fa7b[_0x7b14('0x1d')](_0x2b9343);}return _0x45fa7b[_0x7b14('0x1e')](_0x2b9343)[_0x7b14('0x1f')]();};}function respondWithResult(_0x37fa83,_0x4f2f22){_0x4f2f22=_0x4f2f22||0xc8;return function(_0x1e3fa4){if(_0x1e3fa4){return _0x37fa83[_0x7b14('0x1e')](_0x4f2f22)['json'](_0x1e3fa4);}};}function respondWithFilteredResult(_0x119f4b,_0x1a942d){return function(_0x31c59b){if(_0x31c59b){var _0x5ea4fb=typeof _0x1a942d[_0x7b14('0x20')]===_0x7b14('0x21')&&typeof _0x1a942d[_0x7b14('0x22')]==='undefined';var _0x52e823=_0x31c59b[_0x7b14('0x23')];var _0x598ea0=_0x5ea4fb?0x0:_0x1a942d['offset'];var _0xc78cca=_0x5ea4fb?_0x31c59b['count']:_0x1a942d[_0x7b14('0x20')]+_0x1a942d[_0x7b14('0x22')];var _0x41a2d0;if(_0xc78cca>=_0x52e823){_0xc78cca=_0x52e823;_0x41a2d0=0xc8;}else{_0x41a2d0=0xce;}_0x119f4b[_0x7b14('0x1e')](_0x41a2d0);return _0x119f4b['set'](_0x7b14('0x24'),_0x598ea0+'-'+_0xc78cca+'/'+_0x52e823)['json'](_0x31c59b);}return null;};}function patchUpdates(_0x814d23){return function(_0x1b03c2){try{jsonpatch[_0x7b14('0x25')](_0x1b03c2,_0x814d23,!![]);}catch(_0x256cc0){return BPromise[_0x7b14('0x26')](_0x256cc0);}return _0x1b03c2[_0x7b14('0x27')]();};}function saveUpdates(_0x640ecb,_0x38cf4){return function(_0x1ef25a){if(_0x1ef25a){return _0x1ef25a[_0x7b14('0x28')](_0x640ecb)['then'](function(_0x438978){return _0x438978;});}return null;};}function removeEntity(_0x3bb759,_0x1aa5c9){return function(_0x2683c9){if(_0x2683c9){return _0x2683c9[_0x7b14('0x29')]()[_0x7b14('0x2a')](function(){_0x3bb759[_0x7b14('0x1e')](0xcc)[_0x7b14('0x1f')]();});}};}function handleEntityNotFound(_0x4a5c8c,_0x3c79e2){return function(_0x1ba368){if(!_0x1ba368){_0x4a5c8c[_0x7b14('0x1d')](0x194);}return _0x1ba368;};}function handleError(_0xef8398,_0x338ca8){_0x338ca8=_0x338ca8||0x1f4;return function(_0x468038){logger[_0x7b14('0x2b')](_0x468038[_0x7b14('0x2c')]);if(_0x468038[_0x7b14('0x2d')]){delete _0x468038[_0x7b14('0x2d')];}_0xef8398[_0x7b14('0x1e')](_0x338ca8)['send'](_0x468038);};}exports[_0x7b14('0x2e')]=function(_0x1fdb7,_0x5135df){var _0x18ad88={},_0x36ea89={},_0x3ff00d={'count':0x0,'rows':[]};return db[_0x7b14('0x2f')][_0x7b14('0x30')]()[_0x7b14('0x2a')](function(_0x2d9acd){var _0x1f50f4=[];for(var _0x3865dd=0x0;_0x3865dd<Object[_0x7b14('0x31')](_0x2d9acd)[_0x7b14('0x32')];_0x3865dd++){var _0x10e432=Object[_0x7b14('0x31')](_0x2d9acd)[_0x3865dd];if(_['startsWith'](_0x10e432,_0x7b14('0x33'))){_0x1f50f4[_0x7b14('0x34')](db[_0x7b14('0x35')][_0x7b14('0x36')]({'where':{'id':_[_0x7b14('0x37')](_0x10e432,'cf_')},'raw':!![]}));}}return BPromise[_0x7b14('0x38')](_0x1f50f4)[_0x7b14('0x2a')](function(_0x10c474){for(var _0x87b099=0x0;_0x87b099<_0x10c474[_0x7b14('0x32')];_0x87b099++){if(_0x10c474[_0x87b099]){var _0x2cbf8a=_0x7b14('0x33')+_0x10c474[_0x87b099]['id'];var _0x4be1a0=_0x2d9acd[_0x2cbf8a];_0x4be1a0[_0x7b14('0x39')]=_0x10c474[_0x87b099]['type'];}}return _0x2d9acd;});})['then'](function(_0x341fe7){_0x36ea89[_0x7b14('0x3a')]=_['keys'](_0x341fe7);_0x36ea89[_0x7b14('0x3b')]=_[_0x7b14('0x31')](_0x1fdb7['query']);_0x36ea89[_0x7b14('0x3c')]=_[_0x7b14('0x3d')](_0x36ea89[_0x7b14('0x3a')],_0x36ea89['query']);_0x18ad88['attributes']=_['intersection'](_0x36ea89['model'],qs[_0x7b14('0x3e')](_0x1fdb7[_0x7b14('0x3b')][_0x7b14('0x3e')]));_0x18ad88['attributes']=_0x18ad88[_0x7b14('0x3f')][_0x7b14('0x32')]?_0x18ad88[_0x7b14('0x3f')]:_0x36ea89[_0x7b14('0x3a')];if(!_0x1fdb7[_0x7b14('0x3b')][_0x7b14('0x40')](_0x7b14('0x41'))){_0x18ad88[_0x7b14('0x22')]=qs[_0x7b14('0x22')](_0x1fdb7[_0x7b14('0x3b')][_0x7b14('0x22')]);_0x18ad88[_0x7b14('0x20')]=qs['offset'](_0x1fdb7[_0x7b14('0x3b')]['offset']);}_0x18ad88['order']=qs['sort'](_0x1fdb7['query'][_0x7b14('0x42')]);_0x18ad88['where']=qs[_0x7b14('0x3c')](_[_0x7b14('0x43')](_0x1fdb7['query'],_0x36ea89['filters']),_0x341fe7);var _0x88b751=[];var _0x121559=squel[_0x7b14('0x44')]()['field']('id')[_0x7b14('0x45')](_0x7b14('0x2d'))[_0x7b14('0x45')](_0x7b14('0x46'))[_0x7b14('0x47')](_0x7b14('0x48'));var _0x14f9e2=squel[_0x7b14('0x44')]()[_0x7b14('0x47')]('cm_contacts','c')['left_join'](_0x7b14('0x49'),'uc','uc.CmContactId\x20=\x20c.id')[_0x7b14('0x4a')](_0x7b14('0x4b'),'ct',_0x7b14('0x4c'))['left_join'](_0x7b14('0x48'),'t','t.id\x20=\x20ct.TagId')['where'](_0x7b14('0x4d'));var _0x48a1b9=squel[_0x7b14('0x4e')]();var _0x5a1238=[];var _0xc3a342=squel['expr']();var _0x754414;if(_0x1fdb7[_0x7b14('0x3b')][_0x7b14('0x4f')]){_0x754414=as[_0x7b14('0x50')](_0x1fdb7['query'][_0x7b14('0x4f')]);var _0x2d6e27=_0x754414[_0x7b14('0x51')];for(var _0x2dec2d=0x0;_0x2dec2d<_0x754414[_0x7b14('0x52')]['length'];_0x2dec2d++){var _0x8e9aca=_0x754414[_0x7b14('0x52')][_0x2dec2d];var _0x282112='c';var _0x4ba617=_(_0x341fe7)[_0x7b14('0x31')]()[_0x7b14('0x53')](function(_0x107f8e){return _0x107f8e===_0x8e9aca[_0x7b14('0x45')];});if(_0x4ba617)_0x4ba617=_0x341fe7[_0x8e9aca[_0x7b14('0x45')]];if(!_0x4ba617){if(_0x8e9aca['field']===_0x7b14('0x54')){var _0x46ce50=_0x8e9aca[_0x7b14('0x55')][_0x7b14('0x56')](',')[_0x7b14('0x57')](function(_0x4586ea){return Number(_0x4586ea);});_0x46ce50[_0x7b14('0x58')](function(_0x1c23fe){_0xc3a342['or'](_0x7b14('0x59'),'%,'+_0x1c23fe+',%');});_0x5a1238=_[_0x7b14('0x5a')](_0x5a1238,_0x46ce50);}else if(_0x8e9aca['field']===_0x7b14('0x5b')){_0x48a1b9[_0x7b14('0x5c')](_0x7b14('0x5d'),_0x8e9aca[_0x7b14('0x55')]);}}else{if(_0x8e9aca[_0x7b14('0x45')]===_0x7b14('0x5e')||_0x4ba617[_0x7b14('0x39')]===_0x7b14('0x5f'))_0x8e9aca['castTo']='DATE';var _0x422f83=as[_0x7b14('0x60')](_0x282112,_0x4ba617[_0x7b14('0x61')],_0x8e9aca);_0x48a1b9[_0x2d6e27](_0x422f83['text'],_0x422f83[_0x7b14('0x55')][_0x7b14('0x62')],_0x422f83[_0x7b14('0x55')][_0x7b14('0x1f')]);}}}else{var _0x3c5032=_(Object['keys'](_0x1fdb7[_0x7b14('0x3b')]))[_0x7b14('0x57')](function(_0x154594){return _0x341fe7[_0x7b14('0x40')](_0x154594)?_0x154594:undefined;})[_0x7b14('0x63')](function(_0x3fed75){return!_[_0x7b14('0x64')](_0x3fed75);})[_0x7b14('0x55')]();if(_0x1fdb7[_0x7b14('0x3b')][_0x7b14('0x65')])_0x3c5032[_0x7b14('0x34')]('Contact');if(!_[_0x7b14('0x66')](_0x3c5032)){_0x3c5032[_0x7b14('0x58')](function(_0xcdd9e5){if(_0xcdd9e5===_0x7b14('0x67')){_0x14f9e2[_0x7b14('0x68')](_0x7b14('0x69'),[][_0x7b14('0x6a')](_0x1fdb7['query'][_0xcdd9e5]));}else if(_0xcdd9e5===_0x7b14('0x65')){var _0x3896c7='%'+_0x1fdb7[_0x7b14('0x3b')][_0xcdd9e5]+'%';_0x14f9e2[_0x7b14('0x68')](_0x7b14('0x6b'),_0x3896c7);}else{_0x14f9e2[_0x7b14('0x68')]('c.'+_0xcdd9e5+_0x7b14('0x6c'),_0x1fdb7[_0x7b14('0x3b')][_0xcdd9e5]);}});}if(_0x1fdb7[_0x7b14('0x3b')][_0x7b14('0x6d')]){_0x5a1238=_[_0x7b14('0x6e')](_0x1fdb7[_0x7b14('0x3b')][_0x7b14('0x6d')])?_0x1fdb7[_0x7b14('0x3b')][_0x7b14('0x6d')]:new Array(_0x1fdb7[_0x7b14('0x3b')][_0x7b14('0x6d')]);_0x5a1238[_0x7b14('0x58')](function(_0x1328ad){_0xc3a342['or'](_0x7b14('0x59'),'%,'+_0x1328ad+',%');});}if(_0x1fdb7[_0x7b14('0x3b')]['filter']){var _0x31c5cc=_0x1fdb7[_0x7b14('0x3b')][_0x7b14('0x63')][_0x7b14('0x6f')]('\x5c','\x5c\x5c')[_0x7b14('0x6f')](/'/g,'\x27\x27');if(_0x31c5cc[_0x7b14('0x56')]('\x20')[_0x7b14('0x32')]>0x1){_0x48a1b9['or'](_0x7b14('0x70'),qs[_0x7b14('0x71')](_0x31c5cc),null);}else{if(qs[_0x7b14('0x72')](_0x31c5cc)){_0x48a1b9['or'](_0x7b14('0x73'),_0x31c5cc+'%');_0x48a1b9['or']('c.phone\x20LIKE\x20?',_0x31c5cc+'%');_0x48a1b9['or'](_0x7b14('0x74'),_0x31c5cc+'%');_0x48a1b9['or'](_0x7b14('0x75'),_0x31c5cc+'%');}else if(qs[_0x7b14('0x76')](_0x31c5cc)){_0x48a1b9['or'](_0x7b14('0x77'),_0x31c5cc+'%');}else{_0x48a1b9['or'](_0x7b14('0x78'),'%'+_0x31c5cc+'%');_0x48a1b9['or']('c.lastName\x20LIKE\x20?','%'+_0x31c5cc+'%');_0x48a1b9['or'](_0x7b14('0x77'),'%'+_0x31c5cc+'%');}}}}_0x14f9e2[_0x7b14('0x68')](_0x48a1b9);_0x14f9e2[_0x7b14('0x79')](_0x7b14('0x7a'));var _0x54a644={'type':db[_0x7b14('0x7b')]['QueryTypes']['SELECT'],'raw':!![]};var _0x4e7326=_0x14f9e2[_0x7b14('0x7c')]()[_0x7b14('0x45')](_0x7b14('0x7a'));if(_0x18ad88[_0x7b14('0x7d')]){_0x18ad88[_0x7b14('0x7d')][_0x7b14('0x58')](function(_0x7f530e){_0x14f9e2['order']('c.'+_0x7f530e[0x0],_0x7f530e[0x1]===_0x7b14('0x7e')?![]:!![]);});}if(!_[_0x7b14('0x66')](_0x5a1238)){_0x14f9e2[_0x7b14('0x7f')](_0xc3a342);_0x4e7326['where']('t.id\x20IN\x20?',_0x5a1238);}BPromise[_0x7b14('0x80')]()['then'](function(){if(!_0x754414)return;if(_0x1fdb7['user'][_0x7b14('0x81')]!=='agent')return;if(!_[_0x7b14('0x82')](_0x754414[_0x7b14('0x52')],[_0x7b14('0x45'),_0x7b14('0x5b')])){return _0x1fdb7[_0x7b14('0x83')][_0x7b14('0x84')]({'attributes':['id'],'raw':!![]})[_0x7b14('0x2a')](function(_0x532526){if(_[_0x7b14('0x66')](_0x532526)){_0x4e7326[_0x7b14('0x68')](_0x7b14('0x85'));_0x14f9e2[_0x7b14('0x68')](_0x7b14('0x85'));}else{_0x4e7326[_0x7b14('0x68')](_0x7b14('0x69'),_[_0x7b14('0x57')](_0x532526,'id'));_0x14f9e2[_0x7b14('0x68')](_0x7b14('0x69'),_[_0x7b14('0x57')](_0x532526,'id'));}});}})[_0x7b14('0x2a')](function(){if(_0x1fdb7[_0x7b14('0x83')][_0x7b14('0x81')]===_0x7b14('0x86')&&!_0x754414&&!_0x1fdb7[_0x7b14('0x3b')][_0x7b14('0x67')])return[];return db[_0x7b14('0x87')][_0x7b14('0x3b')](_0x4e7326[_0x7b14('0x88')](),_0x54a644);})[_0x7b14('0x2a')](function(_0x50a56d){_0x3ff00d['count']=_0x50a56d[_0x7b14('0x32')];if(_0x3ff00d[_0x7b14('0x23')]===0x0)return[];return db['sequelize'][_0x7b14('0x3b')](_0x121559[_0x7b14('0x88')](),_0x54a644)['then'](function(_0x4a0104){_0x88b751=_[_0x7b14('0x89')](_0x4a0104,'id');_0x54a644=_[_0x7b14('0x8a')](_0x54a644,{'model':db[_0x7b14('0x2f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1fdb7[_0x7b14('0x3b')][_0x7b14('0x3e')]){_0x18ad88[_0x7b14('0x3f')][_0x7b14('0x58')](function(_0x32bc19){_0x14f9e2[_0x7b14('0x45')]('c.'+_0x32bc19);});}else{_0x14f9e2[_0x7b14('0x45')](_0x7b14('0x7a'));_0x14f9e2[_0x7b14('0x45')](_0x7b14('0x8b'));_0x14f9e2[_0x7b14('0x45')](_0x7b14('0x8c'));_0x14f9e2[_0x7b14('0x45')](_0x7b14('0x8d'));_0x14f9e2[_0x7b14('0x45')](_0x7b14('0x8e'));_0x14f9e2[_0x7b14('0x45')](_0x7b14('0x8f'));_0x14f9e2[_0x7b14('0x45')]('c.email');_0x14f9e2[_0x7b14('0x45')]('c.ListId');_0x14f9e2[_0x7b14('0x45')](_0x7b14('0x90'));_0x14f9e2[_0x7b14('0x45')](_0x7b14('0x91'));_0x14f9e2['field'](_0x7b14('0x92'));_0x14f9e2['field'](_0x7b14('0x93'),_0x7b14('0x94'));}if(_0x18ad88[_0x7b14('0x22')])_0x14f9e2[_0x7b14('0x22')](_0x18ad88['limit']);if(_0x18ad88['offset'])_0x14f9e2[_0x7b14('0x20')](_0x18ad88['offset']);return db[_0x7b14('0x87')]['query'](_0x14f9e2['toString'](),_0x54a644);});})[_0x7b14('0x2a')](function(_0x3c5b23){_0x3c5b23[_0x7b14('0x58')](function(_0x3e2440){if(_0x3e2440[_0x7b14('0x94')]){_0x3e2440[_0x7b14('0x95')]=[];_0x3e2440['TagIds'][_0x7b14('0x56')](',')[_0x7b14('0x58')](function(_0x797d3e){_0x3e2440[_0x7b14('0x95')]['push'](_0x88b751[_0x797d3e]);});}delete _0x3e2440['TagIds'];});_0x3ff00d[_0x7b14('0x96')]=_0x3c5b23;return _0x3ff00d;})['then'](respondWithFilteredResult(_0x5135df,_0x18ad88));})[_0x7b14('0x97')](handleError(_0x5135df,null));};exports[_0x7b14('0x29')]=function(_0x4181ff,_0x26aceb){return db[_0x7b14('0x2f')][_0x7b14('0x53')]({'where':{'id':_0x4181ff[_0x7b14('0x98')]['id']}})[_0x7b14('0x2a')](handleEntityNotFound(_0x26aceb,null))['then'](removeEntity(_0x26aceb,null))[_0x7b14('0x97')](handleError(_0x26aceb,null));};exports[_0x7b14('0x30')]=function(_0x5021ce,_0x120acf){return db['CmContact'][_0x7b14('0x30')]()[_0x7b14('0x2a')](function(_0x2ddb85){delete _0x2ddb85[_0x7b14('0x99')];for(var _0x71b1fc=0x0;_0x71b1fc<Object[_0x7b14('0x31')](_0x2ddb85)['length'];_0x71b1fc++){var _0x2c8ef8=Object[_0x7b14('0x31')](_0x2ddb85)[_0x71b1fc];if(!_[_0x7b14('0x9a')](_0x2c8ef8,_0x7b14('0x33'))){_0x2ddb85[_0x2c8ef8]['columnName']=_0x2c8ef8;_0x2ddb85[_0x2c8ef8][_0x7b14('0x9b')]=_0x2c8ef8;}}return _0x2ddb85;})['then'](function(_0x38bad4){var _0x3adee6={'where':{'$or':[{'ListId':_0x5021ce[_0x7b14('0x3b')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x7b14('0x35')][_0x7b14('0x9c')](_0x3adee6)['then'](function(_0x3e8479){for(var _0x3f81f4=0x0;_0x3f81f4<_0x3e8479[_0x7b14('0x32')];_0x3f81f4++){var _0x3b6216=_0x7b14('0x33')+_0x3e8479[_0x3f81f4]['id'];_0x38bad4[_0x3b6216][_0x7b14('0x9d')]=_0x3b6216;_0x38bad4[_0x3b6216][_0x7b14('0x9b')]=_0x3e8479[_0x3f81f4]['alias'];_0x38bad4[_0x3b6216][_0x7b14('0x9e')]={'type':_0x3e8479[_0x3f81f4][_0x7b14('0x61')],'values':_0x3e8479[_0x3f81f4]['values']};}Object[_0x7b14('0x31')](_0x38bad4)[_0x7b14('0x58')](function(_0x4b22c4){if(!_0x38bad4[_0x4b22c4][_0x7b14('0x40')](_0x7b14('0x9d'))){delete _0x38bad4[_0x4b22c4];}});return _0x38bad4;});})[_0x7b14('0x2a')](respondWithResult(_0x120acf,null))[_0x7b14('0x97')](handleError(_0x120acf,null));};exports[_0x7b14('0x8a')]=function(_0x29a7ac,_0x32f328){var _0x21f5f1;var _0x4e758a;var _0x24c1af;if(_0x29a7ac[_0x7b14('0x9f')]['id']){delete _0x29a7ac['body']['id'];}return db[_0x7b14('0x2f')][_0x7b14('0x9c')]({'where':{'id':[_0x29a7ac[_0x7b14('0x9f')]['to'],_0x29a7ac[_0x7b14('0x9f')][_0x7b14('0x47')]]}})[_0x7b14('0x2a')](function(_0x26e736){if(_0x26e736){if(_0x26e736[_0x7b14('0x32')]!==0x2){return null;}_0x26e736[0x0]=_0x26e736[0x0][_0x7b14('0xa0')]({'plain':!![]});_0x26e736[0x1]=_0x26e736[0x1]['get']({'plain':!![]});delete _0x26e736[0x0]['id'];delete _0x26e736[0x1]['id'];return _[_0x7b14('0xa1')](_0x26e736[0x0],_0x26e736[0x1],function(_0x1cd271,_0x274376){if(Array[_0x7b14('0x6e')](_0x274376)&&!_0x274376[_0x7b14('0x32')]){return _0x1cd271;}else if(!_0x274376){return _0x1cd271;}});}})[_0x7b14('0x2a')](handleEntityNotFound(_0x32f328,null))['then'](function(_0x211c03){if(_0x211c03){if(_0x211c03[_0x7b14('0x99')]&&_[_0x7b14('0x6e')](_0x211c03[_0x7b14('0x99')])){_0x211c03[_0x7b14('0x99')]=_0x211c03[_0x7b14('0x99')][_0x7b14('0xa2')]();}logger[_0x7b14('0xa3')](_0x7b14('0xa4'),_0x29a7ac['body']['to'],_0x29a7ac[_0x7b14('0x9f')]['from']);return db['CmHopper'][_0x7b14('0x29')]({'where':{'ContactId':[_0x29a7ac[_0x7b14('0x9f')]['to'],_0x29a7ac[_0x7b14('0x9f')][_0x7b14('0x47')]]}})['then'](function(_0x5ae576){logger['info'](_0x7b14('0xa5'),_0x5ae576);return db[_0x7b14('0xa6')][_0x7b14('0x29')]({'where':{'ContactId':[_0x29a7ac[_0x7b14('0x9f')]['to'],_0x29a7ac[_0x7b14('0x9f')]['from']]}})['then'](function(_0x4746a6){logger[_0x7b14('0xa3')](_0x7b14('0xa7'),_0x4746a6);return db[_0x7b14('0x2f')][_0x7b14('0xa8')](_0x211c03);});});}})[_0x7b14('0x2a')](function(_0x382c9d){if(_0x382c9d){_0x21f5f1=_0x382c9d;_0x4e758a={'ContactId':_0x21f5f1['id']};_0x24c1af={'where':{'ContactId':[_0x29a7ac[_0x7b14('0x9f')]['to'],_0x29a7ac[_0x7b14('0x9f')]['from']]}};return db['ChatInteraction'][_0x7b14('0x28')](_0x4e758a,_0x24c1af);}})[_0x7b14('0x2a')](function(){if(_0x21f5f1){return db[_0x7b14('0xa9')][_0x7b14('0x28')](_0x4e758a,_0x24c1af);}})[_0x7b14('0x2a')](function(){if(_0x21f5f1){return db['ChatOfflineMessage']['update'](_0x4e758a,_0x24c1af);}})[_0x7b14('0x2a')](function(){if(_0x21f5f1){return db['MailInteraction'][_0x7b14('0x28')](_0x4e758a,_0x24c1af);}})[_0x7b14('0x2a')](function(){if(_0x21f5f1){return db[_0x7b14('0xaa')][_0x7b14('0x28')](_0x4e758a,_0x24c1af);}})[_0x7b14('0x2a')](function(){if(_0x21f5f1){return db[_0x7b14('0xab')][_0x7b14('0x28')](_0x4e758a,_0x24c1af);}})['then'](function(){if(_0x21f5f1){return db[_0x7b14('0xaa')][_0x7b14('0x28')](_0x4e758a,_0x24c1af);}})['then'](function(){if(_0x21f5f1){return db[_0x7b14('0xac')][_0x7b14('0x28')](_0x4e758a,_0x24c1af);}})[_0x7b14('0x2a')](function(){if(_0x21f5f1){return db[_0x7b14('0xad')]['update'](_0x4e758a,_0x24c1af);}})[_0x7b14('0x2a')](function(){if(_0x21f5f1){return db['FaxInteraction'][_0x7b14('0x28')](_0x4e758a,_0x24c1af);}})[_0x7b14('0x2a')](function(){if(_0x21f5f1){return db[_0x7b14('0xae')][_0x7b14('0x28')](_0x4e758a,_0x24c1af);}})[_0x7b14('0x2a')](function(){if(_0x21f5f1){return db[_0x7b14('0xaf')]['update'](_0x4e758a,_0x24c1af);}})[_0x7b14('0x2a')](function(){if(_0x21f5f1){return db[_0x7b14('0xb0')][_0x7b14('0x28')](_0x4e758a,_0x24c1af);}})[_0x7b14('0x2a')](function(){if(_0x21f5f1){return db['CmHopperFinal'][_0x7b14('0x28')](_0x4e758a,_0x24c1af);}})[_0x7b14('0x2a')](function(){if(_0x21f5f1){return db[_0x7b14('0xb1')][_0x7b14('0x28')](_0x4e758a,_0x24c1af);}})['then'](function(){if(_0x21f5f1){return db[_0x7b14('0xb2')]['update'](_0x4e758a,_0x24c1af);}})[_0x7b14('0x2a')](function(){if(_0x21f5f1){return db[_0x7b14('0xb3')][_0x7b14('0x28')](_0x4e758a,_0x24c1af);}})['then'](function(){if(_0x21f5f1){return db[_0x7b14('0xb4')]['update'](_0x4e758a,_0x24c1af);}})['then'](function(){if(_0x21f5f1){return db[_0x7b14('0xb5')][_0x7b14('0x28')](_0x4e758a,_0x24c1af);}})[_0x7b14('0x2a')](function(){if(_0x21f5f1){return db[_0x7b14('0xb6')]['update'](_0x4e758a,_0x24c1af);}})[_0x7b14('0x2a')](function(){if(_0x21f5f1){return db[_0x7b14('0xb7')][_0x7b14('0x28')](_0x4e758a,_0x24c1af);}})[_0x7b14('0x2a')](function(){if(_0x21f5f1){return db[_0x7b14('0xb8')][_0x7b14('0x28')](_0x4e758a,_0x24c1af);}})[_0x7b14('0x2a')](function(){if(_0x21f5f1){return db['JscriptySessionReport']['update'](_0x4e758a,_0x24c1af);}})[_0x7b14('0x2a')](function(){if(_0x21f5f1){return db['WhatsappInteraction'][_0x7b14('0x28')](_0x4e758a,_0x24c1af);}})[_0x7b14('0x2a')](function(){if(_0x21f5f1){return db[_0x7b14('0xb9')][_0x7b14('0x28')](_0x4e758a,_0x24c1af);}})[_0x7b14('0x2a')](function(){if(_0x21f5f1){return db[_0x7b14('0xba')]['update'](_0x4e758a,_0x24c1af);}})['then'](function(){if(_0x21f5f1){return db[_0x7b14('0x2f')][_0x7b14('0x29')]({'where':{'id':[_0x29a7ac[_0x7b14('0x9f')]['to'],_0x29a7ac[_0x7b14('0x9f')]['from']]}});}})['then'](function(){if(_0x21f5f1){return _0x21f5f1;}})[_0x7b14('0x2a')](respondWithResult(_0x32f328,null))[_0x7b14('0x97')](handleError(_0x32f328,null));};exports['create']=function(_0x536ac0,_0x435ff9){return db[_0x7b14('0x2f')][_0x7b14('0x30')]()[_0x7b14('0x2a')](function(_0x1fb140){if(_0x536ac0['body'][_0x7b14('0x99')]&&_['isArray'](_0x536ac0[_0x7b14('0x9f')]['tags'])){if(_0x536ac0[_0x7b14('0x9f')][_0x7b14('0x99')][_0x7b14('0x32')]){_0x536ac0[_0x7b14('0x9f')][_0x7b14('0x99')]=_0x536ac0[_0x7b14('0x9f')][_0x7b14('0x99')][_0x7b14('0xa2')](';')+';';}else{_0x536ac0['body'][_0x7b14('0x99')]=null;}}else{_0x536ac0[_0x7b14('0x9f')][_0x7b14('0x99')]=null;}return db[_0x7b14('0x2f')][_0x7b14('0xa8')](_0x536ac0[_0x7b14('0x9f')],{'fields':_['keys'](_0x1fb140),'raw':!![]});})[_0x7b14('0x2a')](respondWithResult(_0x435ff9,0xc9))[_0x7b14('0x97')](handleError(_0x435ff9,null));};exports['bulkCreate']=function(_0x32fec3,_0x1c3014){var _0x355b6e=[];var _0x526934=0x0;var _0x205117=0x0;var _0x596165=0x0;return db[_0x7b14('0x2f')][_0x7b14('0x30')]()[_0x7b14('0x2a')](function(_0x50b1f2){return BPromise['each'](_0x32fec3[_0x7b14('0x9f')],function(_0x3f70be){var _0x5d1968={'where':{'$or':[]},'defaults':_0x3f70be,'fields':_[_0x7b14('0x31')](_0x50b1f2),'raw':!![]};if(_0x3f70be['duplicates']){for(var _0x39a9a6=0x0;_0x39a9a6<_0x3f70be[_0x7b14('0xbb')]['length'];_0x39a9a6++){var _0x560035={};_0x560035[_0x3f70be[_0x7b14('0xbb')][_0x39a9a6]]=_0x3f70be[_0x3f70be['duplicates'][_0x39a9a6]];_0x5d1968[_0x7b14('0x68')][_0x7b14('0xbc')][_0x7b14('0x34')](_0x560035);}_0x5d1968[_0x7b14('0x68')][_0x7b14('0x67')]=_0x3f70be['ListId'];}return db[_0x7b14('0x2f')][_0x7b14('0xbd')](_0x5d1968)[_0x7b14('0xbe')](function(_0x21a407,_0x2771ac){if(_0x2771ac){_0x526934++;}else{_0x596165++;}})['catch'](function(_0x558ea4){console['error'](_0x558ea4);_0x205117++;});});})[_0x7b14('0x2a')](function(_0x5cce02){if(_0x5cce02){return{'success':_0x526934,'failure':_0x205117,'duplicates':_0x596165};}})['then'](respondWithResult(_0x1c3014,0xc9))[_0x7b14('0x97')](handleError(_0x1c3014,null));};exports[_0x7b14('0xbf')]=function(_0x24dd07,_0x10190f,_0x6fee24){var _0x40cdc3;return db[_0x7b14('0x2f')][_0x7b14('0x30')]()[_0x7b14('0x2a')](function(_0x411a06){return db['CmContact'][_0x7b14('0x53')]({'where':{'id':_0x24dd07[_0x7b14('0x98')]['id']},'include':[{'model':db[_0x7b14('0x54')],'as':_0x7b14('0x95'),'attributes':['id','name',_0x7b14('0x46')],'required':_0x24dd07['query']['tag']?!![]:![]}],'attributes':_[_0x7b14('0x31')](_0x411a06)});})[_0x7b14('0x2a')](function(_0x3ca514){_0x40cdc3=_0x3ca514[_0x7b14('0xa0')]({'plain':!![]});var _0x391231={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x3ca514&&_0x3ca514[_0x7b14('0x67')]){if(_0x3ca514[_0x7b14('0x67')]){_0x391231[_0x7b14('0x68')][_0x7b14('0xc0')][_0x7b14('0x34')]({'ListId':{'$ne':_0x3ca514['ListId']}});}}return db[_0x7b14('0x35')][_0x7b14('0x9c')](_0x391231);})[_0x7b14('0x2a')](function(_0x172c55){return _[_0x7b14('0xc1')](_0x40cdc3,_['map'](_0x172c55,function(_0x5bede0){return util['format']('cf_%d',_0x5bede0['id']);}));})[_0x7b14('0x2a')](handleEntityNotFound(_0x10190f,null))[_0x7b14('0x2a')](respondWithResult(_0x10190f,null))[_0x7b14('0x97')](handleError(_0x10190f,null));};exports['update']=function(_0x28b30d,_0x4a511c){var _0x43c629;if(_0x28b30d[_0x7b14('0x9f')]['id']){delete _0x28b30d[_0x7b14('0x9f')]['id'];}return db[_0x7b14('0x2f')][_0x7b14('0x53')]({'where':{'id':_0x28b30d[_0x7b14('0x98')]['id']}})['then'](handleEntityNotFound(_0x4a511c,null))[_0x7b14('0x2a')](saveUpdates(_0x28b30d[_0x7b14('0x9f')],null))[_0x7b14('0x2a')](function(_0x4c9cf1){_0x43c629=_0x4c9cf1;var _0x4ab976={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x4c9cf1&&_0x4c9cf1[_0x7b14('0x67')]){if(_0x4c9cf1[_0x7b14('0x67')]){_0x4ab976[_0x7b14('0x68')][_0x7b14('0xc0')][_0x7b14('0x34')]({'ListId':{'$ne':_0x4c9cf1['ListId']}});}}return db[_0x7b14('0x35')]['findAll'](_0x4ab976);})[_0x7b14('0x2a')](function(_0x3933f4){if(_0x3933f4){return _[_0x7b14('0xc1')](_['pickBy'](_0x28b30d[_0x7b14('0x9f')],function(_0x156d2e,_0x500496){return _['startsWith'](_0x500496,_0x7b14('0x33'));}),_['map'](_0x3933f4,function(_0x8f190b){return util[_0x7b14('0xc2')]('cf_%d',_0x8f190b['id']);}));}})[_0x7b14('0x2a')](function(_0x63daa1){if(_0x63daa1&&!_[_0x7b14('0x66')](_0x63daa1)){var _0x45791d=squel[_0x7b14('0x28')]()[_0x7b14('0xc3')](_0x7b14('0xc4'))[_0x7b14('0xc5')](_0x63daa1)[_0x7b14('0x68')](_0x7b14('0xc6'),_0x28b30d[_0x7b14('0x98')]['id'])[_0x7b14('0xc7')]();return db[_0x7b14('0x87')][_0x7b14('0x3b')](_0x45791d[_0x7b14('0xc8')],{'replacements':_0x45791d[_0x7b14('0xc9')]});}})[_0x7b14('0x2a')](function(){if(_0x28b30d['body'][_0x7b14('0xca')]&&_0x43c629){return db[_0x7b14('0xcb')][_0x7b14('0x28')]({'phone':_0x28b30d[_0x7b14('0x9f')][_0x7b14('0xca')]},{'where':{'ContactId':_0x43c629['id']}});}})['then'](function(){return _0x43c629;})[_0x7b14('0x2a')](respondWithResult(_0x4a511c,null))[_0x7b14('0x97')](handleError(_0x4a511c,null));};exports[_0x7b14('0xcc')]=function(_0x36e96c,_0x1bed54,_0x334ac2){var _0x44e43d={};var _0x5405d1={};var _0x4df461;var _0x349f6c;return db['CmContact'][_0x7b14('0x36')]({'where':{'id':_0x36e96c['params']['id']}})[_0x7b14('0x2a')](handleEntityNotFound(_0x1bed54,null))[_0x7b14('0x2a')](function(_0x5310c3){if(_0x5310c3){_0x4df461=_0x5310c3;_0x5405d1[_0x7b14('0x3a')]=_['keys'](db[_0x7b14('0x54')][_0x7b14('0xcd')]);_0x5405d1[_0x7b14('0x3b')]=_[_0x7b14('0x31')](_0x36e96c[_0x7b14('0x3b')]);_0x5405d1[_0x7b14('0x3c')]=_[_0x7b14('0x3d')](_0x5405d1[_0x7b14('0x3a')],_0x5405d1[_0x7b14('0x3b')]);_0x44e43d['attributes']=_[_0x7b14('0x3d')](_0x5405d1[_0x7b14('0x3a')],qs[_0x7b14('0x3e')](_0x36e96c[_0x7b14('0x3b')][_0x7b14('0x3e')]));_0x44e43d['attributes']=_0x44e43d[_0x7b14('0x3f')]['length']?_0x44e43d[_0x7b14('0x3f')]:_0x5405d1[_0x7b14('0x3a')];_0x44e43d[_0x7b14('0x7d')]=qs[_0x7b14('0x42')](_0x36e96c[_0x7b14('0x3b')][_0x7b14('0x42')]);_0x44e43d[_0x7b14('0x68')]=qs['filters'](_[_0x7b14('0x43')](_0x36e96c[_0x7b14('0x3b')],_0x5405d1[_0x7b14('0x3c')]));if(_0x36e96c[_0x7b14('0x3b')][_0x7b14('0x63')]){_0x44e43d[_0x7b14('0x68')]=_[_0x7b14('0x8a')](_0x44e43d[_0x7b14('0x68')],{'$or':_[_0x7b14('0x57')](_0x44e43d[_0x7b14('0x3f')],function(_0x59f90b){var _0x55d06f={};_0x55d06f[_0x59f90b]={'$like':'%'+_0x36e96c[_0x7b14('0x3b')][_0x7b14('0x63')]+'%'};return _0x55d06f;})});}_0x44e43d=_[_0x7b14('0x8a')]({},_0x44e43d,_0x36e96c[_0x7b14('0xce')]);return _0x4df461[_0x7b14('0xcc')](_0x44e43d);}})[_0x7b14('0x2a')](function(_0x5293ba){if(_0x5293ba){_0x349f6c=_0x5293ba[_0x7b14('0x32')];if(!_0x36e96c[_0x7b14('0x3b')]['hasOwnProperty'](_0x7b14('0x41'))){_0x44e43d['limit']=qs[_0x7b14('0x22')](_0x36e96c['query'][_0x7b14('0x22')]);_0x44e43d[_0x7b14('0x20')]=qs[_0x7b14('0x20')](_0x36e96c[_0x7b14('0x3b')]['offset']);}return _0x4df461[_0x7b14('0xcc')](_0x44e43d);}})[_0x7b14('0x2a')](function(_0x4df7d4){if(_0x4df7d4){return _0x4df7d4?{'count':_0x349f6c,'rows':_0x4df7d4}:null;}})[_0x7b14('0x2a')](respondWithResult(_0x1bed54,null))[_0x7b14('0x97')](handleError(_0x1bed54,null));};exports[_0x7b14('0xcf')]=function(_0xfb45ff,_0x4a989d,_0x527cdd){if(_0xfb45ff[_0x7b14('0x9f')]['id']){delete _0xfb45ff['body']['id'];}return db[_0x7b14('0x2f')][_0x7b14('0x36')]({'where':{'id':_0xfb45ff['params']['id']}})['then'](handleEntityNotFound(_0x4a989d,null))[_0x7b14('0x2a')](function(_0x22f573){if(_0x22f573){return _0x22f573[_0x7b14('0xcf')](_0xfb45ff[_0x7b14('0x9f')][_0x7b14('0xd0')]||[]);}return null;})[_0x7b14('0x2a')](respondWithResult(_0x4a989d,null))[_0x7b14('0x97')](handleError(_0x4a989d,null));};exports[_0x7b14('0xd1')]=function(_0x53aa1b,_0x5279d0,_0x3d1aa4){var _0x1d5de7={'raw':![],'where':{}};var _0x391b69={};var _0x5c769a={'count':0x0,'rows':[]};return db['CmContact'][_0x7b14('0x36')]({'where':{'id':_0x53aa1b['params']['id']}})[_0x7b14('0x2a')](handleEntityNotFound(_0x5279d0,null))['then'](function(_0x399763){if(_0x399763){_0x391b69['model']=_[_0x7b14('0x31')](db[_0x7b14('0xcb')][_0x7b14('0xcd')]);_0x391b69['query']=_[_0x7b14('0x31')](_0x53aa1b[_0x7b14('0x3b')]);_0x391b69[_0x7b14('0x3c')]=_[_0x7b14('0x3d')](_0x391b69[_0x7b14('0x3a')],_0x391b69[_0x7b14('0x3b')]);_0x1d5de7[_0x7b14('0x3f')]=_[_0x7b14('0x3d')](_0x391b69['model'],qs[_0x7b14('0x3e')](_0x53aa1b[_0x7b14('0x3b')][_0x7b14('0x3e')]));_0x1d5de7[_0x7b14('0x3f')]=_0x1d5de7[_0x7b14('0x3f')][_0x7b14('0x32')]?_0x1d5de7['attributes']:_0x391b69[_0x7b14('0x3a')];if(!_0x53aa1b['query']['hasOwnProperty']('nolimit')){_0x1d5de7['limit']=qs[_0x7b14('0x22')](_0x53aa1b[_0x7b14('0x3b')][_0x7b14('0x22')]);_0x1d5de7['offset']=qs[_0x7b14('0x20')](_0x53aa1b[_0x7b14('0x3b')]['offset']);}_0x1d5de7[_0x7b14('0x7d')]=qs['sort'](_0x53aa1b[_0x7b14('0x3b')]['sort']);_0x1d5de7['where']=qs['filters'](_[_0x7b14('0x43')](_0x53aa1b[_0x7b14('0x3b')],_0x391b69[_0x7b14('0x3c')]));_0x1d5de7[_0x7b14('0x68')][_0x7b14('0xd2')]=_0x399763['id'];if(_0x53aa1b[_0x7b14('0x3b')]['filter']){_0x1d5de7[_0x7b14('0x68')]=_[_0x7b14('0x8a')](_0x1d5de7[_0x7b14('0x68')],{'$or':_[_0x7b14('0x57')](_0x1d5de7['attributes'],function(_0x550dca){var _0x54cb76={};_0x54cb76[_0x550dca]={'$like':'%'+_0x53aa1b[_0x7b14('0x3b')][_0x7b14('0x63')]+'%'};return _0x54cb76;})});}_0x1d5de7=_[_0x7b14('0x8a')]({},_0x1d5de7,_0x53aa1b[_0x7b14('0xce')]);return db[_0x7b14('0xcb')]['count']({'where':_0x1d5de7[_0x7b14('0x68')]})['then'](function(_0x28913c){_0x5c769a[_0x7b14('0x23')]=_0x28913c;if(_0x53aa1b['query'][_0x7b14('0xd3')]){_0x1d5de7['include']=[{'all':!![]}];}return db[_0x7b14('0xcb')][_0x7b14('0x9c')](_0x1d5de7);})[_0x7b14('0x2a')](function(_0x5baabd){_0x5c769a['rows']=_0x5baabd;return _0x5c769a;});}})[_0x7b14('0x2a')](respondWithFilteredResult(_0x5279d0,_0x1d5de7))[_0x7b14('0x97')](handleError(_0x5279d0,null));};exports[_0x7b14('0xd4')]=function(_0x1ef516,_0x44ced0,_0x1da884){var _0x5d3787={'raw':!![],'where':{}};var _0x49dc83={};var _0x34363c={'count':0x0,'rows':[]};return db['CmContact'][_0x7b14('0x36')]({'where':{'id':_0x1ef516[_0x7b14('0x98')]['id']}})[_0x7b14('0x2a')](handleEntityNotFound(_0x44ced0,null))[_0x7b14('0x2a')](function(_0x4c5cac){if(_0x4c5cac){_0x49dc83['model']=_[_0x7b14('0x31')](db[_0x7b14('0xb1')][_0x7b14('0xcd')]);_0x49dc83[_0x7b14('0x3b')]=_[_0x7b14('0x31')](_0x1ef516['query']);_0x49dc83[_0x7b14('0x3c')]=_[_0x7b14('0x3d')](_0x49dc83['model'],_0x49dc83[_0x7b14('0x3b')]);_0x5d3787[_0x7b14('0x3f')]=_['intersection'](_0x49dc83[_0x7b14('0x3a')],qs['fields'](_0x1ef516['query'][_0x7b14('0x3e')]));_0x5d3787[_0x7b14('0x3f')]=_0x5d3787[_0x7b14('0x3f')]['length']?_0x5d3787['attributes']:_0x49dc83[_0x7b14('0x3a')];if(!_0x1ef516[_0x7b14('0x3b')][_0x7b14('0x40')](_0x7b14('0x41'))){_0x5d3787[_0x7b14('0x22')]=qs[_0x7b14('0x22')](_0x1ef516[_0x7b14('0x3b')][_0x7b14('0x22')]);_0x5d3787[_0x7b14('0x20')]=qs['offset'](_0x1ef516[_0x7b14('0x3b')][_0x7b14('0x20')]);}_0x5d3787[_0x7b14('0x7d')]=qs[_0x7b14('0x42')](_0x1ef516[_0x7b14('0x3b')][_0x7b14('0x42')]);_0x5d3787[_0x7b14('0x68')]=qs['filters'](_[_0x7b14('0x43')](_0x1ef516[_0x7b14('0x3b')],_0x49dc83[_0x7b14('0x3c')]));_0x5d3787[_0x7b14('0x68')][_0x7b14('0xd2')]=_0x4c5cac['id'];if(_0x1ef516[_0x7b14('0x3b')][_0x7b14('0x63')]){_0x5d3787[_0x7b14('0x68')]=_['merge'](_0x5d3787[_0x7b14('0x68')],{'$or':_['map'](_0x5d3787[_0x7b14('0x3f')],function(_0x30f39d){var _0x31d98c={};_0x31d98c[_0x30f39d]={'$like':'%'+_0x1ef516[_0x7b14('0x3b')][_0x7b14('0x63')]+'%'};return _0x31d98c;})});}_0x5d3787=_[_0x7b14('0x8a')]({},_0x5d3787,_0x1ef516[_0x7b14('0xce')]);return db[_0x7b14('0xb1')][_0x7b14('0x23')]({'where':_0x5d3787['where']})[_0x7b14('0x2a')](function(_0x5f2e03){_0x34363c[_0x7b14('0x23')]=_0x5f2e03;if(_0x1ef516[_0x7b14('0x3b')][_0x7b14('0xd3')]){_0x5d3787[_0x7b14('0xd5')]=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0x5d3787);})[_0x7b14('0x2a')](function(_0x439b22){_0x34363c[_0x7b14('0x96')]=_0x439b22;return _0x34363c;});}})['then'](respondWithFilteredResult(_0x44ced0,_0x5d3787))['catch'](handleError(_0x44ced0,null));};exports[_0x7b14('0xd6')]=function(_0x1cd703,_0x54b297,_0x40e7f4){var _0x35d8cf={'raw':!![],'where':{}};var _0x564549={};var _0x397792={'count':0x0,'rows':[]};return db[_0x7b14('0x2f')][_0x7b14('0x36')]({'where':{'id':_0x1cd703['params']['id']}})[_0x7b14('0x2a')](handleEntityNotFound(_0x54b297,null))['then'](function(_0x14637b){if(_0x14637b){_0x564549[_0x7b14('0x3a')]=_['keys'](db[_0x7b14('0xd7')][_0x7b14('0xcd')]);_0x564549['query']=_['keys'](_0x1cd703['query']);_0x564549[_0x7b14('0x3c')]=_['intersection'](_0x564549[_0x7b14('0x3a')],_0x564549['query']);_0x35d8cf[_0x7b14('0x3f')]=_[_0x7b14('0x3d')](_0x564549[_0x7b14('0x3a')],qs[_0x7b14('0x3e')](_0x1cd703[_0x7b14('0x3b')][_0x7b14('0x3e')]));_0x35d8cf[_0x7b14('0x3f')]=_0x35d8cf['attributes']['length']?_0x35d8cf['attributes']:_0x564549[_0x7b14('0x3a')];if(!_0x1cd703[_0x7b14('0x3b')][_0x7b14('0x40')](_0x7b14('0x41'))){_0x35d8cf[_0x7b14('0x22')]=qs[_0x7b14('0x22')](_0x1cd703['query']['limit']);_0x35d8cf[_0x7b14('0x20')]=qs[_0x7b14('0x20')](_0x1cd703[_0x7b14('0x3b')][_0x7b14('0x20')]);}_0x35d8cf[_0x7b14('0x7d')]=qs[_0x7b14('0x42')](_0x1cd703[_0x7b14('0x3b')][_0x7b14('0x42')]);_0x35d8cf[_0x7b14('0x68')]=qs[_0x7b14('0x3c')](_[_0x7b14('0x43')](_0x1cd703[_0x7b14('0x3b')],_0x564549[_0x7b14('0x3c')]));_0x35d8cf[_0x7b14('0x68')][_0x7b14('0xd2')]=_0x14637b['id'];if(_0x1cd703[_0x7b14('0x3b')][_0x7b14('0x63')]){_0x35d8cf[_0x7b14('0x68')]=_[_0x7b14('0x8a')](_0x35d8cf[_0x7b14('0x68')],{'$or':_[_0x7b14('0x57')](_0x35d8cf[_0x7b14('0x3f')],function(_0x52172a){var _0x2b125e={};_0x2b125e[_0x52172a]={'$like':'%'+_0x1cd703[_0x7b14('0x3b')][_0x7b14('0x63')]+'%'};return _0x2b125e;})});}_0x35d8cf=_[_0x7b14('0x8a')]({},_0x35d8cf,_0x1cd703[_0x7b14('0xce')]);return db[_0x7b14('0xd7')][_0x7b14('0x23')]({'where':_0x35d8cf[_0x7b14('0x68')]})['then'](function(_0x153dec){_0x397792[_0x7b14('0x23')]=_0x153dec;if(_0x1cd703[_0x7b14('0x3b')][_0x7b14('0xd3')]){_0x35d8cf['include']=[{'all':!![]}];}return db[_0x7b14('0xd7')][_0x7b14('0x9c')](_0x35d8cf);})[_0x7b14('0x2a')](function(_0x124c75){_0x397792[_0x7b14('0x96')]=_0x124c75;return _0x397792;});}})[_0x7b14('0x2a')](respondWithFilteredResult(_0x54b297,_0x35d8cf))[_0x7b14('0x97')](handleError(_0x54b297,null));};exports[_0x7b14('0xd8')]=function(_0x152c07,_0x49c5a9,_0x113a70){var _0x3d4451={'raw':!![],'where':{}};var _0x54f2cd={};var _0x2ddf54={'count':0x0,'rows':[]};return db[_0x7b14('0x2f')]['findOne']({'where':{'id':_0x152c07[_0x7b14('0x98')]['id']}})[_0x7b14('0x2a')](handleEntityNotFound(_0x49c5a9,null))[_0x7b14('0x2a')](function(_0x1fcfdf){if(_0x1fcfdf){_0x54f2cd['model']=_[_0x7b14('0x31')](db[_0x7b14('0xd9')]['rawAttributes']);_0x54f2cd[_0x7b14('0x3b')]=_[_0x7b14('0x31')](_0x152c07[_0x7b14('0x3b')]);_0x54f2cd[_0x7b14('0x3c')]=_[_0x7b14('0x3d')](_0x54f2cd[_0x7b14('0x3a')],_0x54f2cd[_0x7b14('0x3b')]);_0x3d4451['attributes']=_['intersection'](_0x54f2cd[_0x7b14('0x3a')],qs[_0x7b14('0x3e')](_0x152c07['query'][_0x7b14('0x3e')]));_0x3d4451['attributes']=_0x3d4451['attributes'][_0x7b14('0x32')]?_0x3d4451[_0x7b14('0x3f')]:_0x54f2cd[_0x7b14('0x3a')];if(!_0x152c07[_0x7b14('0x3b')][_0x7b14('0x40')]('nolimit')){_0x3d4451['limit']=qs[_0x7b14('0x22')](_0x152c07[_0x7b14('0x3b')][_0x7b14('0x22')]);_0x3d4451['offset']=qs[_0x7b14('0x20')](_0x152c07[_0x7b14('0x3b')]['offset']);}_0x3d4451[_0x7b14('0x7d')]=qs[_0x7b14('0x42')](_0x152c07['query']['sort']);_0x3d4451['where']=qs[_0x7b14('0x3c')](_['pick'](_0x152c07[_0x7b14('0x3b')],_0x54f2cd[_0x7b14('0x3c')]));_0x3d4451[_0x7b14('0x68')][_0x7b14('0xd2')]=_0x1fcfdf['id'];if(_0x152c07[_0x7b14('0x3b')]['filter']){_0x3d4451[_0x7b14('0x68')]=_[_0x7b14('0x8a')](_0x3d4451['where'],{'$or':_[_0x7b14('0x57')](_0x3d4451[_0x7b14('0x3f')],function(_0x3c6b32){var _0x5446e2={};_0x5446e2[_0x3c6b32]={'$like':'%'+_0x152c07[_0x7b14('0x3b')][_0x7b14('0x63')]+'%'};return _0x5446e2;})});}_0x3d4451=_[_0x7b14('0x8a')]({},_0x3d4451,_0x152c07['options']);return db[_0x7b14('0xd9')][_0x7b14('0x23')]({'where':_0x3d4451[_0x7b14('0x68')]})[_0x7b14('0x2a')](function(_0x2b7535){_0x2ddf54['count']=_0x2b7535;if(_0x152c07['query']['includeAll']){_0x3d4451[_0x7b14('0xd5')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0x7b14('0x9c')](_0x3d4451);})[_0x7b14('0x2a')](function(_0x2f024b){_0x2ddf54[_0x7b14('0x96')]=_0x2f024b;return _0x2ddf54;});}})[_0x7b14('0x2a')](respondWithFilteredResult(_0x49c5a9,_0x3d4451))[_0x7b14('0x97')](handleError(_0x49c5a9,null));};exports[_0x7b14('0xda')]=function(_0x6c5322,_0x51930e,_0x118eb2){try{if(!_0x6c5322['body']['ListId']){throw new Error(_0x7b14('0xdb'));}if(!_0x6c5322[_0x7b14('0x9f')][_0x7b14('0xdc')]){throw new Error(_0x7b14('0xdd'));}if(!_0x6c5322[_0x7b14('0x9f')][_0x7b14('0xde')]){throw new Error(_0x7b14('0xdf'));}if(!_0x6c5322[_0x7b14('0x9f')][_0x7b14('0xe0')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x347c6c=_0x6c5322[_0x7b14('0x9f')][_0x7b14('0xdc')][_0x7b14('0x56')](',');var _0x2ba596=_0x6c5322[_0x7b14('0x9f')]['binding_values']['split'](',');if(!_0x347c6c[_0x7b14('0x32')]||!_0x2ba596['length']||_0x347c6c['length']!==_0x2ba596[_0x7b14('0x32')]){throw new Error(_0x7b14('0xe1'));}_0x6c5322[_0x7b14('0x9f')][_0x7b14('0x3e')]=_[_0x7b14('0xe2')](_0x347c6c,_0x2ba596);if(!_0x6c5322[_0x7b14('0x9f')][_0x7b14('0x3e')][_0x7b14('0xca')]){throw new Error(_0x7b14('0xe3'));}if(!_0x6c5322[_0x7b14('0x9f')][_0x7b14('0x3e')][_0x7b14('0xe4')]){throw new Error(_0x7b14('0xe5'));}var _0x4fc0ec=path[_0x7b14('0xa2')](config[_0x7b14('0xe6')],_0x7b14('0xe7'),_0x6c5322[_0x7b14('0xe8')]['filename']);fs[_0x7b14('0xe9')](_0x4fc0ec,parseInt('0777',0x8));var _0x293bcd=require('child_process')[_0x7b14('0xea')](path[_0x7b14('0xa2')](__dirname,_0x7b14('0xeb')),[_0x4fc0ec,_0x6c5322[_0x7b14('0x9f')][_0x7b14('0xdc')],_0x6c5322['body']['binding_values'],_0x6c5322[_0x7b14('0x9f')][_0x7b14('0x67')],_0x6c5322[_0x7b14('0x9f')][_0x7b14('0xec')],_0x6c5322[_0x7b14('0x9f')][_0x7b14('0xbb')],_0x6c5322[_0x7b14('0x9f')][_0x7b14('0xe0')]]);return _0x51930e[_0x7b14('0x1e')](0xc8)[_0x7b14('0xed')]({'message':_0x7b14('0xee'),'pid':_0x293bcd[_0x7b14('0xef')]});}catch(_0x579907){return _0x51930e[_0x7b14('0x1e')](0x1f4)[_0x7b14('0xf0')](_0x579907);}};exports[_0x7b14('0xf1')]=function(_0x133469,_0x4bc78a,_0x3fdfd5){var _0x4b0863=fs['createReadStream'](_0x133469[_0x7b14('0xe8')][_0x7b14('0x7')]);Papa[_0x7b14('0xf2')](_0x4b0863,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x3ea732){return _0x4bc78a[_0x7b14('0x1e')](0xc8)[_0x7b14('0xed')]({'file':_0x133469[_0x7b14('0xe8')],'fields':_0x3ea732['meta'][_0x7b14('0x3e')]});}});};exports[_0x7b14('0xf3')]=function(_0x3513d9,_0xb6eb80,_0x11a992){return db[_0x7b14('0x5b')][_0x7b14('0x9c')]({'raw':!![],'attributes':['id'],'where':{'role':_0x7b14('0x86')}})[_0x7b14('0x2a')](function(_0x10cc42){var _0xfa8e41=![];if(!_0x3513d9[_0x7b14('0x9f')][_0x7b14('0x67')]){throw new Error(_0x7b14('0xdb'));}if(!_0x3513d9[_0x7b14('0x9f')][_0x7b14('0xf4')][_0x7b14('0xca')]){throw new Error(_0x7b14('0xe3'));}if(!_0x3513d9[_0x7b14('0x9f')][_0x7b14('0xf4')][_0x7b14('0xe4')]){throw new Error(_0x7b14('0xe5'));}if(!_0x3513d9[_0x7b14('0x9f')][_0x7b14('0xe0')]){throw new Error(_0x7b14('0xf5'));}var _0x4bba7c=require(_0x7b14('0xf6'))[_0x7b14('0xea')](path['join'](__dirname,'../../components/import/cm/csv2'),[_0x3513d9[_0x7b14('0x98')]['id'],JSON['stringify'](_0x3513d9['body']),JSON[_0x7b14('0xf7')](_0x10cc42)]);_0x4bba7c['on']('message',function(_0x5c7704){_0xfa8e41=!![];return _0xb6eb80[_0x7b14('0x1e')](0xc8)['json']({'message':_0x7b14('0xf8'),'pid':_0x4bba7c[_0x7b14('0xef')]});});_0x4bba7c['on'](_0x7b14('0xf9'),function(_0x45055b){if(_0x45055b&&!_0xfa8e41){return _0xb6eb80['status'](0x1f4)[_0x7b14('0xed')]({'message':_0x7b14('0xfa'),'pid':_0x4bba7c[_0x7b14('0xef')]});}});})[_0x7b14('0x97')](handleError(_0xb6eb80,null));};exports[_0x7b14('0xfb')]=function(_0x1a8612,_0x2d9159){var _0x4204ae=[_0x7b14('0xfc'),_0x7b14('0xfd'),'sms',_0x7b14('0xfe'),_0x7b14('0xff'),_0x7b14('0x100'),_0x7b14('0x101')];var _0x1d14a4={'offset':0x0,'order':qs[_0x7b14('0x42')]('-createdAt')},_0x24a929={'count':0x0,'rows':[]};Promise[_0x7b14('0x80')]()['then'](function(){if(_0x1a8612[_0x7b14('0x3b')][_0x7b14('0x102')]){if(!_[_0x7b14('0x103')](_0x4204ae,_0x1a8612[_0x7b14('0x3b')][_0x7b14('0x102')]['toLowerCase']())){throw new Error(_0x7b14('0x104'));}_0x4204ae=[_0x1a8612[_0x7b14('0x3b')][_0x7b14('0x102')][_0x7b14('0x105')]()];}if(_0x1a8612['query'][_0x7b14('0x106')]){try{var _0x2b712b=JSON[_0x7b14('0xf2')](_0x1a8612['query'][_0x7b14('0x106')]);if(!moment(_0x2b712b[_0x7b14('0x47')])[_0x7b14('0x107')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x2b712b['to'])[_0x7b14('0x107')]()){throw new Error('Invalid\x20date\x20for\x20range\x20to\x20filter');}}catch(_0x299acb){throw new Error(_0x7b14('0x108'));}}if(!_0x1a8612[_0x7b14('0x3b')][_0x7b14('0x40')]('nolimit')){_0x1d14a4[_0x7b14('0x22')]=qs['limit'](_0x1a8612[_0x7b14('0x3b')][_0x7b14('0x22')]||0xa);_0x1d14a4[_0x7b14('0x20')]=qs[_0x7b14('0x20')](_0x1a8612[_0x7b14('0x3b')][_0x7b14('0x20')]);}var _0x5b9294=_0x4204ae[_0x7b14('0x57')](function(_0x3217cb){if(_0x3217cb===_0x7b14('0x101')){var _0x3b7418={'attributes':['id',_0x7b14('0x109'),_0x7b14('0x61'),_0x7b14('0x10a'),_0x7b14('0x10b'),'callerid',_0x7b14('0x10c'),_0x7b14('0x10d'),'duration',_0x7b14('0x10e'),'createdAt',_0x7b14('0x10f'),_0x7b14('0x110'),_0x7b14('0x111'),_0x7b14('0x112')],'where':{'ContactId':_0x1a8612[_0x7b14('0x98')]['id']},'include':[{'model':db[_0x7b14('0x5b')],'as':_0x7b14('0x5b'),'attributes':['id',_0x7b14('0x2d'),'fullname',_0x7b14('0x113')]}],'order':[[_0x7b14('0x114'),_0x7b14('0x7e')]]};if(_0x1a8612[_0x7b14('0x3b')][_0x7b14('0x106')]){_0x3b7418[_0x7b14('0x68')][_0x7b14('0x114')]={'$gte':_0x2b712b[_0x7b14('0x47')],'$lte':_0x2b712b['to']};}return db[_0x7b14('0xb3')][_0x7b14('0x115')](_0x3b7418)[_0x7b14('0x2a')](function(_0x399842){_0x24a929['count']+=_0x399842[_0x7b14('0x23')];return _['map'](_0x399842[_0x7b14('0x96')],function(_0x5cc5b2){var _0x14fcab=_0x5cc5b2['get']({'plain':!![]});_0x14fcab[_0x7b14('0x102')]=_0x3217cb;if(_0x14fcab[_0x7b14('0x5b')]){_0x14fcab['User']={'id':_0x14fcab[_0x7b14('0x5b')]['id'],'name':_0x14fcab[_0x7b14('0x5b')][_0x7b14('0x2d')],'fullname':_0x14fcab[_0x7b14('0x5b')][_0x7b14('0x116')],'alias':_0x14fcab[_0x7b14('0x5b')]['alias']};}return _0x14fcab;});});}else{var _0x496599=_[_0x7b14('0x117')](_0x3217cb)+(_0x3217cb===_0x7b14('0xfd')?_0x7b14('0x118'):'Account');var _0x3fe06c={'attributes':['id',_0x7b14('0x119'),_0x7b14('0x11a'),_0x7b14('0x114'),_0x7b14('0x10e'),'disposition',_0x7b14('0x11b'),_0x7b14('0x11c'),'UserId',_0x496599+'Id'],'where':{'ContactId':_0x1a8612[_0x7b14('0x98')]['id']},'include':[{'model':db[_0x496599],'as':_0x7b14('0x11d'),'attributes':['id','name',_0x7b14('0x11e')]},{'model':db['User'],'as':_0x7b14('0x11f'),'attributes':['id','name',_0x7b14('0x116')]},{'model':db['Tag'],'as':_0x7b14('0x95'),'attributes':['id',_0x7b14('0x2d'),'color'],'through':{'attributes':[]}}],'order':[[_0x7b14('0x114'),_0x7b14('0x7e')]]};if(_0x1a8612[_0x7b14('0x3b')][_0x7b14('0x106')]){_0x3fe06c[_0x7b14('0x68')][_0x7b14('0x114')]={'$gte':_0x2b712b[_0x7b14('0x47')],'$lte':_0x2b712b['to']};}switch(_0x3217cb){case _0x7b14('0xfd'):_0x3fe06c[_0x7b14('0x3f')]['push'](_0x7b14('0x120'),_0x7b14('0x121'),_0x7b14('0x122'),_0x7b14('0x123'),'osName','ratingMessage','ratingType','ratingValue',_0x7b14('0x124'));break;case _0x7b14('0xfc'):_0x3fe06c['attributes']['push'](_0x7b14('0x125'),_0x7b14('0x126'));break;case _0x7b14('0xfe'):_0x3fe06c[_0x7b14('0x3f')][_0x7b14('0x34')]('externalUrl',_0x7b14('0x127'));break;}return db[_['startCase'](_0x3217cb)+_0x7b14('0x128')][_0x7b14('0x115')](_0x3fe06c)['then'](function(_0x580a89){_0x24a929[_0x7b14('0x23')]+=_0x580a89['count'];return _['map'](_0x580a89['rows'],function(_0x568370){var _0x2a8d7b=_0x568370['get']({'plain':!![]});_0x2a8d7b['channel']=_0x3217cb;if(_0x2a8d7b[_0x7b14('0x11f')]){_0x2a8d7b[_0x7b14('0x11f')]={'id':_0x2a8d7b[_0x7b14('0x11f')]['id'],'name':_0x2a8d7b[_0x7b14('0x11f')][_0x7b14('0x2d')],'fullname':_0x2a8d7b['Owner'][_0x7b14('0x116')]};}return _0x2a8d7b;});});}});return Promise['all'](_0x5b9294);})[_0x7b14('0x2a')](function(_0x36d827){return _(_0x36d827)[_0x7b14('0x129')]()['sortBy'](_0x7b14('0x114'))[_0x7b14('0x12a')]()['value']();})[_0x7b14('0x2a')](function(_0x522e1e){_0x24a929['rows']=_0x1d14a4[_0x7b14('0x22')]?_0x522e1e[_0x7b14('0x12b')](_0x1d14a4[_0x7b14('0x20')],_0x1d14a4[_0x7b14('0x20')]+_0x1d14a4['limit']):_0x522e1e;return _0x24a929;})[_0x7b14('0x2a')](respondWithFilteredResult(_0x2d9159,_0x1d14a4))[_0x7b14('0x97')](handleError(_0x2d9159,null));};
\ No newline at end of file
+var _0x71de=['ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','OpenchannelInteraction','OpenchannelMessage','CmHopperFinal','VoiceCallReport','ChatQueueReport','FaxQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','duplicates','$or','spread','show','$and','format','params','omit','pickBy','table','setFields','id\x20=\x20?','toParam','phone','getTags','options','setTags','ids','getHoppers','rawAttributes','pick','ContactId','includeAll','include','getHopperHistories','CmHopperHistory','getHopperFinals','getJscriptySessions','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','root','file','chmodSync','0777','CompanyId','json','pid','send','upload','createReadStream','parse','binding','No\x20firstName\x20column\x20specified','child_process','fork','../../components/import/cm/csv2','stringify','message','start\x20child\x20process\x20correctly!','exit','error\x20child\x20process','mail','chat','sms','openchannel','fax','voice','-createdAt','channel','includes','toLowerCase','range','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','callerid','starttime','endtime','note','userDisposition','UserId','fullname','createdAt','findAndCountAll','startCase','Account','closed','closedAt','disposition','thirdDisposition','key','Tags','browserName','customerIp','customerPort','deviceModel','ratingMessage','ratingValue','referer','subject','substatus','externalUrl','threadId','Interaction','Owner','all','sortBy','reverse','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','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','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./cmContact.socket','status','end','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','name','index','CmContact','keys','startsWith','push','CmCustomField','findOne','trimStart','length','cf_','type','query','filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','sort','field','from','tools_tags','select','left_join','uc.CmContactId\x20=\x20c.id','t.id\x20=\x20ct.TagId','expr','search','parseSearch','sqlOperator','conditions','find','Tag','value','split','map','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','and','uc.UserId\x20=\x20?','dateOfBirth','castTo','text','filter','Contact','isEmpty','ListId','where','c.ListId\x20IN\x20?','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)','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.lastName\x20LIKE\x20?','group','c.id','Sequelize','QueryTypes','SELECT','order','DESC','having','t.id\x20IN\x20?','resolve','user','role','agent','getLists','c.ListId\x20IS\x20NULL','sequelize','toString','merge','c.firstName','c.lastName','c.phone','c.mobile','c.email','c.ListId','c.createdAt','c.deletedAt','c.CompanyId','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','rows','catch','describe','tags','columnName','displayName','findAll','alias','custom','values','body','get','mergeWith','join','info','CmHopper','create','ChatMessage'];(function(_0x4792eb,_0x1e1aca){var _0x25fb07=function(_0x49a331){while(--_0x49a331){_0x4792eb['push'](_0x4792eb['shift']());}};_0x25fb07(++_0x1e1aca);}(_0x71de,0x7a));var _0xe71d=function(_0x483e04,_0x4add30){_0x483e04=_0x483e04-0x0;var _0x48c273=_0x71de[_0x483e04];return _0x48c273;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe71d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe71d('0x1'));var rp=require('request-promise');var moment=require(_0xe71d('0x2'));var BPromise=require(_0xe71d('0x3'));var Mustache=require(_0xe71d('0x4'));var util=require(_0xe71d('0x5'));var path=require(_0xe71d('0x6'));var sox=require('sox');var csv=require(_0xe71d('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe71d('0x8'));var _=require(_0xe71d('0x9'));var squel=require(_0xe71d('0xa'));var crypto=require(_0xe71d('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xe71d('0xc'));var toCsv=require(_0xe71d('0x7'));var querystring=require(_0xe71d('0xd'));var Papa=require(_0xe71d('0xe'));var Redis=require('ioredis');var authService=require(_0xe71d('0xf'));var qs=require(_0xe71d('0x10'));var as=require(_0xe71d('0x11'));var hardwareService=require(_0xe71d('0x12'));var logger=require(_0xe71d('0x13'))(_0xe71d('0x14'));var utils=require(_0xe71d('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xe71d('0x16'))['db'];config['redis']=_[_0xe71d('0x17')](config[_0xe71d('0x18')],{'host':_0xe71d('0x19'),'port':0x18eb});var socket=require(_0xe71d('0x1a'))(new Redis(config['redis']));require(_0xe71d('0x1b'))['register'](socket);function respondWithStatusCode(_0x57ac57,_0xf47ef4){_0xf47ef4=_0xf47ef4||0xcc;return function(_0x255816){if(_0x255816){return _0x57ac57['sendStatus'](_0xf47ef4);}return _0x57ac57[_0xe71d('0x1c')](_0xf47ef4)[_0xe71d('0x1d')]();};}function respondWithResult(_0x11e4da,_0xc4815a){_0xc4815a=_0xc4815a||0xc8;return function(_0x2790d8){if(_0x2790d8){return _0x11e4da['status'](_0xc4815a)['json'](_0x2790d8);}};}function respondWithFilteredResult(_0x2ce0d3,_0x4aa50c){return function(_0x1cf310){if(_0x1cf310){var _0x41ef34=typeof _0x4aa50c[_0xe71d('0x1e')]===_0xe71d('0x1f')&&typeof _0x4aa50c[_0xe71d('0x20')]==='undefined';var _0x2d77e6=_0x1cf310[_0xe71d('0x21')];var _0x496ea6=_0x41ef34?0x0:_0x4aa50c[_0xe71d('0x1e')];var _0x19e664=_0x41ef34?_0x1cf310[_0xe71d('0x21')]:_0x4aa50c[_0xe71d('0x1e')]+_0x4aa50c[_0xe71d('0x20')];var _0x15cea0;if(_0x19e664>=_0x2d77e6){_0x19e664=_0x2d77e6;_0x15cea0=0xc8;}else{_0x15cea0=0xce;}_0x2ce0d3[_0xe71d('0x1c')](_0x15cea0);return _0x2ce0d3['set'](_0xe71d('0x22'),_0x496ea6+'-'+_0x19e664+'/'+_0x2d77e6)['json'](_0x1cf310);}return null;};}function patchUpdates(_0x32b7f0){return function(_0x3e7e3e){try{jsonpatch[_0xe71d('0x23')](_0x3e7e3e,_0x32b7f0,!![]);}catch(_0x1e1e66){return BPromise[_0xe71d('0x24')](_0x1e1e66);}return _0x3e7e3e[_0xe71d('0x25')]();};}function saveUpdates(_0x4147d1,_0x16c954){return function(_0x390157){if(_0x390157){return _0x390157[_0xe71d('0x26')](_0x4147d1)[_0xe71d('0x27')](function(_0x66dc39){return _0x66dc39;});}return null;};}function removeEntity(_0x5702bb,_0x3e5abc){return function(_0x17a281){if(_0x17a281){return _0x17a281[_0xe71d('0x28')]()['then'](function(){_0x5702bb[_0xe71d('0x1c')](0xcc)[_0xe71d('0x1d')]();});}};}function handleEntityNotFound(_0x1da252,_0x79cba4){return function(_0x5bcddc){if(!_0x5bcddc){_0x1da252['sendStatus'](0x194);}return _0x5bcddc;};}function handleError(_0x3c1ad4,_0x40066e){_0x40066e=_0x40066e||0x1f4;return function(_0x8f3342){logger[_0xe71d('0x29')](_0x8f3342['stack']);if(_0x8f3342[_0xe71d('0x2a')]){delete _0x8f3342['name'];}_0x3c1ad4[_0xe71d('0x1c')](_0x40066e)['send'](_0x8f3342);};}exports[_0xe71d('0x2b')]=function(_0x4492c0,_0x551a2f){var _0x1ad794={},_0x3825dd={},_0x3561c6={'count':0x0,'rows':[]};return db[_0xe71d('0x2c')]['describe']()[_0xe71d('0x27')](function(_0x5c8a8d){var _0xa37986=[];for(var _0x195952=0x0;_0x195952<Object[_0xe71d('0x2d')](_0x5c8a8d)['length'];_0x195952++){var _0x39c2eb=Object[_0xe71d('0x2d')](_0x5c8a8d)[_0x195952];if(_[_0xe71d('0x2e')](_0x39c2eb,'cf_')){_0xa37986[_0xe71d('0x2f')](db[_0xe71d('0x30')][_0xe71d('0x31')]({'where':{'id':_[_0xe71d('0x32')](_0x39c2eb,'cf_')},'raw':!![]}));}}return BPromise['all'](_0xa37986)[_0xe71d('0x27')](function(_0x43daeb){for(var _0x742608=0x0;_0x742608<_0x43daeb[_0xe71d('0x33')];_0x742608++){if(_0x43daeb[_0x742608]){var _0x208fe9=_0xe71d('0x34')+_0x43daeb[_0x742608]['id'];var _0x31581c=_0x5c8a8d[_0x208fe9];_0x31581c['fieldType']=_0x43daeb[_0x742608][_0xe71d('0x35')];}}return _0x5c8a8d;});})[_0xe71d('0x27')](function(_0x12e2ae){_0x3825dd['model']=_[_0xe71d('0x2d')](_0x12e2ae);_0x3825dd['query']=_[_0xe71d('0x2d')](_0x4492c0[_0xe71d('0x36')]);_0x3825dd[_0xe71d('0x37')]=_['intersection'](_0x3825dd[_0xe71d('0x38')],_0x3825dd[_0xe71d('0x36')]);_0x1ad794[_0xe71d('0x39')]=_[_0xe71d('0x3a')](_0x3825dd[_0xe71d('0x38')],qs[_0xe71d('0x3b')](_0x4492c0[_0xe71d('0x36')][_0xe71d('0x3b')]));_0x1ad794[_0xe71d('0x39')]=_0x1ad794[_0xe71d('0x39')]['length']?_0x1ad794['attributes']:_0x3825dd[_0xe71d('0x38')];if(!_0x4492c0['query'][_0xe71d('0x3c')](_0xe71d('0x3d'))){_0x1ad794[_0xe71d('0x20')]=qs[_0xe71d('0x20')](_0x4492c0[_0xe71d('0x36')][_0xe71d('0x20')]);_0x1ad794[_0xe71d('0x1e')]=qs[_0xe71d('0x1e')](_0x4492c0['query'][_0xe71d('0x1e')]);}_0x1ad794['order']=qs[_0xe71d('0x3e')](_0x4492c0[_0xe71d('0x36')][_0xe71d('0x3e')]);_0x1ad794['where']=qs[_0xe71d('0x37')](_['pick'](_0x4492c0[_0xe71d('0x36')],_0x3825dd[_0xe71d('0x37')]),_0x12e2ae);var _0x79df4b=[];var _0x49d0cd=squel['select']()['field']('id')[_0xe71d('0x3f')]('name')[_0xe71d('0x3f')]('color')[_0xe71d('0x40')](_0xe71d('0x41'));var _0x538a2c=squel[_0xe71d('0x42')]()[_0xe71d('0x40')]('cm_contacts','c')[_0xe71d('0x43')]('cm_user_has_contacts','uc',_0xe71d('0x44'))[_0xe71d('0x43')]('cm_contact_has_tags','ct','ct.CmContactId\x20=\x20c.id')[_0xe71d('0x43')](_0xe71d('0x41'),'t',_0xe71d('0x45'))['where']('c.deletedAt\x20IS\x20NULL');var _0x57b139=squel['expr']();var _0x10b5db=[];var _0x41257e=squel[_0xe71d('0x46')]();var _0x3dccdf;if(_0x4492c0['query'][_0xe71d('0x47')]){_0x3dccdf=as[_0xe71d('0x48')](_0x4492c0[_0xe71d('0x36')][_0xe71d('0x47')]);var _0x4a25d0=_0x3dccdf[_0xe71d('0x49')];for(var _0x21c8f6=0x0;_0x21c8f6<_0x3dccdf[_0xe71d('0x4a')]['length'];_0x21c8f6++){var _0x191c63=_0x3dccdf[_0xe71d('0x4a')][_0x21c8f6];var _0x5d4fa2='c';var _0x54234e=_(_0x12e2ae)[_0xe71d('0x2d')]()[_0xe71d('0x4b')](function(_0xb6137e){return _0xb6137e===_0x191c63['field'];});if(_0x54234e)_0x54234e=_0x12e2ae[_0x191c63[_0xe71d('0x3f')]];if(!_0x54234e){if(_0x191c63[_0xe71d('0x3f')]===_0xe71d('0x4c')){var _0x4ed1b5=_0x191c63[_0xe71d('0x4d')][_0xe71d('0x4e')](',')[_0xe71d('0x4f')](function(_0x379af7){return Number(_0x379af7);});_0x4ed1b5[_0xe71d('0x50')](function(_0x2e4819){_0x41257e['or'](_0xe71d('0x51'),'%,'+_0x2e4819+',%');});_0x10b5db=_['union'](_0x10b5db,_0x4ed1b5);}else if(_0x191c63[_0xe71d('0x3f')]===_0xe71d('0x52')){_0x57b139[_0xe71d('0x53')](_0xe71d('0x54'),_0x191c63[_0xe71d('0x4d')]);}}else{if(_0x191c63[_0xe71d('0x3f')]===_0xe71d('0x55')||_0x54234e['fieldType']==='datetime')_0x191c63[_0xe71d('0x56')]='DATE';var _0x428573=as['buildExpression'](_0x5d4fa2,_0x54234e['type'],_0x191c63);_0x57b139[_0x4a25d0](_0x428573[_0xe71d('0x57')],_0x428573['value']['start'],_0x428573['value']['end']);}}}else{var _0x33f2c0=_(Object[_0xe71d('0x2d')](_0x4492c0[_0xe71d('0x36')]))[_0xe71d('0x4f')](function(_0x159772){return _0x12e2ae['hasOwnProperty'](_0x159772)?_0x159772:undefined;})[_0xe71d('0x58')](function(_0x37dc73){return!_['isNil'](_0x37dc73);})['value']();if(_0x4492c0[_0xe71d('0x36')][_0xe71d('0x59')])_0x33f2c0[_0xe71d('0x2f')](_0xe71d('0x59'));if(!_[_0xe71d('0x5a')](_0x33f2c0)){_0x33f2c0[_0xe71d('0x50')](function(_0xa53cff){if(_0xa53cff===_0xe71d('0x5b')){_0x538a2c[_0xe71d('0x5c')](_0xe71d('0x5d'),[][_0xe71d('0x5e')](_0x4492c0[_0xe71d('0x36')][_0xa53cff]));}else if(_0xa53cff===_0xe71d('0x59')){var _0x165487='%'+_0x4492c0[_0xe71d('0x36')][_0xa53cff]+'%';_0x538a2c[_0xe71d('0x5c')](_0xe71d('0x5f'),_0x165487);}else{_0x538a2c['where']('c.'+_0xa53cff+_0xe71d('0x60'),_0x4492c0[_0xe71d('0x36')][_0xa53cff]);}});}if(_0x4492c0['query'][_0xe71d('0x61')]){_0x10b5db=_[_0xe71d('0x62')](_0x4492c0[_0xe71d('0x36')][_0xe71d('0x61')])?_0x4492c0[_0xe71d('0x36')][_0xe71d('0x61')]:new Array(_0x4492c0[_0xe71d('0x36')]['tag']);_0x10b5db[_0xe71d('0x50')](function(_0x59e53d){_0x41257e['or'](_0xe71d('0x51'),'%,'+_0x59e53d+',%');});}if(_0x4492c0[_0xe71d('0x36')][_0xe71d('0x58')]){var _0x457fee=_0x4492c0['query'][_0xe71d('0x58')]['replace']('\x5c','\x5c\x5c')[_0xe71d('0x63')](/'/g,'\x27\x27');if(_0x457fee['split']('\x20')['length']>0x1){_0x57b139['or'](_0xe71d('0x64'),qs[_0xe71d('0x65')](_0x457fee),null);}else{if(qs[_0xe71d('0x66')](_0x457fee)){_0x57b139['or'](_0xe71d('0x67'),_0x457fee+'%');_0x57b139['or'](_0xe71d('0x68'),_0x457fee+'%');_0x57b139['or'](_0xe71d('0x69'),_0x457fee+'%');_0x57b139['or'](_0xe71d('0x6a'),_0x457fee+'%');}else if(qs[_0xe71d('0x6b')](_0x457fee)){_0x57b139['or'](_0xe71d('0x6c'),_0x457fee+'%');}else{_0x57b139['or']('c.firstName\x20LIKE\x20?','%'+_0x457fee+'%');_0x57b139['or'](_0xe71d('0x6d'),'%'+_0x457fee+'%');_0x57b139['or'](_0xe71d('0x6c'),'%'+_0x457fee+'%');}}}}_0x538a2c[_0xe71d('0x5c')](_0x57b139);_0x538a2c[_0xe71d('0x6e')](_0xe71d('0x6f'));var _0x5d4835={'type':db[_0xe71d('0x70')][_0xe71d('0x71')][_0xe71d('0x72')],'raw':!![]};var _0x3af43a=_0x538a2c['clone']()['field']('c.id');if(_0x1ad794[_0xe71d('0x73')]){_0x1ad794['order'][_0xe71d('0x50')](function(_0x493b12){_0x538a2c[_0xe71d('0x73')]('c.'+_0x493b12[0x0],_0x493b12[0x1]===_0xe71d('0x74')?![]:!![]);});}if(!_[_0xe71d('0x5a')](_0x10b5db)){_0x538a2c[_0xe71d('0x75')](_0x41257e);_0x3af43a[_0xe71d('0x5c')](_0xe71d('0x76'),_0x10b5db);}BPromise[_0xe71d('0x77')]()[_0xe71d('0x27')](function(){if(!_0x3dccdf)return;if(_0x4492c0[_0xe71d('0x78')][_0xe71d('0x79')]!==_0xe71d('0x7a'))return;if(!_['some'](_0x3dccdf[_0xe71d('0x4a')],[_0xe71d('0x3f'),_0xe71d('0x52')])){return _0x4492c0[_0xe71d('0x78')][_0xe71d('0x7b')]({'attributes':['id'],'raw':!![]})[_0xe71d('0x27')](function(_0x424f5b){if(_['isEmpty'](_0x424f5b)){_0x3af43a[_0xe71d('0x5c')](_0xe71d('0x7c'));_0x538a2c[_0xe71d('0x5c')](_0xe71d('0x7c'));}else{_0x3af43a[_0xe71d('0x5c')](_0xe71d('0x5d'),_[_0xe71d('0x4f')](_0x424f5b,'id'));_0x538a2c[_0xe71d('0x5c')]('c.ListId\x20IN\x20?',_['map'](_0x424f5b,'id'));}});}})[_0xe71d('0x27')](function(){if(_0x4492c0[_0xe71d('0x78')]['role']==='agent'&&!_0x3dccdf&&!_0x4492c0[_0xe71d('0x36')]['ListId'])return[];return db[_0xe71d('0x7d')][_0xe71d('0x36')](_0x3af43a[_0xe71d('0x7e')](),_0x5d4835);})[_0xe71d('0x27')](function(_0x32071a){_0x3561c6['count']=_0x32071a[_0xe71d('0x33')];if(_0x3561c6['count']===0x0)return[];return db['sequelize']['query'](_0x49d0cd[_0xe71d('0x7e')](),_0x5d4835)[_0xe71d('0x27')](function(_0x5d9989){_0x79df4b=_['keyBy'](_0x5d9989,'id');_0x5d4835=_[_0xe71d('0x7f')](_0x5d4835,{'model':db[_0xe71d('0x2c')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4492c0[_0xe71d('0x36')][_0xe71d('0x3b')]){_0x1ad794[_0xe71d('0x39')][_0xe71d('0x50')](function(_0x4c37e4){_0x538a2c[_0xe71d('0x3f')]('c.'+_0x4c37e4);});}else{_0x538a2c[_0xe71d('0x3f')](_0xe71d('0x6f'));_0x538a2c[_0xe71d('0x3f')](_0xe71d('0x80'));_0x538a2c[_0xe71d('0x3f')](_0xe71d('0x81'));_0x538a2c[_0xe71d('0x3f')](_0xe71d('0x82'));_0x538a2c[_0xe71d('0x3f')](_0xe71d('0x83'));_0x538a2c['field']('c.fax');_0x538a2c[_0xe71d('0x3f')](_0xe71d('0x84'));_0x538a2c[_0xe71d('0x3f')](_0xe71d('0x85'));_0x538a2c[_0xe71d('0x3f')](_0xe71d('0x86'));_0x538a2c[_0xe71d('0x3f')](_0xe71d('0x87'));_0x538a2c[_0xe71d('0x3f')](_0xe71d('0x88'));_0x538a2c['field'](_0xe71d('0x89'),'TagIds');}if(_0x1ad794['limit'])_0x538a2c[_0xe71d('0x20')](_0x1ad794[_0xe71d('0x20')]);if(_0x1ad794[_0xe71d('0x1e')])_0x538a2c['offset'](_0x1ad794[_0xe71d('0x1e')]);return db['sequelize'][_0xe71d('0x36')](_0x538a2c['toString'](),_0x5d4835);});})[_0xe71d('0x27')](function(_0x294e55){_0x294e55[_0xe71d('0x50')](function(_0x5173b8){if(_0x5173b8[_0xe71d('0x8a')]){_0x5173b8['Tags']=[];_0x5173b8[_0xe71d('0x8a')][_0xe71d('0x4e')](',')['forEach'](function(_0x5bed2c){_0x5173b8['Tags'][_0xe71d('0x2f')](_0x79df4b[_0x5bed2c]);});}delete _0x5173b8[_0xe71d('0x8a')];});_0x3561c6[_0xe71d('0x8b')]=_0x294e55;return _0x3561c6;})[_0xe71d('0x27')](respondWithFilteredResult(_0x551a2f,_0x1ad794));})[_0xe71d('0x8c')](handleError(_0x551a2f,null));};exports['destroy']=function(_0x541923,_0x3e038e){return db[_0xe71d('0x2c')]['find']({'where':{'id':_0x541923['params']['id']}})[_0xe71d('0x27')](handleEntityNotFound(_0x3e038e,null))[_0xe71d('0x27')](removeEntity(_0x3e038e,null))[_0xe71d('0x8c')](handleError(_0x3e038e,null));};exports[_0xe71d('0x8d')]=function(_0x35463b,_0x27c8cf){return db[_0xe71d('0x2c')]['describe']()[_0xe71d('0x27')](function(_0x57beb9){delete _0x57beb9[_0xe71d('0x8e')];for(var _0x2f0ca8=0x0;_0x2f0ca8<Object[_0xe71d('0x2d')](_0x57beb9)[_0xe71d('0x33')];_0x2f0ca8++){var _0x5583ed=Object[_0xe71d('0x2d')](_0x57beb9)[_0x2f0ca8];if(!_[_0xe71d('0x2e')](_0x5583ed,_0xe71d('0x34'))){_0x57beb9[_0x5583ed][_0xe71d('0x8f')]=_0x5583ed;_0x57beb9[_0x5583ed][_0xe71d('0x90')]=_0x5583ed;}}return _0x57beb9;})[_0xe71d('0x27')](function(_0x381c83){var _0x1b0767={'where':{'$or':[{'ListId':_0x35463b[_0xe71d('0x36')]['id']},{'ListId':null}]},'raw':!![]};return db[_0xe71d('0x30')][_0xe71d('0x91')](_0x1b0767)[_0xe71d('0x27')](function(_0x55b9ed){for(var _0x555cad=0x0;_0x555cad<_0x55b9ed[_0xe71d('0x33')];_0x555cad++){var _0x4fe0e2=_0xe71d('0x34')+_0x55b9ed[_0x555cad]['id'];_0x381c83[_0x4fe0e2][_0xe71d('0x8f')]=_0x4fe0e2;_0x381c83[_0x4fe0e2][_0xe71d('0x90')]=_0x55b9ed[_0x555cad][_0xe71d('0x92')];_0x381c83[_0x4fe0e2][_0xe71d('0x93')]={'type':_0x55b9ed[_0x555cad][_0xe71d('0x35')],'values':_0x55b9ed[_0x555cad][_0xe71d('0x94')]};}Object[_0xe71d('0x2d')](_0x381c83)[_0xe71d('0x50')](function(_0xe42bcc){if(!_0x381c83[_0xe42bcc]['hasOwnProperty']('columnName')){delete _0x381c83[_0xe42bcc];}});return _0x381c83;});})[_0xe71d('0x27')](respondWithResult(_0x27c8cf,null))[_0xe71d('0x8c')](handleError(_0x27c8cf,null));};exports[_0xe71d('0x7f')]=function(_0x244f64,_0xc3ca71){var _0x182bc2;var _0x4c590f;var _0x4eedd4;if(_0x244f64['body']['id']){delete _0x244f64[_0xe71d('0x95')]['id'];}return db[_0xe71d('0x2c')][_0xe71d('0x91')]({'where':{'id':[_0x244f64[_0xe71d('0x95')]['to'],_0x244f64[_0xe71d('0x95')][_0xe71d('0x40')]]}})[_0xe71d('0x27')](function(_0x24aa30){if(_0x24aa30){if(_0x24aa30['length']!==0x2){return null;}_0x24aa30[0x0]=_0x24aa30[0x0][_0xe71d('0x96')]({'plain':!![]});_0x24aa30[0x1]=_0x24aa30[0x1][_0xe71d('0x96')]({'plain':!![]});delete _0x24aa30[0x0]['id'];delete _0x24aa30[0x1]['id'];return _[_0xe71d('0x97')](_0x24aa30[0x0],_0x24aa30[0x1],function(_0xd6a1c9,_0x1116c3){if(Array[_0xe71d('0x62')](_0x1116c3)&&!_0x1116c3['length']){return _0xd6a1c9;}else if(!_0x1116c3){return _0xd6a1c9;}});}})['then'](handleEntityNotFound(_0xc3ca71,null))[_0xe71d('0x27')](function(_0x3c1be9){if(_0x3c1be9){if(_0x3c1be9[_0xe71d('0x8e')]&&_[_0xe71d('0x62')](_0x3c1be9[_0xe71d('0x8e')])){_0x3c1be9[_0xe71d('0x8e')]=_0x3c1be9[_0xe71d('0x8e')][_0xe71d('0x98')]();}logger[_0xe71d('0x99')]('[CmContact][merge]\x20to\x20%s\x20from\x20%s',_0x244f64['body']['to'],_0x244f64[_0xe71d('0x95')]['from']);return db[_0xe71d('0x9a')]['destroy']({'where':{'ContactId':[_0x244f64[_0xe71d('0x95')]['to'],_0x244f64[_0xe71d('0x95')][_0xe71d('0x40')]]}})[_0xe71d('0x27')](function(_0x18f003){logger['info']('[CmContact][merge][destroy][CmHopper],\x20%s',_0x18f003);return db['CmHopperBlack'][_0xe71d('0x28')]({'where':{'ContactId':[_0x244f64[_0xe71d('0x95')]['to'],_0x244f64[_0xe71d('0x95')]['from']]}})['then'](function(_0xa4a036){logger[_0xe71d('0x99')]('[CmContact][merge][destroy][CmHopperBlack],\x20%s',_0xa4a036);return db['CmContact'][_0xe71d('0x9b')](_0x3c1be9);});});}})[_0xe71d('0x27')](function(_0x42136f){if(_0x42136f){_0x182bc2=_0x42136f;_0x4c590f={'ContactId':_0x182bc2['id']};_0x4eedd4={'where':{'ContactId':[_0x244f64[_0xe71d('0x95')]['to'],_0x244f64[_0xe71d('0x95')][_0xe71d('0x40')]]}};return db['ChatInteraction'][_0xe71d('0x26')](_0x4c590f,_0x4eedd4);}})[_0xe71d('0x27')](function(){if(_0x182bc2){return db[_0xe71d('0x9c')][_0xe71d('0x26')](_0x4c590f,_0x4eedd4);}})[_0xe71d('0x27')](function(){if(_0x182bc2){return db[_0xe71d('0x9d')][_0xe71d('0x26')](_0x4c590f,_0x4eedd4);}})[_0xe71d('0x27')](function(){if(_0x182bc2){return db[_0xe71d('0x9e')]['update'](_0x4c590f,_0x4eedd4);}})[_0xe71d('0x27')](function(){if(_0x182bc2){return db[_0xe71d('0x9f')][_0xe71d('0x26')](_0x4c590f,_0x4eedd4);}})[_0xe71d('0x27')](function(){if(_0x182bc2){return db[_0xe71d('0x9e')]['update'](_0x4c590f,_0x4eedd4);}})[_0xe71d('0x27')](function(){if(_0x182bc2){return db[_0xe71d('0x9f')][_0xe71d('0x26')](_0x4c590f,_0x4eedd4);}})[_0xe71d('0x27')](function(){if(_0x182bc2){return db[_0xe71d('0xa0')][_0xe71d('0x26')](_0x4c590f,_0x4eedd4);}})[_0xe71d('0x27')](function(){if(_0x182bc2){return db[_0xe71d('0xa1')]['update'](_0x4c590f,_0x4eedd4);}})['then'](function(){if(_0x182bc2){return db[_0xe71d('0xa2')]['update'](_0x4c590f,_0x4eedd4);}})[_0xe71d('0x27')](function(){if(_0x182bc2){return db['FaxMessage'][_0xe71d('0x26')](_0x4c590f,_0x4eedd4);}})[_0xe71d('0x27')](function(){if(_0x182bc2){return db[_0xe71d('0xa3')]['update'](_0x4c590f,_0x4eedd4);}})['then'](function(){if(_0x182bc2){return db[_0xe71d('0xa4')][_0xe71d('0x26')](_0x4c590f,_0x4eedd4);}})[_0xe71d('0x27')](function(){if(_0x182bc2){return db[_0xe71d('0xa5')]['update'](_0x4c590f,_0x4eedd4);}})[_0xe71d('0x27')](function(){if(_0x182bc2){return db['CmHopperHistory'][_0xe71d('0x26')](_0x4c590f,_0x4eedd4);}})[_0xe71d('0x27')](function(){if(_0x182bc2){return db['ReportAgentPreview'][_0xe71d('0x26')](_0x4c590f,_0x4eedd4);}})[_0xe71d('0x27')](function(){if(_0x182bc2){return db[_0xe71d('0xa6')][_0xe71d('0x26')](_0x4c590f,_0x4eedd4);}})[_0xe71d('0x27')](function(){if(_0x182bc2){return db[_0xe71d('0xa7')][_0xe71d('0x26')](_0x4c590f,_0x4eedd4);}})[_0xe71d('0x27')](function(){if(_0x182bc2){return db[_0xe71d('0xa8')][_0xe71d('0x26')](_0x4c590f,_0x4eedd4);}})[_0xe71d('0x27')](function(){if(_0x182bc2){return db['MailQueueReport'][_0xe71d('0x26')](_0x4c590f,_0x4eedd4);}})[_0xe71d('0x27')](function(){if(_0x182bc2){return db['OpenchannelQueueReport'][_0xe71d('0x26')](_0x4c590f,_0x4eedd4);}})[_0xe71d('0x27')](function(){if(_0x182bc2){return db['SmsQueueReport']['update'](_0x4c590f,_0x4eedd4);}})['then'](function(){if(_0x182bc2){return db[_0xe71d('0xa9')][_0xe71d('0x26')](_0x4c590f,_0x4eedd4);}})[_0xe71d('0x27')](function(){if(_0x182bc2){return db[_0xe71d('0xaa')]['update'](_0x4c590f,_0x4eedd4);}})[_0xe71d('0x27')](function(){if(_0x182bc2){return db[_0xe71d('0xab')]['update'](_0x4c590f,_0x4eedd4);}})[_0xe71d('0x27')](function(){if(_0x182bc2){return db[_0xe71d('0xac')]['update'](_0x4c590f,_0x4eedd4);}})['then'](function(){if(_0x182bc2){return db['CmContact']['destroy']({'where':{'id':[_0x244f64[_0xe71d('0x95')]['to'],_0x244f64[_0xe71d('0x95')]['from']]}});}})[_0xe71d('0x27')](function(){if(_0x182bc2){return _0x182bc2;}})[_0xe71d('0x27')](respondWithResult(_0xc3ca71,null))[_0xe71d('0x8c')](handleError(_0xc3ca71,null));};exports[_0xe71d('0x9b')]=function(_0xda915f,_0x40cb09){return db[_0xe71d('0x2c')][_0xe71d('0x8d')]()[_0xe71d('0x27')](function(_0x2542f9){if(_0xda915f['body'][_0xe71d('0x8e')]&&_['isArray'](_0xda915f['body']['tags'])){if(_0xda915f[_0xe71d('0x95')][_0xe71d('0x8e')][_0xe71d('0x33')]){_0xda915f[_0xe71d('0x95')][_0xe71d('0x8e')]=_0xda915f[_0xe71d('0x95')][_0xe71d('0x8e')][_0xe71d('0x98')](';')+';';}else{_0xda915f['body'][_0xe71d('0x8e')]=null;}}else{_0xda915f[_0xe71d('0x95')][_0xe71d('0x8e')]=null;}return db[_0xe71d('0x2c')][_0xe71d('0x9b')](_0xda915f[_0xe71d('0x95')],{'fields':_['keys'](_0x2542f9),'raw':!![]});})[_0xe71d('0x27')](respondWithResult(_0x40cb09,0xc9))[_0xe71d('0x8c')](handleError(_0x40cb09,null));};exports['bulkCreate']=function(_0x2c606b,_0x597688){var _0x5688d1=[];var _0x2a6280=0x0;var _0x3ddf03=0x0;var _0x57603f=0x0;return db[_0xe71d('0x2c')][_0xe71d('0x8d')]()[_0xe71d('0x27')](function(_0x7f8cec){return BPromise['each'](_0x2c606b[_0xe71d('0x95')],function(_0xd88ef1){var _0x438335={'where':{'$or':[]},'defaults':_0xd88ef1,'fields':_[_0xe71d('0x2d')](_0x7f8cec),'raw':!![]};if(_0xd88ef1['duplicates']){for(var _0x2a1c1d=0x0;_0x2a1c1d<_0xd88ef1['duplicates']['length'];_0x2a1c1d++){var _0x1c6db1={};_0x1c6db1[_0xd88ef1[_0xe71d('0xad')][_0x2a1c1d]]=_0xd88ef1[_0xd88ef1['duplicates'][_0x2a1c1d]];_0x438335['where'][_0xe71d('0xae')][_0xe71d('0x2f')](_0x1c6db1);}_0x438335[_0xe71d('0x5c')][_0xe71d('0x5b')]=_0xd88ef1[_0xe71d('0x5b')];}return db[_0xe71d('0x2c')]['findOrCreate'](_0x438335)[_0xe71d('0xaf')](function(_0x21b4fe,_0x2b741a){if(_0x2b741a){_0x2a6280++;}else{_0x57603f++;}})[_0xe71d('0x8c')](function(_0x30a6f0){console[_0xe71d('0x29')](_0x30a6f0);_0x3ddf03++;});});})[_0xe71d('0x27')](function(_0x46f101){if(_0x46f101){return{'success':_0x2a6280,'failure':_0x3ddf03,'duplicates':_0x57603f};}})['then'](respondWithResult(_0x597688,0xc9))[_0xe71d('0x8c')](handleError(_0x597688,null));};exports[_0xe71d('0xb0')]=function(_0x537dd5,_0x31c8a5,_0x1a00dc){var _0x1cdc49;return db[_0xe71d('0x2c')][_0xe71d('0x8d')]()[_0xe71d('0x27')](function(_0x43f051){return db[_0xe71d('0x2c')][_0xe71d('0x4b')]({'where':{'id':_0x537dd5['params']['id']},'include':[{'model':db['Tag'],'as':'Tags','attributes':['id','name','color'],'required':_0x537dd5['query'][_0xe71d('0x61')]?!![]:![]}],'attributes':_[_0xe71d('0x2d')](_0x43f051)});})[_0xe71d('0x27')](function(_0x5ee680){_0x1cdc49=_0x5ee680[_0xe71d('0x96')]({'plain':!![]});var _0x3e7d30={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x5ee680&&_0x5ee680[_0xe71d('0x5b')]){if(_0x5ee680['ListId']){_0x3e7d30['where'][_0xe71d('0xb1')]['push']({'ListId':{'$ne':_0x5ee680[_0xe71d('0x5b')]}});}}return db['CmCustomField'][_0xe71d('0x91')](_0x3e7d30);})[_0xe71d('0x27')](function(_0x55ab52){return _['omit'](_0x1cdc49,_['map'](_0x55ab52,function(_0x38ac52){return util[_0xe71d('0xb2')]('cf_%d',_0x38ac52['id']);}));})[_0xe71d('0x27')](handleEntityNotFound(_0x31c8a5,null))[_0xe71d('0x27')](respondWithResult(_0x31c8a5,null))[_0xe71d('0x8c')](handleError(_0x31c8a5,null));};exports[_0xe71d('0x26')]=function(_0x576c68,_0x44fdf5){var _0x1d7932;if(_0x576c68[_0xe71d('0x95')]['id']){delete _0x576c68[_0xe71d('0x95')]['id'];}return db['CmContact'][_0xe71d('0x4b')]({'where':{'id':_0x576c68[_0xe71d('0xb3')]['id']}})[_0xe71d('0x27')](handleEntityNotFound(_0x44fdf5,null))[_0xe71d('0x27')](saveUpdates(_0x576c68[_0xe71d('0x95')],null))[_0xe71d('0x27')](function(_0x43c1b1){_0x1d7932=_0x43c1b1;var _0x4d011a={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x43c1b1&&_0x43c1b1['ListId']){if(_0x43c1b1[_0xe71d('0x5b')]){_0x4d011a[_0xe71d('0x5c')][_0xe71d('0xb1')][_0xe71d('0x2f')]({'ListId':{'$ne':_0x43c1b1[_0xe71d('0x5b')]}});}}return db[_0xe71d('0x30')][_0xe71d('0x91')](_0x4d011a);})[_0xe71d('0x27')](function(_0x3a04dc){if(_0x3a04dc){return _[_0xe71d('0xb4')](_[_0xe71d('0xb5')](_0x576c68[_0xe71d('0x95')],function(_0x39938b,_0x240629){return _[_0xe71d('0x2e')](_0x240629,'cf_');}),_[_0xe71d('0x4f')](_0x3a04dc,function(_0xac4413){return util[_0xe71d('0xb2')]('cf_%d',_0xac4413['id']);}));}})[_0xe71d('0x27')](function(_0x25babc){if(_0x25babc&&!_[_0xe71d('0x5a')](_0x25babc)){var _0x5e3312=squel[_0xe71d('0x26')]()[_0xe71d('0xb6')]('cm_contacts')[_0xe71d('0xb7')](_0x25babc)['where'](_0xe71d('0xb8'),_0x576c68[_0xe71d('0xb3')]['id'])[_0xe71d('0xb9')]();return db[_0xe71d('0x7d')][_0xe71d('0x36')](_0x5e3312[_0xe71d('0x57')],{'replacements':_0x5e3312[_0xe71d('0x94')]});}})[_0xe71d('0x27')](function(){if(_0x576c68['body'][_0xe71d('0xba')]&&_0x1d7932){return db['CmHopper']['update']({'phone':_0x576c68[_0xe71d('0x95')][_0xe71d('0xba')]},{'where':{'ContactId':_0x1d7932['id']}});}})['then'](function(){return _0x1d7932;})[_0xe71d('0x27')](respondWithResult(_0x44fdf5,null))['catch'](handleError(_0x44fdf5,null));};exports[_0xe71d('0xbb')]=function(_0x265291,_0x49978d,_0x4ed128){var _0x58be4={};var _0x5198dd={};var _0x28a55b;var _0x10eee7;return db[_0xe71d('0x2c')][_0xe71d('0x31')]({'where':{'id':_0x265291['params']['id']}})[_0xe71d('0x27')](handleEntityNotFound(_0x49978d,null))['then'](function(_0x58fec9){if(_0x58fec9){_0x28a55b=_0x58fec9;_0x5198dd['model']=_['keys'](db['Tag']['rawAttributes']);_0x5198dd[_0xe71d('0x36')]=_[_0xe71d('0x2d')](_0x265291[_0xe71d('0x36')]);_0x5198dd[_0xe71d('0x37')]=_['intersection'](_0x5198dd[_0xe71d('0x38')],_0x5198dd['query']);_0x58be4[_0xe71d('0x39')]=_[_0xe71d('0x3a')](_0x5198dd[_0xe71d('0x38')],qs['fields'](_0x265291[_0xe71d('0x36')][_0xe71d('0x3b')]));_0x58be4[_0xe71d('0x39')]=_0x58be4['attributes'][_0xe71d('0x33')]?_0x58be4['attributes']:_0x5198dd['model'];_0x58be4[_0xe71d('0x73')]=qs[_0xe71d('0x3e')](_0x265291[_0xe71d('0x36')][_0xe71d('0x3e')]);_0x58be4[_0xe71d('0x5c')]=qs[_0xe71d('0x37')](_['pick'](_0x265291[_0xe71d('0x36')],_0x5198dd[_0xe71d('0x37')]));if(_0x265291[_0xe71d('0x36')][_0xe71d('0x58')]){_0x58be4[_0xe71d('0x5c')]=_[_0xe71d('0x7f')](_0x58be4[_0xe71d('0x5c')],{'$or':_[_0xe71d('0x4f')](_0x58be4[_0xe71d('0x39')],function(_0x48cff4){var _0x529fa0={};_0x529fa0[_0x48cff4]={'$like':'%'+_0x265291[_0xe71d('0x36')][_0xe71d('0x58')]+'%'};return _0x529fa0;})});}_0x58be4=_['merge']({},_0x58be4,_0x265291[_0xe71d('0xbc')]);return _0x28a55b['getTags'](_0x58be4);}})[_0xe71d('0x27')](function(_0x35494c){if(_0x35494c){_0x10eee7=_0x35494c[_0xe71d('0x33')];if(!_0x265291[_0xe71d('0x36')][_0xe71d('0x3c')]('nolimit')){_0x58be4[_0xe71d('0x20')]=qs['limit'](_0x265291[_0xe71d('0x36')][_0xe71d('0x20')]);_0x58be4[_0xe71d('0x1e')]=qs[_0xe71d('0x1e')](_0x265291[_0xe71d('0x36')]['offset']);}return _0x28a55b[_0xe71d('0xbb')](_0x58be4);}})['then'](function(_0x58eeda){if(_0x58eeda){return _0x58eeda?{'count':_0x10eee7,'rows':_0x58eeda}:null;}})[_0xe71d('0x27')](respondWithResult(_0x49978d,null))[_0xe71d('0x8c')](handleError(_0x49978d,null));};exports[_0xe71d('0xbd')]=function(_0x4a79b8,_0x1a2d14,_0x37dd22){if(_0x4a79b8[_0xe71d('0x95')]['id']){delete _0x4a79b8[_0xe71d('0x95')]['id'];}return db[_0xe71d('0x2c')]['findOne']({'where':{'id':_0x4a79b8[_0xe71d('0xb3')]['id']}})['then'](handleEntityNotFound(_0x1a2d14,null))[_0xe71d('0x27')](function(_0x4d9fe8){if(_0x4d9fe8){return _0x4d9fe8[_0xe71d('0xbd')](_0x4a79b8[_0xe71d('0x95')][_0xe71d('0xbe')]||[]);}return null;})[_0xe71d('0x27')](respondWithResult(_0x1a2d14,null))[_0xe71d('0x8c')](handleError(_0x1a2d14,null));};exports[_0xe71d('0xbf')]=function(_0x4eae35,_0x46a609,_0x2242c3){var _0x21012e={'raw':![],'where':{}};var _0x37d0c6={};var _0x215322={'count':0x0,'rows':[]};return db[_0xe71d('0x2c')][_0xe71d('0x31')]({'where':{'id':_0x4eae35[_0xe71d('0xb3')]['id']}})['then'](handleEntityNotFound(_0x46a609,null))[_0xe71d('0x27')](function(_0xa6d590){if(_0xa6d590){_0x37d0c6[_0xe71d('0x38')]=_[_0xe71d('0x2d')](db['CmHopper'][_0xe71d('0xc0')]);_0x37d0c6[_0xe71d('0x36')]=_[_0xe71d('0x2d')](_0x4eae35[_0xe71d('0x36')]);_0x37d0c6['filters']=_['intersection'](_0x37d0c6[_0xe71d('0x38')],_0x37d0c6[_0xe71d('0x36')]);_0x21012e[_0xe71d('0x39')]=_[_0xe71d('0x3a')](_0x37d0c6['model'],qs[_0xe71d('0x3b')](_0x4eae35[_0xe71d('0x36')][_0xe71d('0x3b')]));_0x21012e[_0xe71d('0x39')]=_0x21012e['attributes']['length']?_0x21012e[_0xe71d('0x39')]:_0x37d0c6[_0xe71d('0x38')];if(!_0x4eae35[_0xe71d('0x36')]['hasOwnProperty']('nolimit')){_0x21012e[_0xe71d('0x20')]=qs[_0xe71d('0x20')](_0x4eae35[_0xe71d('0x36')]['limit']);_0x21012e[_0xe71d('0x1e')]=qs['offset'](_0x4eae35[_0xe71d('0x36')][_0xe71d('0x1e')]);}_0x21012e['order']=qs[_0xe71d('0x3e')](_0x4eae35['query'][_0xe71d('0x3e')]);_0x21012e['where']=qs[_0xe71d('0x37')](_[_0xe71d('0xc1')](_0x4eae35[_0xe71d('0x36')],_0x37d0c6[_0xe71d('0x37')]));_0x21012e['where'][_0xe71d('0xc2')]=_0xa6d590['id'];if(_0x4eae35['query'][_0xe71d('0x58')]){_0x21012e[_0xe71d('0x5c')]=_[_0xe71d('0x7f')](_0x21012e[_0xe71d('0x5c')],{'$or':_[_0xe71d('0x4f')](_0x21012e[_0xe71d('0x39')],function(_0x47a09b){var _0xffbbe0={};_0xffbbe0[_0x47a09b]={'$like':'%'+_0x4eae35[_0xe71d('0x36')][_0xe71d('0x58')]+'%'};return _0xffbbe0;})});}_0x21012e=_['merge']({},_0x21012e,_0x4eae35[_0xe71d('0xbc')]);return db['CmHopper'][_0xe71d('0x21')]({'where':_0x21012e['where']})[_0xe71d('0x27')](function(_0x4a38f4){_0x215322[_0xe71d('0x21')]=_0x4a38f4;if(_0x4eae35[_0xe71d('0x36')][_0xe71d('0xc3')]){_0x21012e[_0xe71d('0xc4')]=[{'all':!![]}];}return db[_0xe71d('0x9a')]['findAll'](_0x21012e);})[_0xe71d('0x27')](function(_0x55b206){_0x215322[_0xe71d('0x8b')]=_0x55b206;return _0x215322;});}})[_0xe71d('0x27')](respondWithFilteredResult(_0x46a609,_0x21012e))[_0xe71d('0x8c')](handleError(_0x46a609,null));};exports[_0xe71d('0xc5')]=function(_0x3b78ff,_0x28ef6a,_0x37d07e){var _0xd56917={'raw':!![],'where':{}};var _0x36c0a3={};var _0x7fcb0b={'count':0x0,'rows':[]};return db[_0xe71d('0x2c')][_0xe71d('0x31')]({'where':{'id':_0x3b78ff[_0xe71d('0xb3')]['id']}})[_0xe71d('0x27')](handleEntityNotFound(_0x28ef6a,null))[_0xe71d('0x27')](function(_0x212e6b){if(_0x212e6b){_0x36c0a3[_0xe71d('0x38')]=_[_0xe71d('0x2d')](db[_0xe71d('0xc6')]['rawAttributes']);_0x36c0a3['query']=_[_0xe71d('0x2d')](_0x3b78ff[_0xe71d('0x36')]);_0x36c0a3[_0xe71d('0x37')]=_['intersection'](_0x36c0a3['model'],_0x36c0a3[_0xe71d('0x36')]);_0xd56917[_0xe71d('0x39')]=_['intersection'](_0x36c0a3[_0xe71d('0x38')],qs[_0xe71d('0x3b')](_0x3b78ff[_0xe71d('0x36')][_0xe71d('0x3b')]));_0xd56917['attributes']=_0xd56917[_0xe71d('0x39')]['length']?_0xd56917[_0xe71d('0x39')]:_0x36c0a3['model'];if(!_0x3b78ff[_0xe71d('0x36')][_0xe71d('0x3c')](_0xe71d('0x3d'))){_0xd56917[_0xe71d('0x20')]=qs[_0xe71d('0x20')](_0x3b78ff['query']['limit']);_0xd56917['offset']=qs[_0xe71d('0x1e')](_0x3b78ff[_0xe71d('0x36')]['offset']);}_0xd56917[_0xe71d('0x73')]=qs[_0xe71d('0x3e')](_0x3b78ff['query'][_0xe71d('0x3e')]);_0xd56917['where']=qs[_0xe71d('0x37')](_[_0xe71d('0xc1')](_0x3b78ff['query'],_0x36c0a3[_0xe71d('0x37')]));_0xd56917[_0xe71d('0x5c')]['ContactId']=_0x212e6b['id'];if(_0x3b78ff[_0xe71d('0x36')]['filter']){_0xd56917[_0xe71d('0x5c')]=_[_0xe71d('0x7f')](_0xd56917[_0xe71d('0x5c')],{'$or':_['map'](_0xd56917['attributes'],function(_0x37d481){var _0x391b2d={};_0x391b2d[_0x37d481]={'$like':'%'+_0x3b78ff['query'][_0xe71d('0x58')]+'%'};return _0x391b2d;})});}_0xd56917=_[_0xe71d('0x7f')]({},_0xd56917,_0x3b78ff[_0xe71d('0xbc')]);return db[_0xe71d('0xc6')]['count']({'where':_0xd56917['where']})[_0xe71d('0x27')](function(_0x2eefa1){_0x7fcb0b['count']=_0x2eefa1;if(_0x3b78ff[_0xe71d('0x36')][_0xe71d('0xc3')]){_0xd56917[_0xe71d('0xc4')]=[{'all':!![]}];}return db[_0xe71d('0xc6')]['findAll'](_0xd56917);})[_0xe71d('0x27')](function(_0x26c788){_0x7fcb0b[_0xe71d('0x8b')]=_0x26c788;return _0x7fcb0b;});}})['then'](respondWithFilteredResult(_0x28ef6a,_0xd56917))[_0xe71d('0x8c')](handleError(_0x28ef6a,null));};exports[_0xe71d('0xc7')]=function(_0x2f9900,_0x2c3428,_0x50846b){var _0x2ccf53={'raw':!![],'where':{}};var _0x2e86d5={};var _0x421ef4={'count':0x0,'rows':[]};return db[_0xe71d('0x2c')]['findOne']({'where':{'id':_0x2f9900[_0xe71d('0xb3')]['id']}})[_0xe71d('0x27')](handleEntityNotFound(_0x2c3428,null))['then'](function(_0x2e66a6){if(_0x2e66a6){_0x2e86d5['model']=_[_0xe71d('0x2d')](db[_0xe71d('0xa5')][_0xe71d('0xc0')]);_0x2e86d5[_0xe71d('0x36')]=_[_0xe71d('0x2d')](_0x2f9900[_0xe71d('0x36')]);_0x2e86d5[_0xe71d('0x37')]=_[_0xe71d('0x3a')](_0x2e86d5['model'],_0x2e86d5[_0xe71d('0x36')]);_0x2ccf53['attributes']=_['intersection'](_0x2e86d5[_0xe71d('0x38')],qs[_0xe71d('0x3b')](_0x2f9900[_0xe71d('0x36')][_0xe71d('0x3b')]));_0x2ccf53[_0xe71d('0x39')]=_0x2ccf53['attributes'][_0xe71d('0x33')]?_0x2ccf53[_0xe71d('0x39')]:_0x2e86d5['model'];if(!_0x2f9900[_0xe71d('0x36')][_0xe71d('0x3c')](_0xe71d('0x3d'))){_0x2ccf53[_0xe71d('0x20')]=qs[_0xe71d('0x20')](_0x2f9900[_0xe71d('0x36')][_0xe71d('0x20')]);_0x2ccf53[_0xe71d('0x1e')]=qs['offset'](_0x2f9900['query']['offset']);}_0x2ccf53[_0xe71d('0x73')]=qs[_0xe71d('0x3e')](_0x2f9900[_0xe71d('0x36')][_0xe71d('0x3e')]);_0x2ccf53['where']=qs[_0xe71d('0x37')](_[_0xe71d('0xc1')](_0x2f9900[_0xe71d('0x36')],_0x2e86d5[_0xe71d('0x37')]));_0x2ccf53[_0xe71d('0x5c')][_0xe71d('0xc2')]=_0x2e66a6['id'];if(_0x2f9900[_0xe71d('0x36')][_0xe71d('0x58')]){_0x2ccf53[_0xe71d('0x5c')]=_['merge'](_0x2ccf53[_0xe71d('0x5c')],{'$or':_[_0xe71d('0x4f')](_0x2ccf53[_0xe71d('0x39')],function(_0x153c1d){var _0x2bfef5={};_0x2bfef5[_0x153c1d]={'$like':'%'+_0x2f9900[_0xe71d('0x36')][_0xe71d('0x58')]+'%'};return _0x2bfef5;})});}_0x2ccf53=_[_0xe71d('0x7f')]({},_0x2ccf53,_0x2f9900[_0xe71d('0xbc')]);return db['CmHopperFinal'][_0xe71d('0x21')]({'where':_0x2ccf53[_0xe71d('0x5c')]})['then'](function(_0x44d0a4){_0x421ef4[_0xe71d('0x21')]=_0x44d0a4;if(_0x2f9900[_0xe71d('0x36')][_0xe71d('0xc3')]){_0x2ccf53[_0xe71d('0xc4')]=[{'all':!![]}];}return db[_0xe71d('0xa5')]['findAll'](_0x2ccf53);})[_0xe71d('0x27')](function(_0x4d235b){_0x421ef4[_0xe71d('0x8b')]=_0x4d235b;return _0x421ef4;});}})[_0xe71d('0x27')](respondWithFilteredResult(_0x2c3428,_0x2ccf53))['catch'](handleError(_0x2c3428,null));};exports[_0xe71d('0xc8')]=function(_0x583709,_0xc0a87,_0xfef8dd){var _0x5723fa={'raw':!![],'where':{}};var _0x396fee={};var _0xee311e={'count':0x0,'rows':[]};return db['CmContact'][_0xe71d('0x31')]({'where':{'id':_0x583709['params']['id']}})[_0xe71d('0x27')](handleEntityNotFound(_0xc0a87,null))[_0xe71d('0x27')](function(_0x1bc590){if(_0x1bc590){_0x396fee[_0xe71d('0x38')]=_[_0xe71d('0x2d')](db[_0xe71d('0xa9')][_0xe71d('0xc0')]);_0x396fee[_0xe71d('0x36')]=_['keys'](_0x583709['query']);_0x396fee['filters']=_['intersection'](_0x396fee[_0xe71d('0x38')],_0x396fee['query']);_0x5723fa['attributes']=_[_0xe71d('0x3a')](_0x396fee[_0xe71d('0x38')],qs[_0xe71d('0x3b')](_0x583709['query'][_0xe71d('0x3b')]));_0x5723fa[_0xe71d('0x39')]=_0x5723fa['attributes'][_0xe71d('0x33')]?_0x5723fa['attributes']:_0x396fee['model'];if(!_0x583709['query']['hasOwnProperty']('nolimit')){_0x5723fa[_0xe71d('0x20')]=qs[_0xe71d('0x20')](_0x583709[_0xe71d('0x36')][_0xe71d('0x20')]);_0x5723fa[_0xe71d('0x1e')]=qs[_0xe71d('0x1e')](_0x583709['query'][_0xe71d('0x1e')]);}_0x5723fa[_0xe71d('0x73')]=qs[_0xe71d('0x3e')](_0x583709[_0xe71d('0x36')][_0xe71d('0x3e')]);_0x5723fa['where']=qs[_0xe71d('0x37')](_['pick'](_0x583709[_0xe71d('0x36')],_0x396fee[_0xe71d('0x37')]));_0x5723fa[_0xe71d('0x5c')]['ContactId']=_0x1bc590['id'];if(_0x583709[_0xe71d('0x36')]['filter']){_0x5723fa[_0xe71d('0x5c')]=_['merge'](_0x5723fa[_0xe71d('0x5c')],{'$or':_[_0xe71d('0x4f')](_0x5723fa['attributes'],function(_0x19dc5b){var _0x391e10={};_0x391e10[_0x19dc5b]={'$like':'%'+_0x583709[_0xe71d('0x36')][_0xe71d('0x58')]+'%'};return _0x391e10;})});}_0x5723fa=_['merge']({},_0x5723fa,_0x583709[_0xe71d('0xbc')]);return db[_0xe71d('0xa9')][_0xe71d('0x21')]({'where':_0x5723fa[_0xe71d('0x5c')]})[_0xe71d('0x27')](function(_0x595207){_0xee311e[_0xe71d('0x21')]=_0x595207;if(_0x583709['query'][_0xe71d('0xc3')]){_0x5723fa[_0xe71d('0xc4')]=[{'all':!![]}];}return db[_0xe71d('0xa9')][_0xe71d('0x91')](_0x5723fa);})['then'](function(_0x35da6d){_0xee311e[_0xe71d('0x8b')]=_0x35da6d;return _0xee311e;});}})[_0xe71d('0x27')](respondWithFilteredResult(_0xc0a87,_0x5723fa))[_0xe71d('0x8c')](handleError(_0xc0a87,null));};exports['uploadCsv']=function(_0x11d6c5,_0x5370ce,_0x41ec22){try{if(!_0x11d6c5[_0xe71d('0x95')][_0xe71d('0x5b')]){throw new Error(_0xe71d('0xc9'));}if(!_0x11d6c5['body'][_0xe71d('0xca')]){throw new Error(_0xe71d('0xcb'));}if(!_0x11d6c5[_0xe71d('0x95')][_0xe71d('0xcc')]){throw new Error(_0xe71d('0xcd'));}if(!_0x11d6c5['body']['socket_timestamp']){throw new Error(_0xe71d('0xce'));}var _0x3ee20b=_0x11d6c5[_0xe71d('0x95')]['binding_keys'][_0xe71d('0x4e')](',');var _0x181f1a=_0x11d6c5[_0xe71d('0x95')][_0xe71d('0xcc')][_0xe71d('0x4e')](',');if(!_0x3ee20b['length']||!_0x181f1a[_0xe71d('0x33')]||_0x3ee20b[_0xe71d('0x33')]!==_0x181f1a[_0xe71d('0x33')]){throw new Error(_0xe71d('0xcf'));}_0x11d6c5[_0xe71d('0x95')][_0xe71d('0x3b')]=_[_0xe71d('0xd0')](_0x3ee20b,_0x181f1a);if(!_0x11d6c5[_0xe71d('0x95')][_0xe71d('0x3b')][_0xe71d('0xba')]){throw new Error(_0xe71d('0xd1'));}if(!_0x11d6c5[_0xe71d('0x95')][_0xe71d('0x3b')][_0xe71d('0xd2')]){throw new Error('No\x20firstName\x20column\x20specified');}var _0x26f9d0=path[_0xe71d('0x98')](config[_0xe71d('0xd3')],'server/files/tmp',_0x11d6c5[_0xe71d('0xd4')]['filename']);fs[_0xe71d('0xd5')](_0x26f9d0,parseInt(_0xe71d('0xd6'),0x8));var _0x130e7d=require('child_process')['fork'](path[_0xe71d('0x98')](__dirname,'../../components/import/cm/csv'),[_0x26f9d0,_0x11d6c5[_0xe71d('0x95')][_0xe71d('0xca')],_0x11d6c5[_0xe71d('0x95')][_0xe71d('0xcc')],_0x11d6c5[_0xe71d('0x95')][_0xe71d('0x5b')],_0x11d6c5['body'][_0xe71d('0xd7')],_0x11d6c5[_0xe71d('0x95')][_0xe71d('0xad')],_0x11d6c5[_0xe71d('0x95')]['socket_timestamp']]);return _0x5370ce[_0xe71d('0x1c')](0xc8)[_0xe71d('0xd8')]({'message':'File\x20uploaded\x20correctly!','pid':_0x130e7d[_0xe71d('0xd9')]});}catch(_0x1b4bda){return _0x5370ce['status'](0x1f4)[_0xe71d('0xda')](_0x1b4bda);}};exports[_0xe71d('0xdb')]=function(_0x2c1c0a,_0x48d037,_0x305c1a){var _0x1cd266=fs[_0xe71d('0xdc')](_0x2c1c0a[_0xe71d('0xd4')][_0xe71d('0x6')]);Papa[_0xe71d('0xdd')](_0x1cd266,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x3bdaa7){return _0x48d037[_0xe71d('0x1c')](0xc8)['json']({'file':_0x2c1c0a[_0xe71d('0xd4')],'fields':_0x3bdaa7['meta']['fields']});}});};exports['import']=function(_0x1987a7,_0x51b102,_0x4f5023){return db[_0xe71d('0x52')][_0xe71d('0x91')]({'raw':!![],'attributes':['id'],'where':{'role':_0xe71d('0x7a')}})[_0xe71d('0x27')](function(_0x6c4836){var _0x3df69b=![];if(!_0x1987a7[_0xe71d('0x95')][_0xe71d('0x5b')]){throw new Error(_0xe71d('0xc9'));}if(!_0x1987a7[_0xe71d('0x95')][_0xe71d('0xde')][_0xe71d('0xba')]){throw new Error(_0xe71d('0xd1'));}if(!_0x1987a7[_0xe71d('0x95')][_0xe71d('0xde')][_0xe71d('0xd2')]){throw new Error(_0xe71d('0xdf'));}if(!_0x1987a7[_0xe71d('0x95')]['socket_timestamp']){throw new Error(_0xe71d('0xce'));}var _0x2fc26a=require(_0xe71d('0xe0'))[_0xe71d('0xe1')](path[_0xe71d('0x98')](__dirname,_0xe71d('0xe2')),[_0x1987a7[_0xe71d('0xb3')]['id'],JSON[_0xe71d('0xe3')](_0x1987a7[_0xe71d('0x95')]),JSON['stringify'](_0x6c4836)]);_0x2fc26a['on'](_0xe71d('0xe4'),function(_0x4355e9){_0x3df69b=!![];return _0x51b102[_0xe71d('0x1c')](0xc8)[_0xe71d('0xd8')]({'message':_0xe71d('0xe5'),'pid':_0x2fc26a[_0xe71d('0xd9')]});});_0x2fc26a['on'](_0xe71d('0xe6'),function(_0x42a811){if(_0x42a811&&!_0x3df69b){return _0x51b102[_0xe71d('0x1c')](0x1f4)[_0xe71d('0xd8')]({'message':_0xe71d('0xe7'),'pid':_0x2fc26a[_0xe71d('0xd9')]});}});})[_0xe71d('0x8c')](handleError(_0x51b102,null));};exports['getJourney']=function(_0x473836,_0x418671){var _0x53ce10=[_0xe71d('0xe8'),_0xe71d('0xe9'),_0xe71d('0xea'),_0xe71d('0xeb'),_0xe71d('0xec'),'whatsapp',_0xe71d('0xed')];var _0x32b4ef={'offset':0x0,'order':qs[_0xe71d('0x3e')](_0xe71d('0xee'))},_0x32d13f={'count':0x0,'rows':[]};Promise[_0xe71d('0x77')]()[_0xe71d('0x27')](function(){if(_0x473836[_0xe71d('0x36')][_0xe71d('0xef')]){if(!_[_0xe71d('0xf0')](_0x53ce10,_0x473836[_0xe71d('0x36')][_0xe71d('0xef')][_0xe71d('0xf1')]())){throw new Error('Invalid\x20channel');}_0x53ce10=[_0x473836[_0xe71d('0x36')]['channel']['toLowerCase']()];}if(_0x473836['query'][_0xe71d('0xf2')]){try{var _0x533a59=JSON[_0xe71d('0xdd')](_0x473836[_0xe71d('0x36')]['range']);if(!moment(_0x533a59['from'])['isValid']()){throw new Error(_0xe71d('0xf3'));}if(!moment(_0x533a59['to'])['isValid']()){throw new Error(_0xe71d('0xf4'));}}catch(_0x5e4e41){throw new Error(_0xe71d('0xf5'));}}if(!_0x473836[_0xe71d('0x36')][_0xe71d('0x3c')](_0xe71d('0x3d'))){_0x32b4ef[_0xe71d('0x20')]=qs['limit'](_0x473836['query'][_0xe71d('0x20')]||0xa);_0x32b4ef[_0xe71d('0x1e')]=qs[_0xe71d('0x1e')](_0x473836[_0xe71d('0x36')][_0xe71d('0x1e')]);}var _0x35bfce=_0x53ce10[_0xe71d('0x4f')](function(_0x11a6d2){if(_0x11a6d2===_0xe71d('0xed')){var _0x20782d={'attributes':['id','uniqueid',_0xe71d('0x35'),'source','destination',_0xe71d('0xf6'),_0xe71d('0xf7'),_0xe71d('0xf8'),'duration',_0xe71d('0xf9'),'createdAt',_0xe71d('0xfa'),'userSecondDisposition','userThirdDisposition',_0xe71d('0xfb')],'where':{'ContactId':_0x473836[_0xe71d('0xb3')]['id']},'include':[{'model':db[_0xe71d('0x52')],'as':_0xe71d('0x52'),'attributes':['id',_0xe71d('0x2a'),_0xe71d('0xfc'),'alias']}],'order':[[_0xe71d('0xfd'),_0xe71d('0x74')]]};if(_0x473836[_0xe71d('0x36')][_0xe71d('0xf2')]){_0x20782d[_0xe71d('0x5c')][_0xe71d('0xfd')]={'$gte':_0x533a59[_0xe71d('0x40')],'$lte':_0x533a59['to']};}return db[_0xe71d('0xa6')][_0xe71d('0xfe')](_0x20782d)[_0xe71d('0x27')](function(_0x23ed30){_0x32d13f[_0xe71d('0x21')]+=_0x23ed30[_0xe71d('0x21')];return _[_0xe71d('0x4f')](_0x23ed30[_0xe71d('0x8b')],function(_0x564d30){var _0x19f7cd=_0x564d30[_0xe71d('0x96')]({'plain':!![]});_0x19f7cd['channel']=_0x11a6d2;if(_0x19f7cd['User']){_0x19f7cd[_0xe71d('0x52')]={'id':_0x19f7cd[_0xe71d('0x52')]['id'],'name':_0x19f7cd[_0xe71d('0x52')][_0xe71d('0x2a')],'fullname':_0x19f7cd['User'][_0xe71d('0xfc')],'alias':_0x19f7cd['User'][_0xe71d('0x92')]};}return _0x19f7cd;});});}else{var _0xc7523a=_[_0xe71d('0xff')](_0x11a6d2)+(_0x11a6d2==='chat'?'Website':_0xe71d('0x100'));var _0x3a2ca9={'attributes':['id',_0xe71d('0x101'),_0xe71d('0x102'),_0xe71d('0xfd'),_0xe71d('0xf9'),_0xe71d('0x103'),'secondDisposition',_0xe71d('0x104'),_0xe71d('0xfb'),_0xc7523a+'Id'],'where':{'ContactId':_0x473836[_0xe71d('0xb3')]['id']},'include':[{'model':db[_0xc7523a],'as':_0xe71d('0x100'),'attributes':['id','name',_0xe71d('0x105')]},{'model':db[_0xe71d('0x52')],'as':'Owner','attributes':['id',_0xe71d('0x2a'),_0xe71d('0xfc')]},{'model':db[_0xe71d('0x4c')],'as':_0xe71d('0x106'),'attributes':['id',_0xe71d('0x2a'),'color'],'through':{'attributes':[]}}],'order':[['createdAt',_0xe71d('0x74')]]};if(_0x473836['query']['range']){_0x3a2ca9[_0xe71d('0x5c')][_0xe71d('0xfd')]={'$gte':_0x533a59['from'],'$lte':_0x533a59['to']};}switch(_0x11a6d2){case _0xe71d('0xe9'):_0x3a2ca9[_0xe71d('0x39')]['push'](_0xe71d('0x107'),_0xe71d('0x108'),_0xe71d('0x109'),_0xe71d('0x10a'),'osName',_0xe71d('0x10b'),'ratingType',_0xe71d('0x10c'),_0xe71d('0x10d'));break;case _0xe71d('0xe8'):_0x3a2ca9[_0xe71d('0x39')][_0xe71d('0x2f')](_0xe71d('0x10e'),_0xe71d('0x10f'));break;case _0xe71d('0xeb'):_0x3a2ca9[_0xe71d('0x39')][_0xe71d('0x2f')](_0xe71d('0x110'),_0xe71d('0x111'));break;}return db[_[_0xe71d('0xff')](_0x11a6d2)+_0xe71d('0x112')]['findAndCountAll'](_0x3a2ca9)[_0xe71d('0x27')](function(_0x4db5e1){_0x32d13f['count']+=_0x4db5e1[_0xe71d('0x21')];return _[_0xe71d('0x4f')](_0x4db5e1[_0xe71d('0x8b')],function(_0x5db1a3){var _0x2f4acd=_0x5db1a3['get']({'plain':!![]});_0x2f4acd[_0xe71d('0xef')]=_0x11a6d2;if(_0x2f4acd[_0xe71d('0x113')]){_0x2f4acd[_0xe71d('0x113')]={'id':_0x2f4acd[_0xe71d('0x113')]['id'],'name':_0x2f4acd['Owner'][_0xe71d('0x2a')],'fullname':_0x2f4acd[_0xe71d('0x113')][_0xe71d('0xfc')]};}return _0x2f4acd;});});}});return Promise[_0xe71d('0x114')](_0x35bfce);})[_0xe71d('0x27')](function(_0x43557c){return _(_0x43557c)['flatten']()[_0xe71d('0x115')](_0xe71d('0xfd'))[_0xe71d('0x116')]()['value']();})[_0xe71d('0x27')](function(_0x2965e0){_0x32d13f['rows']=_0x32b4ef[_0xe71d('0x20')]?_0x2965e0['slice'](_0x32b4ef[_0xe71d('0x1e')],_0x32b4ef[_0xe71d('0x1e')]+_0x32b4ef[_0xe71d('0x20')]):_0x2965e0;return _0x32d13f;})[_0xe71d('0x27')](respondWithFilteredResult(_0x418671,_0x32b4ef))[_0xe71d('0x8c')](handleError(_0x418671,null));};
\ No newline at end of file
index 1ef7fdc..03ef3b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59fc=['CmContact','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x2f84b8,_0x416128){var _0x4de13b=function(_0xa6d22a){while(--_0xa6d22a){_0x2f84b8['push'](_0x2f84b8['shift']());}};_0x4de13b(++_0x416128);}(_0x59fc,0xbe));var _0xc59f=function(_0x7434e7,_0x33444b){_0x7434e7=_0x7434e7-0x0;var _0xe2c826=_0x59fc[_0x7434e7];return _0xe2c826;};'use strict';var EventEmitter=require(_0xc59f('0x0'));var CmContact=require(_0xc59f('0x1'))['db'][_0xc59f('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xc59f('0x3')};function emitEvent(_0x411d8a){return function(_0x3c7e15,_0x1a5551,_0x234e37){CmContactEvents[_0xc59f('0x4')](_0x411d8a+':'+_0x3c7e15['id'],_0x3c7e15);CmContactEvents['emit'](_0x411d8a,_0x3c7e15);_0x234e37(null);};}for(var e in events){if(events[_0xc59f('0x5')](e)){var event=events[e];CmContact[_0xc59f('0x6')](e,emitEvent(event));}}module[_0xc59f('0x7')]=CmContactEvents;
\ No newline at end of file
+var _0xaff9=['../../mysqldb','CmContact','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x5e2d14,_0x3050a7){var _0x450fde=function(_0x32c475){while(--_0x32c475){_0x5e2d14['push'](_0x5e2d14['shift']());}};_0x450fde(++_0x3050a7);}(_0xaff9,0xe6));var _0x9aff=function(_0x37fce5,_0x23ec48){_0x37fce5=_0x37fce5-0x0;var _0x40222a=_0xaff9[_0x37fce5];return _0x40222a;};'use strict';var EventEmitter=require(_0x9aff('0x0'));var CmContact=require(_0x9aff('0x1'))['db'][_0x9aff('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents[_0x9aff('0x3')](0x0);var events={'afterCreate':_0x9aff('0x4'),'afterUpdate':_0x9aff('0x5'),'afterDestroy':_0x9aff('0x6')};function emitEvent(_0x5c89c2){return function(_0x3287fd,_0x35670a,_0x4851db){CmContactEvents['emit'](_0x5c89c2+':'+_0x3287fd['id'],_0x3287fd);CmContactEvents[_0x9aff('0x7')](_0x5c89c2,_0x3287fd);_0x4851db(null);};}for(var e in events){if(events[_0x9aff('0x8')](e)){var event=events[e];CmContact[_0x9aff('0x9')](e,emitEvent(event));}}module[_0x9aff('0xa')]=CmContactEvents;
\ No newline at end of file
index c66fffb..20a82cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21b3=['\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','scheduledat','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','format','then','isNil','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','priority','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','catch','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','Lists','length','always','onlyIfOpen','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Campaign','BlackLists','models','isEmpty','destroy','VoiceQueueId','CampaignId','push','all','info','[CmContact][afterDestroy][Succesfull]','inspect','api','moment','bluebird','request-promise','path','rimraf','./cmContact.attributes','exports','define','CmContact','phone','fti_cm_contacts','firstName','lastName','mobile','fax','email','utf8mb4','utf8mb4_unicode_ci','get','error','cmContact','afterCreate','CmHopper','findOne','cmContact,\x20afterCreate\x20'];(function(_0x2998db,_0x3424f1){var _0x115fea=function(_0x3b493c){while(--_0x3b493c){_0x2998db['push'](_0x2998db['shift']());}};_0x115fea(++_0x3424f1);}(_0x21b3,0x130));var _0x321b=function(_0x238ed2,_0x162db1){_0x238ed2=_0x238ed2-0x0;var _0x59f9fa=_0x21b3[_0x238ed2];return _0x59f9fa;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x321b('0x0'));var moment=require(_0x321b('0x1'));var BPromise=require(_0x321b('0x2'));var rp=require(_0x321b('0x3'));var fs=require('fs');var path=require(_0x321b('0x4'));var rimraf=require(_0x321b('0x5'));var config=require('../../config/environment');var attributes=require(_0x321b('0x6'));module[_0x321b('0x7')]=function(_0xf85401,_0x1e6dd1){return _0xf85401[_0x321b('0x8')](_0x321b('0x9'),attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':'phone','fields':[_0x321b('0xa')]},{'name':_0x321b('0xb'),'fields':[_0x321b('0xc'),_0x321b('0xd'),_0x321b('0xa'),_0x321b('0xe'),_0x321b('0xf'),_0x321b('0x10')],'type':'FULLTEXT'}],'timestamps':!![],'charset':_0x321b('0x11'),'collate':_0x321b('0x12'),'hooks':{'afterCreate':function(_0x1e1bbf,_0x3dd61f,_0x522955){var _0x200910=_0xf85401['models'];var _0x2826e5=_0x1e1bbf[_0x321b('0x13')]({'plain':!![]});function _0x4b70ab(){return function(_0x36f270){logger[_0x321b('0x14')](_0x321b('0x15'),_0x321b('0x16'),util['inspect'](_0x36f270,{'showHidden':![],'depth':null}));};}var _0x43ce98=function(_0x24184a){return new BPromise(function(_0x407611,_0x237a05){_0x200910[_0x321b('0x17')][_0x321b('0x18')]({'where':{'phone':_0x2826e5['phone'],'VoiceQueueId':_0x24184a['id']}})['then'](function(_0x472c25){if(!_['isNil'](_0x472c25)){throw new Error(_0x321b('0x19')+_0x2826e5[_0x321b('0xa')]+_0x321b('0x1a')+_0x24184a['id']);}return _0x200910[_0x321b('0x17')][_0x321b('0x1b')]({'phone':_0x2826e5[_0x321b('0xa')],'ContactId':_0x2826e5['id'],'ListId':_0x2826e5[_0x321b('0x1c')],'priority':_0x2826e5['priority']?_0x2826e5['priority']:0x2,'scheduledat':_0x2826e5[_0x321b('0x1d')]?_0x2826e5[_0x321b('0x1d')]:moment()['format'](_0x321b('0x1e')),'callback':_0x2826e5[_0x321b('0x1f')]?!![]:![],'callbackuniqueid':_0x2826e5[_0x321b('0x1f')]?_0x2826e5[_0x321b('0x1f')]:undefined,'callbackat':_0x2826e5[_0x321b('0x1f')]?moment()[_0x321b('0x20')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x24184a['id']});})['catch'](function(_0x35cbe5){_0x237a05(_0x35cbe5);});});};var _0x3fe169=function(_0x5eea7d){return new BPromise(function(_0x225ec7,_0x2afbbe){_0x200910[_0x321b('0x17')][_0x321b('0x18')]({'where':{'phone':_0x2826e5['phone'],'VoiceQueueId':_0x5eea7d['id']}})[_0x321b('0x21')](function(_0x511125){if(!_[_0x321b('0x22')](_0x511125)){throw new Error(_0x321b('0x19')+_0x2826e5[_0x321b('0xa')]+_0x321b('0x23')+_0x5eea7d['id']);}return _0x200910[_0x321b('0x24')][_0x321b('0x18')]({'where':{'calleridnum':_0x2826e5[_0x321b('0xa')],'VoiceQueueId':_0x5eea7d['id']}});})[_0x321b('0x21')](function(_0x35ffab){if(!_[_0x321b('0x22')](_0x35ffab)){throw new Error(_0x321b('0x25')+_0x2826e5[_0x321b('0xa')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0x5eea7d['id']);}return _0x200910['CmHopper'][_0x321b('0x1b')]({'phone':_0x2826e5[_0x321b('0xa')],'ContactId':_0x2826e5['id'],'ListId':_0x2826e5[_0x321b('0x1c')],'priority':_0x2826e5[_0x321b('0x26')]?_0x2826e5[_0x321b('0x26')]:0x2,'scheduledat':_0x2826e5['scheduledat']?_0x2826e5[_0x321b('0x1d')]:moment()[_0x321b('0x20')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x2826e5['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x2826e5['callbackUniqueid']?_0x2826e5['callbackUniqueid']:undefined,'callbackat':_0x2826e5['callbackUniqueid']?moment()[_0x321b('0x20')](_0x321b('0x1e')):undefined,'VoiceQueueId':_0x5eea7d['id']});})['catch'](function(_0x2c6e11){_0x2afbbe(_0x2c6e11);});});};function _0x1cc974(){return function(_0x463491){logger[_0x321b('0x14')](_0x321b('0x15'),_0x321b('0x16'),util['inspect'](_0x463491,{'showHidden':![],'depth':null}));};}var _0x7f1eae=function(_0x40bebb){return new BPromise(function(_0x413f3f,_0x5210c4){_0x200910[_0x321b('0x17')][_0x321b('0x18')]({'where':{'phone':_0x2826e5[_0x321b('0xa')],'CampaignId':_0x40bebb['id']}})[_0x321b('0x21')](function(_0x2d81e8){if(!_[_0x321b('0x22')](_0x2d81e8)){throw new Error(_0x321b('0x19')+_0x2826e5[_0x321b('0xa')]+_0x321b('0x27')+_0x40bebb['id']);}return _0x200910[_0x321b('0x17')][_0x321b('0x1b')]({'phone':_0x2826e5[_0x321b('0xa')],'ContactId':_0x2826e5['id'],'ListId':_0x2826e5['ListId'],'priority':_0x2826e5['priority']?_0x2826e5[_0x321b('0x26')]:0x2,'scheduledat':_0x2826e5[_0x321b('0x1d')]?_0x2826e5[_0x321b('0x1d')]:moment()[_0x321b('0x20')](_0x321b('0x1e')),'callback':_0x2826e5[_0x321b('0x1f')]?!![]:![],'callbackuniqueid':_0x2826e5[_0x321b('0x1f')]?_0x2826e5['callbackUniqueid']:undefined,'callbackat':_0x2826e5[_0x321b('0x1f')]?moment()[_0x321b('0x20')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x40bebb['id']});})[_0x321b('0x28')](function(_0x48d95b){_0x5210c4(_0x48d95b);});});};var _0x27966e=function(_0x3c3ff8){return new BPromise(function(_0x203f5c,_0x35453a){_0x200910['CmHopper'][_0x321b('0x18')]({'where':{'phone':_0x2826e5[_0x321b('0xa')],'CampaignId':_0x3c3ff8['id']}})[_0x321b('0x21')](function(_0x344a6c){if(!_[_0x321b('0x22')](_0x344a6c)){throw new Error(_0x321b('0x19')+_0x2826e5[_0x321b('0xa')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x3c3ff8['id']);}return _0x200910[_0x321b('0x24')][_0x321b('0x18')]({'where':{'calleridnum':_0x2826e5['phone'],'CampaignId':_0x3c3ff8['id']}});})[_0x321b('0x21')](function(_0x2a7adf){if(!_[_0x321b('0x22')](_0x2a7adf)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x2826e5[_0x321b('0xa')]+_0x321b('0x29')+_0x3c3ff8['id']);}return _0x200910['CmHopper']['create']({'phone':_0x2826e5[_0x321b('0xa')],'ContactId':_0x2826e5['id'],'ListId':_0x2826e5[_0x321b('0x1c')],'priority':_0x2826e5[_0x321b('0x26')]?_0x2826e5[_0x321b('0x26')]:0x2,'scheduledat':_0x2826e5[_0x321b('0x1d')]?_0x2826e5[_0x321b('0x1d')]:moment()[_0x321b('0x20')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x2826e5[_0x321b('0x1f')]?!![]:![],'callbackuniqueid':_0x2826e5[_0x321b('0x1f')]?_0x2826e5[_0x321b('0x1f')]:undefined,'callbackat':_0x2826e5[_0x321b('0x1f')]?moment()[_0x321b('0x20')](_0x321b('0x1e')):undefined,'CampaignId':_0x3c3ff8['id']});})[_0x321b('0x28')](function(_0x39ea5a){_0x35453a(_0x39ea5a);});});};if(_0x2826e5[_0x321b('0x1c')]){_0x200910[_0x321b('0x2a')][_0x321b('0x2b')]({'where':{'type':_0x321b('0x2c')},'attributes':['id',_0x321b('0x2d')],'include':[{'model':_0x200910[_0x321b('0x2e')],'as':_0x321b('0x2f'),'where':{'id':_0x2826e5[_0x321b('0x1c')]}}]})['then'](function(_0x1b32b8){if(_0x1b32b8){var _0x40e5f3=[];for(var _0x519f8c=0x0,_0x5381e6;_0x519f8c<_0x1b32b8[_0x321b('0x30')];_0x519f8c+=0x1){_0x5381e6=_0x1b32b8[_0x519f8c][_0x321b('0x13')]({'plain':!![]});switch(_0x5381e6[_0x321b('0x2d')]){case _0x321b('0x31'):_0x3fe169(_0x5381e6)[_0x321b('0x28')](_0x4b70ab());break;case _0x321b('0x32'):_0x43ce98(_0x5381e6)[_0x321b('0x28')](_0x4b70ab());break;default:_0x200910[_0x321b('0x17')]['create']({'phone':_0x2826e5[_0x321b('0xa')],'ContactId':_0x2826e5['id'],'ListId':_0x2826e5['ListId'],'scheduledat':_0x2826e5['scheduledat']?_0x2826e5[_0x321b('0x1d')]:moment()[_0x321b('0x20')](_0x321b('0x1e')),'priority':_0x2826e5[_0x321b('0x26')]?_0x2826e5[_0x321b('0x26')]:0x2,'callback':_0x2826e5['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x2826e5[_0x321b('0x1f')]?_0x2826e5[_0x321b('0x1f')]:undefined,'callbackat':_0x2826e5['callbackUniqueid']?moment()['format'](_0x321b('0x1e')):undefined,'VoiceQueueId':_0x5381e6['id']})[_0x321b('0x28')](_0x4b70ab());}}}})[_0x321b('0x21')](function(){return _0x200910[_0x321b('0x2a')][_0x321b('0x2b')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x200910[_0x321b('0x2e')],'as':'BlackLists','where':{'id':_0x2826e5['ListId']}}]})['then'](function(_0x73a47d){if(_0x73a47d){var _0x50b2b3=[];for(var _0x3cdd82=0x0,_0x57c2f6;_0x3cdd82<_0x73a47d[_0x321b('0x30')];_0x3cdd82+=0x1){_0x57c2f6=_0x73a47d[_0x3cdd82][_0x321b('0x13')]({'plain':!![]});_0x200910[_0x321b('0x33')][_0x321b('0x1b')]({'phone':_0x2826e5[_0x321b('0xa')],'ContactId':_0x2826e5['id'],'ListId':_0x2826e5[_0x321b('0x1c')],'VoiceQueueId':_0x57c2f6['id']})[_0x321b('0x28')](function(_0x3fc574){logger[_0x321b('0x14')](_0x321b('0x34'),'afterCreate',_0x3fc574[_0x321b('0x35')]);});}}});})['then'](function(){return _0x200910[_0x321b('0x36')][_0x321b('0x2b')]({'attributes':['id',_0x321b('0x2d')],'include':[{'model':_0x200910[_0x321b('0x2e')],'as':_0x321b('0x2f'),'where':{'id':_0x2826e5[_0x321b('0x1c')]}}]})[_0x321b('0x21')](function(_0x3f0c6d){if(_0x3f0c6d){var _0x769f36=[];for(var _0x5bed0e=0x0,_0x313a5d;_0x5bed0e<_0x3f0c6d[_0x321b('0x30')];_0x5bed0e+=0x1){_0x313a5d=_0x3f0c6d[_0x5bed0e][_0x321b('0x13')]({'plain':!![]});switch(_0x313a5d['dialCheckDuplicateType']){case _0x321b('0x31'):_0x27966e(_0x313a5d)['catch'](_0x1cc974());break;case'onlyIfOpen':_0x7f1eae(_0x313a5d)['catch'](_0x1cc974());break;default:_0x200910[_0x321b('0x17')]['create']({'phone':_0x2826e5['phone'],'ContactId':_0x2826e5['id'],'ListId':_0x2826e5['ListId'],'scheduledat':_0x2826e5[_0x321b('0x1d')]?_0x2826e5[_0x321b('0x1d')]:moment()['format'](_0x321b('0x1e')),'priority':_0x2826e5[_0x321b('0x26')]?_0x2826e5[_0x321b('0x26')]:0x2,'callback':_0x2826e5[_0x321b('0x1f')]?!![]:![],'callbackuniqueid':_0x2826e5[_0x321b('0x1f')]?_0x2826e5['callbackUniqueid']:undefined,'callbackat':_0x2826e5['callbackUniqueid']?moment()[_0x321b('0x20')](_0x321b('0x1e')):undefined,'CampaignId':_0x313a5d['id']})[_0x321b('0x28')](_0x1cc974());}}}});})['then'](function(){return _0x200910[_0x321b('0x36')][_0x321b('0x2b')]({'attributes':['id'],'include':[{'model':_0x200910[_0x321b('0x2e')],'as':_0x321b('0x37'),'where':{'id':_0x2826e5['ListId']}}]})['then'](function(_0x5272d5){if(_0x5272d5){var _0x2b9a5b=[];for(var _0xc468f1=0x0,_0x396045;_0xc468f1<_0x5272d5[_0x321b('0x30')];_0xc468f1+=0x1){_0x396045=_0x5272d5[_0xc468f1][_0x321b('0x13')]({'plain':!![]});_0x200910[_0x321b('0x33')][_0x321b('0x1b')]({'phone':_0x2826e5['phone'],'ContactId':_0x2826e5['id'],'ListId':_0x2826e5[_0x321b('0x1c')],'CampaignId':_0x396045['id']})[_0x321b('0x28')](function(_0x16a183){logger[_0x321b('0x14')](_0x321b('0x34'),_0x321b('0x16'),_0x16a183[_0x321b('0x35')]);});}}});})[_0x321b('0x21')](function(){_0x522955();})[_0x321b('0x28')](function(_0x5a50f0){logger[_0x321b('0x14')]('cmContact,\x20%s,\x20%s',_0x321b('0x16'),_0x5a50f0[_0x321b('0x35')]);_0x522955(_0x5a50f0);});}else{_0x522955(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x3eb965,_0x4c6d9c,_0x3797f3){var _0x1cad03=_0xf85401[_0x321b('0x38')];var _0x285153=_0x3eb965[_0x321b('0x13')]({'plain':!![]});return _0x1cad03[_0x321b('0x17')][_0x321b('0x2b')]({'raw':!![],'where':{'ListId':_0x285153[_0x321b('0x1c')],'ContactId':_0x285153['id']}})['then'](function(_0x2a055d){if(!_[_0x321b('0x39')](_0x2a055d)){var _0xaf13ed=[];for(var _0x727c36=0x0;_0x727c36<_0x2a055d['length'];_0x727c36+=0x1){var _0x54c27a=_0x1cad03['CmHopper'][_0x321b('0x3a')]({'where':{'ListId':_0x2a055d[_0x727c36][_0x321b('0x1c')],'ContactId':_0x2a055d[_0x727c36]['ContactId'],'VoiceQueueId':_0x2a055d[_0x727c36][_0x321b('0x3b')],'CampaignId':_0x2a055d[_0x727c36][_0x321b('0x3c')]}});_0xaf13ed[_0x321b('0x3d')](_0x54c27a);}return BPromise[_0x321b('0x3e')](_0xaf13ed);}})[_0x321b('0x21')](function(_0x27458d){logger[_0x321b('0x3f')](_0x321b('0x40'),util[_0x321b('0x41')](_0x27458d,{'showHidden':![],'depth':null}));_0x3797f3();})['catch'](function(_0x5d2b9b){logger[_0x321b('0x14')]('[CmContact][afterDestroy][Error]',util[_0x321b('0x41')](_0x5d2b9b,{'showHidden':![],'depth':null}));_0x3797f3(_0x5d2b9b);});}}});};
\ No newline at end of file
+var _0xcd9d=['utf8mb4_unicode_ci','models','get','error','cmContact','inspect','CmHopper','findOne','then','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','catch','CmHopperFinal','isNil','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','ListId','afterCreate','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\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','findAll','dialCheckDuplicateType','Lists','length','always','onlyIfOpen','outbound','CmList','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','Campaign','message','List\x20not\x20found','isEmpty','destroy','ContactId','VoiceQueueId','CampaignId','push','all','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','lodash','api','moment','bluebird','request-promise','../../config/environment','./cmContact.attributes','exports','define','CmContact','cm_contacts','phone','lastName','fax','email','utf8mb4'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0xcd9d,0xfc));var _0xdcd9=function(_0x179b46,_0x1e5380){_0x179b46=_0x179b46-0x0;var _0x560638=_0xcd9d[_0x179b46];return _0x560638;};'use strict';var _=require(_0xdcd9('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xdcd9('0x1'));var moment=require(_0xdcd9('0x2'));var BPromise=require(_0xdcd9('0x3'));var rp=require(_0xdcd9('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xdcd9('0x5'));var attributes=require(_0xdcd9('0x6'));module[_0xdcd9('0x7')]=function(_0x3d174d,_0x4eaa89){return _0x3d174d[_0xdcd9('0x8')](_0xdcd9('0x9'),attributes,{'tableName':_0xdcd9('0xa'),'paranoid':!![],'indexes':[{'name':_0xdcd9('0xb'),'fields':[_0xdcd9('0xb')]},{'name':'fti_cm_contacts','fields':['firstName',_0xdcd9('0xc'),_0xdcd9('0xb'),'mobile',_0xdcd9('0xd'),_0xdcd9('0xe')],'type':'FULLTEXT'}],'timestamps':!![],'charset':_0xdcd9('0xf'),'collate':_0xdcd9('0x10'),'hooks':{'afterCreate':function(_0x2ec9cf,_0x5386c7,_0x3a7ed4){var _0x59dcf8=_0x3d174d[_0xdcd9('0x11')];var _0x18a22e=_0x2ec9cf[_0xdcd9('0x12')]({'plain':!![]});function _0x18fca7(){return function(_0x553bcc){logger[_0xdcd9('0x13')](_0xdcd9('0x14'),'afterCreate',util[_0xdcd9('0x15')](_0x553bcc,{'showHidden':![],'depth':null}));};}var _0x2f2485=function(_0x4a624c){return new BPromise(function(_0x4274de,_0x112561){_0x59dcf8[_0xdcd9('0x16')][_0xdcd9('0x17')]({'where':{'phone':_0x18a22e[_0xdcd9('0xb')],'VoiceQueueId':_0x4a624c['id']}})[_0xdcd9('0x18')](function(_0xe44a85){if(!_['isNil'](_0xe44a85)){throw new Error(_0xdcd9('0x19')+_0x18a22e[_0xdcd9('0xb')]+_0xdcd9('0x1a')+_0x4a624c['id']);}return _0x59dcf8[_0xdcd9('0x16')][_0xdcd9('0x1b')]({'phone':_0x18a22e[_0xdcd9('0xb')],'ContactId':_0x18a22e['id'],'ListId':_0x18a22e['ListId'],'priority':_0x18a22e[_0xdcd9('0x1c')]?_0x18a22e['priority']:0x2,'scheduledat':_0x18a22e[_0xdcd9('0x1d')]?_0x18a22e[_0xdcd9('0x1d')]:moment()[_0xdcd9('0x1e')](_0xdcd9('0x1f')),'callback':_0x18a22e[_0xdcd9('0x20')]?!![]:![],'callbackuniqueid':_0x18a22e[_0xdcd9('0x20')]?_0x18a22e[_0xdcd9('0x20')]:undefined,'callbackat':_0x18a22e[_0xdcd9('0x20')]?moment()[_0xdcd9('0x1e')](_0xdcd9('0x1f')):undefined,'VoiceQueueId':_0x4a624c['id']});})[_0xdcd9('0x21')](function(_0x110373){_0x112561(_0x110373);});});};var _0x3f54f7=function(_0x8a42db){return new BPromise(function(_0x4f7582,_0x49de6c){_0x59dcf8[_0xdcd9('0x16')][_0xdcd9('0x17')]({'where':{'phone':_0x18a22e[_0xdcd9('0xb')],'VoiceQueueId':_0x8a42db['id']}})[_0xdcd9('0x18')](function(_0xbcbf08){if(!_['isNil'](_0xbcbf08)){throw new Error('cmContact,\x20afterCreate\x20'+_0x18a22e[_0xdcd9('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x8a42db['id']);}return _0x59dcf8[_0xdcd9('0x22')][_0xdcd9('0x17')]({'where':{'calleridnum':_0x18a22e[_0xdcd9('0xb')],'VoiceQueueId':_0x8a42db['id']}});})[_0xdcd9('0x18')](function(_0x4cd272){if(!_[_0xdcd9('0x23')](_0x4cd272)){throw new Error(_0xdcd9('0x24')+_0x18a22e[_0xdcd9('0xb')]+_0xdcd9('0x25')+_0x8a42db['id']);}return _0x59dcf8['CmHopper']['create']({'phone':_0x18a22e[_0xdcd9('0xb')],'ContactId':_0x18a22e['id'],'ListId':_0x18a22e[_0xdcd9('0x26')],'priority':_0x18a22e['priority']?_0x18a22e[_0xdcd9('0x1c')]:0x2,'scheduledat':_0x18a22e[_0xdcd9('0x1d')]?_0x18a22e['scheduledat']:moment()['format'](_0xdcd9('0x1f')),'callback':_0x18a22e[_0xdcd9('0x20')]?!![]:![],'callbackuniqueid':_0x18a22e[_0xdcd9('0x20')]?_0x18a22e[_0xdcd9('0x20')]:undefined,'callbackat':_0x18a22e[_0xdcd9('0x20')]?moment()['format'](_0xdcd9('0x1f')):undefined,'VoiceQueueId':_0x8a42db['id']});})[_0xdcd9('0x21')](function(_0x327534){_0x49de6c(_0x327534);});});};function _0x3f1680(){return function(_0x46ffe8){logger[_0xdcd9('0x13')](_0xdcd9('0x14'),_0xdcd9('0x27'),util['inspect'](_0x46ffe8,{'showHidden':![],'depth':null}));};}var _0x1f2811=function(_0x16cfe3){return new BPromise(function(_0x3f4a0e,_0x594fea){_0x59dcf8['CmHopper'][_0xdcd9('0x17')]({'where':{'phone':_0x18a22e[_0xdcd9('0xb')],'CampaignId':_0x16cfe3['id']}})[_0xdcd9('0x18')](function(_0x1fcfb8){if(!_['isNil'](_0x1fcfb8)){throw new Error(_0xdcd9('0x19')+_0x18a22e['phone']+_0xdcd9('0x28')+_0x16cfe3['id']);}return _0x59dcf8[_0xdcd9('0x16')][_0xdcd9('0x1b')]({'phone':_0x18a22e[_0xdcd9('0xb')],'ContactId':_0x18a22e['id'],'ListId':_0x18a22e[_0xdcd9('0x26')],'priority':_0x18a22e[_0xdcd9('0x1c')]?_0x18a22e[_0xdcd9('0x1c')]:0x2,'scheduledat':_0x18a22e[_0xdcd9('0x1d')]?_0x18a22e[_0xdcd9('0x1d')]:moment()[_0xdcd9('0x1e')](_0xdcd9('0x1f')),'callback':_0x18a22e[_0xdcd9('0x20')]?!![]:![],'callbackuniqueid':_0x18a22e[_0xdcd9('0x20')]?_0x18a22e[_0xdcd9('0x20')]:undefined,'callbackat':_0x18a22e[_0xdcd9('0x20')]?moment()['format'](_0xdcd9('0x1f')):undefined,'CampaignId':_0x16cfe3['id']});})[_0xdcd9('0x21')](function(_0x42da52){_0x594fea(_0x42da52);});});};var _0xcd4d41=function(_0x434937){return new BPromise(function(_0x198908,_0x346f38){_0x59dcf8[_0xdcd9('0x16')][_0xdcd9('0x17')]({'where':{'phone':_0x18a22e['phone'],'CampaignId':_0x434937['id']}})[_0xdcd9('0x18')](function(_0x15c89b){if(!_[_0xdcd9('0x23')](_0x15c89b)){throw new Error(_0xdcd9('0x19')+_0x18a22e[_0xdcd9('0xb')]+_0xdcd9('0x29')+_0x434937['id']);}return _0x59dcf8['CmHopperFinal']['findOne']({'where':{'calleridnum':_0x18a22e[_0xdcd9('0xb')],'CampaignId':_0x434937['id']}});})['then'](function(_0x37ecd1){if(!_[_0xdcd9('0x23')](_0x37ecd1)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x18a22e[_0xdcd9('0xb')]+_0xdcd9('0x2a')+_0x434937['id']);}return _0x59dcf8['CmHopper'][_0xdcd9('0x1b')]({'phone':_0x18a22e[_0xdcd9('0xb')],'ContactId':_0x18a22e['id'],'ListId':_0x18a22e[_0xdcd9('0x26')],'priority':_0x18a22e[_0xdcd9('0x1c')]?_0x18a22e[_0xdcd9('0x1c')]:0x2,'scheduledat':_0x18a22e[_0xdcd9('0x1d')]?_0x18a22e[_0xdcd9('0x1d')]:moment()[_0xdcd9('0x1e')](_0xdcd9('0x1f')),'callback':_0x18a22e[_0xdcd9('0x20')]?!![]:![],'callbackuniqueid':_0x18a22e[_0xdcd9('0x20')]?_0x18a22e[_0xdcd9('0x20')]:undefined,'callbackat':_0x18a22e[_0xdcd9('0x20')]?moment()[_0xdcd9('0x1e')](_0xdcd9('0x1f')):undefined,'CampaignId':_0x434937['id']});})['catch'](function(_0x3b867d){_0x346f38(_0x3b867d);});});};if(_0x18a22e[_0xdcd9('0x26')]){_0x59dcf8['VoiceQueue'][_0xdcd9('0x2b')]({'where':{'type':'outbound'},'attributes':['id',_0xdcd9('0x2c')],'include':[{'model':_0x59dcf8['CmList'],'as':_0xdcd9('0x2d'),'where':{'id':_0x18a22e['ListId']}}]})[_0xdcd9('0x18')](function(_0x53d0c9){if(_0x53d0c9){var _0x20a29d=[];for(var _0x5655f5=0x0,_0x30dd57;_0x5655f5<_0x53d0c9[_0xdcd9('0x2e')];_0x5655f5+=0x1){_0x30dd57=_0x53d0c9[_0x5655f5][_0xdcd9('0x12')]({'plain':!![]});switch(_0x30dd57[_0xdcd9('0x2c')]){case _0xdcd9('0x2f'):_0x3f54f7(_0x30dd57)[_0xdcd9('0x21')](_0x18fca7());break;case _0xdcd9('0x30'):_0x2f2485(_0x30dd57)[_0xdcd9('0x21')](_0x18fca7());break;default:_0x59dcf8['CmHopper']['create']({'phone':_0x18a22e[_0xdcd9('0xb')],'ContactId':_0x18a22e['id'],'ListId':_0x18a22e[_0xdcd9('0x26')],'scheduledat':_0x18a22e['scheduledat']?_0x18a22e[_0xdcd9('0x1d')]:moment()[_0xdcd9('0x1e')](_0xdcd9('0x1f')),'priority':_0x18a22e[_0xdcd9('0x1c')]?_0x18a22e[_0xdcd9('0x1c')]:0x2,'callback':_0x18a22e[_0xdcd9('0x20')]?!![]:![],'callbackuniqueid':_0x18a22e[_0xdcd9('0x20')]?_0x18a22e[_0xdcd9('0x20')]:undefined,'callbackat':_0x18a22e[_0xdcd9('0x20')]?moment()[_0xdcd9('0x1e')](_0xdcd9('0x1f')):undefined,'VoiceQueueId':_0x30dd57['id']})[_0xdcd9('0x21')](_0x18fca7());}}}})[_0xdcd9('0x18')](function(){return _0x59dcf8['VoiceQueue'][_0xdcd9('0x2b')]({'where':{'type':_0xdcd9('0x31')},'attributes':['id'],'include':[{'model':_0x59dcf8[_0xdcd9('0x32')],'as':_0xdcd9('0x33'),'where':{'id':_0x18a22e[_0xdcd9('0x26')]}}]})[_0xdcd9('0x18')](function(_0x3cfb1b){if(_0x3cfb1b){var _0x4d213b=[];for(var _0x159b5c=0x0,_0x56decf;_0x159b5c<_0x3cfb1b['length'];_0x159b5c+=0x1){_0x56decf=_0x3cfb1b[_0x159b5c][_0xdcd9('0x12')]({'plain':!![]});_0x59dcf8[_0xdcd9('0x34')][_0xdcd9('0x1b')]({'phone':_0x18a22e['phone'],'ContactId':_0x18a22e['id'],'ListId':_0x18a22e[_0xdcd9('0x26')],'VoiceQueueId':_0x56decf['id']})['catch'](function(_0xa47a40){logger[_0xdcd9('0x13')](_0xdcd9('0x35'),_0xdcd9('0x27'),_0xa47a40['message']);});}}});})[_0xdcd9('0x18')](function(){return _0x59dcf8['Campaign'][_0xdcd9('0x2b')]({'attributes':['id',_0xdcd9('0x2c')],'include':[{'model':_0x59dcf8['CmList'],'as':'Lists','where':{'id':_0x18a22e['ListId']}}]})[_0xdcd9('0x18')](function(_0x29f9d0){if(_0x29f9d0){var _0x135603=[];for(var _0x6df4d0=0x0,_0x54b36c;_0x6df4d0<_0x29f9d0[_0xdcd9('0x2e')];_0x6df4d0+=0x1){_0x54b36c=_0x29f9d0[_0x6df4d0][_0xdcd9('0x12')]({'plain':!![]});switch(_0x54b36c[_0xdcd9('0x2c')]){case _0xdcd9('0x2f'):_0xcd4d41(_0x54b36c)[_0xdcd9('0x21')](_0x3f1680());break;case _0xdcd9('0x30'):_0x1f2811(_0x54b36c)[_0xdcd9('0x21')](_0x3f1680());break;default:_0x59dcf8[_0xdcd9('0x16')][_0xdcd9('0x1b')]({'phone':_0x18a22e[_0xdcd9('0xb')],'ContactId':_0x18a22e['id'],'ListId':_0x18a22e[_0xdcd9('0x26')],'scheduledat':_0x18a22e[_0xdcd9('0x1d')]?_0x18a22e[_0xdcd9('0x1d')]:moment()['format'](_0xdcd9('0x1f')),'priority':_0x18a22e[_0xdcd9('0x1c')]?_0x18a22e['priority']:0x2,'callback':_0x18a22e[_0xdcd9('0x20')]?!![]:![],'callbackuniqueid':_0x18a22e[_0xdcd9('0x20')]?_0x18a22e[_0xdcd9('0x20')]:undefined,'callbackat':_0x18a22e[_0xdcd9('0x20')]?moment()[_0xdcd9('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x54b36c['id']})[_0xdcd9('0x21')](_0x3f1680());}}}});})[_0xdcd9('0x18')](function(){return _0x59dcf8[_0xdcd9('0x36')][_0xdcd9('0x2b')]({'attributes':['id'],'include':[{'model':_0x59dcf8[_0xdcd9('0x32')],'as':_0xdcd9('0x33'),'where':{'id':_0x18a22e['ListId']}}]})[_0xdcd9('0x18')](function(_0x55e20b){if(_0x55e20b){var _0x1c732f=[];for(var _0x221ba9=0x0,_0x3a6c3c;_0x221ba9<_0x55e20b[_0xdcd9('0x2e')];_0x221ba9+=0x1){_0x3a6c3c=_0x55e20b[_0x221ba9]['get']({'plain':!![]});_0x59dcf8[_0xdcd9('0x34')]['create']({'phone':_0x18a22e['phone'],'ContactId':_0x18a22e['id'],'ListId':_0x18a22e[_0xdcd9('0x26')],'CampaignId':_0x3a6c3c['id']})[_0xdcd9('0x21')](function(_0x79a7d4){logger['error'](_0xdcd9('0x35'),_0xdcd9('0x27'),_0x79a7d4['message']);});}}});})[_0xdcd9('0x18')](function(){_0x3a7ed4();})[_0xdcd9('0x21')](function(_0x1c39d5){logger[_0xdcd9('0x13')](_0xdcd9('0x35'),_0xdcd9('0x27'),_0x1c39d5[_0xdcd9('0x37')]);_0x3a7ed4(_0x1c39d5);});}else{_0x3a7ed4(new Error(_0xdcd9('0x38')));}},'afterDestroy':function(_0x40f9bd,_0x192fdf,_0x41cd1e){var _0x136f12=_0x3d174d[_0xdcd9('0x11')];var _0x3d6182=_0x40f9bd[_0xdcd9('0x12')]({'plain':!![]});return _0x136f12[_0xdcd9('0x16')][_0xdcd9('0x2b')]({'raw':!![],'where':{'ListId':_0x3d6182[_0xdcd9('0x26')],'ContactId':_0x3d6182['id']}})['then'](function(_0x58dd56){if(!_[_0xdcd9('0x39')](_0x58dd56)){var _0x364c92=[];for(var _0x76432f=0x0;_0x76432f<_0x58dd56[_0xdcd9('0x2e')];_0x76432f+=0x1){var _0x389e86=_0x136f12['CmHopper'][_0xdcd9('0x3a')]({'where':{'ListId':_0x58dd56[_0x76432f]['ListId'],'ContactId':_0x58dd56[_0x76432f][_0xdcd9('0x3b')],'VoiceQueueId':_0x58dd56[_0x76432f][_0xdcd9('0x3c')],'CampaignId':_0x58dd56[_0x76432f][_0xdcd9('0x3d')]}});_0x364c92[_0xdcd9('0x3e')](_0x389e86);}return BPromise[_0xdcd9('0x3f')](_0x364c92);}})['then'](function(_0x8548bc){logger[_0xdcd9('0x40')](_0xdcd9('0x41'),util[_0xdcd9('0x15')](_0x8548bc,{'showHidden':![],'depth':null}));_0x41cd1e();})[_0xdcd9('0x21')](function(_0x28d9ec){logger[_0xdcd9('0x13')](_0xdcd9('0x42'),util['inspect'](_0x28d9ec,{'showHidden':![],'depth':null}));_0x41cd1e(_0x28d9ec);});}}});};
\ No newline at end of file
index b68cedb..a0f537d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfccf=['attributes','model','map','include','CreateCmContact','create','body','raw','keys','startsWith','update','table','set','where','toString','sequelize','query','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','request','then','info','CmContact,\x20%s,\x20%s','debug','CmContact,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetCmContact','CmContact','findAll','options'];(function(_0x521f32,_0x915745){var _0x32aaf1=function(_0x406305){while(--_0x406305){_0x521f32['push'](_0x521f32['shift']());}};_0x32aaf1(++_0x915745);}(_0xfccf,0xdd));var _0xffcc=function(_0x3427ef,_0x542e3d){_0x3427ef=_0x3427ef-0x0;var _0x4a9f7c=_0xfccf[_0x3427ef];return _0x4a9f7c;};'use strict';var _=require('lodash');var util=require(_0xffcc('0x0'));var moment=require(_0xffcc('0x1'));var BPromise=require(_0xffcc('0x2'));var rs=require(_0xffcc('0x3'));var fs=require('fs');var Redis=require(_0xffcc('0x4'));var squel=require('squel');var db=require(_0xffcc('0x5'))['db'];var utils=require(_0xffcc('0x6'));var logger=require(_0xffcc('0x7'))(_0xffcc('0x8'));var config=require('../../config/environment');var jayson=require(_0xffcc('0x9'));var client=jayson[_0xffcc('0xa')][_0xffcc('0xb')]({'port':0x232a});config[_0xffcc('0xc')]=_[_0xffcc('0xd')](config[_0xffcc('0xc')],{'host':_0xffcc('0xe'),'port':0x18eb});var socket=require(_0xffcc('0xf'))(new Redis(config['redis']));require(_0xffcc('0x10'))['register'](socket);function respondWithRpcPromise(_0x514f87,_0x3ab9f0,_0x25acc7){return new BPromise(function(_0x328d3f,_0x2580e5){return client[_0xffcc('0x11')](_0x514f87,_0x25acc7)[_0xffcc('0x12')](function(_0x57d35a){logger[_0xffcc('0x13')](_0xffcc('0x14'),_0x3ab9f0,'request\x20sent');logger[_0xffcc('0x15')](_0xffcc('0x16'),_0x3ab9f0,_0xffcc('0x17'),JSON[_0xffcc('0x18')](_0x57d35a));if(_0x57d35a[_0xffcc('0x19')]){if(_0x57d35a['error'][_0xffcc('0x1a')]===0x1f4){logger[_0xffcc('0x19')](_0xffcc('0x14'),_0x3ab9f0,_0x57d35a[_0xffcc('0x19')][_0xffcc('0x1b')]);return _0x2580e5(_0x57d35a[_0xffcc('0x19')][_0xffcc('0x1b')]);}logger['error']('CmContact,\x20%s,\x20%s',_0x3ab9f0,_0x57d35a['error'][_0xffcc('0x1b')]);return _0x328d3f(_0x57d35a['error'][_0xffcc('0x1b')]);}else{logger[_0xffcc('0x13')](_0xffcc('0x14'),_0x3ab9f0,_0xffcc('0x17'));_0x328d3f(_0x57d35a[_0xffcc('0x1c')][_0xffcc('0x1b')]);}})[_0xffcc('0x1d')](function(_0x2dabd7){logger[_0xffcc('0x19')](_0xffcc('0x14'),_0x3ab9f0,_0x2dabd7);_0x2580e5(_0x2dabd7);});});}exports[_0xffcc('0x1e')]=function(_0xd04c06){var _0x46aaa4=this;return new Promise(function(_0x26632b,_0x213211){return db[_0xffcc('0x1f')][_0xffcc('0x20')]({'raw':_0xd04c06[_0xffcc('0x21')]?_0xd04c06['options']['raw']===undefined?!![]:![]:!![],'where':_0xd04c06['options']?_0xd04c06['options']['where']||null:null,'attributes':_0xd04c06[_0xffcc('0x21')]?_0xd04c06[_0xffcc('0x21')][_0xffcc('0x22')]||null:null,'limit':_0xd04c06[_0xffcc('0x21')]?_0xd04c06[_0xffcc('0x21')]['limit']||null:null,'include':_0xd04c06[_0xffcc('0x21')]?_0xd04c06['options']['include']?_['map'](_0xd04c06[_0xffcc('0x21')]['include'],function(_0x1014c0){return{'model':db[_0x1014c0[_0xffcc('0x23')]],'as':_0x1014c0['as'],'attributes':_0x1014c0[_0xffcc('0x22')],'include':_0x1014c0['include']?_[_0xffcc('0x24')](_0x1014c0['include'],function(_0xb31211){return{'model':db[_0xb31211['model']],'as':_0xb31211['as'],'attributes':_0xb31211[_0xffcc('0x22')],'include':_0xb31211[_0xffcc('0x25')]?_[_0xffcc('0x24')](_0xb31211[_0xffcc('0x25')],function(_0x818986){return{'model':db[_0x818986[_0xffcc('0x23')]],'as':_0x818986['as'],'attributes':_0x818986[_0xffcc('0x22')]};}):[]};}):[]};}):[]:[]})[_0xffcc('0x12')](function(_0x269056){logger[_0xffcc('0x13')](_0xffcc('0x1e'),_0xd04c06);logger[_0xffcc('0x15')](_0xffcc('0x1e'),_0xd04c06,JSON[_0xffcc('0x18')](_0x269056));_0x26632b(_0x269056);})[_0xffcc('0x1d')](function(_0x1b2067){logger[_0xffcc('0x19')](_0xffcc('0x1e'),_0x1b2067[_0xffcc('0x1b')],_0xd04c06);_0x213211(_0x46aaa4['error'](0x1f4,_0x1b2067[_0xffcc('0x1b')]));});});};exports[_0xffcc('0x26')]=function(_0x489f7c){var _0x30c3b7=this;return new Promise(function(_0x31f951,_0x3c6ecb){return db[_0xffcc('0x1f')][_0xffcc('0x27')](_0x489f7c[_0xffcc('0x28')],{'raw':_0x489f7c[_0xffcc('0x21')]?_0x489f7c[_0xffcc('0x21')][_0xffcc('0x29')]===undefined?!![]:![]:!![]})[_0xffcc('0x12')](function(_0x2763cf){var _0x28ac5a;for(var _0x4302a0=0x0;_0x4302a0<Object[_0xffcc('0x2a')](_0x489f7c[_0xffcc('0x28')])['length'];_0x4302a0++){var _0x475e7a=Object[_0xffcc('0x2a')](_0x489f7c[_0xffcc('0x28')])[_0x4302a0];if(_0x475e7a[_0xffcc('0x2b')]('cf_')){_0x28ac5a=squel[_0xffcc('0x2c')]()[_0xffcc('0x2d')]('cm_contacts')[_0xffcc('0x2e')](_0x475e7a,_0x489f7c['body'][_0x475e7a])[_0xffcc('0x2f')]('id\x20=\x20?',_0x2763cf['id'])[_0xffcc('0x30')]();break;}}if(!_0x28ac5a)return _0x2763cf;return db[_0xffcc('0x31')][_0xffcc('0x32')](_0x28ac5a)[_0xffcc('0x12')](function(){return _0x2763cf;});})['then'](function(_0x25aad1){logger[_0xffcc('0x13')](_0xffcc('0x26'),_0x489f7c);logger['debug'](_0xffcc('0x26'),_0x489f7c,JSON[_0xffcc('0x18')](_0x25aad1));_0x31f951(_0x25aad1);})['catch'](function(_0x5c5fb9){logger[_0xffcc('0x19')]('CreateCmContact',_0x5c5fb9[_0xffcc('0x1b')],_0x489f7c);_0x3c6ecb(_0x30c3b7[_0xffcc('0x19')](0x1f4,_0x5c5fb9[_0xffcc('0x1b')]));});});};
\ No newline at end of file
+var _0x6753=['options','raw','where','attributes','include','map','model','catch','CreateCmContact','create','keys','body','length','startsWith','cf_','update','table','cm_contacts','set','toString','sequelize','stringify','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','register','request','then','info','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','error','code','CmContact,\x20%s,\x20%s','message','result','GetCmContact','CmContact'];(function(_0x5a7d7b,_0x30b2e7){var _0x55b6f1=function(_0x1e32aa){while(--_0x1e32aa){_0x5a7d7b['push'](_0x5a7d7b['shift']());}};_0x55b6f1(++_0x30b2e7);}(_0x6753,0x1f3));var _0x3675=function(_0x29a92b,_0x209036){_0x29a92b=_0x29a92b-0x0;var _0x1d7be1=_0x6753[_0x29a92b];return _0x1d7be1;};'use strict';var _=require(_0x3675('0x0'));var util=require(_0x3675('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x3675('0x2'));var fs=require('fs');var Redis=require(_0x3675('0x3'));var squel=require('squel');var db=require(_0x3675('0x4'))['db'];var utils=require(_0x3675('0x5'));var logger=require(_0x3675('0x6'))(_0x3675('0x7'));var config=require(_0x3675('0x8'));var jayson=require(_0x3675('0x9'));var client=jayson[_0x3675('0xa')][_0x3675('0xb')]({'port':0x232a});config[_0x3675('0xc')]=_[_0x3675('0xd')](config[_0x3675('0xc')],{'host':_0x3675('0xe'),'port':0x18eb});var socket=require(_0x3675('0xf'))(new Redis(config[_0x3675('0xc')]));require(_0x3675('0x10'))[_0x3675('0x11')](socket);function respondWithRpcPromise(_0x11545f,_0x20289d,_0x2c1ee2){return new BPromise(function(_0x1ca740,_0x569ae8){return client[_0x3675('0x12')](_0x11545f,_0x2c1ee2)[_0x3675('0x13')](function(_0xc25c0c){logger[_0x3675('0x14')]('CmContact,\x20%s,\x20%s',_0x20289d,_0x3675('0x15'));logger[_0x3675('0x16')](_0x3675('0x17'),_0x20289d,_0x3675('0x15'),JSON['stringify'](_0xc25c0c));if(_0xc25c0c['error']){if(_0xc25c0c[_0x3675('0x18')][_0x3675('0x19')]===0x1f4){logger[_0x3675('0x18')](_0x3675('0x1a'),_0x20289d,_0xc25c0c[_0x3675('0x18')]['message']);return _0x569ae8(_0xc25c0c[_0x3675('0x18')][_0x3675('0x1b')]);}logger[_0x3675('0x18')](_0x3675('0x1a'),_0x20289d,_0xc25c0c['error'][_0x3675('0x1b')]);return _0x1ca740(_0xc25c0c['error'][_0x3675('0x1b')]);}else{logger['info']('CmContact,\x20%s,\x20%s',_0x20289d,_0x3675('0x15'));_0x1ca740(_0xc25c0c[_0x3675('0x1c')][_0x3675('0x1b')]);}})['catch'](function(_0x53fe65){logger[_0x3675('0x18')]('CmContact,\x20%s,\x20%s',_0x20289d,_0x53fe65);_0x569ae8(_0x53fe65);});});}exports[_0x3675('0x1d')]=function(_0x3270d8){var _0x39f49c=this;return new Promise(function(_0x5f18d6,_0x38dd5a){return db[_0x3675('0x1e')]['findAll']({'raw':_0x3270d8[_0x3675('0x1f')]?_0x3270d8[_0x3675('0x1f')][_0x3675('0x20')]===undefined?!![]:![]:!![],'where':_0x3270d8[_0x3675('0x1f')]?_0x3270d8[_0x3675('0x1f')][_0x3675('0x21')]||null:null,'attributes':_0x3270d8[_0x3675('0x1f')]?_0x3270d8[_0x3675('0x1f')][_0x3675('0x22')]||null:null,'limit':_0x3270d8[_0x3675('0x1f')]?_0x3270d8['options']['limit']||null:null,'include':_0x3270d8['options']?_0x3270d8[_0x3675('0x1f')][_0x3675('0x23')]?_[_0x3675('0x24')](_0x3270d8['options'][_0x3675('0x23')],function(_0x37b0f7){return{'model':db[_0x37b0f7['model']],'as':_0x37b0f7['as'],'attributes':_0x37b0f7[_0x3675('0x22')],'include':_0x37b0f7[_0x3675('0x23')]?_[_0x3675('0x24')](_0x37b0f7[_0x3675('0x23')],function(_0x4308c4){return{'model':db[_0x4308c4[_0x3675('0x25')]],'as':_0x4308c4['as'],'attributes':_0x4308c4[_0x3675('0x22')],'include':_0x4308c4['include']?_[_0x3675('0x24')](_0x4308c4[_0x3675('0x23')],function(_0x25f06c){return{'model':db[_0x25f06c[_0x3675('0x25')]],'as':_0x25f06c['as'],'attributes':_0x25f06c[_0x3675('0x22')]};}):[]};}):[]};}):[]:[]})[_0x3675('0x13')](function(_0x4a6577){logger['info'](_0x3675('0x1d'),_0x3270d8);logger['debug'](_0x3675('0x1d'),_0x3270d8,JSON['stringify'](_0x4a6577));_0x5f18d6(_0x4a6577);})[_0x3675('0x26')](function(_0x3222a1){logger[_0x3675('0x18')](_0x3675('0x1d'),_0x3222a1[_0x3675('0x1b')],_0x3270d8);_0x38dd5a(_0x39f49c['error'](0x1f4,_0x3222a1[_0x3675('0x1b')]));});});};exports[_0x3675('0x27')]=function(_0xf91d8d){var _0x19ba56=this;return new Promise(function(_0x3ad217,_0x3ff7dc){return db[_0x3675('0x1e')][_0x3675('0x28')](_0xf91d8d['body'],{'raw':_0xf91d8d['options']?_0xf91d8d[_0x3675('0x1f')][_0x3675('0x20')]===undefined?!![]:![]:!![]})[_0x3675('0x13')](function(_0x6029f2){var _0xcda409;for(var _0x5a22bd=0x0;_0x5a22bd<Object[_0x3675('0x29')](_0xf91d8d[_0x3675('0x2a')])[_0x3675('0x2b')];_0x5a22bd++){var _0x586ec4=Object[_0x3675('0x29')](_0xf91d8d[_0x3675('0x2a')])[_0x5a22bd];if(_0x586ec4[_0x3675('0x2c')](_0x3675('0x2d'))){_0xcda409=squel[_0x3675('0x2e')]()[_0x3675('0x2f')](_0x3675('0x30'))[_0x3675('0x31')](_0x586ec4,_0xf91d8d[_0x3675('0x2a')][_0x586ec4])[_0x3675('0x21')]('id\x20=\x20?',_0x6029f2['id'])[_0x3675('0x32')]();break;}}if(!_0xcda409)return _0x6029f2;return db[_0x3675('0x33')]['query'](_0xcda409)[_0x3675('0x13')](function(){return _0x6029f2;});})[_0x3675('0x13')](function(_0x52e1d6){logger[_0x3675('0x14')](_0x3675('0x27'),_0xf91d8d);logger[_0x3675('0x16')](_0x3675('0x27'),_0xf91d8d,JSON[_0x3675('0x34')](_0x52e1d6));_0x3ad217(_0x52e1d6);})[_0x3675('0x26')](function(_0x37cd9f){logger[_0x3675('0x18')](_0x3675('0x27'),_0x37cd9f[_0x3675('0x1b')],_0xf91d8d);_0x3ff7dc(_0x19ba56[_0x3675('0x18')](0x1f4,_0x37cd9f[_0x3675('0x1b')]));});});};
\ No newline at end of file
index fe101d1..fc86500 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(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xa9e0[_0x311c35];return _0x5cc50c;};'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(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xa9e0[_0x2576d7];return _0x16a08c;};'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 f3cbd71..c764fe8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x514c=['/:id/hopper_finals','getHopperFinals','getJscriptySessions','/:id/journey','getJourney','post','/merge','merge','create','/create_many','bulkCreate','setTags','diskStorage','join','server/files/tmp','format','%s-%s%s','basename','originalname','extname','/csv','single','file','root','replace','now','/upload','upload','/upload/:id','import','put','delete','destroy','exports','multer','util','connect-timeout','express','../../config/environment','./cmContact.controller','get','index','isAuthenticated','describe','/:id','/:id/tags','getTags','/:id/hoppers','/:id/hopper_histories','getHopperHistories'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x514c,0x1b2));var _0xc514=function(_0x1a7049,_0x32d99f){_0x1a7049=_0x1a7049-0x0;var _0x180657=_0x514c[_0x1a7049];return _0x180657;};'use strict';var multer=require(_0xc514('0x0'));var util=require(_0xc514('0x1'));var path=require('path');var timeout=require(_0xc514('0x2'));var express=require(_0xc514('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xc514('0x4'));var controller=require(_0xc514('0x5'));router[_0xc514('0x6')]('/',auth['isAuthenticated'](),controller[_0xc514('0x7')]);router[_0xc514('0x6')]('/describe',auth[_0xc514('0x8')](),controller[_0xc514('0x9')]);router['get'](_0xc514('0xa'),auth[_0xc514('0x8')](),controller['show']);router[_0xc514('0x6')](_0xc514('0xb'),auth['isAuthenticated'](),controller[_0xc514('0xc')]);router[_0xc514('0x6')](_0xc514('0xd'),auth['isAuthenticated'](),controller['getHoppers']);router[_0xc514('0x6')](_0xc514('0xe'),auth[_0xc514('0x8')](),controller[_0xc514('0xf')]);router[_0xc514('0x6')](_0xc514('0x10'),auth['isAuthenticated'](),controller[_0xc514('0x11')]);router[_0xc514('0x6')]('/:id/jscripty_sessions',auth[_0xc514('0x8')](),controller[_0xc514('0x12')]);router['get'](_0xc514('0x13'),auth[_0xc514('0x8')](),controller[_0xc514('0x14')]);router[_0xc514('0x15')](_0xc514('0x16'),auth[_0xc514('0x8')](),controller[_0xc514('0x17')]);router[_0xc514('0x15')]('/',auth[_0xc514('0x8')](),controller[_0xc514('0x18')]);router[_0xc514('0x15')](_0xc514('0x19'),auth['isAuthenticated'](),controller[_0xc514('0x1a')]);router[_0xc514('0x15')]('/:id/tags',auth[_0xc514('0x8')](),controller[_0xc514('0x1b')]);var upload=multer({'storage':multer[_0xc514('0x1c')]({'destination':function(_0x55bf2c,_0x4b2b99,_0x4adc6e){_0x4adc6e(null,path[_0xc514('0x1d')](config['root'],_0xc514('0x1e')));},'filename':function(_0x567785,_0x48c179,_0x1e6ab9){_0x48c179['originalname']=_0x48c179['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x1e6ab9(null,util[_0xc514('0x1f')](_0xc514('0x20'),path[_0xc514('0x21')](_0x48c179[_0xc514('0x22')],path['extname'](_0x48c179[_0xc514('0x22')])),Date['now'](),path[_0xc514('0x23')](_0x48c179[_0xc514('0x22')])));}})});router[_0xc514('0x15')](_0xc514('0x24'),upload[_0xc514('0x25')](_0xc514('0x26')),controller['uploadCsv']);var upload=multer({'storage':multer[_0xc514('0x1c')]({'destination':function(_0x1b8f7b,_0x337500,_0x527c21){_0x527c21(null,path[_0xc514('0x1d')](config[_0xc514('0x27')],_0xc514('0x1e')));},'filename':function(_0x540547,_0x1cfead,_0x2ed1c9){_0x1cfead[_0xc514('0x22')]=_0x1cfead[_0xc514('0x22')][_0xc514('0x28')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2ed1c9(null,util[_0xc514('0x1f')](_0xc514('0x20'),path[_0xc514('0x21')](_0x1cfead[_0xc514('0x22')],path[_0xc514('0x23')](_0x1cfead['originalname'])),Date[_0xc514('0x29')](),path['extname'](_0x1cfead[_0xc514('0x22')])));}})});router[_0xc514('0x15')](_0xc514('0x2a'),upload[_0xc514('0x25')](_0xc514('0x26')),controller[_0xc514('0x2b')]);router[_0xc514('0x15')](_0xc514('0x2c'),auth[_0xc514('0x8')](),controller[_0xc514('0x2d')]);router[_0xc514('0x2e')](_0xc514('0xa'),auth['isAuthenticated'](),controller['update']);router[_0xc514('0x2f')](_0xc514('0xa'),auth[_0xc514('0x8')](),controller[_0xc514('0x30')]);module[_0xc514('0x31')]=router;
\ No newline at end of file
+var _0xb32b=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmContact.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/tags','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','getHopperFinals','getJourney','post','/merge','merge','create','/create_many','bulkCreate','setTags','diskStorage','root','server/files/tmp','originalname','replace','format','basename','extname','now','/csv','uploadCsv','join','/upload','single','file','/upload/:id','import','update','delete','destroy','exports','multer','path'];(function(_0x2cf652,_0x2c1f78){var _0x3a1521=function(_0x23b38f){while(--_0x23b38f){_0x2cf652['push'](_0x2cf652['shift']());}};_0x3a1521(++_0x2c1f78);}(_0xb32b,0x12a));var _0xbb32=function(_0x21a215,_0x18e9ed){_0x21a215=_0x21a215-0x0;var _0x3fec44=_0xb32b[_0x21a215];return _0x3fec44;};'use strict';var multer=require(_0xbb32('0x0'));var util=require('util');var path=require(_0xbb32('0x1'));var timeout=require(_0xbb32('0x2'));var express=require(_0xbb32('0x3'));var router=express[_0xbb32('0x4')]();var fs_extra=require(_0xbb32('0x5'));var auth=require(_0xbb32('0x6'));var interaction=require(_0xbb32('0x7'));var config=require('../../config/environment');var controller=require(_0xbb32('0x8'));router[_0xbb32('0x9')]('/',auth[_0xbb32('0xa')](),controller[_0xbb32('0xb')]);router['get'](_0xbb32('0xc'),auth[_0xbb32('0xa')](),controller[_0xbb32('0xd')]);router['get'](_0xbb32('0xe'),auth[_0xbb32('0xa')](),controller['show']);router[_0xbb32('0x9')](_0xbb32('0xf'),auth[_0xbb32('0xa')](),controller['getTags']);router[_0xbb32('0x9')](_0xbb32('0x10'),auth[_0xbb32('0xa')](),controller[_0xbb32('0x11')]);router[_0xbb32('0x9')](_0xbb32('0x12'),auth[_0xbb32('0xa')](),controller[_0xbb32('0x13')]);router['get']('/:id/hopper_finals',auth['isAuthenticated'](),controller[_0xbb32('0x14')]);router['get']('/:id/jscripty_sessions',auth[_0xbb32('0xa')](),controller['getJscriptySessions']);router[_0xbb32('0x9')]('/:id/journey',auth[_0xbb32('0xa')](),controller[_0xbb32('0x15')]);router[_0xbb32('0x16')](_0xbb32('0x17'),auth[_0xbb32('0xa')](),controller[_0xbb32('0x18')]);router[_0xbb32('0x16')]('/',auth[_0xbb32('0xa')](),controller[_0xbb32('0x19')]);router[_0xbb32('0x16')](_0xbb32('0x1a'),auth['isAuthenticated'](),controller[_0xbb32('0x1b')]);router[_0xbb32('0x16')](_0xbb32('0xf'),auth[_0xbb32('0xa')](),controller[_0xbb32('0x1c')]);var upload=multer({'storage':multer[_0xbb32('0x1d')]({'destination':function(_0x27de40,_0x36eea2,_0x333377){_0x333377(null,path['join'](config[_0xbb32('0x1e')],_0xbb32('0x1f')));},'filename':function(_0x54e61e,_0x4b6085,_0x3acc65){_0x4b6085[_0xbb32('0x20')]=_0x4b6085[_0xbb32('0x20')][_0xbb32('0x21')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x3acc65(null,util[_0xbb32('0x22')]('%s-%s%s',path[_0xbb32('0x23')](_0x4b6085[_0xbb32('0x20')],path[_0xbb32('0x24')](_0x4b6085[_0xbb32('0x20')])),Date[_0xbb32('0x25')](),path[_0xbb32('0x24')](_0x4b6085[_0xbb32('0x20')])));}})});router['post'](_0xbb32('0x26'),upload['single']('file'),controller[_0xbb32('0x27')]);var upload=multer({'storage':multer[_0xbb32('0x1d')]({'destination':function(_0x13a131,_0x43e33c,_0x2123e6){_0x2123e6(null,path[_0xbb32('0x28')](config[_0xbb32('0x1e')],_0xbb32('0x1f')));},'filename':function(_0x4944a0,_0xe8154d,_0x301cc3){_0xe8154d[_0xbb32('0x20')]=_0xe8154d[_0xbb32('0x20')][_0xbb32('0x21')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x301cc3(null,util[_0xbb32('0x22')]('%s-%s%s',path[_0xbb32('0x23')](_0xe8154d[_0xbb32('0x20')],path[_0xbb32('0x24')](_0xe8154d[_0xbb32('0x20')])),Date['now'](),path[_0xbb32('0x24')](_0xe8154d[_0xbb32('0x20')])));}})});router[_0xbb32('0x16')](_0xbb32('0x29'),upload[_0xbb32('0x2a')](_0xbb32('0x2b')),controller['upload']);router['post'](_0xbb32('0x2c'),auth[_0xbb32('0xa')](),controller[_0xbb32('0x2d')]);router['put'](_0xbb32('0xe'),auth[_0xbb32('0xa')](),controller[_0xbb32('0x2e')]);router[_0xbb32('0x2f')](_0xbb32('0xe'),auth[_0xbb32('0xa')](),controller[_0xbb32('0x30')]);module[_0xbb32('0x31')]=router;
\ No newline at end of file
index 652145d..a771baf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaf4=['parse','values','isArray','BOOLEAN','ENUM','voice','lodash','exports','VIRTUAL','alias','setDataValue','getDataValue','name','STRING','TEXT','long','type','select'];(function(_0x5cc882,_0x2d4db7){var _0xf2927c=function(_0x43b7d1){while(--_0x43b7d1){_0x5cc882['push'](_0x5cc882['shift']());}};_0xf2927c(++_0x2d4db7);}(_0xcaf4,0x1a4));var _0x4caf=function(_0x1832d5,_0x4e2970){_0x1832d5=_0x1832d5-0x0;var _0x1ef986=_0xcaf4[_0x1832d5];return _0x1ef986;};'use strict';var Sequelize=require('sequelize');var _=require(_0x4caf('0x0'));module[_0x4caf('0x1')]={'name':{'type':Sequelize[_0x4caf('0x2')],'get':function(_0x29dc96){return this['getDataValue'](_0x4caf('0x3'));}},'alias':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x1d808f){this[_0x4caf('0x4')]('alias',_0x1d808f?_0x1d808f:this[_0x4caf('0x5')](_0x4caf('0x6')));}},'type':{'type':Sequelize[_0x4caf('0x7')],'allowNull':![]},'values':{'type':Sequelize[_0x4caf('0x8')](_0x4caf('0x9')),'get':function(){if(this[_0x4caf('0x5')](_0x4caf('0xa'))===_0x4caf('0xb')){return JSON[_0x4caf('0xc')](this['getDataValue']('values'));}else{return this[_0x4caf('0x5')](_0x4caf('0xd'));}},'set':function(_0x11a43f){if(Array[_0x4caf('0xe')](_0x11a43f)){this[_0x4caf('0x4')]('values',JSON['stringify'](_0x11a43f));}else{this[_0x4caf('0x4')](_0x4caf('0xd'),_0x11a43f);}}},'required':{'type':Sequelize[_0x4caf('0xf')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x4caf('0xf')],'defaultValue':![]},'actionType':{'type':Sequelize[_0x4caf('0x10')](_0x4caf('0x11'))}};
\ No newline at end of file
+var _0x136b=['select','values','isArray','stringify','BOOLEAN','ENUM','voice','sequelize','exports','VIRTUAL','STRING','setDataValue','alias','getDataValue','name','TEXT','long','type'];(function(_0x705b98,_0x1c345b){var _0x47b72f=function(_0x44f02a){while(--_0x44f02a){_0x705b98['push'](_0x705b98['shift']());}};_0x47b72f(++_0x1c345b);}(_0x136b,0x85));var _0xb136=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x136b[_0xbca1b1];return _0x4e1686;};'use strict';var Sequelize=require(_0xb136('0x0'));var _=require('lodash');module[_0xb136('0x1')]={'name':{'type':Sequelize[_0xb136('0x2')],'get':function(_0x4f82db){return this['getDataValue']('alias');}},'alias':{'type':Sequelize[_0xb136('0x3')],'allowNull':![],'set':function(_0x12634b){this[_0xb136('0x4')](_0xb136('0x5'),_0x12634b?_0x12634b:this[_0xb136('0x6')](_0xb136('0x7')));}},'type':{'type':Sequelize[_0xb136('0x3')],'allowNull':![]},'values':{'type':Sequelize[_0xb136('0x8')](_0xb136('0x9')),'get':function(){if(this[_0xb136('0x6')](_0xb136('0xa'))===_0xb136('0xb')){return JSON['parse'](this['getDataValue'](_0xb136('0xc')));}else{return this['getDataValue']('values');}},'set':function(_0x276dc8){if(Array[_0xb136('0xd')](_0x276dc8)){this[_0xb136('0x4')]('values',JSON[_0xb136('0xe')](_0x276dc8));}else{this[_0xb136('0x4')]('values',_0x276dc8);}}},'required':{'type':Sequelize[_0xb136('0xf')],'defaultValue':![]},'clickToAction':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'actionType':{'type':Sequelize[_0xb136('0x10')](_0xb136('0x11'))}};
\ No newline at end of file
index 8d1b281..d832bb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5191=['filter','options','includeAll','include','findAll','rows','catch','show','params','find','body','create','sequelize','transaction','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','queryInterface','addColumn','cm_contacts','format','cf_%d','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','send','CmCustomField','rawAttributes','fieldName','type','key','model','differenceBy','map','name','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL'];(function(_0x1fb75a,_0x442154){var _0x408a4c=function(_0x2400f5){while(--_0x2400f5){_0x1fb75a['push'](_0x1fb75a['shift']());}};_0x408a4c(++_0x442154);}(_0x5191,0x1e6));var _0x1519=function(_0x519b55,_0x1597a7){_0x519b55=_0x519b55-0x0;var _0x5baf3d=_0x5191[_0x519b55];return _0x5baf3d;};'use strict';var emlformat=require(_0x1519('0x0'));var rimraf=require(_0x1519('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1519('0x2'));var rp=require(_0x1519('0x3'));var moment=require(_0x1519('0x4'));var BPromise=require(_0x1519('0x5'));var Mustache=require(_0x1519('0x6'));var util=require(_0x1519('0x7'));var path=require(_0x1519('0x8'));var sox=require(_0x1519('0x9'));var csv=require('to-csv');var ejs=require(_0x1519('0xa'));var fs=require('fs');var fs_extra=require(_0x1519('0xb'));var _=require(_0x1519('0xc'));var squel=require(_0x1519('0xd'));var crypto=require('crypto');var jsforce=require(_0x1519('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x1519('0xf'));var querystring=require(_0x1519('0x10'));var Papa=require('papaparse');var Redis=require(_0x1519('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x1519('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x1519('0x13'))(_0x1519('0x14'));var utils=require(_0x1519('0x15'));var config=require(_0x1519('0x16'));var licenseUtil=require(_0x1519('0x17'));var db=require(_0x1519('0x18'))['db'];function respondWithStatusCode(_0x4a627c,_0x10900a){_0x10900a=_0x10900a||0xcc;return function(_0x1b0324){if(_0x1b0324){return _0x4a627c['sendStatus'](_0x10900a);}return _0x4a627c[_0x1519('0x19')](_0x10900a)[_0x1519('0x1a')]();};}function respondWithResult(_0x29ddd5,_0x1c642c){_0x1c642c=_0x1c642c||0xc8;return function(_0x4f2b3a){if(_0x4f2b3a){return _0x29ddd5[_0x1519('0x19')](_0x1c642c)['json'](_0x4f2b3a);}};}function respondWithFilteredResult(_0x44839c,_0x24f4e4){return function(_0x8340f2){if(_0x8340f2){var _0x4619c4=typeof _0x24f4e4[_0x1519('0x1b')]===_0x1519('0x1c')&&typeof _0x24f4e4['limit']===_0x1519('0x1c');var _0x25bdd3=_0x8340f2[_0x1519('0x1d')];var _0x594530=_0x4619c4?0x0:_0x24f4e4[_0x1519('0x1b')];var _0x431258=_0x4619c4?_0x8340f2[_0x1519('0x1d')]:_0x24f4e4['offset']+_0x24f4e4[_0x1519('0x1e')];var _0x391aa7;if(_0x431258>=_0x25bdd3){_0x431258=_0x25bdd3;_0x391aa7=0xc8;}else{_0x391aa7=0xce;}_0x44839c[_0x1519('0x19')](_0x391aa7);return _0x44839c[_0x1519('0x1f')](_0x1519('0x20'),_0x594530+'-'+_0x431258+'/'+_0x25bdd3)[_0x1519('0x21')](_0x8340f2);}return null;};}function patchUpdates(_0x3caa46){return function(_0x5b5eb3){try{jsonpatch[_0x1519('0x22')](_0x5b5eb3,_0x3caa46,!![]);}catch(_0xe5fe25){return BPromise[_0x1519('0x23')](_0xe5fe25);}return _0x5b5eb3[_0x1519('0x24')]();};}function saveUpdates(_0x296bf1,_0x196ef8){return function(_0x5e97da){if(_0x5e97da){return _0x5e97da[_0x1519('0x25')](_0x296bf1)[_0x1519('0x26')](function(_0x3ea55a){return _0x3ea55a;});}return null;};}function removeEntity(_0x223388,_0x23b2d2){return function(_0x3bf451){if(_0x3bf451){return _0x3bf451[_0x1519('0x27')]()['then'](function(){_0x223388[_0x1519('0x19')](0xcc)[_0x1519('0x1a')]();});}};}function handleEntityNotFound(_0x55fb79,_0xd516d5){return function(_0x3b91cb){if(!_0x3b91cb){_0x55fb79['sendStatus'](0x194);}return _0x3b91cb;};}function handleError(_0x47f8c0,_0x5e5b3e){_0x5e5b3e=_0x5e5b3e||0x1f4;return function(_0x270059){logger[_0x1519('0x28')](_0x270059[_0x1519('0x29')]);if(_0x270059['name']){delete _0x270059['name'];}_0x47f8c0[_0x1519('0x19')](_0x5e5b3e)[_0x1519('0x2a')](_0x270059);};}exports['index']=function(_0xbd1e98,_0x196fb8){var _0xf900af={},_0x459900={},_0x386359={'count':0x0,'rows':[]};var _0x44fa8c=_['map'](db[_0x1519('0x2b')][_0x1519('0x2c')],function(_0x13daab){return{'name':_0x13daab[_0x1519('0x2d')],'type':_0x13daab[_0x1519('0x2e')][_0x1519('0x2f')]};});_0x459900[_0x1519('0x30')]=_[_0x1519('0x31')](_[_0x1519('0x32')](_0x44fa8c,_0x1519('0x33')),[_0x1519('0x33')]);_0x459900[_0x1519('0x34')]=_[_0x1519('0x35')](_0xbd1e98[_0x1519('0x34')]);_0x459900[_0x1519('0x36')]=_[_0x1519('0x37')](_0x459900[_0x1519('0x30')],_0x459900[_0x1519('0x34')]);_0xf900af['attributes']=_[_0x1519('0x37')](_0x459900[_0x1519('0x30')],qs[_0x1519('0x38')](_0xbd1e98[_0x1519('0x34')][_0x1519('0x38')]));_0xf900af[_0x1519('0x39')]=_0xf900af[_0x1519('0x39')][_0x1519('0x3a')]?_0xf900af[_0x1519('0x39')]:_0x459900[_0x1519('0x30')];if(!_0xbd1e98[_0x1519('0x34')][_0x1519('0x3b')](_0x1519('0x3c'))){_0xf900af[_0x1519('0x1e')]=qs[_0x1519('0x1e')](_0xbd1e98[_0x1519('0x34')]['limit']);_0xf900af[_0x1519('0x1b')]=qs['offset'](_0xbd1e98[_0x1519('0x34')]['offset']);}_0xf900af[_0x1519('0x3d')]=qs[_0x1519('0x3e')](_0xbd1e98[_0x1519('0x34')][_0x1519('0x3e')]);_0xf900af[_0x1519('0x3f')]=qs['filters'](_['pick'](_0xbd1e98['query'],_0x459900['filters']),_0x44fa8c);if(_0xbd1e98[_0x1519('0x34')]['filter']){_0xf900af[_0x1519('0x3f')]=_[_0x1519('0x40')](_0xf900af[_0x1519('0x3f')],{'$or':_[_0x1519('0x32')](_0x44fa8c,function(_0xb42fb5){if(_0xb42fb5['type']!==_0x1519('0x41')){var _0x29d2fd={};_0x29d2fd[_0xb42fb5['name']]={'$like':'%'+_0xbd1e98[_0x1519('0x34')][_0x1519('0x42')]+'%'};return _0x29d2fd;}})});}_0xf900af=_[_0x1519('0x40')]({},_0xf900af,_0xbd1e98[_0x1519('0x43')]);var _0x2af0c0={'where':_0xf900af[_0x1519('0x3f')]};return db[_0x1519('0x2b')][_0x1519('0x1d')](_0x2af0c0)['then'](function(_0x551b7a){_0x386359[_0x1519('0x1d')]=_0x551b7a;if(_0xbd1e98[_0x1519('0x34')][_0x1519('0x44')]){_0xf900af[_0x1519('0x45')]=[{'all':!![]}];}return db[_0x1519('0x2b')][_0x1519('0x46')](_0xf900af);})[_0x1519('0x26')](function(_0x1bb5cf){_0x386359[_0x1519('0x47')]=_0x1bb5cf;return _0x386359;})['then'](respondWithFilteredResult(_0x196fb8,_0xf900af))[_0x1519('0x48')](handleError(_0x196fb8,null));};exports[_0x1519('0x49')]=function(_0x4f8d0d,_0x4b2f0e){var _0x29351a={'raw':!![],'where':{'id':_0x4f8d0d[_0x1519('0x4a')]['id']}},_0x2b6c51={};_0x2b6c51['model']=_[_0x1519('0x35')](db[_0x1519('0x2b')][_0x1519('0x2c')]);_0x2b6c51[_0x1519('0x34')]=_[_0x1519('0x35')](_0x4f8d0d[_0x1519('0x34')]);_0x2b6c51['filters']=_[_0x1519('0x37')](_0x2b6c51['model'],_0x2b6c51['query']);_0x29351a['attributes']=_[_0x1519('0x37')](_0x2b6c51[_0x1519('0x30')],qs[_0x1519('0x38')](_0x4f8d0d[_0x1519('0x34')][_0x1519('0x38')]));_0x29351a[_0x1519('0x39')]=_0x29351a['attributes'][_0x1519('0x3a')]?_0x29351a[_0x1519('0x39')]:_0x2b6c51['model'];if(_0x4f8d0d[_0x1519('0x34')]['includeAll']){_0x29351a[_0x1519('0x45')]=[{'all':!![]}];}_0x29351a=_[_0x1519('0x40')]({},_0x29351a,_0x4f8d0d[_0x1519('0x43')]);return db[_0x1519('0x2b')][_0x1519('0x4b')](_0x29351a)[_0x1519('0x26')](handleEntityNotFound(_0x4b2f0e,null))[_0x1519('0x26')](respondWithResult(_0x4b2f0e,null))[_0x1519('0x48')](handleError(_0x4b2f0e,null));};exports[_0x1519('0x25')]=function(_0x34e97b,_0x213664){if(_0x34e97b[_0x1519('0x4c')]['id']){delete _0x34e97b[_0x1519('0x4c')]['id'];}return db['CmCustomField']['find']({'where':{'id':_0x34e97b['params']['id']}})['then'](handleEntityNotFound(_0x213664,null))[_0x1519('0x26')](saveUpdates(_0x34e97b[_0x1519('0x4c')],null))['then'](respondWithResult(_0x213664,null))[_0x1519('0x48')](handleError(_0x213664,null));};exports[_0x1519('0x27')]=function(_0xfda375,_0x44fde6){return db[_0x1519('0x2b')][_0x1519('0x4b')]({'where':{'id':_0xfda375[_0x1519('0x4a')]['id']}})[_0x1519('0x26')](handleEntityNotFound(_0x44fde6,null))[_0x1519('0x26')](removeEntity(_0x44fde6,null))[_0x1519('0x48')](handleError(_0x44fde6,null));};exports[_0x1519('0x4d')]=function(_0x46c210,_0x42a055){var _0x5704f1;return db[_0x1519('0x4e')][_0x1519('0x4f')](function(_0x5f2fbf){return db[_0x1519('0x2b')][_0x1519('0x4d')](_0x46c210[_0x1519('0x4c')],{'transaction':_0x5f2fbf})[_0x1519('0x26')](function(_0x43c5a6){_0x5704f1=_0x43c5a6;var _0x2e1baf={'type':db[_0x1519('0x50')][_0x1519('0x51')],'transaction':_0x5f2fbf};switch(_0x46c210[_0x1519('0x4c')][_0x1519('0x2e')]){case _0x1519('0x52'):_0x2e1baf[_0x1519('0x2e')]=db[_0x1519('0x50')][_0x1519('0x51')];break;case _0x1519('0x53'):_0x2e1baf[_0x1519('0x2e')]=db[_0x1519('0x50')][_0x1519('0x54')];break;case _0x1519('0x55'):_0x2e1baf['type']=db[_0x1519('0x50')][_0x1519('0x56')];_0x2e1baf['defaultValue']=![];break;default:}return db['sequelize'][_0x1519('0x57')][_0x1519('0x58')](_0x1519('0x59'),util[_0x1519('0x5a')](_0x1519('0x5b'),_0x5704f1['id']),_0x2e1baf);})[_0x1519('0x26')](function(){return _0x5704f1;});})[_0x1519('0x26')](respondWithResult(_0x42a055,0xc9))['catch'](handleError(_0x42a055,null));};
\ No newline at end of file
+var _0x1420=['undefined','limit','apply','reject','update','then','error','name','send','index','map','CmCustomField','rawAttributes','fieldName','key','model','differenceBy','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','type','VIRTUAL','merge','options','count','includeAll','rows','show','params','include','catch','body','find','transaction','Sequelize','TEXT','number','INTEGER','BOOLEAN','defaultValue','sequelize','queryInterface','addColumn','cm_contacts','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','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'];(function(_0x52bfa5,_0x42cf21){var _0x26f80b=function(_0x73c5b0){while(--_0x73c5b0){_0x52bfa5['push'](_0x52bfa5['shift']());}};_0x26f80b(++_0x42cf21);}(_0x1420,0x138));var _0x0142=function(_0x2d51e8,_0x137aad){_0x2d51e8=_0x2d51e8-0x0;var _0x2a5b70=_0x1420[_0x2d51e8];return _0x2a5b70;};'use strict';var emlformat=require(_0x0142('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0142('0x1'));var jsonpatch=require(_0x0142('0x2'));var rp=require(_0x0142('0x3'));var moment=require(_0x0142('0x4'));var BPromise=require(_0x0142('0x5'));var Mustache=require(_0x0142('0x6'));var util=require(_0x0142('0x7'));var path=require(_0x0142('0x8'));var sox=require(_0x0142('0x9'));var csv=require(_0x0142('0xa'));var ejs=require(_0x0142('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0142('0xc'));var squel=require('squel');var crypto=require(_0x0142('0xd'));var jsforce=require(_0x0142('0xe'));var deskjs=require(_0x0142('0xf'));var toCsv=require('to-csv');var querystring=require(_0x0142('0x10'));var Papa=require(_0x0142('0x11'));var Redis=require(_0x0142('0x12'));var authService=require(_0x0142('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x0142('0x14'));var hardwareService=require(_0x0142('0x15'));var logger=require(_0x0142('0x16'))(_0x0142('0x17'));var utils=require(_0x0142('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x0142('0x19'));var db=require(_0x0142('0x1a'))['db'];function respondWithStatusCode(_0x8e6911,_0x4a762f){_0x4a762f=_0x4a762f||0xcc;return function(_0x52bce7){if(_0x52bce7){return _0x8e6911[_0x0142('0x1b')](_0x4a762f);}return _0x8e6911[_0x0142('0x1c')](_0x4a762f)[_0x0142('0x1d')]();};}function respondWithResult(_0x34cb0c,_0x45efac){_0x45efac=_0x45efac||0xc8;return function(_0xe07c52){if(_0xe07c52){return _0x34cb0c['status'](_0x45efac)[_0x0142('0x1e')](_0xe07c52);}};}function respondWithFilteredResult(_0x462945,_0x1b56bf){return function(_0x952ed1){if(_0x952ed1){var _0x4a13a2=typeof _0x1b56bf[_0x0142('0x1f')]===_0x0142('0x20')&&typeof _0x1b56bf[_0x0142('0x21')]===_0x0142('0x20');var _0xb29bd8=_0x952ed1['count'];var _0x27aa7f=_0x4a13a2?0x0:_0x1b56bf[_0x0142('0x1f')];var _0xe5dcbc=_0x4a13a2?_0x952ed1['count']:_0x1b56bf[_0x0142('0x1f')]+_0x1b56bf['limit'];var _0x562607;if(_0xe5dcbc>=_0xb29bd8){_0xe5dcbc=_0xb29bd8;_0x562607=0xc8;}else{_0x562607=0xce;}_0x462945['status'](_0x562607);return _0x462945['set']('Content-Range',_0x27aa7f+'-'+_0xe5dcbc+'/'+_0xb29bd8)[_0x0142('0x1e')](_0x952ed1);}return null;};}function patchUpdates(_0x4fc2c5){return function(_0x6ac8b1){try{jsonpatch[_0x0142('0x22')](_0x6ac8b1,_0x4fc2c5,!![]);}catch(_0x34eac9){return BPromise[_0x0142('0x23')](_0x34eac9);}return _0x6ac8b1['save']();};}function saveUpdates(_0x3b44fc,_0x172e75){return function(_0x5d33e7){if(_0x5d33e7){return _0x5d33e7[_0x0142('0x24')](_0x3b44fc)[_0x0142('0x25')](function(_0x4ec2a1){return _0x4ec2a1;});}return null;};}function removeEntity(_0x54e09f,_0xa99765){return function(_0x5d729c){if(_0x5d729c){return _0x5d729c['destroy']()[_0x0142('0x25')](function(){_0x54e09f['status'](0xcc)[_0x0142('0x1d')]();});}};}function handleEntityNotFound(_0x5ccc53,_0x2d4987){return function(_0x5ed55d){if(!_0x5ed55d){_0x5ccc53['sendStatus'](0x194);}return _0x5ed55d;};}function handleError(_0x98274d,_0x581909){_0x581909=_0x581909||0x1f4;return function(_0x1d954b){logger[_0x0142('0x26')](_0x1d954b['stack']);if(_0x1d954b[_0x0142('0x27')]){delete _0x1d954b[_0x0142('0x27')];}_0x98274d[_0x0142('0x1c')](_0x581909)[_0x0142('0x28')](_0x1d954b);};}exports[_0x0142('0x29')]=function(_0x4e6512,_0x101852){var _0x5510c4={},_0x1ee3a5={},_0x5cf336={'count':0x0,'rows':[]};var _0x5c89f9=_[_0x0142('0x2a')](db[_0x0142('0x2b')][_0x0142('0x2c')],function(_0x1cfe8b){return{'name':_0x1cfe8b[_0x0142('0x2d')],'type':_0x1cfe8b['type'][_0x0142('0x2e')]};});_0x1ee3a5[_0x0142('0x2f')]=_[_0x0142('0x30')](_[_0x0142('0x2a')](_0x5c89f9,_0x0142('0x27')),[_0x0142('0x27')]);_0x1ee3a5[_0x0142('0x31')]=_[_0x0142('0x32')](_0x4e6512[_0x0142('0x31')]);_0x1ee3a5[_0x0142('0x33')]=_[_0x0142('0x34')](_0x1ee3a5[_0x0142('0x2f')],_0x1ee3a5[_0x0142('0x31')]);_0x5510c4[_0x0142('0x35')]=_['intersection'](_0x1ee3a5['model'],qs['fields'](_0x4e6512[_0x0142('0x31')][_0x0142('0x36')]));_0x5510c4[_0x0142('0x35')]=_0x5510c4['attributes'][_0x0142('0x37')]?_0x5510c4['attributes']:_0x1ee3a5[_0x0142('0x2f')];if(!_0x4e6512[_0x0142('0x31')][_0x0142('0x38')](_0x0142('0x39'))){_0x5510c4['limit']=qs[_0x0142('0x21')](_0x4e6512[_0x0142('0x31')][_0x0142('0x21')]);_0x5510c4[_0x0142('0x1f')]=qs[_0x0142('0x1f')](_0x4e6512['query'][_0x0142('0x1f')]);}_0x5510c4[_0x0142('0x3a')]=qs['sort'](_0x4e6512[_0x0142('0x31')][_0x0142('0x3b')]);_0x5510c4[_0x0142('0x3c')]=qs['filters'](_['pick'](_0x4e6512[_0x0142('0x31')],_0x1ee3a5[_0x0142('0x33')]),_0x5c89f9);if(_0x4e6512[_0x0142('0x31')][_0x0142('0x3d')]){_0x5510c4[_0x0142('0x3c')]=_['merge'](_0x5510c4[_0x0142('0x3c')],{'$or':_['map'](_0x5c89f9,function(_0x473d20){if(_0x473d20[_0x0142('0x3e')]!==_0x0142('0x3f')){var _0x12a39f={};_0x12a39f[_0x473d20[_0x0142('0x27')]]={'$like':'%'+_0x4e6512[_0x0142('0x31')][_0x0142('0x3d')]+'%'};return _0x12a39f;}})});}_0x5510c4=_[_0x0142('0x40')]({},_0x5510c4,_0x4e6512[_0x0142('0x41')]);var _0x23b6c0={'where':_0x5510c4['where']};return db['CmCustomField']['count'](_0x23b6c0)[_0x0142('0x25')](function(_0x5edcaf){_0x5cf336[_0x0142('0x42')]=_0x5edcaf;if(_0x4e6512[_0x0142('0x31')][_0x0142('0x43')]){_0x5510c4['include']=[{'all':!![]}];}return db['CmCustomField']['findAll'](_0x5510c4);})[_0x0142('0x25')](function(_0x10af48){_0x5cf336[_0x0142('0x44')]=_0x10af48;return _0x5cf336;})[_0x0142('0x25')](respondWithFilteredResult(_0x101852,_0x5510c4))['catch'](handleError(_0x101852,null));};exports[_0x0142('0x45')]=function(_0x221b3f,_0x214472){var _0x1e2eb3={'raw':!![],'where':{'id':_0x221b3f[_0x0142('0x46')]['id']}},_0x7dcc57={};_0x7dcc57[_0x0142('0x2f')]=_[_0x0142('0x32')](db[_0x0142('0x2b')]['rawAttributes']);_0x7dcc57[_0x0142('0x31')]=_[_0x0142('0x32')](_0x221b3f[_0x0142('0x31')]);_0x7dcc57['filters']=_[_0x0142('0x34')](_0x7dcc57[_0x0142('0x2f')],_0x7dcc57['query']);_0x1e2eb3[_0x0142('0x35')]=_[_0x0142('0x34')](_0x7dcc57['model'],qs[_0x0142('0x36')](_0x221b3f[_0x0142('0x31')]['fields']));_0x1e2eb3[_0x0142('0x35')]=_0x1e2eb3['attributes'][_0x0142('0x37')]?_0x1e2eb3['attributes']:_0x7dcc57['model'];if(_0x221b3f[_0x0142('0x31')][_0x0142('0x43')]){_0x1e2eb3[_0x0142('0x47')]=[{'all':!![]}];}_0x1e2eb3=_['merge']({},_0x1e2eb3,_0x221b3f[_0x0142('0x41')]);return db[_0x0142('0x2b')]['find'](_0x1e2eb3)['then'](handleEntityNotFound(_0x214472,null))[_0x0142('0x25')](respondWithResult(_0x214472,null))[_0x0142('0x48')](handleError(_0x214472,null));};exports[_0x0142('0x24')]=function(_0x4f0427,_0x5d7711){if(_0x4f0427[_0x0142('0x49')]['id']){delete _0x4f0427[_0x0142('0x49')]['id'];}return db['CmCustomField'][_0x0142('0x4a')]({'where':{'id':_0x4f0427[_0x0142('0x46')]['id']}})['then'](handleEntityNotFound(_0x5d7711,null))[_0x0142('0x25')](saveUpdates(_0x4f0427[_0x0142('0x49')],null))['then'](respondWithResult(_0x5d7711,null))['catch'](handleError(_0x5d7711,null));};exports['destroy']=function(_0x11c3ea,_0x1ec88d){return db[_0x0142('0x2b')][_0x0142('0x4a')]({'where':{'id':_0x11c3ea[_0x0142('0x46')]['id']}})['then'](handleEntityNotFound(_0x1ec88d,null))['then'](removeEntity(_0x1ec88d,null))[_0x0142('0x48')](handleError(_0x1ec88d,null));};exports['create']=function(_0x2b6ebc,_0x46cf7a){var _0x51324e;return db['sequelize'][_0x0142('0x4b')](function(_0x1c5a24){return db['CmCustomField']['create'](_0x2b6ebc[_0x0142('0x49')],{'transaction':_0x1c5a24})[_0x0142('0x25')](function(_0x591276){_0x51324e=_0x591276;var _0x15da82={'type':db[_0x0142('0x4c')][_0x0142('0x4d')],'transaction':_0x1c5a24};switch(_0x2b6ebc['body'][_0x0142('0x3e')]){case'text':_0x15da82[_0x0142('0x3e')]=db[_0x0142('0x4c')][_0x0142('0x4d')];break;case _0x0142('0x4e'):_0x15da82['type']=db[_0x0142('0x4c')][_0x0142('0x4f')];break;case'switch':_0x15da82[_0x0142('0x3e')]=db[_0x0142('0x4c')][_0x0142('0x50')];_0x15da82[_0x0142('0x51')]=![];break;default:}return db[_0x0142('0x52')][_0x0142('0x53')][_0x0142('0x54')](_0x0142('0x55'),util['format']('cf_%d',_0x51324e['id']),_0x15da82);})[_0x0142('0x25')](function(){return _0x51324e;});})[_0x0142('0x25')](respondWithResult(_0x46cf7a,0xc9))['catch'](handleError(_0x46cf7a,null));};
\ No newline at end of file
index c8eaf4c..0035cb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda16=['CmCustomField','cm_custom_fields','lodash','util','api','moment','bluebird','path','rimraf','./cmCustomField.attributes','define'];(function(_0x571a17,_0x63fb3d){var _0x3ef337=function(_0x12096b){while(--_0x12096b){_0x571a17['push'](_0x571a17['shift']());}};_0x3ef337(++_0x63fb3d);}(_0xda16,0xb2));var _0x6da1=function(_0x5f0b01,_0x38c683){_0x5f0b01=_0x5f0b01-0x0;var _0x1f62a9=_0xda16[_0x5f0b01];return _0x1f62a9;};'use strict';var _=require(_0x6da1('0x0'));var util=require(_0x6da1('0x1'));var logger=require('../../config/logger')(_0x6da1('0x2'));var moment=require(_0x6da1('0x3'));var BPromise=require(_0x6da1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6da1('0x5'));var rimraf=require(_0x6da1('0x6'));var config=require('../../config/environment');var attributes=require(_0x6da1('0x7'));module['exports']=function(_0x1c296e,_0xbb06fa){return _0x1c296e[_0x6da1('0x8')](_0x6da1('0x9'),attributes,{'tableName':_0x6da1('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa7f3=['request-promise','rimraf','../../config/environment','exports','CmCustomField','cm_custom_fields','util','../../config/logger','api','moment','bluebird'];(function(_0x43676e,_0x26e150){var _0x4fa0dc=function(_0x36efc9){while(--_0x36efc9){_0x43676e['push'](_0x43676e['shift']());}};_0x4fa0dc(++_0x26e150);}(_0xa7f3,0x124));var _0x3a7f=function(_0xc1815e,_0x4bc3b5){_0xc1815e=_0xc1815e-0x0;var _0x31bbb3=_0xa7f3[_0xc1815e];return _0x31bbb3;};'use strict';var _=require('lodash');var util=require(_0x3a7f('0x0'));var logger=require(_0x3a7f('0x1'))(_0x3a7f('0x2'));var moment=require(_0x3a7f('0x3'));var BPromise=require(_0x3a7f('0x4'));var rp=require(_0x3a7f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3a7f('0x6'));var config=require(_0x3a7f('0x7'));var attributes=require('./cmCustomField.attributes');module[_0x3a7f('0x8')]=function(_0x6fce91,_0x238e2e){return _0x6fce91['define'](_0x3a7f('0x9'),attributes,{'tableName':_0x3a7f('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 94cffb4..24a4758 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x071b=['../../config/utils','rpc','jayson/promise','client','http','request','then','info','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x513441,_0x20bfba){var _0x5a49c8=function(_0x2cc7d9){while(--_0x2cc7d9){_0x513441['push'](_0x513441['shift']());}};_0x5a49c8(++_0x20bfba);}(_0x071b,0x12f));var _0xb071=function(_0x1f2ddb,_0x47b33e){_0x1f2ddb=_0x1f2ddb-0x0;var _0xa29811=_0x071b[_0x1f2ddb];return _0xa29811;};'use strict';var _=require(_0xb071('0x0'));var util=require(_0xb071('0x1'));var moment=require(_0xb071('0x2'));var BPromise=require(_0xb071('0x3'));var rs=require(_0xb071('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb071('0x5'));var logger=require('../../config/logger')(_0xb071('0x6'));var config=require('../../config/environment');var jayson=require(_0xb071('0x7'));var client=jayson[_0xb071('0x8')][_0xb071('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x511bfd,_0xa41670,_0x3ea02f){return new BPromise(function(_0x1db0b4,_0x494263){return client[_0xb071('0xa')](_0x511bfd,_0x3ea02f)[_0xb071('0xb')](function(_0xabeb9){logger[_0xb071('0xc')](_0xb071('0xd'),_0xa41670,_0xb071('0xe'));logger[_0xb071('0xf')](_0xb071('0x10'),_0xa41670,_0xb071('0xe'),JSON[_0xb071('0x11')](_0xabeb9));if(_0xabeb9['error']){if(_0xabeb9[_0xb071('0x12')]['code']===0x1f4){logger[_0xb071('0x12')](_0xb071('0xd'),_0xa41670,_0xabeb9[_0xb071('0x12')][_0xb071('0x13')]);return _0x494263(_0xabeb9[_0xb071('0x12')]['message']);}logger[_0xb071('0x12')](_0xb071('0xd'),_0xa41670,_0xabeb9[_0xb071('0x12')][_0xb071('0x13')]);return _0x1db0b4(_0xabeb9[_0xb071('0x12')]['message']);}else{logger[_0xb071('0xc')](_0xb071('0xd'),_0xa41670,'request\x20sent');_0x1db0b4(_0xabeb9[_0xb071('0x14')][_0xb071('0x13')]);}})[_0xb071('0x15')](function(_0xdcc91){logger[_0xb071('0x12')](_0xb071('0xd'),_0xa41670,_0xdcc91);_0x494263(_0xdcc91);});});}
\ No newline at end of file
+var _0x348a=['request\x20sent','stringify','error','code','message','info','result','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','CmCustomField,\x20%s,\x20%s'];(function(_0x3a5625,_0x5df68b){var _0x2ff55e=function(_0x1e8d06){while(--_0x1e8d06){_0x3a5625['push'](_0x3a5625['shift']());}};_0x2ff55e(++_0x5df68b);}(_0x348a,0x1bc));var _0xa348=function(_0x1b8191,_0xf183e9){_0x1b8191=_0x1b8191-0x0;var _0x2ccc28=_0x348a[_0x1b8191];return _0x2ccc28;};'use strict';var _=require('lodash');var util=require(_0xa348('0x0'));var moment=require('moment');var BPromise=require(_0xa348('0x1'));var rs=require(_0xa348('0x2'));var fs=require('fs');var Redis=require(_0xa348('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xa348('0x4'));var logger=require(_0xa348('0x5'))('rpc');var config=require(_0xa348('0x6'));var jayson=require(_0xa348('0x7'));var client=jayson[_0xa348('0x8')][_0xa348('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x301a6c,_0x505e50,_0x274505){return new BPromise(function(_0x5d8353,_0x3d1260){return client[_0xa348('0xa')](_0x301a6c,_0x274505)['then'](function(_0x1186dd){logger['info'](_0xa348('0xb'),_0x505e50,_0xa348('0xc'));logger['debug']('CmCustomField,\x20%s,\x20%s,\x20%s',_0x505e50,_0xa348('0xc'),JSON[_0xa348('0xd')](_0x1186dd));if(_0x1186dd[_0xa348('0xe')]){if(_0x1186dd[_0xa348('0xe')][_0xa348('0xf')]===0x1f4){logger[_0xa348('0xe')](_0xa348('0xb'),_0x505e50,_0x1186dd['error'][_0xa348('0x10')]);return _0x3d1260(_0x1186dd[_0xa348('0xe')]['message']);}logger[_0xa348('0xe')](_0xa348('0xb'),_0x505e50,_0x1186dd[_0xa348('0xe')][_0xa348('0x10')]);return _0x5d8353(_0x1186dd[_0xa348('0xe')][_0xa348('0x10')]);}else{logger[_0xa348('0x11')](_0xa348('0xb'),_0x505e50,_0xa348('0xc'));_0x5d8353(_0x1186dd[_0xa348('0x12')][_0xa348('0x10')]);}})['catch'](function(_0x439dda){logger[_0xa348('0xe')](_0xa348('0xb'),_0x505e50,_0x439dda);_0x3d1260(_0x439dda);});});}
\ No newline at end of file
index fe04f42..95953be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc13c=['delete','destroy','exports','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','post','put'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xc13c,0x15c));var _0xcc13=function(_0x2b75b1,_0x207f1a){_0x2b75b1=_0x2b75b1-0x0;var _0x48e680=_0xc13c[_0x2b75b1];return _0x48e680;};'use strict';var multer=require('multer');var util=require(_0xcc13('0x0'));var path=require(_0xcc13('0x1'));var timeout=require('connect-timeout');var express=require(_0xcc13('0x2'));var router=express['Router']();var fs_extra=require(_0xcc13('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xcc13('0x4'));var config=require(_0xcc13('0x5'));var controller=require('./cmCustomField.controller');router[_0xcc13('0x6')]('/',auth[_0xcc13('0x7')](),controller['index']);router[_0xcc13('0x6')](_0xcc13('0x8'),auth['isAuthenticated'](),controller[_0xcc13('0x9')]);router[_0xcc13('0xa')]('/',auth[_0xcc13('0x7')](),controller['create']);router[_0xcc13('0xb')](_0xcc13('0x8'),auth[_0xcc13('0x7')](),controller['update']);router[_0xcc13('0xc')](_0xcc13('0x8'),auth[_0xcc13('0x7')](),controller[_0xcc13('0xd')]);module[_0xcc13('0xe')]=router;
\ No newline at end of file
+var _0x6334=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCustomField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x4d35f3,_0x19ba66){var _0x382fea=function(_0x2c2390){while(--_0x2c2390){_0x4d35f3['push'](_0x4d35f3['shift']());}};_0x382fea(++_0x19ba66);}(_0x6334,0x119));var _0x4633=function(_0x142020,_0x1f7233){_0x142020=_0x142020-0x0;var _0x40da8f=_0x6334[_0x142020];return _0x40da8f;};'use strict';var multer=require(_0x4633('0x0'));var util=require(_0x4633('0x1'));var path=require(_0x4633('0x2'));var timeout=require(_0x4633('0x3'));var express=require(_0x4633('0x4'));var router=express[_0x4633('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x4633('0x6'));var interaction=require(_0x4633('0x7'));var config=require(_0x4633('0x8'));var controller=require(_0x4633('0x9'));router[_0x4633('0xa')]('/',auth[_0x4633('0xb')](),controller[_0x4633('0xc')]);router['get'](_0x4633('0xd'),auth['isAuthenticated'](),controller[_0x4633('0xe')]);router[_0x4633('0xf')]('/',auth['isAuthenticated'](),controller[_0x4633('0x10')]);router[_0x4633('0x11')](_0x4633('0xd'),auth['isAuthenticated'](),controller[_0x4633('0x12')]);router[_0x4633('0x13')]('/:id',auth[_0x4633('0xb')](),controller[_0x4633('0x14')]);module[_0x4633('0x15')]=router;
\ No newline at end of file
index 7796499..5162c7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x365c=['INTEGER','BOOLEAN','DATE','contactListQueue','moment','exports','STRING','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x1285e0,_0x20560d){var _0x4dcb86=function(_0x3d70ea){while(--_0x3d70ea){_0x1285e0['push'](_0x1285e0['shift']());}};_0x4dcb86(++_0x20560d);}(_0x365c,0x12c));var _0xc365=function(_0x6cf117,_0x55110f){_0x6cf117=_0x6cf117-0x0;var _0x28423c=_0x365c[_0x6cf117];return _0x28423c;};'use strict';var moment=require(_0xc365('0x0'));var Sequelize=require('sequelize');module[_0xc365('0x1')]={'phone':{'type':Sequelize[_0xc365('0x2')],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()['format'](_0xc365('0x3'))},'countbusyretry':{'type':Sequelize[_0xc365('0x4')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xc365('0x4')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xc365('0x4')],'defaultValue':0x0},'callback':{'type':Sequelize[_0xc365('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xc365('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xc365('0x6')]},'priority':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0xc365('0x5')],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0xc365('0x4')],'unique':_0xc365('0x7')},'UserId':{'type':Sequelize['INTEGER']},'VoiceQueueId':{'type':Sequelize[_0xc365('0x4')],'unique':_0xc365('0x7')},'CampaignId':{'type':Sequelize[_0xc365('0x4')]},'countnosuchnumberretry':{'type':Sequelize[_0xc365('0x4')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xc365('0x4')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xc365('0x4')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xc365('0x4')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xc365('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x41c9=['UNSIGNED','contactListQueue','sequelize','STRING','BOOLEAN','YYYY-MM-DD\x20HH:mm:ss','INTEGER','DATE'];(function(_0x15a89f,_0x2ad1fe){var _0x2d7f5c=function(_0x239969){while(--_0x239969){_0x15a89f['push'](_0x15a89f['shift']());}};_0x2d7f5c(++_0x2ad1fe);}(_0x41c9,0xd2));var _0x941c=function(_0x19a257,_0x42b509){_0x19a257=_0x19a257-0x0;var _0x4b6e49=_0x41c9[_0x19a257];return _0x4b6e49;};'use strict';var moment=require('moment');var Sequelize=require(_0x941c('0x0'));module['exports']={'phone':{'type':Sequelize[_0x941c('0x1')],'allowNull':![]},'active':{'type':Sequelize[_0x941c('0x2')],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()['format'](_0x941c('0x3'))},'countbusyretry':{'type':Sequelize[_0x941c('0x4')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x941c('0x4')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'callback':{'type':Sequelize[_0x941c('0x2')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x941c('0x1')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x941c('0x5')]},'priority':{'type':Sequelize[_0x941c('0x4')](0x2)[_0x941c('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x941c('0x2')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x941c('0x4')],'unique':_0x941c('0x7')},'ListId':{'type':Sequelize[_0x941c('0x4')],'unique':_0x941c('0x7')},'UserId':{'type':Sequelize['INTEGER']},'VoiceQueueId':{'type':Sequelize[_0x941c('0x4')],'unique':'contactListQueue'},'CampaignId':{'type':Sequelize[_0x941c('0x4')]},'countnosuchnumberretry':{'type':Sequelize[_0x941c('0x4')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x941c('0x4')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x941c('0x4')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x941c('0x4')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x941c('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index e7299d7..7b4fad1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1229=['dataValues','createdAt','statedesc','deleted','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','ivr','CmContact','ContactId','firstName','isNil','calleridname','lastName','CmHopperFinal','getVoiceQueues','preview','sequelize','transaction','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','dialOrderByScheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','UPDATE','CmCompany','Company','CmList','List','Queue','dialActive','getOpenContacts','outbound','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../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','CmHopper','rawAttributes','fieldName','key','model','query','keys','filters','intersection','concat','$and','$or','$gt','$gte','$lt','$eq','$not','$notBetween','$in','$notIn','$like','$notLike','$iLike','$notILike','$contains','$contained','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','merge','options','includeAll','findAll','rows','catch','params','fields','length','include','find','create','body','describe','VoiceQueueId','CampaignId','VoiceQueue','omit'];(function(_0x4814a7,_0x1a084d){var _0x406700=function(_0x77483b){while(--_0x77483b){_0x4814a7['push'](_0x4814a7['shift']());}};_0x406700(++_0x1a084d);}(_0x1229,0xcb));var _0x9122=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0x1229[_0x2064e5];return _0x21a233;};'use strict';var emlformat=require(_0x9122('0x0'));var rimraf=require(_0x9122('0x1'));var zipdir=require(_0x9122('0x2'));var jsonpatch=require(_0x9122('0x3'));var rp=require(_0x9122('0x4'));var moment=require(_0x9122('0x5'));var BPromise=require(_0x9122('0x6'));var Mustache=require(_0x9122('0x7'));var util=require('util');var path=require(_0x9122('0x8'));var sox=require(_0x9122('0x9'));var csv=require(_0x9122('0xa'));var ejs=require(_0x9122('0xb'));var fs=require('fs');var fs_extra=require(_0x9122('0xc'));var _=require(_0x9122('0xd'));var squel=require(_0x9122('0xe'));var crypto=require('crypto');var jsforce=require(_0x9122('0xf'));var deskjs=require(_0x9122('0x10'));var toCsv=require('to-csv');var querystring=require(_0x9122('0x11'));var Papa=require('papaparse');var Redis=require(_0x9122('0x12'));var authService=require(_0x9122('0x13'));var qs=require(_0x9122('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9122('0x15'));var logger=require(_0x9122('0x16'))('api');var utils=require(_0x9122('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x9122('0x18'));var db=require(_0x9122('0x19'))['db'];function respondWithStatusCode(_0x4e4d42,_0x588df4){_0x588df4=_0x588df4||0xcc;return function(_0x1cc371){if(_0x1cc371){return _0x4e4d42[_0x9122('0x1a')](_0x588df4);}return _0x4e4d42[_0x9122('0x1b')](_0x588df4)[_0x9122('0x1c')]();};}function respondWithResult(_0x3bd6f7,_0x2a4e60){_0x2a4e60=_0x2a4e60||0xc8;return function(_0x563d31){if(_0x563d31){return _0x3bd6f7['status'](_0x2a4e60)[_0x9122('0x1d')](_0x563d31);}};}function respondWithFilteredResult(_0x1f8cf9,_0x2ed1b1){return function(_0x2c3609){if(_0x2c3609){var _0x1ce23c=typeof _0x2ed1b1[_0x9122('0x1e')]===_0x9122('0x1f')&&typeof _0x2ed1b1[_0x9122('0x20')]===_0x9122('0x1f');var _0x2e251=_0x2c3609[_0x9122('0x21')];var _0x5a84c0=_0x1ce23c?0x0:_0x2ed1b1['offset'];var _0x4c626d=_0x1ce23c?_0x2c3609[_0x9122('0x21')]:_0x2ed1b1[_0x9122('0x1e')]+_0x2ed1b1[_0x9122('0x20')];var _0x513677;if(_0x4c626d>=_0x2e251){_0x4c626d=_0x2e251;_0x513677=0xc8;}else{_0x513677=0xce;}_0x1f8cf9['status'](_0x513677);return _0x1f8cf9[_0x9122('0x22')](_0x9122('0x23'),_0x5a84c0+'-'+_0x4c626d+'/'+_0x2e251)['json'](_0x2c3609);}return null;};}function patchUpdates(_0x47393f){return function(_0x9a3baf){try{jsonpatch[_0x9122('0x24')](_0x9a3baf,_0x47393f,!![]);}catch(_0x416cd2){return BPromise[_0x9122('0x25')](_0x416cd2);}return _0x9a3baf[_0x9122('0x26')]();};}function saveUpdates(_0x366be6,_0x2b2b37){return function(_0x1c9c31){if(_0x1c9c31){return _0x1c9c31[_0x9122('0x27')](_0x366be6)[_0x9122('0x28')](function(_0x2012a0){return _0x2012a0;});}return null;};}function removeEntity(_0x707512,_0x42672c){return function(_0x56f57b){if(_0x56f57b){return _0x56f57b[_0x9122('0x29')]()['then'](function(){_0x707512[_0x9122('0x1b')](0xcc)[_0x9122('0x1c')]();});}};}function handleEntityNotFound(_0xc84328,_0x2e78cd){return function(_0xfb562a){if(!_0xfb562a){_0xc84328['sendStatus'](0x194);}return _0xfb562a;};}function handleError(_0x43d05f,_0x22fd94){_0x22fd94=_0x22fd94||0x1f4;return function(_0x4b0c0f){logger[_0x9122('0x2a')](_0x4b0c0f[_0x9122('0x2b')]);if(_0x4b0c0f[_0x9122('0x2c')]){delete _0x4b0c0f[_0x9122('0x2c')];}_0x43d05f['status'](_0x22fd94)[_0x9122('0x2d')](_0x4b0c0f);};}exports[_0x9122('0x2e')]=function(_0x2149dc,_0x3a777f){var _0x4e672a={},_0x1de5d9={},_0x1659e0={'count':0x0,'rows':[]};var _0x378d2a=_[_0x9122('0x2f')](db[_0x9122('0x30')][_0x9122('0x31')],function(_0x4b4892){return{'name':_0x4b4892[_0x9122('0x32')],'type':_0x4b4892['type'][_0x9122('0x33')]};});_0x1de5d9[_0x9122('0x34')]=_[_0x9122('0x2f')](_0x378d2a,_0x9122('0x2c'));_0x1de5d9[_0x9122('0x35')]=_[_0x9122('0x36')](_0x2149dc['query']);_0x1de5d9[_0x9122('0x37')]=_[_0x9122('0x38')](_0x1de5d9[_0x9122('0x34')],_0x1de5d9[_0x9122('0x35')]);_0x1de5d9[_0x9122('0x37')]=_[_0x9122('0x39')](_0x1de5d9[_0x9122('0x37')],[_0x9122('0x3a'),_0x9122('0x3b'),_0x9122('0x3c'),_0x9122('0x3d'),_0x9122('0x3e'),'$lte','$ne',_0x9122('0x3f'),_0x9122('0x40'),'$between',_0x9122('0x41'),_0x9122('0x42'),_0x9122('0x43'),_0x9122('0x44'),_0x9122('0x45'),_0x9122('0x46'),_0x9122('0x47'),_0x9122('0x44'),'$overlap',_0x9122('0x48'),_0x9122('0x49'),'$any']);_0x4e672a[_0x9122('0x4a')]=_['intersection'](_0x1de5d9[_0x9122('0x34')],qs['fields'](_0x2149dc[_0x9122('0x35')]['fields']));_0x4e672a['attributes']=_0x4e672a[_0x9122('0x4a')]['length']?_0x4e672a[_0x9122('0x4a')]:_0x1de5d9[_0x9122('0x34')];if(!_0x2149dc[_0x9122('0x35')][_0x9122('0x4b')](_0x9122('0x4c'))){_0x4e672a[_0x9122('0x20')]=qs[_0x9122('0x20')](_0x2149dc[_0x9122('0x35')]['limit']);_0x4e672a['offset']=qs['offset'](_0x2149dc['query']['offset']);}_0x4e672a[_0x9122('0x4d')]=qs['sort'](_0x2149dc['query'][_0x9122('0x4e')]);_0x4e672a[_0x9122('0x4f')]=qs[_0x9122('0x37')](_[_0x9122('0x50')](_0x2149dc['query'],_0x1de5d9[_0x9122('0x37')]),_0x378d2a);if(_0x2149dc['query'][_0x9122('0x51')]){_0x4e672a[_0x9122('0x4f')]=_['merge'](_0x4e672a[_0x9122('0x4f')],{'$or':_['map'](_0x378d2a,function(_0x2394f0){if(_0x2394f0[_0x9122('0x52')]!=='VIRTUAL'){var _0x95d0dc={};_0x95d0dc[_0x2394f0[_0x9122('0x2c')]]={'$like':'%'+_0x2149dc[_0x9122('0x35')][_0x9122('0x51')]+'%'};return _0x95d0dc;}})});}_0x4e672a=_[_0x9122('0x53')]({},_0x4e672a,_0x2149dc[_0x9122('0x54')]);var _0x31f5cd={'where':_0x4e672a[_0x9122('0x4f')]};return db['CmHopper'][_0x9122('0x21')](_0x31f5cd)[_0x9122('0x28')](function(_0x1e71cc){_0x1659e0[_0x9122('0x21')]=_0x1e71cc;if(_0x2149dc[_0x9122('0x35')][_0x9122('0x55')]){_0x4e672a['include']=[{'all':!![]}];}return db[_0x9122('0x30')][_0x9122('0x56')](_0x4e672a);})[_0x9122('0x28')](function(_0x2e10d4){_0x1659e0[_0x9122('0x57')]=_0x2e10d4;return _0x1659e0;})[_0x9122('0x28')](respondWithFilteredResult(_0x3a777f,_0x4e672a))[_0x9122('0x58')](handleError(_0x3a777f,null));};exports['show']=function(_0x1adeb5,_0x52e485){var _0x37299c={'raw':!![],'where':{'id':_0x1adeb5[_0x9122('0x59')]['id']}},_0x3e5d51={};_0x3e5d51[_0x9122('0x34')]=_[_0x9122('0x36')](db[_0x9122('0x30')]['rawAttributes']);_0x3e5d51[_0x9122('0x35')]=_['keys'](_0x1adeb5['query']);_0x3e5d51[_0x9122('0x37')]=_[_0x9122('0x38')](_0x3e5d51[_0x9122('0x34')],_0x3e5d51['query']);_0x37299c['attributes']=_[_0x9122('0x38')](_0x3e5d51[_0x9122('0x34')],qs[_0x9122('0x5a')](_0x1adeb5[_0x9122('0x35')][_0x9122('0x5a')]));_0x37299c[_0x9122('0x4a')]=_0x37299c[_0x9122('0x4a')][_0x9122('0x5b')]?_0x37299c[_0x9122('0x4a')]:_0x3e5d51[_0x9122('0x34')];if(_0x1adeb5[_0x9122('0x35')][_0x9122('0x55')]){_0x37299c[_0x9122('0x5c')]=[{'all':!![]}];}_0x37299c=_[_0x9122('0x53')]({},_0x37299c,_0x1adeb5[_0x9122('0x54')]);return db['CmHopper'][_0x9122('0x5d')](_0x37299c)[_0x9122('0x28')](handleEntityNotFound(_0x52e485,null))['then'](respondWithResult(_0x52e485,null))[_0x9122('0x58')](handleError(_0x52e485,null));};exports[_0x9122('0x5e')]=function(_0x12b16f,_0x35616c){return db[_0x9122('0x30')]['create'](_0x12b16f[_0x9122('0x5f')],{})[_0x9122('0x28')](respondWithResult(_0x35616c,0xc9))[_0x9122('0x58')](handleError(_0x35616c,null));};exports['update']=function(_0x5c798f,_0x241deb){if(_0x5c798f['body']['id']){delete _0x5c798f[_0x9122('0x5f')]['id'];}return db[_0x9122('0x30')][_0x9122('0x5d')]({'where':{'id':_0x5c798f[_0x9122('0x59')]['id']}})[_0x9122('0x28')](handleEntityNotFound(_0x241deb,null))[_0x9122('0x28')](saveUpdates(_0x5c798f[_0x9122('0x5f')],null))['then'](respondWithResult(_0x241deb,null))[_0x9122('0x58')](handleError(_0x241deb,null));};exports[_0x9122('0x60')]=function(_0x43b2a1,_0x365b65){return db[_0x9122('0x30')][_0x9122('0x60')]()['then'](respondWithResult(_0x365b65,null))[_0x9122('0x58')](handleError(_0x365b65,null));};exports[_0x9122('0x29')]=function(_0x4dc7fd,_0x1d29ff){var _0x453d63;return db[_0x9122('0x30')]['find']({'where':{'id':_0x4dc7fd[_0x9122('0x59')]['id']}})[_0x9122('0x28')](handleEntityNotFound(_0x1d29ff,null))[_0x9122('0x28')](function(_0x4ff9b4){if(_0x4ff9b4){return _0x4ff9b4[_0x9122('0x29')]()[_0x9122('0x28')](function(_0x5771af){return _0x5771af;});}})[_0x9122('0x28')](function(_0x3aa422){_0x453d63=_0x3aa422;if(_0x3aa422){if(_0x3aa422[_0x9122('0x61')]||_0x3aa422[_0x9122('0x62')]){return db[_0x3aa422['VoiceQueueId']?_0x9122('0x63'):'Campaign'][_0x9122('0x5d')]({'where':{'id':_0x3aa422[_0x9122('0x61')]?_0x3aa422[_0x9122('0x61')]:_0x3aa422[_0x9122('0x62')]},'attributes':['id','name'],'raw':!![]});}}})[_0x9122('0x28')](function(_0x770304){var _0xef52e4={};if(_0x770304){_[_0x9122('0x53')](_0xef52e4,_[_0x9122('0x64')](_0x453d63[_0x9122('0x65')],[_0x9122('0x66'),'updatedAt','id']));_0xef52e4['state']=0x15;_0xef52e4[_0x9122('0x67')]=_0x9122('0x68');_0xef52e4['campaign']=_0x770304['name'];_0xef52e4[_0x9122('0x69')]=_0x4dc7fd[_0x9122('0x6a')][_0x9122('0x2c')];_0xef52e4[_0x9122('0x6b')]=_0x4dc7fd[_0x9122('0x6a')]['id'];_0xef52e4['deleted']=!![];_0xef52e4[_0x9122('0x6c')]=moment()[_0x9122('0x6d')](_0x9122('0x6e'));_0xef52e4[_0x9122('0x6f')]=_0x453d63[_0x9122('0x70')];_0xef52e4['campaigntype']=_0x453d63[_0x9122('0x61')]?'queue':_0x9122('0x71');return db[_0x9122('0x72')]['find']({'where':{'id':_0xef52e4[_0x9122('0x73')]},'attributes':[_0x9122('0x74'),'lastName']})[_0x9122('0x28')](function(_0x25439a){if(!_[_0x9122('0x75')](_0x1d29ff)&&!_[_0x9122('0x75')](_0x25439a[_0x9122('0x74')])){_0xef52e4[_0x9122('0x76')]=_0x25439a['firstName'];if(!_[_0x9122('0x75')](_0x25439a[_0x9122('0x77')])){_0xef52e4[_0x9122('0x76')]+='\x20'+_0x25439a[_0x9122('0x77')];}}})['finally'](function(){return db[_0x9122('0x78')]['create'](_0xef52e4);});}})['then'](function(){return _0x1d29ff[_0x9122('0x1b')](0xcc)['end']();})[_0x9122('0x58')](handleError(_0x1d29ff,null));};exports['getPreview']=function(_0x306d31,_0xe80e0b,_0x13ccc4){var _0x720920=[];return db['CmContact'][_0x9122('0x60')]()[_0x9122('0x28')](function(_0x39caaa){_0x720920=_[_0x9122('0x36')](_0x39caaa);return _0x306d31['user'][_0x9122('0x79')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x9122('0x7a')},'attributes':['id','dialOrderByScheduledAt'],'raw':!![]});})[_0x9122('0x28')](function(_0x4aa6be){if(_0x4aa6be&&_0x4aa6be[_0x9122('0x5b')]){return db[_0x9122('0x7b')][_0x9122('0x7c')](function(_0x361cb0){var _0x37721d={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x9122('0x6d')](_0x9122('0x6e'))},'VoiceQueueId':{'$in':_[_0x9122('0x2f')](_0x4aa6be,'id')},'$or':[{'UserId':null},{'UserId':_0x306d31['user']['id']}]};var _0x498106=[];if(_0x306d31[_0x9122('0x5f')][_0x9122('0x7d')]&&_0x306d31[_0x9122('0x5f')][_0x9122('0x7d')]===_0x9122('0x7e')){if(!_[_0x9122('0x7f')](_0x306d31[_0x9122('0x5f')][_0x9122('0x80')])){_0x37721d['id']={'$in':_0x306d31['body'][_0x9122('0x80')]};}_0x498106=[[_0x9122('0x81'),_0x9122('0x82')],[_0x9122('0x83'),_0x4aa6be[0x0][_0x9122('0x84')]===_0x9122('0x82')?_0x9122('0x85'):_0x9122('0x82')],db[_0x9122('0x7b')][_0x9122('0x86')](_0x9122('0x87')),['id',_0x9122('0x85')]];}else{if(!_[_0x9122('0x7f')](_0x306d31[_0x9122('0x5f')][_0x9122('0x80')])){_0x37721d['id']={'$notIn':_0x306d31['body'][_0x9122('0x80')]};}_0x498106=[[_0x9122('0x81'),_0x9122('0x85')],[_0x9122('0x83'),_0x4aa6be[0x0][_0x9122('0x84')]],db[_0x9122('0x7b')][_0x9122('0x86')](_0x9122('0x88')),['id','ASC']];}return db[_0x9122('0x30')][_0x9122('0x89')]({'attributes':['id',_0x9122('0x8a')],'where':_0x37721d,'order':_0x498106,'transaction':_0x361cb0,'lock':_0x361cb0[_0x9122('0x8b')][_0x9122('0x8c')],'include':[{'model':db[_0x9122('0x72')],'as':'Contact','attributes':_0x720920,'include':[{'model':db[_0x9122('0x8d')],'as':_0x9122('0x8e'),'attributes':['id','name']}]},{'model':db[_0x9122('0x8f')],'as':_0x9122('0x90'),'attributes':['id',_0x9122('0x2c')]},{'model':db['VoiceQueue'],'as':_0x9122('0x91'),'attributes':['id','name',_0x9122('0x92')]}]})[_0x9122('0x28')](function(_0x318327){if(_0x318327){return _0x318327[_0x9122('0x27')]({'UserId':_0x306d31[_0x9122('0x6a')]['id']},{'transaction':_0x361cb0});}});});}})[_0x9122('0x28')](handleEntityNotFound(_0xe80e0b,null))[_0x9122('0x28')](respondWithResult(_0xe80e0b,null))[_0x9122('0x58')](handleError(_0xe80e0b,null));};exports[_0x9122('0x93')]=function(_0x9f6262,_0x352610,_0x3936f9){return _0x9f6262[_0x9122('0x6a')][_0x9122('0x79')]({'where':{'type':_0x9122('0x94'),'dialActive':!![],'dialMethod':_0x9122('0x7a')},'attributes':['id'],'raw':!![]})['then'](function(_0x79a77f){if(_0x79a77f&&_0x79a77f['length']){return db[_0x9122('0x30')][_0x9122('0x21')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x9122('0x6d')](_0x9122('0x6e'))},'VoiceQueueId':{'$in':_[_0x9122('0x2f')](_0x79a77f,'id')},'$or':[{'UserId':null},{'UserId':_0x9f6262[_0x9122('0x6a')]['id']}]}});}return 0x0;})[_0x9122('0x28')](function(_0x20e2b2){if(!_['isNil'](_0x20e2b2)&&_[_0x9122('0x95')](_0x20e2b2)){return _0x352610[_0x9122('0x1b')](0xc8)[_0x9122('0x1d')]({'contacts':_0x20e2b2});}else{logger[_0x9122('0x2a')](_0x9122('0x96'),_0x9122('0x93'),0x194,_0x9122('0x97'));_0x352610['sendStatus'](0x194);}})['catch'](handleError(_0x352610,null));};
\ No newline at end of file
+var _0x2e72=['CmHopperFinal','getPreview','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','sequelize','transaction','map','direction','isEmpty','hopperIds','priority','scheduledAt','DESC','ASC','COALESCE(CmHopper.UserId,\x200)\x20ASC','literal','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','UPDATE','Contact','CmCompany','Company','CmList','List','Queue','dialActive','getOpenContacts','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','sendStatus','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','save','update','then','end','error','stack','name','send','CmHopper','rawAttributes','fieldName','type','key','model','query','filters','concat','$and','$gt','$gte','$ne','$not','$between','$in','$like','$notLike','$iLike','$notILike','$overlap','$contained','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','findAll','rows','catch','params','keys','intersection','fields','includeAll','include','merge','options','find','create','body','describe','destroy','VoiceQueueId','CampaignId','VoiceQueue','omit','dataValues','updatedAt','state','deleted','campaign','membername','user','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','CmContact','ContactId','firstName','lastName','isNil','calleridname','finally'];(function(_0x54eab6,_0x5e262f){var _0x1e7435=function(_0x468c91){while(--_0x468c91){_0x54eab6['push'](_0x54eab6['shift']());}};_0x1e7435(++_0x5e262f);}(_0x2e72,0x147));var _0x22e7=function(_0x4f74a5,_0x1fd979){_0x4f74a5=_0x4f74a5-0x0;var _0x5be8b2=_0x2e72[_0x4f74a5];return _0x5be8b2;};'use strict';var emlformat=require(_0x22e7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x22e7('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x22e7('0x2'));var moment=require(_0x22e7('0x3'));var BPromise=require(_0x22e7('0x4'));var Mustache=require(_0x22e7('0x5'));var util=require(_0x22e7('0x6'));var path=require(_0x22e7('0x7'));var sox=require('sox');var csv=require(_0x22e7('0x8'));var ejs=require(_0x22e7('0x9'));var fs=require('fs');var fs_extra=require(_0x22e7('0xa'));var _=require(_0x22e7('0xb'));var squel=require(_0x22e7('0xc'));var crypto=require(_0x22e7('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x22e7('0x8'));var querystring=require(_0x22e7('0xe'));var Papa=require('papaparse');var Redis=require(_0x22e7('0xf'));var authService=require(_0x22e7('0x10'));var qs=require(_0x22e7('0x11'));var as=require(_0x22e7('0x12'));var hardwareService=require(_0x22e7('0x13'));var logger=require(_0x22e7('0x14'))(_0x22e7('0x15'));var utils=require(_0x22e7('0x16'));var config=require(_0x22e7('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x22e7('0x18'))['db'];function respondWithStatusCode(_0x94ee9c,_0x4fcc84){_0x4fcc84=_0x4fcc84||0xcc;return function(_0x3a8dc2){if(_0x3a8dc2){return _0x94ee9c['sendStatus'](_0x4fcc84);}return _0x94ee9c[_0x22e7('0x19')](_0x4fcc84)['end']();};}function respondWithResult(_0x1d3bd8,_0x10918b){_0x10918b=_0x10918b||0xc8;return function(_0x4d78ec){if(_0x4d78ec){return _0x1d3bd8[_0x22e7('0x19')](_0x10918b)[_0x22e7('0x1a')](_0x4d78ec);}};}function respondWithFilteredResult(_0x133525,_0xef8cc0){return function(_0x5dd67f){if(_0x5dd67f){var _0x535750=typeof _0xef8cc0[_0x22e7('0x1b')]===_0x22e7('0x1c')&&typeof _0xef8cc0[_0x22e7('0x1d')]===_0x22e7('0x1c');var _0x185d4c=_0x5dd67f[_0x22e7('0x1e')];var _0x40df63=_0x535750?0x0:_0xef8cc0[_0x22e7('0x1b')];var _0x5e9170=_0x535750?_0x5dd67f[_0x22e7('0x1e')]:_0xef8cc0[_0x22e7('0x1b')]+_0xef8cc0[_0x22e7('0x1d')];var _0x4037eb;if(_0x5e9170>=_0x185d4c){_0x5e9170=_0x185d4c;_0x4037eb=0xc8;}else{_0x4037eb=0xce;}_0x133525[_0x22e7('0x19')](_0x4037eb);return _0x133525[_0x22e7('0x1f')](_0x22e7('0x20'),_0x40df63+'-'+_0x5e9170+'/'+_0x185d4c)[_0x22e7('0x1a')](_0x5dd67f);}return null;};}function patchUpdates(_0x279595){return function(_0x17e31f){try{jsonpatch['apply'](_0x17e31f,_0x279595,!![]);}catch(_0x10418c){return BPromise['reject'](_0x10418c);}return _0x17e31f[_0x22e7('0x21')]();};}function saveUpdates(_0x178397,_0x50d5da){return function(_0x1eab5c){if(_0x1eab5c){return _0x1eab5c[_0x22e7('0x22')](_0x178397)['then'](function(_0x18ff10){return _0x18ff10;});}return null;};}function removeEntity(_0xf4111,_0x195a51){return function(_0x21c08a){if(_0x21c08a){return _0x21c08a['destroy']()[_0x22e7('0x23')](function(){_0xf4111[_0x22e7('0x19')](0xcc)[_0x22e7('0x24')]();});}};}function handleEntityNotFound(_0x5971bd,_0x39bf9a){return function(_0x19e2f4){if(!_0x19e2f4){_0x5971bd['sendStatus'](0x194);}return _0x19e2f4;};}function handleError(_0x44750c,_0x3fe93c){_0x3fe93c=_0x3fe93c||0x1f4;return function(_0xcd91e7){logger[_0x22e7('0x25')](_0xcd91e7[_0x22e7('0x26')]);if(_0xcd91e7[_0x22e7('0x27')]){delete _0xcd91e7[_0x22e7('0x27')];}_0x44750c['status'](_0x3fe93c)[_0x22e7('0x28')](_0xcd91e7);};}exports['index']=function(_0x283290,_0x3b18d1){var _0x15f42c={},_0x3c85c7={},_0x3b2375={'count':0x0,'rows':[]};var _0x5dd5cf=_['map'](db[_0x22e7('0x29')][_0x22e7('0x2a')],function(_0x3edfd8){return{'name':_0x3edfd8[_0x22e7('0x2b')],'type':_0x3edfd8[_0x22e7('0x2c')][_0x22e7('0x2d')]};});_0x3c85c7[_0x22e7('0x2e')]=_['map'](_0x5dd5cf,_0x22e7('0x27'));_0x3c85c7[_0x22e7('0x2f')]=_['keys'](_0x283290[_0x22e7('0x2f')]);_0x3c85c7[_0x22e7('0x30')]=_['intersection'](_0x3c85c7[_0x22e7('0x2e')],_0x3c85c7[_0x22e7('0x2f')]);_0x3c85c7[_0x22e7('0x30')]=_[_0x22e7('0x31')](_0x3c85c7[_0x22e7('0x30')],[_0x22e7('0x32'),'$or',_0x22e7('0x33'),_0x22e7('0x34'),'$lt','$lte',_0x22e7('0x35'),'$eq',_0x22e7('0x36'),_0x22e7('0x37'),'$notBetween',_0x22e7('0x38'),'$notIn',_0x22e7('0x39'),_0x22e7('0x3a'),_0x22e7('0x3b'),_0x22e7('0x3c'),_0x22e7('0x39'),_0x22e7('0x3d'),'$contains',_0x22e7('0x3e'),'$any']);_0x15f42c[_0x22e7('0x3f')]=_['intersection'](_0x3c85c7[_0x22e7('0x2e')],qs['fields'](_0x283290[_0x22e7('0x2f')]['fields']));_0x15f42c[_0x22e7('0x3f')]=_0x15f42c[_0x22e7('0x3f')][_0x22e7('0x40')]?_0x15f42c['attributes']:_0x3c85c7['model'];if(!_0x283290[_0x22e7('0x2f')][_0x22e7('0x41')](_0x22e7('0x42'))){_0x15f42c[_0x22e7('0x1d')]=qs[_0x22e7('0x1d')](_0x283290[_0x22e7('0x2f')][_0x22e7('0x1d')]);_0x15f42c[_0x22e7('0x1b')]=qs['offset'](_0x283290[_0x22e7('0x2f')][_0x22e7('0x1b')]);}_0x15f42c[_0x22e7('0x43')]=qs[_0x22e7('0x44')](_0x283290[_0x22e7('0x2f')][_0x22e7('0x44')]);_0x15f42c[_0x22e7('0x45')]=qs[_0x22e7('0x30')](_[_0x22e7('0x46')](_0x283290[_0x22e7('0x2f')],_0x3c85c7[_0x22e7('0x30')]),_0x5dd5cf);if(_0x283290[_0x22e7('0x2f')][_0x22e7('0x47')]){_0x15f42c[_0x22e7('0x45')]=_['merge'](_0x15f42c[_0x22e7('0x45')],{'$or':_['map'](_0x5dd5cf,function(_0x224736){if(_0x224736['type']!==_0x22e7('0x48')){var _0x2be5b8={};_0x2be5b8[_0x224736['name']]={'$like':'%'+_0x283290['query']['filter']+'%'};return _0x2be5b8;}})});}_0x15f42c=_['merge']({},_0x15f42c,_0x283290['options']);var _0x3ae674={'where':_0x15f42c['where']};return db[_0x22e7('0x29')][_0x22e7('0x1e')](_0x3ae674)[_0x22e7('0x23')](function(_0x4b4622){_0x3b2375[_0x22e7('0x1e')]=_0x4b4622;if(_0x283290[_0x22e7('0x2f')]['includeAll']){_0x15f42c['include']=[{'all':!![]}];}return db['CmHopper'][_0x22e7('0x49')](_0x15f42c);})[_0x22e7('0x23')](function(_0x3a6438){_0x3b2375[_0x22e7('0x4a')]=_0x3a6438;return _0x3b2375;})[_0x22e7('0x23')](respondWithFilteredResult(_0x3b18d1,_0x15f42c))[_0x22e7('0x4b')](handleError(_0x3b18d1,null));};exports['show']=function(_0xc069de,_0x556e13){var _0x522cbf={'raw':!![],'where':{'id':_0xc069de[_0x22e7('0x4c')]['id']}},_0x381faf={};_0x381faf['model']=_[_0x22e7('0x4d')](db[_0x22e7('0x29')][_0x22e7('0x2a')]);_0x381faf[_0x22e7('0x2f')]=_[_0x22e7('0x4d')](_0xc069de['query']);_0x381faf['filters']=_['intersection'](_0x381faf[_0x22e7('0x2e')],_0x381faf[_0x22e7('0x2f')]);_0x522cbf[_0x22e7('0x3f')]=_[_0x22e7('0x4e')](_0x381faf[_0x22e7('0x2e')],qs[_0x22e7('0x4f')](_0xc069de['query'][_0x22e7('0x4f')]));_0x522cbf[_0x22e7('0x3f')]=_0x522cbf['attributes'][_0x22e7('0x40')]?_0x522cbf[_0x22e7('0x3f')]:_0x381faf[_0x22e7('0x2e')];if(_0xc069de[_0x22e7('0x2f')][_0x22e7('0x50')]){_0x522cbf[_0x22e7('0x51')]=[{'all':!![]}];}_0x522cbf=_[_0x22e7('0x52')]({},_0x522cbf,_0xc069de[_0x22e7('0x53')]);return db[_0x22e7('0x29')][_0x22e7('0x54')](_0x522cbf)[_0x22e7('0x23')](handleEntityNotFound(_0x556e13,null))['then'](respondWithResult(_0x556e13,null))[_0x22e7('0x4b')](handleError(_0x556e13,null));};exports[_0x22e7('0x55')]=function(_0x468193,_0x190a7a){return db['CmHopper'][_0x22e7('0x55')](_0x468193[_0x22e7('0x56')],{})[_0x22e7('0x23')](respondWithResult(_0x190a7a,0xc9))[_0x22e7('0x4b')](handleError(_0x190a7a,null));};exports['update']=function(_0x143f88,_0x398d95){if(_0x143f88[_0x22e7('0x56')]['id']){delete _0x143f88[_0x22e7('0x56')]['id'];}return db['CmHopper'][_0x22e7('0x54')]({'where':{'id':_0x143f88[_0x22e7('0x4c')]['id']}})[_0x22e7('0x23')](handleEntityNotFound(_0x398d95,null))[_0x22e7('0x23')](saveUpdates(_0x143f88['body'],null))[_0x22e7('0x23')](respondWithResult(_0x398d95,null))[_0x22e7('0x4b')](handleError(_0x398d95,null));};exports[_0x22e7('0x57')]=function(_0x405a3,_0x4a474c){return db[_0x22e7('0x29')][_0x22e7('0x57')]()[_0x22e7('0x23')](respondWithResult(_0x4a474c,null))['catch'](handleError(_0x4a474c,null));};exports[_0x22e7('0x58')]=function(_0x1d3baf,_0x1a67fd){var _0x55d2f6;return db[_0x22e7('0x29')][_0x22e7('0x54')]({'where':{'id':_0x1d3baf[_0x22e7('0x4c')]['id']}})[_0x22e7('0x23')](handleEntityNotFound(_0x1a67fd,null))[_0x22e7('0x23')](function(_0x3a2f8a){if(_0x3a2f8a){return _0x3a2f8a['destroy']()[_0x22e7('0x23')](function(_0x30438b){return _0x30438b;});}})[_0x22e7('0x23')](function(_0x35b67c){_0x55d2f6=_0x35b67c;if(_0x35b67c){if(_0x35b67c[_0x22e7('0x59')]||_0x35b67c[_0x22e7('0x5a')]){return db[_0x35b67c[_0x22e7('0x59')]?_0x22e7('0x5b'):'Campaign'][_0x22e7('0x54')]({'where':{'id':_0x35b67c[_0x22e7('0x59')]?_0x35b67c['VoiceQueueId']:_0x35b67c[_0x22e7('0x5a')]},'attributes':['id',_0x22e7('0x27')],'raw':!![]});}}})[_0x22e7('0x23')](function(_0x12aafb){var _0x867f2a={};if(_0x12aafb){_[_0x22e7('0x52')](_0x867f2a,_[_0x22e7('0x5c')](_0x55d2f6[_0x22e7('0x5d')],['createdAt',_0x22e7('0x5e'),'id']));_0x867f2a[_0x22e7('0x5f')]=0x15;_0x867f2a['statedesc']=_0x22e7('0x60');_0x867f2a[_0x22e7('0x61')]=_0x12aafb[_0x22e7('0x27')];_0x867f2a[_0x22e7('0x62')]=_0x1d3baf['user'][_0x22e7('0x27')];_0x867f2a['UserId']=_0x1d3baf[_0x22e7('0x63')]['id'];_0x867f2a['deleted']=!![];_0x867f2a[_0x22e7('0x64')]=moment()[_0x22e7('0x65')](_0x22e7('0x66'));_0x867f2a[_0x22e7('0x67')]=_0x55d2f6[_0x22e7('0x68')];_0x867f2a[_0x22e7('0x69')]=_0x55d2f6[_0x22e7('0x59')]?_0x22e7('0x6a'):'ivr';return db[_0x22e7('0x6b')][_0x22e7('0x54')]({'where':{'id':_0x867f2a[_0x22e7('0x6c')]},'attributes':[_0x22e7('0x6d'),_0x22e7('0x6e')]})[_0x22e7('0x23')](function(_0x3432e4){if(!_[_0x22e7('0x6f')](_0x1a67fd)&&!_[_0x22e7('0x6f')](_0x3432e4[_0x22e7('0x6d')])){_0x867f2a[_0x22e7('0x70')]=_0x3432e4[_0x22e7('0x6d')];if(!_[_0x22e7('0x6f')](_0x3432e4[_0x22e7('0x6e')])){_0x867f2a[_0x22e7('0x70')]+='\x20'+_0x3432e4[_0x22e7('0x6e')];}}})[_0x22e7('0x71')](function(){return db[_0x22e7('0x72')][_0x22e7('0x55')](_0x867f2a);});}})[_0x22e7('0x23')](function(){return _0x1a67fd[_0x22e7('0x19')](0xcc)[_0x22e7('0x24')]();})[_0x22e7('0x4b')](handleError(_0x1a67fd,null));};exports[_0x22e7('0x73')]=function(_0x1b4fcd,_0x1758e6,_0x23c673){var _0x1d361e=[];return db[_0x22e7('0x6b')][_0x22e7('0x57')]()[_0x22e7('0x23')](function(_0x295cbb){_0x1d361e=_[_0x22e7('0x4d')](_0x295cbb);return _0x1b4fcd[_0x22e7('0x63')][_0x22e7('0x74')]({'where':{'type':_0x22e7('0x75'),'dialActive':!![],'dialMethod':_0x22e7('0x76')},'attributes':['id',_0x22e7('0x77')],'raw':!![]});})['then'](function(_0x5a161b){if(_0x5a161b&&_0x5a161b[_0x22e7('0x40')]){return db[_0x22e7('0x78')][_0x22e7('0x79')](function(_0x3d1419){var _0x2d12ae={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x22e7('0x65')](_0x22e7('0x66'))},'VoiceQueueId':{'$in':_[_0x22e7('0x7a')](_0x5a161b,'id')},'$or':[{'UserId':null},{'UserId':_0x1b4fcd[_0x22e7('0x63')]['id']}]};var _0x31bba5=[];if(_0x1b4fcd[_0x22e7('0x56')][_0x22e7('0x7b')]&&_0x1b4fcd[_0x22e7('0x56')][_0x22e7('0x7b')]==='prev'){if(!_[_0x22e7('0x7c')](_0x1b4fcd['body'][_0x22e7('0x7d')])){_0x2d12ae['id']={'$in':_0x1b4fcd[_0x22e7('0x56')][_0x22e7('0x7d')]};}_0x31bba5=[[_0x22e7('0x7e'),'ASC'],[_0x22e7('0x7f'),_0x5a161b[0x0][_0x22e7('0x77')]==='ASC'?_0x22e7('0x80'):_0x22e7('0x81')],db[_0x22e7('0x78')]['literal'](_0x22e7('0x82')),['id',_0x22e7('0x80')]];}else{if(!_[_0x22e7('0x7c')](_0x1b4fcd['body'][_0x22e7('0x7d')])){_0x2d12ae['id']={'$notIn':_0x1b4fcd[_0x22e7('0x56')][_0x22e7('0x7d')]};}_0x31bba5=[['priority',_0x22e7('0x80')],[_0x22e7('0x7f'),_0x5a161b[0x0][_0x22e7('0x77')]],db[_0x22e7('0x78')][_0x22e7('0x83')](_0x22e7('0x84')),['id',_0x22e7('0x81')]];}return db[_0x22e7('0x29')][_0x22e7('0x85')]({'attributes':['id',_0x22e7('0x86')],'where':_0x2d12ae,'order':_0x31bba5,'transaction':_0x3d1419,'lock':_0x3d1419['LOCK'][_0x22e7('0x87')],'include':[{'model':db[_0x22e7('0x6b')],'as':_0x22e7('0x88'),'attributes':_0x1d361e,'include':[{'model':db[_0x22e7('0x89')],'as':_0x22e7('0x8a'),'attributes':['id','name']}]},{'model':db[_0x22e7('0x8b')],'as':_0x22e7('0x8c'),'attributes':['id','name']},{'model':db[_0x22e7('0x5b')],'as':_0x22e7('0x8d'),'attributes':['id',_0x22e7('0x27'),_0x22e7('0x8e')]}]})[_0x22e7('0x23')](function(_0x166a86){if(_0x166a86){return _0x166a86[_0x22e7('0x22')]({'UserId':_0x1b4fcd[_0x22e7('0x63')]['id']},{'transaction':_0x3d1419});}});});}})['then'](handleEntityNotFound(_0x1758e6,null))[_0x22e7('0x23')](respondWithResult(_0x1758e6,null))[_0x22e7('0x4b')](handleError(_0x1758e6,null));};exports[_0x22e7('0x8f')]=function(_0x3bb98d,_0x4f1727,_0x425a95){return _0x3bb98d[_0x22e7('0x63')][_0x22e7('0x74')]({'where':{'type':_0x22e7('0x75'),'dialActive':!![],'dialMethod':_0x22e7('0x76')},'attributes':['id'],'raw':!![]})[_0x22e7('0x23')](function(_0x12db22){if(_0x12db22&&_0x12db22[_0x22e7('0x40')]){return db['CmHopper'][_0x22e7('0x1e')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x22e7('0x65')](_0x22e7('0x66'))},'VoiceQueueId':{'$in':_[_0x22e7('0x7a')](_0x12db22,'id')},'$or':[{'UserId':null},{'UserId':_0x3bb98d['user']['id']}]}});}return 0x0;})[_0x22e7('0x23')](function(_0x3eec45){if(!_[_0x22e7('0x6f')](_0x3eec45)&&_[_0x22e7('0x90')](_0x3eec45)){return _0x4f1727[_0x22e7('0x19')](0xc8)[_0x22e7('0x1a')]({'contacts':_0x3eec45});}else{logger[_0x22e7('0x25')](_0x22e7('0x91'),_0x22e7('0x8f'),0x194,'entity\x20not\x20found');_0x4f1727[_0x22e7('0x92')](0x194);}})[_0x22e7('0x4b')](handleError(_0x4f1727,null));};
\ No newline at end of file
index 4eea821..91a0dd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d58=['priority','bluebird','request-promise','rimraf','../../config/environment','exports','define','cm_hopper','scheduledat','phone'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5d58,0x187));var _0x85d5=function(_0x364df3,_0x3b86c0){_0x364df3=_0x364df3-0x0;var _0xf467ca=_0x5d58[_0x364df3];return _0xf467ca;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x85d5('0x0'));var rp=require(_0x85d5('0x1'));var fs=require('fs');var path=require('path');var rimraf=require(_0x85d5('0x2'));var config=require(_0x85d5('0x3'));var attributes=require('./cmHopper.attributes');module[_0x85d5('0x4')]=function(_0x2d457a,_0x578fad){return _0x2d457a[_0x85d5('0x5')]('CmHopper',attributes,{'tableName':_0x85d5('0x6'),'paranoid':![],'indexes':[{'name':_0x85d5('0x7'),'fields':['scheduledat']},{'name':_0x85d5('0x8'),'fields':['phone']},{'name':_0x85d5('0x9'),'fields':[_0x85d5('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd8fb=['util','../../config/logger','api','path','rimraf','./cmHopper.attributes','exports','CmHopper','scheduledat','priority','lodash'];(function(_0x21fdcb,_0x4964c7){var _0x3634f1=function(_0x53aa16){while(--_0x53aa16){_0x21fdcb['push'](_0x21fdcb['shift']());}};_0x3634f1(++_0x4964c7);}(_0xd8fb,0x99));var _0xbd8f=function(_0x5c5c37,_0x5c6165){_0x5c5c37=_0x5c5c37-0x0;var _0x31b432=_0xd8fb[_0x5c5c37];return _0x31b432;};'use strict';var _=require(_0xbd8f('0x0'));var util=require(_0xbd8f('0x1'));var logger=require(_0xbd8f('0x2'))(_0xbd8f('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xbd8f('0x4'));var rimraf=require(_0xbd8f('0x5'));var config=require('../../config/environment');var attributes=require(_0xbd8f('0x6'));module[_0xbd8f('0x7')]=function(_0x5543b2,_0x33d541){return _0x5543b2['define'](_0xbd8f('0x8'),attributes,{'tableName':'cm_hopper','paranoid':![],'indexes':[{'name':_0xbd8f('0x9'),'fields':[_0xbd8f('0x9')]},{'name':'phone','fields':['phone']},{'name':_0xbd8f('0xa'),'fields':[_0xbd8f('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 1f08967..1d7fb37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a15=['attributes','limit','include','map','model','then','ShowCmHopper','find','CreateCmHopper','create','body','UpdateCmHopper','DestroyCmHopper','CmContact','describe','transaction','order','LOCK','UPDATE','Contact','User','Agent','name','length','push','update','all','GetContactDialer','sequelize','CmHopperFinal','destroy','MoveContactManagedDialer','CountReScheduled','COUNT','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22','\x20,\x201,\x20null','GetContactRecallMe','UserId','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request','CmHopper,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','info','result','catch','GetCmHopper','CmHopper','findAll','options','raw','where'];(function(_0x4211bb,_0x424082){var _0x36d8e8=function(_0x8665dc){while(--_0x8665dc){_0x4211bb['push'](_0x4211bb['shift']());}};_0x36d8e8(++_0x424082);}(_0x0a15,0x1c7));var _0x50a1=function(_0x2112d4,_0x3c863c){_0x2112d4=_0x2112d4-0x0;var _0x434972=_0x0a15[_0x2112d4];return _0x434972;};'use strict';var _=require(_0x50a1('0x0'));var util=require(_0x50a1('0x1'));var moment=require(_0x50a1('0x2'));var BPromise=require(_0x50a1('0x3'));var rs=require(_0x50a1('0x4'));var fs=require('fs');var Redis=require(_0x50a1('0x5'));var db=require(_0x50a1('0x6'))['db'];var utils=require(_0x50a1('0x7'));var logger=require('../../config/logger')(_0x50a1('0x8'));var config=require('../../config/environment');var jayson=require(_0x50a1('0x9'));var client=jayson['client'][_0x50a1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x498213,_0x4ca873,_0x54c0c9){return new BPromise(function(_0x361a12,_0x1c9a79){return client[_0x50a1('0xb')](_0x498213,_0x54c0c9)['then'](function(_0x20124e){logger['info'](_0x50a1('0xc'),_0x4ca873,_0x50a1('0xd'));logger[_0x50a1('0xe')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x4ca873,_0x50a1('0xd'),JSON[_0x50a1('0xf')](_0x20124e));if(_0x20124e['error']){if(_0x20124e['error'][_0x50a1('0x10')]===0x1f4){logger[_0x50a1('0x11')](_0x50a1('0xc'),_0x4ca873,_0x20124e[_0x50a1('0x11')][_0x50a1('0x12')]);return _0x1c9a79(_0x20124e[_0x50a1('0x11')][_0x50a1('0x12')]);}logger[_0x50a1('0x11')](_0x50a1('0xc'),_0x4ca873,_0x20124e[_0x50a1('0x11')][_0x50a1('0x12')]);return _0x361a12(_0x20124e[_0x50a1('0x11')][_0x50a1('0x12')]);}else{logger[_0x50a1('0x13')](_0x50a1('0xc'),_0x4ca873,_0x50a1('0xd'));_0x361a12(_0x20124e[_0x50a1('0x14')][_0x50a1('0x12')]);}})[_0x50a1('0x15')](function(_0x40cc8a){logger[_0x50a1('0x11')](_0x50a1('0xc'),_0x4ca873,_0x40cc8a);_0x1c9a79(_0x40cc8a);});});}exports[_0x50a1('0x16')]=function(_0x2ab0fe){var _0x5712e2=this;return new Promise(function(_0x4c0ce1,_0x5f200a){return db[_0x50a1('0x17')][_0x50a1('0x18')]({'raw':_0x2ab0fe['options']?_0x2ab0fe[_0x50a1('0x19')][_0x50a1('0x1a')]===undefined?!![]:![]:!![],'where':_0x2ab0fe[_0x50a1('0x19')]?_0x2ab0fe[_0x50a1('0x19')][_0x50a1('0x1b')]||null:null,'attributes':_0x2ab0fe[_0x50a1('0x19')]?_0x2ab0fe[_0x50a1('0x19')][_0x50a1('0x1c')]||null:null,'limit':_0x2ab0fe[_0x50a1('0x19')]?_0x2ab0fe[_0x50a1('0x19')][_0x50a1('0x1d')]||null:null,'include':_0x2ab0fe[_0x50a1('0x19')]?_0x2ab0fe[_0x50a1('0x19')][_0x50a1('0x1e')]?_[_0x50a1('0x1f')](_0x2ab0fe['options'][_0x50a1('0x1e')],function(_0x59d217){return{'model':db[_0x59d217[_0x50a1('0x20')]],'as':_0x59d217['as'],'attributes':_0x59d217[_0x50a1('0x1c')],'include':_0x59d217['include']?_[_0x50a1('0x1f')](_0x59d217[_0x50a1('0x1e')],function(_0x3ff2b4){return{'model':db[_0x3ff2b4[_0x50a1('0x20')]],'as':_0x3ff2b4['as'],'attributes':_0x3ff2b4[_0x50a1('0x1c')],'include':_0x3ff2b4[_0x50a1('0x1e')]?_[_0x50a1('0x1f')](_0x3ff2b4[_0x50a1('0x1e')],function(_0x2a790c){return{'model':db[_0x2a790c[_0x50a1('0x20')]],'as':_0x2a790c['as'],'attributes':_0x2a790c['attributes']};}):[]};}):[]};}):[]:[]})[_0x50a1('0x21')](function(_0x45e2ad){logger['info'](_0x50a1('0x16'),_0x2ab0fe);logger[_0x50a1('0xe')]('GetCmHopper',_0x2ab0fe,JSON['stringify'](_0x45e2ad));_0x4c0ce1(_0x45e2ad);})[_0x50a1('0x15')](function(_0x1dd937){logger[_0x50a1('0x11')](_0x50a1('0x16'),_0x1dd937[_0x50a1('0x12')],_0x2ab0fe);_0x5f200a(_0x5712e2[_0x50a1('0x11')](0x1f4,_0x1dd937[_0x50a1('0x12')]));});});};exports[_0x50a1('0x22')]=function(_0x3bbe2e){var _0x598b5e=this;return new Promise(function(_0x1f9e92,_0xf72899){return db[_0x50a1('0x17')][_0x50a1('0x23')]({'raw':_0x3bbe2e['options']?_0x3bbe2e['options'][_0x50a1('0x1a')]===undefined?!![]:![]:!![],'where':_0x3bbe2e[_0x50a1('0x19')]?_0x3bbe2e[_0x50a1('0x19')][_0x50a1('0x1b')]||null:null,'attributes':_0x3bbe2e['options']?_0x3bbe2e[_0x50a1('0x19')][_0x50a1('0x1c')]||null:null,'include':_0x3bbe2e['options']?_0x3bbe2e[_0x50a1('0x19')][_0x50a1('0x1e')]?_[_0x50a1('0x1f')](_0x3bbe2e[_0x50a1('0x19')][_0x50a1('0x1e')],function(_0x5c3eb9){return{'model':db[_0x5c3eb9[_0x50a1('0x20')]],'as':_0x5c3eb9['as'],'attributes':_0x5c3eb9[_0x50a1('0x1c')],'include':_0x5c3eb9[_0x50a1('0x1e')]?_[_0x50a1('0x1f')](_0x5c3eb9[_0x50a1('0x1e')],function(_0x38c9a2){return{'model':db[_0x38c9a2[_0x50a1('0x20')]],'as':_0x38c9a2['as'],'attributes':_0x38c9a2['attributes'],'include':_0x38c9a2[_0x50a1('0x1e')]?_['map'](_0x38c9a2['include'],function(_0x1860ba){return{'model':db[_0x1860ba[_0x50a1('0x20')]],'as':_0x1860ba['as'],'attributes':_0x1860ba[_0x50a1('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x50a1('0x21')](function(_0x493564){logger[_0x50a1('0x13')]('ShowCmHopper',_0x3bbe2e);logger['debug']('ShowCmHopper',_0x3bbe2e,JSON[_0x50a1('0xf')](_0x493564));_0x1f9e92(_0x493564);})[_0x50a1('0x15')](function(_0x4a449c){logger[_0x50a1('0x11')](_0x50a1('0x22'),_0x4a449c[_0x50a1('0x12')],_0x3bbe2e);_0xf72899(_0x598b5e[_0x50a1('0x11')](0x1f4,_0x4a449c[_0x50a1('0x12')]));});});};exports[_0x50a1('0x24')]=function(_0x5d5dcc){var _0x1e9da1=this;return new Promise(function(_0x48865e,_0x356b41){return db['CmHopper'][_0x50a1('0x25')](_0x5d5dcc[_0x50a1('0x26')],{'raw':_0x5d5dcc[_0x50a1('0x19')]?_0x5d5dcc[_0x50a1('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x50a1('0x21')](function(_0x3f9daa){logger[_0x50a1('0x13')]('CreateCmHopper',_0x5d5dcc);logger[_0x50a1('0xe')]('CreateCmHopper',_0x5d5dcc,JSON[_0x50a1('0xf')](_0x3f9daa));_0x48865e(_0x3f9daa);})[_0x50a1('0x15')](function(_0x306ab7){logger['error'](_0x50a1('0x24'),_0x306ab7[_0x50a1('0x12')],_0x5d5dcc);_0x356b41(_0x1e9da1[_0x50a1('0x11')](0x1f4,_0x306ab7[_0x50a1('0x12')]));});});};exports[_0x50a1('0x27')]=function(_0x32d508){var _0x4bd5f5=this;return new Promise(function(_0x430753,_0x1dedba){return db[_0x50a1('0x17')]['update'](_0x32d508[_0x50a1('0x26')],{'raw':_0x32d508['options']?_0x32d508['options'][_0x50a1('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x32d508[_0x50a1('0x19')]?_0x32d508[_0x50a1('0x19')][_0x50a1('0x1b')]||null:null,'attributes':_0x32d508[_0x50a1('0x19')]?_0x32d508['options']['attributes']||null:null,'limit':_0x32d508[_0x50a1('0x19')]?_0x32d508[_0x50a1('0x19')][_0x50a1('0x1d')]||null:null})[_0x50a1('0x21')](function(_0x373cb5){logger[_0x50a1('0x13')]('UpdateCmHopper',_0x32d508);logger['debug'](_0x50a1('0x27'),_0x32d508,JSON[_0x50a1('0xf')](_0x373cb5));_0x430753(_0x373cb5);})['catch'](function(_0x1caef8){logger[_0x50a1('0x11')]('UpdateCmHopper',_0x1caef8['message'],_0x32d508);_0x1dedba(_0x4bd5f5[_0x50a1('0x11')](0x1f4,_0x1caef8[_0x50a1('0x12')]));});});};exports[_0x50a1('0x28')]=function(_0x2c1f7e){var _0x5bf8d3=this;return new Promise(function(_0x240faf,_0x214754){return db[_0x50a1('0x17')]['destroy']({'where':_0x2c1f7e[_0x50a1('0x19')]?_0x2c1f7e[_0x50a1('0x19')][_0x50a1('0x1b')]||null:null})['then'](function(_0x5afdb8){logger[_0x50a1('0x13')](_0x50a1('0x28'),_0x2c1f7e);logger[_0x50a1('0xe')](_0x50a1('0x28'),_0x2c1f7e,JSON[_0x50a1('0xf')](_0x5afdb8));_0x240faf(_0x5afdb8);})[_0x50a1('0x15')](function(_0x21dc83){logger[_0x50a1('0x11')](_0x50a1('0x28'),_0x21dc83[_0x50a1('0x12')],_0x2c1f7e);_0x214754(_0x5bf8d3[_0x50a1('0x11')](0x1f4,_0x21dc83[_0x50a1('0x12')]));});});};exports['GetContactDialer']=function(_0x8d46c){var _0x42b845=this;return new Promise(function(_0x3e8fa9,_0x145050){return db[_0x50a1('0x29')][_0x50a1('0x2a')]()['then'](function(_0x1f8053){return db['sequelize'][_0x50a1('0x2b')](function(_0x2923fa){return db[_0x50a1('0x17')]['findAll']({'where':_0x8d46c[_0x50a1('0x19')]?_0x8d46c[_0x50a1('0x19')][_0x50a1('0x1b')]||null:null,'attributes':_0x8d46c[_0x50a1('0x19')]?_0x8d46c[_0x50a1('0x19')][_0x50a1('0x1c')]||null:null,'limit':_0x8d46c['options']?_0x8d46c[_0x50a1('0x19')][_0x50a1('0x1d')]||null:null,'order':_0x8d46c[_0x50a1('0x19')]?_0x8d46c[_0x50a1('0x19')][_0x50a1('0x2c')]||null:null,'transaction':_0x2923fa,'lock':_0x2923fa[_0x50a1('0x2d')][_0x50a1('0x2e')],'include':[{'model':db[_0x50a1('0x29')],'as':_0x50a1('0x2f'),'attributes':_['keys'](_0x1f8053)},{'model':db[_0x50a1('0x30')],'as':_0x50a1('0x31'),'attributes':['id',_0x50a1('0x32'),'voicePause']}]})[_0x50a1('0x21')](function(_0x29940){var _0x803fb8=[];var _0x154a4b=[];for(var _0x15e471=0x0;_0x15e471<_0x29940[_0x50a1('0x33')];_0x15e471+=0x1){var _0x47cf73=_0x29940[_0x15e471]['UserId'];if(_0x47cf73===null){_0x803fb8[_0x50a1('0x34')](_0x29940[_0x15e471][_0x50a1('0x35')](_0x8d46c[_0x50a1('0x26')],{'transaction':_0x2923fa}));}else if(!_0x154a4b['includes'](_0x47cf73)){_0x154a4b[_0x50a1('0x34')](_0x47cf73);_0x803fb8[_0x50a1('0x34')](_0x29940[_0x15e471]['update'](_0x8d46c[_0x50a1('0x26')],{'transaction':_0x2923fa}));}}return BPromise[_0x50a1('0x36')](_0x803fb8);});})[_0x50a1('0x21')](function(_0x169f69){logger[_0x50a1('0x13')]('GetContactDialer',_0x8d46c);logger[_0x50a1('0xe')]('GetContactDialer',_0x8d46c,JSON[_0x50a1('0xf')](_0x169f69));_0x3e8fa9(_0x169f69);})[_0x50a1('0x15')](function(_0x2b4b64){logger[_0x50a1('0x11')](_0x50a1('0x37'),_0x2b4b64[_0x50a1('0x12')],_0x8d46c);_0x145050(_0x42b845[_0x50a1('0x11')](0x1f4,_0x2b4b64[_0x50a1('0x12')]));});});});};exports['MoveContactManagedDialer']=function(_0x30c251){var _0x11e48f=this;return new Promise(function(_0x4a440a,_0x17889e){return db[_0x50a1('0x38')][_0x50a1('0x2b')](function(_0x425eeb){return db[_0x50a1('0x39')]['create'](_0x30c251['body'],{'raw':_0x30c251[_0x50a1('0x19')]?_0x30c251['options'][_0x50a1('0x1a')]===undefined?!![]:![]:!![],'transaction':_0x425eeb})[_0x50a1('0x21')](function(){return db[_0x50a1('0x17')][_0x50a1('0x3a')]({'where':_0x30c251[_0x50a1('0x19')]?_0x30c251['options'][_0x50a1('0x1b')]||null:null,'transaction':_0x425eeb});});})['then'](function(_0x38c7ce){logger['info'](_0x50a1('0x3b'),_0x30c251);logger[_0x50a1('0xe')](_0x50a1('0x3b'),_0x30c251,JSON[_0x50a1('0xf')](_0x38c7ce));_0x4a440a(_0x38c7ce);})[_0x50a1('0x15')](function(_0x116aac){logger[_0x50a1('0x11')]('MoveContactManagedDialer',_0x116aac[_0x50a1('0x12')],_0x30c251);_0x17889e(_0x11e48f[_0x50a1('0x11')](0x1f4,_0x116aac['message']));});});};exports[_0x50a1('0x3c')]=function(_0x153279){var _0x2e0a5b=this;return new Promise(function(_0xae3e20,_0x256660){return db['CmHopper'][_0x50a1('0x18')]({'raw':_0x153279[_0x50a1('0x19')]?_0x153279[_0x50a1('0x19')][_0x50a1('0x1a')]===undefined?!![]:![]:!![],'where':_0x153279[_0x50a1('0x19')]?_0x153279[_0x50a1('0x19')][_0x50a1('0x1b')]||null:null,'attributes':[[db['sequelize']['fn'](_0x50a1('0x3d'),db[_0x50a1('0x38')]['fn']('IF',db['sequelize'][_0x50a1('0x3e')](_0x50a1('0x3f')+util[_0x50a1('0x40')](_0x50a1('0x41'),moment()['format']('YYYY-MM-DD\x20HH:mm:ss'))+_0x50a1('0x42')))),'contactsRescheduled']]})['then'](function(_0x16844f){logger[_0x50a1('0x13')]('CountReScheduled',_0x153279);logger[_0x50a1('0xe')]('CountReScheduled',_0x153279,JSON[_0x50a1('0xf')](_0x16844f));_0xae3e20(_0x16844f);})[_0x50a1('0x15')](function(_0x182d72){logger[_0x50a1('0x11')](_0x50a1('0x3c'),_0x182d72[_0x50a1('0x12')],_0x153279);_0x256660(_0x2e0a5b[_0x50a1('0x11')](0x1f4,_0x182d72[_0x50a1('0x12')]));});});};exports[_0x50a1('0x43')]=function(_0x347e09){var _0x15bd6f=this;return new Promise(function(_0x392d19,_0x33dab6){return db[_0x50a1('0x29')][_0x50a1('0x2a')]()[_0x50a1('0x21')](function(_0x429045){return db['sequelize'][_0x50a1('0x2b')](function(_0x31a973){return db['CmHopper']['findAll']({'where':_0x347e09['options']?_0x347e09['options'][_0x50a1('0x1b')]||null:null,'attributes':_0x347e09[_0x50a1('0x19')]?_0x347e09[_0x50a1('0x19')]['attributes']||null:null,'limit':0x1,'order':_0x347e09['options']?_0x347e09[_0x50a1('0x19')]['order']||null:null,'group':db[_0x50a1('0x17')][_0x50a1('0x44')],'transaction':_0x31a973,'lock':_0x31a973[_0x50a1('0x2d')][_0x50a1('0x2e')],'include':_0x347e09['options']?_0x347e09[_0x50a1('0x19')][_0x50a1('0x1e')]?_[_0x50a1('0x1f')](_0x347e09[_0x50a1('0x19')][_0x50a1('0x1e')],function(_0x2ab702){return{'model':db[_0x2ab702['model']],'as':_0x2ab702['as'],'attributes':_0x2ab702[_0x50a1('0x1c')],'include':_0x2ab702[_0x50a1('0x1e')]?_[_0x50a1('0x1f')](_0x2ab702['include'],function(_0x3964d4){return{'model':db[_0x3964d4['model']],'as':_0x3964d4['as'],'attributes':_0x3964d4[_0x50a1('0x1c')],'include':_0x3964d4[_0x50a1('0x1e')]?_['map'](_0x3964d4['include'],function(_0x241152){return{'model':db[_0x241152[_0x50a1('0x20')]],'as':_0x241152['as'],'attributes':_0x241152[_0x50a1('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x50a1('0x21')](function(_0x5ae343){var _0xc35883=[];for(var _0x4e0725=0x0;_0x4e0725<_0x5ae343[_0x50a1('0x33')];_0x4e0725+=0x1){_0xc35883['push'](_0x5ae343[_0x4e0725]['update'](_0x347e09['body'],{'transaction':_0x31a973}));}return BPromise[_0x50a1('0x36')](_0xc35883);});})[_0x50a1('0x21')](function(_0x53b141){logger[_0x50a1('0x13')](_0x50a1('0x43'),_0x347e09);logger[_0x50a1('0xe')](_0x50a1('0x43'),_0x347e09,JSON[_0x50a1('0xf')](_0x53b141));_0x392d19(_0x53b141);})[_0x50a1('0x15')](function(_0x49af3d){logger[_0x50a1('0x11')](_0x50a1('0x43'),_0x49af3d[_0x50a1('0x12')],_0x347e09);_0x33dab6(_0x15bd6f[_0x50a1('0x11')](0x1f4,_0x49af3d[_0x50a1('0x12')]));});});});};exports['GetCmHopperPreview']=function(_0x2b71e2){var _0x5067fc=this;return new Promise(function(_0x45313f,_0x51476b){db['CmContact'][_0x50a1('0x2a')]()[_0x50a1('0x21')](function(_0x407a93){return db[_0x50a1('0x17')]['findAll']({'raw':_0x2b71e2[_0x50a1('0x19')]?_0x2b71e2['options'][_0x50a1('0x1a')]===undefined?!![]:![]:!![],'where':_0x2b71e2[_0x50a1('0x19')]?_0x2b71e2[_0x50a1('0x19')][_0x50a1('0x1b')]||null:null,'attributes':_0x2b71e2[_0x50a1('0x19')]?_0x2b71e2[_0x50a1('0x19')][_0x50a1('0x1c')]||null:null,'limit':_0x2b71e2[_0x50a1('0x19')]?_0x2b71e2['options'][_0x50a1('0x1d')]||null:null,'include':_0x2b71e2['options']?_0x2b71e2[_0x50a1('0x19')][_0x50a1('0x1e')]?_['map'](_0x2b71e2[_0x50a1('0x19')]['include'],function(_0x5e869b){return{'model':db[_0x5e869b[_0x50a1('0x20')]],'as':_0x5e869b['as'],'attributes':_0x5e869b['as']==='Contact'?_['keys'](_0x407a93):_0x5e869b['attributes'],'include':_0x5e869b[_0x50a1('0x1e')]?_['map'](_0x5e869b[_0x50a1('0x1e')],function(_0x5eab21){return{'model':db[_0x5eab21['model']],'as':_0x5eab21['as'],'attributes':_0x5eab21['attributes'],'include':_0x5eab21[_0x50a1('0x1e')]?_['map'](_0x5eab21['include'],function(_0x5b1955){return{'model':db[_0x5b1955['model']],'as':_0x5b1955['as'],'attributes':_0x5b1955[_0x50a1('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x50a1('0x21')](function(_0x17de6c){logger['info'](_0x50a1('0x16'),_0x2b71e2);logger['debug']('GetCmHopper',_0x2b71e2,JSON[_0x50a1('0xf')](_0x17de6c));_0x45313f(_0x17de6c);})[_0x50a1('0x15')](function(_0x5737cc){logger[_0x50a1('0x11')](_0x50a1('0x16'),_0x5737cc[_0x50a1('0x12')],_0x2b71e2);_0x51476b(_0x5067fc['error'](0x1f4,_0x5737cc['message']));});});});};
\ No newline at end of file
+var _0xbdc5=['limit','map','include','model','attributes','find','raw','ShowCmHopper','CreateCmHopper','create','body','UpdateCmHopper','update','DestroyCmHopper','GetContactDialer','CmContact','describe','transaction','findAll','Contact','keys','User','length','UserId','push','includes','all','MoveContactManagedDialer','sequelize','CmHopperFinal','destroy','CountReScheduled','COUNT','literal','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','LOCK','UPDATE','GetContactRecallMe','GetCmHopperPreview','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','CmHopper,\x20%s,\x20%s','request\x20sent','debug','CmHopper,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','GetCmHopper','CmHopper','options','where'];(function(_0x119886,_0x1bb82c){var _0x23b022=function(_0x5bea28){while(--_0x5bea28){_0x119886['push'](_0x119886['shift']());}};_0x23b022(++_0x1bb82c);}(_0xbdc5,0x1cf));var _0x5bdc=function(_0x2dfcb0,_0x212ef9){_0x2dfcb0=_0x2dfcb0-0x0;var _0x38bf92=_0xbdc5[_0x2dfcb0];return _0x38bf92;};'use strict';var _=require('lodash');var util=require(_0x5bdc('0x0'));var moment=require(_0x5bdc('0x1'));var BPromise=require(_0x5bdc('0x2'));var rs=require(_0x5bdc('0x3'));var fs=require('fs');var Redis=require(_0x5bdc('0x4'));var db=require(_0x5bdc('0x5'))['db'];var utils=require(_0x5bdc('0x6'));var logger=require('../../config/logger')(_0x5bdc('0x7'));var config=require(_0x5bdc('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x5bdc('0x9')][_0x5bdc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2ce573,_0x506d51,_0x610bfe){return new BPromise(function(_0x3da3a1,_0x428785){return client[_0x5bdc('0xb')](_0x2ce573,_0x610bfe)[_0x5bdc('0xc')](function(_0x902284){logger['info'](_0x5bdc('0xd'),_0x506d51,_0x5bdc('0xe'));logger[_0x5bdc('0xf')](_0x5bdc('0x10'),_0x506d51,_0x5bdc('0xe'),JSON[_0x5bdc('0x11')](_0x902284));if(_0x902284[_0x5bdc('0x12')]){if(_0x902284[_0x5bdc('0x12')][_0x5bdc('0x13')]===0x1f4){logger['error']('CmHopper,\x20%s,\x20%s',_0x506d51,_0x902284[_0x5bdc('0x12')][_0x5bdc('0x14')]);return _0x428785(_0x902284[_0x5bdc('0x12')][_0x5bdc('0x14')]);}logger['error'](_0x5bdc('0xd'),_0x506d51,_0x902284[_0x5bdc('0x12')][_0x5bdc('0x14')]);return _0x3da3a1(_0x902284[_0x5bdc('0x12')][_0x5bdc('0x14')]);}else{logger[_0x5bdc('0x15')]('CmHopper,\x20%s,\x20%s',_0x506d51,_0x5bdc('0xe'));_0x3da3a1(_0x902284['result'][_0x5bdc('0x14')]);}})[_0x5bdc('0x16')](function(_0xb4a6b){logger['error']('CmHopper,\x20%s,\x20%s',_0x506d51,_0xb4a6b);_0x428785(_0xb4a6b);});});}exports[_0x5bdc('0x17')]=function(_0x447bc7){var _0xaef67e=this;return new Promise(function(_0x55bd1c,_0x51c451){return db[_0x5bdc('0x18')]['findAll']({'raw':_0x447bc7[_0x5bdc('0x19')]?_0x447bc7[_0x5bdc('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x447bc7['options']?_0x447bc7[_0x5bdc('0x19')][_0x5bdc('0x1a')]||null:null,'attributes':_0x447bc7[_0x5bdc('0x19')]?_0x447bc7[_0x5bdc('0x19')]['attributes']||null:null,'limit':_0x447bc7[_0x5bdc('0x19')]?_0x447bc7[_0x5bdc('0x19')][_0x5bdc('0x1b')]||null:null,'include':_0x447bc7['options']?_0x447bc7[_0x5bdc('0x19')]['include']?_[_0x5bdc('0x1c')](_0x447bc7[_0x5bdc('0x19')][_0x5bdc('0x1d')],function(_0x170198){return{'model':db[_0x170198[_0x5bdc('0x1e')]],'as':_0x170198['as'],'attributes':_0x170198[_0x5bdc('0x1f')],'include':_0x170198[_0x5bdc('0x1d')]?_[_0x5bdc('0x1c')](_0x170198['include'],function(_0x49a83c){return{'model':db[_0x49a83c[_0x5bdc('0x1e')]],'as':_0x49a83c['as'],'attributes':_0x49a83c['attributes'],'include':_0x49a83c[_0x5bdc('0x1d')]?_[_0x5bdc('0x1c')](_0x49a83c['include'],function(_0x1a7400){return{'model':db[_0x1a7400[_0x5bdc('0x1e')]],'as':_0x1a7400['as'],'attributes':_0x1a7400['attributes']};}):[]};}):[]};}):[]:[]})[_0x5bdc('0xc')](function(_0x3290f7){logger[_0x5bdc('0x15')](_0x5bdc('0x17'),_0x447bc7);logger[_0x5bdc('0xf')](_0x5bdc('0x17'),_0x447bc7,JSON[_0x5bdc('0x11')](_0x3290f7));_0x55bd1c(_0x3290f7);})['catch'](function(_0x4d7b8a){logger[_0x5bdc('0x12')](_0x5bdc('0x17'),_0x4d7b8a[_0x5bdc('0x14')],_0x447bc7);_0x51c451(_0xaef67e['error'](0x1f4,_0x4d7b8a[_0x5bdc('0x14')]));});});};exports['ShowCmHopper']=function(_0x41dd99){var _0x570fed=this;return new Promise(function(_0x339e22,_0x1ca703){return db[_0x5bdc('0x18')][_0x5bdc('0x20')]({'raw':_0x41dd99[_0x5bdc('0x19')]?_0x41dd99[_0x5bdc('0x19')][_0x5bdc('0x21')]===undefined?!![]:![]:!![],'where':_0x41dd99[_0x5bdc('0x19')]?_0x41dd99[_0x5bdc('0x19')]['where']||null:null,'attributes':_0x41dd99[_0x5bdc('0x19')]?_0x41dd99[_0x5bdc('0x19')][_0x5bdc('0x1f')]||null:null,'include':_0x41dd99[_0x5bdc('0x19')]?_0x41dd99[_0x5bdc('0x19')][_0x5bdc('0x1d')]?_[_0x5bdc('0x1c')](_0x41dd99['options'][_0x5bdc('0x1d')],function(_0x5169e3){return{'model':db[_0x5169e3[_0x5bdc('0x1e')]],'as':_0x5169e3['as'],'attributes':_0x5169e3[_0x5bdc('0x1f')],'include':_0x5169e3[_0x5bdc('0x1d')]?_[_0x5bdc('0x1c')](_0x5169e3['include'],function(_0x24f892){return{'model':db[_0x24f892[_0x5bdc('0x1e')]],'as':_0x24f892['as'],'attributes':_0x24f892[_0x5bdc('0x1f')],'include':_0x24f892['include']?_[_0x5bdc('0x1c')](_0x24f892[_0x5bdc('0x1d')],function(_0x27f1dd){return{'model':db[_0x27f1dd[_0x5bdc('0x1e')]],'as':_0x27f1dd['as'],'attributes':_0x27f1dd[_0x5bdc('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x29dd76){logger['info']('ShowCmHopper',_0x41dd99);logger[_0x5bdc('0xf')]('ShowCmHopper',_0x41dd99,JSON[_0x5bdc('0x11')](_0x29dd76));_0x339e22(_0x29dd76);})[_0x5bdc('0x16')](function(_0x27f7fd){logger[_0x5bdc('0x12')](_0x5bdc('0x22'),_0x27f7fd[_0x5bdc('0x14')],_0x41dd99);_0x1ca703(_0x570fed[_0x5bdc('0x12')](0x1f4,_0x27f7fd[_0x5bdc('0x14')]));});});};exports[_0x5bdc('0x23')]=function(_0x26a26d){var _0x5945ad=this;return new Promise(function(_0x7157bb,_0x3fe5b8){return db[_0x5bdc('0x18')][_0x5bdc('0x24')](_0x26a26d[_0x5bdc('0x25')],{'raw':_0x26a26d[_0x5bdc('0x19')]?_0x26a26d['options'][_0x5bdc('0x21')]===undefined?!![]:![]:!![]})[_0x5bdc('0xc')](function(_0x206ac4){logger[_0x5bdc('0x15')]('CreateCmHopper',_0x26a26d);logger['debug'](_0x5bdc('0x23'),_0x26a26d,JSON[_0x5bdc('0x11')](_0x206ac4));_0x7157bb(_0x206ac4);})[_0x5bdc('0x16')](function(_0x419cee){logger[_0x5bdc('0x12')](_0x5bdc('0x23'),_0x419cee['message'],_0x26a26d);_0x3fe5b8(_0x5945ad['error'](0x1f4,_0x419cee['message']));});});};exports[_0x5bdc('0x26')]=function(_0x1d2c2e){var _0x1740af=this;return new Promise(function(_0xe7abb5,_0x2d6407){return db[_0x5bdc('0x18')][_0x5bdc('0x27')](_0x1d2c2e[_0x5bdc('0x25')],{'raw':_0x1d2c2e[_0x5bdc('0x19')]?_0x1d2c2e[_0x5bdc('0x19')][_0x5bdc('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1d2c2e[_0x5bdc('0x19')]?_0x1d2c2e['options']['where']||null:null,'attributes':_0x1d2c2e[_0x5bdc('0x19')]?_0x1d2c2e['options'][_0x5bdc('0x1f')]||null:null,'limit':_0x1d2c2e[_0x5bdc('0x19')]?_0x1d2c2e[_0x5bdc('0x19')][_0x5bdc('0x1b')]||null:null})[_0x5bdc('0xc')](function(_0x2d5330){logger['info']('UpdateCmHopper',_0x1d2c2e);logger['debug'](_0x5bdc('0x26'),_0x1d2c2e,JSON[_0x5bdc('0x11')](_0x2d5330));_0xe7abb5(_0x2d5330);})[_0x5bdc('0x16')](function(_0x33554a){logger['error']('UpdateCmHopper',_0x33554a['message'],_0x1d2c2e);_0x2d6407(_0x1740af['error'](0x1f4,_0x33554a[_0x5bdc('0x14')]));});});};exports[_0x5bdc('0x28')]=function(_0x22cc8f){var _0x6aface=this;return new Promise(function(_0x57d2b8,_0x5dadf5){return db[_0x5bdc('0x18')]['destroy']({'where':_0x22cc8f[_0x5bdc('0x19')]?_0x22cc8f[_0x5bdc('0x19')][_0x5bdc('0x1a')]||null:null})[_0x5bdc('0xc')](function(_0x253b7a){logger[_0x5bdc('0x15')](_0x5bdc('0x28'),_0x22cc8f);logger[_0x5bdc('0xf')](_0x5bdc('0x28'),_0x22cc8f,JSON[_0x5bdc('0x11')](_0x253b7a));_0x57d2b8(_0x253b7a);})[_0x5bdc('0x16')](function(_0x12fb5f){logger['error'](_0x5bdc('0x28'),_0x12fb5f[_0x5bdc('0x14')],_0x22cc8f);_0x5dadf5(_0x6aface[_0x5bdc('0x12')](0x1f4,_0x12fb5f[_0x5bdc('0x14')]));});});};exports[_0x5bdc('0x29')]=function(_0x316b53){var _0x19e969=this;return new Promise(function(_0x41bb3c,_0x450a82){return db[_0x5bdc('0x2a')][_0x5bdc('0x2b')]()['then'](function(_0x5c8b2e){return db['sequelize'][_0x5bdc('0x2c')](function(_0x910296){return db[_0x5bdc('0x18')][_0x5bdc('0x2d')]({'where':_0x316b53['options']?_0x316b53[_0x5bdc('0x19')][_0x5bdc('0x1a')]||null:null,'attributes':_0x316b53[_0x5bdc('0x19')]?_0x316b53[_0x5bdc('0x19')][_0x5bdc('0x1f')]||null:null,'limit':_0x316b53[_0x5bdc('0x19')]?_0x316b53[_0x5bdc('0x19')][_0x5bdc('0x1b')]||null:null,'order':_0x316b53[_0x5bdc('0x19')]?_0x316b53['options']['order']||null:null,'transaction':_0x910296,'lock':_0x910296['LOCK']['UPDATE'],'include':[{'model':db[_0x5bdc('0x2a')],'as':_0x5bdc('0x2e'),'attributes':_[_0x5bdc('0x2f')](_0x5c8b2e)},{'model':db[_0x5bdc('0x30')],'as':'Agent','attributes':['id','name','voicePause']}]})[_0x5bdc('0xc')](function(_0x395418){var _0x39379a=[];var _0x1b8e5a=[];for(var _0xd28823=0x0;_0xd28823<_0x395418[_0x5bdc('0x31')];_0xd28823+=0x1){var _0x5c16dc=_0x395418[_0xd28823][_0x5bdc('0x32')];if(_0x5c16dc===null){_0x39379a[_0x5bdc('0x33')](_0x395418[_0xd28823][_0x5bdc('0x27')](_0x316b53['body'],{'transaction':_0x910296}));}else if(!_0x1b8e5a[_0x5bdc('0x34')](_0x5c16dc)){_0x1b8e5a[_0x5bdc('0x33')](_0x5c16dc);_0x39379a[_0x5bdc('0x33')](_0x395418[_0xd28823][_0x5bdc('0x27')](_0x316b53['body'],{'transaction':_0x910296}));}}return BPromise[_0x5bdc('0x35')](_0x39379a);});})[_0x5bdc('0xc')](function(_0x509406){logger[_0x5bdc('0x15')](_0x5bdc('0x29'),_0x316b53);logger[_0x5bdc('0xf')]('GetContactDialer',_0x316b53,JSON['stringify'](_0x509406));_0x41bb3c(_0x509406);})[_0x5bdc('0x16')](function(_0xb06800){logger['error'](_0x5bdc('0x29'),_0xb06800[_0x5bdc('0x14')],_0x316b53);_0x450a82(_0x19e969['error'](0x1f4,_0xb06800['message']));});});});};exports[_0x5bdc('0x36')]=function(_0x4978c5){var _0x299385=this;return new Promise(function(_0x1df5f7,_0x292146){return db[_0x5bdc('0x37')][_0x5bdc('0x2c')](function(_0x53600e){return db[_0x5bdc('0x38')]['create'](_0x4978c5[_0x5bdc('0x25')],{'raw':_0x4978c5[_0x5bdc('0x19')]?_0x4978c5[_0x5bdc('0x19')][_0x5bdc('0x21')]===undefined?!![]:![]:!![],'transaction':_0x53600e})[_0x5bdc('0xc')](function(){return db[_0x5bdc('0x18')][_0x5bdc('0x39')]({'where':_0x4978c5[_0x5bdc('0x19')]?_0x4978c5[_0x5bdc('0x19')][_0x5bdc('0x1a')]||null:null,'transaction':_0x53600e});});})['then'](function(_0xa8ecfc){logger[_0x5bdc('0x15')](_0x5bdc('0x36'),_0x4978c5);logger[_0x5bdc('0xf')](_0x5bdc('0x36'),_0x4978c5,JSON[_0x5bdc('0x11')](_0xa8ecfc));_0x1df5f7(_0xa8ecfc);})['catch'](function(_0x32eb79){logger[_0x5bdc('0x12')](_0x5bdc('0x36'),_0x32eb79[_0x5bdc('0x14')],_0x4978c5);_0x292146(_0x299385[_0x5bdc('0x12')](0x1f4,_0x32eb79[_0x5bdc('0x14')]));});});};exports[_0x5bdc('0x3a')]=function(_0x542bb4){var _0x5f00d1=this;return new Promise(function(_0x2ea604,_0x79e4ec){return db['CmHopper'][_0x5bdc('0x2d')]({'raw':_0x542bb4[_0x5bdc('0x19')]?_0x542bb4['options'][_0x5bdc('0x21')]===undefined?!![]:![]:!![],'where':_0x542bb4[_0x5bdc('0x19')]?_0x542bb4['options'][_0x5bdc('0x1a')]||null:null,'attributes':[[db[_0x5bdc('0x37')]['fn'](_0x5bdc('0x3b'),db[_0x5bdc('0x37')]['fn']('IF',db[_0x5bdc('0x37')][_0x5bdc('0x3c')]('`scheduledat`\x20>=\x20'+util[_0x5bdc('0x3d')](_0x5bdc('0x3e'),moment()[_0x5bdc('0x3d')](_0x5bdc('0x3f')))+_0x5bdc('0x40')))),_0x5bdc('0x41')]]})[_0x5bdc('0xc')](function(_0x3062b9){logger[_0x5bdc('0x15')](_0x5bdc('0x3a'),_0x542bb4);logger['debug'](_0x5bdc('0x3a'),_0x542bb4,JSON[_0x5bdc('0x11')](_0x3062b9));_0x2ea604(_0x3062b9);})[_0x5bdc('0x16')](function(_0x32b280){logger[_0x5bdc('0x12')](_0x5bdc('0x3a'),_0x32b280[_0x5bdc('0x14')],_0x542bb4);_0x79e4ec(_0x5f00d1[_0x5bdc('0x12')](0x1f4,_0x32b280[_0x5bdc('0x14')]));});});};exports['GetContactRecallMe']=function(_0x170565){var _0x4778bc=this;return new Promise(function(_0x28696e,_0x838380){return db[_0x5bdc('0x2a')]['describe']()['then'](function(_0x5b78af){return db['sequelize']['transaction'](function(_0x21bc17){return db[_0x5bdc('0x18')][_0x5bdc('0x2d')]({'where':_0x170565[_0x5bdc('0x19')]?_0x170565[_0x5bdc('0x19')]['where']||null:null,'attributes':_0x170565[_0x5bdc('0x19')]?_0x170565['options'][_0x5bdc('0x1f')]||null:null,'limit':0x1,'order':_0x170565[_0x5bdc('0x19')]?_0x170565[_0x5bdc('0x19')]['order']||null:null,'group':db[_0x5bdc('0x18')][_0x5bdc('0x32')],'transaction':_0x21bc17,'lock':_0x21bc17[_0x5bdc('0x42')][_0x5bdc('0x43')],'include':_0x170565[_0x5bdc('0x19')]?_0x170565[_0x5bdc('0x19')][_0x5bdc('0x1d')]?_[_0x5bdc('0x1c')](_0x170565[_0x5bdc('0x19')]['include'],function(_0x290676){return{'model':db[_0x290676[_0x5bdc('0x1e')]],'as':_0x290676['as'],'attributes':_0x290676['attributes'],'include':_0x290676['include']?_['map'](_0x290676[_0x5bdc('0x1d')],function(_0x4dcf72){return{'model':db[_0x4dcf72[_0x5bdc('0x1e')]],'as':_0x4dcf72['as'],'attributes':_0x4dcf72[_0x5bdc('0x1f')],'include':_0x4dcf72[_0x5bdc('0x1d')]?_[_0x5bdc('0x1c')](_0x4dcf72[_0x5bdc('0x1d')],function(_0x1db7b0){return{'model':db[_0x1db7b0[_0x5bdc('0x1e')]],'as':_0x1db7b0['as'],'attributes':_0x1db7b0[_0x5bdc('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x50e318){var _0x154aa0=[];for(var _0x26ddf3=0x0;_0x26ddf3<_0x50e318[_0x5bdc('0x31')];_0x26ddf3+=0x1){_0x154aa0[_0x5bdc('0x33')](_0x50e318[_0x26ddf3]['update'](_0x170565[_0x5bdc('0x25')],{'transaction':_0x21bc17}));}return BPromise['all'](_0x154aa0);});})[_0x5bdc('0xc')](function(_0x3aa1ea){logger[_0x5bdc('0x15')](_0x5bdc('0x44'),_0x170565);logger[_0x5bdc('0xf')](_0x5bdc('0x44'),_0x170565,JSON[_0x5bdc('0x11')](_0x3aa1ea));_0x28696e(_0x3aa1ea);})[_0x5bdc('0x16')](function(_0x4139d5){logger[_0x5bdc('0x12')](_0x5bdc('0x44'),_0x4139d5[_0x5bdc('0x14')],_0x170565);_0x838380(_0x4778bc[_0x5bdc('0x12')](0x1f4,_0x4139d5['message']));});});});};exports[_0x5bdc('0x45')]=function(_0x42c2e6){var _0x3e434f=this;return new Promise(function(_0x472c2f,_0x1f5a0f){db[_0x5bdc('0x2a')][_0x5bdc('0x2b')]()[_0x5bdc('0xc')](function(_0x51dca7){return db[_0x5bdc('0x18')][_0x5bdc('0x2d')]({'raw':_0x42c2e6[_0x5bdc('0x19')]?_0x42c2e6[_0x5bdc('0x19')][_0x5bdc('0x21')]===undefined?!![]:![]:!![],'where':_0x42c2e6[_0x5bdc('0x19')]?_0x42c2e6['options']['where']||null:null,'attributes':_0x42c2e6[_0x5bdc('0x19')]?_0x42c2e6[_0x5bdc('0x19')][_0x5bdc('0x1f')]||null:null,'limit':_0x42c2e6[_0x5bdc('0x19')]?_0x42c2e6[_0x5bdc('0x19')][_0x5bdc('0x1b')]||null:null,'include':_0x42c2e6[_0x5bdc('0x19')]?_0x42c2e6[_0x5bdc('0x19')][_0x5bdc('0x1d')]?_['map'](_0x42c2e6[_0x5bdc('0x19')][_0x5bdc('0x1d')],function(_0x5e907f){return{'model':db[_0x5e907f[_0x5bdc('0x1e')]],'as':_0x5e907f['as'],'attributes':_0x5e907f['as']==='Contact'?_[_0x5bdc('0x2f')](_0x51dca7):_0x5e907f[_0x5bdc('0x1f')],'include':_0x5e907f[_0x5bdc('0x1d')]?_[_0x5bdc('0x1c')](_0x5e907f[_0x5bdc('0x1d')],function(_0x1da472){return{'model':db[_0x1da472['model']],'as':_0x1da472['as'],'attributes':_0x1da472['attributes'],'include':_0x1da472[_0x5bdc('0x1d')]?_[_0x5bdc('0x1c')](_0x1da472['include'],function(_0x237ee6){return{'model':db[_0x237ee6[_0x5bdc('0x1e')]],'as':_0x237ee6['as'],'attributes':_0x237ee6[_0x5bdc('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x5bdc('0xc')](function(_0x24f6b2){logger['info']('GetCmHopper',_0x42c2e6);logger[_0x5bdc('0xf')](_0x5bdc('0x17'),_0x42c2e6,JSON[_0x5bdc('0x11')](_0x24f6b2));_0x472c2f(_0x24f6b2);})[_0x5bdc('0x16')](function(_0x111bc4){logger[_0x5bdc('0x12')](_0x5bdc('0x17'),_0x111bc4[_0x5bdc('0x14')],_0x42c2e6);_0x1f5a0f(_0x3e434f[_0x5bdc('0x12')](0x1f4,_0x111bc4[_0x5bdc('0x14')]));});});});};
\ No newline at end of file
index 999d971..5d6bed9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b31=['/preview','getPreview','put','update','destroy','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopper.controller','isAuthenticated','get','/opencontacts','getOpenContacts','/:id','show','post','create'];(function(_0x544633,_0xd5f90f){var _0x5e8e90=function(_0xa5d1e1){while(--_0xa5d1e1){_0x544633['push'](_0x544633['shift']());}};_0x5e8e90(++_0xd5f90f);}(_0x6b31,0x1a7));var _0x16b3=function(_0x504bcf,_0x2030fb){_0x504bcf=_0x504bcf-0x0;var _0x51f949=_0x6b31[_0x504bcf];return _0x51f949;};'use strict';var multer=require(_0x16b3('0x0'));var util=require('util');var path=require(_0x16b3('0x1'));var timeout=require('connect-timeout');var express=require(_0x16b3('0x2'));var router=express[_0x16b3('0x3')]();var fs_extra=require(_0x16b3('0x4'));var auth=require(_0x16b3('0x5'));var interaction=require(_0x16b3('0x6'));var config=require(_0x16b3('0x7'));var controller=require(_0x16b3('0x8'));router['get']('/',auth[_0x16b3('0x9')](),controller['index']);router[_0x16b3('0xa')]('/describe',auth[_0x16b3('0x9')](),controller['describe']);router[_0x16b3('0xa')](_0x16b3('0xb'),auth[_0x16b3('0x9')](),controller[_0x16b3('0xc')]);router[_0x16b3('0xa')](_0x16b3('0xd'),auth[_0x16b3('0x9')](),controller[_0x16b3('0xe')]);router[_0x16b3('0xf')]('/',auth[_0x16b3('0x9')](),controller[_0x16b3('0x10')]);router[_0x16b3('0xf')](_0x16b3('0x11'),auth[_0x16b3('0x9')](),controller[_0x16b3('0x12')]);router[_0x16b3('0x13')](_0x16b3('0xd'),auth['isAuthenticated'](),controller[_0x16b3('0x14')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x16b3('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x24a3=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopper.controller','get','isAuthenticated','index','describe','/opencontacts','getOpenContacts','/:id','show','post','getPreview','update','delete','destroy','exports','multer','util'];(function(_0xef6134,_0x2f8a83){var _0x18bcc6=function(_0x16b20a){while(--_0x16b20a){_0xef6134['push'](_0xef6134['shift']());}};_0x18bcc6(++_0x2f8a83);}(_0x24a3,0x111));var _0x324a=function(_0x15ac09,_0x43685b){_0x15ac09=_0x15ac09-0x0;var _0x128429=_0x24a3[_0x15ac09];return _0x128429;};'use strict';var multer=require(_0x324a('0x0'));var util=require(_0x324a('0x1'));var path=require(_0x324a('0x2'));var timeout=require(_0x324a('0x3'));var express=require(_0x324a('0x4'));var router=express[_0x324a('0x5')]();var fs_extra=require(_0x324a('0x6'));var auth=require(_0x324a('0x7'));var interaction=require(_0x324a('0x8'));var config=require(_0x324a('0x9'));var controller=require(_0x324a('0xa'));router[_0x324a('0xb')]('/',auth[_0x324a('0xc')](),controller[_0x324a('0xd')]);router[_0x324a('0xb')]('/describe',auth[_0x324a('0xc')](),controller[_0x324a('0xe')]);router[_0x324a('0xb')](_0x324a('0xf'),auth[_0x324a('0xc')](),controller[_0x324a('0x10')]);router[_0x324a('0xb')](_0x324a('0x11'),auth[_0x324a('0xc')](),controller[_0x324a('0x12')]);router['post']('/',auth[_0x324a('0xc')](),controller['create']);router[_0x324a('0x13')]('/preview',auth[_0x324a('0xc')](),controller[_0x324a('0x14')]);router['put'](_0x324a('0x11'),auth[_0x324a('0xc')](),controller[_0x324a('0x15')]);router[_0x324a('0x16')](_0x324a('0x11'),auth[_0x324a('0xc')](),controller[_0x324a('0x17')]);module[_0x324a('0x18')]=router;
\ No newline at end of file
index 9269fc8..9c726d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc01b=['sequelize','exports','STRING','contactListQueue','INTEGER','moment'];(function(_0x5e4ed5,_0x2ee662){var _0xc4638c=function(_0x2629fb){while(--_0x2629fb){_0x5e4ed5['push'](_0x5e4ed5['shift']());}};_0xc4638c(++_0x2ee662);}(_0xc01b,0x65));var _0xbc01=function(_0xa74a41,_0x4854e9){_0xa74a41=_0xa74a41-0x0;var _0x4fea23=_0xc01b[_0xa74a41];return _0x4fea23;};'use strict';var moment=require(_0xbc01('0x0'));var Sequelize=require(_0xbc01('0x1'));module[_0xbc01('0x2')]={'phone':{'type':Sequelize[_0xbc01('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0xbc01('0x4')},'ListId':{'type':Sequelize[_0xbc01('0x5')],'unique':'contactListQueue'},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':'contactListQueue'}};
\ No newline at end of file
+var _0x2178=['INTEGER','contactListQueue','moment','exports','STRING'];(function(_0x1fcc18,_0x21125e){var _0x436790=function(_0x1fdbb2){while(--_0x1fdbb2){_0x1fcc18['push'](_0x1fcc18['shift']());}};_0x436790(++_0x21125e);}(_0x2178,0x1b0));var _0x8217=function(_0x411289,_0x36dbc8){_0x411289=_0x411289-0x0;var _0x5e72ec=_0x2178[_0x411289];return _0x5e72ec;};'use strict';var moment=require(_0x8217('0x0'));var Sequelize=require('sequelize');module[_0x8217('0x1')]={'phone':{'type':Sequelize[_0x8217('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x8217('0x3')],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x8217('0x3')],'unique':_0x8217('0x4')},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0x8217('0x4')}};
\ No newline at end of file
index d17baf1..a4c3151 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2a5=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','error','stack','name','send','index','map','CmHopperBlack','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','keys','rawAttributes','includeAll','find','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../components/auth/service'];(function(_0x166238,_0x35de2a){var _0x4cd78c=function(_0x1bab7b){while(--_0x1bab7b){_0x166238['push'](_0x166238['shift']());}};_0x4cd78c(++_0x35de2a);}(_0xa2a5,0x84));var _0x5a2a=function(_0x4da343,_0x50dacc){_0x4da343=_0x4da343-0x0;var _0x115cde=_0xa2a5[_0x4da343];return _0x115cde;};'use strict';var emlformat=require(_0x5a2a('0x0'));var rimraf=require(_0x5a2a('0x1'));var zipdir=require(_0x5a2a('0x2'));var jsonpatch=require(_0x5a2a('0x3'));var rp=require(_0x5a2a('0x4'));var moment=require(_0x5a2a('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x5a2a('0x6'));var path=require(_0x5a2a('0x7'));var sox=require(_0x5a2a('0x8'));var csv=require(_0x5a2a('0x9'));var ejs=require(_0x5a2a('0xa'));var fs=require('fs');var fs_extra=require(_0x5a2a('0xb'));var _=require(_0x5a2a('0xc'));var squel=require(_0x5a2a('0xd'));var crypto=require('crypto');var jsforce=require(_0x5a2a('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x5a2a('0xf'));var Papa=require('papaparse');var Redis=require(_0x5a2a('0x10'));var authService=require(_0x5a2a('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x5a2a('0x12'));var hardwareService=require(_0x5a2a('0x13'));var logger=require(_0x5a2a('0x14'))('api');var utils=require(_0x5a2a('0x15'));var config=require(_0x5a2a('0x16'));var licenseUtil=require(_0x5a2a('0x17'));var db=require(_0x5a2a('0x18'))['db'];function respondWithStatusCode(_0x219d2a,_0x48ddb0){_0x48ddb0=_0x48ddb0||0xcc;return function(_0x52ccd5){if(_0x52ccd5){return _0x219d2a[_0x5a2a('0x19')](_0x48ddb0);}return _0x219d2a[_0x5a2a('0x1a')](_0x48ddb0)[_0x5a2a('0x1b')]();};}function respondWithResult(_0x478a07,_0x5bf9d9){_0x5bf9d9=_0x5bf9d9||0xc8;return function(_0x177fca){if(_0x177fca){return _0x478a07[_0x5a2a('0x1a')](_0x5bf9d9)[_0x5a2a('0x1c')](_0x177fca);}};}function respondWithFilteredResult(_0x579e2a,_0x265e32){return function(_0xf7a275){if(_0xf7a275){var _0x4d9482=typeof _0x265e32[_0x5a2a('0x1d')]===_0x5a2a('0x1e')&&typeof _0x265e32[_0x5a2a('0x1f')]==='undefined';var _0x5410ec=_0xf7a275['count'];var _0x2382d6=_0x4d9482?0x0:_0x265e32[_0x5a2a('0x1d')];var _0x32f232=_0x4d9482?_0xf7a275[_0x5a2a('0x20')]:_0x265e32['offset']+_0x265e32[_0x5a2a('0x1f')];var _0x583e6d;if(_0x32f232>=_0x5410ec){_0x32f232=_0x5410ec;_0x583e6d=0xc8;}else{_0x583e6d=0xce;}_0x579e2a['status'](_0x583e6d);return _0x579e2a[_0x5a2a('0x21')](_0x5a2a('0x22'),_0x2382d6+'-'+_0x32f232+'/'+_0x5410ec)[_0x5a2a('0x1c')](_0xf7a275);}return null;};}function patchUpdates(_0x599107){return function(_0x2eb6f9){try{jsonpatch[_0x5a2a('0x23')](_0x2eb6f9,_0x599107,!![]);}catch(_0x56b9f3){return BPromise[_0x5a2a('0x24')](_0x56b9f3);}return _0x2eb6f9['save']();};}function saveUpdates(_0x382b49,_0x355a7e){return function(_0x347cce){if(_0x347cce){return _0x347cce[_0x5a2a('0x25')](_0x382b49)[_0x5a2a('0x26')](function(_0x3f310a){return _0x3f310a;});}return null;};}function removeEntity(_0x1167a8,_0x39534f){return function(_0x530e1e){if(_0x530e1e){return _0x530e1e['destroy']()[_0x5a2a('0x26')](function(){_0x1167a8[_0x5a2a('0x1a')](0xcc)[_0x5a2a('0x1b')]();});}};}function handleEntityNotFound(_0xafbef7,_0x3a5503){return function(_0x10c70e){if(!_0x10c70e){_0xafbef7[_0x5a2a('0x19')](0x194);}return _0x10c70e;};}function handleError(_0xc44009,_0x592eb4){_0x592eb4=_0x592eb4||0x1f4;return function(_0x954ccb){logger[_0x5a2a('0x27')](_0x954ccb[_0x5a2a('0x28')]);if(_0x954ccb[_0x5a2a('0x29')]){delete _0x954ccb[_0x5a2a('0x29')];}_0xc44009[_0x5a2a('0x1a')](_0x592eb4)[_0x5a2a('0x2a')](_0x954ccb);};}exports[_0x5a2a('0x2b')]=function(_0x47c34d,_0x211c7b){var _0x255542={},_0x22a5ac={},_0x1464c4={'count':0x0,'rows':[]};var _0x40754a=_[_0x5a2a('0x2c')](db[_0x5a2a('0x2d')]['rawAttributes'],function(_0x28e8d8){return{'name':_0x28e8d8['fieldName'],'type':_0x28e8d8[_0x5a2a('0x2e')]['key']};});_0x22a5ac[_0x5a2a('0x2f')]=_['map'](_0x40754a,'name');_0x22a5ac['query']=_['keys'](_0x47c34d[_0x5a2a('0x30')]);_0x22a5ac[_0x5a2a('0x31')]=_[_0x5a2a('0x32')](_0x22a5ac[_0x5a2a('0x2f')],_0x22a5ac[_0x5a2a('0x30')]);_0x255542[_0x5a2a('0x33')]=_[_0x5a2a('0x32')](_0x22a5ac[_0x5a2a('0x2f')],qs['fields'](_0x47c34d[_0x5a2a('0x30')][_0x5a2a('0x34')]));_0x255542[_0x5a2a('0x33')]=_0x255542[_0x5a2a('0x33')][_0x5a2a('0x35')]?_0x255542[_0x5a2a('0x33')]:_0x22a5ac[_0x5a2a('0x2f')];if(!_0x47c34d['query'][_0x5a2a('0x36')](_0x5a2a('0x37'))){_0x255542[_0x5a2a('0x1f')]=qs[_0x5a2a('0x1f')](_0x47c34d['query'][_0x5a2a('0x1f')]);_0x255542[_0x5a2a('0x1d')]=qs[_0x5a2a('0x1d')](_0x47c34d[_0x5a2a('0x30')][_0x5a2a('0x1d')]);}_0x255542[_0x5a2a('0x38')]=qs[_0x5a2a('0x39')](_0x47c34d[_0x5a2a('0x30')]['sort']);_0x255542[_0x5a2a('0x3a')]=qs[_0x5a2a('0x31')](_['pick'](_0x47c34d['query'],_0x22a5ac[_0x5a2a('0x31')]),_0x40754a);if(_0x47c34d[_0x5a2a('0x30')][_0x5a2a('0x3b')]){_0x255542[_0x5a2a('0x3a')]=_[_0x5a2a('0x3c')](_0x255542[_0x5a2a('0x3a')],{'$or':_['map'](_0x40754a,function(_0x1a8f3d){if(_0x1a8f3d[_0x5a2a('0x2e')]!==_0x5a2a('0x3d')){var _0x231583={};_0x231583[_0x1a8f3d['name']]={'$like':'%'+_0x47c34d[_0x5a2a('0x30')][_0x5a2a('0x3b')]+'%'};return _0x231583;}})});}_0x255542=_[_0x5a2a('0x3c')]({},_0x255542,_0x47c34d[_0x5a2a('0x3e')]);var _0x5cd403={'where':_0x255542[_0x5a2a('0x3a')]};return db[_0x5a2a('0x2d')][_0x5a2a('0x20')](_0x5cd403)[_0x5a2a('0x26')](function(_0x337d38){_0x1464c4['count']=_0x337d38;if(_0x47c34d['query']['includeAll']){_0x255542[_0x5a2a('0x3f')]=[{'all':!![]}];}return db['CmHopperBlack'][_0x5a2a('0x40')](_0x255542);})['then'](function(_0x31e5fb){_0x1464c4[_0x5a2a('0x41')]=_0x31e5fb;return _0x1464c4;})[_0x5a2a('0x26')](respondWithFilteredResult(_0x211c7b,_0x255542))[_0x5a2a('0x42')](handleError(_0x211c7b,null));};exports[_0x5a2a('0x43')]=function(_0x2c9b93,_0x5aff41){var _0x482c10={'raw':!![],'where':{'id':_0x2c9b93[_0x5a2a('0x44')]['id']}},_0x26ffac={};_0x26ffac[_0x5a2a('0x2f')]=_[_0x5a2a('0x45')](db['CmHopperBlack'][_0x5a2a('0x46')]);_0x26ffac[_0x5a2a('0x30')]=_['keys'](_0x2c9b93[_0x5a2a('0x30')]);_0x26ffac['filters']=_[_0x5a2a('0x32')](_0x26ffac[_0x5a2a('0x2f')],_0x26ffac['query']);_0x482c10[_0x5a2a('0x33')]=_[_0x5a2a('0x32')](_0x26ffac['model'],qs[_0x5a2a('0x34')](_0x2c9b93[_0x5a2a('0x30')][_0x5a2a('0x34')]));_0x482c10[_0x5a2a('0x33')]=_0x482c10[_0x5a2a('0x33')][_0x5a2a('0x35')]?_0x482c10[_0x5a2a('0x33')]:_0x26ffac[_0x5a2a('0x2f')];if(_0x2c9b93[_0x5a2a('0x30')][_0x5a2a('0x47')]){_0x482c10[_0x5a2a('0x3f')]=[{'all':!![]}];}_0x482c10=_[_0x5a2a('0x3c')]({},_0x482c10,_0x2c9b93[_0x5a2a('0x3e')]);return db[_0x5a2a('0x2d')][_0x5a2a('0x48')](_0x482c10)[_0x5a2a('0x26')](handleEntityNotFound(_0x5aff41,null))['then'](respondWithResult(_0x5aff41,null))[_0x5a2a('0x42')](handleError(_0x5aff41,null));};exports['update']=function(_0x232cb3,_0x3b682c){if(_0x232cb3[_0x5a2a('0x49')]['id']){delete _0x232cb3[_0x5a2a('0x49')]['id'];}return db[_0x5a2a('0x2d')][_0x5a2a('0x48')]({'where':{'id':_0x232cb3[_0x5a2a('0x44')]['id']}})['then'](handleEntityNotFound(_0x3b682c,null))[_0x5a2a('0x26')](saveUpdates(_0x232cb3['body'],null))[_0x5a2a('0x26')](respondWithResult(_0x3b682c,null))[_0x5a2a('0x42')](handleError(_0x3b682c,null));};exports[_0x5a2a('0x4a')]=function(_0x63cf4e,_0x5b97c1){return db[_0x5a2a('0x2d')][_0x5a2a('0x48')]({'where':{'id':_0x63cf4e[_0x5a2a('0x44')]['id']}})['then'](handleEntityNotFound(_0x5b97c1,null))['then'](removeEntity(_0x5b97c1,null))[_0x5a2a('0x42')](handleError(_0x5b97c1,null));};exports['describe']=function(_0xca51c4,_0x2ef2f7){return db[_0x5a2a('0x2d')]['describe']()['then'](respondWithResult(_0x2ef2f7,null))['catch'](handleError(_0x2ef2f7,null));};
\ No newline at end of file
+var _0x261b=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','Content-Range','save','stack','name','index','map','CmHopperBlack','rawAttributes','fieldName','type','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filters','merge','filter','then','includeAll','include','findAll','rows','catch','show','params','find','update','body','destroy','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','ejs','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis'];(function(_0x3b8e35,_0x5046e8){var _0x2aeff1=function(_0x50bef6){while(--_0x50bef6){_0x3b8e35['push'](_0x3b8e35['shift']());}};_0x2aeff1(++_0x5046e8);}(_0x261b,0x108));var _0xb261=function(_0x4a0772,_0x2b7b45){_0x4a0772=_0x4a0772-0x0;var _0x29cf88=_0x261b[_0x4a0772];return _0x29cf88;};'use strict';var emlformat=require(_0xb261('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb261('0x1'));var jsonpatch=require(_0xb261('0x2'));var rp=require(_0xb261('0x3'));var moment=require(_0xb261('0x4'));var BPromise=require(_0xb261('0x5'));var Mustache=require(_0xb261('0x6'));var util=require(_0xb261('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xb261('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb261('0x9'));var crypto=require(_0xb261('0xa'));var jsforce=require(_0xb261('0xb'));var deskjs=require(_0xb261('0xc'));var toCsv=require(_0xb261('0xd'));var querystring=require(_0xb261('0xe'));var Papa=require('papaparse');var Redis=require(_0xb261('0xf'));var authService=require(_0xb261('0x10'));var qs=require(_0xb261('0x11'));var as=require(_0xb261('0x12'));var hardwareService=require(_0xb261('0x13'));var logger=require('../../config/logger')(_0xb261('0x14'));var utils=require('../../config/utils');var config=require(_0xb261('0x15'));var licenseUtil=require(_0xb261('0x16'));var db=require(_0xb261('0x17'))['db'];function respondWithStatusCode(_0x302e1d,_0x1cab8e){_0x1cab8e=_0x1cab8e||0xcc;return function(_0x33e638){if(_0x33e638){return _0x302e1d[_0xb261('0x18')](_0x1cab8e);}return _0x302e1d[_0xb261('0x19')](_0x1cab8e)[_0xb261('0x1a')]();};}function respondWithResult(_0x466f25,_0x2ddb0e){_0x2ddb0e=_0x2ddb0e||0xc8;return function(_0x11de57){if(_0x11de57){return _0x466f25[_0xb261('0x19')](_0x2ddb0e)[_0xb261('0x1b')](_0x11de57);}};}function respondWithFilteredResult(_0xbdb521,_0xbfe961){return function(_0x149e2e){if(_0x149e2e){var _0x50e3bd=typeof _0xbfe961[_0xb261('0x1c')]===_0xb261('0x1d')&&typeof _0xbfe961['limit']==='undefined';var _0x55aa07=_0x149e2e[_0xb261('0x1e')];var _0x473c91=_0x50e3bd?0x0:_0xbfe961[_0xb261('0x1c')];var _0x203555=_0x50e3bd?_0x149e2e[_0xb261('0x1e')]:_0xbfe961['offset']+_0xbfe961['limit'];var _0x23d092;if(_0x203555>=_0x55aa07){_0x203555=_0x55aa07;_0x23d092=0xc8;}else{_0x23d092=0xce;}_0xbdb521['status'](_0x23d092);return _0xbdb521['set'](_0xb261('0x1f'),_0x473c91+'-'+_0x203555+'/'+_0x55aa07)['json'](_0x149e2e);}return null;};}function patchUpdates(_0x5c8c07){return function(_0x575868){try{jsonpatch['apply'](_0x575868,_0x5c8c07,!![]);}catch(_0x1f7769){return BPromise['reject'](_0x1f7769);}return _0x575868[_0xb261('0x20')]();};}function saveUpdates(_0x31e135,_0x2ebe35){return function(_0x35bb1d){if(_0x35bb1d){return _0x35bb1d['update'](_0x31e135)['then'](function(_0x10fbf5){return _0x10fbf5;});}return null;};}function removeEntity(_0x323754,_0x12fea2){return function(_0x31f6d4){if(_0x31f6d4){return _0x31f6d4['destroy']()['then'](function(){_0x323754[_0xb261('0x19')](0xcc)[_0xb261('0x1a')]();});}};}function handleEntityNotFound(_0x499c24,_0x364b93){return function(_0x2de1a5){if(!_0x2de1a5){_0x499c24[_0xb261('0x18')](0x194);}return _0x2de1a5;};}function handleError(_0xcd5c18,_0x65a918){_0x65a918=_0x65a918||0x1f4;return function(_0x45c041){logger['error'](_0x45c041[_0xb261('0x21')]);if(_0x45c041[_0xb261('0x22')]){delete _0x45c041[_0xb261('0x22')];}_0xcd5c18['status'](_0x65a918)['send'](_0x45c041);};}exports[_0xb261('0x23')]=function(_0x2bd574,_0x375dbd){var _0x138020={},_0x582680={},_0x333f66={'count':0x0,'rows':[]};var _0x521f5b=_[_0xb261('0x24')](db[_0xb261('0x25')][_0xb261('0x26')],function(_0xf759a0){return{'name':_0xf759a0[_0xb261('0x27')],'type':_0xf759a0[_0xb261('0x28')]['key']};});_0x582680[_0xb261('0x29')]=_[_0xb261('0x24')](_0x521f5b,_0xb261('0x22'));_0x582680[_0xb261('0x2a')]=_[_0xb261('0x2b')](_0x2bd574['query']);_0x582680['filters']=_['intersection'](_0x582680[_0xb261('0x29')],_0x582680['query']);_0x138020[_0xb261('0x2c')]=_[_0xb261('0x2d')](_0x582680[_0xb261('0x29')],qs[_0xb261('0x2e')](_0x2bd574[_0xb261('0x2a')][_0xb261('0x2e')]));_0x138020['attributes']=_0x138020[_0xb261('0x2c')][_0xb261('0x2f')]?_0x138020[_0xb261('0x2c')]:_0x582680['model'];if(!_0x2bd574[_0xb261('0x2a')][_0xb261('0x30')](_0xb261('0x31'))){_0x138020['limit']=qs[_0xb261('0x32')](_0x2bd574[_0xb261('0x2a')][_0xb261('0x32')]);_0x138020[_0xb261('0x1c')]=qs[_0xb261('0x1c')](_0x2bd574[_0xb261('0x2a')][_0xb261('0x1c')]);}_0x138020[_0xb261('0x33')]=qs[_0xb261('0x34')](_0x2bd574[_0xb261('0x2a')][_0xb261('0x34')]);_0x138020[_0xb261('0x35')]=qs[_0xb261('0x36')](_['pick'](_0x2bd574[_0xb261('0x2a')],_0x582680[_0xb261('0x36')]),_0x521f5b);if(_0x2bd574[_0xb261('0x2a')]['filter']){_0x138020['where']=_[_0xb261('0x37')](_0x138020[_0xb261('0x35')],{'$or':_[_0xb261('0x24')](_0x521f5b,function(_0x4670ce){if(_0x4670ce[_0xb261('0x28')]!=='VIRTUAL'){var _0x2f1dca={};_0x2f1dca[_0x4670ce[_0xb261('0x22')]]={'$like':'%'+_0x2bd574[_0xb261('0x2a')][_0xb261('0x38')]+'%'};return _0x2f1dca;}})});}_0x138020=_[_0xb261('0x37')]({},_0x138020,_0x2bd574['options']);var _0x56905c={'where':_0x138020['where']};return db[_0xb261('0x25')][_0xb261('0x1e')](_0x56905c)[_0xb261('0x39')](function(_0xcd114a){_0x333f66[_0xb261('0x1e')]=_0xcd114a;if(_0x2bd574[_0xb261('0x2a')][_0xb261('0x3a')]){_0x138020[_0xb261('0x3b')]=[{'all':!![]}];}return db['CmHopperBlack'][_0xb261('0x3c')](_0x138020);})[_0xb261('0x39')](function(_0x346997){_0x333f66[_0xb261('0x3d')]=_0x346997;return _0x333f66;})[_0xb261('0x39')](respondWithFilteredResult(_0x375dbd,_0x138020))[_0xb261('0x3e')](handleError(_0x375dbd,null));};exports[_0xb261('0x3f')]=function(_0x5746f5,_0x1a3da2){var _0x2ebc14={'raw':!![],'where':{'id':_0x5746f5[_0xb261('0x40')]['id']}},_0x965722={};_0x965722[_0xb261('0x29')]=_[_0xb261('0x2b')](db[_0xb261('0x25')]['rawAttributes']);_0x965722[_0xb261('0x2a')]=_[_0xb261('0x2b')](_0x5746f5[_0xb261('0x2a')]);_0x965722[_0xb261('0x36')]=_[_0xb261('0x2d')](_0x965722[_0xb261('0x29')],_0x965722[_0xb261('0x2a')]);_0x2ebc14[_0xb261('0x2c')]=_[_0xb261('0x2d')](_0x965722[_0xb261('0x29')],qs[_0xb261('0x2e')](_0x5746f5[_0xb261('0x2a')]['fields']));_0x2ebc14['attributes']=_0x2ebc14[_0xb261('0x2c')]['length']?_0x2ebc14[_0xb261('0x2c')]:_0x965722[_0xb261('0x29')];if(_0x5746f5['query'][_0xb261('0x3a')]){_0x2ebc14[_0xb261('0x3b')]=[{'all':!![]}];}_0x2ebc14=_['merge']({},_0x2ebc14,_0x5746f5['options']);return db[_0xb261('0x25')][_0xb261('0x41')](_0x2ebc14)['then'](handleEntityNotFound(_0x1a3da2,null))[_0xb261('0x39')](respondWithResult(_0x1a3da2,null))['catch'](handleError(_0x1a3da2,null));};exports[_0xb261('0x42')]=function(_0x2bbd5e,_0x2097fa){if(_0x2bbd5e[_0xb261('0x43')]['id']){delete _0x2bbd5e[_0xb261('0x43')]['id'];}return db[_0xb261('0x25')][_0xb261('0x41')]({'where':{'id':_0x2bbd5e['params']['id']}})['then'](handleEntityNotFound(_0x2097fa,null))[_0xb261('0x39')](saveUpdates(_0x2bbd5e[_0xb261('0x43')],null))['then'](respondWithResult(_0x2097fa,null))[_0xb261('0x3e')](handleError(_0x2097fa,null));};exports[_0xb261('0x44')]=function(_0x4318a3,_0x2be6c3){return db[_0xb261('0x25')][_0xb261('0x41')]({'where':{'id':_0x4318a3['params']['id']}})['then'](handleEntityNotFound(_0x2be6c3,null))[_0xb261('0x39')](removeEntity(_0x2be6c3,null))[_0xb261('0x3e')](handleError(_0x2be6c3,null));};exports['describe']=function(_0x8a3d0c,_0x453031){return db[_0xb261('0x25')][_0xb261('0x45')]()['then'](respondWithResult(_0x453031,null))[_0xb261('0x3e')](handleError(_0x453031,null));};
\ No newline at end of file
index ca2ad1a..10a0b88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f89=['util','../../config/logger','api','moment','bluebird','rimraf','./cmHopperBlack.attributes','define','CmHopperBlack','cm_hopper_black','lodash'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x9f89,0x133));var _0x99f8=function(_0x43887e,_0x353ef4){_0x43887e=_0x43887e-0x0;var _0x25d96d=_0x9f89[_0x43887e];return _0x25d96d;};'use strict';var _=require(_0x99f8('0x0'));var util=require(_0x99f8('0x1'));var logger=require(_0x99f8('0x2'))(_0x99f8('0x3'));var moment=require(_0x99f8('0x4'));var BPromise=require(_0x99f8('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x99f8('0x6'));var config=require('../../config/environment');var attributes=require(_0x99f8('0x7'));module['exports']=function(_0xffa171,_0x30dba8){return _0xffa171[_0x99f8('0x8')](_0x99f8('0x9'),attributes,{'tableName':_0x99f8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc476=['../../config/environment','./cmHopperBlack.attributes','CmHopperBlack','cm_hopper_black','util','api','moment','bluebird','request-promise','rimraf'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xc476,0x176));var _0x6c47=function(_0xb1937e,_0x330b2f){_0xb1937e=_0xb1937e-0x0;var _0x44474f=_0xc476[_0xb1937e];return _0x44474f;};'use strict';var _=require('lodash');var util=require(_0x6c47('0x0'));var logger=require('../../config/logger')(_0x6c47('0x1'));var moment=require(_0x6c47('0x2'));var BPromise=require(_0x6c47('0x3'));var rp=require(_0x6c47('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6c47('0x5'));var config=require(_0x6c47('0x6'));var attributes=require(_0x6c47('0x7'));module['exports']=function(_0x5f5146,_0x4de7fc){return _0x5f5146['define'](_0x6c47('0x8'),attributes,{'tableName':_0x6c47('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 07c07c1..1e54ed0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8121=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','error','message','result','catch','GetCmHopperBlack','CmHopperBlack','findAll','options','attributes','limit','include','model','update','raw','UpdateCmHopperBlack','stringify','DestroyCmHopperBlack','where','lodash','util','moment'];(function(_0x1f1a9b,_0x5bec1a){var _0x4b8293=function(_0x18f248){while(--_0x18f248){_0x1f1a9b['push'](_0x1f1a9b['shift']());}};_0x4b8293(++_0x5bec1a);}(_0x8121,0x115));var _0x1812=function(_0x2fb667,_0x334e9a){_0x2fb667=_0x2fb667-0x0;var _0x166be3=_0x8121[_0x2fb667];return _0x166be3;};'use strict';var _=require(_0x1812('0x0'));var util=require(_0x1812('0x1'));var moment=require(_0x1812('0x2'));var BPromise=require('bluebird');var rs=require(_0x1812('0x3'));var fs=require('fs');var Redis=require(_0x1812('0x4'));var db=require(_0x1812('0x5'))['db'];var utils=require(_0x1812('0x6'));var logger=require(_0x1812('0x7'))('rpc');var config=require(_0x1812('0x8'));var jayson=require(_0x1812('0x9'));var client=jayson[_0x1812('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x10c5bc,_0x56a431,_0x1df575){return new BPromise(function(_0x5b943f,_0x79014e){return client['request'](_0x10c5bc,_0x1df575)[_0x1812('0xb')](function(_0x258de0){logger[_0x1812('0xc')](_0x1812('0xd'),_0x56a431,_0x1812('0xe'));logger[_0x1812('0xf')](_0x1812('0x10'),_0x56a431,_0x1812('0xe'),JSON['stringify'](_0x258de0));if(_0x258de0['error']){if(_0x258de0['error']['code']===0x1f4){logger[_0x1812('0x11')]('CmHopperBlack,\x20%s,\x20%s',_0x56a431,_0x258de0['error'][_0x1812('0x12')]);return _0x79014e(_0x258de0['error'][_0x1812('0x12')]);}logger[_0x1812('0x11')](_0x1812('0xd'),_0x56a431,_0x258de0[_0x1812('0x11')][_0x1812('0x12')]);return _0x5b943f(_0x258de0[_0x1812('0x11')][_0x1812('0x12')]);}else{logger['info'](_0x1812('0xd'),_0x56a431,_0x1812('0xe'));_0x5b943f(_0x258de0[_0x1812('0x13')][_0x1812('0x12')]);}})[_0x1812('0x14')](function(_0x246b44){logger[_0x1812('0x11')](_0x1812('0xd'),_0x56a431,_0x246b44);_0x79014e(_0x246b44);});});}exports[_0x1812('0x15')]=function(_0x10109b){var _0x7fa91a=this;return new Promise(function(_0x5685f4,_0x1f6983){return db[_0x1812('0x16')][_0x1812('0x17')]({'raw':_0x10109b[_0x1812('0x18')]?_0x10109b[_0x1812('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x10109b[_0x1812('0x18')]?_0x10109b[_0x1812('0x18')]['where']||null:null,'attributes':_0x10109b[_0x1812('0x18')]?_0x10109b[_0x1812('0x18')][_0x1812('0x19')]||null:null,'limit':_0x10109b[_0x1812('0x18')]?_0x10109b[_0x1812('0x18')][_0x1812('0x1a')]||null:null,'include':_0x10109b[_0x1812('0x18')]?_0x10109b[_0x1812('0x18')][_0x1812('0x1b')]?_['map'](_0x10109b[_0x1812('0x18')][_0x1812('0x1b')],function(_0x29e06b){return{'model':db[_0x29e06b['model']],'as':_0x29e06b['as'],'attributes':_0x29e06b['attributes'],'include':_0x29e06b[_0x1812('0x1b')]?_['map'](_0x29e06b[_0x1812('0x1b')],function(_0x5af240){return{'model':db[_0x5af240[_0x1812('0x1c')]],'as':_0x5af240['as'],'attributes':_0x5af240[_0x1812('0x19')],'include':_0x5af240[_0x1812('0x1b')]?_['map'](_0x5af240[_0x1812('0x1b')],function(_0x5c3be6){return{'model':db[_0x5c3be6['model']],'as':_0x5c3be6['as'],'attributes':_0x5c3be6[_0x1812('0x19')]};}):[]};}):[]};}):[]:[]})[_0x1812('0xb')](function(_0x15934b){logger[_0x1812('0xc')](_0x1812('0x15'),_0x10109b);logger[_0x1812('0xf')](_0x1812('0x15'),_0x10109b,JSON['stringify'](_0x15934b));_0x5685f4(_0x15934b);})[_0x1812('0x14')](function(_0x2d4207){logger['error'](_0x1812('0x15'),_0x2d4207[_0x1812('0x12')],_0x10109b);_0x1f6983(_0x7fa91a[_0x1812('0x11')](0x1f4,_0x2d4207[_0x1812('0x12')]));});});};exports['UpdateCmHopperBlack']=function(_0x1de40b){var _0x1c8ee3=this;return new Promise(function(_0x188ae1,_0x8c11e4){return db['CmHopperBlack'][_0x1812('0x1d')](_0x1de40b['body'],{'raw':_0x1de40b[_0x1812('0x18')]?_0x1de40b['options'][_0x1812('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1de40b[_0x1812('0x18')]?_0x1de40b['options']['where']||null:null,'attributes':_0x1de40b['options']?_0x1de40b['options'][_0x1812('0x19')]||null:null,'limit':_0x1de40b['options']?_0x1de40b['options'][_0x1812('0x1a')]||null:null})[_0x1812('0xb')](function(_0x41c482){logger[_0x1812('0xc')](_0x1812('0x1f'),_0x1de40b);logger['debug'](_0x1812('0x1f'),_0x1de40b,JSON[_0x1812('0x20')](_0x41c482));_0x188ae1(_0x41c482);})[_0x1812('0x14')](function(_0x397693){logger[_0x1812('0x11')](_0x1812('0x1f'),_0x397693['message'],_0x1de40b);_0x8c11e4(_0x1c8ee3['error'](0x1f4,_0x397693['message']));});});};exports[_0x1812('0x21')]=function(_0x1886b6){var _0x21bb89=this;return new Promise(function(_0x31307c,_0x586563){return db[_0x1812('0x16')]['destroy']({'where':_0x1886b6['options']?_0x1886b6[_0x1812('0x18')][_0x1812('0x22')]||null:null})['then'](function(_0x299617){logger[_0x1812('0xc')](_0x1812('0x21'),_0x1886b6);logger['debug']('DestroyCmHopperBlack',_0x1886b6,JSON[_0x1812('0x20')](_0x299617));_0x31307c(_0x299617);})['catch'](function(_0x7bb4be){logger[_0x1812('0x11')](_0x1812('0x21'),_0x7bb4be['message'],_0x1886b6);_0x586563(_0x21bb89[_0x1812('0x11')](0x1f4,_0x7bb4be[_0x1812('0x12')]));});});};
\ No newline at end of file
+var _0xffff=['stringify','error','code','CmHopperBlack,\x20%s,\x20%s','message','info','result','catch','GetCmHopperBlack','CmHopperBlack','findAll','options','raw','where','attributes','limit','include','map','model','UpdateCmHopperBlack','update','body','DestroyCmHopperBlack','destroy','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','http','request','then','debug','request\x20sent'];(function(_0x70b60c,_0x4baa3a){var _0x423065=function(_0x37be8c){while(--_0x37be8c){_0x70b60c['push'](_0x70b60c['shift']());}};_0x423065(++_0x4baa3a);}(_0xffff,0x1ec));var _0xffff=function(_0x58d7e5,_0x202353){_0x58d7e5=_0x58d7e5-0x0;var _0x466d4a=_0xffff[_0x58d7e5];return _0x466d4a;};'use strict';var _=require(_0xffff('0x0'));var util=require(_0xffff('0x1'));var moment=require(_0xffff('0x2'));var BPromise=require(_0xffff('0x3'));var rs=require(_0xffff('0x4'));var fs=require('fs');var Redis=require(_0xffff('0x5'));var db=require(_0xffff('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xffff('0x7'));var config=require(_0xffff('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xffff('0x9')][_0xffff('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x116467,_0x102f1e,_0x2c8589){return new BPromise(function(_0x2de696,_0x310db0){return client[_0xffff('0xb')](_0x116467,_0x2c8589)[_0xffff('0xc')](function(_0x5a07de){logger['info']('CmHopperBlack,\x20%s,\x20%s',_0x102f1e,'request\x20sent');logger[_0xffff('0xd')]('CmHopperBlack,\x20%s,\x20%s,\x20%s',_0x102f1e,_0xffff('0xe'),JSON[_0xffff('0xf')](_0x5a07de));if(_0x5a07de[_0xffff('0x10')]){if(_0x5a07de[_0xffff('0x10')][_0xffff('0x11')]===0x1f4){logger[_0xffff('0x10')](_0xffff('0x12'),_0x102f1e,_0x5a07de[_0xffff('0x10')][_0xffff('0x13')]);return _0x310db0(_0x5a07de[_0xffff('0x10')][_0xffff('0x13')]);}logger[_0xffff('0x10')]('CmHopperBlack,\x20%s,\x20%s',_0x102f1e,_0x5a07de[_0xffff('0x10')][_0xffff('0x13')]);return _0x2de696(_0x5a07de[_0xffff('0x10')]['message']);}else{logger[_0xffff('0x14')](_0xffff('0x12'),_0x102f1e,_0xffff('0xe'));_0x2de696(_0x5a07de[_0xffff('0x15')]['message']);}})[_0xffff('0x16')](function(_0x137324){logger[_0xffff('0x10')](_0xffff('0x12'),_0x102f1e,_0x137324);_0x310db0(_0x137324);});});}exports[_0xffff('0x17')]=function(_0x3ef729){var _0x12138c=this;return new Promise(function(_0x1cf94e,_0xf21468){return db[_0xffff('0x18')][_0xffff('0x19')]({'raw':_0x3ef729[_0xffff('0x1a')]?_0x3ef729['options'][_0xffff('0x1b')]===undefined?!![]:![]:!![],'where':_0x3ef729[_0xffff('0x1a')]?_0x3ef729[_0xffff('0x1a')][_0xffff('0x1c')]||null:null,'attributes':_0x3ef729['options']?_0x3ef729[_0xffff('0x1a')][_0xffff('0x1d')]||null:null,'limit':_0x3ef729[_0xffff('0x1a')]?_0x3ef729[_0xffff('0x1a')][_0xffff('0x1e')]||null:null,'include':_0x3ef729[_0xffff('0x1a')]?_0x3ef729[_0xffff('0x1a')][_0xffff('0x1f')]?_[_0xffff('0x20')](_0x3ef729[_0xffff('0x1a')][_0xffff('0x1f')],function(_0x4172a1){return{'model':db[_0x4172a1['model']],'as':_0x4172a1['as'],'attributes':_0x4172a1[_0xffff('0x1d')],'include':_0x4172a1[_0xffff('0x1f')]?_['map'](_0x4172a1['include'],function(_0x1a670e){return{'model':db[_0x1a670e[_0xffff('0x21')]],'as':_0x1a670e['as'],'attributes':_0x1a670e[_0xffff('0x1d')],'include':_0x1a670e[_0xffff('0x1f')]?_[_0xffff('0x20')](_0x1a670e[_0xffff('0x1f')],function(_0x4e780a){return{'model':db[_0x4e780a[_0xffff('0x21')]],'as':_0x4e780a['as'],'attributes':_0x4e780a['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x16d799){logger['info']('GetCmHopperBlack',_0x3ef729);logger[_0xffff('0xd')]('GetCmHopperBlack',_0x3ef729,JSON[_0xffff('0xf')](_0x16d799));_0x1cf94e(_0x16d799);})[_0xffff('0x16')](function(_0x54671f){logger[_0xffff('0x10')](_0xffff('0x17'),_0x54671f[_0xffff('0x13')],_0x3ef729);_0xf21468(_0x12138c[_0xffff('0x10')](0x1f4,_0x54671f[_0xffff('0x13')]));});});};exports[_0xffff('0x22')]=function(_0x2b6ea5){var _0x1e4371=this;return new Promise(function(_0x226627,_0x5dc18d){return db[_0xffff('0x18')][_0xffff('0x23')](_0x2b6ea5[_0xffff('0x24')],{'raw':_0x2b6ea5[_0xffff('0x1a')]?_0x2b6ea5[_0xffff('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2b6ea5[_0xffff('0x1a')]?_0x2b6ea5[_0xffff('0x1a')][_0xffff('0x1c')]||null:null,'attributes':_0x2b6ea5[_0xffff('0x1a')]?_0x2b6ea5[_0xffff('0x1a')][_0xffff('0x1d')]||null:null,'limit':_0x2b6ea5[_0xffff('0x1a')]?_0x2b6ea5[_0xffff('0x1a')][_0xffff('0x1e')]||null:null})['then'](function(_0x5e6ce1){logger['info'](_0xffff('0x22'),_0x2b6ea5);logger[_0xffff('0xd')]('UpdateCmHopperBlack',_0x2b6ea5,JSON[_0xffff('0xf')](_0x5e6ce1));_0x226627(_0x5e6ce1);})[_0xffff('0x16')](function(_0x3108f4){logger[_0xffff('0x10')](_0xffff('0x22'),_0x3108f4['message'],_0x2b6ea5);_0x5dc18d(_0x1e4371['error'](0x1f4,_0x3108f4['message']));});});};exports[_0xffff('0x25')]=function(_0x55f3aa){var _0x24973b=this;return new Promise(function(_0x706185,_0x184e12){return db[_0xffff('0x18')][_0xffff('0x26')]({'where':_0x55f3aa[_0xffff('0x1a')]?_0x55f3aa[_0xffff('0x1a')][_0xffff('0x1c')]||null:null})[_0xffff('0xc')](function(_0x2e55d3){logger[_0xffff('0x14')](_0xffff('0x25'),_0x55f3aa);logger['debug']('DestroyCmHopperBlack',_0x55f3aa,JSON[_0xffff('0xf')](_0x2e55d3));_0x706185(_0x2e55d3);})[_0xffff('0x16')](function(_0x419cac){logger[_0xffff('0x10')](_0xffff('0x25'),_0x419cac['message'],_0x55f3aa);_0x184e12(_0x24973b[_0xffff('0x10')](0x1f4,_0x419cac[_0xffff('0x13')]));});});};
\ No newline at end of file
index 07621c9..22bb70d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4137=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','index','/describe','isAuthenticated','/:id','show','put','update','delete','exports','multer','util','path','connect-timeout'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x4137,0xf8));var _0x7413=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x4137[_0x4565bf];return _0x5610ba;};'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['describe']);router[_0x7413('0xb')](_0x7413('0xf'),auth['isAuthenticated'](),controller[_0x7413('0x10')]);router[_0x7413('0x11')]('/:id',auth[_0x7413('0xe')](),controller[_0x7413('0x12')]);router[_0x7413('0x13')](_0x7413('0xf'),auth[_0x7413('0xe')](),controller['destroy']);module[_0x7413('0x14')]=router;
\ No newline at end of file
+var _0x7bd0=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','index','/describe','describe','/:id','show','update','delete','destroy','exports'];(function(_0x333fc8,_0x2b292c){var _0x432439=function(_0x5501b6){while(--_0x5501b6){_0x333fc8['push'](_0x333fc8['shift']());}};_0x432439(++_0x2b292c);}(_0x7bd0,0x111));var _0x07bd=function(_0x36b037,_0x2b234e){_0x36b037=_0x36b037-0x0;var _0x409194=_0x7bd0[_0x36b037];return _0x409194;};'use strict';var multer=require(_0x07bd('0x0'));var util=require(_0x07bd('0x1'));var path=require(_0x07bd('0x2'));var timeout=require(_0x07bd('0x3'));var express=require(_0x07bd('0x4'));var router=express[_0x07bd('0x5')]();var fs_extra=require(_0x07bd('0x6'));var auth=require(_0x07bd('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x07bd('0x8'));var controller=require(_0x07bd('0x9'));router[_0x07bd('0xa')]('/',auth[_0x07bd('0xb')](),controller[_0x07bd('0xc')]);router[_0x07bd('0xa')](_0x07bd('0xd'),auth['isAuthenticated'](),controller[_0x07bd('0xe')]);router['get'](_0x07bd('0xf'),auth[_0x07bd('0xb')](),controller[_0x07bd('0x10')]);router['put'](_0x07bd('0xf'),auth[_0x07bd('0xb')](),controller[_0x07bd('0x11')]);router[_0x07bd('0x12')]('/:id',auth[_0x07bd('0xb')](),controller[_0x07bd('0x13')]);module[_0x07bd('0x14')]=router;
\ No newline at end of file
index 9596bad..3d54052 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21f6=['diff','seconds','dispositionat','BOOLEAN','sequelize','moment','exports','INTEGER','STRING','DATE','getDataValue','setDataValue','followuptime'];(function(_0x1fe8be,_0x5e7860){var _0x1449bb=function(_0x17b23e){while(--_0x17b23e){_0x1fe8be['push'](_0x1fe8be['shift']());}};_0x1449bb(++_0x5e7860);}(_0x21f6,0x149));var _0x621f=function(_0x226ea2,_0x1909e4){_0x226ea2=_0x226ea2-0x0;var _0x4f3d04=_0x21f6[_0x226ea2];return _0x4f3d04;};'use strict';var Sequelize=require(_0x621f('0x0'));var moment=require(_0x621f('0x1'));module[_0x621f('0x2')]={'state':{'type':Sequelize[_0x621f('0x3')](0x2)},'statedesc':{'type':Sequelize[_0x621f('0x4')]},'scheduledat':{'type':Sequelize[_0x621f('0x5')]},'countbusyretry':{'type':Sequelize[_0x621f('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x621f('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x621f('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x621f('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x621f('0x4')]},'originatecalleridnum':{'type':Sequelize[_0x621f('0x4')]},'originatecalleridname':{'type':Sequelize[_0x621f('0x4')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x621f('0x4')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x621f('0x5')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0x621f('0x5')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x621f('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x621f('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x621f('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize[_0x621f('0x4')]},'campaigntype':{'type':Sequelize[_0x621f('0x4')]},'membername':{'type':Sequelize[_0x621f('0x4')]},'reason':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x621f('0x4')]},'dispositionat':{'type':Sequelize['DATE'],'set':function(_0x366409){var _0x52ef75=this[_0x621f('0x6')]('endtime');if(_0x52ef75&&_0x366409){this[_0x621f('0x7')](_0x621f('0x8'),moment(_0x366409)[_0x621f('0x9')](moment(_0x52ef75),_0x621f('0xa')));}return this['setDataValue'](_0x621f('0xb'),_0x366409);}},'amd':{'type':Sequelize[_0x621f('0xc')],'defaultValue':![]},'fax':{'type':Sequelize[_0x621f('0xc')],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x621f('0xc')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x621f('0x5')]},'callback':{'type':Sequelize[_0x621f('0xc')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x621f('0x5')]},'deleted':{'type':Sequelize[_0x621f('0x4')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x621f('0x5')]},'recallme':{'type':Sequelize[_0x621f('0xc')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x621f('0x5')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x621f('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x98f2=['DATE','endtime','setDataValue','followuptime','diff','seconds','dispositionat','BOOLEAN','moment','exports','INTEGER','STRING'];(function(_0x3770c8,_0x1e6cbd){var _0x25ac10=function(_0x4ab39f){while(--_0x4ab39f){_0x3770c8['push'](_0x3770c8['shift']());}};_0x25ac10(++_0x1e6cbd);}(_0x98f2,0x158));var _0x298f=function(_0x30acbc,_0x3c154a){_0x30acbc=_0x30acbc-0x0;var _0x733c46=_0x98f2[_0x30acbc];return _0x733c46;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x298f('0x0'));module[_0x298f('0x1')]={'state':{'type':Sequelize[_0x298f('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x298f('0x3')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0x298f('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x298f('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x298f('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x298f('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x298f('0x3')]},'originatecalleridname':{'type':Sequelize[_0x298f('0x3')]},'calleridnum':{'type':Sequelize[_0x298f('0x3')]},'calleridname':{'type':Sequelize[_0x298f('0x3')]},'starttime':{'type':Sequelize[_0x298f('0x4')]},'responsetime':{'type':Sequelize[_0x298f('0x4')]},'answertime':{'type':Sequelize[_0x298f('0x4')]},'droptime':{'type':Sequelize[_0x298f('0x4')]},'endtime':{'type':Sequelize[_0x298f('0x4')]},'ringtime':{'type':Sequelize[_0x298f('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x298f('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x298f('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x298f('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x298f('0x3')]},'campaign':{'type':Sequelize[_0x298f('0x3')]},'campaigntype':{'type':Sequelize[_0x298f('0x3')]},'membername':{'type':Sequelize[_0x298f('0x3')]},'reason':{'type':Sequelize[_0x298f('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x298f('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'dispositionat':{'type':Sequelize[_0x298f('0x4')],'set':function(_0x452e9d){var _0x2ae25c=this['getDataValue'](_0x298f('0x5'));if(_0x2ae25c&&_0x452e9d){this[_0x298f('0x6')](_0x298f('0x7'),moment(_0x452e9d)[_0x298f('0x8')](moment(_0x2ae25c),_0x298f('0x9')));}return this[_0x298f('0x6')](_0x298f('0xa'),_0x452e9d);}},'amd':{'type':Sequelize[_0x298f('0xb')],'defaultValue':![]},'fax':{'type':Sequelize[_0x298f('0xb')],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x298f('0xb')],'defaultValue':![]},'rescheduledat':{'type':Sequelize['DATE']},'callback':{'type':Sequelize[_0x298f('0xb')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x298f('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x298f('0x4')]},'deleted':{'type':Sequelize['STRING'],'defaultValue':null},'deletedat':{'type':Sequelize[_0x298f('0x4')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x298f('0x4')]},'countnosuchnumberretry':{'type':Sequelize[_0x298f('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x298f('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x298f('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x298f('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 3a79787..cd99fc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4819=['send','map','CmHopperFinal','rawAttributes','type','key','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','count','includeAll','include','catch','show','keys','find','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','findAll','params','sequelize','COUNT','literal','`state`\x20=\x200,\x201,\x20null','noSuchContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','VoiceQueue','insert','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','select','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','from','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state','calleridnum\x20NOT\x20IN\x20(?)','calleridnum','cm_hopper_final','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','into','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','calleridnum\x20IS\x20NOT\x20NULL','CmHopper','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','squel','crypto','jsforce','desk.js','to-csv','papaparse','../../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','set','Content-Range','apply','reject','update','then','destroy','stack','name'];(function(_0x15e800,_0x4a82f9){var _0x176659=function(_0x589597){while(--_0x589597){_0x15e800['push'](_0x15e800['shift']());}};_0x176659(++_0x4a82f9);}(_0x4819,0xcd));var _0x9481=function(_0x193109,_0x50a9ca){_0x193109=_0x193109-0x0;var _0x4af109=_0x4819[_0x193109];return _0x4af109;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9481('0x0'));var zipdir=require(_0x9481('0x1'));var jsonpatch=require(_0x9481('0x2'));var rp=require(_0x9481('0x3'));var moment=require(_0x9481('0x4'));var BPromise=require(_0x9481('0x5'));var Mustache=require(_0x9481('0x6'));var util=require(_0x9481('0x7'));var path=require(_0x9481('0x8'));var sox=require(_0x9481('0x9'));var csv=require('to-csv');var ejs=require(_0x9481('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x9481('0xb'));var crypto=require(_0x9481('0xc'));var jsforce=require(_0x9481('0xd'));var deskjs=require(_0x9481('0xe'));var toCsv=require(_0x9481('0xf'));var querystring=require('querystring');var Papa=require(_0x9481('0x10'));var Redis=require('ioredis');var authService=require(_0x9481('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x9481('0x12'));var hardwareService=require(_0x9481('0x13'));var logger=require(_0x9481('0x14'))(_0x9481('0x15'));var utils=require(_0x9481('0x16'));var config=require(_0x9481('0x17'));var licenseUtil=require(_0x9481('0x18'));var db=require(_0x9481('0x19'))['db'];function respondWithStatusCode(_0xed8e9,_0x499b87){_0x499b87=_0x499b87||0xcc;return function(_0x5aac02){if(_0x5aac02){return _0xed8e9[_0x9481('0x1a')](_0x499b87);}return _0xed8e9[_0x9481('0x1b')](_0x499b87)[_0x9481('0x1c')]();};}function respondWithResult(_0x28fcb6,_0x3d23c2){_0x3d23c2=_0x3d23c2||0xc8;return function(_0xc7a0b5){if(_0xc7a0b5){return _0x28fcb6[_0x9481('0x1b')](_0x3d23c2)['json'](_0xc7a0b5);}};}function respondWithFilteredResult(_0x4220f1,_0x7a7ee){return function(_0x5b1fe6){if(_0x5b1fe6){var _0x2266d5=typeof _0x7a7ee['offset']===_0x9481('0x1d')&&typeof _0x7a7ee[_0x9481('0x1e')]===_0x9481('0x1d');var _0x2bb2a4=_0x5b1fe6['count'];var _0x5eda66=_0x2266d5?0x0:_0x7a7ee[_0x9481('0x1f')];var _0x50a559=_0x2266d5?_0x5b1fe6['count']:_0x7a7ee[_0x9481('0x1f')]+_0x7a7ee[_0x9481('0x1e')];var _0x18c6f5;if(_0x50a559>=_0x2bb2a4){_0x50a559=_0x2bb2a4;_0x18c6f5=0xc8;}else{_0x18c6f5=0xce;}_0x4220f1[_0x9481('0x1b')](_0x18c6f5);return _0x4220f1[_0x9481('0x20')](_0x9481('0x21'),_0x5eda66+'-'+_0x50a559+'/'+_0x2bb2a4)['json'](_0x5b1fe6);}return null;};}function patchUpdates(_0x2cf1aa){return function(_0x272a84){try{jsonpatch[_0x9481('0x22')](_0x272a84,_0x2cf1aa,!![]);}catch(_0x615e02){return BPromise[_0x9481('0x23')](_0x615e02);}return _0x272a84['save']();};}function saveUpdates(_0x215dd7,_0x294908){return function(_0x572599){if(_0x572599){return _0x572599[_0x9481('0x24')](_0x215dd7)[_0x9481('0x25')](function(_0x352b3a){return _0x352b3a;});}return null;};}function removeEntity(_0x1809d2,_0x2dc02e){return function(_0x49ecfa){if(_0x49ecfa){return _0x49ecfa[_0x9481('0x26')]()[_0x9481('0x25')](function(){_0x1809d2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x12b0c3,_0x299e28){return function(_0x550fce){if(!_0x550fce){_0x12b0c3[_0x9481('0x1a')](0x194);}return _0x550fce;};}function handleError(_0x20ff9a,_0xeff0a5){_0xeff0a5=_0xeff0a5||0x1f4;return function(_0x28ae1b){logger['error'](_0x28ae1b[_0x9481('0x27')]);if(_0x28ae1b[_0x9481('0x28')]){delete _0x28ae1b[_0x9481('0x28')];}_0x20ff9a['status'](_0xeff0a5)[_0x9481('0x29')](_0x28ae1b);};}exports['index']=function(_0x2e1eff,_0xe153ab){var _0x22ab26={},_0x13ef93={},_0x2e5e63={'count':0x0,'rows':[]};var _0x53560d=_[_0x9481('0x2a')](db[_0x9481('0x2b')][_0x9481('0x2c')],function(_0x4895a0){return{'name':_0x4895a0['fieldName'],'type':_0x4895a0[_0x9481('0x2d')][_0x9481('0x2e')]};});_0x13ef93[_0x9481('0x2f')]=_[_0x9481('0x2a')](_0x53560d,'name');_0x13ef93['query']=_['keys'](_0x2e1eff[_0x9481('0x30')]);_0x13ef93['filters']=_[_0x9481('0x31')](_0x13ef93['model'],_0x13ef93[_0x9481('0x30')]);_0x22ab26[_0x9481('0x32')]=_[_0x9481('0x31')](_0x13ef93[_0x9481('0x2f')],qs[_0x9481('0x33')](_0x2e1eff['query'][_0x9481('0x33')]));_0x22ab26[_0x9481('0x32')]=_0x22ab26[_0x9481('0x32')]['length']?_0x22ab26[_0x9481('0x32')]:_0x13ef93[_0x9481('0x2f')];if(!_0x2e1eff[_0x9481('0x30')][_0x9481('0x34')](_0x9481('0x35'))){_0x22ab26[_0x9481('0x1e')]=qs['limit'](_0x2e1eff[_0x9481('0x30')]['limit']);_0x22ab26[_0x9481('0x1f')]=qs[_0x9481('0x1f')](_0x2e1eff[_0x9481('0x30')][_0x9481('0x1f')]);}_0x22ab26[_0x9481('0x36')]=qs[_0x9481('0x37')](_0x2e1eff['query'][_0x9481('0x37')]);_0x22ab26[_0x9481('0x38')]=qs['filters'](_['pick'](_0x2e1eff[_0x9481('0x30')],_0x13ef93['filters']),_0x53560d);if(_0x2e1eff[_0x9481('0x30')][_0x9481('0x39')]){_0x22ab26[_0x9481('0x38')]=_[_0x9481('0x3a')](_0x22ab26['where'],{'$or':_[_0x9481('0x2a')](_0x53560d,function(_0x590d50){if(_0x590d50[_0x9481('0x2d')]!=='VIRTUAL'){var _0x2ce972={};_0x2ce972[_0x590d50['name']]={'$like':'%'+_0x2e1eff[_0x9481('0x30')][_0x9481('0x39')]+'%'};return _0x2ce972;}})});}_0x22ab26=_[_0x9481('0x3a')]({},_0x22ab26,_0x2e1eff[_0x9481('0x3b')]);var _0x97dc3e={'where':_0x22ab26[_0x9481('0x38')]};return db[_0x9481('0x2b')]['count'](_0x97dc3e)[_0x9481('0x25')](function(_0x3857e8){_0x2e5e63[_0x9481('0x3c')]=_0x3857e8;if(_0x2e1eff[_0x9481('0x30')][_0x9481('0x3d')]){_0x22ab26[_0x9481('0x3e')]=[{'all':!![]}];}return db[_0x9481('0x2b')]['findAll'](_0x22ab26);})[_0x9481('0x25')](function(_0x1872ff){_0x2e5e63['rows']=_0x1872ff;return _0x2e5e63;})[_0x9481('0x25')](respondWithFilteredResult(_0xe153ab,_0x22ab26))[_0x9481('0x3f')](handleError(_0xe153ab,null));};exports[_0x9481('0x40')]=function(_0x3eb9ee,_0x29a8e9){var _0x5a8ffd={'raw':!![],'where':{'id':_0x3eb9ee['params']['id']}},_0x304791={};_0x304791[_0x9481('0x2f')]=_[_0x9481('0x41')](db['CmHopperFinal']['rawAttributes']);_0x304791[_0x9481('0x30')]=_[_0x9481('0x41')](_0x3eb9ee[_0x9481('0x30')]);_0x304791['filters']=_[_0x9481('0x31')](_0x304791[_0x9481('0x2f')],_0x304791['query']);_0x5a8ffd['attributes']=_[_0x9481('0x31')](_0x304791['model'],qs[_0x9481('0x33')](_0x3eb9ee[_0x9481('0x30')][_0x9481('0x33')]));_0x5a8ffd[_0x9481('0x32')]=_0x5a8ffd[_0x9481('0x32')]['length']?_0x5a8ffd[_0x9481('0x32')]:_0x304791[_0x9481('0x2f')];if(_0x3eb9ee['query'][_0x9481('0x3d')]){_0x5a8ffd[_0x9481('0x3e')]=[{'all':!![]}];}_0x5a8ffd=_[_0x9481('0x3a')]({},_0x5a8ffd,_0x3eb9ee[_0x9481('0x3b')]);return db[_0x9481('0x2b')][_0x9481('0x42')](_0x5a8ffd)[_0x9481('0x25')](handleEntityNotFound(_0x29a8e9,null))[_0x9481('0x25')](respondWithResult(_0x29a8e9,null))[_0x9481('0x3f')](handleError(_0x29a8e9,null));};exports['describe']=function(_0xd36133,_0x5d3a06){return db['CmHopperFinal'][_0x9481('0x43')]()['then'](respondWithResult(_0x5d3a06,null))[_0x9481('0x3f')](handleError(_0x5d3a06,null));};exports[_0x9481('0x24')]=function(_0x47f8b2,_0x277e2a){if(_0x47f8b2[_0x9481('0x44')][_0x9481('0x45')]){delete _0x47f8b2[_0x9481('0x44')][_0x9481('0x45')];}return db[_0x9481('0x2b')]['find']({'where':{'uniqueid':_0x47f8b2['params']['id']}})[_0x9481('0x25')](handleEntityNotFound(_0x277e2a,null))[_0x9481('0x25')](saveUpdates(_0x47f8b2[_0x9481('0x44')],null))[_0x9481('0x25')](respondWithResult(_0x277e2a,null))[_0x9481('0x3f')](handleError(_0x277e2a,null));};exports[_0x9481('0x46')]=function(_0x1c070c,_0x3d2250,_0x580273){return db[_0x9481('0x2b')][_0x9481('0x47')]({'raw':![],'where':{'VoiceQueueId':_0x1c070c[_0x9481('0x48')]['id']},'attributes':[[db[_0x9481('0x49')]['fn'](_0x9481('0x4a'),db['sequelize']['fn']('IF',db['sequelize'][_0x9481('0x4b')](_0x9481('0x4c')))),_0x9481('0x4d')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize']['literal']('`state`\x20=\x203,\x201,\x20null'))),'noAnswerContacts'],[db[_0x9481('0x49')]['fn'](_0x9481('0x4a'),db['sequelize']['fn']('IF',db[_0x9481('0x49')]['literal'](_0x9481('0x4e')))),_0x9481('0x4f')],[db[_0x9481('0x49')]['fn'](_0x9481('0x4a'),db[_0x9481('0x49')]['fn']('IF',db[_0x9481('0x49')][_0x9481('0x4b')]('`state`\x20=\x208,\x201,\x20null'))),_0x9481('0x50')],[db[_0x9481('0x49')]['fn']('COUNT',db[_0x9481('0x49')]['fn']('IF',db[_0x9481('0x49')][_0x9481('0x4b')](_0x9481('0x51')))),_0x9481('0x52')],[db['sequelize']['fn'](_0x9481('0x4a'),db[_0x9481('0x49')]['fn']('IF',db[_0x9481('0x49')][_0x9481('0x4b')](_0x9481('0x53')))),_0x9481('0x54')],[db[_0x9481('0x49')]['fn'](_0x9481('0x4a'),db[_0x9481('0x49')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2022,\x201,\x20null'))),_0x9481('0x55')],[db[_0x9481('0x49')]['fn']('COUNT',db[_0x9481('0x49')]['fn']('IF',db[_0x9481('0x49')][_0x9481('0x4b')](_0x9481('0x56')))),_0x9481('0x57')]]})[_0x9481('0x25')](handleEntityNotFound(_0x3d2250,null))['then'](respondWithResult(_0x3d2250,null))['catch'](handleError(_0x3d2250,null));};exports[_0x9481('0x58')]=function(_0x3cbab5,_0xb58b67,_0xe008db){return db[_0x9481('0x2b')][_0x9481('0x47')]({'raw':![],'where':{'CampaignId':_0x3cbab5['params']['id']},'attributes':[[db['sequelize']['fn'](_0x9481('0x4a'),db['sequelize']['fn']('IF',db[_0x9481('0x49')]['literal'](_0x9481('0x4c')))),_0x9481('0x4d')],[db[_0x9481('0x49')]['fn']('COUNT',db[_0x9481('0x49')]['fn']('IF',db[_0x9481('0x49')]['literal']('`state`\x20=\x203,\x201,\x20null'))),'noAnswerContacts'],[db['sequelize']['fn'](_0x9481('0x4a'),db['sequelize']['fn']('IF',db[_0x9481('0x49')][_0x9481('0x4b')](_0x9481('0x4e')))),'busyContacts'],[db[_0x9481('0x49')]['fn']('COUNT',db[_0x9481('0x49')]['fn']('IF',db[_0x9481('0x49')][_0x9481('0x4b')]('`state`\x20=\x208,\x201,\x20null'))),_0x9481('0x50')],[db[_0x9481('0x49')]['fn']('COUNT',db[_0x9481('0x49')]['fn']('IF',db[_0x9481('0x49')][_0x9481('0x4b')](_0x9481('0x51')))),_0x9481('0x52')],[db[_0x9481('0x49')]['fn'](_0x9481('0x4a'),db[_0x9481('0x49')]['fn']('IF',db[_0x9481('0x49')][_0x9481('0x4b')](_0x9481('0x53')))),_0x9481('0x54')],[db[_0x9481('0x49')]['fn'](_0x9481('0x4a'),db[_0x9481('0x49')]['fn']('IF',db[_0x9481('0x49')][_0x9481('0x4b')]('`state`\x20=\x2022,\x201,\x20null'))),_0x9481('0x55')],[db['sequelize']['fn']('COUNT',db[_0x9481('0x49')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2019,\x201,\x20null'))),_0x9481('0x57')]]})[_0x9481('0x25')](handleEntityNotFound(_0xb58b67,null))[_0x9481('0x25')](respondWithResult(_0xb58b67,null))[_0x9481('0x3f')](handleError(_0xb58b67,null));};exports['moveContactsQueueCampaignHopperFinal']=function(_0xa83176,_0x265f1c,_0x2a053a){return db[_0x9481('0x59')]['find']({'where':{'id':_0xa83176['params']['id']}})[_0x9481('0x25')](handleEntityNotFound(_0x265f1c,null))[_0x9481('0x25')](function(_0x193992){var _0x380f2a;if(_0x193992){_0x380f2a=squel[_0x9481('0x5a')]()['into'](_0x9481('0x5b'))[_0x9481('0x5c')]([_0x9481('0x5d'),_0x9481('0x5e'),_0x9481('0x5f'),_0x9481('0x60'),_0x9481('0x61'),_0x9481('0x62'),_0x9481('0x63')],squel[_0x9481('0x64')]()[_0x9481('0x65')](_0x9481('0x66'),_0x9481('0x5d'))[_0x9481('0x65')](_0x9481('0x67'),'scheduledAt')[_0x9481('0x65')](_0x9481('0x68'),_0x9481('0x5f'))[_0x9481('0x65')](_0x9481('0x69'),_0x9481('0x60'))[_0x9481('0x65')]('ANY_VALUE(VoiceQueueId)',_0x9481('0x61'))[_0x9481('0x65')]('NOW()','createdAt')[_0x9481('0x65')]('NOW()','updatedAt')[_0x9481('0x6a')]('cm_hopper_final')[_0x9481('0x38')](_0x9481('0x6b'),_0xa83176[_0x9481('0x48')]['id'][_0x9481('0x6c')]())['where'](_0x9481('0x6d'),_0xa83176['body'][_0x9481('0x6e')][_0x9481('0x6c')]())[_0x9481('0x38')]('calleridnum\x20IS\x20NOT\x20NULL')['where']('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x9481('0x64')]()['field']('phone')[_0x9481('0x6a')](_0x9481('0x5b'))[_0x9481('0x38')]('VoiceQueueId\x20=\x20?',_0xa83176[_0x9481('0x48')]['id'][_0x9481('0x6c')]()))['where'](_0x9481('0x6f'),squel[_0x9481('0x64')]()[_0x9481('0x65')](_0x9481('0x70'))['from'](_0x9481('0x71'))['where'](_0x9481('0x6b'),_0xa83176[_0x9481('0x48')]['id']['toString']())[_0x9481('0x38')](_0x9481('0x72')))[_0x9481('0x73')]('ContactId'))['toString']();return db[_0x9481('0x49')]['query'](_0x380f2a);}return[];})[_0x9481('0x25')](respondWithResult(_0x265f1c,null))[_0x9481('0x3f')](handleError(_0x265f1c,null));};exports[_0x9481('0x74')]=function(_0x55b428,_0x3f74f1,_0x287d06){return db[_0x9481('0x75')]['find']({'where':{'id':_0x55b428[_0x9481('0x48')]['id']}})[_0x9481('0x25')](handleEntityNotFound(_0x3f74f1,null))[_0x9481('0x25')](function(_0x32b30f){var _0x347da1;if(_0x32b30f){_0x347da1=squel[_0x9481('0x5a')]()[_0x9481('0x76')](_0x9481('0x5b'))[_0x9481('0x5c')]([_0x9481('0x5d'),'scheduledAt',_0x9481('0x5f'),'ListId','CampaignId','createdAt',_0x9481('0x63')],squel[_0x9481('0x64')]()[_0x9481('0x65')](_0x9481('0x66'),_0x9481('0x5d'))['field'](_0x9481('0x67'),_0x9481('0x5e'))[_0x9481('0x65')](_0x9481('0x68'),_0x9481('0x5f'))[_0x9481('0x65')](_0x9481('0x69'),_0x9481('0x60'))[_0x9481('0x65')](_0x9481('0x77'),'CampaignId')[_0x9481('0x65')](_0x9481('0x67'),_0x9481('0x62'))[_0x9481('0x65')](_0x9481('0x67'),_0x9481('0x63'))[_0x9481('0x6a')](_0x9481('0x71'))[_0x9481('0x38')](_0x9481('0x78'),_0x55b428['params']['id'][_0x9481('0x6c')]())[_0x9481('0x38')](_0x9481('0x6d'),_0x55b428[_0x9481('0x44')][_0x9481('0x6e')][_0x9481('0x6c')]())[_0x9481('0x38')](_0x9481('0x79'))[_0x9481('0x38')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x9481('0x64')]()['field']('phone')[_0x9481('0x6a')](_0x9481('0x5b'))[_0x9481('0x38')](_0x9481('0x78'),_0x55b428[_0x9481('0x48')]['id'][_0x9481('0x6c')]()))['where'](_0x9481('0x6f'),squel['select']()[_0x9481('0x65')](_0x9481('0x70'))[_0x9481('0x6a')]('cm_hopper_final')['where'](_0x9481('0x78'),_0x55b428[_0x9481('0x48')]['id'][_0x9481('0x6c')]())[_0x9481('0x38')](_0x9481('0x72')))[_0x9481('0x73')](_0x9481('0x5f')))[_0x9481('0x6c')]();return db[_0x9481('0x49')]['query'](_0x347da1);}return[];})[_0x9481('0x25')](respondWithResult(_0x3f74f1,null))[_0x9481('0x3f')](handleError(_0x3f74f1,null));};exports['checkContactHopper']=function(_0x2c53df,_0x534979,_0x616b77){return db[_0x9481('0x7a')]['findOne']({'where':{'VoiceQueueId':_0x2c53df[_0x9481('0x44')][_0x9481('0x61')],'CampaignId':_0x2c53df[_0x9481('0x44')]['CampaignId'],'ContactId':_0x2c53df[_0x9481('0x44')][_0x9481('0x5f')]}})['then'](handleEntityNotFound(_0x534979,null))[_0x9481('0x25')](function(_0x5c7602){if(_0x5c7602){return _0x5c7602;}return null;})[_0x9481('0x25')](respondWithResult(_0x534979,null))[_0x9481('0x3f')](handleError(_0x534979,null));};
\ No newline at end of file
+var _0xacf4=['reject','update','then','destroy','error','stack','name','send','index','map','CmHopperFinal','rawAttributes','fieldName','key','model','query','keys','filters','attributes','fields','hasOwnProperty','sort','where','pick','filter','type','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','intersection','length','includeAll','find','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','sequelize','COUNT','literal','noSuchContacts','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','congestionContacts','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','`state`\x20=\x200,\x201,\x20null','busyContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','createdAt','updatedAt','field','ANY_VALUE(calleridnum)','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','VoiceQueueId','from','cm_hopper_final','VoiceQueueId\x20=\x20?','state\x20=\x20?','state','toString','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','CampaignId','select','ANY_VALUE(ContactId)','ANY_VALUE(CampaignId)','NOW()','CampaignId\x20=\x20?','checkContactHopper','CmHopper','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range'];(function(_0x4ff87f,_0x17e4af){var _0x4399e6=function(_0x25036c){while(--_0x25036c){_0x4ff87f['push'](_0x4ff87f['shift']());}};_0x4399e6(++_0x17e4af);}(_0xacf4,0xe7));var _0x4acf=function(_0x297ec5,_0x860cf4){_0x297ec5=_0x297ec5-0x0;var _0x367d44=_0xacf4[_0x297ec5];return _0x367d44;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x4acf('0x0'));var jsonpatch=require(_0x4acf('0x1'));var rp=require(_0x4acf('0x2'));var moment=require(_0x4acf('0x3'));var BPromise=require(_0x4acf('0x4'));var Mustache=require(_0x4acf('0x5'));var util=require(_0x4acf('0x6'));var path=require('path');var sox=require(_0x4acf('0x7'));var csv=require(_0x4acf('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4acf('0x9'));var _=require(_0x4acf('0xa'));var squel=require(_0x4acf('0xb'));var crypto=require(_0x4acf('0xc'));var jsforce=require(_0x4acf('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x4acf('0xe'));var Papa=require('papaparse');var Redis=require(_0x4acf('0xf'));var authService=require(_0x4acf('0x10'));var qs=require(_0x4acf('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4acf('0x12'));var logger=require(_0x4acf('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x4acf('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1783d2,_0x979f49){_0x979f49=_0x979f49||0xcc;return function(_0x3734e1){if(_0x3734e1){return _0x1783d2[_0x4acf('0x15')](_0x979f49);}return _0x1783d2[_0x4acf('0x16')](_0x979f49)[_0x4acf('0x17')]();};}function respondWithResult(_0x7ab3ea,_0x15386a){_0x15386a=_0x15386a||0xc8;return function(_0x2025ca){if(_0x2025ca){return _0x7ab3ea[_0x4acf('0x16')](_0x15386a)[_0x4acf('0x18')](_0x2025ca);}};}function respondWithFilteredResult(_0x5f0260,_0x1b584a){return function(_0x57d8e0){if(_0x57d8e0){var _0x34cec1=typeof _0x1b584a[_0x4acf('0x19')]===_0x4acf('0x1a')&&typeof _0x1b584a['limit']==='undefined';var _0x13d10e=_0x57d8e0[_0x4acf('0x1b')];var _0x240c00=_0x34cec1?0x0:_0x1b584a['offset'];var _0x2a678b=_0x34cec1?_0x57d8e0[_0x4acf('0x1b')]:_0x1b584a[_0x4acf('0x19')]+_0x1b584a[_0x4acf('0x1c')];var _0x2f0cec;if(_0x2a678b>=_0x13d10e){_0x2a678b=_0x13d10e;_0x2f0cec=0xc8;}else{_0x2f0cec=0xce;}_0x5f0260[_0x4acf('0x16')](_0x2f0cec);return _0x5f0260[_0x4acf('0x1d')](_0x4acf('0x1e'),_0x240c00+'-'+_0x2a678b+'/'+_0x13d10e)[_0x4acf('0x18')](_0x57d8e0);}return null;};}function patchUpdates(_0x2feb89){return function(_0x1a3118){try{jsonpatch['apply'](_0x1a3118,_0x2feb89,!![]);}catch(_0x28d698){return BPromise[_0x4acf('0x1f')](_0x28d698);}return _0x1a3118['save']();};}function saveUpdates(_0x41e5d2,_0x17775f){return function(_0x569d9e){if(_0x569d9e){return _0x569d9e[_0x4acf('0x20')](_0x41e5d2)[_0x4acf('0x21')](function(_0x433b7a){return _0x433b7a;});}return null;};}function removeEntity(_0x454555,_0x53885f){return function(_0x1a2286){if(_0x1a2286){return _0x1a2286[_0x4acf('0x22')]()['then'](function(){_0x454555[_0x4acf('0x16')](0xcc)[_0x4acf('0x17')]();});}};}function handleEntityNotFound(_0x52a84a,_0x126522){return function(_0x7ebb){if(!_0x7ebb){_0x52a84a[_0x4acf('0x15')](0x194);}return _0x7ebb;};}function handleError(_0x16458f,_0x571a30){_0x571a30=_0x571a30||0x1f4;return function(_0x50236d){logger[_0x4acf('0x23')](_0x50236d[_0x4acf('0x24')]);if(_0x50236d[_0x4acf('0x25')]){delete _0x50236d[_0x4acf('0x25')];}_0x16458f[_0x4acf('0x16')](_0x571a30)[_0x4acf('0x26')](_0x50236d);};}exports[_0x4acf('0x27')]=function(_0x7a1e79,_0x382c41){var _0x2a3830={},_0x57989e={},_0x3521c2={'count':0x0,'rows':[]};var _0x3f5614=_[_0x4acf('0x28')](db[_0x4acf('0x29')][_0x4acf('0x2a')],function(_0x28570f){return{'name':_0x28570f[_0x4acf('0x2b')],'type':_0x28570f['type'][_0x4acf('0x2c')]};});_0x57989e[_0x4acf('0x2d')]=_[_0x4acf('0x28')](_0x3f5614,'name');_0x57989e[_0x4acf('0x2e')]=_[_0x4acf('0x2f')](_0x7a1e79[_0x4acf('0x2e')]);_0x57989e[_0x4acf('0x30')]=_['intersection'](_0x57989e[_0x4acf('0x2d')],_0x57989e[_0x4acf('0x2e')]);_0x2a3830[_0x4acf('0x31')]=_['intersection'](_0x57989e[_0x4acf('0x2d')],qs[_0x4acf('0x32')](_0x7a1e79[_0x4acf('0x2e')][_0x4acf('0x32')]));_0x2a3830[_0x4acf('0x31')]=_0x2a3830[_0x4acf('0x31')]['length']?_0x2a3830[_0x4acf('0x31')]:_0x57989e[_0x4acf('0x2d')];if(!_0x7a1e79['query'][_0x4acf('0x33')]('nolimit')){_0x2a3830['limit']=qs['limit'](_0x7a1e79['query']['limit']);_0x2a3830['offset']=qs['offset'](_0x7a1e79[_0x4acf('0x2e')][_0x4acf('0x19')]);}_0x2a3830['order']=qs[_0x4acf('0x34')](_0x7a1e79[_0x4acf('0x2e')][_0x4acf('0x34')]);_0x2a3830[_0x4acf('0x35')]=qs[_0x4acf('0x30')](_[_0x4acf('0x36')](_0x7a1e79[_0x4acf('0x2e')],_0x57989e[_0x4acf('0x30')]),_0x3f5614);if(_0x7a1e79[_0x4acf('0x2e')][_0x4acf('0x37')]){_0x2a3830['where']=_['merge'](_0x2a3830[_0x4acf('0x35')],{'$or':_[_0x4acf('0x28')](_0x3f5614,function(_0x4859b6){if(_0x4859b6[_0x4acf('0x38')]!==_0x4acf('0x39')){var _0x43a2ea={};_0x43a2ea[_0x4859b6[_0x4acf('0x25')]]={'$like':'%'+_0x7a1e79['query']['filter']+'%'};return _0x43a2ea;}})});}_0x2a3830=_[_0x4acf('0x3a')]({},_0x2a3830,_0x7a1e79[_0x4acf('0x3b')]);var _0x3d5529={'where':_0x2a3830[_0x4acf('0x35')]};return db['CmHopperFinal'][_0x4acf('0x1b')](_0x3d5529)[_0x4acf('0x21')](function(_0x4e9370){_0x3521c2['count']=_0x4e9370;if(_0x7a1e79['query']['includeAll']){_0x2a3830[_0x4acf('0x3c')]=[{'all':!![]}];}return db[_0x4acf('0x29')][_0x4acf('0x3d')](_0x2a3830);})['then'](function(_0x1015e3){_0x3521c2[_0x4acf('0x3e')]=_0x1015e3;return _0x3521c2;})[_0x4acf('0x21')](respondWithFilteredResult(_0x382c41,_0x2a3830))[_0x4acf('0x3f')](handleError(_0x382c41,null));};exports[_0x4acf('0x40')]=function(_0xea75e4,_0x7cf2a){var _0x17d5e9={'raw':!![],'where':{'id':_0xea75e4[_0x4acf('0x41')]['id']}},_0x461547={};_0x461547[_0x4acf('0x2d')]=_['keys'](db[_0x4acf('0x29')][_0x4acf('0x2a')]);_0x461547[_0x4acf('0x2e')]=_[_0x4acf('0x2f')](_0xea75e4[_0x4acf('0x2e')]);_0x461547['filters']=_['intersection'](_0x461547[_0x4acf('0x2d')],_0x461547[_0x4acf('0x2e')]);_0x17d5e9[_0x4acf('0x31')]=_[_0x4acf('0x42')](_0x461547[_0x4acf('0x2d')],qs[_0x4acf('0x32')](_0xea75e4['query'][_0x4acf('0x32')]));_0x17d5e9['attributes']=_0x17d5e9[_0x4acf('0x31')][_0x4acf('0x43')]?_0x17d5e9['attributes']:_0x461547['model'];if(_0xea75e4[_0x4acf('0x2e')][_0x4acf('0x44')]){_0x17d5e9[_0x4acf('0x3c')]=[{'all':!![]}];}_0x17d5e9=_[_0x4acf('0x3a')]({},_0x17d5e9,_0xea75e4['options']);return db[_0x4acf('0x29')][_0x4acf('0x45')](_0x17d5e9)[_0x4acf('0x21')](handleEntityNotFound(_0x7cf2a,null))[_0x4acf('0x21')](respondWithResult(_0x7cf2a,null))[_0x4acf('0x3f')](handleError(_0x7cf2a,null));};exports[_0x4acf('0x46')]=function(_0x1bd7d0,_0x2d946c){return db['CmHopperFinal']['describe']()[_0x4acf('0x21')](respondWithResult(_0x2d946c,null))[_0x4acf('0x3f')](handleError(_0x2d946c,null));};exports[_0x4acf('0x20')]=function(_0x33bc52,_0x287406){if(_0x33bc52[_0x4acf('0x47')][_0x4acf('0x48')]){delete _0x33bc52[_0x4acf('0x47')][_0x4acf('0x48')];}return db[_0x4acf('0x29')][_0x4acf('0x45')]({'where':{'uniqueid':_0x33bc52[_0x4acf('0x41')]['id']}})['then'](handleEntityNotFound(_0x287406,null))[_0x4acf('0x21')](saveUpdates(_0x33bc52[_0x4acf('0x47')],null))[_0x4acf('0x21')](respondWithResult(_0x287406,null))[_0x4acf('0x3f')](handleError(_0x287406,null));};exports[_0x4acf('0x49')]=function(_0x3cf54a,_0x2785b9,_0x2d0561){return db[_0x4acf('0x29')][_0x4acf('0x3d')]({'raw':![],'where':{'VoiceQueueId':_0x3cf54a[_0x4acf('0x41')]['id']},'attributes':[[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')]('`state`\x20=\x200,\x201,\x20null'))),_0x4acf('0x4d')],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db['sequelize']['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')](_0x4acf('0x4e')))),_0x4acf('0x4f')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')](_0x4acf('0x50')))),'busyContacts'],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db['sequelize']['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')](_0x4acf('0x51')))),_0x4acf('0x52')],[db['sequelize']['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x4acf('0x53')],[db['sequelize']['fn'](_0x4acf('0x4b'),db['sequelize']['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')](_0x4acf('0x54')))),_0x4acf('0x55')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')]('`state`\x20=\x2022,\x201,\x20null'))),_0x4acf('0x56')],[db[_0x4acf('0x4a')]['fn']('COUNT',db[_0x4acf('0x4a')]['fn']('IF',db[_0x4acf('0x4a')]['literal'](_0x4acf('0x57')))),_0x4acf('0x58')]]})[_0x4acf('0x21')](handleEntityNotFound(_0x2785b9,null))['then'](respondWithResult(_0x2785b9,null))[_0x4acf('0x3f')](handleError(_0x2785b9,null));};exports[_0x4acf('0x59')]=function(_0xb5bd81,_0x452ee6,_0x54b093){return db[_0x4acf('0x29')][_0x4acf('0x3d')]({'raw':![],'where':{'CampaignId':_0xb5bd81[_0x4acf('0x41')]['id']},'attributes':[[db['sequelize']['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')](_0x4acf('0x5a')))),_0x4acf('0x4d')],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')](_0x4acf('0x4e')))),_0x4acf('0x4f')],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db['sequelize']['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')](_0x4acf('0x50')))),_0x4acf('0x5b')],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db[_0x4acf('0x4a')]['literal']('`state`\x20=\x208,\x201,\x20null'))),_0x4acf('0x52')],[db['sequelize']['fn'](_0x4acf('0x4b'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x4acf('0x5c')))),_0x4acf('0x53')],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db[_0x4acf('0x4a')]['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),'abandonedContacts'],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db['sequelize'][_0x4acf('0x4c')](_0x4acf('0x5d')))),_0x4acf('0x56')],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db['sequelize'][_0x4acf('0x4c')]('`state`\x20=\x2019,\x201,\x20null'))),_0x4acf('0x58')]]})[_0x4acf('0x21')](handleEntityNotFound(_0x452ee6,null))[_0x4acf('0x21')](respondWithResult(_0x452ee6,null))[_0x4acf('0x3f')](handleError(_0x452ee6,null));};exports[_0x4acf('0x5e')]=function(_0x173655,_0x1f2dbc,_0xc0d942){return db[_0x4acf('0x5f')][_0x4acf('0x45')]({'where':{'id':_0x173655[_0x4acf('0x41')]['id']}})[_0x4acf('0x21')](handleEntityNotFound(_0x1f2dbc,null))['then'](function(_0x11f356){var _0xacca91;if(_0x11f356){_0xacca91=squel[_0x4acf('0x60')]()[_0x4acf('0x61')](_0x4acf('0x62'))[_0x4acf('0x63')]([_0x4acf('0x64'),_0x4acf('0x65'),_0x4acf('0x66'),_0x4acf('0x67'),'VoiceQueueId',_0x4acf('0x68'),_0x4acf('0x69')],squel['select']()[_0x4acf('0x6a')](_0x4acf('0x6b'),'phone')[_0x4acf('0x6a')]('NOW()','scheduledAt')[_0x4acf('0x6a')]('ANY_VALUE(ContactId)',_0x4acf('0x66'))[_0x4acf('0x6a')](_0x4acf('0x6c'),_0x4acf('0x67'))['field'](_0x4acf('0x6d'),_0x4acf('0x6e'))['field']('NOW()','createdAt')[_0x4acf('0x6a')]('NOW()',_0x4acf('0x69'))[_0x4acf('0x6f')](_0x4acf('0x70'))['where'](_0x4acf('0x71'),_0x173655[_0x4acf('0x41')]['id']['toString']())[_0x4acf('0x35')](_0x4acf('0x72'),_0x173655['body'][_0x4acf('0x73')][_0x4acf('0x74')]())[_0x4acf('0x35')](_0x4acf('0x75'))[_0x4acf('0x35')](_0x4acf('0x76'),squel['select']()[_0x4acf('0x6a')]('phone')[_0x4acf('0x6f')](_0x4acf('0x62'))['where']('VoiceQueueId\x20=\x20?',_0x173655['params']['id'][_0x4acf('0x74')]()))['where']('calleridnum\x20NOT\x20IN\x20(?)',squel['select']()[_0x4acf('0x6a')]('calleridnum')[_0x4acf('0x6f')](_0x4acf('0x70'))[_0x4acf('0x35')](_0x4acf('0x71'),_0x173655[_0x4acf('0x41')]['id']['toString']())['where'](_0x4acf('0x77')))[_0x4acf('0x78')](_0x4acf('0x66')))[_0x4acf('0x74')]();return db[_0x4acf('0x4a')]['query'](_0xacca91);}return[];})[_0x4acf('0x21')](respondWithResult(_0x1f2dbc,null))[_0x4acf('0x3f')](handleError(_0x1f2dbc,null));};exports[_0x4acf('0x79')]=function(_0x453c6d,_0x1a82e7,_0x3d02c7){return db[_0x4acf('0x7a')]['find']({'where':{'id':_0x453c6d[_0x4acf('0x41')]['id']}})['then'](handleEntityNotFound(_0x1a82e7,null))[_0x4acf('0x21')](function(_0x1bbe6d){var _0x2a36e2;if(_0x1bbe6d){_0x2a36e2=squel[_0x4acf('0x60')]()[_0x4acf('0x61')]('cm_hopper')[_0x4acf('0x63')](['phone',_0x4acf('0x65'),_0x4acf('0x66'),'ListId',_0x4acf('0x7b'),_0x4acf('0x68'),_0x4acf('0x69')],squel[_0x4acf('0x7c')]()[_0x4acf('0x6a')]('ANY_VALUE(calleridnum)',_0x4acf('0x64'))['field']('NOW()',_0x4acf('0x65'))[_0x4acf('0x6a')](_0x4acf('0x7d'),_0x4acf('0x66'))['field']('ANY_VALUE(ListId)',_0x4acf('0x67'))[_0x4acf('0x6a')](_0x4acf('0x7e'),_0x4acf('0x7b'))[_0x4acf('0x6a')](_0x4acf('0x7f'),_0x4acf('0x68'))[_0x4acf('0x6a')]('NOW()','updatedAt')[_0x4acf('0x6f')](_0x4acf('0x70'))[_0x4acf('0x35')](_0x4acf('0x80'),_0x453c6d[_0x4acf('0x41')]['id'][_0x4acf('0x74')]())[_0x4acf('0x35')](_0x4acf('0x72'),_0x453c6d[_0x4acf('0x47')]['state'][_0x4acf('0x74')]())[_0x4acf('0x35')](_0x4acf('0x75'))[_0x4acf('0x35')](_0x4acf('0x76'),squel[_0x4acf('0x7c')]()[_0x4acf('0x6a')](_0x4acf('0x64'))[_0x4acf('0x6f')](_0x4acf('0x62'))[_0x4acf('0x35')](_0x4acf('0x80'),_0x453c6d[_0x4acf('0x41')]['id']['toString']()))[_0x4acf('0x35')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x4acf('0x7c')]()[_0x4acf('0x6a')]('calleridnum')[_0x4acf('0x6f')](_0x4acf('0x70'))['where']('CampaignId\x20=\x20?',_0x453c6d[_0x4acf('0x41')]['id'][_0x4acf('0x74')]())['where']('state\x20=\x204'))[_0x4acf('0x78')](_0x4acf('0x66')))[_0x4acf('0x74')]();return db[_0x4acf('0x4a')]['query'](_0x2a36e2);}return[];})[_0x4acf('0x21')](respondWithResult(_0x1a82e7,null))[_0x4acf('0x3f')](handleError(_0x1a82e7,null));};exports[_0x4acf('0x81')]=function(_0x34e1ea,_0x43e9bf,_0x367ad4){return db[_0x4acf('0x82')]['findOne']({'where':{'VoiceQueueId':_0x34e1ea[_0x4acf('0x47')][_0x4acf('0x6e')],'CampaignId':_0x34e1ea[_0x4acf('0x47')]['CampaignId'],'ContactId':_0x34e1ea[_0x4acf('0x47')][_0x4acf('0x66')]}})[_0x4acf('0x21')](handleEntityNotFound(_0x43e9bf,null))[_0x4acf('0x21')](function(_0x37ffab){if(_0x37ffab){return _0x37ffab;}return null;})[_0x4acf('0x21')](respondWithResult(_0x43e9bf,null))[_0x4acf('0x3f')](handleError(_0x43e9bf,null));};
\ No newline at end of file
index 6fa00f0..87fdf3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf63d=['cm_hopper_final','calleridnum','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./cmHopperFinal.attributes','exports','CmHopperFinal'];(function(_0x3e1bb2,_0x2dc734){var _0x3a4c54=function(_0x19514e){while(--_0x19514e){_0x3e1bb2['push'](_0x3e1bb2['shift']());}};_0x3a4c54(++_0x2dc734);}(_0xf63d,0x120));var _0xdf63=function(_0x47d804,_0x5cc88f){_0x47d804=_0x47d804-0x0;var _0x284c47=_0xf63d[_0x47d804];return _0x284c47;};'use strict';var _=require(_0xdf63('0x0'));var util=require(_0xdf63('0x1'));var logger=require('../../config/logger')(_0xdf63('0x2'));var moment=require(_0xdf63('0x3'));var BPromise=require(_0xdf63('0x4'));var rp=require(_0xdf63('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdf63('0x6'));var config=require(_0xdf63('0x7'));var attributes=require(_0xdf63('0x8'));module[_0xdf63('0x9')]=function(_0xacf4e6,_0x109992){return _0xacf4e6['define'](_0xdf63('0xa'),attributes,{'tableName':_0xdf63('0xb'),'paranoid':![],'indexes':[{'name':_0xdf63('0xc'),'fields':[_0xdf63('0xc')]},{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6652=['exports','CmHopperFinal','calleridnum','uniqueid','../../config/logger','moment','request-promise','path','../../config/environment','./cmHopperFinal.attributes'];(function(_0x620cbe,_0x193075){var _0x30ad91=function(_0x1478cc){while(--_0x1478cc){_0x620cbe['push'](_0x620cbe['shift']());}};_0x30ad91(++_0x193075);}(_0x6652,0x11c));var _0x2665=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x6652[_0x501510];return _0x1e6ee5;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x2665('0x0'))('api');var moment=require(_0x2665('0x1'));var BPromise=require('bluebird');var rp=require(_0x2665('0x2'));var fs=require('fs');var path=require(_0x2665('0x3'));var rimraf=require('rimraf');var config=require(_0x2665('0x4'));var attributes=require(_0x2665('0x5'));module[_0x2665('0x6')]=function(_0x428c88,_0x2a751a){return _0x428c88['define'](_0x2665('0x7'),attributes,{'tableName':'cm_hopper_final','paranoid':![],'indexes':[{'name':_0x2665('0x8'),'fields':[_0x2665('0x8')]},{'name':_0x2665('0x9'),'fields':[_0x2665('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index d8b95a0..8968719 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(_0x22ebde,_0x214178){var _0x168d65=function(_0x386476){while(--_0x386476){_0x22ebde['push'](_0x22ebde['shift']());}};_0x168d65(++_0x214178);}(_0x7a54,0x106));var _0x47a5=function(_0x2c5a94,_0xe0d730){_0x2c5a94=_0x2c5a94-0x0;var _0x134dcc=_0x7a54[_0x2c5a94];return _0x134dcc;};'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 _0xb10b=['debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmHopperFinal,\x20%s,\x20%s','CmHopperFinal,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','CreateCmHopperFinal','CmHopperFinal','create','options','raw'];(function(_0x571cdc,_0x57f256){var _0x43f762=function(_0x3d804a){while(--_0x3d804a){_0x571cdc['push'](_0x571cdc['shift']());}};_0x43f762(++_0x57f256);}(_0xb10b,0x12a));var _0xbb10=function(_0x3452c5,_0x11829a){_0x3452c5=_0x3452c5-0x0;var _0x3d2172=_0xb10b[_0x3452c5];return _0x3d2172;};'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')](_0x378da8['body'],{'raw':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![]})[_0xbb10('0xc')](function(_0xdf237d){logger[_0xbb10('0xd')]('CreateCmHopperFinal',_0x378da8);logger[_0xbb10('0x1a')](_0xbb10('0x15'),_0x378da8,JSON['stringify'](_0xdf237d));_0x575cca(_0xdf237d);})['catch'](function(_0x8e2b97){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x8e2b97[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x8e2b97[_0xbb10('0x13')]));});});};
\ No newline at end of file
index 7428b64..b378a58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x349e=['moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmHopperFinal.controller','index','/describe','isAuthenticated','get','/:id','show','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id'];(function(_0x16e0d1,_0x440bbd){var _0x54dbd8=function(_0x584e5c){while(--_0x584e5c){_0x16e0d1['push'](_0x16e0d1['shift']());}};_0x54dbd8(++_0x440bbd);}(_0x349e,0xcb));var _0xe349=function(_0x569499,_0x4e1388){_0x569499=_0x569499-0x0;var _0x465f1a=_0x349e[_0x569499];return _0x465f1a;};'use strict';var multer=require(_0xe349('0x0'));var util=require(_0xe349('0x1'));var path=require(_0xe349('0x2'));var timeout=require(_0xe349('0x3'));var express=require(_0xe349('0x4'));var router=express[_0xe349('0x5')]();var fs_extra=require(_0xe349('0x6'));var auth=require(_0xe349('0x7'));var interaction=require(_0xe349('0x8'));var config=require('../../config/environment');var controller=require(_0xe349('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xe349('0xa')]);router['get'](_0xe349('0xb'),auth[_0xe349('0xc')](),controller['describe']);router[_0xe349('0xd')](_0xe349('0xe'),auth[_0xe349('0xc')](),controller[_0xe349('0xf')]);router[_0xe349('0xd')]('/voice/queue/countAttributes/:id',auth[_0xe349('0xc')](),controller[_0xe349('0x10')]);router[_0xe349('0xd')](_0xe349('0x11'),auth[_0xe349('0xc')](),controller[_0xe349('0x12')]);router[_0xe349('0x13')](_0xe349('0x14'),auth[_0xe349('0xc')](),controller[_0xe349('0x15')]);router[_0xe349('0x13')](_0xe349('0x16'),auth[_0xe349('0xc')](),controller[_0xe349('0x17')]);router[_0xe349('0x13')](_0xe349('0x18'),auth[_0xe349('0xc')](),controller['checkContactHopper']);router[_0xe349('0x19')]('/:id',auth[_0xe349('0xc')](),controller[_0xe349('0x1a')]);module[_0xe349('0x1b')]=router;
\ No newline at end of file
+var _0x022b=['checkContactHopper','update','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','show','/voice/queue/countAttributes/:id','/campaign/countAttributes/:id','post','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','/checkContactHopper'];(function(_0x54ce45,_0x269ee8){var _0x252c2d=function(_0x9ea2ea){while(--_0x9ea2ea){_0x54ce45['push'](_0x54ce45['shift']());}};_0x252c2d(++_0x269ee8);}(_0x022b,0x1cb));var _0xb022=function(_0x3eb267,_0x441384){_0x3eb267=_0x3eb267-0x0;var _0x55b58f=_0x022b[_0x3eb267];return _0x55b58f;};'use strict';var multer=require('multer');var util=require(_0xb022('0x0'));var path=require(_0xb022('0x1'));var timeout=require(_0xb022('0x2'));var express=require(_0xb022('0x3'));var router=express[_0xb022('0x4')]();var fs_extra=require(_0xb022('0x5'));var auth=require(_0xb022('0x6'));var interaction=require(_0xb022('0x7'));var config=require('../../config/environment');var controller=require('./cmHopperFinal.controller');router[_0xb022('0x8')]('/',auth[_0xb022('0x9')](),controller[_0xb022('0xa')]);router['get'](_0xb022('0xb'),auth[_0xb022('0x9')](),controller[_0xb022('0xc')]);router[_0xb022('0x8')](_0xb022('0xd'),auth[_0xb022('0x9')](),controller[_0xb022('0xe')]);router['get'](_0xb022('0xf'),auth['isAuthenticated'](),controller['countContactsQueueCampaignHopperFinal']);router[_0xb022('0x8')](_0xb022('0x10'),auth[_0xb022('0x9')](),controller['countContactsIvrCampaignHopperFinal']);router[_0xb022('0x11')]('/voice/queue/moveContacts/:id',auth[_0xb022('0x9')](),controller[_0xb022('0x12')]);router['post'](_0xb022('0x13'),auth[_0xb022('0x9')](),controller['moveContactsIvrCampaignHopperFinal']);router[_0xb022('0x11')](_0xb022('0x14'),auth[_0xb022('0x9')](),controller[_0xb022('0x15')]);router['put'](_0xb022('0xd'),auth[_0xb022('0x9')](),controller[_0xb022('0x16')]);module[_0xb022('0x17')]=router;
\ No newline at end of file
index 5e19d49..6fbc007 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x956c=['exports','INTEGER','STRING','DATE','BOOLEAN','sequelize'];(function(_0x147bf4,_0x3cdbb4){var _0x3202d5=function(_0x5073ed){while(--_0x5073ed){_0x147bf4['push'](_0x147bf4['shift']());}};_0x3202d5(++_0x3cdbb4);}(_0x956c,0x1eb));var _0xc956=function(_0x36cce1,_0x5f1623){_0x36cce1=_0x36cce1-0x0;var _0x458308=_0x956c[_0x36cce1];return _0x458308;};'use strict';var Sequelize=require(_0xc956('0x0'));module[_0xc956('0x1')]={'state':{'type':Sequelize[_0xc956('0x2')](0x2)},'statedesc':{'type':Sequelize[_0xc956('0x3')]},'scheduledat':{'type':Sequelize[_0xc956('0x4')]},'countbusyretry':{'type':Sequelize[_0xc956('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xc956('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xc956('0x3')]},'originatecalleridnum':{'type':Sequelize[_0xc956('0x3')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xc956('0x3')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0xc956('0x4')]},'responsetime':{'type':Sequelize[_0xc956('0x4')]},'answertime':{'type':Sequelize[_0xc956('0x4')]},'droptime':{'type':Sequelize[_0xc956('0x4')]},'endtime':{'type':Sequelize[_0xc956('0x4')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xc956('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xc956('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xc956('0x3')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xc956('0x3')]},'membername':{'type':Sequelize[_0xc956('0x3')]},'reason':{'type':Sequelize[_0xc956('0x3')]},'amd':{'type':Sequelize[_0xc956('0x5')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xc956('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize[_0xc956('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0xc956('0x4')]},'edited':{'type':Sequelize[_0xc956('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0xc956('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xf37c=['BOOLEAN','sequelize','exports','STRING','DATE','INTEGER'];(function(_0x4a3898,_0x4c9853){var _0x25ceb0=function(_0x528b6d){while(--_0x528b6d){_0x4a3898['push'](_0x4a3898['shift']());}};_0x25ceb0(++_0x4c9853);}(_0xf37c,0x1b7));var _0xcf37=function(_0x51bb4d,_0x43d5d8){_0x51bb4d=_0x51bb4d-0x0;var _0x394bd2=_0xf37c[_0x51bb4d];return _0x394bd2;};'use strict';var Sequelize=require(_0xcf37('0x0'));module[_0xcf37('0x1')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0xcf37('0x2')]},'scheduledat':{'type':Sequelize[_0xcf37('0x3')]},'countbusyretry':{'type':Sequelize[_0xcf37('0x4')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xcf37('0x4')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xcf37('0x4')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0xcf37('0x2')]},'calleridnum':{'type':Sequelize[_0xcf37('0x2')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0xcf37('0x3')]},'responsetime':{'type':Sequelize[_0xcf37('0x3')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0xcf37('0x3')]},'endtime':{'type':Sequelize[_0xcf37('0x3')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xcf37('0x4')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xcf37('0x4')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xcf37('0x4')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xcf37('0x2')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xcf37('0x2')]},'membername':{'type':Sequelize[_0xcf37('0x2')]},'reason':{'type':Sequelize[_0xcf37('0x2')]},'amd':{'type':Sequelize[_0xcf37('0x5')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callback':{'type':Sequelize[_0xcf37('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xcf37('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xcf37('0x3')]},'recallme':{'type':Sequelize[_0xcf37('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0xcf37('0x3')]},'edited':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xcf37('0x4')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xcf37('0x4')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xcf37('0x4')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xcf37('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index ff237ac..905c158 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa7e=['keys','intersection','fields','options','create','describe','uniqueid','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','name','CmHopperHistory','rawAttributes','type','key','model','map','query','filters','attributes','length','hasOwnProperty','sort','pick','merge','where','VIRTUAL','include','rows','catch','show','params'];(function(_0x5cc3c5,_0x384207){var _0x5611aa=function(_0x445c4f){while(--_0x445c4f){_0x5cc3c5['push'](_0x5cc3c5['shift']());}};_0x5611aa(++_0x384207);}(_0xfa7e,0x125));var _0xefa7=function(_0x1cd674,_0x8d3638){_0x1cd674=_0x1cd674-0x0;var _0x27928f=_0xfa7e[_0x1cd674];return _0x27928f;};'use strict';var emlformat=require(_0xefa7('0x0'));var rimraf=require(_0xefa7('0x1'));var zipdir=require(_0xefa7('0x2'));var jsonpatch=require(_0xefa7('0x3'));var rp=require(_0xefa7('0x4'));var moment=require(_0xefa7('0x5'));var BPromise=require(_0xefa7('0x6'));var Mustache=require(_0xefa7('0x7'));var util=require(_0xefa7('0x8'));var path=require(_0xefa7('0x9'));var sox=require(_0xefa7('0xa'));var csv=require(_0xefa7('0xb'));var ejs=require(_0xefa7('0xc'));var fs=require('fs');var fs_extra=require(_0xefa7('0xd'));var _=require('lodash');var squel=require(_0xefa7('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xefa7('0xf'));var toCsv=require(_0xefa7('0xb'));var querystring=require(_0xefa7('0x10'));var Papa=require(_0xefa7('0x11'));var Redis=require(_0xefa7('0x12'));var authService=require(_0xefa7('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xefa7('0x14'));var hardwareService=require(_0xefa7('0x15'));var logger=require(_0xefa7('0x16'))(_0xefa7('0x17'));var utils=require(_0xefa7('0x18'));var config=require(_0xefa7('0x19'));var licenseUtil=require(_0xefa7('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5c1b54,_0x235c0){_0x235c0=_0x235c0||0xcc;return function(_0x572372){if(_0x572372){return _0x5c1b54['sendStatus'](_0x235c0);}return _0x5c1b54[_0xefa7('0x1b')](_0x235c0)[_0xefa7('0x1c')]();};}function respondWithResult(_0x58a1e9,_0x1263c7){_0x1263c7=_0x1263c7||0xc8;return function(_0x4cca1f){if(_0x4cca1f){return _0x58a1e9['status'](_0x1263c7)[_0xefa7('0x1d')](_0x4cca1f);}};}function respondWithFilteredResult(_0x18cacd,_0x3e8e75){return function(_0x13e862){if(_0x13e862){var _0x5a920c=typeof _0x3e8e75[_0xefa7('0x1e')]===_0xefa7('0x1f')&&typeof _0x3e8e75[_0xefa7('0x20')]===_0xefa7('0x1f');var _0x429528=_0x13e862['count'];var _0x772536=_0x5a920c?0x0:_0x3e8e75[_0xefa7('0x1e')];var _0x510350=_0x5a920c?_0x13e862[_0xefa7('0x21')]:_0x3e8e75['offset']+_0x3e8e75[_0xefa7('0x20')];var _0x558c48;if(_0x510350>=_0x429528){_0x510350=_0x429528;_0x558c48=0xc8;}else{_0x558c48=0xce;}_0x18cacd[_0xefa7('0x1b')](_0x558c48);return _0x18cacd[_0xefa7('0x22')]('Content-Range',_0x772536+'-'+_0x510350+'/'+_0x429528)[_0xefa7('0x1d')](_0x13e862);}return null;};}function patchUpdates(_0x2f51e1){return function(_0x463875){try{jsonpatch[_0xefa7('0x23')](_0x463875,_0x2f51e1,!![]);}catch(_0xb7f351){return BPromise[_0xefa7('0x24')](_0xb7f351);}return _0x463875[_0xefa7('0x25')]();};}function saveUpdates(_0x272cc3,_0x104632){return function(_0x9176be){if(_0x9176be){return _0x9176be[_0xefa7('0x26')](_0x272cc3)[_0xefa7('0x27')](function(_0x341770){return _0x341770;});}return null;};}function removeEntity(_0x4edbb5,_0x319c11){return function(_0x413407){if(_0x413407){return _0x413407['destroy']()[_0xefa7('0x27')](function(){_0x4edbb5['status'](0xcc)[_0xefa7('0x1c')]();});}};}function handleEntityNotFound(_0x365490,_0x160ec0){return function(_0x127242){if(!_0x127242){_0x365490['sendStatus'](0x194);}return _0x127242;};}function handleError(_0x1e0843,_0x1477aa){_0x1477aa=_0x1477aa||0x1f4;return function(_0x35ec2c){logger['error'](_0x35ec2c['stack']);if(_0x35ec2c['name']){delete _0x35ec2c[_0xefa7('0x28')];}_0x1e0843[_0xefa7('0x1b')](_0x1477aa)['send'](_0x35ec2c);};}exports['index']=function(_0x4f7aa9,_0x37e744){var _0x984880={},_0x911de={},_0x20a764={'count':0x0,'rows':[]};var _0x37f085=_['map'](db[_0xefa7('0x29')][_0xefa7('0x2a')],function(_0x4828a0){return{'name':_0x4828a0['fieldName'],'type':_0x4828a0[_0xefa7('0x2b')][_0xefa7('0x2c')]};});_0x911de[_0xefa7('0x2d')]=_[_0xefa7('0x2e')](_0x37f085,_0xefa7('0x28'));_0x911de[_0xefa7('0x2f')]=_['keys'](_0x4f7aa9[_0xefa7('0x2f')]);_0x911de[_0xefa7('0x30')]=_['intersection'](_0x911de['model'],_0x911de[_0xefa7('0x2f')]);_0x984880[_0xefa7('0x31')]=_['intersection'](_0x911de[_0xefa7('0x2d')],qs['fields'](_0x4f7aa9[_0xefa7('0x2f')]['fields']));_0x984880[_0xefa7('0x31')]=_0x984880['attributes'][_0xefa7('0x32')]?_0x984880['attributes']:_0x911de[_0xefa7('0x2d')];if(!_0x4f7aa9[_0xefa7('0x2f')][_0xefa7('0x33')]('nolimit')){_0x984880[_0xefa7('0x20')]=qs['limit'](_0x4f7aa9['query'][_0xefa7('0x20')]);_0x984880[_0xefa7('0x1e')]=qs[_0xefa7('0x1e')](_0x4f7aa9[_0xefa7('0x2f')][_0xefa7('0x1e')]);}_0x984880['order']=qs[_0xefa7('0x34')](_0x4f7aa9[_0xefa7('0x2f')][_0xefa7('0x34')]);_0x984880['where']=qs[_0xefa7('0x30')](_[_0xefa7('0x35')](_0x4f7aa9[_0xefa7('0x2f')],_0x911de[_0xefa7('0x30')]),_0x37f085);if(_0x4f7aa9[_0xefa7('0x2f')]['filter']){_0x984880['where']=_[_0xefa7('0x36')](_0x984880[_0xefa7('0x37')],{'$or':_[_0xefa7('0x2e')](_0x37f085,function(_0x5a1b40){if(_0x5a1b40[_0xefa7('0x2b')]!==_0xefa7('0x38')){var _0x2f49b7={};_0x2f49b7[_0x5a1b40['name']]={'$like':'%'+_0x4f7aa9[_0xefa7('0x2f')]['filter']+'%'};return _0x2f49b7;}})});}_0x984880=_[_0xefa7('0x36')]({},_0x984880,_0x4f7aa9['options']);var _0x40b101={'where':_0x984880[_0xefa7('0x37')]};return db[_0xefa7('0x29')][_0xefa7('0x21')](_0x40b101)['then'](function(_0x4d630b){_0x20a764['count']=_0x4d630b;if(_0x4f7aa9[_0xefa7('0x2f')]['includeAll']){_0x984880[_0xefa7('0x39')]=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0x984880);})[_0xefa7('0x27')](function(_0x44c639){_0x20a764[_0xefa7('0x3a')]=_0x44c639;return _0x20a764;})[_0xefa7('0x27')](respondWithFilteredResult(_0x37e744,_0x984880))[_0xefa7('0x3b')](handleError(_0x37e744,null));};exports[_0xefa7('0x3c')]=function(_0x38d335,_0x4e80f4){var _0x3e48b4={'raw':!![],'where':{'id':_0x38d335[_0xefa7('0x3d')]['id']}},_0x3ec6f6={};_0x3ec6f6['model']=_[_0xefa7('0x3e')](db[_0xefa7('0x29')]['rawAttributes']);_0x3ec6f6['query']=_[_0xefa7('0x3e')](_0x38d335['query']);_0x3ec6f6[_0xefa7('0x30')]=_[_0xefa7('0x3f')](_0x3ec6f6[_0xefa7('0x2d')],_0x3ec6f6[_0xefa7('0x2f')]);_0x3e48b4['attributes']=_[_0xefa7('0x3f')](_0x3ec6f6[_0xefa7('0x2d')],qs['fields'](_0x38d335[_0xefa7('0x2f')][_0xefa7('0x40')]));_0x3e48b4[_0xefa7('0x31')]=_0x3e48b4[_0xefa7('0x31')][_0xefa7('0x32')]?_0x3e48b4[_0xefa7('0x31')]:_0x3ec6f6[_0xefa7('0x2d')];if(_0x38d335['query']['includeAll']){_0x3e48b4[_0xefa7('0x39')]=[{'all':!![]}];}_0x3e48b4=_[_0xefa7('0x36')]({},_0x3e48b4,_0x38d335[_0xefa7('0x41')]);return db['CmHopperHistory']['find'](_0x3e48b4)[_0xefa7('0x27')](handleEntityNotFound(_0x4e80f4,null))['then'](respondWithResult(_0x4e80f4,null))[_0xefa7('0x3b')](handleError(_0x4e80f4,null));};exports[_0xefa7('0x42')]=function(_0x21eea3,_0x36d469){return db['CmHopperHistory'][_0xefa7('0x42')](_0x21eea3['body'],{})[_0xefa7('0x27')](respondWithResult(_0x36d469,0xc9))[_0xefa7('0x3b')](handleError(_0x36d469,null));};exports[_0xefa7('0x43')]=function(_0x1c8931,_0xe34acc){return db['CmHopperHistory'][_0xefa7('0x43')]()[_0xefa7('0x27')](respondWithResult(_0xe34acc,null))[_0xefa7('0x3b')](handleError(_0xe34acc,null));};exports[_0xefa7('0x26')]=function(_0x240310,_0x1a8510){if(_0x240310['body'][_0xefa7('0x44')]){delete _0x240310[_0xefa7('0x45')][_0xefa7('0x44')];}return db['CmHopperHistory'][_0xefa7('0x46')]({'where':{'uniqueid':_0x240310['params']['id']}})[_0xefa7('0x27')](handleEntityNotFound(_0x1a8510,null))[_0xefa7('0x27')](saveUpdates(_0x240310[_0xefa7('0x45')],null))['then'](respondWithResult(_0x1a8510,null))[_0xefa7('0x3b')](handleError(_0x1a8510,null));};
\ No newline at end of file
+var _0x0430=['then','destroy','error','send','index','map','CmHopperHistory','rawAttributes','type','name','query','keys','filters','intersection','attributes','model','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','findAll','rows','params','fields','options','find','create','body','catch','describe','uniqueid','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update'];(function(_0x13452f,_0x71c9fc){var _0x3449e6=function(_0x5582f0){while(--_0x5582f0){_0x13452f['push'](_0x13452f['shift']());}};_0x3449e6(++_0x71c9fc);}(_0x0430,0x152));var _0x0043=function(_0x5c2a03,_0x537e2e){_0x5c2a03=_0x5c2a03-0x0;var _0x43568b=_0x0430[_0x5c2a03];return _0x43568b;};'use strict';var emlformat=require(_0x0043('0x0'));var rimraf=require(_0x0043('0x1'));var zipdir=require(_0x0043('0x2'));var jsonpatch=require(_0x0043('0x3'));var rp=require(_0x0043('0x4'));var moment=require(_0x0043('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x0043('0x6'));var util=require(_0x0043('0x7'));var path=require('path');var sox=require(_0x0043('0x8'));var csv=require('to-csv');var ejs=require(_0x0043('0x9'));var fs=require('fs');var fs_extra=require(_0x0043('0xa'));var _=require(_0x0043('0xb'));var squel=require(_0x0043('0xc'));var crypto=require('crypto');var jsforce=require(_0x0043('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x0043('0xe'));var querystring=require('querystring');var Papa=require(_0x0043('0xf'));var Redis=require(_0x0043('0x10'));var authService=require(_0x0043('0x11'));var qs=require(_0x0043('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0043('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x0043('0x14'));var config=require(_0x0043('0x15'));var licenseUtil=require(_0x0043('0x16'));var db=require(_0x0043('0x17'))['db'];function respondWithStatusCode(_0x5aeaec,_0x1e4bfc){_0x1e4bfc=_0x1e4bfc||0xcc;return function(_0x42c0db){if(_0x42c0db){return _0x5aeaec[_0x0043('0x18')](_0x1e4bfc);}return _0x5aeaec[_0x0043('0x19')](_0x1e4bfc)[_0x0043('0x1a')]();};}function respondWithResult(_0x59c168,_0x4af3a2){_0x4af3a2=_0x4af3a2||0xc8;return function(_0x29e70e){if(_0x29e70e){return _0x59c168[_0x0043('0x19')](_0x4af3a2)[_0x0043('0x1b')](_0x29e70e);}};}function respondWithFilteredResult(_0x2c7ec1,_0x3f0cc8){return function(_0x3d7464){if(_0x3d7464){var _0x1cdc1b=typeof _0x3f0cc8[_0x0043('0x1c')]===_0x0043('0x1d')&&typeof _0x3f0cc8[_0x0043('0x1e')]==='undefined';var _0x3cfd61=_0x3d7464[_0x0043('0x1f')];var _0x3c439d=_0x1cdc1b?0x0:_0x3f0cc8[_0x0043('0x1c')];var _0x47b806=_0x1cdc1b?_0x3d7464[_0x0043('0x1f')]:_0x3f0cc8[_0x0043('0x1c')]+_0x3f0cc8[_0x0043('0x1e')];var _0x21092e;if(_0x47b806>=_0x3cfd61){_0x47b806=_0x3cfd61;_0x21092e=0xc8;}else{_0x21092e=0xce;}_0x2c7ec1[_0x0043('0x19')](_0x21092e);return _0x2c7ec1[_0x0043('0x20')](_0x0043('0x21'),_0x3c439d+'-'+_0x47b806+'/'+_0x3cfd61)[_0x0043('0x1b')](_0x3d7464);}return null;};}function patchUpdates(_0x44b85f){return function(_0x18408c){try{jsonpatch[_0x0043('0x22')](_0x18408c,_0x44b85f,!![]);}catch(_0x2b8a97){return BPromise['reject'](_0x2b8a97);}return _0x18408c[_0x0043('0x23')]();};}function saveUpdates(_0x1b1e9d,_0x1a41bd){return function(_0x3ffa4e){if(_0x3ffa4e){return _0x3ffa4e[_0x0043('0x24')](_0x1b1e9d)[_0x0043('0x25')](function(_0x4c5fe9){return _0x4c5fe9;});}return null;};}function removeEntity(_0x3efa67,_0xaff182){return function(_0x576fdb){if(_0x576fdb){return _0x576fdb[_0x0043('0x26')]()[_0x0043('0x25')](function(){_0x3efa67['status'](0xcc)[_0x0043('0x1a')]();});}};}function handleEntityNotFound(_0x508e7e,_0x3937f7){return function(_0x50b5a1){if(!_0x50b5a1){_0x508e7e[_0x0043('0x18')](0x194);}return _0x50b5a1;};}function handleError(_0x3b6938,_0x170af8){_0x170af8=_0x170af8||0x1f4;return function(_0x1edc8a){logger[_0x0043('0x27')](_0x1edc8a['stack']);if(_0x1edc8a['name']){delete _0x1edc8a['name'];}_0x3b6938[_0x0043('0x19')](_0x170af8)[_0x0043('0x28')](_0x1edc8a);};}exports[_0x0043('0x29')]=function(_0x3f7c8e,_0x2745de){var _0x202592={},_0x1fcd5d={},_0x336f9b={'count':0x0,'rows':[]};var _0x443145=_[_0x0043('0x2a')](db[_0x0043('0x2b')][_0x0043('0x2c')],function(_0x4cac3d){return{'name':_0x4cac3d['fieldName'],'type':_0x4cac3d[_0x0043('0x2d')]['key']};});_0x1fcd5d['model']=_[_0x0043('0x2a')](_0x443145,_0x0043('0x2e'));_0x1fcd5d[_0x0043('0x2f')]=_[_0x0043('0x30')](_0x3f7c8e[_0x0043('0x2f')]);_0x1fcd5d[_0x0043('0x31')]=_[_0x0043('0x32')](_0x1fcd5d['model'],_0x1fcd5d['query']);_0x202592[_0x0043('0x33')]=_[_0x0043('0x32')](_0x1fcd5d[_0x0043('0x34')],qs['fields'](_0x3f7c8e[_0x0043('0x2f')]['fields']));_0x202592[_0x0043('0x33')]=_0x202592[_0x0043('0x33')][_0x0043('0x35')]?_0x202592[_0x0043('0x33')]:_0x1fcd5d[_0x0043('0x34')];if(!_0x3f7c8e[_0x0043('0x2f')][_0x0043('0x36')](_0x0043('0x37'))){_0x202592[_0x0043('0x1e')]=qs['limit'](_0x3f7c8e['query'][_0x0043('0x1e')]);_0x202592[_0x0043('0x1c')]=qs[_0x0043('0x1c')](_0x3f7c8e[_0x0043('0x2f')][_0x0043('0x1c')]);}_0x202592[_0x0043('0x38')]=qs['sort'](_0x3f7c8e[_0x0043('0x2f')][_0x0043('0x39')]);_0x202592[_0x0043('0x3a')]=qs[_0x0043('0x31')](_[_0x0043('0x3b')](_0x3f7c8e[_0x0043('0x2f')],_0x1fcd5d[_0x0043('0x31')]),_0x443145);if(_0x3f7c8e[_0x0043('0x2f')]['filter']){_0x202592[_0x0043('0x3a')]=_[_0x0043('0x3c')](_0x202592[_0x0043('0x3a')],{'$or':_[_0x0043('0x2a')](_0x443145,function(_0xcc368b){if(_0xcc368b[_0x0043('0x2d')]!==_0x0043('0x3d')){var _0x11cdf9={};_0x11cdf9[_0xcc368b[_0x0043('0x2e')]]={'$like':'%'+_0x3f7c8e[_0x0043('0x2f')][_0x0043('0x3e')]+'%'};return _0x11cdf9;}})});}_0x202592=_[_0x0043('0x3c')]({},_0x202592,_0x3f7c8e['options']);var _0x138b13={'where':_0x202592[_0x0043('0x3a')]};return db[_0x0043('0x2b')]['count'](_0x138b13)[_0x0043('0x25')](function(_0x13da24){_0x336f9b[_0x0043('0x1f')]=_0x13da24;if(_0x3f7c8e[_0x0043('0x2f')][_0x0043('0x3f')]){_0x202592['include']=[{'all':!![]}];}return db[_0x0043('0x2b')][_0x0043('0x40')](_0x202592);})[_0x0043('0x25')](function(_0x1cd3e4){_0x336f9b[_0x0043('0x41')]=_0x1cd3e4;return _0x336f9b;})[_0x0043('0x25')](respondWithFilteredResult(_0x2745de,_0x202592))['catch'](handleError(_0x2745de,null));};exports['show']=function(_0x50eb20,_0xee91e7){var _0x970f98={'raw':!![],'where':{'id':_0x50eb20[_0x0043('0x42')]['id']}},_0x349ba9={};_0x349ba9['model']=_[_0x0043('0x30')](db['CmHopperHistory'][_0x0043('0x2c')]);_0x349ba9[_0x0043('0x2f')]=_['keys'](_0x50eb20[_0x0043('0x2f')]);_0x349ba9[_0x0043('0x31')]=_[_0x0043('0x32')](_0x349ba9[_0x0043('0x34')],_0x349ba9[_0x0043('0x2f')]);_0x970f98[_0x0043('0x33')]=_['intersection'](_0x349ba9[_0x0043('0x34')],qs[_0x0043('0x43')](_0x50eb20[_0x0043('0x2f')][_0x0043('0x43')]));_0x970f98[_0x0043('0x33')]=_0x970f98[_0x0043('0x33')][_0x0043('0x35')]?_0x970f98[_0x0043('0x33')]:_0x349ba9['model'];if(_0x50eb20['query'][_0x0043('0x3f')]){_0x970f98['include']=[{'all':!![]}];}_0x970f98=_[_0x0043('0x3c')]({},_0x970f98,_0x50eb20[_0x0043('0x44')]);return db[_0x0043('0x2b')][_0x0043('0x45')](_0x970f98)[_0x0043('0x25')](handleEntityNotFound(_0xee91e7,null))[_0x0043('0x25')](respondWithResult(_0xee91e7,null))['catch'](handleError(_0xee91e7,null));};exports[_0x0043('0x46')]=function(_0x539c1e,_0x2a0ab4){return db[_0x0043('0x2b')][_0x0043('0x46')](_0x539c1e[_0x0043('0x47')],{})['then'](respondWithResult(_0x2a0ab4,0xc9))[_0x0043('0x48')](handleError(_0x2a0ab4,null));};exports[_0x0043('0x49')]=function(_0xfe6a2e,_0xe3b3f0){return db['CmHopperHistory'][_0x0043('0x49')]()[_0x0043('0x25')](respondWithResult(_0xe3b3f0,null))[_0x0043('0x48')](handleError(_0xe3b3f0,null));};exports[_0x0043('0x24')]=function(_0x27a937,_0x23c2d1){if(_0x27a937[_0x0043('0x47')][_0x0043('0x4a')]){delete _0x27a937[_0x0043('0x47')]['uniqueid'];}return db[_0x0043('0x2b')][_0x0043('0x45')]({'where':{'uniqueid':_0x27a937[_0x0043('0x42')]['id']}})[_0x0043('0x25')](handleEntityNotFound(_0x23c2d1,null))[_0x0043('0x25')](saveUpdates(_0x27a937[_0x0043('0x47')],null))[_0x0043('0x25')](respondWithResult(_0x23c2d1,null))[_0x0043('0x48')](handleError(_0x23c2d1,null));};
\ No newline at end of file
index 875bfd8..bb357cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6372=['lodash','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cmHopperHistory.attributes','exports','endtime','uniqueid'];(function(_0x194acc,_0x16a88a){var _0x2b7aab=function(_0x52944f){while(--_0x52944f){_0x194acc['push'](_0x194acc['shift']());}};_0x2b7aab(++_0x16a88a);}(_0x6372,0x1b8));var _0x2637=function(_0x3cfa98,_0x345e0f){_0x3cfa98=_0x3cfa98-0x0;var _0x3d474d=_0x6372[_0x3cfa98];return _0x3d474d;};'use strict';var _=require(_0x2637('0x0'));var util=require('util');var logger=require(_0x2637('0x1'))('api');var moment=require(_0x2637('0x2'));var BPromise=require(_0x2637('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2637('0x4'));var rimraf=require(_0x2637('0x5'));var config=require(_0x2637('0x6'));var attributes=require(_0x2637('0x7'));module[_0x2637('0x8')]=function(_0x5da891,_0x33d56c){return _0x5da891['define']('CmHopperHistory',attributes,{'tableName':'cm_hopper_history','paranoid':![],'indexes':[{'name':_0x2637('0x9'),'fields':['endtime']},{'name':'uniqueid','fields':[_0x2637('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe1c4=['lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','define','CmHopperHistory','cm_hopper_history','endtime','uniqueid'];(function(_0x561661,_0x4ec0db){var _0x1b766b=function(_0x50d8b6){while(--_0x50d8b6){_0x561661['push'](_0x561661['shift']());}};_0x1b766b(++_0x4ec0db);}(_0xe1c4,0x1ec));var _0x4e1c=function(_0x22d670,_0x2611ef){_0x22d670=_0x22d670-0x0;var _0x21ef8f=_0xe1c4[_0x22d670];return _0x21ef8f;};'use strict';var _=require(_0x4e1c('0x0'));var util=require(_0x4e1c('0x1'));var logger=require(_0x4e1c('0x2'))('api');var moment=require('moment');var BPromise=require(_0x4e1c('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4e1c('0x4'));var rimraf=require(_0x4e1c('0x5'));var config=require(_0x4e1c('0x6'));var attributes=require('./cmHopperHistory.attributes');module['exports']=function(_0x7af82a,_0x119617){return _0x7af82a[_0x4e1c('0x7')](_0x4e1c('0x8'),attributes,{'tableName':_0x4e1c('0x9'),'paranoid':![],'indexes':[{'name':_0x4e1c('0xa'),'fields':[_0x4e1c('0xa')]},{'name':_0x4e1c('0xb'),'fields':[_0x4e1c('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 211f675..ddee21f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62ec=['code','message','info','CmHopperHistory,\x20%s,\x20%s','CreateCmHopperHistory','create','body','raw','catch','CmHopperHistory','where','sequelize','COUNT','col','predictiveIntervalTotalCalls','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','AVG','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','AvgHandleTime','GetVoiceQueueHopperHistory','findAll','options','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','outboundReCallsDay','GetCampaignHopperHistory','campaign','name','ivrTotalCallsDays','ivrAnswerCallsDay','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x439be9,_0x4c2dbc){var _0x3ad03f=function(_0x4074cb){while(--_0x4074cb){_0x439be9['push'](_0x439be9['shift']());}};_0x3ad03f(++_0x4c2dbc);}(_0x62ec,0xca));var _0xc62e=function(_0x8fdcec,_0x7d4bd1){_0x8fdcec=_0x8fdcec-0x0;var _0x3796f2=_0x62ec[_0x8fdcec];return _0x3796f2;};'use strict';var _=require('lodash');var util=require(_0xc62e('0x0'));var moment=require('moment');var BPromise=require(_0xc62e('0x1'));var rs=require(_0xc62e('0x2'));var fs=require('fs');var Redis=require(_0xc62e('0x3'));var db=require(_0xc62e('0x4'))['db'];var utils=require(_0xc62e('0x5'));var logger=require(_0xc62e('0x6'))(_0xc62e('0x7'));var config=require('../../config/environment');var jayson=require(_0xc62e('0x8'));var client=jayson[_0xc62e('0x9')][_0xc62e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x532369,_0x5d1de3,_0x4bf1de){return new BPromise(function(_0x1c3e85,_0x3954dd){return client['request'](_0x532369,_0x4bf1de)[_0xc62e('0xb')](function(_0x14048f){logger['info']('CmHopperHistory,\x20%s,\x20%s',_0x5d1de3,_0xc62e('0xc'));logger[_0xc62e('0xd')](_0xc62e('0xe'),_0x5d1de3,'request\x20sent',JSON[_0xc62e('0xf')](_0x14048f));if(_0x14048f[_0xc62e('0x10')]){if(_0x14048f[_0xc62e('0x10')][_0xc62e('0x11')]===0x1f4){logger['error']('CmHopperHistory,\x20%s,\x20%s',_0x5d1de3,_0x14048f[_0xc62e('0x10')][_0xc62e('0x12')]);return _0x3954dd(_0x14048f[_0xc62e('0x10')][_0xc62e('0x12')]);}logger['error']('CmHopperHistory,\x20%s,\x20%s',_0x5d1de3,_0x14048f[_0xc62e('0x10')][_0xc62e('0x12')]);return _0x1c3e85(_0x14048f[_0xc62e('0x10')]['message']);}else{logger[_0xc62e('0x13')](_0xc62e('0x14'),_0x5d1de3,_0xc62e('0xc'));_0x1c3e85(_0x14048f['result'][_0xc62e('0x12')]);}})['catch'](function(_0x5e24a1){logger[_0xc62e('0x10')]('CmHopperHistory,\x20%s,\x20%s',_0x5d1de3,_0x5e24a1);_0x3954dd(_0x5e24a1);});});}exports[_0xc62e('0x15')]=function(_0x536222){var _0x34a38c=this;return new Promise(function(_0x449713,_0x165fd5){return db['CmHopperHistory'][_0xc62e('0x16')](_0x536222[_0xc62e('0x17')],{'raw':_0x536222['options']?_0x536222['options'][_0xc62e('0x18')]===undefined?!![]:![]:!![]})[_0xc62e('0xb')](function(_0x37061d){logger[_0xc62e('0x13')](_0xc62e('0x15'),_0x536222);logger[_0xc62e('0xd')](_0xc62e('0x15'),_0x536222,JSON[_0xc62e('0xf')](_0x37061d));_0x449713(_0x37061d);})[_0xc62e('0x19')](function(_0x700810){logger[_0xc62e('0x10')]('CreateCmHopperHistory',_0x700810[_0xc62e('0x12')],_0x536222);_0x165fd5(_0x34a38c[_0xc62e('0x10')](0x1f4,_0x700810[_0xc62e('0x12')]));});});};exports['AvgHandleTime']=function(_0x2ef223){var _0x59264d=this;return new Promise(function(_0x242f37,_0x407ad6){return db[_0xc62e('0x1a')]['findAll']({'raw':_0x2ef223['options']?_0x2ef223['options'][_0xc62e('0x18')]===undefined?!![]:![]:!![],'where':_0x2ef223['options']?_0x2ef223['options'][_0xc62e('0x1b')]||null:null,'attributes':[[db[_0xc62e('0x1c')]['fn'](_0xc62e('0x1d'),db[_0xc62e('0x1c')][_0xc62e('0x1e')]('id')),_0xc62e('0x1f')],[db[_0xc62e('0x1c')]['fn'](_0xc62e('0x1d'),db[_0xc62e('0x1c')]['fn']('IF',db[_0xc62e('0x1c')][_0xc62e('0x20')](_0xc62e('0x21')))),_0xc62e('0x22')],[db[_0xc62e('0x1c')]['fn']('COUNT',db[_0xc62e('0x1c')]['fn']('IF',db[_0xc62e('0x1c')][_0xc62e('0x20')](_0xc62e('0x23')))),_0xc62e('0x24')],[db[_0xc62e('0x1c')]['fn'](_0xc62e('0x1d'),db[_0xc62e('0x1c')]['fn']('IF',db[_0xc62e('0x1c')][_0xc62e('0x20')](_0xc62e('0x25')))),'predictiveIntervalDroppedCallsCallersExit'],[db[_0xc62e('0x1c')]['fn']('AVG',db[_0xc62e('0x1c')]['fn']('IF',db[_0xc62e('0x1c')][_0xc62e('0x20')](_0xc62e('0x26')))),_0xc62e('0x27')],[db[_0xc62e('0x1c')]['fn'](_0xc62e('0x28'),db[_0xc62e('0x1c')]['fn']('IF',db[_0xc62e('0x1c')]['literal'](_0xc62e('0x29')))),_0xc62e('0x2a')]]})[_0xc62e('0xb')](function(_0x393a84){logger[_0xc62e('0x13')](_0xc62e('0x2b'),_0x2ef223);logger[_0xc62e('0xd')]('AvgHandleTime',_0x2ef223,JSON[_0xc62e('0xf')](_0x393a84));_0x242f37(_0x393a84);})[_0xc62e('0x19')](function(_0x9724b7){logger[_0xc62e('0x10')](_0xc62e('0x2b'),_0x9724b7['message'],_0x2ef223);_0x407ad6(_0x59264d['error'](0x1f4,_0x9724b7[_0xc62e('0x12')]));});});};exports[_0xc62e('0x2c')]=function(_0x191e25){var _0x176640=this;return new Promise(function(_0x485295,_0x52da60){return db[_0xc62e('0x1a')][_0xc62e('0x2d')]({'raw':_0x191e25[_0xc62e('0x2e')]?_0x191e25['options'][_0xc62e('0x18')]===undefined?!![]:![]:!![],'where':_0x191e25['options']?_0x191e25[_0xc62e('0x2e')][_0xc62e('0x1b')]||null:null,'attributes':[['campaign','name'],[db[_0xc62e('0x1c')]['fn'](_0xc62e('0x1d'),db[_0xc62e('0x1c')]['fn']('IF',db[_0xc62e('0x1c')][_0xc62e('0x20')]('`state`\x20=\x200,\x201,\x20null'))),_0xc62e('0x2f')],[db[_0xc62e('0x1c')]['fn'](_0xc62e('0x1d'),db['sequelize']['fn']('IF',db['sequelize'][_0xc62e('0x20')](_0xc62e('0x30')))),_0xc62e('0x31')],[db['sequelize']['fn'](_0xc62e('0x1d'),db[_0xc62e('0x1c')]['fn']('IF',db['sequelize'][_0xc62e('0x20')]('`state`\x20=\x204,\x201,\x20null'))),_0xc62e('0x32')],[db['sequelize']['fn']('COUNT',db[_0xc62e('0x1c')]['fn']('IF',db[_0xc62e('0x1c')][_0xc62e('0x20')](_0xc62e('0x33')))),_0xc62e('0x34')],[db[_0xc62e('0x1c')]['fn']('COUNT',db[_0xc62e('0x1c')]['fn']('IF',db[_0xc62e('0x1c')][_0xc62e('0x20')](_0xc62e('0x35')))),_0xc62e('0x36')],[db['sequelize']['fn'](_0xc62e('0x1d'),db[_0xc62e('0x1c')]['fn']('IF',db['sequelize'][_0xc62e('0x20')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0xc62e('0x37')],[db[_0xc62e('0x1c')]['fn'](_0xc62e('0x1d'),db[_0xc62e('0x1c')]['fn']('IF',db['sequelize'][_0xc62e('0x20')](_0xc62e('0x38')))),'outboundDropCallsDayCallersExit'],[db[_0xc62e('0x1c')]['fn'](_0xc62e('0x1d'),db[_0xc62e('0x1c')]['fn']('IF',db[_0xc62e('0x1c')]['literal']('`state`\x20=\x2012,\x201,\x20null'))),_0xc62e('0x39')],[db[_0xc62e('0x1c')]['fn'](_0xc62e('0x1d'),db[_0xc62e('0x1c')]['fn']('IF',db[_0xc62e('0x1c')][_0xc62e('0x20')](_0xc62e('0x3a')))),_0xc62e('0x3b')],[db[_0xc62e('0x1c')]['fn'](_0xc62e('0x1d'),db[_0xc62e('0x1c')]['fn']('IF',db[_0xc62e('0x1c')]['literal'](_0xc62e('0x3c')))),_0xc62e('0x3d')],[db['sequelize']['fn'](_0xc62e('0x1d'),db['sequelize']['fn']('IF',db[_0xc62e('0x1c')]['literal'](_0xc62e('0x3e')))),_0xc62e('0x3f')],[db[_0xc62e('0x1c')]['fn']('COUNT',db[_0xc62e('0x1c')]['fn']('IF',db['sequelize'][_0xc62e('0x20')](_0xc62e('0x40')))),_0xc62e('0x41')],[db[_0xc62e('0x1c')]['fn'](_0xc62e('0x1d'),db['sequelize']['fn']('IF',db[_0xc62e('0x1c')][_0xc62e('0x20')](_0xc62e('0x42')))),_0xc62e('0x3f')],[db[_0xc62e('0x1c')]['fn']('COUNT',db[_0xc62e('0x1c')]['fn']('IF',db[_0xc62e('0x1c')][_0xc62e('0x20')]('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),_0xc62e('0x43')]],'group':['campaign']})[_0xc62e('0xb')](function(_0x4ee269){logger['info']('GetVoiceQueueHopperHistory',_0x191e25);logger['debug'](_0xc62e('0x2c'),_0x191e25,JSON[_0xc62e('0xf')](_0x4ee269));_0x485295(_0x4ee269);})[_0xc62e('0x19')](function(_0x3192d2){logger[_0xc62e('0x10')](_0xc62e('0x2c'),_0x3192d2[_0xc62e('0x12')],_0x191e25);_0x52da60(_0x176640[_0xc62e('0x10')](0x1f4,_0x3192d2['message']));});});};exports[_0xc62e('0x44')]=function(_0x1ab100){var _0x553f16=this;return new Promise(function(_0x434fbf,_0x524e08){return db[_0xc62e('0x1a')][_0xc62e('0x2d')]({'raw':_0x1ab100[_0xc62e('0x2e')]?_0x1ab100[_0xc62e('0x2e')]['raw']===undefined?!![]:![]:!![],'where':_0x1ab100[_0xc62e('0x2e')]?_0x1ab100[_0xc62e('0x2e')][_0xc62e('0x1b')]||null:null,'attributes':[[_0xc62e('0x45'),_0xc62e('0x46')],[db[_0xc62e('0x1c')]['fn']('COUNT',db[_0xc62e('0x1c')][_0xc62e('0x1e')]('id')),_0xc62e('0x47')],[db[_0xc62e('0x1c')]['fn'](_0xc62e('0x1d'),db[_0xc62e('0x1c')]['fn']('IF',db[_0xc62e('0x1c')][_0xc62e('0x20')](_0xc62e('0x21')))),_0xc62e('0x48')]],'group':[_0xc62e('0x45')]})[_0xc62e('0xb')](function(_0x4d47f7){logger['info'](_0xc62e('0x44'),_0x1ab100);logger[_0xc62e('0xd')](_0xc62e('0x44'),_0x1ab100,JSON[_0xc62e('0xf')](_0x4d47f7));_0x434fbf(_0x4d47f7);})['catch'](function(_0x34f576){logger['error'](_0xc62e('0x44'),_0x34f576['message'],_0x1ab100);_0x524e08(_0x553f16[_0xc62e('0x10')](0x1f4,_0x34f576[_0xc62e('0x12')]));});});};
\ No newline at end of file
+var _0xb58b=['CmHopperHistory','create','body','options','raw','debug','catch','AvgHandleTime','findAll','where','sequelize','COUNT','col','predictiveIntervalTotalCalls','literal','`state`\x20=\x204,\x201,\x20null','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','ivrTotalCallsDays','ivrAnswerCallsDay','GetCampaignHopperHistory','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateCmHopperHistory'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0xb58b,0x1f1));var _0xbb58=function(_0x3ce130,_0x1054c6){_0x3ce130=_0x3ce130-0x0;var _0x39c52f=_0xb58b[_0x3ce130];return _0x39c52f;};'use strict';var _=require('lodash');var util=require(_0xbb58('0x0'));var moment=require(_0xbb58('0x1'));var BPromise=require(_0xbb58('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbb58('0x3'));var db=require(_0xbb58('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xbb58('0x5'))('rpc');var config=require(_0xbb58('0x6'));var jayson=require(_0xbb58('0x7'));var client=jayson[_0xbb58('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x27cbda,_0x323066,_0xe874f2){return new BPromise(function(_0x5d7fe8,_0xd94f1){return client[_0xbb58('0x9')](_0x27cbda,_0xe874f2)[_0xbb58('0xa')](function(_0x36ca50){logger[_0xbb58('0xb')](_0xbb58('0xc'),_0x323066,_0xbb58('0xd'));logger['debug'](_0xbb58('0xe'),_0x323066,'request\x20sent',JSON[_0xbb58('0xf')](_0x36ca50));if(_0x36ca50[_0xbb58('0x10')]){if(_0x36ca50[_0xbb58('0x10')][_0xbb58('0x11')]===0x1f4){logger['error'](_0xbb58('0xc'),_0x323066,_0x36ca50[_0xbb58('0x10')]['message']);return _0xd94f1(_0x36ca50[_0xbb58('0x10')][_0xbb58('0x12')]);}logger[_0xbb58('0x10')](_0xbb58('0xc'),_0x323066,_0x36ca50[_0xbb58('0x10')]['message']);return _0x5d7fe8(_0x36ca50[_0xbb58('0x10')][_0xbb58('0x12')]);}else{logger['info']('CmHopperHistory,\x20%s,\x20%s',_0x323066,_0xbb58('0xd'));_0x5d7fe8(_0x36ca50[_0xbb58('0x13')][_0xbb58('0x12')]);}})['catch'](function(_0x5edc97){logger['error']('CmHopperHistory,\x20%s,\x20%s',_0x323066,_0x5edc97);_0xd94f1(_0x5edc97);});});}exports[_0xbb58('0x14')]=function(_0x3134ea){var _0x48f3e0=this;return new Promise(function(_0xbee66,_0x497653){return db[_0xbb58('0x15')][_0xbb58('0x16')](_0x3134ea[_0xbb58('0x17')],{'raw':_0x3134ea[_0xbb58('0x18')]?_0x3134ea[_0xbb58('0x18')][_0xbb58('0x19')]===undefined?!![]:![]:!![]})[_0xbb58('0xa')](function(_0x497fd0){logger[_0xbb58('0xb')](_0xbb58('0x14'),_0x3134ea);logger[_0xbb58('0x1a')](_0xbb58('0x14'),_0x3134ea,JSON[_0xbb58('0xf')](_0x497fd0));_0xbee66(_0x497fd0);})[_0xbb58('0x1b')](function(_0x49453a){logger[_0xbb58('0x10')](_0xbb58('0x14'),_0x49453a['message'],_0x3134ea);_0x497653(_0x48f3e0[_0xbb58('0x10')](0x1f4,_0x49453a['message']));});});};exports[_0xbb58('0x1c')]=function(_0x287822){var _0x152f22=this;return new Promise(function(_0x3e215c,_0x2d111c){return db[_0xbb58('0x15')][_0xbb58('0x1d')]({'raw':_0x287822[_0xbb58('0x18')]?_0x287822['options'][_0xbb58('0x19')]===undefined?!![]:![]:!![],'where':_0x287822[_0xbb58('0x18')]?_0x287822[_0xbb58('0x18')][_0xbb58('0x1e')]||null:null,'attributes':[[db[_0xbb58('0x1f')]['fn'](_0xbb58('0x20'),db[_0xbb58('0x1f')][_0xbb58('0x21')]('id')),_0xbb58('0x22')],[db[_0xbb58('0x1f')]['fn'](_0xbb58('0x20'),db[_0xbb58('0x1f')]['fn']('IF',db[_0xbb58('0x1f')][_0xbb58('0x23')](_0xbb58('0x24')))),'predictiveIntervalAnsweredCalls'],[db[_0xbb58('0x1f')]['fn'](_0xbb58('0x20'),db[_0xbb58('0x1f')]['fn']('IF',db[_0xbb58('0x1f')][_0xbb58('0x23')](_0xbb58('0x25')))),_0xbb58('0x26')],[db[_0xbb58('0x1f')]['fn'](_0xbb58('0x20'),db['sequelize']['fn']('IF',db[_0xbb58('0x1f')][_0xbb58('0x23')](_0xbb58('0x27')))),_0xbb58('0x28')],[db[_0xbb58('0x1f')]['fn'](_0xbb58('0x29'),db[_0xbb58('0x1f')]['fn']('IF',db[_0xbb58('0x1f')][_0xbb58('0x23')](_0xbb58('0x2a')))),_0xbb58('0x2b')],[db[_0xbb58('0x1f')]['fn'](_0xbb58('0x29'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0xbb58('0x2c')))),_0xbb58('0x2d')]]})[_0xbb58('0xa')](function(_0x3c7627){logger[_0xbb58('0xb')](_0xbb58('0x1c'),_0x287822);logger[_0xbb58('0x1a')](_0xbb58('0x1c'),_0x287822,JSON['stringify'](_0x3c7627));_0x3e215c(_0x3c7627);})[_0xbb58('0x1b')](function(_0x230859){logger['error'](_0xbb58('0x1c'),_0x230859['message'],_0x287822);_0x2d111c(_0x152f22[_0xbb58('0x10')](0x1f4,_0x230859['message']));});});};exports[_0xbb58('0x2e')]=function(_0x36c7b4){var _0x52f4af=this;return new Promise(function(_0x3d3aee,_0x300c7b){return db[_0xbb58('0x15')][_0xbb58('0x1d')]({'raw':_0x36c7b4[_0xbb58('0x18')]?_0x36c7b4[_0xbb58('0x18')][_0xbb58('0x19')]===undefined?!![]:![]:!![],'where':_0x36c7b4[_0xbb58('0x18')]?_0x36c7b4['options'][_0xbb58('0x1e')]||null:null,'attributes':[[_0xbb58('0x2f'),_0xbb58('0x30')],[db['sequelize']['fn']('COUNT',db[_0xbb58('0x1f')]['fn']('IF',db['sequelize'][_0xbb58('0x23')](_0xbb58('0x31')))),_0xbb58('0x32')],[db['sequelize']['fn']('COUNT',db[_0xbb58('0x1f')]['fn']('IF',db[_0xbb58('0x1f')][_0xbb58('0x23')](_0xbb58('0x33')))),_0xbb58('0x34')],[db[_0xbb58('0x1f')]['fn']('COUNT',db[_0xbb58('0x1f')]['fn']('IF',db[_0xbb58('0x1f')][_0xbb58('0x23')](_0xbb58('0x24')))),_0xbb58('0x35')],[db[_0xbb58('0x1f')]['fn']('COUNT',db[_0xbb58('0x1f')]['fn']('IF',db['sequelize'][_0xbb58('0x23')](_0xbb58('0x36')))),_0xbb58('0x37')],[db[_0xbb58('0x1f')]['fn']('COUNT',db[_0xbb58('0x1f')]['fn']('IF',db[_0xbb58('0x1f')][_0xbb58('0x23')](_0xbb58('0x38')))),'outboundCongestionCallsDay'],[db[_0xbb58('0x1f')]['fn']('COUNT',db[_0xbb58('0x1f')]['fn']('IF',db[_0xbb58('0x1f')][_0xbb58('0x23')](_0xbb58('0x39')))),_0xbb58('0x3a')],[db[_0xbb58('0x1f')]['fn'](_0xbb58('0x20'),db[_0xbb58('0x1f')]['fn']('IF',db[_0xbb58('0x1f')][_0xbb58('0x23')](_0xbb58('0x3b')))),_0xbb58('0x3c')],[db[_0xbb58('0x1f')]['fn']('COUNT',db[_0xbb58('0x1f')]['fn']('IF',db['sequelize']['literal'](_0xbb58('0x3d')))),_0xbb58('0x3e')],[db[_0xbb58('0x1f')]['fn'](_0xbb58('0x20'),db[_0xbb58('0x1f')]['fn']('IF',db[_0xbb58('0x1f')][_0xbb58('0x23')](_0xbb58('0x3f')))),_0xbb58('0x40')],[db[_0xbb58('0x1f')]['fn'](_0xbb58('0x20'),db['sequelize']['fn']('IF',db[_0xbb58('0x1f')][_0xbb58('0x23')]('`state`\x20=\x2014,\x201,\x20null'))),_0xbb58('0x41')],[db[_0xbb58('0x1f')]['fn'](_0xbb58('0x20'),db[_0xbb58('0x1f')]['fn']('IF',db['sequelize'][_0xbb58('0x23')]('`state`\x20=\x2018,\x201,\x20null'))),_0xbb58('0x42')],[db[_0xbb58('0x1f')]['fn'](_0xbb58('0x20'),db['sequelize']['fn']('IF',db[_0xbb58('0x1f')][_0xbb58('0x23')]('`state`\x20=\x2016,\x201,\x20null'))),_0xbb58('0x43')],[db['sequelize']['fn'](_0xbb58('0x20'),db[_0xbb58('0x1f')]['fn']('IF',db[_0xbb58('0x1f')][_0xbb58('0x23')](_0xbb58('0x44')))),_0xbb58('0x42')],[db[_0xbb58('0x1f')]['fn']('COUNT',db[_0xbb58('0x1f')]['fn']('IF',db[_0xbb58('0x1f')]['literal'](_0xbb58('0x45')))),_0xbb58('0x46')]],'group':['campaign']})[_0xbb58('0xa')](function(_0x44636b){logger[_0xbb58('0xb')]('GetVoiceQueueHopperHistory',_0x36c7b4);logger[_0xbb58('0x1a')](_0xbb58('0x2e'),_0x36c7b4,JSON[_0xbb58('0xf')](_0x44636b));_0x3d3aee(_0x44636b);})['catch'](function(_0x537ed5){logger['error'](_0xbb58('0x2e'),_0x537ed5[_0xbb58('0x12')],_0x36c7b4);_0x300c7b(_0x52f4af[_0xbb58('0x10')](0x1f4,_0x537ed5['message']));});});};exports['GetCampaignHopperHistory']=function(_0x1573d1){var _0x40c55d=this;return new Promise(function(_0x37bb99,_0x23ed08){return db[_0xbb58('0x15')]['findAll']({'raw':_0x1573d1[_0xbb58('0x18')]?_0x1573d1[_0xbb58('0x18')][_0xbb58('0x19')]===undefined?!![]:![]:!![],'where':_0x1573d1['options']?_0x1573d1[_0xbb58('0x18')][_0xbb58('0x1e')]||null:null,'attributes':[[_0xbb58('0x2f'),_0xbb58('0x30')],[db[_0xbb58('0x1f')]['fn']('COUNT',db[_0xbb58('0x1f')][_0xbb58('0x21')]('id')),_0xbb58('0x47')],[db[_0xbb58('0x1f')]['fn'](_0xbb58('0x20'),db[_0xbb58('0x1f')]['fn']('IF',db[_0xbb58('0x1f')][_0xbb58('0x23')]('`state`\x20=\x204,\x201,\x20null'))),_0xbb58('0x48')]],'group':['campaign']})[_0xbb58('0xa')](function(_0x29c28b){logger[_0xbb58('0xb')](_0xbb58('0x49'),_0x1573d1);logger[_0xbb58('0x1a')](_0xbb58('0x49'),_0x1573d1,JSON[_0xbb58('0xf')](_0x29c28b));_0x37bb99(_0x29c28b);})[_0xbb58('0x1b')](function(_0x19ef37){logger[_0xbb58('0x10')](_0xbb58('0x49'),_0x19ef37['message'],_0x1573d1);_0x23ed08(_0x40c55d[_0xbb58('0x10')](0x1f4,_0x19ef37[_0xbb58('0x12')]));});});};
\ No newline at end of file
index ba0dc9f..f77bada 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e48=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get','isAuthenticated','index','/describe','show','put','/:id','update','exports','multer'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3e48,0x167));var _0x83e4=function(_0x143998,_0x304ef7){_0x143998=_0x143998-0x0;var _0x4bfbc6=_0x3e48[_0x143998];return _0x4bfbc6;};'use strict';var multer=require(_0x83e4('0x0'));var util=require(_0x83e4('0x1'));var path=require(_0x83e4('0x2'));var timeout=require(_0x83e4('0x3'));var express=require(_0x83e4('0x4'));var router=express[_0x83e4('0x5')]();var fs_extra=require(_0x83e4('0x6'));var auth=require(_0x83e4('0x7'));var interaction=require(_0x83e4('0x8'));var config=require(_0x83e4('0x9'));var controller=require(_0x83e4('0xa'));router[_0x83e4('0xb')]('/',auth[_0x83e4('0xc')](),controller[_0x83e4('0xd')]);router['get'](_0x83e4('0xe'),auth[_0x83e4('0xc')](),controller['describe']);router[_0x83e4('0xb')]('/:id',auth[_0x83e4('0xc')](),controller[_0x83e4('0xf')]);router['post']('/',auth[_0x83e4('0xc')](),controller['create']);router[_0x83e4('0x10')](_0x83e4('0x11'),auth[_0x83e4('0xc')](),controller[_0x83e4('0x12')]);module[_0x83e4('0x13')]=router;
\ No newline at end of file
+var _0xaf4f=['post','create','put','/:id','update','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','describe','show'];(function(_0x1c4f83,_0x545e66){var _0x287301=function(_0x315ef2){while(--_0x315ef2){_0x1c4f83['push'](_0x1c4f83['shift']());}};_0x287301(++_0x545e66);}(_0xaf4f,0x138));var _0xfaf4=function(_0xb7202,_0x4aa500){_0xb7202=_0xb7202-0x0;var _0x6488bb=_0xaf4f[_0xb7202];return _0x6488bb;};'use strict';var multer=require(_0xfaf4('0x0'));var util=require(_0xfaf4('0x1'));var path=require(_0xfaf4('0x2'));var timeout=require(_0xfaf4('0x3'));var express=require('express');var router=express[_0xfaf4('0x4')]();var fs_extra=require(_0xfaf4('0x5'));var auth=require(_0xfaf4('0x6'));var interaction=require(_0xfaf4('0x7'));var config=require('../../config/environment');var controller=require('./cmHopperHistory.controller');router[_0xfaf4('0x8')]('/',auth['isAuthenticated'](),controller['index']);router['get']('/describe',auth[_0xfaf4('0x9')](),controller[_0xfaf4('0xa')]);router[_0xfaf4('0x8')]('/:id',auth[_0xfaf4('0x9')](),controller[_0xfaf4('0xb')]);router[_0xfaf4('0xc')]('/',auth[_0xfaf4('0x9')](),controller[_0xfaf4('0xd')]);router[_0xfaf4('0xe')](_0xfaf4('0xf'),auth['isAuthenticated'](),controller[_0xfaf4('0x10')]);module[_0xfaf4('0x11')]=router;
\ No newline at end of file
index b3ccd17..3d4abba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd0f=['sequelize','exports','name','STRING'];(function(_0x4e4f0e,_0x1c3892){var _0x1a7219=function(_0x3821ad){while(--_0x3821ad){_0x4e4f0e['push'](_0x4e4f0e['shift']());}};_0x1a7219(++_0x1c3892);}(_0xfd0f,0x1b8));var _0xffd0=function(_0xb8dff9,_0x275521){_0xb8dff9=_0xb8dff9-0x0;var _0x52e900=_0xfd0f[_0xb8dff9];return _0x52e900;};'use strict';var Sequelize=require(_0xffd0('0x0'));module[_0xffd0('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xffd0('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xffd0('0x3')]},'dialPrefix':{'type':Sequelize[_0xffd0('0x3')]}};
\ No newline at end of file
+var _0x26cf=['STRING','exports'];(function(_0x2b0bc2,_0x4331f5){var _0x56e5b9=function(_0x4c1b06){while(--_0x4c1b06){_0x2b0bc2['push'](_0x2b0bc2['shift']());}};_0x56e5b9(++_0x4331f5);}(_0x26cf,0x135));var _0xf26c=function(_0x32a2e6,_0x4cdc75){_0x32a2e6=_0x32a2e6-0x0;var _0x2d798b=_0x26cf[_0x32a2e6];return _0x2d798b;};'use strict';var Sequelize=require('sequelize');module[_0xf26c('0x0')]={'name':{'type':Sequelize[_0xf26c('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xf26c('0x1')]},'dialPrefix':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f19bcb0..fd91052 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x062b=['sendStatus','error','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','type','VIRTUAL','merge','options','CmList','include','findAll','catch','show','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Lists','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','ListId','Disposition','getDispositions','findOne','rows','removeDispositions','ids','addContacts','isArray','tags','join','each','CmContact','omit','success','push','errors','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','cf_%d','nolimit','raw','getContactsCsv','concat','format','now','writeFileSync','/tmp/list_%d_%s.csv','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','setHeader','Content-type','text/csv','download','addCustomField','sequelize','addCustomFields','Sequelize','TEXT','number','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','addColumn','cm_contacts','cf_%s','findAndCountAll','addAgents','emit','userCmList:save','removeAgents','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','localhost','socket.io-emitter','redis','./cmList.socket','register','end','status','json','offset','undefined','limit','count','set','Content-Range','save','update','then','get','UserProfileResource','destroy'];(function(_0x52c4e9,_0x5412d0){var _0x252a03=function(_0x57857c){while(--_0x57857c){_0x52c4e9['push'](_0x52c4e9['shift']());}};_0x252a03(++_0x5412d0);}(_0x062b,0x195));var _0xb062=function(_0x283521,_0x3cea3a){_0x283521=_0x283521-0x0;var _0x2a17c3=_0x062b[_0x283521];return _0x2a17c3;};'use strict';var emlformat=require(_0xb062('0x0'));var rimraf=require(_0xb062('0x1'));var zipdir=require(_0xb062('0x2'));var jsonpatch=require(_0xb062('0x3'));var rp=require(_0xb062('0x4'));var moment=require(_0xb062('0x5'));var BPromise=require(_0xb062('0x6'));var Mustache=require('mustache');var util=require(_0xb062('0x7'));var path=require(_0xb062('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb062('0x9'));var _=require('lodash');var squel=require(_0xb062('0xa'));var crypto=require(_0xb062('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xb062('0xc'));var toCsv=require('to-csv');var querystring=require(_0xb062('0xd'));var Papa=require(_0xb062('0xe'));var Redis=require(_0xb062('0xf'));var authService=require(_0xb062('0x10'));var qs=require(_0xb062('0x11'));var as=require(_0xb062('0x12'));var hardwareService=require(_0xb062('0x13'));var logger=require('../../config/logger')(_0xb062('0x14'));var utils=require(_0xb062('0x15'));var config=require(_0xb062('0x16'));var licenseUtil=require(_0xb062('0x17'));var db=require(_0xb062('0x18'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0xb062('0x19'),'port':0x18eb});var socket=require(_0xb062('0x1a'))(new Redis(config[_0xb062('0x1b')]));require(_0xb062('0x1c'))[_0xb062('0x1d')](socket);function respondWithStatusCode(_0x2615ec,_0x10f81b){_0x10f81b=_0x10f81b||0xcc;return function(_0x8c7ff7){if(_0x8c7ff7){return _0x2615ec['sendStatus'](_0x10f81b);}return _0x2615ec['status'](_0x10f81b)[_0xb062('0x1e')]();};}function respondWithResult(_0x4df239,_0x16fb06){_0x16fb06=_0x16fb06||0xc8;return function(_0xc2d3c5){if(_0xc2d3c5){return _0x4df239[_0xb062('0x1f')](_0x16fb06)[_0xb062('0x20')](_0xc2d3c5);}};}function respondWithFilteredResult(_0x426cd2,_0x4ad074){return function(_0x1f2ba8){if(_0x1f2ba8){var _0x13dc39=typeof _0x4ad074[_0xb062('0x21')]===_0xb062('0x22')&&typeof _0x4ad074[_0xb062('0x23')]===_0xb062('0x22');var _0x16b061=_0x1f2ba8[_0xb062('0x24')];var _0x264aa6=_0x13dc39?0x0:_0x4ad074[_0xb062('0x21')];var _0x4883c3=_0x13dc39?_0x1f2ba8[_0xb062('0x24')]:_0x4ad074[_0xb062('0x21')]+_0x4ad074[_0xb062('0x23')];var _0x59185b;if(_0x4883c3>=_0x16b061){_0x4883c3=_0x16b061;_0x59185b=0xc8;}else{_0x59185b=0xce;}_0x426cd2[_0xb062('0x1f')](_0x59185b);return _0x426cd2[_0xb062('0x25')](_0xb062('0x26'),_0x264aa6+'-'+_0x4883c3+'/'+_0x16b061)[_0xb062('0x20')](_0x1f2ba8);}return null;};}function patchUpdates(_0x393788){return function(_0x5ae0db){try{jsonpatch['apply'](_0x5ae0db,_0x393788,!![]);}catch(_0x1cdb0a){return BPromise['reject'](_0x1cdb0a);}return _0x5ae0db[_0xb062('0x27')]();};}function saveUpdates(_0x2022a6,_0x3ce09c){return function(_0x30722c){if(_0x30722c){return _0x30722c[_0xb062('0x28')](_0x2022a6)[_0xb062('0x29')](function(_0xe62ce7){return _0xe62ce7;});}return null;};}function removeEntity(_0x547e52,_0x45b3c6){return function(_0x22c301){if(_0x22c301){return _0x22c301['destroy']()[_0xb062('0x29')](function(){var _0x518e16=_0x22c301[_0xb062('0x2a')]({'plain':!![]});var _0x2ed540='Lists';return db[_0xb062('0x2b')][_0xb062('0x2c')]({'where':{'type':_0x2ed540,'resourceId':_0x518e16['id']}})['then'](function(){return _0x22c301;});})[_0xb062('0x29')](function(){_0x547e52[_0xb062('0x1f')](0xcc)[_0xb062('0x1e')]();});}};}function handleEntityNotFound(_0x276d06,_0x5ee16a){return function(_0x73bafa){if(!_0x73bafa){_0x276d06[_0xb062('0x2d')](0x194);}return _0x73bafa;};}function handleError(_0x51f8f0,_0x431137){_0x431137=_0x431137||0x1f4;return function(_0x3955e7){logger[_0xb062('0x2e')](_0x3955e7['stack']);if(_0x3955e7[_0xb062('0x2f')]){delete _0x3955e7[_0xb062('0x2f')];}_0x51f8f0[_0xb062('0x1f')](_0x431137)[_0xb062('0x30')](_0x3955e7);};}exports[_0xb062('0x31')]=function(_0x1b5f3a,_0x4077b1){var _0x5c2c27={},_0x273723={},_0x122346={'count':0x0,'rows':[]};var _0x2cc06d=_[_0xb062('0x32')](db['CmList'][_0xb062('0x33')],function(_0x2b9dce){return{'name':_0x2b9dce[_0xb062('0x34')],'type':_0x2b9dce['type'][_0xb062('0x35')]};});_0x273723[_0xb062('0x36')]=_['map'](_0x2cc06d,_0xb062('0x2f'));_0x273723[_0xb062('0x37')]=_[_0xb062('0x38')](_0x1b5f3a['query']);_0x273723[_0xb062('0x39')]=_[_0xb062('0x3a')](_0x273723[_0xb062('0x36')],_0x273723[_0xb062('0x37')]);_0x5c2c27[_0xb062('0x3b')]=_['intersection'](_0x273723[_0xb062('0x36')],qs[_0xb062('0x3c')](_0x1b5f3a[_0xb062('0x37')][_0xb062('0x3c')]));_0x5c2c27[_0xb062('0x3b')]=_0x5c2c27[_0xb062('0x3b')][_0xb062('0x3d')]?_0x5c2c27['attributes']:_0x273723[_0xb062('0x36')];if(!_0x1b5f3a[_0xb062('0x37')][_0xb062('0x3e')]('nolimit')){_0x5c2c27[_0xb062('0x23')]=qs['limit'](_0x1b5f3a[_0xb062('0x37')][_0xb062('0x23')]);_0x5c2c27[_0xb062('0x21')]=qs[_0xb062('0x21')](_0x1b5f3a[_0xb062('0x37')][_0xb062('0x21')]);}_0x5c2c27[_0xb062('0x3f')]=qs[_0xb062('0x40')](_0x1b5f3a['query'][_0xb062('0x40')]);_0x5c2c27[_0xb062('0x41')]=qs[_0xb062('0x39')](_[_0xb062('0x42')](_0x1b5f3a[_0xb062('0x37')],_0x273723[_0xb062('0x39')]),_0x2cc06d);if(_0x1b5f3a[_0xb062('0x37')][_0xb062('0x43')]){_0x5c2c27[_0xb062('0x41')]=_['merge'](_0x5c2c27[_0xb062('0x41')],{'$or':_[_0xb062('0x32')](_0x2cc06d,function(_0x15948d){if(_0x15948d[_0xb062('0x44')]!==_0xb062('0x45')){var _0x107758={};_0x107758[_0x15948d[_0xb062('0x2f')]]={'$like':'%'+_0x1b5f3a[_0xb062('0x37')][_0xb062('0x43')]+'%'};return _0x107758;}})});}_0x5c2c27=_[_0xb062('0x46')]({},_0x5c2c27,_0x1b5f3a[_0xb062('0x47')]);var _0x121826={'where':_0x5c2c27[_0xb062('0x41')]};return db[_0xb062('0x48')][_0xb062('0x24')](_0x121826)[_0xb062('0x29')](function(_0x5e587c){_0x122346['count']=_0x5e587c;if(_0x1b5f3a[_0xb062('0x37')]['includeAll']){_0x5c2c27[_0xb062('0x49')]=[{'all':!![]}];}return db[_0xb062('0x48')][_0xb062('0x4a')](_0x5c2c27);})[_0xb062('0x29')](function(_0x1a9beb){_0x122346['rows']=_0x1a9beb;return _0x122346;})[_0xb062('0x29')](respondWithFilteredResult(_0x4077b1,_0x5c2c27))[_0xb062('0x4b')](handleError(_0x4077b1,null));};exports[_0xb062('0x4c')]=function(_0x4d0de9,_0x30d563){var _0x3578c9={'raw':![],'where':{'id':_0x4d0de9['params']['id']}},_0x399cd6={};_0x399cd6['model']=_['keys'](db[_0xb062('0x48')][_0xb062('0x33')]);_0x399cd6[_0xb062('0x37')]=_[_0xb062('0x38')](_0x4d0de9[_0xb062('0x37')]);_0x399cd6['filters']=_[_0xb062('0x3a')](_0x399cd6[_0xb062('0x36')],_0x399cd6['query']);_0x3578c9['attributes']=_['intersection'](_0x399cd6[_0xb062('0x36')],qs[_0xb062('0x3c')](_0x4d0de9[_0xb062('0x37')]['fields']));_0x3578c9[_0xb062('0x3b')]=_0x3578c9[_0xb062('0x3b')][_0xb062('0x3d')]?_0x3578c9['attributes']:_0x399cd6[_0xb062('0x36')];if(_0x4d0de9[_0xb062('0x37')][_0xb062('0x4d')]){_0x3578c9['include']=[{'all':!![]}];}_0x3578c9=_[_0xb062('0x46')]({},_0x3578c9,_0x4d0de9[_0xb062('0x47')]);return db[_0xb062('0x48')][_0xb062('0x4e')](_0x3578c9)[_0xb062('0x29')](handleEntityNotFound(_0x30d563,null))[_0xb062('0x29')](respondWithResult(_0x30d563,null))[_0xb062('0x4b')](handleError(_0x30d563,null));};exports['create']=function(_0x1d85ae,_0x1ff045){return db['CmList'][_0xb062('0x4f')](_0x1d85ae[_0xb062('0x50')],{})[_0xb062('0x29')](function(_0x1256ea){var _0x10a66d=_0x1d85ae[_0xb062('0x51')][_0xb062('0x2a')]({'plain':!![]});if(!_0x10a66d)throw new Error(_0xb062('0x52'));if(_0x10a66d[_0xb062('0x53')]==='user'){var _0x348051=_0x1256ea[_0xb062('0x2a')]({'plain':!![]});var _0x2dd2e2=_0xb062('0x54');return db[_0xb062('0x55')][_0xb062('0x4e')]({'where':{'name':_0x2dd2e2,'userProfileId':_0x10a66d[_0xb062('0x56')]},'raw':!![]})[_0xb062('0x29')](function(_0x190777){if(_0x190777&&_0x190777[_0xb062('0x57')]===0x0){return db[_0xb062('0x2b')][_0xb062('0x4f')]({'name':_0x348051[_0xb062('0x2f')],'resourceId':_0x348051['id'],'type':_0x190777[_0xb062('0x2f')],'sectionId':_0x190777['id']},{})[_0xb062('0x29')](function(){return _0x1256ea;});}else{return _0x1256ea;}})['catch'](function(_0x3cf088){logger[_0xb062('0x2e')](_0xb062('0x58'),_0x3cf088);throw _0x3cf088;});}return _0x1256ea;})[_0xb062('0x29')](respondWithResult(_0x1ff045,0xc9))[_0xb062('0x4b')](handleError(_0x1ff045,null));};exports[_0xb062('0x28')]=function(_0x499473,_0x5739a7){if(_0x499473[_0xb062('0x50')]['id']){delete _0x499473[_0xb062('0x50')]['id'];}return db[_0xb062('0x48')][_0xb062('0x4e')]({'where':{'id':_0x499473[_0xb062('0x59')]['id']}})[_0xb062('0x29')](handleEntityNotFound(_0x5739a7,null))[_0xb062('0x29')](saveUpdates(_0x499473[_0xb062('0x50')],null))['then'](respondWithResult(_0x5739a7,null))[_0xb062('0x4b')](handleError(_0x5739a7,null));};exports[_0xb062('0x2c')]=function(_0x3b86dc,_0x34d171){return db[_0xb062('0x48')]['find']({'where':{'id':_0x3b86dc[_0xb062('0x59')]['id']}})['then'](handleEntityNotFound(_0x34d171,null))[_0xb062('0x29')](removeEntity(_0x34d171,null))[_0xb062('0x4b')](handleError(_0x34d171,null));};exports[_0xb062('0x5a')]=function(_0x28f237,_0x4dc9f2){return db[_0xb062('0x48')]['describe']()[_0xb062('0x29')](respondWithResult(_0x4dc9f2,null))[_0xb062('0x4b')](handleError(_0x4dc9f2,null));};exports[_0xb062('0x5b')]=function(_0x460979,_0x4c947a,_0x567a01){if(_0x460979[_0xb062('0x50')]['id']){delete _0x460979[_0xb062('0x50')]['id'];}return db['CmList'][_0xb062('0x4e')]({'where':{'id':_0x460979[_0xb062('0x59')]['id']}})[_0xb062('0x29')](handleEntityNotFound(_0x4c947a,null))['then'](function(_0x257f43){if(_0x257f43){_0x460979['body'][_0xb062('0x5c')]=_0x257f43['id'];return db[_0xb062('0x5d')][_0xb062('0x4f')](_0x460979[_0xb062('0x50')]);}})[_0xb062('0x29')](respondWithResult(_0x4c947a,null))[_0xb062('0x4b')](handleError(_0x4c947a,null));};exports[_0xb062('0x5e')]=function(_0x4979d9,_0x3b4032,_0x339b4a){var _0xa39648={'raw':![],'where':{}};var _0x3a87e2={};var _0x475533={'count':0x0,'rows':[]};return db[_0xb062('0x48')][_0xb062('0x5f')]({'where':{'id':_0x4979d9[_0xb062('0x59')]['id']}})['then'](handleEntityNotFound(_0x3b4032,null))['then'](function(_0x40b6bc){if(_0x40b6bc){_0x3a87e2[_0xb062('0x36')]=_[_0xb062('0x38')](db[_0xb062('0x5d')][_0xb062('0x33')]);_0x3a87e2[_0xb062('0x37')]=_[_0xb062('0x38')](_0x4979d9['query']);_0x3a87e2[_0xb062('0x39')]=_[_0xb062('0x3a')](_0x3a87e2[_0xb062('0x36')],_0x3a87e2[_0xb062('0x37')]);_0xa39648[_0xb062('0x3b')]=_['intersection'](_0x3a87e2[_0xb062('0x36')],qs[_0xb062('0x3c')](_0x4979d9[_0xb062('0x37')][_0xb062('0x3c')]));_0xa39648[_0xb062('0x3b')]=_0xa39648[_0xb062('0x3b')]['length']?_0xa39648[_0xb062('0x3b')]:_0x3a87e2[_0xb062('0x36')];if(!_0x4979d9[_0xb062('0x37')]['hasOwnProperty']('nolimit')){_0xa39648[_0xb062('0x23')]=qs[_0xb062('0x23')](_0x4979d9[_0xb062('0x37')][_0xb062('0x23')]);_0xa39648[_0xb062('0x21')]=qs[_0xb062('0x21')](_0x4979d9[_0xb062('0x37')][_0xb062('0x21')]);}_0xa39648[_0xb062('0x3f')]=qs['sort'](_0x4979d9[_0xb062('0x37')][_0xb062('0x40')]);_0xa39648[_0xb062('0x41')]=qs[_0xb062('0x39')](_['pick'](_0x4979d9[_0xb062('0x37')],_0x3a87e2[_0xb062('0x39')]));_0xa39648[_0xb062('0x41')][_0xb062('0x5c')]=_0x40b6bc['id'];if(_0x4979d9[_0xb062('0x37')][_0xb062('0x43')]){_0xa39648[_0xb062('0x41')]=_['merge'](_0xa39648[_0xb062('0x41')],{'$or':_[_0xb062('0x32')](_0xa39648[_0xb062('0x3b')],function(_0x36515b){var _0x3ca385={};_0x3ca385[_0x36515b]={'$like':'%'+_0x4979d9[_0xb062('0x37')][_0xb062('0x43')]+'%'};return _0x3ca385;})});}_0xa39648=_[_0xb062('0x46')]({},_0xa39648,_0x4979d9['options']);return db[_0xb062('0x5d')]['count']({'where':_0xa39648[_0xb062('0x41')]})[_0xb062('0x29')](function(_0x3bec4c){_0x475533[_0xb062('0x24')]=_0x3bec4c;if(_0x4979d9['query'][_0xb062('0x4d')]){_0xa39648['include']=[{'all':!![]}];}return db[_0xb062('0x5d')][_0xb062('0x4a')](_0xa39648);})['then'](function(_0x2138b3){_0x475533[_0xb062('0x60')]=_0x2138b3;return _0x475533;});}})[_0xb062('0x29')](respondWithFilteredResult(_0x3b4032,_0xa39648))[_0xb062('0x4b')](handleError(_0x3b4032,null));};exports[_0xb062('0x61')]=function(_0x5efd24,_0x556a73,_0x11bc5b){return db[_0xb062('0x48')][_0xb062('0x4e')]({'where':{'id':_0x5efd24[_0xb062('0x59')]['id']}})[_0xb062('0x29')](handleEntityNotFound(_0x556a73,null))[_0xb062('0x29')](function(_0x3960a3){if(_0x3960a3){return _0x3960a3[_0xb062('0x61')](_0x5efd24['query'][_0xb062('0x62')]);}})[_0xb062('0x29')](respondWithStatusCode(_0x556a73,null))[_0xb062('0x4b')](handleError(_0x556a73,null));};exports[_0xb062('0x63')]=function(_0x5db458,_0x2b935c,_0x5d13c){return db[_0xb062('0x48')]['find']({'where':{'id':_0x5db458[_0xb062('0x59')]['id']}})['then'](handleEntityNotFound(_0x2b935c,null))[_0xb062('0x29')](function(_0x481c7a){if(_0x481c7a){var _0x389a8b=[];var _0x1ca414={'success':[],'errors':[]};return db['CmContact']['describe']()[_0xb062('0x29')](function(_0x228192){if(_0x5db458[_0xb062('0x50')]['tags']&&_[_0xb062('0x64')](_0x5db458[_0xb062('0x50')][_0xb062('0x65')])){if(_0x5db458[_0xb062('0x50')]['tags'][_0xb062('0x3d')]){_0x5db458[_0xb062('0x50')][_0xb062('0x65')]=_0x5db458['body']['tags'][_0xb062('0x66')](';')+';';}else{_0x5db458[_0xb062('0x50')][_0xb062('0x65')]=null;}}else{_0x5db458[_0xb062('0x50')][_0xb062('0x65')]=null;}if(_0x5db458[_0xb062('0x50')]&&_['isArray'](_0x5db458[_0xb062('0x50')])){for(var _0xaec438=0x0;_0xaec438<_0x5db458['body'][_0xb062('0x3d')];_0xaec438+=0x1){_0x5db458[_0xb062('0x50')][_0xaec438][_0xb062('0x5c')]=_0x5db458['params']['id'];_0x389a8b['push'](_0x5db458['body'][_0xaec438]);}return BPromise[_0xb062('0x67')](_0x389a8b,function(_0x5c30f5){return db[_0xb062('0x68')][_0xb062('0x4f')](_[_0xb062('0x69')](_0x5c30f5,[_0xb062('0x62'),'id'])||{},{'fields':_[_0xb062('0x38')](_0x228192),'raw':!![]})[_0xb062('0x29')](function(_0x403184){_0x1ca414[_0xb062('0x6a')][_0xb062('0x6b')](_0x403184['dataValues']);})[_0xb062('0x4b')](function(_0x57d0f3){_0x1ca414[_0xb062('0x6c')]['push']({'data':_0x5c30f5,'error':_0x57d0f3[_0xb062('0x6d')]});});})[_0xb062('0x29')](function(_0x3164aa){return _0x1ca414;})['catch'](function(_0x2aba32){return _0x2aba32;});}else{_0x2b935c['status'](0x190)[_0xb062('0x20')]({'message':_0xb062('0x6e')});}});}})[_0xb062('0x29')](respondWithResult(_0x2b935c,null))['catch'](handleError(_0x2b935c,null));};exports[_0xb062('0x6f')]=function(_0x311251,_0x578f8f,_0x39c230){var _0x2e5c35;return db[_0xb062('0x48')]['find']({'where':{'id':_0x311251['params']['id']},'include':[{'model':db[_0xb062('0x70')],'as':_0xb062('0x71')}]})[_0xb062('0x29')](handleEntityNotFound(_0x578f8f,null))[_0xb062('0x29')](function(_0x112f34){if(_0x112f34){_0x2e5c35=_0x112f34;return db[_0xb062('0x68')][_0xb062('0x33')];}})[_0xb062('0x29')](function(_0x206406){if(_0x206406){var _0x2a82fa={};var _0x5e7750={};_0x5e7750['model']=_['concat'](_['keys'](_0x206406),_['map'](_0x2e5c35[_0xb062('0x71')],function(_0x4760c7){return util['format'](_0xb062('0x72'),_0x4760c7['id']);}));_0x5e7750[_0xb062('0x37')]=_['keys'](_0x311251[_0xb062('0x37')]);_0x5e7750['filters']=_[_0xb062('0x3a')](_0x5e7750['model'],_0x5e7750[_0xb062('0x37')]);_0x2a82fa[_0xb062('0x3b')]=_[_0xb062('0x3a')](_0x5e7750['model'],qs[_0xb062('0x3c')](_0x311251['query'][_0xb062('0x3c')]));_0x2a82fa['attributes']=_0x2a82fa['attributes'][_0xb062('0x3d')]?_0x2a82fa[_0xb062('0x3b')]:_0x5e7750[_0xb062('0x36')];if(!_0x311251['query']['hasOwnProperty'](_0xb062('0x73'))){_0x2a82fa[_0xb062('0x23')]=qs[_0xb062('0x23')](_0x311251[_0xb062('0x37')]['limit']);_0x2a82fa[_0xb062('0x21')]=qs['offset'](_0x311251[_0xb062('0x37')][_0xb062('0x21')]);}_0x2a82fa[_0xb062('0x3f')]=qs['sort'](_0x311251[_0xb062('0x37')]['sort']);_0x2a82fa[_0xb062('0x41')]=qs[_0xb062('0x39')](_['pick'](_0x311251[_0xb062('0x37')],_0x5e7750[_0xb062('0x39')]));_0x2a82fa[_0xb062('0x74')]=!![];if(_0x311251[_0xb062('0x37')][_0xb062('0x43')]){_0x2a82fa[_0xb062('0x41')]=_[_0xb062('0x46')](_0x2a82fa['where'],{'$or':_[_0xb062('0x32')](_0x2a82fa['attributes'],function(_0x15bfed){var _0x297d51={};_0x297d51[_0x15bfed]={'$like':'%'+_0x311251[_0xb062('0x37')][_0xb062('0x43')]+'%'};return _0x297d51;})});}_0x2a82fa=_[_0xb062('0x46')]({},_0x2a82fa,_0x311251[_0xb062('0x47')]);return _0x2e5c35['getContacts'](_0x2a82fa);}})[_0xb062('0x29')](respondWithResult(_0x578f8f,null))['catch'](handleError(_0x578f8f,null));};exports[_0xb062('0x75')]=function(_0x1f492a,_0x468b62,_0x389fb8){var _0x29fc5f;return db['CmList'][_0xb062('0x4e')]({'where':{'id':_0x1f492a[_0xb062('0x59')]['id']},'include':[{'model':db[_0xb062('0x70')],'as':_0xb062('0x71')}]})[_0xb062('0x29')](handleEntityNotFound(_0x468b62,null))[_0xb062('0x29')](function(_0x1ac2d8){if(_0x1ac2d8){_0x29fc5f=_0x1ac2d8;return db[_0xb062('0x68')]['rawAttributes'];}})[_0xb062('0x29')](function(_0x5a16c5){if(_0x5a16c5){var _0x58864e={};var _0x2caf9c={};_0x2caf9c['model']=_[_0xb062('0x76')](_[_0xb062('0x38')](_0x5a16c5),_[_0xb062('0x32')](_0x29fc5f['CustomFields'],function(_0x1dc048){return util[_0xb062('0x77')](_0xb062('0x72'),_0x1dc048['id']);}));_0x2caf9c[_0xb062('0x37')]=_[_0xb062('0x38')](_0x1f492a['query']);_0x2caf9c[_0xb062('0x39')]=_[_0xb062('0x3a')](_0x2caf9c['model'],_0x2caf9c[_0xb062('0x37')]);_0x58864e[_0xb062('0x3b')]=_[_0xb062('0x3a')](_0x2caf9c[_0xb062('0x36')],qs[_0xb062('0x3c')](_0x1f492a[_0xb062('0x37')][_0xb062('0x3c')]));_0x58864e[_0xb062('0x3b')]=_0x58864e[_0xb062('0x3b')][_0xb062('0x3d')]?_0x58864e[_0xb062('0x3b')]:_0x2caf9c['model'];if(!_0x1f492a['query'][_0xb062('0x3e')](_0xb062('0x73'))){_0x58864e[_0xb062('0x23')]=qs[_0xb062('0x23')](_0x1f492a['query']['limit']);_0x58864e[_0xb062('0x21')]=qs[_0xb062('0x21')](_0x1f492a['query']['offset']);}_0x58864e[_0xb062('0x3f')]=qs[_0xb062('0x40')](_0x1f492a[_0xb062('0x37')][_0xb062('0x40')]);_0x58864e[_0xb062('0x41')]=qs[_0xb062('0x39')](_[_0xb062('0x42')](_0x1f492a[_0xb062('0x37')],_0x2caf9c[_0xb062('0x39')]));_0x58864e[_0xb062('0x74')]=!![];if(_0x1f492a[_0xb062('0x37')][_0xb062('0x43')]){_0x58864e[_0xb062('0x41')]=_[_0xb062('0x46')](_0x58864e['where'],{'$or':_['map'](_0x58864e['attributes'],function(_0x2e8ef8){var _0x404910={};_0x404910[_0x2e8ef8]={'$like':'%'+_0x1f492a[_0xb062('0x37')][_0xb062('0x43')]+'%'};return _0x404910;})});}_0x58864e=_[_0xb062('0x46')]({},_0x58864e,_0x1f492a[_0xb062('0x47')]);return _0x29fc5f['getContacts'](_0x58864e);}})[_0xb062('0x29')](function(_0x2dbc4a){if(!_['isEmpty'](_0x2dbc4a)){var _0x8f5f45=toCsv(_0x2dbc4a);var _0x23a8ef=Date[_0xb062('0x78')]();fs[_0xb062('0x79')](util[_0xb062('0x77')](_0xb062('0x7a'),_0x29fc5f['id'],_0x23a8ef),_0x8f5f45);_0x468b62['setHeader'](_0xb062('0x7b'),_0xb062('0x7c')+util[_0xb062('0x77')](_0xb062('0x7d'),_0x29fc5f['id'],_0x23a8ef));_0x468b62[_0xb062('0x7e')](_0xb062('0x7f'),_0xb062('0x80'));return _0x468b62[_0xb062('0x81')](util['format'](_0xb062('0x7a'),_0x29fc5f['id'],_0x23a8ef));}else{return _0x468b62[_0xb062('0x2d')](0xcc);}})[_0xb062('0x4b')](handleError(_0x468b62,null));};exports[_0xb062('0x82')]=function(_0xcce8b4,_0x41a014,_0x21173a){var _0x3e6a4a;delete _0xcce8b4[_0xb062('0x50')]['id'];return db[_0xb062('0x48')][_0xb062('0x5f')]({'where':{'id':_0xcce8b4['params']['id']}})[_0xb062('0x29')](handleEntityNotFound(_0x41a014,null))['then'](function(_0x49a925){if(_0x49a925){return db[_0xb062('0x83')]['transaction'](function(_0x3d66ae){return db[_0xb062('0x70')]['create'](_0xcce8b4[_0xb062('0x50')],{'transaction':_0x3d66ae})[_0xb062('0x29')](function(_0xbdd769){_0x3e6a4a=_0xbdd769;return _0x49a925[_0xb062('0x84')](_0xbdd769,{'transaction':_0x3d66ae});})[_0xb062('0x29')](function(){var _0xeed7b0={'type':db[_0xb062('0x85')][_0xb062('0x86')],'transaction':_0x3d66ae};switch(_0xcce8b4[_0xb062('0x50')][_0xb062('0x44')]){case'text':_0xeed7b0[_0xb062('0x44')]=db['Sequelize'][_0xb062('0x86')];break;case _0xb062('0x87'):_0xeed7b0[_0xb062('0x44')]=db[_0xb062('0x85')][_0xb062('0x88')];break;case _0xb062('0x89'):_0xeed7b0[_0xb062('0x44')]=db['Sequelize'][_0xb062('0x8a')];_0xeed7b0[_0xb062('0x8b')]=![];break;default:}return db[_0xb062('0x83')][_0xb062('0x8c')][_0xb062('0x8d')](_0xb062('0x8e'),util[_0xb062('0x77')](_0xb062('0x8f'),_0x3e6a4a['id']),_0xeed7b0);})[_0xb062('0x29')](function(){return _0x3e6a4a;});});}})['then'](respondWithResult(_0x41a014,null))[_0xb062('0x4b')](handleError(_0x41a014,null));};exports['getCustomFields']=function(_0x5e11f7,_0x4f10a5,_0x419200){var _0xba98d4={};var _0x17ba6b={};var _0x467b65;var _0x48a8b3;return db[_0xb062('0x48')][_0xb062('0x5f')]({'where':{'id':_0x5e11f7['params']['id']}})[_0xb062('0x29')](handleEntityNotFound(_0x4f10a5,null))[_0xb062('0x29')](function(_0xd0d37f){if(_0xd0d37f){_0x467b65=_0xd0d37f;_0x17ba6b[_0xb062('0x36')]=_[_0xb062('0x38')](db[_0xb062('0x70')]['rawAttributes']);_0x17ba6b[_0xb062('0x37')]=_['keys'](_0x5e11f7[_0xb062('0x37')]);_0x17ba6b[_0xb062('0x39')]=_[_0xb062('0x3a')](_0x17ba6b[_0xb062('0x36')],_0x17ba6b[_0xb062('0x37')]);_0xba98d4[_0xb062('0x3b')]=_[_0xb062('0x3a')](_0x17ba6b[_0xb062('0x36')],qs['fields'](_0x5e11f7[_0xb062('0x37')][_0xb062('0x3c')]));_0xba98d4[_0xb062('0x3b')]=_0xba98d4['attributes'][_0xb062('0x3d')]?_0xba98d4[_0xb062('0x3b')]:_0x17ba6b[_0xb062('0x36')];_0xba98d4[_0xb062('0x3f')]=qs[_0xb062('0x40')](_0x5e11f7[_0xb062('0x37')][_0xb062('0x40')]);_0xba98d4[_0xb062('0x41')]=qs[_0xb062('0x39')](_[_0xb062('0x42')](_0x5e11f7['query'],_0x17ba6b[_0xb062('0x39')]));_0xba98d4[_0xb062('0x41')]=_[_0xb062('0x46')](_0xba98d4[_0xb062('0x41')],{'$or':[{'ListId':_0xd0d37f['id']},{'ListId':null}]});if(_0x5e11f7[_0xb062('0x37')]['filter']){_0xba98d4[_0xb062('0x41')]=_[_0xb062('0x46')](_0xba98d4['where'],{'$or':_['map'](_0xba98d4[_0xb062('0x3b')],function(_0x56c5d1){var _0x3437b7={};_0x3437b7[_0x56c5d1]={'$like':'%'+_0x5e11f7[_0xb062('0x37')][_0xb062('0x43')]+'%'};return _0x3437b7;})});}_0xba98d4=_[_0xb062('0x46')]({},_0xba98d4,_0x5e11f7[_0xb062('0x47')]);return db[_0xb062('0x70')][_0xb062('0x90')](_0xba98d4);}})[_0xb062('0x29')](respondWithResult(_0x4f10a5,null))['catch'](handleError(_0x4f10a5,null));};exports[_0xb062('0x91')]=function(_0x199539,_0x5f59c8,_0x17e37b){return db[_0xb062('0x48')][_0xb062('0x4e')]({'where':{'id':_0x199539[_0xb062('0x59')]['id']}})['then'](handleEntityNotFound(_0x5f59c8,null))[_0xb062('0x29')](function(_0x1cb0c9){if(_0x1cb0c9){return _0x1cb0c9[_0xb062('0x91')](_0x199539[_0xb062('0x50')][_0xb062('0x62')],_[_0xb062('0x69')](_0x199539['body'],['ids','id'])||{})['spread'](function(_0x11a03e){for(var _0x8b4e13=0x0;_0x8b4e13<_0x199539[_0xb062('0x50')][_0xb062('0x62')]['length'];_0x8b4e13+=0x1){socket[_0xb062('0x92')](_0xb062('0x93'),{'UserId':Number(_0x199539[_0xb062('0x50')][_0xb062('0x62')][_0x8b4e13]),'CmListId':Number(_0x199539[_0xb062('0x59')]['id'])});}return _0x11a03e;});}})[_0xb062('0x29')](respondWithResult(_0x5f59c8,null))[_0xb062('0x4b')](handleError(_0x5f59c8,null));};exports[_0xb062('0x94')]=function(_0x65a836,_0xc11b07,_0x393466){return db[_0xb062('0x48')][_0xb062('0x4e')]({'where':{'id':_0x65a836[_0xb062('0x59')]['id']}})[_0xb062('0x29')](handleEntityNotFound(_0xc11b07,null))[_0xb062('0x29')](function(_0x23103d){if(_0x23103d){return _0x23103d[_0xb062('0x94')](_0x65a836[_0xb062('0x37')]['ids'])[_0xb062('0x29')](function(){if(_[_0xb062('0x64')](_0x65a836[_0xb062('0x37')]['ids'])){for(var _0x131edf=0x0;_0x131edf<_0x65a836['query'][_0xb062('0x62')][_0xb062('0x3d')];_0x131edf+=0x1){socket['emit']('userCmList:remove',{'UserId':Number(_0x65a836[_0xb062('0x37')][_0xb062('0x62')][_0x131edf]),'CmListId':Number(_0x65a836[_0xb062('0x59')]['id'])});}}else{socket[_0xb062('0x92')]('userCmList:remove',{'UserId':Number(_0x65a836[_0xb062('0x37')][_0xb062('0x62')]),'CmListId':Number(_0x65a836[_0xb062('0x59')]['id'])});}});}})[_0xb062('0x29')](respondWithStatusCode(_0xc11b07,null))[_0xb062('0x4b')](handleError(_0xc11b07,null));};exports[_0xb062('0x95')]=function(_0x44739d,_0x440a1c,_0x14e88d){var _0x132c6f={};var _0x422ca0={};var _0x566d7b;var _0x169bdf;return db[_0xb062('0x48')][_0xb062('0x5f')]({'where':{'id':_0x44739d[_0xb062('0x59')]['id']}})['then'](handleEntityNotFound(_0x440a1c,null))['then'](function(_0x8d41e2){if(_0x8d41e2){_0x566d7b=_0x8d41e2;_0x422ca0[_0xb062('0x36')]=_['keys'](db['User'][_0xb062('0x33')]);_0x422ca0[_0xb062('0x37')]=_[_0xb062('0x38')](_0x44739d[_0xb062('0x37')]);_0x422ca0[_0xb062('0x39')]=_[_0xb062('0x3a')](_0x422ca0[_0xb062('0x36')],_0x422ca0[_0xb062('0x37')]);_0x132c6f['attributes']=_['intersection'](_0x422ca0[_0xb062('0x36')],qs[_0xb062('0x3c')](_0x44739d[_0xb062('0x37')][_0xb062('0x3c')]));_0x132c6f['attributes']=_0x132c6f[_0xb062('0x3b')][_0xb062('0x3d')]?_0x132c6f[_0xb062('0x3b')]:_0x422ca0['model'];_0x132c6f[_0xb062('0x3f')]=qs[_0xb062('0x40')](_0x44739d[_0xb062('0x37')][_0xb062('0x40')]);_0x132c6f[_0xb062('0x41')]=qs['filters'](_['pick'](_0x44739d[_0xb062('0x37')],_0x422ca0[_0xb062('0x39')]));if(_0x44739d[_0xb062('0x37')]['filter']){_0x132c6f['where']=_['merge'](_0x132c6f[_0xb062('0x41')],{'$or':_[_0xb062('0x32')](_0x132c6f['attributes'],function(_0x33cd07){var _0x5cb85b={};_0x5cb85b[_0x33cd07]={'$like':'%'+_0x44739d[_0xb062('0x37')][_0xb062('0x43')]+'%'};return _0x5cb85b;})});}_0x132c6f=_[_0xb062('0x46')]({},_0x132c6f,_0x44739d[_0xb062('0x47')]);return _0x566d7b['getAgents'](_0x132c6f);}})[_0xb062('0x29')](function(_0x53dd9c){if(_0x53dd9c){_0x169bdf=_0x53dd9c[_0xb062('0x3d')];if(!_0x44739d['query'][_0xb062('0x3e')](_0xb062('0x73'))){_0x132c6f[_0xb062('0x23')]=qs[_0xb062('0x23')](_0x44739d[_0xb062('0x37')][_0xb062('0x23')]);_0x132c6f[_0xb062('0x21')]=qs[_0xb062('0x21')](_0x44739d[_0xb062('0x37')][_0xb062('0x21')]);}return _0x566d7b[_0xb062('0x95')](_0x132c6f);}})[_0xb062('0x29')](function(_0x1e51c2){if(_0x1e51c2){return _0x1e51c2?{'count':_0x169bdf,'rows':_0x1e51c2}:null;}})[_0xb062('0x29')](respondWithResult(_0x440a1c,null))['catch'](handleError(_0x440a1c,null));};
\ No newline at end of file
+var _0x9df1=['include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','ListId','Disposition','getDispositions','findOne','length','nolimit','findAll','rows','removeDispositions','ids','addContacts','tags','isArray','join','push','each','CmContact','success','errors','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','cf_%d','raw','writeFileSync','setHeader','attachment;\x20filename=','list_%d_%s.csv','text/csv','download','/tmp/list_%d_%s.csv','transaction','addCustomFields','Sequelize','TEXT','switch','BOOLEAN','sequelize','queryInterface','addColumn','cm_contacts','cf_%s','omit','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','./cmList.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','apply','reject','save','update','destroy','get','Lists','UserProfileResource','then','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','order','sort','pick','merge','VIRTUAL','filter','options','where','CmList','includeAll','catch','show','keys'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9df1,0xcd));var _0x19df=function(_0x885428,_0x160268){_0x885428=_0x885428-0x0;var _0x2f006c=_0x9df1[_0x885428];return _0x2f006c;};'use strict';var emlformat=require(_0x19df('0x0'));var rimraf=require(_0x19df('0x1'));var zipdir=require(_0x19df('0x2'));var jsonpatch=require(_0x19df('0x3'));var rp=require(_0x19df('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x19df('0x5'));var util=require('util');var path=require(_0x19df('0x6'));var sox=require(_0x19df('0x7'));var csv=require(_0x19df('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x19df('0x9'));var _=require('lodash');var squel=require(_0x19df('0xa'));var crypto=require(_0x19df('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x19df('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x19df('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x19df('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x19df('0xf'));var logger=require(_0x19df('0x10'))('api');var utils=require('../../config/utils');var config=require(_0x19df('0x11'));var licenseUtil=require('../../config/license/util');var db=require(_0x19df('0x12'))['db'];config[_0x19df('0x13')]=_[_0x19df('0x14')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x19df('0x13')]));require(_0x19df('0x15'))[_0x19df('0x16')](socket);function respondWithStatusCode(_0x2ede7e,_0x56a686){_0x56a686=_0x56a686||0xcc;return function(_0x5be958){if(_0x5be958){return _0x2ede7e[_0x19df('0x17')](_0x56a686);}return _0x2ede7e[_0x19df('0x18')](_0x56a686)[_0x19df('0x19')]();};}function respondWithResult(_0x43de64,_0x31a391){_0x31a391=_0x31a391||0xc8;return function(_0x90aeb6){if(_0x90aeb6){return _0x43de64[_0x19df('0x18')](_0x31a391)[_0x19df('0x1a')](_0x90aeb6);}};}function respondWithFilteredResult(_0x3a9403,_0xecba9d){return function(_0x4e6b97){if(_0x4e6b97){var _0x2aeb74=typeof _0xecba9d[_0x19df('0x1b')]===_0x19df('0x1c')&&typeof _0xecba9d['limit']===_0x19df('0x1c');var _0x365682=_0x4e6b97['count'];var _0x1ad8ec=_0x2aeb74?0x0:_0xecba9d[_0x19df('0x1b')];var _0x40cc9c=_0x2aeb74?_0x4e6b97[_0x19df('0x1d')]:_0xecba9d['offset']+_0xecba9d[_0x19df('0x1e')];var _0x1ac007;if(_0x40cc9c>=_0x365682){_0x40cc9c=_0x365682;_0x1ac007=0xc8;}else{_0x1ac007=0xce;}_0x3a9403['status'](_0x1ac007);return _0x3a9403['set']('Content-Range',_0x1ad8ec+'-'+_0x40cc9c+'/'+_0x365682)[_0x19df('0x1a')](_0x4e6b97);}return null;};}function patchUpdates(_0x41e533){return function(_0x5f474b){try{jsonpatch[_0x19df('0x1f')](_0x5f474b,_0x41e533,!![]);}catch(_0x1cffda){return BPromise[_0x19df('0x20')](_0x1cffda);}return _0x5f474b[_0x19df('0x21')]();};}function saveUpdates(_0x2dc139,_0x1f130f){return function(_0x24276f){if(_0x24276f){return _0x24276f[_0x19df('0x22')](_0x2dc139)['then'](function(_0x55b4f7){return _0x55b4f7;});}return null;};}function removeEntity(_0x3068cd,_0x3cfd62){return function(_0x38e136){if(_0x38e136){return _0x38e136[_0x19df('0x23')]()['then'](function(){var _0x3cfdfa=_0x38e136[_0x19df('0x24')]({'plain':!![]});var _0x5ab12d=_0x19df('0x25');return db[_0x19df('0x26')][_0x19df('0x23')]({'where':{'type':_0x5ab12d,'resourceId':_0x3cfdfa['id']}})[_0x19df('0x27')](function(){return _0x38e136;});})[_0x19df('0x27')](function(){_0x3068cd[_0x19df('0x18')](0xcc)[_0x19df('0x19')]();});}};}function handleEntityNotFound(_0x4e46fa,_0x2160ba){return function(_0x3fe0e3){if(!_0x3fe0e3){_0x4e46fa[_0x19df('0x17')](0x194);}return _0x3fe0e3;};}function handleError(_0x497128,_0x537e1c){_0x537e1c=_0x537e1c||0x1f4;return function(_0x3fc155){logger[_0x19df('0x28')](_0x3fc155[_0x19df('0x29')]);if(_0x3fc155[_0x19df('0x2a')]){delete _0x3fc155[_0x19df('0x2a')];}_0x497128[_0x19df('0x18')](_0x537e1c)[_0x19df('0x2b')](_0x3fc155);};}exports['index']=function(_0x49a813,_0x3d63af){var _0x1e4639={},_0x14ed85={},_0x6a3197={'count':0x0,'rows':[]};var _0x167a76=_[_0x19df('0x2c')](db['CmList'][_0x19df('0x2d')],function(_0x288f6e){return{'name':_0x288f6e[_0x19df('0x2e')],'type':_0x288f6e[_0x19df('0x2f')][_0x19df('0x30')]};});_0x14ed85[_0x19df('0x31')]=_[_0x19df('0x2c')](_0x167a76,'name');_0x14ed85[_0x19df('0x32')]=_['keys'](_0x49a813[_0x19df('0x32')]);_0x14ed85[_0x19df('0x33')]=_[_0x19df('0x34')](_0x14ed85[_0x19df('0x31')],_0x14ed85[_0x19df('0x32')]);_0x1e4639['attributes']=_[_0x19df('0x34')](_0x14ed85[_0x19df('0x31')],qs[_0x19df('0x35')](_0x49a813[_0x19df('0x32')][_0x19df('0x35')]));_0x1e4639[_0x19df('0x36')]=_0x1e4639[_0x19df('0x36')]['length']?_0x1e4639[_0x19df('0x36')]:_0x14ed85[_0x19df('0x31')];if(!_0x49a813[_0x19df('0x32')][_0x19df('0x37')]('nolimit')){_0x1e4639[_0x19df('0x1e')]=qs[_0x19df('0x1e')](_0x49a813['query']['limit']);_0x1e4639[_0x19df('0x1b')]=qs[_0x19df('0x1b')](_0x49a813[_0x19df('0x32')]['offset']);}_0x1e4639[_0x19df('0x38')]=qs[_0x19df('0x39')](_0x49a813['query'][_0x19df('0x39')]);_0x1e4639['where']=qs[_0x19df('0x33')](_[_0x19df('0x3a')](_0x49a813[_0x19df('0x32')],_0x14ed85[_0x19df('0x33')]),_0x167a76);if(_0x49a813['query']['filter']){_0x1e4639['where']=_[_0x19df('0x3b')](_0x1e4639['where'],{'$or':_['map'](_0x167a76,function(_0x5b9ea5){if(_0x5b9ea5[_0x19df('0x2f')]!==_0x19df('0x3c')){var _0x7f8de={};_0x7f8de[_0x5b9ea5[_0x19df('0x2a')]]={'$like':'%'+_0x49a813[_0x19df('0x32')][_0x19df('0x3d')]+'%'};return _0x7f8de;}})});}_0x1e4639=_[_0x19df('0x3b')]({},_0x1e4639,_0x49a813[_0x19df('0x3e')]);var _0x284d00={'where':_0x1e4639[_0x19df('0x3f')]};return db[_0x19df('0x40')][_0x19df('0x1d')](_0x284d00)[_0x19df('0x27')](function(_0x3d29e6){_0x6a3197[_0x19df('0x1d')]=_0x3d29e6;if(_0x49a813[_0x19df('0x32')][_0x19df('0x41')]){_0x1e4639['include']=[{'all':!![]}];}return db[_0x19df('0x40')]['findAll'](_0x1e4639);})['then'](function(_0x53662f){_0x6a3197['rows']=_0x53662f;return _0x6a3197;})['then'](respondWithFilteredResult(_0x3d63af,_0x1e4639))[_0x19df('0x42')](handleError(_0x3d63af,null));};exports[_0x19df('0x43')]=function(_0x2bbd02,_0x379e6f){var _0x9a9944={'raw':![],'where':{'id':_0x2bbd02['params']['id']}},_0x3cd63e={};_0x3cd63e['model']=_[_0x19df('0x44')](db[_0x19df('0x40')][_0x19df('0x2d')]);_0x3cd63e['query']=_['keys'](_0x2bbd02['query']);_0x3cd63e['filters']=_[_0x19df('0x34')](_0x3cd63e[_0x19df('0x31')],_0x3cd63e['query']);_0x9a9944[_0x19df('0x36')]=_[_0x19df('0x34')](_0x3cd63e['model'],qs[_0x19df('0x35')](_0x2bbd02['query']['fields']));_0x9a9944[_0x19df('0x36')]=_0x9a9944[_0x19df('0x36')]['length']?_0x9a9944[_0x19df('0x36')]:_0x3cd63e[_0x19df('0x31')];if(_0x2bbd02[_0x19df('0x32')][_0x19df('0x41')]){_0x9a9944[_0x19df('0x45')]=[{'all':!![]}];}_0x9a9944=_[_0x19df('0x3b')]({},_0x9a9944,_0x2bbd02['options']);return db[_0x19df('0x40')][_0x19df('0x46')](_0x9a9944)[_0x19df('0x27')](handleEntityNotFound(_0x379e6f,null))[_0x19df('0x27')](respondWithResult(_0x379e6f,null))[_0x19df('0x42')](handleError(_0x379e6f,null));};exports[_0x19df('0x47')]=function(_0x41c1b9,_0x36c4f8){return db[_0x19df('0x40')][_0x19df('0x47')](_0x41c1b9[_0x19df('0x48')],{})[_0x19df('0x27')](function(_0x3ec0ce){var _0x29b0de=_0x41c1b9['user'][_0x19df('0x24')]({'plain':!![]});if(!_0x29b0de)throw new Error(_0x19df('0x49'));if(_0x29b0de[_0x19df('0x4a')]===_0x19df('0x4b')){var _0x48fb9b=_0x3ec0ce[_0x19df('0x24')]({'plain':!![]});var _0x4cac03='Lists';return db[_0x19df('0x4c')][_0x19df('0x46')]({'where':{'name':_0x4cac03,'userProfileId':_0x29b0de[_0x19df('0x4d')]},'raw':!![]})['then'](function(_0x1f1da6){if(_0x1f1da6&&_0x1f1da6[_0x19df('0x4e')]===0x0){return db[_0x19df('0x26')][_0x19df('0x47')]({'name':_0x48fb9b[_0x19df('0x2a')],'resourceId':_0x48fb9b['id'],'type':_0x1f1da6['name'],'sectionId':_0x1f1da6['id']},{})[_0x19df('0x27')](function(){return _0x3ec0ce;});}else{return _0x3ec0ce;}})[_0x19df('0x42')](function(_0x5ce586){logger[_0x19df('0x28')](_0x19df('0x4f'),_0x5ce586);throw _0x5ce586;});}return _0x3ec0ce;})[_0x19df('0x27')](respondWithResult(_0x36c4f8,0xc9))[_0x19df('0x42')](handleError(_0x36c4f8,null));};exports[_0x19df('0x22')]=function(_0x1a0529,_0x6b8993){if(_0x1a0529['body']['id']){delete _0x1a0529[_0x19df('0x48')]['id'];}return db[_0x19df('0x40')][_0x19df('0x46')]({'where':{'id':_0x1a0529['params']['id']}})['then'](handleEntityNotFound(_0x6b8993,null))[_0x19df('0x27')](saveUpdates(_0x1a0529[_0x19df('0x48')],null))[_0x19df('0x27')](respondWithResult(_0x6b8993,null))['catch'](handleError(_0x6b8993,null));};exports['destroy']=function(_0x4ccb67,_0x3b653f){return db[_0x19df('0x40')][_0x19df('0x46')]({'where':{'id':_0x4ccb67[_0x19df('0x50')]['id']}})[_0x19df('0x27')](handleEntityNotFound(_0x3b653f,null))['then'](removeEntity(_0x3b653f,null))[_0x19df('0x42')](handleError(_0x3b653f,null));};exports[_0x19df('0x51')]=function(_0x4b7aa9,_0x11fb57){return db[_0x19df('0x40')][_0x19df('0x51')]()[_0x19df('0x27')](respondWithResult(_0x11fb57,null))[_0x19df('0x42')](handleError(_0x11fb57,null));};exports[_0x19df('0x52')]=function(_0x441d2d,_0x4b6dfe,_0x3eac37){if(_0x441d2d[_0x19df('0x48')]['id']){delete _0x441d2d[_0x19df('0x48')]['id'];}return db[_0x19df('0x40')][_0x19df('0x46')]({'where':{'id':_0x441d2d[_0x19df('0x50')]['id']}})['then'](handleEntityNotFound(_0x4b6dfe,null))['then'](function(_0x4370ef){if(_0x4370ef){_0x441d2d['body'][_0x19df('0x53')]=_0x4370ef['id'];return db[_0x19df('0x54')][_0x19df('0x47')](_0x441d2d[_0x19df('0x48')]);}})[_0x19df('0x27')](respondWithResult(_0x4b6dfe,null))['catch'](handleError(_0x4b6dfe,null));};exports[_0x19df('0x55')]=function(_0x4e947e,_0x451bc8,_0x4d9e87){var _0x36c32a={'raw':![],'where':{}};var _0x39d36b={};var _0x20d6c8={'count':0x0,'rows':[]};return db['CmList'][_0x19df('0x56')]({'where':{'id':_0x4e947e[_0x19df('0x50')]['id']}})['then'](handleEntityNotFound(_0x451bc8,null))[_0x19df('0x27')](function(_0x4e0bd1){if(_0x4e0bd1){_0x39d36b[_0x19df('0x31')]=_['keys'](db[_0x19df('0x54')]['rawAttributes']);_0x39d36b[_0x19df('0x32')]=_[_0x19df('0x44')](_0x4e947e[_0x19df('0x32')]);_0x39d36b[_0x19df('0x33')]=_[_0x19df('0x34')](_0x39d36b[_0x19df('0x31')],_0x39d36b[_0x19df('0x32')]);_0x36c32a[_0x19df('0x36')]=_[_0x19df('0x34')](_0x39d36b[_0x19df('0x31')],qs[_0x19df('0x35')](_0x4e947e['query']['fields']));_0x36c32a[_0x19df('0x36')]=_0x36c32a[_0x19df('0x36')][_0x19df('0x57')]?_0x36c32a[_0x19df('0x36')]:_0x39d36b[_0x19df('0x31')];if(!_0x4e947e[_0x19df('0x32')][_0x19df('0x37')](_0x19df('0x58'))){_0x36c32a[_0x19df('0x1e')]=qs[_0x19df('0x1e')](_0x4e947e[_0x19df('0x32')][_0x19df('0x1e')]);_0x36c32a['offset']=qs['offset'](_0x4e947e[_0x19df('0x32')]['offset']);}_0x36c32a['order']=qs['sort'](_0x4e947e['query']['sort']);_0x36c32a[_0x19df('0x3f')]=qs[_0x19df('0x33')](_[_0x19df('0x3a')](_0x4e947e[_0x19df('0x32')],_0x39d36b[_0x19df('0x33')]));_0x36c32a[_0x19df('0x3f')][_0x19df('0x53')]=_0x4e0bd1['id'];if(_0x4e947e[_0x19df('0x32')]['filter']){_0x36c32a[_0x19df('0x3f')]=_['merge'](_0x36c32a[_0x19df('0x3f')],{'$or':_[_0x19df('0x2c')](_0x36c32a[_0x19df('0x36')],function(_0x53627b){var _0xa0ded={};_0xa0ded[_0x53627b]={'$like':'%'+_0x4e947e[_0x19df('0x32')][_0x19df('0x3d')]+'%'};return _0xa0ded;})});}_0x36c32a=_['merge']({},_0x36c32a,_0x4e947e[_0x19df('0x3e')]);return db[_0x19df('0x54')][_0x19df('0x1d')]({'where':_0x36c32a[_0x19df('0x3f')]})[_0x19df('0x27')](function(_0x4eb174){_0x20d6c8[_0x19df('0x1d')]=_0x4eb174;if(_0x4e947e['query'][_0x19df('0x41')]){_0x36c32a[_0x19df('0x45')]=[{'all':!![]}];}return db['Disposition'][_0x19df('0x59')](_0x36c32a);})[_0x19df('0x27')](function(_0x18b397){_0x20d6c8[_0x19df('0x5a')]=_0x18b397;return _0x20d6c8;});}})[_0x19df('0x27')](respondWithFilteredResult(_0x451bc8,_0x36c32a))[_0x19df('0x42')](handleError(_0x451bc8,null));};exports[_0x19df('0x5b')]=function(_0x1ad7ef,_0x454be2,_0x5ce347){return db['CmList'][_0x19df('0x46')]({'where':{'id':_0x1ad7ef['params']['id']}})[_0x19df('0x27')](handleEntityNotFound(_0x454be2,null))['then'](function(_0x11b83c){if(_0x11b83c){return _0x11b83c[_0x19df('0x5b')](_0x1ad7ef[_0x19df('0x32')][_0x19df('0x5c')]);}})[_0x19df('0x27')](respondWithStatusCode(_0x454be2,null))[_0x19df('0x42')](handleError(_0x454be2,null));};exports[_0x19df('0x5d')]=function(_0x28057f,_0xd08380,_0x2bc2df){return db[_0x19df('0x40')][_0x19df('0x46')]({'where':{'id':_0x28057f[_0x19df('0x50')]['id']}})['then'](handleEntityNotFound(_0xd08380,null))[_0x19df('0x27')](function(_0x3203dd){if(_0x3203dd){var _0x59c841=[];var _0x430fac={'success':[],'errors':[]};return db['CmContact'][_0x19df('0x51')]()['then'](function(_0x5ae27d){if(_0x28057f[_0x19df('0x48')][_0x19df('0x5e')]&&_[_0x19df('0x5f')](_0x28057f[_0x19df('0x48')][_0x19df('0x5e')])){if(_0x28057f[_0x19df('0x48')][_0x19df('0x5e')][_0x19df('0x57')]){_0x28057f[_0x19df('0x48')][_0x19df('0x5e')]=_0x28057f[_0x19df('0x48')][_0x19df('0x5e')][_0x19df('0x60')](';')+';';}else{_0x28057f[_0x19df('0x48')][_0x19df('0x5e')]=null;}}else{_0x28057f[_0x19df('0x48')][_0x19df('0x5e')]=null;}if(_0x28057f[_0x19df('0x48')]&&_['isArray'](_0x28057f[_0x19df('0x48')])){for(var _0x4e7d59=0x0;_0x4e7d59<_0x28057f[_0x19df('0x48')][_0x19df('0x57')];_0x4e7d59+=0x1){_0x28057f[_0x19df('0x48')][_0x4e7d59]['ListId']=_0x28057f['params']['id'];_0x59c841[_0x19df('0x61')](_0x28057f['body'][_0x4e7d59]);}return BPromise[_0x19df('0x62')](_0x59c841,function(_0x42f06f){return db[_0x19df('0x63')][_0x19df('0x47')](_['omit'](_0x42f06f,[_0x19df('0x5c'),'id'])||{},{'fields':_['keys'](_0x5ae27d),'raw':!![]})[_0x19df('0x27')](function(_0x493f7c){_0x430fac[_0x19df('0x64')][_0x19df('0x61')](_0x493f7c['dataValues']);})[_0x19df('0x42')](function(_0x408eb1){_0x430fac[_0x19df('0x65')]['push']({'data':_0x42f06f,'error':_0x408eb1[_0x19df('0x66')]});});})[_0x19df('0x27')](function(_0x4b0d7b){return _0x430fac;})[_0x19df('0x42')](function(_0x57e1a8){return _0x57e1a8;});}else{_0xd08380[_0x19df('0x18')](0x190)[_0x19df('0x1a')]({'message':_0x19df('0x67')});}});}})['then'](respondWithResult(_0xd08380,null))['catch'](handleError(_0xd08380,null));};exports[_0x19df('0x68')]=function(_0x1eb7ba,_0x558ff3,_0x4a9a9f){var _0x3b799c;return db[_0x19df('0x40')][_0x19df('0x46')]({'where':{'id':_0x1eb7ba['params']['id']},'include':[{'model':db[_0x19df('0x69')],'as':_0x19df('0x6a')}]})[_0x19df('0x27')](handleEntityNotFound(_0x558ff3,null))['then'](function(_0x394915){if(_0x394915){_0x3b799c=_0x394915;return db[_0x19df('0x63')][_0x19df('0x2d')];}})['then'](function(_0x1120da){if(_0x1120da){var _0x4eb969={};var _0x22d3eb={};_0x22d3eb['model']=_[_0x19df('0x6b')](_[_0x19df('0x44')](_0x1120da),_[_0x19df('0x2c')](_0x3b799c[_0x19df('0x6a')],function(_0x581c1b){return util[_0x19df('0x6c')](_0x19df('0x6d'),_0x581c1b['id']);}));_0x22d3eb[_0x19df('0x32')]=_['keys'](_0x1eb7ba['query']);_0x22d3eb['filters']=_[_0x19df('0x34')](_0x22d3eb[_0x19df('0x31')],_0x22d3eb[_0x19df('0x32')]);_0x4eb969[_0x19df('0x36')]=_[_0x19df('0x34')](_0x22d3eb[_0x19df('0x31')],qs[_0x19df('0x35')](_0x1eb7ba[_0x19df('0x32')]['fields']));_0x4eb969['attributes']=_0x4eb969[_0x19df('0x36')][_0x19df('0x57')]?_0x4eb969[_0x19df('0x36')]:_0x22d3eb[_0x19df('0x31')];if(!_0x1eb7ba[_0x19df('0x32')][_0x19df('0x37')](_0x19df('0x58'))){_0x4eb969[_0x19df('0x1e')]=qs[_0x19df('0x1e')](_0x1eb7ba[_0x19df('0x32')][_0x19df('0x1e')]);_0x4eb969[_0x19df('0x1b')]=qs[_0x19df('0x1b')](_0x1eb7ba['query'][_0x19df('0x1b')]);}_0x4eb969[_0x19df('0x38')]=qs[_0x19df('0x39')](_0x1eb7ba[_0x19df('0x32')][_0x19df('0x39')]);_0x4eb969[_0x19df('0x3f')]=qs['filters'](_['pick'](_0x1eb7ba[_0x19df('0x32')],_0x22d3eb[_0x19df('0x33')]));_0x4eb969['raw']=!![];if(_0x1eb7ba['query'][_0x19df('0x3d')]){_0x4eb969['where']=_[_0x19df('0x3b')](_0x4eb969[_0x19df('0x3f')],{'$or':_['map'](_0x4eb969[_0x19df('0x36')],function(_0xd1b51f){var _0x195427={};_0x195427[_0xd1b51f]={'$like':'%'+_0x1eb7ba[_0x19df('0x32')][_0x19df('0x3d')]+'%'};return _0x195427;})});}_0x4eb969=_[_0x19df('0x3b')]({},_0x4eb969,_0x1eb7ba[_0x19df('0x3e')]);return _0x3b799c[_0x19df('0x68')](_0x4eb969);}})[_0x19df('0x27')](respondWithResult(_0x558ff3,null))[_0x19df('0x42')](handleError(_0x558ff3,null));};exports['getContactsCsv']=function(_0x3fa417,_0x5d84af,_0x4cab00){var _0x5c92d3;return db['CmList']['find']({'where':{'id':_0x3fa417['params']['id']},'include':[{'model':db['CmCustomField'],'as':_0x19df('0x6a')}]})[_0x19df('0x27')](handleEntityNotFound(_0x5d84af,null))[_0x19df('0x27')](function(_0x1e677b){if(_0x1e677b){_0x5c92d3=_0x1e677b;return db[_0x19df('0x63')][_0x19df('0x2d')];}})[_0x19df('0x27')](function(_0x97f6c9){if(_0x97f6c9){var _0x16990a={};var _0x5ad16a={};_0x5ad16a[_0x19df('0x31')]=_[_0x19df('0x6b')](_[_0x19df('0x44')](_0x97f6c9),_[_0x19df('0x2c')](_0x5c92d3[_0x19df('0x6a')],function(_0x366ead){return util[_0x19df('0x6c')](_0x19df('0x6d'),_0x366ead['id']);}));_0x5ad16a['query']=_['keys'](_0x3fa417[_0x19df('0x32')]);_0x5ad16a[_0x19df('0x33')]=_['intersection'](_0x5ad16a['model'],_0x5ad16a[_0x19df('0x32')]);_0x16990a[_0x19df('0x36')]=_['intersection'](_0x5ad16a[_0x19df('0x31')],qs[_0x19df('0x35')](_0x3fa417[_0x19df('0x32')][_0x19df('0x35')]));_0x16990a[_0x19df('0x36')]=_0x16990a[_0x19df('0x36')][_0x19df('0x57')]?_0x16990a[_0x19df('0x36')]:_0x5ad16a[_0x19df('0x31')];if(!_0x3fa417['query'][_0x19df('0x37')]('nolimit')){_0x16990a['limit']=qs[_0x19df('0x1e')](_0x3fa417[_0x19df('0x32')][_0x19df('0x1e')]);_0x16990a[_0x19df('0x1b')]=qs[_0x19df('0x1b')](_0x3fa417['query'][_0x19df('0x1b')]);}_0x16990a[_0x19df('0x38')]=qs[_0x19df('0x39')](_0x3fa417[_0x19df('0x32')]['sort']);_0x16990a[_0x19df('0x3f')]=qs[_0x19df('0x33')](_['pick'](_0x3fa417[_0x19df('0x32')],_0x5ad16a['filters']));_0x16990a[_0x19df('0x6e')]=!![];if(_0x3fa417['query']['filter']){_0x16990a['where']=_[_0x19df('0x3b')](_0x16990a['where'],{'$or':_[_0x19df('0x2c')](_0x16990a[_0x19df('0x36')],function(_0x125fde){var _0x3040ad={};_0x3040ad[_0x125fde]={'$like':'%'+_0x3fa417[_0x19df('0x32')][_0x19df('0x3d')]+'%'};return _0x3040ad;})});}_0x16990a=_[_0x19df('0x3b')]({},_0x16990a,_0x3fa417['options']);return _0x5c92d3[_0x19df('0x68')](_0x16990a);}})[_0x19df('0x27')](function(_0x317b85){if(!_['isEmpty'](_0x317b85)){var _0x5bb8e0=toCsv(_0x317b85);var _0x43cb4f=Date['now']();fs[_0x19df('0x6f')](util['format']('/tmp/list_%d_%s.csv',_0x5c92d3['id'],_0x43cb4f),_0x5bb8e0);_0x5d84af[_0x19df('0x70')]('Content-disposition',_0x19df('0x71')+util[_0x19df('0x6c')](_0x19df('0x72'),_0x5c92d3['id'],_0x43cb4f));_0x5d84af[_0x19df('0x70')]('Content-type',_0x19df('0x73'));return _0x5d84af[_0x19df('0x74')](util[_0x19df('0x6c')](_0x19df('0x75'),_0x5c92d3['id'],_0x43cb4f));}else{return _0x5d84af['sendStatus'](0xcc);}})[_0x19df('0x42')](handleError(_0x5d84af,null));};exports['addCustomField']=function(_0x1012dc,_0x30e7a9,_0x1935cb){var _0x40bae7;delete _0x1012dc['body']['id'];return db[_0x19df('0x40')][_0x19df('0x56')]({'where':{'id':_0x1012dc[_0x19df('0x50')]['id']}})[_0x19df('0x27')](handleEntityNotFound(_0x30e7a9,null))[_0x19df('0x27')](function(_0xc164fc){if(_0xc164fc){return db['sequelize'][_0x19df('0x76')](function(_0x1107e9){return db[_0x19df('0x69')][_0x19df('0x47')](_0x1012dc[_0x19df('0x48')],{'transaction':_0x1107e9})[_0x19df('0x27')](function(_0x4dc6a7){_0x40bae7=_0x4dc6a7;return _0xc164fc[_0x19df('0x77')](_0x4dc6a7,{'transaction':_0x1107e9});})[_0x19df('0x27')](function(){var _0x248393={'type':db[_0x19df('0x78')][_0x19df('0x79')],'transaction':_0x1107e9};switch(_0x1012dc[_0x19df('0x48')][_0x19df('0x2f')]){case'text':_0x248393[_0x19df('0x2f')]=db[_0x19df('0x78')][_0x19df('0x79')];break;case'number':_0x248393[_0x19df('0x2f')]=db['Sequelize']['INTEGER'];break;case _0x19df('0x7a'):_0x248393[_0x19df('0x2f')]=db[_0x19df('0x78')][_0x19df('0x7b')];_0x248393['defaultValue']=![];break;default:}return db[_0x19df('0x7c')][_0x19df('0x7d')][_0x19df('0x7e')](_0x19df('0x7f'),util[_0x19df('0x6c')](_0x19df('0x80'),_0x40bae7['id']),_0x248393);})[_0x19df('0x27')](function(){return _0x40bae7;});});}})['then'](respondWithResult(_0x30e7a9,null))[_0x19df('0x42')](handleError(_0x30e7a9,null));};exports['getCustomFields']=function(_0x1c197d,_0x5da4f6,_0x47c867){var _0x1b6f75={};var _0x197574={};var _0x4b5fe4;var _0x5409aa;return db[_0x19df('0x40')][_0x19df('0x56')]({'where':{'id':_0x1c197d[_0x19df('0x50')]['id']}})['then'](handleEntityNotFound(_0x5da4f6,null))['then'](function(_0x27c557){if(_0x27c557){_0x4b5fe4=_0x27c557;_0x197574['model']=_[_0x19df('0x44')](db[_0x19df('0x69')]['rawAttributes']);_0x197574[_0x19df('0x32')]=_[_0x19df('0x44')](_0x1c197d['query']);_0x197574[_0x19df('0x33')]=_['intersection'](_0x197574[_0x19df('0x31')],_0x197574[_0x19df('0x32')]);_0x1b6f75['attributes']=_[_0x19df('0x34')](_0x197574[_0x19df('0x31')],qs['fields'](_0x1c197d[_0x19df('0x32')][_0x19df('0x35')]));_0x1b6f75[_0x19df('0x36')]=_0x1b6f75[_0x19df('0x36')][_0x19df('0x57')]?_0x1b6f75[_0x19df('0x36')]:_0x197574[_0x19df('0x31')];_0x1b6f75[_0x19df('0x38')]=qs[_0x19df('0x39')](_0x1c197d[_0x19df('0x32')][_0x19df('0x39')]);_0x1b6f75[_0x19df('0x3f')]=qs[_0x19df('0x33')](_[_0x19df('0x3a')](_0x1c197d['query'],_0x197574[_0x19df('0x33')]));_0x1b6f75['where']=_['merge'](_0x1b6f75[_0x19df('0x3f')],{'$or':[{'ListId':_0x27c557['id']},{'ListId':null}]});if(_0x1c197d[_0x19df('0x32')][_0x19df('0x3d')]){_0x1b6f75['where']=_['merge'](_0x1b6f75[_0x19df('0x3f')],{'$or':_['map'](_0x1b6f75[_0x19df('0x36')],function(_0x5e16bd){var _0x23a3f2={};_0x23a3f2[_0x5e16bd]={'$like':'%'+_0x1c197d[_0x19df('0x32')][_0x19df('0x3d')]+'%'};return _0x23a3f2;})});}_0x1b6f75=_[_0x19df('0x3b')]({},_0x1b6f75,_0x1c197d[_0x19df('0x3e')]);return db['CmCustomField']['findAndCountAll'](_0x1b6f75);}})[_0x19df('0x27')](respondWithResult(_0x5da4f6,null))[_0x19df('0x42')](handleError(_0x5da4f6,null));};exports['addAgents']=function(_0x232d54,_0x4f9ca8,_0x4609e5){return db[_0x19df('0x40')][_0x19df('0x46')]({'where':{'id':_0x232d54[_0x19df('0x50')]['id']}})[_0x19df('0x27')](handleEntityNotFound(_0x4f9ca8,null))[_0x19df('0x27')](function(_0x347e80){if(_0x347e80){return _0x347e80['addAgents'](_0x232d54[_0x19df('0x48')][_0x19df('0x5c')],_[_0x19df('0x81')](_0x232d54[_0x19df('0x48')],[_0x19df('0x5c'),'id'])||{})[_0x19df('0x82')](function(_0x4e3414){for(var _0x30816f=0x0;_0x30816f<_0x232d54[_0x19df('0x48')][_0x19df('0x5c')]['length'];_0x30816f+=0x1){socket[_0x19df('0x83')](_0x19df('0x84'),{'UserId':Number(_0x232d54[_0x19df('0x48')][_0x19df('0x5c')][_0x30816f]),'CmListId':Number(_0x232d54[_0x19df('0x50')]['id'])});}return _0x4e3414;});}})[_0x19df('0x27')](respondWithResult(_0x4f9ca8,null))[_0x19df('0x42')](handleError(_0x4f9ca8,null));};exports[_0x19df('0x85')]=function(_0x250f3c,_0x3e1c9e,_0x529a9f){return db[_0x19df('0x40')][_0x19df('0x46')]({'where':{'id':_0x250f3c[_0x19df('0x50')]['id']}})[_0x19df('0x27')](handleEntityNotFound(_0x3e1c9e,null))['then'](function(_0x1685a8){if(_0x1685a8){return _0x1685a8[_0x19df('0x85')](_0x250f3c[_0x19df('0x32')][_0x19df('0x5c')])[_0x19df('0x27')](function(){if(_[_0x19df('0x5f')](_0x250f3c['query'][_0x19df('0x5c')])){for(var _0x2a2943=0x0;_0x2a2943<_0x250f3c[_0x19df('0x32')][_0x19df('0x5c')][_0x19df('0x57')];_0x2a2943+=0x1){socket[_0x19df('0x83')](_0x19df('0x86'),{'UserId':Number(_0x250f3c[_0x19df('0x32')][_0x19df('0x5c')][_0x2a2943]),'CmListId':Number(_0x250f3c[_0x19df('0x50')]['id'])});}}else{socket['emit'](_0x19df('0x86'),{'UserId':Number(_0x250f3c[_0x19df('0x32')][_0x19df('0x5c')]),'CmListId':Number(_0x250f3c[_0x19df('0x50')]['id'])});}});}})['then'](respondWithStatusCode(_0x3e1c9e,null))[_0x19df('0x42')](handleError(_0x3e1c9e,null));};exports[_0x19df('0x87')]=function(_0x2e88e6,_0x1afaea,_0xd7e3e2){var _0x40ac8e={};var _0x5d9129={};var _0x4657bd;var _0x535937;return db[_0x19df('0x40')][_0x19df('0x56')]({'where':{'id':_0x2e88e6[_0x19df('0x50')]['id']}})[_0x19df('0x27')](handleEntityNotFound(_0x1afaea,null))[_0x19df('0x27')](function(_0x54c663){if(_0x54c663){_0x4657bd=_0x54c663;_0x5d9129[_0x19df('0x31')]=_[_0x19df('0x44')](db[_0x19df('0x88')]['rawAttributes']);_0x5d9129[_0x19df('0x32')]=_['keys'](_0x2e88e6[_0x19df('0x32')]);_0x5d9129[_0x19df('0x33')]=_['intersection'](_0x5d9129[_0x19df('0x31')],_0x5d9129[_0x19df('0x32')]);_0x40ac8e[_0x19df('0x36')]=_[_0x19df('0x34')](_0x5d9129[_0x19df('0x31')],qs[_0x19df('0x35')](_0x2e88e6[_0x19df('0x32')][_0x19df('0x35')]));_0x40ac8e[_0x19df('0x36')]=_0x40ac8e['attributes']['length']?_0x40ac8e[_0x19df('0x36')]:_0x5d9129[_0x19df('0x31')];_0x40ac8e['order']=qs['sort'](_0x2e88e6['query'][_0x19df('0x39')]);_0x40ac8e['where']=qs['filters'](_[_0x19df('0x3a')](_0x2e88e6[_0x19df('0x32')],_0x5d9129[_0x19df('0x33')]));if(_0x2e88e6[_0x19df('0x32')][_0x19df('0x3d')]){_0x40ac8e[_0x19df('0x3f')]=_[_0x19df('0x3b')](_0x40ac8e[_0x19df('0x3f')],{'$or':_[_0x19df('0x2c')](_0x40ac8e[_0x19df('0x36')],function(_0x4f092a){var _0x1a39d6={};_0x1a39d6[_0x4f092a]={'$like':'%'+_0x2e88e6[_0x19df('0x32')][_0x19df('0x3d')]+'%'};return _0x1a39d6;})});}_0x40ac8e=_[_0x19df('0x3b')]({},_0x40ac8e,_0x2e88e6[_0x19df('0x3e')]);return _0x4657bd['getAgents'](_0x40ac8e);}})['then'](function(_0x33e5dc){if(_0x33e5dc){_0x535937=_0x33e5dc[_0x19df('0x57')];if(!_0x2e88e6[_0x19df('0x32')][_0x19df('0x37')](_0x19df('0x58'))){_0x40ac8e[_0x19df('0x1e')]=qs['limit'](_0x2e88e6[_0x19df('0x32')]['limit']);_0x40ac8e[_0x19df('0x1b')]=qs['offset'](_0x2e88e6['query']['offset']);}return _0x4657bd[_0x19df('0x87')](_0x40ac8e);}})['then'](function(_0x1aea15){if(_0x1aea15){return _0x1aea15?{'count':_0x535937,'rows':_0x1aea15}:null;}})[_0x19df('0x27')](respondWithResult(_0x1afaea,null))[_0x19df('0x42')](handleError(_0x1afaea,null));};
\ No newline at end of file
index 89032ce..1e06802 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['update','emit','hook','exports','events','../../mysqldb','CmList','setMaxListeners','save'];(function(_0x464251,_0x41951f){var _0x47b041=function(_0x425376){while(--_0x425376){_0x464251['push'](_0x464251['shift']());}};_0x47b041(++_0x41951f);}(_0x814b,0x1a2));var _0xb814=function(_0x573c9e,_0xd4ab71){_0x573c9e=_0x573c9e-0x0;var _0x5d0714=_0x814b[_0x573c9e];return _0x5d0714;};'use strict';var EventEmitter=require(_0xb814('0x0'));var CmList=require(_0xb814('0x1'))['db'][_0xb814('0x2')];var CmListEvents=new EventEmitter();CmListEvents[_0xb814('0x3')](0x0);var events={'afterCreate':_0xb814('0x4'),'afterUpdate':_0xb814('0x5'),'afterDestroy':'remove'};function emitEvent(_0x38c21a){return function(_0x3e1e9,_0x258866,_0x4237bc){CmListEvents[_0xb814('0x6')](_0x38c21a+':'+_0x3e1e9['id'],_0x3e1e9);CmListEvents[_0xb814('0x6')](_0x38c21a,_0x3e1e9);_0x4237bc(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0xb814('0x7')](e,emitEvent(event));}}module[_0xb814('0x8')]=CmListEvents;
\ No newline at end of file
+var _0x5fc3=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hook'];(function(_0x18a79d,_0x57bd2c){var _0x4f8848=function(_0x28af80){while(--_0x28af80){_0x18a79d['push'](_0x18a79d['shift']());}};_0x4f8848(++_0x57bd2c);}(_0x5fc3,0xa8));var _0x35fc=function(_0x376db5,_0x2b8874){_0x376db5=_0x376db5-0x0;var _0x304c17=_0x5fc3[_0x376db5];return _0x304c17;};'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
index cc55a19..9e1a318 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb903=['rimraf','../../config/environment','./cmList.attributes','exports','cm_lists','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x42f9a1,_0x229b92){var _0x2c3462=function(_0x54425c){while(--_0x54425c){_0x42f9a1['push'](_0x42f9a1['shift']());}};_0x2c3462(++_0x229b92);}(_0xb903,0x185));var _0x3b90=function(_0xb93c27,_0x4f1013){_0xb93c27=_0xb93c27-0x0;var _0x516a36=_0xb903[_0xb93c27];return _0x516a36;};'use strict';var _=require(_0x3b90('0x0'));var util=require(_0x3b90('0x1'));var logger=require(_0x3b90('0x2'))(_0x3b90('0x3'));var moment=require('moment');var BPromise=require(_0x3b90('0x4'));var rp=require(_0x3b90('0x5'));var fs=require('fs');var path=require(_0x3b90('0x6'));var rimraf=require(_0x3b90('0x7'));var config=require(_0x3b90('0x8'));var attributes=require(_0x3b90('0x9'));module[_0x3b90('0xa')]=function(_0x5acd76,_0x15b68f){return _0x5acd76['define']('CmList',attributes,{'tableName':_0x3b90('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa8a8=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./cmList.attributes','exports','define','CmList','cm_lists','lodash','util'];(function(_0x5ef421,_0x11c273){var _0x59ea99=function(_0x13e745){while(--_0x13e745){_0x5ef421['push'](_0x5ef421['shift']());}};_0x59ea99(++_0x11c273);}(_0xa8a8,0xec));var _0x8a8a=function(_0x53cc3f,_0x41bf88){_0x53cc3f=_0x53cc3f-0x0;var _0x6e4144=_0xa8a8[_0x53cc3f];return _0x6e4144;};'use strict';var _=require(_0x8a8a('0x0'));var util=require(_0x8a8a('0x1'));var logger=require(_0x8a8a('0x2'))(_0x8a8a('0x3'));var moment=require('moment');var BPromise=require(_0x8a8a('0x4'));var rp=require(_0x8a8a('0x5'));var fs=require('fs');var path=require(_0x8a8a('0x6'));var rimraf=require(_0x8a8a('0x7'));var config=require(_0x8a8a('0x8'));var attributes=require(_0x8a8a('0x9'));module[_0x8a8a('0xa')]=function(_0x12db82,_0x2e8193){return _0x12db82[_0x8a8a('0xb')](_0x8a8a('0xc'),attributes,{'tableName':_0x8a8a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6bfef9c..81c829f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29fa=['message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./cmList.socket','register','request','then','info','request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','code','CmList,\x20%s,\x20%s'];(function(_0x40b8c0,_0x3424f2){var _0x2e64e4=function(_0x375470){while(--_0x375470){_0x40b8c0['push'](_0x40b8c0['shift']());}};_0x2e64e4(++_0x3424f2);}(_0x29fa,0xeb));var _0xa29f=function(_0x36c6eb,_0x4fb127){_0x36c6eb=_0x36c6eb-0x0;var _0x30675b=_0x29fa[_0x36c6eb];return _0x30675b;};'use strict';var _=require(_0xa29f('0x0'));var util=require(_0xa29f('0x1'));var moment=require(_0xa29f('0x2'));var BPromise=require(_0xa29f('0x3'));var rs=require(_0xa29f('0x4'));var fs=require('fs');var Redis=require(_0xa29f('0x5'));var db=require(_0xa29f('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xa29f('0x7'));var config=require(_0xa29f('0x8'));var jayson=require(_0xa29f('0x9'));var client=jayson[_0xa29f('0xa')][_0xa29f('0xb')]({'port':0x232a});config[_0xa29f('0xc')]=_['defaults'](config['redis'],{'host':_0xa29f('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa29f('0xc')]));require(_0xa29f('0xe'))[_0xa29f('0xf')](socket);function respondWithRpcPromise(_0x6ec36,_0x56ed50,_0x4fa9fb){return new BPromise(function(_0x5aaa10,_0x52f759){return client[_0xa29f('0x10')](_0x6ec36,_0x4fa9fb)[_0xa29f('0x11')](function(_0x3fca4e){logger[_0xa29f('0x12')]('CmList,\x20%s,\x20%s',_0x56ed50,_0xa29f('0x13'));logger[_0xa29f('0x14')](_0xa29f('0x15'),_0x56ed50,'request\x20sent',JSON[_0xa29f('0x16')](_0x3fca4e));if(_0x3fca4e[_0xa29f('0x17')]){if(_0x3fca4e[_0xa29f('0x17')][_0xa29f('0x18')]===0x1f4){logger['error'](_0xa29f('0x19'),_0x56ed50,_0x3fca4e[_0xa29f('0x17')][_0xa29f('0x1a')]);return _0x52f759(_0x3fca4e[_0xa29f('0x17')][_0xa29f('0x1a')]);}logger[_0xa29f('0x17')]('CmList,\x20%s,\x20%s',_0x56ed50,_0x3fca4e['error'][_0xa29f('0x1a')]);return _0x5aaa10(_0x3fca4e[_0xa29f('0x17')][_0xa29f('0x1a')]);}else{logger[_0xa29f('0x12')](_0xa29f('0x19'),_0x56ed50,'request\x20sent');_0x5aaa10(_0x3fca4e[_0xa29f('0x1b')]['message']);}})[_0xa29f('0x1c')](function(_0xff0b54){logger['error'](_0xa29f('0x19'),_0x56ed50,_0xff0b54);_0x52f759(_0xff0b54);});});}
\ No newline at end of file
+var _0x0d49=['code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','redis','defaults','socket.io-emitter','./cmList.socket','register','then','CmList,\x20%s,\x20%s','debug','CmList,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x27828f,_0x2617e2){var _0x4c8b4f=function(_0x18c0b2){while(--_0x18c0b2){_0x27828f['push'](_0x27828f['shift']());}};_0x4c8b4f(++_0x2617e2);}(_0x0d49,0x1d5));var _0x90d4=function(_0x282244,_0x2596e6){_0x282244=_0x282244-0x0;var _0x1d6440=_0x0d49[_0x282244];return _0x1d6440;};'use strict';var _=require(_0x90d4('0x0'));var util=require(_0x90d4('0x1'));var moment=require(_0x90d4('0x2'));var BPromise=require(_0x90d4('0x3'));var rs=require(_0x90d4('0x4'));var fs=require('fs');var Redis=require(_0x90d4('0x5'));var db=require(_0x90d4('0x6'))['db'];var utils=require(_0x90d4('0x7'));var logger=require(_0x90d4('0x8'))(_0x90d4('0x9'));var config=require('../../config/environment');var jayson=require(_0x90d4('0xa'));var client=jayson['client'][_0x90d4('0xb')]({'port':0x232a});config[_0x90d4('0xc')]=_[_0x90d4('0xd')](config[_0x90d4('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x90d4('0xe'))(new Redis(config[_0x90d4('0xc')]));require(_0x90d4('0xf'))[_0x90d4('0x10')](socket);function respondWithRpcPromise(_0x1aa535,_0x29ba02,_0x231893){return new BPromise(function(_0x15a723,_0x32df7a){return client['request'](_0x1aa535,_0x231893)[_0x90d4('0x11')](function(_0xfa8f84){logger['info'](_0x90d4('0x12'),_0x29ba02,'request\x20sent');logger[_0x90d4('0x13')](_0x90d4('0x14'),_0x29ba02,_0x90d4('0x15'),JSON[_0x90d4('0x16')](_0xfa8f84));if(_0xfa8f84[_0x90d4('0x17')]){if(_0xfa8f84['error'][_0x90d4('0x18')]===0x1f4){logger[_0x90d4('0x17')](_0x90d4('0x12'),_0x29ba02,_0xfa8f84[_0x90d4('0x17')][_0x90d4('0x19')]);return _0x32df7a(_0xfa8f84[_0x90d4('0x17')][_0x90d4('0x19')]);}logger[_0x90d4('0x17')](_0x90d4('0x12'),_0x29ba02,_0xfa8f84[_0x90d4('0x17')][_0x90d4('0x19')]);return _0x15a723(_0xfa8f84[_0x90d4('0x17')][_0x90d4('0x19')]);}else{logger[_0x90d4('0x1a')](_0x90d4('0x12'),_0x29ba02,_0x90d4('0x15'));_0x15a723(_0xfa8f84[_0x90d4('0x1b')][_0x90d4('0x19')]);}})[_0x90d4('0x1c')](function(_0x1d103b){logger[_0x90d4('0x17')](_0x90d4('0x12'),_0x29ba02,_0x1d103b);_0x32df7a(_0x1d103b);});});}
\ No newline at end of file
index 5a5f75c..2776f91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e3=['save','remove','update','removeListener','length','cmList:','./cmList.events'];(function(_0x193cc0,_0x227edc){var _0x53d496=function(_0x3aa19c){while(--_0x3aa19c){_0x193cc0['push'](_0x193cc0['shift']());}};_0x53d496(++_0x227edc);}(_0x70e3,0x117));var _0x370e=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0x70e3[_0x37c22c];return _0x119d79;};'use strict';var CmListEvents=require(_0x370e('0x0'));var events=[_0x370e('0x1'),_0x370e('0x2'),_0x370e('0x3')];function createListener(_0x5e4ea9,_0x46df71){return function(_0x5b47bc){_0x46df71['emit'](_0x5e4ea9,_0x5b47bc);};}function removeListener(_0x2b5d8a,_0x539f7c){return function(){CmListEvents[_0x370e('0x4')](_0x2b5d8a,_0x539f7c);};}exports['register']=function(_0x5ed26c){for(var _0x5ebc10=0x0,_0x549dea=events[_0x370e('0x5')];_0x5ebc10<_0x549dea;_0x5ebc10++){var _0x5770e9=events[_0x5ebc10];var _0x1fb408=createListener(_0x370e('0x6')+_0x5770e9,_0x5ed26c);CmListEvents['on'](_0x5770e9,_0x1fb408);}};
\ No newline at end of file
+var _0x2ae4=['removeListener','register','length','cmList:','./cmList.events','save','remove','emit'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x2ae4,0x9c));var _0x42ae=function(_0x13ebc9,_0x528695){_0x13ebc9=_0x13ebc9-0x0;var _0x16c2f3=_0x2ae4[_0x13ebc9];return _0x16c2f3;};'use strict';var CmListEvents=require(_0x42ae('0x0'));var events=[_0x42ae('0x1'),_0x42ae('0x2'),'update'];function createListener(_0x10ebfc,_0x1397b4){return function(_0x53d599){_0x1397b4[_0x42ae('0x3')](_0x10ebfc,_0x53d599);};}function removeListener(_0x363fd9,_0x5debaa){return function(){CmListEvents[_0x42ae('0x4')](_0x363fd9,_0x5debaa);};}exports[_0x42ae('0x5')]=function(_0x2f2792){for(var _0x18b324=0x0,_0x4698b4=events[_0x42ae('0x6')];_0x18b324<_0x4698b4;_0x18b324++){var _0x2bff04=events[_0x18b324];var _0x3b8698=createListener(_0x42ae('0x7')+_0x2bff04,_0x2f2792);CmListEvents['on'](_0x2bff04,_0x3b8698);}};
\ No newline at end of file
index f0dbf7a..474c15a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc6c=['connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./cmList.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getDispositions','getContacts','getCustomFields','getAgents','post','/:id/dispositions','addDisposition','/:id/fields','addCustomField','/:id/users','addAgents','update','delete','destroy','util','path'];(function(_0x1a9204,_0x1c9e00){var _0x17ca68=function(_0x1f4399){while(--_0x1f4399){_0x1a9204['push'](_0x1a9204['shift']());}};_0x17ca68(++_0x1c9e00);}(_0xcc6c,0xde));var _0xccc6=function(_0x1d2cdb,_0x190a92){_0x1d2cdb=_0x1d2cdb-0x0;var _0x297a13=_0xcc6c[_0x1d2cdb];return _0x297a13;};'use strict';var multer=require('multer');var util=require(_0xccc6('0x0'));var path=require(_0xccc6('0x1'));var timeout=require(_0xccc6('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xccc6('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xccc6('0x4'));var config=require(_0xccc6('0x5'));var controller=require(_0xccc6('0x6'));router[_0xccc6('0x7')]('/',auth[_0xccc6('0x8')](),controller[_0xccc6('0x9')]);router['get'](_0xccc6('0xa'),auth[_0xccc6('0x8')](),controller[_0xccc6('0xb')]);router[_0xccc6('0x7')](_0xccc6('0xc'),auth[_0xccc6('0x8')](),controller[_0xccc6('0xd')]);router[_0xccc6('0x7')]('/:id/dispositions',auth[_0xccc6('0x8')](),controller[_0xccc6('0xe')]);router['get']('/:id/contacts',auth[_0xccc6('0x8')](),controller[_0xccc6('0xf')]);router['get']('/:id/contacts/csv',auth[_0xccc6('0x8')](),controller['getContactsCsv']);router[_0xccc6('0x7')]('/:id/fields',auth[_0xccc6('0x8')](),controller[_0xccc6('0x10')]);router['get']('/:id/users',auth[_0xccc6('0x8')](),controller[_0xccc6('0x11')]);router[_0xccc6('0x12')]('/',auth[_0xccc6('0x8')](),controller['create']);router[_0xccc6('0x12')](_0xccc6('0x13'),auth[_0xccc6('0x8')](),controller[_0xccc6('0x14')]);router[_0xccc6('0x12')]('/:id/contacts',auth[_0xccc6('0x8')](),controller['addContacts']);router['post'](_0xccc6('0x15'),auth[_0xccc6('0x8')](),controller[_0xccc6('0x16')]);router[_0xccc6('0x12')](_0xccc6('0x17'),auth[_0xccc6('0x8')](),controller[_0xccc6('0x18')]);router['put'](_0xccc6('0xc'),auth[_0xccc6('0x8')](),controller[_0xccc6('0x19')]);router[_0xccc6('0x1a')](_0xccc6('0xc'),auth['isAuthenticated'](),controller[_0xccc6('0x1b')]);router[_0xccc6('0x1a')](_0xccc6('0x13'),auth['isAuthenticated'](),controller['removeDispositions']);router[_0xccc6('0x1a')](_0xccc6('0x17'),auth[_0xccc6('0x8')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x36cf=['/:id/dispositions','addDisposition','addContacts','addAgents','put','update','delete','removeDispositions','removeAgents','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmList.controller','get','isAuthenticated','index','describe','/:id','show','/:id/contacts','getContacts','/:id/contacts/csv','getContactsCsv','/:id/fields','getCustomFields','/:id/users','getAgents','post'];(function(_0x5e759c,_0x199b91){var _0x13715e=function(_0x30fa0f){while(--_0x30fa0f){_0x5e759c['push'](_0x5e759c['shift']());}};_0x13715e(++_0x199b91);}(_0x36cf,0x70));var _0xf36c=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x36cf[_0x5ddb1c];return _0x354adc;};'use strict';var multer=require(_0xf36c('0x0'));var util=require(_0xf36c('0x1'));var path=require(_0xf36c('0x2'));var timeout=require(_0xf36c('0x3'));var express=require('express');var router=express[_0xf36c('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xf36c('0x5'));var interaction=require(_0xf36c('0x6'));var config=require(_0xf36c('0x7'));var controller=require(_0xf36c('0x8'));router[_0xf36c('0x9')]('/',auth[_0xf36c('0xa')](),controller[_0xf36c('0xb')]);router['get']('/describe',auth[_0xf36c('0xa')](),controller[_0xf36c('0xc')]);router[_0xf36c('0x9')](_0xf36c('0xd'),auth[_0xf36c('0xa')](),controller[_0xf36c('0xe')]);router['get']('/:id/dispositions',auth['isAuthenticated'](),controller['getDispositions']);router[_0xf36c('0x9')](_0xf36c('0xf'),auth['isAuthenticated'](),controller[_0xf36c('0x10')]);router[_0xf36c('0x9')](_0xf36c('0x11'),auth[_0xf36c('0xa')](),controller[_0xf36c('0x12')]);router[_0xf36c('0x9')](_0xf36c('0x13'),auth[_0xf36c('0xa')](),controller[_0xf36c('0x14')]);router[_0xf36c('0x9')](_0xf36c('0x15'),auth['isAuthenticated'](),controller[_0xf36c('0x16')]);router[_0xf36c('0x17')]('/',auth['isAuthenticated'](),controller['create']);router[_0xf36c('0x17')](_0xf36c('0x18'),auth[_0xf36c('0xa')](),controller[_0xf36c('0x19')]);router[_0xf36c('0x17')](_0xf36c('0xf'),auth[_0xf36c('0xa')](),controller[_0xf36c('0x1a')]);router[_0xf36c('0x17')](_0xf36c('0x13'),auth[_0xf36c('0xa')](),controller['addCustomField']);router[_0xf36c('0x17')]('/:id/users',auth[_0xf36c('0xa')](),controller[_0xf36c('0x1b')]);router[_0xf36c('0x1c')](_0xf36c('0xd'),auth[_0xf36c('0xa')](),controller[_0xf36c('0x1d')]);router[_0xf36c('0x1e')](_0xf36c('0xd'),auth[_0xf36c('0xa')](),controller['destroy']);router[_0xf36c('0x1e')](_0xf36c('0x18'),auth[_0xf36c('0xa')](),controller[_0xf36c('0x1f')]);router['delete'](_0xf36c('0x15'),auth[_0xf36c('0xa')](),controller[_0xf36c('0x20')]);module[_0xf36c('0x21')]=router;
\ No newline at end of file
index 08a8907..4ffc9bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97fb=['exports','VIRTUAL','getDataValue','field','STRING','sequelize'];(function(_0x3da707,_0x30c36d){var _0x342ee7=function(_0x175135){while(--_0x175135){_0x3da707['push'](_0x3da707['shift']());}};_0x342ee7(++_0x30c36d);}(_0x97fb,0x1f1));var _0xb97f=function(_0x5c2e3e,_0x26ecd3){_0x5c2e3e=_0x5c2e3e-0x0;var _0x53f64a=_0x97fb[_0x5c2e3e];return _0x53f64a;};'use strict';var Sequelize=require(_0xb97f('0x0'));module[_0xb97f('0x1')]={'name':{'type':Sequelize[_0xb97f('0x2')],'get':function(_0x82899a){return this[_0xb97f('0x3')](_0xb97f('0x4'));}},'field':{'type':Sequelize[_0xb97f('0x5')],'allowNull':![]},'operator':{'type':Sequelize[_0xb97f('0x5')],'allowNull':![]},'value':{'type':Sequelize[_0xb97f('0x5')],'allowNull':![]}};
\ No newline at end of file
+var _0xec6a=['field','STRING','sequelize','exports','VIRTUAL','getDataValue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xec6a,0x134));var _0xaec6=function(_0x38eb34,_0x592e49){_0x38eb34=_0x38eb34-0x0;var _0x1109ee=_0xec6a[_0x38eb34];return _0x1109ee;};'use strict';var Sequelize=require(_0xaec6('0x0'));module[_0xaec6('0x1')]={'name':{'type':Sequelize[_0xaec6('0x2')],'get':function(_0x19e508){return this[_0xaec6('0x3')](_0xaec6('0x4'));}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0xaec6('0x5')],'allowNull':![]}};
\ No newline at end of file
index 4d48483..692689d 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(_0x16bf05,_0x4f70da){var _0xbcf546=function(_0x70b01d){while(--_0x70b01d){_0x16bf05['push'](_0x16bf05['shift']());}};_0xbcf546(++_0x4f70da);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'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 _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(_0x5af22c,_0x143d66){var _0x552f8f=function(_0x21e73c){while(--_0x21e73c){_0x5af22c['push'](_0x5af22c['shift']());}};_0x552f8f(++_0x143d66);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'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
index ff7806b..736f61d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b97=['lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./condition.attributes','exports','define','Condition','tools_conditions'];(function(_0x21839b,_0x5bffd0){var _0x1016c2=function(_0x24e097){while(--_0x24e097){_0x21839b['push'](_0x21839b['shift']());}};_0x1016c2(++_0x5bffd0);}(_0x1b97,0x193));var _0x71b9=function(_0x302a70,_0x1c7d4f){_0x302a70=_0x302a70-0x0;var _0x58b280=_0x1b97[_0x302a70];return _0x58b280;};'use strict';var _=require(_0x71b9('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x71b9('0x1'));var moment=require(_0x71b9('0x2'));var BPromise=require(_0x71b9('0x3'));var rp=require(_0x71b9('0x4'));var fs=require('fs');var path=require(_0x71b9('0x5'));var rimraf=require(_0x71b9('0x6'));var config=require(_0x71b9('0x7'));var attributes=require(_0x71b9('0x8'));module[_0x71b9('0x9')]=function(_0x1cdbec,_0x1e6a6a){return _0x1cdbec[_0x71b9('0xa')](_0x71b9('0xb'),attributes,{'tableName':_0x71b9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x58a5=['../../config/environment','./condition.attributes','Condition','lodash','../../config/logger','api','bluebird','request-promise','path'];(function(_0x297b2b,_0x11eb85){var _0x14754b=function(_0x377d2f){while(--_0x377d2f){_0x297b2b['push'](_0x297b2b['shift']());}};_0x14754b(++_0x11eb85);}(_0x58a5,0x135));var _0x558a=function(_0x4eafed,_0x26e2bc){_0x4eafed=_0x4eafed-0x0;var _0x159c85=_0x58a5[_0x4eafed];return _0x159c85;};'use strict';var _=require(_0x558a('0x0'));var util=require('util');var logger=require(_0x558a('0x1'))(_0x558a('0x2'));var moment=require('moment');var BPromise=require(_0x558a('0x3'));var rp=require(_0x558a('0x4'));var fs=require('fs');var path=require(_0x558a('0x5'));var rimraf=require('rimraf');var config=require(_0x558a('0x6'));var attributes=require(_0x558a('0x7'));module['exports']=function(_0x47305a,_0x2f8bb7){return _0x47305a['define'](_0x558a('0x8'),attributes,{'tableName':'tools_conditions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8d4fc5d..98dc22c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93dc=['code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','Condition,\x20%s,\x20%s','debug','request\x20sent','stringify','error'];(function(_0x5d9867,_0x5e9030){var _0x7d2118=function(_0x2e5149){while(--_0x2e5149){_0x5d9867['push'](_0x5d9867['shift']());}};_0x7d2118(++_0x5e9030);}(_0x93dc,0x86));var _0xc93d=function(_0x38d656,_0x1fdbc1){_0x38d656=_0x38d656-0x0;var _0x4a2e90=_0x93dc[_0x38d656];return _0x4a2e90;};'use strict';var _=require(_0xc93d('0x0'));var util=require(_0xc93d('0x1'));var moment=require(_0xc93d('0x2'));var BPromise=require(_0xc93d('0x3'));var rs=require(_0xc93d('0x4'));var fs=require('fs');var Redis=require(_0xc93d('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc93d('0x6'));var logger=require(_0xc93d('0x7'))(_0xc93d('0x8'));var config=require(_0xc93d('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xc93d('0xa')][_0xc93d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x563dcc,_0x1c795d,_0x3275f2){return new BPromise(function(_0x3f1a0b,_0x4121d8){return client[_0xc93d('0xc')](_0x563dcc,_0x3275f2)[_0xc93d('0xd')](function(_0x1864a6){logger[_0xc93d('0xe')](_0xc93d('0xf'),_0x1c795d,'request\x20sent');logger[_0xc93d('0x10')]('Condition,\x20%s,\x20%s,\x20%s',_0x1c795d,_0xc93d('0x11'),JSON[_0xc93d('0x12')](_0x1864a6));if(_0x1864a6['error']){if(_0x1864a6[_0xc93d('0x13')][_0xc93d('0x14')]===0x1f4){logger[_0xc93d('0x13')](_0xc93d('0xf'),_0x1c795d,_0x1864a6[_0xc93d('0x13')][_0xc93d('0x15')]);return _0x4121d8(_0x1864a6['error'][_0xc93d('0x15')]);}logger[_0xc93d('0x13')](_0xc93d('0xf'),_0x1c795d,_0x1864a6[_0xc93d('0x13')]['message']);return _0x3f1a0b(_0x1864a6[_0xc93d('0x13')][_0xc93d('0x15')]);}else{logger['info']('Condition,\x20%s,\x20%s',_0x1c795d,_0xc93d('0x11'));_0x3f1a0b(_0x1864a6['result'][_0xc93d('0x15')]);}})['catch'](function(_0x2e3e0a){logger[_0xc93d('0x13')](_0xc93d('0xf'),_0x1c795d,_0x2e3e0a);_0x4121d8(_0x2e3e0a);});});}
\ No newline at end of file
+var _0x67af=['info','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','request','then'];(function(_0x439cfb,_0x441762){var _0x1e390a=function(_0x26a7f9){while(--_0x26a7f9){_0x439cfb['push'](_0x439cfb['shift']());}};_0x1e390a(++_0x441762);}(_0x67af,0x1ee));var _0xf67a=function(_0x173f10,_0x35db61){_0x173f10=_0x173f10-0x0;var _0x53142d=_0x67af[_0x173f10];return _0x53142d;};'use strict';var _=require('lodash');var util=require(_0xf67a('0x0'));var moment=require(_0xf67a('0x1'));var BPromise=require(_0xf67a('0x2'));var rs=require(_0xf67a('0x3'));var fs=require('fs');var Redis=require(_0xf67a('0x4'));var db=require(_0xf67a('0x5'))['db'];var utils=require(_0xf67a('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xf67a('0x7'));var jayson=require(_0xf67a('0x8'));var client=jayson[_0xf67a('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x491a57,_0x16dad2,_0x57c341){return new BPromise(function(_0x3b0900,_0x29abf8){return client[_0xf67a('0xa')](_0x491a57,_0x57c341)[_0xf67a('0xb')](function(_0x3a0a44){logger[_0xf67a('0xc')](_0xf67a('0xd'),_0x16dad2,_0xf67a('0xe'));logger[_0xf67a('0xf')](_0xf67a('0x10'),_0x16dad2,'request\x20sent',JSON[_0xf67a('0x11')](_0x3a0a44));if(_0x3a0a44[_0xf67a('0x12')]){if(_0x3a0a44[_0xf67a('0x12')][_0xf67a('0x13')]===0x1f4){logger['error']('Condition,\x20%s,\x20%s',_0x16dad2,_0x3a0a44[_0xf67a('0x12')][_0xf67a('0x14')]);return _0x29abf8(_0x3a0a44[_0xf67a('0x12')]['message']);}logger[_0xf67a('0x12')]('Condition,\x20%s,\x20%s',_0x16dad2,_0x3a0a44[_0xf67a('0x12')][_0xf67a('0x14')]);return _0x3b0900(_0x3a0a44[_0xf67a('0x12')][_0xf67a('0x14')]);}else{logger[_0xf67a('0xc')](_0xf67a('0xd'),_0x16dad2,_0xf67a('0xe'));_0x3b0900(_0x3a0a44[_0xf67a('0x15')]['message']);}})[_0xf67a('0x16')](function(_0xfa016c){logger[_0xf67a('0x12')]('Condition,\x20%s,\x20%s',_0x16dad2,_0xfa016c);_0x29abf8(_0xfa016c);});});}
\ No newline at end of file
index d40b355..53c8e62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31a5=['util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./condition.controller','/:id','isAuthenticated','update','delete','destroy','exports'];(function(_0x4d0e8b,_0x25837e){var _0x1163d3=function(_0x417a53){while(--_0x417a53){_0x4d0e8b['push'](_0x4d0e8b['shift']());}};_0x1163d3(++_0x25837e);}(_0x31a5,0x16c));var _0x531a=function(_0x5ef6e1,_0x38c20d){_0x5ef6e1=_0x5ef6e1-0x0;var _0x49594f=_0x31a5[_0x5ef6e1];return _0x49594f;};'use strict';var multer=require('multer');var util=require(_0x531a('0x0'));var path=require(_0x531a('0x1'));var timeout=require(_0x531a('0x2'));var express=require(_0x531a('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x531a('0x4'));var interaction=require(_0x531a('0x5'));var config=require(_0x531a('0x6'));var controller=require(_0x531a('0x7'));router['put'](_0x531a('0x8'),auth[_0x531a('0x9')](),controller[_0x531a('0xa')]);router[_0x531a('0xb')]('/:id',auth[_0x531a('0x9')](),controller[_0x531a('0xc')]);module[_0x531a('0xd')]=router;
\ No newline at end of file
+var _0x6239=['isAuthenticated','delete','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./condition.controller','put','/:id'];(function(_0x4651bd,_0x12a42f){var _0xdf510d=function(_0x12e500){while(--_0x12e500){_0x4651bd['push'](_0x4651bd['shift']());}};_0xdf510d(++_0x12a42f);}(_0x6239,0x144));var _0x9623=function(_0x57ef13,_0x531e2d){_0x57ef13=_0x57ef13-0x0;var _0x2ab789=_0x6239[_0x57ef13];return _0x2ab789;};'use strict';var multer=require(_0x9623('0x0'));var util=require(_0x9623('0x1'));var path=require(_0x9623('0x2'));var timeout=require('connect-timeout');var express=require(_0x9623('0x3'));var router=express[_0x9623('0x4')]();var fs_extra=require(_0x9623('0x5'));var auth=require(_0x9623('0x6'));var interaction=require(_0x9623('0x7'));var config=require(_0x9623('0x8'));var controller=require(_0x9623('0x9'));router[_0x9623('0xa')](_0x9623('0xb'),auth[_0x9623('0xc')](),controller['update']);router[_0x9623('0xd')](_0x9623('0xb'),auth[_0x9623('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index cbd4a86..33ff262 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['exports','sequelize'];(function(_0x3baca1,_0x3f0e4e){var _0x1a314c=function(_0x5c4dbe){while(--_0x5c4dbe){_0x3baca1['push'](_0x3baca1['shift']());}};_0x1a314c(++_0x3f0e4e);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x0d8b('0x0'));module[_0x0d8b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0713=['STRING','name'];(function(_0x39db49,_0x1b9b0e){var _0x4b3cfc=function(_0x128213){while(--_0x128213){_0x39db49['push'](_0x39db49['shift']());}};_0x4b3cfc(++_0x1b9b0e);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x3071('0x0')],'allowNull':![],'unique':_0x3071('0x1')},'description':{'type':Sequelize[_0x3071('0x0')]}};
\ No newline at end of file
index d75b46f..ff95f9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeeb4=['pick','nolimit','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','CustomDashboards','end','error','name','send','index','Dashboard','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','role','get','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileResource','type','attrUrl','attrs','value','custom','attrPath','clock','attrHourFormat','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','attrRefresh','widgetAttributes:\x20%s','addItem','DashboardId','DashboardItem','getItems','findOne'];(function(_0x3b6c8f,_0x1cc05a){var _0x4a1514=function(_0x31ca15){while(--_0x31ca15){_0x3b6c8f['push'](_0x3b6c8f['shift']());}};_0x4a1514(++_0x1cc05a);}(_0xeeb4,0xee));var _0x4eeb=function(_0x5e58d1,_0x4d0e36){_0x5e58d1=_0x5e58d1-0x0;var _0x452d4f=_0xeeb4[_0x5e58d1];return _0x452d4f;};'use strict';var emlformat=require(_0x4eeb('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x4eeb('0x1'));var rp=require(_0x4eeb('0x2'));var moment=require(_0x4eeb('0x3'));var BPromise=require(_0x4eeb('0x4'));var Mustache=require(_0x4eeb('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x4eeb('0x6'));var ejs=require(_0x4eeb('0x7'));var fs=require('fs');var fs_extra=require(_0x4eeb('0x8'));var _=require('lodash');var squel=require(_0x4eeb('0x9'));var crypto=require(_0x4eeb('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x4eeb('0xb'));var toCsv=require(_0x4eeb('0x6'));var querystring=require('querystring');var Papa=require(_0x4eeb('0xc'));var Redis=require(_0x4eeb('0xd'));var authService=require(_0x4eeb('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x4eeb('0xf'))(_0x4eeb('0x10'));var utils=require(_0x4eeb('0x11'));var config=require(_0x4eeb('0x12'));var licenseUtil=require(_0x4eeb('0x13'));var db=require(_0x4eeb('0x14'))['db'];config[_0x4eeb('0x15')]=_[_0x4eeb('0x16')](config[_0x4eeb('0x15')],{'host':_0x4eeb('0x17'),'port':0x18eb});var socket=require(_0x4eeb('0x18'))(new Redis(config['redis']));require(_0x4eeb('0x19'))[_0x4eeb('0x1a')](socket);function respondWithStatusCode(_0x1b6fda,_0x4726fe){_0x4726fe=_0x4726fe||0xcc;return function(_0x5238c5){if(_0x5238c5){return _0x1b6fda[_0x4eeb('0x1b')](_0x4726fe);}return _0x1b6fda['status'](_0x4726fe)['end']();};}function respondWithResult(_0x30d04d,_0x2305f7){_0x2305f7=_0x2305f7||0xc8;return function(_0x52f970){if(_0x52f970){return _0x30d04d[_0x4eeb('0x1c')](_0x2305f7)[_0x4eeb('0x1d')](_0x52f970);}};}function respondWithFilteredResult(_0x4929df,_0x3739d4){return function(_0x59712f){if(_0x59712f){var _0x2ba031=typeof _0x3739d4[_0x4eeb('0x1e')]===_0x4eeb('0x1f')&&typeof _0x3739d4[_0x4eeb('0x20')]==='undefined';var _0x151be8=_0x59712f[_0x4eeb('0x21')];var _0x2825cf=_0x2ba031?0x0:_0x3739d4['offset'];var _0x1d29a2=_0x2ba031?_0x59712f[_0x4eeb('0x21')]:_0x3739d4[_0x4eeb('0x1e')]+_0x3739d4[_0x4eeb('0x20')];var _0x311a39;if(_0x1d29a2>=_0x151be8){_0x1d29a2=_0x151be8;_0x311a39=0xc8;}else{_0x311a39=0xce;}_0x4929df[_0x4eeb('0x1c')](_0x311a39);return _0x4929df['set'](_0x4eeb('0x22'),_0x2825cf+'-'+_0x1d29a2+'/'+_0x151be8)[_0x4eeb('0x1d')](_0x59712f);}return null;};}function patchUpdates(_0x16dc41){return function(_0x5262f2){try{jsonpatch[_0x4eeb('0x23')](_0x5262f2,_0x16dc41,!![]);}catch(_0x3671aa){return BPromise[_0x4eeb('0x24')](_0x3671aa);}return _0x5262f2[_0x4eeb('0x25')]();};}function saveUpdates(_0x1fa974,_0x5ca468){return function(_0x450b67){if(_0x450b67){return _0x450b67[_0x4eeb('0x26')](_0x1fa974)[_0x4eeb('0x27')](function(_0x1aee4b){return _0x1aee4b;});}return null;};}function removeEntity(_0x5eb460,_0x29d68a){return function(_0x13ab22){if(_0x13ab22){return _0x13ab22[_0x4eeb('0x28')]()[_0x4eeb('0x27')](function(){var _0x4b1a1f=_0x13ab22['get']({'plain':!![]});var _0x50d525=_0x4eeb('0x29');return db['UserProfileResource']['destroy']({'where':{'type':_0x50d525,'resourceId':_0x4b1a1f['id']}})['then'](function(){return _0x13ab22;});})['then'](function(){_0x5eb460[_0x4eeb('0x1c')](0xcc)[_0x4eeb('0x2a')]();});}};}function handleEntityNotFound(_0x35e696,_0x453c5b){return function(_0xc30521){if(!_0xc30521){_0x35e696[_0x4eeb('0x1b')](0x194);}return _0xc30521;};}function handleError(_0x15ece3,_0x5596d6){_0x5596d6=_0x5596d6||0x1f4;return function(_0x3841d7){logger[_0x4eeb('0x2b')](_0x3841d7['stack']);if(_0x3841d7[_0x4eeb('0x2c')]){delete _0x3841d7[_0x4eeb('0x2c')];}_0x15ece3[_0x4eeb('0x1c')](_0x5596d6)[_0x4eeb('0x2d')](_0x3841d7);};}exports[_0x4eeb('0x2e')]=function(_0x445147,_0x3f68de){var _0x1c2ce6={},_0x573314={},_0x528e59={'count':0x0,'rows':[]};var _0x14dfc2=_['map'](db[_0x4eeb('0x2f')][_0x4eeb('0x30')],function(_0x246e58){return{'name':_0x246e58[_0x4eeb('0x31')],'type':_0x246e58['type'][_0x4eeb('0x32')]};});_0x573314[_0x4eeb('0x33')]=_[_0x4eeb('0x34')](_0x14dfc2,_0x4eeb('0x2c'));_0x573314[_0x4eeb('0x35')]=_[_0x4eeb('0x36')](_0x445147[_0x4eeb('0x35')]);_0x573314[_0x4eeb('0x37')]=_[_0x4eeb('0x38')](_0x573314[_0x4eeb('0x33')],_0x573314[_0x4eeb('0x35')]);_0x1c2ce6[_0x4eeb('0x39')]=_[_0x4eeb('0x38')](_0x573314[_0x4eeb('0x33')],qs[_0x4eeb('0x3a')](_0x445147[_0x4eeb('0x35')][_0x4eeb('0x3a')]));_0x1c2ce6[_0x4eeb('0x39')]=_0x1c2ce6[_0x4eeb('0x39')][_0x4eeb('0x3b')]?_0x1c2ce6['attributes']:_0x573314[_0x4eeb('0x33')];if(!_0x445147['query'][_0x4eeb('0x3c')]('nolimit')){_0x1c2ce6[_0x4eeb('0x20')]=qs[_0x4eeb('0x20')](_0x445147['query'][_0x4eeb('0x20')]);_0x1c2ce6['offset']=qs[_0x4eeb('0x1e')](_0x445147['query'][_0x4eeb('0x1e')]);}_0x1c2ce6[_0x4eeb('0x3d')]=qs[_0x4eeb('0x3e')](_0x445147['query']['sort']);_0x1c2ce6['where']=qs[_0x4eeb('0x37')](_['pick'](_0x445147[_0x4eeb('0x35')],_0x573314['filters']),_0x14dfc2);if(_0x445147[_0x4eeb('0x35')][_0x4eeb('0x3f')]){_0x1c2ce6[_0x4eeb('0x40')]=_[_0x4eeb('0x41')](_0x1c2ce6['where'],{'$or':_[_0x4eeb('0x34')](_0x14dfc2,function(_0x898529){if(_0x898529['type']!=='VIRTUAL'){var _0x4bce9e={};_0x4bce9e[_0x898529[_0x4eeb('0x2c')]]={'$like':'%'+_0x445147[_0x4eeb('0x35')][_0x4eeb('0x3f')]+'%'};return _0x4bce9e;}})});}_0x1c2ce6=_[_0x4eeb('0x41')]({},_0x1c2ce6,_0x445147[_0x4eeb('0x42')]);var _0x42fe7f={'where':_0x1c2ce6[_0x4eeb('0x40')]};return db[_0x4eeb('0x2f')]['count'](_0x42fe7f)['then'](function(_0x5c5dec){_0x528e59['count']=_0x5c5dec;if(_0x445147['query'][_0x4eeb('0x43')]){_0x1c2ce6[_0x4eeb('0x44')]=[{'all':!![]}];}return db[_0x4eeb('0x2f')][_0x4eeb('0x45')](_0x1c2ce6);})['then'](function(_0x4f0ed3){_0x528e59[_0x4eeb('0x46')]=_0x4f0ed3;return _0x528e59;})[_0x4eeb('0x27')](respondWithFilteredResult(_0x3f68de,_0x1c2ce6))[_0x4eeb('0x47')](handleError(_0x3f68de,null));};exports[_0x4eeb('0x48')]=function(_0x2293f0,_0x2b6bd3){var _0x519b13={'raw':![],'where':{'id':_0x2293f0[_0x4eeb('0x49')]['id']}},_0xf4e661={};_0xf4e661['model']=_['keys'](db[_0x4eeb('0x2f')][_0x4eeb('0x30')]);_0xf4e661[_0x4eeb('0x35')]=_['keys'](_0x2293f0[_0x4eeb('0x35')]);_0xf4e661['filters']=_[_0x4eeb('0x38')](_0xf4e661['model'],_0xf4e661['query']);_0x519b13['attributes']=_[_0x4eeb('0x38')](_0xf4e661['model'],qs[_0x4eeb('0x3a')](_0x2293f0['query'][_0x4eeb('0x3a')]));_0x519b13[_0x4eeb('0x39')]=_0x519b13[_0x4eeb('0x39')][_0x4eeb('0x3b')]?_0x519b13[_0x4eeb('0x39')]:_0xf4e661[_0x4eeb('0x33')];if(_0x2293f0[_0x4eeb('0x35')][_0x4eeb('0x43')]){_0x519b13[_0x4eeb('0x44')]=[{'all':!![]}];}_0x519b13=_[_0x4eeb('0x41')]({},_0x519b13,_0x2293f0[_0x4eeb('0x42')]);return db['Dashboard'][_0x4eeb('0x4a')](_0x519b13)[_0x4eeb('0x27')](handleEntityNotFound(_0x2b6bd3,null))[_0x4eeb('0x27')](respondWithResult(_0x2b6bd3,null))[_0x4eeb('0x47')](handleError(_0x2b6bd3,null));};exports[_0x4eeb('0x4b')]=function(_0x37166e,_0x3ca608){return db['Dashboard'][_0x4eeb('0x4b')](_0x37166e[_0x4eeb('0x4c')],{})[_0x4eeb('0x27')](function(_0x149b8f){var _0x268ea3=_0x37166e[_0x4eeb('0x4d')]['get']({'plain':!![]});if(!_0x268ea3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x268ea3[_0x4eeb('0x4e')]==='user'){var _0x3609b7=_0x149b8f[_0x4eeb('0x4f')]({'plain':!![]});var _0x5f3e77=_0x4eeb('0x29');return db[_0x4eeb('0x50')]['find']({'where':{'name':_0x5f3e77,'userProfileId':_0x268ea3['userProfileId']},'raw':!![]})[_0x4eeb('0x27')](function(_0x296e7b){if(_0x296e7b&&_0x296e7b[_0x4eeb('0x51')]===0x0){return db['UserProfileResource']['create']({'name':_0x3609b7['name'],'resourceId':_0x3609b7['id'],'type':_0x296e7b[_0x4eeb('0x2c')],'sectionId':_0x296e7b['id']},{})[_0x4eeb('0x27')](function(){return _0x149b8f;});}else{return _0x149b8f;}})[_0x4eeb('0x47')](function(_0x15b8f2){logger[_0x4eeb('0x2b')](_0x4eeb('0x52'),_0x15b8f2);throw _0x15b8f2;});}return _0x149b8f;})[_0x4eeb('0x27')](respondWithResult(_0x3ca608,0xc9))[_0x4eeb('0x47')](handleError(_0x3ca608,null));};exports['clone']=function(_0x28469c,_0x3b0f19){var _0x4346c8={'where':{'id':_0x28469c[_0x4eeb('0x49')]['id']}},_0x594a2e={};_0x594a2e[_0x4eeb('0x33')]=_[_0x4eeb('0x36')](db[_0x4eeb('0x2f')][_0x4eeb('0x30')]);_0x4346c8[_0x4eeb('0x39')]=_['intersection'](_0x594a2e[_0x4eeb('0x33')],qs['fields'](_0x28469c[_0x4eeb('0x35')][_0x4eeb('0x3a')]));_0x4346c8[_0x4eeb('0x39')]=_0x4346c8[_0x4eeb('0x39')]['length']?_0x4346c8['attributes']:_0x594a2e[_0x4eeb('0x33')];if(_0x28469c[_0x4eeb('0x35')]['includeAll']){_0x4346c8[_0x4eeb('0x44')]=[{'all':!![]}];}_0x4346c8=_[_0x4eeb('0x41')]({},_0x4346c8,_0x28469c[_0x4eeb('0x42')]);return db[_0x4eeb('0x2f')][_0x4eeb('0x4a')](_0x4346c8)['then'](handleEntityNotFound(_0x3b0f19,null))[_0x4eeb('0x27')](function(_0x3ba2b9){if(_0x3ba2b9){var _0x5484a3=_0x3ba2b9['get']({'plain':!![]});_0x5484a3=qs['omit'](_0x5484a3,['id',_0x4eeb('0x53'),_0x4eeb('0x54')]);_0x28469c[_0x4eeb('0x4c')]=_['omit'](_0x28469c[_0x4eeb('0x4c')],['id','createdAt','updatedAt']);return db[_0x4eeb('0x2f')][_0x4eeb('0x4b')](_[_0x4eeb('0x41')](_0x5484a3,_0x28469c[_0x4eeb('0x4c')]),{'include':_0x28469c[_0x4eeb('0x35')]['includeAll']?[{'all':!![]}]:undefined})[_0x4eeb('0x27')](function(_0x3cde14){var _0xc205e2=_0x28469c[_0x4eeb('0x4d')][_0x4eeb('0x4f')]({'plain':!![]});if(!_0xc205e2)throw new Error(_0x4eeb('0x55'));if(_0xc205e2[_0x4eeb('0x4e')]===_0x4eeb('0x4d')){var _0x199592=_0x3cde14['get']({'plain':!![]});var _0x1fdb5f=_0x4eeb('0x29');return db[_0x4eeb('0x50')][_0x4eeb('0x4a')]({'where':{'name':_0x1fdb5f,'userProfileId':_0xc205e2['userProfileId']},'raw':!![]})[_0x4eeb('0x27')](function(_0x28320d){if(_0x28320d&&_0x28320d['autoAssociation']===0x0){return db[_0x4eeb('0x56')][_0x4eeb('0x4b')]({'name':_0x199592[_0x4eeb('0x2c')],'resourceId':_0x199592['id'],'type':_0x28320d[_0x4eeb('0x2c')],'sectionId':_0x28320d['id']},{})[_0x4eeb('0x27')](function(){return _0x3cde14;});}else{return _0x3cde14;}})['catch'](function(_0x54c9bf){logger[_0x4eeb('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x54c9bf);throw _0x54c9bf;});}return _0x3cde14;});}})[_0x4eeb('0x27')](respondWithResult(_0x3b0f19,0xc9))[_0x4eeb('0x47')](handleError(_0x3b0f19,null));};exports[_0x4eeb('0x26')]=function(_0x44b0d5,_0x557dbc){if(_0x44b0d5[_0x4eeb('0x4c')]['id']){delete _0x44b0d5[_0x4eeb('0x4c')]['id'];}return db[_0x4eeb('0x2f')]['find']({'where':{'id':_0x44b0d5[_0x4eeb('0x49')]['id']}})[_0x4eeb('0x27')](handleEntityNotFound(_0x557dbc,null))[_0x4eeb('0x27')](saveUpdates(_0x44b0d5['body'],null))[_0x4eeb('0x27')](respondWithResult(_0x557dbc,null))[_0x4eeb('0x47')](handleError(_0x557dbc,null));};exports[_0x4eeb('0x28')]=function(_0x58e431,_0x2a025b){return db[_0x4eeb('0x2f')]['find']({'where':{'id':_0x58e431[_0x4eeb('0x49')]['id']}})[_0x4eeb('0x27')](handleEntityNotFound(_0x2a025b,null))[_0x4eeb('0x27')](removeEntity(_0x2a025b,null))[_0x4eeb('0x47')](handleError(_0x2a025b,null));};function widgetAttributes(_0x2edd77){try{switch(_0x2edd77[_0x4eeb('0x57')]){case'iframe':return[{'name':'attrUrl','value':_0x2edd77[_0x4eeb('0x58')]||(_0x2edd77[_0x4eeb('0x59')]&&_0x2edd77['attrs'][0x0]?_0x2edd77[_0x4eeb('0x59')][0x0][_0x4eeb('0x5a')]:undefined)||'https://'}];case _0x4eeb('0x5b'):return[{'name':_0x4eeb('0x5c'),'value':_0x2edd77[_0x4eeb('0x5c')]||(_0x2edd77[_0x4eeb('0x59')]&&_0x2edd77['attrs'][0x0]?_0x2edd77['attrs'][0x0][_0x4eeb('0x5a')]:undefined)||''}];case _0x4eeb('0x5d'):return[{'name':_0x4eeb('0x5e'),'value':_0x2edd77[_0x4eeb('0x5e')]||(_0x2edd77[_0x4eeb('0x59')]&&_0x2edd77['attrs'][0x0]?_0x2edd77[_0x4eeb('0x59')][0x0][_0x4eeb('0x5a')]:undefined)||'HH:mm:ss'},{'name':_0x4eeb('0x5f'),'value':_0x2edd77[_0x4eeb('0x5f')]||(_0x2edd77[_0x4eeb('0x59')]&&_0x2edd77[_0x4eeb('0x59')][0x1]?_0x2edd77[_0x4eeb('0x59')][0x1]['value']:undefined)||_0x4eeb('0x60')},{'name':_0x4eeb('0x61'),'value':_0x2edd77[_0x4eeb('0x61')]||(_0x2edd77[_0x4eeb('0x59')]&&_0x2edd77['attrs'][0x2]?_0x2edd77[_0x4eeb('0x59')][0x2][_0x4eeb('0x5a')]:undefined)||0xc}];case _0x4eeb('0x62'):return[{'name':_0x4eeb('0x63'),'value':_0x2edd77[_0x4eeb('0x63')]||(_0x2edd77[_0x4eeb('0x59')]&&_0x2edd77[_0x4eeb('0x59')][0x0]?_0x2edd77['attrs'][0x0][_0x4eeb('0x5a')]:undefined)||_0x4eeb('0x64')},{'name':'attrVoiceQueues','value':_0x2edd77[_0x4eeb('0x65')]||(_0x2edd77[_0x4eeb('0x59')]&&_0x2edd77[_0x4eeb('0x59')][0x1]?_0x2edd77[_0x4eeb('0x59')][0x1][_0x4eeb('0x5a')]:undefined)||[]},{'name':'attrFontSize','value':_0x2edd77[_0x4eeb('0x61')]||(_0x2edd77[_0x4eeb('0x59')]&&_0x2edd77[_0x4eeb('0x59')][0x2]?_0x2edd77[_0x4eeb('0x59')][0x2]['value']:undefined)||0x14}];case _0x4eeb('0x66'):case _0x4eeb('0x67'):return[{'name':'attrSerie1','value':_0x2edd77[_0x4eeb('0x68')]||(_0x2edd77['attrs']&&_0x2edd77[_0x4eeb('0x59')][0x0]?_0x2edd77['attrs'][0x0][_0x4eeb('0x5a')]:undefined)||_0x4eeb('0x64')},{'name':_0x4eeb('0x69'),'value':_0x2edd77['attrSerie2']||(_0x2edd77[_0x4eeb('0x59')]&&_0x2edd77['attrs'][0x1]?_0x2edd77[_0x4eeb('0x59')][0x1]['value']:undefined)||null},{'name':'attrSerie3','value':_0x2edd77[_0x4eeb('0x6a')]||(_0x2edd77[_0x4eeb('0x59')]&&_0x2edd77['attrs'][0x2]?_0x2edd77[_0x4eeb('0x59')][0x2][_0x4eeb('0x5a')]:undefined)||null},{'name':_0x4eeb('0x65'),'value':_0x2edd77['attrVoiceQueues']||(_0x2edd77[_0x4eeb('0x59')]&&_0x2edd77[_0x4eeb('0x59')][0x3]?_0x2edd77['attrs'][0x3]['value']:undefined)||[]}];case _0x4eeb('0x6b'):return[{'name':'attrReport','type':_0x2edd77['reportType']||(_0x2edd77[_0x4eeb('0x59')]&&_0x2edd77[_0x4eeb('0x59')][0x0]?_0x2edd77[_0x4eeb('0x59')][0x0][_0x4eeb('0x57')]:undefined)||null,'value':_0x2edd77[_0x4eeb('0x6c')]||(_0x2edd77[_0x4eeb('0x59')]&&_0x2edd77[_0x4eeb('0x59')][0x0]?_0x2edd77[_0x4eeb('0x59')][0x0][_0x4eeb('0x5a')]:undefined)||null},{'name':_0x4eeb('0x6d'),'value':_0x2edd77[_0x4eeb('0x6d')]||(_0x2edd77['attrs']&&_0x2edd77[_0x4eeb('0x59')][0x1]?_0x2edd77['attrs'][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x250822){logger[_0x4eeb('0x2b')](_0x4eeb('0x6e'),JSON['stringify'](_0x250822));return[];}}exports[_0x4eeb('0x6f')]=function(_0x5a177a,_0x9e1917,_0x5342ad){if(_0x5a177a['body']['id']){delete _0x5a177a[_0x4eeb('0x4c')]['id'];}return db[_0x4eeb('0x2f')][_0x4eeb('0x4a')]({'where':{'id':_0x5a177a['params']['id']}})[_0x4eeb('0x27')](handleEntityNotFound(_0x9e1917,null))['then'](function(_0x4b7bd2){if(_0x4b7bd2){_0x5a177a[_0x4eeb('0x4c')][_0x4eeb('0x70')]=_0x4b7bd2['id'];_0x5a177a[_0x4eeb('0x4c')][_0x4eeb('0x59')]=widgetAttributes(_0x5a177a[_0x4eeb('0x4c')]);return db[_0x4eeb('0x71')][_0x4eeb('0x4b')](_0x5a177a[_0x4eeb('0x4c')]);}})[_0x4eeb('0x27')](respondWithResult(_0x9e1917,null))[_0x4eeb('0x47')](handleError(_0x9e1917,null));};exports[_0x4eeb('0x72')]=function(_0x1ab605,_0x39035d,_0x10ace8){var _0xbeecf1={};var _0x190deb={};var _0x3031fc;var _0xae394;return db[_0x4eeb('0x2f')][_0x4eeb('0x73')]({'where':{'id':_0x1ab605[_0x4eeb('0x49')]['id']}})[_0x4eeb('0x27')](handleEntityNotFound(_0x39035d,null))[_0x4eeb('0x27')](function(_0xdb458b){if(_0xdb458b){_0x3031fc=_0xdb458b;_0x190deb[_0x4eeb('0x33')]=_[_0x4eeb('0x36')](db['DashboardItem'][_0x4eeb('0x30')]);_0x190deb[_0x4eeb('0x35')]=_[_0x4eeb('0x36')](_0x1ab605['query']);_0x190deb[_0x4eeb('0x37')]=_[_0x4eeb('0x38')](_0x190deb[_0x4eeb('0x33')],_0x190deb[_0x4eeb('0x35')]);_0xbeecf1['attributes']=_[_0x4eeb('0x38')](_0x190deb['model'],qs[_0x4eeb('0x3a')](_0x1ab605[_0x4eeb('0x35')]['fields']));_0xbeecf1[_0x4eeb('0x39')]=_0xbeecf1[_0x4eeb('0x39')][_0x4eeb('0x3b')]?_0xbeecf1[_0x4eeb('0x39')]:_0x190deb[_0x4eeb('0x33')];_0xbeecf1[_0x4eeb('0x3d')]=qs[_0x4eeb('0x3e')](_0x1ab605['query'][_0x4eeb('0x3e')]);_0xbeecf1[_0x4eeb('0x40')]=qs[_0x4eeb('0x37')](_[_0x4eeb('0x74')](_0x1ab605['query'],_0x190deb[_0x4eeb('0x37')]));if(_0x1ab605['query'][_0x4eeb('0x3f')]){_0xbeecf1[_0x4eeb('0x40')]=_[_0x4eeb('0x41')](_0xbeecf1[_0x4eeb('0x40')],{'$or':_[_0x4eeb('0x34')](_0xbeecf1[_0x4eeb('0x39')],function(_0x448645){var _0x1c96d5={};_0x1c96d5[_0x448645]={'$like':'%'+_0x1ab605[_0x4eeb('0x35')][_0x4eeb('0x3f')]+'%'};return _0x1c96d5;})});}_0xbeecf1=_['merge']({},_0xbeecf1,_0x1ab605[_0x4eeb('0x42')]);return _0x3031fc[_0x4eeb('0x72')](_0xbeecf1);}})['then'](function(_0x5c6119){if(_0x5c6119){_0xae394=_0x5c6119['length'];if(!_0x1ab605[_0x4eeb('0x35')][_0x4eeb('0x3c')](_0x4eeb('0x75'))){_0xbeecf1[_0x4eeb('0x20')]=qs[_0x4eeb('0x20')](_0x1ab605['query'][_0x4eeb('0x20')]);_0xbeecf1[_0x4eeb('0x1e')]=qs[_0x4eeb('0x1e')](_0x1ab605['query'][_0x4eeb('0x1e')]);}return _0x3031fc[_0x4eeb('0x72')](_0xbeecf1);}})[_0x4eeb('0x27')](function(_0x498535){if(_0x498535){return _0x498535?{'count':_0xae394,'rows':_0x498535}:null;}})[_0x4eeb('0x27')](respondWithResult(_0x39035d,null))[_0x4eeb('0x47')](handleError(_0x39035d,null));};
\ No newline at end of file
+var _0x5c3d=['./dashboard.socket','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','get','CustomDashboards','UserProfileResource','sendStatus','error','stack','name','send','index','map','Dashboard','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','updatedAt','omit','iframe','attrUrl','attrs','custom','attrPath','value','clock','attrHourFormat','HH:mm:ss','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','pie-chart','attrSerie1','attrSerie3','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','DashboardItem','findOne','getItems','eml-format','rimraf','fast-json-patch','request-promise','moment','util','sox','to-csv','fs-extra','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','redis','defaults','socket.io-emitter'];(function(_0x235b31,_0x19f6b3){var _0x49d926=function(_0x3ef6e8){while(--_0x3ef6e8){_0x235b31['push'](_0x235b31['shift']());}};_0x49d926(++_0x19f6b3);}(_0x5c3d,0xd3));var _0xd5c3=function(_0x191c92,_0x38a4fc){_0x191c92=_0x191c92-0x0;var _0x574178=_0x5c3d[_0x191c92];return _0x574178;};'use strict';var emlformat=require(_0xd5c3('0x0'));var rimraf=require(_0xd5c3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd5c3('0x2'));var rp=require(_0xd5c3('0x3'));var moment=require(_0xd5c3('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd5c3('0x5'));var path=require('path');var sox=require(_0xd5c3('0x6'));var csv=require(_0xd5c3('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd5c3('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xd5c3('0x9'));var jsforce=require(_0xd5c3('0xa'));var deskjs=require(_0xd5c3('0xb'));var toCsv=require(_0xd5c3('0x7'));var querystring=require(_0xd5c3('0xc'));var Papa=require(_0xd5c3('0xd'));var Redis=require(_0xd5c3('0xe'));var authService=require(_0xd5c3('0xf'));var qs=require(_0xd5c3('0x10'));var as=require(_0xd5c3('0x11'));var hardwareService=require(_0xd5c3('0x12'));var logger=require(_0xd5c3('0x13'))(_0xd5c3('0x14'));var utils=require(_0xd5c3('0x15'));var config=require(_0xd5c3('0x16'));var licenseUtil=require(_0xd5c3('0x17'));var db=require('../../mysqldb')['db'];config[_0xd5c3('0x18')]=_[_0xd5c3('0x19')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xd5c3('0x1a'))(new Redis(config['redis']));require(_0xd5c3('0x1b'))['register'](socket);function respondWithStatusCode(_0x5b2298,_0x2110f7){_0x2110f7=_0x2110f7||0xcc;return function(_0x21c6f2){if(_0x21c6f2){return _0x5b2298['sendStatus'](_0x2110f7);}return _0x5b2298[_0xd5c3('0x1c')](_0x2110f7)[_0xd5c3('0x1d')]();};}function respondWithResult(_0x366fb8,_0x5b8fa0){_0x5b8fa0=_0x5b8fa0||0xc8;return function(_0x575bc3){if(_0x575bc3){return _0x366fb8[_0xd5c3('0x1c')](_0x5b8fa0)[_0xd5c3('0x1e')](_0x575bc3);}};}function respondWithFilteredResult(_0x239812,_0x2ea022){return function(_0x1c26c6){if(_0x1c26c6){var _0x327184=typeof _0x2ea022[_0xd5c3('0x1f')]==='undefined'&&typeof _0x2ea022[_0xd5c3('0x20')]===_0xd5c3('0x21');var _0x3d1854=_0x1c26c6[_0xd5c3('0x22')];var _0x2a2463=_0x327184?0x0:_0x2ea022['offset'];var _0x2a0814=_0x327184?_0x1c26c6[_0xd5c3('0x22')]:_0x2ea022['offset']+_0x2ea022[_0xd5c3('0x20')];var _0x5140ba;if(_0x2a0814>=_0x3d1854){_0x2a0814=_0x3d1854;_0x5140ba=0xc8;}else{_0x5140ba=0xce;}_0x239812[_0xd5c3('0x1c')](_0x5140ba);return _0x239812[_0xd5c3('0x23')](_0xd5c3('0x24'),_0x2a2463+'-'+_0x2a0814+'/'+_0x3d1854)['json'](_0x1c26c6);}return null;};}function patchUpdates(_0x3af170){return function(_0x5395cc){try{jsonpatch[_0xd5c3('0x25')](_0x5395cc,_0x3af170,!![]);}catch(_0x92030e){return BPromise[_0xd5c3('0x26')](_0x92030e);}return _0x5395cc[_0xd5c3('0x27')]();};}function saveUpdates(_0x58b4c8,_0xe6d2db){return function(_0x3619a8){if(_0x3619a8){return _0x3619a8['update'](_0x58b4c8)[_0xd5c3('0x28')](function(_0x248fd1){return _0x248fd1;});}return null;};}function removeEntity(_0x2b5dc5,_0xd1dfc7){return function(_0x59c294){if(_0x59c294){return _0x59c294[_0xd5c3('0x29')]()[_0xd5c3('0x28')](function(){var _0x9096c4=_0x59c294[_0xd5c3('0x2a')]({'plain':!![]});var _0x3f779f=_0xd5c3('0x2b');return db[_0xd5c3('0x2c')][_0xd5c3('0x29')]({'where':{'type':_0x3f779f,'resourceId':_0x9096c4['id']}})[_0xd5c3('0x28')](function(){return _0x59c294;});})[_0xd5c3('0x28')](function(){_0x2b5dc5[_0xd5c3('0x1c')](0xcc)[_0xd5c3('0x1d')]();});}};}function handleEntityNotFound(_0x1413d3,_0x3a10a9){return function(_0x2e3711){if(!_0x2e3711){_0x1413d3[_0xd5c3('0x2d')](0x194);}return _0x2e3711;};}function handleError(_0x149348,_0x1d72df){_0x1d72df=_0x1d72df||0x1f4;return function(_0x34e079){logger[_0xd5c3('0x2e')](_0x34e079[_0xd5c3('0x2f')]);if(_0x34e079[_0xd5c3('0x30')]){delete _0x34e079[_0xd5c3('0x30')];}_0x149348[_0xd5c3('0x1c')](_0x1d72df)[_0xd5c3('0x31')](_0x34e079);};}exports[_0xd5c3('0x32')]=function(_0x505b6d,_0x3d6586){var _0x52a7c2={},_0x65eda7={},_0x2c1062={'count':0x0,'rows':[]};var _0x50485e=_[_0xd5c3('0x33')](db[_0xd5c3('0x34')]['rawAttributes'],function(_0x5c2c43){return{'name':_0x5c2c43[_0xd5c3('0x35')],'type':_0x5c2c43[_0xd5c3('0x36')][_0xd5c3('0x37')]};});_0x65eda7[_0xd5c3('0x38')]=_[_0xd5c3('0x33')](_0x50485e,_0xd5c3('0x30'));_0x65eda7[_0xd5c3('0x39')]=_[_0xd5c3('0x3a')](_0x505b6d[_0xd5c3('0x39')]);_0x65eda7['filters']=_[_0xd5c3('0x3b')](_0x65eda7['model'],_0x65eda7[_0xd5c3('0x39')]);_0x52a7c2[_0xd5c3('0x3c')]=_[_0xd5c3('0x3b')](_0x65eda7[_0xd5c3('0x38')],qs[_0xd5c3('0x3d')](_0x505b6d[_0xd5c3('0x39')][_0xd5c3('0x3d')]));_0x52a7c2['attributes']=_0x52a7c2[_0xd5c3('0x3c')][_0xd5c3('0x3e')]?_0x52a7c2[_0xd5c3('0x3c')]:_0x65eda7['model'];if(!_0x505b6d[_0xd5c3('0x39')][_0xd5c3('0x3f')](_0xd5c3('0x40'))){_0x52a7c2[_0xd5c3('0x20')]=qs['limit'](_0x505b6d[_0xd5c3('0x39')]['limit']);_0x52a7c2[_0xd5c3('0x1f')]=qs['offset'](_0x505b6d[_0xd5c3('0x39')][_0xd5c3('0x1f')]);}_0x52a7c2[_0xd5c3('0x41')]=qs['sort'](_0x505b6d[_0xd5c3('0x39')][_0xd5c3('0x42')]);_0x52a7c2[_0xd5c3('0x43')]=qs[_0xd5c3('0x44')](_[_0xd5c3('0x45')](_0x505b6d[_0xd5c3('0x39')],_0x65eda7[_0xd5c3('0x44')]),_0x50485e);if(_0x505b6d['query'][_0xd5c3('0x46')]){_0x52a7c2[_0xd5c3('0x43')]=_[_0xd5c3('0x47')](_0x52a7c2[_0xd5c3('0x43')],{'$or':_[_0xd5c3('0x33')](_0x50485e,function(_0x34aefe){if(_0x34aefe['type']!=='VIRTUAL'){var _0xf3e005={};_0xf3e005[_0x34aefe[_0xd5c3('0x30')]]={'$like':'%'+_0x505b6d['query'][_0xd5c3('0x46')]+'%'};return _0xf3e005;}})});}_0x52a7c2=_['merge']({},_0x52a7c2,_0x505b6d[_0xd5c3('0x48')]);var _0x3f5c68={'where':_0x52a7c2['where']};return db[_0xd5c3('0x34')]['count'](_0x3f5c68)['then'](function(_0x3b8737){_0x2c1062['count']=_0x3b8737;if(_0x505b6d[_0xd5c3('0x39')][_0xd5c3('0x49')]){_0x52a7c2[_0xd5c3('0x4a')]=[{'all':!![]}];}return db[_0xd5c3('0x34')][_0xd5c3('0x4b')](_0x52a7c2);})[_0xd5c3('0x28')](function(_0x14f369){_0x2c1062[_0xd5c3('0x4c')]=_0x14f369;return _0x2c1062;})[_0xd5c3('0x28')](respondWithFilteredResult(_0x3d6586,_0x52a7c2))[_0xd5c3('0x4d')](handleError(_0x3d6586,null));};exports[_0xd5c3('0x4e')]=function(_0x5573a0,_0x328bf0){var _0x1a270d={'raw':![],'where':{'id':_0x5573a0[_0xd5c3('0x4f')]['id']}},_0x38dace={};_0x38dace[_0xd5c3('0x38')]=_['keys'](db[_0xd5c3('0x34')][_0xd5c3('0x50')]);_0x38dace['query']=_[_0xd5c3('0x3a')](_0x5573a0[_0xd5c3('0x39')]);_0x38dace[_0xd5c3('0x44')]=_[_0xd5c3('0x3b')](_0x38dace[_0xd5c3('0x38')],_0x38dace[_0xd5c3('0x39')]);_0x1a270d[_0xd5c3('0x3c')]=_[_0xd5c3('0x3b')](_0x38dace[_0xd5c3('0x38')],qs[_0xd5c3('0x3d')](_0x5573a0[_0xd5c3('0x39')][_0xd5c3('0x3d')]));_0x1a270d[_0xd5c3('0x3c')]=_0x1a270d[_0xd5c3('0x3c')]['length']?_0x1a270d[_0xd5c3('0x3c')]:_0x38dace[_0xd5c3('0x38')];if(_0x5573a0['query']['includeAll']){_0x1a270d['include']=[{'all':!![]}];}_0x1a270d=_[_0xd5c3('0x47')]({},_0x1a270d,_0x5573a0[_0xd5c3('0x48')]);return db['Dashboard']['find'](_0x1a270d)[_0xd5c3('0x28')](handleEntityNotFound(_0x328bf0,null))[_0xd5c3('0x28')](respondWithResult(_0x328bf0,null))['catch'](handleError(_0x328bf0,null));};exports[_0xd5c3('0x51')]=function(_0x368d44,_0xdb901b){return db[_0xd5c3('0x34')][_0xd5c3('0x51')](_0x368d44[_0xd5c3('0x52')],{})[_0xd5c3('0x28')](function(_0x4dc3f8){var _0x45b0df=_0x368d44[_0xd5c3('0x53')][_0xd5c3('0x2a')]({'plain':!![]});if(!_0x45b0df)throw new Error(_0xd5c3('0x54'));if(_0x45b0df[_0xd5c3('0x55')]===_0xd5c3('0x53')){var _0x1fb612=_0x4dc3f8[_0xd5c3('0x2a')]({'plain':!![]});var _0x181c71=_0xd5c3('0x2b');return db['UserProfileSection'][_0xd5c3('0x56')]({'where':{'name':_0x181c71,'userProfileId':_0x45b0df[_0xd5c3('0x57')]},'raw':!![]})[_0xd5c3('0x28')](function(_0x5e2728){if(_0x5e2728&&_0x5e2728[_0xd5c3('0x58')]===0x0){return db['UserProfileResource']['create']({'name':_0x1fb612['name'],'resourceId':_0x1fb612['id'],'type':_0x5e2728['name'],'sectionId':_0x5e2728['id']},{})['then'](function(){return _0x4dc3f8;});}else{return _0x4dc3f8;}})[_0xd5c3('0x4d')](function(_0x2a018a){logger[_0xd5c3('0x2e')](_0xd5c3('0x59'),_0x2a018a);throw _0x2a018a;});}return _0x4dc3f8;})[_0xd5c3('0x28')](respondWithResult(_0xdb901b,0xc9))[_0xd5c3('0x4d')](handleError(_0xdb901b,null));};exports[_0xd5c3('0x5a')]=function(_0x49e429,_0x5b842a){var _0x2a8f6d={'where':{'id':_0x49e429[_0xd5c3('0x4f')]['id']}},_0xcf4342={};_0xcf4342[_0xd5c3('0x38')]=_['keys'](db[_0xd5c3('0x34')][_0xd5c3('0x50')]);_0x2a8f6d[_0xd5c3('0x3c')]=_[_0xd5c3('0x3b')](_0xcf4342['model'],qs[_0xd5c3('0x3d')](_0x49e429[_0xd5c3('0x39')][_0xd5c3('0x3d')]));_0x2a8f6d[_0xd5c3('0x3c')]=_0x2a8f6d[_0xd5c3('0x3c')][_0xd5c3('0x3e')]?_0x2a8f6d[_0xd5c3('0x3c')]:_0xcf4342[_0xd5c3('0x38')];if(_0x49e429[_0xd5c3('0x39')][_0xd5c3('0x49')]){_0x2a8f6d[_0xd5c3('0x4a')]=[{'all':!![]}];}_0x2a8f6d=_[_0xd5c3('0x47')]({},_0x2a8f6d,_0x49e429[_0xd5c3('0x48')]);return db[_0xd5c3('0x34')][_0xd5c3('0x56')](_0x2a8f6d)[_0xd5c3('0x28')](handleEntityNotFound(_0x5b842a,null))[_0xd5c3('0x28')](function(_0x29adcd){if(_0x29adcd){var _0x4fd127=_0x29adcd[_0xd5c3('0x2a')]({'plain':!![]});_0x4fd127=qs['omit'](_0x4fd127,['id',_0xd5c3('0x5b'),_0xd5c3('0x5c')]);_0x49e429[_0xd5c3('0x52')]=_[_0xd5c3('0x5d')](_0x49e429[_0xd5c3('0x52')],['id',_0xd5c3('0x5b'),_0xd5c3('0x5c')]);return db[_0xd5c3('0x34')]['create'](_[_0xd5c3('0x47')](_0x4fd127,_0x49e429[_0xd5c3('0x52')]),{'include':_0x49e429[_0xd5c3('0x39')]['includeAll']?[{'all':!![]}]:undefined})[_0xd5c3('0x28')](function(_0x5f356){var _0x46a069=_0x49e429[_0xd5c3('0x53')][_0xd5c3('0x2a')]({'plain':!![]});if(!_0x46a069)throw new Error(_0xd5c3('0x54'));if(_0x46a069[_0xd5c3('0x55')]===_0xd5c3('0x53')){var _0x260bec=_0x5f356[_0xd5c3('0x2a')]({'plain':!![]});var _0xcf40a7=_0xd5c3('0x2b');return db['UserProfileSection'][_0xd5c3('0x56')]({'where':{'name':_0xcf40a7,'userProfileId':_0x46a069[_0xd5c3('0x57')]},'raw':!![]})[_0xd5c3('0x28')](function(_0x251e70){if(_0x251e70&&_0x251e70[_0xd5c3('0x58')]===0x0){return db[_0xd5c3('0x2c')]['create']({'name':_0x260bec['name'],'resourceId':_0x260bec['id'],'type':_0x251e70[_0xd5c3('0x30')],'sectionId':_0x251e70['id']},{})[_0xd5c3('0x28')](function(){return _0x5f356;});}else{return _0x5f356;}})['catch'](function(_0x1b9207){logger[_0xd5c3('0x2e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1b9207);throw _0x1b9207;});}return _0x5f356;});}})[_0xd5c3('0x28')](respondWithResult(_0x5b842a,0xc9))[_0xd5c3('0x4d')](handleError(_0x5b842a,null));};exports['update']=function(_0x5cb8b8,_0x5bd35b){if(_0x5cb8b8[_0xd5c3('0x52')]['id']){delete _0x5cb8b8[_0xd5c3('0x52')]['id'];}return db[_0xd5c3('0x34')][_0xd5c3('0x56')]({'where':{'id':_0x5cb8b8[_0xd5c3('0x4f')]['id']}})['then'](handleEntityNotFound(_0x5bd35b,null))[_0xd5c3('0x28')](saveUpdates(_0x5cb8b8['body'],null))[_0xd5c3('0x28')](respondWithResult(_0x5bd35b,null))[_0xd5c3('0x4d')](handleError(_0x5bd35b,null));};exports[_0xd5c3('0x29')]=function(_0x4645e,_0x15048c){return db[_0xd5c3('0x34')]['find']({'where':{'id':_0x4645e[_0xd5c3('0x4f')]['id']}})[_0xd5c3('0x28')](handleEntityNotFound(_0x15048c,null))[_0xd5c3('0x28')](removeEntity(_0x15048c,null))[_0xd5c3('0x4d')](handleError(_0x15048c,null));};function widgetAttributes(_0x3d3c9f){try{switch(_0x3d3c9f['type']){case _0xd5c3('0x5e'):return[{'name':_0xd5c3('0x5f'),'value':_0x3d3c9f[_0xd5c3('0x5f')]||(_0x3d3c9f[_0xd5c3('0x60')]&&_0x3d3c9f[_0xd5c3('0x60')][0x0]?_0x3d3c9f['attrs'][0x0]['value']:undefined)||'https://'}];case _0xd5c3('0x61'):return[{'name':_0xd5c3('0x62'),'value':_0x3d3c9f[_0xd5c3('0x62')]||(_0x3d3c9f[_0xd5c3('0x60')]&&_0x3d3c9f[_0xd5c3('0x60')][0x0]?_0x3d3c9f[_0xd5c3('0x60')][0x0][_0xd5c3('0x63')]:undefined)||''}];case _0xd5c3('0x64'):return[{'name':_0xd5c3('0x65'),'value':_0x3d3c9f[_0xd5c3('0x65')]||(_0x3d3c9f[_0xd5c3('0x60')]&&_0x3d3c9f['attrs'][0x0]?_0x3d3c9f[_0xd5c3('0x60')][0x0][_0xd5c3('0x63')]:undefined)||_0xd5c3('0x66')},{'name':'attrTimezone','value':_0x3d3c9f['attrTimezone']||(_0x3d3c9f[_0xd5c3('0x60')]&&_0x3d3c9f[_0xd5c3('0x60')][0x1]?_0x3d3c9f[_0xd5c3('0x60')][0x1][_0xd5c3('0x63')]:undefined)||_0xd5c3('0x67')},{'name':_0xd5c3('0x68'),'value':_0x3d3c9f[_0xd5c3('0x68')]||(_0x3d3c9f[_0xd5c3('0x60')]&&_0x3d3c9f[_0xd5c3('0x60')][0x2]?_0x3d3c9f[_0xd5c3('0x60')][0x2][_0xd5c3('0x63')]:undefined)||0xc}];case'counter':return[{'name':_0xd5c3('0x69'),'value':_0x3d3c9f[_0xd5c3('0x69')]||(_0x3d3c9f[_0xd5c3('0x60')]&&_0x3d3c9f['attrs'][0x0]?_0x3d3c9f[_0xd5c3('0x60')][0x0][_0xd5c3('0x63')]:undefined)||_0xd5c3('0x6a')},{'name':_0xd5c3('0x6b'),'value':_0x3d3c9f[_0xd5c3('0x6b')]||(_0x3d3c9f['attrs']&&_0x3d3c9f['attrs'][0x1]?_0x3d3c9f[_0xd5c3('0x60')][0x1][_0xd5c3('0x63')]:undefined)||[]},{'name':'attrFontSize','value':_0x3d3c9f[_0xd5c3('0x68')]||(_0x3d3c9f[_0xd5c3('0x60')]&&_0x3d3c9f['attrs'][0x2]?_0x3d3c9f[_0xd5c3('0x60')][0x2][_0xd5c3('0x63')]:undefined)||0x14}];case'multibar-chart':case _0xd5c3('0x6c'):return[{'name':_0xd5c3('0x6d'),'value':_0x3d3c9f['attrSerie1']||(_0x3d3c9f[_0xd5c3('0x60')]&&_0x3d3c9f[_0xd5c3('0x60')][0x0]?_0x3d3c9f[_0xd5c3('0x60')][0x0][_0xd5c3('0x63')]:undefined)||'total'},{'name':'attrSerie2','value':_0x3d3c9f['attrSerie2']||(_0x3d3c9f[_0xd5c3('0x60')]&&_0x3d3c9f['attrs'][0x1]?_0x3d3c9f[_0xd5c3('0x60')][0x1][_0xd5c3('0x63')]:undefined)||null},{'name':_0xd5c3('0x6e'),'value':_0x3d3c9f['attrSerie3']||(_0x3d3c9f['attrs']&&_0x3d3c9f[_0xd5c3('0x60')][0x2]?_0x3d3c9f['attrs'][0x2][_0xd5c3('0x63')]:undefined)||null},{'name':_0xd5c3('0x6b'),'value':_0x3d3c9f[_0xd5c3('0x6b')]||(_0x3d3c9f[_0xd5c3('0x60')]&&_0x3d3c9f[_0xd5c3('0x60')][0x3]?_0x3d3c9f[_0xd5c3('0x60')][0x3][_0xd5c3('0x63')]:undefined)||[]}];case'web-report':return[{'name':_0xd5c3('0x6f'),'type':_0x3d3c9f[_0xd5c3('0x70')]||(_0x3d3c9f['attrs']&&_0x3d3c9f['attrs'][0x0]?_0x3d3c9f[_0xd5c3('0x60')][0x0][_0xd5c3('0x36')]:undefined)||null,'value':_0x3d3c9f[_0xd5c3('0x6f')]||(_0x3d3c9f['attrs']&&_0x3d3c9f[_0xd5c3('0x60')][0x0]?_0x3d3c9f[_0xd5c3('0x60')][0x0]['value']:undefined)||null},{'name':'attrRefresh','value':_0x3d3c9f[_0xd5c3('0x71')]||(_0x3d3c9f[_0xd5c3('0x60')]&&_0x3d3c9f['attrs'][0x1]?_0x3d3c9f[_0xd5c3('0x60')][0x1][_0xd5c3('0x63')]:undefined)||0x0}];default:return[];}}catch(_0x4d0190){logger[_0xd5c3('0x2e')](_0xd5c3('0x72'),JSON[_0xd5c3('0x73')](_0x4d0190));return[];}}exports['addItem']=function(_0x2384b4,_0x1d2822,_0x55bcb8){if(_0x2384b4[_0xd5c3('0x52')]['id']){delete _0x2384b4[_0xd5c3('0x52')]['id'];}return db[_0xd5c3('0x34')][_0xd5c3('0x56')]({'where':{'id':_0x2384b4[_0xd5c3('0x4f')]['id']}})[_0xd5c3('0x28')](handleEntityNotFound(_0x1d2822,null))['then'](function(_0x189c7e){if(_0x189c7e){_0x2384b4[_0xd5c3('0x52')]['DashboardId']=_0x189c7e['id'];_0x2384b4[_0xd5c3('0x52')][_0xd5c3('0x60')]=widgetAttributes(_0x2384b4['body']);return db[_0xd5c3('0x74')][_0xd5c3('0x51')](_0x2384b4['body']);}})[_0xd5c3('0x28')](respondWithResult(_0x1d2822,null))['catch'](handleError(_0x1d2822,null));};exports['getItems']=function(_0x14c913,_0x2b2478,_0x48cea6){var _0x4c6526={};var _0x238642={};var _0x35d861;var _0x3ebf9d;return db['Dashboard'][_0xd5c3('0x75')]({'where':{'id':_0x14c913[_0xd5c3('0x4f')]['id']}})[_0xd5c3('0x28')](handleEntityNotFound(_0x2b2478,null))[_0xd5c3('0x28')](function(_0x304a1b){if(_0x304a1b){_0x35d861=_0x304a1b;_0x238642[_0xd5c3('0x38')]=_['keys'](db[_0xd5c3('0x74')][_0xd5c3('0x50')]);_0x238642[_0xd5c3('0x39')]=_[_0xd5c3('0x3a')](_0x14c913[_0xd5c3('0x39')]);_0x238642[_0xd5c3('0x44')]=_[_0xd5c3('0x3b')](_0x238642[_0xd5c3('0x38')],_0x238642[_0xd5c3('0x39')]);_0x4c6526['attributes']=_['intersection'](_0x238642[_0xd5c3('0x38')],qs['fields'](_0x14c913['query'][_0xd5c3('0x3d')]));_0x4c6526[_0xd5c3('0x3c')]=_0x4c6526[_0xd5c3('0x3c')]['length']?_0x4c6526['attributes']:_0x238642[_0xd5c3('0x38')];_0x4c6526[_0xd5c3('0x41')]=qs[_0xd5c3('0x42')](_0x14c913[_0xd5c3('0x39')][_0xd5c3('0x42')]);_0x4c6526[_0xd5c3('0x43')]=qs[_0xd5c3('0x44')](_[_0xd5c3('0x45')](_0x14c913[_0xd5c3('0x39')],_0x238642[_0xd5c3('0x44')]));if(_0x14c913['query']['filter']){_0x4c6526['where']=_[_0xd5c3('0x47')](_0x4c6526[_0xd5c3('0x43')],{'$or':_[_0xd5c3('0x33')](_0x4c6526[_0xd5c3('0x3c')],function(_0x361756){var _0x34de10={};_0x34de10[_0x361756]={'$like':'%'+_0x14c913['query']['filter']+'%'};return _0x34de10;})});}_0x4c6526=_[_0xd5c3('0x47')]({},_0x4c6526,_0x14c913['options']);return _0x35d861['getItems'](_0x4c6526);}})[_0xd5c3('0x28')](function(_0x4f5859){if(_0x4f5859){_0x3ebf9d=_0x4f5859['length'];if(!_0x14c913[_0xd5c3('0x39')]['hasOwnProperty']('nolimit')){_0x4c6526[_0xd5c3('0x20')]=qs[_0xd5c3('0x20')](_0x14c913['query'][_0xd5c3('0x20')]);_0x4c6526['offset']=qs[_0xd5c3('0x1f')](_0x14c913[_0xd5c3('0x39')][_0xd5c3('0x1f')]);}return _0x35d861[_0xd5c3('0x76')](_0x4c6526);}})[_0xd5c3('0x28')](function(_0x1b6d04){if(_0x1b6d04){return _0x1b6d04?{'count':_0x3ebf9d,'rows':_0x1b6d04}:null;}})[_0xd5c3('0x28')](respondWithResult(_0x2b2478,null))[_0xd5c3('0x4d')](handleError(_0x2b2478,null));};
\ No newline at end of file
index a28ac5d..6c101c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x914a=['setMaxListeners','save','update','remove','emit','exports','../../mysqldb','Dashboard'];(function(_0x5447fd,_0x52a6b5){var _0x15b28a=function(_0x370d4f){while(--_0x370d4f){_0x5447fd['push'](_0x5447fd['shift']());}};_0x15b28a(++_0x52a6b5);}(_0x914a,0x18e));var _0xa914=function(_0xc721f5,_0x42404b){_0xc721f5=_0xc721f5-0x0;var _0x1bc1bd=_0x914a[_0xc721f5];return _0x1bc1bd;};'use strict';var EventEmitter=require('events');var Dashboard=require(_0xa914('0x0'))['db'][_0xa914('0x1')];var DashboardEvents=new EventEmitter();DashboardEvents[_0xa914('0x2')](0x0);var events={'afterCreate':_0xa914('0x3'),'afterUpdate':_0xa914('0x4'),'afterDestroy':_0xa914('0x5')};function emitEvent(_0x5db81e){return function(_0x479a05,_0x1e96ae,_0x52bf6f){DashboardEvents[_0xa914('0x6')](_0x5db81e+':'+_0x479a05['id'],_0x479a05);DashboardEvents['emit'](_0x5db81e,_0x479a05);_0x52bf6f(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard['hook'](e,emitEvent(event));}}module[_0xa914('0x7')]=DashboardEvents;
\ No newline at end of file
+var _0x231a=['../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x40f59c,_0x3e57b7){var _0x2202c9=function(_0xcb458){while(--_0xcb458){_0x40f59c['push'](_0x40f59c['shift']());}};_0x2202c9(++_0x3e57b7);}(_0x231a,0xc6));var _0xa231=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x231a[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require('events');var Dashboard=require(_0xa231('0x0'))['db']['Dashboard'];var DashboardEvents=new EventEmitter();DashboardEvents[_0xa231('0x1')](0x0);var events={'afterCreate':_0xa231('0x2'),'afterUpdate':_0xa231('0x3'),'afterDestroy':_0xa231('0x4')};function emitEvent(_0x3e4866){return function(_0xd97e69,_0x4e66a7,_0x5a920b){DashboardEvents[_0xa231('0x5')](_0x3e4866+':'+_0xd97e69['id'],_0xd97e69);DashboardEvents[_0xa231('0x5')](_0x3e4866,_0xd97e69);_0x5a920b(null);};}for(var e in events){if(events[_0xa231('0x6')](e)){var event=events[e];Dashboard[_0xa231('0x7')](e,emitEvent(event));}}module[_0xa231('0x8')]=DashboardEvents;
\ No newline at end of file
index fed5d9c..2c90b00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb92c=['request-promise','path','../../config/environment','./dashboard.attributes','exports','dashboards','lodash','api','moment'];(function(_0x4d5e0c,_0x5c9d85){var _0xd84cd8=function(_0x4578d0){while(--_0x4578d0){_0x4d5e0c['push'](_0x4d5e0c['shift']());}};_0xd84cd8(++_0x5c9d85);}(_0xb92c,0x72));var _0xcb92=function(_0x174a72,_0x46034c){_0x174a72=_0x174a72-0x0;var _0x32cecd=_0xb92c[_0x174a72];return _0x32cecd;};'use strict';var _=require(_0xcb92('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xcb92('0x1'));var moment=require(_0xcb92('0x2'));var BPromise=require('bluebird');var rp=require(_0xcb92('0x3'));var fs=require('fs');var path=require(_0xcb92('0x4'));var rimraf=require('rimraf');var config=require(_0xcb92('0x5'));var attributes=require(_0xcb92('0x6'));module[_0xcb92('0x7')]=function(_0x1c26ea,_0x1110da){return _0x1c26ea['define']('Dashboard',attributes,{'tableName':_0xcb92('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6313=['dashboards','util','request-promise','../../config/environment','./dashboard.attributes','exports','define'];(function(_0x3f09a3,_0x5a2624){var _0x484fb2=function(_0xf13dfe){while(--_0xf13dfe){_0x3f09a3['push'](_0x3f09a3['shift']());}};_0x484fb2(++_0x5a2624);}(_0x6313,0x135));var _0x3631=function(_0x454db3,_0xcd150e){_0x454db3=_0x454db3-0x0;var _0x3b36da=_0x6313[_0x454db3];return _0x3b36da;};'use strict';var _=require('lodash');var util=require(_0x3631('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3631('0x1'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x3631('0x2'));var attributes=require(_0x3631('0x3'));module[_0x3631('0x4')]=function(_0x5331ad,_0x4e3edb){return _0x5331ad[_0x3631('0x5')]('Dashboard',attributes,{'tableName':_0x3631('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 282b15d..aaf865d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c63=['socket.io-emitter','./dashboard.socket','register','request','then','Dashboard,\x20%s,\x20%s','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash','util','moment','bluebird','../../mysqldb','../../config/logger','client','http','redis','localhost'];(function(_0x3b2806,_0x329a73){var _0x3c10bb=function(_0x4464f4){while(--_0x4464f4){_0x3b2806['push'](_0x3b2806['shift']());}};_0x3c10bb(++_0x329a73);}(_0x9c63,0xa5));var _0x39c6=function(_0x300a4c,_0xd955ce){_0x300a4c=_0x300a4c-0x0;var _0x96e9af=_0x9c63[_0x300a4c];return _0x96e9af;};'use strict';var _=require(_0x39c6('0x0'));var util=require(_0x39c6('0x1'));var moment=require(_0x39c6('0x2'));var BPromise=require(_0x39c6('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x39c6('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x39c6('0x5'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x39c6('0x6')][_0x39c6('0x7')]({'port':0x232a});config[_0x39c6('0x8')]=_['defaults'](config[_0x39c6('0x8')],{'host':_0x39c6('0x9'),'port':0x18eb});var socket=require(_0x39c6('0xa'))(new Redis(config[_0x39c6('0x8')]));require(_0x39c6('0xb'))[_0x39c6('0xc')](socket);function respondWithRpcPromise(_0x2147c7,_0x596703,_0x28c7ec){return new BPromise(function(_0x402d97,_0x4d27dc){return client[_0x39c6('0xd')](_0x2147c7,_0x28c7ec)[_0x39c6('0xe')](function(_0x2fae3a){logger['info'](_0x39c6('0xf'),_0x596703,_0x39c6('0x10'));logger[_0x39c6('0x11')](_0x39c6('0x12'),_0x596703,_0x39c6('0x10'),JSON[_0x39c6('0x13')](_0x2fae3a));if(_0x2fae3a[_0x39c6('0x14')]){if(_0x2fae3a[_0x39c6('0x14')][_0x39c6('0x15')]===0x1f4){logger[_0x39c6('0x14')](_0x39c6('0xf'),_0x596703,_0x2fae3a[_0x39c6('0x14')][_0x39c6('0x16')]);return _0x4d27dc(_0x2fae3a[_0x39c6('0x14')][_0x39c6('0x16')]);}logger[_0x39c6('0x14')](_0x39c6('0xf'),_0x596703,_0x2fae3a[_0x39c6('0x14')][_0x39c6('0x16')]);return _0x402d97(_0x2fae3a[_0x39c6('0x14')][_0x39c6('0x16')]);}else{logger[_0x39c6('0x17')](_0x39c6('0xf'),_0x596703,'request\x20sent');_0x402d97(_0x2fae3a[_0x39c6('0x18')][_0x39c6('0x16')]);}})['catch'](function(_0x3821d4){logger[_0x39c6('0x14')](_0x39c6('0xf'),_0x596703,_0x3821d4);_0x4d27dc(_0x3821d4);});});}
\ No newline at end of file
+var _0x151a=['../../config/environment','client','http','defaults','redis','localhost','socket.io-emitter','./dashboard.socket','register','request','then','info','Dashboard,\x20%s,\x20%s','request\x20sent','Dashboard,\x20%s,\x20%s,\x20%s','error','code','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x211f66,_0x6d409f){var _0x324240=function(_0x5b0c0e){while(--_0x5b0c0e){_0x211f66['push'](_0x211f66['shift']());}};_0x324240(++_0x6d409f);}(_0x151a,0x1c3));var _0xa151=function(_0x4796eb,_0x2f8389){_0x4796eb=_0x4796eb-0x0;var _0x1fb1a4=_0x151a[_0x4796eb];return _0x1fb1a4;};'use strict';var _=require(_0xa151('0x0'));var util=require(_0xa151('0x1'));var moment=require(_0xa151('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa151('0x3'));var db=require(_0xa151('0x4'))['db'];var utils=require(_0xa151('0x5'));var logger=require(_0xa151('0x6'))(_0xa151('0x7'));var config=require(_0xa151('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xa151('0x9')][_0xa151('0xa')]({'port':0x232a});config['redis']=_[_0xa151('0xb')](config[_0xa151('0xc')],{'host':_0xa151('0xd'),'port':0x18eb});var socket=require(_0xa151('0xe'))(new Redis(config['redis']));require(_0xa151('0xf'))[_0xa151('0x10')](socket);function respondWithRpcPromise(_0x3c0906,_0x2a0148,_0x179c63){return new BPromise(function(_0x1049fb,_0x9fac38){return client[_0xa151('0x11')](_0x3c0906,_0x179c63)[_0xa151('0x12')](function(_0x5710e2){logger[_0xa151('0x13')](_0xa151('0x14'),_0x2a0148,_0xa151('0x15'));logger['debug'](_0xa151('0x16'),_0x2a0148,_0xa151('0x15'),JSON['stringify'](_0x5710e2));if(_0x5710e2[_0xa151('0x17')]){if(_0x5710e2[_0xa151('0x17')][_0xa151('0x18')]===0x1f4){logger[_0xa151('0x17')](_0xa151('0x14'),_0x2a0148,_0x5710e2['error']['message']);return _0x9fac38(_0x5710e2[_0xa151('0x17')]['message']);}logger[_0xa151('0x17')]('Dashboard,\x20%s,\x20%s',_0x2a0148,_0x5710e2[_0xa151('0x17')]['message']);return _0x1049fb(_0x5710e2[_0xa151('0x17')]['message']);}else{logger['info'](_0xa151('0x14'),_0x2a0148,_0xa151('0x15'));_0x1049fb(_0x5710e2[_0xa151('0x19')]['message']);}})[_0xa151('0x1a')](function(_0x4a108c){logger[_0xa151('0x17')](_0xa151('0x14'),_0x2a0148,_0x4a108c);_0x9fac38(_0x4a108c);});});}
\ No newline at end of file
index 2a09bbc..5a530ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ea8=['save','remove','update','emit','removeListener','register','length','dashboard:'];(function(_0x69e987,_0x21eb8a){var _0xac09bc=function(_0x8cf994){while(--_0x8cf994){_0x69e987['push'](_0x69e987['shift']());}};_0xac09bc(++_0x21eb8a);}(_0x5ea8,0x138));var _0x85ea=function(_0x5a05ff,_0xf5b967){_0x5a05ff=_0x5a05ff-0x0;var _0x49a0ce=_0x5ea8[_0x5a05ff];return _0x49a0ce;};'use strict';var DashboardEvents=require('./dashboard.events');var events=[_0x85ea('0x0'),_0x85ea('0x1'),_0x85ea('0x2')];function createListener(_0x77b3cf,_0x39d196){return function(_0xef092a){_0x39d196[_0x85ea('0x3')](_0x77b3cf,_0xef092a);};}function removeListener(_0x207919,_0x306bda){return function(){DashboardEvents[_0x85ea('0x4')](_0x207919,_0x306bda);};}exports[_0x85ea('0x5')]=function(_0x14afb1){for(var _0x35da81=0x0,_0x5dade9=events[_0x85ea('0x6')];_0x35da81<_0x5dade9;_0x35da81++){var _0x2fc608=events[_0x35da81];var _0x1399f1=createListener(_0x85ea('0x7')+_0x2fc608,_0x14afb1);DashboardEvents['on'](_0x2fc608,_0x1399f1);}};
\ No newline at end of file
+var _0x2d2b=['remove','emit','removeListener','register','dashboard:','./dashboard.events','save'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0x2d2b,0x101));var _0xb2d2=function(_0x4c39b7,_0x43bb18){_0x4c39b7=_0x4c39b7-0x0;var _0x56ad4c=_0x2d2b[_0x4c39b7];return _0x56ad4c;};'use strict';var DashboardEvents=require(_0xb2d2('0x0'));var events=[_0xb2d2('0x1'),_0xb2d2('0x2'),'update'];function createListener(_0xfdaead,_0xc8666c){return function(_0x5ddbc3){_0xc8666c[_0xb2d2('0x3')](_0xfdaead,_0x5ddbc3);};}function removeListener(_0x1217a0,_0x39b99c){return function(){DashboardEvents[_0xb2d2('0x4')](_0x1217a0,_0x39b99c);};}exports[_0xb2d2('0x5')]=function(_0x5c8f26){for(var _0x3aa2fd=0x0,_0x1d3597=events['length'];_0x3aa2fd<_0x1d3597;_0x3aa2fd++){var _0x118fb7=events[_0x3aa2fd];var _0x59f107=createListener(_0xb2d2('0x6')+_0x118fb7,_0x5c8f26);DashboardEvents['on'](_0x118fb7,_0x59f107);}};
\ No newline at end of file
index 021a96a..7789d36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa400=['/:id','isAuthenticated','/:id/items','getItems','post','/:id/clone','addItem','put','update','delete','multer','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service','index','get'];(function(_0x22b099,_0x2f69ba){var _0x5652c7=function(_0xb0b3b5){while(--_0xb0b3b5){_0x22b099['push'](_0x22b099['shift']());}};_0x5652c7(++_0x2f69ba);}(_0xa400,0x160));var _0x0a40=function(_0x325452,_0x5fbe89){_0x325452=_0x325452-0x0;var _0x80b322=_0xa400[_0x325452];return _0x80b322;};'use strict';var multer=require(_0x0a40('0x0'));var util=require(_0x0a40('0x1'));var path=require(_0x0a40('0x2'));var timeout=require(_0x0a40('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x0a40('0x4'));var interaction=require(_0x0a40('0x5'));var config=require('../../config/environment');var controller=require('./dashboard.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x0a40('0x6')]);router[_0x0a40('0x7')](_0x0a40('0x8'),auth[_0x0a40('0x9')](),controller['show']);router[_0x0a40('0x7')](_0x0a40('0xa'),auth[_0x0a40('0x9')](),controller[_0x0a40('0xb')]);router[_0x0a40('0xc')]('/',auth[_0x0a40('0x9')](),controller['create']);router[_0x0a40('0xc')](_0x0a40('0xd'),auth[_0x0a40('0x9')](),controller['clone']);router[_0x0a40('0xc')](_0x0a40('0xa'),auth['isAuthenticated'](),controller[_0x0a40('0xe')]);router[_0x0a40('0xf')](_0x0a40('0x8'),auth[_0x0a40('0x9')](),controller[_0x0a40('0x10')]);router[_0x0a40('0x11')](_0x0a40('0x8'),auth[_0x0a40('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x31e1=['util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller','index','get','isAuthenticated','show','/:id/items','post','create','/:id/clone','addItem','put','/:id','delete','exports','multer'];(function(_0x191c46,_0x6c5895){var _0x36bc53=function(_0x52117e){while(--_0x52117e){_0x191c46['push'](_0x191c46['shift']());}};_0x36bc53(++_0x6c5895);}(_0x31e1,0x12a));var _0x131e=function(_0x48539f,_0x402061){_0x48539f=_0x48539f-0x0;var _0x2bb0b8=_0x31e1[_0x48539f];return _0x2bb0b8;};'use strict';var multer=require(_0x131e('0x0'));var util=require(_0x131e('0x1'));var path=require(_0x131e('0x2'));var timeout=require(_0x131e('0x3'));var express=require(_0x131e('0x4'));var router=express[_0x131e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x131e('0x6'));var interaction=require(_0x131e('0x7'));var config=require(_0x131e('0x8'));var controller=require(_0x131e('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x131e('0xa')]);router[_0x131e('0xb')]('/:id',auth[_0x131e('0xc')](),controller[_0x131e('0xd')]);router[_0x131e('0xb')](_0x131e('0xe'),auth[_0x131e('0xc')](),controller['getItems']);router[_0x131e('0xf')]('/',auth[_0x131e('0xc')](),controller[_0x131e('0x10')]);router[_0x131e('0xf')](_0x131e('0x11'),auth['isAuthenticated'](),controller['clone']);router['post'](_0x131e('0xe'),auth[_0x131e('0xc')](),controller[_0x131e('0x12')]);router[_0x131e('0x13')](_0x131e('0x14'),auth['isAuthenticated'](),controller['update']);router[_0x131e('0x15')](_0x131e('0x14'),auth[_0x131e('0xc')](),controller['destroy']);module[_0x131e('0x16')]=router;
\ No newline at end of file
index ad29084..53a01ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d58=['attrs','stringify','INTEGER','#2196f3','STRING','TEXT','parse','getDataValue','setDataValue'];(function(_0x504dde,_0x207ebc){var _0x5333c4=function(_0x1136c4){while(--_0x1136c4){_0x504dde['push'](_0x504dde['shift']());}};_0x5333c4(++_0x207ebc);}(_0x5d58,0x187));var _0x85d5=function(_0x1ddd94,_0x33df3f){_0x1ddd94=_0x1ddd94-0x0;var _0x1049c4=_0x5d58[_0x1ddd94];return _0x1049c4;};'use strict';var Sequelize=require('sequelize');var squel=require('squel');var _=require('lodash');module['exports']={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x85d5('0x0')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x85d5('0x1')]('long'),'get':function(){try{return JSON[_0x85d5('0x2')](this[_0x85d5('0x3')]('attrs'));}catch(_0x1eb211){return[];}},'set':function(_0x2d457a){try{this[_0x85d5('0x4')](_0x85d5('0x5'),JSON['stringify'](_0x2d457a));}catch(_0x98c963){this[_0x85d5('0x4')]('attrs',JSON[_0x85d5('0x6')]([]));}}},'sizeX':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x85d5('0x7')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x85d5('0x7')]},'col':{'type':Sequelize[_0x85d5('0x7')]},'background':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x85d5('0x8'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x85d5('0x0')]},'titleFontSize':{'type':Sequelize[_0x85d5('0x7')],'defaultValue':0xc}};
\ No newline at end of file
+var _0x524e=['exports','STRING','TEXT','long','parse','getDataValue','attrs','setDataValue','stringify','INTEGER','#ffffff','#2196f3','lodash'];(function(_0x11fe15,_0x4f999d){var _0x1e7c0b=function(_0xbd08aa){while(--_0xbd08aa){_0x11fe15['push'](_0x11fe15['shift']());}};_0x1e7c0b(++_0x4f999d);}(_0x524e,0x15e));var _0xe524=function(_0x5d8491,_0x49ae38){_0x5d8491=_0x5d8491-0x0;var _0x1eaff4=_0x524e[_0x5d8491];return _0x1eaff4;};'use strict';var Sequelize=require('sequelize');var squel=require('squel');var _=require(_0xe524('0x0'));module[_0xe524('0x1')]={'title':{'type':Sequelize[_0xe524('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xe524('0x2')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0xe524('0x3')](_0xe524('0x4')),'get':function(){try{return JSON[_0xe524('0x5')](this[_0xe524('0x6')](_0xe524('0x7')));}catch(_0x110cff){return[];}},'set':function(_0x4f75d6){try{this[_0xe524('0x8')](_0xe524('0x7'),JSON[_0xe524('0x9')](_0x4f75d6));}catch(_0x533c14){this[_0xe524('0x8')](_0xe524('0x7'),JSON[_0xe524('0x9')]([]));}}},'sizeX':{'type':Sequelize[_0xe524('0xa')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0xe524('0xa')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0xe524('0xa')]},'col':{'type':Sequelize[_0xe524('0xa')]},'background':{'type':Sequelize[_0xe524('0x2')],'allowNull':![],'defaultValue':_0xe524('0xb'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0xe524('0x2')],'allowNull':![],'defaultValue':_0xe524('0xc'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0xe524('0x2')]},'titleFontSize':{'type':Sequelize[_0xe524('0xa')],'defaultValue':0xc}};
\ No newline at end of file
index 6cf389e..00f6999 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90c7=['querystring','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./dashboardItem.socket','register','sendStatus','status','offset','undefined','limit','count','Content-Range','json','apply','save','update','then','destroy','end','stack','name','send','show','keys','rawAttributes','query','filters','intersection','model','fields','attributes','length','include','merge','options','DashboardItem','find','params','catch','type','attrs','value','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrSerie1','attrSerie2','attrSerie3','attrReport','error','widgetAttributes:\x20%s','stringify','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js'];(function(_0x13dc6b,_0x415bcb){var _0x46feb3=function(_0x40b42a){while(--_0x40b42a){_0x13dc6b['push'](_0x13dc6b['shift']());}};_0x46feb3(++_0x415bcb);}(_0x90c7,0x9c));var _0x790c=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0x90c7[_0x42245d];return _0x4b211a;};'use strict';var emlformat=require(_0x790c('0x0'));var rimraf=require(_0x790c('0x1'));var zipdir=require(_0x790c('0x2'));var jsonpatch=require(_0x790c('0x3'));var rp=require(_0x790c('0x4'));var moment=require(_0x790c('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x790c('0x6'));var util=require(_0x790c('0x7'));var path=require('path');var sox=require(_0x790c('0x8'));var csv=require(_0x790c('0x9'));var ejs=require(_0x790c('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x790c('0xb'));var squel=require(_0x790c('0xc'));var crypto=require(_0x790c('0xd'));var jsforce=require(_0x790c('0xe'));var deskjs=require(_0x790c('0xf'));var toCsv=require(_0x790c('0x9'));var querystring=require(_0x790c('0x10'));var Papa=require('papaparse');var Redis=require(_0x790c('0x11'));var authService=require(_0x790c('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x790c('0x13'))(_0x790c('0x14'));var utils=require(_0x790c('0x15'));var config=require(_0x790c('0x16'));var licenseUtil=require(_0x790c('0x17'));var db=require(_0x790c('0x18'))['db'];config[_0x790c('0x19')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x790c('0x1a'))(new Redis(config[_0x790c('0x19')]));require(_0x790c('0x1b'))[_0x790c('0x1c')](socket);function respondWithStatusCode(_0x131acb,_0x36ebfc){_0x36ebfc=_0x36ebfc||0xcc;return function(_0x206ec5){if(_0x206ec5){return _0x131acb[_0x790c('0x1d')](_0x36ebfc);}return _0x131acb[_0x790c('0x1e')](_0x36ebfc)['end']();};}function respondWithResult(_0x52f310,_0x178d17){_0x178d17=_0x178d17||0xc8;return function(_0x5094fa){if(_0x5094fa){return _0x52f310[_0x790c('0x1e')](_0x178d17)['json'](_0x5094fa);}};}function respondWithFilteredResult(_0x1dabbb,_0x20c2c0){return function(_0x131a7a){if(_0x131a7a){var _0x36baf0=typeof _0x20c2c0[_0x790c('0x1f')]===_0x790c('0x20')&&typeof _0x20c2c0[_0x790c('0x21')]==='undefined';var _0x3164b0=_0x131a7a[_0x790c('0x22')];var _0x25f713=_0x36baf0?0x0:_0x20c2c0[_0x790c('0x1f')];var _0x522189=_0x36baf0?_0x131a7a[_0x790c('0x22')]:_0x20c2c0[_0x790c('0x1f')]+_0x20c2c0[_0x790c('0x21')];var _0x84c6dd;if(_0x522189>=_0x3164b0){_0x522189=_0x3164b0;_0x84c6dd=0xc8;}else{_0x84c6dd=0xce;}_0x1dabbb[_0x790c('0x1e')](_0x84c6dd);return _0x1dabbb['set'](_0x790c('0x23'),_0x25f713+'-'+_0x522189+'/'+_0x3164b0)[_0x790c('0x24')](_0x131a7a);}return null;};}function patchUpdates(_0x38fcbb){return function(_0x284654){try{jsonpatch[_0x790c('0x25')](_0x284654,_0x38fcbb,!![]);}catch(_0x2818ed){return BPromise['reject'](_0x2818ed);}return _0x284654[_0x790c('0x26')]();};}function saveUpdates(_0x3697be,_0x50c943){return function(_0x3c7cf6){if(_0x3c7cf6){return _0x3c7cf6[_0x790c('0x27')](_0x3697be)[_0x790c('0x28')](function(_0x1de847){return _0x1de847;});}return null;};}function removeEntity(_0x3df559,_0x3ecb7e){return function(_0x2916dd){if(_0x2916dd){return _0x2916dd[_0x790c('0x29')]()[_0x790c('0x28')](function(){_0x3df559[_0x790c('0x1e')](0xcc)[_0x790c('0x2a')]();});}};}function handleEntityNotFound(_0x5d8a36,_0x3bf4ca){return function(_0x30e614){if(!_0x30e614){_0x5d8a36[_0x790c('0x1d')](0x194);}return _0x30e614;};}function handleError(_0xe206a2,_0x5d4c50){_0x5d4c50=_0x5d4c50||0x1f4;return function(_0x1d442b){logger['error'](_0x1d442b[_0x790c('0x2b')]);if(_0x1d442b[_0x790c('0x2c')]){delete _0x1d442b[_0x790c('0x2c')];}_0xe206a2[_0x790c('0x1e')](_0x5d4c50)[_0x790c('0x2d')](_0x1d442b);};}exports[_0x790c('0x2e')]=function(_0x268666,_0x275059){var _0x518750={'raw':![],'where':{'id':_0x268666['params']['id']}},_0x23cba0={};_0x23cba0['model']=_[_0x790c('0x2f')](db['DashboardItem'][_0x790c('0x30')]);_0x23cba0[_0x790c('0x31')]=_['keys'](_0x268666[_0x790c('0x31')]);_0x23cba0[_0x790c('0x32')]=_[_0x790c('0x33')](_0x23cba0[_0x790c('0x34')],_0x23cba0[_0x790c('0x31')]);_0x518750['attributes']=_[_0x790c('0x33')](_0x23cba0[_0x790c('0x34')],qs[_0x790c('0x35')](_0x268666[_0x790c('0x31')][_0x790c('0x35')]));_0x518750[_0x790c('0x36')]=_0x518750[_0x790c('0x36')][_0x790c('0x37')]?_0x518750['attributes']:_0x23cba0[_0x790c('0x34')];if(_0x268666[_0x790c('0x31')]['includeAll']){_0x518750[_0x790c('0x38')]=[{'all':!![]}];}_0x518750=_[_0x790c('0x39')]({},_0x518750,_0x268666[_0x790c('0x3a')]);return db[_0x790c('0x3b')]['find'](_0x518750)[_0x790c('0x28')](handleEntityNotFound(_0x275059,null))[_0x790c('0x28')](respondWithResult(_0x275059,null))['catch'](handleError(_0x275059,null));};exports[_0x790c('0x29')]=function(_0x27e1cd,_0x629c7c){return db[_0x790c('0x3b')][_0x790c('0x3c')]({'where':{'id':_0x27e1cd[_0x790c('0x3d')]['id']}})['then'](handleEntityNotFound(_0x629c7c,null))[_0x790c('0x28')](removeEntity(_0x629c7c,null))[_0x790c('0x3e')](handleError(_0x629c7c,null));};function widgetAttributes(_0x35830b){try{switch(_0x35830b[_0x790c('0x3f')]){case'iframe':return[{'name':'attrUrl','value':_0x35830b['attrUrl']||(_0x35830b[_0x790c('0x40')]&&_0x35830b[_0x790c('0x40')][0x0]?_0x35830b['attrs'][0x0][_0x790c('0x41')]:undefined)||'https://'}];case'custom':return[{'name':_0x790c('0x42'),'value':_0x35830b['attrPath']||(_0x35830b[_0x790c('0x40')]&&_0x35830b['attrs'][0x0]?_0x35830b[_0x790c('0x40')][0x0][_0x790c('0x41')]:undefined)||''}];case _0x790c('0x43'):return[{'name':'attrHourFormat','value':_0x35830b[_0x790c('0x44')]||(_0x35830b[_0x790c('0x40')]&&_0x35830b[_0x790c('0x40')][0x0]?_0x35830b[_0x790c('0x40')][0x0][_0x790c('0x41')]:undefined)||_0x790c('0x45')},{'name':_0x790c('0x46'),'value':_0x35830b[_0x790c('0x46')]||(_0x35830b[_0x790c('0x40')]&&_0x35830b['attrs'][0x1]?_0x35830b['attrs'][0x1]['value']:undefined)||_0x790c('0x47')},{'name':_0x790c('0x48'),'value':_0x35830b[_0x790c('0x48')]||(_0x35830b[_0x790c('0x40')]&&_0x35830b[_0x790c('0x40')][0x2]?_0x35830b[_0x790c('0x40')][0x2]['value']:undefined)||0xc}];case _0x790c('0x49'):return[{'name':_0x790c('0x4a'),'value':_0x35830b[_0x790c('0x4a')]||(_0x35830b[_0x790c('0x40')]&&_0x35830b[_0x790c('0x40')][0x0]?_0x35830b[_0x790c('0x40')][0x0][_0x790c('0x41')]:undefined)||_0x790c('0x4b')},{'name':'attrVoiceQueues','value':_0x35830b[_0x790c('0x4c')]||(_0x35830b[_0x790c('0x40')]&&_0x35830b[_0x790c('0x40')][0x1]?_0x35830b[_0x790c('0x40')][0x1]['value']:undefined)||[]},{'name':_0x790c('0x48'),'value':_0x35830b[_0x790c('0x48')]||(_0x35830b[_0x790c('0x40')]&&_0x35830b['attrs'][0x2]?_0x35830b[_0x790c('0x40')][0x2][_0x790c('0x41')]:undefined)||0x14}];case'multibar-chart':case'pie-chart':return[{'name':_0x790c('0x4d'),'value':_0x35830b[_0x790c('0x4d')]||(_0x35830b['attrs']&&_0x35830b['attrs'][0x0]?_0x35830b[_0x790c('0x40')][0x0][_0x790c('0x41')]:undefined)||_0x790c('0x4b')},{'name':_0x790c('0x4e'),'value':_0x35830b['attrSerie2']||(_0x35830b['attrs']&&_0x35830b[_0x790c('0x40')][0x1]?_0x35830b['attrs'][0x1]['value']:undefined)||null},{'name':_0x790c('0x4f'),'value':_0x35830b[_0x790c('0x4f')]||(_0x35830b['attrs']&&_0x35830b['attrs'][0x2]?_0x35830b[_0x790c('0x40')][0x2][_0x790c('0x41')]:undefined)||null},{'name':_0x790c('0x4c'),'value':_0x35830b[_0x790c('0x4c')]||(_0x35830b[_0x790c('0x40')]&&_0x35830b[_0x790c('0x40')][0x3]?_0x35830b[_0x790c('0x40')][0x3][_0x790c('0x41')]:undefined)||[]}];case'web-report':return[{'name':_0x790c('0x50'),'type':_0x35830b['reportType']||(_0x35830b[_0x790c('0x40')]&&_0x35830b[_0x790c('0x40')][0x0]?_0x35830b[_0x790c('0x40')][0x0][_0x790c('0x3f')]:undefined)||null,'value':_0x35830b['attrReport']||(_0x35830b[_0x790c('0x40')]&&_0x35830b[_0x790c('0x40')][0x0]?_0x35830b[_0x790c('0x40')][0x0][_0x790c('0x41')]:undefined)||null},{'name':'attrRefresh','value':_0x35830b['attrRefresh']||(_0x35830b[_0x790c('0x40')]&&_0x35830b[_0x790c('0x40')][0x1]?_0x35830b[_0x790c('0x40')][0x1][_0x790c('0x41')]:undefined)||0x0}];default:return[];}}catch(_0x30c697){logger[_0x790c('0x51')](_0x790c('0x52'),JSON[_0x790c('0x53')](_0x30c697));return[];}}exports[_0x790c('0x54')]=function(_0x976a94,_0x200a95){if(_0x976a94[_0x790c('0x55')]){_0x976a94[_0x790c('0x55')][_0x790c('0x40')]=widgetAttributes(_0x976a94[_0x790c('0x55')]);}return db[_0x790c('0x3b')][_0x790c('0x54')](_0x976a94['body'],{})[_0x790c('0x28')](respondWithResult(_0x200a95,0xc9))[_0x790c('0x3e')](handleError(_0x200a95,null));};exports[_0x790c('0x27')]=function(_0x2eee55,_0x163ea4){if(_0x2eee55[_0x790c('0x55')]['id']){delete _0x2eee55[_0x790c('0x55')]['id'];}_0x2eee55['body'][_0x790c('0x40')]=widgetAttributes(_0x2eee55['body']);return db[_0x790c('0x3b')][_0x790c('0x3c')]({'where':{'id':_0x2eee55[_0x790c('0x3d')]['id']}})[_0x790c('0x28')](handleEntityNotFound(_0x163ea4,null))[_0x790c('0x28')](saveUpdates(_0x2eee55['body'],null))['then'](respondWithResult(_0x163ea4,null))[_0x790c('0x3e')](handleError(_0x163ea4,null));};
\ No newline at end of file
+var _0xb2bb=['count','set','apply','reject','save','update','then','destroy','name','show','params','model','DashboardItem','rawAttributes','keys','filters','intersection','query','attributes','fields','length','options','find','catch','iframe','attrUrl','attrs','value','https://','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','attrSerie3','attrReport','reportType','type','attrRefresh','widgetAttributes:\x20%s','stringify','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./dashboardItem.socket','register','sendStatus','status','end','json','offset','undefined','limit'];(function(_0x285f25,_0x1f841c){var _0x5ef16a=function(_0x2f9897){while(--_0x2f9897){_0x285f25['push'](_0x285f25['shift']());}};_0x5ef16a(++_0x1f841c);}(_0xb2bb,0x198));var _0xbb2b=function(_0xffd8b0,_0x12c51f){_0xffd8b0=_0xffd8b0-0x0;var _0x301ba0=_0xb2bb[_0xffd8b0];return _0x301ba0;};'use strict';var emlformat=require(_0xbb2b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbb2b('0x1'));var jsonpatch=require(_0xbb2b('0x2'));var rp=require(_0xbb2b('0x3'));var moment=require(_0xbb2b('0x4'));var BPromise=require(_0xbb2b('0x5'));var Mustache=require(_0xbb2b('0x6'));var util=require(_0xbb2b('0x7'));var path=require('path');var sox=require(_0xbb2b('0x8'));var csv=require(_0xbb2b('0x9'));var ejs=require(_0xbb2b('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbb2b('0xb'));var squel=require(_0xbb2b('0xc'));var crypto=require(_0xbb2b('0xd'));var jsforce=require(_0xbb2b('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xbb2b('0x9'));var querystring=require(_0xbb2b('0xf'));var Papa=require(_0xbb2b('0x10'));var Redis=require(_0xbb2b('0x11'));var authService=require(_0xbb2b('0x12'));var qs=require(_0xbb2b('0x13'));var as=require(_0xbb2b('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xbb2b('0x15'));var utils=require(_0xbb2b('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xbb2b('0x17'));var db=require(_0xbb2b('0x18'))['db'];config[_0xbb2b('0x19')]=_['defaults'](config[_0xbb2b('0x19')],{'host':_0xbb2b('0x1a'),'port':0x18eb});var socket=require(_0xbb2b('0x1b'))(new Redis(config['redis']));require(_0xbb2b('0x1c'))[_0xbb2b('0x1d')](socket);function respondWithStatusCode(_0x299be5,_0x420790){_0x420790=_0x420790||0xcc;return function(_0x5b1ed4){if(_0x5b1ed4){return _0x299be5[_0xbb2b('0x1e')](_0x420790);}return _0x299be5[_0xbb2b('0x1f')](_0x420790)[_0xbb2b('0x20')]();};}function respondWithResult(_0x16facd,_0x16418e){_0x16418e=_0x16418e||0xc8;return function(_0x4946fe){if(_0x4946fe){return _0x16facd[_0xbb2b('0x1f')](_0x16418e)[_0xbb2b('0x21')](_0x4946fe);}};}function respondWithFilteredResult(_0x19296e,_0xfe488c){return function(_0x49e14a){if(_0x49e14a){var _0x30b18f=typeof _0xfe488c[_0xbb2b('0x22')]===_0xbb2b('0x23')&&typeof _0xfe488c[_0xbb2b('0x24')]===_0xbb2b('0x23');var _0x15c22e=_0x49e14a['count'];var _0x3ab5cf=_0x30b18f?0x0:_0xfe488c[_0xbb2b('0x22')];var _0x111b39=_0x30b18f?_0x49e14a[_0xbb2b('0x25')]:_0xfe488c['offset']+_0xfe488c[_0xbb2b('0x24')];var _0x355b04;if(_0x111b39>=_0x15c22e){_0x111b39=_0x15c22e;_0x355b04=0xc8;}else{_0x355b04=0xce;}_0x19296e['status'](_0x355b04);return _0x19296e[_0xbb2b('0x26')]('Content-Range',_0x3ab5cf+'-'+_0x111b39+'/'+_0x15c22e)[_0xbb2b('0x21')](_0x49e14a);}return null;};}function patchUpdates(_0x3ad58c){return function(_0x5d1b8e){try{jsonpatch[_0xbb2b('0x27')](_0x5d1b8e,_0x3ad58c,!![]);}catch(_0x4277e1){return BPromise[_0xbb2b('0x28')](_0x4277e1);}return _0x5d1b8e[_0xbb2b('0x29')]();};}function saveUpdates(_0x114341,_0x28649e){return function(_0x5d4faa){if(_0x5d4faa){return _0x5d4faa[_0xbb2b('0x2a')](_0x114341)[_0xbb2b('0x2b')](function(_0x4e25c6){return _0x4e25c6;});}return null;};}function removeEntity(_0x47851c,_0xb791b6){return function(_0x5ac4ba){if(_0x5ac4ba){return _0x5ac4ba[_0xbb2b('0x2c')]()[_0xbb2b('0x2b')](function(){_0x47851c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x11f382,_0x3f4def){return function(_0x226e4a){if(!_0x226e4a){_0x11f382[_0xbb2b('0x1e')](0x194);}return _0x226e4a;};}function handleError(_0x453d12,_0x360fae){_0x360fae=_0x360fae||0x1f4;return function(_0x384c29){logger['error'](_0x384c29['stack']);if(_0x384c29['name']){delete _0x384c29[_0xbb2b('0x2d')];}_0x453d12[_0xbb2b('0x1f')](_0x360fae)['send'](_0x384c29);};}exports[_0xbb2b('0x2e')]=function(_0x142e23,_0x3945ac){var _0x17b788={'raw':![],'where':{'id':_0x142e23[_0xbb2b('0x2f')]['id']}},_0x43afdf={};_0x43afdf[_0xbb2b('0x30')]=_['keys'](db[_0xbb2b('0x31')][_0xbb2b('0x32')]);_0x43afdf['query']=_[_0xbb2b('0x33')](_0x142e23['query']);_0x43afdf[_0xbb2b('0x34')]=_[_0xbb2b('0x35')](_0x43afdf[_0xbb2b('0x30')],_0x43afdf[_0xbb2b('0x36')]);_0x17b788[_0xbb2b('0x37')]=_[_0xbb2b('0x35')](_0x43afdf['model'],qs[_0xbb2b('0x38')](_0x142e23['query']['fields']));_0x17b788['attributes']=_0x17b788[_0xbb2b('0x37')][_0xbb2b('0x39')]?_0x17b788[_0xbb2b('0x37')]:_0x43afdf[_0xbb2b('0x30')];if(_0x142e23[_0xbb2b('0x36')]['includeAll']){_0x17b788['include']=[{'all':!![]}];}_0x17b788=_['merge']({},_0x17b788,_0x142e23[_0xbb2b('0x3a')]);return db[_0xbb2b('0x31')][_0xbb2b('0x3b')](_0x17b788)[_0xbb2b('0x2b')](handleEntityNotFound(_0x3945ac,null))[_0xbb2b('0x2b')](respondWithResult(_0x3945ac,null))[_0xbb2b('0x3c')](handleError(_0x3945ac,null));};exports[_0xbb2b('0x2c')]=function(_0x174fa0,_0x458b1c){return db[_0xbb2b('0x31')][_0xbb2b('0x3b')]({'where':{'id':_0x174fa0['params']['id']}})[_0xbb2b('0x2b')](handleEntityNotFound(_0x458b1c,null))[_0xbb2b('0x2b')](removeEntity(_0x458b1c,null))[_0xbb2b('0x3c')](handleError(_0x458b1c,null));};function widgetAttributes(_0x4e00dc){try{switch(_0x4e00dc['type']){case _0xbb2b('0x3d'):return[{'name':_0xbb2b('0x3e'),'value':_0x4e00dc[_0xbb2b('0x3e')]||(_0x4e00dc['attrs']&&_0x4e00dc[_0xbb2b('0x3f')][0x0]?_0x4e00dc['attrs'][0x0][_0xbb2b('0x40')]:undefined)||_0xbb2b('0x41')}];case'custom':return[{'name':_0xbb2b('0x42'),'value':_0x4e00dc['attrPath']||(_0x4e00dc[_0xbb2b('0x3f')]&&_0x4e00dc[_0xbb2b('0x3f')][0x0]?_0x4e00dc[_0xbb2b('0x3f')][0x0][_0xbb2b('0x40')]:undefined)||''}];case _0xbb2b('0x43'):return[{'name':_0xbb2b('0x44'),'value':_0x4e00dc['attrHourFormat']||(_0x4e00dc[_0xbb2b('0x3f')]&&_0x4e00dc[_0xbb2b('0x3f')][0x0]?_0x4e00dc[_0xbb2b('0x3f')][0x0]['value']:undefined)||_0xbb2b('0x45')},{'name':'attrTimezone','value':_0x4e00dc[_0xbb2b('0x46')]||(_0x4e00dc['attrs']&&_0x4e00dc[_0xbb2b('0x3f')][0x1]?_0x4e00dc['attrs'][0x1]['value']:undefined)||_0xbb2b('0x47')},{'name':_0xbb2b('0x48'),'value':_0x4e00dc[_0xbb2b('0x48')]||(_0x4e00dc[_0xbb2b('0x3f')]&&_0x4e00dc['attrs'][0x2]?_0x4e00dc[_0xbb2b('0x3f')][0x2][_0xbb2b('0x40')]:undefined)||0xc}];case _0xbb2b('0x49'):return[{'name':_0xbb2b('0x4a'),'value':_0x4e00dc[_0xbb2b('0x4a')]||(_0x4e00dc[_0xbb2b('0x3f')]&&_0x4e00dc[_0xbb2b('0x3f')][0x0]?_0x4e00dc['attrs'][0x0][_0xbb2b('0x40')]:undefined)||_0xbb2b('0x4b')},{'name':_0xbb2b('0x4c'),'value':_0x4e00dc[_0xbb2b('0x4c')]||(_0x4e00dc[_0xbb2b('0x3f')]&&_0x4e00dc[_0xbb2b('0x3f')][0x1]?_0x4e00dc['attrs'][0x1][_0xbb2b('0x40')]:undefined)||[]},{'name':'attrFontSize','value':_0x4e00dc[_0xbb2b('0x48')]||(_0x4e00dc[_0xbb2b('0x3f')]&&_0x4e00dc[_0xbb2b('0x3f')][0x2]?_0x4e00dc[_0xbb2b('0x3f')][0x2]['value']:undefined)||0x14}];case _0xbb2b('0x4d'):case _0xbb2b('0x4e'):return[{'name':_0xbb2b('0x4f'),'value':_0x4e00dc[_0xbb2b('0x4f')]||(_0x4e00dc[_0xbb2b('0x3f')]&&_0x4e00dc[_0xbb2b('0x3f')][0x0]?_0x4e00dc['attrs'][0x0][_0xbb2b('0x40')]:undefined)||_0xbb2b('0x4b')},{'name':'attrSerie2','value':_0x4e00dc['attrSerie2']||(_0x4e00dc[_0xbb2b('0x3f')]&&_0x4e00dc[_0xbb2b('0x3f')][0x1]?_0x4e00dc[_0xbb2b('0x3f')][0x1]['value']:undefined)||null},{'name':_0xbb2b('0x50'),'value':_0x4e00dc[_0xbb2b('0x50')]||(_0x4e00dc[_0xbb2b('0x3f')]&&_0x4e00dc[_0xbb2b('0x3f')][0x2]?_0x4e00dc['attrs'][0x2][_0xbb2b('0x40')]:undefined)||null},{'name':_0xbb2b('0x4c'),'value':_0x4e00dc[_0xbb2b('0x4c')]||(_0x4e00dc[_0xbb2b('0x3f')]&&_0x4e00dc[_0xbb2b('0x3f')][0x3]?_0x4e00dc[_0xbb2b('0x3f')][0x3][_0xbb2b('0x40')]:undefined)||[]}];case'web-report':return[{'name':_0xbb2b('0x51'),'type':_0x4e00dc[_0xbb2b('0x52')]||(_0x4e00dc['attrs']&&_0x4e00dc[_0xbb2b('0x3f')][0x0]?_0x4e00dc[_0xbb2b('0x3f')][0x0][_0xbb2b('0x53')]:undefined)||null,'value':_0x4e00dc[_0xbb2b('0x51')]||(_0x4e00dc[_0xbb2b('0x3f')]&&_0x4e00dc[_0xbb2b('0x3f')][0x0]?_0x4e00dc[_0xbb2b('0x3f')][0x0]['value']:undefined)||null},{'name':'attrRefresh','value':_0x4e00dc[_0xbb2b('0x54')]||(_0x4e00dc[_0xbb2b('0x3f')]&&_0x4e00dc[_0xbb2b('0x3f')][0x1]?_0x4e00dc[_0xbb2b('0x3f')][0x1][_0xbb2b('0x40')]:undefined)||0x0}];default:return[];}}catch(_0x62967b){logger['error'](_0xbb2b('0x55'),JSON[_0xbb2b('0x56')](_0x62967b));return[];}}exports[_0xbb2b('0x57')]=function(_0x27830a,_0x338a62){if(_0x27830a['body']){_0x27830a[_0xbb2b('0x58')]['attrs']=widgetAttributes(_0x27830a[_0xbb2b('0x58')]);}return db[_0xbb2b('0x31')][_0xbb2b('0x57')](_0x27830a[_0xbb2b('0x58')],{})[_0xbb2b('0x2b')](respondWithResult(_0x338a62,0xc9))['catch'](handleError(_0x338a62,null));};exports[_0xbb2b('0x2a')]=function(_0x3928c3,_0x27dc21){if(_0x3928c3[_0xbb2b('0x58')]['id']){delete _0x3928c3[_0xbb2b('0x58')]['id'];}_0x3928c3['body'][_0xbb2b('0x3f')]=widgetAttributes(_0x3928c3[_0xbb2b('0x58')]);return db[_0xbb2b('0x31')][_0xbb2b('0x3b')]({'where':{'id':_0x3928c3[_0xbb2b('0x2f')]['id']}})[_0xbb2b('0x2b')](handleEntityNotFound(_0x27dc21,null))[_0xbb2b('0x2b')](saveUpdates(_0x3928c3[_0xbb2b('0x58')],null))[_0xbb2b('0x2b')](respondWithResult(_0x27dc21,null))[_0xbb2b('0x3c')](handleError(_0x27dc21,null));};
\ No newline at end of file
index 1764872..a5d33c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f2d=['hook','exports','events','../../mysqldb','DashboardItem','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0x9531d6,_0x7fa65e){var _0x1651e7=function(_0x1b6331){while(--_0x1b6331){_0x9531d6['push'](_0x9531d6['shift']());}};_0x1651e7(++_0x7fa65e);}(_0x1f2d,0x1c4));var _0xd1f2=function(_0x44454f,_0x4bfbe8){_0x44454f=_0x44454f-0x0;var _0x475150=_0x1f2d[_0x44454f];return _0x475150;};'use strict';var EventEmitter=require(_0xd1f2('0x0'));var DashboardItem=require(_0xd1f2('0x1'))['db'][_0xd1f2('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xd1f2('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xd1f2('0x4'),'afterDestroy':_0xd1f2('0x5')};function emitEvent(_0x13626e){return function(_0xd4f928,_0x21f154,_0x194b49){DashboardItemEvents[_0xd1f2('0x6')](_0x13626e+':'+_0xd4f928['id'],_0xd4f928);DashboardItemEvents[_0xd1f2('0x6')](_0x13626e,_0xd4f928);_0x194b49(null);};}for(var e in events){if(events[_0xd1f2('0x7')](e)){var event=events[e];DashboardItem[_0xd1f2('0x8')](e,emitEvent(event));}}module[_0xd1f2('0x9')]=DashboardItemEvents;
\ No newline at end of file
+var _0x48c3=['setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x2aecb2,_0x343312){var _0x3ebb80=function(_0x19fab3){while(--_0x19fab3){_0x2aecb2['push'](_0x2aecb2['shift']());}};_0x3ebb80(++_0x343312);}(_0x48c3,0x1d2));var _0x348c=function(_0x167b85,_0x1d21b8){_0x167b85=_0x167b85-0x0;var _0x4fc2f6=_0x48c3[_0x167b85];return _0x4fc2f6;};'use strict';var EventEmitter=require(_0x348c('0x0'));var DashboardItem=require(_0x348c('0x1'))['db']['DashboardItem'];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x348c('0x2')](0x0);var events={'afterCreate':_0x348c('0x3'),'afterUpdate':_0x348c('0x4'),'afterDestroy':'remove'};function emitEvent(_0x9c185){return function(_0x3fa65b,_0x44bff7,_0x3474c6){DashboardItemEvents[_0x348c('0x5')](_0x9c185+':'+_0x3fa65b['id'],_0x3fa65b);DashboardItemEvents[_0x348c('0x5')](_0x9c185,_0x3fa65b);_0x3474c6(null);};}for(var e in events){if(events[_0x348c('0x6')](e)){var event=events[e];DashboardItem[_0x348c('0x7')](e,emitEvent(event));}}module[_0x348c('0x8')]=DashboardItemEvents;
\ No newline at end of file
index a2da382..6c1a430 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8784=['rimraf','../../config/environment','./dashboardItem.attributes','exports','DashboardItem','dashboard_items','../../config/logger','moment','request-promise'];(function(_0x37f056,_0x55bf97){var _0x1d0222=function(_0x539b1c){while(--_0x539b1c){_0x37f056['push'](_0x37f056['shift']());}};_0x1d0222(++_0x55bf97);}(_0x8784,0x96));var _0x4878=function(_0x77d310,_0x2b2fe7){_0x77d310=_0x77d310-0x0;var _0x2cdce4=_0x8784[_0x77d310];return _0x2cdce4;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4878('0x0'))('api');var moment=require(_0x4878('0x1'));var BPromise=require('bluebird');var rp=require(_0x4878('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4878('0x3'));var config=require(_0x4878('0x4'));var attributes=require(_0x4878('0x5'));module[_0x4878('0x6')]=function(_0x5ea527,_0x2c42ac){return _0x5ea527['define'](_0x4878('0x7'),attributes,{'tableName':_0x4878('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x75cf=['api','moment','request-promise','../../config/environment','./dashboardItem.attributes','exports','define','DashboardItem','dashboard_items','lodash','util'];(function(_0x26cdcf,_0x34c597){var _0x5970e5=function(_0x107db9){while(--_0x107db9){_0x26cdcf['push'](_0x26cdcf['shift']());}};_0x5970e5(++_0x34c597);}(_0x75cf,0x18a));var _0xf75c=function(_0x3401b9,_0x1829a0){_0x3401b9=_0x3401b9-0x0;var _0x4bc48c=_0x75cf[_0x3401b9];return _0x4bc48c;};'use strict';var _=require(_0xf75c('0x0'));var util=require(_0xf75c('0x1'));var logger=require('../../config/logger')(_0xf75c('0x2'));var moment=require(_0xf75c('0x3'));var BPromise=require('bluebird');var rp=require(_0xf75c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf75c('0x5'));var attributes=require(_0xf75c('0x6'));module[_0xf75c('0x7')]=function(_0x5abcc2,_0x221f5c){return _0x5abcc2[_0xf75c('0x8')](_0xf75c('0x9'),attributes,{'tableName':_0xf75c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e80ea8e..dc1bcfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x718f=['DashboardItem,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','localhost','socket.io-emitter','redis','./dashboardItem.socket','request','info','DashboardItem,\x20%s,\x20%s','debug'];(function(_0x1e0a8a,_0x3877a4){var _0x2dd051=function(_0x43d90c){while(--_0x43d90c){_0x1e0a8a['push'](_0x1e0a8a['shift']());}};_0x2dd051(++_0x3877a4);}(_0x718f,0xbe));var _0xf718=function(_0x26d51f,_0x1de895){_0x26d51f=_0x26d51f-0x0;var _0x48305d=_0x718f[_0x26d51f];return _0x48305d;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf718('0x0'));var BPromise=require(_0xf718('0x1'));var rs=require(_0xf718('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf718('0x3'))['db'];var utils=require(_0xf718('0x4'));var logger=require(_0xf718('0x5'))(_0xf718('0x6'));var config=require(_0xf718('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xf718('0x8')][_0xf718('0x9')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0xf718('0xa'),'port':0x18eb});var socket=require(_0xf718('0xb'))(new Redis(config[_0xf718('0xc')]));require(_0xf718('0xd'))['register'](socket);function respondWithRpcPromise(_0x6691c7,_0x292a4b,_0x7ffda2){return new BPromise(function(_0x5631ea,_0x1b58d5){return client[_0xf718('0xe')](_0x6691c7,_0x7ffda2)['then'](function(_0x1640dc){logger[_0xf718('0xf')](_0xf718('0x10'),_0x292a4b,'request\x20sent');logger[_0xf718('0x11')](_0xf718('0x12'),_0x292a4b,_0xf718('0x13'),JSON[_0xf718('0x14')](_0x1640dc));if(_0x1640dc[_0xf718('0x15')]){if(_0x1640dc[_0xf718('0x15')][_0xf718('0x16')]===0x1f4){logger['error']('DashboardItem,\x20%s,\x20%s',_0x292a4b,_0x1640dc['error'][_0xf718('0x17')]);return _0x1b58d5(_0x1640dc[_0xf718('0x15')][_0xf718('0x17')]);}logger[_0xf718('0x15')]('DashboardItem,\x20%s,\x20%s',_0x292a4b,_0x1640dc[_0xf718('0x15')][_0xf718('0x17')]);return _0x5631ea(_0x1640dc[_0xf718('0x15')]['message']);}else{logger[_0xf718('0xf')](_0xf718('0x10'),_0x292a4b,_0xf718('0x13'));_0x5631ea(_0x1640dc[_0xf718('0x18')][_0xf718('0x17')]);}})[_0xf718('0x19')](function(_0x430794){logger['error']('DashboardItem,\x20%s,\x20%s',_0x292a4b,_0x430794);_0x1b58d5(_0x430794);});});}
\ No newline at end of file
+var _0xda47=['message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','http','redis','defaults','localhost','./dashboardItem.socket','register','request','then','info','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x381589,_0x27a707){var _0x2a075d=function(_0x4ea19d){while(--_0x4ea19d){_0x381589['push'](_0x381589['shift']());}};_0x2a075d(++_0x27a707);}(_0xda47,0x120));var _0x7da4=function(_0x5eef05,_0x1be989){_0x5eef05=_0x5eef05-0x0;var _0x56d4b8=_0xda47[_0x5eef05];return _0x56d4b8;};'use strict';var _=require(_0x7da4('0x0'));var util=require(_0x7da4('0x1'));var moment=require(_0x7da4('0x2'));var BPromise=require(_0x7da4('0x3'));var rs=require(_0x7da4('0x4'));var fs=require('fs');var Redis=require(_0x7da4('0x5'));var db=require(_0x7da4('0x6'))['db'];var utils=require(_0x7da4('0x7'));var logger=require(_0x7da4('0x8'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x7da4('0x9')]({'port':0x232a});config[_0x7da4('0xa')]=_[_0x7da4('0xb')](config[_0x7da4('0xa')],{'host':_0x7da4('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7da4('0xa')]));require(_0x7da4('0xd'))[_0x7da4('0xe')](socket);function respondWithRpcPromise(_0x56a708,_0x315c1e,_0x5df445){return new BPromise(function(_0x4d0946,_0x5b9705){return client[_0x7da4('0xf')](_0x56a708,_0x5df445)[_0x7da4('0x10')](function(_0x1033b6){logger[_0x7da4('0x11')](_0x7da4('0x12'),_0x315c1e,_0x7da4('0x13'));logger[_0x7da4('0x14')](_0x7da4('0x15'),_0x315c1e,_0x7da4('0x13'),JSON['stringify'](_0x1033b6));if(_0x1033b6[_0x7da4('0x16')]){if(_0x1033b6['error'][_0x7da4('0x17')]===0x1f4){logger[_0x7da4('0x16')](_0x7da4('0x12'),_0x315c1e,_0x1033b6[_0x7da4('0x16')]['message']);return _0x5b9705(_0x1033b6[_0x7da4('0x16')][_0x7da4('0x18')]);}logger[_0x7da4('0x16')](_0x7da4('0x12'),_0x315c1e,_0x1033b6[_0x7da4('0x16')]['message']);return _0x4d0946(_0x1033b6[_0x7da4('0x16')][_0x7da4('0x18')]);}else{logger[_0x7da4('0x11')](_0x7da4('0x12'),_0x315c1e,_0x7da4('0x13'));_0x4d0946(_0x1033b6['result']['message']);}})[_0x7da4('0x19')](function(_0x4384e1){logger['error'](_0x7da4('0x12'),_0x315c1e,_0x4384e1);_0x5b9705(_0x4384e1);});});}
\ No newline at end of file
index 386c210..fd89fcb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2714=['emit','removeListener','dashboardItem:','remove','update'];(function(_0x5e7965,_0xd1502b){var _0x1c2273=function(_0x35ad92){while(--_0x35ad92){_0x5e7965['push'](_0x5e7965['shift']());}};_0x1c2273(++_0xd1502b);}(_0x2714,0xda));var _0x4271=function(_0xf86cd9,_0x1a45f0){_0xf86cd9=_0xf86cd9-0x0;var _0x965f20=_0x2714[_0xf86cd9];return _0x965f20;};'use strict';var DashboardItemEvents=require('./dashboardItem.events');var events=['save',_0x4271('0x0'),_0x4271('0x1')];function createListener(_0x2f8a90,_0x123262){return function(_0x2b5afe){_0x123262[_0x4271('0x2')](_0x2f8a90,_0x2b5afe);};}function removeListener(_0x3749dc,_0x5a5cfc){return function(){DashboardItemEvents[_0x4271('0x3')](_0x3749dc,_0x5a5cfc);};}exports['register']=function(_0x4a7e63){for(var _0xcb620b=0x0,_0x49b185=events['length'];_0xcb620b<_0x49b185;_0xcb620b++){var _0x3aff1f=events[_0xcb620b];var _0x26fe8b=createListener(_0x4271('0x4')+_0x3aff1f,_0x4a7e63);DashboardItemEvents['on'](_0x3aff1f,_0x26fe8b);}};
\ No newline at end of file
+var _0x54b7=['./dashboardItem.events','save','remove','update','emit','register','length','dashboardItem:'];(function(_0x8f4b4d,_0x538a8d){var _0x39b5b8=function(_0x31ed73){while(--_0x31ed73){_0x8f4b4d['push'](_0x8f4b4d['shift']());}};_0x39b5b8(++_0x538a8d);}(_0x54b7,0x188));var _0x754b=function(_0x357a4f,_0x869f31){_0x357a4f=_0x357a4f-0x0;var _0x372a9d=_0x54b7[_0x357a4f];return _0x372a9d;};'use strict';var DashboardItemEvents=require(_0x754b('0x0'));var events=[_0x754b('0x1'),_0x754b('0x2'),_0x754b('0x3')];function createListener(_0x2b01c1,_0x331cd3){return function(_0x236363){_0x331cd3[_0x754b('0x4')](_0x2b01c1,_0x236363);};}function removeListener(_0x3c9610,_0x538c8f){return function(){DashboardItemEvents['removeListener'](_0x3c9610,_0x538c8f);};}exports[_0x754b('0x5')]=function(_0xa6c47){for(var _0x11478e=0x0,_0x491482=events[_0x754b('0x6')];_0x11478e<_0x491482;_0x11478e++){var _0x4ec717=events[_0x11478e];var _0x139932=createListener(_0x754b('0x7')+_0x4ec717,_0xa6c47);DashboardItemEvents['on'](_0x4ec717,_0x139932);}};
\ No newline at end of file
index 1d376c3..5e8d0d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82f9=['show','create','put','isAuthenticated','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','/:id'];(function(_0x31b894,_0x31c639){var _0x1cf4b3=function(_0x489298){while(--_0x489298){_0x31b894['push'](_0x31b894['shift']());}};_0x1cf4b3(++_0x31c639);}(_0x82f9,0x115));var _0x982f=function(_0x2ec2bf,_0x64e983){_0x2ec2bf=_0x2ec2bf-0x0;var _0x2c279c=_0x82f9[_0x2ec2bf];return _0x2c279c;};'use strict';var multer=require(_0x982f('0x0'));var util=require(_0x982f('0x1'));var path=require(_0x982f('0x2'));var timeout=require(_0x982f('0x3'));var express=require(_0x982f('0x4'));var router=express[_0x982f('0x5')]();var fs_extra=require(_0x982f('0x6'));var auth=require(_0x982f('0x7'));var interaction=require(_0x982f('0x8'));var config=require('../../config/environment');var controller=require('./dashboardItem.controller');router[_0x982f('0x9')](_0x982f('0xa'),auth['isAuthenticated'](),controller[_0x982f('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0x982f('0xc')]);router[_0x982f('0xd')]('/:id',auth[_0x982f('0xe')](),controller['update']);router[_0x982f('0xf')](_0x982f('0xa'),auth['isAuthenticated'](),controller[_0x982f('0x10')]);module[_0x982f('0x11')]=router;
\ No newline at end of file
+var _0xb858=['util','path','connect-timeout','fs-extra','./dashboardItem.controller','get','/:id','isAuthenticated','show','exports','multer'];(function(_0xa3fadc,_0xd1e16){var _0x23ecb8=function(_0x2c71f7){while(--_0x2c71f7){_0xa3fadc['push'](_0xa3fadc['shift']());}};_0x23ecb8(++_0xd1e16);}(_0xb858,0x154));var _0x8b85=function(_0x246f47,_0x64a14a){_0x246f47=_0x246f47-0x0;var _0x26cf81=_0xb858[_0x246f47];return _0x26cf81;};'use strict';var multer=require(_0x8b85('0x0'));var util=require(_0x8b85('0x1'));var path=require(_0x8b85('0x2'));var timeout=require(_0x8b85('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x8b85('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x8b85('0x5'));router[_0x8b85('0x6')](_0x8b85('0x7'),auth[_0x8b85('0x8')](),controller[_0x8b85('0x9')]);router['post']('/',auth[_0x8b85('0x8')](),controller['create']);router['put'](_0x8b85('0x7'),auth[_0x8b85('0x8')](),controller['update']);router['delete'](_0x8b85('0x7'),auth['isAuthenticated'](),controller['destroy']);module[_0x8b85('0xa')]=router;
\ No newline at end of file
index cd7d0b0..678cf33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81ac=['first','second','STRING','ENUM'];(function(_0x20b805,_0x5e9f3c){var _0x1b4714=function(_0x3cc795){while(--_0x3cc795){_0x20b805['push'](_0x20b805['shift']());}};_0x1b4714(++_0x5e9f3c);}(_0x81ac,0x96));var _0xc81a=function(_0x3f0c91,_0x201280){_0x3f0c91=_0x3f0c91-0x0;var _0x5b33e8=_0x81ac[_0x3f0c91];return _0x5b33e8;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xc81a('0x0')],'allowNull':![]},'level':{'type':Sequelize[_0xc81a('0x1')](_0xc81a('0x2'),_0xc81a('0x3'),'third'),'allowNull':![],'defaultValue':'first'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x3edd=['third','exports','STRING','ENUM','first'];(function(_0x1c203f,_0x22fbd0){var _0x23c42b=function(_0x279a18){while(--_0x279a18){_0x1c203f['push'](_0x1c203f['shift']());}};_0x23c42b(++_0x22fbd0);}(_0x3edd,0x1dc));var _0xd3ed=function(_0x484974,_0x16c846){_0x484974=_0x484974-0x0;var _0xce0b5d=_0x3edd[_0x484974];return _0xce0b5d;};'use strict';var Sequelize=require('sequelize');module[_0xd3ed('0x0')]={'name':{'type':Sequelize[_0xd3ed('0x1')],'allowNull':![]},'level':{'type':Sequelize[_0xd3ed('0x2')](_0xd3ed('0x3'),'second',_0xd3ed('0x4')),'allowNull':![],'defaultValue':'first'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 2895c55..69e94bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x063a=['jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','get','UserProfileResource','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','options','Disposition','include','rows','catch','params','includeAll','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Dispositions','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','eml-format','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto'];(function(_0x36e007,_0x5e2d69){var _0x4bd34e=function(_0x5effcf){while(--_0x5effcf){_0x36e007['push'](_0x36e007['shift']());}};_0x4bd34e(++_0x5e2d69);}(_0x063a,0x1e0));var _0xa063=function(_0x391724,_0x267e93){_0x391724=_0x391724-0x0;var _0x50e3ba=_0x063a[_0x391724];return _0x50e3ba;};'use strict';var emlformat=require(_0xa063('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xa063('0x1'));var rp=require('request-promise');var moment=require(_0xa063('0x2'));var BPromise=require(_0xa063('0x3'));var Mustache=require(_0xa063('0x4'));var util=require(_0xa063('0x5'));var path=require(_0xa063('0x6'));var sox=require('sox');var csv=require(_0xa063('0x7'));var ejs=require(_0xa063('0x8'));var fs=require('fs');var fs_extra=require(_0xa063('0x9'));var _=require('lodash');var squel=require(_0xa063('0xa'));var crypto=require(_0xa063('0xb'));var jsforce=require(_0xa063('0xc'));var deskjs=require(_0xa063('0xd'));var toCsv=require(_0xa063('0x7'));var querystring=require(_0xa063('0xe'));var Papa=require(_0xa063('0xf'));var Redis=require(_0xa063('0x10'));var authService=require(_0xa063('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xa063('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa063('0x13'))(_0xa063('0x14'));var utils=require(_0xa063('0x15'));var config=require(_0xa063('0x16'));var licenseUtil=require(_0xa063('0x17'));var db=require(_0xa063('0x18'))['db'];function respondWithStatusCode(_0x45241f,_0x5d2d0d){_0x5d2d0d=_0x5d2d0d||0xcc;return function(_0x462dbd){if(_0x462dbd){return _0x45241f[_0xa063('0x19')](_0x5d2d0d);}return _0x45241f[_0xa063('0x1a')](_0x5d2d0d)['end']();};}function respondWithResult(_0x40521a,_0x1c58f1){_0x1c58f1=_0x1c58f1||0xc8;return function(_0x4a5edd){if(_0x4a5edd){return _0x40521a[_0xa063('0x1a')](_0x1c58f1)[_0xa063('0x1b')](_0x4a5edd);}};}function respondWithFilteredResult(_0x539852,_0x2d7819){return function(_0x48396e){if(_0x48396e){var _0x3b3f37=typeof _0x2d7819[_0xa063('0x1c')]===_0xa063('0x1d')&&typeof _0x2d7819[_0xa063('0x1e')]===_0xa063('0x1d');var _0x2fc768=_0x48396e[_0xa063('0x1f')];var _0x4aabc8=_0x3b3f37?0x0:_0x2d7819[_0xa063('0x1c')];var _0xc5b2ed=_0x3b3f37?_0x48396e[_0xa063('0x1f')]:_0x2d7819['offset']+_0x2d7819['limit'];var _0x59725f;if(_0xc5b2ed>=_0x2fc768){_0xc5b2ed=_0x2fc768;_0x59725f=0xc8;}else{_0x59725f=0xce;}_0x539852[_0xa063('0x1a')](_0x59725f);return _0x539852[_0xa063('0x20')](_0xa063('0x21'),_0x4aabc8+'-'+_0xc5b2ed+'/'+_0x2fc768)[_0xa063('0x1b')](_0x48396e);}return null;};}function patchUpdates(_0x4aba7d){return function(_0x53fe54){try{jsonpatch['apply'](_0x53fe54,_0x4aba7d,!![]);}catch(_0x4300d5){return BPromise[_0xa063('0x22')](_0x4300d5);}return _0x53fe54[_0xa063('0x23')]();};}function saveUpdates(_0x16d2dd,_0x4484bd){return function(_0x1106b4){if(_0x1106b4){return _0x1106b4[_0xa063('0x24')](_0x16d2dd)[_0xa063('0x25')](function(_0x426dc7){return _0x426dc7;});}return null;};}function removeEntity(_0x1f156a,_0x532d15){return function(_0x191051){if(_0x191051){return _0x191051[_0xa063('0x26')]()[_0xa063('0x25')](function(){var _0x22759d=_0x191051[_0xa063('0x27')]({'plain':!![]});var _0x904498='Dispositions';return db[_0xa063('0x28')][_0xa063('0x26')]({'where':{'type':_0x904498,'resourceId':_0x22759d['id']}})[_0xa063('0x25')](function(){return _0x191051;});})['then'](function(){_0x1f156a[_0xa063('0x1a')](0xcc)[_0xa063('0x29')]();});}};}function handleEntityNotFound(_0xcff237,_0x418fa1){return function(_0x1e0c24){if(!_0x1e0c24){_0xcff237['sendStatus'](0x194);}return _0x1e0c24;};}function handleError(_0x348eed,_0x2d60b4){_0x2d60b4=_0x2d60b4||0x1f4;return function(_0x385aba){logger[_0xa063('0x2a')](_0x385aba[_0xa063('0x2b')]);if(_0x385aba['name']){delete _0x385aba[_0xa063('0x2c')];}_0x348eed[_0xa063('0x1a')](_0x2d60b4)[_0xa063('0x2d')](_0x385aba);};}exports[_0xa063('0x2e')]=function(_0x3b1fb0,_0x2565d1){var _0x2f6663={},_0x3de7be={},_0x1f7b29={'count':0x0,'rows':[]};var _0x3e5e11=_[_0xa063('0x2f')](db['Disposition'][_0xa063('0x30')],function(_0x3b0ea1){return{'name':_0x3b0ea1[_0xa063('0x31')],'type':_0x3b0ea1[_0xa063('0x32')][_0xa063('0x33')]};});_0x3de7be[_0xa063('0x34')]=_[_0xa063('0x2f')](_0x3e5e11,_0xa063('0x2c'));_0x3de7be[_0xa063('0x35')]=_[_0xa063('0x36')](_0x3b1fb0['query']);_0x3de7be[_0xa063('0x37')]=_[_0xa063('0x38')](_0x3de7be['model'],_0x3de7be[_0xa063('0x35')]);_0x2f6663[_0xa063('0x39')]=_['intersection'](_0x3de7be[_0xa063('0x34')],qs[_0xa063('0x3a')](_0x3b1fb0[_0xa063('0x35')][_0xa063('0x3a')]));_0x2f6663[_0xa063('0x39')]=_0x2f6663['attributes'][_0xa063('0x3b')]?_0x2f6663[_0xa063('0x39')]:_0x3de7be[_0xa063('0x34')];if(!_0x3b1fb0[_0xa063('0x35')]['hasOwnProperty']('nolimit')){_0x2f6663[_0xa063('0x1e')]=qs[_0xa063('0x1e')](_0x3b1fb0[_0xa063('0x35')]['limit']);_0x2f6663['offset']=qs[_0xa063('0x1c')](_0x3b1fb0[_0xa063('0x35')]['offset']);}_0x2f6663[_0xa063('0x3c')]=qs[_0xa063('0x3d')](_0x3b1fb0[_0xa063('0x35')][_0xa063('0x3d')]);_0x2f6663[_0xa063('0x3e')]=qs[_0xa063('0x37')](_[_0xa063('0x3f')](_0x3b1fb0['query'],_0x3de7be[_0xa063('0x37')]),_0x3e5e11);if(_0x3b1fb0[_0xa063('0x35')][_0xa063('0x40')]){_0x2f6663[_0xa063('0x3e')]=_[_0xa063('0x41')](_0x2f6663[_0xa063('0x3e')],{'$or':_[_0xa063('0x2f')](_0x3e5e11,function(_0x1123b0){if(_0x1123b0['type']!=='VIRTUAL'){var _0x2a52b8={};_0x2a52b8[_0x1123b0[_0xa063('0x2c')]]={'$like':'%'+_0x3b1fb0[_0xa063('0x35')][_0xa063('0x40')]+'%'};return _0x2a52b8;}})});}_0x2f6663=_[_0xa063('0x41')]({},_0x2f6663,_0x3b1fb0[_0xa063('0x42')]);var _0xaadf8c={'where':_0x2f6663['where']};return db[_0xa063('0x43')]['count'](_0xaadf8c)['then'](function(_0x494dc7){_0x1f7b29[_0xa063('0x1f')]=_0x494dc7;if(_0x3b1fb0[_0xa063('0x35')]['includeAll']){_0x2f6663[_0xa063('0x44')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0x2f6663);})[_0xa063('0x25')](function(_0x5dc93e){_0x1f7b29[_0xa063('0x45')]=_0x5dc93e;return _0x1f7b29;})[_0xa063('0x25')](respondWithFilteredResult(_0x2565d1,_0x2f6663))[_0xa063('0x46')](handleError(_0x2565d1,null));};exports['show']=function(_0x193203,_0x509817){var _0xe6327e={'raw':!![],'where':{'id':_0x193203[_0xa063('0x47')]['id']}},_0x4dc4b1={};_0x4dc4b1[_0xa063('0x34')]=_['keys'](db[_0xa063('0x43')][_0xa063('0x30')]);_0x4dc4b1[_0xa063('0x35')]=_[_0xa063('0x36')](_0x193203[_0xa063('0x35')]);_0x4dc4b1[_0xa063('0x37')]=_[_0xa063('0x38')](_0x4dc4b1[_0xa063('0x34')],_0x4dc4b1[_0xa063('0x35')]);_0xe6327e[_0xa063('0x39')]=_[_0xa063('0x38')](_0x4dc4b1[_0xa063('0x34')],qs[_0xa063('0x3a')](_0x193203[_0xa063('0x35')]['fields']));_0xe6327e['attributes']=_0xe6327e[_0xa063('0x39')][_0xa063('0x3b')]?_0xe6327e[_0xa063('0x39')]:_0x4dc4b1['model'];if(_0x193203[_0xa063('0x35')][_0xa063('0x48')]){_0xe6327e['include']=[{'all':!![]}];}_0xe6327e=_[_0xa063('0x41')]({},_0xe6327e,_0x193203[_0xa063('0x42')]);return db[_0xa063('0x43')]['find'](_0xe6327e)[_0xa063('0x25')](handleEntityNotFound(_0x509817,null))[_0xa063('0x25')](respondWithResult(_0x509817,null))['catch'](handleError(_0x509817,null));};exports['create']=function(_0x2bec5d,_0x54e087){return db[_0xa063('0x43')][_0xa063('0x49')](_0x2bec5d[_0xa063('0x4a')],{})['then'](function(_0x44eee0){var _0x46e77d=_0x2bec5d[_0xa063('0x4b')][_0xa063('0x27')]({'plain':!![]});if(!_0x46e77d)throw new Error(_0xa063('0x4c'));if(_0x46e77d['role']===_0xa063('0x4b')){var _0x5649c0=_0x44eee0[_0xa063('0x27')]({'plain':!![]});var _0x2a16f6=_0xa063('0x4d');return db[_0xa063('0x4e')]['find']({'where':{'name':_0x2a16f6,'userProfileId':_0x46e77d['userProfileId']},'raw':!![]})['then'](function(_0x5928ca){if(_0x5928ca&&_0x5928ca[_0xa063('0x4f')]===0x0){return db[_0xa063('0x28')][_0xa063('0x49')]({'name':_0x5649c0[_0xa063('0x2c')],'resourceId':_0x5649c0['id'],'type':_0x5928ca[_0xa063('0x2c')],'sectionId':_0x5928ca['id']},{})['then'](function(){return _0x44eee0;});}else{return _0x44eee0;}})['catch'](function(_0x56e415){logger[_0xa063('0x2a')](_0xa063('0x50'),_0x56e415);throw _0x56e415;});}return _0x44eee0;})[_0xa063('0x25')](respondWithResult(_0x54e087,0xc9))[_0xa063('0x46')](handleError(_0x54e087,null));};exports[_0xa063('0x24')]=function(_0x18bbb5,_0x1419d4){if(_0x18bbb5[_0xa063('0x4a')]['id']){delete _0x18bbb5['body']['id'];}return db[_0xa063('0x43')][_0xa063('0x51')]({'where':{'id':_0x18bbb5['params']['id']}})['then'](handleEntityNotFound(_0x1419d4,null))['then'](saveUpdates(_0x18bbb5[_0xa063('0x4a')],null))['then'](respondWithResult(_0x1419d4,null))['catch'](handleError(_0x1419d4,null));};exports[_0xa063('0x26')]=function(_0x3fc8db,_0x4f8d91){return db['Disposition'][_0xa063('0x51')]({'where':{'id':_0x3fc8db['params']['id']}})[_0xa063('0x25')](handleEntityNotFound(_0x4f8d91,null))['then'](removeEntity(_0x4f8d91,null))[_0xa063('0x46')](handleError(_0x4f8d91,null));};
\ No newline at end of file
+var _0x29e0=['model','attributes','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','params','keys','intersection','fields','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','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','jsforce','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','end','json','offset','undefined','count','limit','set','Content-Range','save','update','then','destroy','get','Dispositions','error','name','send','index','map','Disposition','rawAttributes','fieldName','type','query','filters'];(function(_0x1ccf4f,_0x18ce33){var _0x3f747c=function(_0x166f08){while(--_0x166f08){_0x1ccf4f['push'](_0x1ccf4f['shift']());}};_0x3f747c(++_0x18ce33);}(_0x29e0,0x1c8));var _0x029e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x29e0[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x029e('0x0'));var rimraf=require(_0x029e('0x1'));var zipdir=require(_0x029e('0x2'));var jsonpatch=require(_0x029e('0x3'));var rp=require(_0x029e('0x4'));var moment=require(_0x029e('0x5'));var BPromise=require(_0x029e('0x6'));var Mustache=require(_0x029e('0x7'));var util=require(_0x029e('0x8'));var path=require(_0x029e('0x9'));var sox=require(_0x029e('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x029e('0xb'));var _=require(_0x029e('0xc'));var squel=require(_0x029e('0xd'));var crypto=require('crypto');var jsforce=require(_0x029e('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x029e('0xf'));var querystring=require(_0x029e('0x10'));var Papa=require(_0x029e('0x11'));var Redis=require(_0x029e('0x12'));var authService=require(_0x029e('0x13'));var qs=require(_0x029e('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x029e('0x15'));var logger=require(_0x029e('0x16'))(_0x029e('0x17'));var utils=require(_0x029e('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x029e('0x19'));var db=require(_0x029e('0x1a'))['db'];function respondWithStatusCode(_0x25a340,_0x1a9e07){_0x1a9e07=_0x1a9e07||0xcc;return function(_0xaaa66b){if(_0xaaa66b){return _0x25a340[_0x029e('0x1b')](_0x1a9e07);}return _0x25a340[_0x029e('0x1c')](_0x1a9e07)[_0x029e('0x1d')]();};}function respondWithResult(_0x31381c,_0x5a3708){_0x5a3708=_0x5a3708||0xc8;return function(_0x17c492){if(_0x17c492){return _0x31381c['status'](_0x5a3708)[_0x029e('0x1e')](_0x17c492);}};}function respondWithFilteredResult(_0x427f82,_0x4ba79c){return function(_0xebc7a8){if(_0xebc7a8){var _0x3d37c7=typeof _0x4ba79c[_0x029e('0x1f')]===_0x029e('0x20')&&typeof _0x4ba79c['limit']==='undefined';var _0x13f334=_0xebc7a8[_0x029e('0x21')];var _0x57eb0f=_0x3d37c7?0x0:_0x4ba79c[_0x029e('0x1f')];var _0x3e7b68=_0x3d37c7?_0xebc7a8[_0x029e('0x21')]:_0x4ba79c['offset']+_0x4ba79c[_0x029e('0x22')];var _0x32192a;if(_0x3e7b68>=_0x13f334){_0x3e7b68=_0x13f334;_0x32192a=0xc8;}else{_0x32192a=0xce;}_0x427f82[_0x029e('0x1c')](_0x32192a);return _0x427f82[_0x029e('0x23')](_0x029e('0x24'),_0x57eb0f+'-'+_0x3e7b68+'/'+_0x13f334)['json'](_0xebc7a8);}return null;};}function patchUpdates(_0x188c12){return function(_0x4cb568){try{jsonpatch['apply'](_0x4cb568,_0x188c12,!![]);}catch(_0x4396bd){return BPromise['reject'](_0x4396bd);}return _0x4cb568[_0x029e('0x25')]();};}function saveUpdates(_0x19a4b7,_0x2f155c){return function(_0x242b8a){if(_0x242b8a){return _0x242b8a[_0x029e('0x26')](_0x19a4b7)[_0x029e('0x27')](function(_0x42c41c){return _0x42c41c;});}return null;};}function removeEntity(_0x4d7993,_0x5000f5){return function(_0x195014){if(_0x195014){return _0x195014[_0x029e('0x28')]()[_0x029e('0x27')](function(){var _0x1c1dd9=_0x195014[_0x029e('0x29')]({'plain':!![]});var _0x3c1bd1=_0x029e('0x2a');return db['UserProfileResource']['destroy']({'where':{'type':_0x3c1bd1,'resourceId':_0x1c1dd9['id']}})[_0x029e('0x27')](function(){return _0x195014;});})[_0x029e('0x27')](function(){_0x4d7993[_0x029e('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x265c93,_0x5a5e51){return function(_0x3d55b6){if(!_0x3d55b6){_0x265c93[_0x029e('0x1b')](0x194);}return _0x3d55b6;};}function handleError(_0x50a65b,_0x11028f){_0x11028f=_0x11028f||0x1f4;return function(_0x52bfd8){logger[_0x029e('0x2b')](_0x52bfd8['stack']);if(_0x52bfd8[_0x029e('0x2c')]){delete _0x52bfd8[_0x029e('0x2c')];}_0x50a65b[_0x029e('0x1c')](_0x11028f)[_0x029e('0x2d')](_0x52bfd8);};}exports[_0x029e('0x2e')]=function(_0x4c5500,_0x352076){var _0xdf7732={},_0x37b40f={},_0x57fa60={'count':0x0,'rows':[]};var _0x1b654f=_[_0x029e('0x2f')](db[_0x029e('0x30')][_0x029e('0x31')],function(_0x2d1f63){return{'name':_0x2d1f63[_0x029e('0x32')],'type':_0x2d1f63[_0x029e('0x33')]['key']};});_0x37b40f['model']=_['map'](_0x1b654f,_0x029e('0x2c'));_0x37b40f['query']=_['keys'](_0x4c5500[_0x029e('0x34')]);_0x37b40f[_0x029e('0x35')]=_['intersection'](_0x37b40f[_0x029e('0x36')],_0x37b40f[_0x029e('0x34')]);_0xdf7732[_0x029e('0x37')]=_['intersection'](_0x37b40f['model'],qs['fields'](_0x4c5500[_0x029e('0x34')]['fields']));_0xdf7732[_0x029e('0x37')]=_0xdf7732['attributes'][_0x029e('0x38')]?_0xdf7732[_0x029e('0x37')]:_0x37b40f[_0x029e('0x36')];if(!_0x4c5500[_0x029e('0x34')][_0x029e('0x39')](_0x029e('0x3a'))){_0xdf7732[_0x029e('0x22')]=qs[_0x029e('0x22')](_0x4c5500[_0x029e('0x34')]['limit']);_0xdf7732[_0x029e('0x1f')]=qs[_0x029e('0x1f')](_0x4c5500[_0x029e('0x34')][_0x029e('0x1f')]);}_0xdf7732[_0x029e('0x3b')]=qs['sort'](_0x4c5500[_0x029e('0x34')]['sort']);_0xdf7732[_0x029e('0x3c')]=qs[_0x029e('0x35')](_[_0x029e('0x3d')](_0x4c5500[_0x029e('0x34')],_0x37b40f[_0x029e('0x35')]),_0x1b654f);if(_0x4c5500[_0x029e('0x34')][_0x029e('0x3e')]){_0xdf7732[_0x029e('0x3c')]=_[_0x029e('0x3f')](_0xdf7732[_0x029e('0x3c')],{'$or':_['map'](_0x1b654f,function(_0x56e484){if(_0x56e484[_0x029e('0x33')]!=='VIRTUAL'){var _0x5ee923={};_0x5ee923[_0x56e484[_0x029e('0x2c')]]={'$like':'%'+_0x4c5500['query'][_0x029e('0x3e')]+'%'};return _0x5ee923;}})});}_0xdf7732=_[_0x029e('0x3f')]({},_0xdf7732,_0x4c5500[_0x029e('0x40')]);var _0x4b967f={'where':_0xdf7732[_0x029e('0x3c')]};return db['Disposition']['count'](_0x4b967f)[_0x029e('0x27')](function(_0x4c348a){_0x57fa60['count']=_0x4c348a;if(_0x4c5500[_0x029e('0x34')][_0x029e('0x41')]){_0xdf7732[_0x029e('0x42')]=[{'all':!![]}];}return db[_0x029e('0x30')][_0x029e('0x43')](_0xdf7732);})['then'](function(_0x2961a2){_0x57fa60[_0x029e('0x44')]=_0x2961a2;return _0x57fa60;})[_0x029e('0x27')](respondWithFilteredResult(_0x352076,_0xdf7732))[_0x029e('0x45')](handleError(_0x352076,null));};exports['show']=function(_0x5207b6,_0x23466b){var _0x33ee02={'raw':!![],'where':{'id':_0x5207b6[_0x029e('0x46')]['id']}},_0x2f7c7f={};_0x2f7c7f['model']=_[_0x029e('0x47')](db[_0x029e('0x30')][_0x029e('0x31')]);_0x2f7c7f[_0x029e('0x34')]=_[_0x029e('0x47')](_0x5207b6[_0x029e('0x34')]);_0x2f7c7f[_0x029e('0x35')]=_[_0x029e('0x48')](_0x2f7c7f['model'],_0x2f7c7f[_0x029e('0x34')]);_0x33ee02[_0x029e('0x37')]=_[_0x029e('0x48')](_0x2f7c7f['model'],qs[_0x029e('0x49')](_0x5207b6[_0x029e('0x34')][_0x029e('0x49')]));_0x33ee02[_0x029e('0x37')]=_0x33ee02[_0x029e('0x37')][_0x029e('0x38')]?_0x33ee02[_0x029e('0x37')]:_0x2f7c7f[_0x029e('0x36')];if(_0x5207b6[_0x029e('0x34')][_0x029e('0x41')]){_0x33ee02['include']=[{'all':!![]}];}_0x33ee02=_[_0x029e('0x3f')]({},_0x33ee02,_0x5207b6[_0x029e('0x40')]);return db[_0x029e('0x30')][_0x029e('0x4a')](_0x33ee02)['then'](handleEntityNotFound(_0x23466b,null))['then'](respondWithResult(_0x23466b,null))[_0x029e('0x45')](handleError(_0x23466b,null));};exports[_0x029e('0x4b')]=function(_0x23ce8a,_0x3ea219){return db['Disposition']['create'](_0x23ce8a['body'],{})[_0x029e('0x27')](function(_0x480fd8){var _0x57f8ac=_0x23ce8a[_0x029e('0x4c')]['get']({'plain':!![]});if(!_0x57f8ac)throw new Error(_0x029e('0x4d'));if(_0x57f8ac[_0x029e('0x4e')]===_0x029e('0x4c')){var _0xcf43fd=_0x480fd8[_0x029e('0x29')]({'plain':!![]});var _0x4b3dd5=_0x029e('0x2a');return db[_0x029e('0x4f')][_0x029e('0x4a')]({'where':{'name':_0x4b3dd5,'userProfileId':_0x57f8ac[_0x029e('0x50')]},'raw':!![]})[_0x029e('0x27')](function(_0x5730f8){if(_0x5730f8&&_0x5730f8[_0x029e('0x51')]===0x0){return db[_0x029e('0x52')][_0x029e('0x4b')]({'name':_0xcf43fd[_0x029e('0x2c')],'resourceId':_0xcf43fd['id'],'type':_0x5730f8[_0x029e('0x2c')],'sectionId':_0x5730f8['id']},{})[_0x029e('0x27')](function(){return _0x480fd8;});}else{return _0x480fd8;}})['catch'](function(_0x190d9d){logger[_0x029e('0x2b')](_0x029e('0x53'),_0x190d9d);throw _0x190d9d;});}return _0x480fd8;})[_0x029e('0x27')](respondWithResult(_0x3ea219,0xc9))['catch'](handleError(_0x3ea219,null));};exports[_0x029e('0x26')]=function(_0x12088f,_0x44caf5){if(_0x12088f['body']['id']){delete _0x12088f[_0x029e('0x54')]['id'];}return db[_0x029e('0x30')][_0x029e('0x4a')]({'where':{'id':_0x12088f[_0x029e('0x46')]['id']}})[_0x029e('0x27')](handleEntityNotFound(_0x44caf5,null))[_0x029e('0x27')](saveUpdates(_0x12088f['body'],null))[_0x029e('0x27')](respondWithResult(_0x44caf5,null))[_0x029e('0x45')](handleError(_0x44caf5,null));};exports[_0x029e('0x28')]=function(_0x599628,_0x413c70){return db[_0x029e('0x30')][_0x029e('0x4a')]({'where':{'id':_0x599628['params']['id']}})[_0x029e('0x27')](handleEntityNotFound(_0x413c70,null))[_0x029e('0x27')](removeEntity(_0x413c70,null))[_0x029e('0x45')](handleError(_0x413c70,null));};
\ No newline at end of file
index c221c93..9d59a4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca48=['name_chat','ChatWebsiteId','name_mail','MailAccountId','name_sms','FaxAccountId','name_openchannel','OpenchannelAccountId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./disposition.attributes','exports','Disposition','tools_dispositions','name_voice','name','ListId'];(function(_0x1d88db,_0x26213f){var _0x1df256=function(_0x1bb1e7){while(--_0x1bb1e7){_0x1d88db['push'](_0x1d88db['shift']());}};_0x1df256(++_0x26213f);}(_0xca48,0xe9));var _0x8ca4=function(_0x2b948f,_0x398e62){_0x2b948f=_0x2b948f-0x0;var _0x1237bc=_0xca48[_0x2b948f];return _0x1237bc;};'use strict';var _=require(_0x8ca4('0x0'));var util=require(_0x8ca4('0x1'));var logger=require(_0x8ca4('0x2'))(_0x8ca4('0x3'));var moment=require(_0x8ca4('0x4'));var BPromise=require(_0x8ca4('0x5'));var rp=require(_0x8ca4('0x6'));var fs=require('fs');var path=require(_0x8ca4('0x7'));var rimraf=require(_0x8ca4('0x8'));var config=require(_0x8ca4('0x9'));var attributes=require(_0x8ca4('0xa'));module[_0x8ca4('0xb')]=function(_0x32e00a,_0x23890a){return _0x32e00a['define'](_0x8ca4('0xc'),attributes,{'tableName':_0x8ca4('0xd'),'paranoid':![],'indexes':[{'unique':!![],'name':_0x8ca4('0xe'),'fields':[_0x8ca4('0xf'),_0x8ca4('0x10')]},{'unique':!![],'name':_0x8ca4('0x11'),'fields':[_0x8ca4('0xf'),_0x8ca4('0x12')]},{'unique':!![],'name':_0x8ca4('0x13'),'fields':[_0x8ca4('0xf'),_0x8ca4('0x14')]},{'unique':!![],'name':_0x8ca4('0x15'),'fields':[_0x8ca4('0xf'),'SmsAccountId']},{'unique':!![],'name':'name_fax','fields':[_0x8ca4('0xf'),_0x8ca4('0x16')]},{'unique':!![],'name':_0x8ca4('0x17'),'fields':[_0x8ca4('0xf'),_0x8ca4('0x18')]},{'unique':!![],'name':'name_whatsapp','fields':['name','WhatsappAccountId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe774=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','Disposition','tools_dispositions','name_voice','ListId','name','ChatWebsiteId','name_mail','MailAccountId','name_sms','name_fax','FaxAccountId','WhatsappAccountId','lodash'];(function(_0x1db251,_0xf0443d){var _0x56685a=function(_0x6ec6b7){while(--_0x6ec6b7){_0x1db251['push'](_0x1db251['shift']());}};_0x56685a(++_0xf0443d);}(_0xe774,0x1cd));var _0x4e77=function(_0x375044,_0x37b53c){_0x375044=_0x375044-0x0;var _0x1b85c7=_0xe774[_0x375044];return _0x1b85c7;};'use strict';var _=require(_0x4e77('0x0'));var util=require(_0x4e77('0x1'));var logger=require(_0x4e77('0x2'))(_0x4e77('0x3'));var moment=require('moment');var BPromise=require(_0x4e77('0x4'));var rp=require(_0x4e77('0x5'));var fs=require('fs');var path=require(_0x4e77('0x6'));var rimraf=require(_0x4e77('0x7'));var config=require(_0x4e77('0x8'));var attributes=require('./disposition.attributes');module[_0x4e77('0x9')]=function(_0x15240c,_0x21869e){return _0x15240c['define'](_0x4e77('0xa'),attributes,{'tableName':_0x4e77('0xb'),'paranoid':![],'indexes':[{'unique':!![],'name':_0x4e77('0xc'),'fields':['name',_0x4e77('0xd')]},{'unique':!![],'name':'name_chat','fields':[_0x4e77('0xe'),_0x4e77('0xf')]},{'unique':!![],'name':_0x4e77('0x10'),'fields':['name',_0x4e77('0x11')]},{'unique':!![],'name':_0x4e77('0x12'),'fields':['name','SmsAccountId']},{'unique':!![],'name':_0x4e77('0x13'),'fields':[_0x4e77('0xe'),_0x4e77('0x14')]},{'unique':!![],'name':'name_openchannel','fields':[_0x4e77('0xe'),'OpenchannelAccountId']},{'unique':!![],'name':'name_whatsapp','fields':[_0x4e77('0xe'),_0x4e77('0x15')]}],'timestamps':!![]});};
\ No newline at end of file
index e589f6c..04a3343 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(_0x4104b0,_0x2a1368){var _0x55f6e4=function(_0x150267){while(--_0x150267){_0x4104b0['push'](_0x4104b0['shift']());}};_0x55f6e4(++_0x2a1368);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0xa9e0[_0x3a6efd];return _0x487b9a;};'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(_0x3821a5,_0x57962d){var _0xfa695b=function(_0x5d1bd4){while(--_0x5d1bd4){_0x3821a5['push'](_0x3821a5['shift']());}};_0xfa695b(++_0x57962d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xa9e0[_0x411add];return _0x238242;};'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 ad23089..e417825 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf17d=['../../config/environment','isAuthenticated','get','/:id','show','post','create','update','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x155d16,_0x30ff43){var _0xda9a99=function(_0x449ee9){while(--_0x449ee9){_0x155d16['push'](_0x155d16['shift']());}};_0xda9a99(++_0x30ff43);}(_0xf17d,0x1a8));var _0xdf17=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xf17d[_0x167cc1];return _0x10bc4b;};'use strict';var multer=require(_0xdf17('0x0'));var util=require(_0xdf17('0x1'));var path=require('path');var timeout=require(_0xdf17('0x2'));var express=require(_0xdf17('0x3'));var router=express[_0xdf17('0x4')]();var fs_extra=require(_0xdf17('0x5'));var auth=require(_0xdf17('0x6'));var interaction=require(_0xdf17('0x7'));var config=require(_0xdf17('0x8'));var controller=require('./disposition.controller');router['get']('/',auth[_0xdf17('0x9')](),controller['index']);router[_0xdf17('0xa')](_0xdf17('0xb'),auth['isAuthenticated'](),controller[_0xdf17('0xc')]);router[_0xdf17('0xd')]('/',auth[_0xdf17('0x9')](),controller[_0xdf17('0xe')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xdf17('0xf')]);router['delete'](_0xdf17('0xb'),auth[_0xdf17('0x9')](),controller[_0xdf17('0x10')]);module[_0xdf17('0x11')]=router;
\ No newline at end of file
+var _0x3f53=['isAuthenticated','index','/:id','show','post','create','put','update','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get'];(function(_0x2b0f11,_0x4883cd){var _0x6fdaee=function(_0x5abccc){while(--_0x5abccc){_0x2b0f11['push'](_0x2b0f11['shift']());}};_0x6fdaee(++_0x4883cd);}(_0x3f53,0x186));var _0x33f5=function(_0x150228,_0x4ee82c){_0x150228=_0x150228-0x0;var _0x5de9a6=_0x3f53[_0x150228];return _0x5de9a6;};'use strict';var multer=require(_0x33f5('0x0'));var util=require(_0x33f5('0x1'));var path=require('path');var timeout=require(_0x33f5('0x2'));var express=require(_0x33f5('0x3'));var router=express[_0x33f5('0x4')]();var fs_extra=require(_0x33f5('0x5'));var auth=require(_0x33f5('0x6'));var interaction=require(_0x33f5('0x7'));var config=require('../../config/environment');var controller=require('./disposition.controller');router[_0x33f5('0x8')]('/',auth[_0x33f5('0x9')](),controller[_0x33f5('0xa')]);router[_0x33f5('0x8')](_0x33f5('0xb'),auth[_0x33f5('0x9')](),controller[_0x33f5('0xc')]);router[_0x33f5('0xd')]('/',auth[_0x33f5('0x9')](),controller[_0x33f5('0xe')]);router[_0x33f5('0xf')](_0x33f5('0xb'),auth['isAuthenticated'](),controller[_0x33f5('0x10')]);router['delete']('/:id',auth[_0x33f5('0x9')](),controller[_0x33f5('0x11')]);module[_0x33f5('0x12')]=router;
\ No newline at end of file
index 2293cab..6a92d49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0b3=['BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','sequelize','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','localstationid','2400','4800','7200','9600','14400','v17,v27,v29','INTEGER','SIP','IAX','DADHI','KHOMP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}'];(function(_0x586c70,_0x4a8cb3){var _0x26db79=function(_0xbfa842){while(--_0xbfa842){_0x586c70['push'](_0x586c70['shift']());}};_0x26db79(++_0x4a8cb3);}(_0xe0b3,0x1a1));var _0x3e0b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xe0b3[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x3e0b('0x0'));module[_0x3e0b('0x1')]={'name':{'type':Sequelize[_0x3e0b('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'ecm':{'type':Sequelize[_0x3e0b('0x3')](_0x3e0b('0x4'),'no'),'defaultValue':_0x3e0b('0x4')},'headerinfo':{'type':Sequelize[_0x3e0b('0x2')],'defaultValue':_0x3e0b('0x5')},'localstationid':{'type':Sequelize[_0x3e0b('0x2')],'unique':_0x3e0b('0x6')},'minrate':{'type':Sequelize['ENUM'](_0x3e0b('0x7'),_0x3e0b('0x8'),_0x3e0b('0x9'),_0x3e0b('0xa'),'12000',_0x3e0b('0xb')),'defaultValue':_0x3e0b('0x8')},'maxrate':{'type':Sequelize[_0x3e0b('0x3')](_0x3e0b('0x7'),_0x3e0b('0x8'),_0x3e0b('0x9'),'9600','12000',_0x3e0b('0xb')),'defaultValue':_0x3e0b('0xb')},'modem':{'type':Sequelize[_0x3e0b('0x2')],'defaultValue':_0x3e0b('0xc')},'gateway':{'type':Sequelize[_0x3e0b('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x3e0b('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x3e0b('0xd')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x3e0b('0x3')](_0x3e0b('0xe'),_0x3e0b('0xf'),_0x3e0b('0x10'),_0x3e0b('0x11')),'defaultValue':'SIP'},'key':{'type':Sequelize[_0x3e0b('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x3e0b('0x12')],'defaultValue':function(){return _0x3e0b('0x13');}},'notificationSound':{'type':Sequelize[_0x3e0b('0x14')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x3e0b('0x14')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x3e0b('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x3e0b('0x14')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x3e0b('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x3e0b('0x15')},'mandatoryDisposition':{'type':Sequelize[_0x3e0b('0x14')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x1c4e03){if(!_0x1c4e03)this[_0x3e0b('0x16')]('mandatoryDispositionPauseId',null);this[_0x3e0b('0x16')]('mandatoryDisposition',_0x1c4e03);}}};
\ No newline at end of file
+var _0xe185=['SIP','DADHI','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING','yes','xCALLY\x20Motion\x20Fax','localstationid','2400','4800','7200','9600','14400','ENUM','12000','INTEGER'];(function(_0x29711a,_0x389c71){var _0x3467ea=function(_0x55dc22){while(--_0x55dc22){_0x29711a['push'](_0x29711a['shift']());}};_0x3467ea(++_0x389c71);}(_0xe185,0xa3));var _0x5e18=function(_0x386744,_0x38db5a){_0x386744=_0x386744-0x0;var _0x2de9f9=_0xe185[_0x386744];return _0x2de9f9;};'use strict';var Sequelize=require('sequelize');module[_0x5e18('0x0')]={'name':{'type':Sequelize[_0x5e18('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'ecm':{'type':Sequelize['ENUM'](_0x5e18('0x2'),'no'),'defaultValue':_0x5e18('0x2')},'headerinfo':{'type':Sequelize[_0x5e18('0x1')],'defaultValue':_0x5e18('0x3')},'localstationid':{'type':Sequelize[_0x5e18('0x1')],'unique':_0x5e18('0x4')},'minrate':{'type':Sequelize['ENUM'](_0x5e18('0x5'),_0x5e18('0x6'),_0x5e18('0x7'),_0x5e18('0x8'),'12000',_0x5e18('0x9')),'defaultValue':'4800'},'maxrate':{'type':Sequelize[_0x5e18('0xa')](_0x5e18('0x5'),'4800','7200',_0x5e18('0x8'),_0x5e18('0xb'),'14400'),'defaultValue':'14400'},'modem':{'type':Sequelize[_0x5e18('0x1')],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x5e18('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x5e18('0xc')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize['ENUM'](_0x5e18('0xd'),'IAX',_0x5e18('0xe'),'KHOMP'),'defaultValue':_0x5e18('0xd')},'key':{'type':Sequelize[_0x5e18('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x5e18('0xf')],'defaultValue':function(){return _0x5e18('0x10');}},'notificationSound':{'type':Sequelize[_0x5e18('0x11')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x5e18('0x11')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x5e18('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x5e18('0x11')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x5e18('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x5e18('0x11')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x5e18('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x5e18('0xc')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x5e18('0x11')],'defaultValue':![],'comment':_0x5e18('0x12'),'set':function(_0x5172e4){if(!_0x5172e4)this[_0x5e18('0x13')](_0x5e18('0x14'),null);this[_0x5e18('0x13')](_0x5e18('0x15'),_0x5172e4);}}};
\ No newline at end of file
index 871ff5f..cf51564 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0155=['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','socket.io-emitter','./faxAccount.socket','register','jayson/promise','http','client','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','destroy','get','FaxAccounts','name','send','index','Pause','map','FaxAccount','rawAttributes','fieldName','type','key','model','keys','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','options','find','create','body','user','userProfileId','UserProfileResource','describe','addDisposition','FaxAccountId','Disposition','getDispositions','findOne','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','addInteraction','FaxInteraction','getInteractions','CmContact','Contact','User','Owner','fullname','internal','color','tag','addApplications','sequelize','transaction','FaxApplication','findAndCountAll','priority','getApplications','from-voip-provider','exten','localstationid','system','description','Fax\x20Extension','appdata','push','CDR(type)=inbound-fax','Set','ecm','gateway','minrate','modem','t38timeout','FAXOPT(','Wait','/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','addAccountApplications','bulkCreate','updateAccountApplications','VoiceExtension','omit','updatedAt','TrunkId','ListId','findById','FaxMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','CmList','List','DESC','attachments','root','basename','isNil','from','\x22%s\x22\x20<%s>','fax','Contacts','List\x20not\x20found','Send\x20Fax\x20failed','filename','Messages','Contact\x20not\x20found','spread','out','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','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','querystring'];(function(_0x3f9392,_0x51b6a0){var _0x10392a=function(_0x2b0b43){while(--_0x2b0b43){_0x3f9392['push'](_0x3f9392['shift']());}};_0x10392a(++_0x51b6a0);}(_0x0155,0xb0));var _0x5015=function(_0x1436ba,_0x178654){_0x1436ba=_0x1436ba-0x0;var _0x3e98cb=_0x0155[_0x1436ba];return _0x3e98cb;};'use strict';var emlformat=require(_0x5015('0x0'));var rimraf=require(_0x5015('0x1'));var zipdir=require(_0x5015('0x2'));var jsonpatch=require(_0x5015('0x3'));var rp=require(_0x5015('0x4'));var moment=require(_0x5015('0x5'));var BPromise=require(_0x5015('0x6'));var Mustache=require(_0x5015('0x7'));var util=require(_0x5015('0x8'));var path=require(_0x5015('0x9'));var sox=require(_0x5015('0xa'));var csv=require(_0x5015('0xb'));var ejs=require(_0x5015('0xc'));var fs=require('fs');var fs_extra=require(_0x5015('0xd'));var _=require(_0x5015('0xe'));var squel=require(_0x5015('0xf'));var crypto=require(_0x5015('0x10'));var jsforce=require(_0x5015('0x11'));var deskjs=require('desk.js');var toCsv=require(_0x5015('0xb'));var querystring=require(_0x5015('0x12'));var Papa=require('papaparse');var Redis=require(_0x5015('0x13'));var authService=require(_0x5015('0x14'));var qs=require(_0x5015('0x15'));var as=require(_0x5015('0x16'));var hardwareService=require(_0x5015('0x17'));var logger=require(_0x5015('0x18'))(_0x5015('0x19'));var utils=require(_0x5015('0x1a'));var config=require(_0x5015('0x1b'));var licenseUtil=require(_0x5015('0x1c'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x5015('0x1d')](config[_0x5015('0x1e')],{'host':_0x5015('0x1f'),'port':0x18eb});var socket=require(_0x5015('0x20'))(new Redis(config['redis']));require(_0x5015('0x21'))[_0x5015('0x22')](socket);var jayson=require(_0x5015('0x23'));var client=jayson['client'][_0x5015('0x24')]({'port':0x232c});var client9002=jayson[_0x5015('0x25')]['http']({'port':0x232a});function respondWithRpcPromise(_0x54c303,_0x2114b0,_0x27987a,_0x35133d){return new BPromise(function(_0x11767d,_0x243bc7){var _0x1ff155=_0x35133d||client;return _0x1ff155['request'](_0x54c303,_0x27987a)[_0x5015('0x26')](function(_0x18c5b0){logger[_0x5015('0x27')](_0x5015('0x28'),_0x2114b0,_0x5015('0x29'));logger[_0x5015('0x2a')](_0x5015('0x2b'),_0x2114b0,_0x5015('0x29'),JSON[_0x5015('0x2c')](_0x18c5b0));if(_0x18c5b0[_0x5015('0x2d')]){if(_0x18c5b0['error']['code']===0x1f4){logger[_0x5015('0x2d')](_0x5015('0x28'),_0x2114b0,_0x18c5b0[_0x5015('0x2d')]['message']);return _0x243bc7(_0x18c5b0[_0x5015('0x2d')][_0x5015('0x2e')]);}logger[_0x5015('0x2d')]('FaxAccount,\x20%s,\x20%s',_0x2114b0,_0x18c5b0['error'][_0x5015('0x2e')]);return _0x11767d(_0x18c5b0[_0x5015('0x2d')]['message']);}else{logger['info'](_0x5015('0x28'),_0x2114b0,_0x5015('0x29'));_0x11767d(_0x18c5b0['result'][_0x5015('0x2e')]);}})[_0x5015('0x2f')](function(_0x54158c){logger[_0x5015('0x2d')](_0x5015('0x28'),_0x2114b0,_0x54158c);_0x243bc7(_0x54158c);});});}function respondWithStatusCode(_0x3f3d50,_0x2d34c){_0x2d34c=_0x2d34c||0xcc;return function(_0x4b5191){if(_0x4b5191){return _0x3f3d50[_0x5015('0x30')](_0x2d34c);}return _0x3f3d50[_0x5015('0x31')](_0x2d34c)[_0x5015('0x32')]();};}function respondWithResult(_0x5acdc1,_0x43156f){_0x43156f=_0x43156f||0xc8;return function(_0x20c732){if(_0x20c732){return _0x5acdc1[_0x5015('0x31')](_0x43156f)[_0x5015('0x33')](_0x20c732);}};}function respondWithFilteredResult(_0x1721fe,_0x50e70f){return function(_0x158aff){if(_0x158aff){var _0x5f41c7=typeof _0x50e70f[_0x5015('0x34')]===_0x5015('0x35')&&typeof _0x50e70f[_0x5015('0x36')]===_0x5015('0x35');var _0x7f4d82=_0x158aff['count'];var _0x49eada=_0x5f41c7?0x0:_0x50e70f[_0x5015('0x34')];var _0x205b52=_0x5f41c7?_0x158aff[_0x5015('0x37')]:_0x50e70f[_0x5015('0x34')]+_0x50e70f[_0x5015('0x36')];var _0x44d405;if(_0x205b52>=_0x7f4d82){_0x205b52=_0x7f4d82;_0x44d405=0xc8;}else{_0x44d405=0xce;}_0x1721fe[_0x5015('0x31')](_0x44d405);return _0x1721fe[_0x5015('0x38')](_0x5015('0x39'),_0x49eada+'-'+_0x205b52+'/'+_0x7f4d82)[_0x5015('0x33')](_0x158aff);}return null;};}function patchUpdates(_0x783316){return function(_0x38c139){try{jsonpatch['apply'](_0x38c139,_0x783316,!![]);}catch(_0x27e427){return BPromise[_0x5015('0x3a')](_0x27e427);}return _0x38c139['save']();};}function saveUpdates(_0xd5a533,_0x1ddc72){return function(_0x2f78e4){if(_0x2f78e4){return _0x2f78e4[_0x5015('0x3b')](_0xd5a533)[_0x5015('0x26')](function(_0x41263c){return _0x41263c;});}return null;};}function removeEntity(_0x4aaca9,_0x7eb923){return function(_0x5c7686){if(_0x5c7686){return _0x5c7686[_0x5015('0x3c')]()['then'](function(){var _0x51e0e4=_0x5c7686[_0x5015('0x3d')]({'plain':!![]});var _0x3eaa48=_0x5015('0x3e');return db['UserProfileResource']['destroy']({'where':{'type':_0x3eaa48,'resourceId':_0x51e0e4['id']}})[_0x5015('0x26')](function(){return _0x5c7686;});})['then'](function(){_0x4aaca9[_0x5015('0x31')](0xcc)['end']();});}};}function handleEntityNotFound(_0x550e69,_0x1bad19){return function(_0x450dc7){if(!_0x450dc7){_0x550e69[_0x5015('0x30')](0x194);}return _0x450dc7;};}function handleError(_0x4b2fff,_0x2ae55a){_0x2ae55a=_0x2ae55a||0x1f4;return function(_0x541377){logger['error'](_0x541377['stack']);if(_0x541377[_0x5015('0x3f')]){delete _0x541377[_0x5015('0x3f')];}_0x4b2fff['status'](_0x2ae55a)[_0x5015('0x40')](_0x541377);};}exports[_0x5015('0x41')]=function(_0x26efa2,_0x2c1452){var _0x4ce5c3={'include':[{'model':db[_0x5015('0x42')],'as':'mandatoryDispositionPause'}]},_0x1baf64={},_0x4618fb={'count':0x0,'rows':[]};var _0x2519cf=_[_0x5015('0x43')](db[_0x5015('0x44')][_0x5015('0x45')],function(_0x591f07){return{'name':_0x591f07[_0x5015('0x46')],'type':_0x591f07[_0x5015('0x47')][_0x5015('0x48')]};});_0x1baf64[_0x5015('0x49')]=_[_0x5015('0x43')](_0x2519cf,'name');_0x1baf64['query']=_[_0x5015('0x4a')](_0x26efa2[_0x5015('0x4b')]);_0x1baf64['filters']=_[_0x5015('0x4c')](_0x1baf64['model'],_0x1baf64[_0x5015('0x4b')]);_0x4ce5c3['attributes']=_['intersection'](_0x1baf64['model'],qs[_0x5015('0x4d')](_0x26efa2['query'][_0x5015('0x4d')]));_0x4ce5c3[_0x5015('0x4e')]=_0x4ce5c3['attributes'][_0x5015('0x4f')]?_0x4ce5c3[_0x5015('0x4e')]:_0x1baf64[_0x5015('0x49')];if(!_0x26efa2['query'][_0x5015('0x50')](_0x5015('0x51'))){_0x4ce5c3[_0x5015('0x36')]=qs[_0x5015('0x36')](_0x26efa2[_0x5015('0x4b')]['limit']);_0x4ce5c3[_0x5015('0x34')]=qs[_0x5015('0x34')](_0x26efa2[_0x5015('0x4b')][_0x5015('0x34')]);}_0x4ce5c3[_0x5015('0x52')]=qs[_0x5015('0x53')](_0x26efa2[_0x5015('0x4b')]['sort']);_0x4ce5c3[_0x5015('0x54')]=qs['filters'](_[_0x5015('0x55')](_0x26efa2[_0x5015('0x4b')],_0x1baf64[_0x5015('0x56')]),_0x2519cf);if(_0x26efa2[_0x5015('0x4b')][_0x5015('0x57')]){_0x4ce5c3[_0x5015('0x54')]=_[_0x5015('0x58')](_0x4ce5c3[_0x5015('0x54')],{'$or':_[_0x5015('0x43')](_0x2519cf,function(_0x2d2389){if(_0x2d2389[_0x5015('0x47')]!==_0x5015('0x59')){var _0x44793b={};_0x44793b[_0x2d2389[_0x5015('0x3f')]]={'$like':'%'+_0x26efa2[_0x5015('0x4b')]['filter']+'%'};return _0x44793b;}})});}_0x4ce5c3=_[_0x5015('0x58')]({},_0x4ce5c3,_0x26efa2['options']);var _0x45d075={'where':_0x4ce5c3[_0x5015('0x54')]};return db['FaxAccount'][_0x5015('0x37')](_0x45d075)['then'](function(_0xc5f93f){_0x4618fb[_0x5015('0x37')]=_0xc5f93f;if(_0x26efa2['query'][_0x5015('0x5a')]){_0x4ce5c3[_0x5015('0x5b')]=[{'all':!![]}];}return db['FaxAccount'][_0x5015('0x5c')](_0x4ce5c3);})['then'](function(_0xc48b82){_0x4618fb[_0x5015('0x5d')]=_0xc48b82;return _0x4618fb;})['then'](respondWithFilteredResult(_0x2c1452,_0x4ce5c3))['catch'](handleError(_0x2c1452,null));};exports[_0x5015('0x5e')]=function(_0x4c0994,_0x52ed45){var _0x21e937={'raw':![],'where':{'id':_0x4c0994[_0x5015('0x5f')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x459548={};_0x459548[_0x5015('0x49')]=_[_0x5015('0x4a')](db['FaxAccount']['rawAttributes']);_0x459548[_0x5015('0x4b')]=_[_0x5015('0x4a')](_0x4c0994[_0x5015('0x4b')]);_0x459548[_0x5015('0x56')]=_[_0x5015('0x4c')](_0x459548[_0x5015('0x49')],_0x459548['query']);_0x21e937[_0x5015('0x4e')]=_[_0x5015('0x4c')](_0x459548[_0x5015('0x49')],qs['fields'](_0x4c0994[_0x5015('0x4b')][_0x5015('0x4d')]));_0x21e937[_0x5015('0x4e')]=_0x21e937[_0x5015('0x4e')][_0x5015('0x4f')]?_0x21e937['attributes']:_0x459548[_0x5015('0x49')];if(_0x4c0994[_0x5015('0x4b')]['includeAll']){_0x21e937[_0x5015('0x5b')]=[{'all':!![]}];}_0x21e937=_[_0x5015('0x58')]({},_0x21e937,_0x4c0994[_0x5015('0x60')]);return db[_0x5015('0x44')][_0x5015('0x61')](_0x21e937)[_0x5015('0x26')](handleEntityNotFound(_0x52ed45,null))[_0x5015('0x26')](respondWithResult(_0x52ed45,null))['catch'](handleError(_0x52ed45,null));};exports[_0x5015('0x62')]=function(_0x364dd4,_0x4d9eb2){return db[_0x5015('0x44')][_0x5015('0x62')](_0x364dd4[_0x5015('0x63')],{})[_0x5015('0x26')](function(_0x4df0d7){var _0x596ca6=_0x364dd4[_0x5015('0x64')][_0x5015('0x3d')]({'plain':!![]});if(!_0x596ca6)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x596ca6['role']===_0x5015('0x64')){var _0x24ffd6=_0x4df0d7[_0x5015('0x3d')]({'plain':!![]});var _0x38e28a=_0x5015('0x3e');return db['UserProfileSection'][_0x5015('0x61')]({'where':{'name':_0x38e28a,'userProfileId':_0x596ca6[_0x5015('0x65')]},'raw':!![]})[_0x5015('0x26')](function(_0xeea210){if(_0xeea210&&_0xeea210['autoAssociation']===0x0){return db[_0x5015('0x66')][_0x5015('0x62')]({'name':_0x24ffd6[_0x5015('0x3f')],'resourceId':_0x24ffd6['id'],'type':_0xeea210[_0x5015('0x3f')],'sectionId':_0xeea210['id']},{})['then'](function(){return _0x4df0d7;});}else{return _0x4df0d7;}})[_0x5015('0x2f')](function(_0x5d3e00){logger[_0x5015('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5d3e00);throw _0x5d3e00;});}return _0x4df0d7;})[_0x5015('0x26')](respondWithResult(_0x4d9eb2,0xc9))[_0x5015('0x2f')](handleError(_0x4d9eb2,null));};exports['update']=function(_0xfd1553,_0xad3203){if(_0xfd1553['body']['id']){delete _0xfd1553[_0x5015('0x63')]['id'];}return db[_0x5015('0x44')][_0x5015('0x61')]({'where':{'id':_0xfd1553['params']['id']},'include':[{'model':db[_0x5015('0x42')],'as':'mandatoryDispositionPause'}]})[_0x5015('0x26')](handleEntityNotFound(_0xad3203,null))['then'](saveUpdates(_0xfd1553[_0x5015('0x63')],null))[_0x5015('0x26')](respondWithResult(_0xad3203,null))[_0x5015('0x2f')](handleError(_0xad3203,null));};exports[_0x5015('0x3c')]=function(_0xa9a5fb,_0x20353f){return db['FaxAccount']['find']({'where':{'id':_0xa9a5fb[_0x5015('0x5f')]['id']}})[_0x5015('0x26')](handleEntityNotFound(_0x20353f,null))['then'](removeEntity(_0x20353f,null))['catch'](handleError(_0x20353f,null));};exports[_0x5015('0x67')]=function(_0x36e484,_0x3cfc85){return db[_0x5015('0x44')][_0x5015('0x67')]()[_0x5015('0x26')](respondWithResult(_0x3cfc85,null))[_0x5015('0x2f')](handleError(_0x3cfc85,null));};exports[_0x5015('0x68')]=function(_0x472f10,_0xf23174,_0xb7c3d6){if(_0x472f10[_0x5015('0x63')]['id']){delete _0x472f10[_0x5015('0x63')]['id'];}return db['FaxAccount'][_0x5015('0x61')]({'where':{'id':_0x472f10['params']['id']}})['then'](handleEntityNotFound(_0xf23174,null))['then'](function(_0x30a1cb){if(_0x30a1cb){_0x472f10[_0x5015('0x63')][_0x5015('0x69')]=_0x30a1cb['id'];return db[_0x5015('0x6a')][_0x5015('0x62')](_0x472f10[_0x5015('0x63')]);}})[_0x5015('0x26')](respondWithResult(_0xf23174,null))['catch'](handleError(_0xf23174,null));};exports[_0x5015('0x6b')]=function(_0x5e4086,_0xba3556,_0x5b7958){var _0x447772={'raw':![],'where':{}};var _0x274eda={};var _0x9c1777={'count':0x0,'rows':[]};return db[_0x5015('0x44')][_0x5015('0x6c')]({'where':{'id':_0x5e4086['params']['id']}})['then'](handleEntityNotFound(_0xba3556,null))['then'](function(_0x1b4150){if(_0x1b4150){_0x274eda[_0x5015('0x49')]=_[_0x5015('0x4a')](db[_0x5015('0x6a')][_0x5015('0x45')]);_0x274eda[_0x5015('0x4b')]=_[_0x5015('0x4a')](_0x5e4086[_0x5015('0x4b')]);_0x274eda[_0x5015('0x56')]=_[_0x5015('0x4c')](_0x274eda[_0x5015('0x49')],_0x274eda[_0x5015('0x4b')]);_0x447772[_0x5015('0x4e')]=_[_0x5015('0x4c')](_0x274eda[_0x5015('0x49')],qs['fields'](_0x5e4086[_0x5015('0x4b')]['fields']));_0x447772[_0x5015('0x4e')]=_0x447772[_0x5015('0x4e')][_0x5015('0x4f')]?_0x447772['attributes']:_0x274eda[_0x5015('0x49')];if(!_0x5e4086[_0x5015('0x4b')][_0x5015('0x50')](_0x5015('0x51'))){_0x447772['limit']=qs['limit'](_0x5e4086[_0x5015('0x4b')][_0x5015('0x36')]);_0x447772[_0x5015('0x34')]=qs[_0x5015('0x34')](_0x5e4086[_0x5015('0x4b')][_0x5015('0x34')]);}_0x447772['order']=qs[_0x5015('0x53')](_0x5e4086[_0x5015('0x4b')][_0x5015('0x53')]);_0x447772[_0x5015('0x54')]=qs[_0x5015('0x56')](_[_0x5015('0x55')](_0x5e4086['query'],_0x274eda[_0x5015('0x56')]));_0x447772[_0x5015('0x54')][_0x5015('0x69')]=_0x1b4150['id'];if(_0x5e4086[_0x5015('0x4b')]['filter']){_0x447772[_0x5015('0x54')]=_[_0x5015('0x58')](_0x447772[_0x5015('0x54')],{'$or':_[_0x5015('0x43')](_0x447772[_0x5015('0x4e')],function(_0x13c1cc){var _0x5aca8e={};_0x5aca8e[_0x13c1cc]={'$like':'%'+_0x5e4086[_0x5015('0x4b')]['filter']+'%'};return _0x5aca8e;})});}_0x447772=_[_0x5015('0x58')]({},_0x447772,_0x5e4086[_0x5015('0x60')]);return db['Disposition'][_0x5015('0x37')]({'where':_0x447772['where']})[_0x5015('0x26')](function(_0x2c3ce9){_0x9c1777['count']=_0x2c3ce9;if(_0x5e4086[_0x5015('0x4b')][_0x5015('0x5a')]){_0x447772[_0x5015('0x5b')]=[{'all':!![]}];}return db[_0x5015('0x6a')][_0x5015('0x5c')](_0x447772);})['then'](function(_0x328da4){_0x9c1777[_0x5015('0x5d')]=_0x328da4;return _0x9c1777;});}})['then'](respondWithFilteredResult(_0xba3556,_0x447772))[_0x5015('0x2f')](handleError(_0xba3556,null));};exports[_0x5015('0x6d')]=function(_0x251f79,_0x13308c,_0x2f7b28){return db[_0x5015('0x44')]['find']({'where':{'id':_0x251f79['params']['id']}})[_0x5015('0x26')](handleEntityNotFound(_0x13308c,null))[_0x5015('0x26')](function(_0x41ab58){if(_0x41ab58){return _0x41ab58[_0x5015('0x6d')](_0x251f79[_0x5015('0x4b')][_0x5015('0x6e')]);}})[_0x5015('0x26')](respondWithStatusCode(_0x13308c,null))[_0x5015('0x2f')](handleError(_0x13308c,null));};exports[_0x5015('0x6f')]=function(_0x3a1c08,_0x32a885,_0x2acb9a){if(_0x3a1c08[_0x5015('0x63')]['id']){delete _0x3a1c08[_0x5015('0x63')]['id'];}return db[_0x5015('0x44')][_0x5015('0x61')]({'where':{'id':_0x3a1c08['params']['id']}})[_0x5015('0x26')](handleEntityNotFound(_0x32a885,null))[_0x5015('0x26')](function(_0x4592ff){if(_0x4592ff){_0x3a1c08[_0x5015('0x63')][_0x5015('0x69')]=_0x4592ff['id'];return db['CannedAnswer'][_0x5015('0x62')](_0x3a1c08[_0x5015('0x63')]);}})[_0x5015('0x26')](respondWithResult(_0x32a885,null))[_0x5015('0x2f')](handleError(_0x32a885,null));};exports[_0x5015('0x70')]=function(_0x99c40b,_0x24b92b,_0x152571){var _0x54d233={'raw':![],'where':{}};var _0x17ba4d={};var _0x1ed588={'count':0x0,'rows':[]};return db[_0x5015('0x44')][_0x5015('0x6c')]({'where':{'id':_0x99c40b[_0x5015('0x5f')]['id']}})[_0x5015('0x26')](handleEntityNotFound(_0x24b92b,null))[_0x5015('0x26')](function(_0x4b5670){if(_0x4b5670){_0x17ba4d[_0x5015('0x49')]=_[_0x5015('0x4a')](db[_0x5015('0x71')][_0x5015('0x45')]);_0x17ba4d[_0x5015('0x4b')]=_['keys'](_0x99c40b[_0x5015('0x4b')]);_0x17ba4d[_0x5015('0x56')]=_['intersection'](_0x17ba4d[_0x5015('0x49')],_0x17ba4d['query']);_0x54d233[_0x5015('0x4e')]=_[_0x5015('0x4c')](_0x17ba4d['model'],qs['fields'](_0x99c40b[_0x5015('0x4b')]['fields']));_0x54d233['attributes']=_0x54d233[_0x5015('0x4e')][_0x5015('0x4f')]?_0x54d233['attributes']:_0x17ba4d['model'];if(!_0x99c40b[_0x5015('0x4b')]['hasOwnProperty'](_0x5015('0x51'))){_0x54d233[_0x5015('0x36')]=qs[_0x5015('0x36')](_0x99c40b[_0x5015('0x4b')][_0x5015('0x36')]);_0x54d233['offset']=qs[_0x5015('0x34')](_0x99c40b[_0x5015('0x4b')]['offset']);}_0x54d233[_0x5015('0x52')]=qs[_0x5015('0x53')](_0x99c40b['query'][_0x5015('0x53')]);_0x54d233[_0x5015('0x54')]=qs[_0x5015('0x56')](_[_0x5015('0x55')](_0x99c40b[_0x5015('0x4b')],_0x17ba4d[_0x5015('0x56')]));_0x54d233[_0x5015('0x54')][_0x5015('0x69')]=_0x4b5670['id'];if(_0x99c40b[_0x5015('0x4b')][_0x5015('0x57')]){_0x54d233[_0x5015('0x54')]=_[_0x5015('0x58')](_0x54d233[_0x5015('0x54')],{'$or':_[_0x5015('0x43')](_0x54d233[_0x5015('0x4e')],function(_0x138d45){var _0x225a80={};_0x225a80[_0x138d45]={'$like':'%'+_0x99c40b[_0x5015('0x4b')][_0x5015('0x57')]+'%'};return _0x225a80;})});}_0x54d233=_['merge']({},_0x54d233,_0x99c40b[_0x5015('0x60')]);return db[_0x5015('0x71')]['count']({'where':_0x54d233['where']})[_0x5015('0x26')](function(_0xa997c5){_0x1ed588[_0x5015('0x37')]=_0xa997c5;if(_0x99c40b[_0x5015('0x4b')][_0x5015('0x5a')]){_0x54d233[_0x5015('0x5b')]=[{'all':!![]}];}return db[_0x5015('0x71')]['findAll'](_0x54d233);})[_0x5015('0x26')](function(_0x3ed53c){_0x1ed588[_0x5015('0x5d')]=_0x3ed53c;return _0x1ed588;});}})[_0x5015('0x26')](respondWithFilteredResult(_0x24b92b,_0x54d233))[_0x5015('0x2f')](handleError(_0x24b92b,null));};exports[_0x5015('0x72')]=function(_0x1c42e2,_0x3cb777,_0x389092){return db['FaxAccount'][_0x5015('0x61')]({'where':{'id':_0x1c42e2[_0x5015('0x5f')]['id']}})[_0x5015('0x26')](handleEntityNotFound(_0x3cb777,null))[_0x5015('0x26')](function(_0x580f59){if(_0x580f59){return _0x580f59[_0x5015('0x72')](_0x1c42e2[_0x5015('0x4b')][_0x5015('0x6e')]);}})[_0x5015('0x26')](respondWithStatusCode(_0x3cb777,null))[_0x5015('0x2f')](handleError(_0x3cb777,null));};exports[_0x5015('0x73')]=function(_0xbae8e1,_0xcf3d88,_0x484d9e){return db[_0x5015('0x74')][_0x5015('0x61')]({'where':{'id':_0xbae8e1[_0x5015('0x5f')]['id']}})['then'](handleEntityNotFound(_0xcf3d88,null))[_0x5015('0x26')](function(_0x524dd3){if(_0x524dd3){return _0x524dd3[_0x5015('0x73')](_0xbae8e1[_0x5015('0x63')]['ids'],_['omit'](_0xbae8e1['body'],[_0x5015('0x6e'),'id'])||{});}})[_0x5015('0x26')](respondWithResult(_0xcf3d88,null))[_0x5015('0x2f')](handleError(_0xcf3d88,null));};exports[_0x5015('0x75')]=function(_0x565687,_0x350972,_0x41e878){var _0x244d92={'raw':![],'where':{}};var _0x57b58c={};var _0x13addf={'count':0x0,'rows':[]};return db[_0x5015('0x44')][_0x5015('0x6c')]({'where':{'id':_0x565687['params']['id']}})[_0x5015('0x26')](handleEntityNotFound(_0x350972,null))[_0x5015('0x26')](function(_0x2e5abd){if(_0x2e5abd){_0x57b58c['model']=_['keys'](db['FaxInteraction']['rawAttributes']);_0x57b58c[_0x5015('0x4b')]=_[_0x5015('0x4a')](_0x565687[_0x5015('0x4b')]);_0x57b58c[_0x5015('0x56')]=_['intersection'](_0x57b58c[_0x5015('0x49')],_0x57b58c[_0x5015('0x4b')]);_0x244d92[_0x5015('0x4e')]=_['intersection'](_0x57b58c[_0x5015('0x49')],qs[_0x5015('0x4d')](_0x565687[_0x5015('0x4b')][_0x5015('0x4d')]));_0x244d92[_0x5015('0x4e')]=_0x244d92[_0x5015('0x4e')][_0x5015('0x4f')]?_0x244d92[_0x5015('0x4e')]:_0x57b58c['model'];if(!_0x565687[_0x5015('0x4b')]['hasOwnProperty'](_0x5015('0x51'))){_0x244d92[_0x5015('0x36')]=qs[_0x5015('0x36')](_0x565687['query']['limit']);_0x244d92['offset']=qs[_0x5015('0x34')](_0x565687[_0x5015('0x4b')][_0x5015('0x34')]);}_0x244d92['order']=qs['sort'](_0x565687['query'][_0x5015('0x53')]);_0x244d92[_0x5015('0x54')]=qs[_0x5015('0x56')](_[_0x5015('0x55')](_0x565687['query'],_0x57b58c['filters']));_0x244d92[_0x5015('0x54')][_0x5015('0x69')]=_0x2e5abd['id'];if(_0x565687[_0x5015('0x4b')]['filter']){_0x244d92['where']=_[_0x5015('0x58')](_0x244d92[_0x5015('0x54')],{'$or':_[_0x5015('0x43')](_0x244d92[_0x5015('0x4e')],function(_0x34160f){var _0x3672fc={};_0x3672fc[_0x34160f]={'$like':'%'+_0x565687['query']['filter']+'%'};return _0x3672fc;})});}_0x244d92=_[_0x5015('0x58')]({},_0x244d92,_0x565687[_0x5015('0x60')]);return db['FaxInteraction'][_0x5015('0x37')]({'where':_0x244d92['where']})[_0x5015('0x26')](function(_0x4e8962){_0x13addf['count']=_0x4e8962;if(_0x565687[_0x5015('0x4b')][_0x5015('0x5a')]){_0x244d92['include']=[{'model':db[_0x5015('0x76')],'as':_0x5015('0x77'),'required':![]},{'model':db[_0x5015('0x78')],'as':_0x5015('0x79'),'attributes':[_0x5015('0x3f'),_0x5015('0x7a'),_0x5015('0x7b')],'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id','name',_0x5015('0x7c')],'where':_0x565687[_0x5015('0x4b')][_0x5015('0x7d')]?{'id':_0x565687[_0x5015('0x4b')]['tag']}:undefined,'required':_0x565687[_0x5015('0x4b')][_0x5015('0x7d')]?!![]:![]}];}return db['FaxInteraction'][_0x5015('0x5c')](_0x244d92);})[_0x5015('0x26')](function(_0x33490a){_0x13addf['rows']=_0x33490a;return _0x13addf;});}})[_0x5015('0x26')](respondWithFilteredResult(_0x350972,_0x244d92))['catch'](handleError(_0x350972,null));};exports[_0x5015('0x7e')]=function(_0x5e0aed,_0x26f7cf,_0xb9df1c){return db[_0x5015('0x44')][_0x5015('0x6c')]({'where':{'id':_0x5e0aed['params']['id']}})[_0x5015('0x26')](handleEntityNotFound(_0x26f7cf,null))[_0x5015('0x26')](function(_0x11f383){if(_0x11f383){return db[_0x5015('0x7f')][_0x5015('0x80')](function(_0x19d93a){return db[_0x5015('0x81')]['destroy']({'where':{'FaxAccountId':_0x5e0aed['params']['id']},'transaction':_0x19d93a})[_0x5015('0x26')](function(_0xd6c6e2){var _0x2e0911=_[_0x5015('0x43')](_0x5e0aed[_0x5015('0x63')],function(_0xbb0143){_0xbb0143[_0x5015('0x69')]=_0x5e0aed[_0x5015('0x5f')]['id'];return _0xbb0143;});return db[_0x5015('0x81')]['bulkCreate'](_0x2e0911,{'transaction':_0x19d93a});});})['then'](function(){return db[_0x5015('0x81')][_0x5015('0x82')]({'where':{'FaxAccountId':_0x5e0aed[_0x5015('0x5f')]['id']},'order':_0x5015('0x83')});});}})[_0x5015('0x26')](respondWithResult(_0x26f7cf,null))[_0x5015('0x2f')](handleError(_0x26f7cf,null));};exports[_0x5015('0x84')]=function(_0x26a659,_0x24a883,_0x409db1){var _0x3c2a21={};var _0x4c9e07={};var _0x3cffa2;var _0x471802;return db[_0x5015('0x44')][_0x5015('0x6c')]({'where':{'id':_0x26a659[_0x5015('0x5f')]['id']}})[_0x5015('0x26')](handleEntityNotFound(_0x24a883,null))[_0x5015('0x26')](function(_0x2268da){if(_0x2268da){_0x3cffa2=_0x2268da;_0x4c9e07[_0x5015('0x49')]=_['keys'](db[_0x5015('0x81')]['rawAttributes']);_0x4c9e07[_0x5015('0x4b')]=_['keys'](_0x26a659[_0x5015('0x4b')]);_0x4c9e07[_0x5015('0x56')]=_[_0x5015('0x4c')](_0x4c9e07['model'],_0x4c9e07[_0x5015('0x4b')]);_0x3c2a21['attributes']=_[_0x5015('0x4c')](_0x4c9e07[_0x5015('0x49')],qs[_0x5015('0x4d')](_0x26a659[_0x5015('0x4b')][_0x5015('0x4d')]));_0x3c2a21['attributes']=_0x3c2a21[_0x5015('0x4e')][_0x5015('0x4f')]?_0x3c2a21[_0x5015('0x4e')]:_0x4c9e07[_0x5015('0x49')];_0x3c2a21[_0x5015('0x52')]=qs[_0x5015('0x53')](_0x26a659['query'][_0x5015('0x53')]);_0x3c2a21[_0x5015('0x54')]=qs[_0x5015('0x56')](_[_0x5015('0x55')](_0x26a659['query'],_0x4c9e07[_0x5015('0x56')]));if(_0x26a659[_0x5015('0x4b')][_0x5015('0x57')]){_0x3c2a21[_0x5015('0x54')]=_[_0x5015('0x58')](_0x3c2a21[_0x5015('0x54')],{'$or':_['map'](_0x3c2a21[_0x5015('0x4e')],function(_0x4827c9){var _0x2e6e83={};_0x2e6e83[_0x4827c9]={'$like':'%'+_0x26a659['query']['filter']+'%'};return _0x2e6e83;})});}_0x3c2a21=_[_0x5015('0x58')]({},_0x3c2a21,_0x26a659[_0x5015('0x60')]);return _0x3cffa2[_0x5015('0x84')](_0x3c2a21);}})[_0x5015('0x26')](function(_0x48402d){if(_0x48402d){_0x471802=_0x48402d[_0x5015('0x4f')];if(!_0x26a659[_0x5015('0x4b')][_0x5015('0x50')](_0x5015('0x51'))){_0x3c2a21[_0x5015('0x36')]=qs[_0x5015('0x36')](_0x26a659[_0x5015('0x4b')][_0x5015('0x36')]);_0x3c2a21[_0x5015('0x34')]=qs[_0x5015('0x34')](_0x26a659[_0x5015('0x4b')][_0x5015('0x34')]);}return _0x3cffa2[_0x5015('0x84')](_0x3c2a21);}})[_0x5015('0x26')](function(_0x147ba7){if(_0x147ba7){return _0x147ba7?{'count':_0x471802,'rows':_0x147ba7}:null;}})[_0x5015('0x26')](respondWithResult(_0x24a883,null))[_0x5015('0x2f')](handleError(_0x24a883,null));};function Extension(_0x10128d,_0xed0bfc,_0x5b0a6e,_0x230df9){this['context']=_0x5015('0x85');this[_0x5015('0x86')]=_0x10128d[_0x5015('0x87')];this['app']=_0x230df9;this[_0x5015('0x47')]=_0x5015('0x88');this[_0x5015('0x89')]=_0x5015('0x8a');this[_0x5015('0x69')]=_0x10128d['id'];this[_0x5015('0x83')]=_0xed0bfc;this[_0x5015('0x8b')]=_0x5b0a6e;}function createExtensionsReciveFax(_0xf522a3){var _0x322448=0x1;var _0x1ab429=[];_0x1ab429['push'](new Extension(_0xf522a3,_0x322448,'','Answer'));_0x322448+=0x1;_0x1ab429[_0x5015('0x8c')](new Extension(_0xf522a3,_0x322448,_0x5015('0x8d'),_0x5015('0x8e')));_0x322448+=0x1;for(var _0x3525d4 in _0xf522a3){if(_0xf522a3['hasOwnProperty'](_0x3525d4)&&(_0x3525d4===_0x5015('0x8f')||_0x3525d4===_0x5015('0x87')||_0x3525d4===_0x5015('0x90')||_0x3525d4==='faxdetect'||_0x3525d4==='headerinfo'||_0x3525d4==='maxrate'||_0x3525d4===_0x5015('0x91')||_0x3525d4===_0x5015('0x92')||_0x3525d4===_0x5015('0x93'))){_0x1ab429['push'](new Extension(_0xf522a3,_0x322448,_0x5015('0x94')+_0x3525d4+')='+_0xf522a3[_0x3525d4],'Set'));_0x322448+=0x1;}}_0x1ab429['push'](new Extension(_0xf522a3,_0x322448,'6',_0x5015('0x95')));_0x322448+=0x1;_0x1ab429[_0x5015('0x8c')](new Extension(_0xf522a3,_0x322448,_0x5015('0x96'),_0x5015('0x97')));_0x322448=0x0;return _0x1ab429;}exports[_0x5015('0x98')]=function(_0x414967,_0x3abd50,_0x3470ff){var _0x34d694;return db['sequelize'][_0x5015('0x80')](function(_0x240ea5){return db['FaxAccount'][_0x5015('0x62')](_0x414967[_0x5015('0x63')],{'transaction':_0x240ea5})[_0x5015('0x26')](function(_0x765c79){_0x34d694=_0x765c79[_0x5015('0x3d')]({'plain':!![]});return db['VoiceExtension'][_0x5015('0x99')](createExtensionsReciveFax(_0x34d694),{'transaction':_0x240ea5});});})[_0x5015('0x26')](function(){return _0x34d694;})[_0x5015('0x26')](respondWithResult(_0x3abd50,null))[_0x5015('0x2f')](handleError(_0x3abd50,null));};exports[_0x5015('0x9a')]=function(_0xd61849,_0x9aa571,_0x43bee7){var _0x3f9913;return db['sequelize'][_0x5015('0x80')](function(_0x56af6c){return db[_0x5015('0x44')][_0x5015('0x3b')](_0xd61849['body'],{'where':{'id':_0xd61849[_0x5015('0x63')]['id']},'transaction':_0x56af6c})['then'](function(_0x2a12f4){return db['VoiceExtension'][_0x5015('0x3c')]({'where':{'FaxAccountId':_0xd61849[_0x5015('0x63')]['id']},'transaction':_0x56af6c})[_0x5015('0x26')](function(_0x13c53f){return db[_0x5015('0x9b')][_0x5015('0x99')](createExtensionsReciveFax(_[_0x5015('0x9c')](_0xd61849[_0x5015('0x63')],['tech',_0x5015('0x48'),'createdAt',_0x5015('0x9d'),_0x5015('0x9e'),_0x5015('0x9f')])),{'transaction':_0x56af6c});});});})['then'](function(){return db[_0x5015('0x44')][_0x5015('0xa0')](_0xd61849['body']['id']);})[_0x5015('0x26')](respondWithResult(_0x9aa571,null))[_0x5015('0x2f')](handleError(_0x9aa571,null));};exports['getMessages']=function(_0x123ad9,_0x2a1ee2,_0x18df17){var _0x5a466f={'raw':!![],'where':{}};var _0x453ea0={};var _0x2edc87={'count':0x0,'rows':[]};return db[_0x5015('0x44')][_0x5015('0x6c')]({'where':{'id':_0x123ad9[_0x5015('0x5f')]['id']}})[_0x5015('0x26')](handleEntityNotFound(_0x2a1ee2,null))[_0x5015('0x26')](function(_0x54340b){if(_0x54340b){_0x453ea0['model']=_['keys'](db[_0x5015('0xa1')][_0x5015('0x45')]);_0x453ea0[_0x5015('0x4b')]=_[_0x5015('0x4a')](_0x123ad9[_0x5015('0x4b')]);_0x453ea0[_0x5015('0x56')]=_[_0x5015('0x4c')](_0x453ea0[_0x5015('0x49')],_0x453ea0['query']);_0x5a466f[_0x5015('0x4e')]=_[_0x5015('0x4c')](_0x453ea0['model'],qs[_0x5015('0x4d')](_0x123ad9[_0x5015('0x4b')][_0x5015('0x4d')]));_0x5a466f[_0x5015('0x4e')]=_0x5a466f[_0x5015('0x4e')][_0x5015('0x4f')]?_0x5a466f['attributes']:_0x453ea0[_0x5015('0x49')];if(!_0x123ad9[_0x5015('0x4b')][_0x5015('0x50')]('nolimit')){_0x5a466f['limit']=qs[_0x5015('0x36')](_0x123ad9[_0x5015('0x4b')][_0x5015('0x36')]);_0x5a466f[_0x5015('0x34')]=qs[_0x5015('0x34')](_0x123ad9[_0x5015('0x4b')][_0x5015('0x34')]);}_0x5a466f[_0x5015('0x52')]=qs[_0x5015('0x53')](_0x123ad9[_0x5015('0x4b')][_0x5015('0x53')]);_0x5a466f[_0x5015('0x54')]=qs['filters'](_[_0x5015('0x55')](_0x123ad9['query'],_0x453ea0[_0x5015('0x56')]));_0x5a466f['where']['FaxAccountId']=_0x54340b['id'];if(_0x123ad9[_0x5015('0x4b')][_0x5015('0x57')]){_0x5a466f[_0x5015('0x54')]=_[_0x5015('0x58')](_0x5a466f[_0x5015('0x54')],{'$or':_[_0x5015('0x43')](_0x5a466f[_0x5015('0x4e')],function(_0x24283e){var _0x4a2662={};_0x4a2662[_0x24283e]={'$like':'%'+_0x123ad9[_0x5015('0x4b')][_0x5015('0x57')]+'%'};return _0x4a2662;})});}if(_0x123ad9['query'][_0x5015('0xa2')]){var _0x28457f=_0x123ad9[_0x5015('0x4b')][_0x5015('0xa2')][_0x5015('0xa3')](',');var _0x29b911={};_0x29b911[_0x28457f[0x0]]={'$gte':moment(_0x28457f[0x1])[_0x5015('0xa4')](_0x5015('0xa5'))};_0x5a466f['where']=_[_0x5015('0x58')](_0x5a466f['where'],_0x29b911);}_0x5a466f=_[_0x5015('0x58')]({},_0x5a466f,_0x123ad9[_0x5015('0x60')]);return db[_0x5015('0xa1')][_0x5015('0x37')]({'where':_0x5a466f[_0x5015('0x54')]})[_0x5015('0x26')](function(_0x377a19){_0x2edc87['count']=_0x377a19;if(_0x123ad9[_0x5015('0x4b')][_0x5015('0x5a')]){_0x5a466f[_0x5015('0x5b')]=[{'all':!![]}];}return db[_0x5015('0xa1')][_0x5015('0x5c')](_0x5a466f);})[_0x5015('0x26')](function(_0x8b0a4f){_0x2edc87[_0x5015('0x5d')]=_0x8b0a4f;return _0x2edc87;});}})[_0x5015('0x26')](respondWithFilteredResult(_0x2a1ee2,_0x5a466f))[_0x5015('0x2f')](handleError(_0x2a1ee2,null));};exports['send']=function(_0xa2e1fe,_0x487d8a,_0x1e14bb){var _0x39e471,_0x532844={},_0x550aa3;if(_0xa2e1fe[_0x5015('0x63')]['to']){_0x550aa3=_0xa2e1fe['body']['to'][0x0];}return db[_0x5015('0x44')][_0x5015('0x61')]({'where':{'id':_0xa2e1fe['params']['id']},'include':[{'model':db[_0x5015('0xa6')],'as':_0x5015('0xa7'),'include':[{'model':db[_0x5015('0x76')],'as':'Contacts','where':{'fax':_0x550aa3},'limit':0x1,'order':[[_0x5015('0x9d'),_0x5015('0xa8')]]}]}]})[_0x5015('0x26')](handleEntityNotFound(_0x487d8a,null))[_0x5015('0x26')](function(_0x824baf){_0x39e471=_0x824baf;if(_0xa2e1fe['body'][_0x5015('0xa9')]&&_0xa2e1fe['body'][_0x5015('0xa9')]['length']){for(var _0x3fb53e=0x0;_0x3fb53e<_0xa2e1fe['body'][_0x5015('0xa9')]['length'];_0x3fb53e+=0x1){_0xa2e1fe[_0x5015('0x63')][_0x5015('0xa9')][_0x3fb53e]={'filename':_0xa2e1fe[_0x5015('0x63')]['attachments'][_0x3fb53e][_0x5015('0x3f')],'id':_0xa2e1fe['body'][_0x5015('0xa9')][_0x3fb53e]['id'],'path':path['join'](config[_0x5015('0xaa')],'server/files/attachments',_0xa2e1fe[_0x5015('0x63')]['attachments'][_0x3fb53e][_0x5015('0xab')])};}}return respondWithRpcPromise('CheckAfterSend','CheckAfterSend',{'FaxAccountId':_[_0x5015('0xac')](_0xa2e1fe[_0x5015('0x5f')]['id'])?undefined:_0xa2e1fe[_0x5015('0x5f')]['id'],'path':_[_0x5015('0xac')](_0xa2e1fe['body'][_0x5015('0xa9')][0x0]['path'])?undefined:_0xa2e1fe[_0x5015('0x63')]['attachments'][0x0][_0x5015('0x9')],'fax':_[_0x5015('0xac')](_0xa2e1fe[_0x5015('0x63')]['to'][0x0])?undefined:_0xa2e1fe['body']['to'][0x0]},client9002);})['then'](function(){if(_0x39e471){if(_[_0x5015('0xac')](_0xa2e1fe['body'][_0x5015('0xad')])){_0xa2e1fe['body'][_0x5015('0xad')]=util[_0x5015('0xa4')](_0x5015('0xae'),_0x39e471[_0x5015('0x3f')],_0x39e471[_0x5015('0xaf')]);}if(_0x39e471['List']){if(_0x39e471['List'][_0x5015('0xb0')][_0x5015('0x4f')]){return _0x39e471['List'][_0x5015('0xb0')][0x0];}else{return db['CmContact'][_0x5015('0x62')](_[_0x5015('0x1d')](_0xa2e1fe[_0x5015('0x63')],{'firstName':_0xa2e1fe[_0x5015('0x63')]['to'][0x0],'phone':_0xa2e1fe[_0x5015('0x63')]['to'][0x0],'fax':_0xa2e1fe[_0x5015('0x63')]['to'][0x0],'ListId':_0x39e471[_0x5015('0x9f')]}));}}else{throw new Error(_0x5015('0xb1'));}}else{throw new Error(_0x5015('0xb2'));}})[_0x5015('0x26')](function(_0x54c560){if(_0x54c560){return db['FaxInteraction'][_0x5015('0x61')]({'where':{'ContactId':_0x54c560['id'],'closed':![],'FaxAccountId':_0x39e471['id']}})[_0x5015('0x26')](function(_0xce293c){if(_0xce293c){return[_0xce293c,![]];}return db[_0x5015('0x74')]['create']({'UserId':_0xa2e1fe['user']['id'],'ContactId':_0x54c560['id'],'FaxAccountId':_0x39e471['id'],'fax':_0xa2e1fe[_0x5015('0x63')]['to'][0x0],'firstMsgDirection':'out','Messages':[_[_0x5015('0x58')](_0xa2e1fe[_0x5015('0x63')],{'read':![],'body':_0xa2e1fe[_0x5015('0x63')][_0x5015('0xa9')][0x0][_0x5015('0xb3')],'FaxAccountId':_0x39e471['id'],'UserId':_0xa2e1fe[_0x5015('0x64')]['id'],'ContactId':_0x54c560['id'],'AttachmentId':_0xa2e1fe[_0x5015('0x63')][_0x5015('0xa9')][0x0]['id']})]},{'include':[{'model':db[_0x5015('0xa1')],'as':_0x5015('0xb4')}]})['then'](function(_0x2f2352){return[_0x2f2352,!![]];});});}else{throw new Error(_0x5015('0xb5'));}})[_0x5015('0xb6')](function(_0x865a25,_0x5c2ceb){if(_0x5c2ceb){return _0x865a25;}return db['FaxMessage'][_0x5015('0x62')]({'direction':_0x5015('0xb7'),'read':![],'body':_0xa2e1fe['body'][_0x5015('0xa9')][0x0]['filename'],'FaxAccountId':_0x39e471['id'],'FaxInteractionId':_0x865a25['id'],'UserId':_0xa2e1fe[_0x5015('0x64')]['id'],'ContactId':_0x865a25[_0x5015('0xb8')],'AttachmentId':_0xa2e1fe[_0x5015('0x63')][_0x5015('0xa9')][0x0]['id']})['then'](function(_0x224c7a){_0x865a25[_0x5015('0xb9')][_0x5015('0xb4')]=[];_0x865a25[_0x5015('0xb9')]['Messages'][_0x5015('0x8c')](_0x224c7a[_0x5015('0xb9')]);return _0x865a25;});})[_0x5015('0x26')](function(_0x510dd0){respondWithRpcPromise('SendFax',_0x5015('0xba'),{'FaxAccountId':_['isNil'](_0xa2e1fe[_0x5015('0x5f')]['id'])?undefined:_0xa2e1fe[_0x5015('0x5f')]['id'],'path':_[_0x5015('0xac')](_0xa2e1fe[_0x5015('0x63')][_0x5015('0xa9')][0x0][_0x5015('0x9')])?undefined:_0xa2e1fe[_0x5015('0x63')]['attachments'][0x0]['path'],'fax':_[_0x5015('0xac')](_0xa2e1fe['body']['to'][0x0])?undefined:_0xa2e1fe[_0x5015('0x63')]['to'][0x0],'AttachmentId':_0xa2e1fe[_0x5015('0x63')][_0x5015('0xa9')][0x0]['id']},client9002)[_0x5015('0x26')](function(_0x173d79){logger[_0x5015('0x27')](_0x5015('0xbb'),_0x173d79);})['catch'](function(_0x51ed1a){logger['info'](_0x5015('0xbb'),_0x51ed1a);});return _0x510dd0;})[_0x5015('0x26')](respondWithResult(_0x487d8a,null))['catch'](handleError(_0x487d8a,null));};exports[_0x5015('0xbc')]=function(_0xe63ac1,_0x304bb4,_0x4ec19e){return db[_0x5015('0x44')][_0x5015('0x61')]({'where':{'id':_0xe63ac1[_0x5015('0x5f')]['id']}})[_0x5015('0x26')](handleEntityNotFound(_0x304bb4,null))[_0x5015('0x26')](function(_0x4ab8e4){if(_0x4ab8e4){return _0x4ab8e4[_0x5015('0xbc')](_0xe63ac1[_0x5015('0x63')]['ids'],_[_0x5015('0x9c')](_0xe63ac1[_0x5015('0x63')],[_0x5015('0x6e'),'id'])||{})[_0x5015('0xb6')](function(_0xba97a5){for(var _0x2119e2=0x0;_0x2119e2<_0xe63ac1['body']['ids']['length'];_0x2119e2+=0x1){socket[_0x5015('0xbd')](_0x5015('0xbe'),{'UserId':Number(_0xe63ac1[_0x5015('0x63')][_0x5015('0x6e')][_0x2119e2]),'FaxAccountId':Number(_0xe63ac1[_0x5015('0x5f')]['id'])});}return _0xba97a5;});}})[_0x5015('0x26')](respondWithResult(_0x304bb4,null))['catch'](handleError(_0x304bb4,null));};exports[_0x5015('0xbf')]=function(_0x1ff1f5,_0xf85e1d,_0x4fba75){return db[_0x5015('0x44')]['find']({'where':{'id':_0x1ff1f5[_0x5015('0x5f')]['id']}})[_0x5015('0x26')](handleEntityNotFound(_0xf85e1d,null))[_0x5015('0x26')](function(_0x2cf5f4){if(_0x2cf5f4){return _0x2cf5f4[_0x5015('0xbf')](_0x1ff1f5[_0x5015('0x4b')][_0x5015('0x6e')])[_0x5015('0x26')](function(){if(_[_0x5015('0xc0')](_0x1ff1f5['query'][_0x5015('0x6e')])){for(var _0x12bb95=0x0;_0x12bb95<_0x1ff1f5[_0x5015('0x4b')]['ids'][_0x5015('0x4f')];_0x12bb95+=0x1){socket[_0x5015('0xbd')](_0x5015('0xc1'),{'UserId':Number(_0x1ff1f5[_0x5015('0x4b')][_0x5015('0x6e')][_0x12bb95]),'FaxAccountId':Number(_0x1ff1f5[_0x5015('0x5f')]['id'])});}}else{socket[_0x5015('0xbd')](_0x5015('0xc1'),{'UserId':Number(_0x1ff1f5['query'][_0x5015('0x6e')]),'FaxAccountId':Number(_0x1ff1f5[_0x5015('0x5f')]['id'])});}});}})['then'](respondWithStatusCode(_0xf85e1d,null))[_0x5015('0x2f')](handleError(_0xf85e1d,null));};exports[_0x5015('0xc2')]=function(_0x5e5905,_0x5dddf6,_0x1bae5e){var _0x221a79={};var _0x392a34={};var _0x2226c1;var _0x3b4151;return db[_0x5015('0x44')]['findOne']({'where':{'id':_0x5e5905['params']['id']}})['then'](handleEntityNotFound(_0x5dddf6,null))[_0x5015('0x26')](function(_0x569885){if(_0x569885){_0x2226c1=_0x569885;_0x392a34[_0x5015('0x49')]=_[_0x5015('0x4a')](db[_0x5015('0x78')]['rawAttributes']);_0x392a34[_0x5015('0x4b')]=_['keys'](_0x5e5905[_0x5015('0x4b')]);_0x392a34['filters']=_[_0x5015('0x4c')](_0x392a34['model'],_0x392a34[_0x5015('0x4b')]);_0x221a79[_0x5015('0x4e')]=_[_0x5015('0x4c')](_0x392a34[_0x5015('0x49')],qs['fields'](_0x5e5905[_0x5015('0x4b')]['fields']));_0x221a79[_0x5015('0x4e')]=_0x221a79['attributes']['length']?_0x221a79[_0x5015('0x4e')]:_0x392a34[_0x5015('0x49')];_0x221a79['order']=qs[_0x5015('0x53')](_0x5e5905[_0x5015('0x4b')][_0x5015('0x53')]);_0x221a79[_0x5015('0x54')]=qs[_0x5015('0x56')](_[_0x5015('0x55')](_0x5e5905['query'],_0x392a34['filters']));if(_0x5e5905[_0x5015('0x4b')]['filter']){_0x221a79['where']=_['merge'](_0x221a79[_0x5015('0x54')],{'$or':_[_0x5015('0x43')](_0x221a79['attributes'],function(_0x5c0374){var _0xb08316={};_0xb08316[_0x5c0374]={'$like':'%'+_0x5e5905['query']['filter']+'%'};return _0xb08316;})});}_0x221a79=_[_0x5015('0x58')]({},_0x221a79,_0x5e5905[_0x5015('0x60')]);return _0x2226c1['getAgents'](_0x221a79);}})[_0x5015('0x26')](function(_0xb544b3){if(_0xb544b3){_0x3b4151=_0xb544b3['length'];if(!_0x5e5905['query'][_0x5015('0x50')](_0x5015('0x51'))){_0x221a79[_0x5015('0x36')]=qs[_0x5015('0x36')](_0x5e5905[_0x5015('0x4b')][_0x5015('0x36')]);_0x221a79['offset']=qs['offset'](_0x5e5905['query']['offset']);}return _0x2226c1['getAgents'](_0x221a79);}})[_0x5015('0x26')](function(_0x120137){if(_0x120137){return _0x120137?{'count':_0x3b4151,'rows':_0x120137}:null;}})[_0x5015('0x26')](respondWithResult(_0x5dddf6,null))[_0x5015('0x2f')](handleError(_0x5dddf6,null));};
\ No newline at end of file
+var _0x3b1a=['UserProfileResource','stack','name','send','index','Pause','map','FaxAccount','rawAttributes','fieldName','type','key','query','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','merge','filter','options','mandatoryDispositionPause','keys','includeAll','include','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','params','describe','addDisposition','Disposition','findOne','pick','FaxAccountId','findAll','removeDispositions','addAnswer','CannedAnswer','getAnswers','rows','removeAnswers','ids','addInteraction','FaxInteraction','omit','getInteractions','CmContact','Owner','internal','Tag','color','tag','sequelize','transaction','FaxApplication','bulkCreate','findAndCountAll','getApplications','context','from-voip-provider','exten','localstationid','system','description','Fax\x20Extension','priority','appdata','CDR(type)=inbound-fax','ecm','gateway','faxdetect','maxrate','minrate','push','FAXOPT(','Set','/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','addAccountApplications','VoiceExtension','updateAccountApplications','tech','createdAt','updatedAt','ListId','FaxMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','List','Contacts','DESC','attachments','join','root','server/files/attachments','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','List\x20not\x20found','out','filename','Messages','Contact\x20not\x20found','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','spread','emit','isArray','userFaxAccount:remove','User','getAgents','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../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','./faxAccount.socket','jayson/promise','client','http','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','destroy','FaxAccounts'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0x3b1a,0x82));var _0xa3b1=function(_0x496738,_0x3f1a9f){_0x496738=_0x496738-0x0;var _0xee1381=_0x3b1a[_0x496738];return _0xee1381;};'use strict';var emlformat=require(_0xa3b1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa3b1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa3b1('0x2'));var moment=require(_0xa3b1('0x3'));var BPromise=require(_0xa3b1('0x4'));var Mustache=require(_0xa3b1('0x5'));var util=require(_0xa3b1('0x6'));var path=require(_0xa3b1('0x7'));var sox=require(_0xa3b1('0x8'));var csv=require(_0xa3b1('0x9'));var ejs=require(_0xa3b1('0xa'));var fs=require('fs');var fs_extra=require(_0xa3b1('0xb'));var _=require(_0xa3b1('0xc'));var squel=require(_0xa3b1('0xd'));var crypto=require(_0xa3b1('0xe'));var jsforce=require(_0xa3b1('0xf'));var deskjs=require(_0xa3b1('0x10'));var toCsv=require(_0xa3b1('0x9'));var querystring=require('querystring');var Papa=require(_0xa3b1('0x11'));var Redis=require(_0xa3b1('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xa3b1('0x13'));var as=require(_0xa3b1('0x14'));var hardwareService=require(_0xa3b1('0x15'));var logger=require(_0xa3b1('0x16'))(_0xa3b1('0x17'));var utils=require(_0xa3b1('0x18'));var config=require(_0xa3b1('0x19'));var licenseUtil=require(_0xa3b1('0x1a'));var db=require(_0xa3b1('0x1b'))['db'];config[_0xa3b1('0x1c')]=_[_0xa3b1('0x1d')](config[_0xa3b1('0x1c')],{'host':_0xa3b1('0x1e'),'port':0x18eb});var socket=require(_0xa3b1('0x1f'))(new Redis(config[_0xa3b1('0x1c')]));require(_0xa3b1('0x20'))['register'](socket);var jayson=require(_0xa3b1('0x21'));var client=jayson[_0xa3b1('0x22')][_0xa3b1('0x23')]({'port':0x232c});var client9002=jayson[_0xa3b1('0x22')][_0xa3b1('0x23')]({'port':0x232a});function respondWithRpcPromise(_0x5c650a,_0x451a02,_0x1a9029,_0x3c2fe7){return new BPromise(function(_0x18cd55,_0x4e8583){var _0x5831cc=_0x3c2fe7||client;return _0x5831cc[_0xa3b1('0x24')](_0x5c650a,_0x1a9029)[_0xa3b1('0x25')](function(_0x367d00){logger[_0xa3b1('0x26')](_0xa3b1('0x27'),_0x451a02,_0xa3b1('0x28'));logger[_0xa3b1('0x29')](_0xa3b1('0x2a'),_0x451a02,_0xa3b1('0x28'),JSON[_0xa3b1('0x2b')](_0x367d00));if(_0x367d00['error']){if(_0x367d00[_0xa3b1('0x2c')][_0xa3b1('0x2d')]===0x1f4){logger[_0xa3b1('0x2c')]('FaxAccount,\x20%s,\x20%s',_0x451a02,_0x367d00[_0xa3b1('0x2c')][_0xa3b1('0x2e')]);return _0x4e8583(_0x367d00['error'][_0xa3b1('0x2e')]);}logger['error'](_0xa3b1('0x27'),_0x451a02,_0x367d00['error'][_0xa3b1('0x2e')]);return _0x18cd55(_0x367d00['error'][_0xa3b1('0x2e')]);}else{logger[_0xa3b1('0x26')](_0xa3b1('0x27'),_0x451a02,_0xa3b1('0x28'));_0x18cd55(_0x367d00[_0xa3b1('0x2f')][_0xa3b1('0x2e')]);}})[_0xa3b1('0x30')](function(_0x19227c){logger[_0xa3b1('0x2c')]('FaxAccount,\x20%s,\x20%s',_0x451a02,_0x19227c);_0x4e8583(_0x19227c);});});}function respondWithStatusCode(_0xafc28b,_0x3734ce){_0x3734ce=_0x3734ce||0xcc;return function(_0x155706){if(_0x155706){return _0xafc28b['sendStatus'](_0x3734ce);}return _0xafc28b[_0xa3b1('0x31')](_0x3734ce)[_0xa3b1('0x32')]();};}function respondWithResult(_0x2f65c8,_0x525396){_0x525396=_0x525396||0xc8;return function(_0xc7173a){if(_0xc7173a){return _0x2f65c8[_0xa3b1('0x31')](_0x525396)[_0xa3b1('0x33')](_0xc7173a);}};}function respondWithFilteredResult(_0x35e2c4,_0x2f6132){return function(_0x413744){if(_0x413744){var _0x42d33d=typeof _0x2f6132[_0xa3b1('0x34')]===_0xa3b1('0x35')&&typeof _0x2f6132['limit']===_0xa3b1('0x35');var _0xdd7f05=_0x413744['count'];var _0x274ad3=_0x42d33d?0x0:_0x2f6132[_0xa3b1('0x34')];var _0x22ba55=_0x42d33d?_0x413744[_0xa3b1('0x36')]:_0x2f6132['offset']+_0x2f6132[_0xa3b1('0x37')];var _0x4cdd72;if(_0x22ba55>=_0xdd7f05){_0x22ba55=_0xdd7f05;_0x4cdd72=0xc8;}else{_0x4cdd72=0xce;}_0x35e2c4[_0xa3b1('0x31')](_0x4cdd72);return _0x35e2c4[_0xa3b1('0x38')](_0xa3b1('0x39'),_0x274ad3+'-'+_0x22ba55+'/'+_0xdd7f05)[_0xa3b1('0x33')](_0x413744);}return null;};}function patchUpdates(_0x4c41c9){return function(_0x4cd017){try{jsonpatch[_0xa3b1('0x3a')](_0x4cd017,_0x4c41c9,!![]);}catch(_0x52637d){return BPromise['reject'](_0x52637d);}return _0x4cd017[_0xa3b1('0x3b')]();};}function saveUpdates(_0x10671c,_0x1a3710){return function(_0xc573a){if(_0xc573a){return _0xc573a[_0xa3b1('0x3c')](_0x10671c)[_0xa3b1('0x25')](function(_0x59b2e2){return _0x59b2e2;});}return null;};}function removeEntity(_0x450347,_0x137234){return function(_0x3bab9b){if(_0x3bab9b){return _0x3bab9b[_0xa3b1('0x3d')]()[_0xa3b1('0x25')](function(){var _0x256531=_0x3bab9b['get']({'plain':!![]});var _0x49aff1=_0xa3b1('0x3e');return db[_0xa3b1('0x3f')]['destroy']({'where':{'type':_0x49aff1,'resourceId':_0x256531['id']}})[_0xa3b1('0x25')](function(){return _0x3bab9b;});})[_0xa3b1('0x25')](function(){_0x450347['status'](0xcc)[_0xa3b1('0x32')]();});}};}function handleEntityNotFound(_0x2fb943,_0x426101){return function(_0x58a07f){if(!_0x58a07f){_0x2fb943['sendStatus'](0x194);}return _0x58a07f;};}function handleError(_0x26d621,_0x31ae56){_0x31ae56=_0x31ae56||0x1f4;return function(_0x140dc9){logger[_0xa3b1('0x2c')](_0x140dc9[_0xa3b1('0x40')]);if(_0x140dc9[_0xa3b1('0x41')]){delete _0x140dc9['name'];}_0x26d621[_0xa3b1('0x31')](_0x31ae56)[_0xa3b1('0x42')](_0x140dc9);};}exports[_0xa3b1('0x43')]=function(_0x9c06eb,_0x286ff6){var _0xc4a810={'include':[{'model':db[_0xa3b1('0x44')],'as':'mandatoryDispositionPause'}]},_0x141163={},_0x5683fe={'count':0x0,'rows':[]};var _0x2924fa=_[_0xa3b1('0x45')](db[_0xa3b1('0x46')][_0xa3b1('0x47')],function(_0x2697b4){return{'name':_0x2697b4[_0xa3b1('0x48')],'type':_0x2697b4[_0xa3b1('0x49')][_0xa3b1('0x4a')]};});_0x141163['model']=_[_0xa3b1('0x45')](_0x2924fa,_0xa3b1('0x41'));_0x141163[_0xa3b1('0x4b')]=_['keys'](_0x9c06eb['query']);_0x141163['filters']=_[_0xa3b1('0x4c')](_0x141163[_0xa3b1('0x4d')],_0x141163[_0xa3b1('0x4b')]);_0xc4a810[_0xa3b1('0x4e')]=_[_0xa3b1('0x4c')](_0x141163[_0xa3b1('0x4d')],qs[_0xa3b1('0x4f')](_0x9c06eb[_0xa3b1('0x4b')][_0xa3b1('0x4f')]));_0xc4a810[_0xa3b1('0x4e')]=_0xc4a810[_0xa3b1('0x4e')][_0xa3b1('0x50')]?_0xc4a810[_0xa3b1('0x4e')]:_0x141163[_0xa3b1('0x4d')];if(!_0x9c06eb[_0xa3b1('0x4b')][_0xa3b1('0x51')](_0xa3b1('0x52'))){_0xc4a810['limit']=qs['limit'](_0x9c06eb[_0xa3b1('0x4b')][_0xa3b1('0x37')]);_0xc4a810['offset']=qs[_0xa3b1('0x34')](_0x9c06eb[_0xa3b1('0x4b')][_0xa3b1('0x34')]);}_0xc4a810[_0xa3b1('0x53')]=qs[_0xa3b1('0x54')](_0x9c06eb[_0xa3b1('0x4b')][_0xa3b1('0x54')]);_0xc4a810[_0xa3b1('0x55')]=qs[_0xa3b1('0x56')](_['pick'](_0x9c06eb[_0xa3b1('0x4b')],_0x141163[_0xa3b1('0x56')]),_0x2924fa);if(_0x9c06eb[_0xa3b1('0x4b')]['filter']){_0xc4a810[_0xa3b1('0x55')]=_[_0xa3b1('0x57')](_0xc4a810[_0xa3b1('0x55')],{'$or':_[_0xa3b1('0x45')](_0x2924fa,function(_0x31ba4e){if(_0x31ba4e[_0xa3b1('0x49')]!=='VIRTUAL'){var _0x14ccb7={};_0x14ccb7[_0x31ba4e[_0xa3b1('0x41')]]={'$like':'%'+_0x9c06eb['query'][_0xa3b1('0x58')]+'%'};return _0x14ccb7;}})});}_0xc4a810=_['merge']({},_0xc4a810,_0x9c06eb[_0xa3b1('0x59')]);var _0x16dd4c={'where':_0xc4a810[_0xa3b1('0x55')]};return db['FaxAccount']['count'](_0x16dd4c)[_0xa3b1('0x25')](function(_0x20028e){_0x5683fe['count']=_0x20028e;if(_0x9c06eb[_0xa3b1('0x4b')]['includeAll']){_0xc4a810['include']=[{'all':!![]}];}return db['FaxAccount']['findAll'](_0xc4a810);})[_0xa3b1('0x25')](function(_0x2371d6){_0x5683fe['rows']=_0x2371d6;return _0x5683fe;})[_0xa3b1('0x25')](respondWithFilteredResult(_0x286ff6,_0xc4a810))['catch'](handleError(_0x286ff6,null));};exports['show']=function(_0x5c69a5,_0x464509){var _0x4a19a6={'raw':![],'where':{'id':_0x5c69a5['params']['id']},'include':[{'model':db[_0xa3b1('0x44')],'as':_0xa3b1('0x5a')}]},_0x200663={};_0x200663[_0xa3b1('0x4d')]=_[_0xa3b1('0x5b')](db['FaxAccount'][_0xa3b1('0x47')]);_0x200663[_0xa3b1('0x4b')]=_['keys'](_0x5c69a5[_0xa3b1('0x4b')]);_0x200663[_0xa3b1('0x56')]=_[_0xa3b1('0x4c')](_0x200663[_0xa3b1('0x4d')],_0x200663['query']);_0x4a19a6[_0xa3b1('0x4e')]=_['intersection'](_0x200663[_0xa3b1('0x4d')],qs[_0xa3b1('0x4f')](_0x5c69a5[_0xa3b1('0x4b')][_0xa3b1('0x4f')]));_0x4a19a6[_0xa3b1('0x4e')]=_0x4a19a6['attributes'][_0xa3b1('0x50')]?_0x4a19a6[_0xa3b1('0x4e')]:_0x200663[_0xa3b1('0x4d')];if(_0x5c69a5[_0xa3b1('0x4b')][_0xa3b1('0x5c')]){_0x4a19a6[_0xa3b1('0x5d')]=[{'all':!![]}];}_0x4a19a6=_['merge']({},_0x4a19a6,_0x5c69a5[_0xa3b1('0x59')]);return db[_0xa3b1('0x46')][_0xa3b1('0x5e')](_0x4a19a6)[_0xa3b1('0x25')](handleEntityNotFound(_0x464509,null))[_0xa3b1('0x25')](respondWithResult(_0x464509,null))[_0xa3b1('0x30')](handleError(_0x464509,null));};exports[_0xa3b1('0x5f')]=function(_0x40c0fd,_0x11c003){return db[_0xa3b1('0x46')]['create'](_0x40c0fd[_0xa3b1('0x60')],{})[_0xa3b1('0x25')](function(_0x40f243){var _0x7d53ad=_0x40c0fd[_0xa3b1('0x61')][_0xa3b1('0x62')]({'plain':!![]});if(!_0x7d53ad)throw new Error(_0xa3b1('0x63'));if(_0x7d53ad[_0xa3b1('0x64')]===_0xa3b1('0x61')){var _0x51132a=_0x40f243['get']({'plain':!![]});var _0x1a1073=_0xa3b1('0x3e');return db['UserProfileSection'][_0xa3b1('0x5e')]({'where':{'name':_0x1a1073,'userProfileId':_0x7d53ad[_0xa3b1('0x65')]},'raw':!![]})[_0xa3b1('0x25')](function(_0x128520){if(_0x128520&&_0x128520['autoAssociation']===0x0){return db['UserProfileResource'][_0xa3b1('0x5f')]({'name':_0x51132a[_0xa3b1('0x41')],'resourceId':_0x51132a['id'],'type':_0x128520[_0xa3b1('0x41')],'sectionId':_0x128520['id']},{})['then'](function(){return _0x40f243;});}else{return _0x40f243;}})[_0xa3b1('0x30')](function(_0x32f705){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x32f705);throw _0x32f705;});}return _0x40f243;})[_0xa3b1('0x25')](respondWithResult(_0x11c003,0xc9))[_0xa3b1('0x30')](handleError(_0x11c003,null));};exports[_0xa3b1('0x3c')]=function(_0x5d38d0,_0x4608ab){if(_0x5d38d0[_0xa3b1('0x60')]['id']){delete _0x5d38d0[_0xa3b1('0x60')]['id'];}return db[_0xa3b1('0x46')][_0xa3b1('0x5e')]({'where':{'id':_0x5d38d0[_0xa3b1('0x66')]['id']},'include':[{'model':db[_0xa3b1('0x44')],'as':_0xa3b1('0x5a')}]})[_0xa3b1('0x25')](handleEntityNotFound(_0x4608ab,null))['then'](saveUpdates(_0x5d38d0[_0xa3b1('0x60')],null))[_0xa3b1('0x25')](respondWithResult(_0x4608ab,null))['catch'](handleError(_0x4608ab,null));};exports[_0xa3b1('0x3d')]=function(_0x1536ff,_0x560deb){return db['FaxAccount']['find']({'where':{'id':_0x1536ff[_0xa3b1('0x66')]['id']}})[_0xa3b1('0x25')](handleEntityNotFound(_0x560deb,null))[_0xa3b1('0x25')](removeEntity(_0x560deb,null))['catch'](handleError(_0x560deb,null));};exports['describe']=function(_0x4218c4,_0x10aecf){return db[_0xa3b1('0x46')][_0xa3b1('0x67')]()[_0xa3b1('0x25')](respondWithResult(_0x10aecf,null))['catch'](handleError(_0x10aecf,null));};exports[_0xa3b1('0x68')]=function(_0x27bc9a,_0x131c93,_0x42621){if(_0x27bc9a[_0xa3b1('0x60')]['id']){delete _0x27bc9a[_0xa3b1('0x60')]['id'];}return db[_0xa3b1('0x46')][_0xa3b1('0x5e')]({'where':{'id':_0x27bc9a[_0xa3b1('0x66')]['id']}})[_0xa3b1('0x25')](handleEntityNotFound(_0x131c93,null))[_0xa3b1('0x25')](function(_0x3e36aa){if(_0x3e36aa){_0x27bc9a[_0xa3b1('0x60')]['FaxAccountId']=_0x3e36aa['id'];return db[_0xa3b1('0x69')][_0xa3b1('0x5f')](_0x27bc9a['body']);}})[_0xa3b1('0x25')](respondWithResult(_0x131c93,null))[_0xa3b1('0x30')](handleError(_0x131c93,null));};exports['getDispositions']=function(_0x26e1e8,_0x1eb20a,_0xd2a85c){var _0x37e5c3={'raw':![],'where':{}};var _0x650e3e={};var _0x25d18d={'count':0x0,'rows':[]};return db['FaxAccount'][_0xa3b1('0x6a')]({'where':{'id':_0x26e1e8[_0xa3b1('0x66')]['id']}})['then'](handleEntityNotFound(_0x1eb20a,null))[_0xa3b1('0x25')](function(_0x50b445){if(_0x50b445){_0x650e3e[_0xa3b1('0x4d')]=_[_0xa3b1('0x5b')](db[_0xa3b1('0x69')]['rawAttributes']);_0x650e3e['query']=_['keys'](_0x26e1e8['query']);_0x650e3e[_0xa3b1('0x56')]=_[_0xa3b1('0x4c')](_0x650e3e[_0xa3b1('0x4d')],_0x650e3e['query']);_0x37e5c3[_0xa3b1('0x4e')]=_[_0xa3b1('0x4c')](_0x650e3e[_0xa3b1('0x4d')],qs['fields'](_0x26e1e8[_0xa3b1('0x4b')]['fields']));_0x37e5c3['attributes']=_0x37e5c3[_0xa3b1('0x4e')]['length']?_0x37e5c3[_0xa3b1('0x4e')]:_0x650e3e['model'];if(!_0x26e1e8['query'][_0xa3b1('0x51')]('nolimit')){_0x37e5c3[_0xa3b1('0x37')]=qs[_0xa3b1('0x37')](_0x26e1e8[_0xa3b1('0x4b')][_0xa3b1('0x37')]);_0x37e5c3['offset']=qs[_0xa3b1('0x34')](_0x26e1e8[_0xa3b1('0x4b')][_0xa3b1('0x34')]);}_0x37e5c3[_0xa3b1('0x53')]=qs['sort'](_0x26e1e8['query'][_0xa3b1('0x54')]);_0x37e5c3[_0xa3b1('0x55')]=qs[_0xa3b1('0x56')](_[_0xa3b1('0x6b')](_0x26e1e8[_0xa3b1('0x4b')],_0x650e3e['filters']));_0x37e5c3[_0xa3b1('0x55')][_0xa3b1('0x6c')]=_0x50b445['id'];if(_0x26e1e8[_0xa3b1('0x4b')][_0xa3b1('0x58')]){_0x37e5c3[_0xa3b1('0x55')]=_[_0xa3b1('0x57')](_0x37e5c3[_0xa3b1('0x55')],{'$or':_[_0xa3b1('0x45')](_0x37e5c3['attributes'],function(_0x3be70f){var _0x4615fc={};_0x4615fc[_0x3be70f]={'$like':'%'+_0x26e1e8[_0xa3b1('0x4b')]['filter']+'%'};return _0x4615fc;})});}_0x37e5c3=_[_0xa3b1('0x57')]({},_0x37e5c3,_0x26e1e8['options']);return db[_0xa3b1('0x69')]['count']({'where':_0x37e5c3[_0xa3b1('0x55')]})['then'](function(_0x546ca7){_0x25d18d[_0xa3b1('0x36')]=_0x546ca7;if(_0x26e1e8[_0xa3b1('0x4b')][_0xa3b1('0x5c')]){_0x37e5c3[_0xa3b1('0x5d')]=[{'all':!![]}];}return db['Disposition'][_0xa3b1('0x6d')](_0x37e5c3);})['then'](function(_0x16c8f9){_0x25d18d['rows']=_0x16c8f9;return _0x25d18d;});}})[_0xa3b1('0x25')](respondWithFilteredResult(_0x1eb20a,_0x37e5c3))[_0xa3b1('0x30')](handleError(_0x1eb20a,null));};exports[_0xa3b1('0x6e')]=function(_0x5c39b5,_0x52ea82,_0x1e7eec){return db['FaxAccount'][_0xa3b1('0x5e')]({'where':{'id':_0x5c39b5[_0xa3b1('0x66')]['id']}})[_0xa3b1('0x25')](handleEntityNotFound(_0x52ea82,null))[_0xa3b1('0x25')](function(_0x3929b6){if(_0x3929b6){return _0x3929b6[_0xa3b1('0x6e')](_0x5c39b5[_0xa3b1('0x4b')]['ids']);}})[_0xa3b1('0x25')](respondWithStatusCode(_0x52ea82,null))[_0xa3b1('0x30')](handleError(_0x52ea82,null));};exports[_0xa3b1('0x6f')]=function(_0x143124,_0x4e4195,_0x2b659b){if(_0x143124[_0xa3b1('0x60')]['id']){delete _0x143124[_0xa3b1('0x60')]['id'];}return db[_0xa3b1('0x46')]['find']({'where':{'id':_0x143124[_0xa3b1('0x66')]['id']}})[_0xa3b1('0x25')](handleEntityNotFound(_0x4e4195,null))['then'](function(_0x2a11f5){if(_0x2a11f5){_0x143124[_0xa3b1('0x60')][_0xa3b1('0x6c')]=_0x2a11f5['id'];return db[_0xa3b1('0x70')][_0xa3b1('0x5f')](_0x143124['body']);}})['then'](respondWithResult(_0x4e4195,null))[_0xa3b1('0x30')](handleError(_0x4e4195,null));};exports[_0xa3b1('0x71')]=function(_0x9eb745,_0x544179,_0x2d027e){var _0x40417f={'raw':![],'where':{}};var _0x28254a={};var _0x4e07c7={'count':0x0,'rows':[]};return db[_0xa3b1('0x46')][_0xa3b1('0x6a')]({'where':{'id':_0x9eb745[_0xa3b1('0x66')]['id']}})[_0xa3b1('0x25')](handleEntityNotFound(_0x544179,null))['then'](function(_0x286cfa){if(_0x286cfa){_0x28254a['model']=_[_0xa3b1('0x5b')](db[_0xa3b1('0x70')]['rawAttributes']);_0x28254a[_0xa3b1('0x4b')]=_[_0xa3b1('0x5b')](_0x9eb745[_0xa3b1('0x4b')]);_0x28254a[_0xa3b1('0x56')]=_['intersection'](_0x28254a[_0xa3b1('0x4d')],_0x28254a[_0xa3b1('0x4b')]);_0x40417f[_0xa3b1('0x4e')]=_['intersection'](_0x28254a[_0xa3b1('0x4d')],qs[_0xa3b1('0x4f')](_0x9eb745[_0xa3b1('0x4b')][_0xa3b1('0x4f')]));_0x40417f[_0xa3b1('0x4e')]=_0x40417f[_0xa3b1('0x4e')][_0xa3b1('0x50')]?_0x40417f['attributes']:_0x28254a[_0xa3b1('0x4d')];if(!_0x9eb745[_0xa3b1('0x4b')][_0xa3b1('0x51')](_0xa3b1('0x52'))){_0x40417f[_0xa3b1('0x37')]=qs[_0xa3b1('0x37')](_0x9eb745['query'][_0xa3b1('0x37')]);_0x40417f[_0xa3b1('0x34')]=qs[_0xa3b1('0x34')](_0x9eb745['query'][_0xa3b1('0x34')]);}_0x40417f[_0xa3b1('0x53')]=qs[_0xa3b1('0x54')](_0x9eb745[_0xa3b1('0x4b')][_0xa3b1('0x54')]);_0x40417f[_0xa3b1('0x55')]=qs[_0xa3b1('0x56')](_[_0xa3b1('0x6b')](_0x9eb745[_0xa3b1('0x4b')],_0x28254a[_0xa3b1('0x56')]));_0x40417f[_0xa3b1('0x55')]['FaxAccountId']=_0x286cfa['id'];if(_0x9eb745[_0xa3b1('0x4b')][_0xa3b1('0x58')]){_0x40417f[_0xa3b1('0x55')]=_[_0xa3b1('0x57')](_0x40417f[_0xa3b1('0x55')],{'$or':_[_0xa3b1('0x45')](_0x40417f[_0xa3b1('0x4e')],function(_0x50d961){var _0x4648ee={};_0x4648ee[_0x50d961]={'$like':'%'+_0x9eb745['query'][_0xa3b1('0x58')]+'%'};return _0x4648ee;})});}_0x40417f=_[_0xa3b1('0x57')]({},_0x40417f,_0x9eb745[_0xa3b1('0x59')]);return db[_0xa3b1('0x70')][_0xa3b1('0x36')]({'where':_0x40417f[_0xa3b1('0x55')]})[_0xa3b1('0x25')](function(_0x1f8873){_0x4e07c7[_0xa3b1('0x36')]=_0x1f8873;if(_0x9eb745[_0xa3b1('0x4b')]['includeAll']){_0x40417f['include']=[{'all':!![]}];}return db['CannedAnswer'][_0xa3b1('0x6d')](_0x40417f);})[_0xa3b1('0x25')](function(_0xdd28f9){_0x4e07c7[_0xa3b1('0x72')]=_0xdd28f9;return _0x4e07c7;});}})[_0xa3b1('0x25')](respondWithFilteredResult(_0x544179,_0x40417f))['catch'](handleError(_0x544179,null));};exports[_0xa3b1('0x73')]=function(_0x216342,_0xcaf17a,_0x1a2e01){return db[_0xa3b1('0x46')][_0xa3b1('0x5e')]({'where':{'id':_0x216342[_0xa3b1('0x66')]['id']}})['then'](handleEntityNotFound(_0xcaf17a,null))['then'](function(_0x13d65a){if(_0x13d65a){return _0x13d65a['removeAnswers'](_0x216342['query'][_0xa3b1('0x74')]);}})[_0xa3b1('0x25')](respondWithStatusCode(_0xcaf17a,null))['catch'](handleError(_0xcaf17a,null));};exports[_0xa3b1('0x75')]=function(_0x8b6bb1,_0x312744,_0x215fe6){return db[_0xa3b1('0x76')]['find']({'where':{'id':_0x8b6bb1[_0xa3b1('0x66')]['id']}})[_0xa3b1('0x25')](handleEntityNotFound(_0x312744,null))[_0xa3b1('0x25')](function(_0x2bd71a){if(_0x2bd71a){return _0x2bd71a[_0xa3b1('0x75')](_0x8b6bb1[_0xa3b1('0x60')][_0xa3b1('0x74')],_[_0xa3b1('0x77')](_0x8b6bb1[_0xa3b1('0x60')],[_0xa3b1('0x74'),'id'])||{});}})['then'](respondWithResult(_0x312744,null))[_0xa3b1('0x30')](handleError(_0x312744,null));};exports[_0xa3b1('0x78')]=function(_0x3a3084,_0x3583de,_0x30bbad){var _0x231d3e={'raw':![],'where':{}};var _0x5dd1d9={};var _0x4c99b8={'count':0x0,'rows':[]};return db[_0xa3b1('0x46')][_0xa3b1('0x6a')]({'where':{'id':_0x3a3084['params']['id']}})[_0xa3b1('0x25')](handleEntityNotFound(_0x3583de,null))[_0xa3b1('0x25')](function(_0x1c4cef){if(_0x1c4cef){_0x5dd1d9[_0xa3b1('0x4d')]=_[_0xa3b1('0x5b')](db[_0xa3b1('0x76')][_0xa3b1('0x47')]);_0x5dd1d9[_0xa3b1('0x4b')]=_[_0xa3b1('0x5b')](_0x3a3084[_0xa3b1('0x4b')]);_0x5dd1d9['filters']=_[_0xa3b1('0x4c')](_0x5dd1d9[_0xa3b1('0x4d')],_0x5dd1d9[_0xa3b1('0x4b')]);_0x231d3e[_0xa3b1('0x4e')]=_[_0xa3b1('0x4c')](_0x5dd1d9[_0xa3b1('0x4d')],qs[_0xa3b1('0x4f')](_0x3a3084[_0xa3b1('0x4b')]['fields']));_0x231d3e['attributes']=_0x231d3e['attributes'][_0xa3b1('0x50')]?_0x231d3e[_0xa3b1('0x4e')]:_0x5dd1d9['model'];if(!_0x3a3084[_0xa3b1('0x4b')][_0xa3b1('0x51')](_0xa3b1('0x52'))){_0x231d3e[_0xa3b1('0x37')]=qs[_0xa3b1('0x37')](_0x3a3084[_0xa3b1('0x4b')]['limit']);_0x231d3e[_0xa3b1('0x34')]=qs[_0xa3b1('0x34')](_0x3a3084['query']['offset']);}_0x231d3e['order']=qs[_0xa3b1('0x54')](_0x3a3084[_0xa3b1('0x4b')][_0xa3b1('0x54')]);_0x231d3e[_0xa3b1('0x55')]=qs['filters'](_['pick'](_0x3a3084[_0xa3b1('0x4b')],_0x5dd1d9[_0xa3b1('0x56')]));_0x231d3e[_0xa3b1('0x55')][_0xa3b1('0x6c')]=_0x1c4cef['id'];if(_0x3a3084[_0xa3b1('0x4b')]['filter']){_0x231d3e['where']=_[_0xa3b1('0x57')](_0x231d3e[_0xa3b1('0x55')],{'$or':_[_0xa3b1('0x45')](_0x231d3e[_0xa3b1('0x4e')],function(_0x29f839){var _0x2cb525={};_0x2cb525[_0x29f839]={'$like':'%'+_0x3a3084['query'][_0xa3b1('0x58')]+'%'};return _0x2cb525;})});}_0x231d3e=_[_0xa3b1('0x57')]({},_0x231d3e,_0x3a3084[_0xa3b1('0x59')]);return db[_0xa3b1('0x76')]['count']({'where':_0x231d3e[_0xa3b1('0x55')]})[_0xa3b1('0x25')](function(_0x33de45){_0x4c99b8[_0xa3b1('0x36')]=_0x33de45;if(_0x3a3084[_0xa3b1('0x4b')][_0xa3b1('0x5c')]){_0x231d3e[_0xa3b1('0x5d')]=[{'model':db[_0xa3b1('0x79')],'as':'Contact','required':![]},{'model':db['User'],'as':_0xa3b1('0x7a'),'attributes':['name','fullname',_0xa3b1('0x7b')],'required':![]},{'model':db[_0xa3b1('0x7c')],'as':'Tags','attributes':['id',_0xa3b1('0x41'),_0xa3b1('0x7d')],'where':_0x3a3084['query']['tag']?{'id':_0x3a3084[_0xa3b1('0x4b')][_0xa3b1('0x7e')]}:undefined,'required':_0x3a3084[_0xa3b1('0x4b')]['tag']?!![]:![]}];}return db[_0xa3b1('0x76')][_0xa3b1('0x6d')](_0x231d3e);})[_0xa3b1('0x25')](function(_0x24651b){_0x4c99b8['rows']=_0x24651b;return _0x4c99b8;});}})[_0xa3b1('0x25')](respondWithFilteredResult(_0x3583de,_0x231d3e))['catch'](handleError(_0x3583de,null));};exports['addApplications']=function(_0x218f1d,_0x4fc31b,_0x5f489b){return db[_0xa3b1('0x46')]['findOne']({'where':{'id':_0x218f1d[_0xa3b1('0x66')]['id']}})[_0xa3b1('0x25')](handleEntityNotFound(_0x4fc31b,null))[_0xa3b1('0x25')](function(_0x203cce){if(_0x203cce){return db[_0xa3b1('0x7f')][_0xa3b1('0x80')](function(_0x1ba4a0){return db['FaxApplication'][_0xa3b1('0x3d')]({'where':{'FaxAccountId':_0x218f1d[_0xa3b1('0x66')]['id']},'transaction':_0x1ba4a0})[_0xa3b1('0x25')](function(_0xe507fe){var _0x4f7f82=_[_0xa3b1('0x45')](_0x218f1d[_0xa3b1('0x60')],function(_0xa828c6){_0xa828c6[_0xa3b1('0x6c')]=_0x218f1d[_0xa3b1('0x66')]['id'];return _0xa828c6;});return db[_0xa3b1('0x81')][_0xa3b1('0x82')](_0x4f7f82,{'transaction':_0x1ba4a0});});})[_0xa3b1('0x25')](function(){return db[_0xa3b1('0x81')][_0xa3b1('0x83')]({'where':{'FaxAccountId':_0x218f1d[_0xa3b1('0x66')]['id']},'order':'priority'});});}})[_0xa3b1('0x25')](respondWithResult(_0x4fc31b,null))[_0xa3b1('0x30')](handleError(_0x4fc31b,null));};exports[_0xa3b1('0x84')]=function(_0x6bb7b1,_0x375e10,_0xee95e0){var _0x2471da={};var _0x533af3={};var _0x4f693a;var _0x256c3a;return db['FaxAccount'][_0xa3b1('0x6a')]({'where':{'id':_0x6bb7b1[_0xa3b1('0x66')]['id']}})[_0xa3b1('0x25')](handleEntityNotFound(_0x375e10,null))[_0xa3b1('0x25')](function(_0x47df13){if(_0x47df13){_0x4f693a=_0x47df13;_0x533af3[_0xa3b1('0x4d')]=_['keys'](db[_0xa3b1('0x81')][_0xa3b1('0x47')]);_0x533af3[_0xa3b1('0x4b')]=_[_0xa3b1('0x5b')](_0x6bb7b1['query']);_0x533af3[_0xa3b1('0x56')]=_[_0xa3b1('0x4c')](_0x533af3[_0xa3b1('0x4d')],_0x533af3[_0xa3b1('0x4b')]);_0x2471da['attributes']=_[_0xa3b1('0x4c')](_0x533af3[_0xa3b1('0x4d')],qs[_0xa3b1('0x4f')](_0x6bb7b1['query'][_0xa3b1('0x4f')]));_0x2471da['attributes']=_0x2471da['attributes'][_0xa3b1('0x50')]?_0x2471da['attributes']:_0x533af3[_0xa3b1('0x4d')];_0x2471da['order']=qs[_0xa3b1('0x54')](_0x6bb7b1[_0xa3b1('0x4b')][_0xa3b1('0x54')]);_0x2471da[_0xa3b1('0x55')]=qs['filters'](_[_0xa3b1('0x6b')](_0x6bb7b1[_0xa3b1('0x4b')],_0x533af3[_0xa3b1('0x56')]));if(_0x6bb7b1[_0xa3b1('0x4b')][_0xa3b1('0x58')]){_0x2471da[_0xa3b1('0x55')]=_[_0xa3b1('0x57')](_0x2471da['where'],{'$or':_[_0xa3b1('0x45')](_0x2471da[_0xa3b1('0x4e')],function(_0x6bc27c){var _0x8d056f={};_0x8d056f[_0x6bc27c]={'$like':'%'+_0x6bb7b1[_0xa3b1('0x4b')][_0xa3b1('0x58')]+'%'};return _0x8d056f;})});}_0x2471da=_[_0xa3b1('0x57')]({},_0x2471da,_0x6bb7b1[_0xa3b1('0x59')]);return _0x4f693a[_0xa3b1('0x84')](_0x2471da);}})['then'](function(_0x3c4a3d){if(_0x3c4a3d){_0x256c3a=_0x3c4a3d[_0xa3b1('0x50')];if(!_0x6bb7b1[_0xa3b1('0x4b')]['hasOwnProperty']('nolimit')){_0x2471da['limit']=qs['limit'](_0x6bb7b1['query']['limit']);_0x2471da[_0xa3b1('0x34')]=qs['offset'](_0x6bb7b1[_0xa3b1('0x4b')][_0xa3b1('0x34')]);}return _0x4f693a[_0xa3b1('0x84')](_0x2471da);}})[_0xa3b1('0x25')](function(_0x190bc8){if(_0x190bc8){return _0x190bc8?{'count':_0x256c3a,'rows':_0x190bc8}:null;}})[_0xa3b1('0x25')](respondWithResult(_0x375e10,null))[_0xa3b1('0x30')](handleError(_0x375e10,null));};function Extension(_0x5b496c,_0x5063ed,_0xb892e6,_0x3246be){this[_0xa3b1('0x85')]=_0xa3b1('0x86');this[_0xa3b1('0x87')]=_0x5b496c[_0xa3b1('0x88')];this['app']=_0x3246be;this[_0xa3b1('0x49')]=_0xa3b1('0x89');this[_0xa3b1('0x8a')]=_0xa3b1('0x8b');this[_0xa3b1('0x6c')]=_0x5b496c['id'];this[_0xa3b1('0x8c')]=_0x5063ed;this[_0xa3b1('0x8d')]=_0xb892e6;}function createExtensionsReciveFax(_0x344675){var _0x25e84c=0x1;var _0x27ef2a=[];_0x27ef2a['push'](new Extension(_0x344675,_0x25e84c,'','Answer'));_0x25e84c+=0x1;_0x27ef2a['push'](new Extension(_0x344675,_0x25e84c,_0xa3b1('0x8e'),'Set'));_0x25e84c+=0x1;for(var _0x4880d7 in _0x344675){if(_0x344675[_0xa3b1('0x51')](_0x4880d7)&&(_0x4880d7===_0xa3b1('0x8f')||_0x4880d7==='localstationid'||_0x4880d7===_0xa3b1('0x90')||_0x4880d7===_0xa3b1('0x91')||_0x4880d7==='headerinfo'||_0x4880d7===_0xa3b1('0x92')||_0x4880d7===_0xa3b1('0x93')||_0x4880d7==='modem'||_0x4880d7==='t38timeout')){_0x27ef2a[_0xa3b1('0x94')](new Extension(_0x344675,_0x25e84c,_0xa3b1('0x95')+_0x4880d7+')='+_0x344675[_0x4880d7],_0xa3b1('0x96')));_0x25e84c+=0x1;}}_0x27ef2a['push'](new Extension(_0x344675,_0x25e84c,'6','Wait'));_0x25e84c+=0x1;_0x27ef2a['push'](new Extension(_0x344675,_0x25e84c,_0xa3b1('0x97'),_0xa3b1('0x98')));_0x25e84c=0x0;return _0x27ef2a;}exports[_0xa3b1('0x99')]=function(_0xb5b6e5,_0x11b0c6,_0x285ded){var _0x3b9709;return db[_0xa3b1('0x7f')]['transaction'](function(_0x5317b2){return db['FaxAccount'][_0xa3b1('0x5f')](_0xb5b6e5['body'],{'transaction':_0x5317b2})[_0xa3b1('0x25')](function(_0x1795d9){_0x3b9709=_0x1795d9[_0xa3b1('0x62')]({'plain':!![]});return db[_0xa3b1('0x9a')][_0xa3b1('0x82')](createExtensionsReciveFax(_0x3b9709),{'transaction':_0x5317b2});});})['then'](function(){return _0x3b9709;})[_0xa3b1('0x25')](respondWithResult(_0x11b0c6,null))[_0xa3b1('0x30')](handleError(_0x11b0c6,null));};exports[_0xa3b1('0x9b')]=function(_0x1e8120,_0x33c946,_0x3412ff){var _0x24b2ad;return db['sequelize'][_0xa3b1('0x80')](function(_0x4d4b3a){return db['FaxAccount'][_0xa3b1('0x3c')](_0x1e8120[_0xa3b1('0x60')],{'where':{'id':_0x1e8120['body']['id']},'transaction':_0x4d4b3a})[_0xa3b1('0x25')](function(_0x4e57f9){return db[_0xa3b1('0x9a')][_0xa3b1('0x3d')]({'where':{'FaxAccountId':_0x1e8120[_0xa3b1('0x60')]['id']},'transaction':_0x4d4b3a})[_0xa3b1('0x25')](function(_0x2fddea){return db[_0xa3b1('0x9a')]['bulkCreate'](createExtensionsReciveFax(_[_0xa3b1('0x77')](_0x1e8120[_0xa3b1('0x60')],[_0xa3b1('0x9c'),_0xa3b1('0x4a'),_0xa3b1('0x9d'),_0xa3b1('0x9e'),'TrunkId',_0xa3b1('0x9f')])),{'transaction':_0x4d4b3a});});});})[_0xa3b1('0x25')](function(){return db[_0xa3b1('0x46')]['findById'](_0x1e8120[_0xa3b1('0x60')]['id']);})[_0xa3b1('0x25')](respondWithResult(_0x33c946,null))[_0xa3b1('0x30')](handleError(_0x33c946,null));};exports['getMessages']=function(_0x4d355c,_0x2300f0,_0x2c0039){var _0x5aa47d={'raw':!![],'where':{}};var _0x308c3a={};var _0x3f8c03={'count':0x0,'rows':[]};return db[_0xa3b1('0x46')]['findOne']({'where':{'id':_0x4d355c[_0xa3b1('0x66')]['id']}})[_0xa3b1('0x25')](handleEntityNotFound(_0x2300f0,null))[_0xa3b1('0x25')](function(_0xfe5ea5){if(_0xfe5ea5){_0x308c3a[_0xa3b1('0x4d')]=_['keys'](db[_0xa3b1('0xa0')][_0xa3b1('0x47')]);_0x308c3a[_0xa3b1('0x4b')]=_[_0xa3b1('0x5b')](_0x4d355c[_0xa3b1('0x4b')]);_0x308c3a[_0xa3b1('0x56')]=_[_0xa3b1('0x4c')](_0x308c3a[_0xa3b1('0x4d')],_0x308c3a['query']);_0x5aa47d[_0xa3b1('0x4e')]=_[_0xa3b1('0x4c')](_0x308c3a[_0xa3b1('0x4d')],qs[_0xa3b1('0x4f')](_0x4d355c[_0xa3b1('0x4b')][_0xa3b1('0x4f')]));_0x5aa47d[_0xa3b1('0x4e')]=_0x5aa47d[_0xa3b1('0x4e')]['length']?_0x5aa47d[_0xa3b1('0x4e')]:_0x308c3a[_0xa3b1('0x4d')];if(!_0x4d355c[_0xa3b1('0x4b')][_0xa3b1('0x51')](_0xa3b1('0x52'))){_0x5aa47d[_0xa3b1('0x37')]=qs['limit'](_0x4d355c['query'][_0xa3b1('0x37')]);_0x5aa47d[_0xa3b1('0x34')]=qs['offset'](_0x4d355c[_0xa3b1('0x4b')][_0xa3b1('0x34')]);}_0x5aa47d[_0xa3b1('0x53')]=qs[_0xa3b1('0x54')](_0x4d355c[_0xa3b1('0x4b')][_0xa3b1('0x54')]);_0x5aa47d[_0xa3b1('0x55')]=qs[_0xa3b1('0x56')](_[_0xa3b1('0x6b')](_0x4d355c[_0xa3b1('0x4b')],_0x308c3a[_0xa3b1('0x56')]));_0x5aa47d[_0xa3b1('0x55')][_0xa3b1('0x6c')]=_0xfe5ea5['id'];if(_0x4d355c[_0xa3b1('0x4b')][_0xa3b1('0x58')]){_0x5aa47d[_0xa3b1('0x55')]=_['merge'](_0x5aa47d[_0xa3b1('0x55')],{'$or':_['map'](_0x5aa47d[_0xa3b1('0x4e')],function(_0x2da2aa){var _0x13b7bb={};_0x13b7bb[_0x2da2aa]={'$like':'%'+_0x4d355c[_0xa3b1('0x4b')][_0xa3b1('0x58')]+'%'};return _0x13b7bb;})});}if(_0x4d355c['query'][_0xa3b1('0xa1')]){var _0x3fd984=_0x4d355c[_0xa3b1('0x4b')][_0xa3b1('0xa1')][_0xa3b1('0xa2')](',');var _0x167abc={};_0x167abc[_0x3fd984[0x0]]={'$gte':moment(_0x3fd984[0x1])[_0xa3b1('0xa3')](_0xa3b1('0xa4'))};_0x5aa47d[_0xa3b1('0x55')]=_['merge'](_0x5aa47d[_0xa3b1('0x55')],_0x167abc);}_0x5aa47d=_['merge']({},_0x5aa47d,_0x4d355c[_0xa3b1('0x59')]);return db[_0xa3b1('0xa0')][_0xa3b1('0x36')]({'where':_0x5aa47d[_0xa3b1('0x55')]})['then'](function(_0x52e95c){_0x3f8c03[_0xa3b1('0x36')]=_0x52e95c;if(_0x4d355c['query'][_0xa3b1('0x5c')]){_0x5aa47d[_0xa3b1('0x5d')]=[{'all':!![]}];}return db[_0xa3b1('0xa0')][_0xa3b1('0x6d')](_0x5aa47d);})[_0xa3b1('0x25')](function(_0xaa54de){_0x3f8c03[_0xa3b1('0x72')]=_0xaa54de;return _0x3f8c03;});}})[_0xa3b1('0x25')](respondWithFilteredResult(_0x2300f0,_0x5aa47d))[_0xa3b1('0x30')](handleError(_0x2300f0,null));};exports[_0xa3b1('0x42')]=function(_0x2f0295,_0x143812,_0x12844a){var _0x1b92bb,_0x38c89c={},_0x3f012d;if(_0x2f0295[_0xa3b1('0x60')]['to']){_0x3f012d=_0x2f0295[_0xa3b1('0x60')]['to'][0x0];}return db[_0xa3b1('0x46')][_0xa3b1('0x5e')]({'where':{'id':_0x2f0295['params']['id']},'include':[{'model':db['CmList'],'as':_0xa3b1('0xa5'),'include':[{'model':db[_0xa3b1('0x79')],'as':_0xa3b1('0xa6'),'where':{'fax':_0x3f012d},'limit':0x1,'order':[[_0xa3b1('0x9e'),_0xa3b1('0xa7')]]}]}]})[_0xa3b1('0x25')](handleEntityNotFound(_0x143812,null))[_0xa3b1('0x25')](function(_0xc61dba){_0x1b92bb=_0xc61dba;if(_0x2f0295[_0xa3b1('0x60')][_0xa3b1('0xa8')]&&_0x2f0295[_0xa3b1('0x60')][_0xa3b1('0xa8')]['length']){for(var _0xec15f1=0x0;_0xec15f1<_0x2f0295['body'][_0xa3b1('0xa8')][_0xa3b1('0x50')];_0xec15f1+=0x1){_0x2f0295[_0xa3b1('0x60')][_0xa3b1('0xa8')][_0xec15f1]={'filename':_0x2f0295[_0xa3b1('0x60')][_0xa3b1('0xa8')][_0xec15f1][_0xa3b1('0x41')],'id':_0x2f0295[_0xa3b1('0x60')][_0xa3b1('0xa8')][_0xec15f1]['id'],'path':path[_0xa3b1('0xa9')](config[_0xa3b1('0xaa')],_0xa3b1('0xab'),_0x2f0295[_0xa3b1('0x60')][_0xa3b1('0xa8')][_0xec15f1][_0xa3b1('0xac')])};}}return respondWithRpcPromise(_0xa3b1('0xad'),_0xa3b1('0xad'),{'FaxAccountId':_[_0xa3b1('0xae')](_0x2f0295['params']['id'])?undefined:_0x2f0295[_0xa3b1('0x66')]['id'],'path':_[_0xa3b1('0xae')](_0x2f0295[_0xa3b1('0x60')]['attachments'][0x0][_0xa3b1('0x7')])?undefined:_0x2f0295[_0xa3b1('0x60')][_0xa3b1('0xa8')][0x0][_0xa3b1('0x7')],'fax':_[_0xa3b1('0xae')](_0x2f0295['body']['to'][0x0])?undefined:_0x2f0295[_0xa3b1('0x60')]['to'][0x0]},client9002);})['then'](function(){if(_0x1b92bb){if(_[_0xa3b1('0xae')](_0x2f0295[_0xa3b1('0x60')][_0xa3b1('0xaf')])){_0x2f0295[_0xa3b1('0x60')][_0xa3b1('0xaf')]=util[_0xa3b1('0xa3')](_0xa3b1('0xb0'),_0x1b92bb[_0xa3b1('0x41')],_0x1b92bb[_0xa3b1('0xb1')]);}if(_0x1b92bb['List']){if(_0x1b92bb[_0xa3b1('0xa5')][_0xa3b1('0xa6')][_0xa3b1('0x50')]){return _0x1b92bb[_0xa3b1('0xa5')][_0xa3b1('0xa6')][0x0];}else{return db[_0xa3b1('0x79')][_0xa3b1('0x5f')](_[_0xa3b1('0x1d')](_0x2f0295[_0xa3b1('0x60')],{'firstName':_0x2f0295[_0xa3b1('0x60')]['to'][0x0],'phone':_0x2f0295[_0xa3b1('0x60')]['to'][0x0],'fax':_0x2f0295[_0xa3b1('0x60')]['to'][0x0],'ListId':_0x1b92bb['ListId']}));}}else{throw new Error(_0xa3b1('0xb2'));}}else{throw new Error('Send\x20Fax\x20failed');}})[_0xa3b1('0x25')](function(_0x20f48c){if(_0x20f48c){return db[_0xa3b1('0x76')][_0xa3b1('0x5e')]({'where':{'ContactId':_0x20f48c['id'],'closed':![],'FaxAccountId':_0x1b92bb['id']}})[_0xa3b1('0x25')](function(_0x160b61){if(_0x160b61){return[_0x160b61,![]];}return db[_0xa3b1('0x76')][_0xa3b1('0x5f')]({'UserId':_0x2f0295[_0xa3b1('0x61')]['id'],'ContactId':_0x20f48c['id'],'FaxAccountId':_0x1b92bb['id'],'fax':_0x2f0295[_0xa3b1('0x60')]['to'][0x0],'firstMsgDirection':_0xa3b1('0xb3'),'Messages':[_['merge'](_0x2f0295['body'],{'read':![],'body':_0x2f0295['body']['attachments'][0x0][_0xa3b1('0xb4')],'FaxAccountId':_0x1b92bb['id'],'UserId':_0x2f0295[_0xa3b1('0x61')]['id'],'ContactId':_0x20f48c['id'],'AttachmentId':_0x2f0295[_0xa3b1('0x60')][_0xa3b1('0xa8')][0x0]['id']})]},{'include':[{'model':db[_0xa3b1('0xa0')],'as':_0xa3b1('0xb5')}]})[_0xa3b1('0x25')](function(_0x214a92){return[_0x214a92,!![]];});});}else{throw new Error(_0xa3b1('0xb6'));}})['spread'](function(_0x276892,_0x2d3c07){if(_0x2d3c07){return _0x276892;}return db[_0xa3b1('0xa0')]['create']({'direction':'out','read':![],'body':_0x2f0295[_0xa3b1('0x60')]['attachments'][0x0]['filename'],'FaxAccountId':_0x1b92bb['id'],'FaxInteractionId':_0x276892['id'],'UserId':_0x2f0295[_0xa3b1('0x61')]['id'],'ContactId':_0x276892['ContactId'],'AttachmentId':_0x2f0295[_0xa3b1('0x60')][_0xa3b1('0xa8')][0x0]['id']})[_0xa3b1('0x25')](function(_0x273ef2){_0x276892[_0xa3b1('0xb7')][_0xa3b1('0xb5')]=[];_0x276892[_0xa3b1('0xb7')]['Messages'][_0xa3b1('0x94')](_0x273ef2[_0xa3b1('0xb7')]);return _0x276892;});})[_0xa3b1('0x25')](function(_0x1317ec){respondWithRpcPromise(_0xa3b1('0xb8'),'SendFax',{'FaxAccountId':_[_0xa3b1('0xae')](_0x2f0295[_0xa3b1('0x66')]['id'])?undefined:_0x2f0295['params']['id'],'path':_[_0xa3b1('0xae')](_0x2f0295[_0xa3b1('0x60')][_0xa3b1('0xa8')][0x0]['path'])?undefined:_0x2f0295[_0xa3b1('0x60')][_0xa3b1('0xa8')][0x0][_0xa3b1('0x7')],'fax':_[_0xa3b1('0xae')](_0x2f0295[_0xa3b1('0x60')]['to'][0x0])?undefined:_0x2f0295[_0xa3b1('0x60')]['to'][0x0],'AttachmentId':_0x2f0295['body'][_0xa3b1('0xa8')][0x0]['id']},client9002)[_0xa3b1('0x25')](function(_0x36e8b7){logger[_0xa3b1('0x26')](_0xa3b1('0xb9'),_0x36e8b7);})[_0xa3b1('0x30')](function(_0x56f70c){logger[_0xa3b1('0x26')](_0xa3b1('0xb9'),_0x56f70c);});return _0x1317ec;})['then'](respondWithResult(_0x143812,null))[_0xa3b1('0x30')](handleError(_0x143812,null));};exports['addAgents']=function(_0x72faca,_0xaf6abe,_0xc20cc8){return db['FaxAccount'][_0xa3b1('0x5e')]({'where':{'id':_0x72faca[_0xa3b1('0x66')]['id']}})[_0xa3b1('0x25')](handleEntityNotFound(_0xaf6abe,null))['then'](function(_0x3a91f4){if(_0x3a91f4){return _0x3a91f4[_0xa3b1('0xba')](_0x72faca['body'][_0xa3b1('0x74')],_[_0xa3b1('0x77')](_0x72faca[_0xa3b1('0x60')],[_0xa3b1('0x74'),'id'])||{})[_0xa3b1('0xbb')](function(_0x307936){for(var _0x37478e=0x0;_0x37478e<_0x72faca['body'][_0xa3b1('0x74')][_0xa3b1('0x50')];_0x37478e+=0x1){socket[_0xa3b1('0xbc')]('userFaxAccount:save',{'UserId':Number(_0x72faca[_0xa3b1('0x60')][_0xa3b1('0x74')][_0x37478e]),'FaxAccountId':Number(_0x72faca['params']['id'])});}return _0x307936;});}})[_0xa3b1('0x25')](respondWithResult(_0xaf6abe,null))[_0xa3b1('0x30')](handleError(_0xaf6abe,null));};exports['removeAgents']=function(_0x30e151,_0x1b6849,_0x4510ae){return db[_0xa3b1('0x46')]['find']({'where':{'id':_0x30e151[_0xa3b1('0x66')]['id']}})[_0xa3b1('0x25')](handleEntityNotFound(_0x1b6849,null))[_0xa3b1('0x25')](function(_0x420ea8){if(_0x420ea8){return _0x420ea8['removeAgents'](_0x30e151[_0xa3b1('0x4b')]['ids'])[_0xa3b1('0x25')](function(){if(_[_0xa3b1('0xbd')](_0x30e151[_0xa3b1('0x4b')][_0xa3b1('0x74')])){for(var _0x85d93b=0x0;_0x85d93b<_0x30e151['query']['ids']['length'];_0x85d93b+=0x1){socket[_0xa3b1('0xbc')](_0xa3b1('0xbe'),{'UserId':Number(_0x30e151[_0xa3b1('0x4b')][_0xa3b1('0x74')][_0x85d93b]),'FaxAccountId':Number(_0x30e151[_0xa3b1('0x66')]['id'])});}}else{socket[_0xa3b1('0xbc')](_0xa3b1('0xbe'),{'UserId':Number(_0x30e151[_0xa3b1('0x4b')]['ids']),'FaxAccountId':Number(_0x30e151['params']['id'])});}});}})[_0xa3b1('0x25')](respondWithStatusCode(_0x1b6849,null))['catch'](handleError(_0x1b6849,null));};exports['getAgents']=function(_0x4fe95d,_0x145dba,_0x4dbdaf){var _0x5026e0={};var _0x3a554f={};var _0x93a405;var _0x41decd;return db[_0xa3b1('0x46')][_0xa3b1('0x6a')]({'where':{'id':_0x4fe95d['params']['id']}})[_0xa3b1('0x25')](handleEntityNotFound(_0x145dba,null))[_0xa3b1('0x25')](function(_0x55c208){if(_0x55c208){_0x93a405=_0x55c208;_0x3a554f[_0xa3b1('0x4d')]=_[_0xa3b1('0x5b')](db[_0xa3b1('0xbf')][_0xa3b1('0x47')]);_0x3a554f[_0xa3b1('0x4b')]=_[_0xa3b1('0x5b')](_0x4fe95d['query']);_0x3a554f['filters']=_[_0xa3b1('0x4c')](_0x3a554f[_0xa3b1('0x4d')],_0x3a554f[_0xa3b1('0x4b')]);_0x5026e0['attributes']=_['intersection'](_0x3a554f[_0xa3b1('0x4d')],qs['fields'](_0x4fe95d[_0xa3b1('0x4b')][_0xa3b1('0x4f')]));_0x5026e0['attributes']=_0x5026e0[_0xa3b1('0x4e')][_0xa3b1('0x50')]?_0x5026e0['attributes']:_0x3a554f[_0xa3b1('0x4d')];_0x5026e0[_0xa3b1('0x53')]=qs['sort'](_0x4fe95d[_0xa3b1('0x4b')][_0xa3b1('0x54')]);_0x5026e0[_0xa3b1('0x55')]=qs[_0xa3b1('0x56')](_['pick'](_0x4fe95d['query'],_0x3a554f[_0xa3b1('0x56')]));if(_0x4fe95d[_0xa3b1('0x4b')][_0xa3b1('0x58')]){_0x5026e0['where']=_['merge'](_0x5026e0[_0xa3b1('0x55')],{'$or':_[_0xa3b1('0x45')](_0x5026e0[_0xa3b1('0x4e')],function(_0x49b9b2){var _0x411304={};_0x411304[_0x49b9b2]={'$like':'%'+_0x4fe95d[_0xa3b1('0x4b')][_0xa3b1('0x58')]+'%'};return _0x411304;})});}_0x5026e0=_[_0xa3b1('0x57')]({},_0x5026e0,_0x4fe95d[_0xa3b1('0x59')]);return _0x93a405[_0xa3b1('0xc0')](_0x5026e0);}})[_0xa3b1('0x25')](function(_0xd3160f){if(_0xd3160f){_0x41decd=_0xd3160f[_0xa3b1('0x50')];if(!_0x4fe95d[_0xa3b1('0x4b')][_0xa3b1('0x51')]('nolimit')){_0x5026e0['limit']=qs[_0xa3b1('0x37')](_0x4fe95d[_0xa3b1('0x4b')][_0xa3b1('0x37')]);_0x5026e0[_0xa3b1('0x34')]=qs[_0xa3b1('0x34')](_0x4fe95d[_0xa3b1('0x4b')][_0xa3b1('0x34')]);}return _0x93a405[_0xa3b1('0xc0')](_0x5026e0);}})[_0xa3b1('0x25')](function(_0x29e1f9){if(_0x29e1f9){return _0x29e1f9?{'count':_0x41decd,'rows':_0x29e1f9}:null;}})['then'](respondWithResult(_0x145dba,null))[_0xa3b1('0x30')](handleError(_0x145dba,null));};
\ No newline at end of file
index 451dacd..77f1a05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c1e=['exports','events','../../mysqldb','setMaxListeners','save','update','emit','hasOwnProperty','hook'];(function(_0x345451,_0x42168e){var _0x1be34b=function(_0x1a77c4){while(--_0x1a77c4){_0x345451['push'](_0x345451['shift']());}};_0x1be34b(++_0x42168e);}(_0x5c1e,0x121));var _0xe5c1=function(_0xe8d47b,_0x81283f){_0xe8d47b=_0xe8d47b-0x0;var _0x392563=_0x5c1e[_0xe8d47b];return _0x392563;};'use strict';var EventEmitter=require(_0xe5c1('0x0'));var FaxAccount=require(_0xe5c1('0x1'))['db']['FaxAccount'];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xe5c1('0x2')](0x0);var events={'afterCreate':_0xe5c1('0x3'),'afterUpdate':_0xe5c1('0x4'),'afterDestroy':'remove'};function emitEvent(_0x263443){return function(_0x3fb6a9,_0x122bb6,_0x55ae01){FaxAccountEvents[_0xe5c1('0x5')](_0x263443+':'+_0x3fb6a9['id'],_0x3fb6a9);FaxAccountEvents[_0xe5c1('0x5')](_0x263443,_0x3fb6a9);_0x55ae01(null);};}for(var e in events){if(events[_0xe5c1('0x6')](e)){var event=events[e];FaxAccount[_0xe5c1('0x7')](e,emitEvent(event));}}module[_0xe5c1('0x8')]=FaxAccountEvents;
\ No newline at end of file
+var _0x7cc8=['update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','FaxAccount','setMaxListeners'];(function(_0x3aaaca,_0x1325e3){var _0x1b9816=function(_0x440d85){while(--_0x440d85){_0x3aaaca['push'](_0x3aaaca['shift']());}};_0x1b9816(++_0x1325e3);}(_0x7cc8,0x8c));var _0x87cc=function(_0x3dd06c,_0x51d017){_0x3dd06c=_0x3dd06c-0x0;var _0x13dedc=_0x7cc8[_0x3dd06c];return _0x13dedc;};'use strict';var EventEmitter=require(_0x87cc('0x0'));var FaxAccount=require(_0x87cc('0x1'))['db'][_0x87cc('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x87cc('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x87cc('0x4'),'afterDestroy':'remove'};function emitEvent(_0x459830){return function(_0x22f539,_0x61dc86,_0x34dec1){FaxAccountEvents['emit'](_0x459830+':'+_0x22f539['id'],_0x22f539);FaxAccountEvents[_0x87cc('0x5')](_0x459830,_0x22f539);_0x34dec1(null);};}for(var e in events){if(events[_0x87cc('0x6')](e)){var event=events[e];FaxAccount[_0x87cc('0x7')](e,emitEvent(event));}}module[_0x87cc('0x8')]=FaxAccountEvents;
\ No newline at end of file
index c1229d2..fc71be9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaedd=['../../config/environment','./faxAccount.attributes','exports','define','lodash','util','../../config/logger','api','moment','bluebird','rimraf'];(function(_0x309dd3,_0x1089f7){var _0x139965=function(_0x15ba73){while(--_0x15ba73){_0x309dd3['push'](_0x309dd3['shift']());}};_0x139965(++_0x1089f7);}(_0xaedd,0xf6));var _0xdaed=function(_0x5a46e5,_0x1ec403){_0x5a46e5=_0x5a46e5-0x0;var _0x24f2b9=_0xaedd[_0x5a46e5];return _0x24f2b9;};'use strict';var _=require(_0xdaed('0x0'));var util=require(_0xdaed('0x1'));var logger=require(_0xdaed('0x2'))(_0xdaed('0x3'));var moment=require(_0xdaed('0x4'));var BPromise=require(_0xdaed('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xdaed('0x6'));var config=require(_0xdaed('0x7'));var attributes=require(_0xdaed('0x8'));module[_0xdaed('0x9')]=function(_0x4f8e39,_0x476ebf){return _0x4f8e39[_0xdaed('0xa')]('FaxAccount',attributes,{'tableName':'fax_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a9e=['bluebird','request-promise','path','rimraf','./faxAccount.attributes','exports','lodash','../../config/logger','api'];(function(_0x25b7df,_0x9f181b){var _0x580d3e=function(_0x3fe9af){while(--_0x3fe9af){_0x25b7df['push'](_0x25b7df['shift']());}};_0x580d3e(++_0x9f181b);}(_0x7a9e,0x15c));var _0xe7a9=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x7a9e[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0xe7a9('0x0'));var util=require('util');var logger=require(_0xe7a9('0x1'))(_0xe7a9('0x2'));var moment=require('moment');var BPromise=require(_0xe7a9('0x3'));var rp=require(_0xe7a9('0x4'));var fs=require('fs');var path=require(_0xe7a9('0x5'));var rimraf=require(_0xe7a9('0x6'));var config=require('../../config/environment');var attributes=require(_0xe7a9('0x7'));module[_0xe7a9('0x8')]=function(_0x36d528,_0x366c60){return _0x36d528['define']('FaxAccount',attributes,{'tableName':'fax_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d704441..ad5d80c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41e1=['startRouting','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','code','error','message','catch','GetFaxAccount','FaxAccount','findAll','options','raw','where','limit','include','map','model','attributes','debug','NotifyFaxAccount','body','fax','CmContact','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','CompanyId','from','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','find','account','CmList','List','Contacts','DESC','FaxApplication','Applications','get','applications','orderBy','asc','length','ListId','contact','FaxInteraction','spread','autoclose','push','created','AttachmentId','interaction','UserId','User','agent','name','waitForTheAssignedAgent','*,*,*,*','Start'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x41e1,0x161));var _0x141e=function(_0x550de6,_0x2c6007){_0x550de6=_0x550de6-0x0;var _0xcbfa16=_0x41e1[_0x550de6];return _0xcbfa16;};'use strict';var _=require(_0x141e('0x0'));var util=require(_0x141e('0x1'));var moment=require(_0x141e('0x2'));var BPromise=require('bluebird');var rs=require(_0x141e('0x3'));var fs=require('fs');var Redis=require(_0x141e('0x4'));var db=require(_0x141e('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x141e('0x6'));var jayson=require(_0x141e('0x7'));var client=jayson[_0x141e('0x8')]['http']({'port':0x232c});config[_0x141e('0x9')]=_[_0x141e('0xa')](config[_0x141e('0x9')],{'host':_0x141e('0xb'),'port':0x18eb});var socket=require(_0x141e('0xc'))(new Redis(config['redis']));require(_0x141e('0xd'))[_0x141e('0xe')](socket);function respondWithRpcPromise(_0x2a5b5f,_0x51404d,_0x501c2b){return new BPromise(function(_0x44dc67,_0x42c473){return client[_0x141e('0xf')](_0x2a5b5f,_0x501c2b)[_0x141e('0x10')](function(_0x1496eb){logger[_0x141e('0x11')](_0x141e('0x12'),_0x51404d,_0x141e('0x13'));logger['debug'](_0x141e('0x14'),_0x51404d,'request\x20sent',JSON[_0x141e('0x15')](_0x1496eb));if(_0x1496eb['error']){if(_0x1496eb['error'][_0x141e('0x16')]===0x1f4){logger[_0x141e('0x17')](_0x141e('0x12'),_0x51404d,_0x1496eb[_0x141e('0x17')]['message']);return _0x42c473(_0x1496eb[_0x141e('0x17')][_0x141e('0x18')]);}logger[_0x141e('0x17')](_0x141e('0x12'),_0x51404d,_0x1496eb['error'][_0x141e('0x18')]);return _0x44dc67(_0x1496eb['error'][_0x141e('0x18')]);}else{logger[_0x141e('0x11')](_0x141e('0x12'),_0x51404d,_0x141e('0x13'));_0x44dc67(_0x1496eb['result'][_0x141e('0x18')]);}})[_0x141e('0x19')](function(_0x24d269){logger['error']('FaxAccount,\x20%s,\x20%s',_0x51404d,_0x24d269);_0x42c473(_0x24d269);});});}exports[_0x141e('0x1a')]=function(_0x2bac71){var _0x595ecd=this;return new Promise(function(_0x160ed5,_0x17256c){return db[_0x141e('0x1b')][_0x141e('0x1c')]({'raw':_0x2bac71[_0x141e('0x1d')]?_0x2bac71['options'][_0x141e('0x1e')]===undefined?!![]:![]:!![],'where':_0x2bac71[_0x141e('0x1d')]?_0x2bac71[_0x141e('0x1d')][_0x141e('0x1f')]||null:null,'attributes':_0x2bac71[_0x141e('0x1d')]?_0x2bac71[_0x141e('0x1d')]['attributes']||null:null,'limit':_0x2bac71[_0x141e('0x1d')]?_0x2bac71['options'][_0x141e('0x20')]||null:null,'include':_0x2bac71['options']?_0x2bac71['options'][_0x141e('0x21')]?_[_0x141e('0x22')](_0x2bac71[_0x141e('0x1d')]['include'],function(_0x5efde8){return{'model':db[_0x5efde8[_0x141e('0x23')]],'as':_0x5efde8['as'],'attributes':_0x5efde8[_0x141e('0x24')],'include':_0x5efde8[_0x141e('0x21')]?_['map'](_0x5efde8[_0x141e('0x21')],function(_0x336f3d){return{'model':db[_0x336f3d[_0x141e('0x23')]],'as':_0x336f3d['as'],'attributes':_0x336f3d[_0x141e('0x24')],'include':_0x336f3d[_0x141e('0x21')]?_[_0x141e('0x22')](_0x336f3d[_0x141e('0x21')],function(_0x1ba550){return{'model':db[_0x1ba550[_0x141e('0x23')]],'as':_0x1ba550['as'],'attributes':_0x1ba550[_0x141e('0x24')]};}):[]};}):[]};}):[]:[]})[_0x141e('0x10')](function(_0x187bf2){logger[_0x141e('0x11')](_0x141e('0x1a'),_0x2bac71);logger[_0x141e('0x25')]('GetFaxAccount',_0x2bac71,JSON[_0x141e('0x15')](_0x187bf2));_0x160ed5(_0x187bf2);})[_0x141e('0x19')](function(_0x29d1c5){logger['error'](_0x141e('0x1a'),_0x29d1c5[_0x141e('0x18')],_0x2bac71);_0x17256c(_0x595ecd[_0x141e('0x17')](0x1f4,_0x29d1c5[_0x141e('0x18')]));});});};exports[_0x141e('0x26')]=function(_0x399aad,_0x518f39,_0x25e60a){var _0xa8cd7b=this;return new Promise(function(_0x7832b4,_0x3c5706){var _0x5db576={'body':_0x399aad[_0x141e('0x27')],'channel':_0x141e('0x28')};var _0xdb8008=[];var _0x3e3a56=[];var _0x470464={};return db[_0x141e('0x29')][_0x141e('0x2a')]()['then'](function(_0x2913c9){if(!_0x2913c9){throw new db[(_0x141e('0x2b'))][(_0x141e('0x2c'))](_0x141e('0x2d'));}_0xdb8008=_[_0x141e('0x2e')](_[_0x141e('0x2f')](_0x2913c9),[_0x141e('0x30'),_0x141e('0x31')]);_0x3e3a56=_[_0x141e('0x2e')](_['keys'](_0x2913c9),[_0x141e('0x30'),_0x141e('0x31'),_0x141e('0x32'),'ListId']);if(_0x399aad['body']['id']){delete _0x399aad['body']['id'];}if(_['isNil'](_0x399aad[_0x141e('0x27')][_0x141e('0x33')])){throw new db['Sequelize'][(_0x141e('0x2c'))](_0x141e('0x34'));}if(_[_0x141e('0x35')](_0x399aad[_0x141e('0x27')]['body'])||_0x399aad[_0x141e('0x27')][_0x141e('0x27')]===''){throw new db[(_0x141e('0x2b'))][(_0x141e('0x2c'))](_0x141e('0x36'));}if(_[_0x141e('0x35')](_0x399aad[_0x141e('0x27')][_0x141e('0x37')])){throw new db[(_0x141e('0x2b'))][(_0x141e('0x2c'))](_0x141e('0x38')+_0x3e3a56);}if(!_[_0x141e('0x39')](_0x3e3a56,_0x399aad[_0x141e('0x27')][_0x141e('0x37')])){throw new db['Sequelize']['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x3e3a56);}_0x470464[_0x399aad[_0x141e('0x27')][_0x141e('0x37')]]=_0x399aad[_0x141e('0x27')]['from'];})[_0x141e('0x10')](function(){return db[_0x141e('0x1b')][_0x141e('0x3a')]({'where':{'id':_0x399aad[_0x141e('0x3b')]['id']},'include':[{'model':db[_0x141e('0x3c')],'as':_0x141e('0x3d'),'include':[{'model':db[_0x141e('0x29')],'as':_0x141e('0x3e'),'where':_0x470464,'limit':0x1,'order':[[_0x141e('0x31'),_0x141e('0x3f')]]}]},{'model':db[_0x141e('0x40')],'as':_0x141e('0x41')}]});})[_0x141e('0x10')](function(_0x436435){if(_0x436435&&_0x436435[_0x141e('0x3d')]){var _0x216fc7=_0x436435[_0x141e('0x42')]({'plain':!![]});_0x5db576[_0x141e('0x3b')]=_0x216fc7;_0x5db576['applications']=_0x216fc7[_0x141e('0x41')];_0x5db576['list']=_0x216fc7[_0x141e('0x3d')];_0x5db576[_0x141e('0x43')]=_[_0x141e('0x44')](_0x5db576['applications'],['priority'],[_0x141e('0x45')]);if(_0x5db576['account']['Applications']){delete _0x5db576['account']['Applications'];}if(_0x5db576[_0x141e('0x3b')]['List']&&_0x5db576[_0x141e('0x3b')][_0x141e('0x3d')][_0x141e('0x3e')][_0x141e('0x46')]){return _0x5db576[_0x141e('0x3b')][_0x141e('0x3d')][_0x141e('0x3e')][0x0];}var _0x926b48=_[_0x141e('0xa')](_0x399aad[_0x141e('0x27')],{'firstName':_0x399aad[_0x141e('0x27')][_0x141e('0x33')],'ListId':_0x216fc7[_0x141e('0x47')]});_0x926b48[_0x399aad[_0x141e('0x27')]['mapKey']]=_0x399aad[_0x141e('0x27')][_0x141e('0x33')];return db[_0x141e('0x29')]['create'](_0x926b48,{'fields':_0xdb8008,'raw':!![]});}})[_0x141e('0x10')](function(_0x2f499e){_0x5db576[_0x141e('0x48')]=_0x2f499e;if(_0x2f499e){var _0xf6337={'ContactId':_0x2f499e['id'],'FaxAccountId':_0x399aad['account']['id'],'fax':_0x2f499e[_0x141e('0x28')]};return db[_0x141e('0x49')][_0x141e('0x3a')]({'where':{'ContactId':_0x2f499e['id'],'closed':![],'FaxAccountId':_0x399aad[_0x141e('0x3b')]['id']}})[_0x141e('0x10')](function(_0x47a9ef){if(_0x47a9ef){return[_0x47a9ef,![]];}return db[_0x141e('0x49')]['create'](_0xf6337)[_0x141e('0x10')](function(_0x5be654){return[_0x5be654,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x141e('0x4a')](function(_0x431bfb,_0x31ab6d){var _0x5aae00=_0x431bfb[_0x141e('0x42')]({'plain':!![]});if(_0x31ab6d){if(_0x5db576[_0x141e('0x3b')][_0x141e('0x4b')]){_0x5db576[_0x141e('0x43')][_0x141e('0x4c')]({'id':0x0,'priority':_0x5db576[_0x141e('0x43')]['length']+0x1,'app':'close','appdata':'unmanaged','interval':'*,*,*,*'});}_0x5aae00[_0x141e('0x4d')]=!![];}else{_0x5aae00['created']=![];}_0x5db576['interaction']=_0x5aae00;return db['FaxMessage']['create']({'body':_0x399aad['body'][_0x141e('0x27')],'FaxAccountId':_0x399aad['account']['id'],'FaxInteractionId':_0x431bfb['id'],'direction':'in','ContactId':_0x431bfb['ContactId'],'AttachmentId':_0x399aad[_0x141e('0x27')][_0x141e('0x4e')]});})[_0x141e('0x10')](function(_0x25bbfb){_0x5db576[_0x141e('0x18')]=_0x25bbfb;if(_0x5db576[_0x141e('0x4f')][_0x141e('0x50')]){return db[_0x141e('0x51')][_0x141e('0x3a')]({'attributes':['id','name'],'where':{'id':_0x5db576['interaction'][_0x141e('0x50')]}})['then'](function(_0x3f7f4b){if(_0x3f7f4b){_0x5db576[_0x141e('0x43')]['unshift']({'id':0x0,'priority':0x0,'app':_0x141e('0x52'),'appdata':_0x3f7f4b[_0x141e('0x53')]+','+(_0x5db576[_0x141e('0x3b')][_0x141e('0x54')]||0xa),'interval':_0x141e('0x55')});}return respondWithRpcPromise(_0x141e('0x56'),_0x141e('0x57'),_0x5db576);});}return respondWithRpcPromise(_0x141e('0x56'),_0x141e('0x57'),_0x5db576);})[_0x141e('0x10')](function(_0x4c7101){_0x7832b4(_0x4c7101);})[_0x141e('0x19')](function(_0x98b3f7){_0x3c5706(_0xa8cd7b[_0x141e('0x17')](0x1f4,_0x98b3f7[_0x141e('0x18')]));});});};
\ No newline at end of file
+var _0xe9ec=['client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','FaxAccount,\x20%s,\x20%s','debug','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetFaxAccount','FaxAccount','findAll','options','raw','where','attributes','limit','include','map','model','NotifyFaxAccount','fax','CmContact','describe','difference','keys','updatedAt','createdAt','body','from','ValidationError','from\x20is\x20mandatory','isNil','Sequelize','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','find','account','CmList','List','DESC','FaxApplication','Applications','applications','list','orderBy','priority','asc','Contacts','create','contact','FaxInteraction','spread','push','length','close','*,*,*,*','created','interaction','FaxMessage','AttachmentId','UserId','User','name','agent','waitForTheAssignedAgent','Start','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise'];(function(_0x67c395,_0x38f3be){var _0x583186=function(_0x2a9441){while(--_0x2a9441){_0x67c395['push'](_0x67c395['shift']());}};_0x583186(++_0x38f3be);}(_0xe9ec,0x105));var _0xce9e=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xe9ec[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require(_0xce9e('0x0'));var util=require(_0xce9e('0x1'));var moment=require(_0xce9e('0x2'));var BPromise=require('bluebird');var rs=require(_0xce9e('0x3'));var fs=require('fs');var Redis=require(_0xce9e('0x4'));var db=require(_0xce9e('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xce9e('0x6'));var config=require(_0xce9e('0x7'));var jayson=require(_0xce9e('0x8'));var client=jayson[_0xce9e('0x9')][_0xce9e('0xa')]({'port':0x232c});config[_0xce9e('0xb')]=_[_0xce9e('0xc')](config['redis'],{'host':_0xce9e('0xd'),'port':0x18eb});var socket=require(_0xce9e('0xe'))(new Redis(config[_0xce9e('0xb')]));require('./faxAccount.socket')[_0xce9e('0xf')](socket);function respondWithRpcPromise(_0x5b28e4,_0x19445f,_0x5f2ffc){return new BPromise(function(_0x50cd47,_0x2d538c){return client[_0xce9e('0x10')](_0x5b28e4,_0x5f2ffc)[_0xce9e('0x11')](function(_0x246511){logger[_0xce9e('0x12')](_0xce9e('0x13'),_0x19445f,'request\x20sent');logger[_0xce9e('0x14')](_0xce9e('0x15'),_0x19445f,_0xce9e('0x16'),JSON[_0xce9e('0x17')](_0x246511));if(_0x246511['error']){if(_0x246511[_0xce9e('0x18')][_0xce9e('0x19')]===0x1f4){logger[_0xce9e('0x18')](_0xce9e('0x13'),_0x19445f,_0x246511[_0xce9e('0x18')][_0xce9e('0x1a')]);return _0x2d538c(_0x246511[_0xce9e('0x18')][_0xce9e('0x1a')]);}logger[_0xce9e('0x18')](_0xce9e('0x13'),_0x19445f,_0x246511[_0xce9e('0x18')][_0xce9e('0x1a')]);return _0x50cd47(_0x246511['error']['message']);}else{logger['info']('FaxAccount,\x20%s,\x20%s',_0x19445f,'request\x20sent');_0x50cd47(_0x246511[_0xce9e('0x1b')][_0xce9e('0x1a')]);}})[_0xce9e('0x1c')](function(_0x5c33e9){logger[_0xce9e('0x18')]('FaxAccount,\x20%s,\x20%s',_0x19445f,_0x5c33e9);_0x2d538c(_0x5c33e9);});});}exports[_0xce9e('0x1d')]=function(_0x2b9993){var _0x398f73=this;return new Promise(function(_0x128133,_0x10c7cf){return db[_0xce9e('0x1e')][_0xce9e('0x1f')]({'raw':_0x2b9993[_0xce9e('0x20')]?_0x2b9993['options'][_0xce9e('0x21')]===undefined?!![]:![]:!![],'where':_0x2b9993[_0xce9e('0x20')]?_0x2b9993[_0xce9e('0x20')][_0xce9e('0x22')]||null:null,'attributes':_0x2b9993[_0xce9e('0x20')]?_0x2b9993['options'][_0xce9e('0x23')]||null:null,'limit':_0x2b9993[_0xce9e('0x20')]?_0x2b9993[_0xce9e('0x20')][_0xce9e('0x24')]||null:null,'include':_0x2b9993[_0xce9e('0x20')]?_0x2b9993[_0xce9e('0x20')][_0xce9e('0x25')]?_[_0xce9e('0x26')](_0x2b9993['options'][_0xce9e('0x25')],function(_0x4f7611){return{'model':db[_0x4f7611[_0xce9e('0x27')]],'as':_0x4f7611['as'],'attributes':_0x4f7611[_0xce9e('0x23')],'include':_0x4f7611['include']?_[_0xce9e('0x26')](_0x4f7611['include'],function(_0x9f19cb){return{'model':db[_0x9f19cb[_0xce9e('0x27')]],'as':_0x9f19cb['as'],'attributes':_0x9f19cb[_0xce9e('0x23')],'include':_0x9f19cb['include']?_['map'](_0x9f19cb[_0xce9e('0x25')],function(_0x4ccc0b){return{'model':db[_0x4ccc0b[_0xce9e('0x27')]],'as':_0x4ccc0b['as'],'attributes':_0x4ccc0b['attributes']};}):[]};}):[]};}):[]:[]})[_0xce9e('0x11')](function(_0x12a398){logger['info'](_0xce9e('0x1d'),_0x2b9993);logger[_0xce9e('0x14')]('GetFaxAccount',_0x2b9993,JSON[_0xce9e('0x17')](_0x12a398));_0x128133(_0x12a398);})[_0xce9e('0x1c')](function(_0x4c4375){logger['error'](_0xce9e('0x1d'),_0x4c4375[_0xce9e('0x1a')],_0x2b9993);_0x10c7cf(_0x398f73['error'](0x1f4,_0x4c4375[_0xce9e('0x1a')]));});});};exports[_0xce9e('0x28')]=function(_0x431171,_0x4b881f,_0x46881a){var _0x68df0a=this;return new Promise(function(_0x194e97,_0x5e9e75){var _0x17f3c1={'body':_0x431171['body'],'channel':_0xce9e('0x29')};var _0x1fb60b=[];var _0x34e09e=[];var _0x486af9={};return db[_0xce9e('0x2a')][_0xce9e('0x2b')]()[_0xce9e('0x11')](function(_0x85b00e){if(!_0x85b00e){throw new db['Sequelize']['ValidationError']('no\x20available\x20attributes');}_0x1fb60b=_[_0xce9e('0x2c')](_[_0xce9e('0x2d')](_0x85b00e),['createdAt',_0xce9e('0x2e')]);_0x34e09e=_['difference'](_[_0xce9e('0x2d')](_0x85b00e),[_0xce9e('0x2f'),_0xce9e('0x2e'),'CompanyId','ListId']);if(_0x431171[_0xce9e('0x30')]['id']){delete _0x431171['body']['id'];}if(_['isNil'](_0x431171[_0xce9e('0x30')][_0xce9e('0x31')])){throw new db['Sequelize'][(_0xce9e('0x32'))](_0xce9e('0x33'));}if(_[_0xce9e('0x34')](_0x431171[_0xce9e('0x30')]['body'])||_0x431171[_0xce9e('0x30')][_0xce9e('0x30')]===''){throw new db[(_0xce9e('0x35'))][(_0xce9e('0x32'))](_0xce9e('0x36'));}if(_[_0xce9e('0x34')](_0x431171[_0xce9e('0x30')][_0xce9e('0x37')])){throw new db['Sequelize'][(_0xce9e('0x32'))](_0xce9e('0x38')+_0x34e09e);}if(!_[_0xce9e('0x39')](_0x34e09e,_0x431171[_0xce9e('0x30')][_0xce9e('0x37')])){throw new db[(_0xce9e('0x35'))][(_0xce9e('0x32'))](_0xce9e('0x3a')+_0x34e09e);}_0x486af9[_0x431171[_0xce9e('0x30')]['mapKey']]=_0x431171['body'][_0xce9e('0x31')];})[_0xce9e('0x11')](function(){return db[_0xce9e('0x1e')][_0xce9e('0x3b')]({'where':{'id':_0x431171[_0xce9e('0x3c')]['id']},'include':[{'model':db[_0xce9e('0x3d')],'as':_0xce9e('0x3e'),'include':[{'model':db[_0xce9e('0x2a')],'as':'Contacts','where':_0x486af9,'limit':0x1,'order':[['updatedAt',_0xce9e('0x3f')]]}]},{'model':db[_0xce9e('0x40')],'as':_0xce9e('0x41')}]});})[_0xce9e('0x11')](function(_0x193489){if(_0x193489&&_0x193489[_0xce9e('0x3e')]){var _0x484d1a=_0x193489['get']({'plain':!![]});_0x17f3c1['account']=_0x484d1a;_0x17f3c1[_0xce9e('0x42')]=_0x484d1a['Applications'];_0x17f3c1[_0xce9e('0x43')]=_0x484d1a[_0xce9e('0x3e')];_0x17f3c1[_0xce9e('0x42')]=_[_0xce9e('0x44')](_0x17f3c1['applications'],[_0xce9e('0x45')],[_0xce9e('0x46')]);if(_0x17f3c1['account'][_0xce9e('0x41')]){delete _0x17f3c1[_0xce9e('0x3c')][_0xce9e('0x41')];}if(_0x17f3c1[_0xce9e('0x3c')][_0xce9e('0x3e')]&&_0x17f3c1[_0xce9e('0x3c')][_0xce9e('0x3e')][_0xce9e('0x47')]['length']){return _0x17f3c1['account'][_0xce9e('0x3e')]['Contacts'][0x0];}var _0x5eb04c=_[_0xce9e('0xc')](_0x431171[_0xce9e('0x30')],{'firstName':_0x431171[_0xce9e('0x30')][_0xce9e('0x31')],'ListId':_0x484d1a['ListId']});_0x5eb04c[_0x431171[_0xce9e('0x30')][_0xce9e('0x37')]]=_0x431171['body'][_0xce9e('0x31')];return db['CmContact'][_0xce9e('0x48')](_0x5eb04c,{'fields':_0x1fb60b,'raw':!![]});}})['then'](function(_0x2ae834){_0x17f3c1[_0xce9e('0x49')]=_0x2ae834;if(_0x2ae834){var _0x1ed0cf={'ContactId':_0x2ae834['id'],'FaxAccountId':_0x431171[_0xce9e('0x3c')]['id'],'fax':_0x2ae834[_0xce9e('0x29')]};return db[_0xce9e('0x4a')][_0xce9e('0x3b')]({'where':{'ContactId':_0x2ae834['id'],'closed':![],'FaxAccountId':_0x431171[_0xce9e('0x3c')]['id']}})[_0xce9e('0x11')](function(_0x497a07){if(_0x497a07){return[_0x497a07,![]];}return db[_0xce9e('0x4a')]['create'](_0x1ed0cf)[_0xce9e('0x11')](function(_0xe1e8e5){return[_0xe1e8e5,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0xce9e('0x4b')](function(_0x1ce976,_0x5f12eb){var _0x45e304=_0x1ce976['get']({'plain':!![]});if(_0x5f12eb){if(_0x17f3c1[_0xce9e('0x3c')]['autoclose']){_0x17f3c1[_0xce9e('0x42')][_0xce9e('0x4c')]({'id':0x0,'priority':_0x17f3c1['applications'][_0xce9e('0x4d')]+0x1,'app':_0xce9e('0x4e'),'appdata':'unmanaged','interval':_0xce9e('0x4f')});}_0x45e304[_0xce9e('0x50')]=!![];}else{_0x45e304['created']=![];}_0x17f3c1[_0xce9e('0x51')]=_0x45e304;return db[_0xce9e('0x52')][_0xce9e('0x48')]({'body':_0x431171['body'][_0xce9e('0x30')],'FaxAccountId':_0x431171[_0xce9e('0x3c')]['id'],'FaxInteractionId':_0x1ce976['id'],'direction':'in','ContactId':_0x1ce976['ContactId'],'AttachmentId':_0x431171[_0xce9e('0x30')][_0xce9e('0x53')]});})[_0xce9e('0x11')](function(_0x3d0477){_0x17f3c1[_0xce9e('0x1a')]=_0x3d0477;if(_0x17f3c1[_0xce9e('0x51')][_0xce9e('0x54')]){return db[_0xce9e('0x55')][_0xce9e('0x3b')]({'attributes':['id',_0xce9e('0x56')],'where':{'id':_0x17f3c1[_0xce9e('0x51')][_0xce9e('0x54')]}})[_0xce9e('0x11')](function(_0x26a43e){if(_0x26a43e){_0x17f3c1[_0xce9e('0x42')]['unshift']({'id':0x0,'priority':0x0,'app':_0xce9e('0x57'),'appdata':_0x26a43e[_0xce9e('0x56')]+','+(_0x17f3c1[_0xce9e('0x3c')][_0xce9e('0x58')]||0xa),'interval':_0xce9e('0x4f')});}return respondWithRpcPromise(_0xce9e('0x59'),'startRouting',_0x17f3c1);});}return respondWithRpcPromise(_0xce9e('0x59'),'startRouting',_0x17f3c1);})[_0xce9e('0x11')](function(_0x344332){_0x194e97(_0x344332);})[_0xce9e('0x1c')](function(_0x45633f){_0x5e9e75(_0x68df0a['error'](0x1f4,_0x45633f['message']));});});};
\ No newline at end of file
index 544a866..269331e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bac=['removeListener','register','length','faxAccount:','./faxAccount.events','update'];(function(_0x9d46ac,_0x2ecddc){var _0x1bec61=function(_0x3ed3ce){while(--_0x3ed3ce){_0x9d46ac['push'](_0x9d46ac['shift']());}};_0x1bec61(++_0x2ecddc);}(_0x2bac,0x19c));var _0xc2ba=function(_0x4010c9,_0x214953){_0x4010c9=_0x4010c9-0x0;var _0x3fb627=_0x2bac[_0x4010c9];return _0x3fb627;};'use strict';var FaxAccountEvents=require(_0xc2ba('0x0'));var events=['save','remove',_0xc2ba('0x1')];function createListener(_0x23c1cf,_0x351d55){return function(_0x423213){_0x351d55['emit'](_0x23c1cf,_0x423213);};}function removeListener(_0x45994f,_0x2bc105){return function(){FaxAccountEvents[_0xc2ba('0x2')](_0x45994f,_0x2bc105);};}exports[_0xc2ba('0x3')]=function(_0x2229da){for(var _0x3e03e7=0x0,_0x334d82=events[_0xc2ba('0x4')];_0x3e03e7<_0x334d82;_0x3e03e7++){var _0x3a350f=events[_0x3e03e7];var _0x1fb68e=createListener(_0xc2ba('0x5')+_0x3a350f,_0x2229da);FaxAccountEvents['on'](_0x3a350f,_0x1fb68e);}};
\ No newline at end of file
+var _0x68a3=['save','update','removeListener','length','faxAccount:','./faxAccount.events'];(function(_0x453e58,_0x51523e){var _0x4be39c=function(_0x3f35fd){while(--_0x3f35fd){_0x453e58['push'](_0x453e58['shift']());}};_0x4be39c(++_0x51523e);}(_0x68a3,0x1a3));var _0x368a=function(_0x8a7e38,_0x473a5d){_0x8a7e38=_0x8a7e38-0x0;var _0x228609=_0x68a3[_0x8a7e38];return _0x228609;};'use strict';var FaxAccountEvents=require(_0x368a('0x0'));var events=[_0x368a('0x1'),'remove',_0x368a('0x2')];function createListener(_0x14ebed,_0x411df7){return function(_0x516768){_0x411df7['emit'](_0x14ebed,_0x516768);};}function removeListener(_0x287de7,_0x5557a2){return function(){FaxAccountEvents[_0x368a('0x3')](_0x287de7,_0x5557a2);};}exports['register']=function(_0x1fbf1c){for(var _0x349950=0x0,_0x178d98=events[_0x368a('0x4')];_0x349950<_0x178d98;_0x349950++){var _0x47ba0b=events[_0x349950];var _0x25abbc=createListener(_0x368a('0x5')+_0x47ba0b,_0x1fbf1c);FaxAccountEvents['on'](_0x47ba0b,_0x25abbc);}};
\ No newline at end of file
index d6a31da..e045154 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(_0x65eaa6,_0x358e24){var _0x351927=function(_0xc81615){while(--_0xc81615){_0x65eaa6['push'](_0x65eaa6['shift']());}};_0x351927(++_0x358e24);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xa9e0[_0x5b644e];return _0x49c6bf;};'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(_0x36e88b,_0x1aff1b){var _0x5df45c=function(_0x555b78){while(--_0x555b78){_0x36e88b['push'](_0x36e88b['shift']());}};_0x5df45c(++_0x1aff1b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0xa9e0[_0x5b561d];return _0x431060;};'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 4f673e9..dfb5aa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd42=['INTEGER','STRING','sequelize','exports'];(function(_0x14e714,_0x13e73a){var _0x5444fd=function(_0x5ba6ca){while(--_0x5ba6ca){_0x14e714['push'](_0x14e714['shift']());}};_0x5444fd(++_0x13e73a);}(_0xbd42,0x126));var _0x2bd4=function(_0x3fa78c,_0x18b0f2){_0x3fa78c=_0x3fa78c-0x0;var _0x4cbcc9=_0xbd42[_0x3fa78c];return _0x4cbcc9;};'use strict';var Sequelize=require(_0x2bd4('0x0'));module[_0x2bd4('0x1')]={'priority':{'type':Sequelize[_0x2bd4('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x2bd4('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x2bd4('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x67fb=['STRING','*,*,*,*','exports','INTEGER','noop','TEXT'];(function(_0x12ee1d,_0x51bca3){var _0x1b614e=function(_0x39d6a2){while(--_0x39d6a2){_0x12ee1d['push'](_0x12ee1d['shift']());}};_0x1b614e(++_0x51bca3);}(_0x67fb,0x92));var _0xb67f=function(_0x2b77f4,_0x57de3b){_0x2b77f4=_0x2b77f4-0x0;var _0x1f13bf=_0x67fb[_0x2b77f4];return _0x1f13bf;};'use strict';var Sequelize=require('sequelize');module[_0xb67f('0x0')]={'priority':{'type':Sequelize[_0xb67f('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xb67f('0x2')},'appdata':{'type':Sequelize[_0xb67f('0x3')]()},'description':{'type':Sequelize[_0xb67f('0x4')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xb67f('0x5')}};
\ No newline at end of file
index ce8b8c2..978540a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74df=['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','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','save','update','then','error','stack','name','send','index','map','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','FaxApplication','rows','catch','show','find','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce'];(function(_0xce755b,_0x58fb87){var _0x30d6da=function(_0x4fa3c2){while(--_0x4fa3c2){_0xce755b['push'](_0xce755b['shift']());}};_0x30d6da(++_0x58fb87);}(_0x74df,0x1bd));var _0xf74d=function(_0x105920,_0x388f9b){_0x105920=_0x105920-0x0;var _0x47a7d1=_0x74df[_0x105920];return _0x47a7d1;};'use strict';var emlformat=require(_0xf74d('0x0'));var rimraf=require(_0xf74d('0x1'));var zipdir=require(_0xf74d('0x2'));var jsonpatch=require(_0xf74d('0x3'));var rp=require(_0xf74d('0x4'));var moment=require(_0xf74d('0x5'));var BPromise=require(_0xf74d('0x6'));var Mustache=require(_0xf74d('0x7'));var util=require(_0xf74d('0x8'));var path=require(_0xf74d('0x9'));var sox=require(_0xf74d('0xa'));var csv=require(_0xf74d('0xb'));var ejs=require(_0xf74d('0xc'));var fs=require('fs');var fs_extra=require(_0xf74d('0xd'));var _=require('lodash');var squel=require(_0xf74d('0xe'));var crypto=require(_0xf74d('0xf'));var jsforce=require(_0xf74d('0x10'));var deskjs=require(_0xf74d('0x11'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xf74d('0x12'));var Redis=require(_0xf74d('0x13'));var authService=require(_0xf74d('0x14'));var qs=require(_0xf74d('0x15'));var as=require(_0xf74d('0x16'));var hardwareService=require(_0xf74d('0x17'));var logger=require(_0xf74d('0x18'))(_0xf74d('0x19'));var utils=require(_0xf74d('0x1a'));var config=require(_0xf74d('0x1b'));var licenseUtil=require(_0xf74d('0x1c'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4602f6,_0x132d67){_0x132d67=_0x132d67||0xcc;return function(_0x428419){if(_0x428419){return _0x4602f6[_0xf74d('0x1d')](_0x132d67);}return _0x4602f6['status'](_0x132d67)[_0xf74d('0x1e')]();};}function respondWithResult(_0x12188e,_0x47f1e8){_0x47f1e8=_0x47f1e8||0xc8;return function(_0x36a200){if(_0x36a200){return _0x12188e[_0xf74d('0x1f')](_0x47f1e8)[_0xf74d('0x20')](_0x36a200);}};}function respondWithFilteredResult(_0x378ef6,_0x55a673){return function(_0x4d3ac7){if(_0x4d3ac7){var _0x516305=typeof _0x55a673[_0xf74d('0x21')]===_0xf74d('0x22')&&typeof _0x55a673[_0xf74d('0x23')]==='undefined';var _0x16ded5=_0x4d3ac7[_0xf74d('0x24')];var _0x220577=_0x516305?0x0:_0x55a673[_0xf74d('0x21')];var _0x572a5c=_0x516305?_0x4d3ac7[_0xf74d('0x24')]:_0x55a673['offset']+_0x55a673[_0xf74d('0x23')];var _0x3b467f;if(_0x572a5c>=_0x16ded5){_0x572a5c=_0x16ded5;_0x3b467f=0xc8;}else{_0x3b467f=0xce;}_0x378ef6[_0xf74d('0x1f')](_0x3b467f);return _0x378ef6[_0xf74d('0x25')]('Content-Range',_0x220577+'-'+_0x572a5c+'/'+_0x16ded5)[_0xf74d('0x20')](_0x4d3ac7);}return null;};}function patchUpdates(_0x904a2){return function(_0x15db4c){try{jsonpatch[_0xf74d('0x26')](_0x15db4c,_0x904a2,!![]);}catch(_0x497b03){return BPromise['reject'](_0x497b03);}return _0x15db4c[_0xf74d('0x27')]();};}function saveUpdates(_0x1a1546,_0x2432cc){return function(_0x4472a4){if(_0x4472a4){return _0x4472a4[_0xf74d('0x28')](_0x1a1546)[_0xf74d('0x29')](function(_0x22acff){return _0x22acff;});}return null;};}function removeEntity(_0x4c305f,_0x15b972){return function(_0x37633b){if(_0x37633b){return _0x37633b['destroy']()[_0xf74d('0x29')](function(){_0x4c305f[_0xf74d('0x1f')](0xcc)[_0xf74d('0x1e')]();});}};}function handleEntityNotFound(_0x204813,_0x141739){return function(_0x30fd9d){if(!_0x30fd9d){_0x204813[_0xf74d('0x1d')](0x194);}return _0x30fd9d;};}function handleError(_0x4b3075,_0x1f3ca3){_0x1f3ca3=_0x1f3ca3||0x1f4;return function(_0xd14a54){logger[_0xf74d('0x2a')](_0xd14a54[_0xf74d('0x2b')]);if(_0xd14a54[_0xf74d('0x2c')]){delete _0xd14a54[_0xf74d('0x2c')];}_0x4b3075[_0xf74d('0x1f')](_0x1f3ca3)[_0xf74d('0x2d')](_0xd14a54);};}exports[_0xf74d('0x2e')]=function(_0x26de0a,_0x2a0f6a){var _0x40af11={},_0x2a376c={},_0x25deb1={'count':0x0,'rows':[]};var _0x249e04=_[_0xf74d('0x2f')](db['FaxApplication']['rawAttributes'],function(_0x574d3c){return{'name':_0x574d3c[_0xf74d('0x30')],'type':_0x574d3c[_0xf74d('0x31')][_0xf74d('0x32')]};});_0x2a376c['model']=_['map'](_0x249e04,'name');_0x2a376c[_0xf74d('0x33')]=_[_0xf74d('0x34')](_0x26de0a[_0xf74d('0x33')]);_0x2a376c[_0xf74d('0x35')]=_[_0xf74d('0x36')](_0x2a376c[_0xf74d('0x37')],_0x2a376c[_0xf74d('0x33')]);_0x40af11[_0xf74d('0x38')]=_[_0xf74d('0x36')](_0x2a376c[_0xf74d('0x37')],qs[_0xf74d('0x39')](_0x26de0a[_0xf74d('0x33')][_0xf74d('0x39')]));_0x40af11[_0xf74d('0x38')]=_0x40af11[_0xf74d('0x38')][_0xf74d('0x3a')]?_0x40af11[_0xf74d('0x38')]:_0x2a376c['model'];if(!_0x26de0a[_0xf74d('0x33')][_0xf74d('0x3b')]('nolimit')){_0x40af11[_0xf74d('0x23')]=qs[_0xf74d('0x23')](_0x26de0a[_0xf74d('0x33')][_0xf74d('0x23')]);_0x40af11[_0xf74d('0x21')]=qs[_0xf74d('0x21')](_0x26de0a[_0xf74d('0x33')][_0xf74d('0x21')]);}_0x40af11[_0xf74d('0x3c')]=qs[_0xf74d('0x3d')](_0x26de0a['query'][_0xf74d('0x3d')]);_0x40af11['where']=qs[_0xf74d('0x35')](_[_0xf74d('0x3e')](_0x26de0a[_0xf74d('0x33')],_0x2a376c[_0xf74d('0x35')]),_0x249e04);if(_0x26de0a[_0xf74d('0x33')][_0xf74d('0x3f')]){_0x40af11[_0xf74d('0x40')]=_[_0xf74d('0x41')](_0x40af11[_0xf74d('0x40')],{'$or':_[_0xf74d('0x2f')](_0x249e04,function(_0x414a27){if(_0x414a27[_0xf74d('0x31')]!==_0xf74d('0x42')){var _0x1ecf55={};_0x1ecf55[_0x414a27[_0xf74d('0x2c')]]={'$like':'%'+_0x26de0a[_0xf74d('0x33')][_0xf74d('0x3f')]+'%'};return _0x1ecf55;}})});}_0x40af11=_[_0xf74d('0x41')]({},_0x40af11,_0x26de0a['options']);var _0x1191f8={'where':_0x40af11['where']};return db['FaxApplication'][_0xf74d('0x24')](_0x1191f8)[_0xf74d('0x29')](function(_0x3ba0dc){_0x25deb1[_0xf74d('0x24')]=_0x3ba0dc;if(_0x26de0a[_0xf74d('0x33')][_0xf74d('0x43')]){_0x40af11[_0xf74d('0x44')]=[{'all':!![]}];}return db[_0xf74d('0x45')]['findAll'](_0x40af11);})[_0xf74d('0x29')](function(_0x3d3785){_0x25deb1[_0xf74d('0x46')]=_0x3d3785;return _0x25deb1;})[_0xf74d('0x29')](respondWithFilteredResult(_0x2a0f6a,_0x40af11))[_0xf74d('0x47')](handleError(_0x2a0f6a,null));};exports[_0xf74d('0x48')]=function(_0xf83082,_0x190b83){var _0x1bcec5={'raw':!![],'where':{'id':_0xf83082['params']['id']}},_0x5bdf5a={};_0x5bdf5a[_0xf74d('0x37')]=_[_0xf74d('0x34')](db[_0xf74d('0x45')]['rawAttributes']);_0x5bdf5a[_0xf74d('0x33')]=_[_0xf74d('0x34')](_0xf83082[_0xf74d('0x33')]);_0x5bdf5a[_0xf74d('0x35')]=_['intersection'](_0x5bdf5a['model'],_0x5bdf5a['query']);_0x1bcec5[_0xf74d('0x38')]=_[_0xf74d('0x36')](_0x5bdf5a[_0xf74d('0x37')],qs[_0xf74d('0x39')](_0xf83082['query'][_0xf74d('0x39')]));_0x1bcec5[_0xf74d('0x38')]=_0x1bcec5[_0xf74d('0x38')][_0xf74d('0x3a')]?_0x1bcec5[_0xf74d('0x38')]:_0x5bdf5a['model'];if(_0xf83082[_0xf74d('0x33')][_0xf74d('0x43')]){_0x1bcec5['include']=[{'all':!![]}];}_0x1bcec5=_[_0xf74d('0x41')]({},_0x1bcec5,_0xf83082['options']);return db[_0xf74d('0x45')][_0xf74d('0x49')](_0x1bcec5)[_0xf74d('0x29')](handleEntityNotFound(_0x190b83,null))['then'](respondWithResult(_0x190b83,null))['catch'](handleError(_0x190b83,null));};exports[_0xf74d('0x4a')]=function(_0x44ef11,_0x10db90){return db[_0xf74d('0x45')]['create'](_0x44ef11[_0xf74d('0x4b')],{})[_0xf74d('0x29')](respondWithResult(_0x10db90,0xc9))[_0xf74d('0x47')](handleError(_0x10db90,null));};exports[_0xf74d('0x28')]=function(_0x35408e,_0x1b0fe4){if(_0x35408e[_0xf74d('0x4b')]['id']){delete _0x35408e[_0xf74d('0x4b')]['id'];}return db[_0xf74d('0x45')][_0xf74d('0x49')]({'where':{'id':_0x35408e['params']['id']}})['then'](handleEntityNotFound(_0x1b0fe4,null))['then'](saveUpdates(_0x35408e[_0xf74d('0x4b')],null))[_0xf74d('0x29')](respondWithResult(_0x1b0fe4,null))[_0xf74d('0x47')](handleError(_0x1b0fe4,null));};exports[_0xf74d('0x4c')]=function(_0x2744d2,_0x59d9a4){return db['FaxApplication'][_0xf74d('0x49')]({'where':{'id':_0x2744d2['params']['id']}})[_0xf74d('0x29')](handleEntityNotFound(_0x59d9a4,null))[_0xf74d('0x29')](removeEntity(_0x59d9a4,null))['catch'](handleError(_0x59d9a4,null));};
\ No newline at end of file
+var _0xd9a3=['moment','bluebird','util','path','sox','ejs','lodash','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','limit','undefined','count','offset','Content-Range','apply','reject','update','then','error','stack','name','send','map','FaxApplication','fieldName','type','key','model','query','intersection','fields','attributes','length','sort','where','filters','filter','VIRTUAL','options','findAll','rows','show','params','keys','rawAttributes','includeAll','include','merge','find','catch','create','body','destroy','eml-format','zip-dir','fast-json-patch','request-promise'];(function(_0x383cab,_0x5ea01f){var _0x131761=function(_0x400dfc){while(--_0x400dfc){_0x383cab['push'](_0x383cab['shift']());}};_0x131761(++_0x5ea01f);}(_0xd9a3,0x118));var _0x3d9a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xd9a3[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x3d9a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3d9a('0x1'));var jsonpatch=require(_0x3d9a('0x2'));var rp=require(_0x3d9a('0x3'));var moment=require(_0x3d9a('0x4'));var BPromise=require(_0x3d9a('0x5'));var Mustache=require('mustache');var util=require(_0x3d9a('0x6'));var path=require(_0x3d9a('0x7'));var sox=require(_0x3d9a('0x8'));var csv=require('to-csv');var ejs=require(_0x3d9a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3d9a('0xa'));var squel=require(_0x3d9a('0xb'));var crypto=require(_0x3d9a('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x3d9a('0xd'));var toCsv=require(_0x3d9a('0xe'));var querystring=require('querystring');var Papa=require(_0x3d9a('0xf'));var Redis=require(_0x3d9a('0x10'));var authService=require(_0x3d9a('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3d9a('0x12'));var logger=require(_0x3d9a('0x13'))(_0x3d9a('0x14'));var utils=require('../../config/utils');var config=require(_0x3d9a('0x15'));var licenseUtil=require(_0x3d9a('0x16'));var db=require(_0x3d9a('0x17'))['db'];function respondWithStatusCode(_0x10c84d,_0x5d26c0){_0x5d26c0=_0x5d26c0||0xcc;return function(_0x36ce8b){if(_0x36ce8b){return _0x10c84d[_0x3d9a('0x18')](_0x5d26c0);}return _0x10c84d[_0x3d9a('0x19')](_0x5d26c0)['end']();};}function respondWithResult(_0xe65e05,_0x127a61){_0x127a61=_0x127a61||0xc8;return function(_0x45a2ee){if(_0x45a2ee){return _0xe65e05[_0x3d9a('0x19')](_0x127a61)[_0x3d9a('0x1a')](_0x45a2ee);}};}function respondWithFilteredResult(_0x2e4283,_0x20433a){return function(_0x2fc73d){if(_0x2fc73d){var _0x223b9c=typeof _0x20433a['offset']==='undefined'&&typeof _0x20433a[_0x3d9a('0x1b')]===_0x3d9a('0x1c');var _0x3a5cdd=_0x2fc73d[_0x3d9a('0x1d')];var _0x57c579=_0x223b9c?0x0:_0x20433a[_0x3d9a('0x1e')];var _0x11fe25=_0x223b9c?_0x2fc73d[_0x3d9a('0x1d')]:_0x20433a[_0x3d9a('0x1e')]+_0x20433a['limit'];var _0x393db5;if(_0x11fe25>=_0x3a5cdd){_0x11fe25=_0x3a5cdd;_0x393db5=0xc8;}else{_0x393db5=0xce;}_0x2e4283[_0x3d9a('0x19')](_0x393db5);return _0x2e4283['set'](_0x3d9a('0x1f'),_0x57c579+'-'+_0x11fe25+'/'+_0x3a5cdd)[_0x3d9a('0x1a')](_0x2fc73d);}return null;};}function patchUpdates(_0x7c559){return function(_0x512e1b){try{jsonpatch[_0x3d9a('0x20')](_0x512e1b,_0x7c559,!![]);}catch(_0x20473d){return BPromise[_0x3d9a('0x21')](_0x20473d);}return _0x512e1b['save']();};}function saveUpdates(_0x37348f,_0xb0ce27){return function(_0x3d6f82){if(_0x3d6f82){return _0x3d6f82[_0x3d9a('0x22')](_0x37348f)['then'](function(_0x57e017){return _0x57e017;});}return null;};}function removeEntity(_0x558adb,_0x1d6ad4){return function(_0x1532d8){if(_0x1532d8){return _0x1532d8['destroy']()[_0x3d9a('0x23')](function(){_0x558adb[_0x3d9a('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ac65f,_0x3ae459){return function(_0x272290){if(!_0x272290){_0x2ac65f[_0x3d9a('0x18')](0x194);}return _0x272290;};}function handleError(_0x3151f4,_0x2080fb){_0x2080fb=_0x2080fb||0x1f4;return function(_0x45c183){logger[_0x3d9a('0x24')](_0x45c183[_0x3d9a('0x25')]);if(_0x45c183['name']){delete _0x45c183[_0x3d9a('0x26')];}_0x3151f4[_0x3d9a('0x19')](_0x2080fb)[_0x3d9a('0x27')](_0x45c183);};}exports['index']=function(_0x16ffe6,_0x30e487){var _0x16db7b={},_0x2da2b3={},_0x4a5fbd={'count':0x0,'rows':[]};var _0x49fa27=_[_0x3d9a('0x28')](db[_0x3d9a('0x29')]['rawAttributes'],function(_0x524f87){return{'name':_0x524f87[_0x3d9a('0x2a')],'type':_0x524f87[_0x3d9a('0x2b')][_0x3d9a('0x2c')]};});_0x2da2b3[_0x3d9a('0x2d')]=_[_0x3d9a('0x28')](_0x49fa27,_0x3d9a('0x26'));_0x2da2b3[_0x3d9a('0x2e')]=_['keys'](_0x16ffe6['query']);_0x2da2b3['filters']=_['intersection'](_0x2da2b3[_0x3d9a('0x2d')],_0x2da2b3[_0x3d9a('0x2e')]);_0x16db7b['attributes']=_[_0x3d9a('0x2f')](_0x2da2b3['model'],qs[_0x3d9a('0x30')](_0x16ffe6[_0x3d9a('0x2e')]['fields']));_0x16db7b[_0x3d9a('0x31')]=_0x16db7b['attributes'][_0x3d9a('0x32')]?_0x16db7b['attributes']:_0x2da2b3['model'];if(!_0x16ffe6[_0x3d9a('0x2e')]['hasOwnProperty']('nolimit')){_0x16db7b['limit']=qs[_0x3d9a('0x1b')](_0x16ffe6[_0x3d9a('0x2e')]['limit']);_0x16db7b[_0x3d9a('0x1e')]=qs[_0x3d9a('0x1e')](_0x16ffe6[_0x3d9a('0x2e')][_0x3d9a('0x1e')]);}_0x16db7b['order']=qs['sort'](_0x16ffe6['query'][_0x3d9a('0x33')]);_0x16db7b[_0x3d9a('0x34')]=qs['filters'](_['pick'](_0x16ffe6[_0x3d9a('0x2e')],_0x2da2b3[_0x3d9a('0x35')]),_0x49fa27);if(_0x16ffe6['query'][_0x3d9a('0x36')]){_0x16db7b[_0x3d9a('0x34')]=_['merge'](_0x16db7b[_0x3d9a('0x34')],{'$or':_[_0x3d9a('0x28')](_0x49fa27,function(_0x57de71){if(_0x57de71[_0x3d9a('0x2b')]!==_0x3d9a('0x37')){var _0x39ea68={};_0x39ea68[_0x57de71['name']]={'$like':'%'+_0x16ffe6[_0x3d9a('0x2e')][_0x3d9a('0x36')]+'%'};return _0x39ea68;}})});}_0x16db7b=_['merge']({},_0x16db7b,_0x16ffe6[_0x3d9a('0x38')]);var _0x4e3506={'where':_0x16db7b[_0x3d9a('0x34')]};return db['FaxApplication'][_0x3d9a('0x1d')](_0x4e3506)['then'](function(_0x559995){_0x4a5fbd['count']=_0x559995;if(_0x16ffe6[_0x3d9a('0x2e')]['includeAll']){_0x16db7b['include']=[{'all':!![]}];}return db[_0x3d9a('0x29')][_0x3d9a('0x39')](_0x16db7b);})[_0x3d9a('0x23')](function(_0x2ae7a7){_0x4a5fbd[_0x3d9a('0x3a')]=_0x2ae7a7;return _0x4a5fbd;})[_0x3d9a('0x23')](respondWithFilteredResult(_0x30e487,_0x16db7b))['catch'](handleError(_0x30e487,null));};exports[_0x3d9a('0x3b')]=function(_0x53c0c0,_0x1a830a){var _0x1a58ad={'raw':!![],'where':{'id':_0x53c0c0[_0x3d9a('0x3c')]['id']}},_0x23ed63={};_0x23ed63[_0x3d9a('0x2d')]=_[_0x3d9a('0x3d')](db['FaxApplication'][_0x3d9a('0x3e')]);_0x23ed63[_0x3d9a('0x2e')]=_[_0x3d9a('0x3d')](_0x53c0c0[_0x3d9a('0x2e')]);_0x23ed63['filters']=_[_0x3d9a('0x2f')](_0x23ed63[_0x3d9a('0x2d')],_0x23ed63[_0x3d9a('0x2e')]);_0x1a58ad['attributes']=_['intersection'](_0x23ed63[_0x3d9a('0x2d')],qs[_0x3d9a('0x30')](_0x53c0c0[_0x3d9a('0x2e')][_0x3d9a('0x30')]));_0x1a58ad[_0x3d9a('0x31')]=_0x1a58ad[_0x3d9a('0x31')]['length']?_0x1a58ad[_0x3d9a('0x31')]:_0x23ed63[_0x3d9a('0x2d')];if(_0x53c0c0[_0x3d9a('0x2e')][_0x3d9a('0x3f')]){_0x1a58ad[_0x3d9a('0x40')]=[{'all':!![]}];}_0x1a58ad=_[_0x3d9a('0x41')]({},_0x1a58ad,_0x53c0c0[_0x3d9a('0x38')]);return db['FaxApplication'][_0x3d9a('0x42')](_0x1a58ad)[_0x3d9a('0x23')](handleEntityNotFound(_0x1a830a,null))[_0x3d9a('0x23')](respondWithResult(_0x1a830a,null))[_0x3d9a('0x43')](handleError(_0x1a830a,null));};exports[_0x3d9a('0x44')]=function(_0xaeb897,_0x4b55d0){return db[_0x3d9a('0x29')][_0x3d9a('0x44')](_0xaeb897['body'],{})[_0x3d9a('0x23')](respondWithResult(_0x4b55d0,0xc9))[_0x3d9a('0x43')](handleError(_0x4b55d0,null));};exports[_0x3d9a('0x22')]=function(_0x2a637e,_0x5cbbbb){if(_0x2a637e[_0x3d9a('0x45')]['id']){delete _0x2a637e[_0x3d9a('0x45')]['id'];}return db['FaxApplication'][_0x3d9a('0x42')]({'where':{'id':_0x2a637e[_0x3d9a('0x3c')]['id']}})[_0x3d9a('0x23')](handleEntityNotFound(_0x5cbbbb,null))[_0x3d9a('0x23')](saveUpdates(_0x2a637e[_0x3d9a('0x45')],null))['then'](respondWithResult(_0x5cbbbb,null))[_0x3d9a('0x43')](handleError(_0x5cbbbb,null));};exports[_0x3d9a('0x46')]=function(_0x8705e0,_0x11016e){return db[_0x3d9a('0x29')][_0x3d9a('0x42')]({'where':{'id':_0x8705e0[_0x3d9a('0x3c')]['id']}})[_0x3d9a('0x23')](handleEntityNotFound(_0x11016e,null))[_0x3d9a('0x23')](removeEntity(_0x11016e,null))[_0x3d9a('0x43')](handleError(_0x11016e,null));};
\ No newline at end of file
index f49d7ef..93f3858 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48b5=['request-promise','path','rimraf','../../config/environment','./faxApplication.attributes','exports','define','FaxApplication','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment'];(function(_0x33077d,_0x1f29d7){var _0x46b6a9=function(_0x2b83fd){while(--_0x2b83fd){_0x33077d['push'](_0x33077d['shift']());}};_0x46b6a9(++_0x1f29d7);}(_0x48b5,0x114));var _0x548b=function(_0xd09668,_0x1435b2){_0xd09668=_0xd09668-0x0;var _0x68726=_0x48b5[_0xd09668];return _0x68726;};'use strict';var _=require(_0x548b('0x0'));var util=require(_0x548b('0x1'));var logger=require('../../config/logger')(_0x548b('0x2'));var moment=require(_0x548b('0x3'));var BPromise=require('bluebird');var rp=require(_0x548b('0x4'));var fs=require('fs');var path=require(_0x548b('0x5'));var rimraf=require(_0x548b('0x6'));var config=require(_0x548b('0x7'));var attributes=require(_0x548b('0x8'));module[_0x548b('0x9')]=function(_0x135919,_0x548768){return _0x135919[_0x548b('0xa')](_0x548b('0xb'),attributes,{'tableName':'fax_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x548b('0xc'),'collate':_0x548b('0xd')});};
\ No newline at end of file
+var _0x6035=['define','fax_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./faxApplication.attributes','exports'];(function(_0x4b0416,_0x5076aa){var _0x2d3665=function(_0x1cfb1c){while(--_0x1cfb1c){_0x4b0416['push'](_0x4b0416['shift']());}};_0x2d3665(++_0x5076aa);}(_0x6035,0x154));var _0x5603=function(_0x1b0a18,_0x56afcd){_0x1b0a18=_0x1b0a18-0x0;var _0x25df46=_0x6035[_0x1b0a18];return _0x25df46;};'use strict';var _=require(_0x5603('0x0'));var util=require(_0x5603('0x1'));var logger=require(_0x5603('0x2'))(_0x5603('0x3'));var moment=require(_0x5603('0x4'));var BPromise=require(_0x5603('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5603('0x6'));var rimraf=require(_0x5603('0x7'));var config=require('../../config/environment');var attributes=require(_0x5603('0x8'));module[_0x5603('0x9')]=function(_0x2c51e4,_0x482b2e){return _0x2c51e4[_0x5603('0xa')]('FaxApplication',attributes,{'tableName':_0x5603('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x5603('0xc'),'collate':_0x5603('0xd')});};
\ No newline at end of file
index a9f0325..50c58a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dbb=['limit','UpdateFaxApplication','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','FaxApplication','body','options','raw'];(function(_0x60b9a1,_0x42ddb3){var _0x1de904=function(_0x41bf05){while(--_0x41bf05){_0x60b9a1['push'](_0x60b9a1['shift']());}};_0x1de904(++_0x42ddb3);}(_0x6dbb,0x1b5));var _0xb6db=function(_0x38f2bb,_0xbf67c8){_0x38f2bb=_0x38f2bb-0x0;var _0xa91d12=_0x6dbb[_0x38f2bb];return _0xa91d12;};'use strict';var _=require(_0xb6db('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb6db('0x1'));var fs=require('fs');var Redis=require(_0xb6db('0x2'));var db=require(_0xb6db('0x3'))['db'];var utils=require(_0xb6db('0x4'));var logger=require(_0xb6db('0x5'))(_0xb6db('0x6'));var config=require(_0xb6db('0x7'));var jayson=require(_0xb6db('0x8'));var client=jayson[_0xb6db('0x9')][_0xb6db('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x213839,_0x50058e,_0x49f2b6){return new BPromise(function(_0xfd7e03,_0x4b8d86){return client[_0xb6db('0xb')](_0x213839,_0x49f2b6)[_0xb6db('0xc')](function(_0xb164ec){logger[_0xb6db('0xd')](_0xb6db('0xe'),_0x50058e,_0xb6db('0xf'));logger[_0xb6db('0x10')](_0xb6db('0x11'),_0x50058e,'request\x20sent',JSON[_0xb6db('0x12')](_0xb164ec));if(_0xb164ec[_0xb6db('0x13')]){if(_0xb164ec[_0xb6db('0x13')]['code']===0x1f4){logger[_0xb6db('0x13')](_0xb6db('0xe'),_0x50058e,_0xb164ec[_0xb6db('0x13')][_0xb6db('0x14')]);return _0x4b8d86(_0xb164ec['error'][_0xb6db('0x14')]);}logger[_0xb6db('0x13')](_0xb6db('0xe'),_0x50058e,_0xb164ec['error']['message']);return _0xfd7e03(_0xb164ec[_0xb6db('0x13')][_0xb6db('0x14')]);}else{logger['info'](_0xb6db('0xe'),_0x50058e,_0xb6db('0xf'));_0xfd7e03(_0xb164ec[_0xb6db('0x15')]['message']);}})[_0xb6db('0x16')](function(_0x3b6014){logger[_0xb6db('0x13')]('FaxApplication,\x20%s,\x20%s',_0x50058e,_0x3b6014);_0x4b8d86(_0x3b6014);});});}exports['UpdateFaxApplication']=function(_0x2c094a){var _0x1aef9f=this;return new Promise(function(_0x59a632,_0x517dbf){return db[_0xb6db('0x17')]['update'](_0x2c094a[_0xb6db('0x18')],{'raw':_0x2c094a[_0xb6db('0x19')]?_0x2c094a[_0xb6db('0x19')][_0xb6db('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2c094a[_0xb6db('0x19')]?_0x2c094a[_0xb6db('0x19')]['where']||null:null,'attributes':_0x2c094a[_0xb6db('0x19')]?_0x2c094a[_0xb6db('0x19')]['attributes']||null:null,'limit':_0x2c094a[_0xb6db('0x19')]?_0x2c094a['options'][_0xb6db('0x1b')]||null:null})[_0xb6db('0xc')](function(_0x2b2d33){logger[_0xb6db('0xd')](_0xb6db('0x1c'),_0x2c094a);logger['debug'](_0xb6db('0x1c'),_0x2c094a,JSON['stringify'](_0x2b2d33));_0x59a632(_0x2b2d33);})[_0xb6db('0x16')](function(_0x505494){logger[_0xb6db('0x13')](_0xb6db('0x1c'),_0x505494[_0xb6db('0x14')],_0x2c094a);_0x517dbf(_0x1aef9f[_0xb6db('0x13')](0x1f4,_0x505494[_0xb6db('0x14')]));});});};
\ No newline at end of file
+var _0xbc44=['attributes','limit','then','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','info','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','UpdateFaxApplication','FaxApplication','body','options','where'];(function(_0x1c4d3c,_0x505e21){var _0x4aa45f=function(_0x3eec1a){while(--_0x3eec1a){_0x1c4d3c['push'](_0x1c4d3c['shift']());}};_0x4aa45f(++_0x505e21);}(_0xbc44,0xff));var _0x4bc4=function(_0x412f7e,_0x5a5fb7){_0x412f7e=_0x412f7e-0x0;var _0x92803e=_0xbc44[_0x412f7e];return _0x92803e;};'use strict';var _=require('lodash');var util=require(_0x4bc4('0x0'));var moment=require(_0x4bc4('0x1'));var BPromise=require('bluebird');var rs=require(_0x4bc4('0x2'));var fs=require('fs');var Redis=require(_0x4bc4('0x3'));var db=require(_0x4bc4('0x4'))['db'];var utils=require(_0x4bc4('0x5'));var logger=require(_0x4bc4('0x6'))(_0x4bc4('0x7'));var config=require(_0x4bc4('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x4bc4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4a5a04,_0x248416,_0x201adf){return new BPromise(function(_0x15b6fe,_0x4b4335){return client[_0x4bc4('0xa')](_0x4a5a04,_0x201adf)['then'](function(_0x4324d7){logger[_0x4bc4('0xb')](_0x4bc4('0xc'),_0x248416,_0x4bc4('0xd'));logger[_0x4bc4('0xe')]('FaxApplication,\x20%s,\x20%s,\x20%s',_0x248416,_0x4bc4('0xd'),JSON['stringify'](_0x4324d7));if(_0x4324d7[_0x4bc4('0xf')]){if(_0x4324d7[_0x4bc4('0xf')][_0x4bc4('0x10')]===0x1f4){logger[_0x4bc4('0xf')]('FaxApplication,\x20%s,\x20%s',_0x248416,_0x4324d7[_0x4bc4('0xf')][_0x4bc4('0x11')]);return _0x4b4335(_0x4324d7[_0x4bc4('0xf')][_0x4bc4('0x11')]);}logger['error'](_0x4bc4('0xc'),_0x248416,_0x4324d7[_0x4bc4('0xf')][_0x4bc4('0x11')]);return _0x15b6fe(_0x4324d7[_0x4bc4('0xf')][_0x4bc4('0x11')]);}else{logger['info']('FaxApplication,\x20%s,\x20%s',_0x248416,'request\x20sent');_0x15b6fe(_0x4324d7[_0x4bc4('0x12')][_0x4bc4('0x11')]);}})[_0x4bc4('0x13')](function(_0x8675f9){logger[_0x4bc4('0xf')](_0x4bc4('0xc'),_0x248416,_0x8675f9);_0x4b4335(_0x8675f9);});});}exports[_0x4bc4('0x14')]=function(_0x37d3ed){var _0x1033bf=this;return new Promise(function(_0xaa5d02,_0x1d2462){return db[_0x4bc4('0x15')]['update'](_0x37d3ed[_0x4bc4('0x16')],{'raw':_0x37d3ed['options']?_0x37d3ed['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x37d3ed[_0x4bc4('0x17')]?_0x37d3ed[_0x4bc4('0x17')][_0x4bc4('0x18')]||null:null,'attributes':_0x37d3ed[_0x4bc4('0x17')]?_0x37d3ed[_0x4bc4('0x17')][_0x4bc4('0x19')]||null:null,'limit':_0x37d3ed['options']?_0x37d3ed[_0x4bc4('0x17')][_0x4bc4('0x1a')]||null:null})[_0x4bc4('0x1b')](function(_0x7915e3){logger['info']('UpdateFaxApplication',_0x37d3ed);logger[_0x4bc4('0xe')](_0x4bc4('0x14'),_0x37d3ed,JSON['stringify'](_0x7915e3));_0xaa5d02(_0x7915e3);})[_0x4bc4('0x13')](function(_0x1e144f){logger[_0x4bc4('0xf')]('UpdateFaxApplication',_0x1e144f['message'],_0x37d3ed);_0x1d2462(_0x1033bf[_0x4bc4('0xf')](0x1f4,_0x1e144f['message']));});});};
\ No newline at end of file
index 8224767..f39b56c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7b4=['express','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxApplication.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','destroy','multer','connect-timeout'];(function(_0x4b5813,_0x5769de){var _0x423465=function(_0x18071f){while(--_0x18071f){_0x4b5813['push'](_0x4b5813['shift']());}};_0x423465(++_0x5769de);}(_0xf7b4,0x152));var _0x4f7b=function(_0x4c8abf,_0x4c8018){_0x4c8abf=_0x4c8abf-0x0;var _0x911676=_0xf7b4[_0x4c8abf];return _0x911676;};'use strict';var multer=require(_0x4f7b('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x4f7b('0x1'));var express=require(_0x4f7b('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x4f7b('0x3'));var interaction=require(_0x4f7b('0x4'));var config=require(_0x4f7b('0x5'));var controller=require(_0x4f7b('0x6'));router[_0x4f7b('0x7')]('/',auth[_0x4f7b('0x8')](),controller[_0x4f7b('0x9')]);router[_0x4f7b('0x7')](_0x4f7b('0xa'),auth[_0x4f7b('0x8')](),controller[_0x4f7b('0xb')]);router[_0x4f7b('0xc')]('/',auth[_0x4f7b('0x8')](),controller['create']);router[_0x4f7b('0xd')](_0x4f7b('0xa'),auth['isAuthenticated'](),controller[_0x4f7b('0xe')]);router[_0x4f7b('0xf')](_0x4f7b('0xa'),auth[_0x4f7b('0x8')](),controller[_0x4f7b('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x9c00=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxApplication.controller','get','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util'];(function(_0x23d802,_0x4280d9){var _0x52b891=function(_0x3f78fd){while(--_0x3f78fd){_0x23d802['push'](_0x23d802['shift']());}};_0x52b891(++_0x4280d9);}(_0x9c00,0x1a0));var _0x09c0=function(_0x52dd39,_0xdb90a5){_0x52dd39=_0x52dd39-0x0;var _0x1d4076=_0x9c00[_0x52dd39];return _0x1d4076;};'use strict';var multer=require(_0x09c0('0x0'));var util=require(_0x09c0('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x09c0('0x2'));var router=express[_0x09c0('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x09c0('0x4'));var interaction=require(_0x09c0('0x5'));var config=require(_0x09c0('0x6'));var controller=require(_0x09c0('0x7'));router[_0x09c0('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x09c0('0x8')](_0x09c0('0x9'),auth[_0x09c0('0xa')](),controller[_0x09c0('0xb')]);router[_0x09c0('0xc')]('/',auth['isAuthenticated'](),controller[_0x09c0('0xd')]);router[_0x09c0('0xe')](_0x09c0('0x9'),auth[_0x09c0('0xa')](),controller[_0x09c0('0xf')]);router[_0x09c0('0x10')](_0x09c0('0x9'),auth[_0x09c0('0xa')](),controller[_0x09c0('0x11')]);module[_0x09c0('0x12')]=router;
\ No newline at end of file
index f270e9e..2c61b64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90b9=['STRING','ENUM','out','sequelize','BOOLEAN','DATE'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x90b9,0xb1));var _0x990b=function(_0x31e7eb,_0x1aaa6e){_0x31e7eb=_0x31e7eb-0x0;var _0x44c452=_0x90b9[_0x31e7eb];return _0x44c452;};'use strict';var Sequelize=require(_0x990b('0x0'));module['exports']={'closed':{'type':Sequelize[_0x990b('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x990b('0x2')]},'disposition':{'type':Sequelize[_0x990b('0x3')]},'secondDisposition':{'type':Sequelize[_0x990b('0x3')]},'thirdDisposition':{'type':Sequelize[_0x990b('0x3')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x990b('0x2')]},'fax':{'type':Sequelize['STRING']},'firstMsgDirection':{'type':Sequelize[_0x990b('0x4')]('in',_0x990b('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x990b('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x990b('0x4')]('in','out'),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0xe191=['sequelize','exports','BOOLEAN','STRING','DATE','ENUM','out'];(function(_0x3517dd,_0x46f306){var _0x37fa0a=function(_0xd2d064){while(--_0xd2d064){_0x3517dd['push'](_0x3517dd['shift']());}};_0x37fa0a(++_0x46f306);}(_0xe191,0x1f1));var _0x1e19=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe191[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x1e19('0x0'));module[_0x1e19('0x1')]={'closed':{'type':Sequelize[_0x1e19('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x1e19('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x1e19('0x3')]},'note':{'type':Sequelize[_0x1e19('0x3')]},'read1stAt':{'type':Sequelize[_0x1e19('0x4')]},'fax':{'type':Sequelize['STRING']},'firstMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x1e19('0x4')]},'lastMsgDirection':{'type':Sequelize[_0x1e19('0x5')]('in',_0x1e19('0x6')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index 5539f71..a7b7c43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0aba=['localhost','redis','./faxInteraction.socket','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','reject','update','then','error','stack','name','send','Users','map','TagIds','Tags','split','forEach','push','catch','index','fieldName','type','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','where','pick','select','field','color','from','tools_tags','u.id','ui.FaxInteractionId','user_has_fax_interactions','left_join','users','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_interaction_has_tags','t.id\x20=\x20it.TagId','parseSearch','search','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','start','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','some','isEmpty','FaxAccountId','i.FaxAccountId\x20IN\x20?','concat','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','`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?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','Sequelize','QueryTypes','SELECT','clone','i.id','contactName','t.id\x20IN\x20?','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','agent','user','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','role','sequelize','toString','FaxInteraction','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','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.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.FaxInteractionId\x20IN\x20?','groupBy','FaxInteractionId','all','show','params','rawAttributes','fields','includeAll','include','merge','options','create','body','describe','addMessage','FaxMessage','ids','omit','findOne','sort','$gte','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','addTags','spread','Tag','emit','faxInteractionTags:save','removeTags','join','root','server','tmp','files','attachments','Attachment','Messages','get','basename','createWriteStream','download','log','err','unlinkSync','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','defaults'];(function(_0x175085,_0x1aeda6){var _0x217a50=function(_0x5afd1a){while(--_0x5afd1a){_0x175085['push'](_0x175085['shift']());}};_0x217a50(++_0x1aeda6);}(_0x0aba,0xb9));var _0xa0ab=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x0aba[_0x618414];return _0x21c19a;};'use strict';var emlformat=require(_0xa0ab('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xa0ab('0x1'));var rp=require(_0xa0ab('0x2'));var moment=require(_0xa0ab('0x3'));var BPromise=require(_0xa0ab('0x4'));var Mustache=require(_0xa0ab('0x5'));var util=require(_0xa0ab('0x6'));var path=require('path');var sox=require(_0xa0ab('0x7'));var csv=require(_0xa0ab('0x8'));var ejs=require(_0xa0ab('0x9'));var fs=require('fs');var fs_extra=require(_0xa0ab('0xa'));var _=require(_0xa0ab('0xb'));var squel=require(_0xa0ab('0xc'));var crypto=require(_0xa0ab('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xa0ab('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xa0ab('0xf'));var authService=require(_0xa0ab('0x10'));var qs=require(_0xa0ab('0x11'));var as=require(_0xa0ab('0x12'));var hardwareService=require(_0xa0ab('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xa0ab('0x14'));var db=require(_0xa0ab('0x15'))['db'];config['redis']=_[_0xa0ab('0x16')](config['redis'],{'host':_0xa0ab('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa0ab('0x18')]));require(_0xa0ab('0x19'))['register'](socket);function respondWithStatusCode(_0x1aae59,_0xe51f00){_0xe51f00=_0xe51f00||0xcc;return function(_0x2b5e30){if(_0x2b5e30){return _0x1aae59[_0xa0ab('0x1a')](_0xe51f00);}return _0x1aae59[_0xa0ab('0x1b')](_0xe51f00)[_0xa0ab('0x1c')]();};}function respondWithResult(_0x5a985e,_0x183f05){_0x183f05=_0x183f05||0xc8;return function(_0x18ea56){if(_0x18ea56){return _0x5a985e[_0xa0ab('0x1b')](_0x183f05)[_0xa0ab('0x1d')](_0x18ea56);}};}function respondWithFilteredResult(_0x18d3f5,_0x534005){return function(_0x120ec9){if(_0x120ec9){var _0x7cd369=typeof _0x534005['offset']===_0xa0ab('0x1e')&&typeof _0x534005[_0xa0ab('0x1f')]==='undefined';var _0x50b5f9=_0x120ec9[_0xa0ab('0x20')];var _0x22d291=_0x7cd369?0x0:_0x534005[_0xa0ab('0x21')];var _0xdaaf4e=_0x7cd369?_0x120ec9['count']:_0x534005[_0xa0ab('0x21')]+_0x534005['limit'];var _0x1e913e;if(_0xdaaf4e>=_0x50b5f9){_0xdaaf4e=_0x50b5f9;_0x1e913e=0xc8;}else{_0x1e913e=0xce;}_0x18d3f5[_0xa0ab('0x1b')](_0x1e913e);return _0x18d3f5[_0xa0ab('0x22')]('Content-Range',_0x22d291+'-'+_0xdaaf4e+'/'+_0x50b5f9)[_0xa0ab('0x1d')](_0x120ec9);}return null;};}function patchUpdates(_0x5e6a5a){return function(_0x185586){try{jsonpatch[_0xa0ab('0x23')](_0x185586,_0x5e6a5a,!![]);}catch(_0x5d8fc5){return BPromise[_0xa0ab('0x24')](_0x5d8fc5);}return _0x185586['save']();};}function saveUpdates(_0xcf3e03,_0xcb27e8){return function(_0x3195c6){if(_0x3195c6){return _0x3195c6[_0xa0ab('0x25')](_0xcf3e03)[_0xa0ab('0x26')](function(_0x707999){return _0x707999;});}return null;};}function removeEntity(_0x94294b,_0x5eea29){return function(_0x37a7de){if(_0x37a7de){return _0x37a7de['destroy']()[_0xa0ab('0x26')](function(){_0x94294b[_0xa0ab('0x1b')](0xcc)[_0xa0ab('0x1c')]();});}};}function handleEntityNotFound(_0x10a6d7,_0x2539e0){return function(_0x2fd321){if(!_0x2fd321){_0x10a6d7['sendStatus'](0x194);}return _0x2fd321;};}function handleError(_0x1b9e49,_0x2fd11f){_0x2fd11f=_0x2fd11f||0x1f4;return function(_0x41a079){logger[_0xa0ab('0x27')](_0x41a079[_0xa0ab('0x28')]);if(_0x41a079[_0xa0ab('0x29')]){delete _0x41a079[_0xa0ab('0x29')];}_0x1b9e49[_0xa0ab('0x1b')](_0x2fd11f)[_0xa0ab('0x2a')](_0x41a079);};}function getInteractionUsers(_0x3336c5,_0x2d21bb){return new BPromise(function(_0x690dea,_0xdb1fee){try{if(_0x2d21bb[_0x3336c5['id']]){_0x3336c5[_0xa0ab('0x2b')]=_[_0xa0ab('0x2c')](_0x2d21bb[_0x3336c5['id']],function(_0x343798){return{'id':_0x343798['id'],'fullname':_0x343798['fullname']};});}}catch(_0x1a010c){_0xdb1fee(_0x1a010c);}_0x690dea(_0x3336c5);});}function getInteractionTags(_0x5f2139,_0x5ca4c){return new BPromise(function(_0x584bea,_0x11a7ae){try{if(_0x5f2139[_0xa0ab('0x2d')]){_0x5f2139[_0xa0ab('0x2e')]=[];_0x5f2139['TagIds'][_0xa0ab('0x2f')](',')[_0xa0ab('0x30')](function(_0x4e23d5){_0x5f2139[_0xa0ab('0x2e')][_0xa0ab('0x31')](_0x5ca4c[_0x4e23d5]);});}delete _0x5f2139[_0xa0ab('0x2d')];}catch(_0x32f3d7){_0x11a7ae(_0x32f3d7);}_0x584bea(_0x5f2139);});}function updateFaxInteraction(_0x10c45d,_0x596099,_0x31a845){return new BPromise(function(_0x247b36,_0x5a1084){return getInteractionUsers(_0x10c45d,_0x31a845)['then'](function(_0x1ee47e){return getInteractionTags(_0x1ee47e,_0x596099);})[_0xa0ab('0x26')](function(_0x269379){_0x247b36(_0x269379);})[_0xa0ab('0x32')](function(_0xc36392){_0x5a1084(_0xc36392);});});}exports[_0xa0ab('0x33')]=function(_0x24d127,_0x5d368c){var _0xc55604={},_0x2ddf07={},_0x5f4d49={'count':0x0,'rows':[]};var _0x137c22=_[_0xa0ab('0x2c')](db['FaxInteraction']['rawAttributes'],function(_0x45d319){return{'name':_0x45d319[_0xa0ab('0x34')],'type':_0x45d319[_0xa0ab('0x35')]['key']};});_0x2ddf07[_0xa0ab('0x36')]=_[_0xa0ab('0x2c')](_0x137c22,_0xa0ab('0x29'));_0x2ddf07[_0xa0ab('0x37')]=_[_0xa0ab('0x38')](_0x24d127[_0xa0ab('0x37')]);_0x2ddf07[_0xa0ab('0x39')]=_[_0xa0ab('0x3a')](_0x2ddf07[_0xa0ab('0x36')],_0x2ddf07[_0xa0ab('0x37')]);_0xc55604['attributes']=_[_0xa0ab('0x3a')](_0x2ddf07['model'],qs['fields'](_0x24d127[_0xa0ab('0x37')]['fields']));_0xc55604[_0xa0ab('0x3b')]=_0xc55604[_0xa0ab('0x3b')][_0xa0ab('0x3c')]?_0xc55604[_0xa0ab('0x3b')]:_0x2ddf07[_0xa0ab('0x36')];if(!_0x24d127[_0xa0ab('0x37')][_0xa0ab('0x3d')](_0xa0ab('0x3e'))){_0xc55604['limit']=qs[_0xa0ab('0x1f')](_0x24d127[_0xa0ab('0x37')]['limit']);_0xc55604[_0xa0ab('0x21')]=qs[_0xa0ab('0x21')](_0x24d127[_0xa0ab('0x37')][_0xa0ab('0x21')]);}_0xc55604[_0xa0ab('0x3f')]=qs['sort'](_0x24d127[_0xa0ab('0x37')]['sort']);_0xc55604[_0xa0ab('0x40')]=qs[_0xa0ab('0x39')](_[_0xa0ab('0x41')](_0x24d127[_0xa0ab('0x37')],_0x2ddf07[_0xa0ab('0x39')]),_0x137c22);var _0x17db73=[];var _0x41d799=squel[_0xa0ab('0x42')]()[_0xa0ab('0x43')]('id')[_0xa0ab('0x43')](_0xa0ab('0x29'))[_0xa0ab('0x43')](_0xa0ab('0x44'))[_0xa0ab('0x45')](_0xa0ab('0x46'));var _0x490d3e=squel[_0xa0ab('0x42')]()[_0xa0ab('0x43')](_0xa0ab('0x47'))['field']('u.fullname')[_0xa0ab('0x43')](_0xa0ab('0x48'))[_0xa0ab('0x45')](_0xa0ab('0x49'),'ui')[_0xa0ab('0x4a')](_0xa0ab('0x4b'),'u','u.id\x20=\x20ui.UserId');var _0x8e4663=squel[_0xa0ab('0x42')]()[_0xa0ab('0x45')](_0xa0ab('0x4c'),'i')[_0xa0ab('0x4a')](_0xa0ab('0x4d'),'c',_0xa0ab('0x4e'))['left_join'](_0xa0ab('0x4b'),'o',_0xa0ab('0x4f'))[_0xa0ab('0x4a')](_0xa0ab('0x50'),'a',_0xa0ab('0x51'))['left_join']('fax_messages','me','me.FaxInteractionId\x20=\x20i.id')[_0xa0ab('0x4a')](_0xa0ab('0x52'),'it','it.FaxInteractionId\x20=\x20i.id')['left_join'](_0xa0ab('0x46'),'t',_0xa0ab('0x53'));var _0x28d328=squel['expr']();var _0x24aada=[];var _0x4052b5=squel['expr']();var _0x285da4;if(_0x24d127[_0xa0ab('0x37')]['search']){_0x285da4=as[_0xa0ab('0x54')](_0x24d127['query'][_0xa0ab('0x55')]);var _0x121875=_0x285da4[_0xa0ab('0x56')];for(var _0x1c0215=0x0;_0x1c0215<_0x285da4[_0xa0ab('0x57')][_0xa0ab('0x3c')];_0x1c0215++){var _0x42713c=_0x285da4[_0xa0ab('0x57')][_0x1c0215];var _0x267560='i';var _0x27156b=_[_0xa0ab('0x58')](_0x137c22,[_0xa0ab('0x29'),_0x42713c['field']]);if(!_0x27156b){switch(_0x42713c[_0xa0ab('0x43')]){case _0xa0ab('0x59'):if(_0x42713c[_0xa0ab('0x5a')]==0x1){_0x8e4663[_0xa0ab('0x5b')]('`'+_0x42713c[_0xa0ab('0x43')]+_0xa0ab('0x5c'));}else{_0x8e4663[_0xa0ab('0x5b')]('`'+_0x42713c['field']+_0xa0ab('0x5d'));}break;case _0xa0ab('0x5e'):if(_0x42713c[_0xa0ab('0x5f')]===_0xa0ab('0x60')){if(_0x42713c[_0xa0ab('0x5a')][_0xa0ab('0x2f')]('\x20')[_0xa0ab('0x3c')]>0x1){_0x28d328[_0x121875]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x42713c['value']),null);}else{var _0x1e5dd1='%'+_0x42713c[_0xa0ab('0x5a')]+'%';_0x28d328[_0x121875](_0xa0ab('0x61'),_0x1e5dd1,_0x1e5dd1,_0x1e5dd1);}}else{_0x27156b=_[_0xa0ab('0x58')](_0x137c22,[_0xa0ab('0x29'),_0xa0ab('0x62')]);_0x42713c[_0xa0ab('0x43')]=_0xa0ab('0x62');_0x5cb04f=as[_0xa0ab('0x63')](_0x267560,_0x27156b[_0xa0ab('0x35')],_0x42713c);_0x28d328[_0x121875](_0x5cb04f['text'],_0x5cb04f['value'][_0xa0ab('0x64')],_0x5cb04f[_0xa0ab('0x5a')][_0xa0ab('0x1c')]);}break;case'Tag':var _0x42e61b=_0x42713c[_0xa0ab('0x5a')][_0xa0ab('0x2f')](',')[_0xa0ab('0x2c')](function(_0x5b593e){return Number(_0x5b593e);});_0x42e61b[_0xa0ab('0x30')](function(_0x57f71c){_0x4052b5['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x57f71c+',%');});_0x24aada=_[_0xa0ab('0x65')](_0x24aada,_0x42e61b);break;case _0xa0ab('0x66'):if(_0x42713c['operator']==='$substring'){_0x28d328[_0x121875](_0xa0ab('0x67'),'%'+_0x42713c[_0xa0ab('0x5a')]+'%',null);}else{_0x27156b=_[_0xa0ab('0x58')](_0x137c22,['name',_0xa0ab('0x68')]);_0x42713c[_0xa0ab('0x43')]=_0xa0ab('0x68');_0x5cb04f=as[_0xa0ab('0x63')](_0x267560,_0x27156b[_0xa0ab('0x35')],_0x42713c);_0x28d328[_0x121875](_0x5cb04f[_0xa0ab('0x69')],_0x5cb04f[_0xa0ab('0x5a')][_0xa0ab('0x64')],_0x5cb04f[_0xa0ab('0x5a')][_0xa0ab('0x1c')]);}break;case'body':_0x5cb04f=as[_0xa0ab('0x63')]('me',null,_0x42713c);_0x28d328[_0x121875](_0x5cb04f[_0xa0ab('0x69')],_0x5cb04f[_0xa0ab('0x5a')][_0xa0ab('0x64')],_0x5cb04f[_0xa0ab('0x5a')][_0xa0ab('0x1c')]);break;}}else{var _0x5cb04f=as[_0xa0ab('0x63')](_0x267560,_0x27156b[_0xa0ab('0x35')],_0x42713c);_0x28d328[_0x121875](_0x5cb04f[_0xa0ab('0x69')],_0x5cb04f['value']['start'],_0x5cb04f[_0xa0ab('0x5a')][_0xa0ab('0x1c')]);}}}else{var _0x429fa1=_(_0x24d127[_0xa0ab('0x37')])[_0xa0ab('0x38')]()['map'](function(_0x415662){return _[_0xa0ab('0x6a')](_0x137c22,[_0xa0ab('0x29'),_0x415662])?_0x415662:undefined;})['compact']()[_0xa0ab('0x5a')]();if(!_[_0xa0ab('0x6b')](_0x429fa1)){_0x429fa1[_0xa0ab('0x30')](function(_0x3e63f4){if(_0x3e63f4===_0xa0ab('0x6c')){_0x8e4663['where'](_0xa0ab('0x6d'),[][_0xa0ab('0x6e')](_0x24d127[_0xa0ab('0x37')][_0x3e63f4]));}else if(_0x3e63f4==='createdAt'){var _0x428b1c=JSON[_0xa0ab('0x6f')](_0x24d127[_0xa0ab('0x37')][_0x3e63f4])['$gte'];var _0x481291=JSON['parse'](_0x24d127[_0xa0ab('0x37')][_0x3e63f4])[_0xa0ab('0x70')];_0x8e4663['where'](_0xa0ab('0x71'),_0x428b1c,_0x481291);}else{if(_0x24d127[_0xa0ab('0x37')][_0x3e63f4]==='null'){_0x8e4663[_0xa0ab('0x40')]('i.'+_0x3e63f4+_0xa0ab('0x72'));}else{_0x8e4663[_0xa0ab('0x40')]('i.'+_0x3e63f4+'\x20=\x20?',_0x24d127[_0xa0ab('0x37')][_0x3e63f4]);}}});}if(_0x24d127['query'][_0xa0ab('0x73')]){if(_0x24d127[_0xa0ab('0x37')][_0xa0ab('0x73')]==0x1){_0x8e4663['having'](_0xa0ab('0x74'));}else{_0x8e4663[_0xa0ab('0x5b')](_0xa0ab('0x75'));}}if(_0x24d127[_0xa0ab('0x37')][_0xa0ab('0x76')]){_0x24aada=_['isArray'](_0x24d127[_0xa0ab('0x37')]['tag'])?_0x24d127['query'][_0xa0ab('0x76')]:new Array(_0x24d127[_0xa0ab('0x37')][_0xa0ab('0x76')]);_0x24aada['forEach'](function(_0x2e3672){_0x4052b5['or'](_0xa0ab('0x77'),'%,'+_0x2e3672+',%');});}if(_0x24d127[_0xa0ab('0x37')][_0xa0ab('0x78')]){var _0x23ddf5=_0x24d127[_0xa0ab('0x37')][_0xa0ab('0x78')][_0xa0ab('0x79')]('\x5c','\x5c\x5c')[_0xa0ab('0x79')](/'/g,'\x27\x27');if(qs[_0xa0ab('0x7a')](_0x23ddf5)){_0x28d328['or'](_0xa0ab('0x7b'),_0x23ddf5+'%')['or'](_0xa0ab('0x7c'),_0x23ddf5+'%');}_0x28d328['or'](_0xa0ab('0x7d'),_0x23ddf5+'%');}}_0x8e4663[_0xa0ab('0x40')](_0x28d328);_0x8e4663['group']('i.id');var _0x23e3c4={'type':db[_0xa0ab('0x7e')][_0xa0ab('0x7f')][_0xa0ab('0x80')],'raw':!![]};var _0xb34286=_0x8e4663[_0xa0ab('0x81')]();_0xb34286['field'](_0xa0ab('0x82'));_0xb34286[_0xa0ab('0x43')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');if(_0xc55604[_0xa0ab('0x3f')]){_0xc55604[_0xa0ab('0x3f')]['forEach'](function(_0x2c344a){var _0x37e124=_0x2c344a[0x0]===_0xa0ab('0x83')?_0x2c344a[0x0]:'i.'+_0x2c344a[0x0];_0x8e4663[_0xa0ab('0x3f')](_0x37e124,_0x2c344a[0x1]==='DESC'?![]:!![]);});}if(!_[_0xa0ab('0x6b')](_0x24aada)){_0x8e4663[_0xa0ab('0x5b')](_0x4052b5);_0xb34286[_0xa0ab('0x40')](_0xa0ab('0x84'),_0x24aada);}BPromise[_0xa0ab('0x85')]()[_0xa0ab('0x26')](function(){if(!_0x285da4){if(_0x24d127[_0xa0ab('0x37')][_0xa0ab('0x6c')])return;_0xb34286[_0xa0ab('0x40')](_0xa0ab('0x86'));_0x8e4663[_0xa0ab('0x40')](_0xa0ab('0x86'));return;}if(_0x24d127['user']['role']!==_0xa0ab('0x87'))return;return _0x24d127[_0xa0ab('0x88')][_0xa0ab('0x89')]({'attributes':['id'],'raw':!![]})[_0xa0ab('0x26')](function(_0x19c0b8){if(_['isEmpty'](_0x19c0b8)){_0xb34286[_0xa0ab('0x40')](_0xa0ab('0x8a'));_0x8e4663[_0xa0ab('0x40')]('i.FaxAccountId\x20IS\x20NULL');}else{_0xb34286[_0xa0ab('0x40')](_0xa0ab('0x6d'),_[_0xa0ab('0x2c')](_0x19c0b8,'id'));_0x8e4663['where'](_0xa0ab('0x6d'),_['map'](_0x19c0b8,'id'));}});})[_0xa0ab('0x26')](function(){if(_0x24d127[_0xa0ab('0x88')][_0xa0ab('0x8b')]===_0xa0ab('0x87')&&!_0x285da4&&!_0x24d127[_0xa0ab('0x37')][_0xa0ab('0x6c')])return[];return db[_0xa0ab('0x8c')]['query'](_0xb34286[_0xa0ab('0x8d')](),_0x23e3c4);})[_0xa0ab('0x26')](function(_0x35ce4b){_0x5f4d49[_0xa0ab('0x20')]=_0x35ce4b['length'];if(_0x5f4d49[_0xa0ab('0x20')]===0x0)return[];return db[_0xa0ab('0x8c')][_0xa0ab('0x37')](_0x41d799[_0xa0ab('0x8d')](),_0x23e3c4)[_0xa0ab('0x26')](function(_0x326b22){_0x17db73=_['keyBy'](_0x326b22,'id');_0x23e3c4=_['merge'](_0x23e3c4,{'model':db[_0xa0ab('0x8e')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x24d127['query']['fields']){_0xc55604[_0xa0ab('0x3b')][_0xa0ab('0x30')](function(_0xef60ca){_0x8e4663[_0xa0ab('0x43')]('i.'+_0xef60ca);});}else{_0x8e4663['field'](_0xa0ab('0x8f'),_0xa0ab('0x59'));_0x8e4663[_0xa0ab('0x43')](_0xa0ab('0x90'),_0xa0ab('0x91'));_0x8e4663['field'](_0xa0ab('0x92'),_0xa0ab('0x93'));_0x8e4663[_0xa0ab('0x43')](_0xa0ab('0x94'),_0xa0ab('0x83'));_0x8e4663[_0xa0ab('0x43')](_0xa0ab('0x95'));_0x8e4663[_0xa0ab('0x43')](_0xa0ab('0x96'),'Contact.firstName');_0x8e4663[_0xa0ab('0x43')]('c.lastName','Contact.lastName');_0x8e4663[_0xa0ab('0x43')]('c.email',_0xa0ab('0x97'));_0x8e4663[_0xa0ab('0x43')](_0xa0ab('0x98'),_0xa0ab('0x99'));_0x8e4663[_0xa0ab('0x43')](_0xa0ab('0x9a'),_0xa0ab('0x9b'));_0x8e4663[_0xa0ab('0x43')](_0xa0ab('0x9c'),_0xa0ab('0x9d'));_0x8e4663['field'](_0xa0ab('0x9e'),'Owner.fullname');_0x8e4663[_0xa0ab('0x43')](_0xa0ab('0x9f'),_0xa0ab('0xa0'));_0x8e4663[_0xa0ab('0x43')](_0xa0ab('0xa1'),_0xa0ab('0x2d'));}if(_0xc55604[_0xa0ab('0x1f')])_0x8e4663[_0xa0ab('0x1f')](_0xc55604['limit']);if(_0xc55604[_0xa0ab('0x21')])_0x8e4663[_0xa0ab('0x21')](_0xc55604['offset']);return db['sequelize']['query'](_0x8e4663[_0xa0ab('0x8d')](),_0x23e3c4);})[_0xa0ab('0x26')](function(_0x55b3e1){if(_0x55b3e1[_0xa0ab('0x3c')]>0x0)_0x490d3e['where'](_0xa0ab('0xa2'),_['map'](_0x55b3e1,'id'));return db['sequelize'][_0xa0ab('0x37')](_0x490d3e[_0xa0ab('0x8d')](),_0x23e3c4)['then'](function(_0xe1b3e4){var _0x40129e=_[_0xa0ab('0xa3')](_0xe1b3e4,_0xa0ab('0xa4'));var _0x4f4480=[];_0x55b3e1[_0xa0ab('0x30')](function(_0x1ccc4b){_0x4f4480[_0xa0ab('0x31')](updateFaxInteraction(_0x1ccc4b,_0x17db73,_0x40129e));});return BPromise[_0xa0ab('0xa5')](_0x4f4480);});});})[_0xa0ab('0x26')](function(_0x3ac719){_0x5f4d49['rows']=_0x3ac719;return _0x5f4d49;})[_0xa0ab('0x26')](respondWithFilteredResult(_0x5d368c,_0xc55604))[_0xa0ab('0x32')](handleError(_0x5d368c,null));};exports[_0xa0ab('0xa6')]=function(_0x1c0d84,_0x592253){var _0x413a36={'raw':![],'where':{'id':_0x1c0d84[_0xa0ab('0xa7')]['id']}},_0x2e2c5a={};_0x2e2c5a[_0xa0ab('0x36')]=_[_0xa0ab('0x38')](db[_0xa0ab('0x8e')][_0xa0ab('0xa8')]);_0x2e2c5a[_0xa0ab('0x37')]=_[_0xa0ab('0x38')](_0x1c0d84[_0xa0ab('0x37')]);_0x2e2c5a[_0xa0ab('0x39')]=_[_0xa0ab('0x3a')](_0x2e2c5a[_0xa0ab('0x36')],_0x2e2c5a[_0xa0ab('0x37')]);_0x413a36[_0xa0ab('0x3b')]=_['intersection'](_0x2e2c5a[_0xa0ab('0x36')],qs[_0xa0ab('0xa9')](_0x1c0d84[_0xa0ab('0x37')][_0xa0ab('0xa9')]));_0x413a36[_0xa0ab('0x3b')]=_0x413a36[_0xa0ab('0x3b')][_0xa0ab('0x3c')]?_0x413a36[_0xa0ab('0x3b')]:_0x2e2c5a['model'];if(_0x1c0d84[_0xa0ab('0x37')][_0xa0ab('0xaa')]){_0x413a36[_0xa0ab('0xab')]=[{'all':!![]}];}_0x413a36=_[_0xa0ab('0xac')]({},_0x413a36,_0x1c0d84[_0xa0ab('0xad')]);return db['FaxInteraction'][_0xa0ab('0x58')](_0x413a36)['then'](handleEntityNotFound(_0x592253,null))[_0xa0ab('0x26')](respondWithResult(_0x592253,null))[_0xa0ab('0x32')](handleError(_0x592253,null));};exports[_0xa0ab('0xae')]=function(_0x385d79,_0x1fa5a9){return db[_0xa0ab('0x8e')][_0xa0ab('0xae')](_0x385d79[_0xa0ab('0xaf')],{})['then'](respondWithResult(_0x1fa5a9,0xc9))[_0xa0ab('0x32')](handleError(_0x1fa5a9,null));};exports[_0xa0ab('0x25')]=function(_0x464619,_0x4cd1f3){if(_0x464619[_0xa0ab('0xaf')]['id']){delete _0x464619[_0xa0ab('0xaf')]['id'];}return db[_0xa0ab('0x8e')][_0xa0ab('0x58')]({'where':{'id':_0x464619[_0xa0ab('0xa7')]['id']}})[_0xa0ab('0x26')](handleEntityNotFound(_0x4cd1f3,null))['then'](saveUpdates(_0x464619[_0xa0ab('0xaf')],null))['then'](respondWithResult(_0x4cd1f3,null))[_0xa0ab('0x32')](handleError(_0x4cd1f3,null));};exports['destroy']=function(_0x1e7ae2,_0x1663d2){return db['FaxInteraction'][_0xa0ab('0x58')]({'where':{'id':_0x1e7ae2[_0xa0ab('0xa7')]['id']}})['then'](handleEntityNotFound(_0x1663d2,null))[_0xa0ab('0x26')](removeEntity(_0x1663d2,null))[_0xa0ab('0x32')](handleError(_0x1663d2,null));};exports[_0xa0ab('0xb0')]=function(_0x54eb34,_0x3cca49){return db[_0xa0ab('0x8e')][_0xa0ab('0xb0')]()[_0xa0ab('0x26')](respondWithResult(_0x3cca49,null))[_0xa0ab('0x32')](handleError(_0x3cca49,null));};exports[_0xa0ab('0xb1')]=function(_0x101f47,_0x466b31,_0xe90093){return db[_0xa0ab('0xb2')]['find']({'where':{'id':_0x101f47[_0xa0ab('0xa7')]['id']}})[_0xa0ab('0x26')](handleEntityNotFound(_0x466b31,null))[_0xa0ab('0x26')](function(_0x50e26b){if(_0x50e26b){return _0x50e26b[_0xa0ab('0xb1')](_0x101f47[_0xa0ab('0xaf')][_0xa0ab('0xb3')],_[_0xa0ab('0xb4')](_0x101f47[_0xa0ab('0xaf')],[_0xa0ab('0xb3'),'id'])||{});}})[_0xa0ab('0x26')](respondWithResult(_0x466b31,null))[_0xa0ab('0x32')](handleError(_0x466b31,null));};exports['getMessages']=function(_0x37507e,_0x12acd9,_0xe9915b){var _0xbf8da0={'raw':![],'where':{}};var _0x4b9ddb={};var _0xe64578={'count':0x0,'rows':[]};return db[_0xa0ab('0x8e')][_0xa0ab('0xb5')]({'where':{'id':_0x37507e[_0xa0ab('0xa7')]['id']}})[_0xa0ab('0x26')](handleEntityNotFound(_0x12acd9,null))[_0xa0ab('0x26')](function(_0x28300d){if(_0x28300d){_0x4b9ddb[_0xa0ab('0x36')]=_[_0xa0ab('0x38')](db[_0xa0ab('0xb2')][_0xa0ab('0xa8')]);_0x4b9ddb[_0xa0ab('0x37')]=_['keys'](_0x37507e['query']);_0x4b9ddb[_0xa0ab('0x39')]=_['intersection'](_0x4b9ddb[_0xa0ab('0x36')],_0x4b9ddb['query']);_0xbf8da0['attributes']=_['intersection'](_0x4b9ddb[_0xa0ab('0x36')],qs['fields'](_0x37507e['query']['fields']));_0xbf8da0['attributes']=_0xbf8da0[_0xa0ab('0x3b')][_0xa0ab('0x3c')]?_0xbf8da0[_0xa0ab('0x3b')]:_0x4b9ddb['model'];if(!_0x37507e['query']['hasOwnProperty']('nolimit')){_0xbf8da0[_0xa0ab('0x1f')]=qs[_0xa0ab('0x1f')](_0x37507e[_0xa0ab('0x37')][_0xa0ab('0x1f')]);_0xbf8da0[_0xa0ab('0x21')]=qs['offset'](_0x37507e['query']['offset']);}_0xbf8da0[_0xa0ab('0x3f')]=qs[_0xa0ab('0xb6')](_0x37507e['query'][_0xa0ab('0xb6')]);_0xbf8da0[_0xa0ab('0x40')]=qs[_0xa0ab('0x39')](_['pick'](_0x37507e[_0xa0ab('0x37')],_0x4b9ddb[_0xa0ab('0x39')]));_0xbf8da0[_0xa0ab('0x40')]['FaxInteractionId']=_0x28300d['id'];if(_0x37507e[_0xa0ab('0x37')][_0xa0ab('0x78')]){_0xbf8da0[_0xa0ab('0x40')]=_[_0xa0ab('0xac')](_0xbf8da0[_0xa0ab('0x40')],{'$or':_['map'](_0xbf8da0[_0xa0ab('0x3b')],function(_0x699c26){var _0x1e0410={};_0x1e0410[_0x699c26]={'$like':'%'+_0x37507e[_0xa0ab('0x37')][_0xa0ab('0x78')]+'%'};return _0x1e0410;})});}if(_0x37507e[_0xa0ab('0x37')][_0xa0ab('0xb7')]){var _0x2bee2b=_0x37507e[_0xa0ab('0x37')][_0xa0ab('0xb7')][_0xa0ab('0x2f')](',');var _0x2da4de={};_0x2da4de[_0x2bee2b[0x0]]={'$gte':moment(_0x2bee2b[0x1])['format'](_0xa0ab('0xb8'))};_0xbf8da0['where']=_[_0xa0ab('0xac')](_0xbf8da0[_0xa0ab('0x40')],_0x2da4de);}_0xbf8da0=_[_0xa0ab('0xac')]({},_0xbf8da0,_0x37507e[_0xa0ab('0xad')]);return db[_0xa0ab('0xb2')][_0xa0ab('0x20')]({'where':_0xbf8da0['where']})[_0xa0ab('0x26')](function(_0x3593d7){_0xe64578['count']=_0x3593d7;if(_0x37507e[_0xa0ab('0x37')][_0xa0ab('0xaa')]){_0xbf8da0[_0xa0ab('0xab')]=[{'all':!![]}];}return db[_0xa0ab('0xb2')][_0xa0ab('0xb9')](_0xbf8da0);})['then'](function(_0x19637c){_0xe64578[_0xa0ab('0xba')]=_0x19637c;return _0xe64578;});}})[_0xa0ab('0x26')](respondWithFilteredResult(_0x12acd9,_0xbf8da0))[_0xa0ab('0x32')](handleError(_0x12acd9,null));};exports[_0xa0ab('0xbb')]=function(_0x295378,_0x5d7b6e,_0x10e7df){return db[_0xa0ab('0x8e')][_0xa0ab('0x58')]({'where':{'id':_0x295378[_0xa0ab('0xa7')]['id']}})[_0xa0ab('0x26')](handleEntityNotFound(_0x5d7b6e,null))[_0xa0ab('0x26')](function(_0x5091a8){if(_0x5091a8){return _0x5091a8['setTags'](_0x295378[_0xa0ab('0xaf')][_0xa0ab('0xb3')],_[_0xa0ab('0xb4')](_0x295378[_0xa0ab('0xaf')],[_0xa0ab('0xb3'),'id'])||{})[_0xa0ab('0xbc')](function(){return db[_0xa0ab('0xbd')]['findAll']({'attributes':['id',_0xa0ab('0x29'),'color'],'where':{'id':_0x295378[_0xa0ab('0xaf')][_0xa0ab('0xb3')]}});})[_0xa0ab('0x26')](function(_0x3080ff){socket[_0xa0ab('0xbe')](_0xa0ab('0xbf'),{'id':Number(_0x295378[_0xa0ab('0xa7')]['id']),'tags':_0x3080ff||[]});return{'id':Number(_0x295378[_0xa0ab('0xa7')]['id']),'tags':_0x3080ff||[]};});}})['then'](respondWithResult(_0x5d7b6e,null))['catch'](handleError(_0x5d7b6e,null));};exports[_0xa0ab('0xc0')]=function(_0x1c2999,_0x326031,_0x3f6671){return db[_0xa0ab('0x8e')][_0xa0ab('0x58')]({'where':{'id':_0x1c2999[_0xa0ab('0xa7')]['id']}})[_0xa0ab('0x26')](handleEntityNotFound(_0x326031,null))[_0xa0ab('0x26')](function(_0x247137){if(_0x247137){return _0x247137[_0xa0ab('0xc0')](_0x1c2999[_0xa0ab('0x37')][_0xa0ab('0xb3')]);}})[_0xa0ab('0x26')](respondWithStatusCode(_0x326031,null))['catch'](handleError(_0x326031,null));};exports['download']=function(_0x471ab0,_0x38fcf2){var _0x19719c=moment()['unix']()['toString']();var _0x519378=path[_0xa0ab('0xc1')](config[_0xa0ab('0xc2')],_0xa0ab('0xc3'),'files',_0xa0ab('0xc4'));var _0x5c67f1=path[_0xa0ab('0xc1')](config[_0xa0ab('0xc2')],_0xa0ab('0xc3'),_0xa0ab('0xc5'),_0xa0ab('0xc6'));var _0x52c9b5=path['join'](_0x519378,_0x19719c);var _0x2261f6=util['format']('transcript-%d-%s.zip',_0x471ab0[_0xa0ab('0xa7')]['id'],_0x19719c);var _0xd5c872=path['join'](_0x519378,_0x2261f6);var _0x591047=[];_0x591047[_0xa0ab('0x31')]({'model':db['Attachment'],'as':_0xa0ab('0xc7'),'raw':!![]});var _0x479951=[{'model':db[_0xa0ab('0xb2')],'as':'Messages','attributes':['id','body','createdAt'],'include':_0x591047}];return db['FaxInteraction'][_0xa0ab('0x58')]({'where':{'id':_0x471ab0[_0xa0ab('0xa7')]['id']},'include':_0x479951})[_0xa0ab('0x26')](handleEntityNotFound(_0x38fcf2,null))[_0xa0ab('0x26')](function(_0x49f9bd){if(_0x49f9bd&&_0x49f9bd[_0xa0ab('0xc8')]){var _0x37e8f1=_0x49f9bd[_0xa0ab('0xc9')]({'plain':!![]});fs['mkdirSync'](_0x52c9b5);for(var _0x5c9b6c=0x0;_0x5c9b6c<_0x37e8f1[_0xa0ab('0xc8')]['length'];_0x5c9b6c++){var _0x24170a=_0x37e8f1[_0xa0ab('0xc8')][_0x5c9b6c]['Attachment'];if(_0x24170a){var _0x26f579=path['join'](_0x5c67f1,_0x24170a[_0xa0ab('0xca')]);if(fs['existsSync'](_0x26f579)){fs['createReadStream'](_0x26f579)['pipe'](fs[_0xa0ab('0xcb')](path[_0xa0ab('0xc1')](_0x52c9b5,_0x24170a[_0xa0ab('0xca')])));}}}return BPromise[_0xa0ab('0x85')]()[_0xa0ab('0x26')](function(){return new BPromise(function(_0x13e7bc,_0x2959d8){zipdir(_0x52c9b5,{'saveTo':_0xd5c872},function(_0x8d498d,_0xe6347f){if(_0x8d498d)return _0x2959d8(_0x8d498d);return _0x13e7bc(_0xe6347f);});})['then'](function(){return new BPromise(function(_0x14650c,_0x650d8f){rimraf(_0x52c9b5,function(_0x45422d){if(_0x45422d)_0x650d8f(_0x45422d);return _0x14650c();});});})['then'](function(){return _0x38fcf2[_0xa0ab('0xcc')](_0xd5c872,_0x2261f6,function(_0x1fa445){if(_0x1fa445){console[_0xa0ab('0xcd')](_0xa0ab('0xce'),_0x1fa445);}else{fs[_0xa0ab('0xcf')](_0xd5c872);}});});});}else{return _0x38fcf2[_0xa0ab('0x1a')](0xc8);}})['catch'](handleError(_0x38fcf2,null));};
\ No newline at end of file
+var _0xa7a6=['o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','sequelize','groupBy','all','catch','show','params','rawAttributes','filters','includeAll','include','options','create','describe','addMessage','FaxMessage','omit','ids','getMessages','findOne','FaxInteractionId','merge','format','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','setTags','spread','emit','removeTags','download','unix','root','server','files','tmp','transcript-%d-%s.zip','Attachment','Messages','get','join','basename','existsSync','createReadStream','pipe','createWriteStream','resolve','log','err','unlinkSync','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','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','../../config/license/util','../../mysqldb','redis','defaults','localhost','./faxInteraction.socket','register','status','json','offset','limit','undefined','count','apply','save','update','then','destroy','end','sendStatus','error','stack','name','send','Users','TagIds','split','Tags','push','index','map','FaxInteraction','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','select','field','color','from','u.id','u.fullname','user_has_fax_interactions','left_join','users','u.id\x20=\x20ui.UserId','cm_contacts','o.id\x20=\x20i.UserId','fax_accounts','a.id\x20=\x20i.FaxAccountId','me.FaxInteractionId\x20=\x20i.id','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','having','`\x20>\x200','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','value','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','text','start','Tag','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','type','body','compact','isEmpty','FaxAccountId','where','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','t.id\x20IN\x20?','agent','user','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','i.FaxAccountId\x20IN\x20?','role','toString','keyBy','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','contactName','i.*','c.firstName','Contact.firstName','c.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','c.fax'];(function(_0x12edca,_0x4eaf21){var _0x57ce31=function(_0x544be5){while(--_0x544be5){_0x12edca['push'](_0x12edca['shift']());}};_0x57ce31(++_0x4eaf21);}(_0xa7a6,0x115));var _0x6a7a=function(_0x584bcd,_0x59c4b7){_0x584bcd=_0x584bcd-0x0;var _0x146bc7=_0xa7a6[_0x584bcd];return _0x146bc7;};'use strict';var emlformat=require(_0x6a7a('0x0'));var rimraf=require(_0x6a7a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6a7a('0x2'));var rp=require(_0x6a7a('0x3'));var moment=require(_0x6a7a('0x4'));var BPromise=require(_0x6a7a('0x5'));var Mustache=require(_0x6a7a('0x6'));var util=require(_0x6a7a('0x7'));var path=require(_0x6a7a('0x8'));var sox=require(_0x6a7a('0x9'));var csv=require('to-csv');var ejs=require(_0x6a7a('0xa'));var fs=require('fs');var fs_extra=require(_0x6a7a('0xb'));var _=require(_0x6a7a('0xc'));var squel=require(_0x6a7a('0xd'));var crypto=require(_0x6a7a('0xe'));var jsforce=require(_0x6a7a('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6a7a('0x10'));var Papa=require(_0x6a7a('0x11'));var Redis=require(_0x6a7a('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x6a7a('0x13'));var as=require(_0x6a7a('0x14'));var hardwareService=require(_0x6a7a('0x15'));var logger=require(_0x6a7a('0x16'))(_0x6a7a('0x17'));var utils=require(_0x6a7a('0x18'));var config=require(_0x6a7a('0x19'));var licenseUtil=require(_0x6a7a('0x1a'));var db=require(_0x6a7a('0x1b'))['db'];config[_0x6a7a('0x1c')]=_[_0x6a7a('0x1d')](config[_0x6a7a('0x1c')],{'host':_0x6a7a('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x6a7a('0x1f'))[_0x6a7a('0x20')](socket);function respondWithStatusCode(_0x2dbead,_0x51cc6b){_0x51cc6b=_0x51cc6b||0xcc;return function(_0x5943cb){if(_0x5943cb){return _0x2dbead['sendStatus'](_0x51cc6b);}return _0x2dbead[_0x6a7a('0x21')](_0x51cc6b)['end']();};}function respondWithResult(_0x3840e9,_0x292ffe){_0x292ffe=_0x292ffe||0xc8;return function(_0xff47c4){if(_0xff47c4){return _0x3840e9[_0x6a7a('0x21')](_0x292ffe)[_0x6a7a('0x22')](_0xff47c4);}};}function respondWithFilteredResult(_0x4351b9,_0xe2f26e){return function(_0x4d16b8){if(_0x4d16b8){var _0xbf8baf=typeof _0xe2f26e[_0x6a7a('0x23')]==='undefined'&&typeof _0xe2f26e[_0x6a7a('0x24')]===_0x6a7a('0x25');var _0x4b794d=_0x4d16b8[_0x6a7a('0x26')];var _0xa82ec=_0xbf8baf?0x0:_0xe2f26e[_0x6a7a('0x23')];var _0x430030=_0xbf8baf?_0x4d16b8[_0x6a7a('0x26')]:_0xe2f26e[_0x6a7a('0x23')]+_0xe2f26e[_0x6a7a('0x24')];var _0x1cd1aa;if(_0x430030>=_0x4b794d){_0x430030=_0x4b794d;_0x1cd1aa=0xc8;}else{_0x1cd1aa=0xce;}_0x4351b9[_0x6a7a('0x21')](_0x1cd1aa);return _0x4351b9['set']('Content-Range',_0xa82ec+'-'+_0x430030+'/'+_0x4b794d)[_0x6a7a('0x22')](_0x4d16b8);}return null;};}function patchUpdates(_0x146f0f){return function(_0x5e907c){try{jsonpatch[_0x6a7a('0x27')](_0x5e907c,_0x146f0f,!![]);}catch(_0x26d521){return BPromise['reject'](_0x26d521);}return _0x5e907c[_0x6a7a('0x28')]();};}function saveUpdates(_0x18c04d,_0x1b7505){return function(_0x1228d0){if(_0x1228d0){return _0x1228d0[_0x6a7a('0x29')](_0x18c04d)[_0x6a7a('0x2a')](function(_0x3b71f2){return _0x3b71f2;});}return null;};}function removeEntity(_0x1be56b,_0xebb0bd){return function(_0x2226c9){if(_0x2226c9){return _0x2226c9[_0x6a7a('0x2b')]()[_0x6a7a('0x2a')](function(){_0x1be56b[_0x6a7a('0x21')](0xcc)[_0x6a7a('0x2c')]();});}};}function handleEntityNotFound(_0x5eb050,_0x369a18){return function(_0x3bf6e6){if(!_0x3bf6e6){_0x5eb050[_0x6a7a('0x2d')](0x194);}return _0x3bf6e6;};}function handleError(_0x212f53,_0x39caea){_0x39caea=_0x39caea||0x1f4;return function(_0x2206a7){logger[_0x6a7a('0x2e')](_0x2206a7[_0x6a7a('0x2f')]);if(_0x2206a7[_0x6a7a('0x30')]){delete _0x2206a7[_0x6a7a('0x30')];}_0x212f53[_0x6a7a('0x21')](_0x39caea)[_0x6a7a('0x31')](_0x2206a7);};}function getInteractionUsers(_0xe64226,_0x34f832){return new BPromise(function(_0x393f19,_0x50657f){try{if(_0x34f832[_0xe64226['id']]){_0xe64226[_0x6a7a('0x32')]=_['map'](_0x34f832[_0xe64226['id']],function(_0x3fe850){return{'id':_0x3fe850['id'],'fullname':_0x3fe850['fullname']};});}}catch(_0x21dd7f){_0x50657f(_0x21dd7f);}_0x393f19(_0xe64226);});}function getInteractionTags(_0xb7d8bf,_0x74cebe){return new BPromise(function(_0x130a8e,_0x5c5ccb){try{if(_0xb7d8bf[_0x6a7a('0x33')]){_0xb7d8bf['Tags']=[];_0xb7d8bf['TagIds'][_0x6a7a('0x34')](',')['forEach'](function(_0x49488b){_0xb7d8bf[_0x6a7a('0x35')][_0x6a7a('0x36')](_0x74cebe[_0x49488b]);});}delete _0xb7d8bf[_0x6a7a('0x33')];}catch(_0x13ded3){_0x5c5ccb(_0x13ded3);}_0x130a8e(_0xb7d8bf);});}function updateFaxInteraction(_0x374f3c,_0x50090d,_0x7d7f39){return new BPromise(function(_0x3ebc18,_0x1b0c24){return getInteractionUsers(_0x374f3c,_0x7d7f39)['then'](function(_0x543253){return getInteractionTags(_0x543253,_0x50090d);})[_0x6a7a('0x2a')](function(_0x3c34a8){_0x3ebc18(_0x3c34a8);})['catch'](function(_0x3e03e1){_0x1b0c24(_0x3e03e1);});});}exports[_0x6a7a('0x37')]=function(_0x2f9c2b,_0x5b20ae){var _0x97c830={},_0x1c85cb={},_0x57daf2={'count':0x0,'rows':[]};var _0x1cd1b6=_[_0x6a7a('0x38')](db[_0x6a7a('0x39')]['rawAttributes'],function(_0x561d51){return{'name':_0x561d51['fieldName'],'type':_0x561d51['type'][_0x6a7a('0x3a')]};});_0x1c85cb[_0x6a7a('0x3b')]=_['map'](_0x1cd1b6,_0x6a7a('0x30'));_0x1c85cb[_0x6a7a('0x3c')]=_[_0x6a7a('0x3d')](_0x2f9c2b[_0x6a7a('0x3c')]);_0x1c85cb['filters']=_[_0x6a7a('0x3e')](_0x1c85cb[_0x6a7a('0x3b')],_0x1c85cb[_0x6a7a('0x3c')]);_0x97c830[_0x6a7a('0x3f')]=_[_0x6a7a('0x3e')](_0x1c85cb[_0x6a7a('0x3b')],qs[_0x6a7a('0x40')](_0x2f9c2b[_0x6a7a('0x3c')][_0x6a7a('0x40')]));_0x97c830[_0x6a7a('0x3f')]=_0x97c830[_0x6a7a('0x3f')][_0x6a7a('0x41')]?_0x97c830[_0x6a7a('0x3f')]:_0x1c85cb[_0x6a7a('0x3b')];if(!_0x2f9c2b[_0x6a7a('0x3c')][_0x6a7a('0x42')](_0x6a7a('0x43'))){_0x97c830[_0x6a7a('0x24')]=qs['limit'](_0x2f9c2b[_0x6a7a('0x3c')]['limit']);_0x97c830[_0x6a7a('0x23')]=qs[_0x6a7a('0x23')](_0x2f9c2b[_0x6a7a('0x3c')][_0x6a7a('0x23')]);}_0x97c830[_0x6a7a('0x44')]=qs[_0x6a7a('0x45')](_0x2f9c2b[_0x6a7a('0x3c')][_0x6a7a('0x45')]);_0x97c830['where']=qs['filters'](_[_0x6a7a('0x46')](_0x2f9c2b['query'],_0x1c85cb['filters']),_0x1cd1b6);var _0x4704ff=[];var _0x6e9f10=squel[_0x6a7a('0x47')]()[_0x6a7a('0x48')]('id')[_0x6a7a('0x48')](_0x6a7a('0x30'))[_0x6a7a('0x48')](_0x6a7a('0x49'))[_0x6a7a('0x4a')]('tools_tags');var _0x4c6dfa=squel[_0x6a7a('0x47')]()[_0x6a7a('0x48')](_0x6a7a('0x4b'))['field'](_0x6a7a('0x4c'))[_0x6a7a('0x48')]('ui.FaxInteractionId')[_0x6a7a('0x4a')](_0x6a7a('0x4d'),'ui')[_0x6a7a('0x4e')](_0x6a7a('0x4f'),'u',_0x6a7a('0x50'));var _0x3fcdc6=squel[_0x6a7a('0x47')]()[_0x6a7a('0x4a')]('fax_interactions','i')[_0x6a7a('0x4e')](_0x6a7a('0x51'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x6a7a('0x4e')]('users','o',_0x6a7a('0x52'))[_0x6a7a('0x4e')](_0x6a7a('0x53'),'a',_0x6a7a('0x54'))['left_join']('fax_messages','me',_0x6a7a('0x55'))[_0x6a7a('0x4e')](_0x6a7a('0x56'),'it',_0x6a7a('0x57'))[_0x6a7a('0x4e')](_0x6a7a('0x58'),'t',_0x6a7a('0x59'));var _0x280bd7=squel[_0x6a7a('0x5a')]();var _0x3e5570=[];var _0x5b4e28=squel[_0x6a7a('0x5a')]();var _0x3f1698;if(_0x2f9c2b[_0x6a7a('0x3c')][_0x6a7a('0x5b')]){_0x3f1698=as[_0x6a7a('0x5c')](_0x2f9c2b[_0x6a7a('0x3c')]['search']);var _0x1cd4b0=_0x3f1698[_0x6a7a('0x5d')];for(var _0x363896=0x0;_0x363896<_0x3f1698[_0x6a7a('0x5e')][_0x6a7a('0x41')];_0x363896++){var _0x2dab9e=_0x3f1698[_0x6a7a('0x5e')][_0x363896];var _0x591c8c='i';var _0x1ea999=_[_0x6a7a('0x5f')](_0x1cd1b6,[_0x6a7a('0x30'),_0x2dab9e[_0x6a7a('0x48')]]);if(!_0x1ea999){switch(_0x2dab9e['field']){case _0x6a7a('0x60'):if(_0x2dab9e['value']==0x1){_0x3fcdc6[_0x6a7a('0x61')]('`'+_0x2dab9e[_0x6a7a('0x48')]+'`\x20=\x200');}else{_0x3fcdc6[_0x6a7a('0x61')]('`'+_0x2dab9e[_0x6a7a('0x48')]+_0x6a7a('0x62'));}break;case'Contact':if(_0x2dab9e[_0x6a7a('0x63')]===_0x6a7a('0x64')){if(_0x2dab9e['value']['split']('\x20')[_0x6a7a('0x41')]>0x1){_0x280bd7[_0x1cd4b0](_0x6a7a('0x65'),qs[_0x6a7a('0x66')](_0x2dab9e[_0x6a7a('0x67')]),null);}else{var _0x4c872d='%'+_0x2dab9e['value']+'%';_0x280bd7[_0x1cd4b0](_0x6a7a('0x68'),_0x4c872d,_0x4c872d,_0x4c872d);}}else{_0x1ea999=_['find'](_0x1cd1b6,[_0x6a7a('0x30'),'ContactId']);_0x2dab9e[_0x6a7a('0x48')]=_0x6a7a('0x69');_0xba48b3=as['buildExpression'](_0x591c8c,_0x1ea999['type'],_0x2dab9e);_0x280bd7[_0x1cd4b0](_0xba48b3[_0x6a7a('0x6a')],_0xba48b3[_0x6a7a('0x67')][_0x6a7a('0x6b')],_0xba48b3[_0x6a7a('0x67')][_0x6a7a('0x2c')]);}break;case _0x6a7a('0x6c'):var _0x4c2573=_0x2dab9e[_0x6a7a('0x67')][_0x6a7a('0x34')](',')['map'](function(_0x3cde2b){return Number(_0x3cde2b);});_0x4c2573['forEach'](function(_0x5b75bc){_0x5b4e28['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x5b75bc+',%');});_0x3e5570=_[_0x6a7a('0x6d')](_0x3e5570,_0x4c2573);break;case'User':if(_0x2dab9e['operator']==='$substring'){_0x280bd7[_0x1cd4b0](_0x6a7a('0x6e'),'%'+_0x2dab9e[_0x6a7a('0x67')]+'%',null);}else{_0x1ea999=_[_0x6a7a('0x5f')](_0x1cd1b6,[_0x6a7a('0x30'),_0x6a7a('0x6f')]);_0x2dab9e[_0x6a7a('0x48')]='UserId';_0xba48b3=as[_0x6a7a('0x70')](_0x591c8c,_0x1ea999[_0x6a7a('0x71')],_0x2dab9e);_0x280bd7[_0x1cd4b0](_0xba48b3[_0x6a7a('0x6a')],_0xba48b3[_0x6a7a('0x67')][_0x6a7a('0x6b')],_0xba48b3['value'][_0x6a7a('0x2c')]);}break;case _0x6a7a('0x72'):_0xba48b3=as[_0x6a7a('0x70')]('me',null,_0x2dab9e);_0x280bd7[_0x1cd4b0](_0xba48b3[_0x6a7a('0x6a')],_0xba48b3[_0x6a7a('0x67')]['start'],_0xba48b3[_0x6a7a('0x67')][_0x6a7a('0x2c')]);break;}}else{var _0xba48b3=as['buildExpression'](_0x591c8c,_0x1ea999['type'],_0x2dab9e);_0x280bd7[_0x1cd4b0](_0xba48b3[_0x6a7a('0x6a')],_0xba48b3[_0x6a7a('0x67')][_0x6a7a('0x6b')],_0xba48b3[_0x6a7a('0x67')][_0x6a7a('0x2c')]);}}}else{var _0x3f17fe=_(_0x2f9c2b[_0x6a7a('0x3c')])[_0x6a7a('0x3d')]()[_0x6a7a('0x38')](function(_0x30d66d){return _['some'](_0x1cd1b6,[_0x6a7a('0x30'),_0x30d66d])?_0x30d66d:undefined;})[_0x6a7a('0x73')]()[_0x6a7a('0x67')]();if(!_[_0x6a7a('0x74')](_0x3f17fe)){_0x3f17fe['forEach'](function(_0x299058){if(_0x299058===_0x6a7a('0x75')){_0x3fcdc6[_0x6a7a('0x76')]('i.FaxAccountId\x20IN\x20?',[]['concat'](_0x2f9c2b[_0x6a7a('0x3c')][_0x299058]));}else if(_0x299058===_0x6a7a('0x77')){var _0x38ccfa=JSON[_0x6a7a('0x78')](_0x2f9c2b[_0x6a7a('0x3c')][_0x299058])[_0x6a7a('0x79')];var _0x4ad27b=JSON[_0x6a7a('0x78')](_0x2f9c2b[_0x6a7a('0x3c')][_0x299058])[_0x6a7a('0x7a')];_0x3fcdc6[_0x6a7a('0x76')](_0x6a7a('0x7b'),_0x38ccfa,_0x4ad27b);}else{if(_0x2f9c2b[_0x6a7a('0x3c')][_0x299058]===_0x6a7a('0x7c')){_0x3fcdc6[_0x6a7a('0x76')]('i.'+_0x299058+_0x6a7a('0x7d'));}else{_0x3fcdc6['where']('i.'+_0x299058+_0x6a7a('0x7e'),_0x2f9c2b[_0x6a7a('0x3c')][_0x299058]);}}});}if(_0x2f9c2b[_0x6a7a('0x3c')][_0x6a7a('0x7f')]){if(_0x2f9c2b['query'][_0x6a7a('0x7f')]==0x1){_0x3fcdc6[_0x6a7a('0x61')]('`unreadMessages`\x20=\x200');}else{_0x3fcdc6[_0x6a7a('0x61')](_0x6a7a('0x80'));}}if(_0x2f9c2b[_0x6a7a('0x3c')][_0x6a7a('0x81')]){_0x3e5570=_['isArray'](_0x2f9c2b['query'][_0x6a7a('0x81')])?_0x2f9c2b['query']['tag']:new Array(_0x2f9c2b['query']['tag']);_0x3e5570[_0x6a7a('0x82')](function(_0x376971){_0x5b4e28['or'](_0x6a7a('0x83'),'%,'+_0x376971+',%');});}if(_0x2f9c2b[_0x6a7a('0x3c')]['filter']){var _0x34d7c6=_0x2f9c2b['query'][_0x6a7a('0x84')]['replace']('\x5c','\x5c\x5c')[_0x6a7a('0x85')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x34d7c6)){_0x280bd7['or'](_0x6a7a('0x86'),_0x34d7c6+'%')['or'](_0x6a7a('0x87'),_0x34d7c6+'%');}_0x280bd7['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x34d7c6+'%');}}_0x3fcdc6[_0x6a7a('0x76')](_0x280bd7);_0x3fcdc6[_0x6a7a('0x88')](_0x6a7a('0x89'));var _0x500a9b={'type':db[_0x6a7a('0x8a')][_0x6a7a('0x8b')][_0x6a7a('0x8c')],'raw':!![]};var _0x4b39f4=_0x3fcdc6[_0x6a7a('0x8d')]();_0x4b39f4[_0x6a7a('0x48')](_0x6a7a('0x89'));_0x4b39f4['field'](_0x6a7a('0x8e'),_0x6a7a('0x60'));if(_0x97c830['order']){_0x97c830[_0x6a7a('0x44')][_0x6a7a('0x82')](function(_0x412f86){var _0x4ea2f8=_0x412f86[0x0]==='contactName'?_0x412f86[0x0]:'i.'+_0x412f86[0x0];_0x3fcdc6[_0x6a7a('0x44')](_0x4ea2f8,_0x412f86[0x1]===_0x6a7a('0x8f')?![]:!![]);});}if(!_['isEmpty'](_0x3e5570)){_0x3fcdc6[_0x6a7a('0x61')](_0x5b4e28);_0x4b39f4[_0x6a7a('0x76')](_0x6a7a('0x90'),_0x3e5570);}BPromise['resolve']()[_0x6a7a('0x2a')](function(){if(!_0x3f1698){if(_0x2f9c2b['query'][_0x6a7a('0x75')])return;_0x4b39f4[_0x6a7a('0x76')]('i.FaxAccountId\x20IS\x20NOT\x20NULL');_0x3fcdc6[_0x6a7a('0x76')]('i.FaxAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x2f9c2b['user']['role']!==_0x6a7a('0x91'))return;return _0x2f9c2b[_0x6a7a('0x92')][_0x6a7a('0x93')]({'attributes':['id'],'raw':!![]})[_0x6a7a('0x2a')](function(_0x554d18){if(_[_0x6a7a('0x74')](_0x554d18)){_0x4b39f4[_0x6a7a('0x76')](_0x6a7a('0x94'));_0x3fcdc6[_0x6a7a('0x76')](_0x6a7a('0x94'));}else{_0x4b39f4[_0x6a7a('0x76')](_0x6a7a('0x95'),_[_0x6a7a('0x38')](_0x554d18,'id'));_0x3fcdc6[_0x6a7a('0x76')](_0x6a7a('0x95'),_[_0x6a7a('0x38')](_0x554d18,'id'));}});})['then'](function(){if(_0x2f9c2b[_0x6a7a('0x92')][_0x6a7a('0x96')]===_0x6a7a('0x91')&&!_0x3f1698&&!_0x2f9c2b[_0x6a7a('0x3c')][_0x6a7a('0x75')])return[];return db['sequelize'][_0x6a7a('0x3c')](_0x4b39f4[_0x6a7a('0x97')](),_0x500a9b);})[_0x6a7a('0x2a')](function(_0x21655c){_0x57daf2[_0x6a7a('0x26')]=_0x21655c[_0x6a7a('0x41')];if(_0x57daf2[_0x6a7a('0x26')]===0x0)return[];return db['sequelize'][_0x6a7a('0x3c')](_0x6e9f10[_0x6a7a('0x97')](),_0x500a9b)[_0x6a7a('0x2a')](function(_0x2f99a5){_0x4704ff=_[_0x6a7a('0x98')](_0x2f99a5,'id');_0x500a9b=_['merge'](_0x500a9b,{'model':db[_0x6a7a('0x39')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2f9c2b[_0x6a7a('0x3c')][_0x6a7a('0x40')]){_0x97c830['attributes'][_0x6a7a('0x82')](function(_0x929cbb){_0x3fcdc6[_0x6a7a('0x48')]('i.'+_0x929cbb);});}else{_0x3fcdc6[_0x6a7a('0x48')](_0x6a7a('0x8e'),_0x6a7a('0x60'));_0x3fcdc6['field'](_0x6a7a('0x99'),_0x6a7a('0x9a'));_0x3fcdc6[_0x6a7a('0x48')](_0x6a7a('0x9b'),_0x6a7a('0x9c'));_0x3fcdc6[_0x6a7a('0x48')](_0x6a7a('0x9d'),_0x6a7a('0x9e'));_0x3fcdc6[_0x6a7a('0x48')](_0x6a7a('0x9f'));_0x3fcdc6[_0x6a7a('0x48')](_0x6a7a('0xa0'),_0x6a7a('0xa1'));_0x3fcdc6[_0x6a7a('0x48')](_0x6a7a('0xa2'),'Contact.lastName');_0x3fcdc6['field'](_0x6a7a('0xa3'),_0x6a7a('0xa4'));_0x3fcdc6[_0x6a7a('0x48')](_0x6a7a('0xa5'),_0x6a7a('0xa6'));_0x3fcdc6[_0x6a7a('0x48')](_0x6a7a('0xa7'),'Contact.mobile');_0x3fcdc6['field'](_0x6a7a('0xa8'),'Contact.fax');_0x3fcdc6[_0x6a7a('0x48')](_0x6a7a('0xa9'),_0x6a7a('0xaa'));_0x3fcdc6[_0x6a7a('0x48')](_0x6a7a('0xab'),_0x6a7a('0xac'));_0x3fcdc6['field'](_0x6a7a('0xad'),_0x6a7a('0x33'));}if(_0x97c830['limit'])_0x3fcdc6[_0x6a7a('0x24')](_0x97c830[_0x6a7a('0x24')]);if(_0x97c830['offset'])_0x3fcdc6['offset'](_0x97c830['offset']);return db[_0x6a7a('0xae')][_0x6a7a('0x3c')](_0x3fcdc6['toString'](),_0x500a9b);})['then'](function(_0x5635aa){if(_0x5635aa['length']>0x0)_0x4c6dfa['where']('ui.FaxInteractionId\x20IN\x20?',_[_0x6a7a('0x38')](_0x5635aa,'id'));return db[_0x6a7a('0xae')]['query'](_0x4c6dfa['toString'](),_0x500a9b)[_0x6a7a('0x2a')](function(_0x387a0e){var _0x194b10=_[_0x6a7a('0xaf')](_0x387a0e,'FaxInteractionId');var _0x3a67c8=[];_0x5635aa['forEach'](function(_0x3b63b7){_0x3a67c8[_0x6a7a('0x36')](updateFaxInteraction(_0x3b63b7,_0x4704ff,_0x194b10));});return BPromise[_0x6a7a('0xb0')](_0x3a67c8);});});})[_0x6a7a('0x2a')](function(_0x56c431){_0x57daf2['rows']=_0x56c431;return _0x57daf2;})[_0x6a7a('0x2a')](respondWithFilteredResult(_0x5b20ae,_0x97c830))[_0x6a7a('0xb1')](handleError(_0x5b20ae,null));};exports[_0x6a7a('0xb2')]=function(_0xb08ebb,_0x4ec001){var _0x2de48={'raw':![],'where':{'id':_0xb08ebb[_0x6a7a('0xb3')]['id']}},_0x388cca={};_0x388cca['model']=_[_0x6a7a('0x3d')](db[_0x6a7a('0x39')][_0x6a7a('0xb4')]);_0x388cca[_0x6a7a('0x3c')]=_[_0x6a7a('0x3d')](_0xb08ebb[_0x6a7a('0x3c')]);_0x388cca[_0x6a7a('0xb5')]=_['intersection'](_0x388cca['model'],_0x388cca[_0x6a7a('0x3c')]);_0x2de48[_0x6a7a('0x3f')]=_['intersection'](_0x388cca[_0x6a7a('0x3b')],qs[_0x6a7a('0x40')](_0xb08ebb[_0x6a7a('0x3c')][_0x6a7a('0x40')]));_0x2de48[_0x6a7a('0x3f')]=_0x2de48[_0x6a7a('0x3f')][_0x6a7a('0x41')]?_0x2de48[_0x6a7a('0x3f')]:_0x388cca[_0x6a7a('0x3b')];if(_0xb08ebb['query'][_0x6a7a('0xb6')]){_0x2de48[_0x6a7a('0xb7')]=[{'all':!![]}];}_0x2de48=_['merge']({},_0x2de48,_0xb08ebb[_0x6a7a('0xb8')]);return db[_0x6a7a('0x39')][_0x6a7a('0x5f')](_0x2de48)[_0x6a7a('0x2a')](handleEntityNotFound(_0x4ec001,null))['then'](respondWithResult(_0x4ec001,null))[_0x6a7a('0xb1')](handleError(_0x4ec001,null));};exports[_0x6a7a('0xb9')]=function(_0x116f73,_0x1e08f1){return db[_0x6a7a('0x39')][_0x6a7a('0xb9')](_0x116f73[_0x6a7a('0x72')],{})[_0x6a7a('0x2a')](respondWithResult(_0x1e08f1,0xc9))[_0x6a7a('0xb1')](handleError(_0x1e08f1,null));};exports[_0x6a7a('0x29')]=function(_0x528888,_0x4a212a){if(_0x528888[_0x6a7a('0x72')]['id']){delete _0x528888[_0x6a7a('0x72')]['id'];}return db[_0x6a7a('0x39')][_0x6a7a('0x5f')]({'where':{'id':_0x528888['params']['id']}})[_0x6a7a('0x2a')](handleEntityNotFound(_0x4a212a,null))['then'](saveUpdates(_0x528888['body'],null))['then'](respondWithResult(_0x4a212a,null))['catch'](handleError(_0x4a212a,null));};exports[_0x6a7a('0x2b')]=function(_0xa524e,_0xf5c990){return db[_0x6a7a('0x39')][_0x6a7a('0x5f')]({'where':{'id':_0xa524e[_0x6a7a('0xb3')]['id']}})[_0x6a7a('0x2a')](handleEntityNotFound(_0xf5c990,null))['then'](removeEntity(_0xf5c990,null))['catch'](handleError(_0xf5c990,null));};exports[_0x6a7a('0xba')]=function(_0x32504c,_0x2c6dae){return db['FaxInteraction'][_0x6a7a('0xba')]()['then'](respondWithResult(_0x2c6dae,null))[_0x6a7a('0xb1')](handleError(_0x2c6dae,null));};exports[_0x6a7a('0xbb')]=function(_0x83a386,_0x316129,_0x352a7e){return db[_0x6a7a('0xbc')][_0x6a7a('0x5f')]({'where':{'id':_0x83a386['params']['id']}})[_0x6a7a('0x2a')](handleEntityNotFound(_0x316129,null))[_0x6a7a('0x2a')](function(_0x680528){if(_0x680528){return _0x680528[_0x6a7a('0xbb')](_0x83a386[_0x6a7a('0x72')]['ids'],_[_0x6a7a('0xbd')](_0x83a386[_0x6a7a('0x72')],[_0x6a7a('0xbe'),'id'])||{});}})[_0x6a7a('0x2a')](respondWithResult(_0x316129,null))['catch'](handleError(_0x316129,null));};exports[_0x6a7a('0xbf')]=function(_0x3000f4,_0x42b3c8,_0x21a3ef){var _0x52e1ed={'raw':![],'where':{}};var _0x596172={};var _0x1962f1={'count':0x0,'rows':[]};return db[_0x6a7a('0x39')][_0x6a7a('0xc0')]({'where':{'id':_0x3000f4[_0x6a7a('0xb3')]['id']}})[_0x6a7a('0x2a')](handleEntityNotFound(_0x42b3c8,null))['then'](function(_0x33a9a4){if(_0x33a9a4){_0x596172[_0x6a7a('0x3b')]=_[_0x6a7a('0x3d')](db['FaxMessage'][_0x6a7a('0xb4')]);_0x596172[_0x6a7a('0x3c')]=_[_0x6a7a('0x3d')](_0x3000f4[_0x6a7a('0x3c')]);_0x596172[_0x6a7a('0xb5')]=_[_0x6a7a('0x3e')](_0x596172[_0x6a7a('0x3b')],_0x596172['query']);_0x52e1ed[_0x6a7a('0x3f')]=_[_0x6a7a('0x3e')](_0x596172['model'],qs[_0x6a7a('0x40')](_0x3000f4['query'][_0x6a7a('0x40')]));_0x52e1ed['attributes']=_0x52e1ed['attributes'][_0x6a7a('0x41')]?_0x52e1ed['attributes']:_0x596172['model'];if(!_0x3000f4[_0x6a7a('0x3c')][_0x6a7a('0x42')]('nolimit')){_0x52e1ed[_0x6a7a('0x24')]=qs[_0x6a7a('0x24')](_0x3000f4[_0x6a7a('0x3c')][_0x6a7a('0x24')]);_0x52e1ed['offset']=qs[_0x6a7a('0x23')](_0x3000f4[_0x6a7a('0x3c')][_0x6a7a('0x23')]);}_0x52e1ed['order']=qs[_0x6a7a('0x45')](_0x3000f4[_0x6a7a('0x3c')][_0x6a7a('0x45')]);_0x52e1ed[_0x6a7a('0x76')]=qs[_0x6a7a('0xb5')](_[_0x6a7a('0x46')](_0x3000f4[_0x6a7a('0x3c')],_0x596172['filters']));_0x52e1ed['where'][_0x6a7a('0xc1')]=_0x33a9a4['id'];if(_0x3000f4['query'][_0x6a7a('0x84')]){_0x52e1ed['where']=_[_0x6a7a('0xc2')](_0x52e1ed[_0x6a7a('0x76')],{'$or':_[_0x6a7a('0x38')](_0x52e1ed[_0x6a7a('0x3f')],function(_0xa68ca8){var _0x198e51={};_0x198e51[_0xa68ca8]={'$like':'%'+_0x3000f4[_0x6a7a('0x3c')]['filter']+'%'};return _0x198e51;})});}if(_0x3000f4[_0x6a7a('0x3c')]['$gte']){var _0x230882=_0x3000f4['query'][_0x6a7a('0x79')][_0x6a7a('0x34')](',');var _0x106506={};_0x106506[_0x230882[0x0]]={'$gte':moment(_0x230882[0x1])[_0x6a7a('0xc3')](_0x6a7a('0xc4'))};_0x52e1ed['where']=_[_0x6a7a('0xc2')](_0x52e1ed[_0x6a7a('0x76')],_0x106506);}_0x52e1ed=_[_0x6a7a('0xc2')]({},_0x52e1ed,_0x3000f4[_0x6a7a('0xb8')]);return db['FaxMessage'][_0x6a7a('0x26')]({'where':_0x52e1ed['where']})['then'](function(_0x1ae223){_0x1962f1[_0x6a7a('0x26')]=_0x1ae223;if(_0x3000f4[_0x6a7a('0x3c')][_0x6a7a('0xb6')]){_0x52e1ed[_0x6a7a('0xb7')]=[{'all':!![]}];}return db[_0x6a7a('0xbc')][_0x6a7a('0xc5')](_0x52e1ed);})[_0x6a7a('0x2a')](function(_0x28a0f2){_0x1962f1[_0x6a7a('0xc6')]=_0x28a0f2;return _0x1962f1;});}})[_0x6a7a('0x2a')](respondWithFilteredResult(_0x42b3c8,_0x52e1ed))['catch'](handleError(_0x42b3c8,null));};exports['addTags']=function(_0x1a2636,_0x2ea739,_0x38546d){return db['FaxInteraction'][_0x6a7a('0x5f')]({'where':{'id':_0x1a2636[_0x6a7a('0xb3')]['id']}})[_0x6a7a('0x2a')](handleEntityNotFound(_0x2ea739,null))[_0x6a7a('0x2a')](function(_0x53e2bf){if(_0x53e2bf){return _0x53e2bf[_0x6a7a('0xc7')](_0x1a2636[_0x6a7a('0x72')]['ids'],_[_0x6a7a('0xbd')](_0x1a2636[_0x6a7a('0x72')],['ids','id'])||{})[_0x6a7a('0xc8')](function(){return db['Tag'][_0x6a7a('0xc5')]({'attributes':['id',_0x6a7a('0x30'),_0x6a7a('0x49')],'where':{'id':_0x1a2636[_0x6a7a('0x72')]['ids']}});})[_0x6a7a('0x2a')](function(_0x5175a7){socket[_0x6a7a('0xc9')]('faxInteractionTags:save',{'id':Number(_0x1a2636['params']['id']),'tags':_0x5175a7||[]});return{'id':Number(_0x1a2636[_0x6a7a('0xb3')]['id']),'tags':_0x5175a7||[]};});}})[_0x6a7a('0x2a')](respondWithResult(_0x2ea739,null))[_0x6a7a('0xb1')](handleError(_0x2ea739,null));};exports[_0x6a7a('0xca')]=function(_0x30bd5a,_0x168b07,_0x4f220b){return db[_0x6a7a('0x39')][_0x6a7a('0x5f')]({'where':{'id':_0x30bd5a['params']['id']}})['then'](handleEntityNotFound(_0x168b07,null))[_0x6a7a('0x2a')](function(_0x14dfe2){if(_0x14dfe2){return _0x14dfe2[_0x6a7a('0xca')](_0x30bd5a[_0x6a7a('0x3c')][_0x6a7a('0xbe')]);}})[_0x6a7a('0x2a')](respondWithStatusCode(_0x168b07,null))[_0x6a7a('0xb1')](handleError(_0x168b07,null));};exports[_0x6a7a('0xcb')]=function(_0x1fc1bc,_0x565a39){var _0x43a951=moment()[_0x6a7a('0xcc')]()['toString']();var _0x56a90c=path['join'](config[_0x6a7a('0xcd')],_0x6a7a('0xce'),_0x6a7a('0xcf'),_0x6a7a('0xd0'));var _0x2766a9=path['join'](config['root'],_0x6a7a('0xce'),'files','attachments');var _0x51ab40=path['join'](_0x56a90c,_0x43a951);var _0x22add3=util[_0x6a7a('0xc3')](_0x6a7a('0xd1'),_0x1fc1bc['params']['id'],_0x43a951);var _0x31437a=path['join'](_0x56a90c,_0x22add3);var _0x12e15f=[];_0x12e15f[_0x6a7a('0x36')]({'model':db[_0x6a7a('0xd2')],'as':'Attachment','raw':!![]});var _0x110c82=[{'model':db[_0x6a7a('0xbc')],'as':_0x6a7a('0xd3'),'attributes':['id',_0x6a7a('0x72'),_0x6a7a('0x77')],'include':_0x12e15f}];return db[_0x6a7a('0x39')]['find']({'where':{'id':_0x1fc1bc['params']['id']},'include':_0x110c82})[_0x6a7a('0x2a')](handleEntityNotFound(_0x565a39,null))[_0x6a7a('0x2a')](function(_0x4b1b6e){if(_0x4b1b6e&&_0x4b1b6e['Messages']){var _0x3b40ae=_0x4b1b6e[_0x6a7a('0xd4')]({'plain':!![]});fs['mkdirSync'](_0x51ab40);for(var _0x2ce10a=0x0;_0x2ce10a<_0x3b40ae['Messages']['length'];_0x2ce10a++){var _0x1a8c06=_0x3b40ae['Messages'][_0x2ce10a]['Attachment'];if(_0x1a8c06){var _0x3d19d2=path[_0x6a7a('0xd5')](_0x2766a9,_0x1a8c06[_0x6a7a('0xd6')]);if(fs[_0x6a7a('0xd7')](_0x3d19d2)){fs[_0x6a7a('0xd8')](_0x3d19d2)[_0x6a7a('0xd9')](fs[_0x6a7a('0xda')](path['join'](_0x51ab40,_0x1a8c06['basename'])));}}}return BPromise[_0x6a7a('0xdb')]()[_0x6a7a('0x2a')](function(){return new BPromise(function(_0x2a7576,_0xef4744){zipdir(_0x51ab40,{'saveTo':_0x31437a},function(_0x9a6a9c,_0xd09f81){if(_0x9a6a9c)return _0xef4744(_0x9a6a9c);return _0x2a7576(_0xd09f81);});})['then'](function(){return new BPromise(function(_0x256c6b,_0x69a8c6){rimraf(_0x51ab40,function(_0x50a7c){if(_0x50a7c)_0x69a8c6(_0x50a7c);return _0x256c6b();});});})[_0x6a7a('0x2a')](function(){return _0x565a39['download'](_0x31437a,_0x22add3,function(_0x543384){if(_0x543384){console[_0x6a7a('0xdc')](_0x6a7a('0xdd'),_0x543384);}else{fs[_0x6a7a('0xde')](_0x31437a);}});});});}else{return _0x565a39[_0x6a7a('0x2d')](0xc8);}})['catch'](handleError(_0x565a39,null));};
\ No newline at end of file
index b62ff9d..6fe3f9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7687=['findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','FaxInteraction','../../mysqldb','FaxMessage','setMaxListeners','update','then','setDataValue','Users'];(function(_0x13ee48,_0x354593){var _0x31108=function(_0x1ae242){while(--_0x1ae242){_0x13ee48['push'](_0x13ee48['shift']());}};_0x31108(++_0x354593);}(_0x7687,0x18f));var _0x7768=function(_0x11dc39,_0x491115){_0x11dc39=_0x11dc39-0x0;var _0x457277=_0x7687[_0x11dc39];return _0x457277;};'use strict';var EventEmitter=require(_0x7768('0x0'));var FaxInteraction=require('../../mysqldb')['db'][_0x7768('0x1')];var FaxMessage=require(_0x7768('0x2'))['db'][_0x7768('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x7768('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':_0x7768('0x5'),'afterDestroy':'remove'};function emitEvent(_0x43f269){return function(_0x310d1b,_0x3d31af,_0x43c901){_0x310d1b['getUsers']({'attributes':['id'],'raw':!![]})[_0x7768('0x6')](function(_0x5112fc){_0x310d1b[_0x7768('0x7')](_0x7768('0x8'),_0x5112fc['map'](function(_0xc71e10){return{'id':_0xc71e10['id']};}));return FaxMessage[_0x7768('0x9')]({'where':{'FaxInteractionId':_0x310d1b['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x42feb1){_0x310d1b[_0x7768('0x7')](_0x7768('0xa'),_0x42feb1[_0x7768('0xb')]);FaxInteractionEvents[_0x7768('0xc')](_0x43f269+':'+_0x310d1b['id'],_0x310d1b);FaxInteractionEvents[_0x7768('0xc')](_0x43f269,_0x310d1b);_0x43c901(null);})[_0x7768('0xd')](_0x43c901(null));};}for(var e in events){if(events[_0x7768('0xe')](e)){var event=events[e];FaxInteraction[_0x7768('0xf')](e,emitEvent(event));}}module[_0x7768('0x10')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x82f4=['hasOwnProperty','hook','../../mysqldb','FaxMessage','setMaxListeners','save','update','getUsers','then','setDataValue','map','findAll','length','emit','catch'];(function(_0x1beef3,_0x57c4b8){var _0x5af964=function(_0x36f463){while(--_0x36f463){_0x1beef3['push'](_0x1beef3['shift']());}};_0x5af964(++_0x57c4b8);}(_0x82f4,0x98));var _0x482f=function(_0x4fef8b,_0x4d1704){_0x4fef8b=_0x4fef8b-0x0;var _0x3a8d8b=_0x82f4[_0x4fef8b];return _0x3a8d8b;};'use strict';var EventEmitter=require('events');var FaxInteraction=require(_0x482f('0x0'))['db']['FaxInteraction'];var FaxMessage=require(_0x482f('0x0'))['db'][_0x482f('0x1')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x482f('0x2')](0x0);var events={'afterCreate':_0x482f('0x3'),'afterUpdate':_0x482f('0x4'),'afterDestroy':'remove'};function emitEvent(_0x20a342){return function(_0x41680a,_0x4eb6f7,_0x5b593b){_0x41680a[_0x482f('0x5')]({'attributes':['id'],'raw':!![]})[_0x482f('0x6')](function(_0x4c4973){_0x41680a[_0x482f('0x7')]('Users',_0x4c4973[_0x482f('0x8')](function(_0xd633ee){return{'id':_0xd633ee['id']};}));return FaxMessage[_0x482f('0x9')]({'where':{'FaxInteractionId':_0x41680a['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x519050){_0x41680a[_0x482f('0x7')]('unreadMessages',_0x519050[_0x482f('0xa')]);FaxInteractionEvents[_0x482f('0xb')](_0x20a342+':'+_0x41680a['id'],_0x41680a);FaxInteractionEvents[_0x482f('0xb')](_0x20a342,_0x41680a);_0x5b593b(null);})[_0x482f('0xc')](_0x5b593b(null));};}for(var e in events){if(events[_0x482f('0xd')](e)){var event=events[e];FaxInteraction[_0x482f('0xe')](e,emitEvent(event));}}module['exports']=FaxInteractionEvents;
\ No newline at end of file
index a172a5a..1f71cc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43ef=['fax_interactions','changed','closed','format','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','exports','define'];(function(_0x1e8bc3,_0x5a189d){var _0x48d46e=function(_0x376db5){while(--_0x376db5){_0x1e8bc3['push'](_0x1e8bc3['shift']());}};_0x48d46e(++_0x5a189d);}(_0x43ef,0x19a));var _0xf43e=function(_0x27b821,_0x58e50b){_0x27b821=_0x27b821-0x0;var _0x3032a3=_0x43ef[_0x27b821];return _0x3032a3;};'use strict';var _=require(_0xf43e('0x0'));var util=require(_0xf43e('0x1'));var logger=require('../../config/logger')(_0xf43e('0x2'));var moment=require(_0xf43e('0x3'));var BPromise=require(_0xf43e('0x4'));var rp=require(_0xf43e('0x5'));var fs=require('fs');var path=require(_0xf43e('0x6'));var rimraf=require('rimraf');var config=require(_0xf43e('0x7'));var attributes=require('./faxInteraction.attributes');module[_0xf43e('0x8')]=function(_0x249559,_0x2297fa){return _0x249559[_0xf43e('0x9')]('FaxInteraction',attributes,{'tableName':_0xf43e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x240d1b,_0x2e4e07,_0x58bf7c){if(_0x240d1b[_0xf43e('0xb')](_0xf43e('0xc'))){_0x240d1b['closedAt']=moment()[_0xf43e('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}_0x58bf7c(null,_0x240d1b);}}});};
\ No newline at end of file
+var _0x8d92=['bluebird','request-promise','path','rimraf','../../config/environment','./faxInteraction.attributes','exports','define','FaxInteraction','changed','closed','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api'];(function(_0x11beb7,_0x2d32c7){var _0x357aa2=function(_0x4ac79f){while(--_0x4ac79f){_0x11beb7['push'](_0x11beb7['shift']());}};_0x357aa2(++_0x2d32c7);}(_0x8d92,0x13c));var _0x28d9=function(_0x507527,_0x3d1f6e){_0x507527=_0x507527-0x0;var _0x2dec80=_0x8d92[_0x507527];return _0x2dec80;};'use strict';var _=require(_0x28d9('0x0'));var util=require(_0x28d9('0x1'));var logger=require(_0x28d9('0x2'))(_0x28d9('0x3'));var moment=require('moment');var BPromise=require(_0x28d9('0x4'));var rp=require(_0x28d9('0x5'));var fs=require('fs');var path=require(_0x28d9('0x6'));var rimraf=require(_0x28d9('0x7'));var config=require(_0x28d9('0x8'));var attributes=require(_0x28d9('0x9'));module[_0x28d9('0xa')]=function(_0x37069f,_0x182d0b){return _0x37069f[_0x28d9('0xb')](_0x28d9('0xc'),attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x50c129,_0x208b9c,_0x338765){if(_0x50c129[_0x28d9('0xd')](_0x28d9('0xe'))){_0x50c129['closedAt']=moment()['format'](_0x28d9('0xf'));}_0x338765(null,_0x50c129);}}});};
\ No newline at end of file
index 097ef28..10b1808 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6607=['ids','AddTags','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','then','info','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','FaxInteraction,\x20%s,\x20%s','result','catch','UpdateFaxInteraction','update','body','options','raw','where','limit','stringify','FaxInteraction','find','addTags','omit'];(function(_0x357633,_0x254610){var _0x261faf=function(_0x18b745){while(--_0x18b745){_0x357633['push'](_0x357633['shift']());}};_0x261faf(++_0x254610);}(_0x6607,0x9a));var _0x7660=function(_0x188dd9,_0x58497c){_0x188dd9=_0x188dd9-0x0;var _0x509a48=_0x6607[_0x188dd9];return _0x509a48;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x7660('0x0'));var rs=require(_0x7660('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7660('0x2'))['db'];var utils=require(_0x7660('0x3'));var logger=require('../../config/logger')(_0x7660('0x4'));var config=require('../../config/environment');var jayson=require(_0x7660('0x5'));var client=jayson[_0x7660('0x6')][_0x7660('0x7')]({'port':0x232a});config[_0x7660('0x8')]=_[_0x7660('0x9')](config[_0x7660('0x8')],{'host':_0x7660('0xa'),'port':0x18eb});var socket=require(_0x7660('0xb'))(new Redis(config[_0x7660('0x8')]));require(_0x7660('0xc'))['register'](socket);function respondWithRpcPromise(_0x5b7409,_0x1cd634,_0x57fd45){return new BPromise(function(_0x556db7,_0x365c8e){return client['request'](_0x5b7409,_0x57fd45)[_0x7660('0xd')](function(_0x5b3a0a){logger[_0x7660('0xe')]('FaxInteraction,\x20%s,\x20%s',_0x1cd634,'request\x20sent');logger[_0x7660('0xf')](_0x7660('0x10'),_0x1cd634,_0x7660('0x11'),JSON['stringify'](_0x5b3a0a));if(_0x5b3a0a[_0x7660('0x12')]){if(_0x5b3a0a['error'][_0x7660('0x13')]===0x1f4){logger[_0x7660('0x12')]('FaxInteraction,\x20%s,\x20%s',_0x1cd634,_0x5b3a0a[_0x7660('0x12')][_0x7660('0x14')]);return _0x365c8e(_0x5b3a0a[_0x7660('0x12')][_0x7660('0x14')]);}logger[_0x7660('0x12')]('FaxInteraction,\x20%s,\x20%s',_0x1cd634,_0x5b3a0a['error']['message']);return _0x556db7(_0x5b3a0a[_0x7660('0x12')]['message']);}else{logger[_0x7660('0xe')](_0x7660('0x15'),_0x1cd634,_0x7660('0x11'));_0x556db7(_0x5b3a0a[_0x7660('0x16')]['message']);}})[_0x7660('0x17')](function(_0x398ab7){logger['error'](_0x7660('0x15'),_0x1cd634,_0x398ab7);_0x365c8e(_0x398ab7);});});}exports[_0x7660('0x18')]=function(_0x55771d){var _0x3102ff=this;return new Promise(function(_0x3b7839,_0x33fc0d){return db['FaxInteraction'][_0x7660('0x19')](_0x55771d[_0x7660('0x1a')],{'raw':_0x55771d['options']?_0x55771d[_0x7660('0x1b')][_0x7660('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x55771d['options']?_0x55771d[_0x7660('0x1b')][_0x7660('0x1d')]||null:null,'attributes':_0x55771d['options']?_0x55771d[_0x7660('0x1b')]['attributes']||null:null,'limit':_0x55771d['options']?_0x55771d[_0x7660('0x1b')][_0x7660('0x1e')]||null:null})[_0x7660('0xd')](function(_0x19e40c){logger[_0x7660('0xe')]('UpdateFaxInteraction',_0x55771d);logger[_0x7660('0xf')]('UpdateFaxInteraction',_0x55771d,JSON[_0x7660('0x1f')](_0x19e40c));_0x3b7839(_0x19e40c);})[_0x7660('0x17')](function(_0xbb97a3){logger[_0x7660('0x12')](_0x7660('0x18'),_0xbb97a3['message'],_0x55771d);_0x33fc0d(_0x3102ff[_0x7660('0x12')](0x1f4,_0xbb97a3[_0x7660('0x14')]));});});};exports['AddTagsToFaxInteraction']=function(_0x49113b){return new Promise(function(_0x56c224,_0xa37557){return db[_0x7660('0x20')][_0x7660('0x21')]({'where':_0x49113b[_0x7660('0x1b')]?_0x49113b[_0x7660('0x1b')]['where']||null:null})[_0x7660('0xd')](function(_0x191c92){if(_0x191c92){return _0x191c92[_0x7660('0x22')](_0x49113b[_0x7660('0x1a')]['ids'],_[_0x7660('0x23')](_0x49113b['body'],[_0x7660('0x24'),'id'])||{});}})['spread'](function(_0x69a26){logger[_0x7660('0xe')](_0x7660('0x25'),_0x49113b);logger[_0x7660('0xf')](_0x7660('0x25'),_0x49113b,JSON['stringify'](_0x69a26));_0x56c224(_0x69a26);})[_0x7660('0x17')](function(_0x56b713){logger[_0x7660('0x12')](_0x7660('0x25'),_0x56b713['message'],_0x49113b);_0xa37557(_this['error'](0x1f4,_0x56b713[_0x7660('0x14')]));});});};
\ No newline at end of file
+var _0xe552=['redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','request','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','UpdateFaxInteraction','FaxInteraction','update','body','options','raw','where','attributes','limit','then','AddTagsToFaxInteraction','find','addTags','ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http'];(function(_0x5ea489,_0x4ec72a){var _0x1cd414=function(_0x2b6fbd){while(--_0x2b6fbd){_0x5ea489['push'](_0x5ea489['shift']());}};_0x1cd414(++_0x4ec72a);}(_0xe552,0x1b7));var _0x2e55=function(_0x2e4b5d,_0x2d8d76){_0x2e4b5d=_0x2e4b5d-0x0;var _0x4cc52e=_0xe552[_0x2e4b5d];return _0x4cc52e;};'use strict';var _=require(_0x2e55('0x0'));var util=require(_0x2e55('0x1'));var moment=require(_0x2e55('0x2'));var BPromise=require(_0x2e55('0x3'));var rs=require(_0x2e55('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2e55('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x2e55('0x6'))('rpc');var config=require(_0x2e55('0x7'));var jayson=require(_0x2e55('0x8'));var client=jayson[_0x2e55('0x9')][_0x2e55('0xa')]({'port':0x232a});config[_0x2e55('0xb')]=_[_0x2e55('0xc')](config[_0x2e55('0xb')],{'host':_0x2e55('0xd'),'port':0x18eb});var socket=require(_0x2e55('0xe'))(new Redis(config[_0x2e55('0xb')]));require(_0x2e55('0xf'))[_0x2e55('0x10')](socket);function respondWithRpcPromise(_0x230940,_0x27608b,_0x5c92ad){return new BPromise(function(_0x111c79,_0x5eacf0){return client[_0x2e55('0x11')](_0x230940,_0x5c92ad)['then'](function(_0x2cf0fc){logger['info'](_0x2e55('0x12'),_0x27608b,_0x2e55('0x13'));logger[_0x2e55('0x14')]('FaxInteraction,\x20%s,\x20%s,\x20%s',_0x27608b,'request\x20sent',JSON[_0x2e55('0x15')](_0x2cf0fc));if(_0x2cf0fc[_0x2e55('0x16')]){if(_0x2cf0fc[_0x2e55('0x16')][_0x2e55('0x17')]===0x1f4){logger[_0x2e55('0x16')](_0x2e55('0x12'),_0x27608b,_0x2cf0fc[_0x2e55('0x16')]['message']);return _0x5eacf0(_0x2cf0fc[_0x2e55('0x16')][_0x2e55('0x18')]);}logger['error'](_0x2e55('0x12'),_0x27608b,_0x2cf0fc[_0x2e55('0x16')][_0x2e55('0x18')]);return _0x111c79(_0x2cf0fc[_0x2e55('0x16')][_0x2e55('0x18')]);}else{logger[_0x2e55('0x19')]('FaxInteraction,\x20%s,\x20%s',_0x27608b,'request\x20sent');_0x111c79(_0x2cf0fc[_0x2e55('0x1a')][_0x2e55('0x18')]);}})[_0x2e55('0x1b')](function(_0x3ba44f){logger[_0x2e55('0x16')](_0x2e55('0x12'),_0x27608b,_0x3ba44f);_0x5eacf0(_0x3ba44f);});});}exports[_0x2e55('0x1c')]=function(_0x8b6d5d){var _0x1eeda6=this;return new Promise(function(_0xb5998d,_0x2c4f59){return db[_0x2e55('0x1d')][_0x2e55('0x1e')](_0x8b6d5d[_0x2e55('0x1f')],{'raw':_0x8b6d5d[_0x2e55('0x20')]?_0x8b6d5d[_0x2e55('0x20')][_0x2e55('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x8b6d5d[_0x2e55('0x20')]?_0x8b6d5d[_0x2e55('0x20')][_0x2e55('0x22')]||null:null,'attributes':_0x8b6d5d['options']?_0x8b6d5d['options'][_0x2e55('0x23')]||null:null,'limit':_0x8b6d5d[_0x2e55('0x20')]?_0x8b6d5d[_0x2e55('0x20')][_0x2e55('0x24')]||null:null})[_0x2e55('0x25')](function(_0x427e1c){logger[_0x2e55('0x19')](_0x2e55('0x1c'),_0x8b6d5d);logger[_0x2e55('0x14')](_0x2e55('0x1c'),_0x8b6d5d,JSON[_0x2e55('0x15')](_0x427e1c));_0xb5998d(_0x427e1c);})['catch'](function(_0x15b451){logger[_0x2e55('0x16')](_0x2e55('0x1c'),_0x15b451[_0x2e55('0x18')],_0x8b6d5d);_0x2c4f59(_0x1eeda6[_0x2e55('0x16')](0x1f4,_0x15b451[_0x2e55('0x18')]));});});};exports[_0x2e55('0x26')]=function(_0x19fe5a){return new Promise(function(_0x2d45ec,_0x5dfed3){return db[_0x2e55('0x1d')][_0x2e55('0x27')]({'where':_0x19fe5a[_0x2e55('0x20')]?_0x19fe5a[_0x2e55('0x20')][_0x2e55('0x22')]||null:null})[_0x2e55('0x25')](function(_0x3d150d){if(_0x3d150d){return _0x3d150d[_0x2e55('0x28')](_0x19fe5a[_0x2e55('0x1f')][_0x2e55('0x29')],_[_0x2e55('0x2a')](_0x19fe5a[_0x2e55('0x1f')],[_0x2e55('0x29'),'id'])||{});}})[_0x2e55('0x2b')](function(_0x2d5725){logger[_0x2e55('0x19')](_0x2e55('0x2c'),_0x19fe5a);logger[_0x2e55('0x14')]('AddTags',_0x19fe5a,JSON[_0x2e55('0x15')](_0x2d5725));_0x2d45ec(_0x2d5725);})['catch'](function(_0x4b9028){logger[_0x2e55('0x16')](_0x2e55('0x2c'),_0x4b9028[_0x2e55('0x18')],_0x19fe5a);_0x5dfed3(_this[_0x2e55('0x16')](0x1f4,_0x4b9028[_0x2e55('0x18')]));});});};
\ No newline at end of file
index c264567..597149d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf448=['emit','register','length','save'];(function(_0x40a825,_0x3bac79){var _0x273a54=function(_0x5628d8){while(--_0x5628d8){_0x40a825['push'](_0x40a825['shift']());}};_0x273a54(++_0x3bac79);}(_0xf448,0x107));var _0x8f44=function(_0x270eac,_0x5d3d11){_0x270eac=_0x270eac-0x0;var _0x54f346=_0xf448[_0x270eac];return _0x54f346;};'use strict';var FaxInteractionEvents=require('./faxInteraction.events');var events=[_0x8f44('0x0'),'remove','update'];function createListener(_0x13a699,_0x270d04){return function(_0x503768){_0x270d04[_0x8f44('0x1')](_0x13a699,_0x503768);};}function removeListener(_0x446e30,_0x55a35e){return function(){FaxInteractionEvents['removeListener'](_0x446e30,_0x55a35e);};}exports[_0x8f44('0x2')]=function(_0x3b6a89){for(var _0x202c55=0x0,_0x5d0ed2=events[_0x8f44('0x3')];_0x202c55<_0x5d0ed2;_0x202c55++){var _0x4dad67=events[_0x202c55];var _0x168db9=createListener('faxInteraction:'+_0x4dad67,_0x3b6a89);FaxInteractionEvents['on'](_0x4dad67,_0x168db9);}};
\ No newline at end of file
+var _0x5a02=['./faxInteraction.events','save','remove','update','removeListener','register','length','faxInteraction:'];(function(_0x434138,_0x74656){var _0x40ebdd=function(_0x2b8c41){while(--_0x2b8c41){_0x434138['push'](_0x434138['shift']());}};_0x40ebdd(++_0x74656);}(_0x5a02,0x100));var _0x25a0=function(_0x235482,_0x14b833){_0x235482=_0x235482-0x0;var _0x5f5bea=_0x5a02[_0x235482];return _0x5f5bea;};'use strict';var FaxInteractionEvents=require(_0x25a0('0x0'));var events=[_0x25a0('0x1'),_0x25a0('0x2'),_0x25a0('0x3')];function createListener(_0xe08e81,_0x4b8179){return function(_0x475d32){_0x4b8179['emit'](_0xe08e81,_0x475d32);};}function removeListener(_0x4170c6,_0x163e17){return function(){FaxInteractionEvents[_0x25a0('0x4')](_0x4170c6,_0x163e17);};}exports[_0x25a0('0x5')]=function(_0x1bb0ba){for(var _0x578a46=0x0,_0x363d6b=events[_0x25a0('0x6')];_0x578a46<_0x363d6b;_0x578a46++){var _0x5b2246=events[_0x578a46];var _0x5d7936=createListener(_0x25a0('0x7')+_0x5b2246,_0x1bb0ba);FaxInteractionEvents['on'](_0x5b2246,_0x5d7936);}};
\ No newline at end of file
index bb3db20..5bf5430 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2106=['post','create','/:id/messages','addMessage','/:id/tags','tracked','fax','addTags','put','update','faxinteraction:destroy','delete','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated','describe','/:id','show','getMessages','/:id/download'];(function(_0x249363,_0x2d028c){var _0x37502c=function(_0x24d031){while(--_0x24d031){_0x249363['push'](_0x249363['shift']());}};_0x37502c(++_0x2d028c);}(_0x2106,0x1ae));var _0x6210=function(_0x22e10b,_0x4378a3){_0x22e10b=_0x22e10b-0x0;var _0x3b83a4=_0x2106[_0x22e10b];return _0x3b83a4;};'use strict';var multer=require(_0x6210('0x0'));var util=require(_0x6210('0x1'));var path=require(_0x6210('0x2'));var timeout=require(_0x6210('0x3'));var express=require(_0x6210('0x4'));var router=express[_0x6210('0x5')]();var fs_extra=require(_0x6210('0x6'));var auth=require(_0x6210('0x7'));var interaction=require(_0x6210('0x8'));var config=require(_0x6210('0x9'));var controller=require('./faxInteraction.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x6210('0xa')](_0x6210('0xb'),auth[_0x6210('0xc')](),controller[_0x6210('0xd')]);router[_0x6210('0xa')](_0x6210('0xe'),auth['isAuthenticated'](),controller[_0x6210('0xf')]);router[_0x6210('0xa')]('/:id/messages',auth[_0x6210('0xc')](),controller[_0x6210('0x10')]);router[_0x6210('0xa')](_0x6210('0x11'),auth[_0x6210('0xc')](),controller['download']);router[_0x6210('0x12')]('/',auth[_0x6210('0xc')](),controller[_0x6210('0x13')]);router[_0x6210('0x12')](_0x6210('0x14'),auth[_0x6210('0xc')](),controller[_0x6210('0x15')]);router[_0x6210('0x12')](_0x6210('0x16'),auth[_0x6210('0xc')](),interaction[_0x6210('0x17')](_0x6210('0x18'),'faxinteraction:addtags'),controller[_0x6210('0x19')]);router[_0x6210('0x1a')](_0x6210('0xe'),auth[_0x6210('0xc')](),interaction[_0x6210('0x17')](_0x6210('0x18'),'faxinteraction:update'),controller[_0x6210('0x1b')]);router['delete'](_0x6210('0xe'),auth[_0x6210('0xc')](),interaction[_0x6210('0x17')](_0x6210('0x18'),_0x6210('0x1c')),controller['destroy']);router[_0x6210('0x1d')](_0x6210('0x16'),auth[_0x6210('0xc')](),controller[_0x6210('0x1e')]);module[_0x6210('0x1f')]=router;
\ No newline at end of file
+var _0x9b34=['describe','/:id','show','/:id/messages','getMessages','/:id/download','post','create','addMessage','/:id/tags','tracked','fax','faxinteraction:addtags','addTags','put','faxinteraction:update','update','destroy','delete','removeTags','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe'];(function(_0x519952,_0x552def){var _0x9bb00f=function(_0x4f18be){while(--_0x4f18be){_0x519952['push'](_0x519952['shift']());}};_0x9bb00f(++_0x552def);}(_0x9b34,0x1c2));var _0x49b3=function(_0x56488f,_0x216de1){_0x56488f=_0x56488f-0x0;var _0x4190e8=_0x9b34[_0x56488f];return _0x4190e8;};'use strict';var multer=require(_0x49b3('0x0'));var util=require(_0x49b3('0x1'));var path=require(_0x49b3('0x2'));var timeout=require(_0x49b3('0x3'));var express=require(_0x49b3('0x4'));var router=express['Router']();var fs_extra=require(_0x49b3('0x5'));var auth=require(_0x49b3('0x6'));var interaction=require(_0x49b3('0x7'));var config=require('../../config/environment');var controller=require('./faxInteraction.controller');router[_0x49b3('0x8')]('/',auth[_0x49b3('0x9')](),controller[_0x49b3('0xa')]);router[_0x49b3('0x8')](_0x49b3('0xb'),auth[_0x49b3('0x9')](),controller[_0x49b3('0xc')]);router['get'](_0x49b3('0xd'),auth[_0x49b3('0x9')](),controller[_0x49b3('0xe')]);router[_0x49b3('0x8')](_0x49b3('0xf'),auth['isAuthenticated'](),controller[_0x49b3('0x10')]);router[_0x49b3('0x8')](_0x49b3('0x11'),auth['isAuthenticated'](),controller['download']);router[_0x49b3('0x12')]('/',auth[_0x49b3('0x9')](),controller[_0x49b3('0x13')]);router['post'](_0x49b3('0xf'),auth[_0x49b3('0x9')](),controller[_0x49b3('0x14')]);router[_0x49b3('0x12')](_0x49b3('0x15'),auth[_0x49b3('0x9')](),interaction[_0x49b3('0x16')](_0x49b3('0x17'),_0x49b3('0x18')),controller[_0x49b3('0x19')]);router[_0x49b3('0x1a')](_0x49b3('0xd'),auth[_0x49b3('0x9')](),interaction[_0x49b3('0x16')](_0x49b3('0x17'),_0x49b3('0x1b')),controller[_0x49b3('0x1c')]);router['delete'](_0x49b3('0xd'),auth['isAuthenticated'](),interaction[_0x49b3('0x16')]('fax','faxinteraction:destroy'),controller[_0x49b3('0x1d')]);router[_0x49b3('0x1e')](_0x49b3('0x15'),auth[_0x49b3('0x9')](),controller[_0x49b3('0x1f')]);module[_0x49b3('0x20')]=router;
\ No newline at end of file
index 4af1811..ea10b54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9221=['BOOLEAN','ENUM','out','DATE','exports','TEXT'];(function(_0x229586,_0x2c17f){var _0x3f026c=function(_0x49ef68){while(--_0x49ef68){_0x229586['push'](_0x229586['shift']());}};_0x3f026c(++_0x2c17f);}(_0x9221,0x64));var _0x1922=function(_0x301dab,_0x38050a){_0x301dab=_0x301dab-0x0;var _0x2500a2=_0x9221[_0x301dab];return _0x2500a2;};'use strict';var Sequelize=require('sequelize');module[_0x1922('0x0')]={'body':{'type':Sequelize[_0x1922('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x1922('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x1922('0x3')]('in','out'),'defaultValue':_0x1922('0x4'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x1922('0x1')],'defaultValue':null},'readAt':{'type':Sequelize[_0x1922('0x5')]}};
\ No newline at end of file
+var _0xe009=['ENUM','out','DATE','sequelize','exports','TEXT','medium'];(function(_0x5253c3,_0x3e4a0a){var _0x3c3917=function(_0x51efd7){while(--_0x51efd7){_0x5253c3['push'](_0x5253c3['shift']());}};_0x3c3917(++_0x3e4a0a);}(_0xe009,0x122));var _0x9e00=function(_0x3c5bbf,_0x481d7e){_0x3c5bbf=_0x3c5bbf-0x0;var _0x32b4a3=_0xe009[_0x3c5bbf];return _0x32b4a3;};'use strict';var Sequelize=require(_0x9e00('0x0'));module[_0x9e00('0x1')]={'body':{'type':Sequelize[_0x9e00('0x2')](_0x9e00('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x9e00('0x4')]('in','out'),'defaultValue':_0x9e00('0x5'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x9e00('0x2')],'defaultValue':null},'readAt':{'type':Sequelize[_0x9e00('0x6')]}};
\ No newline at end of file
index 02fe96e..6f1d82f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4533=['nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','update','body','find','describe','accept','fax','format','UserId','user','get','FaxInteraction','FaxInteractionId','isNil','YYYY-MM-DD\x20HH:mm:ss','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','interaction','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','SELECT','contact','fullname','email','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','fax-interactions','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage','sequelize','QueryTypes','agent','motionChannel','CmContact','findOne','Attachment','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','join','root','server','attachments','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','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','redis','defaults','socket.io-emitter','./faxMessage.socket','register','jayson/promise','client','http','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','sendStatus','name','send','index','map','FaxMessage','rawAttributes','fieldName','type','model','query','keys','intersection','fields','length','attributes'];(function(_0xc67528,_0x24e2fb){var _0x38e26d=function(_0x1b0efe){while(--_0x1b0efe){_0xc67528['push'](_0xc67528['shift']());}};_0x38e26d(++_0x24e2fb);}(_0x4533,0x1f2));var _0x3453=function(_0x2b271c,_0xbd09d5){_0x2b271c=_0x2b271c-0x0;var _0x52bb38=_0x4533[_0x2b271c];return _0x52bb38;};'use strict';var emlformat=require(_0x3453('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3453('0x1'));var jsonpatch=require(_0x3453('0x2'));var rp=require(_0x3453('0x3'));var moment=require(_0x3453('0x4'));var BPromise=require(_0x3453('0x5'));var Mustache=require(_0x3453('0x6'));var util=require('util');var path=require(_0x3453('0x7'));var sox=require(_0x3453('0x8'));var csv=require(_0x3453('0x9'));var ejs=require(_0x3453('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3453('0xb'));var squel=require('squel');var crypto=require(_0x3453('0xc'));var jsforce=require(_0x3453('0xd'));var deskjs=require(_0x3453('0xe'));var toCsv=require(_0x3453('0x9'));var querystring=require(_0x3453('0xf'));var Papa=require(_0x3453('0x10'));var Redis=require(_0x3453('0x11'));var authService=require(_0x3453('0x12'));var qs=require(_0x3453('0x13'));var as=require(_0x3453('0x14'));var hardwareService=require(_0x3453('0x15'));var logger=require(_0x3453('0x16'))(_0x3453('0x17'));var utils=require(_0x3453('0x18'));var config=require(_0x3453('0x19'));var licenseUtil=require(_0x3453('0x1a'));var db=require(_0x3453('0x1b'))['db'];config[_0x3453('0x1c')]=_[_0x3453('0x1d')](config[_0x3453('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0x3453('0x1e'))(new Redis(config[_0x3453('0x1c')]));require(_0x3453('0x1f'))[_0x3453('0x20')](socket);var jayson=require(_0x3453('0x21'));var client=jayson[_0x3453('0x22')][_0x3453('0x23')]({'port':0x232c});var client9002=jayson[_0x3453('0x22')][_0x3453('0x23')]({'port':0x232a});function respondWithRpcPromise(_0xa3b0f7,_0x4215e3,_0xd2f663,_0x76bf6d){return new BPromise(function(_0x4045fd,_0x561b18){var _0x9cb035=_0x76bf6d||client;return _0x9cb035['request'](_0xa3b0f7,_0xd2f663)[_0x3453('0x24')](function(_0xb3f8d8){logger[_0x3453('0x25')](_0x3453('0x26'),_0x4215e3,_0x3453('0x27'));logger['debug'](_0x3453('0x28'),_0x4215e3,_0x3453('0x27'),JSON[_0x3453('0x29')](_0xb3f8d8));if(_0xb3f8d8[_0x3453('0x2a')]){if(_0xb3f8d8[_0x3453('0x2a')][_0x3453('0x2b')]===0x1f4){logger[_0x3453('0x2a')](_0x3453('0x26'),_0x4215e3,_0xb3f8d8[_0x3453('0x2a')]['message']);return _0x561b18(_0xb3f8d8[_0x3453('0x2a')][_0x3453('0x2c')]);}logger['error'](_0x3453('0x26'),_0x4215e3,_0xb3f8d8[_0x3453('0x2a')][_0x3453('0x2c')]);return _0x4045fd(_0xb3f8d8[_0x3453('0x2a')][_0x3453('0x2c')]);}else{logger[_0x3453('0x25')](_0x3453('0x26'),_0x4215e3,_0x3453('0x27'));_0x4045fd(_0xb3f8d8[_0x3453('0x2d')][_0x3453('0x2c')]);}})[_0x3453('0x2e')](function(_0x415901){logger['error'](_0x3453('0x26'),_0x4215e3,_0x415901);_0x561b18(_0x415901);});});}function respondWithStatusCode(_0x3b3e38,_0x9f2e06){_0x9f2e06=_0x9f2e06||0xcc;return function(_0x363b44){if(_0x363b44){return _0x3b3e38['sendStatus'](_0x9f2e06);}return _0x3b3e38[_0x3453('0x2f')](_0x9f2e06)[_0x3453('0x30')]();};}function respondWithResult(_0x18f6d1,_0x39693e){_0x39693e=_0x39693e||0xc8;return function(_0x372b46){if(_0x372b46){return _0x18f6d1[_0x3453('0x2f')](_0x39693e)[_0x3453('0x31')](_0x372b46);}};}function respondWithFilteredResult(_0x181a96,_0x4ac9d1){return function(_0x35d1cc){if(_0x35d1cc){var _0x1b0f11=typeof _0x4ac9d1[_0x3453('0x32')]===_0x3453('0x33')&&typeof _0x4ac9d1['limit']===_0x3453('0x33');var _0x4fff1c=_0x35d1cc[_0x3453('0x34')];var _0x5f0753=_0x1b0f11?0x0:_0x4ac9d1[_0x3453('0x32')];var _0x5eafea=_0x1b0f11?_0x35d1cc[_0x3453('0x34')]:_0x4ac9d1[_0x3453('0x32')]+_0x4ac9d1[_0x3453('0x35')];var _0x2a78fc;if(_0x5eafea>=_0x4fff1c){_0x5eafea=_0x4fff1c;_0x2a78fc=0xc8;}else{_0x2a78fc=0xce;}_0x181a96[_0x3453('0x2f')](_0x2a78fc);return _0x181a96[_0x3453('0x36')](_0x3453('0x37'),_0x5f0753+'-'+_0x5eafea+'/'+_0x4fff1c)[_0x3453('0x31')](_0x35d1cc);}return null;};}function patchUpdates(_0x190930){return function(_0x1329fc){try{jsonpatch['apply'](_0x1329fc,_0x190930,!![]);}catch(_0x3c3e82){return BPromise[_0x3453('0x38')](_0x3c3e82);}return _0x1329fc[_0x3453('0x39')]();};}function saveUpdates(_0x789845,_0x135a7c){return function(_0x5c2c86){if(_0x5c2c86){return _0x5c2c86['update'](_0x789845)[_0x3453('0x24')](function(_0x1bef4b){return _0x1bef4b;});}return null;};}function removeEntity(_0x4a1b85,_0x1fd27a){return function(_0x51e173){if(_0x51e173){return _0x51e173['destroy']()[_0x3453('0x24')](function(){_0x4a1b85['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x508331,_0xf9a010){return function(_0x42c9d6){if(!_0x42c9d6){_0x508331[_0x3453('0x3a')](0x194);}return _0x42c9d6;};}function handleError(_0x1133ab,_0x239dd4){_0x239dd4=_0x239dd4||0x1f4;return function(_0x32ec1f){logger[_0x3453('0x2a')](_0x32ec1f['stack']);if(_0x32ec1f['name']){delete _0x32ec1f[_0x3453('0x3b')];}_0x1133ab[_0x3453('0x2f')](_0x239dd4)[_0x3453('0x3c')](_0x32ec1f);};}exports[_0x3453('0x3d')]=function(_0x44b41a,_0x28f29d){var _0x325a24={},_0x28d71f={},_0x7653d6={'count':0x0,'rows':[]};var _0x49ceb4=_[_0x3453('0x3e')](db[_0x3453('0x3f')][_0x3453('0x40')],function(_0x57fda6){return{'name':_0x57fda6[_0x3453('0x41')],'type':_0x57fda6[_0x3453('0x42')]['key']};});_0x28d71f[_0x3453('0x43')]=_['map'](_0x49ceb4,_0x3453('0x3b'));_0x28d71f[_0x3453('0x44')]=_[_0x3453('0x45')](_0x44b41a[_0x3453('0x44')]);_0x28d71f['filters']=_[_0x3453('0x46')](_0x28d71f[_0x3453('0x43')],_0x28d71f[_0x3453('0x44')]);_0x325a24['attributes']=_[_0x3453('0x46')](_0x28d71f[_0x3453('0x43')],qs[_0x3453('0x47')](_0x44b41a[_0x3453('0x44')]['fields']));_0x325a24['attributes']=_0x325a24['attributes'][_0x3453('0x48')]?_0x325a24[_0x3453('0x49')]:_0x28d71f[_0x3453('0x43')];if(!_0x44b41a[_0x3453('0x44')]['hasOwnProperty'](_0x3453('0x4a'))){_0x325a24['limit']=qs[_0x3453('0x35')](_0x44b41a[_0x3453('0x44')][_0x3453('0x35')]);_0x325a24[_0x3453('0x32')]=qs['offset'](_0x44b41a[_0x3453('0x44')][_0x3453('0x32')]);}_0x325a24['order']=qs[_0x3453('0x4b')](_0x44b41a[_0x3453('0x44')]['sort']);_0x325a24[_0x3453('0x4c')]=qs[_0x3453('0x4d')](_[_0x3453('0x4e')](_0x44b41a[_0x3453('0x44')],_0x28d71f['filters']),_0x49ceb4);if(_0x44b41a['query'][_0x3453('0x4f')]){_0x325a24[_0x3453('0x4c')]=_[_0x3453('0x50')](_0x325a24[_0x3453('0x4c')],{'$or':_[_0x3453('0x3e')](_0x49ceb4,function(_0x50833e){if(_0x50833e[_0x3453('0x42')]!==_0x3453('0x51')){var _0x520187={};_0x520187[_0x50833e['name']]={'$like':'%'+_0x44b41a['query'][_0x3453('0x4f')]+'%'};return _0x520187;}})});}_0x325a24=_['merge']({},_0x325a24,_0x44b41a[_0x3453('0x52')]);var _0x1fe12b={'where':_0x325a24[_0x3453('0x4c')]};return db[_0x3453('0x3f')][_0x3453('0x34')](_0x1fe12b)[_0x3453('0x24')](function(_0x580f48){_0x7653d6[_0x3453('0x34')]=_0x580f48;if(_0x44b41a[_0x3453('0x44')][_0x3453('0x53')]){_0x325a24[_0x3453('0x54')]=[{'all':!![]}];}return db[_0x3453('0x3f')][_0x3453('0x55')](_0x325a24);})[_0x3453('0x24')](function(_0x1efa9d){_0x7653d6[_0x3453('0x56')]=_0x1efa9d;return _0x7653d6;})['then'](respondWithFilteredResult(_0x28f29d,_0x325a24))[_0x3453('0x2e')](handleError(_0x28f29d,null));};exports[_0x3453('0x57')]=function(_0x3b1ce2,_0x2c5f84){var _0x4434b7={'raw':!![],'where':{'id':_0x3b1ce2[_0x3453('0x58')]['id']}},_0x28b421={};_0x28b421['model']=_[_0x3453('0x45')](db['FaxMessage'][_0x3453('0x40')]);_0x28b421[_0x3453('0x44')]=_[_0x3453('0x45')](_0x3b1ce2[_0x3453('0x44')]);_0x28b421[_0x3453('0x4d')]=_[_0x3453('0x46')](_0x28b421[_0x3453('0x43')],_0x28b421[_0x3453('0x44')]);_0x4434b7[_0x3453('0x49')]=_[_0x3453('0x46')](_0x28b421[_0x3453('0x43')],qs[_0x3453('0x47')](_0x3b1ce2[_0x3453('0x44')][_0x3453('0x47')]));_0x4434b7[_0x3453('0x49')]=_0x4434b7[_0x3453('0x49')][_0x3453('0x48')]?_0x4434b7[_0x3453('0x49')]:_0x28b421[_0x3453('0x43')];if(_0x3b1ce2[_0x3453('0x44')][_0x3453('0x53')]){_0x4434b7[_0x3453('0x54')]=[{'all':!![]}];}_0x4434b7=_[_0x3453('0x50')]({},_0x4434b7,_0x3b1ce2[_0x3453('0x52')]);return db[_0x3453('0x3f')]['find'](_0x4434b7)['then'](handleEntityNotFound(_0x2c5f84,null))[_0x3453('0x24')](respondWithResult(_0x2c5f84,null))[_0x3453('0x2e')](handleError(_0x2c5f84,null));};exports[_0x3453('0x59')]=function(_0x5a168f,_0x2f4cdb){if(_0x5a168f[_0x3453('0x5a')]['id']){delete _0x5a168f[_0x3453('0x5a')]['id'];}return db[_0x3453('0x3f')][_0x3453('0x5b')]({'where':{'id':_0x5a168f[_0x3453('0x58')]['id']}})[_0x3453('0x24')](handleEntityNotFound(_0x2f4cdb,null))[_0x3453('0x24')](saveUpdates(_0x5a168f['body'],null))[_0x3453('0x24')](respondWithResult(_0x2f4cdb,null))['catch'](handleError(_0x2f4cdb,null));};exports['destroy']=function(_0xd44282,_0x1262d3){return db[_0x3453('0x3f')][_0x3453('0x5b')]({'where':{'id':_0xd44282[_0x3453('0x58')]['id']}})[_0x3453('0x24')](handleEntityNotFound(_0x1262d3,null))[_0x3453('0x24')](removeEntity(_0x1262d3,null))[_0x3453('0x2e')](handleError(_0x1262d3,null));};exports[_0x3453('0x5c')]=function(_0x9ba0d5,_0x405535){return db['FaxMessage'][_0x3453('0x5c')]()[_0x3453('0x24')](respondWithResult(_0x405535,null))[_0x3453('0x2e')](handleError(_0x405535,null));};var interaction_log=require('../../config/logger')('fax-interactions');exports[_0x3453('0x5d')]=function(_0x22b4df,_0x58ac00,_0x53ce0f){var _0x340e39={'agent':{},'channel':_0x3453('0x5e')};if(_0x22b4df[_0x3453('0x5a')]['id']){delete _0x22b4df[_0x3453('0x5a')]['id'];}_0x22b4df['body']['read']=!![];_0x22b4df[_0x3453('0x5a')]['readAt']=moment()[_0x3453('0x5f')]('YYYY-MM-DD\x20HH:mm:ss');_0x22b4df['body']['UserId']=_0x22b4df[_0x3453('0x5a')][_0x3453('0x60')]||_0x22b4df[_0x3453('0x61')]['id'];_0x340e39['agent']['id']=_0x22b4df[_0x3453('0x5a')][_0x3453('0x60')];return db[_0x3453('0x3f')][_0x3453('0x5b')]({'where':{'id':_0x22b4df[_0x3453('0x58')]['id'],'UserId':null}})[_0x3453('0x24')](handleEntityNotFound(_0x58ac00,null))[_0x3453('0x24')](saveUpdates(_0x22b4df[_0x3453('0x5a')],null))['then'](function(_0x57f9bd){if(_0x57f9bd){_0x340e39['message']=_0x57f9bd[_0x3453('0x62')]({'plain':!![]});return db[_0x3453('0x63')][_0x3453('0x5b')]({'where':{'id':_0x57f9bd[_0x3453('0x64')]}});}return null;})[_0x3453('0x24')](handleEntityNotFound(_0x58ac00,null))[_0x3453('0x24')](function(_0x1247bc){if(_0x1247bc){return _0x1247bc[_0x3453('0x59')]({'UserId':_0x22b4df[_0x3453('0x5a')][_0x3453('0x60')],'read1stAt':_[_0x3453('0x65')](_0x1247bc['read1stAt'])?moment()['format'](_0x3453('0x66')):undefined});}return null;})[_0x3453('0x24')](function(_0x280c3a){if(_0x280c3a){_0x340e39['interaction']=_0x280c3a[_0x3453('0x62')]({'plain':!![]});interaction_log[_0x3453('0x25')](_0x3453('0x67'),_0x22b4df[_0x3453('0x61')]['id'],_0x22b4df['user']['name'],_0x22b4df[_0x3453('0x61')]['role'],_0x340e39[_0x3453('0x68')]['id'],_0x22b4df[_0x3453('0x5a')]?JSON[_0x3453('0x29')](_0x22b4df[_0x3453('0x5a')]):_0x3453('0x69'));return respondWithRpcPromise(_0x3453('0x6a'),_0x3453('0x6b'),_0x340e39);}return null;})[_0x3453('0x24')](function(_0x92da45){var _0x485f52=_0x3453('0x6c')+_0x92da45[_0x3453('0x2c')][_0x3453('0x6d')];return db['sequelize'][_0x3453('0x44')](_0x485f52,{'type':db['Sequelize']['QueryTypes'][_0x3453('0x6e')],'raw':!![]})['then'](function(_0x61941f){return _0x61941f;});})[_0x3453('0x24')](function(_0x3f2663){if(_0x3f2663){_0x340e39[_0x3453('0x2c')][_0x3453('0x6f')]=_0x3f2663[0x0];if(!_0x22b4df[_0x3453('0x5a')][_0x3453('0x60')])return;return db['User'][_0x3453('0x5b')]({'where':{'id':_0x22b4df[_0x3453('0x5a')][_0x3453('0x60')],'role':'agent'},'attributes':['id','name',_0x3453('0x70'),_0x3453('0x71'),'internal'],'raw':!![]});}return null;})[_0x3453('0x24')](function(_0x2d6181){if(!_0x2d6181)return null;_0x340e39[_0x3453('0x2c')]['agent']=_0x2d6181;return _0x340e39;})[_0x3453('0x24')](function(_0x19b654){if(_0x19b654){if(_0x22b4df['body'][_0x3453('0x72')]){_0x340e39['message'][_0x3453('0x73')]=util['format'](_0x3453('0x74'),_0x22b4df[_0x3453('0x61')][_0x3453('0x3b')]);_0x340e39[_0x3453('0x2c')][_0x3453('0x75')]=_0x340e39[_0x3453('0x75')];_0x340e39[_0x3453('0x2c')]['motionChannel']=_0x340e39[_0x3453('0x75')];_0x340e39['message'][_0x3453('0x76')]=_0x3453('0x5d');return respondWithRpcPromise(_0x3453('0x77'),_0x3453('0x77'),{'event':_0x3453('0x78'),'message':_0x340e39[_0x3453('0x2c')]},client9002)['then'](function(){return _0x340e39;});}return _0x340e39;}return null;})[_0x3453('0x24')](respondWithResult(_0x58ac00,null))[_0x3453('0x2e')](handleError(_0x58ac00,null));};var interaction_log=require(_0x3453('0x16'))(_0x3453('0x79'));exports['reject']=function(_0x36e9dc,_0x4c11e3,_0x4f5680){var _0x1e501d={'agent':{},'channel':'fax'};if(_0x36e9dc[_0x3453('0x5a')]['id']){delete _0x36e9dc[_0x3453('0x5a')]['id'];}_0x36e9dc['body']['UserId']=_0x36e9dc['body'][_0x3453('0x60')]||_0x36e9dc[_0x3453('0x61')]['id'];_0x1e501d['agent']['id']=_0x36e9dc[_0x3453('0x5a')][_0x3453('0x60')];return db['FaxMessage'][_0x3453('0x5b')]({'where':{'id':_0x36e9dc[_0x3453('0x58')]['id'],'UserId':null}})[_0x3453('0x24')](handleEntityNotFound(_0x4c11e3,null))['then'](function(_0x328c18){if(_0x328c18){_0x1e501d[_0x3453('0x2c')]=_0x328c18[_0x3453('0x62')]({'plain':!![]});return db[_0x3453('0x63')][_0x3453('0x5b')]({'where':{'id':_0x328c18['FaxInteractionId']}});}return null;})[_0x3453('0x24')](handleEntityNotFound(_0x4c11e3,null))[_0x3453('0x24')](function(_0x305129){if(_0x305129){_0x1e501d[_0x3453('0x68')]=_0x305129[_0x3453('0x62')]({'plain':!![]});interaction_log[_0x3453('0x25')](_0x3453('0x7a'),_0x36e9dc[_0x3453('0x61')]['id'],_0x36e9dc[_0x3453('0x61')][_0x3453('0x3b')],_0x36e9dc['user'][_0x3453('0x7b')],_0x1e501d[_0x3453('0x68')]['id'],_0x36e9dc[_0x3453('0x5a')]?JSON[_0x3453('0x29')](_0x36e9dc[_0x3453('0x5a')]):_0x3453('0x69'));return respondWithRpcPromise(_0x3453('0x7c'),_0x3453('0x7d'),_0x1e501d);}return null;})[_0x3453('0x24')](function(_0x17a306){var _0x5a2f82=_0x3453('0x6c')+_0x17a306[_0x3453('0x2c')][_0x3453('0x6d')];return db[_0x3453('0x7e')][_0x3453('0x44')](_0x5a2f82,{'type':db['Sequelize'][_0x3453('0x7f')][_0x3453('0x6e')],'raw':!![]})[_0x3453('0x24')](function(_0x1cf59e){return _0x1cf59e;});})[_0x3453('0x24')](function(_0x275df4){if(_0x275df4){_0x1e501d[_0x3453('0x2c')][_0x3453('0x6f')]=_0x275df4[0x0];if(!_0x36e9dc['body'][_0x3453('0x60')])return;return db['User'][_0x3453('0x5b')]({'where':{'id':_0x36e9dc['body'][_0x3453('0x60')],'role':'agent'},'attributes':['id',_0x3453('0x3b'),_0x3453('0x70'),_0x3453('0x71'),'internal'],'raw':!![]});}return null;})[_0x3453('0x24')](function(_0x1ada4c){if(!_0x1ada4c)return null;_0x1e501d['message'][_0x3453('0x80')]=_0x1ada4c;return _0x1e501d;})[_0x3453('0x24')](function(_0x40fbf1){if(_0x40fbf1){_0x40fbf1['message'][_0x3453('0x73')]=util[_0x3453('0x5f')]('SIP/%s',_0x36e9dc[_0x3453('0x61')][_0x3453('0x3b')]);_0x40fbf1[_0x3453('0x2c')][_0x3453('0x75')]=_0x1e501d[_0x3453('0x75')];_0x40fbf1[_0x3453('0x2c')][_0x3453('0x81')]=_0x1e501d[_0x3453('0x75')];_0x40fbf1['message']['event']=_0x3453('0x38');respondWithRpcPromise(_0x3453('0x77'),_0x3453('0x77'),{'event':'rejectmessage','message':_0x40fbf1[_0x3453('0x2c')]},client9002);return _0x1e501d;}return null;})[_0x3453('0x24')](respondWithResult(_0x4c11e3,null))[_0x3453('0x2e')](handleError(_0x4c11e3,null));};exports['create']=function(_0x24fdb7,_0x52ac13){var _0x4c9d80;return db[_0x3453('0x3f')]['create'](_0x24fdb7['body'],{})[_0x3453('0x24')](function(_0x5b9420){_0x4c9d80=_0x5b9420;return db[_0x3453('0x82')][_0x3453('0x83')]({'where':{'id':_0x4c9d80[_0x3453('0x6d')]}});})[_0x3453('0x24')](function(_0x3cb5f3){if(_[_0x3453('0x65')](_0x3cb5f3)){return;}else{_0x4c9d80[_0x3453('0x5e')]=_0x3cb5f3['fax'];return db[_0x3453('0x84')]['findOne']({'where':{'id':_0x4c9d80[_0x3453('0x85')]}});}})[_0x3453('0x24')](function(_0x460dba){return respondWithRpcPromise(_0x3453('0x86'),_0x3453('0x86'),{'FaxAccountId':_['isNil'](_0x24fdb7[_0x3453('0x5a')])?undefined:_0x24fdb7['body'][_0x3453('0x87')],'path':_[_0x3453('0x65')](_0x460dba)?undefined:util[_0x3453('0x5f')](_0x3453('0x88'),_0x460dba[_0x3453('0x89')]),'fax':_['isNil'](_0x4c9d80[_0x3453('0x5e')])?undefined:_0x4c9d80['fax'],'AttachmentId':_0x4c9d80['AttachmentId']},client9002);})['then'](respondWithResult(_0x52ac13,0xc9))[_0x3453('0x2e')](handleError(_0x52ac13,null));};exports[_0x3453('0x8a')]=function(_0x5b32be,_0x3ed922){var _0x45ab90=path[_0x3453('0x8b')](config[_0x3453('0x8c')],_0x3453('0x8d'),'files',_0x3453('0x8e'));return db[_0x3453('0x3f')][_0x3453('0x5b')]({'where':{'id':_0x5b32be[_0x3453('0x58')]['id']},'include':[{'model':db['Attachment'],'as':_0x3453('0x84')}]})['then'](handleEntityNotFound(_0x3ed922,null))[_0x3453('0x24')](function(_0x52fb57){if(_0x52fb57){return _0x3ed922[_0x3453('0x8a')](path['join'](_0x45ab90,_0x52fb57['Attachment'][_0x3453('0x89')]));}})[_0x3453('0x2e')](handleError(_0x3ed922,null));};
\ No newline at end of file
+var _0x218e=['channel','event','EventManager','acceptmessage','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','QueryTypes','rejectmessage','create','Attachment','findOne','SendFax','basename','AttachmentId','download','join','root','server','files','attachments','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','register','jayson/promise','client','http','request','info','FaxMessage,\x20%s,\x20%s','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','update','destroy','then','name','send','index','FaxMessage','rawAttributes','fieldName','type','model','map','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','keys','find','body','describe','fax-interactions','accept','fax','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','FaxInteraction','FaxInteractionId','isNil','read1stAt','format','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','SELECT','contact','User','email','internal','agent','manual','interface','SIP/%s'];(function(_0x467070,_0x393133){var _0x5a5575=function(_0x5881ff){while(--_0x5881ff){_0x467070['push'](_0x467070['shift']());}};_0x5a5575(++_0x393133);}(_0x218e,0x1bc));var _0xe218=function(_0xe75fc8,_0x383a28){_0xe75fc8=_0xe75fc8-0x0;var _0x4b73af=_0x218e[_0xe75fc8];return _0x4b73af;};'use strict';var emlformat=require(_0xe218('0x0'));var rimraf=require(_0xe218('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe218('0x2'));var rp=require(_0xe218('0x3'));var moment=require('moment');var BPromise=require(_0xe218('0x4'));var Mustache=require(_0xe218('0x5'));var util=require('util');var path=require(_0xe218('0x6'));var sox=require(_0xe218('0x7'));var csv=require(_0xe218('0x8'));var ejs=require(_0xe218('0x9'));var fs=require('fs');var fs_extra=require(_0xe218('0xa'));var _=require(_0xe218('0xb'));var squel=require(_0xe218('0xc'));var crypto=require('crypto');var jsforce=require(_0xe218('0xd'));var deskjs=require(_0xe218('0xe'));var toCsv=require(_0xe218('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xe218('0xf'));var authService=require(_0xe218('0x10'));var qs=require(_0xe218('0x11'));var as=require(_0xe218('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe218('0x13'))('api');var utils=require(_0xe218('0x14'));var config=require(_0xe218('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xe218('0x16'))['db'];config[_0xe218('0x17')]=_[_0xe218('0x18')](config[_0xe218('0x17')],{'host':_0xe218('0x19'),'port':0x18eb});var socket=require(_0xe218('0x1a'))(new Redis(config[_0xe218('0x17')]));require(_0xe218('0x1b'))[_0xe218('0x1c')](socket);var jayson=require(_0xe218('0x1d'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0xe218('0x1e')][_0xe218('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x21a617,_0x5682f9,_0x4d1b09,_0x2660ff){return new BPromise(function(_0x294c9d,_0x1eb165){var _0x4eccfa=_0x2660ff||client;return _0x4eccfa[_0xe218('0x20')](_0x21a617,_0x4d1b09)['then'](function(_0x1e4a69){logger[_0xe218('0x21')](_0xe218('0x22'),_0x5682f9,'request\x20sent');logger['debug'](_0xe218('0x23'),_0x5682f9,'request\x20sent',JSON[_0xe218('0x24')](_0x1e4a69));if(_0x1e4a69[_0xe218('0x25')]){if(_0x1e4a69[_0xe218('0x25')]['code']===0x1f4){logger['error'](_0xe218('0x22'),_0x5682f9,_0x1e4a69[_0xe218('0x25')]['message']);return _0x1eb165(_0x1e4a69[_0xe218('0x25')][_0xe218('0x26')]);}logger[_0xe218('0x25')](_0xe218('0x22'),_0x5682f9,_0x1e4a69[_0xe218('0x25')][_0xe218('0x26')]);return _0x294c9d(_0x1e4a69[_0xe218('0x25')]['message']);}else{logger['info'](_0xe218('0x22'),_0x5682f9,_0xe218('0x27'));_0x294c9d(_0x1e4a69[_0xe218('0x28')][_0xe218('0x26')]);}})['catch'](function(_0x2bff3c){logger[_0xe218('0x25')](_0xe218('0x22'),_0x5682f9,_0x2bff3c);_0x1eb165(_0x2bff3c);});});}function respondWithStatusCode(_0x1ddf28,_0x188682){_0x188682=_0x188682||0xcc;return function(_0x4d4024){if(_0x4d4024){return _0x1ddf28[_0xe218('0x29')](_0x188682);}return _0x1ddf28[_0xe218('0x2a')](_0x188682)[_0xe218('0x2b')]();};}function respondWithResult(_0x35d0b6,_0x1eb45d){_0x1eb45d=_0x1eb45d||0xc8;return function(_0x48cdb8){if(_0x48cdb8){return _0x35d0b6[_0xe218('0x2a')](_0x1eb45d)[_0xe218('0x2c')](_0x48cdb8);}};}function respondWithFilteredResult(_0x2f080d,_0x3a4128){return function(_0x170deb){if(_0x170deb){var _0x3e183c=typeof _0x3a4128[_0xe218('0x2d')]===_0xe218('0x2e')&&typeof _0x3a4128[_0xe218('0x2f')]==='undefined';var _0x20550c=_0x170deb[_0xe218('0x30')];var _0x4471b7=_0x3e183c?0x0:_0x3a4128[_0xe218('0x2d')];var _0x29c8c6=_0x3e183c?_0x170deb[_0xe218('0x30')]:_0x3a4128['offset']+_0x3a4128['limit'];var _0x25950f;if(_0x29c8c6>=_0x20550c){_0x29c8c6=_0x20550c;_0x25950f=0xc8;}else{_0x25950f=0xce;}_0x2f080d[_0xe218('0x2a')](_0x25950f);return _0x2f080d[_0xe218('0x31')]('Content-Range',_0x4471b7+'-'+_0x29c8c6+'/'+_0x20550c)[_0xe218('0x2c')](_0x170deb);}return null;};}function patchUpdates(_0x2c7031){return function(_0x39e3ff){try{jsonpatch['apply'](_0x39e3ff,_0x2c7031,!![]);}catch(_0x3b4447){return BPromise[_0xe218('0x32')](_0x3b4447);}return _0x39e3ff[_0xe218('0x33')]();};}function saveUpdates(_0x4a073b,_0x59ca2f){return function(_0x5537f9){if(_0x5537f9){return _0x5537f9[_0xe218('0x34')](_0x4a073b)['then'](function(_0x26d5c1){return _0x26d5c1;});}return null;};}function removeEntity(_0x2dbd48,_0x23f3c7){return function(_0x3a4f55){if(_0x3a4f55){return _0x3a4f55[_0xe218('0x35')]()[_0xe218('0x36')](function(){_0x2dbd48[_0xe218('0x2a')](0xcc)[_0xe218('0x2b')]();});}};}function handleEntityNotFound(_0x2c4704,_0x4449ae){return function(_0x179209){if(!_0x179209){_0x2c4704[_0xe218('0x29')](0x194);}return _0x179209;};}function handleError(_0x587ecd,_0x51d6f3){_0x51d6f3=_0x51d6f3||0x1f4;return function(_0x4669aa){logger[_0xe218('0x25')](_0x4669aa['stack']);if(_0x4669aa['name']){delete _0x4669aa[_0xe218('0x37')];}_0x587ecd[_0xe218('0x2a')](_0x51d6f3)[_0xe218('0x38')](_0x4669aa);};}exports[_0xe218('0x39')]=function(_0x458c09,_0x524a10){var _0x32c00b={},_0x594c8d={},_0x4afb6f={'count':0x0,'rows':[]};var _0x2986d8=_['map'](db[_0xe218('0x3a')][_0xe218('0x3b')],function(_0x1fc9d1){return{'name':_0x1fc9d1[_0xe218('0x3c')],'type':_0x1fc9d1[_0xe218('0x3d')]['key']};});_0x594c8d[_0xe218('0x3e')]=_[_0xe218('0x3f')](_0x2986d8,_0xe218('0x37'));_0x594c8d[_0xe218('0x40')]=_['keys'](_0x458c09[_0xe218('0x40')]);_0x594c8d['filters']=_[_0xe218('0x41')](_0x594c8d['model'],_0x594c8d[_0xe218('0x40')]);_0x32c00b[_0xe218('0x42')]=_[_0xe218('0x41')](_0x594c8d[_0xe218('0x3e')],qs[_0xe218('0x43')](_0x458c09[_0xe218('0x40')][_0xe218('0x43')]));_0x32c00b[_0xe218('0x42')]=_0x32c00b['attributes'][_0xe218('0x44')]?_0x32c00b[_0xe218('0x42')]:_0x594c8d[_0xe218('0x3e')];if(!_0x458c09[_0xe218('0x40')][_0xe218('0x45')](_0xe218('0x46'))){_0x32c00b[_0xe218('0x2f')]=qs[_0xe218('0x2f')](_0x458c09[_0xe218('0x40')][_0xe218('0x2f')]);_0x32c00b[_0xe218('0x2d')]=qs[_0xe218('0x2d')](_0x458c09[_0xe218('0x40')][_0xe218('0x2d')]);}_0x32c00b[_0xe218('0x47')]=qs[_0xe218('0x48')](_0x458c09['query']['sort']);_0x32c00b['where']=qs[_0xe218('0x49')](_[_0xe218('0x4a')](_0x458c09[_0xe218('0x40')],_0x594c8d[_0xe218('0x49')]),_0x2986d8);if(_0x458c09[_0xe218('0x40')][_0xe218('0x4b')]){_0x32c00b[_0xe218('0x4c')]=_[_0xe218('0x4d')](_0x32c00b[_0xe218('0x4c')],{'$or':_['map'](_0x2986d8,function(_0x1a67de){if(_0x1a67de[_0xe218('0x3d')]!==_0xe218('0x4e')){var _0x13913e={};_0x13913e[_0x1a67de[_0xe218('0x37')]]={'$like':'%'+_0x458c09['query'][_0xe218('0x4b')]+'%'};return _0x13913e;}})});}_0x32c00b=_[_0xe218('0x4d')]({},_0x32c00b,_0x458c09[_0xe218('0x4f')]);var _0x5bc1e3={'where':_0x32c00b['where']};return db['FaxMessage'][_0xe218('0x30')](_0x5bc1e3)[_0xe218('0x36')](function(_0x46878b){_0x4afb6f[_0xe218('0x30')]=_0x46878b;if(_0x458c09[_0xe218('0x40')][_0xe218('0x50')]){_0x32c00b[_0xe218('0x51')]=[{'all':!![]}];}return db[_0xe218('0x3a')]['findAll'](_0x32c00b);})[_0xe218('0x36')](function(_0x392a59){_0x4afb6f[_0xe218('0x52')]=_0x392a59;return _0x4afb6f;})['then'](respondWithFilteredResult(_0x524a10,_0x32c00b))[_0xe218('0x53')](handleError(_0x524a10,null));};exports[_0xe218('0x54')]=function(_0x59a224,_0x371783){var _0x10452a={'raw':!![],'where':{'id':_0x59a224[_0xe218('0x55')]['id']}},_0x128a85={};_0x128a85[_0xe218('0x3e')]=_[_0xe218('0x56')](db[_0xe218('0x3a')][_0xe218('0x3b')]);_0x128a85[_0xe218('0x40')]=_[_0xe218('0x56')](_0x59a224['query']);_0x128a85[_0xe218('0x49')]=_[_0xe218('0x41')](_0x128a85[_0xe218('0x3e')],_0x128a85[_0xe218('0x40')]);_0x10452a[_0xe218('0x42')]=_['intersection'](_0x128a85['model'],qs[_0xe218('0x43')](_0x59a224['query']['fields']));_0x10452a['attributes']=_0x10452a[_0xe218('0x42')][_0xe218('0x44')]?_0x10452a[_0xe218('0x42')]:_0x128a85[_0xe218('0x3e')];if(_0x59a224[_0xe218('0x40')]['includeAll']){_0x10452a['include']=[{'all':!![]}];}_0x10452a=_['merge']({},_0x10452a,_0x59a224[_0xe218('0x4f')]);return db[_0xe218('0x3a')][_0xe218('0x57')](_0x10452a)[_0xe218('0x36')](handleEntityNotFound(_0x371783,null))[_0xe218('0x36')](respondWithResult(_0x371783,null))['catch'](handleError(_0x371783,null));};exports[_0xe218('0x34')]=function(_0x16df5a,_0x9b49f9){if(_0x16df5a[_0xe218('0x58')]['id']){delete _0x16df5a[_0xe218('0x58')]['id'];}return db[_0xe218('0x3a')][_0xe218('0x57')]({'where':{'id':_0x16df5a['params']['id']}})[_0xe218('0x36')](handleEntityNotFound(_0x9b49f9,null))['then'](saveUpdates(_0x16df5a[_0xe218('0x58')],null))[_0xe218('0x36')](respondWithResult(_0x9b49f9,null))[_0xe218('0x53')](handleError(_0x9b49f9,null));};exports['destroy']=function(_0x37342b,_0x5bb634){return db[_0xe218('0x3a')]['find']({'where':{'id':_0x37342b[_0xe218('0x55')]['id']}})[_0xe218('0x36')](handleEntityNotFound(_0x5bb634,null))['then'](removeEntity(_0x5bb634,null))[_0xe218('0x53')](handleError(_0x5bb634,null));};exports['describe']=function(_0x2d198f,_0x36830a){return db[_0xe218('0x3a')][_0xe218('0x59')]()['then'](respondWithResult(_0x36830a,null))[_0xe218('0x53')](handleError(_0x36830a,null));};var interaction_log=require(_0xe218('0x13'))(_0xe218('0x5a'));exports[_0xe218('0x5b')]=function(_0x1bd952,_0x50d822,_0x9a1c0){var _0x5effe3={'agent':{},'channel':_0xe218('0x5c')};if(_0x1bd952[_0xe218('0x58')]['id']){delete _0x1bd952['body']['id'];}_0x1bd952['body'][_0xe218('0x5d')]=!![];_0x1bd952[_0xe218('0x58')][_0xe218('0x5e')]=moment()['format'](_0xe218('0x5f'));_0x1bd952['body'][_0xe218('0x60')]=_0x1bd952[_0xe218('0x58')]['UserId']||_0x1bd952[_0xe218('0x61')]['id'];_0x5effe3['agent']['id']=_0x1bd952[_0xe218('0x58')][_0xe218('0x60')];return db[_0xe218('0x3a')]['find']({'where':{'id':_0x1bd952[_0xe218('0x55')]['id'],'UserId':null}})[_0xe218('0x36')](handleEntityNotFound(_0x50d822,null))[_0xe218('0x36')](saveUpdates(_0x1bd952[_0xe218('0x58')],null))[_0xe218('0x36')](function(_0x1cf220){if(_0x1cf220){_0x5effe3[_0xe218('0x26')]=_0x1cf220[_0xe218('0x62')]({'plain':!![]});return db[_0xe218('0x63')]['find']({'where':{'id':_0x1cf220[_0xe218('0x64')]}});}return null;})['then'](handleEntityNotFound(_0x50d822,null))['then'](function(_0x441fb6){if(_0x441fb6){return _0x441fb6[_0xe218('0x34')]({'UserId':_0x1bd952[_0xe218('0x58')][_0xe218('0x60')],'read1stAt':_[_0xe218('0x65')](_0x441fb6[_0xe218('0x66')])?moment()[_0xe218('0x67')](_0xe218('0x5f')):undefined});}return null;})[_0xe218('0x36')](function(_0x45d400){if(_0x45d400){_0x5effe3[_0xe218('0x68')]=_0x45d400['get']({'plain':!![]});interaction_log['info'](_0xe218('0x69'),_0x1bd952[_0xe218('0x61')]['id'],_0x1bd952[_0xe218('0x61')][_0xe218('0x37')],_0x1bd952[_0xe218('0x61')]['role'],_0x5effe3[_0xe218('0x68')]['id'],_0x1bd952[_0xe218('0x58')]?JSON[_0xe218('0x24')](_0x1bd952[_0xe218('0x58')]):_0xe218('0x6a'));return respondWithRpcPromise('AcceptMessage',_0xe218('0x6b'),_0x5effe3);}return null;})[_0xe218('0x36')](function(_0x3834f4){var _0x3be277=_0xe218('0x6c')+_0x3834f4[_0xe218('0x26')][_0xe218('0x6d')];return db[_0xe218('0x6e')][_0xe218('0x40')](_0x3be277,{'type':db['Sequelize']['QueryTypes'][_0xe218('0x6f')],'raw':!![]})['then'](function(_0x27dedc){return _0x27dedc;});})[_0xe218('0x36')](function(_0x292faa){if(_0x292faa){_0x5effe3[_0xe218('0x26')][_0xe218('0x70')]=_0x292faa[0x0];if(!_0x1bd952[_0xe218('0x58')][_0xe218('0x60')])return;return db[_0xe218('0x71')]['find']({'where':{'id':_0x1bd952['body'][_0xe218('0x60')],'role':'agent'},'attributes':['id',_0xe218('0x37'),'fullname',_0xe218('0x72'),_0xe218('0x73')],'raw':!![]});}return null;})[_0xe218('0x36')](function(_0x2ed60a){if(!_0x2ed60a)return null;_0x5effe3[_0xe218('0x26')][_0xe218('0x74')]=_0x2ed60a;return _0x5effe3;})[_0xe218('0x36')](function(_0x59c7ae){if(_0x59c7ae){if(_0x1bd952[_0xe218('0x58')][_0xe218('0x75')]){_0x5effe3[_0xe218('0x26')][_0xe218('0x76')]=util[_0xe218('0x67')](_0xe218('0x77'),_0x1bd952[_0xe218('0x61')]['name']);_0x5effe3['message'][_0xe218('0x78')]=_0x5effe3[_0xe218('0x78')];_0x5effe3[_0xe218('0x26')][_0xe218('0x79')]=_0xe218('0x5b');return respondWithRpcPromise(_0xe218('0x7a'),_0xe218('0x7a'),{'event':_0xe218('0x7b'),'message':_0x5effe3[_0xe218('0x26')]},client9002)['then'](function(){return _0x5effe3;});}return _0x5effe3;}return null;})[_0xe218('0x36')](respondWithResult(_0x50d822,null))['catch'](handleError(_0x50d822,null));};var interaction_log=require(_0xe218('0x13'))(_0xe218('0x5a'));exports['reject']=function(_0x28b632,_0x125f98,_0x1efb83){var _0x2992f6={'agent':{},'channel':'fax'};if(_0x28b632[_0xe218('0x58')]['id']){delete _0x28b632[_0xe218('0x58')]['id'];}_0x28b632[_0xe218('0x58')]['UserId']=_0x28b632[_0xe218('0x58')][_0xe218('0x60')]||_0x28b632['user']['id'];_0x2992f6[_0xe218('0x74')]['id']=_0x28b632[_0xe218('0x58')]['UserId'];return db[_0xe218('0x3a')]['find']({'where':{'id':_0x28b632[_0xe218('0x55')]['id'],'UserId':null}})[_0xe218('0x36')](handleEntityNotFound(_0x125f98,null))[_0xe218('0x36')](function(_0x27ff3e){if(_0x27ff3e){_0x2992f6['message']=_0x27ff3e[_0xe218('0x62')]({'plain':!![]});return db['FaxInteraction'][_0xe218('0x57')]({'where':{'id':_0x27ff3e[_0xe218('0x64')]}});}return null;})['then'](handleEntityNotFound(_0x125f98,null))[_0xe218('0x36')](function(_0x1fb099){if(_0x1fb099){_0x2992f6[_0xe218('0x68')]=_0x1fb099['get']({'plain':!![]});interaction_log[_0xe218('0x21')](_0xe218('0x7c'),_0x28b632[_0xe218('0x61')]['id'],_0x28b632[_0xe218('0x61')][_0xe218('0x37')],_0x28b632[_0xe218('0x61')][_0xe218('0x7d')],_0x2992f6['interaction']['id'],_0x28b632[_0xe218('0x58')]?JSON['stringify'](_0x28b632[_0xe218('0x58')]):_0xe218('0x6a'));return respondWithRpcPromise(_0xe218('0x7e'),'rejectMessage',_0x2992f6);}return null;})[_0xe218('0x36')](function(_0x407620){var _0x33e172=_0xe218('0x6c')+_0x407620[_0xe218('0x26')][_0xe218('0x6d')];return db[_0xe218('0x6e')]['query'](_0x33e172,{'type':db['Sequelize'][_0xe218('0x7f')][_0xe218('0x6f')],'raw':!![]})[_0xe218('0x36')](function(_0x2082a9){return _0x2082a9;});})[_0xe218('0x36')](function(_0x1355fa){if(_0x1355fa){_0x2992f6[_0xe218('0x26')][_0xe218('0x70')]=_0x1355fa[0x0];if(!_0x28b632['body'][_0xe218('0x60')])return;return db[_0xe218('0x71')]['find']({'where':{'id':_0x28b632['body'][_0xe218('0x60')],'role':'agent'},'attributes':['id',_0xe218('0x37'),'fullname','email','internal'],'raw':!![]});}return null;})[_0xe218('0x36')](function(_0x21788b){if(!_0x21788b)return null;_0x2992f6[_0xe218('0x26')]['agent']=_0x21788b;return _0x2992f6;})[_0xe218('0x36')](function(_0x5f31f9){if(_0x5f31f9){_0x5f31f9[_0xe218('0x26')]['interface']=util[_0xe218('0x67')]('SIP/%s',_0x28b632[_0xe218('0x61')]['name']);_0x5f31f9[_0xe218('0x26')][_0xe218('0x78')]=_0x2992f6[_0xe218('0x78')];_0x5f31f9[_0xe218('0x26')][_0xe218('0x79')]=_0xe218('0x32');respondWithRpcPromise(_0xe218('0x7a'),_0xe218('0x7a'),{'event':_0xe218('0x80'),'message':_0x5f31f9['message']},client9002);return _0x2992f6;}return null;})[_0xe218('0x36')](respondWithResult(_0x125f98,null))[_0xe218('0x53')](handleError(_0x125f98,null));};exports[_0xe218('0x81')]=function(_0x49e95b,_0x39f840){var _0x1bb6f0;return db['FaxMessage'][_0xe218('0x81')](_0x49e95b[_0xe218('0x58')],{})[_0xe218('0x36')](function(_0x4403f9){_0x1bb6f0=_0x4403f9;return db['CmContact']['findOne']({'where':{'id':_0x1bb6f0[_0xe218('0x6d')]}});})[_0xe218('0x36')](function(_0x5212af){if(_[_0xe218('0x65')](_0x5212af)){return;}else{_0x1bb6f0['fax']=_0x5212af[_0xe218('0x5c')];return db[_0xe218('0x82')][_0xe218('0x83')]({'where':{'id':_0x1bb6f0['AttachmentId']}});}})[_0xe218('0x36')](function(_0x32e69d){return respondWithRpcPromise(_0xe218('0x84'),_0xe218('0x84'),{'FaxAccountId':_[_0xe218('0x65')](_0x49e95b[_0xe218('0x58')])?undefined:_0x49e95b['body']['FaxAccountId'],'path':_['isNil'](_0x32e69d)?undefined:util[_0xe218('0x67')]('/var/opt/motion2/server/files/attachments/%s',_0x32e69d[_0xe218('0x85')]),'fax':_[_0xe218('0x65')](_0x1bb6f0['fax'])?undefined:_0x1bb6f0['fax'],'AttachmentId':_0x1bb6f0[_0xe218('0x86')]},client9002);})[_0xe218('0x36')](respondWithResult(_0x39f840,0xc9))[_0xe218('0x53')](handleError(_0x39f840,null));};exports[_0xe218('0x87')]=function(_0x1055bf,_0x1a5b51){var _0x7da97f=path[_0xe218('0x88')](config[_0xe218('0x89')],_0xe218('0x8a'),_0xe218('0x8b'),_0xe218('0x8c'));return db[_0xe218('0x3a')]['find']({'where':{'id':_0x1055bf[_0xe218('0x55')]['id']},'include':[{'model':db[_0xe218('0x82')],'as':_0xe218('0x82')}]})[_0xe218('0x36')](handleEntityNotFound(_0x1a5b51,null))['then'](function(_0x58ddff){if(_0x58ddff){return _0x1a5b51['download'](path[_0xe218('0x88')](_0x7da97f,_0x58ddff[_0xe218('0x82')][_0xe218('0x85')]));}})[_0xe218('0x53')](handleError(_0x1a5b51,null));};
\ No newline at end of file
index b1fe358..12a612d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e88=['../../mysqldb','FaxMessage','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events'];(function(_0x4bc428,_0xf56dd9){var _0x3ca37f=function(_0x39db20){while(--_0x39db20){_0x4bc428['push'](_0x4bc428['shift']());}};_0x3ca37f(++_0xf56dd9);}(_0x2e88,0x95));var _0x82e8=function(_0x4a4922,_0x82cb8f){_0x4a4922=_0x4a4922-0x0;var _0x55a8c6=_0x2e88[_0x4a4922];return _0x55a8c6;};'use strict';var EventEmitter=require(_0x82e8('0x0'));var FaxMessage=require(_0x82e8('0x1'))['db'][_0x82e8('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x82e8('0x3')](0x0);var events={'afterCreate':_0x82e8('0x4'),'afterUpdate':_0x82e8('0x5'),'afterDestroy':'remove'};function emitEvent(_0x40c9c5){return function(_0x1d7415,_0x576435,_0x3aed37){FaxMessageEvents[_0x82e8('0x6')](_0x40c9c5+':'+_0x1d7415['id'],_0x1d7415);FaxMessageEvents['emit'](_0x40c9c5,_0x1d7415);_0x3aed37(null);};}for(var e in events){if(events[_0x82e8('0x7')](e)){var event=events[e];FaxMessage[_0x82e8('0x8')](e,emitEvent(event));}}module[_0x82e8('0x9')]=FaxMessageEvents;
\ No newline at end of file
+var _0xa93a=['update','emit','hasOwnProperty','exports','FaxMessage'];(function(_0x1b4a4a,_0x17e1be){var _0x467676=function(_0x4aa264){while(--_0x4aa264){_0x1b4a4a['push'](_0x1b4a4a['shift']());}};_0x467676(++_0x17e1be);}(_0xa93a,0xb8));var _0xaa93=function(_0x4da850,_0x9db3b6){_0x4da850=_0x4da850-0x0;var _0x57d1da=_0xa93a[_0x4da850];return _0x57d1da;};'use strict';var EventEmitter=require('events');var FaxMessage=require('../../mysqldb')['db'][_0xaa93('0x0')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xaa93('0x1'),'afterDestroy':'remove'};function emitEvent(_0xdb8133){return function(_0x4deab1,_0x242aa2,_0x181549){FaxMessageEvents[_0xaa93('0x2')](_0xdb8133+':'+_0x4deab1['id'],_0x4deab1);FaxMessageEvents[_0xaa93('0x2')](_0xdb8133,_0x4deab1);_0x181549(null);};}for(var e in events){if(events[_0xaa93('0x3')](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module[_0xaa93('0x4')]=FaxMessageEvents;
\ No newline at end of file
index 01c0dc8..ff938da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcb4=['get','direction','toLowerCase','secret','isNil','FaxInteraction','findOne','FaxInteractionId','then','update','createdAt','catch','error','utf8mb4','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxMessage.attributes','exports','define','FaxMessage','fax_messages','FULLTEXT','models'];(function(_0x255d5b,_0x4f6f35){var _0x3e141a=function(_0x249ee2){while(--_0x249ee2){_0x255d5b['push'](_0x255d5b['shift']());}};_0x3e141a(++_0x4f6f35);}(_0xdcb4,0xc2));var _0x4dcb=function(_0x3bda19,_0x2ecea3){_0x3bda19=_0x3bda19-0x0;var _0x477e44=_0xdcb4[_0x3bda19];return _0x477e44;};'use strict';var _=require(_0x4dcb('0x0'));var util=require(_0x4dcb('0x1'));var logger=require(_0x4dcb('0x2'))('api');var moment=require(_0x4dcb('0x3'));var BPromise=require(_0x4dcb('0x4'));var rp=require(_0x4dcb('0x5'));var fs=require('fs');var path=require(_0x4dcb('0x6'));var rimraf=require(_0x4dcb('0x7'));var config=require(_0x4dcb('0x8'));var attributes=require(_0x4dcb('0x9'));module[_0x4dcb('0xa')]=function(_0x1c01a5,_0x49515c){return _0x1c01a5[_0x4dcb('0xb')](_0x4dcb('0xc'),attributes,{'tableName':_0x4dcb('0xd'),'paranoid':![],'indexes':[{'name':'fti_fax_messages','fields':['body'],'type':_0x4dcb('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x456168,_0x10aac2,_0x53b83c){var _0x3bc159=_0x1c01a5[_0x4dcb('0xf')];var _0x3f827a=_0x456168[_0x4dcb('0x10')]({'plain':!![]});if(_0x3f827a[_0x4dcb('0x11')][_0x4dcb('0x12')]()==='in'||_0x3f827a[_0x4dcb('0x11')][_0x4dcb('0x12')]()==='out'&&!_0x3f827a[_0x4dcb('0x13')]&&!_[_0x4dcb('0x14')](_0x3f827a['UserId'])){_0x3bc159[_0x4dcb('0x15')][_0x4dcb('0x16')]({'where':{'id':_0x3f827a[_0x4dcb('0x17')]}})[_0x4dcb('0x18')](function(_0x179885){if(_0x179885){_0x179885[_0x4dcb('0x19')]({'lastMsgAt':_0x3f827a[_0x4dcb('0x1a')],'lastMsgDirection':_0x3f827a['direction'][_0x4dcb('0x12')]()});}})[_0x4dcb('0x1b')](function(_0x18f586){console[_0x4dcb('0x1c')](_0x18f586);});}_0x53b83c();}},'charset':_0x4dcb('0x1d'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x335d=['api','moment','rimraf','exports','define','FaxMessage','fax_messages','fti_fax_messages','body','models','get','toLowerCase','direction','out','secret','isNil','UserId','FaxInteraction','findOne','FaxInteractionId','then','update','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x3a8ce2,_0x33b823){var _0x4ab5f0=function(_0x576d3c){while(--_0x576d3c){_0x3a8ce2['push'](_0x3a8ce2['shift']());}};_0x4ab5f0(++_0x33b823);}(_0x335d,0x1a1));var _0xd335=function(_0x328b40,_0x370642){_0x328b40=_0x328b40-0x0;var _0x556a56=_0x335d[_0x328b40];return _0x556a56;};'use strict';var _=require(_0xd335('0x0'));var util=require(_0xd335('0x1'));var logger=require(_0xd335('0x2'))(_0xd335('0x3'));var moment=require(_0xd335('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xd335('0x5'));var config=require('../../config/environment');var attributes=require('./faxMessage.attributes');module[_0xd335('0x6')]=function(_0x143563,_0x4f0a86){return _0x143563[_0xd335('0x7')](_0xd335('0x8'),attributes,{'tableName':_0xd335('0x9'),'paranoid':![],'indexes':[{'name':_0xd335('0xa'),'fields':[_0xd335('0xb')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4a956b,_0x5afa8b,_0x1eb4cc){var _0x581cc6=_0x143563[_0xd335('0xc')];var _0x3bf009=_0x4a956b[_0xd335('0xd')]({'plain':!![]});if(_0x3bf009['direction'][_0xd335('0xe')]()==='in'||_0x3bf009[_0xd335('0xf')][_0xd335('0xe')]()===_0xd335('0x10')&&!_0x3bf009[_0xd335('0x11')]&&!_[_0xd335('0x12')](_0x3bf009[_0xd335('0x13')])){_0x581cc6[_0xd335('0x14')][_0xd335('0x15')]({'where':{'id':_0x3bf009[_0xd335('0x16')]}})[_0xd335('0x17')](function(_0x4639eb){if(_0x4639eb){_0x4639eb[_0xd335('0x18')]({'lastMsgAt':_0x3bf009['createdAt'],'lastMsgDirection':_0x3bf009['direction']['toLowerCase']()});}})['catch'](function(_0xd72523){console[_0xd335('0x19')](_0xd72523);});}_0x1eb4cc();}},'charset':_0xd335('0x1a'),'collate':_0xd335('0x1b')});};
\ No newline at end of file
index 6037c93..61a0ab0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['code','message','info','catch','FaxMessage','create','body','options','CreateFaxMessage','stringify','UpdateFaxMessage','update','raw','where','attributes','limit','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','redis','defaults','socket.io-emitter','./faxMessage.socket','register','request','then','FaxMessage,\x20%s,\x20%s','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','error'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x9c44,0x178));var _0x49c4=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0x9c44[_0xdea41a];return _0x15d0d8;};'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});config[_0x49c4('0x9')]=_[_0x49c4('0xa')](config[_0x49c4('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x49c4('0xb'))(new Redis(config[_0x49c4('0x9')]));require(_0x49c4('0xc'))[_0x49c4('0xd')](socket);function respondWithRpcPromise(_0x4c7d3a,_0x5ab4a3,_0x451ea6){return new BPromise(function(_0x313e73,_0x58cad7){return client[_0x49c4('0xe')](_0x4c7d3a,_0x451ea6)[_0x49c4('0xf')](function(_0x4adb3c){logger['info'](_0x49c4('0x10'),_0x5ab4a3,_0x49c4('0x11'));logger['debug'](_0x49c4('0x12'),_0x5ab4a3,_0x49c4('0x11'),JSON['stringify'](_0x4adb3c));if(_0x4adb3c[_0x49c4('0x13')]){if(_0x4adb3c[_0x49c4('0x13')][_0x49c4('0x14')]===0x1f4){logger[_0x49c4('0x13')](_0x49c4('0x10'),_0x5ab4a3,_0x4adb3c[_0x49c4('0x13')][_0x49c4('0x15')]);return _0x58cad7(_0x4adb3c[_0x49c4('0x13')]['message']);}logger[_0x49c4('0x13')](_0x49c4('0x10'),_0x5ab4a3,_0x4adb3c[_0x49c4('0x13')][_0x49c4('0x15')]);return _0x313e73(_0x4adb3c[_0x49c4('0x13')]['message']);}else{logger[_0x49c4('0x16')](_0x49c4('0x10'),_0x5ab4a3,'request\x20sent');_0x313e73(_0x4adb3c['result'][_0x49c4('0x15')]);}})[_0x49c4('0x17')](function(_0x3addb2){logger['error'](_0x49c4('0x10'),_0x5ab4a3,_0x3addb2);_0x58cad7(_0x3addb2);});});}exports['CreateFaxMessage']=function(_0x2cbd50){var _0x1806c2=this;return new Promise(function(_0xe31fcc,_0x291526){return db[_0x49c4('0x18')][_0x49c4('0x19')](_0x2cbd50[_0x49c4('0x1a')],{'raw':_0x2cbd50[_0x49c4('0x1b')]?_0x2cbd50[_0x49c4('0x1b')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x57f502){logger[_0x49c4('0x16')]('CreateFaxMessage',_0x2cbd50);logger['debug'](_0x49c4('0x1c'),_0x2cbd50,JSON[_0x49c4('0x1d')](_0x57f502));_0xe31fcc(_0x57f502);})[_0x49c4('0x17')](function(_0xd335e4){logger['error']('CreateFaxMessage',_0xd335e4[_0x49c4('0x15')],_0x2cbd50);_0x291526(_0x1806c2[_0x49c4('0x13')](0x1f4,_0xd335e4['message']));});});};exports[_0x49c4('0x1e')]=function(_0x43e014){var _0x210159=this;return new Promise(function(_0xa7a826,_0x531d92){return db['FaxMessage'][_0x49c4('0x1f')](_0x43e014['body'],{'raw':_0x43e014[_0x49c4('0x1b')]?_0x43e014[_0x49c4('0x1b')][_0x49c4('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x43e014[_0x49c4('0x1b')]?_0x43e014['options'][_0x49c4('0x21')]||null:null,'attributes':_0x43e014[_0x49c4('0x1b')]?_0x43e014[_0x49c4('0x1b')][_0x49c4('0x22')]||null:null,'limit':_0x43e014[_0x49c4('0x1b')]?_0x43e014[_0x49c4('0x1b')][_0x49c4('0x23')]||null:null})[_0x49c4('0xf')](function(_0x17b50f){logger[_0x49c4('0x16')](_0x49c4('0x1e'),_0x43e014);logger['debug']('UpdateFaxMessage',_0x43e014,JSON['stringify'](_0x17b50f));_0xa7a826(_0x17b50f);})[_0x49c4('0x17')](function(_0x7ee704){logger[_0x49c4('0x13')](_0x49c4('0x1e'),_0x7ee704[_0x49c4('0x15')],_0x43e014);_0x531d92(_0x210159['error'](0x1f4,_0x7ee704[_0x49c4('0x15')]));});});};
\ No newline at end of file
+var _0x9a19=['http','redis','socket.io-emitter','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateFaxMessage','FaxMessage','body','options','raw','update','attributes','limit','UpdateFaxMessage','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x5c1449,_0x2af4b4){var _0x270473=function(_0x1461b6){while(--_0x1461b6){_0x5c1449['push'](_0x5c1449['shift']());}};_0x270473(++_0x2af4b4);}(_0x9a19,0x114));var _0x99a1=function(_0x425716,_0x3e9d1c){_0x425716=_0x425716-0x0;var _0x2d39af=_0x9a19[_0x425716];return _0x2d39af;};'use strict';var _=require(_0x99a1('0x0'));var util=require(_0x99a1('0x1'));var moment=require(_0x99a1('0x2'));var BPromise=require('bluebird');var rs=require(_0x99a1('0x3'));var fs=require('fs');var Redis=require(_0x99a1('0x4'));var db=require(_0x99a1('0x5'))['db'];var utils=require(_0x99a1('0x6'));var logger=require(_0x99a1('0x7'))(_0x99a1('0x8'));var config=require(_0x99a1('0x9'));var jayson=require(_0x99a1('0xa'));var client=jayson[_0x99a1('0xb')][_0x99a1('0xc')]({'port':0x232a});config[_0x99a1('0xd')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x99a1('0xe'))(new Redis(config[_0x99a1('0xd')]));require('./faxMessage.socket')['register'](socket);function respondWithRpcPromise(_0x4696f6,_0xd7b568,_0x23db53){return new BPromise(function(_0x26473f,_0x1551a1){return client['request'](_0x4696f6,_0x23db53)[_0x99a1('0xf')](function(_0xdd29e1){logger[_0x99a1('0x10')](_0x99a1('0x11'),_0xd7b568,_0x99a1('0x12'));logger[_0x99a1('0x13')](_0x99a1('0x14'),_0xd7b568,_0x99a1('0x12'),JSON[_0x99a1('0x15')](_0xdd29e1));if(_0xdd29e1[_0x99a1('0x16')]){if(_0xdd29e1[_0x99a1('0x16')][_0x99a1('0x17')]===0x1f4){logger[_0x99a1('0x16')](_0x99a1('0x11'),_0xd7b568,_0xdd29e1[_0x99a1('0x16')]['message']);return _0x1551a1(_0xdd29e1[_0x99a1('0x16')][_0x99a1('0x18')]);}logger[_0x99a1('0x16')](_0x99a1('0x11'),_0xd7b568,_0xdd29e1[_0x99a1('0x16')][_0x99a1('0x18')]);return _0x26473f(_0xdd29e1[_0x99a1('0x16')]['message']);}else{logger['info'](_0x99a1('0x11'),_0xd7b568,_0x99a1('0x12'));_0x26473f(_0xdd29e1[_0x99a1('0x19')][_0x99a1('0x18')]);}})[_0x99a1('0x1a')](function(_0x209021){logger[_0x99a1('0x16')](_0x99a1('0x11'),_0xd7b568,_0x209021);_0x1551a1(_0x209021);});});}exports[_0x99a1('0x1b')]=function(_0x2d8cac){var _0x3c23c0=this;return new Promise(function(_0x5eabcb,_0x3023a1){return db[_0x99a1('0x1c')]['create'](_0x2d8cac[_0x99a1('0x1d')],{'raw':_0x2d8cac['options']?_0x2d8cac[_0x99a1('0x1e')][_0x99a1('0x1f')]===undefined?!![]:![]:!![]})[_0x99a1('0xf')](function(_0x2d3b82){logger['info'](_0x99a1('0x1b'),_0x2d8cac);logger[_0x99a1('0x13')]('CreateFaxMessage',_0x2d8cac,JSON[_0x99a1('0x15')](_0x2d3b82));_0x5eabcb(_0x2d3b82);})['catch'](function(_0x1f9800){logger[_0x99a1('0x16')](_0x99a1('0x1b'),_0x1f9800[_0x99a1('0x18')],_0x2d8cac);_0x3023a1(_0x3c23c0[_0x99a1('0x16')](0x1f4,_0x1f9800[_0x99a1('0x18')]));});});};exports['UpdateFaxMessage']=function(_0x114b38){var _0x5dabd9=this;return new Promise(function(_0x5dc733,_0xafea84){return db[_0x99a1('0x1c')][_0x99a1('0x20')](_0x114b38[_0x99a1('0x1d')],{'raw':_0x114b38[_0x99a1('0x1e')]?_0x114b38[_0x99a1('0x1e')][_0x99a1('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x114b38['options']?_0x114b38[_0x99a1('0x1e')]['where']||null:null,'attributes':_0x114b38[_0x99a1('0x1e')]?_0x114b38[_0x99a1('0x1e')][_0x99a1('0x21')]||null:null,'limit':_0x114b38['options']?_0x114b38[_0x99a1('0x1e')][_0x99a1('0x22')]||null:null})['then'](function(_0x37514e){logger[_0x99a1('0x10')](_0x99a1('0x23'),_0x114b38);logger[_0x99a1('0x13')](_0x99a1('0x23'),_0x114b38,JSON[_0x99a1('0x15')](_0x37514e));_0x5dc733(_0x37514e);})[_0x99a1('0x1a')](function(_0x26c23c){logger['error']('UpdateFaxMessage',_0x26c23c[_0x99a1('0x18')],_0x114b38);_0xafea84(_0x5dabd9['error'](0x1f4,_0x26c23c[_0x99a1('0x18')]));});});};
\ No newline at end of file
index be0e26a..4c3625b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37e7=['length','faxMessage:','save','remove','update','emit','register'];(function(_0xd882cc,_0x57cdfc){var _0x152f91=function(_0x5a164e){while(--_0x5a164e){_0xd882cc['push'](_0xd882cc['shift']());}};_0x152f91(++_0x57cdfc);}(_0x37e7,0xf7));var _0x737e=function(_0x59273d,_0x59bee7){_0x59273d=_0x59273d-0x0;var _0x5b01a5=_0x37e7[_0x59273d];return _0x5b01a5;};'use strict';var FaxMessageEvents=require('./faxMessage.events');var events=[_0x737e('0x0'),_0x737e('0x1'),_0x737e('0x2')];function createListener(_0x6aff3d,_0x48df9a){return function(_0x35574e){_0x48df9a[_0x737e('0x3')](_0x6aff3d,_0x35574e);};}function removeListener(_0xd245e7,_0x3dc356){return function(){FaxMessageEvents['removeListener'](_0xd245e7,_0x3dc356);};}exports[_0x737e('0x4')]=function(_0x311bdb){for(var _0x34bdd2=0x0,_0x2aeefa=events[_0x737e('0x5')];_0x34bdd2<_0x2aeefa;_0x34bdd2++){var _0xdb98a6=events[_0x34bdd2];var _0x27e738=createListener(_0x737e('0x6')+_0xdb98a6,_0x311bdb);FaxMessageEvents['on'](_0xdb98a6,_0x27e738);}};
\ No newline at end of file
+var _0xae28=['removeListener','register','./faxMessage.events','update','emit'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xae28,0x142));var _0x8ae2=function(_0x70e2cf,_0x430c1e){_0x70e2cf=_0x70e2cf-0x0;var _0x1654d4=_0xae28[_0x70e2cf];return _0x1654d4;};'use strict';var FaxMessageEvents=require(_0x8ae2('0x0'));var events=['save','remove',_0x8ae2('0x1')];function createListener(_0xaba869,_0x2b9ea3){return function(_0x51517a){_0x2b9ea3[_0x8ae2('0x2')](_0xaba869,_0x51517a);};}function removeListener(_0x2fb3a0,_0x1059eb){return function(){FaxMessageEvents[_0x8ae2('0x3')](_0x2fb3a0,_0x1059eb);};}exports[_0x8ae2('0x4')]=function(_0x5626cf){for(var _0xaf923c=0x0,_0x104173=events['length'];_0xaf923c<_0x104173;_0xaf923c++){var _0x1a2605=events[_0xaf923c];var _0x28a143=createListener('faxMessage:'+_0x1a2605,_0x5626cf);FaxMessageEvents['on'](_0x1a2605,_0x28a143);}};
\ No newline at end of file
index 98b080a..e6b3a1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5db8=['download','fax','faxmessage:create','put','update','/:id/accept','accept','/:id/reject','reject','delete','/:id','exports','multer','util','path','express','Router','fs-extra','../../config/environment','./faxMessage.controller','get','isAuthenticated','/describe','describe','/:id/download'];(function(_0x11f598,_0x5a2990){var _0x2a37dc=function(_0x510577){while(--_0x510577){_0x11f598['push'](_0x11f598['shift']());}};_0x2a37dc(++_0x5a2990);}(_0x5db8,0xbb));var _0x85db=function(_0x257896,_0x8de612){_0x257896=_0x257896-0x0;var _0x1ff242=_0x5db8[_0x257896];return _0x1ff242;};'use strict';var multer=require(_0x85db('0x0'));var util=require(_0x85db('0x1'));var path=require(_0x85db('0x2'));var timeout=require('connect-timeout');var express=require(_0x85db('0x3'));var router=express[_0x85db('0x4')]();var fs_extra=require(_0x85db('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x85db('0x6'));var controller=require(_0x85db('0x7'));router[_0x85db('0x8')]('/',auth[_0x85db('0x9')](),controller['index']);router['get'](_0x85db('0xa'),auth[_0x85db('0x9')](),controller[_0x85db('0xb')]);router[_0x85db('0x8')]('/:id',auth[_0x85db('0x9')](),controller['show']);router[_0x85db('0x8')](_0x85db('0xc'),auth[_0x85db('0x9')](),controller[_0x85db('0xd')]);router['post']('/',auth['isAuthenticated'](),interaction['tracked'](_0x85db('0xe'),_0x85db('0xf')),controller['create']);router[_0x85db('0x10')]('/:id',auth[_0x85db('0x9')](),controller[_0x85db('0x11')]);router[_0x85db('0x10')](_0x85db('0x12'),auth[_0x85db('0x9')](),controller[_0x85db('0x13')]);router[_0x85db('0x10')](_0x85db('0x14'),auth[_0x85db('0x9')](),controller[_0x85db('0x15')]);router[_0x85db('0x16')](_0x85db('0x17'),auth[_0x85db('0x9')](),controller['destroy']);module[_0x85db('0x18')]=router;
\ No newline at end of file
+var _0xbf6e=['accept','reject','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxMessage.controller','get','isAuthenticated','index','/describe','/:id','/:id/download','download','post','tracked','fax','faxmessage:create','put','update','/:id/accept'];(function(_0x485cd4,_0x506e1b){var _0x528199=function(_0x8472b3){while(--_0x8472b3){_0x485cd4['push'](_0x485cd4['shift']());}};_0x528199(++_0x506e1b);}(_0xbf6e,0x149));var _0xebf6=function(_0x2de66b,_0x33ae0c){_0x2de66b=_0x2de66b-0x0;var _0x19c1ea=_0xbf6e[_0x2de66b];return _0x19c1ea;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xebf6('0x0'));var timeout=require(_0xebf6('0x1'));var express=require(_0xebf6('0x2'));var router=express[_0xebf6('0x3')]();var fs_extra=require(_0xebf6('0x4'));var auth=require(_0xebf6('0x5'));var interaction=require(_0xebf6('0x6'));var config=require('../../config/environment');var controller=require(_0xebf6('0x7'));router[_0xebf6('0x8')]('/',auth[_0xebf6('0x9')](),controller[_0xebf6('0xa')]);router[_0xebf6('0x8')](_0xebf6('0xb'),auth[_0xebf6('0x9')](),controller['describe']);router[_0xebf6('0x8')](_0xebf6('0xc'),auth[_0xebf6('0x9')](),controller['show']);router[_0xebf6('0x8')](_0xebf6('0xd'),auth['isAuthenticated'](),controller[_0xebf6('0xe')]);router[_0xebf6('0xf')]('/',auth[_0xebf6('0x9')](),interaction[_0xebf6('0x10')](_0xebf6('0x11'),_0xebf6('0x12')),controller['create']);router[_0xebf6('0x13')](_0xebf6('0xc'),auth['isAuthenticated'](),controller[_0xebf6('0x14')]);router[_0xebf6('0x13')](_0xebf6('0x15'),auth[_0xebf6('0x9')](),controller[_0xebf6('0x16')]);router['put']('/:id/reject',auth['isAuthenticated'](),controller[_0xebf6('0x17')]);router[_0xebf6('0x18')]('/:id',auth[_0xebf6('0x9')](),controller[_0xebf6('0x19')]);module[_0xebf6('0x1a')]=router;
\ No newline at end of file
index 449ed95..806a4cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda28=['INTEGER','sequelize','exports','STRING','name','ENUM','rrmemory','beepall','roundrobin'];(function(_0x10e47b,_0x71aa6d){var _0x4388d0=function(_0x10e66b){while(--_0x10e66b){_0x10e47b['push'](_0x10e47b['shift']());}};_0x4388d0(++_0x71aa6d);}(_0xda28,0xfd));var _0x8da2=function(_0x42617f,_0x30a6f2){_0x42617f=_0x42617f-0x0;var _0x38438d=_0xda28[_0x42617f];return _0x38438d;};'use strict';var Sequelize=require(_0x8da2('0x0'));module[_0x8da2('0x1')]={'name':{'type':Sequelize[_0x8da2('0x2')],'unique':_0x8da2('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x8da2('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x8da2('0x4')](_0x8da2('0x5'),_0x8da2('0x6'),_0x8da2('0x7')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x8da2('0x8')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x83ad=['name','ENUM','rrmemory','INTEGER','sequelize','STRING'];(function(_0xfff28b,_0x204443){var _0x13c9f0=function(_0x4d9f58){while(--_0x4d9f58){_0xfff28b['push'](_0xfff28b['shift']());}};_0x13c9f0(++_0x204443);}(_0x83ad,0x1e4));var _0xd83a=function(_0x5c34a9,_0x69b8b8){_0x5c34a9=_0x5c34a9-0x0;var _0x4f44ed=_0x83ad[_0x5c34a9];return _0x4f44ed;};'use strict';var Sequelize=require(_0xd83a('0x0'));module['exports']={'name':{'type':Sequelize[_0xd83a('0x1')],'unique':_0xd83a('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xd83a('0x1')]},'timeout':{'type':Sequelize['INTEGER'],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xd83a('0x3')](_0xd83a('0x4'),'beepall','roundrobin'),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xd83a('0x5')],'defaultValue':0x0}};
\ No newline at end of file
index 1b4bdb4..bd72b29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2c3=['name','send','map','FaxQueue','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','type','VIRTUAL','merge','options','includeAll','findAll','rows','include','find','catch','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','FaxQueues','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','findOne','UserFaxQueue','hasOwnProperty','User','findAndCountAll','agent','faxPause','updatedAt','format','%s/%s','SIP','createdAt','getTeams','Team','rawAttributes','pick','addTeams','ids','Agents','online','flatMap','transaction','each','findOrCreate','forEach','emit','userFaxQueue:save','removeTeams','select','tq.TeamId','from','team_has_fax_queues','join','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','TeamId','all','union','compact','value','isEmpty','removeAgents','userFaxQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','update','then','destroy','UserProfileResource','error'];(function(_0x12ddb2,_0x5ad61e){var _0x10b6dd=function(_0x47dd27){while(--_0x47dd27){_0x12ddb2['push'](_0x12ddb2['shift']());}};_0x10b6dd(++_0x5ad61e);}(_0xd2c3,0xe9));var _0x3d2c=function(_0x29d94e,_0xf386d6){_0x29d94e=_0x29d94e-0x0;var _0x106237=_0xd2c3[_0x29d94e];return _0x106237;};'use strict';var emlformat=require(_0x3d2c('0x0'));var rimraf=require(_0x3d2c('0x1'));var zipdir=require(_0x3d2c('0x2'));var jsonpatch=require(_0x3d2c('0x3'));var rp=require(_0x3d2c('0x4'));var moment=require(_0x3d2c('0x5'));var BPromise=require(_0x3d2c('0x6'));var Mustache=require(_0x3d2c('0x7'));var util=require(_0x3d2c('0x8'));var path=require('path');var sox=require(_0x3d2c('0x9'));var csv=require(_0x3d2c('0xa'));var ejs=require(_0x3d2c('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3d2c('0xc'));var squel=require(_0x3d2c('0xd'));var crypto=require(_0x3d2c('0xe'));var jsforce=require(_0x3d2c('0xf'));var deskjs=require(_0x3d2c('0x10'));var toCsv=require(_0x3d2c('0xa'));var querystring=require(_0x3d2c('0x11'));var Papa=require('papaparse');var Redis=require(_0x3d2c('0x12'));var authService=require(_0x3d2c('0x13'));var qs=require(_0x3d2c('0x14'));var as=require(_0x3d2c('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x3d2c('0x16'));var utils=require(_0x3d2c('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x3d2c('0x18'))['db'];config[_0x3d2c('0x19')]=_[_0x3d2c('0x1a')](config[_0x3d2c('0x19')],{'host':_0x3d2c('0x1b'),'port':0x18eb});var socket=require(_0x3d2c('0x1c'))(new Redis(config[_0x3d2c('0x19')]));require(_0x3d2c('0x1d'))[_0x3d2c('0x1e')](socket);function respondWithStatusCode(_0x2029f4,_0x1a56e3){_0x1a56e3=_0x1a56e3||0xcc;return function(_0x36d14c){if(_0x36d14c){return _0x2029f4[_0x3d2c('0x1f')](_0x1a56e3);}return _0x2029f4[_0x3d2c('0x20')](_0x1a56e3)[_0x3d2c('0x21')]();};}function respondWithResult(_0x4cfe55,_0x5df309){_0x5df309=_0x5df309||0xc8;return function(_0x40220c){if(_0x40220c){return _0x4cfe55[_0x3d2c('0x20')](_0x5df309)[_0x3d2c('0x22')](_0x40220c);}};}function respondWithFilteredResult(_0xbc87d8,_0x47206a){return function(_0xf3724){if(_0xf3724){var _0x5a7cb9=typeof _0x47206a[_0x3d2c('0x23')]===_0x3d2c('0x24')&&typeof _0x47206a[_0x3d2c('0x25')]==='undefined';var _0x2fa1ef=_0xf3724['count'];var _0x358186=_0x5a7cb9?0x0:_0x47206a[_0x3d2c('0x23')];var _0x25a418=_0x5a7cb9?_0xf3724[_0x3d2c('0x26')]:_0x47206a[_0x3d2c('0x23')]+_0x47206a[_0x3d2c('0x25')];var _0x328c69;if(_0x25a418>=_0x2fa1ef){_0x25a418=_0x2fa1ef;_0x328c69=0xc8;}else{_0x328c69=0xce;}_0xbc87d8[_0x3d2c('0x20')](_0x328c69);return _0xbc87d8['set']('Content-Range',_0x358186+'-'+_0x25a418+'/'+_0x2fa1ef)[_0x3d2c('0x22')](_0xf3724);}return null;};}function patchUpdates(_0x48e30d){return function(_0x5bbbfa){try{jsonpatch[_0x3d2c('0x27')](_0x5bbbfa,_0x48e30d,!![]);}catch(_0x23f985){return BPromise[_0x3d2c('0x28')](_0x23f985);}return _0x5bbbfa[_0x3d2c('0x29')]();};}function saveUpdates(_0x1c9a29,_0x32b412){return function(_0xb3708d){if(_0xb3708d){return _0xb3708d[_0x3d2c('0x2a')](_0x1c9a29)[_0x3d2c('0x2b')](function(_0x211936){return _0x211936;});}return null;};}function removeEntity(_0x35d3d4,_0x26ae4f){return function(_0x4772bd){if(_0x4772bd){return _0x4772bd[_0x3d2c('0x2c')]()[_0x3d2c('0x2b')](function(){var _0x1bda62=_0x4772bd['get']({'plain':!![]});var _0x2b0927='FaxQueues';return db[_0x3d2c('0x2d')][_0x3d2c('0x2c')]({'where':{'type':_0x2b0927,'resourceId':_0x1bda62['id']}})['then'](function(){return _0x4772bd;});})[_0x3d2c('0x2b')](function(){_0x35d3d4[_0x3d2c('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d7b10,_0x2d35cf){return function(_0x276add){if(!_0x276add){_0x4d7b10[_0x3d2c('0x1f')](0x194);}return _0x276add;};}function handleError(_0x5f2e95,_0x365d44){_0x365d44=_0x365d44||0x1f4;return function(_0x2f72aa){logger[_0x3d2c('0x2e')](_0x2f72aa['stack']);if(_0x2f72aa['name']){delete _0x2f72aa[_0x3d2c('0x2f')];}_0x5f2e95[_0x3d2c('0x20')](_0x365d44)[_0x3d2c('0x30')](_0x2f72aa);};}exports['index']=function(_0xabe3a9,_0x209a63){var _0x4c9cbb={},_0xcbf812={},_0x47202c={'count':0x0,'rows':[]};var _0x21fe3a=_[_0x3d2c('0x31')](db[_0x3d2c('0x32')]['rawAttributes'],function(_0x333035){return{'name':_0x333035[_0x3d2c('0x33')],'type':_0x333035['type'][_0x3d2c('0x34')]};});_0xcbf812[_0x3d2c('0x35')]=_[_0x3d2c('0x31')](_0x21fe3a,_0x3d2c('0x2f'));_0xcbf812[_0x3d2c('0x36')]=_[_0x3d2c('0x37')](_0xabe3a9[_0x3d2c('0x36')]);_0xcbf812[_0x3d2c('0x38')]=_[_0x3d2c('0x39')](_0xcbf812[_0x3d2c('0x35')],_0xcbf812[_0x3d2c('0x36')]);_0x4c9cbb[_0x3d2c('0x3a')]=_['intersection'](_0xcbf812[_0x3d2c('0x35')],qs[_0x3d2c('0x3b')](_0xabe3a9['query'][_0x3d2c('0x3b')]));_0x4c9cbb[_0x3d2c('0x3a')]=_0x4c9cbb[_0x3d2c('0x3a')][_0x3d2c('0x3c')]?_0x4c9cbb[_0x3d2c('0x3a')]:_0xcbf812[_0x3d2c('0x35')];if(!_0xabe3a9['query']['hasOwnProperty'](_0x3d2c('0x3d'))){_0x4c9cbb[_0x3d2c('0x25')]=qs[_0x3d2c('0x25')](_0xabe3a9[_0x3d2c('0x36')][_0x3d2c('0x25')]);_0x4c9cbb['offset']=qs[_0x3d2c('0x23')](_0xabe3a9[_0x3d2c('0x36')][_0x3d2c('0x23')]);}_0x4c9cbb[_0x3d2c('0x3e')]=qs[_0x3d2c('0x3f')](_0xabe3a9['query'][_0x3d2c('0x3f')]);_0x4c9cbb[_0x3d2c('0x40')]=qs[_0x3d2c('0x38')](_['pick'](_0xabe3a9[_0x3d2c('0x36')],_0xcbf812[_0x3d2c('0x38')]),_0x21fe3a);if(_0xabe3a9[_0x3d2c('0x36')][_0x3d2c('0x41')]){_0x4c9cbb['where']=_['merge'](_0x4c9cbb[_0x3d2c('0x40')],{'$or':_[_0x3d2c('0x31')](_0x21fe3a,function(_0x20ecdb){if(_0x20ecdb[_0x3d2c('0x42')]!==_0x3d2c('0x43')){var _0x30e36c={};_0x30e36c[_0x20ecdb[_0x3d2c('0x2f')]]={'$like':'%'+_0xabe3a9[_0x3d2c('0x36')]['filter']+'%'};return _0x30e36c;}})});}_0x4c9cbb=_[_0x3d2c('0x44')]({},_0x4c9cbb,_0xabe3a9[_0x3d2c('0x45')]);var _0x566fb6={'where':_0x4c9cbb[_0x3d2c('0x40')]};return db[_0x3d2c('0x32')][_0x3d2c('0x26')](_0x566fb6)[_0x3d2c('0x2b')](function(_0x50f3da){_0x47202c['count']=_0x50f3da;if(_0xabe3a9['query'][_0x3d2c('0x46')]){_0x4c9cbb['include']=[{'all':!![]}];}return db[_0x3d2c('0x32')][_0x3d2c('0x47')](_0x4c9cbb);})[_0x3d2c('0x2b')](function(_0x2f828a){_0x47202c[_0x3d2c('0x48')]=_0x2f828a;return _0x47202c;})[_0x3d2c('0x2b')](respondWithFilteredResult(_0x209a63,_0x4c9cbb))['catch'](handleError(_0x209a63,null));};exports['show']=function(_0x5c9d30,_0x465045){var _0x4d8fd4={'raw':!![],'where':{'id':_0x5c9d30['params']['id']}},_0x2e4e47={};_0x2e4e47['model']=_[_0x3d2c('0x37')](db[_0x3d2c('0x32')]['rawAttributes']);_0x2e4e47[_0x3d2c('0x36')]=_[_0x3d2c('0x37')](_0x5c9d30[_0x3d2c('0x36')]);_0x2e4e47[_0x3d2c('0x38')]=_[_0x3d2c('0x39')](_0x2e4e47['model'],_0x2e4e47[_0x3d2c('0x36')]);_0x4d8fd4['attributes']=_[_0x3d2c('0x39')](_0x2e4e47['model'],qs['fields'](_0x5c9d30['query'][_0x3d2c('0x3b')]));_0x4d8fd4['attributes']=_0x4d8fd4[_0x3d2c('0x3a')][_0x3d2c('0x3c')]?_0x4d8fd4[_0x3d2c('0x3a')]:_0x2e4e47[_0x3d2c('0x35')];if(_0x5c9d30[_0x3d2c('0x36')][_0x3d2c('0x46')]){_0x4d8fd4[_0x3d2c('0x49')]=[{'all':!![]}];}_0x4d8fd4=_[_0x3d2c('0x44')]({},_0x4d8fd4,_0x5c9d30[_0x3d2c('0x45')]);return db[_0x3d2c('0x32')][_0x3d2c('0x4a')](_0x4d8fd4)[_0x3d2c('0x2b')](handleEntityNotFound(_0x465045,null))[_0x3d2c('0x2b')](respondWithResult(_0x465045,null))[_0x3d2c('0x4b')](handleError(_0x465045,null));};exports[_0x3d2c('0x4c')]=function(_0x5a77c7,_0x58f9cb){return db[_0x3d2c('0x32')][_0x3d2c('0x4c')](_0x5a77c7['body'],{})[_0x3d2c('0x2b')](function(_0xc41031){var _0x31c503=_0x5a77c7[_0x3d2c('0x4d')][_0x3d2c('0x4e')]({'plain':!![]});if(!_0x31c503)throw new Error(_0x3d2c('0x4f'));if(_0x31c503[_0x3d2c('0x50')]===_0x3d2c('0x4d')){var _0x358955=_0xc41031[_0x3d2c('0x4e')]({'plain':!![]});var _0x3f38ce=_0x3d2c('0x51');return db['UserProfileSection'][_0x3d2c('0x4a')]({'where':{'name':_0x3f38ce,'userProfileId':_0x31c503[_0x3d2c('0x52')]},'raw':!![]})[_0x3d2c('0x2b')](function(_0x3e115d){if(_0x3e115d&&_0x3e115d['autoAssociation']===0x0){return db[_0x3d2c('0x2d')][_0x3d2c('0x4c')]({'name':_0x358955[_0x3d2c('0x2f')],'resourceId':_0x358955['id'],'type':_0x3e115d[_0x3d2c('0x2f')],'sectionId':_0x3e115d['id']},{})[_0x3d2c('0x2b')](function(){return _0xc41031;});}else{return _0xc41031;}})[_0x3d2c('0x4b')](function(_0x5acc3f){logger[_0x3d2c('0x2e')](_0x3d2c('0x53'),_0x5acc3f);throw _0x5acc3f;});}return _0xc41031;})['then'](respondWithResult(_0x58f9cb,0xc9))['catch'](handleError(_0x58f9cb,null));};exports[_0x3d2c('0x2a')]=function(_0x3124df,_0x1d5eab){if(_0x3124df['body']['id']){delete _0x3124df[_0x3d2c('0x54')]['id'];}return db[_0x3d2c('0x32')][_0x3d2c('0x4a')]({'where':{'id':_0x3124df[_0x3d2c('0x55')]['id']}})['then'](handleEntityNotFound(_0x1d5eab,null))[_0x3d2c('0x2b')](saveUpdates(_0x3124df[_0x3d2c('0x54')],null))[_0x3d2c('0x2b')](respondWithResult(_0x1d5eab,null))[_0x3d2c('0x4b')](handleError(_0x1d5eab,null));};exports[_0x3d2c('0x2c')]=function(_0x559521,_0x5b82f0){return db[_0x3d2c('0x32')]['find']({'where':{'id':_0x559521[_0x3d2c('0x55')]['id']}})[_0x3d2c('0x2b')](handleEntityNotFound(_0x5b82f0,null))[_0x3d2c('0x2b')](removeEntity(_0x5b82f0,null))[_0x3d2c('0x4b')](handleError(_0x5b82f0,null));};exports[_0x3d2c('0x56')]=function(_0x10938d,_0x13579f){return db[_0x3d2c('0x32')]['describe']()[_0x3d2c('0x2b')](respondWithResult(_0x13579f,null))[_0x3d2c('0x4b')](handleError(_0x13579f,null));};exports['getMembers']=function(_0xd28245,_0x13caf2,_0x2650bc){var _0x4e632b={'raw':!![],'where':{}},_0x57627d={},_0x34610c;return db['FaxQueue'][_0x3d2c('0x57')]({'where':{'id':_0xd28245[_0x3d2c('0x55')]['id']}})[_0x3d2c('0x2b')](handleEntityNotFound(_0x13caf2,null))[_0x3d2c('0x2b')](function(_0x343642){if(_0x343642){_0x34610c=_0x343642['get']({'plain':!![]});_0x57627d[_0x3d2c('0x35')]=_['keys'](db[_0x3d2c('0x58')]['rawAttributes']);_0x57627d[_0x3d2c('0x36')]=_[_0x3d2c('0x37')](_0xd28245[_0x3d2c('0x36')]);_0x57627d[_0x3d2c('0x38')]=_[_0x3d2c('0x39')](_0x57627d[_0x3d2c('0x35')],_0x57627d[_0x3d2c('0x36')]);_0x4e632b[_0x3d2c('0x3a')]=_['intersection'](_0x57627d[_0x3d2c('0x35')],qs['fields'](_0xd28245[_0x3d2c('0x36')][_0x3d2c('0x3b')]));_0x4e632b[_0x3d2c('0x3a')]=_0x4e632b[_0x3d2c('0x3a')]['length']?_0x4e632b[_0x3d2c('0x3a')]:_0x57627d[_0x3d2c('0x35')];if(!_0xd28245[_0x3d2c('0x36')][_0x3d2c('0x59')](_0x3d2c('0x3d'))){_0x4e632b[_0x3d2c('0x25')]=qs['limit'](_0xd28245[_0x3d2c('0x36')][_0x3d2c('0x25')]);_0x4e632b['offset']=qs[_0x3d2c('0x23')](_0xd28245[_0x3d2c('0x36')][_0x3d2c('0x23')]);}_0x4e632b['order']=qs[_0x3d2c('0x3f')](_0xd28245[_0x3d2c('0x36')][_0x3d2c('0x3f')]);_0x4e632b['where']=qs[_0x3d2c('0x38')](_['pick'](_0xd28245['query'],_0x57627d[_0x3d2c('0x38')]));_0x4e632b['where']['FaxQueueId']=_0x343642['id'];if(_0xd28245['query'][_0x3d2c('0x41')]){_0x4e632b[_0x3d2c('0x40')]=_['merge'](_0x4e632b[_0x3d2c('0x40')],{'$or':_[_0x3d2c('0x31')](_0x4e632b[_0x3d2c('0x3a')],function(_0x45b205){var _0x19dbca={};_0x19dbca[_0x45b205]={'$like':'%'+_0xd28245['query'][_0x3d2c('0x41')]+'%'};return _0x19dbca;})});}_0x4e632b=_[_0x3d2c('0x44')]({},_0x4e632b,_0xd28245[_0x3d2c('0x45')]);return db['UserFaxQueue'][_0x3d2c('0x47')](_0x4e632b);}})['then'](function(_0x1506bf){if(_0x1506bf){return db[_0x3d2c('0x5a')][_0x3d2c('0x5b')]({'where':{'id':_['map'](_0x1506bf,'UserId'),'role':_0x3d2c('0x5c')},'attributes':['id',_0x3d2c('0x2f'),_0x3d2c('0x5d'),_0x3d2c('0x5e'),'createdAt']});}})[_0x3d2c('0x2b')](function(_0x28d3e3){if(_0x28d3e3){return{'count':_0x28d3e3[_0x3d2c('0x26')],'rows':_['map'](_0x28d3e3['rows'],function(_0x48cb11){return{'membername':_0x48cb11[_0x3d2c('0x2f')],'UserId':_0x48cb11['id'],'queue_name':_0x34610c['name'],'FaxQueueId':_0x34610c['id'],'interface':util[_0x3d2c('0x5f')](_0x3d2c('0x60'),_0x3d2c('0x61'),_0x48cb11['name']),'penalty':0x0,'paused':_0x48cb11[_0x3d2c('0x5d')],'createdAt':_0x48cb11[_0x3d2c('0x62')],'updatedAt':_0x48cb11[_0x3d2c('0x5e')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x13caf2,_0x4e632b))[_0x3d2c('0x4b')](handleError(_0x13caf2,null));};exports[_0x3d2c('0x63')]=function(_0x5e3162,_0x470f5e,_0x4948a2){var _0x467e8a={};var _0x4d61b5={};var _0x2dbbdd;var _0x4560de;return db[_0x3d2c('0x32')][_0x3d2c('0x57')]({'where':{'id':_0x5e3162[_0x3d2c('0x55')]['id']}})[_0x3d2c('0x2b')](handleEntityNotFound(_0x470f5e,null))[_0x3d2c('0x2b')](function(_0x553404){if(_0x553404){_0x2dbbdd=_0x553404;_0x4d61b5[_0x3d2c('0x35')]=_[_0x3d2c('0x37')](db[_0x3d2c('0x64')][_0x3d2c('0x65')]);_0x4d61b5['query']=_[_0x3d2c('0x37')](_0x5e3162[_0x3d2c('0x36')]);_0x4d61b5[_0x3d2c('0x38')]=_[_0x3d2c('0x39')](_0x4d61b5[_0x3d2c('0x35')],_0x4d61b5['query']);_0x467e8a[_0x3d2c('0x3a')]=_[_0x3d2c('0x39')](_0x4d61b5['model'],qs[_0x3d2c('0x3b')](_0x5e3162[_0x3d2c('0x36')][_0x3d2c('0x3b')]));_0x467e8a[_0x3d2c('0x3a')]=_0x467e8a['attributes'][_0x3d2c('0x3c')]?_0x467e8a[_0x3d2c('0x3a')]:_0x4d61b5[_0x3d2c('0x35')];_0x467e8a[_0x3d2c('0x3e')]=qs[_0x3d2c('0x3f')](_0x5e3162['query']['sort']);_0x467e8a[_0x3d2c('0x40')]=qs[_0x3d2c('0x38')](_[_0x3d2c('0x66')](_0x5e3162['query'],_0x4d61b5[_0x3d2c('0x38')]));if(_0x5e3162[_0x3d2c('0x36')][_0x3d2c('0x41')]){_0x467e8a[_0x3d2c('0x40')]=_[_0x3d2c('0x44')](_0x467e8a[_0x3d2c('0x40')],{'$or':_['map'](_0x467e8a[_0x3d2c('0x3a')],function(_0x50cdf6){var _0x1b741b={};_0x1b741b[_0x50cdf6]={'$like':'%'+_0x5e3162['query'][_0x3d2c('0x41')]+'%'};return _0x1b741b;})});}_0x467e8a=_[_0x3d2c('0x44')]({},_0x467e8a,_0x5e3162[_0x3d2c('0x45')]);return _0x2dbbdd[_0x3d2c('0x63')](_0x467e8a);}})[_0x3d2c('0x2b')](function(_0x62c2e1){if(_0x62c2e1){_0x4560de=_0x62c2e1[_0x3d2c('0x3c')];if(!_0x5e3162[_0x3d2c('0x36')][_0x3d2c('0x59')](_0x3d2c('0x3d'))){_0x467e8a[_0x3d2c('0x25')]=qs[_0x3d2c('0x25')](_0x5e3162['query'][_0x3d2c('0x25')]);_0x467e8a[_0x3d2c('0x23')]=qs[_0x3d2c('0x23')](_0x5e3162['query'][_0x3d2c('0x23')]);}return _0x2dbbdd['getTeams'](_0x467e8a);}})['then'](function(_0x53d86f){if(_0x53d86f){return _0x53d86f?{'count':_0x4560de,'rows':_0x53d86f}:null;}})[_0x3d2c('0x2b')](respondWithResult(_0x470f5e,null))[_0x3d2c('0x4b')](handleError(_0x470f5e,null));};exports[_0x3d2c('0x67')]=function(_0xb003df,_0x3b4cde,_0x24e695){var _0x32bf25=_0xb003df[_0x3d2c('0x54')][_0x3d2c('0x68')];return db['Team'][_0x3d2c('0x47')]({'where':{'id':_0x32bf25},'attributes':['id'],'include':[{'model':db[_0x3d2c('0x5a')],'as':_0x3d2c('0x69'),'attributes':['id',_0x3d2c('0x2f'),_0x3d2c('0x6a'),'voicePause','interface'],'raw':!![]}]})['then'](function(_0x49efac){if(_0x49efac){var _0x6f8511=_[_0x3d2c('0x6b')](_0x49efac,function(_0x5dcf46){var _0x2f6ee8=_0x5dcf46[_0x3d2c('0x4e')]({'plain':!![]});return _0x2f6ee8['Agents'];});return db['FaxQueue'][_0x3d2c('0x4a')]({'where':{'id':_0xb003df['params']['id']}})[_0x3d2c('0x2b')](function(_0x3a24fb){return db['sequelize'][_0x3d2c('0x6c')](function(_0x40ffc1){return _0x3a24fb[_0x3d2c('0x67')](_0x32bf25,{'transaction':_0x40ffc1})[_0x3d2c('0x2b')](function(){return BPromise[_0x3d2c('0x6d')](_0x6f8511,function(_0x61a983){return db[_0x3d2c('0x58')][_0x3d2c('0x6e')]({'where':{'UserId':_0x61a983['id'],'FaxQueueId':_0xb003df[_0x3d2c('0x55')]['id']},'transaction':_0x40ffc1});});})[_0x3d2c('0x2b')](function(){_0x6f8511[_0x3d2c('0x6f')](function(_0x614d31){socket[_0x3d2c('0x70')](_0x3d2c('0x71'),{'UserId':_0x614d31['id'],'FaxQueueId':_0x3a24fb['id']});});});});});}})[_0x3d2c('0x2b')](respondWithStatusCode(_0x3b4cde,null))['catch'](handleError(_0x3b4cde,null));};exports[_0x3d2c('0x72')]=function(_0x70c5c0,_0x3aaa58,_0x4cc49d){return db['Team'][_0x3d2c('0x47')]({'where':{'id':_0x70c5c0[_0x3d2c('0x36')][_0x3d2c('0x68')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x3d2c('0x69'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x3aaa58,null))['then'](function(_0x4c4502){var _0x563281=_['map'](_0x4c4502,'id');var _0x1c320d=[];var _0x675ac9=[];var _0x34491d=squel[_0x3d2c('0x73')]();_0x34491d['field'](_0x3d2c('0x74'))[_0x3d2c('0x75')](_0x3d2c('0x76'),'tq')[_0x3d2c('0x77')]('user_has_teams','ut',_0x3d2c('0x78'))[_0x3d2c('0x40')](_0x3d2c('0x79'),_0x70c5c0[_0x3d2c('0x55')]['id']);for(var _0x27f563=0x0;_0x27f563<_0x4c4502[_0x3d2c('0x3c')];_0x27f563+=0x1){let _0x2a5c0a=_0x4c4502[_0x27f563];for(var _0x3f7559=0x0;_0x3f7559<_0x2a5c0a[_0x3d2c('0x69')][_0x3d2c('0x3c')];_0x3f7559+=0x1){let _0x33f969=_0x2a5c0a[_0x3d2c('0x69')][_0x3f7559];var _0x282755=_0x34491d[_0x3d2c('0x7a')]();_0x282755[_0x3d2c('0x40')](_0x3d2c('0x7b'),_0x33f969['id']);_0x675ac9[_0x3d2c('0x7c')](db[_0x3d2c('0x7d')]['query'](_0x282755[_0x3d2c('0x7e')](),{'type':db['sequelize']['QueryTypes']['SELECT']})[_0x3d2c('0x2b')](function(_0x1d628e){if(_0x1d628e[_0x3d2c('0x3c')]===0x1){return _0x33f969['id'];}else{var _0x2dae49=_['every'](_['map'](_0x1d628e,_0x3d2c('0x7f')),function(_0xdc8fec){return _['includes'](_0x563281,_0xdc8fec);});if(_0x2dae49){return _0x33f969['id'];}}}));}}return BPromise[_0x3d2c('0x80')](_0x675ac9)[_0x3d2c('0x2b')](function(_0x26a63c){_0x1c320d=_(_0x1c320d)[_0x3d2c('0x81')](_0x26a63c)[_0x3d2c('0x82')]()[_0x3d2c('0x83')]();return db[_0x3d2c('0x32')][_0x3d2c('0x4a')]({'where':{'id':_0x70c5c0[_0x3d2c('0x55')]['id']}})[_0x3d2c('0x2b')](function(_0xd9eb2d){return db[_0x3d2c('0x7d')][_0x3d2c('0x6c')](function(_0x24f041){return _0xd9eb2d[_0x3d2c('0x72')](_0x70c5c0[_0x3d2c('0x36')][_0x3d2c('0x68')],{'transaction':_0x24f041})[_0x3d2c('0x2b')](function(){if(!_[_0x3d2c('0x84')](_0x1c320d)){return _0xd9eb2d[_0x3d2c('0x85')](_0x1c320d,{'transaction':_0x24f041});}})['then'](function(){_0x1c320d[_0x3d2c('0x6f')](function(_0x1c591d){socket['emit'](_0x3d2c('0x86'),{'UserId':_0x1c591d,'FaxQueueId':_0xd9eb2d['id']});});});});});});})['then'](respondWithStatusCode(_0x3aaa58,null))[_0x3d2c('0x4b')](handleError(_0x3aaa58,null));};exports[_0x3d2c('0x87')]=function(_0x57c20c,_0x3712e2,_0x43da18){return db['FaxQueue'][_0x3d2c('0x4a')]({'where':{'id':_0x57c20c[_0x3d2c('0x55')]['id']}})['then'](handleEntityNotFound(_0x3712e2,null))[_0x3d2c('0x2b')](function(_0x4018f4){if(_0x4018f4){return _0x4018f4[_0x3d2c('0x87')](_0x57c20c[_0x3d2c('0x54')][_0x3d2c('0x68')],_[_0x3d2c('0x88')](_0x57c20c[_0x3d2c('0x54')],[_0x3d2c('0x68'),'id'])||{})[_0x3d2c('0x89')](function(_0x2ae031){for(var _0x42615c=0x0;_0x42615c<_0x57c20c[_0x3d2c('0x54')][_0x3d2c('0x68')][_0x3d2c('0x3c')];_0x42615c+=0x1){socket[_0x3d2c('0x70')]('userFaxQueue:save',{'UserId':Number(_0x57c20c[_0x3d2c('0x54')][_0x3d2c('0x68')][_0x42615c]),'FaxQueueId':Number(_0x57c20c[_0x3d2c('0x55')]['id'])});}return _0x2ae031;});}})[_0x3d2c('0x2b')](respondWithResult(_0x3712e2,null))[_0x3d2c('0x4b')](handleError(_0x3712e2,null));};exports['removeAgents']=function(_0x4c64b5,_0x40c503,_0x6fdfc5){return db[_0x3d2c('0x32')]['find']({'where':{'id':_0x4c64b5[_0x3d2c('0x55')]['id']}})['then'](handleEntityNotFound(_0x40c503,null))[_0x3d2c('0x2b')](function(_0x51e514){if(_0x51e514){return _0x51e514[_0x3d2c('0x85')](_0x4c64b5[_0x3d2c('0x36')][_0x3d2c('0x68')])[_0x3d2c('0x2b')](function(){if(_[_0x3d2c('0x8a')](_0x4c64b5['query']['ids'])){for(var _0x690403=0x0;_0x690403<_0x4c64b5['query']['ids'][_0x3d2c('0x3c')];_0x690403+=0x1){socket[_0x3d2c('0x70')](_0x3d2c('0x86'),{'UserId':Number(_0x4c64b5[_0x3d2c('0x36')][_0x3d2c('0x68')][_0x690403]),'FaxQueueId':Number(_0x4c64b5[_0x3d2c('0x55')]['id'])});}}else{socket['emit'](_0x3d2c('0x86'),{'UserId':Number(_0x4c64b5[_0x3d2c('0x36')][_0x3d2c('0x68')]),'FaxQueueId':Number(_0x4c64b5[_0x3d2c('0x55')]['id'])});}});}})[_0x3d2c('0x2b')](respondWithStatusCode(_0x40c503,null))['catch'](handleError(_0x40c503,null));};exports[_0x3d2c('0x8b')]=function(_0x51cfc8,_0x1236fe,_0x321c5d){var _0x544737={};var _0x407ee1={};var _0x42beeb;var _0x57f209;return db[_0x3d2c('0x32')]['findOne']({'where':{'id':_0x51cfc8[_0x3d2c('0x55')]['id']}})[_0x3d2c('0x2b')](handleEntityNotFound(_0x1236fe,null))[_0x3d2c('0x2b')](function(_0x1b28f8){if(_0x1b28f8){_0x42beeb=_0x1b28f8;_0x407ee1[_0x3d2c('0x35')]=_[_0x3d2c('0x37')](db['User']['rawAttributes']);_0x407ee1[_0x3d2c('0x36')]=_['keys'](_0x51cfc8[_0x3d2c('0x36')]);_0x407ee1['filters']=_['intersection'](_0x407ee1[_0x3d2c('0x35')],_0x407ee1['query']);_0x544737[_0x3d2c('0x3a')]=_[_0x3d2c('0x39')](_0x407ee1['model'],qs[_0x3d2c('0x3b')](_0x51cfc8[_0x3d2c('0x36')]['fields']));_0x544737[_0x3d2c('0x3a')]=_0x544737[_0x3d2c('0x3a')][_0x3d2c('0x3c')]?_0x544737[_0x3d2c('0x3a')]:_0x407ee1[_0x3d2c('0x35')];_0x544737[_0x3d2c('0x3e')]=qs[_0x3d2c('0x3f')](_0x51cfc8[_0x3d2c('0x36')][_0x3d2c('0x3f')]);_0x544737[_0x3d2c('0x40')]=qs[_0x3d2c('0x38')](_['pick'](_0x51cfc8[_0x3d2c('0x36')],_0x407ee1[_0x3d2c('0x38')]));if(_0x51cfc8[_0x3d2c('0x36')]['filter']){_0x544737['where']=_[_0x3d2c('0x44')](_0x544737[_0x3d2c('0x40')],{'$or':_[_0x3d2c('0x31')](_0x544737[_0x3d2c('0x3a')],function(_0x5aeb47){var _0xe608a5={};_0xe608a5[_0x5aeb47]={'$like':'%'+_0x51cfc8[_0x3d2c('0x36')]['filter']+'%'};return _0xe608a5;})});}_0x544737=_[_0x3d2c('0x44')]({},_0x544737,_0x51cfc8[_0x3d2c('0x45')]);return _0x42beeb[_0x3d2c('0x8b')](_0x544737);}})[_0x3d2c('0x2b')](function(_0x170d66){if(_0x170d66){_0x57f209=_0x170d66[_0x3d2c('0x3c')];if(!_0x51cfc8[_0x3d2c('0x36')][_0x3d2c('0x59')](_0x3d2c('0x3d'))){_0x544737[_0x3d2c('0x25')]=qs['limit'](_0x51cfc8[_0x3d2c('0x36')][_0x3d2c('0x25')]);_0x544737[_0x3d2c('0x23')]=qs['offset'](_0x51cfc8[_0x3d2c('0x36')][_0x3d2c('0x23')]);}return _0x42beeb['getAgents'](_0x544737);}})[_0x3d2c('0x2b')](function(_0x3ca487){if(_0x3ca487){return _0x3ca487?{'count':_0x57f209,'rows':_0x3ca487}:null;}})[_0x3d2c('0x2b')](respondWithResult(_0x1236fe,null))[_0x3d2c('0x4b')](handleError(_0x1236fe,null));};
\ No newline at end of file
+var _0x9b1d=['fieldName','type','model','map','query','keys','intersection','attributes','fields','order','sort','where','pick','filters','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','length','create','body','user','FaxQueues','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','params','describe','getMembers','findOne','UserFaxQueue','hasOwnProperty','nolimit','findAndCountAll','agent','updatedAt','createdAt','faxPause','getTeams','addTeams','Team','Agents','interface','transaction','each','findOrCreate','forEach','emit','ids','User','select','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','toString','sequelize','QueryTypes','every','TeamId','includes','all','union','compact','value','removeTeams','isEmpty','removeAgents','userFaxQueue:remove','addAgents','omit','userFaxQueue:save','isArray','getAgents','eml-format','rimraf','zip-dir','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','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','reject','save','update','then','get','UserProfileResource','destroy','error','stack','name','index','FaxQueue','rawAttributes'];(function(_0x1b6629,_0x41826d){var _0x3fbd4b=function(_0x533b4f){while(--_0x533b4f){_0x1b6629['push'](_0x1b6629['shift']());}};_0x3fbd4b(++_0x41826d);}(_0x9b1d,0x173));var _0xd9b1=function(_0x10a4f2,_0x437345){_0x10a4f2=_0x10a4f2-0x0;var _0x1a02bd=_0x9b1d[_0x10a4f2];return _0x1a02bd;};'use strict';var emlformat=require(_0xd9b1('0x0'));var rimraf=require(_0xd9b1('0x1'));var zipdir=require(_0xd9b1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd9b1('0x3'));var moment=require(_0xd9b1('0x4'));var BPromise=require(_0xd9b1('0x5'));var Mustache=require(_0xd9b1('0x6'));var util=require('util');var path=require(_0xd9b1('0x7'));var sox=require(_0xd9b1('0x8'));var csv=require(_0xd9b1('0x9'));var ejs=require(_0xd9b1('0xa'));var fs=require('fs');var fs_extra=require(_0xd9b1('0xb'));var _=require(_0xd9b1('0xc'));var squel=require(_0xd9b1('0xd'));var crypto=require(_0xd9b1('0xe'));var jsforce=require(_0xd9b1('0xf'));var deskjs=require(_0xd9b1('0x10'));var toCsv=require(_0xd9b1('0x9'));var querystring=require('querystring');var Papa=require(_0xd9b1('0x11'));var Redis=require(_0xd9b1('0x12'));var authService=require(_0xd9b1('0x13'));var qs=require(_0xd9b1('0x14'));var as=require(_0xd9b1('0x15'));var hardwareService=require(_0xd9b1('0x16'));var logger=require(_0xd9b1('0x17'))(_0xd9b1('0x18'));var utils=require(_0xd9b1('0x19'));var config=require(_0xd9b1('0x1a'));var licenseUtil=require(_0xd9b1('0x1b'));var db=require(_0xd9b1('0x1c'))['db'];config[_0xd9b1('0x1d')]=_[_0xd9b1('0x1e')](config['redis'],{'host':_0xd9b1('0x1f'),'port':0x18eb});var socket=require(_0xd9b1('0x20'))(new Redis(config['redis']));require(_0xd9b1('0x21'))[_0xd9b1('0x22')](socket);function respondWithStatusCode(_0x58a47e,_0x232a58){_0x232a58=_0x232a58||0xcc;return function(_0x199dbe){if(_0x199dbe){return _0x58a47e[_0xd9b1('0x23')](_0x232a58);}return _0x58a47e[_0xd9b1('0x24')](_0x232a58)[_0xd9b1('0x25')]();};}function respondWithResult(_0x13f9c0,_0x4dd91f){_0x4dd91f=_0x4dd91f||0xc8;return function(_0x1dbe3c){if(_0x1dbe3c){return _0x13f9c0[_0xd9b1('0x24')](_0x4dd91f)[_0xd9b1('0x26')](_0x1dbe3c);}};}function respondWithFilteredResult(_0x2ef93e,_0x5d672a){return function(_0xfd4a8b){if(_0xfd4a8b){var _0x5a3b65=typeof _0x5d672a['offset']==='undefined'&&typeof _0x5d672a[_0xd9b1('0x27')]===_0xd9b1('0x28');var _0x2287bc=_0xfd4a8b[_0xd9b1('0x29')];var _0x1588de=_0x5a3b65?0x0:_0x5d672a['offset'];var _0x3bafd2=_0x5a3b65?_0xfd4a8b[_0xd9b1('0x29')]:_0x5d672a[_0xd9b1('0x2a')]+_0x5d672a[_0xd9b1('0x27')];var _0x2448f8;if(_0x3bafd2>=_0x2287bc){_0x3bafd2=_0x2287bc;_0x2448f8=0xc8;}else{_0x2448f8=0xce;}_0x2ef93e['status'](_0x2448f8);return _0x2ef93e[_0xd9b1('0x2b')](_0xd9b1('0x2c'),_0x1588de+'-'+_0x3bafd2+'/'+_0x2287bc)[_0xd9b1('0x26')](_0xfd4a8b);}return null;};}function patchUpdates(_0x2933ba){return function(_0xa67ece){try{jsonpatch['apply'](_0xa67ece,_0x2933ba,!![]);}catch(_0x4e5c1f){return BPromise[_0xd9b1('0x2d')](_0x4e5c1f);}return _0xa67ece[_0xd9b1('0x2e')]();};}function saveUpdates(_0x179275,_0xf766a8){return function(_0x31ba79){if(_0x31ba79){return _0x31ba79[_0xd9b1('0x2f')](_0x179275)['then'](function(_0x368755){return _0x368755;});}return null;};}function removeEntity(_0x15e122,_0x215945){return function(_0x5599b5){if(_0x5599b5){return _0x5599b5['destroy']()[_0xd9b1('0x30')](function(){var _0x4dfc89=_0x5599b5[_0xd9b1('0x31')]({'plain':!![]});var _0x4c892f='FaxQueues';return db[_0xd9b1('0x32')][_0xd9b1('0x33')]({'where':{'type':_0x4c892f,'resourceId':_0x4dfc89['id']}})[_0xd9b1('0x30')](function(){return _0x5599b5;});})[_0xd9b1('0x30')](function(){_0x15e122['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5256a4,_0x34af09){return function(_0x4f248b){if(!_0x4f248b){_0x5256a4['sendStatus'](0x194);}return _0x4f248b;};}function handleError(_0x47d066,_0x44c24b){_0x44c24b=_0x44c24b||0x1f4;return function(_0xb5fdaa){logger[_0xd9b1('0x34')](_0xb5fdaa[_0xd9b1('0x35')]);if(_0xb5fdaa['name']){delete _0xb5fdaa[_0xd9b1('0x36')];}_0x47d066[_0xd9b1('0x24')](_0x44c24b)['send'](_0xb5fdaa);};}exports[_0xd9b1('0x37')]=function(_0x1c2330,_0x2978e5){var _0x432ef4={},_0x352184={},_0x2cd5cb={'count':0x0,'rows':[]};var _0xeb0fa7=_['map'](db[_0xd9b1('0x38')][_0xd9b1('0x39')],function(_0x36107a){return{'name':_0x36107a[_0xd9b1('0x3a')],'type':_0x36107a[_0xd9b1('0x3b')]['key']};});_0x352184[_0xd9b1('0x3c')]=_[_0xd9b1('0x3d')](_0xeb0fa7,'name');_0x352184[_0xd9b1('0x3e')]=_[_0xd9b1('0x3f')](_0x1c2330[_0xd9b1('0x3e')]);_0x352184['filters']=_[_0xd9b1('0x40')](_0x352184[_0xd9b1('0x3c')],_0x352184['query']);_0x432ef4[_0xd9b1('0x41')]=_[_0xd9b1('0x40')](_0x352184['model'],qs[_0xd9b1('0x42')](_0x1c2330[_0xd9b1('0x3e')][_0xd9b1('0x42')]));_0x432ef4[_0xd9b1('0x41')]=_0x432ef4[_0xd9b1('0x41')]['length']?_0x432ef4[_0xd9b1('0x41')]:_0x352184['model'];if(!_0x1c2330['query']['hasOwnProperty']('nolimit')){_0x432ef4[_0xd9b1('0x27')]=qs[_0xd9b1('0x27')](_0x1c2330[_0xd9b1('0x3e')][_0xd9b1('0x27')]);_0x432ef4['offset']=qs['offset'](_0x1c2330[_0xd9b1('0x3e')]['offset']);}_0x432ef4[_0xd9b1('0x43')]=qs[_0xd9b1('0x44')](_0x1c2330['query'][_0xd9b1('0x44')]);_0x432ef4[_0xd9b1('0x45')]=qs['filters'](_[_0xd9b1('0x46')](_0x1c2330['query'],_0x352184[_0xd9b1('0x47')]),_0xeb0fa7);if(_0x1c2330[_0xd9b1('0x3e')][_0xd9b1('0x48')]){_0x432ef4[_0xd9b1('0x45')]=_['merge'](_0x432ef4[_0xd9b1('0x45')],{'$or':_[_0xd9b1('0x3d')](_0xeb0fa7,function(_0x595eac){if(_0x595eac[_0xd9b1('0x3b')]!==_0xd9b1('0x49')){var _0x21db95={};_0x21db95[_0x595eac[_0xd9b1('0x36')]]={'$like':'%'+_0x1c2330[_0xd9b1('0x3e')][_0xd9b1('0x48')]+'%'};return _0x21db95;}})});}_0x432ef4=_[_0xd9b1('0x4a')]({},_0x432ef4,_0x1c2330[_0xd9b1('0x4b')]);var _0x76ba2d={'where':_0x432ef4[_0xd9b1('0x45')]};return db['FaxQueue'][_0xd9b1('0x29')](_0x76ba2d)[_0xd9b1('0x30')](function(_0x1ee2a8){_0x2cd5cb[_0xd9b1('0x29')]=_0x1ee2a8;if(_0x1c2330[_0xd9b1('0x3e')][_0xd9b1('0x4c')]){_0x432ef4[_0xd9b1('0x4d')]=[{'all':!![]}];}return db[_0xd9b1('0x38')][_0xd9b1('0x4e')](_0x432ef4);})[_0xd9b1('0x30')](function(_0x4a7b95){_0x2cd5cb[_0xd9b1('0x4f')]=_0x4a7b95;return _0x2cd5cb;})[_0xd9b1('0x30')](respondWithFilteredResult(_0x2978e5,_0x432ef4))[_0xd9b1('0x50')](handleError(_0x2978e5,null));};exports[_0xd9b1('0x51')]=function(_0x214986,_0x36e1a1){var _0x2748d8={'raw':!![],'where':{'id':_0x214986['params']['id']}},_0xb14b81={};_0xb14b81[_0xd9b1('0x3c')]=_['keys'](db['FaxQueue'][_0xd9b1('0x39')]);_0xb14b81[_0xd9b1('0x3e')]=_['keys'](_0x214986[_0xd9b1('0x3e')]);_0xb14b81['filters']=_[_0xd9b1('0x40')](_0xb14b81[_0xd9b1('0x3c')],_0xb14b81[_0xd9b1('0x3e')]);_0x2748d8[_0xd9b1('0x41')]=_['intersection'](_0xb14b81[_0xd9b1('0x3c')],qs['fields'](_0x214986['query'][_0xd9b1('0x42')]));_0x2748d8['attributes']=_0x2748d8['attributes'][_0xd9b1('0x52')]?_0x2748d8['attributes']:_0xb14b81[_0xd9b1('0x3c')];if(_0x214986['query']['includeAll']){_0x2748d8['include']=[{'all':!![]}];}_0x2748d8=_['merge']({},_0x2748d8,_0x214986[_0xd9b1('0x4b')]);return db[_0xd9b1('0x38')]['find'](_0x2748d8)['then'](handleEntityNotFound(_0x36e1a1,null))[_0xd9b1('0x30')](respondWithResult(_0x36e1a1,null))[_0xd9b1('0x50')](handleError(_0x36e1a1,null));};exports['create']=function(_0x303ac6,_0x42dae4){return db[_0xd9b1('0x38')][_0xd9b1('0x53')](_0x303ac6[_0xd9b1('0x54')],{})[_0xd9b1('0x30')](function(_0x47e238){var _0x4b1c2b=_0x303ac6[_0xd9b1('0x55')][_0xd9b1('0x31')]({'plain':!![]});if(!_0x4b1c2b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4b1c2b['role']===_0xd9b1('0x55')){var _0x3b478c=_0x47e238[_0xd9b1('0x31')]({'plain':!![]});var _0x544a1a=_0xd9b1('0x56');return db['UserProfileSection']['find']({'where':{'name':_0x544a1a,'userProfileId':_0x4b1c2b[_0xd9b1('0x57')]},'raw':!![]})[_0xd9b1('0x30')](function(_0x5cfa37){if(_0x5cfa37&&_0x5cfa37[_0xd9b1('0x58')]===0x0){return db['UserProfileResource'][_0xd9b1('0x53')]({'name':_0x3b478c[_0xd9b1('0x36')],'resourceId':_0x3b478c['id'],'type':_0x5cfa37[_0xd9b1('0x36')],'sectionId':_0x5cfa37['id']},{})[_0xd9b1('0x30')](function(){return _0x47e238;});}else{return _0x47e238;}})[_0xd9b1('0x50')](function(_0x167b16){logger[_0xd9b1('0x34')](_0xd9b1('0x59'),_0x167b16);throw _0x167b16;});}return _0x47e238;})[_0xd9b1('0x30')](respondWithResult(_0x42dae4,0xc9))[_0xd9b1('0x50')](handleError(_0x42dae4,null));};exports[_0xd9b1('0x2f')]=function(_0x2cfb25,_0x3d0512){if(_0x2cfb25[_0xd9b1('0x54')]['id']){delete _0x2cfb25[_0xd9b1('0x54')]['id'];}return db[_0xd9b1('0x38')][_0xd9b1('0x5a')]({'where':{'id':_0x2cfb25[_0xd9b1('0x5b')]['id']}})[_0xd9b1('0x30')](handleEntityNotFound(_0x3d0512,null))[_0xd9b1('0x30')](saveUpdates(_0x2cfb25['body'],null))[_0xd9b1('0x30')](respondWithResult(_0x3d0512,null))[_0xd9b1('0x50')](handleError(_0x3d0512,null));};exports['destroy']=function(_0x14b0ac,_0x36bca6){return db[_0xd9b1('0x38')]['find']({'where':{'id':_0x14b0ac[_0xd9b1('0x5b')]['id']}})[_0xd9b1('0x30')](handleEntityNotFound(_0x36bca6,null))[_0xd9b1('0x30')](removeEntity(_0x36bca6,null))[_0xd9b1('0x50')](handleError(_0x36bca6,null));};exports[_0xd9b1('0x5c')]=function(_0x5107f9,_0x435e23){return db['FaxQueue']['describe']()[_0xd9b1('0x30')](respondWithResult(_0x435e23,null))['catch'](handleError(_0x435e23,null));};exports[_0xd9b1('0x5d')]=function(_0x12a0c4,_0x88c2f7,_0x3c2ccd){var _0x22fa02={'raw':!![],'where':{}},_0x345c2a={},_0x548033;return db['FaxQueue'][_0xd9b1('0x5e')]({'where':{'id':_0x12a0c4[_0xd9b1('0x5b')]['id']}})[_0xd9b1('0x30')](handleEntityNotFound(_0x88c2f7,null))[_0xd9b1('0x30')](function(_0x1c2334){if(_0x1c2334){_0x548033=_0x1c2334[_0xd9b1('0x31')]({'plain':!![]});_0x345c2a['model']=_[_0xd9b1('0x3f')](db[_0xd9b1('0x5f')]['rawAttributes']);_0x345c2a[_0xd9b1('0x3e')]=_['keys'](_0x12a0c4[_0xd9b1('0x3e')]);_0x345c2a[_0xd9b1('0x47')]=_['intersection'](_0x345c2a['model'],_0x345c2a[_0xd9b1('0x3e')]);_0x22fa02['attributes']=_[_0xd9b1('0x40')](_0x345c2a[_0xd9b1('0x3c')],qs['fields'](_0x12a0c4[_0xd9b1('0x3e')][_0xd9b1('0x42')]));_0x22fa02[_0xd9b1('0x41')]=_0x22fa02[_0xd9b1('0x41')][_0xd9b1('0x52')]?_0x22fa02['attributes']:_0x345c2a[_0xd9b1('0x3c')];if(!_0x12a0c4['query'][_0xd9b1('0x60')](_0xd9b1('0x61'))){_0x22fa02[_0xd9b1('0x27')]=qs[_0xd9b1('0x27')](_0x12a0c4[_0xd9b1('0x3e')]['limit']);_0x22fa02[_0xd9b1('0x2a')]=qs['offset'](_0x12a0c4['query'][_0xd9b1('0x2a')]);}_0x22fa02['order']=qs[_0xd9b1('0x44')](_0x12a0c4[_0xd9b1('0x3e')][_0xd9b1('0x44')]);_0x22fa02[_0xd9b1('0x45')]=qs[_0xd9b1('0x47')](_[_0xd9b1('0x46')](_0x12a0c4[_0xd9b1('0x3e')],_0x345c2a['filters']));_0x22fa02[_0xd9b1('0x45')]['FaxQueueId']=_0x1c2334['id'];if(_0x12a0c4['query'][_0xd9b1('0x48')]){_0x22fa02[_0xd9b1('0x45')]=_[_0xd9b1('0x4a')](_0x22fa02[_0xd9b1('0x45')],{'$or':_['map'](_0x22fa02['attributes'],function(_0x484f4a){var _0x45fba6={};_0x45fba6[_0x484f4a]={'$like':'%'+_0x12a0c4[_0xd9b1('0x3e')][_0xd9b1('0x48')]+'%'};return _0x45fba6;})});}_0x22fa02=_['merge']({},_0x22fa02,_0x12a0c4[_0xd9b1('0x4b')]);return db[_0xd9b1('0x5f')][_0xd9b1('0x4e')](_0x22fa02);}})['then'](function(_0x9645d8){if(_0x9645d8){return db['User'][_0xd9b1('0x62')]({'where':{'id':_['map'](_0x9645d8,'UserId'),'role':_0xd9b1('0x63')},'attributes':['id','name','faxPause',_0xd9b1('0x64'),_0xd9b1('0x65')]});}})[_0xd9b1('0x30')](function(_0x106160){if(_0x106160){return{'count':_0x106160[_0xd9b1('0x29')],'rows':_[_0xd9b1('0x3d')](_0x106160[_0xd9b1('0x4f')],function(_0x1c613e){return{'membername':_0x1c613e['name'],'UserId':_0x1c613e['id'],'queue_name':_0x548033[_0xd9b1('0x36')],'FaxQueueId':_0x548033['id'],'interface':util['format']('%s/%s','SIP',_0x1c613e[_0xd9b1('0x36')]),'penalty':0x0,'paused':_0x1c613e[_0xd9b1('0x66')],'createdAt':_0x1c613e[_0xd9b1('0x65')],'updatedAt':_0x1c613e[_0xd9b1('0x64')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xd9b1('0x30')](respondWithFilteredResult(_0x88c2f7,_0x22fa02))[_0xd9b1('0x50')](handleError(_0x88c2f7,null));};exports[_0xd9b1('0x67')]=function(_0x198f7a,_0x2ef04c,_0x1ec26d){var _0x2aeaf4={};var _0x20ecf6={};var _0x568dee;var _0x1ca9ad;return db[_0xd9b1('0x38')][_0xd9b1('0x5e')]({'where':{'id':_0x198f7a[_0xd9b1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x2ef04c,null))[_0xd9b1('0x30')](function(_0x53800a){if(_0x53800a){_0x568dee=_0x53800a;_0x20ecf6[_0xd9b1('0x3c')]=_[_0xd9b1('0x3f')](db['Team'][_0xd9b1('0x39')]);_0x20ecf6['query']=_[_0xd9b1('0x3f')](_0x198f7a[_0xd9b1('0x3e')]);_0x20ecf6[_0xd9b1('0x47')]=_[_0xd9b1('0x40')](_0x20ecf6[_0xd9b1('0x3c')],_0x20ecf6[_0xd9b1('0x3e')]);_0x2aeaf4['attributes']=_[_0xd9b1('0x40')](_0x20ecf6[_0xd9b1('0x3c')],qs[_0xd9b1('0x42')](_0x198f7a[_0xd9b1('0x3e')]['fields']));_0x2aeaf4[_0xd9b1('0x41')]=_0x2aeaf4[_0xd9b1('0x41')]['length']?_0x2aeaf4[_0xd9b1('0x41')]:_0x20ecf6[_0xd9b1('0x3c')];_0x2aeaf4[_0xd9b1('0x43')]=qs[_0xd9b1('0x44')](_0x198f7a[_0xd9b1('0x3e')]['sort']);_0x2aeaf4[_0xd9b1('0x45')]=qs['filters'](_[_0xd9b1('0x46')](_0x198f7a[_0xd9b1('0x3e')],_0x20ecf6[_0xd9b1('0x47')]));if(_0x198f7a[_0xd9b1('0x3e')][_0xd9b1('0x48')]){_0x2aeaf4[_0xd9b1('0x45')]=_[_0xd9b1('0x4a')](_0x2aeaf4[_0xd9b1('0x45')],{'$or':_[_0xd9b1('0x3d')](_0x2aeaf4['attributes'],function(_0x4965c2){var _0x4684e5={};_0x4684e5[_0x4965c2]={'$like':'%'+_0x198f7a[_0xd9b1('0x3e')][_0xd9b1('0x48')]+'%'};return _0x4684e5;})});}_0x2aeaf4=_[_0xd9b1('0x4a')]({},_0x2aeaf4,_0x198f7a[_0xd9b1('0x4b')]);return _0x568dee[_0xd9b1('0x67')](_0x2aeaf4);}})[_0xd9b1('0x30')](function(_0x306077){if(_0x306077){_0x1ca9ad=_0x306077[_0xd9b1('0x52')];if(!_0x198f7a[_0xd9b1('0x3e')][_0xd9b1('0x60')](_0xd9b1('0x61'))){_0x2aeaf4[_0xd9b1('0x27')]=qs[_0xd9b1('0x27')](_0x198f7a[_0xd9b1('0x3e')]['limit']);_0x2aeaf4[_0xd9b1('0x2a')]=qs['offset'](_0x198f7a[_0xd9b1('0x3e')][_0xd9b1('0x2a')]);}return _0x568dee[_0xd9b1('0x67')](_0x2aeaf4);}})['then'](function(_0x34c8e8){if(_0x34c8e8){return _0x34c8e8?{'count':_0x1ca9ad,'rows':_0x34c8e8}:null;}})[_0xd9b1('0x30')](respondWithResult(_0x2ef04c,null))['catch'](handleError(_0x2ef04c,null));};exports[_0xd9b1('0x68')]=function(_0x1fa060,_0x368af8,_0x194a59){var _0x20ae02=_0x1fa060['body']['ids'];return db[_0xd9b1('0x69')][_0xd9b1('0x4e')]({'where':{'id':_0x20ae02},'attributes':['id'],'include':[{'model':db['User'],'as':_0xd9b1('0x6a'),'attributes':['id',_0xd9b1('0x36'),'online','voicePause',_0xd9b1('0x6b')],'raw':!![]}]})[_0xd9b1('0x30')](function(_0x52d001){if(_0x52d001){var _0x32dd84=_['flatMap'](_0x52d001,function(_0x5d1c21){var _0x194b45=_0x5d1c21[_0xd9b1('0x31')]({'plain':!![]});return _0x194b45[_0xd9b1('0x6a')];});return db[_0xd9b1('0x38')][_0xd9b1('0x5a')]({'where':{'id':_0x1fa060[_0xd9b1('0x5b')]['id']}})[_0xd9b1('0x30')](function(_0x2e778d){return db['sequelize'][_0xd9b1('0x6c')](function(_0x19351e){return _0x2e778d['addTeams'](_0x20ae02,{'transaction':_0x19351e})[_0xd9b1('0x30')](function(){return BPromise[_0xd9b1('0x6d')](_0x32dd84,function(_0xb1da70){return db['UserFaxQueue'][_0xd9b1('0x6e')]({'where':{'UserId':_0xb1da70['id'],'FaxQueueId':_0x1fa060[_0xd9b1('0x5b')]['id']},'transaction':_0x19351e});});})[_0xd9b1('0x30')](function(){_0x32dd84[_0xd9b1('0x6f')](function(_0x5332eb){socket[_0xd9b1('0x70')]('userFaxQueue:save',{'UserId':_0x5332eb['id'],'FaxQueueId':_0x2e778d['id']});});});});});}})[_0xd9b1('0x30')](respondWithStatusCode(_0x368af8,null))['catch'](handleError(_0x368af8,null));};exports['removeTeams']=function(_0x5bd368,_0x3a84a4,_0x1e2327){return db[_0xd9b1('0x69')]['findAll']({'where':{'id':_0x5bd368[_0xd9b1('0x3e')][_0xd9b1('0x71')]},'attributes':['id'],'include':[{'model':db[_0xd9b1('0x72')],'as':_0xd9b1('0x6a'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x3a84a4,null))['then'](function(_0x568ce8){var _0x43bc50=_[_0xd9b1('0x3d')](_0x568ce8,'id');var _0x247b81=[];var _0x5173df=[];var _0x488cb2=squel[_0xd9b1('0x73')]();_0x488cb2['field'](_0xd9b1('0x74'))[_0xd9b1('0x75')]('team_has_fax_queues','tq')[_0xd9b1('0x76')](_0xd9b1('0x77'),'ut',_0xd9b1('0x78'))[_0xd9b1('0x45')]('FaxQueueId\x20=\x20?',_0x5bd368[_0xd9b1('0x5b')]['id']);for(var _0x3a807a=0x0;_0x3a807a<_0x568ce8[_0xd9b1('0x52')];_0x3a807a+=0x1){let _0x4574c1=_0x568ce8[_0x3a807a];for(var _0x303c0d=0x0;_0x303c0d<_0x4574c1[_0xd9b1('0x6a')][_0xd9b1('0x52')];_0x303c0d+=0x1){let _0x2871d6=_0x4574c1[_0xd9b1('0x6a')][_0x303c0d];var _0x4753f3=_0x488cb2[_0xd9b1('0x79')]();_0x4753f3[_0xd9b1('0x45')](_0xd9b1('0x7a'),_0x2871d6['id']);_0x5173df[_0xd9b1('0x7b')](db['sequelize']['query'](_0x4753f3[_0xd9b1('0x7c')](),{'type':db[_0xd9b1('0x7d')][_0xd9b1('0x7e')]['SELECT']})[_0xd9b1('0x30')](function(_0x1a0389){if(_0x1a0389[_0xd9b1('0x52')]===0x1){return _0x2871d6['id'];}else{var _0x1e9b23=_[_0xd9b1('0x7f')](_[_0xd9b1('0x3d')](_0x1a0389,_0xd9b1('0x80')),function(_0x46ed94){return _[_0xd9b1('0x81')](_0x43bc50,_0x46ed94);});if(_0x1e9b23){return _0x2871d6['id'];}}}));}}return BPromise[_0xd9b1('0x82')](_0x5173df)['then'](function(_0x47cccc){_0x247b81=_(_0x247b81)[_0xd9b1('0x83')](_0x47cccc)[_0xd9b1('0x84')]()[_0xd9b1('0x85')]();return db[_0xd9b1('0x38')][_0xd9b1('0x5a')]({'where':{'id':_0x5bd368[_0xd9b1('0x5b')]['id']}})['then'](function(_0xcb373d){return db[_0xd9b1('0x7d')][_0xd9b1('0x6c')](function(_0x343d18){return _0xcb373d[_0xd9b1('0x86')](_0x5bd368[_0xd9b1('0x3e')]['ids'],{'transaction':_0x343d18})['then'](function(){if(!_[_0xd9b1('0x87')](_0x247b81)){return _0xcb373d[_0xd9b1('0x88')](_0x247b81,{'transaction':_0x343d18});}})[_0xd9b1('0x30')](function(){_0x247b81[_0xd9b1('0x6f')](function(_0x127365){socket[_0xd9b1('0x70')](_0xd9b1('0x89'),{'UserId':_0x127365,'FaxQueueId':_0xcb373d['id']});});});});});});})[_0xd9b1('0x30')](respondWithStatusCode(_0x3a84a4,null))['catch'](handleError(_0x3a84a4,null));};exports[_0xd9b1('0x8a')]=function(_0x212eb6,_0x22681c,_0x3efc40){return db[_0xd9b1('0x38')][_0xd9b1('0x5a')]({'where':{'id':_0x212eb6['params']['id']}})[_0xd9b1('0x30')](handleEntityNotFound(_0x22681c,null))[_0xd9b1('0x30')](function(_0x3eec80){if(_0x3eec80){return _0x3eec80[_0xd9b1('0x8a')](_0x212eb6[_0xd9b1('0x54')][_0xd9b1('0x71')],_[_0xd9b1('0x8b')](_0x212eb6[_0xd9b1('0x54')],[_0xd9b1('0x71'),'id'])||{})['spread'](function(_0x2db32f){for(var _0x295b90=0x0;_0x295b90<_0x212eb6['body'][_0xd9b1('0x71')][_0xd9b1('0x52')];_0x295b90+=0x1){socket['emit'](_0xd9b1('0x8c'),{'UserId':Number(_0x212eb6[_0xd9b1('0x54')][_0xd9b1('0x71')][_0x295b90]),'FaxQueueId':Number(_0x212eb6[_0xd9b1('0x5b')]['id'])});}return _0x2db32f;});}})['then'](respondWithResult(_0x22681c,null))[_0xd9b1('0x50')](handleError(_0x22681c,null));};exports[_0xd9b1('0x88')]=function(_0x55af70,_0x1664bc,_0x5b3b40){return db[_0xd9b1('0x38')]['find']({'where':{'id':_0x55af70[_0xd9b1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x1664bc,null))[_0xd9b1('0x30')](function(_0x1576ad){if(_0x1576ad){return _0x1576ad['removeAgents'](_0x55af70[_0xd9b1('0x3e')][_0xd9b1('0x71')])['then'](function(){if(_[_0xd9b1('0x8d')](_0x55af70[_0xd9b1('0x3e')][_0xd9b1('0x71')])){for(var _0x5a0f9c=0x0;_0x5a0f9c<_0x55af70[_0xd9b1('0x3e')][_0xd9b1('0x71')][_0xd9b1('0x52')];_0x5a0f9c+=0x1){socket['emit'](_0xd9b1('0x89'),{'UserId':Number(_0x55af70[_0xd9b1('0x3e')][_0xd9b1('0x71')][_0x5a0f9c]),'FaxQueueId':Number(_0x55af70[_0xd9b1('0x5b')]['id'])});}}else{socket['emit']('userFaxQueue:remove',{'UserId':Number(_0x55af70[_0xd9b1('0x3e')][_0xd9b1('0x71')]),'FaxQueueId':Number(_0x55af70[_0xd9b1('0x5b')]['id'])});}});}})[_0xd9b1('0x30')](respondWithStatusCode(_0x1664bc,null))[_0xd9b1('0x50')](handleError(_0x1664bc,null));};exports[_0xd9b1('0x8e')]=function(_0x403ba4,_0x252578,_0x320b85){var _0x3448b7={};var _0x1b7a92={};var _0x1e7a3c;var _0x51a31b;return db[_0xd9b1('0x38')][_0xd9b1('0x5e')]({'where':{'id':_0x403ba4['params']['id']}})[_0xd9b1('0x30')](handleEntityNotFound(_0x252578,null))[_0xd9b1('0x30')](function(_0xbfad21){if(_0xbfad21){_0x1e7a3c=_0xbfad21;_0x1b7a92['model']=_[_0xd9b1('0x3f')](db[_0xd9b1('0x72')][_0xd9b1('0x39')]);_0x1b7a92[_0xd9b1('0x3e')]=_[_0xd9b1('0x3f')](_0x403ba4['query']);_0x1b7a92['filters']=_[_0xd9b1('0x40')](_0x1b7a92[_0xd9b1('0x3c')],_0x1b7a92[_0xd9b1('0x3e')]);_0x3448b7[_0xd9b1('0x41')]=_[_0xd9b1('0x40')](_0x1b7a92[_0xd9b1('0x3c')],qs[_0xd9b1('0x42')](_0x403ba4[_0xd9b1('0x3e')][_0xd9b1('0x42')]));_0x3448b7[_0xd9b1('0x41')]=_0x3448b7[_0xd9b1('0x41')][_0xd9b1('0x52')]?_0x3448b7['attributes']:_0x1b7a92['model'];_0x3448b7[_0xd9b1('0x43')]=qs[_0xd9b1('0x44')](_0x403ba4[_0xd9b1('0x3e')][_0xd9b1('0x44')]);_0x3448b7[_0xd9b1('0x45')]=qs[_0xd9b1('0x47')](_[_0xd9b1('0x46')](_0x403ba4[_0xd9b1('0x3e')],_0x1b7a92[_0xd9b1('0x47')]));if(_0x403ba4[_0xd9b1('0x3e')][_0xd9b1('0x48')]){_0x3448b7['where']=_[_0xd9b1('0x4a')](_0x3448b7[_0xd9b1('0x45')],{'$or':_[_0xd9b1('0x3d')](_0x3448b7[_0xd9b1('0x41')],function(_0xd2f71e){var _0x5f2f1c={};_0x5f2f1c[_0xd2f71e]={'$like':'%'+_0x403ba4[_0xd9b1('0x3e')][_0xd9b1('0x48')]+'%'};return _0x5f2f1c;})});}_0x3448b7=_[_0xd9b1('0x4a')]({},_0x3448b7,_0x403ba4[_0xd9b1('0x4b')]);return _0x1e7a3c[_0xd9b1('0x8e')](_0x3448b7);}})[_0xd9b1('0x30')](function(_0x4fbd34){if(_0x4fbd34){_0x51a31b=_0x4fbd34[_0xd9b1('0x52')];if(!_0x403ba4[_0xd9b1('0x3e')]['hasOwnProperty']('nolimit')){_0x3448b7[_0xd9b1('0x27')]=qs[_0xd9b1('0x27')](_0x403ba4['query']['limit']);_0x3448b7[_0xd9b1('0x2a')]=qs[_0xd9b1('0x2a')](_0x403ba4[_0xd9b1('0x3e')][_0xd9b1('0x2a')]);}return _0x1e7a3c['getAgents'](_0x3448b7);}})[_0xd9b1('0x30')](function(_0x309578){if(_0x309578){return _0x309578?{'count':_0x51a31b,'rows':_0x309578}:null;}})[_0xd9b1('0x30')](respondWithResult(_0x252578,null))[_0xd9b1('0x50')](handleError(_0x252578,null));};
\ No newline at end of file
index 0e1ea86..74075e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0573=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x313306,_0x19c565){var _0x5464f3=function(_0x474140){while(--_0x474140){_0x313306['push'](_0x313306['shift']());}};_0x5464f3(++_0x19c565);}(_0x0573,0x64));var _0x3057=function(_0x4fb4b9,_0x4cb15c){_0x4fb4b9=_0x4fb4b9-0x0;var _0x5b50a3=_0x0573[_0x4fb4b9];return _0x5b50a3;};'use strict';var EventEmitter=require(_0x3057('0x0'));var FaxQueue=require(_0x3057('0x1'))['db']['FaxQueue'];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x3057('0x2')](0x0);var events={'afterCreate':_0x3057('0x3'),'afterUpdate':_0x3057('0x4'),'afterDestroy':_0x3057('0x5')};function emitEvent(_0x4554f9){return function(_0x5d1675,_0x107f52,_0x26e73a){FaxQueueEvents[_0x3057('0x6')](_0x4554f9+':'+_0x5d1675['id'],_0x5d1675);FaxQueueEvents[_0x3057('0x6')](_0x4554f9,_0x5d1675);_0x26e73a(null);};}for(var e in events){if(events[_0x3057('0x7')](e)){var event=events[e];FaxQueue[_0x3057('0x8')](e,emitEvent(event));}}module[_0x3057('0x9')]=FaxQueueEvents;
\ No newline at end of file
+var _0xd345=['remove','emit','hasOwnProperty','hook','events','../../mysqldb','FaxQueue','update'];(function(_0x767c51,_0x25c455){var _0x717e11=function(_0x21c2ef){while(--_0x21c2ef){_0x767c51['push'](_0x767c51['shift']());}};_0x717e11(++_0x25c455);}(_0xd345,0xe4));var _0x5d34=function(_0x1119ab,_0x2127e4){_0x1119ab=_0x1119ab-0x0;var _0x337c16=_0xd345[_0x1119ab];return _0x337c16;};'use strict';var EventEmitter=require(_0x5d34('0x0'));var FaxQueue=require(_0x5d34('0x1'))['db'][_0x5d34('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x5d34('0x3'),'afterDestroy':_0x5d34('0x4')};function emitEvent(_0x4ba72c){return function(_0x41adc9,_0xd7464f,_0xe8ac73){FaxQueueEvents[_0x5d34('0x5')](_0x4ba72c+':'+_0x41adc9['id'],_0x41adc9);FaxQueueEvents[_0x5d34('0x5')](_0x4ba72c,_0x41adc9);_0xe8ac73(null);};}for(var e in events){if(events[_0x5d34('0x6')](e)){var event=events[e];FaxQueue[_0x5d34('0x7')](e,emitEvent(event));}}module['exports']=FaxQueueEvents;
\ No newline at end of file
index 61d5555..4681ce1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x442a=['./faxQueue.attributes','exports','define','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x257b7f,_0x2226dc){var _0x2a6d4f=function(_0x537ea9){while(--_0x537ea9){_0x257b7f['push'](_0x257b7f['shift']());}};_0x2a6d4f(++_0x2226dc);}(_0x442a,0x1b3));var _0xa442=function(_0x28d18d,_0x55896b){_0x28d18d=_0x28d18d-0x0;var _0x470640=_0x442a[_0x28d18d];return _0x470640;};'use strict';var _=require(_0xa442('0x0'));var util=require(_0xa442('0x1'));var logger=require(_0xa442('0x2'))(_0xa442('0x3'));var moment=require(_0xa442('0x4'));var BPromise=require(_0xa442('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa442('0x6'));var rimraf=require(_0xa442('0x7'));var config=require(_0xa442('0x8'));var attributes=require(_0xa442('0x9'));module[_0xa442('0xa')]=function(_0x9b1c7c,_0xd602e3){return _0x9b1c7c[_0xa442('0xb')]('FaxQueue',attributes,{'tableName':'fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2c79=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueue.attributes','exports','FaxQueue','lodash','util','../../config/logger'];(function(_0x5ea79d,_0x2b6657){var _0x3c2b27=function(_0x160aad){while(--_0x160aad){_0x5ea79d['push'](_0x5ea79d['shift']());}};_0x3c2b27(++_0x2b6657);}(_0x2c79,0x15c));var _0x92c7=function(_0x2e4484,_0x324f8d){_0x2e4484=_0x2e4484-0x0;var _0x278b84=_0x2c79[_0x2e4484];return _0x278b84;};'use strict';var _=require(_0x92c7('0x0'));var util=require(_0x92c7('0x1'));var logger=require(_0x92c7('0x2'))(_0x92c7('0x3'));var moment=require(_0x92c7('0x4'));var BPromise=require(_0x92c7('0x5'));var rp=require(_0x92c7('0x6'));var fs=require('fs');var path=require(_0x92c7('0x7'));var rimraf=require(_0x92c7('0x8'));var config=require(_0x92c7('0x9'));var attributes=require(_0x92c7('0xa'));module[_0x92c7('0xb')]=function(_0xb8571b,_0x33911f){return _0xb8571b['define'](_0x92c7('0xc'),attributes,{'tableName':'fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0ef77d0..b1e8855 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6118=['util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','request','then','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetFaxQueue','FaxQueue','findAll','options','raw','where','attributes','limit','include','map','model','ShowFaxQueue','lodash'];(function(_0x2abacb,_0x2887a0){var _0x1e0521=function(_0xddec60){while(--_0xddec60){_0x2abacb['push'](_0x2abacb['shift']());}};_0x1e0521(++_0x2887a0);}(_0x6118,0xfb));var _0x8611=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x6118[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require(_0x8611('0x0'));var util=require(_0x8611('0x1'));var moment=require(_0x8611('0x2'));var BPromise=require(_0x8611('0x3'));var rs=require(_0x8611('0x4'));var fs=require('fs');var Redis=require(_0x8611('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x8611('0x6'));var logger=require(_0x8611('0x7'))('rpc');var config=require(_0x8611('0x8'));var jayson=require(_0x8611('0x9'));var client=jayson[_0x8611('0xa')][_0x8611('0xb')]({'port':0x232a});config[_0x8611('0xc')]=_[_0x8611('0xd')](config['redis'],{'host':_0x8611('0xe'),'port':0x18eb});var socket=require(_0x8611('0xf'))(new Redis(config['redis']));require(_0x8611('0x10'))['register'](socket);function respondWithRpcPromise(_0x476cab,_0x44c181,_0x659fc9){return new BPromise(function(_0x22b2fd,_0x152975){return client[_0x8611('0x11')](_0x476cab,_0x659fc9)[_0x8611('0x12')](function(_0x2008d5){logger[_0x8611('0x13')](_0x8611('0x14'),_0x44c181,_0x8611('0x15'));logger[_0x8611('0x16')](_0x8611('0x17'),_0x44c181,_0x8611('0x15'),JSON[_0x8611('0x18')](_0x2008d5));if(_0x2008d5[_0x8611('0x19')]){if(_0x2008d5[_0x8611('0x19')][_0x8611('0x1a')]===0x1f4){logger[_0x8611('0x19')](_0x8611('0x14'),_0x44c181,_0x2008d5[_0x8611('0x19')]['message']);return _0x152975(_0x2008d5[_0x8611('0x19')][_0x8611('0x1b')]);}logger[_0x8611('0x19')](_0x8611('0x14'),_0x44c181,_0x2008d5[_0x8611('0x19')][_0x8611('0x1b')]);return _0x22b2fd(_0x2008d5['error'][_0x8611('0x1b')]);}else{logger[_0x8611('0x13')](_0x8611('0x14'),_0x44c181,_0x8611('0x15'));_0x22b2fd(_0x2008d5[_0x8611('0x1c')][_0x8611('0x1b')]);}})[_0x8611('0x1d')](function(_0x53cae8){logger[_0x8611('0x19')]('FaxQueue,\x20%s,\x20%s',_0x44c181,_0x53cae8);_0x152975(_0x53cae8);});});}exports[_0x8611('0x1e')]=function(_0x37d87a){var _0x209ee0=this;return new Promise(function(_0x5a5914,_0x9ee129){return db[_0x8611('0x1f')][_0x8611('0x20')]({'raw':_0x37d87a['options']?_0x37d87a[_0x8611('0x21')][_0x8611('0x22')]===undefined?!![]:![]:!![],'where':_0x37d87a[_0x8611('0x21')]?_0x37d87a[_0x8611('0x21')][_0x8611('0x23')]||null:null,'attributes':_0x37d87a[_0x8611('0x21')]?_0x37d87a[_0x8611('0x21')][_0x8611('0x24')]||null:null,'limit':_0x37d87a[_0x8611('0x21')]?_0x37d87a[_0x8611('0x21')][_0x8611('0x25')]||null:null,'include':_0x37d87a[_0x8611('0x21')]?_0x37d87a[_0x8611('0x21')][_0x8611('0x26')]?_[_0x8611('0x27')](_0x37d87a['options'][_0x8611('0x26')],function(_0x39219e){return{'model':db[_0x39219e['model']],'as':_0x39219e['as'],'attributes':_0x39219e[_0x8611('0x24')],'include':_0x39219e[_0x8611('0x26')]?_[_0x8611('0x27')](_0x39219e[_0x8611('0x26')],function(_0x2e9b6b){return{'model':db[_0x2e9b6b[_0x8611('0x28')]],'as':_0x2e9b6b['as'],'attributes':_0x2e9b6b[_0x8611('0x24')],'include':_0x2e9b6b[_0x8611('0x26')]?_[_0x8611('0x27')](_0x2e9b6b[_0x8611('0x26')],function(_0x30ee05){return{'model':db[_0x30ee05[_0x8611('0x28')]],'as':_0x30ee05['as'],'attributes':_0x30ee05[_0x8611('0x24')]};}):[]};}):[]};}):[]:[]})[_0x8611('0x12')](function(_0x6a69e2){logger['info'](_0x8611('0x1e'),_0x37d87a);logger['debug'](_0x8611('0x1e'),_0x37d87a,JSON[_0x8611('0x18')](_0x6a69e2));_0x5a5914(_0x6a69e2);})[_0x8611('0x1d')](function(_0x4751be){logger[_0x8611('0x19')](_0x8611('0x1e'),_0x4751be[_0x8611('0x1b')],_0x37d87a);_0x9ee129(_0x209ee0[_0x8611('0x19')](0x1f4,_0x4751be['message']));});});};exports['ShowFaxQueue']=function(_0x3bb0c6){var _0xfafe07=this;return new Promise(function(_0x46d071,_0x20622a){return db[_0x8611('0x1f')]['find']({'raw':_0x3bb0c6[_0x8611('0x21')]?_0x3bb0c6['options'][_0x8611('0x22')]===undefined?!![]:![]:!![],'where':_0x3bb0c6[_0x8611('0x21')]?_0x3bb0c6[_0x8611('0x21')]['where']||null:null,'attributes':_0x3bb0c6[_0x8611('0x21')]?_0x3bb0c6['options'][_0x8611('0x24')]||null:null,'include':_0x3bb0c6[_0x8611('0x21')]?_0x3bb0c6['options'][_0x8611('0x26')]?_[_0x8611('0x27')](_0x3bb0c6[_0x8611('0x21')]['include'],function(_0x360c7e){return{'model':db[_0x360c7e['model']],'as':_0x360c7e['as'],'attributes':_0x360c7e['attributes'],'include':_0x360c7e['include']?_[_0x8611('0x27')](_0x360c7e[_0x8611('0x26')],function(_0x51e9ee){return{'model':db[_0x51e9ee['model']],'as':_0x51e9ee['as'],'attributes':_0x51e9ee[_0x8611('0x24')],'include':_0x51e9ee[_0x8611('0x26')]?_[_0x8611('0x27')](_0x51e9ee['include'],function(_0x420d0a){return{'model':db[_0x420d0a['model']],'as':_0x420d0a['as'],'attributes':_0x420d0a[_0x8611('0x24')]};}):[]};}):[]};}):[]:[]})[_0x8611('0x12')](function(_0x1d0869){logger['info'](_0x8611('0x29'),_0x3bb0c6);logger[_0x8611('0x16')](_0x8611('0x29'),_0x3bb0c6,JSON['stringify'](_0x1d0869));_0x46d071(_0x1d0869);})[_0x8611('0x1d')](function(_0x51ebc7){logger[_0x8611('0x19')](_0x8611('0x29'),_0x51ebc7[_0x8611('0x1b')],_0x3bb0c6);_0x20622a(_0xfafe07[_0x8611('0x19')](0x1f4,_0x51ebc7[_0x8611('0x1b')]));});});};
\ No newline at end of file
+var _0x5409=['jayson/promise','client','http','redis','defaults','socket.io-emitter','./faxQueue.socket','register','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetFaxQueue','FaxQueue','findAll','options','raw','include','map','attributes','model','then','ShowFaxQueue','find','where','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x35bf53,_0x3ed582){var _0x54420f=function(_0x3759e7){while(--_0x3759e7){_0x35bf53['push'](_0x35bf53['shift']());}};_0x54420f(++_0x3ed582);}(_0x5409,0x131));var _0x9540=function(_0x1a36ef,_0x1208fd){_0x1a36ef=_0x1a36ef-0x0;var _0x5abaac=_0x5409[_0x1a36ef];return _0x5abaac;};'use strict';var _=require('lodash');var util=require(_0x9540('0x0'));var moment=require(_0x9540('0x1'));var BPromise=require(_0x9540('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9540('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x9540('0x4'))(_0x9540('0x5'));var config=require(_0x9540('0x6'));var jayson=require(_0x9540('0x7'));var client=jayson[_0x9540('0x8')][_0x9540('0x9')]({'port':0x232a});config[_0x9540('0xa')]=_[_0x9540('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x9540('0xc'))(new Redis(config[_0x9540('0xa')]));require(_0x9540('0xd'))[_0x9540('0xe')](socket);function respondWithRpcPromise(_0x4d4f88,_0x147e1e,_0x2efeb9){return new BPromise(function(_0x29c5c0,_0x12cb86){return client['request'](_0x4d4f88,_0x2efeb9)['then'](function(_0x3bfa80){logger[_0x9540('0xf')](_0x9540('0x10'),_0x147e1e,_0x9540('0x11'));logger[_0x9540('0x12')](_0x9540('0x13'),_0x147e1e,'request\x20sent',JSON[_0x9540('0x14')](_0x3bfa80));if(_0x3bfa80[_0x9540('0x15')]){if(_0x3bfa80[_0x9540('0x15')][_0x9540('0x16')]===0x1f4){logger['error'](_0x9540('0x10'),_0x147e1e,_0x3bfa80[_0x9540('0x15')]['message']);return _0x12cb86(_0x3bfa80[_0x9540('0x15')]['message']);}logger[_0x9540('0x15')](_0x9540('0x10'),_0x147e1e,_0x3bfa80[_0x9540('0x15')][_0x9540('0x17')]);return _0x29c5c0(_0x3bfa80['error'][_0x9540('0x17')]);}else{logger[_0x9540('0xf')]('FaxQueue,\x20%s,\x20%s',_0x147e1e,_0x9540('0x11'));_0x29c5c0(_0x3bfa80[_0x9540('0x18')][_0x9540('0x17')]);}})[_0x9540('0x19')](function(_0x212d40){logger[_0x9540('0x15')](_0x9540('0x10'),_0x147e1e,_0x212d40);_0x12cb86(_0x212d40);});});}exports[_0x9540('0x1a')]=function(_0x54fa22){var _0x122a9b=this;return new Promise(function(_0x5c6a03,_0x19c6bc){return db[_0x9540('0x1b')][_0x9540('0x1c')]({'raw':_0x54fa22[_0x9540('0x1d')]?_0x54fa22[_0x9540('0x1d')][_0x9540('0x1e')]===undefined?!![]:![]:!![],'where':_0x54fa22[_0x9540('0x1d')]?_0x54fa22[_0x9540('0x1d')]['where']||null:null,'attributes':_0x54fa22[_0x9540('0x1d')]?_0x54fa22[_0x9540('0x1d')]['attributes']||null:null,'limit':_0x54fa22[_0x9540('0x1d')]?_0x54fa22[_0x9540('0x1d')]['limit']||null:null,'include':_0x54fa22['options']?_0x54fa22[_0x9540('0x1d')][_0x9540('0x1f')]?_[_0x9540('0x20')](_0x54fa22[_0x9540('0x1d')]['include'],function(_0x321bfc){return{'model':db[_0x321bfc['model']],'as':_0x321bfc['as'],'attributes':_0x321bfc[_0x9540('0x21')],'include':_0x321bfc[_0x9540('0x1f')]?_['map'](_0x321bfc[_0x9540('0x1f')],function(_0x1e1d85){return{'model':db[_0x1e1d85[_0x9540('0x22')]],'as':_0x1e1d85['as'],'attributes':_0x1e1d85['attributes'],'include':_0x1e1d85[_0x9540('0x1f')]?_[_0x9540('0x20')](_0x1e1d85[_0x9540('0x1f')],function(_0x373cd9){return{'model':db[_0x373cd9['model']],'as':_0x373cd9['as'],'attributes':_0x373cd9['attributes']};}):[]};}):[]};}):[]:[]})[_0x9540('0x23')](function(_0x326f62){logger[_0x9540('0xf')]('GetFaxQueue',_0x54fa22);logger['debug'](_0x9540('0x1a'),_0x54fa22,JSON[_0x9540('0x14')](_0x326f62));_0x5c6a03(_0x326f62);})['catch'](function(_0x485628){logger[_0x9540('0x15')](_0x9540('0x1a'),_0x485628[_0x9540('0x17')],_0x54fa22);_0x19c6bc(_0x122a9b['error'](0x1f4,_0x485628[_0x9540('0x17')]));});});};exports[_0x9540('0x24')]=function(_0x3ac837){var _0x4e32ba=this;return new Promise(function(_0x225f4c,_0x1b6fa5){return db[_0x9540('0x1b')][_0x9540('0x25')]({'raw':_0x3ac837[_0x9540('0x1d')]?_0x3ac837[_0x9540('0x1d')][_0x9540('0x1e')]===undefined?!![]:![]:!![],'where':_0x3ac837['options']?_0x3ac837[_0x9540('0x1d')][_0x9540('0x26')]||null:null,'attributes':_0x3ac837[_0x9540('0x1d')]?_0x3ac837[_0x9540('0x1d')][_0x9540('0x21')]||null:null,'include':_0x3ac837['options']?_0x3ac837[_0x9540('0x1d')][_0x9540('0x1f')]?_[_0x9540('0x20')](_0x3ac837['options'][_0x9540('0x1f')],function(_0x44455f){return{'model':db[_0x44455f[_0x9540('0x22')]],'as':_0x44455f['as'],'attributes':_0x44455f[_0x9540('0x21')],'include':_0x44455f['include']?_[_0x9540('0x20')](_0x44455f['include'],function(_0x15b938){return{'model':db[_0x15b938[_0x9540('0x22')]],'as':_0x15b938['as'],'attributes':_0x15b938[_0x9540('0x21')],'include':_0x15b938[_0x9540('0x1f')]?_[_0x9540('0x20')](_0x15b938[_0x9540('0x1f')],function(_0x505346){return{'model':db[_0x505346[_0x9540('0x22')]],'as':_0x505346['as'],'attributes':_0x505346['attributes']};}):[]};}):[]};}):[]:[]})[_0x9540('0x23')](function(_0x521899){logger[_0x9540('0xf')](_0x9540('0x24'),_0x3ac837);logger[_0x9540('0x12')](_0x9540('0x24'),_0x3ac837,JSON['stringify'](_0x521899));_0x225f4c(_0x521899);})[_0x9540('0x19')](function(_0x3b2138){logger[_0x9540('0x15')](_0x9540('0x24'),_0x3b2138[_0x9540('0x17')],_0x3ac837);_0x1b6fa5(_0x4e32ba[_0x9540('0x15')](0x1f4,_0x3b2138[_0x9540('0x17')]));});});};
\ No newline at end of file
index e42e719..e9b2c62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd730=['emit','removeListener','length','save','update'];(function(_0x493d8d,_0x237502){var _0x1f681d=function(_0x1fab71){while(--_0x1fab71){_0x493d8d['push'](_0x493d8d['shift']());}};_0x1f681d(++_0x237502);}(_0xd730,0xfd));var _0x0d73=function(_0x22cfda,_0x14c4dd){_0x22cfda=_0x22cfda-0x0;var _0x59e52f=_0xd730[_0x22cfda];return _0x59e52f;};'use strict';var FaxQueueEvents=require('./faxQueue.events');var events=[_0x0d73('0x0'),'remove',_0x0d73('0x1')];function createListener(_0x5f34ae,_0x44f280){return function(_0x5c9f09){_0x44f280[_0x0d73('0x2')](_0x5f34ae,_0x5c9f09);};}function removeListener(_0x44d213,_0x1c036c){return function(){FaxQueueEvents[_0x0d73('0x3')](_0x44d213,_0x1c036c);};}exports['register']=function(_0xa4eeac){for(var _0x1bb454=0x0,_0x55aba2=events[_0x0d73('0x4')];_0x1bb454<_0x55aba2;_0x1bb454++){var _0x5b966e=events[_0x1bb454];var _0x2a7202=createListener('faxQueue:'+_0x5b966e,_0xa4eeac);FaxQueueEvents['on'](_0x5b966e,_0x2a7202);}};
\ No newline at end of file
+var _0x2d9b=['removeListener','register','faxQueue:','./faxQueue.events','save','update','emit'];(function(_0x20fd58,_0x3041a1){var _0x17187e=function(_0x5eedd1){while(--_0x5eedd1){_0x20fd58['push'](_0x20fd58['shift']());}};_0x17187e(++_0x3041a1);}(_0x2d9b,0x73));var _0xb2d9=function(_0x11beb2,_0x155af8){_0x11beb2=_0x11beb2-0x0;var _0x4c50ef=_0x2d9b[_0x11beb2];return _0x4c50ef;};'use strict';var FaxQueueEvents=require(_0xb2d9('0x0'));var events=[_0xb2d9('0x1'),'remove',_0xb2d9('0x2')];function createListener(_0x267f57,_0x234dfb){return function(_0x581f2d){_0x234dfb[_0xb2d9('0x3')](_0x267f57,_0x581f2d);};}function removeListener(_0x19d2b1,_0x5b5dbf){return function(){FaxQueueEvents[_0xb2d9('0x4')](_0x19d2b1,_0x5b5dbf);};}exports[_0xb2d9('0x5')]=function(_0x53cdd3){for(var _0x182fb0=0x0,_0x1129fa=events['length'];_0x182fb0<_0x1129fa;_0x182fb0++){var _0x4c9cac=events[_0x182fb0];var _0x1cf7a5=createListener(_0xb2d9('0x6')+_0x4c9cac,_0x53cdd3);FaxQueueEvents['on'](_0x4c9cac,_0x1cf7a5);}};
\ No newline at end of file
index 6691864..de85515 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0af5=['create','addTeams','destroy','delete','removeTeams','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueue.controller','get','isAuthenticated','/describe','/:id','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post'];(function(_0x2405bc,_0x2f28a1){var _0x5272d4=function(_0x225294){while(--_0x225294){_0x2405bc['push'](_0x2405bc['shift']());}};_0x5272d4(++_0x2f28a1);}(_0x0af5,0x158));var _0x50af=function(_0xdc995b,_0x4ff893){_0xdc995b=_0xdc995b-0x0;var _0x8565b7=_0x0af5[_0xdc995b];return _0x8565b7;};'use strict';var multer=require('multer');var util=require(_0x50af('0x0'));var path=require(_0x50af('0x1'));var timeout=require(_0x50af('0x2'));var express=require(_0x50af('0x3'));var router=express[_0x50af('0x4')]();var fs_extra=require(_0x50af('0x5'));var auth=require(_0x50af('0x6'));var interaction=require(_0x50af('0x7'));var config=require(_0x50af('0x8'));var controller=require(_0x50af('0x9'));router[_0x50af('0xa')]('/',auth[_0x50af('0xb')](),controller['index']);router['get'](_0x50af('0xc'),auth[_0x50af('0xb')](),controller['describe']);router['get'](_0x50af('0xd'),auth[_0x50af('0xb')](),controller['show']);router['get'](_0x50af('0xe'),auth[_0x50af('0xb')](),controller['getMembers']);router[_0x50af('0xa')](_0x50af('0xf'),auth[_0x50af('0xb')](),controller[_0x50af('0x10')]);router['get'](_0x50af('0x11'),auth[_0x50af('0xb')](),controller[_0x50af('0x12')]);router[_0x50af('0x13')]('/',auth[_0x50af('0xb')](),controller[_0x50af('0x14')]);router['post']('/:id/teams',auth['isAuthenticated'](),controller[_0x50af('0x15')]);router['post'](_0x50af('0x11'),auth[_0x50af('0xb')](),controller['addAgents']);router['put'](_0x50af('0xd'),auth[_0x50af('0xb')](),controller['update']);router['delete'](_0x50af('0xd'),auth[_0x50af('0xb')](),controller[_0x50af('0x16')]);router[_0x50af('0x17')](_0x50af('0xf'),auth[_0x50af('0xb')](),controller[_0x50af('0x18')]);router[_0x50af('0x17')](_0x50af('0x11'),auth[_0x50af('0xb')](),controller['removeAgents']);module[_0x50af('0x19')]=router;
\ No newline at end of file
+var _0x5d0a=['fs-extra','../../components/auth/service','../../config/environment','./faxQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','create','post','/:id/users','addAgents','put','delete','destroy','removeTeams','removeAgents','exports','multer','path','express','Router'];(function(_0x274208,_0x3182ff){var _0x209164=function(_0x316e02){while(--_0x316e02){_0x274208['push'](_0x274208['shift']());}};_0x209164(++_0x3182ff);}(_0x5d0a,0x175));var _0xa5d0=function(_0x5ec660,_0x105498){_0x5ec660=_0x5ec660-0x0;var _0x11f584=_0x5d0a[_0x5ec660];return _0x11f584;};'use strict';var multer=require(_0xa5d0('0x0'));var util=require('util');var path=require(_0xa5d0('0x1'));var timeout=require('connect-timeout');var express=require(_0xa5d0('0x2'));var router=express[_0xa5d0('0x3')]();var fs_extra=require(_0xa5d0('0x4'));var auth=require(_0xa5d0('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xa5d0('0x6'));var controller=require(_0xa5d0('0x7'));router[_0xa5d0('0x8')]('/',auth[_0xa5d0('0x9')](),controller[_0xa5d0('0xa')]);router[_0xa5d0('0x8')](_0xa5d0('0xb'),auth[_0xa5d0('0x9')](),controller[_0xa5d0('0xc')]);router[_0xa5d0('0x8')](_0xa5d0('0xd'),auth['isAuthenticated'](),controller[_0xa5d0('0xe')]);router[_0xa5d0('0x8')](_0xa5d0('0xf'),auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x10')]);router[_0xa5d0('0x8')](_0xa5d0('0x11'),auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x12')]);router[_0xa5d0('0x8')]('/:id/users',auth[_0xa5d0('0x9')](),controller['getAgents']);router['post']('/',auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x13')]);router[_0xa5d0('0x14')](_0xa5d0('0x11'),auth['isAuthenticated'](),controller['addTeams']);router[_0xa5d0('0x14')](_0xa5d0('0x15'),auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x16')]);router[_0xa5d0('0x17')](_0xa5d0('0xd'),auth[_0xa5d0('0x9')](),controller['update']);router[_0xa5d0('0x18')]('/:id',auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x19')]);router['delete']('/:id/teams',auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x1a')]);router['delete'](_0xa5d0('0x15'),auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x1b')]);module[_0xa5d0('0x1c')]=router;
\ No newline at end of file
index 5f1e23a..aed9d28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92d4=['sequelize','exports','STRING','DATE','moment'];(function(_0x2bea35,_0x3f7baf){var _0x8477cb=function(_0x2ff3ee){while(--_0x2ff3ee){_0x2bea35['push'](_0x2bea35['shift']());}};_0x8477cb(++_0x3f7baf);}(_0x92d4,0x95));var _0x492d=function(_0x5ba623,_0x7804bd){_0x5ba623=_0x5ba623-0x0;var _0x99555d=_0x92d4[_0x5ba623];return _0x99555d;};'use strict';var moment=require(_0x492d('0x0'));var Sequelize=require(_0x492d('0x1'));module[_0x492d('0x2')]={'uniqueid':{'type':Sequelize[_0x492d('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x492d('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x492d('0x4')]},'exitAt':{'type':Sequelize[_0x492d('0x4')]},'reason':{'type':Sequelize[_0x492d('0x3')]}};
\ No newline at end of file
+var _0xeddf=['DATE','moment','sequelize','exports','STRING'];(function(_0x840cd,_0x2828bc){var _0x1b430a=function(_0x1628d4){while(--_0x1628d4){_0x840cd['push'](_0x840cd['shift']());}};_0x1b430a(++_0x2828bc);}(_0xeddf,0x13c));var _0xfedd=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xeddf[_0x321bb2];return _0x9c12ed;};'use strict';var moment=require(_0xfedd('0x0'));var Sequelize=require(_0xfedd('0x1'));module[_0xfedd('0x2')]={'uniqueid':{'type':Sequelize[_0xfedd('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xfedd('0x3')]},'joinAt':{'type':Sequelize[_0xfedd('0x4')]},'leaveAt':{'type':Sequelize[_0xfedd('0x4')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0xfedd('0x4')]},'reason':{'type':Sequelize[_0xfedd('0x3')]}};
\ No newline at end of file
index 60b2d88..402a177 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe80c=['order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','findAll','show','params','find','catch','create','body','update','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','end','json','offset','count','limit','Content-Range','reject','save','then','destroy','status','error','name','send','index','map','FaxQueueReport','rawAttributes','fieldName','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit'];(function(_0x533e52,_0x4805e3){var _0x491842=function(_0x25df30){while(--_0x25df30){_0x533e52['push'](_0x533e52['shift']());}};_0x491842(++_0x4805e3);}(_0xe80c,0x1c2));var _0xce80=function(_0x584421,_0x257eb2){_0x584421=_0x584421-0x0;var _0x527348=_0xe80c[_0x584421];return _0x527348;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xce80('0x0'));var zipdir=require(_0xce80('0x1'));var jsonpatch=require(_0xce80('0x2'));var rp=require(_0xce80('0x3'));var moment=require(_0xce80('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xce80('0x5'));var util=require(_0xce80('0x6'));var path=require(_0xce80('0x7'));var sox=require(_0xce80('0x8'));var csv=require('to-csv');var ejs=require(_0xce80('0x9'));var fs=require('fs');var fs_extra=require(_0xce80('0xa'));var _=require(_0xce80('0xb'));var squel=require('squel');var crypto=require(_0xce80('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xce80('0xd'));var toCsv=require('to-csv');var querystring=require(_0xce80('0xe'));var Papa=require(_0xce80('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xce80('0x10'));var as=require(_0xce80('0x11'));var hardwareService=require(_0xce80('0x12'));var logger=require(_0xce80('0x13'))(_0xce80('0x14'));var utils=require(_0xce80('0x15'));var config=require(_0xce80('0x16'));var licenseUtil=require(_0xce80('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x45a9b7,_0x37561b){_0x37561b=_0x37561b||0xcc;return function(_0x12d8c7){if(_0x12d8c7){return _0x45a9b7['sendStatus'](_0x37561b);}return _0x45a9b7['status'](_0x37561b)[_0xce80('0x18')]();};}function respondWithResult(_0x1903ec,_0x15f870){_0x15f870=_0x15f870||0xc8;return function(_0x3cac82){if(_0x3cac82){return _0x1903ec['status'](_0x15f870)[_0xce80('0x19')](_0x3cac82);}};}function respondWithFilteredResult(_0x5d134e,_0x9402b9){return function(_0x48796f){if(_0x48796f){var _0x24efa3=typeof _0x9402b9[_0xce80('0x1a')]==='undefined'&&typeof _0x9402b9['limit']==='undefined';var _0x35b40d=_0x48796f[_0xce80('0x1b')];var _0x148d57=_0x24efa3?0x0:_0x9402b9[_0xce80('0x1a')];var _0x4375b7=_0x24efa3?_0x48796f['count']:_0x9402b9[_0xce80('0x1a')]+_0x9402b9[_0xce80('0x1c')];var _0x4d4345;if(_0x4375b7>=_0x35b40d){_0x4375b7=_0x35b40d;_0x4d4345=0xc8;}else{_0x4d4345=0xce;}_0x5d134e['status'](_0x4d4345);return _0x5d134e['set'](_0xce80('0x1d'),_0x148d57+'-'+_0x4375b7+'/'+_0x35b40d)[_0xce80('0x19')](_0x48796f);}return null;};}function patchUpdates(_0x468b61){return function(_0x44f399){try{jsonpatch['apply'](_0x44f399,_0x468b61,!![]);}catch(_0x259a0b){return BPromise[_0xce80('0x1e')](_0x259a0b);}return _0x44f399[_0xce80('0x1f')]();};}function saveUpdates(_0x5315eb,_0x4df9bb){return function(_0x116b5e){if(_0x116b5e){return _0x116b5e['update'](_0x5315eb)[_0xce80('0x20')](function(_0x348d2d){return _0x348d2d;});}return null;};}function removeEntity(_0x2c5d01,_0x34f511){return function(_0x4fc91c){if(_0x4fc91c){return _0x4fc91c[_0xce80('0x21')]()['then'](function(){_0x2c5d01[_0xce80('0x22')](0xcc)[_0xce80('0x18')]();});}};}function handleEntityNotFound(_0x4cd1f5,_0x48080b){return function(_0x2b2dc3){if(!_0x2b2dc3){_0x4cd1f5['sendStatus'](0x194);}return _0x2b2dc3;};}function handleError(_0x2b7a4a,_0x1017f1){_0x1017f1=_0x1017f1||0x1f4;return function(_0x2a935a){logger[_0xce80('0x23')](_0x2a935a['stack']);if(_0x2a935a[_0xce80('0x24')]){delete _0x2a935a[_0xce80('0x24')];}_0x2b7a4a[_0xce80('0x22')](_0x1017f1)[_0xce80('0x25')](_0x2a935a);};}exports[_0xce80('0x26')]=function(_0x4792fe,_0x4d8796){var _0x6d1190={},_0x51b5bf={},_0x40cd7e={'count':0x0,'rows':[]};var _0x43ffb6=_[_0xce80('0x27')](db[_0xce80('0x28')][_0xce80('0x29')],function(_0x2f445c){return{'name':_0x2f445c[_0xce80('0x2a')],'type':_0x2f445c['type'][_0xce80('0x2b')]};});_0x51b5bf['model']=_['map'](_0x43ffb6,_0xce80('0x24'));_0x51b5bf[_0xce80('0x2c')]=_[_0xce80('0x2d')](_0x4792fe[_0xce80('0x2c')]);_0x51b5bf[_0xce80('0x2e')]=_[_0xce80('0x2f')](_0x51b5bf[_0xce80('0x30')],_0x51b5bf[_0xce80('0x2c')]);_0x6d1190['attributes']=_[_0xce80('0x2f')](_0x51b5bf['model'],qs[_0xce80('0x31')](_0x4792fe[_0xce80('0x2c')][_0xce80('0x31')]));_0x6d1190[_0xce80('0x32')]=_0x6d1190[_0xce80('0x32')][_0xce80('0x33')]?_0x6d1190['attributes']:_0x51b5bf[_0xce80('0x30')];if(!_0x4792fe[_0xce80('0x2c')][_0xce80('0x34')](_0xce80('0x35'))){_0x6d1190[_0xce80('0x1c')]=qs[_0xce80('0x1c')](_0x4792fe['query']['limit']);_0x6d1190[_0xce80('0x1a')]=qs[_0xce80('0x1a')](_0x4792fe[_0xce80('0x2c')][_0xce80('0x1a')]);}_0x6d1190[_0xce80('0x36')]=qs['sort'](_0x4792fe[_0xce80('0x2c')][_0xce80('0x37')]);_0x6d1190[_0xce80('0x38')]=qs[_0xce80('0x2e')](_[_0xce80('0x39')](_0x4792fe[_0xce80('0x2c')],_0x51b5bf[_0xce80('0x2e')]),_0x43ffb6);if(_0x4792fe[_0xce80('0x2c')][_0xce80('0x3a')]){_0x6d1190[_0xce80('0x38')]=_['merge'](_0x6d1190[_0xce80('0x38')],{'$or':_['map'](_0x43ffb6,function(_0x79ad39){if(_0x79ad39[_0xce80('0x3b')]!==_0xce80('0x3c')){var _0x2c87ce={};_0x2c87ce[_0x79ad39[_0xce80('0x24')]]={'$like':'%'+_0x4792fe['query'][_0xce80('0x3a')]+'%'};return _0x2c87ce;}})});}_0x6d1190=_[_0xce80('0x3d')]({},_0x6d1190,_0x4792fe[_0xce80('0x3e')]);var _0x53715e={'where':_0x6d1190[_0xce80('0x38')]};return db['FaxQueueReport'][_0xce80('0x1b')](_0x53715e)[_0xce80('0x20')](function(_0x3a5b0e){_0x40cd7e[_0xce80('0x1b')]=_0x3a5b0e;if(_0x4792fe[_0xce80('0x2c')][_0xce80('0x3f')]){_0x6d1190['include']=[{'all':!![]}];}return db[_0xce80('0x28')][_0xce80('0x40')](_0x6d1190);})[_0xce80('0x20')](function(_0x12bb2c){_0x40cd7e['rows']=_0x12bb2c;return _0x40cd7e;})[_0xce80('0x20')](respondWithFilteredResult(_0x4d8796,_0x6d1190))['catch'](handleError(_0x4d8796,null));};exports[_0xce80('0x41')]=function(_0x30b72c,_0x3e2edd){var _0x4167b9={'raw':!![],'where':{'id':_0x30b72c[_0xce80('0x42')]['id']}},_0x338393={};_0x338393[_0xce80('0x30')]=_[_0xce80('0x2d')](db[_0xce80('0x28')]['rawAttributes']);_0x338393[_0xce80('0x2c')]=_[_0xce80('0x2d')](_0x30b72c[_0xce80('0x2c')]);_0x338393['filters']=_[_0xce80('0x2f')](_0x338393[_0xce80('0x30')],_0x338393[_0xce80('0x2c')]);_0x4167b9['attributes']=_[_0xce80('0x2f')](_0x338393['model'],qs[_0xce80('0x31')](_0x30b72c[_0xce80('0x2c')][_0xce80('0x31')]));_0x4167b9['attributes']=_0x4167b9[_0xce80('0x32')][_0xce80('0x33')]?_0x4167b9[_0xce80('0x32')]:_0x338393['model'];if(_0x30b72c[_0xce80('0x2c')]['includeAll']){_0x4167b9['include']=[{'all':!![]}];}_0x4167b9=_[_0xce80('0x3d')]({},_0x4167b9,_0x30b72c[_0xce80('0x3e')]);return db[_0xce80('0x28')][_0xce80('0x43')](_0x4167b9)[_0xce80('0x20')](handleEntityNotFound(_0x3e2edd,null))[_0xce80('0x20')](respondWithResult(_0x3e2edd,null))[_0xce80('0x44')](handleError(_0x3e2edd,null));};exports[_0xce80('0x45')]=function(_0x5f448e,_0x217fa4){return db['FaxQueueReport'][_0xce80('0x45')](_0x5f448e[_0xce80('0x46')],{})[_0xce80('0x20')](respondWithResult(_0x217fa4,0xc9))[_0xce80('0x44')](handleError(_0x217fa4,null));};exports[_0xce80('0x47')]=function(_0x118583,_0x595662){if(_0x118583[_0xce80('0x46')]['id']){delete _0x118583['body']['id'];}return db[_0xce80('0x28')]['find']({'where':{'id':_0x118583['params']['id']}})[_0xce80('0x20')](handleEntityNotFound(_0x595662,null))[_0xce80('0x20')](saveUpdates(_0x118583[_0xce80('0x46')],null))[_0xce80('0x20')](respondWithResult(_0x595662,null))['catch'](handleError(_0x595662,null));};exports[_0xce80('0x21')]=function(_0xc420ef,_0x56dc30){return db[_0xce80('0x28')][_0xce80('0x43')]({'where':{'id':_0xc420ef[_0xce80('0x42')]['id']}})[_0xce80('0x20')](handleEntityNotFound(_0x56dc30,null))['then'](removeEntity(_0x56dc30,null))['catch'](handleError(_0x56dc30,null));};exports['describe']=function(_0x4671d0,_0x2bd460){return db[_0xce80('0x28')]['describe']()['then'](respondWithResult(_0x2bd460,null))[_0xce80('0x44')](handleError(_0x2bd460,null));};
\ No newline at end of file
+var _0x8e94=['send','index','map','FaxQueueReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','rows','show','params','length','options','find','create','body','catch','describe','eml-format','rimraf','fast-json-patch','moment','mustache','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','update','destroy','then','end','stack','name'];(function(_0x129a7e,_0x3ae6bf){var _0x21c87c=function(_0x4088c7){while(--_0x4088c7){_0x129a7e['push'](_0x129a7e['shift']());}};_0x21c87c(++_0x3ae6bf);}(_0x8e94,0xf8));var _0x48e9=function(_0xa7d678,_0x3dfdff){_0xa7d678=_0xa7d678-0x0;var _0x5cc539=_0x8e94[_0xa7d678];return _0x5cc539;};'use strict';var emlformat=require(_0x48e9('0x0'));var rimraf=require(_0x48e9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x48e9('0x2'));var rp=require('request-promise');var moment=require(_0x48e9('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x48e9('0x4'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x48e9('0x5'));var ejs=require(_0x48e9('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x48e9('0x7'));var squel=require('squel');var crypto=require(_0x48e9('0x8'));var jsforce=require('jsforce');var deskjs=require(_0x48e9('0x9'));var toCsv=require(_0x48e9('0x5'));var querystring=require(_0x48e9('0xa'));var Papa=require(_0x48e9('0xb'));var Redis=require('ioredis');var authService=require(_0x48e9('0xc'));var qs=require(_0x48e9('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x48e9('0xe'));var logger=require('../../config/logger')(_0x48e9('0xf'));var utils=require(_0x48e9('0x10'));var config=require(_0x48e9('0x11'));var licenseUtil=require(_0x48e9('0x12'));var db=require(_0x48e9('0x13'))['db'];function respondWithStatusCode(_0x956ebd,_0x567600){_0x567600=_0x567600||0xcc;return function(_0x28fcc0){if(_0x28fcc0){return _0x956ebd[_0x48e9('0x14')](_0x567600);}return _0x956ebd[_0x48e9('0x15')](_0x567600)['end']();};}function respondWithResult(_0x49ef9b,_0x38ee14){_0x38ee14=_0x38ee14||0xc8;return function(_0x29bb11){if(_0x29bb11){return _0x49ef9b[_0x48e9('0x15')](_0x38ee14)[_0x48e9('0x16')](_0x29bb11);}};}function respondWithFilteredResult(_0x1a5fd6,_0x18f318){return function(_0x421862){if(_0x421862){var _0x223884=typeof _0x18f318[_0x48e9('0x17')]===_0x48e9('0x18')&&typeof _0x18f318[_0x48e9('0x19')]===_0x48e9('0x18');var _0x5a7470=_0x421862[_0x48e9('0x1a')];var _0x421508=_0x223884?0x0:_0x18f318[_0x48e9('0x17')];var _0x51ab2d=_0x223884?_0x421862[_0x48e9('0x1a')]:_0x18f318[_0x48e9('0x17')]+_0x18f318[_0x48e9('0x19')];var _0xc7f638;if(_0x51ab2d>=_0x5a7470){_0x51ab2d=_0x5a7470;_0xc7f638=0xc8;}else{_0xc7f638=0xce;}_0x1a5fd6[_0x48e9('0x15')](_0xc7f638);return _0x1a5fd6[_0x48e9('0x1b')](_0x48e9('0x1c'),_0x421508+'-'+_0x51ab2d+'/'+_0x5a7470)[_0x48e9('0x16')](_0x421862);}return null;};}function patchUpdates(_0x54f07d){return function(_0x351fc5){try{jsonpatch[_0x48e9('0x1d')](_0x351fc5,_0x54f07d,!![]);}catch(_0xe985e6){return BPromise['reject'](_0xe985e6);}return _0x351fc5['save']();};}function saveUpdates(_0x1501ab,_0x5fa95d){return function(_0x422d40){if(_0x422d40){return _0x422d40[_0x48e9('0x1e')](_0x1501ab)['then'](function(_0x2c864d){return _0x2c864d;});}return null;};}function removeEntity(_0x27a61a,_0x56f782){return function(_0x2035dd){if(_0x2035dd){return _0x2035dd[_0x48e9('0x1f')]()[_0x48e9('0x20')](function(){_0x27a61a['status'](0xcc)[_0x48e9('0x21')]();});}};}function handleEntityNotFound(_0x361bff,_0x502d3d){return function(_0x588daa){if(!_0x588daa){_0x361bff['sendStatus'](0x194);}return _0x588daa;};}function handleError(_0x4e2e95,_0x338aa9){_0x338aa9=_0x338aa9||0x1f4;return function(_0x1ac2e8){logger['error'](_0x1ac2e8[_0x48e9('0x22')]);if(_0x1ac2e8[_0x48e9('0x23')]){delete _0x1ac2e8['name'];}_0x4e2e95[_0x48e9('0x15')](_0x338aa9)[_0x48e9('0x24')](_0x1ac2e8);};}exports[_0x48e9('0x25')]=function(_0x2fe15b,_0x976ae1){var _0x5565c5={},_0x64c551={},_0x3f7196={'count':0x0,'rows':[]};var _0x5e37aa=_[_0x48e9('0x26')](db[_0x48e9('0x27')][_0x48e9('0x28')],function(_0x509be8){return{'name':_0x509be8[_0x48e9('0x29')],'type':_0x509be8['type'][_0x48e9('0x2a')]};});_0x64c551[_0x48e9('0x2b')]=_[_0x48e9('0x26')](_0x5e37aa,_0x48e9('0x23'));_0x64c551[_0x48e9('0x2c')]=_[_0x48e9('0x2d')](_0x2fe15b[_0x48e9('0x2c')]);_0x64c551[_0x48e9('0x2e')]=_[_0x48e9('0x2f')](_0x64c551[_0x48e9('0x2b')],_0x64c551[_0x48e9('0x2c')]);_0x5565c5['attributes']=_['intersection'](_0x64c551[_0x48e9('0x2b')],qs[_0x48e9('0x30')](_0x2fe15b['query']['fields']));_0x5565c5[_0x48e9('0x31')]=_0x5565c5[_0x48e9('0x31')]['length']?_0x5565c5[_0x48e9('0x31')]:_0x64c551[_0x48e9('0x2b')];if(!_0x2fe15b['query'][_0x48e9('0x32')](_0x48e9('0x33'))){_0x5565c5['limit']=qs[_0x48e9('0x19')](_0x2fe15b[_0x48e9('0x2c')][_0x48e9('0x19')]);_0x5565c5[_0x48e9('0x17')]=qs[_0x48e9('0x17')](_0x2fe15b[_0x48e9('0x2c')]['offset']);}_0x5565c5[_0x48e9('0x34')]=qs[_0x48e9('0x35')](_0x2fe15b[_0x48e9('0x2c')][_0x48e9('0x35')]);_0x5565c5[_0x48e9('0x36')]=qs[_0x48e9('0x2e')](_[_0x48e9('0x37')](_0x2fe15b[_0x48e9('0x2c')],_0x64c551[_0x48e9('0x2e')]),_0x5e37aa);if(_0x2fe15b[_0x48e9('0x2c')][_0x48e9('0x38')]){_0x5565c5['where']=_[_0x48e9('0x39')](_0x5565c5[_0x48e9('0x36')],{'$or':_[_0x48e9('0x26')](_0x5e37aa,function(_0x155c4e){if(_0x155c4e['type']!==_0x48e9('0x3a')){var _0x44f4ab={};_0x44f4ab[_0x155c4e[_0x48e9('0x23')]]={'$like':'%'+_0x2fe15b[_0x48e9('0x2c')][_0x48e9('0x38')]+'%'};return _0x44f4ab;}})});}_0x5565c5=_[_0x48e9('0x39')]({},_0x5565c5,_0x2fe15b['options']);var _0x5de597={'where':_0x5565c5[_0x48e9('0x36')]};return db[_0x48e9('0x27')][_0x48e9('0x1a')](_0x5de597)[_0x48e9('0x20')](function(_0x3411c0){_0x3f7196[_0x48e9('0x1a')]=_0x3411c0;if(_0x2fe15b['query'][_0x48e9('0x3b')]){_0x5565c5[_0x48e9('0x3c')]=[{'all':!![]}];}return db[_0x48e9('0x27')]['findAll'](_0x5565c5);})[_0x48e9('0x20')](function(_0x83154c){_0x3f7196[_0x48e9('0x3d')]=_0x83154c;return _0x3f7196;})[_0x48e9('0x20')](respondWithFilteredResult(_0x976ae1,_0x5565c5))['catch'](handleError(_0x976ae1,null));};exports[_0x48e9('0x3e')]=function(_0xf85bf1,_0xf34683){var _0x133fa5={'raw':!![],'where':{'id':_0xf85bf1[_0x48e9('0x3f')]['id']}},_0x24fcce={};_0x24fcce[_0x48e9('0x2b')]=_[_0x48e9('0x2d')](db[_0x48e9('0x27')][_0x48e9('0x28')]);_0x24fcce[_0x48e9('0x2c')]=_['keys'](_0xf85bf1['query']);_0x24fcce[_0x48e9('0x2e')]=_[_0x48e9('0x2f')](_0x24fcce['model'],_0x24fcce[_0x48e9('0x2c')]);_0x133fa5[_0x48e9('0x31')]=_[_0x48e9('0x2f')](_0x24fcce[_0x48e9('0x2b')],qs[_0x48e9('0x30')](_0xf85bf1[_0x48e9('0x2c')][_0x48e9('0x30')]));_0x133fa5[_0x48e9('0x31')]=_0x133fa5['attributes'][_0x48e9('0x40')]?_0x133fa5[_0x48e9('0x31')]:_0x24fcce[_0x48e9('0x2b')];if(_0xf85bf1[_0x48e9('0x2c')]['includeAll']){_0x133fa5['include']=[{'all':!![]}];}_0x133fa5=_[_0x48e9('0x39')]({},_0x133fa5,_0xf85bf1[_0x48e9('0x41')]);return db[_0x48e9('0x27')][_0x48e9('0x42')](_0x133fa5)[_0x48e9('0x20')](handleEntityNotFound(_0xf34683,null))[_0x48e9('0x20')](respondWithResult(_0xf34683,null))['catch'](handleError(_0xf34683,null));};exports[_0x48e9('0x43')]=function(_0x12b347,_0x172bad){return db[_0x48e9('0x27')][_0x48e9('0x43')](_0x12b347[_0x48e9('0x44')],{})[_0x48e9('0x20')](respondWithResult(_0x172bad,0xc9))[_0x48e9('0x45')](handleError(_0x172bad,null));};exports[_0x48e9('0x1e')]=function(_0x2ef1b7,_0x1ba6a0){if(_0x2ef1b7[_0x48e9('0x44')]['id']){delete _0x2ef1b7['body']['id'];}return db[_0x48e9('0x27')]['find']({'where':{'id':_0x2ef1b7[_0x48e9('0x3f')]['id']}})[_0x48e9('0x20')](handleEntityNotFound(_0x1ba6a0,null))[_0x48e9('0x20')](saveUpdates(_0x2ef1b7[_0x48e9('0x44')],null))['then'](respondWithResult(_0x1ba6a0,null))[_0x48e9('0x45')](handleError(_0x1ba6a0,null));};exports[_0x48e9('0x1f')]=function(_0x36dc16,_0x1a727b){return db[_0x48e9('0x27')]['find']({'where':{'id':_0x36dc16[_0x48e9('0x3f')]['id']}})['then'](handleEntityNotFound(_0x1a727b,null))[_0x48e9('0x20')](removeEntity(_0x1a727b,null))[_0x48e9('0x45')](handleError(_0x1a727b,null));};exports['describe']=function(_0x2baca2,_0x2a3707){return db[_0x48e9('0x27')][_0x48e9('0x46')]()[_0x48e9('0x20')](respondWithResult(_0x2a3707,null))['catch'](handleError(_0x2a3707,null));};
\ No newline at end of file
index cc8941c..16835ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','FaxQueueReport','report_fax_queue','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4de98c,_0x9b0327){var _0xbc05d3=function(_0x1ded3e){while(--_0x1ded3e){_0x4de98c['push'](_0x4de98c['shift']());}};_0xbc05d3(++_0x9b0327);}(_0x4975,0x86));var _0x5497=function(_0x307711,_0x7bf6){_0x307711=_0x307711-0x0;var _0x79be34=_0x4975[_0x307711];return _0x79be34;};'use strict';var _=require(_0x5497('0x0'));var util=require('util');var logger=require(_0x5497('0x1'))(_0x5497('0x2'));var moment=require(_0x5497('0x3'));var BPromise=require(_0x5497('0x4'));var rp=require(_0x5497('0x5'));var fs=require('fs');var path=require(_0x5497('0x6'));var rimraf=require(_0x5497('0x7'));var config=require(_0x5497('0x8'));var attributes=require(_0x5497('0x9'));module[_0x5497('0xa')]=function(_0x539a27,_0x37e48d){return _0x539a27['define'](_0x5497('0xb'),attributes,{'tableName':_0x5497('0xc'),'paranoid':![],'indexes':[{'name':_0x5497('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0295=['rimraf','../../config/environment','./faxQueueReport.attributes','exports','define','uniqueid','lodash','api','request-promise','path'];(function(_0x16391a,_0x1a6fa1){var _0x157a82=function(_0x11f864){while(--_0x11f864){_0x16391a['push'](_0x16391a['shift']());}};_0x157a82(++_0x1a6fa1);}(_0x0295,0x1f0));var _0x5029=function(_0x1c510a,_0x1413a9){_0x1c510a=_0x1c510a-0x0;var _0x23cedd=_0x0295[_0x1c510a];return _0x23cedd;};'use strict';var _=require(_0x5029('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x5029('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5029('0x2'));var fs=require('fs');var path=require(_0x5029('0x3'));var rimraf=require(_0x5029('0x4'));var config=require(_0x5029('0x5'));var attributes=require(_0x5029('0x6'));module[_0x5029('0x7')]=function(_0x200217,_0x215955){return _0x200217[_0x5029('0x8')]('FaxQueueReport',attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x5029('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index ed4ba37..4f44e81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ef7=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','FaxQueueReport,\x20%s,\x20%s','request\x20sent','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateFaxQueueReport','FaxQueueReport','create','body','raw','debug','UpdateFaxQueueReport','update','options','where','attributes','limit','info','lodash','moment','randomstring'];(function(_0x2e2ddc,_0x4ae655){var _0x41ea93=function(_0x24dc75){while(--_0x24dc75){_0x2e2ddc['push'](_0x2e2ddc['shift']());}};_0x41ea93(++_0x4ae655);}(_0x1ef7,0x195));var _0x71ef=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0x1ef7[_0x4e1d03];return _0x362d4b;};'use strict';var _=require(_0x71ef('0x0'));var util=require('util');var moment=require(_0x71ef('0x1'));var BPromise=require('bluebird');var rs=require(_0x71ef('0x2'));var fs=require('fs');var Redis=require(_0x71ef('0x3'));var db=require(_0x71ef('0x4'))['db'];var utils=require(_0x71ef('0x5'));var logger=require(_0x71ef('0x6'))(_0x71ef('0x7'));var config=require('../../config/environment');var jayson=require(_0x71ef('0x8'));var client=jayson[_0x71ef('0x9')][_0x71ef('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xd267b,_0x439592,_0x530ec3){return new BPromise(function(_0x35e7c8,_0x31c1ae){return client[_0x71ef('0xb')](_0xd267b,_0x530ec3)[_0x71ef('0xc')](function(_0x461adc){logger['info'](_0x71ef('0xd'),_0x439592,_0x71ef('0xe'));logger['debug'](_0x71ef('0xf'),_0x439592,'request\x20sent',JSON[_0x71ef('0x10')](_0x461adc));if(_0x461adc[_0x71ef('0x11')]){if(_0x461adc[_0x71ef('0x11')][_0x71ef('0x12')]===0x1f4){logger['error'](_0x71ef('0xd'),_0x439592,_0x461adc['error'][_0x71ef('0x13')]);return _0x31c1ae(_0x461adc[_0x71ef('0x11')]['message']);}logger[_0x71ef('0x11')](_0x71ef('0xd'),_0x439592,_0x461adc[_0x71ef('0x11')]['message']);return _0x35e7c8(_0x461adc[_0x71ef('0x11')][_0x71ef('0x13')]);}else{logger['info'](_0x71ef('0xd'),_0x439592,_0x71ef('0xe'));_0x35e7c8(_0x461adc['result']['message']);}})[_0x71ef('0x14')](function(_0x56f761){logger[_0x71ef('0x11')](_0x71ef('0xd'),_0x439592,_0x56f761);_0x31c1ae(_0x56f761);});});}exports[_0x71ef('0x15')]=function(_0x124295){var _0x20b403=this;return new Promise(function(_0x4e1928,_0x24588e){return db[_0x71ef('0x16')][_0x71ef('0x17')](_0x124295[_0x71ef('0x18')],{'raw':_0x124295['options']?_0x124295['options'][_0x71ef('0x19')]===undefined?!![]:![]:!![]})[_0x71ef('0xc')](function(_0x31f3e4){logger['info']('CreateFaxQueueReport',_0x124295);logger[_0x71ef('0x1a')](_0x71ef('0x15'),_0x124295,JSON[_0x71ef('0x10')](_0x31f3e4));_0x4e1928(_0x31f3e4);})[_0x71ef('0x14')](function(_0x27aa76){logger[_0x71ef('0x11')]('CreateFaxQueueReport',_0x27aa76[_0x71ef('0x13')],_0x124295);_0x24588e(_0x20b403['error'](0x1f4,_0x27aa76['message']));});});};exports[_0x71ef('0x1b')]=function(_0x409a14){var _0x12fbbe=this;return new Promise(function(_0x57cbe4,_0x5a6d99){return db[_0x71ef('0x16')][_0x71ef('0x1c')](_0x409a14['body'],{'raw':_0x409a14[_0x71ef('0x1d')]?_0x409a14['options'][_0x71ef('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x409a14[_0x71ef('0x1d')]?_0x409a14[_0x71ef('0x1d')][_0x71ef('0x1e')]||null:null,'attributes':_0x409a14['options']?_0x409a14['options'][_0x71ef('0x1f')]||null:null,'limit':_0x409a14['options']?_0x409a14[_0x71ef('0x1d')][_0x71ef('0x20')]||null:null})[_0x71ef('0xc')](function(_0x32fe8b){logger[_0x71ef('0x21')](_0x71ef('0x1b'),_0x409a14);logger[_0x71ef('0x1a')](_0x71ef('0x1b'),_0x409a14,JSON[_0x71ef('0x10')](_0x32fe8b));_0x57cbe4(_0x32fe8b);})[_0x71ef('0x14')](function(_0x4573bc){logger[_0x71ef('0x11')](_0x71ef('0x1b'),_0x4573bc[_0x71ef('0x13')],_0x409a14);_0x5a6d99(_0x12fbbe['error'](0x1f4,_0x4573bc['message']));});});};
\ No newline at end of file
+var _0xe6c2=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','create','body','options','raw','CreateFaxQueueReport','UpdateFaxQueueReport','FaxQueueReport','where','attributes','catch','lodash','util','ioredis'];(function(_0x4bbb86,_0x4ee639){var _0x473a8b=function(_0x4f8ee6){while(--_0x4f8ee6){_0x4bbb86['push'](_0x4bbb86['shift']());}};_0x473a8b(++_0x4ee639);}(_0xe6c2,0x71));var _0x2e6c=function(_0xd0076c,_0xdb6697){_0xd0076c=_0xd0076c-0x0;var _0x3d69ab=_0xe6c2[_0xd0076c];return _0x3d69ab;};'use strict';var _=require(_0x2e6c('0x0'));var util=require(_0x2e6c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2e6c('0x2'));var db=require(_0x2e6c('0x3'))['db'];var utils=require(_0x2e6c('0x4'));var logger=require(_0x2e6c('0x5'))('rpc');var config=require(_0x2e6c('0x6'));var jayson=require(_0x2e6c('0x7'));var client=jayson[_0x2e6c('0x8')][_0x2e6c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x16c214,_0x23161d,_0x31a0b0){return new BPromise(function(_0x5615b5,_0x5ece02){return client[_0x2e6c('0xa')](_0x16c214,_0x31a0b0)[_0x2e6c('0xb')](function(_0x34868d){logger[_0x2e6c('0xc')](_0x2e6c('0xd'),_0x23161d,_0x2e6c('0xe'));logger[_0x2e6c('0xf')]('FaxQueueReport,\x20%s,\x20%s,\x20%s',_0x23161d,_0x2e6c('0xe'),JSON[_0x2e6c('0x10')](_0x34868d));if(_0x34868d[_0x2e6c('0x11')]){if(_0x34868d['error']['code']===0x1f4){logger[_0x2e6c('0x11')](_0x2e6c('0xd'),_0x23161d,_0x34868d['error'][_0x2e6c('0x12')]);return _0x5ece02(_0x34868d[_0x2e6c('0x11')][_0x2e6c('0x12')]);}logger[_0x2e6c('0x11')](_0x2e6c('0xd'),_0x23161d,_0x34868d[_0x2e6c('0x11')][_0x2e6c('0x12')]);return _0x5615b5(_0x34868d['error'][_0x2e6c('0x12')]);}else{logger[_0x2e6c('0xc')](_0x2e6c('0xd'),_0x23161d,'request\x20sent');_0x5615b5(_0x34868d['result'][_0x2e6c('0x12')]);}})['catch'](function(_0x36c88f){logger[_0x2e6c('0x11')](_0x2e6c('0xd'),_0x23161d,_0x36c88f);_0x5ece02(_0x36c88f);});});}exports['CreateFaxQueueReport']=function(_0x2d86a4){var _0x3b30fb=this;return new Promise(function(_0x23c6f9,_0x3b782d){return db['FaxQueueReport'][_0x2e6c('0x13')](_0x2d86a4[_0x2e6c('0x14')],{'raw':_0x2d86a4['options']?_0x2d86a4[_0x2e6c('0x15')][_0x2e6c('0x16')]===undefined?!![]:![]:!![]})[_0x2e6c('0xb')](function(_0x4780e0){logger['info'](_0x2e6c('0x17'),_0x2d86a4);logger[_0x2e6c('0xf')](_0x2e6c('0x17'),_0x2d86a4,JSON[_0x2e6c('0x10')](_0x4780e0));_0x23c6f9(_0x4780e0);})['catch'](function(_0x461636){logger[_0x2e6c('0x11')](_0x2e6c('0x17'),_0x461636[_0x2e6c('0x12')],_0x2d86a4);_0x3b782d(_0x3b30fb[_0x2e6c('0x11')](0x1f4,_0x461636[_0x2e6c('0x12')]));});});};exports[_0x2e6c('0x18')]=function(_0x4b72cc){var _0x2daf48=this;return new Promise(function(_0x445cd8,_0x4c45b8){return db[_0x2e6c('0x19')]['update'](_0x4b72cc['body'],{'raw':_0x4b72cc[_0x2e6c('0x15')]?_0x4b72cc[_0x2e6c('0x15')][_0x2e6c('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4b72cc[_0x2e6c('0x15')]?_0x4b72cc[_0x2e6c('0x15')][_0x2e6c('0x1a')]||null:null,'attributes':_0x4b72cc['options']?_0x4b72cc['options'][_0x2e6c('0x1b')]||null:null,'limit':_0x4b72cc['options']?_0x4b72cc[_0x2e6c('0x15')]['limit']||null:null})[_0x2e6c('0xb')](function(_0xfa01d1){logger[_0x2e6c('0xc')](_0x2e6c('0x18'),_0x4b72cc);logger[_0x2e6c('0xf')]('UpdateFaxQueueReport',_0x4b72cc,JSON[_0x2e6c('0x10')](_0xfa01d1));_0x445cd8(_0xfa01d1);})[_0x2e6c('0x1c')](function(_0x4e1f60){logger[_0x2e6c('0x11')](_0x2e6c('0x18'),_0x4e1f60['message'],_0x4b72cc);_0x4c45b8(_0x2daf48['error'](0x1f4,_0x4e1f60[_0x2e6c('0x12')]));});});};
\ No newline at end of file
index 933a3d9..4789fba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0815=['show','post','create','put','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./faxQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x11a611,_0x3d2a2d){var _0x1705ca=function(_0x122f08){while(--_0x122f08){_0x11a611['push'](_0x11a611['shift']());}};_0x1705ca(++_0x3d2a2d);}(_0x0815,0xd8));var _0x5081=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0815[_0x20a584];return _0x4b41a8;};'use strict';var multer=require('multer');var util=require(_0x5081('0x0'));var path=require(_0x5081('0x1'));var timeout=require(_0x5081('0x2'));var express=require(_0x5081('0x3'));var router=express[_0x5081('0x4')]();var fs_extra=require(_0x5081('0x5'));var auth=require(_0x5081('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5081('0x7'));var controller=require(_0x5081('0x8'));router[_0x5081('0x9')]('/',auth[_0x5081('0xa')](),controller[_0x5081('0xb')]);router[_0x5081('0x9')](_0x5081('0xc'),auth[_0x5081('0xa')](),controller[_0x5081('0xd')]);router[_0x5081('0x9')](_0x5081('0xe'),auth[_0x5081('0xa')](),controller[_0x5081('0xf')]);router[_0x5081('0x10')]('/',auth[_0x5081('0xa')](),controller[_0x5081('0x11')]);router[_0x5081('0x12')]('/:id',auth[_0x5081('0xa')](),controller['update']);router[_0x5081('0x13')](_0x5081('0xe'),auth[_0x5081('0xa')](),controller[_0x5081('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xc339=['index','get','/describe','describe','/:id','show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxQueueReport.controller','isAuthenticated'];(function(_0x2458c3,_0x51d683){var _0x2204d8=function(_0x165261){while(--_0x165261){_0x2458c3['push'](_0x2458c3['shift']());}};_0x2204d8(++_0x51d683);}(_0xc339,0x193));var _0x9c33=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc339[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x9c33('0x0'));var util=require(_0x9c33('0x1'));var path=require(_0x9c33('0x2'));var timeout=require(_0x9c33('0x3'));var express=require(_0x9c33('0x4'));var router=express[_0x9c33('0x5')]();var fs_extra=require(_0x9c33('0x6'));var auth=require(_0x9c33('0x7'));var interaction=require(_0x9c33('0x8'));var config=require('../../config/environment');var controller=require(_0x9c33('0x9'));router['get']('/',auth[_0x9c33('0xa')](),controller[_0x9c33('0xb')]);router[_0x9c33('0xc')](_0x9c33('0xd'),auth[_0x9c33('0xa')](),controller[_0x9c33('0xe')]);router['get'](_0x9c33('0xf'),auth[_0x9c33('0xa')](),controller[_0x9c33('0x10')]);router[_0x9c33('0x11')]('/',auth['isAuthenticated'](),controller[_0x9c33('0x12')]);router['put'](_0x9c33('0xf'),auth[_0x9c33('0xa')](),controller[_0x9c33('0x13')]);router[_0x9c33('0x14')](_0x9c33('0xf'),auth['isAuthenticated'](),controller[_0x9c33('0x15')]);module[_0x9c33('0x16')]=router;
\ No newline at end of file
index cb0a177..486d5a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x5d30b4,_0x199248){var _0x1acfb8=function(_0x3544b2){while(--_0x3544b2){_0x5d30b4['push'](_0x5d30b4['shift']());}};_0x1acfb8(++_0x199248);}(_0x9bde,0xe1));var _0xe9bd=function(_0xa5d51e,_0x4871eb){_0xa5d51e=_0xa5d51e-0x0;var _0x554948=_0x9bde[_0xa5d51e];return _0x554948;};'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
+var _0x008c=['ENUM','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x311246,_0x49c786){var _0xe92782=function(_0x1e58e7){while(--_0x1e58e7){_0x311246['push'](_0x311246['shift']());}};_0xe92782(++_0x49c786);}(_0x008c,0x188));var _0xc008=function(_0x3018eb,_0x570c63){_0x3018eb=_0x3018eb-0x0;var _0x23131f=_0x008c[_0x3018eb];return _0x23131f;};'use strict';var moment=require(_0xc008('0x0'));var Sequelize=require(_0xc008('0x1'));module[_0xc008('0x2')]={'uniqueid':{'type':Sequelize[_0xc008('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xc008('0x4')]('account',_0xc008('0x5'),_0xc008('0x6')),'allowNull':![],'defaultValue':_0xc008('0x6')},'transferredAt':{'type':Sequelize[_0xc008('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xc008('0x8')]}};
\ No newline at end of file
index b24d45b..b7c207a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fc2=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','undefined','count','offset','limit','set','json','reject','save','update','then','destroy','stack','name','send','map','FaxTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','options','includeAll','include','rows','catch','show','params','length','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x148b52,_0x15129f){var _0x29d84e=function(_0x3650c5){while(--_0x3650c5){_0x148b52['push'](_0x148b52['shift']());}};_0x29d84e(++_0x15129f);}(_0x6fc2,0xc8));var _0x26fc=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0x6fc2[_0x243b59];return _0x3e1676;};'use strict';var emlformat=require(_0x26fc('0x0'));var rimraf=require(_0x26fc('0x1'));var zipdir=require(_0x26fc('0x2'));var jsonpatch=require(_0x26fc('0x3'));var rp=require(_0x26fc('0x4'));var moment=require('moment');var BPromise=require(_0x26fc('0x5'));var Mustache=require(_0x26fc('0x6'));var util=require(_0x26fc('0x7'));var path=require('path');var sox=require(_0x26fc('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x26fc('0x9'));var squel=require(_0x26fc('0xa'));var crypto=require(_0x26fc('0xb'));var jsforce=require(_0x26fc('0xc'));var deskjs=require(_0x26fc('0xd'));var toCsv=require(_0x26fc('0xe'));var querystring=require(_0x26fc('0xf'));var Papa=require(_0x26fc('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x26fc('0x11'));var as=require(_0x26fc('0x12'));var hardwareService=require(_0x26fc('0x13'));var logger=require(_0x26fc('0x14'))(_0x26fc('0x15'));var utils=require(_0x26fc('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x26fc('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3a7808,_0xc6e9b3){_0xc6e9b3=_0xc6e9b3||0xcc;return function(_0x46e2f6){if(_0x46e2f6){return _0x3a7808[_0x26fc('0x18')](_0xc6e9b3);}return _0x3a7808[_0x26fc('0x19')](_0xc6e9b3)[_0x26fc('0x1a')]();};}function respondWithResult(_0x1186db,_0xe406ba){_0xe406ba=_0xe406ba||0xc8;return function(_0xf5dcbe){if(_0xf5dcbe){return _0x1186db[_0x26fc('0x19')](_0xe406ba)['json'](_0xf5dcbe);}};}function respondWithFilteredResult(_0x5d7eb4,_0x6a7091){return function(_0x2d49e4){if(_0x2d49e4){var _0x2c6b68=typeof _0x6a7091['offset']===_0x26fc('0x1b')&&typeof _0x6a7091['limit']===_0x26fc('0x1b');var _0x3cbde0=_0x2d49e4[_0x26fc('0x1c')];var _0x152cde=_0x2c6b68?0x0:_0x6a7091[_0x26fc('0x1d')];var _0xcc2946=_0x2c6b68?_0x2d49e4[_0x26fc('0x1c')]:_0x6a7091[_0x26fc('0x1d')]+_0x6a7091[_0x26fc('0x1e')];var _0x30f46f;if(_0xcc2946>=_0x3cbde0){_0xcc2946=_0x3cbde0;_0x30f46f=0xc8;}else{_0x30f46f=0xce;}_0x5d7eb4[_0x26fc('0x19')](_0x30f46f);return _0x5d7eb4[_0x26fc('0x1f')]('Content-Range',_0x152cde+'-'+_0xcc2946+'/'+_0x3cbde0)[_0x26fc('0x20')](_0x2d49e4);}return null;};}function patchUpdates(_0x12e926){return function(_0x4f6014){try{jsonpatch['apply'](_0x4f6014,_0x12e926,!![]);}catch(_0xd49956){return BPromise[_0x26fc('0x21')](_0xd49956);}return _0x4f6014[_0x26fc('0x22')]();};}function saveUpdates(_0x2e7563,_0x59823b){return function(_0x550a8f){if(_0x550a8f){return _0x550a8f[_0x26fc('0x23')](_0x2e7563)[_0x26fc('0x24')](function(_0x2adb60){return _0x2adb60;});}return null;};}function removeEntity(_0x532b68,_0x2b04f7){return function(_0x36b297){if(_0x36b297){return _0x36b297[_0x26fc('0x25')]()[_0x26fc('0x24')](function(){_0x532b68[_0x26fc('0x19')](0xcc)[_0x26fc('0x1a')]();});}};}function handleEntityNotFound(_0x5d7dd3,_0x12f88c){return function(_0x404ca6){if(!_0x404ca6){_0x5d7dd3[_0x26fc('0x18')](0x194);}return _0x404ca6;};}function handleError(_0x4cbcd6,_0x15a3a2){_0x15a3a2=_0x15a3a2||0x1f4;return function(_0x14eb7c){logger['error'](_0x14eb7c[_0x26fc('0x26')]);if(_0x14eb7c[_0x26fc('0x27')]){delete _0x14eb7c[_0x26fc('0x27')];}_0x4cbcd6[_0x26fc('0x19')](_0x15a3a2)[_0x26fc('0x28')](_0x14eb7c);};}exports['index']=function(_0x2c36f9,_0x53a0b9){var _0x3367dc={},_0x22831c={},_0x149fde={'count':0x0,'rows':[]};var _0x54adeb=_[_0x26fc('0x29')](db[_0x26fc('0x2a')][_0x26fc('0x2b')],function(_0x259bf7){return{'name':_0x259bf7[_0x26fc('0x2c')],'type':_0x259bf7[_0x26fc('0x2d')][_0x26fc('0x2e')]};});_0x22831c[_0x26fc('0x2f')]=_[_0x26fc('0x29')](_0x54adeb,_0x26fc('0x27'));_0x22831c[_0x26fc('0x30')]=_[_0x26fc('0x31')](_0x2c36f9['query']);_0x22831c[_0x26fc('0x32')]=_[_0x26fc('0x33')](_0x22831c[_0x26fc('0x2f')],_0x22831c[_0x26fc('0x30')]);_0x3367dc[_0x26fc('0x34')]=_[_0x26fc('0x33')](_0x22831c[_0x26fc('0x2f')],qs['fields'](_0x2c36f9['query'][_0x26fc('0x35')]));_0x3367dc[_0x26fc('0x34')]=_0x3367dc[_0x26fc('0x34')]['length']?_0x3367dc['attributes']:_0x22831c['model'];if(!_0x2c36f9[_0x26fc('0x30')][_0x26fc('0x36')](_0x26fc('0x37'))){_0x3367dc[_0x26fc('0x1e')]=qs['limit'](_0x2c36f9['query']['limit']);_0x3367dc[_0x26fc('0x1d')]=qs[_0x26fc('0x1d')](_0x2c36f9[_0x26fc('0x30')][_0x26fc('0x1d')]);}_0x3367dc[_0x26fc('0x38')]=qs[_0x26fc('0x39')](_0x2c36f9[_0x26fc('0x30')][_0x26fc('0x39')]);_0x3367dc[_0x26fc('0x3a')]=qs[_0x26fc('0x32')](_[_0x26fc('0x3b')](_0x2c36f9[_0x26fc('0x30')],_0x22831c[_0x26fc('0x32')]),_0x54adeb);if(_0x2c36f9[_0x26fc('0x30')]['filter']){_0x3367dc[_0x26fc('0x3a')]=_['merge'](_0x3367dc[_0x26fc('0x3a')],{'$or':_[_0x26fc('0x29')](_0x54adeb,function(_0x30df78){if(_0x30df78['type']!=='VIRTUAL'){var _0x15dcca={};_0x15dcca[_0x30df78[_0x26fc('0x27')]]={'$like':'%'+_0x2c36f9['query']['filter']+'%'};return _0x15dcca;}})});}_0x3367dc=_[_0x26fc('0x3c')]({},_0x3367dc,_0x2c36f9[_0x26fc('0x3d')]);var _0x18edaa={'where':_0x3367dc['where']};return db['FaxTransferReport'][_0x26fc('0x1c')](_0x18edaa)[_0x26fc('0x24')](function(_0x920e26){_0x149fde[_0x26fc('0x1c')]=_0x920e26;if(_0x2c36f9['query'][_0x26fc('0x3e')]){_0x3367dc[_0x26fc('0x3f')]=[{'all':!![]}];}return db['FaxTransferReport']['findAll'](_0x3367dc);})[_0x26fc('0x24')](function(_0x5bd46e){_0x149fde[_0x26fc('0x40')]=_0x5bd46e;return _0x149fde;})['then'](respondWithFilteredResult(_0x53a0b9,_0x3367dc))[_0x26fc('0x41')](handleError(_0x53a0b9,null));};exports[_0x26fc('0x42')]=function(_0x5309ef,_0x11bd74){var _0x7de429={'raw':!![],'where':{'id':_0x5309ef[_0x26fc('0x43')]['id']}},_0x593c9e={};_0x593c9e['model']=_['keys'](db[_0x26fc('0x2a')][_0x26fc('0x2b')]);_0x593c9e[_0x26fc('0x30')]=_[_0x26fc('0x31')](_0x5309ef['query']);_0x593c9e[_0x26fc('0x32')]=_['intersection'](_0x593c9e['model'],_0x593c9e[_0x26fc('0x30')]);_0x7de429[_0x26fc('0x34')]=_[_0x26fc('0x33')](_0x593c9e[_0x26fc('0x2f')],qs['fields'](_0x5309ef['query'][_0x26fc('0x35')]));_0x7de429[_0x26fc('0x34')]=_0x7de429[_0x26fc('0x34')][_0x26fc('0x44')]?_0x7de429[_0x26fc('0x34')]:_0x593c9e[_0x26fc('0x2f')];if(_0x5309ef[_0x26fc('0x30')][_0x26fc('0x3e')]){_0x7de429['include']=[{'all':!![]}];}_0x7de429=_[_0x26fc('0x3c')]({},_0x7de429,_0x5309ef[_0x26fc('0x3d')]);return db[_0x26fc('0x2a')]['find'](_0x7de429)[_0x26fc('0x24')](handleEntityNotFound(_0x11bd74,null))[_0x26fc('0x24')](respondWithResult(_0x11bd74,null))[_0x26fc('0x41')](handleError(_0x11bd74,null));};exports[_0x26fc('0x45')]=function(_0x2402b3,_0xba6ba2){return db[_0x26fc('0x2a')][_0x26fc('0x45')](_0x2402b3[_0x26fc('0x46')],{})[_0x26fc('0x24')](respondWithResult(_0xba6ba2,0xc9))[_0x26fc('0x41')](handleError(_0xba6ba2,null));};exports['update']=function(_0x3cc1c9,_0x3303c9){if(_0x3cc1c9[_0x26fc('0x46')]['id']){delete _0x3cc1c9['body']['id'];}return db[_0x26fc('0x2a')][_0x26fc('0x47')]({'where':{'id':_0x3cc1c9[_0x26fc('0x43')]['id']}})['then'](handleEntityNotFound(_0x3303c9,null))[_0x26fc('0x24')](saveUpdates(_0x3cc1c9['body'],null))['then'](respondWithResult(_0x3303c9,null))[_0x26fc('0x41')](handleError(_0x3303c9,null));};exports['destroy']=function(_0x4155ea,_0x1efb0e){return db[_0x26fc('0x2a')]['find']({'where':{'id':_0x4155ea['params']['id']}})['then'](handleEntityNotFound(_0x1efb0e,null))['then'](removeEntity(_0x1efb0e,null))[_0x26fc('0x41')](handleError(_0x1efb0e,null));};exports[_0x26fc('0x48')]=function(_0x498db8,_0x580784){return db['FaxTransferReport'][_0x26fc('0x48')]()[_0x26fc('0x24')](respondWithResult(_0x580784,null))[_0x26fc('0x41')](handleError(_0x580784,null));};
\ No newline at end of file
+var _0xb4d2=['stack','name','send','map','FaxTransferReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','where','filter','merge','VIRTUAL','options','rows','show','params','keys','length','includeAll','include','find','create','body','catch','describe','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','update','then','destroy','error'];(function(_0x5087b7,_0x117485){var _0x3b4c2b=function(_0x3d25db){while(--_0x3d25db){_0x5087b7['push'](_0x5087b7['shift']());}};_0x3b4c2b(++_0x117485);}(_0xb4d2,0xb3));var _0x2b4d=function(_0x4a4473,_0x2429a0){_0x4a4473=_0x4a4473-0x0;var _0x3aba5c=_0xb4d2[_0x4a4473];return _0x3aba5c;};'use strict';var emlformat=require(_0x2b4d('0x0'));var rimraf=require(_0x2b4d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2b4d('0x2'));var rp=require(_0x2b4d('0x3'));var moment=require('moment');var BPromise=require(_0x2b4d('0x4'));var Mustache=require(_0x2b4d('0x5'));var util=require(_0x2b4d('0x6'));var path=require(_0x2b4d('0x7'));var sox=require('sox');var csv=require(_0x2b4d('0x8'));var ejs=require(_0x2b4d('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x2b4d('0xa'));var crypto=require(_0x2b4d('0xb'));var jsforce=require(_0x2b4d('0xc'));var deskjs=require(_0x2b4d('0xd'));var toCsv=require(_0x2b4d('0x8'));var querystring=require(_0x2b4d('0xe'));var Papa=require(_0x2b4d('0xf'));var Redis=require(_0x2b4d('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x2b4d('0x11'));var hardwareService=require(_0x2b4d('0x12'));var logger=require(_0x2b4d('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x2b4d('0x14'));var licenseUtil=require(_0x2b4d('0x15'));var db=require(_0x2b4d('0x16'))['db'];function respondWithStatusCode(_0x385ca0,_0x43644e){_0x43644e=_0x43644e||0xcc;return function(_0x17eed7){if(_0x17eed7){return _0x385ca0[_0x2b4d('0x17')](_0x43644e);}return _0x385ca0[_0x2b4d('0x18')](_0x43644e)[_0x2b4d('0x19')]();};}function respondWithResult(_0x3299b2,_0x244707){_0x244707=_0x244707||0xc8;return function(_0x328f70){if(_0x328f70){return _0x3299b2[_0x2b4d('0x18')](_0x244707)['json'](_0x328f70);}};}function respondWithFilteredResult(_0x7823af,_0x3eb06b){return function(_0xe04199){if(_0xe04199){var _0xe7cf84=typeof _0x3eb06b[_0x2b4d('0x1a')]===_0x2b4d('0x1b')&&typeof _0x3eb06b[_0x2b4d('0x1c')]===_0x2b4d('0x1b');var _0x1a1064=_0xe04199[_0x2b4d('0x1d')];var _0x4b4ddb=_0xe7cf84?0x0:_0x3eb06b[_0x2b4d('0x1a')];var _0x1cc7b8=_0xe7cf84?_0xe04199['count']:_0x3eb06b[_0x2b4d('0x1a')]+_0x3eb06b[_0x2b4d('0x1c')];var _0x3edb45;if(_0x1cc7b8>=_0x1a1064){_0x1cc7b8=_0x1a1064;_0x3edb45=0xc8;}else{_0x3edb45=0xce;}_0x7823af[_0x2b4d('0x18')](_0x3edb45);return _0x7823af[_0x2b4d('0x1e')]('Content-Range',_0x4b4ddb+'-'+_0x1cc7b8+'/'+_0x1a1064)[_0x2b4d('0x1f')](_0xe04199);}return null;};}function patchUpdates(_0x400049){return function(_0x4f8e08){try{jsonpatch[_0x2b4d('0x20')](_0x4f8e08,_0x400049,!![]);}catch(_0x3623a6){return BPromise['reject'](_0x3623a6);}return _0x4f8e08['save']();};}function saveUpdates(_0x10c1dc,_0x5aa81e){return function(_0x506898){if(_0x506898){return _0x506898[_0x2b4d('0x21')](_0x10c1dc)[_0x2b4d('0x22')](function(_0x229c6d){return _0x229c6d;});}return null;};}function removeEntity(_0x25b080,_0x1f5435){return function(_0x14de2f){if(_0x14de2f){return _0x14de2f[_0x2b4d('0x23')]()[_0x2b4d('0x22')](function(){_0x25b080[_0x2b4d('0x18')](0xcc)[_0x2b4d('0x19')]();});}};}function handleEntityNotFound(_0x3d05e2,_0x1b7925){return function(_0x147ab0){if(!_0x147ab0){_0x3d05e2[_0x2b4d('0x17')](0x194);}return _0x147ab0;};}function handleError(_0x1baceb,_0x4433fb){_0x4433fb=_0x4433fb||0x1f4;return function(_0x4fee47){logger[_0x2b4d('0x24')](_0x4fee47[_0x2b4d('0x25')]);if(_0x4fee47[_0x2b4d('0x26')]){delete _0x4fee47[_0x2b4d('0x26')];}_0x1baceb[_0x2b4d('0x18')](_0x4433fb)[_0x2b4d('0x27')](_0x4fee47);};}exports['index']=function(_0xcd0687,_0x2f575f){var _0x22ffbb={},_0x21a391={},_0x2c9a4e={'count':0x0,'rows':[]};var _0x5efadb=_[_0x2b4d('0x28')](db[_0x2b4d('0x29')][_0x2b4d('0x2a')],function(_0x42070c){return{'name':_0x42070c[_0x2b4d('0x2b')],'type':_0x42070c[_0x2b4d('0x2c')][_0x2b4d('0x2d')]};});_0x21a391[_0x2b4d('0x2e')]=_[_0x2b4d('0x28')](_0x5efadb,_0x2b4d('0x26'));_0x21a391[_0x2b4d('0x2f')]=_['keys'](_0xcd0687['query']);_0x21a391[_0x2b4d('0x30')]=_[_0x2b4d('0x31')](_0x21a391[_0x2b4d('0x2e')],_0x21a391[_0x2b4d('0x2f')]);_0x22ffbb[_0x2b4d('0x32')]=_[_0x2b4d('0x31')](_0x21a391['model'],qs[_0x2b4d('0x33')](_0xcd0687[_0x2b4d('0x2f')][_0x2b4d('0x33')]));_0x22ffbb[_0x2b4d('0x32')]=_0x22ffbb['attributes']['length']?_0x22ffbb[_0x2b4d('0x32')]:_0x21a391[_0x2b4d('0x2e')];if(!_0xcd0687[_0x2b4d('0x2f')][_0x2b4d('0x34')](_0x2b4d('0x35'))){_0x22ffbb[_0x2b4d('0x1c')]=qs['limit'](_0xcd0687[_0x2b4d('0x2f')][_0x2b4d('0x1c')]);_0x22ffbb[_0x2b4d('0x1a')]=qs['offset'](_0xcd0687[_0x2b4d('0x2f')][_0x2b4d('0x1a')]);}_0x22ffbb[_0x2b4d('0x36')]=qs['sort'](_0xcd0687['query']['sort']);_0x22ffbb[_0x2b4d('0x37')]=qs['filters'](_['pick'](_0xcd0687[_0x2b4d('0x2f')],_0x21a391[_0x2b4d('0x30')]),_0x5efadb);if(_0xcd0687[_0x2b4d('0x2f')][_0x2b4d('0x38')]){_0x22ffbb['where']=_[_0x2b4d('0x39')](_0x22ffbb[_0x2b4d('0x37')],{'$or':_[_0x2b4d('0x28')](_0x5efadb,function(_0x380b1e){if(_0x380b1e['type']!==_0x2b4d('0x3a')){var _0x463091={};_0x463091[_0x380b1e[_0x2b4d('0x26')]]={'$like':'%'+_0xcd0687[_0x2b4d('0x2f')][_0x2b4d('0x38')]+'%'};return _0x463091;}})});}_0x22ffbb=_['merge']({},_0x22ffbb,_0xcd0687[_0x2b4d('0x3b')]);var _0x52019d={'where':_0x22ffbb['where']};return db['FaxTransferReport']['count'](_0x52019d)['then'](function(_0x51cd9e){_0x2c9a4e[_0x2b4d('0x1d')]=_0x51cd9e;if(_0xcd0687['query']['includeAll']){_0x22ffbb['include']=[{'all':!![]}];}return db['FaxTransferReport']['findAll'](_0x22ffbb);})[_0x2b4d('0x22')](function(_0x39d12e){_0x2c9a4e[_0x2b4d('0x3c')]=_0x39d12e;return _0x2c9a4e;})['then'](respondWithFilteredResult(_0x2f575f,_0x22ffbb))['catch'](handleError(_0x2f575f,null));};exports[_0x2b4d('0x3d')]=function(_0x155849,_0x3ea3e2){var _0x8faaa1={'raw':!![],'where':{'id':_0x155849[_0x2b4d('0x3e')]['id']}},_0x1c3584={};_0x1c3584[_0x2b4d('0x2e')]=_[_0x2b4d('0x3f')](db[_0x2b4d('0x29')][_0x2b4d('0x2a')]);_0x1c3584[_0x2b4d('0x2f')]=_[_0x2b4d('0x3f')](_0x155849[_0x2b4d('0x2f')]);_0x1c3584[_0x2b4d('0x30')]=_[_0x2b4d('0x31')](_0x1c3584[_0x2b4d('0x2e')],_0x1c3584[_0x2b4d('0x2f')]);_0x8faaa1[_0x2b4d('0x32')]=_[_0x2b4d('0x31')](_0x1c3584[_0x2b4d('0x2e')],qs[_0x2b4d('0x33')](_0x155849[_0x2b4d('0x2f')]['fields']));_0x8faaa1[_0x2b4d('0x32')]=_0x8faaa1[_0x2b4d('0x32')][_0x2b4d('0x40')]?_0x8faaa1['attributes']:_0x1c3584[_0x2b4d('0x2e')];if(_0x155849['query'][_0x2b4d('0x41')]){_0x8faaa1[_0x2b4d('0x42')]=[{'all':!![]}];}_0x8faaa1=_['merge']({},_0x8faaa1,_0x155849['options']);return db[_0x2b4d('0x29')][_0x2b4d('0x43')](_0x8faaa1)['then'](handleEntityNotFound(_0x3ea3e2,null))[_0x2b4d('0x22')](respondWithResult(_0x3ea3e2,null))['catch'](handleError(_0x3ea3e2,null));};exports[_0x2b4d('0x44')]=function(_0x45df14,_0xc4e821){return db[_0x2b4d('0x29')][_0x2b4d('0x44')](_0x45df14[_0x2b4d('0x45')],{})[_0x2b4d('0x22')](respondWithResult(_0xc4e821,0xc9))['catch'](handleError(_0xc4e821,null));};exports[_0x2b4d('0x21')]=function(_0x28bc31,_0x3f8fa1){if(_0x28bc31[_0x2b4d('0x45')]['id']){delete _0x28bc31[_0x2b4d('0x45')]['id'];}return db[_0x2b4d('0x29')][_0x2b4d('0x43')]({'where':{'id':_0x28bc31[_0x2b4d('0x3e')]['id']}})[_0x2b4d('0x22')](handleEntityNotFound(_0x3f8fa1,null))[_0x2b4d('0x22')](saveUpdates(_0x28bc31[_0x2b4d('0x45')],null))[_0x2b4d('0x22')](respondWithResult(_0x3f8fa1,null))[_0x2b4d('0x46')](handleError(_0x3f8fa1,null));};exports[_0x2b4d('0x23')]=function(_0x19dc35,_0x304540){return db[_0x2b4d('0x29')]['find']({'where':{'id':_0x19dc35[_0x2b4d('0x3e')]['id']}})[_0x2b4d('0x22')](handleEntityNotFound(_0x304540,null))[_0x2b4d('0x22')](removeEntity(_0x304540,null))[_0x2b4d('0x46')](handleError(_0x304540,null));};exports[_0x2b4d('0x47')]=function(_0xf5d477,_0x36fbe3){return db['FaxTransferReport'][_0x2b4d('0x47')]()[_0x2b4d('0x22')](respondWithResult(_0x36fbe3,null))['catch'](handleError(_0x36fbe3,null));};
\ No newline at end of file
index fd4190b..72d49cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a64=['../../config/environment','./faxTransferReport.attributes','define','FaxTransferReport','report_fax_transfer','uniqueid','lodash','util','../../config/logger','api','bluebird','path','rimraf'];(function(_0x4cd55c,_0x54d19a){var _0x263d2e=function(_0x43a9c0){while(--_0x43a9c0){_0x4cd55c['push'](_0x4cd55c['shift']());}};_0x263d2e(++_0x54d19a);}(_0x8a64,0xfd));var _0x48a6=function(_0x5a649a,_0x1e12a8){_0x5a649a=_0x5a649a-0x0;var _0x440c49=_0x8a64[_0x5a649a];return _0x440c49;};'use strict';var _=require(_0x48a6('0x0'));var util=require(_0x48a6('0x1'));var logger=require(_0x48a6('0x2'))(_0x48a6('0x3'));var moment=require('moment');var BPromise=require(_0x48a6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x48a6('0x5'));var rimraf=require(_0x48a6('0x6'));var config=require(_0x48a6('0x7'));var attributes=require(_0x48a6('0x8'));module['exports']=function(_0x5604f6,_0x16b094){return _0x5604f6[_0x48a6('0x9')](_0x48a6('0xa'),attributes,{'tableName':_0x48a6('0xb'),'paranoid':![],'indexes':[{'name':_0x48a6('0xc'),'fields':[_0x48a6('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfddb=['lodash','util','../../config/logger','moment','../../config/environment','exports','define','FaxTransferReport','report_fax_transfer','uniqueid'];(function(_0x4fcdf3,_0x53bf50){var _0x373b47=function(_0x377d93){while(--_0x377d93){_0x4fcdf3['push'](_0x4fcdf3['shift']());}};_0x373b47(++_0x53bf50);}(_0xfddb,0x1ea));var _0xbfdd=function(_0x5c5d22,_0x49df58){_0x5c5d22=_0x5c5d22-0x0;var _0x2699d5=_0xfddb[_0x5c5d22];return _0x2699d5;};'use strict';var _=require(_0xbfdd('0x0'));var util=require(_0xbfdd('0x1'));var logger=require(_0xbfdd('0x2'))('api');var moment=require(_0xbfdd('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(_0xbfdd('0x4'));var attributes=require('./faxTransferReport.attributes');module[_0xbfdd('0x5')]=function(_0x113b76,_0x99f0a8){return _0x113b76[_0xbfdd('0x6')](_0xbfdd('0x7'),attributes,{'tableName':_0xbfdd('0x8'),'paranoid':![],'indexes':[{'name':_0xbfdd('0x9'),'fields':[_0xbfdd('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index ed50b6f..f7e77ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3723=['util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash'];(function(_0x455eed,_0x822290){var _0x31cb46=function(_0x54e871){while(--_0x54e871){_0x455eed['push'](_0x455eed['shift']());}};_0x31cb46(++_0x822290);}(_0x3723,0xf9));var _0x3372=function(_0x620f76,_0x290efd){_0x620f76=_0x620f76-0x0;var _0x1346de=_0x3723[_0x620f76];return _0x1346de;};'use strict';var _=require(_0x3372('0x0'));var util=require(_0x3372('0x1'));var moment=require(_0x3372('0x2'));var BPromise=require(_0x3372('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3372('0x4'));var db=require(_0x3372('0x5'))['db'];var utils=require(_0x3372('0x6'));var logger=require(_0x3372('0x7'))(_0x3372('0x8'));var config=require(_0x3372('0x9'));var jayson=require(_0x3372('0xa'));var client=jayson[_0x3372('0xb')][_0x3372('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x32d386,_0x46912a,_0x151906){return new BPromise(function(_0x334c1a,_0x2e8ec9){return client[_0x3372('0xd')](_0x32d386,_0x151906)[_0x3372('0xe')](function(_0x3580ea){logger[_0x3372('0xf')](_0x3372('0x10'),_0x46912a,_0x3372('0x11'));logger['debug'](_0x3372('0x12'),_0x46912a,_0x3372('0x11'),JSON[_0x3372('0x13')](_0x3580ea));if(_0x3580ea[_0x3372('0x14')]){if(_0x3580ea[_0x3372('0x14')][_0x3372('0x15')]===0x1f4){logger[_0x3372('0x14')]('FaxTransferReport,\x20%s,\x20%s',_0x46912a,_0x3580ea['error'][_0x3372('0x16')]);return _0x2e8ec9(_0x3580ea[_0x3372('0x14')][_0x3372('0x16')]);}logger[_0x3372('0x14')](_0x3372('0x10'),_0x46912a,_0x3580ea[_0x3372('0x14')][_0x3372('0x16')]);return _0x334c1a(_0x3580ea[_0x3372('0x14')]['message']);}else{logger[_0x3372('0xf')](_0x3372('0x10'),_0x46912a,_0x3372('0x11'));_0x334c1a(_0x3580ea[_0x3372('0x17')][_0x3372('0x16')]);}})[_0x3372('0x18')](function(_0x423154){logger['error'](_0x3372('0x10'),_0x46912a,_0x423154);_0x2e8ec9(_0x423154);});});}
\ No newline at end of file
+var _0x459d=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','error','code','FaxTransferReport,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','randomstring','ioredis'];(function(_0x547741,_0x4a0c6e){var _0x3a4f4f=function(_0x1afbb1){while(--_0x1afbb1){_0x547741['push'](_0x547741['shift']());}};_0x3a4f4f(++_0x4a0c6e);}(_0x459d,0x8b));var _0xd459=function(_0x2a4e92,_0xdd4ada){_0x2a4e92=_0x2a4e92-0x0;var _0xccdde0=_0x459d[_0x2a4e92];return _0xccdde0;};'use strict';var _=require(_0xd459('0x0'));var util=require(_0xd459('0x1'));var moment=require(_0xd459('0x2'));var BPromise=require('bluebird');var rs=require(_0xd459('0x3'));var fs=require('fs');var Redis=require(_0xd459('0x4'));var db=require(_0xd459('0x5'))['db'];var utils=require(_0xd459('0x6'));var logger=require(_0xd459('0x7'))(_0xd459('0x8'));var config=require(_0xd459('0x9'));var jayson=require(_0xd459('0xa'));var client=jayson[_0xd459('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x14e771,_0x2f5637,_0x8ebd0){return new BPromise(function(_0x1d15a5,_0x27d207){return client[_0xd459('0xc')](_0x14e771,_0x8ebd0)[_0xd459('0xd')](function(_0x25af07){logger['info']('FaxTransferReport,\x20%s,\x20%s',_0x2f5637,_0xd459('0xe'));logger[_0xd459('0xf')](_0xd459('0x10'),_0x2f5637,_0xd459('0xe'),JSON['stringify'](_0x25af07));if(_0x25af07[_0xd459('0x11')]){if(_0x25af07[_0xd459('0x11')][_0xd459('0x12')]===0x1f4){logger[_0xd459('0x11')](_0xd459('0x13'),_0x2f5637,_0x25af07['error']['message']);return _0x27d207(_0x25af07[_0xd459('0x11')]['message']);}logger['error'](_0xd459('0x13'),_0x2f5637,_0x25af07[_0xd459('0x11')][_0xd459('0x14')]);return _0x1d15a5(_0x25af07[_0xd459('0x11')][_0xd459('0x14')]);}else{logger[_0xd459('0x15')](_0xd459('0x13'),_0x2f5637,_0xd459('0xe'));_0x1d15a5(_0x25af07[_0xd459('0x16')][_0xd459('0x14')]);}})[_0xd459('0x17')](function(_0x11a1ca){logger['error'](_0xd459('0x13'),_0x2f5637,_0x11a1ca);_0x27d207(_0x11a1ca);});});}
\ No newline at end of file
index 32f34e0..6e71c27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc790=['get','/describe','isAuthenticated','post','create','update','delete','/:id','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','index'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xc790,0x160));var _0x0c79=function(_0x1a36a5,_0x746928){_0x1a36a5=_0x1a36a5-0x0;var _0x746243=_0xc790[_0x1a36a5];return _0x746243;};'use strict';var multer=require('multer');var util=require(_0x0c79('0x0'));var path=require(_0x0c79('0x1'));var timeout=require(_0x0c79('0x2'));var express=require(_0x0c79('0x3'));var router=express['Router']();var fs_extra=require(_0x0c79('0x4'));var auth=require(_0x0c79('0x5'));var interaction=require(_0x0c79('0x6'));var config=require(_0x0c79('0x7'));var controller=require('./faxTransferReport.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x0c79('0x8')]);router[_0x0c79('0x9')](_0x0c79('0xa'),auth[_0x0c79('0xb')](),controller['describe']);router[_0x0c79('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x0c79('0xc')]('/',auth['isAuthenticated'](),controller[_0x0c79('0xd')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x0c79('0xe')]);router[_0x0c79('0xf')](_0x0c79('0x10'),auth[_0x0c79('0xb')](),controller[_0x0c79('0x11')]);module[_0x0c79('0x12')]=router;
\ No newline at end of file
+var _0xc02e=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','create','delete','destroy','exports','multer','path'];(function(_0x5c02a4,_0x73b71f){var _0x557283=function(_0x72a58e){while(--_0x72a58e){_0x5c02a4['push'](_0x5c02a4['shift']());}};_0x557283(++_0x73b71f);}(_0xc02e,0xee));var _0xec02=function(_0x374d55,_0x27d300){_0x374d55=_0x374d55-0x0;var _0xeb47a1=_0xc02e[_0x374d55];return _0xeb47a1;};'use strict';var multer=require(_0xec02('0x0'));var util=require('util');var path=require(_0xec02('0x1'));var timeout=require('connect-timeout');var express=require(_0xec02('0x2'));var router=express[_0xec02('0x3')]();var fs_extra=require(_0xec02('0x4'));var auth=require(_0xec02('0x5'));var interaction=require(_0xec02('0x6'));var config=require('../../config/environment');var controller=require(_0xec02('0x7'));router['get']('/',auth[_0xec02('0x8')](),controller[_0xec02('0x9')]);router[_0xec02('0xa')](_0xec02('0xb'),auth[_0xec02('0x8')](),controller[_0xec02('0xc')]);router[_0xec02('0xa')](_0xec02('0xd'),auth['isAuthenticated'](),controller[_0xec02('0xe')]);router[_0xec02('0xf')]('/',auth[_0xec02('0x8')](),controller[_0xec02('0x10')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0xec02('0x11')]('/:id',auth[_0xec02('0x8')](),controller[_0xec02('0x12')]);module[_0xec02('0x13')]=router;
\ No newline at end of file
index edb8aa5..8e2244b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a16=['isAuthenticated','getConfigurations','/:id/fields','getFields','create','post','/:id/configurations','put','update','delete','destroy','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','show'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7a16,0x1c3));var _0x67a1=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x7a16[_0x17d9e3];return _0x14192d;};'use strict';var multer=require(_0x67a1('0x0'));var util=require(_0x67a1('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x67a1('0x2'));var router=express['Router']();var fs_extra=require(_0x67a1('0x3'));var auth=require(_0x67a1('0x4'));var interaction=require(_0x67a1('0x5'));var config=require(_0x67a1('0x6'));var controller=require('./intDeskAccount.controller');router[_0x67a1('0x7')]('/',auth['isAuthenticated'](),controller[_0x67a1('0x8')]);router[_0x67a1('0x7')](_0x67a1('0x9'),auth['isAuthenticated'](),controller[_0x67a1('0xa')]);router[_0x67a1('0x7')]('/:id/configurations',auth[_0x67a1('0xb')](),controller[_0x67a1('0xc')]);router['get'](_0x67a1('0xd'),auth[_0x67a1('0xb')](),controller[_0x67a1('0xe')]);router['post']('/',auth[_0x67a1('0xb')](),controller[_0x67a1('0xf')]);router[_0x67a1('0x10')](_0x67a1('0x11'),auth[_0x67a1('0xb')](),controller['addConfiguration']);router[_0x67a1('0x12')](_0x67a1('0x9'),auth['isAuthenticated'](),controller[_0x67a1('0x13')]);router[_0x67a1('0x14')](_0x67a1('0x9'),auth[_0x67a1('0xb')](),controller[_0x67a1('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x63ad=['multer','util','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','put','update','delete','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x63ad,0x165));var _0xd63a=function(_0x1f554f,_0x6de916){_0x1f554f=_0x1f554f-0x0;var _0x1ebadd=_0x63ad[_0x1f554f];return _0x1ebadd;};'use strict';var multer=require(_0xd63a('0x0'));var util=require(_0xd63a('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xd63a('0x2'));var auth=require(_0xd63a('0x3'));var interaction=require(_0xd63a('0x4'));var config=require(_0xd63a('0x5'));var controller=require(_0xd63a('0x6'));router[_0xd63a('0x7')]('/',auth[_0xd63a('0x8')](),controller[_0xd63a('0x9')]);router[_0xd63a('0x7')](_0xd63a('0xa'),auth[_0xd63a('0x8')](),controller[_0xd63a('0xb')]);router[_0xd63a('0x7')](_0xd63a('0xc'),auth[_0xd63a('0x8')](),controller[_0xd63a('0xd')]);router[_0xd63a('0x7')](_0xd63a('0xe'),auth[_0xd63a('0x8')](),controller[_0xd63a('0xf')]);router[_0xd63a('0x10')]('/',auth[_0xd63a('0x8')](),controller['create']);router['post']('/:id/configurations',auth['isAuthenticated'](),controller['addConfiguration']);router[_0xd63a('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xd63a('0x12')]);router[_0xd63a('0x13')]('/:id',auth[_0xd63a('0x8')](),controller['destroy']);module[_0xd63a('0x14')]=router;
\ No newline at end of file
index 843f86c..42f7852 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6078=['newTab','exports','STRING','ENUM','basic','integrationTab'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6078,0xf7));var _0x8607=function(_0x57574f,_0x239859){_0x57574f=_0x57574f-0x0;var _0x136fe3=_0x6078[_0x57574f];return _0x136fe3;};'use strict';var Sequelize=require('sequelize');module[_0x8607('0x0')]={'name':{'type':Sequelize[_0x8607('0x1')]},'description':{'type':Sequelize[_0x8607('0x1')]},'username':{'type':Sequelize[_0x8607('0x1')]},'remoteUri':{'type':Sequelize['STRING']},'authType':{'type':Sequelize[_0x8607('0x2')](_0x8607('0x3')),'defaultValue':_0x8607('0x3')},'password':{'type':Sequelize[_0x8607('0x1')]},'consumerKey':{'type':Sequelize[_0x8607('0x1')]},'consumerSecret':{'type':Sequelize[_0x8607('0x1')]},'token':{'type':Sequelize[_0x8607('0x1')]},'tokenSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x8607('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x8607('0x2')](_0x8607('0x4'),_0x8607('0x5')),'defaultValue':_0x8607('0x4')}};
\ No newline at end of file
+var _0xbee2=['STRING','ENUM','basic','integrationTab','newTab','exports'];(function(_0x33155c,_0x3fdde1){var _0x5becf7=function(_0x2f7a2f){while(--_0x2f7a2f){_0x33155c['push'](_0x33155c['shift']());}};_0x5becf7(++_0x3fdde1);}(_0xbee2,0xfb));var _0x2bee=function(_0x1ad9b4,_0x5df9ed){_0x1ad9b4=_0x1ad9b4-0x0;var _0xbbee74=_0xbee2[_0x1ad9b4];return _0xbbee74;};'use strict';var Sequelize=require('sequelize');module[_0x2bee('0x0')]={'name':{'type':Sequelize[_0x2bee('0x1')]},'description':{'type':Sequelize[_0x2bee('0x1')]},'username':{'type':Sequelize[_0x2bee('0x1')]},'remoteUri':{'type':Sequelize[_0x2bee('0x1')]},'authType':{'type':Sequelize[_0x2bee('0x2')](_0x2bee('0x3')),'defaultValue':_0x2bee('0x3')},'password':{'type':Sequelize['STRING']},'consumerKey':{'type':Sequelize[_0x2bee('0x1')]},'consumerSecret':{'type':Sequelize[_0x2bee('0x1')]},'token':{'type':Sequelize[_0x2bee('0x1')]},'tokenSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x2bee('0x2')](_0x2bee('0x4'),_0x2bee('0x5')),'defaultValue':'integrationTab'}};
\ No newline at end of file
index 30c5ca0..e25eced 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71da=['util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','error','name','send','index','map','DeskAccount','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','findOne','getConfigurations','AccountId','Subjects','channel','Descriptions','getDescriptions','DeskConfiguration','DeskField','priority','authType','username','tokenSecret','remoteUri','slice','substring','lastIndexOf','GET','format','application/json','basic','headers','Basic\x20%s','%s:%s','password','toString','base64','concat','_embedded','entries','active','label','test','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0xa148b7,_0x2f3eb2){var _0x51efd3=function(_0x34bcec){while(--_0x34bcec){_0xa148b7['push'](_0xa148b7['shift']());}};_0x51efd3(++_0x2f3eb2);}(_0x71da,0x6c));var _0xa71d=function(_0x29b2d0,_0x73bf4b){_0x29b2d0=_0x29b2d0-0x0;var _0x4af937=_0x71da[_0x29b2d0];return _0x4af937;};'use strict';var emlformat=require(_0xa71d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa71d('0x1'));var jsonpatch=require(_0xa71d('0x2'));var rp=require(_0xa71d('0x3'));var moment=require(_0xa71d('0x4'));var BPromise=require(_0xa71d('0x5'));var Mustache=require(_0xa71d('0x6'));var util=require(_0xa71d('0x7'));var path=require(_0xa71d('0x8'));var sox=require(_0xa71d('0x9'));var csv=require(_0xa71d('0xa'));var ejs=require(_0xa71d('0xb'));var fs=require('fs');var fs_extra=require(_0xa71d('0xc'));var _=require(_0xa71d('0xd'));var squel=require(_0xa71d('0xe'));var crypto=require('crypto');var jsforce=require(_0xa71d('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xa71d('0x10'));var Papa=require(_0xa71d('0x11'));var Redis=require('ioredis');var authService=require(_0xa71d('0x12'));var qs=require(_0xa71d('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa71d('0x14'))(_0xa71d('0x15'));var utils=require(_0xa71d('0x16'));var config=require(_0xa71d('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xa71d('0x18'))['db'];var integrations=require(_0xa71d('0x19'));function respondWithStatusCode(_0x3aa943,_0x2b8f5a){_0x2b8f5a=_0x2b8f5a||0xcc;return function(_0x1e7716){if(_0x1e7716){return _0x3aa943[_0xa71d('0x1a')](_0x2b8f5a);}return _0x3aa943[_0xa71d('0x1b')](_0x2b8f5a)[_0xa71d('0x1c')]();};}function respondWithResult(_0x4b92e5,_0x389e0f){_0x389e0f=_0x389e0f||0xc8;return function(_0x505baa){if(_0x505baa){return _0x4b92e5[_0xa71d('0x1b')](_0x389e0f)['json'](_0x505baa);}};}function respondWithFilteredResult(_0x28c833,_0x9dda2d){return function(_0x327a2f){if(_0x327a2f){var _0x25341f=typeof _0x9dda2d[_0xa71d('0x1d')]===_0xa71d('0x1e')&&typeof _0x9dda2d['limit']==='undefined';var _0x53657c=_0x327a2f[_0xa71d('0x1f')];var _0x5d044c=_0x25341f?0x0:_0x9dda2d['offset'];var _0x1e6018=_0x25341f?_0x327a2f['count']:_0x9dda2d[_0xa71d('0x1d')]+_0x9dda2d[_0xa71d('0x20')];var _0x4ce5d3;if(_0x1e6018>=_0x53657c){_0x1e6018=_0x53657c;_0x4ce5d3=0xc8;}else{_0x4ce5d3=0xce;}_0x28c833[_0xa71d('0x1b')](_0x4ce5d3);return _0x28c833[_0xa71d('0x21')](_0xa71d('0x22'),_0x5d044c+'-'+_0x1e6018+'/'+_0x53657c)[_0xa71d('0x23')](_0x327a2f);}return null;};}function patchUpdates(_0x5ae67f){return function(_0x1de75c){try{jsonpatch[_0xa71d('0x24')](_0x1de75c,_0x5ae67f,!![]);}catch(_0x4d0d91){return BPromise[_0xa71d('0x25')](_0x4d0d91);}return _0x1de75c[_0xa71d('0x26')]();};}function saveUpdates(_0x25f424,_0x5089da){return function(_0x3207e8){if(_0x3207e8){return _0x3207e8[_0xa71d('0x27')](_0x25f424)[_0xa71d('0x28')](function(_0x9e1f09){return _0x9e1f09;});}return null;};}function removeEntity(_0x27f21d,_0x95f039){return function(_0x37ff05){if(_0x37ff05){return _0x37ff05[_0xa71d('0x29')]()[_0xa71d('0x28')](function(){_0x27f21d[_0xa71d('0x1b')](0xcc)[_0xa71d('0x1c')]();});}};}function handleEntityNotFound(_0x3817eb,_0x5b4d6b){return function(_0x16a717){if(!_0x16a717){_0x3817eb[_0xa71d('0x1a')](0x194);}return _0x16a717;};}function handleError(_0x2cae0e,_0x1766de){_0x1766de=_0x1766de||0x1f4;return function(_0x1bc392){logger[_0xa71d('0x2a')](_0x1bc392['stack']);if(_0x1bc392[_0xa71d('0x2b')]){delete _0x1bc392[_0xa71d('0x2b')];}_0x2cae0e[_0xa71d('0x1b')](_0x1766de)[_0xa71d('0x2c')](_0x1bc392);};}exports[_0xa71d('0x2d')]=function(_0x13c5d2,_0x32d912){var _0x503492={},_0x403236={},_0x2de360={'count':0x0,'rows':[]};var _0x1d7726=_[_0xa71d('0x2e')](db[_0xa71d('0x2f')][_0xa71d('0x30')],function(_0x3e0356){return{'name':_0x3e0356[_0xa71d('0x31')],'type':_0x3e0356[_0xa71d('0x32')]['key']};});_0x403236[_0xa71d('0x33')]=_[_0xa71d('0x2e')](_0x1d7726,_0xa71d('0x2b'));_0x403236[_0xa71d('0x34')]=_[_0xa71d('0x35')](_0x13c5d2['query']);_0x403236[_0xa71d('0x36')]=_[_0xa71d('0x37')](_0x403236['model'],_0x403236['query']);_0x503492['attributes']=_[_0xa71d('0x37')](_0x403236[_0xa71d('0x33')],qs[_0xa71d('0x38')](_0x13c5d2['query'][_0xa71d('0x38')]));_0x503492[_0xa71d('0x39')]=_0x503492[_0xa71d('0x39')][_0xa71d('0x3a')]?_0x503492[_0xa71d('0x39')]:_0x403236[_0xa71d('0x33')];if(!_0x13c5d2[_0xa71d('0x34')][_0xa71d('0x3b')](_0xa71d('0x3c'))){_0x503492[_0xa71d('0x20')]=qs['limit'](_0x13c5d2[_0xa71d('0x34')]['limit']);_0x503492['offset']=qs[_0xa71d('0x1d')](_0x13c5d2['query'][_0xa71d('0x1d')]);}_0x503492[_0xa71d('0x3d')]=qs[_0xa71d('0x3e')](_0x13c5d2[_0xa71d('0x34')][_0xa71d('0x3e')]);_0x503492[_0xa71d('0x3f')]=qs[_0xa71d('0x36')](_[_0xa71d('0x40')](_0x13c5d2[_0xa71d('0x34')],_0x403236['filters']),_0x1d7726);if(_0x13c5d2[_0xa71d('0x34')][_0xa71d('0x41')]){_0x503492['where']=_['merge'](_0x503492[_0xa71d('0x3f')],{'$or':_[_0xa71d('0x2e')](_0x1d7726,function(_0x2dc63b){if(_0x2dc63b[_0xa71d('0x32')]!=='VIRTUAL'){var _0x156df6={};_0x156df6[_0x2dc63b[_0xa71d('0x2b')]]={'$like':'%'+_0x13c5d2[_0xa71d('0x34')][_0xa71d('0x41')]+'%'};return _0x156df6;}})});}_0x503492=_[_0xa71d('0x42')]({},_0x503492,_0x13c5d2[_0xa71d('0x43')]);var _0x303317={'where':_0x503492[_0xa71d('0x3f')]};return db['DeskAccount'][_0xa71d('0x1f')](_0x303317)[_0xa71d('0x28')](function(_0x513f75){_0x2de360['count']=_0x513f75;if(_0x13c5d2[_0xa71d('0x34')][_0xa71d('0x44')]){_0x503492['include']=[{'all':!![]}];}return db['DeskAccount'][_0xa71d('0x45')](_0x503492);})[_0xa71d('0x28')](function(_0xf92f70){_0x2de360[_0xa71d('0x46')]=_0xf92f70;return _0x2de360;})[_0xa71d('0x28')](respondWithFilteredResult(_0x32d912,_0x503492))[_0xa71d('0x47')](handleError(_0x32d912,null));};exports[_0xa71d('0x48')]=function(_0x5d5cf7,_0xc81513){var _0xd0166f={'raw':![],'where':{'id':_0x5d5cf7[_0xa71d('0x49')]['id']}},_0x3e3c16={};_0x3e3c16[_0xa71d('0x33')]=_['keys'](db['DeskAccount'][_0xa71d('0x30')]);_0x3e3c16[_0xa71d('0x34')]=_[_0xa71d('0x35')](_0x5d5cf7[_0xa71d('0x34')]);_0x3e3c16[_0xa71d('0x36')]=_['intersection'](_0x3e3c16[_0xa71d('0x33')],_0x3e3c16['query']);_0xd0166f[_0xa71d('0x39')]=_[_0xa71d('0x37')](_0x3e3c16[_0xa71d('0x33')],qs[_0xa71d('0x38')](_0x5d5cf7['query'][_0xa71d('0x38')]));_0xd0166f[_0xa71d('0x39')]=_0xd0166f[_0xa71d('0x39')][_0xa71d('0x3a')]?_0xd0166f[_0xa71d('0x39')]:_0x3e3c16['model'];if(_0x5d5cf7['query'][_0xa71d('0x44')]){_0xd0166f[_0xa71d('0x4a')]=[{'all':!![]}];}_0xd0166f=_[_0xa71d('0x42')]({},_0xd0166f,_0x5d5cf7[_0xa71d('0x43')]);return db[_0xa71d('0x2f')][_0xa71d('0x4b')](_0xd0166f)[_0xa71d('0x28')](handleEntityNotFound(_0xc81513,null))[_0xa71d('0x28')](respondWithResult(_0xc81513,null))[_0xa71d('0x47')](handleError(_0xc81513,null));};exports[_0xa71d('0x4c')]=function(_0x437179,_0x2e0219){return db[_0xa71d('0x2f')]['create'](_0x437179['body'],{})['then'](respondWithResult(_0x2e0219,0xc9))[_0xa71d('0x47')](handleError(_0x2e0219,null));};exports[_0xa71d('0x27')]=function(_0x5dcf27,_0x352b40){if(_0x5dcf27[_0xa71d('0x4d')]['id']){delete _0x5dcf27[_0xa71d('0x4d')]['id'];}return db['DeskAccount']['find']({'where':{'id':_0x5dcf27['params']['id']}})[_0xa71d('0x28')](handleEntityNotFound(_0x352b40,null))[_0xa71d('0x28')](saveUpdates(_0x5dcf27['body'],null))[_0xa71d('0x28')](respondWithResult(_0x352b40,null))['catch'](handleError(_0x352b40,null));};exports[_0xa71d('0x29')]=function(_0x510b19,_0x5adcff){return db[_0xa71d('0x2f')][_0xa71d('0x4b')]({'where':{'id':_0x510b19[_0xa71d('0x49')]['id']}})['then'](handleEntityNotFound(_0x5adcff,null))[_0xa71d('0x28')](removeEntity(_0x5adcff,null))[_0xa71d('0x47')](handleError(_0x5adcff,null));};exports['getConfigurations']=function(_0x3f07fe,_0x1e0edc,_0x52f808){var _0xbcb1d6={};var _0x3242a5={};var _0x5554b1;var _0x2e5a45;return db['DeskAccount'][_0xa71d('0x4e')]({'where':{'id':_0x3f07fe[_0xa71d('0x49')]['id']}})[_0xa71d('0x28')](handleEntityNotFound(_0x1e0edc,null))['then'](function(_0x3b76cf){if(_0x3b76cf){_0x5554b1=_0x3b76cf;_0x3242a5[_0xa71d('0x33')]=_[_0xa71d('0x35')](db['DeskConfiguration'][_0xa71d('0x30')]);_0x3242a5[_0xa71d('0x34')]=_[_0xa71d('0x35')](_0x3f07fe['query']);_0x3242a5['filters']=_[_0xa71d('0x37')](_0x3242a5[_0xa71d('0x33')],_0x3242a5[_0xa71d('0x34')]);_0xbcb1d6[_0xa71d('0x39')]=_[_0xa71d('0x37')](_0x3242a5['model'],qs['fields'](_0x3f07fe['query'][_0xa71d('0x38')]));_0xbcb1d6[_0xa71d('0x39')]=_0xbcb1d6[_0xa71d('0x39')][_0xa71d('0x3a')]?_0xbcb1d6[_0xa71d('0x39')]:_0x3242a5['model'];_0xbcb1d6[_0xa71d('0x3d')]=qs[_0xa71d('0x3e')](_0x3f07fe[_0xa71d('0x34')][_0xa71d('0x3e')]);_0xbcb1d6[_0xa71d('0x3f')]=qs['filters'](_['pick'](_0x3f07fe[_0xa71d('0x34')],_0x3242a5[_0xa71d('0x36')]));if(_0x3f07fe[_0xa71d('0x34')][_0xa71d('0x41')]){_0xbcb1d6[_0xa71d('0x3f')]=_[_0xa71d('0x42')](_0xbcb1d6[_0xa71d('0x3f')],{'$or':_[_0xa71d('0x2e')](_0xbcb1d6[_0xa71d('0x39')],function(_0x104f7a){var _0x1d764a={};_0x1d764a[_0x104f7a]={'$like':'%'+_0x3f07fe[_0xa71d('0x34')][_0xa71d('0x41')]+'%'};return _0x1d764a;})});}_0xbcb1d6=_[_0xa71d('0x42')]({},_0xbcb1d6,_0x3f07fe[_0xa71d('0x43')]);return _0x5554b1[_0xa71d('0x4f')](_0xbcb1d6);}})[_0xa71d('0x28')](function(_0x36c261){if(_0x36c261){_0x2e5a45=_0x36c261['length'];if(!_0x3f07fe[_0xa71d('0x34')][_0xa71d('0x3b')](_0xa71d('0x3c'))){_0xbcb1d6[_0xa71d('0x20')]=qs[_0xa71d('0x20')](_0x3f07fe[_0xa71d('0x34')][_0xa71d('0x20')]);_0xbcb1d6[_0xa71d('0x1d')]=qs[_0xa71d('0x1d')](_0x3f07fe[_0xa71d('0x34')]['offset']);}return _0x5554b1[_0xa71d('0x4f')](_0xbcb1d6);}})[_0xa71d('0x28')](function(_0x64e959){if(_0x64e959){return _0x64e959?{'count':_0x2e5a45,'rows':_0x64e959}:null;}})[_0xa71d('0x28')](respondWithResult(_0x1e0edc,null))[_0xa71d('0x47')](handleError(_0x1e0edc,null));};exports['addConfiguration']=function(_0x43a29b,_0x5c712f,_0x31821d){if(_0x43a29b['body']['id']){delete _0x43a29b[_0xa71d('0x4d')]['id'];}return db['DeskAccount']['findOne']({'where':{'id':_0x43a29b['params']['id']}})[_0xa71d('0x28')](handleEntityNotFound(_0x5c712f,null))['then'](function(_0x2d8cb5){if(_0x2d8cb5){_0x43a29b[_0xa71d('0x4d')][_0xa71d('0x50')]=_0x2d8cb5['id'];_0x43a29b[_0xa71d('0x4d')][_0xa71d('0x51')]=integrations['getSubjects'](_0x43a29b['body'][_0xa71d('0x52')],_0x43a29b[_0xa71d('0x4d')][_0xa71d('0x32')]);_0x43a29b[_0xa71d('0x4d')][_0xa71d('0x53')]=integrations[_0xa71d('0x54')](_0x43a29b['body'][_0xa71d('0x52')],_0x43a29b[_0xa71d('0x4d')]['type']);return db[_0xa71d('0x55')][_0xa71d('0x4c')](_0x43a29b['body'],{'include':[{'model':db[_0xa71d('0x56')],'as':_0xa71d('0x51')},{'model':db['DeskField'],'as':'Descriptions'}]});}return null;})[_0xa71d('0x28')](respondWithResult(_0x5c712f,null))['catch'](handleError(_0x5c712f,null));};exports['getFields']=function(_0x3d92b8,_0x14557f,_0x27e5ec){var _0x5bc48b=[{'name':_0xa71d('0x57'),'label':'priority','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 _0x518cea='';return db[_0xa71d('0x2f')]['findOne']({'where':{'id':_0x3d92b8[_0xa71d('0x49')]['id']},'attributes':['id','remoteUri',_0xa71d('0x58'),_0xa71d('0x59'),'password','consumerKey','consumerSecret','token',_0xa71d('0x5a')]})[_0xa71d('0x28')](handleEntityNotFound(_0x14557f,null))['then'](function(_0x584772){if(_0x584772){_0x518cea=_0x584772[_0xa71d('0x5b')];var _0x2fdb41=_0x518cea[_0xa71d('0x5c')](-0x1);if(_0x2fdb41==='/'){_0x518cea=_0x518cea[_0xa71d('0x5d')](0x0,_0x518cea[_0xa71d('0x5e')](_0x2fdb41));}var _0x1dec8c={'method':_0xa71d('0x5f'),'uri':util[_0xa71d('0x60')]('%s/custom_fields',_0x518cea),'headers':{'Content-Type':_0xa71d('0x61'),'Accept':_0xa71d('0x61')},'json':!![]};if(_0x584772[_0xa71d('0x58')]===_0xa71d('0x62')){_0x1dec8c[_0xa71d('0x63')]['Authorization']=util[_0xa71d('0x60')](_0xa71d('0x64'),new Buffer(util['format'](_0xa71d('0x65'),_0x584772[_0xa71d('0x59')],_0x584772[_0xa71d('0x66')]))[_0xa71d('0x67')](_0xa71d('0x68')));}return rp(_0x1dec8c)[_0xa71d('0x28')](function(_0x7d24e6){return _0x5bc48b[_0xa71d('0x69')](_['map'](_0x7d24e6[_0xa71d('0x6a')][_0xa71d('0x6b')],function(_0x24ca29){return{'id':_0x24ca29[_0xa71d('0x2b')],'name':_0x24ca29[_0xa71d('0x2b')],'type':_0x24ca29[_0xa71d('0x32')],'active':_0x24ca29[_0xa71d('0x6c')],'label':_0x24ca29[_0xa71d('0x6d')],'custom':!![]};}));});}})['then'](function(_0x2e62c7){return{'count':_0x2e62c7['length'],'rows':_0x2e62c7};})[_0xa71d('0x28')](respondWithResult(_0x14557f,null))[_0xa71d('0x47')](function(_0x1a8f53){var _0x1a41e4=_0x3d92b8[_0xa71d('0x34')][_0xa71d('0x6e')]?0x1f4:_0x1a8f53['statusCode']||0x1f4;logger[_0xa71d('0x2a')](_0xa71d('0x6f'),'getFields',_0x1a41e4,JSON[_0xa71d('0x70')](_0x1a8f53));delete _0x1a8f53['name'];if(_0x1a41e4===0x191){_0x1a41e4=0x190;}_0x14557f[_0xa71d('0x1b')](_0x1a41e4)[_0xa71d('0x2c')](_0x3d92b8[_0xa71d('0x34')]['test']?{'message':_0xa71d('0x71'),'statusCode':_0x1a8f53[_0xa71d('0x72')]}:_0x1a8f53);});};
\ No newline at end of file
+var _0xce1e=['type','VIRTUAL','options','includeAll','include','rows','show','params','length','find','catch','create','body','destroy','getConfigurations','findOne','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','channel','DeskField','getFields','priority','remoteUri','password','consumerKey','consumerSecret','token','tokenSecret','slice','substring','lastIndexOf','GET','format','application/json','authType','basic','headers','Authorization','Basic\x20%s','username','toString','base64','concat','entries','active','label','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','to-csv','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','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','count','limit','Content-Range','json','apply','reject','save','update','then','error','name','send','map','DeskAccount','rawAttributes','fieldName','key','model','keys','query','filters','intersection','fields','attributes','order','sort','where','pick','filter','merge'];(function(_0x2c9816,_0x19d8ab){var _0x1c367a=function(_0x12a630){while(--_0x12a630){_0x2c9816['push'](_0x2c9816['shift']());}};_0x1c367a(++_0x19d8ab);}(_0xce1e,0x11d));var _0xece1=function(_0x1bbffe,_0x39f25d){_0x1bbffe=_0x1bbffe-0x0;var _0x3c1047=_0xce1e[_0x1bbffe];return _0x3c1047;};'use strict';var emlformat=require(_0xece1('0x0'));var rimraf=require(_0xece1('0x1'));var zipdir=require(_0xece1('0x2'));var jsonpatch=require(_0xece1('0x3'));var rp=require(_0xece1('0x4'));var moment=require(_0xece1('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xece1('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xece1('0x7'));var ejs=require(_0xece1('0x8'));var fs=require('fs');var fs_extra=require(_0xece1('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xece1('0xa'));var jsforce=require(_0xece1('0xb'));var deskjs=require(_0xece1('0xc'));var toCsv=require(_0xece1('0x7'));var querystring=require(_0xece1('0xd'));var Papa=require('papaparse');var Redis=require(_0xece1('0xe'));var authService=require(_0xece1('0xf'));var qs=require(_0xece1('0x10'));var as=require(_0xece1('0x11'));var hardwareService=require(_0xece1('0x12'));var logger=require(_0xece1('0x13'))(_0xece1('0x14'));var utils=require(_0xece1('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xece1('0x16'));var db=require(_0xece1('0x17'))['db'];var integrations=require(_0xece1('0x18'));function respondWithStatusCode(_0x15a7a7,_0x2024fe){_0x2024fe=_0x2024fe||0xcc;return function(_0x2b26e1){if(_0x2b26e1){return _0x15a7a7[_0xece1('0x19')](_0x2024fe);}return _0x15a7a7[_0xece1('0x1a')](_0x2024fe)[_0xece1('0x1b')]();};}function respondWithResult(_0x56a293,_0x6abcae){_0x6abcae=_0x6abcae||0xc8;return function(_0x4a57d7){if(_0x4a57d7){return _0x56a293['status'](_0x6abcae)['json'](_0x4a57d7);}};}function respondWithFilteredResult(_0x53c270,_0x26b8ef){return function(_0x30deef){if(_0x30deef){var _0x371661=typeof _0x26b8ef[_0xece1('0x1c')]==='undefined'&&typeof _0x26b8ef['limit']===_0xece1('0x1d');var _0x4e0b83=_0x30deef[_0xece1('0x1e')];var _0x2cdc0c=_0x371661?0x0:_0x26b8ef[_0xece1('0x1c')];var _0x445caf=_0x371661?_0x30deef['count']:_0x26b8ef[_0xece1('0x1c')]+_0x26b8ef[_0xece1('0x1f')];var _0x1d2d81;if(_0x445caf>=_0x4e0b83){_0x445caf=_0x4e0b83;_0x1d2d81=0xc8;}else{_0x1d2d81=0xce;}_0x53c270[_0xece1('0x1a')](_0x1d2d81);return _0x53c270['set'](_0xece1('0x20'),_0x2cdc0c+'-'+_0x445caf+'/'+_0x4e0b83)[_0xece1('0x21')](_0x30deef);}return null;};}function patchUpdates(_0x1efaeb){return function(_0x1eba7d){try{jsonpatch[_0xece1('0x22')](_0x1eba7d,_0x1efaeb,!![]);}catch(_0x897d85){return BPromise[_0xece1('0x23')](_0x897d85);}return _0x1eba7d[_0xece1('0x24')]();};}function saveUpdates(_0x47e887,_0x30fdd1){return function(_0xbc0e5c){if(_0xbc0e5c){return _0xbc0e5c[_0xece1('0x25')](_0x47e887)['then'](function(_0x270c3c){return _0x270c3c;});}return null;};}function removeEntity(_0x23f51a,_0x77ffc2){return function(_0x3275d4){if(_0x3275d4){return _0x3275d4['destroy']()[_0xece1('0x26')](function(){_0x23f51a[_0xece1('0x1a')](0xcc)[_0xece1('0x1b')]();});}};}function handleEntityNotFound(_0x380e90,_0x2cb6cc){return function(_0x43319e){if(!_0x43319e){_0x380e90[_0xece1('0x19')](0x194);}return _0x43319e;};}function handleError(_0x1f7ce2,_0x553cb1){_0x553cb1=_0x553cb1||0x1f4;return function(_0x75bb3f){logger[_0xece1('0x27')](_0x75bb3f['stack']);if(_0x75bb3f[_0xece1('0x28')]){delete _0x75bb3f[_0xece1('0x28')];}_0x1f7ce2[_0xece1('0x1a')](_0x553cb1)[_0xece1('0x29')](_0x75bb3f);};}exports['index']=function(_0x132870,_0x34799f){var _0x1852d2={},_0x81df={},_0x198f26={'count':0x0,'rows':[]};var _0x1cf283=_[_0xece1('0x2a')](db[_0xece1('0x2b')][_0xece1('0x2c')],function(_0x267af5){return{'name':_0x267af5[_0xece1('0x2d')],'type':_0x267af5['type'][_0xece1('0x2e')]};});_0x81df[_0xece1('0x2f')]=_['map'](_0x1cf283,_0xece1('0x28'));_0x81df['query']=_[_0xece1('0x30')](_0x132870[_0xece1('0x31')]);_0x81df[_0xece1('0x32')]=_[_0xece1('0x33')](_0x81df[_0xece1('0x2f')],_0x81df[_0xece1('0x31')]);_0x1852d2['attributes']=_[_0xece1('0x33')](_0x81df[_0xece1('0x2f')],qs[_0xece1('0x34')](_0x132870[_0xece1('0x31')][_0xece1('0x34')]));_0x1852d2[_0xece1('0x35')]=_0x1852d2[_0xece1('0x35')]['length']?_0x1852d2['attributes']:_0x81df[_0xece1('0x2f')];if(!_0x132870[_0xece1('0x31')]['hasOwnProperty']('nolimit')){_0x1852d2[_0xece1('0x1f')]=qs['limit'](_0x132870[_0xece1('0x31')][_0xece1('0x1f')]);_0x1852d2['offset']=qs[_0xece1('0x1c')](_0x132870['query'][_0xece1('0x1c')]);}_0x1852d2[_0xece1('0x36')]=qs[_0xece1('0x37')](_0x132870[_0xece1('0x31')][_0xece1('0x37')]);_0x1852d2[_0xece1('0x38')]=qs[_0xece1('0x32')](_[_0xece1('0x39')](_0x132870[_0xece1('0x31')],_0x81df[_0xece1('0x32')]),_0x1cf283);if(_0x132870[_0xece1('0x31')][_0xece1('0x3a')]){_0x1852d2[_0xece1('0x38')]=_[_0xece1('0x3b')](_0x1852d2[_0xece1('0x38')],{'$or':_[_0xece1('0x2a')](_0x1cf283,function(_0x1897c3){if(_0x1897c3[_0xece1('0x3c')]!==_0xece1('0x3d')){var _0x10f9b4={};_0x10f9b4[_0x1897c3['name']]={'$like':'%'+_0x132870[_0xece1('0x31')]['filter']+'%'};return _0x10f9b4;}})});}_0x1852d2=_[_0xece1('0x3b')]({},_0x1852d2,_0x132870[_0xece1('0x3e')]);var _0x5a72c5={'where':_0x1852d2[_0xece1('0x38')]};return db[_0xece1('0x2b')]['count'](_0x5a72c5)['then'](function(_0x4f3992){_0x198f26[_0xece1('0x1e')]=_0x4f3992;if(_0x132870[_0xece1('0x31')][_0xece1('0x3f')]){_0x1852d2[_0xece1('0x40')]=[{'all':!![]}];}return db[_0xece1('0x2b')]['findAll'](_0x1852d2);})['then'](function(_0x277e5e){_0x198f26[_0xece1('0x41')]=_0x277e5e;return _0x198f26;})['then'](respondWithFilteredResult(_0x34799f,_0x1852d2))['catch'](handleError(_0x34799f,null));};exports[_0xece1('0x42')]=function(_0x2ce531,_0x3645bc){var _0x4b2967={'raw':![],'where':{'id':_0x2ce531[_0xece1('0x43')]['id']}},_0x23999f={};_0x23999f[_0xece1('0x2f')]=_['keys'](db[_0xece1('0x2b')][_0xece1('0x2c')]);_0x23999f[_0xece1('0x31')]=_[_0xece1('0x30')](_0x2ce531['query']);_0x23999f[_0xece1('0x32')]=_['intersection'](_0x23999f[_0xece1('0x2f')],_0x23999f[_0xece1('0x31')]);_0x4b2967['attributes']=_[_0xece1('0x33')](_0x23999f['model'],qs[_0xece1('0x34')](_0x2ce531[_0xece1('0x31')][_0xece1('0x34')]));_0x4b2967['attributes']=_0x4b2967['attributes'][_0xece1('0x44')]?_0x4b2967['attributes']:_0x23999f[_0xece1('0x2f')];if(_0x2ce531[_0xece1('0x31')][_0xece1('0x3f')]){_0x4b2967[_0xece1('0x40')]=[{'all':!![]}];}_0x4b2967=_[_0xece1('0x3b')]({},_0x4b2967,_0x2ce531['options']);return db['DeskAccount'][_0xece1('0x45')](_0x4b2967)['then'](handleEntityNotFound(_0x3645bc,null))[_0xece1('0x26')](respondWithResult(_0x3645bc,null))[_0xece1('0x46')](handleError(_0x3645bc,null));};exports[_0xece1('0x47')]=function(_0x47d8d8,_0x1f185f){return db['DeskAccount'][_0xece1('0x47')](_0x47d8d8[_0xece1('0x48')],{})['then'](respondWithResult(_0x1f185f,0xc9))[_0xece1('0x46')](handleError(_0x1f185f,null));};exports[_0xece1('0x25')]=function(_0x4a9e15,_0x28bba1){if(_0x4a9e15[_0xece1('0x48')]['id']){delete _0x4a9e15[_0xece1('0x48')]['id'];}return db[_0xece1('0x2b')]['find']({'where':{'id':_0x4a9e15[_0xece1('0x43')]['id']}})[_0xece1('0x26')](handleEntityNotFound(_0x28bba1,null))[_0xece1('0x26')](saveUpdates(_0x4a9e15[_0xece1('0x48')],null))['then'](respondWithResult(_0x28bba1,null))['catch'](handleError(_0x28bba1,null));};exports[_0xece1('0x49')]=function(_0x14d49b,_0x376ebb){return db['DeskAccount'][_0xece1('0x45')]({'where':{'id':_0x14d49b[_0xece1('0x43')]['id']}})[_0xece1('0x26')](handleEntityNotFound(_0x376ebb,null))[_0xece1('0x26')](removeEntity(_0x376ebb,null))[_0xece1('0x46')](handleError(_0x376ebb,null));};exports[_0xece1('0x4a')]=function(_0x256b1f,_0x20a7c2,_0x5ab03a){var _0x2c6565={};var _0x107000={};var _0x2cbf50;var _0x1d6b92;return db[_0xece1('0x2b')][_0xece1('0x4b')]({'where':{'id':_0x256b1f[_0xece1('0x43')]['id']}})[_0xece1('0x26')](handleEntityNotFound(_0x20a7c2,null))[_0xece1('0x26')](function(_0x787431){if(_0x787431){_0x2cbf50=_0x787431;_0x107000[_0xece1('0x2f')]=_[_0xece1('0x30')](db['DeskConfiguration']['rawAttributes']);_0x107000[_0xece1('0x31')]=_['keys'](_0x256b1f[_0xece1('0x31')]);_0x107000[_0xece1('0x32')]=_[_0xece1('0x33')](_0x107000[_0xece1('0x2f')],_0x107000[_0xece1('0x31')]);_0x2c6565[_0xece1('0x35')]=_[_0xece1('0x33')](_0x107000[_0xece1('0x2f')],qs['fields'](_0x256b1f['query']['fields']));_0x2c6565[_0xece1('0x35')]=_0x2c6565[_0xece1('0x35')][_0xece1('0x44')]?_0x2c6565[_0xece1('0x35')]:_0x107000[_0xece1('0x2f')];_0x2c6565[_0xece1('0x36')]=qs[_0xece1('0x37')](_0x256b1f[_0xece1('0x31')][_0xece1('0x37')]);_0x2c6565[_0xece1('0x38')]=qs[_0xece1('0x32')](_['pick'](_0x256b1f[_0xece1('0x31')],_0x107000['filters']));if(_0x256b1f[_0xece1('0x31')]['filter']){_0x2c6565[_0xece1('0x38')]=_[_0xece1('0x3b')](_0x2c6565[_0xece1('0x38')],{'$or':_[_0xece1('0x2a')](_0x2c6565['attributes'],function(_0x1baee2){var _0x457cda={};_0x457cda[_0x1baee2]={'$like':'%'+_0x256b1f['query'][_0xece1('0x3a')]+'%'};return _0x457cda;})});}_0x2c6565=_[_0xece1('0x3b')]({},_0x2c6565,_0x256b1f[_0xece1('0x3e')]);return _0x2cbf50[_0xece1('0x4a')](_0x2c6565);}})[_0xece1('0x26')](function(_0x2ae0b5){if(_0x2ae0b5){_0x1d6b92=_0x2ae0b5['length'];if(!_0x256b1f[_0xece1('0x31')]['hasOwnProperty']('nolimit')){_0x2c6565[_0xece1('0x1f')]=qs[_0xece1('0x1f')](_0x256b1f[_0xece1('0x31')][_0xece1('0x1f')]);_0x2c6565[_0xece1('0x1c')]=qs[_0xece1('0x1c')](_0x256b1f['query'][_0xece1('0x1c')]);}return _0x2cbf50[_0xece1('0x4a')](_0x2c6565);}})[_0xece1('0x26')](function(_0x5a831d){if(_0x5a831d){return _0x5a831d?{'count':_0x1d6b92,'rows':_0x5a831d}:null;}})[_0xece1('0x26')](respondWithResult(_0x20a7c2,null))[_0xece1('0x46')](handleError(_0x20a7c2,null));};exports[_0xece1('0x4c')]=function(_0x4038e2,_0x4b2721,_0xeba5c6){if(_0x4038e2[_0xece1('0x48')]['id']){delete _0x4038e2[_0xece1('0x48')]['id'];}return db[_0xece1('0x2b')][_0xece1('0x4b')]({'where':{'id':_0x4038e2['params']['id']}})[_0xece1('0x26')](handleEntityNotFound(_0x4b2721,null))[_0xece1('0x26')](function(_0x750b49){if(_0x750b49){_0x4038e2[_0xece1('0x48')][_0xece1('0x4d')]=_0x750b49['id'];_0x4038e2[_0xece1('0x48')][_0xece1('0x4e')]=integrations[_0xece1('0x4f')](_0x4038e2[_0xece1('0x48')]['channel'],_0x4038e2['body']['type']);_0x4038e2['body'][_0xece1('0x50')]=integrations[_0xece1('0x51')](_0x4038e2[_0xece1('0x48')][_0xece1('0x52')],_0x4038e2[_0xece1('0x48')][_0xece1('0x3c')]);return db['DeskConfiguration']['create'](_0x4038e2[_0xece1('0x48')],{'include':[{'model':db[_0xece1('0x53')],'as':_0xece1('0x4e')},{'model':db[_0xece1('0x53')],'as':_0xece1('0x50')}]});}return null;})['then'](respondWithResult(_0x4b2721,null))['catch'](handleError(_0x4b2721,null));};exports[_0xece1('0x54')]=function(_0x56ae0c,_0x5f10d2,_0x2b5fce){var _0x29415c=[{'name':_0xece1('0x55'),'label':_0xece1('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 _0x24103a='';return db[_0xece1('0x2b')][_0xece1('0x4b')]({'where':{'id':_0x56ae0c[_0xece1('0x43')]['id']},'attributes':['id',_0xece1('0x56'),'authType','username',_0xece1('0x57'),_0xece1('0x58'),_0xece1('0x59'),_0xece1('0x5a'),_0xece1('0x5b')]})[_0xece1('0x26')](handleEntityNotFound(_0x5f10d2,null))['then'](function(_0x2ddaaf){if(_0x2ddaaf){_0x24103a=_0x2ddaaf[_0xece1('0x56')];var _0x2e0e67=_0x24103a[_0xece1('0x5c')](-0x1);if(_0x2e0e67==='/'){_0x24103a=_0x24103a[_0xece1('0x5d')](0x0,_0x24103a[_0xece1('0x5e')](_0x2e0e67));}var _0x4d04f0={'method':_0xece1('0x5f'),'uri':util[_0xece1('0x60')]('%s/custom_fields',_0x24103a),'headers':{'Content-Type':_0xece1('0x61'),'Accept':_0xece1('0x61')},'json':!![]};if(_0x2ddaaf[_0xece1('0x62')]===_0xece1('0x63')){_0x4d04f0[_0xece1('0x64')][_0xece1('0x65')]=util[_0xece1('0x60')](_0xece1('0x66'),new Buffer(util[_0xece1('0x60')]('%s:%s',_0x2ddaaf[_0xece1('0x67')],_0x2ddaaf['password']))[_0xece1('0x68')](_0xece1('0x69')));}return rp(_0x4d04f0)['then'](function(_0x3e48a4){return _0x29415c[_0xece1('0x6a')](_[_0xece1('0x2a')](_0x3e48a4['_embedded'][_0xece1('0x6b')],function(_0xac50d3){return{'id':_0xac50d3[_0xece1('0x28')],'name':_0xac50d3['name'],'type':_0xac50d3[_0xece1('0x3c')],'active':_0xac50d3[_0xece1('0x6c')],'label':_0xac50d3[_0xece1('0x6d')],'custom':!![]};}));});}})['then'](function(_0x9d0204){return{'count':_0x9d0204[_0xece1('0x44')],'rows':_0x9d0204};})[_0xece1('0x26')](respondWithResult(_0x5f10d2,null))['catch'](function(_0x235815){var _0x39072f=_0x56ae0c[_0xece1('0x31')][_0xece1('0x6e')]?0x1f4:_0x235815[_0xece1('0x6f')]||0x1f4;logger[_0xece1('0x27')](_0xece1('0x70'),'getFields',_0x39072f,JSON[_0xece1('0x71')](_0x235815));delete _0x235815['name'];if(_0x39072f===0x191){_0x39072f=0x190;}_0x5f10d2[_0xece1('0x1a')](_0x39072f)[_0xece1('0x29')](_0x56ae0c[_0xece1('0x31')][_0xece1('0x6e')]?{'message':_0xece1('0x72'),'statusCode':_0x235815['statusCode']}:_0x235815);});};
\ No newline at end of file
index 01fbfbc..859e12a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4801=['bluebird','request-promise','path','rimraf','./intDeskAccount.attributes','../../components/integrations/configuration','exports','DeskAccount','int_desk_accounts','util','../../config/logger','api','moment'];(function(_0x45ec71,_0x31ca8b){var _0x386f82=function(_0x3023ce){while(--_0x3023ce){_0x45ec71['push'](_0x45ec71['shift']());}};_0x386f82(++_0x31ca8b);}(_0x4801,0x14e));var _0x1480=function(_0x33c638,_0x462bff){_0x33c638=_0x33c638-0x0;var _0x18a079=_0x4801[_0x33c638];return _0x18a079;};'use strict';var _=require('lodash');var util=require(_0x1480('0x0'));var logger=require(_0x1480('0x1'))(_0x1480('0x2'));var moment=require(_0x1480('0x3'));var BPromise=require(_0x1480('0x4'));var rp=require(_0x1480('0x5'));var fs=require('fs');var path=require(_0x1480('0x6'));var rimraf=require(_0x1480('0x7'));var config=require('../../config/environment');var attributes=require(_0x1480('0x8'));var integrations=require(_0x1480('0x9'));module[_0x1480('0xa')]=function(_0x4825af,_0x2e306f){return _0x4825af['define'](_0x1480('0xb'),attributes,{'tableName':_0x1480('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x98b3=['exports','define','int_desk_accounts','lodash','util','moment','bluebird','rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration'];(function(_0xd9a192,_0x410226){var _0x2f9fce=function(_0x25555a){while(--_0x25555a){_0xd9a192['push'](_0xd9a192['shift']());}};_0x2f9fce(++_0x410226);}(_0x98b3,0xf5));var _0x398b=function(_0x51ccd3,_0x209d76){_0x51ccd3=_0x51ccd3-0x0;var _0x32196d=_0x98b3[_0x51ccd3];return _0x32196d;};'use strict';var _=require(_0x398b('0x0'));var util=require(_0x398b('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x398b('0x2'));var BPromise=require(_0x398b('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x398b('0x4'));var config=require(_0x398b('0x5'));var attributes=require(_0x398b('0x6'));var integrations=require(_0x398b('0x7'));module[_0x398b('0x8')]=function(_0x8167b3,_0x59e701){return _0x8167b3[_0x398b('0x9')]('DeskAccount',attributes,{'tableName':_0x398b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8edfe49..13084c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87dd=['DeskAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','options','raw','where','attributes','include','map','model','GetDeskAccount','ShowDeskAccount','DeskAccount','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info'];(function(_0x59c9aa,_0x49a8e4){var _0x56a384=function(_0x1bcd6a){while(--_0x1bcd6a){_0x59c9aa['push'](_0x59c9aa['shift']());}};_0x56a384(++_0x49a8e4);}(_0x87dd,0x1c5));var _0xd87d=function(_0x1fc7b5,_0x5d4779){_0x1fc7b5=_0x1fc7b5-0x0;var _0x3ef5db=_0x87dd[_0x1fc7b5];return _0x3ef5db;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xd87d('0x0'));var BPromise=require(_0xd87d('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd87d('0x2'));var db=require(_0xd87d('0x3'))['db'];var utils=require(_0xd87d('0x4'));var logger=require(_0xd87d('0x5'))('rpc');var config=require(_0xd87d('0x6'));var jayson=require(_0xd87d('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x20de42,_0x44778a,_0x8e2b02){return new BPromise(function(_0x5cc1d3,_0x383c11){return client[_0xd87d('0x8')](_0x20de42,_0x8e2b02)[_0xd87d('0x9')](function(_0x54f0de){logger[_0xd87d('0xa')](_0xd87d('0xb'),_0x44778a,_0xd87d('0xc'));logger[_0xd87d('0xd')]('DeskAccount,\x20%s,\x20%s,\x20%s',_0x44778a,_0xd87d('0xc'),JSON[_0xd87d('0xe')](_0x54f0de));if(_0x54f0de[_0xd87d('0xf')]){if(_0x54f0de[_0xd87d('0xf')]['code']===0x1f4){logger['error']('DeskAccount,\x20%s,\x20%s',_0x44778a,_0x54f0de['error'][_0xd87d('0x10')]);return _0x383c11(_0x54f0de['error'][_0xd87d('0x10')]);}logger['error'](_0xd87d('0xb'),_0x44778a,_0x54f0de['error'][_0xd87d('0x10')]);return _0x5cc1d3(_0x54f0de[_0xd87d('0xf')]['message']);}else{logger[_0xd87d('0xa')]('DeskAccount,\x20%s,\x20%s',_0x44778a,_0xd87d('0xc'));_0x5cc1d3(_0x54f0de[_0xd87d('0x11')][_0xd87d('0x10')]);}})[_0xd87d('0x12')](function(_0x591c07){logger['error'](_0xd87d('0xb'),_0x44778a,_0x591c07);_0x383c11(_0x591c07);});});}exports['GetDeskAccount']=function(_0x1695ff){var _0x1736ad=this;return new Promise(function(_0x119b78,_0x492391){return db['DeskAccount']['findAll']({'raw':_0x1695ff['options']?_0x1695ff[_0xd87d('0x13')][_0xd87d('0x14')]===undefined?!![]:![]:!![],'where':_0x1695ff[_0xd87d('0x13')]?_0x1695ff[_0xd87d('0x13')][_0xd87d('0x15')]||null:null,'attributes':_0x1695ff[_0xd87d('0x13')]?_0x1695ff[_0xd87d('0x13')][_0xd87d('0x16')]||null:null,'limit':_0x1695ff[_0xd87d('0x13')]?_0x1695ff[_0xd87d('0x13')]['limit']||null:null,'include':_0x1695ff[_0xd87d('0x13')]?_0x1695ff[_0xd87d('0x13')][_0xd87d('0x17')]?_[_0xd87d('0x18')](_0x1695ff[_0xd87d('0x13')][_0xd87d('0x17')],function(_0x278e71){return{'model':db[_0x278e71[_0xd87d('0x19')]],'as':_0x278e71['as'],'attributes':_0x278e71[_0xd87d('0x16')],'include':_0x278e71[_0xd87d('0x17')]?_[_0xd87d('0x18')](_0x278e71['include'],function(_0x179d1a){return{'model':db[_0x179d1a['model']],'as':_0x179d1a['as'],'attributes':_0x179d1a[_0xd87d('0x16')],'include':_0x179d1a[_0xd87d('0x17')]?_['map'](_0x179d1a[_0xd87d('0x17')],function(_0x2b0477){return{'model':db[_0x2b0477[_0xd87d('0x19')]],'as':_0x2b0477['as'],'attributes':_0x2b0477[_0xd87d('0x16')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x497506){logger[_0xd87d('0xa')](_0xd87d('0x1a'),_0x1695ff);logger[_0xd87d('0xd')]('GetDeskAccount',_0x1695ff,JSON[_0xd87d('0xe')](_0x497506));_0x119b78(_0x497506);})[_0xd87d('0x12')](function(_0x34f491){logger['error'](_0xd87d('0x1a'),_0x34f491[_0xd87d('0x10')],_0x1695ff);_0x492391(_0x1736ad['error'](0x1f4,_0x34f491[_0xd87d('0x10')]));});});};exports[_0xd87d('0x1b')]=function(_0x4fa625){var _0xe0578=this;return new Promise(function(_0x1eaf59,_0x10b2bc){return db[_0xd87d('0x1c')]['find']({'raw':_0x4fa625[_0xd87d('0x13')]?_0x4fa625[_0xd87d('0x13')]['raw']===undefined?!![]:![]:!![],'where':_0x4fa625[_0xd87d('0x13')]?_0x4fa625[_0xd87d('0x13')][_0xd87d('0x15')]||null:null,'attributes':_0x4fa625['options']?_0x4fa625[_0xd87d('0x13')][_0xd87d('0x16')]||null:null,'include':_0x4fa625[_0xd87d('0x13')]?_0x4fa625[_0xd87d('0x13')]['include']?_[_0xd87d('0x18')](_0x4fa625[_0xd87d('0x13')][_0xd87d('0x17')],function(_0x54fb99){return{'model':db[_0x54fb99[_0xd87d('0x19')]],'as':_0x54fb99['as'],'attributes':_0x54fb99[_0xd87d('0x16')],'include':_0x54fb99[_0xd87d('0x17')]?_[_0xd87d('0x18')](_0x54fb99[_0xd87d('0x17')],function(_0x2c3314){return{'model':db[_0x2c3314[_0xd87d('0x19')]],'as':_0x2c3314['as'],'attributes':_0x2c3314['attributes'],'include':_0x2c3314[_0xd87d('0x17')]?_[_0xd87d('0x18')](_0x2c3314['include'],function(_0x1591f9){return{'model':db[_0x1591f9[_0xd87d('0x19')]],'as':_0x1591f9['as'],'attributes':_0x1591f9[_0xd87d('0x16')]};}):[]};}):[]};}):[]:[]})[_0xd87d('0x9')](function(_0x2510c8){logger[_0xd87d('0xa')]('ShowDeskAccount',_0x4fa625);logger['debug'](_0xd87d('0x1b'),_0x4fa625,JSON[_0xd87d('0xe')](_0x2510c8));_0x1eaf59(_0x2510c8);})[_0xd87d('0x12')](function(_0x3bf2a2){logger['error'](_0xd87d('0x1b'),_0x3bf2a2[_0xd87d('0x10')],_0x4fa625);_0x10b2bc(_0xe0578[_0xd87d('0xf')](0x1f4,_0x3bf2a2['message']));});});};
\ No newline at end of file
+var _0x394d=['rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','DeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','DeskAccount,\x20%s,\x20%s','message','result','catch','GetDeskAccount','DeskAccount','options','where','attributes','include','model','map','ShowDeskAccount','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x4b5d8b,_0x5a4718){var _0x4bf7eb=function(_0x1746c1){while(--_0x1746c1){_0x4b5d8b['push'](_0x4b5d8b['shift']());}};_0x4bf7eb(++_0x5a4718);}(_0x394d,0x133));var _0xd394=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0x394d[_0xa148b7];return _0x51efd3;};'use strict';var _=require(_0xd394('0x0'));var util=require(_0xd394('0x1'));var moment=require(_0xd394('0x2'));var BPromise=require(_0xd394('0x3'));var rs=require(_0xd394('0x4'));var fs=require('fs');var Redis=require(_0xd394('0x5'));var db=require(_0xd394('0x6'))['db'];var utils=require(_0xd394('0x7'));var logger=require('../../config/logger')(_0xd394('0x8'));var config=require(_0xd394('0x9'));var jayson=require(_0xd394('0xa'));var client=jayson[_0xd394('0xb')][_0xd394('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2d279f,_0x3b5329,_0x4a0bf4){return new BPromise(function(_0x354e39,_0x5da730){return client['request'](_0x2d279f,_0x4a0bf4)[_0xd394('0xd')](function(_0x1b267f){logger[_0xd394('0xe')]('DeskAccount,\x20%s,\x20%s',_0x3b5329,_0xd394('0xf'));logger[_0xd394('0x10')](_0xd394('0x11'),_0x3b5329,_0xd394('0xf'),JSON[_0xd394('0x12')](_0x1b267f));if(_0x1b267f[_0xd394('0x13')]){if(_0x1b267f[_0xd394('0x13')][_0xd394('0x14')]===0x1f4){logger[_0xd394('0x13')](_0xd394('0x15'),_0x3b5329,_0x1b267f[_0xd394('0x13')][_0xd394('0x16')]);return _0x5da730(_0x1b267f[_0xd394('0x13')][_0xd394('0x16')]);}logger[_0xd394('0x13')](_0xd394('0x15'),_0x3b5329,_0x1b267f['error'][_0xd394('0x16')]);return _0x354e39(_0x1b267f[_0xd394('0x13')][_0xd394('0x16')]);}else{logger[_0xd394('0xe')](_0xd394('0x15'),_0x3b5329,_0xd394('0xf'));_0x354e39(_0x1b267f[_0xd394('0x17')][_0xd394('0x16')]);}})[_0xd394('0x18')](function(_0x55ed29){logger['error']('DeskAccount,\x20%s,\x20%s',_0x3b5329,_0x55ed29);_0x5da730(_0x55ed29);});});}exports[_0xd394('0x19')]=function(_0x14351c){var _0x197804=this;return new Promise(function(_0x2f0a6f,_0x4b803b){return db[_0xd394('0x1a')]['findAll']({'raw':_0x14351c[_0xd394('0x1b')]?_0x14351c['options']['raw']===undefined?!![]:![]:!![],'where':_0x14351c['options']?_0x14351c[_0xd394('0x1b')][_0xd394('0x1c')]||null:null,'attributes':_0x14351c[_0xd394('0x1b')]?_0x14351c[_0xd394('0x1b')][_0xd394('0x1d')]||null:null,'limit':_0x14351c[_0xd394('0x1b')]?_0x14351c[_0xd394('0x1b')]['limit']||null:null,'include':_0x14351c[_0xd394('0x1b')]?_0x14351c[_0xd394('0x1b')][_0xd394('0x1e')]?_['map'](_0x14351c[_0xd394('0x1b')][_0xd394('0x1e')],function(_0x467f64){return{'model':db[_0x467f64['model']],'as':_0x467f64['as'],'attributes':_0x467f64['attributes'],'include':_0x467f64[_0xd394('0x1e')]?_['map'](_0x467f64[_0xd394('0x1e')],function(_0x29b474){return{'model':db[_0x29b474[_0xd394('0x1f')]],'as':_0x29b474['as'],'attributes':_0x29b474[_0xd394('0x1d')],'include':_0x29b474[_0xd394('0x1e')]?_[_0xd394('0x20')](_0x29b474[_0xd394('0x1e')],function(_0x58d20c){return{'model':db[_0x58d20c[_0xd394('0x1f')]],'as':_0x58d20c['as'],'attributes':_0x58d20c['attributes']};}):[]};}):[]};}):[]:[]})[_0xd394('0xd')](function(_0x1b304c){logger['info'](_0xd394('0x19'),_0x14351c);logger['debug'](_0xd394('0x19'),_0x14351c,JSON[_0xd394('0x12')](_0x1b304c));_0x2f0a6f(_0x1b304c);})['catch'](function(_0x47088a){logger['error'](_0xd394('0x19'),_0x47088a['message'],_0x14351c);_0x4b803b(_0x197804['error'](0x1f4,_0x47088a['message']));});});};exports[_0xd394('0x21')]=function(_0x2d7349){var _0x3e4bd6=this;return new Promise(function(_0x262aac,_0x24899a){return db[_0xd394('0x1a')][_0xd394('0x22')]({'raw':_0x2d7349[_0xd394('0x1b')]?_0x2d7349['options']['raw']===undefined?!![]:![]:!![],'where':_0x2d7349['options']?_0x2d7349[_0xd394('0x1b')][_0xd394('0x1c')]||null:null,'attributes':_0x2d7349[_0xd394('0x1b')]?_0x2d7349[_0xd394('0x1b')][_0xd394('0x1d')]||null:null,'include':_0x2d7349[_0xd394('0x1b')]?_0x2d7349[_0xd394('0x1b')]['include']?_[_0xd394('0x20')](_0x2d7349[_0xd394('0x1b')][_0xd394('0x1e')],function(_0x3c882d){return{'model':db[_0x3c882d[_0xd394('0x1f')]],'as':_0x3c882d['as'],'attributes':_0x3c882d['attributes'],'include':_0x3c882d[_0xd394('0x1e')]?_[_0xd394('0x20')](_0x3c882d[_0xd394('0x1e')],function(_0x25fb94){return{'model':db[_0x25fb94[_0xd394('0x1f')]],'as':_0x25fb94['as'],'attributes':_0x25fb94[_0xd394('0x1d')],'include':_0x25fb94['include']?_['map'](_0x25fb94[_0xd394('0x1e')],function(_0x403e78){return{'model':db[_0x403e78['model']],'as':_0x403e78['as'],'attributes':_0x403e78[_0xd394('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xd394('0xd')](function(_0x40f16e){logger[_0xd394('0xe')]('ShowDeskAccount',_0x2d7349);logger[_0xd394('0x10')](_0xd394('0x21'),_0x2d7349,JSON[_0xd394('0x12')](_0x40f16e));_0x262aac(_0x40f16e);})['catch'](function(_0x181e96){logger[_0xd394('0x13')](_0xd394('0x21'),_0x181e96['message'],_0x2d7349);_0x24899a(_0x3e4bd6[_0xd394('0x13')](0x1f4,_0x181e96[_0xd394('0x16')]));});});};
\ No newline at end of file
index 29c9b66..102de91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intDeskConfiguration.controller','isAuthenticated','index','get','/:id','/:id/fields','getFields','getSubjects','/:id/descriptions','/:id/tags','post','setTags','put','update'];(function(_0x5bc436,_0xd27920){var _0x334194=function(_0x19d51c){while(--_0x19d51c){_0x5bc436['push'](_0x5bc436['shift']());}};_0x334194(++_0xd27920);}(_0x9c44,0x178));var _0x49c4=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x9c44[_0x160c73];return _0xd9302;};'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');var controller=require(_0x49c4('0x6'));router['get']('/',auth[_0x49c4('0x7')](),controller[_0x49c4('0x8')]);router[_0x49c4('0x9')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller['show']);router[_0x49c4('0x9')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0xc')]);router['get']('/:id/subjects',auth[_0x49c4('0x7')](),controller[_0x49c4('0xd')]);router['get'](_0x49c4('0xe'),auth[_0x49c4('0x7')](),controller['getDescriptions']);router['get'](_0x49c4('0xf'),auth[_0x49c4('0x7')](),controller['getTags']);router[_0x49c4('0x10')]('/',auth[_0x49c4('0x7')](),controller['create']);router[_0x49c4('0x10')](_0x49c4('0xf'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x11')]);router[_0x49c4('0x12')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x13')]);router['delete'](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x14')]);module[_0x49c4('0x15')]=router;
\ No newline at end of file
+var _0x55ca=['../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','setTags','put','/:id','update','destroy','exports','multer','util','Router','fs-extra','../../components/interaction/service'];(function(_0x37b1d8,_0x614312){var _0x3739e7=function(_0x15a5bb){while(--_0x15a5bb){_0x37b1d8['push'](_0x37b1d8['shift']());}};_0x3739e7(++_0x614312);}(_0x55ca,0x126));var _0xa55c=function(_0x5d23be,_0x3b4f3c){_0x5d23be=_0x5d23be-0x0;var _0x4d60a9=_0x55ca[_0x5d23be];return _0x4d60a9;};'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['get'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller['getFields']);router['get'](_0xa55c('0xc'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xd')]);router[_0xa55c('0x7')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);router[_0xa55c('0x7')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller['getTags']);router['post']('/',auth[_0xa55c('0x8')](),controller['create']);router['post']('/:id/tags',auth[_0xa55c('0x8')](),controller[_0xa55c('0x11')]);router[_0xa55c('0x12')](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x14')]);router['delete'](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x15')]);module[_0xa55c('0x16')]=router;
\ No newline at end of file
index 26cd458..09be236 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a9a=['exports','STRING','sequelize'];(function(_0x485981,_0x25c1e8){var _0x4addad=function(_0x3b1128){while(--_0x3b1128){_0x485981['push'](_0x485981['shift']());}};_0x4addad(++_0x25c1e8);}(_0x1a9a,0x176));var _0xa1a9=function(_0x8810b5,_0x167ae7){_0x8810b5=_0x8810b5-0x0;var _0x241003=_0x1a9a[_0x8810b5];return _0x241003;};'use strict';var Sequelize=require(_0xa1a9('0x0'));module[_0xa1a9('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xa1a9('0x2')]}};
\ No newline at end of file
+var _0x0f11=['sequelize','exports'];(function(_0xbe4f82,_0x31bdce){var _0x4e55fc=function(_0x1473d0){while(--_0x1473d0){_0xbe4f82['push'](_0xbe4f82['shift']());}};_0x4e55fc(++_0x31bdce);}(_0x0f11,0x7e));var _0x10f1=function(_0x3cc685,_0x46f70e){_0x3cc685=_0x3cc685-0x0;var _0x36c532=_0x0f11[_0x3cc685];return _0x36c532;};'use strict';var Sequelize=require(_0x10f1('0x0'));module[_0x10f1('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 9366bc6..65b99b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1316=['VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','getFields','DeskField','getSubjects','findOne','intersection','getDescriptions','getTags','Tag','setTags','ids','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','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','json','undefined','count','offset','limit','set','apply','save','update','then','error','stack','name','send','index','map','DeskConfiguration','rawAttributes','fieldName','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge'];(function(_0x34f316,_0x2235af){var _0x58abf0=function(_0x14a96d){while(--_0x14a96d){_0x34f316['push'](_0x34f316['shift']());}};_0x58abf0(++_0x2235af);}(_0x1316,0x10f));var _0x6131=function(_0x15326d,_0x3f47ab){_0x15326d=_0x15326d-0x0;var _0x19a491=_0x1316[_0x15326d];return _0x19a491;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6131('0x0'));var zipdir=require(_0x6131('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6131('0x2'));var moment=require(_0x6131('0x3'));var BPromise=require(_0x6131('0x4'));var Mustache=require('mustache');var util=require(_0x6131('0x5'));var path=require(_0x6131('0x6'));var sox=require(_0x6131('0x7'));var csv=require('to-csv');var ejs=require(_0x6131('0x8'));var fs=require('fs');var fs_extra=require(_0x6131('0x9'));var _=require(_0x6131('0xa'));var squel=require(_0x6131('0xb'));var crypto=require(_0x6131('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6131('0xd'));var Papa=require('papaparse');var Redis=require(_0x6131('0xe'));var authService=require(_0x6131('0xf'));var qs=require(_0x6131('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6131('0x11'));var logger=require(_0x6131('0x12'))(_0x6131('0x13'));var utils=require(_0x6131('0x14'));var config=require(_0x6131('0x15'));var licenseUtil=require(_0x6131('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x31bc93,_0x1479d3){_0x1479d3=_0x1479d3||0xcc;return function(_0x4fd2c4){if(_0x4fd2c4){return _0x31bc93[_0x6131('0x17')](_0x1479d3);}return _0x31bc93[_0x6131('0x18')](_0x1479d3)[_0x6131('0x19')]();};}function respondWithResult(_0x1b5106,_0x1a1ada){_0x1a1ada=_0x1a1ada||0xc8;return function(_0x5be2fb){if(_0x5be2fb){return _0x1b5106[_0x6131('0x18')](_0x1a1ada)[_0x6131('0x1a')](_0x5be2fb);}};}function respondWithFilteredResult(_0x484643,_0x16267b){return function(_0x3790f6){if(_0x3790f6){var _0x7a6081=typeof _0x16267b['offset']===_0x6131('0x1b')&&typeof _0x16267b['limit']===_0x6131('0x1b');var _0x33de18=_0x3790f6[_0x6131('0x1c')];var _0x387809=_0x7a6081?0x0:_0x16267b[_0x6131('0x1d')];var _0x480d3c=_0x7a6081?_0x3790f6['count']:_0x16267b['offset']+_0x16267b[_0x6131('0x1e')];var _0x6e2e33;if(_0x480d3c>=_0x33de18){_0x480d3c=_0x33de18;_0x6e2e33=0xc8;}else{_0x6e2e33=0xce;}_0x484643[_0x6131('0x18')](_0x6e2e33);return _0x484643[_0x6131('0x1f')]('Content-Range',_0x387809+'-'+_0x480d3c+'/'+_0x33de18)['json'](_0x3790f6);}return null;};}function patchUpdates(_0x3600f8){return function(_0x182797){try{jsonpatch[_0x6131('0x20')](_0x182797,_0x3600f8,!![]);}catch(_0x284b01){return BPromise['reject'](_0x284b01);}return _0x182797[_0x6131('0x21')]();};}function saveUpdates(_0x89e4a0,_0x34b9fe){return function(_0x5290a1){if(_0x5290a1){return _0x5290a1[_0x6131('0x22')](_0x89e4a0)[_0x6131('0x23')](function(_0x528859){return _0x528859;});}return null;};}function removeEntity(_0x445352,_0x55b4c3){return function(_0x288577){if(_0x288577){return _0x288577['destroy']()[_0x6131('0x23')](function(){_0x445352['status'](0xcc)[_0x6131('0x19')]();});}};}function handleEntityNotFound(_0x364a44,_0x50d519){return function(_0x3b232c){if(!_0x3b232c){_0x364a44[_0x6131('0x17')](0x194);}return _0x3b232c;};}function handleError(_0x3af5cb,_0x26ecfd){_0x26ecfd=_0x26ecfd||0x1f4;return function(_0x341270){logger[_0x6131('0x24')](_0x341270[_0x6131('0x25')]);if(_0x341270[_0x6131('0x26')]){delete _0x341270[_0x6131('0x26')];}_0x3af5cb['status'](_0x26ecfd)[_0x6131('0x27')](_0x341270);};}exports[_0x6131('0x28')]=function(_0x5d4429,_0x4474bf){var _0x1f576e={},_0x1f1983={},_0x56446b={'count':0x0,'rows':[]};var _0x127fb0=_[_0x6131('0x29')](db[_0x6131('0x2a')][_0x6131('0x2b')],function(_0x54e0d0){return{'name':_0x54e0d0[_0x6131('0x2c')],'type':_0x54e0d0['type'][_0x6131('0x2d')]};});_0x1f1983[_0x6131('0x2e')]=_[_0x6131('0x29')](_0x127fb0,'name');_0x1f1983[_0x6131('0x2f')]=_[_0x6131('0x30')](_0x5d4429[_0x6131('0x2f')]);_0x1f1983[_0x6131('0x31')]=_['intersection'](_0x1f1983[_0x6131('0x2e')],_0x1f1983['query']);_0x1f576e[_0x6131('0x32')]=_['intersection'](_0x1f1983['model'],qs[_0x6131('0x33')](_0x5d4429[_0x6131('0x2f')][_0x6131('0x33')]));_0x1f576e[_0x6131('0x32')]=_0x1f576e[_0x6131('0x32')][_0x6131('0x34')]?_0x1f576e['attributes']:_0x1f1983[_0x6131('0x2e')];if(!_0x5d4429['query'][_0x6131('0x35')](_0x6131('0x36'))){_0x1f576e[_0x6131('0x1e')]=qs[_0x6131('0x1e')](_0x5d4429[_0x6131('0x2f')][_0x6131('0x1e')]);_0x1f576e[_0x6131('0x1d')]=qs[_0x6131('0x1d')](_0x5d4429[_0x6131('0x2f')][_0x6131('0x1d')]);}_0x1f576e[_0x6131('0x37')]=qs['sort'](_0x5d4429[_0x6131('0x2f')][_0x6131('0x38')]);_0x1f576e[_0x6131('0x39')]=qs[_0x6131('0x31')](_[_0x6131('0x3a')](_0x5d4429[_0x6131('0x2f')],_0x1f1983[_0x6131('0x31')]),_0x127fb0);if(_0x5d4429[_0x6131('0x2f')][_0x6131('0x3b')]){_0x1f576e[_0x6131('0x39')]=_[_0x6131('0x3c')](_0x1f576e[_0x6131('0x39')],{'$or':_[_0x6131('0x29')](_0x127fb0,function(_0x36be79){if(_0x36be79['type']!==_0x6131('0x3d')){var _0x4c79db={};_0x4c79db[_0x36be79['name']]={'$like':'%'+_0x5d4429[_0x6131('0x2f')][_0x6131('0x3b')]+'%'};return _0x4c79db;}})});}_0x1f576e=_[_0x6131('0x3c')]({},_0x1f576e,_0x5d4429[_0x6131('0x3e')]);var _0x53a128={'where':_0x1f576e[_0x6131('0x39')]};return db['DeskConfiguration']['count'](_0x53a128)[_0x6131('0x23')](function(_0x17563e){_0x56446b['count']=_0x17563e;if(_0x5d4429['query'][_0x6131('0x3f')]){_0x1f576e[_0x6131('0x40')]=[{'all':!![]}];}return db['DeskConfiguration'][_0x6131('0x41')](_0x1f576e);})[_0x6131('0x23')](function(_0x31c766){_0x56446b[_0x6131('0x42')]=_0x31c766;return _0x56446b;})[_0x6131('0x23')](respondWithFilteredResult(_0x4474bf,_0x1f576e))['catch'](handleError(_0x4474bf,null));};exports[_0x6131('0x43')]=function(_0x37c924,_0x46615e){var _0x499776={'raw':![],'where':{'id':_0x37c924[_0x6131('0x44')]['id']}},_0x4bec30={};_0x4bec30[_0x6131('0x2e')]=_['keys'](db['DeskConfiguration'][_0x6131('0x2b')]);_0x4bec30[_0x6131('0x2f')]=_[_0x6131('0x30')](_0x37c924[_0x6131('0x2f')]);_0x4bec30[_0x6131('0x31')]=_['intersection'](_0x4bec30[_0x6131('0x2e')],_0x4bec30[_0x6131('0x2f')]);_0x499776[_0x6131('0x32')]=_['intersection'](_0x4bec30[_0x6131('0x2e')],qs['fields'](_0x37c924[_0x6131('0x2f')]['fields']));_0x499776[_0x6131('0x32')]=_0x499776[_0x6131('0x32')][_0x6131('0x34')]?_0x499776[_0x6131('0x32')]:_0x4bec30[_0x6131('0x2e')];if(_0x37c924['query']['includeAll']){_0x499776[_0x6131('0x40')]=[{'all':!![]}];}_0x499776=_[_0x6131('0x3c')]({},_0x499776,_0x37c924[_0x6131('0x3e')]);return db[_0x6131('0x2a')][_0x6131('0x45')](_0x499776)[_0x6131('0x23')](handleEntityNotFound(_0x46615e,null))[_0x6131('0x23')](respondWithResult(_0x46615e,null))[_0x6131('0x46')](handleError(_0x46615e,null));};exports[_0x6131('0x47')]=function(_0x2b80c2,_0x530167){return db[_0x6131('0x2a')][_0x6131('0x47')](_0x2b80c2[_0x6131('0x48')],{})[_0x6131('0x23')](respondWithResult(_0x530167,0xc9))[_0x6131('0x46')](handleError(_0x530167,null));};exports[_0x6131('0x22')]=function(_0x4632ed,_0x4ced08){if(_0x4632ed['body']['id']){delete _0x4632ed[_0x6131('0x48')]['id'];}return db['DeskConfiguration']['find']({'where':{'id':_0x4632ed[_0x6131('0x44')]['id']}})['then'](handleEntityNotFound(_0x4ced08,null))[_0x6131('0x23')](saveUpdates(_0x4632ed[_0x6131('0x48')],null))[_0x6131('0x23')](respondWithResult(_0x4ced08,null))['catch'](handleError(_0x4ced08,null));};exports['destroy']=function(_0x5c383c,_0x5c5799){return db[_0x6131('0x2a')]['find']({'where':{'id':_0x5c383c['params']['id']}})[_0x6131('0x23')](handleEntityNotFound(_0x5c5799,null))[_0x6131('0x23')](removeEntity(_0x5c5799,null))['catch'](handleError(_0x5c5799,null));};exports[_0x6131('0x49')]=function(_0x4d6661,_0x4daab0,_0x4b0af1){var _0xd3590e={};var _0x37fbe8={};var _0x116404;var _0x4241ee;return db[_0x6131('0x2a')]['findOne']({'where':{'id':_0x4d6661[_0x6131('0x44')]['id']}})['then'](handleEntityNotFound(_0x4daab0,null))[_0x6131('0x23')](function(_0x4d6165){if(_0x4d6165){_0x116404=_0x4d6165;_0x37fbe8['model']=_[_0x6131('0x30')](db[_0x6131('0x4a')][_0x6131('0x2b')]);_0x37fbe8['query']=_[_0x6131('0x30')](_0x4d6661[_0x6131('0x2f')]);_0x37fbe8['filters']=_['intersection'](_0x37fbe8[_0x6131('0x2e')],_0x37fbe8[_0x6131('0x2f')]);_0xd3590e['attributes']=_['intersection'](_0x37fbe8[_0x6131('0x2e')],qs['fields'](_0x4d6661[_0x6131('0x2f')][_0x6131('0x33')]));_0xd3590e[_0x6131('0x32')]=_0xd3590e[_0x6131('0x32')][_0x6131('0x34')]?_0xd3590e[_0x6131('0x32')]:_0x37fbe8[_0x6131('0x2e')];_0xd3590e['order']=qs[_0x6131('0x38')](_0x4d6661['query'][_0x6131('0x38')]);_0xd3590e[_0x6131('0x39')]=qs[_0x6131('0x31')](_[_0x6131('0x3a')](_0x4d6661['query'],_0x37fbe8[_0x6131('0x31')]));if(_0x4d6661[_0x6131('0x2f')]['filter']){_0xd3590e[_0x6131('0x39')]=_[_0x6131('0x3c')](_0xd3590e['where'],{'$or':_[_0x6131('0x29')](_0xd3590e[_0x6131('0x32')],function(_0xc24ca9){var _0x32cda8={};_0x32cda8[_0xc24ca9]={'$like':'%'+_0x4d6661[_0x6131('0x2f')][_0x6131('0x3b')]+'%'};return _0x32cda8;})});}_0xd3590e=_[_0x6131('0x3c')]({},_0xd3590e,_0x4d6661[_0x6131('0x3e')]);return _0x116404['getFields'](_0xd3590e);}})[_0x6131('0x23')](function(_0x3479fe){if(_0x3479fe){_0x4241ee=_0x3479fe[_0x6131('0x34')];if(!_0x4d6661[_0x6131('0x2f')]['hasOwnProperty']('nolimit')){_0xd3590e[_0x6131('0x1e')]=qs[_0x6131('0x1e')](_0x4d6661['query']['limit']);_0xd3590e[_0x6131('0x1d')]=qs[_0x6131('0x1d')](_0x4d6661[_0x6131('0x2f')][_0x6131('0x1d')]);}return _0x116404['getFields'](_0xd3590e);}})['then'](function(_0xed176e){if(_0xed176e){return _0xed176e?{'count':_0x4241ee,'rows':_0xed176e}:null;}})[_0x6131('0x23')](respondWithResult(_0x4daab0,null))['catch'](handleError(_0x4daab0,null));};exports[_0x6131('0x4b')]=function(_0x38034d,_0x5a566f,_0x1157b9){var _0x16b792={};var _0x549457={};var _0x10c020;var _0x420a7c;return db[_0x6131('0x2a')][_0x6131('0x4c')]({'where':{'id':_0x38034d[_0x6131('0x44')]['id']}})[_0x6131('0x23')](handleEntityNotFound(_0x5a566f,null))['then'](function(_0x5bf9c9){if(_0x5bf9c9){_0x10c020=_0x5bf9c9;_0x549457['model']=_[_0x6131('0x30')](db['DeskField'][_0x6131('0x2b')]);_0x549457[_0x6131('0x2f')]=_[_0x6131('0x30')](_0x38034d[_0x6131('0x2f')]);_0x549457['filters']=_[_0x6131('0x4d')](_0x549457[_0x6131('0x2e')],_0x549457['query']);_0x16b792['attributes']=_[_0x6131('0x4d')](_0x549457[_0x6131('0x2e')],qs[_0x6131('0x33')](_0x38034d[_0x6131('0x2f')]['fields']));_0x16b792['attributes']=_0x16b792['attributes'][_0x6131('0x34')]?_0x16b792[_0x6131('0x32')]:_0x549457[_0x6131('0x2e')];_0x16b792[_0x6131('0x37')]=qs[_0x6131('0x38')](_0x38034d[_0x6131('0x2f')][_0x6131('0x38')]);_0x16b792[_0x6131('0x39')]=qs[_0x6131('0x31')](_[_0x6131('0x3a')](_0x38034d[_0x6131('0x2f')],_0x549457[_0x6131('0x31')]));if(_0x38034d[_0x6131('0x2f')][_0x6131('0x3b')]){_0x16b792['where']=_['merge'](_0x16b792['where'],{'$or':_['map'](_0x16b792['attributes'],function(_0x5268b5){var _0x4356aa={};_0x4356aa[_0x5268b5]={'$like':'%'+_0x38034d[_0x6131('0x2f')][_0x6131('0x3b')]+'%'};return _0x4356aa;})});}_0x16b792=_[_0x6131('0x3c')]({},_0x16b792,_0x38034d['options']);return _0x10c020['getSubjects'](_0x16b792);}})[_0x6131('0x23')](function(_0x472f5d){if(_0x472f5d){_0x420a7c=_0x472f5d[_0x6131('0x34')];if(!_0x38034d[_0x6131('0x2f')][_0x6131('0x35')](_0x6131('0x36'))){_0x16b792[_0x6131('0x1e')]=qs[_0x6131('0x1e')](_0x38034d[_0x6131('0x2f')][_0x6131('0x1e')]);_0x16b792[_0x6131('0x1d')]=qs[_0x6131('0x1d')](_0x38034d[_0x6131('0x2f')][_0x6131('0x1d')]);}return _0x10c020[_0x6131('0x4b')](_0x16b792);}})['then'](function(_0x13304b){if(_0x13304b){return _0x13304b?{'count':_0x420a7c,'rows':_0x13304b}:null;}})[_0x6131('0x23')](respondWithResult(_0x5a566f,null))[_0x6131('0x46')](handleError(_0x5a566f,null));};exports[_0x6131('0x4e')]=function(_0x299234,_0x4e0f48,_0x31d21a){var _0x137f13={};var _0x185e16={};var _0x2dfee5;var _0x35de4b;return db[_0x6131('0x2a')][_0x6131('0x4c')]({'where':{'id':_0x299234[_0x6131('0x44')]['id']}})[_0x6131('0x23')](handleEntityNotFound(_0x4e0f48,null))[_0x6131('0x23')](function(_0x5a19aa){if(_0x5a19aa){_0x2dfee5=_0x5a19aa;_0x185e16['model']=_['keys'](db[_0x6131('0x4a')][_0x6131('0x2b')]);_0x185e16[_0x6131('0x2f')]=_[_0x6131('0x30')](_0x299234['query']);_0x185e16[_0x6131('0x31')]=_[_0x6131('0x4d')](_0x185e16['model'],_0x185e16['query']);_0x137f13[_0x6131('0x32')]=_[_0x6131('0x4d')](_0x185e16['model'],qs[_0x6131('0x33')](_0x299234[_0x6131('0x2f')][_0x6131('0x33')]));_0x137f13['attributes']=_0x137f13['attributes']['length']?_0x137f13[_0x6131('0x32')]:_0x185e16[_0x6131('0x2e')];_0x137f13[_0x6131('0x37')]=qs[_0x6131('0x38')](_0x299234[_0x6131('0x2f')]['sort']);_0x137f13[_0x6131('0x39')]=qs[_0x6131('0x31')](_[_0x6131('0x3a')](_0x299234['query'],_0x185e16[_0x6131('0x31')]));if(_0x299234['query']['filter']){_0x137f13['where']=_[_0x6131('0x3c')](_0x137f13[_0x6131('0x39')],{'$or':_['map'](_0x137f13[_0x6131('0x32')],function(_0x572665){var _0x4eaec5={};_0x4eaec5[_0x572665]={'$like':'%'+_0x299234[_0x6131('0x2f')][_0x6131('0x3b')]+'%'};return _0x4eaec5;})});}_0x137f13=_[_0x6131('0x3c')]({},_0x137f13,_0x299234[_0x6131('0x3e')]);return _0x2dfee5['getDescriptions'](_0x137f13);}})[_0x6131('0x23')](function(_0x2a454b){if(_0x2a454b){_0x35de4b=_0x2a454b[_0x6131('0x34')];if(!_0x299234['query'][_0x6131('0x35')](_0x6131('0x36'))){_0x137f13[_0x6131('0x1e')]=qs[_0x6131('0x1e')](_0x299234[_0x6131('0x2f')]['limit']);_0x137f13[_0x6131('0x1d')]=qs[_0x6131('0x1d')](_0x299234['query'][_0x6131('0x1d')]);}return _0x2dfee5[_0x6131('0x4e')](_0x137f13);}})[_0x6131('0x23')](function(_0x14e6a6){if(_0x14e6a6){return _0x14e6a6?{'count':_0x35de4b,'rows':_0x14e6a6}:null;}})[_0x6131('0x23')](respondWithResult(_0x4e0f48,null))[_0x6131('0x46')](handleError(_0x4e0f48,null));};exports[_0x6131('0x4f')]=function(_0x459834,_0x35be36,_0x534a53){var _0x4e1c54={};var _0xde68f9={};var _0x5590ac;var _0x5c72e8;return db[_0x6131('0x2a')][_0x6131('0x4c')]({'where':{'id':_0x459834['params']['id']}})[_0x6131('0x23')](handleEntityNotFound(_0x35be36,null))[_0x6131('0x23')](function(_0x2e2614){if(_0x2e2614){_0x5590ac=_0x2e2614;_0xde68f9[_0x6131('0x2e')]=_[_0x6131('0x30')](db[_0x6131('0x50')]['rawAttributes']);_0xde68f9[_0x6131('0x2f')]=_[_0x6131('0x30')](_0x459834['query']);_0xde68f9[_0x6131('0x31')]=_['intersection'](_0xde68f9[_0x6131('0x2e')],_0xde68f9[_0x6131('0x2f')]);_0x4e1c54[_0x6131('0x32')]=_[_0x6131('0x4d')](_0xde68f9['model'],qs['fields'](_0x459834[_0x6131('0x2f')][_0x6131('0x33')]));_0x4e1c54[_0x6131('0x32')]=_0x4e1c54[_0x6131('0x32')][_0x6131('0x34')]?_0x4e1c54[_0x6131('0x32')]:_0xde68f9[_0x6131('0x2e')];_0x4e1c54[_0x6131('0x37')]=qs[_0x6131('0x38')](_0x459834[_0x6131('0x2f')]['sort']);_0x4e1c54[_0x6131('0x39')]=qs[_0x6131('0x31')](_[_0x6131('0x3a')](_0x459834['query'],_0xde68f9[_0x6131('0x31')]));if(_0x459834['query'][_0x6131('0x3b')]){_0x4e1c54[_0x6131('0x39')]=_[_0x6131('0x3c')](_0x4e1c54[_0x6131('0x39')],{'$or':_['map'](_0x4e1c54[_0x6131('0x32')],function(_0x455ca6){var _0x4d94ed={};_0x4d94ed[_0x455ca6]={'$like':'%'+_0x459834['query'][_0x6131('0x3b')]+'%'};return _0x4d94ed;})});}_0x4e1c54=_[_0x6131('0x3c')]({},_0x4e1c54,_0x459834['options']);return _0x5590ac[_0x6131('0x4f')](_0x4e1c54);}})[_0x6131('0x23')](function(_0x476daf){if(_0x476daf){_0x5c72e8=_0x476daf[_0x6131('0x34')];if(!_0x459834['query']['hasOwnProperty']('nolimit')){_0x4e1c54[_0x6131('0x1e')]=qs['limit'](_0x459834[_0x6131('0x2f')][_0x6131('0x1e')]);_0x4e1c54['offset']=qs[_0x6131('0x1d')](_0x459834[_0x6131('0x2f')]['offset']);}return _0x5590ac['getTags'](_0x4e1c54);}})[_0x6131('0x23')](function(_0x4e1c6e){if(_0x4e1c6e){return _0x4e1c6e?{'count':_0x5c72e8,'rows':_0x4e1c6e}:null;}})['then'](respondWithResult(_0x35be36,null))[_0x6131('0x46')](handleError(_0x35be36,null));};exports['setTags']=function(_0x3e5d59,_0x13f9f4,_0x34d83f){if(_0x3e5d59[_0x6131('0x48')]['id']){delete _0x3e5d59[_0x6131('0x48')]['id'];}return db[_0x6131('0x2a')]['findOne']({'where':{'id':_0x3e5d59[_0x6131('0x44')]['id']}})['then'](handleEntityNotFound(_0x13f9f4,null))[_0x6131('0x23')](function(_0x52478d){if(_0x52478d){return _0x52478d[_0x6131('0x51')](_0x3e5d59['body'][_0x6131('0x52')]||[]);}return null;})['then'](respondWithResult(_0x13f9f4,null))['catch'](handleError(_0x13f9f4,null));};
\ No newline at end of file
+var _0x58f2=['rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','keys','find','create','body','destroy','DeskField','getFields','getSubjects','findOne','getDescriptions','getTags','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/environment','status','end','json','offset','undefined','limit','count','Content-Range','reject','update','then','sendStatus','error','name','send','map','DeskConfiguration'];(function(_0x24822c,_0x3c6311){var _0x2a48ac=function(_0x528bd4){while(--_0x528bd4){_0x24822c['push'](_0x24822c['shift']());}};_0x2a48ac(++_0x3c6311);}(_0x58f2,0x1b8));var _0x258f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x58f2[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x258f('0x0'));var rimraf=require(_0x258f('0x1'));var zipdir=require(_0x258f('0x2'));var jsonpatch=require(_0x258f('0x3'));var rp=require(_0x258f('0x4'));var moment=require(_0x258f('0x5'));var BPromise=require(_0x258f('0x6'));var Mustache=require('mustache');var util=require(_0x258f('0x7'));var path=require(_0x258f('0x8'));var sox=require(_0x258f('0x9'));var csv=require(_0x258f('0xa'));var ejs=require(_0x258f('0xb'));var fs=require('fs');var fs_extra=require(_0x258f('0xc'));var _=require('lodash');var squel=require(_0x258f('0xd'));var crypto=require(_0x258f('0xe'));var jsforce=require(_0x258f('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x258f('0xa'));var querystring=require(_0x258f('0x10'));var Papa=require(_0x258f('0x11'));var Redis=require(_0x258f('0x12'));var authService=require(_0x258f('0x13'));var qs=require(_0x258f('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x258f('0x15'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x258f('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x564cfa,_0x270fd2){_0x270fd2=_0x270fd2||0xcc;return function(_0x536902){if(_0x536902){return _0x564cfa['sendStatus'](_0x270fd2);}return _0x564cfa[_0x258f('0x17')](_0x270fd2)[_0x258f('0x18')]();};}function respondWithResult(_0x107ee5,_0x1af97f){_0x1af97f=_0x1af97f||0xc8;return function(_0x4dfef4){if(_0x4dfef4){return _0x107ee5[_0x258f('0x17')](_0x1af97f)[_0x258f('0x19')](_0x4dfef4);}};}function respondWithFilteredResult(_0x3db47a,_0x223c33){return function(_0x3fe1d8){if(_0x3fe1d8){var _0x1f9809=typeof _0x223c33[_0x258f('0x1a')]===_0x258f('0x1b')&&typeof _0x223c33[_0x258f('0x1c')]==='undefined';var _0xe81fe4=_0x3fe1d8[_0x258f('0x1d')];var _0x387d51=_0x1f9809?0x0:_0x223c33['offset'];var _0x492b7a=_0x1f9809?_0x3fe1d8[_0x258f('0x1d')]:_0x223c33[_0x258f('0x1a')]+_0x223c33['limit'];var _0x397801;if(_0x492b7a>=_0xe81fe4){_0x492b7a=_0xe81fe4;_0x397801=0xc8;}else{_0x397801=0xce;}_0x3db47a[_0x258f('0x17')](_0x397801);return _0x3db47a['set'](_0x258f('0x1e'),_0x387d51+'-'+_0x492b7a+'/'+_0xe81fe4)['json'](_0x3fe1d8);}return null;};}function patchUpdates(_0x2320f2){return function(_0x2cb0f9){try{jsonpatch['apply'](_0x2cb0f9,_0x2320f2,!![]);}catch(_0x565bc8){return BPromise[_0x258f('0x1f')](_0x565bc8);}return _0x2cb0f9['save']();};}function saveUpdates(_0x11143c,_0x18d3c1){return function(_0x110110){if(_0x110110){return _0x110110[_0x258f('0x20')](_0x11143c)[_0x258f('0x21')](function(_0x4d41af){return _0x4d41af;});}return null;};}function removeEntity(_0x57121e,_0x405d00){return function(_0x2a952e){if(_0x2a952e){return _0x2a952e['destroy']()[_0x258f('0x21')](function(){_0x57121e[_0x258f('0x17')](0xcc)[_0x258f('0x18')]();});}};}function handleEntityNotFound(_0x51115a,_0x5b28bc){return function(_0x4ceb9e){if(!_0x4ceb9e){_0x51115a[_0x258f('0x22')](0x194);}return _0x4ceb9e;};}function handleError(_0x1f940b,_0x3c4277){_0x3c4277=_0x3c4277||0x1f4;return function(_0x131b4a){logger[_0x258f('0x23')](_0x131b4a['stack']);if(_0x131b4a[_0x258f('0x24')]){delete _0x131b4a[_0x258f('0x24')];}_0x1f940b['status'](_0x3c4277)[_0x258f('0x25')](_0x131b4a);};}exports['index']=function(_0x2c7a89,_0x3c08b0){var _0x449c4a={},_0x2b9102={},_0x5aef5a={'count':0x0,'rows':[]};var _0x55c59d=_[_0x258f('0x26')](db[_0x258f('0x27')][_0x258f('0x28')],function(_0x76427e){return{'name':_0x76427e[_0x258f('0x29')],'type':_0x76427e[_0x258f('0x2a')][_0x258f('0x2b')]};});_0x2b9102[_0x258f('0x2c')]=_[_0x258f('0x26')](_0x55c59d,'name');_0x2b9102['query']=_['keys'](_0x2c7a89[_0x258f('0x2d')]);_0x2b9102[_0x258f('0x2e')]=_[_0x258f('0x2f')](_0x2b9102['model'],_0x2b9102[_0x258f('0x2d')]);_0x449c4a[_0x258f('0x30')]=_[_0x258f('0x2f')](_0x2b9102[_0x258f('0x2c')],qs['fields'](_0x2c7a89['query'][_0x258f('0x31')]));_0x449c4a[_0x258f('0x30')]=_0x449c4a[_0x258f('0x30')][_0x258f('0x32')]?_0x449c4a[_0x258f('0x30')]:_0x2b9102['model'];if(!_0x2c7a89[_0x258f('0x2d')][_0x258f('0x33')](_0x258f('0x34'))){_0x449c4a[_0x258f('0x1c')]=qs['limit'](_0x2c7a89['query'][_0x258f('0x1c')]);_0x449c4a[_0x258f('0x1a')]=qs[_0x258f('0x1a')](_0x2c7a89['query']['offset']);}_0x449c4a[_0x258f('0x35')]=qs[_0x258f('0x36')](_0x2c7a89['query']['sort']);_0x449c4a[_0x258f('0x37')]=qs['filters'](_[_0x258f('0x38')](_0x2c7a89[_0x258f('0x2d')],_0x2b9102[_0x258f('0x2e')]),_0x55c59d);if(_0x2c7a89['query'][_0x258f('0x39')]){_0x449c4a[_0x258f('0x37')]=_[_0x258f('0x3a')](_0x449c4a['where'],{'$or':_[_0x258f('0x26')](_0x55c59d,function(_0x52ff96){if(_0x52ff96['type']!==_0x258f('0x3b')){var _0x57250c={};_0x57250c[_0x52ff96[_0x258f('0x24')]]={'$like':'%'+_0x2c7a89[_0x258f('0x2d')][_0x258f('0x39')]+'%'};return _0x57250c;}})});}_0x449c4a=_['merge']({},_0x449c4a,_0x2c7a89[_0x258f('0x3c')]);var _0x3531e5={'where':_0x449c4a['where']};return db[_0x258f('0x27')][_0x258f('0x1d')](_0x3531e5)[_0x258f('0x21')](function(_0x20d8b5){_0x5aef5a[_0x258f('0x1d')]=_0x20d8b5;if(_0x2c7a89[_0x258f('0x2d')][_0x258f('0x3d')]){_0x449c4a[_0x258f('0x3e')]=[{'all':!![]}];}return db['DeskConfiguration'][_0x258f('0x3f')](_0x449c4a);})[_0x258f('0x21')](function(_0x55b081){_0x5aef5a['rows']=_0x55b081;return _0x5aef5a;})[_0x258f('0x21')](respondWithFilteredResult(_0x3c08b0,_0x449c4a))[_0x258f('0x40')](handleError(_0x3c08b0,null));};exports[_0x258f('0x41')]=function(_0x5b1764,_0x571563){var _0x13be9b={'raw':![],'where':{'id':_0x5b1764[_0x258f('0x42')]['id']}},_0x68cd70={};_0x68cd70[_0x258f('0x2c')]=_[_0x258f('0x43')](db[_0x258f('0x27')]['rawAttributes']);_0x68cd70[_0x258f('0x2d')]=_[_0x258f('0x43')](_0x5b1764[_0x258f('0x2d')]);_0x68cd70[_0x258f('0x2e')]=_['intersection'](_0x68cd70[_0x258f('0x2c')],_0x68cd70['query']);_0x13be9b['attributes']=_['intersection'](_0x68cd70[_0x258f('0x2c')],qs['fields'](_0x5b1764[_0x258f('0x2d')][_0x258f('0x31')]));_0x13be9b[_0x258f('0x30')]=_0x13be9b['attributes']['length']?_0x13be9b['attributes']:_0x68cd70[_0x258f('0x2c')];if(_0x5b1764[_0x258f('0x2d')][_0x258f('0x3d')]){_0x13be9b[_0x258f('0x3e')]=[{'all':!![]}];}_0x13be9b=_['merge']({},_0x13be9b,_0x5b1764[_0x258f('0x3c')]);return db['DeskConfiguration'][_0x258f('0x44')](_0x13be9b)[_0x258f('0x21')](handleEntityNotFound(_0x571563,null))['then'](respondWithResult(_0x571563,null))['catch'](handleError(_0x571563,null));};exports[_0x258f('0x45')]=function(_0x2908d0,_0xc705b7){return db['DeskConfiguration'][_0x258f('0x45')](_0x2908d0[_0x258f('0x46')],{})[_0x258f('0x21')](respondWithResult(_0xc705b7,0xc9))[_0x258f('0x40')](handleError(_0xc705b7,null));};exports[_0x258f('0x20')]=function(_0x190a95,_0x3733b2){if(_0x190a95[_0x258f('0x46')]['id']){delete _0x190a95[_0x258f('0x46')]['id'];}return db['DeskConfiguration'][_0x258f('0x44')]({'where':{'id':_0x190a95['params']['id']}})[_0x258f('0x21')](handleEntityNotFound(_0x3733b2,null))[_0x258f('0x21')](saveUpdates(_0x190a95[_0x258f('0x46')],null))[_0x258f('0x21')](respondWithResult(_0x3733b2,null))[_0x258f('0x40')](handleError(_0x3733b2,null));};exports[_0x258f('0x47')]=function(_0x3cffd9,_0x124ff9){return db[_0x258f('0x27')][_0x258f('0x44')]({'where':{'id':_0x3cffd9[_0x258f('0x42')]['id']}})['then'](handleEntityNotFound(_0x124ff9,null))[_0x258f('0x21')](removeEntity(_0x124ff9,null))[_0x258f('0x40')](handleError(_0x124ff9,null));};exports['getFields']=function(_0x4c5578,_0x1f3209,_0x5fb374){var _0x4fc051={};var _0x4c3945={};var _0x236c02;var _0x52f86e;return db['DeskConfiguration']['findOne']({'where':{'id':_0x4c5578[_0x258f('0x42')]['id']}})[_0x258f('0x21')](handleEntityNotFound(_0x1f3209,null))[_0x258f('0x21')](function(_0x518215){if(_0x518215){_0x236c02=_0x518215;_0x4c3945['model']=_[_0x258f('0x43')](db[_0x258f('0x48')]['rawAttributes']);_0x4c3945[_0x258f('0x2d')]=_[_0x258f('0x43')](_0x4c5578[_0x258f('0x2d')]);_0x4c3945[_0x258f('0x2e')]=_[_0x258f('0x2f')](_0x4c3945['model'],_0x4c3945[_0x258f('0x2d')]);_0x4fc051['attributes']=_[_0x258f('0x2f')](_0x4c3945[_0x258f('0x2c')],qs['fields'](_0x4c5578[_0x258f('0x2d')][_0x258f('0x31')]));_0x4fc051[_0x258f('0x30')]=_0x4fc051['attributes'][_0x258f('0x32')]?_0x4fc051[_0x258f('0x30')]:_0x4c3945[_0x258f('0x2c')];_0x4fc051['order']=qs['sort'](_0x4c5578[_0x258f('0x2d')][_0x258f('0x36')]);_0x4fc051[_0x258f('0x37')]=qs[_0x258f('0x2e')](_['pick'](_0x4c5578['query'],_0x4c3945[_0x258f('0x2e')]));if(_0x4c5578[_0x258f('0x2d')][_0x258f('0x39')]){_0x4fc051[_0x258f('0x37')]=_[_0x258f('0x3a')](_0x4fc051[_0x258f('0x37')],{'$or':_[_0x258f('0x26')](_0x4fc051[_0x258f('0x30')],function(_0x380c85){var _0x1bd29b={};_0x1bd29b[_0x380c85]={'$like':'%'+_0x4c5578[_0x258f('0x2d')]['filter']+'%'};return _0x1bd29b;})});}_0x4fc051=_[_0x258f('0x3a')]({},_0x4fc051,_0x4c5578['options']);return _0x236c02[_0x258f('0x49')](_0x4fc051);}})[_0x258f('0x21')](function(_0x5d14f9){if(_0x5d14f9){_0x52f86e=_0x5d14f9[_0x258f('0x32')];if(!_0x4c5578[_0x258f('0x2d')][_0x258f('0x33')]('nolimit')){_0x4fc051[_0x258f('0x1c')]=qs[_0x258f('0x1c')](_0x4c5578['query'][_0x258f('0x1c')]);_0x4fc051['offset']=qs[_0x258f('0x1a')](_0x4c5578[_0x258f('0x2d')][_0x258f('0x1a')]);}return _0x236c02['getFields'](_0x4fc051);}})[_0x258f('0x21')](function(_0x1e72cf){if(_0x1e72cf){return _0x1e72cf?{'count':_0x52f86e,'rows':_0x1e72cf}:null;}})[_0x258f('0x21')](respondWithResult(_0x1f3209,null))[_0x258f('0x40')](handleError(_0x1f3209,null));};exports[_0x258f('0x4a')]=function(_0x2c66f7,_0x179cd4,_0x5040ad){var _0x5a5116={};var _0xbc62cc={};var _0x31bf85;var _0x13573a;return db[_0x258f('0x27')][_0x258f('0x4b')]({'where':{'id':_0x2c66f7['params']['id']}})[_0x258f('0x21')](handleEntityNotFound(_0x179cd4,null))[_0x258f('0x21')](function(_0x2a3071){if(_0x2a3071){_0x31bf85=_0x2a3071;_0xbc62cc['model']=_[_0x258f('0x43')](db[_0x258f('0x48')][_0x258f('0x28')]);_0xbc62cc[_0x258f('0x2d')]=_['keys'](_0x2c66f7[_0x258f('0x2d')]);_0xbc62cc[_0x258f('0x2e')]=_[_0x258f('0x2f')](_0xbc62cc[_0x258f('0x2c')],_0xbc62cc['query']);_0x5a5116[_0x258f('0x30')]=_['intersection'](_0xbc62cc[_0x258f('0x2c')],qs[_0x258f('0x31')](_0x2c66f7[_0x258f('0x2d')]['fields']));_0x5a5116[_0x258f('0x30')]=_0x5a5116[_0x258f('0x30')][_0x258f('0x32')]?_0x5a5116[_0x258f('0x30')]:_0xbc62cc[_0x258f('0x2c')];_0x5a5116[_0x258f('0x35')]=qs[_0x258f('0x36')](_0x2c66f7[_0x258f('0x2d')][_0x258f('0x36')]);_0x5a5116[_0x258f('0x37')]=qs[_0x258f('0x2e')](_[_0x258f('0x38')](_0x2c66f7[_0x258f('0x2d')],_0xbc62cc['filters']));if(_0x2c66f7[_0x258f('0x2d')][_0x258f('0x39')]){_0x5a5116[_0x258f('0x37')]=_['merge'](_0x5a5116[_0x258f('0x37')],{'$or':_['map'](_0x5a5116[_0x258f('0x30')],function(_0x27d1bb){var _0x3cb92c={};_0x3cb92c[_0x27d1bb]={'$like':'%'+_0x2c66f7[_0x258f('0x2d')][_0x258f('0x39')]+'%'};return _0x3cb92c;})});}_0x5a5116=_[_0x258f('0x3a')]({},_0x5a5116,_0x2c66f7[_0x258f('0x3c')]);return _0x31bf85['getSubjects'](_0x5a5116);}})[_0x258f('0x21')](function(_0xc7dfc9){if(_0xc7dfc9){_0x13573a=_0xc7dfc9[_0x258f('0x32')];if(!_0x2c66f7[_0x258f('0x2d')]['hasOwnProperty'](_0x258f('0x34'))){_0x5a5116[_0x258f('0x1c')]=qs[_0x258f('0x1c')](_0x2c66f7[_0x258f('0x2d')]['limit']);_0x5a5116[_0x258f('0x1a')]=qs[_0x258f('0x1a')](_0x2c66f7[_0x258f('0x2d')][_0x258f('0x1a')]);}return _0x31bf85[_0x258f('0x4a')](_0x5a5116);}})[_0x258f('0x21')](function(_0x570edf){if(_0x570edf){return _0x570edf?{'count':_0x13573a,'rows':_0x570edf}:null;}})[_0x258f('0x21')](respondWithResult(_0x179cd4,null))[_0x258f('0x40')](handleError(_0x179cd4,null));};exports['getDescriptions']=function(_0xf6cca4,_0x14779e,_0x465c06){var _0x21d163={};var _0x1113c0={};var _0x91bdee;var _0x452c84;return db[_0x258f('0x27')]['findOne']({'where':{'id':_0xf6cca4['params']['id']}})[_0x258f('0x21')](handleEntityNotFound(_0x14779e,null))[_0x258f('0x21')](function(_0x21ea4d){if(_0x21ea4d){_0x91bdee=_0x21ea4d;_0x1113c0[_0x258f('0x2c')]=_[_0x258f('0x43')](db['DeskField'][_0x258f('0x28')]);_0x1113c0[_0x258f('0x2d')]=_[_0x258f('0x43')](_0xf6cca4[_0x258f('0x2d')]);_0x1113c0[_0x258f('0x2e')]=_[_0x258f('0x2f')](_0x1113c0[_0x258f('0x2c')],_0x1113c0['query']);_0x21d163[_0x258f('0x30')]=_[_0x258f('0x2f')](_0x1113c0[_0x258f('0x2c')],qs[_0x258f('0x31')](_0xf6cca4[_0x258f('0x2d')][_0x258f('0x31')]));_0x21d163['attributes']=_0x21d163[_0x258f('0x30')][_0x258f('0x32')]?_0x21d163[_0x258f('0x30')]:_0x1113c0[_0x258f('0x2c')];_0x21d163[_0x258f('0x35')]=qs[_0x258f('0x36')](_0xf6cca4[_0x258f('0x2d')][_0x258f('0x36')]);_0x21d163['where']=qs[_0x258f('0x2e')](_['pick'](_0xf6cca4[_0x258f('0x2d')],_0x1113c0[_0x258f('0x2e')]));if(_0xf6cca4[_0x258f('0x2d')][_0x258f('0x39')]){_0x21d163[_0x258f('0x37')]=_[_0x258f('0x3a')](_0x21d163[_0x258f('0x37')],{'$or':_['map'](_0x21d163['attributes'],function(_0x572460){var _0x3fdcd1={};_0x3fdcd1[_0x572460]={'$like':'%'+_0xf6cca4[_0x258f('0x2d')][_0x258f('0x39')]+'%'};return _0x3fdcd1;})});}_0x21d163=_[_0x258f('0x3a')]({},_0x21d163,_0xf6cca4[_0x258f('0x3c')]);return _0x91bdee[_0x258f('0x4c')](_0x21d163);}})[_0x258f('0x21')](function(_0x5a32b4){if(_0x5a32b4){_0x452c84=_0x5a32b4[_0x258f('0x32')];if(!_0xf6cca4[_0x258f('0x2d')][_0x258f('0x33')]('nolimit')){_0x21d163[_0x258f('0x1c')]=qs[_0x258f('0x1c')](_0xf6cca4[_0x258f('0x2d')][_0x258f('0x1c')]);_0x21d163[_0x258f('0x1a')]=qs['offset'](_0xf6cca4[_0x258f('0x2d')][_0x258f('0x1a')]);}return _0x91bdee['getDescriptions'](_0x21d163);}})[_0x258f('0x21')](function(_0xad8329){if(_0xad8329){return _0xad8329?{'count':_0x452c84,'rows':_0xad8329}:null;}})[_0x258f('0x21')](respondWithResult(_0x14779e,null))['catch'](handleError(_0x14779e,null));};exports['getTags']=function(_0x4c40b4,_0x5618b4,_0x134ed1){var _0x3a3324={};var _0x2617d2={};var _0x5e5e9c;var _0x234e42;return db['DeskConfiguration']['findOne']({'where':{'id':_0x4c40b4['params']['id']}})['then'](handleEntityNotFound(_0x5618b4,null))[_0x258f('0x21')](function(_0x44b608){if(_0x44b608){_0x5e5e9c=_0x44b608;_0x2617d2[_0x258f('0x2c')]=_[_0x258f('0x43')](db['Tag'][_0x258f('0x28')]);_0x2617d2[_0x258f('0x2d')]=_['keys'](_0x4c40b4[_0x258f('0x2d')]);_0x2617d2[_0x258f('0x2e')]=_[_0x258f('0x2f')](_0x2617d2['model'],_0x2617d2[_0x258f('0x2d')]);_0x3a3324[_0x258f('0x30')]=_[_0x258f('0x2f')](_0x2617d2['model'],qs['fields'](_0x4c40b4[_0x258f('0x2d')]['fields']));_0x3a3324[_0x258f('0x30')]=_0x3a3324['attributes'][_0x258f('0x32')]?_0x3a3324[_0x258f('0x30')]:_0x2617d2[_0x258f('0x2c')];_0x3a3324[_0x258f('0x35')]=qs[_0x258f('0x36')](_0x4c40b4[_0x258f('0x2d')][_0x258f('0x36')]);_0x3a3324[_0x258f('0x37')]=qs[_0x258f('0x2e')](_[_0x258f('0x38')](_0x4c40b4[_0x258f('0x2d')],_0x2617d2[_0x258f('0x2e')]));if(_0x4c40b4[_0x258f('0x2d')]['filter']){_0x3a3324[_0x258f('0x37')]=_['merge'](_0x3a3324[_0x258f('0x37')],{'$or':_[_0x258f('0x26')](_0x3a3324[_0x258f('0x30')],function(_0x63e72f){var _0x420241={};_0x420241[_0x63e72f]={'$like':'%'+_0x4c40b4[_0x258f('0x2d')][_0x258f('0x39')]+'%'};return _0x420241;})});}_0x3a3324=_[_0x258f('0x3a')]({},_0x3a3324,_0x4c40b4[_0x258f('0x3c')]);return _0x5e5e9c[_0x258f('0x4d')](_0x3a3324);}})[_0x258f('0x21')](function(_0x45c304){if(_0x45c304){_0x234e42=_0x45c304[_0x258f('0x32')];if(!_0x4c40b4[_0x258f('0x2d')]['hasOwnProperty'](_0x258f('0x34'))){_0x3a3324['limit']=qs[_0x258f('0x1c')](_0x4c40b4['query'][_0x258f('0x1c')]);_0x3a3324['offset']=qs[_0x258f('0x1a')](_0x4c40b4[_0x258f('0x2d')][_0x258f('0x1a')]);}return _0x5e5e9c['getTags'](_0x3a3324);}})[_0x258f('0x21')](function(_0x105f72){if(_0x105f72){return _0x105f72?{'count':_0x234e42,'rows':_0x105f72}:null;}})['then'](respondWithResult(_0x5618b4,null))[_0x258f('0x40')](handleError(_0x5618b4,null));};exports[_0x258f('0x4e')]=function(_0x46bbf4,_0x314bdc,_0x3465d1){if(_0x46bbf4[_0x258f('0x46')]['id']){delete _0x46bbf4[_0x258f('0x46')]['id'];}return db['DeskConfiguration']['findOne']({'where':{'id':_0x46bbf4[_0x258f('0x42')]['id']}})['then'](handleEntityNotFound(_0x314bdc,null))['then'](function(_0xf9ced4){if(_0xf9ced4){return _0xf9ced4[_0x258f('0x4e')](_0x46bbf4[_0x258f('0x46')][_0x258f('0x4f')]||[]);}return null;})[_0x258f('0x21')](respondWithResult(_0x314bdc,null))[_0x258f('0x40')](handleError(_0x314bdc,null));};
\ No newline at end of file
index af83814..3d1fc91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ddc=['exports','define','DeskConfiguration','util','bluebird','path','rimraf','./intDeskConfiguration.attributes'];(function(_0x527868,_0x4854aa){var _0x196cc7=function(_0x24c8d4){while(--_0x24c8d4){_0x527868['push'](_0x527868['shift']());}};_0x196cc7(++_0x4854aa);}(_0x0ddc,0x1f3));var _0xc0dd=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x0ddc[_0x4154a6];return _0x3b2786;};'use strict';var _=require('lodash');var util=require(_0xc0dd('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xc0dd('0x1'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc0dd('0x2'));var rimraf=require(_0xc0dd('0x3'));var config=require('../../config/environment');var attributes=require(_0xc0dd('0x4'));module[_0xc0dd('0x5')]=function(_0x35ae45,_0x1cad3c){return _0x35ae45[_0xc0dd('0x6')](_0xc0dd('0x7'),attributes,{'tableName':'int_desk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfa2d=['bluebird','path','rimraf','../../config/environment','./intDeskConfiguration.attributes','exports','define','int_desk_configurations','lodash','util','../../config/logger','api'];(function(_0x159b60,_0x16af3f){var _0x460e63=function(_0x39fac8){while(--_0x39fac8){_0x159b60['push'](_0x159b60['shift']());}};_0x460e63(++_0x16af3f);}(_0xfa2d,0x188));var _0xdfa2=function(_0x28c71a,_0xbdb659){_0x28c71a=_0x28c71a-0x0;var _0x4a5905=_0xfa2d[_0x28c71a];return _0x4a5905;};'use strict';var _=require(_0xdfa2('0x0'));var util=require(_0xdfa2('0x1'));var logger=require(_0xdfa2('0x2'))(_0xdfa2('0x3'));var moment=require('moment');var BPromise=require(_0xdfa2('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xdfa2('0x5'));var rimraf=require(_0xdfa2('0x6'));var config=require(_0xdfa2('0x7'));var attributes=require(_0xdfa2('0x8'));module[_0xdfa2('0x9')]=function(_0x3634f1,_0x1f8f87){return _0x3634f1[_0xdfa2('0xa')]('DeskConfiguration',attributes,{'tableName':_0xdfa2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 56be691..cc0c123 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa38c=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','DeskConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','randomstring','ioredis'];(function(_0x519756,_0x288785){var _0x37047e=function(_0x3d64a7){while(--_0x3d64a7){_0x519756['push'](_0x519756['shift']());}};_0x37047e(++_0x288785);}(_0xa38c,0x1bd));var _0xca38=function(_0x59c86e,_0x38ce57){_0x59c86e=_0x59c86e-0x0;var _0x48a50e=_0xa38c[_0x59c86e];return _0x48a50e;};'use strict';var _=require(_0xca38('0x0'));var util=require(_0xca38('0x1'));var moment=require('moment');var BPromise=require(_0xca38('0x2'));var rs=require(_0xca38('0x3'));var fs=require('fs');var Redis=require(_0xca38('0x4'));var db=require(_0xca38('0x5'))['db'];var utils=require(_0xca38('0x6'));var logger=require(_0xca38('0x7'))(_0xca38('0x8'));var config=require(_0xca38('0x9'));var jayson=require(_0xca38('0xa'));var client=jayson[_0xca38('0xb')][_0xca38('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x489eb3,_0x3b1354,_0x15dbf7){return new BPromise(function(_0x17fff1,_0x3eef6f){return client[_0xca38('0xd')](_0x489eb3,_0x15dbf7)[_0xca38('0xe')](function(_0x448754){logger[_0xca38('0xf')]('DeskConfiguration,\x20%s,\x20%s',_0x3b1354,_0xca38('0x10'));logger[_0xca38('0x11')](_0xca38('0x12'),_0x3b1354,'request\x20sent',JSON[_0xca38('0x13')](_0x448754));if(_0x448754[_0xca38('0x14')]){if(_0x448754[_0xca38('0x14')]['code']===0x1f4){logger[_0xca38('0x14')](_0xca38('0x15'),_0x3b1354,_0x448754[_0xca38('0x14')][_0xca38('0x16')]);return _0x3eef6f(_0x448754[_0xca38('0x14')][_0xca38('0x16')]);}logger['error'](_0xca38('0x15'),_0x3b1354,_0x448754[_0xca38('0x14')][_0xca38('0x16')]);return _0x17fff1(_0x448754[_0xca38('0x14')][_0xca38('0x16')]);}else{logger[_0xca38('0xf')](_0xca38('0x15'),_0x3b1354,'request\x20sent');_0x17fff1(_0x448754[_0xca38('0x17')]['message']);}})[_0xca38('0x18')](function(_0x41fe53){logger[_0xca38('0x14')](_0xca38('0x15'),_0x3b1354,_0x41fe53);_0x3eef6f(_0x41fe53);});});}
\ No newline at end of file
+var _0x6bec=['result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','debug','request\x20sent','error','code','DeskConfiguration,\x20%s,\x20%s','message','info'];(function(_0x26abcb,_0x394921){var _0x136b0b=function(_0x2f1e3){while(--_0x2f1e3){_0x26abcb['push'](_0x26abcb['shift']());}};_0x136b0b(++_0x394921);}(_0x6bec,0x86));var _0xc6be=function(_0x5724b5,_0xe0cfe3){_0x5724b5=_0x5724b5-0x0;var _0x14eeed=_0x6bec[_0x5724b5];return _0x14eeed;};'use strict';var _=require(_0xc6be('0x0'));var util=require(_0xc6be('0x1'));var moment=require(_0xc6be('0x2'));var BPromise=require(_0xc6be('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc6be('0x4'));var db=require(_0xc6be('0x5'))['db'];var utils=require(_0xc6be('0x6'));var logger=require(_0xc6be('0x7'))(_0xc6be('0x8'));var config=require(_0xc6be('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xc6be('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4acaeb,_0x28dc94,_0x5e6a91){return new BPromise(function(_0x43711c,_0x42f470){return client[_0xc6be('0xb')](_0x4acaeb,_0x5e6a91)[_0xc6be('0xc')](function(_0x3487a5){logger['info']('DeskConfiguration,\x20%s,\x20%s',_0x28dc94,'request\x20sent');logger[_0xc6be('0xd')]('DeskConfiguration,\x20%s,\x20%s,\x20%s',_0x28dc94,_0xc6be('0xe'),JSON['stringify'](_0x3487a5));if(_0x3487a5[_0xc6be('0xf')]){if(_0x3487a5[_0xc6be('0xf')][_0xc6be('0x10')]===0x1f4){logger[_0xc6be('0xf')](_0xc6be('0x11'),_0x28dc94,_0x3487a5[_0xc6be('0xf')][_0xc6be('0x12')]);return _0x42f470(_0x3487a5[_0xc6be('0xf')][_0xc6be('0x12')]);}logger['error']('DeskConfiguration,\x20%s,\x20%s',_0x28dc94,_0x3487a5[_0xc6be('0xf')]['message']);return _0x43711c(_0x3487a5['error'][_0xc6be('0x12')]);}else{logger[_0xc6be('0x13')]('DeskConfiguration,\x20%s,\x20%s',_0x28dc94,_0xc6be('0xe'));_0x43711c(_0x3487a5[_0xc6be('0x14')][_0xc6be('0x12')]);}})[_0xc6be('0x15')](function(_0x150dde){logger[_0xc6be('0xf')]('DeskConfiguration,\x20%s,\x20%s',_0x28dc94,_0x150dde);_0x42f470(_0x150dde);});});}
\ No newline at end of file
index 75b4fc1..93972b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41ec=['delete','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intDeskField.controller','isAuthenticated','index','get','/:id','show','create','put','update'];(function(_0x4233ee,_0x27cfa1){var _0x8e4151=function(_0x569eb2){while(--_0x569eb2){_0x4233ee['push'](_0x4233ee['shift']());}};_0x8e4151(++_0x27cfa1);}(_0x41ec,0xde));var _0xc41e=function(_0x5b9c80,_0x17e8ca){_0x5b9c80=_0x5b9c80-0x0;var _0x36b4d7=_0x41ec[_0x5b9c80];return _0x36b4d7;};'use strict';var multer=require('multer');var util=require(_0xc41e('0x0'));var path=require(_0xc41e('0x1'));var timeout=require(_0xc41e('0x2'));var express=require(_0xc41e('0x3'));var router=express[_0xc41e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc41e('0x5'));var interaction=require(_0xc41e('0x6'));var config=require('../../config/environment');var controller=require(_0xc41e('0x7'));router['get']('/',auth[_0xc41e('0x8')](),controller[_0xc41e('0x9')]);router[_0xc41e('0xa')](_0xc41e('0xb'),auth[_0xc41e('0x8')](),controller[_0xc41e('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0xc41e('0xd')]);router[_0xc41e('0xe')](_0xc41e('0xb'),auth[_0xc41e('0x8')](),controller[_0xc41e('0xf')]);router[_0xc41e('0x10')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x1918=['Router','fs-extra','../../components/interaction/service','../../config/environment','./intDeskField.controller','isAuthenticated','index','/:id','show','post','put','update','util','path','express'];(function(_0x511e2f,_0x40455d){var _0x4e0d55=function(_0x737734){while(--_0x737734){_0x511e2f['push'](_0x511e2f['shift']());}};_0x4e0d55(++_0x40455d);}(_0x1918,0x1dd));var _0x8191=function(_0x3cc468,_0x22064f){_0x3cc468=_0x3cc468-0x0;var _0x551c52=_0x1918[_0x3cc468];return _0x551c52;};'use strict';var multer=require('multer');var util=require(_0x8191('0x0'));var path=require(_0x8191('0x1'));var timeout=require('connect-timeout');var express=require(_0x8191('0x2'));var router=express[_0x8191('0x3')]();var fs_extra=require(_0x8191('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x8191('0x5'));var config=require(_0x8191('0x6'));var controller=require(_0x8191('0x7'));router['get']('/',auth[_0x8191('0x8')](),controller[_0x8191('0x9')]);router['get'](_0x8191('0xa'),auth[_0x8191('0x8')](),controller[_0x8191('0xb')]);router[_0x8191('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0x8191('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x8191('0xe')]);router['delete'](_0x8191('0xa'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index b794b9a..83547d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a6d=['BOOLEAN','sequelize','exports','ENUM','string','variable','keyValue','picklist','customVariable','STRING'];(function(_0x385e0b,_0x41653b){var _0x579893=function(_0x3a413b){while(--_0x3a413b){_0x385e0b['push'](_0x385e0b['shift']());}};_0x579893(++_0x41653b);}(_0x9a6d,0x8d));var _0xd9a6=function(_0x16367c,_0x455849){_0x16367c=_0x16367c-0x0;var _0x42e64a=_0x9a6d[_0x16367c];return _0x42e64a;};'use strict';var Sequelize=require(_0xd9a6('0x0'));module[_0xd9a6('0x1')]={'type':{'type':Sequelize[_0xd9a6('0x2')](_0xd9a6('0x3'),_0xd9a6('0x4'),'customVariable',_0xd9a6('0x5'),_0xd9a6('0x6')),'defaultValue':_0xd9a6('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0xd9a6('0x3'),_0xd9a6('0x4'),_0xd9a6('0x7'))},'keyContent':{'type':Sequelize[_0xd9a6('0x8')]},'idField':{'type':Sequelize[_0xd9a6('0x8')]},'nameField':{'type':Sequelize[_0xd9a6('0x8')]},'customField':{'type':Sequelize[_0xd9a6('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xd9a6('0x8')]}};
\ No newline at end of file
+var _0x872b=['customVariable','keyValue','picklist','string','STRING','BOOLEAN','sequelize','exports','ENUM'];(function(_0x4d2fda,_0x4eabbf){var _0x476325=function(_0x12c7f4){while(--_0x12c7f4){_0x4d2fda['push'](_0x4d2fda['shift']());}};_0x476325(++_0x4eabbf);}(_0x872b,0x1ad));var _0xb872=function(_0x1c26e7,_0x404d26){_0x1c26e7=_0x1c26e7-0x0;var _0x2d37f6=_0x872b[_0x1c26e7];return _0x2d37f6;};'use strict';var Sequelize=require(_0xb872('0x0'));module[_0xb872('0x1')]={'type':{'type':Sequelize[_0xb872('0x2')]('string','variable',_0xb872('0x3'),_0xb872('0x4'),_0xb872('0x5')),'defaultValue':_0xb872('0x6')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xb872('0x7')]},'keyType':{'type':Sequelize[_0xb872('0x2')]('string','variable',_0xb872('0x3'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xb872('0x7')]},'nameField':{'type':Sequelize[_0xb872('0x7')]},'customField':{'type':Sequelize[_0xb872('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xb872('0x7')]}};
\ No newline at end of file
index 2e4446b..9276025 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafca=['count','set','Content-Range','json','apply','save','update','then','error','name','send','index','map','DeskField','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','destroy','eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit'];(function(_0x5d2803,_0xf375bd){var _0xdcad2c=function(_0x3c3a98){while(--_0x3c3a98){_0x5d2803['push'](_0x5d2803['shift']());}};_0xdcad2c(++_0xf375bd);}(_0xafca,0x1ef));var _0xaafc=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xafca[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0xaafc('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xaafc('0x1'));var jsonpatch=require(_0xaafc('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xaafc('0x3'));var Mustache=require(_0xaafc('0x4'));var util=require(_0xaafc('0x5'));var path=require(_0xaafc('0x6'));var sox=require(_0xaafc('0x7'));var csv=require('to-csv');var ejs=require(_0xaafc('0x8'));var fs=require('fs');var fs_extra=require(_0xaafc('0x9'));var _=require(_0xaafc('0xa'));var squel=require(_0xaafc('0xb'));var crypto=require(_0xaafc('0xc'));var jsforce=require(_0xaafc('0xd'));var deskjs=require(_0xaafc('0xe'));var toCsv=require(_0xaafc('0xf'));var querystring=require(_0xaafc('0x10'));var Papa=require(_0xaafc('0x11'));var Redis=require(_0xaafc('0x12'));var authService=require(_0xaafc('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xaafc('0x14'));var logger=require('../../config/logger')(_0xaafc('0x15'));var utils=require('../../config/utils');var config=require(_0xaafc('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xaafc('0x17'))['db'];function respondWithStatusCode(_0x63e543,_0x410593){_0x410593=_0x410593||0xcc;return function(_0x1c483b){if(_0x1c483b){return _0x63e543[_0xaafc('0x18')](_0x410593);}return _0x63e543[_0xaafc('0x19')](_0x410593)[_0xaafc('0x1a')]();};}function respondWithResult(_0x2c9ec4,_0xcd06fd){_0xcd06fd=_0xcd06fd||0xc8;return function(_0x3313ae){if(_0x3313ae){return _0x2c9ec4[_0xaafc('0x19')](_0xcd06fd)['json'](_0x3313ae);}};}function respondWithFilteredResult(_0x2e9e29,_0x35fcaa){return function(_0x1cf6a3){if(_0x1cf6a3){var _0x42ef58=typeof _0x35fcaa[_0xaafc('0x1b')]===_0xaafc('0x1c')&&typeof _0x35fcaa[_0xaafc('0x1d')]===_0xaafc('0x1c');var _0x34b7e0=_0x1cf6a3[_0xaafc('0x1e')];var _0x48c266=_0x42ef58?0x0:_0x35fcaa[_0xaafc('0x1b')];var _0x504fa0=_0x42ef58?_0x1cf6a3[_0xaafc('0x1e')]:_0x35fcaa[_0xaafc('0x1b')]+_0x35fcaa[_0xaafc('0x1d')];var _0x30b49c;if(_0x504fa0>=_0x34b7e0){_0x504fa0=_0x34b7e0;_0x30b49c=0xc8;}else{_0x30b49c=0xce;}_0x2e9e29[_0xaafc('0x19')](_0x30b49c);return _0x2e9e29[_0xaafc('0x1f')](_0xaafc('0x20'),_0x48c266+'-'+_0x504fa0+'/'+_0x34b7e0)[_0xaafc('0x21')](_0x1cf6a3);}return null;};}function patchUpdates(_0x27b769){return function(_0x4cf7c5){try{jsonpatch[_0xaafc('0x22')](_0x4cf7c5,_0x27b769,!![]);}catch(_0x990ed9){return BPromise['reject'](_0x990ed9);}return _0x4cf7c5[_0xaafc('0x23')]();};}function saveUpdates(_0x1b6b32,_0x7bc70a){return function(_0x521f26){if(_0x521f26){return _0x521f26[_0xaafc('0x24')](_0x1b6b32)[_0xaafc('0x25')](function(_0x1d2091){return _0x1d2091;});}return null;};}function removeEntity(_0x4a31b4,_0x1b3033){return function(_0xd3b1a2){if(_0xd3b1a2){return _0xd3b1a2['destroy']()[_0xaafc('0x25')](function(){_0x4a31b4[_0xaafc('0x19')](0xcc)[_0xaafc('0x1a')]();});}};}function handleEntityNotFound(_0x4103fc,_0x1f5522){return function(_0x386bac){if(!_0x386bac){_0x4103fc['sendStatus'](0x194);}return _0x386bac;};}function handleError(_0xebf3a,_0xa4dc76){_0xa4dc76=_0xa4dc76||0x1f4;return function(_0xdaff5a){logger[_0xaafc('0x26')](_0xdaff5a['stack']);if(_0xdaff5a[_0xaafc('0x27')]){delete _0xdaff5a[_0xaafc('0x27')];}_0xebf3a[_0xaafc('0x19')](_0xa4dc76)[_0xaafc('0x28')](_0xdaff5a);};}exports[_0xaafc('0x29')]=function(_0x44e207,_0x1c9454){var _0x359ddc={},_0x3017ba={},_0x28401a={'count':0x0,'rows':[]};var _0x731bb4=_[_0xaafc('0x2a')](db[_0xaafc('0x2b')][_0xaafc('0x2c')],function(_0x32c110){return{'name':_0x32c110[_0xaafc('0x2d')],'type':_0x32c110[_0xaafc('0x2e')]['key']};});_0x3017ba['model']=_['map'](_0x731bb4,_0xaafc('0x27'));_0x3017ba[_0xaafc('0x2f')]=_[_0xaafc('0x30')](_0x44e207['query']);_0x3017ba[_0xaafc('0x31')]=_[_0xaafc('0x32')](_0x3017ba[_0xaafc('0x33')],_0x3017ba[_0xaafc('0x2f')]);_0x359ddc[_0xaafc('0x34')]=_['intersection'](_0x3017ba['model'],qs['fields'](_0x44e207[_0xaafc('0x2f')][_0xaafc('0x35')]));_0x359ddc[_0xaafc('0x34')]=_0x359ddc[_0xaafc('0x34')][_0xaafc('0x36')]?_0x359ddc['attributes']:_0x3017ba[_0xaafc('0x33')];if(!_0x44e207[_0xaafc('0x2f')][_0xaafc('0x37')](_0xaafc('0x38'))){_0x359ddc[_0xaafc('0x1d')]=qs[_0xaafc('0x1d')](_0x44e207[_0xaafc('0x2f')]['limit']);_0x359ddc['offset']=qs[_0xaafc('0x1b')](_0x44e207[_0xaafc('0x2f')]['offset']);}_0x359ddc[_0xaafc('0x39')]=qs[_0xaafc('0x3a')](_0x44e207[_0xaafc('0x2f')][_0xaafc('0x3a')]);_0x359ddc[_0xaafc('0x3b')]=qs[_0xaafc('0x31')](_[_0xaafc('0x3c')](_0x44e207[_0xaafc('0x2f')],_0x3017ba[_0xaafc('0x31')]),_0x731bb4);if(_0x44e207[_0xaafc('0x2f')][_0xaafc('0x3d')]){_0x359ddc[_0xaafc('0x3b')]=_[_0xaafc('0x3e')](_0x359ddc[_0xaafc('0x3b')],{'$or':_['map'](_0x731bb4,function(_0xe4e432){if(_0xe4e432['type']!==_0xaafc('0x3f')){var _0x370bc4={};_0x370bc4[_0xe4e432[_0xaafc('0x27')]]={'$like':'%'+_0x44e207[_0xaafc('0x2f')][_0xaafc('0x3d')]+'%'};return _0x370bc4;}})});}_0x359ddc=_['merge']({},_0x359ddc,_0x44e207[_0xaafc('0x40')]);var _0x5cefc1={'where':_0x359ddc[_0xaafc('0x3b')]};return db[_0xaafc('0x2b')][_0xaafc('0x1e')](_0x5cefc1)[_0xaafc('0x25')](function(_0x4496bf){_0x28401a[_0xaafc('0x1e')]=_0x4496bf;if(_0x44e207['query'][_0xaafc('0x41')]){_0x359ddc[_0xaafc('0x42')]=[{'all':!![]}];}return db['DeskField']['findAll'](_0x359ddc);})[_0xaafc('0x25')](function(_0x4126a9){_0x28401a[_0xaafc('0x43')]=_0x4126a9;return _0x28401a;})[_0xaafc('0x25')](respondWithFilteredResult(_0x1c9454,_0x359ddc))[_0xaafc('0x44')](handleError(_0x1c9454,null));};exports[_0xaafc('0x45')]=function(_0x53d313,_0x1665cc){var _0x29ec67={'raw':!![],'where':{'id':_0x53d313[_0xaafc('0x46')]['id']}},_0x51e444={};_0x51e444[_0xaafc('0x33')]=_['keys'](db[_0xaafc('0x2b')][_0xaafc('0x2c')]);_0x51e444['query']=_[_0xaafc('0x30')](_0x53d313['query']);_0x51e444[_0xaafc('0x31')]=_[_0xaafc('0x32')](_0x51e444[_0xaafc('0x33')],_0x51e444['query']);_0x29ec67[_0xaafc('0x34')]=_[_0xaafc('0x32')](_0x51e444[_0xaafc('0x33')],qs['fields'](_0x53d313[_0xaafc('0x2f')]['fields']));_0x29ec67[_0xaafc('0x34')]=_0x29ec67['attributes']['length']?_0x29ec67[_0xaafc('0x34')]:_0x51e444[_0xaafc('0x33')];if(_0x53d313['query']['includeAll']){_0x29ec67[_0xaafc('0x42')]=[{'all':!![]}];}_0x29ec67=_[_0xaafc('0x3e')]({},_0x29ec67,_0x53d313[_0xaafc('0x40')]);return db[_0xaafc('0x2b')][_0xaafc('0x47')](_0x29ec67)[_0xaafc('0x25')](handleEntityNotFound(_0x1665cc,null))[_0xaafc('0x25')](respondWithResult(_0x1665cc,null))[_0xaafc('0x44')](handleError(_0x1665cc,null));};exports[_0xaafc('0x48')]=function(_0x2019c0,_0x6cfe8c){return db[_0xaafc('0x2b')]['create'](_0x2019c0[_0xaafc('0x49')],{})[_0xaafc('0x25')](respondWithResult(_0x6cfe8c,0xc9))[_0xaafc('0x44')](handleError(_0x6cfe8c,null));};exports[_0xaafc('0x24')]=function(_0x4fa528,_0x362c40){if(_0x4fa528['body']['id']){delete _0x4fa528['body']['id'];}return db['DeskField'][_0xaafc('0x47')]({'where':{'id':_0x4fa528[_0xaafc('0x46')]['id']}})[_0xaafc('0x25')](handleEntityNotFound(_0x362c40,null))['then'](saveUpdates(_0x4fa528[_0xaafc('0x49')],null))['then'](respondWithResult(_0x362c40,null))[_0xaafc('0x44')](handleError(_0x362c40,null));};exports[_0xaafc('0x4a')]=function(_0x1dcbcc,_0x5b6d20){return db[_0xaafc('0x2b')][_0xaafc('0x47')]({'where':{'id':_0x1dcbcc[_0xaafc('0x46')]['id']}})[_0xaafc('0x25')](handleEntityNotFound(_0x5b6d20,null))['then'](removeEntity(_0x5b6d20,null))[_0xaafc('0x44')](handleError(_0x5b6d20,null));};
\ No newline at end of file
+var _0x7cfe=['request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','count','Content-Range','json','apply','reject','save','update','destroy','then','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','limit','sort','where','filters','pick','filter','VIRTUAL','merge','DeskField','includeAll','include','rows','catch','show','params','options','find','create','body','eml-format','fast-json-patch'];(function(_0x5de214,_0x107e9d){var _0x4df627=function(_0x4199e1){while(--_0x4199e1){_0x5de214['push'](_0x5de214['shift']());}};_0x4df627(++_0x107e9d);}(_0x7cfe,0x94));var _0xe7cf=function(_0xb65e95,_0x55daa5){_0xb65e95=_0xb65e95-0x0;var _0x245378=_0x7cfe[_0xb65e95];return _0x245378;};'use strict';var emlformat=require(_0xe7cf('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xe7cf('0x1'));var rp=require(_0xe7cf('0x2'));var moment=require(_0xe7cf('0x3'));var BPromise=require(_0xe7cf('0x4'));var Mustache=require(_0xe7cf('0x5'));var util=require(_0xe7cf('0x6'));var path=require(_0xe7cf('0x7'));var sox=require('sox');var csv=require(_0xe7cf('0x8'));var ejs=require(_0xe7cf('0x9'));var fs=require('fs');var fs_extra=require(_0xe7cf('0xa'));var _=require(_0xe7cf('0xb'));var squel=require('squel');var crypto=require(_0xe7cf('0xc'));var jsforce=require(_0xe7cf('0xd'));var deskjs=require(_0xe7cf('0xe'));var toCsv=require('to-csv');var querystring=require(_0xe7cf('0xf'));var Papa=require(_0xe7cf('0x10'));var Redis=require(_0xe7cf('0x11'));var authService=require(_0xe7cf('0x12'));var qs=require(_0xe7cf('0x13'));var as=require(_0xe7cf('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe7cf('0x15'))(_0xe7cf('0x16'));var utils=require(_0xe7cf('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xe7cf('0x18'));var db=require(_0xe7cf('0x19'))['db'];function respondWithStatusCode(_0x5b25dc,_0x4c12be){_0x4c12be=_0x4c12be||0xcc;return function(_0x53705c){if(_0x53705c){return _0x5b25dc[_0xe7cf('0x1a')](_0x4c12be);}return _0x5b25dc['status'](_0x4c12be)[_0xe7cf('0x1b')]();};}function respondWithResult(_0x37c3c9,_0x413cf7){_0x413cf7=_0x413cf7||0xc8;return function(_0x58c826){if(_0x58c826){return _0x37c3c9[_0xe7cf('0x1c')](_0x413cf7)['json'](_0x58c826);}};}function respondWithFilteredResult(_0x58a622,_0x2985ce){return function(_0x2a7123){if(_0x2a7123){var _0x5dde78=typeof _0x2985ce[_0xe7cf('0x1d')]===_0xe7cf('0x1e')&&typeof _0x2985ce['limit']===_0xe7cf('0x1e');var _0x3816ac=_0x2a7123[_0xe7cf('0x1f')];var _0x52a9fb=_0x5dde78?0x0:_0x2985ce['offset'];var _0x4cbac4=_0x5dde78?_0x2a7123['count']:_0x2985ce[_0xe7cf('0x1d')]+_0x2985ce['limit'];var _0x2408cb;if(_0x4cbac4>=_0x3816ac){_0x4cbac4=_0x3816ac;_0x2408cb=0xc8;}else{_0x2408cb=0xce;}_0x58a622[_0xe7cf('0x1c')](_0x2408cb);return _0x58a622['set'](_0xe7cf('0x20'),_0x52a9fb+'-'+_0x4cbac4+'/'+_0x3816ac)[_0xe7cf('0x21')](_0x2a7123);}return null;};}function patchUpdates(_0x33c6bd){return function(_0x5ea7a1){try{jsonpatch[_0xe7cf('0x22')](_0x5ea7a1,_0x33c6bd,!![]);}catch(_0x6fedca){return BPromise[_0xe7cf('0x23')](_0x6fedca);}return _0x5ea7a1[_0xe7cf('0x24')]();};}function saveUpdates(_0x4204af,_0x4c6292){return function(_0x562ba1){if(_0x562ba1){return _0x562ba1[_0xe7cf('0x25')](_0x4204af)['then'](function(_0x16a52c){return _0x16a52c;});}return null;};}function removeEntity(_0x335619,_0x5459d2){return function(_0x60116d){if(_0x60116d){return _0x60116d[_0xe7cf('0x26')]()[_0xe7cf('0x27')](function(){_0x335619[_0xe7cf('0x1c')](0xcc)[_0xe7cf('0x1b')]();});}};}function handleEntityNotFound(_0x3ca966,_0x3809e7){return function(_0x37e40f){if(!_0x37e40f){_0x3ca966['sendStatus'](0x194);}return _0x37e40f;};}function handleError(_0x1a48dc,_0x342a1b){_0x342a1b=_0x342a1b||0x1f4;return function(_0x26a977){logger['error'](_0x26a977[_0xe7cf('0x28')]);if(_0x26a977[_0xe7cf('0x29')]){delete _0x26a977[_0xe7cf('0x29')];}_0x1a48dc[_0xe7cf('0x1c')](_0x342a1b)[_0xe7cf('0x2a')](_0x26a977);};}exports[_0xe7cf('0x2b')]=function(_0x23937f,_0xa07554){var _0x4d310d={},_0x53130c={},_0x21b42f={'count':0x0,'rows':[]};var _0x56a684=_[_0xe7cf('0x2c')](db['DeskField'][_0xe7cf('0x2d')],function(_0x36398f){return{'name':_0x36398f[_0xe7cf('0x2e')],'type':_0x36398f[_0xe7cf('0x2f')][_0xe7cf('0x30')]};});_0x53130c[_0xe7cf('0x31')]=_['map'](_0x56a684,_0xe7cf('0x29'));_0x53130c[_0xe7cf('0x32')]=_[_0xe7cf('0x33')](_0x23937f[_0xe7cf('0x32')]);_0x53130c['filters']=_[_0xe7cf('0x34')](_0x53130c[_0xe7cf('0x31')],_0x53130c[_0xe7cf('0x32')]);_0x4d310d[_0xe7cf('0x35')]=_[_0xe7cf('0x34')](_0x53130c['model'],qs[_0xe7cf('0x36')](_0x23937f['query']['fields']));_0x4d310d[_0xe7cf('0x35')]=_0x4d310d[_0xe7cf('0x35')][_0xe7cf('0x37')]?_0x4d310d[_0xe7cf('0x35')]:_0x53130c[_0xe7cf('0x31')];if(!_0x23937f[_0xe7cf('0x32')]['hasOwnProperty']('nolimit')){_0x4d310d[_0xe7cf('0x38')]=qs[_0xe7cf('0x38')](_0x23937f[_0xe7cf('0x32')][_0xe7cf('0x38')]);_0x4d310d['offset']=qs[_0xe7cf('0x1d')](_0x23937f['query'][_0xe7cf('0x1d')]);}_0x4d310d['order']=qs[_0xe7cf('0x39')](_0x23937f[_0xe7cf('0x32')][_0xe7cf('0x39')]);_0x4d310d[_0xe7cf('0x3a')]=qs[_0xe7cf('0x3b')](_[_0xe7cf('0x3c')](_0x23937f[_0xe7cf('0x32')],_0x53130c[_0xe7cf('0x3b')]),_0x56a684);if(_0x23937f[_0xe7cf('0x32')][_0xe7cf('0x3d')]){_0x4d310d[_0xe7cf('0x3a')]=_['merge'](_0x4d310d['where'],{'$or':_[_0xe7cf('0x2c')](_0x56a684,function(_0xe3c124){if(_0xe3c124[_0xe7cf('0x2f')]!==_0xe7cf('0x3e')){var _0xc86fbd={};_0xc86fbd[_0xe3c124[_0xe7cf('0x29')]]={'$like':'%'+_0x23937f[_0xe7cf('0x32')][_0xe7cf('0x3d')]+'%'};return _0xc86fbd;}})});}_0x4d310d=_[_0xe7cf('0x3f')]({},_0x4d310d,_0x23937f['options']);var _0x5c1e1c={'where':_0x4d310d[_0xe7cf('0x3a')]};return db[_0xe7cf('0x40')][_0xe7cf('0x1f')](_0x5c1e1c)['then'](function(_0x53f6b6){_0x21b42f[_0xe7cf('0x1f')]=_0x53f6b6;if(_0x23937f[_0xe7cf('0x32')][_0xe7cf('0x41')]){_0x4d310d[_0xe7cf('0x42')]=[{'all':!![]}];}return db[_0xe7cf('0x40')]['findAll'](_0x4d310d);})[_0xe7cf('0x27')](function(_0x266bcb){_0x21b42f[_0xe7cf('0x43')]=_0x266bcb;return _0x21b42f;})[_0xe7cf('0x27')](respondWithFilteredResult(_0xa07554,_0x4d310d))[_0xe7cf('0x44')](handleError(_0xa07554,null));};exports[_0xe7cf('0x45')]=function(_0x317d99,_0x636a97){var _0x9e8d15={'raw':!![],'where':{'id':_0x317d99[_0xe7cf('0x46')]['id']}},_0x2ad989={};_0x2ad989[_0xe7cf('0x31')]=_[_0xe7cf('0x33')](db['DeskField'][_0xe7cf('0x2d')]);_0x2ad989[_0xe7cf('0x32')]=_[_0xe7cf('0x33')](_0x317d99[_0xe7cf('0x32')]);_0x2ad989[_0xe7cf('0x3b')]=_['intersection'](_0x2ad989[_0xe7cf('0x31')],_0x2ad989[_0xe7cf('0x32')]);_0x9e8d15[_0xe7cf('0x35')]=_[_0xe7cf('0x34')](_0x2ad989[_0xe7cf('0x31')],qs[_0xe7cf('0x36')](_0x317d99[_0xe7cf('0x32')][_0xe7cf('0x36')]));_0x9e8d15[_0xe7cf('0x35')]=_0x9e8d15[_0xe7cf('0x35')][_0xe7cf('0x37')]?_0x9e8d15['attributes']:_0x2ad989['model'];if(_0x317d99[_0xe7cf('0x32')][_0xe7cf('0x41')]){_0x9e8d15[_0xe7cf('0x42')]=[{'all':!![]}];}_0x9e8d15=_[_0xe7cf('0x3f')]({},_0x9e8d15,_0x317d99[_0xe7cf('0x47')]);return db['DeskField'][_0xe7cf('0x48')](_0x9e8d15)[_0xe7cf('0x27')](handleEntityNotFound(_0x636a97,null))['then'](respondWithResult(_0x636a97,null))[_0xe7cf('0x44')](handleError(_0x636a97,null));};exports[_0xe7cf('0x49')]=function(_0x324c47,_0x8474){return db[_0xe7cf('0x40')]['create'](_0x324c47[_0xe7cf('0x4a')],{})[_0xe7cf('0x27')](respondWithResult(_0x8474,0xc9))[_0xe7cf('0x44')](handleError(_0x8474,null));};exports[_0xe7cf('0x25')]=function(_0x5c2ad8,_0x2128ff){if(_0x5c2ad8['body']['id']){delete _0x5c2ad8[_0xe7cf('0x4a')]['id'];}return db[_0xe7cf('0x40')][_0xe7cf('0x48')]({'where':{'id':_0x5c2ad8[_0xe7cf('0x46')]['id']}})[_0xe7cf('0x27')](handleEntityNotFound(_0x2128ff,null))['then'](saveUpdates(_0x5c2ad8[_0xe7cf('0x4a')],null))['then'](respondWithResult(_0x2128ff,null))['catch'](handleError(_0x2128ff,null));};exports[_0xe7cf('0x26')]=function(_0x4052e2,_0x267d60){return db['DeskField'][_0xe7cf('0x48')]({'where':{'id':_0x4052e2['params']['id']}})['then'](handleEntityNotFound(_0x267d60,null))[_0xe7cf('0x27')](removeEntity(_0x267d60,null))[_0xe7cf('0x44')](handleError(_0x267d60,null));};
\ No newline at end of file
index 545edf9..78979e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4741=['FieldId','lodash','util','bluebird','request-promise','path','./intDeskField.attributes','define','DeskField','int_desk_fields','desk_unique_index','idField'];(function(_0x134d5e,_0x2a47d8){var _0x1e166a=function(_0x53f10d){while(--_0x53f10d){_0x134d5e['push'](_0x134d5e['shift']());}};_0x1e166a(++_0x2a47d8);}(_0x4741,0x109));var _0x1474=function(_0x258e20,_0x493043){_0x258e20=_0x258e20-0x0;var _0x154da1=_0x4741[_0x258e20];return _0x154da1;};'use strict';var _=require(_0x1474('0x0'));var util=require(_0x1474('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x1474('0x2'));var rp=require(_0x1474('0x3'));var fs=require('fs');var path=require(_0x1474('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x1474('0x5'));module['exports']=function(_0x4865a5,_0x252d8c){return _0x4865a5[_0x1474('0x6')](_0x1474('0x7'),attributes,{'tableName':_0x1474('0x8'),'paranoid':![],'indexes':[{'name':_0x1474('0x9'),'fields':[_0x1474('0xa'),_0x1474('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe955=['idField','FieldId','lodash','api','bluebird','request-promise','path','../../config/environment','./intDeskField.attributes','exports','define','DeskField','desk_unique_index'];(function(_0xe39601,_0xbf94f1){var _0x204bd5=function(_0x26cf69){while(--_0x26cf69){_0xe39601['push'](_0xe39601['shift']());}};_0x204bd5(++_0xbf94f1);}(_0xe955,0x17b));var _0x5e95=function(_0x3149b3,_0x3d9bf1){_0x3149b3=_0x3149b3-0x0;var _0x37f4fb=_0xe955[_0x3149b3];return _0x37f4fb;};'use strict';var _=require(_0x5e95('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x5e95('0x1'));var moment=require('moment');var BPromise=require(_0x5e95('0x2'));var rp=require(_0x5e95('0x3'));var fs=require('fs');var path=require(_0x5e95('0x4'));var rimraf=require('rimraf');var config=require(_0x5e95('0x5'));var attributes=require(_0x5e95('0x6'));module[_0x5e95('0x7')]=function(_0x4c6bc1,_0x363ded){return _0x4c6bc1[_0x5e95('0x8')](_0x5e95('0x9'),attributes,{'tableName':'int_desk_fields','paranoid':![],'indexes':[{'name':_0x5e95('0xa'),'fields':[_0x5e95('0xb'),_0x5e95('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index b483c65..cba43d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99d5=['../../config/environment','jayson/promise','http','request','then','DeskField,\x20%s,\x20%s','request\x20sent','DeskField,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0xe456c6,_0x43843f){var _0x4c3e18=function(_0x4c6878){while(--_0x4c6878){_0xe456c6['push'](_0xe456c6['shift']());}};_0x4c3e18(++_0x43843f);}(_0x99d5,0x139));var _0x599d=function(_0x43e206,_0x5b7ae9){_0x43e206=_0x43e206-0x0;var _0x308ffd=_0x99d5[_0x43e206];return _0x308ffd;};'use strict';var _=require(_0x599d('0x0'));var util=require(_0x599d('0x1'));var moment=require(_0x599d('0x2'));var BPromise=require('bluebird');var rs=require(_0x599d('0x3'));var fs=require('fs');var Redis=require(_0x599d('0x4'));var db=require(_0x599d('0x5'))['db'];var utils=require(_0x599d('0x6'));var logger=require(_0x599d('0x7'))(_0x599d('0x8'));var config=require(_0x599d('0x9'));var jayson=require(_0x599d('0xa'));var client=jayson['client'][_0x599d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xc57c0f,_0x68fce9,_0x14970a){return new BPromise(function(_0x45e83c,_0x519ced){return client[_0x599d('0xc')](_0xc57c0f,_0x14970a)[_0x599d('0xd')](function(_0x1e2d9e){logger['info'](_0x599d('0xe'),_0x68fce9,_0x599d('0xf'));logger['debug'](_0x599d('0x10'),_0x68fce9,_0x599d('0xf'),JSON['stringify'](_0x1e2d9e));if(_0x1e2d9e[_0x599d('0x11')]){if(_0x1e2d9e['error'][_0x599d('0x12')]===0x1f4){logger[_0x599d('0x11')](_0x599d('0xe'),_0x68fce9,_0x1e2d9e[_0x599d('0x11')]['message']);return _0x519ced(_0x1e2d9e['error'][_0x599d('0x13')]);}logger[_0x599d('0x11')](_0x599d('0xe'),_0x68fce9,_0x1e2d9e['error'][_0x599d('0x13')]);return _0x45e83c(_0x1e2d9e[_0x599d('0x11')][_0x599d('0x13')]);}else{logger[_0x599d('0x14')](_0x599d('0xe'),_0x68fce9,_0x599d('0xf'));_0x45e83c(_0x1e2d9e[_0x599d('0x15')]['message']);}})[_0x599d('0x16')](function(_0x24f550){logger['error'](_0x599d('0xe'),_0x68fce9,_0x24f550);_0x519ced(_0x24f550);});});}
\ No newline at end of file
+var _0x9fe7=['util','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','client','http','request','then','info','DeskField,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','lodash'];(function(_0x2f9ae3,_0x3f01d1){var _0x3d7c59=function(_0x268bbc){while(--_0x268bbc){_0x2f9ae3['push'](_0x2f9ae3['shift']());}};_0x3d7c59(++_0x3f01d1);}(_0x9fe7,0xb3));var _0x79fe=function(_0x5736a1,_0x36b7a1){_0x5736a1=_0x5736a1-0x0;var _0x3de050=_0x9fe7[_0x5736a1];return _0x3de050;};'use strict';var _=require(_0x79fe('0x0'));var util=require(_0x79fe('0x1'));var moment=require('moment');var BPromise=require(_0x79fe('0x2'));var rs=require(_0x79fe('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x79fe('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x79fe('0x5'));var config=require(_0x79fe('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x79fe('0x7')][_0x79fe('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2d00bd,_0x48f3ac,_0x4be6f0){return new BPromise(function(_0x17d563,_0x6b2554){return client[_0x79fe('0x9')](_0x2d00bd,_0x4be6f0)[_0x79fe('0xa')](function(_0x5c7abb){logger[_0x79fe('0xb')](_0x79fe('0xc'),_0x48f3ac,'request\x20sent');logger[_0x79fe('0xd')]('DeskField,\x20%s,\x20%s,\x20%s',_0x48f3ac,_0x79fe('0xe'),JSON[_0x79fe('0xf')](_0x5c7abb));if(_0x5c7abb['error']){if(_0x5c7abb[_0x79fe('0x10')][_0x79fe('0x11')]===0x1f4){logger[_0x79fe('0x10')](_0x79fe('0xc'),_0x48f3ac,_0x5c7abb[_0x79fe('0x10')][_0x79fe('0x12')]);return _0x6b2554(_0x5c7abb[_0x79fe('0x10')]['message']);}logger['error']('DeskField,\x20%s,\x20%s',_0x48f3ac,_0x5c7abb['error'][_0x79fe('0x12')]);return _0x17d563(_0x5c7abb['error'][_0x79fe('0x12')]);}else{logger[_0x79fe('0xb')]('DeskField,\x20%s,\x20%s',_0x48f3ac,_0x79fe('0xe'));_0x17d563(_0x5c7abb['result'][_0x79fe('0x12')]);}})[_0x79fe('0x13')](function(_0x249d87){logger[_0x79fe('0x10')]('DeskField,\x20%s,\x20%s',_0x48f3ac,_0x249d87);_0x6b2554(_0x249d87);});});}
\ No newline at end of file
index c6331a8..4297fdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc35b=['update','delete','destroy','exports','multer','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','get','isAuthenticated','index','/:id','getFields','post','create','/:id/configurations','addConfiguration','put'];(function(_0x24afdf,_0x29f12c){var _0x5ab3d7=function(_0x4be256){while(--_0x4be256){_0x24afdf['push'](_0x24afdf['shift']());}};_0x5ab3d7(++_0x29f12c);}(_0xc35b,0x1a6));var _0xbc35=function(_0x3826ad,_0x49a30d){_0x3826ad=_0x3826ad-0x0;var _0x17b900=_0xc35b[_0x3826ad];return _0x17b900;};'use strict';var multer=require(_0xbc35('0x0'));var util=require(_0xbc35('0x1'));var path=require(_0xbc35('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xbc35('0x3'));var auth=require(_0xbc35('0x4'));var interaction=require(_0xbc35('0x5'));var config=require(_0xbc35('0x6'));var controller=require(_0xbc35('0x7'));router[_0xbc35('0x8')]('/',auth[_0xbc35('0x9')](),controller[_0xbc35('0xa')]);router[_0xbc35('0x8')](_0xbc35('0xb'),auth[_0xbc35('0x9')](),controller['show']);router['get']('/:id/configurations',auth[_0xbc35('0x9')](),controller['getConfigurations']);router[_0xbc35('0x8')]('/:id/fields',auth['isAuthenticated'](),controller[_0xbc35('0xc')]);router[_0xbc35('0xd')]('/',auth[_0xbc35('0x9')](),controller[_0xbc35('0xe')]);router[_0xbc35('0xd')](_0xbc35('0xf'),auth[_0xbc35('0x9')](),controller[_0xbc35('0x10')]);router[_0xbc35('0x11')]('/:id',auth[_0xbc35('0x9')](),controller[_0xbc35('0x12')]);router[_0xbc35('0x13')](_0xbc35('0xb'),auth[_0xbc35('0x9')](),controller[_0xbc35('0x14')]);module[_0xbc35('0x15')]=router;
\ No newline at end of file
+var _0x7086=['isAuthenticated','show','/:id/configurations','post','create','addConfiguration','put','/:id','update','delete','destroy','exports','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','get'];(function(_0x5ac84c,_0x287781){var _0x3c53d2=function(_0x40cde0){while(--_0x40cde0){_0x5ac84c['push'](_0x5ac84c['shift']());}};_0x3c53d2(++_0x287781);}(_0x7086,0x15c));var _0x6708=function(_0x5c5d11,_0x3b28df){_0x5c5d11=_0x5c5d11-0x0;var _0x211cb9=_0x7086[_0x5c5d11];return _0x211cb9;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6708('0x0'));var timeout=require('connect-timeout');var express=require(_0x6708('0x1'));var router=express[_0x6708('0x2')]();var fs_extra=require(_0x6708('0x3'));var auth=require(_0x6708('0x4'));var interaction=require(_0x6708('0x5'));var config=require(_0x6708('0x6'));var controller=require(_0x6708('0x7'));router[_0x6708('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x6708('0x8')]('/:id',auth[_0x6708('0x9')](),controller[_0x6708('0xa')]);router[_0x6708('0x8')](_0x6708('0xb'),auth['isAuthenticated'](),controller['getConfigurations']);router[_0x6708('0x8')]('/:id/fields',auth[_0x6708('0x9')](),controller['getFields']);router[_0x6708('0xc')]('/',auth[_0x6708('0x9')](),controller[_0x6708('0xd')]);router[_0x6708('0xc')](_0x6708('0xb'),auth['isAuthenticated'](),controller[_0x6708('0xe')]);router[_0x6708('0xf')](_0x6708('0x10'),auth['isAuthenticated'](),controller[_0x6708('0x11')]);router[_0x6708('0x12')](_0x6708('0x10'),auth['isAuthenticated'](),controller[_0x6708('0x13')]);module[_0x6708('0x14')]=router;
\ No newline at end of file
index 6d79116..7efe347 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73b1=['exports','STRING'];(function(_0x5179e9,_0xf1e593){var _0x31594b=function(_0x3b1d08){while(--_0x3b1d08){_0x5179e9['push'](_0x5179e9['shift']());}};_0x31594b(++_0xf1e593);}(_0x73b1,0x160));var _0x173b=function(_0x1f8a6d,_0x2a753d){_0x1f8a6d=_0x1f8a6d-0x0;var _0x1dca06=_0x73b1[_0x1f8a6d];return _0x1dca06;};'use strict';var Sequelize=require('sequelize');module[_0x173b('0x0')]={'name':{'type':Sequelize[_0x173b('0x1')]},'username':{'type':Sequelize[_0x173b('0x1')]},'password':{'type':Sequelize[_0x173b('0x1')]},'remoteUri':{'type':Sequelize[_0x173b('0x1')]},'tenantId':{'type':Sequelize[_0x173b('0x1')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0x173b('0x1')]},'serverUrl':{'type':Sequelize[_0x173b('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xef0a=['exports','STRING','sequelize'];(function(_0x386a47,_0xd18e13){var _0x1ce25e=function(_0x197ae5){while(--_0x197ae5){_0x386a47['push'](_0x386a47['shift']());}};_0x1ce25e(++_0xd18e13);}(_0xef0a,0xdd));var _0xaef0=function(_0x21d630,_0x3298a9){_0x21d630=_0x21d630-0x0;var _0x5b91f3=_0xef0a[_0x21d630];return _0x5b91f3;};'use strict';var Sequelize=require(_0xaef0('0x0'));module[_0xaef0('0x1')]={'name':{'type':Sequelize[_0xaef0('0x2')]},'username':{'type':Sequelize[_0xaef0('0x2')]},'password':{'type':Sequelize[_0xaef0('0x2')]},'remoteUri':{'type':Sequelize[_0xaef0('0x2')]},'tenantId':{'type':Sequelize[_0xaef0('0x2')]},'clientId':{'type':Sequelize[_0xaef0('0x2')]},'clientSecret':{'type':Sequelize[_0xaef0('0x2')]},'serverUrl':{'type':Sequelize[_0xaef0('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xaef0('0x2')]}};
\ No newline at end of file
index 1b2dfec..28ca4e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec39=['TrueOption','FalseOption',')/Microsoft.Dynamics.CRM.','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','lodash','squel','crypto','desk.js','to-csv','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','undefined','count','offset','set','Content-Range','save','update','then','destroy','end','sendStatus','error','stack','name','send','index','map','Dynamics365Account','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','show','params','length','catch','create','body','find','getConfigurations','findOne','Dynamics365Configuration','order','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','channel','ticketType','incident','Incident','title','description','customerid','caseorigincode','subject','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contactidyominame','contractdetailidname','createdbyname','createdbyyominame','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_url','escalatedon','exchangerate','followupby','importsequencenumber','influencescore','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','overriddencreatedon','owneridname','owneridtype','owneridyominame','parentcaseidname','primarycontactidname','primarycontactidyominame','prioritycodename','productidname','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','slaname','socialprofileidname','statecode','statuscode','subjectidname','transactioncurrencyidname','utcconversiontimezonecode','concat','username','password','remoteUri','tenantId','clientId','slice','lastIndexOf','format','POST','https://login.microsoftonline.com/','/oauth2/token','GET','Bearer\x20','value','MetadataId',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','4.0','remove','includes','LogicalName','forEach','@odata.type','PicklistAttributeMetadata','push','isNil','BooleanAttributeMetadata','all','StringAttributeMetadata','BigIntAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','StateAttributeMetadata','statusCode','test','Wrong\x20credentials',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Options','Label','UserLocalizedLabel','Value','DisplayName','EntityDefinitions(',')/Attributes(',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)'];(function(_0x1e3c32,_0x1c493d){var _0x11216d=function(_0x5c79f5){while(--_0x5c79f5){_0x1e3c32['push'](_0x1e3c32['shift']());}};_0x11216d(++_0x1c493d);}(_0xec39,0x19f));var _0x9ec3=function(_0x5b8cbb,_0x3908e0){_0x5b8cbb=_0x5b8cbb-0x0;var _0x2be492=_0xec39[_0x5b8cbb];return _0x2be492;};'use strict';var emlformat=require(_0x9ec3('0x0'));var rimraf=require(_0x9ec3('0x1'));var zipdir=require(_0x9ec3('0x2'));var jsonpatch=require(_0x9ec3('0x3'));var rp=require(_0x9ec3('0x4'));var moment=require(_0x9ec3('0x5'));var BPromise=require(_0x9ec3('0x6'));var Mustache=require('mustache');var util=require(_0x9ec3('0x7'));var path=require(_0x9ec3('0x8'));var sox=require(_0x9ec3('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9ec3('0xa'));var squel=require(_0x9ec3('0xb'));var crypto=require(_0x9ec3('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x9ec3('0xd'));var toCsv=require(_0x9ec3('0xe'));var querystring=require(_0x9ec3('0xf'));var Papa=require(_0x9ec3('0x10'));var Redis=require(_0x9ec3('0x11'));var authService=require(_0x9ec3('0x12'));var qs=require(_0x9ec3('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9ec3('0x14'));var logger=require(_0x9ec3('0x15'))(_0x9ec3('0x16'));var utils=require(_0x9ec3('0x17'));var config=require(_0x9ec3('0x18'));var licenseUtil=require(_0x9ec3('0x19'));var db=require(_0x9ec3('0x1a'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x2790dc,_0x555fc4){_0x555fc4=_0x555fc4||0xcc;return function(_0x1bd7e6){if(_0x1bd7e6){return _0x2790dc['sendStatus'](_0x555fc4);}return _0x2790dc[_0x9ec3('0x1b')](_0x555fc4)['end']();};}function respondWithResult(_0x471112,_0x23ac30){_0x23ac30=_0x23ac30||0xc8;return function(_0xcbb897){if(_0xcbb897){return _0x471112[_0x9ec3('0x1b')](_0x23ac30)[_0x9ec3('0x1c')](_0xcbb897);}};}function respondWithFilteredResult(_0x2c0ad5,_0xb0af54){return function(_0x21c2db){if(_0x21c2db){var _0x453010=typeof _0xb0af54['offset']===_0x9ec3('0x1d')&&typeof _0xb0af54['limit']==='undefined';var _0x2ae9bd=_0x21c2db[_0x9ec3('0x1e')];var _0xa1e4a5=_0x453010?0x0:_0xb0af54[_0x9ec3('0x1f')];var _0x3af3db=_0x453010?_0x21c2db['count']:_0xb0af54[_0x9ec3('0x1f')]+_0xb0af54['limit'];var _0x38343b;if(_0x3af3db>=_0x2ae9bd){_0x3af3db=_0x2ae9bd;_0x38343b=0xc8;}else{_0x38343b=0xce;}_0x2c0ad5['status'](_0x38343b);return _0x2c0ad5[_0x9ec3('0x20')](_0x9ec3('0x21'),_0xa1e4a5+'-'+_0x3af3db+'/'+_0x2ae9bd)[_0x9ec3('0x1c')](_0x21c2db);}return null;};}function patchUpdates(_0x5df461){return function(_0x70227a){try{jsonpatch['apply'](_0x70227a,_0x5df461,!![]);}catch(_0x6c5748){return BPromise['reject'](_0x6c5748);}return _0x70227a[_0x9ec3('0x22')]();};}function saveUpdates(_0x15f15a,_0x149743){return function(_0xdc6ed0){if(_0xdc6ed0){return _0xdc6ed0[_0x9ec3('0x23')](_0x15f15a)[_0x9ec3('0x24')](function(_0x20de22){return _0x20de22;});}return null;};}function removeEntity(_0x5efa81,_0x22846c){return function(_0x17af83){if(_0x17af83){return _0x17af83[_0x9ec3('0x25')]()[_0x9ec3('0x24')](function(){_0x5efa81[_0x9ec3('0x1b')](0xcc)[_0x9ec3('0x26')]();});}};}function handleEntityNotFound(_0x2db57b,_0x4782c9){return function(_0x12accd){if(!_0x12accd){_0x2db57b[_0x9ec3('0x27')](0x194);}return _0x12accd;};}function handleError(_0xb99216,_0x58d6fe){_0x58d6fe=_0x58d6fe||0x1f4;return function(_0x469313){logger[_0x9ec3('0x28')](_0x469313[_0x9ec3('0x29')]);if(_0x469313[_0x9ec3('0x2a')]){delete _0x469313['name'];}_0xb99216[_0x9ec3('0x1b')](_0x58d6fe)[_0x9ec3('0x2b')](_0x469313);};}exports[_0x9ec3('0x2c')]=function(_0x5b5fd3,_0x257269){var _0x1a45c8={},_0x3d67be={},_0x1575b6={'count':0x0,'rows':[]};var _0xa91ee5=_[_0x9ec3('0x2d')](db[_0x9ec3('0x2e')][_0x9ec3('0x2f')],function(_0x1599f4){return{'name':_0x1599f4[_0x9ec3('0x30')],'type':_0x1599f4[_0x9ec3('0x31')][_0x9ec3('0x32')]};});_0x3d67be[_0x9ec3('0x33')]=_['map'](_0xa91ee5,'name');_0x3d67be['query']=_[_0x9ec3('0x34')](_0x5b5fd3[_0x9ec3('0x35')]);_0x3d67be[_0x9ec3('0x36')]=_[_0x9ec3('0x37')](_0x3d67be[_0x9ec3('0x33')],_0x3d67be[_0x9ec3('0x35')]);_0x1a45c8[_0x9ec3('0x38')]=_['intersection'](_0x3d67be[_0x9ec3('0x33')],qs[_0x9ec3('0x39')](_0x5b5fd3[_0x9ec3('0x35')]['fields']));_0x1a45c8[_0x9ec3('0x38')]=_0x1a45c8[_0x9ec3('0x38')]['length']?_0x1a45c8[_0x9ec3('0x38')]:_0x3d67be[_0x9ec3('0x33')];if(!_0x5b5fd3[_0x9ec3('0x35')][_0x9ec3('0x3a')](_0x9ec3('0x3b'))){_0x1a45c8[_0x9ec3('0x3c')]=qs[_0x9ec3('0x3c')](_0x5b5fd3['query'][_0x9ec3('0x3c')]);_0x1a45c8[_0x9ec3('0x1f')]=qs['offset'](_0x5b5fd3['query'][_0x9ec3('0x1f')]);}_0x1a45c8['order']=qs[_0x9ec3('0x3d')](_0x5b5fd3[_0x9ec3('0x35')][_0x9ec3('0x3d')]);_0x1a45c8[_0x9ec3('0x3e')]=qs['filters'](_[_0x9ec3('0x3f')](_0x5b5fd3[_0x9ec3('0x35')],_0x3d67be[_0x9ec3('0x36')]),_0xa91ee5);if(_0x5b5fd3[_0x9ec3('0x35')][_0x9ec3('0x40')]){_0x1a45c8[_0x9ec3('0x3e')]=_['merge'](_0x1a45c8['where'],{'$or':_['map'](_0xa91ee5,function(_0xc1fe40){if(_0xc1fe40[_0x9ec3('0x31')]!==_0x9ec3('0x41')){var _0x2ab229={};_0x2ab229[_0xc1fe40[_0x9ec3('0x2a')]]={'$like':'%'+_0x5b5fd3[_0x9ec3('0x35')]['filter']+'%'};return _0x2ab229;}})});}_0x1a45c8=_[_0x9ec3('0x42')]({},_0x1a45c8,_0x5b5fd3[_0x9ec3('0x43')]);var _0x58ed33={'where':_0x1a45c8[_0x9ec3('0x3e')]};return db[_0x9ec3('0x2e')][_0x9ec3('0x1e')](_0x58ed33)[_0x9ec3('0x24')](function(_0x4cc99b){_0x1575b6[_0x9ec3('0x1e')]=_0x4cc99b;if(_0x5b5fd3['query'][_0x9ec3('0x44')]){_0x1a45c8[_0x9ec3('0x45')]=[{'all':!![]}];}return db[_0x9ec3('0x2e')][_0x9ec3('0x46')](_0x1a45c8);})[_0x9ec3('0x24')](function(_0x489cbf){_0x1575b6['rows']=_0x489cbf;return _0x1575b6;})[_0x9ec3('0x24')](respondWithFilteredResult(_0x257269,_0x1a45c8))['catch'](handleError(_0x257269,null));};exports[_0x9ec3('0x47')]=function(_0x4c4144,_0x3d54e4){var _0x4e279c={'raw':![],'where':{'id':_0x4c4144[_0x9ec3('0x48')]['id']}},_0x14b1f1={};_0x14b1f1['model']=_[_0x9ec3('0x34')](db['Dynamics365Account'][_0x9ec3('0x2f')]);_0x14b1f1[_0x9ec3('0x35')]=_['keys'](_0x4c4144[_0x9ec3('0x35')]);_0x14b1f1[_0x9ec3('0x36')]=_[_0x9ec3('0x37')](_0x14b1f1['model'],_0x14b1f1[_0x9ec3('0x35')]);_0x4e279c[_0x9ec3('0x38')]=_['intersection'](_0x14b1f1[_0x9ec3('0x33')],qs[_0x9ec3('0x39')](_0x4c4144[_0x9ec3('0x35')][_0x9ec3('0x39')]));_0x4e279c[_0x9ec3('0x38')]=_0x4e279c[_0x9ec3('0x38')][_0x9ec3('0x49')]?_0x4e279c[_0x9ec3('0x38')]:_0x14b1f1['model'];if(_0x4c4144['query'][_0x9ec3('0x44')]){_0x4e279c[_0x9ec3('0x45')]=[{'all':!![]}];}_0x4e279c=_['merge']({},_0x4e279c,_0x4c4144[_0x9ec3('0x43')]);return db[_0x9ec3('0x2e')]['find'](_0x4e279c)[_0x9ec3('0x24')](handleEntityNotFound(_0x3d54e4,null))[_0x9ec3('0x24')](respondWithResult(_0x3d54e4,null))[_0x9ec3('0x4a')](handleError(_0x3d54e4,null));};exports[_0x9ec3('0x4b')]=function(_0x278f1a,_0x1b9346){return db[_0x9ec3('0x2e')][_0x9ec3('0x4b')](_0x278f1a[_0x9ec3('0x4c')],{})[_0x9ec3('0x24')](respondWithResult(_0x1b9346,0xc9))[_0x9ec3('0x4a')](handleError(_0x1b9346,null));};exports[_0x9ec3('0x23')]=function(_0x284088,_0x5717a7){if(_0x284088[_0x9ec3('0x4c')]['id']){delete _0x284088['body']['id'];}return db[_0x9ec3('0x2e')][_0x9ec3('0x4d')]({'where':{'id':_0x284088[_0x9ec3('0x48')]['id']}})['then'](handleEntityNotFound(_0x5717a7,null))['then'](saveUpdates(_0x284088['body'],null))[_0x9ec3('0x24')](respondWithResult(_0x5717a7,null))[_0x9ec3('0x4a')](handleError(_0x5717a7,null));};exports[_0x9ec3('0x25')]=function(_0x596e73,_0x4f2a2c){return db['Dynamics365Account'][_0x9ec3('0x4d')]({'where':{'id':_0x596e73[_0x9ec3('0x48')]['id']}})[_0x9ec3('0x24')](handleEntityNotFound(_0x4f2a2c,null))[_0x9ec3('0x24')](removeEntity(_0x4f2a2c,null))[_0x9ec3('0x4a')](handleError(_0x4f2a2c,null));};exports[_0x9ec3('0x4e')]=function(_0x49ac7e,_0x406e0d,_0x309488){var _0x1743da={};var _0xc4199b={};var _0x2eaa2d;var _0x6eae48;return db[_0x9ec3('0x2e')][_0x9ec3('0x4f')]({'where':{'id':_0x49ac7e[_0x9ec3('0x48')]['id']}})[_0x9ec3('0x24')](handleEntityNotFound(_0x406e0d,null))[_0x9ec3('0x24')](function(_0x4c10c2){if(_0x4c10c2){_0x2eaa2d=_0x4c10c2;_0xc4199b['model']=_[_0x9ec3('0x34')](db[_0x9ec3('0x50')]['rawAttributes']);_0xc4199b[_0x9ec3('0x35')]=_['keys'](_0x49ac7e['query']);_0xc4199b[_0x9ec3('0x36')]=_[_0x9ec3('0x37')](_0xc4199b['model'],_0xc4199b[_0x9ec3('0x35')]);_0x1743da[_0x9ec3('0x38')]=_[_0x9ec3('0x37')](_0xc4199b[_0x9ec3('0x33')],qs[_0x9ec3('0x39')](_0x49ac7e['query'][_0x9ec3('0x39')]));_0x1743da[_0x9ec3('0x38')]=_0x1743da['attributes'][_0x9ec3('0x49')]?_0x1743da['attributes']:_0xc4199b[_0x9ec3('0x33')];_0x1743da[_0x9ec3('0x51')]=qs[_0x9ec3('0x3d')](_0x49ac7e[_0x9ec3('0x35')][_0x9ec3('0x3d')]);_0x1743da[_0x9ec3('0x3e')]=qs[_0x9ec3('0x36')](_['pick'](_0x49ac7e['query'],_0xc4199b['filters']));if(_0x49ac7e[_0x9ec3('0x35')][_0x9ec3('0x40')]){_0x1743da[_0x9ec3('0x3e')]=_[_0x9ec3('0x42')](_0x1743da[_0x9ec3('0x3e')],{'$or':_[_0x9ec3('0x2d')](_0x1743da[_0x9ec3('0x38')],function(_0x2921dc){var _0x37711b={};_0x37711b[_0x2921dc]={'$like':'%'+_0x49ac7e[_0x9ec3('0x35')][_0x9ec3('0x40')]+'%'};return _0x37711b;})});}_0x1743da=_[_0x9ec3('0x42')]({},_0x1743da,_0x49ac7e[_0x9ec3('0x43')]);return _0x2eaa2d[_0x9ec3('0x4e')](_0x1743da);}})[_0x9ec3('0x24')](function(_0x5ba3e3){if(_0x5ba3e3){_0x6eae48=_0x5ba3e3['length'];if(!_0x49ac7e[_0x9ec3('0x35')][_0x9ec3('0x3a')](_0x9ec3('0x3b'))){_0x1743da[_0x9ec3('0x3c')]=qs[_0x9ec3('0x3c')](_0x49ac7e[_0x9ec3('0x35')]['limit']);_0x1743da[_0x9ec3('0x1f')]=qs['offset'](_0x49ac7e[_0x9ec3('0x35')][_0x9ec3('0x1f')]);}return _0x2eaa2d[_0x9ec3('0x4e')](_0x1743da);}})[_0x9ec3('0x24')](function(_0x568f61){if(_0x568f61){return _0x568f61?{'count':_0x6eae48,'rows':_0x568f61}:null;}})['then'](respondWithResult(_0x406e0d,null))[_0x9ec3('0x4a')](handleError(_0x406e0d,null));};exports['addConfiguration']=function(_0x30dc77,_0x1aac06,_0x5372b9){if(_0x30dc77[_0x9ec3('0x4c')]['id']){delete _0x30dc77['body']['id'];}return db[_0x9ec3('0x2e')][_0x9ec3('0x4f')]({'where':{'id':_0x30dc77[_0x9ec3('0x48')]['id']}})[_0x9ec3('0x24')](handleEntityNotFound(_0x1aac06,null))[_0x9ec3('0x24')](function(_0x56f621){if(_0x56f621){_0x30dc77['body'][_0x9ec3('0x52')]=_0x56f621['id'];_0x30dc77[_0x9ec3('0x4c')][_0x9ec3('0x53')]=integrations[_0x9ec3('0x54')](_0x30dc77['body']['channel'],_0x30dc77[_0x9ec3('0x4c')][_0x9ec3('0x31')]);_0x30dc77[_0x9ec3('0x4c')][_0x9ec3('0x55')]=integrations[_0x9ec3('0x56')](_0x30dc77[_0x9ec3('0x4c')][_0x9ec3('0x57')],_0x30dc77['body'][_0x9ec3('0x31')]);return db[_0x9ec3('0x50')]['create'](_0x30dc77[_0x9ec3('0x4c')],{'include':[{'model':db['Dynamics365Field'],'as':_0x9ec3('0x53')},{'model':db['Dynamics365Field'],'as':_0x9ec3('0x55')}]});}return null;})[_0x9ec3('0x24')](respondWithResult(_0x1aac06,null))[_0x9ec3('0x4a')](handleError(_0x1aac06,null));};exports['getFields']=function(_0x4e9f91,_0x379841,_0x2c85e8){var _0x503b6a=_0x4e9f91[_0x9ec3('0x35')][_0x9ec3('0x58')];var _0x3f3e2b=_0x503b6a===_0x9ec3('0x59')?_0x9ec3('0x5a'):'PhoneCall';var _0x2bcc6e='';var _0x27d979='';var _0x44ab6d='';var _0xcf4532='';var _0x44e23d='';var _0x2025da='';var _0x2a2363='';var _0x1cb5fa='';var _0x1edcda=[_0x9ec3('0x5b'),_0x9ec3('0x5c'),_0x9ec3('0x5d'),'ownerid',_0x9ec3('0x5e'),_0x9ec3('0x5f'),'phonenumber',_0x9ec3('0x60'),_0x9ec3('0x61'),_0x9ec3('0x62')];var _0x3d4f76=[_0x9ec3('0x63'),_0x9ec3('0x64'),_0x9ec3('0x65'),_0x9ec3('0x66'),_0x9ec3('0x67'),_0x9ec3('0x68'),_0x9ec3('0x69'),'contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame',_0x9ec3('0x6a'),_0x9ec3('0x6b'),'createdon',_0x9ec3('0x6c'),_0x9ec3('0x6d'),_0x9ec3('0x6e'),_0x9ec3('0x6f'),_0x9ec3('0x70'),_0x9ec3('0x71'),_0x9ec3('0x72'),'entityimage_timestamp',_0x9ec3('0x73'),_0x9ec3('0x74'),_0x9ec3('0x75'),'firstresponsebykpiidname',_0x9ec3('0x76'),_0x9ec3('0x77'),_0x9ec3('0x78'),_0x9ec3('0x79'),_0x9ec3('0x7a'),_0x9ec3('0x7b'),_0x9ec3('0x7c'),_0x9ec3('0x7d'),_0x9ec3('0x7e'),_0x9ec3('0x7f'),_0x9ec3('0x80'),_0x9ec3('0x81'),_0x9ec3('0x82'),_0x9ec3('0x83'),_0x9ec3('0x84'),_0x9ec3('0x85'),'onholdtime',_0x9ec3('0x86'),_0x9ec3('0x87'),_0x9ec3('0x88'),_0x9ec3('0x89'),_0x9ec3('0x8a'),_0x9ec3('0x8b'),_0x9ec3('0x8c'),_0x9ec3('0x8d'),_0x9ec3('0x8e'),'productserialnumber','resolveby',_0x9ec3('0x8f'),_0x9ec3('0x90'),_0x9ec3('0x91'),_0x9ec3('0x92'),_0x9ec3('0x93'),_0x9ec3('0x94'),_0x9ec3('0x95'),_0x9ec3('0x96'),_0x9ec3('0x97'),_0x9ec3('0x98'),_0x9ec3('0x99'),'ticketnumber','timezoneruleversionnumber',_0x9ec3('0x9a'),'traversedpath',_0x9ec3('0x9b'),'versionnumber'];var _0x1e0e78=_0x1edcda[_0x9ec3('0x9c')](_0x3d4f76);return db[_0x9ec3('0x2e')]['findOne']({'where':{'id':_0x4e9f91[_0x9ec3('0x48')]['id']},'attributes':['id',_0x9ec3('0x9d'),_0x9ec3('0x9e'),_0x9ec3('0x9f'),_0x9ec3('0xa0'),_0x9ec3('0xa1'),'clientSecret']})[_0x9ec3('0x24')](handleEntityNotFound(_0x379841,null))['then'](function(_0x2a48ee){if(_0x2a48ee){_0x1cb5fa=_0x2a48ee[_0x9ec3('0x9f')];var _0x50122b=_0x1cb5fa[_0x9ec3('0xa2')](-0x1);if(_0x50122b==='/'){_0x1cb5fa=_0x1cb5fa['substring'](0x0,_0x1cb5fa[_0x9ec3('0xa3')](_0x50122b));}_0x2a2363=util[_0x9ec3('0xa4')]('%s/api/data/v9.0/',_0x1cb5fa);var _0x5711d4={'method':_0x9ec3('0xa5'),'uri':_0x9ec3('0xa6')+_0x2a48ee[_0x9ec3('0xa0')]+_0x9ec3('0xa7'),'form':{'client_id':_0x2a48ee[_0x9ec3('0xa1')],'resource':_0x1cb5fa,'username':_0x2a48ee[_0x9ec3('0x9d')],'password':_0x2a48ee[_0x9ec3('0x9e')],'grant_type':_0x9ec3('0x9e'),'client_secret':_0x2a48ee['clientSecret']},'json':!![]};return rp(_0x5711d4);}})[_0x9ec3('0x24')](function(_0x2ead11){_0x2025da=_0x2ead11['access_token'];var _0x1a760f={'method':_0x9ec3('0xa8'),'uri':encodeURI(_0x2a2363+'EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27'+_0x3f3e2b+'\x27'),'headers':{'Authorization':_0x9ec3('0xa9')+_0x2025da,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x1a760f);})[_0x9ec3('0x24')](function(_0x5f2bcf){var _0x4a906a=_0x5f2bcf[_0x9ec3('0xaa')][0x0];var _0x42f2e9=_0x4a906a[_0x9ec3('0xab')];var _0x155604={'method':'GET','uri':_0x2a2363+'EntityDefinitions('+_0x42f2e9+_0x9ec3('0xac'),'headers':{'Authorization':'Bearer\x20'+_0x2025da,'If-None-Match':null,'OData-Version':_0x9ec3('0xad')},'json':!![]};return rp(_0x155604);})[_0x9ec3('0x24')](function(_0x57ce98){_0x2bcc6e=_0x57ce98;_0x27d979=_0x2bcc6e['Attributes'];_0x27d979=_[_0x9ec3('0xae')](_0x27d979,function(_0x1e91f5){return!_0x1e0e78[_0x9ec3('0xaf')](_0x1e91f5[_0x9ec3('0xb0')]);});var _0x3ceb8d=[];var _0x496981=[];_0x27d979[_0x9ec3('0xb1')](function(_0x1d485f){if(_0x1d485f[_0x9ec3('0xb2')]){var _0x3cb91d=_0x1d485f['@odata.type']['substring'](_0x1d485f[_0x9ec3('0xb2')][_0x9ec3('0xa3')]('.')+0x1);if(_0x3cb91d===_0x9ec3('0xb3')){_0x3ceb8d[_0x9ec3('0xb4')](getSelectList(_0x2a2363,_0x503b6a,_0x496981,_0x2bcc6e[_0x9ec3('0xab')],_0x1d485f[_0x9ec3('0xab')],_0x2025da));}}});return Promise['all'](_0x3ceb8d);})[_0x9ec3('0x24')](function(_0x55c74e){_0x44ab6d=_0x55c74e[0x0];var _0x20d0b3=[];var _0x4216c8=[];_0x27d979['forEach'](function(_0x25db14){if(!_[_0x9ec3('0xb5')](_0x25db14['@odata.type'])){var _0x37803f=_0x25db14[_0x9ec3('0xb2')]['substring'](_0x25db14['@odata.type'][_0x9ec3('0xa3')]('.')+0x1);if(_0x37803f===_0x9ec3('0xb6')){_0x20d0b3[_0x9ec3('0xb4')](getBooleanList(_0x2a2363,_0x503b6a,_0x4216c8,_0x2bcc6e[_0x9ec3('0xab')],_0x25db14['MetadataId'],_0x2025da));}}});return Promise[_0x9ec3('0xb7')](_0x20d0b3);})[_0x9ec3('0x24')](function(_0xaec90f){_0xcf4532=_0xaec90f[0x0];var _0x20bde9=[];var _0x278170=[];_0x27d979[_0x9ec3('0xb1')](function(_0x59b75e){if(_0x59b75e[_0x9ec3('0xb2')]){var _0x584fbc=_0x59b75e[_0x9ec3('0xb2')]['substring'](_0x59b75e[_0x9ec3('0xb2')][_0x9ec3('0xa3')]('.')+0x1);if(_0x584fbc===_0x9ec3('0xb8')||_0x584fbc==='DoubleAttributeMetadata'||_0x584fbc===_0x9ec3('0xb9')||_0x584fbc==='IntegerAttributeMetadata'||_0x584fbc==='MemoAttributeMetadata'||_0x584fbc===_0x9ec3('0xba')||_0x584fbc===_0x9ec3('0xbb')||_0x584fbc==='EntityNameAttributeMetadata'||_0x584fbc===_0x9ec3('0xbc')||_0x584fbc==='DecimalAttributeMetadata'){_0x20bde9[_0x9ec3('0xb4')](getInputList(_0x2a2363,_0x503b6a,_0x584fbc,_0x278170,_0x2bcc6e[_0x9ec3('0xab')],_0x59b75e[_0x9ec3('0xab')],_0x2025da));}}});return Promise[_0x9ec3('0xb7')](_0x20bde9);})[_0x9ec3('0x24')](function(_0x2cc39b){_0x44e23d=_0x2cc39b[0x0];var _0x25f485=_0x44ab6d[_0x9ec3('0x9c')](_0xcf4532)[_0x9ec3('0x9c')](_0x44e23d);var _0x3386a6={'count':_0x25f485[_0x9ec3('0x49')],'rows':_0x25f485};return _0x3386a6;})[_0x9ec3('0x24')](respondWithResult(_0x379841,null))['catch'](function(_0x3e7b12){var _0xde6002=_0x4e9f91[_0x9ec3('0x35')]['test']?0x1f4:_0x3e7b12[_0x9ec3('0xbd')]||0x1f4;logger['error'](_0x3e7b12['stack']);delete _0x3e7b12['name'];if(_0xde6002===0x191){_0xde6002=0x190;}_0x379841['status'](_0xde6002)[_0x9ec3('0x2b')](_0x4e9f91[_0x9ec3('0x35')][_0x9ec3('0xbe')]?{'message':_0x9ec3('0xbf'),'statusCode':_0x3e7b12[_0x9ec3('0xbd')]}:_0x3e7b12);});};function getSelectList(_0x276dfc,_0x4f9a99,_0xf3b2ad,_0x1b31d0,_0x161174,_0x423be7){var _0x58f719={'method':_0x9ec3('0xa8'),'uri':_0x276dfc+'EntityDefinitions('+_0x1b31d0+')/Attributes('+_0x161174+_0x9ec3('0xc0')+_0x9ec3('0xc1'),'headers':{'Authorization':_0x9ec3('0xa9')+_0x423be7,'If-None-Match':null,'OData-Version':_0x9ec3('0xad')},'json':!![]};return rp(_0x58f719)[_0x9ec3('0x24')](function(_0x3a0c17){var _0x11e0a5=[];var _0x311661=_0x3a0c17[_0x9ec3('0xc2')][_0x9ec3('0xc3')];_0x311661[_0x9ec3('0xb1')](function(_0x5deb45){_0x11e0a5[_0x9ec3('0xb4')]({'name':_0x5deb45[_0x9ec3('0xc4')][_0x9ec3('0xc5')][_0x9ec3('0xc4')],'value':String(_0x5deb45[_0x9ec3('0xc6')])});});var _0x1e96aa={'id':_0x4f9a99+'_'+_0x3a0c17[_0x9ec3('0xb0')],'name':_0x3a0c17[_0x9ec3('0xc7')][_0x9ec3('0xc5')][_0x9ec3('0xc4')],'custom':![],'options':_0x11e0a5};_0xf3b2ad['push'](_0x1e96aa);return _0xf3b2ad;});}function getBooleanList(_0x383128,_0x21da07,_0x2aebe1,_0x378c40,_0x37aa46,_0x2d0fc5){var _0x939100={'method':'GET','uri':_0x383128+_0x9ec3('0xc8')+_0x378c40+_0x9ec3('0xc9')+_0x37aa46+_0x9ec3('0xca'),'headers':{'Authorization':'Bearer\x20'+_0x2d0fc5,'If-None-Match':null,'OData-Version':_0x9ec3('0xad')},'json':!![]};return rp(_0x939100)[_0x9ec3('0x24')](function(_0x4ddd4f){var _0x22ada9=[];_0x22ada9[_0x9ec3('0xb4')]({'name':_0x4ddd4f[_0x9ec3('0xc2')][_0x9ec3('0xcb')]['Label'][_0x9ec3('0xc5')][_0x9ec3('0xc4')],'value':'true'},{'name':_0x4ddd4f[_0x9ec3('0xc2')][_0x9ec3('0xcc')][_0x9ec3('0xc4')][_0x9ec3('0xc5')][_0x9ec3('0xc4')],'value':'false'});var _0x16e126={'id':_0x21da07+'_'+_0x4ddd4f[_0x9ec3('0xb0')],'name':_0x4ddd4f[_0x9ec3('0xc7')][_0x9ec3('0xc5')]['Label'],'custom':![],'options':_0x22ada9};_0x2aebe1[_0x9ec3('0xb4')](_0x16e126);return _0x2aebe1;});}function getInputList(_0x219fd9,_0x220163,_0x3644a1,_0xb4729,_0x4c7054,_0x3eec3e,_0x50980d){var _0x322c84={'method':_0x9ec3('0xa8'),'uri':_0x219fd9+'EntityDefinitions('+_0x4c7054+_0x9ec3('0xc9')+_0x3eec3e+_0x9ec3('0xcd')+_0x3644a1+'?$select=DisplayName,LogicalName','headers':{'Authorization':'Bearer\x20'+_0x50980d,'If-None-Match':null,'OData-Version':_0x9ec3('0xad')},'json':!![]};return rp(_0x322c84)[_0x9ec3('0x24')](function(_0x562979){var _0x30f553={'id':_0x220163+'_'+_0x562979[_0x9ec3('0xb0')],'name':_0x562979[_0x9ec3('0xc7')][_0x9ec3('0xc5')]?_0x562979['DisplayName'][_0x9ec3('0xc5')]['Label']:_0x562979[_0x9ec3('0xb0')],'custom':![],'options':[]};_0xb4729[_0x9ec3('0xb4')](_0x30f553);return _0xb4729;});}
\ No newline at end of file
+var _0x6b19=['%s/api/data/v9.0/','POST','/oauth2/token','password','access_token','GET','4.0','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Bearer\x20','Attributes','remove','LogicalName','forEach','@odata.type','push','all','isNil','BooleanAttributeMetadata','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','test','statusCode','Wrong\x20credentials',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Label','UserLocalizedLabel','Value','DisplayName','TrueOption','false','?$select=DisplayName,LogicalName','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','path','sox','ejs','lodash','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','update','then','destroy','error','stack','name','index','rawAttributes','fieldName','type','model','map','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','Dynamics365Account','includeAll','include','findAll','rows','show','options','catch','create','body','find','params','Dynamics365Configuration','getConfigurations','hasOwnProperty','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','Dynamics365Field','getFields','ticketType','incident','Incident','PhoneCall','title','description','ownerid','caseorigincode','subject','phonenumber','accountidname','accountidyominame','billedserviceunits','contactidname','contactidyominame','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyyominame','createdon','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridyominame','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','lastonholdtime','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_iotalertname','overriddencreatedon','owneridtype','parentcaseidname','primarycontactidname','primarycontactidyominame','productidname','productserialnumber','resolveby','responseby','responsiblecontactidname','sentimentvalue','slainvokedidname','statecode','subjectidname','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','concat','findOne','username','tenantId','clientSecret','slice','substring','lastIndexOf','format'];(function(_0x2277ac,_0x5d7462){var _0x76a26b=function(_0x77b6f2){while(--_0x77b6f2){_0x2277ac['push'](_0x2277ac['shift']());}};_0x76a26b(++_0x5d7462);}(_0x6b19,0xe8));var _0x96b1=function(_0xbc343a,_0x50959e){_0xbc343a=_0xbc343a-0x0;var _0x55049e=_0x6b19[_0xbc343a];return _0x55049e;};'use strict';var emlformat=require(_0x96b1('0x0'));var rimraf=require(_0x96b1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x96b1('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x96b1('0x3'));var Mustache=require(_0x96b1('0x4'));var util=require(_0x96b1('0x5'));var path=require(_0x96b1('0x6'));var sox=require(_0x96b1('0x7'));var csv=require('to-csv');var ejs=require(_0x96b1('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x96b1('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x96b1('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x96b1('0xb'));var querystring=require('querystring');var Papa=require(_0x96b1('0xc'));var Redis=require(_0x96b1('0xd'));var authService=require(_0x96b1('0xe'));var qs=require(_0x96b1('0xf'));var as=require(_0x96b1('0x10'));var hardwareService=require(_0x96b1('0x11'));var logger=require(_0x96b1('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x96b1('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0x96b1('0x14'));function respondWithStatusCode(_0x18c9a0,_0x13e6c1){_0x13e6c1=_0x13e6c1||0xcc;return function(_0x5bc87e){if(_0x5bc87e){return _0x18c9a0[_0x96b1('0x15')](_0x13e6c1);}return _0x18c9a0[_0x96b1('0x16')](_0x13e6c1)[_0x96b1('0x17')]();};}function respondWithResult(_0x2119b1,_0x46b2bb){_0x46b2bb=_0x46b2bb||0xc8;return function(_0x4f4150){if(_0x4f4150){return _0x2119b1[_0x96b1('0x16')](_0x46b2bb)[_0x96b1('0x18')](_0x4f4150);}};}function respondWithFilteredResult(_0x23ce63,_0x12233d){return function(_0x2cd1f5){if(_0x2cd1f5){var _0x43b7f5=typeof _0x12233d[_0x96b1('0x19')]===_0x96b1('0x1a')&&typeof _0x12233d[_0x96b1('0x1b')]===_0x96b1('0x1a');var _0x450099=_0x2cd1f5[_0x96b1('0x1c')];var _0x2b192a=_0x43b7f5?0x0:_0x12233d[_0x96b1('0x19')];var _0x212b31=_0x43b7f5?_0x2cd1f5['count']:_0x12233d[_0x96b1('0x19')]+_0x12233d['limit'];var _0x33ac6d;if(_0x212b31>=_0x450099){_0x212b31=_0x450099;_0x33ac6d=0xc8;}else{_0x33ac6d=0xce;}_0x23ce63[_0x96b1('0x16')](_0x33ac6d);return _0x23ce63[_0x96b1('0x1d')]('Content-Range',_0x2b192a+'-'+_0x212b31+'/'+_0x450099)[_0x96b1('0x18')](_0x2cd1f5);}return null;};}function patchUpdates(_0x428fe2){return function(_0x48786f){try{jsonpatch['apply'](_0x48786f,_0x428fe2,!![]);}catch(_0x2b7d4d){return BPromise[_0x96b1('0x1e')](_0x2b7d4d);}return _0x48786f[_0x96b1('0x1f')]();};}function saveUpdates(_0x18594b,_0x555185){return function(_0x301ba2){if(_0x301ba2){return _0x301ba2[_0x96b1('0x20')](_0x18594b)[_0x96b1('0x21')](function(_0x54699d){return _0x54699d;});}return null;};}function removeEntity(_0x2b4f8e,_0x370f15){return function(_0x28b42b){if(_0x28b42b){return _0x28b42b[_0x96b1('0x22')]()['then'](function(){_0x2b4f8e[_0x96b1('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x21ac25,_0x4ad19f){return function(_0x6509d2){if(!_0x6509d2){_0x21ac25[_0x96b1('0x15')](0x194);}return _0x6509d2;};}function handleError(_0x4fb8de,_0x50dcbc){_0x50dcbc=_0x50dcbc||0x1f4;return function(_0x4b1fbe){logger[_0x96b1('0x23')](_0x4b1fbe[_0x96b1('0x24')]);if(_0x4b1fbe[_0x96b1('0x25')]){delete _0x4b1fbe[_0x96b1('0x25')];}_0x4fb8de[_0x96b1('0x16')](_0x50dcbc)['send'](_0x4b1fbe);};}exports[_0x96b1('0x26')]=function(_0x9f1153,_0x3cadbb){var _0x209ce8={},_0x51e2c1={},_0x30dd00={'count':0x0,'rows':[]};var _0x33f96b=_['map'](db['Dynamics365Account'][_0x96b1('0x27')],function(_0x53a198){return{'name':_0x53a198[_0x96b1('0x28')],'type':_0x53a198[_0x96b1('0x29')]['key']};});_0x51e2c1[_0x96b1('0x2a')]=_[_0x96b1('0x2b')](_0x33f96b,'name');_0x51e2c1[_0x96b1('0x2c')]=_[_0x96b1('0x2d')](_0x9f1153[_0x96b1('0x2c')]);_0x51e2c1['filters']=_[_0x96b1('0x2e')](_0x51e2c1[_0x96b1('0x2a')],_0x51e2c1[_0x96b1('0x2c')]);_0x209ce8[_0x96b1('0x2f')]=_[_0x96b1('0x2e')](_0x51e2c1[_0x96b1('0x2a')],qs['fields'](_0x9f1153[_0x96b1('0x2c')][_0x96b1('0x30')]));_0x209ce8['attributes']=_0x209ce8['attributes'][_0x96b1('0x31')]?_0x209ce8[_0x96b1('0x2f')]:_0x51e2c1[_0x96b1('0x2a')];if(!_0x9f1153['query']['hasOwnProperty'](_0x96b1('0x32'))){_0x209ce8[_0x96b1('0x1b')]=qs[_0x96b1('0x1b')](_0x9f1153[_0x96b1('0x2c')]['limit']);_0x209ce8[_0x96b1('0x19')]=qs['offset'](_0x9f1153[_0x96b1('0x2c')][_0x96b1('0x19')]);}_0x209ce8[_0x96b1('0x33')]=qs['sort'](_0x9f1153[_0x96b1('0x2c')][_0x96b1('0x34')]);_0x209ce8[_0x96b1('0x35')]=qs[_0x96b1('0x36')](_[_0x96b1('0x37')](_0x9f1153[_0x96b1('0x2c')],_0x51e2c1['filters']),_0x33f96b);if(_0x9f1153[_0x96b1('0x2c')][_0x96b1('0x38')]){_0x209ce8['where']=_[_0x96b1('0x39')](_0x209ce8['where'],{'$or':_[_0x96b1('0x2b')](_0x33f96b,function(_0x1d351d){if(_0x1d351d[_0x96b1('0x29')]!==_0x96b1('0x3a')){var _0x30be03={};_0x30be03[_0x1d351d[_0x96b1('0x25')]]={'$like':'%'+_0x9f1153[_0x96b1('0x2c')][_0x96b1('0x38')]+'%'};return _0x30be03;}})});}_0x209ce8=_[_0x96b1('0x39')]({},_0x209ce8,_0x9f1153['options']);var _0x94d1e6={'where':_0x209ce8[_0x96b1('0x35')]};return db[_0x96b1('0x3b')][_0x96b1('0x1c')](_0x94d1e6)[_0x96b1('0x21')](function(_0x961a2a){_0x30dd00[_0x96b1('0x1c')]=_0x961a2a;if(_0x9f1153[_0x96b1('0x2c')][_0x96b1('0x3c')]){_0x209ce8[_0x96b1('0x3d')]=[{'all':!![]}];}return db[_0x96b1('0x3b')][_0x96b1('0x3e')](_0x209ce8);})[_0x96b1('0x21')](function(_0x202784){_0x30dd00[_0x96b1('0x3f')]=_0x202784;return _0x30dd00;})['then'](respondWithFilteredResult(_0x3cadbb,_0x209ce8))['catch'](handleError(_0x3cadbb,null));};exports[_0x96b1('0x40')]=function(_0x2fdcb8,_0x5282dd){var _0x2d0e9b={'raw':![],'where':{'id':_0x2fdcb8['params']['id']}},_0x445ae5={};_0x445ae5['model']=_['keys'](db[_0x96b1('0x3b')][_0x96b1('0x27')]);_0x445ae5[_0x96b1('0x2c')]=_[_0x96b1('0x2d')](_0x2fdcb8[_0x96b1('0x2c')]);_0x445ae5[_0x96b1('0x36')]=_[_0x96b1('0x2e')](_0x445ae5[_0x96b1('0x2a')],_0x445ae5[_0x96b1('0x2c')]);_0x2d0e9b[_0x96b1('0x2f')]=_['intersection'](_0x445ae5[_0x96b1('0x2a')],qs['fields'](_0x2fdcb8[_0x96b1('0x2c')]['fields']));_0x2d0e9b[_0x96b1('0x2f')]=_0x2d0e9b['attributes'][_0x96b1('0x31')]?_0x2d0e9b[_0x96b1('0x2f')]:_0x445ae5[_0x96b1('0x2a')];if(_0x2fdcb8[_0x96b1('0x2c')][_0x96b1('0x3c')]){_0x2d0e9b['include']=[{'all':!![]}];}_0x2d0e9b=_[_0x96b1('0x39')]({},_0x2d0e9b,_0x2fdcb8[_0x96b1('0x41')]);return db[_0x96b1('0x3b')]['find'](_0x2d0e9b)[_0x96b1('0x21')](handleEntityNotFound(_0x5282dd,null))[_0x96b1('0x21')](respondWithResult(_0x5282dd,null))[_0x96b1('0x42')](handleError(_0x5282dd,null));};exports[_0x96b1('0x43')]=function(_0x4919b2,_0x191b12){return db[_0x96b1('0x3b')]['create'](_0x4919b2[_0x96b1('0x44')],{})[_0x96b1('0x21')](respondWithResult(_0x191b12,0xc9))[_0x96b1('0x42')](handleError(_0x191b12,null));};exports[_0x96b1('0x20')]=function(_0x2d6446,_0x1fadc4){if(_0x2d6446['body']['id']){delete _0x2d6446[_0x96b1('0x44')]['id'];}return db['Dynamics365Account'][_0x96b1('0x45')]({'where':{'id':_0x2d6446[_0x96b1('0x46')]['id']}})['then'](handleEntityNotFound(_0x1fadc4,null))[_0x96b1('0x21')](saveUpdates(_0x2d6446[_0x96b1('0x44')],null))['then'](respondWithResult(_0x1fadc4,null))[_0x96b1('0x42')](handleError(_0x1fadc4,null));};exports[_0x96b1('0x22')]=function(_0x2087ba,_0x3a7301){return db[_0x96b1('0x3b')][_0x96b1('0x45')]({'where':{'id':_0x2087ba[_0x96b1('0x46')]['id']}})[_0x96b1('0x21')](handleEntityNotFound(_0x3a7301,null))[_0x96b1('0x21')](removeEntity(_0x3a7301,null))[_0x96b1('0x42')](handleError(_0x3a7301,null));};exports['getConfigurations']=function(_0x296960,_0x220551,_0x12b862){var _0x1e89fe={};var _0x471177={};var _0x1e087d;var _0x420d36;return db[_0x96b1('0x3b')]['findOne']({'where':{'id':_0x296960['params']['id']}})[_0x96b1('0x21')](handleEntityNotFound(_0x220551,null))[_0x96b1('0x21')](function(_0x594d3c){if(_0x594d3c){_0x1e087d=_0x594d3c;_0x471177[_0x96b1('0x2a')]=_[_0x96b1('0x2d')](db[_0x96b1('0x47')]['rawAttributes']);_0x471177[_0x96b1('0x2c')]=_[_0x96b1('0x2d')](_0x296960['query']);_0x471177['filters']=_[_0x96b1('0x2e')](_0x471177[_0x96b1('0x2a')],_0x471177[_0x96b1('0x2c')]);_0x1e89fe[_0x96b1('0x2f')]=_[_0x96b1('0x2e')](_0x471177[_0x96b1('0x2a')],qs[_0x96b1('0x30')](_0x296960[_0x96b1('0x2c')][_0x96b1('0x30')]));_0x1e89fe[_0x96b1('0x2f')]=_0x1e89fe[_0x96b1('0x2f')][_0x96b1('0x31')]?_0x1e89fe['attributes']:_0x471177[_0x96b1('0x2a')];_0x1e89fe[_0x96b1('0x33')]=qs[_0x96b1('0x34')](_0x296960[_0x96b1('0x2c')][_0x96b1('0x34')]);_0x1e89fe[_0x96b1('0x35')]=qs[_0x96b1('0x36')](_['pick'](_0x296960[_0x96b1('0x2c')],_0x471177['filters']));if(_0x296960['query'][_0x96b1('0x38')]){_0x1e89fe[_0x96b1('0x35')]=_[_0x96b1('0x39')](_0x1e89fe[_0x96b1('0x35')],{'$or':_[_0x96b1('0x2b')](_0x1e89fe[_0x96b1('0x2f')],function(_0x38b16d){var _0x4fbac3={};_0x4fbac3[_0x38b16d]={'$like':'%'+_0x296960[_0x96b1('0x2c')]['filter']+'%'};return _0x4fbac3;})});}_0x1e89fe=_[_0x96b1('0x39')]({},_0x1e89fe,_0x296960['options']);return _0x1e087d[_0x96b1('0x48')](_0x1e89fe);}})[_0x96b1('0x21')](function(_0x49def8){if(_0x49def8){_0x420d36=_0x49def8[_0x96b1('0x31')];if(!_0x296960[_0x96b1('0x2c')][_0x96b1('0x49')](_0x96b1('0x32'))){_0x1e89fe['limit']=qs['limit'](_0x296960[_0x96b1('0x2c')][_0x96b1('0x1b')]);_0x1e89fe[_0x96b1('0x19')]=qs[_0x96b1('0x19')](_0x296960['query'][_0x96b1('0x19')]);}return _0x1e087d[_0x96b1('0x48')](_0x1e89fe);}})[_0x96b1('0x21')](function(_0x2048d6){if(_0x2048d6){return _0x2048d6?{'count':_0x420d36,'rows':_0x2048d6}:null;}})[_0x96b1('0x21')](respondWithResult(_0x220551,null))[_0x96b1('0x42')](handleError(_0x220551,null));};exports[_0x96b1('0x4a')]=function(_0x337b31,_0x1ebb27,_0x506099){if(_0x337b31['body']['id']){delete _0x337b31[_0x96b1('0x44')]['id'];}return db[_0x96b1('0x3b')]['findOne']({'where':{'id':_0x337b31['params']['id']}})[_0x96b1('0x21')](handleEntityNotFound(_0x1ebb27,null))[_0x96b1('0x21')](function(_0x2d98dd){if(_0x2d98dd){_0x337b31[_0x96b1('0x44')][_0x96b1('0x4b')]=_0x2d98dd['id'];_0x337b31[_0x96b1('0x44')][_0x96b1('0x4c')]=integrations['getSubjects'](_0x337b31['body'][_0x96b1('0x4d')],_0x337b31[_0x96b1('0x44')]['type']);_0x337b31['body'][_0x96b1('0x4e')]=integrations[_0x96b1('0x4f')](_0x337b31['body'][_0x96b1('0x4d')],_0x337b31[_0x96b1('0x44')][_0x96b1('0x29')]);return db[_0x96b1('0x47')][_0x96b1('0x43')](_0x337b31[_0x96b1('0x44')],{'include':[{'model':db['Dynamics365Field'],'as':_0x96b1('0x4c')},{'model':db[_0x96b1('0x50')],'as':_0x96b1('0x4e')}]});}return null;})[_0x96b1('0x21')](respondWithResult(_0x1ebb27,null))['catch'](handleError(_0x1ebb27,null));};exports[_0x96b1('0x51')]=function(_0x56d007,_0x24cc85,_0x30547f){var _0x397f51=_0x56d007[_0x96b1('0x2c')][_0x96b1('0x52')];var _0x1d9897=_0x397f51===_0x96b1('0x53')?_0x96b1('0x54'):_0x96b1('0x55');var _0x30553c='';var _0x3e7a23='';var _0x4e173b='';var _0x9b7f1a='';var _0x1cccb3='';var _0x45e093='';var _0x1b35ed='';var _0xc3f8d9='';var _0x51b25b=[_0x96b1('0x56'),_0x96b1('0x57'),'customerid',_0x96b1('0x58'),_0x96b1('0x59'),_0x96b1('0x5a'),_0x96b1('0x5b'),'regardingobjectid','directioncode','phonecall_activity_parties'];var _0x5ea76d=[_0x96b1('0x5c'),_0x96b1('0x5d'),'actualserviceunits',_0x96b1('0x5e'),_0x96b1('0x5f'),_0x96b1('0x60'),'contractdetailidname',_0x96b1('0x61'),_0x96b1('0x62'),_0x96b1('0x63'),'createdbyname',_0x96b1('0x64'),_0x96b1('0x65'),_0x96b1('0x66'),_0x96b1('0x67'),_0x96b1('0x68'),'customeridtype',_0x96b1('0x69'),'emailaddress','entitlementidname',_0x96b1('0x6a'),_0x96b1('0x6b'),_0x96b1('0x6c'),_0x96b1('0x6d'),'firstresponsebykpiidname','followupby','importsequencenumber','influencescore','kbarticleidname',_0x96b1('0x6e'),'masteridname',_0x96b1('0x6f'),_0x96b1('0x70'),_0x96b1('0x71'),_0x96b1('0x72'),'modifiedon',_0x96b1('0x73'),_0x96b1('0x74'),'msdyn_incidenttypename',_0x96b1('0x75'),'numberofchildincidents','onholdtime',_0x96b1('0x76'),'owneridname',_0x96b1('0x77'),'owneridyominame',_0x96b1('0x78'),_0x96b1('0x79'),_0x96b1('0x7a'),'prioritycodename',_0x96b1('0x7b'),_0x96b1('0x7c'),_0x96b1('0x7d'),'resolvebykpiidname',_0x96b1('0x7e'),_0x96b1('0x7f'),'responsiblecontactidyominame',_0x96b1('0x80'),_0x96b1('0x81'),'slaname','socialprofileidname',_0x96b1('0x82'),'statuscode',_0x96b1('0x83'),'ticketnumber',_0x96b1('0x84'),_0x96b1('0x85'),_0x96b1('0x86'),_0x96b1('0x87'),_0x96b1('0x88')];var _0x5be750=_0x51b25b[_0x96b1('0x89')](_0x5ea76d);return db[_0x96b1('0x3b')][_0x96b1('0x8a')]({'where':{'id':_0x56d007['params']['id']},'attributes':['id',_0x96b1('0x8b'),'password','remoteUri',_0x96b1('0x8c'),'clientId',_0x96b1('0x8d')]})['then'](handleEntityNotFound(_0x24cc85,null))['then'](function(_0xe2f757){if(_0xe2f757){_0xc3f8d9=_0xe2f757['remoteUri'];var _0x23c398=_0xc3f8d9[_0x96b1('0x8e')](-0x1);if(_0x23c398==='/'){_0xc3f8d9=_0xc3f8d9[_0x96b1('0x8f')](0x0,_0xc3f8d9[_0x96b1('0x90')](_0x23c398));}_0x1b35ed=util[_0x96b1('0x91')](_0x96b1('0x92'),_0xc3f8d9);var _0x5ea80c={'method':_0x96b1('0x93'),'uri':'https://login.microsoftonline.com/'+_0xe2f757[_0x96b1('0x8c')]+_0x96b1('0x94'),'form':{'client_id':_0xe2f757['clientId'],'resource':_0xc3f8d9,'username':_0xe2f757[_0x96b1('0x8b')],'password':_0xe2f757[_0x96b1('0x95')],'grant_type':'password','client_secret':_0xe2f757[_0x96b1('0x8d')]},'json':!![]};return rp(_0x5ea80c);}})[_0x96b1('0x21')](function(_0x5846ef){_0x45e093=_0x5846ef[_0x96b1('0x96')];var _0x566e6b={'method':_0x96b1('0x97'),'uri':encodeURI(_0x1b35ed+'EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27'+_0x1d9897+'\x27'),'headers':{'Authorization':'Bearer\x20'+_0x45e093,'If-None-Match':null,'OData-Version':_0x96b1('0x98')},'json':!![]};return rp(_0x566e6b);})[_0x96b1('0x21')](function(_0x2abf3e){var _0x28788a=_0x2abf3e['value'][0x0];var _0x1ab428=_0x28788a[_0x96b1('0x99')];var _0xd410e4={'method':_0x96b1('0x97'),'uri':_0x1b35ed+_0x96b1('0x9a')+_0x1ab428+_0x96b1('0x9b'),'headers':{'Authorization':_0x96b1('0x9c')+_0x45e093,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0xd410e4);})[_0x96b1('0x21')](function(_0xf77d1b){_0x30553c=_0xf77d1b;_0x3e7a23=_0x30553c[_0x96b1('0x9d')];_0x3e7a23=_[_0x96b1('0x9e')](_0x3e7a23,function(_0x573caa){return!_0x5be750['includes'](_0x573caa[_0x96b1('0x9f')]);});var _0x37be2a=[];var _0x454f3d=[];_0x3e7a23[_0x96b1('0xa0')](function(_0x10583d){if(_0x10583d[_0x96b1('0xa1')]){var _0x349688=_0x10583d[_0x96b1('0xa1')][_0x96b1('0x8f')](_0x10583d[_0x96b1('0xa1')]['lastIndexOf']('.')+0x1);if(_0x349688==='PicklistAttributeMetadata'){_0x37be2a[_0x96b1('0xa2')](getSelectList(_0x1b35ed,_0x397f51,_0x454f3d,_0x30553c[_0x96b1('0x99')],_0x10583d[_0x96b1('0x99')],_0x45e093));}}});return Promise[_0x96b1('0xa3')](_0x37be2a);})[_0x96b1('0x21')](function(_0x4510cb){_0x4e173b=_0x4510cb[0x0];var _0x542c02=[];var _0x20fb44=[];_0x3e7a23['forEach'](function(_0x4359df){if(!_[_0x96b1('0xa4')](_0x4359df[_0x96b1('0xa1')])){var _0x162ece=_0x4359df[_0x96b1('0xa1')][_0x96b1('0x8f')](_0x4359df['@odata.type'][_0x96b1('0x90')]('.')+0x1);if(_0x162ece===_0x96b1('0xa5')){_0x542c02[_0x96b1('0xa2')](getBooleanList(_0x1b35ed,_0x397f51,_0x20fb44,_0x30553c[_0x96b1('0x99')],_0x4359df['MetadataId'],_0x45e093));}}});return Promise[_0x96b1('0xa3')](_0x542c02);})[_0x96b1('0x21')](function(_0x56d00e){_0x9b7f1a=_0x56d00e[0x0];var _0x566166=[];var _0x2258a9=[];_0x3e7a23[_0x96b1('0xa0')](function(_0x46642f){if(_0x46642f[_0x96b1('0xa1')]){var _0x5cdfc2=_0x46642f[_0x96b1('0xa1')]['substring'](_0x46642f[_0x96b1('0xa1')][_0x96b1('0x90')]('.')+0x1);if(_0x5cdfc2===_0x96b1('0xa6')||_0x5cdfc2===_0x96b1('0xa7')||_0x5cdfc2===_0x96b1('0xa8')||_0x5cdfc2===_0x96b1('0xa9')||_0x5cdfc2===_0x96b1('0xaa')||_0x5cdfc2==='DateTimeAttributeMetadata'||_0x5cdfc2===_0x96b1('0xab')||_0x5cdfc2===_0x96b1('0xac')||_0x5cdfc2===_0x96b1('0xad')||_0x5cdfc2===_0x96b1('0xae')){_0x566166[_0x96b1('0xa2')](getInputList(_0x1b35ed,_0x397f51,_0x5cdfc2,_0x2258a9,_0x30553c[_0x96b1('0x99')],_0x46642f[_0x96b1('0x99')],_0x45e093));}}});return Promise[_0x96b1('0xa3')](_0x566166);})['then'](function(_0x24a5d1){_0x1cccb3=_0x24a5d1[0x0];var _0x3c621e=_0x4e173b[_0x96b1('0x89')](_0x9b7f1a)[_0x96b1('0x89')](_0x1cccb3);var _0x2ab618={'count':_0x3c621e['length'],'rows':_0x3c621e};return _0x2ab618;})['then'](respondWithResult(_0x24cc85,null))[_0x96b1('0x42')](function(_0x2c8c8f){var _0x11efe4=_0x56d007[_0x96b1('0x2c')][_0x96b1('0xaf')]?0x1f4:_0x2c8c8f[_0x96b1('0xb0')]||0x1f4;logger['error'](_0x2c8c8f[_0x96b1('0x24')]);delete _0x2c8c8f[_0x96b1('0x25')];if(_0x11efe4===0x191){_0x11efe4=0x190;}_0x24cc85['status'](_0x11efe4)['send'](_0x56d007[_0x96b1('0x2c')]['test']?{'message':_0x96b1('0xb1'),'statusCode':_0x2c8c8f[_0x96b1('0xb0')]}:_0x2c8c8f);});};function getSelectList(_0x1aff9d,_0x1d7046,_0x481bbf,_0x5c28af,_0x567436,_0x168756){var _0x7ae09e={'method':'GET','uri':_0x1aff9d+_0x96b1('0x9a')+_0x5c28af+_0x96b1('0xb2')+_0x567436+_0x96b1('0xb3')+_0x96b1('0xb4'),'headers':{'Authorization':'Bearer\x20'+_0x168756,'If-None-Match':null,'OData-Version':_0x96b1('0x98')},'json':!![]};return rp(_0x7ae09e)[_0x96b1('0x21')](function(_0x295884){var _0x468e51=[];var _0x443d7a=_0x295884[_0x96b1('0xb5')]['Options'];_0x443d7a['forEach'](function(_0x30a4ff){_0x468e51[_0x96b1('0xa2')]({'name':_0x30a4ff[_0x96b1('0xb6')][_0x96b1('0xb7')]['Label'],'value':String(_0x30a4ff[_0x96b1('0xb8')])});});var _0x2783f3={'id':_0x1d7046+'_'+_0x295884[_0x96b1('0x9f')],'name':_0x295884[_0x96b1('0xb9')][_0x96b1('0xb7')]['Label'],'custom':![],'options':_0x468e51};_0x481bbf[_0x96b1('0xa2')](_0x2783f3);return _0x481bbf;});}function getBooleanList(_0x3b41b1,_0x406b80,_0x1b4326,_0x42341b,_0x163fb4,_0x13c498){var _0x2845b8={'method':_0x96b1('0x97'),'uri':_0x3b41b1+_0x96b1('0x9a')+_0x42341b+')/Attributes('+_0x163fb4+')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','headers':{'Authorization':'Bearer\x20'+_0x13c498,'If-None-Match':null,'OData-Version':_0x96b1('0x98')},'json':!![]};return rp(_0x2845b8)[_0x96b1('0x21')](function(_0x57a731){var _0x33be47=[];_0x33be47[_0x96b1('0xa2')]({'name':_0x57a731[_0x96b1('0xb5')][_0x96b1('0xba')][_0x96b1('0xb6')][_0x96b1('0xb7')][_0x96b1('0xb6')],'value':'true'},{'name':_0x57a731[_0x96b1('0xb5')]['FalseOption'][_0x96b1('0xb6')][_0x96b1('0xb7')][_0x96b1('0xb6')],'value':_0x96b1('0xbb')});var _0x787b0e={'id':_0x406b80+'_'+_0x57a731['LogicalName'],'name':_0x57a731[_0x96b1('0xb9')][_0x96b1('0xb7')][_0x96b1('0xb6')],'custom':![],'options':_0x33be47};_0x1b4326['push'](_0x787b0e);return _0x1b4326;});}function getInputList(_0x45f744,_0x3a404d,_0x12bdfc,_0xd0f773,_0x4ec77f,_0x371258,_0x370ba4){var _0x366a86={'method':_0x96b1('0x97'),'uri':_0x45f744+_0x96b1('0x9a')+_0x4ec77f+')/Attributes('+_0x371258+')/Microsoft.Dynamics.CRM.'+_0x12bdfc+_0x96b1('0xbc'),'headers':{'Authorization':_0x96b1('0x9c')+_0x370ba4,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x366a86)[_0x96b1('0x21')](function(_0x328880){var _0x5be0dd={'id':_0x3a404d+'_'+_0x328880[_0x96b1('0x9f')],'name':_0x328880['DisplayName']['UserLocalizedLabel']?_0x328880[_0x96b1('0xb9')][_0x96b1('0xb7')][_0x96b1('0xb6')]:_0x328880['LogicalName'],'custom':![],'options':[]};_0xd0f773[_0x96b1('0xa2')](_0x5be0dd);return _0xd0f773;});}
\ No newline at end of file
index 89040cf..75616bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration','exports','define','Dynamics365Account','int_dynamics365_accounts','lodash','util'];(function(_0x9366b5,_0x2f67c4){var _0x34334b=function(_0x14c5e6){while(--_0x14c5e6){_0x9366b5['push'](_0x9366b5['shift']());}};_0x34334b(++_0x2f67c4);}(_0xe706,0xa3));var _0x6e70=function(_0x447af3,_0x381c44){_0x447af3=_0x447af3-0x0;var _0x202e95=_0xe706[_0x447af3];return _0x202e95;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('api');var moment=require(_0x6e70('0x3'));var BPromise=require(_0x6e70('0x4'));var rp=require(_0x6e70('0x5'));var fs=require('fs');var path=require(_0x6e70('0x6'));var rimraf=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var attributes=require(_0x6e70('0x9'));var integrations=require(_0x6e70('0xa'));module[_0x6e70('0xb')]=function(_0x4381d1,_0x36357b){return _0x4381d1[_0x6e70('0xc')](_0x6e70('0xd'),attributes,{'tableName':_0x6e70('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd8b0=['exports','Dynamics365Account','int_dynamics365_accounts','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x3d8c53,_0x10f4ff){var _0x15e4d1=function(_0x29bb10){while(--_0x29bb10){_0x3d8c53['push'](_0x3d8c53['shift']());}};_0x15e4d1(++_0x10f4ff);}(_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('./intDynamics365Account.attributes');var integrations=require('../../components/integrations/configuration');module[_0x0d8b('0x7')]=function(_0x227c63,_0x39f43a){return _0x227c63['define'](_0x0d8b('0x8'),attributes,{'tableName':_0x0d8b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index eb28f7e..22eb883 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6877=['GetDynamics365Account','ShowDynamics365Account','Dynamics365Account','find','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','Dynamics365Account,\x20%s,\x20%s','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','options','raw','map','include','model','attributes'];(function(_0x51dff5,_0x44b517){var _0x2c6994=function(_0x35e59e){while(--_0x35e59e){_0x51dff5['push'](_0x51dff5['shift']());}};_0x2c6994(++_0x44b517);}(_0x6877,0xa4));var _0x7687=function(_0x136619,_0x31c9b2){_0x136619=_0x136619-0x0;var _0x38c4a5=_0x6877[_0x136619];return _0x38c4a5;};'use strict';var _=require(_0x7687('0x0'));var util=require(_0x7687('0x1'));var moment=require(_0x7687('0x2'));var BPromise=require('bluebird');var rs=require(_0x7687('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7687('0x4'))['db'];var utils=require(_0x7687('0x5'));var logger=require(_0x7687('0x6'))(_0x7687('0x7'));var config=require(_0x7687('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x7687('0x9')][_0x7687('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x572c25,_0x4cfc34,_0x3a4412){return new BPromise(function(_0x14e385,_0x5a88d4){return client[_0x7687('0xb')](_0x572c25,_0x3a4412)[_0x7687('0xc')](function(_0x189275){logger[_0x7687('0xd')](_0x7687('0xe'),_0x4cfc34,'request\x20sent');logger[_0x7687('0xf')](_0x7687('0x10'),_0x4cfc34,'request\x20sent',JSON[_0x7687('0x11')](_0x189275));if(_0x189275[_0x7687('0x12')]){if(_0x189275[_0x7687('0x12')][_0x7687('0x13')]===0x1f4){logger[_0x7687('0x12')](_0x7687('0xe'),_0x4cfc34,_0x189275[_0x7687('0x12')]['message']);return _0x5a88d4(_0x189275['error'][_0x7687('0x14')]);}logger['error'](_0x7687('0xe'),_0x4cfc34,_0x189275[_0x7687('0x12')][_0x7687('0x14')]);return _0x14e385(_0x189275[_0x7687('0x12')][_0x7687('0x14')]);}else{logger[_0x7687('0xd')](_0x7687('0xe'),_0x4cfc34,'request\x20sent');_0x14e385(_0x189275['result']['message']);}})[_0x7687('0x15')](function(_0x24d957){logger[_0x7687('0x12')](_0x7687('0xe'),_0x4cfc34,_0x24d957);_0x5a88d4(_0x24d957);});});}exports['GetDynamics365Account']=function(_0x3a3f0f){var _0x16aa72=this;return new Promise(function(_0x24c5d7,_0x49f37a){return db['Dynamics365Account']['findAll']({'raw':_0x3a3f0f['options']?_0x3a3f0f[_0x7687('0x16')][_0x7687('0x17')]===undefined?!![]:![]:!![],'where':_0x3a3f0f[_0x7687('0x16')]?_0x3a3f0f['options']['where']||null:null,'attributes':_0x3a3f0f[_0x7687('0x16')]?_0x3a3f0f[_0x7687('0x16')]['attributes']||null:null,'limit':_0x3a3f0f[_0x7687('0x16')]?_0x3a3f0f[_0x7687('0x16')]['limit']||null:null,'include':_0x3a3f0f[_0x7687('0x16')]?_0x3a3f0f[_0x7687('0x16')]['include']?_[_0x7687('0x18')](_0x3a3f0f['options'][_0x7687('0x19')],function(_0x976358){return{'model':db[_0x976358[_0x7687('0x1a')]],'as':_0x976358['as'],'attributes':_0x976358['attributes'],'include':_0x976358[_0x7687('0x19')]?_[_0x7687('0x18')](_0x976358[_0x7687('0x19')],function(_0x270ae3){return{'model':db[_0x270ae3[_0x7687('0x1a')]],'as':_0x270ae3['as'],'attributes':_0x270ae3[_0x7687('0x1b')],'include':_0x270ae3['include']?_[_0x7687('0x18')](_0x270ae3['include'],function(_0x46f2c6){return{'model':db[_0x46f2c6[_0x7687('0x1a')]],'as':_0x46f2c6['as'],'attributes':_0x46f2c6['attributes']};}):[]};}):[]};}):[]:[]})[_0x7687('0xc')](function(_0x2c7a0f){logger['info'](_0x7687('0x1c'),_0x3a3f0f);logger['debug'](_0x7687('0x1c'),_0x3a3f0f,JSON['stringify'](_0x2c7a0f));_0x24c5d7(_0x2c7a0f);})[_0x7687('0x15')](function(_0x428993){logger[_0x7687('0x12')](_0x7687('0x1c'),_0x428993[_0x7687('0x14')],_0x3a3f0f);_0x49f37a(_0x16aa72[_0x7687('0x12')](0x1f4,_0x428993['message']));});});};exports[_0x7687('0x1d')]=function(_0x3661b1){var _0x207938=this;return new Promise(function(_0x4f73e8,_0x3d0230){return db[_0x7687('0x1e')][_0x7687('0x1f')]({'raw':_0x3661b1['options']?_0x3661b1[_0x7687('0x16')][_0x7687('0x17')]===undefined?!![]:![]:!![],'where':_0x3661b1[_0x7687('0x16')]?_0x3661b1[_0x7687('0x16')]['where']||null:null,'attributes':_0x3661b1[_0x7687('0x16')]?_0x3661b1[_0x7687('0x16')][_0x7687('0x1b')]||null:null,'include':_0x3661b1[_0x7687('0x16')]?_0x3661b1[_0x7687('0x16')][_0x7687('0x19')]?_[_0x7687('0x18')](_0x3661b1['options'][_0x7687('0x19')],function(_0x55edd2){return{'model':db[_0x55edd2['model']],'as':_0x55edd2['as'],'attributes':_0x55edd2[_0x7687('0x1b')],'include':_0x55edd2['include']?_[_0x7687('0x18')](_0x55edd2['include'],function(_0x114380){return{'model':db[_0x114380[_0x7687('0x1a')]],'as':_0x114380['as'],'attributes':_0x114380['attributes'],'include':_0x114380['include']?_[_0x7687('0x18')](_0x114380['include'],function(_0x15a788){return{'model':db[_0x15a788['model']],'as':_0x15a788['as'],'attributes':_0x15a788[_0x7687('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x7687('0xc')](function(_0x391de5){logger[_0x7687('0xd')](_0x7687('0x1d'),_0x3661b1);logger[_0x7687('0xf')]('ShowDynamics365Account',_0x3661b1,JSON[_0x7687('0x11')](_0x391de5));_0x4f73e8(_0x391de5);})[_0x7687('0x15')](function(_0x233357){logger['error'](_0x7687('0x1d'),_0x233357[_0x7687('0x14')],_0x3661b1);_0x3d0230(_0x207938['error'](0x1f4,_0x233357[_0x7687('0x14')]));});});};
\ No newline at end of file
+var _0xfeed=['Dynamics365Account','options','raw','where','attributes','limit','include','map','model','debug','ShowDynamics365Account','find','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetDynamics365Account'];(function(_0x17a20c,_0x2dea01){var _0x1a5a87=function(_0x4fe770){while(--_0x4fe770){_0x17a20c['push'](_0x17a20c['shift']());}};_0x1a5a87(++_0x2dea01);}(_0xfeed,0x94));var _0xdfee=function(_0xb78554,_0x4e76cc){_0xb78554=_0xb78554-0x0;var _0x588dae=_0xfeed[_0xb78554];return _0x588dae;};'use strict';var _=require(_0xdfee('0x0'));var util=require(_0xdfee('0x1'));var moment=require('moment');var BPromise=require(_0xdfee('0x2'));var rs=require(_0xdfee('0x3'));var fs=require('fs');var Redis=require(_0xdfee('0x4'));var db=require(_0xdfee('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xdfee('0x6'));var jayson=require(_0xdfee('0x7'));var client=jayson[_0xdfee('0x8')][_0xdfee('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x25b8cf,_0x387fea,_0x150ea7){return new BPromise(function(_0xcc6f48,_0x5f0ed3){return client[_0xdfee('0xa')](_0x25b8cf,_0x150ea7)[_0xdfee('0xb')](function(_0xeec425){logger[_0xdfee('0xc')](_0xdfee('0xd'),_0x387fea,_0xdfee('0xe'));logger['debug'](_0xdfee('0xf'),_0x387fea,_0xdfee('0xe'),JSON[_0xdfee('0x10')](_0xeec425));if(_0xeec425['error']){if(_0xeec425[_0xdfee('0x11')][_0xdfee('0x12')]===0x1f4){logger[_0xdfee('0x11')](_0xdfee('0xd'),_0x387fea,_0xeec425[_0xdfee('0x11')][_0xdfee('0x13')]);return _0x5f0ed3(_0xeec425['error'][_0xdfee('0x13')]);}logger['error'](_0xdfee('0xd'),_0x387fea,_0xeec425[_0xdfee('0x11')]['message']);return _0xcc6f48(_0xeec425[_0xdfee('0x11')][_0xdfee('0x13')]);}else{logger[_0xdfee('0xc')]('Dynamics365Account,\x20%s,\x20%s',_0x387fea,_0xdfee('0xe'));_0xcc6f48(_0xeec425['result'][_0xdfee('0x13')]);}})[_0xdfee('0x14')](function(_0x8102ea){logger['error'](_0xdfee('0xd'),_0x387fea,_0x8102ea);_0x5f0ed3(_0x8102ea);});});}exports[_0xdfee('0x15')]=function(_0x5cac05){var _0x4fb383=this;return new Promise(function(_0x2b1e1f,_0x289d40){return db[_0xdfee('0x16')]['findAll']({'raw':_0x5cac05[_0xdfee('0x17')]?_0x5cac05[_0xdfee('0x17')][_0xdfee('0x18')]===undefined?!![]:![]:!![],'where':_0x5cac05['options']?_0x5cac05[_0xdfee('0x17')][_0xdfee('0x19')]||null:null,'attributes':_0x5cac05[_0xdfee('0x17')]?_0x5cac05[_0xdfee('0x17')][_0xdfee('0x1a')]||null:null,'limit':_0x5cac05[_0xdfee('0x17')]?_0x5cac05[_0xdfee('0x17')][_0xdfee('0x1b')]||null:null,'include':_0x5cac05[_0xdfee('0x17')]?_0x5cac05[_0xdfee('0x17')][_0xdfee('0x1c')]?_[_0xdfee('0x1d')](_0x5cac05['options'][_0xdfee('0x1c')],function(_0x3261a6){return{'model':db[_0x3261a6[_0xdfee('0x1e')]],'as':_0x3261a6['as'],'attributes':_0x3261a6['attributes'],'include':_0x3261a6['include']?_[_0xdfee('0x1d')](_0x3261a6[_0xdfee('0x1c')],function(_0x31e0bf){return{'model':db[_0x31e0bf[_0xdfee('0x1e')]],'as':_0x31e0bf['as'],'attributes':_0x31e0bf['attributes'],'include':_0x31e0bf[_0xdfee('0x1c')]?_[_0xdfee('0x1d')](_0x31e0bf['include'],function(_0x540062){return{'model':db[_0x540062[_0xdfee('0x1e')]],'as':_0x540062['as'],'attributes':_0x540062[_0xdfee('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x32240e){logger[_0xdfee('0xc')](_0xdfee('0x15'),_0x5cac05);logger[_0xdfee('0x1f')]('GetDynamics365Account',_0x5cac05,JSON[_0xdfee('0x10')](_0x32240e));_0x2b1e1f(_0x32240e);})[_0xdfee('0x14')](function(_0x31e5db){logger[_0xdfee('0x11')](_0xdfee('0x15'),_0x31e5db[_0xdfee('0x13')],_0x5cac05);_0x289d40(_0x4fb383[_0xdfee('0x11')](0x1f4,_0x31e5db[_0xdfee('0x13')]));});});};exports[_0xdfee('0x20')]=function(_0x4a0b18){var _0x226d81=this;return new Promise(function(_0x51af5a,_0x446a32){return db[_0xdfee('0x16')][_0xdfee('0x21')]({'raw':_0x4a0b18[_0xdfee('0x17')]?_0x4a0b18[_0xdfee('0x17')][_0xdfee('0x18')]===undefined?!![]:![]:!![],'where':_0x4a0b18[_0xdfee('0x17')]?_0x4a0b18[_0xdfee('0x17')]['where']||null:null,'attributes':_0x4a0b18['options']?_0x4a0b18['options'][_0xdfee('0x1a')]||null:null,'include':_0x4a0b18[_0xdfee('0x17')]?_0x4a0b18[_0xdfee('0x17')][_0xdfee('0x1c')]?_['map'](_0x4a0b18[_0xdfee('0x17')][_0xdfee('0x1c')],function(_0x181891){return{'model':db[_0x181891[_0xdfee('0x1e')]],'as':_0x181891['as'],'attributes':_0x181891[_0xdfee('0x1a')],'include':_0x181891['include']?_[_0xdfee('0x1d')](_0x181891[_0xdfee('0x1c')],function(_0x25d51b){return{'model':db[_0x25d51b[_0xdfee('0x1e')]],'as':_0x25d51b['as'],'attributes':_0x25d51b[_0xdfee('0x1a')],'include':_0x25d51b[_0xdfee('0x1c')]?_['map'](_0x25d51b['include'],function(_0x370a8f){return{'model':db[_0x370a8f[_0xdfee('0x1e')]],'as':_0x370a8f['as'],'attributes':_0x370a8f[_0xdfee('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xdfee('0xb')](function(_0x4af2bb){logger[_0xdfee('0xc')](_0xdfee('0x20'),_0x4a0b18);logger[_0xdfee('0x1f')](_0xdfee('0x20'),_0x4a0b18,JSON['stringify'](_0x4af2bb));_0x51af5a(_0x4af2bb);})[_0xdfee('0x14')](function(_0xb2606d){logger['error'](_0xdfee('0x20'),_0xb2606d[_0xdfee('0x13')],_0x4a0b18);_0x446a32(_0x226d81[_0xdfee('0x11')](0x1f4,_0xb2606d[_0xdfee('0x13')]));});});};
\ No newline at end of file
index eb5053e..9e221a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf1c=['util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','delete','destroy','exports','multer'];(function(_0x57fa7e,_0xd0b5ce){var _0x320671=function(_0x3392cc){while(--_0x3392cc){_0x57fa7e['push'](_0x57fa7e['shift']());}};_0x320671(++_0xd0b5ce);}(_0xbf1c,0x1a1));var _0xcbf1=function(_0x5cdc68,_0x406b80){_0x5cdc68=_0x5cdc68-0x0;var _0x3db725=_0xbf1c[_0x5cdc68];return _0x3db725;};'use strict';var multer=require(_0xcbf1('0x0'));var util=require(_0xcbf1('0x1'));var path=require(_0xcbf1('0x2'));var timeout=require(_0xcbf1('0x3'));var express=require(_0xcbf1('0x4'));var router=express[_0xcbf1('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xcbf1('0x6'));var config=require(_0xcbf1('0x7'));var controller=require(_0xcbf1('0x8'));router[_0xcbf1('0x9')]('/',auth[_0xcbf1('0xa')](),controller['index']);router[_0xcbf1('0x9')](_0xcbf1('0xb'),auth['isAuthenticated'](),controller[_0xcbf1('0xc')]);router[_0xcbf1('0x9')](_0xcbf1('0xd'),auth[_0xcbf1('0xa')](),controller[_0xcbf1('0xe')]);router['get'](_0xcbf1('0xf'),auth[_0xcbf1('0xa')](),controller[_0xcbf1('0x10')]);router[_0xcbf1('0x9')](_0xcbf1('0x11'),auth[_0xcbf1('0xa')](),controller[_0xcbf1('0x12')]);router['post']('/',auth[_0xcbf1('0xa')](),controller['create']);router['put']('/:id',auth[_0xcbf1('0xa')](),controller['update']);router[_0xcbf1('0x13')](_0xcbf1('0xb'),auth[_0xcbf1('0xa')](),controller[_0xcbf1('0x14')]);module[_0xcbf1('0x15')]=router;
\ No newline at end of file
+var _0x6b00=['/:id/fields','getSubjects','/:id/descriptions','getDescriptions','post','put','/:id','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','show'];(function(_0x2b1e9a,_0x44d00e){var _0x814578=function(_0x4acdb2){while(--_0x4acdb2){_0x2b1e9a['push'](_0x2b1e9a['shift']());}};_0x814578(++_0x44d00e);}(_0x6b00,0x1ad));var _0x06b0=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x6b00[_0x502c7d];return _0x30b7ed;};'use strict';var multer=require(_0x06b0('0x0'));var util=require(_0x06b0('0x1'));var path=require(_0x06b0('0x2'));var timeout=require(_0x06b0('0x3'));var express=require(_0x06b0('0x4'));var router=express[_0x06b0('0x5')]();var fs_extra=require(_0x06b0('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x06b0('0x7'));var config=require(_0x06b0('0x8'));var controller=require('./intDynamics365Configuration.controller');router[_0x06b0('0x9')]('/',auth[_0x06b0('0xa')](),controller['index']);router[_0x06b0('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x06b0('0xb')]);router[_0x06b0('0x9')](_0x06b0('0xc'),auth[_0x06b0('0xa')](),controller['getFields']);router[_0x06b0('0x9')]('/:id/subjects',auth['isAuthenticated'](),controller[_0x06b0('0xd')]);router[_0x06b0('0x9')](_0x06b0('0xe'),auth[_0x06b0('0xa')](),controller[_0x06b0('0xf')]);router[_0x06b0('0x10')]('/',auth[_0x06b0('0xa')](),controller['create']);router[_0x06b0('0x11')](_0x06b0('0x12'),auth[_0x06b0('0xa')](),controller['update']);router[_0x06b0('0x13')](_0x06b0('0x12'),auth['isAuthenticated'](),controller[_0x06b0('0x14')]);module['exports']=router;
\ No newline at end of file
index 4077ccc..735d03c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x357e=['sequelize','exports','STRING','incident','phonecall'];(function(_0x28ba9e,_0x1e8204){var _0x18c3cb=function(_0x2cf51b){while(--_0x2cf51b){_0x28ba9e['push'](_0x28ba9e['shift']());}};_0x18c3cb(++_0x1e8204);}(_0x357e,0x14f));var _0xe357=function(_0x45b034,_0x3a57dd){_0x45b034=_0x45b034-0x0;var _0x509cb0=_0x357e[_0x45b034];return _0x509cb0;};'use strict';var Sequelize=require(_0xe357('0x0'));module[_0xe357('0x1')]={'name':{'type':Sequelize[_0xe357('0x2')]},'description':{'type':Sequelize[_0xe357('0x2')]},'ticketType':{'type':Sequelize['ENUM'](_0xe357('0x3'),_0xe357('0x4')),'defaultValue':_0xe357('0x3')}};
\ No newline at end of file
+var _0xc5df=['STRING','phonecall','incident','sequelize','exports'];(function(_0x3e0b77,_0x319ff0){var _0x1f1948=function(_0x31cdb6){while(--_0x31cdb6){_0x3e0b77['push'](_0x3e0b77['shift']());}};_0x1f1948(++_0x319ff0);}(_0xc5df,0x9e));var _0xfc5d=function(_0x1d9edf,_0x14043b){_0x1d9edf=_0x1d9edf-0x0;var _0x6c6aed=_0xc5df[_0x1d9edf];return _0x6c6aed;};'use strict';var Sequelize=require(_0xfc5d('0x0'));module[_0xfc5d('0x1')]={'name':{'type':Sequelize[_0xfc5d('0x2')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize['ENUM']('incident',_0xfc5d('0x3')),'defaultValue':_0xfc5d('0x4')}};
\ No newline at end of file
index 747f5d3..4fa8ee2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe345=['params','rawAttributes','catch','create','body','update','find','destroy','Dynamics365Field','order','getFields','nolimit','getSubjects','findOne','getDescriptions','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','error','stack','name','send','index','map','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','sort','pick','filter','where','merge','VIRTUAL','options','Dynamics365Configuration','includeAll','include','findAll','show'];(function(_0x1f2734,_0x529bad){var _0x17b385=function(_0x5eabc1){while(--_0x5eabc1){_0x1f2734['push'](_0x1f2734['shift']());}};_0x17b385(++_0x529bad);}(_0xe345,0x19f));var _0x5e34=function(_0x27c7b7,_0x3ac29c){_0x27c7b7=_0x27c7b7-0x0;var _0x22e7d5=_0xe345[_0x27c7b7];return _0x22e7d5;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x5e34('0x0'));var jsonpatch=require(_0x5e34('0x1'));var rp=require(_0x5e34('0x2'));var moment=require(_0x5e34('0x3'));var BPromise=require(_0x5e34('0x4'));var Mustache=require(_0x5e34('0x5'));var util=require(_0x5e34('0x6'));var path=require(_0x5e34('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x5e34('0x8'));var fs=require('fs');var fs_extra=require(_0x5e34('0x9'));var _=require('lodash');var squel=require(_0x5e34('0xa'));var crypto=require(_0x5e34('0xb'));var jsforce=require(_0x5e34('0xc'));var deskjs=require(_0x5e34('0xd'));var toCsv=require(_0x5e34('0xe'));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(_0x5e34('0xf'));var hardwareService=require(_0x5e34('0x10'));var logger=require(_0x5e34('0x11'))(_0x5e34('0x12'));var utils=require(_0x5e34('0x13'));var config=require(_0x5e34('0x14'));var licenseUtil=require(_0x5e34('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x30359d,_0x39eeef){_0x39eeef=_0x39eeef||0xcc;return function(_0x5ba533){if(_0x5ba533){return _0x30359d[_0x5e34('0x16')](_0x39eeef);}return _0x30359d[_0x5e34('0x17')](_0x39eeef)['end']();};}function respondWithResult(_0x28fdeb,_0x21953f){_0x21953f=_0x21953f||0xc8;return function(_0x418aa8){if(_0x418aa8){return _0x28fdeb['status'](_0x21953f)[_0x5e34('0x18')](_0x418aa8);}};}function respondWithFilteredResult(_0x4ba3ed,_0x53f458){return function(_0x446ee2){if(_0x446ee2){var _0xc29efe=typeof _0x53f458[_0x5e34('0x19')]===_0x5e34('0x1a')&&typeof _0x53f458['limit']===_0x5e34('0x1a');var _0x29f28c=_0x446ee2[_0x5e34('0x1b')];var _0x3de353=_0xc29efe?0x0:_0x53f458['offset'];var _0x42aaac=_0xc29efe?_0x446ee2['count']:_0x53f458[_0x5e34('0x19')]+_0x53f458[_0x5e34('0x1c')];var _0x4a31a6;if(_0x42aaac>=_0x29f28c){_0x42aaac=_0x29f28c;_0x4a31a6=0xc8;}else{_0x4a31a6=0xce;}_0x4ba3ed[_0x5e34('0x17')](_0x4a31a6);return _0x4ba3ed[_0x5e34('0x1d')](_0x5e34('0x1e'),_0x3de353+'-'+_0x42aaac+'/'+_0x29f28c)['json'](_0x446ee2);}return null;};}function patchUpdates(_0x1138d7){return function(_0x397587){try{jsonpatch[_0x5e34('0x1f')](_0x397587,_0x1138d7,!![]);}catch(_0x4daca4){return BPromise[_0x5e34('0x20')](_0x4daca4);}return _0x397587[_0x5e34('0x21')]();};}function saveUpdates(_0x28480c,_0xfd80d1){return function(_0x526318){if(_0x526318){return _0x526318['update'](_0x28480c)[_0x5e34('0x22')](function(_0x245fe9){return _0x245fe9;});}return null;};}function removeEntity(_0x3942ba,_0x2c86ab){return function(_0x4a3d96){if(_0x4a3d96){return _0x4a3d96['destroy']()[_0x5e34('0x22')](function(){_0x3942ba[_0x5e34('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x197fd1,_0x345da8){return function(_0xaf4d91){if(!_0xaf4d91){_0x197fd1[_0x5e34('0x16')](0x194);}return _0xaf4d91;};}function handleError(_0x213550,_0x10363e){_0x10363e=_0x10363e||0x1f4;return function(_0x42b94c){logger[_0x5e34('0x23')](_0x42b94c[_0x5e34('0x24')]);if(_0x42b94c[_0x5e34('0x25')]){delete _0x42b94c[_0x5e34('0x25')];}_0x213550[_0x5e34('0x17')](_0x10363e)[_0x5e34('0x26')](_0x42b94c);};}exports[_0x5e34('0x27')]=function(_0x11de40,_0x48e4dc){var _0x371041={},_0x25b665={},_0x4103e3={'count':0x0,'rows':[]};var _0x325597=_[_0x5e34('0x28')](db['Dynamics365Configuration']['rawAttributes'],function(_0x5d6841){return{'name':_0x5d6841[_0x5e34('0x29')],'type':_0x5d6841[_0x5e34('0x2a')][_0x5e34('0x2b')]};});_0x25b665[_0x5e34('0x2c')]=_[_0x5e34('0x28')](_0x325597,_0x5e34('0x25'));_0x25b665[_0x5e34('0x2d')]=_[_0x5e34('0x2e')](_0x11de40['query']);_0x25b665[_0x5e34('0x2f')]=_['intersection'](_0x25b665[_0x5e34('0x2c')],_0x25b665[_0x5e34('0x2d')]);_0x371041[_0x5e34('0x30')]=_[_0x5e34('0x31')](_0x25b665['model'],qs[_0x5e34('0x32')](_0x11de40[_0x5e34('0x2d')]['fields']));_0x371041[_0x5e34('0x30')]=_0x371041[_0x5e34('0x30')][_0x5e34('0x33')]?_0x371041['attributes']:_0x25b665[_0x5e34('0x2c')];if(!_0x11de40[_0x5e34('0x2d')][_0x5e34('0x34')]('nolimit')){_0x371041[_0x5e34('0x1c')]=qs[_0x5e34('0x1c')](_0x11de40[_0x5e34('0x2d')]['limit']);_0x371041['offset']=qs['offset'](_0x11de40[_0x5e34('0x2d')][_0x5e34('0x19')]);}_0x371041['order']=qs[_0x5e34('0x35')](_0x11de40[_0x5e34('0x2d')][_0x5e34('0x35')]);_0x371041['where']=qs[_0x5e34('0x2f')](_[_0x5e34('0x36')](_0x11de40[_0x5e34('0x2d')],_0x25b665[_0x5e34('0x2f')]),_0x325597);if(_0x11de40[_0x5e34('0x2d')][_0x5e34('0x37')]){_0x371041[_0x5e34('0x38')]=_[_0x5e34('0x39')](_0x371041['where'],{'$or':_['map'](_0x325597,function(_0x2ded3d){if(_0x2ded3d[_0x5e34('0x2a')]!==_0x5e34('0x3a')){var _0x18fa7a={};_0x18fa7a[_0x2ded3d['name']]={'$like':'%'+_0x11de40[_0x5e34('0x2d')][_0x5e34('0x37')]+'%'};return _0x18fa7a;}})});}_0x371041=_[_0x5e34('0x39')]({},_0x371041,_0x11de40[_0x5e34('0x3b')]);var _0x220d65={'where':_0x371041['where']};return db[_0x5e34('0x3c')][_0x5e34('0x1b')](_0x220d65)[_0x5e34('0x22')](function(_0x5f21e1){_0x4103e3['count']=_0x5f21e1;if(_0x11de40[_0x5e34('0x2d')][_0x5e34('0x3d')]){_0x371041[_0x5e34('0x3e')]=[{'all':!![]}];}return db[_0x5e34('0x3c')][_0x5e34('0x3f')](_0x371041);})[_0x5e34('0x22')](function(_0x532d6e){_0x4103e3['rows']=_0x532d6e;return _0x4103e3;})['then'](respondWithFilteredResult(_0x48e4dc,_0x371041))['catch'](handleError(_0x48e4dc,null));};exports[_0x5e34('0x40')]=function(_0x52d25e,_0x40dbdb){var _0x787043={'raw':![],'where':{'id':_0x52d25e[_0x5e34('0x41')]['id']}},_0x27b50a={};_0x27b50a[_0x5e34('0x2c')]=_[_0x5e34('0x2e')](db[_0x5e34('0x3c')][_0x5e34('0x42')]);_0x27b50a[_0x5e34('0x2d')]=_[_0x5e34('0x2e')](_0x52d25e[_0x5e34('0x2d')]);_0x27b50a['filters']=_[_0x5e34('0x31')](_0x27b50a[_0x5e34('0x2c')],_0x27b50a['query']);_0x787043[_0x5e34('0x30')]=_[_0x5e34('0x31')](_0x27b50a[_0x5e34('0x2c')],qs[_0x5e34('0x32')](_0x52d25e['query']['fields']));_0x787043[_0x5e34('0x30')]=_0x787043[_0x5e34('0x30')][_0x5e34('0x33')]?_0x787043[_0x5e34('0x30')]:_0x27b50a[_0x5e34('0x2c')];if(_0x52d25e[_0x5e34('0x2d')]['includeAll']){_0x787043[_0x5e34('0x3e')]=[{'all':!![]}];}_0x787043=_['merge']({},_0x787043,_0x52d25e[_0x5e34('0x3b')]);return db[_0x5e34('0x3c')]['find'](_0x787043)[_0x5e34('0x22')](handleEntityNotFound(_0x40dbdb,null))[_0x5e34('0x22')](respondWithResult(_0x40dbdb,null))[_0x5e34('0x43')](handleError(_0x40dbdb,null));};exports['create']=function(_0x3b3efa,_0x5fc298){return db[_0x5e34('0x3c')][_0x5e34('0x44')](_0x3b3efa[_0x5e34('0x45')],{})[_0x5e34('0x22')](respondWithResult(_0x5fc298,0xc9))[_0x5e34('0x43')](handleError(_0x5fc298,null));};exports[_0x5e34('0x46')]=function(_0x3387cd,_0x18b9cb){if(_0x3387cd[_0x5e34('0x45')]['id']){delete _0x3387cd[_0x5e34('0x45')]['id'];}return db[_0x5e34('0x3c')][_0x5e34('0x47')]({'where':{'id':_0x3387cd[_0x5e34('0x41')]['id']}})[_0x5e34('0x22')](handleEntityNotFound(_0x18b9cb,null))[_0x5e34('0x22')](saveUpdates(_0x3387cd[_0x5e34('0x45')],null))['then'](respondWithResult(_0x18b9cb,null))[_0x5e34('0x43')](handleError(_0x18b9cb,null));};exports[_0x5e34('0x48')]=function(_0x7d6f5d,_0x1c954a){return db[_0x5e34('0x3c')]['find']({'where':{'id':_0x7d6f5d[_0x5e34('0x41')]['id']}})[_0x5e34('0x22')](handleEntityNotFound(_0x1c954a,null))['then'](removeEntity(_0x1c954a,null))[_0x5e34('0x43')](handleError(_0x1c954a,null));};exports['getFields']=function(_0x25cc3d,_0x509055,_0x2c0166){var _0x2f6d9c={};var _0x203b8={};var _0x4576f5;var _0x2c5f0a;return db[_0x5e34('0x3c')]['findOne']({'where':{'id':_0x25cc3d['params']['id']}})[_0x5e34('0x22')](handleEntityNotFound(_0x509055,null))[_0x5e34('0x22')](function(_0x556a03){if(_0x556a03){_0x4576f5=_0x556a03;_0x203b8[_0x5e34('0x2c')]=_[_0x5e34('0x2e')](db[_0x5e34('0x49')][_0x5e34('0x42')]);_0x203b8[_0x5e34('0x2d')]=_[_0x5e34('0x2e')](_0x25cc3d[_0x5e34('0x2d')]);_0x203b8[_0x5e34('0x2f')]=_['intersection'](_0x203b8['model'],_0x203b8[_0x5e34('0x2d')]);_0x2f6d9c[_0x5e34('0x30')]=_[_0x5e34('0x31')](_0x203b8[_0x5e34('0x2c')],qs['fields'](_0x25cc3d['query'][_0x5e34('0x32')]));_0x2f6d9c[_0x5e34('0x30')]=_0x2f6d9c[_0x5e34('0x30')]['length']?_0x2f6d9c['attributes']:_0x203b8['model'];_0x2f6d9c[_0x5e34('0x4a')]=qs[_0x5e34('0x35')](_0x25cc3d['query'][_0x5e34('0x35')]);_0x2f6d9c[_0x5e34('0x38')]=qs['filters'](_[_0x5e34('0x36')](_0x25cc3d[_0x5e34('0x2d')],_0x203b8[_0x5e34('0x2f')]));if(_0x25cc3d['query']['filter']){_0x2f6d9c['where']=_[_0x5e34('0x39')](_0x2f6d9c[_0x5e34('0x38')],{'$or':_[_0x5e34('0x28')](_0x2f6d9c['attributes'],function(_0xc4f671){var _0xf10a2e={};_0xf10a2e[_0xc4f671]={'$like':'%'+_0x25cc3d[_0x5e34('0x2d')][_0x5e34('0x37')]+'%'};return _0xf10a2e;})});}_0x2f6d9c=_['merge']({},_0x2f6d9c,_0x25cc3d[_0x5e34('0x3b')]);return _0x4576f5[_0x5e34('0x4b')](_0x2f6d9c);}})[_0x5e34('0x22')](function(_0x171b4b){if(_0x171b4b){_0x2c5f0a=_0x171b4b[_0x5e34('0x33')];if(!_0x25cc3d[_0x5e34('0x2d')][_0x5e34('0x34')](_0x5e34('0x4c'))){_0x2f6d9c[_0x5e34('0x1c')]=qs[_0x5e34('0x1c')](_0x25cc3d[_0x5e34('0x2d')][_0x5e34('0x1c')]);_0x2f6d9c[_0x5e34('0x19')]=qs[_0x5e34('0x19')](_0x25cc3d[_0x5e34('0x2d')][_0x5e34('0x19')]);}return _0x4576f5[_0x5e34('0x4b')](_0x2f6d9c);}})[_0x5e34('0x22')](function(_0x3bad9d){if(_0x3bad9d){return _0x3bad9d?{'count':_0x2c5f0a,'rows':_0x3bad9d}:null;}})[_0x5e34('0x22')](respondWithResult(_0x509055,null))['catch'](handleError(_0x509055,null));};exports[_0x5e34('0x4d')]=function(_0x5c6182,_0x132841,_0x3ab077){var _0x5710e0={};var _0x4e2355={};var _0x1cb081;var _0x668ce;return db['Dynamics365Configuration'][_0x5e34('0x4e')]({'where':{'id':_0x5c6182[_0x5e34('0x41')]['id']}})[_0x5e34('0x22')](handleEntityNotFound(_0x132841,null))[_0x5e34('0x22')](function(_0x19349c){if(_0x19349c){_0x1cb081=_0x19349c;_0x4e2355[_0x5e34('0x2c')]=_[_0x5e34('0x2e')](db[_0x5e34('0x49')][_0x5e34('0x42')]);_0x4e2355[_0x5e34('0x2d')]=_[_0x5e34('0x2e')](_0x5c6182[_0x5e34('0x2d')]);_0x4e2355[_0x5e34('0x2f')]=_['intersection'](_0x4e2355['model'],_0x4e2355[_0x5e34('0x2d')]);_0x5710e0[_0x5e34('0x30')]=_[_0x5e34('0x31')](_0x4e2355[_0x5e34('0x2c')],qs[_0x5e34('0x32')](_0x5c6182[_0x5e34('0x2d')][_0x5e34('0x32')]));_0x5710e0['attributes']=_0x5710e0['attributes']['length']?_0x5710e0[_0x5e34('0x30')]:_0x4e2355[_0x5e34('0x2c')];_0x5710e0[_0x5e34('0x4a')]=qs['sort'](_0x5c6182[_0x5e34('0x2d')]['sort']);_0x5710e0[_0x5e34('0x38')]=qs[_0x5e34('0x2f')](_['pick'](_0x5c6182[_0x5e34('0x2d')],_0x4e2355[_0x5e34('0x2f')]));if(_0x5c6182[_0x5e34('0x2d')]['filter']){_0x5710e0[_0x5e34('0x38')]=_[_0x5e34('0x39')](_0x5710e0[_0x5e34('0x38')],{'$or':_[_0x5e34('0x28')](_0x5710e0['attributes'],function(_0x36cbb6){var _0x11c0aa={};_0x11c0aa[_0x36cbb6]={'$like':'%'+_0x5c6182[_0x5e34('0x2d')][_0x5e34('0x37')]+'%'};return _0x11c0aa;})});}_0x5710e0=_['merge']({},_0x5710e0,_0x5c6182['options']);return _0x1cb081[_0x5e34('0x4d')](_0x5710e0);}})['then'](function(_0x30f93e){if(_0x30f93e){_0x668ce=_0x30f93e[_0x5e34('0x33')];if(!_0x5c6182[_0x5e34('0x2d')][_0x5e34('0x34')](_0x5e34('0x4c'))){_0x5710e0[_0x5e34('0x1c')]=qs[_0x5e34('0x1c')](_0x5c6182['query'][_0x5e34('0x1c')]);_0x5710e0['offset']=qs['offset'](_0x5c6182[_0x5e34('0x2d')][_0x5e34('0x19')]);}return _0x1cb081[_0x5e34('0x4d')](_0x5710e0);}})[_0x5e34('0x22')](function(_0x34be94){if(_0x34be94){return _0x34be94?{'count':_0x668ce,'rows':_0x34be94}:null;}})[_0x5e34('0x22')](respondWithResult(_0x132841,null))[_0x5e34('0x43')](handleError(_0x132841,null));};exports[_0x5e34('0x4f')]=function(_0x42a1a0,_0x540e87,_0x37c433){var _0x342569={};var _0x2070be={};var _0x22f614;var _0x3fb95a;return db[_0x5e34('0x3c')]['findOne']({'where':{'id':_0x42a1a0['params']['id']}})[_0x5e34('0x22')](handleEntityNotFound(_0x540e87,null))[_0x5e34('0x22')](function(_0x4fe9c1){if(_0x4fe9c1){_0x22f614=_0x4fe9c1;_0x2070be[_0x5e34('0x2c')]=_['keys'](db[_0x5e34('0x49')][_0x5e34('0x42')]);_0x2070be[_0x5e34('0x2d')]=_[_0x5e34('0x2e')](_0x42a1a0[_0x5e34('0x2d')]);_0x2070be[_0x5e34('0x2f')]=_[_0x5e34('0x31')](_0x2070be[_0x5e34('0x2c')],_0x2070be[_0x5e34('0x2d')]);_0x342569[_0x5e34('0x30')]=_[_0x5e34('0x31')](_0x2070be[_0x5e34('0x2c')],qs[_0x5e34('0x32')](_0x42a1a0[_0x5e34('0x2d')][_0x5e34('0x32')]));_0x342569[_0x5e34('0x30')]=_0x342569['attributes'][_0x5e34('0x33')]?_0x342569[_0x5e34('0x30')]:_0x2070be[_0x5e34('0x2c')];_0x342569[_0x5e34('0x4a')]=qs['sort'](_0x42a1a0['query'][_0x5e34('0x35')]);_0x342569['where']=qs[_0x5e34('0x2f')](_['pick'](_0x42a1a0[_0x5e34('0x2d')],_0x2070be[_0x5e34('0x2f')]));if(_0x42a1a0[_0x5e34('0x2d')][_0x5e34('0x37')]){_0x342569[_0x5e34('0x38')]=_[_0x5e34('0x39')](_0x342569[_0x5e34('0x38')],{'$or':_[_0x5e34('0x28')](_0x342569[_0x5e34('0x30')],function(_0x69e834){var _0x2aff46={};_0x2aff46[_0x69e834]={'$like':'%'+_0x42a1a0[_0x5e34('0x2d')][_0x5e34('0x37')]+'%'};return _0x2aff46;})});}_0x342569=_[_0x5e34('0x39')]({},_0x342569,_0x42a1a0['options']);return _0x22f614[_0x5e34('0x4f')](_0x342569);}})['then'](function(_0x3540f1){if(_0x3540f1){_0x3fb95a=_0x3540f1[_0x5e34('0x33')];if(!_0x42a1a0[_0x5e34('0x2d')][_0x5e34('0x34')]('nolimit')){_0x342569[_0x5e34('0x1c')]=qs['limit'](_0x42a1a0[_0x5e34('0x2d')][_0x5e34('0x1c')]);_0x342569[_0x5e34('0x19')]=qs[_0x5e34('0x19')](_0x42a1a0[_0x5e34('0x2d')][_0x5e34('0x19')]);}return _0x22f614[_0x5e34('0x4f')](_0x342569);}})[_0x5e34('0x22')](function(_0x40ae88){if(_0x40ae88){return _0x40ae88?{'count':_0x3fb95a,'rows':_0x40ae88}:null;}})[_0x5e34('0x22')](respondWithResult(_0x540e87,null))[_0x5e34('0x43')](handleError(_0x540e87,null));};
\ No newline at end of file
+var _0x5d72=['reject','save','update','destroy','then','error','stack','name','send','index','Dynamics365Configuration','fieldName','type','key','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','rawAttributes','find','catch','create','body','findOne','keys','getFields','nolimit','getSubjects','Dynamics365Field','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','to-csv','ejs','lodash','crypto','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply'];(function(_0x445c98,_0x132bf7){var _0x2fe913=function(_0x32e864){while(--_0x32e864){_0x445c98['push'](_0x445c98['shift']());}};_0x2fe913(++_0x132bf7);}(_0x5d72,0x80));var _0x25d7=function(_0x289c3e,_0x3614b5){_0x289c3e=_0x289c3e-0x0;var _0x25a4b3=_0x5d72[_0x289c3e];return _0x25a4b3;};'use strict';var emlformat=require(_0x25d7('0x0'));var rimraf=require(_0x25d7('0x1'));var zipdir=require(_0x25d7('0x2'));var jsonpatch=require(_0x25d7('0x3'));var rp=require(_0x25d7('0x4'));var moment=require(_0x25d7('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x25d7('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x25d7('0x7'));var ejs=require(_0x25d7('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x25d7('0x9'));var squel=require('squel');var crypto=require(_0x25d7('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x25d7('0xb'));var Papa=require(_0x25d7('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x25d7('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x25d7('0xe'));var logger=require(_0x25d7('0xf'))(_0x25d7('0x10'));var utils=require(_0x25d7('0x11'));var config=require(_0x25d7('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x25d7('0x13'))['db'];function respondWithStatusCode(_0x567047,_0x41a3ed){_0x41a3ed=_0x41a3ed||0xcc;return function(_0x4e7269){if(_0x4e7269){return _0x567047[_0x25d7('0x14')](_0x41a3ed);}return _0x567047['status'](_0x41a3ed)['end']();};}function respondWithResult(_0x6d13ee,_0x35e969){_0x35e969=_0x35e969||0xc8;return function(_0x2de910){if(_0x2de910){return _0x6d13ee[_0x25d7('0x15')](_0x35e969)[_0x25d7('0x16')](_0x2de910);}};}function respondWithFilteredResult(_0x6ecb9c,_0x2d9555){return function(_0x75593){if(_0x75593){var _0x2b2d6b=typeof _0x2d9555[_0x25d7('0x17')]===_0x25d7('0x18')&&typeof _0x2d9555[_0x25d7('0x19')]==='undefined';var _0x16abf6=_0x75593[_0x25d7('0x1a')];var _0x17ca99=_0x2b2d6b?0x0:_0x2d9555[_0x25d7('0x17')];var _0x2473e8=_0x2b2d6b?_0x75593[_0x25d7('0x1a')]:_0x2d9555[_0x25d7('0x17')]+_0x2d9555[_0x25d7('0x19')];var _0x2d86bd;if(_0x2473e8>=_0x16abf6){_0x2473e8=_0x16abf6;_0x2d86bd=0xc8;}else{_0x2d86bd=0xce;}_0x6ecb9c[_0x25d7('0x15')](_0x2d86bd);return _0x6ecb9c[_0x25d7('0x1b')](_0x25d7('0x1c'),_0x17ca99+'-'+_0x2473e8+'/'+_0x16abf6)[_0x25d7('0x16')](_0x75593);}return null;};}function patchUpdates(_0x413645){return function(_0x2300d1){try{jsonpatch[_0x25d7('0x1d')](_0x2300d1,_0x413645,!![]);}catch(_0x7de068){return BPromise[_0x25d7('0x1e')](_0x7de068);}return _0x2300d1[_0x25d7('0x1f')]();};}function saveUpdates(_0x152f1e,_0x37538a){return function(_0x102a57){if(_0x102a57){return _0x102a57[_0x25d7('0x20')](_0x152f1e)['then'](function(_0x9d8cb0){return _0x9d8cb0;});}return null;};}function removeEntity(_0x4600b8,_0x3cab18){return function(_0x18d15d){if(_0x18d15d){return _0x18d15d[_0x25d7('0x21')]()[_0x25d7('0x22')](function(){_0x4600b8[_0x25d7('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0xa621d,_0x232d7d){return function(_0x12cd83){if(!_0x12cd83){_0xa621d['sendStatus'](0x194);}return _0x12cd83;};}function handleError(_0x2b9621,_0x101cd8){_0x101cd8=_0x101cd8||0x1f4;return function(_0xc028df){logger[_0x25d7('0x23')](_0xc028df[_0x25d7('0x24')]);if(_0xc028df[_0x25d7('0x25')]){delete _0xc028df[_0x25d7('0x25')];}_0x2b9621[_0x25d7('0x15')](_0x101cd8)[_0x25d7('0x26')](_0xc028df);};}exports[_0x25d7('0x27')]=function(_0xef0aa,_0x430c8c){var _0x3c98e6={},_0xf5dadd={},_0x421f92={'count':0x0,'rows':[]};var _0x583526=_['map'](db[_0x25d7('0x28')]['rawAttributes'],function(_0x1bce9c){return{'name':_0x1bce9c[_0x25d7('0x29')],'type':_0x1bce9c[_0x25d7('0x2a')][_0x25d7('0x2b')]};});_0xf5dadd[_0x25d7('0x2c')]=_[_0x25d7('0x2d')](_0x583526,_0x25d7('0x25'));_0xf5dadd[_0x25d7('0x2e')]=_['keys'](_0xef0aa['query']);_0xf5dadd[_0x25d7('0x2f')]=_[_0x25d7('0x30')](_0xf5dadd[_0x25d7('0x2c')],_0xf5dadd[_0x25d7('0x2e')]);_0x3c98e6['attributes']=_[_0x25d7('0x30')](_0xf5dadd[_0x25d7('0x2c')],qs[_0x25d7('0x31')](_0xef0aa[_0x25d7('0x2e')][_0x25d7('0x31')]));_0x3c98e6[_0x25d7('0x32')]=_0x3c98e6[_0x25d7('0x32')][_0x25d7('0x33')]?_0x3c98e6['attributes']:_0xf5dadd[_0x25d7('0x2c')];if(!_0xef0aa['query'][_0x25d7('0x34')]('nolimit')){_0x3c98e6['limit']=qs[_0x25d7('0x19')](_0xef0aa[_0x25d7('0x2e')][_0x25d7('0x19')]);_0x3c98e6[_0x25d7('0x17')]=qs[_0x25d7('0x17')](_0xef0aa[_0x25d7('0x2e')][_0x25d7('0x17')]);}_0x3c98e6[_0x25d7('0x35')]=qs[_0x25d7('0x36')](_0xef0aa[_0x25d7('0x2e')][_0x25d7('0x36')]);_0x3c98e6[_0x25d7('0x37')]=qs[_0x25d7('0x2f')](_[_0x25d7('0x38')](_0xef0aa[_0x25d7('0x2e')],_0xf5dadd[_0x25d7('0x2f')]),_0x583526);if(_0xef0aa['query'][_0x25d7('0x39')]){_0x3c98e6[_0x25d7('0x37')]=_['merge'](_0x3c98e6[_0x25d7('0x37')],{'$or':_[_0x25d7('0x2d')](_0x583526,function(_0x2b1a67){if(_0x2b1a67['type']!==_0x25d7('0x3a')){var _0x29bc14={};_0x29bc14[_0x2b1a67[_0x25d7('0x25')]]={'$like':'%'+_0xef0aa[_0x25d7('0x2e')][_0x25d7('0x39')]+'%'};return _0x29bc14;}})});}_0x3c98e6=_[_0x25d7('0x3b')]({},_0x3c98e6,_0xef0aa[_0x25d7('0x3c')]);var _0x2b687c={'where':_0x3c98e6[_0x25d7('0x37')]};return db[_0x25d7('0x28')][_0x25d7('0x1a')](_0x2b687c)[_0x25d7('0x22')](function(_0x304043){_0x421f92[_0x25d7('0x1a')]=_0x304043;if(_0xef0aa[_0x25d7('0x2e')][_0x25d7('0x3d')]){_0x3c98e6[_0x25d7('0x3e')]=[{'all':!![]}];}return db[_0x25d7('0x28')][_0x25d7('0x3f')](_0x3c98e6);})[_0x25d7('0x22')](function(_0x32d042){_0x421f92[_0x25d7('0x40')]=_0x32d042;return _0x421f92;})['then'](respondWithFilteredResult(_0x430c8c,_0x3c98e6))['catch'](handleError(_0x430c8c,null));};exports[_0x25d7('0x41')]=function(_0x5249a3,_0x10bc7f){var _0x18505b={'raw':![],'where':{'id':_0x5249a3[_0x25d7('0x42')]['id']}},_0x50abb6={};_0x50abb6[_0x25d7('0x2c')]=_['keys'](db[_0x25d7('0x28')][_0x25d7('0x43')]);_0x50abb6['query']=_['keys'](_0x5249a3[_0x25d7('0x2e')]);_0x50abb6[_0x25d7('0x2f')]=_[_0x25d7('0x30')](_0x50abb6[_0x25d7('0x2c')],_0x50abb6[_0x25d7('0x2e')]);_0x18505b[_0x25d7('0x32')]=_[_0x25d7('0x30')](_0x50abb6[_0x25d7('0x2c')],qs[_0x25d7('0x31')](_0x5249a3[_0x25d7('0x2e')]['fields']));_0x18505b[_0x25d7('0x32')]=_0x18505b[_0x25d7('0x32')][_0x25d7('0x33')]?_0x18505b[_0x25d7('0x32')]:_0x50abb6[_0x25d7('0x2c')];if(_0x5249a3[_0x25d7('0x2e')][_0x25d7('0x3d')]){_0x18505b[_0x25d7('0x3e')]=[{'all':!![]}];}_0x18505b=_[_0x25d7('0x3b')]({},_0x18505b,_0x5249a3[_0x25d7('0x3c')]);return db[_0x25d7('0x28')][_0x25d7('0x44')](_0x18505b)['then'](handleEntityNotFound(_0x10bc7f,null))[_0x25d7('0x22')](respondWithResult(_0x10bc7f,null))[_0x25d7('0x45')](handleError(_0x10bc7f,null));};exports['create']=function(_0x5b452d,_0x42ab35){return db[_0x25d7('0x28')][_0x25d7('0x46')](_0x5b452d['body'],{})[_0x25d7('0x22')](respondWithResult(_0x42ab35,0xc9))['catch'](handleError(_0x42ab35,null));};exports[_0x25d7('0x20')]=function(_0x2bfd35,_0x10130b){if(_0x2bfd35[_0x25d7('0x47')]['id']){delete _0x2bfd35[_0x25d7('0x47')]['id'];}return db[_0x25d7('0x28')][_0x25d7('0x44')]({'where':{'id':_0x2bfd35[_0x25d7('0x42')]['id']}})[_0x25d7('0x22')](handleEntityNotFound(_0x10130b,null))['then'](saveUpdates(_0x2bfd35[_0x25d7('0x47')],null))[_0x25d7('0x22')](respondWithResult(_0x10130b,null))[_0x25d7('0x45')](handleError(_0x10130b,null));};exports[_0x25d7('0x21')]=function(_0x463814,_0x41ac8a){return db['Dynamics365Configuration'][_0x25d7('0x44')]({'where':{'id':_0x463814[_0x25d7('0x42')]['id']}})[_0x25d7('0x22')](handleEntityNotFound(_0x41ac8a,null))[_0x25d7('0x22')](removeEntity(_0x41ac8a,null))[_0x25d7('0x45')](handleError(_0x41ac8a,null));};exports['getFields']=function(_0x180606,_0x563740,_0x239bc5){var _0x578680={};var _0x50286c={};var _0x268dd9;var _0x3bdfc1;return db[_0x25d7('0x28')][_0x25d7('0x48')]({'where':{'id':_0x180606[_0x25d7('0x42')]['id']}})['then'](handleEntityNotFound(_0x563740,null))['then'](function(_0x3938c6){if(_0x3938c6){_0x268dd9=_0x3938c6;_0x50286c[_0x25d7('0x2c')]=_[_0x25d7('0x49')](db['Dynamics365Field'][_0x25d7('0x43')]);_0x50286c[_0x25d7('0x2e')]=_[_0x25d7('0x49')](_0x180606[_0x25d7('0x2e')]);_0x50286c[_0x25d7('0x2f')]=_[_0x25d7('0x30')](_0x50286c[_0x25d7('0x2c')],_0x50286c[_0x25d7('0x2e')]);_0x578680[_0x25d7('0x32')]=_[_0x25d7('0x30')](_0x50286c['model'],qs[_0x25d7('0x31')](_0x180606[_0x25d7('0x2e')][_0x25d7('0x31')]));_0x578680[_0x25d7('0x32')]=_0x578680['attributes'][_0x25d7('0x33')]?_0x578680['attributes']:_0x50286c['model'];_0x578680[_0x25d7('0x35')]=qs[_0x25d7('0x36')](_0x180606[_0x25d7('0x2e')]['sort']);_0x578680[_0x25d7('0x37')]=qs['filters'](_[_0x25d7('0x38')](_0x180606[_0x25d7('0x2e')],_0x50286c[_0x25d7('0x2f')]));if(_0x180606[_0x25d7('0x2e')][_0x25d7('0x39')]){_0x578680[_0x25d7('0x37')]=_[_0x25d7('0x3b')](_0x578680[_0x25d7('0x37')],{'$or':_[_0x25d7('0x2d')](_0x578680['attributes'],function(_0x473c23){var _0x12ddbc={};_0x12ddbc[_0x473c23]={'$like':'%'+_0x180606[_0x25d7('0x2e')][_0x25d7('0x39')]+'%'};return _0x12ddbc;})});}_0x578680=_[_0x25d7('0x3b')]({},_0x578680,_0x180606[_0x25d7('0x3c')]);return _0x268dd9[_0x25d7('0x4a')](_0x578680);}})[_0x25d7('0x22')](function(_0x106bed){if(_0x106bed){_0x3bdfc1=_0x106bed[_0x25d7('0x33')];if(!_0x180606[_0x25d7('0x2e')][_0x25d7('0x34')](_0x25d7('0x4b'))){_0x578680[_0x25d7('0x19')]=qs[_0x25d7('0x19')](_0x180606[_0x25d7('0x2e')][_0x25d7('0x19')]);_0x578680['offset']=qs[_0x25d7('0x17')](_0x180606[_0x25d7('0x2e')]['offset']);}return _0x268dd9[_0x25d7('0x4a')](_0x578680);}})[_0x25d7('0x22')](function(_0xaa5549){if(_0xaa5549){return _0xaa5549?{'count':_0x3bdfc1,'rows':_0xaa5549}:null;}})[_0x25d7('0x22')](respondWithResult(_0x563740,null))[_0x25d7('0x45')](handleError(_0x563740,null));};exports[_0x25d7('0x4c')]=function(_0xfb73e,_0x513006,_0x15ff9d){var _0x475e41={};var _0x413e35={};var _0x1006c4;var _0x5c459d;return db[_0x25d7('0x28')][_0x25d7('0x48')]({'where':{'id':_0xfb73e[_0x25d7('0x42')]['id']}})[_0x25d7('0x22')](handleEntityNotFound(_0x513006,null))[_0x25d7('0x22')](function(_0x1f89aa){if(_0x1f89aa){_0x1006c4=_0x1f89aa;_0x413e35[_0x25d7('0x2c')]=_['keys'](db[_0x25d7('0x4d')][_0x25d7('0x43')]);_0x413e35[_0x25d7('0x2e')]=_[_0x25d7('0x49')](_0xfb73e[_0x25d7('0x2e')]);_0x413e35[_0x25d7('0x2f')]=_[_0x25d7('0x30')](_0x413e35[_0x25d7('0x2c')],_0x413e35['query']);_0x475e41[_0x25d7('0x32')]=_[_0x25d7('0x30')](_0x413e35[_0x25d7('0x2c')],qs[_0x25d7('0x31')](_0xfb73e[_0x25d7('0x2e')][_0x25d7('0x31')]));_0x475e41[_0x25d7('0x32')]=_0x475e41['attributes'][_0x25d7('0x33')]?_0x475e41[_0x25d7('0x32')]:_0x413e35[_0x25d7('0x2c')];_0x475e41[_0x25d7('0x35')]=qs[_0x25d7('0x36')](_0xfb73e[_0x25d7('0x2e')][_0x25d7('0x36')]);_0x475e41[_0x25d7('0x37')]=qs[_0x25d7('0x2f')](_[_0x25d7('0x38')](_0xfb73e[_0x25d7('0x2e')],_0x413e35[_0x25d7('0x2f')]));if(_0xfb73e[_0x25d7('0x2e')][_0x25d7('0x39')]){_0x475e41['where']=_[_0x25d7('0x3b')](_0x475e41['where'],{'$or':_[_0x25d7('0x2d')](_0x475e41[_0x25d7('0x32')],function(_0x8c268a){var _0x5b0853={};_0x5b0853[_0x8c268a]={'$like':'%'+_0xfb73e[_0x25d7('0x2e')]['filter']+'%'};return _0x5b0853;})});}_0x475e41=_['merge']({},_0x475e41,_0xfb73e[_0x25d7('0x3c')]);return _0x1006c4[_0x25d7('0x4c')](_0x475e41);}})['then'](function(_0x486502){if(_0x486502){_0x5c459d=_0x486502[_0x25d7('0x33')];if(!_0xfb73e[_0x25d7('0x2e')][_0x25d7('0x34')](_0x25d7('0x4b'))){_0x475e41['limit']=qs['limit'](_0xfb73e[_0x25d7('0x2e')][_0x25d7('0x19')]);_0x475e41[_0x25d7('0x17')]=qs[_0x25d7('0x17')](_0xfb73e[_0x25d7('0x2e')]['offset']);}return _0x1006c4[_0x25d7('0x4c')](_0x475e41);}})[_0x25d7('0x22')](function(_0x3b6c84){if(_0x3b6c84){return _0x3b6c84?{'count':_0x5c459d,'rows':_0x3b6c84}:null;}})[_0x25d7('0x22')](respondWithResult(_0x513006,null))['catch'](handleError(_0x513006,null));};exports['getDescriptions']=function(_0x38158a,_0x508536,_0x2eeedf){var _0x3c1f33={};var _0x193cd={};var _0xa8845c;var _0x3f9680;return db['Dynamics365Configuration'][_0x25d7('0x48')]({'where':{'id':_0x38158a[_0x25d7('0x42')]['id']}})[_0x25d7('0x22')](handleEntityNotFound(_0x508536,null))[_0x25d7('0x22')](function(_0x1ed790){if(_0x1ed790){_0xa8845c=_0x1ed790;_0x193cd['model']=_[_0x25d7('0x49')](db['Dynamics365Field']['rawAttributes']);_0x193cd[_0x25d7('0x2e')]=_['keys'](_0x38158a[_0x25d7('0x2e')]);_0x193cd['filters']=_[_0x25d7('0x30')](_0x193cd[_0x25d7('0x2c')],_0x193cd[_0x25d7('0x2e')]);_0x3c1f33[_0x25d7('0x32')]=_[_0x25d7('0x30')](_0x193cd[_0x25d7('0x2c')],qs['fields'](_0x38158a['query']['fields']));_0x3c1f33[_0x25d7('0x32')]=_0x3c1f33[_0x25d7('0x32')][_0x25d7('0x33')]?_0x3c1f33[_0x25d7('0x32')]:_0x193cd[_0x25d7('0x2c')];_0x3c1f33[_0x25d7('0x35')]=qs[_0x25d7('0x36')](_0x38158a[_0x25d7('0x2e')][_0x25d7('0x36')]);_0x3c1f33['where']=qs[_0x25d7('0x2f')](_['pick'](_0x38158a[_0x25d7('0x2e')],_0x193cd[_0x25d7('0x2f')]));if(_0x38158a[_0x25d7('0x2e')]['filter']){_0x3c1f33[_0x25d7('0x37')]=_[_0x25d7('0x3b')](_0x3c1f33[_0x25d7('0x37')],{'$or':_['map'](_0x3c1f33[_0x25d7('0x32')],function(_0x191750){var _0x150859={};_0x150859[_0x191750]={'$like':'%'+_0x38158a['query'][_0x25d7('0x39')]+'%'};return _0x150859;})});}_0x3c1f33=_[_0x25d7('0x3b')]({},_0x3c1f33,_0x38158a[_0x25d7('0x3c')]);return _0xa8845c[_0x25d7('0x4e')](_0x3c1f33);}})['then'](function(_0x2bc505){if(_0x2bc505){_0x3f9680=_0x2bc505[_0x25d7('0x33')];if(!_0x38158a['query'][_0x25d7('0x34')]('nolimit')){_0x3c1f33[_0x25d7('0x19')]=qs[_0x25d7('0x19')](_0x38158a['query'][_0x25d7('0x19')]);_0x3c1f33['offset']=qs['offset'](_0x38158a[_0x25d7('0x2e')][_0x25d7('0x17')]);}return _0xa8845c['getDescriptions'](_0x3c1f33);}})['then'](function(_0x38f877){if(_0x38f877){return _0x38f877?{'count':_0x3f9680,'rows':_0x38f877}:null;}})[_0x25d7('0x22')](respondWithResult(_0x508536,null))[_0x25d7('0x45')](handleError(_0x508536,null));};
\ No newline at end of file
index f262f36..bb29c46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a19=['lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Configuration.attributes','exports','define'];(function(_0x4ae6ef,_0xc2af80){var _0x3cbb4e=function(_0x569ad5){while(--_0x569ad5){_0x4ae6ef['push'](_0x4ae6ef['shift']());}};_0x3cbb4e(++_0xc2af80);}(_0x9a19,0x114));var _0x99a1=function(_0xd22d95,_0xc59f8f){_0xd22d95=_0xd22d95-0x0;var _0x15d7a3=_0x9a19[_0xd22d95];return _0x15d7a3;};'use strict';var _=require(_0x99a1('0x0'));var util=require(_0x99a1('0x1'));var logger=require(_0x99a1('0x2'))('api');var moment=require(_0x99a1('0x3'));var BPromise=require(_0x99a1('0x4'));var rp=require(_0x99a1('0x5'));var fs=require('fs');var path=require(_0x99a1('0x6'));var rimraf=require(_0x99a1('0x7'));var config=require(_0x99a1('0x8'));var attributes=require(_0x99a1('0x9'));module[_0x99a1('0xa')]=function(_0x3eff4a,_0xff0240){return _0x3eff4a[_0x99a1('0xb')]('Dynamics365Configuration',attributes,{'tableName':'int_dynamics365_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6f0d=['./intDynamics365Configuration.attributes','define','Dynamics365Configuration','int_dynamics365_configurations','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0x6f0d,0x16c));var _0xd6f0=function(_0x154211,_0x4eeaa2){_0x154211=_0x154211-0x0;var _0x422ac8=_0x6f0d[_0x154211];return _0x422ac8;};'use strict';var _=require('lodash');var util=require(_0xd6f0('0x0'));var logger=require(_0xd6f0('0x1'))(_0xd6f0('0x2'));var moment=require(_0xd6f0('0x3'));var BPromise=require('bluebird');var rp=require(_0xd6f0('0x4'));var fs=require('fs');var path=require(_0xd6f0('0x5'));var rimraf=require(_0xd6f0('0x6'));var config=require(_0xd6f0('0x7'));var attributes=require(_0xd6f0('0x8'));module['exports']=function(_0x2d2ce6,_0x4a8b0c){return _0x2d2ce6[_0xd6f0('0x9')](_0xd6f0('0xa'),attributes,{'tableName':_0xd6f0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6eab518..071ef81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1d6=['result','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message'];(function(_0x21f8b1,_0x1fdb81){var _0x5b3057=function(_0x5809fc){while(--_0x5809fc){_0x21f8b1['push'](_0x21f8b1['shift']());}};_0x5b3057(++_0x1fdb81);}(_0xf1d6,0xc9));var _0x6f1d=function(_0x57a2bb,_0x3e4f07){_0x57a2bb=_0x57a2bb-0x0;var _0x35fdcb=_0xf1d6[_0x57a2bb];return _0x35fdcb;};'use strict';var _=require('lodash');var util=require(_0x6f1d('0x0'));var moment=require(_0x6f1d('0x1'));var BPromise=require(_0x6f1d('0x2'));var rs=require(_0x6f1d('0x3'));var fs=require('fs');var Redis=require(_0x6f1d('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6f1d('0x5'))(_0x6f1d('0x6'));var config=require(_0x6f1d('0x7'));var jayson=require(_0x6f1d('0x8'));var client=jayson[_0x6f1d('0x9')][_0x6f1d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3eb4a2,_0x23c4bb,_0x58e995){return new BPromise(function(_0x37f485,_0x575ae8){return client['request'](_0x3eb4a2,_0x58e995)[_0x6f1d('0xb')](function(_0x4c28ce){logger[_0x6f1d('0xc')](_0x6f1d('0xd'),_0x23c4bb,_0x6f1d('0xe'));logger[_0x6f1d('0xf')]('Dynamics365Configuration,\x20%s,\x20%s,\x20%s',_0x23c4bb,'request\x20sent',JSON[_0x6f1d('0x10')](_0x4c28ce));if(_0x4c28ce[_0x6f1d('0x11')]){if(_0x4c28ce[_0x6f1d('0x11')]['code']===0x1f4){logger[_0x6f1d('0x11')]('Dynamics365Configuration,\x20%s,\x20%s',_0x23c4bb,_0x4c28ce[_0x6f1d('0x11')]['message']);return _0x575ae8(_0x4c28ce[_0x6f1d('0x11')][_0x6f1d('0x12')]);}logger[_0x6f1d('0x11')](_0x6f1d('0xd'),_0x23c4bb,_0x4c28ce[_0x6f1d('0x11')][_0x6f1d('0x12')]);return _0x37f485(_0x4c28ce[_0x6f1d('0x11')][_0x6f1d('0x12')]);}else{logger[_0x6f1d('0xc')](_0x6f1d('0xd'),_0x23c4bb,_0x6f1d('0xe'));_0x37f485(_0x4c28ce[_0x6f1d('0x13')][_0x6f1d('0x12')]);}})['catch'](function(_0x3698a2){logger[_0x6f1d('0x11')](_0x6f1d('0xd'),_0x23c4bb,_0x3698a2);_0x575ae8(_0x3698a2);});});}
\ No newline at end of file
+var _0x8fff=['request','then','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0xe2faf1,_0x4b7db6){var _0x21f89a=function(_0x587308){while(--_0x587308){_0xe2faf1['push'](_0xe2faf1['shift']());}};_0x21f89a(++_0x4b7db6);}(_0x8fff,0x90));var _0xf8ff=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8fff[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xf8ff('0x0'));var moment=require(_0xf8ff('0x1'));var BPromise=require(_0xf8ff('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf8ff('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xf8ff('0x4'));var logger=require(_0xf8ff('0x5'))(_0xf8ff('0x6'));var config=require(_0xf8ff('0x7'));var jayson=require(_0xf8ff('0x8'));var client=jayson[_0xf8ff('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x385f3c,_0x32f146,_0x156644){return new BPromise(function(_0x229306,_0x270e6a){return client[_0xf8ff('0xa')](_0x385f3c,_0x156644)[_0xf8ff('0xb')](function(_0x18470c){logger[_0xf8ff('0xc')](_0xf8ff('0xd'),_0x32f146,_0xf8ff('0xe'));logger[_0xf8ff('0xf')](_0xf8ff('0x10'),_0x32f146,_0xf8ff('0xe'),JSON['stringify'](_0x18470c));if(_0x18470c[_0xf8ff('0x11')]){if(_0x18470c['error'][_0xf8ff('0x12')]===0x1f4){logger[_0xf8ff('0x11')](_0xf8ff('0xd'),_0x32f146,_0x18470c[_0xf8ff('0x11')][_0xf8ff('0x13')]);return _0x270e6a(_0x18470c[_0xf8ff('0x11')]['message']);}logger[_0xf8ff('0x11')](_0xf8ff('0xd'),_0x32f146,_0x18470c[_0xf8ff('0x11')][_0xf8ff('0x13')]);return _0x229306(_0x18470c[_0xf8ff('0x11')][_0xf8ff('0x13')]);}else{logger['info'](_0xf8ff('0xd'),_0x32f146,'request\x20sent');_0x229306(_0x18470c[_0xf8ff('0x14')]['message']);}})[_0xf8ff('0x15')](function(_0x452d5c){logger['error'](_0xf8ff('0xd'),_0x32f146,_0x452d5c);_0x270e6a(_0x452d5c);});});}
\ No newline at end of file
index 8bd0544..0565c7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c77=['put','update','delete','destroy','exports','multer','express','Router','fs-extra','../../components/interaction/service','isAuthenticated','index','get','/:id','show','post','create'];(function(_0x410788,_0xc1c136){var _0x39ff57=function(_0x33e1fc){while(--_0x33e1fc){_0x410788['push'](_0x410788['shift']());}};_0x39ff57(++_0xc1c136);}(_0x3c77,0x19d));var _0x73c7=function(_0x37b3ad,_0x40cae6){_0x37b3ad=_0x37b3ad-0x0;var _0x34ec1f=_0x3c77[_0x37b3ad];return _0x34ec1f;};'use strict';var multer=require(_0x73c7('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x73c7('0x1'));var router=express[_0x73c7('0x2')]();var fs_extra=require(_0x73c7('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x73c7('0x4'));var config=require('../../config/environment');var controller=require('./intDynamics365Field.controller');router['get']('/',auth[_0x73c7('0x5')](),controller[_0x73c7('0x6')]);router[_0x73c7('0x7')](_0x73c7('0x8'),auth[_0x73c7('0x5')](),controller[_0x73c7('0x9')]);router[_0x73c7('0xa')]('/',auth[_0x73c7('0x5')](),controller[_0x73c7('0xb')]);router[_0x73c7('0xc')](_0x73c7('0x8'),auth[_0x73c7('0x5')](),controller[_0x73c7('0xd')]);router[_0x73c7('0xe')](_0x73c7('0x8'),auth['isAuthenticated'](),controller[_0x73c7('0xf')]);module[_0x73c7('0x10')]=router;
\ No newline at end of file
+var _0x57f1=['create','put','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDynamics365Field.controller','isAuthenticated','get','/:id'];(function(_0x4660b2,_0x17c4d4){var _0xa5e3aa=function(_0x4eda5f){while(--_0x4eda5f){_0x4660b2['push'](_0x4660b2['shift']());}};_0xa5e3aa(++_0x17c4d4);}(_0x57f1,0x84));var _0x157f=function(_0x1c066d,_0x43e933){_0x1c066d=_0x1c066d-0x0;var _0xe60d31=_0x57f1[_0x1c066d];return _0xe60d31;};'use strict';var multer=require(_0x157f('0x0'));var util=require('util');var path=require(_0x157f('0x1'));var timeout=require(_0x157f('0x2'));var express=require(_0x157f('0x3'));var router=express[_0x157f('0x4')]();var fs_extra=require(_0x157f('0x5'));var auth=require(_0x157f('0x6'));var interaction=require(_0x157f('0x7'));var config=require('../../config/environment');var controller=require(_0x157f('0x8'));router['get']('/',auth[_0x157f('0x9')](),controller['index']);router[_0x157f('0xa')](_0x157f('0xb'),auth[_0x157f('0x9')](),controller['show']);router['post']('/',auth[_0x157f('0x9')](),controller[_0x157f('0xc')]);router[_0x157f('0xd')](_0x157f('0xb'),auth[_0x157f('0x9')](),controller['update']);router[_0x157f('0xe')](_0x157f('0xb'),auth[_0x157f('0x9')](),controller['destroy']);module[_0x157f('0xf')]=router;
\ No newline at end of file
index 0abbe7f..66319af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20a3=['BOOLEAN','sequelize','exports','ENUM','string','variable','keyValue','STRING','customVariable'];(function(_0x584d37,_0x13fb20){var _0x1a1dbf=function(_0x23cd11){while(--_0x23cd11){_0x584d37['push'](_0x584d37['shift']());}};_0x1a1dbf(++_0x13fb20);}(_0x20a3,0xe2));var _0x320a=function(_0x46fb4f,_0x4570d9){_0x46fb4f=_0x46fb4f-0x0;var _0x3579ba=_0x20a3[_0x46fb4f];return _0x3579ba;};'use strict';var Sequelize=require(_0x320a('0x0'));module[_0x320a('0x1')]={'type':{'type':Sequelize[_0x320a('0x2')](_0x320a('0x3'),_0x320a('0x4'),'customVariable',_0x320a('0x5'),'picklist'),'defaultValue':_0x320a('0x3')},'content':{'type':Sequelize[_0x320a('0x6')]},'key':{'type':Sequelize[_0x320a('0x6')]},'keyType':{'type':Sequelize[_0x320a('0x2')]('string',_0x320a('0x4'),_0x320a('0x7'))},'keyContent':{'type':Sequelize[_0x320a('0x6')]},'idField':{'type':Sequelize[_0x320a('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x320a('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x320a('0x6')]}};
\ No newline at end of file
+var _0x991f=['BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','keyValue','STRING'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x991f,0x169));var _0xf991=function(_0x56c600,_0x11ff50){_0x56c600=_0x56c600-0x0;var _0x4df318=_0x991f[_0x56c600];return _0x4df318;};'use strict';var Sequelize=require(_0xf991('0x0'));module[_0xf991('0x1')]={'type':{'type':Sequelize[_0xf991('0x2')](_0xf991('0x3'),_0xf991('0x4'),_0xf991('0x5'),_0xf991('0x6'),'picklist'),'defaultValue':_0xf991('0x3')},'content':{'type':Sequelize[_0xf991('0x7')]},'key':{'type':Sequelize[_0xf991('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0xf991('0x3'),'variable','customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xf991('0x7')]},'nameField':{'type':Sequelize[_0xf991('0x7')]},'customField':{'type':Sequelize[_0xf991('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf991('0x7')]}};
\ No newline at end of file
index 680538b..3eba770 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb80d=['to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../config/utils','../../config/environment','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','destroy','then','error','stack','name','index','map','fieldName','type','model','query','keys','filters','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','includeAll','include','rows','catch','show','params','Dynamics365Field','rawAttributes','intersection','create','body','find','eml-format','fast-json-patch','moment','bluebird','util','sox'];(function(_0x4deb18,_0x5e76b0){var _0x571a30=function(_0x1bbc3d){while(--_0x1bbc3d){_0x4deb18['push'](_0x4deb18['shift']());}};_0x571a30(++_0x5e76b0);}(_0xb80d,0xbd));var _0xdb80=function(_0x264c84,_0x598700){_0x264c84=_0x264c84-0x0;var _0x1fd84c=_0xb80d[_0x264c84];return _0x1fd84c;};'use strict';var emlformat=require(_0xdb80('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xdb80('0x1'));var rp=require('request-promise');var moment=require(_0xdb80('0x2'));var BPromise=require(_0xdb80('0x3'));var Mustache=require('mustache');var util=require(_0xdb80('0x4'));var path=require('path');var sox=require(_0xdb80('0x5'));var csv=require(_0xdb80('0x6'));var ejs=require(_0xdb80('0x7'));var fs=require('fs');var fs_extra=require(_0xdb80('0x8'));var _=require('lodash');var squel=require(_0xdb80('0x9'));var crypto=require(_0xdb80('0xa'));var jsforce=require(_0xdb80('0xb'));var deskjs=require(_0xdb80('0xc'));var toCsv=require(_0xdb80('0x6'));var querystring=require(_0xdb80('0xd'));var Papa=require(_0xdb80('0xe'));var Redis=require('ioredis');var authService=require(_0xdb80('0xf'));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(_0xdb80('0x10'));var config=require(_0xdb80('0x11'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x35e3e1,_0x57cf9a){_0x57cf9a=_0x57cf9a||0xcc;return function(_0x2b7294){if(_0x2b7294){return _0x35e3e1[_0xdb80('0x12')](_0x57cf9a);}return _0x35e3e1[_0xdb80('0x13')](_0x57cf9a)[_0xdb80('0x14')]();};}function respondWithResult(_0x2865a7,_0x148047){_0x148047=_0x148047||0xc8;return function(_0x1ae014){if(_0x1ae014){return _0x2865a7[_0xdb80('0x13')](_0x148047)[_0xdb80('0x15')](_0x1ae014);}};}function respondWithFilteredResult(_0x5ceb81,_0x2982f7){return function(_0x10763b){if(_0x10763b){var _0x47115f=typeof _0x2982f7['offset']===_0xdb80('0x16')&&typeof _0x2982f7[_0xdb80('0x17')]==='undefined';var _0x4234b0=_0x10763b[_0xdb80('0x18')];var _0x156e29=_0x47115f?0x0:_0x2982f7[_0xdb80('0x19')];var _0x3fadc1=_0x47115f?_0x10763b[_0xdb80('0x18')]:_0x2982f7[_0xdb80('0x19')]+_0x2982f7['limit'];var _0x2ad47c;if(_0x3fadc1>=_0x4234b0){_0x3fadc1=_0x4234b0;_0x2ad47c=0xc8;}else{_0x2ad47c=0xce;}_0x5ceb81[_0xdb80('0x13')](_0x2ad47c);return _0x5ceb81[_0xdb80('0x1a')](_0xdb80('0x1b'),_0x156e29+'-'+_0x3fadc1+'/'+_0x4234b0)['json'](_0x10763b);}return null;};}function patchUpdates(_0x313035){return function(_0x940ec9){try{jsonpatch[_0xdb80('0x1c')](_0x940ec9,_0x313035,!![]);}catch(_0x4b2d69){return BPromise['reject'](_0x4b2d69);}return _0x940ec9[_0xdb80('0x1d')]();};}function saveUpdates(_0x44aaa7,_0x13cec9){return function(_0x230de9){if(_0x230de9){return _0x230de9[_0xdb80('0x1e')](_0x44aaa7)['then'](function(_0x276bf7){return _0x276bf7;});}return null;};}function removeEntity(_0x26b75d,_0x488ac9){return function(_0x3dd6a7){if(_0x3dd6a7){return _0x3dd6a7[_0xdb80('0x1f')]()[_0xdb80('0x20')](function(){_0x26b75d[_0xdb80('0x13')](0xcc)[_0xdb80('0x14')]();});}};}function handleEntityNotFound(_0x1c6fb1,_0x4a17f2){return function(_0x4113bf){if(!_0x4113bf){_0x1c6fb1[_0xdb80('0x12')](0x194);}return _0x4113bf;};}function handleError(_0x35a1dd,_0x22eeb2){_0x22eeb2=_0x22eeb2||0x1f4;return function(_0x44254a){logger[_0xdb80('0x21')](_0x44254a[_0xdb80('0x22')]);if(_0x44254a[_0xdb80('0x23')]){delete _0x44254a[_0xdb80('0x23')];}_0x35a1dd[_0xdb80('0x13')](_0x22eeb2)['send'](_0x44254a);};}exports[_0xdb80('0x24')]=function(_0x3fe77b,_0x5a57da){var _0x89742={},_0x8bd37e={},_0x59c53c={'count':0x0,'rows':[]};var _0x405c=_[_0xdb80('0x25')](db['Dynamics365Field']['rawAttributes'],function(_0x4912f9){return{'name':_0x4912f9[_0xdb80('0x26')],'type':_0x4912f9[_0xdb80('0x27')]['key']};});_0x8bd37e[_0xdb80('0x28')]=_[_0xdb80('0x25')](_0x405c,'name');_0x8bd37e[_0xdb80('0x29')]=_[_0xdb80('0x2a')](_0x3fe77b['query']);_0x8bd37e[_0xdb80('0x2b')]=_['intersection'](_0x8bd37e['model'],_0x8bd37e[_0xdb80('0x29')]);_0x89742[_0xdb80('0x2c')]=_['intersection'](_0x8bd37e[_0xdb80('0x28')],qs[_0xdb80('0x2d')](_0x3fe77b[_0xdb80('0x29')][_0xdb80('0x2d')]));_0x89742[_0xdb80('0x2c')]=_0x89742[_0xdb80('0x2c')][_0xdb80('0x2e')]?_0x89742[_0xdb80('0x2c')]:_0x8bd37e['model'];if(!_0x3fe77b[_0xdb80('0x29')][_0xdb80('0x2f')]('nolimit')){_0x89742['limit']=qs['limit'](_0x3fe77b[_0xdb80('0x29')][_0xdb80('0x17')]);_0x89742[_0xdb80('0x19')]=qs[_0xdb80('0x19')](_0x3fe77b['query'][_0xdb80('0x19')]);}_0x89742[_0xdb80('0x30')]=qs[_0xdb80('0x31')](_0x3fe77b[_0xdb80('0x29')]['sort']);_0x89742[_0xdb80('0x32')]=qs[_0xdb80('0x2b')](_['pick'](_0x3fe77b[_0xdb80('0x29')],_0x8bd37e[_0xdb80('0x2b')]),_0x405c);if(_0x3fe77b['query'][_0xdb80('0x33')]){_0x89742[_0xdb80('0x32')]=_[_0xdb80('0x34')](_0x89742[_0xdb80('0x32')],{'$or':_[_0xdb80('0x25')](_0x405c,function(_0x598d91){if(_0x598d91[_0xdb80('0x27')]!=='VIRTUAL'){var _0x831397={};_0x831397[_0x598d91[_0xdb80('0x23')]]={'$like':'%'+_0x3fe77b[_0xdb80('0x29')][_0xdb80('0x33')]+'%'};return _0x831397;}})});}_0x89742=_['merge']({},_0x89742,_0x3fe77b['options']);var _0x5e884b={'where':_0x89742[_0xdb80('0x32')]};return db['Dynamics365Field']['count'](_0x5e884b)[_0xdb80('0x20')](function(_0x55f460){_0x59c53c['count']=_0x55f460;if(_0x3fe77b[_0xdb80('0x29')][_0xdb80('0x35')]){_0x89742[_0xdb80('0x36')]=[{'all':!![]}];}return db['Dynamics365Field']['findAll'](_0x89742);})[_0xdb80('0x20')](function(_0x323d7f){_0x59c53c[_0xdb80('0x37')]=_0x323d7f;return _0x59c53c;})[_0xdb80('0x20')](respondWithFilteredResult(_0x5a57da,_0x89742))[_0xdb80('0x38')](handleError(_0x5a57da,null));};exports[_0xdb80('0x39')]=function(_0x4b4563,_0xe5731){var _0x1c1692={'raw':!![],'where':{'id':_0x4b4563[_0xdb80('0x3a')]['id']}},_0x1cbfe6={};_0x1cbfe6[_0xdb80('0x28')]=_[_0xdb80('0x2a')](db[_0xdb80('0x3b')][_0xdb80('0x3c')]);_0x1cbfe6['query']=_[_0xdb80('0x2a')](_0x4b4563['query']);_0x1cbfe6['filters']=_['intersection'](_0x1cbfe6[_0xdb80('0x28')],_0x1cbfe6[_0xdb80('0x29')]);_0x1c1692['attributes']=_[_0xdb80('0x3d')](_0x1cbfe6[_0xdb80('0x28')],qs[_0xdb80('0x2d')](_0x4b4563[_0xdb80('0x29')]['fields']));_0x1c1692[_0xdb80('0x2c')]=_0x1c1692[_0xdb80('0x2c')][_0xdb80('0x2e')]?_0x1c1692[_0xdb80('0x2c')]:_0x1cbfe6['model'];if(_0x4b4563[_0xdb80('0x29')][_0xdb80('0x35')]){_0x1c1692[_0xdb80('0x36')]=[{'all':!![]}];}_0x1c1692=_[_0xdb80('0x34')]({},_0x1c1692,_0x4b4563['options']);return db[_0xdb80('0x3b')]['find'](_0x1c1692)['then'](handleEntityNotFound(_0xe5731,null))[_0xdb80('0x20')](respondWithResult(_0xe5731,null))[_0xdb80('0x38')](handleError(_0xe5731,null));};exports[_0xdb80('0x3e')]=function(_0x4b21dd,_0x5645f4){return db[_0xdb80('0x3b')][_0xdb80('0x3e')](_0x4b21dd[_0xdb80('0x3f')],{})['then'](respondWithResult(_0x5645f4,0xc9))[_0xdb80('0x38')](handleError(_0x5645f4,null));};exports[_0xdb80('0x1e')]=function(_0x52b59b,_0x423cac){if(_0x52b59b[_0xdb80('0x3f')]['id']){delete _0x52b59b[_0xdb80('0x3f')]['id'];}return db[_0xdb80('0x3b')][_0xdb80('0x40')]({'where':{'id':_0x52b59b[_0xdb80('0x3a')]['id']}})[_0xdb80('0x20')](handleEntityNotFound(_0x423cac,null))[_0xdb80('0x20')](saveUpdates(_0x52b59b['body'],null))[_0xdb80('0x20')](respondWithResult(_0x423cac,null))[_0xdb80('0x38')](handleError(_0x423cac,null));};exports[_0xdb80('0x1f')]=function(_0x57feca,_0x107836){return db['Dynamics365Field']['find']({'where':{'id':_0x57feca['params']['id']}})['then'](handleEntityNotFound(_0x107836,null))['then'](removeEntity(_0x107836,null))['catch'](handleError(_0x107836,null));};
\ No newline at end of file
+var _0x1fcb=['keys','find','create','body','params','destroy','rimraf','zip-dir','fast-json-patch','bluebird','util','path','sox','to-csv','fs-extra','squel','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','end','error','name','send','index','map','Dynamics365Field','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','nolimit','order','sort','filters','pick','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x1fcb,0x15f));var _0xb1fc=function(_0x459bd2,_0x5f77a1){_0x459bd2=_0x459bd2-0x0;var _0x44cef5=_0x1fcb[_0x459bd2];return _0x44cef5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb1fc('0x0'));var zipdir=require(_0xb1fc('0x1'));var jsonpatch=require(_0xb1fc('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb1fc('0x3'));var Mustache=require('mustache');var util=require(_0xb1fc('0x4'));var path=require(_0xb1fc('0x5'));var sox=require(_0xb1fc('0x6'));var csv=require(_0xb1fc('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb1fc('0x8'));var _=require('lodash');var squel=require(_0xb1fc('0x9'));var crypto=require('crypto');var jsforce=require(_0xb1fc('0xa'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xb1fc('0xb'));var Redis=require('ioredis');var authService=require(_0xb1fc('0xc'));var qs=require(_0xb1fc('0xd'));var as=require(_0xb1fc('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb1fc('0xf'))('api');var utils=require(_0xb1fc('0x10'));var config=require('../../config/environment');var licenseUtil=require(_0xb1fc('0x11'));var db=require(_0xb1fc('0x12'))['db'];function respondWithStatusCode(_0x11fbac,_0x8d5b40){_0x8d5b40=_0x8d5b40||0xcc;return function(_0x428353){if(_0x428353){return _0x11fbac[_0xb1fc('0x13')](_0x8d5b40);}return _0x11fbac['status'](_0x8d5b40)['end']();};}function respondWithResult(_0x162865,_0x131519){_0x131519=_0x131519||0xc8;return function(_0xee8fe4){if(_0xee8fe4){return _0x162865[_0xb1fc('0x14')](_0x131519)[_0xb1fc('0x15')](_0xee8fe4);}};}function respondWithFilteredResult(_0x233fb0,_0x275ebd){return function(_0x258765){if(_0x258765){var _0x31a2e7=typeof _0x275ebd[_0xb1fc('0x16')]===_0xb1fc('0x17')&&typeof _0x275ebd[_0xb1fc('0x18')]==='undefined';var _0x4e1ca1=_0x258765['count'];var _0x4fc19f=_0x31a2e7?0x0:_0x275ebd[_0xb1fc('0x16')];var _0x6377e=_0x31a2e7?_0x258765[_0xb1fc('0x19')]:_0x275ebd[_0xb1fc('0x16')]+_0x275ebd[_0xb1fc('0x18')];var _0x45a56b;if(_0x6377e>=_0x4e1ca1){_0x6377e=_0x4e1ca1;_0x45a56b=0xc8;}else{_0x45a56b=0xce;}_0x233fb0['status'](_0x45a56b);return _0x233fb0[_0xb1fc('0x1a')]('Content-Range',_0x4fc19f+'-'+_0x6377e+'/'+_0x4e1ca1)[_0xb1fc('0x15')](_0x258765);}return null;};}function patchUpdates(_0x176a88){return function(_0xb5116f){try{jsonpatch[_0xb1fc('0x1b')](_0xb5116f,_0x176a88,!![]);}catch(_0x60a5e5){return BPromise[_0xb1fc('0x1c')](_0x60a5e5);}return _0xb5116f[_0xb1fc('0x1d')]();};}function saveUpdates(_0x187600,_0x55d8cf){return function(_0xf109d6){if(_0xf109d6){return _0xf109d6[_0xb1fc('0x1e')](_0x187600)['then'](function(_0x119d85){return _0x119d85;});}return null;};}function removeEntity(_0x4da495,_0x4a9921){return function(_0x30f195){if(_0x30f195){return _0x30f195['destroy']()[_0xb1fc('0x1f')](function(){_0x4da495[_0xb1fc('0x14')](0xcc)[_0xb1fc('0x20')]();});}};}function handleEntityNotFound(_0x5b590f,_0x2f59b3){return function(_0x5717ca){if(!_0x5717ca){_0x5b590f[_0xb1fc('0x13')](0x194);}return _0x5717ca;};}function handleError(_0x38d3cd,_0xb45eeb){_0xb45eeb=_0xb45eeb||0x1f4;return function(_0x5093f6){logger[_0xb1fc('0x21')](_0x5093f6['stack']);if(_0x5093f6[_0xb1fc('0x22')]){delete _0x5093f6[_0xb1fc('0x22')];}_0x38d3cd[_0xb1fc('0x14')](_0xb45eeb)[_0xb1fc('0x23')](_0x5093f6);};}exports[_0xb1fc('0x24')]=function(_0x46a095,_0x525ee7){var _0x2c7229={},_0x473ffb={},_0x2a4a8a={'count':0x0,'rows':[]};var _0x111086=_[_0xb1fc('0x25')](db[_0xb1fc('0x26')][_0xb1fc('0x27')],function(_0x4c3512){return{'name':_0x4c3512[_0xb1fc('0x28')],'type':_0x4c3512[_0xb1fc('0x29')][_0xb1fc('0x2a')]};});_0x473ffb[_0xb1fc('0x2b')]=_['map'](_0x111086,_0xb1fc('0x22'));_0x473ffb[_0xb1fc('0x2c')]=_['keys'](_0x46a095[_0xb1fc('0x2c')]);_0x473ffb['filters']=_[_0xb1fc('0x2d')](_0x473ffb[_0xb1fc('0x2b')],_0x473ffb[_0xb1fc('0x2c')]);_0x2c7229[_0xb1fc('0x2e')]=_[_0xb1fc('0x2d')](_0x473ffb[_0xb1fc('0x2b')],qs[_0xb1fc('0x2f')](_0x46a095[_0xb1fc('0x2c')][_0xb1fc('0x2f')]));_0x2c7229[_0xb1fc('0x2e')]=_0x2c7229['attributes'][_0xb1fc('0x30')]?_0x2c7229[_0xb1fc('0x2e')]:_0x473ffb['model'];if(!_0x46a095[_0xb1fc('0x2c')]['hasOwnProperty'](_0xb1fc('0x31'))){_0x2c7229[_0xb1fc('0x18')]=qs[_0xb1fc('0x18')](_0x46a095['query'][_0xb1fc('0x18')]);_0x2c7229[_0xb1fc('0x16')]=qs['offset'](_0x46a095[_0xb1fc('0x2c')][_0xb1fc('0x16')]);}_0x2c7229[_0xb1fc('0x32')]=qs[_0xb1fc('0x33')](_0x46a095[_0xb1fc('0x2c')][_0xb1fc('0x33')]);_0x2c7229['where']=qs[_0xb1fc('0x34')](_[_0xb1fc('0x35')](_0x46a095['query'],_0x473ffb[_0xb1fc('0x34')]),_0x111086);if(_0x46a095[_0xb1fc('0x2c')]['filter']){_0x2c7229[_0xb1fc('0x36')]=_[_0xb1fc('0x37')](_0x2c7229['where'],{'$or':_[_0xb1fc('0x25')](_0x111086,function(_0x42df6d){if(_0x42df6d[_0xb1fc('0x29')]!==_0xb1fc('0x38')){var _0x30710e={};_0x30710e[_0x42df6d['name']]={'$like':'%'+_0x46a095['query'][_0xb1fc('0x39')]+'%'};return _0x30710e;}})});}_0x2c7229=_['merge']({},_0x2c7229,_0x46a095[_0xb1fc('0x3a')]);var _0x1a5f11={'where':_0x2c7229[_0xb1fc('0x36')]};return db[_0xb1fc('0x26')][_0xb1fc('0x19')](_0x1a5f11)[_0xb1fc('0x1f')](function(_0x348c99){_0x2a4a8a[_0xb1fc('0x19')]=_0x348c99;if(_0x46a095[_0xb1fc('0x2c')][_0xb1fc('0x3b')]){_0x2c7229[_0xb1fc('0x3c')]=[{'all':!![]}];}return db[_0xb1fc('0x26')][_0xb1fc('0x3d')](_0x2c7229);})[_0xb1fc('0x1f')](function(_0x209c54){_0x2a4a8a['rows']=_0x209c54;return _0x2a4a8a;})[_0xb1fc('0x1f')](respondWithFilteredResult(_0x525ee7,_0x2c7229))[_0xb1fc('0x3e')](handleError(_0x525ee7,null));};exports['show']=function(_0x2b949c,_0x47a8e6){var _0x1fbedf={'raw':!![],'where':{'id':_0x2b949c['params']['id']}},_0x4329be={};_0x4329be[_0xb1fc('0x2b')]=_[_0xb1fc('0x3f')](db[_0xb1fc('0x26')][_0xb1fc('0x27')]);_0x4329be[_0xb1fc('0x2c')]=_[_0xb1fc('0x3f')](_0x2b949c[_0xb1fc('0x2c')]);_0x4329be[_0xb1fc('0x34')]=_[_0xb1fc('0x2d')](_0x4329be[_0xb1fc('0x2b')],_0x4329be['query']);_0x1fbedf[_0xb1fc('0x2e')]=_[_0xb1fc('0x2d')](_0x4329be[_0xb1fc('0x2b')],qs[_0xb1fc('0x2f')](_0x2b949c[_0xb1fc('0x2c')][_0xb1fc('0x2f')]));_0x1fbedf['attributes']=_0x1fbedf['attributes']['length']?_0x1fbedf[_0xb1fc('0x2e')]:_0x4329be['model'];if(_0x2b949c[_0xb1fc('0x2c')][_0xb1fc('0x3b')]){_0x1fbedf[_0xb1fc('0x3c')]=[{'all':!![]}];}_0x1fbedf=_[_0xb1fc('0x37')]({},_0x1fbedf,_0x2b949c[_0xb1fc('0x3a')]);return db['Dynamics365Field'][_0xb1fc('0x40')](_0x1fbedf)[_0xb1fc('0x1f')](handleEntityNotFound(_0x47a8e6,null))[_0xb1fc('0x1f')](respondWithResult(_0x47a8e6,null))[_0xb1fc('0x3e')](handleError(_0x47a8e6,null));};exports[_0xb1fc('0x41')]=function(_0x2cb538,_0x4aa09d){return db[_0xb1fc('0x26')][_0xb1fc('0x41')](_0x2cb538['body'],{})['then'](respondWithResult(_0x4aa09d,0xc9))[_0xb1fc('0x3e')](handleError(_0x4aa09d,null));};exports['update']=function(_0x1c075a,_0x17956a){if(_0x1c075a[_0xb1fc('0x42')]['id']){delete _0x1c075a['body']['id'];}return db[_0xb1fc('0x26')][_0xb1fc('0x40')]({'where':{'id':_0x1c075a[_0xb1fc('0x43')]['id']}})[_0xb1fc('0x1f')](handleEntityNotFound(_0x17956a,null))['then'](saveUpdates(_0x1c075a['body'],null))[_0xb1fc('0x1f')](respondWithResult(_0x17956a,null))[_0xb1fc('0x3e')](handleError(_0x17956a,null));};exports[_0xb1fc('0x44')]=function(_0x43266e,_0x246c73){return db['Dynamics365Field'][_0xb1fc('0x40')]({'where':{'id':_0x43266e['params']['id']}})[_0xb1fc('0x1f')](handleEntityNotFound(_0x246c73,null))['then'](removeEntity(_0x246c73,null))[_0xb1fc('0x3e')](handleError(_0x246c73,null));};
\ No newline at end of file
index 04a2d4f..8e424cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2afe=['moment','bluebird','rimraf','../../config/environment','./intDynamics365Field.attributes','exports','define','int_dynamics365_fields','idField','FieldId','lodash','util','../../config/logger'];(function(_0x442a76,_0x2ad2ff){var _0x474fab=function(_0x2b52c7){while(--_0x2b52c7){_0x442a76['push'](_0x442a76['shift']());}};_0x474fab(++_0x2ad2ff);}(_0x2afe,0x65));var _0xe2af=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x2afe[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0xe2af('0x0'));var util=require(_0xe2af('0x1'));var logger=require(_0xe2af('0x2'))('api');var moment=require(_0xe2af('0x3'));var BPromise=require(_0xe2af('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xe2af('0x5'));var config=require(_0xe2af('0x6'));var attributes=require(_0xe2af('0x7'));module[_0xe2af('0x8')]=function(_0x81d5db,_0x59b0e6){return _0x81d5db[_0xe2af('0x9')]('Dynamics365Field',attributes,{'tableName':_0xe2af('0xa'),'paranoid':![],'indexes':[{'name':'dynamics365_unique_index','fields':[_0xe2af('0xb'),_0xe2af('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf28c=['rimraf','../../config/environment','exports','Dynamics365Field','FieldId','util','api','moment','bluebird','request-promise'];(function(_0x20be5f,_0x1de5c7){var _0x30f91f=function(_0x1d1348){while(--_0x1d1348){_0x20be5f['push'](_0x20be5f['shift']());}};_0x30f91f(++_0x1de5c7);}(_0xf28c,0x87));var _0xcf28=function(_0x189715,_0xb904de){_0x189715=_0x189715-0x0;var _0x547804=_0xf28c[_0x189715];return _0x547804;};'use strict';var _=require('lodash');var util=require(_0xcf28('0x0'));var logger=require('../../config/logger')(_0xcf28('0x1'));var moment=require(_0xcf28('0x2'));var BPromise=require(_0xcf28('0x3'));var rp=require(_0xcf28('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcf28('0x5'));var config=require(_0xcf28('0x6'));var attributes=require('./intDynamics365Field.attributes');module[_0xcf28('0x7')]=function(_0x46ac1d,_0x301ec6){return _0x46ac1d['define'](_0xcf28('0x8'),attributes,{'tableName':'int_dynamics365_fields','paranoid':![],'indexes':[{'name':'dynamics365_unique_index','fields':['idField',_0xcf28('0x9')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index c4ef5b3..49b1d3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1da0=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Field,\x20%s,\x20%s','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','util','bluebird','randomstring','ioredis','../../config/logger'];(function(_0x4ce86d,_0x40eb08){var _0xbd3023=function(_0x4dd013){while(--_0x4dd013){_0x4ce86d['push'](_0x4ce86d['shift']());}};_0xbd3023(++_0x40eb08);}(_0x1da0,0x103));var _0x01da=function(_0x27a5bb,_0x3f4cfb){_0x27a5bb=_0x27a5bb-0x0;var _0x2e17ea=_0x1da0[_0x27a5bb];return _0x2e17ea;};'use strict';var _=require('lodash');var util=require(_0x01da('0x0'));var moment=require('moment');var BPromise=require(_0x01da('0x1'));var rs=require(_0x01da('0x2'));var fs=require('fs');var Redis=require(_0x01da('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x01da('0x4'))(_0x01da('0x5'));var config=require(_0x01da('0x6'));var jayson=require(_0x01da('0x7'));var client=jayson[_0x01da('0x8')][_0x01da('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x349f8b,_0x9223b3,_0x2fe46e){return new BPromise(function(_0x1a4805,_0x1ee44a){return client[_0x01da('0xa')](_0x349f8b,_0x2fe46e)[_0x01da('0xb')](function(_0x2bec64){logger[_0x01da('0xc')](_0x01da('0xd'),_0x9223b3,'request\x20sent');logger['debug'](_0x01da('0xe'),_0x9223b3,'request\x20sent',JSON[_0x01da('0xf')](_0x2bec64));if(_0x2bec64['error']){if(_0x2bec64[_0x01da('0x10')][_0x01da('0x11')]===0x1f4){logger[_0x01da('0x10')]('Dynamics365Field,\x20%s,\x20%s',_0x9223b3,_0x2bec64[_0x01da('0x10')][_0x01da('0x12')]);return _0x1ee44a(_0x2bec64[_0x01da('0x10')]['message']);}logger[_0x01da('0x10')](_0x01da('0xd'),_0x9223b3,_0x2bec64['error'][_0x01da('0x12')]);return _0x1a4805(_0x2bec64[_0x01da('0x10')]['message']);}else{logger[_0x01da('0xc')](_0x01da('0xd'),_0x9223b3,_0x01da('0x13'));_0x1a4805(_0x2bec64[_0x01da('0x14')]['message']);}})[_0x01da('0x15')](function(_0x8502c9){logger[_0x01da('0x10')](_0x01da('0xd'),_0x9223b3,_0x8502c9);_0x1ee44a(_0x8502c9);});});}
\ No newline at end of file
+var _0xc51a=['code','message','result','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/environment','client','http','request','then','info','Dynamics365Field,\x20%s,\x20%s','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x11b1b3,_0xf3cc69){var _0x437029=function(_0x40499a){while(--_0x40499a){_0x11b1b3['push'](_0x11b1b3['shift']());}};_0x437029(++_0xf3cc69);}(_0xc51a,0xae));var _0xac51=function(_0x3aeb53,_0x4985e9){_0x3aeb53=_0x3aeb53-0x0;var _0x18da07=_0xc51a[_0x3aeb53];return _0x18da07;};'use strict';var _=require('lodash');var util=require(_0xac51('0x0'));var moment=require(_0xac51('0x1'));var BPromise=require('bluebird');var rs=require(_0xac51('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xac51('0x3'))['db'];var utils=require(_0xac51('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xac51('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xac51('0x6')][_0xac51('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xf95afd,_0x634645,_0x3940cf){return new BPromise(function(_0x5a2c84,_0x82789f){return client[_0xac51('0x8')](_0xf95afd,_0x3940cf)[_0xac51('0x9')](function(_0x174009){logger[_0xac51('0xa')](_0xac51('0xb'),_0x634645,'request\x20sent');logger[_0xac51('0xc')](_0xac51('0xd'),_0x634645,'request\x20sent',JSON[_0xac51('0xe')](_0x174009));if(_0x174009['error']){if(_0x174009[_0xac51('0xf')][_0xac51('0x10')]===0x1f4){logger[_0xac51('0xf')](_0xac51('0xb'),_0x634645,_0x174009[_0xac51('0xf')][_0xac51('0x11')]);return _0x82789f(_0x174009[_0xac51('0xf')][_0xac51('0x11')]);}logger[_0xac51('0xf')](_0xac51('0xb'),_0x634645,_0x174009[_0xac51('0xf')][_0xac51('0x11')]);return _0x5a2c84(_0x174009[_0xac51('0xf')]['message']);}else{logger['info'](_0xac51('0xb'),_0x634645,'request\x20sent');_0x5a2c84(_0x174009[_0xac51('0x12')][_0xac51('0x11')]);}})['catch'](function(_0x35381a){logger['error']('Dynamics365Field,\x20%s,\x20%s',_0x634645,_0x35381a);_0x82789f(_0x35381a);});});}
\ No newline at end of file
index cc10cae..ede478b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55e4=['post','create','put','update','delete','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','isAuthenticated','index','/:id','show','get','getConfigurations','/:id/fields','getFields'];(function(_0x3b0731,_0xcf9925){var _0x4204d7=function(_0x635ac5){while(--_0x635ac5){_0x3b0731['push'](_0x3b0731['shift']());}};_0x4204d7(++_0xcf9925);}(_0x55e4,0x9f));var _0x455e=function(_0x32193a,_0x278c64){_0x32193a=_0x32193a-0x0;var _0x5202d1=_0x55e4[_0x32193a];return _0x5202d1;};'use strict';var multer=require(_0x455e('0x0'));var util=require('util');var path=require(_0x455e('0x1'));var timeout=require(_0x455e('0x2'));var express=require(_0x455e('0x3'));var router=express[_0x455e('0x4')]();var fs_extra=require(_0x455e('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x455e('0x6'));var config=require(_0x455e('0x7'));var controller=require(_0x455e('0x8'));router['get']('/',auth[_0x455e('0x9')](),controller[_0x455e('0xa')]);router['get'](_0x455e('0xb'),auth[_0x455e('0x9')](),controller[_0x455e('0xc')]);router[_0x455e('0xd')]('/:id/configurations',auth[_0x455e('0x9')](),controller[_0x455e('0xe')]);router[_0x455e('0xd')](_0x455e('0xf'),auth[_0x455e('0x9')](),controller[_0x455e('0x10')]);router[_0x455e('0x11')]('/',auth[_0x455e('0x9')](),controller[_0x455e('0x12')]);router[_0x455e('0x11')]('/:id/configurations',auth[_0x455e('0x9')](),controller['addConfiguration']);router[_0x455e('0x13')](_0x455e('0xb'),auth[_0x455e('0x9')](),controller[_0x455e('0x14')]);router[_0x455e('0x15')]('/:id',auth[_0x455e('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xef42=['getConfigurations','/:id/fields','create','post','update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshdeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations'];(function(_0x2f3332,_0x1a18f4){var _0x1feea3=function(_0x5f40d1){while(--_0x5f40d1){_0x2f3332['push'](_0x2f3332['shift']());}};_0x1feea3(++_0x1a18f4);}(_0xef42,0x1c0));var _0x2ef4=function(_0x41a4bb,_0x36b115){_0x41a4bb=_0x41a4bb-0x0;var _0x4d4239=_0xef42[_0x41a4bb];return _0x4d4239;};'use strict';var multer=require('multer');var util=require(_0x2ef4('0x0'));var path=require(_0x2ef4('0x1'));var timeout=require(_0x2ef4('0x2'));var express=require('express');var router=express[_0x2ef4('0x3')]();var fs_extra=require(_0x2ef4('0x4'));var auth=require(_0x2ef4('0x5'));var interaction=require(_0x2ef4('0x6'));var config=require('../../config/environment');var controller=require(_0x2ef4('0x7'));router[_0x2ef4('0x8')]('/',auth[_0x2ef4('0x9')](),controller[_0x2ef4('0xa')]);router['get'](_0x2ef4('0xb'),auth['isAuthenticated'](),controller[_0x2ef4('0xc')]);router['get'](_0x2ef4('0xd'),auth[_0x2ef4('0x9')](),controller[_0x2ef4('0xe')]);router[_0x2ef4('0x8')](_0x2ef4('0xf'),auth[_0x2ef4('0x9')](),controller['getFields']);router['post']('/',auth[_0x2ef4('0x9')](),controller[_0x2ef4('0x10')]);router[_0x2ef4('0x11')]('/:id/configurations',auth[_0x2ef4('0x9')](),controller['addConfiguration']);router['put'](_0x2ef4('0xb'),auth[_0x2ef4('0x9')](),controller[_0x2ef4('0x12')]);router[_0x2ef4('0x13')](_0x2ef4('0xb'),auth[_0x2ef4('0x9')](),controller[_0x2ef4('0x14')]);module[_0x2ef4('0x15')]=router;
\ No newline at end of file
index 20d42e8..1e783aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5204=['exports','STRING','username','sequelize'];(function(_0x363a62,_0x50a41c){var _0x25bc7b=function(_0x2169a7){while(--_0x2169a7){_0x363a62['push'](_0x363a62['shift']());}};_0x25bc7b(++_0x50a41c);}(_0x5204,0xdf));var _0x4520=function(_0x12e3e3,_0x501eaf){_0x12e3e3=_0x12e3e3-0x0;var _0x26602e=_0x5204[_0x12e3e3];return _0x26602e;};'use strict';var Sequelize=require(_0x4520('0x0'));module[_0x4520('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x4520('0x2')]},'username':{'type':Sequelize[_0x4520('0x2')],'unique':_0x4520('0x3')},'apiKey':{'type':Sequelize[_0x4520('0x2')]},'remoteUri':{'type':Sequelize[_0x4520('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x4520('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x6d11=['exports','STRING','sequelize'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0x6d11,0xbf));var _0x16d1=function(_0x29b44a,_0xa8c3d4){_0x29b44a=_0x29b44a-0x0;var _0x5515a6=_0x6d11[_0x29b44a];return _0x5515a6;};'use strict';var Sequelize=require(_0x16d1('0x0'));module[_0x16d1('0x1')]={'name':{'type':Sequelize[_0x16d1('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x16d1('0x2')],'unique':'username'},'apiKey':{'type':Sequelize[_0x16d1('0x2')]},'remoteUri':{'type':Sequelize[_0x16d1('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index b9cdba9..698e555 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4a=['ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','where','VIRTUAL','merge','FreshdeskAccount','includeAll','include','findAll','catch','show','params','options','find','create','body','update','getConfigurations','findOne','FreshdeskConfiguration','order','pick','AccountId','Subjects','getSubjects','channel','Descriptions','FreshdeskField','getFields','apiKey','remoteUri','slice','substring','GET','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','%s:X','priority','group','source','company','remove','includes','default','custom_text','label','choices','capitalize','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','ejs','lodash','crypto','jsforce','querystring'];(function(_0x10f079,_0x558607){var _0x3056bb=function(_0x38a476){while(--_0x38a476){_0x10f079['push'](_0x10f079['shift']());}};_0x3056bb(++_0x558607);}(_0xac4a,0x13f));var _0xaac4=function(_0x4c7e7b,_0x288739){_0x4c7e7b=_0x4c7e7b-0x0;var _0x15e76a=_0xac4a[_0x4c7e7b];return _0x15e76a;};'use strict';var emlformat=require(_0xaac4('0x0'));var rimraf=require(_0xaac4('0x1'));var zipdir=require(_0xaac4('0x2'));var jsonpatch=require(_0xaac4('0x3'));var rp=require(_0xaac4('0x4'));var moment=require(_0xaac4('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xaac4('0x6'));var path=require(_0xaac4('0x7'));var sox=require(_0xaac4('0x8'));var csv=require('to-csv');var ejs=require(_0xaac4('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaac4('0xa'));var squel=require('squel');var crypto=require(_0xaac4('0xb'));var jsforce=require(_0xaac4('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xaac4('0xd'));var Papa=require('papaparse');var Redis=require(_0xaac4('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xaac4('0xf'));var hardwareService=require(_0xaac4('0x10'));var logger=require(_0xaac4('0x11'))(_0xaac4('0x12'));var utils=require(_0xaac4('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xaac4('0x14'))['db'];var integrations=require(_0xaac4('0x15'));function respondWithStatusCode(_0x45e512,_0x5a4801){_0x5a4801=_0x5a4801||0xcc;return function(_0x6a808d){if(_0x6a808d){return _0x45e512[_0xaac4('0x16')](_0x5a4801);}return _0x45e512['status'](_0x5a4801)[_0xaac4('0x17')]();};}function respondWithResult(_0x2b20d0,_0x46698d){_0x46698d=_0x46698d||0xc8;return function(_0x150fdd){if(_0x150fdd){return _0x2b20d0[_0xaac4('0x18')](_0x46698d)[_0xaac4('0x19')](_0x150fdd);}};}function respondWithFilteredResult(_0x31b7e5,_0x1df9ae){return function(_0x233278){if(_0x233278){var _0xb8466e=typeof _0x1df9ae[_0xaac4('0x1a')]===_0xaac4('0x1b')&&typeof _0x1df9ae[_0xaac4('0x1c')]==='undefined';var _0x33bc73=_0x233278['count'];var _0x220630=_0xb8466e?0x0:_0x1df9ae['offset'];var _0x3ce35a=_0xb8466e?_0x233278[_0xaac4('0x1d')]:_0x1df9ae[_0xaac4('0x1a')]+_0x1df9ae[_0xaac4('0x1c')];var _0x3cbcb1;if(_0x3ce35a>=_0x33bc73){_0x3ce35a=_0x33bc73;_0x3cbcb1=0xc8;}else{_0x3cbcb1=0xce;}_0x31b7e5[_0xaac4('0x18')](_0x3cbcb1);return _0x31b7e5[_0xaac4('0x1e')](_0xaac4('0x1f'),_0x220630+'-'+_0x3ce35a+'/'+_0x33bc73)[_0xaac4('0x19')](_0x233278);}return null;};}function patchUpdates(_0x480fb0){return function(_0x1d9c42){try{jsonpatch['apply'](_0x1d9c42,_0x480fb0,!![]);}catch(_0x3303f1){return BPromise[_0xaac4('0x20')](_0x3303f1);}return _0x1d9c42[_0xaac4('0x21')]();};}function saveUpdates(_0x477b77,_0x17140f){return function(_0x383a8c){if(_0x383a8c){return _0x383a8c['update'](_0x477b77)[_0xaac4('0x22')](function(_0x27a84d){return _0x27a84d;});}return null;};}function removeEntity(_0x174860,_0x4f10ec){return function(_0x3dd059){if(_0x3dd059){return _0x3dd059[_0xaac4('0x23')]()[_0xaac4('0x22')](function(){_0x174860['status'](0xcc)[_0xaac4('0x17')]();});}};}function handleEntityNotFound(_0x4f1b65,_0x54203b){return function(_0x4fac85){if(!_0x4fac85){_0x4f1b65['sendStatus'](0x194);}return _0x4fac85;};}function handleError(_0x22d5a6,_0x17d25f){_0x17d25f=_0x17d25f||0x1f4;return function(_0x22cda2){logger[_0xaac4('0x24')](_0x22cda2[_0xaac4('0x25')]);if(_0x22cda2[_0xaac4('0x26')]){delete _0x22cda2[_0xaac4('0x26')];}_0x22d5a6[_0xaac4('0x18')](_0x17d25f)[_0xaac4('0x27')](_0x22cda2);};}exports[_0xaac4('0x28')]=function(_0x4d0f5f,_0x316445){var _0x16b33c={},_0xda10b6={},_0xb76ccc={'count':0x0,'rows':[]};var _0x669b34=_[_0xaac4('0x29')](db['FreshdeskAccount'][_0xaac4('0x2a')],function(_0x5d2c9a){return{'name':_0x5d2c9a[_0xaac4('0x2b')],'type':_0x5d2c9a[_0xaac4('0x2c')][_0xaac4('0x2d')]};});_0xda10b6[_0xaac4('0x2e')]=_['map'](_0x669b34,'name');_0xda10b6['query']=_[_0xaac4('0x2f')](_0x4d0f5f[_0xaac4('0x30')]);_0xda10b6[_0xaac4('0x31')]=_[_0xaac4('0x32')](_0xda10b6[_0xaac4('0x2e')],_0xda10b6[_0xaac4('0x30')]);_0x16b33c[_0xaac4('0x33')]=_[_0xaac4('0x32')](_0xda10b6[_0xaac4('0x2e')],qs[_0xaac4('0x34')](_0x4d0f5f[_0xaac4('0x30')][_0xaac4('0x34')]));_0x16b33c[_0xaac4('0x33')]=_0x16b33c[_0xaac4('0x33')][_0xaac4('0x35')]?_0x16b33c['attributes']:_0xda10b6['model'];if(!_0x4d0f5f[_0xaac4('0x30')][_0xaac4('0x36')](_0xaac4('0x37'))){_0x16b33c['limit']=qs[_0xaac4('0x1c')](_0x4d0f5f[_0xaac4('0x30')][_0xaac4('0x1c')]);_0x16b33c[_0xaac4('0x1a')]=qs[_0xaac4('0x1a')](_0x4d0f5f[_0xaac4('0x30')][_0xaac4('0x1a')]);}_0x16b33c['order']=qs[_0xaac4('0x38')](_0x4d0f5f[_0xaac4('0x30')][_0xaac4('0x38')]);_0x16b33c['where']=qs[_0xaac4('0x31')](_['pick'](_0x4d0f5f['query'],_0xda10b6[_0xaac4('0x31')]),_0x669b34);if(_0x4d0f5f[_0xaac4('0x30')][_0xaac4('0x39')]){_0x16b33c['where']=_['merge'](_0x16b33c[_0xaac4('0x3a')],{'$or':_[_0xaac4('0x29')](_0x669b34,function(_0x2f7300){if(_0x2f7300[_0xaac4('0x2c')]!==_0xaac4('0x3b')){var _0x36f4d4={};_0x36f4d4[_0x2f7300['name']]={'$like':'%'+_0x4d0f5f['query'][_0xaac4('0x39')]+'%'};return _0x36f4d4;}})});}_0x16b33c=_[_0xaac4('0x3c')]({},_0x16b33c,_0x4d0f5f['options']);var _0x416a5b={'where':_0x16b33c[_0xaac4('0x3a')]};return db[_0xaac4('0x3d')]['count'](_0x416a5b)[_0xaac4('0x22')](function(_0x4a4773){_0xb76ccc[_0xaac4('0x1d')]=_0x4a4773;if(_0x4d0f5f['query'][_0xaac4('0x3e')]){_0x16b33c[_0xaac4('0x3f')]=[{'all':!![]}];}return db[_0xaac4('0x3d')][_0xaac4('0x40')](_0x16b33c);})['then'](function(_0x247fea){_0xb76ccc['rows']=_0x247fea;return _0xb76ccc;})['then'](respondWithFilteredResult(_0x316445,_0x16b33c))[_0xaac4('0x41')](handleError(_0x316445,null));};exports[_0xaac4('0x42')]=function(_0x27df36,_0x40c007){var _0x43bc12={'raw':![],'where':{'id':_0x27df36[_0xaac4('0x43')]['id']}},_0xb78221={};_0xb78221[_0xaac4('0x2e')]=_['keys'](db[_0xaac4('0x3d')][_0xaac4('0x2a')]);_0xb78221[_0xaac4('0x30')]=_[_0xaac4('0x2f')](_0x27df36['query']);_0xb78221[_0xaac4('0x31')]=_[_0xaac4('0x32')](_0xb78221[_0xaac4('0x2e')],_0xb78221['query']);_0x43bc12[_0xaac4('0x33')]=_[_0xaac4('0x32')](_0xb78221[_0xaac4('0x2e')],qs[_0xaac4('0x34')](_0x27df36['query'][_0xaac4('0x34')]));_0x43bc12[_0xaac4('0x33')]=_0x43bc12[_0xaac4('0x33')]['length']?_0x43bc12[_0xaac4('0x33')]:_0xb78221[_0xaac4('0x2e')];if(_0x27df36[_0xaac4('0x30')][_0xaac4('0x3e')]){_0x43bc12[_0xaac4('0x3f')]=[{'all':!![]}];}_0x43bc12=_[_0xaac4('0x3c')]({},_0x43bc12,_0x27df36[_0xaac4('0x44')]);return db[_0xaac4('0x3d')][_0xaac4('0x45')](_0x43bc12)['then'](handleEntityNotFound(_0x40c007,null))[_0xaac4('0x22')](respondWithResult(_0x40c007,null))[_0xaac4('0x41')](handleError(_0x40c007,null));};exports[_0xaac4('0x46')]=function(_0x360420,_0x130bb5){return db['FreshdeskAccount']['create'](_0x360420[_0xaac4('0x47')],{})[_0xaac4('0x22')](respondWithResult(_0x130bb5,0xc9))[_0xaac4('0x41')](handleError(_0x130bb5,null));};exports[_0xaac4('0x48')]=function(_0x5f33ea,_0x283d51){if(_0x5f33ea['body']['id']){delete _0x5f33ea[_0xaac4('0x47')]['id'];}return db[_0xaac4('0x3d')]['find']({'where':{'id':_0x5f33ea[_0xaac4('0x43')]['id']}})[_0xaac4('0x22')](handleEntityNotFound(_0x283d51,null))[_0xaac4('0x22')](saveUpdates(_0x5f33ea['body'],null))['then'](respondWithResult(_0x283d51,null))[_0xaac4('0x41')](handleError(_0x283d51,null));};exports[_0xaac4('0x23')]=function(_0x22dda7,_0xb32d1d){return db[_0xaac4('0x3d')][_0xaac4('0x45')]({'where':{'id':_0x22dda7['params']['id']}})[_0xaac4('0x22')](handleEntityNotFound(_0xb32d1d,null))[_0xaac4('0x22')](removeEntity(_0xb32d1d,null))[_0xaac4('0x41')](handleError(_0xb32d1d,null));};exports[_0xaac4('0x49')]=function(_0x56201b,_0x3ca377,_0x571418){var _0x33e32f={};var _0x3a703c={};var _0x460252;var _0x3922a0;return db[_0xaac4('0x3d')][_0xaac4('0x4a')]({'where':{'id':_0x56201b[_0xaac4('0x43')]['id']}})[_0xaac4('0x22')](handleEntityNotFound(_0x3ca377,null))[_0xaac4('0x22')](function(_0x1b9219){if(_0x1b9219){_0x460252=_0x1b9219;_0x3a703c[_0xaac4('0x2e')]=_[_0xaac4('0x2f')](db[_0xaac4('0x4b')][_0xaac4('0x2a')]);_0x3a703c['query']=_[_0xaac4('0x2f')](_0x56201b[_0xaac4('0x30')]);_0x3a703c[_0xaac4('0x31')]=_[_0xaac4('0x32')](_0x3a703c[_0xaac4('0x2e')],_0x3a703c[_0xaac4('0x30')]);_0x33e32f[_0xaac4('0x33')]=_[_0xaac4('0x32')](_0x3a703c['model'],qs[_0xaac4('0x34')](_0x56201b['query'][_0xaac4('0x34')]));_0x33e32f['attributes']=_0x33e32f[_0xaac4('0x33')]['length']?_0x33e32f['attributes']:_0x3a703c[_0xaac4('0x2e')];_0x33e32f[_0xaac4('0x4c')]=qs['sort'](_0x56201b[_0xaac4('0x30')][_0xaac4('0x38')]);_0x33e32f[_0xaac4('0x3a')]=qs[_0xaac4('0x31')](_[_0xaac4('0x4d')](_0x56201b[_0xaac4('0x30')],_0x3a703c['filters']));if(_0x56201b[_0xaac4('0x30')]['filter']){_0x33e32f[_0xaac4('0x3a')]=_['merge'](_0x33e32f['where'],{'$or':_['map'](_0x33e32f[_0xaac4('0x33')],function(_0x380e9d){var _0x467a61={};_0x467a61[_0x380e9d]={'$like':'%'+_0x56201b[_0xaac4('0x30')]['filter']+'%'};return _0x467a61;})});}_0x33e32f=_[_0xaac4('0x3c')]({},_0x33e32f,_0x56201b[_0xaac4('0x44')]);return _0x460252[_0xaac4('0x49')](_0x33e32f);}})['then'](function(_0x8891d){if(_0x8891d){_0x3922a0=_0x8891d[_0xaac4('0x35')];if(!_0x56201b[_0xaac4('0x30')][_0xaac4('0x36')](_0xaac4('0x37'))){_0x33e32f[_0xaac4('0x1c')]=qs[_0xaac4('0x1c')](_0x56201b['query']['limit']);_0x33e32f[_0xaac4('0x1a')]=qs['offset'](_0x56201b['query'][_0xaac4('0x1a')]);}return _0x460252['getConfigurations'](_0x33e32f);}})[_0xaac4('0x22')](function(_0x4b6881){if(_0x4b6881){return _0x4b6881?{'count':_0x3922a0,'rows':_0x4b6881}:null;}})[_0xaac4('0x22')](respondWithResult(_0x3ca377,null))[_0xaac4('0x41')](handleError(_0x3ca377,null));};exports['addConfiguration']=function(_0x5112d3,_0x4e6de9,_0x4d0ee7){if(_0x5112d3[_0xaac4('0x47')]['id']){delete _0x5112d3[_0xaac4('0x47')]['id'];}return db[_0xaac4('0x3d')][_0xaac4('0x4a')]({'where':{'id':_0x5112d3['params']['id']}})[_0xaac4('0x22')](handleEntityNotFound(_0x4e6de9,null))[_0xaac4('0x22')](function(_0x3b0470){if(_0x3b0470){_0x5112d3[_0xaac4('0x47')][_0xaac4('0x4e')]=_0x3b0470['id'];_0x5112d3[_0xaac4('0x47')][_0xaac4('0x4f')]=integrations[_0xaac4('0x50')](_0x5112d3[_0xaac4('0x47')][_0xaac4('0x51')],_0x5112d3[_0xaac4('0x47')]['type']);_0x5112d3['body'][_0xaac4('0x52')]=integrations['getDescriptions'](_0x5112d3['body'][_0xaac4('0x51')],_0x5112d3['body'][_0xaac4('0x2c')]);return db[_0xaac4('0x4b')][_0xaac4('0x46')](_0x5112d3[_0xaac4('0x47')],{'include':[{'model':db['FreshdeskField'],'as':_0xaac4('0x4f')},{'model':db[_0xaac4('0x53')],'as':_0xaac4('0x52')}]});}return null;})[_0xaac4('0x22')](respondWithResult(_0x4e6de9,null))[_0xaac4('0x41')](handleError(_0x4e6de9,null));};exports[_0xaac4('0x54')]=function(_0x5b20c6,_0x1db7c7,_0x429661){var _0x5b5e57='';return db[_0xaac4('0x3d')][_0xaac4('0x4a')]({'where':{'id':_0x5b20c6['params']['id']},'attributes':['id','remoteUri',_0xaac4('0x55')]})[_0xaac4('0x22')](handleEntityNotFound(_0x1db7c7,null))[_0xaac4('0x22')](function(_0x458a17){if(_0x458a17){_0x5b5e57=_0x458a17[_0xaac4('0x56')];var _0x3e5ac9=_0x5b5e57[_0xaac4('0x57')](-0x1);if(_0x3e5ac9==='/'){_0x5b5e57=_0x5b5e57[_0xaac4('0x58')](0x0,_0x5b5e57['lastIndexOf'](_0x3e5ac9));}return rp({'method':_0xaac4('0x59'),'uri':util[_0xaac4('0x5a')](_0xaac4('0x5b'),_0x5b5e57,_0xaac4('0x5c')),'headers':{'Authorization':util[_0xaac4('0x5a')](_0xaac4('0x5d'),new Buffer(util['format'](_0xaac4('0x5e'),_0x458a17[_0xaac4('0x55')]))['toString']('base64'))},'json':!![]});}})['then'](function(_0x25617a){if(_0x25617a){var _0x488b34=['requester','subject','agent','description',_0xaac4('0x18'),_0xaac4('0x5f'),_0xaac4('0x60'),_0xaac4('0x61'),'ticket_type',_0xaac4('0x60'),_0xaac4('0x62')];_[_0xaac4('0x63')](_0x25617a,function(_0x3bcf67){return _0x488b34[_0xaac4('0x64')](_0x3bcf67[_0xaac4('0x26')])||!_0x3bcf67[_0xaac4('0x65')]&&_0x3bcf67['type']!==_0xaac4('0x66')&&_0x3bcf67['type']!=='custom_dropdown';});return{'count':_0x25617a[_0xaac4('0x35')],'rows':_[_0xaac4('0x29')](_0x25617a,function(_0x136231){return{'id':_0x136231[_0xaac4('0x26')],'name':_0x136231[_0xaac4('0x67')],'custom':!_0x136231[_0xaac4('0x65')],'options':_0x136231[_0xaac4('0x68')]?_[_0xaac4('0x29')](_0x136231[_0xaac4('0x68')],function(_0x257955){return{'name':_[_0xaac4('0x69')](_0x257955),'value':_0x257955};}):[]};})};}})[_0xaac4('0x22')](respondWithResult(_0x1db7c7,null))[_0xaac4('0x41')](function(_0x157a6a){var _0xdf6b04=_0x5b20c6[_0xaac4('0x30')][_0xaac4('0x6a')]?0x1f4:_0x157a6a[_0xaac4('0x6b')]||0x1f4;logger[_0xaac4('0x24')](_0xaac4('0x6c'),_0xaac4('0x54'),_0xdf6b04,JSON[_0xaac4('0x6d')](_0x157a6a));delete _0x157a6a[_0xaac4('0x26')];if(_0xdf6b04===0x191){_0xdf6b04=0x190;}_0x1db7c7[_0xaac4('0x18')](_0xdf6b04)[_0xaac4('0x27')](_0x5b20c6['query'][_0xaac4('0x6a')]?{'message':_0xaac4('0x6e'),'statusCode':_0x157a6a[_0xaac4('0x6b')]}:_0x157a6a);});};
\ No newline at end of file
+var _0xfd6f=['keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','then','rows','catch','show','params','length','find','create','body','getConfigurations','FreshdeskConfiguration','order','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','getFields','remoteUri','apiKey','slice','substring','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','toString','requester','subject','description','priority','group','source','ticket_type','company','includes','custom_text','custom_dropdown','label','default','choices','capitalize','test','statusCode','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','undefined','limit','count','offset','json','apply','reject','update','end','stack','name','send','index','map','FreshdeskAccount','rawAttributes','fieldName','type','model','query'];(function(_0x4cb306,_0x4300cc){var _0x8369a5=function(_0x5b7e24){while(--_0x5b7e24){_0x4cb306['push'](_0x4cb306['shift']());}};_0x8369a5(++_0x4300cc);}(_0xfd6f,0x19d));var _0xffd6=function(_0x23f577,_0x155bf7){_0x23f577=_0x23f577-0x0;var _0x52f80b=_0xfd6f[_0x23f577];return _0x52f80b;};'use strict';var emlformat=require(_0xffd6('0x0'));var rimraf=require(_0xffd6('0x1'));var zipdir=require(_0xffd6('0x2'));var jsonpatch=require(_0xffd6('0x3'));var rp=require(_0xffd6('0x4'));var moment=require('moment');var BPromise=require(_0xffd6('0x5'));var Mustache=require(_0xffd6('0x6'));var util=require(_0xffd6('0x7'));var path=require(_0xffd6('0x8'));var sox=require('sox');var csv=require(_0xffd6('0x9'));var ejs=require(_0xffd6('0xa'));var fs=require('fs');var fs_extra=require(_0xffd6('0xb'));var _=require(_0xffd6('0xc'));var squel=require('squel');var crypto=require(_0xffd6('0xd'));var jsforce=require(_0xffd6('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xffd6('0xf'));var Papa=require(_0xffd6('0x10'));var Redis=require(_0xffd6('0x11'));var authService=require(_0xffd6('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xffd6('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xffd6('0x14'));var utils=require(_0xffd6('0x15'));var config=require(_0xffd6('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xffd6('0x17'))['db'];var integrations=require(_0xffd6('0x18'));function respondWithStatusCode(_0x59d2d8,_0x12cbe9){_0x12cbe9=_0x12cbe9||0xcc;return function(_0x1bef90){if(_0x1bef90){return _0x59d2d8[_0xffd6('0x19')](_0x12cbe9);}return _0x59d2d8[_0xffd6('0x1a')](_0x12cbe9)['end']();};}function respondWithResult(_0x5f4765,_0x26ef4){_0x26ef4=_0x26ef4||0xc8;return function(_0x345c44){if(_0x345c44){return _0x5f4765[_0xffd6('0x1a')](_0x26ef4)['json'](_0x345c44);}};}function respondWithFilteredResult(_0x17114f,_0x131661){return function(_0x57e34e){if(_0x57e34e){var _0x39c0a6=typeof _0x131661['offset']===_0xffd6('0x1b')&&typeof _0x131661[_0xffd6('0x1c')]===_0xffd6('0x1b');var _0xb4cfe2=_0x57e34e[_0xffd6('0x1d')];var _0x57af76=_0x39c0a6?0x0:_0x131661[_0xffd6('0x1e')];var _0x39938d=_0x39c0a6?_0x57e34e[_0xffd6('0x1d')]:_0x131661[_0xffd6('0x1e')]+_0x131661['limit'];var _0x4e0446;if(_0x39938d>=_0xb4cfe2){_0x39938d=_0xb4cfe2;_0x4e0446=0xc8;}else{_0x4e0446=0xce;}_0x17114f[_0xffd6('0x1a')](_0x4e0446);return _0x17114f['set']('Content-Range',_0x57af76+'-'+_0x39938d+'/'+_0xb4cfe2)[_0xffd6('0x1f')](_0x57e34e);}return null;};}function patchUpdates(_0x1a7102){return function(_0x3240b1){try{jsonpatch[_0xffd6('0x20')](_0x3240b1,_0x1a7102,!![]);}catch(_0x191642){return BPromise[_0xffd6('0x21')](_0x191642);}return _0x3240b1['save']();};}function saveUpdates(_0x44e5f5,_0x26daf2){return function(_0x531b45){if(_0x531b45){return _0x531b45[_0xffd6('0x22')](_0x44e5f5)['then'](function(_0x270704){return _0x270704;});}return null;};}function removeEntity(_0x207f18,_0x18fd0f){return function(_0x5e0e4c){if(_0x5e0e4c){return _0x5e0e4c['destroy']()['then'](function(){_0x207f18[_0xffd6('0x1a')](0xcc)[_0xffd6('0x23')]();});}};}function handleEntityNotFound(_0x17218b,_0x55c752){return function(_0x423bb8){if(!_0x423bb8){_0x17218b[_0xffd6('0x19')](0x194);}return _0x423bb8;};}function handleError(_0x12352c,_0xdec862){_0xdec862=_0xdec862||0x1f4;return function(_0x3789f8){logger['error'](_0x3789f8[_0xffd6('0x24')]);if(_0x3789f8[_0xffd6('0x25')]){delete _0x3789f8[_0xffd6('0x25')];}_0x12352c[_0xffd6('0x1a')](_0xdec862)[_0xffd6('0x26')](_0x3789f8);};}exports[_0xffd6('0x27')]=function(_0x2f3645,_0x902b39){var _0x23bd05={},_0x4440f8={},_0x44276a={'count':0x0,'rows':[]};var _0x4d0901=_[_0xffd6('0x28')](db[_0xffd6('0x29')][_0xffd6('0x2a')],function(_0x35328a){return{'name':_0x35328a[_0xffd6('0x2b')],'type':_0x35328a[_0xffd6('0x2c')]['key']};});_0x4440f8[_0xffd6('0x2d')]=_[_0xffd6('0x28')](_0x4d0901,_0xffd6('0x25'));_0x4440f8[_0xffd6('0x2e')]=_[_0xffd6('0x2f')](_0x2f3645[_0xffd6('0x2e')]);_0x4440f8[_0xffd6('0x30')]=_[_0xffd6('0x31')](_0x4440f8[_0xffd6('0x2d')],_0x4440f8[_0xffd6('0x2e')]);_0x23bd05[_0xffd6('0x32')]=_[_0xffd6('0x31')](_0x4440f8['model'],qs[_0xffd6('0x33')](_0x2f3645[_0xffd6('0x2e')][_0xffd6('0x33')]));_0x23bd05['attributes']=_0x23bd05['attributes']['length']?_0x23bd05[_0xffd6('0x32')]:_0x4440f8[_0xffd6('0x2d')];if(!_0x2f3645[_0xffd6('0x2e')][_0xffd6('0x34')](_0xffd6('0x35'))){_0x23bd05[_0xffd6('0x1c')]=qs[_0xffd6('0x1c')](_0x2f3645['query'][_0xffd6('0x1c')]);_0x23bd05['offset']=qs[_0xffd6('0x1e')](_0x2f3645[_0xffd6('0x2e')][_0xffd6('0x1e')]);}_0x23bd05['order']=qs[_0xffd6('0x36')](_0x2f3645[_0xffd6('0x2e')]['sort']);_0x23bd05[_0xffd6('0x37')]=qs['filters'](_[_0xffd6('0x38')](_0x2f3645[_0xffd6('0x2e')],_0x4440f8[_0xffd6('0x30')]),_0x4d0901);if(_0x2f3645[_0xffd6('0x2e')][_0xffd6('0x39')]){_0x23bd05[_0xffd6('0x37')]=_[_0xffd6('0x3a')](_0x23bd05[_0xffd6('0x37')],{'$or':_[_0xffd6('0x28')](_0x4d0901,function(_0x4b91fa){if(_0x4b91fa[_0xffd6('0x2c')]!==_0xffd6('0x3b')){var _0x27d0c5={};_0x27d0c5[_0x4b91fa[_0xffd6('0x25')]]={'$like':'%'+_0x2f3645[_0xffd6('0x2e')][_0xffd6('0x39')]+'%'};return _0x27d0c5;}})});}_0x23bd05=_[_0xffd6('0x3a')]({},_0x23bd05,_0x2f3645[_0xffd6('0x3c')]);var _0x2abf19={'where':_0x23bd05[_0xffd6('0x37')]};return db[_0xffd6('0x29')]['count'](_0x2abf19)['then'](function(_0x1bdbc0){_0x44276a[_0xffd6('0x1d')]=_0x1bdbc0;if(_0x2f3645['query'][_0xffd6('0x3d')]){_0x23bd05[_0xffd6('0x3e')]=[{'all':!![]}];}return db[_0xffd6('0x29')][_0xffd6('0x3f')](_0x23bd05);})[_0xffd6('0x40')](function(_0x359998){_0x44276a[_0xffd6('0x41')]=_0x359998;return _0x44276a;})[_0xffd6('0x40')](respondWithFilteredResult(_0x902b39,_0x23bd05))[_0xffd6('0x42')](handleError(_0x902b39,null));};exports[_0xffd6('0x43')]=function(_0x297d05,_0x3791be){var _0x1b680a={'raw':![],'where':{'id':_0x297d05[_0xffd6('0x44')]['id']}},_0x3b5d60={};_0x3b5d60[_0xffd6('0x2d')]=_['keys'](db['FreshdeskAccount']['rawAttributes']);_0x3b5d60[_0xffd6('0x2e')]=_[_0xffd6('0x2f')](_0x297d05[_0xffd6('0x2e')]);_0x3b5d60['filters']=_['intersection'](_0x3b5d60['model'],_0x3b5d60['query']);_0x1b680a[_0xffd6('0x32')]=_[_0xffd6('0x31')](_0x3b5d60[_0xffd6('0x2d')],qs[_0xffd6('0x33')](_0x297d05[_0xffd6('0x2e')][_0xffd6('0x33')]));_0x1b680a[_0xffd6('0x32')]=_0x1b680a[_0xffd6('0x32')][_0xffd6('0x45')]?_0x1b680a[_0xffd6('0x32')]:_0x3b5d60[_0xffd6('0x2d')];if(_0x297d05[_0xffd6('0x2e')][_0xffd6('0x3d')]){_0x1b680a[_0xffd6('0x3e')]=[{'all':!![]}];}_0x1b680a=_['merge']({},_0x1b680a,_0x297d05[_0xffd6('0x3c')]);return db[_0xffd6('0x29')][_0xffd6('0x46')](_0x1b680a)[_0xffd6('0x40')](handleEntityNotFound(_0x3791be,null))[_0xffd6('0x40')](respondWithResult(_0x3791be,null))['catch'](handleError(_0x3791be,null));};exports[_0xffd6('0x47')]=function(_0x2d0a51,_0x5d81b5){return db[_0xffd6('0x29')][_0xffd6('0x47')](_0x2d0a51[_0xffd6('0x48')],{})[_0xffd6('0x40')](respondWithResult(_0x5d81b5,0xc9))[_0xffd6('0x42')](handleError(_0x5d81b5,null));};exports[_0xffd6('0x22')]=function(_0x17e609,_0x1930f9){if(_0x17e609[_0xffd6('0x48')]['id']){delete _0x17e609['body']['id'];}return db[_0xffd6('0x29')][_0xffd6('0x46')]({'where':{'id':_0x17e609['params']['id']}})[_0xffd6('0x40')](handleEntityNotFound(_0x1930f9,null))[_0xffd6('0x40')](saveUpdates(_0x17e609[_0xffd6('0x48')],null))['then'](respondWithResult(_0x1930f9,null))[_0xffd6('0x42')](handleError(_0x1930f9,null));};exports['destroy']=function(_0x48366a,_0x5ebed3){return db[_0xffd6('0x29')]['find']({'where':{'id':_0x48366a[_0xffd6('0x44')]['id']}})[_0xffd6('0x40')](handleEntityNotFound(_0x5ebed3,null))[_0xffd6('0x40')](removeEntity(_0x5ebed3,null))['catch'](handleError(_0x5ebed3,null));};exports[_0xffd6('0x49')]=function(_0x50aa80,_0x124912,_0x2b377e){var _0x295646={};var _0x3c1b27={};var _0x7dc3ae;var _0x2a27d9;return db[_0xffd6('0x29')]['findOne']({'where':{'id':_0x50aa80[_0xffd6('0x44')]['id']}})[_0xffd6('0x40')](handleEntityNotFound(_0x124912,null))[_0xffd6('0x40')](function(_0xa788ab){if(_0xa788ab){_0x7dc3ae=_0xa788ab;_0x3c1b27[_0xffd6('0x2d')]=_[_0xffd6('0x2f')](db[_0xffd6('0x4a')]['rawAttributes']);_0x3c1b27[_0xffd6('0x2e')]=_[_0xffd6('0x2f')](_0x50aa80[_0xffd6('0x2e')]);_0x3c1b27[_0xffd6('0x30')]=_['intersection'](_0x3c1b27[_0xffd6('0x2d')],_0x3c1b27[_0xffd6('0x2e')]);_0x295646[_0xffd6('0x32')]=_[_0xffd6('0x31')](_0x3c1b27[_0xffd6('0x2d')],qs[_0xffd6('0x33')](_0x50aa80[_0xffd6('0x2e')][_0xffd6('0x33')]));_0x295646[_0xffd6('0x32')]=_0x295646['attributes'][_0xffd6('0x45')]?_0x295646[_0xffd6('0x32')]:_0x3c1b27[_0xffd6('0x2d')];_0x295646[_0xffd6('0x4b')]=qs[_0xffd6('0x36')](_0x50aa80[_0xffd6('0x2e')][_0xffd6('0x36')]);_0x295646['where']=qs[_0xffd6('0x30')](_[_0xffd6('0x38')](_0x50aa80[_0xffd6('0x2e')],_0x3c1b27[_0xffd6('0x30')]));if(_0x50aa80[_0xffd6('0x2e')][_0xffd6('0x39')]){_0x295646['where']=_[_0xffd6('0x3a')](_0x295646[_0xffd6('0x37')],{'$or':_[_0xffd6('0x28')](_0x295646[_0xffd6('0x32')],function(_0x28f1df){var _0x12aff9={};_0x12aff9[_0x28f1df]={'$like':'%'+_0x50aa80[_0xffd6('0x2e')][_0xffd6('0x39')]+'%'};return _0x12aff9;})});}_0x295646=_[_0xffd6('0x3a')]({},_0x295646,_0x50aa80[_0xffd6('0x3c')]);return _0x7dc3ae[_0xffd6('0x49')](_0x295646);}})['then'](function(_0x461771){if(_0x461771){_0x2a27d9=_0x461771['length'];if(!_0x50aa80['query'][_0xffd6('0x34')]('nolimit')){_0x295646[_0xffd6('0x1c')]=qs['limit'](_0x50aa80[_0xffd6('0x2e')]['limit']);_0x295646[_0xffd6('0x1e')]=qs['offset'](_0x50aa80[_0xffd6('0x2e')][_0xffd6('0x1e')]);}return _0x7dc3ae[_0xffd6('0x49')](_0x295646);}})[_0xffd6('0x40')](function(_0x4f0db0){if(_0x4f0db0){return _0x4f0db0?{'count':_0x2a27d9,'rows':_0x4f0db0}:null;}})[_0xffd6('0x40')](respondWithResult(_0x124912,null))[_0xffd6('0x42')](handleError(_0x124912,null));};exports['addConfiguration']=function(_0x438264,_0x1c324c,_0x25b1a2){if(_0x438264['body']['id']){delete _0x438264['body']['id'];}return db['FreshdeskAccount'][_0xffd6('0x4c')]({'where':{'id':_0x438264['params']['id']}})['then'](handleEntityNotFound(_0x1c324c,null))[_0xffd6('0x40')](function(_0x8d5a9){if(_0x8d5a9){_0x438264[_0xffd6('0x48')][_0xffd6('0x4d')]=_0x8d5a9['id'];_0x438264['body'][_0xffd6('0x4e')]=integrations[_0xffd6('0x4f')](_0x438264['body'][_0xffd6('0x50')],_0x438264[_0xffd6('0x48')]['type']);_0x438264[_0xffd6('0x48')][_0xffd6('0x51')]=integrations[_0xffd6('0x52')](_0x438264[_0xffd6('0x48')][_0xffd6('0x50')],_0x438264[_0xffd6('0x48')]['type']);return db[_0xffd6('0x4a')]['create'](_0x438264[_0xffd6('0x48')],{'include':[{'model':db[_0xffd6('0x53')],'as':'Subjects'},{'model':db[_0xffd6('0x53')],'as':_0xffd6('0x51')}]});}return null;})[_0xffd6('0x40')](respondWithResult(_0x1c324c,null))[_0xffd6('0x42')](handleError(_0x1c324c,null));};exports[_0xffd6('0x54')]=function(_0x3e9b21,_0x8b8b47,_0x4c115e){var _0x4bf7a1='';return db['FreshdeskAccount'][_0xffd6('0x4c')]({'where':{'id':_0x3e9b21[_0xffd6('0x44')]['id']},'attributes':['id',_0xffd6('0x55'),_0xffd6('0x56')]})[_0xffd6('0x40')](handleEntityNotFound(_0x8b8b47,null))[_0xffd6('0x40')](function(_0x431a6e){if(_0x431a6e){_0x4bf7a1=_0x431a6e[_0xffd6('0x55')];var _0x9bd712=_0x4bf7a1[_0xffd6('0x57')](-0x1);if(_0x9bd712==='/'){_0x4bf7a1=_0x4bf7a1[_0xffd6('0x58')](0x0,_0x4bf7a1[_0xffd6('0x59')](_0x9bd712));}return rp({'method':_0xffd6('0x5a'),'uri':util[_0xffd6('0x5b')](_0xffd6('0x5c'),_0x4bf7a1,_0xffd6('0x5d')),'headers':{'Authorization':util[_0xffd6('0x5b')](_0xffd6('0x5e'),new Buffer(util[_0xffd6('0x5b')]('%s:X',_0x431a6e[_0xffd6('0x56')]))[_0xffd6('0x5f')]('base64'))},'json':!![]});}})[_0xffd6('0x40')](function(_0x2c0592){if(_0x2c0592){var _0x5c9382=[_0xffd6('0x60'),_0xffd6('0x61'),'agent',_0xffd6('0x62'),'status',_0xffd6('0x63'),_0xffd6('0x64'),_0xffd6('0x65'),_0xffd6('0x66'),_0xffd6('0x64'),_0xffd6('0x67')];_['remove'](_0x2c0592,function(_0x23e630){return _0x5c9382[_0xffd6('0x68')](_0x23e630[_0xffd6('0x25')])||!_0x23e630['default']&&_0x23e630['type']!==_0xffd6('0x69')&&_0x23e630[_0xffd6('0x2c')]!==_0xffd6('0x6a');});return{'count':_0x2c0592[_0xffd6('0x45')],'rows':_['map'](_0x2c0592,function(_0x278cbf){return{'id':_0x278cbf[_0xffd6('0x25')],'name':_0x278cbf[_0xffd6('0x6b')],'custom':!_0x278cbf[_0xffd6('0x6c')],'options':_0x278cbf[_0xffd6('0x6d')]?_[_0xffd6('0x28')](_0x278cbf[_0xffd6('0x6d')],function(_0xbc3d41){return{'name':_[_0xffd6('0x6e')](_0xbc3d41),'value':_0xbc3d41};}):[]};})};}})[_0xffd6('0x40')](respondWithResult(_0x8b8b47,null))[_0xffd6('0x42')](function(_0x5b1ade){var _0x114f90=_0x3e9b21[_0xffd6('0x2e')][_0xffd6('0x6f')]?0x1f4:_0x5b1ade[_0xffd6('0x70')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0xffd6('0x54'),_0x114f90,JSON[_0xffd6('0x71')](_0x5b1ade));delete _0x5b1ade['name'];if(_0x114f90===0x191){_0x114f90=0x190;}_0x8b8b47[_0xffd6('0x1a')](_0x114f90)[_0xffd6('0x26')](_0x3e9b21[_0xffd6('0x2e')][_0xffd6('0x6f')]?{'message':_0xffd6('0x72'),'statusCode':_0x5b1ade[_0xffd6('0x70')]}:_0x5b1ade);});};
\ No newline at end of file
index 22f00ae..6b66936 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4031=['exports','int_freshdesk_accounts','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration'];(function(_0x34ed6a,_0x3bc94c){var _0x4abbda=function(_0x25d778){while(--_0x25d778){_0x34ed6a['push'](_0x34ed6a['shift']());}};_0x4abbda(++_0x3bc94c);}(_0x4031,0xd2));var _0x1403=function(_0x39344b,_0x35094f){_0x39344b=_0x39344b-0x0;var _0x1c0469=_0x4031[_0x39344b];return _0x1c0469;};'use strict';var _=require(_0x1403('0x0'));var util=require(_0x1403('0x1'));var logger=require(_0x1403('0x2'))('api');var moment=require(_0x1403('0x3'));var BPromise=require(_0x1403('0x4'));var rp=require(_0x1403('0x5'));var fs=require('fs');var path=require(_0x1403('0x6'));var rimraf=require(_0x1403('0x7'));var config=require(_0x1403('0x8'));var attributes=require(_0x1403('0x9'));var integrations=require(_0x1403('0xa'));module[_0x1403('0xb')]=function(_0x36a87c,_0x464d8d){return _0x36a87c['define']('FreshdeskAccount',attributes,{'tableName':_0x1403('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3c09=['lodash','util','api','moment','bluebird','rimraf','../../config/environment','../../components/integrations/configuration','exports','FreshdeskAccount'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3c09,0xbe));var _0x93c0=function(_0x230b11,_0x32a101){_0x230b11=_0x230b11-0x0;var _0x327e9d=_0x3c09[_0x230b11];return _0x327e9d;};'use strict';var _=require(_0x93c0('0x0'));var util=require(_0x93c0('0x1'));var logger=require('../../config/logger')(_0x93c0('0x2'));var moment=require(_0x93c0('0x3'));var BPromise=require(_0x93c0('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x93c0('0x5'));var config=require(_0x93c0('0x6'));var attributes=require('./intFreshdeskAccount.attributes');var integrations=require(_0x93c0('0x7'));module[_0x93c0('0x8')]=function(_0x2f45d7,_0x31a032){return _0x2f45d7['define'](_0x93c0('0x9'),attributes,{'tableName':'int_freshdesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cd21bab..da65d20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa86f=['ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','FreshdeskAccount','options','raw','where','attributes','limit','include','map','model','GetFreshdeskAccount','debug','ShowFreshdeskAccount','find','lodash','moment','randomstring'];(function(_0x213386,_0x32f879){var _0x134241=function(_0x1d5795){while(--_0x1d5795){_0x213386['push'](_0x213386['shift']());}};_0x134241(++_0x32f879);}(_0xa86f,0x1b7));var _0xfa86=function(_0x22899b,_0x29900f){_0x22899b=_0x22899b-0x0;var _0x6506bc=_0xa86f[_0x22899b];return _0x6506bc;};'use strict';var _=require(_0xfa86('0x0'));var util=require('util');var moment=require(_0xfa86('0x1'));var BPromise=require('bluebird');var rs=require(_0xfa86('0x2'));var fs=require('fs');var Redis=require(_0xfa86('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xfa86('0x4'));var logger=require(_0xfa86('0x5'))(_0xfa86('0x6'));var config=require(_0xfa86('0x7'));var jayson=require(_0xfa86('0x8'));var client=jayson[_0xfa86('0x9')][_0xfa86('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x567a94,_0x5ebeee,_0x17aabf){return new BPromise(function(_0x4bf725,_0x3a4945){return client[_0xfa86('0xb')](_0x567a94,_0x17aabf)[_0xfa86('0xc')](function(_0xc24f0a){logger[_0xfa86('0xd')](_0xfa86('0xe'),_0x5ebeee,_0xfa86('0xf'));logger['debug'](_0xfa86('0x10'),_0x5ebeee,_0xfa86('0xf'),JSON[_0xfa86('0x11')](_0xc24f0a));if(_0xc24f0a[_0xfa86('0x12')]){if(_0xc24f0a['error']['code']===0x1f4){logger[_0xfa86('0x12')]('FreshdeskAccount,\x20%s,\x20%s',_0x5ebeee,_0xc24f0a[_0xfa86('0x12')][_0xfa86('0x13')]);return _0x3a4945(_0xc24f0a[_0xfa86('0x12')][_0xfa86('0x13')]);}logger['error'](_0xfa86('0xe'),_0x5ebeee,_0xc24f0a['error'][_0xfa86('0x13')]);return _0x4bf725(_0xc24f0a['error'][_0xfa86('0x13')]);}else{logger[_0xfa86('0xd')]('FreshdeskAccount,\x20%s,\x20%s',_0x5ebeee,_0xfa86('0xf'));_0x4bf725(_0xc24f0a['result']['message']);}})[_0xfa86('0x14')](function(_0x2b0bf5){logger[_0xfa86('0x12')](_0xfa86('0xe'),_0x5ebeee,_0x2b0bf5);_0x3a4945(_0x2b0bf5);});});}exports['GetFreshdeskAccount']=function(_0x3ed99c){var _0x3e1704=this;return new Promise(function(_0x28a190,_0x705d75){return db[_0xfa86('0x15')]['findAll']({'raw':_0x3ed99c[_0xfa86('0x16')]?_0x3ed99c[_0xfa86('0x16')][_0xfa86('0x17')]===undefined?!![]:![]:!![],'where':_0x3ed99c['options']?_0x3ed99c[_0xfa86('0x16')][_0xfa86('0x18')]||null:null,'attributes':_0x3ed99c[_0xfa86('0x16')]?_0x3ed99c['options'][_0xfa86('0x19')]||null:null,'limit':_0x3ed99c['options']?_0x3ed99c[_0xfa86('0x16')][_0xfa86('0x1a')]||null:null,'include':_0x3ed99c[_0xfa86('0x16')]?_0x3ed99c[_0xfa86('0x16')][_0xfa86('0x1b')]?_[_0xfa86('0x1c')](_0x3ed99c['options'][_0xfa86('0x1b')],function(_0x22d5a7){return{'model':db[_0x22d5a7[_0xfa86('0x1d')]],'as':_0x22d5a7['as'],'attributes':_0x22d5a7[_0xfa86('0x19')],'include':_0x22d5a7[_0xfa86('0x1b')]?_[_0xfa86('0x1c')](_0x22d5a7['include'],function(_0x2441c7){return{'model':db[_0x2441c7[_0xfa86('0x1d')]],'as':_0x2441c7['as'],'attributes':_0x2441c7[_0xfa86('0x19')],'include':_0x2441c7[_0xfa86('0x1b')]?_['map'](_0x2441c7[_0xfa86('0x1b')],function(_0x5a1f83){return{'model':db[_0x5a1f83['model']],'as':_0x5a1f83['as'],'attributes':_0x5a1f83[_0xfa86('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x6ab2b4){logger['info'](_0xfa86('0x1e'),_0x3ed99c);logger[_0xfa86('0x1f')]('GetFreshdeskAccount',_0x3ed99c,JSON[_0xfa86('0x11')](_0x6ab2b4));_0x28a190(_0x6ab2b4);})[_0xfa86('0x14')](function(_0x235527){logger[_0xfa86('0x12')](_0xfa86('0x1e'),_0x235527[_0xfa86('0x13')],_0x3ed99c);_0x705d75(_0x3e1704[_0xfa86('0x12')](0x1f4,_0x235527['message']));});});};exports[_0xfa86('0x20')]=function(_0x1d966e){var _0x41e1e3=this;return new Promise(function(_0x49b331,_0x1316b0){return db[_0xfa86('0x15')][_0xfa86('0x21')]({'raw':_0x1d966e[_0xfa86('0x16')]?_0x1d966e[_0xfa86('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x1d966e[_0xfa86('0x16')]?_0x1d966e[_0xfa86('0x16')][_0xfa86('0x18')]||null:null,'attributes':_0x1d966e[_0xfa86('0x16')]?_0x1d966e[_0xfa86('0x16')][_0xfa86('0x19')]||null:null,'include':_0x1d966e[_0xfa86('0x16')]?_0x1d966e[_0xfa86('0x16')]['include']?_['map'](_0x1d966e['options']['include'],function(_0x2a49b7){return{'model':db[_0x2a49b7[_0xfa86('0x1d')]],'as':_0x2a49b7['as'],'attributes':_0x2a49b7[_0xfa86('0x19')],'include':_0x2a49b7[_0xfa86('0x1b')]?_[_0xfa86('0x1c')](_0x2a49b7[_0xfa86('0x1b')],function(_0x1230bf){return{'model':db[_0x1230bf['model']],'as':_0x1230bf['as'],'attributes':_0x1230bf['attributes'],'include':_0x1230bf[_0xfa86('0x1b')]?_['map'](_0x1230bf[_0xfa86('0x1b')],function(_0x5f1a0a){return{'model':db[_0x5f1a0a[_0xfa86('0x1d')]],'as':_0x5f1a0a['as'],'attributes':_0x5f1a0a[_0xfa86('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x53b9ee){logger[_0xfa86('0xd')]('ShowFreshdeskAccount',_0x1d966e);logger[_0xfa86('0x1f')](_0xfa86('0x20'),_0x1d966e,JSON[_0xfa86('0x11')](_0x53b9ee));_0x49b331(_0x53b9ee);})[_0xfa86('0x14')](function(_0x478cf5){logger[_0xfa86('0x12')](_0xfa86('0x20'),_0x478cf5[_0xfa86('0x13')],_0x1d966e);_0x1316b0(_0x41e1e3[_0xfa86('0x12')](0x1f4,_0x478cf5[_0xfa86('0x13')]));});});};
\ No newline at end of file
+var _0x2bbb=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','where','attributes','include','map','model','ShowFreshdeskAccount','find','raw','util','moment','bluebird'];(function(_0x40001a,_0x57f2ae){var _0x4cec45=function(_0x5e4166){while(--_0x5e4166){_0x40001a['push'](_0x40001a['shift']());}};_0x4cec45(++_0x57f2ae);}(_0x2bbb,0x85));var _0xb2bb=function(_0x42c6dc,_0x3a8ea2){_0x42c6dc=_0x42c6dc-0x0;var _0x1334fc=_0x2bbb[_0x42c6dc];return _0x1334fc;};'use strict';var _=require('lodash');var util=require(_0xb2bb('0x0'));var moment=require(_0xb2bb('0x1'));var BPromise=require(_0xb2bb('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb2bb('0x3'));var db=require(_0xb2bb('0x4'))['db'];var utils=require(_0xb2bb('0x5'));var logger=require(_0xb2bb('0x6'))(_0xb2bb('0x7'));var config=require(_0xb2bb('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xb2bb('0x9')][_0xb2bb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x53b48f,_0x12357d,_0x248f27){return new BPromise(function(_0x1738d9,_0x230064){return client['request'](_0x53b48f,_0x248f27)[_0xb2bb('0xb')](function(_0x4c6152){logger[_0xb2bb('0xc')](_0xb2bb('0xd'),_0x12357d,_0xb2bb('0xe'));logger[_0xb2bb('0xf')](_0xb2bb('0x10'),_0x12357d,'request\x20sent',JSON[_0xb2bb('0x11')](_0x4c6152));if(_0x4c6152['error']){if(_0x4c6152[_0xb2bb('0x12')][_0xb2bb('0x13')]===0x1f4){logger[_0xb2bb('0x12')](_0xb2bb('0xd'),_0x12357d,_0x4c6152[_0xb2bb('0x12')][_0xb2bb('0x14')]);return _0x230064(_0x4c6152['error'][_0xb2bb('0x14')]);}logger[_0xb2bb('0x12')](_0xb2bb('0xd'),_0x12357d,_0x4c6152[_0xb2bb('0x12')]['message']);return _0x1738d9(_0x4c6152[_0xb2bb('0x12')][_0xb2bb('0x14')]);}else{logger[_0xb2bb('0xc')](_0xb2bb('0xd'),_0x12357d,_0xb2bb('0xe'));_0x1738d9(_0x4c6152['result'][_0xb2bb('0x14')]);}})[_0xb2bb('0x15')](function(_0xa9bbcd){logger[_0xb2bb('0x12')](_0xb2bb('0xd'),_0x12357d,_0xa9bbcd);_0x230064(_0xa9bbcd);});});}exports[_0xb2bb('0x16')]=function(_0x35c4de){var _0xa4aa74=this;return new Promise(function(_0x8d2033,_0x1b241f){return db[_0xb2bb('0x17')][_0xb2bb('0x18')]({'raw':_0x35c4de['options']?_0x35c4de[_0xb2bb('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x35c4de[_0xb2bb('0x19')]?_0x35c4de['options'][_0xb2bb('0x1a')]||null:null,'attributes':_0x35c4de[_0xb2bb('0x19')]?_0x35c4de['options'][_0xb2bb('0x1b')]||null:null,'limit':_0x35c4de[_0xb2bb('0x19')]?_0x35c4de['options']['limit']||null:null,'include':_0x35c4de['options']?_0x35c4de[_0xb2bb('0x19')][_0xb2bb('0x1c')]?_[_0xb2bb('0x1d')](_0x35c4de['options'][_0xb2bb('0x1c')],function(_0x2b1f94){return{'model':db[_0x2b1f94[_0xb2bb('0x1e')]],'as':_0x2b1f94['as'],'attributes':_0x2b1f94['attributes'],'include':_0x2b1f94[_0xb2bb('0x1c')]?_[_0xb2bb('0x1d')](_0x2b1f94[_0xb2bb('0x1c')],function(_0x14aba5){return{'model':db[_0x14aba5['model']],'as':_0x14aba5['as'],'attributes':_0x14aba5[_0xb2bb('0x1b')],'include':_0x14aba5[_0xb2bb('0x1c')]?_[_0xb2bb('0x1d')](_0x14aba5['include'],function(_0xa09168){return{'model':db[_0xa09168[_0xb2bb('0x1e')]],'as':_0xa09168['as'],'attributes':_0xa09168[_0xb2bb('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xb2bb('0xb')](function(_0x149ab2){logger[_0xb2bb('0xc')]('GetFreshdeskAccount',_0x35c4de);logger[_0xb2bb('0xf')]('GetFreshdeskAccount',_0x35c4de,JSON[_0xb2bb('0x11')](_0x149ab2));_0x8d2033(_0x149ab2);})['catch'](function(_0x3d82c8){logger[_0xb2bb('0x12')]('GetFreshdeskAccount',_0x3d82c8[_0xb2bb('0x14')],_0x35c4de);_0x1b241f(_0xa4aa74['error'](0x1f4,_0x3d82c8[_0xb2bb('0x14')]));});});};exports[_0xb2bb('0x1f')]=function(_0x51a013){var _0xef2655=this;return new Promise(function(_0x8cbc9f,_0x214649){return db[_0xb2bb('0x17')][_0xb2bb('0x20')]({'raw':_0x51a013[_0xb2bb('0x19')]?_0x51a013[_0xb2bb('0x19')][_0xb2bb('0x21')]===undefined?!![]:![]:!![],'where':_0x51a013[_0xb2bb('0x19')]?_0x51a013[_0xb2bb('0x19')][_0xb2bb('0x1a')]||null:null,'attributes':_0x51a013['options']?_0x51a013[_0xb2bb('0x19')][_0xb2bb('0x1b')]||null:null,'include':_0x51a013[_0xb2bb('0x19')]?_0x51a013[_0xb2bb('0x19')][_0xb2bb('0x1c')]?_['map'](_0x51a013[_0xb2bb('0x19')][_0xb2bb('0x1c')],function(_0x32e8e0){return{'model':db[_0x32e8e0[_0xb2bb('0x1e')]],'as':_0x32e8e0['as'],'attributes':_0x32e8e0[_0xb2bb('0x1b')],'include':_0x32e8e0['include']?_['map'](_0x32e8e0[_0xb2bb('0x1c')],function(_0x3d37e9){return{'model':db[_0x3d37e9['model']],'as':_0x3d37e9['as'],'attributes':_0x3d37e9[_0xb2bb('0x1b')],'include':_0x3d37e9[_0xb2bb('0x1c')]?_['map'](_0x3d37e9[_0xb2bb('0x1c')],function(_0x4eb22d){return{'model':db[_0x4eb22d[_0xb2bb('0x1e')]],'as':_0x4eb22d['as'],'attributes':_0x4eb22d[_0xb2bb('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x11e070){logger[_0xb2bb('0xc')](_0xb2bb('0x1f'),_0x51a013);logger[_0xb2bb('0xf')]('ShowFreshdeskAccount',_0x51a013,JSON[_0xb2bb('0x11')](_0x11e070));_0x8cbc9f(_0x11e070);})[_0xb2bb('0x15')](function(_0x6d068b){logger[_0xb2bb('0x12')](_0xb2bb('0x1f'),_0x6d068b[_0xb2bb('0x14')],_0x51a013);_0x214649(_0xef2655[_0xb2bb('0x12')](0x1f4,_0x6d068b[_0xb2bb('0x14')]));});});};
\ No newline at end of file
index a8a616a..9a395c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d4a=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshdeskConfiguration.controller','isAuthenticated','index','get','/:id','/:id/subjects','getSubjects','/:id/descriptions','/:id/tags','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x3ae1d9,_0x545286){var _0x23c3ef=function(_0x4f65b4){while(--_0x4f65b4){_0x3ae1d9['push'](_0x3ae1d9['shift']());}};_0x23c3ef(++_0x545286);}(_0x4d4a,0x133));var _0xa4d4=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x4d4a[_0x413feb];return _0x40ee88;};'use strict';var multer=require(_0xa4d4('0x0'));var util=require(_0xa4d4('0x1'));var path=require(_0xa4d4('0x2'));var timeout=require(_0xa4d4('0x3'));var express=require(_0xa4d4('0x4'));var router=express[_0xa4d4('0x5')]();var fs_extra=require(_0xa4d4('0x6'));var auth=require(_0xa4d4('0x7'));var interaction=require(_0xa4d4('0x8'));var config=require('../../config/environment');var controller=require(_0xa4d4('0x9'));router['get']('/',auth[_0xa4d4('0xa')](),controller[_0xa4d4('0xb')]);router[_0xa4d4('0xc')](_0xa4d4('0xd'),auth[_0xa4d4('0xa')](),controller['show']);router[_0xa4d4('0xc')]('/:id/fields',auth[_0xa4d4('0xa')](),controller['getFields']);router[_0xa4d4('0xc')](_0xa4d4('0xe'),auth[_0xa4d4('0xa')](),controller[_0xa4d4('0xf')]);router[_0xa4d4('0xc')](_0xa4d4('0x10'),auth[_0xa4d4('0xa')](),controller['getDescriptions']);router[_0xa4d4('0xc')](_0xa4d4('0x11'),auth['isAuthenticated'](),controller['getTags']);router[_0xa4d4('0x12')]('/',auth[_0xa4d4('0xa')](),controller['create']);router[_0xa4d4('0x12')](_0xa4d4('0x11'),auth[_0xa4d4('0xa')](),controller['setTags']);router[_0xa4d4('0x13')](_0xa4d4('0xd'),auth[_0xa4d4('0xa')](),controller[_0xa4d4('0x14')]);router[_0xa4d4('0x15')](_0xa4d4('0xd'),auth[_0xa4d4('0xa')](),controller[_0xa4d4('0x16')]);module[_0xa4d4('0x17')]=router;
\ No newline at end of file
+var _0xfabb=['/:id/descriptions','/:id/tags','getTags','post','create','setTags','put','update','delete','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','/:id/fields','/:id/subjects','getSubjects'];(function(_0x3d096f,_0x1833b8){var _0x5826d0=function(_0x3c0482){while(--_0x3c0482){_0x3d096f['push'](_0x3d096f['shift']());}};_0x5826d0(++_0x1833b8);}(_0xfabb,0x1cb));var _0xbfab=function(_0x5cf5a4,_0x2197c7){_0x5cf5a4=_0x5cf5a4-0x0;var _0x1346af=_0xfabb[_0x5cf5a4];return _0x1346af;};'use strict';var multer=require('multer');var util=require(_0xbfab('0x0'));var path=require(_0xbfab('0x1'));var timeout=require(_0xbfab('0x2'));var express=require('express');var router=express[_0xbfab('0x3')]();var fs_extra=require(_0xbfab('0x4'));var auth=require(_0xbfab('0x5'));var interaction=require(_0xbfab('0x6'));var config=require(_0xbfab('0x7'));var controller=require('./intFreshdeskConfiguration.controller');router['get']('/',auth[_0xbfab('0x8')](),controller[_0xbfab('0x9')]);router[_0xbfab('0xa')](_0xbfab('0xb'),auth[_0xbfab('0x8')](),controller[_0xbfab('0xc')]);router['get'](_0xbfab('0xd'),auth[_0xbfab('0x8')](),controller['getFields']);router[_0xbfab('0xa')](_0xbfab('0xe'),auth[_0xbfab('0x8')](),controller[_0xbfab('0xf')]);router[_0xbfab('0xa')](_0xbfab('0x10'),auth[_0xbfab('0x8')](),controller['getDescriptions']);router['get'](_0xbfab('0x11'),auth[_0xbfab('0x8')](),controller[_0xbfab('0x12')]);router[_0xbfab('0x13')]('/',auth['isAuthenticated'](),controller[_0xbfab('0x14')]);router[_0xbfab('0x13')](_0xbfab('0x11'),auth['isAuthenticated'](),controller[_0xbfab('0x15')]);router[_0xbfab('0x16')]('/:id',auth[_0xbfab('0x8')](),controller[_0xbfab('0x17')]);router[_0xbfab('0x18')](_0xbfab('0xb'),auth[_0xbfab('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 18b45e0..92675c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf47=['STRING','sequelize','exports'];(function(_0x15bc81,_0x4d4f77){var _0x59440e=function(_0x1b60f2){while(--_0x1b60f2){_0x15bc81['push'](_0x15bc81['shift']());}};_0x59440e(++_0x4d4f77);}(_0xdf47,0x1de));var _0x7df4=function(_0x506826,_0x363358){_0x506826=_0x506826-0x0;var _0x14c0b2=_0xdf47[_0x506826];return _0x14c0b2;};'use strict';var Sequelize=require(_0x7df4('0x0'));module[_0x7df4('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x7df4('0x2')]}};
\ No newline at end of file
+var _0x9b92=['exports','STRING','sequelize'];(function(_0x2217e3,_0x1bbe8e){var _0x55990a=function(_0x43b323){while(--_0x43b323){_0x2217e3['push'](_0x2217e3['shift']());}};_0x55990a(++_0x1bbe8e);}(_0x9b92,0x1a9));var _0x29b9=function(_0x466d45,_0x4a06a7){_0x466d45=_0x466d45-0x0;var _0x5ca2e2=_0x9b92[_0x466d45];return _0x5ca2e2;};'use strict';var Sequelize=require(_0x29b9('0x0'));module[_0x29b9('0x1')]={'name':{'type':Sequelize[_0x29b9('0x2')]},'description':{'type':Sequelize[_0x29b9('0x2')]}};
\ No newline at end of file
index 7354522..cebef99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa582=['sort','where','pick','merge','VIRTUAL','filter','then','includeAll','include','findAll','rows','catch','show','options','find','create','update','body','params','getFields','findOne','FreshdeskField','getSubjects','order','getDescriptions','nolimit','getTags','setTags','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','save','destroy','sendStatus','error','stack','name','index','map','FreshdeskConfiguration','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty'];(function(_0x4801ca,_0x39a4f7){var _0x27b94b=function(_0x499b19){while(--_0x499b19){_0x4801ca['push'](_0x4801ca['shift']());}};_0x27b94b(++_0x39a4f7);}(_0xa582,0xc6));var _0x2a58=function(_0x525c7b,_0x488fcc){_0x525c7b=_0x525c7b-0x0;var _0x27b33e=_0xa582[_0x525c7b];return _0x27b33e;};'use strict';var emlformat=require(_0x2a58('0x0'));var rimraf=require(_0x2a58('0x1'));var zipdir=require(_0x2a58('0x2'));var jsonpatch=require(_0x2a58('0x3'));var rp=require(_0x2a58('0x4'));var moment=require(_0x2a58('0x5'));var BPromise=require(_0x2a58('0x6'));var Mustache=require(_0x2a58('0x7'));var util=require(_0x2a58('0x8'));var path=require(_0x2a58('0x9'));var sox=require(_0x2a58('0xa'));var csv=require(_0x2a58('0xb'));var ejs=require(_0x2a58('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2a58('0xd'));var squel=require('squel');var crypto=require(_0x2a58('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x2a58('0xf'));var toCsv=require(_0x2a58('0xb'));var querystring=require(_0x2a58('0x10'));var Papa=require(_0x2a58('0x11'));var Redis=require(_0x2a58('0x12'));var authService=require(_0x2a58('0x13'));var qs=require(_0x2a58('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2a58('0x15'));var logger=require(_0x2a58('0x16'))(_0x2a58('0x17'));var utils=require(_0x2a58('0x18'));var config=require(_0x2a58('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x2a58('0x1a'))['db'];function respondWithStatusCode(_0x1ce74c,_0x3735d7){_0x3735d7=_0x3735d7||0xcc;return function(_0x402ef7){if(_0x402ef7){return _0x1ce74c['sendStatus'](_0x3735d7);}return _0x1ce74c[_0x2a58('0x1b')](_0x3735d7)[_0x2a58('0x1c')]();};}function respondWithResult(_0x3550e5,_0x2d07b8){_0x2d07b8=_0x2d07b8||0xc8;return function(_0x195934){if(_0x195934){return _0x3550e5[_0x2a58('0x1b')](_0x2d07b8)[_0x2a58('0x1d')](_0x195934);}};}function respondWithFilteredResult(_0x341144,_0x555a3c){return function(_0x4093d9){if(_0x4093d9){var _0x3dcf17=typeof _0x555a3c[_0x2a58('0x1e')]===_0x2a58('0x1f')&&typeof _0x555a3c[_0x2a58('0x20')]===_0x2a58('0x1f');var _0x339a68=_0x4093d9[_0x2a58('0x21')];var _0xd84aaa=_0x3dcf17?0x0:_0x555a3c[_0x2a58('0x1e')];var _0xa3f4c7=_0x3dcf17?_0x4093d9[_0x2a58('0x21')]:_0x555a3c['offset']+_0x555a3c[_0x2a58('0x20')];var _0x446bd2;if(_0xa3f4c7>=_0x339a68){_0xa3f4c7=_0x339a68;_0x446bd2=0xc8;}else{_0x446bd2=0xce;}_0x341144[_0x2a58('0x1b')](_0x446bd2);return _0x341144[_0x2a58('0x22')](_0x2a58('0x23'),_0xd84aaa+'-'+_0xa3f4c7+'/'+_0x339a68)[_0x2a58('0x1d')](_0x4093d9);}return null;};}function patchUpdates(_0x5d8124){return function(_0x155647){try{jsonpatch['apply'](_0x155647,_0x5d8124,!![]);}catch(_0x1c1bf5){return BPromise['reject'](_0x1c1bf5);}return _0x155647[_0x2a58('0x24')]();};}function saveUpdates(_0x52dd06,_0x1f1c86){return function(_0xa2a7){if(_0xa2a7){return _0xa2a7['update'](_0x52dd06)['then'](function(_0x537c01){return _0x537c01;});}return null;};}function removeEntity(_0x2d523f,_0x10e0ee){return function(_0x376927){if(_0x376927){return _0x376927[_0x2a58('0x25')]()['then'](function(){_0x2d523f[_0x2a58('0x1b')](0xcc)[_0x2a58('0x1c')]();});}};}function handleEntityNotFound(_0x1d2a22,_0x2a05bf){return function(_0x5341ee){if(!_0x5341ee){_0x1d2a22[_0x2a58('0x26')](0x194);}return _0x5341ee;};}function handleError(_0x1249b6,_0x57f8df){_0x57f8df=_0x57f8df||0x1f4;return function(_0x122f3a){logger[_0x2a58('0x27')](_0x122f3a[_0x2a58('0x28')]);if(_0x122f3a[_0x2a58('0x29')]){delete _0x122f3a[_0x2a58('0x29')];}_0x1249b6[_0x2a58('0x1b')](_0x57f8df)['send'](_0x122f3a);};}exports[_0x2a58('0x2a')]=function(_0x5e5b25,_0x4c8947){var _0x59291b={},_0x4bcad9={},_0x265057={'count':0x0,'rows':[]};var _0x1aa917=_[_0x2a58('0x2b')](db[_0x2a58('0x2c')][_0x2a58('0x2d')],function(_0x449b9f){return{'name':_0x449b9f[_0x2a58('0x2e')],'type':_0x449b9f[_0x2a58('0x2f')]['key']};});_0x4bcad9[_0x2a58('0x30')]=_['map'](_0x1aa917,'name');_0x4bcad9[_0x2a58('0x31')]=_[_0x2a58('0x32')](_0x5e5b25[_0x2a58('0x31')]);_0x4bcad9[_0x2a58('0x33')]=_[_0x2a58('0x34')](_0x4bcad9[_0x2a58('0x30')],_0x4bcad9['query']);_0x59291b['attributes']=_[_0x2a58('0x34')](_0x4bcad9[_0x2a58('0x30')],qs[_0x2a58('0x35')](_0x5e5b25[_0x2a58('0x31')][_0x2a58('0x35')]));_0x59291b[_0x2a58('0x36')]=_0x59291b['attributes'][_0x2a58('0x37')]?_0x59291b[_0x2a58('0x36')]:_0x4bcad9[_0x2a58('0x30')];if(!_0x5e5b25[_0x2a58('0x31')][_0x2a58('0x38')]('nolimit')){_0x59291b[_0x2a58('0x20')]=qs['limit'](_0x5e5b25[_0x2a58('0x31')][_0x2a58('0x20')]);_0x59291b[_0x2a58('0x1e')]=qs[_0x2a58('0x1e')](_0x5e5b25[_0x2a58('0x31')][_0x2a58('0x1e')]);}_0x59291b['order']=qs[_0x2a58('0x39')](_0x5e5b25[_0x2a58('0x31')][_0x2a58('0x39')]);_0x59291b[_0x2a58('0x3a')]=qs[_0x2a58('0x33')](_[_0x2a58('0x3b')](_0x5e5b25[_0x2a58('0x31')],_0x4bcad9[_0x2a58('0x33')]),_0x1aa917);if(_0x5e5b25[_0x2a58('0x31')]['filter']){_0x59291b[_0x2a58('0x3a')]=_[_0x2a58('0x3c')](_0x59291b[_0x2a58('0x3a')],{'$or':_[_0x2a58('0x2b')](_0x1aa917,function(_0x379d59){if(_0x379d59['type']!==_0x2a58('0x3d')){var _0x247e46={};_0x247e46[_0x379d59['name']]={'$like':'%'+_0x5e5b25[_0x2a58('0x31')][_0x2a58('0x3e')]+'%'};return _0x247e46;}})});}_0x59291b=_['merge']({},_0x59291b,_0x5e5b25['options']);var _0x228fb2={'where':_0x59291b[_0x2a58('0x3a')]};return db[_0x2a58('0x2c')][_0x2a58('0x21')](_0x228fb2)[_0x2a58('0x3f')](function(_0x6625a2){_0x265057[_0x2a58('0x21')]=_0x6625a2;if(_0x5e5b25[_0x2a58('0x31')][_0x2a58('0x40')]){_0x59291b[_0x2a58('0x41')]=[{'all':!![]}];}return db[_0x2a58('0x2c')][_0x2a58('0x42')](_0x59291b);})[_0x2a58('0x3f')](function(_0xce155d){_0x265057[_0x2a58('0x43')]=_0xce155d;return _0x265057;})[_0x2a58('0x3f')](respondWithFilteredResult(_0x4c8947,_0x59291b))[_0x2a58('0x44')](handleError(_0x4c8947,null));};exports[_0x2a58('0x45')]=function(_0x5875f1,_0x4a9129){var _0x11208b={'raw':![],'where':{'id':_0x5875f1['params']['id']}},_0x22dbdb={};_0x22dbdb[_0x2a58('0x30')]=_[_0x2a58('0x32')](db[_0x2a58('0x2c')]['rawAttributes']);_0x22dbdb[_0x2a58('0x31')]=_[_0x2a58('0x32')](_0x5875f1[_0x2a58('0x31')]);_0x22dbdb['filters']=_['intersection'](_0x22dbdb[_0x2a58('0x30')],_0x22dbdb[_0x2a58('0x31')]);_0x11208b[_0x2a58('0x36')]=_[_0x2a58('0x34')](_0x22dbdb[_0x2a58('0x30')],qs['fields'](_0x5875f1['query'][_0x2a58('0x35')]));_0x11208b['attributes']=_0x11208b[_0x2a58('0x36')]['length']?_0x11208b[_0x2a58('0x36')]:_0x22dbdb['model'];if(_0x5875f1['query']['includeAll']){_0x11208b[_0x2a58('0x41')]=[{'all':!![]}];}_0x11208b=_[_0x2a58('0x3c')]({},_0x11208b,_0x5875f1[_0x2a58('0x46')]);return db[_0x2a58('0x2c')][_0x2a58('0x47')](_0x11208b)[_0x2a58('0x3f')](handleEntityNotFound(_0x4a9129,null))[_0x2a58('0x3f')](respondWithResult(_0x4a9129,null))['catch'](handleError(_0x4a9129,null));};exports[_0x2a58('0x48')]=function(_0x4ec1bb,_0xcc7374){return db[_0x2a58('0x2c')][_0x2a58('0x48')](_0x4ec1bb['body'],{})[_0x2a58('0x3f')](respondWithResult(_0xcc7374,0xc9))[_0x2a58('0x44')](handleError(_0xcc7374,null));};exports[_0x2a58('0x49')]=function(_0x406512,_0x2946e3){if(_0x406512[_0x2a58('0x4a')]['id']){delete _0x406512['body']['id'];}return db[_0x2a58('0x2c')]['find']({'where':{'id':_0x406512[_0x2a58('0x4b')]['id']}})['then'](handleEntityNotFound(_0x2946e3,null))[_0x2a58('0x3f')](saveUpdates(_0x406512[_0x2a58('0x4a')],null))[_0x2a58('0x3f')](respondWithResult(_0x2946e3,null))[_0x2a58('0x44')](handleError(_0x2946e3,null));};exports[_0x2a58('0x25')]=function(_0x358b7e,_0x4355d9){return db[_0x2a58('0x2c')][_0x2a58('0x47')]({'where':{'id':_0x358b7e['params']['id']}})[_0x2a58('0x3f')](handleEntityNotFound(_0x4355d9,null))[_0x2a58('0x3f')](removeEntity(_0x4355d9,null))[_0x2a58('0x44')](handleError(_0x4355d9,null));};exports[_0x2a58('0x4c')]=function(_0xee40a3,_0x2989b8,_0x7b3961){var _0x5253a0={};var _0x338d44={};var _0x2fc71c;var _0x3bd020;return db[_0x2a58('0x2c')][_0x2a58('0x4d')]({'where':{'id':_0xee40a3[_0x2a58('0x4b')]['id']}})[_0x2a58('0x3f')](handleEntityNotFound(_0x2989b8,null))[_0x2a58('0x3f')](function(_0x18f4bf){if(_0x18f4bf){_0x2fc71c=_0x18f4bf;_0x338d44[_0x2a58('0x30')]=_[_0x2a58('0x32')](db[_0x2a58('0x4e')][_0x2a58('0x2d')]);_0x338d44[_0x2a58('0x31')]=_[_0x2a58('0x32')](_0xee40a3[_0x2a58('0x31')]);_0x338d44[_0x2a58('0x33')]=_[_0x2a58('0x34')](_0x338d44['model'],_0x338d44[_0x2a58('0x31')]);_0x5253a0[_0x2a58('0x36')]=_[_0x2a58('0x34')](_0x338d44[_0x2a58('0x30')],qs[_0x2a58('0x35')](_0xee40a3[_0x2a58('0x31')]['fields']));_0x5253a0[_0x2a58('0x36')]=_0x5253a0[_0x2a58('0x36')][_0x2a58('0x37')]?_0x5253a0[_0x2a58('0x36')]:_0x338d44[_0x2a58('0x30')];_0x5253a0['order']=qs[_0x2a58('0x39')](_0xee40a3['query'][_0x2a58('0x39')]);_0x5253a0[_0x2a58('0x3a')]=qs[_0x2a58('0x33')](_[_0x2a58('0x3b')](_0xee40a3['query'],_0x338d44['filters']));if(_0xee40a3[_0x2a58('0x31')][_0x2a58('0x3e')]){_0x5253a0[_0x2a58('0x3a')]=_[_0x2a58('0x3c')](_0x5253a0[_0x2a58('0x3a')],{'$or':_['map'](_0x5253a0[_0x2a58('0x36')],function(_0x57f693){var _0x3aa111={};_0x3aa111[_0x57f693]={'$like':'%'+_0xee40a3[_0x2a58('0x31')][_0x2a58('0x3e')]+'%'};return _0x3aa111;})});}_0x5253a0=_[_0x2a58('0x3c')]({},_0x5253a0,_0xee40a3[_0x2a58('0x46')]);return _0x2fc71c[_0x2a58('0x4c')](_0x5253a0);}})[_0x2a58('0x3f')](function(_0x1ed11a){if(_0x1ed11a){_0x3bd020=_0x1ed11a['length'];if(!_0xee40a3['query'][_0x2a58('0x38')]('nolimit')){_0x5253a0[_0x2a58('0x20')]=qs[_0x2a58('0x20')](_0xee40a3['query'][_0x2a58('0x20')]);_0x5253a0[_0x2a58('0x1e')]=qs[_0x2a58('0x1e')](_0xee40a3['query'][_0x2a58('0x1e')]);}return _0x2fc71c[_0x2a58('0x4c')](_0x5253a0);}})[_0x2a58('0x3f')](function(_0x3dd78b){if(_0x3dd78b){return _0x3dd78b?{'count':_0x3bd020,'rows':_0x3dd78b}:null;}})[_0x2a58('0x3f')](respondWithResult(_0x2989b8,null))[_0x2a58('0x44')](handleError(_0x2989b8,null));};exports[_0x2a58('0x4f')]=function(_0x1548ed,_0xd0e379,_0x2ab381){var _0x5b9dad={};var _0x45009f={};var _0x2a29bd;var _0x15fea7;return db[_0x2a58('0x2c')][_0x2a58('0x4d')]({'where':{'id':_0x1548ed[_0x2a58('0x4b')]['id']}})[_0x2a58('0x3f')](handleEntityNotFound(_0xd0e379,null))['then'](function(_0x41908c){if(_0x41908c){_0x2a29bd=_0x41908c;_0x45009f[_0x2a58('0x30')]=_['keys'](db['FreshdeskField'][_0x2a58('0x2d')]);_0x45009f['query']=_[_0x2a58('0x32')](_0x1548ed[_0x2a58('0x31')]);_0x45009f[_0x2a58('0x33')]=_[_0x2a58('0x34')](_0x45009f[_0x2a58('0x30')],_0x45009f['query']);_0x5b9dad['attributes']=_['intersection'](_0x45009f[_0x2a58('0x30')],qs['fields'](_0x1548ed[_0x2a58('0x31')][_0x2a58('0x35')]));_0x5b9dad['attributes']=_0x5b9dad[_0x2a58('0x36')]['length']?_0x5b9dad['attributes']:_0x45009f[_0x2a58('0x30')];_0x5b9dad[_0x2a58('0x50')]=qs['sort'](_0x1548ed['query'][_0x2a58('0x39')]);_0x5b9dad[_0x2a58('0x3a')]=qs[_0x2a58('0x33')](_[_0x2a58('0x3b')](_0x1548ed[_0x2a58('0x31')],_0x45009f['filters']));if(_0x1548ed[_0x2a58('0x31')][_0x2a58('0x3e')]){_0x5b9dad[_0x2a58('0x3a')]=_[_0x2a58('0x3c')](_0x5b9dad[_0x2a58('0x3a')],{'$or':_['map'](_0x5b9dad[_0x2a58('0x36')],function(_0x4c6f61){var _0x2d805e={};_0x2d805e[_0x4c6f61]={'$like':'%'+_0x1548ed[_0x2a58('0x31')][_0x2a58('0x3e')]+'%'};return _0x2d805e;})});}_0x5b9dad=_[_0x2a58('0x3c')]({},_0x5b9dad,_0x1548ed['options']);return _0x2a29bd[_0x2a58('0x4f')](_0x5b9dad);}})[_0x2a58('0x3f')](function(_0x261286){if(_0x261286){_0x15fea7=_0x261286['length'];if(!_0x1548ed[_0x2a58('0x31')][_0x2a58('0x38')]('nolimit')){_0x5b9dad[_0x2a58('0x20')]=qs[_0x2a58('0x20')](_0x1548ed['query'][_0x2a58('0x20')]);_0x5b9dad[_0x2a58('0x1e')]=qs['offset'](_0x1548ed[_0x2a58('0x31')]['offset']);}return _0x2a29bd[_0x2a58('0x4f')](_0x5b9dad);}})[_0x2a58('0x3f')](function(_0x22703a){if(_0x22703a){return _0x22703a?{'count':_0x15fea7,'rows':_0x22703a}:null;}})['then'](respondWithResult(_0xd0e379,null))[_0x2a58('0x44')](handleError(_0xd0e379,null));};exports[_0x2a58('0x51')]=function(_0x2056a0,_0x28a808,_0x2e8f8d){var _0x20d6fd={};var _0x3742f2={};var _0x3bc591;var _0x1eb1e5;return db[_0x2a58('0x2c')][_0x2a58('0x4d')]({'where':{'id':_0x2056a0[_0x2a58('0x4b')]['id']}})[_0x2a58('0x3f')](handleEntityNotFound(_0x28a808,null))[_0x2a58('0x3f')](function(_0x11262b){if(_0x11262b){_0x3bc591=_0x11262b;_0x3742f2[_0x2a58('0x30')]=_['keys'](db[_0x2a58('0x4e')][_0x2a58('0x2d')]);_0x3742f2['query']=_[_0x2a58('0x32')](_0x2056a0[_0x2a58('0x31')]);_0x3742f2[_0x2a58('0x33')]=_[_0x2a58('0x34')](_0x3742f2['model'],_0x3742f2[_0x2a58('0x31')]);_0x20d6fd['attributes']=_[_0x2a58('0x34')](_0x3742f2[_0x2a58('0x30')],qs[_0x2a58('0x35')](_0x2056a0[_0x2a58('0x31')][_0x2a58('0x35')]));_0x20d6fd[_0x2a58('0x36')]=_0x20d6fd[_0x2a58('0x36')][_0x2a58('0x37')]?_0x20d6fd[_0x2a58('0x36')]:_0x3742f2[_0x2a58('0x30')];_0x20d6fd[_0x2a58('0x50')]=qs['sort'](_0x2056a0[_0x2a58('0x31')]['sort']);_0x20d6fd[_0x2a58('0x3a')]=qs['filters'](_[_0x2a58('0x3b')](_0x2056a0[_0x2a58('0x31')],_0x3742f2[_0x2a58('0x33')]));if(_0x2056a0['query']['filter']){_0x20d6fd['where']=_[_0x2a58('0x3c')](_0x20d6fd[_0x2a58('0x3a')],{'$or':_['map'](_0x20d6fd['attributes'],function(_0x43ad47){var _0x40ab47={};_0x40ab47[_0x43ad47]={'$like':'%'+_0x2056a0[_0x2a58('0x31')][_0x2a58('0x3e')]+'%'};return _0x40ab47;})});}_0x20d6fd=_['merge']({},_0x20d6fd,_0x2056a0['options']);return _0x3bc591[_0x2a58('0x51')](_0x20d6fd);}})[_0x2a58('0x3f')](function(_0x4078eb){if(_0x4078eb){_0x1eb1e5=_0x4078eb[_0x2a58('0x37')];if(!_0x2056a0['query'][_0x2a58('0x38')](_0x2a58('0x52'))){_0x20d6fd[_0x2a58('0x20')]=qs[_0x2a58('0x20')](_0x2056a0['query'][_0x2a58('0x20')]);_0x20d6fd[_0x2a58('0x1e')]=qs['offset'](_0x2056a0[_0x2a58('0x31')][_0x2a58('0x1e')]);}return _0x3bc591[_0x2a58('0x51')](_0x20d6fd);}})[_0x2a58('0x3f')](function(_0x1e7ebc){if(_0x1e7ebc){return _0x1e7ebc?{'count':_0x1eb1e5,'rows':_0x1e7ebc}:null;}})[_0x2a58('0x3f')](respondWithResult(_0x28a808,null))['catch'](handleError(_0x28a808,null));};exports[_0x2a58('0x53')]=function(_0x2da9e4,_0x33558d,_0x29d450){var _0x52c7b8={};var _0x42dbc2={};var _0x4f7f28;var _0x53a69f;return db[_0x2a58('0x2c')]['findOne']({'where':{'id':_0x2da9e4[_0x2a58('0x4b')]['id']}})[_0x2a58('0x3f')](handleEntityNotFound(_0x33558d,null))[_0x2a58('0x3f')](function(_0x3e4cc1){if(_0x3e4cc1){_0x4f7f28=_0x3e4cc1;_0x42dbc2[_0x2a58('0x30')]=_[_0x2a58('0x32')](db['Tag']['rawAttributes']);_0x42dbc2[_0x2a58('0x31')]=_[_0x2a58('0x32')](_0x2da9e4[_0x2a58('0x31')]);_0x42dbc2['filters']=_[_0x2a58('0x34')](_0x42dbc2['model'],_0x42dbc2['query']);_0x52c7b8[_0x2a58('0x36')]=_['intersection'](_0x42dbc2[_0x2a58('0x30')],qs[_0x2a58('0x35')](_0x2da9e4['query'][_0x2a58('0x35')]));_0x52c7b8[_0x2a58('0x36')]=_0x52c7b8[_0x2a58('0x36')][_0x2a58('0x37')]?_0x52c7b8['attributes']:_0x42dbc2[_0x2a58('0x30')];_0x52c7b8[_0x2a58('0x50')]=qs['sort'](_0x2da9e4[_0x2a58('0x31')]['sort']);_0x52c7b8[_0x2a58('0x3a')]=qs[_0x2a58('0x33')](_[_0x2a58('0x3b')](_0x2da9e4['query'],_0x42dbc2['filters']));if(_0x2da9e4[_0x2a58('0x31')][_0x2a58('0x3e')]){_0x52c7b8[_0x2a58('0x3a')]=_[_0x2a58('0x3c')](_0x52c7b8[_0x2a58('0x3a')],{'$or':_['map'](_0x52c7b8[_0x2a58('0x36')],function(_0x34af77){var _0x38e31f={};_0x38e31f[_0x34af77]={'$like':'%'+_0x2da9e4['query'][_0x2a58('0x3e')]+'%'};return _0x38e31f;})});}_0x52c7b8=_['merge']({},_0x52c7b8,_0x2da9e4[_0x2a58('0x46')]);return _0x4f7f28[_0x2a58('0x53')](_0x52c7b8);}})[_0x2a58('0x3f')](function(_0x5c1f77){if(_0x5c1f77){_0x53a69f=_0x5c1f77[_0x2a58('0x37')];if(!_0x2da9e4['query']['hasOwnProperty']('nolimit')){_0x52c7b8[_0x2a58('0x20')]=qs['limit'](_0x2da9e4[_0x2a58('0x31')]['limit']);_0x52c7b8['offset']=qs['offset'](_0x2da9e4[_0x2a58('0x31')][_0x2a58('0x1e')]);}return _0x4f7f28[_0x2a58('0x53')](_0x52c7b8);}})['then'](function(_0x28891d){if(_0x28891d){return _0x28891d?{'count':_0x53a69f,'rows':_0x28891d}:null;}})[_0x2a58('0x3f')](respondWithResult(_0x33558d,null))[_0x2a58('0x44')](handleError(_0x33558d,null));};exports[_0x2a58('0x54')]=function(_0x3c46f1,_0x3039d4,_0xd3a0d5){if(_0x3c46f1[_0x2a58('0x4a')]['id']){delete _0x3c46f1['body']['id'];}return db[_0x2a58('0x2c')][_0x2a58('0x4d')]({'where':{'id':_0x3c46f1[_0x2a58('0x4b')]['id']}})[_0x2a58('0x3f')](handleEntityNotFound(_0x3039d4,null))[_0x2a58('0x3f')](function(_0x27c442){if(_0x27c442){return _0x27c442[_0x2a58('0x54')](_0x3c46f1['body']['ids']||[]);}return null;})[_0x2a58('0x3f')](respondWithResult(_0x3039d4,null))['catch'](handleError(_0x3039d4,null));};
\ No newline at end of file
+var _0x1c3b=['set','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','FreshdeskConfiguration','rawAttributes','type','map','query','keys','model','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','filters','filter','merge','where','VIRTUAL','options','includeAll','findAll','rows','catch','length','include','create','body','find','params','getFields','findOne','getSubjects','pick','getDescriptions','getTags','setTags','ids','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','squel','crypto','desk.js','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','count','limit'];(function(_0x3360b1,_0x2d1f2d){var _0x46f74b=function(_0x21dbf4){while(--_0x21dbf4){_0x3360b1['push'](_0x3360b1['shift']());}};_0x46f74b(++_0x2d1f2d);}(_0x1c3b,0x1c6));var _0xb1c3=function(_0x2cee7c,_0x142a07){_0x2cee7c=_0x2cee7c-0x0;var _0x1e582f=_0x1c3b[_0x2cee7c];return _0x1e582f;};'use strict';var emlformat=require(_0xb1c3('0x0'));var rimraf=require(_0xb1c3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xb1c3('0x2'));var moment=require(_0xb1c3('0x3'));var BPromise=require(_0xb1c3('0x4'));var Mustache=require(_0xb1c3('0x5'));var util=require(_0xb1c3('0x6'));var path=require('path');var sox=require(_0xb1c3('0x7'));var csv=require(_0xb1c3('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb1c3('0x9'));var _=require('lodash');var squel=require(_0xb1c3('0xa'));var crypto=require(_0xb1c3('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xb1c3('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xb1c3('0xd'));var Redis=require(_0xb1c3('0xe'));var authService=require(_0xb1c3('0xf'));var qs=require(_0xb1c3('0x10'));var as=require(_0xb1c3('0x11'));var hardwareService=require(_0xb1c3('0x12'));var logger=require(_0xb1c3('0x13'))(_0xb1c3('0x14'));var utils=require('../../config/utils');var config=require(_0xb1c3('0x15'));var licenseUtil=require(_0xb1c3('0x16'));var db=require(_0xb1c3('0x17'))['db'];function respondWithStatusCode(_0x2872b4,_0x49b74e){_0x49b74e=_0x49b74e||0xcc;return function(_0x46be14){if(_0x46be14){return _0x2872b4[_0xb1c3('0x18')](_0x49b74e);}return _0x2872b4[_0xb1c3('0x19')](_0x49b74e)[_0xb1c3('0x1a')]();};}function respondWithResult(_0x2c3065,_0x21501c){_0x21501c=_0x21501c||0xc8;return function(_0x183d36){if(_0x183d36){return _0x2c3065[_0xb1c3('0x19')](_0x21501c)[_0xb1c3('0x1b')](_0x183d36);}};}function respondWithFilteredResult(_0x4c1bc,_0x424086){return function(_0x455ac8){if(_0x455ac8){var _0x462425=typeof _0x424086[_0xb1c3('0x1c')]===_0xb1c3('0x1d')&&typeof _0x424086['limit']===_0xb1c3('0x1d');var _0x1e1d70=_0x455ac8[_0xb1c3('0x1e')];var _0x35b9c6=_0x462425?0x0:_0x424086['offset'];var _0x893ded=_0x462425?_0x455ac8['count']:_0x424086[_0xb1c3('0x1c')]+_0x424086[_0xb1c3('0x1f')];var _0x492cb7;if(_0x893ded>=_0x1e1d70){_0x893ded=_0x1e1d70;_0x492cb7=0xc8;}else{_0x492cb7=0xce;}_0x4c1bc['status'](_0x492cb7);return _0x4c1bc[_0xb1c3('0x20')](_0xb1c3('0x21'),_0x35b9c6+'-'+_0x893ded+'/'+_0x1e1d70)[_0xb1c3('0x1b')](_0x455ac8);}return null;};}function patchUpdates(_0x1f0b82){return function(_0xe8ae24){try{jsonpatch[_0xb1c3('0x22')](_0xe8ae24,_0x1f0b82,!![]);}catch(_0x162daa){return BPromise[_0xb1c3('0x23')](_0x162daa);}return _0xe8ae24['save']();};}function saveUpdates(_0x181889,_0x4be2f2){return function(_0x13b8df){if(_0x13b8df){return _0x13b8df[_0xb1c3('0x24')](_0x181889)[_0xb1c3('0x25')](function(_0x4ce805){return _0x4ce805;});}return null;};}function removeEntity(_0x2e0867,_0x456dcd){return function(_0x40a72f){if(_0x40a72f){return _0x40a72f[_0xb1c3('0x26')]()[_0xb1c3('0x25')](function(){_0x2e0867['status'](0xcc)[_0xb1c3('0x1a')]();});}};}function handleEntityNotFound(_0x1e9545,_0x3a96c6){return function(_0x5ade23){if(!_0x5ade23){_0x1e9545['sendStatus'](0x194);}return _0x5ade23;};}function handleError(_0x1acea6,_0x2a848d){_0x2a848d=_0x2a848d||0x1f4;return function(_0x1d07ef){logger['error'](_0x1d07ef[_0xb1c3('0x27')]);if(_0x1d07ef['name']){delete _0x1d07ef[_0xb1c3('0x28')];}_0x1acea6['status'](_0x2a848d)[_0xb1c3('0x29')](_0x1d07ef);};}exports[_0xb1c3('0x2a')]=function(_0x1a7e79,_0x221c6c){var _0xa05584={},_0x164cde={},_0x3a522a={'count':0x0,'rows':[]};var _0xb46f70=_['map'](db[_0xb1c3('0x2b')][_0xb1c3('0x2c')],function(_0x3ac451){return{'name':_0x3ac451['fieldName'],'type':_0x3ac451[_0xb1c3('0x2d')]['key']};});_0x164cde['model']=_[_0xb1c3('0x2e')](_0xb46f70,'name');_0x164cde[_0xb1c3('0x2f')]=_[_0xb1c3('0x30')](_0x1a7e79[_0xb1c3('0x2f')]);_0x164cde['filters']=_['intersection'](_0x164cde[_0xb1c3('0x31')],_0x164cde['query']);_0xa05584[_0xb1c3('0x32')]=_[_0xb1c3('0x33')](_0x164cde[_0xb1c3('0x31')],qs[_0xb1c3('0x34')](_0x1a7e79[_0xb1c3('0x2f')][_0xb1c3('0x34')]));_0xa05584['attributes']=_0xa05584[_0xb1c3('0x32')]['length']?_0xa05584[_0xb1c3('0x32')]:_0x164cde[_0xb1c3('0x31')];if(!_0x1a7e79[_0xb1c3('0x2f')][_0xb1c3('0x35')](_0xb1c3('0x36'))){_0xa05584[_0xb1c3('0x1f')]=qs[_0xb1c3('0x1f')](_0x1a7e79['query'][_0xb1c3('0x1f')]);_0xa05584[_0xb1c3('0x1c')]=qs[_0xb1c3('0x1c')](_0x1a7e79[_0xb1c3('0x2f')]['offset']);}_0xa05584[_0xb1c3('0x37')]=qs[_0xb1c3('0x38')](_0x1a7e79[_0xb1c3('0x2f')]['sort']);_0xa05584['where']=qs['filters'](_['pick'](_0x1a7e79[_0xb1c3('0x2f')],_0x164cde[_0xb1c3('0x39')]),_0xb46f70);if(_0x1a7e79[_0xb1c3('0x2f')][_0xb1c3('0x3a')]){_0xa05584['where']=_[_0xb1c3('0x3b')](_0xa05584[_0xb1c3('0x3c')],{'$or':_[_0xb1c3('0x2e')](_0xb46f70,function(_0x4e5490){if(_0x4e5490[_0xb1c3('0x2d')]!==_0xb1c3('0x3d')){var _0x28b9f3={};_0x28b9f3[_0x4e5490[_0xb1c3('0x28')]]={'$like':'%'+_0x1a7e79[_0xb1c3('0x2f')][_0xb1c3('0x3a')]+'%'};return _0x28b9f3;}})});}_0xa05584=_[_0xb1c3('0x3b')]({},_0xa05584,_0x1a7e79[_0xb1c3('0x3e')]);var _0x5c7cb4={'where':_0xa05584['where']};return db[_0xb1c3('0x2b')][_0xb1c3('0x1e')](_0x5c7cb4)[_0xb1c3('0x25')](function(_0x3de512){_0x3a522a[_0xb1c3('0x1e')]=_0x3de512;if(_0x1a7e79[_0xb1c3('0x2f')][_0xb1c3('0x3f')]){_0xa05584['include']=[{'all':!![]}];}return db['FreshdeskConfiguration'][_0xb1c3('0x40')](_0xa05584);})[_0xb1c3('0x25')](function(_0x275240){_0x3a522a[_0xb1c3('0x41')]=_0x275240;return _0x3a522a;})[_0xb1c3('0x25')](respondWithFilteredResult(_0x221c6c,_0xa05584))[_0xb1c3('0x42')](handleError(_0x221c6c,null));};exports['show']=function(_0x152a8a,_0x4559a7){var _0x143b5d={'raw':![],'where':{'id':_0x152a8a['params']['id']}},_0x4b8957={};_0x4b8957['model']=_[_0xb1c3('0x30')](db[_0xb1c3('0x2b')][_0xb1c3('0x2c')]);_0x4b8957[_0xb1c3('0x2f')]=_['keys'](_0x152a8a[_0xb1c3('0x2f')]);_0x4b8957[_0xb1c3('0x39')]=_[_0xb1c3('0x33')](_0x4b8957[_0xb1c3('0x31')],_0x4b8957[_0xb1c3('0x2f')]);_0x143b5d[_0xb1c3('0x32')]=_[_0xb1c3('0x33')](_0x4b8957[_0xb1c3('0x31')],qs[_0xb1c3('0x34')](_0x152a8a[_0xb1c3('0x2f')][_0xb1c3('0x34')]));_0x143b5d[_0xb1c3('0x32')]=_0x143b5d[_0xb1c3('0x32')][_0xb1c3('0x43')]?_0x143b5d[_0xb1c3('0x32')]:_0x4b8957[_0xb1c3('0x31')];if(_0x152a8a[_0xb1c3('0x2f')][_0xb1c3('0x3f')]){_0x143b5d[_0xb1c3('0x44')]=[{'all':!![]}];}_0x143b5d=_[_0xb1c3('0x3b')]({},_0x143b5d,_0x152a8a[_0xb1c3('0x3e')]);return db[_0xb1c3('0x2b')]['find'](_0x143b5d)[_0xb1c3('0x25')](handleEntityNotFound(_0x4559a7,null))['then'](respondWithResult(_0x4559a7,null))[_0xb1c3('0x42')](handleError(_0x4559a7,null));};exports[_0xb1c3('0x45')]=function(_0x55a0f0,_0x236ea9){return db[_0xb1c3('0x2b')][_0xb1c3('0x45')](_0x55a0f0['body'],{})[_0xb1c3('0x25')](respondWithResult(_0x236ea9,0xc9))[_0xb1c3('0x42')](handleError(_0x236ea9,null));};exports['update']=function(_0x2fed20,_0x134d9e){if(_0x2fed20[_0xb1c3('0x46')]['id']){delete _0x2fed20[_0xb1c3('0x46')]['id'];}return db['FreshdeskConfiguration'][_0xb1c3('0x47')]({'where':{'id':_0x2fed20[_0xb1c3('0x48')]['id']}})[_0xb1c3('0x25')](handleEntityNotFound(_0x134d9e,null))['then'](saveUpdates(_0x2fed20[_0xb1c3('0x46')],null))[_0xb1c3('0x25')](respondWithResult(_0x134d9e,null))[_0xb1c3('0x42')](handleError(_0x134d9e,null));};exports[_0xb1c3('0x26')]=function(_0x443850,_0x29706b){return db[_0xb1c3('0x2b')]['find']({'where':{'id':_0x443850[_0xb1c3('0x48')]['id']}})[_0xb1c3('0x25')](handleEntityNotFound(_0x29706b,null))[_0xb1c3('0x25')](removeEntity(_0x29706b,null))[_0xb1c3('0x42')](handleError(_0x29706b,null));};exports[_0xb1c3('0x49')]=function(_0x260369,_0x42428d,_0x5e617d){var _0x19f40e={};var _0x4c045d={};var _0x28b599;var _0x121057;return db['FreshdeskConfiguration'][_0xb1c3('0x4a')]({'where':{'id':_0x260369[_0xb1c3('0x48')]['id']}})[_0xb1c3('0x25')](handleEntityNotFound(_0x42428d,null))[_0xb1c3('0x25')](function(_0x83e2c6){if(_0x83e2c6){_0x28b599=_0x83e2c6;_0x4c045d[_0xb1c3('0x31')]=_[_0xb1c3('0x30')](db['FreshdeskField'][_0xb1c3('0x2c')]);_0x4c045d[_0xb1c3('0x2f')]=_['keys'](_0x260369[_0xb1c3('0x2f')]);_0x4c045d[_0xb1c3('0x39')]=_[_0xb1c3('0x33')](_0x4c045d[_0xb1c3('0x31')],_0x4c045d['query']);_0x19f40e['attributes']=_[_0xb1c3('0x33')](_0x4c045d[_0xb1c3('0x31')],qs[_0xb1c3('0x34')](_0x260369['query']['fields']));_0x19f40e[_0xb1c3('0x32')]=_0x19f40e[_0xb1c3('0x32')][_0xb1c3('0x43')]?_0x19f40e[_0xb1c3('0x32')]:_0x4c045d[_0xb1c3('0x31')];_0x19f40e[_0xb1c3('0x37')]=qs['sort'](_0x260369['query'][_0xb1c3('0x38')]);_0x19f40e[_0xb1c3('0x3c')]=qs[_0xb1c3('0x39')](_['pick'](_0x260369[_0xb1c3('0x2f')],_0x4c045d[_0xb1c3('0x39')]));if(_0x260369['query'][_0xb1c3('0x3a')]){_0x19f40e[_0xb1c3('0x3c')]=_[_0xb1c3('0x3b')](_0x19f40e['where'],{'$or':_['map'](_0x19f40e['attributes'],function(_0x424f96){var _0x4ec517={};_0x4ec517[_0x424f96]={'$like':'%'+_0x260369['query'][_0xb1c3('0x3a')]+'%'};return _0x4ec517;})});}_0x19f40e=_[_0xb1c3('0x3b')]({},_0x19f40e,_0x260369[_0xb1c3('0x3e')]);return _0x28b599[_0xb1c3('0x49')](_0x19f40e);}})['then'](function(_0x5f082e){if(_0x5f082e){_0x121057=_0x5f082e[_0xb1c3('0x43')];if(!_0x260369[_0xb1c3('0x2f')][_0xb1c3('0x35')](_0xb1c3('0x36'))){_0x19f40e[_0xb1c3('0x1f')]=qs[_0xb1c3('0x1f')](_0x260369[_0xb1c3('0x2f')]['limit']);_0x19f40e[_0xb1c3('0x1c')]=qs[_0xb1c3('0x1c')](_0x260369['query']['offset']);}return _0x28b599[_0xb1c3('0x49')](_0x19f40e);}})[_0xb1c3('0x25')](function(_0xcece16){if(_0xcece16){return _0xcece16?{'count':_0x121057,'rows':_0xcece16}:null;}})[_0xb1c3('0x25')](respondWithResult(_0x42428d,null))[_0xb1c3('0x42')](handleError(_0x42428d,null));};exports[_0xb1c3('0x4b')]=function(_0x20108c,_0x3f2a03,_0x14f500){var _0x24f0cb={};var _0x565a86={};var _0x591258;var _0x213dc9;return db['FreshdeskConfiguration'][_0xb1c3('0x4a')]({'where':{'id':_0x20108c[_0xb1c3('0x48')]['id']}})[_0xb1c3('0x25')](handleEntityNotFound(_0x3f2a03,null))[_0xb1c3('0x25')](function(_0xc6aaf9){if(_0xc6aaf9){_0x591258=_0xc6aaf9;_0x565a86[_0xb1c3('0x31')]=_['keys'](db['FreshdeskField']['rawAttributes']);_0x565a86[_0xb1c3('0x2f')]=_[_0xb1c3('0x30')](_0x20108c['query']);_0x565a86[_0xb1c3('0x39')]=_[_0xb1c3('0x33')](_0x565a86[_0xb1c3('0x31')],_0x565a86[_0xb1c3('0x2f')]);_0x24f0cb[_0xb1c3('0x32')]=_[_0xb1c3('0x33')](_0x565a86[_0xb1c3('0x31')],qs[_0xb1c3('0x34')](_0x20108c[_0xb1c3('0x2f')][_0xb1c3('0x34')]));_0x24f0cb[_0xb1c3('0x32')]=_0x24f0cb[_0xb1c3('0x32')][_0xb1c3('0x43')]?_0x24f0cb[_0xb1c3('0x32')]:_0x565a86[_0xb1c3('0x31')];_0x24f0cb[_0xb1c3('0x37')]=qs[_0xb1c3('0x38')](_0x20108c[_0xb1c3('0x2f')]['sort']);_0x24f0cb[_0xb1c3('0x3c')]=qs[_0xb1c3('0x39')](_[_0xb1c3('0x4c')](_0x20108c[_0xb1c3('0x2f')],_0x565a86[_0xb1c3('0x39')]));if(_0x20108c[_0xb1c3('0x2f')][_0xb1c3('0x3a')]){_0x24f0cb[_0xb1c3('0x3c')]=_[_0xb1c3('0x3b')](_0x24f0cb[_0xb1c3('0x3c')],{'$or':_['map'](_0x24f0cb['attributes'],function(_0x49d3b3){var _0x40aac0={};_0x40aac0[_0x49d3b3]={'$like':'%'+_0x20108c['query']['filter']+'%'};return _0x40aac0;})});}_0x24f0cb=_[_0xb1c3('0x3b')]({},_0x24f0cb,_0x20108c[_0xb1c3('0x3e')]);return _0x591258['getSubjects'](_0x24f0cb);}})[_0xb1c3('0x25')](function(_0x5977b3){if(_0x5977b3){_0x213dc9=_0x5977b3[_0xb1c3('0x43')];if(!_0x20108c[_0xb1c3('0x2f')][_0xb1c3('0x35')](_0xb1c3('0x36'))){_0x24f0cb['limit']=qs['limit'](_0x20108c[_0xb1c3('0x2f')]['limit']);_0x24f0cb[_0xb1c3('0x1c')]=qs['offset'](_0x20108c[_0xb1c3('0x2f')][_0xb1c3('0x1c')]);}return _0x591258[_0xb1c3('0x4b')](_0x24f0cb);}})[_0xb1c3('0x25')](function(_0x1e7679){if(_0x1e7679){return _0x1e7679?{'count':_0x213dc9,'rows':_0x1e7679}:null;}})['then'](respondWithResult(_0x3f2a03,null))[_0xb1c3('0x42')](handleError(_0x3f2a03,null));};exports[_0xb1c3('0x4d')]=function(_0x3210d9,_0x37e504,_0x34e277){var _0x24e4c0={};var _0x2d2bd9={};var _0x55902a;var _0x12fdec;return db[_0xb1c3('0x2b')][_0xb1c3('0x4a')]({'where':{'id':_0x3210d9[_0xb1c3('0x48')]['id']}})[_0xb1c3('0x25')](handleEntityNotFound(_0x37e504,null))['then'](function(_0x2c9ede){if(_0x2c9ede){_0x55902a=_0x2c9ede;_0x2d2bd9[_0xb1c3('0x31')]=_['keys'](db['FreshdeskField'][_0xb1c3('0x2c')]);_0x2d2bd9[_0xb1c3('0x2f')]=_[_0xb1c3('0x30')](_0x3210d9['query']);_0x2d2bd9[_0xb1c3('0x39')]=_['intersection'](_0x2d2bd9[_0xb1c3('0x31')],_0x2d2bd9[_0xb1c3('0x2f')]);_0x24e4c0[_0xb1c3('0x32')]=_['intersection'](_0x2d2bd9[_0xb1c3('0x31')],qs['fields'](_0x3210d9['query'][_0xb1c3('0x34')]));_0x24e4c0[_0xb1c3('0x32')]=_0x24e4c0['attributes'][_0xb1c3('0x43')]?_0x24e4c0[_0xb1c3('0x32')]:_0x2d2bd9[_0xb1c3('0x31')];_0x24e4c0[_0xb1c3('0x37')]=qs[_0xb1c3('0x38')](_0x3210d9[_0xb1c3('0x2f')][_0xb1c3('0x38')]);_0x24e4c0[_0xb1c3('0x3c')]=qs[_0xb1c3('0x39')](_['pick'](_0x3210d9[_0xb1c3('0x2f')],_0x2d2bd9['filters']));if(_0x3210d9[_0xb1c3('0x2f')][_0xb1c3('0x3a')]){_0x24e4c0[_0xb1c3('0x3c')]=_[_0xb1c3('0x3b')](_0x24e4c0['where'],{'$or':_[_0xb1c3('0x2e')](_0x24e4c0[_0xb1c3('0x32')],function(_0x168cae){var _0x3b1a56={};_0x3b1a56[_0x168cae]={'$like':'%'+_0x3210d9[_0xb1c3('0x2f')][_0xb1c3('0x3a')]+'%'};return _0x3b1a56;})});}_0x24e4c0=_[_0xb1c3('0x3b')]({},_0x24e4c0,_0x3210d9[_0xb1c3('0x3e')]);return _0x55902a[_0xb1c3('0x4d')](_0x24e4c0);}})['then'](function(_0x4a2079){if(_0x4a2079){_0x12fdec=_0x4a2079[_0xb1c3('0x43')];if(!_0x3210d9['query'][_0xb1c3('0x35')]('nolimit')){_0x24e4c0[_0xb1c3('0x1f')]=qs[_0xb1c3('0x1f')](_0x3210d9[_0xb1c3('0x2f')]['limit']);_0x24e4c0[_0xb1c3('0x1c')]=qs[_0xb1c3('0x1c')](_0x3210d9[_0xb1c3('0x2f')][_0xb1c3('0x1c')]);}return _0x55902a['getDescriptions'](_0x24e4c0);}})[_0xb1c3('0x25')](function(_0x4b2753){if(_0x4b2753){return _0x4b2753?{'count':_0x12fdec,'rows':_0x4b2753}:null;}})[_0xb1c3('0x25')](respondWithResult(_0x37e504,null))[_0xb1c3('0x42')](handleError(_0x37e504,null));};exports[_0xb1c3('0x4e')]=function(_0x55ccce,_0x16693e,_0x5cfe45){var _0x3acc6e={};var _0x232224={};var _0x33196e;var _0x787673;return db['FreshdeskConfiguration'][_0xb1c3('0x4a')]({'where':{'id':_0x55ccce[_0xb1c3('0x48')]['id']}})['then'](handleEntityNotFound(_0x16693e,null))[_0xb1c3('0x25')](function(_0x4095e3){if(_0x4095e3){_0x33196e=_0x4095e3;_0x232224['model']=_[_0xb1c3('0x30')](db['Tag'][_0xb1c3('0x2c')]);_0x232224[_0xb1c3('0x2f')]=_['keys'](_0x55ccce[_0xb1c3('0x2f')]);_0x232224['filters']=_[_0xb1c3('0x33')](_0x232224[_0xb1c3('0x31')],_0x232224[_0xb1c3('0x2f')]);_0x3acc6e[_0xb1c3('0x32')]=_['intersection'](_0x232224[_0xb1c3('0x31')],qs[_0xb1c3('0x34')](_0x55ccce[_0xb1c3('0x2f')][_0xb1c3('0x34')]));_0x3acc6e[_0xb1c3('0x32')]=_0x3acc6e[_0xb1c3('0x32')][_0xb1c3('0x43')]?_0x3acc6e[_0xb1c3('0x32')]:_0x232224[_0xb1c3('0x31')];_0x3acc6e['order']=qs[_0xb1c3('0x38')](_0x55ccce['query'][_0xb1c3('0x38')]);_0x3acc6e['where']=qs['filters'](_[_0xb1c3('0x4c')](_0x55ccce[_0xb1c3('0x2f')],_0x232224[_0xb1c3('0x39')]));if(_0x55ccce[_0xb1c3('0x2f')][_0xb1c3('0x3a')]){_0x3acc6e['where']=_[_0xb1c3('0x3b')](_0x3acc6e[_0xb1c3('0x3c')],{'$or':_[_0xb1c3('0x2e')](_0x3acc6e[_0xb1c3('0x32')],function(_0x3a1008){var _0x57fff6={};_0x57fff6[_0x3a1008]={'$like':'%'+_0x55ccce[_0xb1c3('0x2f')][_0xb1c3('0x3a')]+'%'};return _0x57fff6;})});}_0x3acc6e=_[_0xb1c3('0x3b')]({},_0x3acc6e,_0x55ccce[_0xb1c3('0x3e')]);return _0x33196e[_0xb1c3('0x4e')](_0x3acc6e);}})[_0xb1c3('0x25')](function(_0x477f0d){if(_0x477f0d){_0x787673=_0x477f0d['length'];if(!_0x55ccce[_0xb1c3('0x2f')][_0xb1c3('0x35')](_0xb1c3('0x36'))){_0x3acc6e[_0xb1c3('0x1f')]=qs[_0xb1c3('0x1f')](_0x55ccce[_0xb1c3('0x2f')]['limit']);_0x3acc6e[_0xb1c3('0x1c')]=qs['offset'](_0x55ccce['query'][_0xb1c3('0x1c')]);}return _0x33196e[_0xb1c3('0x4e')](_0x3acc6e);}})[_0xb1c3('0x25')](function(_0x332fb9){if(_0x332fb9){return _0x332fb9?{'count':_0x787673,'rows':_0x332fb9}:null;}})[_0xb1c3('0x25')](respondWithResult(_0x16693e,null))[_0xb1c3('0x42')](handleError(_0x16693e,null));};exports['setTags']=function(_0x38033d,_0x4c3cf3,_0xef972e){if(_0x38033d['body']['id']){delete _0x38033d[_0xb1c3('0x46')]['id'];}return db[_0xb1c3('0x2b')][_0xb1c3('0x4a')]({'where':{'id':_0x38033d[_0xb1c3('0x48')]['id']}})[_0xb1c3('0x25')](handleEntityNotFound(_0x4c3cf3,null))['then'](function(_0x36b07a){if(_0x36b07a){return _0x36b07a[_0xb1c3('0x4f')](_0x38033d['body'][_0xb1c3('0x50')]||[]);}return null;})['then'](respondWithResult(_0x4c3cf3,null))[_0xb1c3('0x42')](handleError(_0x4c3cf3,null));};
\ No newline at end of file
index 1a2895b..2d76b4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6317=['./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration','lodash','util','api','bluebird','request-promise','path','rimraf'];(function(_0x5a5276,_0x262d69){var _0x3e8ee2=function(_0x151ce3){while(--_0x151ce3){_0x5a5276['push'](_0x5a5276['shift']());}};_0x3e8ee2(++_0x262d69);}(_0x6317,0x67));var _0x7631=function(_0x2102e7,_0x568cef){_0x2102e7=_0x2102e7-0x0;var _0x2d1667=_0x6317[_0x2102e7];return _0x2d1667;};'use strict';var _=require(_0x7631('0x0'));var util=require(_0x7631('0x1'));var logger=require('../../config/logger')(_0x7631('0x2'));var moment=require('moment');var BPromise=require(_0x7631('0x3'));var rp=require(_0x7631('0x4'));var fs=require('fs');var path=require(_0x7631('0x5'));var rimraf=require(_0x7631('0x6'));var config=require('../../config/environment');var attributes=require(_0x7631('0x7'));module[_0x7631('0x8')]=function(_0x1b86e8,_0xd5d61c){return _0x1b86e8[_0x7631('0x9')](_0x7631('0xa'),attributes,{'tableName':'int_freshdesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb3dc=['./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration','int_freshdesk_configurations','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x59d0cc,_0xa7c52b){var _0x2ae79f=function(_0x33042e){while(--_0x33042e){_0x59d0cc['push'](_0x59d0cc['shift']());}};_0x2ae79f(++_0xa7c52b);}(_0xb3dc,0xb9));var _0xcb3d=function(_0x1f235c,_0x339986){_0x1f235c=_0x1f235c-0x0;var _0x34f7a2=_0xb3dc[_0x1f235c];return _0x34f7a2;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xcb3d('0x0'));var moment=require(_0xcb3d('0x1'));var BPromise=require(_0xcb3d('0x2'));var rp=require(_0xcb3d('0x3'));var fs=require('fs');var path=require(_0xcb3d('0x4'));var rimraf=require(_0xcb3d('0x5'));var config=require(_0xcb3d('0x6'));var attributes=require(_0xcb3d('0x7'));module[_0xcb3d('0x8')]=function(_0x17ad3e,_0x166dc2){return _0x17ad3e[_0xcb3d('0x9')](_0xcb3d('0xa'),attributes,{'tableName':_0xcb3d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4a5256d..61299cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8326=['moment','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util'];(function(_0x2e8824,_0x1f9b37){var _0x49f77b=function(_0x22cb24){while(--_0x22cb24){_0x2e8824['push'](_0x2e8824['shift']());}};_0x49f77b(++_0x1f9b37);}(_0x8326,0xc5));var _0x6832=function(_0x193234,_0x4132ca){_0x193234=_0x193234-0x0;var _0x1c6765=_0x8326[_0x193234];return _0x1c6765;};'use strict';var _=require('lodash');var util=require(_0x6832('0x0'));var moment=require(_0x6832('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(_0x6832('0x2'));var logger=require(_0x6832('0x3'))(_0x6832('0x4'));var config=require(_0x6832('0x5'));var jayson=require(_0x6832('0x6'));var client=jayson[_0x6832('0x7')][_0x6832('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x433f11,_0x1370c4,_0xd3f6b8){return new BPromise(function(_0x10c935,_0x300d5b){return client[_0x6832('0x9')](_0x433f11,_0xd3f6b8)[_0x6832('0xa')](function(_0x4f98e3){logger[_0x6832('0xb')](_0x6832('0xc'),_0x1370c4,_0x6832('0xd'));logger[_0x6832('0xe')](_0x6832('0xf'),_0x1370c4,_0x6832('0xd'),JSON[_0x6832('0x10')](_0x4f98e3));if(_0x4f98e3[_0x6832('0x11')]){if(_0x4f98e3[_0x6832('0x11')][_0x6832('0x12')]===0x1f4){logger[_0x6832('0x11')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x1370c4,_0x4f98e3[_0x6832('0x11')]['message']);return _0x300d5b(_0x4f98e3[_0x6832('0x11')]['message']);}logger[_0x6832('0x11')](_0x6832('0xc'),_0x1370c4,_0x4f98e3[_0x6832('0x11')][_0x6832('0x13')]);return _0x10c935(_0x4f98e3[_0x6832('0x11')]['message']);}else{logger[_0x6832('0xb')](_0x6832('0xc'),_0x1370c4,'request\x20sent');_0x10c935(_0x4f98e3[_0x6832('0x14')][_0x6832('0x13')]);}})[_0x6832('0x15')](function(_0x27c319){logger[_0x6832('0x11')](_0x6832('0xc'),_0x1370c4,_0x27c319);_0x300d5b(_0x27c319);});});}
\ No newline at end of file
+var _0x5399=['util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x1b2422,_0x1e98d4){var _0x376573=function(_0x5db41b){while(--_0x5db41b){_0x1b2422['push'](_0x1b2422['shift']());}};_0x376573(++_0x1e98d4);}(_0x5399,0xaa));var _0x9539=function(_0x368dbc,_0x1b3ddc){_0x368dbc=_0x368dbc-0x0;var _0x257b6b=_0x5399[_0x368dbc];return _0x257b6b;};'use strict';var _=require('lodash');var util=require(_0x9539('0x0'));var moment=require(_0x9539('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9539('0x2'))['db'];var utils=require(_0x9539('0x3'));var logger=require(_0x9539('0x4'))(_0x9539('0x5'));var config=require(_0x9539('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x9539('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x56bb6,_0x433c30,_0x34388c){return new BPromise(function(_0x2d2611,_0x33aeae){return client[_0x9539('0x8')](_0x56bb6,_0x34388c)[_0x9539('0x9')](function(_0x330a72){logger[_0x9539('0xa')](_0x9539('0xb'),_0x433c30,_0x9539('0xc'));logger['debug'](_0x9539('0xd'),_0x433c30,'request\x20sent',JSON[_0x9539('0xe')](_0x330a72));if(_0x330a72['error']){if(_0x330a72['error']['code']===0x1f4){logger[_0x9539('0xf')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x433c30,_0x330a72[_0x9539('0xf')][_0x9539('0x10')]);return _0x33aeae(_0x330a72[_0x9539('0xf')][_0x9539('0x10')]);}logger[_0x9539('0xf')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x433c30,_0x330a72[_0x9539('0xf')][_0x9539('0x10')]);return _0x2d2611(_0x330a72[_0x9539('0xf')]['message']);}else{logger['info'](_0x9539('0xb'),_0x433c30,_0x9539('0xc'));_0x2d2611(_0x330a72['result'][_0x9539('0x10')]);}})['catch'](function(_0x2a202f){logger['error'](_0x9539('0xb'),_0x433c30,_0x2a202f);_0x33aeae(_0x2a202f);});});}
\ No newline at end of file
index 54871f7..e337aae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb303=['/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshdeskField.controller','get','isAuthenticated','index'];(function(_0x5cff67,_0x39fcb1){var _0x315d87=function(_0x206d58){while(--_0x206d58){_0x5cff67['push'](_0x5cff67['shift']());}};_0x315d87(++_0x39fcb1);}(_0xb303,0xbd));var _0x3b30=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xb303[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0x3b30('0x0'));var util=require(_0x3b30('0x1'));var path=require(_0x3b30('0x2'));var timeout=require('connect-timeout');var express=require(_0x3b30('0x3'));var router=express['Router']();var fs_extra=require(_0x3b30('0x4'));var auth=require(_0x3b30('0x5'));var interaction=require(_0x3b30('0x6'));var config=require('../../config/environment');var controller=require(_0x3b30('0x7'));router[_0x3b30('0x8')]('/',auth[_0x3b30('0x9')](),controller[_0x3b30('0xa')]);router[_0x3b30('0x8')](_0x3b30('0xb'),auth[_0x3b30('0x9')](),controller[_0x3b30('0xc')]);router[_0x3b30('0xd')]('/',auth['isAuthenticated'](),controller[_0x3b30('0xe')]);router[_0x3b30('0xf')](_0x3b30('0xb'),auth[_0x3b30('0x9')](),controller[_0x3b30('0x10')]);router[_0x3b30('0x11')](_0x3b30('0xb'),auth['isAuthenticated'](),controller[_0x3b30('0x12')]);module[_0x3b30('0x13')]=router;
\ No newline at end of file
+var _0xe389=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','get','index','/:id','isAuthenticated','show','post','put','destroy','multer','util','path','express','Router','fs-extra'];(function(_0x2caae5,_0x23acda){var _0x5e1f96=function(_0x218bbf){while(--_0x218bbf){_0x2caae5['push'](_0x2caae5['shift']());}};_0x5e1f96(++_0x23acda);}(_0xe389,0x108));var _0x9e38=function(_0x1d5525,_0x53f5d3){_0x1d5525=_0x1d5525-0x0;var _0x21b857=_0xe389[_0x1d5525];return _0x21b857;};'use strict';var multer=require(_0x9e38('0x0'));var util=require(_0x9e38('0x1'));var path=require(_0x9e38('0x2'));var timeout=require('connect-timeout');var express=require(_0x9e38('0x3'));var router=express[_0x9e38('0x4')]();var fs_extra=require(_0x9e38('0x5'));var auth=require(_0x9e38('0x6'));var interaction=require(_0x9e38('0x7'));var config=require(_0x9e38('0x8'));var controller=require(_0x9e38('0x9'));router[_0x9e38('0xa')]('/',auth['isAuthenticated'](),controller[_0x9e38('0xb')]);router[_0x9e38('0xa')](_0x9e38('0xc'),auth[_0x9e38('0xd')](),controller[_0x9e38('0xe')]);router[_0x9e38('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0x9e38('0x10')](_0x9e38('0xc'),auth[_0x9e38('0xd')](),controller['update']);router['delete'](_0x9e38('0xc'),auth['isAuthenticated'](),controller[_0x9e38('0x11')]);module['exports']=router;
\ No newline at end of file
index a80b918..6b3d878 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e30=['variable','customVariable','picklist','STRING','sequelize','ENUM','string'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x5e30,0x7b));var _0x05e3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5e30[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x05e3('0x0'));module['exports']={'type':{'type':Sequelize[_0x05e3('0x1')](_0x05e3('0x2'),_0x05e3('0x3'),_0x05e3('0x4'),'keyValue',_0x05e3('0x5')),'defaultValue':_0x05e3('0x2')},'content':{'type':Sequelize[_0x05e3('0x6')]},'key':{'type':Sequelize[_0x05e3('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0x05e3('0x2'),_0x05e3('0x3'),_0x05e3('0x4'))},'keyContent':{'type':Sequelize[_0x05e3('0x6')]},'idField':{'type':Sequelize[_0x05e3('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x05e3('0x6')]}};
\ No newline at end of file
+var _0xb50e=['ENUM','string','variable','customVariable','keyValue','STRING','BOOLEAN','exports'];(function(_0x9e3edc,_0x594d61){var _0x44a387=function(_0x4edc66){while(--_0x4edc66){_0x9e3edc['push'](_0x9e3edc['shift']());}};_0x44a387(++_0x594d61);}(_0xb50e,0xe7));var _0xeb50=function(_0x5d9041,_0x2c23bd){_0x5d9041=_0x5d9041-0x0;var _0x4c1042=_0xb50e[_0x5d9041];return _0x4c1042;};'use strict';var Sequelize=require('sequelize');module[_0xeb50('0x0')]={'type':{'type':Sequelize[_0xeb50('0x1')](_0xeb50('0x2'),_0xeb50('0x3'),_0xeb50('0x4'),_0xeb50('0x5'),'picklist'),'defaultValue':_0xeb50('0x2')},'content':{'type':Sequelize[_0xeb50('0x6')]},'key':{'type':Sequelize[_0xeb50('0x6')]},'keyType':{'type':Sequelize[_0xeb50('0x1')](_0xeb50('0x2'),'variable',_0xeb50('0x4'))},'keyContent':{'type':Sequelize[_0xeb50('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xeb50('0x6')]},'customField':{'type':Sequelize[_0xeb50('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xeb50('0x6')]}};
\ No newline at end of file
index f2be6cb..14dbe09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x153f=['count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','index','map','FreshdeskField','rawAttributes','fieldName','key','model','query','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','catch','params','keys','intersection','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','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/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit'];(function(_0x1bfece,_0x1a8eb3){var _0x52c48c=function(_0x50db6b){while(--_0x50db6b){_0x1bfece['push'](_0x1bfece['shift']());}};_0x52c48c(++_0x1a8eb3);}(_0x153f,0x15b));var _0xf153=function(_0x552965,_0x547f64){_0x552965=_0x552965-0x0;var _0x588ea9=_0x153f[_0x552965];return _0x588ea9;};'use strict';var emlformat=require(_0xf153('0x0'));var rimraf=require(_0xf153('0x1'));var zipdir=require(_0xf153('0x2'));var jsonpatch=require(_0xf153('0x3'));var rp=require(_0xf153('0x4'));var moment=require(_0xf153('0x5'));var BPromise=require(_0xf153('0x6'));var Mustache=require('mustache');var util=require(_0xf153('0x7'));var path=require('path');var sox=require(_0xf153('0x8'));var csv=require(_0xf153('0x9'));var ejs=require(_0xf153('0xa'));var fs=require('fs');var fs_extra=require(_0xf153('0xb'));var _=require(_0xf153('0xc'));var squel=require('squel');var crypto=require(_0xf153('0xd'));var jsforce=require(_0xf153('0xe'));var deskjs=require(_0xf153('0xf'));var toCsv=require(_0xf153('0x9'));var querystring=require(_0xf153('0x10'));var Papa=require(_0xf153('0x11'));var Redis=require(_0xf153('0x12'));var authService=require(_0xf153('0x13'));var qs=require(_0xf153('0x14'));var as=require(_0xf153('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf153('0x16'))(_0xf153('0x17'));var utils=require(_0xf153('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xf153('0x19'));var db=require(_0xf153('0x1a'))['db'];function respondWithStatusCode(_0x65756d,_0x1cc666){_0x1cc666=_0x1cc666||0xcc;return function(_0x256b7d){if(_0x256b7d){return _0x65756d[_0xf153('0x1b')](_0x1cc666);}return _0x65756d[_0xf153('0x1c')](_0x1cc666)[_0xf153('0x1d')]();};}function respondWithResult(_0x3e34fb,_0x4c5283){_0x4c5283=_0x4c5283||0xc8;return function(_0x18be7e){if(_0x18be7e){return _0x3e34fb[_0xf153('0x1c')](_0x4c5283)[_0xf153('0x1e')](_0x18be7e);}};}function respondWithFilteredResult(_0x406e6f,_0x3afea2){return function(_0x68f436){if(_0x68f436){var _0x273a90=typeof _0x3afea2[_0xf153('0x1f')]==='undefined'&&typeof _0x3afea2[_0xf153('0x20')]==='undefined';var _0x37093a=_0x68f436[_0xf153('0x21')];var _0x138dbe=_0x273a90?0x0:_0x3afea2[_0xf153('0x1f')];var _0x4e790d=_0x273a90?_0x68f436[_0xf153('0x21')]:_0x3afea2[_0xf153('0x1f')]+_0x3afea2[_0xf153('0x20')];var _0x14b83f;if(_0x4e790d>=_0x37093a){_0x4e790d=_0x37093a;_0x14b83f=0xc8;}else{_0x14b83f=0xce;}_0x406e6f[_0xf153('0x1c')](_0x14b83f);return _0x406e6f[_0xf153('0x22')](_0xf153('0x23'),_0x138dbe+'-'+_0x4e790d+'/'+_0x37093a)[_0xf153('0x1e')](_0x68f436);}return null;};}function patchUpdates(_0x3735a7){return function(_0x1dd340){try{jsonpatch[_0xf153('0x24')](_0x1dd340,_0x3735a7,!![]);}catch(_0x3665a2){return BPromise['reject'](_0x3665a2);}return _0x1dd340[_0xf153('0x25')]();};}function saveUpdates(_0x395f28,_0x3d3e41){return function(_0x32e759){if(_0x32e759){return _0x32e759[_0xf153('0x26')](_0x395f28)[_0xf153('0x27')](function(_0x465d88){return _0x465d88;});}return null;};}function removeEntity(_0x4376f7,_0xf67cde){return function(_0x38190c){if(_0x38190c){return _0x38190c[_0xf153('0x28')]()[_0xf153('0x27')](function(){_0x4376f7[_0xf153('0x1c')](0xcc)[_0xf153('0x1d')]();});}};}function handleEntityNotFound(_0xe490f8,_0x35f9da){return function(_0x141ef4){if(!_0x141ef4){_0xe490f8[_0xf153('0x1b')](0x194);}return _0x141ef4;};}function handleError(_0x23acc3,_0x17f7a4){_0x17f7a4=_0x17f7a4||0x1f4;return function(_0x48ebdc){logger[_0xf153('0x29')](_0x48ebdc[_0xf153('0x2a')]);if(_0x48ebdc['name']){delete _0x48ebdc[_0xf153('0x2b')];}_0x23acc3[_0xf153('0x1c')](_0x17f7a4)['send'](_0x48ebdc);};}exports[_0xf153('0x2c')]=function(_0x10295e,_0x261ac0){var _0x2b9a9c={},_0x339e96={},_0x258976={'count':0x0,'rows':[]};var _0x441436=_[_0xf153('0x2d')](db[_0xf153('0x2e')][_0xf153('0x2f')],function(_0x13b541){return{'name':_0x13b541[_0xf153('0x30')],'type':_0x13b541['type'][_0xf153('0x31')]};});_0x339e96[_0xf153('0x32')]=_[_0xf153('0x2d')](_0x441436,_0xf153('0x2b'));_0x339e96['query']=_['keys'](_0x10295e[_0xf153('0x33')]);_0x339e96['filters']=_['intersection'](_0x339e96[_0xf153('0x32')],_0x339e96['query']);_0x2b9a9c[_0xf153('0x34')]=_['intersection'](_0x339e96[_0xf153('0x32')],qs[_0xf153('0x35')](_0x10295e['query'][_0xf153('0x35')]));_0x2b9a9c[_0xf153('0x34')]=_0x2b9a9c[_0xf153('0x34')][_0xf153('0x36')]?_0x2b9a9c[_0xf153('0x34')]:_0x339e96[_0xf153('0x32')];if(!_0x10295e['query'][_0xf153('0x37')]('nolimit')){_0x2b9a9c[_0xf153('0x20')]=qs[_0xf153('0x20')](_0x10295e[_0xf153('0x33')][_0xf153('0x20')]);_0x2b9a9c[_0xf153('0x1f')]=qs[_0xf153('0x1f')](_0x10295e['query'][_0xf153('0x1f')]);}_0x2b9a9c[_0xf153('0x38')]=qs[_0xf153('0x39')](_0x10295e['query'][_0xf153('0x39')]);_0x2b9a9c[_0xf153('0x3a')]=qs[_0xf153('0x3b')](_[_0xf153('0x3c')](_0x10295e[_0xf153('0x33')],_0x339e96[_0xf153('0x3b')]),_0x441436);if(_0x10295e['query'][_0xf153('0x3d')]){_0x2b9a9c[_0xf153('0x3a')]=_['merge'](_0x2b9a9c[_0xf153('0x3a')],{'$or':_[_0xf153('0x2d')](_0x441436,function(_0x357666){if(_0x357666[_0xf153('0x3e')]!==_0xf153('0x3f')){var _0x42360a={};_0x42360a[_0x357666[_0xf153('0x2b')]]={'$like':'%'+_0x10295e['query'][_0xf153('0x3d')]+'%'};return _0x42360a;}})});}_0x2b9a9c=_[_0xf153('0x40')]({},_0x2b9a9c,_0x10295e[_0xf153('0x41')]);var _0x352e7c={'where':_0x2b9a9c[_0xf153('0x3a')]};return db[_0xf153('0x2e')]['count'](_0x352e7c)['then'](function(_0xa3922b){_0x258976['count']=_0xa3922b;if(_0x10295e[_0xf153('0x33')][_0xf153('0x42')]){_0x2b9a9c[_0xf153('0x43')]=[{'all':!![]}];}return db[_0xf153('0x2e')][_0xf153('0x44')](_0x2b9a9c);})[_0xf153('0x27')](function(_0x5599e5){_0x258976['rows']=_0x5599e5;return _0x258976;})[_0xf153('0x27')](respondWithFilteredResult(_0x261ac0,_0x2b9a9c))[_0xf153('0x45')](handleError(_0x261ac0,null));};exports['show']=function(_0x21529a,_0x1c77a6){var _0x1edf65={'raw':!![],'where':{'id':_0x21529a[_0xf153('0x46')]['id']}},_0x3a9cb2={};_0x3a9cb2[_0xf153('0x32')]=_[_0xf153('0x47')](db[_0xf153('0x2e')][_0xf153('0x2f')]);_0x3a9cb2[_0xf153('0x33')]=_[_0xf153('0x47')](_0x21529a[_0xf153('0x33')]);_0x3a9cb2['filters']=_[_0xf153('0x48')](_0x3a9cb2[_0xf153('0x32')],_0x3a9cb2[_0xf153('0x33')]);_0x1edf65['attributes']=_[_0xf153('0x48')](_0x3a9cb2[_0xf153('0x32')],qs['fields'](_0x21529a[_0xf153('0x33')]['fields']));_0x1edf65[_0xf153('0x34')]=_0x1edf65[_0xf153('0x34')][_0xf153('0x36')]?_0x1edf65['attributes']:_0x3a9cb2[_0xf153('0x32')];if(_0x21529a[_0xf153('0x33')][_0xf153('0x42')]){_0x1edf65[_0xf153('0x43')]=[{'all':!![]}];}_0x1edf65=_[_0xf153('0x40')]({},_0x1edf65,_0x21529a['options']);return db[_0xf153('0x2e')][_0xf153('0x49')](_0x1edf65)['then'](handleEntityNotFound(_0x1c77a6,null))[_0xf153('0x27')](respondWithResult(_0x1c77a6,null))[_0xf153('0x45')](handleError(_0x1c77a6,null));};exports[_0xf153('0x4a')]=function(_0x5599a6,_0x657403){return db[_0xf153('0x2e')][_0xf153('0x4a')](_0x5599a6[_0xf153('0x4b')],{})[_0xf153('0x27')](respondWithResult(_0x657403,0xc9))[_0xf153('0x45')](handleError(_0x657403,null));};exports[_0xf153('0x26')]=function(_0x33e48,_0x3b91ed){if(_0x33e48['body']['id']){delete _0x33e48[_0xf153('0x4b')]['id'];}return db['FreshdeskField']['find']({'where':{'id':_0x33e48['params']['id']}})[_0xf153('0x27')](handleEntityNotFound(_0x3b91ed,null))[_0xf153('0x27')](saveUpdates(_0x33e48['body'],null))[_0xf153('0x27')](respondWithResult(_0x3b91ed,null))[_0xf153('0x45')](handleError(_0x3b91ed,null));};exports['destroy']=function(_0x3f1ecb,_0xe6e023){return db[_0xf153('0x2e')][_0xf153('0x49')]({'where':{'id':_0x3f1ecb[_0xf153('0x46')]['id']}})[_0xf153('0x27')](handleEntityNotFound(_0xe6e023,null))['then'](removeEntity(_0xe6e023,null))[_0xf153('0x45')](handleError(_0xe6e023,null));};
\ No newline at end of file
+var _0xa9e0=['nolimit','sort','where','filter','merge','type','options','includeAll','include','findAll','catch','show','params','find','body','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','FreshdeskField','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty'];(function(_0x2c4d9f,_0x266437){var _0x3c558a=function(_0xe83d03){while(--_0xe83d03){_0x2c4d9f['push'](_0x2c4d9f['shift']());}};_0x3c558a(++_0x266437);}(_0xa9e0,0x123));var _0x0a9e=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xa9e0[_0x110c3d];return _0x226d67;};'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['FreshdeskField'][_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));};
\ No newline at end of file
index 96d46a4..1e85bb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad26=['../../config/environment','./intFreshdeskField.attributes','exports','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','lodash','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0x3076ed,_0x23db8a){var _0x25a6a9=function(_0x24f0a3){while(--_0x24f0a3){_0x3076ed['push'](_0x3076ed['shift']());}};_0x25a6a9(++_0x23db8a);}(_0xad26,0x1ab));var _0x6ad2=function(_0x1992f1,_0x5c61f0){_0x1992f1=_0x1992f1-0x0;var _0x413dfe=_0xad26[_0x1992f1];return _0x413dfe;};'use strict';var _=require(_0x6ad2('0x0'));var util=require('util');var logger=require(_0x6ad2('0x1'))(_0x6ad2('0x2'));var moment=require(_0x6ad2('0x3'));var BPromise=require(_0x6ad2('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6ad2('0x5'));var rimraf=require(_0x6ad2('0x6'));var config=require(_0x6ad2('0x7'));var attributes=require(_0x6ad2('0x8'));module[_0x6ad2('0x9')]=function(_0x4ca015,_0x1eb4d7){return _0x4ca015[_0x6ad2('0xa')](_0x6ad2('0xb'),attributes,{'tableName':_0x6ad2('0xc'),'paranoid':![],'indexes':[{'name':_0x6ad2('0xd'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6552=['../../config/logger','api','moment','bluebird','request-promise','path','./intFreshdeskField.attributes','exports','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','idField','FieldId'];(function(_0x561981,_0xb5361b){var _0x35cda7=function(_0x721f31){while(--_0x721f31){_0x561981['push'](_0x561981['shift']());}};_0x35cda7(++_0xb5361b);}(_0x6552,0x1ea));var _0x2655=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x6552[_0x2dafbe];return _0x58a45a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x2655('0x0'))(_0x2655('0x1'));var moment=require(_0x2655('0x2'));var BPromise=require(_0x2655('0x3'));var rp=require(_0x2655('0x4'));var fs=require('fs');var path=require(_0x2655('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x2655('0x6'));module[_0x2655('0x7')]=function(_0x3149b8,_0x2eede3){return _0x3149b8[_0x2655('0x8')](_0x2655('0x9'),attributes,{'tableName':_0x2655('0xa'),'paranoid':![],'indexes':[{'name':_0x2655('0xb'),'fields':[_0x2655('0xc'),_0x2655('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 48aedbb..ae79f83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2024=['catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http','then','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','message','result'];(function(_0xaa0309,_0x1c8008){var _0x5de7ce=function(_0x3aa6ae){while(--_0x3aa6ae){_0xaa0309['push'](_0xaa0309['shift']());}};_0x5de7ce(++_0x1c8008);}(_0x2024,0x191));var _0x4202=function(_0x25d08b,_0x3acf47){_0x25d08b=_0x25d08b-0x0;var _0x4be9f4=_0x2024[_0x25d08b];return _0x4be9f4;};'use strict';var _=require(_0x4202('0x0'));var util=require(_0x4202('0x1'));var moment=require('moment');var BPromise=require(_0x4202('0x2'));var rs=require(_0x4202('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4202('0x4'))['db'];var utils=require(_0x4202('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x4202('0x6'));var jayson=require(_0x4202('0x7'));var client=jayson['client'][_0x4202('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x497057,_0x51b131,_0x1f8407){return new BPromise(function(_0x3b3362,_0x4520a9){return client['request'](_0x497057,_0x1f8407)[_0x4202('0x9')](function(_0x1e8789){logger[_0x4202('0xa')](_0x4202('0xb'),_0x51b131,_0x4202('0xc'));logger[_0x4202('0xd')](_0x4202('0xe'),_0x51b131,_0x4202('0xc'),JSON[_0x4202('0xf')](_0x1e8789));if(_0x1e8789[_0x4202('0x10')]){if(_0x1e8789[_0x4202('0x10')]['code']===0x1f4){logger[_0x4202('0x10')](_0x4202('0xb'),_0x51b131,_0x1e8789[_0x4202('0x10')]['message']);return _0x4520a9(_0x1e8789[_0x4202('0x10')][_0x4202('0x11')]);}logger[_0x4202('0x10')](_0x4202('0xb'),_0x51b131,_0x1e8789[_0x4202('0x10')]['message']);return _0x3b3362(_0x1e8789[_0x4202('0x10')]['message']);}else{logger[_0x4202('0xa')](_0x4202('0xb'),_0x51b131,_0x4202('0xc'));_0x3b3362(_0x1e8789[_0x4202('0x12')][_0x4202('0x11')]);}})[_0x4202('0x13')](function(_0x10c4bb){logger[_0x4202('0x10')](_0x4202('0xb'),_0x51b131,_0x10c4bb);_0x4520a9(_0x10c4bb);});});}
\ No newline at end of file
+var _0xa15b=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','FreshdeskField,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch'];(function(_0x5bcf16,_0x36a554){var _0x37ef69=function(_0x2cb59f){while(--_0x2cb59f){_0x5bcf16['push'](_0x5bcf16['shift']());}};_0x37ef69(++_0x36a554);}(_0xa15b,0xd2));var _0xba15=function(_0xb71385,_0x5dd513){_0xb71385=_0xb71385-0x0;var _0x45ab9f=_0xa15b[_0xb71385];return _0x45ab9f;};'use strict';var _=require(_0xba15('0x0'));var util=require(_0xba15('0x1'));var moment=require(_0xba15('0x2'));var BPromise=require(_0xba15('0x3'));var rs=require(_0xba15('0x4'));var fs=require('fs');var Redis=require(_0xba15('0x5'));var db=require(_0xba15('0x6'))['db'];var utils=require(_0xba15('0x7'));var logger=require(_0xba15('0x8'))(_0xba15('0x9'));var config=require(_0xba15('0xa'));var jayson=require(_0xba15('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x207b98,_0x4b2478,_0x43c511){return new BPromise(function(_0x2b08ad,_0x2ddf71){return client[_0xba15('0xc')](_0x207b98,_0x43c511)[_0xba15('0xd')](function(_0x3695e){logger['info'](_0xba15('0xe'),_0x4b2478,_0xba15('0xf'));logger['debug']('FreshdeskField,\x20%s,\x20%s,\x20%s',_0x4b2478,_0xba15('0xf'),JSON[_0xba15('0x10')](_0x3695e));if(_0x3695e[_0xba15('0x11')]){if(_0x3695e[_0xba15('0x11')][_0xba15('0x12')]===0x1f4){logger[_0xba15('0x11')](_0xba15('0xe'),_0x4b2478,_0x3695e[_0xba15('0x11')][_0xba15('0x13')]);return _0x2ddf71(_0x3695e[_0xba15('0x11')]['message']);}logger[_0xba15('0x11')]('FreshdeskField,\x20%s,\x20%s',_0x4b2478,_0x3695e[_0xba15('0x11')][_0xba15('0x13')]);return _0x2b08ad(_0x3695e[_0xba15('0x11')][_0xba15('0x13')]);}else{logger['info'](_0xba15('0xe'),_0x4b2478,'request\x20sent');_0x2b08ad(_0x3695e['result'][_0xba15('0x13')]);}})[_0xba15('0x14')](function(_0x2fa9b0){logger[_0xba15('0x11')](_0xba15('0xe'),_0x4b2478,_0x2fa9b0);_0x2ddf71(_0x2fa9b0);});});}
\ No newline at end of file
index ed36535..343aa54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeffd=['/:id','show','getConfigurations','getFields','post','create','/:id/configurations','put','update','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated','index'];(function(_0x500419,_0x549162){var _0x241c1a=function(_0x3bea1a){while(--_0x3bea1a){_0x500419['push'](_0x500419['shift']());}};_0x241c1a(++_0x549162);}(_0xeffd,0x6b));var _0xdeff=function(_0x253104,_0x44dfa1){_0x253104=_0x253104-0x0;var _0x480c7b=_0xeffd[_0x253104];return _0x480c7b;};'use strict';var multer=require(_0xdeff('0x0'));var util=require('util');var path=require(_0xdeff('0x1'));var timeout=require(_0xdeff('0x2'));var express=require(_0xdeff('0x3'));var router=express[_0xdeff('0x4')]();var fs_extra=require(_0xdeff('0x5'));var auth=require(_0xdeff('0x6'));var interaction=require(_0xdeff('0x7'));var config=require(_0xdeff('0x8'));var controller=require(_0xdeff('0x9'));router[_0xdeff('0xa')]('/',auth[_0xdeff('0xb')](),controller[_0xdeff('0xc')]);router[_0xdeff('0xa')](_0xdeff('0xd'),auth[_0xdeff('0xb')](),controller[_0xdeff('0xe')]);router[_0xdeff('0xa')]('/:id/configurations',auth[_0xdeff('0xb')](),controller[_0xdeff('0xf')]);router[_0xdeff('0xa')]('/:id/fields',auth[_0xdeff('0xb')](),controller[_0xdeff('0x10')]);router[_0xdeff('0x11')]('/',auth[_0xdeff('0xb')](),controller[_0xdeff('0x12')]);router[_0xdeff('0x11')](_0xdeff('0x13'),auth[_0xdeff('0xb')](),controller['addConfiguration']);router[_0xdeff('0x14')](_0xdeff('0xd'),auth['isAuthenticated'](),controller[_0xdeff('0x15')]);router['delete']('/:id',auth[_0xdeff('0xb')](),controller[_0xdeff('0x16')]);module[_0xdeff('0x17')]=router;
\ No newline at end of file
+var _0x97c1=['delete','destroy','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','index','get','/:id','isAuthenticated','/:id/configurations','getConfigurations','/:id/fields','post','create','addConfiguration','put'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x97c1,0xdf));var _0x197c=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x97c1[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x197c('0x0'));var util=require(_0x197c('0x1'));var path=require('path');var timeout=require(_0x197c('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x197c('0x3'));var auth=require(_0x197c('0x4'));var interaction=require(_0x197c('0x5'));var config=require(_0x197c('0x6'));var controller=require(_0x197c('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x197c('0x8')]);router[_0x197c('0x9')](_0x197c('0xa'),auth[_0x197c('0xb')](),controller['show']);router['get'](_0x197c('0xc'),auth['isAuthenticated'](),controller[_0x197c('0xd')]);router[_0x197c('0x9')](_0x197c('0xe'),auth[_0x197c('0xb')](),controller['getFields']);router[_0x197c('0xf')]('/',auth[_0x197c('0xb')](),controller[_0x197c('0x10')]);router[_0x197c('0xf')](_0x197c('0xc'),auth['isAuthenticated'](),controller[_0x197c('0x11')]);router[_0x197c('0x12')](_0x197c('0xa'),auth[_0x197c('0xb')](),controller['update']);router[_0x197c('0x13')](_0x197c('0xa'),auth[_0x197c('0xb')](),controller[_0x197c('0x14')]);module[_0x197c('0x15')]=router;
\ No newline at end of file
index a85efba..f2d72fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7096=['exports','STRING','username','remoteUri'];(function(_0x451dbf,_0x2464c5){var _0x3e6fcb=function(_0x3d9a86){while(--_0x3d9a86){_0x451dbf['push'](_0x451dbf['shift']());}};_0x3e6fcb(++_0x2464c5);}(_0x7096,0x10c));var _0x6709=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0x7096[_0x42245d];return _0x4b211a;};'use strict';var Sequelize=require('sequelize');module[_0x6709('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x6709('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0x6709('0x2')},'apiKey':{'type':Sequelize[_0x6709('0x1')]},'remoteUri':{'type':Sequelize[_0x6709('0x1')],'unique':_0x6709('0x3')},'serverUrl':{'type':Sequelize[_0x6709('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x6a55=['STRING','sequelize'];(function(_0x1e14ae,_0x25be7a){var _0x5be775=function(_0x320ff6){while(--_0x320ff6){_0x1e14ae['push'](_0x1e14ae['shift']());}};_0x5be775(++_0x25be7a);}(_0x6a55,0xdb));var _0x56a5=function(_0x52eb16,_0x89c3d8){_0x52eb16=_0x52eb16-0x0;var _0x382d3f=_0x6a55[_0x52eb16];return _0x382d3f;};'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
index e0b67da..a6b8928 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0dd9=['type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','find','create','body','params','findOne','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','FreshsalesConfiguration','FreshsalesField','getFields','username','remoteUri','apiKey','slice','substring','format','%s%s','/api/selector/owners','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','test','statusCode','stringify','Wrong\x20credentials','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','count','limit','Content-Range','apply','save','update','destroy','then','end','error','stack','name','send','index','map','FreshsalesAccount','rawAttributes','fieldName'];(function(_0x3775df,_0x5d0401){var _0x25ff65=function(_0x2c1a1e){while(--_0x2c1a1e){_0x3775df['push'](_0x3775df['shift']());}};_0x25ff65(++_0x5d0401);}(_0x0dd9,0x99));var _0x90dd=function(_0x51b5ae,_0x12f299){_0x51b5ae=_0x51b5ae-0x0;var _0x45b5ad=_0x0dd9[_0x51b5ae];return _0x45b5ad;};'use strict';var emlformat=require(_0x90dd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x90dd('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x90dd('0x2'));var moment=require(_0x90dd('0x3'));var BPromise=require(_0x90dd('0x4'));var Mustache=require(_0x90dd('0x5'));var util=require(_0x90dd('0x6'));var path=require('path');var sox=require(_0x90dd('0x7'));var csv=require(_0x90dd('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x90dd('0x9'));var _=require(_0x90dd('0xa'));var squel=require(_0x90dd('0xb'));var crypto=require('crypto');var jsforce=require(_0x90dd('0xc'));var deskjs=require(_0x90dd('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x90dd('0xe'));var Redis=require(_0x90dd('0xf'));var authService=require(_0x90dd('0x10'));var qs=require(_0x90dd('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x90dd('0x12'))('api');var utils=require(_0x90dd('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x90dd('0x14'))['db'];var integrations=require(_0x90dd('0x15'));function respondWithStatusCode(_0x53de95,_0x420a6b){_0x420a6b=_0x420a6b||0xcc;return function(_0x3d4212){if(_0x3d4212){return _0x53de95[_0x90dd('0x16')](_0x420a6b);}return _0x53de95[_0x90dd('0x17')](_0x420a6b)['end']();};}function respondWithResult(_0x591562,_0x3b5596){_0x3b5596=_0x3b5596||0xc8;return function(_0x4fd4ef){if(_0x4fd4ef){return _0x591562[_0x90dd('0x17')](_0x3b5596)[_0x90dd('0x18')](_0x4fd4ef);}};}function respondWithFilteredResult(_0x34f4c7,_0x5993fb){return function(_0x398bf5){if(_0x398bf5){var _0x18934f=typeof _0x5993fb[_0x90dd('0x19')]===_0x90dd('0x1a')&&typeof _0x5993fb['limit']===_0x90dd('0x1a');var _0x4c87b0=_0x398bf5[_0x90dd('0x1b')];var _0xa0c25e=_0x18934f?0x0:_0x5993fb['offset'];var _0x3d059a=_0x18934f?_0x398bf5[_0x90dd('0x1b')]:_0x5993fb[_0x90dd('0x19')]+_0x5993fb[_0x90dd('0x1c')];var _0x30a9b6;if(_0x3d059a>=_0x4c87b0){_0x3d059a=_0x4c87b0;_0x30a9b6=0xc8;}else{_0x30a9b6=0xce;}_0x34f4c7[_0x90dd('0x17')](_0x30a9b6);return _0x34f4c7['set'](_0x90dd('0x1d'),_0xa0c25e+'-'+_0x3d059a+'/'+_0x4c87b0)[_0x90dd('0x18')](_0x398bf5);}return null;};}function patchUpdates(_0x548d3e){return function(_0x45582f){try{jsonpatch[_0x90dd('0x1e')](_0x45582f,_0x548d3e,!![]);}catch(_0x26e6a3){return BPromise['reject'](_0x26e6a3);}return _0x45582f[_0x90dd('0x1f')]();};}function saveUpdates(_0x55969c,_0x4bec0f){return function(_0x466209){if(_0x466209){return _0x466209[_0x90dd('0x20')](_0x55969c)['then'](function(_0x365917){return _0x365917;});}return null;};}function removeEntity(_0x357998,_0x146531){return function(_0x251505){if(_0x251505){return _0x251505[_0x90dd('0x21')]()[_0x90dd('0x22')](function(){_0x357998[_0x90dd('0x17')](0xcc)[_0x90dd('0x23')]();});}};}function handleEntityNotFound(_0x2fe188,_0xf0f3fd){return function(_0x33b60e){if(!_0x33b60e){_0x2fe188[_0x90dd('0x16')](0x194);}return _0x33b60e;};}function handleError(_0x4a997d,_0x4a0c56){_0x4a0c56=_0x4a0c56||0x1f4;return function(_0x55deaa){logger[_0x90dd('0x24')](_0x55deaa[_0x90dd('0x25')]);if(_0x55deaa[_0x90dd('0x26')]){delete _0x55deaa['name'];}_0x4a997d['status'](_0x4a0c56)[_0x90dd('0x27')](_0x55deaa);};}exports[_0x90dd('0x28')]=function(_0x22a602,_0x4c5ad5){var _0x5724f4={},_0x3fe1a7={},_0x2d0875={'count':0x0,'rows':[]};var _0xb74ae=_[_0x90dd('0x29')](db[_0x90dd('0x2a')][_0x90dd('0x2b')],function(_0xd4083d){return{'name':_0xd4083d[_0x90dd('0x2c')],'type':_0xd4083d[_0x90dd('0x2d')][_0x90dd('0x2e')]};});_0x3fe1a7[_0x90dd('0x2f')]=_[_0x90dd('0x29')](_0xb74ae,_0x90dd('0x26'));_0x3fe1a7[_0x90dd('0x30')]=_[_0x90dd('0x31')](_0x22a602[_0x90dd('0x30')]);_0x3fe1a7[_0x90dd('0x32')]=_[_0x90dd('0x33')](_0x3fe1a7[_0x90dd('0x2f')],_0x3fe1a7['query']);_0x5724f4[_0x90dd('0x34')]=_['intersection'](_0x3fe1a7[_0x90dd('0x2f')],qs['fields'](_0x22a602[_0x90dd('0x30')][_0x90dd('0x35')]));_0x5724f4[_0x90dd('0x34')]=_0x5724f4['attributes'][_0x90dd('0x36')]?_0x5724f4[_0x90dd('0x34')]:_0x3fe1a7['model'];if(!_0x22a602[_0x90dd('0x30')][_0x90dd('0x37')](_0x90dd('0x38'))){_0x5724f4['limit']=qs[_0x90dd('0x1c')](_0x22a602[_0x90dd('0x30')][_0x90dd('0x1c')]);_0x5724f4[_0x90dd('0x19')]=qs['offset'](_0x22a602[_0x90dd('0x30')][_0x90dd('0x19')]);}_0x5724f4['order']=qs[_0x90dd('0x39')](_0x22a602['query'][_0x90dd('0x39')]);_0x5724f4[_0x90dd('0x3a')]=qs[_0x90dd('0x32')](_['pick'](_0x22a602[_0x90dd('0x30')],_0x3fe1a7[_0x90dd('0x32')]),_0xb74ae);if(_0x22a602['query'][_0x90dd('0x3b')]){_0x5724f4[_0x90dd('0x3a')]=_[_0x90dd('0x3c')](_0x5724f4[_0x90dd('0x3a')],{'$or':_[_0x90dd('0x29')](_0xb74ae,function(_0x53591c){if(_0x53591c[_0x90dd('0x2d')]!==_0x90dd('0x3d')){var _0x446028={};_0x446028[_0x53591c[_0x90dd('0x26')]]={'$like':'%'+_0x22a602['query'][_0x90dd('0x3b')]+'%'};return _0x446028;}})});}_0x5724f4=_[_0x90dd('0x3c')]({},_0x5724f4,_0x22a602[_0x90dd('0x3e')]);var _0x57b42d={'where':_0x5724f4[_0x90dd('0x3a')]};return db[_0x90dd('0x2a')][_0x90dd('0x1b')](_0x57b42d)[_0x90dd('0x22')](function(_0x5ba26b){_0x2d0875[_0x90dd('0x1b')]=_0x5ba26b;if(_0x22a602[_0x90dd('0x30')][_0x90dd('0x3f')]){_0x5724f4[_0x90dd('0x40')]=[{'all':!![]}];}return db['FreshsalesAccount'][_0x90dd('0x41')](_0x5724f4);})[_0x90dd('0x22')](function(_0x2de895){_0x2d0875[_0x90dd('0x42')]=_0x2de895;return _0x2d0875;})['then'](respondWithFilteredResult(_0x4c5ad5,_0x5724f4))[_0x90dd('0x43')](handleError(_0x4c5ad5,null));};exports['show']=function(_0x3bd48b,_0x186d9c){var _0x2ed5b5={'raw':![],'where':{'id':_0x3bd48b['params']['id']}},_0x118170={};_0x118170[_0x90dd('0x2f')]=_[_0x90dd('0x31')](db[_0x90dd('0x2a')][_0x90dd('0x2b')]);_0x118170[_0x90dd('0x30')]=_['keys'](_0x3bd48b[_0x90dd('0x30')]);_0x118170['filters']=_[_0x90dd('0x33')](_0x118170[_0x90dd('0x2f')],_0x118170['query']);_0x2ed5b5[_0x90dd('0x34')]=_['intersection'](_0x118170[_0x90dd('0x2f')],qs[_0x90dd('0x35')](_0x3bd48b[_0x90dd('0x30')]['fields']));_0x2ed5b5[_0x90dd('0x34')]=_0x2ed5b5[_0x90dd('0x34')][_0x90dd('0x36')]?_0x2ed5b5['attributes']:_0x118170[_0x90dd('0x2f')];if(_0x3bd48b[_0x90dd('0x30')][_0x90dd('0x3f')]){_0x2ed5b5[_0x90dd('0x40')]=[{'all':!![]}];}_0x2ed5b5=_[_0x90dd('0x3c')]({},_0x2ed5b5,_0x3bd48b[_0x90dd('0x3e')]);return db[_0x90dd('0x2a')][_0x90dd('0x44')](_0x2ed5b5)[_0x90dd('0x22')](handleEntityNotFound(_0x186d9c,null))[_0x90dd('0x22')](respondWithResult(_0x186d9c,null))['catch'](handleError(_0x186d9c,null));};exports['create']=function(_0x337742,_0xd7ff32){return db[_0x90dd('0x2a')][_0x90dd('0x45')](_0x337742['body'],{})[_0x90dd('0x22')](respondWithResult(_0xd7ff32,0xc9))[_0x90dd('0x43')](handleError(_0xd7ff32,null));};exports[_0x90dd('0x20')]=function(_0x3d7976,_0x2a999c){if(_0x3d7976[_0x90dd('0x46')]['id']){delete _0x3d7976[_0x90dd('0x46')]['id'];}return db[_0x90dd('0x2a')][_0x90dd('0x44')]({'where':{'id':_0x3d7976[_0x90dd('0x47')]['id']}})['then'](handleEntityNotFound(_0x2a999c,null))[_0x90dd('0x22')](saveUpdates(_0x3d7976[_0x90dd('0x46')],null))[_0x90dd('0x22')](respondWithResult(_0x2a999c,null))['catch'](handleError(_0x2a999c,null));};exports[_0x90dd('0x21')]=function(_0x3e4a43,_0x5aeabd){return db[_0x90dd('0x2a')][_0x90dd('0x44')]({'where':{'id':_0x3e4a43[_0x90dd('0x47')]['id']}})[_0x90dd('0x22')](handleEntityNotFound(_0x5aeabd,null))['then'](removeEntity(_0x5aeabd,null))[_0x90dd('0x43')](handleError(_0x5aeabd,null));};exports['getConfigurations']=function(_0x173481,_0x30b27c,_0x3c3039){var _0x4f6203={};var _0x24ad70={};var _0x597cde;var _0x5aff3e;return db['FreshsalesAccount'][_0x90dd('0x48')]({'where':{'id':_0x173481[_0x90dd('0x47')]['id']}})[_0x90dd('0x22')](handleEntityNotFound(_0x30b27c,null))[_0x90dd('0x22')](function(_0x48fd96){if(_0x48fd96){_0x597cde=_0x48fd96;_0x24ad70['model']=_[_0x90dd('0x31')](db['FreshsalesConfiguration'][_0x90dd('0x2b')]);_0x24ad70['query']=_[_0x90dd('0x31')](_0x173481['query']);_0x24ad70[_0x90dd('0x32')]=_[_0x90dd('0x33')](_0x24ad70[_0x90dd('0x2f')],_0x24ad70[_0x90dd('0x30')]);_0x4f6203[_0x90dd('0x34')]=_[_0x90dd('0x33')](_0x24ad70[_0x90dd('0x2f')],qs[_0x90dd('0x35')](_0x173481['query'][_0x90dd('0x35')]));_0x4f6203[_0x90dd('0x34')]=_0x4f6203[_0x90dd('0x34')][_0x90dd('0x36')]?_0x4f6203[_0x90dd('0x34')]:_0x24ad70['model'];_0x4f6203['order']=qs[_0x90dd('0x39')](_0x173481[_0x90dd('0x30')]['sort']);_0x4f6203[_0x90dd('0x3a')]=qs['filters'](_['pick'](_0x173481[_0x90dd('0x30')],_0x24ad70['filters']));if(_0x173481[_0x90dd('0x30')][_0x90dd('0x3b')]){_0x4f6203['where']=_[_0x90dd('0x3c')](_0x4f6203[_0x90dd('0x3a')],{'$or':_[_0x90dd('0x29')](_0x4f6203[_0x90dd('0x34')],function(_0x4a5bda){var _0x4c34c7={};_0x4c34c7[_0x4a5bda]={'$like':'%'+_0x173481[_0x90dd('0x30')]['filter']+'%'};return _0x4c34c7;})});}_0x4f6203=_[_0x90dd('0x3c')]({},_0x4f6203,_0x173481[_0x90dd('0x3e')]);return _0x597cde[_0x90dd('0x49')](_0x4f6203);}})[_0x90dd('0x22')](function(_0x36257e){if(_0x36257e){_0x5aff3e=_0x36257e[_0x90dd('0x36')];if(!_0x173481[_0x90dd('0x30')][_0x90dd('0x37')](_0x90dd('0x38'))){_0x4f6203[_0x90dd('0x1c')]=qs[_0x90dd('0x1c')](_0x173481[_0x90dd('0x30')][_0x90dd('0x1c')]);_0x4f6203[_0x90dd('0x19')]=qs['offset'](_0x173481[_0x90dd('0x30')][_0x90dd('0x19')]);}return _0x597cde['getConfigurations'](_0x4f6203);}})[_0x90dd('0x22')](function(_0x3ce616){if(_0x3ce616){return _0x3ce616?{'count':_0x5aff3e,'rows':_0x3ce616}:null;}})[_0x90dd('0x22')](respondWithResult(_0x30b27c,null))[_0x90dd('0x43')](handleError(_0x30b27c,null));};exports[_0x90dd('0x4a')]=function(_0x1295f1,_0x1eb7f8,_0x37cb0a){if(_0x1295f1[_0x90dd('0x46')]['id']){delete _0x1295f1[_0x90dd('0x46')]['id'];}return db[_0x90dd('0x2a')][_0x90dd('0x48')]({'where':{'id':_0x1295f1[_0x90dd('0x47')]['id']}})['then'](handleEntityNotFound(_0x1eb7f8,null))[_0x90dd('0x22')](function(_0x461a66){if(_0x461a66){_0x1295f1[_0x90dd('0x46')][_0x90dd('0x4b')]=_0x461a66['id'];_0x1295f1[_0x90dd('0x46')][_0x90dd('0x4c')]=integrations[_0x90dd('0x4d')](_0x1295f1[_0x90dd('0x46')][_0x90dd('0x4e')],_0x1295f1[_0x90dd('0x46')]['type']);_0x1295f1[_0x90dd('0x46')][_0x90dd('0x4f')]=integrations['getDescriptions'](_0x1295f1[_0x90dd('0x46')][_0x90dd('0x4e')],_0x1295f1[_0x90dd('0x46')][_0x90dd('0x2d')]);return db[_0x90dd('0x50')]['create'](_0x1295f1[_0x90dd('0x46')],{'include':[{'model':db[_0x90dd('0x51')],'as':_0x90dd('0x4c')},{'model':db[_0x90dd('0x51')],'as':'Descriptions'}]});}return null;})[_0x90dd('0x22')](respondWithResult(_0x1eb7f8,null))[_0x90dd('0x43')](handleError(_0x1eb7f8,null));};exports[_0x90dd('0x52')]=function(_0x418e64,_0x14229b,_0x40a666){var _0x39eb6a='';var _0x484e42='';return db[_0x90dd('0x2a')]['findOne']({'where':{'id':_0x418e64['params']['id']},'attributes':['id',_0x90dd('0x53'),_0x90dd('0x54'),_0x90dd('0x55')]})[_0x90dd('0x22')](handleEntityNotFound(_0x14229b,null))[_0x90dd('0x22')](function(_0x2c69a8){if(_0x2c69a8){_0x484e42=_0x2c69a8[_0x90dd('0x53')];_0x39eb6a=_0x2c69a8['remoteUri'];var _0x2200f1=_0x2c69a8[_0x90dd('0x54')][_0x90dd('0x56')](-0x1);if(_0x2200f1==='/'){_0x39eb6a=_0x39eb6a[_0x90dd('0x57')](0x0,_0x39eb6a['lastIndexOf'](_0x2200f1));}return rp({'method':'GET','uri':util[_0x90dd('0x58')](_0x90dd('0x59'),_0x39eb6a,_0x90dd('0x5a')),'headers':{'Authorization':_0x90dd('0x5b')+_0x2c69a8[_0x90dd('0x55')]},'json':!![]});}})[_0x90dd('0x22')](function(_0x59a96d){if(_0x59a96d){var _0x66d963=_0x59a96d[_0x90dd('0x5c')];var _0xa30815=![];var _0xf64b9d=null;for(_0xf64b9d=0x0;_0xf64b9d<_0x66d963[_0x90dd('0x36')];_0xf64b9d++){if(_0x66d963[_0xf64b9d][_0x90dd('0x5d')]===_0x484e42){_0xa30815=!![];}}if(_0xa30815){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x90dd('0x5e')});}}})[_0x90dd('0x22')](respondWithResult(_0x14229b,null))[_0x90dd('0x43')](function(_0x232040){var _0x4a44a2=_0x418e64[_0x90dd('0x30')][_0x90dd('0x5f')]?0x1f4:_0x232040[_0x90dd('0x60')]||0x1f4;logger[_0x90dd('0x24')]('getFields,\x20%s,\x20%s,\x20%s',_0x90dd('0x52'),_0x4a44a2,JSON[_0x90dd('0x61')](_0x232040));delete _0x232040[_0x90dd('0x26')];if(_0x4a44a2===0x191){_0x4a44a2=0x190;}_0x14229b[_0x90dd('0x17')](_0x4a44a2)['send'](_0x418e64['query'][_0x90dd('0x5f')]?{'message':_0x90dd('0x62'),'statusCode':_0x232040[_0x90dd('0x60')]}:_0x232040);});};
\ No newline at end of file
+var _0x6433=['update','then','error','stack','name','index','map','FreshsalesAccount','type','key','model','keys','query','intersection','attributes','fields','nolimit','filters','pick','filter','merge','options','where','includeAll','findAll','rows','catch','show','params','find','create','body','getConfigurations','findOne','FreshsalesConfiguration','rawAttributes','length','order','sort','hasOwnProperty','addConfiguration','AccountId','channel','Descriptions','getDescriptions','FreshsalesField','getFields','username','remoteUri','slice','substring','GET','format','/api/selector/owners','apiKey','email','Requested\x20Resource\x20not\x20Found','test','stringify','send','statusCode','eml-format','zip-dir','moment','bluebird','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','offset','undefined','limit','count','status','set','Content-Range','reject','save'];(function(_0x1d4706,_0x1d40bd){var _0x2f665c=function(_0x39d1f2){while(--_0x39d1f2){_0x1d4706['push'](_0x1d4706['shift']());}};_0x2f665c(++_0x1d40bd);}(_0x6433,0x1b9));var _0x3643=function(_0x406fc9,_0x15d2f3){_0x406fc9=_0x406fc9-0x0;var _0x40e094=_0x6433[_0x406fc9];return _0x40e094;};'use strict';var emlformat=require(_0x3643('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3643('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x3643('0x2'));var BPromise=require(_0x3643('0x3'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x3643('0x4'));var csv=require(_0x3643('0x5'));var ejs=require(_0x3643('0x6'));var fs=require('fs');var fs_extra=require(_0x3643('0x7'));var _=require('lodash');var squel=require(_0x3643('0x8'));var crypto=require(_0x3643('0x9'));var jsforce=require(_0x3643('0xa'));var deskjs=require(_0x3643('0xb'));var toCsv=require('to-csv');var querystring=require(_0x3643('0xc'));var Papa=require(_0x3643('0xd'));var Redis=require(_0x3643('0xe'));var authService=require(_0x3643('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x3643('0x10'))(_0x3643('0x11'));var utils=require(_0x3643('0x12'));var config=require(_0x3643('0x13'));var licenseUtil=require(_0x3643('0x14'));var db=require(_0x3643('0x15'))['db'];var integrations=require(_0x3643('0x16'));function respondWithStatusCode(_0x27b79b,_0xc244c0){_0xc244c0=_0xc244c0||0xcc;return function(_0x14c885){if(_0x14c885){return _0x27b79b[_0x3643('0x17')](_0xc244c0);}return _0x27b79b['status'](_0xc244c0)[_0x3643('0x18')]();};}function respondWithResult(_0x4b5b8b,_0x5f1f27){_0x5f1f27=_0x5f1f27||0xc8;return function(_0x5435e7){if(_0x5435e7){return _0x4b5b8b['status'](_0x5f1f27)['json'](_0x5435e7);}};}function respondWithFilteredResult(_0x2c3280,_0x301a8f){return function(_0x105682){if(_0x105682){var _0x98901f=typeof _0x301a8f[_0x3643('0x19')]===_0x3643('0x1a')&&typeof _0x301a8f[_0x3643('0x1b')]===_0x3643('0x1a');var _0x4c9cd3=_0x105682[_0x3643('0x1c')];var _0x363aca=_0x98901f?0x0:_0x301a8f[_0x3643('0x19')];var _0x4f21e2=_0x98901f?_0x105682[_0x3643('0x1c')]:_0x301a8f['offset']+_0x301a8f[_0x3643('0x1b')];var _0x62eba;if(_0x4f21e2>=_0x4c9cd3){_0x4f21e2=_0x4c9cd3;_0x62eba=0xc8;}else{_0x62eba=0xce;}_0x2c3280[_0x3643('0x1d')](_0x62eba);return _0x2c3280[_0x3643('0x1e')](_0x3643('0x1f'),_0x363aca+'-'+_0x4f21e2+'/'+_0x4c9cd3)['json'](_0x105682);}return null;};}function patchUpdates(_0x478c7e){return function(_0x7d98e5){try{jsonpatch['apply'](_0x7d98e5,_0x478c7e,!![]);}catch(_0x573d51){return BPromise[_0x3643('0x20')](_0x573d51);}return _0x7d98e5[_0x3643('0x21')]();};}function saveUpdates(_0x275b54,_0x31cb54){return function(_0x17c936){if(_0x17c936){return _0x17c936[_0x3643('0x22')](_0x275b54)[_0x3643('0x23')](function(_0x287181){return _0x287181;});}return null;};}function removeEntity(_0x3f013b,_0x165594){return function(_0x2ec5d7){if(_0x2ec5d7){return _0x2ec5d7['destroy']()[_0x3643('0x23')](function(){_0x3f013b['status'](0xcc)[_0x3643('0x18')]();});}};}function handleEntityNotFound(_0x5cd2ac,_0x7c0547){return function(_0x4f0052){if(!_0x4f0052){_0x5cd2ac[_0x3643('0x17')](0x194);}return _0x4f0052;};}function handleError(_0x59ce7b,_0x1365c2){_0x1365c2=_0x1365c2||0x1f4;return function(_0x52c6a6){logger[_0x3643('0x24')](_0x52c6a6[_0x3643('0x25')]);if(_0x52c6a6[_0x3643('0x26')]){delete _0x52c6a6[_0x3643('0x26')];}_0x59ce7b[_0x3643('0x1d')](_0x1365c2)['send'](_0x52c6a6);};}exports[_0x3643('0x27')]=function(_0x85b52,_0x552efc){var _0x2faa30={},_0x1bca31={},_0xf1e3f7={'count':0x0,'rows':[]};var _0x24428d=_[_0x3643('0x28')](db[_0x3643('0x29')]['rawAttributes'],function(_0x6d8ebd){return{'name':_0x6d8ebd['fieldName'],'type':_0x6d8ebd[_0x3643('0x2a')][_0x3643('0x2b')]};});_0x1bca31[_0x3643('0x2c')]=_[_0x3643('0x28')](_0x24428d,_0x3643('0x26'));_0x1bca31['query']=_[_0x3643('0x2d')](_0x85b52[_0x3643('0x2e')]);_0x1bca31['filters']=_[_0x3643('0x2f')](_0x1bca31['model'],_0x1bca31[_0x3643('0x2e')]);_0x2faa30[_0x3643('0x30')]=_[_0x3643('0x2f')](_0x1bca31[_0x3643('0x2c')],qs[_0x3643('0x31')](_0x85b52[_0x3643('0x2e')][_0x3643('0x31')]));_0x2faa30['attributes']=_0x2faa30['attributes']['length']?_0x2faa30['attributes']:_0x1bca31['model'];if(!_0x85b52['query']['hasOwnProperty'](_0x3643('0x32'))){_0x2faa30[_0x3643('0x1b')]=qs[_0x3643('0x1b')](_0x85b52[_0x3643('0x2e')]['limit']);_0x2faa30[_0x3643('0x19')]=qs[_0x3643('0x19')](_0x85b52[_0x3643('0x2e')][_0x3643('0x19')]);}_0x2faa30['order']=qs['sort'](_0x85b52[_0x3643('0x2e')]['sort']);_0x2faa30['where']=qs[_0x3643('0x33')](_[_0x3643('0x34')](_0x85b52[_0x3643('0x2e')],_0x1bca31[_0x3643('0x33')]),_0x24428d);if(_0x85b52[_0x3643('0x2e')][_0x3643('0x35')]){_0x2faa30['where']=_[_0x3643('0x36')](_0x2faa30['where'],{'$or':_[_0x3643('0x28')](_0x24428d,function(_0x13c9ae){if(_0x13c9ae[_0x3643('0x2a')]!=='VIRTUAL'){var _0x5be811={};_0x5be811[_0x13c9ae[_0x3643('0x26')]]={'$like':'%'+_0x85b52[_0x3643('0x2e')][_0x3643('0x35')]+'%'};return _0x5be811;}})});}_0x2faa30=_[_0x3643('0x36')]({},_0x2faa30,_0x85b52[_0x3643('0x37')]);var _0x2b4f59={'where':_0x2faa30[_0x3643('0x38')]};return db['FreshsalesAccount'][_0x3643('0x1c')](_0x2b4f59)['then'](function(_0x122a49){_0xf1e3f7[_0x3643('0x1c')]=_0x122a49;if(_0x85b52[_0x3643('0x2e')][_0x3643('0x39')]){_0x2faa30['include']=[{'all':!![]}];}return db[_0x3643('0x29')][_0x3643('0x3a')](_0x2faa30);})['then'](function(_0x17f72f){_0xf1e3f7[_0x3643('0x3b')]=_0x17f72f;return _0xf1e3f7;})[_0x3643('0x23')](respondWithFilteredResult(_0x552efc,_0x2faa30))[_0x3643('0x3c')](handleError(_0x552efc,null));};exports[_0x3643('0x3d')]=function(_0x1d805a,_0x4b3e8){var _0x1ac05c={'raw':![],'where':{'id':_0x1d805a[_0x3643('0x3e')]['id']}},_0x1f238a={};_0x1f238a['model']=_[_0x3643('0x2d')](db[_0x3643('0x29')]['rawAttributes']);_0x1f238a['query']=_[_0x3643('0x2d')](_0x1d805a['query']);_0x1f238a['filters']=_[_0x3643('0x2f')](_0x1f238a['model'],_0x1f238a[_0x3643('0x2e')]);_0x1ac05c[_0x3643('0x30')]=_[_0x3643('0x2f')](_0x1f238a['model'],qs[_0x3643('0x31')](_0x1d805a[_0x3643('0x2e')]['fields']));_0x1ac05c[_0x3643('0x30')]=_0x1ac05c[_0x3643('0x30')]['length']?_0x1ac05c[_0x3643('0x30')]:_0x1f238a['model'];if(_0x1d805a[_0x3643('0x2e')][_0x3643('0x39')]){_0x1ac05c['include']=[{'all':!![]}];}_0x1ac05c=_[_0x3643('0x36')]({},_0x1ac05c,_0x1d805a[_0x3643('0x37')]);return db[_0x3643('0x29')][_0x3643('0x3f')](_0x1ac05c)[_0x3643('0x23')](handleEntityNotFound(_0x4b3e8,null))[_0x3643('0x23')](respondWithResult(_0x4b3e8,null))[_0x3643('0x3c')](handleError(_0x4b3e8,null));};exports['create']=function(_0x1c868e,_0x18eb9d){return db['FreshsalesAccount'][_0x3643('0x40')](_0x1c868e[_0x3643('0x41')],{})['then'](respondWithResult(_0x18eb9d,0xc9))['catch'](handleError(_0x18eb9d,null));};exports[_0x3643('0x22')]=function(_0x50b6e2,_0x29cd3d){if(_0x50b6e2[_0x3643('0x41')]['id']){delete _0x50b6e2[_0x3643('0x41')]['id'];}return db['FreshsalesAccount']['find']({'where':{'id':_0x50b6e2['params']['id']}})['then'](handleEntityNotFound(_0x29cd3d,null))[_0x3643('0x23')](saveUpdates(_0x50b6e2[_0x3643('0x41')],null))[_0x3643('0x23')](respondWithResult(_0x29cd3d,null))[_0x3643('0x3c')](handleError(_0x29cd3d,null));};exports['destroy']=function(_0x3f77a7,_0x3ccc93){return db[_0x3643('0x29')][_0x3643('0x3f')]({'where':{'id':_0x3f77a7[_0x3643('0x3e')]['id']}})['then'](handleEntityNotFound(_0x3ccc93,null))[_0x3643('0x23')](removeEntity(_0x3ccc93,null))[_0x3643('0x3c')](handleError(_0x3ccc93,null));};exports[_0x3643('0x42')]=function(_0x539c82,_0x574e2c,_0x231f79){var _0x8a0fc6={};var _0x20be09={};var _0x2524f8;var _0x1972df;return db[_0x3643('0x29')][_0x3643('0x43')]({'where':{'id':_0x539c82[_0x3643('0x3e')]['id']}})[_0x3643('0x23')](handleEntityNotFound(_0x574e2c,null))[_0x3643('0x23')](function(_0x52c644){if(_0x52c644){_0x2524f8=_0x52c644;_0x20be09[_0x3643('0x2c')]=_[_0x3643('0x2d')](db[_0x3643('0x44')][_0x3643('0x45')]);_0x20be09['query']=_[_0x3643('0x2d')](_0x539c82['query']);_0x20be09[_0x3643('0x33')]=_[_0x3643('0x2f')](_0x20be09[_0x3643('0x2c')],_0x20be09[_0x3643('0x2e')]);_0x8a0fc6[_0x3643('0x30')]=_[_0x3643('0x2f')](_0x20be09[_0x3643('0x2c')],qs[_0x3643('0x31')](_0x539c82[_0x3643('0x2e')][_0x3643('0x31')]));_0x8a0fc6[_0x3643('0x30')]=_0x8a0fc6['attributes'][_0x3643('0x46')]?_0x8a0fc6[_0x3643('0x30')]:_0x20be09[_0x3643('0x2c')];_0x8a0fc6[_0x3643('0x47')]=qs[_0x3643('0x48')](_0x539c82[_0x3643('0x2e')][_0x3643('0x48')]);_0x8a0fc6['where']=qs[_0x3643('0x33')](_['pick'](_0x539c82[_0x3643('0x2e')],_0x20be09[_0x3643('0x33')]));if(_0x539c82[_0x3643('0x2e')][_0x3643('0x35')]){_0x8a0fc6[_0x3643('0x38')]=_[_0x3643('0x36')](_0x8a0fc6['where'],{'$or':_[_0x3643('0x28')](_0x8a0fc6[_0x3643('0x30')],function(_0x4e4192){var _0x1d3061={};_0x1d3061[_0x4e4192]={'$like':'%'+_0x539c82[_0x3643('0x2e')][_0x3643('0x35')]+'%'};return _0x1d3061;})});}_0x8a0fc6=_[_0x3643('0x36')]({},_0x8a0fc6,_0x539c82['options']);return _0x2524f8[_0x3643('0x42')](_0x8a0fc6);}})[_0x3643('0x23')](function(_0x49422a){if(_0x49422a){_0x1972df=_0x49422a[_0x3643('0x46')];if(!_0x539c82[_0x3643('0x2e')][_0x3643('0x49')](_0x3643('0x32'))){_0x8a0fc6[_0x3643('0x1b')]=qs[_0x3643('0x1b')](_0x539c82[_0x3643('0x2e')][_0x3643('0x1b')]);_0x8a0fc6['offset']=qs[_0x3643('0x19')](_0x539c82[_0x3643('0x2e')][_0x3643('0x19')]);}return _0x2524f8['getConfigurations'](_0x8a0fc6);}})['then'](function(_0x746ed0){if(_0x746ed0){return _0x746ed0?{'count':_0x1972df,'rows':_0x746ed0}:null;}})[_0x3643('0x23')](respondWithResult(_0x574e2c,null))[_0x3643('0x3c')](handleError(_0x574e2c,null));};exports[_0x3643('0x4a')]=function(_0x59f9ac,_0x1be1d0,_0x50854e){if(_0x59f9ac[_0x3643('0x41')]['id']){delete _0x59f9ac['body']['id'];}return db[_0x3643('0x29')]['findOne']({'where':{'id':_0x59f9ac[_0x3643('0x3e')]['id']}})[_0x3643('0x23')](handleEntityNotFound(_0x1be1d0,null))[_0x3643('0x23')](function(_0x5e6f82){if(_0x5e6f82){_0x59f9ac[_0x3643('0x41')][_0x3643('0x4b')]=_0x5e6f82['id'];_0x59f9ac[_0x3643('0x41')]['Subjects']=integrations['getSubjects'](_0x59f9ac['body'][_0x3643('0x4c')],_0x59f9ac[_0x3643('0x41')][_0x3643('0x2a')]);_0x59f9ac[_0x3643('0x41')][_0x3643('0x4d')]=integrations[_0x3643('0x4e')](_0x59f9ac['body']['channel'],_0x59f9ac[_0x3643('0x41')][_0x3643('0x2a')]);return db[_0x3643('0x44')]['create'](_0x59f9ac['body'],{'include':[{'model':db[_0x3643('0x4f')],'as':'Subjects'},{'model':db[_0x3643('0x4f')],'as':_0x3643('0x4d')}]});}return null;})[_0x3643('0x23')](respondWithResult(_0x1be1d0,null))[_0x3643('0x3c')](handleError(_0x1be1d0,null));};exports[_0x3643('0x50')]=function(_0xd057ce,_0x3afd43,_0x4c2a93){var _0xade8b0='';var _0x549832='';return db['FreshsalesAccount'][_0x3643('0x43')]({'where':{'id':_0xd057ce['params']['id']},'attributes':['id',_0x3643('0x51'),_0x3643('0x52'),'apiKey']})[_0x3643('0x23')](handleEntityNotFound(_0x3afd43,null))[_0x3643('0x23')](function(_0x9386){if(_0x9386){_0x549832=_0x9386['username'];_0xade8b0=_0x9386[_0x3643('0x52')];var _0x4ce0a3=_0x9386[_0x3643('0x52')][_0x3643('0x53')](-0x1);if(_0x4ce0a3==='/'){_0xade8b0=_0xade8b0[_0x3643('0x54')](0x0,_0xade8b0['lastIndexOf'](_0x4ce0a3));}return rp({'method':_0x3643('0x55'),'uri':util[_0x3643('0x56')]('%s%s',_0xade8b0,_0x3643('0x57')),'headers':{'Authorization':'Token\x20token='+_0x9386[_0x3643('0x58')]},'json':!![]});}})[_0x3643('0x23')](function(_0x43855d){if(_0x43855d){var _0x5aeb1a=_0x43855d['users'];var _0x5eaba4=![];var _0x2344c2=null;for(_0x2344c2=0x0;_0x2344c2<_0x5aeb1a[_0x3643('0x46')];_0x2344c2++){if(_0x5aeb1a[_0x2344c2][_0x3643('0x59')]===_0x549832){_0x5eaba4=!![];}}if(_0x5eaba4){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x3643('0x5a')});}}})[_0x3643('0x23')](respondWithResult(_0x3afd43,null))['catch'](function(_0xab709d){var _0x5ded79=_0xd057ce[_0x3643('0x2e')][_0x3643('0x5b')]?0x1f4:_0xab709d['statusCode']||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x5ded79,JSON[_0x3643('0x5c')](_0xab709d));delete _0xab709d[_0x3643('0x26')];if(_0x5ded79===0x191){_0x5ded79=0x190;}_0x3afd43[_0x3643('0x1d')](_0x5ded79)[_0x3643('0x5d')](_0xd057ce[_0x3643('0x2e')][_0x3643('0x5b')]?{'message':'Wrong\x20credentials','statusCode':_0xab709d[_0x3643('0x5e')]}:_0xab709d);});};
\ No newline at end of file
index 8881e57..413fc80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x958a=['moment','bluebird','request-promise','path','../../config/environment','../../components/integrations/configuration','exports','define','FreshsalesAccount','int_freshsales_accounts','lodash','util','api'];(function(_0x104c5c,_0x21a61c){var _0x56d897=function(_0x3ddab2){while(--_0x3ddab2){_0x104c5c['push'](_0x104c5c['shift']());}};_0x56d897(++_0x21a61c);}(_0x958a,0x128));var _0xa958=function(_0x24b399,_0x4333b2){_0x24b399=_0x24b399-0x0;var _0x2a6ccd=_0x958a[_0x24b399];return _0x2a6ccd;};'use strict';var _=require(_0xa958('0x0'));var util=require(_0xa958('0x1'));var logger=require('../../config/logger')(_0xa958('0x2'));var moment=require(_0xa958('0x3'));var BPromise=require(_0xa958('0x4'));var rp=require(_0xa958('0x5'));var fs=require('fs');var path=require(_0xa958('0x6'));var rimraf=require('rimraf');var config=require(_0xa958('0x7'));var attributes=require('./intFreshsalesAccount.attributes');var integrations=require(_0xa958('0x8'));module[_0xa958('0x9')]=function(_0x2692d6,_0x3ddaa9){return _0x2692d6[_0xa958('0xa')](_0xa958('0xb'),attributes,{'tableName':_0xa958('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6a55=['define','FreshsalesAccount','int_freshsales_accounts','lodash','moment','path','../../config/environment','../../components/integrations/configuration','exports'];(function(_0x429948,_0x1a6851){var _0x35d5d1=function(_0x574853){while(--_0x574853){_0x429948['push'](_0x429948['shift']());}};_0x35d5d1(++_0x1a6851);}(_0x6a55,0xdb));var _0x56a5=function(_0x47de9a,_0x40cf23){_0x47de9a=_0x47de9a-0x0;var _0x4b9d6c=_0x6a55[_0x47de9a];return _0x4b9d6c;};'use strict';var _=require(_0x56a5('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x56a5('0x1'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x56a5('0x2'));var rimraf=require('rimraf');var config=require(_0x56a5('0x3'));var attributes=require('./intFreshsalesAccount.attributes');var integrations=require(_0x56a5('0x4'));module[_0x56a5('0x5')]=function(_0x42d164,_0x293ea1){return _0x42d164[_0x56a5('0x6')](_0x56a5('0x7'),attributes,{'tableName':_0x56a5('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2607018..f1f110b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x687b=['bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetFreshsalesAccount','FreshsalesAccount','findAll','options','where','attributes','limit','include','map','model','ShowFreshsalesAccount','find','raw','lodash','util','moment'];(function(_0x288536,_0x369b51){var _0x525e94=function(_0x2fe9db){while(--_0x2fe9db){_0x288536['push'](_0x288536['shift']());}};_0x525e94(++_0x369b51);}(_0x687b,0x14a));var _0xb687=function(_0x2158a8,_0x335f85){_0x2158a8=_0x2158a8-0x0;var _0x4b1071=_0x687b[_0x2158a8];return _0x4b1071;};'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);});});}exports[_0xb687('0x18')]=function(_0x30d370){var _0x5eb9b9=this;return new Promise(function(_0x48958d,_0x12eff1){return db[_0xb687('0x19')][_0xb687('0x1a')]({'raw':_0x30d370['options']?_0x30d370[_0xb687('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x30d370[_0xb687('0x1b')]?_0x30d370[_0xb687('0x1b')][_0xb687('0x1c')]||null:null,'attributes':_0x30d370[_0xb687('0x1b')]?_0x30d370['options'][_0xb687('0x1d')]||null:null,'limit':_0x30d370['options']?_0x30d370[_0xb687('0x1b')][_0xb687('0x1e')]||null:null,'include':_0x30d370[_0xb687('0x1b')]?_0x30d370['options'][_0xb687('0x1f')]?_[_0xb687('0x20')](_0x30d370[_0xb687('0x1b')][_0xb687('0x1f')],function(_0xbf6c58){return{'model':db[_0xbf6c58[_0xb687('0x21')]],'as':_0xbf6c58['as'],'attributes':_0xbf6c58[_0xb687('0x1d')],'include':_0xbf6c58[_0xb687('0x1f')]?_['map'](_0xbf6c58[_0xb687('0x1f')],function(_0x129347){return{'model':db[_0x129347[_0xb687('0x21')]],'as':_0x129347['as'],'attributes':_0x129347[_0xb687('0x1d')],'include':_0x129347[_0xb687('0x1f')]?_[_0xb687('0x20')](_0x129347[_0xb687('0x1f')],function(_0x3cb2f2){return{'model':db[_0x3cb2f2[_0xb687('0x21')]],'as':_0x3cb2f2['as'],'attributes':_0x3cb2f2[_0xb687('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3712cf){logger[_0xb687('0xd')](_0xb687('0x18'),_0x30d370);logger[_0xb687('0x10')](_0xb687('0x18'),_0x30d370,JSON[_0xb687('0x12')](_0x3712cf));_0x48958d(_0x3712cf);})['catch'](function(_0x28b69a){logger['error'](_0xb687('0x18'),_0x28b69a[_0xb687('0x15')],_0x30d370);_0x12eff1(_0x5eb9b9[_0xb687('0x13')](0x1f4,_0x28b69a[_0xb687('0x15')]));});});};exports[_0xb687('0x22')]=function(_0x43d20d){var _0xf1f0dd=this;return new Promise(function(_0x556815,_0x3da2be){return db[_0xb687('0x19')][_0xb687('0x23')]({'raw':_0x43d20d[_0xb687('0x1b')]?_0x43d20d[_0xb687('0x1b')][_0xb687('0x24')]===undefined?!![]:![]:!![],'where':_0x43d20d[_0xb687('0x1b')]?_0x43d20d[_0xb687('0x1b')][_0xb687('0x1c')]||null:null,'attributes':_0x43d20d[_0xb687('0x1b')]?_0x43d20d[_0xb687('0x1b')]['attributes']||null:null,'include':_0x43d20d['options']?_0x43d20d[_0xb687('0x1b')][_0xb687('0x1f')]?_[_0xb687('0x20')](_0x43d20d[_0xb687('0x1b')]['include'],function(_0x4f0b28){return{'model':db[_0x4f0b28[_0xb687('0x21')]],'as':_0x4f0b28['as'],'attributes':_0x4f0b28[_0xb687('0x1d')],'include':_0x4f0b28['include']?_[_0xb687('0x20')](_0x4f0b28[_0xb687('0x1f')],function(_0x548b83){return{'model':db[_0x548b83[_0xb687('0x21')]],'as':_0x548b83['as'],'attributes':_0x548b83['attributes'],'include':_0x548b83[_0xb687('0x1f')]?_[_0xb687('0x20')](_0x548b83[_0xb687('0x1f')],function(_0x3e146a){return{'model':db[_0x3e146a[_0xb687('0x21')]],'as':_0x3e146a['as'],'attributes':_0x3e146a[_0xb687('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x529b1a){logger[_0xb687('0xd')](_0xb687('0x22'),_0x43d20d);logger[_0xb687('0x10')]('ShowFreshsalesAccount',_0x43d20d,JSON[_0xb687('0x12')](_0x529b1a));_0x556815(_0x529b1a);})[_0xb687('0x17')](function(_0x1f1c88){logger[_0xb687('0x13')](_0xb687('0x22'),_0x1f1c88['message'],_0x43d20d);_0x3da2be(_0xf1f0dd[_0xb687('0x13')](0x1f4,_0x1f1c88[_0xb687('0x15')]));});});};
\ No newline at end of file
+var _0x9f0e=['moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetFreshsalesAccount','FreshsalesAccount','findAll','options','raw','limit','include','map','model','attributes','ShowFreshsalesAccount','find','where','lodash','util'];(function(_0x75df3d,_0x253316){var _0x1a866d=function(_0x109ebc){while(--_0x109ebc){_0x75df3d['push'](_0x75df3d['shift']());}};_0x1a866d(++_0x253316);}(_0x9f0e,0x116));var _0xe9f0=function(_0x591cb1,_0xc7ebe){_0x591cb1=_0x591cb1-0x0;var _0x262d0a=_0x9f0e[_0x591cb1];return _0x262d0a;};'use strict';var _=require(_0xe9f0('0x0'));var util=require(_0xe9f0('0x1'));var moment=require(_0xe9f0('0x2'));var BPromise=require(_0xe9f0('0x3'));var rs=require(_0xe9f0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe9f0('0x5'));var logger=require(_0xe9f0('0x6'))(_0xe9f0('0x7'));var config=require(_0xe9f0('0x8'));var jayson=require(_0xe9f0('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3a17b3,_0x167198,_0xe64a79){return new BPromise(function(_0x4be6a6,_0xf4a256){return client[_0xe9f0('0xa')](_0x3a17b3,_0xe64a79)[_0xe9f0('0xb')](function(_0x3386a8){logger[_0xe9f0('0xc')](_0xe9f0('0xd'),_0x167198,_0xe9f0('0xe'));logger[_0xe9f0('0xf')](_0xe9f0('0x10'),_0x167198,'request\x20sent',JSON[_0xe9f0('0x11')](_0x3386a8));if(_0x3386a8[_0xe9f0('0x12')]){if(_0x3386a8[_0xe9f0('0x12')]['code']===0x1f4){logger[_0xe9f0('0x12')]('FreshsalesAccount,\x20%s,\x20%s',_0x167198,_0x3386a8[_0xe9f0('0x12')][_0xe9f0('0x13')]);return _0xf4a256(_0x3386a8[_0xe9f0('0x12')][_0xe9f0('0x13')]);}logger['error'](_0xe9f0('0xd'),_0x167198,_0x3386a8['error'][_0xe9f0('0x13')]);return _0x4be6a6(_0x3386a8[_0xe9f0('0x12')][_0xe9f0('0x13')]);}else{logger['info'](_0xe9f0('0xd'),_0x167198,_0xe9f0('0xe'));_0x4be6a6(_0x3386a8[_0xe9f0('0x14')]['message']);}})[_0xe9f0('0x15')](function(_0x1e16e0){logger[_0xe9f0('0x12')](_0xe9f0('0xd'),_0x167198,_0x1e16e0);_0xf4a256(_0x1e16e0);});});}exports[_0xe9f0('0x16')]=function(_0x2ab12b){var _0x3da237=this;return new Promise(function(_0x59bf5a,_0x15a33b){return db[_0xe9f0('0x17')][_0xe9f0('0x18')]({'raw':_0x2ab12b['options']?_0x2ab12b[_0xe9f0('0x19')][_0xe9f0('0x1a')]===undefined?!![]:![]:!![],'where':_0x2ab12b[_0xe9f0('0x19')]?_0x2ab12b[_0xe9f0('0x19')]['where']||null:null,'attributes':_0x2ab12b[_0xe9f0('0x19')]?_0x2ab12b[_0xe9f0('0x19')]['attributes']||null:null,'limit':_0x2ab12b['options']?_0x2ab12b['options'][_0xe9f0('0x1b')]||null:null,'include':_0x2ab12b[_0xe9f0('0x19')]?_0x2ab12b[_0xe9f0('0x19')][_0xe9f0('0x1c')]?_[_0xe9f0('0x1d')](_0x2ab12b['options'][_0xe9f0('0x1c')],function(_0x38b7ee){return{'model':db[_0x38b7ee[_0xe9f0('0x1e')]],'as':_0x38b7ee['as'],'attributes':_0x38b7ee[_0xe9f0('0x1f')],'include':_0x38b7ee[_0xe9f0('0x1c')]?_[_0xe9f0('0x1d')](_0x38b7ee[_0xe9f0('0x1c')],function(_0x1321bb){return{'model':db[_0x1321bb[_0xe9f0('0x1e')]],'as':_0x1321bb['as'],'attributes':_0x1321bb[_0xe9f0('0x1f')],'include':_0x1321bb['include']?_[_0xe9f0('0x1d')](_0x1321bb[_0xe9f0('0x1c')],function(_0x2ddfba){return{'model':db[_0x2ddfba[_0xe9f0('0x1e')]],'as':_0x2ddfba['as'],'attributes':_0x2ddfba['attributes']};}):[]};}):[]};}):[]:[]})[_0xe9f0('0xb')](function(_0x2613fd){logger[_0xe9f0('0xc')](_0xe9f0('0x16'),_0x2ab12b);logger[_0xe9f0('0xf')]('GetFreshsalesAccount',_0x2ab12b,JSON[_0xe9f0('0x11')](_0x2613fd));_0x59bf5a(_0x2613fd);})[_0xe9f0('0x15')](function(_0x44fb5b){logger[_0xe9f0('0x12')](_0xe9f0('0x16'),_0x44fb5b[_0xe9f0('0x13')],_0x2ab12b);_0x15a33b(_0x3da237[_0xe9f0('0x12')](0x1f4,_0x44fb5b[_0xe9f0('0x13')]));});});};exports[_0xe9f0('0x20')]=function(_0x3dbe49){var _0x22806c=this;return new Promise(function(_0x617ad3,_0x445ad0){return db[_0xe9f0('0x17')][_0xe9f0('0x21')]({'raw':_0x3dbe49[_0xe9f0('0x19')]?_0x3dbe49[_0xe9f0('0x19')][_0xe9f0('0x1a')]===undefined?!![]:![]:!![],'where':_0x3dbe49[_0xe9f0('0x19')]?_0x3dbe49[_0xe9f0('0x19')][_0xe9f0('0x22')]||null:null,'attributes':_0x3dbe49[_0xe9f0('0x19')]?_0x3dbe49[_0xe9f0('0x19')][_0xe9f0('0x1f')]||null:null,'include':_0x3dbe49['options']?_0x3dbe49['options']['include']?_[_0xe9f0('0x1d')](_0x3dbe49['options'][_0xe9f0('0x1c')],function(_0xc5fa13){return{'model':db[_0xc5fa13['model']],'as':_0xc5fa13['as'],'attributes':_0xc5fa13[_0xe9f0('0x1f')],'include':_0xc5fa13['include']?_['map'](_0xc5fa13['include'],function(_0x165440){return{'model':db[_0x165440[_0xe9f0('0x1e')]],'as':_0x165440['as'],'attributes':_0x165440['attributes'],'include':_0x165440[_0xe9f0('0x1c')]?_[_0xe9f0('0x1d')](_0x165440[_0xe9f0('0x1c')],function(_0x4d4186){return{'model':db[_0x4d4186['model']],'as':_0x4d4186['as'],'attributes':_0x4d4186[_0xe9f0('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xe9f0('0xb')](function(_0x1917c8){logger['info'](_0xe9f0('0x20'),_0x3dbe49);logger[_0xe9f0('0xf')](_0xe9f0('0x20'),_0x3dbe49,JSON[_0xe9f0('0x11')](_0x1917c8));_0x617ad3(_0x1917c8);})[_0xe9f0('0x15')](function(_0x552ec2){logger[_0xe9f0('0x12')](_0xe9f0('0x20'),_0x552ec2[_0xe9f0('0x13')],_0x3dbe49);_0x445ad0(_0x22806c['error'](0x1f4,_0x552ec2[_0xe9f0('0x13')]));});});};
\ No newline at end of file
index 8ffdc88..f892c9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2d3=['connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','getSubjects','getDescriptions','/:id/fields','getFields','create','put','update','delete','destroy','exports','multer','util'];(function(_0x4d1758,_0xfb208a){var _0x4fd143=function(_0x24c7ae){while(--_0x24c7ae){_0x4d1758['push'](_0x4d1758['shift']());}};_0x4fd143(++_0xfb208a);}(_0xe2d3,0x1cc));var _0x3e2d=function(_0x1a36a5,_0x746928){_0x1a36a5=_0x1a36a5-0x0;var _0x746243=_0xe2d3[_0x1a36a5];return _0x746243;};'use strict';var multer=require(_0x3e2d('0x0'));var util=require(_0x3e2d('0x1'));var path=require('path');var timeout=require(_0x3e2d('0x2'));var express=require(_0x3e2d('0x3'));var router=express['Router']();var fs_extra=require(_0x3e2d('0x4'));var auth=require(_0x3e2d('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x3e2d('0x6'));var controller=require('./intFreshsalesConfiguration.controller');router[_0x3e2d('0x7')]('/',auth[_0x3e2d('0x8')](),controller[_0x3e2d('0x9')]);router['get'](_0x3e2d('0xa'),auth[_0x3e2d('0x8')](),controller[_0x3e2d('0xb')]);router['get']('/:id/subjects',auth[_0x3e2d('0x8')](),controller[_0x3e2d('0xc')]);router[_0x3e2d('0x7')]('/:id/descriptions',auth[_0x3e2d('0x8')](),controller[_0x3e2d('0xd')]);router[_0x3e2d('0x7')](_0x3e2d('0xe'),auth[_0x3e2d('0x8')](),controller[_0x3e2d('0xf')]);router['post']('/',auth[_0x3e2d('0x8')](),controller[_0x3e2d('0x10')]);router[_0x3e2d('0x11')](_0x3e2d('0xa'),auth['isAuthenticated'](),controller[_0x3e2d('0x12')]);router[_0x3e2d('0x13')](_0x3e2d('0xa'),auth['isAuthenticated'](),controller[_0x3e2d('0x14')]);module[_0x3e2d('0x15')]=router;
\ No newline at end of file
+var _0xb894=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','show','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/fields','getFields','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','Router'];(function(_0x2ebfee,_0x50d69a){var _0x2ff48=function(_0x3925a4){while(--_0x3925a4){_0x2ebfee['push'](_0x2ebfee['shift']());}};_0x2ff48(++_0x50d69a);}(_0xb894,0x91));var _0x4b89=function(_0x314431,_0x1de15b){_0x314431=_0x314431-0x0;var _0x83c3cf=_0xb894[_0x314431];return _0x83c3cf;};'use strict';var multer=require(_0x4b89('0x0'));var util=require(_0x4b89('0x1'));var path=require(_0x4b89('0x2'));var timeout=require(_0x4b89('0x3'));var express=require('express');var router=express[_0x4b89('0x4')]();var fs_extra=require(_0x4b89('0x5'));var auth=require(_0x4b89('0x6'));var interaction=require(_0x4b89('0x7'));var config=require(_0x4b89('0x8'));var controller=require('./intFreshsalesConfiguration.controller');router[_0x4b89('0x9')]('/',auth[_0x4b89('0xa')](),controller['index']);router[_0x4b89('0x9')]('/:id',auth[_0x4b89('0xa')](),controller[_0x4b89('0xb')]);router[_0x4b89('0x9')](_0x4b89('0xc'),auth['isAuthenticated'](),controller[_0x4b89('0xd')]);router['get'](_0x4b89('0xe'),auth['isAuthenticated'](),controller[_0x4b89('0xf')]);router['get'](_0x4b89('0x10'),auth['isAuthenticated'](),controller[_0x4b89('0x11')]);router['post']('/',auth[_0x4b89('0xa')](),controller[_0x4b89('0x12')]);router[_0x4b89('0x13')](_0x4b89('0x14'),auth[_0x4b89('0xa')](),controller[_0x4b89('0x15')]);router[_0x4b89('0x16')](_0x4b89('0x14'),auth[_0x4b89('0xa')](),controller[_0x4b89('0x17')]);module[_0x4b89('0x18')]=router;
\ No newline at end of file
index 2f4d0a3..7527387 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8c5=['STRING','sequelize','exports'];(function(_0x304b67,_0x31cb39){var _0x493afb=function(_0x21dce3){while(--_0x21dce3){_0x304b67['push'](_0x304b67['shift']());}};_0x493afb(++_0x31cb39);}(_0xa8c5,0x85));var _0x5a8c=function(_0xfa680,_0x35ec42){_0xfa680=_0xfa680-0x0;var _0x14ad20=_0xa8c5[_0xfa680];return _0x14ad20;};'use strict';var Sequelize=require(_0x5a8c('0x0'));module[_0x5a8c('0x1')]={'name':{'type':Sequelize[_0x5a8c('0x2')]},'description':{'type':Sequelize[_0x5a8c('0x2')]}};
\ No newline at end of file
+var _0x1703=['STRING','sequelize','exports'];(function(_0x3217d3,_0xf66fcf){var _0x260f43=function(_0x2b4a34){while(--_0x2b4a34){_0x3217d3['push'](_0x3217d3['shift']());}};_0x260f43(++_0xf66fcf);}(_0x1703,0x163));var _0x3170=function(_0x2e544a,_0x301d95){_0x2e544a=_0x2e544a-0x0;var _0x4c627a=_0x1703[_0x2e544a];return _0x4c627a;};'use strict';var Sequelize=require(_0x3170('0x0'));module[_0x3170('0x1')]={'name':{'type':Sequelize[_0x3170('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 50236f0..02fe4ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f56=['create','body','getSubjects','findOne','FreshsalesField','order','getDescriptions','getFields','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','end','sendStatus','stack','name','send','map','FreshsalesConfiguration','type','key','query','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','rawAttributes','keys','options','find'];(function(_0x275dd5,_0x74a00a){var _0x3220a4=function(_0x574f0a){while(--_0x574f0a){_0x275dd5['push'](_0x275dd5['shift']());}};_0x3220a4(++_0x74a00a);}(_0x2f56,0x148));var _0x62f5=function(_0x3bebd3,_0x29be74){_0x3bebd3=_0x3bebd3-0x0;var _0x4f162e=_0x2f56[_0x3bebd3];return _0x4f162e;};'use strict';var emlformat=require(_0x62f5('0x0'));var rimraf=require(_0x62f5('0x1'));var zipdir=require(_0x62f5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x62f5('0x3'));var moment=require(_0x62f5('0x4'));var BPromise=require(_0x62f5('0x5'));var Mustache=require(_0x62f5('0x6'));var util=require('util');var path=require(_0x62f5('0x7'));var sox=require(_0x62f5('0x8'));var csv=require(_0x62f5('0x9'));var ejs=require(_0x62f5('0xa'));var fs=require('fs');var fs_extra=require(_0x62f5('0xb'));var _=require(_0x62f5('0xc'));var squel=require('squel');var crypto=require(_0x62f5('0xd'));var jsforce=require(_0x62f5('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x62f5('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x62f5('0xf'));var authService=require(_0x62f5('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x62f5('0x11'));var hardwareService=require(_0x62f5('0x12'));var logger=require(_0x62f5('0x13'))(_0x62f5('0x14'));var utils=require(_0x62f5('0x15'));var config=require(_0x62f5('0x16'));var licenseUtil=require(_0x62f5('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x45b90f,_0x161ee8){_0x161ee8=_0x161ee8||0xcc;return function(_0x431cbc){if(_0x431cbc){return _0x45b90f['sendStatus'](_0x161ee8);}return _0x45b90f[_0x62f5('0x18')](_0x161ee8)['end']();};}function respondWithResult(_0x4a1429,_0x118fba){_0x118fba=_0x118fba||0xc8;return function(_0x5085df){if(_0x5085df){return _0x4a1429['status'](_0x118fba)[_0x62f5('0x19')](_0x5085df);}};}function respondWithFilteredResult(_0x533c14,_0x278e4b){return function(_0x3b6193){if(_0x3b6193){var _0x187e5f=typeof _0x278e4b[_0x62f5('0x1a')]===_0x62f5('0x1b')&&typeof _0x278e4b[_0x62f5('0x1c')]===_0x62f5('0x1b');var _0x59e4b7=_0x3b6193[_0x62f5('0x1d')];var _0x2f371e=_0x187e5f?0x0:_0x278e4b['offset'];var _0x25b32b=_0x187e5f?_0x3b6193[_0x62f5('0x1d')]:_0x278e4b['offset']+_0x278e4b[_0x62f5('0x1c')];var _0xe5e3c6;if(_0x25b32b>=_0x59e4b7){_0x25b32b=_0x59e4b7;_0xe5e3c6=0xc8;}else{_0xe5e3c6=0xce;}_0x533c14[_0x62f5('0x18')](_0xe5e3c6);return _0x533c14['set'](_0x62f5('0x1e'),_0x2f371e+'-'+_0x25b32b+'/'+_0x59e4b7)['json'](_0x3b6193);}return null;};}function patchUpdates(_0x137246){return function(_0x4d4809){try{jsonpatch[_0x62f5('0x1f')](_0x4d4809,_0x137246,!![]);}catch(_0xf38b5){return BPromise[_0x62f5('0x20')](_0xf38b5);}return _0x4d4809[_0x62f5('0x21')]();};}function saveUpdates(_0x1703cc,_0x1533af){return function(_0x30f747){if(_0x30f747){return _0x30f747[_0x62f5('0x22')](_0x1703cc)[_0x62f5('0x23')](function(_0x5d0597){return _0x5d0597;});}return null;};}function removeEntity(_0x258c65,_0x3681d7){return function(_0x339ea6){if(_0x339ea6){return _0x339ea6[_0x62f5('0x24')]()['then'](function(){_0x258c65[_0x62f5('0x18')](0xcc)[_0x62f5('0x25')]();});}};}function handleEntityNotFound(_0x42b1d7,_0x417866){return function(_0x10b61d){if(!_0x10b61d){_0x42b1d7[_0x62f5('0x26')](0x194);}return _0x10b61d;};}function handleError(_0x26a014,_0x5324b8){_0x5324b8=_0x5324b8||0x1f4;return function(_0x113854){logger['error'](_0x113854[_0x62f5('0x27')]);if(_0x113854[_0x62f5('0x28')]){delete _0x113854[_0x62f5('0x28')];}_0x26a014[_0x62f5('0x18')](_0x5324b8)[_0x62f5('0x29')](_0x113854);};}exports['index']=function(_0x36772a,_0x446c73){var _0x4fbe35={},_0x5aeda5={},_0x20aa99={'count':0x0,'rows':[]};var _0x4b4c12=_[_0x62f5('0x2a')](db[_0x62f5('0x2b')]['rawAttributes'],function(_0x465cd2){return{'name':_0x465cd2['fieldName'],'type':_0x465cd2[_0x62f5('0x2c')][_0x62f5('0x2d')]};});_0x5aeda5['model']=_['map'](_0x4b4c12,_0x62f5('0x28'));_0x5aeda5['query']=_['keys'](_0x36772a[_0x62f5('0x2e')]);_0x5aeda5['filters']=_[_0x62f5('0x2f')](_0x5aeda5[_0x62f5('0x30')],_0x5aeda5[_0x62f5('0x2e')]);_0x4fbe35['attributes']=_['intersection'](_0x5aeda5[_0x62f5('0x30')],qs[_0x62f5('0x31')](_0x36772a[_0x62f5('0x2e')][_0x62f5('0x31')]));_0x4fbe35[_0x62f5('0x32')]=_0x4fbe35[_0x62f5('0x32')][_0x62f5('0x33')]?_0x4fbe35[_0x62f5('0x32')]:_0x5aeda5[_0x62f5('0x30')];if(!_0x36772a[_0x62f5('0x2e')][_0x62f5('0x34')](_0x62f5('0x35'))){_0x4fbe35[_0x62f5('0x1c')]=qs[_0x62f5('0x1c')](_0x36772a[_0x62f5('0x2e')][_0x62f5('0x1c')]);_0x4fbe35[_0x62f5('0x1a')]=qs[_0x62f5('0x1a')](_0x36772a[_0x62f5('0x2e')][_0x62f5('0x1a')]);}_0x4fbe35['order']=qs[_0x62f5('0x36')](_0x36772a[_0x62f5('0x2e')][_0x62f5('0x36')]);_0x4fbe35[_0x62f5('0x37')]=qs[_0x62f5('0x38')](_[_0x62f5('0x39')](_0x36772a[_0x62f5('0x2e')],_0x5aeda5['filters']),_0x4b4c12);if(_0x36772a[_0x62f5('0x2e')][_0x62f5('0x3a')]){_0x4fbe35['where']=_[_0x62f5('0x3b')](_0x4fbe35[_0x62f5('0x37')],{'$or':_[_0x62f5('0x2a')](_0x4b4c12,function(_0x3f8c7e){if(_0x3f8c7e[_0x62f5('0x2c')]!==_0x62f5('0x3c')){var _0x34f9d7={};_0x34f9d7[_0x3f8c7e[_0x62f5('0x28')]]={'$like':'%'+_0x36772a[_0x62f5('0x2e')][_0x62f5('0x3a')]+'%'};return _0x34f9d7;}})});}_0x4fbe35=_['merge']({},_0x4fbe35,_0x36772a['options']);var _0x2b4ca3={'where':_0x4fbe35[_0x62f5('0x37')]};return db[_0x62f5('0x2b')][_0x62f5('0x1d')](_0x2b4ca3)[_0x62f5('0x23')](function(_0x2bfb9b){_0x20aa99[_0x62f5('0x1d')]=_0x2bfb9b;if(_0x36772a[_0x62f5('0x2e')][_0x62f5('0x3d')]){_0x4fbe35[_0x62f5('0x3e')]=[{'all':!![]}];}return db[_0x62f5('0x2b')][_0x62f5('0x3f')](_0x4fbe35);})[_0x62f5('0x23')](function(_0x2e3f46){_0x20aa99[_0x62f5('0x40')]=_0x2e3f46;return _0x20aa99;})['then'](respondWithFilteredResult(_0x446c73,_0x4fbe35))[_0x62f5('0x41')](handleError(_0x446c73,null));};exports[_0x62f5('0x42')]=function(_0x25da5b,_0x5b779a){var _0x27a1df={'raw':![],'where':{'id':_0x25da5b[_0x62f5('0x43')]['id']}},_0x11fa39={};_0x11fa39[_0x62f5('0x30')]=_['keys'](db[_0x62f5('0x2b')][_0x62f5('0x44')]);_0x11fa39[_0x62f5('0x2e')]=_[_0x62f5('0x45')](_0x25da5b[_0x62f5('0x2e')]);_0x11fa39[_0x62f5('0x38')]=_['intersection'](_0x11fa39['model'],_0x11fa39[_0x62f5('0x2e')]);_0x27a1df[_0x62f5('0x32')]=_[_0x62f5('0x2f')](_0x11fa39[_0x62f5('0x30')],qs[_0x62f5('0x31')](_0x25da5b['query'][_0x62f5('0x31')]));_0x27a1df[_0x62f5('0x32')]=_0x27a1df[_0x62f5('0x32')][_0x62f5('0x33')]?_0x27a1df[_0x62f5('0x32')]:_0x11fa39[_0x62f5('0x30')];if(_0x25da5b[_0x62f5('0x2e')][_0x62f5('0x3d')]){_0x27a1df[_0x62f5('0x3e')]=[{'all':!![]}];}_0x27a1df=_['merge']({},_0x27a1df,_0x25da5b[_0x62f5('0x46')]);return db['FreshsalesConfiguration'][_0x62f5('0x47')](_0x27a1df)[_0x62f5('0x23')](handleEntityNotFound(_0x5b779a,null))['then'](respondWithResult(_0x5b779a,null))['catch'](handleError(_0x5b779a,null));};exports[_0x62f5('0x48')]=function(_0x5a2355,_0x200ce1){return db[_0x62f5('0x2b')][_0x62f5('0x48')](_0x5a2355['body'],{})['then'](respondWithResult(_0x200ce1,0xc9))['catch'](handleError(_0x200ce1,null));};exports[_0x62f5('0x22')]=function(_0x4708d7,_0x10edfc){if(_0x4708d7[_0x62f5('0x49')]['id']){delete _0x4708d7[_0x62f5('0x49')]['id'];}return db[_0x62f5('0x2b')]['find']({'where':{'id':_0x4708d7[_0x62f5('0x43')]['id']}})[_0x62f5('0x23')](handleEntityNotFound(_0x10edfc,null))[_0x62f5('0x23')](saveUpdates(_0x4708d7[_0x62f5('0x49')],null))[_0x62f5('0x23')](respondWithResult(_0x10edfc,null))[_0x62f5('0x41')](handleError(_0x10edfc,null));};exports['destroy']=function(_0xfd113f,_0x44dc11){return db[_0x62f5('0x2b')][_0x62f5('0x47')]({'where':{'id':_0xfd113f[_0x62f5('0x43')]['id']}})[_0x62f5('0x23')](handleEntityNotFound(_0x44dc11,null))['then'](removeEntity(_0x44dc11,null))[_0x62f5('0x41')](handleError(_0x44dc11,null));};exports[_0x62f5('0x4a')]=function(_0x589b36,_0x55d201,_0xae60fa){var _0x53812b={};var _0x4e4119={};var _0x43d14e;var _0x3f5282;return db[_0x62f5('0x2b')][_0x62f5('0x4b')]({'where':{'id':_0x589b36['params']['id']}})['then'](handleEntityNotFound(_0x55d201,null))['then'](function(_0x2e477a){if(_0x2e477a){_0x43d14e=_0x2e477a;_0x4e4119['model']=_[_0x62f5('0x45')](db[_0x62f5('0x4c')][_0x62f5('0x44')]);_0x4e4119[_0x62f5('0x2e')]=_[_0x62f5('0x45')](_0x589b36[_0x62f5('0x2e')]);_0x4e4119[_0x62f5('0x38')]=_[_0x62f5('0x2f')](_0x4e4119[_0x62f5('0x30')],_0x4e4119[_0x62f5('0x2e')]);_0x53812b[_0x62f5('0x32')]=_[_0x62f5('0x2f')](_0x4e4119['model'],qs[_0x62f5('0x31')](_0x589b36[_0x62f5('0x2e')][_0x62f5('0x31')]));_0x53812b[_0x62f5('0x32')]=_0x53812b[_0x62f5('0x32')][_0x62f5('0x33')]?_0x53812b[_0x62f5('0x32')]:_0x4e4119['model'];_0x53812b[_0x62f5('0x4d')]=qs[_0x62f5('0x36')](_0x589b36['query'][_0x62f5('0x36')]);_0x53812b[_0x62f5('0x37')]=qs[_0x62f5('0x38')](_['pick'](_0x589b36[_0x62f5('0x2e')],_0x4e4119[_0x62f5('0x38')]));if(_0x589b36[_0x62f5('0x2e')][_0x62f5('0x3a')]){_0x53812b[_0x62f5('0x37')]=_[_0x62f5('0x3b')](_0x53812b[_0x62f5('0x37')],{'$or':_[_0x62f5('0x2a')](_0x53812b['attributes'],function(_0x2fd84f){var _0xfc2bdd={};_0xfc2bdd[_0x2fd84f]={'$like':'%'+_0x589b36[_0x62f5('0x2e')]['filter']+'%'};return _0xfc2bdd;})});}_0x53812b=_[_0x62f5('0x3b')]({},_0x53812b,_0x589b36[_0x62f5('0x46')]);return _0x43d14e[_0x62f5('0x4a')](_0x53812b);}})[_0x62f5('0x23')](function(_0x1626d7){if(_0x1626d7){_0x3f5282=_0x1626d7[_0x62f5('0x33')];if(!_0x589b36[_0x62f5('0x2e')]['hasOwnProperty'](_0x62f5('0x35'))){_0x53812b['limit']=qs['limit'](_0x589b36[_0x62f5('0x2e')][_0x62f5('0x1c')]);_0x53812b[_0x62f5('0x1a')]=qs[_0x62f5('0x1a')](_0x589b36[_0x62f5('0x2e')][_0x62f5('0x1a')]);}return _0x43d14e[_0x62f5('0x4a')](_0x53812b);}})[_0x62f5('0x23')](function(_0x373f6d){if(_0x373f6d){return _0x373f6d?{'count':_0x3f5282,'rows':_0x373f6d}:null;}})['then'](respondWithResult(_0x55d201,null))[_0x62f5('0x41')](handleError(_0x55d201,null));};exports[_0x62f5('0x4e')]=function(_0x446518,_0x4e2b52,_0x5b890b){var _0x1a4d51={};var _0x32bc8f={};var _0x521bc7;var _0x8e3ffb;return db['FreshsalesConfiguration'][_0x62f5('0x4b')]({'where':{'id':_0x446518['params']['id']}})[_0x62f5('0x23')](handleEntityNotFound(_0x4e2b52,null))[_0x62f5('0x23')](function(_0x5f1ee2){if(_0x5f1ee2){_0x521bc7=_0x5f1ee2;_0x32bc8f[_0x62f5('0x30')]=_[_0x62f5('0x45')](db[_0x62f5('0x4c')][_0x62f5('0x44')]);_0x32bc8f[_0x62f5('0x2e')]=_[_0x62f5('0x45')](_0x446518[_0x62f5('0x2e')]);_0x32bc8f[_0x62f5('0x38')]=_[_0x62f5('0x2f')](_0x32bc8f[_0x62f5('0x30')],_0x32bc8f[_0x62f5('0x2e')]);_0x1a4d51['attributes']=_['intersection'](_0x32bc8f['model'],qs[_0x62f5('0x31')](_0x446518['query'][_0x62f5('0x31')]));_0x1a4d51['attributes']=_0x1a4d51[_0x62f5('0x32')]['length']?_0x1a4d51[_0x62f5('0x32')]:_0x32bc8f[_0x62f5('0x30')];_0x1a4d51[_0x62f5('0x4d')]=qs[_0x62f5('0x36')](_0x446518[_0x62f5('0x2e')][_0x62f5('0x36')]);_0x1a4d51[_0x62f5('0x37')]=qs[_0x62f5('0x38')](_[_0x62f5('0x39')](_0x446518[_0x62f5('0x2e')],_0x32bc8f[_0x62f5('0x38')]));if(_0x446518[_0x62f5('0x2e')][_0x62f5('0x3a')]){_0x1a4d51['where']=_[_0x62f5('0x3b')](_0x1a4d51[_0x62f5('0x37')],{'$or':_[_0x62f5('0x2a')](_0x1a4d51[_0x62f5('0x32')],function(_0x5a517f){var _0x4d6b50={};_0x4d6b50[_0x5a517f]={'$like':'%'+_0x446518[_0x62f5('0x2e')]['filter']+'%'};return _0x4d6b50;})});}_0x1a4d51=_[_0x62f5('0x3b')]({},_0x1a4d51,_0x446518[_0x62f5('0x46')]);return _0x521bc7[_0x62f5('0x4e')](_0x1a4d51);}})['then'](function(_0x529c62){if(_0x529c62){_0x8e3ffb=_0x529c62[_0x62f5('0x33')];if(!_0x446518[_0x62f5('0x2e')]['hasOwnProperty']('nolimit')){_0x1a4d51[_0x62f5('0x1c')]=qs['limit'](_0x446518['query'][_0x62f5('0x1c')]);_0x1a4d51[_0x62f5('0x1a')]=qs[_0x62f5('0x1a')](_0x446518[_0x62f5('0x2e')][_0x62f5('0x1a')]);}return _0x521bc7[_0x62f5('0x4e')](_0x1a4d51);}})['then'](function(_0xad9d15){if(_0xad9d15){return _0xad9d15?{'count':_0x8e3ffb,'rows':_0xad9d15}:null;}})[_0x62f5('0x23')](respondWithResult(_0x4e2b52,null))['catch'](handleError(_0x4e2b52,null));};exports['getFields']=function(_0x2b152a,_0x6c1667,_0x145c8f){var _0x25cb6d={};var _0x4fd604={};var _0x27c54f;var _0x4324c0;return db['FreshsalesConfiguration'][_0x62f5('0x4b')]({'where':{'id':_0x2b152a[_0x62f5('0x43')]['id']}})[_0x62f5('0x23')](handleEntityNotFound(_0x6c1667,null))[_0x62f5('0x23')](function(_0x6ac995){if(_0x6ac995){_0x27c54f=_0x6ac995;_0x4fd604[_0x62f5('0x30')]=_[_0x62f5('0x45')](db[_0x62f5('0x4c')][_0x62f5('0x44')]);_0x4fd604[_0x62f5('0x2e')]=_[_0x62f5('0x45')](_0x2b152a[_0x62f5('0x2e')]);_0x4fd604['filters']=_[_0x62f5('0x2f')](_0x4fd604[_0x62f5('0x30')],_0x4fd604[_0x62f5('0x2e')]);_0x25cb6d[_0x62f5('0x32')]=_[_0x62f5('0x2f')](_0x4fd604[_0x62f5('0x30')],qs['fields'](_0x2b152a[_0x62f5('0x2e')][_0x62f5('0x31')]));_0x25cb6d[_0x62f5('0x32')]=_0x25cb6d[_0x62f5('0x32')]['length']?_0x25cb6d[_0x62f5('0x32')]:_0x4fd604['model'];_0x25cb6d[_0x62f5('0x4d')]=qs['sort'](_0x2b152a[_0x62f5('0x2e')][_0x62f5('0x36')]);_0x25cb6d[_0x62f5('0x37')]=qs[_0x62f5('0x38')](_[_0x62f5('0x39')](_0x2b152a[_0x62f5('0x2e')],_0x4fd604[_0x62f5('0x38')]));if(_0x2b152a[_0x62f5('0x2e')]['filter']){_0x25cb6d['where']=_['merge'](_0x25cb6d[_0x62f5('0x37')],{'$or':_[_0x62f5('0x2a')](_0x25cb6d['attributes'],function(_0x4045c2){var _0x558c9c={};_0x558c9c[_0x4045c2]={'$like':'%'+_0x2b152a[_0x62f5('0x2e')]['filter']+'%'};return _0x558c9c;})});}_0x25cb6d=_[_0x62f5('0x3b')]({},_0x25cb6d,_0x2b152a[_0x62f5('0x46')]);return _0x27c54f[_0x62f5('0x4f')](_0x25cb6d);}})['then'](function(_0x583739){if(_0x583739){_0x4324c0=_0x583739[_0x62f5('0x33')];if(!_0x2b152a['query']['hasOwnProperty'](_0x62f5('0x35'))){_0x25cb6d[_0x62f5('0x1c')]=qs[_0x62f5('0x1c')](_0x2b152a['query'][_0x62f5('0x1c')]);_0x25cb6d[_0x62f5('0x1a')]=qs[_0x62f5('0x1a')](_0x2b152a['query'][_0x62f5('0x1a')]);}return _0x27c54f[_0x62f5('0x4f')](_0x25cb6d);}})[_0x62f5('0x23')](function(_0x32bbac){if(_0x32bbac){return _0x32bbac?{'count':_0x4324c0,'rows':_0x32bbac}:null;}})[_0x62f5('0x23')](respondWithResult(_0x6c1667,null))[_0x62f5('0x41')](handleError(_0x6c1667,null));};
\ No newline at end of file
+var _0x0175=['count','set','apply','save','update','then','destroy','error','name','send','map','rawAttributes','fieldName','query','keys','intersection','model','fields','attributes','hasOwnProperty','order','sort','where','filters','filter','type','merge','FreshsalesConfiguration','includeAll','include','findAll','rows','catch','show','params','length','create','body','find','getSubjects','findOne','FreshsalesField','pick','options','nolimit','getDescriptions','getFields','eml-format','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit'];(function(_0x17ed56,_0x18b11e){var _0x20517e=function(_0x21b89c){while(--_0x21b89c){_0x17ed56['push'](_0x17ed56['shift']());}};_0x20517e(++_0x18b11e);}(_0x0175,0x110));var _0x5017=function(_0x4e9d3c,_0x1f4b98){_0x4e9d3c=_0x4e9d3c-0x0;var _0x2d0825=_0x0175[_0x4e9d3c];return _0x2d0825;};'use strict';var emlformat=require(_0x5017('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5017('0x1'));var rp=require(_0x5017('0x2'));var moment=require(_0x5017('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5017('0x4'));var util=require('util');var path=require(_0x5017('0x5'));var sox=require(_0x5017('0x6'));var csv=require(_0x5017('0x7'));var ejs=require(_0x5017('0x8'));var fs=require('fs');var fs_extra=require(_0x5017('0x9'));var _=require(_0x5017('0xa'));var squel=require(_0x5017('0xb'));var crypto=require(_0x5017('0xc'));var jsforce=require(_0x5017('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x5017('0x7'));var querystring=require(_0x5017('0xe'));var Papa=require(_0x5017('0xf'));var Redis=require('ioredis');var authService=require(_0x5017('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x5017('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x5017('0x12'));var config=require(_0x5017('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x5017('0x14'))['db'];function respondWithStatusCode(_0x55066a,_0x4449cd){_0x4449cd=_0x4449cd||0xcc;return function(_0x3c125d){if(_0x3c125d){return _0x55066a[_0x5017('0x15')](_0x4449cd);}return _0x55066a[_0x5017('0x16')](_0x4449cd)[_0x5017('0x17')]();};}function respondWithResult(_0xee15b,_0x3bde92){_0x3bde92=_0x3bde92||0xc8;return function(_0x168878){if(_0x168878){return _0xee15b['status'](_0x3bde92)[_0x5017('0x18')](_0x168878);}};}function respondWithFilteredResult(_0x341f03,_0x492bc8){return function(_0x5ca722){if(_0x5ca722){var _0x5a74f1=typeof _0x492bc8[_0x5017('0x19')]===_0x5017('0x1a')&&typeof _0x492bc8[_0x5017('0x1b')]===_0x5017('0x1a');var _0x53b1d1=_0x5ca722[_0x5017('0x1c')];var _0x379b12=_0x5a74f1?0x0:_0x492bc8['offset'];var _0x3af41a=_0x5a74f1?_0x5ca722[_0x5017('0x1c')]:_0x492bc8['offset']+_0x492bc8[_0x5017('0x1b')];var _0x25e229;if(_0x3af41a>=_0x53b1d1){_0x3af41a=_0x53b1d1;_0x25e229=0xc8;}else{_0x25e229=0xce;}_0x341f03[_0x5017('0x16')](_0x25e229);return _0x341f03[_0x5017('0x1d')]('Content-Range',_0x379b12+'-'+_0x3af41a+'/'+_0x53b1d1)[_0x5017('0x18')](_0x5ca722);}return null;};}function patchUpdates(_0x3dd003){return function(_0xac9be0){try{jsonpatch[_0x5017('0x1e')](_0xac9be0,_0x3dd003,!![]);}catch(_0x49016e){return BPromise['reject'](_0x49016e);}return _0xac9be0[_0x5017('0x1f')]();};}function saveUpdates(_0x2801fb,_0x42d7ed){return function(_0x5106fb){if(_0x5106fb){return _0x5106fb[_0x5017('0x20')](_0x2801fb)[_0x5017('0x21')](function(_0x11424a){return _0x11424a;});}return null;};}function removeEntity(_0x3723df,_0x210cfd){return function(_0x456d0b){if(_0x456d0b){return _0x456d0b[_0x5017('0x22')]()[_0x5017('0x21')](function(){_0x3723df[_0x5017('0x16')](0xcc)[_0x5017('0x17')]();});}};}function handleEntityNotFound(_0xc9fc8a,_0x27ce2c){return function(_0x59616c){if(!_0x59616c){_0xc9fc8a[_0x5017('0x15')](0x194);}return _0x59616c;};}function handleError(_0x2641cf,_0x245944){_0x245944=_0x245944||0x1f4;return function(_0x2f2bab){logger[_0x5017('0x23')](_0x2f2bab['stack']);if(_0x2f2bab['name']){delete _0x2f2bab[_0x5017('0x24')];}_0x2641cf[_0x5017('0x16')](_0x245944)[_0x5017('0x25')](_0x2f2bab);};}exports['index']=function(_0x1d0ee7,_0x40fbaa){var _0x276e92={},_0x5acc19={},_0x31bbcf={'count':0x0,'rows':[]};var _0x98a49b=_[_0x5017('0x26')](db['FreshsalesConfiguration'][_0x5017('0x27')],function(_0x594b0d){return{'name':_0x594b0d[_0x5017('0x28')],'type':_0x594b0d['type']['key']};});_0x5acc19['model']=_['map'](_0x98a49b,_0x5017('0x24'));_0x5acc19[_0x5017('0x29')]=_[_0x5017('0x2a')](_0x1d0ee7[_0x5017('0x29')]);_0x5acc19['filters']=_[_0x5017('0x2b')](_0x5acc19[_0x5017('0x2c')],_0x5acc19[_0x5017('0x29')]);_0x276e92['attributes']=_['intersection'](_0x5acc19[_0x5017('0x2c')],qs[_0x5017('0x2d')](_0x1d0ee7[_0x5017('0x29')][_0x5017('0x2d')]));_0x276e92['attributes']=_0x276e92[_0x5017('0x2e')]['length']?_0x276e92[_0x5017('0x2e')]:_0x5acc19['model'];if(!_0x1d0ee7[_0x5017('0x29')][_0x5017('0x2f')]('nolimit')){_0x276e92[_0x5017('0x1b')]=qs[_0x5017('0x1b')](_0x1d0ee7[_0x5017('0x29')][_0x5017('0x1b')]);_0x276e92[_0x5017('0x19')]=qs[_0x5017('0x19')](_0x1d0ee7[_0x5017('0x29')][_0x5017('0x19')]);}_0x276e92[_0x5017('0x30')]=qs[_0x5017('0x31')](_0x1d0ee7[_0x5017('0x29')]['sort']);_0x276e92[_0x5017('0x32')]=qs[_0x5017('0x33')](_['pick'](_0x1d0ee7[_0x5017('0x29')],_0x5acc19['filters']),_0x98a49b);if(_0x1d0ee7[_0x5017('0x29')][_0x5017('0x34')]){_0x276e92[_0x5017('0x32')]=_['merge'](_0x276e92[_0x5017('0x32')],{'$or':_[_0x5017('0x26')](_0x98a49b,function(_0x404fb3){if(_0x404fb3[_0x5017('0x35')]!=='VIRTUAL'){var _0x1eabc3={};_0x1eabc3[_0x404fb3['name']]={'$like':'%'+_0x1d0ee7[_0x5017('0x29')][_0x5017('0x34')]+'%'};return _0x1eabc3;}})});}_0x276e92=_[_0x5017('0x36')]({},_0x276e92,_0x1d0ee7['options']);var _0x1ed959={'where':_0x276e92[_0x5017('0x32')]};return db[_0x5017('0x37')]['count'](_0x1ed959)['then'](function(_0x5416be){_0x31bbcf[_0x5017('0x1c')]=_0x5416be;if(_0x1d0ee7['query'][_0x5017('0x38')]){_0x276e92[_0x5017('0x39')]=[{'all':!![]}];}return db[_0x5017('0x37')][_0x5017('0x3a')](_0x276e92);})[_0x5017('0x21')](function(_0xa8be8){_0x31bbcf[_0x5017('0x3b')]=_0xa8be8;return _0x31bbcf;})[_0x5017('0x21')](respondWithFilteredResult(_0x40fbaa,_0x276e92))[_0x5017('0x3c')](handleError(_0x40fbaa,null));};exports[_0x5017('0x3d')]=function(_0x2e1664,_0x6bda2d){var _0x34b4dc={'raw':![],'where':{'id':_0x2e1664[_0x5017('0x3e')]['id']}},_0x38eb30={};_0x38eb30[_0x5017('0x2c')]=_[_0x5017('0x2a')](db['FreshsalesConfiguration'][_0x5017('0x27')]);_0x38eb30[_0x5017('0x29')]=_[_0x5017('0x2a')](_0x2e1664['query']);_0x38eb30[_0x5017('0x33')]=_['intersection'](_0x38eb30['model'],_0x38eb30[_0x5017('0x29')]);_0x34b4dc['attributes']=_[_0x5017('0x2b')](_0x38eb30[_0x5017('0x2c')],qs[_0x5017('0x2d')](_0x2e1664[_0x5017('0x29')][_0x5017('0x2d')]));_0x34b4dc['attributes']=_0x34b4dc[_0x5017('0x2e')][_0x5017('0x3f')]?_0x34b4dc['attributes']:_0x38eb30['model'];if(_0x2e1664['query'][_0x5017('0x38')]){_0x34b4dc[_0x5017('0x39')]=[{'all':!![]}];}_0x34b4dc=_['merge']({},_0x34b4dc,_0x2e1664['options']);return db['FreshsalesConfiguration']['find'](_0x34b4dc)[_0x5017('0x21')](handleEntityNotFound(_0x6bda2d,null))[_0x5017('0x21')](respondWithResult(_0x6bda2d,null))[_0x5017('0x3c')](handleError(_0x6bda2d,null));};exports[_0x5017('0x40')]=function(_0x5c4793,_0x57e499){return db[_0x5017('0x37')][_0x5017('0x40')](_0x5c4793['body'],{})[_0x5017('0x21')](respondWithResult(_0x57e499,0xc9))['catch'](handleError(_0x57e499,null));};exports[_0x5017('0x20')]=function(_0x2d0843,_0x4c96d0){if(_0x2d0843[_0x5017('0x41')]['id']){delete _0x2d0843[_0x5017('0x41')]['id'];}return db['FreshsalesConfiguration'][_0x5017('0x42')]({'where':{'id':_0x2d0843[_0x5017('0x3e')]['id']}})[_0x5017('0x21')](handleEntityNotFound(_0x4c96d0,null))[_0x5017('0x21')](saveUpdates(_0x2d0843[_0x5017('0x41')],null))['then'](respondWithResult(_0x4c96d0,null))[_0x5017('0x3c')](handleError(_0x4c96d0,null));};exports[_0x5017('0x22')]=function(_0x2ba6ad,_0x52b53d){return db[_0x5017('0x37')][_0x5017('0x42')]({'where':{'id':_0x2ba6ad[_0x5017('0x3e')]['id']}})['then'](handleEntityNotFound(_0x52b53d,null))[_0x5017('0x21')](removeEntity(_0x52b53d,null))[_0x5017('0x3c')](handleError(_0x52b53d,null));};exports[_0x5017('0x43')]=function(_0x5a64a9,_0xd2f9e3,_0x253ea0){var _0x4a1575={};var _0xf6cf12={};var _0x279b4d;var _0x4771bb;return db[_0x5017('0x37')][_0x5017('0x44')]({'where':{'id':_0x5a64a9[_0x5017('0x3e')]['id']}})['then'](handleEntityNotFound(_0xd2f9e3,null))[_0x5017('0x21')](function(_0x4aa6ff){if(_0x4aa6ff){_0x279b4d=_0x4aa6ff;_0xf6cf12[_0x5017('0x2c')]=_['keys'](db[_0x5017('0x45')][_0x5017('0x27')]);_0xf6cf12[_0x5017('0x29')]=_[_0x5017('0x2a')](_0x5a64a9[_0x5017('0x29')]);_0xf6cf12[_0x5017('0x33')]=_[_0x5017('0x2b')](_0xf6cf12[_0x5017('0x2c')],_0xf6cf12[_0x5017('0x29')]);_0x4a1575['attributes']=_['intersection'](_0xf6cf12[_0x5017('0x2c')],qs[_0x5017('0x2d')](_0x5a64a9[_0x5017('0x29')]['fields']));_0x4a1575[_0x5017('0x2e')]=_0x4a1575[_0x5017('0x2e')][_0x5017('0x3f')]?_0x4a1575[_0x5017('0x2e')]:_0xf6cf12[_0x5017('0x2c')];_0x4a1575[_0x5017('0x30')]=qs[_0x5017('0x31')](_0x5a64a9[_0x5017('0x29')][_0x5017('0x31')]);_0x4a1575[_0x5017('0x32')]=qs[_0x5017('0x33')](_[_0x5017('0x46')](_0x5a64a9[_0x5017('0x29')],_0xf6cf12['filters']));if(_0x5a64a9[_0x5017('0x29')][_0x5017('0x34')]){_0x4a1575[_0x5017('0x32')]=_[_0x5017('0x36')](_0x4a1575[_0x5017('0x32')],{'$or':_[_0x5017('0x26')](_0x4a1575['attributes'],function(_0x379e4e){var _0x2f79f8={};_0x2f79f8[_0x379e4e]={'$like':'%'+_0x5a64a9[_0x5017('0x29')][_0x5017('0x34')]+'%'};return _0x2f79f8;})});}_0x4a1575=_[_0x5017('0x36')]({},_0x4a1575,_0x5a64a9[_0x5017('0x47')]);return _0x279b4d[_0x5017('0x43')](_0x4a1575);}})['then'](function(_0x20c019){if(_0x20c019){_0x4771bb=_0x20c019[_0x5017('0x3f')];if(!_0x5a64a9[_0x5017('0x29')]['hasOwnProperty'](_0x5017('0x48'))){_0x4a1575[_0x5017('0x1b')]=qs[_0x5017('0x1b')](_0x5a64a9[_0x5017('0x29')][_0x5017('0x1b')]);_0x4a1575[_0x5017('0x19')]=qs[_0x5017('0x19')](_0x5a64a9[_0x5017('0x29')][_0x5017('0x19')]);}return _0x279b4d[_0x5017('0x43')](_0x4a1575);}})['then'](function(_0x253b2f){if(_0x253b2f){return _0x253b2f?{'count':_0x4771bb,'rows':_0x253b2f}:null;}})[_0x5017('0x21')](respondWithResult(_0xd2f9e3,null))[_0x5017('0x3c')](handleError(_0xd2f9e3,null));};exports['getDescriptions']=function(_0xf73cd3,_0x118303,_0x6d41c6){var _0x56f379={};var _0x4e5c62={};var _0x4bcaac;var _0xd05a9a;return db[_0x5017('0x37')]['findOne']({'where':{'id':_0xf73cd3[_0x5017('0x3e')]['id']}})[_0x5017('0x21')](handleEntityNotFound(_0x118303,null))[_0x5017('0x21')](function(_0x56ef30){if(_0x56ef30){_0x4bcaac=_0x56ef30;_0x4e5c62[_0x5017('0x2c')]=_['keys'](db[_0x5017('0x45')]['rawAttributes']);_0x4e5c62[_0x5017('0x29')]=_['keys'](_0xf73cd3[_0x5017('0x29')]);_0x4e5c62[_0x5017('0x33')]=_[_0x5017('0x2b')](_0x4e5c62[_0x5017('0x2c')],_0x4e5c62[_0x5017('0x29')]);_0x56f379[_0x5017('0x2e')]=_[_0x5017('0x2b')](_0x4e5c62[_0x5017('0x2c')],qs[_0x5017('0x2d')](_0xf73cd3[_0x5017('0x29')]['fields']));_0x56f379[_0x5017('0x2e')]=_0x56f379['attributes'][_0x5017('0x3f')]?_0x56f379[_0x5017('0x2e')]:_0x4e5c62[_0x5017('0x2c')];_0x56f379['order']=qs[_0x5017('0x31')](_0xf73cd3['query'][_0x5017('0x31')]);_0x56f379[_0x5017('0x32')]=qs[_0x5017('0x33')](_[_0x5017('0x46')](_0xf73cd3[_0x5017('0x29')],_0x4e5c62[_0x5017('0x33')]));if(_0xf73cd3[_0x5017('0x29')][_0x5017('0x34')]){_0x56f379[_0x5017('0x32')]=_['merge'](_0x56f379[_0x5017('0x32')],{'$or':_[_0x5017('0x26')](_0x56f379[_0x5017('0x2e')],function(_0x26b26e){var _0x329b5b={};_0x329b5b[_0x26b26e]={'$like':'%'+_0xf73cd3['query'][_0x5017('0x34')]+'%'};return _0x329b5b;})});}_0x56f379=_[_0x5017('0x36')]({},_0x56f379,_0xf73cd3[_0x5017('0x47')]);return _0x4bcaac['getDescriptions'](_0x56f379);}})['then'](function(_0x2d6d6c){if(_0x2d6d6c){_0xd05a9a=_0x2d6d6c['length'];if(!_0xf73cd3[_0x5017('0x29')]['hasOwnProperty']('nolimit')){_0x56f379['limit']=qs['limit'](_0xf73cd3[_0x5017('0x29')][_0x5017('0x1b')]);_0x56f379[_0x5017('0x19')]=qs[_0x5017('0x19')](_0xf73cd3[_0x5017('0x29')]['offset']);}return _0x4bcaac[_0x5017('0x49')](_0x56f379);}})[_0x5017('0x21')](function(_0x30027f){if(_0x30027f){return _0x30027f?{'count':_0xd05a9a,'rows':_0x30027f}:null;}})[_0x5017('0x21')](respondWithResult(_0x118303,null))[_0x5017('0x3c')](handleError(_0x118303,null));};exports[_0x5017('0x4a')]=function(_0x22867c,_0x1c2402,_0x2fa2ea){var _0x4f8061={};var _0x861731={};var _0x28d813;var _0x2e3e1b;return db['FreshsalesConfiguration'][_0x5017('0x44')]({'where':{'id':_0x22867c[_0x5017('0x3e')]['id']}})[_0x5017('0x21')](handleEntityNotFound(_0x1c2402,null))[_0x5017('0x21')](function(_0x2007b2){if(_0x2007b2){_0x28d813=_0x2007b2;_0x861731[_0x5017('0x2c')]=_['keys'](db[_0x5017('0x45')]['rawAttributes']);_0x861731[_0x5017('0x29')]=_[_0x5017('0x2a')](_0x22867c['query']);_0x861731[_0x5017('0x33')]=_['intersection'](_0x861731[_0x5017('0x2c')],_0x861731[_0x5017('0x29')]);_0x4f8061[_0x5017('0x2e')]=_[_0x5017('0x2b')](_0x861731['model'],qs[_0x5017('0x2d')](_0x22867c[_0x5017('0x29')][_0x5017('0x2d')]));_0x4f8061[_0x5017('0x2e')]=_0x4f8061[_0x5017('0x2e')]['length']?_0x4f8061[_0x5017('0x2e')]:_0x861731['model'];_0x4f8061[_0x5017('0x30')]=qs['sort'](_0x22867c[_0x5017('0x29')][_0x5017('0x31')]);_0x4f8061[_0x5017('0x32')]=qs[_0x5017('0x33')](_['pick'](_0x22867c['query'],_0x861731[_0x5017('0x33')]));if(_0x22867c[_0x5017('0x29')][_0x5017('0x34')]){_0x4f8061[_0x5017('0x32')]=_['merge'](_0x4f8061['where'],{'$or':_[_0x5017('0x26')](_0x4f8061[_0x5017('0x2e')],function(_0xaa3dd6){var _0x4696c5={};_0x4696c5[_0xaa3dd6]={'$like':'%'+_0x22867c[_0x5017('0x29')][_0x5017('0x34')]+'%'};return _0x4696c5;})});}_0x4f8061=_['merge']({},_0x4f8061,_0x22867c[_0x5017('0x47')]);return _0x28d813[_0x5017('0x4a')](_0x4f8061);}})[_0x5017('0x21')](function(_0x13a550){if(_0x13a550){_0x2e3e1b=_0x13a550[_0x5017('0x3f')];if(!_0x22867c[_0x5017('0x29')][_0x5017('0x2f')]('nolimit')){_0x4f8061[_0x5017('0x1b')]=qs['limit'](_0x22867c['query'][_0x5017('0x1b')]);_0x4f8061[_0x5017('0x19')]=qs[_0x5017('0x19')](_0x22867c[_0x5017('0x29')][_0x5017('0x19')]);}return _0x28d813[_0x5017('0x4a')](_0x4f8061);}})[_0x5017('0x21')](function(_0x1faf89){if(_0x1faf89){return _0x1faf89?{'count':_0x2e3e1b,'rows':_0x1faf89}:null;}})[_0x5017('0x21')](respondWithResult(_0x1c2402,null))['catch'](handleError(_0x1c2402,null));};
\ No newline at end of file
index da303ce..9605663 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb23b=['int_freshsales_configurations','lodash','util','../../config/logger','moment','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','exports','define','FreshsalesConfiguration'];(function(_0x20c49d,_0x2ec8f1){var _0x1df719=function(_0x29f3e8){while(--_0x29f3e8){_0x20c49d['push'](_0x20c49d['shift']());}};_0x1df719(++_0x2ec8f1);}(_0xb23b,0x139));var _0xbb23=function(_0x320296,_0x245139){_0x320296=_0x320296-0x0;var _0x31d05a=_0xb23b[_0x320296];return _0x31d05a;};'use strict';var _=require(_0xbb23('0x0'));var util=require(_0xbb23('0x1'));var logger=require(_0xbb23('0x2'))('api');var moment=require(_0xbb23('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xbb23('0x4'));var rimraf=require(_0xbb23('0x5'));var config=require(_0xbb23('0x6'));var attributes=require(_0xbb23('0x7'));module[_0xbb23('0x8')]=function(_0x1487a3,_0xb4a510){return _0x1487a3[_0xbb23('0x9')](_0xbb23('0xa'),attributes,{'tableName':_0xbb23('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x874d=['util','../../config/logger','api','moment','request-promise','path','../../config/environment','./intFreshsalesConfiguration.attributes','exports','define','FreshsalesConfiguration'];(function(_0x574690,_0x31d173){var _0x4231ae=function(_0x2527c3){while(--_0x2527c3){_0x574690['push'](_0x574690['shift']());}};_0x4231ae(++_0x31d173);}(_0x874d,0x1ef));var _0xd874=function(_0x295314,_0x17b250){_0x295314=_0x295314-0x0;var _0x584b0c=_0x874d[_0x295314];return _0x584b0c;};'use strict';var _=require('lodash');var util=require(_0xd874('0x0'));var logger=require(_0xd874('0x1'))(_0xd874('0x2'));var moment=require(_0xd874('0x3'));var BPromise=require('bluebird');var rp=require(_0xd874('0x4'));var fs=require('fs');var path=require(_0xd874('0x5'));var rimraf=require('rimraf');var config=require(_0xd874('0x6'));var attributes=require(_0xd874('0x7'));module[_0xd874('0x8')]=function(_0x32c7e8,_0x194cbc){return _0x32c7e8[_0xd874('0x9')](_0xd874('0xa'),attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 53e42ee..e952724 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3038=['jayson/promise','client','http','request','then','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x500a4f,_0x573926){var _0x1d263d=function(_0x14964e){while(--_0x14964e){_0x500a4f['push'](_0x500a4f['shift']());}};_0x1d263d(++_0x573926);}(_0x3038,0xab));var _0x8303=function(_0x9307ea,_0x38968a){_0x9307ea=_0x9307ea-0x0;var _0x295554=_0x3038[_0x9307ea];return _0x295554;};'use strict';var _=require(_0x8303('0x0'));var util=require(_0x8303('0x1'));var moment=require(_0x8303('0x2'));var BPromise=require(_0x8303('0x3'));var rs=require(_0x8303('0x4'));var fs=require('fs');var Redis=require(_0x8303('0x5'));var db=require(_0x8303('0x6'))['db'];var utils=require(_0x8303('0x7'));var logger=require(_0x8303('0x8'))(_0x8303('0x9'));var config=require(_0x8303('0xa'));var jayson=require(_0x8303('0xb'));var client=jayson[_0x8303('0xc')][_0x8303('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x357028,_0x51940f,_0x27a70b){return new BPromise(function(_0x343a1f,_0x17339c){return client[_0x8303('0xe')](_0x357028,_0x27a70b)[_0x8303('0xf')](function(_0x2279db){logger[_0x8303('0x10')](_0x8303('0x11'),_0x51940f,_0x8303('0x12'));logger[_0x8303('0x13')](_0x8303('0x14'),_0x51940f,'request\x20sent',JSON[_0x8303('0x15')](_0x2279db));if(_0x2279db[_0x8303('0x16')]){if(_0x2279db[_0x8303('0x16')]['code']===0x1f4){logger[_0x8303('0x16')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x51940f,_0x2279db['error']['message']);return _0x17339c(_0x2279db[_0x8303('0x16')][_0x8303('0x17')]);}logger[_0x8303('0x16')](_0x8303('0x11'),_0x51940f,_0x2279db['error'][_0x8303('0x17')]);return _0x343a1f(_0x2279db[_0x8303('0x16')][_0x8303('0x17')]);}else{logger[_0x8303('0x10')](_0x8303('0x11'),_0x51940f,_0x8303('0x12'));_0x343a1f(_0x2279db[_0x8303('0x18')]['message']);}})[_0x8303('0x19')](function(_0xf77abe){logger[_0x8303('0x16')](_0x8303('0x11'),_0x51940f,_0xf77abe);_0x17339c(_0xf77abe);});});}
\ No newline at end of file
+var _0x9fc2=['../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x467ae1,_0x191cc0){var _0x10fb79=function(_0x522e31){while(--_0x522e31){_0x467ae1['push'](_0x467ae1['shift']());}};_0x10fb79(++_0x191cc0);}(_0x9fc2,0x11a));var _0x29fc=function(_0x4ac04d,_0x3afda5){_0x4ac04d=_0x4ac04d-0x0;var _0x4c3c04=_0x9fc2[_0x4ac04d];return _0x4c3c04;};'use strict';var _=require(_0x29fc('0x0'));var util=require(_0x29fc('0x1'));var moment=require(_0x29fc('0x2'));var BPromise=require(_0x29fc('0x3'));var rs=require(_0x29fc('0x4'));var fs=require('fs');var Redis=require(_0x29fc('0x5'));var db=require(_0x29fc('0x6'))['db'];var utils=require(_0x29fc('0x7'));var logger=require(_0x29fc('0x8'))(_0x29fc('0x9'));var config=require('../../config/environment');var jayson=require(_0x29fc('0xa'));var client=jayson[_0x29fc('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41cb72,_0x16bdc8,_0x360234){return new BPromise(function(_0x20497c,_0x178a12){return client[_0x29fc('0xc')](_0x41cb72,_0x360234)['then'](function(_0x3a2fba){logger[_0x29fc('0xd')](_0x29fc('0xe'),_0x16bdc8,_0x29fc('0xf'));logger[_0x29fc('0x10')](_0x29fc('0x11'),_0x16bdc8,'request\x20sent',JSON[_0x29fc('0x12')](_0x3a2fba));if(_0x3a2fba[_0x29fc('0x13')]){if(_0x3a2fba[_0x29fc('0x13')][_0x29fc('0x14')]===0x1f4){logger[_0x29fc('0x13')](_0x29fc('0xe'),_0x16bdc8,_0x3a2fba['error'][_0x29fc('0x15')]);return _0x178a12(_0x3a2fba[_0x29fc('0x13')][_0x29fc('0x15')]);}logger[_0x29fc('0x13')](_0x29fc('0xe'),_0x16bdc8,_0x3a2fba[_0x29fc('0x13')][_0x29fc('0x15')]);return _0x20497c(_0x3a2fba[_0x29fc('0x13')][_0x29fc('0x15')]);}else{logger[_0x29fc('0xd')](_0x29fc('0xe'),_0x16bdc8,_0x29fc('0xf'));_0x20497c(_0x3a2fba[_0x29fc('0x16')]['message']);}})[_0x29fc('0x17')](function(_0x4d2118){logger[_0x29fc('0x13')](_0x29fc('0xe'),_0x16bdc8,_0x4d2118);_0x178a12(_0x4d2118);});});}
\ No newline at end of file
index 9b91611..414dd8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe45=['../../components/interaction/service','./intFreshsalesField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x26e89e,_0xacad9){var _0x5bf1d3=function(_0x53cbf8){while(--_0x53cbf8){_0x26e89e['push'](_0x26e89e['shift']());}};_0x5bf1d3(++_0xacad9);}(_0xbe45,0xf0));var _0x5be4=function(_0x1ec99f,_0x28fa4c){_0x1ec99f=_0x1ec99f-0x0;var _0x205359=_0xbe45[_0x1ec99f];return _0x205359;};'use strict';var multer=require(_0x5be4('0x0'));var util=require(_0x5be4('0x1'));var path=require('path');var timeout=require(_0x5be4('0x2'));var express=require(_0x5be4('0x3'));var router=express[_0x5be4('0x4')]();var fs_extra=require(_0x5be4('0x5'));var auth=require(_0x5be4('0x6'));var interaction=require(_0x5be4('0x7'));var config=require('../../config/environment');var controller=require(_0x5be4('0x8'));router[_0x5be4('0x9')]('/',auth[_0x5be4('0xa')](),controller[_0x5be4('0xb')]);router[_0x5be4('0x9')](_0x5be4('0xc'),auth[_0x5be4('0xa')](),controller[_0x5be4('0xd')]);router[_0x5be4('0xe')]('/',auth[_0x5be4('0xa')](),controller[_0x5be4('0xf')]);router[_0x5be4('0x10')](_0x5be4('0xc'),auth['isAuthenticated'](),controller[_0x5be4('0x11')]);router['delete']('/:id',auth[_0x5be4('0xa')](),controller['destroy']);module[_0x5be4('0x12')]=router;
\ No newline at end of file
+var _0x2f68=['create','delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','post'];(function(_0x410cd6,_0x329be5){var _0x559a64=function(_0x1d5bdd){while(--_0x1d5bdd){_0x410cd6['push'](_0x410cd6['shift']());}};_0x559a64(++_0x329be5);}(_0x2f68,0x9a));var _0x82f6=function(_0xc50580,_0x34041b){_0xc50580=_0xc50580-0x0;var _0xec67a9=_0x2f68[_0xc50580];return _0xec67a9;};'use strict';var multer=require('multer');var util=require(_0x82f6('0x0'));var path=require(_0x82f6('0x1'));var timeout=require(_0x82f6('0x2'));var express=require(_0x82f6('0x3'));var router=express['Router']();var fs_extra=require(_0x82f6('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x82f6('0x5'));var config=require(_0x82f6('0x6'));var controller=require('./intFreshsalesField.controller');router[_0x82f6('0x7')]('/',auth[_0x82f6('0x8')](),controller['index']);router['get'](_0x82f6('0x9'),auth['isAuthenticated'](),controller['show']);router[_0x82f6('0xa')]('/',auth[_0x82f6('0x8')](),controller[_0x82f6('0xb')]);router['put'](_0x82f6('0x9'),auth[_0x82f6('0x8')](),controller['update']);router[_0x82f6('0xc')](_0x82f6('0x9'),auth[_0x82f6('0x8')](),controller[_0x82f6('0xd')]);module[_0x82f6('0xe')]=router;
\ No newline at end of file
index 5b6569a..8473a1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36be=['variable','customVariable','keyValue','picklist','STRING','BOOLEAN','exports','ENUM','string'];(function(_0x4bc778,_0x22d8b5){var _0x2c8c60=function(_0x3b2ea1){while(--_0x3b2ea1){_0x4bc778['push'](_0x4bc778['shift']());}};_0x2c8c60(++_0x22d8b5);}(_0x36be,0x192));var _0xe36b=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x36be[_0x42cae2];return _0x5f256f;};'use strict';var Sequelize=require('sequelize');module[_0xe36b('0x0')]={'type':{'type':Sequelize[_0xe36b('0x1')](_0xe36b('0x2'),_0xe36b('0x3'),_0xe36b('0x4'),_0xe36b('0x5'),_0xe36b('0x6')),'defaultValue':_0xe36b('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xe36b('0x7')]},'keyType':{'type':Sequelize[_0xe36b('0x1')](_0xe36b('0x2'),_0xe36b('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0xe36b('0x7')]},'idField':{'type':Sequelize[_0xe36b('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xe36b('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xfeee=['string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM'];(function(_0x5b0bc9,_0x32ea85){var _0xc11292=function(_0xa6ff97){while(--_0xa6ff97){_0x5b0bc9['push'](_0x5b0bc9['shift']());}};_0xc11292(++_0x32ea85);}(_0xfeee,0xbb));var _0xefee=function(_0x43ecc2,_0x109c8e){_0x43ecc2=_0x43ecc2-0x0;var _0x3490ed=_0xfeee[_0x43ecc2];return _0x3490ed;};'use strict';var Sequelize=require(_0xefee('0x0'));module[_0xefee('0x1')]={'type':{'type':Sequelize[_0xefee('0x2')](_0xefee('0x3'),_0xefee('0x4'),_0xefee('0x5'),_0xefee('0x6'),_0xefee('0x7')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xefee('0x8')]},'keyType':{'type':Sequelize['ENUM']('string','variable',_0xefee('0x5'))},'keyContent':{'type':Sequelize[_0xefee('0x8')]},'idField':{'type':Sequelize[_0xefee('0x8')]},'nameField':{'type':Sequelize[_0xefee('0x8')]},'customField':{'type':Sequelize[_0xefee('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xefee('0x8')]}};
\ No newline at end of file
index e32b0a9..09de154 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97b8=['set','apply','reject','save','then','error','name','map','FreshsalesField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','pick','merge','where','VIRTUAL','filter','includeAll','include','findAll','rows','show','length','find','create','body','catch','params','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count'];(function(_0x131aef,_0x575ff1){var _0x215280=function(_0x34823f){while(--_0x34823f){_0x131aef['push'](_0x131aef['shift']());}};_0x215280(++_0x575ff1);}(_0x97b8,0x70));var _0x897b=function(_0x5bf75c,_0x48ddda){_0x5bf75c=_0x5bf75c-0x0;var _0x315a6f=_0x97b8[_0x5bf75c];return _0x315a6f;};'use strict';var emlformat=require(_0x897b('0x0'));var rimraf=require(_0x897b('0x1'));var zipdir=require(_0x897b('0x2'));var jsonpatch=require(_0x897b('0x3'));var rp=require(_0x897b('0x4'));var moment=require('moment');var BPromise=require(_0x897b('0x5'));var Mustache=require(_0x897b('0x6'));var util=require(_0x897b('0x7'));var path=require(_0x897b('0x8'));var sox=require(_0x897b('0x9'));var csv=require(_0x897b('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x897b('0xb'));var _=require(_0x897b('0xc'));var squel=require('squel');var crypto=require(_0x897b('0xd'));var jsforce=require(_0x897b('0xe'));var deskjs=require(_0x897b('0xf'));var toCsv=require(_0x897b('0xa'));var querystring=require('querystring');var Papa=require(_0x897b('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x897b('0x11'));var as=require(_0x897b('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x897b('0x13'));var config=require(_0x897b('0x14'));var licenseUtil=require(_0x897b('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x9ec3d1,_0x5f26e1){_0x5f26e1=_0x5f26e1||0xcc;return function(_0x48d9bc){if(_0x48d9bc){return _0x9ec3d1[_0x897b('0x16')](_0x5f26e1);}return _0x9ec3d1[_0x897b('0x17')](_0x5f26e1)['end']();};}function respondWithResult(_0x31c76d,_0x451247){_0x451247=_0x451247||0xc8;return function(_0x4f570d){if(_0x4f570d){return _0x31c76d[_0x897b('0x17')](_0x451247)[_0x897b('0x18')](_0x4f570d);}};}function respondWithFilteredResult(_0x5aed76,_0x2ed52f){return function(_0x1bc313){if(_0x1bc313){var _0x3b8447=typeof _0x2ed52f[_0x897b('0x19')]===_0x897b('0x1a')&&typeof _0x2ed52f['limit']==='undefined';var _0x3a9fbc=_0x1bc313[_0x897b('0x1b')];var _0x57b248=_0x3b8447?0x0:_0x2ed52f['offset'];var _0x2ad3c9=_0x3b8447?_0x1bc313[_0x897b('0x1b')]:_0x2ed52f[_0x897b('0x19')]+_0x2ed52f['limit'];var _0x153b35;if(_0x2ad3c9>=_0x3a9fbc){_0x2ad3c9=_0x3a9fbc;_0x153b35=0xc8;}else{_0x153b35=0xce;}_0x5aed76['status'](_0x153b35);return _0x5aed76[_0x897b('0x1c')]('Content-Range',_0x57b248+'-'+_0x2ad3c9+'/'+_0x3a9fbc)[_0x897b('0x18')](_0x1bc313);}return null;};}function patchUpdates(_0x42254c){return function(_0x39ddf6){try{jsonpatch[_0x897b('0x1d')](_0x39ddf6,_0x42254c,!![]);}catch(_0x5d4e14){return BPromise[_0x897b('0x1e')](_0x5d4e14);}return _0x39ddf6[_0x897b('0x1f')]();};}function saveUpdates(_0x12322a,_0x1b6fc2){return function(_0x121ea3){if(_0x121ea3){return _0x121ea3['update'](_0x12322a)[_0x897b('0x20')](function(_0x4f84fe){return _0x4f84fe;});}return null;};}function removeEntity(_0x50cfb1,_0x34d58f){return function(_0x1e8b9e){if(_0x1e8b9e){return _0x1e8b9e['destroy']()['then'](function(){_0x50cfb1[_0x897b('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5c86b3,_0x19577f){return function(_0x192790){if(!_0x192790){_0x5c86b3['sendStatus'](0x194);}return _0x192790;};}function handleError(_0x692384,_0xad6918){_0xad6918=_0xad6918||0x1f4;return function(_0x580cae){logger[_0x897b('0x21')](_0x580cae['stack']);if(_0x580cae[_0x897b('0x22')]){delete _0x580cae['name'];}_0x692384[_0x897b('0x17')](_0xad6918)['send'](_0x580cae);};}exports['index']=function(_0x59ecfc,_0x394d49){var _0x5447eb={},_0x58933a={},_0x338413={'count':0x0,'rows':[]};var _0x4ba335=_[_0x897b('0x23')](db[_0x897b('0x24')][_0x897b('0x25')],function(_0x4ebe11){return{'name':_0x4ebe11[_0x897b('0x26')],'type':_0x4ebe11[_0x897b('0x27')][_0x897b('0x28')]};});_0x58933a[_0x897b('0x29')]=_[_0x897b('0x23')](_0x4ba335,_0x897b('0x22'));_0x58933a[_0x897b('0x2a')]=_[_0x897b('0x2b')](_0x59ecfc['query']);_0x58933a[_0x897b('0x2c')]=_[_0x897b('0x2d')](_0x58933a[_0x897b('0x29')],_0x58933a[_0x897b('0x2a')]);_0x5447eb[_0x897b('0x2e')]=_[_0x897b('0x2d')](_0x58933a[_0x897b('0x29')],qs[_0x897b('0x2f')](_0x59ecfc[_0x897b('0x2a')]['fields']));_0x5447eb['attributes']=_0x5447eb['attributes']['length']?_0x5447eb[_0x897b('0x2e')]:_0x58933a[_0x897b('0x29')];if(!_0x59ecfc[_0x897b('0x2a')][_0x897b('0x30')](_0x897b('0x31'))){_0x5447eb['limit']=qs[_0x897b('0x32')](_0x59ecfc[_0x897b('0x2a')][_0x897b('0x32')]);_0x5447eb[_0x897b('0x19')]=qs[_0x897b('0x19')](_0x59ecfc['query']['offset']);}_0x5447eb[_0x897b('0x33')]=qs[_0x897b('0x34')](_0x59ecfc[_0x897b('0x2a')][_0x897b('0x34')]);_0x5447eb['where']=qs[_0x897b('0x2c')](_[_0x897b('0x35')](_0x59ecfc[_0x897b('0x2a')],_0x58933a['filters']),_0x4ba335);if(_0x59ecfc[_0x897b('0x2a')]['filter']){_0x5447eb['where']=_[_0x897b('0x36')](_0x5447eb[_0x897b('0x37')],{'$or':_[_0x897b('0x23')](_0x4ba335,function(_0x30d20a){if(_0x30d20a['type']!==_0x897b('0x38')){var _0x5c22d3={};_0x5c22d3[_0x30d20a[_0x897b('0x22')]]={'$like':'%'+_0x59ecfc['query'][_0x897b('0x39')]+'%'};return _0x5c22d3;}})});}_0x5447eb=_[_0x897b('0x36')]({},_0x5447eb,_0x59ecfc['options']);var _0x45bdb7={'where':_0x5447eb[_0x897b('0x37')]};return db['FreshsalesField'][_0x897b('0x1b')](_0x45bdb7)['then'](function(_0x10e98f){_0x338413[_0x897b('0x1b')]=_0x10e98f;if(_0x59ecfc[_0x897b('0x2a')][_0x897b('0x3a')]){_0x5447eb[_0x897b('0x3b')]=[{'all':!![]}];}return db[_0x897b('0x24')][_0x897b('0x3c')](_0x5447eb);})[_0x897b('0x20')](function(_0x5e2772){_0x338413[_0x897b('0x3d')]=_0x5e2772;return _0x338413;})[_0x897b('0x20')](respondWithFilteredResult(_0x394d49,_0x5447eb))['catch'](handleError(_0x394d49,null));};exports[_0x897b('0x3e')]=function(_0x3a49df,_0x575c2f){var _0x97e425={'raw':!![],'where':{'id':_0x3a49df['params']['id']}},_0x2a00a3={};_0x2a00a3[_0x897b('0x29')]=_['keys'](db[_0x897b('0x24')]['rawAttributes']);_0x2a00a3[_0x897b('0x2a')]=_[_0x897b('0x2b')](_0x3a49df[_0x897b('0x2a')]);_0x2a00a3[_0x897b('0x2c')]=_[_0x897b('0x2d')](_0x2a00a3['model'],_0x2a00a3['query']);_0x97e425[_0x897b('0x2e')]=_[_0x897b('0x2d')](_0x2a00a3[_0x897b('0x29')],qs['fields'](_0x3a49df[_0x897b('0x2a')][_0x897b('0x2f')]));_0x97e425[_0x897b('0x2e')]=_0x97e425[_0x897b('0x2e')][_0x897b('0x3f')]?_0x97e425[_0x897b('0x2e')]:_0x2a00a3[_0x897b('0x29')];if(_0x3a49df['query'][_0x897b('0x3a')]){_0x97e425[_0x897b('0x3b')]=[{'all':!![]}];}_0x97e425=_[_0x897b('0x36')]({},_0x97e425,_0x3a49df['options']);return db[_0x897b('0x24')][_0x897b('0x40')](_0x97e425)[_0x897b('0x20')](handleEntityNotFound(_0x575c2f,null))[_0x897b('0x20')](respondWithResult(_0x575c2f,null))['catch'](handleError(_0x575c2f,null));};exports[_0x897b('0x41')]=function(_0x3ad971,_0xe6bce3){return db['FreshsalesField'][_0x897b('0x41')](_0x3ad971[_0x897b('0x42')],{})[_0x897b('0x20')](respondWithResult(_0xe6bce3,0xc9))[_0x897b('0x43')](handleError(_0xe6bce3,null));};exports['update']=function(_0x543c11,_0x45d645){if(_0x543c11['body']['id']){delete _0x543c11[_0x897b('0x42')]['id'];}return db[_0x897b('0x24')][_0x897b('0x40')]({'where':{'id':_0x543c11[_0x897b('0x44')]['id']}})['then'](handleEntityNotFound(_0x45d645,null))['then'](saveUpdates(_0x543c11[_0x897b('0x42')],null))[_0x897b('0x20')](respondWithResult(_0x45d645,null))[_0x897b('0x43')](handleError(_0x45d645,null));};exports[_0x897b('0x45')]=function(_0x3038bd,_0x471d44){return db['FreshsalesField'][_0x897b('0x40')]({'where':{'id':_0x3038bd[_0x897b('0x44')]['id']}})['then'](handleEntityNotFound(_0x471d44,null))[_0x897b('0x20')](removeEntity(_0x471d44,null))[_0x897b('0x43')](handleError(_0x471d44,null));};
\ No newline at end of file
+var _0x50f7=['papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','error','stack','name','send','index','FreshsalesField','rawAttributes','fieldName','type','key','model','map','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','include','findAll','rows','show','includeAll','options','catch','create','body','find','params','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring'];(function(_0x3b67fe,_0x3307a8){var _0x3ee0ae=function(_0x93188f){while(--_0x93188f){_0x3b67fe['push'](_0x3b67fe['shift']());}};_0x3ee0ae(++_0x3307a8);}(_0x50f7,0x124));var _0x750f=function(_0x5f0ce8,_0x2d02e4){_0x5f0ce8=_0x5f0ce8-0x0;var _0x33f448=_0x50f7[_0x5f0ce8];return _0x33f448;};'use strict';var emlformat=require(_0x750f('0x0'));var rimraf=require(_0x750f('0x1'));var zipdir=require(_0x750f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x750f('0x3'));var moment=require('moment');var BPromise=require(_0x750f('0x4'));var Mustache=require(_0x750f('0x5'));var util=require(_0x750f('0x6'));var path=require(_0x750f('0x7'));var sox=require(_0x750f('0x8'));var csv=require(_0x750f('0x9'));var ejs=require(_0x750f('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x750f('0xb'));var squel=require(_0x750f('0xc'));var crypto=require(_0x750f('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x750f('0xe'));var toCsv=require('to-csv');var querystring=require(_0x750f('0xf'));var Papa=require(_0x750f('0x10'));var Redis=require(_0x750f('0x11'));var authService=require(_0x750f('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x750f('0x13'));var hardwareService=require(_0x750f('0x14'));var logger=require(_0x750f('0x15'))('api');var utils=require(_0x750f('0x16'));var config=require(_0x750f('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x750f('0x18'))['db'];function respondWithStatusCode(_0x5718f7,_0x37635a){_0x37635a=_0x37635a||0xcc;return function(_0x1cd972){if(_0x1cd972){return _0x5718f7[_0x750f('0x19')](_0x37635a);}return _0x5718f7[_0x750f('0x1a')](_0x37635a)[_0x750f('0x1b')]();};}function respondWithResult(_0x1f61a5,_0x3b4942){_0x3b4942=_0x3b4942||0xc8;return function(_0x86d773){if(_0x86d773){return _0x1f61a5['status'](_0x3b4942)[_0x750f('0x1c')](_0x86d773);}};}function respondWithFilteredResult(_0x4232c1,_0x593c46){return function(_0x4708ae){if(_0x4708ae){var _0x1aeaec=typeof _0x593c46[_0x750f('0x1d')]===_0x750f('0x1e')&&typeof _0x593c46[_0x750f('0x1f')]===_0x750f('0x1e');var _0x4d247a=_0x4708ae[_0x750f('0x20')];var _0x66c9c=_0x1aeaec?0x0:_0x593c46['offset'];var _0x3c3fda=_0x1aeaec?_0x4708ae['count']:_0x593c46[_0x750f('0x1d')]+_0x593c46[_0x750f('0x1f')];var _0x4c8a1b;if(_0x3c3fda>=_0x4d247a){_0x3c3fda=_0x4d247a;_0x4c8a1b=0xc8;}else{_0x4c8a1b=0xce;}_0x4232c1[_0x750f('0x1a')](_0x4c8a1b);return _0x4232c1['set'](_0x750f('0x21'),_0x66c9c+'-'+_0x3c3fda+'/'+_0x4d247a)['json'](_0x4708ae);}return null;};}function patchUpdates(_0x2dddbd){return function(_0x3ffdbb){try{jsonpatch['apply'](_0x3ffdbb,_0x2dddbd,!![]);}catch(_0x134324){return BPromise[_0x750f('0x22')](_0x134324);}return _0x3ffdbb[_0x750f('0x23')]();};}function saveUpdates(_0x15bead,_0x28b92f){return function(_0x2bfdfb){if(_0x2bfdfb){return _0x2bfdfb[_0x750f('0x24')](_0x15bead)['then'](function(_0x2c3965){return _0x2c3965;});}return null;};}function removeEntity(_0x30d15b,_0x3e7427){return function(_0x1517b7){if(_0x1517b7){return _0x1517b7['destroy']()[_0x750f('0x25')](function(){_0x30d15b['status'](0xcc)[_0x750f('0x1b')]();});}};}function handleEntityNotFound(_0x3ab5e6,_0x1e8cdf){return function(_0x3a47a6){if(!_0x3a47a6){_0x3ab5e6[_0x750f('0x19')](0x194);}return _0x3a47a6;};}function handleError(_0x47d894,_0x5b2f3c){_0x5b2f3c=_0x5b2f3c||0x1f4;return function(_0x59c1e3){logger[_0x750f('0x26')](_0x59c1e3[_0x750f('0x27')]);if(_0x59c1e3[_0x750f('0x28')]){delete _0x59c1e3[_0x750f('0x28')];}_0x47d894[_0x750f('0x1a')](_0x5b2f3c)[_0x750f('0x29')](_0x59c1e3);};}exports[_0x750f('0x2a')]=function(_0x497a2f,_0x337bea){var _0x290096={},_0x3c39de={},_0x206133={'count':0x0,'rows':[]};var _0x544440=_['map'](db[_0x750f('0x2b')][_0x750f('0x2c')],function(_0xfa4142){return{'name':_0xfa4142[_0x750f('0x2d')],'type':_0xfa4142[_0x750f('0x2e')][_0x750f('0x2f')]};});_0x3c39de[_0x750f('0x30')]=_[_0x750f('0x31')](_0x544440,'name');_0x3c39de[_0x750f('0x32')]=_[_0x750f('0x33')](_0x497a2f[_0x750f('0x32')]);_0x3c39de['filters']=_['intersection'](_0x3c39de[_0x750f('0x30')],_0x3c39de[_0x750f('0x32')]);_0x290096[_0x750f('0x34')]=_[_0x750f('0x35')](_0x3c39de[_0x750f('0x30')],qs[_0x750f('0x36')](_0x497a2f[_0x750f('0x32')][_0x750f('0x36')]));_0x290096[_0x750f('0x34')]=_0x290096[_0x750f('0x34')][_0x750f('0x37')]?_0x290096[_0x750f('0x34')]:_0x3c39de[_0x750f('0x30')];if(!_0x497a2f[_0x750f('0x32')][_0x750f('0x38')](_0x750f('0x39'))){_0x290096[_0x750f('0x1f')]=qs[_0x750f('0x1f')](_0x497a2f[_0x750f('0x32')]['limit']);_0x290096[_0x750f('0x1d')]=qs[_0x750f('0x1d')](_0x497a2f[_0x750f('0x32')][_0x750f('0x1d')]);}_0x290096[_0x750f('0x3a')]=qs[_0x750f('0x3b')](_0x497a2f[_0x750f('0x32')][_0x750f('0x3b')]);_0x290096[_0x750f('0x3c')]=qs['filters'](_[_0x750f('0x3d')](_0x497a2f[_0x750f('0x32')],_0x3c39de[_0x750f('0x3e')]),_0x544440);if(_0x497a2f['query'][_0x750f('0x3f')]){_0x290096[_0x750f('0x3c')]=_[_0x750f('0x40')](_0x290096[_0x750f('0x3c')],{'$or':_['map'](_0x544440,function(_0x5d98d9){if(_0x5d98d9[_0x750f('0x2e')]!==_0x750f('0x41')){var _0x304a73={};_0x304a73[_0x5d98d9[_0x750f('0x28')]]={'$like':'%'+_0x497a2f[_0x750f('0x32')][_0x750f('0x3f')]+'%'};return _0x304a73;}})});}_0x290096=_['merge']({},_0x290096,_0x497a2f['options']);var _0x2f3a12={'where':_0x290096['where']};return db['FreshsalesField'][_0x750f('0x20')](_0x2f3a12)[_0x750f('0x25')](function(_0xa7f2e4){_0x206133[_0x750f('0x20')]=_0xa7f2e4;if(_0x497a2f[_0x750f('0x32')]['includeAll']){_0x290096[_0x750f('0x42')]=[{'all':!![]}];}return db[_0x750f('0x2b')][_0x750f('0x43')](_0x290096);})[_0x750f('0x25')](function(_0x50dd43){_0x206133[_0x750f('0x44')]=_0x50dd43;return _0x206133;})[_0x750f('0x25')](respondWithFilteredResult(_0x337bea,_0x290096))['catch'](handleError(_0x337bea,null));};exports[_0x750f('0x45')]=function(_0x532168,_0x29f0d5){var _0x1fd444={'raw':!![],'where':{'id':_0x532168['params']['id']}},_0x362460={};_0x362460['model']=_[_0x750f('0x33')](db['FreshsalesField']['rawAttributes']);_0x362460['query']=_['keys'](_0x532168['query']);_0x362460[_0x750f('0x3e')]=_['intersection'](_0x362460[_0x750f('0x30')],_0x362460[_0x750f('0x32')]);_0x1fd444[_0x750f('0x34')]=_['intersection'](_0x362460[_0x750f('0x30')],qs['fields'](_0x532168[_0x750f('0x32')][_0x750f('0x36')]));_0x1fd444[_0x750f('0x34')]=_0x1fd444[_0x750f('0x34')][_0x750f('0x37')]?_0x1fd444['attributes']:_0x362460[_0x750f('0x30')];if(_0x532168[_0x750f('0x32')][_0x750f('0x46')]){_0x1fd444['include']=[{'all':!![]}];}_0x1fd444=_['merge']({},_0x1fd444,_0x532168[_0x750f('0x47')]);return db[_0x750f('0x2b')]['find'](_0x1fd444)[_0x750f('0x25')](handleEntityNotFound(_0x29f0d5,null))[_0x750f('0x25')](respondWithResult(_0x29f0d5,null))[_0x750f('0x48')](handleError(_0x29f0d5,null));};exports[_0x750f('0x49')]=function(_0x29ddf6,_0x5a3ff5){return db['FreshsalesField'][_0x750f('0x49')](_0x29ddf6[_0x750f('0x4a')],{})['then'](respondWithResult(_0x5a3ff5,0xc9))['catch'](handleError(_0x5a3ff5,null));};exports[_0x750f('0x24')]=function(_0x36d359,_0x5af7cb){if(_0x36d359[_0x750f('0x4a')]['id']){delete _0x36d359[_0x750f('0x4a')]['id'];}return db[_0x750f('0x2b')][_0x750f('0x4b')]({'where':{'id':_0x36d359[_0x750f('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5af7cb,null))['then'](saveUpdates(_0x36d359[_0x750f('0x4a')],null))['then'](respondWithResult(_0x5af7cb,null))['catch'](handleError(_0x5af7cb,null));};exports['destroy']=function(_0x2e1bdc,_0x53ba92){return db[_0x750f('0x2b')]['find']({'where':{'id':_0x2e1bdc[_0x750f('0x4c')]['id']}})[_0x750f('0x25')](handleEntityNotFound(_0x53ba92,null))[_0x750f('0x25')](removeEntity(_0x53ba92,null))[_0x750f('0x48')](handleError(_0x53ba92,null));};
\ No newline at end of file
index 2ff38f2..123342f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6372=['lodash','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./intFreshsalesField.attributes','exports','freshsales_unique_index'];(function(_0x5cb1af,_0x4bdc8c){var _0x8d7940=function(_0x3db70a){while(--_0x3db70a){_0x5cb1af['push'](_0x5cb1af['shift']());}};_0x8d7940(++_0x4bdc8c);}(_0x6372,0x1b8));var _0x2637=function(_0x283c07,_0x2c1452){_0x283c07=_0x283c07-0x0;var _0x2e1342=_0x6372[_0x283c07];return _0x2e1342;};'use strict';var _=require(_0x2637('0x0'));var util=require('util');var logger=require(_0x2637('0x1'))('api');var moment=require(_0x2637('0x2'));var BPromise=require(_0x2637('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2637('0x4'));var rimraf=require(_0x2637('0x5'));var config=require(_0x2637('0x6'));var attributes=require(_0x2637('0x7'));module[_0x2637('0x8')]=function(_0x5da891,_0x33d56c){return _0x5da891['define']('FreshsalesField',attributes,{'tableName':'int_freshsales_fields','paranoid':![],'indexes':[{'name':_0x2637('0x9'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb78e=['../../config/environment','./intFreshsalesField.attributes','define','FreshsalesField','int_freshsales_fields','freshsales_unique_index','idField','lodash','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x32ed9e,_0x2243e1){var _0x19b2d5=function(_0x45c58a){while(--_0x45c58a){_0x32ed9e['push'](_0x32ed9e['shift']());}};_0x19b2d5(++_0x2243e1);}(_0xb78e,0x1c9));var _0xeb78=function(_0x21c1a3,_0x7eff8a){_0x21c1a3=_0x21c1a3-0x0;var _0x2e79f6=_0xb78e[_0x21c1a3];return _0x2e79f6;};'use strict';var _=require(_0xeb78('0x0'));var util=require(_0xeb78('0x1'));var logger=require('../../config/logger')(_0xeb78('0x2'));var moment=require(_0xeb78('0x3'));var BPromise=require(_0xeb78('0x4'));var rp=require(_0xeb78('0x5'));var fs=require('fs');var path=require(_0xeb78('0x6'));var rimraf=require(_0xeb78('0x7'));var config=require(_0xeb78('0x8'));var attributes=require(_0xeb78('0x9'));module['exports']=function(_0x3c35e7,_0x17a736){return _0x3c35e7[_0xeb78('0xa')](_0xeb78('0xb'),attributes,{'tableName':_0xeb78('0xc'),'paranoid':![],'indexes':[{'name':_0xeb78('0xd'),'fields':[_0xeb78('0xe'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 82961bf..aefe198 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1967=['then','info','FreshsalesField,\x20%s,\x20%s','FreshsalesField,\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(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0x1967,0x173));var _0x7196=function(_0x83fae7,_0x4f15f6){_0x83fae7=_0x83fae7-0x0;var _0x111864=_0x1967[_0x83fae7];return _0x111864;};'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 _0x9536=['request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','FreshsalesField,\x20%s,\x20%s'];(function(_0x15c064,_0x1b2680){var _0x5423bc=function(_0x349101){while(--_0x349101){_0x15c064['push'](_0x15c064['shift']());}};_0x5423bc(++_0x1b2680);}(_0x9536,0x179));var _0x6953=function(_0x4e0026,_0x2b52b6){_0x4e0026=_0x4e0026-0x0;var _0x3f8ee7=_0x9536[_0x4e0026];return _0x3f8ee7;};'use strict';var _=require(_0x6953('0x0'));var util=require(_0x6953('0x1'));var moment=require(_0x6953('0x2'));var BPromise=require(_0x6953('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6953('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6953('0x5'));var logger=require(_0x6953('0x6'))(_0x6953('0x7'));var config=require(_0x6953('0x8'));var jayson=require(_0x6953('0x9'));var client=jayson['client'][_0x6953('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2bb026,_0x385f2d,_0x3e1aff){return new BPromise(function(_0x1c8225,_0x58ac30){return client[_0x6953('0xb')](_0x2bb026,_0x3e1aff)[_0x6953('0xc')](function(_0x449acb){logger['info'](_0x6953('0xd'),_0x385f2d,_0x6953('0xe'));logger[_0x6953('0xf')](_0x6953('0x10'),_0x385f2d,_0x6953('0xe'),JSON[_0x6953('0x11')](_0x449acb));if(_0x449acb[_0x6953('0x12')]){if(_0x449acb[_0x6953('0x12')][_0x6953('0x13')]===0x1f4){logger['error'](_0x6953('0xd'),_0x385f2d,_0x449acb['error'][_0x6953('0x14')]);return _0x58ac30(_0x449acb[_0x6953('0x12')][_0x6953('0x14')]);}logger[_0x6953('0x12')](_0x6953('0xd'),_0x385f2d,_0x449acb[_0x6953('0x12')][_0x6953('0x14')]);return _0x1c8225(_0x449acb[_0x6953('0x12')][_0x6953('0x14')]);}else{logger[_0x6953('0x15')](_0x6953('0xd'),_0x385f2d,'request\x20sent');_0x1c8225(_0x449acb['result'][_0x6953('0x14')]);}})[_0x6953('0x16')](function(_0x16b79b){logger[_0x6953('0x12')]('FreshsalesField,\x20%s,\x20%s',_0x385f2d,_0x16b79b);_0x58ac30(_0x16b79b);});});}
\ No newline at end of file
index fee8082..1405606 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(_0x13a836,_0x23d029){var _0x20d4fa=function(_0x152b32){while(--_0x152b32){_0x13a836['push'](_0x13a836['shift']());}};_0x20d4fa(++_0x23d029);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xa9e0[_0x5b644e];return _0x49c6bf;};'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 _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(_0x32ff57,_0x468f0f){var _0x55f897=function(_0x3f3c42){while(--_0x3f3c42){_0x32ff57['push'](_0x32ff57['shift']());}};_0x55f897(++_0x468f0f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0xa9e0[_0x46aff0];return _0x9d78cf;};'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
index 379ca01..ba3e836 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc648=['ENUM','integrationTab','newTab','exports','STRING','username'];(function(_0x348897,_0x1f4583){var _0x1ec57e=function(_0x467818){while(--_0x467818){_0x348897['push'](_0x348897['shift']());}};_0x1ec57e(++_0x1f4583);}(_0xc648,0x171));var _0x8c64=function(_0x22a264,_0x1d0c6b){_0x22a264=_0x22a264-0x0;var _0xd15501=_0xc648[_0x22a264];return _0xd15501;};'use strict';var Sequelize=require('sequelize');module[_0x8c64('0x0')]={'name':{'type':Sequelize[_0x8c64('0x1')]},'description':{'type':Sequelize[_0x8c64('0x1')]},'username':{'type':Sequelize[_0x8c64('0x1')],'unique':_0x8c64('0x2')},'remoteUri':{'type':Sequelize[_0x8c64('0x1')]},'password':{'type':Sequelize[_0x8c64('0x1')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize['STRING']},'securityToken':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x8c64('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x8c64('0x3')](_0x8c64('0x4'),_0x8c64('0x5')),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0x762e=['STRING','ENUM','newTab','integrationTab','sequelize'];(function(_0x565442,_0x5864c6){var _0x514c89=function(_0x4cdba9){while(--_0x4cdba9){_0x565442['push'](_0x565442['shift']());}};_0x514c89(++_0x5864c6);}(_0x762e,0xea));var _0xe762=function(_0x49b950,_0x5be899){_0x49b950=_0x49b950-0x0;var _0x321d95=_0x762e[_0x49b950];return _0x321d95;};'use strict';var Sequelize=require(_0xe762('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xe762('0x1')]},'username':{'type':Sequelize['STRING'],'unique':'username'},'remoteUri':{'type':Sequelize[_0xe762('0x1')]},'password':{'type':Sequelize[_0xe762('0x1')]},'clientId':{'type':Sequelize[_0xe762('0x1')]},'clientSecret':{'type':Sequelize['STRING']},'securityToken':{'type':Sequelize[_0xe762('0x1')]},'serverUrl':{'type':Sequelize[_0xe762('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xe762('0x2')]('integrationTab',_0xe762('0x3')),'defaultValue':_0xe762('0x4')}};
\ No newline at end of file
index 75a2a60..57f3c60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bee=['json','offset','undefined','limit','count','Content-Range','apply','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','SalesforceAccount','find','create','body','catch','SalesforceConfiguration','getConfigurations','addConfiguration','AccountId','getSubjects','getDescriptions','channel','SalesforceField','Descriptions','getFields','Task','findOne','remoteUri','clientId','clientSecret','username','securityToken','slice','substring','lastIndexOf','Connection','login','password','concat','isNil','ticketType','describe','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Description','string','int','picklist','boolean','email','textarea','phone','remove','includes','label','custom','picklistValues','value','True','true','False','test','statusCode','error','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','squel','crypto','jsforce','desk.js','to-csv','querystring','../../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'];(function(_0x5d5ea8,_0x24952a){var _0x553c87=function(_0x479c13){while(--_0x479c13){_0x5d5ea8['push'](_0x5d5ea8['shift']());}};_0x553c87(++_0x24952a);}(_0x5bee,0x15f));var _0xe5be=function(_0x21de95,_0x71ff49){_0x21de95=_0x21de95-0x0;var _0x8689ea=_0x5bee[_0x21de95];return _0x8689ea;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe5be('0x0'));var zipdir=require(_0xe5be('0x1'));var jsonpatch=require(_0xe5be('0x2'));var rp=require(_0xe5be('0x3'));var moment=require('moment');var BPromise=require(_0xe5be('0x4'));var Mustache=require('mustache');var util=require(_0xe5be('0x5'));var path=require(_0xe5be('0x6'));var sox=require(_0xe5be('0x7'));var csv=require('to-csv');var ejs=require(_0xe5be('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xe5be('0x9'));var crypto=require(_0xe5be('0xa'));var jsforce=require(_0xe5be('0xb'));var deskjs=require(_0xe5be('0xc'));var toCsv=require(_0xe5be('0xd'));var querystring=require(_0xe5be('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xe5be('0xf'));var qs=require(_0xe5be('0x10'));var as=require(_0xe5be('0x11'));var hardwareService=require(_0xe5be('0x12'));var logger=require('../../config/logger')(_0xe5be('0x13'));var utils=require(_0xe5be('0x14'));var config=require(_0xe5be('0x15'));var licenseUtil=require(_0xe5be('0x16'));var db=require('../../mysqldb')['db'];var integrations=require(_0xe5be('0x17'));function respondWithStatusCode(_0x29bd29,_0xb4fe9c){_0xb4fe9c=_0xb4fe9c||0xcc;return function(_0x3eaca8){if(_0x3eaca8){return _0x29bd29[_0xe5be('0x18')](_0xb4fe9c);}return _0x29bd29[_0xe5be('0x19')](_0xb4fe9c)[_0xe5be('0x1a')]();};}function respondWithResult(_0x16e2f9,_0x3603fa){_0x3603fa=_0x3603fa||0xc8;return function(_0x54eaec){if(_0x54eaec){return _0x16e2f9['status'](_0x3603fa)[_0xe5be('0x1b')](_0x54eaec);}};}function respondWithFilteredResult(_0x1a0a85,_0x21c370){return function(_0x21cfdc){if(_0x21cfdc){var _0x279dcc=typeof _0x21c370[_0xe5be('0x1c')]===_0xe5be('0x1d')&&typeof _0x21c370[_0xe5be('0x1e')]===_0xe5be('0x1d');var _0x4ab507=_0x21cfdc[_0xe5be('0x1f')];var _0x35bb65=_0x279dcc?0x0:_0x21c370['offset'];var _0x3c58a2=_0x279dcc?_0x21cfdc[_0xe5be('0x1f')]:_0x21c370[_0xe5be('0x1c')]+_0x21c370[_0xe5be('0x1e')];var _0x577514;if(_0x3c58a2>=_0x4ab507){_0x3c58a2=_0x4ab507;_0x577514=0xc8;}else{_0x577514=0xce;}_0x1a0a85[_0xe5be('0x19')](_0x577514);return _0x1a0a85['set'](_0xe5be('0x20'),_0x35bb65+'-'+_0x3c58a2+'/'+_0x4ab507)['json'](_0x21cfdc);}return null;};}function patchUpdates(_0x2433c7){return function(_0x599cdc){try{jsonpatch[_0xe5be('0x21')](_0x599cdc,_0x2433c7,!![]);}catch(_0x787066){return BPromise['reject'](_0x787066);}return _0x599cdc['save']();};}function saveUpdates(_0x57d2ac,_0x5cc674){return function(_0x318d48){if(_0x318d48){return _0x318d48[_0xe5be('0x22')](_0x57d2ac)[_0xe5be('0x23')](function(_0x2d3a72){return _0x2d3a72;});}return null;};}function removeEntity(_0x3b4eae,_0x21b5d1){return function(_0xcbc095){if(_0xcbc095){return _0xcbc095[_0xe5be('0x24')]()[_0xe5be('0x23')](function(){_0x3b4eae['status'](0xcc)[_0xe5be('0x1a')]();});}};}function handleEntityNotFound(_0x45ffdf,_0x45102b){return function(_0x9654e3){if(!_0x9654e3){_0x45ffdf[_0xe5be('0x18')](0x194);}return _0x9654e3;};}function handleError(_0x35fa8d,_0x2e0aec){_0x2e0aec=_0x2e0aec||0x1f4;return function(_0x484192){logger['error'](_0x484192[_0xe5be('0x25')]);if(_0x484192['name']){delete _0x484192[_0xe5be('0x26')];}_0x35fa8d[_0xe5be('0x19')](_0x2e0aec)[_0xe5be('0x27')](_0x484192);};}exports[_0xe5be('0x28')]=function(_0x30c359,_0x3e6ea2){var _0x1e4991={},_0x197bcd={},_0x47037d={'count':0x0,'rows':[]};var _0x119b47=_[_0xe5be('0x29')](db['SalesforceAccount'][_0xe5be('0x2a')],function(_0x185e87){return{'name':_0x185e87[_0xe5be('0x2b')],'type':_0x185e87[_0xe5be('0x2c')]['key']};});_0x197bcd[_0xe5be('0x2d')]=_[_0xe5be('0x29')](_0x119b47,_0xe5be('0x26'));_0x197bcd[_0xe5be('0x2e')]=_[_0xe5be('0x2f')](_0x30c359[_0xe5be('0x2e')]);_0x197bcd['filters']=_[_0xe5be('0x30')](_0x197bcd[_0xe5be('0x2d')],_0x197bcd[_0xe5be('0x2e')]);_0x1e4991[_0xe5be('0x31')]=_[_0xe5be('0x30')](_0x197bcd[_0xe5be('0x2d')],qs['fields'](_0x30c359[_0xe5be('0x2e')][_0xe5be('0x32')]));_0x1e4991[_0xe5be('0x31')]=_0x1e4991[_0xe5be('0x31')][_0xe5be('0x33')]?_0x1e4991[_0xe5be('0x31')]:_0x197bcd[_0xe5be('0x2d')];if(!_0x30c359[_0xe5be('0x2e')][_0xe5be('0x34')](_0xe5be('0x35'))){_0x1e4991[_0xe5be('0x1e')]=qs[_0xe5be('0x1e')](_0x30c359[_0xe5be('0x2e')]['limit']);_0x1e4991[_0xe5be('0x1c')]=qs[_0xe5be('0x1c')](_0x30c359['query'][_0xe5be('0x1c')]);}_0x1e4991[_0xe5be('0x36')]=qs['sort'](_0x30c359[_0xe5be('0x2e')][_0xe5be('0x37')]);_0x1e4991[_0xe5be('0x38')]=qs[_0xe5be('0x39')](_[_0xe5be('0x3a')](_0x30c359[_0xe5be('0x2e')],_0x197bcd[_0xe5be('0x39')]),_0x119b47);if(_0x30c359['query'][_0xe5be('0x3b')]){_0x1e4991[_0xe5be('0x38')]=_[_0xe5be('0x3c')](_0x1e4991[_0xe5be('0x38')],{'$or':_[_0xe5be('0x29')](_0x119b47,function(_0x3c3e7b){if(_0x3c3e7b['type']!==_0xe5be('0x3d')){var _0x2be2f5={};_0x2be2f5[_0x3c3e7b[_0xe5be('0x26')]]={'$like':'%'+_0x30c359['query'][_0xe5be('0x3b')]+'%'};return _0x2be2f5;}})});}_0x1e4991=_[_0xe5be('0x3c')]({},_0x1e4991,_0x30c359[_0xe5be('0x3e')]);var _0x7a1100={'where':_0x1e4991['where']};return db['SalesforceAccount']['count'](_0x7a1100)['then'](function(_0x6ade15){_0x47037d['count']=_0x6ade15;if(_0x30c359[_0xe5be('0x2e')][_0xe5be('0x3f')]){_0x1e4991[_0xe5be('0x40')]=[{'all':!![]}];}return db['SalesforceAccount'][_0xe5be('0x41')](_0x1e4991);})[_0xe5be('0x23')](function(_0x2be504){_0x47037d[_0xe5be('0x42')]=_0x2be504;return _0x47037d;})['then'](respondWithFilteredResult(_0x3e6ea2,_0x1e4991))['catch'](handleError(_0x3e6ea2,null));};exports[_0xe5be('0x43')]=function(_0x200974,_0x386cca){var _0x83cdd={'raw':![],'where':{'id':_0x200974[_0xe5be('0x44')]['id']}},_0x2fc6db={};_0x2fc6db[_0xe5be('0x2d')]=_[_0xe5be('0x2f')](db['SalesforceAccount'][_0xe5be('0x2a')]);_0x2fc6db['query']=_[_0xe5be('0x2f')](_0x200974[_0xe5be('0x2e')]);_0x2fc6db[_0xe5be('0x39')]=_[_0xe5be('0x30')](_0x2fc6db[_0xe5be('0x2d')],_0x2fc6db[_0xe5be('0x2e')]);_0x83cdd['attributes']=_[_0xe5be('0x30')](_0x2fc6db['model'],qs[_0xe5be('0x32')](_0x200974[_0xe5be('0x2e')][_0xe5be('0x32')]));_0x83cdd[_0xe5be('0x31')]=_0x83cdd['attributes'][_0xe5be('0x33')]?_0x83cdd[_0xe5be('0x31')]:_0x2fc6db[_0xe5be('0x2d')];if(_0x200974[_0xe5be('0x2e')][_0xe5be('0x3f')]){_0x83cdd[_0xe5be('0x40')]=[{'all':!![]}];}_0x83cdd=_[_0xe5be('0x3c')]({},_0x83cdd,_0x200974['options']);return db[_0xe5be('0x45')][_0xe5be('0x46')](_0x83cdd)[_0xe5be('0x23')](handleEntityNotFound(_0x386cca,null))[_0xe5be('0x23')](respondWithResult(_0x386cca,null))['catch'](handleError(_0x386cca,null));};exports[_0xe5be('0x47')]=function(_0x2fedb6,_0x509888){return db['SalesforceAccount'][_0xe5be('0x47')](_0x2fedb6[_0xe5be('0x48')],{})[_0xe5be('0x23')](respondWithResult(_0x509888,0xc9))['catch'](handleError(_0x509888,null));};exports[_0xe5be('0x22')]=function(_0x2c664e,_0x51f5de){if(_0x2c664e[_0xe5be('0x48')]['id']){delete _0x2c664e[_0xe5be('0x48')]['id'];}return db[_0xe5be('0x45')]['find']({'where':{'id':_0x2c664e[_0xe5be('0x44')]['id']}})[_0xe5be('0x23')](handleEntityNotFound(_0x51f5de,null))['then'](saveUpdates(_0x2c664e[_0xe5be('0x48')],null))[_0xe5be('0x23')](respondWithResult(_0x51f5de,null))[_0xe5be('0x49')](handleError(_0x51f5de,null));};exports[_0xe5be('0x24')]=function(_0x2b5950,_0x4fa39d){return db[_0xe5be('0x45')][_0xe5be('0x46')]({'where':{'id':_0x2b5950[_0xe5be('0x44')]['id']}})[_0xe5be('0x23')](handleEntityNotFound(_0x4fa39d,null))[_0xe5be('0x23')](removeEntity(_0x4fa39d,null))[_0xe5be('0x49')](handleError(_0x4fa39d,null));};exports['getConfigurations']=function(_0x42e5f1,_0x1bd72f,_0x558eb3){var _0x16434f={};var _0x2963b2={};var _0x37ca49;var _0x44b6db;return db[_0xe5be('0x45')]['findOne']({'where':{'id':_0x42e5f1[_0xe5be('0x44')]['id']}})[_0xe5be('0x23')](handleEntityNotFound(_0x1bd72f,null))[_0xe5be('0x23')](function(_0xcf11d8){if(_0xcf11d8){_0x37ca49=_0xcf11d8;_0x2963b2[_0xe5be('0x2d')]=_[_0xe5be('0x2f')](db[_0xe5be('0x4a')][_0xe5be('0x2a')]);_0x2963b2[_0xe5be('0x2e')]=_[_0xe5be('0x2f')](_0x42e5f1[_0xe5be('0x2e')]);_0x2963b2[_0xe5be('0x39')]=_[_0xe5be('0x30')](_0x2963b2['model'],_0x2963b2[_0xe5be('0x2e')]);_0x16434f[_0xe5be('0x31')]=_[_0xe5be('0x30')](_0x2963b2['model'],qs[_0xe5be('0x32')](_0x42e5f1[_0xe5be('0x2e')][_0xe5be('0x32')]));_0x16434f[_0xe5be('0x31')]=_0x16434f[_0xe5be('0x31')][_0xe5be('0x33')]?_0x16434f[_0xe5be('0x31')]:_0x2963b2[_0xe5be('0x2d')];_0x16434f[_0xe5be('0x36')]=qs['sort'](_0x42e5f1[_0xe5be('0x2e')]['sort']);_0x16434f[_0xe5be('0x38')]=qs['filters'](_['pick'](_0x42e5f1[_0xe5be('0x2e')],_0x2963b2[_0xe5be('0x39')]));if(_0x42e5f1[_0xe5be('0x2e')][_0xe5be('0x3b')]){_0x16434f[_0xe5be('0x38')]=_[_0xe5be('0x3c')](_0x16434f['where'],{'$or':_[_0xe5be('0x29')](_0x16434f[_0xe5be('0x31')],function(_0xa0b85b){var _0x206ca1={};_0x206ca1[_0xa0b85b]={'$like':'%'+_0x42e5f1[_0xe5be('0x2e')][_0xe5be('0x3b')]+'%'};return _0x206ca1;})});}_0x16434f=_[_0xe5be('0x3c')]({},_0x16434f,_0x42e5f1[_0xe5be('0x3e')]);return _0x37ca49['getConfigurations'](_0x16434f);}})[_0xe5be('0x23')](function(_0x3e9186){if(_0x3e9186){_0x44b6db=_0x3e9186[_0xe5be('0x33')];if(!_0x42e5f1[_0xe5be('0x2e')][_0xe5be('0x34')](_0xe5be('0x35'))){_0x16434f[_0xe5be('0x1e')]=qs[_0xe5be('0x1e')](_0x42e5f1[_0xe5be('0x2e')][_0xe5be('0x1e')]);_0x16434f[_0xe5be('0x1c')]=qs[_0xe5be('0x1c')](_0x42e5f1[_0xe5be('0x2e')][_0xe5be('0x1c')]);}return _0x37ca49[_0xe5be('0x4b')](_0x16434f);}})[_0xe5be('0x23')](function(_0x41d954){if(_0x41d954){return _0x41d954?{'count':_0x44b6db,'rows':_0x41d954}:null;}})['then'](respondWithResult(_0x1bd72f,null))[_0xe5be('0x49')](handleError(_0x1bd72f,null));};exports[_0xe5be('0x4c')]=function(_0x4f8e23,_0x2e14d7,_0x51da11){if(_0x4f8e23[_0xe5be('0x48')]['id']){delete _0x4f8e23['body']['id'];}return db['SalesforceAccount']['findOne']({'where':{'id':_0x4f8e23[_0xe5be('0x44')]['id']}})[_0xe5be('0x23')](handleEntityNotFound(_0x2e14d7,null))['then'](function(_0x21ba64){if(_0x21ba64){_0x4f8e23[_0xe5be('0x48')][_0xe5be('0x4d')]=_0x21ba64['id'];_0x4f8e23[_0xe5be('0x48')]['Subjects']=integrations[_0xe5be('0x4e')](_0x4f8e23['body']['channel'],_0x4f8e23['body']['type']);_0x4f8e23[_0xe5be('0x48')]['Descriptions']=integrations[_0xe5be('0x4f')](_0x4f8e23[_0xe5be('0x48')][_0xe5be('0x50')],_0x4f8e23[_0xe5be('0x48')][_0xe5be('0x2c')]);return db[_0xe5be('0x4a')]['create'](_0x4f8e23[_0xe5be('0x48')],{'include':[{'model':db[_0xe5be('0x51')],'as':'Subjects'},{'model':db['SalesforceField'],'as':_0xe5be('0x52')}]});}return null;})[_0xe5be('0x23')](respondWithResult(_0x2e14d7,null))[_0xe5be('0x49')](handleError(_0x2e14d7,null));};exports[_0xe5be('0x53')]=function(_0x51a9a7,_0x1d32f5,_0x5b7413){var _0x3b0d70;var _0x389df3='';var _0x5246ce=_0xe5be('0x54');return db[_0xe5be('0x45')][_0xe5be('0x55')]({'where':{'id':_0x51a9a7[_0xe5be('0x44')]['id']},'attributes':['id',_0xe5be('0x56'),_0xe5be('0x57'),_0xe5be('0x58'),_0xe5be('0x59'),'password',_0xe5be('0x5a')]})[_0xe5be('0x23')](handleEntityNotFound(_0x1d32f5,null))[_0xe5be('0x23')](function(_0x2ef68d){if(_0x2ef68d){_0x389df3=_0x2ef68d['remoteUri'];var _0x1620ac=_0x389df3[_0xe5be('0x5b')](-0x1);if(_0x1620ac==='/'){_0x389df3=_0x389df3[_0xe5be('0x5c')](0x0,_0x389df3[_0xe5be('0x5d')](_0x1620ac));}_0x3b0d70=new jsforce[(_0xe5be('0x5e'))]({'oauth2':{'loginUrl':_0x389df3,'clientId':_0x2ef68d['clientId'],'clientSecret':_0x2ef68d[_0xe5be('0x58')]}});return _0x3b0d70[_0xe5be('0x5f')](_0x2ef68d['username'],_0x2ef68d[_0xe5be('0x60')][_0xe5be('0x61')](_0x2ef68d[_0xe5be('0x5a')]));}})[_0xe5be('0x23')](function(_0x114fac){if(_0x114fac){if(!_[_0xe5be('0x62')](_0x51a9a7['query']['ticketType'])){_0x5246ce=_0x51a9a7[_0xe5be('0x2e')][_0xe5be('0x63')];}return _0x3b0d70['sobject'](_0x5246ce)[_0xe5be('0x64')]();}})[_0xe5be('0x23')](function(_0x2f1590){var _0x20755a=[_0xe5be('0x65'),_0xe5be('0x66'),_0xe5be('0x67'),_0xe5be('0x68'),'Subject',_0xe5be('0x69')];var _0x4ea1ab=[_0xe5be('0x6a'),_0xe5be('0x6b'),_0xe5be('0x6c'),_0xe5be('0x6d'),_0xe5be('0x6e'),_0xe5be('0x6f'),_0xe5be('0x70')];if(_0x2f1590){_[_0xe5be('0x71')](_0x2f1590[_0xe5be('0x32')],function(_0x511893){return _0x20755a[_0xe5be('0x72')](_0x511893[_0xe5be('0x26')])||!_0x4ea1ab[_0xe5be('0x72')](_0x511893[_0xe5be('0x2c')]);});return{'count':_0x2f1590[_0xe5be('0x32')][_0xe5be('0x33')],'rows':_[_0xe5be('0x29')](_0x2f1590['fields'],function(_0x3d829e){return{'id':_0x3d829e['name'],'name':_0x3d829e[_0xe5be('0x73')],'custom':_0x3d829e[_0xe5be('0x74')],'options':_0x3d829e['picklistValues'][_0xe5be('0x33')]>0x0?_[_0xe5be('0x29')](_0x3d829e[_0xe5be('0x75')],function(_0x2db605){return{'name':_0x2db605['label'],'value':_0x2db605[_0xe5be('0x76')]};}):_0x3d829e[_0xe5be('0x2c')]==_0xe5be('0x6d')?[{'name':_0xe5be('0x77'),'value':_0xe5be('0x78')},{'name':_0xe5be('0x79'),'value':'false'}]:[]};})};}})[_0xe5be('0x23')](respondWithResult(_0x1d32f5,null))[_0xe5be('0x49')](function(_0x2d6a2e){var _0x52afc3=_0x51a9a7[_0xe5be('0x2e')][_0xe5be('0x7a')]?0x1f4:_0x2d6a2e[_0xe5be('0x7b')]||0x1f4;logger[_0xe5be('0x7c')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x52afc3,JSON['stringify'](_0x2d6a2e));delete _0x2d6a2e[_0xe5be('0x26')];if(_0x52afc3===0x191){_0x52afc3=0x190;}_0x1d32f5[_0xe5be('0x19')](_0x52afc3)[_0xe5be('0x27')](_0x51a9a7[_0xe5be('0x2e')][_0xe5be('0x7a')]?{'message':_0xe5be('0x7d'),'statusCode':_0x2d6a2e[_0xe5be('0x7b')]}:_0x2d6a2e);});};
\ No newline at end of file
+var _0x1e84=['json','apply','save','update','then','destroy','end','error','name','index','map','SalesforceAccount','rawAttributes','fieldName','type','key','query','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','merge','filter','options','includeAll','findAll','catch','show','params','keys','include','find','create','body','order','getConfigurations','addConfiguration','findOne','AccountId','Subjects','channel','Descriptions','getDescriptions','SalesforceField','Task','remoteUri','clientId','securityToken','slice','substring','lastIndexOf','clientSecret','login','password','concat','ticketType','sobject','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Subject','Description','int','picklist','boolean','textarea','phone','remove','includes','label','custom','picklistValues','True','true','false','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','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','../../components/integrations/configuration','sendStatus','status','offset','limit','count','set','Content-Range'];(function(_0x5285fd,_0x2d9144){var _0x4a9e11=function(_0x4583c2){while(--_0x4583c2){_0x5285fd['push'](_0x5285fd['shift']());}};_0x4a9e11(++_0x2d9144);}(_0x1e84,0xd4));var _0x41e8=function(_0x46cf00,_0x457a43){_0x46cf00=_0x46cf00-0x0;var _0x3974dc=_0x1e84[_0x46cf00];return _0x3974dc;};'use strict';var emlformat=require(_0x41e8('0x0'));var rimraf=require(_0x41e8('0x1'));var zipdir=require(_0x41e8('0x2'));var jsonpatch=require(_0x41e8('0x3'));var rp=require(_0x41e8('0x4'));var moment=require(_0x41e8('0x5'));var BPromise=require(_0x41e8('0x6'));var Mustache=require('mustache');var util=require(_0x41e8('0x7'));var path=require('path');var sox=require(_0x41e8('0x8'));var csv=require(_0x41e8('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x41e8('0xa'));var crypto=require(_0x41e8('0xb'));var jsforce=require(_0x41e8('0xc'));var deskjs=require(_0x41e8('0xd'));var toCsv=require(_0x41e8('0x9'));var querystring=require(_0x41e8('0xe'));var Papa=require(_0x41e8('0xf'));var Redis=require('ioredis');var authService=require(_0x41e8('0x10'));var qs=require(_0x41e8('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x41e8('0x12'));var logger=require(_0x41e8('0x13'))(_0x41e8('0x14'));var utils=require(_0x41e8('0x15'));var config=require(_0x41e8('0x16'));var licenseUtil=require(_0x41e8('0x17'));var db=require('../../mysqldb')['db'];var integrations=require(_0x41e8('0x18'));function respondWithStatusCode(_0x168917,_0x47f8b1){_0x47f8b1=_0x47f8b1||0xcc;return function(_0x44d11a){if(_0x44d11a){return _0x168917[_0x41e8('0x19')](_0x47f8b1);}return _0x168917[_0x41e8('0x1a')](_0x47f8b1)['end']();};}function respondWithResult(_0x5c9ddb,_0x473844){_0x473844=_0x473844||0xc8;return function(_0x266374){if(_0x266374){return _0x5c9ddb[_0x41e8('0x1a')](_0x473844)['json'](_0x266374);}};}function respondWithFilteredResult(_0x3792ae,_0x2c364f){return function(_0x38050a){if(_0x38050a){var _0x5366ea=typeof _0x2c364f[_0x41e8('0x1b')]==='undefined'&&typeof _0x2c364f[_0x41e8('0x1c')]==='undefined';var _0x48ed2c=_0x38050a[_0x41e8('0x1d')];var _0x4d78f6=_0x5366ea?0x0:_0x2c364f[_0x41e8('0x1b')];var _0x3ef8e6=_0x5366ea?_0x38050a[_0x41e8('0x1d')]:_0x2c364f[_0x41e8('0x1b')]+_0x2c364f[_0x41e8('0x1c')];var _0x33734a;if(_0x3ef8e6>=_0x48ed2c){_0x3ef8e6=_0x48ed2c;_0x33734a=0xc8;}else{_0x33734a=0xce;}_0x3792ae['status'](_0x33734a);return _0x3792ae[_0x41e8('0x1e')](_0x41e8('0x1f'),_0x4d78f6+'-'+_0x3ef8e6+'/'+_0x48ed2c)[_0x41e8('0x20')](_0x38050a);}return null;};}function patchUpdates(_0x454e38){return function(_0x31c25a){try{jsonpatch[_0x41e8('0x21')](_0x31c25a,_0x454e38,!![]);}catch(_0x2b9dca){return BPromise['reject'](_0x2b9dca);}return _0x31c25a[_0x41e8('0x22')]();};}function saveUpdates(_0xe28dae,_0x103712){return function(_0x12d0e2){if(_0x12d0e2){return _0x12d0e2[_0x41e8('0x23')](_0xe28dae)[_0x41e8('0x24')](function(_0x1b3422){return _0x1b3422;});}return null;};}function removeEntity(_0x370fbc,_0x3759ec){return function(_0x8a1644){if(_0x8a1644){return _0x8a1644[_0x41e8('0x25')]()['then'](function(){_0x370fbc[_0x41e8('0x1a')](0xcc)[_0x41e8('0x26')]();});}};}function handleEntityNotFound(_0x2cfb18,_0x132034){return function(_0x48c83f){if(!_0x48c83f){_0x2cfb18[_0x41e8('0x19')](0x194);}return _0x48c83f;};}function handleError(_0xc09c24,_0x29f17f){_0x29f17f=_0x29f17f||0x1f4;return function(_0x3c5d63){logger[_0x41e8('0x27')](_0x3c5d63['stack']);if(_0x3c5d63[_0x41e8('0x28')]){delete _0x3c5d63[_0x41e8('0x28')];}_0xc09c24[_0x41e8('0x1a')](_0x29f17f)['send'](_0x3c5d63);};}exports[_0x41e8('0x29')]=function(_0x2914eb,_0x1690b4){var _0xbe3ae4={},_0x261821={},_0x283562={'count':0x0,'rows':[]};var _0x4f7fe9=_[_0x41e8('0x2a')](db[_0x41e8('0x2b')][_0x41e8('0x2c')],function(_0x423ba7){return{'name':_0x423ba7[_0x41e8('0x2d')],'type':_0x423ba7[_0x41e8('0x2e')][_0x41e8('0x2f')]};});_0x261821['model']=_[_0x41e8('0x2a')](_0x4f7fe9,'name');_0x261821[_0x41e8('0x30')]=_['keys'](_0x2914eb[_0x41e8('0x30')]);_0x261821['filters']=_[_0x41e8('0x31')](_0x261821['model'],_0x261821[_0x41e8('0x30')]);_0xbe3ae4[_0x41e8('0x32')]=_[_0x41e8('0x31')](_0x261821[_0x41e8('0x33')],qs[_0x41e8('0x34')](_0x2914eb['query'][_0x41e8('0x34')]));_0xbe3ae4[_0x41e8('0x32')]=_0xbe3ae4['attributes'][_0x41e8('0x35')]?_0xbe3ae4[_0x41e8('0x32')]:_0x261821['model'];if(!_0x2914eb[_0x41e8('0x30')][_0x41e8('0x36')](_0x41e8('0x37'))){_0xbe3ae4[_0x41e8('0x1c')]=qs['limit'](_0x2914eb[_0x41e8('0x30')][_0x41e8('0x1c')]);_0xbe3ae4[_0x41e8('0x1b')]=qs[_0x41e8('0x1b')](_0x2914eb[_0x41e8('0x30')][_0x41e8('0x1b')]);}_0xbe3ae4['order']=qs[_0x41e8('0x38')](_0x2914eb[_0x41e8('0x30')][_0x41e8('0x38')]);_0xbe3ae4[_0x41e8('0x39')]=qs[_0x41e8('0x3a')](_[_0x41e8('0x3b')](_0x2914eb[_0x41e8('0x30')],_0x261821[_0x41e8('0x3a')]),_0x4f7fe9);if(_0x2914eb[_0x41e8('0x30')]['filter']){_0xbe3ae4[_0x41e8('0x39')]=_[_0x41e8('0x3c')](_0xbe3ae4[_0x41e8('0x39')],{'$or':_[_0x41e8('0x2a')](_0x4f7fe9,function(_0x529875){if(_0x529875[_0x41e8('0x2e')]!=='VIRTUAL'){var _0x560a24={};_0x560a24[_0x529875[_0x41e8('0x28')]]={'$like':'%'+_0x2914eb[_0x41e8('0x30')][_0x41e8('0x3d')]+'%'};return _0x560a24;}})});}_0xbe3ae4=_[_0x41e8('0x3c')]({},_0xbe3ae4,_0x2914eb[_0x41e8('0x3e')]);var _0x46ef65={'where':_0xbe3ae4[_0x41e8('0x39')]};return db[_0x41e8('0x2b')][_0x41e8('0x1d')](_0x46ef65)[_0x41e8('0x24')](function(_0xf9ac2){_0x283562[_0x41e8('0x1d')]=_0xf9ac2;if(_0x2914eb[_0x41e8('0x30')][_0x41e8('0x3f')]){_0xbe3ae4['include']=[{'all':!![]}];}return db[_0x41e8('0x2b')][_0x41e8('0x40')](_0xbe3ae4);})[_0x41e8('0x24')](function(_0x513a04){_0x283562['rows']=_0x513a04;return _0x283562;})[_0x41e8('0x24')](respondWithFilteredResult(_0x1690b4,_0xbe3ae4))[_0x41e8('0x41')](handleError(_0x1690b4,null));};exports[_0x41e8('0x42')]=function(_0x56e57c,_0x49c720){var _0x597a38={'raw':![],'where':{'id':_0x56e57c[_0x41e8('0x43')]['id']}},_0x200701={};_0x200701[_0x41e8('0x33')]=_[_0x41e8('0x44')](db[_0x41e8('0x2b')][_0x41e8('0x2c')]);_0x200701[_0x41e8('0x30')]=_['keys'](_0x56e57c[_0x41e8('0x30')]);_0x200701[_0x41e8('0x3a')]=_[_0x41e8('0x31')](_0x200701[_0x41e8('0x33')],_0x200701[_0x41e8('0x30')]);_0x597a38[_0x41e8('0x32')]=_[_0x41e8('0x31')](_0x200701[_0x41e8('0x33')],qs[_0x41e8('0x34')](_0x56e57c[_0x41e8('0x30')]['fields']));_0x597a38['attributes']=_0x597a38[_0x41e8('0x32')][_0x41e8('0x35')]?_0x597a38['attributes']:_0x200701[_0x41e8('0x33')];if(_0x56e57c[_0x41e8('0x30')][_0x41e8('0x3f')]){_0x597a38[_0x41e8('0x45')]=[{'all':!![]}];}_0x597a38=_[_0x41e8('0x3c')]({},_0x597a38,_0x56e57c[_0x41e8('0x3e')]);return db[_0x41e8('0x2b')][_0x41e8('0x46')](_0x597a38)[_0x41e8('0x24')](handleEntityNotFound(_0x49c720,null))['then'](respondWithResult(_0x49c720,null))[_0x41e8('0x41')](handleError(_0x49c720,null));};exports[_0x41e8('0x47')]=function(_0x46f70f,_0x7d5ac9){return db[_0x41e8('0x2b')][_0x41e8('0x47')](_0x46f70f[_0x41e8('0x48')],{})[_0x41e8('0x24')](respondWithResult(_0x7d5ac9,0xc9))[_0x41e8('0x41')](handleError(_0x7d5ac9,null));};exports[_0x41e8('0x23')]=function(_0x19a371,_0x4e2d1d){if(_0x19a371[_0x41e8('0x48')]['id']){delete _0x19a371['body']['id'];}return db[_0x41e8('0x2b')][_0x41e8('0x46')]({'where':{'id':_0x19a371[_0x41e8('0x43')]['id']}})[_0x41e8('0x24')](handleEntityNotFound(_0x4e2d1d,null))[_0x41e8('0x24')](saveUpdates(_0x19a371[_0x41e8('0x48')],null))[_0x41e8('0x24')](respondWithResult(_0x4e2d1d,null))[_0x41e8('0x41')](handleError(_0x4e2d1d,null));};exports[_0x41e8('0x25')]=function(_0x3d21f5,_0x578269){return db[_0x41e8('0x2b')][_0x41e8('0x46')]({'where':{'id':_0x3d21f5['params']['id']}})[_0x41e8('0x24')](handleEntityNotFound(_0x578269,null))[_0x41e8('0x24')](removeEntity(_0x578269,null))[_0x41e8('0x41')](handleError(_0x578269,null));};exports['getConfigurations']=function(_0x125a5a,_0x211398,_0x89b1b2){var _0x1559b5={};var _0x8d6990={};var _0x39f638;var _0x352e6c;return db[_0x41e8('0x2b')]['findOne']({'where':{'id':_0x125a5a[_0x41e8('0x43')]['id']}})['then'](handleEntityNotFound(_0x211398,null))[_0x41e8('0x24')](function(_0x3d93ea){if(_0x3d93ea){_0x39f638=_0x3d93ea;_0x8d6990[_0x41e8('0x33')]=_[_0x41e8('0x44')](db['SalesforceConfiguration'][_0x41e8('0x2c')]);_0x8d6990['query']=_[_0x41e8('0x44')](_0x125a5a[_0x41e8('0x30')]);_0x8d6990[_0x41e8('0x3a')]=_[_0x41e8('0x31')](_0x8d6990[_0x41e8('0x33')],_0x8d6990[_0x41e8('0x30')]);_0x1559b5[_0x41e8('0x32')]=_[_0x41e8('0x31')](_0x8d6990['model'],qs[_0x41e8('0x34')](_0x125a5a[_0x41e8('0x30')][_0x41e8('0x34')]));_0x1559b5[_0x41e8('0x32')]=_0x1559b5[_0x41e8('0x32')]['length']?_0x1559b5['attributes']:_0x8d6990['model'];_0x1559b5[_0x41e8('0x49')]=qs[_0x41e8('0x38')](_0x125a5a[_0x41e8('0x30')][_0x41e8('0x38')]);_0x1559b5['where']=qs['filters'](_[_0x41e8('0x3b')](_0x125a5a[_0x41e8('0x30')],_0x8d6990[_0x41e8('0x3a')]));if(_0x125a5a[_0x41e8('0x30')][_0x41e8('0x3d')]){_0x1559b5['where']=_['merge'](_0x1559b5[_0x41e8('0x39')],{'$or':_[_0x41e8('0x2a')](_0x1559b5[_0x41e8('0x32')],function(_0x189b94){var _0x584fb2={};_0x584fb2[_0x189b94]={'$like':'%'+_0x125a5a[_0x41e8('0x30')][_0x41e8('0x3d')]+'%'};return _0x584fb2;})});}_0x1559b5=_['merge']({},_0x1559b5,_0x125a5a[_0x41e8('0x3e')]);return _0x39f638[_0x41e8('0x4a')](_0x1559b5);}})['then'](function(_0x4c7a0a){if(_0x4c7a0a){_0x352e6c=_0x4c7a0a['length'];if(!_0x125a5a['query'][_0x41e8('0x36')](_0x41e8('0x37'))){_0x1559b5[_0x41e8('0x1c')]=qs[_0x41e8('0x1c')](_0x125a5a['query'][_0x41e8('0x1c')]);_0x1559b5[_0x41e8('0x1b')]=qs[_0x41e8('0x1b')](_0x125a5a[_0x41e8('0x30')][_0x41e8('0x1b')]);}return _0x39f638[_0x41e8('0x4a')](_0x1559b5);}})[_0x41e8('0x24')](function(_0x231ea5){if(_0x231ea5){return _0x231ea5?{'count':_0x352e6c,'rows':_0x231ea5}:null;}})[_0x41e8('0x24')](respondWithResult(_0x211398,null))[_0x41e8('0x41')](handleError(_0x211398,null));};exports[_0x41e8('0x4b')]=function(_0x31651c,_0x22d3c6,_0x1bc9e5){if(_0x31651c[_0x41e8('0x48')]['id']){delete _0x31651c[_0x41e8('0x48')]['id'];}return db[_0x41e8('0x2b')][_0x41e8('0x4c')]({'where':{'id':_0x31651c[_0x41e8('0x43')]['id']}})['then'](handleEntityNotFound(_0x22d3c6,null))['then'](function(_0x1798c3){if(_0x1798c3){_0x31651c['body'][_0x41e8('0x4d')]=_0x1798c3['id'];_0x31651c[_0x41e8('0x48')][_0x41e8('0x4e')]=integrations['getSubjects'](_0x31651c[_0x41e8('0x48')][_0x41e8('0x4f')],_0x31651c[_0x41e8('0x48')][_0x41e8('0x2e')]);_0x31651c[_0x41e8('0x48')][_0x41e8('0x50')]=integrations[_0x41e8('0x51')](_0x31651c[_0x41e8('0x48')][_0x41e8('0x4f')],_0x31651c[_0x41e8('0x48')][_0x41e8('0x2e')]);return db['SalesforceConfiguration']['create'](_0x31651c[_0x41e8('0x48')],{'include':[{'model':db['SalesforceField'],'as':'Subjects'},{'model':db[_0x41e8('0x52')],'as':_0x41e8('0x50')}]});}return null;})['then'](respondWithResult(_0x22d3c6,null))[_0x41e8('0x41')](handleError(_0x22d3c6,null));};exports['getFields']=function(_0x7572b3,_0x547472,_0x120521){var _0x30426a;var _0xedc63c='';var _0x22f285=_0x41e8('0x53');return db[_0x41e8('0x2b')][_0x41e8('0x4c')]({'where':{'id':_0x7572b3[_0x41e8('0x43')]['id']},'attributes':['id',_0x41e8('0x54'),_0x41e8('0x55'),'clientSecret','username','password',_0x41e8('0x56')]})[_0x41e8('0x24')](handleEntityNotFound(_0x547472,null))[_0x41e8('0x24')](function(_0x268c26){if(_0x268c26){_0xedc63c=_0x268c26['remoteUri'];var _0x51d7ff=_0xedc63c[_0x41e8('0x57')](-0x1);if(_0x51d7ff==='/'){_0xedc63c=_0xedc63c[_0x41e8('0x58')](0x0,_0xedc63c[_0x41e8('0x59')](_0x51d7ff));}_0x30426a=new jsforce['Connection']({'oauth2':{'loginUrl':_0xedc63c,'clientId':_0x268c26[_0x41e8('0x55')],'clientSecret':_0x268c26[_0x41e8('0x5a')]}});return _0x30426a[_0x41e8('0x5b')](_0x268c26['username'],_0x268c26[_0x41e8('0x5c')][_0x41e8('0x5d')](_0x268c26[_0x41e8('0x56')]));}})['then'](function(_0x2cf7b6){if(_0x2cf7b6){if(!_['isNil'](_0x7572b3['query'][_0x41e8('0x5e')])){_0x22f285=_0x7572b3[_0x41e8('0x30')][_0x41e8('0x5e')];}return _0x30426a[_0x41e8('0x5f')](_0x22f285)['describe']();}})[_0x41e8('0x24')](function(_0x4234a4){var _0x28ff51=[_0x41e8('0x60'),_0x41e8('0x61'),_0x41e8('0x62'),_0x41e8('0x63'),_0x41e8('0x64'),_0x41e8('0x65')];var _0x22c5eb=['string',_0x41e8('0x66'),_0x41e8('0x67'),_0x41e8('0x68'),'email',_0x41e8('0x69'),_0x41e8('0x6a')];if(_0x4234a4){_[_0x41e8('0x6b')](_0x4234a4[_0x41e8('0x34')],function(_0xa21958){return _0x28ff51[_0x41e8('0x6c')](_0xa21958['name'])||!_0x22c5eb[_0x41e8('0x6c')](_0xa21958[_0x41e8('0x2e')]);});return{'count':_0x4234a4[_0x41e8('0x34')][_0x41e8('0x35')],'rows':_[_0x41e8('0x2a')](_0x4234a4[_0x41e8('0x34')],function(_0x144544){return{'id':_0x144544[_0x41e8('0x28')],'name':_0x144544[_0x41e8('0x6d')],'custom':_0x144544[_0x41e8('0x6e')],'options':_0x144544['picklistValues']['length']>0x0?_[_0x41e8('0x2a')](_0x144544[_0x41e8('0x6f')],function(_0x4cc670){return{'name':_0x4cc670[_0x41e8('0x6d')],'value':_0x4cc670['value']};}):_0x144544[_0x41e8('0x2e')]=='boolean'?[{'name':_0x41e8('0x70'),'value':_0x41e8('0x71')},{'name':'False','value':_0x41e8('0x72')}]:[]};})};}})[_0x41e8('0x24')](respondWithResult(_0x547472,null))['catch'](function(_0x5dd595){var _0x17dfeb=_0x7572b3['query'][_0x41e8('0x73')]?0x1f4:_0x5dd595[_0x41e8('0x74')]||0x1f4;logger['error'](_0x41e8('0x75'),_0x41e8('0x76'),_0x17dfeb,JSON[_0x41e8('0x77')](_0x5dd595));delete _0x5dd595[_0x41e8('0x28')];if(_0x17dfeb===0x191){_0x17dfeb=0x190;}_0x547472[_0x41e8('0x1a')](_0x17dfeb)[_0x41e8('0x78')](_0x7572b3[_0x41e8('0x30')][_0x41e8('0x73')]?{'message':_0x41e8('0x79'),'statusCode':_0x5dd595[_0x41e8('0x74')]}:_0x5dd595);});};
\ No newline at end of file
index 480911d..315240d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dd1=['./intSalesforceAccount.attributes','../../components/integrations/configuration','exports','define','SalesforceAccount','int_salesforce_accounts','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x3eb7b6,_0x1aff11){var _0x4b4de2=function(_0x346379){while(--_0x346379){_0x3eb7b6['push'](_0x3eb7b6['shift']());}};_0x4b4de2(++_0x1aff11);}(_0x2dd1,0x18c));var _0x12dd=function(_0x4d8290,_0x105166){_0x4d8290=_0x4d8290-0x0;var _0x4248d3=_0x2dd1[_0x4d8290];return _0x4248d3;};'use strict';var _=require(_0x12dd('0x0'));var util=require(_0x12dd('0x1'));var logger=require(_0x12dd('0x2'))(_0x12dd('0x3'));var moment=require(_0x12dd('0x4'));var BPromise=require(_0x12dd('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x12dd('0x6'));var rimraf=require(_0x12dd('0x7'));var config=require(_0x12dd('0x8'));var attributes=require(_0x12dd('0x9'));var integrations=require(_0x12dd('0xa'));module[_0x12dd('0xb')]=function(_0x5bcb6e,_0x4353e1){return _0x5bcb6e[_0x12dd('0xc')](_0x12dd('0xd'),attributes,{'tableName':_0x12dd('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa1c0=['util','api','moment','bluebird','path','rimraf','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports','SalesforceAccount','int_salesforce_accounts','lodash'];(function(_0x130766,_0x4d746e){var _0x3919fe=function(_0x563fd3){while(--_0x563fd3){_0x130766['push'](_0x130766['shift']());}};_0x3919fe(++_0x4d746e);}(_0xa1c0,0x1ac));var _0x0a1c=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0xa1c0[_0x3e5086];return _0xfeb102;};'use strict';var _=require(_0x0a1c('0x0'));var util=require(_0x0a1c('0x1'));var logger=require('../../config/logger')(_0x0a1c('0x2'));var moment=require(_0x0a1c('0x3'));var BPromise=require(_0x0a1c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a1c('0x5'));var rimraf=require(_0x0a1c('0x6'));var config=require(_0x0a1c('0x7'));var attributes=require(_0x0a1c('0x8'));var integrations=require(_0x0a1c('0x9'));module[_0x0a1c('0xa')]=function(_0x5b8f9a,_0x300325){return _0x5b8f9a['define'](_0x0a1c('0xb'),attributes,{'tableName':_0x0a1c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c843b7b..a0348cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ab6=['http','request','then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetSalesforceAccount','SalesforceAccount','findAll','options','raw','where','attributes','map','include','model','catch','ShowSalesforceAccount','find','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x2efe3a,_0xd38cd2){var _0x294f8d=function(_0x2d946c){while(--_0x2d946c){_0x2efe3a['push'](_0x2efe3a['shift']());}};_0x294f8d(++_0xd38cd2);}(_0x4ab6,0x1a6));var _0x64ab=function(_0x14bc03,_0x1f858b){_0x14bc03=_0x14bc03-0x0;var _0x9af4a1=_0x4ab6[_0x14bc03];return _0x9af4a1;};'use strict';var _=require('lodash');var util=require(_0x64ab('0x0'));var moment=require('moment');var BPromise=require(_0x64ab('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x64ab('0x2'));var db=require(_0x64ab('0x3'))['db'];var utils=require(_0x64ab('0x4'));var logger=require(_0x64ab('0x5'))(_0x64ab('0x6'));var config=require(_0x64ab('0x7'));var jayson=require(_0x64ab('0x8'));var client=jayson[_0x64ab('0x9')][_0x64ab('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3aad13,_0x2b1f70,_0x22ac82){return new BPromise(function(_0x103064,_0x1eccaa){return client[_0x64ab('0xb')](_0x3aad13,_0x22ac82)[_0x64ab('0xc')](function(_0x3dd06a){logger[_0x64ab('0xd')](_0x64ab('0xe'),_0x2b1f70,_0x64ab('0xf'));logger[_0x64ab('0x10')](_0x64ab('0x11'),_0x2b1f70,'request\x20sent',JSON[_0x64ab('0x12')](_0x3dd06a));if(_0x3dd06a[_0x64ab('0x13')]){if(_0x3dd06a[_0x64ab('0x13')][_0x64ab('0x14')]===0x1f4){logger[_0x64ab('0x13')]('SalesforceAccount,\x20%s,\x20%s',_0x2b1f70,_0x3dd06a[_0x64ab('0x13')][_0x64ab('0x15')]);return _0x1eccaa(_0x3dd06a['error'][_0x64ab('0x15')]);}logger[_0x64ab('0x13')]('SalesforceAccount,\x20%s,\x20%s',_0x2b1f70,_0x3dd06a[_0x64ab('0x13')]['message']);return _0x103064(_0x3dd06a[_0x64ab('0x13')]['message']);}else{logger[_0x64ab('0xd')](_0x64ab('0xe'),_0x2b1f70,_0x64ab('0xf'));_0x103064(_0x3dd06a[_0x64ab('0x16')][_0x64ab('0x15')]);}})['catch'](function(_0x4bf415){logger[_0x64ab('0x13')](_0x64ab('0xe'),_0x2b1f70,_0x4bf415);_0x1eccaa(_0x4bf415);});});}exports[_0x64ab('0x17')]=function(_0x150cac){var _0x2a00ac=this;return new Promise(function(_0x5017e6,_0x2f0784){return db[_0x64ab('0x18')][_0x64ab('0x19')]({'raw':_0x150cac['options']?_0x150cac[_0x64ab('0x1a')][_0x64ab('0x1b')]===undefined?!![]:![]:!![],'where':_0x150cac['options']?_0x150cac[_0x64ab('0x1a')][_0x64ab('0x1c')]||null:null,'attributes':_0x150cac[_0x64ab('0x1a')]?_0x150cac[_0x64ab('0x1a')][_0x64ab('0x1d')]||null:null,'limit':_0x150cac[_0x64ab('0x1a')]?_0x150cac[_0x64ab('0x1a')]['limit']||null:null,'include':_0x150cac['options']?_0x150cac[_0x64ab('0x1a')]['include']?_[_0x64ab('0x1e')](_0x150cac[_0x64ab('0x1a')]['include'],function(_0x5c136b){return{'model':db[_0x5c136b['model']],'as':_0x5c136b['as'],'attributes':_0x5c136b[_0x64ab('0x1d')],'include':_0x5c136b[_0x64ab('0x1f')]?_[_0x64ab('0x1e')](_0x5c136b['include'],function(_0x45099f){return{'model':db[_0x45099f[_0x64ab('0x20')]],'as':_0x45099f['as'],'attributes':_0x45099f['attributes'],'include':_0x45099f['include']?_[_0x64ab('0x1e')](_0x45099f[_0x64ab('0x1f')],function(_0x28a1e8){return{'model':db[_0x28a1e8[_0x64ab('0x20')]],'as':_0x28a1e8['as'],'attributes':_0x28a1e8[_0x64ab('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x64ab('0xc')](function(_0x521cf6){logger[_0x64ab('0xd')]('GetSalesforceAccount',_0x150cac);logger['debug'](_0x64ab('0x17'),_0x150cac,JSON[_0x64ab('0x12')](_0x521cf6));_0x5017e6(_0x521cf6);})[_0x64ab('0x21')](function(_0x4b4daa){logger[_0x64ab('0x13')](_0x64ab('0x17'),_0x4b4daa[_0x64ab('0x15')],_0x150cac);_0x2f0784(_0x2a00ac[_0x64ab('0x13')](0x1f4,_0x4b4daa[_0x64ab('0x15')]));});});};exports[_0x64ab('0x22')]=function(_0x4d0d7f){var _0x35f722=this;return new Promise(function(_0x5a5aae,_0x1abe00){return db[_0x64ab('0x18')][_0x64ab('0x23')]({'raw':_0x4d0d7f['options']?_0x4d0d7f[_0x64ab('0x1a')][_0x64ab('0x1b')]===undefined?!![]:![]:!![],'where':_0x4d0d7f[_0x64ab('0x1a')]?_0x4d0d7f[_0x64ab('0x1a')][_0x64ab('0x1c')]||null:null,'attributes':_0x4d0d7f[_0x64ab('0x1a')]?_0x4d0d7f[_0x64ab('0x1a')][_0x64ab('0x1d')]||null:null,'include':_0x4d0d7f[_0x64ab('0x1a')]?_0x4d0d7f[_0x64ab('0x1a')]['include']?_['map'](_0x4d0d7f['options'][_0x64ab('0x1f')],function(_0x4d755f){return{'model':db[_0x4d755f[_0x64ab('0x20')]],'as':_0x4d755f['as'],'attributes':_0x4d755f['attributes'],'include':_0x4d755f[_0x64ab('0x1f')]?_[_0x64ab('0x1e')](_0x4d755f[_0x64ab('0x1f')],function(_0xc6e518){return{'model':db[_0xc6e518[_0x64ab('0x20')]],'as':_0xc6e518['as'],'attributes':_0xc6e518['attributes'],'include':_0xc6e518[_0x64ab('0x1f')]?_['map'](_0xc6e518[_0x64ab('0x1f')],function(_0x43c11d){return{'model':db[_0x43c11d['model']],'as':_0x43c11d['as'],'attributes':_0x43c11d[_0x64ab('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x64ab('0xc')](function(_0x84ce0c){logger[_0x64ab('0xd')](_0x64ab('0x22'),_0x4d0d7f);logger[_0x64ab('0x10')](_0x64ab('0x22'),_0x4d0d7f,JSON[_0x64ab('0x12')](_0x84ce0c));_0x5a5aae(_0x84ce0c);})[_0x64ab('0x21')](function(_0xf918d3){logger[_0x64ab('0x13')](_0x64ab('0x22'),_0xf918d3[_0x64ab('0x15')],_0x4d0d7f);_0x1abe00(_0x35f722[_0x64ab('0x13')](0x1f4,_0xf918d3[_0x64ab('0x15')]));});});};
\ No newline at end of file
+var _0xacfb=['GetSalesforceAccount','findAll','raw','options','where','attributes','include','model','map','then','ShowSalesforceAccount','SalesforceAccount','find','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','SalesforceAccount,\x20%s,\x20%s','message','info','result','catch'];(function(_0x554371,_0x327276){var _0x29165e=function(_0x483dbc){while(--_0x483dbc){_0x554371['push'](_0x554371['shift']());}};_0x29165e(++_0x327276);}(_0xacfb,0x95));var _0xbacf=function(_0xe5b43,_0x27e05c){_0xe5b43=_0xe5b43-0x0;var _0x423da8=_0xacfb[_0xe5b43];return _0x423da8;};'use strict';var _=require('lodash');var util=require(_0xbacf('0x0'));var moment=require('moment');var BPromise=require(_0xbacf('0x1'));var rs=require(_0xbacf('0x2'));var fs=require('fs');var Redis=require(_0xbacf('0x3'));var db=require(_0xbacf('0x4'))['db'];var utils=require(_0xbacf('0x5'));var logger=require(_0xbacf('0x6'))(_0xbacf('0x7'));var config=require(_0xbacf('0x8'));var jayson=require(_0xbacf('0x9'));var client=jayson[_0xbacf('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1a2535,_0xfc31df,_0x56dbf2){return new BPromise(function(_0x44c330,_0x3f4cc2){return client['request'](_0x1a2535,_0x56dbf2)['then'](function(_0x1c2478){logger['info']('SalesforceAccount,\x20%s,\x20%s',_0xfc31df,_0xbacf('0xb'));logger[_0xbacf('0xc')](_0xbacf('0xd'),_0xfc31df,_0xbacf('0xb'),JSON[_0xbacf('0xe')](_0x1c2478));if(_0x1c2478['error']){if(_0x1c2478[_0xbacf('0xf')]['code']===0x1f4){logger[_0xbacf('0xf')](_0xbacf('0x10'),_0xfc31df,_0x1c2478[_0xbacf('0xf')][_0xbacf('0x11')]);return _0x3f4cc2(_0x1c2478[_0xbacf('0xf')][_0xbacf('0x11')]);}logger[_0xbacf('0xf')](_0xbacf('0x10'),_0xfc31df,_0x1c2478['error']['message']);return _0x44c330(_0x1c2478[_0xbacf('0xf')][_0xbacf('0x11')]);}else{logger[_0xbacf('0x12')](_0xbacf('0x10'),_0xfc31df,_0xbacf('0xb'));_0x44c330(_0x1c2478[_0xbacf('0x13')][_0xbacf('0x11')]);}})[_0xbacf('0x14')](function(_0x36ee55){logger[_0xbacf('0xf')](_0xbacf('0x10'),_0xfc31df,_0x36ee55);_0x3f4cc2(_0x36ee55);});});}exports[_0xbacf('0x15')]=function(_0x2266b8){var _0x3e33ea=this;return new Promise(function(_0x505ec5,_0x2439e3){return db['SalesforceAccount'][_0xbacf('0x16')]({'raw':_0x2266b8['options']?_0x2266b8['options'][_0xbacf('0x17')]===undefined?!![]:![]:!![],'where':_0x2266b8[_0xbacf('0x18')]?_0x2266b8['options'][_0xbacf('0x19')]||null:null,'attributes':_0x2266b8[_0xbacf('0x18')]?_0x2266b8['options'][_0xbacf('0x1a')]||null:null,'limit':_0x2266b8['options']?_0x2266b8['options']['limit']||null:null,'include':_0x2266b8['options']?_0x2266b8[_0xbacf('0x18')]['include']?_['map'](_0x2266b8[_0xbacf('0x18')][_0xbacf('0x1b')],function(_0xb55f7b){return{'model':db[_0xb55f7b[_0xbacf('0x1c')]],'as':_0xb55f7b['as'],'attributes':_0xb55f7b[_0xbacf('0x1a')],'include':_0xb55f7b[_0xbacf('0x1b')]?_[_0xbacf('0x1d')](_0xb55f7b[_0xbacf('0x1b')],function(_0x5ee6f){return{'model':db[_0x5ee6f[_0xbacf('0x1c')]],'as':_0x5ee6f['as'],'attributes':_0x5ee6f['attributes'],'include':_0x5ee6f[_0xbacf('0x1b')]?_[_0xbacf('0x1d')](_0x5ee6f['include'],function(_0x44f07c){return{'model':db[_0x44f07c[_0xbacf('0x1c')]],'as':_0x44f07c['as'],'attributes':_0x44f07c[_0xbacf('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xbacf('0x1e')](function(_0x981a4f){logger[_0xbacf('0x12')]('GetSalesforceAccount',_0x2266b8);logger[_0xbacf('0xc')](_0xbacf('0x15'),_0x2266b8,JSON[_0xbacf('0xe')](_0x981a4f));_0x505ec5(_0x981a4f);})[_0xbacf('0x14')](function(_0x16bd9e){logger['error']('GetSalesforceAccount',_0x16bd9e[_0xbacf('0x11')],_0x2266b8);_0x2439e3(_0x3e33ea[_0xbacf('0xf')](0x1f4,_0x16bd9e[_0xbacf('0x11')]));});});};exports[_0xbacf('0x1f')]=function(_0x1d7dae){var _0x4f54ca=this;return new Promise(function(_0x5e67cc,_0x25c999){return db[_0xbacf('0x20')][_0xbacf('0x21')]({'raw':_0x1d7dae[_0xbacf('0x18')]?_0x1d7dae['options'][_0xbacf('0x17')]===undefined?!![]:![]:!![],'where':_0x1d7dae[_0xbacf('0x18')]?_0x1d7dae[_0xbacf('0x18')][_0xbacf('0x19')]||null:null,'attributes':_0x1d7dae[_0xbacf('0x18')]?_0x1d7dae[_0xbacf('0x18')][_0xbacf('0x1a')]||null:null,'include':_0x1d7dae[_0xbacf('0x18')]?_0x1d7dae[_0xbacf('0x18')]['include']?_['map'](_0x1d7dae[_0xbacf('0x18')]['include'],function(_0x1274ec){return{'model':db[_0x1274ec[_0xbacf('0x1c')]],'as':_0x1274ec['as'],'attributes':_0x1274ec['attributes'],'include':_0x1274ec[_0xbacf('0x1b')]?_['map'](_0x1274ec[_0xbacf('0x1b')],function(_0x3f82a4){return{'model':db[_0x3f82a4[_0xbacf('0x1c')]],'as':_0x3f82a4['as'],'attributes':_0x3f82a4[_0xbacf('0x1a')],'include':_0x3f82a4[_0xbacf('0x1b')]?_[_0xbacf('0x1d')](_0x3f82a4[_0xbacf('0x1b')],function(_0x361a09){return{'model':db[_0x361a09['model']],'as':_0x361a09['as'],'attributes':_0x361a09[_0xbacf('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xbacf('0x1e')](function(_0x791920){logger[_0xbacf('0x12')](_0xbacf('0x1f'),_0x1d7dae);logger[_0xbacf('0xc')](_0xbacf('0x1f'),_0x1d7dae,JSON['stringify'](_0x791920));_0x5e67cc(_0x791920);})[_0xbacf('0x14')](function(_0x29240d){logger[_0xbacf('0xf')](_0xbacf('0x1f'),_0x29240d[_0xbacf('0x11')],_0x1d7dae);_0x25c999(_0x4f54ca[_0xbacf('0xf')](0x1f4,_0x29240d['message']));});});};
\ No newline at end of file
index 6d2cc36..1a998c1 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(_0x3eb417,_0x3cc373){var _0x4c7ddd=function(_0x5a1192){while(--_0x5a1192){_0x3eb417['push'](_0x3eb417['shift']());}};_0x4c7ddd(++_0x3cc373);}(_0x5f66,0x1a0));var _0x65f6=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0x5f66[_0x3ab9ee];return _0x82ee88;};'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 _0x2ef3=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intSalesforceConfiguration.controller','get','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','put','update','exports','multer','util','path'];(function(_0x2a6dca,_0x28df07){var _0x335f65=function(_0x1a7aba){while(--_0x1a7aba){_0x2a6dca['push'](_0x2a6dca['shift']());}};_0x335f65(++_0x28df07);}(_0x2ef3,0xba));var _0x32ef=function(_0x4b137d,_0x39b817){_0x4b137d=_0x4b137d-0x0;var _0x3d183e=_0x2ef3[_0x4b137d];return _0x3d183e;};'use strict';var multer=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var path=require(_0x32ef('0x2'));var timeout=require(_0x32ef('0x3'));var express=require(_0x32ef('0x4'));var router=express[_0x32ef('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x32ef('0x6'));var interaction=require(_0x32ef('0x7'));var config=require('../../config/environment');var controller=require(_0x32ef('0x8'));router[_0x32ef('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x32ef('0x9')](_0x32ef('0xa'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xc')]);router[_0x32ef('0x9')](_0x32ef('0xd'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xe')]);router[_0x32ef('0x9')](_0x32ef('0xf'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x32ef('0x9')](_0x32ef('0x10'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x11')]);router['post']('/',auth[_0x32ef('0xb')](),controller['create']);router[_0x32ef('0x12')]('/:id',auth[_0x32ef('0xb')](),controller[_0x32ef('0x13')]);router['delete']('/:id',auth[_0x32ef('0xb')](),controller['destroy']);module[_0x32ef('0x14')]=router;
\ No newline at end of file
index 0cdc5ab..88342ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x136c=['nothing','exports','STRING','ENUM','Task','Case','contact_lead','contact','lead','account'];(function(_0x4b8dee,_0x1211f4){var _0x167fc3=function(_0x4f65ff){while(--_0x4f65ff){_0x4b8dee['push'](_0x4b8dee['shift']());}};_0x167fc3(++_0x1211f4);}(_0x136c,0x65));var _0xc136=function(_0x195cae,_0x3d40ca){_0x195cae=_0x195cae-0x0;var _0x4a37bc=_0x136c[_0x195cae];return _0x4a37bc;};'use strict';var Sequelize=require('sequelize');module[_0xc136('0x0')]={'name':{'type':Sequelize[_0xc136('0x1')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0xc136('0x2')](_0xc136('0x3'),_0xc136('0x4')),'defaultValue':_0xc136('0x3')},'moduleSearch':{'type':Sequelize[_0xc136('0x2')](_0xc136('0x5'),_0xc136('0x6'),_0xc136('0x7'),'account_contact_lead',_0xc136('0x8')),'defaultValue':_0xc136('0x5')},'moduleCreate':{'type':Sequelize[_0xc136('0x2')](_0xc136('0x9'),_0xc136('0x6'),_0xc136('0x7'),_0xc136('0x8')),'defaultValue':_0xc136('0x7')},'leadId':{'type':Sequelize[_0xc136('0x1')]},'additionalSearchAccount':{'type':Sequelize[_0xc136('0x1')]},'additionalSearchContact':{'type':Sequelize['STRING']},'additionalSearchLead':{'type':Sequelize[_0xc136('0x1')]}};
\ No newline at end of file
+var _0x94df=['STRING','ENUM','Task','contact_lead','contact','lead','account_contact_lead','account','nothing','sequelize','exports'];(function(_0x5c6337,_0x3b5e96){var _0x4aba56=function(_0x2af5f4){while(--_0x2af5f4){_0x5c6337['push'](_0x5c6337['shift']());}};_0x4aba56(++_0x3b5e96);}(_0x94df,0xa3));var _0xf94d=function(_0x9186ec,_0x344bd2){_0x9186ec=_0x9186ec-0x0;var _0x178b5b=_0x94df[_0x9186ec];return _0x178b5b;};'use strict';var Sequelize=require(_0xf94d('0x0'));module[_0xf94d('0x1')]={'name':{'type':Sequelize[_0xf94d('0x2')]},'description':{'type':Sequelize[_0xf94d('0x2')]},'ticketType':{'type':Sequelize[_0xf94d('0x3')](_0xf94d('0x4'),'Case'),'defaultValue':_0xf94d('0x4')},'moduleSearch':{'type':Sequelize[_0xf94d('0x3')](_0xf94d('0x5'),_0xf94d('0x6'),_0xf94d('0x7'),_0xf94d('0x8'),_0xf94d('0x9')),'defaultValue':_0xf94d('0x5')},'moduleCreate':{'type':Sequelize[_0xf94d('0x3')](_0xf94d('0xa'),_0xf94d('0x6'),'lead',_0xf94d('0x9')),'defaultValue':_0xf94d('0x7')},'leadId':{'type':Sequelize[_0xf94d('0x2')]},'additionalSearchAccount':{'type':Sequelize[_0xf94d('0x2')]},'additionalSearchContact':{'type':Sequelize[_0xf94d('0x2')]},'additionalSearchLead':{'type':Sequelize[_0xf94d('0x2')]}};
\ No newline at end of file
index 9ba571a..6ce6f53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x705a=['then','destroy','error','name','send','index','map','SalesforceConfiguration','rawAttributes','fieldName','key','model','keys','query','intersection','fields','attributes','length','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','include','findAll','show','includeAll','find','catch','create','body','update','params','findOne','SalesforceField','getFields','hasOwnProperty','nolimit','getSubjects','getDescriptions','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','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/environment','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject'];(function(_0x5d2ff7,_0x550212){var _0x2f1673=function(_0x331abd){while(--_0x331abd){_0x5d2ff7['push'](_0x5d2ff7['shift']());}};_0x2f1673(++_0x550212);}(_0x705a,0x7f));var _0xa705=function(_0x565581,_0x480d79){_0x565581=_0x565581-0x0;var _0x4e0d34=_0x705a[_0x565581];return _0x4e0d34;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa705('0x0'));var zipdir=require(_0xa705('0x1'));var jsonpatch=require(_0xa705('0x2'));var rp=require(_0xa705('0x3'));var moment=require(_0xa705('0x4'));var BPromise=require(_0xa705('0x5'));var Mustache=require(_0xa705('0x6'));var util=require(_0xa705('0x7'));var path=require(_0xa705('0x8'));var sox=require(_0xa705('0x9'));var csv=require(_0xa705('0xa'));var ejs=require(_0xa705('0xb'));var fs=require('fs');var fs_extra=require(_0xa705('0xc'));var _=require(_0xa705('0xd'));var squel=require(_0xa705('0xe'));var crypto=require('crypto');var jsforce=require(_0xa705('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xa705('0xa'));var querystring=require(_0xa705('0x10'));var Papa=require(_0xa705('0x11'));var Redis=require('ioredis');var authService=require(_0xa705('0x12'));var qs=require(_0xa705('0x13'));var as=require(_0xa705('0x14'));var hardwareService=require(_0xa705('0x15'));var logger=require(_0xa705('0x16'))(_0xa705('0x17'));var utils=require('../../config/utils');var config=require(_0xa705('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xa705('0x19'))['db'];function respondWithStatusCode(_0x3fe3ca,_0x4e808a){_0x4e808a=_0x4e808a||0xcc;return function(_0x2da9f7){if(_0x2da9f7){return _0x3fe3ca[_0xa705('0x1a')](_0x4e808a);}return _0x3fe3ca[_0xa705('0x1b')](_0x4e808a)['end']();};}function respondWithResult(_0x2b1ceb,_0x483f8d){_0x483f8d=_0x483f8d||0xc8;return function(_0x3b41f7){if(_0x3b41f7){return _0x2b1ceb[_0xa705('0x1b')](_0x483f8d)['json'](_0x3b41f7);}};}function respondWithFilteredResult(_0x427ee5,_0x4e5642){return function(_0x94b4ad){if(_0x94b4ad){var _0x365ddc=typeof _0x4e5642[_0xa705('0x1c')]===_0xa705('0x1d')&&typeof _0x4e5642[_0xa705('0x1e')]===_0xa705('0x1d');var _0x2d3bd4=_0x94b4ad[_0xa705('0x1f')];var _0x207e44=_0x365ddc?0x0:_0x4e5642[_0xa705('0x1c')];var _0x19197a=_0x365ddc?_0x94b4ad[_0xa705('0x1f')]:_0x4e5642[_0xa705('0x1c')]+_0x4e5642[_0xa705('0x1e')];var _0x5007eb;if(_0x19197a>=_0x2d3bd4){_0x19197a=_0x2d3bd4;_0x5007eb=0xc8;}else{_0x5007eb=0xce;}_0x427ee5[_0xa705('0x1b')](_0x5007eb);return _0x427ee5[_0xa705('0x20')](_0xa705('0x21'),_0x207e44+'-'+_0x19197a+'/'+_0x2d3bd4)[_0xa705('0x22')](_0x94b4ad);}return null;};}function patchUpdates(_0xcde4a9){return function(_0x15a942){try{jsonpatch[_0xa705('0x23')](_0x15a942,_0xcde4a9,!![]);}catch(_0x3abff5){return BPromise[_0xa705('0x24')](_0x3abff5);}return _0x15a942['save']();};}function saveUpdates(_0x468bcf,_0x2b4ada){return function(_0x57a710){if(_0x57a710){return _0x57a710['update'](_0x468bcf)[_0xa705('0x25')](function(_0x4225cb){return _0x4225cb;});}return null;};}function removeEntity(_0x52f4fd,_0x523323){return function(_0x4022c3){if(_0x4022c3){return _0x4022c3[_0xa705('0x26')]()[_0xa705('0x25')](function(){_0x52f4fd[_0xa705('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ab70a,_0x682275){return function(_0x2037a8){if(!_0x2037a8){_0x2ab70a['sendStatus'](0x194);}return _0x2037a8;};}function handleError(_0x39d0a1,_0x17d46c){_0x17d46c=_0x17d46c||0x1f4;return function(_0x1ce183){logger[_0xa705('0x27')](_0x1ce183['stack']);if(_0x1ce183['name']){delete _0x1ce183[_0xa705('0x28')];}_0x39d0a1[_0xa705('0x1b')](_0x17d46c)[_0xa705('0x29')](_0x1ce183);};}exports[_0xa705('0x2a')]=function(_0x4370f2,_0x36111d){var _0x51bebc={},_0x3da5dc={},_0x314240={'count':0x0,'rows':[]};var _0x21505d=_[_0xa705('0x2b')](db[_0xa705('0x2c')][_0xa705('0x2d')],function(_0x14075b){return{'name':_0x14075b[_0xa705('0x2e')],'type':_0x14075b['type'][_0xa705('0x2f')]};});_0x3da5dc[_0xa705('0x30')]=_[_0xa705('0x2b')](_0x21505d,_0xa705('0x28'));_0x3da5dc['query']=_[_0xa705('0x31')](_0x4370f2[_0xa705('0x32')]);_0x3da5dc['filters']=_[_0xa705('0x33')](_0x3da5dc['model'],_0x3da5dc[_0xa705('0x32')]);_0x51bebc['attributes']=_['intersection'](_0x3da5dc[_0xa705('0x30')],qs[_0xa705('0x34')](_0x4370f2[_0xa705('0x32')]['fields']));_0x51bebc[_0xa705('0x35')]=_0x51bebc[_0xa705('0x35')][_0xa705('0x36')]?_0x51bebc[_0xa705('0x35')]:_0x3da5dc[_0xa705('0x30')];if(!_0x4370f2[_0xa705('0x32')]['hasOwnProperty']('nolimit')){_0x51bebc[_0xa705('0x1e')]=qs[_0xa705('0x1e')](_0x4370f2[_0xa705('0x32')][_0xa705('0x1e')]);_0x51bebc['offset']=qs[_0xa705('0x1c')](_0x4370f2[_0xa705('0x32')][_0xa705('0x1c')]);}_0x51bebc[_0xa705('0x37')]=qs[_0xa705('0x38')](_0x4370f2[_0xa705('0x32')][_0xa705('0x38')]);_0x51bebc[_0xa705('0x39')]=qs[_0xa705('0x3a')](_[_0xa705('0x3b')](_0x4370f2['query'],_0x3da5dc[_0xa705('0x3a')]),_0x21505d);if(_0x4370f2[_0xa705('0x32')][_0xa705('0x3c')]){_0x51bebc[_0xa705('0x39')]=_[_0xa705('0x3d')](_0x51bebc[_0xa705('0x39')],{'$or':_[_0xa705('0x2b')](_0x21505d,function(_0x3e8d96){if(_0x3e8d96[_0xa705('0x3e')]!==_0xa705('0x3f')){var _0x3434ba={};_0x3434ba[_0x3e8d96[_0xa705('0x28')]]={'$like':'%'+_0x4370f2[_0xa705('0x32')][_0xa705('0x3c')]+'%'};return _0x3434ba;}})});}_0x51bebc=_[_0xa705('0x3d')]({},_0x51bebc,_0x4370f2[_0xa705('0x40')]);var _0x8a876e={'where':_0x51bebc[_0xa705('0x39')]};return db[_0xa705('0x2c')]['count'](_0x8a876e)['then'](function(_0x32c7b9){_0x314240[_0xa705('0x1f')]=_0x32c7b9;if(_0x4370f2[_0xa705('0x32')]['includeAll']){_0x51bebc[_0xa705('0x41')]=[{'all':!![]}];}return db[_0xa705('0x2c')][_0xa705('0x42')](_0x51bebc);})[_0xa705('0x25')](function(_0x3cbb6e){_0x314240['rows']=_0x3cbb6e;return _0x314240;})[_0xa705('0x25')](respondWithFilteredResult(_0x36111d,_0x51bebc))['catch'](handleError(_0x36111d,null));};exports[_0xa705('0x43')]=function(_0x59e786,_0x1f541d){var _0x4de85f={'raw':![],'where':{'id':_0x59e786['params']['id']}},_0x1451e0={};_0x1451e0['model']=_['keys'](db[_0xa705('0x2c')][_0xa705('0x2d')]);_0x1451e0[_0xa705('0x32')]=_[_0xa705('0x31')](_0x59e786[_0xa705('0x32')]);_0x1451e0[_0xa705('0x3a')]=_['intersection'](_0x1451e0[_0xa705('0x30')],_0x1451e0[_0xa705('0x32')]);_0x4de85f[_0xa705('0x35')]=_[_0xa705('0x33')](_0x1451e0[_0xa705('0x30')],qs['fields'](_0x59e786[_0xa705('0x32')]['fields']));_0x4de85f[_0xa705('0x35')]=_0x4de85f[_0xa705('0x35')][_0xa705('0x36')]?_0x4de85f[_0xa705('0x35')]:_0x1451e0['model'];if(_0x59e786[_0xa705('0x32')][_0xa705('0x44')]){_0x4de85f[_0xa705('0x41')]=[{'all':!![]}];}_0x4de85f=_[_0xa705('0x3d')]({},_0x4de85f,_0x59e786[_0xa705('0x40')]);return db[_0xa705('0x2c')][_0xa705('0x45')](_0x4de85f)[_0xa705('0x25')](handleEntityNotFound(_0x1f541d,null))[_0xa705('0x25')](respondWithResult(_0x1f541d,null))[_0xa705('0x46')](handleError(_0x1f541d,null));};exports[_0xa705('0x47')]=function(_0x3bbb78,_0x3f4472){return db[_0xa705('0x2c')][_0xa705('0x47')](_0x3bbb78[_0xa705('0x48')],{})[_0xa705('0x25')](respondWithResult(_0x3f4472,0xc9))[_0xa705('0x46')](handleError(_0x3f4472,null));};exports[_0xa705('0x49')]=function(_0x3d8703,_0xa5a429){if(_0x3d8703[_0xa705('0x48')]['id']){delete _0x3d8703[_0xa705('0x48')]['id'];}return db[_0xa705('0x2c')][_0xa705('0x45')]({'where':{'id':_0x3d8703[_0xa705('0x4a')]['id']}})[_0xa705('0x25')](handleEntityNotFound(_0xa5a429,null))['then'](saveUpdates(_0x3d8703[_0xa705('0x48')],null))[_0xa705('0x25')](respondWithResult(_0xa5a429,null))[_0xa705('0x46')](handleError(_0xa5a429,null));};exports[_0xa705('0x26')]=function(_0x4afb42,_0x1f102a){return db[_0xa705('0x2c')][_0xa705('0x45')]({'where':{'id':_0x4afb42[_0xa705('0x4a')]['id']}})[_0xa705('0x25')](handleEntityNotFound(_0x1f102a,null))['then'](removeEntity(_0x1f102a,null))['catch'](handleError(_0x1f102a,null));};exports['getFields']=function(_0x28c180,_0x4d5266,_0x1e6d05){var _0x989501={};var _0x1ed954={};var _0x2da42d;var _0x1a59d6;return db['SalesforceConfiguration'][_0xa705('0x4b')]({'where':{'id':_0x28c180[_0xa705('0x4a')]['id']}})[_0xa705('0x25')](handleEntityNotFound(_0x4d5266,null))['then'](function(_0x21ad0c){if(_0x21ad0c){_0x2da42d=_0x21ad0c;_0x1ed954[_0xa705('0x30')]=_['keys'](db[_0xa705('0x4c')][_0xa705('0x2d')]);_0x1ed954[_0xa705('0x32')]=_[_0xa705('0x31')](_0x28c180[_0xa705('0x32')]);_0x1ed954['filters']=_[_0xa705('0x33')](_0x1ed954[_0xa705('0x30')],_0x1ed954[_0xa705('0x32')]);_0x989501[_0xa705('0x35')]=_['intersection'](_0x1ed954['model'],qs[_0xa705('0x34')](_0x28c180[_0xa705('0x32')][_0xa705('0x34')]));_0x989501['attributes']=_0x989501[_0xa705('0x35')]['length']?_0x989501[_0xa705('0x35')]:_0x1ed954[_0xa705('0x30')];_0x989501['order']=qs[_0xa705('0x38')](_0x28c180[_0xa705('0x32')]['sort']);_0x989501[_0xa705('0x39')]=qs[_0xa705('0x3a')](_['pick'](_0x28c180[_0xa705('0x32')],_0x1ed954[_0xa705('0x3a')]));if(_0x28c180[_0xa705('0x32')][_0xa705('0x3c')]){_0x989501[_0xa705('0x39')]=_[_0xa705('0x3d')](_0x989501[_0xa705('0x39')],{'$or':_[_0xa705('0x2b')](_0x989501[_0xa705('0x35')],function(_0x50b109){var _0x317454={};_0x317454[_0x50b109]={'$like':'%'+_0x28c180[_0xa705('0x32')]['filter']+'%'};return _0x317454;})});}_0x989501=_['merge']({},_0x989501,_0x28c180[_0xa705('0x40')]);return _0x2da42d[_0xa705('0x4d')](_0x989501);}})[_0xa705('0x25')](function(_0x236403){if(_0x236403){_0x1a59d6=_0x236403[_0xa705('0x36')];if(!_0x28c180[_0xa705('0x32')][_0xa705('0x4e')](_0xa705('0x4f'))){_0x989501[_0xa705('0x1e')]=qs[_0xa705('0x1e')](_0x28c180['query'][_0xa705('0x1e')]);_0x989501[_0xa705('0x1c')]=qs[_0xa705('0x1c')](_0x28c180[_0xa705('0x32')]['offset']);}return _0x2da42d[_0xa705('0x4d')](_0x989501);}})['then'](function(_0x25e048){if(_0x25e048){return _0x25e048?{'count':_0x1a59d6,'rows':_0x25e048}:null;}})[_0xa705('0x25')](respondWithResult(_0x4d5266,null))['catch'](handleError(_0x4d5266,null));};exports[_0xa705('0x50')]=function(_0x468eea,_0x4d6806,_0x2ee8d5){var _0x34a97e={};var _0x28a07a={};var _0x3c5487;var _0x56283a;return db[_0xa705('0x2c')][_0xa705('0x4b')]({'where':{'id':_0x468eea[_0xa705('0x4a')]['id']}})[_0xa705('0x25')](handleEntityNotFound(_0x4d6806,null))[_0xa705('0x25')](function(_0x53a95d){if(_0x53a95d){_0x3c5487=_0x53a95d;_0x28a07a[_0xa705('0x30')]=_[_0xa705('0x31')](db[_0xa705('0x4c')][_0xa705('0x2d')]);_0x28a07a[_0xa705('0x32')]=_[_0xa705('0x31')](_0x468eea[_0xa705('0x32')]);_0x28a07a[_0xa705('0x3a')]=_[_0xa705('0x33')](_0x28a07a[_0xa705('0x30')],_0x28a07a[_0xa705('0x32')]);_0x34a97e[_0xa705('0x35')]=_[_0xa705('0x33')](_0x28a07a[_0xa705('0x30')],qs[_0xa705('0x34')](_0x468eea[_0xa705('0x32')]['fields']));_0x34a97e['attributes']=_0x34a97e['attributes'][_0xa705('0x36')]?_0x34a97e[_0xa705('0x35')]:_0x28a07a[_0xa705('0x30')];_0x34a97e[_0xa705('0x37')]=qs['sort'](_0x468eea['query'][_0xa705('0x38')]);_0x34a97e[_0xa705('0x39')]=qs[_0xa705('0x3a')](_['pick'](_0x468eea['query'],_0x28a07a['filters']));if(_0x468eea[_0xa705('0x32')][_0xa705('0x3c')]){_0x34a97e[_0xa705('0x39')]=_[_0xa705('0x3d')](_0x34a97e[_0xa705('0x39')],{'$or':_['map'](_0x34a97e[_0xa705('0x35')],function(_0x35a31b){var _0x18c15c={};_0x18c15c[_0x35a31b]={'$like':'%'+_0x468eea[_0xa705('0x32')][_0xa705('0x3c')]+'%'};return _0x18c15c;})});}_0x34a97e=_[_0xa705('0x3d')]({},_0x34a97e,_0x468eea[_0xa705('0x40')]);return _0x3c5487['getSubjects'](_0x34a97e);}})[_0xa705('0x25')](function(_0x4eb7b4){if(_0x4eb7b4){_0x56283a=_0x4eb7b4[_0xa705('0x36')];if(!_0x468eea[_0xa705('0x32')][_0xa705('0x4e')](_0xa705('0x4f'))){_0x34a97e['limit']=qs[_0xa705('0x1e')](_0x468eea[_0xa705('0x32')][_0xa705('0x1e')]);_0x34a97e[_0xa705('0x1c')]=qs[_0xa705('0x1c')](_0x468eea[_0xa705('0x32')]['offset']);}return _0x3c5487['getSubjects'](_0x34a97e);}})[_0xa705('0x25')](function(_0x4617f5){if(_0x4617f5){return _0x4617f5?{'count':_0x56283a,'rows':_0x4617f5}:null;}})[_0xa705('0x25')](respondWithResult(_0x4d6806,null))['catch'](handleError(_0x4d6806,null));};exports[_0xa705('0x51')]=function(_0x2a5318,_0x5eeb50,_0x2cf0eb){var _0x5465bc={};var _0x4db981={};var _0x8cf548;var _0x1bc7b3;return db[_0xa705('0x2c')]['findOne']({'where':{'id':_0x2a5318['params']['id']}})[_0xa705('0x25')](handleEntityNotFound(_0x5eeb50,null))[_0xa705('0x25')](function(_0x590f90){if(_0x590f90){_0x8cf548=_0x590f90;_0x4db981[_0xa705('0x30')]=_['keys'](db[_0xa705('0x4c')][_0xa705('0x2d')]);_0x4db981['query']=_[_0xa705('0x31')](_0x2a5318[_0xa705('0x32')]);_0x4db981[_0xa705('0x3a')]=_[_0xa705('0x33')](_0x4db981['model'],_0x4db981[_0xa705('0x32')]);_0x5465bc['attributes']=_[_0xa705('0x33')](_0x4db981[_0xa705('0x30')],qs[_0xa705('0x34')](_0x2a5318[_0xa705('0x32')]['fields']));_0x5465bc[_0xa705('0x35')]=_0x5465bc['attributes'][_0xa705('0x36')]?_0x5465bc[_0xa705('0x35')]:_0x4db981[_0xa705('0x30')];_0x5465bc[_0xa705('0x37')]=qs[_0xa705('0x38')](_0x2a5318[_0xa705('0x32')]['sort']);_0x5465bc[_0xa705('0x39')]=qs[_0xa705('0x3a')](_[_0xa705('0x3b')](_0x2a5318[_0xa705('0x32')],_0x4db981[_0xa705('0x3a')]));if(_0x2a5318[_0xa705('0x32')]['filter']){_0x5465bc[_0xa705('0x39')]=_[_0xa705('0x3d')](_0x5465bc[_0xa705('0x39')],{'$or':_[_0xa705('0x2b')](_0x5465bc['attributes'],function(_0x22473f){var _0x4dbb61={};_0x4dbb61[_0x22473f]={'$like':'%'+_0x2a5318[_0xa705('0x32')][_0xa705('0x3c')]+'%'};return _0x4dbb61;})});}_0x5465bc=_[_0xa705('0x3d')]({},_0x5465bc,_0x2a5318[_0xa705('0x40')]);return _0x8cf548[_0xa705('0x51')](_0x5465bc);}})[_0xa705('0x25')](function(_0xbd4c13){if(_0xbd4c13){_0x1bc7b3=_0xbd4c13[_0xa705('0x36')];if(!_0x2a5318[_0xa705('0x32')]['hasOwnProperty'](_0xa705('0x4f'))){_0x5465bc[_0xa705('0x1e')]=qs[_0xa705('0x1e')](_0x2a5318[_0xa705('0x32')][_0xa705('0x1e')]);_0x5465bc[_0xa705('0x1c')]=qs['offset'](_0x2a5318['query'][_0xa705('0x1c')]);}return _0x8cf548[_0xa705('0x51')](_0x5465bc);}})[_0xa705('0x25')](function(_0x34a34f){if(_0x34a34f){return _0x34a34f?{'count':_0x1bc7b3,'rows':_0x34a34f}:null;}})[_0xa705('0x25')](respondWithResult(_0x5eeb50,null))['catch'](handleError(_0x5eeb50,null));};
\ No newline at end of file
+var _0xd19d=['Content-Range','reject','save','update','then','sendStatus','name','send','index','map','fieldName','key','model','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','SalesforceConfiguration','includeAll','include','catch','show','params','rawAttributes','options','find','create','body','destroy','getFields','findOne','SalesforceField','getSubjects','getDescriptions','eml-format','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','json','undefined','limit','count','offset','status','set'];(function(_0x26544f,_0x79f614){var _0x2fff64=function(_0x4d1a11){while(--_0x4d1a11){_0x26544f['push'](_0x26544f['shift']());}};_0x2fff64(++_0x79f614);}(_0xd19d,0x79));var _0xdd19=function(_0x2a3dd7,_0x49651d){_0x2a3dd7=_0x2a3dd7-0x0;var _0xe8b7df=_0xd19d[_0x2a3dd7];return _0xe8b7df;};'use strict';var emlformat=require(_0xdd19('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xdd19('0x1'));var BPromise=require(_0xdd19('0x2'));var Mustache=require(_0xdd19('0x3'));var util=require('util');var path=require(_0xdd19('0x4'));var sox=require('sox');var csv=require(_0xdd19('0x5'));var ejs=require(_0xdd19('0x6'));var fs=require('fs');var fs_extra=require(_0xdd19('0x7'));var _=require(_0xdd19('0x8'));var squel=require(_0xdd19('0x9'));var crypto=require(_0xdd19('0xa'));var jsforce=require(_0xdd19('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xdd19('0x5'));var querystring=require(_0xdd19('0xc'));var Papa=require(_0xdd19('0xd'));var Redis=require('ioredis');var authService=require(_0xdd19('0xe'));var qs=require(_0xdd19('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xdd19('0x10'))('api');var utils=require(_0xdd19('0x11'));var config=require(_0xdd19('0x12'));var licenseUtil=require(_0xdd19('0x13'));var db=require(_0xdd19('0x14'))['db'];function respondWithStatusCode(_0x4797d8,_0x139173){_0x139173=_0x139173||0xcc;return function(_0x234b48){if(_0x234b48){return _0x4797d8['sendStatus'](_0x139173);}return _0x4797d8['status'](_0x139173)[_0xdd19('0x15')]();};}function respondWithResult(_0x58b6d3,_0x131901){_0x131901=_0x131901||0xc8;return function(_0x5e5a5b){if(_0x5e5a5b){return _0x58b6d3['status'](_0x131901)[_0xdd19('0x16')](_0x5e5a5b);}};}function respondWithFilteredResult(_0xf96661,_0xdeee1f){return function(_0x56b0e7){if(_0x56b0e7){var _0x489da4=typeof _0xdeee1f['offset']===_0xdd19('0x17')&&typeof _0xdeee1f[_0xdd19('0x18')]===_0xdd19('0x17');var _0x34d3e9=_0x56b0e7[_0xdd19('0x19')];var _0xe3207a=_0x489da4?0x0:_0xdeee1f[_0xdd19('0x1a')];var _0x46d9cb=_0x489da4?_0x56b0e7['count']:_0xdeee1f['offset']+_0xdeee1f['limit'];var _0x42063f;if(_0x46d9cb>=_0x34d3e9){_0x46d9cb=_0x34d3e9;_0x42063f=0xc8;}else{_0x42063f=0xce;}_0xf96661[_0xdd19('0x1b')](_0x42063f);return _0xf96661[_0xdd19('0x1c')](_0xdd19('0x1d'),_0xe3207a+'-'+_0x46d9cb+'/'+_0x34d3e9)[_0xdd19('0x16')](_0x56b0e7);}return null;};}function patchUpdates(_0x50a964){return function(_0x351cc5){try{jsonpatch['apply'](_0x351cc5,_0x50a964,!![]);}catch(_0x440f15){return BPromise[_0xdd19('0x1e')](_0x440f15);}return _0x351cc5[_0xdd19('0x1f')]();};}function saveUpdates(_0x4754c7,_0x4d6994){return function(_0x5deaea){if(_0x5deaea){return _0x5deaea[_0xdd19('0x20')](_0x4754c7)[_0xdd19('0x21')](function(_0x3bc4ac){return _0x3bc4ac;});}return null;};}function removeEntity(_0x397fee,_0x329c93){return function(_0x3b669a){if(_0x3b669a){return _0x3b669a['destroy']()[_0xdd19('0x21')](function(){_0x397fee[_0xdd19('0x1b')](0xcc)[_0xdd19('0x15')]();});}};}function handleEntityNotFound(_0x4f83be,_0x4d59f9){return function(_0x26be6f){if(!_0x26be6f){_0x4f83be[_0xdd19('0x22')](0x194);}return _0x26be6f;};}function handleError(_0x10ef39,_0x5b0b70){_0x5b0b70=_0x5b0b70||0x1f4;return function(_0x5569ec){logger['error'](_0x5569ec['stack']);if(_0x5569ec[_0xdd19('0x23')]){delete _0x5569ec[_0xdd19('0x23')];}_0x10ef39[_0xdd19('0x1b')](_0x5b0b70)[_0xdd19('0x24')](_0x5569ec);};}exports[_0xdd19('0x25')]=function(_0x1b23fc,_0x259ef5){var _0x4a97e8={},_0x4d91f8={},_0x8cdf84={'count':0x0,'rows':[]};var _0x1dffee=_[_0xdd19('0x26')](db['SalesforceConfiguration']['rawAttributes'],function(_0x30ba22){return{'name':_0x30ba22[_0xdd19('0x27')],'type':_0x30ba22['type'][_0xdd19('0x28')]};});_0x4d91f8[_0xdd19('0x29')]=_['map'](_0x1dffee,_0xdd19('0x23'));_0x4d91f8['query']=_[_0xdd19('0x2a')](_0x1b23fc['query']);_0x4d91f8[_0xdd19('0x2b')]=_[_0xdd19('0x2c')](_0x4d91f8[_0xdd19('0x29')],_0x4d91f8[_0xdd19('0x2d')]);_0x4a97e8['attributes']=_[_0xdd19('0x2c')](_0x4d91f8['model'],qs[_0xdd19('0x2e')](_0x1b23fc[_0xdd19('0x2d')][_0xdd19('0x2e')]));_0x4a97e8[_0xdd19('0x2f')]=_0x4a97e8[_0xdd19('0x2f')][_0xdd19('0x30')]?_0x4a97e8[_0xdd19('0x2f')]:_0x4d91f8[_0xdd19('0x29')];if(!_0x1b23fc[_0xdd19('0x2d')][_0xdd19('0x31')](_0xdd19('0x32'))){_0x4a97e8[_0xdd19('0x18')]=qs['limit'](_0x1b23fc[_0xdd19('0x2d')][_0xdd19('0x18')]);_0x4a97e8[_0xdd19('0x1a')]=qs['offset'](_0x1b23fc['query'][_0xdd19('0x1a')]);}_0x4a97e8[_0xdd19('0x33')]=qs[_0xdd19('0x34')](_0x1b23fc[_0xdd19('0x2d')][_0xdd19('0x34')]);_0x4a97e8[_0xdd19('0x35')]=qs[_0xdd19('0x2b')](_[_0xdd19('0x36')](_0x1b23fc[_0xdd19('0x2d')],_0x4d91f8[_0xdd19('0x2b')]),_0x1dffee);if(_0x1b23fc['query']['filter']){_0x4a97e8['where']=_[_0xdd19('0x37')](_0x4a97e8['where'],{'$or':_[_0xdd19('0x26')](_0x1dffee,function(_0xb1a727){if(_0xb1a727['type']!==_0xdd19('0x38')){var _0x33b60a={};_0x33b60a[_0xb1a727[_0xdd19('0x23')]]={'$like':'%'+_0x1b23fc[_0xdd19('0x2d')][_0xdd19('0x39')]+'%'};return _0x33b60a;}})});}_0x4a97e8=_[_0xdd19('0x37')]({},_0x4a97e8,_0x1b23fc['options']);var _0x47009b={'where':_0x4a97e8[_0xdd19('0x35')]};return db[_0xdd19('0x3a')][_0xdd19('0x19')](_0x47009b)[_0xdd19('0x21')](function(_0x45425d){_0x8cdf84[_0xdd19('0x19')]=_0x45425d;if(_0x1b23fc['query'][_0xdd19('0x3b')]){_0x4a97e8[_0xdd19('0x3c')]=[{'all':!![]}];}return db[_0xdd19('0x3a')]['findAll'](_0x4a97e8);})['then'](function(_0x100cd1){_0x8cdf84['rows']=_0x100cd1;return _0x8cdf84;})[_0xdd19('0x21')](respondWithFilteredResult(_0x259ef5,_0x4a97e8))[_0xdd19('0x3d')](handleError(_0x259ef5,null));};exports[_0xdd19('0x3e')]=function(_0x576180,_0x20d887){var _0x426ced={'raw':![],'where':{'id':_0x576180[_0xdd19('0x3f')]['id']}},_0xf60653={};_0xf60653[_0xdd19('0x29')]=_[_0xdd19('0x2a')](db[_0xdd19('0x3a')][_0xdd19('0x40')]);_0xf60653[_0xdd19('0x2d')]=_[_0xdd19('0x2a')](_0x576180['query']);_0xf60653[_0xdd19('0x2b')]=_[_0xdd19('0x2c')](_0xf60653[_0xdd19('0x29')],_0xf60653[_0xdd19('0x2d')]);_0x426ced[_0xdd19('0x2f')]=_[_0xdd19('0x2c')](_0xf60653[_0xdd19('0x29')],qs[_0xdd19('0x2e')](_0x576180[_0xdd19('0x2d')]['fields']));_0x426ced[_0xdd19('0x2f')]=_0x426ced[_0xdd19('0x2f')][_0xdd19('0x30')]?_0x426ced[_0xdd19('0x2f')]:_0xf60653[_0xdd19('0x29')];if(_0x576180[_0xdd19('0x2d')][_0xdd19('0x3b')]){_0x426ced[_0xdd19('0x3c')]=[{'all':!![]}];}_0x426ced=_[_0xdd19('0x37')]({},_0x426ced,_0x576180[_0xdd19('0x41')]);return db[_0xdd19('0x3a')][_0xdd19('0x42')](_0x426ced)[_0xdd19('0x21')](handleEntityNotFound(_0x20d887,null))[_0xdd19('0x21')](respondWithResult(_0x20d887,null))[_0xdd19('0x3d')](handleError(_0x20d887,null));};exports[_0xdd19('0x43')]=function(_0x32c33e,_0x3f5244){return db['SalesforceConfiguration'][_0xdd19('0x43')](_0x32c33e[_0xdd19('0x44')],{})['then'](respondWithResult(_0x3f5244,0xc9))[_0xdd19('0x3d')](handleError(_0x3f5244,null));};exports[_0xdd19('0x20')]=function(_0x3a2b9,_0x31c072){if(_0x3a2b9[_0xdd19('0x44')]['id']){delete _0x3a2b9[_0xdd19('0x44')]['id'];}return db[_0xdd19('0x3a')][_0xdd19('0x42')]({'where':{'id':_0x3a2b9['params']['id']}})[_0xdd19('0x21')](handleEntityNotFound(_0x31c072,null))['then'](saveUpdates(_0x3a2b9[_0xdd19('0x44')],null))[_0xdd19('0x21')](respondWithResult(_0x31c072,null))['catch'](handleError(_0x31c072,null));};exports[_0xdd19('0x45')]=function(_0x1cb603,_0x5e7b69){return db['SalesforceConfiguration'][_0xdd19('0x42')]({'where':{'id':_0x1cb603[_0xdd19('0x3f')]['id']}})[_0xdd19('0x21')](handleEntityNotFound(_0x5e7b69,null))['then'](removeEntity(_0x5e7b69,null))[_0xdd19('0x3d')](handleError(_0x5e7b69,null));};exports[_0xdd19('0x46')]=function(_0x508cf1,_0x450c84,_0x30d497){var _0x482963={};var _0x4877d5={};var _0xe0dd05;var _0x4704de;return db['SalesforceConfiguration'][_0xdd19('0x47')]({'where':{'id':_0x508cf1[_0xdd19('0x3f')]['id']}})[_0xdd19('0x21')](handleEntityNotFound(_0x450c84,null))[_0xdd19('0x21')](function(_0x2f86bc){if(_0x2f86bc){_0xe0dd05=_0x2f86bc;_0x4877d5[_0xdd19('0x29')]=_[_0xdd19('0x2a')](db[_0xdd19('0x48')][_0xdd19('0x40')]);_0x4877d5[_0xdd19('0x2d')]=_[_0xdd19('0x2a')](_0x508cf1[_0xdd19('0x2d')]);_0x4877d5['filters']=_[_0xdd19('0x2c')](_0x4877d5['model'],_0x4877d5[_0xdd19('0x2d')]);_0x482963[_0xdd19('0x2f')]=_[_0xdd19('0x2c')](_0x4877d5[_0xdd19('0x29')],qs[_0xdd19('0x2e')](_0x508cf1[_0xdd19('0x2d')][_0xdd19('0x2e')]));_0x482963[_0xdd19('0x2f')]=_0x482963[_0xdd19('0x2f')]['length']?_0x482963[_0xdd19('0x2f')]:_0x4877d5['model'];_0x482963['order']=qs[_0xdd19('0x34')](_0x508cf1[_0xdd19('0x2d')]['sort']);_0x482963[_0xdd19('0x35')]=qs[_0xdd19('0x2b')](_['pick'](_0x508cf1[_0xdd19('0x2d')],_0x4877d5[_0xdd19('0x2b')]));if(_0x508cf1['query']['filter']){_0x482963['where']=_['merge'](_0x482963[_0xdd19('0x35')],{'$or':_['map'](_0x482963[_0xdd19('0x2f')],function(_0x45f417){var _0x33c3e6={};_0x33c3e6[_0x45f417]={'$like':'%'+_0x508cf1[_0xdd19('0x2d')][_0xdd19('0x39')]+'%'};return _0x33c3e6;})});}_0x482963=_[_0xdd19('0x37')]({},_0x482963,_0x508cf1[_0xdd19('0x41')]);return _0xe0dd05['getFields'](_0x482963);}})[_0xdd19('0x21')](function(_0xf6871b){if(_0xf6871b){_0x4704de=_0xf6871b[_0xdd19('0x30')];if(!_0x508cf1[_0xdd19('0x2d')][_0xdd19('0x31')](_0xdd19('0x32'))){_0x482963[_0xdd19('0x18')]=qs[_0xdd19('0x18')](_0x508cf1[_0xdd19('0x2d')][_0xdd19('0x18')]);_0x482963[_0xdd19('0x1a')]=qs[_0xdd19('0x1a')](_0x508cf1[_0xdd19('0x2d')][_0xdd19('0x1a')]);}return _0xe0dd05[_0xdd19('0x46')](_0x482963);}})[_0xdd19('0x21')](function(_0x49d60d){if(_0x49d60d){return _0x49d60d?{'count':_0x4704de,'rows':_0x49d60d}:null;}})[_0xdd19('0x21')](respondWithResult(_0x450c84,null))[_0xdd19('0x3d')](handleError(_0x450c84,null));};exports[_0xdd19('0x49')]=function(_0x39d480,_0xfdf40b,_0x4727ca){var _0x9f474d={};var _0xce7a0f={};var _0x19b4b2;var _0x44627d;return db[_0xdd19('0x3a')][_0xdd19('0x47')]({'where':{'id':_0x39d480[_0xdd19('0x3f')]['id']}})[_0xdd19('0x21')](handleEntityNotFound(_0xfdf40b,null))[_0xdd19('0x21')](function(_0x440e51){if(_0x440e51){_0x19b4b2=_0x440e51;_0xce7a0f['model']=_['keys'](db[_0xdd19('0x48')][_0xdd19('0x40')]);_0xce7a0f[_0xdd19('0x2d')]=_[_0xdd19('0x2a')](_0x39d480[_0xdd19('0x2d')]);_0xce7a0f[_0xdd19('0x2b')]=_[_0xdd19('0x2c')](_0xce7a0f[_0xdd19('0x29')],_0xce7a0f['query']);_0x9f474d[_0xdd19('0x2f')]=_['intersection'](_0xce7a0f['model'],qs[_0xdd19('0x2e')](_0x39d480[_0xdd19('0x2d')]['fields']));_0x9f474d['attributes']=_0x9f474d[_0xdd19('0x2f')][_0xdd19('0x30')]?_0x9f474d['attributes']:_0xce7a0f[_0xdd19('0x29')];_0x9f474d['order']=qs[_0xdd19('0x34')](_0x39d480[_0xdd19('0x2d')]['sort']);_0x9f474d[_0xdd19('0x35')]=qs[_0xdd19('0x2b')](_['pick'](_0x39d480[_0xdd19('0x2d')],_0xce7a0f[_0xdd19('0x2b')]));if(_0x39d480[_0xdd19('0x2d')]['filter']){_0x9f474d['where']=_[_0xdd19('0x37')](_0x9f474d[_0xdd19('0x35')],{'$or':_['map'](_0x9f474d[_0xdd19('0x2f')],function(_0x3ebed7){var _0xecf49a={};_0xecf49a[_0x3ebed7]={'$like':'%'+_0x39d480[_0xdd19('0x2d')][_0xdd19('0x39')]+'%'};return _0xecf49a;})});}_0x9f474d=_['merge']({},_0x9f474d,_0x39d480[_0xdd19('0x41')]);return _0x19b4b2['getSubjects'](_0x9f474d);}})['then'](function(_0x2f736a){if(_0x2f736a){_0x44627d=_0x2f736a[_0xdd19('0x30')];if(!_0x39d480[_0xdd19('0x2d')][_0xdd19('0x31')](_0xdd19('0x32'))){_0x9f474d[_0xdd19('0x18')]=qs[_0xdd19('0x18')](_0x39d480[_0xdd19('0x2d')][_0xdd19('0x18')]);_0x9f474d[_0xdd19('0x1a')]=qs[_0xdd19('0x1a')](_0x39d480[_0xdd19('0x2d')][_0xdd19('0x1a')]);}return _0x19b4b2[_0xdd19('0x49')](_0x9f474d);}})['then'](function(_0x513416){if(_0x513416){return _0x513416?{'count':_0x44627d,'rows':_0x513416}:null;}})[_0xdd19('0x21')](respondWithResult(_0xfdf40b,null))[_0xdd19('0x3d')](handleError(_0xfdf40b,null));};exports[_0xdd19('0x4a')]=function(_0xb6909a,_0x12b878,_0x26b9d6){var _0x49ab3c={};var _0x2254a6={};var _0x233461;var _0x52e418;return db['SalesforceConfiguration'][_0xdd19('0x47')]({'where':{'id':_0xb6909a[_0xdd19('0x3f')]['id']}})[_0xdd19('0x21')](handleEntityNotFound(_0x12b878,null))[_0xdd19('0x21')](function(_0x8ae049){if(_0x8ae049){_0x233461=_0x8ae049;_0x2254a6[_0xdd19('0x29')]=_[_0xdd19('0x2a')](db[_0xdd19('0x48')]['rawAttributes']);_0x2254a6[_0xdd19('0x2d')]=_[_0xdd19('0x2a')](_0xb6909a[_0xdd19('0x2d')]);_0x2254a6['filters']=_['intersection'](_0x2254a6[_0xdd19('0x29')],_0x2254a6[_0xdd19('0x2d')]);_0x49ab3c['attributes']=_[_0xdd19('0x2c')](_0x2254a6[_0xdd19('0x29')],qs['fields'](_0xb6909a[_0xdd19('0x2d')][_0xdd19('0x2e')]));_0x49ab3c[_0xdd19('0x2f')]=_0x49ab3c[_0xdd19('0x2f')][_0xdd19('0x30')]?_0x49ab3c['attributes']:_0x2254a6[_0xdd19('0x29')];_0x49ab3c[_0xdd19('0x33')]=qs[_0xdd19('0x34')](_0xb6909a[_0xdd19('0x2d')][_0xdd19('0x34')]);_0x49ab3c[_0xdd19('0x35')]=qs[_0xdd19('0x2b')](_['pick'](_0xb6909a[_0xdd19('0x2d')],_0x2254a6[_0xdd19('0x2b')]));if(_0xb6909a[_0xdd19('0x2d')][_0xdd19('0x39')]){_0x49ab3c[_0xdd19('0x35')]=_[_0xdd19('0x37')](_0x49ab3c[_0xdd19('0x35')],{'$or':_['map'](_0x49ab3c[_0xdd19('0x2f')],function(_0x55d68d){var _0x6943f2={};_0x6943f2[_0x55d68d]={'$like':'%'+_0xb6909a[_0xdd19('0x2d')]['filter']+'%'};return _0x6943f2;})});}_0x49ab3c=_[_0xdd19('0x37')]({},_0x49ab3c,_0xb6909a[_0xdd19('0x41')]);return _0x233461['getDescriptions'](_0x49ab3c);}})[_0xdd19('0x21')](function(_0xdc27af){if(_0xdc27af){_0x52e418=_0xdc27af[_0xdd19('0x30')];if(!_0xb6909a[_0xdd19('0x2d')]['hasOwnProperty']('nolimit')){_0x49ab3c[_0xdd19('0x18')]=qs[_0xdd19('0x18')](_0xb6909a[_0xdd19('0x2d')]['limit']);_0x49ab3c[_0xdd19('0x1a')]=qs[_0xdd19('0x1a')](_0xb6909a['query'][_0xdd19('0x1a')]);}return _0x233461[_0xdd19('0x4a')](_0x49ab3c);}})['then'](function(_0x244f96){if(_0x244f96){return _0x244f96?{'count':_0x52e418,'rows':_0x244f96}:null;}})[_0xdd19('0x21')](respondWithResult(_0x12b878,null))['catch'](handleError(_0x12b878,null));};
\ No newline at end of file
index ca1466a..a0eb1b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36c3=['api','moment','request-promise','path','../../config/environment','./intSalesforceConfiguration.attributes','define','SalesforceConfiguration','int_salesforce_configurations','util','../../config/logger'];(function(_0x934891,_0x395c2a){var _0x3b35d2=function(_0x5778ac){while(--_0x5778ac){_0x934891['push'](_0x934891['shift']());}};_0x3b35d2(++_0x395c2a);}(_0x36c3,0x132));var _0x336c=function(_0x4fa1b0,_0x3cafac){_0x4fa1b0=_0x4fa1b0-0x0;var _0x3c2e33=_0x36c3[_0x4fa1b0];return _0x3c2e33;};'use strict';var _=require('lodash');var util=require(_0x336c('0x0'));var logger=require(_0x336c('0x1'))(_0x336c('0x2'));var moment=require(_0x336c('0x3'));var BPromise=require('bluebird');var rp=require(_0x336c('0x4'));var fs=require('fs');var path=require(_0x336c('0x5'));var rimraf=require('rimraf');var config=require(_0x336c('0x6'));var attributes=require(_0x336c('0x7'));module['exports']=function(_0x28c2e1,_0x984420){return _0x28c2e1[_0x336c('0x8')](_0x336c('0x9'),attributes,{'tableName':_0x336c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf927=['moment','request-promise','path','rimraf','../../config/environment','./intSalesforceConfiguration.attributes','exports','define','lodash','util','../../config/logger'];(function(_0x29baac,_0x4d52b0){var _0x571188=function(_0x5d9681){while(--_0x5d9681){_0x29baac['push'](_0x29baac['shift']());}};_0x571188(++_0x4d52b0);}(_0xf927,0xef));var _0x7f92=function(_0x5592ad,_0x4bda66){_0x5592ad=_0x5592ad-0x0;var _0x243273=_0xf927[_0x5592ad];return _0x243273;};'use strict';var _=require(_0x7f92('0x0'));var util=require(_0x7f92('0x1'));var logger=require(_0x7f92('0x2'))('api');var moment=require(_0x7f92('0x3'));var BPromise=require('bluebird');var rp=require(_0x7f92('0x4'));var fs=require('fs');var path=require(_0x7f92('0x5'));var rimraf=require(_0x7f92('0x6'));var config=require(_0x7f92('0x7'));var attributes=require(_0x7f92('0x8'));module[_0x7f92('0x9')]=function(_0x4853cf,_0x442453){return _0x4853cf[_0x7f92('0xa')]('SalesforceConfiguration',attributes,{'tableName':'int_salesforce_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 261d87e..ec37bd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x352d=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','stringify','error','SalesforceConfiguration,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x4cc4d7,_0x100340){var _0x52c178=function(_0x2f0f71){while(--_0x2f0f71){_0x4cc4d7['push'](_0x4cc4d7['shift']());}};_0x52c178(++_0x100340);}(_0x352d,0x152));var _0xd352=function(_0x4cb6af,_0x17ebad){_0x4cb6af=_0x4cb6af-0x0;var _0x7fcc6b=_0x352d[_0x4cb6af];return _0x7fcc6b;};'use strict';var _=require(_0xd352('0x0'));var util=require(_0xd352('0x1'));var moment=require(_0xd352('0x2'));var BPromise=require(_0xd352('0x3'));var rs=require(_0xd352('0x4'));var fs=require('fs');var Redis=require(_0xd352('0x5'));var db=require(_0xd352('0x6'))['db'];var utils=require(_0xd352('0x7'));var logger=require(_0xd352('0x8'))(_0xd352('0x9'));var config=require(_0xd352('0xa'));var jayson=require(_0xd352('0xb'));var client=jayson[_0xd352('0xc')][_0xd352('0xd')]({'port':0x232a});function respondWithRpcPromise(_0xfdc4b8,_0x3a85d4,_0x49fc01){return new BPromise(function(_0x8cb524,_0x589a38){return client[_0xd352('0xe')](_0xfdc4b8,_0x49fc01)['then'](function(_0x120b78){logger[_0xd352('0xf')]('SalesforceConfiguration,\x20%s,\x20%s',_0x3a85d4,_0xd352('0x10'));logger[_0xd352('0x11')]('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0x3a85d4,_0xd352('0x10'),JSON[_0xd352('0x12')](_0x120b78));if(_0x120b78['error']){if(_0x120b78[_0xd352('0x13')]['code']===0x1f4){logger['error'](_0xd352('0x14'),_0x3a85d4,_0x120b78[_0xd352('0x13')][_0xd352('0x15')]);return _0x589a38(_0x120b78[_0xd352('0x13')][_0xd352('0x15')]);}logger['error'](_0xd352('0x14'),_0x3a85d4,_0x120b78[_0xd352('0x13')][_0xd352('0x15')]);return _0x8cb524(_0x120b78[_0xd352('0x13')][_0xd352('0x15')]);}else{logger[_0xd352('0xf')](_0xd352('0x14'),_0x3a85d4,_0xd352('0x10'));_0x8cb524(_0x120b78[_0xd352('0x16')][_0xd352('0x15')]);}})['catch'](function(_0x58820f){logger['error'](_0xd352('0x14'),_0x3a85d4,_0x58820f);_0x589a38(_0x58820f);});});}
\ No newline at end of file
+var _0x14e8=['../../config/logger','rpc','jayson/promise','request','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','ioredis'];(function(_0x30e578,_0x2967ca){var _0x4f5d50=function(_0x538386){while(--_0x538386){_0x30e578['push'](_0x30e578['shift']());}};_0x4f5d50(++_0x2967ca);}(_0x14e8,0x1bf));var _0x814e=function(_0x4173aa,_0x48784a){_0x4173aa=_0x4173aa-0x0;var _0x3b4711=_0x14e8[_0x4173aa];return _0x3b4711;};'use strict';var _=require(_0x814e('0x0'));var util=require('util');var moment=require(_0x814e('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x814e('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x814e('0x3'))(_0x814e('0x4'));var config=require('../../config/environment');var jayson=require(_0x814e('0x5'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x340efd,_0x2a3cc9,_0x2714d1){return new BPromise(function(_0x3417cb,_0x5ed297){return client[_0x814e('0x6')](_0x340efd,_0x2714d1)['then'](function(_0x6397d8){logger[_0x814e('0x7')](_0x814e('0x8'),_0x2a3cc9,_0x814e('0x9'));logger[_0x814e('0xa')](_0x814e('0xb'),_0x2a3cc9,_0x814e('0x9'),JSON[_0x814e('0xc')](_0x6397d8));if(_0x6397d8['error']){if(_0x6397d8[_0x814e('0xd')][_0x814e('0xe')]===0x1f4){logger[_0x814e('0xd')](_0x814e('0x8'),_0x2a3cc9,_0x6397d8['error'][_0x814e('0xf')]);return _0x5ed297(_0x6397d8[_0x814e('0xd')][_0x814e('0xf')]);}logger[_0x814e('0xd')](_0x814e('0x8'),_0x2a3cc9,_0x6397d8[_0x814e('0xd')]['message']);return _0x3417cb(_0x6397d8[_0x814e('0xd')]['message']);}else{logger[_0x814e('0x7')](_0x814e('0x8'),_0x2a3cc9,_0x814e('0x9'));_0x3417cb(_0x6397d8[_0x814e('0x10')][_0x814e('0xf')]);}})[_0x814e('0x11')](function(_0x582c82){logger[_0x814e('0xd')](_0x814e('0x8'),_0x2a3cc9,_0x582c82);_0x5ed297(_0x582c82);});});}
\ No newline at end of file
index 45c6b40..1f7cfb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a95=['put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','post','create'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x6a95,0xaf));var _0x56a9=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0x6a95[_0x5783f4];return _0x28e380;};'use strict';var multer=require(_0x56a9('0x0'));var util=require(_0x56a9('0x1'));var path=require(_0x56a9('0x2'));var timeout=require(_0x56a9('0x3'));var express=require(_0x56a9('0x4'));var router=express[_0x56a9('0x5')]();var fs_extra=require(_0x56a9('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x56a9('0x7'));var config=require(_0x56a9('0x8'));var controller=require('./intSalesforceField.controller');router['get']('/',auth[_0x56a9('0x9')](),controller[_0x56a9('0xa')]);router[_0x56a9('0xb')](_0x56a9('0xc'),auth[_0x56a9('0x9')](),controller['show']);router[_0x56a9('0xd')]('/',auth[_0x56a9('0x9')](),controller[_0x56a9('0xe')]);router[_0x56a9('0xf')](_0x56a9('0xc'),auth[_0x56a9('0x9')](),controller[_0x56a9('0x10')]);router[_0x56a9('0x11')]('/:id',auth[_0x56a9('0x9')](),controller[_0x56a9('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x3d73=['/:id','delete','destroy','exports','multer','connect-timeout','../../components/auth/service','../../components/interaction/service','get','index','isAuthenticated','show','post','create','put'];(function(_0x2bc3f4,_0x470b26){var _0x14ac53=function(_0x5121bd){while(--_0x5121bd){_0x2bc3f4['push'](_0x2bc3f4['shift']());}};_0x14ac53(++_0x470b26);}(_0x3d73,0x18a));var _0x33d7=function(_0x29d94e,_0xf386d6){_0x29d94e=_0x29d94e-0x0;var _0x106237=_0x3d73[_0x29d94e];return _0x106237;};'use strict';var multer=require(_0x33d7('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x33d7('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x33d7('0x2'));var interaction=require(_0x33d7('0x3'));var config=require('../../config/environment');var controller=require('./intSalesforceField.controller');router[_0x33d7('0x4')]('/',auth['isAuthenticated'](),controller[_0x33d7('0x5')]);router[_0x33d7('0x4')]('/:id',auth[_0x33d7('0x6')](),controller[_0x33d7('0x7')]);router[_0x33d7('0x8')]('/',auth[_0x33d7('0x6')](),controller[_0x33d7('0x9')]);router[_0x33d7('0xa')](_0x33d7('0xb'),auth[_0x33d7('0x6')](),controller['update']);router[_0x33d7('0xc')]('/:id',auth['isAuthenticated'](),controller[_0x33d7('0xd')]);module[_0x33d7('0xe')]=router;
\ No newline at end of file
index 8d1b732..15e5591 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9873=['customVariable','keyValue','picklist','string','STRING','variable','sequelize','exports'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0x9873,0x10e));var _0x3987=function(_0x490d4c,_0x50eb76){_0x490d4c=_0x490d4c-0x0;var _0x540b78=_0x9873[_0x490d4c];return _0x540b78;};'use strict';var Sequelize=require(_0x3987('0x0'));module[_0x3987('0x1')]={'type':{'type':Sequelize['ENUM']('string','variable',_0x3987('0x2'),_0x3987('0x3'),_0x3987('0x4')),'defaultValue':_0x3987('0x5')},'content':{'type':Sequelize[_0x3987('0x6')]},'key':{'type':Sequelize[_0x3987('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0x3987('0x5'),_0x3987('0x7'),'customVariable')},'keyContent':{'type':Sequelize[_0x3987('0x6')]},'idField':{'type':Sequelize[_0x3987('0x6')]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x3f26=['STRING','sequelize','exports','ENUM','string','variable','customVariable','picklist'];(function(_0x2de0a7,_0x38d3e7){var _0x429437=function(_0x23c148){while(--_0x23c148){_0x2de0a7['push'](_0x2de0a7['shift']());}};_0x429437(++_0x38d3e7);}(_0x3f26,0x129));var _0x63f2=function(_0x1d6021,_0x1e7741){_0x1d6021=_0x1d6021-0x0;var _0x3c7336=_0x3f26[_0x1d6021];return _0x3c7336;};'use strict';var Sequelize=require(_0x63f2('0x0'));module[_0x63f2('0x1')]={'type':{'type':Sequelize[_0x63f2('0x2')](_0x63f2('0x3'),_0x63f2('0x4'),_0x63f2('0x5'),'keyValue',_0x63f2('0x6')),'defaultValue':_0x63f2('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x63f2('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0x63f2('0x3'),_0x63f2('0x4'),_0x63f2('0x5'))},'keyContent':{'type':Sequelize[_0x63f2('0x7')]},'idField':{'type':Sequelize['STRING']},'variableName':{'type':Sequelize[_0x63f2('0x7')]}};
\ No newline at end of file
index 5835548..ae487b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd30c=['nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','includeAll','find','create','body','destroy','eml-format','zip-dir','request-promise','moment','bluebird','util','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','reject','update','then','error','stack','name','send','index','map','SalesforceField','rawAttributes','fieldName','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty'];(function(_0x536841,_0xed164e){var _0x28579a=function(_0x48544c){while(--_0x48544c){_0x536841['push'](_0x536841['shift']());}};_0x28579a(++_0xed164e);}(_0xd30c,0xa8));var _0xcd30=function(_0x4b7895,_0x3c4f5d){_0x4b7895=_0x4b7895-0x0;var _0x264180=_0xd30c[_0x4b7895];return _0x264180;};'use strict';var emlformat=require(_0xcd30('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xcd30('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcd30('0x2'));var moment=require(_0xcd30('0x3'));var BPromise=require(_0xcd30('0x4'));var Mustache=require('mustache');var util=require(_0xcd30('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xcd30('0x6'));var ejs=require(_0xcd30('0x7'));var fs=require('fs');var fs_extra=require(_0xcd30('0x8'));var _=require(_0xcd30('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xcd30('0xa'));var deskjs=require(_0xcd30('0xb'));var toCsv=require(_0xcd30('0x6'));var querystring=require(_0xcd30('0xc'));var Papa=require(_0xcd30('0xd'));var Redis=require(_0xcd30('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xcd30('0xf'));var as=require(_0xcd30('0x10'));var hardwareService=require(_0xcd30('0x11'));var logger=require(_0xcd30('0x12'))('api');var utils=require(_0xcd30('0x13'));var config=require(_0xcd30('0x14'));var licenseUtil=require(_0xcd30('0x15'));var db=require(_0xcd30('0x16'))['db'];function respondWithStatusCode(_0x2820d4,_0x512905){_0x512905=_0x512905||0xcc;return function(_0x286cc0){if(_0x286cc0){return _0x2820d4[_0xcd30('0x17')](_0x512905);}return _0x2820d4[_0xcd30('0x18')](_0x512905)[_0xcd30('0x19')]();};}function respondWithResult(_0x29cd70,_0x48c8f7){_0x48c8f7=_0x48c8f7||0xc8;return function(_0x8735bd){if(_0x8735bd){return _0x29cd70[_0xcd30('0x18')](_0x48c8f7)[_0xcd30('0x1a')](_0x8735bd);}};}function respondWithFilteredResult(_0x984d71,_0x48e7a4){return function(_0xcc278c){if(_0xcc278c){var _0x49a038=typeof _0x48e7a4['offset']===_0xcd30('0x1b')&&typeof _0x48e7a4[_0xcd30('0x1c')]===_0xcd30('0x1b');var _0x5a3d77=_0xcc278c['count'];var _0x37ecc7=_0x49a038?0x0:_0x48e7a4[_0xcd30('0x1d')];var _0x2206b1=_0x49a038?_0xcc278c[_0xcd30('0x1e')]:_0x48e7a4[_0xcd30('0x1d')]+_0x48e7a4['limit'];var _0xb36d55;if(_0x2206b1>=_0x5a3d77){_0x2206b1=_0x5a3d77;_0xb36d55=0xc8;}else{_0xb36d55=0xce;}_0x984d71[_0xcd30('0x18')](_0xb36d55);return _0x984d71[_0xcd30('0x1f')](_0xcd30('0x20'),_0x37ecc7+'-'+_0x2206b1+'/'+_0x5a3d77)[_0xcd30('0x1a')](_0xcc278c);}return null;};}function patchUpdates(_0x55c813){return function(_0x290374){try{jsonpatch['apply'](_0x290374,_0x55c813,!![]);}catch(_0x4532fb){return BPromise[_0xcd30('0x21')](_0x4532fb);}return _0x290374['save']();};}function saveUpdates(_0x43a0ad,_0x27e8fd){return function(_0x4bdb0c){if(_0x4bdb0c){return _0x4bdb0c[_0xcd30('0x22')](_0x43a0ad)[_0xcd30('0x23')](function(_0x4607b9){return _0x4607b9;});}return null;};}function removeEntity(_0x416e58,_0x5d5d36){return function(_0x231cc0){if(_0x231cc0){return _0x231cc0['destroy']()[_0xcd30('0x23')](function(){_0x416e58[_0xcd30('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x40b60a,_0x318237){return function(_0x529755){if(!_0x529755){_0x40b60a[_0xcd30('0x17')](0x194);}return _0x529755;};}function handleError(_0x11d00e,_0x32c405){_0x32c405=_0x32c405||0x1f4;return function(_0x575a2b){logger[_0xcd30('0x24')](_0x575a2b[_0xcd30('0x25')]);if(_0x575a2b[_0xcd30('0x26')]){delete _0x575a2b[_0xcd30('0x26')];}_0x11d00e['status'](_0x32c405)[_0xcd30('0x27')](_0x575a2b);};}exports[_0xcd30('0x28')]=function(_0x1686dc,_0x76b07c){var _0x526791={},_0x150008={},_0x2418be={'count':0x0,'rows':[]};var _0x5809fe=_[_0xcd30('0x29')](db[_0xcd30('0x2a')][_0xcd30('0x2b')],function(_0x3811db){return{'name':_0x3811db[_0xcd30('0x2c')],'type':_0x3811db['type']['key']};});_0x150008['model']=_['map'](_0x5809fe,'name');_0x150008[_0xcd30('0x2d')]=_[_0xcd30('0x2e')](_0x1686dc['query']);_0x150008[_0xcd30('0x2f')]=_[_0xcd30('0x30')](_0x150008['model'],_0x150008['query']);_0x526791[_0xcd30('0x31')]=_[_0xcd30('0x30')](_0x150008[_0xcd30('0x32')],qs[_0xcd30('0x33')](_0x1686dc[_0xcd30('0x2d')]['fields']));_0x526791[_0xcd30('0x31')]=_0x526791[_0xcd30('0x31')][_0xcd30('0x34')]?_0x526791['attributes']:_0x150008[_0xcd30('0x32')];if(!_0x1686dc[_0xcd30('0x2d')][_0xcd30('0x35')](_0xcd30('0x36'))){_0x526791['limit']=qs['limit'](_0x1686dc[_0xcd30('0x2d')][_0xcd30('0x1c')]);_0x526791[_0xcd30('0x1d')]=qs[_0xcd30('0x1d')](_0x1686dc[_0xcd30('0x2d')][_0xcd30('0x1d')]);}_0x526791[_0xcd30('0x37')]=qs[_0xcd30('0x38')](_0x1686dc[_0xcd30('0x2d')][_0xcd30('0x38')]);_0x526791[_0xcd30('0x39')]=qs[_0xcd30('0x2f')](_[_0xcd30('0x3a')](_0x1686dc[_0xcd30('0x2d')],_0x150008[_0xcd30('0x2f')]),_0x5809fe);if(_0x1686dc[_0xcd30('0x2d')][_0xcd30('0x3b')]){_0x526791[_0xcd30('0x39')]=_[_0xcd30('0x3c')](_0x526791[_0xcd30('0x39')],{'$or':_[_0xcd30('0x29')](_0x5809fe,function(_0x4b4f25){if(_0x4b4f25['type']!==_0xcd30('0x3d')){var _0x3219c5={};_0x3219c5[_0x4b4f25[_0xcd30('0x26')]]={'$like':'%'+_0x1686dc[_0xcd30('0x2d')][_0xcd30('0x3b')]+'%'};return _0x3219c5;}})});}_0x526791=_[_0xcd30('0x3c')]({},_0x526791,_0x1686dc[_0xcd30('0x3e')]);var _0x1c41a9={'where':_0x526791[_0xcd30('0x39')]};return db[_0xcd30('0x2a')][_0xcd30('0x1e')](_0x1c41a9)[_0xcd30('0x23')](function(_0x4a785e){_0x2418be[_0xcd30('0x1e')]=_0x4a785e;if(_0x1686dc[_0xcd30('0x2d')]['includeAll']){_0x526791[_0xcd30('0x3f')]=[{'all':!![]}];}return db[_0xcd30('0x2a')][_0xcd30('0x40')](_0x526791);})[_0xcd30('0x23')](function(_0x593d80){_0x2418be[_0xcd30('0x41')]=_0x593d80;return _0x2418be;})['then'](respondWithFilteredResult(_0x76b07c,_0x526791))[_0xcd30('0x42')](handleError(_0x76b07c,null));};exports[_0xcd30('0x43')]=function(_0x4e71b7,_0x2f4578){var _0x496b4f={'raw':!![],'where':{'id':_0x4e71b7[_0xcd30('0x44')]['id']}},_0x49454d={};_0x49454d[_0xcd30('0x32')]=_[_0xcd30('0x2e')](db[_0xcd30('0x2a')]['rawAttributes']);_0x49454d[_0xcd30('0x2d')]=_['keys'](_0x4e71b7[_0xcd30('0x2d')]);_0x49454d[_0xcd30('0x2f')]=_[_0xcd30('0x30')](_0x49454d[_0xcd30('0x32')],_0x49454d[_0xcd30('0x2d')]);_0x496b4f[_0xcd30('0x31')]=_[_0xcd30('0x30')](_0x49454d[_0xcd30('0x32')],qs[_0xcd30('0x33')](_0x4e71b7[_0xcd30('0x2d')]['fields']));_0x496b4f['attributes']=_0x496b4f[_0xcd30('0x31')][_0xcd30('0x34')]?_0x496b4f[_0xcd30('0x31')]:_0x49454d[_0xcd30('0x32')];if(_0x4e71b7[_0xcd30('0x2d')][_0xcd30('0x45')]){_0x496b4f['include']=[{'all':!![]}];}_0x496b4f=_[_0xcd30('0x3c')]({},_0x496b4f,_0x4e71b7[_0xcd30('0x3e')]);return db[_0xcd30('0x2a')][_0xcd30('0x46')](_0x496b4f)[_0xcd30('0x23')](handleEntityNotFound(_0x2f4578,null))[_0xcd30('0x23')](respondWithResult(_0x2f4578,null))['catch'](handleError(_0x2f4578,null));};exports['create']=function(_0x7a821f,_0x553390){return db['SalesforceField'][_0xcd30('0x47')](_0x7a821f['body'],{})['then'](respondWithResult(_0x553390,0xc9))['catch'](handleError(_0x553390,null));};exports[_0xcd30('0x22')]=function(_0x3f508b,_0x9d482a){if(_0x3f508b[_0xcd30('0x48')]['id']){delete _0x3f508b[_0xcd30('0x48')]['id'];}return db[_0xcd30('0x2a')][_0xcd30('0x46')]({'where':{'id':_0x3f508b['params']['id']}})['then'](handleEntityNotFound(_0x9d482a,null))[_0xcd30('0x23')](saveUpdates(_0x3f508b['body'],null))[_0xcd30('0x23')](respondWithResult(_0x9d482a,null))[_0xcd30('0x42')](handleError(_0x9d482a,null));};exports[_0xcd30('0x49')]=function(_0x1b76dd,_0x37cc74){return db[_0xcd30('0x2a')][_0xcd30('0x46')]({'where':{'id':_0x1b76dd[_0xcd30('0x44')]['id']}})[_0xcd30('0x23')](handleEntityNotFound(_0x37cc74,null))['then'](removeEntity(_0x37cc74,null))[_0xcd30('0x42')](handleError(_0x37cc74,null));};
\ No newline at end of file
+var _0x2bc6=['offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','SalesforceField','includeAll','include','findAll','show','params','catch','create','body','find','zip-dir','fast-json-patch','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json'];(function(_0x53ee8f,_0x4c9ac7){var _0x1d00c8=function(_0x10fb79){while(--_0x10fb79){_0x53ee8f['push'](_0x53ee8f['shift']());}};_0x1d00c8(++_0x4c9ac7);}(_0x2bc6,0x1da));var _0x62bc=function(_0x3fb5c3,_0x5b134d){_0x3fb5c3=_0x3fb5c3-0x0;var _0x2f3dbc=_0x2bc6[_0x3fb5c3];return _0x2f3dbc;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x62bc('0x0'));var jsonpatch=require(_0x62bc('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x62bc('0x2'));var Mustache=require(_0x62bc('0x3'));var util=require(_0x62bc('0x4'));var path=require('path');var sox=require('sox');var csv=require(_0x62bc('0x5'));var ejs=require(_0x62bc('0x6'));var fs=require('fs');var fs_extra=require(_0x62bc('0x7'));var _=require(_0x62bc('0x8'));var squel=require(_0x62bc('0x9'));var crypto=require(_0x62bc('0xa'));var jsforce=require(_0x62bc('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x62bc('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x62bc('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x62bc('0xe'));var logger=require(_0x62bc('0xf'))(_0x62bc('0x10'));var utils=require(_0x62bc('0x11'));var config=require(_0x62bc('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x62bc('0x13'))['db'];function respondWithStatusCode(_0xae257e,_0xf02094){_0xf02094=_0xf02094||0xcc;return function(_0x391ee9){if(_0x391ee9){return _0xae257e[_0x62bc('0x14')](_0xf02094);}return _0xae257e[_0x62bc('0x15')](_0xf02094)['end']();};}function respondWithResult(_0x4fb10f,_0x176ada){_0x176ada=_0x176ada||0xc8;return function(_0x48a3b2){if(_0x48a3b2){return _0x4fb10f['status'](_0x176ada)[_0x62bc('0x16')](_0x48a3b2);}};}function respondWithFilteredResult(_0x2237e2,_0x1cbde1){return function(_0x103d71){if(_0x103d71){var _0x1e7894=typeof _0x1cbde1[_0x62bc('0x17')]===_0x62bc('0x18')&&typeof _0x1cbde1[_0x62bc('0x19')]===_0x62bc('0x18');var _0x10f671=_0x103d71[_0x62bc('0x1a')];var _0x4a12b0=_0x1e7894?0x0:_0x1cbde1[_0x62bc('0x17')];var _0xe064df=_0x1e7894?_0x103d71['count']:_0x1cbde1[_0x62bc('0x17')]+_0x1cbde1[_0x62bc('0x19')];var _0xc755f7;if(_0xe064df>=_0x10f671){_0xe064df=_0x10f671;_0xc755f7=0xc8;}else{_0xc755f7=0xce;}_0x2237e2[_0x62bc('0x15')](_0xc755f7);return _0x2237e2[_0x62bc('0x1b')]('Content-Range',_0x4a12b0+'-'+_0xe064df+'/'+_0x10f671)[_0x62bc('0x16')](_0x103d71);}return null;};}function patchUpdates(_0xbd2ff5){return function(_0x3d0bc5){try{jsonpatch[_0x62bc('0x1c')](_0x3d0bc5,_0xbd2ff5,!![]);}catch(_0x1a2685){return BPromise[_0x62bc('0x1d')](_0x1a2685);}return _0x3d0bc5[_0x62bc('0x1e')]();};}function saveUpdates(_0xac04f2,_0x3259c4){return function(_0x1766b1){if(_0x1766b1){return _0x1766b1[_0x62bc('0x1f')](_0xac04f2)[_0x62bc('0x20')](function(_0xcb4f9){return _0xcb4f9;});}return null;};}function removeEntity(_0x37232d,_0x4768bd){return function(_0x2e2e2d){if(_0x2e2e2d){return _0x2e2e2d[_0x62bc('0x21')]()[_0x62bc('0x20')](function(){_0x37232d[_0x62bc('0x15')](0xcc)[_0x62bc('0x22')]();});}};}function handleEntityNotFound(_0x50363f,_0x1c29b8){return function(_0x578f2b){if(!_0x578f2b){_0x50363f[_0x62bc('0x14')](0x194);}return _0x578f2b;};}function handleError(_0x1c534f,_0xf0b08f){_0xf0b08f=_0xf0b08f||0x1f4;return function(_0x12ee80){logger[_0x62bc('0x23')](_0x12ee80[_0x62bc('0x24')]);if(_0x12ee80[_0x62bc('0x25')]){delete _0x12ee80['name'];}_0x1c534f[_0x62bc('0x15')](_0xf0b08f)[_0x62bc('0x26')](_0x12ee80);};}exports[_0x62bc('0x27')]=function(_0x2bf1c5,_0x3a7ab6){var _0x3bf8d4={},_0x11f6ff={},_0x45e4d1={'count':0x0,'rows':[]};var _0x434879=_[_0x62bc('0x28')](db['SalesforceField'][_0x62bc('0x29')],function(_0x208c5d){return{'name':_0x208c5d[_0x62bc('0x2a')],'type':_0x208c5d['type']['key']};});_0x11f6ff['model']=_[_0x62bc('0x28')](_0x434879,_0x62bc('0x25'));_0x11f6ff[_0x62bc('0x2b')]=_[_0x62bc('0x2c')](_0x2bf1c5['query']);_0x11f6ff[_0x62bc('0x2d')]=_[_0x62bc('0x2e')](_0x11f6ff[_0x62bc('0x2f')],_0x11f6ff[_0x62bc('0x2b')]);_0x3bf8d4[_0x62bc('0x30')]=_[_0x62bc('0x2e')](_0x11f6ff['model'],qs[_0x62bc('0x31')](_0x2bf1c5['query'][_0x62bc('0x31')]));_0x3bf8d4[_0x62bc('0x30')]=_0x3bf8d4[_0x62bc('0x30')][_0x62bc('0x32')]?_0x3bf8d4['attributes']:_0x11f6ff[_0x62bc('0x2f')];if(!_0x2bf1c5[_0x62bc('0x2b')][_0x62bc('0x33')](_0x62bc('0x34'))){_0x3bf8d4['limit']=qs[_0x62bc('0x19')](_0x2bf1c5[_0x62bc('0x2b')][_0x62bc('0x19')]);_0x3bf8d4[_0x62bc('0x17')]=qs['offset'](_0x2bf1c5[_0x62bc('0x2b')][_0x62bc('0x17')]);}_0x3bf8d4[_0x62bc('0x35')]=qs[_0x62bc('0x36')](_0x2bf1c5[_0x62bc('0x2b')][_0x62bc('0x36')]);_0x3bf8d4['where']=qs['filters'](_[_0x62bc('0x37')](_0x2bf1c5['query'],_0x11f6ff['filters']),_0x434879);if(_0x2bf1c5[_0x62bc('0x2b')]['filter']){_0x3bf8d4[_0x62bc('0x38')]=_[_0x62bc('0x39')](_0x3bf8d4[_0x62bc('0x38')],{'$or':_[_0x62bc('0x28')](_0x434879,function(_0x35bd26){if(_0x35bd26['type']!==_0x62bc('0x3a')){var _0x589d31={};_0x589d31[_0x35bd26[_0x62bc('0x25')]]={'$like':'%'+_0x2bf1c5[_0x62bc('0x2b')][_0x62bc('0x3b')]+'%'};return _0x589d31;}})});}_0x3bf8d4=_['merge']({},_0x3bf8d4,_0x2bf1c5[_0x62bc('0x3c')]);var _0x3bc3fd={'where':_0x3bf8d4[_0x62bc('0x38')]};return db[_0x62bc('0x3d')][_0x62bc('0x1a')](_0x3bc3fd)[_0x62bc('0x20')](function(_0x229367){_0x45e4d1[_0x62bc('0x1a')]=_0x229367;if(_0x2bf1c5[_0x62bc('0x2b')][_0x62bc('0x3e')]){_0x3bf8d4[_0x62bc('0x3f')]=[{'all':!![]}];}return db['SalesforceField'][_0x62bc('0x40')](_0x3bf8d4);})[_0x62bc('0x20')](function(_0x4b9035){_0x45e4d1['rows']=_0x4b9035;return _0x45e4d1;})[_0x62bc('0x20')](respondWithFilteredResult(_0x3a7ab6,_0x3bf8d4))['catch'](handleError(_0x3a7ab6,null));};exports[_0x62bc('0x41')]=function(_0x11cc87,_0x3ced4e){var _0xb5e888={'raw':!![],'where':{'id':_0x11cc87[_0x62bc('0x42')]['id']}},_0x13e8fb={};_0x13e8fb[_0x62bc('0x2f')]=_[_0x62bc('0x2c')](db[_0x62bc('0x3d')][_0x62bc('0x29')]);_0x13e8fb['query']=_[_0x62bc('0x2c')](_0x11cc87['query']);_0x13e8fb[_0x62bc('0x2d')]=_[_0x62bc('0x2e')](_0x13e8fb[_0x62bc('0x2f')],_0x13e8fb[_0x62bc('0x2b')]);_0xb5e888[_0x62bc('0x30')]=_['intersection'](_0x13e8fb[_0x62bc('0x2f')],qs['fields'](_0x11cc87['query'][_0x62bc('0x31')]));_0xb5e888[_0x62bc('0x30')]=_0xb5e888[_0x62bc('0x30')][_0x62bc('0x32')]?_0xb5e888[_0x62bc('0x30')]:_0x13e8fb['model'];if(_0x11cc87[_0x62bc('0x2b')][_0x62bc('0x3e')]){_0xb5e888[_0x62bc('0x3f')]=[{'all':!![]}];}_0xb5e888=_[_0x62bc('0x39')]({},_0xb5e888,_0x11cc87[_0x62bc('0x3c')]);return db['SalesforceField']['find'](_0xb5e888)['then'](handleEntityNotFound(_0x3ced4e,null))['then'](respondWithResult(_0x3ced4e,null))[_0x62bc('0x43')](handleError(_0x3ced4e,null));};exports['create']=function(_0x1ee24c,_0x1fc7a4){return db[_0x62bc('0x3d')][_0x62bc('0x44')](_0x1ee24c[_0x62bc('0x45')],{})['then'](respondWithResult(_0x1fc7a4,0xc9))[_0x62bc('0x43')](handleError(_0x1fc7a4,null));};exports[_0x62bc('0x1f')]=function(_0x35d227,_0x55486f){if(_0x35d227[_0x62bc('0x45')]['id']){delete _0x35d227[_0x62bc('0x45')]['id'];}return db[_0x62bc('0x3d')][_0x62bc('0x46')]({'where':{'id':_0x35d227['params']['id']}})[_0x62bc('0x20')](handleEntityNotFound(_0x55486f,null))[_0x62bc('0x20')](saveUpdates(_0x35d227[_0x62bc('0x45')],null))[_0x62bc('0x20')](respondWithResult(_0x55486f,null))['catch'](handleError(_0x55486f,null));};exports['destroy']=function(_0x1b8a09,_0x3c620d){return db[_0x62bc('0x3d')][_0x62bc('0x46')]({'where':{'id':_0x1b8a09[_0x62bc('0x42')]['id']}})[_0x62bc('0x20')](handleEntityNotFound(_0x3c620d,null))[_0x62bc('0x20')](removeEntity(_0x3c620d,null))['catch'](handleError(_0x3c620d,null));};
\ No newline at end of file
index 90a4aad..170282b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6081=['int_salesforce_fields','salesforce_unique_index','idField','FieldId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceField.attributes','exports','define','SalesforceField'];(function(_0x78a364,_0x22fe06){var _0x193d34=function(_0x3a6e4e){while(--_0x3a6e4e){_0x78a364['push'](_0x78a364['shift']());}};_0x193d34(++_0x22fe06);}(_0x6081,0xbf));var _0x1608=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6081[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x1608('0x0'));var util=require(_0x1608('0x1'));var logger=require(_0x1608('0x2'))('api');var moment=require(_0x1608('0x3'));var BPromise=require(_0x1608('0x4'));var rp=require(_0x1608('0x5'));var fs=require('fs');var path=require(_0x1608('0x6'));var rimraf=require(_0x1608('0x7'));var config=require(_0x1608('0x8'));var attributes=require(_0x1608('0x9'));module[_0x1608('0xa')]=function(_0x1f87d4,_0x31b1b9){return _0x1f87d4[_0x1608('0xb')](_0x1608('0xc'),attributes,{'tableName':_0x1608('0xd'),'paranoid':![],'indexes':[{'name':_0x1608('0xe'),'fields':[_0x1608('0xf'),_0x1608('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc5b1=['int_salesforce_fields','salesforce_unique_index','idField','FieldId','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intSalesforceField.attributes','exports','define','SalesforceField'];(function(_0x5f08a3,_0x4147e9){var _0x3dc610=function(_0x3e1119){while(--_0x3e1119){_0x5f08a3['push'](_0x5f08a3['shift']());}};_0x3dc610(++_0x4147e9);}(_0xc5b1,0x7c));var _0x1c5b=function(_0x5b4385,_0x5a4906){_0x5b4385=_0x5b4385-0x0;var _0x2b1315=_0xc5b1[_0x5b4385];return _0x2b1315;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1c5b('0x0'))(_0x1c5b('0x1'));var moment=require(_0x1c5b('0x2'));var BPromise=require(_0x1c5b('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1c5b('0x4'));var rimraf=require(_0x1c5b('0x5'));var config=require(_0x1c5b('0x6'));var attributes=require(_0x1c5b('0x7'));module[_0x1c5b('0x8')]=function(_0x11432f,_0x1c1cfc){return _0x11432f[_0x1c5b('0x9')](_0x1c5b('0xa'),attributes,{'tableName':_0x1c5b('0xb'),'paranoid':![],'indexes':[{'name':_0x1c5b('0xc'),'fields':[_0x1c5b('0xd'),_0x1c5b('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index ad1a8da..f368238 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb015=['http','request','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0xfbae11,_0x44f1eb){var _0x362113=function(_0x647901){while(--_0x647901){_0xfbae11['push'](_0xfbae11['shift']());}};_0x362113(++_0x44f1eb);}(_0xb015,0x147));var _0x5b01=function(_0x243b2f,_0x30aa15){_0x243b2f=_0x243b2f-0x0;var _0xcb3c2d=_0xb015[_0x243b2f];return _0xcb3c2d;};'use strict';var _=require(_0x5b01('0x0'));var util=require(_0x5b01('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x5b01('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x5b01('0x3'));var logger=require(_0x5b01('0x4'))(_0x5b01('0x5'));var config=require(_0x5b01('0x6'));var jayson=require(_0x5b01('0x7'));var client=jayson[_0x5b01('0x8')][_0x5b01('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x365ac1,_0x4e07fe,_0x42b432){return new BPromise(function(_0x5c5f78,_0x22a6d0){return client[_0x5b01('0xa')](_0x365ac1,_0x42b432)[_0x5b01('0xb')](function(_0x2b9cd8){logger[_0x5b01('0xc')](_0x5b01('0xd'),_0x4e07fe,_0x5b01('0xe'));logger[_0x5b01('0xf')](_0x5b01('0x10'),_0x4e07fe,'request\x20sent',JSON[_0x5b01('0x11')](_0x2b9cd8));if(_0x2b9cd8['error']){if(_0x2b9cd8['error']['code']===0x1f4){logger[_0x5b01('0x12')](_0x5b01('0xd'),_0x4e07fe,_0x2b9cd8[_0x5b01('0x12')]['message']);return _0x22a6d0(_0x2b9cd8[_0x5b01('0x12')][_0x5b01('0x13')]);}logger[_0x5b01('0x12')]('SalesforceField,\x20%s,\x20%s',_0x4e07fe,_0x2b9cd8['error'][_0x5b01('0x13')]);return _0x5c5f78(_0x2b9cd8[_0x5b01('0x12')][_0x5b01('0x13')]);}else{logger['info']('SalesforceField,\x20%s,\x20%s',_0x4e07fe,_0x5b01('0xe'));_0x5c5f78(_0x2b9cd8[_0x5b01('0x14')][_0x5b01('0x13')]);}})['catch'](function(_0x251064){logger[_0x5b01('0x12')](_0x5b01('0xd'),_0x4e07fe,_0x251064);_0x22a6d0(_0x251064);});});}
\ No newline at end of file
+var _0xebaa=['request','then','SalesforceField,\x20%s,\x20%s','debug','error','code','message','request\x20sent','result','catch','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xebaa,0x69));var _0xaeba=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xebaa[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xaeba('0x0'));var BPromise=require('bluebird');var rs=require(_0xaeba('0x1'));var fs=require('fs');var Redis=require(_0xaeba('0x2'));var db=require(_0xaeba('0x3'))['db'];var utils=require(_0xaeba('0x4'));var logger=require(_0xaeba('0x5'))('rpc');var config=require(_0xaeba('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xaeba('0x7')][_0xaeba('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1b0ff,_0x544ac,_0x1edb44){return new BPromise(function(_0x3b1e12,_0x1cc385){return client[_0xaeba('0x9')](_0x1b0ff,_0x1edb44)[_0xaeba('0xa')](function(_0x208bf1){logger['info'](_0xaeba('0xb'),_0x544ac,'request\x20sent');logger[_0xaeba('0xc')]('SalesforceField,\x20%s,\x20%s,\x20%s',_0x544ac,'request\x20sent',JSON['stringify'](_0x208bf1));if(_0x208bf1[_0xaeba('0xd')]){if(_0x208bf1['error'][_0xaeba('0xe')]===0x1f4){logger['error'](_0xaeba('0xb'),_0x544ac,_0x208bf1['error']['message']);return _0x1cc385(_0x208bf1[_0xaeba('0xd')]['message']);}logger[_0xaeba('0xd')](_0xaeba('0xb'),_0x544ac,_0x208bf1[_0xaeba('0xd')][_0xaeba('0xf')]);return _0x3b1e12(_0x208bf1['error']['message']);}else{logger['info']('SalesforceField,\x20%s,\x20%s',_0x544ac,_0xaeba('0x10'));_0x3b1e12(_0x208bf1[_0xaeba('0x11')][_0xaeba('0xf')]);}})[_0xaeba('0x12')](function(_0x127d65){logger[_0xaeba('0xd')](_0xaeba('0xb'),_0x544ac,_0x127d65);_0x1cc385(_0x127d65);});});}
\ No newline at end of file
index fbd0c3d..3a7c030 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31af=['../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','connect-timeout','express','Router','../../components/auth/service'];(function(_0x5275b8,_0x51e5dd){var _0x568a9b=function(_0x583a71){while(--_0x583a71){_0x5275b8['push'](_0x5275b8['shift']());}};_0x568a9b(++_0x51e5dd);}(_0x31af,0x7f));var _0xf31a=function(_0x1f0f0e,_0x583fa6){_0x1f0f0e=_0x1f0f0e-0x0;var _0x108b43=_0x31af[_0x1f0f0e];return _0x108b43;};'use strict';var multer=require(_0xf31a('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xf31a('0x1'));var express=require(_0xf31a('0x2'));var router=express[_0xf31a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xf31a('0x4'));var interaction=require(_0xf31a('0x5'));var config=require(_0xf31a('0x6'));var controller=require('./intServicenowAccount.controller');router[_0xf31a('0x7')]('/',auth['isAuthenticated'](),controller[_0xf31a('0x8')]);router[_0xf31a('0x7')](_0xf31a('0x9'),auth[_0xf31a('0xa')](),controller['show']);router[_0xf31a('0x7')](_0xf31a('0xb'),auth[_0xf31a('0xa')](),controller[_0xf31a('0xc')]);router[_0xf31a('0x7')]('/:id/fields',auth['isAuthenticated'](),controller[_0xf31a('0xd')]);router[_0xf31a('0xe')]('/',auth['isAuthenticated'](),controller[_0xf31a('0xf')]);router[_0xf31a('0xe')](_0xf31a('0xb'),auth[_0xf31a('0xa')](),controller[_0xf31a('0x10')]);router[_0xf31a('0x11')](_0xf31a('0x9'),auth[_0xf31a('0xa')](),controller[_0xf31a('0x12')]);router[_0xf31a('0x13')](_0xf31a('0x9'),auth[_0xf31a('0xa')](),controller[_0xf31a('0x14')]);module[_0xf31a('0x15')]=router;
\ No newline at end of file
+var _0x9d6a=['create','/:id/configurations','addConfiguration','put','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','isAuthenticated','index','get','/:id','show','getConfigurations','/:id/fields','getFields','post'];(function(_0x4b7eab,_0x4af478){var _0x139298=function(_0x51dc35){while(--_0x51dc35){_0x4b7eab['push'](_0x4b7eab['shift']());}};_0x139298(++_0x4af478);}(_0x9d6a,0x1d0));var _0xa9d6=function(_0x15e366,_0x5d97bc){_0x15e366=_0x15e366-0x0;var _0x25ffd7=_0x9d6a[_0x15e366];return _0x25ffd7;};'use strict';var multer=require(_0xa9d6('0x0'));var util=require(_0xa9d6('0x1'));var path=require(_0xa9d6('0x2'));var timeout=require(_0xa9d6('0x3'));var express=require(_0xa9d6('0x4'));var router=express['Router']();var fs_extra=require(_0xa9d6('0x5'));var auth=require(_0xa9d6('0x6'));var interaction=require(_0xa9d6('0x7'));var config=require(_0xa9d6('0x8'));var controller=require(_0xa9d6('0x9'));router['get']('/',auth[_0xa9d6('0xa')](),controller[_0xa9d6('0xb')]);router[_0xa9d6('0xc')](_0xa9d6('0xd'),auth[_0xa9d6('0xa')](),controller[_0xa9d6('0xe')]);router[_0xa9d6('0xc')]('/:id/configurations',auth[_0xa9d6('0xa')](),controller[_0xa9d6('0xf')]);router[_0xa9d6('0xc')](_0xa9d6('0x10'),auth['isAuthenticated'](),controller[_0xa9d6('0x11')]);router[_0xa9d6('0x12')]('/',auth['isAuthenticated'](),controller[_0xa9d6('0x13')]);router[_0xa9d6('0x12')](_0xa9d6('0x14'),auth[_0xa9d6('0xa')](),controller[_0xa9d6('0x15')]);router[_0xa9d6('0x16')](_0xa9d6('0xd'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xa9d6('0xd'),auth[_0xa9d6('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 55e1f5a..59af873 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88b3=['remoteUri','sequelize','STRING','username'];(function(_0x49e2d5,_0x5812a3){var _0x143bac=function(_0x2470ed){while(--_0x2470ed){_0x49e2d5['push'](_0x49e2d5['shift']());}};_0x143bac(++_0x5812a3);}(_0x88b3,0x13d));var _0x388b=function(_0x5a07a0,_0x1c4321){_0x5a07a0=_0x5a07a0-0x0;var _0x4ba99b=_0x88b3[_0x5a07a0];return _0x4ba99b;};'use strict';var Sequelize=require(_0x388b('0x0'));module['exports']={'name':{'type':Sequelize[_0x388b('0x1')]},'description':{'type':Sequelize[_0x388b('0x1')]},'username':{'type':Sequelize[_0x388b('0x1')],'unique':_0x388b('0x2')},'password':{'type':Sequelize[_0x388b('0x1')]},'email':{'type':Sequelize[_0x388b('0x1')]},'remoteUri':{'type':Sequelize[_0x388b('0x1')],'unique':_0x388b('0x3')},'serverUrl':{'type':Sequelize[_0x388b('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xc409=['sequelize','exports','STRING','username','remoteUri'];(function(_0x84bfd,_0x2ec337){var _0x277ebc=function(_0x9110ba){while(--_0x9110ba){_0x84bfd['push'](_0x84bfd['shift']());}};_0x277ebc(++_0x2ec337);}(_0xc409,0x13b));var _0x9c40=function(_0x2addad,_0x2345dc){_0x2addad=_0x2addad-0x0;var _0x466fde=_0xc409[_0x2addad];return _0x466fde;};'use strict';var Sequelize=require(_0x9c40('0x0'));module[_0x9c40('0x1')]={'name':{'type':Sequelize[_0x9c40('0x2')]},'description':{'type':Sequelize[_0x9c40('0x2')]},'username':{'type':Sequelize[_0x9c40('0x2')],'unique':_0x9c40('0x3')},'password':{'type':Sequelize[_0x9c40('0x2')]},'email':{'type':Sequelize[_0x9c40('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x9c40('0x4')},'serverUrl':{'type':Sequelize[_0x9c40('0x2')],'allowNull':![]}};
\ No newline at end of file
index f17d247..6d071e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdef6=['True','true','False','false','GET','sys_choice?sysparm_query=name=incident^element=','inactive','value','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','ioredis','../../components/auth/service','../../config/logger','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','save','then','error','stack','name','send','index','map','ServicenowAccount','rawAttributes','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','find','create','body','update','params','getConfigurations','findOne','ServicenowConfiguration','Subjects','getSubjects','getDescriptions','channel','ServicenowField','Descriptions','getFields','made_sla','hold_reason','knowledge','subcategory','close_code','incident_state','category','parent','caused_by','watch_list','upon_reject','sys_updated_on','child_incidents','approval_history','resolved_by','sys_updated_by','opened_by','user_input','sys_domain','state','sys_created_by','calendar_stc','closed_at','delivery_plan','active','business_service','priority','sys_domain_path','rfc','time_worked','expected_start','opened_at','business_duration','group_list','work_end','reopened_time','resolved_at','approval_set','work_notes','short_description','correlation_display','work_start','assignment_group','business_stc','additional_assignee_list','description','calendar_duration','notify','sys_class_name','close_notes','closed_by','follow_up','sys_id','reopened_by','urgency','problem_id','company','activity_due','severity','comments','sla_due','comments_and_work_notes','due_date','sys_mod_count','reopen_count','escalation','upon_approval','correlation_id','location','username','password','email','remoteUri','slice','substring','lastIndexOf','format','%s/api/now/doc/table/schema/','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','remove','includes','forEach','label','push','all','TCL:\x20_object','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','internalType','ServiceNow\x20error:\x20','test','statusCode'];(function(_0x3a0de9,_0x2acb36){var _0x1e38a5=function(_0xec6ba8){while(--_0xec6ba8){_0x3a0de9['push'](_0x3a0de9['shift']());}};_0x1e38a5(++_0x2acb36);}(_0xdef6,0xc3));var _0x6def=function(_0x547b79,_0x482001){_0x547b79=_0x547b79-0x0;var _0x132d9f=_0xdef6[_0x547b79];return _0x132d9f;};'use strict';var emlformat=require(_0x6def('0x0'));var rimraf=require(_0x6def('0x1'));var zipdir=require(_0x6def('0x2'));var jsonpatch=require(_0x6def('0x3'));var rp=require(_0x6def('0x4'));var moment=require(_0x6def('0x5'));var BPromise=require(_0x6def('0x6'));var Mustache=require(_0x6def('0x7'));var util=require(_0x6def('0x8'));var path=require(_0x6def('0x9'));var sox=require(_0x6def('0xa'));var csv=require(_0x6def('0xb'));var ejs=require(_0x6def('0xc'));var fs=require('fs');var fs_extra=require(_0x6def('0xd'));var _=require(_0x6def('0xe'));var squel=require(_0x6def('0xf'));var crypto=require('crypto');var jsforce=require(_0x6def('0x10'));var deskjs=require(_0x6def('0x11'));var toCsv=require('to-csv');var querystring=require(_0x6def('0x12'));var Papa=require(_0x6def('0x13'));var Redis=require(_0x6def('0x14'));var authService=require(_0x6def('0x15'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x6def('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x6def('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x2ae9a8,_0x18c46c){_0x18c46c=_0x18c46c||0xcc;return function(_0x47e58e){if(_0x47e58e){return _0x2ae9a8[_0x6def('0x18')](_0x18c46c);}return _0x2ae9a8[_0x6def('0x19')](_0x18c46c)[_0x6def('0x1a')]();};}function respondWithResult(_0x16aed9,_0x381c78){_0x381c78=_0x381c78||0xc8;return function(_0x32a3dc){if(_0x32a3dc){return _0x16aed9['status'](_0x381c78)[_0x6def('0x1b')](_0x32a3dc);}};}function respondWithFilteredResult(_0x158c4f,_0x27f916){return function(_0x2083e1){if(_0x2083e1){var _0x572fc8=typeof _0x27f916[_0x6def('0x1c')]===_0x6def('0x1d')&&typeof _0x27f916[_0x6def('0x1e')]===_0x6def('0x1d');var _0x1ad15b=_0x2083e1[_0x6def('0x1f')];var _0x51b298=_0x572fc8?0x0:_0x27f916[_0x6def('0x1c')];var _0x430ed3=_0x572fc8?_0x2083e1[_0x6def('0x1f')]:_0x27f916[_0x6def('0x1c')]+_0x27f916[_0x6def('0x1e')];var _0x17ed3e;if(_0x430ed3>=_0x1ad15b){_0x430ed3=_0x1ad15b;_0x17ed3e=0xc8;}else{_0x17ed3e=0xce;}_0x158c4f[_0x6def('0x19')](_0x17ed3e);return _0x158c4f['set'](_0x6def('0x20'),_0x51b298+'-'+_0x430ed3+'/'+_0x1ad15b)['json'](_0x2083e1);}return null;};}function patchUpdates(_0x36496d){return function(_0x1d5f21){try{jsonpatch['apply'](_0x1d5f21,_0x36496d,!![]);}catch(_0x1559d7){return BPromise['reject'](_0x1559d7);}return _0x1d5f21[_0x6def('0x21')]();};}function saveUpdates(_0x3f7753,_0x3f4ba2){return function(_0x5b2969){if(_0x5b2969){return _0x5b2969['update'](_0x3f7753)['then'](function(_0xd0a0b5){return _0xd0a0b5;});}return null;};}function removeEntity(_0x51c3ee,_0x1136c6){return function(_0x38419a){if(_0x38419a){return _0x38419a['destroy']()[_0x6def('0x22')](function(){_0x51c3ee[_0x6def('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xd2896d,_0x35f3c5){return function(_0x35e550){if(!_0x35e550){_0xd2896d[_0x6def('0x18')](0x194);}return _0x35e550;};}function handleError(_0x314e49,_0xda624c){_0xda624c=_0xda624c||0x1f4;return function(_0x237b92){logger[_0x6def('0x23')](_0x237b92[_0x6def('0x24')]);if(_0x237b92['name']){delete _0x237b92[_0x6def('0x25')];}_0x314e49[_0x6def('0x19')](_0xda624c)[_0x6def('0x26')](_0x237b92);};}exports[_0x6def('0x27')]=function(_0x4432b7,_0x442151){var _0x40c747={},_0x192463={},_0xefccc7={'count':0x0,'rows':[]};var _0x4015ef=_[_0x6def('0x28')](db[_0x6def('0x29')][_0x6def('0x2a')],function(_0x34a29a){return{'name':_0x34a29a['fieldName'],'type':_0x34a29a['type'][_0x6def('0x2b')]};});_0x192463[_0x6def('0x2c')]=_[_0x6def('0x28')](_0x4015ef,'name');_0x192463['query']=_[_0x6def('0x2d')](_0x4432b7[_0x6def('0x2e')]);_0x192463[_0x6def('0x2f')]=_[_0x6def('0x30')](_0x192463[_0x6def('0x2c')],_0x192463[_0x6def('0x2e')]);_0x40c747[_0x6def('0x31')]=_[_0x6def('0x30')](_0x192463[_0x6def('0x2c')],qs[_0x6def('0x32')](_0x4432b7[_0x6def('0x2e')][_0x6def('0x32')]));_0x40c747[_0x6def('0x31')]=_0x40c747[_0x6def('0x31')][_0x6def('0x33')]?_0x40c747[_0x6def('0x31')]:_0x192463['model'];if(!_0x4432b7['query'][_0x6def('0x34')](_0x6def('0x35'))){_0x40c747['limit']=qs[_0x6def('0x1e')](_0x4432b7[_0x6def('0x2e')][_0x6def('0x1e')]);_0x40c747[_0x6def('0x1c')]=qs[_0x6def('0x1c')](_0x4432b7[_0x6def('0x2e')]['offset']);}_0x40c747[_0x6def('0x36')]=qs[_0x6def('0x37')](_0x4432b7[_0x6def('0x2e')][_0x6def('0x37')]);_0x40c747[_0x6def('0x38')]=qs[_0x6def('0x2f')](_[_0x6def('0x39')](_0x4432b7[_0x6def('0x2e')],_0x192463[_0x6def('0x2f')]),_0x4015ef);if(_0x4432b7[_0x6def('0x2e')]['filter']){_0x40c747[_0x6def('0x38')]=_[_0x6def('0x3a')](_0x40c747[_0x6def('0x38')],{'$or':_[_0x6def('0x28')](_0x4015ef,function(_0x46382c){if(_0x46382c[_0x6def('0x3b')]!==_0x6def('0x3c')){var _0x5eeeed={};_0x5eeeed[_0x46382c[_0x6def('0x25')]]={'$like':'%'+_0x4432b7['query'][_0x6def('0x3d')]+'%'};return _0x5eeeed;}})});}_0x40c747=_[_0x6def('0x3a')]({},_0x40c747,_0x4432b7[_0x6def('0x3e')]);var _0x1350e9={'where':_0x40c747[_0x6def('0x38')]};return db['ServicenowAccount'][_0x6def('0x1f')](_0x1350e9)[_0x6def('0x22')](function(_0x39663d){_0xefccc7[_0x6def('0x1f')]=_0x39663d;if(_0x4432b7['query'][_0x6def('0x3f')]){_0x40c747[_0x6def('0x40')]=[{'all':!![]}];}return db[_0x6def('0x29')][_0x6def('0x41')](_0x40c747);})[_0x6def('0x22')](function(_0x127cba){_0xefccc7[_0x6def('0x42')]=_0x127cba;return _0xefccc7;})[_0x6def('0x22')](respondWithFilteredResult(_0x442151,_0x40c747))[_0x6def('0x43')](handleError(_0x442151,null));};exports[_0x6def('0x44')]=function(_0x9f9654,_0x50f50f){var _0x292a09={'raw':![],'where':{'id':_0x9f9654['params']['id']}},_0x1f2dc7={};_0x1f2dc7[_0x6def('0x2c')]=_[_0x6def('0x2d')](db[_0x6def('0x29')]['rawAttributes']);_0x1f2dc7['query']=_[_0x6def('0x2d')](_0x9f9654['query']);_0x1f2dc7[_0x6def('0x2f')]=_['intersection'](_0x1f2dc7[_0x6def('0x2c')],_0x1f2dc7[_0x6def('0x2e')]);_0x292a09[_0x6def('0x31')]=_[_0x6def('0x30')](_0x1f2dc7[_0x6def('0x2c')],qs[_0x6def('0x32')](_0x9f9654[_0x6def('0x2e')]['fields']));_0x292a09[_0x6def('0x31')]=_0x292a09[_0x6def('0x31')][_0x6def('0x33')]?_0x292a09[_0x6def('0x31')]:_0x1f2dc7[_0x6def('0x2c')];if(_0x9f9654[_0x6def('0x2e')][_0x6def('0x3f')]){_0x292a09[_0x6def('0x40')]=[{'all':!![]}];}_0x292a09=_['merge']({},_0x292a09,_0x9f9654[_0x6def('0x3e')]);return db[_0x6def('0x29')][_0x6def('0x45')](_0x292a09)[_0x6def('0x22')](handleEntityNotFound(_0x50f50f,null))['then'](respondWithResult(_0x50f50f,null))['catch'](handleError(_0x50f50f,null));};exports[_0x6def('0x46')]=function(_0x305d30,_0x211fde){return db[_0x6def('0x29')][_0x6def('0x46')](_0x305d30[_0x6def('0x47')],{})[_0x6def('0x22')](respondWithResult(_0x211fde,0xc9))[_0x6def('0x43')](handleError(_0x211fde,null));};exports[_0x6def('0x48')]=function(_0x51fe98,_0x5ec0ab){if(_0x51fe98['body']['id']){delete _0x51fe98['body']['id'];}return db[_0x6def('0x29')][_0x6def('0x45')]({'where':{'id':_0x51fe98['params']['id']}})['then'](handleEntityNotFound(_0x5ec0ab,null))[_0x6def('0x22')](saveUpdates(_0x51fe98[_0x6def('0x47')],null))['then'](respondWithResult(_0x5ec0ab,null))[_0x6def('0x43')](handleError(_0x5ec0ab,null));};exports['destroy']=function(_0x9698c4,_0x2bd230){return db[_0x6def('0x29')][_0x6def('0x45')]({'where':{'id':_0x9698c4[_0x6def('0x49')]['id']}})[_0x6def('0x22')](handleEntityNotFound(_0x2bd230,null))['then'](removeEntity(_0x2bd230,null))[_0x6def('0x43')](handleError(_0x2bd230,null));};exports[_0x6def('0x4a')]=function(_0x319b79,_0x3efcf9,_0x3e4f3f){var _0x4164de={};var _0x40ecc3={};var _0x19c45f;var _0x2b6c98;return db[_0x6def('0x29')][_0x6def('0x4b')]({'where':{'id':_0x319b79[_0x6def('0x49')]['id']}})['then'](handleEntityNotFound(_0x3efcf9,null))['then'](function(_0x5112bb){if(_0x5112bb){_0x19c45f=_0x5112bb;_0x40ecc3['model']=_[_0x6def('0x2d')](db[_0x6def('0x4c')][_0x6def('0x2a')]);_0x40ecc3[_0x6def('0x2e')]=_[_0x6def('0x2d')](_0x319b79[_0x6def('0x2e')]);_0x40ecc3[_0x6def('0x2f')]=_[_0x6def('0x30')](_0x40ecc3[_0x6def('0x2c')],_0x40ecc3[_0x6def('0x2e')]);_0x4164de[_0x6def('0x31')]=_[_0x6def('0x30')](_0x40ecc3[_0x6def('0x2c')],qs[_0x6def('0x32')](_0x319b79['query'][_0x6def('0x32')]));_0x4164de['attributes']=_0x4164de[_0x6def('0x31')][_0x6def('0x33')]?_0x4164de[_0x6def('0x31')]:_0x40ecc3[_0x6def('0x2c')];_0x4164de[_0x6def('0x36')]=qs['sort'](_0x319b79[_0x6def('0x2e')][_0x6def('0x37')]);_0x4164de[_0x6def('0x38')]=qs['filters'](_[_0x6def('0x39')](_0x319b79[_0x6def('0x2e')],_0x40ecc3[_0x6def('0x2f')]));if(_0x319b79[_0x6def('0x2e')][_0x6def('0x3d')]){_0x4164de['where']=_['merge'](_0x4164de[_0x6def('0x38')],{'$or':_[_0x6def('0x28')](_0x4164de[_0x6def('0x31')],function(_0x473f94){var _0x5385b2={};_0x5385b2[_0x473f94]={'$like':'%'+_0x319b79[_0x6def('0x2e')][_0x6def('0x3d')]+'%'};return _0x5385b2;})});}_0x4164de=_[_0x6def('0x3a')]({},_0x4164de,_0x319b79[_0x6def('0x3e')]);return _0x19c45f['getConfigurations'](_0x4164de);}})[_0x6def('0x22')](function(_0x143a5d){if(_0x143a5d){_0x2b6c98=_0x143a5d[_0x6def('0x33')];if(!_0x319b79[_0x6def('0x2e')][_0x6def('0x34')](_0x6def('0x35'))){_0x4164de['limit']=qs[_0x6def('0x1e')](_0x319b79[_0x6def('0x2e')][_0x6def('0x1e')]);_0x4164de[_0x6def('0x1c')]=qs[_0x6def('0x1c')](_0x319b79[_0x6def('0x2e')][_0x6def('0x1c')]);}return _0x19c45f['getConfigurations'](_0x4164de);}})['then'](function(_0x33f41a){if(_0x33f41a){return _0x33f41a?{'count':_0x2b6c98,'rows':_0x33f41a}:null;}})[_0x6def('0x22')](respondWithResult(_0x3efcf9,null))[_0x6def('0x43')](handleError(_0x3efcf9,null));};exports['addConfiguration']=function(_0x227209,_0x32b1c1,_0x183254){if(_0x227209['body']['id']){delete _0x227209[_0x6def('0x47')]['id'];}return db[_0x6def('0x29')][_0x6def('0x4b')]({'where':{'id':_0x227209['params']['id']}})[_0x6def('0x22')](handleEntityNotFound(_0x32b1c1,null))[_0x6def('0x22')](function(_0x1762a7){if(_0x1762a7){_0x227209[_0x6def('0x47')]['AccountId']=_0x1762a7['id'];_0x227209[_0x6def('0x47')][_0x6def('0x4d')]=integrations[_0x6def('0x4e')](_0x227209[_0x6def('0x47')]['channel'],_0x227209[_0x6def('0x47')][_0x6def('0x3b')]);_0x227209['body']['Descriptions']=integrations[_0x6def('0x4f')](_0x227209['body'][_0x6def('0x50')],_0x227209[_0x6def('0x47')][_0x6def('0x3b')]);return db['ServicenowConfiguration'][_0x6def('0x46')](_0x227209[_0x6def('0x47')],{'include':[{'model':db['ServicenowField'],'as':_0x6def('0x4d')},{'model':db[_0x6def('0x51')],'as':_0x6def('0x52')}]});}return null;})[_0x6def('0x22')](respondWithResult(_0x32b1c1,null))[_0x6def('0x43')](handleError(_0x32b1c1,null));};exports[_0x6def('0x53')]=function(_0x295d4a,_0x2851ec,_0x57e254){var _0x40ca36=[_0x6def('0x54'),_0x6def('0x55'),_0x6def('0x56'),_0x6def('0x57'),_0x6def('0x58'),'notify',_0x6def('0x59'),'severity',_0x6def('0x5a')];var _0x39efd9=[_0x6def('0x5b'),_0x6def('0x54'),_0x6def('0x5c'),_0x6def('0x5d'),_0x6def('0x5e'),_0x6def('0x5f'),_0x6def('0x60'),_0x6def('0x55'),_0x6def('0x61'),'number',_0x6def('0x62'),_0x6def('0x63'),_0x6def('0x64'),_0x6def('0x65'),'sys_created_on',_0x6def('0x66'),_0x6def('0x67'),_0x6def('0x68'),'knowledge',_0x6def('0x36'),_0x6def('0x69'),_0x6def('0x6a'),'cmdb_ci',_0x6def('0x6b'),'impact',_0x6def('0x6c'),'work_notes_list',_0x6def('0x6d'),_0x6def('0x6e'),_0x6def('0x6f'),_0x6def('0x70'),_0x6def('0x71'),_0x6def('0x72'),_0x6def('0x73'),_0x6def('0x74'),_0x6def('0x75'),_0x6def('0x76'),_0x6def('0x77'),_0x6def('0x78'),'caller_id',_0x6def('0x79'),_0x6def('0x57'),_0x6def('0x7a'),_0x6def('0x7b'),_0x6def('0x58'),_0x6def('0x7c'),'delivery_task',_0x6def('0x7d'),_0x6def('0x7e'),_0x6def('0x7f'),_0x6def('0x80'),_0x6def('0x81'),_0x6def('0x82'),_0x6def('0x83'),_0x6def('0x84'),_0x6def('0x85'),_0x6def('0x86'),_0x6def('0x87'),'parent_incident',_0x6def('0x88'),'contact_type',_0x6def('0x89'),_0x6def('0x59'),_0x6def('0x8a'),_0x6def('0x8b'),_0x6def('0x8c'),'reassignment_count',_0x6def('0x8d'),'assigned_to',_0x6def('0x8e'),_0x6def('0x8f'),_0x6def('0x90'),'approval',_0x6def('0x91'),_0x6def('0x92'),_0x6def('0x93'),_0x6def('0x94'),'sys_tags',_0x6def('0x95'),_0x6def('0x96'),_0x6def('0x97'),_0x6def('0x98'),'category'];var _0xf0d97d='';var _0x5d501f='';var _0x24af24=[];var _0x14e938='';var _0x4f1a8b='';var _0x3acdda=[];var _0x4dd023='';var _0xce9674='';var _0x4ed0f8={};var _0x2bca35='';return db[_0x6def('0x29')][_0x6def('0x4b')]({'where':{'id':_0x295d4a[_0x6def('0x49')]['id']},'attributes':['id',_0x6def('0x99'),_0x6def('0x9a'),_0x6def('0x9b'),_0x6def('0x9c'),'serverUrl']})['then'](handleEntityNotFound(_0x2851ec,null))[_0x6def('0x22')](function(_0x2769b9){if(_0x2769b9){_0x2bca35=_0x2769b9['remoteUri'];var _0xb85cfa=_0x2bca35[_0x6def('0x9d')](-0x1);if(_0xb85cfa==='/'){_0x2bca35=_0x2bca35[_0x6def('0x9e')](0x0,_0x2bca35[_0x6def('0x9f')](_0xb85cfa));}_0xce9674=util[_0x6def('0xa0')](_0x6def('0xa1'),_0x2bca35);_0x4dd023=util[_0x6def('0xa0')]('%s/api/now/table/',_0x2bca35);_0x4ed0f8={'user':_0x2769b9[_0x6def('0x99')],'pass':_0x2769b9[_0x6def('0x9a')]};var _0x34f702={'method':'GET','uri':_0xce9674+_0x6def('0xa2'),'auth':_0x4ed0f8,'json':!![]};return rp(_0x34f702);}})[_0x6def('0x22')](function(_0x2eaee0){if(_0x2eaee0['result']['length']>0x0){_0xf0d97d=_0x2eaee0[_0x6def('0xa3')];}console[_0x6def('0xa4')](_0x6def('0xa5'),_0xf0d97d);_0x3acdda=[];_0x5d501f=Object[_0x6def('0xa6')]([],_0xf0d97d);_[_0x6def('0xa7')](_0x5d501f,function(_0x1f1d3f){return!_0x40ca36[_0x6def('0xa8')](_0x1f1d3f['name']);});_0x5d501f[_0x6def('0xa9')](function(_0x225414){var _0x461e59=createFieldObject(_0x4dd023,_0x4ed0f8,_0x225414['internalType'],_0x225414[_0x6def('0x25')],_0x225414[_0x6def('0xaa')],![]);_0x3acdda[_0x6def('0xab')](_0x461e59);});return Promise[_0x6def('0xac')](_0x3acdda);})['then'](function(_0xa8f956){_0x24af24=_0xa8f956;_0x14e938=Object['assign']([],_0xf0d97d);console[_0x6def('0xa4')](_0x6def('0xad'),_0xf0d97d);_[_0x6def('0xa7')](_0x14e938,function(_0x3bddac){return _0x39efd9[_0x6def('0xa8')](_0x3bddac[_0x6def('0x25')]);});console[_0x6def('0xa4')](_0x6def('0xae'),_0x14e938);_0x3acdda=[];_0x14e938[_0x6def('0xa9')](function(_0x11605b){var _0x3e4a01=createFieldObject(_0x4dd023,_0x4ed0f8,_0x11605b[_0x6def('0xaf')],_0x11605b['name'],_0x11605b[_0x6def('0xaa')],!![]);_0x3acdda[_0x6def('0xab')](_0x3e4a01);});return Promise[_0x6def('0xac')](_0x3acdda);})[_0x6def('0x22')](function(_0x3866df){_0x4f1a8b=_0x3866df;var _0x4fb696=_0x24af24['concat'](_0x4f1a8b);return{'count':_0x4fb696[_0x6def('0x33')],'rows':_0x4fb696};})[_0x6def('0x22')](respondWithResult(_0x2851ec,null))[_0x6def('0x43')](function(_0x18b913){console[_0x6def('0xa4')](_0x6def('0xb0')+_0x18b913);var _0x47a02=_0x295d4a['query'][_0x6def('0xb1')]?0x1f4:_0x18b913['statusCode']||0x1f4;logger['error'](_0x18b913['stack']);delete _0x18b913[_0x6def('0x25')];if(_0x47a02===0x191){_0x47a02=0x190;}_0x2851ec[_0x6def('0x19')](_0x47a02)[_0x6def('0x26')](_0x295d4a[_0x6def('0x2e')][_0x6def('0xb1')]?{'message':'Wrong\x20credentials','statusCode':_0x18b913[_0x6def('0xb2')]}:_0x18b913);});};function createFieldObject(_0x3d6010,_0x796f1c,_0x1a3a3b,_0x3d70f9,_0x17c24e,_0x46f01c){return new Promise(function(_0x22486f,_0x20af80){var _0x2a2add={'id':_0x3d70f9,'name':_0x17c24e,'custom':_0x46f01c};if(_0x1a3a3b==='boolean'){_0x2a2add[_0x6def('0x3e')]=[{'name':_0x6def('0xb3'),'value':_0x6def('0xb4')},{'name':_0x6def('0xb5'),'value':_0x6def('0xb6')}];_0x22486f(_0x2a2add);}else{var _0x2bc864={'method':_0x6def('0xb7'),'uri':_0x3d6010+_0x6def('0xb8')+_0x3d70f9,'auth':_0x796f1c,'json':!![]};return rp(_0x2bc864)[_0x6def('0x22')](function(_0x5acef){var _0x7a3bb9=[];if(_0x5acef[_0x6def('0xa3')][_0x6def('0x33')]>0x0){_0x5acef[_0x6def('0xa3')][_0x6def('0xa9')](function(_0x2bc290){if(_0x2bc290[_0x6def('0xb9')]===_0x6def('0xb6')){var _0xaeeb5b={'name':_0x2bc290[_0x6def('0xaa')],'value':_0x2bc290[_0x6def('0xba')]};_0x7a3bb9[_0x6def('0xab')](_0xaeeb5b);}});}_0x2a2add[_0x6def('0x3e')]=_0x7a3bb9;if(_0x2a2add['options'][_0x6def('0x33')]>0x0){_0x22486f(_0x2a2add);}else{if(_0x46f01c==![]){_0x22486f();}else{_0x22486f(_0x2a2add);}}});}});}
\ No newline at end of file
+var _0x1674=['%s/api/now/table/','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','includes','name','internalType','all','TCL:\x20_object','remove','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','label','test','statusCode','Wrong\x20credentials','boolean','True','sys_choice?sysparm_query=name=incident^element=','forEach','inactive','value','push','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','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','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','destroy','then','error','stack','send','index','map','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','ServicenowAccount','include','findAll','rows','catch','show','params','options','find','create','body','update','findOne','ServicenowConfiguration','getConfigurations','addConfiguration','AccountId','Subjects','channel','ServicenowField','Descriptions','made_sla','hold_reason','subcategory','close_code','notify','incident_state','category','parent','watch_list','upon_reject','approval_history','number','resolved_by','sys_updated_by','opened_by','sys_created_on','sys_domain','state','sys_created_by','closed_at','cmdb_ci','delivery_plan','active','work_notes_list','business_service','priority','sys_domain_path','rfc','expected_start','opened_at','business_duration','group_list','reopened_time','resolved_at','caller_id','work_notes','short_description','correlation_display','delivery_task','work_start','additional_assignee_list','description','calendar_duration','sys_class_name','close_notes','closed_by','follow_up','parent_incident','sys_id','contact_type','reopened_by','urgency','problem_id','company','activity_due','assigned_to','comments','comments_and_work_notes','due_date','sys_mod_count','reopen_count','sys_tags','escalation','upon_approval','correlation_id','username','password','slice','substring','lastIndexOf','format'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1674,0x186));var _0x4167=function(_0x1cd577,_0x180f2a){_0x1cd577=_0x1cd577-0x0;var _0x790837=_0x1674[_0x1cd577];return _0x790837;};'use strict';var emlformat=require(_0x4167('0x0'));var rimraf=require(_0x4167('0x1'));var zipdir=require(_0x4167('0x2'));var jsonpatch=require(_0x4167('0x3'));var rp=require(_0x4167('0x4'));var moment=require('moment');var BPromise=require(_0x4167('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x4167('0x6'));var sox=require(_0x4167('0x7'));var csv=require(_0x4167('0x8'));var ejs=require(_0x4167('0x9'));var fs=require('fs');var fs_extra=require(_0x4167('0xa'));var _=require(_0x4167('0xb'));var squel=require(_0x4167('0xc'));var crypto=require(_0x4167('0xd'));var jsforce=require(_0x4167('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x4167('0x8'));var querystring=require(_0x4167('0xf'));var Papa=require('papaparse');var Redis=require(_0x4167('0x10'));var authService=require(_0x4167('0x11'));var qs=require(_0x4167('0x12'));var as=require(_0x4167('0x13'));var hardwareService=require(_0x4167('0x14'));var logger=require(_0x4167('0x15'))(_0x4167('0x16'));var utils=require(_0x4167('0x17'));var config=require(_0x4167('0x18'));var licenseUtil=require(_0x4167('0x19'));var db=require(_0x4167('0x1a'))['db'];var integrations=require(_0x4167('0x1b'));function respondWithStatusCode(_0x565dd9,_0x11655c){_0x11655c=_0x11655c||0xcc;return function(_0x311ae1){if(_0x311ae1){return _0x565dd9[_0x4167('0x1c')](_0x11655c);}return _0x565dd9[_0x4167('0x1d')](_0x11655c)[_0x4167('0x1e')]();};}function respondWithResult(_0x1813b9,_0x5d9889){_0x5d9889=_0x5d9889||0xc8;return function(_0x1f41dc){if(_0x1f41dc){return _0x1813b9[_0x4167('0x1d')](_0x5d9889)[_0x4167('0x1f')](_0x1f41dc);}};}function respondWithFilteredResult(_0x4eadbd,_0x90597a){return function(_0x6c7128){if(_0x6c7128){var _0x6908f5=typeof _0x90597a['offset']===_0x4167('0x20')&&typeof _0x90597a[_0x4167('0x21')]===_0x4167('0x20');var _0x59837d=_0x6c7128[_0x4167('0x22')];var _0x6ade3=_0x6908f5?0x0:_0x90597a[_0x4167('0x23')];var _0x50a1fc=_0x6908f5?_0x6c7128['count']:_0x90597a[_0x4167('0x23')]+_0x90597a[_0x4167('0x21')];var _0x13468c;if(_0x50a1fc>=_0x59837d){_0x50a1fc=_0x59837d;_0x13468c=0xc8;}else{_0x13468c=0xce;}_0x4eadbd[_0x4167('0x1d')](_0x13468c);return _0x4eadbd[_0x4167('0x24')](_0x4167('0x25'),_0x6ade3+'-'+_0x50a1fc+'/'+_0x59837d)[_0x4167('0x1f')](_0x6c7128);}return null;};}function patchUpdates(_0x411bae){return function(_0x57aaee){try{jsonpatch[_0x4167('0x26')](_0x57aaee,_0x411bae,!![]);}catch(_0x4473ce){return BPromise[_0x4167('0x27')](_0x4473ce);}return _0x57aaee[_0x4167('0x28')]();};}function saveUpdates(_0x573ee8,_0x4d9c04){return function(_0x34be43){if(_0x34be43){return _0x34be43['update'](_0x573ee8)['then'](function(_0x1d9559){return _0x1d9559;});}return null;};}function removeEntity(_0x3d198f,_0x31174f){return function(_0x2cd94d){if(_0x2cd94d){return _0x2cd94d[_0x4167('0x29')]()[_0x4167('0x2a')](function(){_0x3d198f[_0x4167('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5e5c40,_0x2c676f){return function(_0x11e50a){if(!_0x11e50a){_0x5e5c40[_0x4167('0x1c')](0x194);}return _0x11e50a;};}function handleError(_0x5c5d63,_0x162faa){_0x162faa=_0x162faa||0x1f4;return function(_0x5c7854){logger[_0x4167('0x2b')](_0x5c7854[_0x4167('0x2c')]);if(_0x5c7854['name']){delete _0x5c7854['name'];}_0x5c5d63['status'](_0x162faa)[_0x4167('0x2d')](_0x5c7854);};}exports[_0x4167('0x2e')]=function(_0x24133f,_0x3725d4){var _0x4ad995={},_0x28bcb8={},_0x1d81fb={'count':0x0,'rows':[]};var _0x34e79b=_[_0x4167('0x2f')](db['ServicenowAccount'][_0x4167('0x30')],function(_0x8b91a3){return{'name':_0x8b91a3['fieldName'],'type':_0x8b91a3[_0x4167('0x31')][_0x4167('0x32')]};});_0x28bcb8[_0x4167('0x33')]=_[_0x4167('0x2f')](_0x34e79b,'name');_0x28bcb8[_0x4167('0x34')]=_[_0x4167('0x35')](_0x24133f['query']);_0x28bcb8['filters']=_[_0x4167('0x36')](_0x28bcb8['model'],_0x28bcb8[_0x4167('0x34')]);_0x4ad995[_0x4167('0x37')]=_[_0x4167('0x36')](_0x28bcb8[_0x4167('0x33')],qs[_0x4167('0x38')](_0x24133f['query'][_0x4167('0x38')]));_0x4ad995['attributes']=_0x4ad995['attributes'][_0x4167('0x39')]?_0x4ad995[_0x4167('0x37')]:_0x28bcb8[_0x4167('0x33')];if(!_0x24133f[_0x4167('0x34')][_0x4167('0x3a')]('nolimit')){_0x4ad995[_0x4167('0x21')]=qs[_0x4167('0x21')](_0x24133f[_0x4167('0x34')]['limit']);_0x4ad995[_0x4167('0x23')]=qs[_0x4167('0x23')](_0x24133f['query'][_0x4167('0x23')]);}_0x4ad995[_0x4167('0x3b')]=qs[_0x4167('0x3c')](_0x24133f[_0x4167('0x34')][_0x4167('0x3c')]);_0x4ad995[_0x4167('0x3d')]=qs[_0x4167('0x3e')](_[_0x4167('0x3f')](_0x24133f[_0x4167('0x34')],_0x28bcb8[_0x4167('0x3e')]),_0x34e79b);if(_0x24133f['query'][_0x4167('0x40')]){_0x4ad995[_0x4167('0x3d')]=_[_0x4167('0x41')](_0x4ad995[_0x4167('0x3d')],{'$or':_[_0x4167('0x2f')](_0x34e79b,function(_0x5bf11c){if(_0x5bf11c[_0x4167('0x31')]!==_0x4167('0x42')){var _0xf4eb4a={};_0xf4eb4a[_0x5bf11c['name']]={'$like':'%'+_0x24133f[_0x4167('0x34')][_0x4167('0x40')]+'%'};return _0xf4eb4a;}})});}_0x4ad995=_[_0x4167('0x41')]({},_0x4ad995,_0x24133f['options']);var _0x2d1b67={'where':_0x4ad995[_0x4167('0x3d')]};return db[_0x4167('0x43')][_0x4167('0x22')](_0x2d1b67)[_0x4167('0x2a')](function(_0x4432f4){_0x1d81fb['count']=_0x4432f4;if(_0x24133f['query']['includeAll']){_0x4ad995[_0x4167('0x44')]=[{'all':!![]}];}return db[_0x4167('0x43')][_0x4167('0x45')](_0x4ad995);})[_0x4167('0x2a')](function(_0x289899){_0x1d81fb[_0x4167('0x46')]=_0x289899;return _0x1d81fb;})[_0x4167('0x2a')](respondWithFilteredResult(_0x3725d4,_0x4ad995))[_0x4167('0x47')](handleError(_0x3725d4,null));};exports[_0x4167('0x48')]=function(_0x360a33,_0x595b76){var _0x57da0c={'raw':![],'where':{'id':_0x360a33[_0x4167('0x49')]['id']}},_0x5b2d4f={};_0x5b2d4f[_0x4167('0x33')]=_[_0x4167('0x35')](db[_0x4167('0x43')][_0x4167('0x30')]);_0x5b2d4f[_0x4167('0x34')]=_[_0x4167('0x35')](_0x360a33[_0x4167('0x34')]);_0x5b2d4f[_0x4167('0x3e')]=_[_0x4167('0x36')](_0x5b2d4f[_0x4167('0x33')],_0x5b2d4f[_0x4167('0x34')]);_0x57da0c['attributes']=_[_0x4167('0x36')](_0x5b2d4f['model'],qs['fields'](_0x360a33[_0x4167('0x34')]['fields']));_0x57da0c[_0x4167('0x37')]=_0x57da0c[_0x4167('0x37')][_0x4167('0x39')]?_0x57da0c[_0x4167('0x37')]:_0x5b2d4f[_0x4167('0x33')];if(_0x360a33[_0x4167('0x34')]['includeAll']){_0x57da0c['include']=[{'all':!![]}];}_0x57da0c=_[_0x4167('0x41')]({},_0x57da0c,_0x360a33[_0x4167('0x4a')]);return db['ServicenowAccount'][_0x4167('0x4b')](_0x57da0c)[_0x4167('0x2a')](handleEntityNotFound(_0x595b76,null))[_0x4167('0x2a')](respondWithResult(_0x595b76,null))[_0x4167('0x47')](handleError(_0x595b76,null));};exports[_0x4167('0x4c')]=function(_0x31899b,_0x1739a2){return db['ServicenowAccount'][_0x4167('0x4c')](_0x31899b[_0x4167('0x4d')],{})[_0x4167('0x2a')](respondWithResult(_0x1739a2,0xc9))[_0x4167('0x47')](handleError(_0x1739a2,null));};exports[_0x4167('0x4e')]=function(_0x58b0d9,_0x5af1e6){if(_0x58b0d9[_0x4167('0x4d')]['id']){delete _0x58b0d9[_0x4167('0x4d')]['id'];}return db[_0x4167('0x43')][_0x4167('0x4b')]({'where':{'id':_0x58b0d9[_0x4167('0x49')]['id']}})[_0x4167('0x2a')](handleEntityNotFound(_0x5af1e6,null))[_0x4167('0x2a')](saveUpdates(_0x58b0d9[_0x4167('0x4d')],null))[_0x4167('0x2a')](respondWithResult(_0x5af1e6,null))[_0x4167('0x47')](handleError(_0x5af1e6,null));};exports['destroy']=function(_0x43cb0a,_0x33daa3){return db[_0x4167('0x43')][_0x4167('0x4b')]({'where':{'id':_0x43cb0a[_0x4167('0x49')]['id']}})[_0x4167('0x2a')](handleEntityNotFound(_0x33daa3,null))[_0x4167('0x2a')](removeEntity(_0x33daa3,null))[_0x4167('0x47')](handleError(_0x33daa3,null));};exports['getConfigurations']=function(_0x2c8fad,_0x59f8ea,_0x4f4f52){var _0xdf3ccb={};var _0x5a6183={};var _0x4550b0;var _0x46b5e5;return db[_0x4167('0x43')][_0x4167('0x4f')]({'where':{'id':_0x2c8fad['params']['id']}})[_0x4167('0x2a')](handleEntityNotFound(_0x59f8ea,null))['then'](function(_0x548e43){if(_0x548e43){_0x4550b0=_0x548e43;_0x5a6183[_0x4167('0x33')]=_['keys'](db[_0x4167('0x50')][_0x4167('0x30')]);_0x5a6183[_0x4167('0x34')]=_[_0x4167('0x35')](_0x2c8fad[_0x4167('0x34')]);_0x5a6183[_0x4167('0x3e')]=_[_0x4167('0x36')](_0x5a6183[_0x4167('0x33')],_0x5a6183[_0x4167('0x34')]);_0xdf3ccb[_0x4167('0x37')]=_[_0x4167('0x36')](_0x5a6183[_0x4167('0x33')],qs['fields'](_0x2c8fad['query']['fields']));_0xdf3ccb[_0x4167('0x37')]=_0xdf3ccb[_0x4167('0x37')]['length']?_0xdf3ccb[_0x4167('0x37')]:_0x5a6183[_0x4167('0x33')];_0xdf3ccb[_0x4167('0x3b')]=qs[_0x4167('0x3c')](_0x2c8fad[_0x4167('0x34')]['sort']);_0xdf3ccb['where']=qs['filters'](_[_0x4167('0x3f')](_0x2c8fad[_0x4167('0x34')],_0x5a6183[_0x4167('0x3e')]));if(_0x2c8fad[_0x4167('0x34')]['filter']){_0xdf3ccb[_0x4167('0x3d')]=_[_0x4167('0x41')](_0xdf3ccb[_0x4167('0x3d')],{'$or':_['map'](_0xdf3ccb[_0x4167('0x37')],function(_0x5990ab){var _0x53fe72={};_0x53fe72[_0x5990ab]={'$like':'%'+_0x2c8fad[_0x4167('0x34')]['filter']+'%'};return _0x53fe72;})});}_0xdf3ccb=_['merge']({},_0xdf3ccb,_0x2c8fad['options']);return _0x4550b0['getConfigurations'](_0xdf3ccb);}})['then'](function(_0x5b4e74){if(_0x5b4e74){_0x46b5e5=_0x5b4e74[_0x4167('0x39')];if(!_0x2c8fad[_0x4167('0x34')][_0x4167('0x3a')]('nolimit')){_0xdf3ccb[_0x4167('0x21')]=qs['limit'](_0x2c8fad[_0x4167('0x34')]['limit']);_0xdf3ccb[_0x4167('0x23')]=qs[_0x4167('0x23')](_0x2c8fad['query'][_0x4167('0x23')]);}return _0x4550b0[_0x4167('0x51')](_0xdf3ccb);}})[_0x4167('0x2a')](function(_0x5728fa){if(_0x5728fa){return _0x5728fa?{'count':_0x46b5e5,'rows':_0x5728fa}:null;}})[_0x4167('0x2a')](respondWithResult(_0x59f8ea,null))[_0x4167('0x47')](handleError(_0x59f8ea,null));};exports[_0x4167('0x52')]=function(_0x4b3a24,_0xa743d7,_0x3c8f14){if(_0x4b3a24[_0x4167('0x4d')]['id']){delete _0x4b3a24['body']['id'];}return db['ServicenowAccount'][_0x4167('0x4f')]({'where':{'id':_0x4b3a24['params']['id']}})[_0x4167('0x2a')](handleEntityNotFound(_0xa743d7,null))[_0x4167('0x2a')](function(_0xfc4650){if(_0xfc4650){_0x4b3a24[_0x4167('0x4d')][_0x4167('0x53')]=_0xfc4650['id'];_0x4b3a24[_0x4167('0x4d')][_0x4167('0x54')]=integrations['getSubjects'](_0x4b3a24[_0x4167('0x4d')]['channel'],_0x4b3a24['body'][_0x4167('0x31')]);_0x4b3a24[_0x4167('0x4d')]['Descriptions']=integrations['getDescriptions'](_0x4b3a24[_0x4167('0x4d')][_0x4167('0x55')],_0x4b3a24[_0x4167('0x4d')][_0x4167('0x31')]);return db[_0x4167('0x50')]['create'](_0x4b3a24[_0x4167('0x4d')],{'include':[{'model':db[_0x4167('0x56')],'as':'Subjects'},{'model':db[_0x4167('0x56')],'as':_0x4167('0x57')}]});}return null;})[_0x4167('0x2a')](respondWithResult(_0xa743d7,null))['catch'](handleError(_0xa743d7,null));};exports['getFields']=function(_0x1d17b2,_0x460e1a,_0x5a0269){var _0x193211=[_0x4167('0x58'),_0x4167('0x59'),'knowledge',_0x4167('0x5a'),_0x4167('0x5b'),_0x4167('0x5c'),_0x4167('0x5d'),'severity',_0x4167('0x5e')];var _0x33c685=[_0x4167('0x5f'),'made_sla','caused_by',_0x4167('0x60'),_0x4167('0x61'),'sys_updated_on','child_incidents',_0x4167('0x59'),_0x4167('0x62'),_0x4167('0x63'),_0x4167('0x64'),_0x4167('0x65'),_0x4167('0x66'),'user_input',_0x4167('0x67'),_0x4167('0x68'),_0x4167('0x69'),_0x4167('0x6a'),'knowledge',_0x4167('0x3b'),'calendar_stc',_0x4167('0x6b'),_0x4167('0x6c'),_0x4167('0x6d'),'impact',_0x4167('0x6e'),_0x4167('0x6f'),_0x4167('0x70'),_0x4167('0x71'),_0x4167('0x72'),_0x4167('0x73'),'time_worked',_0x4167('0x74'),_0x4167('0x75'),_0x4167('0x76'),_0x4167('0x77'),'work_end',_0x4167('0x78'),_0x4167('0x79'),_0x4167('0x7a'),'approval_set',_0x4167('0x5a'),_0x4167('0x7b'),_0x4167('0x7c'),'close_code',_0x4167('0x7d'),_0x4167('0x7e'),_0x4167('0x7f'),'assignment_group','business_stc',_0x4167('0x80'),_0x4167('0x81'),_0x4167('0x82'),_0x4167('0x5c'),_0x4167('0x83'),_0x4167('0x84'),_0x4167('0x85'),_0x4167('0x86'),_0x4167('0x87'),_0x4167('0x88'),_0x4167('0x89'),_0x4167('0x8a'),'incident_state',_0x4167('0x8b'),_0x4167('0x8c'),_0x4167('0x8d'),'reassignment_count',_0x4167('0x8e'),_0x4167('0x8f'),'severity',_0x4167('0x90'),'sla_due','approval',_0x4167('0x91'),_0x4167('0x92'),_0x4167('0x93'),_0x4167('0x94'),_0x4167('0x95'),_0x4167('0x96'),_0x4167('0x97'),_0x4167('0x98'),'location',_0x4167('0x5e')];var _0x13f946='';var _0x3ecf77='';var _0x4fd9c0=[];var _0x17e91f='';var _0x54139b='';var _0x206ba2=[];var _0x557829='';var _0x6b84c='';var _0x3f1d38={};var _0x8a9588='';return db[_0x4167('0x43')][_0x4167('0x4f')]({'where':{'id':_0x1d17b2[_0x4167('0x49')]['id']},'attributes':['id',_0x4167('0x99'),_0x4167('0x9a'),'email','remoteUri','serverUrl']})[_0x4167('0x2a')](handleEntityNotFound(_0x460e1a,null))[_0x4167('0x2a')](function(_0x4661db){if(_0x4661db){_0x8a9588=_0x4661db['remoteUri'];var _0x509a5e=_0x8a9588[_0x4167('0x9b')](-0x1);if(_0x509a5e==='/'){_0x8a9588=_0x8a9588[_0x4167('0x9c')](0x0,_0x8a9588[_0x4167('0x9d')](_0x509a5e));}_0x6b84c=util[_0x4167('0x9e')]('%s/api/now/doc/table/schema/',_0x8a9588);_0x557829=util[_0x4167('0x9e')](_0x4167('0x9f'),_0x8a9588);_0x3f1d38={'user':_0x4661db['username'],'pass':_0x4661db[_0x4167('0x9a')]};var _0x2da928={'method':'GET','uri':_0x6b84c+_0x4167('0xa0'),'auth':_0x3f1d38,'json':!![]};return rp(_0x2da928);}})[_0x4167('0x2a')](function(_0x24168c){if(_0x24168c[_0x4167('0xa1')][_0x4167('0x39')]>0x0){_0x13f946=_0x24168c[_0x4167('0xa1')];}console[_0x4167('0xa2')](_0x4167('0xa3'),_0x13f946);_0x206ba2=[];_0x3ecf77=Object[_0x4167('0xa4')]([],_0x13f946);_['remove'](_0x3ecf77,function(_0x2855bf){return!_0x193211[_0x4167('0xa5')](_0x2855bf[_0x4167('0xa6')]);});_0x3ecf77['forEach'](function(_0x256e41){var _0x1043e7=createFieldObject(_0x557829,_0x3f1d38,_0x256e41[_0x4167('0xa7')],_0x256e41[_0x4167('0xa6')],_0x256e41['label'],![]);_0x206ba2['push'](_0x1043e7);});return Promise[_0x4167('0xa8')](_0x206ba2);})[_0x4167('0x2a')](function(_0x13b045){_0x4fd9c0=_0x13b045;_0x17e91f=Object[_0x4167('0xa4')]([],_0x13f946);console[_0x4167('0xa2')](_0x4167('0xa9'),_0x13f946);_[_0x4167('0xaa')](_0x17e91f,function(_0x42d83e){return _0x33c685[_0x4167('0xa5')](_0x42d83e[_0x4167('0xa6')]);});console[_0x4167('0xa2')](_0x4167('0xab'),_0x17e91f);_0x206ba2=[];_0x17e91f['forEach'](function(_0x122b98){var _0x53c876=createFieldObject(_0x557829,_0x3f1d38,_0x122b98[_0x4167('0xa7')],_0x122b98[_0x4167('0xa6')],_0x122b98[_0x4167('0xac')],!![]);_0x206ba2['push'](_0x53c876);});return Promise['all'](_0x206ba2);})['then'](function(_0x5aac7c){_0x54139b=_0x5aac7c;var _0x1ecbec=_0x4fd9c0['concat'](_0x54139b);return{'count':_0x1ecbec[_0x4167('0x39')],'rows':_0x1ecbec};})[_0x4167('0x2a')](respondWithResult(_0x460e1a,null))[_0x4167('0x47')](function(_0x7d25f6){console[_0x4167('0xa2')]('ServiceNow\x20error:\x20'+_0x7d25f6);var _0x29e2f3=_0x1d17b2[_0x4167('0x34')][_0x4167('0xad')]?0x1f4:_0x7d25f6[_0x4167('0xae')]||0x1f4;logger['error'](_0x7d25f6['stack']);delete _0x7d25f6[_0x4167('0xa6')];if(_0x29e2f3===0x191){_0x29e2f3=0x190;}_0x460e1a[_0x4167('0x1d')](_0x29e2f3)[_0x4167('0x2d')](_0x1d17b2[_0x4167('0x34')][_0x4167('0xad')]?{'message':_0x4167('0xaf'),'statusCode':_0x7d25f6['statusCode']}:_0x7d25f6);});};function createFieldObject(_0x4bcb20,_0x2de4fc,_0x458af6,_0x53e718,_0x1f9e9f,_0x224193){return new Promise(function(_0x3e30cd,_0x1201cf){var _0x298eb2={'id':_0x53e718,'name':_0x1f9e9f,'custom':_0x224193};if(_0x458af6===_0x4167('0xb0')){_0x298eb2[_0x4167('0x4a')]=[{'name':_0x4167('0xb1'),'value':'true'},{'name':'False','value':'false'}];_0x3e30cd(_0x298eb2);}else{var _0xc92931={'method':'GET','uri':_0x4bcb20+_0x4167('0xb2')+_0x53e718,'auth':_0x2de4fc,'json':!![]};return rp(_0xc92931)[_0x4167('0x2a')](function(_0x1dd1e6){var _0x106723=[];if(_0x1dd1e6[_0x4167('0xa1')][_0x4167('0x39')]>0x0){_0x1dd1e6[_0x4167('0xa1')][_0x4167('0xb3')](function(_0x3c6f44){if(_0x3c6f44[_0x4167('0xb4')]==='false'){var _0x3800bd={'name':_0x3c6f44['label'],'value':_0x3c6f44[_0x4167('0xb5')]};_0x106723[_0x4167('0xb6')](_0x3800bd);}});}_0x298eb2[_0x4167('0x4a')]=_0x106723;if(_0x298eb2[_0x4167('0x4a')][_0x4167('0x39')]>0x0){_0x3e30cd(_0x298eb2);}else{if(_0x224193==![]){_0x3e30cd();}else{_0x3e30cd(_0x298eb2);}}});}});}
\ No newline at end of file
index ffd7fd7..434017f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeff8=['rimraf','../../config/environment','./intServicenowAccount.attributes','exports','define','int_servicenow_accounts','lodash','util','api','moment','bluebird','path'];(function(_0x7cacf9,_0x6dac99){var _0xde6456=function(_0x2fdf27){while(--_0x2fdf27){_0x7cacf9['push'](_0x7cacf9['shift']());}};_0xde6456(++_0x6dac99);}(_0xeff8,0x186));var _0x8eff=function(_0x298ed3,_0x4ab5e1){_0x298ed3=_0x298ed3-0x0;var _0x5aad28=_0xeff8[_0x298ed3];return _0x5aad28;};'use strict';var _=require(_0x8eff('0x0'));var util=require(_0x8eff('0x1'));var logger=require('../../config/logger')(_0x8eff('0x2'));var moment=require(_0x8eff('0x3'));var BPromise=require(_0x8eff('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8eff('0x5'));var rimraf=require(_0x8eff('0x6'));var config=require(_0x8eff('0x7'));var attributes=require(_0x8eff('0x8'));var integrations=require('../../components/integrations/configuration');module[_0x8eff('0x9')]=function(_0xb54063,_0x3409bc){return _0xb54063[_0x8eff('0xa')]('ServicenowAccount',attributes,{'tableName':_0x8eff('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5d17=['lodash','util','moment','bluebird','request-promise','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','define','ServicenowAccount','int_servicenow_accounts'];(function(_0x5e8dd0,_0x52a1a4){var _0x5d7345=function(_0x263a6d){while(--_0x263a6d){_0x5e8dd0['push'](_0x5e8dd0['shift']());}};_0x5d7345(++_0x52a1a4);}(_0x5d17,0x114));var _0x75d1=function(_0x13184d,_0x6bdeb0){_0x13184d=_0x13184d-0x0;var _0x384a96=_0x5d17[_0x13184d];return _0x384a96;};'use strict';var _=require(_0x75d1('0x0'));var util=require(_0x75d1('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x75d1('0x2'));var BPromise=require(_0x75d1('0x3'));var rp=require(_0x75d1('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x75d1('0x5'));var config=require(_0x75d1('0x6'));var attributes=require(_0x75d1('0x7'));var integrations=require(_0x75d1('0x8'));module['exports']=function(_0x458681,_0x116a51){return _0x458681[_0x75d1('0x9')](_0x75d1('0xa'),attributes,{'tableName':_0x75d1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d010d14..776a1f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86b8=['randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request','then','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetServicenowAccount','options','raw','where','attributes','limit','include','map','model','ShowServicenowAccount','lodash','util','moment'];(function(_0x59caae,_0x417058){var _0x10ed12=function(_0x4cf08a){while(--_0x4cf08a){_0x59caae['push'](_0x59caae['shift']());}};_0x10ed12(++_0x417058);}(_0x86b8,0x15d));var _0x886b=function(_0x5b02a1,_0x11a805){_0x5b02a1=_0x5b02a1-0x0;var _0x195fb8=_0x86b8[_0x5b02a1];return _0x195fb8;};'use strict';var _=require(_0x886b('0x0'));var util=require(_0x886b('0x1'));var moment=require(_0x886b('0x2'));var BPromise=require('bluebird');var rs=require(_0x886b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x886b('0x4'))['db'];var utils=require(_0x886b('0x5'));var logger=require(_0x886b('0x6'))('rpc');var config=require(_0x886b('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x886b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xd9d9ac,_0xe888a0,_0x2f8957){return new BPromise(function(_0xbc2d70,_0x238701){return client[_0x886b('0x9')](_0xd9d9ac,_0x2f8957)[_0x886b('0xa')](function(_0x52344d){logger[_0x886b('0xb')](_0x886b('0xc'),_0xe888a0,_0x886b('0xd'));logger[_0x886b('0xe')](_0x886b('0xf'),_0xe888a0,_0x886b('0xd'),JSON[_0x886b('0x10')](_0x52344d));if(_0x52344d[_0x886b('0x11')]){if(_0x52344d['error'][_0x886b('0x12')]===0x1f4){logger[_0x886b('0x11')]('ServicenowAccount,\x20%s,\x20%s',_0xe888a0,_0x52344d[_0x886b('0x11')][_0x886b('0x13')]);return _0x238701(_0x52344d[_0x886b('0x11')][_0x886b('0x13')]);}logger['error']('ServicenowAccount,\x20%s,\x20%s',_0xe888a0,_0x52344d[_0x886b('0x11')][_0x886b('0x13')]);return _0xbc2d70(_0x52344d[_0x886b('0x11')][_0x886b('0x13')]);}else{logger[_0x886b('0xb')](_0x886b('0xc'),_0xe888a0,_0x886b('0xd'));_0xbc2d70(_0x52344d[_0x886b('0x14')]['message']);}})[_0x886b('0x15')](function(_0x44d81a){logger['error'](_0x886b('0xc'),_0xe888a0,_0x44d81a);_0x238701(_0x44d81a);});});}exports[_0x886b('0x16')]=function(_0x3df547){var _0x2232a7=this;return new Promise(function(_0x282a98,_0xe05a77){return db['ServicenowAccount']['findAll']({'raw':_0x3df547[_0x886b('0x17')]?_0x3df547[_0x886b('0x17')][_0x886b('0x18')]===undefined?!![]:![]:!![],'where':_0x3df547['options']?_0x3df547['options'][_0x886b('0x19')]||null:null,'attributes':_0x3df547[_0x886b('0x17')]?_0x3df547[_0x886b('0x17')][_0x886b('0x1a')]||null:null,'limit':_0x3df547[_0x886b('0x17')]?_0x3df547[_0x886b('0x17')][_0x886b('0x1b')]||null:null,'include':_0x3df547['options']?_0x3df547[_0x886b('0x17')][_0x886b('0x1c')]?_[_0x886b('0x1d')](_0x3df547['options'][_0x886b('0x1c')],function(_0x2a5519){return{'model':db[_0x2a5519[_0x886b('0x1e')]],'as':_0x2a5519['as'],'attributes':_0x2a5519[_0x886b('0x1a')],'include':_0x2a5519['include']?_[_0x886b('0x1d')](_0x2a5519[_0x886b('0x1c')],function(_0x18d89e){return{'model':db[_0x18d89e[_0x886b('0x1e')]],'as':_0x18d89e['as'],'attributes':_0x18d89e[_0x886b('0x1a')],'include':_0x18d89e['include']?_[_0x886b('0x1d')](_0x18d89e[_0x886b('0x1c')],function(_0x2e2c80){return{'model':db[_0x2e2c80[_0x886b('0x1e')]],'as':_0x2e2c80['as'],'attributes':_0x2e2c80['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3b85a4){logger[_0x886b('0xb')]('GetServicenowAccount',_0x3df547);logger[_0x886b('0xe')](_0x886b('0x16'),_0x3df547,JSON[_0x886b('0x10')](_0x3b85a4));_0x282a98(_0x3b85a4);})[_0x886b('0x15')](function(_0x1374a1){logger[_0x886b('0x11')]('GetServicenowAccount',_0x1374a1['message'],_0x3df547);_0xe05a77(_0x2232a7[_0x886b('0x11')](0x1f4,_0x1374a1[_0x886b('0x13')]));});});};exports[_0x886b('0x1f')]=function(_0x634c6){var _0x2a6ecf=this;return new Promise(function(_0x6ffb50,_0x57772b){return db['ServicenowAccount']['find']({'raw':_0x634c6['options']?_0x634c6[_0x886b('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x634c6[_0x886b('0x17')]?_0x634c6['options']['where']||null:null,'attributes':_0x634c6[_0x886b('0x17')]?_0x634c6[_0x886b('0x17')]['attributes']||null:null,'include':_0x634c6['options']?_0x634c6[_0x886b('0x17')]['include']?_['map'](_0x634c6[_0x886b('0x17')]['include'],function(_0xf33aa3){return{'model':db[_0xf33aa3[_0x886b('0x1e')]],'as':_0xf33aa3['as'],'attributes':_0xf33aa3[_0x886b('0x1a')],'include':_0xf33aa3[_0x886b('0x1c')]?_['map'](_0xf33aa3[_0x886b('0x1c')],function(_0x160264){return{'model':db[_0x160264['model']],'as':_0x160264['as'],'attributes':_0x160264[_0x886b('0x1a')],'include':_0x160264[_0x886b('0x1c')]?_[_0x886b('0x1d')](_0x160264[_0x886b('0x1c')],function(_0x1727ae){return{'model':db[_0x1727ae[_0x886b('0x1e')]],'as':_0x1727ae['as'],'attributes':_0x1727ae['attributes']};}):[]};}):[]};}):[]:[]})[_0x886b('0xa')](function(_0x2831cf){logger[_0x886b('0xb')](_0x886b('0x1f'),_0x634c6);logger[_0x886b('0xe')](_0x886b('0x1f'),_0x634c6,JSON[_0x886b('0x10')](_0x2831cf));_0x6ffb50(_0x2831cf);})[_0x886b('0x15')](function(_0x1fe714){logger['error']('ShowServicenowAccount',_0x1fe714[_0x886b('0x13')],_0x634c6);_0x57772b(_0x2a6ecf[_0x886b('0x11')](0x1f4,_0x1fe714['message']));});});};
\ No newline at end of file
+var _0x62bc=['info','result','catch','GetServicenowAccount','ServicenowAccount','findAll','options','where','attributes','limit','map','model','include','debug','stringify','ShowServicenowAccount','find','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','ServicenowAccount,\x20%s,\x20%s','request\x20sent','ServicenowAccount,\x20%s,\x20%s,\x20%s','error','message'];(function(_0xaa44f2,_0x421855){var _0x598d15=function(_0x5184f9){while(--_0x5184f9){_0xaa44f2['push'](_0xaa44f2['shift']());}};_0x598d15(++_0x421855);}(_0x62bc,0x91));var _0xc62b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x62bc[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xc62b('0x0'));var rs=require(_0xc62b('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xc62b('0x2'));var logger=require(_0xc62b('0x3'))(_0xc62b('0x4'));var config=require(_0xc62b('0x5'));var jayson=require(_0xc62b('0x6'));var client=jayson['client'][_0xc62b('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xa2320b,_0x2d3fad,_0x1dc042){return new BPromise(function(_0x3597e0,_0x2b6aad){return client[_0xc62b('0x8')](_0xa2320b,_0x1dc042)[_0xc62b('0x9')](function(_0x58e4a0){logger['info'](_0xc62b('0xa'),_0x2d3fad,_0xc62b('0xb'));logger['debug'](_0xc62b('0xc'),_0x2d3fad,_0xc62b('0xb'),JSON['stringify'](_0x58e4a0));if(_0x58e4a0['error']){if(_0x58e4a0[_0xc62b('0xd')]['code']===0x1f4){logger[_0xc62b('0xd')](_0xc62b('0xa'),_0x2d3fad,_0x58e4a0[_0xc62b('0xd')]['message']);return _0x2b6aad(_0x58e4a0[_0xc62b('0xd')][_0xc62b('0xe')]);}logger[_0xc62b('0xd')](_0xc62b('0xa'),_0x2d3fad,_0x58e4a0['error'][_0xc62b('0xe')]);return _0x3597e0(_0x58e4a0[_0xc62b('0xd')][_0xc62b('0xe')]);}else{logger[_0xc62b('0xf')](_0xc62b('0xa'),_0x2d3fad,_0xc62b('0xb'));_0x3597e0(_0x58e4a0[_0xc62b('0x10')][_0xc62b('0xe')]);}})[_0xc62b('0x11')](function(_0x65e93b){logger[_0xc62b('0xd')](_0xc62b('0xa'),_0x2d3fad,_0x65e93b);_0x2b6aad(_0x65e93b);});});}exports[_0xc62b('0x12')]=function(_0xf72ce0){var _0xd0b77d=this;return new Promise(function(_0x6d0606,_0x573184){return db[_0xc62b('0x13')][_0xc62b('0x14')]({'raw':_0xf72ce0[_0xc62b('0x15')]?_0xf72ce0[_0xc62b('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0xf72ce0[_0xc62b('0x15')]?_0xf72ce0['options'][_0xc62b('0x16')]||null:null,'attributes':_0xf72ce0[_0xc62b('0x15')]?_0xf72ce0[_0xc62b('0x15')][_0xc62b('0x17')]||null:null,'limit':_0xf72ce0[_0xc62b('0x15')]?_0xf72ce0['options'][_0xc62b('0x18')]||null:null,'include':_0xf72ce0[_0xc62b('0x15')]?_0xf72ce0[_0xc62b('0x15')]['include']?_[_0xc62b('0x19')](_0xf72ce0[_0xc62b('0x15')]['include'],function(_0x5bab0c){return{'model':db[_0x5bab0c[_0xc62b('0x1a')]],'as':_0x5bab0c['as'],'attributes':_0x5bab0c['attributes'],'include':_0x5bab0c[_0xc62b('0x1b')]?_['map'](_0x5bab0c['include'],function(_0x5b4f3c){return{'model':db[_0x5b4f3c['model']],'as':_0x5b4f3c['as'],'attributes':_0x5b4f3c[_0xc62b('0x17')],'include':_0x5b4f3c[_0xc62b('0x1b')]?_[_0xc62b('0x19')](_0x5b4f3c['include'],function(_0x24c90a){return{'model':db[_0x24c90a[_0xc62b('0x1a')]],'as':_0x24c90a['as'],'attributes':_0x24c90a[_0xc62b('0x17')]};}):[]};}):[]};}):[]:[]})[_0xc62b('0x9')](function(_0x3a2d9c){logger[_0xc62b('0xf')](_0xc62b('0x12'),_0xf72ce0);logger[_0xc62b('0x1c')](_0xc62b('0x12'),_0xf72ce0,JSON[_0xc62b('0x1d')](_0x3a2d9c));_0x6d0606(_0x3a2d9c);})[_0xc62b('0x11')](function(_0x3f9510){logger[_0xc62b('0xd')](_0xc62b('0x12'),_0x3f9510[_0xc62b('0xe')],_0xf72ce0);_0x573184(_0xd0b77d[_0xc62b('0xd')](0x1f4,_0x3f9510['message']));});});};exports[_0xc62b('0x1e')]=function(_0x13b691){var _0x4371f6=this;return new Promise(function(_0x5457d4,_0x510945){return db[_0xc62b('0x13')][_0xc62b('0x1f')]({'raw':_0x13b691[_0xc62b('0x15')]?_0x13b691['options']['raw']===undefined?!![]:![]:!![],'where':_0x13b691[_0xc62b('0x15')]?_0x13b691[_0xc62b('0x15')][_0xc62b('0x16')]||null:null,'attributes':_0x13b691[_0xc62b('0x15')]?_0x13b691['options']['attributes']||null:null,'include':_0x13b691['options']?_0x13b691[_0xc62b('0x15')][_0xc62b('0x1b')]?_[_0xc62b('0x19')](_0x13b691[_0xc62b('0x15')][_0xc62b('0x1b')],function(_0x341242){return{'model':db[_0x341242[_0xc62b('0x1a')]],'as':_0x341242['as'],'attributes':_0x341242['attributes'],'include':_0x341242[_0xc62b('0x1b')]?_['map'](_0x341242[_0xc62b('0x1b')],function(_0x420011){return{'model':db[_0x420011[_0xc62b('0x1a')]],'as':_0x420011['as'],'attributes':_0x420011[_0xc62b('0x17')],'include':_0x420011[_0xc62b('0x1b')]?_[_0xc62b('0x19')](_0x420011[_0xc62b('0x1b')],function(_0x129337){return{'model':db[_0x129337[_0xc62b('0x1a')]],'as':_0x129337['as'],'attributes':_0x129337[_0xc62b('0x17')]};}):[]};}):[]};}):[]:[]})[_0xc62b('0x9')](function(_0x39fda6){logger[_0xc62b('0xf')](_0xc62b('0x1e'),_0x13b691);logger[_0xc62b('0x1c')](_0xc62b('0x1e'),_0x13b691,JSON['stringify'](_0x39fda6));_0x5457d4(_0x39fda6);})[_0xc62b('0x11')](function(_0x3a571d){logger['error']('ShowServicenowAccount',_0x3a571d[_0xc62b('0xe')],_0x13b691);_0x510945(_0x4371f6[_0xc62b('0xd')](0x1f4,_0x3a571d[_0xc62b('0xe')]));});});};
\ No newline at end of file
index a8496c8..f5b979f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dab=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','get','isAuthenticated','index','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','/:id','update','delete','exports','multer','util','express'];(function(_0x20e5c3,_0x41470c){var _0x401520=function(_0x37f246){while(--_0x37f246){_0x20e5c3['push'](_0x20e5c3['shift']());}};_0x401520(++_0x41470c);}(_0x9dab,0x129));var _0xb9da=function(_0x5037a4,_0xfe562a){_0x5037a4=_0x5037a4-0x0;var _0x2a6138=_0x9dab[_0x5037a4];return _0x2a6138;};'use strict';var multer=require(_0xb9da('0x0'));var util=require(_0xb9da('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xb9da('0x2'));var router=express[_0xb9da('0x3')]();var fs_extra=require(_0xb9da('0x4'));var auth=require(_0xb9da('0x5'));var interaction=require(_0xb9da('0x6'));var config=require(_0xb9da('0x7'));var controller=require(_0xb9da('0x8'));router[_0xb9da('0x9')]('/',auth[_0xb9da('0xa')](),controller[_0xb9da('0xb')]);router[_0xb9da('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xb9da('0x9')](_0xb9da('0xc'),auth[_0xb9da('0xa')](),controller[_0xb9da('0xd')]);router['get'](_0xb9da('0xe'),auth['isAuthenticated'](),controller[_0xb9da('0xf')]);router[_0xb9da('0x9')](_0xb9da('0x10'),auth[_0xb9da('0xa')](),controller[_0xb9da('0x11')]);router[_0xb9da('0x12')]('/',auth[_0xb9da('0xa')](),controller[_0xb9da('0x13')]);router[_0xb9da('0x14')](_0xb9da('0x15'),auth[_0xb9da('0xa')](),controller[_0xb9da('0x16')]);router[_0xb9da('0x17')]('/:id',auth[_0xb9da('0xa')](),controller['destroy']);module[_0xb9da('0x18')]=router;
\ No newline at end of file
+var _0xca2b=['../../config/environment','./intServicenowConfiguration.controller','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0xcfce66,_0x415fd6){var _0x52468d=function(_0x5c4883){while(--_0x5c4883){_0xcfce66['push'](_0xcfce66['shift']());}};_0x52468d(++_0x415fd6);}(_0xca2b,0xd0));var _0xbca2=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xca2b[_0x4565bf];return _0x5610ba;};'use strict';var multer=require(_0xbca2('0x0'));var util=require(_0xbca2('0x1'));var path=require(_0xbca2('0x2'));var timeout=require('connect-timeout');var express=require(_0xbca2('0x3'));var router=express[_0xbca2('0x4')]();var fs_extra=require(_0xbca2('0x5'));var auth=require(_0xbca2('0x6'));var interaction=require(_0xbca2('0x7'));var config=require(_0xbca2('0x8'));var controller=require(_0xbca2('0x9'));router[_0xbca2('0xa')]('/',auth[_0xbca2('0xb')](),controller['index']);router['get'](_0xbca2('0xc'),auth[_0xbca2('0xb')](),controller[_0xbca2('0xd')]);router[_0xbca2('0xa')](_0xbca2('0xe'),auth['isAuthenticated'](),controller[_0xbca2('0xf')]);router[_0xbca2('0xa')](_0xbca2('0x10'),auth[_0xbca2('0xb')](),controller[_0xbca2('0x11')]);router[_0xbca2('0xa')](_0xbca2('0x12'),auth['isAuthenticated'](),controller[_0xbca2('0x13')]);router[_0xbca2('0x14')]('/',auth[_0xbca2('0xb')](),controller[_0xbca2('0x15')]);router[_0xbca2('0x16')]('/:id',auth[_0xbca2('0xb')](),controller[_0xbca2('0x17')]);router[_0xbca2('0x18')](_0xbca2('0xc'),auth[_0xbca2('0xb')](),controller[_0xbca2('0x19')]);module[_0xbca2('0x1a')]=router;
\ No newline at end of file
index 3fba97e..edd23e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4ae=['STRING','sequelize','exports'];(function(_0xd85cd8,_0x42b216){var _0x4a379a=function(_0x469912){while(--_0x469912){_0xd85cd8['push'](_0xd85cd8['shift']());}};_0x4a379a(++_0x42b216);}(_0xf4ae,0x8e));var _0xef4a=function(_0x56fbaa,_0x3bc5a6){_0x56fbaa=_0x56fbaa-0x0;var _0x49fbc1=_0xf4ae[_0x56fbaa];return _0x49fbc1;};'use strict';var Sequelize=require(_0xef4a('0x0'));module[_0xef4a('0x1')]={'name':{'type':Sequelize[_0xef4a('0x2')]},'description':{'type':Sequelize[_0xef4a('0x2')]}};
\ No newline at end of file
+var _0xe133=['STRING','sequelize','exports'];(function(_0x340369,_0x2f7cd9){var _0x366547=function(_0x32795d){while(--_0x32795d){_0x340369['push'](_0x340369['shift']());}};_0x366547(++_0x2f7cd9);}(_0xe133,0x1cf));var _0x3e13=function(_0x100204,_0x48ab43){_0x100204=_0x100204-0x0;var _0x294901=_0xe133[_0x100204];return _0x294901;};'use strict';var Sequelize=require(_0x3e13('0x0'));module[_0x3e13('0x1')]={'name':{'type':Sequelize[_0x3e13('0x2')]},'description':{'type':Sequelize[_0x3e13('0x2')]}};
\ No newline at end of file
index b3098f0..2193b81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4972=['params','findOne','ServicenowField','getFields','hasOwnProperty','nolimit','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','end','status','json','offset','undefined','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','ServicenowConfiguration','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','limit','order','sort','pick','filter','merge','where','VIRTUAL','options','include','rows','catch','keys','includeAll','find','create','body'];(function(_0x3faa2e,_0x553a82){var _0x2cbf65=function(_0x4cf17b){while(--_0x4cf17b){_0x3faa2e['push'](_0x3faa2e['shift']());}};_0x2cbf65(++_0x553a82);}(_0x4972,0x1a2));var _0x2497=function(_0x182782,_0x447b9d){_0x182782=_0x182782-0x0;var _0x572efb=_0x4972[_0x182782];return _0x572efb;};'use strict';var emlformat=require(_0x2497('0x0'));var rimraf=require(_0x2497('0x1'));var zipdir=require(_0x2497('0x2'));var jsonpatch=require(_0x2497('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x2497('0x4'));var Mustache=require(_0x2497('0x5'));var util=require(_0x2497('0x6'));var path=require(_0x2497('0x7'));var sox=require('sox');var csv=require(_0x2497('0x8'));var ejs=require(_0x2497('0x9'));var fs=require('fs');var fs_extra=require(_0x2497('0xa'));var _=require(_0x2497('0xb'));var squel=require('squel');var crypto=require(_0x2497('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x2497('0xd'));var toCsv=require('to-csv');var querystring=require(_0x2497('0xe'));var Papa=require(_0x2497('0xf'));var Redis=require(_0x2497('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x2497('0x11'));var as=require(_0x2497('0x12'));var hardwareService=require(_0x2497('0x13'));var logger=require(_0x2497('0x14'))(_0x2497('0x15'));var utils=require(_0x2497('0x16'));var config=require(_0x2497('0x17'));var licenseUtil=require(_0x2497('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x52222a,_0x517e23){_0x517e23=_0x517e23||0xcc;return function(_0x5d3c15){if(_0x5d3c15){return _0x52222a['sendStatus'](_0x517e23);}return _0x52222a['status'](_0x517e23)[_0x2497('0x19')]();};}function respondWithResult(_0x26dcba,_0x1ea4ef){_0x1ea4ef=_0x1ea4ef||0xc8;return function(_0x4a3294){if(_0x4a3294){return _0x26dcba[_0x2497('0x1a')](_0x1ea4ef)[_0x2497('0x1b')](_0x4a3294);}};}function respondWithFilteredResult(_0x63a060,_0x7fa8b4){return function(_0x42bb80){if(_0x42bb80){var _0x4d2c52=typeof _0x7fa8b4[_0x2497('0x1c')]===_0x2497('0x1d')&&typeof _0x7fa8b4['limit']==='undefined';var _0x231898=_0x42bb80[_0x2497('0x1e')];var _0x2745a0=_0x4d2c52?0x0:_0x7fa8b4[_0x2497('0x1c')];var _0x3059a2=_0x4d2c52?_0x42bb80['count']:_0x7fa8b4[_0x2497('0x1c')]+_0x7fa8b4['limit'];var _0x4cd06f;if(_0x3059a2>=_0x231898){_0x3059a2=_0x231898;_0x4cd06f=0xc8;}else{_0x4cd06f=0xce;}_0x63a060[_0x2497('0x1a')](_0x4cd06f);return _0x63a060['set'](_0x2497('0x1f'),_0x2745a0+'-'+_0x3059a2+'/'+_0x231898)[_0x2497('0x1b')](_0x42bb80);}return null;};}function patchUpdates(_0x2098f8){return function(_0x4d3ce1){try{jsonpatch[_0x2497('0x20')](_0x4d3ce1,_0x2098f8,!![]);}catch(_0xa7ae90){return BPromise[_0x2497('0x21')](_0xa7ae90);}return _0x4d3ce1[_0x2497('0x22')]();};}function saveUpdates(_0xd983a1,_0x4e9d6b){return function(_0x247942){if(_0x247942){return _0x247942[_0x2497('0x23')](_0xd983a1)[_0x2497('0x24')](function(_0x2fd7c4){return _0x2fd7c4;});}return null;};}function removeEntity(_0x5f0508,_0x51d58d){return function(_0x1bbfb8){if(_0x1bbfb8){return _0x1bbfb8[_0x2497('0x25')]()['then'](function(){_0x5f0508[_0x2497('0x1a')](0xcc)[_0x2497('0x19')]();});}};}function handleEntityNotFound(_0x7cc114,_0x4c4b91){return function(_0x5dcd23){if(!_0x5dcd23){_0x7cc114[_0x2497('0x26')](0x194);}return _0x5dcd23;};}function handleError(_0x4510b8,_0x35ded8){_0x35ded8=_0x35ded8||0x1f4;return function(_0x11ba09){logger[_0x2497('0x27')](_0x11ba09[_0x2497('0x28')]);if(_0x11ba09[_0x2497('0x29')]){delete _0x11ba09[_0x2497('0x29')];}_0x4510b8[_0x2497('0x1a')](_0x35ded8)[_0x2497('0x2a')](_0x11ba09);};}exports[_0x2497('0x2b')]=function(_0x5762aa,_0x29795f){var _0x1f6119={},_0x48852b={},_0x51f22b={'count':0x0,'rows':[]};var _0x5827af=_[_0x2497('0x2c')](db[_0x2497('0x2d')][_0x2497('0x2e')],function(_0x18ef9a){return{'name':_0x18ef9a[_0x2497('0x2f')],'type':_0x18ef9a[_0x2497('0x30')][_0x2497('0x31')]};});_0x48852b[_0x2497('0x32')]=_[_0x2497('0x2c')](_0x5827af,_0x2497('0x29'));_0x48852b[_0x2497('0x33')]=_['keys'](_0x5762aa[_0x2497('0x33')]);_0x48852b[_0x2497('0x34')]=_[_0x2497('0x35')](_0x48852b[_0x2497('0x32')],_0x48852b['query']);_0x1f6119[_0x2497('0x36')]=_[_0x2497('0x35')](_0x48852b[_0x2497('0x32')],qs['fields'](_0x5762aa['query'][_0x2497('0x37')]));_0x1f6119['attributes']=_0x1f6119[_0x2497('0x36')][_0x2497('0x38')]?_0x1f6119[_0x2497('0x36')]:_0x48852b[_0x2497('0x32')];if(!_0x5762aa[_0x2497('0x33')]['hasOwnProperty']('nolimit')){_0x1f6119[_0x2497('0x39')]=qs['limit'](_0x5762aa[_0x2497('0x33')][_0x2497('0x39')]);_0x1f6119[_0x2497('0x1c')]=qs['offset'](_0x5762aa[_0x2497('0x33')][_0x2497('0x1c')]);}_0x1f6119[_0x2497('0x3a')]=qs[_0x2497('0x3b')](_0x5762aa[_0x2497('0x33')]['sort']);_0x1f6119['where']=qs[_0x2497('0x34')](_[_0x2497('0x3c')](_0x5762aa[_0x2497('0x33')],_0x48852b[_0x2497('0x34')]),_0x5827af);if(_0x5762aa[_0x2497('0x33')][_0x2497('0x3d')]){_0x1f6119['where']=_[_0x2497('0x3e')](_0x1f6119[_0x2497('0x3f')],{'$or':_[_0x2497('0x2c')](_0x5827af,function(_0x3f2ddf){if(_0x3f2ddf['type']!==_0x2497('0x40')){var _0x2b8ef1={};_0x2b8ef1[_0x3f2ddf[_0x2497('0x29')]]={'$like':'%'+_0x5762aa[_0x2497('0x33')][_0x2497('0x3d')]+'%'};return _0x2b8ef1;}})});}_0x1f6119=_[_0x2497('0x3e')]({},_0x1f6119,_0x5762aa[_0x2497('0x41')]);var _0x3d934b={'where':_0x1f6119[_0x2497('0x3f')]};return db[_0x2497('0x2d')][_0x2497('0x1e')](_0x3d934b)[_0x2497('0x24')](function(_0x4259a8){_0x51f22b[_0x2497('0x1e')]=_0x4259a8;if(_0x5762aa[_0x2497('0x33')]['includeAll']){_0x1f6119[_0x2497('0x42')]=[{'all':!![]}];}return db[_0x2497('0x2d')]['findAll'](_0x1f6119);})[_0x2497('0x24')](function(_0x1be943){_0x51f22b[_0x2497('0x43')]=_0x1be943;return _0x51f22b;})[_0x2497('0x24')](respondWithFilteredResult(_0x29795f,_0x1f6119))[_0x2497('0x44')](handleError(_0x29795f,null));};exports['show']=function(_0x509ee4,_0x110627){var _0x3f1a7a={'raw':![],'where':{'id':_0x509ee4['params']['id']}},_0x2cbfed={};_0x2cbfed[_0x2497('0x32')]=_['keys'](db[_0x2497('0x2d')]['rawAttributes']);_0x2cbfed[_0x2497('0x33')]=_[_0x2497('0x45')](_0x509ee4[_0x2497('0x33')]);_0x2cbfed['filters']=_[_0x2497('0x35')](_0x2cbfed[_0x2497('0x32')],_0x2cbfed[_0x2497('0x33')]);_0x3f1a7a[_0x2497('0x36')]=_[_0x2497('0x35')](_0x2cbfed['model'],qs[_0x2497('0x37')](_0x509ee4['query'][_0x2497('0x37')]));_0x3f1a7a['attributes']=_0x3f1a7a[_0x2497('0x36')]['length']?_0x3f1a7a[_0x2497('0x36')]:_0x2cbfed[_0x2497('0x32')];if(_0x509ee4[_0x2497('0x33')][_0x2497('0x46')]){_0x3f1a7a['include']=[{'all':!![]}];}_0x3f1a7a=_[_0x2497('0x3e')]({},_0x3f1a7a,_0x509ee4[_0x2497('0x41')]);return db['ServicenowConfiguration'][_0x2497('0x47')](_0x3f1a7a)[_0x2497('0x24')](handleEntityNotFound(_0x110627,null))[_0x2497('0x24')](respondWithResult(_0x110627,null))[_0x2497('0x44')](handleError(_0x110627,null));};exports[_0x2497('0x48')]=function(_0x3b4a62,_0x3f2d9e){return db[_0x2497('0x2d')][_0x2497('0x48')](_0x3b4a62['body'],{})[_0x2497('0x24')](respondWithResult(_0x3f2d9e,0xc9))[_0x2497('0x44')](handleError(_0x3f2d9e,null));};exports[_0x2497('0x23')]=function(_0x2cbc31,_0x5eb840){if(_0x2cbc31[_0x2497('0x49')]['id']){delete _0x2cbc31[_0x2497('0x49')]['id'];}return db[_0x2497('0x2d')][_0x2497('0x47')]({'where':{'id':_0x2cbc31[_0x2497('0x4a')]['id']}})[_0x2497('0x24')](handleEntityNotFound(_0x5eb840,null))[_0x2497('0x24')](saveUpdates(_0x2cbc31['body'],null))['then'](respondWithResult(_0x5eb840,null))[_0x2497('0x44')](handleError(_0x5eb840,null));};exports[_0x2497('0x25')]=function(_0xd1d19e,_0x494ec2){return db[_0x2497('0x2d')][_0x2497('0x47')]({'where':{'id':_0xd1d19e['params']['id']}})[_0x2497('0x24')](handleEntityNotFound(_0x494ec2,null))['then'](removeEntity(_0x494ec2,null))[_0x2497('0x44')](handleError(_0x494ec2,null));};exports['getFields']=function(_0x35144b,_0xacfbfe,_0x438183){var _0x115581={};var _0x13fd79={};var _0x58c235;var _0x54cb81;return db[_0x2497('0x2d')][_0x2497('0x4b')]({'where':{'id':_0x35144b[_0x2497('0x4a')]['id']}})['then'](handleEntityNotFound(_0xacfbfe,null))[_0x2497('0x24')](function(_0x7829ac){if(_0x7829ac){_0x58c235=_0x7829ac;_0x13fd79[_0x2497('0x32')]=_[_0x2497('0x45')](db[_0x2497('0x4c')][_0x2497('0x2e')]);_0x13fd79['query']=_[_0x2497('0x45')](_0x35144b[_0x2497('0x33')]);_0x13fd79[_0x2497('0x34')]=_['intersection'](_0x13fd79['model'],_0x13fd79[_0x2497('0x33')]);_0x115581[_0x2497('0x36')]=_[_0x2497('0x35')](_0x13fd79[_0x2497('0x32')],qs[_0x2497('0x37')](_0x35144b[_0x2497('0x33')]['fields']));_0x115581[_0x2497('0x36')]=_0x115581[_0x2497('0x36')]['length']?_0x115581['attributes']:_0x13fd79['model'];_0x115581[_0x2497('0x3a')]=qs[_0x2497('0x3b')](_0x35144b[_0x2497('0x33')][_0x2497('0x3b')]);_0x115581[_0x2497('0x3f')]=qs[_0x2497('0x34')](_[_0x2497('0x3c')](_0x35144b['query'],_0x13fd79['filters']));if(_0x35144b[_0x2497('0x33')]['filter']){_0x115581[_0x2497('0x3f')]=_[_0x2497('0x3e')](_0x115581[_0x2497('0x3f')],{'$or':_['map'](_0x115581['attributes'],function(_0xeb80f4){var _0x3d12e6={};_0x3d12e6[_0xeb80f4]={'$like':'%'+_0x35144b[_0x2497('0x33')][_0x2497('0x3d')]+'%'};return _0x3d12e6;})});}_0x115581=_['merge']({},_0x115581,_0x35144b[_0x2497('0x41')]);return _0x58c235[_0x2497('0x4d')](_0x115581);}})[_0x2497('0x24')](function(_0x180d06){if(_0x180d06){_0x54cb81=_0x180d06[_0x2497('0x38')];if(!_0x35144b[_0x2497('0x33')][_0x2497('0x4e')](_0x2497('0x4f'))){_0x115581[_0x2497('0x39')]=qs['limit'](_0x35144b[_0x2497('0x33')][_0x2497('0x39')]);_0x115581[_0x2497('0x1c')]=qs[_0x2497('0x1c')](_0x35144b[_0x2497('0x33')][_0x2497('0x1c')]);}return _0x58c235[_0x2497('0x4d')](_0x115581);}})[_0x2497('0x24')](function(_0x5040ca){if(_0x5040ca){return _0x5040ca?{'count':_0x54cb81,'rows':_0x5040ca}:null;}})[_0x2497('0x24')](respondWithResult(_0xacfbfe,null))[_0x2497('0x44')](handleError(_0xacfbfe,null));};exports[_0x2497('0x50')]=function(_0x21c6e2,_0x5a7df1,_0xc250a7){var _0x5b995c={};var _0x44eabb={};var _0x432fb5;var _0x406c60;return db['ServicenowConfiguration'][_0x2497('0x4b')]({'where':{'id':_0x21c6e2[_0x2497('0x4a')]['id']}})[_0x2497('0x24')](handleEntityNotFound(_0x5a7df1,null))[_0x2497('0x24')](function(_0x33fc61){if(_0x33fc61){_0x432fb5=_0x33fc61;_0x44eabb[_0x2497('0x32')]=_[_0x2497('0x45')](db['ServicenowField']['rawAttributes']);_0x44eabb[_0x2497('0x33')]=_['keys'](_0x21c6e2[_0x2497('0x33')]);_0x44eabb['filters']=_[_0x2497('0x35')](_0x44eabb['model'],_0x44eabb[_0x2497('0x33')]);_0x5b995c[_0x2497('0x36')]=_[_0x2497('0x35')](_0x44eabb[_0x2497('0x32')],qs[_0x2497('0x37')](_0x21c6e2['query'][_0x2497('0x37')]));_0x5b995c[_0x2497('0x36')]=_0x5b995c[_0x2497('0x36')]['length']?_0x5b995c[_0x2497('0x36')]:_0x44eabb[_0x2497('0x32')];_0x5b995c[_0x2497('0x3a')]=qs['sort'](_0x21c6e2[_0x2497('0x33')][_0x2497('0x3b')]);_0x5b995c[_0x2497('0x3f')]=qs[_0x2497('0x34')](_[_0x2497('0x3c')](_0x21c6e2[_0x2497('0x33')],_0x44eabb[_0x2497('0x34')]));if(_0x21c6e2['query']['filter']){_0x5b995c[_0x2497('0x3f')]=_['merge'](_0x5b995c[_0x2497('0x3f')],{'$or':_[_0x2497('0x2c')](_0x5b995c[_0x2497('0x36')],function(_0x32e70d){var _0x986aff={};_0x986aff[_0x32e70d]={'$like':'%'+_0x21c6e2[_0x2497('0x33')][_0x2497('0x3d')]+'%'};return _0x986aff;})});}_0x5b995c=_[_0x2497('0x3e')]({},_0x5b995c,_0x21c6e2[_0x2497('0x41')]);return _0x432fb5[_0x2497('0x50')](_0x5b995c);}})[_0x2497('0x24')](function(_0x490107){if(_0x490107){_0x406c60=_0x490107[_0x2497('0x38')];if(!_0x21c6e2['query'][_0x2497('0x4e')]('nolimit')){_0x5b995c[_0x2497('0x39')]=qs[_0x2497('0x39')](_0x21c6e2['query']['limit']);_0x5b995c['offset']=qs[_0x2497('0x1c')](_0x21c6e2[_0x2497('0x33')]['offset']);}return _0x432fb5[_0x2497('0x50')](_0x5b995c);}})['then'](function(_0x2071ba){if(_0x2071ba){return _0x2071ba?{'count':_0x406c60,'rows':_0x2071ba}:null;}})['then'](respondWithResult(_0x5a7df1,null))[_0x2497('0x44')](handleError(_0x5a7df1,null));};exports[_0x2497('0x51')]=function(_0x2b8a40,_0x1ec124,_0x2d5778){var _0x116b9f={};var _0xb30a5a={};var _0x3c6cab;var _0x3cbf7f;return db['ServicenowConfiguration'][_0x2497('0x4b')]({'where':{'id':_0x2b8a40[_0x2497('0x4a')]['id']}})[_0x2497('0x24')](handleEntityNotFound(_0x1ec124,null))[_0x2497('0x24')](function(_0x2775d4){if(_0x2775d4){_0x3c6cab=_0x2775d4;_0xb30a5a[_0x2497('0x32')]=_[_0x2497('0x45')](db[_0x2497('0x4c')][_0x2497('0x2e')]);_0xb30a5a[_0x2497('0x33')]=_[_0x2497('0x45')](_0x2b8a40[_0x2497('0x33')]);_0xb30a5a[_0x2497('0x34')]=_[_0x2497('0x35')](_0xb30a5a[_0x2497('0x32')],_0xb30a5a[_0x2497('0x33')]);_0x116b9f[_0x2497('0x36')]=_[_0x2497('0x35')](_0xb30a5a['model'],qs[_0x2497('0x37')](_0x2b8a40[_0x2497('0x33')][_0x2497('0x37')]));_0x116b9f['attributes']=_0x116b9f['attributes'][_0x2497('0x38')]?_0x116b9f['attributes']:_0xb30a5a[_0x2497('0x32')];_0x116b9f[_0x2497('0x3a')]=qs[_0x2497('0x3b')](_0x2b8a40[_0x2497('0x33')][_0x2497('0x3b')]);_0x116b9f[_0x2497('0x3f')]=qs['filters'](_[_0x2497('0x3c')](_0x2b8a40[_0x2497('0x33')],_0xb30a5a[_0x2497('0x34')]));if(_0x2b8a40['query'][_0x2497('0x3d')]){_0x116b9f[_0x2497('0x3f')]=_[_0x2497('0x3e')](_0x116b9f[_0x2497('0x3f')],{'$or':_[_0x2497('0x2c')](_0x116b9f[_0x2497('0x36')],function(_0x15212c){var _0xe0e996={};_0xe0e996[_0x15212c]={'$like':'%'+_0x2b8a40[_0x2497('0x33')][_0x2497('0x3d')]+'%'};return _0xe0e996;})});}_0x116b9f=_[_0x2497('0x3e')]({},_0x116b9f,_0x2b8a40[_0x2497('0x41')]);return _0x3c6cab[_0x2497('0x51')](_0x116b9f);}})[_0x2497('0x24')](function(_0x7eb534){if(_0x7eb534){_0x3cbf7f=_0x7eb534[_0x2497('0x38')];if(!_0x2b8a40[_0x2497('0x33')][_0x2497('0x4e')](_0x2497('0x4f'))){_0x116b9f[_0x2497('0x39')]=qs[_0x2497('0x39')](_0x2b8a40['query']['limit']);_0x116b9f[_0x2497('0x1c')]=qs[_0x2497('0x1c')](_0x2b8a40[_0x2497('0x33')][_0x2497('0x1c')]);}return _0x3c6cab['getDescriptions'](_0x116b9f);}})['then'](function(_0x88c67b){if(_0x88c67b){return _0x88c67b?{'count':_0x3cbf7f,'rows':_0x88c67b}:null;}})[_0x2497('0x24')](respondWithResult(_0x1ec124,null))[_0x2497('0x44')](handleError(_0x1ec124,null));};
\ No newline at end of file
+var _0x25d7=['save','then','error','stack','name','index','ServicenowConfiguration','rawAttributes','fieldName','key','model','map','query','keys','attributes','intersection','fields','hasOwnProperty','nolimit','where','filters','pick','merge','filter','includeAll','rows','catch','show','params','length','include','options','create','body','find','destroy','order','sort','getFields','getSubjects','findOne','ServicenowField','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject'];(function(_0x1b3001,_0x20af60){var _0x33a1ab=function(_0x3a9dc2){while(--_0x3a9dc2){_0x1b3001['push'](_0x1b3001['shift']());}};_0x33a1ab(++_0x20af60);}(_0x25d7,0x15b));var _0x725d=function(_0x2d8434,_0x43d781){_0x2d8434=_0x2d8434-0x0;var _0x26b9e4=_0x25d7[_0x2d8434];return _0x26b9e4;};'use strict';var emlformat=require(_0x725d('0x0'));var rimraf=require(_0x725d('0x1'));var zipdir=require(_0x725d('0x2'));var jsonpatch=require(_0x725d('0x3'));var rp=require(_0x725d('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x725d('0x5'));var util=require('util');var path=require(_0x725d('0x6'));var sox=require(_0x725d('0x7'));var csv=require('to-csv');var ejs=require(_0x725d('0x8'));var fs=require('fs');var fs_extra=require(_0x725d('0x9'));var _=require(_0x725d('0xa'));var squel=require(_0x725d('0xb'));var crypto=require(_0x725d('0xc'));var jsforce=require(_0x725d('0xd'));var deskjs=require(_0x725d('0xe'));var toCsv=require('to-csv');var querystring=require(_0x725d('0xf'));var Papa=require(_0x725d('0x10'));var Redis=require(_0x725d('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x725d('0x12'));var logger=require(_0x725d('0x13'))('api');var utils=require(_0x725d('0x14'));var config=require(_0x725d('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x725d('0x16'))['db'];function respondWithStatusCode(_0x3c8240,_0x119c5d){_0x119c5d=_0x119c5d||0xcc;return function(_0x498ae5){if(_0x498ae5){return _0x3c8240['sendStatus'](_0x119c5d);}return _0x3c8240[_0x725d('0x17')](_0x119c5d)['end']();};}function respondWithResult(_0xb5770f,_0x3ec2d8){_0x3ec2d8=_0x3ec2d8||0xc8;return function(_0x1e247f){if(_0x1e247f){return _0xb5770f[_0x725d('0x17')](_0x3ec2d8)[_0x725d('0x18')](_0x1e247f);}};}function respondWithFilteredResult(_0x577932,_0x2c7f30){return function(_0x59bc71){if(_0x59bc71){var _0x3cf5af=typeof _0x2c7f30[_0x725d('0x19')]===_0x725d('0x1a')&&typeof _0x2c7f30[_0x725d('0x1b')]===_0x725d('0x1a');var _0x4d239b=_0x59bc71['count'];var _0x56fbd4=_0x3cf5af?0x0:_0x2c7f30[_0x725d('0x19')];var _0xa3c924=_0x3cf5af?_0x59bc71[_0x725d('0x1c')]:_0x2c7f30['offset']+_0x2c7f30[_0x725d('0x1b')];var _0xd4c83f;if(_0xa3c924>=_0x4d239b){_0xa3c924=_0x4d239b;_0xd4c83f=0xc8;}else{_0xd4c83f=0xce;}_0x577932[_0x725d('0x17')](_0xd4c83f);return _0x577932[_0x725d('0x1d')](_0x725d('0x1e'),_0x56fbd4+'-'+_0xa3c924+'/'+_0x4d239b)[_0x725d('0x18')](_0x59bc71);}return null;};}function patchUpdates(_0x1638b7){return function(_0x2f0d78){try{jsonpatch[_0x725d('0x1f')](_0x2f0d78,_0x1638b7,!![]);}catch(_0x11cf5f){return BPromise[_0x725d('0x20')](_0x11cf5f);}return _0x2f0d78[_0x725d('0x21')]();};}function saveUpdates(_0x2b7728,_0x58f6eb){return function(_0x1ed155){if(_0x1ed155){return _0x1ed155['update'](_0x2b7728)[_0x725d('0x22')](function(_0x5a6f05){return _0x5a6f05;});}return null;};}function removeEntity(_0x362e8c,_0x461d13){return function(_0x4e5710){if(_0x4e5710){return _0x4e5710['destroy']()[_0x725d('0x22')](function(){_0x362e8c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1c6ce7,_0x10b788){return function(_0x40a0c0){if(!_0x40a0c0){_0x1c6ce7['sendStatus'](0x194);}return _0x40a0c0;};}function handleError(_0xab5164,_0xefd972){_0xefd972=_0xefd972||0x1f4;return function(_0x100ed9){logger[_0x725d('0x23')](_0x100ed9[_0x725d('0x24')]);if(_0x100ed9[_0x725d('0x25')]){delete _0x100ed9[_0x725d('0x25')];}_0xab5164[_0x725d('0x17')](_0xefd972)['send'](_0x100ed9);};}exports[_0x725d('0x26')]=function(_0x49ae42,_0x15cbd0){var _0x19f0e5={},_0x29ff53={},_0x583e73={'count':0x0,'rows':[]};var _0x1003d4=_['map'](db[_0x725d('0x27')][_0x725d('0x28')],function(_0x5558e3){return{'name':_0x5558e3[_0x725d('0x29')],'type':_0x5558e3['type'][_0x725d('0x2a')]};});_0x29ff53[_0x725d('0x2b')]=_[_0x725d('0x2c')](_0x1003d4,'name');_0x29ff53[_0x725d('0x2d')]=_[_0x725d('0x2e')](_0x49ae42[_0x725d('0x2d')]);_0x29ff53['filters']=_['intersection'](_0x29ff53['model'],_0x29ff53[_0x725d('0x2d')]);_0x19f0e5[_0x725d('0x2f')]=_[_0x725d('0x30')](_0x29ff53[_0x725d('0x2b')],qs[_0x725d('0x31')](_0x49ae42[_0x725d('0x2d')][_0x725d('0x31')]));_0x19f0e5[_0x725d('0x2f')]=_0x19f0e5[_0x725d('0x2f')]['length']?_0x19f0e5[_0x725d('0x2f')]:_0x29ff53[_0x725d('0x2b')];if(!_0x49ae42[_0x725d('0x2d')][_0x725d('0x32')](_0x725d('0x33'))){_0x19f0e5[_0x725d('0x1b')]=qs['limit'](_0x49ae42['query']['limit']);_0x19f0e5['offset']=qs[_0x725d('0x19')](_0x49ae42[_0x725d('0x2d')]['offset']);}_0x19f0e5['order']=qs['sort'](_0x49ae42[_0x725d('0x2d')]['sort']);_0x19f0e5[_0x725d('0x34')]=qs[_0x725d('0x35')](_[_0x725d('0x36')](_0x49ae42[_0x725d('0x2d')],_0x29ff53[_0x725d('0x35')]),_0x1003d4);if(_0x49ae42[_0x725d('0x2d')]['filter']){_0x19f0e5[_0x725d('0x34')]=_[_0x725d('0x37')](_0x19f0e5[_0x725d('0x34')],{'$or':_[_0x725d('0x2c')](_0x1003d4,function(_0x4d086a){if(_0x4d086a['type']!=='VIRTUAL'){var _0x50e483={};_0x50e483[_0x4d086a[_0x725d('0x25')]]={'$like':'%'+_0x49ae42[_0x725d('0x2d')][_0x725d('0x38')]+'%'};return _0x50e483;}})});}_0x19f0e5=_[_0x725d('0x37')]({},_0x19f0e5,_0x49ae42['options']);var _0x18bfa7={'where':_0x19f0e5[_0x725d('0x34')]};return db['ServicenowConfiguration'][_0x725d('0x1c')](_0x18bfa7)[_0x725d('0x22')](function(_0x4ca76d){_0x583e73[_0x725d('0x1c')]=_0x4ca76d;if(_0x49ae42['query'][_0x725d('0x39')]){_0x19f0e5['include']=[{'all':!![]}];}return db[_0x725d('0x27')]['findAll'](_0x19f0e5);})['then'](function(_0x483a1e){_0x583e73[_0x725d('0x3a')]=_0x483a1e;return _0x583e73;})[_0x725d('0x22')](respondWithFilteredResult(_0x15cbd0,_0x19f0e5))[_0x725d('0x3b')](handleError(_0x15cbd0,null));};exports[_0x725d('0x3c')]=function(_0x3d5008,_0x598421){var _0x2ea349={'raw':![],'where':{'id':_0x3d5008[_0x725d('0x3d')]['id']}},_0x522244={};_0x522244[_0x725d('0x2b')]=_[_0x725d('0x2e')](db[_0x725d('0x27')][_0x725d('0x28')]);_0x522244[_0x725d('0x2d')]=_[_0x725d('0x2e')](_0x3d5008[_0x725d('0x2d')]);_0x522244[_0x725d('0x35')]=_[_0x725d('0x30')](_0x522244[_0x725d('0x2b')],_0x522244[_0x725d('0x2d')]);_0x2ea349['attributes']=_[_0x725d('0x30')](_0x522244[_0x725d('0x2b')],qs[_0x725d('0x31')](_0x3d5008[_0x725d('0x2d')]['fields']));_0x2ea349[_0x725d('0x2f')]=_0x2ea349[_0x725d('0x2f')][_0x725d('0x3e')]?_0x2ea349[_0x725d('0x2f')]:_0x522244['model'];if(_0x3d5008['query']['includeAll']){_0x2ea349[_0x725d('0x3f')]=[{'all':!![]}];}_0x2ea349=_[_0x725d('0x37')]({},_0x2ea349,_0x3d5008[_0x725d('0x40')]);return db[_0x725d('0x27')]['find'](_0x2ea349)[_0x725d('0x22')](handleEntityNotFound(_0x598421,null))[_0x725d('0x22')](respondWithResult(_0x598421,null))[_0x725d('0x3b')](handleError(_0x598421,null));};exports[_0x725d('0x41')]=function(_0x390f2e,_0x5e9414){return db['ServicenowConfiguration']['create'](_0x390f2e[_0x725d('0x42')],{})[_0x725d('0x22')](respondWithResult(_0x5e9414,0xc9))['catch'](handleError(_0x5e9414,null));};exports['update']=function(_0x320b01,_0x9d6e30){if(_0x320b01[_0x725d('0x42')]['id']){delete _0x320b01[_0x725d('0x42')]['id'];}return db[_0x725d('0x27')][_0x725d('0x43')]({'where':{'id':_0x320b01[_0x725d('0x3d')]['id']}})[_0x725d('0x22')](handleEntityNotFound(_0x9d6e30,null))[_0x725d('0x22')](saveUpdates(_0x320b01[_0x725d('0x42')],null))[_0x725d('0x22')](respondWithResult(_0x9d6e30,null))['catch'](handleError(_0x9d6e30,null));};exports[_0x725d('0x44')]=function(_0x1548fd,_0xe9a54){return db[_0x725d('0x27')]['find']({'where':{'id':_0x1548fd[_0x725d('0x3d')]['id']}})[_0x725d('0x22')](handleEntityNotFound(_0xe9a54,null))[_0x725d('0x22')](removeEntity(_0xe9a54,null))[_0x725d('0x3b')](handleError(_0xe9a54,null));};exports['getFields']=function(_0x191fcf,_0x26c2b6,_0x14d5cf){var _0x72588={};var _0xe30ef7={};var _0x370bba;var _0x1080a5;return db[_0x725d('0x27')]['findOne']({'where':{'id':_0x191fcf[_0x725d('0x3d')]['id']}})[_0x725d('0x22')](handleEntityNotFound(_0x26c2b6,null))[_0x725d('0x22')](function(_0x559103){if(_0x559103){_0x370bba=_0x559103;_0xe30ef7[_0x725d('0x2b')]=_[_0x725d('0x2e')](db['ServicenowField'][_0x725d('0x28')]);_0xe30ef7[_0x725d('0x2d')]=_['keys'](_0x191fcf[_0x725d('0x2d')]);_0xe30ef7[_0x725d('0x35')]=_[_0x725d('0x30')](_0xe30ef7['model'],_0xe30ef7[_0x725d('0x2d')]);_0x72588[_0x725d('0x2f')]=_[_0x725d('0x30')](_0xe30ef7[_0x725d('0x2b')],qs[_0x725d('0x31')](_0x191fcf[_0x725d('0x2d')][_0x725d('0x31')]));_0x72588[_0x725d('0x2f')]=_0x72588[_0x725d('0x2f')][_0x725d('0x3e')]?_0x72588[_0x725d('0x2f')]:_0xe30ef7[_0x725d('0x2b')];_0x72588[_0x725d('0x45')]=qs[_0x725d('0x46')](_0x191fcf['query'][_0x725d('0x46')]);_0x72588['where']=qs[_0x725d('0x35')](_[_0x725d('0x36')](_0x191fcf['query'],_0xe30ef7[_0x725d('0x35')]));if(_0x191fcf[_0x725d('0x2d')][_0x725d('0x38')]){_0x72588[_0x725d('0x34')]=_[_0x725d('0x37')](_0x72588[_0x725d('0x34')],{'$or':_[_0x725d('0x2c')](_0x72588[_0x725d('0x2f')],function(_0x597905){var _0x673ba8={};_0x673ba8[_0x597905]={'$like':'%'+_0x191fcf[_0x725d('0x2d')][_0x725d('0x38')]+'%'};return _0x673ba8;})});}_0x72588=_[_0x725d('0x37')]({},_0x72588,_0x191fcf['options']);return _0x370bba['getFields'](_0x72588);}})[_0x725d('0x22')](function(_0x533c76){if(_0x533c76){_0x1080a5=_0x533c76['length'];if(!_0x191fcf['query'][_0x725d('0x32')]('nolimit')){_0x72588[_0x725d('0x1b')]=qs[_0x725d('0x1b')](_0x191fcf['query'][_0x725d('0x1b')]);_0x72588[_0x725d('0x19')]=qs[_0x725d('0x19')](_0x191fcf[_0x725d('0x2d')][_0x725d('0x19')]);}return _0x370bba[_0x725d('0x47')](_0x72588);}})[_0x725d('0x22')](function(_0x431d6b){if(_0x431d6b){return _0x431d6b?{'count':_0x1080a5,'rows':_0x431d6b}:null;}})[_0x725d('0x22')](respondWithResult(_0x26c2b6,null))[_0x725d('0x3b')](handleError(_0x26c2b6,null));};exports[_0x725d('0x48')]=function(_0x571ddf,_0x23a201,_0x4c4f44){var _0x180ea5={};var _0x201ee0={};var _0x16b332;var _0x341ca4;return db[_0x725d('0x27')][_0x725d('0x49')]({'where':{'id':_0x571ddf[_0x725d('0x3d')]['id']}})['then'](handleEntityNotFound(_0x23a201,null))[_0x725d('0x22')](function(_0x5189c2){if(_0x5189c2){_0x16b332=_0x5189c2;_0x201ee0[_0x725d('0x2b')]=_[_0x725d('0x2e')](db[_0x725d('0x4a')][_0x725d('0x28')]);_0x201ee0['query']=_['keys'](_0x571ddf['query']);_0x201ee0['filters']=_[_0x725d('0x30')](_0x201ee0[_0x725d('0x2b')],_0x201ee0[_0x725d('0x2d')]);_0x180ea5[_0x725d('0x2f')]=_[_0x725d('0x30')](_0x201ee0['model'],qs[_0x725d('0x31')](_0x571ddf[_0x725d('0x2d')][_0x725d('0x31')]));_0x180ea5[_0x725d('0x2f')]=_0x180ea5[_0x725d('0x2f')][_0x725d('0x3e')]?_0x180ea5[_0x725d('0x2f')]:_0x201ee0[_0x725d('0x2b')];_0x180ea5[_0x725d('0x45')]=qs['sort'](_0x571ddf[_0x725d('0x2d')][_0x725d('0x46')]);_0x180ea5[_0x725d('0x34')]=qs[_0x725d('0x35')](_[_0x725d('0x36')](_0x571ddf['query'],_0x201ee0[_0x725d('0x35')]));if(_0x571ddf[_0x725d('0x2d')]['filter']){_0x180ea5[_0x725d('0x34')]=_[_0x725d('0x37')](_0x180ea5[_0x725d('0x34')],{'$or':_[_0x725d('0x2c')](_0x180ea5[_0x725d('0x2f')],function(_0x321963){var _0x451eeb={};_0x451eeb[_0x321963]={'$like':'%'+_0x571ddf[_0x725d('0x2d')][_0x725d('0x38')]+'%'};return _0x451eeb;})});}_0x180ea5=_['merge']({},_0x180ea5,_0x571ddf[_0x725d('0x40')]);return _0x16b332[_0x725d('0x48')](_0x180ea5);}})[_0x725d('0x22')](function(_0x3d9713){if(_0x3d9713){_0x341ca4=_0x3d9713[_0x725d('0x3e')];if(!_0x571ddf['query'][_0x725d('0x32')]('nolimit')){_0x180ea5[_0x725d('0x1b')]=qs['limit'](_0x571ddf[_0x725d('0x2d')][_0x725d('0x1b')]);_0x180ea5[_0x725d('0x19')]=qs[_0x725d('0x19')](_0x571ddf[_0x725d('0x2d')]['offset']);}return _0x16b332[_0x725d('0x48')](_0x180ea5);}})[_0x725d('0x22')](function(_0x5e9a84){if(_0x5e9a84){return _0x5e9a84?{'count':_0x341ca4,'rows':_0x5e9a84}:null;}})[_0x725d('0x22')](respondWithResult(_0x23a201,null))[_0x725d('0x3b')](handleError(_0x23a201,null));};exports[_0x725d('0x4b')]=function(_0x5475c2,_0x65ffde,_0x4527e2){var _0x3bf993={};var _0x1b1a60={};var _0x4970a6;var _0x251ce5;return db[_0x725d('0x27')][_0x725d('0x49')]({'where':{'id':_0x5475c2[_0x725d('0x3d')]['id']}})[_0x725d('0x22')](handleEntityNotFound(_0x65ffde,null))[_0x725d('0x22')](function(_0x4400d1){if(_0x4400d1){_0x4970a6=_0x4400d1;_0x1b1a60[_0x725d('0x2b')]=_[_0x725d('0x2e')](db[_0x725d('0x4a')][_0x725d('0x28')]);_0x1b1a60[_0x725d('0x2d')]=_[_0x725d('0x2e')](_0x5475c2[_0x725d('0x2d')]);_0x1b1a60[_0x725d('0x35')]=_['intersection'](_0x1b1a60[_0x725d('0x2b')],_0x1b1a60[_0x725d('0x2d')]);_0x3bf993['attributes']=_[_0x725d('0x30')](_0x1b1a60[_0x725d('0x2b')],qs[_0x725d('0x31')](_0x5475c2[_0x725d('0x2d')][_0x725d('0x31')]));_0x3bf993[_0x725d('0x2f')]=_0x3bf993[_0x725d('0x2f')][_0x725d('0x3e')]?_0x3bf993[_0x725d('0x2f')]:_0x1b1a60[_0x725d('0x2b')];_0x3bf993['order']=qs['sort'](_0x5475c2['query'][_0x725d('0x46')]);_0x3bf993['where']=qs['filters'](_[_0x725d('0x36')](_0x5475c2[_0x725d('0x2d')],_0x1b1a60[_0x725d('0x35')]));if(_0x5475c2['query']['filter']){_0x3bf993['where']=_[_0x725d('0x37')](_0x3bf993[_0x725d('0x34')],{'$or':_[_0x725d('0x2c')](_0x3bf993[_0x725d('0x2f')],function(_0x4df04f){var _0x3f36d5={};_0x3f36d5[_0x4df04f]={'$like':'%'+_0x5475c2[_0x725d('0x2d')][_0x725d('0x38')]+'%'};return _0x3f36d5;})});}_0x3bf993=_[_0x725d('0x37')]({},_0x3bf993,_0x5475c2[_0x725d('0x40')]);return _0x4970a6[_0x725d('0x4b')](_0x3bf993);}})[_0x725d('0x22')](function(_0x57a17c){if(_0x57a17c){_0x251ce5=_0x57a17c[_0x725d('0x3e')];if(!_0x5475c2['query']['hasOwnProperty'](_0x725d('0x33'))){_0x3bf993[_0x725d('0x1b')]=qs['limit'](_0x5475c2[_0x725d('0x2d')][_0x725d('0x1b')]);_0x3bf993[_0x725d('0x19')]=qs[_0x725d('0x19')](_0x5475c2['query']['offset']);}return _0x4970a6[_0x725d('0x4b')](_0x3bf993);}})['then'](function(_0x5e4bbf){if(_0x5e4bbf){return _0x5e4bbf?{'count':_0x251ce5,'rows':_0x5e4bbf}:null;}})[_0x725d('0x22')](respondWithResult(_0x65ffde,null))['catch'](handleError(_0x65ffde,null));};
\ No newline at end of file
index 8fe36c1..0fb0d01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75e3=['request-promise','./intServicenowConfiguration.attributes','ServicenowConfiguration','int_servicenow_configurations','util','../../config/logger','moment','bluebird'];(function(_0x2558d9,_0x3fc9ba){var _0xc5271b=function(_0x3a095d){while(--_0x3a095d){_0x2558d9['push'](_0x2558d9['shift']());}};_0xc5271b(++_0x3fc9ba);}(_0x75e3,0x104));var _0x375e=function(_0x418b76,_0x2f38c9){_0x418b76=_0x418b76-0x0;var _0xc65645=_0x75e3[_0x418b76];return _0xc65645;};'use strict';var _=require('lodash');var util=require(_0x375e('0x0'));var logger=require(_0x375e('0x1'))('api');var moment=require(_0x375e('0x2'));var BPromise=require(_0x375e('0x3'));var rp=require(_0x375e('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x375e('0x5'));module['exports']=function(_0x17e32c,_0x52f876){return _0x17e32c['define'](_0x375e('0x6'),attributes,{'tableName':_0x375e('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x96f9=['moment','bluebird','request-promise','path','rimraf','./intServicenowConfiguration.attributes','exports','define','ServicenowConfiguration','lodash','util','../../config/logger','api'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x96f9,0x64));var _0x996f=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x96f9[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require(_0x996f('0x0'));var util=require(_0x996f('0x1'));var logger=require(_0x996f('0x2'))(_0x996f('0x3'));var moment=require(_0x996f('0x4'));var BPromise=require(_0x996f('0x5'));var rp=require(_0x996f('0x6'));var fs=require('fs');var path=require(_0x996f('0x7'));var rimraf=require(_0x996f('0x8'));var config=require('../../config/environment');var attributes=require(_0x996f('0x9'));module[_0x996f('0xa')]=function(_0x4846b8,_0x1e1b9d){return _0x4846b8[_0x996f('0xb')](_0x996f('0xc'),attributes,{'tableName':'int_servicenow_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bcb7e6a..86afc9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb54a=['util','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','ServicenowConfiguration,\x20%s,\x20%s','info','result','lodash'];(function(_0xd04012,_0x525b45){var _0x24f0be=function(_0x5faba9){while(--_0x5faba9){_0xd04012['push'](_0xd04012['shift']());}};_0x24f0be(++_0x525b45);}(_0xb54a,0x84));var _0xab54=function(_0x5b7f10,_0x2c5218){_0x5b7f10=_0x5b7f10-0x0;var _0x1ffcd6=_0xb54a[_0x5b7f10];return _0x1ffcd6;};'use strict';var _=require(_0xab54('0x0'));var util=require(_0xab54('0x1'));var moment=require('moment');var BPromise=require(_0xab54('0x2'));var rs=require(_0xab54('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xab54('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xab54('0x5'));var config=require(_0xab54('0x6'));var jayson=require(_0xab54('0x7'));var client=jayson[_0xab54('0x8')][_0xab54('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x52fd49,_0x13e9d0,_0x3a1f70){return new BPromise(function(_0x13f4f9,_0x573b3b){return client['request'](_0x52fd49,_0x3a1f70)['then'](function(_0x3449a8){logger['info']('ServicenowConfiguration,\x20%s,\x20%s',_0x13e9d0,'request\x20sent');logger['debug'](_0xab54('0xa'),_0x13e9d0,_0xab54('0xb'),JSON[_0xab54('0xc')](_0x3449a8));if(_0x3449a8['error']){if(_0x3449a8[_0xab54('0xd')][_0xab54('0xe')]===0x1f4){logger[_0xab54('0xd')]('ServicenowConfiguration,\x20%s,\x20%s',_0x13e9d0,_0x3449a8[_0xab54('0xd')][_0xab54('0xf')]);return _0x573b3b(_0x3449a8[_0xab54('0xd')][_0xab54('0xf')]);}logger[_0xab54('0xd')](_0xab54('0x10'),_0x13e9d0,_0x3449a8[_0xab54('0xd')][_0xab54('0xf')]);return _0x13f4f9(_0x3449a8[_0xab54('0xd')][_0xab54('0xf')]);}else{logger[_0xab54('0x11')](_0xab54('0x10'),_0x13e9d0,_0xab54('0xb'));_0x13f4f9(_0x3449a8[_0xab54('0x12')][_0xab54('0xf')]);}})['catch'](function(_0x3df694){logger['error'](_0xab54('0x10'),_0x13e9d0,_0x3df694);_0x573b3b(_0x3df694);});});}
\ No newline at end of file
+var _0xb6c8=['info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','http','request','then'];(function(_0xace0ff,_0x297504){var _0x57efad=function(_0xe2e0ca){while(--_0xe2e0ca){_0xace0ff['push'](_0xace0ff['shift']());}};_0x57efad(++_0x297504);}(_0xb6c8,0x180));var _0x8b6c=function(_0x172a35,_0x16dc04){_0x172a35=_0x172a35-0x0;var _0x562871=_0xb6c8[_0x172a35];return _0x562871;};'use strict';var _=require(_0x8b6c('0x0'));var util=require('util');var moment=require(_0x8b6c('0x1'));var BPromise=require(_0x8b6c('0x2'));var rs=require(_0x8b6c('0x3'));var fs=require('fs');var Redis=require(_0x8b6c('0x4'));var db=require(_0x8b6c('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x8b6c('0x6'));var jayson=require(_0x8b6c('0x7'));var client=jayson[_0x8b6c('0x8')][_0x8b6c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x210e9a,_0x4cc4de,_0x2bcfd9){return new BPromise(function(_0x252dd0,_0x3458c0){return client[_0x8b6c('0xa')](_0x210e9a,_0x2bcfd9)[_0x8b6c('0xb')](function(_0x5907e8){logger[_0x8b6c('0xc')](_0x8b6c('0xd'),_0x4cc4de,_0x8b6c('0xe'));logger[_0x8b6c('0xf')](_0x8b6c('0x10'),_0x4cc4de,'request\x20sent',JSON[_0x8b6c('0x11')](_0x5907e8));if(_0x5907e8[_0x8b6c('0x12')]){if(_0x5907e8[_0x8b6c('0x12')]['code']===0x1f4){logger[_0x8b6c('0x12')](_0x8b6c('0xd'),_0x4cc4de,_0x5907e8['error'][_0x8b6c('0x13')]);return _0x3458c0(_0x5907e8[_0x8b6c('0x12')][_0x8b6c('0x13')]);}logger[_0x8b6c('0x12')](_0x8b6c('0xd'),_0x4cc4de,_0x5907e8[_0x8b6c('0x12')]['message']);return _0x252dd0(_0x5907e8['error'][_0x8b6c('0x13')]);}else{logger[_0x8b6c('0xc')](_0x8b6c('0xd'),_0x4cc4de,_0x8b6c('0xe'));_0x252dd0(_0x5907e8[_0x8b6c('0x14')][_0x8b6c('0x13')]);}})[_0x8b6c('0x15')](function(_0x3409c3){logger['error']('ServicenowConfiguration,\x20%s,\x20%s',_0x4cc4de,_0x3409c3);_0x3458c0(_0x3409c3);});});}
\ No newline at end of file
index d7d6b97..bbb17f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4db2=['/:id','isAuthenticated','show','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intServicenowField.controller','get','index'];(function(_0x4a6705,_0x19aa2a){var _0x94693a=function(_0xafeb7e){while(--_0xafeb7e){_0x4a6705['push'](_0x4a6705['shift']());}};_0x94693a(++_0x19aa2a);}(_0x4db2,0xc6));var _0x24db=function(_0x736a72,_0x574f49){_0x736a72=_0x736a72-0x0;var _0x3741ad=_0x4db2[_0x736a72];return _0x3741ad;};'use strict';var multer=require(_0x24db('0x0'));var util=require(_0x24db('0x1'));var path=require(_0x24db('0x2'));var timeout=require(_0x24db('0x3'));var express=require(_0x24db('0x4'));var router=express[_0x24db('0x5')]();var fs_extra=require(_0x24db('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x24db('0x7'));var config=require(_0x24db('0x8'));var controller=require(_0x24db('0x9'));router[_0x24db('0xa')]('/',auth['isAuthenticated'](),controller[_0x24db('0xb')]);router[_0x24db('0xa')](_0x24db('0xc'),auth[_0x24db('0xd')](),controller[_0x24db('0xe')]);router[_0x24db('0xf')]('/',auth['isAuthenticated'](),controller[_0x24db('0x10')]);router[_0x24db('0x11')](_0x24db('0xc'),auth[_0x24db('0xd')](),controller[_0x24db('0x12')]);router['delete'](_0x24db('0xc'),auth['isAuthenticated'](),controller[_0x24db('0x13')]);module[_0x24db('0x14')]=router;
\ No newline at end of file
+var _0x7d4f=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','post','put','update','delete','exports','multer','util','path','connect-timeout'];(function(_0x2e5f48,_0x5e0276){var _0x3ed9b0=function(_0x139905){while(--_0x139905){_0x2e5f48['push'](_0x2e5f48['shift']());}};_0x3ed9b0(++_0x5e0276);}(_0x7d4f,0x17c));var _0xf7d4=function(_0x2d7827,_0x5afb3d){_0x2d7827=_0x2d7827-0x0;var _0x2ef080=_0x7d4f[_0x2d7827];return _0x2ef080;};'use strict';var multer=require(_0xf7d4('0x0'));var util=require(_0xf7d4('0x1'));var path=require(_0xf7d4('0x2'));var timeout=require(_0xf7d4('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf7d4('0x4'));var auth=require(_0xf7d4('0x5'));var interaction=require(_0xf7d4('0x6'));var config=require(_0xf7d4('0x7'));var controller=require('./intServicenowField.controller');router[_0xf7d4('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xf7d4('0x8')](_0xf7d4('0x9'),auth[_0xf7d4('0xa')](),controller['show']);router[_0xf7d4('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0xf7d4('0xc')](_0xf7d4('0x9'),auth['isAuthenticated'](),controller[_0xf7d4('0xd')]);router[_0xf7d4('0xe')](_0xf7d4('0x9'),auth[_0xf7d4('0xa')](),controller['destroy']);module[_0xf7d4('0xf')]=router;
\ No newline at end of file
index 0486586..7b05d89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ad5=['exports','ENUM','string','variable','picklist','customVariable','STRING','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2ad5,0xaf));var _0x52ad=function(_0x3c5ce8,_0x49cce9){_0x3c5ce8=_0x3c5ce8-0x0;var _0x52028c=_0x2ad5[_0x3c5ce8];return _0x52028c;};'use strict';var Sequelize=require(_0x52ad('0x0'));module[_0x52ad('0x1')]={'type':{'type':Sequelize[_0x52ad('0x2')](_0x52ad('0x3'),_0x52ad('0x4'),'customVariable','keyValue',_0x52ad('0x5')),'defaultValue':_0x52ad('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x52ad('0x2')](_0x52ad('0x3'),_0x52ad('0x4'),_0x52ad('0x6'))},'keyContent':{'type':Sequelize[_0x52ad('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x52ad('0x7')]}};
\ No newline at end of file
+var _0xb02a=['keyValue','picklist','STRING','ENUM','BOOLEAN','sequelize','string','variable','customVariable'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb02a,0x176));var _0xab02=function(_0x184642,_0x6c23d8){_0x184642=_0x184642-0x0;var _0x5bb270=_0xb02a[_0x184642];return _0x5bb270;};'use strict';var Sequelize=require(_0xab02('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0xab02('0x1'),_0xab02('0x2'),_0xab02('0x3'),_0xab02('0x4'),_0xab02('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0xab02('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xab02('0x7')](_0xab02('0x1'),_0xab02('0x2'),_0xab02('0x3'))},'keyContent':{'type':Sequelize[_0xab02('0x6')]},'idField':{'type':Sequelize[_0xab02('0x6')]},'nameField':{'type':Sequelize[_0xab02('0x6')]},'customField':{'type':Sequelize[_0xab02('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xab02('0x6')]}};
\ No newline at end of file
index 09729e2..f63af8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2402=['../../mysqldb','sendStatus','status','json','offset','undefined','count','set','apply','reject','save','update','then','end','stack','name','send','index','map','ServicenowField','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','options','includeAll','findAll','rows','catch','params','include','merge','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x3fe598,_0x9141fc){var _0xcb515a=function(_0xf33776){while(--_0xf33776){_0x3fe598['push'](_0x3fe598['shift']());}};_0xcb515a(++_0x9141fc);}(_0x2402,0x1a9));var _0x2240=function(_0x2d5d25,_0x518909){_0x2d5d25=_0x2d5d25-0x0;var _0x3773a5=_0x2402[_0x2d5d25];return _0x3773a5;};'use strict';var emlformat=require(_0x2240('0x0'));var rimraf=require(_0x2240('0x1'));var zipdir=require(_0x2240('0x2'));var jsonpatch=require(_0x2240('0x3'));var rp=require(_0x2240('0x4'));var moment=require(_0x2240('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x2240('0x6'));var path=require(_0x2240('0x7'));var sox=require(_0x2240('0x8'));var csv=require(_0x2240('0x9'));var ejs=require(_0x2240('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x2240('0xb'));var crypto=require(_0x2240('0xc'));var jsforce=require(_0x2240('0xd'));var deskjs=require(_0x2240('0xe'));var toCsv=require('to-csv');var querystring=require(_0x2240('0xf'));var Papa=require(_0x2240('0x10'));var Redis=require(_0x2240('0x11'));var authService=require(_0x2240('0x12'));var qs=require(_0x2240('0x13'));var as=require(_0x2240('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2240('0x15'))(_0x2240('0x16'));var utils=require(_0x2240('0x17'));var config=require(_0x2240('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x2240('0x19'))['db'];function respondWithStatusCode(_0x4bfb8b,_0x2f1435){_0x2f1435=_0x2f1435||0xcc;return function(_0x3986db){if(_0x3986db){return _0x4bfb8b[_0x2240('0x1a')](_0x2f1435);}return _0x4bfb8b['status'](_0x2f1435)['end']();};}function respondWithResult(_0x7a2763,_0x1f9987){_0x1f9987=_0x1f9987||0xc8;return function(_0x48589a){if(_0x48589a){return _0x7a2763[_0x2240('0x1b')](_0x1f9987)[_0x2240('0x1c')](_0x48589a);}};}function respondWithFilteredResult(_0x1ea099,_0x1c38b0){return function(_0x14686e){if(_0x14686e){var _0x3b2a02=typeof _0x1c38b0[_0x2240('0x1d')]===_0x2240('0x1e')&&typeof _0x1c38b0['limit']==='undefined';var _0x3d059d=_0x14686e[_0x2240('0x1f')];var _0x543266=_0x3b2a02?0x0:_0x1c38b0['offset'];var _0x37294a=_0x3b2a02?_0x14686e[_0x2240('0x1f')]:_0x1c38b0[_0x2240('0x1d')]+_0x1c38b0['limit'];var _0x4a10dd;if(_0x37294a>=_0x3d059d){_0x37294a=_0x3d059d;_0x4a10dd=0xc8;}else{_0x4a10dd=0xce;}_0x1ea099[_0x2240('0x1b')](_0x4a10dd);return _0x1ea099[_0x2240('0x20')]('Content-Range',_0x543266+'-'+_0x37294a+'/'+_0x3d059d)['json'](_0x14686e);}return null;};}function patchUpdates(_0x56c4f8){return function(_0xf40137){try{jsonpatch[_0x2240('0x21')](_0xf40137,_0x56c4f8,!![]);}catch(_0x1fbe22){return BPromise[_0x2240('0x22')](_0x1fbe22);}return _0xf40137[_0x2240('0x23')]();};}function saveUpdates(_0xa3c77d,_0x605592){return function(_0x46deb9){if(_0x46deb9){return _0x46deb9[_0x2240('0x24')](_0xa3c77d)[_0x2240('0x25')](function(_0x545dad){return _0x545dad;});}return null;};}function removeEntity(_0x359f72,_0x141abd){return function(_0x193079){if(_0x193079){return _0x193079['destroy']()[_0x2240('0x25')](function(){_0x359f72[_0x2240('0x1b')](0xcc)[_0x2240('0x26')]();});}};}function handleEntityNotFound(_0x1e3b68,_0x1b0814){return function(_0x5e8032){if(!_0x5e8032){_0x1e3b68[_0x2240('0x1a')](0x194);}return _0x5e8032;};}function handleError(_0x14c806,_0x2c1b62){_0x2c1b62=_0x2c1b62||0x1f4;return function(_0x23cff1){logger['error'](_0x23cff1[_0x2240('0x27')]);if(_0x23cff1[_0x2240('0x28')]){delete _0x23cff1['name'];}_0x14c806[_0x2240('0x1b')](_0x2c1b62)[_0x2240('0x29')](_0x23cff1);};}exports[_0x2240('0x2a')]=function(_0x39b8e6,_0x1faf75){var _0x5e94eb={},_0x310212={},_0x3d5101={'count':0x0,'rows':[]};var _0x59391f=_[_0x2240('0x2b')](db[_0x2240('0x2c')][_0x2240('0x2d')],function(_0x53a62a){return{'name':_0x53a62a[_0x2240('0x2e')],'type':_0x53a62a[_0x2240('0x2f')][_0x2240('0x30')]};});_0x310212['model']=_[_0x2240('0x2b')](_0x59391f,'name');_0x310212[_0x2240('0x31')]=_[_0x2240('0x32')](_0x39b8e6[_0x2240('0x31')]);_0x310212[_0x2240('0x33')]=_['intersection'](_0x310212[_0x2240('0x34')],_0x310212['query']);_0x5e94eb[_0x2240('0x35')]=_[_0x2240('0x36')](_0x310212['model'],qs[_0x2240('0x37')](_0x39b8e6[_0x2240('0x31')][_0x2240('0x37')]));_0x5e94eb[_0x2240('0x35')]=_0x5e94eb[_0x2240('0x35')][_0x2240('0x38')]?_0x5e94eb[_0x2240('0x35')]:_0x310212['model'];if(!_0x39b8e6[_0x2240('0x31')][_0x2240('0x39')](_0x2240('0x3a'))){_0x5e94eb[_0x2240('0x3b')]=qs[_0x2240('0x3b')](_0x39b8e6[_0x2240('0x31')][_0x2240('0x3b')]);_0x5e94eb[_0x2240('0x1d')]=qs['offset'](_0x39b8e6[_0x2240('0x31')][_0x2240('0x1d')]);}_0x5e94eb[_0x2240('0x3c')]=qs['sort'](_0x39b8e6[_0x2240('0x31')][_0x2240('0x3d')]);_0x5e94eb['where']=qs['filters'](_[_0x2240('0x3e')](_0x39b8e6[_0x2240('0x31')],_0x310212['filters']),_0x59391f);if(_0x39b8e6[_0x2240('0x31')][_0x2240('0x3f')]){_0x5e94eb[_0x2240('0x40')]=_['merge'](_0x5e94eb['where'],{'$or':_[_0x2240('0x2b')](_0x59391f,function(_0x793e96){if(_0x793e96[_0x2240('0x2f')]!=='VIRTUAL'){var _0x1fe8b5={};_0x1fe8b5[_0x793e96[_0x2240('0x28')]]={'$like':'%'+_0x39b8e6[_0x2240('0x31')][_0x2240('0x3f')]+'%'};return _0x1fe8b5;}})});}_0x5e94eb=_['merge']({},_0x5e94eb,_0x39b8e6[_0x2240('0x41')]);var _0x4c5ffd={'where':_0x5e94eb['where']};return db[_0x2240('0x2c')]['count'](_0x4c5ffd)[_0x2240('0x25')](function(_0x28a911){_0x3d5101[_0x2240('0x1f')]=_0x28a911;if(_0x39b8e6[_0x2240('0x31')][_0x2240('0x42')]){_0x5e94eb['include']=[{'all':!![]}];}return db['ServicenowField'][_0x2240('0x43')](_0x5e94eb);})[_0x2240('0x25')](function(_0x542398){_0x3d5101[_0x2240('0x44')]=_0x542398;return _0x3d5101;})[_0x2240('0x25')](respondWithFilteredResult(_0x1faf75,_0x5e94eb))[_0x2240('0x45')](handleError(_0x1faf75,null));};exports['show']=function(_0x1b6dfd,_0x3f51b8){var _0x360de6={'raw':!![],'where':{'id':_0x1b6dfd[_0x2240('0x46')]['id']}},_0xa6cce3={};_0xa6cce3[_0x2240('0x34')]=_['keys'](db[_0x2240('0x2c')][_0x2240('0x2d')]);_0xa6cce3[_0x2240('0x31')]=_[_0x2240('0x32')](_0x1b6dfd[_0x2240('0x31')]);_0xa6cce3[_0x2240('0x33')]=_[_0x2240('0x36')](_0xa6cce3['model'],_0xa6cce3[_0x2240('0x31')]);_0x360de6[_0x2240('0x35')]=_[_0x2240('0x36')](_0xa6cce3['model'],qs[_0x2240('0x37')](_0x1b6dfd[_0x2240('0x31')][_0x2240('0x37')]));_0x360de6[_0x2240('0x35')]=_0x360de6[_0x2240('0x35')][_0x2240('0x38')]?_0x360de6[_0x2240('0x35')]:_0xa6cce3[_0x2240('0x34')];if(_0x1b6dfd[_0x2240('0x31')][_0x2240('0x42')]){_0x360de6[_0x2240('0x47')]=[{'all':!![]}];}_0x360de6=_[_0x2240('0x48')]({},_0x360de6,_0x1b6dfd[_0x2240('0x41')]);return db[_0x2240('0x2c')]['find'](_0x360de6)[_0x2240('0x25')](handleEntityNotFound(_0x3f51b8,null))['then'](respondWithResult(_0x3f51b8,null))[_0x2240('0x45')](handleError(_0x3f51b8,null));};exports['create']=function(_0x26071c,_0xe15fc2){return db['ServicenowField']['create'](_0x26071c[_0x2240('0x49')],{})[_0x2240('0x25')](respondWithResult(_0xe15fc2,0xc9))['catch'](handleError(_0xe15fc2,null));};exports[_0x2240('0x24')]=function(_0x65b92d,_0x1ebd96){if(_0x65b92d['body']['id']){delete _0x65b92d[_0x2240('0x49')]['id'];}return db[_0x2240('0x2c')]['find']({'where':{'id':_0x65b92d[_0x2240('0x46')]['id']}})['then'](handleEntityNotFound(_0x1ebd96,null))[_0x2240('0x25')](saveUpdates(_0x65b92d[_0x2240('0x49')],null))[_0x2240('0x25')](respondWithResult(_0x1ebd96,null))[_0x2240('0x45')](handleError(_0x1ebd96,null));};exports[_0x2240('0x4a')]=function(_0x3868ba,_0x3b2ccf){return db[_0x2240('0x2c')]['find']({'where':{'id':_0x3868ba[_0x2240('0x46')]['id']}})[_0x2240('0x25')](handleEntityNotFound(_0x3b2ccf,null))[_0x2240('0x25')](removeEntity(_0x3b2ccf,null))[_0x2240('0x45')](handleError(_0x3b2ccf,null));};
\ No newline at end of file
+var _0xd7b8=['count','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','ServicenowField','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','rows','catch','show','params','options','create','body','find','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','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','sendStatus','end','status','undefined','limit'];(function(_0x404e3a,_0x4d020b){var _0x3acf8f=function(_0x2a7af3){while(--_0x2a7af3){_0x404e3a['push'](_0x404e3a['shift']());}};_0x3acf8f(++_0x4d020b);}(_0xd7b8,0x1aa));var _0x8d7b=function(_0x4ebbc8,_0x155642){_0x4ebbc8=_0x4ebbc8-0x0;var _0x3e3916=_0xd7b8[_0x4ebbc8];return _0x3e3916;};'use strict';var emlformat=require(_0x8d7b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8d7b('0x1'));var jsonpatch=require(_0x8d7b('0x2'));var rp=require(_0x8d7b('0x3'));var moment=require('moment');var BPromise=require(_0x8d7b('0x4'));var Mustache=require(_0x8d7b('0x5'));var util=require(_0x8d7b('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x8d7b('0x7'));var ejs=require(_0x8d7b('0x8'));var fs=require('fs');var fs_extra=require(_0x8d7b('0x9'));var _=require(_0x8d7b('0xa'));var squel=require(_0x8d7b('0xb'));var crypto=require(_0x8d7b('0xc'));var jsforce=require(_0x8d7b('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x8d7b('0x7'));var querystring=require(_0x8d7b('0xe'));var Papa=require(_0x8d7b('0xf'));var Redis=require(_0x8d7b('0x10'));var authService=require(_0x8d7b('0x11'));var qs=require(_0x8d7b('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8d7b('0x13'));var logger=require(_0x8d7b('0x14'))(_0x8d7b('0x15'));var utils=require(_0x8d7b('0x16'));var config=require(_0x8d7b('0x17'));var licenseUtil=require(_0x8d7b('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x11b582,_0x40a599){_0x40a599=_0x40a599||0xcc;return function(_0x595d17){if(_0x595d17){return _0x11b582[_0x8d7b('0x19')](_0x40a599);}return _0x11b582['status'](_0x40a599)[_0x8d7b('0x1a')]();};}function respondWithResult(_0x70ccce,_0x8d4cf2){_0x8d4cf2=_0x8d4cf2||0xc8;return function(_0x28c71f){if(_0x28c71f){return _0x70ccce[_0x8d7b('0x1b')](_0x8d4cf2)['json'](_0x28c71f);}};}function respondWithFilteredResult(_0x592ed7,_0x1a898b){return function(_0x256bab){if(_0x256bab){var _0x33cf44=typeof _0x1a898b['offset']===_0x8d7b('0x1c')&&typeof _0x1a898b[_0x8d7b('0x1d')]===_0x8d7b('0x1c');var _0x3b3085=_0x256bab[_0x8d7b('0x1e')];var _0x2e9ebd=_0x33cf44?0x0:_0x1a898b[_0x8d7b('0x1f')];var _0x449a32=_0x33cf44?_0x256bab[_0x8d7b('0x1e')]:_0x1a898b[_0x8d7b('0x1f')]+_0x1a898b[_0x8d7b('0x1d')];var _0x325d17;if(_0x449a32>=_0x3b3085){_0x449a32=_0x3b3085;_0x325d17=0xc8;}else{_0x325d17=0xce;}_0x592ed7['status'](_0x325d17);return _0x592ed7[_0x8d7b('0x20')](_0x8d7b('0x21'),_0x2e9ebd+'-'+_0x449a32+'/'+_0x3b3085)['json'](_0x256bab);}return null;};}function patchUpdates(_0x3f2bff){return function(_0x450614){try{jsonpatch[_0x8d7b('0x22')](_0x450614,_0x3f2bff,!![]);}catch(_0x1b48e0){return BPromise[_0x8d7b('0x23')](_0x1b48e0);}return _0x450614[_0x8d7b('0x24')]();};}function saveUpdates(_0x111b0e,_0x196b22){return function(_0x54a96f){if(_0x54a96f){return _0x54a96f[_0x8d7b('0x25')](_0x111b0e)[_0x8d7b('0x26')](function(_0x1a20be){return _0x1a20be;});}return null;};}function removeEntity(_0x1a758c,_0x415a55){return function(_0x4b061b){if(_0x4b061b){return _0x4b061b[_0x8d7b('0x27')]()[_0x8d7b('0x26')](function(){_0x1a758c[_0x8d7b('0x1b')](0xcc)[_0x8d7b('0x1a')]();});}};}function handleEntityNotFound(_0x5ae719,_0x2a627c){return function(_0x35c857){if(!_0x35c857){_0x5ae719[_0x8d7b('0x19')](0x194);}return _0x35c857;};}function handleError(_0x2ab461,_0x3facd0){_0x3facd0=_0x3facd0||0x1f4;return function(_0x716c28){logger[_0x8d7b('0x28')](_0x716c28[_0x8d7b('0x29')]);if(_0x716c28['name']){delete _0x716c28[_0x8d7b('0x2a')];}_0x2ab461[_0x8d7b('0x1b')](_0x3facd0)[_0x8d7b('0x2b')](_0x716c28);};}exports['index']=function(_0x4be76f,_0x38055e){var _0xb0f01f={},_0x1f95fa={},_0x5da0df={'count':0x0,'rows':[]};var _0x46adc9=_['map'](db[_0x8d7b('0x2c')][_0x8d7b('0x2d')],function(_0x143d1a){return{'name':_0x143d1a[_0x8d7b('0x2e')],'type':_0x143d1a[_0x8d7b('0x2f')][_0x8d7b('0x30')]};});_0x1f95fa[_0x8d7b('0x31')]=_[_0x8d7b('0x32')](_0x46adc9,'name');_0x1f95fa[_0x8d7b('0x33')]=_[_0x8d7b('0x34')](_0x4be76f[_0x8d7b('0x33')]);_0x1f95fa['filters']=_[_0x8d7b('0x35')](_0x1f95fa[_0x8d7b('0x31')],_0x1f95fa[_0x8d7b('0x33')]);_0xb0f01f['attributes']=_['intersection'](_0x1f95fa[_0x8d7b('0x31')],qs[_0x8d7b('0x36')](_0x4be76f[_0x8d7b('0x33')][_0x8d7b('0x36')]));_0xb0f01f[_0x8d7b('0x37')]=_0xb0f01f[_0x8d7b('0x37')][_0x8d7b('0x38')]?_0xb0f01f['attributes']:_0x1f95fa['model'];if(!_0x4be76f[_0x8d7b('0x33')][_0x8d7b('0x39')]('nolimit')){_0xb0f01f[_0x8d7b('0x1d')]=qs[_0x8d7b('0x1d')](_0x4be76f['query'][_0x8d7b('0x1d')]);_0xb0f01f[_0x8d7b('0x1f')]=qs['offset'](_0x4be76f['query'][_0x8d7b('0x1f')]);}_0xb0f01f[_0x8d7b('0x3a')]=qs[_0x8d7b('0x3b')](_0x4be76f[_0x8d7b('0x33')][_0x8d7b('0x3b')]);_0xb0f01f[_0x8d7b('0x3c')]=qs[_0x8d7b('0x3d')](_[_0x8d7b('0x3e')](_0x4be76f[_0x8d7b('0x33')],_0x1f95fa[_0x8d7b('0x3d')]),_0x46adc9);if(_0x4be76f[_0x8d7b('0x33')][_0x8d7b('0x3f')]){_0xb0f01f['where']=_[_0x8d7b('0x40')](_0xb0f01f[_0x8d7b('0x3c')],{'$or':_['map'](_0x46adc9,function(_0x295c44){if(_0x295c44[_0x8d7b('0x2f')]!==_0x8d7b('0x41')){var _0x249ae3={};_0x249ae3[_0x295c44[_0x8d7b('0x2a')]]={'$like':'%'+_0x4be76f['query'][_0x8d7b('0x3f')]+'%'};return _0x249ae3;}})});}_0xb0f01f=_[_0x8d7b('0x40')]({},_0xb0f01f,_0x4be76f['options']);var _0x1236b6={'where':_0xb0f01f[_0x8d7b('0x3c')]};return db['ServicenowField'][_0x8d7b('0x1e')](_0x1236b6)['then'](function(_0x2b8f85){_0x5da0df[_0x8d7b('0x1e')]=_0x2b8f85;if(_0x4be76f['query'][_0x8d7b('0x42')]){_0xb0f01f[_0x8d7b('0x43')]=[{'all':!![]}];}return db[_0x8d7b('0x2c')]['findAll'](_0xb0f01f);})['then'](function(_0x4c84e7){_0x5da0df[_0x8d7b('0x44')]=_0x4c84e7;return _0x5da0df;})[_0x8d7b('0x26')](respondWithFilteredResult(_0x38055e,_0xb0f01f))[_0x8d7b('0x45')](handleError(_0x38055e,null));};exports[_0x8d7b('0x46')]=function(_0x43585d,_0x407159){var _0xfbc41a={'raw':!![],'where':{'id':_0x43585d[_0x8d7b('0x47')]['id']}},_0x24c797={};_0x24c797[_0x8d7b('0x31')]=_['keys'](db[_0x8d7b('0x2c')][_0x8d7b('0x2d')]);_0x24c797['query']=_['keys'](_0x43585d[_0x8d7b('0x33')]);_0x24c797['filters']=_[_0x8d7b('0x35')](_0x24c797[_0x8d7b('0x31')],_0x24c797[_0x8d7b('0x33')]);_0xfbc41a[_0x8d7b('0x37')]=_[_0x8d7b('0x35')](_0x24c797['model'],qs[_0x8d7b('0x36')](_0x43585d['query'][_0x8d7b('0x36')]));_0xfbc41a[_0x8d7b('0x37')]=_0xfbc41a[_0x8d7b('0x37')][_0x8d7b('0x38')]?_0xfbc41a[_0x8d7b('0x37')]:_0x24c797[_0x8d7b('0x31')];if(_0x43585d[_0x8d7b('0x33')][_0x8d7b('0x42')]){_0xfbc41a[_0x8d7b('0x43')]=[{'all':!![]}];}_0xfbc41a=_['merge']({},_0xfbc41a,_0x43585d[_0x8d7b('0x48')]);return db['ServicenowField']['find'](_0xfbc41a)[_0x8d7b('0x26')](handleEntityNotFound(_0x407159,null))[_0x8d7b('0x26')](respondWithResult(_0x407159,null))['catch'](handleError(_0x407159,null));};exports[_0x8d7b('0x49')]=function(_0x29d7cd,_0x2f1ba9){return db[_0x8d7b('0x2c')][_0x8d7b('0x49')](_0x29d7cd[_0x8d7b('0x4a')],{})[_0x8d7b('0x26')](respondWithResult(_0x2f1ba9,0xc9))[_0x8d7b('0x45')](handleError(_0x2f1ba9,null));};exports['update']=function(_0x3e3816,_0x20de9a){if(_0x3e3816[_0x8d7b('0x4a')]['id']){delete _0x3e3816[_0x8d7b('0x4a')]['id'];}return db['ServicenowField']['find']({'where':{'id':_0x3e3816[_0x8d7b('0x47')]['id']}})[_0x8d7b('0x26')](handleEntityNotFound(_0x20de9a,null))[_0x8d7b('0x26')](saveUpdates(_0x3e3816[_0x8d7b('0x4a')],null))[_0x8d7b('0x26')](respondWithResult(_0x20de9a,null))[_0x8d7b('0x45')](handleError(_0x20de9a,null));};exports[_0x8d7b('0x27')]=function(_0x119547,_0x1e0dd0){return db[_0x8d7b('0x2c')][_0x8d7b('0x4b')]({'where':{'id':_0x119547[_0x8d7b('0x47')]['id']}})[_0x8d7b('0x26')](handleEntityNotFound(_0x1e0dd0,null))['then'](removeEntity(_0x1e0dd0,null))[_0x8d7b('0x45')](handleError(_0x1e0dd0,null));};
\ No newline at end of file
index 7284fab..71520dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb275=['request-promise','path','rimraf','../../config/environment','./intServicenowField.attributes','define','ServicenowField','int_servicenow_fields','servicenow_unique_index','idField','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x30b3c5,_0x346a55){var _0x3c0ab7=function(_0x47fdc7){while(--_0x47fdc7){_0x30b3c5['push'](_0x30b3c5['shift']());}};_0x3c0ab7(++_0x346a55);}(_0xb275,0x15a));var _0x5b27=function(_0x166d85,_0x1ef465){_0x166d85=_0x166d85-0x0;var _0x39ebc5=_0xb275[_0x166d85];return _0x39ebc5;};'use strict';var _=require(_0x5b27('0x0'));var util=require(_0x5b27('0x1'));var logger=require(_0x5b27('0x2'))(_0x5b27('0x3'));var moment=require(_0x5b27('0x4'));var BPromise=require(_0x5b27('0x5'));var rp=require(_0x5b27('0x6'));var fs=require('fs');var path=require(_0x5b27('0x7'));var rimraf=require(_0x5b27('0x8'));var config=require(_0x5b27('0x9'));var attributes=require(_0x5b27('0xa'));module['exports']=function(_0x188443,_0x29ab7d){return _0x188443[_0x5b27('0xb')](_0x5b27('0xc'),attributes,{'tableName':_0x5b27('0xd'),'paranoid':![],'indexes':[{'name':_0x5b27('0xe'),'fields':[_0x5b27('0xf'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1361=['../../config/logger','api','moment','bluebird','path','../../config/environment','./intServicenowField.attributes','define','idField','FieldId','util'];(function(_0x35e6d3,_0x1da972){var _0x5e8fb7=function(_0x461fd0){while(--_0x461fd0){_0x35e6d3['push'](_0x35e6d3['shift']());}};_0x5e8fb7(++_0x1da972);}(_0x1361,0x149));var _0x1136=function(_0x3c0193,_0x244546){_0x3c0193=_0x3c0193-0x0;var _0x2f5535=_0x1361[_0x3c0193];return _0x2f5535;};'use strict';var _=require('lodash');var util=require(_0x1136('0x0'));var logger=require(_0x1136('0x1'))(_0x1136('0x2'));var moment=require(_0x1136('0x3'));var BPromise=require(_0x1136('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1136('0x5'));var rimraf=require('rimraf');var config=require(_0x1136('0x6'));var attributes=require(_0x1136('0x7'));module['exports']=function(_0x12ff88,_0x7a2c8c){return _0x12ff88[_0x1136('0x8')]('ServicenowField',attributes,{'tableName':'int_servicenow_fields','paranoid':![],'indexes':[{'name':'servicenow_unique_index','fields':[_0x1136('0x9'),_0x1136('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index e8899f6..32ec0e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','ioredis'];(function(_0x4c94d1,_0x573a4f){var _0x48c2c3=function(_0x326bcc){while(--_0x326bcc){_0x4c94d1['push'](_0x4c94d1['shift']());}};_0x48c2c3(++_0x573a4f);}(_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
+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(_0x4bcb3f,_0x479d9b){var _0x198c16=function(_0x19cd07){while(--_0x19cd07){_0x4bcb3f['push'](_0x4bcb3f['shift']());}};_0x198c16(++_0x479d9b);}(_0x70e0,0x17b));var _0x070e=function(_0x526b8b,_0x191d39){_0x526b8b=_0x526b8b-0x0;var _0x48ef64=_0x70e0[_0x526b8b];return _0x48ef64;};'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
index 0e6ee5d..6d3df2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x27e240,_0x1ee93b){var _0x1e6918=function(_0x416008){while(--_0x416008){_0x27e240['push'](_0x27e240['shift']());}};_0x1e6918(++_0x1ee93b);}(_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('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
+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(_0x1bb6c6,_0x4dce82){var _0x297d7c=function(_0x464c5f){while(--_0x464c5f){_0x1bb6c6['push'](_0x1bb6c6['shift']());}};_0x297d7c(++_0x4dce82);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'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 f47bd3d..5ed4104 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x46a366,_0x73c5e5){var _0x2f55d2=function(_0x224884){while(--_0x224884){_0x46a366['push'](_0x46a366['shift']());}};_0x2f55d2(++_0x73c5e5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xa9e0[_0x49ca18];return _0x145d54;};'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(_0xd80d25,_0x1a403b){var _0x258763=function(_0x4669c1){while(--_0x4669c1){_0xd80d25['push'](_0xd80d25['shift']());}};_0x258763(++_0x1a403b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0xa9e0[_0x29b609];return _0x54c952;};'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 8017a38..15ae3b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe18=['create','body','update','getConfigurations','SugarcrmConfiguration','nolimit','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','getDescriptions','SugarcrmField','Descriptions','getFields','assigned_user_id','created_by','date_start','duration_hours','parent_id','direction','username','password','slice','substring','lastIndexOf','POST','%s%s','login','JSON','stringify','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','format','Calls','values','remove','includes','label','value','getFields,\x20%s,\x20%s,\x20%s','test','Wrong\x20credentials','statusCode','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','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','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','then','destroy','error','stack','send','SugarcrmAccount','type','key','name','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','order','sort','where','pick','merge','map','VIRTUAL','filter','options','includeAll','rows','catch','show','params','rawAttributes','include','find'];(function(_0x3d48a6,_0x4ea092){var _0x25bea0=function(_0x8259be){while(--_0x8259be){_0x3d48a6['push'](_0x3d48a6['shift']());}};_0x25bea0(++_0x4ea092);}(_0xfe18,0x199));var _0x8fe1=function(_0x2142ea,_0x5a8f39){_0x2142ea=_0x2142ea-0x0;var _0x53e2a9=_0xfe18[_0x2142ea];return _0x53e2a9;};'use strict';var emlformat=require(_0x8fe1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8fe1('0x1'));var jsonpatch=require(_0x8fe1('0x2'));var rp=require(_0x8fe1('0x3'));var moment=require(_0x8fe1('0x4'));var BPromise=require(_0x8fe1('0x5'));var Mustache=require(_0x8fe1('0x6'));var util=require(_0x8fe1('0x7'));var path=require(_0x8fe1('0x8'));var sox=require(_0x8fe1('0x9'));var csv=require(_0x8fe1('0xa'));var ejs=require(_0x8fe1('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8fe1('0xc'));var squel=require(_0x8fe1('0xd'));var crypto=require(_0x8fe1('0xe'));var jsforce=require(_0x8fe1('0xf'));var deskjs=require(_0x8fe1('0x10'));var toCsv=require(_0x8fe1('0xa'));var querystring=require(_0x8fe1('0x11'));var Papa=require('papaparse');var Redis=require(_0x8fe1('0x12'));var authService=require(_0x8fe1('0x13'));var qs=require(_0x8fe1('0x14'));var as=require(_0x8fe1('0x15'));var hardwareService=require(_0x8fe1('0x16'));var logger=require(_0x8fe1('0x17'))(_0x8fe1('0x18'));var utils=require(_0x8fe1('0x19'));var config=require(_0x8fe1('0x1a'));var licenseUtil=require(_0x8fe1('0x1b'));var db=require(_0x8fe1('0x1c'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x487ae1,_0x1cd9ab){_0x1cd9ab=_0x1cd9ab||0xcc;return function(_0x45b308){if(_0x45b308){return _0x487ae1[_0x8fe1('0x1d')](_0x1cd9ab);}return _0x487ae1['status'](_0x1cd9ab)[_0x8fe1('0x1e')]();};}function respondWithResult(_0x3afcc2,_0x4cf155){_0x4cf155=_0x4cf155||0xc8;return function(_0x3890c2){if(_0x3890c2){return _0x3afcc2[_0x8fe1('0x1f')](_0x4cf155)['json'](_0x3890c2);}};}function respondWithFilteredResult(_0x3413a6,_0x4d3f41){return function(_0x5a1bed){if(_0x5a1bed){var _0x35b30e=typeof _0x4d3f41[_0x8fe1('0x20')]===_0x8fe1('0x21')&&typeof _0x4d3f41[_0x8fe1('0x22')]==='undefined';var _0x327bc9=_0x5a1bed[_0x8fe1('0x23')];var _0x4fab19=_0x35b30e?0x0:_0x4d3f41[_0x8fe1('0x20')];var _0xd56103=_0x35b30e?_0x5a1bed[_0x8fe1('0x23')]:_0x4d3f41[_0x8fe1('0x20')]+_0x4d3f41[_0x8fe1('0x22')];var _0x552033;if(_0xd56103>=_0x327bc9){_0xd56103=_0x327bc9;_0x552033=0xc8;}else{_0x552033=0xce;}_0x3413a6[_0x8fe1('0x1f')](_0x552033);return _0x3413a6[_0x8fe1('0x24')](_0x8fe1('0x25'),_0x4fab19+'-'+_0xd56103+'/'+_0x327bc9)[_0x8fe1('0x26')](_0x5a1bed);}return null;};}function patchUpdates(_0x3fa36f){return function(_0x1ab80c){try{jsonpatch[_0x8fe1('0x27')](_0x1ab80c,_0x3fa36f,!![]);}catch(_0x38d94b){return BPromise['reject'](_0x38d94b);}return _0x1ab80c['save']();};}function saveUpdates(_0x44799e,_0x116069){return function(_0x28240b){if(_0x28240b){return _0x28240b['update'](_0x44799e)[_0x8fe1('0x28')](function(_0x583ae4){return _0x583ae4;});}return null;};}function removeEntity(_0x11ec5b,_0x58886e){return function(_0x253d7b){if(_0x253d7b){return _0x253d7b[_0x8fe1('0x29')]()[_0x8fe1('0x28')](function(){_0x11ec5b['status'](0xcc)[_0x8fe1('0x1e')]();});}};}function handleEntityNotFound(_0x4fcb7b,_0x10daaf){return function(_0x1adab2){if(!_0x1adab2){_0x4fcb7b[_0x8fe1('0x1d')](0x194);}return _0x1adab2;};}function handleError(_0xdef606,_0xe4b5f2){_0xe4b5f2=_0xe4b5f2||0x1f4;return function(_0x102a63){logger[_0x8fe1('0x2a')](_0x102a63[_0x8fe1('0x2b')]);if(_0x102a63['name']){delete _0x102a63['name'];}_0xdef606[_0x8fe1('0x1f')](_0xe4b5f2)[_0x8fe1('0x2c')](_0x102a63);};}exports['index']=function(_0xd4b414,_0x14a4fa){var _0x53793c={},_0x3da582={},_0xb6fc1b={'count':0x0,'rows':[]};var _0x49886f=_['map'](db[_0x8fe1('0x2d')]['rawAttributes'],function(_0xc0374){return{'name':_0xc0374['fieldName'],'type':_0xc0374[_0x8fe1('0x2e')][_0x8fe1('0x2f')]};});_0x3da582['model']=_['map'](_0x49886f,_0x8fe1('0x30'));_0x3da582[_0x8fe1('0x31')]=_[_0x8fe1('0x32')](_0xd4b414['query']);_0x3da582[_0x8fe1('0x33')]=_[_0x8fe1('0x34')](_0x3da582['model'],_0x3da582['query']);_0x53793c[_0x8fe1('0x35')]=_[_0x8fe1('0x34')](_0x3da582[_0x8fe1('0x36')],qs[_0x8fe1('0x37')](_0xd4b414[_0x8fe1('0x31')][_0x8fe1('0x37')]));_0x53793c[_0x8fe1('0x35')]=_0x53793c['attributes'][_0x8fe1('0x38')]?_0x53793c[_0x8fe1('0x35')]:_0x3da582[_0x8fe1('0x36')];if(!_0xd4b414['query'][_0x8fe1('0x39')]('nolimit')){_0x53793c[_0x8fe1('0x22')]=qs['limit'](_0xd4b414[_0x8fe1('0x31')][_0x8fe1('0x22')]);_0x53793c[_0x8fe1('0x20')]=qs[_0x8fe1('0x20')](_0xd4b414[_0x8fe1('0x31')]['offset']);}_0x53793c[_0x8fe1('0x3a')]=qs[_0x8fe1('0x3b')](_0xd4b414['query'][_0x8fe1('0x3b')]);_0x53793c[_0x8fe1('0x3c')]=qs[_0x8fe1('0x33')](_[_0x8fe1('0x3d')](_0xd4b414[_0x8fe1('0x31')],_0x3da582[_0x8fe1('0x33')]),_0x49886f);if(_0xd4b414[_0x8fe1('0x31')]['filter']){_0x53793c[_0x8fe1('0x3c')]=_[_0x8fe1('0x3e')](_0x53793c[_0x8fe1('0x3c')],{'$or':_[_0x8fe1('0x3f')](_0x49886f,function(_0x16cb73){if(_0x16cb73[_0x8fe1('0x2e')]!==_0x8fe1('0x40')){var _0xd8667a={};_0xd8667a[_0x16cb73[_0x8fe1('0x30')]]={'$like':'%'+_0xd4b414['query'][_0x8fe1('0x41')]+'%'};return _0xd8667a;}})});}_0x53793c=_[_0x8fe1('0x3e')]({},_0x53793c,_0xd4b414[_0x8fe1('0x42')]);var _0x4d6687={'where':_0x53793c[_0x8fe1('0x3c')]};return db[_0x8fe1('0x2d')][_0x8fe1('0x23')](_0x4d6687)[_0x8fe1('0x28')](function(_0x1f2108){_0xb6fc1b[_0x8fe1('0x23')]=_0x1f2108;if(_0xd4b414['query'][_0x8fe1('0x43')]){_0x53793c['include']=[{'all':!![]}];}return db[_0x8fe1('0x2d')]['findAll'](_0x53793c);})[_0x8fe1('0x28')](function(_0x5de7b2){_0xb6fc1b[_0x8fe1('0x44')]=_0x5de7b2;return _0xb6fc1b;})[_0x8fe1('0x28')](respondWithFilteredResult(_0x14a4fa,_0x53793c))[_0x8fe1('0x45')](handleError(_0x14a4fa,null));};exports[_0x8fe1('0x46')]=function(_0x36b120,_0x25ef2c){var _0x1ea026={'raw':![],'where':{'id':_0x36b120[_0x8fe1('0x47')]['id']}},_0x23e263={};_0x23e263[_0x8fe1('0x36')]=_[_0x8fe1('0x32')](db['SugarcrmAccount'][_0x8fe1('0x48')]);_0x23e263['query']=_['keys'](_0x36b120[_0x8fe1('0x31')]);_0x23e263['filters']=_[_0x8fe1('0x34')](_0x23e263['model'],_0x23e263[_0x8fe1('0x31')]);_0x1ea026['attributes']=_[_0x8fe1('0x34')](_0x23e263['model'],qs[_0x8fe1('0x37')](_0x36b120[_0x8fe1('0x31')][_0x8fe1('0x37')]));_0x1ea026[_0x8fe1('0x35')]=_0x1ea026[_0x8fe1('0x35')][_0x8fe1('0x38')]?_0x1ea026[_0x8fe1('0x35')]:_0x23e263['model'];if(_0x36b120[_0x8fe1('0x31')][_0x8fe1('0x43')]){_0x1ea026[_0x8fe1('0x49')]=[{'all':!![]}];}_0x1ea026=_[_0x8fe1('0x3e')]({},_0x1ea026,_0x36b120[_0x8fe1('0x42')]);return db['SugarcrmAccount'][_0x8fe1('0x4a')](_0x1ea026)[_0x8fe1('0x28')](handleEntityNotFound(_0x25ef2c,null))[_0x8fe1('0x28')](respondWithResult(_0x25ef2c,null))[_0x8fe1('0x45')](handleError(_0x25ef2c,null));};exports[_0x8fe1('0x4b')]=function(_0x207c58,_0x48c29b){return db[_0x8fe1('0x2d')][_0x8fe1('0x4b')](_0x207c58[_0x8fe1('0x4c')],{})[_0x8fe1('0x28')](respondWithResult(_0x48c29b,0xc9))[_0x8fe1('0x45')](handleError(_0x48c29b,null));};exports[_0x8fe1('0x4d')]=function(_0x1a1531,_0x218114){if(_0x1a1531['body']['id']){delete _0x1a1531[_0x8fe1('0x4c')]['id'];}return db[_0x8fe1('0x2d')][_0x8fe1('0x4a')]({'where':{'id':_0x1a1531[_0x8fe1('0x47')]['id']}})[_0x8fe1('0x28')](handleEntityNotFound(_0x218114,null))[_0x8fe1('0x28')](saveUpdates(_0x1a1531[_0x8fe1('0x4c')],null))[_0x8fe1('0x28')](respondWithResult(_0x218114,null))[_0x8fe1('0x45')](handleError(_0x218114,null));};exports[_0x8fe1('0x29')]=function(_0x23d6dc,_0x527f64){return db[_0x8fe1('0x2d')]['find']({'where':{'id':_0x23d6dc[_0x8fe1('0x47')]['id']}})[_0x8fe1('0x28')](handleEntityNotFound(_0x527f64,null))['then'](removeEntity(_0x527f64,null))[_0x8fe1('0x45')](handleError(_0x527f64,null));};exports[_0x8fe1('0x4e')]=function(_0xc551b8,_0x6c7b55,_0x4bfcad){var _0x50f86={};var _0x27bc7f={};var _0x36c2d4;var _0x399d6c;return db[_0x8fe1('0x2d')]['findOne']({'where':{'id':_0xc551b8[_0x8fe1('0x47')]['id']}})[_0x8fe1('0x28')](handleEntityNotFound(_0x6c7b55,null))[_0x8fe1('0x28')](function(_0x401368){if(_0x401368){_0x36c2d4=_0x401368;_0x27bc7f['model']=_[_0x8fe1('0x32')](db[_0x8fe1('0x4f')][_0x8fe1('0x48')]);_0x27bc7f[_0x8fe1('0x31')]=_[_0x8fe1('0x32')](_0xc551b8[_0x8fe1('0x31')]);_0x27bc7f['filters']=_['intersection'](_0x27bc7f[_0x8fe1('0x36')],_0x27bc7f[_0x8fe1('0x31')]);_0x50f86[_0x8fe1('0x35')]=_[_0x8fe1('0x34')](_0x27bc7f[_0x8fe1('0x36')],qs[_0x8fe1('0x37')](_0xc551b8['query']['fields']));_0x50f86[_0x8fe1('0x35')]=_0x50f86[_0x8fe1('0x35')][_0x8fe1('0x38')]?_0x50f86[_0x8fe1('0x35')]:_0x27bc7f[_0x8fe1('0x36')];_0x50f86[_0x8fe1('0x3a')]=qs[_0x8fe1('0x3b')](_0xc551b8[_0x8fe1('0x31')][_0x8fe1('0x3b')]);_0x50f86[_0x8fe1('0x3c')]=qs[_0x8fe1('0x33')](_['pick'](_0xc551b8[_0x8fe1('0x31')],_0x27bc7f[_0x8fe1('0x33')]));if(_0xc551b8['query']['filter']){_0x50f86[_0x8fe1('0x3c')]=_[_0x8fe1('0x3e')](_0x50f86['where'],{'$or':_[_0x8fe1('0x3f')](_0x50f86[_0x8fe1('0x35')],function(_0x513729){var _0x2e2594={};_0x2e2594[_0x513729]={'$like':'%'+_0xc551b8['query'][_0x8fe1('0x41')]+'%'};return _0x2e2594;})});}_0x50f86=_['merge']({},_0x50f86,_0xc551b8[_0x8fe1('0x42')]);return _0x36c2d4[_0x8fe1('0x4e')](_0x50f86);}})[_0x8fe1('0x28')](function(_0x1c8f10){if(_0x1c8f10){_0x399d6c=_0x1c8f10[_0x8fe1('0x38')];if(!_0xc551b8[_0x8fe1('0x31')][_0x8fe1('0x39')](_0x8fe1('0x50'))){_0x50f86[_0x8fe1('0x22')]=qs[_0x8fe1('0x22')](_0xc551b8[_0x8fe1('0x31')][_0x8fe1('0x22')]);_0x50f86['offset']=qs[_0x8fe1('0x20')](_0xc551b8[_0x8fe1('0x31')][_0x8fe1('0x20')]);}return _0x36c2d4['getConfigurations'](_0x50f86);}})['then'](function(_0x643bb1){if(_0x643bb1){return _0x643bb1?{'count':_0x399d6c,'rows':_0x643bb1}:null;}})[_0x8fe1('0x28')](respondWithResult(_0x6c7b55,null))[_0x8fe1('0x45')](handleError(_0x6c7b55,null));};exports[_0x8fe1('0x51')]=function(_0xc93cdb,_0x15c258,_0x616955){if(_0xc93cdb['body']['id']){delete _0xc93cdb[_0x8fe1('0x4c')]['id'];}return db[_0x8fe1('0x2d')][_0x8fe1('0x52')]({'where':{'id':_0xc93cdb['params']['id']}})[_0x8fe1('0x28')](handleEntityNotFound(_0x15c258,null))[_0x8fe1('0x28')](function(_0x355af4){if(_0x355af4){_0xc93cdb['body'][_0x8fe1('0x53')]=_0x355af4['id'];_0xc93cdb[_0x8fe1('0x4c')][_0x8fe1('0x54')]=integrations[_0x8fe1('0x55')](_0xc93cdb[_0x8fe1('0x4c')][_0x8fe1('0x56')],_0xc93cdb[_0x8fe1('0x4c')][_0x8fe1('0x2e')]);_0xc93cdb[_0x8fe1('0x4c')]['Descriptions']=integrations[_0x8fe1('0x57')](_0xc93cdb[_0x8fe1('0x4c')][_0x8fe1('0x56')],_0xc93cdb[_0x8fe1('0x4c')]['type']);return db[_0x8fe1('0x4f')][_0x8fe1('0x4b')](_0xc93cdb[_0x8fe1('0x4c')],{'include':[{'model':db[_0x8fe1('0x58')],'as':_0x8fe1('0x54')},{'model':db[_0x8fe1('0x58')],'as':_0x8fe1('0x59')}]});}return null;})[_0x8fe1('0x28')](respondWithResult(_0x15c258,null))[_0x8fe1('0x45')](handleError(_0x15c258,null));};exports[_0x8fe1('0x5a')]=function(_0x22e366,_0xcb9836,_0xf822e4){var _0x1551a0='';var _0x21781c=['id','name',_0x8fe1('0x5b'),_0x8fe1('0x5c'),'description',_0x8fe1('0x5d'),_0x8fe1('0x5e'),'duration_minutes',_0x8fe1('0x5f'),'parent_type','parent_name',_0x8fe1('0x60')];return db[_0x8fe1('0x2d')][_0x8fe1('0x52')]({'where':{'id':_0x22e366[_0x8fe1('0x47')]['id']},'attributes':['id',_0x8fe1('0x61'),_0x8fe1('0x62'),'remoteUri']})['then'](handleEntityNotFound(_0xcb9836,null))[_0x8fe1('0x28')](function(_0x2a92cf){if(_0x2a92cf){_0x1551a0=_0x2a92cf['remoteUri'];var _0x2f7943=_0x1551a0[_0x8fe1('0x63')](-0x1);if(_0x2f7943==='/'){_0x1551a0=_0x1551a0[_0x8fe1('0x64')](0x0,_0x1551a0[_0x8fe1('0x65')](_0x2f7943));}return rp({'method':_0x8fe1('0x66'),'uri':util['format'](_0x8fe1('0x67'),_0x1551a0,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0x8fe1('0x68'),'input_type':_0x8fe1('0x69'),'response_type':_0x8fe1('0x69'),'rest_data':JSON[_0x8fe1('0x6a')]({'user_auth':{'user_name':_0x2a92cf[_0x8fe1('0x61')],'password':_0x2a92cf['password'],'encryption':_0x8fe1('0x6b')},'application':_0x8fe1('0x6c')})}});}})[_0x8fe1('0x28')](function(_0x591ec4){if(_0x591ec4&&_0x591ec4[_0x8fe1('0x30')]!==_0x8fe1('0x6d')&&_0x591ec4[_0x8fe1('0x30')]!=='Password\x20Expired'){return rp({'method':_0x8fe1('0x66'),'uri':util[_0x8fe1('0x6e')]('%s%s',_0x1551a0,'/service/v4_1/rest.php'),'json':!![],'form':{'method':'get_module_fields','input_type':_0x8fe1('0x69'),'response_type':_0x8fe1('0x69'),'rest_data':JSON[_0x8fe1('0x6a')]({'session':_0x591ec4['id'],'module_name':_0x8fe1('0x6f')})}})[_0x8fe1('0x28')](function(_0x8372c6){if(_0x8372c6){var _0x5a33f6=_[_0x8fe1('0x70')](_0x8372c6['module_fields']);_[_0x8fe1('0x71')](_0x5a33f6,function(_0x4945bc){return _0x21781c[_0x8fe1('0x72')](_0x4945bc[_0x8fe1('0x30')]);});return{'count':_0x5a33f6[_0x8fe1('0x38')],'rows':_[_0x8fe1('0x3f')](_0x5a33f6,function(_0x2f2428){return{'id':_0x2f2428['name'],'name':_0x2f2428[_0x8fe1('0x73')],'custom':_['endsWith'](_0x2f2428[_0x8fe1('0x30')],'_c')?!![]:![],'options':_0x2f2428[_0x8fe1('0x42')]?_[_0x8fe1('0x3f')](_['values'](_0x2f2428[_0x8fe1('0x42')]),function(_0x116f25){return{'name':_0x116f25[_0x8fe1('0x74')],'value':_0x116f25[_0x8fe1('0x30')]};}):[]};})};}})[_0x8fe1('0x28')](respondWithResult(_0xcb9836,null))[_0x8fe1('0x45')](function(_0x819ff){var _0x5bb126=_0x22e366['query']['test']?0x1f4:_0x819ff['statusCode']||0x1f4;logger['error'](_0x8fe1('0x75'),_0x8fe1('0x5a'),_0x5bb126,JSON['stringify'](_0x819ff));delete _0x819ff[_0x8fe1('0x30')];if(_0x5bb126===0x191){_0x5bb126=0x190;}_0xcb9836[_0x8fe1('0x1f')](_0x5bb126)[_0x8fe1('0x2c')](_0x22e366[_0x8fe1('0x31')][_0x8fe1('0x76')]?{'message':_0x8fe1('0x77'),'statusCode':_0x819ff[_0x8fe1('0x78')]}:_0x819ff);});}else{var _0x45e155=0x1f4;_0xcb9836[_0x8fe1('0x1f')](_0x45e155)[_0x8fe1('0x2c')]({'message':_0x8fe1('0x77'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0xe349=['password','remoteUri','slice','lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php','login','JSON','stringify','PLAIN','Invalid\x20Login','Password\x20Expired','values','module_fields','remove','includes','label','endsWith','value','statusCode','error','test','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','destroy','then','stack','name','send','map','SugarcrmAccount','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','where','type','merge','options','includeAll','findAll','rows','catch','show','params','include','find','create','update','body','getConfigurations','SugarcrmConfiguration','pick','addConfiguration','findOne','AccountId','getSubjects','Descriptions','getDescriptions','channel','SugarcrmField','getFields','assigned_user_id','created_by','description','date_start','duration_hours','duration_minutes','parent_id','parent_type','parent_name','username'];(function(_0x475191,_0x5bce86){var _0x189e96=function(_0x46d6a2){while(--_0x46d6a2){_0x475191['push'](_0x475191['shift']());}};_0x189e96(++_0x5bce86);}(_0xe349,0x107));var _0x9e34=function(_0x1c34e7,_0x33f9a8){_0x1c34e7=_0x1c34e7-0x0;var _0x378cb1=_0xe349[_0x1c34e7];return _0x378cb1;};'use strict';var emlformat=require(_0x9e34('0x0'));var rimraf=require(_0x9e34('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9e34('0x2'));var rp=require(_0x9e34('0x3'));var moment=require(_0x9e34('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9e34('0x5'));var util=require(_0x9e34('0x6'));var path=require(_0x9e34('0x7'));var sox=require(_0x9e34('0x8'));var csv=require('to-csv');var ejs=require(_0x9e34('0x9'));var fs=require('fs');var fs_extra=require(_0x9e34('0xa'));var _=require('lodash');var squel=require(_0x9e34('0xb'));var crypto=require(_0x9e34('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x9e34('0xd'));var toCsv=require(_0x9e34('0xe'));var querystring=require(_0x9e34('0xf'));var Papa=require('papaparse');var Redis=require(_0x9e34('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9e34('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x9e34('0x12'))(_0x9e34('0x13'));var utils=require(_0x9e34('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x9e34('0x15'));var db=require(_0x9e34('0x16'))['db'];var integrations=require(_0x9e34('0x17'));function respondWithStatusCode(_0x390228,_0x29b7fc){_0x29b7fc=_0x29b7fc||0xcc;return function(_0x1aed53){if(_0x1aed53){return _0x390228[_0x9e34('0x18')](_0x29b7fc);}return _0x390228[_0x9e34('0x19')](_0x29b7fc)[_0x9e34('0x1a')]();};}function respondWithResult(_0x46714e,_0x50fd8f){_0x50fd8f=_0x50fd8f||0xc8;return function(_0x3f9730){if(_0x3f9730){return _0x46714e[_0x9e34('0x19')](_0x50fd8f)[_0x9e34('0x1b')](_0x3f9730);}};}function respondWithFilteredResult(_0x1ba415,_0x58105f){return function(_0x56d17e){if(_0x56d17e){var _0x37f585=typeof _0x58105f[_0x9e34('0x1c')]===_0x9e34('0x1d')&&typeof _0x58105f[_0x9e34('0x1e')]===_0x9e34('0x1d');var _0x246de6=_0x56d17e[_0x9e34('0x1f')];var _0x53dd0b=_0x37f585?0x0:_0x58105f[_0x9e34('0x1c')];var _0x1f37da=_0x37f585?_0x56d17e[_0x9e34('0x1f')]:_0x58105f[_0x9e34('0x1c')]+_0x58105f[_0x9e34('0x1e')];var _0x274239;if(_0x1f37da>=_0x246de6){_0x1f37da=_0x246de6;_0x274239=0xc8;}else{_0x274239=0xce;}_0x1ba415[_0x9e34('0x19')](_0x274239);return _0x1ba415['set'](_0x9e34('0x20'),_0x53dd0b+'-'+_0x1f37da+'/'+_0x246de6)[_0x9e34('0x1b')](_0x56d17e);}return null;};}function patchUpdates(_0x3ffb79){return function(_0x39148a){try{jsonpatch[_0x9e34('0x21')](_0x39148a,_0x3ffb79,!![]);}catch(_0x199000){return BPromise[_0x9e34('0x22')](_0x199000);}return _0x39148a[_0x9e34('0x23')]();};}function saveUpdates(_0x284f59,_0x5823cc){return function(_0x387236){if(_0x387236){return _0x387236['update'](_0x284f59)['then'](function(_0x249abb){return _0x249abb;});}return null;};}function removeEntity(_0x54238d,_0x17f078){return function(_0x3313c6){if(_0x3313c6){return _0x3313c6[_0x9e34('0x24')]()[_0x9e34('0x25')](function(){_0x54238d[_0x9e34('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x567f70,_0x13b556){return function(_0x495922){if(!_0x495922){_0x567f70[_0x9e34('0x18')](0x194);}return _0x495922;};}function handleError(_0x310bb2,_0x13d274){_0x13d274=_0x13d274||0x1f4;return function(_0x3c9c61){logger['error'](_0x3c9c61[_0x9e34('0x26')]);if(_0x3c9c61['name']){delete _0x3c9c61[_0x9e34('0x27')];}_0x310bb2['status'](_0x13d274)[_0x9e34('0x28')](_0x3c9c61);};}exports['index']=function(_0x25a439,_0x2b9adf){var _0x26135f={},_0x23fe2b={},_0x5f01b8={'count':0x0,'rows':[]};var _0x1e48bd=_[_0x9e34('0x29')](db[_0x9e34('0x2a')][_0x9e34('0x2b')],function(_0x1eab3a){return{'name':_0x1eab3a['fieldName'],'type':_0x1eab3a['type'][_0x9e34('0x2c')]};});_0x23fe2b[_0x9e34('0x2d')]=_[_0x9e34('0x29')](_0x1e48bd,'name');_0x23fe2b[_0x9e34('0x2e')]=_[_0x9e34('0x2f')](_0x25a439[_0x9e34('0x2e')]);_0x23fe2b[_0x9e34('0x30')]=_[_0x9e34('0x31')](_0x23fe2b['model'],_0x23fe2b[_0x9e34('0x2e')]);_0x26135f[_0x9e34('0x32')]=_[_0x9e34('0x31')](_0x23fe2b[_0x9e34('0x2d')],qs[_0x9e34('0x33')](_0x25a439[_0x9e34('0x2e')][_0x9e34('0x33')]));_0x26135f[_0x9e34('0x32')]=_0x26135f['attributes'][_0x9e34('0x34')]?_0x26135f[_0x9e34('0x32')]:_0x23fe2b[_0x9e34('0x2d')];if(!_0x25a439[_0x9e34('0x2e')][_0x9e34('0x35')](_0x9e34('0x36'))){_0x26135f[_0x9e34('0x1e')]=qs[_0x9e34('0x1e')](_0x25a439[_0x9e34('0x2e')][_0x9e34('0x1e')]);_0x26135f[_0x9e34('0x1c')]=qs[_0x9e34('0x1c')](_0x25a439[_0x9e34('0x2e')][_0x9e34('0x1c')]);}_0x26135f['order']=qs[_0x9e34('0x37')](_0x25a439[_0x9e34('0x2e')][_0x9e34('0x37')]);_0x26135f['where']=qs['filters'](_['pick'](_0x25a439[_0x9e34('0x2e')],_0x23fe2b[_0x9e34('0x30')]),_0x1e48bd);if(_0x25a439[_0x9e34('0x2e')][_0x9e34('0x38')]){_0x26135f[_0x9e34('0x39')]=_['merge'](_0x26135f[_0x9e34('0x39')],{'$or':_[_0x9e34('0x29')](_0x1e48bd,function(_0x2b9b90){if(_0x2b9b90[_0x9e34('0x3a')]!=='VIRTUAL'){var _0x3e03f4={};_0x3e03f4[_0x2b9b90['name']]={'$like':'%'+_0x25a439[_0x9e34('0x2e')]['filter']+'%'};return _0x3e03f4;}})});}_0x26135f=_[_0x9e34('0x3b')]({},_0x26135f,_0x25a439[_0x9e34('0x3c')]);var _0x329ddd={'where':_0x26135f[_0x9e34('0x39')]};return db[_0x9e34('0x2a')][_0x9e34('0x1f')](_0x329ddd)[_0x9e34('0x25')](function(_0x15fc8b){_0x5f01b8[_0x9e34('0x1f')]=_0x15fc8b;if(_0x25a439[_0x9e34('0x2e')][_0x9e34('0x3d')]){_0x26135f['include']=[{'all':!![]}];}return db[_0x9e34('0x2a')][_0x9e34('0x3e')](_0x26135f);})[_0x9e34('0x25')](function(_0xd6156d){_0x5f01b8[_0x9e34('0x3f')]=_0xd6156d;return _0x5f01b8;})[_0x9e34('0x25')](respondWithFilteredResult(_0x2b9adf,_0x26135f))[_0x9e34('0x40')](handleError(_0x2b9adf,null));};exports[_0x9e34('0x41')]=function(_0x45ebe6,_0x53cc80){var _0x13318a={'raw':![],'where':{'id':_0x45ebe6[_0x9e34('0x42')]['id']}},_0x5d576e={};_0x5d576e[_0x9e34('0x2d')]=_['keys'](db['SugarcrmAccount']['rawAttributes']);_0x5d576e[_0x9e34('0x2e')]=_[_0x9e34('0x2f')](_0x45ebe6[_0x9e34('0x2e')]);_0x5d576e[_0x9e34('0x30')]=_[_0x9e34('0x31')](_0x5d576e[_0x9e34('0x2d')],_0x5d576e[_0x9e34('0x2e')]);_0x13318a['attributes']=_[_0x9e34('0x31')](_0x5d576e[_0x9e34('0x2d')],qs['fields'](_0x45ebe6['query'][_0x9e34('0x33')]));_0x13318a[_0x9e34('0x32')]=_0x13318a[_0x9e34('0x32')]['length']?_0x13318a[_0x9e34('0x32')]:_0x5d576e[_0x9e34('0x2d')];if(_0x45ebe6['query'][_0x9e34('0x3d')]){_0x13318a[_0x9e34('0x43')]=[{'all':!![]}];}_0x13318a=_[_0x9e34('0x3b')]({},_0x13318a,_0x45ebe6[_0x9e34('0x3c')]);return db['SugarcrmAccount'][_0x9e34('0x44')](_0x13318a)[_0x9e34('0x25')](handleEntityNotFound(_0x53cc80,null))['then'](respondWithResult(_0x53cc80,null))[_0x9e34('0x40')](handleError(_0x53cc80,null));};exports[_0x9e34('0x45')]=function(_0x3bf177,_0x243792){return db[_0x9e34('0x2a')][_0x9e34('0x45')](_0x3bf177['body'],{})[_0x9e34('0x25')](respondWithResult(_0x243792,0xc9))[_0x9e34('0x40')](handleError(_0x243792,null));};exports[_0x9e34('0x46')]=function(_0x35f012,_0x105cc9){if(_0x35f012[_0x9e34('0x47')]['id']){delete _0x35f012[_0x9e34('0x47')]['id'];}return db[_0x9e34('0x2a')][_0x9e34('0x44')]({'where':{'id':_0x35f012[_0x9e34('0x42')]['id']}})['then'](handleEntityNotFound(_0x105cc9,null))[_0x9e34('0x25')](saveUpdates(_0x35f012['body'],null))[_0x9e34('0x25')](respondWithResult(_0x105cc9,null))['catch'](handleError(_0x105cc9,null));};exports['destroy']=function(_0xc60d09,_0x5ed69b){return db['SugarcrmAccount']['find']({'where':{'id':_0xc60d09[_0x9e34('0x42')]['id']}})[_0x9e34('0x25')](handleEntityNotFound(_0x5ed69b,null))[_0x9e34('0x25')](removeEntity(_0x5ed69b,null))['catch'](handleError(_0x5ed69b,null));};exports[_0x9e34('0x48')]=function(_0x5e61e1,_0x293f57,_0x158152){var _0x1b5220={};var _0x47112e={};var _0x520115;var _0xe06678;return db[_0x9e34('0x2a')]['findOne']({'where':{'id':_0x5e61e1[_0x9e34('0x42')]['id']}})[_0x9e34('0x25')](handleEntityNotFound(_0x293f57,null))['then'](function(_0xfc5f8d){if(_0xfc5f8d){_0x520115=_0xfc5f8d;_0x47112e['model']=_['keys'](db[_0x9e34('0x49')][_0x9e34('0x2b')]);_0x47112e[_0x9e34('0x2e')]=_['keys'](_0x5e61e1[_0x9e34('0x2e')]);_0x47112e[_0x9e34('0x30')]=_[_0x9e34('0x31')](_0x47112e[_0x9e34('0x2d')],_0x47112e[_0x9e34('0x2e')]);_0x1b5220[_0x9e34('0x32')]=_['intersection'](_0x47112e['model'],qs[_0x9e34('0x33')](_0x5e61e1['query']['fields']));_0x1b5220[_0x9e34('0x32')]=_0x1b5220[_0x9e34('0x32')][_0x9e34('0x34')]?_0x1b5220[_0x9e34('0x32')]:_0x47112e[_0x9e34('0x2d')];_0x1b5220['order']=qs[_0x9e34('0x37')](_0x5e61e1[_0x9e34('0x2e')][_0x9e34('0x37')]);_0x1b5220[_0x9e34('0x39')]=qs[_0x9e34('0x30')](_[_0x9e34('0x4a')](_0x5e61e1[_0x9e34('0x2e')],_0x47112e[_0x9e34('0x30')]));if(_0x5e61e1[_0x9e34('0x2e')][_0x9e34('0x38')]){_0x1b5220[_0x9e34('0x39')]=_[_0x9e34('0x3b')](_0x1b5220['where'],{'$or':_[_0x9e34('0x29')](_0x1b5220[_0x9e34('0x32')],function(_0x275514){var _0x48843b={};_0x48843b[_0x275514]={'$like':'%'+_0x5e61e1[_0x9e34('0x2e')][_0x9e34('0x38')]+'%'};return _0x48843b;})});}_0x1b5220=_['merge']({},_0x1b5220,_0x5e61e1[_0x9e34('0x3c')]);return _0x520115[_0x9e34('0x48')](_0x1b5220);}})[_0x9e34('0x25')](function(_0x42ed51){if(_0x42ed51){_0xe06678=_0x42ed51[_0x9e34('0x34')];if(!_0x5e61e1[_0x9e34('0x2e')][_0x9e34('0x35')](_0x9e34('0x36'))){_0x1b5220[_0x9e34('0x1e')]=qs[_0x9e34('0x1e')](_0x5e61e1[_0x9e34('0x2e')][_0x9e34('0x1e')]);_0x1b5220[_0x9e34('0x1c')]=qs[_0x9e34('0x1c')](_0x5e61e1[_0x9e34('0x2e')][_0x9e34('0x1c')]);}return _0x520115['getConfigurations'](_0x1b5220);}})[_0x9e34('0x25')](function(_0x20be34){if(_0x20be34){return _0x20be34?{'count':_0xe06678,'rows':_0x20be34}:null;}})[_0x9e34('0x25')](respondWithResult(_0x293f57,null))[_0x9e34('0x40')](handleError(_0x293f57,null));};exports[_0x9e34('0x4b')]=function(_0x12582f,_0x1ac39b,_0x2b0a29){if(_0x12582f[_0x9e34('0x47')]['id']){delete _0x12582f[_0x9e34('0x47')]['id'];}return db[_0x9e34('0x2a')][_0x9e34('0x4c')]({'where':{'id':_0x12582f[_0x9e34('0x42')]['id']}})[_0x9e34('0x25')](handleEntityNotFound(_0x1ac39b,null))[_0x9e34('0x25')](function(_0x5cca66){if(_0x5cca66){_0x12582f[_0x9e34('0x47')][_0x9e34('0x4d')]=_0x5cca66['id'];_0x12582f[_0x9e34('0x47')]['Subjects']=integrations[_0x9e34('0x4e')](_0x12582f[_0x9e34('0x47')]['channel'],_0x12582f[_0x9e34('0x47')]['type']);_0x12582f['body'][_0x9e34('0x4f')]=integrations[_0x9e34('0x50')](_0x12582f[_0x9e34('0x47')][_0x9e34('0x51')],_0x12582f['body'][_0x9e34('0x3a')]);return db['SugarcrmConfiguration'][_0x9e34('0x45')](_0x12582f[_0x9e34('0x47')],{'include':[{'model':db[_0x9e34('0x52')],'as':'Subjects'},{'model':db[_0x9e34('0x52')],'as':_0x9e34('0x4f')}]});}return null;})[_0x9e34('0x25')](respondWithResult(_0x1ac39b,null))[_0x9e34('0x40')](handleError(_0x1ac39b,null));};exports[_0x9e34('0x53')]=function(_0x487093,_0x4e2732,_0x4d3d0e){var _0x5b93f4='';var _0x18e829=['id',_0x9e34('0x27'),_0x9e34('0x54'),_0x9e34('0x55'),_0x9e34('0x56'),_0x9e34('0x57'),_0x9e34('0x58'),_0x9e34('0x59'),_0x9e34('0x5a'),_0x9e34('0x5b'),_0x9e34('0x5c'),'direction'];return db[_0x9e34('0x2a')]['findOne']({'where':{'id':_0x487093[_0x9e34('0x42')]['id']},'attributes':['id',_0x9e34('0x5d'),_0x9e34('0x5e'),_0x9e34('0x5f')]})[_0x9e34('0x25')](handleEntityNotFound(_0x4e2732,null))[_0x9e34('0x25')](function(_0x63477a){if(_0x63477a){_0x5b93f4=_0x63477a[_0x9e34('0x5f')];var _0x47942f=_0x5b93f4[_0x9e34('0x60')](-0x1);if(_0x47942f==='/'){_0x5b93f4=_0x5b93f4['substring'](0x0,_0x5b93f4[_0x9e34('0x61')](_0x47942f));}return rp({'method':_0x9e34('0x62'),'uri':util[_0x9e34('0x63')](_0x9e34('0x64'),_0x5b93f4,_0x9e34('0x65')),'json':!![],'form':{'method':_0x9e34('0x66'),'input_type':_0x9e34('0x67'),'response_type':'JSON','rest_data':JSON[_0x9e34('0x68')]({'user_auth':{'user_name':_0x63477a['username'],'password':_0x63477a[_0x9e34('0x5e')],'encryption':_0x9e34('0x69')},'application':'xCALLY\x20Motion\x20Integration'})}});}})[_0x9e34('0x25')](function(_0x398385){if(_0x398385&&_0x398385[_0x9e34('0x27')]!==_0x9e34('0x6a')&&_0x398385[_0x9e34('0x27')]!==_0x9e34('0x6b')){return rp({'method':_0x9e34('0x62'),'uri':util[_0x9e34('0x63')]('%s%s',_0x5b93f4,'/service/v4_1/rest.php'),'json':!![],'form':{'method':'get_module_fields','input_type':_0x9e34('0x67'),'response_type':_0x9e34('0x67'),'rest_data':JSON['stringify']({'session':_0x398385['id'],'module_name':'Calls'})}})[_0x9e34('0x25')](function(_0x1304cb){if(_0x1304cb){var _0x1637d6=_[_0x9e34('0x6c')](_0x1304cb[_0x9e34('0x6d')]);_[_0x9e34('0x6e')](_0x1637d6,function(_0xd59d9c){return _0x18e829[_0x9e34('0x6f')](_0xd59d9c['name']);});return{'count':_0x1637d6[_0x9e34('0x34')],'rows':_[_0x9e34('0x29')](_0x1637d6,function(_0x852a5f){return{'id':_0x852a5f[_0x9e34('0x27')],'name':_0x852a5f[_0x9e34('0x70')],'custom':_[_0x9e34('0x71')](_0x852a5f[_0x9e34('0x27')],'_c')?!![]:![],'options':_0x852a5f['options']?_[_0x9e34('0x29')](_[_0x9e34('0x6c')](_0x852a5f['options']),function(_0x445d5a){return{'name':_0x445d5a[_0x9e34('0x72')],'value':_0x445d5a[_0x9e34('0x27')]};}):[]};})};}})['then'](respondWithResult(_0x4e2732,null))[_0x9e34('0x40')](function(_0x3ac154){var _0x7c1ced=_0x487093['query']['test']?0x1f4:_0x3ac154[_0x9e34('0x73')]||0x1f4;logger[_0x9e34('0x74')]('getFields,\x20%s,\x20%s,\x20%s',_0x9e34('0x53'),_0x7c1ced,JSON[_0x9e34('0x68')](_0x3ac154));delete _0x3ac154[_0x9e34('0x27')];if(_0x7c1ced===0x191){_0x7c1ced=0x190;}_0x4e2732[_0x9e34('0x19')](_0x7c1ced)[_0x9e34('0x28')](_0x487093[_0x9e34('0x2e')][_0x9e34('0x75')]?{'message':_0x9e34('0x76'),'statusCode':_0x3ac154[_0x9e34('0x73')]}:_0x3ac154);});}else{var _0x17ce0b=0x1f4;_0x4e2732[_0x9e34('0x19')](_0x17ce0b)[_0x9e34('0x28')]({'message':'Wrong\x20credentials','statusCode':0x190});}});};
\ No newline at end of file
index 08374e5..4a54d25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf2f=['SugarcrmAccount','int_sugarcrm_accounts','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define'];(function(_0x101bc7,_0x4455b7){var _0x517cd0=function(_0xc6d500){while(--_0xc6d500){_0x101bc7['push'](_0x101bc7['shift']());}};_0x517cd0(++_0x4455b7);}(_0xcf2f,0xa7));var _0xfcf2=function(_0x33229a,_0x4c6b07){_0x33229a=_0x33229a-0x0;var _0x11d3ec=_0xcf2f[_0x33229a];return _0x11d3ec;};'use strict';var _=require(_0xfcf2('0x0'));var util=require(_0xfcf2('0x1'));var logger=require(_0xfcf2('0x2'))(_0xfcf2('0x3'));var moment=require(_0xfcf2('0x4'));var BPromise=require('bluebird');var rp=require(_0xfcf2('0x5'));var fs=require('fs');var path=require(_0xfcf2('0x6'));var rimraf=require(_0xfcf2('0x7'));var config=require(_0xfcf2('0x8'));var attributes=require(_0xfcf2('0x9'));var integrations=require(_0xfcf2('0xa'));module[_0xfcf2('0xb')]=function(_0x3a4950,_0x41d4bd){return _0x3a4950[_0xfcf2('0xc')](_0xfcf2('0xd'),attributes,{'tableName':_0xfcf2('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2ea1=['../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','define','SugarcrmAccount','int_sugarcrm_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x314079,_0x2b98a0){var _0x423351=function(_0x501dcc){while(--_0x501dcc){_0x314079['push'](_0x314079['shift']());}};_0x423351(++_0x2b98a0);}(_0x2ea1,0xca));var _0x12ea=function(_0x149bb2,_0x5510a1){_0x149bb2=_0x149bb2-0x0;var _0x4700a2=_0x2ea1[_0x149bb2];return _0x4700a2;};'use strict';var _=require(_0x12ea('0x0'));var util=require(_0x12ea('0x1'));var logger=require(_0x12ea('0x2'))(_0x12ea('0x3'));var moment=require(_0x12ea('0x4'));var BPromise=require(_0x12ea('0x5'));var rp=require(_0x12ea('0x6'));var fs=require('fs');var path=require(_0x12ea('0x7'));var rimraf=require('rimraf');var config=require(_0x12ea('0x8'));var attributes=require(_0x12ea('0x9'));var integrations=require(_0x12ea('0xa'));module['exports']=function(_0x132217,_0x242d90){return _0x132217[_0x12ea('0xb')](_0x12ea('0xc'),attributes,{'tableName':_0x12ea('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d9dc889..cb1f1a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61c0=['lodash','util','moment','bluebird','randomstring','ioredis','rpc','jayson/promise','http','request','then','info','SugarcrmAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','catch','GetSugarcrmAccount','options','raw','where','include','map','model','attributes','ShowSugarcrmAccount','SugarcrmAccount','find'];(function(_0x130313,_0x3fcbc3){var _0x17ba72=function(_0xbca484){while(--_0xbca484){_0x130313['push'](_0x130313['shift']());}};_0x17ba72(++_0x3fcbc3);}(_0x61c0,0x174));var _0x061c=function(_0x27df71,_0x52d799){_0x27df71=_0x27df71-0x0;var _0x707e4e=_0x61c0[_0x27df71];return _0x707e4e;};'use strict';var _=require(_0x061c('0x0'));var util=require(_0x061c('0x1'));var moment=require(_0x061c('0x2'));var BPromise=require(_0x061c('0x3'));var rs=require(_0x061c('0x4'));var fs=require('fs');var Redis=require(_0x061c('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x061c('0x6'));var config=require('../../config/environment');var jayson=require(_0x061c('0x7'));var client=jayson['client'][_0x061c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x32928f,_0x24e5d2,_0xe9de11){return new BPromise(function(_0x248b0,_0x155284){return client[_0x061c('0x9')](_0x32928f,_0xe9de11)[_0x061c('0xa')](function(_0x4fc5be){logger[_0x061c('0xb')](_0x061c('0xc'),_0x24e5d2,'request\x20sent');logger[_0x061c('0xd')]('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x24e5d2,_0x061c('0xe'),JSON[_0x061c('0xf')](_0x4fc5be));if(_0x4fc5be['error']){if(_0x4fc5be['error']['code']===0x1f4){logger['error']('SugarcrmAccount,\x20%s,\x20%s',_0x24e5d2,_0x4fc5be[_0x061c('0x10')][_0x061c('0x11')]);return _0x155284(_0x4fc5be['error'][_0x061c('0x11')]);}logger[_0x061c('0x10')](_0x061c('0xc'),_0x24e5d2,_0x4fc5be[_0x061c('0x10')][_0x061c('0x11')]);return _0x248b0(_0x4fc5be[_0x061c('0x10')][_0x061c('0x11')]);}else{logger[_0x061c('0xb')](_0x061c('0xc'),_0x24e5d2,'request\x20sent');_0x248b0(_0x4fc5be[_0x061c('0x12')]['message']);}})[_0x061c('0x13')](function(_0x2abd88){logger['error'](_0x061c('0xc'),_0x24e5d2,_0x2abd88);_0x155284(_0x2abd88);});});}exports[_0x061c('0x14')]=function(_0x5e0a8f){var _0x704d78=this;return new Promise(function(_0x490f38,_0x11a267){return db['SugarcrmAccount']['findAll']({'raw':_0x5e0a8f[_0x061c('0x15')]?_0x5e0a8f[_0x061c('0x15')][_0x061c('0x16')]===undefined?!![]:![]:!![],'where':_0x5e0a8f[_0x061c('0x15')]?_0x5e0a8f[_0x061c('0x15')][_0x061c('0x17')]||null:null,'attributes':_0x5e0a8f[_0x061c('0x15')]?_0x5e0a8f[_0x061c('0x15')]['attributes']||null:null,'limit':_0x5e0a8f['options']?_0x5e0a8f[_0x061c('0x15')]['limit']||null:null,'include':_0x5e0a8f[_0x061c('0x15')]?_0x5e0a8f['options'][_0x061c('0x18')]?_[_0x061c('0x19')](_0x5e0a8f[_0x061c('0x15')][_0x061c('0x18')],function(_0x1464f6){return{'model':db[_0x1464f6[_0x061c('0x1a')]],'as':_0x1464f6['as'],'attributes':_0x1464f6['attributes'],'include':_0x1464f6[_0x061c('0x18')]?_[_0x061c('0x19')](_0x1464f6['include'],function(_0xd286dc){return{'model':db[_0xd286dc[_0x061c('0x1a')]],'as':_0xd286dc['as'],'attributes':_0xd286dc['attributes'],'include':_0xd286dc['include']?_[_0x061c('0x19')](_0xd286dc[_0x061c('0x18')],function(_0x4e957c){return{'model':db[_0x4e957c[_0x061c('0x1a')]],'as':_0x4e957c['as'],'attributes':_0x4e957c[_0x061c('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x061c('0xa')](function(_0x31380a){logger['info'](_0x061c('0x14'),_0x5e0a8f);logger[_0x061c('0xd')](_0x061c('0x14'),_0x5e0a8f,JSON[_0x061c('0xf')](_0x31380a));_0x490f38(_0x31380a);})['catch'](function(_0x1b80d2){logger['error'](_0x061c('0x14'),_0x1b80d2[_0x061c('0x11')],_0x5e0a8f);_0x11a267(_0x704d78[_0x061c('0x10')](0x1f4,_0x1b80d2[_0x061c('0x11')]));});});};exports[_0x061c('0x1c')]=function(_0x3e2f33){var _0x170fba=this;return new Promise(function(_0x414d54,_0x8e6ab1){return db[_0x061c('0x1d')][_0x061c('0x1e')]({'raw':_0x3e2f33['options']?_0x3e2f33[_0x061c('0x15')][_0x061c('0x16')]===undefined?!![]:![]:!![],'where':_0x3e2f33[_0x061c('0x15')]?_0x3e2f33[_0x061c('0x15')]['where']||null:null,'attributes':_0x3e2f33[_0x061c('0x15')]?_0x3e2f33[_0x061c('0x15')][_0x061c('0x1b')]||null:null,'include':_0x3e2f33[_0x061c('0x15')]?_0x3e2f33[_0x061c('0x15')][_0x061c('0x18')]?_[_0x061c('0x19')](_0x3e2f33[_0x061c('0x15')][_0x061c('0x18')],function(_0x382959){return{'model':db[_0x382959['model']],'as':_0x382959['as'],'attributes':_0x382959[_0x061c('0x1b')],'include':_0x382959[_0x061c('0x18')]?_[_0x061c('0x19')](_0x382959[_0x061c('0x18')],function(_0x35bf02){return{'model':db[_0x35bf02['model']],'as':_0x35bf02['as'],'attributes':_0x35bf02[_0x061c('0x1b')],'include':_0x35bf02[_0x061c('0x18')]?_[_0x061c('0x19')](_0x35bf02[_0x061c('0x18')],function(_0x4feafd){return{'model':db[_0x4feafd[_0x061c('0x1a')]],'as':_0x4feafd['as'],'attributes':_0x4feafd[_0x061c('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x061c('0xa')](function(_0x5736bc){logger[_0x061c('0xb')](_0x061c('0x1c'),_0x3e2f33);logger[_0x061c('0xd')]('ShowSugarcrmAccount',_0x3e2f33,JSON[_0x061c('0xf')](_0x5736bc));_0x414d54(_0x5736bc);})[_0x061c('0x13')](function(_0x4be4d1){logger['error'](_0x061c('0x1c'),_0x4be4d1[_0x061c('0x11')],_0x3e2f33);_0x8e6ab1(_0x170fba[_0x061c('0x10')](0x1f4,_0x4be4d1[_0x061c('0x11')]));});});};
\ No newline at end of file
+var _0x0a28=['error','code','message','result','SugarcrmAccount','findAll','options','where','attributes','limit','model','include','map','GetSugarcrmAccount','ShowSugarcrmAccount','find','raw','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','client','http','request','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x0a28,0x122));var _0x80a2=function(_0x67c4,_0x1d47fe){_0x67c4=_0x67c4-0x0;var _0x1ffd99=_0x0a28[_0x67c4];return _0x1ffd99;};'use strict';var _=require(_0x80a2('0x0'));var util=require('util');var moment=require(_0x80a2('0x1'));var BPromise=require(_0x80a2('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x80a2('0x3'));var db=require(_0x80a2('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x80a2('0x5'))(_0x80a2('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x80a2('0x7')][_0x80a2('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x61ad65,_0x526183,_0x349b79){return new BPromise(function(_0x40af92,_0x539aba){return client[_0x80a2('0x9')](_0x61ad65,_0x349b79)[_0x80a2('0xa')](function(_0x18855b){logger[_0x80a2('0xb')](_0x80a2('0xc'),_0x526183,_0x80a2('0xd'));logger[_0x80a2('0xe')]('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x526183,_0x80a2('0xd'),JSON[_0x80a2('0xf')](_0x18855b));if(_0x18855b[_0x80a2('0x10')]){if(_0x18855b[_0x80a2('0x10')][_0x80a2('0x11')]===0x1f4){logger[_0x80a2('0x10')](_0x80a2('0xc'),_0x526183,_0x18855b[_0x80a2('0x10')][_0x80a2('0x12')]);return _0x539aba(_0x18855b[_0x80a2('0x10')][_0x80a2('0x12')]);}logger[_0x80a2('0x10')](_0x80a2('0xc'),_0x526183,_0x18855b[_0x80a2('0x10')][_0x80a2('0x12')]);return _0x40af92(_0x18855b[_0x80a2('0x10')][_0x80a2('0x12')]);}else{logger[_0x80a2('0xb')](_0x80a2('0xc'),_0x526183,'request\x20sent');_0x40af92(_0x18855b[_0x80a2('0x13')][_0x80a2('0x12')]);}})['catch'](function(_0x57999d){logger[_0x80a2('0x10')](_0x80a2('0xc'),_0x526183,_0x57999d);_0x539aba(_0x57999d);});});}exports['GetSugarcrmAccount']=function(_0x10c8f4){var _0x2916bd=this;return new Promise(function(_0x467f33,_0x502e47){return db[_0x80a2('0x14')][_0x80a2('0x15')]({'raw':_0x10c8f4['options']?_0x10c8f4['options']['raw']===undefined?!![]:![]:!![],'where':_0x10c8f4[_0x80a2('0x16')]?_0x10c8f4[_0x80a2('0x16')][_0x80a2('0x17')]||null:null,'attributes':_0x10c8f4['options']?_0x10c8f4[_0x80a2('0x16')][_0x80a2('0x18')]||null:null,'limit':_0x10c8f4[_0x80a2('0x16')]?_0x10c8f4[_0x80a2('0x16')][_0x80a2('0x19')]||null:null,'include':_0x10c8f4[_0x80a2('0x16')]?_0x10c8f4[_0x80a2('0x16')]['include']?_['map'](_0x10c8f4[_0x80a2('0x16')]['include'],function(_0x2e1004){return{'model':db[_0x2e1004[_0x80a2('0x1a')]],'as':_0x2e1004['as'],'attributes':_0x2e1004[_0x80a2('0x18')],'include':_0x2e1004[_0x80a2('0x1b')]?_[_0x80a2('0x1c')](_0x2e1004[_0x80a2('0x1b')],function(_0x5cc297){return{'model':db[_0x5cc297['model']],'as':_0x5cc297['as'],'attributes':_0x5cc297[_0x80a2('0x18')],'include':_0x5cc297['include']?_[_0x80a2('0x1c')](_0x5cc297[_0x80a2('0x1b')],function(_0x3656bc){return{'model':db[_0x3656bc[_0x80a2('0x1a')]],'as':_0x3656bc['as'],'attributes':_0x3656bc['attributes']};}):[]};}):[]};}):[]:[]})[_0x80a2('0xa')](function(_0x2fb909){logger[_0x80a2('0xb')](_0x80a2('0x1d'),_0x10c8f4);logger['debug'](_0x80a2('0x1d'),_0x10c8f4,JSON[_0x80a2('0xf')](_0x2fb909));_0x467f33(_0x2fb909);})['catch'](function(_0x533ddf){logger['error']('GetSugarcrmAccount',_0x533ddf['message'],_0x10c8f4);_0x502e47(_0x2916bd[_0x80a2('0x10')](0x1f4,_0x533ddf[_0x80a2('0x12')]));});});};exports[_0x80a2('0x1e')]=function(_0x2cf97f){var _0xbd651d=this;return new Promise(function(_0x222e40,_0x2d7029){return db[_0x80a2('0x14')][_0x80a2('0x1f')]({'raw':_0x2cf97f[_0x80a2('0x16')]?_0x2cf97f[_0x80a2('0x16')][_0x80a2('0x20')]===undefined?!![]:![]:!![],'where':_0x2cf97f[_0x80a2('0x16')]?_0x2cf97f['options']['where']||null:null,'attributes':_0x2cf97f[_0x80a2('0x16')]?_0x2cf97f[_0x80a2('0x16')][_0x80a2('0x18')]||null:null,'include':_0x2cf97f['options']?_0x2cf97f['options']['include']?_[_0x80a2('0x1c')](_0x2cf97f[_0x80a2('0x16')][_0x80a2('0x1b')],function(_0x47dc37){return{'model':db[_0x47dc37[_0x80a2('0x1a')]],'as':_0x47dc37['as'],'attributes':_0x47dc37[_0x80a2('0x18')],'include':_0x47dc37['include']?_['map'](_0x47dc37[_0x80a2('0x1b')],function(_0x8a6d71){return{'model':db[_0x8a6d71[_0x80a2('0x1a')]],'as':_0x8a6d71['as'],'attributes':_0x8a6d71['attributes'],'include':_0x8a6d71[_0x80a2('0x1b')]?_[_0x80a2('0x1c')](_0x8a6d71[_0x80a2('0x1b')],function(_0x5cecb8){return{'model':db[_0x5cecb8['model']],'as':_0x5cecb8['as'],'attributes':_0x5cecb8[_0x80a2('0x18')]};}):[]};}):[]};}):[]:[]})[_0x80a2('0xa')](function(_0x169db4){logger[_0x80a2('0xb')]('ShowSugarcrmAccount',_0x2cf97f);logger[_0x80a2('0xe')](_0x80a2('0x1e'),_0x2cf97f,JSON[_0x80a2('0xf')](_0x169db4));_0x222e40(_0x169db4);})[_0x80a2('0x21')](function(_0x30ac96){logger['error']('ShowSugarcrmAccount',_0x30ac96['message'],_0x2cf97f);_0x2d7029(_0xbd651d[_0x80a2('0x10')](0x1f4,_0x30ac96[_0x80a2('0x12')]));});});};
\ No newline at end of file
index 18f893c..611f9e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae80=['./intSugarcrmConfiguration.controller','index','get','isAuthenticated','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','create','/:id','delete','exports','multer','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x10f264,_0x5aa032){var _0x3184c5=function(_0x299e21){while(--_0x299e21){_0x10f264['push'](_0x10f264['shift']());}};_0x3184c5(++_0x5aa032);}(_0xae80,0x1e8));var _0x0ae8=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xae80[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0ae8('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x0ae8('0x1'));var express=require('express');var router=express[_0x0ae8('0x2')]();var fs_extra=require(_0x0ae8('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x0ae8('0x4'));var config=require(_0x0ae8('0x5'));var controller=require(_0x0ae8('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x0ae8('0x7')]);router[_0x0ae8('0x8')]('/:id',auth[_0x0ae8('0x9')](),controller['show']);router[_0x0ae8('0x8')](_0x0ae8('0xa'),auth[_0x0ae8('0x9')](),controller['getFields']);router[_0x0ae8('0x8')](_0x0ae8('0xb'),auth[_0x0ae8('0x9')](),controller[_0x0ae8('0xc')]);router['get'](_0x0ae8('0xd'),auth[_0x0ae8('0x9')](),controller[_0x0ae8('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x0ae8('0xf')]);router['put'](_0x0ae8('0x10'),auth[_0x0ae8('0x9')](),controller['update']);router[_0x0ae8('0x11')](_0x0ae8('0x10'),auth[_0x0ae8('0x9')](),controller['destroy']);module[_0x0ae8('0x12')]=router;
\ No newline at end of file
+var _0x8bcc=['index','/:id','show','/:id/fields','getSubjects','/:id/descriptions','getDescriptions','post','create','put','update','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated'];(function(_0x30c2ae,_0x4c98a2){var _0x1ee1cc=function(_0x165922){while(--_0x165922){_0x30c2ae['push'](_0x30c2ae['shift']());}};_0x1ee1cc(++_0x4c98a2);}(_0x8bcc,0x1b6));var _0xc8bc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8bcc[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xc8bc('0x0'));var util=require(_0xc8bc('0x1'));var path=require('path');var timeout=require(_0xc8bc('0x2'));var express=require(_0xc8bc('0x3'));var router=express[_0xc8bc('0x4')]();var fs_extra=require(_0xc8bc('0x5'));var auth=require(_0xc8bc('0x6'));var interaction=require(_0xc8bc('0x7'));var config=require(_0xc8bc('0x8'));var controller=require(_0xc8bc('0x9'));router[_0xc8bc('0xa')]('/',auth[_0xc8bc('0xb')](),controller[_0xc8bc('0xc')]);router[_0xc8bc('0xa')](_0xc8bc('0xd'),auth[_0xc8bc('0xb')](),controller[_0xc8bc('0xe')]);router[_0xc8bc('0xa')](_0xc8bc('0xf'),auth[_0xc8bc('0xb')](),controller['getFields']);router['get']('/:id/subjects',auth[_0xc8bc('0xb')](),controller[_0xc8bc('0x10')]);router[_0xc8bc('0xa')](_0xc8bc('0x11'),auth['isAuthenticated'](),controller[_0xc8bc('0x12')]);router[_0xc8bc('0x13')]('/',auth[_0xc8bc('0xb')](),controller[_0xc8bc('0x14')]);router[_0xc8bc('0x15')](_0xc8bc('0xd'),auth[_0xc8bc('0xb')](),controller[_0xc8bc('0x16')]);router[_0xc8bc('0x17')](_0xc8bc('0xd'),auth[_0xc8bc('0xb')](),controller[_0xc8bc('0x18')]);module['exports']=router;
\ No newline at end of file
index 5446b99..d234842 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe328=['STRING','sequelize','exports'];(function(_0x1db8eb,_0x509199){var _0x1d9b1d=function(_0x4a3d79){while(--_0x4a3d79){_0x1db8eb['push'](_0x1db8eb['shift']());}};_0x1d9b1d(++_0x509199);}(_0xe328,0x1e1));var _0x8e32=function(_0x48d550,_0xcc3e02){_0x48d550=_0x48d550-0x0;var _0x1755ce=_0xe328[_0x48d550];return _0x1755ce;};'use strict';var Sequelize=require(_0x8e32('0x0'));module[_0x8e32('0x1')]={'name':{'type':Sequelize[_0x8e32('0x2')]},'description':{'type':Sequelize[_0x8e32('0x2')]}};
\ No newline at end of file
+var _0xea66=['STRING','exports'];(function(_0x5e3204,_0x23a83a){var _0x1f010d=function(_0x36ba7c){while(--_0x36ba7c){_0x5e3204['push'](_0x5e3204['shift']());}};_0x1f010d(++_0x23a83a);}(_0xea66,0xaf));var _0x6ea6=function(_0x1f7839,_0x2a26e6){_0x1f7839=_0x1f7839-0x0;var _0x36b42e=_0xea66[_0x1f7839];return _0x36b42e;};'use strict';var Sequelize=require('sequelize');module[_0x6ea6('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x6ea6('0x1')]}};
\ No newline at end of file
index 06a6366..02c95ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8118=['offset','undefined','limit','count','set','apply','save','then','error','stack','send','index','map','rawAttributes','fieldName','model','name','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','type','VIRTUAL','options','SugarcrmConfiguration','includeAll','include','findAll','catch','show','filters','create','body','update','find','params','destroy','getFields','findOne','SugarcrmField','order','getDescriptions','rimraf','request-promise','moment','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json'];(function(_0x105a50,_0x519b07){var _0x4108cf=function(_0x136290){while(--_0x136290){_0x105a50['push'](_0x105a50['shift']());}};_0x4108cf(++_0x519b07);}(_0x8118,0x15b));var _0x8811=function(_0x1b9cd5,_0x103dc4){_0x1b9cd5=_0x1b9cd5-0x0;var _0x4c74ca=_0x8118[_0x1b9cd5];return _0x4c74ca;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8811('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x8811('0x1'));var moment=require(_0x8811('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x8811('0x3'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8811('0x4'));var _=require(_0x8811('0x5'));var squel=require(_0x8811('0x6'));var crypto=require('crypto');var jsforce=require(_0x8811('0x7'));var deskjs=require(_0x8811('0x8'));var toCsv=require(_0x8811('0x3'));var querystring=require(_0x8811('0x9'));var Papa=require(_0x8811('0xa'));var Redis=require(_0x8811('0xb'));var authService=require(_0x8811('0xc'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8811('0xd'));var logger=require(_0x8811('0xe'))('api');var utils=require(_0x8811('0xf'));var config=require(_0x8811('0x10'));var licenseUtil=require(_0x8811('0x11'));var db=require(_0x8811('0x12'))['db'];function respondWithStatusCode(_0x135a83,_0x4951fa){_0x4951fa=_0x4951fa||0xcc;return function(_0x5a0200){if(_0x5a0200){return _0x135a83[_0x8811('0x13')](_0x4951fa);}return _0x135a83[_0x8811('0x14')](_0x4951fa)[_0x8811('0x15')]();};}function respondWithResult(_0x496936,_0x390451){_0x390451=_0x390451||0xc8;return function(_0x47b7fa){if(_0x47b7fa){return _0x496936[_0x8811('0x14')](_0x390451)[_0x8811('0x16')](_0x47b7fa);}};}function respondWithFilteredResult(_0x46064f,_0x38a505){return function(_0x5beaa2){if(_0x5beaa2){var _0x58bca7=typeof _0x38a505[_0x8811('0x17')]===_0x8811('0x18')&&typeof _0x38a505[_0x8811('0x19')]===_0x8811('0x18');var _0x34e8b4=_0x5beaa2[_0x8811('0x1a')];var _0x38985b=_0x58bca7?0x0:_0x38a505[_0x8811('0x17')];var _0x2d25f2=_0x58bca7?_0x5beaa2[_0x8811('0x1a')]:_0x38a505[_0x8811('0x17')]+_0x38a505[_0x8811('0x19')];var _0x56834a;if(_0x2d25f2>=_0x34e8b4){_0x2d25f2=_0x34e8b4;_0x56834a=0xc8;}else{_0x56834a=0xce;}_0x46064f['status'](_0x56834a);return _0x46064f[_0x8811('0x1b')]('Content-Range',_0x38985b+'-'+_0x2d25f2+'/'+_0x34e8b4)[_0x8811('0x16')](_0x5beaa2);}return null;};}function patchUpdates(_0x3dc5cc){return function(_0x5a76a5){try{jsonpatch[_0x8811('0x1c')](_0x5a76a5,_0x3dc5cc,!![]);}catch(_0x203b84){return BPromise['reject'](_0x203b84);}return _0x5a76a5[_0x8811('0x1d')]();};}function saveUpdates(_0x4747a4,_0x1bcba9){return function(_0x54c07f){if(_0x54c07f){return _0x54c07f['update'](_0x4747a4)['then'](function(_0x54d94b){return _0x54d94b;});}return null;};}function removeEntity(_0x24a162,_0x404c46){return function(_0x110a07){if(_0x110a07){return _0x110a07['destroy']()[_0x8811('0x1e')](function(){_0x24a162[_0x8811('0x14')](0xcc)[_0x8811('0x15')]();});}};}function handleEntityNotFound(_0x55687a,_0x5aa52e){return function(_0x1828a7){if(!_0x1828a7){_0x55687a[_0x8811('0x13')](0x194);}return _0x1828a7;};}function handleError(_0x39c4e6,_0x161d62){_0x161d62=_0x161d62||0x1f4;return function(_0x5dded2){logger[_0x8811('0x1f')](_0x5dded2[_0x8811('0x20')]);if(_0x5dded2['name']){delete _0x5dded2['name'];}_0x39c4e6[_0x8811('0x14')](_0x161d62)[_0x8811('0x21')](_0x5dded2);};}exports[_0x8811('0x22')]=function(_0x43f71e,_0x4eca4e){var _0x326369={},_0x5e690d={},_0x86afc6={'count':0x0,'rows':[]};var _0x1d1ba0=_[_0x8811('0x23')](db['SugarcrmConfiguration'][_0x8811('0x24')],function(_0x27fb75){return{'name':_0x27fb75[_0x8811('0x25')],'type':_0x27fb75['type']['key']};});_0x5e690d[_0x8811('0x26')]=_[_0x8811('0x23')](_0x1d1ba0,_0x8811('0x27'));_0x5e690d['query']=_[_0x8811('0x28')](_0x43f71e[_0x8811('0x29')]);_0x5e690d['filters']=_[_0x8811('0x2a')](_0x5e690d[_0x8811('0x26')],_0x5e690d[_0x8811('0x29')]);_0x326369[_0x8811('0x2b')]=_[_0x8811('0x2a')](_0x5e690d[_0x8811('0x26')],qs[_0x8811('0x2c')](_0x43f71e[_0x8811('0x29')][_0x8811('0x2c')]));_0x326369[_0x8811('0x2b')]=_0x326369[_0x8811('0x2b')][_0x8811('0x2d')]?_0x326369[_0x8811('0x2b')]:_0x5e690d[_0x8811('0x26')];if(!_0x43f71e[_0x8811('0x29')][_0x8811('0x2e')](_0x8811('0x2f'))){_0x326369['limit']=qs[_0x8811('0x19')](_0x43f71e[_0x8811('0x29')][_0x8811('0x19')]);_0x326369[_0x8811('0x17')]=qs[_0x8811('0x17')](_0x43f71e[_0x8811('0x29')][_0x8811('0x17')]);}_0x326369['order']=qs[_0x8811('0x30')](_0x43f71e[_0x8811('0x29')][_0x8811('0x30')]);_0x326369['where']=qs['filters'](_[_0x8811('0x31')](_0x43f71e['query'],_0x5e690d['filters']),_0x1d1ba0);if(_0x43f71e['query'][_0x8811('0x32')]){_0x326369[_0x8811('0x33')]=_[_0x8811('0x34')](_0x326369[_0x8811('0x33')],{'$or':_['map'](_0x1d1ba0,function(_0x1cac8f){if(_0x1cac8f[_0x8811('0x35')]!==_0x8811('0x36')){var _0x368692={};_0x368692[_0x1cac8f[_0x8811('0x27')]]={'$like':'%'+_0x43f71e[_0x8811('0x29')]['filter']+'%'};return _0x368692;}})});}_0x326369=_[_0x8811('0x34')]({},_0x326369,_0x43f71e[_0x8811('0x37')]);var _0x28f4b5={'where':_0x326369[_0x8811('0x33')]};return db[_0x8811('0x38')][_0x8811('0x1a')](_0x28f4b5)[_0x8811('0x1e')](function(_0x490e99){_0x86afc6[_0x8811('0x1a')]=_0x490e99;if(_0x43f71e[_0x8811('0x29')][_0x8811('0x39')]){_0x326369[_0x8811('0x3a')]=[{'all':!![]}];}return db[_0x8811('0x38')][_0x8811('0x3b')](_0x326369);})['then'](function(_0xed127a){_0x86afc6['rows']=_0xed127a;return _0x86afc6;})[_0x8811('0x1e')](respondWithFilteredResult(_0x4eca4e,_0x326369))[_0x8811('0x3c')](handleError(_0x4eca4e,null));};exports[_0x8811('0x3d')]=function(_0xe4d433,_0x24d18b){var _0x1fe6e4={'raw':![],'where':{'id':_0xe4d433['params']['id']}},_0xe95183={};_0xe95183[_0x8811('0x26')]=_['keys'](db[_0x8811('0x38')][_0x8811('0x24')]);_0xe95183[_0x8811('0x29')]=_[_0x8811('0x28')](_0xe4d433['query']);_0xe95183[_0x8811('0x3e')]=_['intersection'](_0xe95183['model'],_0xe95183[_0x8811('0x29')]);_0x1fe6e4['attributes']=_[_0x8811('0x2a')](_0xe95183[_0x8811('0x26')],qs[_0x8811('0x2c')](_0xe4d433[_0x8811('0x29')][_0x8811('0x2c')]));_0x1fe6e4[_0x8811('0x2b')]=_0x1fe6e4[_0x8811('0x2b')][_0x8811('0x2d')]?_0x1fe6e4['attributes']:_0xe95183[_0x8811('0x26')];if(_0xe4d433['query'][_0x8811('0x39')]){_0x1fe6e4['include']=[{'all':!![]}];}_0x1fe6e4=_['merge']({},_0x1fe6e4,_0xe4d433[_0x8811('0x37')]);return db[_0x8811('0x38')]['find'](_0x1fe6e4)[_0x8811('0x1e')](handleEntityNotFound(_0x24d18b,null))[_0x8811('0x1e')](respondWithResult(_0x24d18b,null))[_0x8811('0x3c')](handleError(_0x24d18b,null));};exports[_0x8811('0x3f')]=function(_0x48b688,_0x3c4905){return db[_0x8811('0x38')][_0x8811('0x3f')](_0x48b688[_0x8811('0x40')],{})[_0x8811('0x1e')](respondWithResult(_0x3c4905,0xc9))[_0x8811('0x3c')](handleError(_0x3c4905,null));};exports[_0x8811('0x41')]=function(_0x2b49c6,_0x5a14e8){if(_0x2b49c6[_0x8811('0x40')]['id']){delete _0x2b49c6[_0x8811('0x40')]['id'];}return db[_0x8811('0x38')][_0x8811('0x42')]({'where':{'id':_0x2b49c6[_0x8811('0x43')]['id']}})[_0x8811('0x1e')](handleEntityNotFound(_0x5a14e8,null))[_0x8811('0x1e')](saveUpdates(_0x2b49c6[_0x8811('0x40')],null))[_0x8811('0x1e')](respondWithResult(_0x5a14e8,null))[_0x8811('0x3c')](handleError(_0x5a14e8,null));};exports[_0x8811('0x44')]=function(_0x52d1ee,_0x34bb69){return db[_0x8811('0x38')][_0x8811('0x42')]({'where':{'id':_0x52d1ee[_0x8811('0x43')]['id']}})[_0x8811('0x1e')](handleEntityNotFound(_0x34bb69,null))[_0x8811('0x1e')](removeEntity(_0x34bb69,null))[_0x8811('0x3c')](handleError(_0x34bb69,null));};exports[_0x8811('0x45')]=function(_0x72f9fc,_0x3ce7c6,_0x4cfb6c){var _0x14fffc={};var _0x2ff16d={};var _0x2a60fc;var _0x3fe807;return db[_0x8811('0x38')][_0x8811('0x46')]({'where':{'id':_0x72f9fc[_0x8811('0x43')]['id']}})[_0x8811('0x1e')](handleEntityNotFound(_0x3ce7c6,null))[_0x8811('0x1e')](function(_0xb4a024){if(_0xb4a024){_0x2a60fc=_0xb4a024;_0x2ff16d[_0x8811('0x26')]=_[_0x8811('0x28')](db[_0x8811('0x47')][_0x8811('0x24')]);_0x2ff16d[_0x8811('0x29')]=_[_0x8811('0x28')](_0x72f9fc['query']);_0x2ff16d[_0x8811('0x3e')]=_[_0x8811('0x2a')](_0x2ff16d[_0x8811('0x26')],_0x2ff16d[_0x8811('0x29')]);_0x14fffc[_0x8811('0x2b')]=_[_0x8811('0x2a')](_0x2ff16d['model'],qs[_0x8811('0x2c')](_0x72f9fc[_0x8811('0x29')]['fields']));_0x14fffc['attributes']=_0x14fffc[_0x8811('0x2b')][_0x8811('0x2d')]?_0x14fffc[_0x8811('0x2b')]:_0x2ff16d['model'];_0x14fffc[_0x8811('0x48')]=qs[_0x8811('0x30')](_0x72f9fc[_0x8811('0x29')][_0x8811('0x30')]);_0x14fffc[_0x8811('0x33')]=qs[_0x8811('0x3e')](_['pick'](_0x72f9fc[_0x8811('0x29')],_0x2ff16d['filters']));if(_0x72f9fc[_0x8811('0x29')][_0x8811('0x32')]){_0x14fffc['where']=_['merge'](_0x14fffc[_0x8811('0x33')],{'$or':_[_0x8811('0x23')](_0x14fffc['attributes'],function(_0x382c06){var _0x2691a9={};_0x2691a9[_0x382c06]={'$like':'%'+_0x72f9fc[_0x8811('0x29')][_0x8811('0x32')]+'%'};return _0x2691a9;})});}_0x14fffc=_[_0x8811('0x34')]({},_0x14fffc,_0x72f9fc[_0x8811('0x37')]);return _0x2a60fc[_0x8811('0x45')](_0x14fffc);}})[_0x8811('0x1e')](function(_0x550aaa){if(_0x550aaa){_0x3fe807=_0x550aaa[_0x8811('0x2d')];if(!_0x72f9fc['query']['hasOwnProperty'](_0x8811('0x2f'))){_0x14fffc[_0x8811('0x19')]=qs[_0x8811('0x19')](_0x72f9fc[_0x8811('0x29')][_0x8811('0x19')]);_0x14fffc[_0x8811('0x17')]=qs['offset'](_0x72f9fc[_0x8811('0x29')][_0x8811('0x17')]);}return _0x2a60fc[_0x8811('0x45')](_0x14fffc);}})['then'](function(_0x6790aa){if(_0x6790aa){return _0x6790aa?{'count':_0x3fe807,'rows':_0x6790aa}:null;}})[_0x8811('0x1e')](respondWithResult(_0x3ce7c6,null))[_0x8811('0x3c')](handleError(_0x3ce7c6,null));};exports['getSubjects']=function(_0x44bcae,_0x181e17,_0x5ac7e6){var _0x72d091={};var _0x7957f5={};var _0x375880;var _0x482df7;return db[_0x8811('0x38')][_0x8811('0x46')]({'where':{'id':_0x44bcae[_0x8811('0x43')]['id']}})[_0x8811('0x1e')](handleEntityNotFound(_0x181e17,null))['then'](function(_0x30d745){if(_0x30d745){_0x375880=_0x30d745;_0x7957f5['model']=_['keys'](db[_0x8811('0x47')]['rawAttributes']);_0x7957f5['query']=_[_0x8811('0x28')](_0x44bcae[_0x8811('0x29')]);_0x7957f5[_0x8811('0x3e')]=_['intersection'](_0x7957f5[_0x8811('0x26')],_0x7957f5[_0x8811('0x29')]);_0x72d091[_0x8811('0x2b')]=_[_0x8811('0x2a')](_0x7957f5[_0x8811('0x26')],qs['fields'](_0x44bcae[_0x8811('0x29')]['fields']));_0x72d091['attributes']=_0x72d091[_0x8811('0x2b')]['length']?_0x72d091['attributes']:_0x7957f5['model'];_0x72d091[_0x8811('0x48')]=qs[_0x8811('0x30')](_0x44bcae[_0x8811('0x29')][_0x8811('0x30')]);_0x72d091['where']=qs[_0x8811('0x3e')](_[_0x8811('0x31')](_0x44bcae[_0x8811('0x29')],_0x7957f5[_0x8811('0x3e')]));if(_0x44bcae[_0x8811('0x29')]['filter']){_0x72d091['where']=_[_0x8811('0x34')](_0x72d091[_0x8811('0x33')],{'$or':_[_0x8811('0x23')](_0x72d091[_0x8811('0x2b')],function(_0x17fee5){var _0x17008c={};_0x17008c[_0x17fee5]={'$like':'%'+_0x44bcae['query'][_0x8811('0x32')]+'%'};return _0x17008c;})});}_0x72d091=_['merge']({},_0x72d091,_0x44bcae[_0x8811('0x37')]);return _0x375880['getSubjects'](_0x72d091);}})[_0x8811('0x1e')](function(_0x216e29){if(_0x216e29){_0x482df7=_0x216e29[_0x8811('0x2d')];if(!_0x44bcae[_0x8811('0x29')][_0x8811('0x2e')](_0x8811('0x2f'))){_0x72d091[_0x8811('0x19')]=qs[_0x8811('0x19')](_0x44bcae[_0x8811('0x29')]['limit']);_0x72d091[_0x8811('0x17')]=qs[_0x8811('0x17')](_0x44bcae[_0x8811('0x29')][_0x8811('0x17')]);}return _0x375880['getSubjects'](_0x72d091);}})[_0x8811('0x1e')](function(_0x3e1e06){if(_0x3e1e06){return _0x3e1e06?{'count':_0x482df7,'rows':_0x3e1e06}:null;}})[_0x8811('0x1e')](respondWithResult(_0x181e17,null))['catch'](handleError(_0x181e17,null));};exports[_0x8811('0x49')]=function(_0x2ac6d1,_0x197fc6,_0x25785c){var _0x359886={};var _0x1a63a1={};var _0x1851fa;var _0x5a53b2;return db[_0x8811('0x38')]['findOne']({'where':{'id':_0x2ac6d1[_0x8811('0x43')]['id']}})[_0x8811('0x1e')](handleEntityNotFound(_0x197fc6,null))['then'](function(_0x1cc7ab){if(_0x1cc7ab){_0x1851fa=_0x1cc7ab;_0x1a63a1['model']=_[_0x8811('0x28')](db[_0x8811('0x47')][_0x8811('0x24')]);_0x1a63a1[_0x8811('0x29')]=_[_0x8811('0x28')](_0x2ac6d1[_0x8811('0x29')]);_0x1a63a1[_0x8811('0x3e')]=_[_0x8811('0x2a')](_0x1a63a1[_0x8811('0x26')],_0x1a63a1[_0x8811('0x29')]);_0x359886['attributes']=_[_0x8811('0x2a')](_0x1a63a1[_0x8811('0x26')],qs['fields'](_0x2ac6d1['query'][_0x8811('0x2c')]));_0x359886[_0x8811('0x2b')]=_0x359886['attributes'][_0x8811('0x2d')]?_0x359886[_0x8811('0x2b')]:_0x1a63a1[_0x8811('0x26')];_0x359886[_0x8811('0x48')]=qs['sort'](_0x2ac6d1['query'][_0x8811('0x30')]);_0x359886[_0x8811('0x33')]=qs['filters'](_[_0x8811('0x31')](_0x2ac6d1['query'],_0x1a63a1['filters']));if(_0x2ac6d1['query'][_0x8811('0x32')]){_0x359886['where']=_['merge'](_0x359886[_0x8811('0x33')],{'$or':_[_0x8811('0x23')](_0x359886[_0x8811('0x2b')],function(_0x3504b){var _0x628b54={};_0x628b54[_0x3504b]={'$like':'%'+_0x2ac6d1[_0x8811('0x29')][_0x8811('0x32')]+'%'};return _0x628b54;})});}_0x359886=_['merge']({},_0x359886,_0x2ac6d1[_0x8811('0x37')]);return _0x1851fa['getDescriptions'](_0x359886);}})[_0x8811('0x1e')](function(_0x308cd5){if(_0x308cd5){_0x5a53b2=_0x308cd5['length'];if(!_0x2ac6d1[_0x8811('0x29')][_0x8811('0x2e')](_0x8811('0x2f'))){_0x359886[_0x8811('0x19')]=qs[_0x8811('0x19')](_0x2ac6d1['query'][_0x8811('0x19')]);_0x359886[_0x8811('0x17')]=qs[_0x8811('0x17')](_0x2ac6d1[_0x8811('0x29')][_0x8811('0x17')]);}return _0x1851fa[_0x8811('0x49')](_0x359886);}})['then'](function(_0x32ad4f){if(_0x32ad4f){return _0x32ad4f?{'count':_0x5a53b2,'rows':_0x32ad4f}:null;}})[_0x8811('0x1e')](respondWithResult(_0x197fc6,null))[_0x8811('0x3c')](handleError(_0x197fc6,null));};
\ No newline at end of file
+var _0x48ab=['index','map','SugarcrmConfiguration','rawAttributes','query','keys','filters','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','update','body','getFields','findOne','SugarcrmField','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','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','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','stack','name','send'];(function(_0x5c5f52,_0x54c941){var _0x2881a6=function(_0x5c4e3e){while(--_0x5c4e3e){_0x5c5f52['push'](_0x5c5f52['shift']());}};_0x2881a6(++_0x54c941);}(_0x48ab,0xc8));var _0xb48a=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x48ab[_0x53ccf2];return _0x5a2964;};'use strict';var emlformat=require(_0xb48a('0x0'));var rimraf=require(_0xb48a('0x1'));var zipdir=require(_0xb48a('0x2'));var jsonpatch=require(_0xb48a('0x3'));var rp=require('request-promise');var moment=require(_0xb48a('0x4'));var BPromise=require(_0xb48a('0x5'));var Mustache=require('mustache');var util=require(_0xb48a('0x6'));var path=require(_0xb48a('0x7'));var sox=require(_0xb48a('0x8'));var csv=require(_0xb48a('0x9'));var ejs=require(_0xb48a('0xa'));var fs=require('fs');var fs_extra=require(_0xb48a('0xb'));var _=require(_0xb48a('0xc'));var squel=require('squel');var crypto=require(_0xb48a('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xb48a('0xe'));var toCsv=require(_0xb48a('0x9'));var querystring=require(_0xb48a('0xf'));var Papa=require(_0xb48a('0x10'));var Redis=require(_0xb48a('0x11'));var authService=require(_0xb48a('0x12'));var qs=require(_0xb48a('0x13'));var as=require(_0xb48a('0x14'));var hardwareService=require(_0xb48a('0x15'));var logger=require(_0xb48a('0x16'))('api');var utils=require(_0xb48a('0x17'));var config=require(_0xb48a('0x18'));var licenseUtil=require(_0xb48a('0x19'));var db=require(_0xb48a('0x1a'))['db'];function respondWithStatusCode(_0x44d7bc,_0x57075c){_0x57075c=_0x57075c||0xcc;return function(_0x4db50e){if(_0x4db50e){return _0x44d7bc['sendStatus'](_0x57075c);}return _0x44d7bc[_0xb48a('0x1b')](_0x57075c)['end']();};}function respondWithResult(_0x59836d,_0x127b78){_0x127b78=_0x127b78||0xc8;return function(_0x73fa41){if(_0x73fa41){return _0x59836d[_0xb48a('0x1b')](_0x127b78)[_0xb48a('0x1c')](_0x73fa41);}};}function respondWithFilteredResult(_0x2d7b12,_0x17fc65){return function(_0x2a3f5d){if(_0x2a3f5d){var _0x3af11a=typeof _0x17fc65[_0xb48a('0x1d')]==='undefined'&&typeof _0x17fc65[_0xb48a('0x1e')]===_0xb48a('0x1f');var _0x428f85=_0x2a3f5d[_0xb48a('0x20')];var _0x43b76e=_0x3af11a?0x0:_0x17fc65[_0xb48a('0x1d')];var _0x547eef=_0x3af11a?_0x2a3f5d[_0xb48a('0x20')]:_0x17fc65['offset']+_0x17fc65['limit'];var _0x4d3e6b;if(_0x547eef>=_0x428f85){_0x547eef=_0x428f85;_0x4d3e6b=0xc8;}else{_0x4d3e6b=0xce;}_0x2d7b12[_0xb48a('0x1b')](_0x4d3e6b);return _0x2d7b12[_0xb48a('0x21')](_0xb48a('0x22'),_0x43b76e+'-'+_0x547eef+'/'+_0x428f85)[_0xb48a('0x1c')](_0x2a3f5d);}return null;};}function patchUpdates(_0x442a2e){return function(_0x698cb4){try{jsonpatch[_0xb48a('0x23')](_0x698cb4,_0x442a2e,!![]);}catch(_0x1dade4){return BPromise[_0xb48a('0x24')](_0x1dade4);}return _0x698cb4[_0xb48a('0x25')]();};}function saveUpdates(_0x3befca,_0x2818e5){return function(_0x4ac817){if(_0x4ac817){return _0x4ac817['update'](_0x3befca)[_0xb48a('0x26')](function(_0x1be871){return _0x1be871;});}return null;};}function removeEntity(_0x543758,_0x35639d){return function(_0x31d216){if(_0x31d216){return _0x31d216[_0xb48a('0x27')]()[_0xb48a('0x26')](function(){_0x543758[_0xb48a('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5f2a13,_0x7edcc7){return function(_0xd9ece){if(!_0xd9ece){_0x5f2a13['sendStatus'](0x194);}return _0xd9ece;};}function handleError(_0xa1010b,_0x5cb1e4){_0x5cb1e4=_0x5cb1e4||0x1f4;return function(_0x70a575){logger['error'](_0x70a575[_0xb48a('0x28')]);if(_0x70a575[_0xb48a('0x29')]){delete _0x70a575['name'];}_0xa1010b[_0xb48a('0x1b')](_0x5cb1e4)[_0xb48a('0x2a')](_0x70a575);};}exports[_0xb48a('0x2b')]=function(_0x2e55b8,_0x387def){var _0x2f85d4={},_0x248921={},_0x785f34={'count':0x0,'rows':[]};var _0x2e85d4=_[_0xb48a('0x2c')](db[_0xb48a('0x2d')][_0xb48a('0x2e')],function(_0x3ac75b){return{'name':_0x3ac75b['fieldName'],'type':_0x3ac75b['type']['key']};});_0x248921['model']=_[_0xb48a('0x2c')](_0x2e85d4,_0xb48a('0x29'));_0x248921[_0xb48a('0x2f')]=_[_0xb48a('0x30')](_0x2e55b8[_0xb48a('0x2f')]);_0x248921[_0xb48a('0x31')]=_['intersection'](_0x248921[_0xb48a('0x32')],_0x248921[_0xb48a('0x2f')]);_0x2f85d4['attributes']=_[_0xb48a('0x33')](_0x248921[_0xb48a('0x32')],qs[_0xb48a('0x34')](_0x2e55b8['query'][_0xb48a('0x34')]));_0x2f85d4[_0xb48a('0x35')]=_0x2f85d4[_0xb48a('0x35')][_0xb48a('0x36')]?_0x2f85d4['attributes']:_0x248921[_0xb48a('0x32')];if(!_0x2e55b8[_0xb48a('0x2f')][_0xb48a('0x37')](_0xb48a('0x38'))){_0x2f85d4['limit']=qs[_0xb48a('0x1e')](_0x2e55b8[_0xb48a('0x2f')][_0xb48a('0x1e')]);_0x2f85d4[_0xb48a('0x1d')]=qs[_0xb48a('0x1d')](_0x2e55b8[_0xb48a('0x2f')][_0xb48a('0x1d')]);}_0x2f85d4[_0xb48a('0x39')]=qs[_0xb48a('0x3a')](_0x2e55b8['query']['sort']);_0x2f85d4['where']=qs[_0xb48a('0x31')](_[_0xb48a('0x3b')](_0x2e55b8[_0xb48a('0x2f')],_0x248921[_0xb48a('0x31')]),_0x2e85d4);if(_0x2e55b8[_0xb48a('0x2f')][_0xb48a('0x3c')]){_0x2f85d4[_0xb48a('0x3d')]=_[_0xb48a('0x3e')](_0x2f85d4['where'],{'$or':_['map'](_0x2e85d4,function(_0x43515a){if(_0x43515a['type']!==_0xb48a('0x3f')){var _0x4c1a20={};_0x4c1a20[_0x43515a[_0xb48a('0x29')]]={'$like':'%'+_0x2e55b8[_0xb48a('0x2f')][_0xb48a('0x3c')]+'%'};return _0x4c1a20;}})});}_0x2f85d4=_[_0xb48a('0x3e')]({},_0x2f85d4,_0x2e55b8[_0xb48a('0x40')]);var _0x3e8075={'where':_0x2f85d4['where']};return db[_0xb48a('0x2d')][_0xb48a('0x20')](_0x3e8075)[_0xb48a('0x26')](function(_0x59c939){_0x785f34[_0xb48a('0x20')]=_0x59c939;if(_0x2e55b8['query'][_0xb48a('0x41')]){_0x2f85d4[_0xb48a('0x42')]=[{'all':!![]}];}return db[_0xb48a('0x2d')][_0xb48a('0x43')](_0x2f85d4);})['then'](function(_0x107bde){_0x785f34[_0xb48a('0x44')]=_0x107bde;return _0x785f34;})[_0xb48a('0x26')](respondWithFilteredResult(_0x387def,_0x2f85d4))[_0xb48a('0x45')](handleError(_0x387def,null));};exports[_0xb48a('0x46')]=function(_0x1bc3d1,_0x5c6a43){var _0x377bc9={'raw':![],'where':{'id':_0x1bc3d1[_0xb48a('0x47')]['id']}},_0x3113e9={};_0x3113e9[_0xb48a('0x32')]=_[_0xb48a('0x30')](db[_0xb48a('0x2d')]['rawAttributes']);_0x3113e9['query']=_[_0xb48a('0x30')](_0x1bc3d1[_0xb48a('0x2f')]);_0x3113e9[_0xb48a('0x31')]=_[_0xb48a('0x33')](_0x3113e9['model'],_0x3113e9['query']);_0x377bc9[_0xb48a('0x35')]=_[_0xb48a('0x33')](_0x3113e9[_0xb48a('0x32')],qs[_0xb48a('0x34')](_0x1bc3d1[_0xb48a('0x2f')][_0xb48a('0x34')]));_0x377bc9[_0xb48a('0x35')]=_0x377bc9[_0xb48a('0x35')][_0xb48a('0x36')]?_0x377bc9['attributes']:_0x3113e9[_0xb48a('0x32')];if(_0x1bc3d1[_0xb48a('0x2f')]['includeAll']){_0x377bc9[_0xb48a('0x42')]=[{'all':!![]}];}_0x377bc9=_[_0xb48a('0x3e')]({},_0x377bc9,_0x1bc3d1['options']);return db[_0xb48a('0x2d')][_0xb48a('0x48')](_0x377bc9)[_0xb48a('0x26')](handleEntityNotFound(_0x5c6a43,null))['then'](respondWithResult(_0x5c6a43,null))[_0xb48a('0x45')](handleError(_0x5c6a43,null));};exports['create']=function(_0x27b8a5,_0x31c793){return db[_0xb48a('0x2d')][_0xb48a('0x49')](_0x27b8a5['body'],{})[_0xb48a('0x26')](respondWithResult(_0x31c793,0xc9))[_0xb48a('0x45')](handleError(_0x31c793,null));};exports[_0xb48a('0x4a')]=function(_0x537ce6,_0x21a1f3){if(_0x537ce6[_0xb48a('0x4b')]['id']){delete _0x537ce6['body']['id'];}return db[_0xb48a('0x2d')]['find']({'where':{'id':_0x537ce6['params']['id']}})[_0xb48a('0x26')](handleEntityNotFound(_0x21a1f3,null))[_0xb48a('0x26')](saveUpdates(_0x537ce6[_0xb48a('0x4b')],null))[_0xb48a('0x26')](respondWithResult(_0x21a1f3,null))[_0xb48a('0x45')](handleError(_0x21a1f3,null));};exports['destroy']=function(_0x9032f5,_0x5f2318){return db[_0xb48a('0x2d')][_0xb48a('0x48')]({'where':{'id':_0x9032f5['params']['id']}})[_0xb48a('0x26')](handleEntityNotFound(_0x5f2318,null))['then'](removeEntity(_0x5f2318,null))[_0xb48a('0x45')](handleError(_0x5f2318,null));};exports[_0xb48a('0x4c')]=function(_0x6b1121,_0x59d4ab,_0x43d41b){var _0x435617={};var _0x42a11b={};var _0x1b5882;var _0x4bcd0a;return db['SugarcrmConfiguration'][_0xb48a('0x4d')]({'where':{'id':_0x6b1121[_0xb48a('0x47')]['id']}})['then'](handleEntityNotFound(_0x59d4ab,null))[_0xb48a('0x26')](function(_0x2964a3){if(_0x2964a3){_0x1b5882=_0x2964a3;_0x42a11b[_0xb48a('0x32')]=_['keys'](db[_0xb48a('0x4e')]['rawAttributes']);_0x42a11b[_0xb48a('0x2f')]=_[_0xb48a('0x30')](_0x6b1121[_0xb48a('0x2f')]);_0x42a11b['filters']=_[_0xb48a('0x33')](_0x42a11b[_0xb48a('0x32')],_0x42a11b[_0xb48a('0x2f')]);_0x435617['attributes']=_[_0xb48a('0x33')](_0x42a11b[_0xb48a('0x32')],qs[_0xb48a('0x34')](_0x6b1121['query'][_0xb48a('0x34')]));_0x435617['attributes']=_0x435617[_0xb48a('0x35')][_0xb48a('0x36')]?_0x435617[_0xb48a('0x35')]:_0x42a11b[_0xb48a('0x32')];_0x435617[_0xb48a('0x39')]=qs[_0xb48a('0x3a')](_0x6b1121['query'][_0xb48a('0x3a')]);_0x435617[_0xb48a('0x3d')]=qs[_0xb48a('0x31')](_[_0xb48a('0x3b')](_0x6b1121[_0xb48a('0x2f')],_0x42a11b[_0xb48a('0x31')]));if(_0x6b1121[_0xb48a('0x2f')][_0xb48a('0x3c')]){_0x435617[_0xb48a('0x3d')]=_['merge'](_0x435617[_0xb48a('0x3d')],{'$or':_['map'](_0x435617[_0xb48a('0x35')],function(_0x4226cb){var _0x3fe08c={};_0x3fe08c[_0x4226cb]={'$like':'%'+_0x6b1121[_0xb48a('0x2f')][_0xb48a('0x3c')]+'%'};return _0x3fe08c;})});}_0x435617=_[_0xb48a('0x3e')]({},_0x435617,_0x6b1121[_0xb48a('0x40')]);return _0x1b5882[_0xb48a('0x4c')](_0x435617);}})[_0xb48a('0x26')](function(_0x6bd584){if(_0x6bd584){_0x4bcd0a=_0x6bd584[_0xb48a('0x36')];if(!_0x6b1121[_0xb48a('0x2f')][_0xb48a('0x37')](_0xb48a('0x38'))){_0x435617[_0xb48a('0x1e')]=qs[_0xb48a('0x1e')](_0x6b1121[_0xb48a('0x2f')]['limit']);_0x435617[_0xb48a('0x1d')]=qs['offset'](_0x6b1121[_0xb48a('0x2f')][_0xb48a('0x1d')]);}return _0x1b5882[_0xb48a('0x4c')](_0x435617);}})[_0xb48a('0x26')](function(_0x10eea9){if(_0x10eea9){return _0x10eea9?{'count':_0x4bcd0a,'rows':_0x10eea9}:null;}})[_0xb48a('0x26')](respondWithResult(_0x59d4ab,null))[_0xb48a('0x45')](handleError(_0x59d4ab,null));};exports['getSubjects']=function(_0x21ef62,_0x8fbb7b,_0x10761d){var _0xf0b5f4={};var _0x484202={};var _0x917fad;var _0x43dc8b;return db[_0xb48a('0x2d')]['findOne']({'where':{'id':_0x21ef62[_0xb48a('0x47')]['id']}})[_0xb48a('0x26')](handleEntityNotFound(_0x8fbb7b,null))[_0xb48a('0x26')](function(_0x3260c3){if(_0x3260c3){_0x917fad=_0x3260c3;_0x484202[_0xb48a('0x32')]=_[_0xb48a('0x30')](db[_0xb48a('0x4e')]['rawAttributes']);_0x484202[_0xb48a('0x2f')]=_[_0xb48a('0x30')](_0x21ef62[_0xb48a('0x2f')]);_0x484202[_0xb48a('0x31')]=_[_0xb48a('0x33')](_0x484202['model'],_0x484202[_0xb48a('0x2f')]);_0xf0b5f4[_0xb48a('0x35')]=_['intersection'](_0x484202['model'],qs[_0xb48a('0x34')](_0x21ef62[_0xb48a('0x2f')][_0xb48a('0x34')]));_0xf0b5f4[_0xb48a('0x35')]=_0xf0b5f4[_0xb48a('0x35')][_0xb48a('0x36')]?_0xf0b5f4[_0xb48a('0x35')]:_0x484202[_0xb48a('0x32')];_0xf0b5f4[_0xb48a('0x39')]=qs[_0xb48a('0x3a')](_0x21ef62[_0xb48a('0x2f')][_0xb48a('0x3a')]);_0xf0b5f4[_0xb48a('0x3d')]=qs[_0xb48a('0x31')](_[_0xb48a('0x3b')](_0x21ef62[_0xb48a('0x2f')],_0x484202[_0xb48a('0x31')]));if(_0x21ef62[_0xb48a('0x2f')][_0xb48a('0x3c')]){_0xf0b5f4[_0xb48a('0x3d')]=_[_0xb48a('0x3e')](_0xf0b5f4[_0xb48a('0x3d')],{'$or':_[_0xb48a('0x2c')](_0xf0b5f4['attributes'],function(_0x15fbc3){var _0x392219={};_0x392219[_0x15fbc3]={'$like':'%'+_0x21ef62['query']['filter']+'%'};return _0x392219;})});}_0xf0b5f4=_[_0xb48a('0x3e')]({},_0xf0b5f4,_0x21ef62[_0xb48a('0x40')]);return _0x917fad[_0xb48a('0x4f')](_0xf0b5f4);}})[_0xb48a('0x26')](function(_0x4f76df){if(_0x4f76df){_0x43dc8b=_0x4f76df['length'];if(!_0x21ef62[_0xb48a('0x2f')][_0xb48a('0x37')]('nolimit')){_0xf0b5f4['limit']=qs[_0xb48a('0x1e')](_0x21ef62[_0xb48a('0x2f')][_0xb48a('0x1e')]);_0xf0b5f4[_0xb48a('0x1d')]=qs[_0xb48a('0x1d')](_0x21ef62[_0xb48a('0x2f')][_0xb48a('0x1d')]);}return _0x917fad['getSubjects'](_0xf0b5f4);}})[_0xb48a('0x26')](function(_0x38669e){if(_0x38669e){return _0x38669e?{'count':_0x43dc8b,'rows':_0x38669e}:null;}})['then'](respondWithResult(_0x8fbb7b,null))[_0xb48a('0x45')](handleError(_0x8fbb7b,null));};exports['getDescriptions']=function(_0x3241f1,_0xa3c39b,_0x49daeb){var _0x53326c={};var _0x28bf4d={};var _0x3020ec;var _0x2bda6c;return db[_0xb48a('0x2d')][_0xb48a('0x4d')]({'where':{'id':_0x3241f1[_0xb48a('0x47')]['id']}})[_0xb48a('0x26')](handleEntityNotFound(_0xa3c39b,null))['then'](function(_0x269621){if(_0x269621){_0x3020ec=_0x269621;_0x28bf4d[_0xb48a('0x32')]=_[_0xb48a('0x30')](db[_0xb48a('0x4e')][_0xb48a('0x2e')]);_0x28bf4d[_0xb48a('0x2f')]=_['keys'](_0x3241f1[_0xb48a('0x2f')]);_0x28bf4d[_0xb48a('0x31')]=_[_0xb48a('0x33')](_0x28bf4d[_0xb48a('0x32')],_0x28bf4d[_0xb48a('0x2f')]);_0x53326c[_0xb48a('0x35')]=_[_0xb48a('0x33')](_0x28bf4d[_0xb48a('0x32')],qs[_0xb48a('0x34')](_0x3241f1['query'][_0xb48a('0x34')]));_0x53326c[_0xb48a('0x35')]=_0x53326c[_0xb48a('0x35')][_0xb48a('0x36')]?_0x53326c[_0xb48a('0x35')]:_0x28bf4d[_0xb48a('0x32')];_0x53326c[_0xb48a('0x39')]=qs[_0xb48a('0x3a')](_0x3241f1['query'][_0xb48a('0x3a')]);_0x53326c[_0xb48a('0x3d')]=qs[_0xb48a('0x31')](_[_0xb48a('0x3b')](_0x3241f1['query'],_0x28bf4d[_0xb48a('0x31')]));if(_0x3241f1[_0xb48a('0x2f')][_0xb48a('0x3c')]){_0x53326c['where']=_['merge'](_0x53326c[_0xb48a('0x3d')],{'$or':_[_0xb48a('0x2c')](_0x53326c[_0xb48a('0x35')],function(_0x3c395c){var _0x3a64eb={};_0x3a64eb[_0x3c395c]={'$like':'%'+_0x3241f1[_0xb48a('0x2f')][_0xb48a('0x3c')]+'%'};return _0x3a64eb;})});}_0x53326c=_[_0xb48a('0x3e')]({},_0x53326c,_0x3241f1[_0xb48a('0x40')]);return _0x3020ec[_0xb48a('0x50')](_0x53326c);}})[_0xb48a('0x26')](function(_0x92236d){if(_0x92236d){_0x2bda6c=_0x92236d[_0xb48a('0x36')];if(!_0x3241f1['query'][_0xb48a('0x37')](_0xb48a('0x38'))){_0x53326c[_0xb48a('0x1e')]=qs[_0xb48a('0x1e')](_0x3241f1[_0xb48a('0x2f')][_0xb48a('0x1e')]);_0x53326c['offset']=qs[_0xb48a('0x1d')](_0x3241f1[_0xb48a('0x2f')][_0xb48a('0x1d')]);}return _0x3020ec[_0xb48a('0x50')](_0x53326c);}})[_0xb48a('0x26')](function(_0x28d00f){if(_0x28d00f){return _0x28d00f?{'count':_0x2bda6c,'rows':_0x28d00f}:null;}})[_0xb48a('0x26')](respondWithResult(_0xa3c39b,null))[_0xb48a('0x45')](handleError(_0xa3c39b,null));};
\ No newline at end of file
index 02ece71..d943d34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7592=['int_sugarcrm_configurations','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./intSugarcrmConfiguration.attributes','exports','define','SugarcrmConfiguration'];(function(_0x4207a6,_0x3a3110){var _0x42b37a=function(_0x574360){while(--_0x574360){_0x4207a6['push'](_0x4207a6['shift']());}};_0x42b37a(++_0x3a3110);}(_0x7592,0x85));var _0x2759=function(_0x1098db,_0x39ba6b){_0x1098db=_0x1098db-0x0;var _0x14f090=_0x7592[_0x1098db];return _0x14f090;};'use strict';var _=require('lodash');var util=require(_0x2759('0x0'));var logger=require(_0x2759('0x1'))('api');var moment=require(_0x2759('0x2'));var BPromise=require(_0x2759('0x3'));var rp=require(_0x2759('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2759('0x5'));var config=require(_0x2759('0x6'));var attributes=require(_0x2759('0x7'));module[_0x2759('0x8')]=function(_0x1f818e,_0x2027ff){return _0x1f818e[_0x2759('0x9')](_0x2759('0xa'),attributes,{'tableName':_0x2759('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4649=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intSugarcrmConfiguration.attributes','define','util'];(function(_0x5279bf,_0x3f7234){var _0xe12d32=function(_0x402fb9){while(--_0x402fb9){_0x5279bf['push'](_0x5279bf['shift']());}};_0xe12d32(++_0x3f7234);}(_0x4649,0x117));var _0x9464=function(_0xa59425,_0x35949f){_0xa59425=_0xa59425-0x0;var _0x32a331=_0x4649[_0xa59425];return _0x32a331;};'use strict';var _=require('lodash');var util=require(_0x9464('0x0'));var logger=require(_0x9464('0x1'))(_0x9464('0x2'));var moment=require(_0x9464('0x3'));var BPromise=require(_0x9464('0x4'));var rp=require(_0x9464('0x5'));var fs=require('fs');var path=require(_0x9464('0x6'));var rimraf=require(_0x9464('0x7'));var config=require('../../config/environment');var attributes=require(_0x9464('0x8'));module['exports']=function(_0x3e76a0,_0x4541e5){return _0x3e76a0[_0x9464('0x9')]('SugarcrmConfiguration',attributes,{'tableName':'int_sugarcrm_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ee029e0..7883ae8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ffd=['then','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','error','code','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x314148,_0x50e34b){var _0x5703c4=function(_0x28bab8){while(--_0x28bab8){_0x314148['push'](_0x314148['shift']());}};_0x5703c4(++_0x50e34b);}(_0x5ffd,0x1c1));var _0xd5ff=function(_0x49d6f0,_0x55fe8e){_0x49d6f0=_0x49d6f0-0x0;var _0x27e620=_0x5ffd[_0x49d6f0];return _0x27e620;};'use strict';var _=require(_0xd5ff('0x0'));var util=require(_0xd5ff('0x1'));var moment=require(_0xd5ff('0x2'));var BPromise=require('bluebird');var rs=require(_0xd5ff('0x3'));var fs=require('fs');var Redis=require(_0xd5ff('0x4'));var db=require(_0xd5ff('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd5ff('0x6'))(_0xd5ff('0x7'));var config=require(_0xd5ff('0x8'));var jayson=require(_0xd5ff('0x9'));var client=jayson[_0xd5ff('0xa')][_0xd5ff('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x26a00c,_0x5294e7,_0x3a3acf){return new BPromise(function(_0x15900c,_0x33a05e){return client[_0xd5ff('0xc')](_0x26a00c,_0x3a3acf)[_0xd5ff('0xd')](function(_0x18bee4){logger[_0xd5ff('0xe')](_0xd5ff('0xf'),_0x5294e7,_0xd5ff('0x10'));logger[_0xd5ff('0x11')]('SugarcrmConfiguration,\x20%s,\x20%s,\x20%s',_0x5294e7,'request\x20sent',JSON['stringify'](_0x18bee4));if(_0x18bee4[_0xd5ff('0x12')]){if(_0x18bee4[_0xd5ff('0x12')][_0xd5ff('0x13')]===0x1f4){logger['error'](_0xd5ff('0xf'),_0x5294e7,_0x18bee4[_0xd5ff('0x12')]['message']);return _0x33a05e(_0x18bee4[_0xd5ff('0x12')][_0xd5ff('0x14')]);}logger[_0xd5ff('0x12')](_0xd5ff('0xf'),_0x5294e7,_0x18bee4['error']['message']);return _0x15900c(_0x18bee4['error'][_0xd5ff('0x14')]);}else{logger[_0xd5ff('0xe')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x5294e7,_0xd5ff('0x10'));_0x15900c(_0x18bee4['result']['message']);}})[_0xd5ff('0x15')](function(_0x6607f8){logger[_0xd5ff('0x12')](_0xd5ff('0xf'),_0x5294e7,_0x6607f8);_0x33a05e(_0x6607f8);});});}
\ No newline at end of file
+var _0xabef=['jayson/promise','http','request','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment'];(function(_0x3f1097,_0x4630a5){var _0x408580=function(_0x2cd524){while(--_0x2cd524){_0x3f1097['push'](_0x3f1097['shift']());}};_0x408580(++_0x4630a5);}(_0xabef,0x10a));var _0xfabe=function(_0x122096,_0x60c295){_0x122096=_0x122096-0x0;var _0x3d1966=_0xabef[_0x122096];return _0x3d1966;};'use strict';var _=require(_0xfabe('0x0'));var util=require('util');var moment=require(_0xfabe('0x1'));var BPromise=require(_0xfabe('0x2'));var rs=require(_0xfabe('0x3'));var fs=require('fs');var Redis=require(_0xfabe('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xfabe('0x5'))('rpc');var config=require(_0xfabe('0x6'));var jayson=require(_0xfabe('0x7'));var client=jayson['client'][_0xfabe('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x50cb6a,_0x1721a8,_0x321206){return new BPromise(function(_0x187fb1,_0x5b1f5b){return client[_0xfabe('0x9')](_0x50cb6a,_0x321206)['then'](function(_0x39b471){logger[_0xfabe('0xa')](_0xfabe('0xb'),_0x1721a8,_0xfabe('0xc'));logger[_0xfabe('0xd')](_0xfabe('0xe'),_0x1721a8,_0xfabe('0xc'),JSON[_0xfabe('0xf')](_0x39b471));if(_0x39b471[_0xfabe('0x10')]){if(_0x39b471[_0xfabe('0x10')][_0xfabe('0x11')]===0x1f4){logger[_0xfabe('0x10')](_0xfabe('0xb'),_0x1721a8,_0x39b471[_0xfabe('0x10')][_0xfabe('0x12')]);return _0x5b1f5b(_0x39b471[_0xfabe('0x10')][_0xfabe('0x12')]);}logger['error']('SugarcrmConfiguration,\x20%s,\x20%s',_0x1721a8,_0x39b471[_0xfabe('0x10')]['message']);return _0x187fb1(_0x39b471[_0xfabe('0x10')][_0xfabe('0x12')]);}else{logger[_0xfabe('0xa')](_0xfabe('0xb'),_0x1721a8,_0xfabe('0xc'));_0x187fb1(_0x39b471[_0xfabe('0x13')]['message']);}})[_0xfabe('0x14')](function(_0x6e0d6){logger[_0xfabe('0x10')](_0xfabe('0xb'),_0x1721a8,_0x6e0d6);_0x5b1f5b(_0x6e0d6);});});}
\ No newline at end of file
index eaadd90..e7df38f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3aa8=['../../config/environment','isAuthenticated','index','get','/:id','show','create','put','update','delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x332a78,_0x4d38b3){var _0x537ac5=function(_0x1a7526){while(--_0x1a7526){_0x332a78['push'](_0x332a78['shift']());}};_0x537ac5(++_0x4d38b3);}(_0x3aa8,0xb7));var _0x83aa=function(_0x494bf3,_0x23e922){_0x494bf3=_0x494bf3-0x0;var _0x4459a2=_0x3aa8[_0x494bf3];return _0x4459a2;};'use strict';var multer=require('multer');var util=require(_0x83aa('0x0'));var path=require(_0x83aa('0x1'));var timeout=require(_0x83aa('0x2'));var express=require(_0x83aa('0x3'));var router=express['Router']();var fs_extra=require(_0x83aa('0x4'));var auth=require(_0x83aa('0x5'));var interaction=require(_0x83aa('0x6'));var config=require(_0x83aa('0x7'));var controller=require('./intSugarcrmField.controller');router['get']('/',auth[_0x83aa('0x8')](),controller[_0x83aa('0x9')]);router[_0x83aa('0xa')](_0x83aa('0xb'),auth[_0x83aa('0x8')](),controller[_0x83aa('0xc')]);router['post']('/',auth[_0x83aa('0x8')](),controller[_0x83aa('0xd')]);router[_0x83aa('0xe')](_0x83aa('0xb'),auth[_0x83aa('0x8')](),controller[_0x83aa('0xf')]);router[_0x83aa('0x10')]('/:id',auth[_0x83aa('0x8')](),controller[_0x83aa('0x11')]);module[_0x83aa('0x12')]=router;
\ No newline at end of file
+var _0xb8f9=['isAuthenticated','show','create','put','delete','/:id','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmField.controller','get','index'];(function(_0x559f3c,_0x38a42a){var _0xa4a879=function(_0x370102){while(--_0x370102){_0x559f3c['push'](_0x559f3c['shift']());}};_0xa4a879(++_0x38a42a);}(_0xb8f9,0x1aa));var _0x9b8f=function(_0x35d568,_0x4d47ae){_0x35d568=_0x35d568-0x0;var _0x5dac84=_0xb8f9[_0x35d568];return _0x5dac84;};'use strict';var multer=require(_0x9b8f('0x0'));var util=require(_0x9b8f('0x1'));var path=require(_0x9b8f('0x2'));var timeout=require(_0x9b8f('0x3'));var express=require(_0x9b8f('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x9b8f('0x5'));var interaction=require(_0x9b8f('0x6'));var config=require(_0x9b8f('0x7'));var controller=require(_0x9b8f('0x8'));router[_0x9b8f('0x9')]('/',auth['isAuthenticated'](),controller[_0x9b8f('0xa')]);router[_0x9b8f('0x9')]('/:id',auth[_0x9b8f('0xb')](),controller[_0x9b8f('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0x9b8f('0xd')]);router[_0x9b8f('0xe')]('/:id',auth[_0x9b8f('0xb')](),controller['update']);router[_0x9b8f('0xf')](_0x9b8f('0x10'),auth['isAuthenticated'](),controller[_0x9b8f('0x11')]);module[_0x9b8f('0x12')]=router;
\ No newline at end of file
index 04a8870..4e06544 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f2b=['STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','keyValue','picklist'];(function(_0x417a6a,_0x197366){var _0xc3f2d1=function(_0x2ca5a2){while(--_0x2ca5a2){_0x417a6a['push'](_0x417a6a['shift']());}};_0xc3f2d1(++_0x197366);}(_0x9f2b,0xd4));var _0xb9f2=function(_0x2cece3,_0x13663e){_0x2cece3=_0x2cece3-0x0;var _0xd8fb4a=_0x9f2b[_0x2cece3];return _0xd8fb4a;};'use strict';var Sequelize=require(_0xb9f2('0x0'));module[_0xb9f2('0x1')]={'type':{'type':Sequelize[_0xb9f2('0x2')](_0xb9f2('0x3'),_0xb9f2('0x4'),_0xb9f2('0x5'),_0xb9f2('0x6'),_0xb9f2('0x7')),'defaultValue':_0xb9f2('0x3')},'content':{'type':Sequelize[_0xb9f2('0x8')]},'key':{'type':Sequelize[_0xb9f2('0x8')]},'keyType':{'type':Sequelize[_0xb9f2('0x2')](_0xb9f2('0x3'),_0xb9f2('0x4'),_0xb9f2('0x5'))},'keyContent':{'type':Sequelize[_0xb9f2('0x8')]},'idField':{'type':Sequelize[_0xb9f2('0x8')]},'nameField':{'type':Sequelize[_0xb9f2('0x8')]},'customField':{'type':Sequelize[_0xb9f2('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xb9f2('0x8')]}};
\ No newline at end of file
+var _0x90cb=['exports','string','variable','customVariable','keyValue','picklist','STRING','ENUM','BOOLEAN','sequelize'];(function(_0x364b42,_0x3923a3){var _0x1ff800=function(_0x25b055){while(--_0x25b055){_0x364b42['push'](_0x364b42['shift']());}};_0x1ff800(++_0x3923a3);}(_0x90cb,0x12b));var _0xb90c=function(_0xeee8f2,_0x351024){_0xeee8f2=_0xeee8f2-0x0;var _0x16102b=_0x90cb[_0xeee8f2];return _0x16102b;};'use strict';var Sequelize=require(_0xb90c('0x0'));module[_0xb90c('0x1')]={'type':{'type':Sequelize['ENUM'](_0xb90c('0x2'),_0xb90c('0x3'),_0xb90c('0x4'),_0xb90c('0x5'),_0xb90c('0x6')),'defaultValue':_0xb90c('0x2')},'content':{'type':Sequelize[_0xb90c('0x7')]},'key':{'type':Sequelize[_0xb90c('0x7')]},'keyType':{'type':Sequelize[_0xb90c('0x8')]('string',_0xb90c('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0xb90c('0x7')]},'idField':{'type':Sequelize[_0xb90c('0x7')]},'nameField':{'type':Sequelize[_0xb90c('0x7')]},'customField':{'type':Sequelize[_0xb90c('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xb90c('0x7')]}};
\ No newline at end of file
index ad813c1..39f247e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd25a=['params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','ejs','fs-extra','lodash','squel','crypto','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/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','Content-Range','reject','save','update','then','destroy','error','stack','name','send','map','SugarcrmField','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find','create','body'];(function(_0x1ade65,_0x3e776d){var _0x12d3fb=function(_0x257316){while(--_0x257316){_0x1ade65['push'](_0x1ade65['shift']());}};_0x12d3fb(++_0x3e776d);}(_0xd25a,0x139));var _0xad25=function(_0x34d730,_0xdad9f5){_0x34d730=_0x34d730-0x0;var _0x4a3ce1=_0xd25a[_0x34d730];return _0x4a3ce1;};'use strict';var emlformat=require(_0xad25('0x0'));var rimraf=require(_0xad25('0x1'));var zipdir=require(_0xad25('0x2'));var jsonpatch=require(_0xad25('0x3'));var rp=require(_0xad25('0x4'));var moment=require(_0xad25('0x5'));var BPromise=require(_0xad25('0x6'));var Mustache=require('mustache');var util=require(_0xad25('0x7'));var path=require('path');var sox=require(_0xad25('0x8'));var csv=require('to-csv');var ejs=require(_0xad25('0x9'));var fs=require('fs');var fs_extra=require(_0xad25('0xa'));var _=require(_0xad25('0xb'));var squel=require(_0xad25('0xc'));var crypto=require(_0xad25('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xad25('0xe'));var toCsv=require(_0xad25('0xf'));var querystring=require(_0xad25('0x10'));var Papa=require(_0xad25('0x11'));var Redis=require(_0xad25('0x12'));var authService=require(_0xad25('0x13'));var qs=require(_0xad25('0x14'));var as=require(_0xad25('0x15'));var hardwareService=require(_0xad25('0x16'));var logger=require(_0xad25('0x17'))(_0xad25('0x18'));var utils=require(_0xad25('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xad25('0x1a'));var db=require(_0xad25('0x1b'))['db'];function respondWithStatusCode(_0x3a8573,_0x13e3f7){_0x13e3f7=_0x13e3f7||0xcc;return function(_0xab8219){if(_0xab8219){return _0x3a8573[_0xad25('0x1c')](_0x13e3f7);}return _0x3a8573[_0xad25('0x1d')](_0x13e3f7)[_0xad25('0x1e')]();};}function respondWithResult(_0x45d160,_0x3014fe){_0x3014fe=_0x3014fe||0xc8;return function(_0x5da04a){if(_0x5da04a){return _0x45d160[_0xad25('0x1d')](_0x3014fe)[_0xad25('0x1f')](_0x5da04a);}};}function respondWithFilteredResult(_0x4f3336,_0x2b3411){return function(_0x5797ae){if(_0x5797ae){var _0x53f89f=typeof _0x2b3411['offset']===_0xad25('0x20')&&typeof _0x2b3411[_0xad25('0x21')]==='undefined';var _0x25bcbd=_0x5797ae['count'];var _0x14aa72=_0x53f89f?0x0:_0x2b3411[_0xad25('0x22')];var _0x47e580=_0x53f89f?_0x5797ae[_0xad25('0x23')]:_0x2b3411['offset']+_0x2b3411[_0xad25('0x21')];var _0x2cdeb9;if(_0x47e580>=_0x25bcbd){_0x47e580=_0x25bcbd;_0x2cdeb9=0xc8;}else{_0x2cdeb9=0xce;}_0x4f3336[_0xad25('0x1d')](_0x2cdeb9);return _0x4f3336['set'](_0xad25('0x24'),_0x14aa72+'-'+_0x47e580+'/'+_0x25bcbd)[_0xad25('0x1f')](_0x5797ae);}return null;};}function patchUpdates(_0x372527){return function(_0x5c810f){try{jsonpatch['apply'](_0x5c810f,_0x372527,!![]);}catch(_0x451aad){return BPromise[_0xad25('0x25')](_0x451aad);}return _0x5c810f[_0xad25('0x26')]();};}function saveUpdates(_0xbd6fe8,_0xbbface){return function(_0x2165a3){if(_0x2165a3){return _0x2165a3[_0xad25('0x27')](_0xbd6fe8)[_0xad25('0x28')](function(_0x256dd0){return _0x256dd0;});}return null;};}function removeEntity(_0x4caebe,_0xe1412a){return function(_0x406c67){if(_0x406c67){return _0x406c67[_0xad25('0x29')]()['then'](function(){_0x4caebe[_0xad25('0x1d')](0xcc)[_0xad25('0x1e')]();});}};}function handleEntityNotFound(_0x268215,_0x1885a8){return function(_0x434a46){if(!_0x434a46){_0x268215['sendStatus'](0x194);}return _0x434a46;};}function handleError(_0x1f8176,_0x1b9bb2){_0x1b9bb2=_0x1b9bb2||0x1f4;return function(_0x3fa004){logger[_0xad25('0x2a')](_0x3fa004[_0xad25('0x2b')]);if(_0x3fa004[_0xad25('0x2c')]){delete _0x3fa004[_0xad25('0x2c')];}_0x1f8176[_0xad25('0x1d')](_0x1b9bb2)[_0xad25('0x2d')](_0x3fa004);};}exports['index']=function(_0x4e6d01,_0x1aafa5){var _0x3faab7={},_0x348698={},_0x2e7eee={'count':0x0,'rows':[]};var _0x22bf8d=_[_0xad25('0x2e')](db[_0xad25('0x2f')][_0xad25('0x30')],function(_0x2d3f3d){return{'name':_0x2d3f3d['fieldName'],'type':_0x2d3f3d[_0xad25('0x31')][_0xad25('0x32')]};});_0x348698[_0xad25('0x33')]=_[_0xad25('0x2e')](_0x22bf8d,_0xad25('0x2c'));_0x348698[_0xad25('0x34')]=_[_0xad25('0x35')](_0x4e6d01[_0xad25('0x34')]);_0x348698[_0xad25('0x36')]=_[_0xad25('0x37')](_0x348698[_0xad25('0x33')],_0x348698['query']);_0x3faab7[_0xad25('0x38')]=_[_0xad25('0x37')](_0x348698[_0xad25('0x33')],qs[_0xad25('0x39')](_0x4e6d01[_0xad25('0x34')]['fields']));_0x3faab7[_0xad25('0x38')]=_0x3faab7[_0xad25('0x38')][_0xad25('0x3a')]?_0x3faab7['attributes']:_0x348698[_0xad25('0x33')];if(!_0x4e6d01[_0xad25('0x34')]['hasOwnProperty'](_0xad25('0x3b'))){_0x3faab7[_0xad25('0x21')]=qs['limit'](_0x4e6d01[_0xad25('0x34')]['limit']);_0x3faab7[_0xad25('0x22')]=qs['offset'](_0x4e6d01['query'][_0xad25('0x22')]);}_0x3faab7[_0xad25('0x3c')]=qs[_0xad25('0x3d')](_0x4e6d01[_0xad25('0x34')]['sort']);_0x3faab7['where']=qs[_0xad25('0x36')](_[_0xad25('0x3e')](_0x4e6d01['query'],_0x348698[_0xad25('0x36')]),_0x22bf8d);if(_0x4e6d01['query'][_0xad25('0x3f')]){_0x3faab7[_0xad25('0x40')]=_[_0xad25('0x41')](_0x3faab7[_0xad25('0x40')],{'$or':_[_0xad25('0x2e')](_0x22bf8d,function(_0x2f93a7){if(_0x2f93a7[_0xad25('0x31')]!==_0xad25('0x42')){var _0x33c57a={};_0x33c57a[_0x2f93a7[_0xad25('0x2c')]]={'$like':'%'+_0x4e6d01[_0xad25('0x34')]['filter']+'%'};return _0x33c57a;}})});}_0x3faab7=_[_0xad25('0x41')]({},_0x3faab7,_0x4e6d01[_0xad25('0x43')]);var _0x2d23a4={'where':_0x3faab7[_0xad25('0x40')]};return db['SugarcrmField']['count'](_0x2d23a4)[_0xad25('0x28')](function(_0x48dadb){_0x2e7eee[_0xad25('0x23')]=_0x48dadb;if(_0x4e6d01['query'][_0xad25('0x44')]){_0x3faab7[_0xad25('0x45')]=[{'all':!![]}];}return db[_0xad25('0x2f')][_0xad25('0x46')](_0x3faab7);})[_0xad25('0x28')](function(_0x201164){_0x2e7eee[_0xad25('0x47')]=_0x201164;return _0x2e7eee;})['then'](respondWithFilteredResult(_0x1aafa5,_0x3faab7))[_0xad25('0x48')](handleError(_0x1aafa5,null));};exports[_0xad25('0x49')]=function(_0x4cd630,_0x543df8){var _0x3940cc={'raw':!![],'where':{'id':_0x4cd630['params']['id']}},_0x37b1df={};_0x37b1df[_0xad25('0x33')]=_['keys'](db[_0xad25('0x2f')][_0xad25('0x30')]);_0x37b1df[_0xad25('0x34')]=_[_0xad25('0x35')](_0x4cd630[_0xad25('0x34')]);_0x37b1df['filters']=_[_0xad25('0x37')](_0x37b1df[_0xad25('0x33')],_0x37b1df['query']);_0x3940cc[_0xad25('0x38')]=_[_0xad25('0x37')](_0x37b1df['model'],qs[_0xad25('0x39')](_0x4cd630[_0xad25('0x34')][_0xad25('0x39')]));_0x3940cc[_0xad25('0x38')]=_0x3940cc[_0xad25('0x38')][_0xad25('0x3a')]?_0x3940cc[_0xad25('0x38')]:_0x37b1df[_0xad25('0x33')];if(_0x4cd630['query'][_0xad25('0x44')]){_0x3940cc[_0xad25('0x45')]=[{'all':!![]}];}_0x3940cc=_[_0xad25('0x41')]({},_0x3940cc,_0x4cd630[_0xad25('0x43')]);return db['SugarcrmField'][_0xad25('0x4a')](_0x3940cc)[_0xad25('0x28')](handleEntityNotFound(_0x543df8,null))[_0xad25('0x28')](respondWithResult(_0x543df8,null))[_0xad25('0x48')](handleError(_0x543df8,null));};exports[_0xad25('0x4b')]=function(_0x2e39e5,_0x310032){return db[_0xad25('0x2f')][_0xad25('0x4b')](_0x2e39e5[_0xad25('0x4c')],{})['then'](respondWithResult(_0x310032,0xc9))[_0xad25('0x48')](handleError(_0x310032,null));};exports['update']=function(_0x2d0d2b,_0xb35073){if(_0x2d0d2b[_0xad25('0x4c')]['id']){delete _0x2d0d2b[_0xad25('0x4c')]['id'];}return db[_0xad25('0x2f')]['find']({'where':{'id':_0x2d0d2b[_0xad25('0x4d')]['id']}})[_0xad25('0x28')](handleEntityNotFound(_0xb35073,null))[_0xad25('0x28')](saveUpdates(_0x2d0d2b[_0xad25('0x4c')],null))[_0xad25('0x28')](respondWithResult(_0xb35073,null))['catch'](handleError(_0xb35073,null));};exports[_0xad25('0x29')]=function(_0x377cda,_0x225809){return db[_0xad25('0x2f')][_0xad25('0x4a')]({'where':{'id':_0x377cda['params']['id']}})[_0xad25('0x28')](handleEntityNotFound(_0x225809,null))[_0xad25('0x28')](removeEntity(_0x225809,null))[_0xad25('0x48')](handleError(_0x225809,null));};
\ No newline at end of file
+var _0xbb9a=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','Content-Range','apply','save','update','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','SugarcrmField','findAll','catch','show','params','body','find','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x34bf97,_0xc60f9d){var _0x292719=function(_0x31354e){while(--_0x31354e){_0x34bf97['push'](_0x34bf97['shift']());}};_0x292719(++_0xc60f9d);}(_0xbb9a,0x81));var _0xabb9=function(_0x5ee163,_0x188290){_0x5ee163=_0x5ee163-0x0;var _0x4fe0a7=_0xbb9a[_0x5ee163];return _0x4fe0a7;};'use strict';var emlformat=require(_0xabb9('0x0'));var rimraf=require(_0xabb9('0x1'));var zipdir=require(_0xabb9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xabb9('0x3'));var moment=require(_0xabb9('0x4'));var BPromise=require(_0xabb9('0x5'));var Mustache=require(_0xabb9('0x6'));var util=require('util');var path=require(_0xabb9('0x7'));var sox=require('sox');var csv=require(_0xabb9('0x8'));var ejs=require(_0xabb9('0x9'));var fs=require('fs');var fs_extra=require(_0xabb9('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xabb9('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xabb9('0xc'));var toCsv=require('to-csv');var querystring=require(_0xabb9('0xd'));var Papa=require('papaparse');var Redis=require(_0xabb9('0xe'));var authService=require(_0xabb9('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xabb9('0x10'));var hardwareService=require(_0xabb9('0x11'));var logger=require(_0xabb9('0x12'))(_0xabb9('0x13'));var utils=require(_0xabb9('0x14'));var config=require(_0xabb9('0x15'));var licenseUtil=require(_0xabb9('0x16'));var db=require(_0xabb9('0x17'))['db'];function respondWithStatusCode(_0x64e9dd,_0xa23d64){_0xa23d64=_0xa23d64||0xcc;return function(_0x1ca9b5){if(_0x1ca9b5){return _0x64e9dd[_0xabb9('0x18')](_0xa23d64);}return _0x64e9dd['status'](_0xa23d64)[_0xabb9('0x19')]();};}function respondWithResult(_0x2810e7,_0xc711b1){_0xc711b1=_0xc711b1||0xc8;return function(_0x2e9fa5){if(_0x2e9fa5){return _0x2810e7['status'](_0xc711b1)[_0xabb9('0x1a')](_0x2e9fa5);}};}function respondWithFilteredResult(_0x237ed6,_0x3da9f0){return function(_0x1dc02a){if(_0x1dc02a){var _0x3ac35a=typeof _0x3da9f0[_0xabb9('0x1b')]===_0xabb9('0x1c')&&typeof _0x3da9f0[_0xabb9('0x1d')]==='undefined';var _0x325c1f=_0x1dc02a[_0xabb9('0x1e')];var _0x266ffc=_0x3ac35a?0x0:_0x3da9f0['offset'];var _0x445865=_0x3ac35a?_0x1dc02a['count']:_0x3da9f0[_0xabb9('0x1b')]+_0x3da9f0[_0xabb9('0x1d')];var _0xd2c9e5;if(_0x445865>=_0x325c1f){_0x445865=_0x325c1f;_0xd2c9e5=0xc8;}else{_0xd2c9e5=0xce;}_0x237ed6[_0xabb9('0x1f')](_0xd2c9e5);return _0x237ed6['set'](_0xabb9('0x20'),_0x266ffc+'-'+_0x445865+'/'+_0x325c1f)[_0xabb9('0x1a')](_0x1dc02a);}return null;};}function patchUpdates(_0x2db6ab){return function(_0x41888b){try{jsonpatch[_0xabb9('0x21')](_0x41888b,_0x2db6ab,!![]);}catch(_0x18af16){return BPromise['reject'](_0x18af16);}return _0x41888b[_0xabb9('0x22')]();};}function saveUpdates(_0x36697a,_0x2c15b2){return function(_0x3c77ff){if(_0x3c77ff){return _0x3c77ff[_0xabb9('0x23')](_0x36697a)[_0xabb9('0x24')](function(_0x3fe677){return _0x3fe677;});}return null;};}function removeEntity(_0x3f1c1c,_0x51127b){return function(_0x36a8d9){if(_0x36a8d9){return _0x36a8d9[_0xabb9('0x25')]()[_0xabb9('0x24')](function(){_0x3f1c1c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5acb31,_0x1578f5){return function(_0x4a8325){if(!_0x4a8325){_0x5acb31[_0xabb9('0x18')](0x194);}return _0x4a8325;};}function handleError(_0x756fcd,_0x2a8b87){_0x2a8b87=_0x2a8b87||0x1f4;return function(_0x2dde40){logger[_0xabb9('0x26')](_0x2dde40[_0xabb9('0x27')]);if(_0x2dde40['name']){delete _0x2dde40[_0xabb9('0x28')];}_0x756fcd['status'](_0x2a8b87)[_0xabb9('0x29')](_0x2dde40);};}exports['index']=function(_0x399a25,_0x33f2b3){var _0x3dd4d7={},_0x5e1a4c={},_0x934fec={'count':0x0,'rows':[]};var _0x157294=_[_0xabb9('0x2a')](db['SugarcrmField'][_0xabb9('0x2b')],function(_0x5d64e1){return{'name':_0x5d64e1[_0xabb9('0x2c')],'type':_0x5d64e1[_0xabb9('0x2d')][_0xabb9('0x2e')]};});_0x5e1a4c[_0xabb9('0x2f')]=_['map'](_0x157294,_0xabb9('0x28'));_0x5e1a4c[_0xabb9('0x30')]=_[_0xabb9('0x31')](_0x399a25[_0xabb9('0x30')]);_0x5e1a4c[_0xabb9('0x32')]=_[_0xabb9('0x33')](_0x5e1a4c['model'],_0x5e1a4c['query']);_0x3dd4d7[_0xabb9('0x34')]=_['intersection'](_0x5e1a4c[_0xabb9('0x2f')],qs[_0xabb9('0x35')](_0x399a25[_0xabb9('0x30')][_0xabb9('0x35')]));_0x3dd4d7[_0xabb9('0x34')]=_0x3dd4d7[_0xabb9('0x34')][_0xabb9('0x36')]?_0x3dd4d7[_0xabb9('0x34')]:_0x5e1a4c['model'];if(!_0x399a25['query'][_0xabb9('0x37')](_0xabb9('0x38'))){_0x3dd4d7[_0xabb9('0x1d')]=qs['limit'](_0x399a25[_0xabb9('0x30')][_0xabb9('0x1d')]);_0x3dd4d7[_0xabb9('0x1b')]=qs[_0xabb9('0x1b')](_0x399a25[_0xabb9('0x30')][_0xabb9('0x1b')]);}_0x3dd4d7[_0xabb9('0x39')]=qs[_0xabb9('0x3a')](_0x399a25[_0xabb9('0x30')][_0xabb9('0x3a')]);_0x3dd4d7[_0xabb9('0x3b')]=qs[_0xabb9('0x32')](_[_0xabb9('0x3c')](_0x399a25[_0xabb9('0x30')],_0x5e1a4c['filters']),_0x157294);if(_0x399a25[_0xabb9('0x30')][_0xabb9('0x3d')]){_0x3dd4d7[_0xabb9('0x3b')]=_[_0xabb9('0x3e')](_0x3dd4d7[_0xabb9('0x3b')],{'$or':_[_0xabb9('0x2a')](_0x157294,function(_0x4c11c2){if(_0x4c11c2[_0xabb9('0x2d')]!==_0xabb9('0x3f')){var _0x23bd99={};_0x23bd99[_0x4c11c2[_0xabb9('0x28')]]={'$like':'%'+_0x399a25[_0xabb9('0x30')][_0xabb9('0x3d')]+'%'};return _0x23bd99;}})});}_0x3dd4d7=_['merge']({},_0x3dd4d7,_0x399a25[_0xabb9('0x40')]);var _0x43b5f7={'where':_0x3dd4d7[_0xabb9('0x3b')]};return db['SugarcrmField'][_0xabb9('0x1e')](_0x43b5f7)[_0xabb9('0x24')](function(_0x40a6e5){_0x934fec[_0xabb9('0x1e')]=_0x40a6e5;if(_0x399a25['query'][_0xabb9('0x41')]){_0x3dd4d7[_0xabb9('0x42')]=[{'all':!![]}];}return db[_0xabb9('0x43')][_0xabb9('0x44')](_0x3dd4d7);})['then'](function(_0x29dca2){_0x934fec['rows']=_0x29dca2;return _0x934fec;})[_0xabb9('0x24')](respondWithFilteredResult(_0x33f2b3,_0x3dd4d7))[_0xabb9('0x45')](handleError(_0x33f2b3,null));};exports[_0xabb9('0x46')]=function(_0x38a8bf,_0x2c50ad){var _0x48498d={'raw':!![],'where':{'id':_0x38a8bf[_0xabb9('0x47')]['id']}},_0x2a8103={};_0x2a8103[_0xabb9('0x2f')]=_[_0xabb9('0x31')](db[_0xabb9('0x43')][_0xabb9('0x2b')]);_0x2a8103[_0xabb9('0x30')]=_[_0xabb9('0x31')](_0x38a8bf[_0xabb9('0x30')]);_0x2a8103[_0xabb9('0x32')]=_[_0xabb9('0x33')](_0x2a8103[_0xabb9('0x2f')],_0x2a8103[_0xabb9('0x30')]);_0x48498d['attributes']=_['intersection'](_0x2a8103['model'],qs[_0xabb9('0x35')](_0x38a8bf[_0xabb9('0x30')][_0xabb9('0x35')]));_0x48498d['attributes']=_0x48498d[_0xabb9('0x34')][_0xabb9('0x36')]?_0x48498d[_0xabb9('0x34')]:_0x2a8103[_0xabb9('0x2f')];if(_0x38a8bf['query'][_0xabb9('0x41')]){_0x48498d[_0xabb9('0x42')]=[{'all':!![]}];}_0x48498d=_[_0xabb9('0x3e')]({},_0x48498d,_0x38a8bf[_0xabb9('0x40')]);return db[_0xabb9('0x43')]['find'](_0x48498d)['then'](handleEntityNotFound(_0x2c50ad,null))[_0xabb9('0x24')](respondWithResult(_0x2c50ad,null))['catch'](handleError(_0x2c50ad,null));};exports['create']=function(_0x4c4987,_0x234623){return db[_0xabb9('0x43')]['create'](_0x4c4987['body'],{})['then'](respondWithResult(_0x234623,0xc9))[_0xabb9('0x45')](handleError(_0x234623,null));};exports[_0xabb9('0x23')]=function(_0x133bcf,_0x172229){if(_0x133bcf[_0xabb9('0x48')]['id']){delete _0x133bcf[_0xabb9('0x48')]['id'];}return db['SugarcrmField'][_0xabb9('0x49')]({'where':{'id':_0x133bcf[_0xabb9('0x47')]['id']}})['then'](handleEntityNotFound(_0x172229,null))['then'](saveUpdates(_0x133bcf[_0xabb9('0x48')],null))['then'](respondWithResult(_0x172229,null))[_0xabb9('0x45')](handleError(_0x172229,null));};exports[_0xabb9('0x25')]=function(_0x335379,_0xaa7fbc){return db[_0xabb9('0x43')][_0xabb9('0x49')]({'where':{'id':_0x335379[_0xabb9('0x47')]['id']}})[_0xabb9('0x24')](handleEntityNotFound(_0xaa7fbc,null))['then'](removeEntity(_0xaa7fbc,null))['catch'](handleError(_0xaa7fbc,null));};
\ No newline at end of file
index da9fe7f..2f30f2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa116=['../../config/logger','api','moment','path','rimraf','../../config/environment','./intSugarcrmField.attributes','int_sugarcrm_fields','sugarcrm_unique_index','lodash','util'];(function(_0x2b3a40,_0x386ecd){var _0x2ad588=function(_0x4c5829){while(--_0x4c5829){_0x2b3a40['push'](_0x2b3a40['shift']());}};_0x2ad588(++_0x386ecd);}(_0xa116,0xb9));var _0x6a11=function(_0x344797,_0x326149){_0x344797=_0x344797-0x0;var _0x405414=_0xa116[_0x344797];return _0x405414;};'use strict';var _=require(_0x6a11('0x0'));var util=require(_0x6a11('0x1'));var logger=require(_0x6a11('0x2'))(_0x6a11('0x3'));var moment=require(_0x6a11('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x6a11('0x5'));var rimraf=require(_0x6a11('0x6'));var config=require(_0x6a11('0x7'));var attributes=require(_0x6a11('0x8'));module['exports']=function(_0x46c7b5,_0x40d4a3){return _0x46c7b5['define']('SugarcrmField',attributes,{'tableName':_0x6a11('0x9'),'paranoid':![],'indexes':[{'name':_0x6a11('0xa'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb957=['bluebird','path','rimraf','../../config/environment','./intSugarcrmField.attributes','exports','define','SugarcrmField','int_sugarcrm_fields','idField','lodash','util','../../config/logger','api','moment'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xb957,0x145));var _0x7b95=function(_0x3fdbdc,_0x3d0ffb){_0x3fdbdc=_0x3fdbdc-0x0;var _0x1e2c47=_0xb957[_0x3fdbdc];return _0x1e2c47;};'use strict';var _=require(_0x7b95('0x0'));var util=require(_0x7b95('0x1'));var logger=require(_0x7b95('0x2'))(_0x7b95('0x3'));var moment=require(_0x7b95('0x4'));var BPromise=require(_0x7b95('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7b95('0x6'));var rimraf=require(_0x7b95('0x7'));var config=require(_0x7b95('0x8'));var attributes=require(_0x7b95('0x9'));module[_0x7b95('0xa')]=function(_0x51ba05,_0x585fe0){return _0x51ba05[_0x7b95('0xb')](_0x7b95('0xc'),attributes,{'tableName':_0x7b95('0xd'),'paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':[_0x7b95('0xe'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index ebbd820..bc56f20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef6b=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis'];(function(_0x27fd42,_0x1ed7cc){var _0x508cc0=function(_0x24421c){while(--_0x24421c){_0x27fd42['push'](_0x27fd42['shift']());}};_0x508cc0(++_0x1ed7cc);}(_0xef6b,0x1de));var _0xbef6=function(_0x5c5362,_0x5023c4){_0x5c5362=_0x5c5362-0x0;var _0x4213f6=_0xef6b[_0x5c5362];return _0x4213f6;};'use strict';var _=require(_0xbef6('0x0'));var util=require('util');var moment=require(_0xbef6('0x1'));var BPromise=require(_0xbef6('0x2'));var rs=require(_0xbef6('0x3'));var fs=require('fs');var Redis=require(_0xbef6('0x4'));var db=require(_0xbef6('0x5'))['db'];var utils=require(_0xbef6('0x6'));var logger=require('../../config/logger')(_0xbef6('0x7'));var config=require(_0xbef6('0x8'));var jayson=require(_0xbef6('0x9'));var client=jayson[_0xbef6('0xa')][_0xbef6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xe56de1,_0x57a500,_0x462b5e){return new BPromise(function(_0x4409ee,_0x179938){return client[_0xbef6('0xc')](_0xe56de1,_0x462b5e)[_0xbef6('0xd')](function(_0x45894f){logger['info'](_0xbef6('0xe'),_0x57a500,_0xbef6('0xf'));logger[_0xbef6('0x10')]('SugarcrmField,\x20%s,\x20%s,\x20%s',_0x57a500,_0xbef6('0xf'),JSON[_0xbef6('0x11')](_0x45894f));if(_0x45894f[_0xbef6('0x12')]){if(_0x45894f['error']['code']===0x1f4){logger['error'](_0xbef6('0xe'),_0x57a500,_0x45894f[_0xbef6('0x12')]['message']);return _0x179938(_0x45894f[_0xbef6('0x12')][_0xbef6('0x13')]);}logger[_0xbef6('0x12')]('SugarcrmField,\x20%s,\x20%s',_0x57a500,_0x45894f['error'][_0xbef6('0x13')]);return _0x4409ee(_0x45894f[_0xbef6('0x12')][_0xbef6('0x13')]);}else{logger[_0xbef6('0x14')]('SugarcrmField,\x20%s,\x20%s',_0x57a500,'request\x20sent');_0x4409ee(_0x45894f[_0xbef6('0x15')][_0xbef6('0x13')]);}})[_0xbef6('0x16')](function(_0x3a0482){logger['error'](_0xbef6('0xe'),_0x57a500,_0x3a0482);_0x179938(_0x3a0482);});});}
\ No newline at end of file
+var _0x6d73=['result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x6d73,0x66));var _0x36d7=function(_0xf75663,_0x181505){_0xf75663=_0xf75663-0x0;var _0x38e6e9=_0x6d73[_0xf75663];return _0x38e6e9;};'use strict';var _=require(_0x36d7('0x0'));var util=require(_0x36d7('0x1'));var moment=require(_0x36d7('0x2'));var BPromise=require(_0x36d7('0x3'));var rs=require(_0x36d7('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x36d7('0x5'))['db'];var utils=require(_0x36d7('0x6'));var logger=require(_0x36d7('0x7'))(_0x36d7('0x8'));var config=require(_0x36d7('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x36d7('0xa')][_0x36d7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x574db2,_0x4b9867,_0x306491){return new BPromise(function(_0x41dc94,_0x95a645){return client[_0x36d7('0xc')](_0x574db2,_0x306491)[_0x36d7('0xd')](function(_0x104d6c){logger[_0x36d7('0xe')](_0x36d7('0xf'),_0x4b9867,_0x36d7('0x10'));logger[_0x36d7('0x11')](_0x36d7('0x12'),_0x4b9867,_0x36d7('0x10'),JSON[_0x36d7('0x13')](_0x104d6c));if(_0x104d6c[_0x36d7('0x14')]){if(_0x104d6c['error'][_0x36d7('0x15')]===0x1f4){logger[_0x36d7('0x14')](_0x36d7('0xf'),_0x4b9867,_0x104d6c['error'][_0x36d7('0x16')]);return _0x95a645(_0x104d6c['error'][_0x36d7('0x16')]);}logger[_0x36d7('0x14')](_0x36d7('0xf'),_0x4b9867,_0x104d6c[_0x36d7('0x14')][_0x36d7('0x16')]);return _0x41dc94(_0x104d6c['error'][_0x36d7('0x16')]);}else{logger[_0x36d7('0xe')](_0x36d7('0xf'),_0x4b9867,_0x36d7('0x10'));_0x41dc94(_0x104d6c[_0x36d7('0x17')][_0x36d7('0x16')]);}})[_0x36d7('0x18')](function(_0xa63d53){logger[_0x36d7('0x14')]('SugarcrmField,\x20%s,\x20%s',_0x4b9867,_0xa63d53);_0x95a645(_0xa63d53);});});}
\ No newline at end of file
index 00d9e3f..f6fef0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2ae=['util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','multer'];(function(_0x38d7ee,_0x1bd677){var _0xa0479=function(_0xe284f3){while(--_0xe284f3){_0x38d7ee['push'](_0x38d7ee['shift']());}};_0xa0479(++_0x1bd677);}(_0xa2ae,0x95));var _0xea2a=function(_0xddfbdc,_0x561a0b){_0xddfbdc=_0xddfbdc-0x0;var _0x395d72=_0xa2ae[_0xddfbdc];return _0x395d72;};'use strict';var multer=require(_0xea2a('0x0'));var util=require(_0xea2a('0x1'));var path=require('path');var timeout=require(_0xea2a('0x2'));var express=require(_0xea2a('0x3'));var router=express[_0xea2a('0x4')]();var fs_extra=require(_0xea2a('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xea2a('0x6'));var config=require(_0xea2a('0x7'));var controller=require(_0xea2a('0x8'));router[_0xea2a('0x9')]('/',auth[_0xea2a('0xa')](),controller[_0xea2a('0xb')]);router[_0xea2a('0x9')](_0xea2a('0xc'),auth[_0xea2a('0xa')](),controller[_0xea2a('0xd')]);router[_0xea2a('0x9')](_0xea2a('0xe'),auth['isAuthenticated'](),controller[_0xea2a('0xf')]);router[_0xea2a('0x9')](_0xea2a('0x10'),auth[_0xea2a('0xa')](),controller[_0xea2a('0x11')]);router[_0xea2a('0x12')]('/',auth[_0xea2a('0xa')](),controller[_0xea2a('0x13')]);router[_0xea2a('0x12')](_0xea2a('0xe'),auth['isAuthenticated'](),controller[_0xea2a('0x14')]);router[_0xea2a('0x15')](_0xea2a('0xc'),auth[_0xea2a('0xa')](),controller[_0xea2a('0x16')]);router[_0xea2a('0x17')](_0xea2a('0xc'),auth['isAuthenticated'](),controller[_0xea2a('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0xd73a=['getConfigurations','/:id/fields','getFields','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations'];(function(_0x57d058,_0xb58cfe){var _0x312d74=function(_0x44e969){while(--_0x44e969){_0x57d058['push'](_0x57d058['shift']());}};_0x312d74(++_0xb58cfe);}(_0xd73a,0x171));var _0xad73=function(_0x2f7c1e,_0x490fae){_0x2f7c1e=_0x2f7c1e-0x0;var _0x1fc665=_0xd73a[_0x2f7c1e];return _0x1fc665;};'use strict';var multer=require(_0xad73('0x0'));var util=require(_0xad73('0x1'));var path=require(_0xad73('0x2'));var timeout=require(_0xad73('0x3'));var express=require(_0xad73('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xad73('0x5'));var interaction=require(_0xad73('0x6'));var config=require(_0xad73('0x7'));var controller=require(_0xad73('0x8'));router[_0xad73('0x9')]('/',auth[_0xad73('0xa')](),controller[_0xad73('0xb')]);router[_0xad73('0x9')](_0xad73('0xc'),auth[_0xad73('0xa')](),controller[_0xad73('0xd')]);router['get'](_0xad73('0xe'),auth['isAuthenticated'](),controller[_0xad73('0xf')]);router[_0xad73('0x9')](_0xad73('0x10'),auth['isAuthenticated'](),controller[_0xad73('0x11')]);router['post']('/',auth[_0xad73('0xa')](),controller['create']);router[_0xad73('0x12')](_0xad73('0xe'),auth[_0xad73('0xa')](),controller['addConfiguration']);router[_0xad73('0x13')](_0xad73('0xc'),auth['isAuthenticated'](),controller[_0xad73('0x14')]);router[_0xad73('0x15')](_0xad73('0xc'),auth[_0xad73('0xa')](),controller[_0xad73('0x16')]);module[_0xad73('0x17')]=router;
\ No newline at end of file
index 6fb823a..cee18ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cf4=['HelpDesk','sequelize','exports','STRING'];(function(_0x4aa901,_0x8ca51f){var _0x421aa9=function(_0x17d3be){while(--_0x17d3be){_0x4aa901['push'](_0x4aa901['shift']());}};_0x421aa9(++_0x8ca51f);}(_0x7cf4,0x12d));var _0x47cf=function(_0x8851d8,_0x4ee9b0){_0x8851d8=_0x8851d8-0x0;var _0x38bbb3=_0x7cf4[_0x8851d8];return _0x38bbb3;};'use strict';var Sequelize=require(_0x47cf('0x0'));module[_0x47cf('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x47cf('0x2')]},'username':{'type':Sequelize[_0x47cf('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize[_0x47cf('0x2')],'allowNull':![],'defaultValue':_0x47cf('0x3')},'remoteUri':{'type':Sequelize[_0x47cf('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x47cf('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x47cf('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xa958=['STRING','HelpDesk','sequelize','exports'];(function(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0xa958,0xaa));var _0x8a95=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0xa958[_0xc6be3a];return _0x56a310;};'use strict';var Sequelize=require(_0x8a95('0x0'));module[_0x8a95('0x1')]={'name':{'type':Sequelize[_0x8a95('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x8a95('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize[_0x8a95('0x2')],'allowNull':![],'defaultValue':_0x8a95('0x3')},'remoteUri':{'type':Sequelize['STRING'],'allowNull':![]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'accessKey':{'type':Sequelize[_0x8a95('0x2')],'allowNull':![]}};
\ No newline at end of file
index fbc2639..299533d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x626f=['include','findAll','rows','show','rawAttributes','find','create','body','update','params','catch','getConfigurations','findOne','VtigerConfiguration','addConfiguration','Subjects','getSubjects','channel','Descriptions','VtigerField','md5','getFields','username','moduleName','remoteUri','serverUrl','accessKey','slice','substring','%s/webservice.php','GET','getchallenge','success','POST','login','describe','result','sessionName','autogenerated','reference','owner','includes','editable','false','label','cf_','picklist','picklistValues','vTiger\x20error:\x20','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','save','then','destroy','stack','name','send','index','map','VtigerAccount','fieldName','type','key','query','keys','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','options','includeAll'];(function(_0x431a99,_0x463a96){var _0x378540=function(_0x2c3e86){while(--_0x2c3e86){_0x431a99['push'](_0x431a99['shift']());}};_0x378540(++_0x463a96);}(_0x626f,0xad));var _0xf626=function(_0xfd624c,_0x1faff0){_0xfd624c=_0xfd624c-0x0;var _0x2efebf=_0x626f[_0xfd624c];return _0x2efebf;};'use strict';var emlformat=require(_0xf626('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf626('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf626('0x2'));var moment=require(_0xf626('0x3'));var BPromise=require(_0xf626('0x4'));var Mustache=require(_0xf626('0x5'));var util=require(_0xf626('0x6'));var path=require(_0xf626('0x7'));var sox=require(_0xf626('0x8'));var csv=require(_0xf626('0x9'));var ejs=require(_0xf626('0xa'));var fs=require('fs');var fs_extra=require(_0xf626('0xb'));var _=require(_0xf626('0xc'));var squel=require('squel');var crypto=require(_0xf626('0xd'));var jsforce=require(_0xf626('0xe'));var deskjs=require(_0xf626('0xf'));var toCsv=require(_0xf626('0x9'));var querystring=require(_0xf626('0x10'));var Papa=require('papaparse');var Redis=require(_0xf626('0x11'));var authService=require(_0xf626('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf626('0x13'));var logger=require(_0xf626('0x14'))(_0xf626('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xf626('0x16'));var db=require('../../mysqldb')['db'];var integrations=require(_0xf626('0x17'));function respondWithStatusCode(_0x52338f,_0xc06b28){_0xc06b28=_0xc06b28||0xcc;return function(_0x55d374){if(_0x55d374){return _0x52338f[_0xf626('0x18')](_0xc06b28);}return _0x52338f[_0xf626('0x19')](_0xc06b28)[_0xf626('0x1a')]();};}function respondWithResult(_0x4e67be,_0x1dc7bd){_0x1dc7bd=_0x1dc7bd||0xc8;return function(_0x96f669){if(_0x96f669){return _0x4e67be[_0xf626('0x19')](_0x1dc7bd)['json'](_0x96f669);}};}function respondWithFilteredResult(_0xa5ec39,_0x291b00){return function(_0xa70a3b){if(_0xa70a3b){var _0x3edb4c=typeof _0x291b00[_0xf626('0x1b')]===_0xf626('0x1c')&&typeof _0x291b00['limit']===_0xf626('0x1c');var _0x42b100=_0xa70a3b[_0xf626('0x1d')];var _0x10c8ef=_0x3edb4c?0x0:_0x291b00[_0xf626('0x1b')];var _0x4c4cc0=_0x3edb4c?_0xa70a3b[_0xf626('0x1d')]:_0x291b00['offset']+_0x291b00[_0xf626('0x1e')];var _0x429483;if(_0x4c4cc0>=_0x42b100){_0x4c4cc0=_0x42b100;_0x429483=0xc8;}else{_0x429483=0xce;}_0xa5ec39[_0xf626('0x19')](_0x429483);return _0xa5ec39[_0xf626('0x1f')](_0xf626('0x20'),_0x10c8ef+'-'+_0x4c4cc0+'/'+_0x42b100)['json'](_0xa70a3b);}return null;};}function patchUpdates(_0x31b94b){return function(_0x5ba449){try{jsonpatch['apply'](_0x5ba449,_0x31b94b,!![]);}catch(_0x14eab9){return BPromise['reject'](_0x14eab9);}return _0x5ba449[_0xf626('0x21')]();};}function saveUpdates(_0x7c6999,_0x36256e){return function(_0x5bcf6f){if(_0x5bcf6f){return _0x5bcf6f['update'](_0x7c6999)[_0xf626('0x22')](function(_0x361b5a){return _0x361b5a;});}return null;};}function removeEntity(_0x3c47d2,_0x2e49eb){return function(_0x23f48f){if(_0x23f48f){return _0x23f48f[_0xf626('0x23')]()[_0xf626('0x22')](function(){_0x3c47d2[_0xf626('0x19')](0xcc)[_0xf626('0x1a')]();});}};}function handleEntityNotFound(_0x1d08b0,_0x10c0f0){return function(_0x3048fb){if(!_0x3048fb){_0x1d08b0[_0xf626('0x18')](0x194);}return _0x3048fb;};}function handleError(_0x3782cb,_0x4533aa){_0x4533aa=_0x4533aa||0x1f4;return function(_0x92a975){logger['error'](_0x92a975[_0xf626('0x24')]);if(_0x92a975['name']){delete _0x92a975[_0xf626('0x25')];}_0x3782cb['status'](_0x4533aa)[_0xf626('0x26')](_0x92a975);};}exports[_0xf626('0x27')]=function(_0x45b520,_0x4b36b0){var _0x14d3e9={},_0x51cdda={},_0x1e423c={'count':0x0,'rows':[]};var _0x1c3b36=_[_0xf626('0x28')](db[_0xf626('0x29')]['rawAttributes'],function(_0x5611c2){return{'name':_0x5611c2[_0xf626('0x2a')],'type':_0x5611c2[_0xf626('0x2b')][_0xf626('0x2c')]};});_0x51cdda['model']=_['map'](_0x1c3b36,'name');_0x51cdda[_0xf626('0x2d')]=_[_0xf626('0x2e')](_0x45b520[_0xf626('0x2d')]);_0x51cdda['filters']=_['intersection'](_0x51cdda[_0xf626('0x2f')],_0x51cdda[_0xf626('0x2d')]);_0x14d3e9[_0xf626('0x30')]=_[_0xf626('0x31')](_0x51cdda[_0xf626('0x2f')],qs['fields'](_0x45b520[_0xf626('0x2d')][_0xf626('0x32')]));_0x14d3e9[_0xf626('0x30')]=_0x14d3e9[_0xf626('0x30')][_0xf626('0x33')]?_0x14d3e9['attributes']:_0x51cdda[_0xf626('0x2f')];if(!_0x45b520[_0xf626('0x2d')][_0xf626('0x34')](_0xf626('0x35'))){_0x14d3e9[_0xf626('0x1e')]=qs[_0xf626('0x1e')](_0x45b520[_0xf626('0x2d')][_0xf626('0x1e')]);_0x14d3e9[_0xf626('0x1b')]=qs[_0xf626('0x1b')](_0x45b520[_0xf626('0x2d')]['offset']);}_0x14d3e9[_0xf626('0x36')]=qs[_0xf626('0x37')](_0x45b520[_0xf626('0x2d')][_0xf626('0x37')]);_0x14d3e9[_0xf626('0x38')]=qs['filters'](_[_0xf626('0x39')](_0x45b520[_0xf626('0x2d')],_0x51cdda[_0xf626('0x3a')]),_0x1c3b36);if(_0x45b520[_0xf626('0x2d')][_0xf626('0x3b')]){_0x14d3e9[_0xf626('0x38')]=_[_0xf626('0x3c')](_0x14d3e9[_0xf626('0x38')],{'$or':_['map'](_0x1c3b36,function(_0x4f34d1){if(_0x4f34d1['type']!=='VIRTUAL'){var _0x1c9e61={};_0x1c9e61[_0x4f34d1[_0xf626('0x25')]]={'$like':'%'+_0x45b520['query'][_0xf626('0x3b')]+'%'};return _0x1c9e61;}})});}_0x14d3e9=_['merge']({},_0x14d3e9,_0x45b520[_0xf626('0x3d')]);var _0x58bdf1={'where':_0x14d3e9[_0xf626('0x38')]};return db[_0xf626('0x29')]['count'](_0x58bdf1)[_0xf626('0x22')](function(_0x55d606){_0x1e423c['count']=_0x55d606;if(_0x45b520['query'][_0xf626('0x3e')]){_0x14d3e9[_0xf626('0x3f')]=[{'all':!![]}];}return db[_0xf626('0x29')][_0xf626('0x40')](_0x14d3e9);})['then'](function(_0x426778){_0x1e423c[_0xf626('0x41')]=_0x426778;return _0x1e423c;})[_0xf626('0x22')](respondWithFilteredResult(_0x4b36b0,_0x14d3e9))['catch'](handleError(_0x4b36b0,null));};exports[_0xf626('0x42')]=function(_0x4502d8,_0x503734){var _0x1e4a8f={'raw':![],'where':{'id':_0x4502d8['params']['id']}},_0xe13995={};_0xe13995[_0xf626('0x2f')]=_['keys'](db[_0xf626('0x29')][_0xf626('0x43')]);_0xe13995[_0xf626('0x2d')]=_['keys'](_0x4502d8['query']);_0xe13995[_0xf626('0x3a')]=_[_0xf626('0x31')](_0xe13995['model'],_0xe13995[_0xf626('0x2d')]);_0x1e4a8f[_0xf626('0x30')]=_[_0xf626('0x31')](_0xe13995[_0xf626('0x2f')],qs[_0xf626('0x32')](_0x4502d8[_0xf626('0x2d')][_0xf626('0x32')]));_0x1e4a8f[_0xf626('0x30')]=_0x1e4a8f[_0xf626('0x30')][_0xf626('0x33')]?_0x1e4a8f[_0xf626('0x30')]:_0xe13995['model'];if(_0x4502d8[_0xf626('0x2d')][_0xf626('0x3e')]){_0x1e4a8f[_0xf626('0x3f')]=[{'all':!![]}];}_0x1e4a8f=_[_0xf626('0x3c')]({},_0x1e4a8f,_0x4502d8[_0xf626('0x3d')]);return db[_0xf626('0x29')][_0xf626('0x44')](_0x1e4a8f)[_0xf626('0x22')](handleEntityNotFound(_0x503734,null))[_0xf626('0x22')](respondWithResult(_0x503734,null))['catch'](handleError(_0x503734,null));};exports['create']=function(_0x52b3ae,_0x4f3ad1){return db[_0xf626('0x29')][_0xf626('0x45')](_0x52b3ae[_0xf626('0x46')],{})[_0xf626('0x22')](respondWithResult(_0x4f3ad1,0xc9))['catch'](handleError(_0x4f3ad1,null));};exports[_0xf626('0x47')]=function(_0x48ece8,_0x1c3111){if(_0x48ece8[_0xf626('0x46')]['id']){delete _0x48ece8[_0xf626('0x46')]['id'];}return db['VtigerAccount'][_0xf626('0x44')]({'where':{'id':_0x48ece8[_0xf626('0x48')]['id']}})[_0xf626('0x22')](handleEntityNotFound(_0x1c3111,null))[_0xf626('0x22')](saveUpdates(_0x48ece8[_0xf626('0x46')],null))['then'](respondWithResult(_0x1c3111,null))[_0xf626('0x49')](handleError(_0x1c3111,null));};exports[_0xf626('0x23')]=function(_0x443ca4,_0x38f22f){return db[_0xf626('0x29')][_0xf626('0x44')]({'where':{'id':_0x443ca4[_0xf626('0x48')]['id']}})[_0xf626('0x22')](handleEntityNotFound(_0x38f22f,null))[_0xf626('0x22')](removeEntity(_0x38f22f,null))['catch'](handleError(_0x38f22f,null));};exports[_0xf626('0x4a')]=function(_0x4b421e,_0x5366fc,_0x46cc24){var _0x8a4502={};var _0x4b8eed={};var _0x1b8d64;var _0x1eaad0;return db[_0xf626('0x29')][_0xf626('0x4b')]({'where':{'id':_0x4b421e['params']['id']}})[_0xf626('0x22')](handleEntityNotFound(_0x5366fc,null))[_0xf626('0x22')](function(_0x262eec){if(_0x262eec){_0x1b8d64=_0x262eec;_0x4b8eed['model']=_['keys'](db[_0xf626('0x4c')]['rawAttributes']);_0x4b8eed[_0xf626('0x2d')]=_[_0xf626('0x2e')](_0x4b421e[_0xf626('0x2d')]);_0x4b8eed['filters']=_[_0xf626('0x31')](_0x4b8eed[_0xf626('0x2f')],_0x4b8eed[_0xf626('0x2d')]);_0x8a4502[_0xf626('0x30')]=_['intersection'](_0x4b8eed[_0xf626('0x2f')],qs[_0xf626('0x32')](_0x4b421e[_0xf626('0x2d')][_0xf626('0x32')]));_0x8a4502[_0xf626('0x30')]=_0x8a4502['attributes'][_0xf626('0x33')]?_0x8a4502[_0xf626('0x30')]:_0x4b8eed[_0xf626('0x2f')];_0x8a4502['order']=qs[_0xf626('0x37')](_0x4b421e[_0xf626('0x2d')][_0xf626('0x37')]);_0x8a4502[_0xf626('0x38')]=qs[_0xf626('0x3a')](_['pick'](_0x4b421e[_0xf626('0x2d')],_0x4b8eed[_0xf626('0x3a')]));if(_0x4b421e[_0xf626('0x2d')][_0xf626('0x3b')]){_0x8a4502[_0xf626('0x38')]=_['merge'](_0x8a4502[_0xf626('0x38')],{'$or':_[_0xf626('0x28')](_0x8a4502[_0xf626('0x30')],function(_0x46addb){var _0x1d6984={};_0x1d6984[_0x46addb]={'$like':'%'+_0x4b421e[_0xf626('0x2d')][_0xf626('0x3b')]+'%'};return _0x1d6984;})});}_0x8a4502=_[_0xf626('0x3c')]({},_0x8a4502,_0x4b421e['options']);return _0x1b8d64[_0xf626('0x4a')](_0x8a4502);}})[_0xf626('0x22')](function(_0x3ea261){if(_0x3ea261){_0x1eaad0=_0x3ea261['length'];if(!_0x4b421e[_0xf626('0x2d')][_0xf626('0x34')](_0xf626('0x35'))){_0x8a4502['limit']=qs[_0xf626('0x1e')](_0x4b421e[_0xf626('0x2d')][_0xf626('0x1e')]);_0x8a4502[_0xf626('0x1b')]=qs[_0xf626('0x1b')](_0x4b421e[_0xf626('0x2d')][_0xf626('0x1b')]);}return _0x1b8d64['getConfigurations'](_0x8a4502);}})['then'](function(_0x406232){if(_0x406232){return _0x406232?{'count':_0x1eaad0,'rows':_0x406232}:null;}})[_0xf626('0x22')](respondWithResult(_0x5366fc,null))[_0xf626('0x49')](handleError(_0x5366fc,null));};exports[_0xf626('0x4d')]=function(_0x581cb8,_0x337e8a,_0x295cb5){if(_0x581cb8[_0xf626('0x46')]['id']){delete _0x581cb8[_0xf626('0x46')]['id'];}return db[_0xf626('0x29')]['findOne']({'where':{'id':_0x581cb8[_0xf626('0x48')]['id']}})[_0xf626('0x22')](handleEntityNotFound(_0x337e8a,null))[_0xf626('0x22')](function(_0x107eeb){if(_0x107eeb){_0x581cb8[_0xf626('0x46')]['AccountId']=_0x107eeb['id'];_0x581cb8[_0xf626('0x46')][_0xf626('0x4e')]=integrations[_0xf626('0x4f')](_0x581cb8[_0xf626('0x46')][_0xf626('0x50')],_0x581cb8[_0xf626('0x46')][_0xf626('0x2b')]);_0x581cb8[_0xf626('0x46')][_0xf626('0x51')]=integrations['getDescriptions'](_0x581cb8[_0xf626('0x46')]['channel'],_0x581cb8['body'][_0xf626('0x2b')]);return db[_0xf626('0x4c')][_0xf626('0x45')](_0x581cb8[_0xf626('0x46')],{'include':[{'model':db[_0xf626('0x52')],'as':'Subjects'},{'model':db['VtigerField'],'as':_0xf626('0x51')}]});}return null;})[_0xf626('0x22')](respondWithResult(_0x337e8a,null))[_0xf626('0x49')](handleError(_0x337e8a,null));};var md5=require(_0xf626('0x53'));exports[_0xf626('0x54')]=function(_0x5c8be1,_0xb0c9df,_0x4ec2ed){var _0x423414=null;var _0x3102ea=null;var _0x4039a9=null;var _0x222621=null;var _0x430df7='';return db[_0xf626('0x29')][_0xf626('0x4b')]({'where':{'id':_0x5c8be1[_0xf626('0x48')]['id']},'attributes':['id',_0xf626('0x25'),_0xf626('0x55'),'description',_0xf626('0x56'),_0xf626('0x57'),_0xf626('0x58'),_0xf626('0x59')]})[_0xf626('0x22')](handleEntityNotFound(_0xb0c9df,null))[_0xf626('0x22')](function(_0x2d401e){if(_0x2d401e){_0x423414=_0x2d401e[_0xf626('0x55')];_0x3102ea=_0x2d401e[_0xf626('0x59')];_0x4039a9=_0x2d401e['moduleName'];_0x430df7=_0x2d401e[_0xf626('0x57')];var _0xedf96=_0x430df7[_0xf626('0x5a')](-0x1);if(_0xedf96==='/'){_0x430df7=_0x430df7[_0xf626('0x5b')](0x0,_0x430df7['lastIndexOf'](_0xedf96));}_0x222621=util['format'](_0xf626('0x5c'),_0x430df7);var _0x3a1caf={'method':_0xf626('0x5d'),'uri':_0x222621,'qs':{'operation':_0xf626('0x5e'),'username':_0x2d401e[_0xf626('0x55')]},'json':!![]};return rp(_0x3a1caf);}})[_0xf626('0x22')](function(_0x304083){if(_0x304083[_0xf626('0x5f')]){var _0x2a4e97={'method':_0xf626('0x60'),'uri':_0x222621,'form':{'operation':_0xf626('0x61'),'username':_0x423414,'accessKey':md5(_0x304083['result']['token']+_0x3102ea)},'json':!![]};return rp(_0x2a4e97);}})[_0xf626('0x22')](function(_0x5efcef){if(_0x5efcef[_0xf626('0x5f')]){var _0x1b3f66={'method':_0xf626('0x5d'),'uri':_0x222621,'qs':{'operation':_0xf626('0x62'),'username':_0x423414,'sessionName':_0x5efcef[_0xf626('0x63')][_0xf626('0x64')],'elementType':_0x4039a9},'json':!![]};return rp(_0x1b3f66);}})[_0xf626('0x22')](function(_0x5b94cb){if(_0x5b94cb['success']){var _0x18264f=[_0xf626('0x65'),_0xf626('0x66'),_0xf626('0x67')];_['remove'](_0x5b94cb['result'][_0xf626('0x32')],function(_0x38ee63){return _0x18264f[_0xf626('0x68')](_0x38ee63[_0xf626('0x2b')][_0xf626('0x25')]);});_['remove'](_0x5b94cb[_0xf626('0x63')][_0xf626('0x32')],function(_0x3ec7e9){return _0x3ec7e9[_0xf626('0x69')]===_0xf626('0x6a');});return{'count':_0x5b94cb[_0xf626('0x63')][_0xf626('0x32')][_0xf626('0x33')],'rows':_[_0xf626('0x28')](_0x5b94cb[_0xf626('0x63')]['fields'],function(_0x43a70d){return{'id':_0x43a70d['name'],'name':_0x43a70d[_0xf626('0x6b')],'custom':_['startsWith'](_0x43a70d[_0xf626('0x25')],_0xf626('0x6c'))?!![]:![],'options':_0x43a70d[_0xf626('0x2b')][_0xf626('0x25')]===_0xf626('0x6d')&&_0x43a70d['type'][_0xf626('0x6e')]['length']>0x0?_[_0xf626('0x28')](_0x43a70d['type'][_0xf626('0x6e')],function(_0x2796bb){return{'name':_0x2796bb['label'],'value':_0x2796bb['value']};}):[]};})};}})[_0xf626('0x22')](respondWithResult(_0xb0c9df,null))[_0xf626('0x49')](function(_0x490025){console['log'](_0xf626('0x6f')+_0x490025);var _0x28ae0d=_0x5c8be1[_0xf626('0x2d')][_0xf626('0x70')]?0x1f4:_0x490025[_0xf626('0x71')]||0x1f4;logger[_0xf626('0x72')](_0xf626('0x73'),_0xf626('0x54'),_0x28ae0d,JSON[_0xf626('0x74')](_0x490025));delete _0x490025[_0xf626('0x25')];if(_0x28ae0d===0x191){_0x28ae0d=0x190;}_0xb0c9df[_0xf626('0x19')](_0x28ae0d)[_0xf626('0x26')](_0x5c8be1[_0xf626('0x2d')][_0xf626('0x70')]?{'message':_0xf626('0x75'),'statusCode':_0x490025[_0xf626('0x71')]}:_0x490025);});};
\ No newline at end of file
+var _0xceaf=['VtigerConfiguration','hasOwnProperty','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','VtigerField','getFields','username','moduleName','remoteUri','serverUrl','accessKey','slice','substring','lastIndexOf','%s/webservice.php','success','result','GET','describe','owner','remove','editable','label','startsWith','cf_','picklist','picklistValues','value','log','vTiger\x20error:\x20','test','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','statusCode','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','desk.js','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','VtigerAccount','rawAttributes','fieldName','key','query','keys','filters','intersection','model','fields','attributes','length','nolimit','order','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','show','params','create','catch','body','find','getConfigurations'];(function(_0x3370aa,_0x282cfc){var _0xa5801a=function(_0x22144e){while(--_0x22144e){_0x3370aa['push'](_0x3370aa['shift']());}};_0xa5801a(++_0x282cfc);}(_0xceaf,0x10e));var _0xfcea=function(_0x171259,_0x45bdc3){_0x171259=_0x171259-0x0;var _0x42223d=_0xceaf[_0x171259];return _0x42223d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfcea('0x0'));var zipdir=require(_0xfcea('0x1'));var jsonpatch=require(_0xfcea('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xfcea('0x3'));var Mustache=require(_0xfcea('0x4'));var util=require(_0xfcea('0x5'));var path=require(_0xfcea('0x6'));var sox=require(_0xfcea('0x7'));var csv=require(_0xfcea('0x8'));var ejs=require(_0xfcea('0x9'));var fs=require('fs');var fs_extra=require(_0xfcea('0xa'));var _=require('lodash');var squel=require(_0xfcea('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xfcea('0xc'));var toCsv=require(_0xfcea('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xfcea('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xfcea('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfcea('0xf'));var logger=require(_0xfcea('0x10'))(_0xfcea('0x11'));var utils=require(_0xfcea('0x12'));var config=require(_0xfcea('0x13'));var licenseUtil=require(_0xfcea('0x14'));var db=require('../../mysqldb')['db'];var integrations=require(_0xfcea('0x15'));function respondWithStatusCode(_0x4beeff,_0x5c414e){_0x5c414e=_0x5c414e||0xcc;return function(_0x527b73){if(_0x527b73){return _0x4beeff['sendStatus'](_0x5c414e);}return _0x4beeff[_0xfcea('0x16')](_0x5c414e)[_0xfcea('0x17')]();};}function respondWithResult(_0x17592c,_0x5b0669){_0x5b0669=_0x5b0669||0xc8;return function(_0x2fdb6e){if(_0x2fdb6e){return _0x17592c['status'](_0x5b0669)['json'](_0x2fdb6e);}};}function respondWithFilteredResult(_0x7fa2d,_0xdb55b4){return function(_0x5b153){if(_0x5b153){var _0x97633d=typeof _0xdb55b4[_0xfcea('0x18')]===_0xfcea('0x19')&&typeof _0xdb55b4[_0xfcea('0x1a')]===_0xfcea('0x19');var _0x5c17ec=_0x5b153[_0xfcea('0x1b')];var _0x15ab1d=_0x97633d?0x0:_0xdb55b4[_0xfcea('0x18')];var _0x4c2cb4=_0x97633d?_0x5b153[_0xfcea('0x1b')]:_0xdb55b4['offset']+_0xdb55b4[_0xfcea('0x1a')];var _0x2dba7a;if(_0x4c2cb4>=_0x5c17ec){_0x4c2cb4=_0x5c17ec;_0x2dba7a=0xc8;}else{_0x2dba7a=0xce;}_0x7fa2d[_0xfcea('0x16')](_0x2dba7a);return _0x7fa2d[_0xfcea('0x1c')](_0xfcea('0x1d'),_0x15ab1d+'-'+_0x4c2cb4+'/'+_0x5c17ec)['json'](_0x5b153);}return null;};}function patchUpdates(_0xe7f838){return function(_0xf992f7){try{jsonpatch[_0xfcea('0x1e')](_0xf992f7,_0xe7f838,!![]);}catch(_0x237d6b){return BPromise[_0xfcea('0x1f')](_0x237d6b);}return _0xf992f7[_0xfcea('0x20')]();};}function saveUpdates(_0x1ba120,_0x450d2b){return function(_0x585aa1){if(_0x585aa1){return _0x585aa1[_0xfcea('0x21')](_0x1ba120)[_0xfcea('0x22')](function(_0x4dbb1e){return _0x4dbb1e;});}return null;};}function removeEntity(_0x251e9b,_0x2b7d8d){return function(_0x1f3f6d){if(_0x1f3f6d){return _0x1f3f6d[_0xfcea('0x23')]()[_0xfcea('0x22')](function(){_0x251e9b[_0xfcea('0x16')](0xcc)[_0xfcea('0x17')]();});}};}function handleEntityNotFound(_0x1dc7ae,_0x3ca7bd){return function(_0x1b2ec0){if(!_0x1b2ec0){_0x1dc7ae['sendStatus'](0x194);}return _0x1b2ec0;};}function handleError(_0x465d76,_0x3af2b1){_0x3af2b1=_0x3af2b1||0x1f4;return function(_0x4a8986){logger[_0xfcea('0x24')](_0x4a8986[_0xfcea('0x25')]);if(_0x4a8986[_0xfcea('0x26')]){delete _0x4a8986[_0xfcea('0x26')];}_0x465d76[_0xfcea('0x16')](_0x3af2b1)[_0xfcea('0x27')](_0x4a8986);};}exports[_0xfcea('0x28')]=function(_0x43798e,_0x372263){var _0x52493f={},_0xeb02e7={},_0x522261={'count':0x0,'rows':[]};var _0x376172=_[_0xfcea('0x29')](db[_0xfcea('0x2a')][_0xfcea('0x2b')],function(_0x3ea23b){return{'name':_0x3ea23b[_0xfcea('0x2c')],'type':_0x3ea23b['type'][_0xfcea('0x2d')]};});_0xeb02e7['model']=_[_0xfcea('0x29')](_0x376172,'name');_0xeb02e7[_0xfcea('0x2e')]=_[_0xfcea('0x2f')](_0x43798e[_0xfcea('0x2e')]);_0xeb02e7[_0xfcea('0x30')]=_[_0xfcea('0x31')](_0xeb02e7['model'],_0xeb02e7[_0xfcea('0x2e')]);_0x52493f['attributes']=_[_0xfcea('0x31')](_0xeb02e7[_0xfcea('0x32')],qs[_0xfcea('0x33')](_0x43798e[_0xfcea('0x2e')][_0xfcea('0x33')]));_0x52493f[_0xfcea('0x34')]=_0x52493f[_0xfcea('0x34')][_0xfcea('0x35')]?_0x52493f[_0xfcea('0x34')]:_0xeb02e7[_0xfcea('0x32')];if(!_0x43798e['query']['hasOwnProperty'](_0xfcea('0x36'))){_0x52493f['limit']=qs[_0xfcea('0x1a')](_0x43798e[_0xfcea('0x2e')][_0xfcea('0x1a')]);_0x52493f[_0xfcea('0x18')]=qs[_0xfcea('0x18')](_0x43798e[_0xfcea('0x2e')][_0xfcea('0x18')]);}_0x52493f[_0xfcea('0x37')]=qs[_0xfcea('0x38')](_0x43798e['query'][_0xfcea('0x38')]);_0x52493f['where']=qs[_0xfcea('0x30')](_[_0xfcea('0x39')](_0x43798e['query'],_0xeb02e7[_0xfcea('0x30')]),_0x376172);if(_0x43798e['query'][_0xfcea('0x3a')]){_0x52493f[_0xfcea('0x3b')]=_[_0xfcea('0x3c')](_0x52493f[_0xfcea('0x3b')],{'$or':_[_0xfcea('0x29')](_0x376172,function(_0x247447){if(_0x247447[_0xfcea('0x3d')]!==_0xfcea('0x3e')){var _0x3be3c7={};_0x3be3c7[_0x247447[_0xfcea('0x26')]]={'$like':'%'+_0x43798e[_0xfcea('0x2e')][_0xfcea('0x3a')]+'%'};return _0x3be3c7;}})});}_0x52493f=_['merge']({},_0x52493f,_0x43798e[_0xfcea('0x3f')]);var _0x194e25={'where':_0x52493f[_0xfcea('0x3b')]};return db['VtigerAccount'][_0xfcea('0x1b')](_0x194e25)[_0xfcea('0x22')](function(_0x560704){_0x522261['count']=_0x560704;if(_0x43798e['query'][_0xfcea('0x40')]){_0x52493f[_0xfcea('0x41')]=[{'all':!![]}];}return db[_0xfcea('0x2a')][_0xfcea('0x42')](_0x52493f);})['then'](function(_0x3ee5e5){_0x522261[_0xfcea('0x43')]=_0x3ee5e5;return _0x522261;})[_0xfcea('0x22')](respondWithFilteredResult(_0x372263,_0x52493f))['catch'](handleError(_0x372263,null));};exports[_0xfcea('0x44')]=function(_0x2fe028,_0x367079){var _0x196100={'raw':![],'where':{'id':_0x2fe028[_0xfcea('0x45')]['id']}},_0x550556={};_0x550556['model']=_[_0xfcea('0x2f')](db[_0xfcea('0x2a')][_0xfcea('0x2b')]);_0x550556[_0xfcea('0x2e')]=_['keys'](_0x2fe028['query']);_0x550556[_0xfcea('0x30')]=_['intersection'](_0x550556['model'],_0x550556[_0xfcea('0x2e')]);_0x196100[_0xfcea('0x34')]=_[_0xfcea('0x31')](_0x550556['model'],qs[_0xfcea('0x33')](_0x2fe028[_0xfcea('0x2e')][_0xfcea('0x33')]));_0x196100['attributes']=_0x196100[_0xfcea('0x34')][_0xfcea('0x35')]?_0x196100[_0xfcea('0x34')]:_0x550556[_0xfcea('0x32')];if(_0x2fe028[_0xfcea('0x2e')]['includeAll']){_0x196100[_0xfcea('0x41')]=[{'all':!![]}];}_0x196100=_[_0xfcea('0x3c')]({},_0x196100,_0x2fe028['options']);return db[_0xfcea('0x2a')]['find'](_0x196100)[_0xfcea('0x22')](handleEntityNotFound(_0x367079,null))['then'](respondWithResult(_0x367079,null))['catch'](handleError(_0x367079,null));};exports[_0xfcea('0x46')]=function(_0x7f229a,_0x5324d0){return db[_0xfcea('0x2a')][_0xfcea('0x46')](_0x7f229a['body'],{})['then'](respondWithResult(_0x5324d0,0xc9))[_0xfcea('0x47')](handleError(_0x5324d0,null));};exports[_0xfcea('0x21')]=function(_0x4b4067,_0x2f9fb2){if(_0x4b4067[_0xfcea('0x48')]['id']){delete _0x4b4067[_0xfcea('0x48')]['id'];}return db[_0xfcea('0x2a')]['find']({'where':{'id':_0x4b4067[_0xfcea('0x45')]['id']}})['then'](handleEntityNotFound(_0x2f9fb2,null))[_0xfcea('0x22')](saveUpdates(_0x4b4067[_0xfcea('0x48')],null))[_0xfcea('0x22')](respondWithResult(_0x2f9fb2,null))['catch'](handleError(_0x2f9fb2,null));};exports[_0xfcea('0x23')]=function(_0x49c25f,_0x3763cd){return db[_0xfcea('0x2a')][_0xfcea('0x49')]({'where':{'id':_0x49c25f['params']['id']}})[_0xfcea('0x22')](handleEntityNotFound(_0x3763cd,null))[_0xfcea('0x22')](removeEntity(_0x3763cd,null))[_0xfcea('0x47')](handleError(_0x3763cd,null));};exports[_0xfcea('0x4a')]=function(_0x5cc0d9,_0x2c29cc,_0x3de487){var _0x383e50={};var _0x281fb2={};var _0x150640;var _0x5ce854;return db[_0xfcea('0x2a')]['findOne']({'where':{'id':_0x5cc0d9[_0xfcea('0x45')]['id']}})[_0xfcea('0x22')](handleEntityNotFound(_0x2c29cc,null))[_0xfcea('0x22')](function(_0x54ebc2){if(_0x54ebc2){_0x150640=_0x54ebc2;_0x281fb2[_0xfcea('0x32')]=_[_0xfcea('0x2f')](db[_0xfcea('0x4b')][_0xfcea('0x2b')]);_0x281fb2[_0xfcea('0x2e')]=_['keys'](_0x5cc0d9[_0xfcea('0x2e')]);_0x281fb2[_0xfcea('0x30')]=_['intersection'](_0x281fb2[_0xfcea('0x32')],_0x281fb2[_0xfcea('0x2e')]);_0x383e50[_0xfcea('0x34')]=_[_0xfcea('0x31')](_0x281fb2[_0xfcea('0x32')],qs['fields'](_0x5cc0d9[_0xfcea('0x2e')][_0xfcea('0x33')]));_0x383e50[_0xfcea('0x34')]=_0x383e50[_0xfcea('0x34')][_0xfcea('0x35')]?_0x383e50[_0xfcea('0x34')]:_0x281fb2[_0xfcea('0x32')];_0x383e50[_0xfcea('0x37')]=qs[_0xfcea('0x38')](_0x5cc0d9[_0xfcea('0x2e')][_0xfcea('0x38')]);_0x383e50[_0xfcea('0x3b')]=qs[_0xfcea('0x30')](_[_0xfcea('0x39')](_0x5cc0d9[_0xfcea('0x2e')],_0x281fb2[_0xfcea('0x30')]));if(_0x5cc0d9['query'][_0xfcea('0x3a')]){_0x383e50['where']=_[_0xfcea('0x3c')](_0x383e50['where'],{'$or':_['map'](_0x383e50['attributes'],function(_0x5adc8e){var _0x216d59={};_0x216d59[_0x5adc8e]={'$like':'%'+_0x5cc0d9[_0xfcea('0x2e')]['filter']+'%'};return _0x216d59;})});}_0x383e50=_[_0xfcea('0x3c')]({},_0x383e50,_0x5cc0d9[_0xfcea('0x3f')]);return _0x150640['getConfigurations'](_0x383e50);}})[_0xfcea('0x22')](function(_0x4ce307){if(_0x4ce307){_0x5ce854=_0x4ce307[_0xfcea('0x35')];if(!_0x5cc0d9[_0xfcea('0x2e')][_0xfcea('0x4c')](_0xfcea('0x36'))){_0x383e50['limit']=qs['limit'](_0x5cc0d9[_0xfcea('0x2e')][_0xfcea('0x1a')]);_0x383e50[_0xfcea('0x18')]=qs[_0xfcea('0x18')](_0x5cc0d9[_0xfcea('0x2e')][_0xfcea('0x18')]);}return _0x150640[_0xfcea('0x4a')](_0x383e50);}})[_0xfcea('0x22')](function(_0x3ccdba){if(_0x3ccdba){return _0x3ccdba?{'count':_0x5ce854,'rows':_0x3ccdba}:null;}})[_0xfcea('0x22')](respondWithResult(_0x2c29cc,null))['catch'](handleError(_0x2c29cc,null));};exports[_0xfcea('0x4d')]=function(_0x30575d,_0x27adc0,_0x3da60d){if(_0x30575d[_0xfcea('0x48')]['id']){delete _0x30575d['body']['id'];}return db[_0xfcea('0x2a')][_0xfcea('0x4e')]({'where':{'id':_0x30575d[_0xfcea('0x45')]['id']}})[_0xfcea('0x22')](handleEntityNotFound(_0x27adc0,null))['then'](function(_0x13f46d){if(_0x13f46d){_0x30575d[_0xfcea('0x48')][_0xfcea('0x4f')]=_0x13f46d['id'];_0x30575d[_0xfcea('0x48')][_0xfcea('0x50')]=integrations[_0xfcea('0x51')](_0x30575d[_0xfcea('0x48')][_0xfcea('0x52')],_0x30575d[_0xfcea('0x48')][_0xfcea('0x3d')]);_0x30575d[_0xfcea('0x48')][_0xfcea('0x53')]=integrations[_0xfcea('0x54')](_0x30575d['body'][_0xfcea('0x52')],_0x30575d[_0xfcea('0x48')]['type']);return db[_0xfcea('0x4b')][_0xfcea('0x46')](_0x30575d[_0xfcea('0x48')],{'include':[{'model':db[_0xfcea('0x55')],'as':_0xfcea('0x50')},{'model':db[_0xfcea('0x55')],'as':_0xfcea('0x53')}]});}return null;})['then'](respondWithResult(_0x27adc0,null))['catch'](handleError(_0x27adc0,null));};var md5=require('md5');exports[_0xfcea('0x56')]=function(_0x5001e8,_0x4936f1,_0x1b5794){var _0x2d2d38=null;var _0x50639b=null;var _0xe7a95d=null;var _0x3a30e1=null;var _0x32c7c1='';return db['VtigerAccount'][_0xfcea('0x4e')]({'where':{'id':_0x5001e8[_0xfcea('0x45')]['id']},'attributes':['id','name',_0xfcea('0x57'),'description',_0xfcea('0x58'),_0xfcea('0x59'),_0xfcea('0x5a'),'accessKey']})['then'](handleEntityNotFound(_0x4936f1,null))[_0xfcea('0x22')](function(_0x5dd9b2){if(_0x5dd9b2){_0x2d2d38=_0x5dd9b2[_0xfcea('0x57')];_0x50639b=_0x5dd9b2[_0xfcea('0x5b')];_0xe7a95d=_0x5dd9b2[_0xfcea('0x58')];_0x32c7c1=_0x5dd9b2[_0xfcea('0x59')];var _0x565fda=_0x32c7c1[_0xfcea('0x5c')](-0x1);if(_0x565fda==='/'){_0x32c7c1=_0x32c7c1[_0xfcea('0x5d')](0x0,_0x32c7c1[_0xfcea('0x5e')](_0x565fda));}_0x3a30e1=util['format'](_0xfcea('0x5f'),_0x32c7c1);var _0x3d51a3={'method':'GET','uri':_0x3a30e1,'qs':{'operation':'getchallenge','username':_0x5dd9b2[_0xfcea('0x57')]},'json':!![]};return rp(_0x3d51a3);}})[_0xfcea('0x22')](function(_0x458c5e){if(_0x458c5e[_0xfcea('0x60')]){var _0x623541={'method':'POST','uri':_0x3a30e1,'form':{'operation':'login','username':_0x2d2d38,'accessKey':md5(_0x458c5e[_0xfcea('0x61')]['token']+_0x50639b)},'json':!![]};return rp(_0x623541);}})[_0xfcea('0x22')](function(_0xab45e2){if(_0xab45e2[_0xfcea('0x60')]){var _0x50d70a={'method':_0xfcea('0x62'),'uri':_0x3a30e1,'qs':{'operation':_0xfcea('0x63'),'username':_0x2d2d38,'sessionName':_0xab45e2[_0xfcea('0x61')]['sessionName'],'elementType':_0xe7a95d},'json':!![]};return rp(_0x50d70a);}})[_0xfcea('0x22')](function(_0x43fad0){if(_0x43fad0['success']){var _0x2c26ee=['autogenerated','reference',_0xfcea('0x64')];_[_0xfcea('0x65')](_0x43fad0[_0xfcea('0x61')][_0xfcea('0x33')],function(_0x2976cb){return _0x2c26ee['includes'](_0x2976cb[_0xfcea('0x3d')][_0xfcea('0x26')]);});_[_0xfcea('0x65')](_0x43fad0[_0xfcea('0x61')][_0xfcea('0x33')],function(_0x539110){return _0x539110[_0xfcea('0x66')]==='false';});return{'count':_0x43fad0['result'][_0xfcea('0x33')][_0xfcea('0x35')],'rows':_[_0xfcea('0x29')](_0x43fad0[_0xfcea('0x61')]['fields'],function(_0x4c76a0){return{'id':_0x4c76a0[_0xfcea('0x26')],'name':_0x4c76a0[_0xfcea('0x67')],'custom':_[_0xfcea('0x68')](_0x4c76a0[_0xfcea('0x26')],_0xfcea('0x69'))?!![]:![],'options':_0x4c76a0[_0xfcea('0x3d')][_0xfcea('0x26')]===_0xfcea('0x6a')&&_0x4c76a0[_0xfcea('0x3d')][_0xfcea('0x6b')][_0xfcea('0x35')]>0x0?_[_0xfcea('0x29')](_0x4c76a0[_0xfcea('0x3d')]['picklistValues'],function(_0xa661e1){return{'name':_0xa661e1[_0xfcea('0x67')],'value':_0xa661e1[_0xfcea('0x6c')]};}):[]};})};}})[_0xfcea('0x22')](respondWithResult(_0x4936f1,null))[_0xfcea('0x47')](function(_0x3e754e){console[_0xfcea('0x6d')](_0xfcea('0x6e')+_0x3e754e);var _0x5eaf77=_0x5001e8[_0xfcea('0x2e')][_0xfcea('0x6f')]?0x1f4:_0x3e754e['statusCode']||0x1f4;logger[_0xfcea('0x24')](_0xfcea('0x70'),'getFields',_0x5eaf77,JSON['stringify'](_0x3e754e));delete _0x3e754e[_0xfcea('0x26')];if(_0x5eaf77===0x191){_0x5eaf77=0x190;}_0x4936f1[_0xfcea('0x16')](_0x5eaf77)[_0xfcea('0x27')](_0x5001e8[_0xfcea('0x2e')][_0xfcea('0x6f')]?{'message':_0xfcea('0x71'),'statusCode':_0x3e754e[_0xfcea('0x72')]}:_0x3e754e);});};
\ No newline at end of file
index 6e99f6a..080430c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7463=['exports','define','VtigerAccount','int_vtiger_accounts','util','../../config/logger','moment','bluebird','rimraf','../../config/environment','../../components/integrations/configuration'];(function(_0x775586,_0x25d810){var _0x3eda08=function(_0x46b380){while(--_0x46b380){_0x775586['push'](_0x775586['shift']());}};_0x3eda08(++_0x25d810);}(_0x7463,0x190));var _0x3746=function(_0x376db5,_0x2b8874){_0x376db5=_0x376db5-0x0;var _0x304c17=_0x7463[_0x376db5];return _0x304c17;};'use strict';var _=require('lodash');var util=require(_0x3746('0x0'));var logger=require(_0x3746('0x1'))('api');var moment=require(_0x3746('0x2'));var BPromise=require(_0x3746('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x3746('0x4'));var config=require(_0x3746('0x5'));var attributes=require('./intVtigerAccount.attributes');var integrations=require(_0x3746('0x6'));module[_0x3746('0x7')]=function(_0x156480,_0xcada51){return _0x156480[_0x3746('0x8')](_0x3746('0x9'),attributes,{'tableName':_0x3746('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd2b6=['path','../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','VtigerAccount','int_vtiger_accounts','lodash','util','api','request-promise'];(function(_0x40837d,_0x5822e1){var _0x21d214=function(_0x2e18c7){while(--_0x2e18c7){_0x40837d['push'](_0x40837d['shift']());}};_0x21d214(++_0x5822e1);}(_0xd2b6,0xf9));var _0x6d2b=function(_0x1776a6,_0x56b498){_0x1776a6=_0x1776a6-0x0;var _0x50a07e=_0xd2b6[_0x1776a6];return _0x50a07e;};'use strict';var _=require(_0x6d2b('0x0'));var util=require(_0x6d2b('0x1'));var logger=require('../../config/logger')(_0x6d2b('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6d2b('0x3'));var fs=require('fs');var path=require(_0x6d2b('0x4'));var rimraf=require('rimraf');var config=require(_0x6d2b('0x5'));var attributes=require(_0x6d2b('0x6'));var integrations=require(_0x6d2b('0x7'));module[_0x6d2b('0x8')]=function(_0x2f11ee,_0x503730){return _0x2f11ee['define'](_0x6d2b('0x9'),attributes,{'tableName':_0x6d2b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d70108c..43aea95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['stringify','error','message','result','catch','GetVtigerAccount','VtigerAccount','findAll','options','where','attributes','limit','include','map','model','ShowVtigerAccount','find','raw','util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s'];(function(_0x32b767,_0x34280d){var _0x2644d9=function(_0x3d0133){while(--_0x3d0133){_0x32b767['push'](_0x32b767['shift']());}};_0x2644d9(++_0x34280d);}(_0x757a,0xde));var _0xa757=function(_0x1ca272,_0x506561){_0x1ca272=_0x1ca272-0x0;var _0x5862de=_0x757a[_0x1ca272];return _0x5862de;};'use strict';var _=require('lodash');var util=require(_0xa757('0x0'));var moment=require(_0xa757('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa757('0x2'))['db'];var utils=require(_0xa757('0x3'));var logger=require(_0xa757('0x4'))(_0xa757('0x5'));var config=require(_0xa757('0x6'));var jayson=require(_0xa757('0x7'));var client=jayson['client'][_0xa757('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4343b6,_0x53be0e,_0x2930fa){return new BPromise(function(_0x2f7793,_0x447344){return client[_0xa757('0x9')](_0x4343b6,_0x2930fa)[_0xa757('0xa')](function(_0x5aef8a){logger[_0xa757('0xb')](_0xa757('0xc'),_0x53be0e,_0xa757('0xd'));logger[_0xa757('0xe')](_0xa757('0xf'),_0x53be0e,_0xa757('0xd'),JSON[_0xa757('0x10')](_0x5aef8a));if(_0x5aef8a['error']){if(_0x5aef8a['error']['code']===0x1f4){logger['error']('VtigerAccount,\x20%s,\x20%s',_0x53be0e,_0x5aef8a[_0xa757('0x11')]['message']);return _0x447344(_0x5aef8a['error'][_0xa757('0x12')]);}logger['error']('VtigerAccount,\x20%s,\x20%s',_0x53be0e,_0x5aef8a[_0xa757('0x11')][_0xa757('0x12')]);return _0x2f7793(_0x5aef8a[_0xa757('0x11')][_0xa757('0x12')]);}else{logger[_0xa757('0xb')](_0xa757('0xc'),_0x53be0e,_0xa757('0xd'));_0x2f7793(_0x5aef8a[_0xa757('0x13')][_0xa757('0x12')]);}})[_0xa757('0x14')](function(_0x50aac1){logger[_0xa757('0x11')](_0xa757('0xc'),_0x53be0e,_0x50aac1);_0x447344(_0x50aac1);});});}exports[_0xa757('0x15')]=function(_0x4d9f58){var _0x54b305=this;return new Promise(function(_0x151c04,_0x468d45){return db[_0xa757('0x16')][_0xa757('0x17')]({'raw':_0x4d9f58[_0xa757('0x18')]?_0x4d9f58[_0xa757('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x4d9f58[_0xa757('0x18')]?_0x4d9f58['options'][_0xa757('0x19')]||null:null,'attributes':_0x4d9f58[_0xa757('0x18')]?_0x4d9f58[_0xa757('0x18')][_0xa757('0x1a')]||null:null,'limit':_0x4d9f58['options']?_0x4d9f58['options'][_0xa757('0x1b')]||null:null,'include':_0x4d9f58[_0xa757('0x18')]?_0x4d9f58[_0xa757('0x18')][_0xa757('0x1c')]?_[_0xa757('0x1d')](_0x4d9f58[_0xa757('0x18')][_0xa757('0x1c')],function(_0x21f1af){return{'model':db[_0x21f1af[_0xa757('0x1e')]],'as':_0x21f1af['as'],'attributes':_0x21f1af['attributes'],'include':_0x21f1af[_0xa757('0x1c')]?_['map'](_0x21f1af[_0xa757('0x1c')],function(_0x47903b){return{'model':db[_0x47903b[_0xa757('0x1e')]],'as':_0x47903b['as'],'attributes':_0x47903b[_0xa757('0x1a')],'include':_0x47903b[_0xa757('0x1c')]?_['map'](_0x47903b[_0xa757('0x1c')],function(_0xcd98bd){return{'model':db[_0xcd98bd[_0xa757('0x1e')]],'as':_0xcd98bd['as'],'attributes':_0xcd98bd[_0xa757('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x449a7d){logger['info']('GetVtigerAccount',_0x4d9f58);logger['debug']('GetVtigerAccount',_0x4d9f58,JSON[_0xa757('0x10')](_0x449a7d));_0x151c04(_0x449a7d);})['catch'](function(_0x2208f9){logger[_0xa757('0x11')]('GetVtigerAccount',_0x2208f9[_0xa757('0x12')],_0x4d9f58);_0x468d45(_0x54b305['error'](0x1f4,_0x2208f9[_0xa757('0x12')]));});});};exports[_0xa757('0x1f')]=function(_0x5307c3){var _0x235e54=this;return new Promise(function(_0x5ade7b,_0x3a4a66){return db[_0xa757('0x16')][_0xa757('0x20')]({'raw':_0x5307c3[_0xa757('0x18')]?_0x5307c3[_0xa757('0x18')][_0xa757('0x21')]===undefined?!![]:![]:!![],'where':_0x5307c3[_0xa757('0x18')]?_0x5307c3[_0xa757('0x18')][_0xa757('0x19')]||null:null,'attributes':_0x5307c3[_0xa757('0x18')]?_0x5307c3[_0xa757('0x18')][_0xa757('0x1a')]||null:null,'include':_0x5307c3[_0xa757('0x18')]?_0x5307c3[_0xa757('0x18')][_0xa757('0x1c')]?_[_0xa757('0x1d')](_0x5307c3[_0xa757('0x18')][_0xa757('0x1c')],function(_0x1eacde){return{'model':db[_0x1eacde[_0xa757('0x1e')]],'as':_0x1eacde['as'],'attributes':_0x1eacde[_0xa757('0x1a')],'include':_0x1eacde[_0xa757('0x1c')]?_[_0xa757('0x1d')](_0x1eacde[_0xa757('0x1c')],function(_0x59700d){return{'model':db[_0x59700d[_0xa757('0x1e')]],'as':_0x59700d['as'],'attributes':_0x59700d[_0xa757('0x1a')],'include':_0x59700d[_0xa757('0x1c')]?_[_0xa757('0x1d')](_0x59700d[_0xa757('0x1c')],function(_0x51e2aa){return{'model':db[_0x51e2aa[_0xa757('0x1e')]],'as':_0x51e2aa['as'],'attributes':_0x51e2aa[_0xa757('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xa757('0xa')](function(_0x2c34b1){logger[_0xa757('0xb')](_0xa757('0x1f'),_0x5307c3);logger['debug'](_0xa757('0x1f'),_0x5307c3,JSON[_0xa757('0x10')](_0x2c34b1));_0x5ade7b(_0x2c34b1);})[_0xa757('0x14')](function(_0xc34409){logger[_0xa757('0x11')](_0xa757('0x1f'),_0xc34409[_0xa757('0x12')],_0x5307c3);_0x3a4a66(_0x235e54[_0xa757('0x11')](0x1f4,_0xc34409[_0xa757('0x12')]));});});};
\ No newline at end of file
+var _0x84a0=['bluebird','ioredis','../../mysqldb','rpc','../../config/environment','client','http','request','then','info','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','VtigerAccount,\x20%s,\x20%s','message','result','catch','VtigerAccount','findAll','options','raw','where','attributes','limit','include','model','map','GetVtigerAccount','ShowVtigerAccount','find','lodash','util','moment'];(function(_0x47ca66,_0xbf920a){var _0x742c57=function(_0x2f1ac1){while(--_0x2f1ac1){_0x47ca66['push'](_0x47ca66['shift']());}};_0x742c57(++_0xbf920a);}(_0x84a0,0x66));var _0x084a=function(_0xea27ad,_0x2364c1){_0xea27ad=_0xea27ad-0x0;var _0x23e858=_0x84a0[_0xea27ad];return _0x23e858;};'use strict';var _=require(_0x084a('0x0'));var util=require(_0x084a('0x1'));var moment=require(_0x084a('0x2'));var BPromise=require(_0x084a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x084a('0x4'));var db=require(_0x084a('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x084a('0x6'));var config=require(_0x084a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x084a('0x8')][_0x084a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2e6810,_0x373d2,_0x2b30bc){return new BPromise(function(_0x58d419,_0x1051a9){return client[_0x084a('0xa')](_0x2e6810,_0x2b30bc)[_0x084a('0xb')](function(_0x2888e3){logger[_0x084a('0xc')]('VtigerAccount,\x20%s,\x20%s',_0x373d2,'request\x20sent');logger[_0x084a('0xd')](_0x084a('0xe'),_0x373d2,_0x084a('0xf'),JSON[_0x084a('0x10')](_0x2888e3));if(_0x2888e3[_0x084a('0x11')]){if(_0x2888e3['error']['code']===0x1f4){logger[_0x084a('0x11')](_0x084a('0x12'),_0x373d2,_0x2888e3[_0x084a('0x11')][_0x084a('0x13')]);return _0x1051a9(_0x2888e3[_0x084a('0x11')][_0x084a('0x13')]);}logger[_0x084a('0x11')](_0x084a('0x12'),_0x373d2,_0x2888e3['error'][_0x084a('0x13')]);return _0x58d419(_0x2888e3['error'][_0x084a('0x13')]);}else{logger[_0x084a('0xc')](_0x084a('0x12'),_0x373d2,_0x084a('0xf'));_0x58d419(_0x2888e3[_0x084a('0x14')]['message']);}})[_0x084a('0x15')](function(_0x4abd81){logger[_0x084a('0x11')](_0x084a('0x12'),_0x373d2,_0x4abd81);_0x1051a9(_0x4abd81);});});}exports['GetVtigerAccount']=function(_0xf2c333){var _0x32c729=this;return new Promise(function(_0x4134b9,_0x14bb19){return db[_0x084a('0x16')][_0x084a('0x17')]({'raw':_0xf2c333[_0x084a('0x18')]?_0xf2c333[_0x084a('0x18')][_0x084a('0x19')]===undefined?!![]:![]:!![],'where':_0xf2c333[_0x084a('0x18')]?_0xf2c333[_0x084a('0x18')][_0x084a('0x1a')]||null:null,'attributes':_0xf2c333[_0x084a('0x18')]?_0xf2c333[_0x084a('0x18')][_0x084a('0x1b')]||null:null,'limit':_0xf2c333['options']?_0xf2c333[_0x084a('0x18')][_0x084a('0x1c')]||null:null,'include':_0xf2c333[_0x084a('0x18')]?_0xf2c333[_0x084a('0x18')][_0x084a('0x1d')]?_['map'](_0xf2c333[_0x084a('0x18')][_0x084a('0x1d')],function(_0x6346a5){return{'model':db[_0x6346a5[_0x084a('0x1e')]],'as':_0x6346a5['as'],'attributes':_0x6346a5[_0x084a('0x1b')],'include':_0x6346a5[_0x084a('0x1d')]?_['map'](_0x6346a5[_0x084a('0x1d')],function(_0x2af138){return{'model':db[_0x2af138[_0x084a('0x1e')]],'as':_0x2af138['as'],'attributes':_0x2af138['attributes'],'include':_0x2af138[_0x084a('0x1d')]?_[_0x084a('0x1f')](_0x2af138[_0x084a('0x1d')],function(_0x4c5658){return{'model':db[_0x4c5658['model']],'as':_0x4c5658['as'],'attributes':_0x4c5658['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x33b88f){logger['info']('GetVtigerAccount',_0xf2c333);logger['debug'](_0x084a('0x20'),_0xf2c333,JSON[_0x084a('0x10')](_0x33b88f));_0x4134b9(_0x33b88f);})[_0x084a('0x15')](function(_0x2c4149){logger[_0x084a('0x11')](_0x084a('0x20'),_0x2c4149[_0x084a('0x13')],_0xf2c333);_0x14bb19(_0x32c729[_0x084a('0x11')](0x1f4,_0x2c4149['message']));});});};exports[_0x084a('0x21')]=function(_0x3b2b38){var _0x501a16=this;return new Promise(function(_0xe1980b,_0x24bcf5){return db[_0x084a('0x16')][_0x084a('0x22')]({'raw':_0x3b2b38[_0x084a('0x18')]?_0x3b2b38[_0x084a('0x18')][_0x084a('0x19')]===undefined?!![]:![]:!![],'where':_0x3b2b38[_0x084a('0x18')]?_0x3b2b38[_0x084a('0x18')][_0x084a('0x1a')]||null:null,'attributes':_0x3b2b38[_0x084a('0x18')]?_0x3b2b38[_0x084a('0x18')][_0x084a('0x1b')]||null:null,'include':_0x3b2b38['options']?_0x3b2b38['options'][_0x084a('0x1d')]?_[_0x084a('0x1f')](_0x3b2b38[_0x084a('0x18')][_0x084a('0x1d')],function(_0x83f94f){return{'model':db[_0x83f94f['model']],'as':_0x83f94f['as'],'attributes':_0x83f94f[_0x084a('0x1b')],'include':_0x83f94f[_0x084a('0x1d')]?_[_0x084a('0x1f')](_0x83f94f['include'],function(_0x109593){return{'model':db[_0x109593[_0x084a('0x1e')]],'as':_0x109593['as'],'attributes':_0x109593[_0x084a('0x1b')],'include':_0x109593['include']?_['map'](_0x109593['include'],function(_0xf97d1b){return{'model':db[_0xf97d1b[_0x084a('0x1e')]],'as':_0xf97d1b['as'],'attributes':_0xf97d1b[_0x084a('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3c09c3){logger[_0x084a('0xc')](_0x084a('0x21'),_0x3b2b38);logger[_0x084a('0xd')](_0x084a('0x21'),_0x3b2b38,JSON[_0x084a('0x10')](_0x3c09c3));_0xe1980b(_0x3c09c3);})[_0x084a('0x15')](function(_0x19354f){logger[_0x084a('0x11')](_0x084a('0x21'),_0x19354f[_0x084a('0x13')],_0x3b2b38);_0x24bcf5(_0x501a16[_0x084a('0x11')](0x1f4,_0x19354f[_0x084a('0x13')]));});});};
\ No newline at end of file
index 032d8fe..8b446cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93a6=['isAuthenticated','index','get','/:id','show','/:id/fields','/:id/subjects','/:id/descriptions','getDescriptions','post','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./intVtigerConfiguration.controller'];(function(_0x3f6e26,_0x811a34){var _0x474345=function(_0x4a0cbe){while(--_0x4a0cbe){_0x3f6e26['push'](_0x3f6e26['shift']());}};_0x474345(++_0x811a34);}(_0x93a6,0xf4));var _0x693a=function(_0x4b4340,_0x295fc0){_0x4b4340=_0x4b4340-0x0;var _0x4cdb42=_0x93a6[_0x4b4340];return _0x4cdb42;};'use strict';var multer=require(_0x693a('0x0'));var util=require(_0x693a('0x1'));var path=require(_0x693a('0x2'));var timeout=require(_0x693a('0x3'));var express=require(_0x693a('0x4'));var router=express['Router']();var fs_extra=require(_0x693a('0x5'));var auth=require(_0x693a('0x6'));var interaction=require(_0x693a('0x7'));var config=require('../../config/environment');var controller=require(_0x693a('0x8'));router['get']('/',auth[_0x693a('0x9')](),controller[_0x693a('0xa')]);router[_0x693a('0xb')](_0x693a('0xc'),auth[_0x693a('0x9')](),controller[_0x693a('0xd')]);router[_0x693a('0xb')](_0x693a('0xe'),auth[_0x693a('0x9')](),controller['getFields']);router['get'](_0x693a('0xf'),auth[_0x693a('0x9')](),controller['getSubjects']);router[_0x693a('0xb')](_0x693a('0x10'),auth['isAuthenticated'](),controller[_0x693a('0x11')]);router[_0x693a('0x12')]('/',auth['isAuthenticated'](),controller['create']);router['put']('/:id',auth[_0x693a('0x9')](),controller[_0x693a('0x13')]);router[_0x693a('0x14')](_0x693a('0xc'),auth[_0x693a('0x9')](),controller[_0x693a('0x15')]);module[_0x693a('0x16')]=router;
\ No newline at end of file
+var _0xf737=['destroy','exports','multer','path','connect-timeout','express','fs-extra','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','post','create','put','update'];(function(_0x26606f,_0x10d393){var _0x1d8bf3=function(_0x3a65e0){while(--_0x3a65e0){_0x26606f['push'](_0x26606f['shift']());}};_0x1d8bf3(++_0x10d393);}(_0xf737,0x1b7));var _0x7f73=function(_0x324bf4,_0x1056b5){_0x324bf4=_0x324bf4-0x0;var _0xa44411=_0xf737[_0x324bf4];return _0xa44411;};'use strict';var multer=require(_0x7f73('0x0'));var util=require('util');var path=require(_0x7f73('0x1'));var timeout=require(_0x7f73('0x2'));var express=require(_0x7f73('0x3'));var router=express['Router']();var fs_extra=require(_0x7f73('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7f73('0x5'));var controller=require(_0x7f73('0x6'));router[_0x7f73('0x7')]('/',auth[_0x7f73('0x8')](),controller[_0x7f73('0x9')]);router[_0x7f73('0x7')](_0x7f73('0xa'),auth[_0x7f73('0x8')](),controller[_0x7f73('0xb')]);router['get'](_0x7f73('0xc'),auth[_0x7f73('0x8')](),controller[_0x7f73('0xd')]);router[_0x7f73('0x7')](_0x7f73('0xe'),auth[_0x7f73('0x8')](),controller['getSubjects']);router[_0x7f73('0x7')](_0x7f73('0xf'),auth['isAuthenticated'](),controller[_0x7f73('0x10')]);router[_0x7f73('0x11')]('/',auth[_0x7f73('0x8')](),controller[_0x7f73('0x12')]);router[_0x7f73('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x7f73('0x14')]);router['delete'](_0x7f73('0xa'),auth[_0x7f73('0x8')](),controller[_0x7f73('0x15')]);module[_0x7f73('0x16')]=router;
\ No newline at end of file
index b0a3a8a..c78dca9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x630f=['sequelize','STRING'];(function(_0x3ab5bd,_0x56fbcf){var _0xe4109d=function(_0x36418b){while(--_0x36418b){_0x3ab5bd['push'](_0x3ab5bd['shift']());}};_0xe4109d(++_0x56fbcf);}(_0x630f,0xcc));var _0xf630=function(_0x3a3343,_0x4fea3c){_0x3a3343=_0x3a3343-0x0;var _0x3865dd=_0x630f[_0x3a3343];return _0x3865dd;};'use strict';var Sequelize=require(_0xf630('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xf630('0x1')]}};
\ No newline at end of file
+var _0x2087=['exports','STRING','sequelize'];(function(_0x3cb731,_0x207931){var _0x5566e9=function(_0x1e64b2){while(--_0x1e64b2){_0x3cb731['push'](_0x3cb731['shift']());}};_0x5566e9(++_0x207931);}(_0x2087,0x6b));var _0x7208=function(_0x2af268,_0x8049a3){_0x2af268=_0x2af268-0x0;var _0x922a96=_0x2087[_0x2af268];return _0x922a96;};'use strict';var Sequelize=require(_0x7208('0x0'));module[_0x7208('0x1')]={'name':{'type':Sequelize[_0x7208('0x2')]},'description':{'type':Sequelize[_0x7208('0x2')]}};
\ No newline at end of file
index 596dc89..add88df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35d4=['update','destroy','then','end','stack','name','send','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','filter','merge','map','VtigerConfiguration','includeAll','include','findAll','show','options','catch','create','body','find','params','getFields','findOne','VtigerField','hasOwnProperty','getSubjects','pick','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','apply','reject'];(function(_0x484e36,_0x4482d8){var _0xafc85d=function(_0xaba9c8){while(--_0xaba9c8){_0x484e36['push'](_0x484e36['shift']());}};_0xafc85d(++_0x4482d8);}(_0x35d4,0x170));var _0x435d=function(_0x5b8fe4,_0x208db1){_0x5b8fe4=_0x5b8fe4-0x0;var _0x3d26ca=_0x35d4[_0x5b8fe4];return _0x3d26ca;};'use strict';var emlformat=require(_0x435d('0x0'));var rimraf=require(_0x435d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x435d('0x2'));var rp=require(_0x435d('0x3'));var moment=require(_0x435d('0x4'));var BPromise=require(_0x435d('0x5'));var Mustache=require(_0x435d('0x6'));var util=require(_0x435d('0x7'));var path=require(_0x435d('0x8'));var sox=require(_0x435d('0x9'));var csv=require(_0x435d('0xa'));var ejs=require(_0x435d('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x435d('0xc'));var squel=require(_0x435d('0xd'));var crypto=require(_0x435d('0xe'));var jsforce=require(_0x435d('0xf'));var deskjs=require(_0x435d('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x435d('0x11'));var Redis=require(_0x435d('0x12'));var authService=require(_0x435d('0x13'));var qs=require(_0x435d('0x14'));var as=require(_0x435d('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x435d('0x16'))(_0x435d('0x17'));var utils=require(_0x435d('0x18'));var config=require(_0x435d('0x19'));var licenseUtil=require(_0x435d('0x1a'));var db=require(_0x435d('0x1b'))['db'];function respondWithStatusCode(_0x2f7d98,_0x5783f0){_0x5783f0=_0x5783f0||0xcc;return function(_0x1a59b7){if(_0x1a59b7){return _0x2f7d98['sendStatus'](_0x5783f0);}return _0x2f7d98[_0x435d('0x1c')](_0x5783f0)['end']();};}function respondWithResult(_0x20d22b,_0x5466fa){_0x5466fa=_0x5466fa||0xc8;return function(_0x321bc9){if(_0x321bc9){return _0x20d22b[_0x435d('0x1c')](_0x5466fa)[_0x435d('0x1d')](_0x321bc9);}};}function respondWithFilteredResult(_0x42cdf3,_0xd4843){return function(_0x585755){if(_0x585755){var _0x22c1a4=typeof _0xd4843[_0x435d('0x1e')]===_0x435d('0x1f')&&typeof _0xd4843[_0x435d('0x20')]===_0x435d('0x1f');var _0x40acec=_0x585755[_0x435d('0x21')];var _0xabf0bd=_0x22c1a4?0x0:_0xd4843[_0x435d('0x1e')];var _0x22d76e=_0x22c1a4?_0x585755[_0x435d('0x21')]:_0xd4843[_0x435d('0x1e')]+_0xd4843[_0x435d('0x20')];var _0x201497;if(_0x22d76e>=_0x40acec){_0x22d76e=_0x40acec;_0x201497=0xc8;}else{_0x201497=0xce;}_0x42cdf3[_0x435d('0x1c')](_0x201497);return _0x42cdf3[_0x435d('0x22')]('Content-Range',_0xabf0bd+'-'+_0x22d76e+'/'+_0x40acec)[_0x435d('0x1d')](_0x585755);}return null;};}function patchUpdates(_0x14e641){return function(_0x2b5737){try{jsonpatch[_0x435d('0x23')](_0x2b5737,_0x14e641,!![]);}catch(_0x460c6e){return BPromise[_0x435d('0x24')](_0x460c6e);}return _0x2b5737['save']();};}function saveUpdates(_0x4160fa,_0x3037b6){return function(_0x42b487){if(_0x42b487){return _0x42b487[_0x435d('0x25')](_0x4160fa)['then'](function(_0xaea35b){return _0xaea35b;});}return null;};}function removeEntity(_0x383d4f,_0x5568c9){return function(_0x1eeb30){if(_0x1eeb30){return _0x1eeb30[_0x435d('0x26')]()[_0x435d('0x27')](function(){_0x383d4f[_0x435d('0x1c')](0xcc)[_0x435d('0x28')]();});}};}function handleEntityNotFound(_0x1f5138,_0x217d80){return function(_0x4d89b1){if(!_0x4d89b1){_0x1f5138['sendStatus'](0x194);}return _0x4d89b1;};}function handleError(_0x5a2ac8,_0x4a5964){_0x4a5964=_0x4a5964||0x1f4;return function(_0x1266d0){logger['error'](_0x1266d0[_0x435d('0x29')]);if(_0x1266d0[_0x435d('0x2a')]){delete _0x1266d0['name'];}_0x5a2ac8[_0x435d('0x1c')](_0x4a5964)[_0x435d('0x2b')](_0x1266d0);};}exports['index']=function(_0x154832,_0x4a2a3a){var _0x7d3acf={},_0x341e5b={},_0xb358ec={'count':0x0,'rows':[]};var _0x4524a8=_['map'](db['VtigerConfiguration'][_0x435d('0x2c')],function(_0x7c575c){return{'name':_0x7c575c[_0x435d('0x2d')],'type':_0x7c575c[_0x435d('0x2e')][_0x435d('0x2f')]};});_0x341e5b['model']=_['map'](_0x4524a8,_0x435d('0x2a'));_0x341e5b[_0x435d('0x30')]=_[_0x435d('0x31')](_0x154832['query']);_0x341e5b[_0x435d('0x32')]=_[_0x435d('0x33')](_0x341e5b[_0x435d('0x34')],_0x341e5b[_0x435d('0x30')]);_0x7d3acf[_0x435d('0x35')]=_[_0x435d('0x33')](_0x341e5b[_0x435d('0x34')],qs['fields'](_0x154832[_0x435d('0x30')][_0x435d('0x36')]));_0x7d3acf[_0x435d('0x35')]=_0x7d3acf['attributes'][_0x435d('0x37')]?_0x7d3acf[_0x435d('0x35')]:_0x341e5b[_0x435d('0x34')];if(!_0x154832[_0x435d('0x30')]['hasOwnProperty'](_0x435d('0x38'))){_0x7d3acf[_0x435d('0x20')]=qs[_0x435d('0x20')](_0x154832[_0x435d('0x30')][_0x435d('0x20')]);_0x7d3acf[_0x435d('0x1e')]=qs[_0x435d('0x1e')](_0x154832[_0x435d('0x30')]['offset']);}_0x7d3acf[_0x435d('0x39')]=qs[_0x435d('0x3a')](_0x154832['query'][_0x435d('0x3a')]);_0x7d3acf[_0x435d('0x3b')]=qs['filters'](_['pick'](_0x154832['query'],_0x341e5b[_0x435d('0x32')]),_0x4524a8);if(_0x154832[_0x435d('0x30')][_0x435d('0x3c')]){_0x7d3acf[_0x435d('0x3b')]=_[_0x435d('0x3d')](_0x7d3acf[_0x435d('0x3b')],{'$or':_[_0x435d('0x3e')](_0x4524a8,function(_0xd986ba){if(_0xd986ba[_0x435d('0x2e')]!=='VIRTUAL'){var _0x3c8884={};_0x3c8884[_0xd986ba[_0x435d('0x2a')]]={'$like':'%'+_0x154832['query'][_0x435d('0x3c')]+'%'};return _0x3c8884;}})});}_0x7d3acf=_[_0x435d('0x3d')]({},_0x7d3acf,_0x154832['options']);var _0x4be8ab={'where':_0x7d3acf['where']};return db[_0x435d('0x3f')]['count'](_0x4be8ab)[_0x435d('0x27')](function(_0x22d0bc){_0xb358ec[_0x435d('0x21')]=_0x22d0bc;if(_0x154832[_0x435d('0x30')][_0x435d('0x40')]){_0x7d3acf[_0x435d('0x41')]=[{'all':!![]}];}return db['VtigerConfiguration'][_0x435d('0x42')](_0x7d3acf);})['then'](function(_0x12fb3e){_0xb358ec['rows']=_0x12fb3e;return _0xb358ec;})[_0x435d('0x27')](respondWithFilteredResult(_0x4a2a3a,_0x7d3acf))['catch'](handleError(_0x4a2a3a,null));};exports[_0x435d('0x43')]=function(_0xfa6f57,_0x11c958){var _0x1f2eea={'raw':![],'where':{'id':_0xfa6f57['params']['id']}},_0x4ef515={};_0x4ef515['model']=_[_0x435d('0x31')](db['VtigerConfiguration'][_0x435d('0x2c')]);_0x4ef515[_0x435d('0x30')]=_[_0x435d('0x31')](_0xfa6f57[_0x435d('0x30')]);_0x4ef515[_0x435d('0x32')]=_['intersection'](_0x4ef515[_0x435d('0x34')],_0x4ef515['query']);_0x1f2eea['attributes']=_[_0x435d('0x33')](_0x4ef515['model'],qs[_0x435d('0x36')](_0xfa6f57[_0x435d('0x30')][_0x435d('0x36')]));_0x1f2eea[_0x435d('0x35')]=_0x1f2eea[_0x435d('0x35')][_0x435d('0x37')]?_0x1f2eea[_0x435d('0x35')]:_0x4ef515[_0x435d('0x34')];if(_0xfa6f57[_0x435d('0x30')][_0x435d('0x40')]){_0x1f2eea[_0x435d('0x41')]=[{'all':!![]}];}_0x1f2eea=_[_0x435d('0x3d')]({},_0x1f2eea,_0xfa6f57[_0x435d('0x44')]);return db[_0x435d('0x3f')]['find'](_0x1f2eea)[_0x435d('0x27')](handleEntityNotFound(_0x11c958,null))[_0x435d('0x27')](respondWithResult(_0x11c958,null))[_0x435d('0x45')](handleError(_0x11c958,null));};exports[_0x435d('0x46')]=function(_0x4160b2,_0x408cbd){return db[_0x435d('0x3f')]['create'](_0x4160b2[_0x435d('0x47')],{})['then'](respondWithResult(_0x408cbd,0xc9))[_0x435d('0x45')](handleError(_0x408cbd,null));};exports[_0x435d('0x25')]=function(_0x26acf1,_0x359d0b){if(_0x26acf1[_0x435d('0x47')]['id']){delete _0x26acf1[_0x435d('0x47')]['id'];}return db['VtigerConfiguration'][_0x435d('0x48')]({'where':{'id':_0x26acf1[_0x435d('0x49')]['id']}})['then'](handleEntityNotFound(_0x359d0b,null))[_0x435d('0x27')](saveUpdates(_0x26acf1[_0x435d('0x47')],null))[_0x435d('0x27')](respondWithResult(_0x359d0b,null))[_0x435d('0x45')](handleError(_0x359d0b,null));};exports[_0x435d('0x26')]=function(_0x3e868a,_0x3ab106){return db[_0x435d('0x3f')][_0x435d('0x48')]({'where':{'id':_0x3e868a[_0x435d('0x49')]['id']}})['then'](handleEntityNotFound(_0x3ab106,null))['then'](removeEntity(_0x3ab106,null))[_0x435d('0x45')](handleError(_0x3ab106,null));};exports[_0x435d('0x4a')]=function(_0x1f8593,_0x123b20,_0x2e1a35){var _0x23c260={};var _0x515bf4={};var _0x214ced;var _0x9eed8f;return db['VtigerConfiguration'][_0x435d('0x4b')]({'where':{'id':_0x1f8593[_0x435d('0x49')]['id']}})['then'](handleEntityNotFound(_0x123b20,null))['then'](function(_0x330ebc){if(_0x330ebc){_0x214ced=_0x330ebc;_0x515bf4[_0x435d('0x34')]=_[_0x435d('0x31')](db[_0x435d('0x4c')][_0x435d('0x2c')]);_0x515bf4[_0x435d('0x30')]=_['keys'](_0x1f8593[_0x435d('0x30')]);_0x515bf4[_0x435d('0x32')]=_[_0x435d('0x33')](_0x515bf4[_0x435d('0x34')],_0x515bf4[_0x435d('0x30')]);_0x23c260[_0x435d('0x35')]=_['intersection'](_0x515bf4[_0x435d('0x34')],qs['fields'](_0x1f8593['query'][_0x435d('0x36')]));_0x23c260['attributes']=_0x23c260[_0x435d('0x35')][_0x435d('0x37')]?_0x23c260[_0x435d('0x35')]:_0x515bf4[_0x435d('0x34')];_0x23c260['order']=qs[_0x435d('0x3a')](_0x1f8593['query'][_0x435d('0x3a')]);_0x23c260[_0x435d('0x3b')]=qs[_0x435d('0x32')](_['pick'](_0x1f8593['query'],_0x515bf4[_0x435d('0x32')]));if(_0x1f8593[_0x435d('0x30')][_0x435d('0x3c')]){_0x23c260['where']=_[_0x435d('0x3d')](_0x23c260[_0x435d('0x3b')],{'$or':_['map'](_0x23c260[_0x435d('0x35')],function(_0x57c64d){var _0x54fc8b={};_0x54fc8b[_0x57c64d]={'$like':'%'+_0x1f8593[_0x435d('0x30')][_0x435d('0x3c')]+'%'};return _0x54fc8b;})});}_0x23c260=_[_0x435d('0x3d')]({},_0x23c260,_0x1f8593[_0x435d('0x44')]);return _0x214ced[_0x435d('0x4a')](_0x23c260);}})['then'](function(_0x9c0bf0){if(_0x9c0bf0){_0x9eed8f=_0x9c0bf0[_0x435d('0x37')];if(!_0x1f8593[_0x435d('0x30')][_0x435d('0x4d')](_0x435d('0x38'))){_0x23c260[_0x435d('0x20')]=qs[_0x435d('0x20')](_0x1f8593[_0x435d('0x30')]['limit']);_0x23c260[_0x435d('0x1e')]=qs['offset'](_0x1f8593[_0x435d('0x30')]['offset']);}return _0x214ced[_0x435d('0x4a')](_0x23c260);}})[_0x435d('0x27')](function(_0x46dcd0){if(_0x46dcd0){return _0x46dcd0?{'count':_0x9eed8f,'rows':_0x46dcd0}:null;}})['then'](respondWithResult(_0x123b20,null))[_0x435d('0x45')](handleError(_0x123b20,null));};exports[_0x435d('0x4e')]=function(_0x550d7e,_0x57b244,_0x5c1ff3){var _0x2062cb={};var _0x4c4aa2={};var _0x5961a4;var _0x142ecc;return db[_0x435d('0x3f')][_0x435d('0x4b')]({'where':{'id':_0x550d7e[_0x435d('0x49')]['id']}})['then'](handleEntityNotFound(_0x57b244,null))['then'](function(_0x4a6bf7){if(_0x4a6bf7){_0x5961a4=_0x4a6bf7;_0x4c4aa2[_0x435d('0x34')]=_['keys'](db[_0x435d('0x4c')][_0x435d('0x2c')]);_0x4c4aa2[_0x435d('0x30')]=_[_0x435d('0x31')](_0x550d7e[_0x435d('0x30')]);_0x4c4aa2[_0x435d('0x32')]=_[_0x435d('0x33')](_0x4c4aa2[_0x435d('0x34')],_0x4c4aa2[_0x435d('0x30')]);_0x2062cb[_0x435d('0x35')]=_[_0x435d('0x33')](_0x4c4aa2[_0x435d('0x34')],qs[_0x435d('0x36')](_0x550d7e['query'][_0x435d('0x36')]));_0x2062cb['attributes']=_0x2062cb[_0x435d('0x35')][_0x435d('0x37')]?_0x2062cb[_0x435d('0x35')]:_0x4c4aa2[_0x435d('0x34')];_0x2062cb[_0x435d('0x39')]=qs['sort'](_0x550d7e[_0x435d('0x30')][_0x435d('0x3a')]);_0x2062cb['where']=qs[_0x435d('0x32')](_[_0x435d('0x4f')](_0x550d7e[_0x435d('0x30')],_0x4c4aa2['filters']));if(_0x550d7e[_0x435d('0x30')][_0x435d('0x3c')]){_0x2062cb[_0x435d('0x3b')]=_[_0x435d('0x3d')](_0x2062cb[_0x435d('0x3b')],{'$or':_[_0x435d('0x3e')](_0x2062cb[_0x435d('0x35')],function(_0x15fbd8){var _0x54fcf2={};_0x54fcf2[_0x15fbd8]={'$like':'%'+_0x550d7e[_0x435d('0x30')][_0x435d('0x3c')]+'%'};return _0x54fcf2;})});}_0x2062cb=_[_0x435d('0x3d')]({},_0x2062cb,_0x550d7e['options']);return _0x5961a4[_0x435d('0x4e')](_0x2062cb);}})[_0x435d('0x27')](function(_0x5bae7f){if(_0x5bae7f){_0x142ecc=_0x5bae7f[_0x435d('0x37')];if(!_0x550d7e[_0x435d('0x30')]['hasOwnProperty'](_0x435d('0x38'))){_0x2062cb[_0x435d('0x20')]=qs[_0x435d('0x20')](_0x550d7e[_0x435d('0x30')][_0x435d('0x20')]);_0x2062cb[_0x435d('0x1e')]=qs['offset'](_0x550d7e[_0x435d('0x30')][_0x435d('0x1e')]);}return _0x5961a4['getSubjects'](_0x2062cb);}})[_0x435d('0x27')](function(_0x160ed3){if(_0x160ed3){return _0x160ed3?{'count':_0x142ecc,'rows':_0x160ed3}:null;}})[_0x435d('0x27')](respondWithResult(_0x57b244,null))[_0x435d('0x45')](handleError(_0x57b244,null));};exports[_0x435d('0x50')]=function(_0x151c8a,_0x24d308,_0x3a6e4b){var _0x130224={};var _0x1ffbb3={};var _0x11e525;var _0x872d50;return db[_0x435d('0x3f')][_0x435d('0x4b')]({'where':{'id':_0x151c8a['params']['id']}})[_0x435d('0x27')](handleEntityNotFound(_0x24d308,null))[_0x435d('0x27')](function(_0xea89cd){if(_0xea89cd){_0x11e525=_0xea89cd;_0x1ffbb3[_0x435d('0x34')]=_[_0x435d('0x31')](db[_0x435d('0x4c')][_0x435d('0x2c')]);_0x1ffbb3[_0x435d('0x30')]=_[_0x435d('0x31')](_0x151c8a[_0x435d('0x30')]);_0x1ffbb3[_0x435d('0x32')]=_[_0x435d('0x33')](_0x1ffbb3[_0x435d('0x34')],_0x1ffbb3[_0x435d('0x30')]);_0x130224[_0x435d('0x35')]=_[_0x435d('0x33')](_0x1ffbb3[_0x435d('0x34')],qs[_0x435d('0x36')](_0x151c8a[_0x435d('0x30')][_0x435d('0x36')]));_0x130224[_0x435d('0x35')]=_0x130224[_0x435d('0x35')][_0x435d('0x37')]?_0x130224[_0x435d('0x35')]:_0x1ffbb3[_0x435d('0x34')];_0x130224[_0x435d('0x39')]=qs[_0x435d('0x3a')](_0x151c8a[_0x435d('0x30')][_0x435d('0x3a')]);_0x130224[_0x435d('0x3b')]=qs[_0x435d('0x32')](_[_0x435d('0x4f')](_0x151c8a[_0x435d('0x30')],_0x1ffbb3['filters']));if(_0x151c8a['query'][_0x435d('0x3c')]){_0x130224[_0x435d('0x3b')]=_[_0x435d('0x3d')](_0x130224[_0x435d('0x3b')],{'$or':_[_0x435d('0x3e')](_0x130224[_0x435d('0x35')],function(_0x3f0931){var _0x34a680={};_0x34a680[_0x3f0931]={'$like':'%'+_0x151c8a[_0x435d('0x30')][_0x435d('0x3c')]+'%'};return _0x34a680;})});}_0x130224=_[_0x435d('0x3d')]({},_0x130224,_0x151c8a[_0x435d('0x44')]);return _0x11e525[_0x435d('0x50')](_0x130224);}})[_0x435d('0x27')](function(_0x56ff59){if(_0x56ff59){_0x872d50=_0x56ff59['length'];if(!_0x151c8a[_0x435d('0x30')][_0x435d('0x4d')]('nolimit')){_0x130224[_0x435d('0x20')]=qs[_0x435d('0x20')](_0x151c8a[_0x435d('0x30')][_0x435d('0x20')]);_0x130224[_0x435d('0x1e')]=qs[_0x435d('0x1e')](_0x151c8a['query'][_0x435d('0x1e')]);}return _0x11e525[_0x435d('0x50')](_0x130224);}})[_0x435d('0x27')](function(_0x407bae){if(_0x407bae){return _0x407bae?{'count':_0x872d50,'rows':_0x407bae}:null;}})[_0x435d('0x27')](respondWithResult(_0x24d308,null))[_0x435d('0x45')](handleError(_0x24d308,null));};
\ No newline at end of file
+var _0x74b8=['Content-Range','json','apply','save','then','destroy','stack','name','send','index','map','VtigerConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','pick','merge','where','VIRTUAL','options','includeAll','findAll','catch','show','params','include','create','update','body','find','getFields','findOne','filter','hasOwnProperty','getSubjects','VtigerField','getDescriptions','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','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','offset','undefined','count','limit','set'];(function(_0x46f3b5,_0x2568e3){var _0x1431eb=function(_0x5e371c){while(--_0x5e371c){_0x46f3b5['push'](_0x46f3b5['shift']());}};_0x1431eb(++_0x2568e3);}(_0x74b8,0x86));var _0x874b=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0x74b8[_0x2160a9];return _0xa88cf7;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x874b('0x0'));var jsonpatch=require(_0x874b('0x1'));var rp=require(_0x874b('0x2'));var moment=require(_0x874b('0x3'));var BPromise=require(_0x874b('0x4'));var Mustache=require(_0x874b('0x5'));var util=require(_0x874b('0x6'));var path=require(_0x874b('0x7'));var sox=require(_0x874b('0x8'));var csv=require(_0x874b('0x9'));var ejs=require(_0x874b('0xa'));var fs=require('fs');var fs_extra=require(_0x874b('0xb'));var _=require(_0x874b('0xc'));var squel=require(_0x874b('0xd'));var crypto=require(_0x874b('0xe'));var jsforce=require(_0x874b('0xf'));var deskjs=require(_0x874b('0x10'));var toCsv=require('to-csv');var querystring=require(_0x874b('0x11'));var Papa=require(_0x874b('0x12'));var Redis=require(_0x874b('0x13'));var authService=require(_0x874b('0x14'));var qs=require(_0x874b('0x15'));var as=require(_0x874b('0x16'));var hardwareService=require(_0x874b('0x17'));var logger=require('../../config/logger')(_0x874b('0x18'));var utils=require(_0x874b('0x19'));var config=require(_0x874b('0x1a'));var licenseUtil=require(_0x874b('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x41fbcf,_0x406c92){_0x406c92=_0x406c92||0xcc;return function(_0x228cb9){if(_0x228cb9){return _0x41fbcf[_0x874b('0x1c')](_0x406c92);}return _0x41fbcf['status'](_0x406c92)[_0x874b('0x1d')]();};}function respondWithResult(_0x7d8b82,_0x12599f){_0x12599f=_0x12599f||0xc8;return function(_0x3ee409){if(_0x3ee409){return _0x7d8b82[_0x874b('0x1e')](_0x12599f)['json'](_0x3ee409);}};}function respondWithFilteredResult(_0x400ba2,_0x9a140c){return function(_0x3eb081){if(_0x3eb081){var _0x4c327e=typeof _0x9a140c[_0x874b('0x1f')]===_0x874b('0x20')&&typeof _0x9a140c['limit']===_0x874b('0x20');var _0x230612=_0x3eb081[_0x874b('0x21')];var _0x27d943=_0x4c327e?0x0:_0x9a140c['offset'];var _0x14ad57=_0x4c327e?_0x3eb081['count']:_0x9a140c['offset']+_0x9a140c[_0x874b('0x22')];var _0x4c701a;if(_0x14ad57>=_0x230612){_0x14ad57=_0x230612;_0x4c701a=0xc8;}else{_0x4c701a=0xce;}_0x400ba2[_0x874b('0x1e')](_0x4c701a);return _0x400ba2[_0x874b('0x23')](_0x874b('0x24'),_0x27d943+'-'+_0x14ad57+'/'+_0x230612)[_0x874b('0x25')](_0x3eb081);}return null;};}function patchUpdates(_0x1d2ff7){return function(_0x5a6e95){try{jsonpatch[_0x874b('0x26')](_0x5a6e95,_0x1d2ff7,!![]);}catch(_0x5972fd){return BPromise['reject'](_0x5972fd);}return _0x5a6e95[_0x874b('0x27')]();};}function saveUpdates(_0x56496d,_0x3a1589){return function(_0x3c7bb3){if(_0x3c7bb3){return _0x3c7bb3['update'](_0x56496d)[_0x874b('0x28')](function(_0x233dec){return _0x233dec;});}return null;};}function removeEntity(_0x185d6a,_0x28dfb6){return function(_0x30b18c){if(_0x30b18c){return _0x30b18c[_0x874b('0x29')]()[_0x874b('0x28')](function(){_0x185d6a[_0x874b('0x1e')](0xcc)[_0x874b('0x1d')]();});}};}function handleEntityNotFound(_0x5bcb28,_0x52aa2f){return function(_0x570243){if(!_0x570243){_0x5bcb28[_0x874b('0x1c')](0x194);}return _0x570243;};}function handleError(_0x2c4f66,_0xf1a73a){_0xf1a73a=_0xf1a73a||0x1f4;return function(_0x4f8d74){logger['error'](_0x4f8d74[_0x874b('0x2a')]);if(_0x4f8d74['name']){delete _0x4f8d74[_0x874b('0x2b')];}_0x2c4f66[_0x874b('0x1e')](_0xf1a73a)[_0x874b('0x2c')](_0x4f8d74);};}exports[_0x874b('0x2d')]=function(_0xc95305,_0x38cfa0){var _0x41c7ef={},_0xc87f74={},_0x55c3ad={'count':0x0,'rows':[]};var _0x1a2ff5=_[_0x874b('0x2e')](db[_0x874b('0x2f')][_0x874b('0x30')],function(_0x1f97db){return{'name':_0x1f97db[_0x874b('0x31')],'type':_0x1f97db[_0x874b('0x32')][_0x874b('0x33')]};});_0xc87f74[_0x874b('0x34')]=_[_0x874b('0x2e')](_0x1a2ff5,_0x874b('0x2b'));_0xc87f74[_0x874b('0x35')]=_[_0x874b('0x36')](_0xc95305['query']);_0xc87f74[_0x874b('0x37')]=_[_0x874b('0x38')](_0xc87f74[_0x874b('0x34')],_0xc87f74['query']);_0x41c7ef['attributes']=_['intersection'](_0xc87f74['model'],qs['fields'](_0xc95305[_0x874b('0x35')][_0x874b('0x39')]));_0x41c7ef['attributes']=_0x41c7ef[_0x874b('0x3a')][_0x874b('0x3b')]?_0x41c7ef[_0x874b('0x3a')]:_0xc87f74['model'];if(!_0xc95305[_0x874b('0x35')]['hasOwnProperty'](_0x874b('0x3c'))){_0x41c7ef['limit']=qs[_0x874b('0x22')](_0xc95305['query'][_0x874b('0x22')]);_0x41c7ef[_0x874b('0x1f')]=qs[_0x874b('0x1f')](_0xc95305[_0x874b('0x35')]['offset']);}_0x41c7ef[_0x874b('0x3d')]=qs[_0x874b('0x3e')](_0xc95305[_0x874b('0x35')][_0x874b('0x3e')]);_0x41c7ef['where']=qs[_0x874b('0x37')](_[_0x874b('0x3f')](_0xc95305[_0x874b('0x35')],_0xc87f74[_0x874b('0x37')]),_0x1a2ff5);if(_0xc95305[_0x874b('0x35')]['filter']){_0x41c7ef['where']=_[_0x874b('0x40')](_0x41c7ef[_0x874b('0x41')],{'$or':_['map'](_0x1a2ff5,function(_0x592344){if(_0x592344[_0x874b('0x32')]!==_0x874b('0x42')){var _0x42d600={};_0x42d600[_0x592344[_0x874b('0x2b')]]={'$like':'%'+_0xc95305['query']['filter']+'%'};return _0x42d600;}})});}_0x41c7ef=_[_0x874b('0x40')]({},_0x41c7ef,_0xc95305[_0x874b('0x43')]);var _0x7762fe={'where':_0x41c7ef[_0x874b('0x41')]};return db[_0x874b('0x2f')]['count'](_0x7762fe)[_0x874b('0x28')](function(_0x828dc9){_0x55c3ad[_0x874b('0x21')]=_0x828dc9;if(_0xc95305[_0x874b('0x35')][_0x874b('0x44')]){_0x41c7ef['include']=[{'all':!![]}];}return db[_0x874b('0x2f')][_0x874b('0x45')](_0x41c7ef);})['then'](function(_0x3499a6){_0x55c3ad['rows']=_0x3499a6;return _0x55c3ad;})[_0x874b('0x28')](respondWithFilteredResult(_0x38cfa0,_0x41c7ef))[_0x874b('0x46')](handleError(_0x38cfa0,null));};exports[_0x874b('0x47')]=function(_0x1744f7,_0x13d477){var _0x3c58cb={'raw':![],'where':{'id':_0x1744f7[_0x874b('0x48')]['id']}},_0x1616d8={};_0x1616d8[_0x874b('0x34')]=_['keys'](db['VtigerConfiguration'][_0x874b('0x30')]);_0x1616d8['query']=_[_0x874b('0x36')](_0x1744f7[_0x874b('0x35')]);_0x1616d8[_0x874b('0x37')]=_['intersection'](_0x1616d8[_0x874b('0x34')],_0x1616d8['query']);_0x3c58cb['attributes']=_[_0x874b('0x38')](_0x1616d8[_0x874b('0x34')],qs[_0x874b('0x39')](_0x1744f7[_0x874b('0x35')][_0x874b('0x39')]));_0x3c58cb[_0x874b('0x3a')]=_0x3c58cb['attributes']['length']?_0x3c58cb[_0x874b('0x3a')]:_0x1616d8[_0x874b('0x34')];if(_0x1744f7[_0x874b('0x35')][_0x874b('0x44')]){_0x3c58cb[_0x874b('0x49')]=[{'all':!![]}];}_0x3c58cb=_[_0x874b('0x40')]({},_0x3c58cb,_0x1744f7['options']);return db[_0x874b('0x2f')]['find'](_0x3c58cb)[_0x874b('0x28')](handleEntityNotFound(_0x13d477,null))[_0x874b('0x28')](respondWithResult(_0x13d477,null))[_0x874b('0x46')](handleError(_0x13d477,null));};exports[_0x874b('0x4a')]=function(_0x3d5171,_0x71742d){return db[_0x874b('0x2f')][_0x874b('0x4a')](_0x3d5171['body'],{})['then'](respondWithResult(_0x71742d,0xc9))['catch'](handleError(_0x71742d,null));};exports[_0x874b('0x4b')]=function(_0x59c2e4,_0x4f9dc5){if(_0x59c2e4[_0x874b('0x4c')]['id']){delete _0x59c2e4[_0x874b('0x4c')]['id'];}return db[_0x874b('0x2f')][_0x874b('0x4d')]({'where':{'id':_0x59c2e4[_0x874b('0x48')]['id']}})[_0x874b('0x28')](handleEntityNotFound(_0x4f9dc5,null))[_0x874b('0x28')](saveUpdates(_0x59c2e4['body'],null))[_0x874b('0x28')](respondWithResult(_0x4f9dc5,null))[_0x874b('0x46')](handleError(_0x4f9dc5,null));};exports[_0x874b('0x29')]=function(_0x4fcb18,_0x163502){return db[_0x874b('0x2f')][_0x874b('0x4d')]({'where':{'id':_0x4fcb18[_0x874b('0x48')]['id']}})[_0x874b('0x28')](handleEntityNotFound(_0x163502,null))[_0x874b('0x28')](removeEntity(_0x163502,null))[_0x874b('0x46')](handleError(_0x163502,null));};exports[_0x874b('0x4e')]=function(_0x19204f,_0x45a03f,_0x77a9ec){var _0x402120={};var _0x419482={};var _0x569836;var _0x3b7f6a;return db[_0x874b('0x2f')][_0x874b('0x4f')]({'where':{'id':_0x19204f[_0x874b('0x48')]['id']}})['then'](handleEntityNotFound(_0x45a03f,null))['then'](function(_0x4ffbc8){if(_0x4ffbc8){_0x569836=_0x4ffbc8;_0x419482[_0x874b('0x34')]=_[_0x874b('0x36')](db['VtigerField'][_0x874b('0x30')]);_0x419482['query']=_[_0x874b('0x36')](_0x19204f[_0x874b('0x35')]);_0x419482[_0x874b('0x37')]=_[_0x874b('0x38')](_0x419482[_0x874b('0x34')],_0x419482[_0x874b('0x35')]);_0x402120['attributes']=_[_0x874b('0x38')](_0x419482[_0x874b('0x34')],qs['fields'](_0x19204f[_0x874b('0x35')]['fields']));_0x402120[_0x874b('0x3a')]=_0x402120[_0x874b('0x3a')]['length']?_0x402120[_0x874b('0x3a')]:_0x419482[_0x874b('0x34')];_0x402120[_0x874b('0x3d')]=qs[_0x874b('0x3e')](_0x19204f['query'][_0x874b('0x3e')]);_0x402120[_0x874b('0x41')]=qs['filters'](_[_0x874b('0x3f')](_0x19204f[_0x874b('0x35')],_0x419482['filters']));if(_0x19204f[_0x874b('0x35')][_0x874b('0x50')]){_0x402120[_0x874b('0x41')]=_[_0x874b('0x40')](_0x402120['where'],{'$or':_['map'](_0x402120['attributes'],function(_0x370a69){var _0x2afcfa={};_0x2afcfa[_0x370a69]={'$like':'%'+_0x19204f[_0x874b('0x35')][_0x874b('0x50')]+'%'};return _0x2afcfa;})});}_0x402120=_['merge']({},_0x402120,_0x19204f['options']);return _0x569836['getFields'](_0x402120);}})['then'](function(_0x6bad76){if(_0x6bad76){_0x3b7f6a=_0x6bad76[_0x874b('0x3b')];if(!_0x19204f['query'][_0x874b('0x51')](_0x874b('0x3c'))){_0x402120[_0x874b('0x22')]=qs[_0x874b('0x22')](_0x19204f[_0x874b('0x35')][_0x874b('0x22')]);_0x402120[_0x874b('0x1f')]=qs[_0x874b('0x1f')](_0x19204f[_0x874b('0x35')]['offset']);}return _0x569836[_0x874b('0x4e')](_0x402120);}})['then'](function(_0x4b1c78){if(_0x4b1c78){return _0x4b1c78?{'count':_0x3b7f6a,'rows':_0x4b1c78}:null;}})[_0x874b('0x28')](respondWithResult(_0x45a03f,null))[_0x874b('0x46')](handleError(_0x45a03f,null));};exports[_0x874b('0x52')]=function(_0x58c848,_0x407c9f,_0x26760e){var _0x25c0ba={};var _0x5918b2={};var _0x48f9b2;var _0xf44bf7;return db[_0x874b('0x2f')][_0x874b('0x4f')]({'where':{'id':_0x58c848[_0x874b('0x48')]['id']}})[_0x874b('0x28')](handleEntityNotFound(_0x407c9f,null))[_0x874b('0x28')](function(_0x55264c){if(_0x55264c){_0x48f9b2=_0x55264c;_0x5918b2[_0x874b('0x34')]=_['keys'](db[_0x874b('0x53')]['rawAttributes']);_0x5918b2['query']=_[_0x874b('0x36')](_0x58c848[_0x874b('0x35')]);_0x5918b2['filters']=_['intersection'](_0x5918b2[_0x874b('0x34')],_0x5918b2['query']);_0x25c0ba['attributes']=_['intersection'](_0x5918b2['model'],qs[_0x874b('0x39')](_0x58c848[_0x874b('0x35')][_0x874b('0x39')]));_0x25c0ba[_0x874b('0x3a')]=_0x25c0ba[_0x874b('0x3a')][_0x874b('0x3b')]?_0x25c0ba[_0x874b('0x3a')]:_0x5918b2[_0x874b('0x34')];_0x25c0ba[_0x874b('0x3d')]=qs['sort'](_0x58c848['query']['sort']);_0x25c0ba['where']=qs[_0x874b('0x37')](_[_0x874b('0x3f')](_0x58c848[_0x874b('0x35')],_0x5918b2[_0x874b('0x37')]));if(_0x58c848[_0x874b('0x35')][_0x874b('0x50')]){_0x25c0ba['where']=_[_0x874b('0x40')](_0x25c0ba[_0x874b('0x41')],{'$or':_[_0x874b('0x2e')](_0x25c0ba[_0x874b('0x3a')],function(_0xd75247){var _0x3bcf2f={};_0x3bcf2f[_0xd75247]={'$like':'%'+_0x58c848[_0x874b('0x35')]['filter']+'%'};return _0x3bcf2f;})});}_0x25c0ba=_[_0x874b('0x40')]({},_0x25c0ba,_0x58c848[_0x874b('0x43')]);return _0x48f9b2[_0x874b('0x52')](_0x25c0ba);}})[_0x874b('0x28')](function(_0x229e71){if(_0x229e71){_0xf44bf7=_0x229e71[_0x874b('0x3b')];if(!_0x58c848['query'][_0x874b('0x51')]('nolimit')){_0x25c0ba[_0x874b('0x22')]=qs['limit'](_0x58c848['query'][_0x874b('0x22')]);_0x25c0ba[_0x874b('0x1f')]=qs[_0x874b('0x1f')](_0x58c848[_0x874b('0x35')][_0x874b('0x1f')]);}return _0x48f9b2[_0x874b('0x52')](_0x25c0ba);}})[_0x874b('0x28')](function(_0x13c6e4){if(_0x13c6e4){return _0x13c6e4?{'count':_0xf44bf7,'rows':_0x13c6e4}:null;}})[_0x874b('0x28')](respondWithResult(_0x407c9f,null))[_0x874b('0x46')](handleError(_0x407c9f,null));};exports[_0x874b('0x54')]=function(_0x1cd369,_0x3e48aa,_0x4d6bbf){var _0x5c925c={};var _0x5a5b20={};var _0xfc87aa;var _0x1b007e;return db[_0x874b('0x2f')]['findOne']({'where':{'id':_0x1cd369[_0x874b('0x48')]['id']}})[_0x874b('0x28')](handleEntityNotFound(_0x3e48aa,null))['then'](function(_0x3c4d4a){if(_0x3c4d4a){_0xfc87aa=_0x3c4d4a;_0x5a5b20[_0x874b('0x34')]=_[_0x874b('0x36')](db[_0x874b('0x53')][_0x874b('0x30')]);_0x5a5b20['query']=_[_0x874b('0x36')](_0x1cd369[_0x874b('0x35')]);_0x5a5b20[_0x874b('0x37')]=_[_0x874b('0x38')](_0x5a5b20[_0x874b('0x34')],_0x5a5b20[_0x874b('0x35')]);_0x5c925c[_0x874b('0x3a')]=_[_0x874b('0x38')](_0x5a5b20[_0x874b('0x34')],qs['fields'](_0x1cd369[_0x874b('0x35')][_0x874b('0x39')]));_0x5c925c['attributes']=_0x5c925c[_0x874b('0x3a')][_0x874b('0x3b')]?_0x5c925c[_0x874b('0x3a')]:_0x5a5b20[_0x874b('0x34')];_0x5c925c['order']=qs[_0x874b('0x3e')](_0x1cd369[_0x874b('0x35')][_0x874b('0x3e')]);_0x5c925c['where']=qs['filters'](_[_0x874b('0x3f')](_0x1cd369['query'],_0x5a5b20[_0x874b('0x37')]));if(_0x1cd369['query'][_0x874b('0x50')]){_0x5c925c[_0x874b('0x41')]=_[_0x874b('0x40')](_0x5c925c[_0x874b('0x41')],{'$or':_[_0x874b('0x2e')](_0x5c925c['attributes'],function(_0x20131e){var _0x5f28fd={};_0x5f28fd[_0x20131e]={'$like':'%'+_0x1cd369['query']['filter']+'%'};return _0x5f28fd;})});}_0x5c925c=_[_0x874b('0x40')]({},_0x5c925c,_0x1cd369[_0x874b('0x43')]);return _0xfc87aa[_0x874b('0x54')](_0x5c925c);}})[_0x874b('0x28')](function(_0x4986d6){if(_0x4986d6){_0x1b007e=_0x4986d6[_0x874b('0x3b')];if(!_0x1cd369['query'][_0x874b('0x51')](_0x874b('0x3c'))){_0x5c925c[_0x874b('0x22')]=qs[_0x874b('0x22')](_0x1cd369[_0x874b('0x35')]['limit']);_0x5c925c[_0x874b('0x1f')]=qs[_0x874b('0x1f')](_0x1cd369[_0x874b('0x35')]['offset']);}return _0xfc87aa[_0x874b('0x54')](_0x5c925c);}})['then'](function(_0x3d529e){if(_0x3d529e){return _0x3d529e?{'count':_0x1b007e,'rows':_0x3d529e}:null;}})[_0x874b('0x28')](respondWithResult(_0x3e48aa,null))[_0x874b('0x46')](handleError(_0x3e48aa,null));};
\ No newline at end of file
index fb1f19b..dd5911f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99ba=['./intVtigerConfiguration.attributes','exports','int_vtiger_configurations','lodash','util','../../config/logger','api','bluebird','rimraf','../../config/environment'];(function(_0x431fc3,_0x4a4354){var _0x3da394=function(_0x42dec0){while(--_0x42dec0){_0x431fc3['push'](_0x431fc3['shift']());}};_0x3da394(++_0x4a4354);}(_0x99ba,0x157));var _0xa99b=function(_0x2295f7,_0x185cc7){_0x2295f7=_0x2295f7-0x0;var _0x4dc8c7=_0x99ba[_0x2295f7];return _0x4dc8c7;};'use strict';var _=require(_0xa99b('0x0'));var util=require(_0xa99b('0x1'));var logger=require(_0xa99b('0x2'))(_0xa99b('0x3'));var moment=require('moment');var BPromise=require(_0xa99b('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xa99b('0x5'));var config=require(_0xa99b('0x6'));var attributes=require(_0xa99b('0x7'));module[_0xa99b('0x8')]=function(_0x28ac00,_0x50e8d0){return _0x28ac00['define']('VtigerConfiguration',attributes,{'tableName':_0xa99b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1d33=['moment','bluebird','request-promise','rimraf','../../config/environment','./intVtigerConfiguration.attributes','exports','define','VtigerConfiguration','lodash','util','../../config/logger','api'];(function(_0x3699c6,_0x4f21c7){var _0x4be66c=function(_0x28322f){while(--_0x28322f){_0x3699c6['push'](_0x3699c6['shift']());}};_0x4be66c(++_0x4f21c7);}(_0x1d33,0x1dd));var _0x31d3=function(_0x2fca24,_0x2fd185){_0x2fca24=_0x2fca24-0x0;var _0x3a42fb=_0x1d33[_0x2fca24];return _0x3a42fb;};'use strict';var _=require(_0x31d3('0x0'));var util=require(_0x31d3('0x1'));var logger=require(_0x31d3('0x2'))(_0x31d3('0x3'));var moment=require(_0x31d3('0x4'));var BPromise=require(_0x31d3('0x5'));var rp=require(_0x31d3('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x31d3('0x7'));var config=require(_0x31d3('0x8'));var attributes=require(_0x31d3('0x9'));module[_0x31d3('0xa')]=function(_0x50b49f,_0x1a165f){return _0x50b49f[_0x31d3('0xb')](_0x31d3('0xc'),attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fbb3e58..c8da1e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ac5=['util','moment','bluebird','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','lodash'];(function(_0x32c8bd,_0x5b1133){var _0x4d2d53=function(_0xae28a2){while(--_0xae28a2){_0x32c8bd['push'](_0x32c8bd['shift']());}};_0x4d2d53(++_0x5b1133);}(_0x5ac5,0xd0));var _0x55ac=function(_0x1c26ea,_0x20eff2){_0x1c26ea=_0x1c26ea-0x0;var _0x1aa800=_0x5ac5[_0x1c26ea];return _0x1aa800;};'use strict';var _=require(_0x55ac('0x0'));var util=require(_0x55ac('0x1'));var moment=require(_0x55ac('0x2'));var BPromise=require(_0x55ac('0x3'));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(_0x55ac('0x4'))(_0x55ac('0x5'));var config=require(_0x55ac('0x6'));var jayson=require(_0x55ac('0x7'));var client=jayson['client'][_0x55ac('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2d77b4,_0x2a0dff,_0x2b6f84){return new BPromise(function(_0x26fbfc,_0x423f27){return client[_0x55ac('0x9')](_0x2d77b4,_0x2b6f84)['then'](function(_0x4e1fa8){logger['info'](_0x55ac('0xa'),_0x2a0dff,_0x55ac('0xb'));logger[_0x55ac('0xc')](_0x55ac('0xd'),_0x2a0dff,_0x55ac('0xb'),JSON[_0x55ac('0xe')](_0x4e1fa8));if(_0x4e1fa8[_0x55ac('0xf')]){if(_0x4e1fa8['error'][_0x55ac('0x10')]===0x1f4){logger[_0x55ac('0xf')](_0x55ac('0xa'),_0x2a0dff,_0x4e1fa8[_0x55ac('0xf')]['message']);return _0x423f27(_0x4e1fa8[_0x55ac('0xf')][_0x55ac('0x11')]);}logger[_0x55ac('0xf')](_0x55ac('0xa'),_0x2a0dff,_0x4e1fa8[_0x55ac('0xf')][_0x55ac('0x11')]);return _0x26fbfc(_0x4e1fa8[_0x55ac('0xf')]['message']);}else{logger[_0x55ac('0x12')](_0x55ac('0xa'),_0x2a0dff,_0x55ac('0xb'));_0x26fbfc(_0x4e1fa8['result'][_0x55ac('0x11')]);}})['catch'](function(_0x3cf707){logger[_0x55ac('0xf')](_0x55ac('0xa'),_0x2a0dff,_0x3cf707);_0x423f27(_0x3cf707);});});}
\ No newline at end of file
+var _0x2f51=['error','code','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x415bbe,_0x2d79c7){var _0x42ebc7=function(_0x272efb){while(--_0x272efb){_0x415bbe['push'](_0x415bbe['shift']());}};_0x42ebc7(++_0x2d79c7);}(_0x2f51,0x154));var _0x12f5=function(_0x30c92b,_0x154324){_0x30c92b=_0x30c92b-0x0;var _0x33837b=_0x2f51[_0x30c92b];return _0x33837b;};'use strict';var _=require(_0x12f5('0x0'));var util=require(_0x12f5('0x1'));var moment=require(_0x12f5('0x2'));var BPromise=require(_0x12f5('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x12f5('0x4'));var db=require(_0x12f5('0x5'))['db'];var utils=require(_0x12f5('0x6'));var logger=require(_0x12f5('0x7'))(_0x12f5('0x8'));var config=require(_0x12f5('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x12f5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x285e90,_0x3833a5,_0x203466){return new BPromise(function(_0x35d274,_0x2cee65){return client['request'](_0x285e90,_0x203466)['then'](function(_0x414aff){logger[_0x12f5('0xb')](_0x12f5('0xc'),_0x3833a5,_0x12f5('0xd'));logger[_0x12f5('0xe')](_0x12f5('0xf'),_0x3833a5,'request\x20sent',JSON[_0x12f5('0x10')](_0x414aff));if(_0x414aff[_0x12f5('0x11')]){if(_0x414aff[_0x12f5('0x11')][_0x12f5('0x12')]===0x1f4){logger[_0x12f5('0x11')](_0x12f5('0xc'),_0x3833a5,_0x414aff['error']['message']);return _0x2cee65(_0x414aff[_0x12f5('0x11')][_0x12f5('0x13')]);}logger[_0x12f5('0x11')]('VtigerConfiguration,\x20%s,\x20%s',_0x3833a5,_0x414aff[_0x12f5('0x11')]['message']);return _0x35d274(_0x414aff['error']['message']);}else{logger[_0x12f5('0xb')](_0x12f5('0xc'),_0x3833a5,'request\x20sent');_0x35d274(_0x414aff[_0x12f5('0x14')]['message']);}})['catch'](function(_0x32151b){logger[_0x12f5('0x11')](_0x12f5('0xc'),_0x3833a5,_0x32151b);_0x2cee65(_0x32151b);});});}
\ No newline at end of file
index a90bcb9..1ed8aa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dbc=['create','put','update','delete','destroy','multer','util','path','express','fs-extra','../../components/auth/service','./intVtigerField.controller','get','isAuthenticated','index','/:id','show','post'];(function(_0xd440a9,_0x120579){var _0xc160e5=function(_0x576da0){while(--_0x576da0){_0xd440a9['push'](_0xd440a9['shift']());}};_0xc160e5(++_0x120579);}(_0x8dbc,0x137));var _0xc8db=function(_0x125ff8,_0x41925f){_0x125ff8=_0x125ff8-0x0;var _0x2d9ef=_0x8dbc[_0x125ff8];return _0x2d9ef;};'use strict';var multer=require(_0xc8db('0x0'));var util=require(_0xc8db('0x1'));var path=require(_0xc8db('0x2'));var timeout=require('connect-timeout');var express=require(_0xc8db('0x3'));var router=express['Router']();var fs_extra=require(_0xc8db('0x4'));var auth=require(_0xc8db('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc8db('0x6'));router[_0xc8db('0x7')]('/',auth[_0xc8db('0x8')](),controller[_0xc8db('0x9')]);router[_0xc8db('0x7')](_0xc8db('0xa'),auth[_0xc8db('0x8')](),controller[_0xc8db('0xb')]);router[_0xc8db('0xc')]('/',auth[_0xc8db('0x8')](),controller[_0xc8db('0xd')]);router[_0xc8db('0xe')](_0xc8db('0xa'),auth[_0xc8db('0x8')](),controller[_0xc8db('0xf')]);router[_0xc8db('0x10')]('/:id',auth[_0xc8db('0x8')](),controller[_0xc8db('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xc9ef=['multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intVtigerField.controller','isAuthenticated','/:id','show','post','create','update','destroy','exports'];(function(_0x1977cb,_0x2fd982){var _0x3ceded=function(_0x3a004d){while(--_0x3a004d){_0x1977cb['push'](_0x1977cb['shift']());}};_0x3ceded(++_0x2fd982);}(_0xc9ef,0x198));var _0xfc9e=function(_0x141a1b,_0x48ce01){_0x141a1b=_0x141a1b-0x0;var _0x54319f=_0xc9ef[_0x141a1b];return _0x54319f;};'use strict';var multer=require(_0xfc9e('0x0'));var util=require(_0xfc9e('0x1'));var path=require(_0xfc9e('0x2'));var timeout=require('connect-timeout');var express=require(_0xfc9e('0x3'));var router=express[_0xfc9e('0x4')]();var fs_extra=require(_0xfc9e('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xfc9e('0x6'));var config=require(_0xfc9e('0x7'));var controller=require(_0xfc9e('0x8'));router['get']('/',auth[_0xfc9e('0x9')](),controller['index']);router['get'](_0xfc9e('0xa'),auth[_0xfc9e('0x9')](),controller[_0xfc9e('0xb')]);router[_0xfc9e('0xc')]('/',auth[_0xfc9e('0x9')](),controller[_0xfc9e('0xd')]);router['put'](_0xfc9e('0xa'),auth[_0xfc9e('0x9')](),controller[_0xfc9e('0xe')]);router['delete'](_0xfc9e('0xa'),auth[_0xfc9e('0x9')](),controller[_0xfc9e('0xf')]);module[_0xfc9e('0x10')]=router;
\ No newline at end of file
index ef99d80..a7bce88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc4=['BOOLEAN','exports','ENUM','string','customVariable','picklist','STRING'];(function(_0x56ff56,_0x2ee4be){var _0x5ba379=function(_0x5351db){while(--_0x5351db){_0x56ff56['push'](_0x56ff56['shift']());}};_0x5ba379(++_0x2ee4be);}(_0x4fc4,0x190));var _0x44fc=function(_0x1662dd,_0x4544c7){_0x1662dd=_0x1662dd-0x0;var _0x2e71d8=_0x4fc4[_0x1662dd];return _0x2e71d8;};'use strict';var Sequelize=require('sequelize');module[_0x44fc('0x0')]={'type':{'type':Sequelize[_0x44fc('0x1')](_0x44fc('0x2'),'variable',_0x44fc('0x3'),'keyValue',_0x44fc('0x4')),'defaultValue':_0x44fc('0x2')},'content':{'type':Sequelize[_0x44fc('0x5')]},'key':{'type':Sequelize[_0x44fc('0x5')]},'keyType':{'type':Sequelize['ENUM'](_0x44fc('0x2'),'variable',_0x44fc('0x3'))},'keyContent':{'type':Sequelize[_0x44fc('0x5')]},'idField':{'type':Sequelize[_0x44fc('0x5')]},'nameField':{'type':Sequelize[_0x44fc('0x5')]},'customField':{'type':Sequelize[_0x44fc('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xfa52=['picklist','string','STRING','BOOLEAN','ENUM','variable','customVariable'];(function(_0x272d90,_0x5e70ff){var _0x2bf4a2=function(_0x544da6){while(--_0x544da6){_0x272d90['push'](_0x272d90['shift']());}};_0x2bf4a2(++_0x5e70ff);}(_0xfa52,0x74));var _0x2fa5=function(_0x144175,_0x1c27a3){_0x144175=_0x144175-0x0;var _0x5d3ba9=_0xfa52[_0x144175];return _0x5d3ba9;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x2fa5('0x0')]('string',_0x2fa5('0x1'),_0x2fa5('0x2'),'keyValue',_0x2fa5('0x3')),'defaultValue':_0x2fa5('0x4')},'content':{'type':Sequelize[_0x2fa5('0x5')]},'key':{'type':Sequelize[_0x2fa5('0x5')]},'keyType':{'type':Sequelize['ENUM'](_0x2fa5('0x4'),_0x2fa5('0x1'),_0x2fa5('0x2'))},'keyContent':{'type':Sequelize[_0x2fa5('0x5')]},'idField':{'type':Sequelize[_0x2fa5('0x5')]},'nameField':{'type':Sequelize[_0x2fa5('0x5')]},'customField':{'type':Sequelize[_0x2fa5('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x2fa5('0x5')]}};
\ No newline at end of file
index b98eeba..7bcabb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c79=['count','Content-Range','reject','save','update','then','destroy','stack','name','send','VtigerField','rawAttributes','fieldName','type','key','model','map','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','create','body','find','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','ejs','fs-extra','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','sendStatus','status','end','json','offset','undefined','limit'];(function(_0x2adbeb,_0x5581be){var _0x5e18a6=function(_0x84e42b){while(--_0x84e42b){_0x2adbeb['push'](_0x2adbeb['shift']());}};_0x5e18a6(++_0x5581be);}(_0x1c79,0x1ac));var _0x91c7=function(_0x5757f3,_0x2ea16a){_0x5757f3=_0x5757f3-0x0;var _0x3008cb=_0x1c79[_0x5757f3];return _0x3008cb;};'use strict';var emlformat=require(_0x91c7('0x0'));var rimraf=require(_0x91c7('0x1'));var zipdir=require(_0x91c7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x91c7('0x3'));var moment=require('moment');var BPromise=require(_0x91c7('0x4'));var Mustache=require(_0x91c7('0x5'));var util=require(_0x91c7('0x6'));var path=require(_0x91c7('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x91c7('0x8'));var fs=require('fs');var fs_extra=require(_0x91c7('0x9'));var _=require('lodash');var squel=require(_0x91c7('0xa'));var crypto=require(_0x91c7('0xb'));var jsforce=require(_0x91c7('0xc'));var deskjs=require(_0x91c7('0xd'));var toCsv=require(_0x91c7('0xe'));var querystring=require(_0x91c7('0xf'));var Papa=require(_0x91c7('0x10'));var Redis=require(_0x91c7('0x11'));var authService=require(_0x91c7('0x12'));var qs=require(_0x91c7('0x13'));var as=require(_0x91c7('0x14'));var hardwareService=require(_0x91c7('0x15'));var logger=require(_0x91c7('0x16'))(_0x91c7('0x17'));var utils=require(_0x91c7('0x18'));var config=require(_0x91c7('0x19'));var licenseUtil=require(_0x91c7('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2408a3,_0x301b83){_0x301b83=_0x301b83||0xcc;return function(_0x24db42){if(_0x24db42){return _0x2408a3[_0x91c7('0x1b')](_0x301b83);}return _0x2408a3[_0x91c7('0x1c')](_0x301b83)[_0x91c7('0x1d')]();};}function respondWithResult(_0x57c6c3,_0x2510a9){_0x2510a9=_0x2510a9||0xc8;return function(_0x1c3b8e){if(_0x1c3b8e){return _0x57c6c3[_0x91c7('0x1c')](_0x2510a9)[_0x91c7('0x1e')](_0x1c3b8e);}};}function respondWithFilteredResult(_0x2a72b1,_0xdb1df8){return function(_0x253180){if(_0x253180){var _0x567a67=typeof _0xdb1df8[_0x91c7('0x1f')]===_0x91c7('0x20')&&typeof _0xdb1df8[_0x91c7('0x21')]==='undefined';var _0x7f5c5e=_0x253180[_0x91c7('0x22')];var _0x424873=_0x567a67?0x0:_0xdb1df8[_0x91c7('0x1f')];var _0x1fbb37=_0x567a67?_0x253180[_0x91c7('0x22')]:_0xdb1df8['offset']+_0xdb1df8[_0x91c7('0x21')];var _0x2c8550;if(_0x1fbb37>=_0x7f5c5e){_0x1fbb37=_0x7f5c5e;_0x2c8550=0xc8;}else{_0x2c8550=0xce;}_0x2a72b1[_0x91c7('0x1c')](_0x2c8550);return _0x2a72b1['set'](_0x91c7('0x23'),_0x424873+'-'+_0x1fbb37+'/'+_0x7f5c5e)[_0x91c7('0x1e')](_0x253180);}return null;};}function patchUpdates(_0x22c44e){return function(_0xbf9e18){try{jsonpatch['apply'](_0xbf9e18,_0x22c44e,!![]);}catch(_0x426da2){return BPromise[_0x91c7('0x24')](_0x426da2);}return _0xbf9e18[_0x91c7('0x25')]();};}function saveUpdates(_0x2657c1,_0x55c1d2){return function(_0x5a7f80){if(_0x5a7f80){return _0x5a7f80[_0x91c7('0x26')](_0x2657c1)[_0x91c7('0x27')](function(_0x14801f){return _0x14801f;});}return null;};}function removeEntity(_0xb94980,_0x1bee2a){return function(_0x188991){if(_0x188991){return _0x188991[_0x91c7('0x28')]()[_0x91c7('0x27')](function(){_0xb94980[_0x91c7('0x1c')](0xcc)[_0x91c7('0x1d')]();});}};}function handleEntityNotFound(_0xd7dd6a,_0x3f6598){return function(_0xd4b41a){if(!_0xd4b41a){_0xd7dd6a[_0x91c7('0x1b')](0x194);}return _0xd4b41a;};}function handleError(_0x573f48,_0xef31f2){_0xef31f2=_0xef31f2||0x1f4;return function(_0x414e21){logger['error'](_0x414e21[_0x91c7('0x29')]);if(_0x414e21[_0x91c7('0x2a')]){delete _0x414e21['name'];}_0x573f48[_0x91c7('0x1c')](_0xef31f2)[_0x91c7('0x2b')](_0x414e21);};}exports['index']=function(_0x406d11,_0x199e9){var _0x17e5ce={},_0x2dbb67={},_0x197d98={'count':0x0,'rows':[]};var _0x3c300d=_['map'](db[_0x91c7('0x2c')][_0x91c7('0x2d')],function(_0xd2dbad){return{'name':_0xd2dbad[_0x91c7('0x2e')],'type':_0xd2dbad[_0x91c7('0x2f')][_0x91c7('0x30')]};});_0x2dbb67[_0x91c7('0x31')]=_[_0x91c7('0x32')](_0x3c300d,_0x91c7('0x2a'));_0x2dbb67[_0x91c7('0x33')]=_['keys'](_0x406d11[_0x91c7('0x33')]);_0x2dbb67[_0x91c7('0x34')]=_['intersection'](_0x2dbb67[_0x91c7('0x31')],_0x2dbb67[_0x91c7('0x33')]);_0x17e5ce[_0x91c7('0x35')]=_[_0x91c7('0x36')](_0x2dbb67[_0x91c7('0x31')],qs[_0x91c7('0x37')](_0x406d11['query']['fields']));_0x17e5ce['attributes']=_0x17e5ce[_0x91c7('0x35')][_0x91c7('0x38')]?_0x17e5ce[_0x91c7('0x35')]:_0x2dbb67[_0x91c7('0x31')];if(!_0x406d11['query'][_0x91c7('0x39')](_0x91c7('0x3a'))){_0x17e5ce[_0x91c7('0x21')]=qs[_0x91c7('0x21')](_0x406d11['query'][_0x91c7('0x21')]);_0x17e5ce['offset']=qs[_0x91c7('0x1f')](_0x406d11['query']['offset']);}_0x17e5ce['order']=qs[_0x91c7('0x3b')](_0x406d11[_0x91c7('0x33')][_0x91c7('0x3b')]);_0x17e5ce['where']=qs[_0x91c7('0x34')](_[_0x91c7('0x3c')](_0x406d11['query'],_0x2dbb67['filters']),_0x3c300d);if(_0x406d11['query'][_0x91c7('0x3d')]){_0x17e5ce[_0x91c7('0x3e')]=_[_0x91c7('0x3f')](_0x17e5ce[_0x91c7('0x3e')],{'$or':_[_0x91c7('0x32')](_0x3c300d,function(_0x2bca37){if(_0x2bca37[_0x91c7('0x2f')]!==_0x91c7('0x40')){var _0x99ca01={};_0x99ca01[_0x2bca37[_0x91c7('0x2a')]]={'$like':'%'+_0x406d11[_0x91c7('0x33')][_0x91c7('0x3d')]+'%'};return _0x99ca01;}})});}_0x17e5ce=_[_0x91c7('0x3f')]({},_0x17e5ce,_0x406d11[_0x91c7('0x41')]);var _0x145c70={'where':_0x17e5ce[_0x91c7('0x3e')]};return db['VtigerField'][_0x91c7('0x22')](_0x145c70)['then'](function(_0x22b1f2){_0x197d98[_0x91c7('0x22')]=_0x22b1f2;if(_0x406d11[_0x91c7('0x33')][_0x91c7('0x42')]){_0x17e5ce[_0x91c7('0x43')]=[{'all':!![]}];}return db[_0x91c7('0x2c')][_0x91c7('0x44')](_0x17e5ce);})[_0x91c7('0x27')](function(_0x44d065){_0x197d98[_0x91c7('0x45')]=_0x44d065;return _0x197d98;})['then'](respondWithFilteredResult(_0x199e9,_0x17e5ce))[_0x91c7('0x46')](handleError(_0x199e9,null));};exports[_0x91c7('0x47')]=function(_0x2aaa27,_0x25b338){var _0x1f11cd={'raw':!![],'where':{'id':_0x2aaa27[_0x91c7('0x48')]['id']}},_0x3f14a7={};_0x3f14a7['model']=_[_0x91c7('0x49')](db[_0x91c7('0x2c')][_0x91c7('0x2d')]);_0x3f14a7[_0x91c7('0x33')]=_[_0x91c7('0x49')](_0x2aaa27['query']);_0x3f14a7[_0x91c7('0x34')]=_[_0x91c7('0x36')](_0x3f14a7[_0x91c7('0x31')],_0x3f14a7[_0x91c7('0x33')]);_0x1f11cd[_0x91c7('0x35')]=_[_0x91c7('0x36')](_0x3f14a7[_0x91c7('0x31')],qs[_0x91c7('0x37')](_0x2aaa27['query']['fields']));_0x1f11cd['attributes']=_0x1f11cd['attributes'][_0x91c7('0x38')]?_0x1f11cd['attributes']:_0x3f14a7['model'];if(_0x2aaa27['query'][_0x91c7('0x42')]){_0x1f11cd[_0x91c7('0x43')]=[{'all':!![]}];}_0x1f11cd=_[_0x91c7('0x3f')]({},_0x1f11cd,_0x2aaa27[_0x91c7('0x41')]);return db['VtigerField']['find'](_0x1f11cd)[_0x91c7('0x27')](handleEntityNotFound(_0x25b338,null))[_0x91c7('0x27')](respondWithResult(_0x25b338,null))['catch'](handleError(_0x25b338,null));};exports[_0x91c7('0x4a')]=function(_0x11ef7d,_0x381640){return db[_0x91c7('0x2c')][_0x91c7('0x4a')](_0x11ef7d[_0x91c7('0x4b')],{})['then'](respondWithResult(_0x381640,0xc9))['catch'](handleError(_0x381640,null));};exports['update']=function(_0x36ac8f,_0x537d26){if(_0x36ac8f[_0x91c7('0x4b')]['id']){delete _0x36ac8f[_0x91c7('0x4b')]['id'];}return db['VtigerField'][_0x91c7('0x4c')]({'where':{'id':_0x36ac8f[_0x91c7('0x48')]['id']}})[_0x91c7('0x27')](handleEntityNotFound(_0x537d26,null))['then'](saveUpdates(_0x36ac8f[_0x91c7('0x4b')],null))[_0x91c7('0x27')](respondWithResult(_0x537d26,null))['catch'](handleError(_0x537d26,null));};exports[_0x91c7('0x28')]=function(_0x2e8fc2,_0x79ba2c){return db[_0x91c7('0x2c')][_0x91c7('0x4c')]({'where':{'id':_0x2e8fc2['params']['id']}})[_0x91c7('0x27')](handleEntityNotFound(_0x79ba2c,null))['then'](removeEntity(_0x79ba2c,null))[_0x91c7('0x46')](handleError(_0x79ba2c,null));};
\ No newline at end of file
+var _0x7ab9=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','map','VtigerField','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','merge','type','filter','options','where','include','rows','catch','show','params','rawAttributes','includeAll','find','create','body','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7ab9,0x11b));var _0x97ab=function(_0x25fded,_0x34216e){_0x25fded=_0x25fded-0x0;var _0x269156=_0x7ab9[_0x25fded];return _0x269156;};'use strict';var emlformat=require(_0x97ab('0x0'));var rimraf=require(_0x97ab('0x1'));var zipdir=require(_0x97ab('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x97ab('0x3'));var moment=require(_0x97ab('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x97ab('0x5'));var util=require(_0x97ab('0x6'));var path=require(_0x97ab('0x7'));var sox=require(_0x97ab('0x8'));var csv=require(_0x97ab('0x9'));var ejs=require(_0x97ab('0xa'));var fs=require('fs');var fs_extra=require(_0x97ab('0xb'));var _=require(_0x97ab('0xc'));var squel=require(_0x97ab('0xd'));var crypto=require(_0x97ab('0xe'));var jsforce=require(_0x97ab('0xf'));var deskjs=require(_0x97ab('0x10'));var toCsv=require(_0x97ab('0x9'));var querystring=require('querystring');var Papa=require(_0x97ab('0x11'));var Redis=require(_0x97ab('0x12'));var authService=require(_0x97ab('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x97ab('0x14'));var hardwareService=require(_0x97ab('0x15'));var logger=require(_0x97ab('0x16'))(_0x97ab('0x17'));var utils=require(_0x97ab('0x18'));var config=require(_0x97ab('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x97ab('0x1a'))['db'];function respondWithStatusCode(_0x5c9f54,_0x38e755){_0x38e755=_0x38e755||0xcc;return function(_0xb459b5){if(_0xb459b5){return _0x5c9f54[_0x97ab('0x1b')](_0x38e755);}return _0x5c9f54[_0x97ab('0x1c')](_0x38e755)[_0x97ab('0x1d')]();};}function respondWithResult(_0x47a185,_0x17b6a1){_0x17b6a1=_0x17b6a1||0xc8;return function(_0x46cc23){if(_0x46cc23){return _0x47a185['status'](_0x17b6a1)[_0x97ab('0x1e')](_0x46cc23);}};}function respondWithFilteredResult(_0x4159fc,_0x53407e){return function(_0x308f52){if(_0x308f52){var _0xbc5d87=typeof _0x53407e[_0x97ab('0x1f')]===_0x97ab('0x20')&&typeof _0x53407e[_0x97ab('0x21')]===_0x97ab('0x20');var _0x456018=_0x308f52[_0x97ab('0x22')];var _0xcd3473=_0xbc5d87?0x0:_0x53407e[_0x97ab('0x1f')];var _0x19ad69=_0xbc5d87?_0x308f52['count']:_0x53407e[_0x97ab('0x1f')]+_0x53407e[_0x97ab('0x21')];var _0x528b90;if(_0x19ad69>=_0x456018){_0x19ad69=_0x456018;_0x528b90=0xc8;}else{_0x528b90=0xce;}_0x4159fc['status'](_0x528b90);return _0x4159fc[_0x97ab('0x23')](_0x97ab('0x24'),_0xcd3473+'-'+_0x19ad69+'/'+_0x456018)[_0x97ab('0x1e')](_0x308f52);}return null;};}function patchUpdates(_0x7905d3){return function(_0x1dd63f){try{jsonpatch[_0x97ab('0x25')](_0x1dd63f,_0x7905d3,!![]);}catch(_0x413bfc){return BPromise[_0x97ab('0x26')](_0x413bfc);}return _0x1dd63f['save']();};}function saveUpdates(_0x215752,_0x1ed8b3){return function(_0x1e7918){if(_0x1e7918){return _0x1e7918[_0x97ab('0x27')](_0x215752)[_0x97ab('0x28')](function(_0x6f8249){return _0x6f8249;});}return null;};}function removeEntity(_0x2ff2b1,_0x206171){return function(_0x53c3a9){if(_0x53c3a9){return _0x53c3a9[_0x97ab('0x29')]()[_0x97ab('0x28')](function(){_0x2ff2b1[_0x97ab('0x1c')](0xcc)[_0x97ab('0x1d')]();});}};}function handleEntityNotFound(_0x1c4fde,_0x33be1b){return function(_0x2c841c){if(!_0x2c841c){_0x1c4fde[_0x97ab('0x1b')](0x194);}return _0x2c841c;};}function handleError(_0x3171b9,_0x3dcb17){_0x3dcb17=_0x3dcb17||0x1f4;return function(_0x3c4737){logger['error'](_0x3c4737[_0x97ab('0x2a')]);if(_0x3c4737['name']){delete _0x3c4737[_0x97ab('0x2b')];}_0x3171b9[_0x97ab('0x1c')](_0x3dcb17)[_0x97ab('0x2c')](_0x3c4737);};}exports[_0x97ab('0x2d')]=function(_0x31f930,_0x1dce77){var _0x58808e={},_0x4c8dac={},_0x1ae7eb={'count':0x0,'rows':[]};var _0x41a07f=_[_0x97ab('0x2e')](db[_0x97ab('0x2f')]['rawAttributes'],function(_0x5a5ec8){return{'name':_0x5a5ec8[_0x97ab('0x30')],'type':_0x5a5ec8['type']['key']};});_0x4c8dac[_0x97ab('0x31')]=_[_0x97ab('0x2e')](_0x41a07f,'name');_0x4c8dac[_0x97ab('0x32')]=_[_0x97ab('0x33')](_0x31f930[_0x97ab('0x32')]);_0x4c8dac[_0x97ab('0x34')]=_[_0x97ab('0x35')](_0x4c8dac[_0x97ab('0x31')],_0x4c8dac[_0x97ab('0x32')]);_0x58808e[_0x97ab('0x36')]=_['intersection'](_0x4c8dac['model'],qs[_0x97ab('0x37')](_0x31f930['query'][_0x97ab('0x37')]));_0x58808e['attributes']=_0x58808e[_0x97ab('0x36')][_0x97ab('0x38')]?_0x58808e[_0x97ab('0x36')]:_0x4c8dac['model'];if(!_0x31f930['query'][_0x97ab('0x39')]('nolimit')){_0x58808e[_0x97ab('0x21')]=qs['limit'](_0x31f930[_0x97ab('0x32')][_0x97ab('0x21')]);_0x58808e[_0x97ab('0x1f')]=qs[_0x97ab('0x1f')](_0x31f930['query']['offset']);}_0x58808e[_0x97ab('0x3a')]=qs['sort'](_0x31f930['query'][_0x97ab('0x3b')]);_0x58808e['where']=qs['filters'](_[_0x97ab('0x3c')](_0x31f930[_0x97ab('0x32')],_0x4c8dac[_0x97ab('0x34')]),_0x41a07f);if(_0x31f930[_0x97ab('0x32')]['filter']){_0x58808e['where']=_[_0x97ab('0x3d')](_0x58808e['where'],{'$or':_[_0x97ab('0x2e')](_0x41a07f,function(_0x4310fe){if(_0x4310fe[_0x97ab('0x3e')]!=='VIRTUAL'){var _0x3affde={};_0x3affde[_0x4310fe[_0x97ab('0x2b')]]={'$like':'%'+_0x31f930['query'][_0x97ab('0x3f')]+'%'};return _0x3affde;}})});}_0x58808e=_[_0x97ab('0x3d')]({},_0x58808e,_0x31f930[_0x97ab('0x40')]);var _0x5d6769={'where':_0x58808e[_0x97ab('0x41')]};return db[_0x97ab('0x2f')][_0x97ab('0x22')](_0x5d6769)[_0x97ab('0x28')](function(_0x568161){_0x1ae7eb[_0x97ab('0x22')]=_0x568161;if(_0x31f930[_0x97ab('0x32')]['includeAll']){_0x58808e[_0x97ab('0x42')]=[{'all':!![]}];}return db[_0x97ab('0x2f')]['findAll'](_0x58808e);})[_0x97ab('0x28')](function(_0x187373){_0x1ae7eb[_0x97ab('0x43')]=_0x187373;return _0x1ae7eb;})[_0x97ab('0x28')](respondWithFilteredResult(_0x1dce77,_0x58808e))[_0x97ab('0x44')](handleError(_0x1dce77,null));};exports[_0x97ab('0x45')]=function(_0x3b129e,_0x442ac3){var _0x240ac4={'raw':!![],'where':{'id':_0x3b129e[_0x97ab('0x46')]['id']}},_0x7094ef={};_0x7094ef['model']=_[_0x97ab('0x33')](db[_0x97ab('0x2f')][_0x97ab('0x47')]);_0x7094ef[_0x97ab('0x32')]=_[_0x97ab('0x33')](_0x3b129e[_0x97ab('0x32')]);_0x7094ef[_0x97ab('0x34')]=_[_0x97ab('0x35')](_0x7094ef['model'],_0x7094ef[_0x97ab('0x32')]);_0x240ac4[_0x97ab('0x36')]=_[_0x97ab('0x35')](_0x7094ef[_0x97ab('0x31')],qs[_0x97ab('0x37')](_0x3b129e[_0x97ab('0x32')][_0x97ab('0x37')]));_0x240ac4[_0x97ab('0x36')]=_0x240ac4[_0x97ab('0x36')][_0x97ab('0x38')]?_0x240ac4[_0x97ab('0x36')]:_0x7094ef[_0x97ab('0x31')];if(_0x3b129e['query'][_0x97ab('0x48')]){_0x240ac4[_0x97ab('0x42')]=[{'all':!![]}];}_0x240ac4=_[_0x97ab('0x3d')]({},_0x240ac4,_0x3b129e[_0x97ab('0x40')]);return db[_0x97ab('0x2f')][_0x97ab('0x49')](_0x240ac4)['then'](handleEntityNotFound(_0x442ac3,null))[_0x97ab('0x28')](respondWithResult(_0x442ac3,null))[_0x97ab('0x44')](handleError(_0x442ac3,null));};exports[_0x97ab('0x4a')]=function(_0x2202c6,_0x4faf26){return db[_0x97ab('0x2f')]['create'](_0x2202c6[_0x97ab('0x4b')],{})[_0x97ab('0x28')](respondWithResult(_0x4faf26,0xc9))[_0x97ab('0x44')](handleError(_0x4faf26,null));};exports[_0x97ab('0x27')]=function(_0x38e6d4,_0x34b3e5){if(_0x38e6d4[_0x97ab('0x4b')]['id']){delete _0x38e6d4[_0x97ab('0x4b')]['id'];}return db[_0x97ab('0x2f')]['find']({'where':{'id':_0x38e6d4['params']['id']}})[_0x97ab('0x28')](handleEntityNotFound(_0x34b3e5,null))[_0x97ab('0x28')](saveUpdates(_0x38e6d4[_0x97ab('0x4b')],null))[_0x97ab('0x28')](respondWithResult(_0x34b3e5,null))[_0x97ab('0x44')](handleError(_0x34b3e5,null));};exports[_0x97ab('0x29')]=function(_0x5a2585,_0xe46d7c){return db[_0x97ab('0x2f')][_0x97ab('0x49')]({'where':{'id':_0x5a2585['params']['id']}})[_0x97ab('0x28')](handleEntityNotFound(_0xe46d7c,null))['then'](removeEntity(_0xe46d7c,null))[_0x97ab('0x44')](handleError(_0xe46d7c,null));};
\ No newline at end of file
index 833666b..0eb2eef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fec=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','VtigerField','int_vtiger_fields','vtiger_unique_index','idField','FieldId','lodash','util'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x1fec,0xbe));var _0xc1fe=function(_0x13b8f3,_0x442821){_0x13b8f3=_0x13b8f3-0x0;var _0x1a6d06=_0x1fec[_0x13b8f3];return _0x1a6d06;};'use strict';var _=require(_0xc1fe('0x0'));var util=require(_0xc1fe('0x1'));var logger=require(_0xc1fe('0x2'))('api');var moment=require(_0xc1fe('0x3'));var BPromise=require(_0xc1fe('0x4'));var rp=require(_0xc1fe('0x5'));var fs=require('fs');var path=require(_0xc1fe('0x6'));var rimraf=require(_0xc1fe('0x7'));var config=require(_0xc1fe('0x8'));var attributes=require('./intVtigerField.attributes');module[_0xc1fe('0x9')]=function(_0x4647c4,_0x1ed872){return _0x4647c4[_0xc1fe('0xa')](_0xc1fe('0xb'),attributes,{'tableName':_0xc1fe('0xc'),'paranoid':![],'indexes':[{'name':_0xc1fe('0xd'),'fields':[_0xc1fe('0xe'),_0xc1fe('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8b84=['vtiger_unique_index','FieldId','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./intVtigerField.attributes','exports','define','VtigerField','int_vtiger_fields'];(function(_0x4b0be5,_0x1ed1aa){var _0x4b2c39=function(_0x27bb94){while(--_0x27bb94){_0x4b0be5['push'](_0x4b0be5['shift']());}};_0x4b2c39(++_0x1ed1aa);}(_0x8b84,0x179));var _0x48b8=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0x8b84[_0x4fc9e6];return _0x551d28;};'use strict';var _=require(_0x48b8('0x0'));var util=require(_0x48b8('0x1'));var logger=require(_0x48b8('0x2'))(_0x48b8('0x3'));var moment=require(_0x48b8('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x48b8('0x5'));var rimraf=require(_0x48b8('0x6'));var config=require(_0x48b8('0x7'));var attributes=require(_0x48b8('0x8'));module[_0x48b8('0x9')]=function(_0x3f6889,_0x572901){return _0x3f6889[_0x48b8('0xa')](_0x48b8('0xb'),attributes,{'tableName':_0x48b8('0xc'),'paranoid':![],'indexes':[{'name':_0x48b8('0xd'),'fields':['idField',_0x48b8('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 1d365b9..972149b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd513=['rpc','jayson/promise','client','http','then','info','VtigerField,\x20%s,\x20%s','debug','VtigerField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x28ff46,_0x4144ad){var _0x47c4e1=function(_0x4c488d){while(--_0x4c488d){_0x28ff46['push'](_0x28ff46['shift']());}};_0x47c4e1(++_0x4144ad);}(_0xd513,0x123));var _0x3d51=function(_0x309847,_0x33d441){_0x309847=_0x309847-0x0;var _0x5db9fd=_0xd513[_0x309847];return _0x5db9fd;};'use strict';var _=require(_0x3d51('0x0'));var util=require('util');var moment=require(_0x3d51('0x1'));var BPromise=require(_0x3d51('0x2'));var rs=require(_0x3d51('0x3'));var fs=require('fs');var Redis=require(_0x3d51('0x4'));var db=require(_0x3d51('0x5'))['db'];var utils=require(_0x3d51('0x6'));var logger=require(_0x3d51('0x7'))(_0x3d51('0x8'));var config=require('../../config/environment');var jayson=require(_0x3d51('0x9'));var client=jayson[_0x3d51('0xa')][_0x3d51('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x334570,_0x239476,_0x490970){return new BPromise(function(_0x492bdd,_0x489caa){return client['request'](_0x334570,_0x490970)[_0x3d51('0xc')](function(_0x44c098){logger[_0x3d51('0xd')](_0x3d51('0xe'),_0x239476,'request\x20sent');logger[_0x3d51('0xf')](_0x3d51('0x10'),_0x239476,_0x3d51('0x11'),JSON[_0x3d51('0x12')](_0x44c098));if(_0x44c098[_0x3d51('0x13')]){if(_0x44c098[_0x3d51('0x13')][_0x3d51('0x14')]===0x1f4){logger[_0x3d51('0x13')](_0x3d51('0xe'),_0x239476,_0x44c098[_0x3d51('0x13')]['message']);return _0x489caa(_0x44c098[_0x3d51('0x13')]['message']);}logger[_0x3d51('0x13')](_0x3d51('0xe'),_0x239476,_0x44c098[_0x3d51('0x13')][_0x3d51('0x15')]);return _0x492bdd(_0x44c098[_0x3d51('0x13')][_0x3d51('0x15')]);}else{logger[_0x3d51('0xd')](_0x3d51('0xe'),_0x239476,_0x3d51('0x11'));_0x492bdd(_0x44c098[_0x3d51('0x16')][_0x3d51('0x15')]);}})['catch'](function(_0xa03f5){logger['error'](_0x3d51('0xe'),_0x239476,_0xa03f5);_0x489caa(_0xa03f5);});});}
\ No newline at end of file
+var _0xfa15=['request','then','request\x20sent','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','code','VtigerField,\x20%s,\x20%s','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x447307,_0x17f67e){var _0x503f4e=function(_0x6061cb){while(--_0x6061cb){_0x447307['push'](_0x447307['shift']());}};_0x503f4e(++_0x17f67e);}(_0xfa15,0x151));var _0x5fa1=function(_0x56fea2,_0x5501bd){_0x56fea2=_0x56fea2-0x0;var _0x362102=_0xfa15[_0x56fea2];return _0x362102;};'use strict';var _=require(_0x5fa1('0x0'));var util=require('util');var moment=require(_0x5fa1('0x1'));var BPromise=require(_0x5fa1('0x2'));var rs=require(_0x5fa1('0x3'));var fs=require('fs');var Redis=require(_0x5fa1('0x4'));var db=require(_0x5fa1('0x5'))['db'];var utils=require(_0x5fa1('0x6'));var logger=require(_0x5fa1('0x7'))(_0x5fa1('0x8'));var config=require(_0x5fa1('0x9'));var jayson=require(_0x5fa1('0xa'));var client=jayson[_0x5fa1('0xb')][_0x5fa1('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5caa5e,_0x13f7cf,_0x31748f){return new BPromise(function(_0x21d2f0,_0xdb8470){return client[_0x5fa1('0xd')](_0x5caa5e,_0x31748f)[_0x5fa1('0xe')](function(_0x4dd8f1){logger['info']('VtigerField,\x20%s,\x20%s',_0x13f7cf,_0x5fa1('0xf'));logger['debug'](_0x5fa1('0x10'),_0x13f7cf,_0x5fa1('0xf'),JSON[_0x5fa1('0x11')](_0x4dd8f1));if(_0x4dd8f1[_0x5fa1('0x12')]){if(_0x4dd8f1[_0x5fa1('0x12')][_0x5fa1('0x13')]===0x1f4){logger[_0x5fa1('0x12')](_0x5fa1('0x14'),_0x13f7cf,_0x4dd8f1[_0x5fa1('0x12')][_0x5fa1('0x15')]);return _0xdb8470(_0x4dd8f1[_0x5fa1('0x12')][_0x5fa1('0x15')]);}logger[_0x5fa1('0x12')](_0x5fa1('0x14'),_0x13f7cf,_0x4dd8f1[_0x5fa1('0x12')][_0x5fa1('0x15')]);return _0x21d2f0(_0x4dd8f1[_0x5fa1('0x12')][_0x5fa1('0x15')]);}else{logger[_0x5fa1('0x16')](_0x5fa1('0x14'),_0x13f7cf,_0x5fa1('0xf'));_0x21d2f0(_0x4dd8f1[_0x5fa1('0x17')]['message']);}})[_0x5fa1('0x18')](function(_0x2cd78d){logger[_0x5fa1('0x12')](_0x5fa1('0x14'),_0x13f7cf,_0x2cd78d);_0xdb8470(_0x2cd78d);});});}
\ No newline at end of file
index b63820f..a00e6bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84c0=['isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','post','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intZendeskAccount.controller','get'];(function(_0x295314,_0x17b250){var _0x584b0c=function(_0x51cc84){while(--_0x51cc84){_0x295314['push'](_0x295314['shift']());}};_0x584b0c(++_0x17b250);}(_0x84c0,0x1bd));var _0x084c=function(_0x3e7a99,_0x5da11c){_0x3e7a99=_0x3e7a99-0x0;var _0x2f214c=_0x84c0[_0x3e7a99];return _0x2f214c;};'use strict';var multer=require(_0x084c('0x0'));var util=require(_0x084c('0x1'));var path=require(_0x084c('0x2'));var timeout=require(_0x084c('0x3'));var express=require(_0x084c('0x4'));var router=express[_0x084c('0x5')]();var fs_extra=require(_0x084c('0x6'));var auth=require(_0x084c('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x084c('0x8'));var controller=require(_0x084c('0x9'));router[_0x084c('0xa')]('/',auth[_0x084c('0xb')](),controller[_0x084c('0xc')]);router[_0x084c('0xa')]('/:id',auth[_0x084c('0xb')](),controller[_0x084c('0xd')]);router[_0x084c('0xa')](_0x084c('0xe'),auth[_0x084c('0xb')](),controller[_0x084c('0xf')]);router[_0x084c('0xa')](_0x084c('0x10'),auth[_0x084c('0xb')](),controller['getFields']);router[_0x084c('0x11')]('/',auth[_0x084c('0xb')](),controller['create']);router[_0x084c('0x11')]('/:id/configurations',auth[_0x084c('0xb')](),controller['addConfiguration']);router[_0x084c('0x12')](_0x084c('0x13'),auth['isAuthenticated'](),controller[_0x084c('0x14')]);router[_0x084c('0x15')](_0x084c('0x13'),auth[_0x084c('0xb')](),controller[_0x084c('0x16')]);module[_0x084c('0x17')]=router;
\ No newline at end of file
+var _0x0309=['destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','./intZendeskAccount.controller','get','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','post','create','put','delete','/:id'];(function(_0x106d8e,_0x5b3888){var _0x4b8576=function(_0x43b6f7){while(--_0x43b6f7){_0x106d8e['push'](_0x106d8e['shift']());}};_0x4b8576(++_0x5b3888);}(_0x0309,0x8d));var _0x9030=function(_0x1b3302,_0x925acf){_0x1b3302=_0x1b3302-0x0;var _0x2ef449=_0x0309[_0x1b3302];return _0x2ef449;};'use strict';var multer=require(_0x9030('0x0'));var util=require(_0x9030('0x1'));var path=require(_0x9030('0x2'));var timeout=require(_0x9030('0x3'));var express=require(_0x9030('0x4'));var router=express['Router']();var fs_extra=require(_0x9030('0x5'));var auth=require(_0x9030('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x9030('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x9030('0x8')]('/:id',auth[_0x9030('0x9')](),controller[_0x9030('0xa')]);router[_0x9030('0x8')](_0x9030('0xb'),auth[_0x9030('0x9')](),controller[_0x9030('0xc')]);router[_0x9030('0x8')](_0x9030('0xd'),auth[_0x9030('0x9')](),controller['getFields']);router[_0x9030('0xe')]('/',auth['isAuthenticated'](),controller[_0x9030('0xf')]);router[_0x9030('0xe')]('/:id/configurations',auth[_0x9030('0x9')](),controller['addConfiguration']);router[_0x9030('0x10')]('/:id',auth[_0x9030('0x9')](),controller['update']);router[_0x9030('0x11')](_0x9030('0x12'),auth[_0x9030('0x9')](),controller[_0x9030('0x13')]);module['exports']=router;
\ No newline at end of file
index ee3a785..e331a7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1189=['remoteUri','ENUM','password','integrationTab','newTab','sequelize','exports','STRING','username'];(function(_0x38f85c,_0x4770db){var _0x5a985c=function(_0x350400){while(--_0x350400){_0x38f85c['push'](_0x38f85c['shift']());}};_0x5a985c(++_0x4770db);}(_0x1189,0x17f));var _0x9118=function(_0x3abeac,_0x1403a9){_0x3abeac=_0x3abeac-0x0;var _0x26a08=_0x1189[_0x3abeac];return _0x26a08;};'use strict';var Sequelize=require(_0x9118('0x0'));module[_0x9118('0x1')]={'name':{'type':Sequelize[_0x9118('0x2')]},'description':{'type':Sequelize[_0x9118('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x9118('0x3')},'password':{'type':Sequelize[_0x9118('0x2')]},'token':{'type':Sequelize[_0x9118('0x2')]},'remoteUri':{'type':Sequelize[_0x9118('0x2')],'unique':_0x9118('0x4')},'authType':{'type':Sequelize[_0x9118('0x5')](_0x9118('0x6'),'token'),'defaultValue':_0x9118('0x6')},'serverUrl':{'type':Sequelize[_0x9118('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9118('0x5')](_0x9118('0x7'),_0x9118('0x8')),'defaultValue':_0x9118('0x7')}};
\ No newline at end of file
+var _0x1122=['newTab','sequelize','STRING','username','remoteUri','password','token','ENUM','integrationTab'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x1122,0xac));var _0x2112=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1122[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x2112('0x0'));module['exports']={'name':{'type':Sequelize[_0x2112('0x1')]},'description':{'type':Sequelize[_0x2112('0x1')]},'username':{'type':Sequelize[_0x2112('0x1')],'unique':_0x2112('0x2')},'password':{'type':Sequelize[_0x2112('0x1')]},'token':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x2112('0x3')},'authType':{'type':Sequelize['ENUM'](_0x2112('0x4'),_0x2112('0x5')),'defaultValue':'password'},'serverUrl':{'type':Sequelize[_0x2112('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x2112('0x6')](_0x2112('0x7'),_0x2112('0x8')),'defaultValue':_0x2112('0x7')}};
\ No newline at end of file
index 4adff91..f774c18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe605=['password','token','authType','remoteUri','slice','GET','format','headers','Basic\x20%s','toString','base64','Sequelize','Unknown\x20authentication\x20type','subject','description','assignee','remove','ticket_fields','includes','position','title','system_field_options','custom_field_options','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','undefined','limit','offset','count','set','Content-Range','json','apply','reject','update','then','destroy','end','error','name','send','index','map','ZendeskAccount','fieldName','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','findAll','rows','catch','show','params','length','include','options','find','create','body','getConfigurations','findOne','ZendeskConfiguration','rawAttributes','addConfiguration','Subjects','channel','Descriptions','getDescriptions','ZendeskField','getFields','username'];(function(_0x31f23f,_0x421862){var _0x572b25=function(_0x41c5ca){while(--_0x41c5ca){_0x31f23f['push'](_0x31f23f['shift']());}};_0x572b25(++_0x421862);}(_0xe605,0x92));var _0x5e60=function(_0x221655,_0x29bbc1){_0x221655=_0x221655-0x0;var _0x13224d=_0xe605[_0x221655];return _0x13224d;};'use strict';var emlformat=require(_0x5e60('0x0'));var rimraf=require(_0x5e60('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5e60('0x2'));var rp=require(_0x5e60('0x3'));var moment=require(_0x5e60('0x4'));var BPromise=require(_0x5e60('0x5'));var Mustache=require(_0x5e60('0x6'));var util=require(_0x5e60('0x7'));var path=require(_0x5e60('0x8'));var sox=require(_0x5e60('0x9'));var csv=require(_0x5e60('0xa'));var ejs=require(_0x5e60('0xb'));var fs=require('fs');var fs_extra=require(_0x5e60('0xc'));var _=require(_0x5e60('0xd'));var squel=require('squel');var crypto=require(_0x5e60('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x5e60('0xf'));var Papa=require(_0x5e60('0x10'));var Redis=require(_0x5e60('0x11'));var authService=require(_0x5e60('0x12'));var qs=require(_0x5e60('0x13'));var as=require(_0x5e60('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5e60('0x15'))('api');var utils=require(_0x5e60('0x16'));var config=require(_0x5e60('0x17'));var licenseUtil=require(_0x5e60('0x18'));var db=require('../../mysqldb')['db'];var integrations=require(_0x5e60('0x19'));function respondWithStatusCode(_0x178782,_0x1f4e14){_0x1f4e14=_0x1f4e14||0xcc;return function(_0xe039de){if(_0xe039de){return _0x178782[_0x5e60('0x1a')](_0x1f4e14);}return _0x178782[_0x5e60('0x1b')](_0x1f4e14)['end']();};}function respondWithResult(_0x209adb,_0x45304f){_0x45304f=_0x45304f||0xc8;return function(_0x21e3c8){if(_0x21e3c8){return _0x209adb[_0x5e60('0x1b')](_0x45304f)['json'](_0x21e3c8);}};}function respondWithFilteredResult(_0x20af5f,_0x529ffe){return function(_0x1ffd77){if(_0x1ffd77){var _0x3bc7d8=typeof _0x529ffe['offset']===_0x5e60('0x1c')&&typeof _0x529ffe[_0x5e60('0x1d')]===_0x5e60('0x1c');var _0x43045a=_0x1ffd77['count'];var _0xdd0a71=_0x3bc7d8?0x0:_0x529ffe[_0x5e60('0x1e')];var _0x52cc15=_0x3bc7d8?_0x1ffd77[_0x5e60('0x1f')]:_0x529ffe[_0x5e60('0x1e')]+_0x529ffe[_0x5e60('0x1d')];var _0x311fef;if(_0x52cc15>=_0x43045a){_0x52cc15=_0x43045a;_0x311fef=0xc8;}else{_0x311fef=0xce;}_0x20af5f[_0x5e60('0x1b')](_0x311fef);return _0x20af5f[_0x5e60('0x20')](_0x5e60('0x21'),_0xdd0a71+'-'+_0x52cc15+'/'+_0x43045a)[_0x5e60('0x22')](_0x1ffd77);}return null;};}function patchUpdates(_0x3282e4){return function(_0x45f1a6){try{jsonpatch[_0x5e60('0x23')](_0x45f1a6,_0x3282e4,!![]);}catch(_0x578437){return BPromise[_0x5e60('0x24')](_0x578437);}return _0x45f1a6['save']();};}function saveUpdates(_0x376069,_0x1a44e5){return function(_0x2b0bae){if(_0x2b0bae){return _0x2b0bae[_0x5e60('0x25')](_0x376069)[_0x5e60('0x26')](function(_0x2a499e){return _0x2a499e;});}return null;};}function removeEntity(_0x2636f1,_0x5d2c03){return function(_0x18d527){if(_0x18d527){return _0x18d527[_0x5e60('0x27')]()[_0x5e60('0x26')](function(){_0x2636f1['status'](0xcc)[_0x5e60('0x28')]();});}};}function handleEntityNotFound(_0x56e3a5,_0x2d8aac){return function(_0x153459){if(!_0x153459){_0x56e3a5['sendStatus'](0x194);}return _0x153459;};}function handleError(_0x3bedea,_0x5712f7){_0x5712f7=_0x5712f7||0x1f4;return function(_0x23d187){logger[_0x5e60('0x29')](_0x23d187['stack']);if(_0x23d187[_0x5e60('0x2a')]){delete _0x23d187[_0x5e60('0x2a')];}_0x3bedea['status'](_0x5712f7)[_0x5e60('0x2b')](_0x23d187);};}exports[_0x5e60('0x2c')]=function(_0x52c97c,_0x5431a8){var _0x52f668={},_0xf25956={},_0x235cc7={'count':0x0,'rows':[]};var _0x2e8e9e=_[_0x5e60('0x2d')](db[_0x5e60('0x2e')]['rawAttributes'],function(_0x168ce6){return{'name':_0x168ce6[_0x5e60('0x2f')],'type':_0x168ce6['type'][_0x5e60('0x30')]};});_0xf25956['model']=_['map'](_0x2e8e9e,_0x5e60('0x2a'));_0xf25956[_0x5e60('0x31')]=_[_0x5e60('0x32')](_0x52c97c[_0x5e60('0x31')]);_0xf25956[_0x5e60('0x33')]=_[_0x5e60('0x34')](_0xf25956[_0x5e60('0x35')],_0xf25956[_0x5e60('0x31')]);_0x52f668[_0x5e60('0x36')]=_[_0x5e60('0x34')](_0xf25956['model'],qs[_0x5e60('0x37')](_0x52c97c['query']['fields']));_0x52f668[_0x5e60('0x36')]=_0x52f668[_0x5e60('0x36')]['length']?_0x52f668[_0x5e60('0x36')]:_0xf25956['model'];if(!_0x52c97c[_0x5e60('0x31')][_0x5e60('0x38')](_0x5e60('0x39'))){_0x52f668[_0x5e60('0x1d')]=qs[_0x5e60('0x1d')](_0x52c97c[_0x5e60('0x31')][_0x5e60('0x1d')]);_0x52f668[_0x5e60('0x1e')]=qs['offset'](_0x52c97c[_0x5e60('0x31')][_0x5e60('0x1e')]);}_0x52f668[_0x5e60('0x3a')]=qs[_0x5e60('0x3b')](_0x52c97c[_0x5e60('0x31')][_0x5e60('0x3b')]);_0x52f668[_0x5e60('0x3c')]=qs['filters'](_[_0x5e60('0x3d')](_0x52c97c[_0x5e60('0x31')],_0xf25956['filters']),_0x2e8e9e);if(_0x52c97c['query'][_0x5e60('0x3e')]){_0x52f668[_0x5e60('0x3c')]=_[_0x5e60('0x3f')](_0x52f668[_0x5e60('0x3c')],{'$or':_[_0x5e60('0x2d')](_0x2e8e9e,function(_0x4d2cd0){if(_0x4d2cd0[_0x5e60('0x40')]!==_0x5e60('0x41')){var _0x415208={};_0x415208[_0x4d2cd0[_0x5e60('0x2a')]]={'$like':'%'+_0x52c97c[_0x5e60('0x31')][_0x5e60('0x3e')]+'%'};return _0x415208;}})});}_0x52f668=_[_0x5e60('0x3f')]({},_0x52f668,_0x52c97c['options']);var _0x401bf1={'where':_0x52f668[_0x5e60('0x3c')]};return db['ZendeskAccount']['count'](_0x401bf1)['then'](function(_0x15a97b){_0x235cc7[_0x5e60('0x1f')]=_0x15a97b;if(_0x52c97c[_0x5e60('0x31')][_0x5e60('0x42')]){_0x52f668['include']=[{'all':!![]}];}return db[_0x5e60('0x2e')][_0x5e60('0x43')](_0x52f668);})['then'](function(_0x5bda22){_0x235cc7[_0x5e60('0x44')]=_0x5bda22;return _0x235cc7;})[_0x5e60('0x26')](respondWithFilteredResult(_0x5431a8,_0x52f668))[_0x5e60('0x45')](handleError(_0x5431a8,null));};exports[_0x5e60('0x46')]=function(_0x39ab09,_0x3899ae){var _0x2522d2={'raw':![],'where':{'id':_0x39ab09[_0x5e60('0x47')]['id']}},_0x2812e1={};_0x2812e1['model']=_[_0x5e60('0x32')](db[_0x5e60('0x2e')]['rawAttributes']);_0x2812e1[_0x5e60('0x31')]=_[_0x5e60('0x32')](_0x39ab09[_0x5e60('0x31')]);_0x2812e1[_0x5e60('0x33')]=_[_0x5e60('0x34')](_0x2812e1['model'],_0x2812e1[_0x5e60('0x31')]);_0x2522d2[_0x5e60('0x36')]=_[_0x5e60('0x34')](_0x2812e1[_0x5e60('0x35')],qs['fields'](_0x39ab09['query']['fields']));_0x2522d2[_0x5e60('0x36')]=_0x2522d2[_0x5e60('0x36')][_0x5e60('0x48')]?_0x2522d2[_0x5e60('0x36')]:_0x2812e1[_0x5e60('0x35')];if(_0x39ab09[_0x5e60('0x31')]['includeAll']){_0x2522d2[_0x5e60('0x49')]=[{'all':!![]}];}_0x2522d2=_[_0x5e60('0x3f')]({},_0x2522d2,_0x39ab09[_0x5e60('0x4a')]);return db[_0x5e60('0x2e')][_0x5e60('0x4b')](_0x2522d2)[_0x5e60('0x26')](handleEntityNotFound(_0x3899ae,null))[_0x5e60('0x26')](respondWithResult(_0x3899ae,null))['catch'](handleError(_0x3899ae,null));};exports[_0x5e60('0x4c')]=function(_0x3ed45d,_0x21a116){return db[_0x5e60('0x2e')][_0x5e60('0x4c')](_0x3ed45d[_0x5e60('0x4d')],{})[_0x5e60('0x26')](respondWithResult(_0x21a116,0xc9))[_0x5e60('0x45')](handleError(_0x21a116,null));};exports[_0x5e60('0x25')]=function(_0x350d6d,_0xe5e675){if(_0x350d6d[_0x5e60('0x4d')]['id']){delete _0x350d6d[_0x5e60('0x4d')]['id'];}return db[_0x5e60('0x2e')][_0x5e60('0x4b')]({'where':{'id':_0x350d6d[_0x5e60('0x47')]['id']}})[_0x5e60('0x26')](handleEntityNotFound(_0xe5e675,null))[_0x5e60('0x26')](saveUpdates(_0x350d6d['body'],null))['then'](respondWithResult(_0xe5e675,null))[_0x5e60('0x45')](handleError(_0xe5e675,null));};exports['destroy']=function(_0x3525d,_0x1d247e){return db[_0x5e60('0x2e')][_0x5e60('0x4b')]({'where':{'id':_0x3525d[_0x5e60('0x47')]['id']}})[_0x5e60('0x26')](handleEntityNotFound(_0x1d247e,null))['then'](removeEntity(_0x1d247e,null))['catch'](handleError(_0x1d247e,null));};exports[_0x5e60('0x4e')]=function(_0x1e4e41,_0x457c37,_0x4a2d67){var _0x594068={};var _0x31ced8={};var _0x46f3ba;var _0x179cc6;return db['ZendeskAccount'][_0x5e60('0x4f')]({'where':{'id':_0x1e4e41[_0x5e60('0x47')]['id']}})[_0x5e60('0x26')](handleEntityNotFound(_0x457c37,null))[_0x5e60('0x26')](function(_0x17d002){if(_0x17d002){_0x46f3ba=_0x17d002;_0x31ced8[_0x5e60('0x35')]=_['keys'](db[_0x5e60('0x50')][_0x5e60('0x51')]);_0x31ced8['query']=_[_0x5e60('0x32')](_0x1e4e41[_0x5e60('0x31')]);_0x31ced8[_0x5e60('0x33')]=_['intersection'](_0x31ced8[_0x5e60('0x35')],_0x31ced8[_0x5e60('0x31')]);_0x594068['attributes']=_[_0x5e60('0x34')](_0x31ced8[_0x5e60('0x35')],qs[_0x5e60('0x37')](_0x1e4e41[_0x5e60('0x31')]['fields']));_0x594068[_0x5e60('0x36')]=_0x594068[_0x5e60('0x36')]['length']?_0x594068[_0x5e60('0x36')]:_0x31ced8['model'];_0x594068[_0x5e60('0x3a')]=qs['sort'](_0x1e4e41[_0x5e60('0x31')][_0x5e60('0x3b')]);_0x594068['where']=qs[_0x5e60('0x33')](_['pick'](_0x1e4e41[_0x5e60('0x31')],_0x31ced8['filters']));if(_0x1e4e41[_0x5e60('0x31')]['filter']){_0x594068[_0x5e60('0x3c')]=_[_0x5e60('0x3f')](_0x594068[_0x5e60('0x3c')],{'$or':_[_0x5e60('0x2d')](_0x594068[_0x5e60('0x36')],function(_0x2b8343){var _0x3d1e35={};_0x3d1e35[_0x2b8343]={'$like':'%'+_0x1e4e41['query'][_0x5e60('0x3e')]+'%'};return _0x3d1e35;})});}_0x594068=_[_0x5e60('0x3f')]({},_0x594068,_0x1e4e41[_0x5e60('0x4a')]);return _0x46f3ba[_0x5e60('0x4e')](_0x594068);}})[_0x5e60('0x26')](function(_0x35aad7){if(_0x35aad7){_0x179cc6=_0x35aad7['length'];if(!_0x1e4e41['query']['hasOwnProperty'](_0x5e60('0x39'))){_0x594068[_0x5e60('0x1d')]=qs['limit'](_0x1e4e41[_0x5e60('0x31')][_0x5e60('0x1d')]);_0x594068['offset']=qs[_0x5e60('0x1e')](_0x1e4e41[_0x5e60('0x31')][_0x5e60('0x1e')]);}return _0x46f3ba[_0x5e60('0x4e')](_0x594068);}})[_0x5e60('0x26')](function(_0xcd2232){if(_0xcd2232){return _0xcd2232?{'count':_0x179cc6,'rows':_0xcd2232}:null;}})[_0x5e60('0x26')](respondWithResult(_0x457c37,null))[_0x5e60('0x45')](handleError(_0x457c37,null));};exports[_0x5e60('0x52')]=function(_0x406c3a,_0x157aad,_0x15921d){if(_0x406c3a[_0x5e60('0x4d')]['id']){delete _0x406c3a[_0x5e60('0x4d')]['id'];}return db[_0x5e60('0x2e')][_0x5e60('0x4f')]({'where':{'id':_0x406c3a[_0x5e60('0x47')]['id']}})['then'](handleEntityNotFound(_0x157aad,null))[_0x5e60('0x26')](function(_0x1706d6){if(_0x1706d6){_0x406c3a[_0x5e60('0x4d')]['AccountId']=_0x1706d6['id'];_0x406c3a[_0x5e60('0x4d')][_0x5e60('0x53')]=integrations['getSubjects'](_0x406c3a[_0x5e60('0x4d')][_0x5e60('0x54')],_0x406c3a['body'][_0x5e60('0x40')]);_0x406c3a[_0x5e60('0x4d')][_0x5e60('0x55')]=integrations[_0x5e60('0x56')](_0x406c3a[_0x5e60('0x4d')][_0x5e60('0x54')],_0x406c3a[_0x5e60('0x4d')][_0x5e60('0x40')]);return db[_0x5e60('0x50')]['create'](_0x406c3a[_0x5e60('0x4d')],{'include':[{'model':db[_0x5e60('0x57')],'as':_0x5e60('0x53')},{'model':db['ZendeskField'],'as':_0x5e60('0x55')}]});}return null;})[_0x5e60('0x26')](respondWithResult(_0x157aad,null))[_0x5e60('0x45')](handleError(_0x157aad,null));};exports[_0x5e60('0x58')]=function(_0x3e85fe,_0x559f8c,_0x4560e1){var _0x213c7e='';return db[_0x5e60('0x2e')]['findOne']({'where':{'id':_0x3e85fe['params']['id']},'attributes':['id',_0x5e60('0x59'),_0x5e60('0x5a'),_0x5e60('0x5b'),_0x5e60('0x5c'),_0x5e60('0x5d')]})[_0x5e60('0x26')](handleEntityNotFound(_0x559f8c,null))[_0x5e60('0x26')](function(_0x563e69){if(_0x563e69){_0x213c7e=_0x563e69[_0x5e60('0x5d')];var _0x199edd=_0x213c7e[_0x5e60('0x5e')](-0x1);if(_0x199edd==='/'){_0x213c7e=_0x213c7e['substring'](0x0,_0x213c7e['lastIndexOf'](_0x199edd));}var _0x447bd3={'method':_0x5e60('0x5f'),'uri':util[_0x5e60('0x60')]('%s/%s',_0x213c7e,'ticket_fields'),'json':!![]};switch(_0x563e69[_0x5e60('0x5c')]){case _0x5e60('0x5a'):_0x447bd3[_0x5e60('0x61')]={'Authorization':util[_0x5e60('0x60')](_0x5e60('0x62'),new Buffer(util[_0x5e60('0x60')]('%s:%s',_0x563e69[_0x5e60('0x59')],_0x563e69[_0x5e60('0x5a')]))[_0x5e60('0x63')](_0x5e60('0x64')))};break;case _0x5e60('0x5b'):_0x447bd3[_0x5e60('0x61')]={'Authorization':util[_0x5e60('0x60')](_0x5e60('0x62'),new Buffer(util[_0x5e60('0x60')]('%s/token:%s',_0x563e69[_0x5e60('0x59')],_0x563e69[_0x5e60('0x5b')]))['toString'](_0x5e60('0x64')))};break;default:throw new db[(_0x5e60('0x65'))]['ValidationError'](_0x5e60('0x66'));}return rp(_0x447bd3);}})[_0x5e60('0x26')](function(_0x391505){if(_0x391505){var _0x1b4aee=[_0x5e60('0x67'),_0x5e60('0x68'),'group',_0x5e60('0x69')];_[_0x5e60('0x6a')](_0x391505[_0x5e60('0x6b')],function(_0x222d94){return _0x1b4aee[_0x5e60('0x6c')](_0x222d94[_0x5e60('0x40')]);});return{'count':_0x391505[_0x5e60('0x6b')][_0x5e60('0x48')],'rows':_[_0x5e60('0x2d')](_0x391505['ticket_fields'],function(_0x10b77b){return{'id':_0x10b77b['id'],'name':_0x10b77b[_0x5e60('0x6d')]>0x7?_0x10b77b[_0x5e60('0x6e')]:_0x10b77b[_0x5e60('0x40')],'custom':_0x10b77b[_0x5e60('0x6d')]>0x7?!![]:![],'options':_0x10b77b[_0x5e60('0x6f')]?_0x10b77b[_0x5e60('0x6f')]:_0x10b77b[_0x5e60('0x70')]?_0x10b77b[_0x5e60('0x70')]:[]};})};}})[_0x5e60('0x26')](respondWithResult(_0x559f8c,null))['catch'](function(_0x5ab78f){var _0x5d2839=_0x3e85fe[_0x5e60('0x31')][_0x5e60('0x71')]?0x1f4:_0x5ab78f[_0x5e60('0x72')]||0x1f4;logger[_0x5e60('0x29')](_0x5e60('0x73'),_0x5e60('0x58'),_0x5d2839,JSON[_0x5e60('0x74')](_0x5ab78f));delete _0x5ab78f[_0x5e60('0x2a')];if(_0x5d2839===0x191){_0x5d2839=0x190;}_0x559f8c[_0x5e60('0x1b')](_0x5d2839)['send'](_0x3e85fe[_0x5e60('0x31')][_0x5e60('0x71')]?{'message':_0x5e60('0x75'),'statusCode':_0x5ab78f['statusCode']}:_0x5ab78f);});};
\ No newline at end of file
+var _0xae60=['sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','map','ZendeskAccount','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','where','pick','filter','merge','options','includeAll','include','rows','catch','show','params','rawAttributes','create','body','find','getConfigurations','findOne','ZendeskConfiguration','order','sort','nolimit','addConfiguration','Subjects','getSubjects','channel','getDescriptions','ZendeskField','Descriptions','getFields','username','password','authType','remoteUri','slice','substring','lastIndexOf','GET','format','%s/%s','ticket_fields','headers','Basic\x20%s','toString','base64','%s/token:%s','Sequelize','ValidationError','Unknown\x20authentication\x20type','subject','assignee','remove','position','title','custom_field_options','test','error','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration'];(function(_0x14fab1,_0x19245f){var _0x475547=function(_0x1d4958){while(--_0x1d4958){_0x14fab1['push'](_0x14fab1['shift']());}};_0x475547(++_0x19245f);}(_0xae60,0x1c7));var _0x0ae6=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0xae60[_0x4e676e];return _0x336a3c;};'use strict';var emlformat=require(_0x0ae6('0x0'));var rimraf=require(_0x0ae6('0x1'));var zipdir=require(_0x0ae6('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0ae6('0x3'));var moment=require(_0x0ae6('0x4'));var BPromise=require(_0x0ae6('0x5'));var Mustache=require('mustache');var util=require(_0x0ae6('0x6'));var path=require(_0x0ae6('0x7'));var sox=require('sox');var csv=require(_0x0ae6('0x8'));var ejs=require(_0x0ae6('0x9'));var fs=require('fs');var fs_extra=require(_0x0ae6('0xa'));var _=require(_0x0ae6('0xb'));var squel=require(_0x0ae6('0xc'));var crypto=require(_0x0ae6('0xd'));var jsforce=require(_0x0ae6('0xe'));var deskjs=require(_0x0ae6('0xf'));var toCsv=require('to-csv');var querystring=require(_0x0ae6('0x10'));var Papa=require(_0x0ae6('0x11'));var Redis=require(_0x0ae6('0x12'));var authService=require(_0x0ae6('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x0ae6('0x14'));var hardwareService=require(_0x0ae6('0x15'));var logger=require(_0x0ae6('0x16'))(_0x0ae6('0x17'));var utils=require(_0x0ae6('0x18'));var config=require(_0x0ae6('0x19'));var licenseUtil=require(_0x0ae6('0x1a'));var db=require(_0x0ae6('0x1b'))['db'];var integrations=require(_0x0ae6('0x1c'));function respondWithStatusCode(_0x30f8f9,_0x1aefd5){_0x1aefd5=_0x1aefd5||0xcc;return function(_0xf86cad){if(_0xf86cad){return _0x30f8f9[_0x0ae6('0x1d')](_0x1aefd5);}return _0x30f8f9[_0x0ae6('0x1e')](_0x1aefd5)['end']();};}function respondWithResult(_0x3809c6,_0x10c3bc){_0x10c3bc=_0x10c3bc||0xc8;return function(_0x1c997a){if(_0x1c997a){return _0x3809c6[_0x0ae6('0x1e')](_0x10c3bc)[_0x0ae6('0x1f')](_0x1c997a);}};}function respondWithFilteredResult(_0x3a1e26,_0x151144){return function(_0x3b64ac){if(_0x3b64ac){var _0xa797bb=typeof _0x151144[_0x0ae6('0x20')]===_0x0ae6('0x21')&&typeof _0x151144[_0x0ae6('0x22')]===_0x0ae6('0x21');var _0xd0362c=_0x3b64ac[_0x0ae6('0x23')];var _0x3f5c41=_0xa797bb?0x0:_0x151144[_0x0ae6('0x20')];var _0x1735ba=_0xa797bb?_0x3b64ac[_0x0ae6('0x23')]:_0x151144[_0x0ae6('0x20')]+_0x151144[_0x0ae6('0x22')];var _0x191eaf;if(_0x1735ba>=_0xd0362c){_0x1735ba=_0xd0362c;_0x191eaf=0xc8;}else{_0x191eaf=0xce;}_0x3a1e26['status'](_0x191eaf);return _0x3a1e26[_0x0ae6('0x24')](_0x0ae6('0x25'),_0x3f5c41+'-'+_0x1735ba+'/'+_0xd0362c)[_0x0ae6('0x1f')](_0x3b64ac);}return null;};}function patchUpdates(_0x1027c2){return function(_0x9c4075){try{jsonpatch[_0x0ae6('0x26')](_0x9c4075,_0x1027c2,!![]);}catch(_0x210ca4){return BPromise[_0x0ae6('0x27')](_0x210ca4);}return _0x9c4075['save']();};}function saveUpdates(_0x39b22e,_0x2a6484){return function(_0x2e86e8){if(_0x2e86e8){return _0x2e86e8[_0x0ae6('0x28')](_0x39b22e)[_0x0ae6('0x29')](function(_0x4eba72){return _0x4eba72;});}return null;};}function removeEntity(_0x296a9d,_0x4e1242){return function(_0xccd1c5){if(_0xccd1c5){return _0xccd1c5[_0x0ae6('0x2a')]()[_0x0ae6('0x29')](function(){_0x296a9d[_0x0ae6('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3630e6,_0x2dcdb7){return function(_0x519f17){if(!_0x519f17){_0x3630e6['sendStatus'](0x194);}return _0x519f17;};}function handleError(_0x44eb95,_0x3255a7){_0x3255a7=_0x3255a7||0x1f4;return function(_0x17360e){logger['error'](_0x17360e[_0x0ae6('0x2b')]);if(_0x17360e[_0x0ae6('0x2c')]){delete _0x17360e[_0x0ae6('0x2c')];}_0x44eb95['status'](_0x3255a7)[_0x0ae6('0x2d')](_0x17360e);};}exports[_0x0ae6('0x2e')]=function(_0x449c33,_0x232fbd){var _0x14eed5={},_0x257af5={},_0x4fc7bd={'count':0x0,'rows':[]};var _0x5b2ad6=_[_0x0ae6('0x2f')](db[_0x0ae6('0x30')]['rawAttributes'],function(_0x4a06f1){return{'name':_0x4a06f1[_0x0ae6('0x31')],'type':_0x4a06f1[_0x0ae6('0x32')][_0x0ae6('0x33')]};});_0x257af5[_0x0ae6('0x34')]=_['map'](_0x5b2ad6,_0x0ae6('0x2c'));_0x257af5[_0x0ae6('0x35')]=_[_0x0ae6('0x36')](_0x449c33['query']);_0x257af5[_0x0ae6('0x37')]=_[_0x0ae6('0x38')](_0x257af5[_0x0ae6('0x34')],_0x257af5[_0x0ae6('0x35')]);_0x14eed5[_0x0ae6('0x39')]=_[_0x0ae6('0x38')](_0x257af5[_0x0ae6('0x34')],qs[_0x0ae6('0x3a')](_0x449c33[_0x0ae6('0x35')][_0x0ae6('0x3a')]));_0x14eed5['attributes']=_0x14eed5[_0x0ae6('0x39')][_0x0ae6('0x3b')]?_0x14eed5['attributes']:_0x257af5[_0x0ae6('0x34')];if(!_0x449c33[_0x0ae6('0x35')][_0x0ae6('0x3c')]('nolimit')){_0x14eed5[_0x0ae6('0x22')]=qs['limit'](_0x449c33['query'][_0x0ae6('0x22')]);_0x14eed5[_0x0ae6('0x20')]=qs[_0x0ae6('0x20')](_0x449c33[_0x0ae6('0x35')][_0x0ae6('0x20')]);}_0x14eed5['order']=qs['sort'](_0x449c33[_0x0ae6('0x35')]['sort']);_0x14eed5[_0x0ae6('0x3d')]=qs['filters'](_[_0x0ae6('0x3e')](_0x449c33['query'],_0x257af5[_0x0ae6('0x37')]),_0x5b2ad6);if(_0x449c33[_0x0ae6('0x35')][_0x0ae6('0x3f')]){_0x14eed5[_0x0ae6('0x3d')]=_['merge'](_0x14eed5['where'],{'$or':_[_0x0ae6('0x2f')](_0x5b2ad6,function(_0x34b547){if(_0x34b547[_0x0ae6('0x32')]!=='VIRTUAL'){var _0xaeb354={};_0xaeb354[_0x34b547['name']]={'$like':'%'+_0x449c33[_0x0ae6('0x35')][_0x0ae6('0x3f')]+'%'};return _0xaeb354;}})});}_0x14eed5=_[_0x0ae6('0x40')]({},_0x14eed5,_0x449c33[_0x0ae6('0x41')]);var _0x450f00={'where':_0x14eed5[_0x0ae6('0x3d')]};return db['ZendeskAccount'][_0x0ae6('0x23')](_0x450f00)[_0x0ae6('0x29')](function(_0x24d9ec){_0x4fc7bd[_0x0ae6('0x23')]=_0x24d9ec;if(_0x449c33[_0x0ae6('0x35')][_0x0ae6('0x42')]){_0x14eed5[_0x0ae6('0x43')]=[{'all':!![]}];}return db[_0x0ae6('0x30')]['findAll'](_0x14eed5);})[_0x0ae6('0x29')](function(_0xba3183){_0x4fc7bd[_0x0ae6('0x44')]=_0xba3183;return _0x4fc7bd;})[_0x0ae6('0x29')](respondWithFilteredResult(_0x232fbd,_0x14eed5))[_0x0ae6('0x45')](handleError(_0x232fbd,null));};exports[_0x0ae6('0x46')]=function(_0x24c021,_0x21431e){var _0xb38cbb={'raw':![],'where':{'id':_0x24c021[_0x0ae6('0x47')]['id']}},_0x156841={};_0x156841[_0x0ae6('0x34')]=_[_0x0ae6('0x36')](db[_0x0ae6('0x30')][_0x0ae6('0x48')]);_0x156841[_0x0ae6('0x35')]=_[_0x0ae6('0x36')](_0x24c021[_0x0ae6('0x35')]);_0x156841['filters']=_[_0x0ae6('0x38')](_0x156841[_0x0ae6('0x34')],_0x156841[_0x0ae6('0x35')]);_0xb38cbb[_0x0ae6('0x39')]=_[_0x0ae6('0x38')](_0x156841[_0x0ae6('0x34')],qs['fields'](_0x24c021[_0x0ae6('0x35')][_0x0ae6('0x3a')]));_0xb38cbb[_0x0ae6('0x39')]=_0xb38cbb[_0x0ae6('0x39')]['length']?_0xb38cbb['attributes']:_0x156841['model'];if(_0x24c021[_0x0ae6('0x35')][_0x0ae6('0x42')]){_0xb38cbb[_0x0ae6('0x43')]=[{'all':!![]}];}_0xb38cbb=_['merge']({},_0xb38cbb,_0x24c021[_0x0ae6('0x41')]);return db[_0x0ae6('0x30')]['find'](_0xb38cbb)[_0x0ae6('0x29')](handleEntityNotFound(_0x21431e,null))[_0x0ae6('0x29')](respondWithResult(_0x21431e,null))['catch'](handleError(_0x21431e,null));};exports[_0x0ae6('0x49')]=function(_0x3d1e75,_0x587ab4){return db[_0x0ae6('0x30')][_0x0ae6('0x49')](_0x3d1e75[_0x0ae6('0x4a')],{})['then'](respondWithResult(_0x587ab4,0xc9))[_0x0ae6('0x45')](handleError(_0x587ab4,null));};exports[_0x0ae6('0x28')]=function(_0x46075a,_0x3b1af0){if(_0x46075a[_0x0ae6('0x4a')]['id']){delete _0x46075a[_0x0ae6('0x4a')]['id'];}return db[_0x0ae6('0x30')]['find']({'where':{'id':_0x46075a['params']['id']}})[_0x0ae6('0x29')](handleEntityNotFound(_0x3b1af0,null))[_0x0ae6('0x29')](saveUpdates(_0x46075a[_0x0ae6('0x4a')],null))['then'](respondWithResult(_0x3b1af0,null))[_0x0ae6('0x45')](handleError(_0x3b1af0,null));};exports['destroy']=function(_0x582a5e,_0x23454a){return db[_0x0ae6('0x30')][_0x0ae6('0x4b')]({'where':{'id':_0x582a5e['params']['id']}})[_0x0ae6('0x29')](handleEntityNotFound(_0x23454a,null))[_0x0ae6('0x29')](removeEntity(_0x23454a,null))[_0x0ae6('0x45')](handleError(_0x23454a,null));};exports[_0x0ae6('0x4c')]=function(_0x173acd,_0x2e5ea6,_0x9a64b8){var _0x36be39={};var _0x102573={};var _0x117d24;var _0x1cc515;return db[_0x0ae6('0x30')][_0x0ae6('0x4d')]({'where':{'id':_0x173acd[_0x0ae6('0x47')]['id']}})[_0x0ae6('0x29')](handleEntityNotFound(_0x2e5ea6,null))['then'](function(_0x4cbe19){if(_0x4cbe19){_0x117d24=_0x4cbe19;_0x102573[_0x0ae6('0x34')]=_[_0x0ae6('0x36')](db[_0x0ae6('0x4e')][_0x0ae6('0x48')]);_0x102573[_0x0ae6('0x35')]=_[_0x0ae6('0x36')](_0x173acd[_0x0ae6('0x35')]);_0x102573[_0x0ae6('0x37')]=_[_0x0ae6('0x38')](_0x102573[_0x0ae6('0x34')],_0x102573[_0x0ae6('0x35')]);_0x36be39[_0x0ae6('0x39')]=_[_0x0ae6('0x38')](_0x102573[_0x0ae6('0x34')],qs[_0x0ae6('0x3a')](_0x173acd[_0x0ae6('0x35')][_0x0ae6('0x3a')]));_0x36be39[_0x0ae6('0x39')]=_0x36be39['attributes'][_0x0ae6('0x3b')]?_0x36be39[_0x0ae6('0x39')]:_0x102573[_0x0ae6('0x34')];_0x36be39[_0x0ae6('0x4f')]=qs[_0x0ae6('0x50')](_0x173acd[_0x0ae6('0x35')][_0x0ae6('0x50')]);_0x36be39[_0x0ae6('0x3d')]=qs[_0x0ae6('0x37')](_[_0x0ae6('0x3e')](_0x173acd['query'],_0x102573[_0x0ae6('0x37')]));if(_0x173acd[_0x0ae6('0x35')][_0x0ae6('0x3f')]){_0x36be39[_0x0ae6('0x3d')]=_[_0x0ae6('0x40')](_0x36be39[_0x0ae6('0x3d')],{'$or':_[_0x0ae6('0x2f')](_0x36be39[_0x0ae6('0x39')],function(_0x1cbada){var _0x59acf0={};_0x59acf0[_0x1cbada]={'$like':'%'+_0x173acd['query'][_0x0ae6('0x3f')]+'%'};return _0x59acf0;})});}_0x36be39=_[_0x0ae6('0x40')]({},_0x36be39,_0x173acd['options']);return _0x117d24['getConfigurations'](_0x36be39);}})[_0x0ae6('0x29')](function(_0x160dcf){if(_0x160dcf){_0x1cc515=_0x160dcf[_0x0ae6('0x3b')];if(!_0x173acd[_0x0ae6('0x35')][_0x0ae6('0x3c')](_0x0ae6('0x51'))){_0x36be39[_0x0ae6('0x22')]=qs['limit'](_0x173acd[_0x0ae6('0x35')]['limit']);_0x36be39[_0x0ae6('0x20')]=qs[_0x0ae6('0x20')](_0x173acd['query'][_0x0ae6('0x20')]);}return _0x117d24[_0x0ae6('0x4c')](_0x36be39);}})[_0x0ae6('0x29')](function(_0x593667){if(_0x593667){return _0x593667?{'count':_0x1cc515,'rows':_0x593667}:null;}})[_0x0ae6('0x29')](respondWithResult(_0x2e5ea6,null))['catch'](handleError(_0x2e5ea6,null));};exports[_0x0ae6('0x52')]=function(_0x2e0a75,_0x19f63f,_0x12c43d){if(_0x2e0a75['body']['id']){delete _0x2e0a75['body']['id'];}return db[_0x0ae6('0x30')][_0x0ae6('0x4d')]({'where':{'id':_0x2e0a75[_0x0ae6('0x47')]['id']}})[_0x0ae6('0x29')](handleEntityNotFound(_0x19f63f,null))[_0x0ae6('0x29')](function(_0x2d9f33){if(_0x2d9f33){_0x2e0a75['body']['AccountId']=_0x2d9f33['id'];_0x2e0a75[_0x0ae6('0x4a')][_0x0ae6('0x53')]=integrations[_0x0ae6('0x54')](_0x2e0a75[_0x0ae6('0x4a')][_0x0ae6('0x55')],_0x2e0a75[_0x0ae6('0x4a')][_0x0ae6('0x32')]);_0x2e0a75[_0x0ae6('0x4a')]['Descriptions']=integrations[_0x0ae6('0x56')](_0x2e0a75[_0x0ae6('0x4a')][_0x0ae6('0x55')],_0x2e0a75[_0x0ae6('0x4a')][_0x0ae6('0x32')]);return db[_0x0ae6('0x4e')]['create'](_0x2e0a75['body'],{'include':[{'model':db[_0x0ae6('0x57')],'as':_0x0ae6('0x53')},{'model':db['ZendeskField'],'as':_0x0ae6('0x58')}]});}return null;})[_0x0ae6('0x29')](respondWithResult(_0x19f63f,null))[_0x0ae6('0x45')](handleError(_0x19f63f,null));};exports[_0x0ae6('0x59')]=function(_0x5cd03b,_0x2d9ec4,_0x243e86){var _0x42470='';return db[_0x0ae6('0x30')][_0x0ae6('0x4d')]({'where':{'id':_0x5cd03b[_0x0ae6('0x47')]['id']},'attributes':['id',_0x0ae6('0x5a'),_0x0ae6('0x5b'),'token',_0x0ae6('0x5c'),_0x0ae6('0x5d')]})[_0x0ae6('0x29')](handleEntityNotFound(_0x2d9ec4,null))[_0x0ae6('0x29')](function(_0x206021){if(_0x206021){_0x42470=_0x206021[_0x0ae6('0x5d')];var _0x20032f=_0x42470[_0x0ae6('0x5e')](-0x1);if(_0x20032f==='/'){_0x42470=_0x42470[_0x0ae6('0x5f')](0x0,_0x42470[_0x0ae6('0x60')](_0x20032f));}var _0x3db11f={'method':_0x0ae6('0x61'),'uri':util[_0x0ae6('0x62')](_0x0ae6('0x63'),_0x42470,_0x0ae6('0x64')),'json':!![]};switch(_0x206021[_0x0ae6('0x5c')]){case _0x0ae6('0x5b'):_0x3db11f[_0x0ae6('0x65')]={'Authorization':util[_0x0ae6('0x62')](_0x0ae6('0x66'),new Buffer(util[_0x0ae6('0x62')]('%s:%s',_0x206021[_0x0ae6('0x5a')],_0x206021[_0x0ae6('0x5b')]))[_0x0ae6('0x67')](_0x0ae6('0x68')))};break;case'token':_0x3db11f[_0x0ae6('0x65')]={'Authorization':util[_0x0ae6('0x62')](_0x0ae6('0x66'),new Buffer(util[_0x0ae6('0x62')](_0x0ae6('0x69'),_0x206021[_0x0ae6('0x5a')],_0x206021['token']))[_0x0ae6('0x67')]('base64'))};break;default:throw new db[(_0x0ae6('0x6a'))][(_0x0ae6('0x6b'))](_0x0ae6('0x6c'));}return rp(_0x3db11f);}})[_0x0ae6('0x29')](function(_0x1f0b9e){if(_0x1f0b9e){var _0x15003f=[_0x0ae6('0x6d'),'description','group',_0x0ae6('0x6e')];_[_0x0ae6('0x6f')](_0x1f0b9e[_0x0ae6('0x64')],function(_0x104625){return _0x15003f['includes'](_0x104625[_0x0ae6('0x32')]);});return{'count':_0x1f0b9e[_0x0ae6('0x64')]['length'],'rows':_[_0x0ae6('0x2f')](_0x1f0b9e[_0x0ae6('0x64')],function(_0x1af034){return{'id':_0x1af034['id'],'name':_0x1af034[_0x0ae6('0x70')]>0x7?_0x1af034[_0x0ae6('0x71')]:_0x1af034[_0x0ae6('0x32')],'custom':_0x1af034['position']>0x7?!![]:![],'options':_0x1af034['system_field_options']?_0x1af034['system_field_options']:_0x1af034[_0x0ae6('0x72')]?_0x1af034['custom_field_options']:[]};})};}})['then'](respondWithResult(_0x2d9ec4,null))['catch'](function(_0x58517f){var _0xc69e9d=_0x5cd03b['query'][_0x0ae6('0x73')]?0x1f4:_0x58517f['statusCode']||0x1f4;logger[_0x0ae6('0x74')](_0x0ae6('0x75'),_0x0ae6('0x59'),_0xc69e9d,JSON[_0x0ae6('0x76')](_0x58517f));delete _0x58517f[_0x0ae6('0x2c')];if(_0xc69e9d===0x191){_0xc69e9d=0x190;}_0x2d9ec4['status'](_0xc69e9d)[_0x0ae6('0x2d')](_0x5cd03b[_0x0ae6('0x35')][_0x0ae6('0x73')]?{'message':_0x0ae6('0x77'),'statusCode':_0x58517f[_0x0ae6('0x78')]}:_0x58517f);});};
\ No newline at end of file
index b4b90d5..e28aede 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66c3=['define','ZendeskAccount','lodash','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration','exports'];(function(_0x5ae571,_0x4160cc){var _0x1d05c3=function(_0x898d4c){while(--_0x898d4c){_0x5ae571['push'](_0x5ae571['shift']());}};_0x1d05c3(++_0x4160cc);}(_0x66c3,0x13a));var _0x366c=function(_0x2c931b,_0x174397){_0x2c931b=_0x2c931b-0x0;var _0x544d38=_0x66c3[_0x2c931b];return _0x544d38;};'use strict';var _=require(_0x366c('0x0'));var util=require('util');var logger=require(_0x366c('0x1'))('api');var moment=require(_0x366c('0x2'));var BPromise=require('bluebird');var rp=require(_0x366c('0x3'));var fs=require('fs');var path=require(_0x366c('0x4'));var rimraf=require(_0x366c('0x5'));var config=require(_0x366c('0x6'));var attributes=require(_0x366c('0x7'));var integrations=require(_0x366c('0x8'));module[_0x366c('0x9')]=function(_0x15a933,_0x48263e){return _0x15a933[_0x366c('0xa')](_0x366c('0xb'),attributes,{'tableName':'int_zendesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x28a1=['path','rimraf','../../config/environment','./intZendeskAccount.attributes','exports','define','ZendeskAccount','util','../../config/logger','api','bluebird'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x28a1,0xb7));var _0x128a=function(_0x5a6644,_0x45d612){_0x5a6644=_0x5a6644-0x0;var _0x3a2a5d=_0x28a1[_0x5a6644];return _0x3a2a5d;};'use strict';var _=require('lodash');var util=require(_0x128a('0x0'));var logger=require(_0x128a('0x1'))(_0x128a('0x2'));var moment=require('moment');var BPromise=require(_0x128a('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x128a('0x4'));var rimraf=require(_0x128a('0x5'));var config=require(_0x128a('0x6'));var attributes=require(_0x128a('0x7'));var integrations=require('../../components/integrations/configuration');module[_0x128a('0x8')]=function(_0x23891a,_0x105cb8){return _0x23891a[_0x128a('0x9')](_0x128a('0xa'),attributes,{'tableName':'int_zendesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 73148f3..b91d1e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d3f=['info','result','catch','GetZendeskAccount','options','raw','attributes','limit','include','map','model','ShowZendeskAccount','find','where','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message'];(function(_0x4ac9aa,_0x2902a0){var _0x27248d=function(_0x272a51){while(--_0x272a51){_0x4ac9aa['push'](_0x4ac9aa['shift']());}};_0x27248d(++_0x2902a0);}(_0x9d3f,0x9a));var _0xf9d3=function(_0x4f4cd4,_0x29c573){_0x4f4cd4=_0x4f4cd4-0x0;var _0x16e2d6=_0x9d3f[_0x4f4cd4];return _0x16e2d6;};'use strict';var _=require(_0xf9d3('0x0'));var util=require('util');var moment=require(_0xf9d3('0x1'));var BPromise=require(_0xf9d3('0x2'));var rs=require(_0xf9d3('0x3'));var fs=require('fs');var Redis=require(_0xf9d3('0x4'));var db=require(_0xf9d3('0x5'))['db'];var utils=require(_0xf9d3('0x6'));var logger=require(_0xf9d3('0x7'))(_0xf9d3('0x8'));var config=require(_0xf9d3('0x9'));var jayson=require(_0xf9d3('0xa'));var client=jayson[_0xf9d3('0xb')][_0xf9d3('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x31b441,_0x1efd0f,_0x460a80){return new BPromise(function(_0xc7ae51,_0x4d0b08){return client[_0xf9d3('0xd')](_0x31b441,_0x460a80)['then'](function(_0x59d364){logger['info'](_0xf9d3('0xe'),_0x1efd0f,_0xf9d3('0xf'));logger[_0xf9d3('0x10')]('ZendeskAccount,\x20%s,\x20%s,\x20%s',_0x1efd0f,'request\x20sent',JSON[_0xf9d3('0x11')](_0x59d364));if(_0x59d364['error']){if(_0x59d364['error'][_0xf9d3('0x12')]===0x1f4){logger['error']('ZendeskAccount,\x20%s,\x20%s',_0x1efd0f,_0x59d364[_0xf9d3('0x13')][_0xf9d3('0x14')]);return _0x4d0b08(_0x59d364['error']['message']);}logger[_0xf9d3('0x13')](_0xf9d3('0xe'),_0x1efd0f,_0x59d364[_0xf9d3('0x13')][_0xf9d3('0x14')]);return _0xc7ae51(_0x59d364['error'][_0xf9d3('0x14')]);}else{logger[_0xf9d3('0x15')](_0xf9d3('0xe'),_0x1efd0f,'request\x20sent');_0xc7ae51(_0x59d364[_0xf9d3('0x16')]['message']);}})[_0xf9d3('0x17')](function(_0x36937b){logger[_0xf9d3('0x13')](_0xf9d3('0xe'),_0x1efd0f,_0x36937b);_0x4d0b08(_0x36937b);});});}exports[_0xf9d3('0x18')]=function(_0x118c34){var _0x8b4f64=this;return new Promise(function(_0x4c834f,_0x399253){return db['ZendeskAccount']['findAll']({'raw':_0x118c34['options']?_0x118c34[_0xf9d3('0x19')][_0xf9d3('0x1a')]===undefined?!![]:![]:!![],'where':_0x118c34[_0xf9d3('0x19')]?_0x118c34['options']['where']||null:null,'attributes':_0x118c34['options']?_0x118c34[_0xf9d3('0x19')][_0xf9d3('0x1b')]||null:null,'limit':_0x118c34['options']?_0x118c34['options'][_0xf9d3('0x1c')]||null:null,'include':_0x118c34[_0xf9d3('0x19')]?_0x118c34[_0xf9d3('0x19')][_0xf9d3('0x1d')]?_[_0xf9d3('0x1e')](_0x118c34[_0xf9d3('0x19')][_0xf9d3('0x1d')],function(_0x37a00e){return{'model':db[_0x37a00e[_0xf9d3('0x1f')]],'as':_0x37a00e['as'],'attributes':_0x37a00e[_0xf9d3('0x1b')],'include':_0x37a00e['include']?_[_0xf9d3('0x1e')](_0x37a00e[_0xf9d3('0x1d')],function(_0x39f048){return{'model':db[_0x39f048[_0xf9d3('0x1f')]],'as':_0x39f048['as'],'attributes':_0x39f048['attributes'],'include':_0x39f048[_0xf9d3('0x1d')]?_[_0xf9d3('0x1e')](_0x39f048[_0xf9d3('0x1d')],function(_0x1d6260){return{'model':db[_0x1d6260[_0xf9d3('0x1f')]],'as':_0x1d6260['as'],'attributes':_0x1d6260[_0xf9d3('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2f39b9){logger[_0xf9d3('0x15')](_0xf9d3('0x18'),_0x118c34);logger[_0xf9d3('0x10')]('GetZendeskAccount',_0x118c34,JSON[_0xf9d3('0x11')](_0x2f39b9));_0x4c834f(_0x2f39b9);})[_0xf9d3('0x17')](function(_0xf26aee){logger['error']('GetZendeskAccount',_0xf26aee[_0xf9d3('0x14')],_0x118c34);_0x399253(_0x8b4f64[_0xf9d3('0x13')](0x1f4,_0xf26aee[_0xf9d3('0x14')]));});});};exports[_0xf9d3('0x20')]=function(_0x75c3ec){var _0x322d0e=this;return new Promise(function(_0x18a7d1,_0x522eaf){return db['ZendeskAccount'][_0xf9d3('0x21')]({'raw':_0x75c3ec[_0xf9d3('0x19')]?_0x75c3ec[_0xf9d3('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x75c3ec[_0xf9d3('0x19')]?_0x75c3ec[_0xf9d3('0x19')][_0xf9d3('0x22')]||null:null,'attributes':_0x75c3ec[_0xf9d3('0x19')]?_0x75c3ec['options']['attributes']||null:null,'include':_0x75c3ec['options']?_0x75c3ec[_0xf9d3('0x19')][_0xf9d3('0x1d')]?_[_0xf9d3('0x1e')](_0x75c3ec['options'][_0xf9d3('0x1d')],function(_0x23a024){return{'model':db[_0x23a024[_0xf9d3('0x1f')]],'as':_0x23a024['as'],'attributes':_0x23a024['attributes'],'include':_0x23a024[_0xf9d3('0x1d')]?_['map'](_0x23a024[_0xf9d3('0x1d')],function(_0x3527a1){return{'model':db[_0x3527a1[_0xf9d3('0x1f')]],'as':_0x3527a1['as'],'attributes':_0x3527a1[_0xf9d3('0x1b')],'include':_0x3527a1[_0xf9d3('0x1d')]?_[_0xf9d3('0x1e')](_0x3527a1[_0xf9d3('0x1d')],function(_0x4ec874){return{'model':db[_0x4ec874[_0xf9d3('0x1f')]],'as':_0x4ec874['as'],'attributes':_0x4ec874['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x258b25){logger[_0xf9d3('0x15')](_0xf9d3('0x20'),_0x75c3ec);logger['debug']('ShowZendeskAccount',_0x75c3ec,JSON[_0xf9d3('0x11')](_0x258b25));_0x18a7d1(_0x258b25);})['catch'](function(_0x49448c){logger['error'](_0xf9d3('0x20'),_0x49448c[_0xf9d3('0x14')],_0x75c3ec);_0x522eaf(_0x322d0e[_0xf9d3('0x13')](0x1f4,_0x49448c['message']));});});};
\ No newline at end of file
+var _0x4cdc=['rpc','jayson/promise','client','http','info','ZendeskAccount,\x20%s,\x20%s','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','GetZendeskAccount','options','raw','where','attributes','limit','include','map','model','ShowZendeskAccount','then','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x134827,_0x21f6ed){var _0x366671=function(_0x4dc8d4){while(--_0x4dc8d4){_0x134827['push'](_0x134827['shift']());}};_0x366671(++_0x21f6ed);}(_0x4cdc,0x1eb));var _0xc4cd=function(_0x12388a,_0x7cfeaf){_0x12388a=_0x12388a-0x0;var _0x4e96d8=_0x4cdc[_0x12388a];return _0x4e96d8;};'use strict';var _=require(_0xc4cd('0x0'));var util=require(_0xc4cd('0x1'));var moment=require(_0xc4cd('0x2'));var BPromise=require(_0xc4cd('0x3'));var rs=require(_0xc4cd('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xc4cd('0x5'));var config=require('../../config/environment');var jayson=require(_0xc4cd('0x6'));var client=jayson[_0xc4cd('0x7')][_0xc4cd('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x21c001,_0x5199ca,_0x2a34c7){return new BPromise(function(_0x463215,_0x3551c3){return client['request'](_0x21c001,_0x2a34c7)['then'](function(_0x31f076){logger[_0xc4cd('0x9')](_0xc4cd('0xa'),_0x5199ca,'request\x20sent');logger[_0xc4cd('0xb')](_0xc4cd('0xc'),_0x5199ca,_0xc4cd('0xd'),JSON[_0xc4cd('0xe')](_0x31f076));if(_0x31f076[_0xc4cd('0xf')]){if(_0x31f076[_0xc4cd('0xf')][_0xc4cd('0x10')]===0x1f4){logger[_0xc4cd('0xf')]('ZendeskAccount,\x20%s,\x20%s',_0x5199ca,_0x31f076[_0xc4cd('0xf')]['message']);return _0x3551c3(_0x31f076[_0xc4cd('0xf')][_0xc4cd('0x11')]);}logger['error'](_0xc4cd('0xa'),_0x5199ca,_0x31f076[_0xc4cd('0xf')][_0xc4cd('0x11')]);return _0x463215(_0x31f076[_0xc4cd('0xf')]['message']);}else{logger['info'](_0xc4cd('0xa'),_0x5199ca,_0xc4cd('0xd'));_0x463215(_0x31f076[_0xc4cd('0x12')]['message']);}})['catch'](function(_0x4f1dbc){logger[_0xc4cd('0xf')](_0xc4cd('0xa'),_0x5199ca,_0x4f1dbc);_0x3551c3(_0x4f1dbc);});});}exports[_0xc4cd('0x13')]=function(_0xb7eb86){var _0x167bd3=this;return new Promise(function(_0x450596,_0x567650){return db['ZendeskAccount']['findAll']({'raw':_0xb7eb86['options']?_0xb7eb86[_0xc4cd('0x14')][_0xc4cd('0x15')]===undefined?!![]:![]:!![],'where':_0xb7eb86[_0xc4cd('0x14')]?_0xb7eb86[_0xc4cd('0x14')][_0xc4cd('0x16')]||null:null,'attributes':_0xb7eb86[_0xc4cd('0x14')]?_0xb7eb86[_0xc4cd('0x14')][_0xc4cd('0x17')]||null:null,'limit':_0xb7eb86[_0xc4cd('0x14')]?_0xb7eb86[_0xc4cd('0x14')][_0xc4cd('0x18')]||null:null,'include':_0xb7eb86['options']?_0xb7eb86['options'][_0xc4cd('0x19')]?_[_0xc4cd('0x1a')](_0xb7eb86[_0xc4cd('0x14')][_0xc4cd('0x19')],function(_0x23cbe5){return{'model':db[_0x23cbe5[_0xc4cd('0x1b')]],'as':_0x23cbe5['as'],'attributes':_0x23cbe5[_0xc4cd('0x17')],'include':_0x23cbe5['include']?_[_0xc4cd('0x1a')](_0x23cbe5['include'],function(_0x5d6c69){return{'model':db[_0x5d6c69['model']],'as':_0x5d6c69['as'],'attributes':_0x5d6c69['attributes'],'include':_0x5d6c69[_0xc4cd('0x19')]?_[_0xc4cd('0x1a')](_0x5d6c69[_0xc4cd('0x19')],function(_0x7577b6){return{'model':db[_0x7577b6[_0xc4cd('0x1b')]],'as':_0x7577b6['as'],'attributes':_0x7577b6[_0xc4cd('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x26d4d8){logger[_0xc4cd('0x9')](_0xc4cd('0x13'),_0xb7eb86);logger[_0xc4cd('0xb')](_0xc4cd('0x13'),_0xb7eb86,JSON[_0xc4cd('0xe')](_0x26d4d8));_0x450596(_0x26d4d8);})['catch'](function(_0x14c8b8){logger[_0xc4cd('0xf')](_0xc4cd('0x13'),_0x14c8b8[_0xc4cd('0x11')],_0xb7eb86);_0x567650(_0x167bd3['error'](0x1f4,_0x14c8b8[_0xc4cd('0x11')]));});});};exports[_0xc4cd('0x1c')]=function(_0x43c693){var _0x544768=this;return new Promise(function(_0x274396,_0x33ce9b){return db['ZendeskAccount']['find']({'raw':_0x43c693[_0xc4cd('0x14')]?_0x43c693[_0xc4cd('0x14')][_0xc4cd('0x15')]===undefined?!![]:![]:!![],'where':_0x43c693[_0xc4cd('0x14')]?_0x43c693[_0xc4cd('0x14')]['where']||null:null,'attributes':_0x43c693[_0xc4cd('0x14')]?_0x43c693[_0xc4cd('0x14')]['attributes']||null:null,'include':_0x43c693['options']?_0x43c693[_0xc4cd('0x14')]['include']?_[_0xc4cd('0x1a')](_0x43c693['options'][_0xc4cd('0x19')],function(_0x9d05f9){return{'model':db[_0x9d05f9[_0xc4cd('0x1b')]],'as':_0x9d05f9['as'],'attributes':_0x9d05f9[_0xc4cd('0x17')],'include':_0x9d05f9[_0xc4cd('0x19')]?_[_0xc4cd('0x1a')](_0x9d05f9['include'],function(_0x396f2b){return{'model':db[_0x396f2b[_0xc4cd('0x1b')]],'as':_0x396f2b['as'],'attributes':_0x396f2b[_0xc4cd('0x17')],'include':_0x396f2b['include']?_[_0xc4cd('0x1a')](_0x396f2b[_0xc4cd('0x19')],function(_0x43edb9){return{'model':db[_0x43edb9[_0xc4cd('0x1b')]],'as':_0x43edb9['as'],'attributes':_0x43edb9['attributes']};}):[]};}):[]};}):[]:[]})[_0xc4cd('0x1d')](function(_0x22e51d){logger[_0xc4cd('0x9')]('ShowZendeskAccount',_0x43c693);logger[_0xc4cd('0xb')](_0xc4cd('0x1c'),_0x43c693,JSON[_0xc4cd('0xe')](_0x22e51d));_0x274396(_0x22e51d);})[_0xc4cd('0x1e')](function(_0x2dfc75){logger[_0xc4cd('0xf')](_0xc4cd('0x1c'),_0x2dfc75[_0xc4cd('0x11')],_0x43c693);_0x33ce9b(_0x544768['error'](0x1f4,_0x2dfc75[_0xc4cd('0x11')]));});});};
\ No newline at end of file
index fd21f6a..643f88f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36ee=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','post','create','update','delete','destroy','exports','path','express'];(function(_0x2e2681,_0x4089c1){var _0x368a64=function(_0x267262){while(--_0x267262){_0x2e2681['push'](_0x2e2681['shift']());}};_0x368a64(++_0x4089c1);}(_0x36ee,0xe8));var _0xe36e=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x36ee[_0x501510];return _0x1e6ee5;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe36e('0x0'));var timeout=require('connect-timeout');var express=require(_0xe36e('0x1'));var router=express[_0xe36e('0x2')]();var fs_extra=require(_0xe36e('0x3'));var auth=require(_0xe36e('0x4'));var interaction=require(_0xe36e('0x5'));var config=require(_0xe36e('0x6'));var controller=require(_0xe36e('0x7'));router[_0xe36e('0x8')]('/',auth[_0xe36e('0x9')](),controller[_0xe36e('0xa')]);router[_0xe36e('0x8')](_0xe36e('0xb'),auth['isAuthenticated'](),controller[_0xe36e('0xc')]);router['get'](_0xe36e('0xd'),auth[_0xe36e('0x9')](),controller[_0xe36e('0xe')]);router['get'](_0xe36e('0xf'),auth['isAuthenticated'](),controller[_0xe36e('0x10')]);router[_0xe36e('0x8')](_0xe36e('0x11'),auth[_0xe36e('0x9')](),controller[_0xe36e('0x12')]);router[_0xe36e('0x8')](_0xe36e('0x13'),auth[_0xe36e('0x9')](),controller['getTags']);router[_0xe36e('0x14')]('/',auth[_0xe36e('0x9')](),controller[_0xe36e('0x15')]);router[_0xe36e('0x14')]('/:id/tags',auth[_0xe36e('0x9')](),controller['setTags']);router['put'](_0xe36e('0xb'),auth[_0xe36e('0x9')](),controller[_0xe36e('0x16')]);router[_0xe36e('0x17')](_0xe36e('0xb'),auth[_0xe36e('0x9')](),controller[_0xe36e('0x18')]);module[_0xe36e('0x19')]=router;
\ No newline at end of file
+var _0xb10b=['getFields','/:id/subjects','/:id/descriptions','getTags','post','create','setTags','put','/:id','update','delete','destroy','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','index','isAuthenticated','show','/:id/fields'];(function(_0x4f56d3,_0x30adbb){var _0x159373=function(_0x3d054a){while(--_0x3d054a){_0x4f56d3['push'](_0x4f56d3['shift']());}};_0x159373(++_0x30adbb);}(_0xb10b,0x12a));var _0xbb10=function(_0x324661,_0x3fb798){_0x324661=_0x324661-0x0;var _0x135bed=_0xb10b[_0x324661];return _0x135bed;};'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['getSubjects']);router[_0xbb10('0x9')](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller['getDescriptions']);router[_0xbb10('0x9')]('/:id/tags',auth[_0xbb10('0xb')](),controller[_0xbb10('0x11')]);router[_0xbb10('0x12')]('/',auth[_0xbb10('0xb')](),controller[_0xbb10('0x13')]);router[_0xbb10('0x12')]('/:id/tags',auth[_0xbb10('0xb')](),controller[_0xbb10('0x14')]);router[_0xbb10('0x15')](_0xbb10('0x16'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x17')]);router[_0xbb10('0x18')](_0xbb10('0x16'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x19')]);module['exports']=router;
\ No newline at end of file
index c79372c..00993fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1aae=['STRING','sequelize','exports'];(function(_0x482214,_0x2550ff){var _0x38d0cb=function(_0x2ba281){while(--_0x2ba281){_0x482214['push'](_0x482214['shift']());}};_0x38d0cb(++_0x2550ff);}(_0x1aae,0x9a));var _0xe1aa=function(_0x2f0528,_0x1cb440){_0x2f0528=_0x2f0528-0x0;var _0x2f1a1e=_0x1aae[_0x2f0528];return _0x2f1a1e;};'use strict';var Sequelize=require(_0xe1aa('0x0'));module[_0xe1aa('0x1')]={'name':{'type':Sequelize[_0xe1aa('0x2')]},'description':{'type':Sequelize[_0xe1aa('0x2')]}};
\ No newline at end of file
+var _0xd580=['exports','STRING','sequelize'];(function(_0x2e0bed,_0x24b28d){var _0x45e74e=function(_0x36166d){while(--_0x36166d){_0x2e0bed['push'](_0x2e0bed['shift']());}};_0x45e74e(++_0x24b28d);}(_0xd580,0x164));var _0x0d58=function(_0x4924c1,_0x515188){_0x4924c1=_0x4924c1-0x0;var _0x2bce54=_0xd580[_0x4924c1];return _0x2bce54;};'use strict';var Sequelize=require(_0x0d58('0x0'));module[_0x0d58('0x1')]={'name':{'type':Sequelize[_0x0d58('0x2')]},'description':{'type':Sequelize[_0x0d58('0x2')]}};
\ No newline at end of file
index f3fc44f..624fb79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0100=['fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','status','undefined','limit','count','offset','set','Content-Range','reject','then','destroy','end','sendStatus','error','stack','name','index','map','ZendeskConfiguration','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','options','includeAll','include','findAll','catch','show','params','keys','merge','create','body','update','find','findOne','ZendeskField','getFields','getSubjects','getDescriptions','getTags','Tag','setTags','ids','zip-dir'];(function(_0x3da832,_0x2133f1){var _0xe602f2=function(_0xb7b2f){while(--_0xb7b2f){_0x3da832['push'](_0x3da832['shift']());}};_0xe602f2(++_0x2133f1);}(_0x0100,0x194));var _0x0010=function(_0x42ff8c,_0xbbf19b){_0x42ff8c=_0x42ff8c-0x0;var _0x249277=_0x0100[_0x42ff8c];return _0x249277;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x0010('0x0'));var jsonpatch=require(_0x0010('0x1'));var rp=require(_0x0010('0x2'));var moment=require(_0x0010('0x3'));var BPromise=require(_0x0010('0x4'));var Mustache=require(_0x0010('0x5'));var util=require('util');var path=require('path');var sox=require(_0x0010('0x6'));var csv=require(_0x0010('0x7'));var ejs=require(_0x0010('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x0010('0x9'));var crypto=require(_0x0010('0xa'));var jsforce=require(_0x0010('0xb'));var deskjs=require(_0x0010('0xc'));var toCsv=require('to-csv');var querystring=require(_0x0010('0xd'));var Papa=require(_0x0010('0xe'));var Redis=require('ioredis');var authService=require(_0x0010('0xf'));var qs=require(_0x0010('0x10'));var as=require(_0x0010('0x11'));var hardwareService=require(_0x0010('0x12'));var logger=require('../../config/logger')(_0x0010('0x13'));var utils=require(_0x0010('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x0010('0x15'));var db=require(_0x0010('0x16'))['db'];function respondWithStatusCode(_0x231840,_0x479f1e){_0x479f1e=_0x479f1e||0xcc;return function(_0x1095d1){if(_0x1095d1){return _0x231840['sendStatus'](_0x479f1e);}return _0x231840['status'](_0x479f1e)['end']();};}function respondWithResult(_0xe43dac,_0x1cb759){_0x1cb759=_0x1cb759||0xc8;return function(_0x19ef0c){if(_0x19ef0c){return _0xe43dac[_0x0010('0x17')](_0x1cb759)['json'](_0x19ef0c);}};}function respondWithFilteredResult(_0x1fc656,_0x2eec1f){return function(_0x67db43){if(_0x67db43){var _0x50beed=typeof _0x2eec1f['offset']===_0x0010('0x18')&&typeof _0x2eec1f[_0x0010('0x19')]===_0x0010('0x18');var _0x3133b1=_0x67db43[_0x0010('0x1a')];var _0x45f0dc=_0x50beed?0x0:_0x2eec1f[_0x0010('0x1b')];var _0x1bb01a=_0x50beed?_0x67db43[_0x0010('0x1a')]:_0x2eec1f[_0x0010('0x1b')]+_0x2eec1f[_0x0010('0x19')];var _0x1dfaf5;if(_0x1bb01a>=_0x3133b1){_0x1bb01a=_0x3133b1;_0x1dfaf5=0xc8;}else{_0x1dfaf5=0xce;}_0x1fc656[_0x0010('0x17')](_0x1dfaf5);return _0x1fc656[_0x0010('0x1c')](_0x0010('0x1d'),_0x45f0dc+'-'+_0x1bb01a+'/'+_0x3133b1)['json'](_0x67db43);}return null;};}function patchUpdates(_0x3d20b2){return function(_0x3bf812){try{jsonpatch['apply'](_0x3bf812,_0x3d20b2,!![]);}catch(_0x4a3ef8){return BPromise[_0x0010('0x1e')](_0x4a3ef8);}return _0x3bf812['save']();};}function saveUpdates(_0x248729,_0x5ea15b){return function(_0x5f5653){if(_0x5f5653){return _0x5f5653['update'](_0x248729)[_0x0010('0x1f')](function(_0xe43f17){return _0xe43f17;});}return null;};}function removeEntity(_0xfdb6b3,_0x52b1e2){return function(_0xe3d8c2){if(_0xe3d8c2){return _0xe3d8c2[_0x0010('0x20')]()['then'](function(){_0xfdb6b3[_0x0010('0x17')](0xcc)[_0x0010('0x21')]();});}};}function handleEntityNotFound(_0x191c2d,_0x33e5de){return function(_0x3626b3){if(!_0x3626b3){_0x191c2d[_0x0010('0x22')](0x194);}return _0x3626b3;};}function handleError(_0x1b3ade,_0x54a024){_0x54a024=_0x54a024||0x1f4;return function(_0x3a2830){logger[_0x0010('0x23')](_0x3a2830[_0x0010('0x24')]);if(_0x3a2830[_0x0010('0x25')]){delete _0x3a2830[_0x0010('0x25')];}_0x1b3ade['status'](_0x54a024)['send'](_0x3a2830);};}exports[_0x0010('0x26')]=function(_0x5934f1,_0x57a2af){var _0x377b6c={},_0x352d50={},_0x9d7baa={'count':0x0,'rows':[]};var _0x9677c2=_[_0x0010('0x27')](db[_0x0010('0x28')][_0x0010('0x29')],function(_0x3f41ea){return{'name':_0x3f41ea[_0x0010('0x2a')],'type':_0x3f41ea[_0x0010('0x2b')][_0x0010('0x2c')]};});_0x352d50[_0x0010('0x2d')]=_[_0x0010('0x27')](_0x9677c2,_0x0010('0x25'));_0x352d50[_0x0010('0x2e')]=_['keys'](_0x5934f1[_0x0010('0x2e')]);_0x352d50[_0x0010('0x2f')]=_[_0x0010('0x30')](_0x352d50[_0x0010('0x2d')],_0x352d50[_0x0010('0x2e')]);_0x377b6c['attributes']=_[_0x0010('0x30')](_0x352d50[_0x0010('0x2d')],qs['fields'](_0x5934f1['query'][_0x0010('0x31')]));_0x377b6c[_0x0010('0x32')]=_0x377b6c['attributes'][_0x0010('0x33')]?_0x377b6c['attributes']:_0x352d50[_0x0010('0x2d')];if(!_0x5934f1[_0x0010('0x2e')][_0x0010('0x34')](_0x0010('0x35'))){_0x377b6c[_0x0010('0x19')]=qs[_0x0010('0x19')](_0x5934f1[_0x0010('0x2e')][_0x0010('0x19')]);_0x377b6c[_0x0010('0x1b')]=qs['offset'](_0x5934f1[_0x0010('0x2e')][_0x0010('0x1b')]);}_0x377b6c[_0x0010('0x36')]=qs[_0x0010('0x37')](_0x5934f1[_0x0010('0x2e')][_0x0010('0x37')]);_0x377b6c[_0x0010('0x38')]=qs['filters'](_[_0x0010('0x39')](_0x5934f1[_0x0010('0x2e')],_0x352d50[_0x0010('0x2f')]),_0x9677c2);if(_0x5934f1[_0x0010('0x2e')][_0x0010('0x3a')]){_0x377b6c['where']=_['merge'](_0x377b6c[_0x0010('0x38')],{'$or':_[_0x0010('0x27')](_0x9677c2,function(_0x784152){if(_0x784152[_0x0010('0x2b')]!=='VIRTUAL'){var _0x35ec54={};_0x35ec54[_0x784152[_0x0010('0x25')]]={'$like':'%'+_0x5934f1[_0x0010('0x2e')][_0x0010('0x3a')]+'%'};return _0x35ec54;}})});}_0x377b6c=_['merge']({},_0x377b6c,_0x5934f1[_0x0010('0x3b')]);var _0x12741b={'where':_0x377b6c[_0x0010('0x38')]};return db[_0x0010('0x28')][_0x0010('0x1a')](_0x12741b)[_0x0010('0x1f')](function(_0xd182af){_0x9d7baa[_0x0010('0x1a')]=_0xd182af;if(_0x5934f1[_0x0010('0x2e')][_0x0010('0x3c')]){_0x377b6c[_0x0010('0x3d')]=[{'all':!![]}];}return db['ZendeskConfiguration'][_0x0010('0x3e')](_0x377b6c);})[_0x0010('0x1f')](function(_0x37353e){_0x9d7baa['rows']=_0x37353e;return _0x9d7baa;})[_0x0010('0x1f')](respondWithFilteredResult(_0x57a2af,_0x377b6c))[_0x0010('0x3f')](handleError(_0x57a2af,null));};exports[_0x0010('0x40')]=function(_0x1de2e7,_0x18b842){var _0x5700a2={'raw':![],'where':{'id':_0x1de2e7[_0x0010('0x41')]['id']}},_0x1eb276={};_0x1eb276['model']=_[_0x0010('0x42')](db[_0x0010('0x28')][_0x0010('0x29')]);_0x1eb276[_0x0010('0x2e')]=_[_0x0010('0x42')](_0x1de2e7[_0x0010('0x2e')]);_0x1eb276[_0x0010('0x2f')]=_[_0x0010('0x30')](_0x1eb276[_0x0010('0x2d')],_0x1eb276[_0x0010('0x2e')]);_0x5700a2[_0x0010('0x32')]=_[_0x0010('0x30')](_0x1eb276['model'],qs[_0x0010('0x31')](_0x1de2e7[_0x0010('0x2e')][_0x0010('0x31')]));_0x5700a2['attributes']=_0x5700a2[_0x0010('0x32')][_0x0010('0x33')]?_0x5700a2[_0x0010('0x32')]:_0x1eb276['model'];if(_0x1de2e7[_0x0010('0x2e')]['includeAll']){_0x5700a2['include']=[{'all':!![]}];}_0x5700a2=_[_0x0010('0x43')]({},_0x5700a2,_0x1de2e7[_0x0010('0x3b')]);return db[_0x0010('0x28')]['find'](_0x5700a2)[_0x0010('0x1f')](handleEntityNotFound(_0x18b842,null))['then'](respondWithResult(_0x18b842,null))[_0x0010('0x3f')](handleError(_0x18b842,null));};exports[_0x0010('0x44')]=function(_0x4ee44b,_0x8ad9ed){return db[_0x0010('0x28')][_0x0010('0x44')](_0x4ee44b[_0x0010('0x45')],{})[_0x0010('0x1f')](respondWithResult(_0x8ad9ed,0xc9))[_0x0010('0x3f')](handleError(_0x8ad9ed,null));};exports[_0x0010('0x46')]=function(_0x2f6f56,_0x1d6b6f){if(_0x2f6f56[_0x0010('0x45')]['id']){delete _0x2f6f56[_0x0010('0x45')]['id'];}return db[_0x0010('0x28')][_0x0010('0x47')]({'where':{'id':_0x2f6f56[_0x0010('0x41')]['id']}})['then'](handleEntityNotFound(_0x1d6b6f,null))[_0x0010('0x1f')](saveUpdates(_0x2f6f56[_0x0010('0x45')],null))[_0x0010('0x1f')](respondWithResult(_0x1d6b6f,null))[_0x0010('0x3f')](handleError(_0x1d6b6f,null));};exports['destroy']=function(_0x42d438,_0x403870){return db['ZendeskConfiguration']['find']({'where':{'id':_0x42d438[_0x0010('0x41')]['id']}})['then'](handleEntityNotFound(_0x403870,null))[_0x0010('0x1f')](removeEntity(_0x403870,null))['catch'](handleError(_0x403870,null));};exports['getFields']=function(_0x3a63cc,_0x5e4e0d,_0x428ceb){var _0x3ffa5b={};var _0x4d6b74={};var _0x214245;var _0x252946;return db[_0x0010('0x28')][_0x0010('0x48')]({'where':{'id':_0x3a63cc[_0x0010('0x41')]['id']}})[_0x0010('0x1f')](handleEntityNotFound(_0x5e4e0d,null))[_0x0010('0x1f')](function(_0x572be3){if(_0x572be3){_0x214245=_0x572be3;_0x4d6b74[_0x0010('0x2d')]=_['keys'](db[_0x0010('0x49')]['rawAttributes']);_0x4d6b74[_0x0010('0x2e')]=_[_0x0010('0x42')](_0x3a63cc['query']);_0x4d6b74[_0x0010('0x2f')]=_[_0x0010('0x30')](_0x4d6b74['model'],_0x4d6b74['query']);_0x3ffa5b[_0x0010('0x32')]=_['intersection'](_0x4d6b74[_0x0010('0x2d')],qs[_0x0010('0x31')](_0x3a63cc[_0x0010('0x2e')][_0x0010('0x31')]));_0x3ffa5b[_0x0010('0x32')]=_0x3ffa5b[_0x0010('0x32')][_0x0010('0x33')]?_0x3ffa5b[_0x0010('0x32')]:_0x4d6b74['model'];_0x3ffa5b[_0x0010('0x36')]=qs[_0x0010('0x37')](_0x3a63cc['query'][_0x0010('0x37')]);_0x3ffa5b[_0x0010('0x38')]=qs[_0x0010('0x2f')](_['pick'](_0x3a63cc[_0x0010('0x2e')],_0x4d6b74[_0x0010('0x2f')]));if(_0x3a63cc[_0x0010('0x2e')][_0x0010('0x3a')]){_0x3ffa5b[_0x0010('0x38')]=_[_0x0010('0x43')](_0x3ffa5b[_0x0010('0x38')],{'$or':_[_0x0010('0x27')](_0x3ffa5b[_0x0010('0x32')],function(_0x298e32){var _0x20a60e={};_0x20a60e[_0x298e32]={'$like':'%'+_0x3a63cc['query'][_0x0010('0x3a')]+'%'};return _0x20a60e;})});}_0x3ffa5b=_[_0x0010('0x43')]({},_0x3ffa5b,_0x3a63cc['options']);return _0x214245[_0x0010('0x4a')](_0x3ffa5b);}})[_0x0010('0x1f')](function(_0x51e8e1){if(_0x51e8e1){_0x252946=_0x51e8e1[_0x0010('0x33')];if(!_0x3a63cc[_0x0010('0x2e')][_0x0010('0x34')]('nolimit')){_0x3ffa5b[_0x0010('0x19')]=qs[_0x0010('0x19')](_0x3a63cc[_0x0010('0x2e')][_0x0010('0x19')]);_0x3ffa5b[_0x0010('0x1b')]=qs[_0x0010('0x1b')](_0x3a63cc[_0x0010('0x2e')][_0x0010('0x1b')]);}return _0x214245['getFields'](_0x3ffa5b);}})['then'](function(_0x543720){if(_0x543720){return _0x543720?{'count':_0x252946,'rows':_0x543720}:null;}})[_0x0010('0x1f')](respondWithResult(_0x5e4e0d,null))[_0x0010('0x3f')](handleError(_0x5e4e0d,null));};exports['getSubjects']=function(_0x144c2d,_0x3ffedd,_0x1d7b56){var _0x2d4d22={};var _0x5f4bab={};var _0x1ba69b;var _0x590878;return db[_0x0010('0x28')]['findOne']({'where':{'id':_0x144c2d[_0x0010('0x41')]['id']}})[_0x0010('0x1f')](handleEntityNotFound(_0x3ffedd,null))[_0x0010('0x1f')](function(_0x39a94c){if(_0x39a94c){_0x1ba69b=_0x39a94c;_0x5f4bab[_0x0010('0x2d')]=_['keys'](db['ZendeskField']['rawAttributes']);_0x5f4bab['query']=_[_0x0010('0x42')](_0x144c2d[_0x0010('0x2e')]);_0x5f4bab[_0x0010('0x2f')]=_[_0x0010('0x30')](_0x5f4bab['model'],_0x5f4bab[_0x0010('0x2e')]);_0x2d4d22[_0x0010('0x32')]=_['intersection'](_0x5f4bab[_0x0010('0x2d')],qs['fields'](_0x144c2d[_0x0010('0x2e')][_0x0010('0x31')]));_0x2d4d22[_0x0010('0x32')]=_0x2d4d22[_0x0010('0x32')][_0x0010('0x33')]?_0x2d4d22[_0x0010('0x32')]:_0x5f4bab['model'];_0x2d4d22[_0x0010('0x36')]=qs[_0x0010('0x37')](_0x144c2d[_0x0010('0x2e')][_0x0010('0x37')]);_0x2d4d22[_0x0010('0x38')]=qs[_0x0010('0x2f')](_[_0x0010('0x39')](_0x144c2d[_0x0010('0x2e')],_0x5f4bab[_0x0010('0x2f')]));if(_0x144c2d[_0x0010('0x2e')][_0x0010('0x3a')]){_0x2d4d22[_0x0010('0x38')]=_['merge'](_0x2d4d22[_0x0010('0x38')],{'$or':_[_0x0010('0x27')](_0x2d4d22[_0x0010('0x32')],function(_0x192ec6){var _0x5e7a9a={};_0x5e7a9a[_0x192ec6]={'$like':'%'+_0x144c2d[_0x0010('0x2e')][_0x0010('0x3a')]+'%'};return _0x5e7a9a;})});}_0x2d4d22=_[_0x0010('0x43')]({},_0x2d4d22,_0x144c2d[_0x0010('0x3b')]);return _0x1ba69b[_0x0010('0x4b')](_0x2d4d22);}})[_0x0010('0x1f')](function(_0x1db615){if(_0x1db615){_0x590878=_0x1db615[_0x0010('0x33')];if(!_0x144c2d['query'][_0x0010('0x34')](_0x0010('0x35'))){_0x2d4d22['limit']=qs['limit'](_0x144c2d[_0x0010('0x2e')]['limit']);_0x2d4d22[_0x0010('0x1b')]=qs['offset'](_0x144c2d[_0x0010('0x2e')][_0x0010('0x1b')]);}return _0x1ba69b[_0x0010('0x4b')](_0x2d4d22);}})[_0x0010('0x1f')](function(_0x2b9954){if(_0x2b9954){return _0x2b9954?{'count':_0x590878,'rows':_0x2b9954}:null;}})[_0x0010('0x1f')](respondWithResult(_0x3ffedd,null))['catch'](handleError(_0x3ffedd,null));};exports['getDescriptions']=function(_0x30eaa4,_0x126096,_0x56ddd4){var _0x288274={};var _0x38dedd={};var _0xcbcf3c;var _0x587b5e;return db[_0x0010('0x28')][_0x0010('0x48')]({'where':{'id':_0x30eaa4[_0x0010('0x41')]['id']}})['then'](handleEntityNotFound(_0x126096,null))[_0x0010('0x1f')](function(_0x3d2a86){if(_0x3d2a86){_0xcbcf3c=_0x3d2a86;_0x38dedd[_0x0010('0x2d')]=_[_0x0010('0x42')](db[_0x0010('0x49')][_0x0010('0x29')]);_0x38dedd[_0x0010('0x2e')]=_[_0x0010('0x42')](_0x30eaa4[_0x0010('0x2e')]);_0x38dedd[_0x0010('0x2f')]=_['intersection'](_0x38dedd[_0x0010('0x2d')],_0x38dedd[_0x0010('0x2e')]);_0x288274[_0x0010('0x32')]=_[_0x0010('0x30')](_0x38dedd[_0x0010('0x2d')],qs[_0x0010('0x31')](_0x30eaa4[_0x0010('0x2e')][_0x0010('0x31')]));_0x288274[_0x0010('0x32')]=_0x288274[_0x0010('0x32')][_0x0010('0x33')]?_0x288274['attributes']:_0x38dedd[_0x0010('0x2d')];_0x288274[_0x0010('0x36')]=qs[_0x0010('0x37')](_0x30eaa4[_0x0010('0x2e')][_0x0010('0x37')]);_0x288274[_0x0010('0x38')]=qs[_0x0010('0x2f')](_[_0x0010('0x39')](_0x30eaa4[_0x0010('0x2e')],_0x38dedd[_0x0010('0x2f')]));if(_0x30eaa4[_0x0010('0x2e')][_0x0010('0x3a')]){_0x288274[_0x0010('0x38')]=_[_0x0010('0x43')](_0x288274[_0x0010('0x38')],{'$or':_['map'](_0x288274['attributes'],function(_0x17ab30){var _0x823007={};_0x823007[_0x17ab30]={'$like':'%'+_0x30eaa4['query'][_0x0010('0x3a')]+'%'};return _0x823007;})});}_0x288274=_[_0x0010('0x43')]({},_0x288274,_0x30eaa4[_0x0010('0x3b')]);return _0xcbcf3c[_0x0010('0x4c')](_0x288274);}})[_0x0010('0x1f')](function(_0x3b14e1){if(_0x3b14e1){_0x587b5e=_0x3b14e1[_0x0010('0x33')];if(!_0x30eaa4[_0x0010('0x2e')][_0x0010('0x34')](_0x0010('0x35'))){_0x288274['limit']=qs[_0x0010('0x19')](_0x30eaa4['query'][_0x0010('0x19')]);_0x288274[_0x0010('0x1b')]=qs[_0x0010('0x1b')](_0x30eaa4[_0x0010('0x2e')][_0x0010('0x1b')]);}return _0xcbcf3c[_0x0010('0x4c')](_0x288274);}})[_0x0010('0x1f')](function(_0x11a677){if(_0x11a677){return _0x11a677?{'count':_0x587b5e,'rows':_0x11a677}:null;}})[_0x0010('0x1f')](respondWithResult(_0x126096,null))['catch'](handleError(_0x126096,null));};exports[_0x0010('0x4d')]=function(_0x514a0c,_0x2756cb,_0x28f18a){var _0x369162={};var _0x5f41e5={};var _0x2e27b3;var _0x2fbd8d;return db[_0x0010('0x28')][_0x0010('0x48')]({'where':{'id':_0x514a0c[_0x0010('0x41')]['id']}})['then'](handleEntityNotFound(_0x2756cb,null))[_0x0010('0x1f')](function(_0x4f61eb){if(_0x4f61eb){_0x2e27b3=_0x4f61eb;_0x5f41e5[_0x0010('0x2d')]=_[_0x0010('0x42')](db[_0x0010('0x4e')][_0x0010('0x29')]);_0x5f41e5['query']=_['keys'](_0x514a0c[_0x0010('0x2e')]);_0x5f41e5['filters']=_['intersection'](_0x5f41e5[_0x0010('0x2d')],_0x5f41e5[_0x0010('0x2e')]);_0x369162[_0x0010('0x32')]=_[_0x0010('0x30')](_0x5f41e5[_0x0010('0x2d')],qs[_0x0010('0x31')](_0x514a0c[_0x0010('0x2e')][_0x0010('0x31')]));_0x369162[_0x0010('0x32')]=_0x369162['attributes']['length']?_0x369162[_0x0010('0x32')]:_0x5f41e5[_0x0010('0x2d')];_0x369162['order']=qs[_0x0010('0x37')](_0x514a0c[_0x0010('0x2e')][_0x0010('0x37')]);_0x369162[_0x0010('0x38')]=qs[_0x0010('0x2f')](_[_0x0010('0x39')](_0x514a0c[_0x0010('0x2e')],_0x5f41e5[_0x0010('0x2f')]));if(_0x514a0c[_0x0010('0x2e')][_0x0010('0x3a')]){_0x369162[_0x0010('0x38')]=_[_0x0010('0x43')](_0x369162[_0x0010('0x38')],{'$or':_[_0x0010('0x27')](_0x369162[_0x0010('0x32')],function(_0x4e55a0){var _0x4cd9c3={};_0x4cd9c3[_0x4e55a0]={'$like':'%'+_0x514a0c['query'][_0x0010('0x3a')]+'%'};return _0x4cd9c3;})});}_0x369162=_['merge']({},_0x369162,_0x514a0c[_0x0010('0x3b')]);return _0x2e27b3[_0x0010('0x4d')](_0x369162);}})[_0x0010('0x1f')](function(_0x112152){if(_0x112152){_0x2fbd8d=_0x112152[_0x0010('0x33')];if(!_0x514a0c[_0x0010('0x2e')][_0x0010('0x34')]('nolimit')){_0x369162['limit']=qs[_0x0010('0x19')](_0x514a0c[_0x0010('0x2e')][_0x0010('0x19')]);_0x369162[_0x0010('0x1b')]=qs[_0x0010('0x1b')](_0x514a0c[_0x0010('0x2e')][_0x0010('0x1b')]);}return _0x2e27b3[_0x0010('0x4d')](_0x369162);}})['then'](function(_0x59407c){if(_0x59407c){return _0x59407c?{'count':_0x2fbd8d,'rows':_0x59407c}:null;}})[_0x0010('0x1f')](respondWithResult(_0x2756cb,null))['catch'](handleError(_0x2756cb,null));};exports[_0x0010('0x4f')]=function(_0x4d2710,_0x149a83,_0x2fc9c8){if(_0x4d2710[_0x0010('0x45')]['id']){delete _0x4d2710[_0x0010('0x45')]['id'];}return db[_0x0010('0x28')][_0x0010('0x48')]({'where':{'id':_0x4d2710[_0x0010('0x41')]['id']}})['then'](handleEntityNotFound(_0x149a83,null))[_0x0010('0x1f')](function(_0x4ceb6a){if(_0x4ceb6a){return _0x4ceb6a[_0x0010('0x4f')](_0x4d2710['body'][_0x0010('0x50')]||[]);}return null;})[_0x0010('0x1f')](respondWithResult(_0x149a83,null))[_0x0010('0x3f')](handleError(_0x149a83,null));};
\ No newline at end of file
+var _0x1902=['destroy','then','sendStatus','error','stack','name','index','ZendeskConfiguration','rawAttributes','fieldName','model','map','query','filters','attributes','fields','hasOwnProperty','order','sort','pick','filter','merge','where','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','getFields','ZendeskField','intersection','length','nolimit','getSubjects','getDescriptions','findOne','getTags','Tag','setTags','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../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','set','Content-Range','reject','update'];(function(_0x32a326,_0x343f45){var _0x48cd14=function(_0x370d9f){while(--_0x370d9f){_0x32a326['push'](_0x32a326['shift']());}};_0x48cd14(++_0x343f45);}(_0x1902,0x84));var _0x2190=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1902[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x2190('0x0'));var rimraf=require(_0x2190('0x1'));var zipdir=require(_0x2190('0x2'));var jsonpatch=require(_0x2190('0x3'));var rp=require(_0x2190('0x4'));var moment=require(_0x2190('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x2190('0x6'));var util=require(_0x2190('0x7'));var path=require('path');var sox=require(_0x2190('0x8'));var csv=require(_0x2190('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2190('0xa'));var _=require(_0x2190('0xb'));var squel=require(_0x2190('0xc'));var crypto=require(_0x2190('0xd'));var jsforce=require(_0x2190('0xe'));var deskjs=require(_0x2190('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x2190('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x2190('0x11'));var as=require(_0x2190('0x12'));var hardwareService=require(_0x2190('0x13'));var logger=require(_0x2190('0x14'))(_0x2190('0x15'));var utils=require(_0x2190('0x16'));var config=require(_0x2190('0x17'));var licenseUtil=require(_0x2190('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xd5b163,_0x5517ee){_0x5517ee=_0x5517ee||0xcc;return function(_0x57f57e){if(_0x57f57e){return _0xd5b163['sendStatus'](_0x5517ee);}return _0xd5b163[_0x2190('0x19')](_0x5517ee)[_0x2190('0x1a')]();};}function respondWithResult(_0x2eff5e,_0x5a9160){_0x5a9160=_0x5a9160||0xc8;return function(_0x2d4ca4){if(_0x2d4ca4){return _0x2eff5e[_0x2190('0x19')](_0x5a9160)[_0x2190('0x1b')](_0x2d4ca4);}};}function respondWithFilteredResult(_0x28d857,_0x203c7f){return function(_0x13e2c8){if(_0x13e2c8){var _0x43d4ea=typeof _0x203c7f[_0x2190('0x1c')]===_0x2190('0x1d')&&typeof _0x203c7f[_0x2190('0x1e')]===_0x2190('0x1d');var _0xac95b4=_0x13e2c8[_0x2190('0x1f')];var _0x519dfc=_0x43d4ea?0x0:_0x203c7f[_0x2190('0x1c')];var _0x14c6f6=_0x43d4ea?_0x13e2c8[_0x2190('0x1f')]:_0x203c7f[_0x2190('0x1c')]+_0x203c7f['limit'];var _0x8db504;if(_0x14c6f6>=_0xac95b4){_0x14c6f6=_0xac95b4;_0x8db504=0xc8;}else{_0x8db504=0xce;}_0x28d857['status'](_0x8db504);return _0x28d857[_0x2190('0x20')](_0x2190('0x21'),_0x519dfc+'-'+_0x14c6f6+'/'+_0xac95b4)['json'](_0x13e2c8);}return null;};}function patchUpdates(_0x2e3894){return function(_0x1eb553){try{jsonpatch['apply'](_0x1eb553,_0x2e3894,!![]);}catch(_0x5a92f1){return BPromise[_0x2190('0x22')](_0x5a92f1);}return _0x1eb553['save']();};}function saveUpdates(_0x47c25d,_0xe6e656){return function(_0x142181){if(_0x142181){return _0x142181[_0x2190('0x23')](_0x47c25d)['then'](function(_0x1a9bf9){return _0x1a9bf9;});}return null;};}function removeEntity(_0x7c5e8d,_0x284fa6){return function(_0x509a61){if(_0x509a61){return _0x509a61[_0x2190('0x24')]()[_0x2190('0x25')](function(){_0x7c5e8d[_0x2190('0x19')](0xcc)[_0x2190('0x1a')]();});}};}function handleEntityNotFound(_0xe9e6d9,_0x10580d){return function(_0x5e982b){if(!_0x5e982b){_0xe9e6d9[_0x2190('0x26')](0x194);}return _0x5e982b;};}function handleError(_0x2bfda4,_0x268ce3){_0x268ce3=_0x268ce3||0x1f4;return function(_0x537c79){logger[_0x2190('0x27')](_0x537c79[_0x2190('0x28')]);if(_0x537c79[_0x2190('0x29')]){delete _0x537c79['name'];}_0x2bfda4['status'](_0x268ce3)['send'](_0x537c79);};}exports[_0x2190('0x2a')]=function(_0x4fb7f0,_0x264ab4){var _0x3c5c72={},_0xe721a3={},_0x4e43ac={'count':0x0,'rows':[]};var _0x290c56=_['map'](db[_0x2190('0x2b')][_0x2190('0x2c')],function(_0x2ea568){return{'name':_0x2ea568[_0x2190('0x2d')],'type':_0x2ea568['type']['key']};});_0xe721a3[_0x2190('0x2e')]=_[_0x2190('0x2f')](_0x290c56,'name');_0xe721a3[_0x2190('0x30')]=_['keys'](_0x4fb7f0[_0x2190('0x30')]);_0xe721a3[_0x2190('0x31')]=_['intersection'](_0xe721a3[_0x2190('0x2e')],_0xe721a3[_0x2190('0x30')]);_0x3c5c72[_0x2190('0x32')]=_['intersection'](_0xe721a3[_0x2190('0x2e')],qs[_0x2190('0x33')](_0x4fb7f0['query'][_0x2190('0x33')]));_0x3c5c72[_0x2190('0x32')]=_0x3c5c72[_0x2190('0x32')]['length']?_0x3c5c72[_0x2190('0x32')]:_0xe721a3[_0x2190('0x2e')];if(!_0x4fb7f0[_0x2190('0x30')][_0x2190('0x34')]('nolimit')){_0x3c5c72[_0x2190('0x1e')]=qs[_0x2190('0x1e')](_0x4fb7f0[_0x2190('0x30')]['limit']);_0x3c5c72[_0x2190('0x1c')]=qs[_0x2190('0x1c')](_0x4fb7f0['query'][_0x2190('0x1c')]);}_0x3c5c72[_0x2190('0x35')]=qs[_0x2190('0x36')](_0x4fb7f0[_0x2190('0x30')][_0x2190('0x36')]);_0x3c5c72['where']=qs['filters'](_[_0x2190('0x37')](_0x4fb7f0['query'],_0xe721a3[_0x2190('0x31')]),_0x290c56);if(_0x4fb7f0[_0x2190('0x30')][_0x2190('0x38')]){_0x3c5c72['where']=_[_0x2190('0x39')](_0x3c5c72[_0x2190('0x3a')],{'$or':_[_0x2190('0x2f')](_0x290c56,function(_0x539da1){if(_0x539da1[_0x2190('0x3b')]!==_0x2190('0x3c')){var _0x2a5e17={};_0x2a5e17[_0x539da1[_0x2190('0x29')]]={'$like':'%'+_0x4fb7f0[_0x2190('0x30')][_0x2190('0x38')]+'%'};return _0x2a5e17;}})});}_0x3c5c72=_[_0x2190('0x39')]({},_0x3c5c72,_0x4fb7f0[_0x2190('0x3d')]);var _0x57c3e7={'where':_0x3c5c72['where']};return db[_0x2190('0x2b')][_0x2190('0x1f')](_0x57c3e7)['then'](function(_0x312516){_0x4e43ac[_0x2190('0x1f')]=_0x312516;if(_0x4fb7f0[_0x2190('0x30')][_0x2190('0x3e')]){_0x3c5c72[_0x2190('0x3f')]=[{'all':!![]}];}return db[_0x2190('0x2b')][_0x2190('0x40')](_0x3c5c72);})['then'](function(_0x147596){_0x4e43ac[_0x2190('0x41')]=_0x147596;return _0x4e43ac;})[_0x2190('0x25')](respondWithFilteredResult(_0x264ab4,_0x3c5c72))[_0x2190('0x42')](handleError(_0x264ab4,null));};exports[_0x2190('0x43')]=function(_0x6c05f,_0x1aa527){var _0x243438={'raw':![],'where':{'id':_0x6c05f[_0x2190('0x44')]['id']}},_0x388f0d={};_0x388f0d[_0x2190('0x2e')]=_[_0x2190('0x45')](db[_0x2190('0x2b')][_0x2190('0x2c')]);_0x388f0d['query']=_[_0x2190('0x45')](_0x6c05f[_0x2190('0x30')]);_0x388f0d['filters']=_['intersection'](_0x388f0d[_0x2190('0x2e')],_0x388f0d[_0x2190('0x30')]);_0x243438[_0x2190('0x32')]=_['intersection'](_0x388f0d['model'],qs[_0x2190('0x33')](_0x6c05f[_0x2190('0x30')][_0x2190('0x33')]));_0x243438['attributes']=_0x243438[_0x2190('0x32')]['length']?_0x243438[_0x2190('0x32')]:_0x388f0d[_0x2190('0x2e')];if(_0x6c05f[_0x2190('0x30')][_0x2190('0x3e')]){_0x243438[_0x2190('0x3f')]=[{'all':!![]}];}_0x243438=_['merge']({},_0x243438,_0x6c05f[_0x2190('0x3d')]);return db[_0x2190('0x2b')][_0x2190('0x46')](_0x243438)[_0x2190('0x25')](handleEntityNotFound(_0x1aa527,null))[_0x2190('0x25')](respondWithResult(_0x1aa527,null))[_0x2190('0x42')](handleError(_0x1aa527,null));};exports[_0x2190('0x47')]=function(_0x5553c1,_0x8c7610){return db[_0x2190('0x2b')]['create'](_0x5553c1[_0x2190('0x48')],{})[_0x2190('0x25')](respondWithResult(_0x8c7610,0xc9))[_0x2190('0x42')](handleError(_0x8c7610,null));};exports[_0x2190('0x23')]=function(_0x986b53,_0x246ae2){if(_0x986b53[_0x2190('0x48')]['id']){delete _0x986b53[_0x2190('0x48')]['id'];}return db['ZendeskConfiguration'][_0x2190('0x46')]({'where':{'id':_0x986b53[_0x2190('0x44')]['id']}})[_0x2190('0x25')](handleEntityNotFound(_0x246ae2,null))[_0x2190('0x25')](saveUpdates(_0x986b53[_0x2190('0x48')],null))[_0x2190('0x25')](respondWithResult(_0x246ae2,null))[_0x2190('0x42')](handleError(_0x246ae2,null));};exports['destroy']=function(_0x44b5dc,_0x18db23){return db[_0x2190('0x2b')][_0x2190('0x46')]({'where':{'id':_0x44b5dc[_0x2190('0x44')]['id']}})[_0x2190('0x25')](handleEntityNotFound(_0x18db23,null))[_0x2190('0x25')](removeEntity(_0x18db23,null))['catch'](handleError(_0x18db23,null));};exports[_0x2190('0x49')]=function(_0x1bdcc9,_0x28107a,_0x238547){var _0x404bca={};var _0x48a6bc={};var _0x523cae;var _0x2e3d08;return db[_0x2190('0x2b')]['findOne']({'where':{'id':_0x1bdcc9[_0x2190('0x44')]['id']}})[_0x2190('0x25')](handleEntityNotFound(_0x28107a,null))[_0x2190('0x25')](function(_0x24574b){if(_0x24574b){_0x523cae=_0x24574b;_0x48a6bc[_0x2190('0x2e')]=_[_0x2190('0x45')](db[_0x2190('0x4a')][_0x2190('0x2c')]);_0x48a6bc['query']=_['keys'](_0x1bdcc9[_0x2190('0x30')]);_0x48a6bc[_0x2190('0x31')]=_['intersection'](_0x48a6bc[_0x2190('0x2e')],_0x48a6bc[_0x2190('0x30')]);_0x404bca[_0x2190('0x32')]=_[_0x2190('0x4b')](_0x48a6bc[_0x2190('0x2e')],qs['fields'](_0x1bdcc9['query'][_0x2190('0x33')]));_0x404bca[_0x2190('0x32')]=_0x404bca[_0x2190('0x32')][_0x2190('0x4c')]?_0x404bca[_0x2190('0x32')]:_0x48a6bc[_0x2190('0x2e')];_0x404bca[_0x2190('0x35')]=qs[_0x2190('0x36')](_0x1bdcc9[_0x2190('0x30')]['sort']);_0x404bca[_0x2190('0x3a')]=qs[_0x2190('0x31')](_[_0x2190('0x37')](_0x1bdcc9['query'],_0x48a6bc['filters']));if(_0x1bdcc9[_0x2190('0x30')][_0x2190('0x38')]){_0x404bca[_0x2190('0x3a')]=_[_0x2190('0x39')](_0x404bca['where'],{'$or':_[_0x2190('0x2f')](_0x404bca[_0x2190('0x32')],function(_0x41bd66){var _0x27475e={};_0x27475e[_0x41bd66]={'$like':'%'+_0x1bdcc9['query'][_0x2190('0x38')]+'%'};return _0x27475e;})});}_0x404bca=_[_0x2190('0x39')]({},_0x404bca,_0x1bdcc9[_0x2190('0x3d')]);return _0x523cae[_0x2190('0x49')](_0x404bca);}})[_0x2190('0x25')](function(_0x5a0fa2){if(_0x5a0fa2){_0x2e3d08=_0x5a0fa2['length'];if(!_0x1bdcc9[_0x2190('0x30')][_0x2190('0x34')](_0x2190('0x4d'))){_0x404bca[_0x2190('0x1e')]=qs[_0x2190('0x1e')](_0x1bdcc9[_0x2190('0x30')][_0x2190('0x1e')]);_0x404bca['offset']=qs['offset'](_0x1bdcc9[_0x2190('0x30')]['offset']);}return _0x523cae[_0x2190('0x49')](_0x404bca);}})[_0x2190('0x25')](function(_0x77c1d0){if(_0x77c1d0){return _0x77c1d0?{'count':_0x2e3d08,'rows':_0x77c1d0}:null;}})[_0x2190('0x25')](respondWithResult(_0x28107a,null))[_0x2190('0x42')](handleError(_0x28107a,null));};exports[_0x2190('0x4e')]=function(_0x17b06b,_0x3f5dab,_0x248ec2){var _0x599da6={};var _0x14286e={};var _0x28c3d6;var _0x38a6a2;return db[_0x2190('0x2b')]['findOne']({'where':{'id':_0x17b06b[_0x2190('0x44')]['id']}})[_0x2190('0x25')](handleEntityNotFound(_0x3f5dab,null))[_0x2190('0x25')](function(_0x2520fe){if(_0x2520fe){_0x28c3d6=_0x2520fe;_0x14286e[_0x2190('0x2e')]=_['keys'](db['ZendeskField'][_0x2190('0x2c')]);_0x14286e['query']=_['keys'](_0x17b06b[_0x2190('0x30')]);_0x14286e[_0x2190('0x31')]=_['intersection'](_0x14286e[_0x2190('0x2e')],_0x14286e[_0x2190('0x30')]);_0x599da6[_0x2190('0x32')]=_[_0x2190('0x4b')](_0x14286e['model'],qs['fields'](_0x17b06b['query']['fields']));_0x599da6[_0x2190('0x32')]=_0x599da6[_0x2190('0x32')][_0x2190('0x4c')]?_0x599da6[_0x2190('0x32')]:_0x14286e[_0x2190('0x2e')];_0x599da6[_0x2190('0x35')]=qs[_0x2190('0x36')](_0x17b06b['query'][_0x2190('0x36')]);_0x599da6[_0x2190('0x3a')]=qs['filters'](_[_0x2190('0x37')](_0x17b06b[_0x2190('0x30')],_0x14286e[_0x2190('0x31')]));if(_0x17b06b[_0x2190('0x30')]['filter']){_0x599da6[_0x2190('0x3a')]=_[_0x2190('0x39')](_0x599da6[_0x2190('0x3a')],{'$or':_[_0x2190('0x2f')](_0x599da6[_0x2190('0x32')],function(_0x257d5a){var _0x1056ce={};_0x1056ce[_0x257d5a]={'$like':'%'+_0x17b06b[_0x2190('0x30')][_0x2190('0x38')]+'%'};return _0x1056ce;})});}_0x599da6=_['merge']({},_0x599da6,_0x17b06b[_0x2190('0x3d')]);return _0x28c3d6[_0x2190('0x4e')](_0x599da6);}})['then'](function(_0x309a8b){if(_0x309a8b){_0x38a6a2=_0x309a8b['length'];if(!_0x17b06b['query'][_0x2190('0x34')]('nolimit')){_0x599da6[_0x2190('0x1e')]=qs['limit'](_0x17b06b[_0x2190('0x30')][_0x2190('0x1e')]);_0x599da6[_0x2190('0x1c')]=qs['offset'](_0x17b06b[_0x2190('0x30')][_0x2190('0x1c')]);}return _0x28c3d6[_0x2190('0x4e')](_0x599da6);}})[_0x2190('0x25')](function(_0x556f5b){if(_0x556f5b){return _0x556f5b?{'count':_0x38a6a2,'rows':_0x556f5b}:null;}})[_0x2190('0x25')](respondWithResult(_0x3f5dab,null))['catch'](handleError(_0x3f5dab,null));};exports[_0x2190('0x4f')]=function(_0x57c953,_0x381b1f,_0x37cc39){var _0x51da27={};var _0x114e06={};var _0xbc422a;var _0x3906d0;return db[_0x2190('0x2b')][_0x2190('0x50')]({'where':{'id':_0x57c953['params']['id']}})['then'](handleEntityNotFound(_0x381b1f,null))[_0x2190('0x25')](function(_0xd91a56){if(_0xd91a56){_0xbc422a=_0xd91a56;_0x114e06['model']=_[_0x2190('0x45')](db['ZendeskField'][_0x2190('0x2c')]);_0x114e06[_0x2190('0x30')]=_[_0x2190('0x45')](_0x57c953[_0x2190('0x30')]);_0x114e06['filters']=_[_0x2190('0x4b')](_0x114e06['model'],_0x114e06[_0x2190('0x30')]);_0x51da27[_0x2190('0x32')]=_[_0x2190('0x4b')](_0x114e06[_0x2190('0x2e')],qs[_0x2190('0x33')](_0x57c953[_0x2190('0x30')][_0x2190('0x33')]));_0x51da27[_0x2190('0x32')]=_0x51da27[_0x2190('0x32')][_0x2190('0x4c')]?_0x51da27[_0x2190('0x32')]:_0x114e06[_0x2190('0x2e')];_0x51da27[_0x2190('0x35')]=qs['sort'](_0x57c953[_0x2190('0x30')]['sort']);_0x51da27[_0x2190('0x3a')]=qs[_0x2190('0x31')](_['pick'](_0x57c953[_0x2190('0x30')],_0x114e06['filters']));if(_0x57c953[_0x2190('0x30')][_0x2190('0x38')]){_0x51da27[_0x2190('0x3a')]=_['merge'](_0x51da27['where'],{'$or':_[_0x2190('0x2f')](_0x51da27[_0x2190('0x32')],function(_0x4290ca){var _0xa51279={};_0xa51279[_0x4290ca]={'$like':'%'+_0x57c953[_0x2190('0x30')][_0x2190('0x38')]+'%'};return _0xa51279;})});}_0x51da27=_[_0x2190('0x39')]({},_0x51da27,_0x57c953[_0x2190('0x3d')]);return _0xbc422a[_0x2190('0x4f')](_0x51da27);}})[_0x2190('0x25')](function(_0x50ff3e){if(_0x50ff3e){_0x3906d0=_0x50ff3e['length'];if(!_0x57c953[_0x2190('0x30')]['hasOwnProperty'](_0x2190('0x4d'))){_0x51da27[_0x2190('0x1e')]=qs['limit'](_0x57c953['query'][_0x2190('0x1e')]);_0x51da27['offset']=qs[_0x2190('0x1c')](_0x57c953[_0x2190('0x30')][_0x2190('0x1c')]);}return _0xbc422a[_0x2190('0x4f')](_0x51da27);}})['then'](function(_0x434e89){if(_0x434e89){return _0x434e89?{'count':_0x3906d0,'rows':_0x434e89}:null;}})[_0x2190('0x25')](respondWithResult(_0x381b1f,null))[_0x2190('0x42')](handleError(_0x381b1f,null));};exports[_0x2190('0x51')]=function(_0x1f684f,_0x1b230d,_0x33920a){var _0x11582a={};var _0x3fa271={};var _0x527066;var _0x59cca3;return db['ZendeskConfiguration'][_0x2190('0x50')]({'where':{'id':_0x1f684f[_0x2190('0x44')]['id']}})[_0x2190('0x25')](handleEntityNotFound(_0x1b230d,null))[_0x2190('0x25')](function(_0x48a9cb){if(_0x48a9cb){_0x527066=_0x48a9cb;_0x3fa271[_0x2190('0x2e')]=_[_0x2190('0x45')](db[_0x2190('0x52')][_0x2190('0x2c')]);_0x3fa271['query']=_[_0x2190('0x45')](_0x1f684f[_0x2190('0x30')]);_0x3fa271[_0x2190('0x31')]=_[_0x2190('0x4b')](_0x3fa271['model'],_0x3fa271[_0x2190('0x30')]);_0x11582a[_0x2190('0x32')]=_['intersection'](_0x3fa271[_0x2190('0x2e')],qs[_0x2190('0x33')](_0x1f684f['query'][_0x2190('0x33')]));_0x11582a[_0x2190('0x32')]=_0x11582a[_0x2190('0x32')][_0x2190('0x4c')]?_0x11582a[_0x2190('0x32')]:_0x3fa271[_0x2190('0x2e')];_0x11582a[_0x2190('0x35')]=qs[_0x2190('0x36')](_0x1f684f[_0x2190('0x30')][_0x2190('0x36')]);_0x11582a[_0x2190('0x3a')]=qs['filters'](_[_0x2190('0x37')](_0x1f684f[_0x2190('0x30')],_0x3fa271[_0x2190('0x31')]));if(_0x1f684f[_0x2190('0x30')][_0x2190('0x38')]){_0x11582a[_0x2190('0x3a')]=_[_0x2190('0x39')](_0x11582a[_0x2190('0x3a')],{'$or':_[_0x2190('0x2f')](_0x11582a[_0x2190('0x32')],function(_0x45ece3){var _0x3e8ce4={};_0x3e8ce4[_0x45ece3]={'$like':'%'+_0x1f684f[_0x2190('0x30')]['filter']+'%'};return _0x3e8ce4;})});}_0x11582a=_[_0x2190('0x39')]({},_0x11582a,_0x1f684f[_0x2190('0x3d')]);return _0x527066['getTags'](_0x11582a);}})[_0x2190('0x25')](function(_0x720c07){if(_0x720c07){_0x59cca3=_0x720c07['length'];if(!_0x1f684f[_0x2190('0x30')][_0x2190('0x34')](_0x2190('0x4d'))){_0x11582a[_0x2190('0x1e')]=qs[_0x2190('0x1e')](_0x1f684f[_0x2190('0x30')][_0x2190('0x1e')]);_0x11582a[_0x2190('0x1c')]=qs['offset'](_0x1f684f[_0x2190('0x30')]['offset']);}return _0x527066['getTags'](_0x11582a);}})[_0x2190('0x25')](function(_0x3fc3c6){if(_0x3fc3c6){return _0x3fc3c6?{'count':_0x59cca3,'rows':_0x3fc3c6}:null;}})[_0x2190('0x25')](respondWithResult(_0x1b230d,null))[_0x2190('0x42')](handleError(_0x1b230d,null));};exports['setTags']=function(_0x5323d3,_0x3aef16,_0x114da8){if(_0x5323d3[_0x2190('0x48')]['id']){delete _0x5323d3[_0x2190('0x48')]['id'];}return db[_0x2190('0x2b')]['findOne']({'where':{'id':_0x5323d3[_0x2190('0x44')]['id']}})[_0x2190('0x25')](handleEntityNotFound(_0x3aef16,null))['then'](function(_0x2d2a04){if(_0x2d2a04){return _0x2d2a04[_0x2190('0x53')](_0x5323d3[_0x2190('0x48')]['ids']||[]);}return null;})[_0x2190('0x25')](respondWithResult(_0x3aef16,null))[_0x2190('0x42')](handleError(_0x3aef16,null));};
\ No newline at end of file
index d520694..cb862b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7334=['exports','define','ZendeskConfiguration','int_zendesk_configurations','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./intZendeskConfiguration.attributes'];(function(_0x16aaef,_0x410651){var _0x1c82ef=function(_0x3d802b){while(--_0x3d802b){_0x16aaef['push'](_0x16aaef['shift']());}};_0x1c82ef(++_0x410651);}(_0x7334,0x184));var _0x4733=function(_0x25897c,_0x9d0ab0){_0x25897c=_0x25897c-0x0;var _0x5a6206=_0x7334[_0x25897c];return _0x5a6206;};'use strict';var _=require(_0x4733('0x0'));var util=require(_0x4733('0x1'));var logger=require(_0x4733('0x2'))('api');var moment=require('moment');var BPromise=require(_0x4733('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4733('0x4'));var rimraf=require(_0x4733('0x5'));var config=require(_0x4733('0x6'));var attributes=require(_0x4733('0x7'));module[_0x4733('0x8')]=function(_0x449ead,_0x16d7cc){return _0x449ead[_0x4733('0x9')](_0x4733('0xa'),attributes,{'tableName':_0x4733('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdd4f=['exports','define','ZendeskConfiguration','lodash','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x24237f,_0x4cf32c){var _0x48298e=function(_0x3f7511){while(--_0x3f7511){_0x24237f['push'](_0x24237f['shift']());}};_0x48298e(++_0x4cf32c);}(_0xdd4f,0x1ce));var _0xfdd4=function(_0x3621df,_0x11b448){_0x3621df=_0x3621df-0x0;var _0x416581=_0xdd4f[_0x3621df];return _0x416581;};'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('./intZendeskConfiguration.attributes');module[_0xfdd4('0x6')]=function(_0x43cbcf,_0x30e080){return _0x43cbcf[_0xfdd4('0x7')](_0xfdd4('0x8'),attributes,{'tableName':'int_zendesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d201fdb..4f2ad74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb16=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x559eab,_0x5bb6a9){var _0x4b1e5d=function(_0xffec2a){while(--_0xffec2a){_0x559eab['push'](_0x559eab['shift']());}};_0x4b1e5d(++_0x5bb6a9);}(_0xfb16,0x101));var _0x6fb1=function(_0x55ef13,_0x2c4aeb){_0x55ef13=_0x55ef13-0x0;var _0x13979c=_0xfb16[_0x55ef13];return _0x13979c;};'use strict';var _=require(_0x6fb1('0x0'));var util=require(_0x6fb1('0x1'));var moment=require(_0x6fb1('0x2'));var BPromise=require(_0x6fb1('0x3'));var rs=require(_0x6fb1('0x4'));var fs=require('fs');var Redis=require(_0x6fb1('0x5'));var db=require(_0x6fb1('0x6'))['db'];var utils=require(_0x6fb1('0x7'));var logger=require(_0x6fb1('0x8'))('rpc');var config=require(_0x6fb1('0x9'));var jayson=require(_0x6fb1('0xa'));var client=jayson[_0x6fb1('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x835c52,_0x2d4f9a,_0x1df110){return new BPromise(function(_0x15915a,_0x327c2b){return client[_0x6fb1('0xc')](_0x835c52,_0x1df110)[_0x6fb1('0xd')](function(_0x555c5a){logger['info'](_0x6fb1('0xe'),_0x2d4f9a,_0x6fb1('0xf'));logger[_0x6fb1('0x10')]('ZendeskConfiguration,\x20%s,\x20%s,\x20%s',_0x2d4f9a,_0x6fb1('0xf'),JSON[_0x6fb1('0x11')](_0x555c5a));if(_0x555c5a[_0x6fb1('0x12')]){if(_0x555c5a[_0x6fb1('0x12')]['code']===0x1f4){logger[_0x6fb1('0x12')]('ZendeskConfiguration,\x20%s,\x20%s',_0x2d4f9a,_0x555c5a[_0x6fb1('0x12')]['message']);return _0x327c2b(_0x555c5a['error'][_0x6fb1('0x13')]);}logger[_0x6fb1('0x12')](_0x6fb1('0xe'),_0x2d4f9a,_0x555c5a[_0x6fb1('0x12')][_0x6fb1('0x13')]);return _0x15915a(_0x555c5a[_0x6fb1('0x12')]['message']);}else{logger[_0x6fb1('0x14')](_0x6fb1('0xe'),_0x2d4f9a,_0x6fb1('0xf'));_0x15915a(_0x555c5a['result']['message']);}})[_0x6fb1('0x15')](function(_0x166a8e){logger['error']('ZendeskConfiguration,\x20%s,\x20%s',_0x2d4f9a,_0x166a8e);_0x327c2b(_0x166a8e);});});}
\ No newline at end of file
+var _0x35ea=['ZendeskConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0xa7662e,_0x22304d){var _0x425053=function(_0x3e24a6){while(--_0x3e24a6){_0xa7662e['push'](_0xa7662e['shift']());}};_0x425053(++_0x22304d);}(_0x35ea,0xcc));var _0xa35e=function(_0x470170,_0x454483){_0x470170=_0x470170-0x0;var _0x2cc1cc=_0x35ea[_0x470170];return _0x2cc1cc;};'use strict';var _=require(_0xa35e('0x0'));var util=require(_0xa35e('0x1'));var moment=require(_0xa35e('0x2'));var BPromise=require(_0xa35e('0x3'));var rs=require(_0xa35e('0x4'));var fs=require('fs');var Redis=require(_0xa35e('0x5'));var db=require(_0xa35e('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xa35e('0x7'))(_0xa35e('0x8'));var config=require(_0xa35e('0x9'));var jayson=require(_0xa35e('0xa'));var client=jayson[_0xa35e('0xb')][_0xa35e('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x57a56a,_0x50e479,_0x16f8c0){return new BPromise(function(_0x338653,_0x20c112){return client[_0xa35e('0xd')](_0x57a56a,_0x16f8c0)['then'](function(_0xfe2d45){logger[_0xa35e('0xe')]('ZendeskConfiguration,\x20%s,\x20%s',_0x50e479,'request\x20sent');logger[_0xa35e('0xf')](_0xa35e('0x10'),_0x50e479,_0xa35e('0x11'),JSON[_0xa35e('0x12')](_0xfe2d45));if(_0xfe2d45[_0xa35e('0x13')]){if(_0xfe2d45[_0xa35e('0x13')][_0xa35e('0x14')]===0x1f4){logger[_0xa35e('0x13')](_0xa35e('0x15'),_0x50e479,_0xfe2d45[_0xa35e('0x13')][_0xa35e('0x16')]);return _0x20c112(_0xfe2d45[_0xa35e('0x13')]['message']);}logger['error']('ZendeskConfiguration,\x20%s,\x20%s',_0x50e479,_0xfe2d45['error'][_0xa35e('0x16')]);return _0x338653(_0xfe2d45[_0xa35e('0x13')][_0xa35e('0x16')]);}else{logger[_0xa35e('0xe')](_0xa35e('0x15'),_0x50e479,_0xa35e('0x11'));_0x338653(_0xfe2d45[_0xa35e('0x17')][_0xa35e('0x16')]);}})[_0xa35e('0x18')](function(_0x5c0a2b){logger[_0xa35e('0x13')](_0xa35e('0x15'),_0x50e479,_0x5c0a2b);_0x20c112(_0x5c0a2b);});});}
\ No newline at end of file
index 95a2cc1..70ace02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fcf=['put','/:id','update','delete','destroy','exports','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','show','post'];(function(_0x10abb3,_0x42bffd){var _0x4ac9d4=function(_0x32c876){while(--_0x32c876){_0x10abb3['push'](_0x10abb3['shift']());}};_0x4ac9d4(++_0x42bffd);}(_0x5fcf,0x127));var _0xf5fc=function(_0x154758,_0x5fb6f0){_0x154758=_0x154758-0x0;var _0x3c485b=_0x5fcf[_0x154758];return _0x3c485b;};'use strict';var multer=require('multer');var util=require(_0xf5fc('0x0'));var path=require(_0xf5fc('0x1'));var timeout=require('connect-timeout');var express=require(_0xf5fc('0x2'));var router=express['Router']();var fs_extra=require(_0xf5fc('0x3'));var auth=require(_0xf5fc('0x4'));var interaction=require(_0xf5fc('0x5'));var config=require(_0xf5fc('0x6'));var controller=require('./intZendeskField.controller');router[_0xf5fc('0x7')]('/',auth[_0xf5fc('0x8')](),controller['index']);router['get']('/:id',auth['isAuthenticated'](),controller[_0xf5fc('0x9')]);router[_0xf5fc('0xa')]('/',auth[_0xf5fc('0x8')](),controller['create']);router[_0xf5fc('0xb')](_0xf5fc('0xc'),auth[_0xf5fc('0x8')](),controller[_0xf5fc('0xd')]);router[_0xf5fc('0xe')]('/:id',auth[_0xf5fc('0x8')](),controller[_0xf5fc('0xf')]);module[_0xf5fc('0x10')]=router;
\ No newline at end of file
+var _0x1b64=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','update','destroy','multer','util','connect-timeout','express'];(function(_0x55a595,_0x3ad966){var _0x46d9d0=function(_0x5bfe9e){while(--_0x5bfe9e){_0x55a595['push'](_0x55a595['shift']());}};_0x46d9d0(++_0x3ad966);}(_0x1b64,0x12e));var _0x41b6=function(_0x6439bc,_0x3612a6){_0x6439bc=_0x6439bc-0x0;var _0x22e865=_0x1b64[_0x6439bc];return _0x22e865;};'use strict';var multer=require(_0x41b6('0x0'));var util=require(_0x41b6('0x1'));var path=require('path');var timeout=require(_0x41b6('0x2'));var express=require(_0x41b6('0x3'));var router=express[_0x41b6('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x41b6('0x5'));var interaction=require(_0x41b6('0x6'));var config=require(_0x41b6('0x7'));var controller=require('./intZendeskField.controller');router[_0x41b6('0x8')]('/',auth[_0x41b6('0x9')](),controller[_0x41b6('0xa')]);router['get'](_0x41b6('0xb'),auth[_0x41b6('0x9')](),controller[_0x41b6('0xc')]);router[_0x41b6('0xd')]('/',auth['isAuthenticated'](),controller[_0x41b6('0xe')]);router[_0x41b6('0xf')](_0x41b6('0xb'),auth[_0x41b6('0x9')](),controller[_0x41b6('0x10')]);router['delete'](_0x41b6('0xb'),auth['isAuthenticated'](),controller[_0x41b6('0x11')]);module['exports']=router;
\ No newline at end of file
index b818428..6b5532f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42b5=['keyValue','picklist','STRING','BOOLEAN','sequelize','exports','string','variable','customVariable'];(function(_0x4b5161,_0xcce11f){var _0x2c9c3c=function(_0x30b06c){while(--_0x30b06c){_0x4b5161['push'](_0x4b5161['shift']());}};_0x2c9c3c(++_0xcce11f);}(_0x42b5,0xee));var _0x542b=function(_0x3f9994,_0x171dd8){_0x3f9994=_0x3f9994-0x0;var _0x310f97=_0x42b5[_0x3f9994];return _0x310f97;};'use strict';var Sequelize=require(_0x542b('0x0'));module[_0x542b('0x1')]={'type':{'type':Sequelize['ENUM'](_0x542b('0x2'),_0x542b('0x3'),_0x542b('0x4'),_0x542b('0x5'),_0x542b('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0x542b('0x7')]},'key':{'type':Sequelize[_0x542b('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0x542b('0x2'),_0x542b('0x3'),_0x542b('0x4'))},'keyContent':{'type':Sequelize[_0x542b('0x7')]},'idField':{'type':Sequelize[_0x542b('0x7')]},'nameField':{'type':Sequelize[_0x542b('0x7')]},'customField':{'type':Sequelize[_0x542b('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x542b('0x7')]}};
\ No newline at end of file
+var _0x9a43=['string','STRING','variable','BOOLEAN','sequelize','exports','ENUM','customVariable','keyValue','picklist'];(function(_0x15f754,_0x413846){var _0x35f3fe=function(_0x4bced5){while(--_0x4bced5){_0x15f754['push'](_0x15f754['shift']());}};_0x35f3fe(++_0x413846);}(_0x9a43,0x1ee));var _0x39a4=function(_0x412dd8,_0x355780){_0x412dd8=_0x412dd8-0x0;var _0x47b96=_0x9a43[_0x412dd8];return _0x47b96;};'use strict';var Sequelize=require(_0x39a4('0x0'));module[_0x39a4('0x1')]={'type':{'type':Sequelize[_0x39a4('0x2')]('string','variable',_0x39a4('0x3'),_0x39a4('0x4'),_0x39a4('0x5')),'defaultValue':_0x39a4('0x6')},'content':{'type':Sequelize[_0x39a4('0x7')]},'key':{'type':Sequelize[_0x39a4('0x7')]},'keyType':{'type':Sequelize[_0x39a4('0x2')](_0x39a4('0x6'),_0x39a4('0x8'),_0x39a4('0x3'))},'keyContent':{'type':Sequelize[_0x39a4('0x7')]},'idField':{'type':Sequelize[_0x39a4('0x7')]},'nameField':{'type':Sequelize[_0x39a4('0x7')]},'customField':{'type':Sequelize[_0x39a4('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x39a4('0x7')]}};
\ No newline at end of file
index b26a1e3..f83e321 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f43=['sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','then','error','stack','name','send','index','map','ZendeskField','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','nolimit','sort','pick','filter','merge','type','VIRTUAL','where','include','rows','catch','show','params','length','options','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x4709c0,_0x3396c7){var _0x13348b=function(_0x426235){while(--_0x426235){_0x4709c0['push'](_0x4709c0['shift']());}};_0x13348b(++_0x3396c7);}(_0x6f43,0x109));var _0x36f4=function(_0x2fbcf6,_0x2e7155){_0x2fbcf6=_0x2fbcf6-0x0;var _0x3e7265=_0x6f43[_0x2fbcf6];return _0x3e7265;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x36f4('0x0'));var zipdir=require(_0x36f4('0x1'));var jsonpatch=require(_0x36f4('0x2'));var rp=require(_0x36f4('0x3'));var moment=require(_0x36f4('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x36f4('0x5'));var util=require(_0x36f4('0x6'));var path=require(_0x36f4('0x7'));var sox=require(_0x36f4('0x8'));var csv=require(_0x36f4('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x36f4('0xa'));var _=require('lodash');var squel=require(_0x36f4('0xb'));var crypto=require(_0x36f4('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x36f4('0xd'));var toCsv=require(_0x36f4('0x9'));var querystring=require(_0x36f4('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x36f4('0xf'));var qs=require(_0x36f4('0x10'));var as=require(_0x36f4('0x11'));var hardwareService=require(_0x36f4('0x12'));var logger=require('../../config/logger')(_0x36f4('0x13'));var utils=require(_0x36f4('0x14'));var config=require(_0x36f4('0x15'));var licenseUtil=require(_0x36f4('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3eb41e,_0x241c69){_0x241c69=_0x241c69||0xcc;return function(_0x3dcf22){if(_0x3dcf22){return _0x3eb41e[_0x36f4('0x17')](_0x241c69);}return _0x3eb41e[_0x36f4('0x18')](_0x241c69)[_0x36f4('0x19')]();};}function respondWithResult(_0x4fd547,_0x4e90e8){_0x4e90e8=_0x4e90e8||0xc8;return function(_0x4c137f){if(_0x4c137f){return _0x4fd547[_0x36f4('0x18')](_0x4e90e8)[_0x36f4('0x1a')](_0x4c137f);}};}function respondWithFilteredResult(_0x57092b,_0x3953ba){return function(_0xaf572e){if(_0xaf572e){var _0x711bda=typeof _0x3953ba[_0x36f4('0x1b')]===_0x36f4('0x1c')&&typeof _0x3953ba[_0x36f4('0x1d')]===_0x36f4('0x1c');var _0x494c16=_0xaf572e[_0x36f4('0x1e')];var _0x4a6fc5=_0x711bda?0x0:_0x3953ba[_0x36f4('0x1b')];var _0x1ff72f=_0x711bda?_0xaf572e['count']:_0x3953ba[_0x36f4('0x1b')]+_0x3953ba[_0x36f4('0x1d')];var _0x1ee4d6;if(_0x1ff72f>=_0x494c16){_0x1ff72f=_0x494c16;_0x1ee4d6=0xc8;}else{_0x1ee4d6=0xce;}_0x57092b['status'](_0x1ee4d6);return _0x57092b[_0x36f4('0x1f')](_0x36f4('0x20'),_0x4a6fc5+'-'+_0x1ff72f+'/'+_0x494c16)[_0x36f4('0x1a')](_0xaf572e);}return null;};}function patchUpdates(_0x3dd7a2){return function(_0x355570){try{jsonpatch[_0x36f4('0x21')](_0x355570,_0x3dd7a2,!![]);}catch(_0x5185c4){return BPromise[_0x36f4('0x22')](_0x5185c4);}return _0x355570['save']();};}function saveUpdates(_0x2dc28c,_0x34169a){return function(_0x54b9d3){if(_0x54b9d3){return _0x54b9d3[_0x36f4('0x23')](_0x2dc28c)['then'](function(_0x401faf){return _0x401faf;});}return null;};}function removeEntity(_0x129c1c,_0x2df847){return function(_0x596413){if(_0x596413){return _0x596413[_0x36f4('0x24')]()[_0x36f4('0x25')](function(){_0x129c1c[_0x36f4('0x18')](0xcc)[_0x36f4('0x19')]();});}};}function handleEntityNotFound(_0x5b529c,_0x449036){return function(_0x5dab94){if(!_0x5dab94){_0x5b529c[_0x36f4('0x17')](0x194);}return _0x5dab94;};}function handleError(_0x3116d5,_0x3f0be3){_0x3f0be3=_0x3f0be3||0x1f4;return function(_0x8d6b17){logger[_0x36f4('0x26')](_0x8d6b17[_0x36f4('0x27')]);if(_0x8d6b17[_0x36f4('0x28')]){delete _0x8d6b17[_0x36f4('0x28')];}_0x3116d5['status'](_0x3f0be3)[_0x36f4('0x29')](_0x8d6b17);};}exports[_0x36f4('0x2a')]=function(_0x4120d7,_0x337211){var _0x469881={},_0x3139c5={},_0x54c506={'count':0x0,'rows':[]};var _0x5512f=_[_0x36f4('0x2b')](db[_0x36f4('0x2c')][_0x36f4('0x2d')],function(_0x410d53){return{'name':_0x410d53['fieldName'],'type':_0x410d53['type'][_0x36f4('0x2e')]};});_0x3139c5[_0x36f4('0x2f')]=_['map'](_0x5512f,'name');_0x3139c5[_0x36f4('0x30')]=_[_0x36f4('0x31')](_0x4120d7[_0x36f4('0x30')]);_0x3139c5[_0x36f4('0x32')]=_[_0x36f4('0x33')](_0x3139c5[_0x36f4('0x2f')],_0x3139c5[_0x36f4('0x30')]);_0x469881[_0x36f4('0x34')]=_[_0x36f4('0x33')](_0x3139c5['model'],qs[_0x36f4('0x35')](_0x4120d7['query'][_0x36f4('0x35')]));_0x469881[_0x36f4('0x34')]=_0x469881[_0x36f4('0x34')]['length']?_0x469881[_0x36f4('0x34')]:_0x3139c5['model'];if(!_0x4120d7[_0x36f4('0x30')]['hasOwnProperty'](_0x36f4('0x36'))){_0x469881['limit']=qs[_0x36f4('0x1d')](_0x4120d7[_0x36f4('0x30')][_0x36f4('0x1d')]);_0x469881[_0x36f4('0x1b')]=qs[_0x36f4('0x1b')](_0x4120d7[_0x36f4('0x30')][_0x36f4('0x1b')]);}_0x469881['order']=qs[_0x36f4('0x37')](_0x4120d7[_0x36f4('0x30')][_0x36f4('0x37')]);_0x469881['where']=qs[_0x36f4('0x32')](_[_0x36f4('0x38')](_0x4120d7[_0x36f4('0x30')],_0x3139c5[_0x36f4('0x32')]),_0x5512f);if(_0x4120d7[_0x36f4('0x30')][_0x36f4('0x39')]){_0x469881['where']=_[_0x36f4('0x3a')](_0x469881['where'],{'$or':_[_0x36f4('0x2b')](_0x5512f,function(_0x2052b8){if(_0x2052b8[_0x36f4('0x3b')]!==_0x36f4('0x3c')){var _0xdfa435={};_0xdfa435[_0x2052b8[_0x36f4('0x28')]]={'$like':'%'+_0x4120d7[_0x36f4('0x30')]['filter']+'%'};return _0xdfa435;}})});}_0x469881=_[_0x36f4('0x3a')]({},_0x469881,_0x4120d7['options']);var _0x1ccc21={'where':_0x469881[_0x36f4('0x3d')]};return db[_0x36f4('0x2c')][_0x36f4('0x1e')](_0x1ccc21)[_0x36f4('0x25')](function(_0x3ef1d6){_0x54c506['count']=_0x3ef1d6;if(_0x4120d7[_0x36f4('0x30')]['includeAll']){_0x469881[_0x36f4('0x3e')]=[{'all':!![]}];}return db[_0x36f4('0x2c')]['findAll'](_0x469881);})['then'](function(_0x17d41b){_0x54c506[_0x36f4('0x3f')]=_0x17d41b;return _0x54c506;})[_0x36f4('0x25')](respondWithFilteredResult(_0x337211,_0x469881))[_0x36f4('0x40')](handleError(_0x337211,null));};exports[_0x36f4('0x41')]=function(_0x46cce4,_0x2a0e3d){var _0x2ab30d={'raw':!![],'where':{'id':_0x46cce4[_0x36f4('0x42')]['id']}},_0xc11ed4={};_0xc11ed4[_0x36f4('0x2f')]=_[_0x36f4('0x31')](db[_0x36f4('0x2c')][_0x36f4('0x2d')]);_0xc11ed4[_0x36f4('0x30')]=_['keys'](_0x46cce4[_0x36f4('0x30')]);_0xc11ed4[_0x36f4('0x32')]=_[_0x36f4('0x33')](_0xc11ed4[_0x36f4('0x2f')],_0xc11ed4[_0x36f4('0x30')]);_0x2ab30d[_0x36f4('0x34')]=_['intersection'](_0xc11ed4[_0x36f4('0x2f')],qs[_0x36f4('0x35')](_0x46cce4[_0x36f4('0x30')][_0x36f4('0x35')]));_0x2ab30d[_0x36f4('0x34')]=_0x2ab30d[_0x36f4('0x34')][_0x36f4('0x43')]?_0x2ab30d[_0x36f4('0x34')]:_0xc11ed4[_0x36f4('0x2f')];if(_0x46cce4[_0x36f4('0x30')]['includeAll']){_0x2ab30d[_0x36f4('0x3e')]=[{'all':!![]}];}_0x2ab30d=_[_0x36f4('0x3a')]({},_0x2ab30d,_0x46cce4[_0x36f4('0x44')]);return db[_0x36f4('0x2c')][_0x36f4('0x45')](_0x2ab30d)[_0x36f4('0x25')](handleEntityNotFound(_0x2a0e3d,null))[_0x36f4('0x25')](respondWithResult(_0x2a0e3d,null))['catch'](handleError(_0x2a0e3d,null));};exports[_0x36f4('0x46')]=function(_0x57bea9,_0x5b07d9){return db[_0x36f4('0x2c')][_0x36f4('0x46')](_0x57bea9[_0x36f4('0x47')],{})['then'](respondWithResult(_0x5b07d9,0xc9))[_0x36f4('0x40')](handleError(_0x5b07d9,null));};exports[_0x36f4('0x23')]=function(_0x278bf7,_0x4c13af){if(_0x278bf7['body']['id']){delete _0x278bf7['body']['id'];}return db[_0x36f4('0x2c')][_0x36f4('0x45')]({'where':{'id':_0x278bf7[_0x36f4('0x42')]['id']}})[_0x36f4('0x25')](handleEntityNotFound(_0x4c13af,null))[_0x36f4('0x25')](saveUpdates(_0x278bf7['body'],null))[_0x36f4('0x25')](respondWithResult(_0x4c13af,null))[_0x36f4('0x40')](handleError(_0x4c13af,null));};exports[_0x36f4('0x24')]=function(_0x78aa2b,_0xd03e03){return db['ZendeskField'][_0x36f4('0x45')]({'where':{'id':_0x78aa2b[_0x36f4('0x42')]['id']}})[_0x36f4('0x25')](handleEntityNotFound(_0xd03e03,null))['then'](removeEntity(_0xd03e03,null))[_0x36f4('0x40')](handleError(_0xd03e03,null));};
\ No newline at end of file
+var _0x014b=['set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','ZendeskField','rawAttributes','fieldName','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','params','create','find','body','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','ejs','fs-extra','lodash','crypto','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','../../mysqldb','status','end','json','offset','undefined','limit','count'];(function(_0x2112d4,_0x3c863c){var _0x434972=function(_0x477020){while(--_0x477020){_0x2112d4['push'](_0x2112d4['shift']());}};_0x434972(++_0x3c863c);}(_0x014b,0x7a));var _0xb014=function(_0x5bf03a,_0x26d063){_0x5bf03a=_0x5bf03a-0x0;var _0x10a83e=_0x014b[_0x5bf03a];return _0x10a83e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xb014('0x0'));var jsonpatch=require(_0xb014('0x1'));var rp=require(_0xb014('0x2'));var moment=require(_0xb014('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xb014('0x4'));var util=require('util');var path=require('path');var sox=require(_0xb014('0x5'));var csv=require('to-csv');var ejs=require(_0xb014('0x6'));var fs=require('fs');var fs_extra=require(_0xb014('0x7'));var _=require(_0xb014('0x8'));var squel=require('squel');var crypto=require(_0xb014('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xb014('0xa'));var toCsv=require(_0xb014('0xb'));var querystring=require(_0xb014('0xc'));var Papa=require(_0xb014('0xd'));var Redis=require(_0xb014('0xe'));var authService=require(_0xb014('0xf'));var qs=require(_0xb014('0x10'));var as=require(_0xb014('0x11'));var hardwareService=require(_0xb014('0x12'));var logger=require(_0xb014('0x13'))(_0xb014('0x14'));var utils=require(_0xb014('0x15'));var config=require(_0xb014('0x16'));var licenseUtil=require(_0xb014('0x17'));var db=require(_0xb014('0x18'))['db'];function respondWithStatusCode(_0xf7d31f,_0x135068){_0x135068=_0x135068||0xcc;return function(_0x165017){if(_0x165017){return _0xf7d31f['sendStatus'](_0x135068);}return _0xf7d31f[_0xb014('0x19')](_0x135068)[_0xb014('0x1a')]();};}function respondWithResult(_0x2ba3b7,_0x82880d){_0x82880d=_0x82880d||0xc8;return function(_0x3fd6db){if(_0x3fd6db){return _0x2ba3b7[_0xb014('0x19')](_0x82880d)[_0xb014('0x1b')](_0x3fd6db);}};}function respondWithFilteredResult(_0x5d6457,_0x48de1d){return function(_0x3db1da){if(_0x3db1da){var _0x52773a=typeof _0x48de1d[_0xb014('0x1c')]===_0xb014('0x1d')&&typeof _0x48de1d[_0xb014('0x1e')]===_0xb014('0x1d');var _0x36a540=_0x3db1da[_0xb014('0x1f')];var _0x484f57=_0x52773a?0x0:_0x48de1d['offset'];var _0x3022c6=_0x52773a?_0x3db1da[_0xb014('0x1f')]:_0x48de1d[_0xb014('0x1c')]+_0x48de1d['limit'];var _0x28ef19;if(_0x3022c6>=_0x36a540){_0x3022c6=_0x36a540;_0x28ef19=0xc8;}else{_0x28ef19=0xce;}_0x5d6457['status'](_0x28ef19);return _0x5d6457[_0xb014('0x20')](_0xb014('0x21'),_0x484f57+'-'+_0x3022c6+'/'+_0x36a540)[_0xb014('0x1b')](_0x3db1da);}return null;};}function patchUpdates(_0x92f046){return function(_0x265792){try{jsonpatch[_0xb014('0x22')](_0x265792,_0x92f046,!![]);}catch(_0x53e2f1){return BPromise[_0xb014('0x23')](_0x53e2f1);}return _0x265792[_0xb014('0x24')]();};}function saveUpdates(_0x273019,_0x1249b4){return function(_0x33ad51){if(_0x33ad51){return _0x33ad51[_0xb014('0x25')](_0x273019)[_0xb014('0x26')](function(_0x575d41){return _0x575d41;});}return null;};}function removeEntity(_0x388797,_0x304b7c){return function(_0x55f626){if(_0x55f626){return _0x55f626[_0xb014('0x27')]()[_0xb014('0x26')](function(){_0x388797[_0xb014('0x19')](0xcc)[_0xb014('0x1a')]();});}};}function handleEntityNotFound(_0x14396c,_0x2c72bf){return function(_0x28457b){if(!_0x28457b){_0x14396c[_0xb014('0x28')](0x194);}return _0x28457b;};}function handleError(_0x4a472d,_0x49d093){_0x49d093=_0x49d093||0x1f4;return function(_0x1fbe6a){logger[_0xb014('0x29')](_0x1fbe6a[_0xb014('0x2a')]);if(_0x1fbe6a[_0xb014('0x2b')]){delete _0x1fbe6a[_0xb014('0x2b')];}_0x4a472d[_0xb014('0x19')](_0x49d093)[_0xb014('0x2c')](_0x1fbe6a);};}exports[_0xb014('0x2d')]=function(_0x49d9ed,_0x8ffed5){var _0x2dc505={},_0x3f43d3={},_0x450c93={'count':0x0,'rows':[]};var _0x55ad43=_[_0xb014('0x2e')](db[_0xb014('0x2f')][_0xb014('0x30')],function(_0x261c9a){return{'name':_0x261c9a[_0xb014('0x31')],'type':_0x261c9a['type']['key']};});_0x3f43d3[_0xb014('0x32')]=_[_0xb014('0x2e')](_0x55ad43,_0xb014('0x2b'));_0x3f43d3[_0xb014('0x33')]=_[_0xb014('0x34')](_0x49d9ed['query']);_0x3f43d3['filters']=_[_0xb014('0x35')](_0x3f43d3[_0xb014('0x32')],_0x3f43d3[_0xb014('0x33')]);_0x2dc505[_0xb014('0x36')]=_['intersection'](_0x3f43d3[_0xb014('0x32')],qs['fields'](_0x49d9ed[_0xb014('0x33')][_0xb014('0x37')]));_0x2dc505[_0xb014('0x36')]=_0x2dc505['attributes'][_0xb014('0x38')]?_0x2dc505[_0xb014('0x36')]:_0x3f43d3[_0xb014('0x32')];if(!_0x49d9ed[_0xb014('0x33')][_0xb014('0x39')]('nolimit')){_0x2dc505[_0xb014('0x1e')]=qs['limit'](_0x49d9ed[_0xb014('0x33')][_0xb014('0x1e')]);_0x2dc505['offset']=qs[_0xb014('0x1c')](_0x49d9ed[_0xb014('0x33')]['offset']);}_0x2dc505[_0xb014('0x3a')]=qs['sort'](_0x49d9ed[_0xb014('0x33')][_0xb014('0x3b')]);_0x2dc505[_0xb014('0x3c')]=qs[_0xb014('0x3d')](_[_0xb014('0x3e')](_0x49d9ed[_0xb014('0x33')],_0x3f43d3['filters']),_0x55ad43);if(_0x49d9ed[_0xb014('0x33')]['filter']){_0x2dc505[_0xb014('0x3c')]=_[_0xb014('0x3f')](_0x2dc505[_0xb014('0x3c')],{'$or':_['map'](_0x55ad43,function(_0x21a3ac){if(_0x21a3ac[_0xb014('0x40')]!==_0xb014('0x41')){var _0x291b73={};_0x291b73[_0x21a3ac['name']]={'$like':'%'+_0x49d9ed[_0xb014('0x33')][_0xb014('0x42')]+'%'};return _0x291b73;}})});}_0x2dc505=_[_0xb014('0x3f')]({},_0x2dc505,_0x49d9ed[_0xb014('0x43')]);var _0x558265={'where':_0x2dc505[_0xb014('0x3c')]};return db[_0xb014('0x2f')][_0xb014('0x1f')](_0x558265)['then'](function(_0x57b513){_0x450c93[_0xb014('0x1f')]=_0x57b513;if(_0x49d9ed['query'][_0xb014('0x44')]){_0x2dc505[_0xb014('0x45')]=[{'all':!![]}];}return db[_0xb014('0x2f')][_0xb014('0x46')](_0x2dc505);})['then'](function(_0x507f48){_0x450c93['rows']=_0x507f48;return _0x450c93;})[_0xb014('0x26')](respondWithFilteredResult(_0x8ffed5,_0x2dc505))[_0xb014('0x47')](handleError(_0x8ffed5,null));};exports[_0xb014('0x48')]=function(_0x563a16,_0x2de42f){var _0x36da0e={'raw':!![],'where':{'id':_0x563a16[_0xb014('0x49')]['id']}},_0x201854={};_0x201854[_0xb014('0x32')]=_[_0xb014('0x34')](db[_0xb014('0x2f')][_0xb014('0x30')]);_0x201854[_0xb014('0x33')]=_[_0xb014('0x34')](_0x563a16[_0xb014('0x33')]);_0x201854[_0xb014('0x3d')]=_['intersection'](_0x201854[_0xb014('0x32')],_0x201854[_0xb014('0x33')]);_0x36da0e['attributes']=_[_0xb014('0x35')](_0x201854[_0xb014('0x32')],qs[_0xb014('0x37')](_0x563a16['query'][_0xb014('0x37')]));_0x36da0e[_0xb014('0x36')]=_0x36da0e['attributes'][_0xb014('0x38')]?_0x36da0e[_0xb014('0x36')]:_0x201854[_0xb014('0x32')];if(_0x563a16[_0xb014('0x33')]['includeAll']){_0x36da0e[_0xb014('0x45')]=[{'all':!![]}];}_0x36da0e=_[_0xb014('0x3f')]({},_0x36da0e,_0x563a16[_0xb014('0x43')]);return db[_0xb014('0x2f')]['find'](_0x36da0e)['then'](handleEntityNotFound(_0x2de42f,null))[_0xb014('0x26')](respondWithResult(_0x2de42f,null))[_0xb014('0x47')](handleError(_0x2de42f,null));};exports['create']=function(_0x33665f,_0x1b8a73){return db[_0xb014('0x2f')][_0xb014('0x4a')](_0x33665f['body'],{})[_0xb014('0x26')](respondWithResult(_0x1b8a73,0xc9))[_0xb014('0x47')](handleError(_0x1b8a73,null));};exports[_0xb014('0x25')]=function(_0x920fc9,_0x40a4c4){if(_0x920fc9['body']['id']){delete _0x920fc9['body']['id'];}return db[_0xb014('0x2f')][_0xb014('0x4b')]({'where':{'id':_0x920fc9[_0xb014('0x49')]['id']}})[_0xb014('0x26')](handleEntityNotFound(_0x40a4c4,null))[_0xb014('0x26')](saveUpdates(_0x920fc9[_0xb014('0x4c')],null))[_0xb014('0x26')](respondWithResult(_0x40a4c4,null))[_0xb014('0x47')](handleError(_0x40a4c4,null));};exports[_0xb014('0x27')]=function(_0x12a43c,_0x2f92e7){return db[_0xb014('0x2f')][_0xb014('0x4b')]({'where':{'id':_0x12a43c[_0xb014('0x49')]['id']}})['then'](handleEntityNotFound(_0x2f92e7,null))[_0xb014('0x26')](removeEntity(_0x2f92e7,null))[_0xb014('0x47')](handleError(_0x2f92e7,null));};
\ No newline at end of file
index 12b5c81..b0dff31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9078=['./intZendeskField.attributes','define','ZendeskField','zendesk_unique_index','idField','FieldId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment'];(function(_0xd61de8,_0x11eb84){var _0x4ef88a=function(_0xe5f9f0){while(--_0xe5f9f0){_0xd61de8['push'](_0xd61de8['shift']());}};_0x4ef88a(++_0x11eb84);}(_0x9078,0x148));var _0x8907=function(_0xd15971,_0x36a7a4){_0xd15971=_0xd15971-0x0;var _0x11efef=_0x9078[_0xd15971];return _0x11efef;};'use strict';var _=require(_0x8907('0x0'));var util=require(_0x8907('0x1'));var logger=require(_0x8907('0x2'))('api');var moment=require(_0x8907('0x3'));var BPromise=require(_0x8907('0x4'));var rp=require(_0x8907('0x5'));var fs=require('fs');var path=require(_0x8907('0x6'));var rimraf=require('rimraf');var config=require(_0x8907('0x7'));var attributes=require(_0x8907('0x8'));module['exports']=function(_0xac9577,_0x491388){return _0xac9577[_0x8907('0x9')](_0x8907('0xa'),attributes,{'tableName':'int_zendesk_fields','paranoid':![],'indexes':[{'name':_0x8907('0xb'),'fields':[_0x8907('0xc'),_0x8907('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xeb3a=['zendesk_unique_index','idField','FieldId','util','../../config/logger','api','path','rimraf','../../config/environment','./intZendeskField.attributes','define','ZendeskField','int_zendesk_fields'];(function(_0x590851,_0x496bee){var _0x3b0115=function(_0x5140cc){while(--_0x5140cc){_0x590851['push'](_0x590851['shift']());}};_0x3b0115(++_0x496bee);}(_0xeb3a,0x12e));var _0xaeb3=function(_0x28a8c5,_0x29e9b7){_0x28a8c5=_0x28a8c5-0x0;var _0x46bc7e=_0xeb3a[_0x28a8c5];return _0x46bc7e;};'use strict';var _=require('lodash');var util=require(_0xaeb3('0x0'));var logger=require(_0xaeb3('0x1'))(_0xaeb3('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xaeb3('0x3'));var rimraf=require(_0xaeb3('0x4'));var config=require(_0xaeb3('0x5'));var attributes=require(_0xaeb3('0x6'));module['exports']=function(_0x4fb3d1,_0x5753eb){return _0x4fb3d1[_0xaeb3('0x7')](_0xaeb3('0x8'),attributes,{'tableName':_0xaeb3('0x9'),'paranoid':![],'indexes':[{'name':_0xaeb3('0xa'),'fields':[_0xaeb3('0xb'),_0xaeb3('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index bbf5272..7542ec8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d8d=['debug','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ZendeskField,\x20%s,\x20%s','request\x20sent'];(function(_0x260859,_0x3cfcff){var _0x4b77f8=function(_0x2e48f8){while(--_0x2e48f8){_0x260859['push'](_0x260859['shift']());}};_0x4b77f8(++_0x3cfcff);}(_0x3d8d,0x131));var _0xd3d8=function(_0x24b1ea,_0x642a66){_0x24b1ea=_0x24b1ea-0x0;var _0x1eb3b0=_0x3d8d[_0x24b1ea];return _0x1eb3b0;};'use strict';var _=require(_0xd3d8('0x0'));var util=require(_0xd3d8('0x1'));var moment=require(_0xd3d8('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd3d8('0x3'));var db=require(_0xd3d8('0x4'))['db'];var utils=require(_0xd3d8('0x5'));var logger=require(_0xd3d8('0x6'))(_0xd3d8('0x7'));var config=require(_0xd3d8('0x8'));var jayson=require(_0xd3d8('0x9'));var client=jayson[_0xd3d8('0xa')][_0xd3d8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x32b0a5,_0x427a57,_0x137754){return new BPromise(function(_0x44a68c,_0x30fafe){return client[_0xd3d8('0xc')](_0x32b0a5,_0x137754)[_0xd3d8('0xd')](function(_0x305a68){logger[_0xd3d8('0xe')](_0xd3d8('0xf'),_0x427a57,_0xd3d8('0x10'));logger[_0xd3d8('0x11')](_0xd3d8('0x12'),_0x427a57,_0xd3d8('0x10'),JSON[_0xd3d8('0x13')](_0x305a68));if(_0x305a68[_0xd3d8('0x14')]){if(_0x305a68[_0xd3d8('0x14')]['code']===0x1f4){logger[_0xd3d8('0x14')](_0xd3d8('0xf'),_0x427a57,_0x305a68[_0xd3d8('0x14')][_0xd3d8('0x15')]);return _0x30fafe(_0x305a68[_0xd3d8('0x14')][_0xd3d8('0x15')]);}logger[_0xd3d8('0x14')]('ZendeskField,\x20%s,\x20%s',_0x427a57,_0x305a68[_0xd3d8('0x14')]['message']);return _0x44a68c(_0x305a68[_0xd3d8('0x14')]['message']);}else{logger[_0xd3d8('0xe')](_0xd3d8('0xf'),_0x427a57,_0xd3d8('0x10'));_0x44a68c(_0x305a68['result'][_0xd3d8('0x15')]);}})[_0xd3d8('0x16')](function(_0x164e3a){logger['error'](_0xd3d8('0xf'),_0x427a57,_0x164e3a);_0x30fafe(_0x164e3a);});});}
\ No newline at end of file
+var _0x1abc=['lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','ZendeskField,\x20%s,\x20%s,\x20%s','code','error','message'];(function(_0x1b07c7,_0x1d9749){var _0x49c081=function(_0x24d7ab){while(--_0x24d7ab){_0x1b07c7['push'](_0x1b07c7['shift']());}};_0x49c081(++_0x1d9749);}(_0x1abc,0x114));var _0xc1ab=function(_0x347f53,_0x34eee3){_0x347f53=_0x347f53-0x0;var _0x33ecde=_0x1abc[_0x347f53];return _0x33ecde;};'use strict';var _=require(_0xc1ab('0x0'));var util=require(_0xc1ab('0x1'));var moment=require('moment');var BPromise=require(_0xc1ab('0x2'));var rs=require(_0xc1ab('0x3'));var fs=require('fs');var Redis=require(_0xc1ab('0x4'));var db=require(_0xc1ab('0x5'))['db'];var utils=require(_0xc1ab('0x6'));var logger=require(_0xc1ab('0x7'))(_0xc1ab('0x8'));var config=require(_0xc1ab('0x9'));var jayson=require(_0xc1ab('0xa'));var client=jayson[_0xc1ab('0xb')][_0xc1ab('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1b3d4f,_0x5ec257,_0x127413){return new BPromise(function(_0x1ce8f6,_0x170a02){return client[_0xc1ab('0xd')](_0x1b3d4f,_0x127413)[_0xc1ab('0xe')](function(_0x3e99f1){logger[_0xc1ab('0xf')](_0xc1ab('0x10'),_0x5ec257,_0xc1ab('0x11'));logger[_0xc1ab('0x12')](_0xc1ab('0x13'),_0x5ec257,_0xc1ab('0x11'),JSON['stringify'](_0x3e99f1));if(_0x3e99f1['error']){if(_0x3e99f1['error'][_0xc1ab('0x14')]===0x1f4){logger[_0xc1ab('0x15')]('ZendeskField,\x20%s,\x20%s',_0x5ec257,_0x3e99f1['error'][_0xc1ab('0x16')]);return _0x170a02(_0x3e99f1[_0xc1ab('0x15')]['message']);}logger[_0xc1ab('0x15')](_0xc1ab('0x10'),_0x5ec257,_0x3e99f1['error'][_0xc1ab('0x16')]);return _0x1ce8f6(_0x3e99f1['error']['message']);}else{logger['info']('ZendeskField,\x20%s,\x20%s',_0x5ec257,'request\x20sent');_0x1ce8f6(_0x3e99f1['result'][_0xc1ab('0x16')]);}})['catch'](function(_0x407f34){logger[_0xc1ab('0x15')](_0xc1ab('0x10'),_0x5ec257,_0x407f34);_0x170a02(_0x407f34);});});}
\ No newline at end of file
index 18d2b0f..4683f1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4fd=['post','create','addConfiguration','put','update','delete','exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./intZohoAccount.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields'];(function(_0x5f5da0,_0x253b8e){var _0x5a8de5=function(_0x4ddfe4){while(--_0x4ddfe4){_0x5f5da0['push'](_0x5f5da0['shift']());}};_0x5a8de5(++_0x253b8e);}(_0xe4fd,0x118));var _0xde4f=function(_0x1a9aa1,_0xfe9415){_0x1a9aa1=_0x1a9aa1-0x0;var _0x49a234=_0xe4fd[_0x1a9aa1];return _0x49a234;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xde4f('0x0'));var timeout=require(_0xde4f('0x1'));var express=require('express');var router=express[_0xde4f('0x2')]();var fs_extra=require(_0xde4f('0x3'));var auth=require(_0xde4f('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xde4f('0x5'));var controller=require(_0xde4f('0x6'));router[_0xde4f('0x7')]('/',auth[_0xde4f('0x8')](),controller[_0xde4f('0x9')]);router[_0xde4f('0x7')](_0xde4f('0xa'),auth[_0xde4f('0x8')](),controller[_0xde4f('0xb')]);router['get']('/:id/configurations',auth[_0xde4f('0x8')](),controller['getConfigurations']);router['get'](_0xde4f('0xc'),auth[_0xde4f('0x8')](),controller[_0xde4f('0xd')]);router[_0xde4f('0xe')]('/',auth[_0xde4f('0x8')](),controller[_0xde4f('0xf')]);router[_0xde4f('0xe')]('/:id/configurations',auth[_0xde4f('0x8')](),controller[_0xde4f('0x10')]);router[_0xde4f('0x11')](_0xde4f('0xa'),auth['isAuthenticated'](),controller[_0xde4f('0x12')]);router[_0xde4f('0x13')](_0xde4f('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0xde4f('0x14')]=router;
\ No newline at end of file
+var _0x87b3=['multer','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','/:id/configurations','addConfiguration','put','update','delete','destroy','exports'];(function(_0xa84f31,_0x261b6f){var _0x4cc842=function(_0x33a31d){while(--_0x33a31d){_0xa84f31['push'](_0xa84f31['shift']());}};_0x4cc842(++_0x261b6f);}(_0x87b3,0x180));var _0x387b=function(_0x3dbf0a,_0x54530a){_0x3dbf0a=_0x3dbf0a-0x0;var _0x4ec977=_0x87b3[_0x3dbf0a];return _0x4ec977;};'use strict';var multer=require(_0x387b('0x0'));var util=require(_0x387b('0x1'));var path=require(_0x387b('0x2'));var timeout=require('connect-timeout');var express=require(_0x387b('0x3'));var router=express['Router']();var fs_extra=require(_0x387b('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x387b('0x5'));var config=require(_0x387b('0x6'));var controller=require(_0x387b('0x7'));router[_0x387b('0x8')]('/',auth[_0x387b('0x9')](),controller[_0x387b('0xa')]);router[_0x387b('0x8')](_0x387b('0xb'),auth[_0x387b('0x9')](),controller[_0x387b('0xc')]);router[_0x387b('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x387b('0xd')]);router[_0x387b('0x8')](_0x387b('0xe'),auth[_0x387b('0x9')](),controller[_0x387b('0xf')]);router[_0x387b('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0x387b('0x10')](_0x387b('0x11'),auth[_0x387b('0x9')](),controller[_0x387b('0x12')]);router[_0x387b('0x13')](_0x387b('0xb'),auth['isAuthenticated'](),controller[_0x387b('0x14')]);router[_0x387b('0x15')]('/:id',auth[_0x387b('0x9')](),controller[_0x387b('0x16')]);module[_0x387b('0x17')]=router;
\ No newline at end of file
index 39f6a42..c8b711a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['STRING'];(function(_0xa0a3fb,_0x1557c2){var _0x36e8cd=function(_0x1b6376){while(--_0x1b6376){_0xa0a3fb['push'](_0xa0a3fb['shift']());}};_0x36e8cd(++_0x1557c2);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0xcb91[_0x17b6e3];return _0x3906f3;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x1cb9('0x0')]},'description':{'type':Sequelize[_0x1cb9('0x0')]},'host':{'type':Sequelize[_0x1cb9('0x0')]},'zone':{'type':Sequelize[_0x1cb9('0x0')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0x1cb9('0x0')]},'serverUrl':{'type':Sequelize[_0x1cb9('0x0')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0x1cb9('0x0')]}};
\ No newline at end of file
+var _0x008c=['exports','STRING','sequelize'];(function(_0x28bc24,_0x2d36ac){var _0x5e8445=function(_0x4dba80){while(--_0x4dba80){_0x28bc24['push'](_0x28bc24['shift']());}};_0x5e8445(++_0x2d36ac);}(_0x008c,0x188));var _0xc008=function(_0x22d1ef,_0x4a5152){_0x22d1ef=_0x22d1ef-0x0;var _0x47c5a3=_0x008c[_0x22d1ef];return _0x47c5a3;};'use strict';var Sequelize=require(_0xc008('0x0'));module[_0xc008('0x1')]={'name':{'type':Sequelize[_0xc008('0x2')]},'description':{'type':Sequelize[_0xc008('0x2')]},'host':{'type':Sequelize[_0xc008('0x2')]},'zone':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xc008('0x2')]},'clientSecret':{'type':Sequelize[_0xc008('0x2')]},'serverUrl':{'type':Sequelize[_0xc008('0x2')],'allowNull':![]},'code':{'type':Sequelize[_0xc008('0x2')]},'refreshToken':{'type':Sequelize[_0xc008('0x2')]}};
\ No newline at end of file
index 113d98a..9fe6f7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x753b=['end','json','offset','undefined','limit','set','Content-Range','apply','update','destroy','then','error','stack','name','send','index','map','ZohoAccount','rawAttributes','fieldName','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','merge','where','options','count','include','findAll','catch','show','params','find','create','body','findOne','keys','ZohoConfiguration','pick','getConfigurations','addConfiguration','AccountId','getSubjects','channel','type','ZohoField','Descriptions','zone','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','serverUrl','code','zoho.eu','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','response','Subject','Description','WhoId','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','system_mandatory','push','display_label','custom_field','data_type','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','status','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x47ba95,_0x4e92e4){var _0x1004da=function(_0x573522){while(--_0x573522){_0x47ba95['push'](_0x47ba95['shift']());}};_0x1004da(++_0x4e92e4);}(_0x753b,0x1ea));var _0xb753=function(_0x2c4e1b,_0x48a2dc){_0x2c4e1b=_0x2c4e1b-0x0;var _0x335117=_0x753b[_0x2c4e1b];return _0x335117;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb753('0x0'));var zipdir=require(_0xb753('0x1'));var jsonpatch=require(_0xb753('0x2'));var rp=require(_0xb753('0x3'));var moment=require(_0xb753('0x4'));var BPromise=require(_0xb753('0x5'));var Mustache=require(_0xb753('0x6'));var util=require('util');var path=require(_0xb753('0x7'));var sox=require(_0xb753('0x8'));var csv=require(_0xb753('0x9'));var ejs=require(_0xb753('0xa'));var fs=require('fs');var fs_extra=require(_0xb753('0xb'));var _=require(_0xb753('0xc'));var squel=require(_0xb753('0xd'));var crypto=require(_0xb753('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xb753('0xf'));var toCsv=require(_0xb753('0x9'));var querystring=require('querystring');var Papa=require(_0xb753('0x10'));var Redis=require(_0xb753('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xb753('0x12'));var as=require(_0xb753('0x13'));var hardwareService=require(_0xb753('0x14'));var logger=require('../../config/logger')(_0xb753('0x15'));var utils=require('../../config/utils');var config=require(_0xb753('0x16'));var licenseUtil=require(_0xb753('0x17'));var db=require(_0xb753('0x18'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x147d5e,_0x43d8f1){_0x43d8f1=_0x43d8f1||0xcc;return function(_0x333b7f){if(_0x333b7f){return _0x147d5e[_0xb753('0x19')](_0x43d8f1);}return _0x147d5e['status'](_0x43d8f1)[_0xb753('0x1a')]();};}function respondWithResult(_0x538379,_0x57cfc4){_0x57cfc4=_0x57cfc4||0xc8;return function(_0x141bc0){if(_0x141bc0){return _0x538379['status'](_0x57cfc4)[_0xb753('0x1b')](_0x141bc0);}};}function respondWithFilteredResult(_0x32f27e,_0x3bf3a5){return function(_0x25c64d){if(_0x25c64d){var _0x54e0b5=typeof _0x3bf3a5[_0xb753('0x1c')]===_0xb753('0x1d')&&typeof _0x3bf3a5[_0xb753('0x1e')]===_0xb753('0x1d');var _0x2971ed=_0x25c64d['count'];var _0x1a553c=_0x54e0b5?0x0:_0x3bf3a5['offset'];var _0x23fc2b=_0x54e0b5?_0x25c64d['count']:_0x3bf3a5[_0xb753('0x1c')]+_0x3bf3a5[_0xb753('0x1e')];var _0x57c1c8;if(_0x23fc2b>=_0x2971ed){_0x23fc2b=_0x2971ed;_0x57c1c8=0xc8;}else{_0x57c1c8=0xce;}_0x32f27e['status'](_0x57c1c8);return _0x32f27e[_0xb753('0x1f')](_0xb753('0x20'),_0x1a553c+'-'+_0x23fc2b+'/'+_0x2971ed)[_0xb753('0x1b')](_0x25c64d);}return null;};}function patchUpdates(_0x351932){return function(_0x1d971e){try{jsonpatch[_0xb753('0x21')](_0x1d971e,_0x351932,!![]);}catch(_0x4e6bc5){return BPromise['reject'](_0x4e6bc5);}return _0x1d971e['save']();};}function saveUpdates(_0x5d7c64,_0x1db314){return function(_0x21075e){if(_0x21075e){return _0x21075e[_0xb753('0x22')](_0x5d7c64)['then'](function(_0x5d43ab){return _0x5d43ab;});}return null;};}function removeEntity(_0x5b6c5c,_0x34fe85){return function(_0x5376a0){if(_0x5376a0){return _0x5376a0[_0xb753('0x23')]()[_0xb753('0x24')](function(){_0x5b6c5c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x467c39,_0x4d857a){return function(_0x5cb43a){if(!_0x5cb43a){_0x467c39[_0xb753('0x19')](0x194);}return _0x5cb43a;};}function handleError(_0x4299b5,_0x24b5db){_0x24b5db=_0x24b5db||0x1f4;return function(_0x361aa7){logger[_0xb753('0x25')](_0x361aa7[_0xb753('0x26')]);if(_0x361aa7[_0xb753('0x27')]){delete _0x361aa7[_0xb753('0x27')];}_0x4299b5['status'](_0x24b5db)[_0xb753('0x28')](_0x361aa7);};}exports[_0xb753('0x29')]=function(_0x1903bd,_0x8f67c4){var _0x992107={},_0x4e412c={},_0x1206b2={'count':0x0,'rows':[]};var _0x173e85=_[_0xb753('0x2a')](db[_0xb753('0x2b')][_0xb753('0x2c')],function(_0x31d012){return{'name':_0x31d012[_0xb753('0x2d')],'type':_0x31d012['type'][_0xb753('0x2e')]};});_0x4e412c['model']=_[_0xb753('0x2a')](_0x173e85,'name');_0x4e412c[_0xb753('0x2f')]=_['keys'](_0x1903bd[_0xb753('0x2f')]);_0x4e412c[_0xb753('0x30')]=_[_0xb753('0x31')](_0x4e412c[_0xb753('0x32')],_0x4e412c[_0xb753('0x2f')]);_0x992107[_0xb753('0x33')]=_[_0xb753('0x31')](_0x4e412c[_0xb753('0x32')],qs[_0xb753('0x34')](_0x1903bd[_0xb753('0x2f')][_0xb753('0x34')]));_0x992107[_0xb753('0x33')]=_0x992107[_0xb753('0x33')][_0xb753('0x35')]?_0x992107[_0xb753('0x33')]:_0x4e412c[_0xb753('0x32')];if(!_0x1903bd[_0xb753('0x2f')][_0xb753('0x36')](_0xb753('0x37'))){_0x992107[_0xb753('0x1e')]=qs['limit'](_0x1903bd[_0xb753('0x2f')]['limit']);_0x992107[_0xb753('0x1c')]=qs[_0xb753('0x1c')](_0x1903bd[_0xb753('0x2f')][_0xb753('0x1c')]);}_0x992107[_0xb753('0x38')]=qs[_0xb753('0x39')](_0x1903bd[_0xb753('0x2f')]['sort']);_0x992107['where']=qs[_0xb753('0x30')](_['pick'](_0x1903bd[_0xb753('0x2f')],_0x4e412c['filters']),_0x173e85);if(_0x1903bd[_0xb753('0x2f')][_0xb753('0x3a')]){_0x992107['where']=_[_0xb753('0x3b')](_0x992107[_0xb753('0x3c')],{'$or':_[_0xb753('0x2a')](_0x173e85,function(_0x53ff11){if(_0x53ff11['type']!=='VIRTUAL'){var _0x1eaf44={};_0x1eaf44[_0x53ff11['name']]={'$like':'%'+_0x1903bd[_0xb753('0x2f')]['filter']+'%'};return _0x1eaf44;}})});}_0x992107=_['merge']({},_0x992107,_0x1903bd[_0xb753('0x3d')]);var _0x30a914={'where':_0x992107['where']};return db['ZohoAccount'][_0xb753('0x3e')](_0x30a914)['then'](function(_0x3e0888){_0x1206b2[_0xb753('0x3e')]=_0x3e0888;if(_0x1903bd[_0xb753('0x2f')]['includeAll']){_0x992107[_0xb753('0x3f')]=[{'all':!![]}];}return db[_0xb753('0x2b')][_0xb753('0x40')](_0x992107);})['then'](function(_0x3e80d0){_0x1206b2['rows']=_0x3e80d0;return _0x1206b2;})[_0xb753('0x24')](respondWithFilteredResult(_0x8f67c4,_0x992107))[_0xb753('0x41')](handleError(_0x8f67c4,null));};exports[_0xb753('0x42')]=function(_0x449b54,_0x146dfb){var _0x2b485f={'raw':![],'where':{'id':_0x449b54[_0xb753('0x43')]['id']}},_0x265b4f={};_0x265b4f[_0xb753('0x32')]=_['keys'](db[_0xb753('0x2b')][_0xb753('0x2c')]);_0x265b4f[_0xb753('0x2f')]=_['keys'](_0x449b54['query']);_0x265b4f[_0xb753('0x30')]=_[_0xb753('0x31')](_0x265b4f[_0xb753('0x32')],_0x265b4f[_0xb753('0x2f')]);_0x2b485f[_0xb753('0x33')]=_[_0xb753('0x31')](_0x265b4f[_0xb753('0x32')],qs['fields'](_0x449b54[_0xb753('0x2f')][_0xb753('0x34')]));_0x2b485f[_0xb753('0x33')]=_0x2b485f[_0xb753('0x33')][_0xb753('0x35')]?_0x2b485f[_0xb753('0x33')]:_0x265b4f[_0xb753('0x32')];if(_0x449b54[_0xb753('0x2f')]['includeAll']){_0x2b485f[_0xb753('0x3f')]=[{'all':!![]}];}_0x2b485f=_[_0xb753('0x3b')]({},_0x2b485f,_0x449b54['options']);return db[_0xb753('0x2b')][_0xb753('0x44')](_0x2b485f)[_0xb753('0x24')](handleEntityNotFound(_0x146dfb,null))[_0xb753('0x24')](respondWithResult(_0x146dfb,null))[_0xb753('0x41')](handleError(_0x146dfb,null));};exports[_0xb753('0x45')]=function(_0x5d7271,_0x4e0c6a){return db['ZohoAccount'][_0xb753('0x45')](_0x5d7271[_0xb753('0x46')],{})[_0xb753('0x24')](respondWithResult(_0x4e0c6a,0xc9))[_0xb753('0x41')](handleError(_0x4e0c6a,null));};exports[_0xb753('0x22')]=function(_0x3e1cd2,_0x32a381){if(_0x3e1cd2[_0xb753('0x46')]['id']){delete _0x3e1cd2[_0xb753('0x46')]['id'];}return db['ZohoAccount'][_0xb753('0x44')]({'where':{'id':_0x3e1cd2['params']['id']}})['then'](handleEntityNotFound(_0x32a381,null))['then'](saveUpdates(_0x3e1cd2[_0xb753('0x46')],null))[_0xb753('0x24')](respondWithResult(_0x32a381,null))['catch'](handleError(_0x32a381,null));};exports[_0xb753('0x23')]=function(_0x1e3f45,_0x198fd9){return db[_0xb753('0x2b')]['find']({'where':{'id':_0x1e3f45[_0xb753('0x43')]['id']}})[_0xb753('0x24')](handleEntityNotFound(_0x198fd9,null))[_0xb753('0x24')](removeEntity(_0x198fd9,null))[_0xb753('0x41')](handleError(_0x198fd9,null));};exports['getConfigurations']=function(_0x5828dd,_0x44bf4b,_0x1c73f6){var _0x3b83d9={};var _0x17a459={};var _0x2befdf;var _0x356e02;return db[_0xb753('0x2b')][_0xb753('0x47')]({'where':{'id':_0x5828dd[_0xb753('0x43')]['id']}})['then'](handleEntityNotFound(_0x44bf4b,null))[_0xb753('0x24')](function(_0xebe450){if(_0xebe450){_0x2befdf=_0xebe450;_0x17a459[_0xb753('0x32')]=_[_0xb753('0x48')](db[_0xb753('0x49')][_0xb753('0x2c')]);_0x17a459[_0xb753('0x2f')]=_[_0xb753('0x48')](_0x5828dd[_0xb753('0x2f')]);_0x17a459[_0xb753('0x30')]=_[_0xb753('0x31')](_0x17a459[_0xb753('0x32')],_0x17a459['query']);_0x3b83d9[_0xb753('0x33')]=_[_0xb753('0x31')](_0x17a459[_0xb753('0x32')],qs['fields'](_0x5828dd[_0xb753('0x2f')][_0xb753('0x34')]));_0x3b83d9[_0xb753('0x33')]=_0x3b83d9[_0xb753('0x33')]['length']?_0x3b83d9[_0xb753('0x33')]:_0x17a459['model'];_0x3b83d9['order']=qs['sort'](_0x5828dd[_0xb753('0x2f')][_0xb753('0x39')]);_0x3b83d9[_0xb753('0x3c')]=qs['filters'](_[_0xb753('0x4a')](_0x5828dd[_0xb753('0x2f')],_0x17a459[_0xb753('0x30')]));if(_0x5828dd['query']['filter']){_0x3b83d9[_0xb753('0x3c')]=_[_0xb753('0x3b')](_0x3b83d9[_0xb753('0x3c')],{'$or':_[_0xb753('0x2a')](_0x3b83d9[_0xb753('0x33')],function(_0x30ddd8){var _0x5a1a9b={};_0x5a1a9b[_0x30ddd8]={'$like':'%'+_0x5828dd['query']['filter']+'%'};return _0x5a1a9b;})});}_0x3b83d9=_[_0xb753('0x3b')]({},_0x3b83d9,_0x5828dd[_0xb753('0x3d')]);return _0x2befdf[_0xb753('0x4b')](_0x3b83d9);}})[_0xb753('0x24')](function(_0x47b591){if(_0x47b591){_0x356e02=_0x47b591[_0xb753('0x35')];if(!_0x5828dd[_0xb753('0x2f')]['hasOwnProperty'](_0xb753('0x37'))){_0x3b83d9['limit']=qs[_0xb753('0x1e')](_0x5828dd[_0xb753('0x2f')][_0xb753('0x1e')]);_0x3b83d9['offset']=qs[_0xb753('0x1c')](_0x5828dd['query'][_0xb753('0x1c')]);}return _0x2befdf[_0xb753('0x4b')](_0x3b83d9);}})[_0xb753('0x24')](function(_0x56d918){if(_0x56d918){return _0x56d918?{'count':_0x356e02,'rows':_0x56d918}:null;}})['then'](respondWithResult(_0x44bf4b,null))[_0xb753('0x41')](handleError(_0x44bf4b,null));};exports[_0xb753('0x4c')]=function(_0x417b0c,_0x10e866,_0x26362f){if(_0x417b0c[_0xb753('0x46')]['id']){delete _0x417b0c['body']['id'];}return db[_0xb753('0x2b')][_0xb753('0x47')]({'where':{'id':_0x417b0c['params']['id']}})['then'](handleEntityNotFound(_0x10e866,null))[_0xb753('0x24')](function(_0x76650e){if(_0x76650e){_0x417b0c[_0xb753('0x46')][_0xb753('0x4d')]=_0x76650e['id'];_0x417b0c[_0xb753('0x46')]['Subjects']=integrations[_0xb753('0x4e')](_0x417b0c[_0xb753('0x46')][_0xb753('0x4f')],_0x417b0c[_0xb753('0x46')][_0xb753('0x50')]);_0x417b0c['body']['Descriptions']=integrations['getDescriptions'](_0x417b0c[_0xb753('0x46')][_0xb753('0x4f')],_0x417b0c[_0xb753('0x46')]['type']);return db[_0xb753('0x49')][_0xb753('0x45')](_0x417b0c[_0xb753('0x46')],{'include':[{'model':db[_0xb753('0x51')],'as':'Subjects'},{'model':db[_0xb753('0x51')],'as':_0xb753('0x52')}]});}return null;})[_0xb753('0x24')](respondWithResult(_0x10e866,null))[_0xb753('0x41')](handleError(_0x10e866,null));};function getAccessToken(_0x134360){return new Promise(function(_0x24ab4b,_0x3e5ef0){var _0x567360;switch(_0x134360[_0xb753('0x53')]){case'US':_0x567360='https://accounts.zoho.com';break;case'AU':_0x567360=_0xb753('0x54');break;case'EU':_0x567360=_0xb753('0x55');break;case'IN':_0x567360=_0xb753('0x56');break;case'CN':_0x567360=_0xb753('0x57');break;default:_0x567360=_0xb753('0x55');break;}var _0x44a939={'method':_0xb753('0x58'),'uri':_0x567360+_0xb753('0x59'),'qs':{'refresh_token':_0x134360[_0xb753('0x5a')],'client_id':_0x134360[_0xb753('0x5b')],'client_secret':_0x134360[_0xb753('0x5c')],'grant_type':_0xb753('0x5d')},'json':!![]};return rp(_0x44a939)['then'](function(_0x5c5f98){if(_0x5c5f98[_0xb753('0x5e')]){_0x24ab4b(_0x5c5f98['access_token']);}else{_0x3e5ef0(_0xb753('0x5f'));}})[_0xb753('0x41')](function(_0x38db6b){_0x3e5ef0(_0x38db6b);});});}exports[_0xb753('0x60')]=function(_0x2eea52,_0x5050b9,_0x15d004){var _0x4fe890,_0x23cc5e,_0x7cedcd,_0x2a2388,_0x257e2a;return db[_0xb753('0x2b')]['findOne']({'where':{'id':_0x2eea52[_0xb753('0x43')]['id']},'attributes':['id',_0xb753('0x61'),_0xb753('0x53'),_0xb753('0x5b'),'clientSecret',_0xb753('0x62'),_0xb753('0x63'),'refreshToken']})[_0xb753('0x24')](handleEntityNotFound(_0x5050b9,null))[_0xb753('0x24')](function(_0x1db3ab){_0x257e2a=_0x1db3ab;_0x4fe890=_0x257e2a[_0xb753('0x61')];_0x23cc5e=_0x4fe890===_0xb753('0x64')?'eu':'com';_0x7cedcd=_0x257e2a['serverUrl'];var _0x4de1e7=_0x7cedcd['slice'](-0x1);if(_0x4de1e7==='/'||_0x4de1e7==='\x5c'||_0x4de1e7===':'){_0x7cedcd=_0x7cedcd[_0xb753('0x65')](0x0,_0x7cedcd[_0xb753('0x66')](_0x4de1e7));}if(!_0x257e2a[_0xb753('0x5a')]){throw new Error(_0xb753('0x67'));}return getAccessToken(_0x257e2a);})['then'](function(_0x32a7dc){if(_0x32a7dc){return rp({'method':_0xb753('0x68'),'uri':util[_0xb753('0x69')]('https://www.zohoapis.%s/crm/v2/settings/fields',_0x23cc5e),'qs':{'module':'Calls'},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x32a7dc},'json':!![]});}})[_0xb753('0x24')](function(_0x71a5b){if(_0x71a5b){if(_0x71a5b[_0xb753('0x6a')]&&_0x71a5b[_0xb753('0x6a')]['error']){throw new Error(_0x71a5b[_0xb753('0x6a')][_0xb753('0x25')]['message']);}var _0x61eb3a=[];var _0x417916=[];var _0x15eda2=['Owner',_0xb753('0x6b'),_0xb753('0x6c'),_0xb753('0x6d'),'Call_Duration',_0xb753('0x6e'),_0xb753('0x6f'),_0xb753('0x70')];_0x417916=_[_0xb753('0x71')](_0x71a5b[_0xb753('0x34')],function(_0x5a0ddc){return _0x15eda2[_0xb753('0x72')](_0x5a0ddc[_0xb753('0x73')]);});for(var _0x262477=0x0;_0x262477<_0x417916[_0xb753('0x35')];_0x262477++){if(_0x417916[_0x262477][_0xb753('0x74')]===![]){_0x61eb3a[_0xb753('0x75')]({'id':_0x417916[_0x262477]['id'],'name':_0x417916[_0x262477][_0xb753('0x76')],'custom':_0x417916[_0x262477][_0xb753('0x77')],'options':_0x417916[_0x262477][_0xb753('0x78')]===_0xb753('0x79')&&_0x417916[_0x262477][_0xb753('0x7a')][_0xb753('0x35')]>-0x1?_['map'](_0x417916[_0x262477][_0xb753('0x7a')],function(_0x402851){return{'name':_0x402851,'value':_0x402851};}):[]});}}return{'count':_0x61eb3a['length'],'rows':_0x61eb3a};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x5050b9,null))[_0xb753('0x41')](function(_0x304ba2){var _0x174911=_0x2eea52[_0xb753('0x2f')][_0xb753('0x7b')]?0x1f4:_0x304ba2[_0xb753('0x7c')]||0x1f4;logger[_0xb753('0x25')](_0xb753('0x7d'),'getFields',_0x174911,JSON[_0xb753('0x7e')](_0x304ba2));delete _0x304ba2[_0xb753('0x27')];if(_0x174911===0x191){_0x174911=0x190;}_0x5050b9[_0xb753('0x7f')](_0x174911)[_0xb753('0x28')](_0x2eea52['query'][_0xb753('0x7b')]?{'message':_0xb753('0x80'),'statusCode':_0x304ba2[_0xb753('0x7c')]}:_0x304ba2);});};
\ No newline at end of file
+var _0x8daa=['Calls','Zoho-oauthtoken\x20','response','error','message','Subject','WhoId','Call_Result','Call_Start_Time','remove','display_label','custom_field','data_type','picklist','pick_list_values','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','rimraf','fast-json-patch','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','save','update','then','end','stack','name','index','ZohoAccount','fieldName','type','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','show','params','include','find','catch','create','body','destroy','getConfigurations','findOne','ZohoConfiguration','rawAttributes','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','ZohoField','Descriptions','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','/oauth/v2/token','refreshToken','clientId','refresh_token','access_token','getFields','host','clientSecret','serverUrl','code','zoho.eu','com','slice','substring','lastIndexOf','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields'];(function(_0x2e7c1b,_0x232f79){var _0x42f565=function(_0x31ee5a){while(--_0x31ee5a){_0x2e7c1b['push'](_0x2e7c1b['shift']());}};_0x42f565(++_0x232f79);}(_0x8daa,0x1ee));var _0xa8da=function(_0x37ae26,_0x2ecd70){_0x37ae26=_0x37ae26-0x0;var _0x1b1902=_0x8daa[_0x37ae26];return _0x1b1902;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa8da('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa8da('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xa8da('0x2'));var path=require(_0xa8da('0x3'));var sox=require('sox');var csv=require(_0xa8da('0x4'));var ejs=require(_0xa8da('0x5'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa8da('0x6'));var squel=require(_0xa8da('0x7'));var crypto=require(_0xa8da('0x8'));var jsforce=require(_0xa8da('0x9'));var deskjs=require(_0xa8da('0xa'));var toCsv=require('to-csv');var querystring=require(_0xa8da('0xb'));var Papa=require('papaparse');var Redis=require(_0xa8da('0xc'));var authService=require(_0xa8da('0xd'));var qs=require(_0xa8da('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa8da('0xf'))(_0xa8da('0x10'));var utils=require(_0xa8da('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0xa8da('0x12'));var db=require(_0xa8da('0x13'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x50d534,_0x2387ef){_0x2387ef=_0x2387ef||0xcc;return function(_0x32b57d){if(_0x32b57d){return _0x50d534[_0xa8da('0x14')](_0x2387ef);}return _0x50d534['status'](_0x2387ef)['end']();};}function respondWithResult(_0x3add56,_0x5e5e75){_0x5e5e75=_0x5e5e75||0xc8;return function(_0x4066f7){if(_0x4066f7){return _0x3add56[_0xa8da('0x15')](_0x5e5e75)[_0xa8da('0x16')](_0x4066f7);}};}function respondWithFilteredResult(_0x5f1064,_0x5eeff7){return function(_0x4f6238){if(_0x4f6238){var _0xd492b4=typeof _0x5eeff7[_0xa8da('0x17')]===_0xa8da('0x18')&&typeof _0x5eeff7[_0xa8da('0x19')]==='undefined';var _0x281eb2=_0x4f6238[_0xa8da('0x1a')];var _0x38b180=_0xd492b4?0x0:_0x5eeff7[_0xa8da('0x17')];var _0xa8d9c0=_0xd492b4?_0x4f6238[_0xa8da('0x1a')]:_0x5eeff7[_0xa8da('0x17')]+_0x5eeff7['limit'];var _0xc9d858;if(_0xa8d9c0>=_0x281eb2){_0xa8d9c0=_0x281eb2;_0xc9d858=0xc8;}else{_0xc9d858=0xce;}_0x5f1064[_0xa8da('0x15')](_0xc9d858);return _0x5f1064[_0xa8da('0x1b')]('Content-Range',_0x38b180+'-'+_0xa8d9c0+'/'+_0x281eb2)[_0xa8da('0x16')](_0x4f6238);}return null;};}function patchUpdates(_0x331f8c){return function(_0x331281){try{jsonpatch[_0xa8da('0x1c')](_0x331281,_0x331f8c,!![]);}catch(_0x5db83a){return BPromise['reject'](_0x5db83a);}return _0x331281[_0xa8da('0x1d')]();};}function saveUpdates(_0x46c601,_0x45cdf6){return function(_0x22b9e5){if(_0x22b9e5){return _0x22b9e5[_0xa8da('0x1e')](_0x46c601)[_0xa8da('0x1f')](function(_0x4b1cdf){return _0x4b1cdf;});}return null;};}function removeEntity(_0x23cb2e,_0x3a329d){return function(_0x1fc759){if(_0x1fc759){return _0x1fc759['destroy']()[_0xa8da('0x1f')](function(){_0x23cb2e[_0xa8da('0x15')](0xcc)[_0xa8da('0x20')]();});}};}function handleEntityNotFound(_0x186f93,_0x56fb48){return function(_0xe3e0a5){if(!_0xe3e0a5){_0x186f93[_0xa8da('0x14')](0x194);}return _0xe3e0a5;};}function handleError(_0x76e53a,_0x4299a7){_0x4299a7=_0x4299a7||0x1f4;return function(_0x36f07d){logger['error'](_0x36f07d[_0xa8da('0x21')]);if(_0x36f07d[_0xa8da('0x22')]){delete _0x36f07d['name'];}_0x76e53a[_0xa8da('0x15')](_0x4299a7)['send'](_0x36f07d);};}exports[_0xa8da('0x23')]=function(_0x1ffac3,_0x278cf2){var _0x1f275d={},_0x4680c5={},_0x5d727e={'count':0x0,'rows':[]};var _0x37b56c=_['map'](db[_0xa8da('0x24')]['rawAttributes'],function(_0x49ae55){return{'name':_0x49ae55[_0xa8da('0x25')],'type':_0x49ae55[_0xa8da('0x26')]['key']};});_0x4680c5[_0xa8da('0x27')]=_[_0xa8da('0x28')](_0x37b56c,'name');_0x4680c5[_0xa8da('0x29')]=_[_0xa8da('0x2a')](_0x1ffac3[_0xa8da('0x29')]);_0x4680c5[_0xa8da('0x2b')]=_[_0xa8da('0x2c')](_0x4680c5[_0xa8da('0x27')],_0x4680c5['query']);_0x1f275d['attributes']=_[_0xa8da('0x2c')](_0x4680c5[_0xa8da('0x27')],qs[_0xa8da('0x2d')](_0x1ffac3[_0xa8da('0x29')][_0xa8da('0x2d')]));_0x1f275d[_0xa8da('0x2e')]=_0x1f275d[_0xa8da('0x2e')][_0xa8da('0x2f')]?_0x1f275d['attributes']:_0x4680c5['model'];if(!_0x1ffac3['query'][_0xa8da('0x30')]('nolimit')){_0x1f275d['limit']=qs[_0xa8da('0x19')](_0x1ffac3[_0xa8da('0x29')][_0xa8da('0x19')]);_0x1f275d[_0xa8da('0x17')]=qs[_0xa8da('0x17')](_0x1ffac3[_0xa8da('0x29')]['offset']);}_0x1f275d[_0xa8da('0x31')]=qs['sort'](_0x1ffac3[_0xa8da('0x29')][_0xa8da('0x32')]);_0x1f275d[_0xa8da('0x33')]=qs[_0xa8da('0x2b')](_[_0xa8da('0x34')](_0x1ffac3[_0xa8da('0x29')],_0x4680c5[_0xa8da('0x2b')]),_0x37b56c);if(_0x1ffac3[_0xa8da('0x29')][_0xa8da('0x35')]){_0x1f275d[_0xa8da('0x33')]=_[_0xa8da('0x36')](_0x1f275d[_0xa8da('0x33')],{'$or':_[_0xa8da('0x28')](_0x37b56c,function(_0x34dc62){if(_0x34dc62[_0xa8da('0x26')]!==_0xa8da('0x37')){var _0x4228c9={};_0x4228c9[_0x34dc62['name']]={'$like':'%'+_0x1ffac3[_0xa8da('0x29')][_0xa8da('0x35')]+'%'};return _0x4228c9;}})});}_0x1f275d=_[_0xa8da('0x36')]({},_0x1f275d,_0x1ffac3[_0xa8da('0x38')]);var _0x924332={'where':_0x1f275d[_0xa8da('0x33')]};return db[_0xa8da('0x24')][_0xa8da('0x1a')](_0x924332)[_0xa8da('0x1f')](function(_0x1ca739){_0x5d727e['count']=_0x1ca739;if(_0x1ffac3['query'][_0xa8da('0x39')]){_0x1f275d['include']=[{'all':!![]}];}return db[_0xa8da('0x24')][_0xa8da('0x3a')](_0x1f275d);})['then'](function(_0x59af04){_0x5d727e['rows']=_0x59af04;return _0x5d727e;})['then'](respondWithFilteredResult(_0x278cf2,_0x1f275d))['catch'](handleError(_0x278cf2,null));};exports[_0xa8da('0x3b')]=function(_0x1785e8,_0x7f20b3){var _0x3cb755={'raw':![],'where':{'id':_0x1785e8[_0xa8da('0x3c')]['id']}},_0x190d74={};_0x190d74[_0xa8da('0x27')]=_[_0xa8da('0x2a')](db['ZohoAccount']['rawAttributes']);_0x190d74[_0xa8da('0x29')]=_[_0xa8da('0x2a')](_0x1785e8[_0xa8da('0x29')]);_0x190d74[_0xa8da('0x2b')]=_[_0xa8da('0x2c')](_0x190d74['model'],_0x190d74[_0xa8da('0x29')]);_0x3cb755['attributes']=_[_0xa8da('0x2c')](_0x190d74[_0xa8da('0x27')],qs['fields'](_0x1785e8[_0xa8da('0x29')][_0xa8da('0x2d')]));_0x3cb755[_0xa8da('0x2e')]=_0x3cb755['attributes'][_0xa8da('0x2f')]?_0x3cb755['attributes']:_0x190d74[_0xa8da('0x27')];if(_0x1785e8[_0xa8da('0x29')]['includeAll']){_0x3cb755[_0xa8da('0x3d')]=[{'all':!![]}];}_0x3cb755=_[_0xa8da('0x36')]({},_0x3cb755,_0x1785e8[_0xa8da('0x38')]);return db[_0xa8da('0x24')][_0xa8da('0x3e')](_0x3cb755)[_0xa8da('0x1f')](handleEntityNotFound(_0x7f20b3,null))[_0xa8da('0x1f')](respondWithResult(_0x7f20b3,null))[_0xa8da('0x3f')](handleError(_0x7f20b3,null));};exports[_0xa8da('0x40')]=function(_0x4f5071,_0x402fd6){return db[_0xa8da('0x24')][_0xa8da('0x40')](_0x4f5071[_0xa8da('0x41')],{})[_0xa8da('0x1f')](respondWithResult(_0x402fd6,0xc9))[_0xa8da('0x3f')](handleError(_0x402fd6,null));};exports[_0xa8da('0x1e')]=function(_0x37485e,_0x5d0589){if(_0x37485e[_0xa8da('0x41')]['id']){delete _0x37485e[_0xa8da('0x41')]['id'];}return db[_0xa8da('0x24')][_0xa8da('0x3e')]({'where':{'id':_0x37485e[_0xa8da('0x3c')]['id']}})[_0xa8da('0x1f')](handleEntityNotFound(_0x5d0589,null))[_0xa8da('0x1f')](saveUpdates(_0x37485e[_0xa8da('0x41')],null))['then'](respondWithResult(_0x5d0589,null))[_0xa8da('0x3f')](handleError(_0x5d0589,null));};exports[_0xa8da('0x42')]=function(_0x1d2d3a,_0x45b72a){return db[_0xa8da('0x24')][_0xa8da('0x3e')]({'where':{'id':_0x1d2d3a[_0xa8da('0x3c')]['id']}})['then'](handleEntityNotFound(_0x45b72a,null))['then'](removeEntity(_0x45b72a,null))[_0xa8da('0x3f')](handleError(_0x45b72a,null));};exports[_0xa8da('0x43')]=function(_0x22d36b,_0x8fd24b,_0x10301){var _0x3538f0={};var _0x203d62={};var _0x1cae1d;var _0x57196b;return db['ZohoAccount'][_0xa8da('0x44')]({'where':{'id':_0x22d36b[_0xa8da('0x3c')]['id']}})[_0xa8da('0x1f')](handleEntityNotFound(_0x8fd24b,null))['then'](function(_0x20c35c){if(_0x20c35c){_0x1cae1d=_0x20c35c;_0x203d62['model']=_[_0xa8da('0x2a')](db[_0xa8da('0x45')][_0xa8da('0x46')]);_0x203d62['query']=_['keys'](_0x22d36b[_0xa8da('0x29')]);_0x203d62[_0xa8da('0x2b')]=_[_0xa8da('0x2c')](_0x203d62[_0xa8da('0x27')],_0x203d62[_0xa8da('0x29')]);_0x3538f0[_0xa8da('0x2e')]=_[_0xa8da('0x2c')](_0x203d62[_0xa8da('0x27')],qs[_0xa8da('0x2d')](_0x22d36b[_0xa8da('0x29')][_0xa8da('0x2d')]));_0x3538f0[_0xa8da('0x2e')]=_0x3538f0[_0xa8da('0x2e')]['length']?_0x3538f0[_0xa8da('0x2e')]:_0x203d62[_0xa8da('0x27')];_0x3538f0[_0xa8da('0x31')]=qs[_0xa8da('0x32')](_0x22d36b[_0xa8da('0x29')]['sort']);_0x3538f0[_0xa8da('0x33')]=qs[_0xa8da('0x2b')](_['pick'](_0x22d36b['query'],_0x203d62[_0xa8da('0x2b')]));if(_0x22d36b['query'][_0xa8da('0x35')]){_0x3538f0[_0xa8da('0x33')]=_[_0xa8da('0x36')](_0x3538f0['where'],{'$or':_[_0xa8da('0x28')](_0x3538f0['attributes'],function(_0x311044){var _0x14ed1f={};_0x14ed1f[_0x311044]={'$like':'%'+_0x22d36b[_0xa8da('0x29')]['filter']+'%'};return _0x14ed1f;})});}_0x3538f0=_[_0xa8da('0x36')]({},_0x3538f0,_0x22d36b[_0xa8da('0x38')]);return _0x1cae1d[_0xa8da('0x43')](_0x3538f0);}})[_0xa8da('0x1f')](function(_0x16fd1b){if(_0x16fd1b){_0x57196b=_0x16fd1b['length'];if(!_0x22d36b[_0xa8da('0x29')][_0xa8da('0x30')](_0xa8da('0x47'))){_0x3538f0[_0xa8da('0x19')]=qs[_0xa8da('0x19')](_0x22d36b[_0xa8da('0x29')][_0xa8da('0x19')]);_0x3538f0['offset']=qs['offset'](_0x22d36b[_0xa8da('0x29')][_0xa8da('0x17')]);}return _0x1cae1d[_0xa8da('0x43')](_0x3538f0);}})[_0xa8da('0x1f')](function(_0x5f0a65){if(_0x5f0a65){return _0x5f0a65?{'count':_0x57196b,'rows':_0x5f0a65}:null;}})[_0xa8da('0x1f')](respondWithResult(_0x8fd24b,null))['catch'](handleError(_0x8fd24b,null));};exports[_0xa8da('0x48')]=function(_0x319c12,_0x5be9f2,_0x2a888d){if(_0x319c12[_0xa8da('0x41')]['id']){delete _0x319c12[_0xa8da('0x41')]['id'];}return db[_0xa8da('0x24')][_0xa8da('0x44')]({'where':{'id':_0x319c12[_0xa8da('0x3c')]['id']}})[_0xa8da('0x1f')](handleEntityNotFound(_0x5be9f2,null))['then'](function(_0x479fc5){if(_0x479fc5){_0x319c12[_0xa8da('0x41')][_0xa8da('0x49')]=_0x479fc5['id'];_0x319c12['body'][_0xa8da('0x4a')]=integrations[_0xa8da('0x4b')](_0x319c12[_0xa8da('0x41')][_0xa8da('0x4c')],_0x319c12[_0xa8da('0x41')][_0xa8da('0x26')]);_0x319c12['body']['Descriptions']=integrations['getDescriptions'](_0x319c12[_0xa8da('0x41')][_0xa8da('0x4c')],_0x319c12[_0xa8da('0x41')][_0xa8da('0x26')]);return db[_0xa8da('0x45')]['create'](_0x319c12[_0xa8da('0x41')],{'include':[{'model':db[_0xa8da('0x4d')],'as':_0xa8da('0x4a')},{'model':db[_0xa8da('0x4d')],'as':_0xa8da('0x4e')}]});}return null;})['then'](respondWithResult(_0x5be9f2,null))['catch'](handleError(_0x5be9f2,null));};function getAccessToken(_0x5af686){return new Promise(function(_0x3f604b,_0x445d22){var _0x21378a;switch(_0x5af686[_0xa8da('0x4f')]){case'US':_0x21378a=_0xa8da('0x50');break;case'AU':_0x21378a=_0xa8da('0x51');break;case'EU':_0x21378a='https://accounts.zoho.eu';break;case'IN':_0x21378a='https://accounts.zoho.in';break;case'CN':_0x21378a='https://accounts.zoho.com.cn';break;default:_0x21378a=_0xa8da('0x52');break;}var _0x193fa2={'method':'POST','uri':_0x21378a+_0xa8da('0x53'),'qs':{'refresh_token':_0x5af686[_0xa8da('0x54')],'client_id':_0x5af686[_0xa8da('0x55')],'client_secret':_0x5af686['clientSecret'],'grant_type':_0xa8da('0x56')},'json':!![]};return rp(_0x193fa2)[_0xa8da('0x1f')](function(_0x26cb43){if(_0x26cb43[_0xa8da('0x57')]){_0x3f604b(_0x26cb43[_0xa8da('0x57')]);}else{_0x445d22('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})[_0xa8da('0x3f')](function(_0x4d450e){_0x445d22(_0x4d450e);});});}exports[_0xa8da('0x58')]=function(_0x437721,_0x634755,_0x2077b3){var _0x30d30e,_0x8a1a00,_0x67160b,_0x479332,_0x4bd82f;return db[_0xa8da('0x24')][_0xa8da('0x44')]({'where':{'id':_0x437721[_0xa8da('0x3c')]['id']},'attributes':['id',_0xa8da('0x59'),'zone',_0xa8da('0x55'),_0xa8da('0x5a'),_0xa8da('0x5b'),_0xa8da('0x5c'),_0xa8da('0x54')]})[_0xa8da('0x1f')](handleEntityNotFound(_0x634755,null))[_0xa8da('0x1f')](function(_0x1b064f){_0x4bd82f=_0x1b064f;_0x30d30e=_0x4bd82f[_0xa8da('0x59')];_0x8a1a00=_0x30d30e===_0xa8da('0x5d')?'eu':_0xa8da('0x5e');_0x67160b=_0x4bd82f[_0xa8da('0x5b')];var _0x4ec045=_0x67160b[_0xa8da('0x5f')](-0x1);if(_0x4ec045==='/'||_0x4ec045==='\x5c'||_0x4ec045===':'){_0x67160b=_0x67160b[_0xa8da('0x60')](0x0,_0x67160b[_0xa8da('0x61')](_0x4ec045));}if(!_0x4bd82f[_0xa8da('0x54')]){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x4bd82f);})['then'](function(_0x36899a){if(_0x36899a){return rp({'method':_0xa8da('0x62'),'uri':util[_0xa8da('0x63')](_0xa8da('0x64'),_0x8a1a00),'qs':{'module':_0xa8da('0x65')},'headers':{'Authorization':_0xa8da('0x66')+_0x36899a},'json':!![]});}})[_0xa8da('0x1f')](function(_0x3ae2fa){if(_0x3ae2fa){if(_0x3ae2fa[_0xa8da('0x67')]&&_0x3ae2fa[_0xa8da('0x67')][_0xa8da('0x68')]){throw new Error(_0x3ae2fa[_0xa8da('0x67')][_0xa8da('0x68')][_0xa8da('0x69')]);}var _0x29af79=[];var _0x17e38b=[];var _0x3a412a=['Owner',_0xa8da('0x6a'),'Description',_0xa8da('0x6b'),'Call_Duration',_0xa8da('0x6c'),_0xa8da('0x6d'),'Call_Type'];_0x17e38b=_[_0xa8da('0x6e')](_0x3ae2fa[_0xa8da('0x2d')],function(_0x1a62a6){return _0x3a412a['includes'](_0x1a62a6['api_name']);});for(var _0x18d165=0x0;_0x18d165<_0x17e38b[_0xa8da('0x2f')];_0x18d165++){if(_0x17e38b[_0x18d165]['system_mandatory']===![]){_0x29af79['push']({'id':_0x17e38b[_0x18d165]['id'],'name':_0x17e38b[_0x18d165][_0xa8da('0x6f')],'custom':_0x17e38b[_0x18d165][_0xa8da('0x70')],'options':_0x17e38b[_0x18d165][_0xa8da('0x71')]===_0xa8da('0x72')&&_0x17e38b[_0x18d165][_0xa8da('0x73')]['length']>-0x1?_[_0xa8da('0x28')](_0x17e38b[_0x18d165][_0xa8da('0x73')],function(_0x3f1a52){return{'name':_0x3f1a52,'value':_0x3f1a52};}):[]});}}return{'count':_0x29af79['length'],'rows':_0x29af79};}else{return{'count':0x0,'rows':[]};}})[_0xa8da('0x1f')](respondWithResult(_0x634755,null))[_0xa8da('0x3f')](function(_0x57a3bf){var _0x3d7617=_0x437721[_0xa8da('0x29')]['test']?0x1f4:_0x57a3bf[_0xa8da('0x74')]||0x1f4;logger['error'](_0xa8da('0x75'),_0xa8da('0x58'),_0x3d7617,JSON[_0xa8da('0x76')](_0x57a3bf));delete _0x57a3bf['name'];if(_0x3d7617===0x191){_0x3d7617=0x190;}_0x634755[_0xa8da('0x15')](_0x3d7617)['send'](_0x437721[_0xa8da('0x29')]['test']?{'message':'Wrong\x20credentials','statusCode':_0x57a3bf[_0xa8da('0x74')]}:_0x57a3bf);});};
\ No newline at end of file
index cb72e0d..1589adc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32b0=['./intZohoAccount.attributes','../../components/integrations/configuration','exports','define','ZohoAccount','int_zoho_accounts','changed','zone','serverUrl','clientSecret','host','slice','substring','lastIndexOf','https://accounts.zoho.com.au','https://accounts.zoho.com.cn','https://accounts.zoho.eu','/oauth/v2/token','clientId','code','parse','refreshToken','refresh_token','info','format','name','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch','POST','application/x-www-form-urlencoded','then','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x44bcde,_0x386fb5){var _0x3f1e9c=function(_0x46846d){while(--_0x46846d){_0x44bcde['push'](_0x44bcde['shift']());}};_0x3f1e9c(++_0x386fb5);}(_0x32b0,0x14f));var _0x032b=function(_0x47b69f,_0x3f1696){_0x47b69f=_0x47b69f-0x0;var _0x56f392=_0x32b0[_0x47b69f];return _0x56f392;};'use strict';var _=require(_0x032b('0x0'));var util=require(_0x032b('0x1'));var logger=require(_0x032b('0x2'))('api');var moment=require(_0x032b('0x3'));var BPromise=require(_0x032b('0x4'));var rp=require(_0x032b('0x5'));var fs=require('fs');var path=require(_0x032b('0x6'));var rimraf=require(_0x032b('0x7'));var config=require(_0x032b('0x8'));var attributes=require(_0x032b('0x9'));var integrations=require(_0x032b('0xa'));module[_0x032b('0xb')]=function(_0x243542,_0x5e2ee9){return _0x243542[_0x032b('0xc')](_0x032b('0xd'),attributes,{'tableName':_0x032b('0xe'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5209a7,_0x44704c,_0x2bbbcd){if(_0x5209a7[_0x032b('0xf')](_0x032b('0x10'))||_0x5209a7[_0x032b('0xf')](_0x032b('0x11'))||_0x5209a7['changed']('clientId')||_0x5209a7['changed'](_0x032b('0x12'))||_0x5209a7['changed']('code')||_0x5209a7['changed'](_0x032b('0x13'))){var _0x8e2525,_0xd513cd;_0x8e2525=_0x5209a7['serverUrl'];var _0x3f6b23=_0x8e2525[_0x032b('0x14')](-0x1);if(_0x3f6b23==='/'||_0x3f6b23==='\x5c'||_0x3f6b23===':'){_0x8e2525=_0x8e2525[_0x032b('0x15')](0x0,_0x8e2525[_0x032b('0x16')](_0x3f6b23));}switch(_0x5209a7[_0x032b('0x10')]){case'US':_0xd513cd='https://accounts.zoho.com';break;case'AU':_0xd513cd=_0x032b('0x17');break;case'IN':_0xd513cd='https://accounts.zoho.in';break;case'CN':_0xd513cd=_0x032b('0x18');break;default:_0xd513cd=_0x032b('0x19');break;}var _0x506648={'method':'POST','uri':_0xd513cd+_0x032b('0x1a'),'form':{'grant_type':'authorization_code','client_id':_0x5209a7[_0x032b('0x1b')],'client_secret':_0x5209a7['clientSecret'],'redirect_uri':_0x5209a7[_0x032b('0x11')],'code':_0x5209a7[_0x032b('0x1c')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x506648)['then'](function(_0x5a9368){var _0x381550=JSON[_0x032b('0x1d')](_0x5a9368);if(_0x381550['refresh_token']){_0x5209a7[_0x032b('0x1e')]=_0x381550[_0x032b('0x1f')];logger[_0x032b('0x20')](util[_0x032b('0x21')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x5209a7[_0x032b('0x22')],_0x5209a7['id']));}else{logger[_0x032b('0x23')](util['format'](_0x032b('0x24'),_0x5209a7['name'],_0x5209a7['id']),util[_0x032b('0x25')](_0x381550,{'showHidden':![],'depth':null}));}return _0x2bbbcd(null,_0x44704c);})[_0x032b('0x26')](function(_0x2a8190){logger[_0x032b('0x23')](util[_0x032b('0x21')](_0x032b('0x24'),_0x5209a7[_0x032b('0x22')],_0x5209a7['id']),util[_0x032b('0x25')](parsedResult,{'showHidden':![],'depth':null}));return _0x2bbbcd(_0x2a8190);});}else{return _0x2bbbcd(null,_0x44704c);}},'beforeUpdate':function(_0x2b3e0d,_0x24e7c6,_0x55c4d1){if(_0x2b3e0d['changed'](_0x032b('0x10'))||_0x2b3e0d['changed']('serverUrl')||_0x2b3e0d[_0x032b('0xf')]('clientId')||_0x2b3e0d[_0x032b('0xf')](_0x032b('0x12'))||_0x2b3e0d[_0x032b('0xf')](_0x032b('0x1c'))||_0x2b3e0d[_0x032b('0xf')](_0x032b('0x13'))){var _0xd4a79,_0x3d1b28;_0xd4a79=_0x2b3e0d[_0x032b('0x11')];var _0x563980=_0xd4a79['slice'](-0x1);if(_0x563980==='/'||_0x563980==='\x5c'||_0x563980===':'){_0xd4a79=_0xd4a79[_0x032b('0x15')](0x0,_0xd4a79[_0x032b('0x16')](_0x563980));}switch(_0x2b3e0d[_0x032b('0x10')]){case'US':_0x3d1b28='https://accounts.zoho.com';break;case'AU':_0x3d1b28=_0x032b('0x17');break;case'IN':_0x3d1b28='https://accounts.zoho.in';break;case'CN':_0x3d1b28=_0x032b('0x18');break;default:_0x3d1b28=_0x032b('0x19');break;}var _0x4a5f58={'method':_0x032b('0x27'),'uri':_0x3d1b28+_0x032b('0x1a'),'form':{'grant_type':'authorization_code','client_id':_0x2b3e0d['clientId'],'client_secret':_0x2b3e0d[_0x032b('0x12')],'redirect_uri':_0x2b3e0d['serverUrl'],'code':_0x2b3e0d[_0x032b('0x1c')]},'headers':{'Content-Type':_0x032b('0x28')}};return rp(_0x4a5f58)[_0x032b('0x29')](function(_0x640455){var _0x3722a0=JSON[_0x032b('0x1d')](_0x640455);if(_0x3722a0[_0x032b('0x1f')]){_0x2b3e0d['refreshToken']=_0x3722a0[_0x032b('0x1f')];logger['info'](util[_0x032b('0x21')](_0x032b('0x2a'),_0x2b3e0d[_0x032b('0x22')],_0x2b3e0d['id']));}else{logger[_0x032b('0x23')](util['format'](_0x032b('0x24'),_0x2b3e0d[_0x032b('0x22')],_0x2b3e0d['id']),util[_0x032b('0x25')](_0x3722a0,{'showHidden':![],'depth':null}));}return _0x55c4d1(null,_0x24e7c6);})[_0x032b('0x26')](function(_0x4cdb3f){logger[_0x032b('0x23')](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2b3e0d[_0x032b('0x22')],_0x2b3e0d['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x55c4d1(_0x4cdb3f);});}else{return _0x55c4d1(null,_0x24e7c6);}}}});};
\ No newline at end of file
+var _0x71bc=['substring','lastIndexOf','https://accounts.zoho.com','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','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','format','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch','error','slice','refresh_token','refreshToken','info','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','ZohoAccount','int_zoho_accounts','changed','zone','clientId','clientSecret','host','serverUrl'];(function(_0x4b49c1,_0x40f2d2){var _0x3696f3=function(_0x4a733e){while(--_0x4a733e){_0x4b49c1['push'](_0x4b49c1['shift']());}};_0x3696f3(++_0x40f2d2);}(_0x71bc,0x96));var _0xc71b=function(_0x221661,_0x3be585){_0x221661=_0x221661-0x0;var _0x41bcf9=_0x71bc[_0x221661];return _0x41bcf9;};'use strict';var _=require(_0xc71b('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xc71b('0x1'));var moment=require(_0xc71b('0x2'));var BPromise=require(_0xc71b('0x3'));var rp=require(_0xc71b('0x4'));var fs=require('fs');var path=require(_0xc71b('0x5'));var rimraf=require(_0xc71b('0x6'));var config=require(_0xc71b('0x7'));var attributes=require('./intZohoAccount.attributes');var integrations=require(_0xc71b('0x8'));module[_0xc71b('0x9')]=function(_0x311845,_0x2ffa2f){return _0x311845['define'](_0xc71b('0xa'),attributes,{'tableName':_0xc71b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x2b6e08,_0x2b59da,_0x4ce0d2){if(_0x2b6e08[_0xc71b('0xc')](_0xc71b('0xd'))||_0x2b6e08['changed']('serverUrl')||_0x2b6e08[_0xc71b('0xc')](_0xc71b('0xe'))||_0x2b6e08[_0xc71b('0xc')](_0xc71b('0xf'))||_0x2b6e08['changed']('code')||_0x2b6e08[_0xc71b('0xc')](_0xc71b('0x10'))){var _0x2c97db,_0xdb5396;_0x2c97db=_0x2b6e08[_0xc71b('0x11')];var _0x16449b=_0x2c97db['slice'](-0x1);if(_0x16449b==='/'||_0x16449b==='\x5c'||_0x16449b===':'){_0x2c97db=_0x2c97db[_0xc71b('0x12')](0x0,_0x2c97db[_0xc71b('0x13')](_0x16449b));}switch(_0x2b6e08['zone']){case'US':_0xdb5396=_0xc71b('0x14');break;case'AU':_0xdb5396='https://accounts.zoho.com.au';break;case'IN':_0xdb5396=_0xc71b('0x15');break;case'CN':_0xdb5396=_0xc71b('0x16');break;default:_0xdb5396=_0xc71b('0x17');break;}var _0x57fa62={'method':_0xc71b('0x18'),'uri':_0xdb5396+_0xc71b('0x19'),'form':{'grant_type':_0xc71b('0x1a'),'client_id':_0x2b6e08[_0xc71b('0xe')],'client_secret':_0x2b6e08['clientSecret'],'redirect_uri':_0x2b6e08['serverUrl'],'code':_0x2b6e08[_0xc71b('0x1b')]},'headers':{'Content-Type':_0xc71b('0x1c')}};return rp(_0x57fa62)[_0xc71b('0x1d')](function(_0xf22530){var _0x3095cb=JSON[_0xc71b('0x1e')](_0xf22530);if(_0x3095cb['refresh_token']){_0x2b6e08['refreshToken']=_0x3095cb['refresh_token'];logger['info'](util['format'](_0xc71b('0x1f'),_0x2b6e08[_0xc71b('0x20')],_0x2b6e08['id']));}else{logger['error'](util[_0xc71b('0x21')](_0xc71b('0x22'),_0x2b6e08[_0xc71b('0x20')],_0x2b6e08['id']),util[_0xc71b('0x23')](_0x3095cb,{'showHidden':![],'depth':null}));}return _0x4ce0d2(null,_0x2b59da);})[_0xc71b('0x24')](function(_0xe64554){logger[_0xc71b('0x25')](util[_0xc71b('0x21')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2b6e08['name'],_0x2b6e08['id']),util[_0xc71b('0x23')](parsedResult,{'showHidden':![],'depth':null}));return _0x4ce0d2(_0xe64554);});}else{return _0x4ce0d2(null,_0x2b59da);}},'beforeUpdate':function(_0x5c225c,_0x512849,_0x47ade0){if(_0x5c225c['changed'](_0xc71b('0xd'))||_0x5c225c[_0xc71b('0xc')]('serverUrl')||_0x5c225c[_0xc71b('0xc')](_0xc71b('0xe'))||_0x5c225c[_0xc71b('0xc')]('clientSecret')||_0x5c225c[_0xc71b('0xc')](_0xc71b('0x1b'))||_0x5c225c['changed'](_0xc71b('0x10'))){var _0x2f6457,_0x42d536;_0x2f6457=_0x5c225c['serverUrl'];var _0x26d6d3=_0x2f6457[_0xc71b('0x26')](-0x1);if(_0x26d6d3==='/'||_0x26d6d3==='\x5c'||_0x26d6d3===':'){_0x2f6457=_0x2f6457[_0xc71b('0x12')](0x0,_0x2f6457['lastIndexOf'](_0x26d6d3));}switch(_0x5c225c[_0xc71b('0xd')]){case'US':_0x42d536=_0xc71b('0x14');break;case'AU':_0x42d536='https://accounts.zoho.com.au';break;case'IN':_0x42d536=_0xc71b('0x15');break;case'CN':_0x42d536=_0xc71b('0x16');break;default:_0x42d536=_0xc71b('0x17');break;}var _0x2a03a4={'method':_0xc71b('0x18'),'uri':_0x42d536+_0xc71b('0x19'),'form':{'grant_type':_0xc71b('0x1a'),'client_id':_0x5c225c[_0xc71b('0xe')],'client_secret':_0x5c225c[_0xc71b('0xf')],'redirect_uri':_0x5c225c[_0xc71b('0x11')],'code':_0x5c225c[_0xc71b('0x1b')]},'headers':{'Content-Type':_0xc71b('0x1c')}};return rp(_0x2a03a4)[_0xc71b('0x1d')](function(_0x26b349){var _0x541ca6=JSON[_0xc71b('0x1e')](_0x26b349);if(_0x541ca6[_0xc71b('0x27')]){_0x5c225c[_0xc71b('0x28')]=_0x541ca6[_0xc71b('0x27')];logger[_0xc71b('0x29')](util[_0xc71b('0x21')](_0xc71b('0x1f'),_0x5c225c[_0xc71b('0x20')],_0x5c225c['id']));}else{logger['error'](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x5c225c[_0xc71b('0x20')],_0x5c225c['id']),util['inspect'](_0x541ca6,{'showHidden':![],'depth':null}));}return _0x47ade0(null,_0x512849);})[_0xc71b('0x24')](function(_0x2f3495){logger[_0xc71b('0x25')](util[_0xc71b('0x21')](_0xc71b('0x22'),_0x5c225c[_0xc71b('0x20')],_0x5c225c['id']),util[_0xc71b('0x23')](parsedResult,{'showHidden':![],'depth':null}));return _0x47ade0(_0x2f3495);});}else{return _0x47ade0(null,_0x512849);}}}});};
\ No newline at end of file
index 4bbf9f0..84ae3a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa701=['raw','where','attributes','limit','include','model','map','GetZohoAccount','ShowZohoAccount','util','moment','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','ZohoAccount','options'];(function(_0x83de61,_0x967fd0){var _0x20e39e=function(_0x10c9e6){while(--_0x10c9e6){_0x83de61['push'](_0x83de61['shift']());}};_0x20e39e(++_0x967fd0);}(_0xa701,0xd4));var _0x1a70=function(_0x1c736b,_0x1b3fba){_0x1c736b=_0x1c736b-0x0;var _0x593d82=_0xa701[_0x1c736b];return _0x593d82;};'use strict';var _=require('lodash');var util=require(_0x1a70('0x0'));var moment=require(_0x1a70('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1a70('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x1a70('0x3'))(_0x1a70('0x4'));var config=require(_0x1a70('0x5'));var jayson=require(_0x1a70('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1c700b,_0x191a56,_0x1e5432){return new BPromise(function(_0x85bfd0,_0x1dd89b){return client[_0x1a70('0x7')](_0x1c700b,_0x1e5432)[_0x1a70('0x8')](function(_0x55b5e2){logger[_0x1a70('0x9')](_0x1a70('0xa'),_0x191a56,_0x1a70('0xb'));logger[_0x1a70('0xc')]('ZohoAccount,\x20%s,\x20%s,\x20%s',_0x191a56,_0x1a70('0xb'),JSON[_0x1a70('0xd')](_0x55b5e2));if(_0x55b5e2[_0x1a70('0xe')]){if(_0x55b5e2['error']['code']===0x1f4){logger[_0x1a70('0xe')]('ZohoAccount,\x20%s,\x20%s',_0x191a56,_0x55b5e2[_0x1a70('0xe')]['message']);return _0x1dd89b(_0x55b5e2[_0x1a70('0xe')]['message']);}logger[_0x1a70('0xe')]('ZohoAccount,\x20%s,\x20%s',_0x191a56,_0x55b5e2[_0x1a70('0xe')][_0x1a70('0xf')]);return _0x85bfd0(_0x55b5e2[_0x1a70('0xe')][_0x1a70('0xf')]);}else{logger[_0x1a70('0x9')]('ZohoAccount,\x20%s,\x20%s',_0x191a56,'request\x20sent');_0x85bfd0(_0x55b5e2[_0x1a70('0x10')]['message']);}})[_0x1a70('0x11')](function(_0x3d8745){logger['error'](_0x1a70('0xa'),_0x191a56,_0x3d8745);_0x1dd89b(_0x3d8745);});});}exports['GetZohoAccount']=function(_0x266784){var _0xcb545c=this;return new Promise(function(_0x555680,_0x117ac1){return db[_0x1a70('0x12')]['findAll']({'raw':_0x266784['options']?_0x266784[_0x1a70('0x13')][_0x1a70('0x14')]===undefined?!![]:![]:!![],'where':_0x266784[_0x1a70('0x13')]?_0x266784[_0x1a70('0x13')][_0x1a70('0x15')]||null:null,'attributes':_0x266784[_0x1a70('0x13')]?_0x266784[_0x1a70('0x13')][_0x1a70('0x16')]||null:null,'limit':_0x266784[_0x1a70('0x13')]?_0x266784[_0x1a70('0x13')][_0x1a70('0x17')]||null:null,'include':_0x266784[_0x1a70('0x13')]?_0x266784[_0x1a70('0x13')][_0x1a70('0x18')]?_['map'](_0x266784['options'][_0x1a70('0x18')],function(_0x20f1b1){return{'model':db[_0x20f1b1[_0x1a70('0x19')]],'as':_0x20f1b1['as'],'attributes':_0x20f1b1[_0x1a70('0x16')],'include':_0x20f1b1[_0x1a70('0x18')]?_[_0x1a70('0x1a')](_0x20f1b1['include'],function(_0xe7c8a5){return{'model':db[_0xe7c8a5[_0x1a70('0x19')]],'as':_0xe7c8a5['as'],'attributes':_0xe7c8a5['attributes'],'include':_0xe7c8a5[_0x1a70('0x18')]?_[_0x1a70('0x1a')](_0xe7c8a5[_0x1a70('0x18')],function(_0x24dee2){return{'model':db[_0x24dee2[_0x1a70('0x19')]],'as':_0x24dee2['as'],'attributes':_0x24dee2[_0x1a70('0x16')]};}):[]};}):[]};}):[]:[]})[_0x1a70('0x8')](function(_0xc18572){logger[_0x1a70('0x9')](_0x1a70('0x1b'),_0x266784);logger[_0x1a70('0xc')]('GetZohoAccount',_0x266784,JSON[_0x1a70('0xd')](_0xc18572));_0x555680(_0xc18572);})[_0x1a70('0x11')](function(_0x19e0ba){logger[_0x1a70('0xe')](_0x1a70('0x1b'),_0x19e0ba[_0x1a70('0xf')],_0x266784);_0x117ac1(_0xcb545c[_0x1a70('0xe')](0x1f4,_0x19e0ba[_0x1a70('0xf')]));});});};exports[_0x1a70('0x1c')]=function(_0x659d4b){var _0x200155=this;return new Promise(function(_0x113aa0,_0x5090ad){return db[_0x1a70('0x12')]['find']({'raw':_0x659d4b[_0x1a70('0x13')]?_0x659d4b[_0x1a70('0x13')][_0x1a70('0x14')]===undefined?!![]:![]:!![],'where':_0x659d4b[_0x1a70('0x13')]?_0x659d4b[_0x1a70('0x13')]['where']||null:null,'attributes':_0x659d4b[_0x1a70('0x13')]?_0x659d4b[_0x1a70('0x13')][_0x1a70('0x16')]||null:null,'include':_0x659d4b[_0x1a70('0x13')]?_0x659d4b[_0x1a70('0x13')][_0x1a70('0x18')]?_[_0x1a70('0x1a')](_0x659d4b[_0x1a70('0x13')]['include'],function(_0x4b13ea){return{'model':db[_0x4b13ea[_0x1a70('0x19')]],'as':_0x4b13ea['as'],'attributes':_0x4b13ea[_0x1a70('0x16')],'include':_0x4b13ea[_0x1a70('0x18')]?_[_0x1a70('0x1a')](_0x4b13ea[_0x1a70('0x18')],function(_0x3c739c){return{'model':db[_0x3c739c[_0x1a70('0x19')]],'as':_0x3c739c['as'],'attributes':_0x3c739c[_0x1a70('0x16')],'include':_0x3c739c[_0x1a70('0x18')]?_[_0x1a70('0x1a')](_0x3c739c['include'],function(_0x1ee357){return{'model':db[_0x1ee357['model']],'as':_0x1ee357['as'],'attributes':_0x1ee357[_0x1a70('0x16')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1fea89){logger[_0x1a70('0x9')]('ShowZohoAccount',_0x659d4b);logger[_0x1a70('0xc')](_0x1a70('0x1c'),_0x659d4b,JSON[_0x1a70('0xd')](_0x1fea89));_0x113aa0(_0x1fea89);})[_0x1a70('0x11')](function(_0x559c0c){logger[_0x1a70('0xe')](_0x1a70('0x1c'),_0x559c0c[_0x1a70('0xf')],_0x659d4b);_0x5090ad(_0x200155[_0x1a70('0xe')](0x1f4,_0x559c0c[_0x1a70('0xf')]));});});};
\ No newline at end of file
+var _0xfb11=['catch','GetZohoAccount','ZohoAccount','findAll','options','raw','where','include','map','model','attributes','debug','ShowZohoAccount','lodash','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','client','http','request','then','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x40cc0b,_0x1e0385){var _0x1400c5=function(_0x3bb3b2){while(--_0x3bb3b2){_0x40cc0b['push'](_0x40cc0b['shift']());}};_0x1400c5(++_0x1e0385);}(_0xfb11,0x1ad));var _0x1fb1=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xfb11[_0x25bea7];return _0x175952;};'use strict';var _=require(_0x1fb1('0x0'));var util=require('util');var moment=require(_0x1fb1('0x1'));var BPromise=require(_0x1fb1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1fb1('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1fb1('0x4'));var logger=require('../../config/logger')(_0x1fb1('0x5'));var config=require(_0x1fb1('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x1fb1('0x7')][_0x1fb1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4c098d,_0x1859da,_0x2596c2){return new BPromise(function(_0x34e61a,_0x236b20){return client[_0x1fb1('0x9')](_0x4c098d,_0x2596c2)[_0x1fb1('0xa')](function(_0x438d15){logger[_0x1fb1('0xb')](_0x1fb1('0xc'),_0x1859da,_0x1fb1('0xd'));logger['debug'](_0x1fb1('0xe'),_0x1859da,'request\x20sent',JSON[_0x1fb1('0xf')](_0x438d15));if(_0x438d15['error']){if(_0x438d15[_0x1fb1('0x10')][_0x1fb1('0x11')]===0x1f4){logger[_0x1fb1('0x10')](_0x1fb1('0xc'),_0x1859da,_0x438d15[_0x1fb1('0x10')][_0x1fb1('0x12')]);return _0x236b20(_0x438d15['error'][_0x1fb1('0x12')]);}logger[_0x1fb1('0x10')](_0x1fb1('0xc'),_0x1859da,_0x438d15[_0x1fb1('0x10')][_0x1fb1('0x12')]);return _0x34e61a(_0x438d15[_0x1fb1('0x10')][_0x1fb1('0x12')]);}else{logger[_0x1fb1('0xb')](_0x1fb1('0xc'),_0x1859da,'request\x20sent');_0x34e61a(_0x438d15['result'][_0x1fb1('0x12')]);}})[_0x1fb1('0x13')](function(_0x3924ab){logger['error'](_0x1fb1('0xc'),_0x1859da,_0x3924ab);_0x236b20(_0x3924ab);});});}exports[_0x1fb1('0x14')]=function(_0x24d4df){var _0x34076b=this;return new Promise(function(_0x33c6b6,_0x27d71f){return db[_0x1fb1('0x15')][_0x1fb1('0x16')]({'raw':_0x24d4df[_0x1fb1('0x17')]?_0x24d4df['options'][_0x1fb1('0x18')]===undefined?!![]:![]:!![],'where':_0x24d4df['options']?_0x24d4df['options'][_0x1fb1('0x19')]||null:null,'attributes':_0x24d4df[_0x1fb1('0x17')]?_0x24d4df[_0x1fb1('0x17')]['attributes']||null:null,'limit':_0x24d4df[_0x1fb1('0x17')]?_0x24d4df['options']['limit']||null:null,'include':_0x24d4df['options']?_0x24d4df[_0x1fb1('0x17')][_0x1fb1('0x1a')]?_[_0x1fb1('0x1b')](_0x24d4df[_0x1fb1('0x17')][_0x1fb1('0x1a')],function(_0x53b8af){return{'model':db[_0x53b8af[_0x1fb1('0x1c')]],'as':_0x53b8af['as'],'attributes':_0x53b8af[_0x1fb1('0x1d')],'include':_0x53b8af[_0x1fb1('0x1a')]?_[_0x1fb1('0x1b')](_0x53b8af[_0x1fb1('0x1a')],function(_0x1353a4){return{'model':db[_0x1353a4[_0x1fb1('0x1c')]],'as':_0x1353a4['as'],'attributes':_0x1353a4[_0x1fb1('0x1d')],'include':_0x1353a4['include']?_[_0x1fb1('0x1b')](_0x1353a4[_0x1fb1('0x1a')],function(_0x46ff60){return{'model':db[_0x46ff60[_0x1fb1('0x1c')]],'as':_0x46ff60['as'],'attributes':_0x46ff60[_0x1fb1('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x1fb1('0xa')](function(_0x1a74c4){logger[_0x1fb1('0xb')](_0x1fb1('0x14'),_0x24d4df);logger[_0x1fb1('0x1e')](_0x1fb1('0x14'),_0x24d4df,JSON[_0x1fb1('0xf')](_0x1a74c4));_0x33c6b6(_0x1a74c4);})[_0x1fb1('0x13')](function(_0xe8ec0a){logger[_0x1fb1('0x10')]('GetZohoAccount',_0xe8ec0a[_0x1fb1('0x12')],_0x24d4df);_0x27d71f(_0x34076b[_0x1fb1('0x10')](0x1f4,_0xe8ec0a[_0x1fb1('0x12')]));});});};exports[_0x1fb1('0x1f')]=function(_0x5402e9){var _0x245f84=this;return new Promise(function(_0x30c8eb,_0x5d45a5){return db[_0x1fb1('0x15')]['find']({'raw':_0x5402e9['options']?_0x5402e9[_0x1fb1('0x17')][_0x1fb1('0x18')]===undefined?!![]:![]:!![],'where':_0x5402e9['options']?_0x5402e9[_0x1fb1('0x17')][_0x1fb1('0x19')]||null:null,'attributes':_0x5402e9[_0x1fb1('0x17')]?_0x5402e9[_0x1fb1('0x17')][_0x1fb1('0x1d')]||null:null,'include':_0x5402e9['options']?_0x5402e9[_0x1fb1('0x17')][_0x1fb1('0x1a')]?_[_0x1fb1('0x1b')](_0x5402e9[_0x1fb1('0x17')][_0x1fb1('0x1a')],function(_0x307700){return{'model':db[_0x307700[_0x1fb1('0x1c')]],'as':_0x307700['as'],'attributes':_0x307700[_0x1fb1('0x1d')],'include':_0x307700[_0x1fb1('0x1a')]?_['map'](_0x307700[_0x1fb1('0x1a')],function(_0x4b4271){return{'model':db[_0x4b4271[_0x1fb1('0x1c')]],'as':_0x4b4271['as'],'attributes':_0x4b4271['attributes'],'include':_0x4b4271[_0x1fb1('0x1a')]?_['map'](_0x4b4271['include'],function(_0x25ac36){return{'model':db[_0x25ac36[_0x1fb1('0x1c')]],'as':_0x25ac36['as'],'attributes':_0x25ac36[_0x1fb1('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x1fb1('0xa')](function(_0x564ed9){logger[_0x1fb1('0xb')](_0x1fb1('0x1f'),_0x5402e9);logger[_0x1fb1('0x1e')]('ShowZohoAccount',_0x5402e9,JSON[_0x1fb1('0xf')](_0x564ed9));_0x30c8eb(_0x564ed9);})[_0x1fb1('0x13')](function(_0x228235){logger[_0x1fb1('0x10')](_0x1fb1('0x1f'),_0x228235[_0x1fb1('0x12')],_0x5402e9);_0x5d45a5(_0x245f84[_0x1fb1('0x10')](0x1f4,_0x228235['message']));});});};
\ No newline at end of file
index 888b11b..248ea15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe87f=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','create','put','/:id','update','destroy','exports','multer','util','path','express','Router'];(function(_0x120b1e,_0x4d2bec){var _0x186859=function(_0xed22d){while(--_0xed22d){_0x120b1e['push'](_0x120b1e['shift']());}};_0x186859(++_0x4d2bec);}(_0xe87f,0xa3));var _0xfe87=function(_0x1abc69,_0x2228d8){_0x1abc69=_0x1abc69-0x0;var _0x200c39=_0xe87f[_0x1abc69];return _0x200c39;};'use strict';var multer=require(_0xfe87('0x0'));var util=require(_0xfe87('0x1'));var path=require(_0xfe87('0x2'));var timeout=require('connect-timeout');var express=require(_0xfe87('0x3'));var router=express[_0xfe87('0x4')]();var fs_extra=require(_0xfe87('0x5'));var auth=require(_0xfe87('0x6'));var interaction=require(_0xfe87('0x7'));var config=require(_0xfe87('0x8'));var controller=require('./intZohoConfiguration.controller');router[_0xfe87('0x9')]('/',auth[_0xfe87('0xa')](),controller[_0xfe87('0xb')]);router[_0xfe87('0x9')]('/:id',auth[_0xfe87('0xa')](),controller[_0xfe87('0xc')]);router[_0xfe87('0x9')]('/:id/fields',auth[_0xfe87('0xa')](),controller[_0xfe87('0xd')]);router['get'](_0xfe87('0xe'),auth[_0xfe87('0xa')](),controller[_0xfe87('0xf')]);router[_0xfe87('0x9')](_0xfe87('0x10'),auth[_0xfe87('0xa')](),controller[_0xfe87('0x11')]);router['post']('/',auth[_0xfe87('0xa')](),controller[_0xfe87('0x12')]);router[_0xfe87('0x13')](_0xfe87('0x14'),auth[_0xfe87('0xa')](),controller[_0xfe87('0x15')]);router['delete'](_0xfe87('0x14'),auth[_0xfe87('0xa')](),controller[_0xfe87('0x16')]);module[_0xfe87('0x17')]=router;
\ No newline at end of file
+var _0xd692=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','/:id','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra'];(function(_0x41d383,_0x4fad5e){var _0x23bd94=function(_0x1da648){while(--_0x1da648){_0x41d383['push'](_0x41d383['shift']());}};_0x23bd94(++_0x4fad5e);}(_0xd692,0xa2));var _0x2d69=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xd692[_0x1facfa];return _0x9ec701;};'use strict';var multer=require(_0x2d69('0x0'));var util=require(_0x2d69('0x1'));var path=require(_0x2d69('0x2'));var timeout=require(_0x2d69('0x3'));var express=require(_0x2d69('0x4'));var router=express['Router']();var fs_extra=require(_0x2d69('0x5'));var auth=require(_0x2d69('0x6'));var interaction=require(_0x2d69('0x7'));var config=require(_0x2d69('0x8'));var controller=require(_0x2d69('0x9'));router[_0x2d69('0xa')]('/',auth[_0x2d69('0xb')](),controller['index']);router['get'](_0x2d69('0xc'),auth[_0x2d69('0xb')](),controller['show']);router['get'](_0x2d69('0xd'),auth[_0x2d69('0xb')](),controller[_0x2d69('0xe')]);router[_0x2d69('0xa')]('/:id/subjects',auth[_0x2d69('0xb')](),controller[_0x2d69('0xf')]);router['get'](_0x2d69('0x10'),auth[_0x2d69('0xb')](),controller[_0x2d69('0x11')]);router['post']('/',auth[_0x2d69('0xb')](),controller[_0x2d69('0x12')]);router[_0x2d69('0x13')](_0x2d69('0xc'),auth[_0x2d69('0xb')](),controller[_0x2d69('0x14')]);router[_0x2d69('0x15')](_0x2d69('0xc'),auth[_0x2d69('0xb')](),controller[_0x2d69('0x16')]);module[_0x2d69('0x17')]=router;
\ No newline at end of file
index 101ef37..46f03fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x172e=['STRING','ENUM','contact','nothing','lead','sequelize'];(function(_0x5bb608,_0x2b70e4){var _0x59011b=function(_0x8df95e){while(--_0x8df95e){_0x5bb608['push'](_0x5bb608['shift']());}};_0x59011b(++_0x2b70e4);}(_0x172e,0x1f1));var _0xe172=function(_0x480fb2,_0x3a2a22){_0x480fb2=_0x480fb2-0x0;var _0x52fd74=_0x172e[_0x480fb2];return _0x52fd74;};'use strict';var Sequelize=require(_0xe172('0x0'));module['exports']={'name':{'type':Sequelize[_0xe172('0x1')]},'moduleCreate':{'type':Sequelize[_0xe172('0x2')]('lead',_0xe172('0x3'),_0xe172('0x4')),'defaultValue':_0xe172('0x5')},'moduleSearch':{'type':Sequelize[_0xe172('0x2')]('contact_lead',_0xe172('0x3'),'lead'),'defaultValue':'contact_lead'},'description':{'type':Sequelize[_0xe172('0x1')]}};
\ No newline at end of file
+var _0x1efe=['lead','contact','nothing','contact_lead','sequelize','exports','STRING','ENUM'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x1efe,0xfc));var _0xe1ef=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x1efe[_0x3b380d];return _0x54502b;};'use strict';var Sequelize=require(_0xe1ef('0x0'));module[_0xe1ef('0x1')]={'name':{'type':Sequelize[_0xe1ef('0x2')]},'moduleCreate':{'type':Sequelize[_0xe1ef('0x3')](_0xe1ef('0x4'),_0xe1ef('0x5'),_0xe1ef('0x6')),'defaultValue':_0xe1ef('0x4')},'moduleSearch':{'type':Sequelize[_0xe1ef('0x3')](_0xe1ef('0x7'),_0xe1ef('0x5'),_0xe1ef('0x4')),'defaultValue':'contact_lead'},'description':{'type':Sequelize[_0xe1ef('0x2')]}};
\ No newline at end of file
index 91160cb..d018bfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa730=['../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','update','then','error','name','send','ZohoConfiguration','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','show','params','find','catch','create','body','getFields','findOne','ZohoField','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../config/license/hardware','../../config/logger','api'];(function(_0x4171bf,_0x4322f3){var _0x18a433=function(_0x41c545){while(--_0x41c545){_0x4171bf['push'](_0x4171bf['shift']());}};_0x18a433(++_0x4322f3);}(_0xa730,0x8a));var _0x0a73=function(_0x30af64,_0x1e0d57){_0x30af64=_0x30af64-0x0;var _0x1079f1=_0xa730[_0x30af64];return _0x1079f1;};'use strict';var emlformat=require(_0x0a73('0x0'));var rimraf=require(_0x0a73('0x1'));var zipdir=require(_0x0a73('0x2'));var jsonpatch=require(_0x0a73('0x3'));var rp=require(_0x0a73('0x4'));var moment=require(_0x0a73('0x5'));var BPromise=require(_0x0a73('0x6'));var Mustache=require(_0x0a73('0x7'));var util=require(_0x0a73('0x8'));var path=require(_0x0a73('0x9'));var sox=require(_0x0a73('0xa'));var csv=require(_0x0a73('0xb'));var ejs=require(_0x0a73('0xc'));var fs=require('fs');var fs_extra=require(_0x0a73('0xd'));var _=require(_0x0a73('0xe'));var squel=require(_0x0a73('0xf'));var crypto=require(_0x0a73('0x10'));var jsforce=require('jsforce');var deskjs=require(_0x0a73('0x11'));var toCsv=require(_0x0a73('0xb'));var querystring=require(_0x0a73('0x12'));var Papa=require(_0x0a73('0x13'));var Redis=require('ioredis');var authService=require(_0x0a73('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0a73('0x15'));var logger=require(_0x0a73('0x16'))(_0x0a73('0x17'));var utils=require('../../config/utils');var config=require(_0x0a73('0x18'));var licenseUtil=require(_0x0a73('0x19'));var db=require(_0x0a73('0x1a'))['db'];function respondWithStatusCode(_0x5ad5de,_0x3ed783){_0x3ed783=_0x3ed783||0xcc;return function(_0xa2d788){if(_0xa2d788){return _0x5ad5de[_0x0a73('0x1b')](_0x3ed783);}return _0x5ad5de[_0x0a73('0x1c')](_0x3ed783)[_0x0a73('0x1d')]();};}function respondWithResult(_0x10673d,_0x5b5b5a){_0x5b5b5a=_0x5b5b5a||0xc8;return function(_0x479553){if(_0x479553){return _0x10673d[_0x0a73('0x1c')](_0x5b5b5a)['json'](_0x479553);}};}function respondWithFilteredResult(_0x37333f,_0x58b102){return function(_0x463b95){if(_0x463b95){var _0x4d0d83=typeof _0x58b102[_0x0a73('0x1e')]==='undefined'&&typeof _0x58b102[_0x0a73('0x1f')]===_0x0a73('0x20');var _0x2a5d83=_0x463b95[_0x0a73('0x21')];var _0x308106=_0x4d0d83?0x0:_0x58b102[_0x0a73('0x1e')];var _0x3fe7ab=_0x4d0d83?_0x463b95[_0x0a73('0x21')]:_0x58b102[_0x0a73('0x1e')]+_0x58b102[_0x0a73('0x1f')];var _0x295eb1;if(_0x3fe7ab>=_0x2a5d83){_0x3fe7ab=_0x2a5d83;_0x295eb1=0xc8;}else{_0x295eb1=0xce;}_0x37333f[_0x0a73('0x1c')](_0x295eb1);return _0x37333f[_0x0a73('0x22')](_0x0a73('0x23'),_0x308106+'-'+_0x3fe7ab+'/'+_0x2a5d83)[_0x0a73('0x24')](_0x463b95);}return null;};}function patchUpdates(_0x27c497){return function(_0x504869){try{jsonpatch[_0x0a73('0x25')](_0x504869,_0x27c497,!![]);}catch(_0x542cab){return BPromise[_0x0a73('0x26')](_0x542cab);}return _0x504869['save']();};}function saveUpdates(_0x40d71d,_0xaf187f){return function(_0x3b38a7){if(_0x3b38a7){return _0x3b38a7[_0x0a73('0x27')](_0x40d71d)[_0x0a73('0x28')](function(_0xfbf8ca){return _0xfbf8ca;});}return null;};}function removeEntity(_0x59e0e8,_0x42fa09){return function(_0x30789a){if(_0x30789a){return _0x30789a['destroy']()[_0x0a73('0x28')](function(){_0x59e0e8['status'](0xcc)[_0x0a73('0x1d')]();});}};}function handleEntityNotFound(_0x2dc6d2,_0x1de122){return function(_0x19ea81){if(!_0x19ea81){_0x2dc6d2[_0x0a73('0x1b')](0x194);}return _0x19ea81;};}function handleError(_0x46ca84,_0x2720b4){_0x2720b4=_0x2720b4||0x1f4;return function(_0x3e37f){logger[_0x0a73('0x29')](_0x3e37f['stack']);if(_0x3e37f[_0x0a73('0x2a')]){delete _0x3e37f[_0x0a73('0x2a')];}_0x46ca84[_0x0a73('0x1c')](_0x2720b4)[_0x0a73('0x2b')](_0x3e37f);};}exports['index']=function(_0x526e5d,_0x4be5c2){var _0x4b574d={},_0x160d5d={},_0x39435d={'count':0x0,'rows':[]};var _0x2a161c=_['map'](db[_0x0a73('0x2c')][_0x0a73('0x2d')],function(_0x522780){return{'name':_0x522780[_0x0a73('0x2e')],'type':_0x522780[_0x0a73('0x2f')]['key']};});_0x160d5d[_0x0a73('0x30')]=_[_0x0a73('0x31')](_0x2a161c,_0x0a73('0x2a'));_0x160d5d[_0x0a73('0x32')]=_[_0x0a73('0x33')](_0x526e5d['query']);_0x160d5d[_0x0a73('0x34')]=_[_0x0a73('0x35')](_0x160d5d[_0x0a73('0x30')],_0x160d5d[_0x0a73('0x32')]);_0x4b574d[_0x0a73('0x36')]=_[_0x0a73('0x35')](_0x160d5d[_0x0a73('0x30')],qs[_0x0a73('0x37')](_0x526e5d[_0x0a73('0x32')][_0x0a73('0x37')]));_0x4b574d['attributes']=_0x4b574d[_0x0a73('0x36')][_0x0a73('0x38')]?_0x4b574d[_0x0a73('0x36')]:_0x160d5d['model'];if(!_0x526e5d[_0x0a73('0x32')][_0x0a73('0x39')](_0x0a73('0x3a'))){_0x4b574d['limit']=qs[_0x0a73('0x1f')](_0x526e5d['query'][_0x0a73('0x1f')]);_0x4b574d[_0x0a73('0x1e')]=qs[_0x0a73('0x1e')](_0x526e5d[_0x0a73('0x32')][_0x0a73('0x1e')]);}_0x4b574d[_0x0a73('0x3b')]=qs[_0x0a73('0x3c')](_0x526e5d[_0x0a73('0x32')][_0x0a73('0x3c')]);_0x4b574d[_0x0a73('0x3d')]=qs[_0x0a73('0x34')](_[_0x0a73('0x3e')](_0x526e5d[_0x0a73('0x32')],_0x160d5d[_0x0a73('0x34')]),_0x2a161c);if(_0x526e5d['query'][_0x0a73('0x3f')]){_0x4b574d[_0x0a73('0x3d')]=_[_0x0a73('0x40')](_0x4b574d[_0x0a73('0x3d')],{'$or':_[_0x0a73('0x31')](_0x2a161c,function(_0x1af560){if(_0x1af560['type']!==_0x0a73('0x41')){var _0x1d6b34={};_0x1d6b34[_0x1af560['name']]={'$like':'%'+_0x526e5d[_0x0a73('0x32')][_0x0a73('0x3f')]+'%'};return _0x1d6b34;}})});}_0x4b574d=_[_0x0a73('0x40')]({},_0x4b574d,_0x526e5d[_0x0a73('0x42')]);var _0x47f5a8={'where':_0x4b574d[_0x0a73('0x3d')]};return db[_0x0a73('0x2c')][_0x0a73('0x21')](_0x47f5a8)[_0x0a73('0x28')](function(_0x2445ef){_0x39435d[_0x0a73('0x21')]=_0x2445ef;if(_0x526e5d[_0x0a73('0x32')][_0x0a73('0x43')]){_0x4b574d[_0x0a73('0x44')]=[{'all':!![]}];}return db[_0x0a73('0x2c')]['findAll'](_0x4b574d);})[_0x0a73('0x28')](function(_0x7846e){_0x39435d[_0x0a73('0x45')]=_0x7846e;return _0x39435d;})[_0x0a73('0x28')](respondWithFilteredResult(_0x4be5c2,_0x4b574d))['catch'](handleError(_0x4be5c2,null));};exports[_0x0a73('0x46')]=function(_0x2b2b99,_0x23d38b){var _0x23a327={'raw':![],'where':{'id':_0x2b2b99[_0x0a73('0x47')]['id']}},_0x7ffc4f={};_0x7ffc4f[_0x0a73('0x30')]=_[_0x0a73('0x33')](db[_0x0a73('0x2c')][_0x0a73('0x2d')]);_0x7ffc4f[_0x0a73('0x32')]=_[_0x0a73('0x33')](_0x2b2b99['query']);_0x7ffc4f['filters']=_['intersection'](_0x7ffc4f['model'],_0x7ffc4f['query']);_0x23a327[_0x0a73('0x36')]=_[_0x0a73('0x35')](_0x7ffc4f[_0x0a73('0x30')],qs[_0x0a73('0x37')](_0x2b2b99[_0x0a73('0x32')][_0x0a73('0x37')]));_0x23a327[_0x0a73('0x36')]=_0x23a327[_0x0a73('0x36')]['length']?_0x23a327[_0x0a73('0x36')]:_0x7ffc4f[_0x0a73('0x30')];if(_0x2b2b99[_0x0a73('0x32')][_0x0a73('0x43')]){_0x23a327[_0x0a73('0x44')]=[{'all':!![]}];}_0x23a327=_['merge']({},_0x23a327,_0x2b2b99[_0x0a73('0x42')]);return db[_0x0a73('0x2c')][_0x0a73('0x48')](_0x23a327)[_0x0a73('0x28')](handleEntityNotFound(_0x23d38b,null))[_0x0a73('0x28')](respondWithResult(_0x23d38b,null))[_0x0a73('0x49')](handleError(_0x23d38b,null));};exports[_0x0a73('0x4a')]=function(_0x24f9bd,_0x78e559){return db[_0x0a73('0x2c')][_0x0a73('0x4a')](_0x24f9bd[_0x0a73('0x4b')],{})[_0x0a73('0x28')](respondWithResult(_0x78e559,0xc9))[_0x0a73('0x49')](handleError(_0x78e559,null));};exports[_0x0a73('0x27')]=function(_0x14ab29,_0x260753){if(_0x14ab29['body']['id']){delete _0x14ab29['body']['id'];}return db['ZohoConfiguration'][_0x0a73('0x48')]({'where':{'id':_0x14ab29['params']['id']}})[_0x0a73('0x28')](handleEntityNotFound(_0x260753,null))['then'](saveUpdates(_0x14ab29[_0x0a73('0x4b')],null))[_0x0a73('0x28')](respondWithResult(_0x260753,null))[_0x0a73('0x49')](handleError(_0x260753,null));};exports['destroy']=function(_0x9052a9,_0x54b819){return db[_0x0a73('0x2c')]['find']({'where':{'id':_0x9052a9[_0x0a73('0x47')]['id']}})[_0x0a73('0x28')](handleEntityNotFound(_0x54b819,null))[_0x0a73('0x28')](removeEntity(_0x54b819,null))['catch'](handleError(_0x54b819,null));};exports[_0x0a73('0x4c')]=function(_0xbf0c7c,_0x3554d4,_0x55c0b1){var _0x5b1f9f={};var _0x4c9f95={};var _0x1a5d5b;var _0x2b13ec;return db[_0x0a73('0x2c')][_0x0a73('0x4d')]({'where':{'id':_0xbf0c7c['params']['id']}})[_0x0a73('0x28')](handleEntityNotFound(_0x3554d4,null))['then'](function(_0x34fd77){if(_0x34fd77){_0x1a5d5b=_0x34fd77;_0x4c9f95[_0x0a73('0x30')]=_['keys'](db[_0x0a73('0x4e')]['rawAttributes']);_0x4c9f95[_0x0a73('0x32')]=_[_0x0a73('0x33')](_0xbf0c7c[_0x0a73('0x32')]);_0x4c9f95[_0x0a73('0x34')]=_[_0x0a73('0x35')](_0x4c9f95['model'],_0x4c9f95['query']);_0x5b1f9f['attributes']=_[_0x0a73('0x35')](_0x4c9f95['model'],qs[_0x0a73('0x37')](_0xbf0c7c['query'][_0x0a73('0x37')]));_0x5b1f9f[_0x0a73('0x36')]=_0x5b1f9f[_0x0a73('0x36')][_0x0a73('0x38')]?_0x5b1f9f[_0x0a73('0x36')]:_0x4c9f95[_0x0a73('0x30')];_0x5b1f9f[_0x0a73('0x3b')]=qs[_0x0a73('0x3c')](_0xbf0c7c[_0x0a73('0x32')][_0x0a73('0x3c')]);_0x5b1f9f[_0x0a73('0x3d')]=qs[_0x0a73('0x34')](_['pick'](_0xbf0c7c[_0x0a73('0x32')],_0x4c9f95[_0x0a73('0x34')]));if(_0xbf0c7c[_0x0a73('0x32')][_0x0a73('0x3f')]){_0x5b1f9f[_0x0a73('0x3d')]=_[_0x0a73('0x40')](_0x5b1f9f[_0x0a73('0x3d')],{'$or':_[_0x0a73('0x31')](_0x5b1f9f[_0x0a73('0x36')],function(_0x54cafd){var _0x514baf={};_0x514baf[_0x54cafd]={'$like':'%'+_0xbf0c7c[_0x0a73('0x32')][_0x0a73('0x3f')]+'%'};return _0x514baf;})});}_0x5b1f9f=_[_0x0a73('0x40')]({},_0x5b1f9f,_0xbf0c7c[_0x0a73('0x42')]);return _0x1a5d5b[_0x0a73('0x4c')](_0x5b1f9f);}})[_0x0a73('0x28')](function(_0x20f809){if(_0x20f809){_0x2b13ec=_0x20f809[_0x0a73('0x38')];if(!_0xbf0c7c['query'][_0x0a73('0x39')](_0x0a73('0x3a'))){_0x5b1f9f[_0x0a73('0x1f')]=qs['limit'](_0xbf0c7c['query']['limit']);_0x5b1f9f[_0x0a73('0x1e')]=qs[_0x0a73('0x1e')](_0xbf0c7c[_0x0a73('0x32')][_0x0a73('0x1e')]);}return _0x1a5d5b[_0x0a73('0x4c')](_0x5b1f9f);}})[_0x0a73('0x28')](function(_0x4f64da){if(_0x4f64da){return _0x4f64da?{'count':_0x2b13ec,'rows':_0x4f64da}:null;}})[_0x0a73('0x28')](respondWithResult(_0x3554d4,null))[_0x0a73('0x49')](handleError(_0x3554d4,null));};exports[_0x0a73('0x4f')]=function(_0x86bcb7,_0x1e4935,_0x52c749){var _0x245324={};var _0x26e618={};var _0x57200f;var _0x213176;return db[_0x0a73('0x2c')][_0x0a73('0x4d')]({'where':{'id':_0x86bcb7['params']['id']}})[_0x0a73('0x28')](handleEntityNotFound(_0x1e4935,null))[_0x0a73('0x28')](function(_0x3b31c1){if(_0x3b31c1){_0x57200f=_0x3b31c1;_0x26e618[_0x0a73('0x30')]=_['keys'](db['ZohoField'][_0x0a73('0x2d')]);_0x26e618[_0x0a73('0x32')]=_[_0x0a73('0x33')](_0x86bcb7[_0x0a73('0x32')]);_0x26e618[_0x0a73('0x34')]=_['intersection'](_0x26e618[_0x0a73('0x30')],_0x26e618[_0x0a73('0x32')]);_0x245324[_0x0a73('0x36')]=_[_0x0a73('0x35')](_0x26e618[_0x0a73('0x30')],qs[_0x0a73('0x37')](_0x86bcb7[_0x0a73('0x32')][_0x0a73('0x37')]));_0x245324[_0x0a73('0x36')]=_0x245324['attributes'][_0x0a73('0x38')]?_0x245324[_0x0a73('0x36')]:_0x26e618[_0x0a73('0x30')];_0x245324[_0x0a73('0x3b')]=qs[_0x0a73('0x3c')](_0x86bcb7[_0x0a73('0x32')][_0x0a73('0x3c')]);_0x245324[_0x0a73('0x3d')]=qs['filters'](_[_0x0a73('0x3e')](_0x86bcb7['query'],_0x26e618[_0x0a73('0x34')]));if(_0x86bcb7[_0x0a73('0x32')][_0x0a73('0x3f')]){_0x245324[_0x0a73('0x3d')]=_[_0x0a73('0x40')](_0x245324[_0x0a73('0x3d')],{'$or':_[_0x0a73('0x31')](_0x245324[_0x0a73('0x36')],function(_0x2a00a1){var _0x498e89={};_0x498e89[_0x2a00a1]={'$like':'%'+_0x86bcb7[_0x0a73('0x32')][_0x0a73('0x3f')]+'%'};return _0x498e89;})});}_0x245324=_[_0x0a73('0x40')]({},_0x245324,_0x86bcb7[_0x0a73('0x42')]);return _0x57200f[_0x0a73('0x4f')](_0x245324);}})[_0x0a73('0x28')](function(_0x4d759c){if(_0x4d759c){_0x213176=_0x4d759c[_0x0a73('0x38')];if(!_0x86bcb7[_0x0a73('0x32')]['hasOwnProperty'](_0x0a73('0x3a'))){_0x245324[_0x0a73('0x1f')]=qs[_0x0a73('0x1f')](_0x86bcb7[_0x0a73('0x32')][_0x0a73('0x1f')]);_0x245324['offset']=qs[_0x0a73('0x1e')](_0x86bcb7[_0x0a73('0x32')][_0x0a73('0x1e')]);}return _0x57200f[_0x0a73('0x4f')](_0x245324);}})[_0x0a73('0x28')](function(_0x20f0ac){if(_0x20f0ac){return _0x20f0ac?{'count':_0x213176,'rows':_0x20f0ac}:null;}})[_0x0a73('0x28')](respondWithResult(_0x1e4935,null))['catch'](handleError(_0x1e4935,null));};exports[_0x0a73('0x50')]=function(_0x183cae,_0x4e4e78,_0xc9c705){var _0x28fd20={};var _0x408e6a={};var _0x29ba97;var _0x17b326;return db[_0x0a73('0x2c')][_0x0a73('0x4d')]({'where':{'id':_0x183cae['params']['id']}})[_0x0a73('0x28')](handleEntityNotFound(_0x4e4e78,null))[_0x0a73('0x28')](function(_0x2609cc){if(_0x2609cc){_0x29ba97=_0x2609cc;_0x408e6a[_0x0a73('0x30')]=_[_0x0a73('0x33')](db[_0x0a73('0x4e')][_0x0a73('0x2d')]);_0x408e6a[_0x0a73('0x32')]=_[_0x0a73('0x33')](_0x183cae['query']);_0x408e6a['filters']=_['intersection'](_0x408e6a[_0x0a73('0x30')],_0x408e6a[_0x0a73('0x32')]);_0x28fd20[_0x0a73('0x36')]=_['intersection'](_0x408e6a[_0x0a73('0x30')],qs['fields'](_0x183cae['query'][_0x0a73('0x37')]));_0x28fd20['attributes']=_0x28fd20['attributes']['length']?_0x28fd20['attributes']:_0x408e6a[_0x0a73('0x30')];_0x28fd20[_0x0a73('0x3b')]=qs['sort'](_0x183cae[_0x0a73('0x32')][_0x0a73('0x3c')]);_0x28fd20['where']=qs[_0x0a73('0x34')](_[_0x0a73('0x3e')](_0x183cae[_0x0a73('0x32')],_0x408e6a[_0x0a73('0x34')]));if(_0x183cae['query'][_0x0a73('0x3f')]){_0x28fd20[_0x0a73('0x3d')]=_[_0x0a73('0x40')](_0x28fd20[_0x0a73('0x3d')],{'$or':_['map'](_0x28fd20[_0x0a73('0x36')],function(_0xfa0e3e){var _0x2cdd6e={};_0x2cdd6e[_0xfa0e3e]={'$like':'%'+_0x183cae[_0x0a73('0x32')]['filter']+'%'};return _0x2cdd6e;})});}_0x28fd20=_[_0x0a73('0x40')]({},_0x28fd20,_0x183cae['options']);return _0x29ba97[_0x0a73('0x50')](_0x28fd20);}})[_0x0a73('0x28')](function(_0x2fb083){if(_0x2fb083){_0x17b326=_0x2fb083[_0x0a73('0x38')];if(!_0x183cae[_0x0a73('0x32')]['hasOwnProperty'](_0x0a73('0x3a'))){_0x28fd20[_0x0a73('0x1f')]=qs['limit'](_0x183cae[_0x0a73('0x32')][_0x0a73('0x1f')]);_0x28fd20[_0x0a73('0x1e')]=qs[_0x0a73('0x1e')](_0x183cae[_0x0a73('0x32')][_0x0a73('0x1e')]);}return _0x29ba97[_0x0a73('0x50')](_0x28fd20);}})[_0x0a73('0x28')](function(_0x1461b9){if(_0x1461b9){return _0x1461b9?{'count':_0x17b326,'rows':_0x1461b9}:null;}})['then'](respondWithResult(_0x4e4e78,null))[_0x0a73('0x49')](handleError(_0x4e4e78,null));};
\ No newline at end of file
+var _0x98dc=['map','ZohoConfiguration','rawAttributes','fieldName','type','key','model','query','keys','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','filters','intersection','find','create','body','getFields','findOne','order','ZohoField','getSubjects','getDescriptions','eml-format','zip-dir','fast-json-patch','bluebird','path','sox','ejs','fs-extra','lodash','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','end','status','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','then','error','stack','name','send','index'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x98dc,0x77));var _0xc98d=function(_0x423615,_0x134890){_0x423615=_0x423615-0x0;var _0x5512c1=_0x98dc[_0x423615];return _0x5512c1;};'use strict';var emlformat=require(_0xc98d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc98d('0x1'));var jsonpatch=require(_0xc98d('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xc98d('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xc98d('0x4'));var sox=require(_0xc98d('0x5'));var csv=require('to-csv');var ejs=require(_0xc98d('0x6'));var fs=require('fs');var fs_extra=require(_0xc98d('0x7'));var _=require(_0xc98d('0x8'));var squel=require(_0xc98d('0x9'));var crypto=require(_0xc98d('0xa'));var jsforce=require(_0xc98d('0xb'));var deskjs=require(_0xc98d('0xc'));var toCsv=require(_0xc98d('0xd'));var querystring=require(_0xc98d('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xc98d('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xc98d('0x10'));var hardwareService=require(_0xc98d('0x11'));var logger=require(_0xc98d('0x12'))('api');var utils=require('../../config/utils');var config=require(_0xc98d('0x13'));var licenseUtil=require(_0xc98d('0x14'));var db=require(_0xc98d('0x15'))['db'];function respondWithStatusCode(_0x2167c5,_0x145adb){_0x145adb=_0x145adb||0xcc;return function(_0x5abef4){if(_0x5abef4){return _0x2167c5[_0xc98d('0x16')](_0x145adb);}return _0x2167c5['status'](_0x145adb)[_0xc98d('0x17')]();};}function respondWithResult(_0x150757,_0x239c01){_0x239c01=_0x239c01||0xc8;return function(_0x3998af){if(_0x3998af){return _0x150757[_0xc98d('0x18')](_0x239c01)['json'](_0x3998af);}};}function respondWithFilteredResult(_0x1a72f4,_0x1d48e9){return function(_0x3e3c3a){if(_0x3e3c3a){var _0x239eb6=typeof _0x1d48e9[_0xc98d('0x19')]===_0xc98d('0x1a')&&typeof _0x1d48e9[_0xc98d('0x1b')]===_0xc98d('0x1a');var _0x3841be=_0x3e3c3a['count'];var _0x33d661=_0x239eb6?0x0:_0x1d48e9[_0xc98d('0x19')];var _0x12c022=_0x239eb6?_0x3e3c3a[_0xc98d('0x1c')]:_0x1d48e9[_0xc98d('0x19')]+_0x1d48e9['limit'];var _0x3cca25;if(_0x12c022>=_0x3841be){_0x12c022=_0x3841be;_0x3cca25=0xc8;}else{_0x3cca25=0xce;}_0x1a72f4[_0xc98d('0x18')](_0x3cca25);return _0x1a72f4[_0xc98d('0x1d')](_0xc98d('0x1e'),_0x33d661+'-'+_0x12c022+'/'+_0x3841be)['json'](_0x3e3c3a);}return null;};}function patchUpdates(_0x5a69a8){return function(_0x51036b){try{jsonpatch[_0xc98d('0x1f')](_0x51036b,_0x5a69a8,!![]);}catch(_0x9f4fe3){return BPromise[_0xc98d('0x20')](_0x9f4fe3);}return _0x51036b['save']();};}function saveUpdates(_0x25370c,_0x1d23bc){return function(_0x11f216){if(_0x11f216){return _0x11f216[_0xc98d('0x21')](_0x25370c)['then'](function(_0x2013d4){return _0x2013d4;});}return null;};}function removeEntity(_0x24ea6b,_0x54ede2){return function(_0x50270d){if(_0x50270d){return _0x50270d[_0xc98d('0x22')]()[_0xc98d('0x23')](function(){_0x24ea6b[_0xc98d('0x18')](0xcc)[_0xc98d('0x17')]();});}};}function handleEntityNotFound(_0x57f8d3,_0x28468d){return function(_0x33832f){if(!_0x33832f){_0x57f8d3[_0xc98d('0x16')](0x194);}return _0x33832f;};}function handleError(_0x5470b1,_0x1a1f36){_0x1a1f36=_0x1a1f36||0x1f4;return function(_0x246e66){logger[_0xc98d('0x24')](_0x246e66[_0xc98d('0x25')]);if(_0x246e66['name']){delete _0x246e66[_0xc98d('0x26')];}_0x5470b1[_0xc98d('0x18')](_0x1a1f36)[_0xc98d('0x27')](_0x246e66);};}exports[_0xc98d('0x28')]=function(_0x3db5d5,_0x1443d9){var _0x1e73d1={},_0x4ab81c={},_0x1c0bec={'count':0x0,'rows':[]};var _0x923a30=_[_0xc98d('0x29')](db[_0xc98d('0x2a')][_0xc98d('0x2b')],function(_0x306a73){return{'name':_0x306a73[_0xc98d('0x2c')],'type':_0x306a73[_0xc98d('0x2d')][_0xc98d('0x2e')]};});_0x4ab81c[_0xc98d('0x2f')]=_[_0xc98d('0x29')](_0x923a30,_0xc98d('0x26'));_0x4ab81c[_0xc98d('0x30')]=_[_0xc98d('0x31')](_0x3db5d5[_0xc98d('0x30')]);_0x4ab81c['filters']=_['intersection'](_0x4ab81c[_0xc98d('0x2f')],_0x4ab81c[_0xc98d('0x30')]);_0x1e73d1[_0xc98d('0x32')]=_['intersection'](_0x4ab81c[_0xc98d('0x2f')],qs[_0xc98d('0x33')](_0x3db5d5[_0xc98d('0x30')]['fields']));_0x1e73d1['attributes']=_0x1e73d1[_0xc98d('0x32')][_0xc98d('0x34')]?_0x1e73d1[_0xc98d('0x32')]:_0x4ab81c[_0xc98d('0x2f')];if(!_0x3db5d5[_0xc98d('0x30')][_0xc98d('0x35')](_0xc98d('0x36'))){_0x1e73d1[_0xc98d('0x1b')]=qs[_0xc98d('0x1b')](_0x3db5d5[_0xc98d('0x30')][_0xc98d('0x1b')]);_0x1e73d1['offset']=qs[_0xc98d('0x19')](_0x3db5d5[_0xc98d('0x30')]['offset']);}_0x1e73d1['order']=qs[_0xc98d('0x37')](_0x3db5d5[_0xc98d('0x30')][_0xc98d('0x37')]);_0x1e73d1[_0xc98d('0x38')]=qs['filters'](_[_0xc98d('0x39')](_0x3db5d5[_0xc98d('0x30')],_0x4ab81c['filters']),_0x923a30);if(_0x3db5d5['query'][_0xc98d('0x3a')]){_0x1e73d1[_0xc98d('0x38')]=_[_0xc98d('0x3b')](_0x1e73d1[_0xc98d('0x38')],{'$or':_[_0xc98d('0x29')](_0x923a30,function(_0x5e4f14){if(_0x5e4f14[_0xc98d('0x2d')]!==_0xc98d('0x3c')){var _0x4da6eb={};_0x4da6eb[_0x5e4f14[_0xc98d('0x26')]]={'$like':'%'+_0x3db5d5[_0xc98d('0x30')][_0xc98d('0x3a')]+'%'};return _0x4da6eb;}})});}_0x1e73d1=_[_0xc98d('0x3b')]({},_0x1e73d1,_0x3db5d5[_0xc98d('0x3d')]);var _0x58b82a={'where':_0x1e73d1['where']};return db['ZohoConfiguration'][_0xc98d('0x1c')](_0x58b82a)['then'](function(_0x281232){_0x1c0bec[_0xc98d('0x1c')]=_0x281232;if(_0x3db5d5[_0xc98d('0x30')][_0xc98d('0x3e')]){_0x1e73d1[_0xc98d('0x3f')]=[{'all':!![]}];}return db['ZohoConfiguration'][_0xc98d('0x40')](_0x1e73d1);})['then'](function(_0x2e314f){_0x1c0bec[_0xc98d('0x41')]=_0x2e314f;return _0x1c0bec;})[_0xc98d('0x23')](respondWithFilteredResult(_0x1443d9,_0x1e73d1))[_0xc98d('0x42')](handleError(_0x1443d9,null));};exports[_0xc98d('0x43')]=function(_0x2346f9,_0x94ac0b){var _0x4ac1c3={'raw':![],'where':{'id':_0x2346f9[_0xc98d('0x44')]['id']}},_0x378987={};_0x378987[_0xc98d('0x2f')]=_[_0xc98d('0x31')](db[_0xc98d('0x2a')][_0xc98d('0x2b')]);_0x378987['query']=_[_0xc98d('0x31')](_0x2346f9[_0xc98d('0x30')]);_0x378987[_0xc98d('0x45')]=_[_0xc98d('0x46')](_0x378987['model'],_0x378987[_0xc98d('0x30')]);_0x4ac1c3[_0xc98d('0x32')]=_['intersection'](_0x378987['model'],qs[_0xc98d('0x33')](_0x2346f9[_0xc98d('0x30')][_0xc98d('0x33')]));_0x4ac1c3[_0xc98d('0x32')]=_0x4ac1c3[_0xc98d('0x32')]['length']?_0x4ac1c3[_0xc98d('0x32')]:_0x378987[_0xc98d('0x2f')];if(_0x2346f9[_0xc98d('0x30')][_0xc98d('0x3e')]){_0x4ac1c3[_0xc98d('0x3f')]=[{'all':!![]}];}_0x4ac1c3=_[_0xc98d('0x3b')]({},_0x4ac1c3,_0x2346f9[_0xc98d('0x3d')]);return db['ZohoConfiguration'][_0xc98d('0x47')](_0x4ac1c3)[_0xc98d('0x23')](handleEntityNotFound(_0x94ac0b,null))[_0xc98d('0x23')](respondWithResult(_0x94ac0b,null))[_0xc98d('0x42')](handleError(_0x94ac0b,null));};exports[_0xc98d('0x48')]=function(_0x31870b,_0x477823){return db['ZohoConfiguration'][_0xc98d('0x48')](_0x31870b[_0xc98d('0x49')],{})['then'](respondWithResult(_0x477823,0xc9))[_0xc98d('0x42')](handleError(_0x477823,null));};exports[_0xc98d('0x21')]=function(_0xd1981c,_0xa0781a){if(_0xd1981c[_0xc98d('0x49')]['id']){delete _0xd1981c[_0xc98d('0x49')]['id'];}return db[_0xc98d('0x2a')]['find']({'where':{'id':_0xd1981c[_0xc98d('0x44')]['id']}})[_0xc98d('0x23')](handleEntityNotFound(_0xa0781a,null))['then'](saveUpdates(_0xd1981c[_0xc98d('0x49')],null))[_0xc98d('0x23')](respondWithResult(_0xa0781a,null))[_0xc98d('0x42')](handleError(_0xa0781a,null));};exports[_0xc98d('0x22')]=function(_0x201cfb,_0x52183e){return db[_0xc98d('0x2a')][_0xc98d('0x47')]({'where':{'id':_0x201cfb[_0xc98d('0x44')]['id']}})[_0xc98d('0x23')](handleEntityNotFound(_0x52183e,null))[_0xc98d('0x23')](removeEntity(_0x52183e,null))[_0xc98d('0x42')](handleError(_0x52183e,null));};exports[_0xc98d('0x4a')]=function(_0x1e888e,_0x1a380a,_0x269cfa){var _0x39e2db={};var _0x48cc61={};var _0x31308d;var _0x372467;return db['ZohoConfiguration'][_0xc98d('0x4b')]({'where':{'id':_0x1e888e[_0xc98d('0x44')]['id']}})['then'](handleEntityNotFound(_0x1a380a,null))[_0xc98d('0x23')](function(_0x25a3b7){if(_0x25a3b7){_0x31308d=_0x25a3b7;_0x48cc61['model']=_[_0xc98d('0x31')](db['ZohoField'][_0xc98d('0x2b')]);_0x48cc61[_0xc98d('0x30')]=_['keys'](_0x1e888e[_0xc98d('0x30')]);_0x48cc61[_0xc98d('0x45')]=_['intersection'](_0x48cc61['model'],_0x48cc61[_0xc98d('0x30')]);_0x39e2db[_0xc98d('0x32')]=_[_0xc98d('0x46')](_0x48cc61['model'],qs[_0xc98d('0x33')](_0x1e888e['query'][_0xc98d('0x33')]));_0x39e2db[_0xc98d('0x32')]=_0x39e2db['attributes'][_0xc98d('0x34')]?_0x39e2db['attributes']:_0x48cc61[_0xc98d('0x2f')];_0x39e2db[_0xc98d('0x4c')]=qs[_0xc98d('0x37')](_0x1e888e['query'][_0xc98d('0x37')]);_0x39e2db[_0xc98d('0x38')]=qs[_0xc98d('0x45')](_[_0xc98d('0x39')](_0x1e888e[_0xc98d('0x30')],_0x48cc61[_0xc98d('0x45')]));if(_0x1e888e[_0xc98d('0x30')][_0xc98d('0x3a')]){_0x39e2db[_0xc98d('0x38')]=_['merge'](_0x39e2db[_0xc98d('0x38')],{'$or':_[_0xc98d('0x29')](_0x39e2db[_0xc98d('0x32')],function(_0x296edf){var _0x315eba={};_0x315eba[_0x296edf]={'$like':'%'+_0x1e888e[_0xc98d('0x30')]['filter']+'%'};return _0x315eba;})});}_0x39e2db=_[_0xc98d('0x3b')]({},_0x39e2db,_0x1e888e[_0xc98d('0x3d')]);return _0x31308d['getFields'](_0x39e2db);}})[_0xc98d('0x23')](function(_0x19b84c){if(_0x19b84c){_0x372467=_0x19b84c[_0xc98d('0x34')];if(!_0x1e888e[_0xc98d('0x30')][_0xc98d('0x35')](_0xc98d('0x36'))){_0x39e2db[_0xc98d('0x1b')]=qs['limit'](_0x1e888e['query'][_0xc98d('0x1b')]);_0x39e2db[_0xc98d('0x19')]=qs['offset'](_0x1e888e[_0xc98d('0x30')][_0xc98d('0x19')]);}return _0x31308d[_0xc98d('0x4a')](_0x39e2db);}})[_0xc98d('0x23')](function(_0x50fb81){if(_0x50fb81){return _0x50fb81?{'count':_0x372467,'rows':_0x50fb81}:null;}})[_0xc98d('0x23')](respondWithResult(_0x1a380a,null))['catch'](handleError(_0x1a380a,null));};exports['getSubjects']=function(_0x2bf7d0,_0xd25d7b,_0x36689b){var _0x1469d0={};var _0xbca07d={};var _0x3dd0eb;var _0x242ac8;return db[_0xc98d('0x2a')][_0xc98d('0x4b')]({'where':{'id':_0x2bf7d0['params']['id']}})[_0xc98d('0x23')](handleEntityNotFound(_0xd25d7b,null))[_0xc98d('0x23')](function(_0x168c9b){if(_0x168c9b){_0x3dd0eb=_0x168c9b;_0xbca07d['model']=_['keys'](db[_0xc98d('0x4d')][_0xc98d('0x2b')]);_0xbca07d[_0xc98d('0x30')]=_[_0xc98d('0x31')](_0x2bf7d0[_0xc98d('0x30')]);_0xbca07d[_0xc98d('0x45')]=_[_0xc98d('0x46')](_0xbca07d[_0xc98d('0x2f')],_0xbca07d[_0xc98d('0x30')]);_0x1469d0[_0xc98d('0x32')]=_[_0xc98d('0x46')](_0xbca07d[_0xc98d('0x2f')],qs[_0xc98d('0x33')](_0x2bf7d0[_0xc98d('0x30')][_0xc98d('0x33')]));_0x1469d0[_0xc98d('0x32')]=_0x1469d0[_0xc98d('0x32')][_0xc98d('0x34')]?_0x1469d0[_0xc98d('0x32')]:_0xbca07d[_0xc98d('0x2f')];_0x1469d0[_0xc98d('0x4c')]=qs[_0xc98d('0x37')](_0x2bf7d0[_0xc98d('0x30')][_0xc98d('0x37')]);_0x1469d0['where']=qs[_0xc98d('0x45')](_['pick'](_0x2bf7d0['query'],_0xbca07d[_0xc98d('0x45')]));if(_0x2bf7d0[_0xc98d('0x30')][_0xc98d('0x3a')]){_0x1469d0[_0xc98d('0x38')]=_[_0xc98d('0x3b')](_0x1469d0[_0xc98d('0x38')],{'$or':_['map'](_0x1469d0[_0xc98d('0x32')],function(_0x48076f){var _0x3ecba5={};_0x3ecba5[_0x48076f]={'$like':'%'+_0x2bf7d0['query']['filter']+'%'};return _0x3ecba5;})});}_0x1469d0=_[_0xc98d('0x3b')]({},_0x1469d0,_0x2bf7d0[_0xc98d('0x3d')]);return _0x3dd0eb[_0xc98d('0x4e')](_0x1469d0);}})[_0xc98d('0x23')](function(_0xe88c14){if(_0xe88c14){_0x242ac8=_0xe88c14[_0xc98d('0x34')];if(!_0x2bf7d0[_0xc98d('0x30')][_0xc98d('0x35')]('nolimit')){_0x1469d0[_0xc98d('0x1b')]=qs[_0xc98d('0x1b')](_0x2bf7d0[_0xc98d('0x30')][_0xc98d('0x1b')]);_0x1469d0[_0xc98d('0x19')]=qs[_0xc98d('0x19')](_0x2bf7d0[_0xc98d('0x30')][_0xc98d('0x19')]);}return _0x3dd0eb['getSubjects'](_0x1469d0);}})[_0xc98d('0x23')](function(_0x494701){if(_0x494701){return _0x494701?{'count':_0x242ac8,'rows':_0x494701}:null;}})[_0xc98d('0x23')](respondWithResult(_0xd25d7b,null))[_0xc98d('0x42')](handleError(_0xd25d7b,null));};exports[_0xc98d('0x4f')]=function(_0x589a9d,_0x8e5860,_0x5512c2){var _0x34fdc3={};var _0x4a61c2={};var _0x5369f7;var _0x27b367;return db[_0xc98d('0x2a')][_0xc98d('0x4b')]({'where':{'id':_0x589a9d['params']['id']}})[_0xc98d('0x23')](handleEntityNotFound(_0x8e5860,null))[_0xc98d('0x23')](function(_0x3d68b5){if(_0x3d68b5){_0x5369f7=_0x3d68b5;_0x4a61c2[_0xc98d('0x2f')]=_[_0xc98d('0x31')](db[_0xc98d('0x4d')][_0xc98d('0x2b')]);_0x4a61c2[_0xc98d('0x30')]=_[_0xc98d('0x31')](_0x589a9d['query']);_0x4a61c2['filters']=_[_0xc98d('0x46')](_0x4a61c2[_0xc98d('0x2f')],_0x4a61c2[_0xc98d('0x30')]);_0x34fdc3[_0xc98d('0x32')]=_[_0xc98d('0x46')](_0x4a61c2[_0xc98d('0x2f')],qs[_0xc98d('0x33')](_0x589a9d[_0xc98d('0x30')][_0xc98d('0x33')]));_0x34fdc3[_0xc98d('0x32')]=_0x34fdc3['attributes'][_0xc98d('0x34')]?_0x34fdc3[_0xc98d('0x32')]:_0x4a61c2[_0xc98d('0x2f')];_0x34fdc3[_0xc98d('0x4c')]=qs['sort'](_0x589a9d[_0xc98d('0x30')]['sort']);_0x34fdc3['where']=qs[_0xc98d('0x45')](_[_0xc98d('0x39')](_0x589a9d[_0xc98d('0x30')],_0x4a61c2[_0xc98d('0x45')]));if(_0x589a9d[_0xc98d('0x30')][_0xc98d('0x3a')]){_0x34fdc3[_0xc98d('0x38')]=_['merge'](_0x34fdc3[_0xc98d('0x38')],{'$or':_[_0xc98d('0x29')](_0x34fdc3[_0xc98d('0x32')],function(_0x3f7879){var _0x3a53d8={};_0x3a53d8[_0x3f7879]={'$like':'%'+_0x589a9d[_0xc98d('0x30')]['filter']+'%'};return _0x3a53d8;})});}_0x34fdc3=_['merge']({},_0x34fdc3,_0x589a9d['options']);return _0x5369f7[_0xc98d('0x4f')](_0x34fdc3);}})[_0xc98d('0x23')](function(_0x1384e0){if(_0x1384e0){_0x27b367=_0x1384e0['length'];if(!_0x589a9d['query'][_0xc98d('0x35')](_0xc98d('0x36'))){_0x34fdc3['limit']=qs[_0xc98d('0x1b')](_0x589a9d['query'][_0xc98d('0x1b')]);_0x34fdc3[_0xc98d('0x19')]=qs[_0xc98d('0x19')](_0x589a9d[_0xc98d('0x30')][_0xc98d('0x19')]);}return _0x5369f7[_0xc98d('0x4f')](_0x34fdc3);}})[_0xc98d('0x23')](function(_0x44c78b){if(_0x44c78b){return _0x44c78b?{'count':_0x27b367,'rows':_0x44c78b}:null;}})['then'](respondWithResult(_0x8e5860,null))[_0xc98d('0x42')](handleError(_0x8e5860,null));};
\ No newline at end of file
index 1cfd5e2..deba406 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4115=['exports','define','int_zoho_configurations','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment'];(function(_0x5dc375,_0x13515b){var _0xc1976a=function(_0x6cd12d){while(--_0x6cd12d){_0x5dc375['push'](_0x5dc375['shift']());}};_0xc1976a(++_0x13515b);}(_0x4115,0x1b0));var _0x5411=function(_0x2080a3,_0x48acfa){_0x2080a3=_0x2080a3-0x0;var _0x8d7d17=_0x4115[_0x2080a3];return _0x8d7d17;};'use strict';var _=require(_0x5411('0x0'));var util=require(_0x5411('0x1'));var logger=require(_0x5411('0x2'))(_0x5411('0x3'));var moment=require(_0x5411('0x4'));var BPromise=require('bluebird');var rp=require(_0x5411('0x5'));var fs=require('fs');var path=require(_0x5411('0x6'));var rimraf=require('rimraf');var config=require(_0x5411('0x7'));var attributes=require('./intZohoConfiguration.attributes');module[_0x5411('0x8')]=function(_0x36b6e2,_0x2578c1){return _0x36b6e2[_0x5411('0x9')]('ZohoConfiguration',attributes,{'tableName':_0x5411('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf746=['util','../../config/logger','bluebird','request-promise','../../config/environment','./intZohoConfiguration.attributes','exports','define','ZohoConfiguration','lodash'];(function(_0xc4001c,_0x1bf8f0){var _0x49f7bc=function(_0x1059b8){while(--_0x1059b8){_0xc4001c['push'](_0xc4001c['shift']());}};_0x49f7bc(++_0x1bf8f0);}(_0xf746,0x18f));var _0x6f74=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xf746[_0x1d1779];return _0x2377e9;};'use strict';var _=require(_0x6f74('0x0'));var util=require(_0x6f74('0x1'));var logger=require(_0x6f74('0x2'))('api');var moment=require('moment');var BPromise=require(_0x6f74('0x3'));var rp=require(_0x6f74('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x6f74('0x5'));var attributes=require(_0x6f74('0x6'));module[_0x6f74('0x7')]=function(_0x44440d,_0x50bb8a){return _0x44440d[_0x6f74('0x8')](_0x6f74('0x9'),attributes,{'tableName':'int_zoho_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 14a27e7..0c56487 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbac7=['message','info','catch','lodash','util','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','error','code','ZohoConfiguration,\x20%s,\x20%s'];(function(_0x1e3c16,_0x372caa){var _0x47a0c9=function(_0x47f81d){while(--_0x47f81d){_0x1e3c16['push'](_0x1e3c16['shift']());}};_0x47a0c9(++_0x372caa);}(_0xbac7,0x157));var _0x7bac=function(_0x235838,_0x463aed){_0x235838=_0x235838-0x0;var _0x52d035=_0xbac7[_0x235838];return _0x52d035;};'use strict';var _=require(_0x7bac('0x0'));var util=require(_0x7bac('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7bac('0x2'))['db'];var utils=require(_0x7bac('0x3'));var logger=require(_0x7bac('0x4'))(_0x7bac('0x5'));var config=require(_0x7bac('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x7bac('0x7')][_0x7bac('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x124cb6,_0x954bd7,_0x578032){return new BPromise(function(_0x2d4239,_0x3add7f){return client[_0x7bac('0x9')](_0x124cb6,_0x578032)[_0x7bac('0xa')](function(_0x4cd112){logger['info']('ZohoConfiguration,\x20%s,\x20%s',_0x954bd7,_0x7bac('0xb'));logger[_0x7bac('0xc')](_0x7bac('0xd'),_0x954bd7,_0x7bac('0xb'),JSON['stringify'](_0x4cd112));if(_0x4cd112[_0x7bac('0xe')]){if(_0x4cd112['error'][_0x7bac('0xf')]===0x1f4){logger[_0x7bac('0xe')](_0x7bac('0x10'),_0x954bd7,_0x4cd112[_0x7bac('0xe')][_0x7bac('0x11')]);return _0x3add7f(_0x4cd112[_0x7bac('0xe')][_0x7bac('0x11')]);}logger[_0x7bac('0xe')]('ZohoConfiguration,\x20%s,\x20%s',_0x954bd7,_0x4cd112[_0x7bac('0xe')][_0x7bac('0x11')]);return _0x2d4239(_0x4cd112[_0x7bac('0xe')][_0x7bac('0x11')]);}else{logger[_0x7bac('0x12')](_0x7bac('0x10'),_0x954bd7,_0x7bac('0xb'));_0x2d4239(_0x4cd112['result'][_0x7bac('0x11')]);}})[_0x7bac('0x13')](function(_0x2245ce){logger['error'](_0x7bac('0x10'),_0x954bd7,_0x2245ce);_0x3add7f(_0x2245ce);});});}
\ No newline at end of file
+var _0xa6ba=['jayson/promise','client','request','info','ZohoConfiguration,\x20%s,\x20%s','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','moment','ioredis','../../config/logger','rpc','../../config/environment'];(function(_0x1ae2f3,_0x23b31f){var _0x38b8d5=function(_0x1a8df6){while(--_0x1a8df6){_0x1ae2f3['push'](_0x1ae2f3['shift']());}};_0x38b8d5(++_0x23b31f);}(_0xa6ba,0x176));var _0xaa6b=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa6ba[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0xaa6b('0x0'));var util=require('util');var moment=require(_0xaa6b('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xaa6b('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xaa6b('0x3'))(_0xaa6b('0x4'));var config=require(_0xaa6b('0x5'));var jayson=require(_0xaa6b('0x6'));var client=jayson[_0xaa6b('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0xf8a78b,_0x302c60,_0x3323df){return new BPromise(function(_0x158091,_0x74651){return client[_0xaa6b('0x8')](_0xf8a78b,_0x3323df)['then'](function(_0x93af3b){logger[_0xaa6b('0x9')](_0xaa6b('0xa'),_0x302c60,'request\x20sent');logger[_0xaa6b('0xb')](_0xaa6b('0xc'),_0x302c60,_0xaa6b('0xd'),JSON[_0xaa6b('0xe')](_0x93af3b));if(_0x93af3b[_0xaa6b('0xf')]){if(_0x93af3b['error'][_0xaa6b('0x10')]===0x1f4){logger[_0xaa6b('0xf')](_0xaa6b('0xa'),_0x302c60,_0x93af3b[_0xaa6b('0xf')]['message']);return _0x74651(_0x93af3b[_0xaa6b('0xf')][_0xaa6b('0x11')]);}logger['error'](_0xaa6b('0xa'),_0x302c60,_0x93af3b['error']['message']);return _0x158091(_0x93af3b['error'][_0xaa6b('0x11')]);}else{logger[_0xaa6b('0x9')]('ZohoConfiguration,\x20%s,\x20%s',_0x302c60,_0xaa6b('0xd'));_0x158091(_0x93af3b[_0xaa6b('0x12')][_0xaa6b('0x11')]);}})[_0xaa6b('0x13')](function(_0x1c06ed){logger[_0xaa6b('0xf')]('ZohoConfiguration,\x20%s,\x20%s',_0x302c60,_0x1c06ed);_0x74651(_0x1c06ed);});});}
\ No newline at end of file
index c64d696..7550224 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e9c=['exports','multer','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./intZohoField.controller','get','isAuthenticated','index','/:id','post','update','delete'];(function(_0xb6b025,_0x1046c3){var _0x4c7e8d=function(_0x4611f8){while(--_0x4611f8){_0xb6b025['push'](_0xb6b025['shift']());}};_0x4c7e8d(++_0x1046c3);}(_0x4e9c,0x91));var _0xc4e9=function(_0x3ae1a1,_0xc9e35f){_0x3ae1a1=_0x3ae1a1-0x0;var _0x228435=_0x4e9c[_0x3ae1a1];return _0x228435;};'use strict';var multer=require(_0xc4e9('0x0'));var util=require('util');var path=require(_0xc4e9('0x1'));var timeout=require(_0xc4e9('0x2'));var express=require(_0xc4e9('0x3'));var router=express[_0xc4e9('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xc4e9('0x5'));var config=require(_0xc4e9('0x6'));var controller=require(_0xc4e9('0x7'));router[_0xc4e9('0x8')]('/',auth[_0xc4e9('0x9')](),controller[_0xc4e9('0xa')]);router[_0xc4e9('0x8')](_0xc4e9('0xb'),auth[_0xc4e9('0x9')](),controller['show']);router[_0xc4e9('0xc')]('/',auth[_0xc4e9('0x9')](),controller['create']);router['put'](_0xc4e9('0xb'),auth[_0xc4e9('0x9')](),controller[_0xc4e9('0xd')]);router[_0xc4e9('0xe')](_0xc4e9('0xb'),auth[_0xc4e9('0x9')](),controller['destroy']);module[_0xc4e9('0xf')]=router;
\ No newline at end of file
+var _0xd304=['show','post','create','delete','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intZohoField.controller','isAuthenticated','index','get','/:id'];(function(_0x768458,_0x3d0933){var _0x31385c=function(_0xf11dad){while(--_0xf11dad){_0x768458['push'](_0x768458['shift']());}};_0x31385c(++_0x3d0933);}(_0xd304,0x1b7));var _0x4d30=function(_0xc0adfc,_0x11c8b3){_0xc0adfc=_0xc0adfc-0x0;var _0x3514bf=_0xd304[_0xc0adfc];return _0x3514bf;};'use strict';var multer=require('multer');var util=require(_0x4d30('0x0'));var path=require('path');var timeout=require(_0x4d30('0x1'));var express=require(_0x4d30('0x2'));var router=express[_0x4d30('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x4d30('0x4'));var interaction=require(_0x4d30('0x5'));var config=require('../../config/environment');var controller=require(_0x4d30('0x6'));router['get']('/',auth[_0x4d30('0x7')](),controller[_0x4d30('0x8')]);router[_0x4d30('0x9')](_0x4d30('0xa'),auth[_0x4d30('0x7')](),controller[_0x4d30('0xb')]);router[_0x4d30('0xc')]('/',auth['isAuthenticated'](),controller[_0x4d30('0xd')]);router['put'](_0x4d30('0xa'),auth['isAuthenticated'](),controller['update']);router[_0x4d30('0xe')](_0x4d30('0xa'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 66518a4..20fab10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2888=['string','STRING','BOOLEAN','exports','ENUM','variable','keyValue','picklist'];(function(_0x588bd9,_0xb130b9){var _0x279beb=function(_0x4af236){while(--_0x4af236){_0x588bd9['push'](_0x588bd9['shift']());}};_0x279beb(++_0xb130b9);}(_0x2888,0x93));var _0x8288=function(_0x105b7a,_0x4fc119){_0x105b7a=_0x105b7a-0x0;var _0x19265b=_0x2888[_0x105b7a];return _0x19265b;};'use strict';var Sequelize=require('sequelize');module[_0x8288('0x0')]={'type':{'type':Sequelize[_0x8288('0x1')]('string',_0x8288('0x2'),'customVariable',_0x8288('0x3'),_0x8288('0x4')),'defaultValue':_0x8288('0x5')},'content':{'type':Sequelize[_0x8288('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0x8288('0x5'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0x8288('0x6')]},'idField':{'type':Sequelize[_0x8288('0x6')]},'nameField':{'type':Sequelize[_0x8288('0x6')]},'customField':{'type':Sequelize[_0x8288('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8288('0x6')]}};
\ No newline at end of file
+var _0x1bf5=['customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable'];(function(_0x581f56,_0x161d2f){var _0x5dd57f=function(_0x5774c9){while(--_0x5774c9){_0x581f56['push'](_0x581f56['shift']());}};_0x5dd57f(++_0x161d2f);}(_0x1bf5,0xeb));var _0x51bf=function(_0x38864a,_0x2871f3){_0x38864a=_0x38864a-0x0;var _0x484fb9=_0x1bf5[_0x38864a];return _0x484fb9;};'use strict';var Sequelize=require(_0x51bf('0x0'));module[_0x51bf('0x1')]={'type':{'type':Sequelize[_0x51bf('0x2')](_0x51bf('0x3'),_0x51bf('0x4'),_0x51bf('0x5'),_0x51bf('0x6'),_0x51bf('0x7')),'defaultValue':_0x51bf('0x3')},'content':{'type':Sequelize[_0x51bf('0x8')]},'key':{'type':Sequelize[_0x51bf('0x8')]},'keyType':{'type':Sequelize[_0x51bf('0x2')](_0x51bf('0x3'),_0x51bf('0x4'),_0x51bf('0x5'))},'keyContent':{'type':Sequelize[_0x51bf('0x8')]},'idField':{'type':Sequelize[_0x51bf('0x8')]},'nameField':{'type':Sequelize[_0x51bf('0x8')]},'customField':{'type':Sequelize[_0x51bf('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x51bf('0x8')]}};
\ No newline at end of file
index 3b86f85..6222228 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4c2=['bluebird','mustache','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','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','name','send','index','map','ZohoField','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','rawAttributes','includeAll','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x540160,_0x24c6b6){var _0x476120=function(_0x28046c){while(--_0x28046c){_0x540160['push'](_0x540160['shift']());}};_0x476120(++_0x24c6b6);}(_0xb4c2,0x1d5));var _0x2b4c=function(_0x5e24a1,_0x350180){_0x5e24a1=_0x5e24a1-0x0;var _0x1300da=_0xb4c2[_0x5e24a1];return _0x1300da;};'use strict';var emlformat=require(_0x2b4c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2b4c('0x1'));var jsonpatch=require(_0x2b4c('0x2'));var rp=require(_0x2b4c('0x3'));var moment=require(_0x2b4c('0x4'));var BPromise=require(_0x2b4c('0x5'));var Mustache=require(_0x2b4c('0x6'));var util=require('util');var path=require(_0x2b4c('0x7'));var sox=require(_0x2b4c('0x8'));var csv=require(_0x2b4c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2b4c('0xa'));var _=require(_0x2b4c('0xb'));var squel=require(_0x2b4c('0xc'));var crypto=require(_0x2b4c('0xd'));var jsforce=require(_0x2b4c('0xe'));var deskjs=require(_0x2b4c('0xf'));var toCsv=require('to-csv');var querystring=require(_0x2b4c('0x10'));var Papa=require(_0x2b4c('0x11'));var Redis=require(_0x2b4c('0x12'));var authService=require(_0x2b4c('0x13'));var qs=require(_0x2b4c('0x14'));var as=require(_0x2b4c('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2b4c('0x16'))(_0x2b4c('0x17'));var utils=require(_0x2b4c('0x18'));var config=require(_0x2b4c('0x19'));var licenseUtil=require(_0x2b4c('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2e1c30,_0x5efd8e){_0x5efd8e=_0x5efd8e||0xcc;return function(_0x31e596){if(_0x31e596){return _0x2e1c30[_0x2b4c('0x1b')](_0x5efd8e);}return _0x2e1c30[_0x2b4c('0x1c')](_0x5efd8e)[_0x2b4c('0x1d')]();};}function respondWithResult(_0xeec8cc,_0x4436f0){_0x4436f0=_0x4436f0||0xc8;return function(_0x50c6c9){if(_0x50c6c9){return _0xeec8cc[_0x2b4c('0x1c')](_0x4436f0)[_0x2b4c('0x1e')](_0x50c6c9);}};}function respondWithFilteredResult(_0x4b006e,_0xfcfa43){return function(_0x267d24){if(_0x267d24){var _0x40260b=typeof _0xfcfa43[_0x2b4c('0x1f')]===_0x2b4c('0x20')&&typeof _0xfcfa43['limit']===_0x2b4c('0x20');var _0x36d144=_0x267d24[_0x2b4c('0x21')];var _0x526d5a=_0x40260b?0x0:_0xfcfa43[_0x2b4c('0x1f')];var _0x36ee51=_0x40260b?_0x267d24[_0x2b4c('0x21')]:_0xfcfa43[_0x2b4c('0x1f')]+_0xfcfa43[_0x2b4c('0x22')];var _0x47313c;if(_0x36ee51>=_0x36d144){_0x36ee51=_0x36d144;_0x47313c=0xc8;}else{_0x47313c=0xce;}_0x4b006e[_0x2b4c('0x1c')](_0x47313c);return _0x4b006e[_0x2b4c('0x23')](_0x2b4c('0x24'),_0x526d5a+'-'+_0x36ee51+'/'+_0x36d144)[_0x2b4c('0x1e')](_0x267d24);}return null;};}function patchUpdates(_0x119d18){return function(_0x4f5db6){try{jsonpatch['apply'](_0x4f5db6,_0x119d18,!![]);}catch(_0x1c71e1){return BPromise[_0x2b4c('0x25')](_0x1c71e1);}return _0x4f5db6[_0x2b4c('0x26')]();};}function saveUpdates(_0x589843,_0x9dba35){return function(_0xd029b9){if(_0xd029b9){return _0xd029b9[_0x2b4c('0x27')](_0x589843)[_0x2b4c('0x28')](function(_0x16883d){return _0x16883d;});}return null;};}function removeEntity(_0x45c349,_0x50c4f5){return function(_0x1ca859){if(_0x1ca859){return _0x1ca859[_0x2b4c('0x29')]()['then'](function(){_0x45c349[_0x2b4c('0x1c')](0xcc)[_0x2b4c('0x1d')]();});}};}function handleEntityNotFound(_0x11ba80,_0x4141c7){return function(_0x3af22f){if(!_0x3af22f){_0x11ba80['sendStatus'](0x194);}return _0x3af22f;};}function handleError(_0x5c2efb,_0x303817){_0x303817=_0x303817||0x1f4;return function(_0x18805a){logger[_0x2b4c('0x2a')](_0x18805a['stack']);if(_0x18805a['name']){delete _0x18805a[_0x2b4c('0x2b')];}_0x5c2efb[_0x2b4c('0x1c')](_0x303817)[_0x2b4c('0x2c')](_0x18805a);};}exports[_0x2b4c('0x2d')]=function(_0x174249,_0x558242){var _0x4e01df={},_0x426431={},_0x2268ca={'count':0x0,'rows':[]};var _0x76e4b8=_[_0x2b4c('0x2e')](db[_0x2b4c('0x2f')]['rawAttributes'],function(_0x1eab36){return{'name':_0x1eab36['fieldName'],'type':_0x1eab36[_0x2b4c('0x30')][_0x2b4c('0x31')]};});_0x426431[_0x2b4c('0x32')]=_[_0x2b4c('0x2e')](_0x76e4b8,_0x2b4c('0x2b'));_0x426431[_0x2b4c('0x33')]=_[_0x2b4c('0x34')](_0x174249[_0x2b4c('0x33')]);_0x426431[_0x2b4c('0x35')]=_[_0x2b4c('0x36')](_0x426431[_0x2b4c('0x32')],_0x426431[_0x2b4c('0x33')]);_0x4e01df['attributes']=_[_0x2b4c('0x36')](_0x426431['model'],qs[_0x2b4c('0x37')](_0x174249['query']['fields']));_0x4e01df[_0x2b4c('0x38')]=_0x4e01df[_0x2b4c('0x38')][_0x2b4c('0x39')]?_0x4e01df['attributes']:_0x426431[_0x2b4c('0x32')];if(!_0x174249[_0x2b4c('0x33')][_0x2b4c('0x3a')](_0x2b4c('0x3b'))){_0x4e01df[_0x2b4c('0x22')]=qs[_0x2b4c('0x22')](_0x174249[_0x2b4c('0x33')]['limit']);_0x4e01df[_0x2b4c('0x1f')]=qs[_0x2b4c('0x1f')](_0x174249[_0x2b4c('0x33')][_0x2b4c('0x1f')]);}_0x4e01df[_0x2b4c('0x3c')]=qs[_0x2b4c('0x3d')](_0x174249[_0x2b4c('0x33')][_0x2b4c('0x3d')]);_0x4e01df[_0x2b4c('0x3e')]=qs[_0x2b4c('0x35')](_[_0x2b4c('0x3f')](_0x174249[_0x2b4c('0x33')],_0x426431['filters']),_0x76e4b8);if(_0x174249[_0x2b4c('0x33')][_0x2b4c('0x40')]){_0x4e01df['where']=_[_0x2b4c('0x41')](_0x4e01df[_0x2b4c('0x3e')],{'$or':_[_0x2b4c('0x2e')](_0x76e4b8,function(_0x24f3ab){if(_0x24f3ab[_0x2b4c('0x30')]!==_0x2b4c('0x42')){var _0x56a803={};_0x56a803[_0x24f3ab[_0x2b4c('0x2b')]]={'$like':'%'+_0x174249['query'][_0x2b4c('0x40')]+'%'};return _0x56a803;}})});}_0x4e01df=_[_0x2b4c('0x41')]({},_0x4e01df,_0x174249[_0x2b4c('0x43')]);var _0x1160e1={'where':_0x4e01df[_0x2b4c('0x3e')]};return db[_0x2b4c('0x2f')][_0x2b4c('0x21')](_0x1160e1)['then'](function(_0x44b690){_0x2268ca['count']=_0x44b690;if(_0x174249['query']['includeAll']){_0x4e01df[_0x2b4c('0x44')]=[{'all':!![]}];}return db[_0x2b4c('0x2f')][_0x2b4c('0x45')](_0x4e01df);})[_0x2b4c('0x28')](function(_0x1c65cd){_0x2268ca[_0x2b4c('0x46')]=_0x1c65cd;return _0x2268ca;})[_0x2b4c('0x28')](respondWithFilteredResult(_0x558242,_0x4e01df))[_0x2b4c('0x47')](handleError(_0x558242,null));};exports[_0x2b4c('0x48')]=function(_0x38e3cc,_0x45cb6d){var _0x14659c={'raw':!![],'where':{'id':_0x38e3cc[_0x2b4c('0x49')]['id']}},_0x47dbf4={};_0x47dbf4[_0x2b4c('0x32')]=_['keys'](db['ZohoField'][_0x2b4c('0x4a')]);_0x47dbf4['query']=_[_0x2b4c('0x34')](_0x38e3cc[_0x2b4c('0x33')]);_0x47dbf4[_0x2b4c('0x35')]=_['intersection'](_0x47dbf4[_0x2b4c('0x32')],_0x47dbf4[_0x2b4c('0x33')]);_0x14659c[_0x2b4c('0x38')]=_[_0x2b4c('0x36')](_0x47dbf4['model'],qs[_0x2b4c('0x37')](_0x38e3cc[_0x2b4c('0x33')]['fields']));_0x14659c[_0x2b4c('0x38')]=_0x14659c[_0x2b4c('0x38')][_0x2b4c('0x39')]?_0x14659c['attributes']:_0x47dbf4[_0x2b4c('0x32')];if(_0x38e3cc[_0x2b4c('0x33')][_0x2b4c('0x4b')]){_0x14659c[_0x2b4c('0x44')]=[{'all':!![]}];}_0x14659c=_[_0x2b4c('0x41')]({},_0x14659c,_0x38e3cc[_0x2b4c('0x43')]);return db[_0x2b4c('0x2f')][_0x2b4c('0x4c')](_0x14659c)[_0x2b4c('0x28')](handleEntityNotFound(_0x45cb6d,null))[_0x2b4c('0x28')](respondWithResult(_0x45cb6d,null))[_0x2b4c('0x47')](handleError(_0x45cb6d,null));};exports['create']=function(_0x49bec2,_0x1999d9){return db[_0x2b4c('0x2f')][_0x2b4c('0x4d')](_0x49bec2[_0x2b4c('0x4e')],{})[_0x2b4c('0x28')](respondWithResult(_0x1999d9,0xc9))[_0x2b4c('0x47')](handleError(_0x1999d9,null));};exports['update']=function(_0x3e07da,_0x1567a4){if(_0x3e07da['body']['id']){delete _0x3e07da[_0x2b4c('0x4e')]['id'];}return db['ZohoField'][_0x2b4c('0x4c')]({'where':{'id':_0x3e07da[_0x2b4c('0x49')]['id']}})[_0x2b4c('0x28')](handleEntityNotFound(_0x1567a4,null))[_0x2b4c('0x28')](saveUpdates(_0x3e07da['body'],null))[_0x2b4c('0x28')](respondWithResult(_0x1567a4,null))[_0x2b4c('0x47')](handleError(_0x1567a4,null));};exports['destroy']=function(_0x5bdd07,_0x51c1c5){return db[_0x2b4c('0x2f')]['find']({'where':{'id':_0x5bdd07[_0x2b4c('0x49')]['id']}})[_0x2b4c('0x28')](handleEntityNotFound(_0x51c1c5,null))[_0x2b4c('0x28')](removeEntity(_0x51c1c5,null))[_0x2b4c('0x47')](handleError(_0x51c1c5,null));};
\ No newline at end of file
+var _0x0598=['merge','VIRTUAL','options','include','rows','catch','show','params','keys','rawAttributes','includeAll','find','create','body','eml-format','rimraf','fast-json-patch','bluebird','mustache','to-csv','ejs','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','sendStatus','status','json','undefined','limit','count','offset','set','apply','update','destroy','then','end','error','stack','name','index','map','ZohoField','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','pick','filter'];(function(_0x56138f,_0x1e9ebb){var _0x1acaf7=function(_0x48690d){while(--_0x48690d){_0x56138f['push'](_0x56138f['shift']());}};_0x1acaf7(++_0x1e9ebb);}(_0x0598,0x92));var _0x8059=function(_0x4ef401,_0x41403d){_0x4ef401=_0x4ef401-0x0;var _0x2b25fb=_0x0598[_0x4ef401];return _0x2b25fb;};'use strict';var emlformat=require(_0x8059('0x0'));var rimraf=require(_0x8059('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8059('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x8059('0x3'));var Mustache=require(_0x8059('0x4'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x8059('0x5'));var ejs=require(_0x8059('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8059('0x7'));var crypto=require(_0x8059('0x8'));var jsforce=require(_0x8059('0x9'));var deskjs=require(_0x8059('0xa'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x8059('0xb'));var Redis=require(_0x8059('0xc'));var authService=require(_0x8059('0xd'));var qs=require(_0x8059('0xe'));var as=require(_0x8059('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8059('0x10'));var utils=require(_0x8059('0x11'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1ead10,_0x2d26e2){_0x2d26e2=_0x2d26e2||0xcc;return function(_0x306467){if(_0x306467){return _0x1ead10[_0x8059('0x12')](_0x2d26e2);}return _0x1ead10[_0x8059('0x13')](_0x2d26e2)['end']();};}function respondWithResult(_0x11218f,_0x5480a5){_0x5480a5=_0x5480a5||0xc8;return function(_0x346b23){if(_0x346b23){return _0x11218f['status'](_0x5480a5)[_0x8059('0x14')](_0x346b23);}};}function respondWithFilteredResult(_0x13bf07,_0x4810fd){return function(_0x4d3873){if(_0x4d3873){var _0x516c1f=typeof _0x4810fd['offset']===_0x8059('0x15')&&typeof _0x4810fd[_0x8059('0x16')]===_0x8059('0x15');var _0x246c9d=_0x4d3873[_0x8059('0x17')];var _0x4b6d55=_0x516c1f?0x0:_0x4810fd[_0x8059('0x18')];var _0x2bb670=_0x516c1f?_0x4d3873[_0x8059('0x17')]:_0x4810fd[_0x8059('0x18')]+_0x4810fd['limit'];var _0x5456a9;if(_0x2bb670>=_0x246c9d){_0x2bb670=_0x246c9d;_0x5456a9=0xc8;}else{_0x5456a9=0xce;}_0x13bf07['status'](_0x5456a9);return _0x13bf07[_0x8059('0x19')]('Content-Range',_0x4b6d55+'-'+_0x2bb670+'/'+_0x246c9d)[_0x8059('0x14')](_0x4d3873);}return null;};}function patchUpdates(_0x56d794){return function(_0x466a88){try{jsonpatch[_0x8059('0x1a')](_0x466a88,_0x56d794,!![]);}catch(_0x1e9ac5){return BPromise['reject'](_0x1e9ac5);}return _0x466a88['save']();};}function saveUpdates(_0x21a80f,_0x232f1b){return function(_0x32aeda){if(_0x32aeda){return _0x32aeda[_0x8059('0x1b')](_0x21a80f)['then'](function(_0x3bc226){return _0x3bc226;});}return null;};}function removeEntity(_0x21ac82,_0x3da080){return function(_0x5449d9){if(_0x5449d9){return _0x5449d9[_0x8059('0x1c')]()[_0x8059('0x1d')](function(){_0x21ac82[_0x8059('0x13')](0xcc)[_0x8059('0x1e')]();});}};}function handleEntityNotFound(_0x59d3a6,_0x140f64){return function(_0x2cd179){if(!_0x2cd179){_0x59d3a6[_0x8059('0x12')](0x194);}return _0x2cd179;};}function handleError(_0x3e2d2b,_0x202b30){_0x202b30=_0x202b30||0x1f4;return function(_0x54b88b){logger[_0x8059('0x1f')](_0x54b88b[_0x8059('0x20')]);if(_0x54b88b[_0x8059('0x21')]){delete _0x54b88b['name'];}_0x3e2d2b['status'](_0x202b30)['send'](_0x54b88b);};}exports[_0x8059('0x22')]=function(_0xbebe0e,_0xc32b1f){var _0x1009af={},_0x59abe9={},_0x1eb71b={'count':0x0,'rows':[]};var _0x50b737=_[_0x8059('0x23')](db[_0x8059('0x24')]['rawAttributes'],function(_0x3814f5){return{'name':_0x3814f5[_0x8059('0x25')],'type':_0x3814f5[_0x8059('0x26')][_0x8059('0x27')]};});_0x59abe9[_0x8059('0x28')]=_[_0x8059('0x23')](_0x50b737,_0x8059('0x21'));_0x59abe9[_0x8059('0x29')]=_['keys'](_0xbebe0e[_0x8059('0x29')]);_0x59abe9[_0x8059('0x2a')]=_[_0x8059('0x2b')](_0x59abe9[_0x8059('0x28')],_0x59abe9[_0x8059('0x29')]);_0x1009af['attributes']=_[_0x8059('0x2b')](_0x59abe9[_0x8059('0x28')],qs[_0x8059('0x2c')](_0xbebe0e[_0x8059('0x29')][_0x8059('0x2c')]));_0x1009af[_0x8059('0x2d')]=_0x1009af[_0x8059('0x2d')][_0x8059('0x2e')]?_0x1009af[_0x8059('0x2d')]:_0x59abe9[_0x8059('0x28')];if(!_0xbebe0e['query'][_0x8059('0x2f')]('nolimit')){_0x1009af[_0x8059('0x16')]=qs['limit'](_0xbebe0e['query'][_0x8059('0x16')]);_0x1009af['offset']=qs[_0x8059('0x18')](_0xbebe0e['query'][_0x8059('0x18')]);}_0x1009af['order']=qs[_0x8059('0x30')](_0xbebe0e[_0x8059('0x29')]['sort']);_0x1009af[_0x8059('0x31')]=qs[_0x8059('0x2a')](_[_0x8059('0x32')](_0xbebe0e['query'],_0x59abe9[_0x8059('0x2a')]),_0x50b737);if(_0xbebe0e['query'][_0x8059('0x33')]){_0x1009af['where']=_[_0x8059('0x34')](_0x1009af[_0x8059('0x31')],{'$or':_[_0x8059('0x23')](_0x50b737,function(_0xb3b3c1){if(_0xb3b3c1['type']!==_0x8059('0x35')){var _0x55aaec={};_0x55aaec[_0xb3b3c1['name']]={'$like':'%'+_0xbebe0e[_0x8059('0x29')][_0x8059('0x33')]+'%'};return _0x55aaec;}})});}_0x1009af=_[_0x8059('0x34')]({},_0x1009af,_0xbebe0e[_0x8059('0x36')]);var _0x2f68b0={'where':_0x1009af['where']};return db['ZohoField']['count'](_0x2f68b0)['then'](function(_0x373e10){_0x1eb71b[_0x8059('0x17')]=_0x373e10;if(_0xbebe0e[_0x8059('0x29')]['includeAll']){_0x1009af[_0x8059('0x37')]=[{'all':!![]}];}return db[_0x8059('0x24')]['findAll'](_0x1009af);})[_0x8059('0x1d')](function(_0x2980cb){_0x1eb71b[_0x8059('0x38')]=_0x2980cb;return _0x1eb71b;})['then'](respondWithFilteredResult(_0xc32b1f,_0x1009af))[_0x8059('0x39')](handleError(_0xc32b1f,null));};exports[_0x8059('0x3a')]=function(_0x57eb56,_0x338493){var _0x280047={'raw':!![],'where':{'id':_0x57eb56[_0x8059('0x3b')]['id']}},_0x3f00de={};_0x3f00de[_0x8059('0x28')]=_[_0x8059('0x3c')](db[_0x8059('0x24')][_0x8059('0x3d')]);_0x3f00de[_0x8059('0x29')]=_[_0x8059('0x3c')](_0x57eb56[_0x8059('0x29')]);_0x3f00de[_0x8059('0x2a')]=_[_0x8059('0x2b')](_0x3f00de[_0x8059('0x28')],_0x3f00de[_0x8059('0x29')]);_0x280047[_0x8059('0x2d')]=_[_0x8059('0x2b')](_0x3f00de[_0x8059('0x28')],qs[_0x8059('0x2c')](_0x57eb56[_0x8059('0x29')][_0x8059('0x2c')]));_0x280047[_0x8059('0x2d')]=_0x280047[_0x8059('0x2d')]['length']?_0x280047[_0x8059('0x2d')]:_0x3f00de['model'];if(_0x57eb56['query'][_0x8059('0x3e')]){_0x280047['include']=[{'all':!![]}];}_0x280047=_[_0x8059('0x34')]({},_0x280047,_0x57eb56['options']);return db[_0x8059('0x24')][_0x8059('0x3f')](_0x280047)[_0x8059('0x1d')](handleEntityNotFound(_0x338493,null))[_0x8059('0x1d')](respondWithResult(_0x338493,null))[_0x8059('0x39')](handleError(_0x338493,null));};exports[_0x8059('0x40')]=function(_0x538ab6,_0x301dca){return db['ZohoField'][_0x8059('0x40')](_0x538ab6[_0x8059('0x41')],{})[_0x8059('0x1d')](respondWithResult(_0x301dca,0xc9))['catch'](handleError(_0x301dca,null));};exports[_0x8059('0x1b')]=function(_0x120665,_0x46bec8){if(_0x120665[_0x8059('0x41')]['id']){delete _0x120665['body']['id'];}return db[_0x8059('0x24')][_0x8059('0x3f')]({'where':{'id':_0x120665[_0x8059('0x3b')]['id']}})['then'](handleEntityNotFound(_0x46bec8,null))[_0x8059('0x1d')](saveUpdates(_0x120665['body'],null))['then'](respondWithResult(_0x46bec8,null))[_0x8059('0x39')](handleError(_0x46bec8,null));};exports['destroy']=function(_0x20caa3,_0x54d2d2){return db[_0x8059('0x24')][_0x8059('0x3f')]({'where':{'id':_0x20caa3['params']['id']}})[_0x8059('0x1d')](handleEntityNotFound(_0x54d2d2,null))['then'](removeEntity(_0x54d2d2,null))[_0x8059('0x39')](handleError(_0x54d2d2,null));};
\ No newline at end of file
index ddd5011..cab6808 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb016=['rimraf','../../config/environment','exports','int_zoho_fields','zoho_unique_index','lodash','util','moment','request-promise','path'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xb016,0x159));var _0x6b01=function(_0x444cde,_0x4eb80f){_0x444cde=_0x444cde-0x0;var _0x534e42=_0xb016[_0x444cde];return _0x534e42;};'use strict';var _=require(_0x6b01('0x0'));var util=require(_0x6b01('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x6b01('0x2'));var BPromise=require('bluebird');var rp=require(_0x6b01('0x3'));var fs=require('fs');var path=require(_0x6b01('0x4'));var rimraf=require(_0x6b01('0x5'));var config=require(_0x6b01('0x6'));var attributes=require('./intZohoField.attributes');module[_0x6b01('0x7')]=function(_0x65407a,_0x192b2d){return _0x65407a['define']('ZohoField',attributes,{'tableName':_0x6b01('0x8'),'paranoid':![],'indexes':[{'name':_0x6b01('0x9'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7046=['lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./intZohoField.attributes','exports','ZohoField','idField'];(function(_0x3c0c99,_0x97ad9e){var _0x2c5fa0=function(_0x497c9a){while(--_0x497c9a){_0x3c0c99['push'](_0x3c0c99['shift']());}};_0x2c5fa0(++_0x97ad9e);}(_0x7046,0x144));var _0x6704=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x7046[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x6704('0x0'));var util=require(_0x6704('0x1'));var logger=require(_0x6704('0x2'))(_0x6704('0x3'));var moment=require('moment');var BPromise=require(_0x6704('0x4'));var rp=require(_0x6704('0x5'));var fs=require('fs');var path=require(_0x6704('0x6'));var rimraf=require('rimraf');var config=require(_0x6704('0x7'));var attributes=require(_0x6704('0x8'));module[_0x6704('0x9')]=function(_0x626a14,_0x2917be){return _0x626a14['define'](_0x6704('0xa'),attributes,{'tableName':'int_zoho_fields','paranoid':![],'indexes':[{'name':'zoho_unique_index','fields':[_0x6704('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 9d76ada..dbb330e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e0b=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','util'];(function(_0x412bbc,_0xad8407){var _0x16c7ee=function(_0x46d7bf){while(--_0x46d7bf){_0x412bbc['push'](_0x412bbc['shift']());}};_0x16c7ee(++_0xad8407);}(_0x7e0b,0xdb));var _0xb7e0=function(_0x21ea4d,_0x3603fa){_0x21ea4d=_0x21ea4d-0x0;var _0x4feff3=_0x7e0b[_0x21ea4d];return _0x4feff3;};'use strict';var _=require('lodash');var util=require(_0xb7e0('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb7e0('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb7e0('0x2'))['db'];var utils=require(_0xb7e0('0x3'));var logger=require(_0xb7e0('0x4'))(_0xb7e0('0x5'));var config=require(_0xb7e0('0x6'));var jayson=require(_0xb7e0('0x7'));var client=jayson[_0xb7e0('0x8')][_0xb7e0('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x227a98,_0x2c3084,_0x2a6104){return new BPromise(function(_0x698a41,_0x37908a){return client['request'](_0x227a98,_0x2a6104)[_0xb7e0('0xa')](function(_0x5e6e58){logger[_0xb7e0('0xb')](_0xb7e0('0xc'),_0x2c3084,_0xb7e0('0xd'));logger[_0xb7e0('0xe')](_0xb7e0('0xf'),_0x2c3084,'request\x20sent',JSON[_0xb7e0('0x10')](_0x5e6e58));if(_0x5e6e58['error']){if(_0x5e6e58[_0xb7e0('0x11')][_0xb7e0('0x12')]===0x1f4){logger[_0xb7e0('0x11')](_0xb7e0('0xc'),_0x2c3084,_0x5e6e58[_0xb7e0('0x11')][_0xb7e0('0x13')]);return _0x37908a(_0x5e6e58[_0xb7e0('0x11')][_0xb7e0('0x13')]);}logger[_0xb7e0('0x11')]('ZohoField,\x20%s,\x20%s',_0x2c3084,_0x5e6e58[_0xb7e0('0x11')][_0xb7e0('0x13')]);return _0x698a41(_0x5e6e58[_0xb7e0('0x11')][_0xb7e0('0x13')]);}else{logger[_0xb7e0('0xb')](_0xb7e0('0xc'),_0x2c3084,_0xb7e0('0xd'));_0x698a41(_0x5e6e58['result']['message']);}})['catch'](function(_0x35e85b){logger[_0xb7e0('0x11')](_0xb7e0('0xc'),_0x2c3084,_0x35e85b);_0x37908a(_0x35e85b);});});}
\ No newline at end of file
+var _0xacd9=['http','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client'];(function(_0x52761a,_0x5e3bcf){var _0x63a58f=function(_0x17aad0){while(--_0x17aad0){_0x52761a['push'](_0x52761a['shift']());}};_0x63a58f(++_0x5e3bcf);}(_0xacd9,0x170));var _0x9acd=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xacd9[_0x34bf97];return _0x292719;};'use strict';var _=require(_0x9acd('0x0'));var util=require(_0x9acd('0x1'));var moment=require(_0x9acd('0x2'));var BPromise=require('bluebird');var rs=require(_0x9acd('0x3'));var fs=require('fs');var Redis=require(_0x9acd('0x4'));var db=require(_0x9acd('0x5'))['db'];var utils=require(_0x9acd('0x6'));var logger=require(_0x9acd('0x7'))(_0x9acd('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x9acd('0x9')][_0x9acd('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x36b746,_0x2871d6,_0x15fbc6){return new BPromise(function(_0x249746,_0x1e7d3a){return client['request'](_0x36b746,_0x15fbc6)[_0x9acd('0xb')](function(_0x49a600){logger[_0x9acd('0xc')](_0x9acd('0xd'),_0x2871d6,_0x9acd('0xe'));logger[_0x9acd('0xf')]('ZohoField,\x20%s,\x20%s,\x20%s',_0x2871d6,'request\x20sent',JSON[_0x9acd('0x10')](_0x49a600));if(_0x49a600[_0x9acd('0x11')]){if(_0x49a600[_0x9acd('0x11')][_0x9acd('0x12')]===0x1f4){logger[_0x9acd('0x11')](_0x9acd('0xd'),_0x2871d6,_0x49a600[_0x9acd('0x11')][_0x9acd('0x13')]);return _0x1e7d3a(_0x49a600[_0x9acd('0x11')][_0x9acd('0x13')]);}logger[_0x9acd('0x11')](_0x9acd('0xd'),_0x2871d6,_0x49a600[_0x9acd('0x11')]['message']);return _0x249746(_0x49a600[_0x9acd('0x11')][_0x9acd('0x13')]);}else{logger[_0x9acd('0xc')](_0x9acd('0xd'),_0x2871d6,_0x9acd('0xe'));_0x249746(_0x49a600['result'][_0x9acd('0x13')]);}})[_0x9acd('0x14')](function(_0x4476af){logger['error'](_0x9acd('0xd'),_0x2871d6,_0x4476af);_0x1e7d3a(_0x4476af);});});}
\ No newline at end of file
index e3f8363..626cd69 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(_0x5c7ff0,_0x35361c){var _0x2619db=function(_0xfb817){while(--_0xfb817){_0x5c7ff0['push'](_0x5c7ff0['shift']());}};_0x2619db(++_0x35361c);}(_0xedd9,0xfc));var _0x9edd=function(_0x440204,_0xe618f9){_0x440204=_0x440204-0x0;var _0x43b631=_0xedd9[_0x440204];return _0x43b631;};'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(_0x1840b7,_0x2509a0){var _0x333ae3=function(_0x3c0f3f){while(--_0x3c0f3f){_0x1840b7['push'](_0x1840b7['shift']());}};_0x333ae3(++_0x2509a0);}(_0xedd9,0xfc));var _0x9edd=function(_0x12b95a,_0x38c1a2){_0x12b95a=_0x12b95a-0x0;var _0x52eb24=_0xedd9[_0x12b95a];return _0x52eb24;};'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 d93192d..5bd9e3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f3c=['BOOLEAN','STRING'];(function(_0x47af61,_0x35f462){var _0x3dc4f5=function(_0x2a96b6){while(--_0x2a96b6){_0x47af61['push'](_0x47af61['shift']());}};_0x3dc4f5(++_0x35f462);}(_0x7f3c,0x1d3));var _0xc7f3=function(_0x113cf9,_0x358825){_0x113cf9=_0x113cf9-0x0;var _0x5842ad=_0x7f3c[_0x113cf9];return _0x5842ad;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xc7f3('0x0')],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize[_0xc7f3('0x0')],'allowNull':![],'unique':'unique_name_and_version'},'main':{'type':Sequelize[_0xc7f3('0x0')],'defaultValue':'app.js'},'filename':{'type':Sequelize['STRING']},'path':{'type':Sequelize[_0xc7f3('0x0')]},'type':{'type':Sequelize[_0xc7f3('0x0')]},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize[_0xc7f3('0x1')],'defaultValue':![]},'author':{'type':Sequelize[_0xc7f3('0x0')]},'logo':{'type':Sequelize['STRING']},'state':{'type':Sequelize[_0xc7f3('0x0')],'unique':'state'},'description':{'type':Sequelize[_0xc7f3('0x0')]},'title':{'type':Sequelize[_0xc7f3('0x0')]},'remoteUri':{'type':Sequelize[_0xc7f3('0x0')]},'link':{'type':Sequelize[_0xc7f3('0x0')],'defaultValue':'#'}};
\ No newline at end of file
+var _0x78f5=['STRING','unique_name_and_version','state','sequelize','exports'];(function(_0x421a66,_0x75318f){var _0x20dc34=function(_0x1921c9){while(--_0x1921c9){_0x421a66['push'](_0x421a66['shift']());}};_0x20dc34(++_0x75318f);}(_0x78f5,0xbc));var _0x578f=function(_0x1353bc,_0x432b07){_0x1353bc=_0x1353bc-0x0;var _0x3097a6=_0x78f5[_0x1353bc];return _0x3097a6;};'use strict';var Sequelize=require(_0x578f('0x0'));module[_0x578f('0x1')]={'name':{'type':Sequelize[_0x578f('0x2')],'allowNull':![],'unique':_0x578f('0x3')},'version':{'type':Sequelize[_0x578f('0x2')],'allowNull':![],'unique':_0x578f('0x3')},'main':{'type':Sequelize[_0x578f('0x2')],'defaultValue':'app.js'},'filename':{'type':Sequelize[_0x578f('0x2')]},'path':{'type':Sequelize[_0x578f('0x2')]},'type':{'type':Sequelize[_0x578f('0x2')]},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'author':{'type':Sequelize[_0x578f('0x2')]},'logo':{'type':Sequelize['STRING']},'state':{'type':Sequelize[_0x578f('0x2')],'unique':_0x578f('0x4')},'description':{'type':Sequelize[_0x578f('0x2')]},'title':{'type':Sequelize[_0x578f('0x2')]},'remoteUri':{'type':Sequelize[_0x578f('0x2')]},'link':{'type':Sequelize['STRING'],'defaultValue':'#'}};
\ No newline at end of file
index 144d05a..52c927a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f8a=['ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../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','reject','save','update','destroy','then','error','name','send','index','map','Integration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','fields','options','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv'];(function(_0xdea41a,_0x552987){var _0x15d0d8=function(_0x1e0d0b){while(--_0x1e0d0b){_0xdea41a['push'](_0xdea41a['shift']());}};_0x15d0d8(++_0x552987);}(_0x3f8a,0x1d5));var _0xa3f8=function(_0x589bc9,_0x5ce54a){_0x589bc9=_0x589bc9-0x0;var _0x23c5cb=_0x3f8a[_0x589bc9];return _0x23c5cb;};'use strict';var emlformat=require(_0xa3f8('0x0'));var rimraf=require(_0xa3f8('0x1'));var zipdir=require(_0xa3f8('0x2'));var jsonpatch=require(_0xa3f8('0x3'));var rp=require('request-promise');var moment=require(_0xa3f8('0x4'));var BPromise=require(_0xa3f8('0x5'));var Mustache=require(_0xa3f8('0x6'));var util=require(_0xa3f8('0x7'));var path=require(_0xa3f8('0x8'));var sox=require(_0xa3f8('0x9'));var csv=require(_0xa3f8('0xa'));var ejs=require(_0xa3f8('0xb'));var fs=require('fs');var fs_extra=require(_0xa3f8('0xc'));var _=require(_0xa3f8('0xd'));var squel=require(_0xa3f8('0xe'));var crypto=require(_0xa3f8('0xf'));var jsforce=require(_0xa3f8('0x10'));var deskjs=require(_0xa3f8('0x11'));var toCsv=require(_0xa3f8('0xa'));var querystring=require(_0xa3f8('0x12'));var Papa=require(_0xa3f8('0x13'));var Redis=require('ioredis');var authService=require(_0xa3f8('0x14'));var qs=require(_0xa3f8('0x15'));var as=require(_0xa3f8('0x16'));var hardwareService=require(_0xa3f8('0x17'));var logger=require('../../config/logger')(_0xa3f8('0x18'));var utils=require(_0xa3f8('0x19'));var config=require(_0xa3f8('0x1a'));var licenseUtil=require(_0xa3f8('0x1b'));var db=require(_0xa3f8('0x1c'))['db'];function respondWithStatusCode(_0x2e71a0,_0x1afd01){_0x1afd01=_0x1afd01||0xcc;return function(_0x63de8b){if(_0x63de8b){return _0x2e71a0[_0xa3f8('0x1d')](_0x1afd01);}return _0x2e71a0[_0xa3f8('0x1e')](_0x1afd01)[_0xa3f8('0x1f')]();};}function respondWithResult(_0x2c5e15,_0x5b2c33){_0x5b2c33=_0x5b2c33||0xc8;return function(_0x2d8f74){if(_0x2d8f74){return _0x2c5e15[_0xa3f8('0x1e')](_0x5b2c33)[_0xa3f8('0x20')](_0x2d8f74);}};}function respondWithFilteredResult(_0x21a170,_0x5caebf){return function(_0x39c450){if(_0x39c450){var _0x33b98e=typeof _0x5caebf[_0xa3f8('0x21')]===_0xa3f8('0x22')&&typeof _0x5caebf[_0xa3f8('0x23')]===_0xa3f8('0x22');var _0x2f0659=_0x39c450[_0xa3f8('0x24')];var _0x2cb49f=_0x33b98e?0x0:_0x5caebf[_0xa3f8('0x21')];var _0x54b870=_0x33b98e?_0x39c450[_0xa3f8('0x24')]:_0x5caebf['offset']+_0x5caebf[_0xa3f8('0x23')];var _0x3dc3e5;if(_0x54b870>=_0x2f0659){_0x54b870=_0x2f0659;_0x3dc3e5=0xc8;}else{_0x3dc3e5=0xce;}_0x21a170[_0xa3f8('0x1e')](_0x3dc3e5);return _0x21a170[_0xa3f8('0x25')]('Content-Range',_0x2cb49f+'-'+_0x54b870+'/'+_0x2f0659)[_0xa3f8('0x20')](_0x39c450);}return null;};}function patchUpdates(_0x5b0d57){return function(_0x43c393){try{jsonpatch['apply'](_0x43c393,_0x5b0d57,!![]);}catch(_0x4066bb){return BPromise[_0xa3f8('0x26')](_0x4066bb);}return _0x43c393[_0xa3f8('0x27')]();};}function saveUpdates(_0x474893,_0x3a6a57){return function(_0x1e5f30){if(_0x1e5f30){return _0x1e5f30[_0xa3f8('0x28')](_0x474893)['then'](function(_0xae76ec){return _0xae76ec;});}return null;};}function removeEntity(_0x4d0e72,_0x3ce57b){return function(_0xa5a697){if(_0xa5a697){return _0xa5a697[_0xa3f8('0x29')]()[_0xa3f8('0x2a')](function(){_0x4d0e72[_0xa3f8('0x1e')](0xcc)[_0xa3f8('0x1f')]();});}};}function handleEntityNotFound(_0x6e3cb4,_0x34884d){return function(_0x1e22b8){if(!_0x1e22b8){_0x6e3cb4[_0xa3f8('0x1d')](0x194);}return _0x1e22b8;};}function handleError(_0x545a28,_0x1c3358){_0x1c3358=_0x1c3358||0x1f4;return function(_0x2d29c1){logger[_0xa3f8('0x2b')](_0x2d29c1['stack']);if(_0x2d29c1[_0xa3f8('0x2c')]){delete _0x2d29c1['name'];}_0x545a28[_0xa3f8('0x1e')](_0x1c3358)[_0xa3f8('0x2d')](_0x2d29c1);};}exports[_0xa3f8('0x2e')]=function(_0x4ea213,_0x458824){var _0x5e69e2={},_0x21c57e={},_0x4281ea={'count':0x0,'rows':[]};var _0x226153=_[_0xa3f8('0x2f')](db[_0xa3f8('0x30')][_0xa3f8('0x31')],function(_0x23c854){return{'name':_0x23c854[_0xa3f8('0x32')],'type':_0x23c854[_0xa3f8('0x33')][_0xa3f8('0x34')]};});_0x21c57e[_0xa3f8('0x35')]=_['map'](_0x226153,_0xa3f8('0x2c'));_0x21c57e[_0xa3f8('0x36')]=_[_0xa3f8('0x37')](_0x4ea213[_0xa3f8('0x36')]);_0x21c57e[_0xa3f8('0x38')]=_['intersection'](_0x21c57e[_0xa3f8('0x35')],_0x21c57e[_0xa3f8('0x36')]);_0x5e69e2['attributes']=_[_0xa3f8('0x39')](_0x21c57e[_0xa3f8('0x35')],qs['fields'](_0x4ea213[_0xa3f8('0x36')]['fields']));_0x5e69e2['attributes']=_0x5e69e2[_0xa3f8('0x3a')][_0xa3f8('0x3b')]?_0x5e69e2['attributes']:_0x21c57e[_0xa3f8('0x35')];if(!_0x4ea213['query'][_0xa3f8('0x3c')](_0xa3f8('0x3d'))){_0x5e69e2[_0xa3f8('0x23')]=qs[_0xa3f8('0x23')](_0x4ea213['query'][_0xa3f8('0x23')]);_0x5e69e2['offset']=qs[_0xa3f8('0x21')](_0x4ea213['query'][_0xa3f8('0x21')]);}_0x5e69e2['order']=qs['sort'](_0x4ea213['query'][_0xa3f8('0x3e')]);_0x5e69e2[_0xa3f8('0x3f')]=qs[_0xa3f8('0x38')](_[_0xa3f8('0x40')](_0x4ea213['query'],_0x21c57e[_0xa3f8('0x38')]),_0x226153);if(_0x4ea213[_0xa3f8('0x36')][_0xa3f8('0x41')]){_0x5e69e2[_0xa3f8('0x3f')]=_[_0xa3f8('0x42')](_0x5e69e2[_0xa3f8('0x3f')],{'$or':_['map'](_0x226153,function(_0x14db5b){if(_0x14db5b[_0xa3f8('0x33')]!==_0xa3f8('0x43')){var _0x51de10={};_0x51de10[_0x14db5b[_0xa3f8('0x2c')]]={'$like':'%'+_0x4ea213[_0xa3f8('0x36')]['filter']+'%'};return _0x51de10;}})});}_0x5e69e2=_[_0xa3f8('0x42')]({},_0x5e69e2,_0x4ea213['options']);var _0xbf8209={'where':_0x5e69e2['where']};return db[_0xa3f8('0x30')][_0xa3f8('0x24')](_0xbf8209)[_0xa3f8('0x2a')](function(_0x2a77be){_0x4281ea[_0xa3f8('0x24')]=_0x2a77be;if(_0x4ea213['query'][_0xa3f8('0x44')]){_0x5e69e2[_0xa3f8('0x45')]=[{'all':!![]}];}return db['Integration'][_0xa3f8('0x46')](_0x5e69e2);})['then'](function(_0x6ff4d4){_0x4281ea[_0xa3f8('0x47')]=_0x6ff4d4;return _0x4281ea;})[_0xa3f8('0x2a')](respondWithFilteredResult(_0x458824,_0x5e69e2))[_0xa3f8('0x48')](handleError(_0x458824,null));};exports[_0xa3f8('0x49')]=function(_0x4d2b8b,_0x180e87){var _0x2b17ff={'raw':![],'where':{'id':_0x4d2b8b[_0xa3f8('0x4a')]['id']}},_0x23fe02={};_0x23fe02[_0xa3f8('0x35')]=_['keys'](db[_0xa3f8('0x30')][_0xa3f8('0x31')]);_0x23fe02[_0xa3f8('0x36')]=_[_0xa3f8('0x37')](_0x4d2b8b[_0xa3f8('0x36')]);_0x23fe02[_0xa3f8('0x38')]=_[_0xa3f8('0x39')](_0x23fe02[_0xa3f8('0x35')],_0x23fe02[_0xa3f8('0x36')]);_0x2b17ff[_0xa3f8('0x3a')]=_[_0xa3f8('0x39')](_0x23fe02[_0xa3f8('0x35')],qs[_0xa3f8('0x4b')](_0x4d2b8b['query']['fields']));_0x2b17ff['attributes']=_0x2b17ff[_0xa3f8('0x3a')][_0xa3f8('0x3b')]?_0x2b17ff[_0xa3f8('0x3a')]:_0x23fe02[_0xa3f8('0x35')];if(_0x4d2b8b[_0xa3f8('0x36')][_0xa3f8('0x44')]){_0x2b17ff['include']=[{'all':!![]}];}_0x2b17ff=_[_0xa3f8('0x42')]({},_0x2b17ff,_0x4d2b8b[_0xa3f8('0x4c')]);return db[_0xa3f8('0x30')][_0xa3f8('0x4d')](_0x2b17ff)['then'](handleEntityNotFound(_0x180e87,null))[_0xa3f8('0x2a')](respondWithResult(_0x180e87,null))[_0xa3f8('0x48')](handleError(_0x180e87,null));};exports[_0xa3f8('0x4e')]=function(_0x523b46,_0x5cae9e){return db['Integration'][_0xa3f8('0x4e')](_0x523b46[_0xa3f8('0x4f')],{})['then'](respondWithResult(_0x5cae9e,0xc9))[_0xa3f8('0x48')](handleError(_0x5cae9e,null));};exports[_0xa3f8('0x28')]=function(_0x410de5,_0x142481){if(_0x410de5[_0xa3f8('0x4f')]['id']){delete _0x410de5[_0xa3f8('0x4f')]['id'];}return db[_0xa3f8('0x30')][_0xa3f8('0x4d')]({'where':{'id':_0x410de5[_0xa3f8('0x4a')]['id']}})[_0xa3f8('0x2a')](handleEntityNotFound(_0x142481,null))[_0xa3f8('0x2a')](saveUpdates(_0x410de5[_0xa3f8('0x4f')],null))[_0xa3f8('0x2a')](respondWithResult(_0x142481,null))[_0xa3f8('0x48')](handleError(_0x142481,null));};exports[_0xa3f8('0x29')]=function(_0x242492,_0x42082d){return db['Integration']['find']({'where':{'id':_0x242492[_0xa3f8('0x4a')]['id']}})[_0xa3f8('0x2a')](handleEntityNotFound(_0x42082d,null))['then'](removeEntity(_0x42082d,null))[_0xa3f8('0x48')](handleError(_0x42082d,null));};
\ No newline at end of file
+var _0xb016=['eml-format','rimraf','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','error','name','send','index','map','Integration','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','params','update','find','body'];(function(_0x16c638,_0x20a774){var _0x1700b7=function(_0x3d6a2b){while(--_0x3d6a2b){_0x16c638['push'](_0x16c638['shift']());}};_0x1700b7(++_0x20a774);}(_0xb016,0x159));var _0x6b01=function(_0x366e64,_0x47f720){_0x366e64=_0x366e64-0x0;var _0x175ca0=_0xb016[_0x366e64];return _0x175ca0;};'use strict';var emlformat=require(_0x6b01('0x0'));var rimraf=require(_0x6b01('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6b01('0x2'));var moment=require('moment');var BPromise=require(_0x6b01('0x3'));var Mustache=require(_0x6b01('0x4'));var util=require(_0x6b01('0x5'));var path=require(_0x6b01('0x6'));var sox=require('sox');var csv=require(_0x6b01('0x7'));var ejs=require(_0x6b01('0x8'));var fs=require('fs');var fs_extra=require(_0x6b01('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x6b01('0xa'));var jsforce=require(_0x6b01('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6b01('0xc'));var Papa=require(_0x6b01('0xd'));var Redis=require(_0x6b01('0xe'));var authService=require(_0x6b01('0xf'));var qs=require(_0x6b01('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x6b01('0x11'))(_0x6b01('0x12'));var utils=require(_0x6b01('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x6b01('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x51f976,_0x26f2a0){_0x26f2a0=_0x26f2a0||0xcc;return function(_0x4fa826){if(_0x4fa826){return _0x51f976[_0x6b01('0x15')](_0x26f2a0);}return _0x51f976[_0x6b01('0x16')](_0x26f2a0)['end']();};}function respondWithResult(_0x2c305e,_0x4ea5fa){_0x4ea5fa=_0x4ea5fa||0xc8;return function(_0x50d778){if(_0x50d778){return _0x2c305e['status'](_0x4ea5fa)[_0x6b01('0x17')](_0x50d778);}};}function respondWithFilteredResult(_0x4cbd38,_0x5b2f60){return function(_0x3a259f){if(_0x3a259f){var _0x327e86=typeof _0x5b2f60[_0x6b01('0x18')]===_0x6b01('0x19')&&typeof _0x5b2f60[_0x6b01('0x1a')]===_0x6b01('0x19');var _0x122769=_0x3a259f[_0x6b01('0x1b')];var _0x9c6571=_0x327e86?0x0:_0x5b2f60[_0x6b01('0x18')];var _0x18f336=_0x327e86?_0x3a259f['count']:_0x5b2f60[_0x6b01('0x18')]+_0x5b2f60[_0x6b01('0x1a')];var _0x3b0bab;if(_0x18f336>=_0x122769){_0x18f336=_0x122769;_0x3b0bab=0xc8;}else{_0x3b0bab=0xce;}_0x4cbd38[_0x6b01('0x16')](_0x3b0bab);return _0x4cbd38[_0x6b01('0x1c')](_0x6b01('0x1d'),_0x9c6571+'-'+_0x18f336+'/'+_0x122769)[_0x6b01('0x17')](_0x3a259f);}return null;};}function patchUpdates(_0x3c0573){return function(_0x54a942){try{jsonpatch[_0x6b01('0x1e')](_0x54a942,_0x3c0573,!![]);}catch(_0xc1f453){return BPromise[_0x6b01('0x1f')](_0xc1f453);}return _0x54a942[_0x6b01('0x20')]();};}function saveUpdates(_0x1fced4,_0x181b09){return function(_0x2cea6e){if(_0x2cea6e){return _0x2cea6e['update'](_0x1fced4)[_0x6b01('0x21')](function(_0xcf9200){return _0xcf9200;});}return null;};}function removeEntity(_0x42c990,_0x51243c){return function(_0x399808){if(_0x399808){return _0x399808[_0x6b01('0x22')]()[_0x6b01('0x21')](function(){_0x42c990[_0x6b01('0x16')](0xcc)[_0x6b01('0x23')]();});}};}function handleEntityNotFound(_0x2456e9,_0x1b46fb){return function(_0x136452){if(!_0x136452){_0x2456e9[_0x6b01('0x15')](0x194);}return _0x136452;};}function handleError(_0x152dda,_0x3c0607){_0x3c0607=_0x3c0607||0x1f4;return function(_0xa846d8){logger[_0x6b01('0x24')](_0xa846d8['stack']);if(_0xa846d8[_0x6b01('0x25')]){delete _0xa846d8[_0x6b01('0x25')];}_0x152dda[_0x6b01('0x16')](_0x3c0607)[_0x6b01('0x26')](_0xa846d8);};}exports[_0x6b01('0x27')]=function(_0x528cbd,_0x54f030){var _0x3fae61={},_0x3df3d4={},_0xc574c={'count':0x0,'rows':[]};var _0x8883d1=_[_0x6b01('0x28')](db[_0x6b01('0x29')]['rawAttributes'],function(_0x39f193){return{'name':_0x39f193['fieldName'],'type':_0x39f193[_0x6b01('0x2a')]['key']};});_0x3df3d4[_0x6b01('0x2b')]=_[_0x6b01('0x28')](_0x8883d1,_0x6b01('0x25'));_0x3df3d4[_0x6b01('0x2c')]=_[_0x6b01('0x2d')](_0x528cbd['query']);_0x3df3d4[_0x6b01('0x2e')]=_[_0x6b01('0x2f')](_0x3df3d4[_0x6b01('0x2b')],_0x3df3d4['query']);_0x3fae61['attributes']=_[_0x6b01('0x2f')](_0x3df3d4['model'],qs[_0x6b01('0x30')](_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x30')]));_0x3fae61['attributes']=_0x3fae61[_0x6b01('0x31')][_0x6b01('0x32')]?_0x3fae61[_0x6b01('0x31')]:_0x3df3d4['model'];if(!_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x33')](_0x6b01('0x34'))){_0x3fae61[_0x6b01('0x1a')]=qs[_0x6b01('0x1a')](_0x528cbd['query'][_0x6b01('0x1a')]);_0x3fae61[_0x6b01('0x18')]=qs[_0x6b01('0x18')](_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x18')]);}_0x3fae61[_0x6b01('0x35')]=qs[_0x6b01('0x36')](_0x528cbd[_0x6b01('0x2c')]['sort']);_0x3fae61[_0x6b01('0x37')]=qs['filters'](_[_0x6b01('0x38')](_0x528cbd[_0x6b01('0x2c')],_0x3df3d4[_0x6b01('0x2e')]),_0x8883d1);if(_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x39')]){_0x3fae61[_0x6b01('0x37')]=_[_0x6b01('0x3a')](_0x3fae61['where'],{'$or':_[_0x6b01('0x28')](_0x8883d1,function(_0x15f274){if(_0x15f274[_0x6b01('0x2a')]!==_0x6b01('0x3b')){var _0x1ca3aa={};_0x1ca3aa[_0x15f274[_0x6b01('0x25')]]={'$like':'%'+_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x39')]+'%'};return _0x1ca3aa;}})});}_0x3fae61=_['merge']({},_0x3fae61,_0x528cbd[_0x6b01('0x3c')]);var _0x55907f={'where':_0x3fae61[_0x6b01('0x37')]};return db[_0x6b01('0x29')]['count'](_0x55907f)[_0x6b01('0x21')](function(_0x2e661b){_0xc574c[_0x6b01('0x1b')]=_0x2e661b;if(_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x3d')]){_0x3fae61[_0x6b01('0x3e')]=[{'all':!![]}];}return db[_0x6b01('0x29')][_0x6b01('0x3f')](_0x3fae61);})[_0x6b01('0x21')](function(_0x17f335){_0xc574c['rows']=_0x17f335;return _0xc574c;})[_0x6b01('0x21')](respondWithFilteredResult(_0x54f030,_0x3fae61))[_0x6b01('0x40')](handleError(_0x54f030,null));};exports['show']=function(_0x52cec0,_0x32b9ec){var _0xd11195={'raw':![],'where':{'id':_0x52cec0[_0x6b01('0x41')]['id']}},_0x558ec1={};_0x558ec1[_0x6b01('0x2b')]=_['keys'](db[_0x6b01('0x29')]['rawAttributes']);_0x558ec1[_0x6b01('0x2c')]=_[_0x6b01('0x2d')](_0x52cec0[_0x6b01('0x2c')]);_0x558ec1['filters']=_[_0x6b01('0x2f')](_0x558ec1[_0x6b01('0x2b')],_0x558ec1['query']);_0xd11195['attributes']=_['intersection'](_0x558ec1[_0x6b01('0x2b')],qs[_0x6b01('0x30')](_0x52cec0[_0x6b01('0x2c')][_0x6b01('0x30')]));_0xd11195[_0x6b01('0x31')]=_0xd11195[_0x6b01('0x31')]['length']?_0xd11195[_0x6b01('0x31')]:_0x558ec1[_0x6b01('0x2b')];if(_0x52cec0[_0x6b01('0x2c')][_0x6b01('0x3d')]){_0xd11195[_0x6b01('0x3e')]=[{'all':!![]}];}_0xd11195=_[_0x6b01('0x3a')]({},_0xd11195,_0x52cec0['options']);return db[_0x6b01('0x29')]['find'](_0xd11195)['then'](handleEntityNotFound(_0x32b9ec,null))[_0x6b01('0x21')](respondWithResult(_0x32b9ec,null))[_0x6b01('0x40')](handleError(_0x32b9ec,null));};exports['create']=function(_0x408bb0,_0x27442e){return db[_0x6b01('0x29')]['create'](_0x408bb0['body'],{})['then'](respondWithResult(_0x27442e,0xc9))[_0x6b01('0x40')](handleError(_0x27442e,null));};exports[_0x6b01('0x42')]=function(_0x518d94,_0x34cef6){if(_0x518d94['body']['id']){delete _0x518d94['body']['id'];}return db['Integration'][_0x6b01('0x43')]({'where':{'id':_0x518d94[_0x6b01('0x41')]['id']}})['then'](handleEntityNotFound(_0x34cef6,null))['then'](saveUpdates(_0x518d94[_0x6b01('0x44')],null))['then'](respondWithResult(_0x34cef6,null))[_0x6b01('0x40')](handleError(_0x34cef6,null));};exports[_0x6b01('0x22')]=function(_0x32d446,_0x172a56){return db[_0x6b01('0x29')]['find']({'where':{'id':_0x32d446[_0x6b01('0x41')]['id']}})[_0x6b01('0x21')](handleEntityNotFound(_0x172a56,null))[_0x6b01('0x21')](removeEntity(_0x172a56,null))['catch'](handleError(_0x172a56,null));};
\ No newline at end of file
index cb11696..6e5fb82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49c4=['moment','bluebird','rimraf','Integration','integrations','lodash','util','../../config/logger','api'];(function(_0x1f6fb4,_0x58ba19){var _0x1f13a6=function(_0x58a315){while(--_0x58a315){_0x1f6fb4['push'](_0x1f6fb4['shift']());}};_0x1f13a6(++_0x58ba19);}(_0x49c4,0x1d0));var _0x449c=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x49c4[_0x3ff085];return _0x2b68c3;};'use strict';var _=require(_0x449c('0x0'));var util=require(_0x449c('0x1'));var logger=require(_0x449c('0x2'))(_0x449c('0x3'));var moment=require(_0x449c('0x4'));var BPromise=require(_0x449c('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x449c('0x6'));var config=require('../../config/environment');var attributes=require('./integration.attributes');module['exports']=function(_0x408949,_0x2090c3){return _0x408949['define'](_0x449c('0x7'),attributes,{'tableName':_0x449c('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2d7e=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./integration.attributes','exports','Integration','integrations','lodash'];(function(_0x299f92,_0x220e6f){var _0x5eac69=function(_0x3cd695){while(--_0x3cd695){_0x299f92['push'](_0x299f92['shift']());}};_0x5eac69(++_0x220e6f);}(_0x2d7e,0x16b));var _0xe2d7=function(_0xf0bc07,_0x510ebf){_0xf0bc07=_0xf0bc07-0x0;var _0x1c50c2=_0x2d7e[_0xf0bc07];return _0x1c50c2;};'use strict';var _=require(_0xe2d7('0x0'));var util=require(_0xe2d7('0x1'));var logger=require(_0xe2d7('0x2'))(_0xe2d7('0x3'));var moment=require(_0xe2d7('0x4'));var BPromise=require(_0xe2d7('0x5'));var rp=require(_0xe2d7('0x6'));var fs=require('fs');var path=require(_0xe2d7('0x7'));var rimraf=require(_0xe2d7('0x8'));var config=require(_0xe2d7('0x9'));var attributes=require(_0xe2d7('0xa'));module[_0xe2d7('0xb')]=function(_0x1f7821,_0x1a532f){return _0x1f7821['define'](_0xe2d7('0xc'),attributes,{'tableName':_0xe2d7('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6ff0e39..4cfccba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd4f=['lodash','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','Integration,\x20%s,\x20%s','debug','Integration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result'];(function(_0x3f5d67,_0xb7767c){var _0x222428=function(_0x52eb44){while(--_0x52eb44){_0x3f5d67['push'](_0x3f5d67['shift']());}};_0x222428(++_0xb7767c);}(_0xdd4f,0x1ce));var _0xfdd4=function(_0x118757,_0x509476){_0x118757=_0x118757-0x0;var _0xbe67cc=_0xdd4f[_0x118757];return _0xbe67cc;};'use strict';var _=require(_0xfdd4('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xfdd4('0x1'));var fs=require('fs');var Redis=require(_0xfdd4('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xfdd4('0x3'));var logger=require(_0xfdd4('0x4'))(_0xfdd4('0x5'));var config=require('../../config/environment');var jayson=require(_0xfdd4('0x6'));var client=jayson[_0xfdd4('0x7')][_0xfdd4('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x307ac6,_0x3c72d4,_0x51acd6){return new BPromise(function(_0x3cd8e6,_0x563ae6){return client[_0xfdd4('0x9')](_0x307ac6,_0x51acd6)[_0xfdd4('0xa')](function(_0x1e823e){logger['info'](_0xfdd4('0xb'),_0x3c72d4,'request\x20sent');logger[_0xfdd4('0xc')](_0xfdd4('0xd'),_0x3c72d4,_0xfdd4('0xe'),JSON[_0xfdd4('0xf')](_0x1e823e));if(_0x1e823e[_0xfdd4('0x10')]){if(_0x1e823e[_0xfdd4('0x10')][_0xfdd4('0x11')]===0x1f4){logger[_0xfdd4('0x10')](_0xfdd4('0xb'),_0x3c72d4,_0x1e823e[_0xfdd4('0x10')][_0xfdd4('0x12')]);return _0x563ae6(_0x1e823e['error'][_0xfdd4('0x12')]);}logger[_0xfdd4('0x10')](_0xfdd4('0xb'),_0x3c72d4,_0x1e823e['error'][_0xfdd4('0x12')]);return _0x3cd8e6(_0x1e823e['error'][_0xfdd4('0x12')]);}else{logger[_0xfdd4('0x13')](_0xfdd4('0xb'),_0x3c72d4,_0xfdd4('0xe'));_0x3cd8e6(_0x1e823e[_0xfdd4('0x14')]['message']);}})['catch'](function(_0x559c77){logger[_0xfdd4('0x10')](_0xfdd4('0xb'),_0x3c72d4,_0x559c77);_0x563ae6(_0x559c77);});});}
\ No newline at end of file
+var _0x524e=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Integration,\x20%s,\x20%s','request\x20sent','debug','Integration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','moment','bluebird'];(function(_0x3d8240,_0x2663d4){var _0x3d0372=function(_0xc47c6b){while(--_0xc47c6b){_0x3d8240['push'](_0x3d8240['shift']());}};_0x3d0372(++_0x2663d4);}(_0x524e,0x15e));var _0xe524=function(_0x28c39a,_0x5e7bcf){_0x28c39a=_0x28c39a-0x0;var _0x21aa0c=_0x524e[_0x28c39a];return _0x21aa0c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe524('0x0'));var BPromise=require(_0xe524('0x1'));var rs=require(_0xe524('0x2'));var fs=require('fs');var Redis=require(_0xe524('0x3'));var db=require(_0xe524('0x4'))['db'];var utils=require(_0xe524('0x5'));var logger=require(_0xe524('0x6'))(_0xe524('0x7'));var config=require(_0xe524('0x8'));var jayson=require(_0xe524('0x9'));var client=jayson['client'][_0xe524('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x41e1a3,_0x347bed,_0x533c14){return new BPromise(function(_0x384935,_0x3e4cda){return client[_0xe524('0xb')](_0x41e1a3,_0x533c14)[_0xe524('0xc')](function(_0x991924){logger[_0xe524('0xd')](_0xe524('0xe'),_0x347bed,_0xe524('0xf'));logger[_0xe524('0x10')](_0xe524('0x11'),_0x347bed,_0xe524('0xf'),JSON[_0xe524('0x12')](_0x991924));if(_0x991924[_0xe524('0x13')]){if(_0x991924[_0xe524('0x13')][_0xe524('0x14')]===0x1f4){logger[_0xe524('0x13')]('Integration,\x20%s,\x20%s',_0x347bed,_0x991924['error'][_0xe524('0x15')]);return _0x3e4cda(_0x991924[_0xe524('0x13')][_0xe524('0x15')]);}logger[_0xe524('0x13')](_0xe524('0xe'),_0x347bed,_0x991924['error'][_0xe524('0x15')]);return _0x384935(_0x991924['error'][_0xe524('0x15')]);}else{logger[_0xe524('0xd')]('Integration,\x20%s,\x20%s',_0x347bed,_0xe524('0xf'));_0x384935(_0x991924['result'][_0xe524('0x15')]);}})['catch'](function(_0x29a031){logger['error']('Integration,\x20%s,\x20%s',_0x347bed,_0x29a031);_0x3e4cda(_0x29a031);});});}
\ No newline at end of file
index 7b109b3..4ac6e8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1967=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','update','delete','destroy','exports','util','path','connect-timeout'];(function(_0x817d9b,_0x3c37e3){var _0x2752e1=function(_0x2b434e){while(--_0x2b434e){_0x817d9b['push'](_0x817d9b['shift']());}};_0x2752e1(++_0x3c37e3);}(_0x1967,0x173));var _0x7196=function(_0x49b4c3,_0x3e0f02){_0x49b4c3=_0x49b4c3-0x0;var _0x694194=_0x1967[_0x49b4c3];return _0x694194;};'use strict';var multer=require('multer');var util=require(_0x7196('0x0'));var path=require(_0x7196('0x1'));var timeout=require(_0x7196('0x2'));var express=require(_0x7196('0x3'));var router=express[_0x7196('0x4')]();var fs_extra=require(_0x7196('0x5'));var auth=require(_0x7196('0x6'));var interaction=require(_0x7196('0x7'));var config=require(_0x7196('0x8'));var controller=require(_0x7196('0x9'));router['get']('/',auth[_0x7196('0xa')](),controller[_0x7196('0xb')]);router[_0x7196('0xc')](_0x7196('0xd'),auth[_0x7196('0xa')](),controller[_0x7196('0xe')]);router['get'](_0x7196('0xf'),auth[_0x7196('0xa')](),controller[_0x7196('0x10')]);router[_0x7196('0x11')]('/',auth[_0x7196('0xa')](),controller['create']);router['put'](_0x7196('0xf'),auth[_0x7196('0xa')](),controller[_0x7196('0x12')]);router[_0x7196('0x13')](_0x7196('0xf'),auth[_0x7196('0xa')](),controller[_0x7196('0x14')]);module[_0x7196('0x15')]=router;
\ No newline at end of file
+var _0x4137=['show','post','create','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','get','index','/describe','isAuthenticated','/:id'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x4137,0xf8));var _0x7413=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x4137[_0x27af45];return _0x18df21;};'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['describe']);router[_0x7413('0xb')](_0x7413('0xf'),auth['isAuthenticated'](),controller[_0x7413('0x10')]);router[_0x7413('0x11')]('/',auth['isAuthenticated'](),controller[_0x7413('0x12')]);router[_0x7413('0x13')](_0x7413('0xf'),auth[_0x7413('0xe')](),controller[_0x7413('0x14')]);router['delete'](_0x7413('0xf'),auth[_0x7413('0xe')](),controller['destroy']);module[_0x7413('0x15')]=router;
\ No newline at end of file
index 5e9e4ef..9db0c80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafbb=['DATE','BOOLEAN','TEXT','SENT','SENDING','FAILED','sequelize','exports','INTEGER','STRING'];(function(_0x111622,_0x436002){var _0x4376f2=function(_0x31d6e7){while(--_0x31d6e7){_0x111622['push'](_0x111622['shift']());}};_0x4376f2(++_0x436002);}(_0xafbb,0xd8));var _0xbafb=function(_0x2ddc96,_0xcd0983){_0x2ddc96=_0x2ddc96-0x0;var _0x1f1299=_0xafbb[_0x2ddc96];return _0x1f1299;};'use strict';var Sequelize=require(_0xbafb('0x0'));module[_0xbafb('0x1')]={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize['STRING']},'exitStatus':{'type':Sequelize['STRING']},'ticketId':{'type':Sequelize['STRING']},'integrationId':{'type':Sequelize[_0xbafb('0x2')]},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xbafb('0x3')]},'calleridnum':{'type':Sequelize[_0xbafb('0x3')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xbafb('0x3')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xbafb('0x3')]},'agentcalledAt':{'type':Sequelize[_0xbafb('0x4')]},'agentconnectAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0xbafb('0x4')]},'talktime':{'type':Sequelize[_0xbafb('0x2')]},'agentacw':{'type':Sequelize[_0xbafb('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xbafb('0x2')]},'reason':{'type':Sequelize[_0xbafb('0x3')]},'agentringnoanswer':{'type':Sequelize[_0xbafb('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0xbafb('0x4')]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0xbafb('0x4')]},'lastevent':{'type':Sequelize[_0xbafb('0x3')]},'channel':{'type':Sequelize[_0xbafb('0x3')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xbafb('0x3')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0xbafb('0x3')]},'language':{'type':Sequelize[_0xbafb('0x3')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xbafb('0x3')]},'priority':{'type':Sequelize[_0xbafb('0x3')]},'destchannel':{'type':Sequelize[_0xbafb('0x3')]},'destchannelstate':{'type':Sequelize[_0xbafb('0x2')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0xbafb('0x3')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0xbafb('0x3')]},'destconnectedlinename':{'type':Sequelize[_0xbafb('0x3')]},'destlanguage':{'type':Sequelize[_0xbafb('0x3')]},'destaccountcode':{'type':Sequelize[_0xbafb('0x3')]},'destcontext':{'type':Sequelize[_0xbafb('0x3')]},'destexten':{'type':Sequelize[_0xbafb('0x3')]},'destpriority':{'type':Sequelize[_0xbafb('0x3')]},'destuniqueid':{'type':Sequelize['STRING']},'messageId':{'type':Sequelize[_0xbafb('0x3')]},'inReplyTo':{'type':Sequelize['STRING']},'subject':{'type':Sequelize[_0xbafb('0x3')]},'from':{'type':Sequelize[_0xbafb('0x3')]},'to':{'type':Sequelize[_0xbafb('0x3')]},'cc':{'type':Sequelize[_0xbafb('0x3')]},'attachment':{'type':Sequelize[_0xbafb('0x6')]},'html':{'type':Sequelize['TEXT']},'text':{'type':Sequelize[_0xbafb('0x6')]},'status':{'type':Sequelize['ENUM'](_0xbafb('0x7'),_0xbafb('0x8'),'RECEIVED',_0xbafb('0x9'))},'url':{'type':Sequelize[_0xbafb('0x3')]},'app':{'type':Sequelize[_0xbafb('0x3')]},'appdata':{'type':Sequelize[_0xbafb('0x3')]},'projectId':{'type':Sequelize[_0xbafb('0x2')]}};
\ No newline at end of file
+var _0xf7c3=['sequelize','exports','STRING','DATE','INTEGER','BOOLEAN','TEXT','ENUM','SENDING','RECEIVED'];(function(_0x22ca5c,_0x5b957b){var _0x4a4557=function(_0x467029){while(--_0x467029){_0x22ca5c['push'](_0x22ca5c['shift']());}};_0x4a4557(++_0x5b957b);}(_0xf7c3,0x154));var _0x3f7c=function(_0x20bb9f,_0x236103){_0x20bb9f=_0x20bb9f-0x0;var _0x4d450f=_0xf7c3[_0x20bb9f];return _0x4d450f;};'use strict';var Sequelize=require(_0x3f7c('0x0'));module[_0x3f7c('0x1')]={'integration':{'type':Sequelize[_0x3f7c('0x2')]},'eventChannel':{'type':Sequelize[_0x3f7c('0x2')]},'exitStatus':{'type':Sequelize['STRING']},'ticketId':{'type':Sequelize[_0x3f7c('0x2')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize[_0x3f7c('0x2')]},'uniqueid':{'type':Sequelize[_0x3f7c('0x2')]},'calleridnum':{'type':Sequelize[_0x3f7c('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x3f7c('0x2')]},'interface':{'type':Sequelize[_0x3f7c('0x2')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0x3f7c('0x3')]},'agentconnectAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x3f7c('0x4')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x3f7c('0x3')]},'talktime':{'type':Sequelize[_0x3f7c('0x4')]},'agentacw':{'type':Sequelize[_0x3f7c('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0x3f7c('0x2')]},'agentringnoanswer':{'type':Sequelize[_0x3f7c('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x3f7c('0x3')]},'agentdump':{'type':Sequelize[_0x3f7c('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x3f7c('0x2')]},'channelstate':{'type':Sequelize[_0x3f7c('0x4')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x3f7c('0x2')]},'connectedlinename':{'type':Sequelize[_0x3f7c('0x2')]},'language':{'type':Sequelize[_0x3f7c('0x2')]},'accountcode':{'type':Sequelize[_0x3f7c('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x3f7c('0x2')]},'priority':{'type':Sequelize[_0x3f7c('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x3f7c('0x2')]},'destcalleridname':{'type':Sequelize[_0x3f7c('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x3f7c('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x3f7c('0x2')]},'destlanguage':{'type':Sequelize[_0x3f7c('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x3f7c('0x2')]},'destexten':{'type':Sequelize[_0x3f7c('0x2')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize['STRING']},'messageId':{'type':Sequelize[_0x3f7c('0x2')]},'inReplyTo':{'type':Sequelize[_0x3f7c('0x2')]},'subject':{'type':Sequelize['STRING']},'from':{'type':Sequelize[_0x3f7c('0x2')]},'to':{'type':Sequelize[_0x3f7c('0x2')]},'cc':{'type':Sequelize[_0x3f7c('0x2')]},'attachment':{'type':Sequelize['TEXT']},'html':{'type':Sequelize[_0x3f7c('0x6')]},'text':{'type':Sequelize[_0x3f7c('0x6')]},'status':{'type':Sequelize[_0x3f7c('0x7')]('SENT',_0x3f7c('0x8'),_0x3f7c('0x9'),'FAILED')},'url':{'type':Sequelize[_0x3f7c('0x2')]},'app':{'type':Sequelize[_0x3f7c('0x2')]},'appdata':{'type':Sequelize[_0x3f7c('0x2')]},'projectId':{'type':Sequelize[_0x3f7c('0x4')]}};
\ No newline at end of file
index cf9791d..3d5e3d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3457=['length','find','create','body','describe','request-promise','moment','bluebird','mustache','util','path','to-csv','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','name','index','map','IntegrationReport','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','nolimit','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','then','catch','show','params'];(function(_0x30a2c1,_0x286629){var _0x3d8d7e=function(_0x3e799d){while(--_0x3e799d){_0x30a2c1['push'](_0x30a2c1['shift']());}};_0x3d8d7e(++_0x286629);}(_0x3457,0x93));var _0x7345=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x3457[_0x2641f9];return _0x585741;};'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(_0x7345('0x0'));var moment=require(_0x7345('0x1'));var BPromise=require(_0x7345('0x2'));var Mustache=require(_0x7345('0x3'));var util=require(_0x7345('0x4'));var path=require(_0x7345('0x5'));var sox=require('sox');var csv=require(_0x7345('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x7345('0x7'));var crypto=require(_0x7345('0x8'));var jsforce=require(_0x7345('0x9'));var deskjs=require(_0x7345('0xa'));var toCsv=require(_0x7345('0x6'));var querystring=require(_0x7345('0xb'));var Papa=require('papaparse');var Redis=require(_0x7345('0xc'));var authService=require(_0x7345('0xd'));var qs=require(_0x7345('0xe'));var as=require(_0x7345('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7345('0x10'))(_0x7345('0x11'));var utils=require(_0x7345('0x12'));var config=require(_0x7345('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x7345('0x14'))['db'];function respondWithStatusCode(_0x4ecef5,_0x4716db){_0x4716db=_0x4716db||0xcc;return function(_0x2937f8){if(_0x2937f8){return _0x4ecef5[_0x7345('0x15')](_0x4716db);}return _0x4ecef5['status'](_0x4716db)[_0x7345('0x16')]();};}function respondWithResult(_0x1257b5,_0x227da8){_0x227da8=_0x227da8||0xc8;return function(_0x18730f){if(_0x18730f){return _0x1257b5[_0x7345('0x17')](_0x227da8)[_0x7345('0x18')](_0x18730f);}};}function respondWithFilteredResult(_0x5ac7b1,_0x1711ef){return function(_0x2f3711){if(_0x2f3711){var _0x19db86=typeof _0x1711ef[_0x7345('0x19')]===_0x7345('0x1a')&&typeof _0x1711ef[_0x7345('0x1b')]===_0x7345('0x1a');var _0x5424e0=_0x2f3711[_0x7345('0x1c')];var _0x92a31e=_0x19db86?0x0:_0x1711ef['offset'];var _0x2761aa=_0x19db86?_0x2f3711['count']:_0x1711ef[_0x7345('0x19')]+_0x1711ef[_0x7345('0x1b')];var _0x15dd9d;if(_0x2761aa>=_0x5424e0){_0x2761aa=_0x5424e0;_0x15dd9d=0xc8;}else{_0x15dd9d=0xce;}_0x5ac7b1[_0x7345('0x17')](_0x15dd9d);return _0x5ac7b1[_0x7345('0x1d')](_0x7345('0x1e'),_0x92a31e+'-'+_0x2761aa+'/'+_0x5424e0)['json'](_0x2f3711);}return null;};}function patchUpdates(_0x21304a){return function(_0x13671f){try{jsonpatch[_0x7345('0x1f')](_0x13671f,_0x21304a,!![]);}catch(_0x28b90d){return BPromise[_0x7345('0x20')](_0x28b90d);}return _0x13671f['save']();};}function saveUpdates(_0x1b68d5,_0x1d509e){return function(_0x35e89e){if(_0x35e89e){return _0x35e89e[_0x7345('0x21')](_0x1b68d5)['then'](function(_0x58e1b1){return _0x58e1b1;});}return null;};}function removeEntity(_0x58d87f,_0x35c80a){return function(_0x34445e){if(_0x34445e){return _0x34445e[_0x7345('0x22')]()['then'](function(){_0x58d87f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a1f19,_0x1cbaed){return function(_0x419188){if(!_0x419188){_0x5a1f19[_0x7345('0x15')](0x194);}return _0x419188;};}function handleError(_0x36e9d0,_0x2c7fe1){_0x2c7fe1=_0x2c7fe1||0x1f4;return function(_0x53b6d5){logger['error'](_0x53b6d5['stack']);if(_0x53b6d5[_0x7345('0x23')]){delete _0x53b6d5[_0x7345('0x23')];}_0x36e9d0[_0x7345('0x17')](_0x2c7fe1)['send'](_0x53b6d5);};}exports[_0x7345('0x24')]=function(_0x46bc9b,_0x114838){var _0x70a388={},_0x582116={},_0x2abf7b={'count':0x0,'rows':[]};var _0xf4e64e=_[_0x7345('0x25')](db[_0x7345('0x26')][_0x7345('0x27')],function(_0x1e28f3){return{'name':_0x1e28f3[_0x7345('0x28')],'type':_0x1e28f3[_0x7345('0x29')][_0x7345('0x2a')]};});_0x582116[_0x7345('0x2b')]=_[_0x7345('0x25')](_0xf4e64e,_0x7345('0x23'));_0x582116['query']=_[_0x7345('0x2c')](_0x46bc9b[_0x7345('0x2d')]);_0x582116[_0x7345('0x2e')]=_['intersection'](_0x582116[_0x7345('0x2b')],_0x582116[_0x7345('0x2d')]);_0x70a388[_0x7345('0x2f')]=_[_0x7345('0x30')](_0x582116[_0x7345('0x2b')],qs[_0x7345('0x31')](_0x46bc9b[_0x7345('0x2d')]['fields']));_0x70a388[_0x7345('0x2f')]=_0x70a388[_0x7345('0x2f')]['length']?_0x70a388[_0x7345('0x2f')]:_0x582116[_0x7345('0x2b')];if(!_0x46bc9b['query']['hasOwnProperty'](_0x7345('0x32'))){_0x70a388['limit']=qs[_0x7345('0x1b')](_0x46bc9b[_0x7345('0x2d')][_0x7345('0x1b')]);_0x70a388[_0x7345('0x19')]=qs['offset'](_0x46bc9b[_0x7345('0x2d')][_0x7345('0x19')]);}_0x70a388['order']=qs[_0x7345('0x33')](_0x46bc9b[_0x7345('0x2d')]['sort']);_0x70a388['where']=qs[_0x7345('0x2e')](_[_0x7345('0x34')](_0x46bc9b[_0x7345('0x2d')],_0x582116[_0x7345('0x2e')]),_0xf4e64e);if(_0x46bc9b[_0x7345('0x2d')][_0x7345('0x35')]){_0x70a388['where']=_[_0x7345('0x36')](_0x70a388[_0x7345('0x37')],{'$or':_[_0x7345('0x25')](_0xf4e64e,function(_0x36f51b){if(_0x36f51b['type']!==_0x7345('0x38')){var _0xcc4925={};_0xcc4925[_0x36f51b['name']]={'$like':'%'+_0x46bc9b[_0x7345('0x2d')][_0x7345('0x35')]+'%'};return _0xcc4925;}})});}_0x70a388=_[_0x7345('0x36')]({},_0x70a388,_0x46bc9b[_0x7345('0x39')]);var _0x76bf97={'where':_0x70a388[_0x7345('0x37')]};return db[_0x7345('0x26')][_0x7345('0x1c')](_0x76bf97)['then'](function(_0x5ae709){_0x2abf7b['count']=_0x5ae709;if(_0x46bc9b[_0x7345('0x2d')][_0x7345('0x3a')]){_0x70a388[_0x7345('0x3b')]=[{'all':!![]}];}return db[_0x7345('0x26')][_0x7345('0x3c')](_0x70a388);})['then'](function(_0x41ddf4){_0x2abf7b[_0x7345('0x3d')]=_0x41ddf4;return _0x2abf7b;})[_0x7345('0x3e')](respondWithFilteredResult(_0x114838,_0x70a388))[_0x7345('0x3f')](handleError(_0x114838,null));};exports[_0x7345('0x40')]=function(_0x13ff42,_0x3c0179){var _0x299a22={'raw':![],'where':{'id':_0x13ff42[_0x7345('0x41')]['id']}},_0x195beb={};_0x195beb[_0x7345('0x2b')]=_['keys'](db['IntegrationReport'][_0x7345('0x27')]);_0x195beb[_0x7345('0x2d')]=_[_0x7345('0x2c')](_0x13ff42[_0x7345('0x2d')]);_0x195beb[_0x7345('0x2e')]=_[_0x7345('0x30')](_0x195beb[_0x7345('0x2b')],_0x195beb['query']);_0x299a22['attributes']=_['intersection'](_0x195beb[_0x7345('0x2b')],qs[_0x7345('0x31')](_0x13ff42[_0x7345('0x2d')][_0x7345('0x31')]));_0x299a22['attributes']=_0x299a22[_0x7345('0x2f')][_0x7345('0x42')]?_0x299a22[_0x7345('0x2f')]:_0x195beb[_0x7345('0x2b')];if(_0x13ff42['query']['includeAll']){_0x299a22[_0x7345('0x3b')]=[{'all':!![]}];}_0x299a22=_[_0x7345('0x36')]({},_0x299a22,_0x13ff42[_0x7345('0x39')]);return db[_0x7345('0x26')][_0x7345('0x43')](_0x299a22)['then'](handleEntityNotFound(_0x3c0179,null))[_0x7345('0x3e')](respondWithResult(_0x3c0179,null))[_0x7345('0x3f')](handleError(_0x3c0179,null));};exports[_0x7345('0x44')]=function(_0x573b50,_0x436def){return db['IntegrationReport']['create'](_0x573b50['body'],{})[_0x7345('0x3e')](respondWithResult(_0x436def,0xc9))[_0x7345('0x3f')](handleError(_0x436def,null));};exports['update']=function(_0x56e903,_0x49b501){if(_0x56e903['body']['id']){delete _0x56e903[_0x7345('0x45')]['id'];}return db[_0x7345('0x26')][_0x7345('0x43')]({'where':{'id':_0x56e903[_0x7345('0x41')]['id']}})['then'](handleEntityNotFound(_0x49b501,null))['then'](saveUpdates(_0x56e903[_0x7345('0x45')],null))[_0x7345('0x3e')](respondWithResult(_0x49b501,null))[_0x7345('0x3f')](handleError(_0x49b501,null));};exports[_0x7345('0x22')]=function(_0x3ef418,_0x2afa7f){return db[_0x7345('0x26')][_0x7345('0x43')]({'where':{'id':_0x3ef418[_0x7345('0x41')]['id']}})['then'](handleEntityNotFound(_0x2afa7f,null))[_0x7345('0x3e')](removeEntity(_0x2afa7f,null))[_0x7345('0x3f')](handleError(_0x2afa7f,null));};exports[_0x7345('0x46')]=function(_0x2ddc6d,_0x124aed){return db[_0x7345('0x26')][_0x7345('0x46')]()[_0x7345('0x3e')](respondWithResult(_0x124aed,null))['catch'](handleError(_0x124aed,null));};
\ No newline at end of file
+var _0xaa98=['crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','json','undefined','limit','count','offset','status','set','Content-Range','apply','reject','save','update','then','error','name','send','IntegrationReport','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','destroy','rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel'];(function(_0xff54c2,_0x3ef6b1){var _0x4bf365=function(_0x2635bb){while(--_0x2635bb){_0xff54c2['push'](_0xff54c2['shift']());}};_0x4bf365(++_0x3ef6b1);}(_0xaa98,0x88));var _0x8aa9=function(_0x1add9f,_0x4a5014){_0x1add9f=_0x1add9f-0x0;var _0x5250f1=_0xaa98[_0x1add9f];return _0x5250f1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8aa9('0x0'));var zipdir=require(_0x8aa9('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8aa9('0x2'));var moment=require('moment');var BPromise=require(_0x8aa9('0x3'));var Mustache=require('mustache');var util=require(_0x8aa9('0x4'));var path=require(_0x8aa9('0x5'));var sox=require(_0x8aa9('0x6'));var csv=require(_0x8aa9('0x7'));var ejs=require(_0x8aa9('0x8'));var fs=require('fs');var fs_extra=require(_0x8aa9('0x9'));var _=require(_0x8aa9('0xa'));var squel=require(_0x8aa9('0xb'));var crypto=require(_0x8aa9('0xc'));var jsforce=require(_0x8aa9('0xd'));var deskjs=require(_0x8aa9('0xe'));var toCsv=require(_0x8aa9('0x7'));var querystring=require(_0x8aa9('0xf'));var Papa=require(_0x8aa9('0x10'));var Redis=require(_0x8aa9('0x11'));var authService=require(_0x8aa9('0x12'));var qs=require(_0x8aa9('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x8aa9('0x14'))(_0x8aa9('0x15'));var utils=require(_0x8aa9('0x16'));var config=require(_0x8aa9('0x17'));var licenseUtil=require(_0x8aa9('0x18'));var db=require(_0x8aa9('0x19'))['db'];function respondWithStatusCode(_0x329290,_0x3bee8a){_0x3bee8a=_0x3bee8a||0xcc;return function(_0xa7f98d){if(_0xa7f98d){return _0x329290[_0x8aa9('0x1a')](_0x3bee8a);}return _0x329290['status'](_0x3bee8a)['end']();};}function respondWithResult(_0xa937da,_0x526afd){_0x526afd=_0x526afd||0xc8;return function(_0x180663){if(_0x180663){return _0xa937da['status'](_0x526afd)[_0x8aa9('0x1b')](_0x180663);}};}function respondWithFilteredResult(_0x49f737,_0x56cadc){return function(_0x121ab6){if(_0x121ab6){var _0x1fe89f=typeof _0x56cadc['offset']===_0x8aa9('0x1c')&&typeof _0x56cadc[_0x8aa9('0x1d')]===_0x8aa9('0x1c');var _0x2ed63e=_0x121ab6[_0x8aa9('0x1e')];var _0x4a7534=_0x1fe89f?0x0:_0x56cadc[_0x8aa9('0x1f')];var _0x4a98e9=_0x1fe89f?_0x121ab6[_0x8aa9('0x1e')]:_0x56cadc[_0x8aa9('0x1f')]+_0x56cadc[_0x8aa9('0x1d')];var _0x4e4ded;if(_0x4a98e9>=_0x2ed63e){_0x4a98e9=_0x2ed63e;_0x4e4ded=0xc8;}else{_0x4e4ded=0xce;}_0x49f737[_0x8aa9('0x20')](_0x4e4ded);return _0x49f737[_0x8aa9('0x21')](_0x8aa9('0x22'),_0x4a7534+'-'+_0x4a98e9+'/'+_0x2ed63e)[_0x8aa9('0x1b')](_0x121ab6);}return null;};}function patchUpdates(_0x261961){return function(_0x262c89){try{jsonpatch[_0x8aa9('0x23')](_0x262c89,_0x261961,!![]);}catch(_0x1b25c0){return BPromise[_0x8aa9('0x24')](_0x1b25c0);}return _0x262c89[_0x8aa9('0x25')]();};}function saveUpdates(_0x5ba369,_0x3fce38){return function(_0x29a6fc){if(_0x29a6fc){return _0x29a6fc[_0x8aa9('0x26')](_0x5ba369)[_0x8aa9('0x27')](function(_0x21c28b){return _0x21c28b;});}return null;};}function removeEntity(_0x2e042f,_0x4423e8){return function(_0x544772){if(_0x544772){return _0x544772['destroy']()[_0x8aa9('0x27')](function(){_0x2e042f[_0x8aa9('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x27b7e5,_0x10a115){return function(_0x165ed6){if(!_0x165ed6){_0x27b7e5['sendStatus'](0x194);}return _0x165ed6;};}function handleError(_0x2e3157,_0x260586){_0x260586=_0x260586||0x1f4;return function(_0x45ee11){logger[_0x8aa9('0x28')](_0x45ee11['stack']);if(_0x45ee11[_0x8aa9('0x29')]){delete _0x45ee11[_0x8aa9('0x29')];}_0x2e3157['status'](_0x260586)[_0x8aa9('0x2a')](_0x45ee11);};}exports['index']=function(_0x2eccbd,_0x5a8c93){var _0x47d0cc={},_0x4eb4ed={},_0x562ec7={'count':0x0,'rows':[]};var _0x2362d5=_['map'](db[_0x8aa9('0x2b')][_0x8aa9('0x2c')],function(_0x55d265){return{'name':_0x55d265[_0x8aa9('0x2d')],'type':_0x55d265['type'][_0x8aa9('0x2e')]};});_0x4eb4ed['model']=_['map'](_0x2362d5,_0x8aa9('0x29'));_0x4eb4ed[_0x8aa9('0x2f')]=_[_0x8aa9('0x30')](_0x2eccbd[_0x8aa9('0x2f')]);_0x4eb4ed[_0x8aa9('0x31')]=_[_0x8aa9('0x32')](_0x4eb4ed[_0x8aa9('0x33')],_0x4eb4ed[_0x8aa9('0x2f')]);_0x47d0cc[_0x8aa9('0x34')]=_[_0x8aa9('0x32')](_0x4eb4ed[_0x8aa9('0x33')],qs[_0x8aa9('0x35')](_0x2eccbd[_0x8aa9('0x2f')]['fields']));_0x47d0cc['attributes']=_0x47d0cc[_0x8aa9('0x34')][_0x8aa9('0x36')]?_0x47d0cc['attributes']:_0x4eb4ed[_0x8aa9('0x33')];if(!_0x2eccbd[_0x8aa9('0x2f')][_0x8aa9('0x37')](_0x8aa9('0x38'))){_0x47d0cc[_0x8aa9('0x1d')]=qs['limit'](_0x2eccbd[_0x8aa9('0x2f')]['limit']);_0x47d0cc[_0x8aa9('0x1f')]=qs[_0x8aa9('0x1f')](_0x2eccbd[_0x8aa9('0x2f')][_0x8aa9('0x1f')]);}_0x47d0cc['order']=qs[_0x8aa9('0x39')](_0x2eccbd['query'][_0x8aa9('0x39')]);_0x47d0cc[_0x8aa9('0x3a')]=qs[_0x8aa9('0x31')](_['pick'](_0x2eccbd[_0x8aa9('0x2f')],_0x4eb4ed[_0x8aa9('0x31')]),_0x2362d5);if(_0x2eccbd['query'][_0x8aa9('0x3b')]){_0x47d0cc[_0x8aa9('0x3a')]=_[_0x8aa9('0x3c')](_0x47d0cc[_0x8aa9('0x3a')],{'$or':_['map'](_0x2362d5,function(_0x108826){if(_0x108826['type']!==_0x8aa9('0x3d')){var _0x494aef={};_0x494aef[_0x108826[_0x8aa9('0x29')]]={'$like':'%'+_0x2eccbd[_0x8aa9('0x2f')][_0x8aa9('0x3b')]+'%'};return _0x494aef;}})});}_0x47d0cc=_[_0x8aa9('0x3c')]({},_0x47d0cc,_0x2eccbd[_0x8aa9('0x3e')]);var _0x308fac={'where':_0x47d0cc[_0x8aa9('0x3a')]};return db['IntegrationReport'][_0x8aa9('0x1e')](_0x308fac)[_0x8aa9('0x27')](function(_0x1c175e){_0x562ec7[_0x8aa9('0x1e')]=_0x1c175e;if(_0x2eccbd[_0x8aa9('0x2f')][_0x8aa9('0x3f')]){_0x47d0cc[_0x8aa9('0x40')]=[{'all':!![]}];}return db[_0x8aa9('0x2b')][_0x8aa9('0x41')](_0x47d0cc);})['then'](function(_0x562eeb){_0x562ec7[_0x8aa9('0x42')]=_0x562eeb;return _0x562ec7;})[_0x8aa9('0x27')](respondWithFilteredResult(_0x5a8c93,_0x47d0cc))['catch'](handleError(_0x5a8c93,null));};exports[_0x8aa9('0x43')]=function(_0x47944a,_0xae3be0){var _0x1eb8a0={'raw':![],'where':{'id':_0x47944a[_0x8aa9('0x44')]['id']}},_0x860cac={};_0x860cac[_0x8aa9('0x33')]=_[_0x8aa9('0x30')](db[_0x8aa9('0x2b')]['rawAttributes']);_0x860cac['query']=_[_0x8aa9('0x30')](_0x47944a[_0x8aa9('0x2f')]);_0x860cac['filters']=_['intersection'](_0x860cac[_0x8aa9('0x33')],_0x860cac[_0x8aa9('0x2f')]);_0x1eb8a0[_0x8aa9('0x34')]=_['intersection'](_0x860cac['model'],qs[_0x8aa9('0x35')](_0x47944a[_0x8aa9('0x2f')][_0x8aa9('0x35')]));_0x1eb8a0[_0x8aa9('0x34')]=_0x1eb8a0[_0x8aa9('0x34')][_0x8aa9('0x36')]?_0x1eb8a0[_0x8aa9('0x34')]:_0x860cac[_0x8aa9('0x33')];if(_0x47944a[_0x8aa9('0x2f')][_0x8aa9('0x3f')]){_0x1eb8a0['include']=[{'all':!![]}];}_0x1eb8a0=_[_0x8aa9('0x3c')]({},_0x1eb8a0,_0x47944a[_0x8aa9('0x3e')]);return db['IntegrationReport'][_0x8aa9('0x45')](_0x1eb8a0)['then'](handleEntityNotFound(_0xae3be0,null))[_0x8aa9('0x27')](respondWithResult(_0xae3be0,null))[_0x8aa9('0x46')](handleError(_0xae3be0,null));};exports[_0x8aa9('0x47')]=function(_0x28d032,_0x3c465d){return db[_0x8aa9('0x2b')][_0x8aa9('0x47')](_0x28d032[_0x8aa9('0x48')],{})[_0x8aa9('0x27')](respondWithResult(_0x3c465d,0xc9))[_0x8aa9('0x46')](handleError(_0x3c465d,null));};exports['update']=function(_0x359f9d,_0x309bd4){if(_0x359f9d[_0x8aa9('0x48')]['id']){delete _0x359f9d[_0x8aa9('0x48')]['id'];}return db[_0x8aa9('0x2b')][_0x8aa9('0x45')]({'where':{'id':_0x359f9d[_0x8aa9('0x44')]['id']}})[_0x8aa9('0x27')](handleEntityNotFound(_0x309bd4,null))[_0x8aa9('0x27')](saveUpdates(_0x359f9d['body'],null))['then'](respondWithResult(_0x309bd4,null))[_0x8aa9('0x46')](handleError(_0x309bd4,null));};exports[_0x8aa9('0x49')]=function(_0x4e1cf0,_0x30ef6f){return db[_0x8aa9('0x2b')][_0x8aa9('0x45')]({'where':{'id':_0x4e1cf0['params']['id']}})[_0x8aa9('0x27')](handleEntityNotFound(_0x30ef6f,null))['then'](removeEntity(_0x30ef6f,null))['catch'](handleError(_0x30ef6f,null));};exports['describe']=function(_0xc0e71b,_0x5c5b0f){return db[_0x8aa9('0x2b')]['describe']()[_0x8aa9('0x27')](respondWithResult(_0x5c5b0f,null))['catch'](handleError(_0x5c5b0f,null));};
\ No newline at end of file
index b872423..5bde7ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89af=['define','lodash','api','moment','bluebird','request-promise','path','../../config/environment','./integrationReport.attributes','exports'];(function(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0x89af,0x1eb));var _0xf89a=function(_0x136d5d,_0xcb22a8){_0x136d5d=_0x136d5d-0x0;var _0x588c9d=_0x89af[_0x136d5d];return _0x588c9d;};'use strict';var _=require(_0xf89a('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf89a('0x1'));var moment=require(_0xf89a('0x2'));var BPromise=require(_0xf89a('0x3'));var rp=require(_0xf89a('0x4'));var fs=require('fs');var path=require(_0xf89a('0x5'));var rimraf=require('rimraf');var config=require(_0xf89a('0x6'));var attributes=require(_0xf89a('0x7'));module[_0xf89a('0x8')]=function(_0x136d5b,_0x550774){return _0x136d5b[_0xf89a('0x9')]('IntegrationReport',attributes,{'tableName':'report_integration','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x11d8=['util','api','moment','bluebird','path','../../config/environment','./integrationReport.attributes','exports','IntegrationReport','report_integration','lodash'];(function(_0x48d9c3,_0x255030){var _0x346bde=function(_0x295f83){while(--_0x295f83){_0x48d9c3['push'](_0x48d9c3['shift']());}};_0x346bde(++_0x255030);}(_0x11d8,0x99));var _0x811d=function(_0x56f4ff,_0xef419d){_0x56f4ff=_0x56f4ff-0x0;var _0x19d3d2=_0x11d8[_0x56f4ff];return _0x19d3d2;};'use strict';var _=require(_0x811d('0x0'));var util=require(_0x811d('0x1'));var logger=require('../../config/logger')(_0x811d('0x2'));var moment=require(_0x811d('0x3'));var BPromise=require(_0x811d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x811d('0x5'));var rimraf=require('rimraf');var config=require(_0x811d('0x6'));var attributes=require(_0x811d('0x7'));module[_0x811d('0x8')]=function(_0x3985f2,_0x53e254){return _0x3985f2['define'](_0x811d('0x9'),attributes,{'tableName':_0x811d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8ba0842..cf599fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba34=['../../config/environment','jayson/promise','client','http','request','then','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/logger','rpc'];(function(_0x4e7288,_0x33b9e1){var _0x4ec174=function(_0x3897f0){while(--_0x3897f0){_0x4e7288['push'](_0x4e7288['shift']());}};_0x4ec174(++_0x33b9e1);}(_0xba34,0x119));var _0x4ba3=function(_0x53192f,_0x4af044){_0x53192f=_0x53192f-0x0;var _0x234b3a=_0xba34[_0x53192f];return _0x234b3a;};'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
+var _0x57ca=['client','http','request','info','request\x20sent','IntegrationReport,\x20%s,\x20%s,\x20%s','error','code','IntegrationReport,\x20%s,\x20%s','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x223414,_0x50feba){var _0x2f1d62=function(_0x1942cd){while(--_0x1942cd){_0x223414['push'](_0x223414['shift']());}};_0x2f1d62(++_0x50feba);}(_0x57ca,0x108));var _0xa57c=function(_0x3e738d,_0x449d6f){_0x3e738d=_0x3e738d-0x0;var _0x255862=_0x57ca[_0x3e738d];return _0x255862;};'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')]('IntegrationReport,\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')]('IntegrationReport,\x20%s,\x20%s',_0x314574,_0x5a6024);_0x5e3962(_0x5a6024);});});}
\ No newline at end of file
index 8195168..daee5c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9aef=['post','create','/:id/sub_intervals','addInterval','/:id/sub_intervals/create_many','addIntervals','put','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','getIntervals'];(function(_0x314e2c,_0x33d6bf){var _0x263071=function(_0xbe72ff){while(--_0xbe72ff){_0x314e2c['push'](_0x314e2c['shift']());}};_0x263071(++_0x33d6bf);}(_0x9aef,0xfc));var _0xf9ae=function(_0x4e3aaa,_0x10144b){_0x4e3aaa=_0x4e3aaa-0x0;var _0x586431=_0x9aef[_0x4e3aaa];return _0x586431;};'use strict';var multer=require('multer');var util=require(_0xf9ae('0x0'));var path=require(_0xf9ae('0x1'));var timeout=require(_0xf9ae('0x2'));var express=require(_0xf9ae('0x3'));var router=express[_0xf9ae('0x4')]();var fs_extra=require(_0xf9ae('0x5'));var auth=require(_0xf9ae('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xf9ae('0x7'));var controller=require('./interval.controller');router[_0xf9ae('0x8')]('/',auth[_0xf9ae('0x9')](),controller['index']);router[_0xf9ae('0x8')](_0xf9ae('0xa'),auth[_0xf9ae('0x9')](),controller['show']);router['get']('/:id/sub_intervals',auth[_0xf9ae('0x9')](),controller[_0xf9ae('0xb')]);router[_0xf9ae('0xc')]('/',auth[_0xf9ae('0x9')](),controller[_0xf9ae('0xd')]);router['post'](_0xf9ae('0xe'),auth[_0xf9ae('0x9')](),controller[_0xf9ae('0xf')]);router['post'](_0xf9ae('0x10'),auth['isAuthenticated'](),controller[_0xf9ae('0x11')]);router[_0xf9ae('0x12')]('/:id',auth[_0xf9ae('0x9')](),controller['update']);router[_0xf9ae('0x13')]('/:id',auth[_0xf9ae('0x9')](),controller[_0xf9ae('0x14')]);module[_0xf9ae('0x15')]=router;
\ No newline at end of file
+var _0x43a2=['connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./interval.controller','isAuthenticated','get','/:id/sub_intervals','getIntervals','post','addInterval','/:id/sub_intervals/create_many','addIntervals','put','/:id','update','delete','destroy','util','path'];(function(_0x35e54a,_0x46953a){var _0x35c2b0=function(_0x3c0ab9){while(--_0x3c0ab9){_0x35e54a['push'](_0x35e54a['shift']());}};_0x35c2b0(++_0x46953a);}(_0x43a2,0xd0));var _0x243a=function(_0x424e24,_0x295bfe){_0x424e24=_0x424e24-0x0;var _0x2f52cd=_0x43a2[_0x424e24];return _0x2f52cd;};'use strict';var multer=require('multer');var util=require(_0x243a('0x0'));var path=require(_0x243a('0x1'));var timeout=require(_0x243a('0x2'));var express=require('express');var router=express[_0x243a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x243a('0x4'));var interaction=require(_0x243a('0x5'));var config=require(_0x243a('0x6'));var controller=require(_0x243a('0x7'));router['get']('/',auth[_0x243a('0x8')](),controller['index']);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x243a('0x9')](_0x243a('0xa'),auth[_0x243a('0x8')](),controller[_0x243a('0xb')]);router[_0x243a('0xc')]('/',auth[_0x243a('0x8')](),controller['create']);router['post'](_0x243a('0xa'),auth[_0x243a('0x8')](),controller[_0x243a('0xd')]);router[_0x243a('0xc')](_0x243a('0xe'),auth[_0x243a('0x8')](),controller[_0x243a('0xf')]);router[_0x243a('0x10')](_0x243a('0x11'),auth[_0x243a('0x8')](),controller[_0x243a('0x12')]);router[_0x243a('0x13')](_0x243a('0x11'),auth[_0x243a('0x8')](),controller[_0x243a('0x14')]);module['exports']=router;
\ No newline at end of file
index 2d18c38..7f6124a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75ee=['STRING'];(function(_0x222cc3,_0x4d0e48){var _0x4a2f64=function(_0x4e1190){while(--_0x4e1190){_0x222cc3['push'](_0x222cc3['shift']());}};_0x4a2f64(++_0x4d0e48);}(_0x75ee,0x1c6));var _0xe75e=function(_0x36436d,_0x20292c){_0x36436d=_0x36436d-0x0;var _0x34615d=_0x75ee[_0x36436d];return _0x34615d;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xe75e('0x0')]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xe75e('0x0')],'allowNull':!![]}};
\ No newline at end of file
+var _0x6b89=['STRING','sequelize'];(function(_0x1a80db,_0x3fa121){var _0x5b4c90=function(_0x3296cc){while(--_0x3296cc){_0x1a80db['push'](_0x1a80db['shift']());}};_0x5b4c90(++_0x3fa121);}(_0x6b89,0xc5));var _0x96b8=function(_0x56e57a,_0x36c1b7){_0x56e57a=_0x56e57a-0x0;var _0x259012=_0x6b89[_0x56e57a];return _0x259012;};'use strict';var Sequelize=require(_0x96b8('0x0'));module['exports']={'name':{'type':Sequelize[_0x96b8('0x1')]},'description':{'type':Sequelize[_0x96b8('0x1')]},'interval':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
index 1f16cb1..baf9a91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x816a=['error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','keys','query','filters','attributes','fields','length','nolimit','sort','pick','filter','merge','where','VIRTUAL','Interval','includeAll','include','rows','show','intersection','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','find','addInterval','IntervalId','getIntervals','findOne','order','sequelize','transaction','bulkCreate','findAll','eml-format','rimraf','zip-dir','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../components/extensions/rewrite','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Intervals','UserProfileResource'];(function(_0x1113d6,_0x4dc68c){var _0x142968=function(_0x3b872d){while(--_0x3b872d){_0x1113d6['push'](_0x1113d6['shift']());}};_0x142968(++_0x4dc68c);}(_0x816a,0xe5));var _0xa816=function(_0x41bb3d,_0x1e28bf){_0x41bb3d=_0x41bb3d-0x0;var _0x1c55c2=_0x816a[_0x41bb3d];return _0x1c55c2;};'use strict';var emlformat=require(_0xa816('0x0'));var rimraf=require(_0xa816('0x1'));var zipdir=require(_0xa816('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xa816('0x3'));var Mustache=require(_0xa816('0x4'));var util=require(_0xa816('0x5'));var path=require(_0xa816('0x6'));var sox=require(_0xa816('0x7'));var csv=require('to-csv');var ejs=require(_0xa816('0x8'));var fs=require('fs');var fs_extra=require(_0xa816('0x9'));var _=require(_0xa816('0xa'));var squel=require('squel');var crypto=require(_0xa816('0xb'));var jsforce=require(_0xa816('0xc'));var deskjs=require(_0xa816('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xa816('0xe'));var Redis=require('ioredis');var authService=require(_0xa816('0xf'));var qs=require(_0xa816('0x10'));var as=require(_0xa816('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xa816('0x12'));var utils=require('../../config/utils');var config=require(_0xa816('0x13'));var licenseUtil=require(_0xa816('0x14'));var db=require('../../mysqldb')['db'];var extensions=require(_0xa816('0x15'));function respondWithStatusCode(_0x25dbf0,_0x2725d0){_0x2725d0=_0x2725d0||0xcc;return function(_0x21d9a2){if(_0x21d9a2){return _0x25dbf0[_0xa816('0x16')](_0x2725d0);}return _0x25dbf0[_0xa816('0x17')](_0x2725d0)[_0xa816('0x18')]();};}function respondWithResult(_0x5dc093,_0x23cb52){_0x23cb52=_0x23cb52||0xc8;return function(_0x4ed49b){if(_0x4ed49b){return _0x5dc093[_0xa816('0x17')](_0x23cb52)[_0xa816('0x19')](_0x4ed49b);}};}function respondWithFilteredResult(_0x3a6ebb,_0x21d45e){return function(_0x130a46){if(_0x130a46){var _0x24af0a=typeof _0x21d45e[_0xa816('0x1a')]===_0xa816('0x1b')&&typeof _0x21d45e[_0xa816('0x1c')]==='undefined';var _0x283c16=_0x130a46[_0xa816('0x1d')];var _0xc3273b=_0x24af0a?0x0:_0x21d45e[_0xa816('0x1a')];var _0x2b3403=_0x24af0a?_0x130a46['count']:_0x21d45e[_0xa816('0x1a')]+_0x21d45e[_0xa816('0x1c')];var _0x4b6408;if(_0x2b3403>=_0x283c16){_0x2b3403=_0x283c16;_0x4b6408=0xc8;}else{_0x4b6408=0xce;}_0x3a6ebb['status'](_0x4b6408);return _0x3a6ebb[_0xa816('0x1e')](_0xa816('0x1f'),_0xc3273b+'-'+_0x2b3403+'/'+_0x283c16)[_0xa816('0x19')](_0x130a46);}return null;};}function patchUpdates(_0xd5a1f0){return function(_0x1b0653){try{jsonpatch[_0xa816('0x20')](_0x1b0653,_0xd5a1f0,!![]);}catch(_0x19a6b1){return BPromise[_0xa816('0x21')](_0x19a6b1);}return _0x1b0653[_0xa816('0x22')]();};}function saveUpdates(_0x3d0587,_0x20d92){return function(_0x4d09a4){if(_0x4d09a4){return _0x4d09a4[_0xa816('0x23')](_0x3d0587)[_0xa816('0x24')](function(_0x29d54a){return _0x29d54a;});}return null;};}function removeEntity(_0x219483,_0x324839){return function(_0xeb8f71){if(_0xeb8f71){return _0xeb8f71[_0xa816('0x25')]()['then'](function(){var _0x57474b=_0xeb8f71[_0xa816('0x26')]({'plain':!![]});var _0x56c265=_0xa816('0x27');return db[_0xa816('0x28')][_0xa816('0x25')]({'where':{'type':_0x56c265,'resourceId':_0x57474b['id']}})[_0xa816('0x24')](function(){return _0xeb8f71;});})[_0xa816('0x24')](function(){_0x219483[_0xa816('0x17')](0xcc)[_0xa816('0x18')]();});}};}function handleEntityNotFound(_0x41562d,_0x2a3295){return function(_0x5066c3){if(!_0x5066c3){_0x41562d[_0xa816('0x16')](0x194);}return _0x5066c3;};}function handleError(_0x1a2872,_0x1285f3){_0x1285f3=_0x1285f3||0x1f4;return function(_0x237f44){logger[_0xa816('0x29')](_0x237f44[_0xa816('0x2a')]);if(_0x237f44[_0xa816('0x2b')]){delete _0x237f44[_0xa816('0x2b')];}_0x1a2872[_0xa816('0x17')](_0x1285f3)[_0xa816('0x2c')](_0x237f44);};}exports[_0xa816('0x2d')]=function(_0x56c490,_0x24edfd){var _0x4979f8={},_0x5aac85={},_0xdde510={'count':0x0,'rows':[]};var _0x3024e3=_['map'](db['Interval'][_0xa816('0x2e')],function(_0x16661f){return{'name':_0x16661f[_0xa816('0x2f')],'type':_0x16661f[_0xa816('0x30')][_0xa816('0x31')]};});_0x5aac85[_0xa816('0x32')]=_[_0xa816('0x33')](_0x3024e3,_0xa816('0x2b'));_0x5aac85['query']=_[_0xa816('0x34')](_0x56c490[_0xa816('0x35')]);_0x5aac85[_0xa816('0x36')]=_['intersection'](_0x5aac85[_0xa816('0x32')],_0x5aac85['query']);_0x4979f8[_0xa816('0x37')]=_['intersection'](_0x5aac85[_0xa816('0x32')],qs[_0xa816('0x38')](_0x56c490[_0xa816('0x35')][_0xa816('0x38')]));_0x4979f8[_0xa816('0x37')]=_0x4979f8[_0xa816('0x37')][_0xa816('0x39')]?_0x4979f8[_0xa816('0x37')]:_0x5aac85[_0xa816('0x32')];if(!_0x56c490['query']['hasOwnProperty'](_0xa816('0x3a'))){_0x4979f8['limit']=qs[_0xa816('0x1c')](_0x56c490[_0xa816('0x35')][_0xa816('0x1c')]);_0x4979f8[_0xa816('0x1a')]=qs[_0xa816('0x1a')](_0x56c490[_0xa816('0x35')][_0xa816('0x1a')]);}_0x4979f8['order']=qs[_0xa816('0x3b')](_0x56c490[_0xa816('0x35')]['sort']);_0x4979f8['where']=qs[_0xa816('0x36')](_[_0xa816('0x3c')](_0x56c490['query'],_0x5aac85[_0xa816('0x36')]),_0x3024e3);if(_0x56c490[_0xa816('0x35')][_0xa816('0x3d')]){_0x4979f8['where']=_[_0xa816('0x3e')](_0x4979f8[_0xa816('0x3f')],{'$or':_[_0xa816('0x33')](_0x3024e3,function(_0x54cf91){if(_0x54cf91[_0xa816('0x30')]!==_0xa816('0x40')){var _0x4003da={};_0x4003da[_0x54cf91[_0xa816('0x2b')]]={'$like':'%'+_0x56c490['query'][_0xa816('0x3d')]+'%'};return _0x4003da;}})});}_0x4979f8=_['merge']({},_0x4979f8,_0x56c490['options']);var _0x44c13b={'where':_0x4979f8['where']};return db[_0xa816('0x41')][_0xa816('0x1d')](_0x44c13b)['then'](function(_0x24990e){_0xdde510[_0xa816('0x1d')]=_0x24990e;if(_0x56c490['query'][_0xa816('0x42')]){_0x4979f8[_0xa816('0x43')]=[{'all':!![]}];}return db['Interval']['findAll'](_0x4979f8);})[_0xa816('0x24')](function(_0x578539){_0xdde510[_0xa816('0x44')]=_0x578539;return _0xdde510;})[_0xa816('0x24')](respondWithFilteredResult(_0x24edfd,_0x4979f8))['catch'](handleError(_0x24edfd,null));};exports[_0xa816('0x45')]=function(_0x42d0d3,_0x577041){var _0x3188bd={'raw':!![],'where':{'id':_0x42d0d3['params']['id']}},_0x42457c={};_0x42457c[_0xa816('0x32')]=_[_0xa816('0x34')](db[_0xa816('0x41')][_0xa816('0x2e')]);_0x42457c['query']=_['keys'](_0x42d0d3[_0xa816('0x35')]);_0x42457c[_0xa816('0x36')]=_['intersection'](_0x42457c[_0xa816('0x32')],_0x42457c[_0xa816('0x35')]);_0x3188bd[_0xa816('0x37')]=_[_0xa816('0x46')](_0x42457c['model'],qs[_0xa816('0x38')](_0x42d0d3[_0xa816('0x35')][_0xa816('0x38')]));_0x3188bd[_0xa816('0x37')]=_0x3188bd[_0xa816('0x37')][_0xa816('0x39')]?_0x3188bd[_0xa816('0x37')]:_0x42457c['model'];if(_0x42d0d3[_0xa816('0x35')][_0xa816('0x42')]){_0x3188bd[_0xa816('0x43')]=[{'all':!![]}];}_0x3188bd=_[_0xa816('0x3e')]({},_0x3188bd,_0x42d0d3[_0xa816('0x47')]);return db[_0xa816('0x41')]['find'](_0x3188bd)[_0xa816('0x24')](handleEntityNotFound(_0x577041,null))[_0xa816('0x24')](respondWithResult(_0x577041,null))['catch'](handleError(_0x577041,null));};exports[_0xa816('0x48')]=function(_0x1ce07f,_0x79ef64){return db[_0xa816('0x41')][_0xa816('0x48')](_0x1ce07f[_0xa816('0x49')],{})[_0xa816('0x24')](function(_0x480250){var _0x1c81fb=_0x1ce07f[_0xa816('0x4a')][_0xa816('0x26')]({'plain':!![]});if(!_0x1c81fb)throw new Error(_0xa816('0x4b'));if(_0x1c81fb['role']==='user'){var _0x218894=_0x480250[_0xa816('0x26')]({'plain':!![]});var _0x5e549b='Intervals';return db['UserProfileSection']['find']({'where':{'name':_0x5e549b,'userProfileId':_0x1c81fb['userProfileId']},'raw':!![]})[_0xa816('0x24')](function(_0x3def42){if(_0x3def42&&_0x3def42[_0xa816('0x4c')]===0x0){return db[_0xa816('0x28')][_0xa816('0x48')]({'name':_0x218894[_0xa816('0x2b')],'resourceId':_0x218894['id'],'type':_0x3def42[_0xa816('0x2b')],'sectionId':_0x3def42['id']},{})[_0xa816('0x24')](function(){return _0x480250;});}else{return _0x480250;}})[_0xa816('0x4d')](function(_0x8e679d){logger[_0xa816('0x29')](_0xa816('0x4e'),_0x8e679d);throw _0x8e679d;});}return _0x480250;})[_0xa816('0x24')](respondWithResult(_0x79ef64,0xc9))[_0xa816('0x4d')](handleError(_0x79ef64,null));};exports['update']=function(_0x12be58,_0xbbac17){if(_0x12be58[_0xa816('0x49')]['id']){delete _0x12be58['body']['id'];}return db[_0xa816('0x41')]['find']({'where':{'id':_0x12be58[_0xa816('0x4f')]['id']}})[_0xa816('0x24')](handleEntityNotFound(_0xbbac17,null))[_0xa816('0x24')](saveUpdates(_0x12be58[_0xa816('0x49')],null))[_0xa816('0x24')](respondWithResult(_0xbbac17,null))[_0xa816('0x4d')](handleError(_0xbbac17,null));};exports[_0xa816('0x25')]=function(_0x2aad8f,_0x5421d0){return db[_0xa816('0x41')][_0xa816('0x50')]({'where':{'id':_0x2aad8f[_0xa816('0x4f')]['id']}})[_0xa816('0x24')](handleEntityNotFound(_0x5421d0,null))[_0xa816('0x24')](removeEntity(_0x5421d0,null))[_0xa816('0x4d')](handleError(_0x5421d0,null));};exports[_0xa816('0x51')]=function(_0x5bf02a,_0x3a16e2,_0x466916){if(_0x5bf02a[_0xa816('0x49')]['id']){delete _0x5bf02a[_0xa816('0x49')]['id'];}return db['Interval'][_0xa816('0x50')]({'where':{'id':_0x5bf02a[_0xa816('0x4f')]['id']}})[_0xa816('0x24')](handleEntityNotFound(_0x3a16e2,null))[_0xa816('0x24')](function(_0x1d3621){if(_0x1d3621){_0x5bf02a[_0xa816('0x49')][_0xa816('0x52')]=_0x1d3621['id'];return db[_0xa816('0x41')][_0xa816('0x48')](_0x5bf02a[_0xa816('0x49')]);}})[_0xa816('0x24')](respondWithResult(_0x3a16e2,null))[_0xa816('0x4d')](handleError(_0x3a16e2,null));};exports[_0xa816('0x53')]=function(_0x1a1963,_0x50f999,_0x5ceefd){var _0x1dbe71={};var _0x5c9698={};var _0x113dab;var _0x537d28;return db[_0xa816('0x41')][_0xa816('0x54')]({'where':{'id':_0x1a1963[_0xa816('0x4f')]['id']}})[_0xa816('0x24')](handleEntityNotFound(_0x50f999,null))[_0xa816('0x24')](function(_0xc6fa8b){if(_0xc6fa8b){_0x113dab=_0xc6fa8b;_0x5c9698['model']=_[_0xa816('0x34')](db[_0xa816('0x41')]['rawAttributes']);_0x5c9698[_0xa816('0x35')]=_[_0xa816('0x34')](_0x1a1963[_0xa816('0x35')]);_0x5c9698[_0xa816('0x36')]=_['intersection'](_0x5c9698[_0xa816('0x32')],_0x5c9698[_0xa816('0x35')]);_0x1dbe71[_0xa816('0x37')]=_['intersection'](_0x5c9698[_0xa816('0x32')],qs[_0xa816('0x38')](_0x1a1963[_0xa816('0x35')][_0xa816('0x38')]));_0x1dbe71['attributes']=_0x1dbe71[_0xa816('0x37')][_0xa816('0x39')]?_0x1dbe71['attributes']:_0x5c9698['model'];_0x1dbe71[_0xa816('0x55')]=qs[_0xa816('0x3b')](_0x1a1963['query'][_0xa816('0x3b')]);_0x1dbe71['where']=qs[_0xa816('0x36')](_[_0xa816('0x3c')](_0x1a1963[_0xa816('0x35')],_0x5c9698[_0xa816('0x36')]));if(_0x1a1963[_0xa816('0x35')]['filter']){_0x1dbe71[_0xa816('0x3f')]=_[_0xa816('0x3e')](_0x1dbe71[_0xa816('0x3f')],{'$or':_[_0xa816('0x33')](_0x1dbe71[_0xa816('0x37')],function(_0xaaa9af){var _0x1f663f={};_0x1f663f[_0xaaa9af]={'$like':'%'+_0x1a1963[_0xa816('0x35')][_0xa816('0x3d')]+'%'};return _0x1f663f;})});}_0x1dbe71=_['merge']({},_0x1dbe71,_0x1a1963[_0xa816('0x47')]);return _0x113dab[_0xa816('0x53')](_0x1dbe71);}})[_0xa816('0x24')](function(_0x47503b){if(_0x47503b){_0x537d28=_0x47503b[_0xa816('0x39')];if(!_0x1a1963[_0xa816('0x35')]['hasOwnProperty'](_0xa816('0x3a'))){_0x1dbe71[_0xa816('0x1c')]=qs[_0xa816('0x1c')](_0x1a1963[_0xa816('0x35')][_0xa816('0x1c')]);_0x1dbe71['offset']=qs[_0xa816('0x1a')](_0x1a1963[_0xa816('0x35')]['offset']);}return _0x113dab[_0xa816('0x53')](_0x1dbe71);}})[_0xa816('0x24')](function(_0x646ac9){if(_0x646ac9){return _0x646ac9?{'count':_0x537d28,'rows':_0x646ac9}:null;}})[_0xa816('0x24')](respondWithResult(_0x50f999,null))['catch'](handleError(_0x50f999,null));};exports['addIntervals']=function(_0x9174e9,_0x32fa1c,_0x574c32){return db[_0xa816('0x41')][_0xa816('0x54')]({'where':{'id':_0x9174e9[_0xa816('0x4f')]['id']}})[_0xa816('0x24')](handleEntityNotFound(_0x32fa1c,null))[_0xa816('0x24')](function(_0x58fe85){if(_0x58fe85){return db[_0xa816('0x56')][_0xa816('0x57')](function(_0x245a91){return db[_0xa816('0x41')][_0xa816('0x25')]({'where':{'IntervalId':_0x9174e9['params']['id']},'transaction':_0x245a91})[_0xa816('0x24')](function(_0x152226){var _0x3102c3=_[_0xa816('0x33')](_0x9174e9[_0xa816('0x49')],function(_0x556755){delete _0x556755['id'];_0x556755[_0xa816('0x52')]=_0x9174e9['params']['id'];return _0x556755;});return db[_0xa816('0x41')][_0xa816('0x58')](_0x3102c3,{'transaction':_0x245a91});});})['then'](function(){return db[_0xa816('0x41')][_0xa816('0x59')]({'where':{'IntervalId':_0x9174e9[_0xa816('0x4f')]['id']}});});}})['then'](respondWithResult(_0x32fa1c,null))[_0xa816('0x4d')](handleError(_0x32fa1c,null));};
\ No newline at end of file
+var _0xb84e=['api','../../config/environment','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','offset','undefined','limit','count','set','json','apply','save','update','then','get','Intervals','error','stack','name','send','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','Interval','includeAll','include','findAll','rows','catch','show','params','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','destroy','addInterval','IntervalId','getIntervals','findOne','addIntervals','sequelize','transaction','bulkCreate','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger'];(function(_0x21cfdb,_0x5d681b){var _0x246033=function(_0x326c7f){while(--_0x326c7f){_0x21cfdb['push'](_0x21cfdb['shift']());}};_0x246033(++_0x5d681b);}(_0xb84e,0xf8));var _0xeb84=function(_0x547add,_0x387042){_0x547add=_0x547add-0x0;var _0x2ed1f3=_0xb84e[_0x547add];return _0x2ed1f3;};'use strict';var emlformat=require(_0xeb84('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xeb84('0x1'));var jsonpatch=require(_0xeb84('0x2'));var rp=require(_0xeb84('0x3'));var moment=require(_0xeb84('0x4'));var BPromise=require(_0xeb84('0x5'));var Mustache=require('mustache');var util=require(_0xeb84('0x6'));var path=require(_0xeb84('0x7'));var sox=require(_0xeb84('0x8'));var csv=require('to-csv');var ejs=require(_0xeb84('0x9'));var fs=require('fs');var fs_extra=require(_0xeb84('0xa'));var _=require(_0xeb84('0xb'));var squel=require(_0xeb84('0xc'));var crypto=require(_0xeb84('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xeb84('0xe'));var Redis=require(_0xeb84('0xf'));var authService=require(_0xeb84('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xeb84('0x11'));var logger=require(_0xeb84('0x12'))(_0xeb84('0x13'));var utils=require('../../config/utils');var config=require(_0xeb84('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xeb84('0x15'))['db'];var extensions=require(_0xeb84('0x16'));function respondWithStatusCode(_0x50f9e8,_0x89c593){_0x89c593=_0x89c593||0xcc;return function(_0xeed508){if(_0xeed508){return _0x50f9e8[_0xeb84('0x17')](_0x89c593);}return _0x50f9e8[_0xeb84('0x18')](_0x89c593)['end']();};}function respondWithResult(_0x10d6a1,_0xb6bd57){_0xb6bd57=_0xb6bd57||0xc8;return function(_0x45afd1){if(_0x45afd1){return _0x10d6a1[_0xeb84('0x18')](_0xb6bd57)['json'](_0x45afd1);}};}function respondWithFilteredResult(_0x51f829,_0x49cb13){return function(_0x1459b5){if(_0x1459b5){var _0xa7493d=typeof _0x49cb13[_0xeb84('0x19')]===_0xeb84('0x1a')&&typeof _0x49cb13[_0xeb84('0x1b')]===_0xeb84('0x1a');var _0x7ea92e=_0x1459b5[_0xeb84('0x1c')];var _0x337731=_0xa7493d?0x0:_0x49cb13['offset'];var _0x44905c=_0xa7493d?_0x1459b5['count']:_0x49cb13[_0xeb84('0x19')]+_0x49cb13[_0xeb84('0x1b')];var _0x2a6c27;if(_0x44905c>=_0x7ea92e){_0x44905c=_0x7ea92e;_0x2a6c27=0xc8;}else{_0x2a6c27=0xce;}_0x51f829[_0xeb84('0x18')](_0x2a6c27);return _0x51f829[_0xeb84('0x1d')]('Content-Range',_0x337731+'-'+_0x44905c+'/'+_0x7ea92e)[_0xeb84('0x1e')](_0x1459b5);}return null;};}function patchUpdates(_0x3adc82){return function(_0x415978){try{jsonpatch[_0xeb84('0x1f')](_0x415978,_0x3adc82,!![]);}catch(_0x18add9){return BPromise['reject'](_0x18add9);}return _0x415978[_0xeb84('0x20')]();};}function saveUpdates(_0x1c765a,_0x5cc3f0){return function(_0x1355de){if(_0x1355de){return _0x1355de[_0xeb84('0x21')](_0x1c765a)[_0xeb84('0x22')](function(_0x3703a1){return _0x3703a1;});}return null;};}function removeEntity(_0x4dc0d9,_0x4be1b4){return function(_0x5270a4){if(_0x5270a4){return _0x5270a4['destroy']()[_0xeb84('0x22')](function(){var _0x123bf5=_0x5270a4[_0xeb84('0x23')]({'plain':!![]});var _0xdfbcb0=_0xeb84('0x24');return db['UserProfileResource']['destroy']({'where':{'type':_0xdfbcb0,'resourceId':_0x123bf5['id']}})[_0xeb84('0x22')](function(){return _0x5270a4;});})['then'](function(){_0x4dc0d9[_0xeb84('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x376228,_0x5d595e){return function(_0x3612ca){if(!_0x3612ca){_0x376228[_0xeb84('0x17')](0x194);}return _0x3612ca;};}function handleError(_0x9d0a93,_0x5547be){_0x5547be=_0x5547be||0x1f4;return function(_0x32b78e){logger[_0xeb84('0x25')](_0x32b78e[_0xeb84('0x26')]);if(_0x32b78e[_0xeb84('0x27')]){delete _0x32b78e[_0xeb84('0x27')];}_0x9d0a93[_0xeb84('0x18')](_0x5547be)[_0xeb84('0x28')](_0x32b78e);};}exports['index']=function(_0x4b265d,_0x11ae1b){var _0x2d9588={},_0xff9f22={},_0x568f5e={'count':0x0,'rows':[]};var _0x34b7a3=_[_0xeb84('0x29')](db['Interval'][_0xeb84('0x2a')],function(_0x2f9027){return{'name':_0x2f9027[_0xeb84('0x2b')],'type':_0x2f9027['type'][_0xeb84('0x2c')]};});_0xff9f22[_0xeb84('0x2d')]=_[_0xeb84('0x29')](_0x34b7a3,_0xeb84('0x27'));_0xff9f22[_0xeb84('0x2e')]=_[_0xeb84('0x2f')](_0x4b265d['query']);_0xff9f22[_0xeb84('0x30')]=_[_0xeb84('0x31')](_0xff9f22[_0xeb84('0x2d')],_0xff9f22['query']);_0x2d9588[_0xeb84('0x32')]=_[_0xeb84('0x31')](_0xff9f22[_0xeb84('0x2d')],qs[_0xeb84('0x33')](_0x4b265d['query'][_0xeb84('0x33')]));_0x2d9588['attributes']=_0x2d9588[_0xeb84('0x32')][_0xeb84('0x34')]?_0x2d9588['attributes']:_0xff9f22[_0xeb84('0x2d')];if(!_0x4b265d[_0xeb84('0x2e')][_0xeb84('0x35')](_0xeb84('0x36'))){_0x2d9588[_0xeb84('0x1b')]=qs['limit'](_0x4b265d[_0xeb84('0x2e')][_0xeb84('0x1b')]);_0x2d9588[_0xeb84('0x19')]=qs['offset'](_0x4b265d[_0xeb84('0x2e')]['offset']);}_0x2d9588[_0xeb84('0x37')]=qs['sort'](_0x4b265d[_0xeb84('0x2e')][_0xeb84('0x38')]);_0x2d9588[_0xeb84('0x39')]=qs['filters'](_[_0xeb84('0x3a')](_0x4b265d['query'],_0xff9f22[_0xeb84('0x30')]),_0x34b7a3);if(_0x4b265d[_0xeb84('0x2e')][_0xeb84('0x3b')]){_0x2d9588[_0xeb84('0x39')]=_['merge'](_0x2d9588['where'],{'$or':_[_0xeb84('0x29')](_0x34b7a3,function(_0x522af9){if(_0x522af9[_0xeb84('0x3c')]!==_0xeb84('0x3d')){var _0x147780={};_0x147780[_0x522af9['name']]={'$like':'%'+_0x4b265d['query']['filter']+'%'};return _0x147780;}})});}_0x2d9588=_[_0xeb84('0x3e')]({},_0x2d9588,_0x4b265d[_0xeb84('0x3f')]);var _0x281a5c={'where':_0x2d9588[_0xeb84('0x39')]};return db[_0xeb84('0x40')][_0xeb84('0x1c')](_0x281a5c)[_0xeb84('0x22')](function(_0x4c35d2){_0x568f5e[_0xeb84('0x1c')]=_0x4c35d2;if(_0x4b265d[_0xeb84('0x2e')][_0xeb84('0x41')]){_0x2d9588[_0xeb84('0x42')]=[{'all':!![]}];}return db[_0xeb84('0x40')][_0xeb84('0x43')](_0x2d9588);})[_0xeb84('0x22')](function(_0x36d296){_0x568f5e[_0xeb84('0x44')]=_0x36d296;return _0x568f5e;})['then'](respondWithFilteredResult(_0x11ae1b,_0x2d9588))[_0xeb84('0x45')](handleError(_0x11ae1b,null));};exports[_0xeb84('0x46')]=function(_0x41705a,_0x21ba8d){var _0x2f7a52={'raw':!![],'where':{'id':_0x41705a[_0xeb84('0x47')]['id']}},_0x368888={};_0x368888['model']=_[_0xeb84('0x2f')](db['Interval']['rawAttributes']);_0x368888[_0xeb84('0x2e')]=_[_0xeb84('0x2f')](_0x41705a['query']);_0x368888[_0xeb84('0x30')]=_['intersection'](_0x368888[_0xeb84('0x2d')],_0x368888[_0xeb84('0x2e')]);_0x2f7a52['attributes']=_['intersection'](_0x368888[_0xeb84('0x2d')],qs['fields'](_0x41705a[_0xeb84('0x2e')][_0xeb84('0x33')]));_0x2f7a52[_0xeb84('0x32')]=_0x2f7a52[_0xeb84('0x32')][_0xeb84('0x34')]?_0x2f7a52[_0xeb84('0x32')]:_0x368888[_0xeb84('0x2d')];if(_0x41705a[_0xeb84('0x2e')][_0xeb84('0x41')]){_0x2f7a52[_0xeb84('0x42')]=[{'all':!![]}];}_0x2f7a52=_[_0xeb84('0x3e')]({},_0x2f7a52,_0x41705a[_0xeb84('0x3f')]);return db[_0xeb84('0x40')][_0xeb84('0x48')](_0x2f7a52)[_0xeb84('0x22')](handleEntityNotFound(_0x21ba8d,null))[_0xeb84('0x22')](respondWithResult(_0x21ba8d,null))['catch'](handleError(_0x21ba8d,null));};exports['create']=function(_0x55c283,_0x5e0b18){return db['Interval'][_0xeb84('0x49')](_0x55c283['body'],{})[_0xeb84('0x22')](function(_0xba4ff9){var _0x4b01a4=_0x55c283['user']['get']({'plain':!![]});if(!_0x4b01a4)throw new Error(_0xeb84('0x4a'));if(_0x4b01a4[_0xeb84('0x4b')]===_0xeb84('0x4c')){var _0x485eb5=_0xba4ff9['get']({'plain':!![]});var _0x2667c8=_0xeb84('0x24');return db['UserProfileSection'][_0xeb84('0x48')]({'where':{'name':_0x2667c8,'userProfileId':_0x4b01a4['userProfileId']},'raw':!![]})['then'](function(_0x24b45b){if(_0x24b45b&&_0x24b45b['autoAssociation']===0x0){return db[_0xeb84('0x4d')][_0xeb84('0x49')]({'name':_0x485eb5['name'],'resourceId':_0x485eb5['id'],'type':_0x24b45b[_0xeb84('0x27')],'sectionId':_0x24b45b['id']},{})['then'](function(){return _0xba4ff9;});}else{return _0xba4ff9;}})['catch'](function(_0x2c68ef){logger[_0xeb84('0x25')](_0xeb84('0x4e'),_0x2c68ef);throw _0x2c68ef;});}return _0xba4ff9;})[_0xeb84('0x22')](respondWithResult(_0x5e0b18,0xc9))[_0xeb84('0x45')](handleError(_0x5e0b18,null));};exports[_0xeb84('0x21')]=function(_0x44c168,_0x538450){if(_0x44c168[_0xeb84('0x4f')]['id']){delete _0x44c168['body']['id'];}return db['Interval'][_0xeb84('0x48')]({'where':{'id':_0x44c168[_0xeb84('0x47')]['id']}})['then'](handleEntityNotFound(_0x538450,null))[_0xeb84('0x22')](saveUpdates(_0x44c168[_0xeb84('0x4f')],null))[_0xeb84('0x22')](respondWithResult(_0x538450,null))[_0xeb84('0x45')](handleError(_0x538450,null));};exports[_0xeb84('0x50')]=function(_0x251e99,_0x43c13e){return db[_0xeb84('0x40')][_0xeb84('0x48')]({'where':{'id':_0x251e99[_0xeb84('0x47')]['id']}})[_0xeb84('0x22')](handleEntityNotFound(_0x43c13e,null))['then'](removeEntity(_0x43c13e,null))['catch'](handleError(_0x43c13e,null));};exports[_0xeb84('0x51')]=function(_0x3f886a,_0x4fb6c5,_0x2d1968){if(_0x3f886a['body']['id']){delete _0x3f886a['body']['id'];}return db['Interval']['find']({'where':{'id':_0x3f886a['params']['id']}})[_0xeb84('0x22')](handleEntityNotFound(_0x4fb6c5,null))['then'](function(_0x368106){if(_0x368106){_0x3f886a['body'][_0xeb84('0x52')]=_0x368106['id'];return db['Interval']['create'](_0x3f886a[_0xeb84('0x4f')]);}})[_0xeb84('0x22')](respondWithResult(_0x4fb6c5,null))[_0xeb84('0x45')](handleError(_0x4fb6c5,null));};exports[_0xeb84('0x53')]=function(_0x20c327,_0xadba1e,_0x3fe2a2){var _0x5f4d26={};var _0x341921={};var _0x5ac2fa;var _0x1616c2;return db[_0xeb84('0x40')][_0xeb84('0x54')]({'where':{'id':_0x20c327[_0xeb84('0x47')]['id']}})[_0xeb84('0x22')](handleEntityNotFound(_0xadba1e,null))[_0xeb84('0x22')](function(_0x1f3dde){if(_0x1f3dde){_0x5ac2fa=_0x1f3dde;_0x341921['model']=_[_0xeb84('0x2f')](db[_0xeb84('0x40')]['rawAttributes']);_0x341921[_0xeb84('0x2e')]=_['keys'](_0x20c327[_0xeb84('0x2e')]);_0x341921[_0xeb84('0x30')]=_[_0xeb84('0x31')](_0x341921[_0xeb84('0x2d')],_0x341921[_0xeb84('0x2e')]);_0x5f4d26[_0xeb84('0x32')]=_[_0xeb84('0x31')](_0x341921[_0xeb84('0x2d')],qs['fields'](_0x20c327['query'][_0xeb84('0x33')]));_0x5f4d26[_0xeb84('0x32')]=_0x5f4d26[_0xeb84('0x32')][_0xeb84('0x34')]?_0x5f4d26['attributes']:_0x341921['model'];_0x5f4d26[_0xeb84('0x37')]=qs[_0xeb84('0x38')](_0x20c327[_0xeb84('0x2e')][_0xeb84('0x38')]);_0x5f4d26[_0xeb84('0x39')]=qs[_0xeb84('0x30')](_[_0xeb84('0x3a')](_0x20c327[_0xeb84('0x2e')],_0x341921[_0xeb84('0x30')]));if(_0x20c327[_0xeb84('0x2e')][_0xeb84('0x3b')]){_0x5f4d26[_0xeb84('0x39')]=_['merge'](_0x5f4d26[_0xeb84('0x39')],{'$or':_[_0xeb84('0x29')](_0x5f4d26[_0xeb84('0x32')],function(_0x10b74d){var _0x511776={};_0x511776[_0x10b74d]={'$like':'%'+_0x20c327[_0xeb84('0x2e')][_0xeb84('0x3b')]+'%'};return _0x511776;})});}_0x5f4d26=_[_0xeb84('0x3e')]({},_0x5f4d26,_0x20c327[_0xeb84('0x3f')]);return _0x5ac2fa[_0xeb84('0x53')](_0x5f4d26);}})['then'](function(_0x494754){if(_0x494754){_0x1616c2=_0x494754[_0xeb84('0x34')];if(!_0x20c327['query'][_0xeb84('0x35')]('nolimit')){_0x5f4d26['limit']=qs[_0xeb84('0x1b')](_0x20c327[_0xeb84('0x2e')]['limit']);_0x5f4d26[_0xeb84('0x19')]=qs['offset'](_0x20c327['query']['offset']);}return _0x5ac2fa[_0xeb84('0x53')](_0x5f4d26);}})[_0xeb84('0x22')](function(_0x1ad601){if(_0x1ad601){return _0x1ad601?{'count':_0x1616c2,'rows':_0x1ad601}:null;}})['then'](respondWithResult(_0xadba1e,null))[_0xeb84('0x45')](handleError(_0xadba1e,null));};exports[_0xeb84('0x55')]=function(_0x4c0448,_0x54bc3b,_0x150e8d){return db[_0xeb84('0x40')]['findOne']({'where':{'id':_0x4c0448[_0xeb84('0x47')]['id']}})[_0xeb84('0x22')](handleEntityNotFound(_0x54bc3b,null))[_0xeb84('0x22')](function(_0x4ab49e){if(_0x4ab49e){return db[_0xeb84('0x56')][_0xeb84('0x57')](function(_0x2d7847){return db[_0xeb84('0x40')]['destroy']({'where':{'IntervalId':_0x4c0448[_0xeb84('0x47')]['id']},'transaction':_0x2d7847})[_0xeb84('0x22')](function(_0x2e2aa8){var _0x31fa23=_['map'](_0x4c0448[_0xeb84('0x4f')],function(_0x268753){delete _0x268753['id'];_0x268753[_0xeb84('0x52')]=_0x4c0448['params']['id'];return _0x268753;});return db[_0xeb84('0x40')][_0xeb84('0x58')](_0x31fa23,{'transaction':_0x2d7847});});})[_0xeb84('0x22')](function(){return db[_0xeb84('0x40')][_0xeb84('0x43')]({'where':{'IntervalId':_0x4c0448[_0xeb84('0x47')]['id']}});});}})[_0xeb84('0x22')](respondWithResult(_0x54bc3b,null))[_0xeb84('0x45')](handleError(_0x54bc3b,null));};
\ No newline at end of file
index 8d2ace4..be80b7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f89=['exports','define','Interval','tools_intervals','rewrite','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./interval.attributes'];(function(_0x44a998,_0x2e1f91){var _0x1a8c53=function(_0x1cb567){while(--_0x1cb567){_0x44a998['push'](_0x44a998['shift']());}};_0x1a8c53(++_0x2e1f91);}(_0x0f89,0x95));var _0x90f8=function(_0xf78b28,_0x1bb637){_0xf78b28=_0xf78b28-0x0;var _0x5c8e0b=_0x0f89[_0xf78b28];return _0x5c8e0b;};'use strict';var _=require(_0x90f8('0x0'));var util=require(_0x90f8('0x1'));var logger=require(_0x90f8('0x2'))(_0x90f8('0x3'));var moment=require(_0x90f8('0x4'));var BPromise=require(_0x90f8('0x5'));var rp=require(_0x90f8('0x6'));var fs=require('fs');var path=require(_0x90f8('0x7'));var rimraf=require(_0x90f8('0x8'));var config=require(_0x90f8('0x9'));var attributes=require(_0x90f8('0xa'));var extensions=require('../../components/extensions/rewrite');module[_0x90f8('0xb')]=function(_0x39d292,_0x23868b){return _0x39d292[_0x90f8('0xc')](_0x90f8('0xd'),attributes,{'tableName':_0x90f8('0xe'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x1447d5,_0x2814d0){extensions[_0x90f8('0xf')](_0x39d292,_0x1447d5);},'afterBulkCreate':function(_0x2cfe7b,_0x435f78,_0x5e82bf){_0x5e82bf();extensions[_0x90f8('0xf')](_0x39d292,_0x2cfe7b[0x0]);},'afterUpdate':function(_0x2877e0,_0x27a821){extensions[_0x90f8('0xf')](_0x39d292,_0x2877e0);},'afterDestroy':function(_0x3a29fc,_0x3936fb){extensions[_0x90f8('0xf')](_0x39d292,_0x3a29fc);}}});};
\ No newline at end of file
+var _0xa80c=['util','api','bluebird','request-promise','path','rimraf','../../config/environment','./interval.attributes','../../components/extensions/rewrite','exports','rewrite','lodash'];(function(_0x5d5071,_0x1e4773){var _0x367d9f=function(_0x383ac7){while(--_0x383ac7){_0x5d5071['push'](_0x5d5071['shift']());}};_0x367d9f(++_0x1e4773);}(_0xa80c,0x1af));var _0xca80=function(_0x26329e,_0x1e7d8e){_0x26329e=_0x26329e-0x0;var _0x252b5c=_0xa80c[_0x26329e];return _0x252b5c;};'use strict';var _=require(_0xca80('0x0'));var util=require(_0xca80('0x1'));var logger=require('../../config/logger')(_0xca80('0x2'));var moment=require('moment');var BPromise=require(_0xca80('0x3'));var rp=require(_0xca80('0x4'));var fs=require('fs');var path=require(_0xca80('0x5'));var rimraf=require(_0xca80('0x6'));var config=require(_0xca80('0x7'));var attributes=require(_0xca80('0x8'));var extensions=require(_0xca80('0x9'));module[_0xca80('0xa')]=function(_0x3156d3,_0xde0486){return _0x3156d3['define']('Interval',attributes,{'tableName':'tools_intervals','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x258836,_0x1d0eb4){extensions[_0xca80('0xb')](_0x3156d3,_0x258836);},'afterBulkCreate':function(_0x2c7eb8,_0x4e2c22,_0x1ad162){_0x1ad162();extensions[_0xca80('0xb')](_0x3156d3,_0x2c7eb8[0x0]);},'afterUpdate':function(_0x21faa0,_0x3edbfa){extensions[_0xca80('0xb')](_0x3156d3,_0x21faa0);},'afterDestroy':function(_0x5eba58,_0x180c65){extensions['rewrite'](_0x3156d3,_0x5eba58);}}});};
\ No newline at end of file
index 1639d4c..c43e9b4 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(_0x5712f8,_0x17156b){var _0x14a364=function(_0x1da9de){while(--_0x1da9de){_0x5712f8['push'](_0x5712f8['shift']());}};_0x14a364(++_0x17156b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0xa9e0[_0x5e3b04];return _0x1fc44d;};'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(_0x4eaa4c,_0x2f7422){var _0x15aec6=function(_0x23efc9){while(--_0x23efc9){_0x4eaa4c['push'](_0x4eaa4c['shift']());}};_0x15aec6(++_0x2f7422);}(_0xa9e0,0x123));var _0x0a9e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa9e0[_0x14add3];return _0x4a174f;};'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 7ccfad7..ef20864 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['send','exports','Router','./jira.controller','post','isAuthenticated'];(function(_0x36909d,_0x2795f1){var _0x1fd29d=function(_0x27d0fa){while(--_0x27d0fa){_0x36909d['push'](_0x36909d['shift']());}};_0x1fd29d(++_0x2795f1);}(_0x5f66,0x1a0));var _0x65f6=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0x5f66[_0x4c12ec];return _0x3ae42c;};'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
+var _0xadb5=['post','isAuthenticated','exports','Router','./jira.controller'];(function(_0x6922a0,_0xcbdb9f){var _0x39c598=function(_0x3c4123){while(--_0x3c4123){_0x6922a0['push'](_0x6922a0['shift']());}};_0x39c598(++_0xcbdb9f);}(_0xadb5,0xad));var _0x5adb=function(_0x38644e,_0x277397){_0x38644e=_0x38644e-0x0;var _0x3aa8ee=_0xadb5[_0x38644e];return _0x3aa8ee;};'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['send']);module[_0x5adb('0x4')]=router;
\ No newline at end of file
index 0ec0437..6b7810d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3da1=['error','status','api.jira','write','end','openIssue','send','body','headers','x-forwarded-for','connection','remoteAddress','socket','bluebird','../../config/logger','support','3eAmWpBVP0','key','summary','Report','description','stringify','issuetype','fields','customfield_11500','email','customfield_11501','oldToken','customfield_11502','newToken','customfield_11504','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','POST','application/json','toString','base64','setEncoding','statusCode','json','parse'];(function(_0x11c1d9,_0x445dc9){var _0x28c74e=function(_0x4a75e5){while(--_0x4a75e5){_0x11c1d9['push'](_0x11c1d9['shift']());}};_0x28c74e(++_0x445dc9);}(_0x3da1,0xb9));var _0x13da=function(_0x3a29e5,_0xffee26){_0x3a29e5=_0x3a29e5-0x0;var _0x496fb5=_0x3da1[_0x3a29e5];return _0x496fb5;};'use strict';var BPromise=require(_0x13da('0x0'));var https=require('https');var logger=require(_0x13da('0x1'))('api');var USERNAME=_0x13da('0x2');var PASSWORD=_0x13da('0x3');function openIssue(_0x4c48ae,_0x5d6a4b){var _0x2789bf={'fields':{'project':{'key':_0x4c48ae[_0x13da('0x4')]||'MOTGUI'},'summary':(_0x4c48ae[_0x13da('0x5')]||_0x13da('0x6'))+'\x20from\x20'+_0x4c48ae['ip'],'description':_0x4c48ae[_0x13da('0x7')]||JSON[_0x13da('0x8')](_0x4c48ae),'issuetype':{'name':_0x4c48ae[_0x13da('0x9')]||'Bug'}}};_0x2789bf[_0x13da('0xa')][_0x13da('0xb')]=_0x4c48ae[_0x13da('0xc')];_0x2789bf[_0x13da('0xa')][_0x13da('0xd')]=_0x4c48ae[_0x13da('0xe')];_0x2789bf[_0x13da('0xa')][_0x13da('0xf')]=_0x4c48ae[_0x13da('0x10')];_0x2789bf[_0x13da('0xa')]['customfield_11503']=_0x4c48ae['name'];_0x2789bf[_0x13da('0xa')][_0x13da('0x11')]=_0x4c48ae[_0x13da('0x12')];_0x2789bf[_0x13da('0xa')][_0x13da('0x13')]=_0x4c48ae['ip'];var _0x1f237b={'host':_0x13da('0x14'),'port':0x1bb,'path':_0x13da('0x15'),'method':_0x13da('0x16'),'timeout':0x4e20,'headers':{'Content-Type':_0x13da('0x17'),'Authorization':'Basic\x20'+new Buffer(USERNAME+':'+PASSWORD)[_0x13da('0x18')](_0x13da('0x19'))}};var _0x4144c1=JSON[_0x13da('0x8')](_0x2789bf);var _0x11795f=https['request'](_0x1f237b,function(_0x117735){_0x117735[_0x13da('0x1a')]('utf8');var _0x30062d='';_0x117735['on']('data',function(_0x217f30){_0x30062d+=_0x217f30;});_0x117735['on']('end',function(){if(_0x5d6a4b){return _0x5d6a4b['status'](_0x117735[_0x13da('0x1b')])[_0x13da('0x1c')](JSON[_0x13da('0x1d')](_0x30062d));}});});_0x11795f['on'](_0x13da('0x1e'),function(_0x48a605){if(_0x5d6a4b){return _0x5d6a4b[_0x13da('0x1f')](0x1f4)['json']({'errors':[{'message':'Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','type':_0x13da('0x20')}]});}});_0x11795f[_0x13da('0x21')](_0x4144c1);_0x11795f[_0x13da('0x22')]();}exports[_0x13da('0x23')]=openIssue;exports[_0x13da('0x24')]=function(_0x4603f4,_0x71dfa7){_0x4603f4[_0x13da('0x25')]['ip']=_0x4603f4[_0x13da('0x26')][_0x13da('0x27')]||_0x4603f4[_0x13da('0x28')][_0x13da('0x29')]||_0x4603f4[_0x13da('0x2a')][_0x13da('0x29')]||_0x4603f4[_0x13da('0x28')][_0x13da('0x2a')][_0x13da('0x29')];return openIssue(_0x4603f4[_0x13da('0x25')],_0x71dfa7);};
\ No newline at end of file
+var _0x5668=['socket','connection','bluebird','https','../../config/logger','api','support','3eAmWpBVP0','MOTGUI','summary','Report','\x20from\x20','stringify','issuetype','Bug','fields','customfield_11500','email','oldToken','customfield_11502','customfield_11503','customfield_11504','reason','/rest/api/2/issue','application/json','Basic\x20','toString','base64','utf8','end','statusCode','status','json','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','openIssue','body','headers','x-forwarded-for','remoteAddress'];(function(_0x52024d,_0x103ef6){var _0x3922a2=function(_0x236386){while(--_0x236386){_0x52024d['push'](_0x52024d['shift']());}};_0x3922a2(++_0x103ef6);}(_0x5668,0x113));var _0x8566=function(_0x10c466,_0x3ae4eb){_0x10c466=_0x10c466-0x0;var _0x54e7fe=_0x5668[_0x10c466];return _0x54e7fe;};'use strict';var BPromise=require(_0x8566('0x0'));var https=require(_0x8566('0x1'));var logger=require(_0x8566('0x2'))(_0x8566('0x3'));var USERNAME=_0x8566('0x4');var PASSWORD=_0x8566('0x5');function openIssue(_0x4361aa,_0x3c71be){var _0x38fec8={'fields':{'project':{'key':_0x4361aa['key']||_0x8566('0x6')},'summary':(_0x4361aa[_0x8566('0x7')]||_0x8566('0x8'))+_0x8566('0x9')+_0x4361aa['ip'],'description':_0x4361aa['description']||JSON[_0x8566('0xa')](_0x4361aa),'issuetype':{'name':_0x4361aa[_0x8566('0xb')]||_0x8566('0xc')}}};_0x38fec8[_0x8566('0xd')][_0x8566('0xe')]=_0x4361aa[_0x8566('0xf')];_0x38fec8[_0x8566('0xd')]['customfield_11501']=_0x4361aa[_0x8566('0x10')];_0x38fec8[_0x8566('0xd')][_0x8566('0x11')]=_0x4361aa['newToken'];_0x38fec8[_0x8566('0xd')][_0x8566('0x12')]=_0x4361aa['name'];_0x38fec8[_0x8566('0xd')][_0x8566('0x13')]=_0x4361aa[_0x8566('0x14')];_0x38fec8[_0x8566('0xd')]['customfield_10102']=_0x4361aa['ip'];var _0x50df82={'host':'track.xcallymotion.com','port':0x1bb,'path':_0x8566('0x15'),'method':'POST','timeout':0x4e20,'headers':{'Content-Type':_0x8566('0x16'),'Authorization':_0x8566('0x17')+new Buffer(USERNAME+':'+PASSWORD)[_0x8566('0x18')](_0x8566('0x19'))}};var _0x3a8d42=JSON['stringify'](_0x38fec8);var _0x200a61=https['request'](_0x50df82,function(_0x1f6f51){_0x1f6f51['setEncoding'](_0x8566('0x1a'));var _0x343265='';_0x1f6f51['on']('data',function(_0x1753a7){_0x343265+=_0x1753a7;});_0x1f6f51['on'](_0x8566('0x1b'),function(){if(_0x3c71be){return _0x3c71be['status'](_0x1f6f51[_0x8566('0x1c')])['json'](JSON['parse'](_0x343265));}});});_0x200a61['on']('error',function(_0x5dd8f9){if(_0x3c71be){return _0x3c71be[_0x8566('0x1d')](0x1f4)[_0x8566('0x1e')]({'errors':[{'message':_0x8566('0x1f'),'type':'api.jira'}]});}});_0x200a61['write'](_0x3a8d42);_0x200a61['end']();}exports[_0x8566('0x20')]=openIssue;exports['send']=function(_0x41f92,_0x2b537c){_0x41f92[_0x8566('0x21')]['ip']=_0x41f92[_0x8566('0x22')][_0x8566('0x23')]||_0x41f92['connection'][_0x8566('0x24')]||_0x41f92[_0x8566('0x25')][_0x8566('0x24')]||_0x41f92[_0x8566('0x26')]['socket'][_0x8566('0x24')];return openIssue(_0x41f92[_0x8566('0x21')],_0x2b537c);};
\ No newline at end of file
index fb54905..1440476 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['update','destroy','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./jscriptyAnswerReport.controller','isAuthenticated','index','get','/describe','/:id','show','create','put'];(function(_0x98f2e8,_0x51a168){var _0x23ab9b=function(_0x3fdb85){while(--_0x3fdb85){_0x98f2e8['push'](_0x98f2e8['shift']());}};_0x23ab9b(++_0x51a168);}(_0x9c44,0x178));var _0x49c4=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0x9c44[_0x50a0c2];return _0x5ebadd;};'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');var controller=require(_0x49c4('0x6'));router['get']('/',auth[_0x49c4('0x7')](),controller[_0x49c4('0x8')]);router[_0x49c4('0x9')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller['describe']);router[_0x49c4('0x9')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0x49c4('0xd')]);router[_0x49c4('0xe')]('/:id',auth[_0x49c4('0x7')](),controller[_0x49c4('0xf')]);router['delete']('/:id',auth[_0x49c4('0x7')](),controller[_0x49c4('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x6324=['path','connect-timeout','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','describe','show','create','put','/:id','update','delete','exports','multer','util'];(function(_0x1950e2,_0x1e4dae){var _0xf3d1a4=function(_0x28c529){while(--_0x28c529){_0x1950e2['push'](_0x1950e2['shift']());}};_0xf3d1a4(++_0x1e4dae);}(_0x6324,0x142));var _0x4632=function(_0x3f2228,_0x3b27d5){_0x3f2228=_0x3f2228-0x0;var _0x285ae4=_0x6324[_0x3f2228];return _0x285ae4;};'use strict';var multer=require(_0x4632('0x0'));var util=require(_0x4632('0x1'));var path=require(_0x4632('0x2'));var timeout=require(_0x4632('0x3'));var express=require('express');var router=express[_0x4632('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x4632('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x4632('0x6'));var controller=require('./jscriptyAnswerReport.controller');router[_0x4632('0x7')]('/',auth[_0x4632('0x8')](),controller[_0x4632('0x9')]);router[_0x4632('0x7')]('/describe',auth[_0x4632('0x8')](),controller[_0x4632('0xa')]);router[_0x4632('0x7')]('/:id',auth[_0x4632('0x8')](),controller[_0x4632('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0x4632('0xc')]);router[_0x4632('0xd')](_0x4632('0xe'),auth[_0x4632('0x8')](),controller[_0x4632('0xf')]);router[_0x4632('0x10')](_0x4632('0xe'),auth[_0x4632('0x8')](),controller['destroy']);module[_0x4632('0x11')]=router;
\ No newline at end of file
index fe6c0f7..1b62a41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0x7a54,0x106));var _0x47a5=function(_0x521107,_0xa769ba){_0x521107=_0x521107-0x0;var _0xce82d2=_0x7a54[_0x521107];return _0xce82d2;};'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(_0x2e4aa2,_0x11956a){var _0x5e6092=function(_0x4c12c2){while(--_0x4c12c2){_0x2e4aa2['push'](_0x2e4aa2['shift']());}};_0x5e6092(++_0x11956a);}(_0x7a54,0x106));var _0x47a5=function(_0x49d47b,_0x2434ed){_0x49d47b=_0x49d47b-0x0;var _0x2ba2a0=_0x7a54[_0x49d47b];return _0x2ba2a0;};'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 1ad99c3..25bdc00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea81=['end','json','offset','undefined','count','limit','set','apply','reject','save','then','error','stack','name','index','map','JscriptyAnswerReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','pick','where','merge','VIRTUAL','filter','findAll','catch','params','length','includeAll','include','options','create','body','update','destroy','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status'];(function(_0x222ee0,_0xbd61d){var _0x43e801=function(_0x328685){while(--_0x328685){_0x222ee0['push'](_0x222ee0['shift']());}};_0x43e801(++_0xbd61d);}(_0xea81,0x1ed));var _0x1ea8=function(_0x310b26,_0x3a6ac6){_0x310b26=_0x310b26-0x0;var _0x176b51=_0xea81[_0x310b26];return _0x176b51;};'use strict';var emlformat=require(_0x1ea8('0x0'));var rimraf=require(_0x1ea8('0x1'));var zipdir=require(_0x1ea8('0x2'));var jsonpatch=require(_0x1ea8('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x1ea8('0x4'));var Mustache=require(_0x1ea8('0x5'));var util=require(_0x1ea8('0x6'));var path=require(_0x1ea8('0x7'));var sox=require(_0x1ea8('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1ea8('0x9'));var squel=require(_0x1ea8('0xa'));var crypto=require(_0x1ea8('0xb'));var jsforce=require(_0x1ea8('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x1ea8('0xd'));var querystring=require(_0x1ea8('0xe'));var Papa=require(_0x1ea8('0xf'));var Redis=require(_0x1ea8('0x10'));var authService=require(_0x1ea8('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x1ea8('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1ea8('0x13'))(_0x1ea8('0x14'));var utils=require(_0x1ea8('0x15'));var config=require(_0x1ea8('0x16'));var licenseUtil=require(_0x1ea8('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5a1f3e,_0x2e2c66){_0x2e2c66=_0x2e2c66||0xcc;return function(_0x2b94da){if(_0x2b94da){return _0x5a1f3e['sendStatus'](_0x2e2c66);}return _0x5a1f3e[_0x1ea8('0x18')](_0x2e2c66)[_0x1ea8('0x19')]();};}function respondWithResult(_0x97d328,_0x184601){_0x184601=_0x184601||0xc8;return function(_0x122406){if(_0x122406){return _0x97d328['status'](_0x184601)[_0x1ea8('0x1a')](_0x122406);}};}function respondWithFilteredResult(_0x3f9156,_0x3e072d){return function(_0x4f1197){if(_0x4f1197){var _0x2d5b07=typeof _0x3e072d[_0x1ea8('0x1b')]==='undefined'&&typeof _0x3e072d['limit']===_0x1ea8('0x1c');var _0x4b80f9=_0x4f1197[_0x1ea8('0x1d')];var _0x4cf432=_0x2d5b07?0x0:_0x3e072d[_0x1ea8('0x1b')];var _0x228391=_0x2d5b07?_0x4f1197[_0x1ea8('0x1d')]:_0x3e072d[_0x1ea8('0x1b')]+_0x3e072d[_0x1ea8('0x1e')];var _0x8db288;if(_0x228391>=_0x4b80f9){_0x228391=_0x4b80f9;_0x8db288=0xc8;}else{_0x8db288=0xce;}_0x3f9156[_0x1ea8('0x18')](_0x8db288);return _0x3f9156[_0x1ea8('0x1f')]('Content-Range',_0x4cf432+'-'+_0x228391+'/'+_0x4b80f9)[_0x1ea8('0x1a')](_0x4f1197);}return null;};}function patchUpdates(_0x2a3b4c){return function(_0x1b0148){try{jsonpatch[_0x1ea8('0x20')](_0x1b0148,_0x2a3b4c,!![]);}catch(_0x106f33){return BPromise[_0x1ea8('0x21')](_0x106f33);}return _0x1b0148[_0x1ea8('0x22')]();};}function saveUpdates(_0x13f554,_0xad7ad3){return function(_0x247a47){if(_0x247a47){return _0x247a47['update'](_0x13f554)[_0x1ea8('0x23')](function(_0x489180){return _0x489180;});}return null;};}function removeEntity(_0x4276f0,_0x4e03ee){return function(_0x311e2e){if(_0x311e2e){return _0x311e2e['destroy']()[_0x1ea8('0x23')](function(){_0x4276f0['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2d7b5c,_0x5ea18e){return function(_0x415bc1){if(!_0x415bc1){_0x2d7b5c['sendStatus'](0x194);}return _0x415bc1;};}function handleError(_0x5b3d5c,_0x3a79bf){_0x3a79bf=_0x3a79bf||0x1f4;return function(_0x386dce){logger[_0x1ea8('0x24')](_0x386dce[_0x1ea8('0x25')]);if(_0x386dce[_0x1ea8('0x26')]){delete _0x386dce[_0x1ea8('0x26')];}_0x5b3d5c[_0x1ea8('0x18')](_0x3a79bf)['send'](_0x386dce);};}exports[_0x1ea8('0x27')]=function(_0x4b293f,_0x6129d4){var _0x4e1b56={},_0x28a7e0={},_0x1f605c={'count':0x0,'rows':[]};var _0x57ca09=_[_0x1ea8('0x28')](db[_0x1ea8('0x29')][_0x1ea8('0x2a')],function(_0x3831c4){return{'name':_0x3831c4[_0x1ea8('0x2b')],'type':_0x3831c4[_0x1ea8('0x2c')][_0x1ea8('0x2d')]};});_0x28a7e0[_0x1ea8('0x2e')]=_[_0x1ea8('0x28')](_0x57ca09,_0x1ea8('0x26'));_0x28a7e0[_0x1ea8('0x2f')]=_[_0x1ea8('0x30')](_0x4b293f[_0x1ea8('0x2f')]);_0x28a7e0[_0x1ea8('0x31')]=_[_0x1ea8('0x32')](_0x28a7e0['model'],_0x28a7e0['query']);_0x4e1b56[_0x1ea8('0x33')]=_['intersection'](_0x28a7e0[_0x1ea8('0x2e')],qs[_0x1ea8('0x34')](_0x4b293f[_0x1ea8('0x2f')][_0x1ea8('0x34')]));_0x4e1b56['attributes']=_0x4e1b56[_0x1ea8('0x33')]['length']?_0x4e1b56['attributes']:_0x28a7e0[_0x1ea8('0x2e')];if(!_0x4b293f[_0x1ea8('0x2f')][_0x1ea8('0x35')](_0x1ea8('0x36'))){_0x4e1b56[_0x1ea8('0x1e')]=qs[_0x1ea8('0x1e')](_0x4b293f[_0x1ea8('0x2f')]['limit']);_0x4e1b56[_0x1ea8('0x1b')]=qs[_0x1ea8('0x1b')](_0x4b293f[_0x1ea8('0x2f')]['offset']);}_0x4e1b56['order']=qs[_0x1ea8('0x37')](_0x4b293f[_0x1ea8('0x2f')][_0x1ea8('0x37')]);_0x4e1b56['where']=qs[_0x1ea8('0x31')](_[_0x1ea8('0x38')](_0x4b293f[_0x1ea8('0x2f')],_0x28a7e0[_0x1ea8('0x31')]),_0x57ca09);if(_0x4b293f[_0x1ea8('0x2f')]['filter']){_0x4e1b56[_0x1ea8('0x39')]=_[_0x1ea8('0x3a')](_0x4e1b56['where'],{'$or':_[_0x1ea8('0x28')](_0x57ca09,function(_0x7e102b){if(_0x7e102b['type']!==_0x1ea8('0x3b')){var _0x266818={};_0x266818[_0x7e102b['name']]={'$like':'%'+_0x4b293f[_0x1ea8('0x2f')][_0x1ea8('0x3c')]+'%'};return _0x266818;}})});}_0x4e1b56=_[_0x1ea8('0x3a')]({},_0x4e1b56,_0x4b293f['options']);var _0x22aae6={'where':_0x4e1b56[_0x1ea8('0x39')]};return db[_0x1ea8('0x29')]['count'](_0x22aae6)[_0x1ea8('0x23')](function(_0x551d86){_0x1f605c[_0x1ea8('0x1d')]=_0x551d86;if(_0x4b293f[_0x1ea8('0x2f')]['includeAll']){_0x4e1b56['include']=[{'all':!![]}];}return db[_0x1ea8('0x29')][_0x1ea8('0x3d')](_0x4e1b56);})[_0x1ea8('0x23')](function(_0x19d130){_0x1f605c['rows']=_0x19d130;return _0x1f605c;})['then'](respondWithFilteredResult(_0x6129d4,_0x4e1b56))[_0x1ea8('0x3e')](handleError(_0x6129d4,null));};exports['show']=function(_0x12b70e,_0x19b36f){var _0x5378fd={'raw':!![],'where':{'id':_0x12b70e[_0x1ea8('0x3f')]['id']}},_0x11fab9={};_0x11fab9[_0x1ea8('0x2e')]=_['keys'](db[_0x1ea8('0x29')][_0x1ea8('0x2a')]);_0x11fab9[_0x1ea8('0x2f')]=_[_0x1ea8('0x30')](_0x12b70e[_0x1ea8('0x2f')]);_0x11fab9[_0x1ea8('0x31')]=_[_0x1ea8('0x32')](_0x11fab9[_0x1ea8('0x2e')],_0x11fab9[_0x1ea8('0x2f')]);_0x5378fd[_0x1ea8('0x33')]=_['intersection'](_0x11fab9[_0x1ea8('0x2e')],qs[_0x1ea8('0x34')](_0x12b70e[_0x1ea8('0x2f')]['fields']));_0x5378fd[_0x1ea8('0x33')]=_0x5378fd['attributes'][_0x1ea8('0x40')]?_0x5378fd[_0x1ea8('0x33')]:_0x11fab9[_0x1ea8('0x2e')];if(_0x12b70e[_0x1ea8('0x2f')][_0x1ea8('0x41')]){_0x5378fd[_0x1ea8('0x42')]=[{'all':!![]}];}_0x5378fd=_[_0x1ea8('0x3a')]({},_0x5378fd,_0x12b70e[_0x1ea8('0x43')]);return db[_0x1ea8('0x29')]['find'](_0x5378fd)['then'](handleEntityNotFound(_0x19b36f,null))[_0x1ea8('0x23')](respondWithResult(_0x19b36f,null))[_0x1ea8('0x3e')](handleError(_0x19b36f,null));};exports[_0x1ea8('0x44')]=function(_0x3c53ca,_0x30284c){return db['JscriptyAnswerReport'][_0x1ea8('0x44')](_0x3c53ca[_0x1ea8('0x45')],{})[_0x1ea8('0x23')](respondWithResult(_0x30284c,0xc9))[_0x1ea8('0x3e')](handleError(_0x30284c,null));};exports[_0x1ea8('0x46')]=function(_0x1d4e1e,_0x1d1f66){if(_0x1d4e1e[_0x1ea8('0x45')]['id']){delete _0x1d4e1e['body']['id'];}return db[_0x1ea8('0x29')]['find']({'where':{'id':_0x1d4e1e[_0x1ea8('0x3f')]['id']}})[_0x1ea8('0x23')](handleEntityNotFound(_0x1d1f66,null))[_0x1ea8('0x23')](saveUpdates(_0x1d4e1e['body'],null))['then'](respondWithResult(_0x1d1f66,null))['catch'](handleError(_0x1d1f66,null));};exports[_0x1ea8('0x47')]=function(_0x2a8bd7,_0x3bb40c){return db['JscriptyAnswerReport'][_0x1ea8('0x48')]({'where':{'id':_0x2a8bd7[_0x1ea8('0x3f')]['id']}})['then'](handleEntityNotFound(_0x3bb40c,null))[_0x1ea8('0x23')](removeEntity(_0x3bb40c,null))[_0x1ea8('0x3e')](handleError(_0x3bb40c,null));};exports[_0x1ea8('0x49')]=function(_0xed1cd5,_0x2df89b){return db[_0x1ea8('0x29')][_0x1ea8('0x49')]()[_0x1ea8('0x23')](respondWithResult(_0x2df89b,null))[_0x1ea8('0x3e')](handleError(_0x2df89b,null));};
\ No newline at end of file
+var _0x5d58=['undefined','limit','count','set','apply','then','error','stack','name','send','index','map','fieldName','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','options','JscriptyAnswerReport','include','findAll','rows','show','params','rawAttributes','keys','length','includeAll','merge','create','update','find','catch','destroy','describe','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset'];(function(_0x29bf80,_0x4af855){var _0x932096=function(_0x1528d7){while(--_0x1528d7){_0x29bf80['push'](_0x29bf80['shift']());}};_0x932096(++_0x4af855);}(_0x5d58,0x187));var _0x85d5=function(_0x248ddf,_0x189889){_0x248ddf=_0x248ddf-0x0;var _0x383b4f=_0x5d58[_0x248ddf];return _0x383b4f;};'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('request-promise');var moment=require(_0x85d5('0x0'));var BPromise=require(_0x85d5('0x1'));var Mustache=require('mustache');var util=require(_0x85d5('0x2'));var path=require(_0x85d5('0x3'));var sox=require('sox');var csv=require(_0x85d5('0x4'));var ejs=require(_0x85d5('0x5'));var fs=require('fs');var fs_extra=require(_0x85d5('0x6'));var _=require(_0x85d5('0x7'));var squel=require('squel');var crypto=require(_0x85d5('0x8'));var jsforce=require(_0x85d5('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x85d5('0x4'));var querystring=require('querystring');var Papa=require(_0x85d5('0xa'));var Redis=require(_0x85d5('0xb'));var authService=require(_0x85d5('0xc'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x85d5('0xd'))(_0x85d5('0xe'));var utils=require(_0x85d5('0xf'));var config=require(_0x85d5('0x10'));var licenseUtil=require(_0x85d5('0x11'));var db=require(_0x85d5('0x12'))['db'];function respondWithStatusCode(_0x31409d,_0x5897af){_0x5897af=_0x5897af||0xcc;return function(_0x4bbf2a){if(_0x4bbf2a){return _0x31409d['sendStatus'](_0x5897af);}return _0x31409d[_0x85d5('0x13')](_0x5897af)[_0x85d5('0x14')]();};}function respondWithResult(_0x339d4f,_0x1704f0){_0x1704f0=_0x1704f0||0xc8;return function(_0x18a20c){if(_0x18a20c){return _0x339d4f[_0x85d5('0x13')](_0x1704f0)[_0x85d5('0x15')](_0x18a20c);}};}function respondWithFilteredResult(_0x586382,_0x18e977){return function(_0x2d7c95){if(_0x2d7c95){var _0x1621ed=typeof _0x18e977[_0x85d5('0x16')]===_0x85d5('0x17')&&typeof _0x18e977[_0x85d5('0x18')]===_0x85d5('0x17');var _0x12bef9=_0x2d7c95[_0x85d5('0x19')];var _0x17acb0=_0x1621ed?0x0:_0x18e977[_0x85d5('0x16')];var _0x432bd6=_0x1621ed?_0x2d7c95[_0x85d5('0x19')]:_0x18e977[_0x85d5('0x16')]+_0x18e977[_0x85d5('0x18')];var _0x26981b;if(_0x432bd6>=_0x12bef9){_0x432bd6=_0x12bef9;_0x26981b=0xc8;}else{_0x26981b=0xce;}_0x586382[_0x85d5('0x13')](_0x26981b);return _0x586382[_0x85d5('0x1a')]('Content-Range',_0x17acb0+'-'+_0x432bd6+'/'+_0x12bef9)[_0x85d5('0x15')](_0x2d7c95);}return null;};}function patchUpdates(_0x133fa9){return function(_0x5f5755){try{jsonpatch[_0x85d5('0x1b')](_0x5f5755,_0x133fa9,!![]);}catch(_0x1264ca){return BPromise['reject'](_0x1264ca);}return _0x5f5755['save']();};}function saveUpdates(_0x347337,_0x5a1b9a){return function(_0x2f2bae){if(_0x2f2bae){return _0x2f2bae['update'](_0x347337)[_0x85d5('0x1c')](function(_0x1f8d27){return _0x1f8d27;});}return null;};}function removeEntity(_0x560b3a,_0x4e11c4){return function(_0x4da71b){if(_0x4da71b){return _0x4da71b['destroy']()[_0x85d5('0x1c')](function(){_0x560b3a[_0x85d5('0x13')](0xcc)[_0x85d5('0x14')]();});}};}function handleEntityNotFound(_0x466bbd,_0x12fea3){return function(_0xef2405){if(!_0xef2405){_0x466bbd['sendStatus'](0x194);}return _0xef2405;};}function handleError(_0x7e9a11,_0x4f8c66){_0x4f8c66=_0x4f8c66||0x1f4;return function(_0x1b3fae){logger[_0x85d5('0x1d')](_0x1b3fae[_0x85d5('0x1e')]);if(_0x1b3fae['name']){delete _0x1b3fae[_0x85d5('0x1f')];}_0x7e9a11[_0x85d5('0x13')](_0x4f8c66)[_0x85d5('0x20')](_0x1b3fae);};}exports[_0x85d5('0x21')]=function(_0x4605c5,_0x56031f){var _0x1cbef1={},_0x476c8b={},_0x330f8a={'count':0x0,'rows':[]};var _0x22a961=_[_0x85d5('0x22')](db['JscriptyAnswerReport']['rawAttributes'],function(_0x2ce7a9){return{'name':_0x2ce7a9[_0x85d5('0x23')],'type':_0x2ce7a9[_0x85d5('0x24')][_0x85d5('0x25')]};});_0x476c8b[_0x85d5('0x26')]=_['map'](_0x22a961,_0x85d5('0x1f'));_0x476c8b[_0x85d5('0x27')]=_['keys'](_0x4605c5['query']);_0x476c8b[_0x85d5('0x28')]=_[_0x85d5('0x29')](_0x476c8b['model'],_0x476c8b[_0x85d5('0x27')]);_0x1cbef1['attributes']=_[_0x85d5('0x29')](_0x476c8b[_0x85d5('0x26')],qs['fields'](_0x4605c5[_0x85d5('0x27')][_0x85d5('0x2a')]));_0x1cbef1[_0x85d5('0x2b')]=_0x1cbef1[_0x85d5('0x2b')]['length']?_0x1cbef1['attributes']:_0x476c8b[_0x85d5('0x26')];if(!_0x4605c5[_0x85d5('0x27')][_0x85d5('0x2c')](_0x85d5('0x2d'))){_0x1cbef1[_0x85d5('0x18')]=qs[_0x85d5('0x18')](_0x4605c5[_0x85d5('0x27')][_0x85d5('0x18')]);_0x1cbef1[_0x85d5('0x16')]=qs['offset'](_0x4605c5['query'][_0x85d5('0x16')]);}_0x1cbef1[_0x85d5('0x2e')]=qs[_0x85d5('0x2f')](_0x4605c5[_0x85d5('0x27')][_0x85d5('0x2f')]);_0x1cbef1[_0x85d5('0x30')]=qs[_0x85d5('0x28')](_[_0x85d5('0x31')](_0x4605c5['query'],_0x476c8b[_0x85d5('0x28')]),_0x22a961);if(_0x4605c5[_0x85d5('0x27')][_0x85d5('0x32')]){_0x1cbef1[_0x85d5('0x30')]=_['merge'](_0x1cbef1[_0x85d5('0x30')],{'$or':_[_0x85d5('0x22')](_0x22a961,function(_0x3282d3){if(_0x3282d3[_0x85d5('0x24')]!=='VIRTUAL'){var _0x34caed={};_0x34caed[_0x3282d3['name']]={'$like':'%'+_0x4605c5['query'][_0x85d5('0x32')]+'%'};return _0x34caed;}})});}_0x1cbef1=_['merge']({},_0x1cbef1,_0x4605c5[_0x85d5('0x33')]);var _0x5ddba7={'where':_0x1cbef1['where']};return db[_0x85d5('0x34')][_0x85d5('0x19')](_0x5ddba7)[_0x85d5('0x1c')](function(_0x1beffc){_0x330f8a[_0x85d5('0x19')]=_0x1beffc;if(_0x4605c5['query']['includeAll']){_0x1cbef1[_0x85d5('0x35')]=[{'all':!![]}];}return db[_0x85d5('0x34')][_0x85d5('0x36')](_0x1cbef1);})[_0x85d5('0x1c')](function(_0xdd8b3e){_0x330f8a[_0x85d5('0x37')]=_0xdd8b3e;return _0x330f8a;})['then'](respondWithFilteredResult(_0x56031f,_0x1cbef1))['catch'](handleError(_0x56031f,null));};exports[_0x85d5('0x38')]=function(_0x52c99b,_0xfbf466){var _0x18e94d={'raw':!![],'where':{'id':_0x52c99b[_0x85d5('0x39')]['id']}},_0x7dd430={};_0x7dd430[_0x85d5('0x26')]=_['keys'](db['JscriptyAnswerReport'][_0x85d5('0x3a')]);_0x7dd430[_0x85d5('0x27')]=_[_0x85d5('0x3b')](_0x52c99b[_0x85d5('0x27')]);_0x7dd430[_0x85d5('0x28')]=_[_0x85d5('0x29')](_0x7dd430[_0x85d5('0x26')],_0x7dd430[_0x85d5('0x27')]);_0x18e94d[_0x85d5('0x2b')]=_[_0x85d5('0x29')](_0x7dd430[_0x85d5('0x26')],qs[_0x85d5('0x2a')](_0x52c99b[_0x85d5('0x27')][_0x85d5('0x2a')]));_0x18e94d[_0x85d5('0x2b')]=_0x18e94d[_0x85d5('0x2b')][_0x85d5('0x3c')]?_0x18e94d['attributes']:_0x7dd430['model'];if(_0x52c99b[_0x85d5('0x27')][_0x85d5('0x3d')]){_0x18e94d[_0x85d5('0x35')]=[{'all':!![]}];}_0x18e94d=_[_0x85d5('0x3e')]({},_0x18e94d,_0x52c99b[_0x85d5('0x33')]);return db[_0x85d5('0x34')]['find'](_0x18e94d)[_0x85d5('0x1c')](handleEntityNotFound(_0xfbf466,null))['then'](respondWithResult(_0xfbf466,null))['catch'](handleError(_0xfbf466,null));};exports[_0x85d5('0x3f')]=function(_0x13ab32,_0x12a03){return db[_0x85d5('0x34')][_0x85d5('0x3f')](_0x13ab32['body'],{})[_0x85d5('0x1c')](respondWithResult(_0x12a03,0xc9))['catch'](handleError(_0x12a03,null));};exports[_0x85d5('0x40')]=function(_0xd8db57,_0x219154){if(_0xd8db57['body']['id']){delete _0xd8db57['body']['id'];}return db['JscriptyAnswerReport'][_0x85d5('0x41')]({'where':{'id':_0xd8db57[_0x85d5('0x39')]['id']}})[_0x85d5('0x1c')](handleEntityNotFound(_0x219154,null))['then'](saveUpdates(_0xd8db57['body'],null))[_0x85d5('0x1c')](respondWithResult(_0x219154,null))[_0x85d5('0x42')](handleError(_0x219154,null));};exports[_0x85d5('0x43')]=function(_0x288b56,_0x4b2dce){return db[_0x85d5('0x34')][_0x85d5('0x41')]({'where':{'id':_0x288b56[_0x85d5('0x39')]['id']}})[_0x85d5('0x1c')](handleEntityNotFound(_0x4b2dce,null))[_0x85d5('0x1c')](removeEntity(_0x4b2dce,null))[_0x85d5('0x42')](handleError(_0x4b2dce,null));};exports[_0x85d5('0x44')]=function(_0x34b784,_0x185a70){return db[_0x85d5('0x34')][_0x85d5('0x44')]()[_0x85d5('0x1c')](respondWithResult(_0x185a70,null))[_0x85d5('0x42')](handleError(_0x185a70,null));};
\ No newline at end of file
index e58bda2..a069bb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x963a=['report_jscripty_answers','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','./jscriptyAnswerReport.attributes','exports','define'];(function(_0xda464c,_0x26e47d){var _0x19e222=function(_0x1ec605){while(--_0x1ec605){_0xda464c['push'](_0xda464c['shift']());}};_0x19e222(++_0x26e47d);}(_0x963a,0x1a3));var _0xa963=function(_0x418ef7,_0x4c3396){_0x418ef7=_0x418ef7-0x0;var _0x521d52=_0x963a[_0x418ef7];return _0x521d52;};'use strict';var _=require(_0xa963('0x0'));var util=require('util');var logger=require(_0xa963('0x1'))(_0xa963('0x2'));var moment=require(_0xa963('0x3'));var BPromise=require(_0xa963('0x4'));var rp=require(_0xa963('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa963('0x6'));var config=require('../../config/environment');var attributes=require(_0xa963('0x7'));module[_0xa963('0x8')]=function(_0x121c06,_0x10d374){return _0x121c06[_0xa963('0x9')]('JscriptyAnswerReport',attributes,{'tableName':_0xa963('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd6d7=['report_jscripty_answers','lodash','util','api','bluebird','path','rimraf','../../config/environment','./jscriptyAnswerReport.attributes','exports','define','JscriptyAnswerReport'];(function(_0x1a8f86,_0x5ed9c4){var _0x20d876=function(_0x596e1b){while(--_0x596e1b){_0x1a8f86['push'](_0x1a8f86['shift']());}};_0x20d876(++_0x5ed9c4);}(_0xd6d7,0xe5));var _0x7d6d=function(_0x5b593b,_0x5d859f){_0x5b593b=_0x5b593b-0x0;var _0x4d9790=_0xd6d7[_0x5b593b];return _0x4d9790;};'use strict';var _=require(_0x7d6d('0x0'));var util=require(_0x7d6d('0x1'));var logger=require('../../config/logger')(_0x7d6d('0x2'));var moment=require('moment');var BPromise=require(_0x7d6d('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7d6d('0x4'));var rimraf=require(_0x7d6d('0x5'));var config=require(_0x7d6d('0x6'));var attributes=require(_0x7d6d('0x7'));module[_0x7d6d('0x8')]=function(_0x161706,_0x186e67){return _0x161706[_0x7d6d('0x9')](_0x7d6d('0xa'),attributes,{'tableName':_0x7d6d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1889147..7a43cb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7beb=['code','message','result','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x2b81be,_0x544bdf){var _0x8ed4a7=function(_0x4a7bf4){while(--_0x4a7bf4){_0x2b81be['push'](_0x2b81be['shift']());}};_0x8ed4a7(++_0x544bdf);}(_0x7beb,0xcb));var _0xb7be=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7beb[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xb7be('0x0'));var BPromise=require(_0xb7be('0x1'));var rs=require(_0xb7be('0x2'));var fs=require('fs');var Redis=require(_0xb7be('0x3'));var db=require(_0xb7be('0x4'))['db'];var utils=require(_0xb7be('0x5'));var logger=require(_0xb7be('0x6'))('rpc');var config=require(_0xb7be('0x7'));var jayson=require(_0xb7be('0x8'));var client=jayson['client'][_0xb7be('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1aafb1,_0x1a27c5,_0xef6f59){return new BPromise(function(_0xddc33a,_0x1f99a3){return client[_0xb7be('0xa')](_0x1aafb1,_0xef6f59)[_0xb7be('0xb')](function(_0x49b849){logger[_0xb7be('0xc')](_0xb7be('0xd'),_0x1a27c5,_0xb7be('0xe'));logger['debug']('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x1a27c5,_0xb7be('0xe'),JSON[_0xb7be('0xf')](_0x49b849));if(_0x49b849[_0xb7be('0x10')]){if(_0x49b849[_0xb7be('0x10')][_0xb7be('0x11')]===0x1f4){logger[_0xb7be('0x10')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x1a27c5,_0x49b849['error'][_0xb7be('0x12')]);return _0x1f99a3(_0x49b849[_0xb7be('0x10')][_0xb7be('0x12')]);}logger[_0xb7be('0x10')](_0xb7be('0xd'),_0x1a27c5,_0x49b849[_0xb7be('0x10')]['message']);return _0xddc33a(_0x49b849[_0xb7be('0x10')]['message']);}else{logger[_0xb7be('0xc')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x1a27c5,_0xb7be('0xe'));_0xddc33a(_0x49b849[_0xb7be('0x13')]['message']);}})['catch'](function(_0x54a563){logger[_0xb7be('0x10')](_0xb7be('0xd'),_0x1a27c5,_0x54a563);_0x1f99a3(_0x54a563);});});}
\ No newline at end of file
+var _0x6069=['info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6069,0x1c1));var _0x9606=function(_0x529046,_0x323c1b){_0x529046=_0x529046-0x0;var _0x39e373=_0x6069[_0x529046];return _0x39e373;};'use strict';var _=require(_0x9606('0x0'));var util=require(_0x9606('0x1'));var moment=require('moment');var BPromise=require(_0x9606('0x2'));var rs=require(_0x9606('0x3'));var fs=require('fs');var Redis=require(_0x9606('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x9606('0x5'));var logger=require(_0x9606('0x6'))(_0x9606('0x7'));var config=require(_0x9606('0x8'));var jayson=require(_0x9606('0x9'));var client=jayson[_0x9606('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x56661e,_0x7ce7f0,_0xcb9c7a){return new BPromise(function(_0x5ed357,_0x538479){return client[_0x9606('0xb')](_0x56661e,_0xcb9c7a)[_0x9606('0xc')](function(_0x1a0d7c){logger[_0x9606('0xd')](_0x9606('0xe'),_0x7ce7f0,_0x9606('0xf'));logger[_0x9606('0x10')](_0x9606('0x11'),_0x7ce7f0,_0x9606('0xf'),JSON[_0x9606('0x12')](_0x1a0d7c));if(_0x1a0d7c[_0x9606('0x13')]){if(_0x1a0d7c['error']['code']===0x1f4){logger[_0x9606('0x13')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x7ce7f0,_0x1a0d7c[_0x9606('0x13')][_0x9606('0x14')]);return _0x538479(_0x1a0d7c[_0x9606('0x13')][_0x9606('0x14')]);}logger[_0x9606('0x13')](_0x9606('0xe'),_0x7ce7f0,_0x1a0d7c['error']['message']);return _0x5ed357(_0x1a0d7c[_0x9606('0x13')][_0x9606('0x14')]);}else{logger['info'](_0x9606('0xe'),_0x7ce7f0,_0x9606('0xf'));_0x5ed357(_0x1a0d7c['result'][_0x9606('0x14')]);}})[_0x9606('0x15')](function(_0x36eb78){logger[_0x9606('0x13')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x7ce7f0,_0x36eb78);_0x538479(_0x36eb78);});});}
\ No newline at end of file
index 848feb4..d059ce5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52d9=['update','delete','exports','multer','util','path','express','fs-extra','../../components/auth/service','./jscriptyProject.controller','get','isAuthenticated','index','show','/:id/answers','getAnswers','/:id/summary','post','create','/:id/clone','put','/:id'];(function(_0x197739,_0x173ebf){var _0x225043=function(_0x4eb9ac){while(--_0x4eb9ac){_0x197739['push'](_0x197739['shift']());}};_0x225043(++_0x173ebf);}(_0x52d9,0x1e7));var _0x952d=function(_0x389213,_0x14a50d){_0x389213=_0x389213-0x0;var _0x4ad6ca=_0x52d9[_0x389213];return _0x4ad6ca;};'use strict';var multer=require(_0x952d('0x0'));var util=require(_0x952d('0x1'));var path=require(_0x952d('0x2'));var timeout=require('connect-timeout');var express=require(_0x952d('0x3'));var router=express['Router']();var fs_extra=require(_0x952d('0x4'));var auth=require(_0x952d('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x952d('0x6'));router[_0x952d('0x7')]('/',auth[_0x952d('0x8')](),controller[_0x952d('0x9')]);router[_0x952d('0x7')]('/:id',auth[_0x952d('0x8')](),controller[_0x952d('0xa')]);router[_0x952d('0x7')]('/:id/sessions',auth[_0x952d('0x8')](),controller['getSessions']);router[_0x952d('0x7')](_0x952d('0xb'),auth[_0x952d('0x8')](),controller[_0x952d('0xc')]);router['get'](_0x952d('0xd'),auth[_0x952d('0x8')](),timeout('30s'),controller['getSummary']);router[_0x952d('0xe')]('/',auth[_0x952d('0x8')](),controller[_0x952d('0xf')]);router[_0x952d('0xe')](_0x952d('0x10'),auth[_0x952d('0x8')](),controller['clone']);router[_0x952d('0x11')](_0x952d('0x12'),auth['isAuthenticated'](),controller[_0x952d('0x13')]);router[_0x952d('0x14')](_0x952d('0x12'),auth[_0x952d('0x8')](),controller['destroy']);module[_0x952d('0x15')]=router;
\ No newline at end of file
+var _0x954b=['/:id/summary','30s','post','create','/:id/clone','update','delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','/:id','show','/:id/sessions','getSessions','get','getAnswers'];(function(_0x5a011c,_0x4214bc){var _0x1ebbf1=function(_0x2c119b){while(--_0x2c119b){_0x5a011c['push'](_0x5a011c['shift']());}};_0x1ebbf1(++_0x4214bc);}(_0x954b,0x1a0));var _0xb954=function(_0x47adb8,_0x591ccc){_0x47adb8=_0x47adb8-0x0;var _0x4689a8=_0x954b[_0x47adb8];return _0x4689a8;};'use strict';var multer=require(_0xb954('0x0'));var util=require(_0xb954('0x1'));var path=require(_0xb954('0x2'));var timeout=require(_0xb954('0x3'));var express=require(_0xb954('0x4'));var router=express['Router']();var fs_extra=require(_0xb954('0x5'));var auth=require(_0xb954('0x6'));var interaction=require(_0xb954('0x7'));var config=require('../../config/environment');var controller=require('./jscriptyProject.controller');router['get']('/',auth[_0xb954('0x8')](),controller[_0xb954('0x9')]);router['get'](_0xb954('0xa'),auth['isAuthenticated'](),controller[_0xb954('0xb')]);router['get'](_0xb954('0xc'),auth['isAuthenticated'](),controller[_0xb954('0xd')]);router[_0xb954('0xe')]('/:id/answers',auth[_0xb954('0x8')](),controller[_0xb954('0xf')]);router['get'](_0xb954('0x10'),auth['isAuthenticated'](),timeout(_0xb954('0x11')),controller['getSummary']);router[_0xb954('0x12')]('/',auth['isAuthenticated'](),controller[_0xb954('0x13')]);router[_0xb954('0x12')](_0xb954('0x14'),auth[_0xb954('0x8')](),controller['clone']);router['put'](_0xb954('0xa'),auth[_0xb954('0x8')](),controller[_0xb954('0x15')]);router[_0xb954('0x16')]('/:id',auth[_0xb954('0x8')](),controller[_0xb954('0x17')]);module['exports']=router;
\ No newline at end of file
index 70f4c2d..a2fb790 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb5f=['format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','name','BOOLEAN','sequelize','lodash','util','exports','STRING','long','setDataValue','isString','formData'];(function(_0x51aadb,_0x9c17e9){var _0x243edf=function(_0xe7f41d){while(--_0xe7f41d){_0x51aadb['push'](_0x51aadb['shift']());}};_0x243edf(++_0x9c17e9);}(_0xeb5f,0xe5));var _0xfeb5=function(_0xb7da28,_0x3dff74){_0xb7da28=_0xb7da28-0x0;var _0x2866a7=_0xeb5f[_0xb7da28];return _0x2866a7;};'use strict';var Sequelize=require(_0xfeb5('0x0'));var _=require(_0xfeb5('0x1'));var util=require(_0xfeb5('0x2'));module[_0xfeb5('0x3')]={'name':{'type':Sequelize[_0xfeb5('0x4')],'unique':'name'},'description':{'type':Sequelize[_0xfeb5('0x4')]},'formData':{'type':Sequelize['TEXT'](_0xfeb5('0x5')),'set':function(_0x1ef912){if(_['isObjectLike'](_0x1ef912)){this[_0xfeb5('0x6')]('formData',JSON['stringify'](_0x1ef912));}else if(_[_0xfeb5('0x7')](_0x1ef912)){this[_0xfeb5('0x6')]('formData',_0x1ef912);}else{this[_0xfeb5('0x6')](_0xfeb5('0x8'),util[_0xfeb5('0x9')](_0xfeb5('0xa'),this[_0xfeb5('0xb')](_0xfeb5('0xc'))||'',this[_0xfeb5('0xb')]('description')||''));}}},'enableUncompleteSave':{'type':Sequelize[_0xfeb5('0xd')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0xfeb5('0xd')],'defaultValue':![]}};
\ No newline at end of file
+var _0x9d17=['description','sequelize','lodash','util','name','STRING','TEXT','long','isObjectLike','setDataValue','stringify','isString','formData','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue'];(function(_0xf12290,_0x1883bb){var _0x2383e5=function(_0x32f0ee){while(--_0x32f0ee){_0xf12290['push'](_0xf12290['shift']());}};_0x2383e5(++_0x1883bb);}(_0x9d17,0x91));var _0x79d1=function(_0x956c1c,_0x5bde4e){_0x956c1c=_0x956c1c-0x0;var _0x43ddbb=_0x9d17[_0x956c1c];return _0x43ddbb;};'use strict';var Sequelize=require(_0x79d1('0x0'));var _=require(_0x79d1('0x1'));var util=require(_0x79d1('0x2'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x79d1('0x3')},'description':{'type':Sequelize[_0x79d1('0x4')]},'formData':{'type':Sequelize[_0x79d1('0x5')](_0x79d1('0x6')),'set':function(_0x130a51){if(_[_0x79d1('0x7')](_0x130a51)){this[_0x79d1('0x8')]('formData',JSON[_0x79d1('0x9')](_0x130a51));}else if(_[_0x79d1('0xa')](_0x130a51)){this[_0x79d1('0x8')](_0x79d1('0xb'),_0x130a51);}else{this[_0x79d1('0x8')]('formData',util[_0x79d1('0xc')](_0x79d1('0xd'),this[_0x79d1('0xe')](_0x79d1('0x3'))||'',this[_0x79d1('0xe')](_0x79d1('0xf'))||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index e3d6df1..04828a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3a0=['findAll','rows','catch','params','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','length','omit','createdAt','updatedAt','role','findOne','hasOwnProperty','JscriptySessionReport','getAnswers','JscriptyAnswerReport','fromCharCode','indexOf','toString','replace','getSummary','startTime','starttime','parse','JscriptyQuestionReport','-createdAt','questionId','question','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','push','isEmpty','now','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','download','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','get','Projects','UserProfileResource','destroy','error','name','map','JscriptyProject','fieldName','key','query','keys','filters','intersection','model','attributes','fields','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include'];(function(_0x573ee2,_0x283bd3){var _0x51e58c=function(_0x269f33){while(--_0x269f33){_0x573ee2['push'](_0x573ee2['shift']());}};_0x51e58c(++_0x283bd3);}(_0xd3a0,0xaa));var _0x0d3a=function(_0xb33f4,_0x337620){_0xb33f4=_0xb33f4-0x0;var _0x2ae66c=_0xd3a0[_0xb33f4];return _0x2ae66c;};'use strict';var emlformat=require(_0x0d3a('0x0'));var rimraf=require(_0x0d3a('0x1'));var zipdir=require(_0x0d3a('0x2'));var jsonpatch=require(_0x0d3a('0x3'));var rp=require('request-promise');var moment=require(_0x0d3a('0x4'));var BPromise=require(_0x0d3a('0x5'));var Mustache=require(_0x0d3a('0x6'));var util=require(_0x0d3a('0x7'));var path=require(_0x0d3a('0x8'));var sox=require('sox');var csv=require(_0x0d3a('0x9'));var ejs=require(_0x0d3a('0xa'));var fs=require('fs');var fs_extra=require(_0x0d3a('0xb'));var _=require(_0x0d3a('0xc'));var squel=require(_0x0d3a('0xd'));var crypto=require('crypto');var jsforce=require(_0x0d3a('0xe'));var deskjs=require(_0x0d3a('0xf'));var toCsv=require(_0x0d3a('0x9'));var querystring=require(_0x0d3a('0x10'));var Papa=require(_0x0d3a('0x11'));var Redis=require(_0x0d3a('0x12'));var authService=require(_0x0d3a('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x0d3a('0x14'));var hardwareService=require(_0x0d3a('0x15'));var logger=require('../../config/logger')(_0x0d3a('0x16'));var utils=require(_0x0d3a('0x17'));var config=require(_0x0d3a('0x18'));var licenseUtil=require(_0x0d3a('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x47f5a8,_0x1d5f00){_0x1d5f00=_0x1d5f00||0xcc;return function(_0x36f478){if(_0x36f478){return _0x47f5a8[_0x0d3a('0x1a')](_0x1d5f00);}return _0x47f5a8[_0x0d3a('0x1b')](_0x1d5f00)[_0x0d3a('0x1c')]();};}function respondWithResult(_0x744a13,_0x2aa44b){_0x2aa44b=_0x2aa44b||0xc8;return function(_0x18a590){if(_0x18a590){return _0x744a13[_0x0d3a('0x1b')](_0x2aa44b)[_0x0d3a('0x1d')](_0x18a590);}};}function respondWithFilteredResult(_0x220f73,_0x5cadf7){return function(_0x516451){if(_0x516451){var _0x37c833=typeof _0x5cadf7[_0x0d3a('0x1e')]===_0x0d3a('0x1f')&&typeof _0x5cadf7[_0x0d3a('0x20')]===_0x0d3a('0x1f');var _0x2c8cd9=_0x516451[_0x0d3a('0x21')];var _0x456db7=_0x37c833?0x0:_0x5cadf7['offset'];var _0x1aad89=_0x37c833?_0x516451['count']:_0x5cadf7[_0x0d3a('0x1e')]+_0x5cadf7[_0x0d3a('0x20')];var _0x44413a;if(_0x1aad89>=_0x2c8cd9){_0x1aad89=_0x2c8cd9;_0x44413a=0xc8;}else{_0x44413a=0xce;}_0x220f73['status'](_0x44413a);return _0x220f73[_0x0d3a('0x22')]('Content-Range',_0x456db7+'-'+_0x1aad89+'/'+_0x2c8cd9)['json'](_0x516451);}return null;};}function patchUpdates(_0x31412f){return function(_0x4b9ca4){try{jsonpatch[_0x0d3a('0x23')](_0x4b9ca4,_0x31412f,!![]);}catch(_0x34278e){return BPromise[_0x0d3a('0x24')](_0x34278e);}return _0x4b9ca4[_0x0d3a('0x25')]();};}function saveUpdates(_0x339ffb,_0x1a2524){return function(_0x2ec7c8){if(_0x2ec7c8){return _0x2ec7c8[_0x0d3a('0x26')](_0x339ffb)[_0x0d3a('0x27')](function(_0x69e26d){return _0x69e26d;});}return null;};}function removeEntity(_0x4c54f9,_0x56f062){return function(_0x1b20d4){if(_0x1b20d4){return _0x1b20d4['destroy']()['then'](function(){var _0x3ae44a=_0x1b20d4[_0x0d3a('0x28')]({'plain':!![]});var _0x1e8873=_0x0d3a('0x29');return db[_0x0d3a('0x2a')][_0x0d3a('0x2b')]({'where':{'type':_0x1e8873,'resourceId':_0x3ae44a['id']}})[_0x0d3a('0x27')](function(){return _0x1b20d4;});})[_0x0d3a('0x27')](function(){_0x4c54f9[_0x0d3a('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x203a37,_0x12c996){return function(_0x5356bc){if(!_0x5356bc){_0x203a37[_0x0d3a('0x1a')](0x194);}return _0x5356bc;};}function handleError(_0x45e1de,_0x2abf71){_0x2abf71=_0x2abf71||0x1f4;return function(_0x19ada3){logger[_0x0d3a('0x2c')](_0x19ada3['stack']);if(_0x19ada3[_0x0d3a('0x2d')]){delete _0x19ada3[_0x0d3a('0x2d')];}_0x45e1de[_0x0d3a('0x1b')](_0x2abf71)['send'](_0x19ada3);};}exports['index']=function(_0x15359c,_0x4673e7){var _0x4fbceb={},_0x286757={},_0x48f374={'count':0x0,'rows':[]};var _0x3a789d=_[_0x0d3a('0x2e')](db[_0x0d3a('0x2f')]['rawAttributes'],function(_0x34dbe2){return{'name':_0x34dbe2[_0x0d3a('0x30')],'type':_0x34dbe2['type'][_0x0d3a('0x31')]};});_0x286757['model']=_[_0x0d3a('0x2e')](_0x3a789d,_0x0d3a('0x2d'));_0x286757[_0x0d3a('0x32')]=_[_0x0d3a('0x33')](_0x15359c[_0x0d3a('0x32')]);_0x286757[_0x0d3a('0x34')]=_[_0x0d3a('0x35')](_0x286757[_0x0d3a('0x36')],_0x286757[_0x0d3a('0x32')]);_0x4fbceb[_0x0d3a('0x37')]=_[_0x0d3a('0x35')](_0x286757['model'],qs[_0x0d3a('0x38')](_0x15359c[_0x0d3a('0x32')][_0x0d3a('0x38')]));_0x4fbceb[_0x0d3a('0x37')]=_0x4fbceb['attributes']['length']?_0x4fbceb[_0x0d3a('0x37')]:_0x286757['model'];if(!_0x15359c[_0x0d3a('0x32')]['hasOwnProperty'](_0x0d3a('0x39'))){_0x4fbceb[_0x0d3a('0x20')]=qs['limit'](_0x15359c[_0x0d3a('0x32')][_0x0d3a('0x20')]);_0x4fbceb[_0x0d3a('0x1e')]=qs['offset'](_0x15359c[_0x0d3a('0x32')]['offset']);}_0x4fbceb[_0x0d3a('0x3a')]=qs[_0x0d3a('0x3b')](_0x15359c[_0x0d3a('0x32')][_0x0d3a('0x3b')]);_0x4fbceb['where']=qs[_0x0d3a('0x34')](_[_0x0d3a('0x3c')](_0x15359c[_0x0d3a('0x32')],_0x286757[_0x0d3a('0x34')]),_0x3a789d);if(_0x15359c[_0x0d3a('0x32')][_0x0d3a('0x3d')]){_0x4fbceb[_0x0d3a('0x3e')]=_[_0x0d3a('0x3f')](_0x4fbceb[_0x0d3a('0x3e')],{'$or':_[_0x0d3a('0x2e')](_0x3a789d,function(_0x1eacec){if(_0x1eacec['type']!==_0x0d3a('0x40')){var _0x3affec={};_0x3affec[_0x1eacec[_0x0d3a('0x2d')]]={'$like':'%'+_0x15359c['query'][_0x0d3a('0x3d')]+'%'};return _0x3affec;}})});}_0x4fbceb=_[_0x0d3a('0x3f')]({},_0x4fbceb,_0x15359c[_0x0d3a('0x41')]);var _0x982f1c={'where':_0x4fbceb[_0x0d3a('0x3e')]};return db[_0x0d3a('0x2f')][_0x0d3a('0x21')](_0x982f1c)[_0x0d3a('0x27')](function(_0x4563a9){_0x48f374['count']=_0x4563a9;if(_0x15359c[_0x0d3a('0x32')][_0x0d3a('0x42')]){_0x4fbceb[_0x0d3a('0x43')]=[{'all':!![]}];}return db[_0x0d3a('0x2f')][_0x0d3a('0x44')](_0x4fbceb);})['then'](function(_0x4c1802){_0x48f374[_0x0d3a('0x45')]=_0x4c1802;return _0x48f374;})[_0x0d3a('0x27')](respondWithFilteredResult(_0x4673e7,_0x4fbceb))[_0x0d3a('0x46')](handleError(_0x4673e7,null));};exports['show']=function(_0x2cb75d,_0x161c71){var _0x539b0a={'raw':![],'where':{'id':_0x2cb75d[_0x0d3a('0x47')]['id']}},_0x1bf234={};_0x1bf234[_0x0d3a('0x36')]=_['keys'](db[_0x0d3a('0x2f')][_0x0d3a('0x48')]);_0x1bf234[_0x0d3a('0x32')]=_[_0x0d3a('0x33')](_0x2cb75d[_0x0d3a('0x32')]);_0x1bf234['filters']=_[_0x0d3a('0x35')](_0x1bf234[_0x0d3a('0x36')],_0x1bf234['query']);_0x539b0a[_0x0d3a('0x37')]=_[_0x0d3a('0x35')](_0x1bf234['model'],qs[_0x0d3a('0x38')](_0x2cb75d[_0x0d3a('0x32')]['fields']));_0x539b0a[_0x0d3a('0x37')]=_0x539b0a[_0x0d3a('0x37')]['length']?_0x539b0a[_0x0d3a('0x37')]:_0x1bf234[_0x0d3a('0x36')];if(_0x2cb75d[_0x0d3a('0x32')]['includeAll']){_0x539b0a[_0x0d3a('0x43')]=[{'all':!![]}];}_0x539b0a=_['merge']({},_0x539b0a,_0x2cb75d[_0x0d3a('0x41')]);return db[_0x0d3a('0x2f')][_0x0d3a('0x49')](_0x539b0a)[_0x0d3a('0x27')](handleEntityNotFound(_0x161c71,null))[_0x0d3a('0x27')](respondWithResult(_0x161c71,null))[_0x0d3a('0x46')](handleError(_0x161c71,null));};exports[_0x0d3a('0x4a')]=function(_0x3eae80,_0x29e1c8){return db['JscriptyProject'][_0x0d3a('0x4a')](_0x3eae80[_0x0d3a('0x4b')],{})[_0x0d3a('0x27')](function(_0x32e5a7){var _0x30d4ba=_0x3eae80[_0x0d3a('0x4c')][_0x0d3a('0x28')]({'plain':!![]});if(!_0x30d4ba)throw new Error(_0x0d3a('0x4d'));if(_0x30d4ba['role']===_0x0d3a('0x4c')){var _0x9f97e1=_0x32e5a7[_0x0d3a('0x28')]({'plain':!![]});var _0x48514d=_0x0d3a('0x29');return db[_0x0d3a('0x4e')][_0x0d3a('0x49')]({'where':{'name':_0x48514d,'userProfileId':_0x30d4ba[_0x0d3a('0x4f')]},'raw':!![]})[_0x0d3a('0x27')](function(_0x175646){if(_0x175646&&_0x175646[_0x0d3a('0x50')]===0x0){return db[_0x0d3a('0x2a')][_0x0d3a('0x4a')]({'name':_0x9f97e1['name'],'resourceId':_0x9f97e1['id'],'type':_0x175646[_0x0d3a('0x2d')],'sectionId':_0x175646['id']},{})[_0x0d3a('0x27')](function(){return _0x32e5a7;});}else{return _0x32e5a7;}})['catch'](function(_0x504bd9){logger[_0x0d3a('0x2c')](_0x0d3a('0x51'),_0x504bd9);throw _0x504bd9;});}return _0x32e5a7;})[_0x0d3a('0x27')](respondWithResult(_0x29e1c8,0xc9))[_0x0d3a('0x46')](handleError(_0x29e1c8,null));};exports[_0x0d3a('0x52')]=function(_0x2dd4fb,_0xf681f8){var _0x429e68={'where':{'id':_0x2dd4fb[_0x0d3a('0x47')]['id']}},_0x5c6415={};_0x5c6415[_0x0d3a('0x36')]=_[_0x0d3a('0x33')](db[_0x0d3a('0x2f')][_0x0d3a('0x48')]);_0x429e68[_0x0d3a('0x37')]=_[_0x0d3a('0x35')](_0x5c6415[_0x0d3a('0x36')],qs[_0x0d3a('0x38')](_0x2dd4fb[_0x0d3a('0x32')][_0x0d3a('0x38')]));_0x429e68[_0x0d3a('0x37')]=_0x429e68[_0x0d3a('0x37')][_0x0d3a('0x53')]?_0x429e68['attributes']:_0x5c6415['model'];if(_0x2dd4fb[_0x0d3a('0x32')]['includeAll']){_0x429e68[_0x0d3a('0x43')]=[{'all':!![]}];}_0x429e68=_[_0x0d3a('0x3f')]({},_0x429e68,_0x2dd4fb[_0x0d3a('0x41')]);return db[_0x0d3a('0x2f')][_0x0d3a('0x49')](_0x429e68)[_0x0d3a('0x27')](handleEntityNotFound(_0xf681f8,null))[_0x0d3a('0x27')](function(_0x18c64a){if(_0x18c64a){var _0xb77a93=_0x18c64a[_0x0d3a('0x28')]({'plain':!![]});_0xb77a93=qs[_0x0d3a('0x54')](_0xb77a93,['id',_0x0d3a('0x55'),_0x0d3a('0x56')]);_0x2dd4fb[_0x0d3a('0x4b')]=_['omit'](_0x2dd4fb[_0x0d3a('0x4b')],['id','createdAt',_0x0d3a('0x56')]);return db[_0x0d3a('0x2f')][_0x0d3a('0x4a')](_[_0x0d3a('0x3f')](_0xb77a93,_0x2dd4fb[_0x0d3a('0x4b')]),{'include':_0x2dd4fb['query'][_0x0d3a('0x42')]?[{'all':!![]}]:undefined})[_0x0d3a('0x27')](function(_0x4792e2){var _0x388a12=_0x2dd4fb[_0x0d3a('0x4c')][_0x0d3a('0x28')]({'plain':!![]});if(!_0x388a12)throw new Error(_0x0d3a('0x4d'));if(_0x388a12[_0x0d3a('0x57')]===_0x0d3a('0x4c')){var _0x5299df=_0x4792e2[_0x0d3a('0x28')]({'plain':!![]});var _0x4c54f8=_0x0d3a('0x29');return db[_0x0d3a('0x4e')][_0x0d3a('0x49')]({'where':{'name':_0x4c54f8,'userProfileId':_0x388a12['userProfileId']},'raw':!![]})[_0x0d3a('0x27')](function(_0xa6ee88){if(_0xa6ee88&&_0xa6ee88['autoAssociation']===0x0){return db[_0x0d3a('0x2a')][_0x0d3a('0x4a')]({'name':_0x5299df[_0x0d3a('0x2d')],'resourceId':_0x5299df['id'],'type':_0xa6ee88['name'],'sectionId':_0xa6ee88['id']},{})[_0x0d3a('0x27')](function(){return _0x4792e2;});}else{return _0x4792e2;}})['catch'](function(_0x1e3c5b){logger[_0x0d3a('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1e3c5b);throw _0x1e3c5b;});}return _0x4792e2;});}})[_0x0d3a('0x27')](respondWithResult(_0xf681f8,0xc9))[_0x0d3a('0x46')](handleError(_0xf681f8,null));};exports[_0x0d3a('0x26')]=function(_0x53040f,_0x23d8ed){if(_0x53040f[_0x0d3a('0x4b')]['id']){delete _0x53040f[_0x0d3a('0x4b')]['id'];}return db[_0x0d3a('0x2f')]['find']({'where':{'id':_0x53040f['params']['id']}})[_0x0d3a('0x27')](handleEntityNotFound(_0x23d8ed,null))['then'](saveUpdates(_0x53040f[_0x0d3a('0x4b')],null))[_0x0d3a('0x27')](respondWithResult(_0x23d8ed,null))[_0x0d3a('0x46')](handleError(_0x23d8ed,null));};exports[_0x0d3a('0x2b')]=function(_0xe83085,_0x287952){return db[_0x0d3a('0x2f')]['find']({'where':{'id':_0xe83085[_0x0d3a('0x47')]['id']}})[_0x0d3a('0x27')](handleEntityNotFound(_0x287952,null))['then'](removeEntity(_0x287952,null))[_0x0d3a('0x46')](handleError(_0x287952,null));};exports['getSessions']=function(_0x3d2f38,_0x58c24e,_0x3cd3f7){var _0x563bae={'raw':!![],'where':{}};var _0x349ce8={};var _0x42a8f6={'count':0x0,'rows':[]};return db['JscriptyProject'][_0x0d3a('0x58')]({'where':{'id':_0x3d2f38['params']['id']}})['then'](handleEntityNotFound(_0x58c24e,null))['then'](function(_0x3763ec){if(_0x3763ec){_0x349ce8[_0x0d3a('0x36')]=_['keys'](db['JscriptySessionReport'][_0x0d3a('0x48')]);_0x349ce8[_0x0d3a('0x32')]=_['keys'](_0x3d2f38[_0x0d3a('0x32')]);_0x349ce8[_0x0d3a('0x34')]=_[_0x0d3a('0x35')](_0x349ce8['model'],_0x349ce8[_0x0d3a('0x32')]);_0x563bae[_0x0d3a('0x37')]=_[_0x0d3a('0x35')](_0x349ce8['model'],qs[_0x0d3a('0x38')](_0x3d2f38[_0x0d3a('0x32')][_0x0d3a('0x38')]));_0x563bae[_0x0d3a('0x37')]=_0x563bae[_0x0d3a('0x37')]['length']?_0x563bae[_0x0d3a('0x37')]:_0x349ce8[_0x0d3a('0x36')];if(!_0x3d2f38[_0x0d3a('0x32')][_0x0d3a('0x59')](_0x0d3a('0x39'))){_0x563bae[_0x0d3a('0x20')]=qs['limit'](_0x3d2f38[_0x0d3a('0x32')]['limit']);_0x563bae['offset']=qs[_0x0d3a('0x1e')](_0x3d2f38[_0x0d3a('0x32')][_0x0d3a('0x1e')]);}_0x563bae[_0x0d3a('0x3a')]=qs['sort'](_0x3d2f38[_0x0d3a('0x32')][_0x0d3a('0x3b')]);_0x563bae[_0x0d3a('0x3e')]=qs['filters'](_[_0x0d3a('0x3c')](_0x3d2f38[_0x0d3a('0x32')],_0x349ce8[_0x0d3a('0x34')]));_0x563bae[_0x0d3a('0x3e')]['ProjectId']=_0x3763ec['id'];if(_0x3d2f38[_0x0d3a('0x32')][_0x0d3a('0x3d')]){_0x563bae['where']=_[_0x0d3a('0x3f')](_0x563bae['where'],{'$or':_[_0x0d3a('0x2e')](_0x563bae['attributes'],function(_0x3c8646){var _0x434eb0={};_0x434eb0[_0x3c8646]={'$like':'%'+_0x3d2f38[_0x0d3a('0x32')][_0x0d3a('0x3d')]+'%'};return _0x434eb0;})});}_0x563bae=_['merge']({},_0x563bae,_0x3d2f38[_0x0d3a('0x41')]);return db[_0x0d3a('0x5a')]['count']({'where':_0x563bae[_0x0d3a('0x3e')]})[_0x0d3a('0x27')](function(_0x4b9928){_0x42a8f6[_0x0d3a('0x21')]=_0x4b9928;if(_0x3d2f38[_0x0d3a('0x32')][_0x0d3a('0x42')]){_0x563bae[_0x0d3a('0x43')]=[{'all':!![]}];}return db[_0x0d3a('0x5a')][_0x0d3a('0x44')](_0x563bae);})[_0x0d3a('0x27')](function(_0x5508f4){_0x42a8f6['rows']=_0x5508f4;return _0x42a8f6;});}})[_0x0d3a('0x27')](respondWithFilteredResult(_0x58c24e,_0x563bae))[_0x0d3a('0x46')](handleError(_0x58c24e,null));};exports[_0x0d3a('0x5b')]=function(_0x124c84,_0x4a5dd0,_0x1f2017){var _0x1981bc={'raw':!![],'where':{}};var _0xbc7120={};var _0x381e67={'count':0x0,'rows':[]};return db[_0x0d3a('0x2f')][_0x0d3a('0x58')]({'where':{'id':_0x124c84['params']['id']}})[_0x0d3a('0x27')](handleEntityNotFound(_0x4a5dd0,null))[_0x0d3a('0x27')](function(_0x1eb22e){if(_0x1eb22e){_0xbc7120[_0x0d3a('0x36')]=_[_0x0d3a('0x33')](db[_0x0d3a('0x5c')][_0x0d3a('0x48')]);_0xbc7120[_0x0d3a('0x32')]=_[_0x0d3a('0x33')](_0x124c84['query']);_0xbc7120[_0x0d3a('0x34')]=_['intersection'](_0xbc7120['model'],_0xbc7120[_0x0d3a('0x32')]);_0x1981bc[_0x0d3a('0x37')]=_[_0x0d3a('0x35')](_0xbc7120[_0x0d3a('0x36')],qs[_0x0d3a('0x38')](_0x124c84['query'][_0x0d3a('0x38')]));_0x1981bc[_0x0d3a('0x37')]=_0x1981bc[_0x0d3a('0x37')][_0x0d3a('0x53')]?_0x1981bc['attributes']:_0xbc7120[_0x0d3a('0x36')];if(!_0x124c84[_0x0d3a('0x32')][_0x0d3a('0x59')](_0x0d3a('0x39'))){_0x1981bc['limit']=qs[_0x0d3a('0x20')](_0x124c84[_0x0d3a('0x32')][_0x0d3a('0x20')]);_0x1981bc[_0x0d3a('0x1e')]=qs[_0x0d3a('0x1e')](_0x124c84[_0x0d3a('0x32')][_0x0d3a('0x1e')]);}_0x1981bc[_0x0d3a('0x3a')]=qs['sort'](_0x124c84['query'][_0x0d3a('0x3b')]);_0x1981bc[_0x0d3a('0x3e')]=qs['filters'](_[_0x0d3a('0x3c')](_0x124c84[_0x0d3a('0x32')],_0xbc7120['filters']));_0x1981bc[_0x0d3a('0x3e')]['ProjectId']=_0x1eb22e['id'];if(_0x124c84[_0x0d3a('0x32')][_0x0d3a('0x3d')]){_0x1981bc[_0x0d3a('0x3e')]=_[_0x0d3a('0x3f')](_0x1981bc[_0x0d3a('0x3e')],{'$or':_[_0x0d3a('0x2e')](_0x1981bc[_0x0d3a('0x37')],function(_0x44812e){var _0x50c9c9={};_0x50c9c9[_0x44812e]={'$like':'%'+_0x124c84[_0x0d3a('0x32')][_0x0d3a('0x3d')]+'%'};return _0x50c9c9;})});}_0x1981bc=_[_0x0d3a('0x3f')]({},_0x1981bc,_0x124c84[_0x0d3a('0x41')]);return db['JscriptyAnswerReport']['count']({'where':_0x1981bc[_0x0d3a('0x3e')]})['then'](function(_0x343428){_0x381e67['count']=_0x343428;if(_0x124c84[_0x0d3a('0x32')][_0x0d3a('0x42')]){_0x1981bc[_0x0d3a('0x43')]=[{'all':!![]}];}return db[_0x0d3a('0x5c')][_0x0d3a('0x44')](_0x1981bc);})[_0x0d3a('0x27')](function(_0x125fae){_0x381e67[_0x0d3a('0x45')]=_0x125fae;return _0x381e67;});}})[_0x0d3a('0x27')](respondWithFilteredResult(_0x4a5dd0,_0x1981bc))[_0x0d3a('0x46')](handleError(_0x4a5dd0,null));};function char(_0x493fac){return'number'===typeof _0x493fac?String[_0x0d3a('0x5d')][_0x0d3a('0x23')](null,arguments):_0x493fac;}function needsEncapsulation(_0x1163cb){return!!_0x1163cb&&(_0x1163cb['toString']()['indexOf'](char(0xd))>=0x0||_0x1163cb['toString']()[_0x0d3a('0x5e')](char(0xa))>=0x0||_0x1163cb[_0x0d3a('0x5f')]()[_0x0d3a('0x5e')](char(0x2c))>=0x0||_0x1163cb[_0x0d3a('0x5f')]()[_0x0d3a('0x5e')](char(0x22))>=0x0);}function encapsulate(_0x224282){var _0x22fc98=char(0x22),_0x35b787='\x5c'+char(0x22),_0x3c24fd=_0x224282[_0x0d3a('0x5f')]()[_0x0d3a('0x60')](new RegExp(_0x22fc98,'g'),_0x35b787);return _0x22fc98+_0x3c24fd+_0x22fc98;}exports[_0x0d3a('0x61')]=function(_0x4f6c86,_0x48f300,_0x1bb91d){var _0x322c28,_0x173b0e;var _0x2cffef={'where':{'ProjectId':_0x4f6c86[_0x0d3a('0x47')]['id']}};if(_0x4f6c86[_0x0d3a('0x32')][_0x0d3a('0x62')]){_0x2cffef[_0x0d3a('0x3e')][_0x0d3a('0x63')]=JSON[_0x0d3a('0x64')](_0x4f6c86[_0x0d3a('0x32')][_0x0d3a('0x62')]);}return db[_0x0d3a('0x5a')][_0x0d3a('0x44')](_0x2cffef)['then'](handleEntityNotFound(_0x48f300,null))['then'](function(_0x38c54a){if(_0x38c54a){_0x322c28=_0x38c54a;return db[_0x0d3a('0x65')][_0x0d3a('0x44')]({'where':{'SessionId':{'$in':_[_0x0d3a('0x2e')](_0x322c28,'id')},'ProjectId':_0x4f6c86[_0x0d3a('0x47')]['id']},'order':_0x0d3a('0x66')});}})[_0x0d3a('0x27')](handleEntityNotFound(_0x48f300,null))['then'](function(_0x55d804){if(_0x55d804){_0x173b0e=_0x55d804;var _0x148d35={};for(var _0x2a80ce=0x0,_0x1a4aeb=_0x173b0e['length'];_0x2a80ce<_0x1a4aeb;_0x2a80ce++){if(!_0x148d35[_0x0d3a('0x59')](_0x173b0e[_0x2a80ce]['questionId'])){_0x148d35[_0x173b0e[_0x2a80ce][_0x0d3a('0x67')]]=needsEncapsulation(_0x173b0e[_0x2a80ce]['question'])?encapsulate(_0x173b0e[_0x2a80ce][_0x0d3a('0x68')]):_0x173b0e[_0x2a80ce][_0x0d3a('0x68')];}}var _0x568bc7=[],_0x2e9f44={};for(var _0x227ec5=0x0,_0x552b94=_0x322c28[_0x0d3a('0x53')];_0x227ec5<_0x552b94;_0x227ec5++){_0x2e9f44={'ProjectId':_0x4f6c86[_0x0d3a('0x47')]['id'],'SessionId':_0x322c28[_0x227ec5]['id'],'StartTime':moment(_0x322c28[_0x227ec5][_0x0d3a('0x63')])[_0x0d3a('0x69')](_0x0d3a('0x6a'))};for(var _0x492853=0x0,_0x17cc1d=_0x173b0e['length'];_0x492853<_0x17cc1d;_0x492853++){if(_0x173b0e[_0x492853][_0x0d3a('0x6b')]==_0x322c28[_0x227ec5]['id']&&_0x148d35[_0x0d3a('0x59')](_0x173b0e[_0x492853][_0x0d3a('0x67')])){_0x2e9f44[_0x148d35[_0x173b0e[_0x492853][_0x0d3a('0x67')]]]=_0x173b0e[_0x492853][_0x0d3a('0x6c')];}}for(var _0x5bbfed in _0x148d35){if(!_0x2e9f44[_0x0d3a('0x59')](_0x148d35[_0x5bbfed])){_0x2e9f44[_0x148d35[_0x5bbfed]]=null;}}_0x568bc7[_0x0d3a('0x6d')](_0x2e9f44);}return _0x568bc7;}})['then'](function(_0x1f187b){if(!_[_0x0d3a('0x6e')](_0x1f187b)){var _0x51e6c9=toCsv(_0x1f187b);var _0x5632f3=Date[_0x0d3a('0x6f')]();fs['writeFileSync'](util[_0x0d3a('0x69')](_0x0d3a('0x70'),_0x4f6c86[_0x0d3a('0x47')]['id'],_0x5632f3),_0x51e6c9);_0x48f300[_0x0d3a('0x71')](_0x0d3a('0x72'),_0x0d3a('0x73')+util[_0x0d3a('0x69')](_0x0d3a('0x74'),_0x4f6c86[_0x0d3a('0x47')]['id'],_0x5632f3));_0x48f300[_0x0d3a('0x71')](_0x0d3a('0x75'),'text/csv');return _0x48f300[_0x0d3a('0x76')](util[_0x0d3a('0x69')](_0x0d3a('0x70'),_0x4f6c86[_0x0d3a('0x47')]['id'],_0x5632f3));}else{return _0x48f300['sendStatus'](0xcc);}})[_0x0d3a('0x46')](handleError(_0x48f300,null));};
\ No newline at end of file
+var _0xb921=['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/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','update','then','destroy','UserProfileResource','error','name','index','map','JscriptyProject','fieldName','type','key','model','keys','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','rawAttributes','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Projects','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','includeAll','omit','updatedAt','createdAt','userProfileId','getSessions','findOne','JscriptySessionReport','order','ProjectId','getAnswers','JscriptyAnswerReport','number','fromCharCode','apply','indexOf','toString','replace','getSummary','startTime','starttime','parse','-createdAt','questionId','question','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','push','isEmpty','writeFileSync','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','/tmp/Jscripty_Project_%d_Summary_%s.csv','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x4c97c3,_0x38dd8d){var _0x46b69c=function(_0xf8b524){while(--_0xf8b524){_0x4c97c3['push'](_0x4c97c3['shift']());}};_0x46b69c(++_0x38dd8d);}(_0xb921,0x16a));var _0x1b92=function(_0x489187,_0x3f382b){_0x489187=_0x489187-0x0;var _0x4a332e=_0xb921[_0x489187];return _0x4a332e;};'use strict';var emlformat=require(_0x1b92('0x0'));var rimraf=require(_0x1b92('0x1'));var zipdir=require(_0x1b92('0x2'));var jsonpatch=require(_0x1b92('0x3'));var rp=require(_0x1b92('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x1b92('0x5'));var util=require(_0x1b92('0x6'));var path=require(_0x1b92('0x7'));var sox=require(_0x1b92('0x8'));var csv=require(_0x1b92('0x9'));var ejs=require(_0x1b92('0xa'));var fs=require('fs');var fs_extra=require(_0x1b92('0xb'));var _=require(_0x1b92('0xc'));var squel=require(_0x1b92('0xd'));var crypto=require(_0x1b92('0xe'));var jsforce=require(_0x1b92('0xf'));var deskjs=require(_0x1b92('0x10'));var toCsv=require(_0x1b92('0x9'));var querystring=require(_0x1b92('0x11'));var Papa=require(_0x1b92('0x12'));var Redis=require('ioredis');var authService=require(_0x1b92('0x13'));var qs=require(_0x1b92('0x14'));var as=require(_0x1b92('0x15'));var hardwareService=require(_0x1b92('0x16'));var logger=require(_0x1b92('0x17'))(_0x1b92('0x18'));var utils=require(_0x1b92('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x1b92('0x1a'));var db=require(_0x1b92('0x1b'))['db'];function respondWithStatusCode(_0x5a1ca5,_0x81cbe0){_0x81cbe0=_0x81cbe0||0xcc;return function(_0x29a7ed){if(_0x29a7ed){return _0x5a1ca5[_0x1b92('0x1c')](_0x81cbe0);}return _0x5a1ca5[_0x1b92('0x1d')](_0x81cbe0)[_0x1b92('0x1e')]();};}function respondWithResult(_0x290be6,_0x1d33bf){_0x1d33bf=_0x1d33bf||0xc8;return function(_0x4bbb76){if(_0x4bbb76){return _0x290be6[_0x1b92('0x1d')](_0x1d33bf)['json'](_0x4bbb76);}};}function respondWithFilteredResult(_0x1a559b,_0x511a97){return function(_0x694d4f){if(_0x694d4f){var _0x523285=typeof _0x511a97[_0x1b92('0x1f')]===_0x1b92('0x20')&&typeof _0x511a97[_0x1b92('0x21')]==='undefined';var _0x2d171f=_0x694d4f[_0x1b92('0x22')];var _0x289523=_0x523285?0x0:_0x511a97[_0x1b92('0x1f')];var _0x4368dc=_0x523285?_0x694d4f['count']:_0x511a97[_0x1b92('0x1f')]+_0x511a97[_0x1b92('0x21')];var _0x30b0d8;if(_0x4368dc>=_0x2d171f){_0x4368dc=_0x2d171f;_0x30b0d8=0xc8;}else{_0x30b0d8=0xce;}_0x1a559b['status'](_0x30b0d8);return _0x1a559b[_0x1b92('0x23')](_0x1b92('0x24'),_0x289523+'-'+_0x4368dc+'/'+_0x2d171f)[_0x1b92('0x25')](_0x694d4f);}return null;};}function patchUpdates(_0x4bfc51){return function(_0x1d9d28){try{jsonpatch['apply'](_0x1d9d28,_0x4bfc51,!![]);}catch(_0x39ef4e){return BPromise[_0x1b92('0x26')](_0x39ef4e);}return _0x1d9d28['save']();};}function saveUpdates(_0x4ea25f,_0x34c5c9){return function(_0x311487){if(_0x311487){return _0x311487[_0x1b92('0x27')](_0x4ea25f)[_0x1b92('0x28')](function(_0x41fc82){return _0x41fc82;});}return null;};}function removeEntity(_0x186030,_0x48cdf1){return function(_0x3be220){if(_0x3be220){return _0x3be220[_0x1b92('0x29')]()[_0x1b92('0x28')](function(){var _0x39dcaa=_0x3be220['get']({'plain':!![]});var _0x3f0e1b='Projects';return db[_0x1b92('0x2a')][_0x1b92('0x29')]({'where':{'type':_0x3f0e1b,'resourceId':_0x39dcaa['id']}})[_0x1b92('0x28')](function(){return _0x3be220;});})[_0x1b92('0x28')](function(){_0x186030[_0x1b92('0x1d')](0xcc)[_0x1b92('0x1e')]();});}};}function handleEntityNotFound(_0xa56a28,_0x44f379){return function(_0x4edbce){if(!_0x4edbce){_0xa56a28['sendStatus'](0x194);}return _0x4edbce;};}function handleError(_0x54d92c,_0x229c44){_0x229c44=_0x229c44||0x1f4;return function(_0x525d05){logger[_0x1b92('0x2b')](_0x525d05['stack']);if(_0x525d05[_0x1b92('0x2c')]){delete _0x525d05[_0x1b92('0x2c')];}_0x54d92c[_0x1b92('0x1d')](_0x229c44)['send'](_0x525d05);};}exports[_0x1b92('0x2d')]=function(_0x6f9678,_0x55eafd){var _0x544105={},_0x477498={},_0x3740e1={'count':0x0,'rows':[]};var _0x165f93=_[_0x1b92('0x2e')](db[_0x1b92('0x2f')]['rawAttributes'],function(_0x1f38f3){return{'name':_0x1f38f3[_0x1b92('0x30')],'type':_0x1f38f3[_0x1b92('0x31')][_0x1b92('0x32')]};});_0x477498[_0x1b92('0x33')]=_[_0x1b92('0x2e')](_0x165f93,_0x1b92('0x2c'));_0x477498['query']=_[_0x1b92('0x34')](_0x6f9678[_0x1b92('0x35')]);_0x477498['filters']=_[_0x1b92('0x36')](_0x477498[_0x1b92('0x33')],_0x477498[_0x1b92('0x35')]);_0x544105['attributes']=_[_0x1b92('0x36')](_0x477498[_0x1b92('0x33')],qs['fields'](_0x6f9678['query'][_0x1b92('0x37')]));_0x544105[_0x1b92('0x38')]=_0x544105[_0x1b92('0x38')][_0x1b92('0x39')]?_0x544105['attributes']:_0x477498['model'];if(!_0x6f9678['query'][_0x1b92('0x3a')](_0x1b92('0x3b'))){_0x544105[_0x1b92('0x21')]=qs[_0x1b92('0x21')](_0x6f9678[_0x1b92('0x35')][_0x1b92('0x21')]);_0x544105[_0x1b92('0x1f')]=qs['offset'](_0x6f9678[_0x1b92('0x35')][_0x1b92('0x1f')]);}_0x544105['order']=qs[_0x1b92('0x3c')](_0x6f9678[_0x1b92('0x35')][_0x1b92('0x3c')]);_0x544105[_0x1b92('0x3d')]=qs[_0x1b92('0x3e')](_[_0x1b92('0x3f')](_0x6f9678[_0x1b92('0x35')],_0x477498[_0x1b92('0x3e')]),_0x165f93);if(_0x6f9678[_0x1b92('0x35')][_0x1b92('0x40')]){_0x544105['where']=_[_0x1b92('0x41')](_0x544105['where'],{'$or':_[_0x1b92('0x2e')](_0x165f93,function(_0x588b3c){if(_0x588b3c[_0x1b92('0x31')]!==_0x1b92('0x42')){var _0x25e709={};_0x25e709[_0x588b3c[_0x1b92('0x2c')]]={'$like':'%'+_0x6f9678[_0x1b92('0x35')][_0x1b92('0x40')]+'%'};return _0x25e709;}})});}_0x544105=_[_0x1b92('0x41')]({},_0x544105,_0x6f9678[_0x1b92('0x43')]);var _0x46b06b={'where':_0x544105['where']};return db[_0x1b92('0x2f')]['count'](_0x46b06b)[_0x1b92('0x28')](function(_0x1e945){_0x3740e1[_0x1b92('0x22')]=_0x1e945;if(_0x6f9678[_0x1b92('0x35')]['includeAll']){_0x544105[_0x1b92('0x44')]=[{'all':!![]}];}return db[_0x1b92('0x2f')][_0x1b92('0x45')](_0x544105);})[_0x1b92('0x28')](function(_0xd3f7b0){_0x3740e1[_0x1b92('0x46')]=_0xd3f7b0;return _0x3740e1;})['then'](respondWithFilteredResult(_0x55eafd,_0x544105))[_0x1b92('0x47')](handleError(_0x55eafd,null));};exports[_0x1b92('0x48')]=function(_0x2dcd14,_0x1cb316){var _0x3f77c3={'raw':![],'where':{'id':_0x2dcd14['params']['id']}},_0x2bb12f={};_0x2bb12f[_0x1b92('0x33')]=_[_0x1b92('0x34')](db['JscriptyProject'][_0x1b92('0x49')]);_0x2bb12f['query']=_[_0x1b92('0x34')](_0x2dcd14[_0x1b92('0x35')]);_0x2bb12f[_0x1b92('0x3e')]=_['intersection'](_0x2bb12f[_0x1b92('0x33')],_0x2bb12f[_0x1b92('0x35')]);_0x3f77c3['attributes']=_['intersection'](_0x2bb12f['model'],qs[_0x1b92('0x37')](_0x2dcd14[_0x1b92('0x35')][_0x1b92('0x37')]));_0x3f77c3[_0x1b92('0x38')]=_0x3f77c3[_0x1b92('0x38')][_0x1b92('0x39')]?_0x3f77c3['attributes']:_0x2bb12f[_0x1b92('0x33')];if(_0x2dcd14[_0x1b92('0x35')]['includeAll']){_0x3f77c3[_0x1b92('0x44')]=[{'all':!![]}];}_0x3f77c3=_[_0x1b92('0x41')]({},_0x3f77c3,_0x2dcd14[_0x1b92('0x43')]);return db['JscriptyProject'][_0x1b92('0x4a')](_0x3f77c3)[_0x1b92('0x28')](handleEntityNotFound(_0x1cb316,null))[_0x1b92('0x28')](respondWithResult(_0x1cb316,null))[_0x1b92('0x47')](handleError(_0x1cb316,null));};exports[_0x1b92('0x4b')]=function(_0x5ac096,_0x142d28){return db[_0x1b92('0x2f')][_0x1b92('0x4b')](_0x5ac096[_0x1b92('0x4c')],{})[_0x1b92('0x28')](function(_0x515292){var _0x5c5ebf=_0x5ac096[_0x1b92('0x4d')][_0x1b92('0x4e')]({'plain':!![]});if(!_0x5c5ebf)throw new Error(_0x1b92('0x4f'));if(_0x5c5ebf[_0x1b92('0x50')]==='user'){var _0x4e0954=_0x515292[_0x1b92('0x4e')]({'plain':!![]});var _0x5e10fa=_0x1b92('0x51');return db[_0x1b92('0x52')][_0x1b92('0x4a')]({'where':{'name':_0x5e10fa,'userProfileId':_0x5c5ebf['userProfileId']},'raw':!![]})[_0x1b92('0x28')](function(_0x559e3c){if(_0x559e3c&&_0x559e3c[_0x1b92('0x53')]===0x0){return db[_0x1b92('0x2a')][_0x1b92('0x4b')]({'name':_0x4e0954[_0x1b92('0x2c')],'resourceId':_0x4e0954['id'],'type':_0x559e3c[_0x1b92('0x2c')],'sectionId':_0x559e3c['id']},{})[_0x1b92('0x28')](function(){return _0x515292;});}else{return _0x515292;}})['catch'](function(_0x140202){logger['error'](_0x1b92('0x54'),_0x140202);throw _0x140202;});}return _0x515292;})[_0x1b92('0x28')](respondWithResult(_0x142d28,0xc9))[_0x1b92('0x47')](handleError(_0x142d28,null));};exports[_0x1b92('0x55')]=function(_0x376a9c,_0x3cab8e){var _0x306395={'where':{'id':_0x376a9c[_0x1b92('0x56')]['id']}},_0x32d994={};_0x32d994[_0x1b92('0x33')]=_[_0x1b92('0x34')](db[_0x1b92('0x2f')][_0x1b92('0x49')]);_0x306395[_0x1b92('0x38')]=_[_0x1b92('0x36')](_0x32d994[_0x1b92('0x33')],qs[_0x1b92('0x37')](_0x376a9c[_0x1b92('0x35')][_0x1b92('0x37')]));_0x306395[_0x1b92('0x38')]=_0x306395['attributes'][_0x1b92('0x39')]?_0x306395[_0x1b92('0x38')]:_0x32d994['model'];if(_0x376a9c[_0x1b92('0x35')][_0x1b92('0x57')]){_0x306395['include']=[{'all':!![]}];}_0x306395=_['merge']({},_0x306395,_0x376a9c[_0x1b92('0x43')]);return db[_0x1b92('0x2f')]['find'](_0x306395)[_0x1b92('0x28')](handleEntityNotFound(_0x3cab8e,null))[_0x1b92('0x28')](function(_0x1519d7){if(_0x1519d7){var _0x33069d=_0x1519d7[_0x1b92('0x4e')]({'plain':!![]});_0x33069d=qs[_0x1b92('0x58')](_0x33069d,['id','createdAt',_0x1b92('0x59')]);_0x376a9c['body']=_['omit'](_0x376a9c[_0x1b92('0x4c')],['id',_0x1b92('0x5a'),_0x1b92('0x59')]);return db[_0x1b92('0x2f')][_0x1b92('0x4b')](_[_0x1b92('0x41')](_0x33069d,_0x376a9c[_0x1b92('0x4c')]),{'include':_0x376a9c[_0x1b92('0x35')][_0x1b92('0x57')]?[{'all':!![]}]:undefined})[_0x1b92('0x28')](function(_0x587956){var _0x3ad925=_0x376a9c[_0x1b92('0x4d')][_0x1b92('0x4e')]({'plain':!![]});if(!_0x3ad925)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3ad925['role']===_0x1b92('0x4d')){var _0x1b5c91=_0x587956[_0x1b92('0x4e')]({'plain':!![]});var _0x456f8c=_0x1b92('0x51');return db[_0x1b92('0x52')][_0x1b92('0x4a')]({'where':{'name':_0x456f8c,'userProfileId':_0x3ad925[_0x1b92('0x5b')]},'raw':!![]})[_0x1b92('0x28')](function(_0x406dd4){if(_0x406dd4&&_0x406dd4[_0x1b92('0x53')]===0x0){return db[_0x1b92('0x2a')]['create']({'name':_0x1b5c91[_0x1b92('0x2c')],'resourceId':_0x1b5c91['id'],'type':_0x406dd4[_0x1b92('0x2c')],'sectionId':_0x406dd4['id']},{})['then'](function(){return _0x587956;});}else{return _0x587956;}})[_0x1b92('0x47')](function(_0x46d1e9){logger['error'](_0x1b92('0x54'),_0x46d1e9);throw _0x46d1e9;});}return _0x587956;});}})[_0x1b92('0x28')](respondWithResult(_0x3cab8e,0xc9))[_0x1b92('0x47')](handleError(_0x3cab8e,null));};exports[_0x1b92('0x27')]=function(_0x2540d2,_0x590426){if(_0x2540d2['body']['id']){delete _0x2540d2['body']['id'];}return db['JscriptyProject'][_0x1b92('0x4a')]({'where':{'id':_0x2540d2[_0x1b92('0x56')]['id']}})[_0x1b92('0x28')](handleEntityNotFound(_0x590426,null))[_0x1b92('0x28')](saveUpdates(_0x2540d2['body'],null))[_0x1b92('0x28')](respondWithResult(_0x590426,null))[_0x1b92('0x47')](handleError(_0x590426,null));};exports['destroy']=function(_0x31977e,_0x51a2a1){return db['JscriptyProject'][_0x1b92('0x4a')]({'where':{'id':_0x31977e['params']['id']}})[_0x1b92('0x28')](handleEntityNotFound(_0x51a2a1,null))[_0x1b92('0x28')](removeEntity(_0x51a2a1,null))[_0x1b92('0x47')](handleError(_0x51a2a1,null));};exports[_0x1b92('0x5c')]=function(_0x197a4b,_0xd092bb,_0x5b408e){var _0x1e5951={'raw':!![],'where':{}};var _0x1bab85={};var _0xc0a853={'count':0x0,'rows':[]};return db[_0x1b92('0x2f')][_0x1b92('0x5d')]({'where':{'id':_0x197a4b['params']['id']}})['then'](handleEntityNotFound(_0xd092bb,null))[_0x1b92('0x28')](function(_0x22e1b2){if(_0x22e1b2){_0x1bab85[_0x1b92('0x33')]=_[_0x1b92('0x34')](db[_0x1b92('0x5e')][_0x1b92('0x49')]);_0x1bab85[_0x1b92('0x35')]=_[_0x1b92('0x34')](_0x197a4b[_0x1b92('0x35')]);_0x1bab85['filters']=_[_0x1b92('0x36')](_0x1bab85[_0x1b92('0x33')],_0x1bab85[_0x1b92('0x35')]);_0x1e5951[_0x1b92('0x38')]=_[_0x1b92('0x36')](_0x1bab85[_0x1b92('0x33')],qs[_0x1b92('0x37')](_0x197a4b['query'][_0x1b92('0x37')]));_0x1e5951['attributes']=_0x1e5951['attributes'][_0x1b92('0x39')]?_0x1e5951[_0x1b92('0x38')]:_0x1bab85[_0x1b92('0x33')];if(!_0x197a4b[_0x1b92('0x35')]['hasOwnProperty']('nolimit')){_0x1e5951[_0x1b92('0x21')]=qs[_0x1b92('0x21')](_0x197a4b['query'][_0x1b92('0x21')]);_0x1e5951[_0x1b92('0x1f')]=qs[_0x1b92('0x1f')](_0x197a4b[_0x1b92('0x35')][_0x1b92('0x1f')]);}_0x1e5951[_0x1b92('0x5f')]=qs['sort'](_0x197a4b[_0x1b92('0x35')][_0x1b92('0x3c')]);_0x1e5951[_0x1b92('0x3d')]=qs[_0x1b92('0x3e')](_[_0x1b92('0x3f')](_0x197a4b['query'],_0x1bab85[_0x1b92('0x3e')]));_0x1e5951[_0x1b92('0x3d')][_0x1b92('0x60')]=_0x22e1b2['id'];if(_0x197a4b[_0x1b92('0x35')]['filter']){_0x1e5951[_0x1b92('0x3d')]=_[_0x1b92('0x41')](_0x1e5951['where'],{'$or':_[_0x1b92('0x2e')](_0x1e5951[_0x1b92('0x38')],function(_0x23958a){var _0x2fb82b={};_0x2fb82b[_0x23958a]={'$like':'%'+_0x197a4b[_0x1b92('0x35')][_0x1b92('0x40')]+'%'};return _0x2fb82b;})});}_0x1e5951=_['merge']({},_0x1e5951,_0x197a4b[_0x1b92('0x43')]);return db[_0x1b92('0x5e')][_0x1b92('0x22')]({'where':_0x1e5951[_0x1b92('0x3d')]})[_0x1b92('0x28')](function(_0x2fa5d9){_0xc0a853[_0x1b92('0x22')]=_0x2fa5d9;if(_0x197a4b['query'][_0x1b92('0x57')]){_0x1e5951[_0x1b92('0x44')]=[{'all':!![]}];}return db[_0x1b92('0x5e')]['findAll'](_0x1e5951);})[_0x1b92('0x28')](function(_0x17bde5){_0xc0a853[_0x1b92('0x46')]=_0x17bde5;return _0xc0a853;});}})[_0x1b92('0x28')](respondWithFilteredResult(_0xd092bb,_0x1e5951))[_0x1b92('0x47')](handleError(_0xd092bb,null));};exports[_0x1b92('0x61')]=function(_0x685d82,_0x452284,_0x5c6586){var _0x334e3a={'raw':!![],'where':{}};var _0x558978={};var _0x22b84e={'count':0x0,'rows':[]};return db[_0x1b92('0x2f')][_0x1b92('0x5d')]({'where':{'id':_0x685d82[_0x1b92('0x56')]['id']}})[_0x1b92('0x28')](handleEntityNotFound(_0x452284,null))['then'](function(_0x1b74f3){if(_0x1b74f3){_0x558978[_0x1b92('0x33')]=_[_0x1b92('0x34')](db[_0x1b92('0x62')][_0x1b92('0x49')]);_0x558978[_0x1b92('0x35')]=_[_0x1b92('0x34')](_0x685d82[_0x1b92('0x35')]);_0x558978[_0x1b92('0x3e')]=_[_0x1b92('0x36')](_0x558978['model'],_0x558978[_0x1b92('0x35')]);_0x334e3a[_0x1b92('0x38')]=_[_0x1b92('0x36')](_0x558978['model'],qs[_0x1b92('0x37')](_0x685d82[_0x1b92('0x35')]['fields']));_0x334e3a[_0x1b92('0x38')]=_0x334e3a['attributes'][_0x1b92('0x39')]?_0x334e3a['attributes']:_0x558978['model'];if(!_0x685d82['query'][_0x1b92('0x3a')](_0x1b92('0x3b'))){_0x334e3a[_0x1b92('0x21')]=qs[_0x1b92('0x21')](_0x685d82[_0x1b92('0x35')]['limit']);_0x334e3a[_0x1b92('0x1f')]=qs[_0x1b92('0x1f')](_0x685d82[_0x1b92('0x35')][_0x1b92('0x1f')]);}_0x334e3a[_0x1b92('0x5f')]=qs['sort'](_0x685d82[_0x1b92('0x35')][_0x1b92('0x3c')]);_0x334e3a[_0x1b92('0x3d')]=qs[_0x1b92('0x3e')](_[_0x1b92('0x3f')](_0x685d82[_0x1b92('0x35')],_0x558978[_0x1b92('0x3e')]));_0x334e3a[_0x1b92('0x3d')]['ProjectId']=_0x1b74f3['id'];if(_0x685d82[_0x1b92('0x35')]['filter']){_0x334e3a[_0x1b92('0x3d')]=_['merge'](_0x334e3a[_0x1b92('0x3d')],{'$or':_[_0x1b92('0x2e')](_0x334e3a['attributes'],function(_0xb08603){var _0x21466a={};_0x21466a[_0xb08603]={'$like':'%'+_0x685d82[_0x1b92('0x35')][_0x1b92('0x40')]+'%'};return _0x21466a;})});}_0x334e3a=_[_0x1b92('0x41')]({},_0x334e3a,_0x685d82[_0x1b92('0x43')]);return db[_0x1b92('0x62')][_0x1b92('0x22')]({'where':_0x334e3a[_0x1b92('0x3d')]})['then'](function(_0x159bc8){_0x22b84e[_0x1b92('0x22')]=_0x159bc8;if(_0x685d82[_0x1b92('0x35')]['includeAll']){_0x334e3a['include']=[{'all':!![]}];}return db['JscriptyAnswerReport']['findAll'](_0x334e3a);})[_0x1b92('0x28')](function(_0x22ea06){_0x22b84e[_0x1b92('0x46')]=_0x22ea06;return _0x22b84e;});}})['then'](respondWithFilteredResult(_0x452284,_0x334e3a))[_0x1b92('0x47')](handleError(_0x452284,null));};function char(_0x121aac){return _0x1b92('0x63')===typeof _0x121aac?String[_0x1b92('0x64')][_0x1b92('0x65')](null,arguments):_0x121aac;}function needsEncapsulation(_0x341b0d){return!!_0x341b0d&&(_0x341b0d['toString']()[_0x1b92('0x66')](char(0xd))>=0x0||_0x341b0d[_0x1b92('0x67')]()[_0x1b92('0x66')](char(0xa))>=0x0||_0x341b0d['toString']()[_0x1b92('0x66')](char(0x2c))>=0x0||_0x341b0d[_0x1b92('0x67')]()[_0x1b92('0x66')](char(0x22))>=0x0);}function encapsulate(_0x41b264){var _0x550cb4=char(0x22),_0x4d8dd1='\x5c'+char(0x22),_0x9fd44d=_0x41b264[_0x1b92('0x67')]()[_0x1b92('0x68')](new RegExp(_0x550cb4,'g'),_0x4d8dd1);return _0x550cb4+_0x9fd44d+_0x550cb4;}exports[_0x1b92('0x69')]=function(_0x2624ef,_0x5befe5,_0x43f256){var _0xf2629a,_0x40b0a3;var _0x186d97={'where':{'ProjectId':_0x2624ef[_0x1b92('0x56')]['id']}};if(_0x2624ef[_0x1b92('0x35')][_0x1b92('0x6a')]){_0x186d97[_0x1b92('0x3d')][_0x1b92('0x6b')]=JSON[_0x1b92('0x6c')](_0x2624ef[_0x1b92('0x35')][_0x1b92('0x6a')]);}return db[_0x1b92('0x5e')][_0x1b92('0x45')](_0x186d97)['then'](handleEntityNotFound(_0x5befe5,null))[_0x1b92('0x28')](function(_0x3ab527){if(_0x3ab527){_0xf2629a=_0x3ab527;return db['JscriptyQuestionReport']['findAll']({'where':{'SessionId':{'$in':_['map'](_0xf2629a,'id')},'ProjectId':_0x2624ef[_0x1b92('0x56')]['id']},'order':_0x1b92('0x6d')});}})['then'](handleEntityNotFound(_0x5befe5,null))[_0x1b92('0x28')](function(_0x37c820){if(_0x37c820){_0x40b0a3=_0x37c820;var _0x319aca={};for(var _0x51133b=0x0,_0xdfaaff=_0x40b0a3[_0x1b92('0x39')];_0x51133b<_0xdfaaff;_0x51133b++){if(!_0x319aca[_0x1b92('0x3a')](_0x40b0a3[_0x51133b][_0x1b92('0x6e')])){_0x319aca[_0x40b0a3[_0x51133b][_0x1b92('0x6e')]]=needsEncapsulation(_0x40b0a3[_0x51133b][_0x1b92('0x6f')])?encapsulate(_0x40b0a3[_0x51133b]['question']):_0x40b0a3[_0x51133b][_0x1b92('0x6f')];}}var _0x172083=[],_0x1d7232={};for(var _0x51cd82=0x0,_0x418a0c=_0xf2629a[_0x1b92('0x39')];_0x51cd82<_0x418a0c;_0x51cd82++){_0x1d7232={'ProjectId':_0x2624ef['params']['id'],'SessionId':_0xf2629a[_0x51cd82]['id'],'StartTime':moment(_0xf2629a[_0x51cd82][_0x1b92('0x6b')])[_0x1b92('0x70')](_0x1b92('0x71'))};for(var _0x2b3fa0=0x0,_0x7e13b0=_0x40b0a3[_0x1b92('0x39')];_0x2b3fa0<_0x7e13b0;_0x2b3fa0++){if(_0x40b0a3[_0x2b3fa0][_0x1b92('0x72')]==_0xf2629a[_0x51cd82]['id']&&_0x319aca[_0x1b92('0x3a')](_0x40b0a3[_0x2b3fa0]['questionId'])){_0x1d7232[_0x319aca[_0x40b0a3[_0x2b3fa0][_0x1b92('0x6e')]]]=_0x40b0a3[_0x2b3fa0]['answer'];}}for(var _0x34ad43 in _0x319aca){if(!_0x1d7232['hasOwnProperty'](_0x319aca[_0x34ad43])){_0x1d7232[_0x319aca[_0x34ad43]]=null;}}_0x172083[_0x1b92('0x73')](_0x1d7232);}return _0x172083;}})[_0x1b92('0x28')](function(_0x1bbdb1){if(!_[_0x1b92('0x74')](_0x1bbdb1)){var _0x1b4733=toCsv(_0x1bbdb1);var _0x3573fb=Date['now']();fs[_0x1b92('0x75')](util[_0x1b92('0x70')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x2624ef[_0x1b92('0x56')]['id'],_0x3573fb),_0x1b4733);_0x5befe5[_0x1b92('0x76')](_0x1b92('0x77'),_0x1b92('0x78')+util['format'](_0x1b92('0x79'),_0x2624ef[_0x1b92('0x56')]['id'],_0x3573fb));_0x5befe5[_0x1b92('0x76')](_0x1b92('0x7a'),_0x1b92('0x7b'));return _0x5befe5['download'](util[_0x1b92('0x70')](_0x1b92('0x7c'),_0x2624ef['params']['id'],_0x3573fb));}else{return _0x5befe5[_0x1b92('0x1c')](0xcc);}})['catch'](handleError(_0x5befe5,null));};
\ No newline at end of file
index 6038d16..8dca35d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23d3=['../../config/environment','exports','define','jscripty_projects','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0x4fc9e6,_0xc51915){var _0x551d28=function(_0x1a603b){while(--_0x1a603b){_0x4fc9e6['push'](_0x4fc9e6['shift']());}};_0x551d28(++_0xc51915);}(_0x23d3,0xe8));var _0x323d=function(_0x1d3e5d,_0x46e7a2){_0x1d3e5d=_0x1d3e5d-0x0;var _0x19dbfc=_0x23d3[_0x1d3e5d];return _0x19dbfc;};'use strict';var _=require(_0x323d('0x0'));var util=require(_0x323d('0x1'));var logger=require(_0x323d('0x2'))('api');var moment=require(_0x323d('0x3'));var BPromise=require(_0x323d('0x4'));var rp=require(_0x323d('0x5'));var fs=require('fs');var path=require(_0x323d('0x6'));var rimraf=require(_0x323d('0x7'));var config=require(_0x323d('0x8'));var attributes=require('./jscriptyProject.attributes');module[_0x323d('0x9')]=function(_0x34f513,_0x160a18){return _0x34f513[_0x323d('0xa')]('JscriptyProject',attributes,{'tableName':_0x323d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8403=['rimraf','./jscriptyProject.attributes','exports','define','JscriptyProject','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x101e7b,_0x4ef05b){var _0x4995c0=function(_0x1a6488){while(--_0x1a6488){_0x101e7b['push'](_0x101e7b['shift']());}};_0x4995c0(++_0x4ef05b);}(_0x8403,0x1a5));var _0x3840=function(_0x181f26,_0x2aab0e){_0x181f26=_0x181f26-0x0;var _0x9e938=_0x8403[_0x181f26];return _0x9e938;};'use strict';var _=require(_0x3840('0x0'));var util=require(_0x3840('0x1'));var logger=require(_0x3840('0x2'))(_0x3840('0x3'));var moment=require(_0x3840('0x4'));var BPromise=require(_0x3840('0x5'));var rp=require(_0x3840('0x6'));var fs=require('fs');var path=require(_0x3840('0x7'));var rimraf=require(_0x3840('0x8'));var config=require('../../config/environment');var attributes=require(_0x3840('0x9'));module[_0x3840('0xa')]=function(_0x1cd658,_0x233be3){return _0x1cd658[_0x3840('0xb')](_0x3840('0xc'),attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c1e3823..a78c2c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x387dc1,_0x3ba649){var _0x17567c=function(_0x4690aa){while(--_0x4690aa){_0x387dc1['push'](_0x387dc1['shift']());}};_0x17567c(++_0x3ba649);}(_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
+var _0xa9e0=['http','info','JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\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(_0x470a27,_0x5d5e32){var _0xfe1ad1=function(_0x455995){while(--_0x455995){_0x470a27['push'](_0x470a27['shift']());}};_0xfe1ad1(++_0x5d5e32);}(_0xa9e0,0x123));var _0x0a9e=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xa9e0[_0x19e35c];return _0x3e1fe8;};'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 b0d9a3d..55722f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4892=['/describe','describe','show','create','put','/:id','update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','get','isAuthenticated','index'];(function(_0xd569d6,_0x3046e6){var _0x25aa7d=function(_0x21058f){while(--_0x21058f){_0xd569d6['push'](_0xd569d6['shift']());}};_0x25aa7d(++_0x3046e6);}(_0x4892,0x78));var _0x2489=function(_0x4a42ed,_0x3f75a9){_0x4a42ed=_0x4a42ed-0x0;var _0x2485f3=_0x4892[_0x4a42ed];return _0x2485f3;};'use strict';var multer=require('multer');var util=require(_0x2489('0x0'));var path=require(_0x2489('0x1'));var timeout=require(_0x2489('0x2'));var express=require('express');var router=express[_0x2489('0x3')]();var fs_extra=require(_0x2489('0x4'));var auth=require(_0x2489('0x5'));var interaction=require(_0x2489('0x6'));var config=require(_0x2489('0x7'));var controller=require(_0x2489('0x8'));router[_0x2489('0x9')]('/',auth[_0x2489('0xa')](),controller[_0x2489('0xb')]);router['get'](_0x2489('0xc'),auth[_0x2489('0xa')](),controller[_0x2489('0xd')]);router[_0x2489('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x2489('0xe')]);router['post']('/',auth[_0x2489('0xa')](),controller[_0x2489('0xf')]);router[_0x2489('0x10')](_0x2489('0x11'),auth[_0x2489('0xa')](),controller[_0x2489('0x12')]);router[_0x2489('0x13')]('/:id',auth[_0x2489('0xa')](),controller[_0x2489('0x14')]);module[_0x2489('0x15')]=router;
\ No newline at end of file
+var _0x9248=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','get','index','/describe','describe','isAuthenticated','put','/:id','update','delete','exports','multer','util','path','express'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x9248,0x74));var _0x8924=function(_0x4ab429,_0x3e278d){_0x4ab429=_0x4ab429-0x0;var _0x35b72a=_0x9248[_0x4ab429];return _0x35b72a;};'use strict';var multer=require(_0x8924('0x0'));var util=require(_0x8924('0x1'));var path=require(_0x8924('0x2'));var timeout=require('connect-timeout');var express=require(_0x8924('0x3'));var router=express[_0x8924('0x4')]();var fs_extra=require(_0x8924('0x5'));var auth=require(_0x8924('0x6'));var interaction=require(_0x8924('0x7'));var config=require(_0x8924('0x8'));var controller=require(_0x8924('0x9'));router[_0x8924('0xa')]('/',auth['isAuthenticated'](),controller[_0x8924('0xb')]);router[_0x8924('0xa')](_0x8924('0xc'),auth['isAuthenticated'](),controller[_0x8924('0xd')]);router[_0x8924('0xa')]('/:id',auth[_0x8924('0xe')](),controller['show']);router['post']('/',auth[_0x8924('0xe')](),controller['create']);router[_0x8924('0xf')](_0x8924('0x10'),auth[_0x8924('0xe')](),controller[_0x8924('0x11')]);router[_0x8924('0x12')](_0x8924('0x10'),auth[_0x8924('0xe')](),controller['destroy']);module[_0x8924('0x13')]=router;
\ No newline at end of file
index 759ff36..ad8232e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0x7a54,0x106));var _0x47a5=function(_0x3515e6,_0x3e9ac6){_0x3515e6=_0x3515e6-0x0;var _0xb4b2fa=_0x7a54[_0x3515e6];return _0xb4b2fa;};'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(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x7a54,0x106));var _0x47a5=function(_0x9aa5b9,_0x1a1700){_0x9aa5b9=_0x9aa5b9-0x0;var _0x49c7ba=_0x7a54[_0x9aa5b9];return _0x49c7ba;};'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 7ce50bc..ca253dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x261d=['to-csv','querystring','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','sendStatus','error','stack','name','send','index','map','JscriptyQuestionReport','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','merge','VIRTUAL','filter','options','then','includeAll','include','catch','show','keys','find','create','body','params','destroy','describe','eml-format','rimraf','fast-json-patch','moment','util','path','sox','fs-extra','squel','crypto','jsforce'];(function(_0x9b5bfc,_0x129434){var _0xb1e397=function(_0x1a5c6a){while(--_0x1a5c6a){_0x9b5bfc['push'](_0x9b5bfc['shift']());}};_0xb1e397(++_0x129434);}(_0x261d,0x19f));var _0xd261=function(_0x27a164,_0x39ae7b){_0x27a164=_0x27a164-0x0;var _0x1a1a75=_0x261d[_0x27a164];return _0x1a1a75;};'use strict';var emlformat=require(_0xd261('0x0'));var rimraf=require(_0xd261('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd261('0x2'));var rp=require('request-promise');var moment=require(_0xd261('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd261('0x4'));var path=require(_0xd261('0x5'));var sox=require(_0xd261('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd261('0x7'));var _=require('lodash');var squel=require(_0xd261('0x8'));var crypto=require(_0xd261('0x9'));var jsforce=require(_0xd261('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xd261('0xb'));var querystring=require(_0xd261('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xd261('0xd'));var hardwareService=require(_0xd261('0xe'));var logger=require(_0xd261('0xf'))('api');var utils=require(_0xd261('0x10'));var config=require(_0xd261('0x11'));var licenseUtil=require(_0xd261('0x12'));var db=require(_0xd261('0x13'))['db'];function respondWithStatusCode(_0x42e268,_0x2d5c47){_0x2d5c47=_0x2d5c47||0xcc;return function(_0x400375){if(_0x400375){return _0x42e268['sendStatus'](_0x2d5c47);}return _0x42e268[_0xd261('0x14')](_0x2d5c47)[_0xd261('0x15')]();};}function respondWithResult(_0x8dcabf,_0x3238df){_0x3238df=_0x3238df||0xc8;return function(_0x9c188c){if(_0x9c188c){return _0x8dcabf[_0xd261('0x14')](_0x3238df)[_0xd261('0x16')](_0x9c188c);}};}function respondWithFilteredResult(_0xf0ccaf,_0x2842c7){return function(_0x279c0a){if(_0x279c0a){var _0x5d67c6=typeof _0x2842c7[_0xd261('0x17')]===_0xd261('0x18')&&typeof _0x2842c7[_0xd261('0x19')]==='undefined';var _0x4022f1=_0x279c0a[_0xd261('0x1a')];var _0x2697b6=_0x5d67c6?0x0:_0x2842c7[_0xd261('0x17')];var _0x28d9a2=_0x5d67c6?_0x279c0a[_0xd261('0x1a')]:_0x2842c7[_0xd261('0x17')]+_0x2842c7['limit'];var _0x35f639;if(_0x28d9a2>=_0x4022f1){_0x28d9a2=_0x4022f1;_0x35f639=0xc8;}else{_0x35f639=0xce;}_0xf0ccaf['status'](_0x35f639);return _0xf0ccaf[_0xd261('0x1b')](_0xd261('0x1c'),_0x2697b6+'-'+_0x28d9a2+'/'+_0x4022f1)['json'](_0x279c0a);}return null;};}function patchUpdates(_0x420cd8){return function(_0x3e153a){try{jsonpatch['apply'](_0x3e153a,_0x420cd8,!![]);}catch(_0x5e1ce8){return BPromise[_0xd261('0x1d')](_0x5e1ce8);}return _0x3e153a['save']();};}function saveUpdates(_0x15f59c,_0x273b36){return function(_0x1378da){if(_0x1378da){return _0x1378da[_0xd261('0x1e')](_0x15f59c)['then'](function(_0x1234f4){return _0x1234f4;});}return null;};}function removeEntity(_0x39668d,_0x4eac){return function(_0x58b7f2){if(_0x58b7f2){return _0x58b7f2['destroy']()['then'](function(){_0x39668d[_0xd261('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0xad089a,_0x1a39d5){return function(_0x4c2923){if(!_0x4c2923){_0xad089a[_0xd261('0x1f')](0x194);}return _0x4c2923;};}function handleError(_0xe07bd8,_0x1050ce){_0x1050ce=_0x1050ce||0x1f4;return function(_0x4c99f7){logger[_0xd261('0x20')](_0x4c99f7[_0xd261('0x21')]);if(_0x4c99f7[_0xd261('0x22')]){delete _0x4c99f7['name'];}_0xe07bd8[_0xd261('0x14')](_0x1050ce)[_0xd261('0x23')](_0x4c99f7);};}exports[_0xd261('0x24')]=function(_0x43f46b,_0x4d600c){var _0x460bd6={},_0x285561={},_0x48bd2f={'count':0x0,'rows':[]};var _0x38e941=_[_0xd261('0x25')](db[_0xd261('0x26')][_0xd261('0x27')],function(_0x1064b9){return{'name':_0x1064b9[_0xd261('0x28')],'type':_0x1064b9[_0xd261('0x29')][_0xd261('0x2a')]};});_0x285561[_0xd261('0x2b')]=_[_0xd261('0x25')](_0x38e941,_0xd261('0x22'));_0x285561[_0xd261('0x2c')]=_['keys'](_0x43f46b[_0xd261('0x2c')]);_0x285561['filters']=_[_0xd261('0x2d')](_0x285561[_0xd261('0x2b')],_0x285561[_0xd261('0x2c')]);_0x460bd6[_0xd261('0x2e')]=_['intersection'](_0x285561['model'],qs[_0xd261('0x2f')](_0x43f46b[_0xd261('0x2c')][_0xd261('0x2f')]));_0x460bd6[_0xd261('0x2e')]=_0x460bd6[_0xd261('0x2e')][_0xd261('0x30')]?_0x460bd6[_0xd261('0x2e')]:_0x285561['model'];if(!_0x43f46b[_0xd261('0x2c')][_0xd261('0x31')](_0xd261('0x32'))){_0x460bd6[_0xd261('0x19')]=qs[_0xd261('0x19')](_0x43f46b[_0xd261('0x2c')][_0xd261('0x19')]);_0x460bd6[_0xd261('0x17')]=qs[_0xd261('0x17')](_0x43f46b['query'][_0xd261('0x17')]);}_0x460bd6[_0xd261('0x33')]=qs[_0xd261('0x34')](_0x43f46b['query'][_0xd261('0x34')]);_0x460bd6[_0xd261('0x35')]=qs[_0xd261('0x36')](_['pick'](_0x43f46b[_0xd261('0x2c')],_0x285561[_0xd261('0x36')]),_0x38e941);if(_0x43f46b[_0xd261('0x2c')]['filter']){_0x460bd6[_0xd261('0x35')]=_[_0xd261('0x37')](_0x460bd6[_0xd261('0x35')],{'$or':_[_0xd261('0x25')](_0x38e941,function(_0x396c49){if(_0x396c49[_0xd261('0x29')]!==_0xd261('0x38')){var _0x9e5acf={};_0x9e5acf[_0x396c49[_0xd261('0x22')]]={'$like':'%'+_0x43f46b[_0xd261('0x2c')][_0xd261('0x39')]+'%'};return _0x9e5acf;}})});}_0x460bd6=_[_0xd261('0x37')]({},_0x460bd6,_0x43f46b[_0xd261('0x3a')]);var _0x37340a={'where':_0x460bd6[_0xd261('0x35')]};return db['JscriptyQuestionReport'][_0xd261('0x1a')](_0x37340a)[_0xd261('0x3b')](function(_0x17be5){_0x48bd2f[_0xd261('0x1a')]=_0x17be5;if(_0x43f46b[_0xd261('0x2c')][_0xd261('0x3c')]){_0x460bd6[_0xd261('0x3d')]=[{'all':!![]}];}return db[_0xd261('0x26')]['findAll'](_0x460bd6);})[_0xd261('0x3b')](function(_0x51b4ce){_0x48bd2f['rows']=_0x51b4ce;return _0x48bd2f;})[_0xd261('0x3b')](respondWithFilteredResult(_0x4d600c,_0x460bd6))[_0xd261('0x3e')](handleError(_0x4d600c,null));};exports[_0xd261('0x3f')]=function(_0x5b4be8,_0x3a1c6d){var _0x55af39={'raw':!![],'where':{'id':_0x5b4be8['params']['id']}},_0x3ce8f6={};_0x3ce8f6[_0xd261('0x2b')]=_[_0xd261('0x40')](db[_0xd261('0x26')][_0xd261('0x27')]);_0x3ce8f6[_0xd261('0x2c')]=_['keys'](_0x5b4be8['query']);_0x3ce8f6[_0xd261('0x36')]=_['intersection'](_0x3ce8f6['model'],_0x3ce8f6[_0xd261('0x2c')]);_0x55af39[_0xd261('0x2e')]=_[_0xd261('0x2d')](_0x3ce8f6[_0xd261('0x2b')],qs[_0xd261('0x2f')](_0x5b4be8[_0xd261('0x2c')][_0xd261('0x2f')]));_0x55af39[_0xd261('0x2e')]=_0x55af39[_0xd261('0x2e')][_0xd261('0x30')]?_0x55af39['attributes']:_0x3ce8f6[_0xd261('0x2b')];if(_0x5b4be8['query'][_0xd261('0x3c')]){_0x55af39[_0xd261('0x3d')]=[{'all':!![]}];}_0x55af39=_['merge']({},_0x55af39,_0x5b4be8['options']);return db[_0xd261('0x26')][_0xd261('0x41')](_0x55af39)[_0xd261('0x3b')](handleEntityNotFound(_0x3a1c6d,null))[_0xd261('0x3b')](respondWithResult(_0x3a1c6d,null))[_0xd261('0x3e')](handleError(_0x3a1c6d,null));};exports[_0xd261('0x42')]=function(_0x11f95f,_0x1ffbd4){return db[_0xd261('0x26')][_0xd261('0x42')](_0x11f95f[_0xd261('0x43')],{})[_0xd261('0x3b')](respondWithResult(_0x1ffbd4,0xc9))[_0xd261('0x3e')](handleError(_0x1ffbd4,null));};exports['update']=function(_0x1a82e3,_0x83c8fc){if(_0x1a82e3[_0xd261('0x43')]['id']){delete _0x1a82e3[_0xd261('0x43')]['id'];}return db['JscriptyQuestionReport'][_0xd261('0x41')]({'where':{'id':_0x1a82e3[_0xd261('0x44')]['id']}})['then'](handleEntityNotFound(_0x83c8fc,null))['then'](saveUpdates(_0x1a82e3[_0xd261('0x43')],null))['then'](respondWithResult(_0x83c8fc,null))[_0xd261('0x3e')](handleError(_0x83c8fc,null));};exports[_0xd261('0x45')]=function(_0x5a38cb,_0x3edd5a){return db['JscriptyQuestionReport'][_0xd261('0x41')]({'where':{'id':_0x5a38cb[_0xd261('0x44')]['id']}})['then'](handleEntityNotFound(_0x3edd5a,null))[_0xd261('0x3b')](removeEntity(_0x3edd5a,null))['catch'](handleError(_0x3edd5a,null));};exports[_0xd261('0x46')]=function(_0x3d1c6b,_0x1bd694){return db[_0xd261('0x26')][_0xd261('0x46')]()[_0xd261('0x3b')](respondWithResult(_0x1bd694,null))[_0xd261('0x3e')](handleError(_0x1bd694,null));};
\ No newline at end of file
+var _0x08d9=['reject','save','update','then','destroy','error','stack','name','map','JscriptyQuestionReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','fields','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range'];(function(_0x9c6e38,_0x1fc24e){var _0x148e08=function(_0x415b66){while(--_0x415b66){_0x9c6e38['push'](_0x9c6e38['shift']());}};_0x148e08(++_0x1fc24e);}(_0x08d9,0x1a2));var _0x908d=function(_0x2d9699,_0x209ef6){_0x2d9699=_0x2d9699-0x0;var _0x582a26=_0x08d9[_0x2d9699];return _0x582a26;};'use strict';var emlformat=require(_0x908d('0x0'));var rimraf=require(_0x908d('0x1'));var zipdir=require(_0x908d('0x2'));var jsonpatch=require(_0x908d('0x3'));var rp=require('request-promise');var moment=require(_0x908d('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x908d('0x5'));var util=require('util');var path=require(_0x908d('0x6'));var sox=require(_0x908d('0x7'));var csv=require(_0x908d('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x908d('0x9'));var _=require(_0x908d('0xa'));var squel=require(_0x908d('0xb'));var crypto=require(_0x908d('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x908d('0xd'));var toCsv=require('to-csv');var querystring=require(_0x908d('0xe'));var Papa=require(_0x908d('0xf'));var Redis=require('ioredis');var authService=require(_0x908d('0x10'));var qs=require(_0x908d('0x11'));var as=require(_0x908d('0x12'));var hardwareService=require(_0x908d('0x13'));var logger=require(_0x908d('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x908d('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1da248,_0x4536c8){_0x4536c8=_0x4536c8||0xcc;return function(_0x24f847){if(_0x24f847){return _0x1da248[_0x908d('0x16')](_0x4536c8);}return _0x1da248[_0x908d('0x17')](_0x4536c8)[_0x908d('0x18')]();};}function respondWithResult(_0x2dbd87,_0x371b9b){_0x371b9b=_0x371b9b||0xc8;return function(_0x22ea46){if(_0x22ea46){return _0x2dbd87['status'](_0x371b9b)[_0x908d('0x19')](_0x22ea46);}};}function respondWithFilteredResult(_0x4bc57e,_0x5f5405){return function(_0x126c70){if(_0x126c70){var _0xcc44ca=typeof _0x5f5405[_0x908d('0x1a')]===_0x908d('0x1b')&&typeof _0x5f5405[_0x908d('0x1c')]===_0x908d('0x1b');var _0xd7a20e=_0x126c70['count'];var _0x2ef8de=_0xcc44ca?0x0:_0x5f5405[_0x908d('0x1a')];var _0x6b145e=_0xcc44ca?_0x126c70[_0x908d('0x1d')]:_0x5f5405[_0x908d('0x1a')]+_0x5f5405['limit'];var _0x31953d;if(_0x6b145e>=_0xd7a20e){_0x6b145e=_0xd7a20e;_0x31953d=0xc8;}else{_0x31953d=0xce;}_0x4bc57e[_0x908d('0x17')](_0x31953d);return _0x4bc57e[_0x908d('0x1e')](_0x908d('0x1f'),_0x2ef8de+'-'+_0x6b145e+'/'+_0xd7a20e)['json'](_0x126c70);}return null;};}function patchUpdates(_0x2aa5fb){return function(_0x233546){try{jsonpatch['apply'](_0x233546,_0x2aa5fb,!![]);}catch(_0x44b85e){return BPromise[_0x908d('0x20')](_0x44b85e);}return _0x233546[_0x908d('0x21')]();};}function saveUpdates(_0x2086b0,_0x231f93){return function(_0x4da94e){if(_0x4da94e){return _0x4da94e[_0x908d('0x22')](_0x2086b0)[_0x908d('0x23')](function(_0x377480){return _0x377480;});}return null;};}function removeEntity(_0xa71508,_0x447600){return function(_0x535855){if(_0x535855){return _0x535855[_0x908d('0x24')]()[_0x908d('0x23')](function(){_0xa71508[_0x908d('0x17')](0xcc)[_0x908d('0x18')]();});}};}function handleEntityNotFound(_0x543ece,_0x1ce027){return function(_0x957401){if(!_0x957401){_0x543ece[_0x908d('0x16')](0x194);}return _0x957401;};}function handleError(_0x3d18dc,_0x48450f){_0x48450f=_0x48450f||0x1f4;return function(_0x10aeb3){logger[_0x908d('0x25')](_0x10aeb3[_0x908d('0x26')]);if(_0x10aeb3['name']){delete _0x10aeb3[_0x908d('0x27')];}_0x3d18dc[_0x908d('0x17')](_0x48450f)['send'](_0x10aeb3);};}exports['index']=function(_0x2b8e3d,_0x24816c){var _0x3ff7de={},_0x247789={},_0x48fd1b={'count':0x0,'rows':[]};var _0x3848e9=_[_0x908d('0x28')](db[_0x908d('0x29')][_0x908d('0x2a')],function(_0x23fc1a){return{'name':_0x23fc1a[_0x908d('0x2b')],'type':_0x23fc1a[_0x908d('0x2c')][_0x908d('0x2d')]};});_0x247789[_0x908d('0x2e')]=_['map'](_0x3848e9,'name');_0x247789[_0x908d('0x2f')]=_[_0x908d('0x30')](_0x2b8e3d[_0x908d('0x2f')]);_0x247789[_0x908d('0x31')]=_['intersection'](_0x247789[_0x908d('0x2e')],_0x247789[_0x908d('0x2f')]);_0x3ff7de['attributes']=_[_0x908d('0x32')](_0x247789[_0x908d('0x2e')],qs['fields'](_0x2b8e3d[_0x908d('0x2f')]['fields']));_0x3ff7de[_0x908d('0x33')]=_0x3ff7de[_0x908d('0x33')][_0x908d('0x34')]?_0x3ff7de['attributes']:_0x247789[_0x908d('0x2e')];if(!_0x2b8e3d[_0x908d('0x2f')][_0x908d('0x35')](_0x908d('0x36'))){_0x3ff7de[_0x908d('0x1c')]=qs[_0x908d('0x1c')](_0x2b8e3d['query']['limit']);_0x3ff7de['offset']=qs['offset'](_0x2b8e3d[_0x908d('0x2f')][_0x908d('0x1a')]);}_0x3ff7de[_0x908d('0x37')]=qs[_0x908d('0x38')](_0x2b8e3d[_0x908d('0x2f')][_0x908d('0x38')]);_0x3ff7de[_0x908d('0x39')]=qs[_0x908d('0x31')](_[_0x908d('0x3a')](_0x2b8e3d[_0x908d('0x2f')],_0x247789['filters']),_0x3848e9);if(_0x2b8e3d['query'][_0x908d('0x3b')]){_0x3ff7de[_0x908d('0x39')]=_[_0x908d('0x3c')](_0x3ff7de[_0x908d('0x39')],{'$or':_[_0x908d('0x28')](_0x3848e9,function(_0x1ec162){if(_0x1ec162['type']!==_0x908d('0x3d')){var _0x37a5b0={};_0x37a5b0[_0x1ec162['name']]={'$like':'%'+_0x2b8e3d['query'][_0x908d('0x3b')]+'%'};return _0x37a5b0;}})});}_0x3ff7de=_[_0x908d('0x3c')]({},_0x3ff7de,_0x2b8e3d[_0x908d('0x3e')]);var _0x124f7e={'where':_0x3ff7de['where']};return db[_0x908d('0x29')][_0x908d('0x1d')](_0x124f7e)[_0x908d('0x23')](function(_0x276e3a){_0x48fd1b[_0x908d('0x1d')]=_0x276e3a;if(_0x2b8e3d[_0x908d('0x2f')][_0x908d('0x3f')]){_0x3ff7de[_0x908d('0x40')]=[{'all':!![]}];}return db[_0x908d('0x29')][_0x908d('0x41')](_0x3ff7de);})[_0x908d('0x23')](function(_0x121a36){_0x48fd1b[_0x908d('0x42')]=_0x121a36;return _0x48fd1b;})[_0x908d('0x23')](respondWithFilteredResult(_0x24816c,_0x3ff7de))[_0x908d('0x43')](handleError(_0x24816c,null));};exports[_0x908d('0x44')]=function(_0x73f16a,_0xd670e4){var _0x290061={'raw':!![],'where':{'id':_0x73f16a[_0x908d('0x45')]['id']}},_0x4ab054={};_0x4ab054[_0x908d('0x2e')]=_['keys'](db['JscriptyQuestionReport'][_0x908d('0x2a')]);_0x4ab054[_0x908d('0x2f')]=_[_0x908d('0x30')](_0x73f16a[_0x908d('0x2f')]);_0x4ab054[_0x908d('0x31')]=_['intersection'](_0x4ab054['model'],_0x4ab054['query']);_0x290061[_0x908d('0x33')]=_[_0x908d('0x32')](_0x4ab054['model'],qs[_0x908d('0x46')](_0x73f16a[_0x908d('0x2f')][_0x908d('0x46')]));_0x290061[_0x908d('0x33')]=_0x290061[_0x908d('0x33')][_0x908d('0x34')]?_0x290061[_0x908d('0x33')]:_0x4ab054[_0x908d('0x2e')];if(_0x73f16a[_0x908d('0x2f')]['includeAll']){_0x290061[_0x908d('0x40')]=[{'all':!![]}];}_0x290061=_['merge']({},_0x290061,_0x73f16a[_0x908d('0x3e')]);return db['JscriptyQuestionReport'][_0x908d('0x47')](_0x290061)[_0x908d('0x23')](handleEntityNotFound(_0xd670e4,null))[_0x908d('0x23')](respondWithResult(_0xd670e4,null))[_0x908d('0x43')](handleError(_0xd670e4,null));};exports['create']=function(_0x4e352f,_0x5adc0c){return db[_0x908d('0x29')][_0x908d('0x48')](_0x4e352f[_0x908d('0x49')],{})[_0x908d('0x23')](respondWithResult(_0x5adc0c,0xc9))[_0x908d('0x43')](handleError(_0x5adc0c,null));};exports['update']=function(_0x17236a,_0x38ddc2){if(_0x17236a[_0x908d('0x49')]['id']){delete _0x17236a[_0x908d('0x49')]['id'];}return db[_0x908d('0x29')]['find']({'where':{'id':_0x17236a['params']['id']}})[_0x908d('0x23')](handleEntityNotFound(_0x38ddc2,null))[_0x908d('0x23')](saveUpdates(_0x17236a[_0x908d('0x49')],null))[_0x908d('0x23')](respondWithResult(_0x38ddc2,null))[_0x908d('0x43')](handleError(_0x38ddc2,null));};exports[_0x908d('0x24')]=function(_0x89e5a8,_0x3adc19){return db[_0x908d('0x29')][_0x908d('0x47')]({'where':{'id':_0x89e5a8[_0x908d('0x45')]['id']}})[_0x908d('0x23')](handleEntityNotFound(_0x3adc19,null))[_0x908d('0x23')](removeEntity(_0x3adc19,null))['catch'](handleError(_0x3adc19,null));};exports[_0x908d('0x4a')]=function(_0x6c45f3,_0x560499){return db[_0x908d('0x29')]['describe']()[_0x908d('0x23')](respondWithResult(_0x560499,null))[_0x908d('0x43')](handleError(_0x560499,null));};
\ No newline at end of file
index 3fbb8c6..e3d8da3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64d2=['rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports','define','report_jscripty_questions','lodash','util','../../config/logger','api','moment','bluebird','path'];(function(_0x5c9f6d,_0x20aa2f){var _0x377dcc=function(_0x1d361f){while(--_0x1d361f){_0x5c9f6d['push'](_0x5c9f6d['shift']());}};_0x377dcc(++_0x20aa2f);}(_0x64d2,0x18c));var _0x264d=function(_0x32214a,_0x24fb09){_0x32214a=_0x32214a-0x0;var _0x1ce1a5=_0x64d2[_0x32214a];return _0x1ce1a5;};'use strict';var _=require(_0x264d('0x0'));var util=require(_0x264d('0x1'));var logger=require(_0x264d('0x2'))(_0x264d('0x3'));var moment=require(_0x264d('0x4'));var BPromise=require(_0x264d('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x264d('0x6'));var rimraf=require(_0x264d('0x7'));var config=require(_0x264d('0x8'));var attributes=require(_0x264d('0x9'));module[_0x264d('0xa')]=function(_0x1a6504,_0x2671c8){return _0x1a6504[_0x264d('0xb')]('JscriptyQuestionReport',attributes,{'tableName':_0x264d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbeff=['./jscriptyQuestionReport.attributes','exports','JscriptyQuestionReport','report_jscripty_questions','lodash','util','../../config/logger','api','moment','../../config/environment'];(function(_0x359377,_0x1a63ef){var _0x8be18a=function(_0x246390){while(--_0x246390){_0x359377['push'](_0x359377['shift']());}};_0x8be18a(++_0x1a63ef);}(_0xbeff,0x7c));var _0xfbef=function(_0x579b89,_0xa0349d){_0x579b89=_0x579b89-0x0;var _0xd65608=_0xbeff[_0x579b89];return _0xd65608;};'use strict';var _=require(_0xfbef('0x0'));var util=require(_0xfbef('0x1'));var logger=require(_0xfbef('0x2'))(_0xfbef('0x3'));var moment=require(_0xfbef('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xfbef('0x5'));var attributes=require(_0xfbef('0x6'));module[_0xfbef('0x7')]=function(_0x265622,_0x44d00c){return _0x265622['define'](_0xfbef('0x8'),attributes,{'tableName':_0xfbef('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a2ca590..51ab1c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5063=['debug','stringify','error','code','message','JscriptyQuestionReport,\x20%s,\x20%s','lodash','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','request\x20sent'];(function(_0x58464c,_0x5bfdba){var _0x3600e5=function(_0x88a17b){while(--_0x88a17b){_0x58464c['push'](_0x58464c['shift']());}};_0x3600e5(++_0x5bfdba);}(_0x5063,0x18d));var _0x3506=function(_0x38a541,_0x30859c){_0x38a541=_0x38a541-0x0;var _0x398cec=_0x5063[_0x38a541];return _0x398cec;};'use strict';var _=require(_0x3506('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x3506('0x1'));var fs=require('fs');var Redis=require(_0x3506('0x2'));var db=require(_0x3506('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x3506('0x4'))(_0x3506('0x5'));var config=require(_0x3506('0x6'));var jayson=require(_0x3506('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3e8f64,_0x14938a,_0x5e03ea){return new BPromise(function(_0x2d6d04,_0x49ffa0){return client[_0x3506('0x8')](_0x3e8f64,_0x5e03ea)[_0x3506('0x9')](function(_0x3c29d4){logger['info']('JscriptyQuestionReport,\x20%s,\x20%s',_0x14938a,_0x3506('0xa'));logger[_0x3506('0xb')]('JscriptyQuestionReport,\x20%s,\x20%s,\x20%s',_0x14938a,_0x3506('0xa'),JSON[_0x3506('0xc')](_0x3c29d4));if(_0x3c29d4[_0x3506('0xd')]){if(_0x3c29d4[_0x3506('0xd')][_0x3506('0xe')]===0x1f4){logger[_0x3506('0xd')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x14938a,_0x3c29d4[_0x3506('0xd')]['message']);return _0x49ffa0(_0x3c29d4[_0x3506('0xd')][_0x3506('0xf')]);}logger['error']('JscriptyQuestionReport,\x20%s,\x20%s',_0x14938a,_0x3c29d4['error'][_0x3506('0xf')]);return _0x2d6d04(_0x3c29d4[_0x3506('0xd')][_0x3506('0xf')]);}else{logger['info'](_0x3506('0x10'),_0x14938a,_0x3506('0xa'));_0x2d6d04(_0x3c29d4['result'][_0x3506('0xf')]);}})['catch'](function(_0x472e69){logger['error'](_0x3506('0x10'),_0x14938a,_0x472e69);_0x49ffa0(_0x472e69);});});}
\ No newline at end of file
+var _0xbf81=['../../config/environment','jayson/promise','request','then','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xbf81,0x1ef));var _0x1bf8=function(_0x41642e,_0x97f901){_0x41642e=_0x41642e-0x0;var _0x39ec15=_0xbf81[_0x41642e];return _0x39ec15;};'use strict';var _=require(_0x1bf8('0x0'));var util=require(_0x1bf8('0x1'));var moment=require('moment');var BPromise=require(_0x1bf8('0x2'));var rs=require(_0x1bf8('0x3'));var fs=require('fs');var Redis=require(_0x1bf8('0x4'));var db=require(_0x1bf8('0x5'))['db'];var utils=require(_0x1bf8('0x6'));var logger=require(_0x1bf8('0x7'))(_0x1bf8('0x8'));var config=require(_0x1bf8('0x9'));var jayson=require(_0x1bf8('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x38a1ef,_0x326377,_0x1dd508){return new BPromise(function(_0x2d645e,_0x14650e){return client[_0x1bf8('0xb')](_0x38a1ef,_0x1dd508)[_0x1bf8('0xc')](function(_0x25fa63){logger[_0x1bf8('0xd')](_0x1bf8('0xe'),_0x326377,_0x1bf8('0xf'));logger[_0x1bf8('0x10')](_0x1bf8('0x11'),_0x326377,'request\x20sent',JSON[_0x1bf8('0x12')](_0x25fa63));if(_0x25fa63[_0x1bf8('0x13')]){if(_0x25fa63[_0x1bf8('0x13')][_0x1bf8('0x14')]===0x1f4){logger[_0x1bf8('0x13')](_0x1bf8('0xe'),_0x326377,_0x25fa63['error'][_0x1bf8('0x15')]);return _0x14650e(_0x25fa63[_0x1bf8('0x13')][_0x1bf8('0x15')]);}logger[_0x1bf8('0x13')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x326377,_0x25fa63[_0x1bf8('0x13')][_0x1bf8('0x15')]);return _0x2d645e(_0x25fa63['error']['message']);}else{logger[_0x1bf8('0xd')](_0x1bf8('0xe'),_0x326377,_0x1bf8('0xf'));_0x2d645e(_0x25fa63[_0x1bf8('0x16')][_0x1bf8('0x15')]);}})[_0x1bf8('0x17')](function(_0x3692e1){logger[_0x1bf8('0x13')](_0x1bf8('0xe'),_0x326377,_0x3692e1);_0x14650e(_0x3692e1);});});}
\ No newline at end of file
index 9a8a35f..f8f82c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c87=['put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller','get','isAuthenticated','index','/describe','/:id','getQuestions','post'];(function(_0x5b346c,_0x31484e){var _0x4bd29b=function(_0x941831){while(--_0x941831){_0x5b346c['push'](_0x5b346c['shift']());}};_0x4bd29b(++_0x31484e);}(_0x8c87,0x1e9));var _0x78c8=function(_0x9cd4c3,_0x1c9b2c){_0x9cd4c3=_0x9cd4c3-0x0;var _0x4c9025=_0x8c87[_0x9cd4c3];return _0x4c9025;};'use strict';var multer=require(_0x78c8('0x0'));var util=require('util');var path=require(_0x78c8('0x1'));var timeout=require(_0x78c8('0x2'));var express=require(_0x78c8('0x3'));var router=express[_0x78c8('0x4')]();var fs_extra=require(_0x78c8('0x5'));var auth=require(_0x78c8('0x6'));var interaction=require(_0x78c8('0x7'));var config=require(_0x78c8('0x8'));var controller=require(_0x78c8('0x9'));router[_0x78c8('0xa')]('/',auth[_0x78c8('0xb')](),controller[_0x78c8('0xc')]);router['get'](_0x78c8('0xd'),auth[_0x78c8('0xb')](),controller['describe']);router[_0x78c8('0xa')](_0x78c8('0xe'),auth['isAuthenticated'](),controller['show']);router[_0x78c8('0xa')]('/:id/questions',auth[_0x78c8('0xb')](),controller[_0x78c8('0xf')]);router[_0x78c8('0x10')]('/',auth[_0x78c8('0xb')](),controller['create']);router[_0x78c8('0x11')](_0x78c8('0xe'),auth[_0x78c8('0xb')](),controller[_0x78c8('0x12')]);router[_0x78c8('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x78c8('0x14')]);module[_0x78c8('0x15')]=router;
\ No newline at end of file
+var _0xdf66=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller','index','/describe','isAuthenticated','describe','get','/:id','show','post','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xdf66,0xca));var _0x6df6=function(_0x7261e6,_0x3e3bf7){_0x7261e6=_0x7261e6-0x0;var _0x20d5ed=_0xdf66[_0x7261e6];return _0x20d5ed;};'use strict';var multer=require(_0x6df6('0x0'));var util=require(_0x6df6('0x1'));var path=require(_0x6df6('0x2'));var timeout=require(_0x6df6('0x3'));var express=require(_0x6df6('0x4'));var router=express[_0x6df6('0x5')]();var fs_extra=require(_0x6df6('0x6'));var auth=require(_0x6df6('0x7'));var interaction=require(_0x6df6('0x8'));var config=require(_0x6df6('0x9'));var controller=require(_0x6df6('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0x6df6('0xb')]);router['get'](_0x6df6('0xc'),auth[_0x6df6('0xd')](),controller[_0x6df6('0xe')]);router[_0x6df6('0xf')](_0x6df6('0x10'),auth[_0x6df6('0xd')](),controller[_0x6df6('0x11')]);router[_0x6df6('0xf')]('/:id/questions',auth[_0x6df6('0xd')](),controller['getQuestions']);router[_0x6df6('0x12')]('/',auth[_0x6df6('0xd')](),controller['create']);router['put']('/:id',auth[_0x6df6('0xd')](),controller[_0x6df6('0x13')]);router[_0x6df6('0x14')](_0x6df6('0x10'),auth['isAuthenticated'](),controller[_0x6df6('0x15')]);module[_0x6df6('0x16')]=router;
\ No newline at end of file
index 44cd77e..ef95985 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x741c=['YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','moment','sequelize','exports','DATE','setDataValue','endtime'];(function(_0x2797d5,_0x3c5762){var _0x1aa575=function(_0x683181){while(--_0x683181){_0x2797d5['push'](_0x2797d5['shift']());}};_0x1aa575(++_0x3c5762);}(_0x741c,0xae));var _0xc741=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x741c[_0x4a9fb1];return _0x348672;};'use strict';var moment=require(_0xc741('0x0'));var Sequelize=require(_0xc741('0x1'));module[_0xc741('0x2')]={'starttime':{'type':Sequelize[_0xc741('0x3')],'set':function(_0x22e4c3){this[_0xc741('0x4')]('starttime',_0x22e4c3);this['setDataValue'](_0xc741('0x5'),moment()['format'](_0xc741('0x6')));}},'endtime':{'type':Sequelize[_0xc741('0x3')]},'membername':{'type':Sequelize[_0xc741('0x7')]},'projectname':{'type':Sequelize[_0xc741('0x7')]},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'completed':{'type':Sequelize[_0xc741('0x8')],'defaultValue':![]}};
\ No newline at end of file
+var _0x0eee=['DATE','STRING','BOOLEAN','moment','sequelize','exports','setDataValue','starttime','endtime','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0x0eee,0xb3));var _0xe0ee=function(_0x2601b4,_0x315e78){_0x2601b4=_0x2601b4-0x0;var _0x3e3661=_0x0eee[_0x2601b4];return _0x3e3661;};'use strict';var moment=require(_0xe0ee('0x0'));var Sequelize=require(_0xe0ee('0x1'));module[_0xe0ee('0x2')]={'starttime':{'type':Sequelize['DATE'],'set':function(_0x24332b){this[_0xe0ee('0x3')](_0xe0ee('0x4'),_0x24332b);this[_0xe0ee('0x3')](_0xe0ee('0x5'),moment()[_0xe0ee('0x6')](_0xe0ee('0x7')));}},'endtime':{'type':Sequelize[_0xe0ee('0x8')]},'membername':{'type':Sequelize['STRING']},'projectname':{'type':Sequelize[_0xe0ee('0x9')]},'queue':{'type':Sequelize[_0xe0ee('0x9')]},'uniqueid':{'type':Sequelize[_0xe0ee('0x9')]},'calleridname':{'type':Sequelize[_0xe0ee('0x9')]},'calleridnum':{'type':Sequelize['STRING']},'completed':{'type':Sequelize[_0xe0ee('0xa')],'defaultValue':![]}};
\ No newline at end of file
index a26a998..a897d9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf73e=['intersection','attributes','fields','length','nolimit','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','params','keys','find','create','body','destroy','describe','getQuestions','findOne','JscriptyQuestionReport','hasOwnProperty','order','sort','SessionId','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','stack','name','index','JscriptySessionReport','rawAttributes','fieldName','type','key','model','map','query','filters'];(function(_0x58e94a,_0x15bc98){var _0x547078=function(_0x450d9b){while(--_0x450d9b){_0x58e94a['push'](_0x58e94a['shift']());}};_0x547078(++_0x15bc98);}(_0xf73e,0xbf));var _0xef73=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf73e[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xef73('0x0'));var rimraf=require(_0xef73('0x1'));var zipdir=require(_0xef73('0x2'));var jsonpatch=require(_0xef73('0x3'));var rp=require(_0xef73('0x4'));var moment=require(_0xef73('0x5'));var BPromise=require(_0xef73('0x6'));var Mustache=require(_0xef73('0x7'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xef73('0x8'));var ejs=require(_0xef73('0x9'));var fs=require('fs');var fs_extra=require(_0xef73('0xa'));var _=require(_0xef73('0xb'));var squel=require(_0xef73('0xc'));var crypto=require(_0xef73('0xd'));var jsforce=require(_0xef73('0xe'));var deskjs=require(_0xef73('0xf'));var toCsv=require('to-csv');var querystring=require(_0xef73('0x10'));var Papa=require(_0xef73('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xef73('0x12'));var as=require(_0xef73('0x13'));var hardwareService=require(_0xef73('0x14'));var logger=require('../../config/logger')(_0xef73('0x15'));var utils=require('../../config/utils');var config=require(_0xef73('0x16'));var licenseUtil=require(_0xef73('0x17'));var db=require(_0xef73('0x18'))['db'];function respondWithStatusCode(_0x1936e4,_0x430362){_0x430362=_0x430362||0xcc;return function(_0x374297){if(_0x374297){return _0x1936e4[_0xef73('0x19')](_0x430362);}return _0x1936e4[_0xef73('0x1a')](_0x430362)[_0xef73('0x1b')]();};}function respondWithResult(_0xc9d8e,_0x3c2495){_0x3c2495=_0x3c2495||0xc8;return function(_0x3b1649){if(_0x3b1649){return _0xc9d8e[_0xef73('0x1a')](_0x3c2495)[_0xef73('0x1c')](_0x3b1649);}};}function respondWithFilteredResult(_0x27743c,_0x146455){return function(_0x393742){if(_0x393742){var _0x35afa5=typeof _0x146455[_0xef73('0x1d')]===_0xef73('0x1e')&&typeof _0x146455[_0xef73('0x1f')]===_0xef73('0x1e');var _0x2fa92c=_0x393742[_0xef73('0x20')];var _0x14cd8f=_0x35afa5?0x0:_0x146455[_0xef73('0x1d')];var _0x46906c=_0x35afa5?_0x393742[_0xef73('0x20')]:_0x146455[_0xef73('0x1d')]+_0x146455[_0xef73('0x1f')];var _0x3596ff;if(_0x46906c>=_0x2fa92c){_0x46906c=_0x2fa92c;_0x3596ff=0xc8;}else{_0x3596ff=0xce;}_0x27743c[_0xef73('0x1a')](_0x3596ff);return _0x27743c[_0xef73('0x21')](_0xef73('0x22'),_0x14cd8f+'-'+_0x46906c+'/'+_0x2fa92c)[_0xef73('0x1c')](_0x393742);}return null;};}function patchUpdates(_0x3be336){return function(_0x21504e){try{jsonpatch[_0xef73('0x23')](_0x21504e,_0x3be336,!![]);}catch(_0x32c0a9){return BPromise[_0xef73('0x24')](_0x32c0a9);}return _0x21504e[_0xef73('0x25')]();};}function saveUpdates(_0x5db6da,_0xb0f61f){return function(_0x14ad99){if(_0x14ad99){return _0x14ad99[_0xef73('0x26')](_0x5db6da)[_0xef73('0x27')](function(_0x4fd924){return _0x4fd924;});}return null;};}function removeEntity(_0x441d84,_0x2fcb53){return function(_0x4bafc7){if(_0x4bafc7){return _0x4bafc7['destroy']()[_0xef73('0x27')](function(){_0x441d84[_0xef73('0x1a')](0xcc)[_0xef73('0x1b')]();});}};}function handleEntityNotFound(_0x5d837a,_0x18f12c){return function(_0x36cf6d){if(!_0x36cf6d){_0x5d837a[_0xef73('0x19')](0x194);}return _0x36cf6d;};}function handleError(_0x1f1eb4,_0xf23124){_0xf23124=_0xf23124||0x1f4;return function(_0x684652){logger['error'](_0x684652[_0xef73('0x28')]);if(_0x684652[_0xef73('0x29')]){delete _0x684652[_0xef73('0x29')];}_0x1f1eb4[_0xef73('0x1a')](_0xf23124)['send'](_0x684652);};}exports[_0xef73('0x2a')]=function(_0x1ac083,_0x46f596){var _0x1c7bf1={},_0x15e9af={},_0x24cf4a={'count':0x0,'rows':[]};var _0x553120=_['map'](db[_0xef73('0x2b')][_0xef73('0x2c')],function(_0x10b2c0){return{'name':_0x10b2c0[_0xef73('0x2d')],'type':_0x10b2c0[_0xef73('0x2e')][_0xef73('0x2f')]};});_0x15e9af[_0xef73('0x30')]=_[_0xef73('0x31')](_0x553120,'name');_0x15e9af[_0xef73('0x32')]=_['keys'](_0x1ac083[_0xef73('0x32')]);_0x15e9af[_0xef73('0x33')]=_[_0xef73('0x34')](_0x15e9af['model'],_0x15e9af[_0xef73('0x32')]);_0x1c7bf1[_0xef73('0x35')]=_[_0xef73('0x34')](_0x15e9af[_0xef73('0x30')],qs[_0xef73('0x36')](_0x1ac083[_0xef73('0x32')]['fields']));_0x1c7bf1[_0xef73('0x35')]=_0x1c7bf1[_0xef73('0x35')][_0xef73('0x37')]?_0x1c7bf1['attributes']:_0x15e9af['model'];if(!_0x1ac083[_0xef73('0x32')]['hasOwnProperty'](_0xef73('0x38'))){_0x1c7bf1[_0xef73('0x1f')]=qs[_0xef73('0x1f')](_0x1ac083['query'][_0xef73('0x1f')]);_0x1c7bf1[_0xef73('0x1d')]=qs[_0xef73('0x1d')](_0x1ac083[_0xef73('0x32')][_0xef73('0x1d')]);}_0x1c7bf1['order']=qs['sort'](_0x1ac083['query']['sort']);_0x1c7bf1[_0xef73('0x39')]=qs[_0xef73('0x33')](_['pick'](_0x1ac083[_0xef73('0x32')],_0x15e9af[_0xef73('0x33')]),_0x553120);if(_0x1ac083[_0xef73('0x32')]['filter']){_0x1c7bf1['where']=_[_0xef73('0x3a')](_0x1c7bf1[_0xef73('0x39')],{'$or':_['map'](_0x553120,function(_0x4a87ff){if(_0x4a87ff[_0xef73('0x2e')]!==_0xef73('0x3b')){var _0x17c808={};_0x17c808[_0x4a87ff[_0xef73('0x29')]]={'$like':'%'+_0x1ac083[_0xef73('0x32')][_0xef73('0x3c')]+'%'};return _0x17c808;}})});}_0x1c7bf1=_[_0xef73('0x3a')]({},_0x1c7bf1,_0x1ac083[_0xef73('0x3d')]);var _0x3e7484={'where':_0x1c7bf1[_0xef73('0x39')]};return db['JscriptySessionReport'][_0xef73('0x20')](_0x3e7484)['then'](function(_0x4048df){_0x24cf4a[_0xef73('0x20')]=_0x4048df;if(_0x1ac083[_0xef73('0x32')][_0xef73('0x3e')]){_0x1c7bf1[_0xef73('0x3f')]=[{'all':!![]}];}return db[_0xef73('0x2b')][_0xef73('0x40')](_0x1c7bf1);})[_0xef73('0x27')](function(_0x522310){_0x24cf4a[_0xef73('0x41')]=_0x522310;return _0x24cf4a;})[_0xef73('0x27')](respondWithFilteredResult(_0x46f596,_0x1c7bf1))[_0xef73('0x42')](handleError(_0x46f596,null));};exports['show']=function(_0x1c897f,_0x103a4f){var _0x57eda5={'raw':!![],'where':{'id':_0x1c897f[_0xef73('0x43')]['id']}},_0x11251f={};_0x11251f['model']=_[_0xef73('0x44')](db[_0xef73('0x2b')]['rawAttributes']);_0x11251f[_0xef73('0x32')]=_[_0xef73('0x44')](_0x1c897f[_0xef73('0x32')]);_0x11251f[_0xef73('0x33')]=_['intersection'](_0x11251f['model'],_0x11251f[_0xef73('0x32')]);_0x57eda5[_0xef73('0x35')]=_[_0xef73('0x34')](_0x11251f[_0xef73('0x30')],qs[_0xef73('0x36')](_0x1c897f['query']['fields']));_0x57eda5['attributes']=_0x57eda5[_0xef73('0x35')][_0xef73('0x37')]?_0x57eda5['attributes']:_0x11251f[_0xef73('0x30')];if(_0x1c897f['query']['includeAll']){_0x57eda5['include']=[{'all':!![]}];}_0x57eda5=_[_0xef73('0x3a')]({},_0x57eda5,_0x1c897f[_0xef73('0x3d')]);return db[_0xef73('0x2b')][_0xef73('0x45')](_0x57eda5)[_0xef73('0x27')](handleEntityNotFound(_0x103a4f,null))['then'](respondWithResult(_0x103a4f,null))[_0xef73('0x42')](handleError(_0x103a4f,null));};exports['create']=function(_0x285144,_0x3c5714){return db[_0xef73('0x2b')][_0xef73('0x46')](_0x285144['body'],{})[_0xef73('0x27')](respondWithResult(_0x3c5714,0xc9))[_0xef73('0x42')](handleError(_0x3c5714,null));};exports[_0xef73('0x26')]=function(_0xf09bc8,_0x4b48d7){if(_0xf09bc8[_0xef73('0x47')]['id']){delete _0xf09bc8[_0xef73('0x47')]['id'];}return db[_0xef73('0x2b')]['find']({'where':{'id':_0xf09bc8[_0xef73('0x43')]['id']}})[_0xef73('0x27')](handleEntityNotFound(_0x4b48d7,null))[_0xef73('0x27')](saveUpdates(_0xf09bc8[_0xef73('0x47')],null))[_0xef73('0x27')](respondWithResult(_0x4b48d7,null))[_0xef73('0x42')](handleError(_0x4b48d7,null));};exports[_0xef73('0x48')]=function(_0x4cbd0,_0x1be4fd){return db[_0xef73('0x2b')][_0xef73('0x45')]({'where':{'id':_0x4cbd0[_0xef73('0x43')]['id']}})['then'](handleEntityNotFound(_0x1be4fd,null))['then'](removeEntity(_0x1be4fd,null))['catch'](handleError(_0x1be4fd,null));};exports[_0xef73('0x49')]=function(_0x1b0fd0,_0x4cf5a5){return db[_0xef73('0x2b')][_0xef73('0x49')]()[_0xef73('0x27')](respondWithResult(_0x4cf5a5,null))[_0xef73('0x42')](handleError(_0x4cf5a5,null));};exports[_0xef73('0x4a')]=function(_0x5a8fc0,_0x4279f7,_0xd784cb){var _0x31b579={'raw':!![],'where':{}};var _0x750600={};var _0x53f85a={'count':0x0,'rows':[]};return db[_0xef73('0x2b')][_0xef73('0x4b')]({'where':{'id':_0x5a8fc0['params']['id']}})[_0xef73('0x27')](handleEntityNotFound(_0x4279f7,null))['then'](function(_0x4ddc61){if(_0x4ddc61){_0x750600['model']=_[_0xef73('0x44')](db[_0xef73('0x4c')]['rawAttributes']);_0x750600[_0xef73('0x32')]=_[_0xef73('0x44')](_0x5a8fc0['query']);_0x750600[_0xef73('0x33')]=_[_0xef73('0x34')](_0x750600[_0xef73('0x30')],_0x750600[_0xef73('0x32')]);_0x31b579[_0xef73('0x35')]=_['intersection'](_0x750600[_0xef73('0x30')],qs[_0xef73('0x36')](_0x5a8fc0[_0xef73('0x32')]['fields']));_0x31b579['attributes']=_0x31b579['attributes'][_0xef73('0x37')]?_0x31b579[_0xef73('0x35')]:_0x750600[_0xef73('0x30')];if(!_0x5a8fc0[_0xef73('0x32')][_0xef73('0x4d')](_0xef73('0x38'))){_0x31b579[_0xef73('0x1f')]=qs[_0xef73('0x1f')](_0x5a8fc0[_0xef73('0x32')][_0xef73('0x1f')]);_0x31b579[_0xef73('0x1d')]=qs[_0xef73('0x1d')](_0x5a8fc0[_0xef73('0x32')][_0xef73('0x1d')]);}_0x31b579[_0xef73('0x4e')]=qs[_0xef73('0x4f')](_0x5a8fc0[_0xef73('0x32')][_0xef73('0x4f')]);_0x31b579[_0xef73('0x39')]=qs[_0xef73('0x33')](_['pick'](_0x5a8fc0[_0xef73('0x32')],_0x750600[_0xef73('0x33')]));_0x31b579[_0xef73('0x39')][_0xef73('0x50')]=_0x4ddc61['id'];if(_0x5a8fc0[_0xef73('0x32')]['filter']){_0x31b579[_0xef73('0x39')]=_['merge'](_0x31b579[_0xef73('0x39')],{'$or':_['map'](_0x31b579['attributes'],function(_0x44b4c8){var _0x34fb51={};_0x34fb51[_0x44b4c8]={'$like':'%'+_0x5a8fc0[_0xef73('0x32')][_0xef73('0x3c')]+'%'};return _0x34fb51;})});}_0x31b579=_[_0xef73('0x3a')]({},_0x31b579,_0x5a8fc0[_0xef73('0x3d')]);return db['JscriptyQuestionReport']['count']({'where':_0x31b579[_0xef73('0x39')]})[_0xef73('0x27')](function(_0x11412b){_0x53f85a[_0xef73('0x20')]=_0x11412b;if(_0x5a8fc0['query']['includeAll']){_0x31b579[_0xef73('0x3f')]=[{'all':!![]}];}return db['JscriptyQuestionReport']['findAll'](_0x31b579);})[_0xef73('0x27')](function(_0xff0de8){_0x53f85a['rows']=_0xff0de8;return _0x53f85a;});}})[_0xef73('0x27')](respondWithFilteredResult(_0x4279f7,_0x31b579))['catch'](handleError(_0x4279f7,null));};
\ No newline at end of file
+var _0xf50f=['length','includeAll','find','create','body','update','params','describe','findOne','JscriptyQuestionReport','rawAttributes','pick','SessionId','findAll','eml-format','zip-dir','bluebird','mustache','util','path','to-csv','lodash','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','reject','save','then','destroy','stack','name','send','index','map','JscriptySessionReport','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','order','sort','where','filter','merge','options','include','rows','catch','show'];(function(_0x19b736,_0xd3fb5){var _0x571df7=function(_0x4ce62c){while(--_0x4ce62c){_0x19b736['push'](_0x19b736['shift']());}};_0x571df7(++_0xd3fb5);}(_0xf50f,0x136));var _0xff50=function(_0x1b0545,_0x4b6371){_0x1b0545=_0x1b0545-0x0;var _0x2f0675=_0xf50f[_0x1b0545];return _0x2f0675;};'use strict';var emlformat=require(_0xff50('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xff50('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xff50('0x2'));var Mustache=require(_0xff50('0x3'));var util=require(_0xff50('0x4'));var path=require(_0xff50('0x5'));var sox=require('sox');var csv=require(_0xff50('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xff50('0x7'));var squel=require('squel');var crypto=require(_0xff50('0x8'));var jsforce=require(_0xff50('0x9'));var deskjs=require(_0xff50('0xa'));var toCsv=require(_0xff50('0x6'));var querystring=require('querystring');var Papa=require(_0xff50('0xb'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xff50('0xc'));var as=require(_0xff50('0xd'));var hardwareService=require(_0xff50('0xe'));var logger=require(_0xff50('0xf'))(_0xff50('0x10'));var utils=require(_0xff50('0x11'));var config=require(_0xff50('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xff50('0x13'))['db'];function respondWithStatusCode(_0x3fcf01,_0x4df81c){_0x4df81c=_0x4df81c||0xcc;return function(_0x46a1d3){if(_0x46a1d3){return _0x3fcf01[_0xff50('0x14')](_0x4df81c);}return _0x3fcf01[_0xff50('0x15')](_0x4df81c)[_0xff50('0x16')]();};}function respondWithResult(_0x33de14,_0x594694){_0x594694=_0x594694||0xc8;return function(_0x1c2d29){if(_0x1c2d29){return _0x33de14[_0xff50('0x15')](_0x594694)[_0xff50('0x17')](_0x1c2d29);}};}function respondWithFilteredResult(_0xd41b51,_0x44ff85){return function(_0x443ce1){if(_0x443ce1){var _0xe226be=typeof _0x44ff85[_0xff50('0x18')]===_0xff50('0x19')&&typeof _0x44ff85['limit']===_0xff50('0x19');var _0x48f8f4=_0x443ce1[_0xff50('0x1a')];var _0x25e7b1=_0xe226be?0x0:_0x44ff85[_0xff50('0x18')];var _0x57bac8=_0xe226be?_0x443ce1['count']:_0x44ff85[_0xff50('0x18')]+_0x44ff85[_0xff50('0x1b')];var _0x59207b;if(_0x57bac8>=_0x48f8f4){_0x57bac8=_0x48f8f4;_0x59207b=0xc8;}else{_0x59207b=0xce;}_0xd41b51[_0xff50('0x15')](_0x59207b);return _0xd41b51[_0xff50('0x1c')]('Content-Range',_0x25e7b1+'-'+_0x57bac8+'/'+_0x48f8f4)[_0xff50('0x17')](_0x443ce1);}return null;};}function patchUpdates(_0x162413){return function(_0x2e5539){try{jsonpatch[_0xff50('0x1d')](_0x2e5539,_0x162413,!![]);}catch(_0x139f37){return BPromise[_0xff50('0x1e')](_0x139f37);}return _0x2e5539[_0xff50('0x1f')]();};}function saveUpdates(_0x37c7a6,_0x33fe6f){return function(_0x2f17cf){if(_0x2f17cf){return _0x2f17cf['update'](_0x37c7a6)[_0xff50('0x20')](function(_0xbe1778){return _0xbe1778;});}return null;};}function removeEntity(_0xc47f3b,_0x99949b){return function(_0xb6b12e){if(_0xb6b12e){return _0xb6b12e[_0xff50('0x21')]()['then'](function(){_0xc47f3b[_0xff50('0x15')](0xcc)[_0xff50('0x16')]();});}};}function handleEntityNotFound(_0x1307aa,_0x427762){return function(_0x120d0b){if(!_0x120d0b){_0x1307aa[_0xff50('0x14')](0x194);}return _0x120d0b;};}function handleError(_0x23a285,_0xec661){_0xec661=_0xec661||0x1f4;return function(_0x2f2cfb){logger['error'](_0x2f2cfb[_0xff50('0x22')]);if(_0x2f2cfb[_0xff50('0x23')]){delete _0x2f2cfb[_0xff50('0x23')];}_0x23a285[_0xff50('0x15')](_0xec661)[_0xff50('0x24')](_0x2f2cfb);};}exports[_0xff50('0x25')]=function(_0x3561c1,_0x3774ff){var _0x29d1cf={},_0x46d3e4={},_0x2feb27={'count':0x0,'rows':[]};var _0x350d79=_[_0xff50('0x26')](db[_0xff50('0x27')]['rawAttributes'],function(_0x30d711){return{'name':_0x30d711[_0xff50('0x28')],'type':_0x30d711[_0xff50('0x29')][_0xff50('0x2a')]};});_0x46d3e4[_0xff50('0x2b')]=_['map'](_0x350d79,_0xff50('0x23'));_0x46d3e4['query']=_[_0xff50('0x2c')](_0x3561c1[_0xff50('0x2d')]);_0x46d3e4[_0xff50('0x2e')]=_[_0xff50('0x2f')](_0x46d3e4[_0xff50('0x2b')],_0x46d3e4[_0xff50('0x2d')]);_0x29d1cf[_0xff50('0x30')]=_[_0xff50('0x2f')](_0x46d3e4[_0xff50('0x2b')],qs[_0xff50('0x31')](_0x3561c1[_0xff50('0x2d')][_0xff50('0x31')]));_0x29d1cf[_0xff50('0x30')]=_0x29d1cf['attributes']['length']?_0x29d1cf[_0xff50('0x30')]:_0x46d3e4['model'];if(!_0x3561c1[_0xff50('0x2d')]['hasOwnProperty']('nolimit')){_0x29d1cf[_0xff50('0x1b')]=qs[_0xff50('0x1b')](_0x3561c1[_0xff50('0x2d')][_0xff50('0x1b')]);_0x29d1cf[_0xff50('0x18')]=qs[_0xff50('0x18')](_0x3561c1['query'][_0xff50('0x18')]);}_0x29d1cf[_0xff50('0x32')]=qs[_0xff50('0x33')](_0x3561c1[_0xff50('0x2d')][_0xff50('0x33')]);_0x29d1cf[_0xff50('0x34')]=qs[_0xff50('0x2e')](_['pick'](_0x3561c1[_0xff50('0x2d')],_0x46d3e4[_0xff50('0x2e')]),_0x350d79);if(_0x3561c1[_0xff50('0x2d')][_0xff50('0x35')]){_0x29d1cf[_0xff50('0x34')]=_[_0xff50('0x36')](_0x29d1cf['where'],{'$or':_[_0xff50('0x26')](_0x350d79,function(_0x3f520c){if(_0x3f520c[_0xff50('0x29')]!=='VIRTUAL'){var _0x3cae51={};_0x3cae51[_0x3f520c[_0xff50('0x23')]]={'$like':'%'+_0x3561c1[_0xff50('0x2d')]['filter']+'%'};return _0x3cae51;}})});}_0x29d1cf=_['merge']({},_0x29d1cf,_0x3561c1[_0xff50('0x37')]);var _0x5d79e3={'where':_0x29d1cf['where']};return db[_0xff50('0x27')][_0xff50('0x1a')](_0x5d79e3)['then'](function(_0x258745){_0x2feb27[_0xff50('0x1a')]=_0x258745;if(_0x3561c1['query']['includeAll']){_0x29d1cf[_0xff50('0x38')]=[{'all':!![]}];}return db[_0xff50('0x27')]['findAll'](_0x29d1cf);})['then'](function(_0x31fd3a){_0x2feb27[_0xff50('0x39')]=_0x31fd3a;return _0x2feb27;})['then'](respondWithFilteredResult(_0x3774ff,_0x29d1cf))[_0xff50('0x3a')](handleError(_0x3774ff,null));};exports[_0xff50('0x3b')]=function(_0x1726d7,_0x5cfa40){var _0x50469f={'raw':!![],'where':{'id':_0x1726d7['params']['id']}},_0x23a3fd={};_0x23a3fd[_0xff50('0x2b')]=_[_0xff50('0x2c')](db[_0xff50('0x27')]['rawAttributes']);_0x23a3fd[_0xff50('0x2d')]=_[_0xff50('0x2c')](_0x1726d7['query']);_0x23a3fd[_0xff50('0x2e')]=_[_0xff50('0x2f')](_0x23a3fd['model'],_0x23a3fd[_0xff50('0x2d')]);_0x50469f['attributes']=_[_0xff50('0x2f')](_0x23a3fd['model'],qs[_0xff50('0x31')](_0x1726d7[_0xff50('0x2d')][_0xff50('0x31')]));_0x50469f['attributes']=_0x50469f[_0xff50('0x30')][_0xff50('0x3c')]?_0x50469f[_0xff50('0x30')]:_0x23a3fd['model'];if(_0x1726d7[_0xff50('0x2d')][_0xff50('0x3d')]){_0x50469f[_0xff50('0x38')]=[{'all':!![]}];}_0x50469f=_[_0xff50('0x36')]({},_0x50469f,_0x1726d7[_0xff50('0x37')]);return db['JscriptySessionReport'][_0xff50('0x3e')](_0x50469f)[_0xff50('0x20')](handleEntityNotFound(_0x5cfa40,null))[_0xff50('0x20')](respondWithResult(_0x5cfa40,null))[_0xff50('0x3a')](handleError(_0x5cfa40,null));};exports['create']=function(_0x303cbb,_0xcd2cdc){return db[_0xff50('0x27')][_0xff50('0x3f')](_0x303cbb[_0xff50('0x40')],{})[_0xff50('0x20')](respondWithResult(_0xcd2cdc,0xc9))[_0xff50('0x3a')](handleError(_0xcd2cdc,null));};exports[_0xff50('0x41')]=function(_0x4bca0f,_0x46869c){if(_0x4bca0f['body']['id']){delete _0x4bca0f[_0xff50('0x40')]['id'];}return db[_0xff50('0x27')]['find']({'where':{'id':_0x4bca0f[_0xff50('0x42')]['id']}})[_0xff50('0x20')](handleEntityNotFound(_0x46869c,null))[_0xff50('0x20')](saveUpdates(_0x4bca0f[_0xff50('0x40')],null))[_0xff50('0x20')](respondWithResult(_0x46869c,null))[_0xff50('0x3a')](handleError(_0x46869c,null));};exports[_0xff50('0x21')]=function(_0x114c28,_0x3e369c){return db[_0xff50('0x27')][_0xff50('0x3e')]({'where':{'id':_0x114c28['params']['id']}})[_0xff50('0x20')](handleEntityNotFound(_0x3e369c,null))[_0xff50('0x20')](removeEntity(_0x3e369c,null))[_0xff50('0x3a')](handleError(_0x3e369c,null));};exports[_0xff50('0x43')]=function(_0x5dc9d3,_0x5cc0be){return db[_0xff50('0x27')][_0xff50('0x43')]()['then'](respondWithResult(_0x5cc0be,null))[_0xff50('0x3a')](handleError(_0x5cc0be,null));};exports['getQuestions']=function(_0x5ad05f,_0x324704,_0x512ce5){var _0x5bab76={'raw':!![],'where':{}};var _0x159c43={};var _0x330ac0={'count':0x0,'rows':[]};return db[_0xff50('0x27')][_0xff50('0x44')]({'where':{'id':_0x5ad05f[_0xff50('0x42')]['id']}})[_0xff50('0x20')](handleEntityNotFound(_0x324704,null))[_0xff50('0x20')](function(_0x527986){if(_0x527986){_0x159c43[_0xff50('0x2b')]=_[_0xff50('0x2c')](db[_0xff50('0x45')][_0xff50('0x46')]);_0x159c43['query']=_[_0xff50('0x2c')](_0x5ad05f[_0xff50('0x2d')]);_0x159c43[_0xff50('0x2e')]=_[_0xff50('0x2f')](_0x159c43[_0xff50('0x2b')],_0x159c43[_0xff50('0x2d')]);_0x5bab76[_0xff50('0x30')]=_['intersection'](_0x159c43[_0xff50('0x2b')],qs[_0xff50('0x31')](_0x5ad05f[_0xff50('0x2d')][_0xff50('0x31')]));_0x5bab76[_0xff50('0x30')]=_0x5bab76['attributes'][_0xff50('0x3c')]?_0x5bab76[_0xff50('0x30')]:_0x159c43['model'];if(!_0x5ad05f['query']['hasOwnProperty']('nolimit')){_0x5bab76[_0xff50('0x1b')]=qs[_0xff50('0x1b')](_0x5ad05f[_0xff50('0x2d')][_0xff50('0x1b')]);_0x5bab76['offset']=qs[_0xff50('0x18')](_0x5ad05f[_0xff50('0x2d')][_0xff50('0x18')]);}_0x5bab76['order']=qs[_0xff50('0x33')](_0x5ad05f['query'][_0xff50('0x33')]);_0x5bab76[_0xff50('0x34')]=qs[_0xff50('0x2e')](_[_0xff50('0x47')](_0x5ad05f[_0xff50('0x2d')],_0x159c43['filters']));_0x5bab76[_0xff50('0x34')][_0xff50('0x48')]=_0x527986['id'];if(_0x5ad05f[_0xff50('0x2d')][_0xff50('0x35')]){_0x5bab76['where']=_[_0xff50('0x36')](_0x5bab76[_0xff50('0x34')],{'$or':_[_0xff50('0x26')](_0x5bab76['attributes'],function(_0x1c2fcb){var _0xdf3c75={};_0xdf3c75[_0x1c2fcb]={'$like':'%'+_0x5ad05f['query'][_0xff50('0x35')]+'%'};return _0xdf3c75;})});}_0x5bab76=_[_0xff50('0x36')]({},_0x5bab76,_0x5ad05f[_0xff50('0x37')]);return db[_0xff50('0x45')][_0xff50('0x1a')]({'where':_0x5bab76[_0xff50('0x34')]})[_0xff50('0x20')](function(_0x11679f){_0x330ac0[_0xff50('0x1a')]=_0x11679f;if(_0x5ad05f[_0xff50('0x2d')]['includeAll']){_0x5bab76[_0xff50('0x38')]=[{'all':!![]}];}return db[_0xff50('0x45')][_0xff50('0x49')](_0x5bab76);})['then'](function(_0x3754e6){_0x330ac0[_0xff50('0x39')]=_0x3754e6;return _0x330ac0;});}})[_0xff50('0x20')](respondWithFilteredResult(_0x324704,_0x5bab76))['catch'](handleError(_0x324704,null));};
\ No newline at end of file
index 5e14425..0a4c8ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46ed=['lodash','util','api','moment','bluebird','path','rimraf','./jscriptySessionReport.attributes','exports','define','JscriptySessionReport','report_jscripty_sessions'];(function(_0x37a7c6,_0x3a84b6){var _0x539905=function(_0xa00c20){while(--_0xa00c20){_0x37a7c6['push'](_0x37a7c6['shift']());}};_0x539905(++_0x3a84b6);}(_0x46ed,0x168));var _0xd46e=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0x46ed[_0x2070da];return _0x4f9fe1;};'use strict';var _=require(_0xd46e('0x0'));var util=require(_0xd46e('0x1'));var logger=require('../../config/logger')(_0xd46e('0x2'));var moment=require(_0xd46e('0x3'));var BPromise=require(_0xd46e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd46e('0x5'));var rimraf=require(_0xd46e('0x6'));var config=require('../../config/environment');var attributes=require(_0xd46e('0x7'));module[_0xd46e('0x8')]=function(_0x160bcf,_0x25cf78){return _0x160bcf[_0xd46e('0x9')](_0xd46e('0xa'),attributes,{'tableName':_0xd46e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9fd4=['rimraf','exports','define','report_jscripty_sessions','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9fd4,0x16c));var _0x49fd=function(_0x3f0d76,_0x378fed){_0x3f0d76=_0x3f0d76-0x0;var _0x12c12e=_0x9fd4[_0x3f0d76];return _0x12c12e;};'use strict';var _=require(_0x49fd('0x0'));var util=require(_0x49fd('0x1'));var logger=require(_0x49fd('0x2'))(_0x49fd('0x3'));var moment=require(_0x49fd('0x4'));var BPromise=require(_0x49fd('0x5'));var rp=require(_0x49fd('0x6'));var fs=require('fs');var path=require(_0x49fd('0x7'));var rimraf=require(_0x49fd('0x8'));var config=require('../../config/environment');var attributes=require('./jscriptySessionReport.attributes');module[_0x49fd('0x9')]=function(_0x42fdc7,_0x1bc16e){return _0x42fdc7[_0x49fd('0xa')]('JscriptySessionReport',attributes,{'tableName':_0x49fd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index def0da1..81bc464 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb091=['JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','client','http','request','then','info'];(function(_0x1bfec9,_0x2a863a){var _0x35cb18=function(_0x257a02){while(--_0x257a02){_0x1bfec9['push'](_0x1bfec9['shift']());}};_0x35cb18(++_0x2a863a);}(_0xb091,0x16e));var _0x1b09=function(_0x53e276,_0x3e3da0){_0x53e276=_0x53e276-0x0;var _0x58fbe4=_0xb091[_0x53e276];return _0x58fbe4;};'use strict';var _=require('lodash');var util=require(_0x1b09('0x0'));var moment=require(_0x1b09('0x1'));var BPromise=require(_0x1b09('0x2'));var rs=require(_0x1b09('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1b09('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x1b09('0x5'));var config=require(_0x1b09('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x1b09('0x7')][_0x1b09('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2bf4f6,_0x5ce726,_0x142c33){return new BPromise(function(_0x8c26a5,_0x2f359f){return client[_0x1b09('0x9')](_0x2bf4f6,_0x142c33)[_0x1b09('0xa')](function(_0x3362e4){logger[_0x1b09('0xb')](_0x1b09('0xc'),_0x5ce726,_0x1b09('0xd'));logger[_0x1b09('0xe')](_0x1b09('0xf'),_0x5ce726,'request\x20sent',JSON[_0x1b09('0x10')](_0x3362e4));if(_0x3362e4[_0x1b09('0x11')]){if(_0x3362e4['error']['code']===0x1f4){logger[_0x1b09('0x11')](_0x1b09('0xc'),_0x5ce726,_0x3362e4[_0x1b09('0x11')][_0x1b09('0x12')]);return _0x2f359f(_0x3362e4[_0x1b09('0x11')][_0x1b09('0x12')]);}logger[_0x1b09('0x11')]('JscriptySessionReport,\x20%s,\x20%s',_0x5ce726,_0x3362e4[_0x1b09('0x11')]['message']);return _0x8c26a5(_0x3362e4[_0x1b09('0x11')][_0x1b09('0x12')]);}else{logger[_0x1b09('0xb')](_0x1b09('0xc'),_0x5ce726,_0x1b09('0xd'));_0x8c26a5(_0x3362e4[_0x1b09('0x13')][_0x1b09('0x12')]);}})[_0x1b09('0x14')](function(_0x1196b2){logger[_0x1b09('0x11')](_0x1b09('0xc'),_0x5ce726,_0x1196b2);_0x2f359f(_0x1196b2);});});}
\ No newline at end of file
+var _0x6455=['client','http','request','then','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x2031a8,_0x4b96d4){var _0x4d622c=function(_0x480fd0){while(--_0x480fd0){_0x2031a8['push'](_0x2031a8['shift']());}};_0x4d622c(++_0x4b96d4);}(_0x6455,0x97));var _0x5645=function(_0x68799c,_0x1d4033){_0x68799c=_0x68799c-0x0;var _0x3b0476=_0x6455[_0x68799c];return _0x3b0476;};'use strict';var _=require(_0x5645('0x0'));var util=require('util');var moment=require(_0x5645('0x1'));var BPromise=require(_0x5645('0x2'));var rs=require(_0x5645('0x3'));var fs=require('fs');var Redis=require(_0x5645('0x4'));var db=require(_0x5645('0x5'))['db'];var utils=require(_0x5645('0x6'));var logger=require('../../config/logger')(_0x5645('0x7'));var config=require(_0x5645('0x8'));var jayson=require(_0x5645('0x9'));var client=jayson[_0x5645('0xa')][_0x5645('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x37d672,_0xa14a06,_0x278d86){return new BPromise(function(_0x518a28,_0x5f4037){return client[_0x5645('0xc')](_0x37d672,_0x278d86)[_0x5645('0xd')](function(_0x38c07a){logger[_0x5645('0xe')](_0x5645('0xf'),_0xa14a06,_0x5645('0x10'));logger['debug'](_0x5645('0x11'),_0xa14a06,_0x5645('0x10'),JSON[_0x5645('0x12')](_0x38c07a));if(_0x38c07a[_0x5645('0x13')]){if(_0x38c07a['error'][_0x5645('0x14')]===0x1f4){logger['error'](_0x5645('0xf'),_0xa14a06,_0x38c07a[_0x5645('0x13')][_0x5645('0x15')]);return _0x5f4037(_0x38c07a[_0x5645('0x13')][_0x5645('0x15')]);}logger[_0x5645('0x13')](_0x5645('0xf'),_0xa14a06,_0x38c07a[_0x5645('0x13')]['message']);return _0x518a28(_0x38c07a[_0x5645('0x13')][_0x5645('0x15')]);}else{logger[_0x5645('0xe')]('JscriptySessionReport,\x20%s,\x20%s',_0xa14a06,'request\x20sent');_0x518a28(_0x38c07a[_0x5645('0x16')][_0x5645('0x15')]);}})['catch'](function(_0x35e0c7){logger[_0x5645('0x13')](_0x5645('0xf'),_0xa14a06,_0x35e0c7);_0x5f4037(_0x35e0c7);});});}
\ No newline at end of file
index 66eb45e..df0220f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0560=['path','connect-timeout','../../components/interaction/service','get','index','put','isAuthenticated','update','exports','multer'];(function(_0x3d7595,_0x23bf60){var _0x163d06=function(_0x2c3a21){while(--_0x2c3a21){_0x3d7595['push'](_0x3d7595['shift']());}};_0x163d06(++_0x23bf60);}(_0x0560,0x95));var _0x0056=function(_0x1be03b,_0xe998a){_0x1be03b=_0x1be03b-0x0;var _0x49c17e=_0x0560[_0x1be03b];return _0x49c17e;};'use strict';var multer=require(_0x0056('0x0'));var util=require('util');var path=require(_0x0056('0x1'));var timeout=require(_0x0056('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x0056('0x3'));var config=require('../../config/environment');var controller=require('./license.controller');router[_0x0056('0x4')]('/',controller[_0x0056('0x5')]);router[_0x0056('0x6')]('/:id',auth[_0x0056('0x7')](),controller[_0x0056('0x8')]);module[_0x0056('0x9')]=router;
\ No newline at end of file
+var _0xdbf7=['index','put','/:id','isAuthenticated','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x4df356,_0x2070df){var _0x1d732c=function(_0x46742a){while(--_0x46742a){_0x4df356['push'](_0x4df356['shift']());}};_0x1d732c(++_0x2070df);}(_0xdbf7,0x8d));var _0x7dbf=function(_0x4c0a9d,_0x554b77){_0x4c0a9d=_0x4c0a9d-0x0;var _0x2bb384=_0xdbf7[_0x4c0a9d];return _0x2bb384;};'use strict';var multer=require(_0x7dbf('0x0'));var util=require(_0x7dbf('0x1'));var path=require(_0x7dbf('0x2'));var timeout=require(_0x7dbf('0x3'));var express=require(_0x7dbf('0x4'));var router=express[_0x7dbf('0x5')]();var fs_extra=require(_0x7dbf('0x6'));var auth=require(_0x7dbf('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x7dbf('0x8'));var controller=require('./license.controller');router['get']('/',controller[_0x7dbf('0x9')]);router[_0x7dbf('0xa')](_0x7dbf('0xb'),auth[_0x7dbf('0xc')](),controller[_0x7dbf('0xd')]);module[_0x7dbf('0xe')]=router;
\ No newline at end of file
index b60501f..206b07e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e0e=['INTEGER','TEXT','STRING'];(function(_0xf9b0b2,_0x48cc4c){var _0x15efc9=function(_0x438163){while(--_0x438163){_0xf9b0b2['push'](_0xf9b0b2['shift']());}};_0x15efc9(++_0x48cc4c);}(_0x5e0e,0xa6));var _0xe5e0=function(_0x2247ab,_0x3f4162){_0x2247ab=_0x2247ab-0x0;var _0x430062=_0x5e0e[_0x2247ab];return _0x430062;};'use strict';var Sequelize=require('sequelize');module['exports']={'license':{'type':Sequelize[_0xe5e0('0x0')]},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0xe5e0('0x1')]},'chatLicenseExceeded':{'type':Sequelize[_0xe5e0('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd163=['STRING','INTEGER','sequelize','exports','TEXT'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xd163,0x18d));var _0x3d16=function(_0x5f5cce,_0x138cc5){_0x5f5cce=_0x5f5cce-0x0;var _0x705ecf=_0xd163[_0x5f5cce];return _0x705ecf;};'use strict';var Sequelize=require(_0x3d16('0x0'));module[_0x3d16('0x1')]={'license':{'type':Sequelize[_0x3d16('0x2')]},'data1':{'type':Sequelize[_0x3d16('0x3')]},'data2':{'type':Sequelize[_0x3d16('0x3')]},'chatLicenseExceeded':{'type':Sequelize[_0x3d16('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 126e946..7c29d7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','error','stack','send','index','model','License','query','intersection','fields','attributes','merge','options','getLicense','catch','body','find','params','get','key','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','ioredis'];(function(_0x37f9fa,_0x4acb2d){var _0x3e4ffe=function(_0x802327){while(--_0x802327){_0x37f9fa['push'](_0x37f9fa['shift']());}};_0x3e4ffe(++_0x4acb2d);}(_0x1261,0x144));var _0x1126=function(_0x4fc702,_0x590060){_0x4fc702=_0x4fc702-0x0;var _0x1357d3=_0x1261[_0x4fc702];return _0x1357d3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1126('0x0'));var zipdir=require(_0x1126('0x1'));var jsonpatch=require(_0x1126('0x2'));var rp=require(_0x1126('0x3'));var moment=require(_0x1126('0x4'));var BPromise=require(_0x1126('0x5'));var Mustache=require(_0x1126('0x6'));var util=require(_0x1126('0x7'));var path=require(_0x1126('0x8'));var sox=require(_0x1126('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1126('0xa'));var _=require(_0x1126('0xb'));var squel=require('squel');var crypto=require(_0x1126('0xc'));var jsforce=require(_0x1126('0xd'));var deskjs=require(_0x1126('0xe'));var toCsv=require(_0x1126('0xf'));var querystring=require(_0x1126('0x10'));var Papa=require('papaparse');var Redis=require(_0x1126('0x11'));var authService=require(_0x1126('0x12'));var qs=require(_0x1126('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1126('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x1126('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x1126('0x16'));var db=require(_0x1126('0x17'))['db'];function respondWithStatusCode(_0xd26a32,_0x273896){_0x273896=_0x273896||0xcc;return function(_0xca0355){if(_0xca0355){return _0xd26a32[_0x1126('0x18')](_0x273896);}return _0xd26a32[_0x1126('0x19')](_0x273896)[_0x1126('0x1a')]();};}function respondWithResult(_0x43850b,_0x53a8f0){_0x53a8f0=_0x53a8f0||0xc8;return function(_0x5de9a7){if(_0x5de9a7){return _0x43850b[_0x1126('0x19')](_0x53a8f0)[_0x1126('0x1b')](_0x5de9a7);}};}function respondWithFilteredResult(_0x279455,_0x4be0c6){return function(_0x45149c){if(_0x45149c){var _0x4794a7=typeof _0x4be0c6[_0x1126('0x1c')]===_0x1126('0x1d')&&typeof _0x4be0c6[_0x1126('0x1e')]==='undefined';var _0x245cd7=_0x45149c[_0x1126('0x1f')];var _0x4a7b49=_0x4794a7?0x0:_0x4be0c6['offset'];var _0x22ae0b=_0x4794a7?_0x45149c[_0x1126('0x1f')]:_0x4be0c6['offset']+_0x4be0c6['limit'];var _0x4564c0;if(_0x22ae0b>=_0x245cd7){_0x22ae0b=_0x245cd7;_0x4564c0=0xc8;}else{_0x4564c0=0xce;}_0x279455['status'](_0x4564c0);return _0x279455[_0x1126('0x20')](_0x1126('0x21'),_0x4a7b49+'-'+_0x22ae0b+'/'+_0x245cd7)[_0x1126('0x1b')](_0x45149c);}return null;};}function patchUpdates(_0x54400a){return function(_0x2a08ba){try{jsonpatch['apply'](_0x2a08ba,_0x54400a,!![]);}catch(_0x56efeb){return BPromise[_0x1126('0x22')](_0x56efeb);}return _0x2a08ba[_0x1126('0x23')]();};}function saveUpdates(_0x25b24b,_0x36d254){return function(_0x526ca1){if(_0x526ca1){return _0x526ca1[_0x1126('0x24')](_0x25b24b)[_0x1126('0x25')](function(_0x48a08d){return _0x48a08d;});}return null;};}function removeEntity(_0x2175fa,_0x59cd8e){return function(_0x529dd9){if(_0x529dd9){return _0x529dd9['destroy']()[_0x1126('0x25')](function(){_0x2175fa[_0x1126('0x19')](0xcc)[_0x1126('0x1a')]();});}};}function handleEntityNotFound(_0x34bcf1,_0x566c09){return function(_0x1b07a7){if(!_0x1b07a7){_0x34bcf1[_0x1126('0x18')](0x194);}return _0x1b07a7;};}function handleError(_0x38119d,_0x589725){_0x589725=_0x589725||0x1f4;return function(_0x35eec3){logger[_0x1126('0x26')](_0x35eec3[_0x1126('0x27')]);if(_0x35eec3['name']){delete _0x35eec3['name'];}_0x38119d[_0x1126('0x19')](_0x589725)[_0x1126('0x28')](_0x35eec3);};}var utilLicense=require('../../config/license/util');exports[_0x1126('0x29')]=function(_0x23d2bc,_0x4a334a){var _0x3fa694={'raw':!![],'where':{'id':0x1}},_0x4bf807={};_0x4bf807[_0x1126('0x2a')]=_['keys'](db[_0x1126('0x2b')]['rawAttributes']);_0x4bf807[_0x1126('0x2c')]=_['keys'](_0x23d2bc['query']);_0x4bf807['filters']=_[_0x1126('0x2d')](_0x4bf807[_0x1126('0x2a')],_0x4bf807[_0x1126('0x2c')]);_0x3fa694['attributes']=_[_0x1126('0x2d')](_0x4bf807[_0x1126('0x2a')],qs['fields'](_0x23d2bc[_0x1126('0x2c')][_0x1126('0x2e')]));_0x3fa694[_0x1126('0x2f')]=_0x3fa694[_0x1126('0x2f')]['length']?_0x3fa694['attributes']:_0x4bf807[_0x1126('0x2a')];_0x3fa694=_[_0x1126('0x30')]({},_0x3fa694,_0x23d2bc[_0x1126('0x31')]);return utilLicense[_0x1126('0x32')](_0x3fa694)['then'](respondWithResult(_0x4a334a,null))[_0x1126('0x33')](handleError(_0x4a334a,null));};exports[_0x1126('0x24')]=function(_0x313ebe,_0x22436c){if(_0x313ebe[_0x1126('0x34')]['id']){delete _0x313ebe['body']['id'];}return db[_0x1126('0x2b')][_0x1126('0x35')]({'where':{'id':_0x313ebe[_0x1126('0x36')]['id']}})[_0x1126('0x25')](handleEntityNotFound(_0x22436c,null))['then'](function(_0x4ca51c){var _0x22827a=_0x4ca51c[_0x1126('0x37')]({'plain':!![]});return utilLicense['checkLicense'](_0x22827a,_0x313ebe[_0x1126('0x34')][_0x1126('0x38')]);})[_0x1126('0x25')](function(_0x5c08b9){if(!_0x5c08b9['demo']){return saveUpdates(_0x313ebe[_0x1126('0x34')],null);}return _0x5c08b9;})[_0x1126('0x25')](respondWithResult(_0x22436c,null))[_0x1126('0x33')](handleError(_0x22436c,null));};
\ No newline at end of file
+var _0xabce=['status','end','json','limit','count','offset','Content-Range','apply','reject','save','update','then','sendStatus','error','name','send','model','keys','License','rawAttributes','query','intersection','attributes','fields','merge','getLicense','catch','find','get','body','demo','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','ejs','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'];(function(_0x2b6766,_0x36d14c){var _0x4db1a2=function(_0x3bffb7){while(--_0x3bffb7){_0x2b6766['push'](_0x2b6766['shift']());}};_0x4db1a2(++_0x36d14c);}(_0xabce,0x103));var _0xeabc=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xabce[_0x311c35];return _0x5cc50c;};'use strict';var emlformat=require(_0xeabc('0x0'));var rimraf=require(_0xeabc('0x1'));var zipdir=require(_0xeabc('0x2'));var jsonpatch=require(_0xeabc('0x3'));var rp=require(_0xeabc('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xeabc('0x5'));var util=require(_0xeabc('0x6'));var path=require(_0xeabc('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xeabc('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xeabc('0x9'));var squel=require('squel');var crypto=require(_0xeabc('0xa'));var jsforce=require(_0xeabc('0xb'));var deskjs=require(_0xeabc('0xc'));var toCsv=require('to-csv');var querystring=require(_0xeabc('0xd'));var Papa=require(_0xeabc('0xe'));var Redis=require(_0xeabc('0xf'));var authService=require(_0xeabc('0x10'));var qs=require(_0xeabc('0x11'));var as=require(_0xeabc('0x12'));var hardwareService=require(_0xeabc('0x13'));var logger=require(_0xeabc('0x14'))(_0xeabc('0x15'));var utils=require(_0xeabc('0x16'));var config=require(_0xeabc('0x17'));var licenseUtil=require(_0xeabc('0x18'));var db=require(_0xeabc('0x19'))['db'];function respondWithStatusCode(_0x3fd0b5,_0x36a92e){_0x36a92e=_0x36a92e||0xcc;return function(_0xcfbf06){if(_0xcfbf06){return _0x3fd0b5['sendStatus'](_0x36a92e);}return _0x3fd0b5[_0xeabc('0x1a')](_0x36a92e)[_0xeabc('0x1b')]();};}function respondWithResult(_0x3251c6,_0x55f0de){_0x55f0de=_0x55f0de||0xc8;return function(_0x5f4ee8){if(_0x5f4ee8){return _0x3251c6[_0xeabc('0x1a')](_0x55f0de)[_0xeabc('0x1c')](_0x5f4ee8);}};}function respondWithFilteredResult(_0x326bac,_0x53d5cb){return function(_0xf913d7){if(_0xf913d7){var _0x638976=typeof _0x53d5cb['offset']==='undefined'&&typeof _0x53d5cb[_0xeabc('0x1d')]==='undefined';var _0x3d0e21=_0xf913d7[_0xeabc('0x1e')];var _0x58a3c0=_0x638976?0x0:_0x53d5cb[_0xeabc('0x1f')];var _0x31dd53=_0x638976?_0xf913d7[_0xeabc('0x1e')]:_0x53d5cb[_0xeabc('0x1f')]+_0x53d5cb[_0xeabc('0x1d')];var _0x5d92e5;if(_0x31dd53>=_0x3d0e21){_0x31dd53=_0x3d0e21;_0x5d92e5=0xc8;}else{_0x5d92e5=0xce;}_0x326bac[_0xeabc('0x1a')](_0x5d92e5);return _0x326bac['set'](_0xeabc('0x20'),_0x58a3c0+'-'+_0x31dd53+'/'+_0x3d0e21)[_0xeabc('0x1c')](_0xf913d7);}return null;};}function patchUpdates(_0x502947){return function(_0x28063a){try{jsonpatch[_0xeabc('0x21')](_0x28063a,_0x502947,!![]);}catch(_0x254590){return BPromise[_0xeabc('0x22')](_0x254590);}return _0x28063a[_0xeabc('0x23')]();};}function saveUpdates(_0x4e99a4,_0xecdbf){return function(_0x10c675){if(_0x10c675){return _0x10c675[_0xeabc('0x24')](_0x4e99a4)['then'](function(_0x457f27){return _0x457f27;});}return null;};}function removeEntity(_0x3854d2,_0x214953){return function(_0x319119){if(_0x319119){return _0x319119['destroy']()[_0xeabc('0x25')](function(){_0x3854d2['status'](0xcc)[_0xeabc('0x1b')]();});}};}function handleEntityNotFound(_0x4d4e29,_0x811f0d){return function(_0x12acbd){if(!_0x12acbd){_0x4d4e29[_0xeabc('0x26')](0x194);}return _0x12acbd;};}function handleError(_0x3f194e,_0x3a1a04){_0x3a1a04=_0x3a1a04||0x1f4;return function(_0x137293){logger[_0xeabc('0x27')](_0x137293['stack']);if(_0x137293['name']){delete _0x137293[_0xeabc('0x28')];}_0x3f194e['status'](_0x3a1a04)[_0xeabc('0x29')](_0x137293);};}var utilLicense=require(_0xeabc('0x18'));exports['index']=function(_0x2163e6,_0x38572d){var _0x2b568f={'raw':!![],'where':{'id':0x1}},_0x2f8633={};_0x2f8633[_0xeabc('0x2a')]=_[_0xeabc('0x2b')](db[_0xeabc('0x2c')][_0xeabc('0x2d')]);_0x2f8633[_0xeabc('0x2e')]=_['keys'](_0x2163e6[_0xeabc('0x2e')]);_0x2f8633['filters']=_[_0xeabc('0x2f')](_0x2f8633[_0xeabc('0x2a')],_0x2f8633[_0xeabc('0x2e')]);_0x2b568f[_0xeabc('0x30')]=_[_0xeabc('0x2f')](_0x2f8633[_0xeabc('0x2a')],qs[_0xeabc('0x31')](_0x2163e6['query'][_0xeabc('0x31')]));_0x2b568f[_0xeabc('0x30')]=_0x2b568f[_0xeabc('0x30')]['length']?_0x2b568f[_0xeabc('0x30')]:_0x2f8633[_0xeabc('0x2a')];_0x2b568f=_[_0xeabc('0x32')]({},_0x2b568f,_0x2163e6['options']);return utilLicense[_0xeabc('0x33')](_0x2b568f)[_0xeabc('0x25')](respondWithResult(_0x38572d,null))[_0xeabc('0x34')](handleError(_0x38572d,null));};exports['update']=function(_0xf98c7c,_0x286203){if(_0xf98c7c['body']['id']){delete _0xf98c7c['body']['id'];}return db[_0xeabc('0x2c')][_0xeabc('0x35')]({'where':{'id':_0xf98c7c['params']['id']}})[_0xeabc('0x25')](handleEntityNotFound(_0x286203,null))[_0xeabc('0x25')](function(_0x3edee7){var _0x10434e=_0x3edee7[_0xeabc('0x36')]({'plain':!![]});return utilLicense['checkLicense'](_0x10434e,_0xf98c7c[_0xeabc('0x37')]['key']);})[_0xeabc('0x25')](function(_0x2bda29){if(!_0x2bda29[_0xeabc('0x38')]){return saveUpdates(_0xf98c7c['body'],null);}return _0x2bda29;})['then'](respondWithResult(_0x286203,null))[_0xeabc('0x34')](handleError(_0x286203,null));};
\ No newline at end of file
index c5dcc1a..f60b116 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc4c=['./license.attributes','exports','define','License','license','lodash','util','../../config/logger','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x1b1646,_0x197725){var _0x2a9482=function(_0x555db2){while(--_0x555db2){_0x1b1646['push'](_0x1b1646['shift']());}};_0x2a9482(++_0x197725);}(_0xcc4c,0x149));var _0xccc4=function(_0x587185,_0xb893cf){_0x587185=_0x587185-0x0;var _0x7dedab=_0xcc4c[_0x587185];return _0x7dedab;};'use strict';var _=require(_0xccc4('0x0'));var util=require(_0xccc4('0x1'));var logger=require(_0xccc4('0x2'))('api');var moment=require('moment');var BPromise=require(_0xccc4('0x3'));var rp=require(_0xccc4('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xccc4('0x5'));var config=require(_0xccc4('0x6'));var attributes=require(_0xccc4('0x7'));module[_0xccc4('0x8')]=function(_0x4032d6,_0x5c097c){return _0x4032d6[_0xccc4('0x9')](_0xccc4('0xa'),attributes,{'tableName':_0xccc4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6834=['api','bluebird','path','rimraf','exports','License','util','../../config/logger'];(function(_0x46a634,_0x439b70){var _0x42007a=function(_0x2a9e29){while(--_0x2a9e29){_0x46a634['push'](_0x46a634['shift']());}};_0x42007a(++_0x439b70);}(_0x6834,0x1d6));var _0x4683=function(_0x3c236c,_0x59ba97){_0x3c236c=_0x3c236c-0x0;var _0xe3a3e3=_0x6834[_0x3c236c];return _0xe3a3e3;};'use strict';var _=require('lodash');var util=require(_0x4683('0x0'));var logger=require(_0x4683('0x1'))(_0x4683('0x2'));var moment=require('moment');var BPromise=require(_0x4683('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4683('0x4'));var rimraf=require(_0x4683('0x5'));var config=require('../../config/environment');var attributes=require('./license.attributes');module[_0x4683('0x6')]=function(_0x4631c1,_0x1f7b16){return _0x4631c1['define'](_0x4683('0x7'),attributes,{'tableName':'license','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c73f75c..9d4723f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9398=['../../config/logger','../../config/environment','jayson/promise','http','request','info','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','stringify','error','message','License,\x20%s,\x20%s','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x2934fb,_0x1c4dbf){var _0x13dc11=function(_0x373268){while(--_0x373268){_0x2934fb['push'](_0x2934fb['shift']());}};_0x13dc11(++_0x1c4dbf);}(_0x9398,0x1b2));var _0x8939=function(_0x1d9ee3,_0x53ff2a){_0x1d9ee3=_0x1d9ee3-0x0;var _0x46fbac=_0x9398[_0x1d9ee3];return _0x46fbac;};'use strict';var _=require(_0x8939('0x0'));var util=require(_0x8939('0x1'));var moment=require(_0x8939('0x2'));var BPromise=require('bluebird');var rs=require(_0x8939('0x3'));var fs=require('fs');var Redis=require(_0x8939('0x4'));var db=require(_0x8939('0x5'))['db'];var utils=require(_0x8939('0x6'));var logger=require(_0x8939('0x7'))('rpc');var config=require(_0x8939('0x8'));var jayson=require(_0x8939('0x9'));var client=jayson['client'][_0x8939('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x9006ea,_0x30e906,_0x527183){return new BPromise(function(_0x34e2c4,_0x1ea6fb){return client[_0x8939('0xb')](_0x9006ea,_0x527183)['then'](function(_0x5ba0b8){logger[_0x8939('0xc')]('License,\x20%s,\x20%s',_0x30e906,_0x8939('0xd'));logger[_0x8939('0xe')](_0x8939('0xf'),_0x30e906,_0x8939('0xd'),JSON[_0x8939('0x10')](_0x5ba0b8));if(_0x5ba0b8['error']){if(_0x5ba0b8[_0x8939('0x11')]['code']===0x1f4){logger[_0x8939('0x11')]('License,\x20%s,\x20%s',_0x30e906,_0x5ba0b8[_0x8939('0x11')][_0x8939('0x12')]);return _0x1ea6fb(_0x5ba0b8[_0x8939('0x11')][_0x8939('0x12')]);}logger[_0x8939('0x11')](_0x8939('0x13'),_0x30e906,_0x5ba0b8['error']['message']);return _0x34e2c4(_0x5ba0b8['error'][_0x8939('0x12')]);}else{logger[_0x8939('0xc')](_0x8939('0x13'),_0x30e906,_0x8939('0xd'));_0x34e2c4(_0x5ba0b8['result']['message']);}})[_0x8939('0x14')](function(_0x12ad7e){logger['error'](_0x8939('0x13'),_0x30e906,_0x12ad7e);_0x1ea6fb(_0x12ad7e);});});}
\ No newline at end of file
+var _0x2be7=['ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','License,\x20%s,\x20%s','debug','License,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','catch','moment'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x2be7,0x1c7));var _0x72be=function(_0x4ded50,_0x4a6af3){_0x4ded50=_0x4ded50-0x0;var _0xa92135=_0x2be7[_0x4ded50];return _0xa92135;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x72be('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x72be('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0x72be('0x2'));var logger=require('../../config/logger')(_0x72be('0x3'));var config=require(_0x72be('0x4'));var jayson=require(_0x72be('0x5'));var client=jayson[_0x72be('0x6')][_0x72be('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5d99dc,_0x13ca58,_0x19eec3){return new BPromise(function(_0x17ebb1,_0x24af5b){return client[_0x72be('0x8')](_0x5d99dc,_0x19eec3)[_0x72be('0x9')](function(_0x2cbbe9){logger['info'](_0x72be('0xa'),_0x13ca58,'request\x20sent');logger[_0x72be('0xb')](_0x72be('0xc'),_0x13ca58,_0x72be('0xd'),JSON['stringify'](_0x2cbbe9));if(_0x2cbbe9[_0x72be('0xe')]){if(_0x2cbbe9[_0x72be('0xe')][_0x72be('0xf')]===0x1f4){logger[_0x72be('0xe')](_0x72be('0xa'),_0x13ca58,_0x2cbbe9[_0x72be('0xe')]['message']);return _0x24af5b(_0x2cbbe9[_0x72be('0xe')][_0x72be('0x10')]);}logger['error'](_0x72be('0xa'),_0x13ca58,_0x2cbbe9[_0x72be('0xe')][_0x72be('0x10')]);return _0x17ebb1(_0x2cbbe9[_0x72be('0xe')][_0x72be('0x10')]);}else{logger[_0x72be('0x11')](_0x72be('0xa'),_0x13ca58,'request\x20sent');_0x17ebb1(_0x2cbbe9['result'][_0x72be('0x10')]);}})[_0x72be('0x12')](function(_0x30b79d){logger[_0x72be('0xe')](_0x72be('0xa'),_0x13ca58,_0x30b79d);_0x24af5b(_0x30b79d);});});}
\ No newline at end of file
index 3ff72b8..78193c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfbb=['send','/:id/users','addAgents','put','update','delete','removeDispositions','removeAnswers','removeImap','removeSmtp','destroy','removeAgents','exports','util','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailAccount.controller','get','isAuthenticated','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/in_servers','getImap','/:id/out_servers','getSmtp','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','/:id/verify','verifySmtp','post','addAnswer','create','addImap','addSmtp','addInteraction','addApplications','/:id/send'];(function(_0xdcbfa2,_0xf9526b){var _0x5c35e4=function(_0x1383e3){while(--_0x1383e3){_0xdcbfa2['push'](_0xdcbfa2['shift']());}};_0x5c35e4(++_0xf9526b);}(_0xcfbb,0x1a2));var _0xbcfb=function(_0x517869,_0x1f383b){_0x517869=_0x517869-0x0;var _0x2e6dd7=_0xcfbb[_0x517869];return _0x2e6dd7;};'use strict';var multer=require('multer');var util=require(_0xbcfb('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbcfb('0x1'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xbcfb('0x2'));var interaction=require(_0xbcfb('0x3'));var config=require(_0xbcfb('0x4'));var controller=require(_0xbcfb('0x5'));router[_0xbcfb('0x6')]('/',auth['isAuthenticated'](),controller['index']);router['get']('/describe',auth[_0xbcfb('0x7')](),controller['describe']);router[_0xbcfb('0x6')](_0xbcfb('0x8'),auth['isAuthenticated'](),controller[_0xbcfb('0x9')]);router['get'](_0xbcfb('0xa'),auth['isAuthenticated'](),controller[_0xbcfb('0xb')]);router[_0xbcfb('0x6')](_0xbcfb('0xc'),auth['isAuthenticated'](),controller['getAnswers']);router[_0xbcfb('0x6')](_0xbcfb('0xd'),auth[_0xbcfb('0x7')](),controller[_0xbcfb('0xe')]);router[_0xbcfb('0x6')](_0xbcfb('0xf'),auth['isAuthenticated'](),controller[_0xbcfb('0x10')]);router[_0xbcfb('0x6')](_0xbcfb('0x11'),auth['isAuthenticated'](),controller[_0xbcfb('0x12')]);router[_0xbcfb('0x6')](_0xbcfb('0x13'),auth[_0xbcfb('0x7')](),controller[_0xbcfb('0x14')]);router['get'](_0xbcfb('0x15'),auth[_0xbcfb('0x7')](),controller['getMessages']);router[_0xbcfb('0x6')](_0xbcfb('0x16'),auth[_0xbcfb('0x7')](),controller[_0xbcfb('0x17')]);router['get']('/:id/users',auth['isAuthenticated'](),controller['getAgents']);router[_0xbcfb('0x18')](_0xbcfb('0xa'),auth['isAuthenticated'](),controller['addDisposition']);router[_0xbcfb('0x18')](_0xbcfb('0xc'),auth[_0xbcfb('0x7')](),controller[_0xbcfb('0x19')]);router['post']('/',auth[_0xbcfb('0x7')](),controller[_0xbcfb('0x1a')]);router['post'](_0xbcfb('0xd'),auth['isAuthenticated'](),controller[_0xbcfb('0x1b')]);router[_0xbcfb('0x18')]('/:id/out_servers',auth['isAuthenticated'](),controller[_0xbcfb('0x1c')]);router[_0xbcfb('0x18')](_0xbcfb('0x11'),auth[_0xbcfb('0x7')](),controller[_0xbcfb('0x1d')]);router['post'](_0xbcfb('0x13'),auth[_0xbcfb('0x7')](),controller[_0xbcfb('0x1e')]);router[_0xbcfb('0x18')](_0xbcfb('0x1f'),auth[_0xbcfb('0x7')](),controller[_0xbcfb('0x20')]);router['post'](_0xbcfb('0x21'),auth[_0xbcfb('0x7')](),controller[_0xbcfb('0x22')]);router[_0xbcfb('0x23')](_0xbcfb('0x8'),auth[_0xbcfb('0x7')](),controller[_0xbcfb('0x24')]);router[_0xbcfb('0x25')](_0xbcfb('0xa'),auth[_0xbcfb('0x7')](),controller[_0xbcfb('0x26')]);router[_0xbcfb('0x25')](_0xbcfb('0xc'),auth[_0xbcfb('0x7')](),controller[_0xbcfb('0x27')]);router[_0xbcfb('0x25')](_0xbcfb('0xd'),auth[_0xbcfb('0x7')](),controller[_0xbcfb('0x28')]);router[_0xbcfb('0x25')](_0xbcfb('0xf'),auth['isAuthenticated'](),controller[_0xbcfb('0x29')]);router[_0xbcfb('0x25')]('/:id',auth['isAuthenticated'](),controller[_0xbcfb('0x2a')]);router['delete'](_0xbcfb('0x21'),auth[_0xbcfb('0x7')](),controller[_0xbcfb('0x2b')]);module[_0xbcfb('0x2c')]=router;
\ No newline at end of file
+var _0xd95f=['/:id/canned_answers','getAnswers','/:id/in_servers','/:id/out_servers','getSmtp','/:id/interactions','getInteractions','getApplications','/:id/messages','getMessages','verifySmtp','getAgents','post','addDisposition','addAnswer','addImap','addInteraction','/:id/applications','addApplications','/:id/send','send','put','update','delete','removeDispositions','removeAnswers','removeImap','/:id','destroy','/:id/users','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./mailAccount.controller','get','isAuthenticated','index','show','/:id/dispositions','getDispositions'];(function(_0x181135,_0x1bf463){var _0x32a29c=function(_0x508d3f){while(--_0x508d3f){_0x181135['push'](_0x181135['shift']());}};_0x32a29c(++_0x1bf463);}(_0xd95f,0x110));var _0xfd95=function(_0x542add,_0x55194d){_0x542add=_0x542add-0x0;var _0x51840f=_0xd95f[_0x542add];return _0x51840f;};'use strict';var multer=require(_0xfd95('0x0'));var util=require(_0xfd95('0x1'));var path=require(_0xfd95('0x2'));var timeout=require(_0xfd95('0x3'));var express=require(_0xfd95('0x4'));var router=express[_0xfd95('0x5')]();var fs_extra=require(_0xfd95('0x6'));var auth=require(_0xfd95('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xfd95('0x8'));var controller=require(_0xfd95('0x9'));router[_0xfd95('0xa')]('/',auth[_0xfd95('0xb')](),controller[_0xfd95('0xc')]);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router[_0xfd95('0xa')]('/:id',auth[_0xfd95('0xb')](),controller[_0xfd95('0xd')]);router[_0xfd95('0xa')](_0xfd95('0xe'),auth[_0xfd95('0xb')](),controller[_0xfd95('0xf')]);router['get'](_0xfd95('0x10'),auth[_0xfd95('0xb')](),controller[_0xfd95('0x11')]);router[_0xfd95('0xa')](_0xfd95('0x12'),auth[_0xfd95('0xb')](),controller['getImap']);router[_0xfd95('0xa')](_0xfd95('0x13'),auth[_0xfd95('0xb')](),controller[_0xfd95('0x14')]);router['get'](_0xfd95('0x15'),auth['isAuthenticated'](),controller[_0xfd95('0x16')]);router[_0xfd95('0xa')]('/:id/applications',auth[_0xfd95('0xb')](),controller[_0xfd95('0x17')]);router[_0xfd95('0xa')](_0xfd95('0x18'),auth['isAuthenticated'](),controller[_0xfd95('0x19')]);router[_0xfd95('0xa')]('/:id/verify',auth[_0xfd95('0xb')](),controller[_0xfd95('0x1a')]);router[_0xfd95('0xa')]('/:id/users',auth[_0xfd95('0xb')](),controller[_0xfd95('0x1b')]);router[_0xfd95('0x1c')](_0xfd95('0xe'),auth[_0xfd95('0xb')](),controller[_0xfd95('0x1d')]);router[_0xfd95('0x1c')](_0xfd95('0x10'),auth[_0xfd95('0xb')](),controller[_0xfd95('0x1e')]);router[_0xfd95('0x1c')]('/',auth['isAuthenticated'](),controller['create']);router[_0xfd95('0x1c')](_0xfd95('0x12'),auth[_0xfd95('0xb')](),controller[_0xfd95('0x1f')]);router[_0xfd95('0x1c')]('/:id/out_servers',auth[_0xfd95('0xb')](),controller['addSmtp']);router[_0xfd95('0x1c')](_0xfd95('0x15'),auth['isAuthenticated'](),controller[_0xfd95('0x20')]);router['post'](_0xfd95('0x21'),auth[_0xfd95('0xb')](),controller[_0xfd95('0x22')]);router[_0xfd95('0x1c')](_0xfd95('0x23'),auth[_0xfd95('0xb')](),controller[_0xfd95('0x24')]);router['post']('/:id/users',auth[_0xfd95('0xb')](),controller['addAgents']);router[_0xfd95('0x25')]('/:id',auth[_0xfd95('0xb')](),controller[_0xfd95('0x26')]);router[_0xfd95('0x27')](_0xfd95('0xe'),auth[_0xfd95('0xb')](),controller[_0xfd95('0x28')]);router[_0xfd95('0x27')](_0xfd95('0x10'),auth['isAuthenticated'](),controller[_0xfd95('0x29')]);router[_0xfd95('0x27')](_0xfd95('0x12'),auth[_0xfd95('0xb')](),controller[_0xfd95('0x2a')]);router['delete'](_0xfd95('0x13'),auth[_0xfd95('0xb')](),controller['removeSmtp']);router[_0xfd95('0x27')](_0xfd95('0x2b'),auth[_0xfd95('0xb')](),controller[_0xfd95('0x2c')]);router['delete'](_0xfd95('0x2d'),auth[_0xfd95('0xb')](),controller[_0xfd95('0x2e')]);module[_0xfd95('0x2f')]=router;
\ No newline at end of file
index 3ab828d..b006b16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6108=['Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','sequelize','STRING','BOOLEAN','TEXT'];(function(_0x197213,_0x522124){var _0x48f27a=function(_0x16afed){while(--_0x16afed){_0x197213['push'](_0x197213['shift']());}};_0x48f27a(++_0x522124);}(_0x6108,0xbc));var _0x8610=function(_0x4c1974,_0x499c77){_0x4c1974=_0x4c1974-0x0;var _0x16058d=_0x6108[_0x4c1974];return _0x16058d;};'use strict';var Sequelize=require(_0x8610('0x0'));module['exports']={'description':{'type':Sequelize[_0x8610('0x1')]},'name':{'type':Sequelize[_0x8610('0x1')],'allowNull':![]},'service':{'type':Sequelize[_0x8610('0x2')],'defaultValue':![]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'key':{'type':Sequelize[_0x8610('0x1')],'allowNull':![]},'template':{'type':Sequelize[_0x8610('0x3')]},'markAsUnread':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fontFamily':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x8610('0x4')},'fontSize':{'type':Sequelize[_0x8610('0x5')](0x2)[_0x8610('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x8610('0x3')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}';}},'notificationSound':{'type':Sequelize[_0x8610('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x8610('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x8610('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x8610('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x8610('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x8610('0x5')],'allowNull':!![],'defaultValue':null,'comment':_0x8610('0x7')},'mandatoryDisposition':{'type':Sequelize[_0x8610('0x2')],'defaultValue':![],'comment':_0x8610('0x8'),'set':function(_0x1da432){if(!_0x1da432)this['setDataValue'](_0x8610('0x9'),null);this[_0x8610('0xa')](_0x8610('0xb'),_0x1da432);}}};
\ No newline at end of file
+var _0xc23a=['mandatoryDisposition','exports','STRING','TEXT','Arial,Helvetica,sans-serif','INTEGER','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','BOOLEAN','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue'];(function(_0x5bf25f,_0x22a6aa){var _0x2e2cfb=function(_0x3385f0){while(--_0x3385f0){_0x5bf25f['push'](_0x5bf25f['shift']());}};_0x2e2cfb(++_0x22a6aa);}(_0xc23a,0xd2));var _0xac23=function(_0x503564,_0x55867e){_0x503564=_0x503564-0x0;var _0x4be9fd=_0xc23a[_0x503564];return _0x4be9fd;};'use strict';var Sequelize=require('sequelize');module[_0xac23('0x0')]={'description':{'type':Sequelize[_0xac23('0x1')]},'name':{'type':Sequelize[_0xac23('0x1')],'allowNull':![]},'service':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0xac23('0x1')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'template':{'type':Sequelize[_0xac23('0x2')]},'markAsUnread':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0xac23('0x1')],'allowNull':![],'defaultValue':_0xac23('0x3')},'fontSize':{'type':Sequelize[_0xac23('0x4')](0x2)['UNSIGNED'],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xac23('0x5');}},'notificationSound':{'type':Sequelize[_0xac23('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xac23('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xac23('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xac23('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xac23('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xac23('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xac23('0x7'),'set':function(_0x7d1836){if(!_0x7d1836)this['setDataValue'](_0xac23('0x8'),null);this[_0xac23('0x9')](_0xac23('0xa'),_0x7d1836);}}};
\ No newline at end of file
index 4f186da..bf0e462 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51d2=['util','path','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','jayson/promise','client','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','sendStatus','status','end','json','undefined','limit','count','offset','set','reject','save','destroy','get','MailAccounts','UserProfileResource','name','send','index','MailServerIn','Imap','MailServerOut','Smtp','Pause','mandatoryDispositionPause','map','MailAccount','type','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','pick','filter','where','merge','options','includeAll','include','findAll','catch','show','params','rawAttributes','find','update','body','describe','addDisposition','MailAccountId','Disposition','getDispositions','findOne','hasOwnProperty','sort','rows','removeDispositions','addAnswer','create','getAnswers','CannedAnswer','removeAnswers','ids','email','ListId','active','description','isNil','cservice','cauthentication','user','cuser','password','pass','cpassword','authentication','host','port','service','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','getSmtp','removeSmtp','addInteraction','MailInteraction','omit','getInteractions','Contact','fullname','internal','tag','sequelize','transaction','MailApplication','priority','getApplications','MailMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','true','CmList','List','CmContact','updatedAt','DESC','from','%s\x20<%s>','attachments','join','server/files/attachments','basename','secure','auth','SendMail','sendMail','List\x20not\x20found','Contacts','messageId','subject','attach','Messages','verifySmtp','VerifySmtp','Sequelize','ValidationError','addAgents','spread','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','emit','User','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache'];(function(_0x483102,_0x54e93d){var _0x5cc885=function(_0x54931c){while(--_0x54931c){_0x483102['push'](_0x483102['shift']());}};_0x5cc885(++_0x54e93d);}(_0x51d2,0x17d));var _0x251d=function(_0x2534cf,_0x545be6){_0x2534cf=_0x2534cf-0x0;var _0x221461=_0x51d2[_0x2534cf];return _0x221461;};'use strict';var emlformat=require(_0x251d('0x0'));var rimraf=require(_0x251d('0x1'));var zipdir=require(_0x251d('0x2'));var jsonpatch=require(_0x251d('0x3'));var rp=require(_0x251d('0x4'));var moment=require('moment');var BPromise=require(_0x251d('0x5'));var Mustache=require(_0x251d('0x6'));var util=require(_0x251d('0x7'));var path=require(_0x251d('0x8'));var sox=require(_0x251d('0x9'));var csv=require('to-csv');var ejs=require(_0x251d('0xa'));var fs=require('fs');var fs_extra=require(_0x251d('0xb'));var _=require(_0x251d('0xc'));var squel=require(_0x251d('0xd'));var crypto=require('crypto');var jsforce=require(_0x251d('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x251d('0xf'));var querystring=require(_0x251d('0x10'));var Papa=require(_0x251d('0x11'));var htmlToText=require('html-to-text');var juice=require('juice');var Redis=require(_0x251d('0x12'));var authService=require(_0x251d('0x13'));var qs=require(_0x251d('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x251d('0x15'));var logger=require('../../config/logger')(_0x251d('0x16'));var utils=require(_0x251d('0x17'));var config=require(_0x251d('0x18'));var licenseUtil=require(_0x251d('0x19'));var db=require(_0x251d('0x1a'))['db'];config[_0x251d('0x1b')]=_[_0x251d('0x1c')](config['redis'],{'host':_0x251d('0x1d'),'port':0x18eb});var socket=require(_0x251d('0x1e'))(new Redis(config['redis']));require(_0x251d('0x1f'))[_0x251d('0x20')](socket);var jayson=require(_0x251d('0x21'));var client=jayson[_0x251d('0x22')]['http']({'port':0x232b});function respondWithRpcPromise(_0x595a5a,_0x28ed97,_0x32722e,_0x4ecfb9){return new BPromise(function(_0x32b8ba,_0x7edfbf){var _0x457dca=_0x4ecfb9||client;return _0x457dca[_0x251d('0x23')](_0x595a5a,_0x32722e)[_0x251d('0x24')](function(_0x2774d3){logger[_0x251d('0x25')](_0x251d('0x26'),_0x28ed97,_0x251d('0x27'));logger[_0x251d('0x28')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x28ed97,'request\x20sent',JSON[_0x251d('0x29')](_0x2774d3));if(_0x2774d3[_0x251d('0x2a')]){if(_0x2774d3[_0x251d('0x2a')][_0x251d('0x2b')]===0x1f4){logger[_0x251d('0x2a')](_0x251d('0x26'),_0x28ed97,_0x2774d3['error'][_0x251d('0x2c')]);return _0x7edfbf(_0x2774d3['error'][_0x251d('0x2c')]);}logger[_0x251d('0x2a')]('MailAccount,\x20%s,\x20%s',_0x28ed97,_0x2774d3['error'][_0x251d('0x2c')]);return _0x32b8ba(_0x2774d3[_0x251d('0x2a')][_0x251d('0x2c')]);}else{logger[_0x251d('0x25')]('MailAccount,\x20%s,\x20%s',_0x28ed97,_0x251d('0x27'));_0x32b8ba(_0x2774d3[_0x251d('0x2d')][_0x251d('0x2c')]);}})['catch'](function(_0xfd991d){logger[_0x251d('0x2a')](_0x251d('0x26'),_0x28ed97,_0xfd991d);_0x7edfbf(_0xfd991d);});});}function respondWithStatusCode(_0xad7907,_0x108aa3){_0x108aa3=_0x108aa3||0xcc;return function(_0x320d45){if(_0x320d45){return _0xad7907[_0x251d('0x2e')](_0x108aa3);}return _0xad7907[_0x251d('0x2f')](_0x108aa3)[_0x251d('0x30')]();};}function respondWithResult(_0x3b8b5d,_0x2dee09){_0x2dee09=_0x2dee09||0xc8;return function(_0x36bd9d){if(_0x36bd9d){return _0x3b8b5d[_0x251d('0x2f')](_0x2dee09)[_0x251d('0x31')](_0x36bd9d);}};}function respondWithFilteredResult(_0x3f7f1f,_0x4a34ee){return function(_0x1983e2){if(_0x1983e2){var _0x43237c=typeof _0x4a34ee['offset']===_0x251d('0x32')&&typeof _0x4a34ee[_0x251d('0x33')]===_0x251d('0x32');var _0xe77bd4=_0x1983e2[_0x251d('0x34')];var _0x59b37e=_0x43237c?0x0:_0x4a34ee[_0x251d('0x35')];var _0x3f3a63=_0x43237c?_0x1983e2[_0x251d('0x34')]:_0x4a34ee['offset']+_0x4a34ee[_0x251d('0x33')];var _0x2bfbeb;if(_0x3f3a63>=_0xe77bd4){_0x3f3a63=_0xe77bd4;_0x2bfbeb=0xc8;}else{_0x2bfbeb=0xce;}_0x3f7f1f['status'](_0x2bfbeb);return _0x3f7f1f[_0x251d('0x36')]('Content-Range',_0x59b37e+'-'+_0x3f3a63+'/'+_0xe77bd4)['json'](_0x1983e2);}return null;};}function patchUpdates(_0x44adf5){return function(_0x247300){try{jsonpatch['apply'](_0x247300,_0x44adf5,!![]);}catch(_0x23ab89){return BPromise[_0x251d('0x37')](_0x23ab89);}return _0x247300[_0x251d('0x38')]();};}function saveUpdates(_0xd17798,_0xb0464a){return function(_0x547d68){if(_0x547d68){return _0x547d68['update'](_0xd17798)[_0x251d('0x24')](function(_0x1e3d5e){return _0x1e3d5e;});}return null;};}function removeEntity(_0x2c0f94,_0x155ebd){return function(_0x53d577){if(_0x53d577){return _0x53d577[_0x251d('0x39')]()[_0x251d('0x24')](function(){var _0x597056=_0x53d577[_0x251d('0x3a')]({'plain':!![]});var _0x26289a=_0x251d('0x3b');return db[_0x251d('0x3c')][_0x251d('0x39')]({'where':{'type':_0x26289a,'resourceId':_0x597056['id']}})[_0x251d('0x24')](function(){return _0x53d577;});})[_0x251d('0x24')](function(){_0x2c0f94[_0x251d('0x2f')](0xcc)['end']();});}};}function handleEntityNotFound(_0xb07964,_0x5147d2){return function(_0x5df7f4){if(!_0x5df7f4){_0xb07964[_0x251d('0x2e')](0x194);}return _0x5df7f4;};}function handleError(_0x27f667,_0xf33f68){_0xf33f68=_0xf33f68||0x1f4;return function(_0x43a5f4){logger['error'](_0x43a5f4['stack']);if(_0x43a5f4['name']){delete _0x43a5f4[_0x251d('0x3d')];}_0x27f667['status'](_0xf33f68)[_0x251d('0x3e')](_0x43a5f4);};}exports[_0x251d('0x3f')]=function(_0x4ef51c,_0x4a1ce9){var _0x25e266={'include':[{'model':db[_0x251d('0x40')],'as':_0x251d('0x41')},{'model':db[_0x251d('0x42')],'as':_0x251d('0x43')},{'model':db[_0x251d('0x44')],'as':_0x251d('0x45')}]},_0x3b6d50={},_0x540d33={'count':0x0,'rows':[]};var _0x2a01ae=_[_0x251d('0x46')](db[_0x251d('0x47')]['rawAttributes'],function(_0x4f3621){return{'name':_0x4f3621['fieldName'],'type':_0x4f3621[_0x251d('0x48')][_0x251d('0x49')]};});_0x3b6d50['model']=_[_0x251d('0x46')](_0x2a01ae,_0x251d('0x3d'));_0x3b6d50[_0x251d('0x4a')]=_[_0x251d('0x4b')](_0x4ef51c['query']);_0x3b6d50[_0x251d('0x4c')]=_[_0x251d('0x4d')](_0x3b6d50[_0x251d('0x4e')],_0x3b6d50['query']);_0x25e266[_0x251d('0x4f')]=_['intersection'](_0x3b6d50[_0x251d('0x4e')],qs[_0x251d('0x50')](_0x4ef51c[_0x251d('0x4a')][_0x251d('0x50')]));_0x25e266['attributes']=_0x25e266[_0x251d('0x4f')][_0x251d('0x51')]?_0x25e266[_0x251d('0x4f')]:_0x3b6d50[_0x251d('0x4e')];if(!_0x4ef51c[_0x251d('0x4a')]['hasOwnProperty'](_0x251d('0x52'))){_0x25e266[_0x251d('0x33')]=qs[_0x251d('0x33')](_0x4ef51c[_0x251d('0x4a')][_0x251d('0x33')]);_0x25e266[_0x251d('0x35')]=qs[_0x251d('0x35')](_0x4ef51c[_0x251d('0x4a')]['offset']);}_0x25e266[_0x251d('0x53')]=qs['sort'](_0x4ef51c[_0x251d('0x4a')]['sort']);_0x25e266['where']=qs[_0x251d('0x4c')](_[_0x251d('0x54')](_0x4ef51c[_0x251d('0x4a')],_0x3b6d50[_0x251d('0x4c')]),_0x2a01ae);if(_0x4ef51c['query'][_0x251d('0x55')]){_0x25e266[_0x251d('0x56')]=_[_0x251d('0x57')](_0x25e266['where'],{'$or':_[_0x251d('0x46')](_0x2a01ae,function(_0x1ec8cb){if(_0x1ec8cb[_0x251d('0x48')]!=='VIRTUAL'){var _0x20e383={};_0x20e383[_0x1ec8cb[_0x251d('0x3d')]]={'$like':'%'+_0x4ef51c[_0x251d('0x4a')][_0x251d('0x55')]+'%'};return _0x20e383;}})});}_0x25e266=_[_0x251d('0x57')]({},_0x25e266,_0x4ef51c[_0x251d('0x58')]);var _0x5173a5={'where':_0x25e266[_0x251d('0x56')]};return db['MailAccount']['count'](_0x5173a5)[_0x251d('0x24')](function(_0x29a23c){_0x540d33[_0x251d('0x34')]=_0x29a23c;if(_0x4ef51c[_0x251d('0x4a')][_0x251d('0x59')]){_0x25e266[_0x251d('0x5a')]=[{'all':!![]}];}return db['MailAccount'][_0x251d('0x5b')](_0x25e266);})[_0x251d('0x24')](function(_0x224515){_0x540d33['rows']=_0x224515;return _0x540d33;})[_0x251d('0x24')](respondWithFilteredResult(_0x4a1ce9,_0x25e266))[_0x251d('0x5c')](handleError(_0x4a1ce9,null));};exports[_0x251d('0x5d')]=function(_0x5b102b,_0x29a71b){var _0xb509fb={'raw':![],'where':{'id':_0x5b102b[_0x251d('0x5e')]['id']},'include':[{'model':db['MailServerIn'],'as':_0x251d('0x41')},{'model':db['MailServerOut'],'as':'Smtp'},{'model':db[_0x251d('0x44')],'as':'mandatoryDispositionPause'}]},_0x430f3e={};_0x430f3e[_0x251d('0x4e')]=_['keys'](db[_0x251d('0x47')][_0x251d('0x5f')]);_0x430f3e['query']=_[_0x251d('0x4b')](_0x5b102b[_0x251d('0x4a')]);_0x430f3e[_0x251d('0x4c')]=_[_0x251d('0x4d')](_0x430f3e[_0x251d('0x4e')],_0x430f3e[_0x251d('0x4a')]);_0xb509fb['attributes']=_[_0x251d('0x4d')](_0x430f3e[_0x251d('0x4e')],qs[_0x251d('0x50')](_0x5b102b['query']['fields']));_0xb509fb[_0x251d('0x4f')]=_0xb509fb['attributes']['length']?_0xb509fb['attributes']:_0x430f3e['model'];if(_0x5b102b[_0x251d('0x4a')][_0x251d('0x59')]){_0xb509fb['include']=[{'all':!![]}];}_0xb509fb=_[_0x251d('0x57')]({},_0xb509fb,_0x5b102b[_0x251d('0x58')]);return db[_0x251d('0x47')][_0x251d('0x60')](_0xb509fb)[_0x251d('0x24')](handleEntityNotFound(_0x29a71b,null))['then'](respondWithResult(_0x29a71b,null))[_0x251d('0x5c')](handleError(_0x29a71b,null));};exports[_0x251d('0x61')]=function(_0x22adfe,_0x487a5d){if(_0x22adfe[_0x251d('0x62')]['id']){delete _0x22adfe[_0x251d('0x62')]['id'];}return db[_0x251d('0x47')][_0x251d('0x60')]({'where':{'id':_0x22adfe[_0x251d('0x5e')]['id']},'include':[{'model':db[_0x251d('0x40')],'as':'Imap'},{'model':db['MailServerOut'],'as':_0x251d('0x43')},{'model':db[_0x251d('0x44')],'as':'mandatoryDispositionPause'}]})[_0x251d('0x24')](handleEntityNotFound(_0x487a5d,null))[_0x251d('0x24')](saveUpdates(_0x22adfe[_0x251d('0x62')],null))[_0x251d('0x24')](function(_0x2a5f06){if(_0x2a5f06&&_0x22adfe['body']['Imap']){return db['MailServerIn']['update'](_0x22adfe[_0x251d('0x62')][_0x251d('0x41')],{'where':{'MailAccountId':_0x2a5f06['id']}})[_0x251d('0x24')](function(){return _0x2a5f06;});}return _0x2a5f06;})[_0x251d('0x24')](function(_0x476b1f){if(_0x476b1f&&_0x22adfe[_0x251d('0x62')]['Smtp']){return db[_0x251d('0x42')][_0x251d('0x61')](_0x22adfe[_0x251d('0x62')][_0x251d('0x43')],{'where':{'MailAccountId':_0x476b1f['id']}})[_0x251d('0x24')](function(){return _0x476b1f;});}return _0x476b1f;})[_0x251d('0x24')](respondWithResult(_0x487a5d,null))['catch'](handleError(_0x487a5d,null));};exports[_0x251d('0x63')]=function(_0x229a31,_0x1ce433){return db[_0x251d('0x47')][_0x251d('0x63')]()['then'](respondWithResult(_0x1ce433,null))['catch'](handleError(_0x1ce433,null));};exports[_0x251d('0x64')]=function(_0x2a0010,_0x11e04a,_0x2879e4){if(_0x2a0010['body']['id']){delete _0x2a0010[_0x251d('0x62')]['id'];}return db[_0x251d('0x47')][_0x251d('0x60')]({'where':{'id':_0x2a0010[_0x251d('0x5e')]['id']}})['then'](handleEntityNotFound(_0x11e04a,null))[_0x251d('0x24')](function(_0x17ca07){if(_0x17ca07){_0x2a0010['body'][_0x251d('0x65')]=_0x17ca07['id'];return db[_0x251d('0x66')]['create'](_0x2a0010[_0x251d('0x62')]);}})[_0x251d('0x24')](respondWithResult(_0x11e04a,null))[_0x251d('0x5c')](handleError(_0x11e04a,null));};exports[_0x251d('0x67')]=function(_0x5b1f2c,_0xf089bf,_0x2771c5){var _0xd776d4={'raw':![],'where':{}};var _0x2019a6={};var _0x26937f={'count':0x0,'rows':[]};return db['MailAccount'][_0x251d('0x68')]({'where':{'id':_0x5b1f2c['params']['id']}})['then'](handleEntityNotFound(_0xf089bf,null))['then'](function(_0x402e62){if(_0x402e62){_0x2019a6['model']=_[_0x251d('0x4b')](db[_0x251d('0x66')][_0x251d('0x5f')]);_0x2019a6[_0x251d('0x4a')]=_['keys'](_0x5b1f2c['query']);_0x2019a6[_0x251d('0x4c')]=_['intersection'](_0x2019a6[_0x251d('0x4e')],_0x2019a6[_0x251d('0x4a')]);_0xd776d4[_0x251d('0x4f')]=_[_0x251d('0x4d')](_0x2019a6[_0x251d('0x4e')],qs[_0x251d('0x50')](_0x5b1f2c[_0x251d('0x4a')][_0x251d('0x50')]));_0xd776d4[_0x251d('0x4f')]=_0xd776d4[_0x251d('0x4f')][_0x251d('0x51')]?_0xd776d4[_0x251d('0x4f')]:_0x2019a6[_0x251d('0x4e')];if(!_0x5b1f2c[_0x251d('0x4a')][_0x251d('0x69')]('nolimit')){_0xd776d4[_0x251d('0x33')]=qs[_0x251d('0x33')](_0x5b1f2c[_0x251d('0x4a')][_0x251d('0x33')]);_0xd776d4[_0x251d('0x35')]=qs[_0x251d('0x35')](_0x5b1f2c['query'][_0x251d('0x35')]);}_0xd776d4[_0x251d('0x53')]=qs[_0x251d('0x6a')](_0x5b1f2c[_0x251d('0x4a')]['sort']);_0xd776d4['where']=qs[_0x251d('0x4c')](_[_0x251d('0x54')](_0x5b1f2c['query'],_0x2019a6[_0x251d('0x4c')]));_0xd776d4[_0x251d('0x56')][_0x251d('0x65')]=_0x402e62['id'];if(_0x5b1f2c[_0x251d('0x4a')][_0x251d('0x55')]){_0xd776d4[_0x251d('0x56')]=_['merge'](_0xd776d4[_0x251d('0x56')],{'$or':_[_0x251d('0x46')](_0xd776d4[_0x251d('0x4f')],function(_0x1136a7){var _0x14212f={};_0x14212f[_0x1136a7]={'$like':'%'+_0x5b1f2c[_0x251d('0x4a')]['filter']+'%'};return _0x14212f;})});}_0xd776d4=_[_0x251d('0x57')]({},_0xd776d4,_0x5b1f2c[_0x251d('0x58')]);return db[_0x251d('0x66')]['count']({'where':_0xd776d4[_0x251d('0x56')]})[_0x251d('0x24')](function(_0x57f289){_0x26937f[_0x251d('0x34')]=_0x57f289;if(_0x5b1f2c[_0x251d('0x4a')][_0x251d('0x59')]){_0xd776d4['include']=[{'all':!![]}];}return db['Disposition'][_0x251d('0x5b')](_0xd776d4);})[_0x251d('0x24')](function(_0xb7445a){_0x26937f[_0x251d('0x6b')]=_0xb7445a;return _0x26937f;});}})[_0x251d('0x24')](respondWithFilteredResult(_0xf089bf,_0xd776d4))['catch'](handleError(_0xf089bf,null));};exports[_0x251d('0x6c')]=function(_0x36e5df,_0x1fa013,_0x52558){return db[_0x251d('0x47')][_0x251d('0x60')]({'where':{'id':_0x36e5df[_0x251d('0x5e')]['id']}})[_0x251d('0x24')](handleEntityNotFound(_0x1fa013,null))[_0x251d('0x24')](function(_0x47da5f){if(_0x47da5f){return _0x47da5f['removeDispositions'](_0x36e5df[_0x251d('0x4a')]['ids']);}})[_0x251d('0x24')](respondWithStatusCode(_0x1fa013,null))[_0x251d('0x5c')](handleError(_0x1fa013,null));};exports[_0x251d('0x6d')]=function(_0x5f163b,_0x523637,_0x9a3753){if(_0x5f163b[_0x251d('0x62')]['id']){delete _0x5f163b[_0x251d('0x62')]['id'];}return db[_0x251d('0x47')][_0x251d('0x60')]({'where':{'id':_0x5f163b[_0x251d('0x5e')]['id']}})['then'](handleEntityNotFound(_0x523637,null))[_0x251d('0x24')](function(_0x39f227){if(_0x39f227){_0x5f163b[_0x251d('0x62')][_0x251d('0x65')]=_0x39f227['id'];return db['CannedAnswer'][_0x251d('0x6e')](_0x5f163b[_0x251d('0x62')]);}})[_0x251d('0x24')](respondWithResult(_0x523637,null))[_0x251d('0x5c')](handleError(_0x523637,null));};exports[_0x251d('0x6f')]=function(_0x3de814,_0x3298b6,_0xbdbc3a){var _0x3bd848={'raw':![],'where':{}};var _0x3bf07d={};var _0x2607bb={'count':0x0,'rows':[]};return db[_0x251d('0x47')]['findOne']({'where':{'id':_0x3de814[_0x251d('0x5e')]['id']}})['then'](handleEntityNotFound(_0x3298b6,null))[_0x251d('0x24')](function(_0xadd261){if(_0xadd261){_0x3bf07d[_0x251d('0x4e')]=_['keys'](db['CannedAnswer'][_0x251d('0x5f')]);_0x3bf07d['query']=_[_0x251d('0x4b')](_0x3de814['query']);_0x3bf07d['filters']=_['intersection'](_0x3bf07d['model'],_0x3bf07d[_0x251d('0x4a')]);_0x3bd848[_0x251d('0x4f')]=_[_0x251d('0x4d')](_0x3bf07d[_0x251d('0x4e')],qs[_0x251d('0x50')](_0x3de814[_0x251d('0x4a')][_0x251d('0x50')]));_0x3bd848[_0x251d('0x4f')]=_0x3bd848[_0x251d('0x4f')]['length']?_0x3bd848[_0x251d('0x4f')]:_0x3bf07d[_0x251d('0x4e')];if(!_0x3de814[_0x251d('0x4a')]['hasOwnProperty'](_0x251d('0x52'))){_0x3bd848['limit']=qs[_0x251d('0x33')](_0x3de814['query']['limit']);_0x3bd848[_0x251d('0x35')]=qs[_0x251d('0x35')](_0x3de814[_0x251d('0x4a')][_0x251d('0x35')]);}_0x3bd848[_0x251d('0x53')]=qs[_0x251d('0x6a')](_0x3de814[_0x251d('0x4a')]['sort']);_0x3bd848[_0x251d('0x56')]=qs[_0x251d('0x4c')](_[_0x251d('0x54')](_0x3de814[_0x251d('0x4a')],_0x3bf07d['filters']));_0x3bd848['where'][_0x251d('0x65')]=_0xadd261['id'];if(_0x3de814['query']['filter']){_0x3bd848['where']=_['merge'](_0x3bd848[_0x251d('0x56')],{'$or':_[_0x251d('0x46')](_0x3bd848[_0x251d('0x4f')],function(_0x3b8796){var _0x5baf4a={};_0x5baf4a[_0x3b8796]={'$like':'%'+_0x3de814[_0x251d('0x4a')]['filter']+'%'};return _0x5baf4a;})});}_0x3bd848=_['merge']({},_0x3bd848,_0x3de814[_0x251d('0x58')]);return db[_0x251d('0x70')]['count']({'where':_0x3bd848['where']})[_0x251d('0x24')](function(_0x291df7){_0x2607bb[_0x251d('0x34')]=_0x291df7;if(_0x3de814['query']['includeAll']){_0x3bd848['include']=[{'all':!![]}];}return db[_0x251d('0x70')][_0x251d('0x5b')](_0x3bd848);})[_0x251d('0x24')](function(_0x40863c){_0x2607bb['rows']=_0x40863c;return _0x2607bb;});}})[_0x251d('0x24')](respondWithFilteredResult(_0x3298b6,_0x3bd848))[_0x251d('0x5c')](handleError(_0x3298b6,null));};exports['removeAnswers']=function(_0x4612ba,_0x3d498c,_0x44c3bc){return db[_0x251d('0x47')][_0x251d('0x60')]({'where':{'id':_0x4612ba[_0x251d('0x5e')]['id']}})['then'](handleEntityNotFound(_0x3d498c,null))['then'](function(_0x1e99a7){if(_0x1e99a7){return _0x1e99a7[_0x251d('0x71')](_0x4612ba[_0x251d('0x4a')][_0x251d('0x72')]);}})[_0x251d('0x24')](respondWithStatusCode(_0x3d498c,null))[_0x251d('0x5c')](handleError(_0x3d498c,null));};exports[_0x251d('0x6e')]=function(_0x5e71fd,_0x54f48e){var _0x191fe9={'name':_0x5e71fd[_0x251d('0x62')]['name'],'key':_0x5e71fd[_0x251d('0x62')][_0x251d('0x49')],'email':_0x5e71fd[_0x251d('0x62')][_0x251d('0x73')],'ListId':_0x5e71fd[_0x251d('0x62')][_0x251d('0x74')],'active':!_['isNil'](_0x5e71fd[_0x251d('0x62')][_0x251d('0x75')])?_0x5e71fd[_0x251d('0x62')][_0x251d('0x75')]:!![],'description':_0x5e71fd[_0x251d('0x62')][_0x251d('0x76')]||null,'Imap':{},'Smtp':{}};if(_[_0x251d('0x77')](_0x5e71fd[_0x251d('0x62')][_0x251d('0x78')])){if(_0x5e71fd['body'][_0x251d('0x79')]){_0x191fe9[_0x251d('0x41')][_0x251d('0x7a')]=_0x191fe9[_0x251d('0x43')]['user']=_0x5e71fd[_0x251d('0x62')][_0x251d('0x7b')];_0x191fe9['Imap'][_0x251d('0x7c')]=_0x191fe9[_0x251d('0x43')][_0x251d('0x7d')]=_0x5e71fd[_0x251d('0x62')][_0x251d('0x7e')];}else{_0x191fe9[_0x251d('0x41')][_0x251d('0x7f')]=_0x191fe9[_0x251d('0x43')][_0x251d('0x7f')]=![];}_0x191fe9['Imap'][_0x251d('0x80')]=_0x5e71fd[_0x251d('0x62')][_0x251d('0x41')]['host'];_0x191fe9[_0x251d('0x41')][_0x251d('0x81')]=_0x5e71fd[_0x251d('0x62')][_0x251d('0x41')][_0x251d('0x81')];_0x191fe9[_0x251d('0x43')][_0x251d('0x80')]=_0x5e71fd['body'][_0x251d('0x43')]['host'];_0x191fe9[_0x251d('0x43')]['port']=_0x5e71fd[_0x251d('0x62')][_0x251d('0x43')][_0x251d('0x81')];}else{_0x191fe9['Imap'][_0x251d('0x82')]=_0x191fe9['Smtp'][_0x251d('0x82')]=_0x5e71fd[_0x251d('0x62')]['cservice'];_0x191fe9[_0x251d('0x41')][_0x251d('0x7a')]=_0x191fe9[_0x251d('0x43')]['user']=_0x5e71fd[_0x251d('0x62')][_0x251d('0x7b')];_0x191fe9[_0x251d('0x41')][_0x251d('0x7c')]=_0x191fe9[_0x251d('0x43')]['pass']=_0x5e71fd[_0x251d('0x62')][_0x251d('0x7e')];}return db['MailAccount']['create'](_0x191fe9,{'include':[{'model':db[_0x251d('0x42')],'as':_0x251d('0x43')},{'model':db[_0x251d('0x40')],'as':_0x251d('0x41')}]})['then'](function(_0x7b9555){var _0x553cdc=_0x5e71fd[_0x251d('0x7a')][_0x251d('0x3a')]({'plain':!![]});if(!_0x553cdc)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x553cdc[_0x251d('0x83')]===_0x251d('0x7a')){var _0x491eaa=_0x7b9555[_0x251d('0x3a')]({'plain':!![]});return db[_0x251d('0x84')][_0x251d('0x60')]({'where':{'name':_0x251d('0x3b'),'userProfileId':_0x553cdc[_0x251d('0x85')]},'raw':!![]})[_0x251d('0x24')](function(_0x3cd58f){if(_0x3cd58f&&_0x3cd58f[_0x251d('0x86')]===0x0){return db[_0x251d('0x3c')]['create']({'name':_0x491eaa[_0x251d('0x3d')],'resourceId':_0x491eaa['id'],'type':_0x3cd58f[_0x251d('0x3d')],'sectionId':_0x3cd58f['id']},{})[_0x251d('0x24')](function(){return _0x7b9555;});}else{return _0x7b9555;}})[_0x251d('0x5c')](function(_0x266a4c){logger[_0x251d('0x2a')](_0x251d('0x87'),_0x266a4c);throw _0x266a4c;});}return _0x7b9555;})[_0x251d('0x24')](respondWithResult(_0x54f48e,0xc9))[_0x251d('0x5c')](handleError(_0x54f48e,null));};exports[_0x251d('0x88')]=function(_0x22012f,_0x19b434,_0x135f7f){return db[_0x251d('0x47')]['findOne']({'where':{'id':_0x22012f[_0x251d('0x5e')]['id']}})[_0x251d('0x24')](handleEntityNotFound(_0x19b434,null))[_0x251d('0x24')](function(_0x17588f){if(_0x17588f){return _0x17588f['getImap']();}return null;})[_0x251d('0x24')](respondWithResult(_0x19b434,null))[_0x251d('0x5c')](handleError(_0x19b434,null));};exports[_0x251d('0x89')]=function(_0x154c74,_0x1b3266,_0x510de2){if(_0x154c74['body']['id']){delete _0x154c74[_0x251d('0x62')]['id'];}return db[_0x251d('0x47')]['find']({'where':{'id':_0x154c74[_0x251d('0x5e')]['id']}})['then'](handleEntityNotFound(_0x1b3266,null))[_0x251d('0x24')](function(_0x421ea6){if(_0x421ea6){_0x154c74[_0x251d('0x62')][_0x251d('0x65')]=_0x421ea6['id'];return db[_0x251d('0x40')][_0x251d('0x6e')](_0x154c74[_0x251d('0x62')]);}})['then'](respondWithResult(_0x1b3266,null))[_0x251d('0x5c')](handleError(_0x1b3266,null));};exports[_0x251d('0x8a')]=function(_0x18ad03,_0x37772a,_0x675f54){return db[_0x251d('0x47')][_0x251d('0x68')]({'where':{'id':_0x18ad03[_0x251d('0x5e')]['id']}})[_0x251d('0x24')](handleEntityNotFound(_0x37772a,null))[_0x251d('0x24')](function(_0x49ec85){if(_0x49ec85){return _0x49ec85['setImap'](null);}return null;})['then'](respondWithStatusCode(_0x37772a,null))[_0x251d('0x5c')](handleError(_0x37772a,null));};exports[_0x251d('0x8b')]=function(_0xc340ef,_0x4c2cf5,_0x11c759){return db[_0x251d('0x47')][_0x251d('0x68')]({'where':{'id':_0xc340ef['params']['id']}})[_0x251d('0x24')](handleEntityNotFound(_0x4c2cf5,null))['then'](function(_0x10ed6a){if(_0x10ed6a){return _0x10ed6a[_0x251d('0x8b')]();}return null;})[_0x251d('0x24')](respondWithResult(_0x4c2cf5,null))[_0x251d('0x5c')](handleError(_0x4c2cf5,null));};exports['addSmtp']=function(_0x57888c,_0x4b9475,_0x1d94b2){if(_0x57888c[_0x251d('0x62')]['id']){delete _0x57888c[_0x251d('0x62')]['id'];}return db[_0x251d('0x47')][_0x251d('0x60')]({'where':{'id':_0x57888c[_0x251d('0x5e')]['id']}})[_0x251d('0x24')](handleEntityNotFound(_0x4b9475,null))[_0x251d('0x24')](function(_0x4544d7){if(_0x4544d7){_0x57888c[_0x251d('0x62')][_0x251d('0x65')]=_0x4544d7['id'];return db['MailServerOut'][_0x251d('0x6e')](_0x57888c[_0x251d('0x62')]);}})['then'](respondWithResult(_0x4b9475,null))[_0x251d('0x5c')](handleError(_0x4b9475,null));};exports[_0x251d('0x8c')]=function(_0x44c19c,_0x576a6a,_0x2687f2){return db[_0x251d('0x47')][_0x251d('0x68')]({'where':{'id':_0x44c19c[_0x251d('0x5e')]['id']}})[_0x251d('0x24')](handleEntityNotFound(_0x576a6a,null))['then'](function(_0x502094){if(_0x502094){return _0x502094['setSmtp'](null);}return null;})['then'](respondWithStatusCode(_0x576a6a,null))[_0x251d('0x5c')](handleError(_0x576a6a,null));};exports[_0x251d('0x8d')]=function(_0x586a73,_0x42952c,_0x59016d){return db[_0x251d('0x8e')]['find']({'where':{'id':_0x586a73[_0x251d('0x5e')]['id']}})[_0x251d('0x24')](handleEntityNotFound(_0x42952c,null))['then'](function(_0x47d4c6){if(_0x47d4c6){return _0x47d4c6[_0x251d('0x8d')](_0x586a73[_0x251d('0x62')][_0x251d('0x72')],_[_0x251d('0x8f')](_0x586a73['body'],[_0x251d('0x72'),'id'])||{});}})[_0x251d('0x24')](respondWithResult(_0x42952c,null))[_0x251d('0x5c')](handleError(_0x42952c,null));};exports[_0x251d('0x90')]=function(_0x5d361e,_0x5a48a7,_0x2c690f){var _0x97ef91={'raw':![],'where':{}};var _0x25ebc8={};var _0x4b21d0={'count':0x0,'rows':[]};return db['MailAccount'][_0x251d('0x68')]({'where':{'id':_0x5d361e[_0x251d('0x5e')]['id']}})[_0x251d('0x24')](handleEntityNotFound(_0x5a48a7,null))[_0x251d('0x24')](function(_0x4c39c6){if(_0x4c39c6){_0x25ebc8[_0x251d('0x4e')]=_['keys'](db[_0x251d('0x8e')]['rawAttributes']);_0x25ebc8[_0x251d('0x4a')]=_[_0x251d('0x4b')](_0x5d361e[_0x251d('0x4a')]);_0x25ebc8[_0x251d('0x4c')]=_[_0x251d('0x4d')](_0x25ebc8[_0x251d('0x4e')],_0x25ebc8['query']);_0x97ef91[_0x251d('0x4f')]=_[_0x251d('0x4d')](_0x25ebc8[_0x251d('0x4e')],qs[_0x251d('0x50')](_0x5d361e['query'][_0x251d('0x50')]));_0x97ef91[_0x251d('0x4f')]=_0x97ef91[_0x251d('0x4f')][_0x251d('0x51')]?_0x97ef91[_0x251d('0x4f')]:_0x25ebc8[_0x251d('0x4e')];if(!_0x5d361e['query']['hasOwnProperty'](_0x251d('0x52'))){_0x97ef91[_0x251d('0x33')]=qs[_0x251d('0x33')](_0x5d361e[_0x251d('0x4a')][_0x251d('0x33')]);_0x97ef91[_0x251d('0x35')]=qs[_0x251d('0x35')](_0x5d361e[_0x251d('0x4a')]['offset']);}_0x97ef91[_0x251d('0x53')]=qs[_0x251d('0x6a')](_0x5d361e[_0x251d('0x4a')]['sort']);_0x97ef91[_0x251d('0x56')]=qs[_0x251d('0x4c')](_[_0x251d('0x54')](_0x5d361e[_0x251d('0x4a')],_0x25ebc8[_0x251d('0x4c')]));_0x97ef91[_0x251d('0x56')][_0x251d('0x65')]=_0x4c39c6['id'];if(_0x5d361e[_0x251d('0x4a')][_0x251d('0x55')]){_0x97ef91[_0x251d('0x56')]=_['merge'](_0x97ef91['where'],{'$or':_[_0x251d('0x46')](_0x97ef91[_0x251d('0x4f')],function(_0x49f375){var _0x3387d7={};_0x3387d7[_0x49f375]={'$like':'%'+_0x5d361e['query']['filter']+'%'};return _0x3387d7;})});}_0x97ef91=_['merge']({},_0x97ef91,_0x5d361e[_0x251d('0x58')]);return db[_0x251d('0x8e')][_0x251d('0x34')]({'where':_0x97ef91[_0x251d('0x56')]})[_0x251d('0x24')](function(_0xe5cfc5){_0x4b21d0[_0x251d('0x34')]=_0xe5cfc5;if(_0x5d361e[_0x251d('0x4a')][_0x251d('0x59')]){_0x97ef91[_0x251d('0x5a')]=[{'model':db['CmContact'],'as':_0x251d('0x91'),'required':![]},{'model':db['User'],'as':'Owner','attributes':[_0x251d('0x3d'),_0x251d('0x92'),_0x251d('0x93')],'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x251d('0x3d'),'color'],'where':_0x5d361e[_0x251d('0x4a')][_0x251d('0x94')]?{'id':_0x5d361e[_0x251d('0x4a')][_0x251d('0x94')]}:undefined,'required':_0x5d361e[_0x251d('0x4a')]['tag']?!![]:![]}];}return db[_0x251d('0x8e')][_0x251d('0x5b')](_0x97ef91);})[_0x251d('0x24')](function(_0x43e67e){_0x4b21d0[_0x251d('0x6b')]=_0x43e67e;return _0x4b21d0;});}})[_0x251d('0x24')](respondWithFilteredResult(_0x5a48a7,_0x97ef91))[_0x251d('0x5c')](handleError(_0x5a48a7,null));};exports['addApplications']=function(_0x3e7a11,_0x2daa6d,_0x1d45c5){return db[_0x251d('0x47')][_0x251d('0x68')]({'where':{'id':_0x3e7a11[_0x251d('0x5e')]['id']}})[_0x251d('0x24')](handleEntityNotFound(_0x2daa6d,null))[_0x251d('0x24')](function(_0x126d49){if(_0x126d49){return db[_0x251d('0x95')][_0x251d('0x96')](function(_0x10719a){return db[_0x251d('0x97')][_0x251d('0x39')]({'where':{'MailAccountId':_0x3e7a11[_0x251d('0x5e')]['id']},'transaction':_0x10719a})[_0x251d('0x24')](function(_0x3f72e4){var _0x18db0d=_[_0x251d('0x46')](_0x3e7a11[_0x251d('0x62')],function(_0x1485b0){_0x1485b0['MailAccountId']=_0x3e7a11['params']['id'];return _0x1485b0;});return db['MailApplication']['bulkCreate'](_0x18db0d,{'transaction':_0x10719a});});})[_0x251d('0x24')](function(){return db['MailApplication']['findAndCountAll']({'where':{'MailAccountId':_0x3e7a11[_0x251d('0x5e')]['id']},'order':_0x251d('0x98')});});}})[_0x251d('0x24')](respondWithResult(_0x2daa6d,null))[_0x251d('0x5c')](handleError(_0x2daa6d,null));};exports[_0x251d('0x99')]=function(_0x2358c7,_0x430356,_0x4dcb10){var _0x3f1d0f={};var _0x1ea10f={};var _0x4b35cd;var _0x3189b4;return db[_0x251d('0x47')]['findOne']({'where':{'id':_0x2358c7[_0x251d('0x5e')]['id']}})[_0x251d('0x24')](handleEntityNotFound(_0x430356,null))['then'](function(_0x1ef231){if(_0x1ef231){_0x4b35cd=_0x1ef231;_0x1ea10f[_0x251d('0x4e')]=_[_0x251d('0x4b')](db[_0x251d('0x97')][_0x251d('0x5f')]);_0x1ea10f[_0x251d('0x4a')]=_[_0x251d('0x4b')](_0x2358c7[_0x251d('0x4a')]);_0x1ea10f[_0x251d('0x4c')]=_[_0x251d('0x4d')](_0x1ea10f[_0x251d('0x4e')],_0x1ea10f[_0x251d('0x4a')]);_0x3f1d0f[_0x251d('0x4f')]=_['intersection'](_0x1ea10f[_0x251d('0x4e')],qs['fields'](_0x2358c7[_0x251d('0x4a')][_0x251d('0x50')]));_0x3f1d0f[_0x251d('0x4f')]=_0x3f1d0f[_0x251d('0x4f')]['length']?_0x3f1d0f[_0x251d('0x4f')]:_0x1ea10f[_0x251d('0x4e')];_0x3f1d0f[_0x251d('0x53')]=qs[_0x251d('0x6a')](_0x2358c7[_0x251d('0x4a')]['sort']);_0x3f1d0f['where']=qs[_0x251d('0x4c')](_[_0x251d('0x54')](_0x2358c7[_0x251d('0x4a')],_0x1ea10f[_0x251d('0x4c')]));if(_0x2358c7['query'][_0x251d('0x55')]){_0x3f1d0f[_0x251d('0x56')]=_[_0x251d('0x57')](_0x3f1d0f['where'],{'$or':_[_0x251d('0x46')](_0x3f1d0f['attributes'],function(_0x5454ec){var _0x288451={};_0x288451[_0x5454ec]={'$like':'%'+_0x2358c7[_0x251d('0x4a')][_0x251d('0x55')]+'%'};return _0x288451;})});}_0x3f1d0f=_['merge']({},_0x3f1d0f,_0x2358c7[_0x251d('0x58')]);return _0x4b35cd[_0x251d('0x99')](_0x3f1d0f);}})['then'](function(_0x4f03d4){if(_0x4f03d4){_0x3189b4=_0x4f03d4[_0x251d('0x51')];if(!_0x2358c7['query'][_0x251d('0x69')]('nolimit')){_0x3f1d0f[_0x251d('0x33')]=qs[_0x251d('0x33')](_0x2358c7[_0x251d('0x4a')]['limit']);_0x3f1d0f['offset']=qs[_0x251d('0x35')](_0x2358c7[_0x251d('0x4a')][_0x251d('0x35')]);}return _0x4b35cd[_0x251d('0x99')](_0x3f1d0f);}})[_0x251d('0x24')](function(_0x50426c){if(_0x50426c){return _0x50426c?{'count':_0x3189b4,'rows':_0x50426c}:null;}})[_0x251d('0x24')](respondWithResult(_0x430356,null))[_0x251d('0x5c')](handleError(_0x430356,null));};exports['getMessages']=function(_0x17cf89,_0x324b20,_0x570440){var _0x1fcda3={'raw':!![],'where':{}};var _0xd0c077={};var _0x3fdd5d={'count':0x0,'rows':[]};return db[_0x251d('0x47')][_0x251d('0x68')]({'where':{'id':_0x17cf89[_0x251d('0x5e')]['id']}})[_0x251d('0x24')](handleEntityNotFound(_0x324b20,null))[_0x251d('0x24')](function(_0x581a25){if(_0x581a25){_0xd0c077[_0x251d('0x4e')]=_[_0x251d('0x4b')](db[_0x251d('0x9a')]['rawAttributes']);_0xd0c077[_0x251d('0x4a')]=_[_0x251d('0x4b')](_0x17cf89[_0x251d('0x4a')]);_0xd0c077[_0x251d('0x4c')]=_['intersection'](_0xd0c077['model'],_0xd0c077[_0x251d('0x4a')]);_0x1fcda3['attributes']=_[_0x251d('0x4d')](_0xd0c077['model'],qs['fields'](_0x17cf89['query'][_0x251d('0x50')]));_0x1fcda3['attributes']=_0x1fcda3[_0x251d('0x4f')]['length']?_0x1fcda3['attributes']:_0xd0c077['model'];if(!_0x17cf89['query'][_0x251d('0x69')](_0x251d('0x52'))){_0x1fcda3[_0x251d('0x33')]=qs[_0x251d('0x33')](_0x17cf89['query'][_0x251d('0x33')]);_0x1fcda3[_0x251d('0x35')]=qs['offset'](_0x17cf89[_0x251d('0x4a')][_0x251d('0x35')]);}_0x1fcda3[_0x251d('0x53')]=qs[_0x251d('0x6a')](_0x17cf89[_0x251d('0x4a')]['sort']);_0x1fcda3[_0x251d('0x56')]=qs['filters'](_['pick'](_0x17cf89[_0x251d('0x4a')],_0xd0c077[_0x251d('0x4c')]));_0x1fcda3[_0x251d('0x56')]['MailAccountId']=_0x581a25['id'];if(_0x17cf89[_0x251d('0x4a')][_0x251d('0x55')]){_0x1fcda3['where']=_[_0x251d('0x57')](_0x1fcda3[_0x251d('0x56')],{'$or':_['map'](_0x1fcda3[_0x251d('0x4f')],function(_0x208653){var _0x5a39d1={};_0x5a39d1[_0x208653]={'$like':'%'+_0x17cf89[_0x251d('0x4a')][_0x251d('0x55')]+'%'};return _0x5a39d1;})});}if(_0x17cf89[_0x251d('0x4a')]['$gte']){var _0x794573=_0x17cf89[_0x251d('0x4a')][_0x251d('0x9b')][_0x251d('0x9c')](',');var _0x35a34e={};_0x35a34e[_0x794573[0x0]]={'$gte':moment(_0x794573[0x1])[_0x251d('0x9d')](_0x251d('0x9e'))};_0x1fcda3['where']=_['merge'](_0x1fcda3[_0x251d('0x56')],_0x35a34e);}_0x1fcda3=_[_0x251d('0x57')]({},_0x1fcda3,_0x17cf89[_0x251d('0x58')]);return db[_0x251d('0x9a')]['count']({'where':_0x1fcda3[_0x251d('0x56')]})['then'](function(_0x1ec170){_0x3fdd5d[_0x251d('0x34')]=_0x1ec170;if(_0x17cf89[_0x251d('0x4a')][_0x251d('0x59')]){_0x1fcda3[_0x251d('0x5a')]=[{'all':!![]}];}return db[_0x251d('0x9a')][_0x251d('0x5b')](_0x1fcda3);})['then'](function(_0x1d0784){if(_0x17cf89[_0x251d('0x4a')]['inlineCss']===_0x251d('0x9f')){for(var _0x2057ee=0x0;_0x2057ee<_0x1d0784[_0x251d('0x51')];_0x2057ee++){_0x1d0784[_0x2057ee][_0x251d('0x62')]=juice(_0x1d0784[_0x2057ee][_0x251d('0x62')]);}}_0x3fdd5d[_0x251d('0x6b')]=_0x1d0784;return _0x3fdd5d;});}})[_0x251d('0x24')](respondWithFilteredResult(_0x324b20,_0x1fcda3))[_0x251d('0x5c')](handleError(_0x324b20,null));};exports[_0x251d('0x3e')]=function(_0x270abe,_0x3dee0b,_0x515d88){var _0x266e12,_0x27e5bb={},_0x51dcab;if(_0x270abe[_0x251d('0x62')]['to']){_0x51dcab=_0x270abe['body']['to'][_0x251d('0x9c')](',')[0x0];}return db['MailAccount'][_0x251d('0x60')]({'where':{'id':_0x270abe[_0x251d('0x5e')]['id']},'include':[{'model':db[_0x251d('0xa0')],'as':_0x251d('0xa1'),'include':[{'model':db[_0x251d('0xa2')],'as':'Contacts','where':{'email':_0x51dcab},'limit':0x1,'order':[[_0x251d('0xa3'),_0x251d('0xa4')]]}]},{'model':db[_0x251d('0x42')],'as':_0x251d('0x43'),'raw':!![]}]})[_0x251d('0x24')](handleEntityNotFound(_0x3dee0b,null))[_0x251d('0x24')](function(_0xa72c7e){if(_0xa72c7e){_0x266e12=_0xa72c7e;if(_0xa72c7e[_0x251d('0x43')]){if(_['isNil'](_0x270abe[_0x251d('0x62')][_0x251d('0xa5')])){_0x270abe['body'][_0x251d('0xa5')]=util[_0x251d('0x9d')](_0x251d('0xa6'),_0xa72c7e[_0x251d('0x3d')],_0xa72c7e[_0x251d('0x73')]||_0xa72c7e['Smtp'][_0x251d('0x7a')]);}if(_0x270abe[_0x251d('0x62')]['attachments']&&_0x270abe[_0x251d('0x62')][_0x251d('0xa7')][_0x251d('0x51')]){for(var _0x2097d4=0x0;_0x2097d4<_0x270abe['body'][_0x251d('0xa7')][_0x251d('0x51')];_0x2097d4+=0x1){_0x270abe[_0x251d('0x62')][_0x251d('0xa7')][_0x2097d4]={'filename':_0x270abe[_0x251d('0x62')][_0x251d('0xa7')][_0x2097d4][_0x251d('0x3d')],'path':path[_0x251d('0xa8')](config['root'],_0x251d('0xa9'),_0x270abe[_0x251d('0x62')][_0x251d('0xa7')][_0x2097d4][_0x251d('0xaa')])};}}var _0x2ec70a={'tls':{'rejectUnauthorized':![]}};if(_['isNil'](_0xa72c7e[_0x251d('0x43')]['service'])){if(_0xa72c7e[_0x251d('0x43')][_0x251d('0x7f')]){_0x2ec70a['auth']={'user':_0xa72c7e[_0x251d('0x43')]['user'],'pass':_0xa72c7e['Smtp'][_0x251d('0x7d')]};}_0x2ec70a[_0x251d('0x80')]=_0xa72c7e[_0x251d('0x43')][_0x251d('0x80')];_0x2ec70a[_0x251d('0x81')]=_0xa72c7e[_0x251d('0x43')][_0x251d('0x81')];_0x2ec70a['secure']=_0xa72c7e[_0x251d('0x43')][_0x251d('0xab')];}else{_0x2ec70a[_0x251d('0x82')]=_0xa72c7e[_0x251d('0x43')]['service'];_0x2ec70a[_0x251d('0xac')]={'user':_0xa72c7e['Smtp']['user'],'pass':_0xa72c7e['Smtp'][_0x251d('0x7d')]};}return respondWithRpcPromise(_0x251d('0xad'),_0x251d('0xae'),{'account':_0x2ec70a,'message':_0x270abe[_0x251d('0x62')]});}else{throw new Error(_0x251d('0xaf'));}}})[_0x251d('0x24')](function(_0x4750a8){if(_0x4750a8){_0x27e5bb=_0x4750a8;if(_0x266e12[_0x251d('0xa1')]){if(_0x266e12[_0x251d('0xa1')][_0x251d('0xb0')]['length']){return _0x266e12[_0x251d('0xa1')][_0x251d('0xb0')][0x0];}else{return db[_0x251d('0xa2')][_0x251d('0x6e')](_['defaults'](_0x270abe['body'],{'firstName':_0x270abe[_0x251d('0x62')]['to'],'email':_0x270abe[_0x251d('0x62')]['to'],'phone':_0x270abe['body']['to'],'ListId':_0x266e12[_0x251d('0x74')]}));}}else{throw new Error(_0x251d('0xaf'));}}})[_0x251d('0x24')](function(_0x5c3295){if(_0x5c3295){var _0x21d457={'UserId':_0x270abe[_0x251d('0x7a')]['id'],'ContactId':_0x5c3295['id'],'MailAccountId':_0x266e12['id'],'inReplyTo':_0x27e5bb[_0x251d('0xb1')],'to':_0x270abe[_0x251d('0x62')][_0x251d('0xa5')],'cc':_0x270abe[_0x251d('0x62')]['cc'],'subject':_0x270abe[_0x251d('0x62')][_0x251d('0xb2')],'attach':_0x270abe[_0x251d('0x62')][_0x251d('0xb3')],'firstMsgDirection':'out','lastMsgAt':moment()[_0x251d('0x9d')](_0x251d('0x9e')),'lastMsgDirection':'out','Messages':[_[_0x251d('0x57')](_0x270abe['body'],{'messageId':_0x27e5bb[_0x251d('0xb1')],'sentAt':moment()[_0x251d('0x9d')](_0x251d('0x9e')),'read':!![],'MailAccountId':_0x266e12['id'],'UserId':_0x270abe[_0x251d('0x7a')]['id'],'ContactId':_0x5c3295['id']})]};if(_0x270abe[_0x251d('0x62')]['Interaction']){_0x21d457=_['merge'](_0x21d457,_0x270abe[_0x251d('0x62')]['Interaction']);}return db[_0x251d('0x8e')][_0x251d('0x6e')](_0x21d457,{'include':[{'model':db[_0x251d('0x9a')],'as':_0x251d('0xb4')}]});}})[_0x251d('0x24')](respondWithResult(_0x3dee0b,null))['catch'](handleError(_0x3dee0b,null));};exports[_0x251d('0xb5')]=function(_0x2aec4e,_0x1c73d7,_0x2f645c){return db[_0x251d('0x47')][_0x251d('0x60')]({'where':{'id':_0x2aec4e[_0x251d('0x5e')]['id']},'include':[{'model':db['MailServerOut'],'as':_0x251d('0x43'),'raw':!![]}]})['then'](handleEntityNotFound(_0x1c73d7,null))['then'](function(_0x324513){if(_0x324513&&_0x324513[_0x251d('0x43')]){var _0x44c1be={'id':_0x324513['id'],'tls':{'rejectUnauthorized':![]}};if(_0x324513[_0x251d('0x43')][_0x251d('0x82')]){_0x44c1be[_0x251d('0x82')]=_0x324513[_0x251d('0x43')]['service'];}else{_0x44c1be['host']=_0x324513[_0x251d('0x43')][_0x251d('0x80')];_0x44c1be[_0x251d('0x81')]=_0x324513[_0x251d('0x43')][_0x251d('0x81')];_0x44c1be[_0x251d('0xab')]=_0x324513[_0x251d('0x43')][_0x251d('0xab')];}if(_0x324513[_0x251d('0x43')]['authentication']){_0x44c1be[_0x251d('0xac')]={'user':_0x324513['Smtp']['user'],'pass':_0x324513[_0x251d('0x43')][_0x251d('0x7d')]};}return respondWithRpcPromise(_0x251d('0xb6'),_0x251d('0xb5'),{'account':_0x44c1be});}})[_0x251d('0x24')](respondWithResult(_0x1c73d7,null))[_0x251d('0x5c')](handleError(_0x1c73d7,null));};exports[_0x251d('0x39')]=function(_0x2848a0,_0x514aae){return db[_0x251d('0x47')][_0x251d('0x60')]({'where':{'id':_0x2848a0[_0x251d('0x5e')]['id']}})[_0x251d('0x24')](handleEntityNotFound(_0x514aae,null))[_0x251d('0x24')](function(_0x25382c){if(_0x25382c&&_0x25382c[_0x251d('0x82')]){throw new db[(_0x251d('0xb7'))][(_0x251d('0xb8'))]('You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account');}return _0x25382c;})['then'](removeEntity(_0x514aae,null))['catch'](handleError(_0x514aae,null));};exports[_0x251d('0xb9')]=function(_0x5d31fa,_0x2e99b6,_0x8c5023){return db[_0x251d('0x47')][_0x251d('0x60')]({'where':{'id':_0x5d31fa[_0x251d('0x5e')]['id']}})[_0x251d('0x24')](handleEntityNotFound(_0x2e99b6,null))[_0x251d('0x24')](function(_0x3e3f89){if(_0x3e3f89){return _0x3e3f89[_0x251d('0xb9')](_0x5d31fa[_0x251d('0x62')][_0x251d('0x72')],_['omit'](_0x5d31fa['body'],['ids','id'])||{})[_0x251d('0xba')](function(_0x34e810){for(var _0x41c284=0x0;_0x41c284<_0x5d31fa['body'][_0x251d('0x72')][_0x251d('0x51')];_0x41c284+=0x1){socket['emit'](_0x251d('0xbb'),{'UserId':Number(_0x5d31fa['body'][_0x251d('0x72')][_0x41c284]),'MailAccountId':Number(_0x5d31fa[_0x251d('0x5e')]['id'])});}return _0x34e810;});}})[_0x251d('0x24')](respondWithResult(_0x2e99b6,null))[_0x251d('0x5c')](handleError(_0x2e99b6,null));};exports[_0x251d('0xbc')]=function(_0x87f97e,_0x87a17e,_0x357ece){return db['MailAccount'][_0x251d('0x60')]({'where':{'id':_0x87f97e['params']['id']}})[_0x251d('0x24')](handleEntityNotFound(_0x87a17e,null))[_0x251d('0x24')](function(_0x4dec74){if(_0x4dec74){return _0x4dec74['removeAgents'](_0x87f97e['query'][_0x251d('0x72')])[_0x251d('0x24')](function(){if(_[_0x251d('0xbd')](_0x87f97e[_0x251d('0x4a')]['ids'])){for(var _0x2c17c7=0x0;_0x2c17c7<_0x87f97e[_0x251d('0x4a')][_0x251d('0x72')][_0x251d('0x51')];_0x2c17c7+=0x1){socket['emit'](_0x251d('0xbe'),{'UserId':Number(_0x87f97e[_0x251d('0x4a')]['ids'][_0x2c17c7]),'MailAccountId':Number(_0x87f97e[_0x251d('0x5e')]['id'])});}}else{socket[_0x251d('0xbf')](_0x251d('0xbe'),{'UserId':Number(_0x87f97e[_0x251d('0x4a')]['ids']),'MailAccountId':Number(_0x87f97e['params']['id'])});}});}})[_0x251d('0x24')](respondWithStatusCode(_0x87a17e,null))[_0x251d('0x5c')](handleError(_0x87a17e,null));};exports['getAgents']=function(_0x4bc02d,_0x6ad885,_0x55f70a){var _0x22fcba={};var _0x267b51={};var _0x5ac5e4;var _0x27a6f9;return db[_0x251d('0x47')][_0x251d('0x68')]({'where':{'id':_0x4bc02d[_0x251d('0x5e')]['id']}})[_0x251d('0x24')](handleEntityNotFound(_0x6ad885,null))[_0x251d('0x24')](function(_0x302724){if(_0x302724){_0x5ac5e4=_0x302724;_0x267b51[_0x251d('0x4e')]=_[_0x251d('0x4b')](db[_0x251d('0xc0')][_0x251d('0x5f')]);_0x267b51['query']=_['keys'](_0x4bc02d['query']);_0x267b51[_0x251d('0x4c')]=_['intersection'](_0x267b51[_0x251d('0x4e')],_0x267b51[_0x251d('0x4a')]);_0x22fcba['attributes']=_[_0x251d('0x4d')](_0x267b51[_0x251d('0x4e')],qs[_0x251d('0x50')](_0x4bc02d[_0x251d('0x4a')][_0x251d('0x50')]));_0x22fcba[_0x251d('0x4f')]=_0x22fcba[_0x251d('0x4f')][_0x251d('0x51')]?_0x22fcba[_0x251d('0x4f')]:_0x267b51[_0x251d('0x4e')];_0x22fcba[_0x251d('0x53')]=qs[_0x251d('0x6a')](_0x4bc02d[_0x251d('0x4a')][_0x251d('0x6a')]);_0x22fcba[_0x251d('0x56')]=qs[_0x251d('0x4c')](_[_0x251d('0x54')](_0x4bc02d[_0x251d('0x4a')],_0x267b51[_0x251d('0x4c')]));if(_0x4bc02d[_0x251d('0x4a')][_0x251d('0x55')]){_0x22fcba[_0x251d('0x56')]=_[_0x251d('0x57')](_0x22fcba['where'],{'$or':_['map'](_0x22fcba['attributes'],function(_0x1ec47e){var _0x59b7df={};_0x59b7df[_0x1ec47e]={'$like':'%'+_0x4bc02d[_0x251d('0x4a')][_0x251d('0x55')]+'%'};return _0x59b7df;})});}_0x22fcba=_[_0x251d('0x57')]({},_0x22fcba,_0x4bc02d['options']);return _0x5ac5e4['getAgents'](_0x22fcba);}})[_0x251d('0x24')](function(_0x1e18dd){if(_0x1e18dd){_0x27a6f9=_0x1e18dd[_0x251d('0x51')];if(!_0x4bc02d[_0x251d('0x4a')][_0x251d('0x69')](_0x251d('0x52'))){_0x22fcba[_0x251d('0x33')]=qs[_0x251d('0x33')](_0x4bc02d[_0x251d('0x4a')][_0x251d('0x33')]);_0x22fcba[_0x251d('0x35')]=qs['offset'](_0x4bc02d['query'][_0x251d('0x35')]);}return _0x5ac5e4[_0x251d('0xc1')](_0x22fcba);}})[_0x251d('0x24')](function(_0x43d04a){if(_0x43d04a){return _0x43d04a?{'count':_0x27a6f9,'rows':_0x43d04a}:null;}})[_0x251d('0x24')](respondWithResult(_0x6ad885,null))['catch'](handleError(_0x6ad885,null));};
\ No newline at end of file
+var _0x55f8=['MailAccount,\x20%s,\x20%s,\x20%s','error','code','MailAccount,\x20%s,\x20%s','message','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','get','end','name','send','index','MailServerIn','Imap','MailServerOut','Smtp','Pause','map','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','nolimit','order','sort','pick','filter','where','merge','options','MailAccount','includeAll','include','findAll','rows','catch','show','params','mandatoryDispositionPause','rawAttributes','length','body','describe','addDisposition','find','MailAccountId','Disposition','create','getDispositions','removeDispositions','addAnswer','CannedAnswer','getAnswers','findOne','hasOwnProperty','removeAnswers','ids','email','ListId','isNil','active','description','cservice','cauthentication','user','pass','cpassword','authentication','host','port','service','password','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addImap','setImap','getSmtp','addSmtp','setSmtp','addInteraction','getInteractions','MailInteraction','CmContact','Contact','User','fullname','internal','Tag','Tags','color','tag','addApplications','sequelize','transaction','MailApplication','bulkCreate','priority','getApplications','getMessages','MailMessage','$gte','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','split','CmList','List','Contacts','updatedAt','from','%s\x20<%s>','attachments','join','root','server/files/attachments','basename','secure','auth','SendMail','sendMail','List\x20not\x20found','messageId','subject','attach','out','Interaction','VerifySmtp','verifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','omit','emit','removeAgents','userMailAccount:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','to-csv','ejs','crypto','jsforce','querystring','papaparse','juice','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','jayson/promise','http','request','info','debug'];(function(_0x2de753,_0x4a544d){var _0x8e70a5=function(_0x498455){while(--_0x498455){_0x2de753['push'](_0x2de753['shift']());}};_0x8e70a5(++_0x4a544d);}(_0x55f8,0x15b));var _0x855f=function(_0x377eba,_0x381435){_0x377eba=_0x377eba-0x0;var _0x4d707e=_0x55f8[_0x377eba];return _0x4d707e;};'use strict';var emlformat=require(_0x855f('0x0'));var rimraf=require(_0x855f('0x1'));var zipdir=require(_0x855f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x855f('0x3'));var moment=require(_0x855f('0x4'));var BPromise=require(_0x855f('0x5'));var Mustache=require('mustache');var util=require(_0x855f('0x6'));var path=require(_0x855f('0x7'));var sox=require('sox');var csv=require(_0x855f('0x8'));var ejs=require(_0x855f('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x855f('0xa'));var jsforce=require(_0x855f('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x855f('0x8'));var querystring=require(_0x855f('0xc'));var Papa=require(_0x855f('0xd'));var htmlToText=require('html-to-text');var juice=require(_0x855f('0xe'));var Redis=require('ioredis');var authService=require(_0x855f('0xf'));var qs=require(_0x855f('0x10'));var as=require(_0x855f('0x11'));var hardwareService=require(_0x855f('0x12'));var logger=require(_0x855f('0x13'))(_0x855f('0x14'));var utils=require(_0x855f('0x15'));var config=require(_0x855f('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x855f('0x17'))['db'];config[_0x855f('0x18')]=_[_0x855f('0x19')](config[_0x855f('0x18')],{'host':_0x855f('0x1a'),'port':0x18eb});var socket=require(_0x855f('0x1b'))(new Redis(config[_0x855f('0x18')]));require(_0x855f('0x1c'))[_0x855f('0x1d')](socket);var jayson=require(_0x855f('0x1e'));var client=jayson['client'][_0x855f('0x1f')]({'port':0x232b});function respondWithRpcPromise(_0x16cf8d,_0x49fdc0,_0xda659d,_0x13b8d1){return new BPromise(function(_0x50ec23,_0x178492){var _0x21828f=_0x13b8d1||client;return _0x21828f[_0x855f('0x20')](_0x16cf8d,_0xda659d)['then'](function(_0x23a5d0){logger[_0x855f('0x21')]('MailAccount,\x20%s,\x20%s',_0x49fdc0,'request\x20sent');logger[_0x855f('0x22')](_0x855f('0x23'),_0x49fdc0,'request\x20sent',JSON['stringify'](_0x23a5d0));if(_0x23a5d0[_0x855f('0x24')]){if(_0x23a5d0[_0x855f('0x24')][_0x855f('0x25')]===0x1f4){logger['error'](_0x855f('0x26'),_0x49fdc0,_0x23a5d0[_0x855f('0x24')]['message']);return _0x178492(_0x23a5d0['error']['message']);}logger[_0x855f('0x24')](_0x855f('0x26'),_0x49fdc0,_0x23a5d0[_0x855f('0x24')]['message']);return _0x50ec23(_0x23a5d0[_0x855f('0x24')]['message']);}else{logger[_0x855f('0x21')]('MailAccount,\x20%s,\x20%s',_0x49fdc0,'request\x20sent');_0x50ec23(_0x23a5d0['result'][_0x855f('0x27')]);}})['catch'](function(_0x3d7c66){logger['error'](_0x855f('0x26'),_0x49fdc0,_0x3d7c66);_0x178492(_0x3d7c66);});});}function respondWithStatusCode(_0x48c8e0,_0x3b8ec6){_0x3b8ec6=_0x3b8ec6||0xcc;return function(_0x551a86){if(_0x551a86){return _0x48c8e0[_0x855f('0x28')](_0x3b8ec6);}return _0x48c8e0[_0x855f('0x29')](_0x3b8ec6)['end']();};}function respondWithResult(_0x4522f2,_0x97deb3){_0x97deb3=_0x97deb3||0xc8;return function(_0x2d0e80){if(_0x2d0e80){return _0x4522f2[_0x855f('0x29')](_0x97deb3)[_0x855f('0x2a')](_0x2d0e80);}};}function respondWithFilteredResult(_0x156049,_0x10f4ee){return function(_0x3d8e10){if(_0x3d8e10){var _0x3759d6=typeof _0x10f4ee[_0x855f('0x2b')]===_0x855f('0x2c')&&typeof _0x10f4ee[_0x855f('0x2d')]===_0x855f('0x2c');var _0x3bc1c2=_0x3d8e10[_0x855f('0x2e')];var _0xcb5730=_0x3759d6?0x0:_0x10f4ee[_0x855f('0x2b')];var _0x4e4595=_0x3759d6?_0x3d8e10['count']:_0x10f4ee[_0x855f('0x2b')]+_0x10f4ee[_0x855f('0x2d')];var _0x4f6616;if(_0x4e4595>=_0x3bc1c2){_0x4e4595=_0x3bc1c2;_0x4f6616=0xc8;}else{_0x4f6616=0xce;}_0x156049['status'](_0x4f6616);return _0x156049['set'](_0x855f('0x2f'),_0xcb5730+'-'+_0x4e4595+'/'+_0x3bc1c2)[_0x855f('0x2a')](_0x3d8e10);}return null;};}function patchUpdates(_0xbe191d){return function(_0x3f7a50){try{jsonpatch[_0x855f('0x30')](_0x3f7a50,_0xbe191d,!![]);}catch(_0x525646){return BPromise[_0x855f('0x31')](_0x525646);}return _0x3f7a50['save']();};}function saveUpdates(_0x2ffad6,_0xbfb59d){return function(_0x2fdda0){if(_0x2fdda0){return _0x2fdda0[_0x855f('0x32')](_0x2ffad6)[_0x855f('0x33')](function(_0xf9b9b1){return _0xf9b9b1;});}return null;};}function removeEntity(_0x3e7a8f,_0x1cded7){return function(_0x183280){if(_0x183280){return _0x183280[_0x855f('0x34')]()['then'](function(){var _0x292718=_0x183280[_0x855f('0x35')]({'plain':!![]});var _0x47bbd1='MailAccounts';return db['UserProfileResource']['destroy']({'where':{'type':_0x47bbd1,'resourceId':_0x292718['id']}})[_0x855f('0x33')](function(){return _0x183280;});})[_0x855f('0x33')](function(){_0x3e7a8f[_0x855f('0x29')](0xcc)[_0x855f('0x36')]();});}};}function handleEntityNotFound(_0x1487fd,_0x337e21){return function(_0x177895){if(!_0x177895){_0x1487fd[_0x855f('0x28')](0x194);}return _0x177895;};}function handleError(_0x48e3c8,_0x74f78b){_0x74f78b=_0x74f78b||0x1f4;return function(_0x5a47e0){logger[_0x855f('0x24')](_0x5a47e0['stack']);if(_0x5a47e0[_0x855f('0x37')]){delete _0x5a47e0[_0x855f('0x37')];}_0x48e3c8[_0x855f('0x29')](_0x74f78b)[_0x855f('0x38')](_0x5a47e0);};}exports[_0x855f('0x39')]=function(_0x8e9458,_0x54478f){var _0x229340={'include':[{'model':db[_0x855f('0x3a')],'as':_0x855f('0x3b')},{'model':db[_0x855f('0x3c')],'as':_0x855f('0x3d')},{'model':db[_0x855f('0x3e')],'as':'mandatoryDispositionPause'}]},_0x5ba1f3={},_0x38bc01={'count':0x0,'rows':[]};var _0x4f0c67=_[_0x855f('0x3f')](db['MailAccount']['rawAttributes'],function(_0x177360){return{'name':_0x177360[_0x855f('0x40')],'type':_0x177360[_0x855f('0x41')][_0x855f('0x42')]};});_0x5ba1f3[_0x855f('0x43')]=_['map'](_0x4f0c67,'name');_0x5ba1f3[_0x855f('0x44')]=_[_0x855f('0x45')](_0x8e9458[_0x855f('0x44')]);_0x5ba1f3[_0x855f('0x46')]=_['intersection'](_0x5ba1f3[_0x855f('0x43')],_0x5ba1f3[_0x855f('0x44')]);_0x229340[_0x855f('0x47')]=_[_0x855f('0x48')](_0x5ba1f3[_0x855f('0x43')],qs[_0x855f('0x49')](_0x8e9458[_0x855f('0x44')][_0x855f('0x49')]));_0x229340[_0x855f('0x47')]=_0x229340['attributes']['length']?_0x229340[_0x855f('0x47')]:_0x5ba1f3[_0x855f('0x43')];if(!_0x8e9458[_0x855f('0x44')]['hasOwnProperty'](_0x855f('0x4a'))){_0x229340[_0x855f('0x2d')]=qs[_0x855f('0x2d')](_0x8e9458[_0x855f('0x44')][_0x855f('0x2d')]);_0x229340['offset']=qs[_0x855f('0x2b')](_0x8e9458[_0x855f('0x44')][_0x855f('0x2b')]);}_0x229340[_0x855f('0x4b')]=qs[_0x855f('0x4c')](_0x8e9458[_0x855f('0x44')]['sort']);_0x229340['where']=qs[_0x855f('0x46')](_[_0x855f('0x4d')](_0x8e9458[_0x855f('0x44')],_0x5ba1f3['filters']),_0x4f0c67);if(_0x8e9458['query'][_0x855f('0x4e')]){_0x229340[_0x855f('0x4f')]=_[_0x855f('0x50')](_0x229340[_0x855f('0x4f')],{'$or':_['map'](_0x4f0c67,function(_0x27cc14){if(_0x27cc14[_0x855f('0x41')]!=='VIRTUAL'){var _0x6e799e={};_0x6e799e[_0x27cc14[_0x855f('0x37')]]={'$like':'%'+_0x8e9458['query'][_0x855f('0x4e')]+'%'};return _0x6e799e;}})});}_0x229340=_[_0x855f('0x50')]({},_0x229340,_0x8e9458[_0x855f('0x51')]);var _0x3183e4={'where':_0x229340[_0x855f('0x4f')]};return db[_0x855f('0x52')][_0x855f('0x2e')](_0x3183e4)[_0x855f('0x33')](function(_0x346858){_0x38bc01['count']=_0x346858;if(_0x8e9458[_0x855f('0x44')][_0x855f('0x53')]){_0x229340[_0x855f('0x54')]=[{'all':!![]}];}return db[_0x855f('0x52')][_0x855f('0x55')](_0x229340);})['then'](function(_0x59f367){_0x38bc01[_0x855f('0x56')]=_0x59f367;return _0x38bc01;})[_0x855f('0x33')](respondWithFilteredResult(_0x54478f,_0x229340))[_0x855f('0x57')](handleError(_0x54478f,null));};exports[_0x855f('0x58')]=function(_0x2befdf,_0x1a5ca4){var _0xb4e2e={'raw':![],'where':{'id':_0x2befdf[_0x855f('0x59')]['id']},'include':[{'model':db[_0x855f('0x3a')],'as':'Imap'},{'model':db[_0x855f('0x3c')],'as':_0x855f('0x3d')},{'model':db[_0x855f('0x3e')],'as':_0x855f('0x5a')}]},_0x220469={};_0x220469[_0x855f('0x43')]=_[_0x855f('0x45')](db[_0x855f('0x52')][_0x855f('0x5b')]);_0x220469[_0x855f('0x44')]=_[_0x855f('0x45')](_0x2befdf[_0x855f('0x44')]);_0x220469[_0x855f('0x46')]=_[_0x855f('0x48')](_0x220469[_0x855f('0x43')],_0x220469['query']);_0xb4e2e['attributes']=_[_0x855f('0x48')](_0x220469['model'],qs[_0x855f('0x49')](_0x2befdf[_0x855f('0x44')][_0x855f('0x49')]));_0xb4e2e['attributes']=_0xb4e2e['attributes'][_0x855f('0x5c')]?_0xb4e2e[_0x855f('0x47')]:_0x220469[_0x855f('0x43')];if(_0x2befdf['query'][_0x855f('0x53')]){_0xb4e2e[_0x855f('0x54')]=[{'all':!![]}];}_0xb4e2e=_[_0x855f('0x50')]({},_0xb4e2e,_0x2befdf[_0x855f('0x51')]);return db[_0x855f('0x52')]['find'](_0xb4e2e)[_0x855f('0x33')](handleEntityNotFound(_0x1a5ca4,null))['then'](respondWithResult(_0x1a5ca4,null))[_0x855f('0x57')](handleError(_0x1a5ca4,null));};exports[_0x855f('0x32')]=function(_0x54d1cd,_0x5bb6c8){if(_0x54d1cd[_0x855f('0x5d')]['id']){delete _0x54d1cd[_0x855f('0x5d')]['id'];}return db['MailAccount']['find']({'where':{'id':_0x54d1cd[_0x855f('0x59')]['id']},'include':[{'model':db[_0x855f('0x3a')],'as':_0x855f('0x3b')},{'model':db[_0x855f('0x3c')],'as':_0x855f('0x3d')},{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0x855f('0x33')](handleEntityNotFound(_0x5bb6c8,null))[_0x855f('0x33')](saveUpdates(_0x54d1cd[_0x855f('0x5d')],null))[_0x855f('0x33')](function(_0x42cbc4){if(_0x42cbc4&&_0x54d1cd[_0x855f('0x5d')][_0x855f('0x3b')]){return db[_0x855f('0x3a')][_0x855f('0x32')](_0x54d1cd[_0x855f('0x5d')]['Imap'],{'where':{'MailAccountId':_0x42cbc4['id']}})[_0x855f('0x33')](function(){return _0x42cbc4;});}return _0x42cbc4;})['then'](function(_0x5bb04a){if(_0x5bb04a&&_0x54d1cd[_0x855f('0x5d')][_0x855f('0x3d')]){return db[_0x855f('0x3c')][_0x855f('0x32')](_0x54d1cd['body'][_0x855f('0x3d')],{'where':{'MailAccountId':_0x5bb04a['id']}})[_0x855f('0x33')](function(){return _0x5bb04a;});}return _0x5bb04a;})[_0x855f('0x33')](respondWithResult(_0x5bb6c8,null))[_0x855f('0x57')](handleError(_0x5bb6c8,null));};exports[_0x855f('0x5e')]=function(_0xf07b67,_0x23a32b){return db['MailAccount'][_0x855f('0x5e')]()[_0x855f('0x33')](respondWithResult(_0x23a32b,null))[_0x855f('0x57')](handleError(_0x23a32b,null));};exports[_0x855f('0x5f')]=function(_0x196a40,_0x20d7ac,_0x3390a2){if(_0x196a40[_0x855f('0x5d')]['id']){delete _0x196a40[_0x855f('0x5d')]['id'];}return db[_0x855f('0x52')][_0x855f('0x60')]({'where':{'id':_0x196a40[_0x855f('0x59')]['id']}})['then'](handleEntityNotFound(_0x20d7ac,null))[_0x855f('0x33')](function(_0x190c0e){if(_0x190c0e){_0x196a40[_0x855f('0x5d')][_0x855f('0x61')]=_0x190c0e['id'];return db[_0x855f('0x62')][_0x855f('0x63')](_0x196a40[_0x855f('0x5d')]);}})['then'](respondWithResult(_0x20d7ac,null))[_0x855f('0x57')](handleError(_0x20d7ac,null));};exports[_0x855f('0x64')]=function(_0x2a1b9f,_0x46bd70,_0x35f80c){var _0x4a2dd9={'raw':![],'where':{}};var _0x66f806={};var _0xf71b3b={'count':0x0,'rows':[]};return db[_0x855f('0x52')]['findOne']({'where':{'id':_0x2a1b9f[_0x855f('0x59')]['id']}})['then'](handleEntityNotFound(_0x46bd70,null))[_0x855f('0x33')](function(_0x2288ed){if(_0x2288ed){_0x66f806[_0x855f('0x43')]=_['keys'](db[_0x855f('0x62')][_0x855f('0x5b')]);_0x66f806[_0x855f('0x44')]=_[_0x855f('0x45')](_0x2a1b9f[_0x855f('0x44')]);_0x66f806[_0x855f('0x46')]=_['intersection'](_0x66f806[_0x855f('0x43')],_0x66f806[_0x855f('0x44')]);_0x4a2dd9['attributes']=_[_0x855f('0x48')](_0x66f806[_0x855f('0x43')],qs['fields'](_0x2a1b9f[_0x855f('0x44')][_0x855f('0x49')]));_0x4a2dd9[_0x855f('0x47')]=_0x4a2dd9[_0x855f('0x47')][_0x855f('0x5c')]?_0x4a2dd9['attributes']:_0x66f806['model'];if(!_0x2a1b9f[_0x855f('0x44')]['hasOwnProperty']('nolimit')){_0x4a2dd9[_0x855f('0x2d')]=qs['limit'](_0x2a1b9f[_0x855f('0x44')]['limit']);_0x4a2dd9[_0x855f('0x2b')]=qs[_0x855f('0x2b')](_0x2a1b9f[_0x855f('0x44')]['offset']);}_0x4a2dd9[_0x855f('0x4b')]=qs[_0x855f('0x4c')](_0x2a1b9f[_0x855f('0x44')][_0x855f('0x4c')]);_0x4a2dd9['where']=qs[_0x855f('0x46')](_[_0x855f('0x4d')](_0x2a1b9f[_0x855f('0x44')],_0x66f806[_0x855f('0x46')]));_0x4a2dd9['where']['MailAccountId']=_0x2288ed['id'];if(_0x2a1b9f[_0x855f('0x44')]['filter']){_0x4a2dd9[_0x855f('0x4f')]=_[_0x855f('0x50')](_0x4a2dd9[_0x855f('0x4f')],{'$or':_[_0x855f('0x3f')](_0x4a2dd9[_0x855f('0x47')],function(_0x49ba07){var _0x1f15d4={};_0x1f15d4[_0x49ba07]={'$like':'%'+_0x2a1b9f[_0x855f('0x44')][_0x855f('0x4e')]+'%'};return _0x1f15d4;})});}_0x4a2dd9=_[_0x855f('0x50')]({},_0x4a2dd9,_0x2a1b9f['options']);return db['Disposition'][_0x855f('0x2e')]({'where':_0x4a2dd9[_0x855f('0x4f')]})[_0x855f('0x33')](function(_0x5600af){_0xf71b3b['count']=_0x5600af;if(_0x2a1b9f[_0x855f('0x44')][_0x855f('0x53')]){_0x4a2dd9[_0x855f('0x54')]=[{'all':!![]}];}return db[_0x855f('0x62')][_0x855f('0x55')](_0x4a2dd9);})['then'](function(_0x18a37f){_0xf71b3b[_0x855f('0x56')]=_0x18a37f;return _0xf71b3b;});}})[_0x855f('0x33')](respondWithFilteredResult(_0x46bd70,_0x4a2dd9))[_0x855f('0x57')](handleError(_0x46bd70,null));};exports[_0x855f('0x65')]=function(_0x127880,_0x17d727,_0x5c2f82){return db['MailAccount']['find']({'where':{'id':_0x127880[_0x855f('0x59')]['id']}})[_0x855f('0x33')](handleEntityNotFound(_0x17d727,null))[_0x855f('0x33')](function(_0x5ece52){if(_0x5ece52){return _0x5ece52[_0x855f('0x65')](_0x127880[_0x855f('0x44')]['ids']);}})[_0x855f('0x33')](respondWithStatusCode(_0x17d727,null))[_0x855f('0x57')](handleError(_0x17d727,null));};exports[_0x855f('0x66')]=function(_0x1db95d,_0x27019d,_0x36ecd5){if(_0x1db95d[_0x855f('0x5d')]['id']){delete _0x1db95d[_0x855f('0x5d')]['id'];}return db[_0x855f('0x52')][_0x855f('0x60')]({'where':{'id':_0x1db95d['params']['id']}})[_0x855f('0x33')](handleEntityNotFound(_0x27019d,null))['then'](function(_0x350ec9){if(_0x350ec9){_0x1db95d[_0x855f('0x5d')][_0x855f('0x61')]=_0x350ec9['id'];return db[_0x855f('0x67')][_0x855f('0x63')](_0x1db95d[_0x855f('0x5d')]);}})[_0x855f('0x33')](respondWithResult(_0x27019d,null))[_0x855f('0x57')](handleError(_0x27019d,null));};exports[_0x855f('0x68')]=function(_0x55b874,_0x2ff48d,_0x1b5b37){var _0x4ad0be={'raw':![],'where':{}};var _0xdfc4c9={};var _0x40ff9f={'count':0x0,'rows':[]};return db[_0x855f('0x52')][_0x855f('0x69')]({'where':{'id':_0x55b874[_0x855f('0x59')]['id']}})[_0x855f('0x33')](handleEntityNotFound(_0x2ff48d,null))[_0x855f('0x33')](function(_0x36705a){if(_0x36705a){_0xdfc4c9[_0x855f('0x43')]=_['keys'](db[_0x855f('0x67')][_0x855f('0x5b')]);_0xdfc4c9[_0x855f('0x44')]=_[_0x855f('0x45')](_0x55b874[_0x855f('0x44')]);_0xdfc4c9['filters']=_[_0x855f('0x48')](_0xdfc4c9['model'],_0xdfc4c9['query']);_0x4ad0be[_0x855f('0x47')]=_[_0x855f('0x48')](_0xdfc4c9['model'],qs[_0x855f('0x49')](_0x55b874[_0x855f('0x44')]['fields']));_0x4ad0be[_0x855f('0x47')]=_0x4ad0be[_0x855f('0x47')]['length']?_0x4ad0be['attributes']:_0xdfc4c9[_0x855f('0x43')];if(!_0x55b874['query'][_0x855f('0x6a')]('nolimit')){_0x4ad0be['limit']=qs['limit'](_0x55b874[_0x855f('0x44')][_0x855f('0x2d')]);_0x4ad0be[_0x855f('0x2b')]=qs[_0x855f('0x2b')](_0x55b874[_0x855f('0x44')][_0x855f('0x2b')]);}_0x4ad0be[_0x855f('0x4b')]=qs['sort'](_0x55b874[_0x855f('0x44')][_0x855f('0x4c')]);_0x4ad0be[_0x855f('0x4f')]=qs[_0x855f('0x46')](_[_0x855f('0x4d')](_0x55b874[_0x855f('0x44')],_0xdfc4c9[_0x855f('0x46')]));_0x4ad0be[_0x855f('0x4f')]['MailAccountId']=_0x36705a['id'];if(_0x55b874[_0x855f('0x44')][_0x855f('0x4e')]){_0x4ad0be[_0x855f('0x4f')]=_[_0x855f('0x50')](_0x4ad0be[_0x855f('0x4f')],{'$or':_[_0x855f('0x3f')](_0x4ad0be[_0x855f('0x47')],function(_0x4e3007){var _0x458760={};_0x458760[_0x4e3007]={'$like':'%'+_0x55b874[_0x855f('0x44')][_0x855f('0x4e')]+'%'};return _0x458760;})});}_0x4ad0be=_['merge']({},_0x4ad0be,_0x55b874[_0x855f('0x51')]);return db[_0x855f('0x67')]['count']({'where':_0x4ad0be['where']})['then'](function(_0x2dcf60){_0x40ff9f[_0x855f('0x2e')]=_0x2dcf60;if(_0x55b874[_0x855f('0x44')][_0x855f('0x53')]){_0x4ad0be[_0x855f('0x54')]=[{'all':!![]}];}return db[_0x855f('0x67')][_0x855f('0x55')](_0x4ad0be);})[_0x855f('0x33')](function(_0x184ba5){_0x40ff9f[_0x855f('0x56')]=_0x184ba5;return _0x40ff9f;});}})[_0x855f('0x33')](respondWithFilteredResult(_0x2ff48d,_0x4ad0be))[_0x855f('0x57')](handleError(_0x2ff48d,null));};exports[_0x855f('0x6b')]=function(_0x2294ff,_0x203a19,_0x1d5a91){return db[_0x855f('0x52')][_0x855f('0x60')]({'where':{'id':_0x2294ff[_0x855f('0x59')]['id']}})[_0x855f('0x33')](handleEntityNotFound(_0x203a19,null))[_0x855f('0x33')](function(_0x4924af){if(_0x4924af){return _0x4924af[_0x855f('0x6b')](_0x2294ff['query'][_0x855f('0x6c')]);}})[_0x855f('0x33')](respondWithStatusCode(_0x203a19,null))[_0x855f('0x57')](handleError(_0x203a19,null));};exports[_0x855f('0x63')]=function(_0x4c2dcd,_0x159088){var _0xa27e90={'name':_0x4c2dcd[_0x855f('0x5d')]['name'],'key':_0x4c2dcd[_0x855f('0x5d')]['key'],'email':_0x4c2dcd[_0x855f('0x5d')][_0x855f('0x6d')],'ListId':_0x4c2dcd[_0x855f('0x5d')][_0x855f('0x6e')],'active':!_[_0x855f('0x6f')](_0x4c2dcd[_0x855f('0x5d')]['active'])?_0x4c2dcd[_0x855f('0x5d')][_0x855f('0x70')]:!![],'description':_0x4c2dcd[_0x855f('0x5d')][_0x855f('0x71')]||null,'Imap':{},'Smtp':{}};if(_[_0x855f('0x6f')](_0x4c2dcd[_0x855f('0x5d')][_0x855f('0x72')])){if(_0x4c2dcd[_0x855f('0x5d')][_0x855f('0x73')]){_0xa27e90[_0x855f('0x3b')][_0x855f('0x74')]=_0xa27e90[_0x855f('0x3d')][_0x855f('0x74')]=_0x4c2dcd[_0x855f('0x5d')]['cuser'];_0xa27e90[_0x855f('0x3b')]['password']=_0xa27e90[_0x855f('0x3d')][_0x855f('0x75')]=_0x4c2dcd[_0x855f('0x5d')][_0x855f('0x76')];}else{_0xa27e90['Imap'][_0x855f('0x77')]=_0xa27e90[_0x855f('0x3d')][_0x855f('0x77')]=![];}_0xa27e90[_0x855f('0x3b')]['host']=_0x4c2dcd[_0x855f('0x5d')]['Imap'][_0x855f('0x78')];_0xa27e90[_0x855f('0x3b')][_0x855f('0x79')]=_0x4c2dcd[_0x855f('0x5d')][_0x855f('0x3b')]['port'];_0xa27e90[_0x855f('0x3d')][_0x855f('0x78')]=_0x4c2dcd[_0x855f('0x5d')]['Smtp'][_0x855f('0x78')];_0xa27e90[_0x855f('0x3d')][_0x855f('0x79')]=_0x4c2dcd[_0x855f('0x5d')][_0x855f('0x3d')][_0x855f('0x79')];}else{_0xa27e90['Imap'][_0x855f('0x7a')]=_0xa27e90[_0x855f('0x3d')][_0x855f('0x7a')]=_0x4c2dcd['body']['cservice'];_0xa27e90[_0x855f('0x3b')]['user']=_0xa27e90[_0x855f('0x3d')][_0x855f('0x74')]=_0x4c2dcd[_0x855f('0x5d')]['cuser'];_0xa27e90[_0x855f('0x3b')][_0x855f('0x7b')]=_0xa27e90['Smtp']['pass']=_0x4c2dcd[_0x855f('0x5d')]['cpassword'];}return db[_0x855f('0x52')][_0x855f('0x63')](_0xa27e90,{'include':[{'model':db[_0x855f('0x3c')],'as':_0x855f('0x3d')},{'model':db[_0x855f('0x3a')],'as':_0x855f('0x3b')}]})[_0x855f('0x33')](function(_0xab3d60){var _0x457a08=_0x4c2dcd[_0x855f('0x74')][_0x855f('0x35')]({'plain':!![]});if(!_0x457a08)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x457a08[_0x855f('0x7c')]===_0x855f('0x74')){var _0x529d2a=_0xab3d60['get']({'plain':!![]});return db[_0x855f('0x7d')][_0x855f('0x60')]({'where':{'name':'MailAccounts','userProfileId':_0x457a08[_0x855f('0x7e')]},'raw':!![]})['then'](function(_0x263e13){if(_0x263e13&&_0x263e13['autoAssociation']===0x0){return db['UserProfileResource'][_0x855f('0x63')]({'name':_0x529d2a[_0x855f('0x37')],'resourceId':_0x529d2a['id'],'type':_0x263e13[_0x855f('0x37')],'sectionId':_0x263e13['id']},{})[_0x855f('0x33')](function(){return _0xab3d60;});}else{return _0xab3d60;}})[_0x855f('0x57')](function(_0x125cef){logger[_0x855f('0x24')](_0x855f('0x7f'),_0x125cef);throw _0x125cef;});}return _0xab3d60;})[_0x855f('0x33')](respondWithResult(_0x159088,0xc9))[_0x855f('0x57')](handleError(_0x159088,null));};exports['getImap']=function(_0x1ea38a,_0x16072c,_0x2a8c65){return db['MailAccount']['findOne']({'where':{'id':_0x1ea38a[_0x855f('0x59')]['id']}})[_0x855f('0x33')](handleEntityNotFound(_0x16072c,null))[_0x855f('0x33')](function(_0x30ba4c){if(_0x30ba4c){return _0x30ba4c['getImap']();}return null;})[_0x855f('0x33')](respondWithResult(_0x16072c,null))[_0x855f('0x57')](handleError(_0x16072c,null));};exports[_0x855f('0x80')]=function(_0x3f370e,_0x19bb75,_0x1c577f){if(_0x3f370e[_0x855f('0x5d')]['id']){delete _0x3f370e['body']['id'];}return db[_0x855f('0x52')][_0x855f('0x60')]({'where':{'id':_0x3f370e[_0x855f('0x59')]['id']}})[_0x855f('0x33')](handleEntityNotFound(_0x19bb75,null))[_0x855f('0x33')](function(_0x30e515){if(_0x30e515){_0x3f370e[_0x855f('0x5d')][_0x855f('0x61')]=_0x30e515['id'];return db[_0x855f('0x3a')]['create'](_0x3f370e[_0x855f('0x5d')]);}})[_0x855f('0x33')](respondWithResult(_0x19bb75,null))[_0x855f('0x57')](handleError(_0x19bb75,null));};exports['removeImap']=function(_0x1f9557,_0x678453,_0x19b14c){return db['MailAccount']['findOne']({'where':{'id':_0x1f9557[_0x855f('0x59')]['id']}})[_0x855f('0x33')](handleEntityNotFound(_0x678453,null))[_0x855f('0x33')](function(_0x5bc1bb){if(_0x5bc1bb){return _0x5bc1bb[_0x855f('0x81')](null);}return null;})['then'](respondWithStatusCode(_0x678453,null))[_0x855f('0x57')](handleError(_0x678453,null));};exports[_0x855f('0x82')]=function(_0x5febf6,_0x448ee6,_0x4588cc){return db[_0x855f('0x52')][_0x855f('0x69')]({'where':{'id':_0x5febf6[_0x855f('0x59')]['id']}})['then'](handleEntityNotFound(_0x448ee6,null))[_0x855f('0x33')](function(_0x2b6c7a){if(_0x2b6c7a){return _0x2b6c7a[_0x855f('0x82')]();}return null;})[_0x855f('0x33')](respondWithResult(_0x448ee6,null))[_0x855f('0x57')](handleError(_0x448ee6,null));};exports[_0x855f('0x83')]=function(_0x185ac3,_0x44142a,_0x3fe851){if(_0x185ac3[_0x855f('0x5d')]['id']){delete _0x185ac3[_0x855f('0x5d')]['id'];}return db['MailAccount'][_0x855f('0x60')]({'where':{'id':_0x185ac3[_0x855f('0x59')]['id']}})[_0x855f('0x33')](handleEntityNotFound(_0x44142a,null))[_0x855f('0x33')](function(_0x57d033){if(_0x57d033){_0x185ac3[_0x855f('0x5d')]['MailAccountId']=_0x57d033['id'];return db[_0x855f('0x3c')][_0x855f('0x63')](_0x185ac3['body']);}})[_0x855f('0x33')](respondWithResult(_0x44142a,null))['catch'](handleError(_0x44142a,null));};exports['removeSmtp']=function(_0x3bc8aa,_0x21e32e,_0x2b4e9b){return db[_0x855f('0x52')][_0x855f('0x69')]({'where':{'id':_0x3bc8aa['params']['id']}})['then'](handleEntityNotFound(_0x21e32e,null))['then'](function(_0x37bed0){if(_0x37bed0){return _0x37bed0[_0x855f('0x84')](null);}return null;})[_0x855f('0x33')](respondWithStatusCode(_0x21e32e,null))[_0x855f('0x57')](handleError(_0x21e32e,null));};exports[_0x855f('0x85')]=function(_0x1ca913,_0x103435,_0x4c4c04){return db['MailInteraction'][_0x855f('0x60')]({'where':{'id':_0x1ca913[_0x855f('0x59')]['id']}})[_0x855f('0x33')](handleEntityNotFound(_0x103435,null))[_0x855f('0x33')](function(_0x341f8c){if(_0x341f8c){return _0x341f8c[_0x855f('0x85')](_0x1ca913['body']['ids'],_['omit'](_0x1ca913[_0x855f('0x5d')],[_0x855f('0x6c'),'id'])||{});}})['then'](respondWithResult(_0x103435,null))['catch'](handleError(_0x103435,null));};exports[_0x855f('0x86')]=function(_0x1aa6bb,_0x6573ab,_0x176ea2){var _0x2c3ae7={'raw':![],'where':{}};var _0x263be8={};var _0x51a19a={'count':0x0,'rows':[]};return db[_0x855f('0x52')][_0x855f('0x69')]({'where':{'id':_0x1aa6bb[_0x855f('0x59')]['id']}})[_0x855f('0x33')](handleEntityNotFound(_0x6573ab,null))[_0x855f('0x33')](function(_0x233c5a){if(_0x233c5a){_0x263be8[_0x855f('0x43')]=_['keys'](db[_0x855f('0x87')][_0x855f('0x5b')]);_0x263be8[_0x855f('0x44')]=_['keys'](_0x1aa6bb['query']);_0x263be8['filters']=_['intersection'](_0x263be8['model'],_0x263be8[_0x855f('0x44')]);_0x2c3ae7['attributes']=_[_0x855f('0x48')](_0x263be8[_0x855f('0x43')],qs[_0x855f('0x49')](_0x1aa6bb[_0x855f('0x44')][_0x855f('0x49')]));_0x2c3ae7[_0x855f('0x47')]=_0x2c3ae7[_0x855f('0x47')][_0x855f('0x5c')]?_0x2c3ae7[_0x855f('0x47')]:_0x263be8[_0x855f('0x43')];if(!_0x1aa6bb[_0x855f('0x44')]['hasOwnProperty'](_0x855f('0x4a'))){_0x2c3ae7[_0x855f('0x2d')]=qs['limit'](_0x1aa6bb[_0x855f('0x44')]['limit']);_0x2c3ae7[_0x855f('0x2b')]=qs[_0x855f('0x2b')](_0x1aa6bb[_0x855f('0x44')]['offset']);}_0x2c3ae7[_0x855f('0x4b')]=qs[_0x855f('0x4c')](_0x1aa6bb[_0x855f('0x44')]['sort']);_0x2c3ae7[_0x855f('0x4f')]=qs[_0x855f('0x46')](_[_0x855f('0x4d')](_0x1aa6bb[_0x855f('0x44')],_0x263be8['filters']));_0x2c3ae7[_0x855f('0x4f')]['MailAccountId']=_0x233c5a['id'];if(_0x1aa6bb[_0x855f('0x44')][_0x855f('0x4e')]){_0x2c3ae7[_0x855f('0x4f')]=_[_0x855f('0x50')](_0x2c3ae7[_0x855f('0x4f')],{'$or':_[_0x855f('0x3f')](_0x2c3ae7[_0x855f('0x47')],function(_0x5dd575){var _0x44df43={};_0x44df43[_0x5dd575]={'$like':'%'+_0x1aa6bb[_0x855f('0x44')][_0x855f('0x4e')]+'%'};return _0x44df43;})});}_0x2c3ae7=_[_0x855f('0x50')]({},_0x2c3ae7,_0x1aa6bb[_0x855f('0x51')]);return db[_0x855f('0x87')][_0x855f('0x2e')]({'where':_0x2c3ae7[_0x855f('0x4f')]})['then'](function(_0x296611){_0x51a19a['count']=_0x296611;if(_0x1aa6bb[_0x855f('0x44')][_0x855f('0x53')]){_0x2c3ae7[_0x855f('0x54')]=[{'model':db[_0x855f('0x88')],'as':_0x855f('0x89'),'required':![]},{'model':db[_0x855f('0x8a')],'as':'Owner','attributes':['name',_0x855f('0x8b'),_0x855f('0x8c')],'required':![]},{'model':db[_0x855f('0x8d')],'as':_0x855f('0x8e'),'attributes':['id',_0x855f('0x37'),_0x855f('0x8f')],'where':_0x1aa6bb[_0x855f('0x44')]['tag']?{'id':_0x1aa6bb['query'][_0x855f('0x90')]}:undefined,'required':_0x1aa6bb[_0x855f('0x44')][_0x855f('0x90')]?!![]:![]}];}return db[_0x855f('0x87')][_0x855f('0x55')](_0x2c3ae7);})[_0x855f('0x33')](function(_0x2f8f60){_0x51a19a['rows']=_0x2f8f60;return _0x51a19a;});}})['then'](respondWithFilteredResult(_0x6573ab,_0x2c3ae7))[_0x855f('0x57')](handleError(_0x6573ab,null));};exports[_0x855f('0x91')]=function(_0x4106dd,_0x24b86a,_0xf0a2ad){return db[_0x855f('0x52')]['findOne']({'where':{'id':_0x4106dd[_0x855f('0x59')]['id']}})['then'](handleEntityNotFound(_0x24b86a,null))[_0x855f('0x33')](function(_0x15175d){if(_0x15175d){return db[_0x855f('0x92')][_0x855f('0x93')](function(_0x205647){return db['MailApplication'][_0x855f('0x34')]({'where':{'MailAccountId':_0x4106dd[_0x855f('0x59')]['id']},'transaction':_0x205647})[_0x855f('0x33')](function(_0x301f63){var _0x4f287a=_[_0x855f('0x3f')](_0x4106dd[_0x855f('0x5d')],function(_0x524886){_0x524886['MailAccountId']=_0x4106dd['params']['id'];return _0x524886;});return db[_0x855f('0x94')][_0x855f('0x95')](_0x4f287a,{'transaction':_0x205647});});})['then'](function(){return db[_0x855f('0x94')]['findAndCountAll']({'where':{'MailAccountId':_0x4106dd[_0x855f('0x59')]['id']},'order':_0x855f('0x96')});});}})[_0x855f('0x33')](respondWithResult(_0x24b86a,null))[_0x855f('0x57')](handleError(_0x24b86a,null));};exports[_0x855f('0x97')]=function(_0x366c61,_0x1b8116,_0x30a669){var _0x556aa3={};var _0x5e204b={};var _0x5a2e51;var _0x46c757;return db[_0x855f('0x52')][_0x855f('0x69')]({'where':{'id':_0x366c61[_0x855f('0x59')]['id']}})[_0x855f('0x33')](handleEntityNotFound(_0x1b8116,null))[_0x855f('0x33')](function(_0x1869cc){if(_0x1869cc){_0x5a2e51=_0x1869cc;_0x5e204b[_0x855f('0x43')]=_[_0x855f('0x45')](db[_0x855f('0x94')][_0x855f('0x5b')]);_0x5e204b[_0x855f('0x44')]=_['keys'](_0x366c61['query']);_0x5e204b[_0x855f('0x46')]=_[_0x855f('0x48')](_0x5e204b[_0x855f('0x43')],_0x5e204b[_0x855f('0x44')]);_0x556aa3[_0x855f('0x47')]=_[_0x855f('0x48')](_0x5e204b[_0x855f('0x43')],qs[_0x855f('0x49')](_0x366c61['query'][_0x855f('0x49')]));_0x556aa3[_0x855f('0x47')]=_0x556aa3['attributes'][_0x855f('0x5c')]?_0x556aa3[_0x855f('0x47')]:_0x5e204b[_0x855f('0x43')];_0x556aa3[_0x855f('0x4b')]=qs['sort'](_0x366c61[_0x855f('0x44')][_0x855f('0x4c')]);_0x556aa3[_0x855f('0x4f')]=qs['filters'](_['pick'](_0x366c61['query'],_0x5e204b[_0x855f('0x46')]));if(_0x366c61['query'][_0x855f('0x4e')]){_0x556aa3['where']=_['merge'](_0x556aa3['where'],{'$or':_[_0x855f('0x3f')](_0x556aa3[_0x855f('0x47')],function(_0x4b9a4e){var _0x40c8ac={};_0x40c8ac[_0x4b9a4e]={'$like':'%'+_0x366c61[_0x855f('0x44')][_0x855f('0x4e')]+'%'};return _0x40c8ac;})});}_0x556aa3=_['merge']({},_0x556aa3,_0x366c61[_0x855f('0x51')]);return _0x5a2e51['getApplications'](_0x556aa3);}})[_0x855f('0x33')](function(_0x271050){if(_0x271050){_0x46c757=_0x271050['length'];if(!_0x366c61[_0x855f('0x44')]['hasOwnProperty'](_0x855f('0x4a'))){_0x556aa3[_0x855f('0x2d')]=qs[_0x855f('0x2d')](_0x366c61[_0x855f('0x44')][_0x855f('0x2d')]);_0x556aa3[_0x855f('0x2b')]=qs[_0x855f('0x2b')](_0x366c61['query'][_0x855f('0x2b')]);}return _0x5a2e51[_0x855f('0x97')](_0x556aa3);}})[_0x855f('0x33')](function(_0x375123){if(_0x375123){return _0x375123?{'count':_0x46c757,'rows':_0x375123}:null;}})[_0x855f('0x33')](respondWithResult(_0x1b8116,null))[_0x855f('0x57')](handleError(_0x1b8116,null));};exports[_0x855f('0x98')]=function(_0x5d9c51,_0x5767e0,_0xefcd90){var _0x53fb71={'raw':!![],'where':{}};var _0x1f88d1={};var _0x56a4d6={'count':0x0,'rows':[]};return db[_0x855f('0x52')][_0x855f('0x69')]({'where':{'id':_0x5d9c51['params']['id']}})['then'](handleEntityNotFound(_0x5767e0,null))['then'](function(_0x4b5122){if(_0x4b5122){_0x1f88d1[_0x855f('0x43')]=_['keys'](db[_0x855f('0x99')][_0x855f('0x5b')]);_0x1f88d1[_0x855f('0x44')]=_[_0x855f('0x45')](_0x5d9c51[_0x855f('0x44')]);_0x1f88d1[_0x855f('0x46')]=_[_0x855f('0x48')](_0x1f88d1[_0x855f('0x43')],_0x1f88d1['query']);_0x53fb71[_0x855f('0x47')]=_[_0x855f('0x48')](_0x1f88d1[_0x855f('0x43')],qs[_0x855f('0x49')](_0x5d9c51[_0x855f('0x44')]['fields']));_0x53fb71[_0x855f('0x47')]=_0x53fb71[_0x855f('0x47')][_0x855f('0x5c')]?_0x53fb71['attributes']:_0x1f88d1[_0x855f('0x43')];if(!_0x5d9c51['query'][_0x855f('0x6a')]('nolimit')){_0x53fb71['limit']=qs['limit'](_0x5d9c51[_0x855f('0x44')][_0x855f('0x2d')]);_0x53fb71[_0x855f('0x2b')]=qs['offset'](_0x5d9c51[_0x855f('0x44')][_0x855f('0x2b')]);}_0x53fb71[_0x855f('0x4b')]=qs[_0x855f('0x4c')](_0x5d9c51[_0x855f('0x44')][_0x855f('0x4c')]);_0x53fb71['where']=qs[_0x855f('0x46')](_[_0x855f('0x4d')](_0x5d9c51[_0x855f('0x44')],_0x1f88d1[_0x855f('0x46')]));_0x53fb71[_0x855f('0x4f')][_0x855f('0x61')]=_0x4b5122['id'];if(_0x5d9c51[_0x855f('0x44')]['filter']){_0x53fb71[_0x855f('0x4f')]=_[_0x855f('0x50')](_0x53fb71['where'],{'$or':_['map'](_0x53fb71['attributes'],function(_0x125497){var _0x53fb29={};_0x53fb29[_0x125497]={'$like':'%'+_0x5d9c51[_0x855f('0x44')]['filter']+'%'};return _0x53fb29;})});}if(_0x5d9c51[_0x855f('0x44')][_0x855f('0x9a')]){var _0x3c60ec=_0x5d9c51[_0x855f('0x44')][_0x855f('0x9a')]['split'](',');var _0x2971f4={};_0x2971f4[_0x3c60ec[0x0]]={'$gte':moment(_0x3c60ec[0x1])[_0x855f('0x9b')](_0x855f('0x9c'))};_0x53fb71[_0x855f('0x4f')]=_[_0x855f('0x50')](_0x53fb71[_0x855f('0x4f')],_0x2971f4);}_0x53fb71=_[_0x855f('0x50')]({},_0x53fb71,_0x5d9c51[_0x855f('0x51')]);return db['MailMessage'][_0x855f('0x2e')]({'where':_0x53fb71['where']})[_0x855f('0x33')](function(_0x374048){_0x56a4d6[_0x855f('0x2e')]=_0x374048;if(_0x5d9c51['query'][_0x855f('0x53')]){_0x53fb71['include']=[{'all':!![]}];}return db[_0x855f('0x99')][_0x855f('0x55')](_0x53fb71);})['then'](function(_0x20704f){if(_0x5d9c51['query'][_0x855f('0x9d')]==='true'){for(var _0x2744a6=0x0;_0x2744a6<_0x20704f[_0x855f('0x5c')];_0x2744a6++){_0x20704f[_0x2744a6][_0x855f('0x5d')]=juice(_0x20704f[_0x2744a6][_0x855f('0x5d')]);}}_0x56a4d6['rows']=_0x20704f;return _0x56a4d6;});}})[_0x855f('0x33')](respondWithFilteredResult(_0x5767e0,_0x53fb71))['catch'](handleError(_0x5767e0,null));};exports[_0x855f('0x38')]=function(_0x3dee07,_0x3b4302,_0x4acb36){var _0x29f680,_0x35fed4={},_0x5661ee;if(_0x3dee07[_0x855f('0x5d')]['to']){_0x5661ee=_0x3dee07['body']['to'][_0x855f('0x9e')](',')[0x0];}return db[_0x855f('0x52')]['find']({'where':{'id':_0x3dee07[_0x855f('0x59')]['id']},'include':[{'model':db[_0x855f('0x9f')],'as':_0x855f('0xa0'),'include':[{'model':db[_0x855f('0x88')],'as':_0x855f('0xa1'),'where':{'email':_0x5661ee},'limit':0x1,'order':[[_0x855f('0xa2'),'DESC']]}]},{'model':db['MailServerOut'],'as':_0x855f('0x3d'),'raw':!![]}]})[_0x855f('0x33')](handleEntityNotFound(_0x3b4302,null))['then'](function(_0x33721e){if(_0x33721e){_0x29f680=_0x33721e;if(_0x33721e[_0x855f('0x3d')]){if(_['isNil'](_0x3dee07['body'][_0x855f('0xa3')])){_0x3dee07[_0x855f('0x5d')][_0x855f('0xa3')]=util['format'](_0x855f('0xa4'),_0x33721e[_0x855f('0x37')],_0x33721e[_0x855f('0x6d')]||_0x33721e[_0x855f('0x3d')][_0x855f('0x74')]);}if(_0x3dee07[_0x855f('0x5d')][_0x855f('0xa5')]&&_0x3dee07[_0x855f('0x5d')]['attachments'][_0x855f('0x5c')]){for(var _0xa062cc=0x0;_0xa062cc<_0x3dee07[_0x855f('0x5d')][_0x855f('0xa5')]['length'];_0xa062cc+=0x1){_0x3dee07[_0x855f('0x5d')][_0x855f('0xa5')][_0xa062cc]={'filename':_0x3dee07[_0x855f('0x5d')][_0x855f('0xa5')][_0xa062cc]['name'],'path':path[_0x855f('0xa6')](config[_0x855f('0xa7')],_0x855f('0xa8'),_0x3dee07['body']['attachments'][_0xa062cc][_0x855f('0xa9')])};}}var _0x3f5ca5={'tls':{'rejectUnauthorized':![]}};if(_['isNil'](_0x33721e[_0x855f('0x3d')]['service'])){if(_0x33721e[_0x855f('0x3d')][_0x855f('0x77')]){_0x3f5ca5['auth']={'user':_0x33721e['Smtp'][_0x855f('0x74')],'pass':_0x33721e[_0x855f('0x3d')][_0x855f('0x75')]};}_0x3f5ca5['host']=_0x33721e[_0x855f('0x3d')]['host'];_0x3f5ca5['port']=_0x33721e[_0x855f('0x3d')][_0x855f('0x79')];_0x3f5ca5[_0x855f('0xaa')]=_0x33721e[_0x855f('0x3d')][_0x855f('0xaa')];}else{_0x3f5ca5['service']=_0x33721e[_0x855f('0x3d')][_0x855f('0x7a')];_0x3f5ca5[_0x855f('0xab')]={'user':_0x33721e[_0x855f('0x3d')]['user'],'pass':_0x33721e[_0x855f('0x3d')][_0x855f('0x75')]};}return respondWithRpcPromise(_0x855f('0xac'),_0x855f('0xad'),{'account':_0x3f5ca5,'message':_0x3dee07[_0x855f('0x5d')]});}else{throw new Error(_0x855f('0xae'));}}})[_0x855f('0x33')](function(_0x4efec2){if(_0x4efec2){_0x35fed4=_0x4efec2;if(_0x29f680[_0x855f('0xa0')]){if(_0x29f680[_0x855f('0xa0')][_0x855f('0xa1')][_0x855f('0x5c')]){return _0x29f680[_0x855f('0xa0')][_0x855f('0xa1')][0x0];}else{return db[_0x855f('0x88')][_0x855f('0x63')](_[_0x855f('0x19')](_0x3dee07[_0x855f('0x5d')],{'firstName':_0x3dee07[_0x855f('0x5d')]['to'],'email':_0x3dee07[_0x855f('0x5d')]['to'],'phone':_0x3dee07['body']['to'],'ListId':_0x29f680['ListId']}));}}else{throw new Error(_0x855f('0xae'));}}})[_0x855f('0x33')](function(_0x561902){if(_0x561902){var _0x387e0e={'UserId':_0x3dee07['user']['id'],'ContactId':_0x561902['id'],'MailAccountId':_0x29f680['id'],'inReplyTo':_0x35fed4[_0x855f('0xaf')],'to':_0x3dee07['body'][_0x855f('0xa3')],'cc':_0x3dee07['body']['cc'],'subject':_0x3dee07['body'][_0x855f('0xb0')],'attach':_0x3dee07[_0x855f('0x5d')][_0x855f('0xb1')],'firstMsgDirection':_0x855f('0xb2'),'lastMsgAt':moment()[_0x855f('0x9b')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':_0x855f('0xb2'),'Messages':[_[_0x855f('0x50')](_0x3dee07[_0x855f('0x5d')],{'messageId':_0x35fed4[_0x855f('0xaf')],'sentAt':moment()[_0x855f('0x9b')](_0x855f('0x9c')),'read':!![],'MailAccountId':_0x29f680['id'],'UserId':_0x3dee07[_0x855f('0x74')]['id'],'ContactId':_0x561902['id']})]};if(_0x3dee07['body'][_0x855f('0xb3')]){_0x387e0e=_[_0x855f('0x50')](_0x387e0e,_0x3dee07[_0x855f('0x5d')]['Interaction']);}return db[_0x855f('0x87')][_0x855f('0x63')](_0x387e0e,{'include':[{'model':db[_0x855f('0x99')],'as':'Messages'}]});}})[_0x855f('0x33')](respondWithResult(_0x3b4302,null))['catch'](handleError(_0x3b4302,null));};exports['verifySmtp']=function(_0x335594,_0x681e57,_0x27c78f){return db[_0x855f('0x52')][_0x855f('0x60')]({'where':{'id':_0x335594[_0x855f('0x59')]['id']},'include':[{'model':db[_0x855f('0x3c')],'as':_0x855f('0x3d'),'raw':!![]}]})[_0x855f('0x33')](handleEntityNotFound(_0x681e57,null))['then'](function(_0x2b73df){if(_0x2b73df&&_0x2b73df[_0x855f('0x3d')]){var _0x489cd9={'id':_0x2b73df['id'],'tls':{'rejectUnauthorized':![]}};if(_0x2b73df[_0x855f('0x3d')][_0x855f('0x7a')]){_0x489cd9[_0x855f('0x7a')]=_0x2b73df[_0x855f('0x3d')][_0x855f('0x7a')];}else{_0x489cd9[_0x855f('0x78')]=_0x2b73df[_0x855f('0x3d')][_0x855f('0x78')];_0x489cd9['port']=_0x2b73df[_0x855f('0x3d')]['port'];_0x489cd9['secure']=_0x2b73df[_0x855f('0x3d')][_0x855f('0xaa')];}if(_0x2b73df[_0x855f('0x3d')][_0x855f('0x77')]){_0x489cd9['auth']={'user':_0x2b73df['Smtp'][_0x855f('0x74')],'pass':_0x2b73df[_0x855f('0x3d')][_0x855f('0x75')]};}return respondWithRpcPromise(_0x855f('0xb4'),_0x855f('0xb5'),{'account':_0x489cd9});}})[_0x855f('0x33')](respondWithResult(_0x681e57,null))['catch'](handleError(_0x681e57,null));};exports['destroy']=function(_0xc68ef3,_0x14888b){return db['MailAccount'][_0x855f('0x60')]({'where':{'id':_0xc68ef3[_0x855f('0x59')]['id']}})['then'](handleEntityNotFound(_0x14888b,null))[_0x855f('0x33')](function(_0x2c45ec){if(_0x2c45ec&&_0x2c45ec[_0x855f('0x7a')]){throw new db[(_0x855f('0xb6'))][(_0x855f('0xb7'))](_0x855f('0xb8'));}return _0x2c45ec;})[_0x855f('0x33')](removeEntity(_0x14888b,null))['catch'](handleError(_0x14888b,null));};exports[_0x855f('0xb9')]=function(_0x1b007e,_0x3a8f68,_0x65ddc){return db[_0x855f('0x52')][_0x855f('0x60')]({'where':{'id':_0x1b007e[_0x855f('0x59')]['id']}})[_0x855f('0x33')](handleEntityNotFound(_0x3a8f68,null))[_0x855f('0x33')](function(_0xc05b42){if(_0xc05b42){return _0xc05b42[_0x855f('0xb9')](_0x1b007e[_0x855f('0x5d')]['ids'],_[_0x855f('0xba')](_0x1b007e['body'],[_0x855f('0x6c'),'id'])||{})['spread'](function(_0xa22a22){for(var _0x230d7e=0x0;_0x230d7e<_0x1b007e[_0x855f('0x5d')]['ids'][_0x855f('0x5c')];_0x230d7e+=0x1){socket[_0x855f('0xbb')]('userMailAccount:save',{'UserId':Number(_0x1b007e[_0x855f('0x5d')]['ids'][_0x230d7e]),'MailAccountId':Number(_0x1b007e[_0x855f('0x59')]['id'])});}return _0xa22a22;});}})[_0x855f('0x33')](respondWithResult(_0x3a8f68,null))['catch'](handleError(_0x3a8f68,null));};exports['removeAgents']=function(_0x2a7154,_0x29ae41,_0x115953){return db['MailAccount'][_0x855f('0x60')]({'where':{'id':_0x2a7154['params']['id']}})[_0x855f('0x33')](handleEntityNotFound(_0x29ae41,null))[_0x855f('0x33')](function(_0x275f3d){if(_0x275f3d){return _0x275f3d[_0x855f('0xbc')](_0x2a7154['query'][_0x855f('0x6c')])[_0x855f('0x33')](function(){if(_['isArray'](_0x2a7154[_0x855f('0x44')][_0x855f('0x6c')])){for(var _0x47d69d=0x0;_0x47d69d<_0x2a7154[_0x855f('0x44')][_0x855f('0x6c')][_0x855f('0x5c')];_0x47d69d+=0x1){socket['emit'](_0x855f('0xbd'),{'UserId':Number(_0x2a7154[_0x855f('0x44')][_0x855f('0x6c')][_0x47d69d]),'MailAccountId':Number(_0x2a7154[_0x855f('0x59')]['id'])});}}else{socket[_0x855f('0xbb')]('userMailAccount:remove',{'UserId':Number(_0x2a7154[_0x855f('0x44')][_0x855f('0x6c')]),'MailAccountId':Number(_0x2a7154[_0x855f('0x59')]['id'])});}});}})[_0x855f('0x33')](respondWithStatusCode(_0x29ae41,null))['catch'](handleError(_0x29ae41,null));};exports[_0x855f('0xbe')]=function(_0x31bf83,_0x34cc15,_0x2c370b){var _0x15c4f2={};var _0x1f36df={};var _0x519a05;var _0x2ce325;return db[_0x855f('0x52')][_0x855f('0x69')]({'where':{'id':_0x31bf83['params']['id']}})[_0x855f('0x33')](handleEntityNotFound(_0x34cc15,null))[_0x855f('0x33')](function(_0x384633){if(_0x384633){_0x519a05=_0x384633;_0x1f36df['model']=_['keys'](db['User'][_0x855f('0x5b')]);_0x1f36df[_0x855f('0x44')]=_[_0x855f('0x45')](_0x31bf83[_0x855f('0x44')]);_0x1f36df[_0x855f('0x46')]=_[_0x855f('0x48')](_0x1f36df['model'],_0x1f36df['query']);_0x15c4f2[_0x855f('0x47')]=_['intersection'](_0x1f36df['model'],qs[_0x855f('0x49')](_0x31bf83['query']['fields']));_0x15c4f2['attributes']=_0x15c4f2[_0x855f('0x47')][_0x855f('0x5c')]?_0x15c4f2[_0x855f('0x47')]:_0x1f36df['model'];_0x15c4f2[_0x855f('0x4b')]=qs['sort'](_0x31bf83[_0x855f('0x44')][_0x855f('0x4c')]);_0x15c4f2[_0x855f('0x4f')]=qs[_0x855f('0x46')](_[_0x855f('0x4d')](_0x31bf83[_0x855f('0x44')],_0x1f36df[_0x855f('0x46')]));if(_0x31bf83[_0x855f('0x44')][_0x855f('0x4e')]){_0x15c4f2['where']=_[_0x855f('0x50')](_0x15c4f2[_0x855f('0x4f')],{'$or':_[_0x855f('0x3f')](_0x15c4f2[_0x855f('0x47')],function(_0x57e098){var _0x2343dd={};_0x2343dd[_0x57e098]={'$like':'%'+_0x31bf83[_0x855f('0x44')][_0x855f('0x4e')]+'%'};return _0x2343dd;})});}_0x15c4f2=_[_0x855f('0x50')]({},_0x15c4f2,_0x31bf83[_0x855f('0x51')]);return _0x519a05[_0x855f('0xbe')](_0x15c4f2);}})['then'](function(_0x4a2cb5){if(_0x4a2cb5){_0x2ce325=_0x4a2cb5[_0x855f('0x5c')];if(!_0x31bf83[_0x855f('0x44')][_0x855f('0x6a')](_0x855f('0x4a'))){_0x15c4f2[_0x855f('0x2d')]=qs[_0x855f('0x2d')](_0x31bf83[_0x855f('0x44')][_0x855f('0x2d')]);_0x15c4f2[_0x855f('0x2b')]=qs[_0x855f('0x2b')](_0x31bf83[_0x855f('0x44')][_0x855f('0x2b')]);}return _0x519a05[_0x855f('0xbe')](_0x15c4f2);}})['then'](function(_0x50f620){if(_0x50f620){return _0x50f620?{'count':_0x2ce325,'rows':_0x50f620}:null;}})[_0x855f('0x33')](respondWithResult(_0x34cc15,null))['catch'](handleError(_0x34cc15,null));};
\ No newline at end of file
index b8f4c26..73a8e69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2507=['hasOwnProperty','hook','events','../../mysqldb','MailAccount','setMaxListeners','save','remove','emit'];(function(_0xef386a,_0x235bc5){var _0x520c3e=function(_0x5c387c){while(--_0x5c387c){_0xef386a['push'](_0xef386a['shift']());}};_0x520c3e(++_0x235bc5);}(_0x2507,0xda));var _0x7250=function(_0x484faf,_0x3017db){_0x484faf=_0x484faf-0x0;var _0x5099e5=_0x2507[_0x484faf];return _0x5099e5;};'use strict';var EventEmitter=require(_0x7250('0x0'));var MailAccount=require(_0x7250('0x1'))['db'][_0x7250('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x7250('0x3')](0x0);var events={'afterCreate':_0x7250('0x4'),'afterUpdate':'update','afterDestroy':_0x7250('0x5')};function emitEvent(_0x4d3034){return function(_0x3268c3,_0x1458b3,_0x46faf8){MailAccountEvents[_0x7250('0x6')](_0x4d3034+':'+_0x3268c3['id'],_0x3268c3);MailAccountEvents[_0x7250('0x6')](_0x4d3034,_0x3268c3);_0x46faf8(null);};}for(var e in events){if(events[_0x7250('0x7')](e)){var event=events[e];MailAccount[_0x7250('0x8')](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
+var _0x1a62=['MailAccount','save','update','emit','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x545bed,_0x221e96){var _0x16c79c=function(_0x465346){while(--_0x465346){_0x545bed['push'](_0x545bed['shift']());}};_0x16c79c(++_0x221e96);}(_0x1a62,0x176));var _0x21a6=function(_0x995fd8,_0x25cc4d){_0x995fd8=_0x995fd8-0x0;var _0x1ed791=_0x1a62[_0x995fd8];return _0x1ed791;};'use strict';var EventEmitter=require(_0x21a6('0x0'));var MailAccount=require(_0x21a6('0x1'))['db'][_0x21a6('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x21a6('0x3'),'afterUpdate':_0x21a6('0x4'),'afterDestroy':'remove'};function emitEvent(_0x4bc340){return function(_0x488e08,_0x59d6e3,_0x44bbac){MailAccountEvents[_0x21a6('0x5')](_0x4bc340+':'+_0x488e08['id'],_0x488e08);MailAccountEvents[_0x21a6('0x5')](_0x4bc340,_0x488e08);_0x44bbac(null);};}for(var e in events){if(events[_0x21a6('0x6')](e)){var event=events[e];MailAccount[_0x21a6('0x7')](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
index 01196f6..bc1cbc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f16=['exports','mail_accounts','lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./mailAccount.attributes'];(function(_0x1ec66a,_0x414c80){var _0x13d35d=function(_0x35a7bd){while(--_0x35a7bd){_0x1ec66a['push'](_0x1ec66a['shift']());}};_0x13d35d(++_0x414c80);}(_0x7f16,0xde));var _0x67f1=function(_0x4d05dd,_0x258cdd){_0x4d05dd=_0x4d05dd-0x0;var _0x1c5226=_0x7f16[_0x4d05dd];return _0x1c5226;};'use strict';var _=require(_0x67f1('0x0'));var util=require(_0x67f1('0x1'));var logger=require(_0x67f1('0x2'))('api');var moment=require(_0x67f1('0x3'));var BPromise=require(_0x67f1('0x4'));var rp=require(_0x67f1('0x5'));var fs=require('fs');var path=require(_0x67f1('0x6'));var rimraf=require('rimraf');var config=require(_0x67f1('0x7'));var attributes=require(_0x67f1('0x8'));module[_0x67f1('0x9')]=function(_0x533b10,_0x41db42){return _0x533b10['define']('MailAccount',attributes,{'tableName':_0x67f1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3961=['request-promise','path','rimraf','./mailAccount.attributes','exports','MailAccount','mail_accounts','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x39409a,_0x54f60c){var _0xc2aab8=function(_0x45f166){while(--_0x45f166){_0x39409a['push'](_0x39409a['shift']());}};_0xc2aab8(++_0x54f60c);}(_0x3961,0x6f));var _0x1396=function(_0x1f5a63,_0x511504){_0x1f5a63=_0x1f5a63-0x0;var _0x30bb7a=_0x3961[_0x1f5a63];return _0x30bb7a;};'use strict';var _=require(_0x1396('0x0'));var util=require(_0x1396('0x1'));var logger=require(_0x1396('0x2'))(_0x1396('0x3'));var moment=require(_0x1396('0x4'));var BPromise=require(_0x1396('0x5'));var rp=require(_0x1396('0x6'));var fs=require('fs');var path=require(_0x1396('0x7'));var rimraf=require(_0x1396('0x8'));var config=require('../../config/environment');var attributes=require(_0x1396('0x9'));module[_0x1396('0xa')]=function(_0x5eaf9f,_0x2a29b7){return _0x5eaf9f['define'](_0x1396('0xb'),attributes,{'tableName':_0x1396('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9af893e..7afcc22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf58=['options','raw','where','attributes','limit','include','map','model','ShowMailAccount','find','catch','NotifyMailAccount','body','mail','difference','keys','rawAttributes','createdAt','updatedAt','CompanyId','ListId','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','Contacts','DESC','MailApplication','MailServerOut','Smtp','List','account','omit','applications','Applications','list','orderBy','asc','autoclose','push','close','*,*,*,*','CmContact','create','List\x20not\x20found','contact','messageId','generate','subject','attach','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','inReplyTo','Contact\x20not\x20found','spread','update','format','interaction','attachments','originTo','ChatWebsiteId','originChannel','ChatOfflineMessageId','UserId','User','name','unshift','waitForTheAssignedAgent','startRouting','Start','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./mailAccount.socket','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetMailAccount','MailAccount','findAll'];(function(_0x50007c,_0x1cbf11){var _0x5c1ec7=function(_0x52d038){while(--_0x52d038){_0x50007c['push'](_0x50007c['shift']());}};_0x5c1ec7(++_0x1cbf11);}(_0xaf58,0x182));var _0x8af5=function(_0x333f01,_0x3966f2){_0x333f01=_0x333f01-0x0;var _0x157f1f=_0xaf58[_0x333f01];return _0x157f1f;};'use strict';var _=require(_0x8af5('0x0'));var util=require(_0x8af5('0x1'));var moment=require(_0x8af5('0x2'));var BPromise=require(_0x8af5('0x3'));var rs=require(_0x8af5('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8af5('0x5'))['db'];var utils=require(_0x8af5('0x6'));var logger=require('../../config/logger')(_0x8af5('0x7'));var config=require(_0x8af5('0x8'));var jayson=require(_0x8af5('0x9'));var client=jayson['client'][_0x8af5('0xa')]({'port':0x232c});config[_0x8af5('0xb')]=_[_0x8af5('0xc')](config[_0x8af5('0xb')],{'host':_0x8af5('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8af5('0xb')]));require(_0x8af5('0xe'))['register'](socket);function respondWithRpcPromise(_0x40be34,_0x27caa6,_0x5f1a21){return new BPromise(function(_0x1c3027,_0x5ba3ca){return client[_0x8af5('0xf')](_0x40be34,_0x5f1a21)[_0x8af5('0x10')](function(_0x307147){logger[_0x8af5('0x11')](_0x8af5('0x12'),_0x27caa6,_0x8af5('0x13'));logger[_0x8af5('0x14')](_0x8af5('0x15'),_0x27caa6,_0x8af5('0x13'),JSON[_0x8af5('0x16')](_0x307147));if(_0x307147[_0x8af5('0x17')]){if(_0x307147[_0x8af5('0x17')][_0x8af5('0x18')]===0x1f4){logger['error'](_0x8af5('0x12'),_0x27caa6,_0x307147[_0x8af5('0x17')][_0x8af5('0x19')]);return _0x5ba3ca(_0x307147['error']['message']);}logger['error'](_0x8af5('0x12'),_0x27caa6,_0x307147[_0x8af5('0x17')]['message']);return _0x1c3027(_0x307147[_0x8af5('0x17')]['message']);}else{logger['info'](_0x8af5('0x12'),_0x27caa6,_0x8af5('0x13'));_0x1c3027(_0x307147[_0x8af5('0x1a')][_0x8af5('0x19')]);}})['catch'](function(_0x56ccfe){logger[_0x8af5('0x17')](_0x8af5('0x12'),_0x27caa6,_0x56ccfe);_0x5ba3ca(_0x56ccfe);});});}exports[_0x8af5('0x1b')]=function(_0x5d5681){var _0x1bfd90=this;return new Promise(function(_0x2bc238,_0x5e1402){return db[_0x8af5('0x1c')][_0x8af5('0x1d')]({'raw':_0x5d5681[_0x8af5('0x1e')]?_0x5d5681['options'][_0x8af5('0x1f')]===undefined?!![]:![]:!![],'where':_0x5d5681[_0x8af5('0x1e')]?_0x5d5681['options'][_0x8af5('0x20')]||null:null,'attributes':_0x5d5681[_0x8af5('0x1e')]?_0x5d5681[_0x8af5('0x1e')][_0x8af5('0x21')]||null:null,'limit':_0x5d5681[_0x8af5('0x1e')]?_0x5d5681[_0x8af5('0x1e')][_0x8af5('0x22')]||null:null,'include':_0x5d5681[_0x8af5('0x1e')]?_0x5d5681[_0x8af5('0x1e')][_0x8af5('0x23')]?_[_0x8af5('0x24')](_0x5d5681[_0x8af5('0x1e')][_0x8af5('0x23')],function(_0x2a1f7a){return{'model':db[_0x2a1f7a[_0x8af5('0x25')]],'as':_0x2a1f7a['as'],'attributes':_0x2a1f7a[_0x8af5('0x21')],'include':_0x2a1f7a['include']?_[_0x8af5('0x24')](_0x2a1f7a[_0x8af5('0x23')],function(_0x4f2102){return{'model':db[_0x4f2102[_0x8af5('0x25')]],'as':_0x4f2102['as'],'attributes':_0x4f2102['attributes'],'include':_0x4f2102[_0x8af5('0x23')]?_[_0x8af5('0x24')](_0x4f2102[_0x8af5('0x23')],function(_0x8187f5){return{'model':db[_0x8187f5['model']],'as':_0x8187f5['as'],'attributes':_0x8187f5[_0x8af5('0x21')]};}):[]};}):[]};}):[]:[]})[_0x8af5('0x10')](function(_0x87bbd1){logger[_0x8af5('0x11')](_0x8af5('0x1b'),_0x5d5681);logger[_0x8af5('0x14')](_0x8af5('0x1b'),_0x5d5681,JSON['stringify'](_0x87bbd1));_0x2bc238(_0x87bbd1);})['catch'](function(_0x1bdf29){logger[_0x8af5('0x17')](_0x8af5('0x1b'),_0x1bdf29[_0x8af5('0x19')],_0x5d5681);_0x5e1402(_0x1bfd90['error'](0x1f4,_0x1bdf29[_0x8af5('0x19')]));});});};exports[_0x8af5('0x26')]=function(_0x1bc54c){var _0x42d248=this;return new Promise(function(_0x5d19e3,_0x52ae27){return db[_0x8af5('0x1c')][_0x8af5('0x27')]({'raw':_0x1bc54c[_0x8af5('0x1e')]?_0x1bc54c[_0x8af5('0x1e')][_0x8af5('0x1f')]===undefined?!![]:![]:!![],'where':_0x1bc54c[_0x8af5('0x1e')]?_0x1bc54c[_0x8af5('0x1e')][_0x8af5('0x20')]||null:null,'attributes':_0x1bc54c[_0x8af5('0x1e')]?_0x1bc54c[_0x8af5('0x1e')][_0x8af5('0x21')]||null:null,'include':_0x1bc54c['options']?_0x1bc54c[_0x8af5('0x1e')][_0x8af5('0x23')]?_[_0x8af5('0x24')](_0x1bc54c[_0x8af5('0x1e')][_0x8af5('0x23')],function(_0x30ccee){return{'model':db[_0x30ccee[_0x8af5('0x25')]],'as':_0x30ccee['as'],'attributes':_0x30ccee[_0x8af5('0x21')],'include':_0x30ccee[_0x8af5('0x23')]?_[_0x8af5('0x24')](_0x30ccee[_0x8af5('0x23')],function(_0x1e66dc){return{'model':db[_0x1e66dc['model']],'as':_0x1e66dc['as'],'attributes':_0x1e66dc['attributes'],'include':_0x1e66dc[_0x8af5('0x23')]?_[_0x8af5('0x24')](_0x1e66dc['include'],function(_0x379adf){return{'model':db[_0x379adf['model']],'as':_0x379adf['as'],'attributes':_0x379adf['attributes']};}):[]};}):[]};}):[]:[]})[_0x8af5('0x10')](function(_0x364938){logger[_0x8af5('0x11')]('ShowMailAccount',_0x1bc54c);logger[_0x8af5('0x14')]('ShowMailAccount',_0x1bc54c,JSON[_0x8af5('0x16')](_0x364938));_0x5d19e3(_0x364938);})[_0x8af5('0x28')](function(_0x514543){logger[_0x8af5('0x17')](_0x8af5('0x26'),_0x514543[_0x8af5('0x19')],_0x1bc54c);_0x52ae27(_0x42d248[_0x8af5('0x17')](0x1f4,_0x514543[_0x8af5('0x19')]));});});};exports[_0x8af5('0x29')]=function(_0x5ac4d2){var _0x30bf8=this;return new Promise(function(_0x589c35,_0x168643){var _0x5bf72c={'body':_0x5ac4d2[_0x8af5('0x2a')],'channel':_0x8af5('0x2b')};var _0x214f6b=_[_0x8af5('0x2c')](_[_0x8af5('0x2d')](db['CmContact'][_0x8af5('0x2e')]),[_0x8af5('0x2f'),_0x8af5('0x30'),_0x8af5('0x31'),_0x8af5('0x32')]);var _0x8b62d0=![];if(_0x5ac4d2[_0x8af5('0x2a')]['id']){delete _0x5ac4d2[_0x8af5('0x2a')]['id'];}if(_[_0x8af5('0x33')](_0x5ac4d2[_0x8af5('0x2a')]['from'])){return _0x168643(_0x30bf8['error'](0x1f4,_0x8af5('0x34')));}if(_[_0x8af5('0x33')](_0x5ac4d2[_0x8af5('0x2a')][_0x8af5('0x2a')])||_0x5ac4d2[_0x8af5('0x2a')][_0x8af5('0x2a')]===''){return _0x168643(_0x30bf8['error'](0x1f4,_0x8af5('0x35')));}if(_[_0x8af5('0x33')](_0x5ac4d2[_0x8af5('0x2a')][_0x8af5('0x36')])){return _0x168643(_0x30bf8['error'](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x214f6b));}if(!_[_0x8af5('0x37')](_0x214f6b,_0x5ac4d2['body'][_0x8af5('0x36')])){return _0x168643(_0x30bf8[_0x8af5('0x17')](0x1f4,_0x8af5('0x38')+_0x214f6b));}var _0x5df5e8={};_0x5df5e8[_0x5ac4d2[_0x8af5('0x2a')][_0x8af5('0x36')]]=_0x5ac4d2[_0x8af5('0x2a')][_0x8af5('0x39')];return db[_0x8af5('0x1c')][_0x8af5('0x27')]({'where':{'id':_0x5ac4d2['account']['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db['CmContact'],'as':_0x8af5('0x3a'),'where':_0x5df5e8,'limit':0x1,'order':[['updatedAt',_0x8af5('0x3b')]]}]},{'model':db[_0x8af5('0x3c')],'as':'Applications'},{'model':db[_0x8af5('0x3d')],'as':_0x8af5('0x3e')}]})[_0x8af5('0x10')](function(_0x47216d){if(_0x47216d&&_0x47216d[_0x8af5('0x3f')]){var _0xae94ac=_0x47216d['get']({'plain':!![]});_0x5bf72c[_0x8af5('0x40')]=_[_0x8af5('0x41')](_0xae94ac,['Applications',_0x8af5('0x3f')]);_0x5bf72c[_0x8af5('0x42')]=_0xae94ac[_0x8af5('0x43')];_0x5bf72c[_0x8af5('0x44')]=_0xae94ac['List'];_0x5bf72c['applications']=_[_0x8af5('0x45')](_0x5bf72c[_0x8af5('0x42')],['priority'],[_0x8af5('0x46')]);if(_0x5bf72c[_0x8af5('0x40')]&&_0x5bf72c[_0x8af5('0x40')][_0x8af5('0x47')]){_0x5bf72c[_0x8af5('0x42')][_0x8af5('0x48')]({'id':0x0,'priority':_0x5bf72c[_0x8af5('0x42')]['length']+0x1,'app':_0x8af5('0x49'),'appdata':_0x8af5('0x47'),'interval':_0x8af5('0x4a')});}if(_0x5bf72c[_0x8af5('0x40')][_0x8af5('0x43')]){delete _0x5bf72c['account'][_0x8af5('0x43')];}if(_0x5bf72c['account']['List']){delete _0x5bf72c[_0x8af5('0x40')][_0x8af5('0x3f')];}if(_0xae94ac['List'][_0x8af5('0x3a')]['length']){return _0xae94ac[_0x8af5('0x3f')][_0x8af5('0x3a')][0x0];}var _0x3c07d1=_[_0x8af5('0xc')](_0x5ac4d2[_0x8af5('0x2a')],{'firstName':_0x5ac4d2[_0x8af5('0x2a')]['from'],'ListId':_0xae94ac[_0x8af5('0x32')]});_0x3c07d1[_0x5ac4d2[_0x8af5('0x2a')][_0x8af5('0x36')]]=_0x5ac4d2[_0x8af5('0x2a')]['from'];return db[_0x8af5('0x4b')][_0x8af5('0x4c')](_0x3c07d1);}else{throw new Error(_0x8af5('0x4d'));}})[_0x8af5('0x10')](function(_0xb3b511){_0x5bf72c[_0x8af5('0x4e')]=_0xb3b511;if(_0xb3b511){if(!_0x5ac4d2[_0x8af5('0x2a')]['message'][_0x8af5('0x4f')]){_0x5ac4d2[_0x8af5('0x2a')][_0x8af5('0x19')][_0x8af5('0x4f')]=rs[_0x8af5('0x50')]()+'\x20'+_0x5ac4d2['body']['message']['from'];}var _0x2629c5={'ContactId':_0xb3b511['id'],'MailAccountId':_0x5ac4d2[_0x8af5('0x40')]['id'],'inReplyTo':_0x5ac4d2['body'][_0x8af5('0x19')][_0x8af5('0x4f')],'to':_0x5ac4d2[_0x8af5('0x2a')][_0x8af5('0x19')][_0x8af5('0x39')],'cc':_0x5ac4d2[_0x8af5('0x2a')][_0x8af5('0x19')]['cc'],'subject':_0x5ac4d2[_0x8af5('0x2a')][_0x8af5('0x19')][_0x8af5('0x51')],'attach':_0x5ac4d2['body']['message'][_0x8af5('0x52')],'lastMsgAt':moment()['format'](_0x8af5('0x53')),'lastMsgDirection':'in'};return db[_0x8af5('0x54')]['find']({'where':{'closed':![],'MailAccountId':_0x5ac4d2['account']['id']},'include':[{'model':db[_0x8af5('0x55')],'as':'Messages','attributes':[_0x8af5('0x4f')],'where':{'messageId':_0x5ac4d2[_0x8af5('0x2a')][_0x8af5('0x19')][_0x8af5('0x56')]}}]})[_0x8af5('0x10')](function(_0x2ca71c){if(_0x2ca71c){return[_0x2ca71c,![]];}return db[_0x8af5('0x54')][_0x8af5('0x4c')](_0x2629c5)[_0x8af5('0x10')](function(_0x48e229){return[_0x48e229,!![]];});});}else{throw new Error(_0x8af5('0x57'));}})[_0x8af5('0x58')](function(_0x61b82b,_0x3fb22e){if(_0x61b82b){_0x8b62d0=_0x3fb22e;if(!_0x3fb22e){return _0x61b82b[_0x8af5('0x59')]({'inReplyTo':_0x5ac4d2['body'][_0x8af5('0x19')]['messageId'],'to':_0x5ac4d2[_0x8af5('0x2a')][_0x8af5('0x19')][_0x8af5('0x39')],'cc':_0x5ac4d2['body']['message']['cc'],'subject':_0x5ac4d2[_0x8af5('0x2a')][_0x8af5('0x19')][_0x8af5('0x51')],'attach':_0x61b82b['attach']?_0x61b82b[_0x8af5('0x52')]:_0x5ac4d2['body']['message'][_0x8af5('0x52')],'substatus':null,'substatusAt':moment()[_0x8af5('0x5a')](_0x8af5('0x53')),'lastMsgAt':moment()['format'](_0x8af5('0x53')),'lastMsgDirection':'in'});}else{return _0x61b82b;}}})[_0x8af5('0x10')](function(_0x223ce7){_0x5bf72c[_0x8af5('0x5b')]=_0x223ce7['get']({'plain':!![]});_0x5bf72c[_0x8af5('0x5b')]['created']=_0x8b62d0;return db[_0x8af5('0x55')]['create']({'body':_0x5ac4d2[_0x8af5('0x2a')][_0x8af5('0x2a')],'MailAccountId':_0x5ac4d2[_0x8af5('0x40')]['id'],'MailInteractionId':_0x223ce7['id'],'direction':'in','ContactId':_0x5bf72c[_0x8af5('0x4e')]['id'],'messageId':_0x5ac4d2[_0x8af5('0x2a')]['message']['messageId'],'from':_0x5ac4d2['body'][_0x8af5('0x19')]['from'],'to':_0x5ac4d2[_0x8af5('0x2a')][_0x8af5('0x19')]['to'],'cc':_0x5ac4d2[_0x8af5('0x2a')][_0x8af5('0x19')]['cc'],'subject':_0x5ac4d2['body'][_0x8af5('0x19')][_0x8af5('0x51')],'attach':_0x5ac4d2[_0x8af5('0x2a')][_0x8af5('0x19')][_0x8af5('0x52')],'Attachments':_0x5ac4d2[_0x8af5('0x2a')]['message'][_0x8af5('0x5c')],'originTo':_0x5ac4d2['body'][_0x8af5('0x19')][_0x8af5('0x5d')],'originCc':_0x5ac4d2[_0x8af5('0x2a')][_0x8af5('0x19')]['originCc'],'bcc':_0x5ac4d2['body'][_0x8af5('0x19')]['bcc'],'ChatWebsiteId':_0x5ac4d2[_0x8af5('0x2a')]['message'][_0x8af5('0x5e')]||null,'originChannel':_0x5ac4d2[_0x8af5('0x2a')]['message'][_0x8af5('0x5f')]||'Email','ChatOfflineMessageId':_0x5ac4d2[_0x8af5('0x2a')][_0x8af5('0x19')][_0x8af5('0x60')]||null},{'include':[{'model':db['Attachment'],'as':'Attachments'}]});})[_0x8af5('0x10')](function(_0x575d29){_0x5bf72c[_0x8af5('0x19')]=_0x575d29;if(_0x5bf72c[_0x8af5('0x5b')][_0x8af5('0x61')]){return db[_0x8af5('0x62')][_0x8af5('0x27')]({'attributes':['id',_0x8af5('0x63')],'where':{'id':_0x5bf72c['interaction'][_0x8af5('0x61')]}})['then'](function(_0xf7df9f){if(_0xf7df9f){_0x5bf72c[_0x8af5('0x42')][_0x8af5('0x64')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0xf7df9f['name']+','+(_0x5bf72c[_0x8af5('0x40')][_0x8af5('0x65')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise('Start',_0x8af5('0x66'),_0x5bf72c);});}return respondWithRpcPromise(_0x8af5('0x67'),_0x8af5('0x66'),_0x5bf72c);})[_0x8af5('0x10')](function(_0x2b3579){_0x589c35(_0x2b3579);})[_0x8af5('0x28')](function(_0x5e1631){_0x168643(_0x30bf8['error'](0x1f4,_0x5e1631['message']));});});};
\ No newline at end of file
+var _0x1e6c=['difference','keys','rawAttributes','createdAt','updatedAt','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','CmList','List','CmContact','MailApplication','MailServerOut','get','omit','applications','Applications','list','orderBy','asc','account','autoclose','push','length','close','*,*,*,*','List\x20not\x20found','contact','messageId','generate','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','update','interaction','create','attachments','originTo','originCc','bcc','originChannel','ChatOfflineMessageId','Attachment','Attachments','UserId','name','unshift','waitForTheAssignedAgent','startRouting','Start','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','register','request','then','MailAccount,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','GetMailAccount','MailAccount','findAll','options','raw','where','limit','include','model','map','attributes','stringify','find','info','ShowMailAccount','body','mail'];(function(_0x5bd4f6,_0xf4e45c){var _0x33a165=function(_0x37eef6){while(--_0x37eef6){_0x5bd4f6['push'](_0x5bd4f6['shift']());}};_0x33a165(++_0xf4e45c);}(_0x1e6c,0x102));var _0xc1e6=function(_0x2114e3,_0x2c3028){_0x2114e3=_0x2114e3-0x0;var _0x6bff25=_0x1e6c[_0x2114e3];return _0x6bff25;};'use strict';var _=require(_0xc1e6('0x0'));var util=require('util');var moment=require(_0xc1e6('0x1'));var BPromise=require(_0xc1e6('0x2'));var rs=require(_0xc1e6('0x3'));var fs=require('fs');var Redis=require(_0xc1e6('0x4'));var db=require(_0xc1e6('0x5'))['db'];var utils=require(_0xc1e6('0x6'));var logger=require(_0xc1e6('0x7'))(_0xc1e6('0x8'));var config=require('../../config/environment');var jayson=require(_0xc1e6('0x9'));var client=jayson[_0xc1e6('0xa')]['http']({'port':0x232c});config['redis']=_[_0xc1e6('0xb')](config[_0xc1e6('0xc')],{'host':_0xc1e6('0xd'),'port':0x18eb});var socket=require(_0xc1e6('0xe'))(new Redis(config[_0xc1e6('0xc')]));require('./mailAccount.socket')[_0xc1e6('0xf')](socket);function respondWithRpcPromise(_0x402fd1,_0x5f196a,_0x504830){return new BPromise(function(_0x368268,_0x559943){return client[_0xc1e6('0x10')](_0x402fd1,_0x504830)[_0xc1e6('0x11')](function(_0x52bcff){logger['info'](_0xc1e6('0x12'),_0x5f196a,_0xc1e6('0x13'));logger[_0xc1e6('0x14')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x5f196a,_0xc1e6('0x13'),JSON['stringify'](_0x52bcff));if(_0x52bcff['error']){if(_0x52bcff[_0xc1e6('0x15')][_0xc1e6('0x16')]===0x1f4){logger[_0xc1e6('0x15')]('MailAccount,\x20%s,\x20%s',_0x5f196a,_0x52bcff[_0xc1e6('0x15')][_0xc1e6('0x17')]);return _0x559943(_0x52bcff['error']['message']);}logger[_0xc1e6('0x15')](_0xc1e6('0x12'),_0x5f196a,_0x52bcff[_0xc1e6('0x15')][_0xc1e6('0x17')]);return _0x368268(_0x52bcff[_0xc1e6('0x15')][_0xc1e6('0x17')]);}else{logger['info'](_0xc1e6('0x12'),_0x5f196a,_0xc1e6('0x13'));_0x368268(_0x52bcff[_0xc1e6('0x18')]['message']);}})['catch'](function(_0x105874){logger['error']('MailAccount,\x20%s,\x20%s',_0x5f196a,_0x105874);_0x559943(_0x105874);});});}exports[_0xc1e6('0x19')]=function(_0x4ca0a4){var _0x157fa4=this;return new Promise(function(_0x3f7468,_0x3d3c74){return db[_0xc1e6('0x1a')][_0xc1e6('0x1b')]({'raw':_0x4ca0a4[_0xc1e6('0x1c')]?_0x4ca0a4['options'][_0xc1e6('0x1d')]===undefined?!![]:![]:!![],'where':_0x4ca0a4['options']?_0x4ca0a4[_0xc1e6('0x1c')][_0xc1e6('0x1e')]||null:null,'attributes':_0x4ca0a4[_0xc1e6('0x1c')]?_0x4ca0a4['options']['attributes']||null:null,'limit':_0x4ca0a4[_0xc1e6('0x1c')]?_0x4ca0a4[_0xc1e6('0x1c')][_0xc1e6('0x1f')]||null:null,'include':_0x4ca0a4[_0xc1e6('0x1c')]?_0x4ca0a4['options'][_0xc1e6('0x20')]?_['map'](_0x4ca0a4[_0xc1e6('0x1c')][_0xc1e6('0x20')],function(_0x34ef91){return{'model':db[_0x34ef91[_0xc1e6('0x21')]],'as':_0x34ef91['as'],'attributes':_0x34ef91['attributes'],'include':_0x34ef91['include']?_['map'](_0x34ef91[_0xc1e6('0x20')],function(_0x5db3ef){return{'model':db[_0x5db3ef['model']],'as':_0x5db3ef['as'],'attributes':_0x5db3ef['attributes'],'include':_0x5db3ef['include']?_[_0xc1e6('0x22')](_0x5db3ef[_0xc1e6('0x20')],function(_0x288ad4){return{'model':db[_0x288ad4[_0xc1e6('0x21')]],'as':_0x288ad4['as'],'attributes':_0x288ad4[_0xc1e6('0x23')]};}):[]};}):[]};}):[]:[]})[_0xc1e6('0x11')](function(_0x5c5425){logger['info'](_0xc1e6('0x19'),_0x4ca0a4);logger['debug']('GetMailAccount',_0x4ca0a4,JSON[_0xc1e6('0x24')](_0x5c5425));_0x3f7468(_0x5c5425);})['catch'](function(_0x5bbeb7){logger[_0xc1e6('0x15')](_0xc1e6('0x19'),_0x5bbeb7[_0xc1e6('0x17')],_0x4ca0a4);_0x3d3c74(_0x157fa4[_0xc1e6('0x15')](0x1f4,_0x5bbeb7[_0xc1e6('0x17')]));});});};exports['ShowMailAccount']=function(_0x49a9ae){var _0x55e44e=this;return new Promise(function(_0x28cca6,_0x4799df){return db[_0xc1e6('0x1a')][_0xc1e6('0x25')]({'raw':_0x49a9ae[_0xc1e6('0x1c')]?_0x49a9ae[_0xc1e6('0x1c')][_0xc1e6('0x1d')]===undefined?!![]:![]:!![],'where':_0x49a9ae[_0xc1e6('0x1c')]?_0x49a9ae[_0xc1e6('0x1c')][_0xc1e6('0x1e')]||null:null,'attributes':_0x49a9ae[_0xc1e6('0x1c')]?_0x49a9ae['options'][_0xc1e6('0x23')]||null:null,'include':_0x49a9ae[_0xc1e6('0x1c')]?_0x49a9ae[_0xc1e6('0x1c')][_0xc1e6('0x20')]?_['map'](_0x49a9ae[_0xc1e6('0x1c')]['include'],function(_0x2508df){return{'model':db[_0x2508df[_0xc1e6('0x21')]],'as':_0x2508df['as'],'attributes':_0x2508df[_0xc1e6('0x23')],'include':_0x2508df[_0xc1e6('0x20')]?_['map'](_0x2508df[_0xc1e6('0x20')],function(_0x10862f){return{'model':db[_0x10862f[_0xc1e6('0x21')]],'as':_0x10862f['as'],'attributes':_0x10862f[_0xc1e6('0x23')],'include':_0x10862f[_0xc1e6('0x20')]?_[_0xc1e6('0x22')](_0x10862f[_0xc1e6('0x20')],function(_0x51c0c9){return{'model':db[_0x51c0c9[_0xc1e6('0x21')]],'as':_0x51c0c9['as'],'attributes':_0x51c0c9[_0xc1e6('0x23')]};}):[]};}):[]};}):[]:[]})[_0xc1e6('0x11')](function(_0x2246e3){logger[_0xc1e6('0x26')](_0xc1e6('0x27'),_0x49a9ae);logger[_0xc1e6('0x14')](_0xc1e6('0x27'),_0x49a9ae,JSON[_0xc1e6('0x24')](_0x2246e3));_0x28cca6(_0x2246e3);})['catch'](function(_0x333913){logger[_0xc1e6('0x15')]('ShowMailAccount',_0x333913[_0xc1e6('0x17')],_0x49a9ae);_0x4799df(_0x55e44e[_0xc1e6('0x15')](0x1f4,_0x333913[_0xc1e6('0x17')]));});});};exports['NotifyMailAccount']=function(_0x17ab0a){var _0x4e28b2=this;return new Promise(function(_0x78b4c4,_0x1264ae){var _0x4aa69b={'body':_0x17ab0a[_0xc1e6('0x28')],'channel':_0xc1e6('0x29')};var _0x5c6403=_[_0xc1e6('0x2a')](_[_0xc1e6('0x2b')](db['CmContact'][_0xc1e6('0x2c')]),[_0xc1e6('0x2d'),_0xc1e6('0x2e'),'CompanyId',_0xc1e6('0x2f')]);var _0x3c071b=![];if(_0x17ab0a['body']['id']){delete _0x17ab0a[_0xc1e6('0x28')]['id'];}if(_[_0xc1e6('0x30')](_0x17ab0a[_0xc1e6('0x28')][_0xc1e6('0x31')])){return _0x1264ae(_0x4e28b2['error'](0x1f4,_0xc1e6('0x32')));}if(_[_0xc1e6('0x30')](_0x17ab0a['body']['body'])||_0x17ab0a[_0xc1e6('0x28')][_0xc1e6('0x28')]===''){return _0x1264ae(_0x4e28b2[_0xc1e6('0x15')](0x1f4,_0xc1e6('0x33')));}if(_[_0xc1e6('0x30')](_0x17ab0a[_0xc1e6('0x28')][_0xc1e6('0x34')])){return _0x1264ae(_0x4e28b2[_0xc1e6('0x15')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5c6403));}if(!_[_0xc1e6('0x35')](_0x5c6403,_0x17ab0a['body'][_0xc1e6('0x34')])){return _0x1264ae(_0x4e28b2[_0xc1e6('0x15')](0x1f4,'mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5c6403));}var _0x2df1de={};_0x2df1de[_0x17ab0a['body'][_0xc1e6('0x34')]]=_0x17ab0a[_0xc1e6('0x28')][_0xc1e6('0x31')];return db['MailAccount'][_0xc1e6('0x25')]({'where':{'id':_0x17ab0a['account']['id']},'include':[{'model':db[_0xc1e6('0x36')],'as':_0xc1e6('0x37'),'include':[{'model':db[_0xc1e6('0x38')],'as':'Contacts','where':_0x2df1de,'limit':0x1,'order':[[_0xc1e6('0x2e'),'DESC']]}]},{'model':db[_0xc1e6('0x39')],'as':'Applications'},{'model':db[_0xc1e6('0x3a')],'as':'Smtp'}]})[_0xc1e6('0x11')](function(_0x3b4593){if(_0x3b4593&&_0x3b4593[_0xc1e6('0x37')]){var _0x15e0b9=_0x3b4593[_0xc1e6('0x3b')]({'plain':!![]});_0x4aa69b['account']=_[_0xc1e6('0x3c')](_0x15e0b9,['Applications','List']);_0x4aa69b[_0xc1e6('0x3d')]=_0x15e0b9[_0xc1e6('0x3e')];_0x4aa69b[_0xc1e6('0x3f')]=_0x15e0b9[_0xc1e6('0x37')];_0x4aa69b[_0xc1e6('0x3d')]=_[_0xc1e6('0x40')](_0x4aa69b[_0xc1e6('0x3d')],['priority'],[_0xc1e6('0x41')]);if(_0x4aa69b[_0xc1e6('0x42')]&&_0x4aa69b[_0xc1e6('0x42')][_0xc1e6('0x43')]){_0x4aa69b[_0xc1e6('0x3d')][_0xc1e6('0x44')]({'id':0x0,'priority':_0x4aa69b[_0xc1e6('0x3d')][_0xc1e6('0x45')]+0x1,'app':_0xc1e6('0x46'),'appdata':_0xc1e6('0x43'),'interval':_0xc1e6('0x47')});}if(_0x4aa69b[_0xc1e6('0x42')][_0xc1e6('0x3e')]){delete _0x4aa69b['account']['Applications'];}if(_0x4aa69b[_0xc1e6('0x42')][_0xc1e6('0x37')]){delete _0x4aa69b[_0xc1e6('0x42')][_0xc1e6('0x37')];}if(_0x15e0b9[_0xc1e6('0x37')]['Contacts'][_0xc1e6('0x45')]){return _0x15e0b9['List']['Contacts'][0x0];}var _0x32cc4d=_['defaults'](_0x17ab0a[_0xc1e6('0x28')],{'firstName':_0x17ab0a[_0xc1e6('0x28')][_0xc1e6('0x31')],'ListId':_0x15e0b9[_0xc1e6('0x2f')]});_0x32cc4d[_0x17ab0a[_0xc1e6('0x28')][_0xc1e6('0x34')]]=_0x17ab0a[_0xc1e6('0x28')][_0xc1e6('0x31')];return db['CmContact']['create'](_0x32cc4d);}else{throw new Error(_0xc1e6('0x48'));}})[_0xc1e6('0x11')](function(_0x5d0a5e){_0x4aa69b[_0xc1e6('0x49')]=_0x5d0a5e;if(_0x5d0a5e){if(!_0x17ab0a[_0xc1e6('0x28')][_0xc1e6('0x17')][_0xc1e6('0x4a')]){_0x17ab0a[_0xc1e6('0x28')][_0xc1e6('0x17')]['messageId']=rs[_0xc1e6('0x4b')]()+'\x20'+_0x17ab0a[_0xc1e6('0x28')]['message'][_0xc1e6('0x31')];}var _0x4e685f={'ContactId':_0x5d0a5e['id'],'MailAccountId':_0x17ab0a[_0xc1e6('0x42')]['id'],'inReplyTo':_0x17ab0a[_0xc1e6('0x28')][_0xc1e6('0x17')][_0xc1e6('0x4a')],'to':_0x17ab0a['body'][_0xc1e6('0x17')][_0xc1e6('0x31')],'cc':_0x17ab0a[_0xc1e6('0x28')]['message']['cc'],'subject':_0x17ab0a[_0xc1e6('0x28')][_0xc1e6('0x17')][_0xc1e6('0x4c')],'attach':_0x17ab0a[_0xc1e6('0x28')][_0xc1e6('0x17')][_0xc1e6('0x4d')],'lastMsgAt':moment()[_0xc1e6('0x4e')](_0xc1e6('0x4f')),'lastMsgDirection':'in'};return db[_0xc1e6('0x50')]['find']({'where':{'closed':![],'MailAccountId':_0x17ab0a[_0xc1e6('0x42')]['id']},'include':[{'model':db[_0xc1e6('0x51')],'as':_0xc1e6('0x52'),'attributes':[_0xc1e6('0x4a')],'where':{'messageId':_0x17ab0a[_0xc1e6('0x28')][_0xc1e6('0x17')]['inReplyTo']}}]})['then'](function(_0x407ed5){if(_0x407ed5){return[_0x407ed5,![]];}return db[_0xc1e6('0x50')]['create'](_0x4e685f)[_0xc1e6('0x11')](function(_0x2f9a20){return[_0x2f9a20,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})['spread'](function(_0x2df9ac,_0x282337){if(_0x2df9ac){_0x3c071b=_0x282337;if(!_0x282337){return _0x2df9ac[_0xc1e6('0x53')]({'inReplyTo':_0x17ab0a[_0xc1e6('0x28')]['message'][_0xc1e6('0x4a')],'to':_0x17ab0a['body'][_0xc1e6('0x17')]['from'],'cc':_0x17ab0a[_0xc1e6('0x28')]['message']['cc'],'subject':_0x17ab0a[_0xc1e6('0x28')][_0xc1e6('0x17')]['subject'],'attach':_0x2df9ac[_0xc1e6('0x4d')]?_0x2df9ac['attach']:_0x17ab0a[_0xc1e6('0x28')][_0xc1e6('0x17')]['attach'],'substatus':null,'substatusAt':moment()[_0xc1e6('0x4e')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()[_0xc1e6('0x4e')](_0xc1e6('0x4f')),'lastMsgDirection':'in'});}else{return _0x2df9ac;}}})['then'](function(_0x4b1bd8){_0x4aa69b[_0xc1e6('0x54')]=_0x4b1bd8[_0xc1e6('0x3b')]({'plain':!![]});_0x4aa69b['interaction']['created']=_0x3c071b;return db['MailMessage'][_0xc1e6('0x55')]({'body':_0x17ab0a['body'][_0xc1e6('0x28')],'MailAccountId':_0x17ab0a[_0xc1e6('0x42')]['id'],'MailInteractionId':_0x4b1bd8['id'],'direction':'in','ContactId':_0x4aa69b['contact']['id'],'messageId':_0x17ab0a['body'][_0xc1e6('0x17')]['messageId'],'from':_0x17ab0a[_0xc1e6('0x28')]['message'][_0xc1e6('0x31')],'to':_0x17ab0a[_0xc1e6('0x28')]['message']['to'],'cc':_0x17ab0a[_0xc1e6('0x28')]['message']['cc'],'subject':_0x17ab0a['body'][_0xc1e6('0x17')][_0xc1e6('0x4c')],'attach':_0x17ab0a[_0xc1e6('0x28')]['message'][_0xc1e6('0x4d')],'Attachments':_0x17ab0a[_0xc1e6('0x28')][_0xc1e6('0x17')][_0xc1e6('0x56')],'originTo':_0x17ab0a['body'][_0xc1e6('0x17')][_0xc1e6('0x57')],'originCc':_0x17ab0a[_0xc1e6('0x28')][_0xc1e6('0x17')][_0xc1e6('0x58')],'bcc':_0x17ab0a['body'][_0xc1e6('0x17')][_0xc1e6('0x59')],'ChatWebsiteId':_0x17ab0a['body'][_0xc1e6('0x17')]['ChatWebsiteId']||null,'originChannel':_0x17ab0a[_0xc1e6('0x28')][_0xc1e6('0x17')][_0xc1e6('0x5a')]||'Email','ChatOfflineMessageId':_0x17ab0a[_0xc1e6('0x28')][_0xc1e6('0x17')][_0xc1e6('0x5b')]||null},{'include':[{'model':db[_0xc1e6('0x5c')],'as':_0xc1e6('0x5d')}]});})[_0xc1e6('0x11')](function(_0x76df0a){_0x4aa69b['message']=_0x76df0a;if(_0x4aa69b[_0xc1e6('0x54')][_0xc1e6('0x5e')]){return db['User'][_0xc1e6('0x25')]({'attributes':['id',_0xc1e6('0x5f')],'where':{'id':_0x4aa69b[_0xc1e6('0x54')][_0xc1e6('0x5e')]}})[_0xc1e6('0x11')](function(_0x3d31ea){if(_0x3d31ea){_0x4aa69b[_0xc1e6('0x3d')][_0xc1e6('0x60')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x3d31ea[_0xc1e6('0x5f')]+','+(_0x4aa69b[_0xc1e6('0x42')][_0xc1e6('0x61')]||0xa),'interval':_0xc1e6('0x47')});}return respondWithRpcPromise('Start',_0xc1e6('0x62'),_0x4aa69b);});}return respondWithRpcPromise(_0xc1e6('0x63'),_0xc1e6('0x62'),_0x4aa69b);})[_0xc1e6('0x11')](function(_0x3aeee0){_0x78b4c4(_0x3aeee0);})['catch'](function(_0x5ef7c4){_0x1264ae(_0x4e28b2[_0xc1e6('0x15')](0x1f4,_0x5ef7c4[_0xc1e6('0x17')]));});});};
\ No newline at end of file
index 1ce8384..042ddf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x412c=['register','length','mailAccount:','./mailAccount.events','emit','removeListener'];(function(_0x4d4f7a,_0x214968){var _0x268312=function(_0x2478a7){while(--_0x2478a7){_0x4d4f7a['push'](_0x4d4f7a['shift']());}};_0x268312(++_0x214968);}(_0x412c,0x123));var _0xc412=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x412c[_0x17d9e3];return _0x14192d;};'use strict';var MailAccountEvents=require(_0xc412('0x0'));var events=['save','remove','update'];function createListener(_0x5917ea,_0x5e45aa){return function(_0x5ce8cc){_0x5e45aa[_0xc412('0x1')](_0x5917ea,_0x5ce8cc);};}function removeListener(_0x2186a5,_0x50319d){return function(){MailAccountEvents[_0xc412('0x2')](_0x2186a5,_0x50319d);};}exports[_0xc412('0x3')]=function(_0x1dca43){for(var _0x3ccd2a=0x0,_0x186c6c=events[_0xc412('0x4')];_0x3ccd2a<_0x186c6c;_0x3ccd2a++){var _0x5531c0=events[_0x3ccd2a];var _0x3a7674=createListener(_0xc412('0x5')+_0x5531c0,_0x1dca43);MailAccountEvents['on'](_0x5531c0,_0x3a7674);}};
\ No newline at end of file
+var _0x51f9=['update','emit','removeListener','register','mailAccount:','./mailAccount.events'];(function(_0x22a5ab,_0x36efee){var _0x3d183c=function(_0x1f2814){while(--_0x1f2814){_0x22a5ab['push'](_0x22a5ab['shift']());}};_0x3d183c(++_0x36efee);}(_0x51f9,0x1eb));var _0x951f=function(_0x37e886,_0x17d0ad){_0x37e886=_0x37e886-0x0;var _0x57c5cd=_0x51f9[_0x37e886];return _0x57c5cd;};'use strict';var MailAccountEvents=require(_0x951f('0x0'));var events=['save','remove',_0x951f('0x1')];function createListener(_0x5bb784,_0x554fab){return function(_0x163d1c){_0x554fab[_0x951f('0x2')](_0x5bb784,_0x163d1c);};}function removeListener(_0x57efe5,_0x59a9f1){return function(){MailAccountEvents[_0x951f('0x3')](_0x57efe5,_0x59a9f1);};}exports[_0x951f('0x4')]=function(_0x13afb9){for(var _0x275c1f=0x0,_0x5813a1=events['length'];_0x275c1f<_0x5813a1;_0x275c1f++){var _0x14f2a7=events[_0x275c1f];var _0x14377b=createListener(_0x951f('0x5')+_0x14f2a7,_0x13afb9);MailAccountEvents['on'](_0x14f2a7,_0x14377b);}};
\ No newline at end of file
index 3bc3ddf..e176d7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19ff=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','show','put','isAuthenticated','update','delete','destroy','exports','path','connect-timeout','express'];(function(_0x186376,_0x5d988a){var _0x2dbdd9=function(_0x96908e){while(--_0x96908e){_0x186376['push'](_0x186376['shift']());}};_0x2dbdd9(++_0x5d988a);}(_0x19ff,0x12d));var _0xf19f=function(_0x37f19d,_0x1f6117){_0x37f19d=_0x37f19d-0x0;var _0x1c5c1a=_0x19ff[_0x37f19d];return _0x1c5c1a;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xf19f('0x0'));var timeout=require(_0xf19f('0x1'));var express=require(_0xf19f('0x2'));var router=express[_0xf19f('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xf19f('0x4'));var interaction=require(_0xf19f('0x5'));var config=require(_0xf19f('0x6'));var controller=require('./mailApplication.controller');router[_0xf19f('0x7')](_0xf19f('0x8'),auth['isAuthenticated'](),controller[_0xf19f('0x9')]);router[_0xf19f('0xa')](_0xf19f('0x8'),auth[_0xf19f('0xb')](),controller[_0xf19f('0xc')]);router[_0xf19f('0xd')]('/:id',auth[_0xf19f('0xb')](),controller[_0xf19f('0xe')]);module[_0xf19f('0xf')]=router;
\ No newline at end of file
+var _0xc06d=['../../components/interaction/service','./mailApplication.controller','isAuthenticated','put','/:id','update','delete','destroy','exports','multer','path','express','fs-extra'];(function(_0x1401d9,_0xaf8767){var _0x5dc753=function(_0x4aef50){while(--_0x4aef50){_0x1401d9['push'](_0x1401d9['shift']());}};_0x5dc753(++_0xaf8767);}(_0xc06d,0x1b6));var _0xdc06=function(_0x28e166,_0x12408b){_0x28e166=_0x28e166-0x0;var _0x24d020=_0xc06d[_0x28e166];return _0x24d020;};'use strict';var multer=require(_0xdc06('0x0'));var util=require('util');var path=require(_0xdc06('0x1'));var timeout=require('connect-timeout');var express=require(_0xdc06('0x2'));var router=express['Router']();var fs_extra=require(_0xdc06('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xdc06('0x4'));var config=require('../../config/environment');var controller=require(_0xdc06('0x5'));router['get']('/:id',auth[_0xdc06('0x6')](),controller['show']);router[_0xdc06('0x7')](_0xdc06('0x8'),auth['isAuthenticated'](),controller[_0xdc06('0x9')]);router[_0xdc06('0xa')]('/:id',auth[_0xdc06('0x6')](),controller[_0xdc06('0xb')]);module[_0xdc06('0xc')]=router;
\ No newline at end of file
index 78ac720..26dff6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d6e=['TEXT','*,*,*,*','exports','INTEGER','STRING'];(function(_0x63a0b9,_0x2aeaf4){var _0x31b73e=function(_0x5f20c3){while(--_0x5f20c3){_0x63a0b9['push'](_0x63a0b9['shift']());}};_0x31b73e(++_0x2aeaf4);}(_0x6d6e,0x124));var _0xe6d6=function(_0x3a05f4,_0x323ed8){_0x3a05f4=_0x3a05f4-0x0;var _0x17d9a6=_0x6d6e[_0x3a05f4];return _0x17d9a6;};'use strict';var Sequelize=require('sequelize');module[_0xe6d6('0x0')]={'priority':{'type':Sequelize[_0xe6d6('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xe6d6('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xe6d6('0x3')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xe6d6('0x2')],'defaultValue':_0xe6d6('0x4')}};
\ No newline at end of file
+var _0x20e0=['exports','STRING','noop','TEXT','*,*,*,*','sequelize'];(function(_0x3fba9f,_0x3b7b9b){var _0x192cf1=function(_0x557290){while(--_0x557290){_0x3fba9f['push'](_0x3fba9f['shift']());}};_0x192cf1(++_0x3b7b9b);}(_0x20e0,0x77));var _0x020e=function(_0x49a99b,_0xa11c2b){_0x49a99b=_0x49a99b-0x0;var _0x4e4409=_0x20e0[_0x49a99b];return _0x4e4409;};'use strict';var Sequelize=require(_0x020e('0x0'));module[_0x020e('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x020e('0x2')],'allowNull':![],'defaultValue':_0x020e('0x3')},'appdata':{'type':Sequelize[_0x020e('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x020e('0x2')],'defaultValue':_0x020e('0x5')}};
\ No newline at end of file
index c8c5ad0..38e674d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ef=['api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','Content-Range','apply','reject','save','update','then','destroy','error','name','show','params','model','rawAttributes','query','keys','filters','intersection','attributes','fields','length','merge','options','MailApplication','find','body','catch','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger'];(function(_0x100459,_0x4d4893){var _0x2c9d9e=function(_0x574097){while(--_0x574097){_0x100459['push'](_0x100459['shift']());}};_0x2c9d9e(++_0x4d4893);}(_0x54ef,0x112));var _0xf54e=function(_0x157484,_0x482c6c){_0x157484=_0x157484-0x0;var _0x21dd3a=_0x54ef[_0x157484];return _0x21dd3a;};'use strict';var emlformat=require(_0xf54e('0x0'));var rimraf=require(_0xf54e('0x1'));var zipdir=require(_0xf54e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf54e('0x3'));var moment=require(_0xf54e('0x4'));var BPromise=require(_0xf54e('0x5'));var Mustache=require(_0xf54e('0x6'));var util=require(_0xf54e('0x7'));var path=require(_0xf54e('0x8'));var sox=require(_0xf54e('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf54e('0xa'));var _=require(_0xf54e('0xb'));var squel=require(_0xf54e('0xc'));var crypto=require('crypto');var jsforce=require(_0xf54e('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xf54e('0xe'));var querystring=require(_0xf54e('0xf'));var Papa=require('papaparse');var Redis=require(_0xf54e('0x10'));var authService=require(_0xf54e('0x11'));var qs=require(_0xf54e('0x12'));var as=require(_0xf54e('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf54e('0x14'))(_0xf54e('0x15'));var utils=require(_0xf54e('0x16'));var config=require(_0xf54e('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xf54e('0x18'))['db'];function respondWithStatusCode(_0x4b0ee1,_0x4bd828){_0x4bd828=_0x4bd828||0xcc;return function(_0x15a9d4){if(_0x15a9d4){return _0x4b0ee1[_0xf54e('0x19')](_0x4bd828);}return _0x4b0ee1[_0xf54e('0x1a')](_0x4bd828)[_0xf54e('0x1b')]();};}function respondWithResult(_0x5644aa,_0x331732){_0x331732=_0x331732||0xc8;return function(_0x1bbeaa){if(_0x1bbeaa){return _0x5644aa[_0xf54e('0x1a')](_0x331732)[_0xf54e('0x1c')](_0x1bbeaa);}};}function respondWithFilteredResult(_0x56828e,_0x2366ee){return function(_0x389abc){if(_0x389abc){var _0x3eb415=typeof _0x2366ee['offset']==='undefined'&&typeof _0x2366ee[_0xf54e('0x1d')]===_0xf54e('0x1e');var _0x1c02e7=_0x389abc[_0xf54e('0x1f')];var _0x15cc48=_0x3eb415?0x0:_0x2366ee[_0xf54e('0x20')];var _0x2e27b6=_0x3eb415?_0x389abc[_0xf54e('0x1f')]:_0x2366ee[_0xf54e('0x20')]+_0x2366ee[_0xf54e('0x1d')];var _0x226c96;if(_0x2e27b6>=_0x1c02e7){_0x2e27b6=_0x1c02e7;_0x226c96=0xc8;}else{_0x226c96=0xce;}_0x56828e['status'](_0x226c96);return _0x56828e['set'](_0xf54e('0x21'),_0x15cc48+'-'+_0x2e27b6+'/'+_0x1c02e7)['json'](_0x389abc);}return null;};}function patchUpdates(_0x3e1556){return function(_0x1bfe99){try{jsonpatch[_0xf54e('0x22')](_0x1bfe99,_0x3e1556,!![]);}catch(_0x9903fc){return BPromise[_0xf54e('0x23')](_0x9903fc);}return _0x1bfe99[_0xf54e('0x24')]();};}function saveUpdates(_0x388aa0,_0x11985e){return function(_0x3c0169){if(_0x3c0169){return _0x3c0169[_0xf54e('0x25')](_0x388aa0)[_0xf54e('0x26')](function(_0x5b83df){return _0x5b83df;});}return null;};}function removeEntity(_0x6f6d29,_0x54f914){return function(_0x264a8f){if(_0x264a8f){return _0x264a8f[_0xf54e('0x27')]()[_0xf54e('0x26')](function(){_0x6f6d29[_0xf54e('0x1a')](0xcc)[_0xf54e('0x1b')]();});}};}function handleEntityNotFound(_0x160160,_0x1e08d1){return function(_0x43488d){if(!_0x43488d){_0x160160[_0xf54e('0x19')](0x194);}return _0x43488d;};}function handleError(_0x33457f,_0xf6cdd7){_0xf6cdd7=_0xf6cdd7||0x1f4;return function(_0x39c0ae){logger[_0xf54e('0x28')](_0x39c0ae['stack']);if(_0x39c0ae[_0xf54e('0x29')]){delete _0x39c0ae['name'];}_0x33457f[_0xf54e('0x1a')](_0xf6cdd7)['send'](_0x39c0ae);};}exports[_0xf54e('0x2a')]=function(_0x269f47,_0x21ba00){var _0xa13cd0={'raw':!![],'where':{'id':_0x269f47[_0xf54e('0x2b')]['id']}},_0x25b643={};_0x25b643[_0xf54e('0x2c')]=_['keys'](db['MailApplication'][_0xf54e('0x2d')]);_0x25b643[_0xf54e('0x2e')]=_[_0xf54e('0x2f')](_0x269f47[_0xf54e('0x2e')]);_0x25b643[_0xf54e('0x30')]=_[_0xf54e('0x31')](_0x25b643[_0xf54e('0x2c')],_0x25b643[_0xf54e('0x2e')]);_0xa13cd0[_0xf54e('0x32')]=_[_0xf54e('0x31')](_0x25b643['model'],qs['fields'](_0x269f47[_0xf54e('0x2e')][_0xf54e('0x33')]));_0xa13cd0['attributes']=_0xa13cd0[_0xf54e('0x32')][_0xf54e('0x34')]?_0xa13cd0[_0xf54e('0x32')]:_0x25b643[_0xf54e('0x2c')];if(_0x269f47['query']['includeAll']){_0xa13cd0['include']=[{'all':!![]}];}_0xa13cd0=_[_0xf54e('0x35')]({},_0xa13cd0,_0x269f47[_0xf54e('0x36')]);return db[_0xf54e('0x37')][_0xf54e('0x38')](_0xa13cd0)[_0xf54e('0x26')](handleEntityNotFound(_0x21ba00,null))[_0xf54e('0x26')](respondWithResult(_0x21ba00,null))['catch'](handleError(_0x21ba00,null));};exports['update']=function(_0x530cee,_0xc04e04){if(_0x530cee[_0xf54e('0x39')]['id']){delete _0x530cee['body']['id'];}return db['MailApplication'][_0xf54e('0x38')]({'where':{'id':_0x530cee[_0xf54e('0x2b')]['id']}})[_0xf54e('0x26')](handleEntityNotFound(_0xc04e04,null))['then'](saveUpdates(_0x530cee[_0xf54e('0x39')],null))[_0xf54e('0x26')](respondWithResult(_0xc04e04,null))['catch'](handleError(_0xc04e04,null));};exports[_0xf54e('0x27')]=function(_0x6e5bdf,_0x5af03){return db[_0xf54e('0x37')][_0xf54e('0x38')]({'where':{'id':_0x6e5bdf[_0xf54e('0x2b')]['id']}})['then'](handleEntityNotFound(_0x5af03,null))['then'](removeEntity(_0x5af03,null))[_0xf54e('0x3a')](handleError(_0x5af03,null));};
\ No newline at end of file
+var _0xd8b0=['attributes','length','include','merge','find','catch','body','params','eml-format','rimraf','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','save','update','then','destroy','error','name','show','model','MailApplication','query','keys','intersection','fields'];(function(_0x145e9e,_0x2e6dd4){var _0x2264c2=function(_0x57d209){while(--_0x57d209){_0x145e9e['push'](_0x145e9e['shift']());}};_0x2264c2(++_0x2e6dd4);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x0d8b('0x0'));var rimraf=require(_0x0d8b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0d8b('0x2'));var BPromise=require(_0x0d8b('0x3'));var Mustache=require(_0x0d8b('0x4'));var util=require(_0x0d8b('0x5'));var path=require(_0x0d8b('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0d8b('0x7'));var fs=require('fs');var fs_extra=require(_0x0d8b('0x8'));var _=require(_0x0d8b('0x9'));var squel=require('squel');var crypto=require(_0x0d8b('0xa'));var jsforce=require(_0x0d8b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x0d8b('0xc'));var querystring=require(_0x0d8b('0xd'));var Papa=require(_0x0d8b('0xe'));var Redis=require(_0x0d8b('0xf'));var authService=require(_0x0d8b('0x10'));var qs=require(_0x0d8b('0x11'));var as=require(_0x0d8b('0x12'));var hardwareService=require(_0x0d8b('0x13'));var logger=require('../../config/logger')(_0x0d8b('0x14'));var utils=require('../../config/utils');var config=require(_0x0d8b('0x15'));var licenseUtil=require(_0x0d8b('0x16'));var db=require(_0x0d8b('0x17'))['db'];function respondWithStatusCode(_0x92cdd8,_0x35a07b){_0x35a07b=_0x35a07b||0xcc;return function(_0x32bb1a){if(_0x32bb1a){return _0x92cdd8[_0x0d8b('0x18')](_0x35a07b);}return _0x92cdd8[_0x0d8b('0x19')](_0x35a07b)[_0x0d8b('0x1a')]();};}function respondWithResult(_0x2ce75e,_0x5ad086){_0x5ad086=_0x5ad086||0xc8;return function(_0xe65334){if(_0xe65334){return _0x2ce75e[_0x0d8b('0x19')](_0x5ad086)[_0x0d8b('0x1b')](_0xe65334);}};}function respondWithFilteredResult(_0x4f6f21,_0x23eb7b){return function(_0xa86349){if(_0xa86349){var _0x17f7df=typeof _0x23eb7b[_0x0d8b('0x1c')]===_0x0d8b('0x1d')&&typeof _0x23eb7b['limit']===_0x0d8b('0x1d');var _0x4586c2=_0xa86349[_0x0d8b('0x1e')];var _0x5fecbd=_0x17f7df?0x0:_0x23eb7b[_0x0d8b('0x1c')];var _0x18dd2d=_0x17f7df?_0xa86349[_0x0d8b('0x1e')]:_0x23eb7b[_0x0d8b('0x1c')]+_0x23eb7b['limit'];var _0x27512e;if(_0x18dd2d>=_0x4586c2){_0x18dd2d=_0x4586c2;_0x27512e=0xc8;}else{_0x27512e=0xce;}_0x4f6f21[_0x0d8b('0x19')](_0x27512e);return _0x4f6f21[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x5fecbd+'-'+_0x18dd2d+'/'+_0x4586c2)[_0x0d8b('0x1b')](_0xa86349);}return null;};}function patchUpdates(_0x5b709c){return function(_0x393beb){try{jsonpatch[_0x0d8b('0x21')](_0x393beb,_0x5b709c,!![]);}catch(_0x50ec1e){return BPromise['reject'](_0x50ec1e);}return _0x393beb[_0x0d8b('0x22')]();};}function saveUpdates(_0x54a9a7,_0x56c729){return function(_0x5527d8){if(_0x5527d8){return _0x5527d8[_0x0d8b('0x23')](_0x54a9a7)[_0x0d8b('0x24')](function(_0x214778){return _0x214778;});}return null;};}function removeEntity(_0x38efc8,_0x221071){return function(_0x2c64e2){if(_0x2c64e2){return _0x2c64e2[_0x0d8b('0x25')]()[_0x0d8b('0x24')](function(){_0x38efc8[_0x0d8b('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe8bbee,_0x4463ee){return function(_0x5363e3){if(!_0x5363e3){_0xe8bbee[_0x0d8b('0x18')](0x194);}return _0x5363e3;};}function handleError(_0x4a0ae4,_0x3dd149){_0x3dd149=_0x3dd149||0x1f4;return function(_0x234bdd){logger[_0x0d8b('0x26')](_0x234bdd['stack']);if(_0x234bdd['name']){delete _0x234bdd[_0x0d8b('0x27')];}_0x4a0ae4[_0x0d8b('0x19')](_0x3dd149)['send'](_0x234bdd);};}exports[_0x0d8b('0x28')]=function(_0x59aa83,_0x1b2b59){var _0x4b59e5={'raw':!![],'where':{'id':_0x59aa83['params']['id']}},_0x97050a={};_0x97050a[_0x0d8b('0x29')]=_['keys'](db[_0x0d8b('0x2a')]['rawAttributes']);_0x97050a[_0x0d8b('0x2b')]=_[_0x0d8b('0x2c')](_0x59aa83[_0x0d8b('0x2b')]);_0x97050a['filters']=_['intersection'](_0x97050a['model'],_0x97050a[_0x0d8b('0x2b')]);_0x4b59e5['attributes']=_[_0x0d8b('0x2d')](_0x97050a['model'],qs['fields'](_0x59aa83[_0x0d8b('0x2b')][_0x0d8b('0x2e')]));_0x4b59e5[_0x0d8b('0x2f')]=_0x4b59e5[_0x0d8b('0x2f')][_0x0d8b('0x30')]?_0x4b59e5[_0x0d8b('0x2f')]:_0x97050a[_0x0d8b('0x29')];if(_0x59aa83[_0x0d8b('0x2b')]['includeAll']){_0x4b59e5[_0x0d8b('0x31')]=[{'all':!![]}];}_0x4b59e5=_[_0x0d8b('0x32')]({},_0x4b59e5,_0x59aa83['options']);return db[_0x0d8b('0x2a')][_0x0d8b('0x33')](_0x4b59e5)[_0x0d8b('0x24')](handleEntityNotFound(_0x1b2b59,null))['then'](respondWithResult(_0x1b2b59,null))[_0x0d8b('0x34')](handleError(_0x1b2b59,null));};exports[_0x0d8b('0x23')]=function(_0x206157,_0x31ceba){if(_0x206157[_0x0d8b('0x35')]['id']){delete _0x206157['body']['id'];}return db[_0x0d8b('0x2a')][_0x0d8b('0x33')]({'where':{'id':_0x206157['params']['id']}})[_0x0d8b('0x24')](handleEntityNotFound(_0x31ceba,null))[_0x0d8b('0x24')](saveUpdates(_0x206157[_0x0d8b('0x35')],null))[_0x0d8b('0x24')](respondWithResult(_0x31ceba,null))[_0x0d8b('0x34')](handleError(_0x31ceba,null));};exports['destroy']=function(_0x497a71,_0x41b4f9){return db['MailApplication']['find']({'where':{'id':_0x497a71[_0x0d8b('0x36')]['id']}})[_0x0d8b('0x24')](handleEntityNotFound(_0x41b4f9,null))[_0x0d8b('0x24')](removeEntity(_0x41b4f9,null))[_0x0d8b('0x34')](handleError(_0x41b4f9,null));};
\ No newline at end of file
index f5853d3..c6c4c17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2004=['request-promise','path','../../config/environment','./mailApplication.attributes','exports','define','mail_applications','utf8mb4_unicode_ci','../../config/logger','api','moment','bluebird'];(function(_0x1da0f9,_0x319aea){var _0x49bc50=function(_0x1895f7){while(--_0x1895f7){_0x1da0f9['push'](_0x1da0f9['shift']());}};_0x49bc50(++_0x319aea);}(_0x2004,0xe0));var _0x4200=function(_0x4be569,_0x33273c){_0x4be569=_0x4be569-0x0;var _0x2dd522=_0x2004[_0x4be569];return _0x2dd522;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4200('0x0'))(_0x4200('0x1'));var moment=require(_0x4200('0x2'));var BPromise=require(_0x4200('0x3'));var rp=require(_0x4200('0x4'));var fs=require('fs');var path=require(_0x4200('0x5'));var rimraf=require('rimraf');var config=require(_0x4200('0x6'));var attributes=require(_0x4200('0x7'));module[_0x4200('0x8')]=function(_0x451abf,_0x5e16c2){return _0x451abf[_0x4200('0x9')]('MailApplication',attributes,{'tableName':_0x4200('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x4200('0xb')});};
\ No newline at end of file
+var _0x7bdb=['util','api','bluebird','request-promise','rimraf','./mailApplication.attributes','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x5c3f83,_0x55e38d){var _0x2fa920=function(_0x35b4e1){while(--_0x35b4e1){_0x5c3f83['push'](_0x5c3f83['shift']());}};_0x2fa920(++_0x55e38d);}(_0x7bdb,0x154));var _0xb7bd=function(_0xcc69c5,_0x5b35b2){_0xcc69c5=_0xcc69c5-0x0;var _0x14ec59=_0x7bdb[_0xcc69c5];return _0x14ec59;};'use strict';var _=require(_0xb7bd('0x0'));var util=require(_0xb7bd('0x1'));var logger=require('../../config/logger')(_0xb7bd('0x2'));var moment=require('moment');var BPromise=require(_0xb7bd('0x3'));var rp=require(_0xb7bd('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb7bd('0x5'));var config=require('../../config/environment');var attributes=require(_0xb7bd('0x6'));module['exports']=function(_0x1613b7,_0xe79c23){return _0x1613b7['define'](_0xb7bd('0x7'),attributes,{'tableName':_0xb7bd('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xb7bd('0x9'),'collate':_0xb7bd('0xa')});};
\ No newline at end of file
index e9110ac..52b62be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6528=['client','http','request','then','info','MailApplication,\x20%s,\x20%s','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','MailApplication','update','options','raw','where','limit','UpdateMailApplication','lodash','util','moment','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0x4c25f9,_0x10118b){var _0x69d318=function(_0x57cb45){while(--_0x57cb45){_0x4c25f9['push'](_0x4c25f9['shift']());}};_0x69d318(++_0x10118b);}(_0x6528,0x160));var _0x8652=function(_0x4a79b8,_0x23163f){_0x4a79b8=_0x4a79b8-0x0;var _0xc03275=_0x6528[_0x4a79b8];return _0xc03275;};'use strict';var _=require(_0x8652('0x0'));var util=require(_0x8652('0x1'));var moment=require(_0x8652('0x2'));var BPromise=require('bluebird');var rs=require(_0x8652('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x8652('0x4'));var logger=require(_0x8652('0x5'))(_0x8652('0x6'));var config=require('../../config/environment');var jayson=require(_0x8652('0x7'));var client=jayson[_0x8652('0x8')][_0x8652('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x41b9d0,_0x4a3479,_0xa77081){return new BPromise(function(_0x350737,_0x3c9cad){return client[_0x8652('0xa')](_0x41b9d0,_0xa77081)[_0x8652('0xb')](function(_0x528ebe){logger[_0x8652('0xc')](_0x8652('0xd'),_0x4a3479,_0x8652('0xe'));logger[_0x8652('0xf')](_0x8652('0x10'),_0x4a3479,_0x8652('0xe'),JSON[_0x8652('0x11')](_0x528ebe));if(_0x528ebe[_0x8652('0x12')]){if(_0x528ebe[_0x8652('0x12')][_0x8652('0x13')]===0x1f4){logger[_0x8652('0x12')]('MailApplication,\x20%s,\x20%s',_0x4a3479,_0x528ebe[_0x8652('0x12')][_0x8652('0x14')]);return _0x3c9cad(_0x528ebe[_0x8652('0x12')][_0x8652('0x14')]);}logger['error'](_0x8652('0xd'),_0x4a3479,_0x528ebe[_0x8652('0x12')][_0x8652('0x14')]);return _0x350737(_0x528ebe['error'][_0x8652('0x14')]);}else{logger[_0x8652('0xc')](_0x8652('0xd'),_0x4a3479,_0x8652('0xe'));_0x350737(_0x528ebe[_0x8652('0x15')][_0x8652('0x14')]);}})[_0x8652('0x16')](function(_0x32c2a2){logger[_0x8652('0x12')](_0x8652('0xd'),_0x4a3479,_0x32c2a2);_0x3c9cad(_0x32c2a2);});});}exports['UpdateMailApplication']=function(_0x3c6449){var _0xf5692e=this;return new Promise(function(_0x457b02,_0x281bd6){return db[_0x8652('0x17')][_0x8652('0x18')](_0x3c6449['body'],{'raw':_0x3c6449[_0x8652('0x19')]?_0x3c6449['options'][_0x8652('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3c6449[_0x8652('0x19')]?_0x3c6449[_0x8652('0x19')][_0x8652('0x1b')]||null:null,'attributes':_0x3c6449[_0x8652('0x19')]?_0x3c6449[_0x8652('0x19')]['attributes']||null:null,'limit':_0x3c6449['options']?_0x3c6449[_0x8652('0x19')][_0x8652('0x1c')]||null:null})[_0x8652('0xb')](function(_0x319905){logger[_0x8652('0xc')](_0x8652('0x1d'),_0x3c6449);logger[_0x8652('0xf')](_0x8652('0x1d'),_0x3c6449,JSON[_0x8652('0x11')](_0x319905));_0x457b02(_0x319905);})[_0x8652('0x16')](function(_0x760c26){logger[_0x8652('0x12')]('UpdateMailApplication',_0x760c26['message'],_0x3c6449);_0x281bd6(_0xf5692e[_0x8652('0x12')](0x1f4,_0x760c26['message']));});});};
\ No newline at end of file
+var _0x8988=['info','MailApplication,\x20%s,\x20%s','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','UpdateMailApplication','MailApplication','update','body','options','raw','attributes','limit','lodash','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','http','then'];(function(_0x341b82,_0x2daf5e){var _0x31a84a=function(_0x28d23c){while(--_0x28d23c){_0x341b82['push'](_0x341b82['shift']());}};_0x31a84a(++_0x2daf5e);}(_0x8988,0xcf));var _0x8898=function(_0x4810b6,_0x30a0f4){_0x4810b6=_0x4810b6-0x0;var _0x273ee4=_0x8988[_0x4810b6];return _0x273ee4;};'use strict';var _=require(_0x8898('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x8898('0x1'));var rs=require(_0x8898('0x2'));var fs=require('fs');var Redis=require(_0x8898('0x3'));var db=require(_0x8898('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x8898('0x5'));var config=require('../../config/environment');var jayson=require(_0x8898('0x6'));var client=jayson['client'][_0x8898('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x163ed8,_0x4d9f6e,_0x38d76d){return new BPromise(function(_0x51ab3b,_0x301c4f){return client['request'](_0x163ed8,_0x38d76d)[_0x8898('0x8')](function(_0x2d04f0){logger[_0x8898('0x9')](_0x8898('0xa'),_0x4d9f6e,_0x8898('0xb'));logger[_0x8898('0xc')](_0x8898('0xd'),_0x4d9f6e,_0x8898('0xb'),JSON[_0x8898('0xe')](_0x2d04f0));if(_0x2d04f0[_0x8898('0xf')]){if(_0x2d04f0[_0x8898('0xf')][_0x8898('0x10')]===0x1f4){logger[_0x8898('0xf')](_0x8898('0xa'),_0x4d9f6e,_0x2d04f0[_0x8898('0xf')]['message']);return _0x301c4f(_0x2d04f0[_0x8898('0xf')][_0x8898('0x11')]);}logger['error']('MailApplication,\x20%s,\x20%s',_0x4d9f6e,_0x2d04f0[_0x8898('0xf')][_0x8898('0x11')]);return _0x51ab3b(_0x2d04f0[_0x8898('0xf')][_0x8898('0x11')]);}else{logger[_0x8898('0x9')](_0x8898('0xa'),_0x4d9f6e,_0x8898('0xb'));_0x51ab3b(_0x2d04f0[_0x8898('0x12')]['message']);}})['catch'](function(_0x5c3cf2){logger[_0x8898('0xf')](_0x8898('0xa'),_0x4d9f6e,_0x5c3cf2);_0x301c4f(_0x5c3cf2);});});}exports[_0x8898('0x13')]=function(_0x29ec26){var _0x51e979=this;return new Promise(function(_0x186cd5,_0x4e8555){return db[_0x8898('0x14')][_0x8898('0x15')](_0x29ec26[_0x8898('0x16')],{'raw':_0x29ec26['options']?_0x29ec26[_0x8898('0x17')][_0x8898('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x29ec26[_0x8898('0x17')]?_0x29ec26[_0x8898('0x17')]['where']||null:null,'attributes':_0x29ec26[_0x8898('0x17')]?_0x29ec26[_0x8898('0x17')][_0x8898('0x19')]||null:null,'limit':_0x29ec26['options']?_0x29ec26[_0x8898('0x17')][_0x8898('0x1a')]||null:null})[_0x8898('0x8')](function(_0x39fe82){logger[_0x8898('0x9')](_0x8898('0x13'),_0x29ec26);logger[_0x8898('0xc')](_0x8898('0x13'),_0x29ec26,JSON['stringify'](_0x39fe82));_0x186cd5(_0x39fe82);})['catch'](function(_0xa6fd8f){logger[_0x8898('0xf')](_0x8898('0x13'),_0xa6fd8f[_0x8898('0x11')],_0x29ec26);_0x4e8555(_0x51e979['error'](0x1f4,_0xa6fd8f[_0x8898('0x11')]));});});};
\ No newline at end of file
index 101b1cc..e3f15f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1048=['express','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','getMessages','download','post','addMessage','/:id/tags','mail','mailinteraction:addtags','mailinteraction:update','mailinteraction:destroy','destroy','delete'];(function(_0x4a12a1,_0x23f85a){var _0xba5e85=function(_0xf0522a){while(--_0xf0522a){_0x4a12a1['push'](_0x4a12a1['shift']());}};_0xba5e85(++_0x23f85a);}(_0x1048,0xa1));var _0x8104=function(_0x4ad1ef,_0x36416f){_0x4ad1ef=_0x4ad1ef-0x0;var _0x52a3d4=_0x1048[_0x4ad1ef];return _0x52a3d4;};'use strict';var express=require(_0x8104('0x0'));var router=express['Router']();var auth=require(_0x8104('0x1'));var interaction=require(_0x8104('0x2'));var controller=require(_0x8104('0x3'));router[_0x8104('0x4')]('/',auth[_0x8104('0x5')](),controller[_0x8104('0x6')]);router[_0x8104('0x4')](_0x8104('0x7'),auth['isAuthenticated'](),controller[_0x8104('0x8')]);router[_0x8104('0x4')](_0x8104('0x9'),auth['isAuthenticated'](),controller[_0x8104('0xa')]);router[_0x8104('0x4')](_0x8104('0xb'),auth[_0x8104('0x5')](),controller[_0x8104('0xc')]);router[_0x8104('0x4')]('/:id/download',auth['isAuthenticated'](),controller[_0x8104('0xd')]);router['post']('/',auth[_0x8104('0x5')](),controller['create']);router[_0x8104('0xe')](_0x8104('0xb'),auth[_0x8104('0x5')](),controller[_0x8104('0xf')]);router[_0x8104('0xe')](_0x8104('0x10'),auth['isAuthenticated'](),interaction['tracked'](_0x8104('0x11'),_0x8104('0x12')),controller['addTags']);router['put'](_0x8104('0x9'),auth['isAuthenticated'](),interaction['tracked']('mail',_0x8104('0x13')),controller['update']);router['delete'](_0x8104('0x9'),auth[_0x8104('0x5')](),interaction['tracked'](_0x8104('0x11'),_0x8104('0x14')),controller[_0x8104('0x15')]);router[_0x8104('0x16')]('/:id/tags',auth[_0x8104('0x5')](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
+var _0x49c0=['mail','mailinteraction:addtags','addTags','put','/:id','mailinteraction:update','update','delete','mailinteraction:destroy','destroy','removeTags','exports','express','Router','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','get','isAuthenticated','index','describe','show','/:id/download','download','post','/:id/messages','addMessage','/:id/tags','tracked'];(function(_0xc8befc,_0x3fc134){var _0x4ffbee=function(_0x4d81a1){while(--_0x4d81a1){_0xc8befc['push'](_0xc8befc['shift']());}};_0x4ffbee(++_0x3fc134);}(_0x49c0,0x12e));var _0x049c=function(_0x360686,_0x44cd8f){_0x360686=_0x360686-0x0;var _0x5bfcf4=_0x49c0[_0x360686];return _0x5bfcf4;};'use strict';var express=require(_0x049c('0x0'));var router=express[_0x049c('0x1')]();var auth=require(_0x049c('0x2'));var interaction=require(_0x049c('0x3'));var controller=require(_0x049c('0x4'));router[_0x049c('0x5')]('/',auth[_0x049c('0x6')](),controller[_0x049c('0x7')]);router[_0x049c('0x5')]('/describe',auth[_0x049c('0x6')](),controller[_0x049c('0x8')]);router[_0x049c('0x5')]('/:id',auth[_0x049c('0x6')](),controller[_0x049c('0x9')]);router[_0x049c('0x5')]('/:id/messages',auth['isAuthenticated'](),controller['getMessages']);router[_0x049c('0x5')](_0x049c('0xa'),auth[_0x049c('0x6')](),controller[_0x049c('0xb')]);router[_0x049c('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0x049c('0xc')](_0x049c('0xd'),auth[_0x049c('0x6')](),controller[_0x049c('0xe')]);router[_0x049c('0xc')](_0x049c('0xf'),auth['isAuthenticated'](),interaction[_0x049c('0x10')](_0x049c('0x11'),_0x049c('0x12')),controller[_0x049c('0x13')]);router[_0x049c('0x14')](_0x049c('0x15'),auth[_0x049c('0x6')](),interaction[_0x049c('0x10')]('mail',_0x049c('0x16')),controller[_0x049c('0x17')]);router[_0x049c('0x18')](_0x049c('0x15'),auth[_0x049c('0x6')](),interaction['tracked'](_0x049c('0x11'),_0x049c('0x19')),controller[_0x049c('0x1a')]);router[_0x049c('0x18')](_0x049c('0xf'),auth[_0x049c('0x6')](),controller[_0x049c('0x1b')]);module[_0x049c('0x1c')]=router;
\ No newline at end of file
index 32eeced..190ba84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc492=['iconv','exports','STRING','TEXT','BOOLEAN','DATE','ENUM','out','sequelize'];(function(_0x436da8,_0x30f066){var _0x4cb339=function(_0x57651c){while(--_0x57651c){_0x436da8['push'](_0x436da8['shift']());}};_0x4cb339(++_0x30f066);}(_0xc492,0xd7));var _0x2c49=function(_0x586c89,_0x15730a){_0x586c89=_0x586c89-0x0;var _0x2888a9=_0xc492[_0x586c89];return _0x2888a9;};'use strict';var Sequelize=require(_0x2c49('0x0'));var iconv=require(_0x2c49('0x1'));module[_0x2c49('0x2')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x2c49('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x2c49('0x3')]},'inReplyTo':{'type':Sequelize[_0x2c49('0x3')](0x1fe)},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x2c49('0x4')]('long')},'subject':{'type':Sequelize[_0x2c49('0x4')]()},'attach':{'type':Sequelize[_0x2c49('0x5')],'defaultValue':![]},'read1stAt':{'type':Sequelize['DATE']},'substatus':{'type':Sequelize[_0x2c49('0x3')](0x3c)},'substatusAt':{'type':Sequelize[_0x2c49('0x6')]},'firstMsgDirection':{'type':Sequelize[_0x2c49('0x7')]('in',_0x2c49('0x8')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x2c49('0x6')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x2c49('0x8')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x93a0=['ENUM','out','BOOLEAN','sequelize','iconv','DATE','STRING','TEXT','long'];(function(_0x4d1ea1,_0x14dea7){var _0x451c5c=function(_0x3fe973){while(--_0x3fe973){_0x4d1ea1['push'](_0x4d1ea1['shift']());}};_0x451c5c(++_0x14dea7);}(_0x93a0,0x1f2));var _0x093a=function(_0x1ebbaf,_0x3d787b){_0x1ebbaf=_0x1ebbaf-0x0;var _0x26eddc=_0x93a0[_0x1ebbaf];return _0x26eddc;};'use strict';var Sequelize=require(_0x093a('0x0'));var iconv=require(_0x093a('0x1'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x093a('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x093a('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x093a('0x3')]},'inReplyTo':{'type':Sequelize['STRING'](0x1fe)},'to':{'type':Sequelize[_0x093a('0x3')]},'cc':{'type':Sequelize[_0x093a('0x4')](_0x093a('0x5'))},'subject':{'type':Sequelize[_0x093a('0x4')]()},'attach':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x093a('0x2')]},'substatus':{'type':Sequelize[_0x093a('0x3')](0x3c)},'substatusAt':{'type':Sequelize[_0x093a('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x093a('0x6')]('in',_0x093a('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x093a('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x093a('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x093a('0x8')],'defaultValue':![]}};
\ No newline at end of file
index a8c2fcc..e58a05b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','Setting','enableEmailPreview','all','rows','show','params','includeAll','include','options','create','body','addMessage','ids','omit','getMessages','nolimit','MailInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','true','addTags','setTags','Tag','mailInteractionTags:save','download','join','root','server','tmp','attachments','Attachment','Attachments','subject','Messages','get','mkdirSync','each','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','basename','existsSync','readFileSync','writeFileSync','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','util','lodash','squel','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','defaults','socket.io-emitter','redis','./mailInteraction.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','sendStatus','error','stack','name','send','Users','fullname','Tags','split','forEach','push','TagIds','MailMessage','findOne','out','-id','plainBody','lastMsgText','trimStart','catch','index','MailInteraction','rawAttributes','fieldName','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','sort','filters','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.MailInteractionId','user_has_mail_interactions','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','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','having','`\x20>\x200','Contact','$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','type','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','keys','some','compact','where','i.MailAccountId\x20IN\x20?','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','group','QueryTypes','SELECT','clone','i.id','order','contactName','DESC','t.id\x20IN\x20?','resolve','MailAccountId','i.MailAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getMailAccounts','i.MailAccountId\x20IS\x20NULL','sequelize','toString','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','Account.mandatoryDisposition','i.createdAt','i.updatedAt','i.closed','i.closedAt','i.attach','i.lastMsgDirection','i.disposition','i.secondDisposition','i.thirdDisposition','i.substatus','i.to','i.MailAccountId','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname'];(function(_0x51ed32,_0x34a194){var _0x544167=function(_0x46d218){while(--_0x46d218){_0x51ed32['push'](_0x51ed32['shift']());}};_0x544167(++_0x34a194);}(_0xa9e0,0x123));var _0x0a9e=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0xa9e0[_0x376b45];return _0x2341b3;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var util=require(_0x0a9e('0x3'));var path=require('path');var fs=require('fs');var _=require(_0x0a9e('0x4'));var squel=require(_0x0a9e('0x5'));var juice=require(_0x0a9e('0x6'));var Redis=require(_0x0a9e('0x7'));var qs=require(_0x0a9e('0x8'));var as=require('../../components/parsers/advancedSearch');var logger=require(_0x0a9e('0x9'))(_0x0a9e('0xa'));var config=require(_0x0a9e('0xb'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x0a9e('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x0a9e('0xd'))(new Redis(config[_0x0a9e('0xe')]));require(_0x0a9e('0xf'))[_0x0a9e('0x10')](socket);function respondWithStatusCode(_0xfeb75b,_0xbd1168){_0xbd1168=_0xbd1168||0xcc;return function(_0x4a4c56){if(_0x4a4c56){return _0xfeb75b['sendStatus'](_0xbd1168);}return _0xfeb75b['status'](_0xbd1168)['end']();};}function respondWithResult(_0x273d4d,_0x36471c){_0x36471c=_0x36471c||0xc8;return function(_0xd5b662){if(_0xd5b662){return _0x273d4d[_0x0a9e('0x11')](_0x36471c)[_0x0a9e('0x12')](_0xd5b662);}};}function respondWithFilteredResult(_0x69aeb7,_0x5db4b0){return function(_0x4283ce){if(_0x4283ce){var _0x239b12=typeof _0x5db4b0[_0x0a9e('0x13')]===_0x0a9e('0x14')&&typeof _0x5db4b0[_0x0a9e('0x15')]===_0x0a9e('0x14');var _0x52a03d=_0x4283ce[_0x0a9e('0x16')];var _0x5d0880=_0x239b12?0x0:_0x5db4b0[_0x0a9e('0x13')];var _0x519dfd=_0x239b12?_0x4283ce[_0x0a9e('0x16')]:_0x5db4b0[_0x0a9e('0x13')]+_0x5db4b0['limit'];var _0x225616;if(_0x519dfd>=_0x52a03d){_0x519dfd=_0x52a03d;_0x225616=0xc8;}else{_0x225616=0xce;}_0x69aeb7['status'](_0x225616);return _0x69aeb7[_0x0a9e('0x17')](_0x0a9e('0x18'),_0x5d0880+'-'+_0x519dfd+'/'+_0x52a03d)[_0x0a9e('0x12')](_0x4283ce);}return null;};}function saveUpdates(_0x205fd6){return function(_0x31b1ca){if(_0x31b1ca){return _0x31b1ca[_0x0a9e('0x19')](_0x205fd6)[_0x0a9e('0x1a')](function(_0x20559e){return _0x20559e;});}return null;};}function removeEntity(_0x1314ae){return function(_0x112016){if(_0x112016){return _0x112016[_0x0a9e('0x1b')]()[_0x0a9e('0x1a')](function(){_0x1314ae['status'](0xcc)[_0x0a9e('0x1c')]();});}};}function handleEntityNotFound(_0x155cce){return function(_0x53682f){if(!_0x53682f){_0x155cce[_0x0a9e('0x1d')](0x194);}return _0x53682f;};}function handleError(_0x5a09ef,_0x588269){_0x588269=_0x588269||0x1f4;return function(_0x3a02e1){logger[_0x0a9e('0x1e')](_0x3a02e1[_0x0a9e('0x1f')]);if(_0x3a02e1[_0x0a9e('0x20')]){delete _0x3a02e1['name'];}_0x5a09ef[_0x0a9e('0x11')](_0x588269)[_0x0a9e('0x21')](_0x3a02e1);};}function getInteractionUsers(_0x3b45bc,_0x4d00e6){return new BPromise(function(_0x370d86,_0x42ac8f){try{if(_0x4d00e6[_0x3b45bc['id']]){_0x3b45bc[_0x0a9e('0x22')]=_['map'](_0x4d00e6[_0x3b45bc['id']],function(_0x59181e){return{'id':_0x59181e['id'],'fullname':_0x59181e[_0x0a9e('0x23')]};});}}catch(_0x3a8e58){_0x42ac8f(_0x3a8e58);}_0x370d86(_0x3b45bc);});}function getInteractionTags(_0x40c424,_0x33161b){return new BPromise(function(_0x526cf3,_0x384319){try{if(_0x40c424['TagIds']){_0x40c424[_0x0a9e('0x24')]=[];_0x40c424['TagIds'][_0x0a9e('0x25')](',')[_0x0a9e('0x26')](function(_0x25fba9){_0x40c424[_0x0a9e('0x24')][_0x0a9e('0x27')](_0x33161b[_0x25fba9]);});}delete _0x40c424[_0x0a9e('0x28')];}catch(_0x11c3b6){_0x384319(_0x11c3b6);}_0x526cf3(_0x40c424);});}function getLastMessageText(_0x14de77){return new BPromise(function(_0x5a101a,_0x3652a7){return db[_0x0a9e('0x29')][_0x0a9e('0x2a')]({'where':{'$and':[{'MailInteractionId':_0x14de77['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x0a9e('0x2b')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0x0a9e('0x2c'),'raw':!![]})[_0x0a9e('0x1a')](function(_0x1843b2){if(_0x1843b2&&_0x1843b2[_0x0a9e('0x2d')]){_0x14de77[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x1843b2[_0x0a9e('0x2d')]);}_0x5a101a(_0x14de77);})[_0x0a9e('0x30')](function(_0x1dbde2){_0x3652a7(_0x1dbde2);});});}function updateMailInteraction(_0x540530,_0x426950,_0x5d1e0e,_0x2407f9){return new BPromise(function(_0x3ae878,_0x1122db){return getInteractionUsers(_0x540530,_0x5d1e0e)[_0x0a9e('0x1a')](function(_0x25ce3a){return getInteractionTags(_0x25ce3a,_0x426950);})['then'](function(_0x66c1d2){if(_0x2407f9){_0x3ae878(getLastMessageText(_0x66c1d2));}else{_0x3ae878(_0x66c1d2);}})[_0x0a9e('0x30')](function(_0x40cb85){_0x1122db(_0x40cb85);});});}exports[_0x0a9e('0x31')]=function(_0x2b45ea,_0x409319){var _0x332d35={},_0x39e565={},_0x5583a4={'count':0x0,'rows':[]};var _0x44295a=_['map'](db[_0x0a9e('0x32')][_0x0a9e('0x33')],function(_0x2b7e7f){return{'name':_0x2b7e7f[_0x0a9e('0x34')],'type':_0x2b7e7f['type'][_0x0a9e('0x35')]};});_0x39e565[_0x0a9e('0x36')]=_[_0x0a9e('0x37')](_0x44295a,_0x0a9e('0x20'));_0x39e565['query']=_['keys'](_0x2b45ea[_0x0a9e('0x38')]);_0x39e565['filters']=_[_0x0a9e('0x39')](_0x39e565[_0x0a9e('0x36')],_0x39e565[_0x0a9e('0x38')]);_0x332d35[_0x0a9e('0x3a')]=_['intersection'](_0x39e565[_0x0a9e('0x36')],qs[_0x0a9e('0x3b')](_0x2b45ea[_0x0a9e('0x38')]['fields']));_0x332d35[_0x0a9e('0x3a')]=_0x332d35[_0x0a9e('0x3a')][_0x0a9e('0x3c')]?_0x332d35['attributes']:_0x39e565['model'];if(!_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3d')]('nolimit')){_0x332d35[_0x0a9e('0x15')]=qs[_0x0a9e('0x15')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x15')]);_0x332d35['offset']=qs['offset'](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x13')]);}_0x332d35['order']=qs[_0x0a9e('0x3e')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3e')]);_0x332d35['where']=qs[_0x0a9e('0x3f')](_[_0x0a9e('0x40')](_0x2b45ea[_0x0a9e('0x38')],_0x39e565[_0x0a9e('0x3f')]),_0x44295a);var _0x13cb1f=[];var _0xeaa5e5=squel[_0x0a9e('0x41')]()[_0x0a9e('0x42')]('id')[_0x0a9e('0x42')](_0x0a9e('0x20'))[_0x0a9e('0x42')](_0x0a9e('0x43'))[_0x0a9e('0x44')](_0x0a9e('0x45'));var _0x37f6cc=squel['select']()['field'](_0x0a9e('0x46'))[_0x0a9e('0x42')](_0x0a9e('0x47'))[_0x0a9e('0x42')](_0x0a9e('0x48'))[_0x0a9e('0x44')](_0x0a9e('0x49'),'ui')[_0x0a9e('0x4a')](_0x0a9e('0x4b'),'u',_0x0a9e('0x4c'));var _0x2c2cb0=squel[_0x0a9e('0x41')]()['from'](_0x0a9e('0x4d'),'i')[_0x0a9e('0x4a')](_0x0a9e('0x4e'),'c',_0x0a9e('0x4f'))[_0x0a9e('0x4a')](_0x0a9e('0x4b'),'o',_0x0a9e('0x50'))[_0x0a9e('0x4a')]('mail_accounts','a',_0x0a9e('0x51'))['left_join'](_0x0a9e('0x52'),'me',_0x0a9e('0x53'))[_0x0a9e('0x4a')]('mail_interaction_has_tags','it',_0x0a9e('0x54'))[_0x0a9e('0x4a')](_0x0a9e('0x45'),'t',_0x0a9e('0x55'));var _0x45c845=squel[_0x0a9e('0x56')]();var _0x45bf7f=[];var _0x5bbcde=squel[_0x0a9e('0x56')]();var _0x1bde3c;if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x57')]){_0x1bde3c=as[_0x0a9e('0x58')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x57')]);var _0x19383e=_0x1bde3c[_0x0a9e('0x59')];for(var _0x58a5c2=0x0;_0x58a5c2<_0x1bde3c[_0x0a9e('0x5a')][_0x0a9e('0x3c')];_0x58a5c2++){var _0x4f7240=_0x1bde3c['conditions'][_0x58a5c2];var _0x5ddf84='i';var _0x1adfee=_[_0x0a9e('0x5b')](_0x44295a,[_0x0a9e('0x20'),_0x4f7240[_0x0a9e('0x42')]]);if(!_0x1adfee){switch(_0x4f7240[_0x0a9e('0x42')]){case _0x0a9e('0x5c'):if(_0x4f7240[_0x0a9e('0x5d')]==0x1){_0x2c2cb0[_0x0a9e('0x5e')]('`'+_0x4f7240['field']+'`\x20=\x200');}else{_0x2c2cb0['having']('`'+_0x4f7240[_0x0a9e('0x42')]+_0x0a9e('0x5f'));}break;case _0x0a9e('0x60'):if(_0x4f7240['operator']===_0x0a9e('0x61')){if(_0x4f7240[_0x0a9e('0x5d')]['split']('\x20')['length']>0x1){_0x45c845[_0x19383e](_0x0a9e('0x62'),qs['getFullTextValue'](_0x4f7240[_0x0a9e('0x5d')]),null);}else{var _0x4c3845='%'+_0x4f7240[_0x0a9e('0x5d')]+'%';_0x45c845[_0x19383e](_0x0a9e('0x63'),_0x4c3845,_0x4c3845,_0x4c3845);}}else{_0x1adfee=_[_0x0a9e('0x5b')](_0x44295a,['name',_0x0a9e('0x64')]);_0x4f7240[_0x0a9e('0x42')]='ContactId';_0x2244d6=as['buildExpression'](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6[_0x0a9e('0x66')],_0x2244d6['value'][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}break;case'Tag':var _0xe22ccc=_0x4f7240['value']['split'](',')['map'](function(_0x2da03c){return Number(_0x2da03c);});_0xe22ccc['forEach'](function(_0x2f7092){_0x5bbcde['or'](_0x0a9e('0x68'),'%,'+_0x2f7092+',%');});_0x45bf7f=_[_0x0a9e('0x69')](_0x45bf7f,_0xe22ccc);break;case _0x0a9e('0x6a'):if(_0x4f7240[_0x0a9e('0x6b')]===_0x0a9e('0x61')){_0x45c845[_0x19383e](_0x0a9e('0x6c'),'%'+_0x4f7240[_0x0a9e('0x5d')]+'%',null);}else{_0x1adfee=_['find'](_0x44295a,[_0x0a9e('0x20'),_0x0a9e('0x6d')]);_0x4f7240[_0x0a9e('0x42')]=_0x0a9e('0x6d');_0x2244d6=as[_0x0a9e('0x6e')](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6['text'],_0x2244d6[_0x0a9e('0x5d')][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}break;case'plainBody':_0x2244d6=as[_0x0a9e('0x6e')]('me',null,_0x4f7240);_0x45c845[_0x19383e](_0x2244d6['text'],_0x2244d6['value']['start'],_0x2244d6[_0x0a9e('0x5d')]['end']);break;}}else{var _0x2244d6=as[_0x0a9e('0x6e')](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6[_0x0a9e('0x66')],_0x2244d6[_0x0a9e('0x5d')][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}}}else{var _0x5854cc=_(_0x2b45ea[_0x0a9e('0x38')])[_0x0a9e('0x6f')]()[_0x0a9e('0x37')](function(_0x5adf8f){return _[_0x0a9e('0x70')](_0x44295a,[_0x0a9e('0x20'),_0x5adf8f])?_0x5adf8f:undefined;})[_0x0a9e('0x71')]()[_0x0a9e('0x5d')]();if(!_['isEmpty'](_0x5854cc)){_0x5854cc[_0x0a9e('0x26')](function(_0xe05a5a){if(_0xe05a5a==='MailAccountId'){_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x73'),[][_0x0a9e('0x74')](_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]));}else if(_0xe05a5a===_0x0a9e('0x75')){var _0x4d4a35=JSON[_0x0a9e('0x76')](_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a])[_0x0a9e('0x77')];var _0x47bb43=JSON[_0x0a9e('0x76')](_0x2b45ea['query'][_0xe05a5a])['$lte'];_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x78'),_0x4d4a35,_0x47bb43);}else{if(_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]===_0x0a9e('0x79')){_0x2c2cb0[_0x0a9e('0x72')]('i.'+_0xe05a5a+_0x0a9e('0x7a'));}else{_0x2c2cb0[_0x0a9e('0x72')]('i.'+_0xe05a5a+_0x0a9e('0x7b'),_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]);}}});}if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x7c')]){if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x7c')]==0x1){_0x2c2cb0[_0x0a9e('0x5e')](_0x0a9e('0x7d'));}else{_0x2c2cb0[_0x0a9e('0x5e')](_0x0a9e('0x7e'));}}if(_0x2b45ea[_0x0a9e('0x38')]['tag']){_0x45bf7f=_[_0x0a9e('0x7f')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x80')])?_0x2b45ea['query'][_0x0a9e('0x80')]:new Array(_0x2b45ea[_0x0a9e('0x38')]['tag']);_0x45bf7f[_0x0a9e('0x26')](function(_0x56e31e){_0x5bbcde['or'](_0x0a9e('0x68'),'%,'+_0x56e31e+',%');});}if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x81')]){var _0x4a43a8=_0x2b45ea['query']['filter'][_0x0a9e('0x82')]('\x5c','\x5c\x5c')[_0x0a9e('0x82')](/'/g,'\x27\x27');if(qs[_0x0a9e('0x83')](_0x4a43a8)){_0x45c845['or'](_0x0a9e('0x84'),_0x4a43a8+'%');}else if(qs[_0x0a9e('0x85')](_0x4a43a8)){_0x45c845['or'](_0x0a9e('0x86'),_0x4a43a8+'%');}else{_0x45c845['or'](_0x0a9e('0x87'),qs[_0x0a9e('0x88')](_0x4a43a8))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x0a9e('0x88')](_0x4a43a8));}}}_0x2c2cb0[_0x0a9e('0x72')](_0x45c845);_0x2c2cb0[_0x0a9e('0x89')]('i.id');var _0x2bdc44={'type':db['Sequelize'][_0x0a9e('0x8a')][_0x0a9e('0x8b')],'raw':!![]};var _0x4c46c1=_0x2c2cb0[_0x0a9e('0x8c')]();_0x4c46c1[_0x0a9e('0x42')](_0x0a9e('0x8d'));_0x4c46c1[_0x0a9e('0x42')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x0a9e('0x5c'));if(_0x332d35[_0x0a9e('0x8e')]){_0x332d35[_0x0a9e('0x8e')][_0x0a9e('0x26')](function(_0x5b7fc3){var _0x109ccb=_0x5b7fc3[0x0]===_0x0a9e('0x8f')?_0x5b7fc3[0x0]:'i.'+_0x5b7fc3[0x0];_0x2c2cb0[_0x0a9e('0x8e')](_0x109ccb,_0x5b7fc3[0x1]===_0x0a9e('0x90')?![]:!![]);});}if(!_['isEmpty'](_0x45bf7f)){_0x2c2cb0[_0x0a9e('0x5e')](_0x5bbcde);_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x91'),_0x45bf7f);}BPromise[_0x0a9e('0x92')]()[_0x0a9e('0x1a')](function(){if(!_0x1bde3c){if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x93')])return;_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x94'));_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x94'));return;}if(_0x2b45ea[_0x0a9e('0x95')][_0x0a9e('0x96')]!==_0x0a9e('0x97'))return;return _0x2b45ea['user'][_0x0a9e('0x98')]({'attributes':['id'],'raw':!![]})[_0x0a9e('0x1a')](function(_0xc599b3){if(_['isEmpty'](_0xc599b3)){_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x99'));_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x99'));}else{_0x4c46c1['where']('i.MailAccountId\x20IN\x20?',_[_0x0a9e('0x37')](_0xc599b3,'id'));_0x2c2cb0[_0x0a9e('0x72')]('i.MailAccountId\x20IN\x20?',_[_0x0a9e('0x37')](_0xc599b3,'id'));}});})['then'](function(){if(_0x2b45ea[_0x0a9e('0x95')][_0x0a9e('0x96')]==='agent'&&!_0x1bde3c&&!_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x93')])return[];return db[_0x0a9e('0x9a')][_0x0a9e('0x38')](_0x4c46c1[_0x0a9e('0x9b')](),_0x2bdc44);})[_0x0a9e('0x1a')](function(_0x444f1f){_0x5583a4['count']=_0x444f1f[_0x0a9e('0x3c')];if(_0x5583a4[_0x0a9e('0x16')]===0x0)return[];return db[_0x0a9e('0x9a')][_0x0a9e('0x38')](_0xeaa5e5['toString'](),_0x2bdc44)[_0x0a9e('0x1a')](function(_0xf0db1){_0x13cb1f=_['keyBy'](_0xf0db1,'id');_0x2bdc44=_[_0x0a9e('0x9c')](_0x2bdc44,{'model':db['MailInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3b')]){_0x332d35[_0x0a9e('0x3a')][_0x0a9e('0x26')](function(_0x5af453){_0x2c2cb0['field']('i.'+_0x5af453);});}else{_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0x9d'),_0x0a9e('0x5c'));_0x2c2cb0['field'](_0x0a9e('0x9e'),_0x0a9e('0x9f'));_0x2c2cb0['field']('a.mandatoryDisposition',_0x0a9e('0xa0'));_0x2c2cb0['field']('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','contactName');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0x8d'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa1'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa2'));_0x2c2cb0['field'](_0x0a9e('0xa3'));_0x2c2cb0['field'](_0x0a9e('0xa4'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa5'));_0x2c2cb0[_0x0a9e('0x42')]('i.lastMsgAt');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa6'));_0x2c2cb0[_0x0a9e('0x42')]('i.subject');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa7'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa8'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa9'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xaa'));_0x2c2cb0['field'](_0x0a9e('0xab'));_0x2c2cb0[_0x0a9e('0x42')]('i.ContactId');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xac'));_0x2c2cb0[_0x0a9e('0x42')]('i.UserId');_0x2c2cb0[_0x0a9e('0x42')]('c.firstName',_0x0a9e('0xad'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xae'),_0x0a9e('0xaf'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb0'),_0x0a9e('0xb1'));_0x2c2cb0[_0x0a9e('0x42')]('c.phone',_0x0a9e('0xb2'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb3'),_0x0a9e('0xb4'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb5'),_0x0a9e('0xb6'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb7'),_0x0a9e('0xb8'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb9'),_0x0a9e('0xba'));_0x2c2cb0['field'](_0x0a9e('0xbb'),_0x0a9e('0x28'));}if(_0x332d35[_0x0a9e('0x15')])_0x2c2cb0[_0x0a9e('0x15')](_0x332d35[_0x0a9e('0x15')]);if(_0x332d35['offset'])_0x2c2cb0[_0x0a9e('0x13')](_0x332d35[_0x0a9e('0x13')]);return db['sequelize'][_0x0a9e('0x38')](_0x2c2cb0['toString'](),_0x2bdc44);})[_0x0a9e('0x1a')](function(_0x27041d){if(_0x27041d[_0x0a9e('0x3c')]>0x0)_0x37f6cc[_0x0a9e('0x72')]('ui.MailInteractionId\x20IN\x20?',_[_0x0a9e('0x37')](_0x27041d,'id'));return db['sequelize'][_0x0a9e('0x38')](_0x37f6cc[_0x0a9e('0x9b')](),_0x2bdc44)['then'](function(_0x231c6a){var _0x63c9f7=_[_0x0a9e('0xbc')](_0x231c6a,'MailInteractionId');var _0x4c788f=[];return db[_0x0a9e('0xbd')][_0x0a9e('0x2a')]({'attributes':[_0x0a9e('0xbe')],'raw':!![]})[_0x0a9e('0x1a')](function(_0x3f2f40){var _0x2450a8=_0x3f2f40[_0x0a9e('0xbe')];_0x27041d[_0x0a9e('0x26')](function(_0x3f8124){_0x4c788f['push'](updateMailInteraction(_0x3f8124,_0x13cb1f,_0x63c9f7,_0x2450a8));});return BPromise[_0x0a9e('0xbf')](_0x4c788f);});});});})['then'](function(_0x287324){_0x5583a4[_0x0a9e('0xc0')]=_0x287324;return _0x5583a4;})[_0x0a9e('0x1a')](respondWithFilteredResult(_0x409319,_0x332d35))[_0x0a9e('0x30')](handleError(_0x409319,null));};exports[_0x0a9e('0xc1')]=function(_0x4e7273,_0x436313){var _0x4667bf={'raw':![],'where':{'id':_0x4e7273[_0x0a9e('0xc2')]['id']}},_0x2791c5={};_0x2791c5[_0x0a9e('0x36')]=_['keys'](db['MailInteraction'][_0x0a9e('0x33')]);_0x2791c5['query']=_[_0x0a9e('0x6f')](_0x4e7273[_0x0a9e('0x38')]);_0x2791c5[_0x0a9e('0x3f')]=_[_0x0a9e('0x39')](_0x2791c5[_0x0a9e('0x36')],_0x2791c5[_0x0a9e('0x38')]);_0x4667bf['attributes']=_['intersection'](_0x2791c5[_0x0a9e('0x36')],qs['fields'](_0x4e7273[_0x0a9e('0x38')]['fields']));_0x4667bf[_0x0a9e('0x3a')]=_0x4667bf['attributes']['length']?_0x4667bf[_0x0a9e('0x3a')]:_0x2791c5[_0x0a9e('0x36')];if(_0x4e7273['query'][_0x0a9e('0xc3')]){_0x4667bf[_0x0a9e('0xc4')]=[{'all':!![]}];}_0x4667bf=_[_0x0a9e('0x9c')]({},_0x4667bf,_0x4e7273[_0x0a9e('0xc5')]);return db[_0x0a9e('0x32')]['find'](_0x4667bf)['then'](handleEntityNotFound(_0x436313,null))[_0x0a9e('0x1a')](respondWithResult(_0x436313,null))[_0x0a9e('0x30')](handleError(_0x436313,null));};exports[_0x0a9e('0xc6')]=function(_0x24beb6,_0x59303b){return db['MailInteraction'][_0x0a9e('0xc6')](_0x24beb6[_0x0a9e('0xc7')],{})['then'](respondWithResult(_0x59303b,0xc9))[_0x0a9e('0x30')](handleError(_0x59303b,null));};exports[_0x0a9e('0x19')]=function(_0xcacabb,_0x2427d5){if(_0xcacabb[_0x0a9e('0xc7')]['id']){delete _0xcacabb[_0x0a9e('0xc7')]['id'];}return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0xcacabb[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x2427d5,null))['then'](saveUpdates(_0xcacabb[_0x0a9e('0xc7')],null))[_0x0a9e('0x1a')](respondWithResult(_0x2427d5,null))[_0x0a9e('0x30')](handleError(_0x2427d5,null));};exports[_0x0a9e('0x1b')]=function(_0x1d0b02,_0x547e37){return db['MailInteraction'][_0x0a9e('0x5b')]({'where':{'id':_0x1d0b02[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x547e37,null))[_0x0a9e('0x1a')](removeEntity(_0x547e37,null))[_0x0a9e('0x30')](handleError(_0x547e37,null));};exports['describe']=function(_0x1339d0,_0x3c775a){return db[_0x0a9e('0x32')]['describe']()[_0x0a9e('0x1a')](respondWithResult(_0x3c775a,null))['catch'](handleError(_0x3c775a,null));};exports[_0x0a9e('0xc8')]=function(_0x4799d4,_0x25b745){return db[_0x0a9e('0x29')][_0x0a9e('0x5b')]({'where':{'id':_0x4799d4['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x25b745,null))['then'](function(_0x4383da){if(_0x4383da){return _0x4383da[_0x0a9e('0xc8')](_0x4799d4[_0x0a9e('0xc7')][_0x0a9e('0xc9')],_[_0x0a9e('0xca')](_0x4799d4[_0x0a9e('0xc7')],[_0x0a9e('0xc9'),'id'])||{});}})[_0x0a9e('0x1a')](respondWithResult(_0x25b745,null))[_0x0a9e('0x30')](handleError(_0x25b745,null));};exports[_0x0a9e('0xcb')]=function(_0x4262d0,_0xc876d4){var _0x2415fe={'raw':![],'where':{}};var _0x399def={};var _0x98c62c={'count':0x0,'rows':[]};return db[_0x0a9e('0x32')]['findOne']({'where':{'id':_0x4262d0['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0xc876d4,null))['then'](function(_0x1d999b){if(_0x1d999b){_0x399def[_0x0a9e('0x36')]=_['keys'](db[_0x0a9e('0x29')][_0x0a9e('0x33')]);_0x399def[_0x0a9e('0x38')]=_[_0x0a9e('0x6f')](_0x4262d0['query']);_0x399def[_0x0a9e('0x3f')]=_[_0x0a9e('0x39')](_0x399def[_0x0a9e('0x36')],_0x399def[_0x0a9e('0x38')]);_0x2415fe['attributes']=_[_0x0a9e('0x39')](_0x399def[_0x0a9e('0x36')],qs[_0x0a9e('0x3b')](_0x4262d0['query'][_0x0a9e('0x3b')]));_0x2415fe[_0x0a9e('0x3a')]=_0x2415fe[_0x0a9e('0x3a')]['length']?_0x2415fe[_0x0a9e('0x3a')]:_0x399def[_0x0a9e('0x36')];if(!_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x3d')](_0x0a9e('0xcc'))){_0x2415fe['limit']=qs[_0x0a9e('0x15')](_0x4262d0[_0x0a9e('0x38')]['limit']);_0x2415fe[_0x0a9e('0x13')]=qs[_0x0a9e('0x13')](_0x4262d0[_0x0a9e('0x38')]['offset']);}_0x2415fe['order']=qs['sort'](_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x3e')]);_0x2415fe['where']=qs[_0x0a9e('0x3f')](_[_0x0a9e('0x40')](_0x4262d0[_0x0a9e('0x38')],_0x399def['filters']));_0x2415fe[_0x0a9e('0x72')][_0x0a9e('0xcd')]=_0x1d999b['id'];if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x81')]){_0x2415fe[_0x0a9e('0x72')]=_[_0x0a9e('0x9c')](_0x2415fe[_0x0a9e('0x72')],{'$or':_[_0x0a9e('0x37')](_0x2415fe[_0x0a9e('0x3a')],function(_0x5a1848){var _0x43c397={};_0x43c397[_0x5a1848]={'$like':'%'+_0x4262d0['query'][_0x0a9e('0x81')]+'%'};return _0x43c397;})});}if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x77')]){var _0x3cf222=_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x77')]['split'](',');var _0x1a0314={};_0x1a0314[_0x3cf222[0x0]]={'$gte':moment(_0x3cf222[0x1])[_0x0a9e('0xce')](_0x0a9e('0xcf'))};_0x2415fe[_0x0a9e('0x72')]=_['merge'](_0x2415fe[_0x0a9e('0x72')],_0x1a0314);}_0x2415fe=_[_0x0a9e('0x9c')]({},_0x2415fe,_0x4262d0[_0x0a9e('0xc5')]);return db[_0x0a9e('0x29')][_0x0a9e('0x16')]({'where':_0x2415fe[_0x0a9e('0x72')]})[_0x0a9e('0x1a')](function(_0x25931e){_0x98c62c[_0x0a9e('0x16')]=_0x25931e;if(_0x4262d0[_0x0a9e('0x38')]['includeAll']){_0x2415fe[_0x0a9e('0xc4')]=[{'all':!![]}];}return db[_0x0a9e('0x29')][_0x0a9e('0xd0')](_0x2415fe);})[_0x0a9e('0x1a')](function(_0xea8bd1){if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0xd1')]===_0x0a9e('0xd2')){for(var _0x566b90=0x0;_0x566b90<_0xea8bd1[_0x0a9e('0x3c')];_0x566b90++){_0xea8bd1[_0x566b90][_0x0a9e('0xc7')]=juice(_0xea8bd1[_0x566b90][_0x0a9e('0xc7')]);}}_0x98c62c['rows']=_0xea8bd1;return _0x98c62c;});}})[_0x0a9e('0x1a')](respondWithFilteredResult(_0xc876d4,_0x2415fe))[_0x0a9e('0x30')](handleError(_0xc876d4,null));};exports[_0x0a9e('0xd3')]=function(_0x97d5b5,_0x370b5e){return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x97d5b5[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x370b5e,null))[_0x0a9e('0x1a')](function(_0x5a7dad){if(_0x5a7dad){return _0x5a7dad[_0x0a9e('0xd4')](_0x97d5b5[_0x0a9e('0xc7')][_0x0a9e('0xc9')],_[_0x0a9e('0xca')](_0x97d5b5[_0x0a9e('0xc7')],[_0x0a9e('0xc9'),'id'])||{})['spread'](function(){return db[_0x0a9e('0xd5')]['findAll']({'attributes':['id','name','color'],'where':{'id':_0x97d5b5[_0x0a9e('0xc7')][_0x0a9e('0xc9')]}});})[_0x0a9e('0x1a')](function(_0x2a07d0){socket['emit'](_0x0a9e('0xd6'),{'id':Number(_0x97d5b5[_0x0a9e('0xc2')]['id']),'tags':_0x2a07d0||[]});return{'id':Number(_0x97d5b5[_0x0a9e('0xc2')]['id']),'tags':_0x2a07d0||[]};});}})[_0x0a9e('0x1a')](respondWithResult(_0x370b5e,null))[_0x0a9e('0x30')](handleError(_0x370b5e,null));};exports['removeTags']=function(_0x57b1b1,_0x9484c8){return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x57b1b1['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x9484c8,null))[_0x0a9e('0x1a')](function(_0x422f0a){if(_0x422f0a){return _0x422f0a['removeTags'](_0x57b1b1[_0x0a9e('0x38')][_0x0a9e('0xc9')]);}})[_0x0a9e('0x1a')](respondWithStatusCode(_0x9484c8,null))['catch'](handleError(_0x9484c8,null));};exports[_0x0a9e('0xd7')]=function(_0x336b30,_0x3b7213){var _0x549e03=moment()['unix']()['toString']();var _0x3b04fd=path[_0x0a9e('0xd8')](config[_0x0a9e('0xd9')],_0x0a9e('0xda'),'files',_0x0a9e('0xdb'));var _0x532424=path[_0x0a9e('0xd8')](config[_0x0a9e('0xd9')],_0x0a9e('0xda'),'files',_0x0a9e('0xdc'));var _0x33a26c=path[_0x0a9e('0xd8')](_0x3b04fd,_0x549e03);var _0x580dd6=util[_0x0a9e('0xce')]('transcript-%d-%s.zip',_0x336b30[_0x0a9e('0xc2')]['id'],_0x549e03);var _0x5c57e1=path[_0x0a9e('0xd8')](_0x3b04fd,_0x580dd6);var _0x57b7d4=[];if(_0x336b30[_0x0a9e('0x38')][_0x0a9e('0xdc')]){_0x57b7d4[_0x0a9e('0x27')]({'model':db[_0x0a9e('0xdd')],'as':_0x0a9e('0xde'),'raw':!![]});}var _0x251dd9=[{'model':db[_0x0a9e('0x29')],'as':'Messages','attributes':['id',_0x0a9e('0xc7'),_0x0a9e('0x44'),'to','cc','bcc',_0x0a9e('0xdf'),_0x0a9e('0x75')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x57b7d4}];return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x336b30[_0x0a9e('0xc2')]['id']},'include':_0x251dd9})['then'](handleEntityNotFound(_0x3b7213,null))[_0x0a9e('0x1a')](function(_0xf49ed4){if(_0xf49ed4&&_0xf49ed4[_0x0a9e('0xe0')]){var _0x3f0d64=_0xf49ed4[_0x0a9e('0xe1')]({'plain':!![]});fs[_0x0a9e('0xe2')](_0x33a26c);return BPromise[_0x0a9e('0xe3')](_0x3f0d64[_0x0a9e('0xe0')],function(_0x22767f,_0x426c3c){var _0x56e148={'from':_0x22767f[_0x0a9e('0x44')],'to':_0x22767f['to'],'subject':_0x22767f['subject'],'html':_0x22767f[_0x0a9e('0xc7')],'headers':{'Date':moment(_0x22767f[_0x0a9e('0x75')])[_0x0a9e('0xce')](_0x0a9e('0xe4'))},'attachments':[]};if(_0x22767f['cc']){_0x56e148[_0x0a9e('0xe5')]['Cc']=_0x22767f['cc'];}if(_0x22767f[_0x0a9e('0xe6')]){_0x56e148['headers'][_0x0a9e('0xe7')]=_0x22767f[_0x0a9e('0xe6')];}return new BPromise(function(_0x2977a7,_0x55a599){if(_0x22767f[_0x0a9e('0xde')]){for(var _0x402544=0x0;_0x402544<_0x22767f[_0x0a9e('0xde')][_0x0a9e('0x3c')];_0x402544++){var _0x31e1e0=_0x22767f[_0x0a9e('0xde')][_0x402544];var _0x1e93f5=path['join'](_0x532424,_0x31e1e0[_0x0a9e('0xe8')]);if(fs[_0x0a9e('0xe9')](_0x1e93f5)){_0x56e148[_0x0a9e('0xdc')][_0x0a9e('0x27')]({'name':_0x31e1e0[_0x0a9e('0x20')],'contentType':_0x31e1e0[_0x0a9e('0x65')],'data':fs[_0x0a9e('0xea')](_0x1e93f5)});}}}emlformat['build'](_0x56e148,function(_0x5c8720,_0x10aa22){if(_0x5c8720)return _0x55a599(_0x5c8720);fs[_0x0a9e('0xeb')](path[_0x0a9e('0xd8')](_0x33a26c,util[_0x0a9e('0xce')](_0x0a9e('0xec'),_0x426c3c)),_0x10aa22);return _0x2977a7(_0x10aa22);});});})[_0x0a9e('0x1a')](function(){return new BPromise(function(_0x609711,_0x584854){zipdir(_0x33a26c,{'saveTo':_0x5c57e1},function(_0x39ea62,_0x1d7fc4){if(_0x39ea62)return _0x584854(_0x39ea62);return _0x609711(_0x1d7fc4);});})[_0x0a9e('0x1a')](function(){return new BPromise(function(_0x2675a5,_0x1b1757){rimraf(_0x33a26c,function(_0x3c6082){if(_0x3c6082)_0x1b1757(_0x3c6082);return _0x2675a5();});});})[_0x0a9e('0x1a')](function(){return _0x3b7213['download'](_0x5c57e1,_0x580dd6,function(_0x311288){if(!_0x311288)fs[_0x0a9e('0xed')](_0x5c57e1);});});});}else{return _0x3b7213[_0x0a9e('0x1d')](0xc8);}})['catch'](handleError(_0x3b7213,null));};
\ No newline at end of file
+var _0xa9e0=['o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','Setting','enableEmailPreview','all','rows','show','params','includeAll','include','options','create','body','addMessage','ids','omit','getMessages','nolimit','MailInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','true','addTags','setTags','Tag','mailInteractionTags:save','download','join','root','server','tmp','attachments','Attachment','Attachments','subject','Messages','get','mkdirSync','each','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','basename','existsSync','readFileSync','writeFileSync','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','util','lodash','squel','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','defaults','socket.io-emitter','redis','./mailInteraction.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','sendStatus','error','stack','name','send','Users','fullname','Tags','split','forEach','push','TagIds','MailMessage','findOne','out','-id','plainBody','lastMsgText','trimStart','catch','index','MailInteraction','rawAttributes','fieldName','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','sort','filters','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.MailInteractionId','user_has_mail_interactions','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','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','having','`\x20>\x200','Contact','$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','type','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','keys','some','compact','where','i.MailAccountId\x20IN\x20?','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','group','QueryTypes','SELECT','clone','i.id','order','contactName','DESC','t.id\x20IN\x20?','resolve','MailAccountId','i.MailAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getMailAccounts','i.MailAccountId\x20IS\x20NULL','sequelize','toString','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','Account.mandatoryDisposition','i.createdAt','i.updatedAt','i.closed','i.closedAt','i.attach','i.lastMsgDirection','i.disposition','i.secondDisposition','i.thirdDisposition','i.substatus','i.to','i.MailAccountId','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname'];(function(_0x4f8d9c,_0x3cd167){var _0x2cbc6e=function(_0x53066e){while(--_0x53066e){_0x4f8d9c['push'](_0x4f8d9c['shift']());}};_0x2cbc6e(++_0x3cd167);}(_0xa9e0,0x123));var _0x0a9e=function(_0x173d7e,_0x3242fd){_0x173d7e=_0x173d7e-0x0;var _0x2220d6=_0xa9e0[_0x173d7e];return _0x2220d6;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var util=require(_0x0a9e('0x3'));var path=require('path');var fs=require('fs');var _=require(_0x0a9e('0x4'));var squel=require(_0x0a9e('0x5'));var juice=require(_0x0a9e('0x6'));var Redis=require(_0x0a9e('0x7'));var qs=require(_0x0a9e('0x8'));var as=require('../../components/parsers/advancedSearch');var logger=require(_0x0a9e('0x9'))(_0x0a9e('0xa'));var config=require(_0x0a9e('0xb'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x0a9e('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x0a9e('0xd'))(new Redis(config[_0x0a9e('0xe')]));require(_0x0a9e('0xf'))[_0x0a9e('0x10')](socket);function respondWithStatusCode(_0xfeb75b,_0xbd1168){_0xbd1168=_0xbd1168||0xcc;return function(_0x4a4c56){if(_0x4a4c56){return _0xfeb75b['sendStatus'](_0xbd1168);}return _0xfeb75b['status'](_0xbd1168)['end']();};}function respondWithResult(_0x273d4d,_0x36471c){_0x36471c=_0x36471c||0xc8;return function(_0xd5b662){if(_0xd5b662){return _0x273d4d[_0x0a9e('0x11')](_0x36471c)[_0x0a9e('0x12')](_0xd5b662);}};}function respondWithFilteredResult(_0x69aeb7,_0x5db4b0){return function(_0x4283ce){if(_0x4283ce){var _0x239b12=typeof _0x5db4b0[_0x0a9e('0x13')]===_0x0a9e('0x14')&&typeof _0x5db4b0[_0x0a9e('0x15')]===_0x0a9e('0x14');var _0x52a03d=_0x4283ce[_0x0a9e('0x16')];var _0x5d0880=_0x239b12?0x0:_0x5db4b0[_0x0a9e('0x13')];var _0x519dfd=_0x239b12?_0x4283ce[_0x0a9e('0x16')]:_0x5db4b0[_0x0a9e('0x13')]+_0x5db4b0['limit'];var _0x225616;if(_0x519dfd>=_0x52a03d){_0x519dfd=_0x52a03d;_0x225616=0xc8;}else{_0x225616=0xce;}_0x69aeb7['status'](_0x225616);return _0x69aeb7[_0x0a9e('0x17')](_0x0a9e('0x18'),_0x5d0880+'-'+_0x519dfd+'/'+_0x52a03d)[_0x0a9e('0x12')](_0x4283ce);}return null;};}function saveUpdates(_0x205fd6){return function(_0x31b1ca){if(_0x31b1ca){return _0x31b1ca[_0x0a9e('0x19')](_0x205fd6)[_0x0a9e('0x1a')](function(_0x20559e){return _0x20559e;});}return null;};}function removeEntity(_0x1314ae){return function(_0x112016){if(_0x112016){return _0x112016[_0x0a9e('0x1b')]()[_0x0a9e('0x1a')](function(){_0x1314ae['status'](0xcc)[_0x0a9e('0x1c')]();});}};}function handleEntityNotFound(_0x155cce){return function(_0x53682f){if(!_0x53682f){_0x155cce[_0x0a9e('0x1d')](0x194);}return _0x53682f;};}function handleError(_0x5a09ef,_0x588269){_0x588269=_0x588269||0x1f4;return function(_0x3a02e1){logger[_0x0a9e('0x1e')](_0x3a02e1[_0x0a9e('0x1f')]);if(_0x3a02e1[_0x0a9e('0x20')]){delete _0x3a02e1['name'];}_0x5a09ef[_0x0a9e('0x11')](_0x588269)[_0x0a9e('0x21')](_0x3a02e1);};}function getInteractionUsers(_0x3b45bc,_0x4d00e6){return new BPromise(function(_0x370d86,_0x42ac8f){try{if(_0x4d00e6[_0x3b45bc['id']]){_0x3b45bc[_0x0a9e('0x22')]=_['map'](_0x4d00e6[_0x3b45bc['id']],function(_0x59181e){return{'id':_0x59181e['id'],'fullname':_0x59181e[_0x0a9e('0x23')]};});}}catch(_0x3a8e58){_0x42ac8f(_0x3a8e58);}_0x370d86(_0x3b45bc);});}function getInteractionTags(_0x40c424,_0x33161b){return new BPromise(function(_0x526cf3,_0x384319){try{if(_0x40c424['TagIds']){_0x40c424[_0x0a9e('0x24')]=[];_0x40c424['TagIds'][_0x0a9e('0x25')](',')[_0x0a9e('0x26')](function(_0x25fba9){_0x40c424[_0x0a9e('0x24')][_0x0a9e('0x27')](_0x33161b[_0x25fba9]);});}delete _0x40c424[_0x0a9e('0x28')];}catch(_0x11c3b6){_0x384319(_0x11c3b6);}_0x526cf3(_0x40c424);});}function getLastMessageText(_0x14de77){return new BPromise(function(_0x5a101a,_0x3652a7){return db[_0x0a9e('0x29')][_0x0a9e('0x2a')]({'where':{'$and':[{'MailInteractionId':_0x14de77['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x0a9e('0x2b')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0x0a9e('0x2c'),'raw':!![]})[_0x0a9e('0x1a')](function(_0x1843b2){if(_0x1843b2&&_0x1843b2[_0x0a9e('0x2d')]){_0x14de77[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x1843b2[_0x0a9e('0x2d')]);}_0x5a101a(_0x14de77);})[_0x0a9e('0x30')](function(_0x1dbde2){_0x3652a7(_0x1dbde2);});});}function updateMailInteraction(_0x540530,_0x426950,_0x5d1e0e,_0x2407f9){return new BPromise(function(_0x3ae878,_0x1122db){return getInteractionUsers(_0x540530,_0x5d1e0e)[_0x0a9e('0x1a')](function(_0x25ce3a){return getInteractionTags(_0x25ce3a,_0x426950);})['then'](function(_0x66c1d2){if(_0x2407f9){_0x3ae878(getLastMessageText(_0x66c1d2));}else{_0x3ae878(_0x66c1d2);}})[_0x0a9e('0x30')](function(_0x40cb85){_0x1122db(_0x40cb85);});});}exports[_0x0a9e('0x31')]=function(_0x2b45ea,_0x409319){var _0x332d35={},_0x39e565={},_0x5583a4={'count':0x0,'rows':[]};var _0x44295a=_['map'](db[_0x0a9e('0x32')][_0x0a9e('0x33')],function(_0x2b7e7f){return{'name':_0x2b7e7f[_0x0a9e('0x34')],'type':_0x2b7e7f['type'][_0x0a9e('0x35')]};});_0x39e565[_0x0a9e('0x36')]=_[_0x0a9e('0x37')](_0x44295a,_0x0a9e('0x20'));_0x39e565['query']=_['keys'](_0x2b45ea[_0x0a9e('0x38')]);_0x39e565['filters']=_[_0x0a9e('0x39')](_0x39e565[_0x0a9e('0x36')],_0x39e565[_0x0a9e('0x38')]);_0x332d35[_0x0a9e('0x3a')]=_['intersection'](_0x39e565[_0x0a9e('0x36')],qs[_0x0a9e('0x3b')](_0x2b45ea[_0x0a9e('0x38')]['fields']));_0x332d35[_0x0a9e('0x3a')]=_0x332d35[_0x0a9e('0x3a')][_0x0a9e('0x3c')]?_0x332d35['attributes']:_0x39e565['model'];if(!_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3d')]('nolimit')){_0x332d35[_0x0a9e('0x15')]=qs[_0x0a9e('0x15')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x15')]);_0x332d35['offset']=qs['offset'](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x13')]);}_0x332d35['order']=qs[_0x0a9e('0x3e')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3e')]);_0x332d35['where']=qs[_0x0a9e('0x3f')](_[_0x0a9e('0x40')](_0x2b45ea[_0x0a9e('0x38')],_0x39e565[_0x0a9e('0x3f')]),_0x44295a);var _0x13cb1f=[];var _0xeaa5e5=squel[_0x0a9e('0x41')]()[_0x0a9e('0x42')]('id')[_0x0a9e('0x42')](_0x0a9e('0x20'))[_0x0a9e('0x42')](_0x0a9e('0x43'))[_0x0a9e('0x44')](_0x0a9e('0x45'));var _0x37f6cc=squel['select']()['field'](_0x0a9e('0x46'))[_0x0a9e('0x42')](_0x0a9e('0x47'))[_0x0a9e('0x42')](_0x0a9e('0x48'))[_0x0a9e('0x44')](_0x0a9e('0x49'),'ui')[_0x0a9e('0x4a')](_0x0a9e('0x4b'),'u',_0x0a9e('0x4c'));var _0x2c2cb0=squel[_0x0a9e('0x41')]()['from'](_0x0a9e('0x4d'),'i')[_0x0a9e('0x4a')](_0x0a9e('0x4e'),'c',_0x0a9e('0x4f'))[_0x0a9e('0x4a')](_0x0a9e('0x4b'),'o',_0x0a9e('0x50'))[_0x0a9e('0x4a')]('mail_accounts','a',_0x0a9e('0x51'))['left_join'](_0x0a9e('0x52'),'me',_0x0a9e('0x53'))[_0x0a9e('0x4a')]('mail_interaction_has_tags','it',_0x0a9e('0x54'))[_0x0a9e('0x4a')](_0x0a9e('0x45'),'t',_0x0a9e('0x55'));var _0x45c845=squel[_0x0a9e('0x56')]();var _0x45bf7f=[];var _0x5bbcde=squel[_0x0a9e('0x56')]();var _0x1bde3c;if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x57')]){_0x1bde3c=as[_0x0a9e('0x58')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x57')]);var _0x19383e=_0x1bde3c[_0x0a9e('0x59')];for(var _0x58a5c2=0x0;_0x58a5c2<_0x1bde3c[_0x0a9e('0x5a')][_0x0a9e('0x3c')];_0x58a5c2++){var _0x4f7240=_0x1bde3c['conditions'][_0x58a5c2];var _0x5ddf84='i';var _0x1adfee=_[_0x0a9e('0x5b')](_0x44295a,[_0x0a9e('0x20'),_0x4f7240[_0x0a9e('0x42')]]);if(!_0x1adfee){switch(_0x4f7240[_0x0a9e('0x42')]){case _0x0a9e('0x5c'):if(_0x4f7240[_0x0a9e('0x5d')]==0x1){_0x2c2cb0[_0x0a9e('0x5e')]('`'+_0x4f7240['field']+'`\x20=\x200');}else{_0x2c2cb0['having']('`'+_0x4f7240[_0x0a9e('0x42')]+_0x0a9e('0x5f'));}break;case _0x0a9e('0x60'):if(_0x4f7240['operator']===_0x0a9e('0x61')){if(_0x4f7240[_0x0a9e('0x5d')]['split']('\x20')['length']>0x1){_0x45c845[_0x19383e](_0x0a9e('0x62'),qs['getFullTextValue'](_0x4f7240[_0x0a9e('0x5d')]),null);}else{var _0x4c3845='%'+_0x4f7240[_0x0a9e('0x5d')]+'%';_0x45c845[_0x19383e](_0x0a9e('0x63'),_0x4c3845,_0x4c3845,_0x4c3845);}}else{_0x1adfee=_[_0x0a9e('0x5b')](_0x44295a,['name',_0x0a9e('0x64')]);_0x4f7240[_0x0a9e('0x42')]='ContactId';_0x2244d6=as['buildExpression'](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6[_0x0a9e('0x66')],_0x2244d6['value'][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}break;case'Tag':var _0xe22ccc=_0x4f7240['value']['split'](',')['map'](function(_0x2da03c){return Number(_0x2da03c);});_0xe22ccc['forEach'](function(_0x2f7092){_0x5bbcde['or'](_0x0a9e('0x68'),'%,'+_0x2f7092+',%');});_0x45bf7f=_[_0x0a9e('0x69')](_0x45bf7f,_0xe22ccc);break;case _0x0a9e('0x6a'):if(_0x4f7240[_0x0a9e('0x6b')]===_0x0a9e('0x61')){_0x45c845[_0x19383e](_0x0a9e('0x6c'),'%'+_0x4f7240[_0x0a9e('0x5d')]+'%',null);}else{_0x1adfee=_['find'](_0x44295a,[_0x0a9e('0x20'),_0x0a9e('0x6d')]);_0x4f7240[_0x0a9e('0x42')]=_0x0a9e('0x6d');_0x2244d6=as[_0x0a9e('0x6e')](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6['text'],_0x2244d6[_0x0a9e('0x5d')][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}break;case'plainBody':_0x2244d6=as[_0x0a9e('0x6e')]('me',null,_0x4f7240);_0x45c845[_0x19383e](_0x2244d6['text'],_0x2244d6['value']['start'],_0x2244d6[_0x0a9e('0x5d')]['end']);break;}}else{var _0x2244d6=as[_0x0a9e('0x6e')](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6[_0x0a9e('0x66')],_0x2244d6[_0x0a9e('0x5d')][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}}}else{var _0x5854cc=_(_0x2b45ea[_0x0a9e('0x38')])[_0x0a9e('0x6f')]()[_0x0a9e('0x37')](function(_0x5adf8f){return _[_0x0a9e('0x70')](_0x44295a,[_0x0a9e('0x20'),_0x5adf8f])?_0x5adf8f:undefined;})[_0x0a9e('0x71')]()[_0x0a9e('0x5d')]();if(!_['isEmpty'](_0x5854cc)){_0x5854cc[_0x0a9e('0x26')](function(_0xe05a5a){if(_0xe05a5a==='MailAccountId'){_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x73'),[][_0x0a9e('0x74')](_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]));}else if(_0xe05a5a===_0x0a9e('0x75')){var _0x4d4a35=JSON[_0x0a9e('0x76')](_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a])[_0x0a9e('0x77')];var _0x47bb43=JSON[_0x0a9e('0x76')](_0x2b45ea['query'][_0xe05a5a])['$lte'];_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x78'),_0x4d4a35,_0x47bb43);}else{if(_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]===_0x0a9e('0x79')){_0x2c2cb0[_0x0a9e('0x72')]('i.'+_0xe05a5a+_0x0a9e('0x7a'));}else{_0x2c2cb0[_0x0a9e('0x72')]('i.'+_0xe05a5a+_0x0a9e('0x7b'),_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]);}}});}if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x7c')]){if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x7c')]==0x1){_0x2c2cb0[_0x0a9e('0x5e')](_0x0a9e('0x7d'));}else{_0x2c2cb0[_0x0a9e('0x5e')](_0x0a9e('0x7e'));}}if(_0x2b45ea[_0x0a9e('0x38')]['tag']){_0x45bf7f=_[_0x0a9e('0x7f')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x80')])?_0x2b45ea['query'][_0x0a9e('0x80')]:new Array(_0x2b45ea[_0x0a9e('0x38')]['tag']);_0x45bf7f[_0x0a9e('0x26')](function(_0x56e31e){_0x5bbcde['or'](_0x0a9e('0x68'),'%,'+_0x56e31e+',%');});}if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x81')]){var _0x4a43a8=_0x2b45ea['query']['filter'][_0x0a9e('0x82')]('\x5c','\x5c\x5c')[_0x0a9e('0x82')](/'/g,'\x27\x27');if(qs[_0x0a9e('0x83')](_0x4a43a8)){_0x45c845['or'](_0x0a9e('0x84'),_0x4a43a8+'%');}else if(qs[_0x0a9e('0x85')](_0x4a43a8)){_0x45c845['or'](_0x0a9e('0x86'),_0x4a43a8+'%');}else{_0x45c845['or'](_0x0a9e('0x87'),qs[_0x0a9e('0x88')](_0x4a43a8))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x0a9e('0x88')](_0x4a43a8));}}}_0x2c2cb0[_0x0a9e('0x72')](_0x45c845);_0x2c2cb0[_0x0a9e('0x89')]('i.id');var _0x2bdc44={'type':db['Sequelize'][_0x0a9e('0x8a')][_0x0a9e('0x8b')],'raw':!![]};var _0x4c46c1=_0x2c2cb0[_0x0a9e('0x8c')]();_0x4c46c1[_0x0a9e('0x42')](_0x0a9e('0x8d'));_0x4c46c1[_0x0a9e('0x42')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x0a9e('0x5c'));if(_0x332d35[_0x0a9e('0x8e')]){_0x332d35[_0x0a9e('0x8e')][_0x0a9e('0x26')](function(_0x5b7fc3){var _0x109ccb=_0x5b7fc3[0x0]===_0x0a9e('0x8f')?_0x5b7fc3[0x0]:'i.'+_0x5b7fc3[0x0];_0x2c2cb0[_0x0a9e('0x8e')](_0x109ccb,_0x5b7fc3[0x1]===_0x0a9e('0x90')?![]:!![]);});}if(!_['isEmpty'](_0x45bf7f)){_0x2c2cb0[_0x0a9e('0x5e')](_0x5bbcde);_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x91'),_0x45bf7f);}BPromise[_0x0a9e('0x92')]()[_0x0a9e('0x1a')](function(){if(!_0x1bde3c){if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x93')])return;_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x94'));_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x94'));return;}if(_0x2b45ea[_0x0a9e('0x95')][_0x0a9e('0x96')]!==_0x0a9e('0x97'))return;return _0x2b45ea['user'][_0x0a9e('0x98')]({'attributes':['id'],'raw':!![]})[_0x0a9e('0x1a')](function(_0xc599b3){if(_['isEmpty'](_0xc599b3)){_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x99'));_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x99'));}else{_0x4c46c1['where']('i.MailAccountId\x20IN\x20?',_[_0x0a9e('0x37')](_0xc599b3,'id'));_0x2c2cb0[_0x0a9e('0x72')]('i.MailAccountId\x20IN\x20?',_[_0x0a9e('0x37')](_0xc599b3,'id'));}});})['then'](function(){if(_0x2b45ea[_0x0a9e('0x95')][_0x0a9e('0x96')]==='agent'&&!_0x1bde3c&&!_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x93')])return[];return db[_0x0a9e('0x9a')][_0x0a9e('0x38')](_0x4c46c1[_0x0a9e('0x9b')](),_0x2bdc44);})[_0x0a9e('0x1a')](function(_0x444f1f){_0x5583a4['count']=_0x444f1f[_0x0a9e('0x3c')];if(_0x5583a4[_0x0a9e('0x16')]===0x0)return[];return db[_0x0a9e('0x9a')][_0x0a9e('0x38')](_0xeaa5e5['toString'](),_0x2bdc44)[_0x0a9e('0x1a')](function(_0xf0db1){_0x13cb1f=_['keyBy'](_0xf0db1,'id');_0x2bdc44=_[_0x0a9e('0x9c')](_0x2bdc44,{'model':db['MailInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3b')]){_0x332d35[_0x0a9e('0x3a')][_0x0a9e('0x26')](function(_0x5af453){_0x2c2cb0['field']('i.'+_0x5af453);});}else{_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0x9d'),_0x0a9e('0x5c'));_0x2c2cb0['field'](_0x0a9e('0x9e'),_0x0a9e('0x9f'));_0x2c2cb0['field']('a.mandatoryDisposition',_0x0a9e('0xa0'));_0x2c2cb0['field']('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','contactName');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0x8d'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa1'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa2'));_0x2c2cb0['field'](_0x0a9e('0xa3'));_0x2c2cb0['field'](_0x0a9e('0xa4'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa5'));_0x2c2cb0[_0x0a9e('0x42')]('i.lastMsgAt');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa6'));_0x2c2cb0[_0x0a9e('0x42')]('i.subject');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa7'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa8'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa9'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xaa'));_0x2c2cb0['field'](_0x0a9e('0xab'));_0x2c2cb0[_0x0a9e('0x42')]('i.ContactId');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xac'));_0x2c2cb0[_0x0a9e('0x42')]('i.UserId');_0x2c2cb0[_0x0a9e('0x42')]('c.firstName',_0x0a9e('0xad'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xae'),_0x0a9e('0xaf'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb0'),_0x0a9e('0xb1'));_0x2c2cb0[_0x0a9e('0x42')]('c.phone',_0x0a9e('0xb2'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb3'),_0x0a9e('0xb4'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb5'),_0x0a9e('0xb6'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb7'),_0x0a9e('0xb8'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb9'),_0x0a9e('0xba'));_0x2c2cb0['field'](_0x0a9e('0xbb'),_0x0a9e('0x28'));}if(_0x332d35[_0x0a9e('0x15')])_0x2c2cb0[_0x0a9e('0x15')](_0x332d35[_0x0a9e('0x15')]);if(_0x332d35['offset'])_0x2c2cb0[_0x0a9e('0x13')](_0x332d35[_0x0a9e('0x13')]);return db['sequelize'][_0x0a9e('0x38')](_0x2c2cb0['toString'](),_0x2bdc44);})[_0x0a9e('0x1a')](function(_0x27041d){if(_0x27041d[_0x0a9e('0x3c')]>0x0)_0x37f6cc[_0x0a9e('0x72')]('ui.MailInteractionId\x20IN\x20?',_[_0x0a9e('0x37')](_0x27041d,'id'));return db['sequelize'][_0x0a9e('0x38')](_0x37f6cc[_0x0a9e('0x9b')](),_0x2bdc44)['then'](function(_0x231c6a){var _0x63c9f7=_[_0x0a9e('0xbc')](_0x231c6a,'MailInteractionId');var _0x4c788f=[];return db[_0x0a9e('0xbd')][_0x0a9e('0x2a')]({'attributes':[_0x0a9e('0xbe')],'raw':!![]})[_0x0a9e('0x1a')](function(_0x3f2f40){var _0x2450a8=_0x3f2f40[_0x0a9e('0xbe')];_0x27041d[_0x0a9e('0x26')](function(_0x3f8124){_0x4c788f['push'](updateMailInteraction(_0x3f8124,_0x13cb1f,_0x63c9f7,_0x2450a8));});return BPromise[_0x0a9e('0xbf')](_0x4c788f);});});});})['then'](function(_0x287324){_0x5583a4[_0x0a9e('0xc0')]=_0x287324;return _0x5583a4;})[_0x0a9e('0x1a')](respondWithFilteredResult(_0x409319,_0x332d35))[_0x0a9e('0x30')](handleError(_0x409319,null));};exports[_0x0a9e('0xc1')]=function(_0x4e7273,_0x436313){var _0x4667bf={'raw':![],'where':{'id':_0x4e7273[_0x0a9e('0xc2')]['id']}},_0x2791c5={};_0x2791c5[_0x0a9e('0x36')]=_['keys'](db['MailInteraction'][_0x0a9e('0x33')]);_0x2791c5['query']=_[_0x0a9e('0x6f')](_0x4e7273[_0x0a9e('0x38')]);_0x2791c5[_0x0a9e('0x3f')]=_[_0x0a9e('0x39')](_0x2791c5[_0x0a9e('0x36')],_0x2791c5[_0x0a9e('0x38')]);_0x4667bf['attributes']=_['intersection'](_0x2791c5[_0x0a9e('0x36')],qs['fields'](_0x4e7273[_0x0a9e('0x38')]['fields']));_0x4667bf[_0x0a9e('0x3a')]=_0x4667bf['attributes']['length']?_0x4667bf[_0x0a9e('0x3a')]:_0x2791c5[_0x0a9e('0x36')];if(_0x4e7273['query'][_0x0a9e('0xc3')]){_0x4667bf[_0x0a9e('0xc4')]=[{'all':!![]}];}_0x4667bf=_[_0x0a9e('0x9c')]({},_0x4667bf,_0x4e7273[_0x0a9e('0xc5')]);return db[_0x0a9e('0x32')]['find'](_0x4667bf)['then'](handleEntityNotFound(_0x436313,null))[_0x0a9e('0x1a')](respondWithResult(_0x436313,null))[_0x0a9e('0x30')](handleError(_0x436313,null));};exports[_0x0a9e('0xc6')]=function(_0x24beb6,_0x59303b){return db['MailInteraction'][_0x0a9e('0xc6')](_0x24beb6[_0x0a9e('0xc7')],{})['then'](respondWithResult(_0x59303b,0xc9))[_0x0a9e('0x30')](handleError(_0x59303b,null));};exports[_0x0a9e('0x19')]=function(_0xcacabb,_0x2427d5){if(_0xcacabb[_0x0a9e('0xc7')]['id']){delete _0xcacabb[_0x0a9e('0xc7')]['id'];}return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0xcacabb[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x2427d5,null))['then'](saveUpdates(_0xcacabb[_0x0a9e('0xc7')],null))[_0x0a9e('0x1a')](respondWithResult(_0x2427d5,null))[_0x0a9e('0x30')](handleError(_0x2427d5,null));};exports[_0x0a9e('0x1b')]=function(_0x1d0b02,_0x547e37){return db['MailInteraction'][_0x0a9e('0x5b')]({'where':{'id':_0x1d0b02[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x547e37,null))[_0x0a9e('0x1a')](removeEntity(_0x547e37,null))[_0x0a9e('0x30')](handleError(_0x547e37,null));};exports['describe']=function(_0x1339d0,_0x3c775a){return db[_0x0a9e('0x32')]['describe']()[_0x0a9e('0x1a')](respondWithResult(_0x3c775a,null))['catch'](handleError(_0x3c775a,null));};exports[_0x0a9e('0xc8')]=function(_0x4799d4,_0x25b745){return db[_0x0a9e('0x29')][_0x0a9e('0x5b')]({'where':{'id':_0x4799d4['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x25b745,null))['then'](function(_0x4383da){if(_0x4383da){return _0x4383da[_0x0a9e('0xc8')](_0x4799d4[_0x0a9e('0xc7')][_0x0a9e('0xc9')],_[_0x0a9e('0xca')](_0x4799d4[_0x0a9e('0xc7')],[_0x0a9e('0xc9'),'id'])||{});}})[_0x0a9e('0x1a')](respondWithResult(_0x25b745,null))[_0x0a9e('0x30')](handleError(_0x25b745,null));};exports[_0x0a9e('0xcb')]=function(_0x4262d0,_0xc876d4){var _0x2415fe={'raw':![],'where':{}};var _0x399def={};var _0x98c62c={'count':0x0,'rows':[]};return db[_0x0a9e('0x32')]['findOne']({'where':{'id':_0x4262d0['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0xc876d4,null))['then'](function(_0x1d999b){if(_0x1d999b){_0x399def[_0x0a9e('0x36')]=_['keys'](db[_0x0a9e('0x29')][_0x0a9e('0x33')]);_0x399def[_0x0a9e('0x38')]=_[_0x0a9e('0x6f')](_0x4262d0['query']);_0x399def[_0x0a9e('0x3f')]=_[_0x0a9e('0x39')](_0x399def[_0x0a9e('0x36')],_0x399def[_0x0a9e('0x38')]);_0x2415fe['attributes']=_[_0x0a9e('0x39')](_0x399def[_0x0a9e('0x36')],qs[_0x0a9e('0x3b')](_0x4262d0['query'][_0x0a9e('0x3b')]));_0x2415fe[_0x0a9e('0x3a')]=_0x2415fe[_0x0a9e('0x3a')]['length']?_0x2415fe[_0x0a9e('0x3a')]:_0x399def[_0x0a9e('0x36')];if(!_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x3d')](_0x0a9e('0xcc'))){_0x2415fe['limit']=qs[_0x0a9e('0x15')](_0x4262d0[_0x0a9e('0x38')]['limit']);_0x2415fe[_0x0a9e('0x13')]=qs[_0x0a9e('0x13')](_0x4262d0[_0x0a9e('0x38')]['offset']);}_0x2415fe['order']=qs['sort'](_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x3e')]);_0x2415fe['where']=qs[_0x0a9e('0x3f')](_[_0x0a9e('0x40')](_0x4262d0[_0x0a9e('0x38')],_0x399def['filters']));_0x2415fe[_0x0a9e('0x72')][_0x0a9e('0xcd')]=_0x1d999b['id'];if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x81')]){_0x2415fe[_0x0a9e('0x72')]=_[_0x0a9e('0x9c')](_0x2415fe[_0x0a9e('0x72')],{'$or':_[_0x0a9e('0x37')](_0x2415fe[_0x0a9e('0x3a')],function(_0x5a1848){var _0x43c397={};_0x43c397[_0x5a1848]={'$like':'%'+_0x4262d0['query'][_0x0a9e('0x81')]+'%'};return _0x43c397;})});}if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x77')]){var _0x3cf222=_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x77')]['split'](',');var _0x1a0314={};_0x1a0314[_0x3cf222[0x0]]={'$gte':moment(_0x3cf222[0x1])[_0x0a9e('0xce')](_0x0a9e('0xcf'))};_0x2415fe[_0x0a9e('0x72')]=_['merge'](_0x2415fe[_0x0a9e('0x72')],_0x1a0314);}_0x2415fe=_[_0x0a9e('0x9c')]({},_0x2415fe,_0x4262d0[_0x0a9e('0xc5')]);return db[_0x0a9e('0x29')][_0x0a9e('0x16')]({'where':_0x2415fe[_0x0a9e('0x72')]})[_0x0a9e('0x1a')](function(_0x25931e){_0x98c62c[_0x0a9e('0x16')]=_0x25931e;if(_0x4262d0[_0x0a9e('0x38')]['includeAll']){_0x2415fe[_0x0a9e('0xc4')]=[{'all':!![]}];}return db[_0x0a9e('0x29')][_0x0a9e('0xd0')](_0x2415fe);})[_0x0a9e('0x1a')](function(_0xea8bd1){if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0xd1')]===_0x0a9e('0xd2')){for(var _0x566b90=0x0;_0x566b90<_0xea8bd1[_0x0a9e('0x3c')];_0x566b90++){_0xea8bd1[_0x566b90][_0x0a9e('0xc7')]=juice(_0xea8bd1[_0x566b90][_0x0a9e('0xc7')]);}}_0x98c62c['rows']=_0xea8bd1;return _0x98c62c;});}})[_0x0a9e('0x1a')](respondWithFilteredResult(_0xc876d4,_0x2415fe))[_0x0a9e('0x30')](handleError(_0xc876d4,null));};exports[_0x0a9e('0xd3')]=function(_0x97d5b5,_0x370b5e){return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x97d5b5[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x370b5e,null))[_0x0a9e('0x1a')](function(_0x5a7dad){if(_0x5a7dad){return _0x5a7dad[_0x0a9e('0xd4')](_0x97d5b5[_0x0a9e('0xc7')][_0x0a9e('0xc9')],_[_0x0a9e('0xca')](_0x97d5b5[_0x0a9e('0xc7')],[_0x0a9e('0xc9'),'id'])||{})['spread'](function(){return db[_0x0a9e('0xd5')]['findAll']({'attributes':['id','name','color'],'where':{'id':_0x97d5b5[_0x0a9e('0xc7')][_0x0a9e('0xc9')]}});})[_0x0a9e('0x1a')](function(_0x2a07d0){socket['emit'](_0x0a9e('0xd6'),{'id':Number(_0x97d5b5[_0x0a9e('0xc2')]['id']),'tags':_0x2a07d0||[]});return{'id':Number(_0x97d5b5[_0x0a9e('0xc2')]['id']),'tags':_0x2a07d0||[]};});}})[_0x0a9e('0x1a')](respondWithResult(_0x370b5e,null))[_0x0a9e('0x30')](handleError(_0x370b5e,null));};exports['removeTags']=function(_0x57b1b1,_0x9484c8){return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x57b1b1['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x9484c8,null))[_0x0a9e('0x1a')](function(_0x422f0a){if(_0x422f0a){return _0x422f0a['removeTags'](_0x57b1b1[_0x0a9e('0x38')][_0x0a9e('0xc9')]);}})[_0x0a9e('0x1a')](respondWithStatusCode(_0x9484c8,null))['catch'](handleError(_0x9484c8,null));};exports[_0x0a9e('0xd7')]=function(_0x336b30,_0x3b7213){var _0x549e03=moment()['unix']()['toString']();var _0x3b04fd=path[_0x0a9e('0xd8')](config[_0x0a9e('0xd9')],_0x0a9e('0xda'),'files',_0x0a9e('0xdb'));var _0x532424=path[_0x0a9e('0xd8')](config[_0x0a9e('0xd9')],_0x0a9e('0xda'),'files',_0x0a9e('0xdc'));var _0x33a26c=path[_0x0a9e('0xd8')](_0x3b04fd,_0x549e03);var _0x580dd6=util[_0x0a9e('0xce')]('transcript-%d-%s.zip',_0x336b30[_0x0a9e('0xc2')]['id'],_0x549e03);var _0x5c57e1=path[_0x0a9e('0xd8')](_0x3b04fd,_0x580dd6);var _0x57b7d4=[];if(_0x336b30[_0x0a9e('0x38')][_0x0a9e('0xdc')]){_0x57b7d4[_0x0a9e('0x27')]({'model':db[_0x0a9e('0xdd')],'as':_0x0a9e('0xde'),'raw':!![]});}var _0x251dd9=[{'model':db[_0x0a9e('0x29')],'as':'Messages','attributes':['id',_0x0a9e('0xc7'),_0x0a9e('0x44'),'to','cc','bcc',_0x0a9e('0xdf'),_0x0a9e('0x75')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x57b7d4}];return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x336b30[_0x0a9e('0xc2')]['id']},'include':_0x251dd9})['then'](handleEntityNotFound(_0x3b7213,null))[_0x0a9e('0x1a')](function(_0xf49ed4){if(_0xf49ed4&&_0xf49ed4[_0x0a9e('0xe0')]){var _0x3f0d64=_0xf49ed4[_0x0a9e('0xe1')]({'plain':!![]});fs[_0x0a9e('0xe2')](_0x33a26c);return BPromise[_0x0a9e('0xe3')](_0x3f0d64[_0x0a9e('0xe0')],function(_0x22767f,_0x426c3c){var _0x56e148={'from':_0x22767f[_0x0a9e('0x44')],'to':_0x22767f['to'],'subject':_0x22767f['subject'],'html':_0x22767f[_0x0a9e('0xc7')],'headers':{'Date':moment(_0x22767f[_0x0a9e('0x75')])[_0x0a9e('0xce')](_0x0a9e('0xe4'))},'attachments':[]};if(_0x22767f['cc']){_0x56e148[_0x0a9e('0xe5')]['Cc']=_0x22767f['cc'];}if(_0x22767f[_0x0a9e('0xe6')]){_0x56e148['headers'][_0x0a9e('0xe7')]=_0x22767f[_0x0a9e('0xe6')];}return new BPromise(function(_0x2977a7,_0x55a599){if(_0x22767f[_0x0a9e('0xde')]){for(var _0x402544=0x0;_0x402544<_0x22767f[_0x0a9e('0xde')][_0x0a9e('0x3c')];_0x402544++){var _0x31e1e0=_0x22767f[_0x0a9e('0xde')][_0x402544];var _0x1e93f5=path['join'](_0x532424,_0x31e1e0[_0x0a9e('0xe8')]);if(fs[_0x0a9e('0xe9')](_0x1e93f5)){_0x56e148[_0x0a9e('0xdc')][_0x0a9e('0x27')]({'name':_0x31e1e0[_0x0a9e('0x20')],'contentType':_0x31e1e0[_0x0a9e('0x65')],'data':fs[_0x0a9e('0xea')](_0x1e93f5)});}}}emlformat['build'](_0x56e148,function(_0x5c8720,_0x10aa22){if(_0x5c8720)return _0x55a599(_0x5c8720);fs[_0x0a9e('0xeb')](path[_0x0a9e('0xd8')](_0x33a26c,util[_0x0a9e('0xce')](_0x0a9e('0xec'),_0x426c3c)),_0x10aa22);return _0x2977a7(_0x10aa22);});});})[_0x0a9e('0x1a')](function(){return new BPromise(function(_0x609711,_0x584854){zipdir(_0x33a26c,{'saveTo':_0x5c57e1},function(_0x39ea62,_0x1d7fc4){if(_0x39ea62)return _0x584854(_0x39ea62);return _0x609711(_0x1d7fc4);});})[_0x0a9e('0x1a')](function(){return new BPromise(function(_0x2675a5,_0x1b1757){rimraf(_0x33a26c,function(_0x3c6082){if(_0x3c6082)_0x1b1757(_0x3c6082);return _0x2675a5();});});})[_0x0a9e('0x1a')](function(){return _0x3b7213['download'](_0x5c57e1,_0x580dd6,function(_0x311288){if(!_0x311288)fs[_0x0a9e('0xed')](_0x5c57e1);});});});}else{return _0x3b7213[_0x0a9e('0x1d')](0xc8);}})['catch'](handleError(_0x3b7213,null));};
\ No newline at end of file
index 4e02692..9a11aba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a21=['Users','map','findAll','then','length','emit','catch','hasOwnProperty','exports','setMaxListeners','remove','getUsers','setDataValue'];(function(_0x10d34b,_0x4fef76){var _0x92b0bf=function(_0x16e291){while(--_0x16e291){_0x10d34b['push'](_0x10d34b['shift']());}};_0x92b0bf(++_0x4fef76);}(_0x2a21,0x7e));var _0x12a2=function(_0x30e097,_0xefe2bc){_0x30e097=_0x30e097-0x0;var _0x7c0193=_0x2a21[_0x30e097];return _0x7c0193;};'use strict';var EventEmitter=require('events');var MailInteraction=require('../../mysqldb')['db']['MailInteraction'];var MailMessage=require('../../mysqldb')['db']['MailMessage'];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x12a2('0x0')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x12a2('0x1')};function emitEvent(_0x16dc6f){return function(_0x506120,_0xa52265,_0x24dff0){_0x506120[_0x12a2('0x2')]({'attributes':['id'],'raw':!![]})['then'](function(_0x384466){_0x506120[_0x12a2('0x3')](_0x12a2('0x4'),_0x384466[_0x12a2('0x5')](function(_0x450211){return{'id':_0x450211['id']};}));return MailMessage[_0x12a2('0x6')]({'where':{'MailInteractionId':_0x506120['id'],'direction':'in','read':![]},'raw':!![]});})[_0x12a2('0x7')](function(_0x31d3b6){_0x506120[_0x12a2('0x3')]('unreadMessages',_0x31d3b6[_0x12a2('0x8')]);MailInteractionEvents[_0x12a2('0x9')](_0x16dc6f+':'+_0x506120['id'],_0x506120);MailInteractionEvents[_0x12a2('0x9')](_0x16dc6f,_0x506120);_0x24dff0(null);})[_0x12a2('0xa')](_0x24dff0(null));};}for(var e in events){if(events[_0x12a2('0xb')](e)){var event=events[e];MailInteraction['hook'](e,emitEvent(event));}}module[_0x12a2('0xc')]=MailInteractionEvents;
\ No newline at end of file
+var _0x8bc3=['unreadMessages','length','emit','catch','events','MailInteraction','MailMessage','setMaxListeners','update','remove','getUsers','then','setDataValue','findAll'];(function(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0x8bc3,0x82));var _0x38bc=function(_0x2e8a6e,_0x18e64f){_0x2e8a6e=_0x2e8a6e-0x0;var _0x259829=_0x8bc3[_0x2e8a6e];return _0x259829;};'use strict';var EventEmitter=require(_0x38bc('0x0'));var MailInteraction=require('../../mysqldb')['db'][_0x38bc('0x1')];var MailMessage=require('../../mysqldb')['db'][_0x38bc('0x2')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x38bc('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x38bc('0x4'),'afterDestroy':_0x38bc('0x5')};function emitEvent(_0x20d785){return function(_0x265fd7,_0x4a646b,_0x29ac4e){_0x265fd7[_0x38bc('0x6')]({'attributes':['id'],'raw':!![]})[_0x38bc('0x7')](function(_0x214b39){_0x265fd7[_0x38bc('0x8')]('Users',_0x214b39['map'](function(_0x131199){return{'id':_0x131199['id']};}));return MailMessage[_0x38bc('0x9')]({'where':{'MailInteractionId':_0x265fd7['id'],'direction':'in','read':![]},'raw':!![]});})[_0x38bc('0x7')](function(_0x35ca89){_0x265fd7[_0x38bc('0x8')](_0x38bc('0xa'),_0x35ca89[_0x38bc('0xb')]);MailInteractionEvents[_0x38bc('0xc')](_0x20d785+':'+_0x265fd7['id'],_0x265fd7);MailInteractionEvents[_0x38bc('0xc')](_0x20d785,_0x265fd7);_0x29ac4e(null);})[_0x38bc('0xd')](_0x29ac4e(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailInteraction['hook'](e,emitEvent(event));}}module['exports']=MailInteractionEvents;
\ No newline at end of file
index a7f2b66..6f3503e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d4a=['../../config/environment','./mailInteraction.attributes','define','MailInteraction','fti_mail_interactions','subject','FULLTEXT','substatus','substatusAt','format','closed','changed','YYYY-MM-DD\x20HH:mm:ss','closedAt','models','get','MailMessage','then','utf8mb4','utf8mb4_unicode_ci','lodash','bluebird','request-promise','path'];(function(_0x10004e,_0xd701e6){var _0x5af990=function(_0x4bab6a){while(--_0x4bab6a){_0x10004e['push'](_0x10004e['shift']());}};_0x5af990(++_0xd701e6);}(_0x4d4a,0x1dc));var _0xa4d4=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x4d4a[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0xa4d4('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xa4d4('0x1'));var rp=require(_0xa4d4('0x2'));var fs=require('fs');var path=require(_0xa4d4('0x3'));var rimraf=require('rimraf');var config=require(_0xa4d4('0x4'));var attributes=require(_0xa4d4('0x5'));module['exports']=function(_0x167e25,_0x204780){return _0x167e25[_0xa4d4('0x6')](_0xa4d4('0x7'),attributes,{'tableName':'mail_interactions','paranoid':![],'indexes':[{'name':_0xa4d4('0x8'),'fields':[_0xa4d4('0x9'),'to'],'type':_0xa4d4('0xa')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x1a47f9,_0x51996c,_0x38b9f4){if(_0x1a47f9[_0xa4d4('0xb')]){_0x1a47f9[_0xa4d4('0xc')]=moment()[_0xa4d4('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x1a47f9[_0xa4d4('0xe')]){_0x1a47f9['closedAt']=moment()[_0xa4d4('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}_0x38b9f4(null,_0x51996c);},'beforeUpdate':function(_0x4cc428,_0x1e0ece,_0x126e48){if(_0x4cc428[_0xa4d4('0xf')](_0xa4d4('0xb'))){_0x4cc428['substatusAt']=_0x4cc428[_0xa4d4('0xb')]?moment()[_0xa4d4('0xd')](_0xa4d4('0x10')):null;}if(_0x4cc428['changed'](_0xa4d4('0xe'))){_0x4cc428[_0xa4d4('0x11')]=moment()[_0xa4d4('0xd')]('YYYY-MM-DD\x20HH:mm:ss');_0x4cc428['substatus']=null;_0x4cc428['substatusAt']=null;}_0x126e48(null,_0x4cc428);},'afterUpdate':function(_0x29cecf,_0x28f0fb,_0x33a81c){var _0x1d411e=_0x167e25[_0xa4d4('0x12')];var _0x301f31=_0x29cecf[_0xa4d4('0x13')]({'plain':!![]});if(_0x301f31[_0xa4d4('0xe')]){return _0x1d411e[_0xa4d4('0x14')]['update']({'read':!![]},{'where':{'MailInteractionId':_0x301f31['id']}})[_0xa4d4('0x15')](function(){_0x33a81c();})['catch'](function(_0x1b935b){_0x33a81c(_0x1b935b);});}else{_0x33a81c();}}},'charset':_0xa4d4('0x16'),'collate':_0xa4d4('0x17')});};
\ No newline at end of file
+var _0xf9e5=['exports','define','MailInteraction','mail_interactions','fti_mail_interactions','subject','FULLTEXT','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closed','changed','substatus','closedAt','models','MailMessage','then','catch','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x4be4bb,_0x294060){var _0x288771=function(_0x5bdf98){while(--_0x5bdf98){_0x4be4bb['push'](_0x4be4bb['shift']());}};_0x288771(++_0x294060);}(_0xf9e5,0x119));var _0x5f9e=function(_0x2a4c62,_0x4ccb78){_0x2a4c62=_0x2a4c62-0x0;var _0x361b16=_0xf9e5[_0x2a4c62];return _0x361b16;};'use strict';var _=require(_0x5f9e('0x0'));var util=require(_0x5f9e('0x1'));var logger=require(_0x5f9e('0x2'))(_0x5f9e('0x3'));var moment=require(_0x5f9e('0x4'));var BPromise=require(_0x5f9e('0x5'));var rp=require(_0x5f9e('0x6'));var fs=require('fs');var path=require(_0x5f9e('0x7'));var rimraf=require(_0x5f9e('0x8'));var config=require('../../config/environment');var attributes=require('./mailInteraction.attributes');module[_0x5f9e('0x9')]=function(_0x348294,_0x16965a){return _0x348294[_0x5f9e('0xa')](_0x5f9e('0xb'),attributes,{'tableName':_0x5f9e('0xc'),'paranoid':![],'indexes':[{'name':_0x5f9e('0xd'),'fields':[_0x5f9e('0xe'),'to'],'type':_0x5f9e('0xf')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x20bee3,_0x550a07,_0x216834){if(_0x20bee3['substatus']){_0x20bee3[_0x5f9e('0x10')]=moment()[_0x5f9e('0x11')](_0x5f9e('0x12'));}if(_0x20bee3[_0x5f9e('0x13')]){_0x20bee3['closedAt']=moment()[_0x5f9e('0x11')](_0x5f9e('0x12'));}_0x216834(null,_0x550a07);},'beforeUpdate':function(_0x36981d,_0x1e5e87,_0x58e385){if(_0x36981d[_0x5f9e('0x14')](_0x5f9e('0x15'))){_0x36981d[_0x5f9e('0x10')]=_0x36981d[_0x5f9e('0x15')]?moment()[_0x5f9e('0x11')](_0x5f9e('0x12')):null;}if(_0x36981d[_0x5f9e('0x14')]('closed')){_0x36981d[_0x5f9e('0x16')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x36981d[_0x5f9e('0x15')]=null;_0x36981d['substatusAt']=null;}_0x58e385(null,_0x36981d);},'afterUpdate':function(_0x26dcfa,_0x381620,_0x1da19b){var _0x509587=_0x348294[_0x5f9e('0x17')];var _0x1553d9=_0x26dcfa['get']({'plain':!![]});if(_0x1553d9['closed']){return _0x509587[_0x5f9e('0x18')]['update']({'read':!![]},{'where':{'MailInteractionId':_0x1553d9['id']}})[_0x5f9e('0x19')](function(){_0x1da19b();})[_0x5f9e('0x1a')](function(_0x4018ae){_0x1da19b(_0x4018ae);});}else{_0x1da19b();}}},'charset':_0x5f9e('0x1b'),'collate':_0x5f9e('0x1c')});};
\ No newline at end of file
index 949c0f2..a634347 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e2e=['AddTagsToMailInteraction','MailInteraction','addTags','ids','spread','AddTags','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','http','redis','defaults','localhost','./mailInteraction.socket','register','request','then','debug','stringify','error','code','message','info','MailInteraction,\x20%s,\x20%s','request\x20sent','catch','update','body','options','raw','where','UpdateMailInteraction'];(function(_0x3358ba,_0x24c5fc){var _0x296e73=function(_0x843ff3){while(--_0x843ff3){_0x3358ba['push'](_0x3358ba['shift']());}};_0x296e73(++_0x24c5fc);}(_0x4e2e,0x1a8));var _0xe4e2=function(_0x2fe9ea,_0x201468){_0x2fe9ea=_0x2fe9ea-0x0;var _0x4a135f=_0x4e2e[_0x2fe9ea];return _0x4a135f;};'use strict';var _=require(_0xe4e2('0x0'));var util=require(_0xe4e2('0x1'));var moment=require('moment');var BPromise=require(_0xe4e2('0x2'));var rs=require(_0xe4e2('0x3'));var fs=require('fs');var Redis=require(_0xe4e2('0x4'));var db=require(_0xe4e2('0x5'))['db'];var utils=require(_0xe4e2('0x6'));var logger=require('../../config/logger')(_0xe4e2('0x7'));var config=require(_0xe4e2('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xe4e2('0x9')]({'port':0x232a});config[_0xe4e2('0xa')]=_[_0xe4e2('0xb')](config['redis'],{'host':_0xe4e2('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe4e2('0xa')]));require(_0xe4e2('0xd'))[_0xe4e2('0xe')](socket);function respondWithRpcPromise(_0x5d83c8,_0x1bf9ae,_0x42badb){return new BPromise(function(_0x23f539,_0x4648cf){return client[_0xe4e2('0xf')](_0x5d83c8,_0x42badb)[_0xe4e2('0x10')](function(_0x37a1e0){logger['info']('MailInteraction,\x20%s,\x20%s',_0x1bf9ae,'request\x20sent');logger[_0xe4e2('0x11')]('MailInteraction,\x20%s,\x20%s,\x20%s',_0x1bf9ae,'request\x20sent',JSON[_0xe4e2('0x12')](_0x37a1e0));if(_0x37a1e0[_0xe4e2('0x13')]){if(_0x37a1e0[_0xe4e2('0x13')][_0xe4e2('0x14')]===0x1f4){logger['error']('MailInteraction,\x20%s,\x20%s',_0x1bf9ae,_0x37a1e0[_0xe4e2('0x13')][_0xe4e2('0x15')]);return _0x4648cf(_0x37a1e0[_0xe4e2('0x13')][_0xe4e2('0x15')]);}logger[_0xe4e2('0x13')]('MailInteraction,\x20%s,\x20%s',_0x1bf9ae,_0x37a1e0[_0xe4e2('0x13')][_0xe4e2('0x15')]);return _0x23f539(_0x37a1e0[_0xe4e2('0x13')][_0xe4e2('0x15')]);}else{logger[_0xe4e2('0x16')](_0xe4e2('0x17'),_0x1bf9ae,_0xe4e2('0x18'));_0x23f539(_0x37a1e0['result'][_0xe4e2('0x15')]);}})[_0xe4e2('0x19')](function(_0x229967){logger['error']('MailInteraction,\x20%s,\x20%s',_0x1bf9ae,_0x229967);_0x4648cf(_0x229967);});});}exports['UpdateMailInteraction']=function(_0x21513a){var _0x16254d=this;return new Promise(function(_0x46786e,_0x4665df){return db['MailInteraction'][_0xe4e2('0x1a')](_0x21513a[_0xe4e2('0x1b')],{'raw':_0x21513a['options']?_0x21513a[_0xe4e2('0x1c')][_0xe4e2('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x21513a['options']?_0x21513a['options'][_0xe4e2('0x1e')]||null:null,'attributes':_0x21513a['options']?_0x21513a[_0xe4e2('0x1c')]['attributes']||null:null,'limit':_0x21513a[_0xe4e2('0x1c')]?_0x21513a['options']['limit']||null:null})[_0xe4e2('0x10')](function(_0x2e0620){logger[_0xe4e2('0x16')](_0xe4e2('0x1f'),_0x21513a);logger[_0xe4e2('0x11')](_0xe4e2('0x1f'),_0x21513a,JSON[_0xe4e2('0x12')](_0x2e0620));_0x46786e(_0x2e0620);})[_0xe4e2('0x19')](function(_0x1fe4b2){logger['error'](_0xe4e2('0x1f'),_0x1fe4b2[_0xe4e2('0x15')],_0x21513a);_0x4665df(_0x16254d[_0xe4e2('0x13')](0x1f4,_0x1fe4b2['message']));});});};exports[_0xe4e2('0x20')]=function(_0x20561d){return new Promise(function(_0x15f450,_0x1fc322){return db[_0xe4e2('0x21')]['find']({'where':_0x20561d[_0xe4e2('0x1c')]?_0x20561d[_0xe4e2('0x1c')][_0xe4e2('0x1e')]||null:null})[_0xe4e2('0x10')](function(_0x57f3ad){if(_0x57f3ad){return _0x57f3ad[_0xe4e2('0x22')](_0x20561d[_0xe4e2('0x1b')][_0xe4e2('0x23')],_['omit'](_0x20561d[_0xe4e2('0x1b')],[_0xe4e2('0x23'),'id'])||{});}})[_0xe4e2('0x24')](function(_0x81bc91){logger[_0xe4e2('0x16')](_0xe4e2('0x25'),_0x20561d);logger[_0xe4e2('0x11')](_0xe4e2('0x25'),_0x20561d,JSON['stringify'](_0x81bc91));_0x15f450(_0x81bc91);})[_0xe4e2('0x19')](function(_0x447911){logger['error']('AddTags',_0x447911[_0xe4e2('0x15')],_0x20561d);_0x1fc322(_this[_0xe4e2('0x13')](0x1f4,_0x447911[_0xe4e2('0x15')]));});});};
\ No newline at end of file
+var _0xd047=['client','http','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','register','request','info','MailInteraction,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','MailInteraction','options','raw','where','attributes','limit','then','UpdateMailInteraction','catch','find','addTags','omit','ids','spread','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd047,0x77));var _0x7d04=function(_0x2541a6,_0x4cbcf4){_0x2541a6=_0x2541a6-0x0;var _0x34c215=_0xd047[_0x2541a6];return _0x34c215;};'use strict';var _=require(_0x7d04('0x0'));var util=require('util');var moment=require(_0x7d04('0x1'));var BPromise=require(_0x7d04('0x2'));var rs=require(_0x7d04('0x3'));var fs=require('fs');var Redis=require(_0x7d04('0x4'));var db=require(_0x7d04('0x5'))['db'];var utils=require(_0x7d04('0x6'));var logger=require(_0x7d04('0x7'))(_0x7d04('0x8'));var config=require(_0x7d04('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x7d04('0xa')][_0x7d04('0xb')]({'port':0x232a});config[_0x7d04('0xc')]=_[_0x7d04('0xd')](config[_0x7d04('0xc')],{'host':_0x7d04('0xe'),'port':0x18eb});var socket=require(_0x7d04('0xf'))(new Redis(config[_0x7d04('0xc')]));require(_0x7d04('0x10'))[_0x7d04('0x11')](socket);function respondWithRpcPromise(_0x1b8789,_0x2da292,_0x3969d4){return new BPromise(function(_0x439ad8,_0x2db7a4){return client[_0x7d04('0x12')](_0x1b8789,_0x3969d4)['then'](function(_0x3e8298){logger[_0x7d04('0x13')](_0x7d04('0x14'),_0x2da292,'request\x20sent');logger[_0x7d04('0x15')]('MailInteraction,\x20%s,\x20%s,\x20%s',_0x2da292,_0x7d04('0x16'),JSON[_0x7d04('0x17')](_0x3e8298));if(_0x3e8298[_0x7d04('0x18')]){if(_0x3e8298['error'][_0x7d04('0x19')]===0x1f4){logger[_0x7d04('0x18')](_0x7d04('0x14'),_0x2da292,_0x3e8298['error'][_0x7d04('0x1a')]);return _0x2db7a4(_0x3e8298[_0x7d04('0x18')][_0x7d04('0x1a')]);}logger['error']('MailInteraction,\x20%s,\x20%s',_0x2da292,_0x3e8298['error'][_0x7d04('0x1a')]);return _0x439ad8(_0x3e8298[_0x7d04('0x18')][_0x7d04('0x1a')]);}else{logger[_0x7d04('0x13')](_0x7d04('0x14'),_0x2da292,_0x7d04('0x16'));_0x439ad8(_0x3e8298[_0x7d04('0x1b')][_0x7d04('0x1a')]);}})['catch'](function(_0x58ffc3){logger[_0x7d04('0x18')]('MailInteraction,\x20%s,\x20%s',_0x2da292,_0x58ffc3);_0x2db7a4(_0x58ffc3);});});}exports['UpdateMailInteraction']=function(_0xe98dde){var _0x2111ad=this;return new Promise(function(_0x4f3e2d,_0x5aee3c){return db[_0x7d04('0x1c')]['update'](_0xe98dde['body'],{'raw':_0xe98dde[_0x7d04('0x1d')]?_0xe98dde['options'][_0x7d04('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xe98dde[_0x7d04('0x1d')]?_0xe98dde['options'][_0x7d04('0x1f')]||null:null,'attributes':_0xe98dde[_0x7d04('0x1d')]?_0xe98dde[_0x7d04('0x1d')][_0x7d04('0x20')]||null:null,'limit':_0xe98dde['options']?_0xe98dde[_0x7d04('0x1d')][_0x7d04('0x21')]||null:null})[_0x7d04('0x22')](function(_0x1678eb){logger[_0x7d04('0x13')](_0x7d04('0x23'),_0xe98dde);logger['debug'](_0x7d04('0x23'),_0xe98dde,JSON['stringify'](_0x1678eb));_0x4f3e2d(_0x1678eb);})[_0x7d04('0x24')](function(_0x1f3860){logger[_0x7d04('0x18')](_0x7d04('0x23'),_0x1f3860[_0x7d04('0x1a')],_0xe98dde);_0x5aee3c(_0x2111ad[_0x7d04('0x18')](0x1f4,_0x1f3860['message']));});});};exports['AddTagsToMailInteraction']=function(_0x4483cc){return new Promise(function(_0x33c7e8,_0x21b835){return db[_0x7d04('0x1c')][_0x7d04('0x25')]({'where':_0x4483cc['options']?_0x4483cc[_0x7d04('0x1d')][_0x7d04('0x1f')]||null:null})[_0x7d04('0x22')](function(_0x40c9fc){if(_0x40c9fc){return _0x40c9fc[_0x7d04('0x26')](_0x4483cc['body']['ids'],_[_0x7d04('0x27')](_0x4483cc['body'],[_0x7d04('0x28'),'id'])||{});}})[_0x7d04('0x29')](function(_0x29be7b){logger[_0x7d04('0x13')](_0x7d04('0x2a'),_0x4483cc);logger[_0x7d04('0x15')](_0x7d04('0x2a'),_0x4483cc,JSON[_0x7d04('0x17')](_0x29be7b));_0x33c7e8(_0x29be7b);})['catch'](function(_0x120a1a){logger[_0x7d04('0x18')](_0x7d04('0x2a'),_0x120a1a[_0x7d04('0x1a')],_0x4483cc);_0x21b835(_this[_0x7d04('0x18')](0x1f4,_0x120a1a[_0x7d04('0x1a')]));});});};
\ No newline at end of file
index 7f6d094..ff25cd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x821f=['removeListener','length','mailInteraction:','./mailInteraction.events','remove','update','emit'];(function(_0x2de0a7,_0x38d3e7){var _0x429437=function(_0x23c148){while(--_0x23c148){_0x2de0a7['push'](_0x2de0a7['shift']());}};_0x429437(++_0x38d3e7);}(_0x821f,0x11b));var _0xf821=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x821f[_0x13d07a];return _0x5ee0ee;};'use strict';var MailInteractionEvents=require(_0xf821('0x0'));var events=['save',_0xf821('0x1'),_0xf821('0x2')];function createListener(_0x5bccc0,_0x80144){return function(_0x353895){_0x80144[_0xf821('0x3')](_0x5bccc0,_0x353895);};}function removeListener(_0xbfb77f,_0x908748){return function(){MailInteractionEvents[_0xf821('0x4')](_0xbfb77f,_0x908748);};}exports['register']=function(_0x4f561c){for(var _0x2c3f4f=0x0,_0x403475=events[_0xf821('0x5')];_0x2c3f4f<_0x403475;_0x2c3f4f++){var _0x28d86b=events[_0x2c3f4f];var _0x147c84=createListener(_0xf821('0x6')+_0x28d86b,_0x4f561c);MailInteractionEvents['on'](_0x28d86b,_0x147c84);}};
\ No newline at end of file
+var _0xb3d5=['save','update','removeListener','register','mailInteraction:','./mailInteraction.events'];(function(_0x186945,_0xf6aa17){var _0x31c8e1=function(_0xb2b171){while(--_0xb2b171){_0x186945['push'](_0x186945['shift']());}};_0x31c8e1(++_0xf6aa17);}(_0xb3d5,0xe9));var _0x5b3d=function(_0x12c9aa,_0x1ce89b){_0x12c9aa=_0x12c9aa-0x0;var _0x1b0043=_0xb3d5[_0x12c9aa];return _0x1b0043;};'use strict';var MailInteractionEvents=require(_0x5b3d('0x0'));var events=[_0x5b3d('0x1'),'remove',_0x5b3d('0x2')];function createListener(_0x1775dd,_0x4f382d){return function(_0x4a7d70){_0x4f382d['emit'](_0x1775dd,_0x4a7d70);};}function removeListener(_0x268ca4,_0x274f4a){return function(){MailInteractionEvents[_0x5b3d('0x3')](_0x268ca4,_0x274f4a);};}exports[_0x5b3d('0x4')]=function(_0x59e967){for(var _0x1b7b4a=0x0,_0x29ef8e=events['length'];_0x1b7b4a<_0x29ef8e;_0x1b7b4a++){var _0x266c3e=events[_0x1b7b4a];var _0x1c0a55=createListener(_0x5b3d('0x5')+_0x266c3e,_0x59e967);MailInteractionEvents['on'](_0x266c3e,_0x1c0a55);}};
\ No newline at end of file
index 86daad2..7fb5e15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31ff=['show','/:id/download','tracked','mail','mailmessage:create','create','put','update','accept','delete','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./mailMessage.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x367e5b,_0x5721e4){var _0x4b909e=function(_0x22c6a4){while(--_0x22c6a4){_0x367e5b['push'](_0x367e5b['shift']());}};_0x4b909e(++_0x5721e4);}(_0x31ff,0xd3));var _0xf31f=function(_0x1b6c7c,_0x44c2e0){_0x1b6c7c=_0x1b6c7c-0x0;var _0x2446ad=_0x31ff[_0x1b6c7c];return _0x2446ad;};'use strict';var multer=require(_0xf31f('0x0'));var util=require(_0xf31f('0x1'));var path=require(_0xf31f('0x2'));var timeout=require(_0xf31f('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf31f('0x4'));var auth=require(_0xf31f('0x5'));var interaction=require(_0xf31f('0x6'));var config=require('../../config/environment');var controller=require(_0xf31f('0x7'));router[_0xf31f('0x8')]('/',auth[_0xf31f('0x9')](),controller[_0xf31f('0xa')]);router[_0xf31f('0x8')](_0xf31f('0xb'),auth[_0xf31f('0x9')](),controller[_0xf31f('0xc')]);router[_0xf31f('0x8')](_0xf31f('0xd'),auth[_0xf31f('0x9')](),controller[_0xf31f('0xe')]);router[_0xf31f('0x8')](_0xf31f('0xf'),auth[_0xf31f('0x9')](),controller['download']);router['post']('/',auth[_0xf31f('0x9')](),interaction[_0xf31f('0x10')](_0xf31f('0x11'),_0xf31f('0x12')),controller[_0xf31f('0x13')]);router[_0xf31f('0x14')]('/:id',auth[_0xf31f('0x9')](),controller[_0xf31f('0x15')]);router[_0xf31f('0x14')]('/:id/accept',auth[_0xf31f('0x9')](),controller[_0xf31f('0x16')]);router['put']('/:id/reject',auth['isAuthenticated'](),controller['reject']);router[_0xf31f('0x17')](_0xf31f('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0xf31f('0x18')]=router;
\ No newline at end of file
+var _0x950a=['express','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/download','download','post','tracked','mail','mailmessage:create','create','put','/:id/accept','delete','destroy','multer','util','path'];(function(_0x191b49,_0x32feb2){var _0x1a1209=function(_0x8ce89b){while(--_0x8ce89b){_0x191b49['push'](_0x191b49['shift']());}};_0x1a1209(++_0x32feb2);}(_0x950a,0x174));var _0xa950=function(_0x4a0e80,_0x4fecee){_0x4a0e80=_0x4a0e80-0x0;var _0x453b30=_0x950a[_0x4a0e80];return _0x453b30;};'use strict';var multer=require(_0xa950('0x0'));var util=require(_0xa950('0x1'));var path=require(_0xa950('0x2'));var timeout=require('connect-timeout');var express=require(_0xa950('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xa950('0x4'));var interaction=require(_0xa950('0x5'));var config=require(_0xa950('0x6'));var controller=require(_0xa950('0x7'));router[_0xa950('0x8')]('/',auth[_0xa950('0x9')](),controller[_0xa950('0xa')]);router['get'](_0xa950('0xb'),auth[_0xa950('0x9')](),controller[_0xa950('0xc')]);router[_0xa950('0x8')](_0xa950('0xd'),auth['isAuthenticated'](),controller['show']);router['get'](_0xa950('0xe'),auth[_0xa950('0x9')](),controller[_0xa950('0xf')]);router[_0xa950('0x10')]('/',auth[_0xa950('0x9')](),interaction[_0xa950('0x11')](_0xa950('0x12'),_0xa950('0x13')),controller[_0xa950('0x14')]);router[_0xa950('0x15')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xa950('0x15')](_0xa950('0x16'),auth[_0xa950('0x9')](),controller['accept']);router[_0xa950('0x15')]('/:id/reject',auth[_0xa950('0x9')](),controller['reject']);router[_0xa950('0x17')](_0xa950('0xd'),auth[_0xa950('0x9')](),controller[_0xa950('0x18')]);module['exports']=router;
\ No newline at end of file
index 1663635..1048eea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc393=['TEXT','long','medium','out','STRING','INTEGER','BOOLEAN','ENUM','Email','sequelize','exports'];(function(_0x9d1b6e,_0x3bd003){var _0x53fc5f=function(_0x2424b8){while(--_0x2424b8){_0x9d1b6e['push'](_0x9d1b6e['shift']());}};_0x53fc5f(++_0x3bd003);}(_0xc393,0xb9));var _0x3c39=function(_0x2c44aa,_0x2fd67f){_0x2c44aa=_0x2c44aa-0x0;var _0xa104f8=_0xc393[_0x2c44aa];return _0xa104f8;};'use strict';var Sequelize=require(_0x3c39('0x0'));var _=require('lodash');module[_0x3c39('0x1')]={'body':{'type':Sequelize[_0x3c39('0x2')](_0x3c39('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x3c39('0x2')](_0x3c39('0x4'))},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x3c39('0x5')),'defaultValue':_0x3c39('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x3c39('0x6')](0x1fe)},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0x3c39('0x2')](_0x3c39('0x3'))},'cc':{'type':Sequelize[_0x3c39('0x2')](_0x3c39('0x3'))},'bcc':{'type':Sequelize[_0x3c39('0x2')](_0x3c39('0x3'))},'subject':{'type':Sequelize[_0x3c39('0x2')]},'sentAt':{'type':Sequelize['DATE']},'attach':{'type':Sequelize[_0x3c39('0x7')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x3c39('0x8')],'defaultValue':![]},'readAt':{'type':Sequelize['DATE']},'originTo':{'type':Sequelize[_0x3c39('0x2')](_0x3c39('0x3'))},'originCc':{'type':Sequelize[_0x3c39('0x2')]('long')},'originChannel':{'type':Sequelize[_0x3c39('0x9')](_0x3c39('0xa'),'Chat'),'defaultValue':_0x3c39('0xa'),'allowNull':![]}};
\ No newline at end of file
+var _0xf39c=['out','STRING','long','DATE','Email','sequelize','lodash','exports','TEXT','medium','BOOLEAN','ENUM'];(function(_0x396e2f,_0x4a5e7d){var _0x40f790=function(_0x2587f7){while(--_0x2587f7){_0x396e2f['push'](_0x396e2f['shift']());}};_0x40f790(++_0x4a5e7d);}(_0xf39c,0x19d));var _0xcf39=function(_0x114c57,_0x407fda){_0x114c57=_0x114c57-0x0;var _0x4585a3=_0xf39c[_0x114c57];return _0x4585a3;};'use strict';var Sequelize=require(_0xcf39('0x0'));var _=require(_0xcf39('0x1'));module[_0xcf39('0x2')]={'body':{'type':Sequelize['TEXT']('long'),'allowNull':![]},'plainBody':{'type':Sequelize[_0xcf39('0x3')](_0xcf39('0x4'))},'read':{'type':Sequelize[_0xcf39('0x5')],'defaultValue':![]},'direction':{'type':Sequelize[_0xcf39('0x6')]('in',_0xcf39('0x7')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0xcf39('0x8')](0x1fe)},'from':{'type':Sequelize[_0xcf39('0x8')]},'to':{'type':Sequelize['TEXT'](_0xcf39('0x9'))},'cc':{'type':Sequelize[_0xcf39('0x3')](_0xcf39('0x9'))},'bcc':{'type':Sequelize[_0xcf39('0x3')]('long')},'subject':{'type':Sequelize[_0xcf39('0x3')]},'sentAt':{'type':Sequelize[_0xcf39('0xa')]},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'readAt':{'type':Sequelize[_0xcf39('0xa')]},'originTo':{'type':Sequelize[_0xcf39('0x3')](_0xcf39('0x9'))},'originCc':{'type':Sequelize[_0xcf39('0x3')](_0xcf39('0x9'))},'originChannel':{'type':Sequelize[_0xcf39('0x6')]('Email','Chat'),'defaultValue':_0xcf39('0xb'),'allowNull':![]}};
\ No newline at end of file
index fac3788..5433972 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cb3=['includeAll','include','rows','params','find','body','destroy','describe','direction','out','secret','split','MailAccount','CmList','List','CmContact','Contacts','updatedAt','DESC','MailServerOut','Smtp','isNil','host','port','secure','authentication','pass','service','auth','user','attachments','join','server/files/attachments','defaults','ListId','List\x20not\x20found','SendMail','sendMail','messageId','YYYY-MM-DD\x20HH:mm:ss','mail','read','readAt','format','UserId','get','MailInteraction','MailInteractionId','read1stAt','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','ContactId','sequelize','Sequelize','contact','agent','fullname','internal','manual','channel','motionChannel','event','accept','fromString','EventManager','acceptmessage','reject','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','QueryTypes','SELECT','User','email','rejectmessage','download','unix','toString','root','server','files','tmp','message-%s.eml','from','bcc','createdAt','Attachment','Attachments','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','existsSync','push','build','writeFileSync','unlinkSync','eml-format','moment','bluebird','util','path','lodash','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','redis','localhost','register','jayson/promise','client','http','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','json','offset','undefined','count','limit','status','set','Content-Range','update','end','stack','name','send','index','MailMessage','rawAttributes','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','merge','map','filter','options'];(function(_0x5a3785,_0x2de636){var _0x4d058a=function(_0x2852fc){while(--_0x2852fc){_0x5a3785['push'](_0x5a3785['shift']());}};_0x4d058a(++_0x2de636);}(_0x6cb3,0x1a4));var _0x36cb=function(_0x26154f,_0x554760){_0x26154f=_0x26154f-0x0;var _0x542270=_0x6cb3[_0x26154f];return _0x542270;};'use strict';var emlformat=require(_0x36cb('0x0'));var moment=require(_0x36cb('0x1'));var BPromise=require(_0x36cb('0x2'));var util=require(_0x36cb('0x3'));var path=require(_0x36cb('0x4'));var fs=require('fs');var _=require(_0x36cb('0x5'));var Redis=require(_0x36cb('0x6'));var htmlToText=require('html-to-text');var qs=require(_0x36cb('0x7'));var logger=require(_0x36cb('0x8'))('api');var interaction_log=require(_0x36cb('0x8'))('mail-interactions');var config=require(_0x36cb('0x9'));var db=require(_0x36cb('0xa'))['db'];config[_0x36cb('0xb')]=_['defaults'](config[_0x36cb('0xb')],{'host':_0x36cb('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./mailMessage.socket')[_0x36cb('0xd')](socket);var jayson=require(_0x36cb('0xe'));var client=jayson[_0x36cb('0xf')][_0x36cb('0x10')]({'port':0x232c});var client9003=jayson[_0x36cb('0xf')][_0x36cb('0x10')]({'port':0x232b});var client9002=jayson[_0x36cb('0xf')]['http']({'port':0x232a});function respondWithRpcPromise(_0x337068,_0x528ad6,_0x4d3ec0,_0x4ae424){return new BPromise(function(_0x14cb79,_0x5eb4bd){var _0x57ffb6=_0x4ae424||client;return _0x57ffb6[_0x36cb('0x11')](_0x337068,_0x4d3ec0)[_0x36cb('0x12')](function(_0x2d6485){logger[_0x36cb('0x13')](_0x36cb('0x14'),_0x528ad6,_0x36cb('0x15'));logger[_0x36cb('0x16')](_0x36cb('0x17'),_0x528ad6,_0x36cb('0x15'),JSON[_0x36cb('0x18')](_0x2d6485));if(_0x2d6485['error']){if(_0x2d6485[_0x36cb('0x19')][_0x36cb('0x1a')]===0x1f4){logger[_0x36cb('0x19')](_0x36cb('0x14'),_0x528ad6,_0x2d6485['error'][_0x36cb('0x1b')]);return _0x5eb4bd(_0x2d6485[_0x36cb('0x19')][_0x36cb('0x1b')]);}logger[_0x36cb('0x19')](_0x36cb('0x14'),_0x528ad6,_0x2d6485[_0x36cb('0x19')][_0x36cb('0x1b')]);return _0x14cb79(_0x2d6485[_0x36cb('0x19')][_0x36cb('0x1b')]);}else{logger[_0x36cb('0x13')](_0x36cb('0x14'),_0x528ad6,_0x36cb('0x15'));_0x14cb79(_0x2d6485['result'][_0x36cb('0x1b')]);}})[_0x36cb('0x1c')](function(_0x14edf6){logger[_0x36cb('0x19')]('MailMessage,\x20%s,\x20%s',_0x528ad6,_0x14edf6);_0x5eb4bd(_0x14edf6);});});}function respondWithResult(_0x2f609d,_0x545026){_0x545026=_0x545026||0xc8;return function(_0x3a84e6){if(_0x3a84e6){return _0x2f609d['status'](_0x545026)[_0x36cb('0x1d')](_0x3a84e6);}};}function respondWithFilteredResult(_0x52706a,_0x4f4bff){return function(_0x48d158){if(_0x48d158){var _0x52f81d=typeof _0x4f4bff[_0x36cb('0x1e')]===_0x36cb('0x1f')&&typeof _0x4f4bff['limit']==='undefined';var _0x133b36=_0x48d158[_0x36cb('0x20')];var _0x112a7e=_0x52f81d?0x0:_0x4f4bff[_0x36cb('0x1e')];var _0x292f67=_0x52f81d?_0x48d158[_0x36cb('0x20')]:_0x4f4bff[_0x36cb('0x1e')]+_0x4f4bff[_0x36cb('0x21')];var _0x14f23e;if(_0x292f67>=_0x133b36){_0x292f67=_0x133b36;_0x14f23e=0xc8;}else{_0x14f23e=0xce;}_0x52706a[_0x36cb('0x22')](_0x14f23e);return _0x52706a[_0x36cb('0x23')](_0x36cb('0x24'),_0x112a7e+'-'+_0x292f67+'/'+_0x133b36)[_0x36cb('0x1d')](_0x48d158);}return null;};}function saveUpdates(_0x189aa2){return function(_0x7b5cee){if(_0x7b5cee){return _0x7b5cee[_0x36cb('0x25')](_0x189aa2)[_0x36cb('0x12')](function(_0x4d5a1d){return _0x4d5a1d;});}return null;};}function removeEntity(_0x377216){return function(_0x147b60){if(_0x147b60){return _0x147b60['destroy']()['then'](function(){_0x377216[_0x36cb('0x22')](0xcc)[_0x36cb('0x26')]();});}};}function handleEntityNotFound(_0x3c7d87){return function(_0x9abfee){if(!_0x9abfee){_0x3c7d87['sendStatus'](0x194);}return _0x9abfee;};}function handleError(_0x2de4ee,_0x1db63c){_0x1db63c=_0x1db63c||0x1f4;return function(_0x4ebe47){logger[_0x36cb('0x19')](_0x4ebe47[_0x36cb('0x27')]);if(_0x4ebe47[_0x36cb('0x28')]){delete _0x4ebe47[_0x36cb('0x28')];}_0x2de4ee[_0x36cb('0x22')](_0x1db63c)[_0x36cb('0x29')](_0x4ebe47);};}exports[_0x36cb('0x2a')]=function(_0x4bd2f3,_0x13761d){var _0x36cbed={},_0x223442={},_0x3e7353={'count':0x0,'rows':[]};var _0x5ef083=_['map'](db[_0x36cb('0x2b')][_0x36cb('0x2c')],function(_0x4cd77f){return{'name':_0x4cd77f['fieldName'],'type':_0x4cd77f[_0x36cb('0x2d')]['key']};});_0x223442[_0x36cb('0x2e')]=_['map'](_0x5ef083,_0x36cb('0x28'));_0x223442[_0x36cb('0x2f')]=_[_0x36cb('0x30')](_0x4bd2f3[_0x36cb('0x2f')]);_0x223442['filters']=_[_0x36cb('0x31')](_0x223442[_0x36cb('0x2e')],_0x223442['query']);_0x36cbed[_0x36cb('0x32')]=_[_0x36cb('0x31')](_0x223442['model'],qs[_0x36cb('0x33')](_0x4bd2f3[_0x36cb('0x2f')][_0x36cb('0x33')]));_0x36cbed[_0x36cb('0x32')]=_0x36cbed[_0x36cb('0x32')][_0x36cb('0x34')]?_0x36cbed['attributes']:_0x223442['model'];if(!_0x4bd2f3['query'][_0x36cb('0x35')]('nolimit')){_0x36cbed[_0x36cb('0x21')]=qs[_0x36cb('0x21')](_0x4bd2f3[_0x36cb('0x2f')][_0x36cb('0x21')]);_0x36cbed[_0x36cb('0x1e')]=qs[_0x36cb('0x1e')](_0x4bd2f3[_0x36cb('0x2f')][_0x36cb('0x1e')]);}_0x36cbed[_0x36cb('0x36')]=qs[_0x36cb('0x37')](_0x4bd2f3[_0x36cb('0x2f')][_0x36cb('0x37')]);_0x36cbed[_0x36cb('0x38')]=qs[_0x36cb('0x39')](_[_0x36cb('0x3a')](_0x4bd2f3[_0x36cb('0x2f')],_0x223442[_0x36cb('0x39')]),_0x5ef083);if(_0x4bd2f3[_0x36cb('0x2f')]['filter']){_0x36cbed[_0x36cb('0x38')]=_[_0x36cb('0x3b')](_0x36cbed['where'],{'$or':_[_0x36cb('0x3c')](_0x5ef083,function(_0x394a3b){if(_0x394a3b[_0x36cb('0x2d')]!=='VIRTUAL'){var _0x1e02e4={};_0x1e02e4[_0x394a3b[_0x36cb('0x28')]]={'$like':'%'+_0x4bd2f3[_0x36cb('0x2f')][_0x36cb('0x3d')]+'%'};return _0x1e02e4;}})});}_0x36cbed=_['merge']({},_0x36cbed,_0x4bd2f3[_0x36cb('0x3e')]);var _0x26a96f={'where':_0x36cbed[_0x36cb('0x38')]};return db[_0x36cb('0x2b')][_0x36cb('0x20')](_0x26a96f)[_0x36cb('0x12')](function(_0x2d1d6e){_0x3e7353['count']=_0x2d1d6e;if(_0x4bd2f3['query'][_0x36cb('0x3f')]){_0x36cbed[_0x36cb('0x40')]=[{'all':!![]}];}return db[_0x36cb('0x2b')]['findAll'](_0x36cbed);})[_0x36cb('0x12')](function(_0x3f7c47){_0x3e7353[_0x36cb('0x41')]=_0x3f7c47;return _0x3e7353;})[_0x36cb('0x12')](respondWithFilteredResult(_0x13761d,_0x36cbed))[_0x36cb('0x1c')](handleError(_0x13761d,null));};exports['show']=function(_0x4f499a,_0x59763d){var _0x34cb0e={'raw':!![],'where':{'id':_0x4f499a[_0x36cb('0x42')]['id']}},_0x5c55c0={};_0x5c55c0[_0x36cb('0x2e')]=_[_0x36cb('0x30')](db[_0x36cb('0x2b')][_0x36cb('0x2c')]);_0x5c55c0['query']=_[_0x36cb('0x30')](_0x4f499a[_0x36cb('0x2f')]);_0x5c55c0[_0x36cb('0x39')]=_[_0x36cb('0x31')](_0x5c55c0[_0x36cb('0x2e')],_0x5c55c0[_0x36cb('0x2f')]);_0x34cb0e[_0x36cb('0x32')]=_[_0x36cb('0x31')](_0x5c55c0['model'],qs[_0x36cb('0x33')](_0x4f499a['query'][_0x36cb('0x33')]));_0x34cb0e['attributes']=_0x34cb0e[_0x36cb('0x32')][_0x36cb('0x34')]?_0x34cb0e[_0x36cb('0x32')]:_0x5c55c0['model'];if(_0x4f499a[_0x36cb('0x2f')][_0x36cb('0x3f')]){_0x34cb0e['include']=[{'all':!![]}];}_0x34cb0e=_[_0x36cb('0x3b')]({},_0x34cb0e,_0x4f499a[_0x36cb('0x3e')]);return db[_0x36cb('0x2b')][_0x36cb('0x43')](_0x34cb0e)[_0x36cb('0x12')](handleEntityNotFound(_0x59763d,null))[_0x36cb('0x12')](respondWithResult(_0x59763d,null))[_0x36cb('0x1c')](handleError(_0x59763d,null));};exports['update']=function(_0x405440,_0x429a8e){if(_0x405440[_0x36cb('0x44')]['id']){delete _0x405440[_0x36cb('0x44')]['id'];}return db[_0x36cb('0x2b')][_0x36cb('0x43')]({'where':{'id':_0x405440['params']['id']}})[_0x36cb('0x12')](handleEntityNotFound(_0x429a8e,null))[_0x36cb('0x12')](saveUpdates(_0x405440['body'],null))['then'](respondWithResult(_0x429a8e,null))[_0x36cb('0x1c')](handleError(_0x429a8e,null));};exports[_0x36cb('0x45')]=function(_0xf22cda,_0x18309e){return db[_0x36cb('0x2b')][_0x36cb('0x43')]({'where':{'id':_0xf22cda[_0x36cb('0x42')]['id']}})['then'](handleEntityNotFound(_0x18309e,null))[_0x36cb('0x12')](removeEntity(_0x18309e,null))[_0x36cb('0x1c')](handleError(_0x18309e,null));};exports['describe']=function(_0x506439,_0x4a16f6){return db['MailMessage'][_0x36cb('0x46')]()[_0x36cb('0x12')](respondWithResult(_0x4a16f6,null))[_0x36cb('0x1c')](handleError(_0x4a16f6,null));};exports['create']=function(_0x2c415d,_0x58c076){return db['MailMessage']['create'](_0x2c415d['body'])[_0x36cb('0x12')](function(_0xb69303){if(_0xb69303){if(_0xb69303[_0x36cb('0x47')]===_0x36cb('0x48')&&!_0xb69303[_0x36cb('0x49')]){var _0x105616,_0x33d4f9,_0x2301cc;if(_0x2c415d['body']['to']){_0x33d4f9=_0x2c415d['body']['to'][_0x36cb('0x4a')](',')[0x0];}return db[_0x36cb('0x4b')]['findOne']({'where':{'id':_0xb69303['MailAccountId']},'include':[{'model':db[_0x36cb('0x4c')],'as':_0x36cb('0x4d'),'include':[{'model':db[_0x36cb('0x4e')],'as':_0x36cb('0x4f'),'where':{'email':_0x33d4f9},'limit':0x1,'order':[[_0x36cb('0x50'),_0x36cb('0x51')]]}]},{'model':db[_0x36cb('0x52')],'as':_0x36cb('0x53'),'raw':!![]}]})[_0x36cb('0x12')](function(_0x17c8d8){_0x105616=_0x17c8d8;if(_0x105616&&_0x105616['Smtp']){var _0x14abe6={'tls':{'rejectUnauthorized':![]}};if(_[_0x36cb('0x54')](_0x105616['Smtp']['service'])){_0x14abe6[_0x36cb('0x55')]=_0x105616['Smtp'][_0x36cb('0x55')];_0x14abe6[_0x36cb('0x56')]=_0x105616[_0x36cb('0x53')][_0x36cb('0x56')];_0x14abe6[_0x36cb('0x57')]=_0x105616['Smtp'][_0x36cb('0x57')];if(_0x105616['Smtp'][_0x36cb('0x58')]){_0x14abe6['auth']={'user':_0x105616[_0x36cb('0x53')]['user'],'pass':_0x105616[_0x36cb('0x53')][_0x36cb('0x59')]};}}else{_0x14abe6['service']=_0x105616['Smtp'][_0x36cb('0x5a')];_0x14abe6[_0x36cb('0x5b')]={'user':_0x105616[_0x36cb('0x53')][_0x36cb('0x5c')],'pass':_0x105616[_0x36cb('0x53')][_0x36cb('0x59')]};_0x14abe6['secure']=_0x105616[_0x36cb('0x53')][_0x36cb('0x57')];}if(_0x2c415d[_0x36cb('0x44')][_0x36cb('0x5d')]&&_0x2c415d[_0x36cb('0x44')][_0x36cb('0x5d')]['length']){for(var _0x55dad1=0x0;_0x55dad1<_0x2c415d['body'][_0x36cb('0x5d')][_0x36cb('0x34')];_0x55dad1+=0x1){_0x2c415d['body']['attachments'][_0x55dad1]={'filename':_0x2c415d[_0x36cb('0x44')][_0x36cb('0x5d')][_0x55dad1][_0x36cb('0x28')],'path':path[_0x36cb('0x5e')](config['root'],_0x36cb('0x5f'),_0x2c415d[_0x36cb('0x44')]['attachments'][_0x55dad1]['basename'])};}}_0x2301cc={'account':_0x14abe6,'message':_0x2c415d[_0x36cb('0x44')]};return;}})[_0x36cb('0x12')](function(){if(_0x105616[_0x36cb('0x4d')]){if(_0x105616[_0x36cb('0x4d')]['Contacts'][_0x36cb('0x34')]){return _0x105616['List'][_0x36cb('0x4f')][0x0];}else{return db[_0x36cb('0x4e')]['create'](_[_0x36cb('0x60')](_0x2c415d['body'],{'firstName':_0x2c415d[_0x36cb('0x44')]['to'],'email':_0x2c415d[_0x36cb('0x44')]['to'],'phone':_0x2c415d['body']['to'],'ListId':_0x105616[_0x36cb('0x61')]}));}}else{throw new Error(_0x36cb('0x62'));}})['then'](function(){if(_0x2301cc){return respondWithRpcPromise(_0x36cb('0x63'),_0x36cb('0x64'),_0x2301cc,client9003)[_0x36cb('0x12')](function(_0x4b640d){return _0xb69303[_0x36cb('0x25')]({'read':!![],'messageId':_0x4b640d[_0x36cb('0x65')],'sentAt':moment()['format'](_0x36cb('0x66'))});})['catch'](function(_0x2a32f1){logger[_0x36cb('0x19')]('%s',JSON[_0x36cb('0x18')](_0x2a32f1));return _0xb69303;});}return _0xb69303;});}return _0xb69303;}})[_0x36cb('0x12')](respondWithResult(_0x58c076,0xc9))[_0x36cb('0x1c')](handleError(_0x58c076,null));};exports['accept']=function(_0x1fd615,_0x3e22c0){var _0x1aad5e={'agent':{},'channel':_0x36cb('0x67')};if(_0x1fd615[_0x36cb('0x44')]['id']){delete _0x1fd615[_0x36cb('0x44')]['id'];}_0x1fd615['body'][_0x36cb('0x68')]=!![];_0x1fd615[_0x36cb('0x44')][_0x36cb('0x69')]=moment()[_0x36cb('0x6a')](_0x36cb('0x66'));_0x1fd615['body'][_0x36cb('0x6b')]=_0x1fd615[_0x36cb('0x44')]['UserId']||_0x1fd615['user']['id'];_0x1aad5e['agent']['id']=_0x1fd615['body']['UserId'];return db[_0x36cb('0x2b')]['find']({'where':{'id':_0x1fd615['params']['id'],'UserId':null}})[_0x36cb('0x12')](handleEntityNotFound(_0x3e22c0,null))['then'](saveUpdates(_0x1fd615[_0x36cb('0x44')],null))['then'](function(_0x23778f){if(_0x23778f){_0x1aad5e[_0x36cb('0x1b')]=_0x23778f[_0x36cb('0x6c')]({'plain':!![]});return db[_0x36cb('0x6d')][_0x36cb('0x43')]({'where':{'id':_0x23778f[_0x36cb('0x6e')]}});}return null;})['then'](handleEntityNotFound(_0x3e22c0,null))['then'](function(_0x54c58e){if(_0x54c58e){return _0x54c58e[_0x36cb('0x25')]({'UserId':_0x1fd615[_0x36cb('0x44')][_0x36cb('0x6b')],'read1stAt':_[_0x36cb('0x54')](_0x54c58e[_0x36cb('0x6f')])?moment()['format'](_0x36cb('0x66')):undefined});}return null;})[_0x36cb('0x12')](function(_0x347c96){if(_0x347c96){_0x1aad5e[_0x36cb('0x70')]=_0x347c96[_0x36cb('0x6c')]({'plain':!![]});interaction_log[_0x36cb('0x13')](_0x36cb('0x71'),_0x1fd615['user']['id'],_0x1fd615[_0x36cb('0x5c')][_0x36cb('0x28')],_0x1fd615[_0x36cb('0x5c')][_0x36cb('0x72')],_0x1aad5e[_0x36cb('0x70')]['id'],_0x1fd615[_0x36cb('0x44')]?JSON['stringify'](_0x1fd615['body']):_0x36cb('0x73'));return respondWithRpcPromise('AcceptMessage','acceptMessage',_0x1aad5e);}return null;})['then'](function(_0x2d3a53){var _0x4a098b='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2d3a53[_0x36cb('0x1b')][_0x36cb('0x74')];return db[_0x36cb('0x75')]['query'](_0x4a098b,{'type':db[_0x36cb('0x76')]['QueryTypes']['SELECT'],'raw':!![]})[_0x36cb('0x12')](function(_0xec484f){return _0xec484f;});})[_0x36cb('0x12')](function(_0x20b4b4){if(_0x20b4b4){_0x1aad5e[_0x36cb('0x1b')][_0x36cb('0x77')]=_0x20b4b4[0x0];if(!_0x1fd615['body'][_0x36cb('0x6b')])return;return db['User'][_0x36cb('0x43')]({'where':{'id':_0x1fd615[_0x36cb('0x44')][_0x36cb('0x6b')],'role':_0x36cb('0x78')},'attributes':['id',_0x36cb('0x28'),_0x36cb('0x79'),'email',_0x36cb('0x7a')],'raw':!![]});}return null;})['then'](function(_0x469d59){if(!_0x469d59)return null;_0x1aad5e[_0x36cb('0x1b')][_0x36cb('0x78')]=_0x469d59;return _0x1aad5e;})[_0x36cb('0x12')](function(_0x57bc2a){if(_0x57bc2a){if(_0x1fd615[_0x36cb('0x44')][_0x36cb('0x7b')]){_0x1aad5e[_0x36cb('0x1b')]['interface']=util[_0x36cb('0x6a')]('SIP/%s',_0x1fd615['user'][_0x36cb('0x28')]);_0x1aad5e['message']['channel']=_0x1aad5e[_0x36cb('0x7c')];_0x1aad5e['message'][_0x36cb('0x7d')]=_0x1aad5e[_0x36cb('0x7c')];_0x1aad5e[_0x36cb('0x1b')][_0x36cb('0x7e')]=_0x36cb('0x7f');_0x1aad5e[_0x36cb('0x1b')][_0x36cb('0x44')]=htmlToText[_0x36cb('0x80')](_0x1aad5e['message']['body']);return respondWithRpcPromise('EventManager',_0x36cb('0x81'),{'event':_0x36cb('0x82'),'message':_0x1aad5e['message']},client9002)[_0x36cb('0x12')](function(){return _0x1aad5e;});}return _0x1aad5e;}return null;})[_0x36cb('0x12')](respondWithResult(_0x3e22c0,null))[_0x36cb('0x1c')](handleError(_0x3e22c0,null));};exports[_0x36cb('0x83')]=function(_0x3aff93,_0x403977){var _0x29e70e={'agent':{},'channel':_0x36cb('0x67')};if(_0x3aff93['body']['id']){delete _0x3aff93[_0x36cb('0x44')]['id'];}_0x3aff93[_0x36cb('0x44')][_0x36cb('0x6b')]=_0x3aff93[_0x36cb('0x44')][_0x36cb('0x6b')]||_0x3aff93[_0x36cb('0x5c')]['id'];_0x29e70e[_0x36cb('0x78')]['id']=_0x3aff93[_0x36cb('0x44')][_0x36cb('0x6b')];return db[_0x36cb('0x2b')][_0x36cb('0x43')]({'where':{'id':_0x3aff93['params']['id'],'UserId':null}})[_0x36cb('0x12')](handleEntityNotFound(_0x403977,null))['then'](function(_0x3458e0){if(_0x3458e0){_0x29e70e[_0x36cb('0x1b')]=_0x3458e0['get']({'plain':!![]});return db[_0x36cb('0x6d')][_0x36cb('0x43')]({'where':{'id':_0x3458e0[_0x36cb('0x6e')]}});}return null;})[_0x36cb('0x12')](handleEntityNotFound(_0x403977,null))[_0x36cb('0x12')](function(_0xc47a88){if(_0xc47a88){_0x29e70e[_0x36cb('0x70')]=_0xc47a88['get']({'plain':!![]});interaction_log[_0x36cb('0x13')](_0x36cb('0x84'),_0x3aff93['user']['id'],_0x3aff93[_0x36cb('0x5c')][_0x36cb('0x28')],_0x3aff93[_0x36cb('0x5c')][_0x36cb('0x72')],_0x29e70e['interaction']['id'],_0x3aff93[_0x36cb('0x44')]?JSON[_0x36cb('0x18')](_0x3aff93[_0x36cb('0x44')]):_0x36cb('0x73'));return respondWithRpcPromise(_0x36cb('0x85'),_0x36cb('0x86'),_0x29e70e);}return null;})[_0x36cb('0x12')](function(_0x198859){var _0xef3d24=_0x36cb('0x87')+_0x198859['message'][_0x36cb('0x74')];return db[_0x36cb('0x75')]['query'](_0xef3d24,{'type':db[_0x36cb('0x76')][_0x36cb('0x88')][_0x36cb('0x89')],'raw':!![]})['then'](function(_0x5abac0){return _0x5abac0;});})[_0x36cb('0x12')](function(_0xdda76){if(_0xdda76){_0x29e70e[_0x36cb('0x1b')]['contact']=_0xdda76[0x0];if(!_0x3aff93[_0x36cb('0x44')][_0x36cb('0x6b')])return;return db[_0x36cb('0x8a')][_0x36cb('0x43')]({'where':{'id':_0x3aff93[_0x36cb('0x44')][_0x36cb('0x6b')],'role':_0x36cb('0x78')},'attributes':['id',_0x36cb('0x28'),_0x36cb('0x79'),_0x36cb('0x8b'),_0x36cb('0x7a')],'raw':!![]});}return null;})[_0x36cb('0x12')](function(_0x11bf8b){if(!_0x11bf8b)return null;_0x29e70e[_0x36cb('0x1b')][_0x36cb('0x78')]=_0x11bf8b;return _0x29e70e;})[_0x36cb('0x12')](function(_0x389787){if(_0x389787){_0x389787[_0x36cb('0x1b')]['interface']=util['format']('SIP/%s',_0x3aff93[_0x36cb('0x5c')]['name']);_0x389787['message'][_0x36cb('0x7c')]=_0x29e70e[_0x36cb('0x7c')];_0x389787[_0x36cb('0x1b')][_0x36cb('0x7d')]=_0x29e70e['channel'];_0x389787[_0x36cb('0x1b')][_0x36cb('0x7e')]=_0x36cb('0x83');_0x389787['message'][_0x36cb('0x44')]=htmlToText[_0x36cb('0x80')](_0x29e70e['message'][_0x36cb('0x44')]);respondWithRpcPromise('EventManager','EventManager',{'event':_0x36cb('0x8c'),'message':_0x389787[_0x36cb('0x1b')]},client9002);return _0x29e70e;}return null;})[_0x36cb('0x12')](respondWithResult(_0x403977,null))[_0x36cb('0x1c')](handleError(_0x403977,null));};exports[_0x36cb('0x8d')]=function(_0xe985ac,_0x13987b){var _0x5a4c7f=moment()[_0x36cb('0x8e')]()[_0x36cb('0x8f')]();var _0x1e2d1f=path[_0x36cb('0x5e')](config[_0x36cb('0x90')],_0x36cb('0x91'),_0x36cb('0x92'),_0x36cb('0x93'));var _0x477b8c=path[_0x36cb('0x5e')](config['root'],'server',_0x36cb('0x92'),_0x36cb('0x5d'));var _0xa8019b=util[_0x36cb('0x6a')](_0x36cb('0x94'),_0x5a4c7f);return db[_0x36cb('0x2b')][_0x36cb('0x43')]({'where':{'id':_0xe985ac[_0x36cb('0x42')]['id']},'attributes':['id','body',_0x36cb('0x95'),'to','cc',_0x36cb('0x96'),'subject',_0x36cb('0x97')],'include':_0xe985ac[_0x36cb('0x2f')]['attachments']?[{'model':db[_0x36cb('0x98')],'as':_0x36cb('0x99')}]:undefined})[_0x36cb('0x12')](handleEntityNotFound(_0x13987b,null))['then'](function(_0x9a6ce){if(_0x9a6ce){var _0x5367bb=_0x9a6ce;var _0x2ca0b9={'from':_0x5367bb[_0x36cb('0x95')],'to':_0x5367bb['to'],'subject':_0x5367bb['subject'],'html':_0x5367bb[_0x36cb('0x44')],'headers':{'Date':moment(_0x5367bb[_0x36cb('0x97')])[_0x36cb('0x6a')](_0x36cb('0x9a'))},'attachments':[]};if(_0x9a6ce['cc']){_0x2ca0b9[_0x36cb('0x9b')]['Cc']=_0x9a6ce['cc'];}if(_0x9a6ce['bcc']){_0x2ca0b9[_0x36cb('0x9b')]['Bcc']=_0x9a6ce[_0x36cb('0x96')];}return new BPromise(function(_0x2f1e6e,_0x567b74){if(_0x9a6ce[_0x36cb('0x99')]){for(var _0x3979e2=0x0;_0x3979e2<_0x9a6ce[_0x36cb('0x99')][_0x36cb('0x34')];_0x3979e2++){var _0x3190bb=_0x9a6ce['Attachments'][_0x3979e2];var _0x5b78a=path[_0x36cb('0x5e')](_0x477b8c,_0x3190bb['basename']);if(fs[_0x36cb('0x9c')](_0x5b78a)){_0x2ca0b9['attachments'][_0x36cb('0x9d')]({'name':_0x3190bb['name'],'contentType':_0x3190bb['type'],'data':fs['readFileSync'](_0x5b78a)});}}}emlformat[_0x36cb('0x9e')](_0x2ca0b9,function(_0x3215cb,_0x3e9f3a){if(_0x3215cb)return _0x567b74(_0x3215cb);fs[_0x36cb('0x9f')](path[_0x36cb('0x5e')](_0x1e2d1f,_0xa8019b),_0x3e9f3a);return _0x2f1e6e(_0x3e9f3a);});});}})[_0x36cb('0x12')](function(_0x2d7a42){if(_0x2d7a42){return _0x13987b[_0x36cb('0x8d')](path[_0x36cb('0x5e')](_0x1e2d1f,_0xa8019b),_0xa8019b,function(_0x40a40a){if(!_0x40a40a)fs[_0x36cb('0xa0')](path[_0x36cb('0x5e')](_0x1e2d1f,_0xa8019b));});}})['catch'](handleError(_0x13987b,null));};
\ No newline at end of file
+var _0x008c=['pass','attachments','join','root','server/files/attachments','basename','ListId','SendMail','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','stringify','accept','mail','read','UserId','agent','get','MailInteraction','update','read1stAt','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','QueryTypes','SELECT','contact','email','manual','channel','event','fromString','EventManager','acceptmessage','reject','MailInteractionId','interaction','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage','ContactId','sequelize','fullname','interface','SIP/%s','rejectmessage','download','unix','toString','tmp','server','files','from','bcc','subject','createdAt','Attachment','Attachments','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','Bcc','existsSync','push','readFileSync','build','writeFileSync','eml-format','moment','bluebird','util','path','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../config/environment','../../mysqldb','defaults','localhost','./mailMessage.socket','register','client','http','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','error','code','message','status','json','offset','undefined','limit','count','sendStatus','stack','name','send','index','map','MailMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','include','findAll','rows','catch','show','params','includeAll','options','find','body','destroy','describe','create','direction','out','secret','MailAccount','findOne','MailAccountId','List','CmContact','Contacts','DESC','MailServerOut','Smtp','isNil','service','host','secure','authentication','auth','user'];(function(_0x1dd398,_0x235e70){var _0x5846cf=function(_0x43efef){while(--_0x43efef){_0x1dd398['push'](_0x1dd398['shift']());}};_0x5846cf(++_0x235e70);}(_0x008c,0x188));var _0xc008=function(_0x3d4864,_0x10ff93){_0x3d4864=_0x3d4864-0x0;var _0x489010=_0x008c[_0x3d4864];return _0x489010;};'use strict';var emlformat=require(_0xc008('0x0'));var moment=require(_0xc008('0x1'));var BPromise=require(_0xc008('0x2'));var util=require(_0xc008('0x3'));var path=require(_0xc008('0x4'));var fs=require('fs');var _=require('lodash');var Redis=require(_0xc008('0x5'));var htmlToText=require(_0xc008('0x6'));var qs=require(_0xc008('0x7'));var logger=require(_0xc008('0x8'))(_0xc008('0x9'));var interaction_log=require(_0xc008('0x8'))(_0xc008('0xa'));var config=require(_0xc008('0xb'));var db=require(_0xc008('0xc'))['db'];config['redis']=_[_0xc008('0xd')](config['redis'],{'host':_0xc008('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xc008('0xf'))[_0xc008('0x10')](socket);var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232c});var client9003=jayson[_0xc008('0x11')][_0xc008('0x12')]({'port':0x232b});var client9002=jayson['client'][_0xc008('0x12')]({'port':0x232a});function respondWithRpcPromise(_0x332fd4,_0x2ea200,_0x2a5b4e,_0x9ffa93){return new BPromise(function(_0x1819c6,_0x69726e){var _0x593f7a=_0x9ffa93||client;return _0x593f7a['request'](_0x332fd4,_0x2a5b4e)[_0xc008('0x13')](function(_0x50c1ab){logger[_0xc008('0x14')](_0xc008('0x15'),_0x2ea200,_0xc008('0x16'));logger[_0xc008('0x17')](_0xc008('0x18'),_0x2ea200,'request\x20sent',JSON['stringify'](_0x50c1ab));if(_0x50c1ab['error']){if(_0x50c1ab[_0xc008('0x19')][_0xc008('0x1a')]===0x1f4){logger[_0xc008('0x19')](_0xc008('0x15'),_0x2ea200,_0x50c1ab['error']['message']);return _0x69726e(_0x50c1ab['error']['message']);}logger[_0xc008('0x19')](_0xc008('0x15'),_0x2ea200,_0x50c1ab['error'][_0xc008('0x1b')]);return _0x1819c6(_0x50c1ab['error']['message']);}else{logger['info']('MailMessage,\x20%s,\x20%s',_0x2ea200,_0xc008('0x16'));_0x1819c6(_0x50c1ab['result']['message']);}})['catch'](function(_0x4a582d){logger['error'](_0xc008('0x15'),_0x2ea200,_0x4a582d);_0x69726e(_0x4a582d);});});}function respondWithResult(_0x4777a6,_0x251db2){_0x251db2=_0x251db2||0xc8;return function(_0x415af3){if(_0x415af3){return _0x4777a6[_0xc008('0x1c')](_0x251db2)[_0xc008('0x1d')](_0x415af3);}};}function respondWithFilteredResult(_0x4f43e2,_0x459fd9){return function(_0x5c85f2){if(_0x5c85f2){var _0x58a6ea=typeof _0x459fd9[_0xc008('0x1e')]===_0xc008('0x1f')&&typeof _0x459fd9[_0xc008('0x20')]===_0xc008('0x1f');var _0x5410f5=_0x5c85f2['count'];var _0x5de1e9=_0x58a6ea?0x0:_0x459fd9[_0xc008('0x1e')];var _0x15dade=_0x58a6ea?_0x5c85f2[_0xc008('0x21')]:_0x459fd9[_0xc008('0x1e')]+_0x459fd9['limit'];var _0x5e2aca;if(_0x15dade>=_0x5410f5){_0x15dade=_0x5410f5;_0x5e2aca=0xc8;}else{_0x5e2aca=0xce;}_0x4f43e2['status'](_0x5e2aca);return _0x4f43e2['set']('Content-Range',_0x5de1e9+'-'+_0x15dade+'/'+_0x5410f5)[_0xc008('0x1d')](_0x5c85f2);}return null;};}function saveUpdates(_0x29ba43){return function(_0x25eae4){if(_0x25eae4){return _0x25eae4['update'](_0x29ba43)[_0xc008('0x13')](function(_0x32390d){return _0x32390d;});}return null;};}function removeEntity(_0x209591){return function(_0x2a7d4f){if(_0x2a7d4f){return _0x2a7d4f['destroy']()[_0xc008('0x13')](function(){_0x209591[_0xc008('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x58db82){return function(_0x539766){if(!_0x539766){_0x58db82[_0xc008('0x22')](0x194);}return _0x539766;};}function handleError(_0x267abd,_0xf831f2){_0xf831f2=_0xf831f2||0x1f4;return function(_0x10889f){logger[_0xc008('0x19')](_0x10889f[_0xc008('0x23')]);if(_0x10889f[_0xc008('0x24')]){delete _0x10889f[_0xc008('0x24')];}_0x267abd[_0xc008('0x1c')](_0xf831f2)[_0xc008('0x25')](_0x10889f);};}exports[_0xc008('0x26')]=function(_0x1ac7c8,_0x596ee8){var _0x334a09={},_0x4b7fd4={},_0x499754={'count':0x0,'rows':[]};var _0xaf4b84=_[_0xc008('0x27')](db[_0xc008('0x28')][_0xc008('0x29')],function(_0xd0e05a){return{'name':_0xd0e05a[_0xc008('0x2a')],'type':_0xd0e05a[_0xc008('0x2b')][_0xc008('0x2c')]};});_0x4b7fd4[_0xc008('0x2d')]=_['map'](_0xaf4b84,_0xc008('0x24'));_0x4b7fd4[_0xc008('0x2e')]=_[_0xc008('0x2f')](_0x1ac7c8[_0xc008('0x2e')]);_0x4b7fd4[_0xc008('0x30')]=_[_0xc008('0x31')](_0x4b7fd4[_0xc008('0x2d')],_0x4b7fd4['query']);_0x334a09[_0xc008('0x32')]=_[_0xc008('0x31')](_0x4b7fd4['model'],qs[_0xc008('0x33')](_0x1ac7c8[_0xc008('0x2e')]['fields']));_0x334a09[_0xc008('0x32')]=_0x334a09[_0xc008('0x32')][_0xc008('0x34')]?_0x334a09['attributes']:_0x4b7fd4['model'];if(!_0x1ac7c8['query'][_0xc008('0x35')]('nolimit')){_0x334a09[_0xc008('0x20')]=qs[_0xc008('0x20')](_0x1ac7c8[_0xc008('0x2e')][_0xc008('0x20')]);_0x334a09[_0xc008('0x1e')]=qs[_0xc008('0x1e')](_0x1ac7c8[_0xc008('0x2e')][_0xc008('0x1e')]);}_0x334a09[_0xc008('0x36')]=qs[_0xc008('0x37')](_0x1ac7c8[_0xc008('0x2e')][_0xc008('0x37')]);_0x334a09[_0xc008('0x38')]=qs[_0xc008('0x30')](_['pick'](_0x1ac7c8[_0xc008('0x2e')],_0x4b7fd4[_0xc008('0x30')]),_0xaf4b84);if(_0x1ac7c8[_0xc008('0x2e')][_0xc008('0x39')]){_0x334a09['where']=_[_0xc008('0x3a')](_0x334a09[_0xc008('0x38')],{'$or':_[_0xc008('0x27')](_0xaf4b84,function(_0x36e7ae){if(_0x36e7ae[_0xc008('0x2b')]!=='VIRTUAL'){var _0x398cdd={};_0x398cdd[_0x36e7ae[_0xc008('0x24')]]={'$like':'%'+_0x1ac7c8[_0xc008('0x2e')][_0xc008('0x39')]+'%'};return _0x398cdd;}})});}_0x334a09=_[_0xc008('0x3a')]({},_0x334a09,_0x1ac7c8['options']);var _0xf4cc4b={'where':_0x334a09[_0xc008('0x38')]};return db[_0xc008('0x28')][_0xc008('0x21')](_0xf4cc4b)['then'](function(_0x26cd05){_0x499754[_0xc008('0x21')]=_0x26cd05;if(_0x1ac7c8[_0xc008('0x2e')]['includeAll']){_0x334a09[_0xc008('0x3b')]=[{'all':!![]}];}return db['MailMessage'][_0xc008('0x3c')](_0x334a09);})['then'](function(_0x46fa8f){_0x499754[_0xc008('0x3d')]=_0x46fa8f;return _0x499754;})['then'](respondWithFilteredResult(_0x596ee8,_0x334a09))[_0xc008('0x3e')](handleError(_0x596ee8,null));};exports[_0xc008('0x3f')]=function(_0x6d6d4c,_0x5caaa2){var _0x1cec64={'raw':!![],'where':{'id':_0x6d6d4c[_0xc008('0x40')]['id']}},_0x2a9b5c={};_0x2a9b5c[_0xc008('0x2d')]=_[_0xc008('0x2f')](db[_0xc008('0x28')]['rawAttributes']);_0x2a9b5c['query']=_['keys'](_0x6d6d4c[_0xc008('0x2e')]);_0x2a9b5c[_0xc008('0x30')]=_[_0xc008('0x31')](_0x2a9b5c[_0xc008('0x2d')],_0x2a9b5c[_0xc008('0x2e')]);_0x1cec64[_0xc008('0x32')]=_[_0xc008('0x31')](_0x2a9b5c[_0xc008('0x2d')],qs['fields'](_0x6d6d4c['query']['fields']));_0x1cec64[_0xc008('0x32')]=_0x1cec64[_0xc008('0x32')][_0xc008('0x34')]?_0x1cec64['attributes']:_0x2a9b5c[_0xc008('0x2d')];if(_0x6d6d4c[_0xc008('0x2e')][_0xc008('0x41')]){_0x1cec64[_0xc008('0x3b')]=[{'all':!![]}];}_0x1cec64=_[_0xc008('0x3a')]({},_0x1cec64,_0x6d6d4c[_0xc008('0x42')]);return db[_0xc008('0x28')][_0xc008('0x43')](_0x1cec64)[_0xc008('0x13')](handleEntityNotFound(_0x5caaa2,null))[_0xc008('0x13')](respondWithResult(_0x5caaa2,null))['catch'](handleError(_0x5caaa2,null));};exports['update']=function(_0x223056,_0x51cb14){if(_0x223056[_0xc008('0x44')]['id']){delete _0x223056[_0xc008('0x44')]['id'];}return db[_0xc008('0x28')]['find']({'where':{'id':_0x223056[_0xc008('0x40')]['id']}})[_0xc008('0x13')](handleEntityNotFound(_0x51cb14,null))[_0xc008('0x13')](saveUpdates(_0x223056[_0xc008('0x44')],null))[_0xc008('0x13')](respondWithResult(_0x51cb14,null))['catch'](handleError(_0x51cb14,null));};exports[_0xc008('0x45')]=function(_0x27b022,_0x4b4c6d){return db[_0xc008('0x28')][_0xc008('0x43')]({'where':{'id':_0x27b022['params']['id']}})['then'](handleEntityNotFound(_0x4b4c6d,null))[_0xc008('0x13')](removeEntity(_0x4b4c6d,null))[_0xc008('0x3e')](handleError(_0x4b4c6d,null));};exports[_0xc008('0x46')]=function(_0x30d0aa,_0x14b6a0){return db['MailMessage']['describe']()[_0xc008('0x13')](respondWithResult(_0x14b6a0,null))['catch'](handleError(_0x14b6a0,null));};exports[_0xc008('0x47')]=function(_0x25d351,_0xf94fcb){return db[_0xc008('0x28')][_0xc008('0x47')](_0x25d351[_0xc008('0x44')])['then'](function(_0x2ea742){if(_0x2ea742){if(_0x2ea742[_0xc008('0x48')]===_0xc008('0x49')&&!_0x2ea742[_0xc008('0x4a')]){var _0x4424f5,_0x5aa385,_0x41fae3;if(_0x25d351['body']['to']){_0x5aa385=_0x25d351['body']['to']['split'](',')[0x0];}return db[_0xc008('0x4b')][_0xc008('0x4c')]({'where':{'id':_0x2ea742[_0xc008('0x4d')]},'include':[{'model':db['CmList'],'as':_0xc008('0x4e'),'include':[{'model':db[_0xc008('0x4f')],'as':_0xc008('0x50'),'where':{'email':_0x5aa385},'limit':0x1,'order':[['updatedAt',_0xc008('0x51')]]}]},{'model':db[_0xc008('0x52')],'as':_0xc008('0x53'),'raw':!![]}]})[_0xc008('0x13')](function(_0x5baff1){_0x4424f5=_0x5baff1;if(_0x4424f5&&_0x4424f5[_0xc008('0x53')]){var _0x4eaa6d={'tls':{'rejectUnauthorized':![]}};if(_[_0xc008('0x54')](_0x4424f5[_0xc008('0x53')][_0xc008('0x55')])){_0x4eaa6d[_0xc008('0x56')]=_0x4424f5[_0xc008('0x53')][_0xc008('0x56')];_0x4eaa6d['port']=_0x4424f5[_0xc008('0x53')]['port'];_0x4eaa6d['secure']=_0x4424f5[_0xc008('0x53')][_0xc008('0x57')];if(_0x4424f5['Smtp'][_0xc008('0x58')]){_0x4eaa6d[_0xc008('0x59')]={'user':_0x4424f5[_0xc008('0x53')][_0xc008('0x5a')],'pass':_0x4424f5[_0xc008('0x53')][_0xc008('0x5b')]};}}else{_0x4eaa6d[_0xc008('0x55')]=_0x4424f5['Smtp'][_0xc008('0x55')];_0x4eaa6d[_0xc008('0x59')]={'user':_0x4424f5[_0xc008('0x53')][_0xc008('0x5a')],'pass':_0x4424f5[_0xc008('0x53')][_0xc008('0x5b')]};_0x4eaa6d[_0xc008('0x57')]=_0x4424f5[_0xc008('0x53')][_0xc008('0x57')];}if(_0x25d351[_0xc008('0x44')][_0xc008('0x5c')]&&_0x25d351[_0xc008('0x44')][_0xc008('0x5c')][_0xc008('0x34')]){for(var _0x4e0251=0x0;_0x4e0251<_0x25d351[_0xc008('0x44')][_0xc008('0x5c')][_0xc008('0x34')];_0x4e0251+=0x1){_0x25d351['body'][_0xc008('0x5c')][_0x4e0251]={'filename':_0x25d351[_0xc008('0x44')]['attachments'][_0x4e0251]['name'],'path':path[_0xc008('0x5d')](config[_0xc008('0x5e')],_0xc008('0x5f'),_0x25d351[_0xc008('0x44')][_0xc008('0x5c')][_0x4e0251][_0xc008('0x60')])};}}_0x41fae3={'account':_0x4eaa6d,'message':_0x25d351[_0xc008('0x44')]};return;}})[_0xc008('0x13')](function(){if(_0x4424f5[_0xc008('0x4e')]){if(_0x4424f5[_0xc008('0x4e')][_0xc008('0x50')]['length']){return _0x4424f5[_0xc008('0x4e')][_0xc008('0x50')][0x0];}else{return db[_0xc008('0x4f')][_0xc008('0x47')](_['defaults'](_0x25d351[_0xc008('0x44')],{'firstName':_0x25d351['body']['to'],'email':_0x25d351[_0xc008('0x44')]['to'],'phone':_0x25d351[_0xc008('0x44')]['to'],'ListId':_0x4424f5[_0xc008('0x61')]}));}}else{throw new Error('List\x20not\x20found');}})[_0xc008('0x13')](function(){if(_0x41fae3){return respondWithRpcPromise(_0xc008('0x62'),_0xc008('0x63'),_0x41fae3,client9003)['then'](function(_0x35b28a){return _0x2ea742['update']({'read':!![],'messageId':_0x35b28a[_0xc008('0x64')],'sentAt':moment()[_0xc008('0x65')](_0xc008('0x66'))});})[_0xc008('0x3e')](function(_0x295ec7){logger['error']('%s',JSON[_0xc008('0x67')](_0x295ec7));return _0x2ea742;});}return _0x2ea742;});}return _0x2ea742;}})[_0xc008('0x13')](respondWithResult(_0xf94fcb,0xc9))['catch'](handleError(_0xf94fcb,null));};exports[_0xc008('0x68')]=function(_0x5233bb,_0x278cbe){var _0x50bfe5={'agent':{},'channel':_0xc008('0x69')};if(_0x5233bb['body']['id']){delete _0x5233bb[_0xc008('0x44')]['id'];}_0x5233bb[_0xc008('0x44')][_0xc008('0x6a')]=!![];_0x5233bb[_0xc008('0x44')]['readAt']=moment()[_0xc008('0x65')](_0xc008('0x66'));_0x5233bb[_0xc008('0x44')][_0xc008('0x6b')]=_0x5233bb[_0xc008('0x44')][_0xc008('0x6b')]||_0x5233bb[_0xc008('0x5a')]['id'];_0x50bfe5[_0xc008('0x6c')]['id']=_0x5233bb['body'][_0xc008('0x6b')];return db['MailMessage']['find']({'where':{'id':_0x5233bb['params']['id'],'UserId':null}})[_0xc008('0x13')](handleEntityNotFound(_0x278cbe,null))[_0xc008('0x13')](saveUpdates(_0x5233bb[_0xc008('0x44')],null))[_0xc008('0x13')](function(_0xc2f684){if(_0xc2f684){_0x50bfe5[_0xc008('0x1b')]=_0xc2f684[_0xc008('0x6d')]({'plain':!![]});return db[_0xc008('0x6e')][_0xc008('0x43')]({'where':{'id':_0xc2f684['MailInteractionId']}});}return null;})[_0xc008('0x13')](handleEntityNotFound(_0x278cbe,null))[_0xc008('0x13')](function(_0x2b1b26){if(_0x2b1b26){return _0x2b1b26[_0xc008('0x6f')]({'UserId':_0x5233bb[_0xc008('0x44')][_0xc008('0x6b')],'read1stAt':_[_0xc008('0x54')](_0x2b1b26[_0xc008('0x70')])?moment()[_0xc008('0x65')](_0xc008('0x66')):undefined});}return null;})[_0xc008('0x13')](function(_0x1dd9fe){if(_0x1dd9fe){_0x50bfe5['interaction']=_0x1dd9fe['get']({'plain':!![]});interaction_log[_0xc008('0x14')](_0xc008('0x71'),_0x5233bb[_0xc008('0x5a')]['id'],_0x5233bb['user'][_0xc008('0x24')],_0x5233bb[_0xc008('0x5a')]['role'],_0x50bfe5['interaction']['id'],_0x5233bb['body']?JSON[_0xc008('0x67')](_0x5233bb[_0xc008('0x44')]):_0xc008('0x72'));return respondWithRpcPromise(_0xc008('0x73'),_0xc008('0x74'),_0x50bfe5);}return null;})[_0xc008('0x13')](function(_0x285c09){var _0x43ba59=_0xc008('0x75')+_0x285c09[_0xc008('0x1b')]['ContactId'];return db['sequelize'][_0xc008('0x2e')](_0x43ba59,{'type':db[_0xc008('0x76')][_0xc008('0x77')][_0xc008('0x78')],'raw':!![]})[_0xc008('0x13')](function(_0x37fc2c){return _0x37fc2c;});})['then'](function(_0x5794fe){if(_0x5794fe){_0x50bfe5[_0xc008('0x1b')][_0xc008('0x79')]=_0x5794fe[0x0];if(!_0x5233bb[_0xc008('0x44')]['UserId'])return;return db['User']['find']({'where':{'id':_0x5233bb['body']['UserId'],'role':'agent'},'attributes':['id',_0xc008('0x24'),'fullname',_0xc008('0x7a'),'internal'],'raw':!![]});}return null;})[_0xc008('0x13')](function(_0x41151e){if(!_0x41151e)return null;_0x50bfe5[_0xc008('0x1b')]['agent']=_0x41151e;return _0x50bfe5;})['then'](function(_0x2ff671){if(_0x2ff671){if(_0x5233bb['body'][_0xc008('0x7b')]){_0x50bfe5[_0xc008('0x1b')]['interface']=util[_0xc008('0x65')]('SIP/%s',_0x5233bb['user'][_0xc008('0x24')]);_0x50bfe5[_0xc008('0x1b')]['channel']=_0x50bfe5[_0xc008('0x7c')];_0x50bfe5[_0xc008('0x1b')][_0xc008('0x7d')]='accept';_0x50bfe5[_0xc008('0x1b')][_0xc008('0x44')]=htmlToText[_0xc008('0x7e')](_0x50bfe5[_0xc008('0x1b')][_0xc008('0x44')]);return respondWithRpcPromise(_0xc008('0x7f'),'EventManager',{'event':_0xc008('0x80'),'message':_0x50bfe5[_0xc008('0x1b')]},client9002)[_0xc008('0x13')](function(){return _0x50bfe5;});}return _0x50bfe5;}return null;})['then'](respondWithResult(_0x278cbe,null))[_0xc008('0x3e')](handleError(_0x278cbe,null));};exports[_0xc008('0x81')]=function(_0x4452a8,_0x4914ed){var _0x48c38b={'agent':{},'channel':'mail'};if(_0x4452a8[_0xc008('0x44')]['id']){delete _0x4452a8[_0xc008('0x44')]['id'];}_0x4452a8[_0xc008('0x44')][_0xc008('0x6b')]=_0x4452a8[_0xc008('0x44')][_0xc008('0x6b')]||_0x4452a8[_0xc008('0x5a')]['id'];_0x48c38b[_0xc008('0x6c')]['id']=_0x4452a8['body'][_0xc008('0x6b')];return db[_0xc008('0x28')]['find']({'where':{'id':_0x4452a8['params']['id'],'UserId':null}})[_0xc008('0x13')](handleEntityNotFound(_0x4914ed,null))[_0xc008('0x13')](function(_0x2be063){if(_0x2be063){_0x48c38b[_0xc008('0x1b')]=_0x2be063[_0xc008('0x6d')]({'plain':!![]});return db['MailInteraction'][_0xc008('0x43')]({'where':{'id':_0x2be063[_0xc008('0x82')]}});}return null;})['then'](handleEntityNotFound(_0x4914ed,null))[_0xc008('0x13')](function(_0x1cc68f){if(_0x1cc68f){_0x48c38b[_0xc008('0x83')]=_0x1cc68f[_0xc008('0x6d')]({'plain':!![]});interaction_log['info'](_0xc008('0x84'),_0x4452a8[_0xc008('0x5a')]['id'],_0x4452a8[_0xc008('0x5a')][_0xc008('0x24')],_0x4452a8['user'][_0xc008('0x85')],_0x48c38b[_0xc008('0x83')]['id'],_0x4452a8['body']?JSON['stringify'](_0x4452a8[_0xc008('0x44')]):'null');return respondWithRpcPromise(_0xc008('0x86'),_0xc008('0x87'),_0x48c38b);}return null;})['then'](function(_0x1b6858){var _0x201ffa=_0xc008('0x75')+_0x1b6858[_0xc008('0x1b')][_0xc008('0x88')];return db[_0xc008('0x89')][_0xc008('0x2e')](_0x201ffa,{'type':db[_0xc008('0x76')][_0xc008('0x77')][_0xc008('0x78')],'raw':!![]})['then'](function(_0x49e6d5){return _0x49e6d5;});})[_0xc008('0x13')](function(_0x3d6f70){if(_0x3d6f70){_0x48c38b['message'][_0xc008('0x79')]=_0x3d6f70[0x0];if(!_0x4452a8[_0xc008('0x44')][_0xc008('0x6b')])return;return db['User'][_0xc008('0x43')]({'where':{'id':_0x4452a8[_0xc008('0x44')][_0xc008('0x6b')],'role':_0xc008('0x6c')},'attributes':['id',_0xc008('0x24'),_0xc008('0x8a'),_0xc008('0x7a'),'internal'],'raw':!![]});}return null;})[_0xc008('0x13')](function(_0x49cd29){if(!_0x49cd29)return null;_0x48c38b[_0xc008('0x1b')][_0xc008('0x6c')]=_0x49cd29;return _0x48c38b;})[_0xc008('0x13')](function(_0x583077){if(_0x583077){_0x583077[_0xc008('0x1b')][_0xc008('0x8b')]=util[_0xc008('0x65')](_0xc008('0x8c'),_0x4452a8[_0xc008('0x5a')][_0xc008('0x24')]);_0x583077[_0xc008('0x1b')][_0xc008('0x7c')]=_0x48c38b[_0xc008('0x7c')];_0x583077[_0xc008('0x1b')]['event']=_0xc008('0x81');_0x583077[_0xc008('0x1b')][_0xc008('0x44')]=htmlToText[_0xc008('0x7e')](_0x48c38b[_0xc008('0x1b')]['body']);respondWithRpcPromise(_0xc008('0x7f'),_0xc008('0x7f'),{'event':_0xc008('0x8d'),'message':_0x583077[_0xc008('0x1b')]},client9002);return _0x48c38b;}return null;})[_0xc008('0x13')](respondWithResult(_0x4914ed,null))[_0xc008('0x3e')](handleError(_0x4914ed,null));};exports[_0xc008('0x8e')]=function(_0x220170,_0x2cc170){var _0x3e200b=moment()[_0xc008('0x8f')]()[_0xc008('0x90')]();var _0x2e2c2a=path[_0xc008('0x5d')](config[_0xc008('0x5e')],'server','files',_0xc008('0x91'));var _0x276ced=path[_0xc008('0x5d')](config[_0xc008('0x5e')],_0xc008('0x92'),_0xc008('0x93'),_0xc008('0x5c'));var _0x3eb3de=util[_0xc008('0x65')]('message-%s.eml',_0x3e200b);return db[_0xc008('0x28')][_0xc008('0x43')]({'where':{'id':_0x220170['params']['id']},'attributes':['id',_0xc008('0x44'),_0xc008('0x94'),'to','cc',_0xc008('0x95'),_0xc008('0x96'),_0xc008('0x97')],'include':_0x220170[_0xc008('0x2e')]['attachments']?[{'model':db[_0xc008('0x98')],'as':_0xc008('0x99')}]:undefined})[_0xc008('0x13')](handleEntityNotFound(_0x2cc170,null))[_0xc008('0x13')](function(_0x59e3d0){if(_0x59e3d0){var _0x13a0bd=_0x59e3d0;var _0x5d5d2f={'from':_0x13a0bd[_0xc008('0x94')],'to':_0x13a0bd['to'],'subject':_0x13a0bd[_0xc008('0x96')],'html':_0x13a0bd['body'],'headers':{'Date':moment(_0x13a0bd[_0xc008('0x97')])['format'](_0xc008('0x9a'))},'attachments':[]};if(_0x59e3d0['cc']){_0x5d5d2f['headers']['Cc']=_0x59e3d0['cc'];}if(_0x59e3d0['bcc']){_0x5d5d2f['headers'][_0xc008('0x9b')]=_0x59e3d0[_0xc008('0x95')];}return new BPromise(function(_0x48f40f,_0x4fda8){if(_0x59e3d0[_0xc008('0x99')]){for(var _0x4a7692=0x0;_0x4a7692<_0x59e3d0[_0xc008('0x99')][_0xc008('0x34')];_0x4a7692++){var _0x1564a9=_0x59e3d0['Attachments'][_0x4a7692];var _0x33cad3=path[_0xc008('0x5d')](_0x276ced,_0x1564a9[_0xc008('0x60')]);if(fs[_0xc008('0x9c')](_0x33cad3)){_0x5d5d2f[_0xc008('0x5c')][_0xc008('0x9d')]({'name':_0x1564a9[_0xc008('0x24')],'contentType':_0x1564a9[_0xc008('0x2b')],'data':fs[_0xc008('0x9e')](_0x33cad3)});}}}emlformat[_0xc008('0x9f')](_0x5d5d2f,function(_0x427fd2,_0x4ea18b){if(_0x427fd2)return _0x4fda8(_0x427fd2);fs[_0xc008('0xa0')](path[_0xc008('0x5d')](_0x2e2c2a,_0x3eb3de),_0x4ea18b);return _0x48f40f(_0x4ea18b);});});}})[_0xc008('0x13')](function(_0x4b946a){if(_0x4b946a){return _0x2cc170[_0xc008('0x8e')](path[_0xc008('0x5d')](_0x2e2c2a,_0x3eb3de),_0x3eb3de,function(_0x3f6018){if(!_0x3f6018)fs['unlinkSync'](path[_0xc008('0x5d')](_0x2e2c2a,_0x3eb3de));});}})['catch'](handleError(_0x2cc170,null));};
\ No newline at end of file
index fe3bca4..464354a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2629=['hasOwnProperty','exports','events','MailMessage','setMaxListeners','update','emit'];(function(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0x2629,0x1f3));var _0x9262=function(_0x429dc6,_0x439f71){_0x429dc6=_0x429dc6-0x0;var _0x4e5b77=_0x2629[_0x429dc6];return _0x4e5b77;};'use strict';var EventEmitter=require(_0x9262('0x0'));var MailMessage=require('../../mysqldb')['db'][_0x9262('0x1')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x9262('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x9262('0x3'),'afterDestroy':'remove'};function emitEvent(_0x201053){return function(_0x485c2b,_0x13c753,_0x17b48a){MailMessageEvents[_0x9262('0x4')](_0x201053+':'+_0x485c2b['id'],_0x485c2b);MailMessageEvents[_0x9262('0x4')](_0x201053,_0x485c2b);_0x17b48a(null);};}for(var e in events){if(events[_0x9262('0x5')](e)){var event=events[e];MailMessage['hook'](e,emitEvent(event));}}module[_0x9262('0x6')]=MailMessageEvents;
\ No newline at end of file
+var _0x52c0=['emit','hasOwnProperty','exports','events','../../mysqldb','setMaxListeners','save','update','remove'];(function(_0x278e3c,_0x1c9cfd){var _0x3e2d9b=function(_0x34d928){while(--_0x34d928){_0x278e3c['push'](_0x278e3c['shift']());}};_0x3e2d9b(++_0x1c9cfd);}(_0x52c0,0x1a1));var _0x052c=function(_0x234252,_0x5ac2dc){_0x234252=_0x234252-0x0;var _0x37f193=_0x52c0[_0x234252];return _0x37f193;};'use strict';var EventEmitter=require(_0x052c('0x0'));var MailMessage=require(_0x052c('0x1'))['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x052c('0x2')](0x0);var events={'afterCreate':_0x052c('0x3'),'afterUpdate':_0x052c('0x4'),'afterDestroy':_0x052c('0x5')};function emitEvent(_0x559069){return function(_0x3c4358,_0x171082,_0x9a3019){MailMessageEvents[_0x052c('0x6')](_0x559069+':'+_0x3c4358['id'],_0x3c4358);MailMessageEvents[_0x052c('0x6')](_0x559069,_0x3c4358);_0x9a3019(null);};}for(var e in events){if(events[_0x052c('0x7')](e)){var event=events[e];MailMessage['hook'](e,emitEvent(event));}}module[_0x052c('0x8')]=MailMessageEvents;
\ No newline at end of file
index bfcfae6..77997e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x922d=['update','catch','error','utf8mb4','util','../../config/logger','api','moment','bluebird','request-promise','html-to-text','path','rimraf','../../config/environment','./mailMessage.attributes','exports','define','mail_messages','messageId','fti_mail_messages','plainBody','fromString','body','direction','toLowerCase','out','secret','MailInteractionId','then'];(function(_0x37ad42,_0x47c02f){var _0x14b05b=function(_0x1f7ec7){while(--_0x1f7ec7){_0x37ad42['push'](_0x37ad42['shift']());}};_0x14b05b(++_0x47c02f);}(_0x922d,0xec));var _0xd922=function(_0x196117,_0x484472){_0x196117=_0x196117-0x0;var _0x42adda=_0x922d[_0x196117];return _0x42adda;};'use strict';var _=require('lodash');var util=require(_0xd922('0x0'));var logger=require(_0xd922('0x1'))(_0xd922('0x2'));var moment=require(_0xd922('0x3'));var BPromise=require(_0xd922('0x4'));var rp=require(_0xd922('0x5'));var htmlToText=require(_0xd922('0x6'));var fs=require('fs');var path=require(_0xd922('0x7'));var rimraf=require(_0xd922('0x8'));var config=require(_0xd922('0x9'));var attributes=require(_0xd922('0xa'));module[_0xd922('0xb')]=function(_0x405008,_0x5229cc){return _0x405008[_0xd922('0xc')]('MailMessage',attributes,{'tableName':_0xd922('0xd'),'paranoid':![],'indexes':[{'name':'messageId','fields':[_0xd922('0xe')]},{'name':_0xd922('0xf'),'fields':[_0xd922('0x10'),'subject'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x60db5c,_0x517867,_0x287753){if(_0x60db5c['body']){_0x60db5c['plainBody']=htmlToText[_0xd922('0x11')](_0x60db5c[_0xd922('0x12')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x287753(null,_0x517867);},'afterCreate':function(_0x2d214e,_0xc095d9,_0x157b88){var _0xf873a4=_0x405008['models'];var _0x3af87a=_0x2d214e['get']({'plain':!![]});if(_0x3af87a[_0xd922('0x13')][_0xd922('0x14')]()==='in'||_0x3af87a[_0xd922('0x13')]['toLowerCase']()===_0xd922('0x15')&&!_0x3af87a[_0xd922('0x16')]&&!_['isNil'](_0x3af87a['UserId'])){_0xf873a4['MailInteraction']['findOne']({'where':{'id':_0x3af87a[_0xd922('0x17')]}})[_0xd922('0x18')](function(_0x26ee1f){if(_0x26ee1f){_0x26ee1f[_0xd922('0x19')]({'lastMsgAt':_0x3af87a['createdAt'],'lastMsgDirection':_0x3af87a[_0xd922('0x13')][_0xd922('0x14')]()});}})[_0xd922('0x1a')](function(_0x49a20c){console[_0xd922('0x1b')](_0x49a20c);});}_0x157b88();}},'charset':_0xd922('0x1c'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x1b2b=['./mailMessage.attributes','define','messageId','fti_mail_messages','plainBody','fromString','body','models','get','direction','toLowerCase','MailInteraction','findOne','MailInteractionId','then','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','html-to-text','path','rimraf'];(function(_0x654e84,_0x431ca2){var _0xc77c75=function(_0x5c6e48){while(--_0x5c6e48){_0x654e84['push'](_0x654e84['shift']());}};_0xc77c75(++_0x431ca2);}(_0x1b2b,0x1ab));var _0xb1b2=function(_0x22608f,_0x1ce6dd){_0x22608f=_0x22608f-0x0;var _0x3439b2=_0x1b2b[_0x22608f];return _0x3439b2;};'use strict';var _=require(_0xb1b2('0x0'));var util=require(_0xb1b2('0x1'));var logger=require('../../config/logger')(_0xb1b2('0x2'));var moment=require(_0xb1b2('0x3'));var BPromise=require(_0xb1b2('0x4'));var rp=require('request-promise');var htmlToText=require(_0xb1b2('0x5'));var fs=require('fs');var path=require(_0xb1b2('0x6'));var rimraf=require(_0xb1b2('0x7'));var config=require('../../config/environment');var attributes=require(_0xb1b2('0x8'));module['exports']=function(_0x5ba31b,_0x204d99){return _0x5ba31b[_0xb1b2('0x9')]('MailMessage',attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':_0xb1b2('0xa'),'fields':[_0xb1b2('0xa')]},{'name':_0xb1b2('0xb'),'fields':[_0xb1b2('0xc'),'subject'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x46a08f,_0x344bca,_0x148ba0){if(_0x46a08f['body']){_0x46a08f[_0xb1b2('0xc')]=htmlToText[_0xb1b2('0xd')](_0x46a08f[_0xb1b2('0xe')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x148ba0(null,_0x344bca);},'afterCreate':function(_0xf1ec57,_0x552dcf,_0x3d4f8d){var _0x86d4c7=_0x5ba31b[_0xb1b2('0xf')];var _0x3e6918=_0xf1ec57[_0xb1b2('0x10')]({'plain':!![]});if(_0x3e6918['direction']['toLowerCase']()==='in'||_0x3e6918[_0xb1b2('0x11')][_0xb1b2('0x12')]()==='out'&&!_0x3e6918['secret']&&!_['isNil'](_0x3e6918['UserId'])){_0x86d4c7[_0xb1b2('0x13')][_0xb1b2('0x14')]({'where':{'id':_0x3e6918[_0xb1b2('0x15')]}})[_0xb1b2('0x16')](function(_0x26327f){if(_0x26327f){_0x26327f[_0xb1b2('0x17')]({'lastMsgAt':_0x3e6918[_0xb1b2('0x18')],'lastMsgDirection':_0x3e6918[_0xb1b2('0x11')][_0xb1b2('0x12')]()});}})[_0xb1b2('0x19')](function(_0x450ac1){console[_0xb1b2('0x1a')](_0x450ac1);});}_0x3d4f8d();}},'charset':_0xb1b2('0x1b'),'collate':_0xb1b2('0x1c')});};
\ No newline at end of file
index 7ff66c7..d742c28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3266=['result','catch','CreateMailMessage','MailMessage','body','options','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','redis','socket.io-emitter','./mailMessage.socket','register','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x49392e,_0x441b28){var _0xe978bb=function(_0x4404d1){while(--_0x4404d1){_0x49392e['push'](_0x49392e['shift']());}};_0xe978bb(++_0x441b28);}(_0x3266,0x6a));var _0x6326=function(_0x1a9204,_0x1c9e00){_0x1a9204=_0x1a9204-0x0;var _0x17ca68=_0x3266[_0x1a9204];return _0x17ca68;};'use strict';var _=require(_0x6326('0x0'));var util=require(_0x6326('0x1'));var moment=require(_0x6326('0x2'));var BPromise=require(_0x6326('0x3'));var rs=require(_0x6326('0x4'));var fs=require('fs');var Redis=require(_0x6326('0x5'));var db=require(_0x6326('0x6'))['db'];var utils=require(_0x6326('0x7'));var logger=require(_0x6326('0x8'))('rpc');var config=require(_0x6326('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x6326('0xa')][_0x6326('0xb')]({'port':0x232a});config[_0x6326('0xc')]=_['defaults'](config[_0x6326('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x6326('0xd'))(new Redis(config[_0x6326('0xc')]));require(_0x6326('0xe'))[_0x6326('0xf')](socket);function respondWithRpcPromise(_0x37a23d,_0x53c3e1,_0x1b45a7){return new BPromise(function(_0x464a36,_0x3590ab){return client[_0x6326('0x10')](_0x37a23d,_0x1b45a7)[_0x6326('0x11')](function(_0x3b056c){logger[_0x6326('0x12')](_0x6326('0x13'),_0x53c3e1,_0x6326('0x14'));logger[_0x6326('0x15')]('MailMessage,\x20%s,\x20%s,\x20%s',_0x53c3e1,'request\x20sent',JSON[_0x6326('0x16')](_0x3b056c));if(_0x3b056c[_0x6326('0x17')]){if(_0x3b056c['error'][_0x6326('0x18')]===0x1f4){logger['error'](_0x6326('0x13'),_0x53c3e1,_0x3b056c[_0x6326('0x17')][_0x6326('0x19')]);return _0x3590ab(_0x3b056c[_0x6326('0x17')][_0x6326('0x19')]);}logger[_0x6326('0x17')]('MailMessage,\x20%s,\x20%s',_0x53c3e1,_0x3b056c[_0x6326('0x17')]['message']);return _0x464a36(_0x3b056c['error']['message']);}else{logger['info']('MailMessage,\x20%s,\x20%s',_0x53c3e1,'request\x20sent');_0x464a36(_0x3b056c[_0x6326('0x1a')][_0x6326('0x19')]);}})[_0x6326('0x1b')](function(_0x556c4e){logger['error'](_0x6326('0x13'),_0x53c3e1,_0x556c4e);_0x3590ab(_0x556c4e);});});}exports[_0x6326('0x1c')]=function(_0x272b5c){var _0x3db834=this;return new Promise(function(_0x3c08db,_0x25957a){return db[_0x6326('0x1d')]['create'](_0x272b5c[_0x6326('0x1e')],{'raw':_0x272b5c['options']?_0x272b5c[_0x6326('0x1f')][_0x6326('0x20')]===undefined?!![]:![]:!![]})[_0x6326('0x11')](function(_0x24fb78){logger[_0x6326('0x12')](_0x6326('0x1c'),_0x272b5c);logger[_0x6326('0x15')](_0x6326('0x1c'),_0x272b5c,JSON[_0x6326('0x16')](_0x24fb78));_0x3c08db(_0x24fb78);})[_0x6326('0x1b')](function(_0x34954b){logger['error'](_0x6326('0x1c'),_0x34954b[_0x6326('0x19')],_0x272b5c);_0x25957a(_0x3db834['error'](0x1f4,_0x34954b['message']));});});};
\ No newline at end of file
+var _0xb574=['../../config/environment','http','socket.io-emitter','redis','./mailMessage.socket','register','request','then','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','MailMessage,\x20%s,\x20%s','info','catch','CreateMailMessage','MailMessage','body','options','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x37c07d,_0xdbdb5f){var _0x10dadc=function(_0x2bafb7){while(--_0x2bafb7){_0x37c07d['push'](_0x37c07d['shift']());}};_0x10dadc(++_0xdbdb5f);}(_0xb574,0x106));var _0x4b57=function(_0x569498,_0x497bfb){_0x569498=_0x569498-0x0;var _0x291efa=_0xb574[_0x569498];return _0x291efa;};'use strict';var _=require(_0x4b57('0x0'));var util=require(_0x4b57('0x1'));var moment=require('moment');var BPromise=require(_0x4b57('0x2'));var rs=require(_0x4b57('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4b57('0x4'))['db'];var utils=require(_0x4b57('0x5'));var logger=require(_0x4b57('0x6'))(_0x4b57('0x7'));var config=require(_0x4b57('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x4b57('0x9')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x4b57('0xa'))(new Redis(config[_0x4b57('0xb')]));require(_0x4b57('0xc'))[_0x4b57('0xd')](socket);function respondWithRpcPromise(_0xce47ad,_0x116958,_0x1db79a){return new BPromise(function(_0x43b108,_0x5593b8){return client[_0x4b57('0xe')](_0xce47ad,_0x1db79a)[_0x4b57('0xf')](function(_0x274912){logger['info']('MailMessage,\x20%s,\x20%s',_0x116958,_0x4b57('0x10'));logger[_0x4b57('0x11')](_0x4b57('0x12'),_0x116958,_0x4b57('0x10'),JSON[_0x4b57('0x13')](_0x274912));if(_0x274912[_0x4b57('0x14')]){if(_0x274912[_0x4b57('0x14')][_0x4b57('0x15')]===0x1f4){logger[_0x4b57('0x14')]('MailMessage,\x20%s,\x20%s',_0x116958,_0x274912['error'][_0x4b57('0x16')]);return _0x5593b8(_0x274912[_0x4b57('0x14')][_0x4b57('0x16')]);}logger['error'](_0x4b57('0x17'),_0x116958,_0x274912['error'][_0x4b57('0x16')]);return _0x43b108(_0x274912[_0x4b57('0x14')][_0x4b57('0x16')]);}else{logger[_0x4b57('0x18')](_0x4b57('0x17'),_0x116958,_0x4b57('0x10'));_0x43b108(_0x274912['result'][_0x4b57('0x16')]);}})[_0x4b57('0x19')](function(_0x53f29a){logger[_0x4b57('0x14')]('MailMessage,\x20%s,\x20%s',_0x116958,_0x53f29a);_0x5593b8(_0x53f29a);});});}exports[_0x4b57('0x1a')]=function(_0x1ca49e){var _0xad9165=this;return new Promise(function(_0x2682d6,_0xef1eae){return db[_0x4b57('0x1b')]['create'](_0x1ca49e[_0x4b57('0x1c')],{'raw':_0x1ca49e[_0x4b57('0x1d')]?_0x1ca49e[_0x4b57('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x4b57('0xf')](function(_0x4a34b2){logger[_0x4b57('0x18')](_0x4b57('0x1a'),_0x1ca49e);logger['debug'](_0x4b57('0x1a'),_0x1ca49e,JSON[_0x4b57('0x13')](_0x4a34b2));_0x2682d6(_0x4a34b2);})['catch'](function(_0x3e7b96){logger[_0x4b57('0x14')](_0x4b57('0x1a'),_0x3e7b96[_0x4b57('0x16')],_0x1ca49e);_0xef1eae(_0xad9165['error'](0x1f4,_0x3e7b96[_0x4b57('0x16')]));});});};
\ No newline at end of file
index 7c92c72..77c1fb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d01=['update','removeListener','register','length','mailMessage:','./mailMessage.events','remove'];(function(_0x23a43d,_0x4d825b){var _0x237807=function(_0x3c398a){while(--_0x3c398a){_0x23a43d['push'](_0x23a43d['shift']());}};_0x237807(++_0x4d825b);}(_0x5d01,0xe5));var _0x15d0=function(_0x2cfad9,_0x1fe675){_0x2cfad9=_0x2cfad9-0x0;var _0x1d325f=_0x5d01[_0x2cfad9];return _0x1d325f;};'use strict';var MailMessageEvents=require(_0x15d0('0x0'));var events=['save',_0x15d0('0x1'),_0x15d0('0x2')];function createListener(_0x580bc6,_0xe135d0){return function(_0x665632){_0xe135d0['emit'](_0x580bc6,_0x665632);};}function removeListener(_0x53abcf,_0x1a067d){return function(){MailMessageEvents[_0x15d0('0x3')](_0x53abcf,_0x1a067d);};}exports[_0x15d0('0x4')]=function(_0x1b0e27){for(var _0x2af55d=0x0,_0x38d2f4=events[_0x15d0('0x5')];_0x2af55d<_0x38d2f4;_0x2af55d++){var _0x336c8c=events[_0x2af55d];var _0x4e5c50=createListener(_0x15d0('0x6')+_0x336c8c,_0x1b0e27);MailMessageEvents['on'](_0x336c8c,_0x4e5c50);}};
\ No newline at end of file
+var _0xb73c=['removeListener','register','length','mailMessage:','./mailMessage.events','save','remove','update','emit'];(function(_0x410046,_0x57f2d8){var _0x19d054=function(_0x19583c){while(--_0x19583c){_0x410046['push'](_0x410046['shift']());}};_0x19d054(++_0x57f2d8);}(_0xb73c,0x175));var _0xcb73=function(_0x2406f4,_0x52a3a5){_0x2406f4=_0x2406f4-0x0;var _0x3aeb5b=_0xb73c[_0x2406f4];return _0x3aeb5b;};'use strict';var MailMessageEvents=require(_0xcb73('0x0'));var events=[_0xcb73('0x1'),_0xcb73('0x2'),_0xcb73('0x3')];function createListener(_0x541aa8,_0x2ef655){return function(_0x12ac57){_0x2ef655[_0xcb73('0x4')](_0x541aa8,_0x12ac57);};}function removeListener(_0xafe9bb,_0x41f240){return function(){MailMessageEvents[_0xcb73('0x5')](_0xafe9bb,_0x41f240);};}exports[_0xcb73('0x6')]=function(_0x26b184){for(var _0x3988f8=0x0,_0x3aa1a9=events[_0xcb73('0x7')];_0x3988f8<_0x3aa1a9;_0x3988f8++){var _0x136024=events[_0x3988f8];var _0x4a94c5=createListener(_0xcb73('0x8')+_0x136024,_0x26b184);MailMessageEvents['on'](_0x136024,_0x4a94c5);}};
\ No newline at end of file
index dc952e8..be760b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5a5=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','/:id/users','post','create','addTeams','addAgents','update','delete','destroy','/:id/teams','removeTeams','util','path','connect-timeout','fs-extra'];(function(_0x4c4514,_0x17ef94){var _0x1ae39b=function(_0x4c7362){while(--_0x4c7362){_0x4c4514['push'](_0x4c4514['shift']());}};_0x1ae39b(++_0x17ef94);}(_0xa5a5,0x10f));var _0x5a5a=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xa5a5[_0x42cae2];return _0x5f256f;};'use strict';var multer=require('multer');var util=require(_0x5a5a('0x0'));var path=require(_0x5a5a('0x1'));var timeout=require(_0x5a5a('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5a5a('0x3'));var auth=require(_0x5a5a('0x4'));var interaction=require(_0x5a5a('0x5'));var config=require(_0x5a5a('0x6'));var controller=require('./mailQueue.controller');router[_0x5a5a('0x7')]('/',auth[_0x5a5a('0x8')](),controller[_0x5a5a('0x9')]);router[_0x5a5a('0x7')](_0x5a5a('0xa'),auth[_0x5a5a('0x8')](),controller[_0x5a5a('0xb')]);router['get'](_0x5a5a('0xc'),auth[_0x5a5a('0x8')](),controller[_0x5a5a('0xd')]);router[_0x5a5a('0x7')](_0x5a5a('0xe'),auth[_0x5a5a('0x8')](),controller['getMembers']);router[_0x5a5a('0x7')]('/:id/teams',auth[_0x5a5a('0x8')](),controller['getTeams']);router['get'](_0x5a5a('0xf'),auth[_0x5a5a('0x8')](),controller['getAgents']);router[_0x5a5a('0x10')]('/',auth[_0x5a5a('0x8')](),controller[_0x5a5a('0x11')]);router[_0x5a5a('0x10')]('/:id/teams',auth[_0x5a5a('0x8')](),controller[_0x5a5a('0x12')]);router['post'](_0x5a5a('0xf'),auth[_0x5a5a('0x8')](),controller[_0x5a5a('0x13')]);router['put'](_0x5a5a('0xc'),auth[_0x5a5a('0x8')](),controller[_0x5a5a('0x14')]);router[_0x5a5a('0x15')](_0x5a5a('0xc'),auth['isAuthenticated'](),controller[_0x5a5a('0x16')]);router[_0x5a5a('0x15')](_0x5a5a('0x17'),auth[_0x5a5a('0x8')](),controller[_0x5a5a('0x18')]);router[_0x5a5a('0x15')](_0x5a5a('0xf'),auth[_0x5a5a('0x8')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0xb92a=['index','/describe','describe','/:id','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','put','delete','destroy','removeTeams','removeAgents','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','isAuthenticated'];(function(_0x4e7af4,_0x758572){var _0x2548f1=function(_0xa849c){while(--_0xa849c){_0x4e7af4['push'](_0x4e7af4['shift']());}};_0x2548f1(++_0x758572);}(_0xb92a,0xa0));var _0xab92=function(_0xa7c515,_0x315b37){_0xa7c515=_0xa7c515-0x0;var _0x32b4dc=_0xb92a[_0xa7c515];return _0x32b4dc;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xab92('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xab92('0x1'));var auth=require(_0xab92('0x2'));var interaction=require(_0xab92('0x3'));var config=require(_0xab92('0x4'));var controller=require(_0xab92('0x5'));router[_0xab92('0x6')]('/',auth[_0xab92('0x7')](),controller[_0xab92('0x8')]);router[_0xab92('0x6')](_0xab92('0x9'),auth[_0xab92('0x7')](),controller[_0xab92('0xa')]);router[_0xab92('0x6')](_0xab92('0xb'),auth[_0xab92('0x7')](),controller['show']);router[_0xab92('0x6')](_0xab92('0xc'),auth[_0xab92('0x7')](),controller['getMembers']);router[_0xab92('0x6')](_0xab92('0xd'),auth[_0xab92('0x7')](),controller[_0xab92('0xe')]);router[_0xab92('0x6')](_0xab92('0xf'),auth[_0xab92('0x7')](),controller[_0xab92('0x10')]);router['post']('/',auth[_0xab92('0x7')](),controller['create']);router[_0xab92('0x11')](_0xab92('0xd'),auth['isAuthenticated'](),controller[_0xab92('0x12')]);router['post'](_0xab92('0xf'),auth['isAuthenticated'](),controller['addAgents']);router[_0xab92('0x13')](_0xab92('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xab92('0x14')]('/:id',auth[_0xab92('0x7')](),controller[_0xab92('0x15')]);router['delete'](_0xab92('0xd'),auth[_0xab92('0x7')](),controller[_0xab92('0x16')]);router['delete'](_0xab92('0xf'),auth[_0xab92('0x7')](),controller[_0xab92('0x17')]);module['exports']=router;
\ No newline at end of file
index a70413f..852761b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1ab=['sequelize','STRING','name','ENUM','rrmemory','beepall','roundrobin'];(function(_0x19ae45,_0x4d9069){var _0x3696c7=function(_0x5c855d){while(--_0x5c855d){_0x19ae45['push'](_0x19ae45['shift']());}};_0x3696c7(++_0x4d9069);}(_0xb1ab,0x1b9));var _0xbb1a=function(_0x20b29c,_0xe22528){_0x20b29c=_0x20b29c-0x0;var _0x20d81b=_0xb1ab[_0x20b29c];return _0x20d81b;};'use strict';var Sequelize=require(_0xbb1a('0x0'));module['exports']={'name':{'type':Sequelize[_0xbb1a('0x1')],'unique':_0xbb1a('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xbb1a('0x1')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xbb1a('0x3')](_0xbb1a('0x4'),_0xbb1a('0x5'),_0xbb1a('0x6'))}};
\ No newline at end of file
+var _0x9095=['rrmemory','beepall','roundrobin','sequelize','exports','ENUM'];(function(_0x546c68,_0x5c0116){var _0x4a2389=function(_0x5aa205){while(--_0x5aa205){_0x546c68['push'](_0x546c68['shift']());}};_0x4a2389(++_0x5c0116);}(_0x9095,0xc3));var _0x5909=function(_0x5a6644,_0x45d612){_0x5a6644=_0x5a6644-0x0;var _0x3a2a5d=_0x9095[_0x5a6644];return _0x3a2a5d;};'use strict';var Sequelize=require(_0x5909('0x0'));module[_0x5909('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x5909('0x2')](_0x5909('0x3'),_0x5909('0x4'),_0x5909('0x5'))}};
\ No newline at end of file
index 77c7b89..11185da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7a9=['sequelize','transaction','findOrCreate','forEach','emit','userMailQueue:save','findAll','select','field','tq.TeamId','from','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','ut.UserId\x20=\x20?','SELECT','every','TeamId','includes','all','union','isEmpty','removeAgents','userMailQueue:remove','addAgents','omit','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','register','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','then','get','destroy','sendStatus','error','stack','name','send','index','MailQueue','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','options','includeAll','rows','catch','show','keys','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','MailQueues','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','params','describe','getMembers','findOne','MailQueueId','UserMailQueue','User','UserId','agent','mailPause','createdAt','format','updatedAt','getTeams','addTeams','ids','Agents','online','voicePause','interface','flatMap'];(function(_0x39e84d,_0x11931d){var _0x1991bc=function(_0xc81e32){while(--_0xc81e32){_0x39e84d['push'](_0x39e84d['shift']());}};_0x1991bc(++_0x11931d);}(_0xc7a9,0x134));var _0x9c7a=function(_0x51a2b5,_0x204a21){_0x51a2b5=_0x51a2b5-0x0;var _0x6f953=_0xc7a9[_0x51a2b5];return _0x6f953;};'use strict';var emlformat=require(_0x9c7a('0x0'));var rimraf=require(_0x9c7a('0x1'));var zipdir=require(_0x9c7a('0x2'));var jsonpatch=require(_0x9c7a('0x3'));var rp=require(_0x9c7a('0x4'));var moment=require(_0x9c7a('0x5'));var BPromise=require(_0x9c7a('0x6'));var Mustache=require(_0x9c7a('0x7'));var util=require(_0x9c7a('0x8'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x9c7a('0x9'));var fs=require('fs');var fs_extra=require(_0x9c7a('0xa'));var _=require('lodash');var squel=require(_0x9c7a('0xb'));var crypto=require(_0x9c7a('0xc'));var jsforce=require(_0x9c7a('0xd'));var deskjs=require(_0x9c7a('0xe'));var toCsv=require(_0x9c7a('0xf'));var querystring=require(_0x9c7a('0x10'));var Papa=require(_0x9c7a('0x11'));var Redis=require(_0x9c7a('0x12'));var authService=require(_0x9c7a('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x9c7a('0x14'));var utils=require(_0x9c7a('0x15'));var config=require(_0x9c7a('0x16'));var licenseUtil=require(_0x9c7a('0x17'));var db=require(_0x9c7a('0x18'))['db'];config[_0x9c7a('0x19')]=_['defaults'](config[_0x9c7a('0x19')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./mailQueue.socket')[_0x9c7a('0x1a')](socket);function respondWithStatusCode(_0x3d5fb4,_0x374463){_0x374463=_0x374463||0xcc;return function(_0x39a25c){if(_0x39a25c){return _0x3d5fb4['sendStatus'](_0x374463);}return _0x3d5fb4[_0x9c7a('0x1b')](_0x374463)[_0x9c7a('0x1c')]();};}function respondWithResult(_0x28a2ac,_0x188032){_0x188032=_0x188032||0xc8;return function(_0x571272){if(_0x571272){return _0x28a2ac[_0x9c7a('0x1b')](_0x188032)[_0x9c7a('0x1d')](_0x571272);}};}function respondWithFilteredResult(_0x554f6b,_0x338215){return function(_0x35a12f){if(_0x35a12f){var _0x3c74af=typeof _0x338215[_0x9c7a('0x1e')]===_0x9c7a('0x1f')&&typeof _0x338215['limit']==='undefined';var _0x681af7=_0x35a12f[_0x9c7a('0x20')];var _0x4a40f0=_0x3c74af?0x0:_0x338215[_0x9c7a('0x1e')];var _0xc986c6=_0x3c74af?_0x35a12f[_0x9c7a('0x20')]:_0x338215[_0x9c7a('0x1e')]+_0x338215[_0x9c7a('0x21')];var _0x4b8629;if(_0xc986c6>=_0x681af7){_0xc986c6=_0x681af7;_0x4b8629=0xc8;}else{_0x4b8629=0xce;}_0x554f6b['status'](_0x4b8629);return _0x554f6b['set'](_0x9c7a('0x22'),_0x4a40f0+'-'+_0xc986c6+'/'+_0x681af7)[_0x9c7a('0x1d')](_0x35a12f);}return null;};}function patchUpdates(_0x789158){return function(_0x156fb8){try{jsonpatch[_0x9c7a('0x23')](_0x156fb8,_0x789158,!![]);}catch(_0x32ec2e){return BPromise[_0x9c7a('0x24')](_0x32ec2e);}return _0x156fb8[_0x9c7a('0x25')]();};}function saveUpdates(_0x1f8e2a,_0xca7e39){return function(_0x1c9520){if(_0x1c9520){return _0x1c9520['update'](_0x1f8e2a)[_0x9c7a('0x26')](function(_0x28a59a){return _0x28a59a;});}return null;};}function removeEntity(_0x3fa7e3,_0x4f8dce){return function(_0xecc2b0){if(_0xecc2b0){return _0xecc2b0['destroy']()[_0x9c7a('0x26')](function(){var _0x8e9eb=_0xecc2b0[_0x9c7a('0x27')]({'plain':!![]});var _0x243439='MailQueues';return db['UserProfileResource'][_0x9c7a('0x28')]({'where':{'type':_0x243439,'resourceId':_0x8e9eb['id']}})[_0x9c7a('0x26')](function(){return _0xecc2b0;});})[_0x9c7a('0x26')](function(){_0x3fa7e3['status'](0xcc)[_0x9c7a('0x1c')]();});}};}function handleEntityNotFound(_0x57687e,_0x95591e){return function(_0x361b33){if(!_0x361b33){_0x57687e[_0x9c7a('0x29')](0x194);}return _0x361b33;};}function handleError(_0x472469,_0x35c0b5){_0x35c0b5=_0x35c0b5||0x1f4;return function(_0x4ed78e){logger[_0x9c7a('0x2a')](_0x4ed78e[_0x9c7a('0x2b')]);if(_0x4ed78e[_0x9c7a('0x2c')]){delete _0x4ed78e['name'];}_0x472469[_0x9c7a('0x1b')](_0x35c0b5)[_0x9c7a('0x2d')](_0x4ed78e);};}exports[_0x9c7a('0x2e')]=function(_0x36c34a,_0x5eb7f8){var _0x12779c={},_0x53ba59={},_0x3ecb48={'count':0x0,'rows':[]};var _0x4f156a=_['map'](db[_0x9c7a('0x2f')][_0x9c7a('0x30')],function(_0x195180){return{'name':_0x195180[_0x9c7a('0x31')],'type':_0x195180[_0x9c7a('0x32')][_0x9c7a('0x33')]};});_0x53ba59['model']=_['map'](_0x4f156a,_0x9c7a('0x2c'));_0x53ba59[_0x9c7a('0x34')]=_['keys'](_0x36c34a[_0x9c7a('0x34')]);_0x53ba59[_0x9c7a('0x35')]=_[_0x9c7a('0x36')](_0x53ba59[_0x9c7a('0x37')],_0x53ba59[_0x9c7a('0x34')]);_0x12779c[_0x9c7a('0x38')]=_['intersection'](_0x53ba59[_0x9c7a('0x37')],qs[_0x9c7a('0x39')](_0x36c34a[_0x9c7a('0x34')][_0x9c7a('0x39')]));_0x12779c[_0x9c7a('0x38')]=_0x12779c['attributes'][_0x9c7a('0x3a')]?_0x12779c[_0x9c7a('0x38')]:_0x53ba59['model'];if(!_0x36c34a[_0x9c7a('0x34')][_0x9c7a('0x3b')](_0x9c7a('0x3c'))){_0x12779c[_0x9c7a('0x21')]=qs[_0x9c7a('0x21')](_0x36c34a[_0x9c7a('0x34')][_0x9c7a('0x21')]);_0x12779c[_0x9c7a('0x1e')]=qs[_0x9c7a('0x1e')](_0x36c34a[_0x9c7a('0x34')]['offset']);}_0x12779c[_0x9c7a('0x3d')]=qs[_0x9c7a('0x3e')](_0x36c34a[_0x9c7a('0x34')][_0x9c7a('0x3e')]);_0x12779c[_0x9c7a('0x3f')]=qs['filters'](_[_0x9c7a('0x40')](_0x36c34a[_0x9c7a('0x34')],_0x53ba59[_0x9c7a('0x35')]),_0x4f156a);if(_0x36c34a[_0x9c7a('0x34')][_0x9c7a('0x41')]){_0x12779c[_0x9c7a('0x3f')]=_[_0x9c7a('0x42')](_0x12779c['where'],{'$or':_[_0x9c7a('0x43')](_0x4f156a,function(_0x28d9c3){if(_0x28d9c3[_0x9c7a('0x32')]!==_0x9c7a('0x44')){var _0x8f9680={};_0x8f9680[_0x28d9c3['name']]={'$like':'%'+_0x36c34a['query'][_0x9c7a('0x41')]+'%'};return _0x8f9680;}})});}_0x12779c=_[_0x9c7a('0x42')]({},_0x12779c,_0x36c34a[_0x9c7a('0x45')]);var _0x150e46={'where':_0x12779c['where']};return db[_0x9c7a('0x2f')]['count'](_0x150e46)[_0x9c7a('0x26')](function(_0x423f5d){_0x3ecb48[_0x9c7a('0x20')]=_0x423f5d;if(_0x36c34a[_0x9c7a('0x34')][_0x9c7a('0x46')]){_0x12779c['include']=[{'all':!![]}];}return db[_0x9c7a('0x2f')]['findAll'](_0x12779c);})[_0x9c7a('0x26')](function(_0xf321d3){_0x3ecb48[_0x9c7a('0x47')]=_0xf321d3;return _0x3ecb48;})[_0x9c7a('0x26')](respondWithFilteredResult(_0x5eb7f8,_0x12779c))[_0x9c7a('0x48')](handleError(_0x5eb7f8,null));};exports[_0x9c7a('0x49')]=function(_0x3121fd,_0x48d1ef){var _0x43b5f9={'raw':!![],'where':{'id':_0x3121fd['params']['id']}},_0x42b8e8={};_0x42b8e8[_0x9c7a('0x37')]=_[_0x9c7a('0x4a')](db[_0x9c7a('0x2f')][_0x9c7a('0x30')]);_0x42b8e8[_0x9c7a('0x34')]=_[_0x9c7a('0x4a')](_0x3121fd[_0x9c7a('0x34')]);_0x42b8e8['filters']=_['intersection'](_0x42b8e8[_0x9c7a('0x37')],_0x42b8e8[_0x9c7a('0x34')]);_0x43b5f9[_0x9c7a('0x38')]=_['intersection'](_0x42b8e8[_0x9c7a('0x37')],qs[_0x9c7a('0x39')](_0x3121fd[_0x9c7a('0x34')][_0x9c7a('0x39')]));_0x43b5f9[_0x9c7a('0x38')]=_0x43b5f9['attributes']['length']?_0x43b5f9[_0x9c7a('0x38')]:_0x42b8e8[_0x9c7a('0x37')];if(_0x3121fd['query'][_0x9c7a('0x46')]){_0x43b5f9[_0x9c7a('0x4b')]=[{'all':!![]}];}_0x43b5f9=_[_0x9c7a('0x42')]({},_0x43b5f9,_0x3121fd[_0x9c7a('0x45')]);return db['MailQueue'][_0x9c7a('0x4c')](_0x43b5f9)[_0x9c7a('0x26')](handleEntityNotFound(_0x48d1ef,null))[_0x9c7a('0x26')](respondWithResult(_0x48d1ef,null))['catch'](handleError(_0x48d1ef,null));};exports[_0x9c7a('0x4d')]=function(_0x4cb645,_0x116cfd){return db[_0x9c7a('0x2f')][_0x9c7a('0x4d')](_0x4cb645['body'],{})[_0x9c7a('0x26')](function(_0x595a4e){var _0x42d6c2=_0x4cb645[_0x9c7a('0x4e')]['get']({'plain':!![]});if(!_0x42d6c2)throw new Error(_0x9c7a('0x4f'));if(_0x42d6c2[_0x9c7a('0x50')]===_0x9c7a('0x4e')){var _0x3de1cf=_0x595a4e['get']({'plain':!![]});var _0x5868f0=_0x9c7a('0x51');return db[_0x9c7a('0x52')]['find']({'where':{'name':_0x5868f0,'userProfileId':_0x42d6c2[_0x9c7a('0x53')]},'raw':!![]})[_0x9c7a('0x26')](function(_0x37b1c0){if(_0x37b1c0&&_0x37b1c0[_0x9c7a('0x54')]===0x0){return db['UserProfileResource'][_0x9c7a('0x4d')]({'name':_0x3de1cf[_0x9c7a('0x2c')],'resourceId':_0x3de1cf['id'],'type':_0x37b1c0['name'],'sectionId':_0x37b1c0['id']},{})['then'](function(){return _0x595a4e;});}else{return _0x595a4e;}})[_0x9c7a('0x48')](function(_0x4b7611){logger['error'](_0x9c7a('0x55'),_0x4b7611);throw _0x4b7611;});}return _0x595a4e;})['then'](respondWithResult(_0x116cfd,0xc9))[_0x9c7a('0x48')](handleError(_0x116cfd,null));};exports[_0x9c7a('0x56')]=function(_0x3a0c51,_0x1ce982){if(_0x3a0c51[_0x9c7a('0x57')]['id']){delete _0x3a0c51[_0x9c7a('0x57')]['id'];}return db['MailQueue'][_0x9c7a('0x4c')]({'where':{'id':_0x3a0c51['params']['id']}})[_0x9c7a('0x26')](handleEntityNotFound(_0x1ce982,null))[_0x9c7a('0x26')](saveUpdates(_0x3a0c51[_0x9c7a('0x57')],null))[_0x9c7a('0x26')](respondWithResult(_0x1ce982,null))['catch'](handleError(_0x1ce982,null));};exports[_0x9c7a('0x28')]=function(_0x3b2f42,_0x1afdd7){return db[_0x9c7a('0x2f')][_0x9c7a('0x4c')]({'where':{'id':_0x3b2f42[_0x9c7a('0x58')]['id']}})[_0x9c7a('0x26')](handleEntityNotFound(_0x1afdd7,null))['then'](removeEntity(_0x1afdd7,null))[_0x9c7a('0x48')](handleError(_0x1afdd7,null));};exports[_0x9c7a('0x59')]=function(_0x5a9962,_0x2552af){return db[_0x9c7a('0x2f')][_0x9c7a('0x59')]()[_0x9c7a('0x26')](respondWithResult(_0x2552af,null))[_0x9c7a('0x48')](handleError(_0x2552af,null));};exports[_0x9c7a('0x5a')]=function(_0x3aafed,_0x58fb64,_0x266996){var _0x29048b={'raw':!![],'where':{}},_0xca45b9={},_0x598226;return db[_0x9c7a('0x2f')][_0x9c7a('0x5b')]({'where':{'id':_0x3aafed[_0x9c7a('0x58')]['id']}})['then'](handleEntityNotFound(_0x58fb64,null))['then'](function(_0x1ed6f9){if(_0x1ed6f9){_0x598226=_0x1ed6f9[_0x9c7a('0x27')]({'plain':!![]});_0xca45b9[_0x9c7a('0x37')]=_[_0x9c7a('0x4a')](db['UserMailQueue'][_0x9c7a('0x30')]);_0xca45b9['query']=_[_0x9c7a('0x4a')](_0x3aafed[_0x9c7a('0x34')]);_0xca45b9[_0x9c7a('0x35')]=_[_0x9c7a('0x36')](_0xca45b9['model'],_0xca45b9[_0x9c7a('0x34')]);_0x29048b[_0x9c7a('0x38')]=_['intersection'](_0xca45b9[_0x9c7a('0x37')],qs['fields'](_0x3aafed[_0x9c7a('0x34')]['fields']));_0x29048b[_0x9c7a('0x38')]=_0x29048b[_0x9c7a('0x38')][_0x9c7a('0x3a')]?_0x29048b[_0x9c7a('0x38')]:_0xca45b9[_0x9c7a('0x37')];if(!_0x3aafed['query'][_0x9c7a('0x3b')](_0x9c7a('0x3c'))){_0x29048b[_0x9c7a('0x21')]=qs[_0x9c7a('0x21')](_0x3aafed[_0x9c7a('0x34')][_0x9c7a('0x21')]);_0x29048b['offset']=qs[_0x9c7a('0x1e')](_0x3aafed[_0x9c7a('0x34')][_0x9c7a('0x1e')]);}_0x29048b[_0x9c7a('0x3d')]=qs['sort'](_0x3aafed[_0x9c7a('0x34')][_0x9c7a('0x3e')]);_0x29048b['where']=qs['filters'](_[_0x9c7a('0x40')](_0x3aafed[_0x9c7a('0x34')],_0xca45b9[_0x9c7a('0x35')]));_0x29048b[_0x9c7a('0x3f')][_0x9c7a('0x5c')]=_0x1ed6f9['id'];if(_0x3aafed[_0x9c7a('0x34')][_0x9c7a('0x41')]){_0x29048b['where']=_['merge'](_0x29048b[_0x9c7a('0x3f')],{'$or':_[_0x9c7a('0x43')](_0x29048b[_0x9c7a('0x38')],function(_0x272479){var _0xe8057={};_0xe8057[_0x272479]={'$like':'%'+_0x3aafed[_0x9c7a('0x34')][_0x9c7a('0x41')]+'%'};return _0xe8057;})});}_0x29048b=_[_0x9c7a('0x42')]({},_0x29048b,_0x3aafed['options']);return db[_0x9c7a('0x5d')]['findAll'](_0x29048b);}})['then'](function(_0x3c2252){if(_0x3c2252){return db[_0x9c7a('0x5e')]['findAndCountAll']({'where':{'id':_['map'](_0x3c2252,_0x9c7a('0x5f')),'role':_0x9c7a('0x60')},'attributes':['id',_0x9c7a('0x2c'),_0x9c7a('0x61'),'updatedAt',_0x9c7a('0x62')]});}})[_0x9c7a('0x26')](function(_0x5a9b62){if(_0x5a9b62){return{'count':_0x5a9b62['count'],'rows':_['map'](_0x5a9b62[_0x9c7a('0x47')],function(_0x2ae38){return{'membername':_0x2ae38['name'],'UserId':_0x2ae38['id'],'queue_name':_0x598226['name'],'MailQueueId':_0x598226['id'],'interface':util[_0x9c7a('0x63')]('%s/%s','SIP',_0x2ae38[_0x9c7a('0x2c')]),'penalty':0x0,'paused':_0x2ae38[_0x9c7a('0x61')],'createdAt':_0x2ae38['createdAt'],'updatedAt':_0x2ae38[_0x9c7a('0x64')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x9c7a('0x26')](respondWithFilteredResult(_0x58fb64,_0x29048b))[_0x9c7a('0x48')](handleError(_0x58fb64,null));};exports['getTeams']=function(_0x401219,_0x520645,_0x3e5bc9){var _0x35687a={};var _0x2ea097={};var _0x2810fe;var _0x40e916;return db[_0x9c7a('0x2f')]['findOne']({'where':{'id':_0x401219[_0x9c7a('0x58')]['id']}})[_0x9c7a('0x26')](handleEntityNotFound(_0x520645,null))[_0x9c7a('0x26')](function(_0x11b6bc){if(_0x11b6bc){_0x2810fe=_0x11b6bc;_0x2ea097[_0x9c7a('0x37')]=_[_0x9c7a('0x4a')](db['Team'][_0x9c7a('0x30')]);_0x2ea097[_0x9c7a('0x34')]=_['keys'](_0x401219[_0x9c7a('0x34')]);_0x2ea097[_0x9c7a('0x35')]=_[_0x9c7a('0x36')](_0x2ea097['model'],_0x2ea097[_0x9c7a('0x34')]);_0x35687a[_0x9c7a('0x38')]=_['intersection'](_0x2ea097[_0x9c7a('0x37')],qs[_0x9c7a('0x39')](_0x401219[_0x9c7a('0x34')][_0x9c7a('0x39')]));_0x35687a[_0x9c7a('0x38')]=_0x35687a[_0x9c7a('0x38')][_0x9c7a('0x3a')]?_0x35687a[_0x9c7a('0x38')]:_0x2ea097[_0x9c7a('0x37')];_0x35687a[_0x9c7a('0x3d')]=qs['sort'](_0x401219['query'][_0x9c7a('0x3e')]);_0x35687a[_0x9c7a('0x3f')]=qs[_0x9c7a('0x35')](_[_0x9c7a('0x40')](_0x401219[_0x9c7a('0x34')],_0x2ea097[_0x9c7a('0x35')]));if(_0x401219[_0x9c7a('0x34')][_0x9c7a('0x41')]){_0x35687a[_0x9c7a('0x3f')]=_[_0x9c7a('0x42')](_0x35687a[_0x9c7a('0x3f')],{'$or':_['map'](_0x35687a['attributes'],function(_0x49814e){var _0x58ad39={};_0x58ad39[_0x49814e]={'$like':'%'+_0x401219[_0x9c7a('0x34')][_0x9c7a('0x41')]+'%'};return _0x58ad39;})});}_0x35687a=_[_0x9c7a('0x42')]({},_0x35687a,_0x401219[_0x9c7a('0x45')]);return _0x2810fe['getTeams'](_0x35687a);}})[_0x9c7a('0x26')](function(_0x5c2087){if(_0x5c2087){_0x40e916=_0x5c2087[_0x9c7a('0x3a')];if(!_0x401219[_0x9c7a('0x34')][_0x9c7a('0x3b')](_0x9c7a('0x3c'))){_0x35687a[_0x9c7a('0x21')]=qs[_0x9c7a('0x21')](_0x401219[_0x9c7a('0x34')][_0x9c7a('0x21')]);_0x35687a['offset']=qs[_0x9c7a('0x1e')](_0x401219[_0x9c7a('0x34')][_0x9c7a('0x1e')]);}return _0x2810fe[_0x9c7a('0x65')](_0x35687a);}})['then'](function(_0x1115f8){if(_0x1115f8){return _0x1115f8?{'count':_0x40e916,'rows':_0x1115f8}:null;}})[_0x9c7a('0x26')](respondWithResult(_0x520645,null))['catch'](handleError(_0x520645,null));};exports[_0x9c7a('0x66')]=function(_0x52467a,_0x1b4f0e,_0x4f9776){var _0x57aef5=_0x52467a[_0x9c7a('0x57')][_0x9c7a('0x67')];return db['Team']['findAll']({'where':{'id':_0x57aef5},'attributes':['id'],'include':[{'model':db['User'],'as':_0x9c7a('0x68'),'attributes':['id',_0x9c7a('0x2c'),_0x9c7a('0x69'),_0x9c7a('0x6a'),_0x9c7a('0x6b')],'raw':!![]}]})[_0x9c7a('0x26')](function(_0x332a2b){if(_0x332a2b){var _0x219bfc=_[_0x9c7a('0x6c')](_0x332a2b,function(_0x13dd9c){var _0x27b18d=_0x13dd9c['get']({'plain':!![]});return _0x27b18d['Agents'];});return db[_0x9c7a('0x2f')]['find']({'where':{'id':_0x52467a['params']['id']}})['then'](function(_0x321112){return db[_0x9c7a('0x6d')][_0x9c7a('0x6e')](function(_0x10ff7d){return _0x321112[_0x9c7a('0x66')](_0x57aef5,{'transaction':_0x10ff7d})[_0x9c7a('0x26')](function(){return BPromise['each'](_0x219bfc,function(_0x448ec4){return db[_0x9c7a('0x5d')][_0x9c7a('0x6f')]({'where':{'UserId':_0x448ec4['id'],'MailQueueId':_0x52467a[_0x9c7a('0x58')]['id']},'transaction':_0x10ff7d});});})[_0x9c7a('0x26')](function(){_0x219bfc[_0x9c7a('0x70')](function(_0x54f73f){socket[_0x9c7a('0x71')](_0x9c7a('0x72'),{'UserId':_0x54f73f['id'],'MailQueueId':_0x321112['id']});});});});});}})['then'](respondWithStatusCode(_0x1b4f0e,null))[_0x9c7a('0x48')](handleError(_0x1b4f0e,null));};exports['removeTeams']=function(_0x95a59c,_0xac9dd4,_0x4c0b2b){return db['Team'][_0x9c7a('0x73')]({'where':{'id':_0x95a59c['query'][_0x9c7a('0x67')]},'attributes':['id'],'include':[{'model':db[_0x9c7a('0x5e')],'as':_0x9c7a('0x68'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0xac9dd4,null))[_0x9c7a('0x26')](function(_0x39ae5c){var _0x587a38=_[_0x9c7a('0x43')](_0x39ae5c,'id');var _0x44946e=[];var _0x1a83eb=[];var _0x54d34b=squel[_0x9c7a('0x74')]();_0x54d34b[_0x9c7a('0x75')](_0x9c7a('0x76'))[_0x9c7a('0x77')](_0x9c7a('0x78'),'tq')[_0x9c7a('0x79')](_0x9c7a('0x7a'),'ut',_0x9c7a('0x7b'))[_0x9c7a('0x3f')](_0x9c7a('0x7c'),_0x95a59c[_0x9c7a('0x58')]['id']);for(var _0x52ce4d=0x0;_0x52ce4d<_0x39ae5c[_0x9c7a('0x3a')];_0x52ce4d+=0x1){let _0x1f6384=_0x39ae5c[_0x52ce4d];for(var _0x1546c2=0x0;_0x1546c2<_0x1f6384[_0x9c7a('0x68')]['length'];_0x1546c2+=0x1){let _0x3523c3=_0x1f6384[_0x9c7a('0x68')][_0x1546c2];var _0x535f91=_0x54d34b['clone']();_0x535f91['where'](_0x9c7a('0x7d'),_0x3523c3['id']);_0x1a83eb['push'](db['sequelize'][_0x9c7a('0x34')](_0x535f91['toString'](),{'type':db[_0x9c7a('0x6d')]['QueryTypes'][_0x9c7a('0x7e')]})[_0x9c7a('0x26')](function(_0x4988d6){if(_0x4988d6[_0x9c7a('0x3a')]===0x1){return _0x3523c3['id'];}else{var _0x306bac=_[_0x9c7a('0x7f')](_[_0x9c7a('0x43')](_0x4988d6,_0x9c7a('0x80')),function(_0x487a01){return _[_0x9c7a('0x81')](_0x587a38,_0x487a01);});if(_0x306bac){return _0x3523c3['id'];}}}));}}return BPromise[_0x9c7a('0x82')](_0x1a83eb)['then'](function(_0x156cac){_0x44946e=_(_0x44946e)[_0x9c7a('0x83')](_0x156cac)['compact']()['value']();return db[_0x9c7a('0x2f')][_0x9c7a('0x4c')]({'where':{'id':_0x95a59c[_0x9c7a('0x58')]['id']}})[_0x9c7a('0x26')](function(_0x2e56c7){return db['sequelize'][_0x9c7a('0x6e')](function(_0x6bc62d){return _0x2e56c7['removeTeams'](_0x95a59c['query'][_0x9c7a('0x67')],{'transaction':_0x6bc62d})['then'](function(){if(!_[_0x9c7a('0x84')](_0x44946e)){return _0x2e56c7[_0x9c7a('0x85')](_0x44946e,{'transaction':_0x6bc62d});}})[_0x9c7a('0x26')](function(){_0x44946e[_0x9c7a('0x70')](function(_0x493f00){socket[_0x9c7a('0x71')](_0x9c7a('0x86'),{'UserId':_0x493f00,'MailQueueId':_0x2e56c7['id']});});});});});});})['then'](respondWithStatusCode(_0xac9dd4,null))[_0x9c7a('0x48')](handleError(_0xac9dd4,null));};exports['addAgents']=function(_0x6029fd,_0x29704f,_0x584697){return db[_0x9c7a('0x2f')][_0x9c7a('0x4c')]({'where':{'id':_0x6029fd[_0x9c7a('0x58')]['id']}})[_0x9c7a('0x26')](handleEntityNotFound(_0x29704f,null))[_0x9c7a('0x26')](function(_0x14e9e8){if(_0x14e9e8){return _0x14e9e8[_0x9c7a('0x87')](_0x6029fd[_0x9c7a('0x57')][_0x9c7a('0x67')],_[_0x9c7a('0x88')](_0x6029fd['body'],[_0x9c7a('0x67'),'id'])||{})['spread'](function(_0x269eeb){for(var _0x4e37b5=0x0;_0x4e37b5<_0x6029fd[_0x9c7a('0x57')]['ids'][_0x9c7a('0x3a')];_0x4e37b5+=0x1){socket['emit']('userMailQueue:save',{'UserId':Number(_0x6029fd[_0x9c7a('0x57')]['ids'][_0x4e37b5]),'MailQueueId':Number(_0x6029fd[_0x9c7a('0x58')]['id'])});}return _0x269eeb;});}})[_0x9c7a('0x26')](respondWithResult(_0x29704f,null))['catch'](handleError(_0x29704f,null));};exports[_0x9c7a('0x85')]=function(_0xeca814,_0x12d4c0,_0x1d6469){return db[_0x9c7a('0x2f')][_0x9c7a('0x4c')]({'where':{'id':_0xeca814['params']['id']}})[_0x9c7a('0x26')](handleEntityNotFound(_0x12d4c0,null))['then'](function(_0x1da409){if(_0x1da409){return _0x1da409[_0x9c7a('0x85')](_0xeca814[_0x9c7a('0x34')]['ids'])[_0x9c7a('0x26')](function(){if(_[_0x9c7a('0x89')](_0xeca814[_0x9c7a('0x34')][_0x9c7a('0x67')])){for(var _0x3e7ffc=0x0;_0x3e7ffc<_0xeca814[_0x9c7a('0x34')][_0x9c7a('0x67')][_0x9c7a('0x3a')];_0x3e7ffc+=0x1){socket[_0x9c7a('0x71')](_0x9c7a('0x86'),{'UserId':Number(_0xeca814[_0x9c7a('0x34')][_0x9c7a('0x67')][_0x3e7ffc]),'MailQueueId':Number(_0xeca814['params']['id'])});}}else{socket[_0x9c7a('0x71')](_0x9c7a('0x86'),{'UserId':Number(_0xeca814['query']['ids']),'MailQueueId':Number(_0xeca814['params']['id'])});}});}})[_0x9c7a('0x26')](respondWithStatusCode(_0x12d4c0,null))['catch'](handleError(_0x12d4c0,null));};exports[_0x9c7a('0x8a')]=function(_0x8691dd,_0x5a7185,_0xe6d1d7){var _0x1d6ed6={};var _0x4e9c27={};var _0x3d3fda;var _0x6c2e5a;return db[_0x9c7a('0x2f')][_0x9c7a('0x5b')]({'where':{'id':_0x8691dd[_0x9c7a('0x58')]['id']}})[_0x9c7a('0x26')](handleEntityNotFound(_0x5a7185,null))[_0x9c7a('0x26')](function(_0x4d8244){if(_0x4d8244){_0x3d3fda=_0x4d8244;_0x4e9c27[_0x9c7a('0x37')]=_['keys'](db[_0x9c7a('0x5e')][_0x9c7a('0x30')]);_0x4e9c27[_0x9c7a('0x34')]=_[_0x9c7a('0x4a')](_0x8691dd[_0x9c7a('0x34')]);_0x4e9c27[_0x9c7a('0x35')]=_[_0x9c7a('0x36')](_0x4e9c27['model'],_0x4e9c27['query']);_0x1d6ed6[_0x9c7a('0x38')]=_[_0x9c7a('0x36')](_0x4e9c27['model'],qs[_0x9c7a('0x39')](_0x8691dd[_0x9c7a('0x34')][_0x9c7a('0x39')]));_0x1d6ed6[_0x9c7a('0x38')]=_0x1d6ed6[_0x9c7a('0x38')][_0x9c7a('0x3a')]?_0x1d6ed6['attributes']:_0x4e9c27[_0x9c7a('0x37')];_0x1d6ed6[_0x9c7a('0x3d')]=qs[_0x9c7a('0x3e')](_0x8691dd[_0x9c7a('0x34')][_0x9c7a('0x3e')]);_0x1d6ed6['where']=qs['filters'](_[_0x9c7a('0x40')](_0x8691dd[_0x9c7a('0x34')],_0x4e9c27[_0x9c7a('0x35')]));if(_0x8691dd[_0x9c7a('0x34')][_0x9c7a('0x41')]){_0x1d6ed6[_0x9c7a('0x3f')]=_[_0x9c7a('0x42')](_0x1d6ed6[_0x9c7a('0x3f')],{'$or':_[_0x9c7a('0x43')](_0x1d6ed6[_0x9c7a('0x38')],function(_0x19f472){var _0x50b846={};_0x50b846[_0x19f472]={'$like':'%'+_0x8691dd[_0x9c7a('0x34')][_0x9c7a('0x41')]+'%'};return _0x50b846;})});}_0x1d6ed6=_[_0x9c7a('0x42')]({},_0x1d6ed6,_0x8691dd[_0x9c7a('0x45')]);return _0x3d3fda[_0x9c7a('0x8a')](_0x1d6ed6);}})[_0x9c7a('0x26')](function(_0x5e6c66){if(_0x5e6c66){_0x6c2e5a=_0x5e6c66[_0x9c7a('0x3a')];if(!_0x8691dd[_0x9c7a('0x34')][_0x9c7a('0x3b')](_0x9c7a('0x3c'))){_0x1d6ed6[_0x9c7a('0x21')]=qs[_0x9c7a('0x21')](_0x8691dd[_0x9c7a('0x34')][_0x9c7a('0x21')]);_0x1d6ed6['offset']=qs[_0x9c7a('0x1e')](_0x8691dd[_0x9c7a('0x34')]['offset']);}return _0x3d3fda[_0x9c7a('0x8a')](_0x1d6ed6);}})[_0x9c7a('0x26')](function(_0x3f820a){if(_0x3f820a){return _0x3f820a?{'count':_0x6c2e5a,'rows':_0x3f820a}:null;}})[_0x9c7a('0x26')](respondWithResult(_0x5a7185,null))[_0x9c7a('0x48')](handleError(_0x5a7185,null));};
\ No newline at end of file
+var _0x3678=['mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','./mailQueue.socket','end','status','json','offset','undefined','limit','count','Content-Range','apply','save','then','destroy','get','MailQueues','UserProfileResource','sendStatus','error','stack','name','send','map','MailQueue','type','key','model','keys','filters','intersection','query','attributes','fields','nolimit','order','sort','pick','filter','where','merge','options','include','findAll','rows','catch','show','params','rawAttributes','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserMailQueue','MailQueueId','User','findAndCountAll','UserId','agent','mailPause','updatedAt','format','%s/%s','getTeams','hasOwnProperty','addTeams','ids','Team','Agents','flatMap','sequelize','each','emit','userMailQueue:save','removeTeams','select','field','team_has_mail_queues','join','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','SELECT','every','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','userMailQueue:remove','addAgents','omit','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x17cebb,_0x39b50c){var _0x1936fe=function(_0x4e3e6a){while(--_0x4e3e6a){_0x17cebb['push'](_0x17cebb['shift']());}};_0x1936fe(++_0x39b50c);}(_0x3678,0x81));var _0x8367=function(_0x2b737c,_0x274adf){_0x2b737c=_0x2b737c-0x0;var _0x466ed5=_0x3678[_0x2b737c];return _0x466ed5;};'use strict';var emlformat=require(_0x8367('0x0'));var rimraf=require(_0x8367('0x1'));var zipdir=require(_0x8367('0x2'));var jsonpatch=require(_0x8367('0x3'));var rp=require(_0x8367('0x4'));var moment=require(_0x8367('0x5'));var BPromise=require(_0x8367('0x6'));var Mustache=require(_0x8367('0x7'));var util=require(_0x8367('0x8'));var path=require(_0x8367('0x9'));var sox=require(_0x8367('0xa'));var csv=require(_0x8367('0xb'));var ejs=require(_0x8367('0xc'));var fs=require('fs');var fs_extra=require(_0x8367('0xd'));var _=require(_0x8367('0xe'));var squel=require(_0x8367('0xf'));var crypto=require('crypto');var jsforce=require(_0x8367('0x10'));var deskjs=require(_0x8367('0x11'));var toCsv=require(_0x8367('0xb'));var querystring=require(_0x8367('0x12'));var Papa=require(_0x8367('0x13'));var Redis=require(_0x8367('0x14'));var authService=require(_0x8367('0x15'));var qs=require(_0x8367('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8367('0x17'));var logger=require(_0x8367('0x18'))(_0x8367('0x19'));var utils=require('../../config/utils');var config=require(_0x8367('0x1a'));var licenseUtil=require(_0x8367('0x1b'));var db=require(_0x8367('0x1c'))['db'];config['redis']=_[_0x8367('0x1d')](config[_0x8367('0x1e')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8367('0x1e')]));require(_0x8367('0x1f'))['register'](socket);function respondWithStatusCode(_0x2548d8,_0x148aa6){_0x148aa6=_0x148aa6||0xcc;return function(_0xf8b8a7){if(_0xf8b8a7){return _0x2548d8['sendStatus'](_0x148aa6);}return _0x2548d8['status'](_0x148aa6)[_0x8367('0x20')]();};}function respondWithResult(_0x3f378d,_0x322bbc){_0x322bbc=_0x322bbc||0xc8;return function(_0x392dd6){if(_0x392dd6){return _0x3f378d[_0x8367('0x21')](_0x322bbc)[_0x8367('0x22')](_0x392dd6);}};}function respondWithFilteredResult(_0x246f0e,_0x36356a){return function(_0x32da6f){if(_0x32da6f){var _0x33c076=typeof _0x36356a[_0x8367('0x23')]===_0x8367('0x24')&&typeof _0x36356a[_0x8367('0x25')]===_0x8367('0x24');var _0x5b2e72=_0x32da6f[_0x8367('0x26')];var _0x22d81e=_0x33c076?0x0:_0x36356a['offset'];var _0x229a99=_0x33c076?_0x32da6f[_0x8367('0x26')]:_0x36356a[_0x8367('0x23')]+_0x36356a[_0x8367('0x25')];var _0x60c6af;if(_0x229a99>=_0x5b2e72){_0x229a99=_0x5b2e72;_0x60c6af=0xc8;}else{_0x60c6af=0xce;}_0x246f0e[_0x8367('0x21')](_0x60c6af);return _0x246f0e['set'](_0x8367('0x27'),_0x22d81e+'-'+_0x229a99+'/'+_0x5b2e72)['json'](_0x32da6f);}return null;};}function patchUpdates(_0x276eab){return function(_0x2f0c6b){try{jsonpatch[_0x8367('0x28')](_0x2f0c6b,_0x276eab,!![]);}catch(_0xb1386d){return BPromise['reject'](_0xb1386d);}return _0x2f0c6b[_0x8367('0x29')]();};}function saveUpdates(_0x985b7,_0x2d5361){return function(_0x1753ad){if(_0x1753ad){return _0x1753ad['update'](_0x985b7)[_0x8367('0x2a')](function(_0x39951d){return _0x39951d;});}return null;};}function removeEntity(_0x223aaa,_0x22993d){return function(_0x272bbe){if(_0x272bbe){return _0x272bbe[_0x8367('0x2b')]()[_0x8367('0x2a')](function(){var _0x4b065f=_0x272bbe[_0x8367('0x2c')]({'plain':!![]});var _0x534d4b=_0x8367('0x2d');return db[_0x8367('0x2e')][_0x8367('0x2b')]({'where':{'type':_0x534d4b,'resourceId':_0x4b065f['id']}})[_0x8367('0x2a')](function(){return _0x272bbe;});})[_0x8367('0x2a')](function(){_0x223aaa[_0x8367('0x21')](0xcc)[_0x8367('0x20')]();});}};}function handleEntityNotFound(_0x438c33,_0x305c41){return function(_0x5ec8fa){if(!_0x5ec8fa){_0x438c33[_0x8367('0x2f')](0x194);}return _0x5ec8fa;};}function handleError(_0x164475,_0x25e7ad){_0x25e7ad=_0x25e7ad||0x1f4;return function(_0x4dcece){logger[_0x8367('0x30')](_0x4dcece[_0x8367('0x31')]);if(_0x4dcece['name']){delete _0x4dcece[_0x8367('0x32')];}_0x164475['status'](_0x25e7ad)[_0x8367('0x33')](_0x4dcece);};}exports['index']=function(_0xcdcf28,_0x31b40b){var _0x4bc1fb={},_0x489c94={},_0x35294b={'count':0x0,'rows':[]};var _0x46c5d6=_[_0x8367('0x34')](db[_0x8367('0x35')]['rawAttributes'],function(_0x5ee272){return{'name':_0x5ee272['fieldName'],'type':_0x5ee272[_0x8367('0x36')][_0x8367('0x37')]};});_0x489c94[_0x8367('0x38')]=_['map'](_0x46c5d6,'name');_0x489c94['query']=_[_0x8367('0x39')](_0xcdcf28['query']);_0x489c94[_0x8367('0x3a')]=_[_0x8367('0x3b')](_0x489c94[_0x8367('0x38')],_0x489c94[_0x8367('0x3c')]);_0x4bc1fb[_0x8367('0x3d')]=_[_0x8367('0x3b')](_0x489c94[_0x8367('0x38')],qs['fields'](_0xcdcf28[_0x8367('0x3c')][_0x8367('0x3e')]));_0x4bc1fb['attributes']=_0x4bc1fb[_0x8367('0x3d')]['length']?_0x4bc1fb[_0x8367('0x3d')]:_0x489c94[_0x8367('0x38')];if(!_0xcdcf28[_0x8367('0x3c')]['hasOwnProperty'](_0x8367('0x3f'))){_0x4bc1fb[_0x8367('0x25')]=qs[_0x8367('0x25')](_0xcdcf28['query'][_0x8367('0x25')]);_0x4bc1fb[_0x8367('0x23')]=qs[_0x8367('0x23')](_0xcdcf28[_0x8367('0x3c')][_0x8367('0x23')]);}_0x4bc1fb[_0x8367('0x40')]=qs[_0x8367('0x41')](_0xcdcf28[_0x8367('0x3c')][_0x8367('0x41')]);_0x4bc1fb['where']=qs['filters'](_[_0x8367('0x42')](_0xcdcf28[_0x8367('0x3c')],_0x489c94['filters']),_0x46c5d6);if(_0xcdcf28[_0x8367('0x3c')][_0x8367('0x43')]){_0x4bc1fb[_0x8367('0x44')]=_[_0x8367('0x45')](_0x4bc1fb[_0x8367('0x44')],{'$or':_[_0x8367('0x34')](_0x46c5d6,function(_0x1c12e6){if(_0x1c12e6[_0x8367('0x36')]!=='VIRTUAL'){var _0x17d249={};_0x17d249[_0x1c12e6[_0x8367('0x32')]]={'$like':'%'+_0xcdcf28[_0x8367('0x3c')]['filter']+'%'};return _0x17d249;}})});}_0x4bc1fb=_[_0x8367('0x45')]({},_0x4bc1fb,_0xcdcf28[_0x8367('0x46')]);var _0x55de01={'where':_0x4bc1fb[_0x8367('0x44')]};return db[_0x8367('0x35')][_0x8367('0x26')](_0x55de01)['then'](function(_0x1edcc3){_0x35294b[_0x8367('0x26')]=_0x1edcc3;if(_0xcdcf28[_0x8367('0x3c')]['includeAll']){_0x4bc1fb[_0x8367('0x47')]=[{'all':!![]}];}return db['MailQueue'][_0x8367('0x48')](_0x4bc1fb);})[_0x8367('0x2a')](function(_0x45e490){_0x35294b[_0x8367('0x49')]=_0x45e490;return _0x35294b;})['then'](respondWithFilteredResult(_0x31b40b,_0x4bc1fb))[_0x8367('0x4a')](handleError(_0x31b40b,null));};exports[_0x8367('0x4b')]=function(_0x3f645b,_0x4a30ba){var _0x268f75={'raw':!![],'where':{'id':_0x3f645b[_0x8367('0x4c')]['id']}},_0x40e90a={};_0x40e90a[_0x8367('0x38')]=_[_0x8367('0x39')](db[_0x8367('0x35')][_0x8367('0x4d')]);_0x40e90a[_0x8367('0x3c')]=_[_0x8367('0x39')](_0x3f645b['query']);_0x40e90a[_0x8367('0x3a')]=_['intersection'](_0x40e90a[_0x8367('0x38')],_0x40e90a['query']);_0x268f75[_0x8367('0x3d')]=_[_0x8367('0x3b')](_0x40e90a['model'],qs[_0x8367('0x3e')](_0x3f645b['query']['fields']));_0x268f75[_0x8367('0x3d')]=_0x268f75[_0x8367('0x3d')][_0x8367('0x4e')]?_0x268f75['attributes']:_0x40e90a[_0x8367('0x38')];if(_0x3f645b[_0x8367('0x3c')]['includeAll']){_0x268f75[_0x8367('0x47')]=[{'all':!![]}];}_0x268f75=_[_0x8367('0x45')]({},_0x268f75,_0x3f645b[_0x8367('0x46')]);return db['MailQueue'][_0x8367('0x4f')](_0x268f75)[_0x8367('0x2a')](handleEntityNotFound(_0x4a30ba,null))[_0x8367('0x2a')](respondWithResult(_0x4a30ba,null))[_0x8367('0x4a')](handleError(_0x4a30ba,null));};exports[_0x8367('0x50')]=function(_0x515f5e,_0x4c2402){return db[_0x8367('0x35')][_0x8367('0x50')](_0x515f5e[_0x8367('0x51')],{})[_0x8367('0x2a')](function(_0x173121){var _0x2e0f46=_0x515f5e[_0x8367('0x52')][_0x8367('0x2c')]({'plain':!![]});if(!_0x2e0f46)throw new Error(_0x8367('0x53'));if(_0x2e0f46['role']===_0x8367('0x52')){var _0x180bf8=_0x173121[_0x8367('0x2c')]({'plain':!![]});var _0x10362c=_0x8367('0x2d');return db[_0x8367('0x54')][_0x8367('0x4f')]({'where':{'name':_0x10362c,'userProfileId':_0x2e0f46['userProfileId']},'raw':!![]})[_0x8367('0x2a')](function(_0x4b1594){if(_0x4b1594&&_0x4b1594[_0x8367('0x55')]===0x0){return db[_0x8367('0x2e')]['create']({'name':_0x180bf8['name'],'resourceId':_0x180bf8['id'],'type':_0x4b1594[_0x8367('0x32')],'sectionId':_0x4b1594['id']},{})[_0x8367('0x2a')](function(){return _0x173121;});}else{return _0x173121;}})[_0x8367('0x4a')](function(_0x4abd0c){logger[_0x8367('0x30')](_0x8367('0x56'),_0x4abd0c);throw _0x4abd0c;});}return _0x173121;})[_0x8367('0x2a')](respondWithResult(_0x4c2402,0xc9))[_0x8367('0x4a')](handleError(_0x4c2402,null));};exports['update']=function(_0xa82877,_0x54329c){if(_0xa82877['body']['id']){delete _0xa82877[_0x8367('0x51')]['id'];}return db['MailQueue'][_0x8367('0x4f')]({'where':{'id':_0xa82877['params']['id']}})[_0x8367('0x2a')](handleEntityNotFound(_0x54329c,null))[_0x8367('0x2a')](saveUpdates(_0xa82877[_0x8367('0x51')],null))['then'](respondWithResult(_0x54329c,null))[_0x8367('0x4a')](handleError(_0x54329c,null));};exports['destroy']=function(_0x54f7e8,_0x579c67){return db[_0x8367('0x35')][_0x8367('0x4f')]({'where':{'id':_0x54f7e8[_0x8367('0x4c')]['id']}})[_0x8367('0x2a')](handleEntityNotFound(_0x579c67,null))[_0x8367('0x2a')](removeEntity(_0x579c67,null))['catch'](handleError(_0x579c67,null));};exports[_0x8367('0x57')]=function(_0x4315f4,_0x53914f){return db[_0x8367('0x35')]['describe']()[_0x8367('0x2a')](respondWithResult(_0x53914f,null))[_0x8367('0x4a')](handleError(_0x53914f,null));};exports[_0x8367('0x58')]=function(_0x218fdf,_0x5d8223,_0x4c0374){var _0x26b242={'raw':!![],'where':{}},_0x46ad20={},_0x4a178a;return db[_0x8367('0x35')][_0x8367('0x59')]({'where':{'id':_0x218fdf[_0x8367('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5d8223,null))[_0x8367('0x2a')](function(_0x455f99){if(_0x455f99){_0x4a178a=_0x455f99[_0x8367('0x2c')]({'plain':!![]});_0x46ad20[_0x8367('0x38')]=_[_0x8367('0x39')](db[_0x8367('0x5a')][_0x8367('0x4d')]);_0x46ad20[_0x8367('0x3c')]=_[_0x8367('0x39')](_0x218fdf[_0x8367('0x3c')]);_0x46ad20[_0x8367('0x3a')]=_['intersection'](_0x46ad20[_0x8367('0x38')],_0x46ad20[_0x8367('0x3c')]);_0x26b242[_0x8367('0x3d')]=_['intersection'](_0x46ad20[_0x8367('0x38')],qs[_0x8367('0x3e')](_0x218fdf[_0x8367('0x3c')][_0x8367('0x3e')]));_0x26b242[_0x8367('0x3d')]=_0x26b242['attributes'][_0x8367('0x4e')]?_0x26b242[_0x8367('0x3d')]:_0x46ad20['model'];if(!_0x218fdf[_0x8367('0x3c')]['hasOwnProperty'](_0x8367('0x3f'))){_0x26b242[_0x8367('0x25')]=qs[_0x8367('0x25')](_0x218fdf[_0x8367('0x3c')][_0x8367('0x25')]);_0x26b242[_0x8367('0x23')]=qs[_0x8367('0x23')](_0x218fdf['query'][_0x8367('0x23')]);}_0x26b242[_0x8367('0x40')]=qs[_0x8367('0x41')](_0x218fdf[_0x8367('0x3c')][_0x8367('0x41')]);_0x26b242[_0x8367('0x44')]=qs[_0x8367('0x3a')](_[_0x8367('0x42')](_0x218fdf[_0x8367('0x3c')],_0x46ad20[_0x8367('0x3a')]));_0x26b242[_0x8367('0x44')][_0x8367('0x5b')]=_0x455f99['id'];if(_0x218fdf[_0x8367('0x3c')]['filter']){_0x26b242[_0x8367('0x44')]=_[_0x8367('0x45')](_0x26b242['where'],{'$or':_['map'](_0x26b242['attributes'],function(_0x2db789){var _0x1d61f6={};_0x1d61f6[_0x2db789]={'$like':'%'+_0x218fdf['query'][_0x8367('0x43')]+'%'};return _0x1d61f6;})});}_0x26b242=_[_0x8367('0x45')]({},_0x26b242,_0x218fdf[_0x8367('0x46')]);return db['UserMailQueue'][_0x8367('0x48')](_0x26b242);}})[_0x8367('0x2a')](function(_0x5f10c7){if(_0x5f10c7){return db[_0x8367('0x5c')][_0x8367('0x5d')]({'where':{'id':_[_0x8367('0x34')](_0x5f10c7,_0x8367('0x5e')),'role':_0x8367('0x5f')},'attributes':['id',_0x8367('0x32'),_0x8367('0x60'),_0x8367('0x61'),'createdAt']});}})[_0x8367('0x2a')](function(_0x24d0d2){if(_0x24d0d2){return{'count':_0x24d0d2['count'],'rows':_[_0x8367('0x34')](_0x24d0d2['rows'],function(_0xb39a4c){return{'membername':_0xb39a4c['name'],'UserId':_0xb39a4c['id'],'queue_name':_0x4a178a[_0x8367('0x32')],'MailQueueId':_0x4a178a['id'],'interface':util[_0x8367('0x62')](_0x8367('0x63'),'SIP',_0xb39a4c['name']),'penalty':0x0,'paused':_0xb39a4c[_0x8367('0x60')],'createdAt':_0xb39a4c['createdAt'],'updatedAt':_0xb39a4c[_0x8367('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x8367('0x2a')](respondWithFilteredResult(_0x5d8223,_0x26b242))[_0x8367('0x4a')](handleError(_0x5d8223,null));};exports[_0x8367('0x64')]=function(_0x28b52c,_0xd128f3,_0x3980ac){var _0x208430={};var _0x1278bc={};var _0xfb69c;var _0x37718c;return db[_0x8367('0x35')][_0x8367('0x59')]({'where':{'id':_0x28b52c['params']['id']}})[_0x8367('0x2a')](handleEntityNotFound(_0xd128f3,null))[_0x8367('0x2a')](function(_0x3dfb5e){if(_0x3dfb5e){_0xfb69c=_0x3dfb5e;_0x1278bc[_0x8367('0x38')]=_[_0x8367('0x39')](db['Team'][_0x8367('0x4d')]);_0x1278bc[_0x8367('0x3c')]=_[_0x8367('0x39')](_0x28b52c[_0x8367('0x3c')]);_0x1278bc[_0x8367('0x3a')]=_[_0x8367('0x3b')](_0x1278bc[_0x8367('0x38')],_0x1278bc[_0x8367('0x3c')]);_0x208430[_0x8367('0x3d')]=_['intersection'](_0x1278bc[_0x8367('0x38')],qs[_0x8367('0x3e')](_0x28b52c['query'][_0x8367('0x3e')]));_0x208430[_0x8367('0x3d')]=_0x208430[_0x8367('0x3d')][_0x8367('0x4e')]?_0x208430[_0x8367('0x3d')]:_0x1278bc[_0x8367('0x38')];_0x208430['order']=qs[_0x8367('0x41')](_0x28b52c[_0x8367('0x3c')]['sort']);_0x208430['where']=qs[_0x8367('0x3a')](_[_0x8367('0x42')](_0x28b52c[_0x8367('0x3c')],_0x1278bc[_0x8367('0x3a')]));if(_0x28b52c[_0x8367('0x3c')]['filter']){_0x208430[_0x8367('0x44')]=_['merge'](_0x208430[_0x8367('0x44')],{'$or':_[_0x8367('0x34')](_0x208430[_0x8367('0x3d')],function(_0x4417ef){var _0x43b720={};_0x43b720[_0x4417ef]={'$like':'%'+_0x28b52c[_0x8367('0x3c')][_0x8367('0x43')]+'%'};return _0x43b720;})});}_0x208430=_[_0x8367('0x45')]({},_0x208430,_0x28b52c['options']);return _0xfb69c[_0x8367('0x64')](_0x208430);}})[_0x8367('0x2a')](function(_0x1f6ad0){if(_0x1f6ad0){_0x37718c=_0x1f6ad0[_0x8367('0x4e')];if(!_0x28b52c['query'][_0x8367('0x65')](_0x8367('0x3f'))){_0x208430[_0x8367('0x25')]=qs['limit'](_0x28b52c[_0x8367('0x3c')][_0x8367('0x25')]);_0x208430['offset']=qs[_0x8367('0x23')](_0x28b52c[_0x8367('0x3c')]['offset']);}return _0xfb69c['getTeams'](_0x208430);}})[_0x8367('0x2a')](function(_0x756145){if(_0x756145){return _0x756145?{'count':_0x37718c,'rows':_0x756145}:null;}})[_0x8367('0x2a')](respondWithResult(_0xd128f3,null))[_0x8367('0x4a')](handleError(_0xd128f3,null));};exports[_0x8367('0x66')]=function(_0x10b355,_0x3f40b2,_0x322b3c){var _0x4c7005=_0x10b355['body'][_0x8367('0x67')];return db[_0x8367('0x68')][_0x8367('0x48')]({'where':{'id':_0x4c7005},'attributes':['id'],'include':[{'model':db[_0x8367('0x5c')],'as':_0x8367('0x69'),'attributes':['id',_0x8367('0x32'),'online','voicePause','interface'],'raw':!![]}]})[_0x8367('0x2a')](function(_0x10d2d7){if(_0x10d2d7){var _0x8889e7=_[_0x8367('0x6a')](_0x10d2d7,function(_0x69aed6){var _0xdc64a9=_0x69aed6[_0x8367('0x2c')]({'plain':!![]});return _0xdc64a9[_0x8367('0x69')];});return db[_0x8367('0x35')][_0x8367('0x4f')]({'where':{'id':_0x10b355[_0x8367('0x4c')]['id']}})['then'](function(_0x37b726){return db[_0x8367('0x6b')]['transaction'](function(_0x17195e){return _0x37b726[_0x8367('0x66')](_0x4c7005,{'transaction':_0x17195e})[_0x8367('0x2a')](function(){return BPromise[_0x8367('0x6c')](_0x8889e7,function(_0x265ed4){return db[_0x8367('0x5a')]['findOrCreate']({'where':{'UserId':_0x265ed4['id'],'MailQueueId':_0x10b355[_0x8367('0x4c')]['id']},'transaction':_0x17195e});});})[_0x8367('0x2a')](function(){_0x8889e7['forEach'](function(_0x4c90fd){socket[_0x8367('0x6d')](_0x8367('0x6e'),{'UserId':_0x4c90fd['id'],'MailQueueId':_0x37b726['id']});});});});});}})[_0x8367('0x2a')](respondWithStatusCode(_0x3f40b2,null))[_0x8367('0x4a')](handleError(_0x3f40b2,null));};exports[_0x8367('0x6f')]=function(_0x11b689,_0x5f013f,_0xfa3c3c){return db[_0x8367('0x68')][_0x8367('0x48')]({'where':{'id':_0x11b689[_0x8367('0x3c')]['ids']},'attributes':['id'],'include':[{'model':db[_0x8367('0x5c')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x5f013f,null))[_0x8367('0x2a')](function(_0x564725){var _0x59150d=_[_0x8367('0x34')](_0x564725,'id');var _0x1fddb6=[];var _0x292287=[];var _0x2f7669=squel[_0x8367('0x70')]();_0x2f7669[_0x8367('0x71')]('tq.TeamId')['from'](_0x8367('0x72'),'tq')[_0x8367('0x73')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0x8367('0x44')](_0x8367('0x74'),_0x11b689[_0x8367('0x4c')]['id']);for(var _0x207bea=0x0;_0x207bea<_0x564725['length'];_0x207bea+=0x1){let _0x469672=_0x564725[_0x207bea];for(var _0x258a40=0x0;_0x258a40<_0x469672[_0x8367('0x69')][_0x8367('0x4e')];_0x258a40+=0x1){let _0x41e95f=_0x469672['Agents'][_0x258a40];var _0x45d942=_0x2f7669[_0x8367('0x75')]();_0x45d942['where'](_0x8367('0x76'),_0x41e95f['id']);_0x292287[_0x8367('0x77')](db['sequelize'][_0x8367('0x3c')](_0x45d942[_0x8367('0x78')](),{'type':db[_0x8367('0x6b')]['QueryTypes'][_0x8367('0x79')]})['then'](function(_0x49690f){if(_0x49690f[_0x8367('0x4e')]===0x1){return _0x41e95f['id'];}else{var _0x53eab7=_[_0x8367('0x7a')](_[_0x8367('0x34')](_0x49690f,_0x8367('0x7b')),function(_0x24c74d){return _[_0x8367('0x7c')](_0x59150d,_0x24c74d);});if(_0x53eab7){return _0x41e95f['id'];}}}));}}return BPromise[_0x8367('0x7d')](_0x292287)[_0x8367('0x2a')](function(_0x122ddc){_0x1fddb6=_(_0x1fddb6)[_0x8367('0x7e')](_0x122ddc)[_0x8367('0x7f')]()[_0x8367('0x80')]();return db[_0x8367('0x35')][_0x8367('0x4f')]({'where':{'id':_0x11b689['params']['id']}})['then'](function(_0xe3010e){return db[_0x8367('0x6b')]['transaction'](function(_0x1ccb1d){return _0xe3010e[_0x8367('0x6f')](_0x11b689[_0x8367('0x3c')][_0x8367('0x67')],{'transaction':_0x1ccb1d})['then'](function(){if(!_[_0x8367('0x81')](_0x1fddb6)){return _0xe3010e[_0x8367('0x82')](_0x1fddb6,{'transaction':_0x1ccb1d});}})[_0x8367('0x2a')](function(){_0x1fddb6['forEach'](function(_0x2858c0){socket[_0x8367('0x6d')](_0x8367('0x83'),{'UserId':_0x2858c0,'MailQueueId':_0xe3010e['id']});});});});});});})[_0x8367('0x2a')](respondWithStatusCode(_0x5f013f,null))['catch'](handleError(_0x5f013f,null));};exports[_0x8367('0x84')]=function(_0x47eb6a,_0x384a0e,_0x3c1dd3){return db[_0x8367('0x35')][_0x8367('0x4f')]({'where':{'id':_0x47eb6a[_0x8367('0x4c')]['id']}})[_0x8367('0x2a')](handleEntityNotFound(_0x384a0e,null))[_0x8367('0x2a')](function(_0x4b1303){if(_0x4b1303){return _0x4b1303[_0x8367('0x84')](_0x47eb6a[_0x8367('0x51')][_0x8367('0x67')],_[_0x8367('0x85')](_0x47eb6a[_0x8367('0x51')],[_0x8367('0x67'),'id'])||{})['spread'](function(_0x318622){for(var _0x3a774b=0x0;_0x3a774b<_0x47eb6a[_0x8367('0x51')][_0x8367('0x67')][_0x8367('0x4e')];_0x3a774b+=0x1){socket['emit'](_0x8367('0x6e'),{'UserId':Number(_0x47eb6a[_0x8367('0x51')][_0x8367('0x67')][_0x3a774b]),'MailQueueId':Number(_0x47eb6a[_0x8367('0x4c')]['id'])});}return _0x318622;});}})[_0x8367('0x2a')](respondWithResult(_0x384a0e,null))[_0x8367('0x4a')](handleError(_0x384a0e,null));};exports[_0x8367('0x82')]=function(_0x21e329,_0x11796f,_0x1160ad){return db[_0x8367('0x35')][_0x8367('0x4f')]({'where':{'id':_0x21e329[_0x8367('0x4c')]['id']}})[_0x8367('0x2a')](handleEntityNotFound(_0x11796f,null))[_0x8367('0x2a')](function(_0x3a10b5){if(_0x3a10b5){return _0x3a10b5[_0x8367('0x82')](_0x21e329[_0x8367('0x3c')]['ids'])[_0x8367('0x2a')](function(){if(_[_0x8367('0x86')](_0x21e329[_0x8367('0x3c')][_0x8367('0x67')])){for(var _0x54be0b=0x0;_0x54be0b<_0x21e329[_0x8367('0x3c')][_0x8367('0x67')][_0x8367('0x4e')];_0x54be0b+=0x1){socket['emit']('userMailQueue:remove',{'UserId':Number(_0x21e329[_0x8367('0x3c')]['ids'][_0x54be0b]),'MailQueueId':Number(_0x21e329[_0x8367('0x4c')]['id'])});}}else{socket[_0x8367('0x6d')]('userMailQueue:remove',{'UserId':Number(_0x21e329[_0x8367('0x3c')][_0x8367('0x67')]),'MailQueueId':Number(_0x21e329[_0x8367('0x4c')]['id'])});}});}})['then'](respondWithStatusCode(_0x11796f,null))['catch'](handleError(_0x11796f,null));};exports[_0x8367('0x87')]=function(_0x134b12,_0x315e90,_0x10e6a8){var _0x3fb392={};var _0x1ef162={};var _0x8b9ebb;var _0x2099e6;return db[_0x8367('0x35')][_0x8367('0x59')]({'where':{'id':_0x134b12[_0x8367('0x4c')]['id']}})['then'](handleEntityNotFound(_0x315e90,null))[_0x8367('0x2a')](function(_0x5b4219){if(_0x5b4219){_0x8b9ebb=_0x5b4219;_0x1ef162[_0x8367('0x38')]=_[_0x8367('0x39')](db[_0x8367('0x5c')][_0x8367('0x4d')]);_0x1ef162[_0x8367('0x3c')]=_['keys'](_0x134b12[_0x8367('0x3c')]);_0x1ef162[_0x8367('0x3a')]=_[_0x8367('0x3b')](_0x1ef162[_0x8367('0x38')],_0x1ef162[_0x8367('0x3c')]);_0x3fb392[_0x8367('0x3d')]=_[_0x8367('0x3b')](_0x1ef162[_0x8367('0x38')],qs['fields'](_0x134b12['query'][_0x8367('0x3e')]));_0x3fb392[_0x8367('0x3d')]=_0x3fb392[_0x8367('0x3d')][_0x8367('0x4e')]?_0x3fb392[_0x8367('0x3d')]:_0x1ef162[_0x8367('0x38')];_0x3fb392[_0x8367('0x40')]=qs[_0x8367('0x41')](_0x134b12['query']['sort']);_0x3fb392[_0x8367('0x44')]=qs[_0x8367('0x3a')](_[_0x8367('0x42')](_0x134b12[_0x8367('0x3c')],_0x1ef162[_0x8367('0x3a')]));if(_0x134b12[_0x8367('0x3c')]['filter']){_0x3fb392[_0x8367('0x44')]=_[_0x8367('0x45')](_0x3fb392[_0x8367('0x44')],{'$or':_[_0x8367('0x34')](_0x3fb392['attributes'],function(_0x382e22){var _0x22878c={};_0x22878c[_0x382e22]={'$like':'%'+_0x134b12[_0x8367('0x3c')]['filter']+'%'};return _0x22878c;})});}_0x3fb392=_[_0x8367('0x45')]({},_0x3fb392,_0x134b12['options']);return _0x8b9ebb[_0x8367('0x87')](_0x3fb392);}})['then'](function(_0x4d1f52){if(_0x4d1f52){_0x2099e6=_0x4d1f52[_0x8367('0x4e')];if(!_0x134b12[_0x8367('0x3c')][_0x8367('0x65')](_0x8367('0x3f'))){_0x3fb392[_0x8367('0x25')]=qs['limit'](_0x134b12['query'][_0x8367('0x25')]);_0x3fb392[_0x8367('0x23')]=qs['offset'](_0x134b12[_0x8367('0x3c')][_0x8367('0x23')]);}return _0x8b9ebb[_0x8367('0x87')](_0x3fb392);}})[_0x8367('0x2a')](function(_0x4ca9d2){if(_0x4ca9d2){return _0x4ca9d2?{'count':_0x2099e6,'rows':_0x4ca9d2}:null;}})[_0x8367('0x2a')](respondWithResult(_0x315e90,null))[_0x8367('0x4a')](handleError(_0x315e90,null));};
\ No newline at end of file
index a8d179a..731731b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x901b=['update','emit','hasOwnProperty','exports','events','../../mysqldb','setMaxListeners','save'];(function(_0x47242d,_0x13f993){var _0x30273a=function(_0x322cd2){while(--_0x322cd2){_0x47242d['push'](_0x47242d['shift']());}};_0x30273a(++_0x13f993);}(_0x901b,0x7c));var _0xb901=function(_0x1a03af,_0xa9af7a){_0x1a03af=_0x1a03af-0x0;var _0x4beea1=_0x901b[_0x1a03af];return _0x4beea1;};'use strict';var EventEmitter=require(_0xb901('0x0'));var MailQueue=require(_0xb901('0x1'))['db']['MailQueue'];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0xb901('0x2')](0x0);var events={'afterCreate':_0xb901('0x3'),'afterUpdate':_0xb901('0x4'),'afterDestroy':'remove'};function emitEvent(_0x1e3f2b){return function(_0x408218,_0x4d250d,_0x48e25f){MailQueueEvents[_0xb901('0x5')](_0x1e3f2b+':'+_0x408218['id'],_0x408218);MailQueueEvents[_0xb901('0x5')](_0x1e3f2b,_0x408218);_0x48e25f(null);};}for(var e in events){if(events[_0xb901('0x6')](e)){var event=events[e];MailQueue['hook'](e,emitEvent(event));}}module[_0xb901('0x7')]=MailQueueEvents;
\ No newline at end of file
+var _0x5ffe=['../../mysqldb','MailQueue','save','remove','emit','hasOwnProperty','exports','events'];(function(_0x282ea6,_0x332264){var _0x1c4ba7=function(_0x41003d){while(--_0x41003d){_0x282ea6['push'](_0x282ea6['shift']());}};_0x1c4ba7(++_0x332264);}(_0x5ffe,0x67));var _0xe5ff=function(_0x35dc6a,_0x273cf4){_0x35dc6a=_0x35dc6a-0x0;var _0x38425c=_0x5ffe[_0x35dc6a];return _0x38425c;};'use strict';var EventEmitter=require(_0xe5ff('0x0'));var MailQueue=require(_0xe5ff('0x1'))['db'][_0xe5ff('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe5ff('0x3'),'afterUpdate':'update','afterDestroy':_0xe5ff('0x4')};function emitEvent(_0x44e9c7){return function(_0x116ec0,_0x56b0e6,_0x378521){MailQueueEvents[_0xe5ff('0x5')](_0x44e9c7+':'+_0x116ec0['id'],_0x116ec0);MailQueueEvents[_0xe5ff('0x5')](_0x44e9c7,_0x116ec0);_0x378521(null);};}for(var e in events){if(events[_0xe5ff('0x6')](e)){var event=events[e];MailQueue['hook'](e,emitEvent(event));}}module[_0xe5ff('0x7')]=MailQueueEvents;
\ No newline at end of file
index c216d7f..9d10581 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x633e=['util','../../config/logger','moment','request-promise','path','rimraf','./mailQueue.attributes','exports','define'];(function(_0x23285f,_0x5529ce){var _0x1a5a34=function(_0x57cd52){while(--_0x57cd52){_0x23285f['push'](_0x23285f['shift']());}};_0x1a5a34(++_0x5529ce);}(_0x633e,0x17a));var _0xe633=function(_0x124921,_0x36596b){_0x124921=_0x124921-0x0;var _0x2fd6a9=_0x633e[_0x124921];return _0x2fd6a9;};'use strict';var _=require('lodash');var util=require(_0xe633('0x0'));var logger=require(_0xe633('0x1'))('api');var moment=require(_0xe633('0x2'));var BPromise=require('bluebird');var rp=require(_0xe633('0x3'));var fs=require('fs');var path=require(_0xe633('0x4'));var rimraf=require(_0xe633('0x5'));var config=require('../../config/environment');var attributes=require(_0xe633('0x6'));module[_0xe633('0x7')]=function(_0x461de5,_0x6cc49f){return _0x461de5[_0xe633('0x8')]('MailQueue',attributes,{'tableName':'mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6c5a=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./mailQueue.attributes','exports','define','mail_queues'];(function(_0x132706,_0x190447){var _0x4c37cc=function(_0x566533){while(--_0x566533){_0x132706['push'](_0x132706['shift']());}};_0x4c37cc(++_0x190447);}(_0x6c5a,0x145));var _0xa6c5=function(_0x1fdb72,_0x23cb0b){_0x1fdb72=_0x1fdb72-0x0;var _0x50dc4b=_0x6c5a[_0x1fdb72];return _0x50dc4b;};'use strict';var _=require(_0xa6c5('0x0'));var util=require(_0xa6c5('0x1'));var logger=require(_0xa6c5('0x2'))(_0xa6c5('0x3'));var moment=require(_0xa6c5('0x4'));var BPromise=require(_0xa6c5('0x5'));var rp=require(_0xa6c5('0x6'));var fs=require('fs');var path=require(_0xa6c5('0x7'));var rimraf=require(_0xa6c5('0x8'));var config=require('../../config/environment');var attributes=require(_0xa6c5('0x9'));module[_0xa6c5('0xa')]=function(_0x10d80e,_0x149788){return _0x10d80e[_0xa6c5('0xb')]('MailQueue',attributes,{'tableName':_0xa6c5('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f33e2d6..1e0e041 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d33=['model','then','ShowMailQueue','find','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./mailQueue.socket','register','request','request\x20sent','debug','stringify','code','error','MailQueue,\x20%s,\x20%s','message','info','result','catch','GetMailQueue','MailQueue','options','raw','where','attributes','limit','include','map'];(function(_0x1760e6,_0x285e1f){var _0x55720e=function(_0x1e0b50){while(--_0x1e0b50){_0x1760e6['push'](_0x1760e6['shift']());}};_0x55720e(++_0x285e1f);}(_0x8d33,0x144));var _0x38d3=function(_0x12615b,_0x4fa587){_0x12615b=_0x12615b-0x0;var _0x1aa1e1=_0x8d33[_0x12615b];return _0x1aa1e1;};'use strict';var _=require(_0x38d3('0x0'));var util=require(_0x38d3('0x1'));var moment=require('moment');var BPromise=require(_0x38d3('0x2'));var rs=require(_0x38d3('0x3'));var fs=require('fs');var Redis=require(_0x38d3('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x38d3('0x5'));var logger=require(_0x38d3('0x6'))('rpc');var config=require(_0x38d3('0x7'));var jayson=require(_0x38d3('0x8'));var client=jayson[_0x38d3('0x9')][_0x38d3('0xa')]({'port':0x232a});config[_0x38d3('0xb')]=_[_0x38d3('0xc')](config[_0x38d3('0xb')],{'host':_0x38d3('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x38d3('0xb')]));require(_0x38d3('0xe'))[_0x38d3('0xf')](socket);function respondWithRpcPromise(_0x4faa15,_0x3bd627,_0x42becd){return new BPromise(function(_0x4c2e21,_0x262c0e){return client[_0x38d3('0x10')](_0x4faa15,_0x42becd)['then'](function(_0x48f5cf){logger['info']('MailQueue,\x20%s,\x20%s',_0x3bd627,_0x38d3('0x11'));logger[_0x38d3('0x12')]('MailQueue,\x20%s,\x20%s,\x20%s',_0x3bd627,_0x38d3('0x11'),JSON[_0x38d3('0x13')](_0x48f5cf));if(_0x48f5cf['error']){if(_0x48f5cf['error'][_0x38d3('0x14')]===0x1f4){logger[_0x38d3('0x15')](_0x38d3('0x16'),_0x3bd627,_0x48f5cf[_0x38d3('0x15')][_0x38d3('0x17')]);return _0x262c0e(_0x48f5cf['error']['message']);}logger['error'](_0x38d3('0x16'),_0x3bd627,_0x48f5cf[_0x38d3('0x15')][_0x38d3('0x17')]);return _0x4c2e21(_0x48f5cf[_0x38d3('0x15')][_0x38d3('0x17')]);}else{logger[_0x38d3('0x18')]('MailQueue,\x20%s,\x20%s',_0x3bd627,_0x38d3('0x11'));_0x4c2e21(_0x48f5cf[_0x38d3('0x19')]['message']);}})[_0x38d3('0x1a')](function(_0x26ab0c){logger['error'](_0x38d3('0x16'),_0x3bd627,_0x26ab0c);_0x262c0e(_0x26ab0c);});});}exports[_0x38d3('0x1b')]=function(_0x145a06){var _0x3fce45=this;return new Promise(function(_0x30af91,_0x450215){return db[_0x38d3('0x1c')]['findAll']({'raw':_0x145a06[_0x38d3('0x1d')]?_0x145a06[_0x38d3('0x1d')][_0x38d3('0x1e')]===undefined?!![]:![]:!![],'where':_0x145a06['options']?_0x145a06[_0x38d3('0x1d')][_0x38d3('0x1f')]||null:null,'attributes':_0x145a06[_0x38d3('0x1d')]?_0x145a06[_0x38d3('0x1d')][_0x38d3('0x20')]||null:null,'limit':_0x145a06[_0x38d3('0x1d')]?_0x145a06[_0x38d3('0x1d')][_0x38d3('0x21')]||null:null,'include':_0x145a06[_0x38d3('0x1d')]?_0x145a06[_0x38d3('0x1d')][_0x38d3('0x22')]?_[_0x38d3('0x23')](_0x145a06[_0x38d3('0x1d')][_0x38d3('0x22')],function(_0x187681){return{'model':db[_0x187681[_0x38d3('0x24')]],'as':_0x187681['as'],'attributes':_0x187681[_0x38d3('0x20')],'include':_0x187681[_0x38d3('0x22')]?_[_0x38d3('0x23')](_0x187681[_0x38d3('0x22')],function(_0x224cff){return{'model':db[_0x224cff[_0x38d3('0x24')]],'as':_0x224cff['as'],'attributes':_0x224cff[_0x38d3('0x20')],'include':_0x224cff['include']?_['map'](_0x224cff[_0x38d3('0x22')],function(_0x3c2577){return{'model':db[_0x3c2577[_0x38d3('0x24')]],'as':_0x3c2577['as'],'attributes':_0x3c2577[_0x38d3('0x20')]};}):[]};}):[]};}):[]:[]})[_0x38d3('0x25')](function(_0x2f80eb){logger[_0x38d3('0x18')](_0x38d3('0x1b'),_0x145a06);logger['debug'](_0x38d3('0x1b'),_0x145a06,JSON[_0x38d3('0x13')](_0x2f80eb));_0x30af91(_0x2f80eb);})[_0x38d3('0x1a')](function(_0x643c46){logger[_0x38d3('0x15')]('GetMailQueue',_0x643c46['message'],_0x145a06);_0x450215(_0x3fce45['error'](0x1f4,_0x643c46['message']));});});};exports[_0x38d3('0x26')]=function(_0x11f5fa){var _0x2582ff=this;return new Promise(function(_0x46b7ad,_0x155744){return db[_0x38d3('0x1c')][_0x38d3('0x27')]({'raw':_0x11f5fa[_0x38d3('0x1d')]?_0x11f5fa[_0x38d3('0x1d')][_0x38d3('0x1e')]===undefined?!![]:![]:!![],'where':_0x11f5fa[_0x38d3('0x1d')]?_0x11f5fa[_0x38d3('0x1d')][_0x38d3('0x1f')]||null:null,'attributes':_0x11f5fa[_0x38d3('0x1d')]?_0x11f5fa[_0x38d3('0x1d')][_0x38d3('0x20')]||null:null,'include':_0x11f5fa[_0x38d3('0x1d')]?_0x11f5fa['options'][_0x38d3('0x22')]?_['map'](_0x11f5fa[_0x38d3('0x1d')][_0x38d3('0x22')],function(_0x5639d9){return{'model':db[_0x5639d9[_0x38d3('0x24')]],'as':_0x5639d9['as'],'attributes':_0x5639d9[_0x38d3('0x20')],'include':_0x5639d9[_0x38d3('0x22')]?_['map'](_0x5639d9[_0x38d3('0x22')],function(_0x21c8e6){return{'model':db[_0x21c8e6[_0x38d3('0x24')]],'as':_0x21c8e6['as'],'attributes':_0x21c8e6['attributes'],'include':_0x21c8e6[_0x38d3('0x22')]?_[_0x38d3('0x23')](_0x21c8e6[_0x38d3('0x22')],function(_0x2ef6ce){return{'model':db[_0x2ef6ce[_0x38d3('0x24')]],'as':_0x2ef6ce['as'],'attributes':_0x2ef6ce[_0x38d3('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x21f9b2){logger['info'](_0x38d3('0x26'),_0x11f5fa);logger[_0x38d3('0x12')](_0x38d3('0x26'),_0x11f5fa,JSON[_0x38d3('0x13')](_0x21f9b2));_0x46b7ad(_0x21f9b2);})[_0x38d3('0x1a')](function(_0x3739cd){logger[_0x38d3('0x15')](_0x38d3('0x26'),_0x3739cd['message'],_0x11f5fa);_0x155744(_0x2582ff['error'](0x1f4,_0x3739cd[_0x38d3('0x17')]));});});};
\ No newline at end of file
+var _0xedd7=['socket.io-emitter','./mailQueue.socket','register','then','info','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','MailQueue,\x20%s,\x20%s','message','result','catch','GetMailQueue','MailQueue','findAll','options','where','attributes','include','map','model','ShowMailQueue','find','raw','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','redis','defaults','localhost'];(function(_0x421196,_0x1cbd94){var _0x2738af=function(_0xc956ff){while(--_0xc956ff){_0x421196['push'](_0x421196['shift']());}};_0x2738af(++_0x1cbd94);}(_0xedd7,0x90));var _0x7edd=function(_0x3c5924,_0x4d295f){_0x3c5924=_0x3c5924-0x0;var _0x576958=_0xedd7[_0x3c5924];return _0x576958;};'use strict';var _=require('lodash');var util=require(_0x7edd('0x0'));var moment=require(_0x7edd('0x1'));var BPromise=require(_0x7edd('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7edd('0x3'));var db=require(_0x7edd('0x4'))['db'];var utils=require(_0x7edd('0x5'));var logger=require(_0x7edd('0x6'))('rpc');var config=require(_0x7edd('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7edd('0x8')]({'port':0x232a});config[_0x7edd('0x9')]=_[_0x7edd('0xa')](config['redis'],{'host':_0x7edd('0xb'),'port':0x18eb});var socket=require(_0x7edd('0xc'))(new Redis(config[_0x7edd('0x9')]));require(_0x7edd('0xd'))[_0x7edd('0xe')](socket);function respondWithRpcPromise(_0x56953f,_0x49dae0,_0x332aa6){return new BPromise(function(_0x1e64d4,_0x111194){return client['request'](_0x56953f,_0x332aa6)[_0x7edd('0xf')](function(_0x211388){logger[_0x7edd('0x10')]('MailQueue,\x20%s,\x20%s',_0x49dae0,_0x7edd('0x11'));logger[_0x7edd('0x12')](_0x7edd('0x13'),_0x49dae0,_0x7edd('0x11'),JSON[_0x7edd('0x14')](_0x211388));if(_0x211388[_0x7edd('0x15')]){if(_0x211388[_0x7edd('0x15')][_0x7edd('0x16')]===0x1f4){logger['error'](_0x7edd('0x17'),_0x49dae0,_0x211388[_0x7edd('0x15')][_0x7edd('0x18')]);return _0x111194(_0x211388[_0x7edd('0x15')][_0x7edd('0x18')]);}logger[_0x7edd('0x15')](_0x7edd('0x17'),_0x49dae0,_0x211388[_0x7edd('0x15')][_0x7edd('0x18')]);return _0x1e64d4(_0x211388['error']['message']);}else{logger['info'](_0x7edd('0x17'),_0x49dae0,_0x7edd('0x11'));_0x1e64d4(_0x211388[_0x7edd('0x19')][_0x7edd('0x18')]);}})[_0x7edd('0x1a')](function(_0x275cb9){logger[_0x7edd('0x15')](_0x7edd('0x17'),_0x49dae0,_0x275cb9);_0x111194(_0x275cb9);});});}exports[_0x7edd('0x1b')]=function(_0x3fa85f){var _0x486346=this;return new Promise(function(_0x3fbc7d,_0x4eae45){return db[_0x7edd('0x1c')][_0x7edd('0x1d')]({'raw':_0x3fa85f[_0x7edd('0x1e')]?_0x3fa85f[_0x7edd('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x3fa85f['options']?_0x3fa85f['options'][_0x7edd('0x1f')]||null:null,'attributes':_0x3fa85f[_0x7edd('0x1e')]?_0x3fa85f['options'][_0x7edd('0x20')]||null:null,'limit':_0x3fa85f[_0x7edd('0x1e')]?_0x3fa85f[_0x7edd('0x1e')]['limit']||null:null,'include':_0x3fa85f[_0x7edd('0x1e')]?_0x3fa85f[_0x7edd('0x1e')][_0x7edd('0x21')]?_[_0x7edd('0x22')](_0x3fa85f[_0x7edd('0x1e')][_0x7edd('0x21')],function(_0x1b5515){return{'model':db[_0x1b5515[_0x7edd('0x23')]],'as':_0x1b5515['as'],'attributes':_0x1b5515['attributes'],'include':_0x1b5515[_0x7edd('0x21')]?_[_0x7edd('0x22')](_0x1b5515[_0x7edd('0x21')],function(_0x45b6c1){return{'model':db[_0x45b6c1[_0x7edd('0x23')]],'as':_0x45b6c1['as'],'attributes':_0x45b6c1[_0x7edd('0x20')],'include':_0x45b6c1[_0x7edd('0x21')]?_[_0x7edd('0x22')](_0x45b6c1[_0x7edd('0x21')],function(_0x5cb2eb){return{'model':db[_0x5cb2eb[_0x7edd('0x23')]],'as':_0x5cb2eb['as'],'attributes':_0x5cb2eb[_0x7edd('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x36cbe0){logger['info'](_0x7edd('0x1b'),_0x3fa85f);logger['debug'](_0x7edd('0x1b'),_0x3fa85f,JSON[_0x7edd('0x14')](_0x36cbe0));_0x3fbc7d(_0x36cbe0);})['catch'](function(_0x192dda){logger[_0x7edd('0x15')]('GetMailQueue',_0x192dda[_0x7edd('0x18')],_0x3fa85f);_0x4eae45(_0x486346[_0x7edd('0x15')](0x1f4,_0x192dda[_0x7edd('0x18')]));});});};exports[_0x7edd('0x24')]=function(_0x50b710){var _0x22a003=this;return new Promise(function(_0x5895b6,_0x3eda1d){return db[_0x7edd('0x1c')][_0x7edd('0x25')]({'raw':_0x50b710[_0x7edd('0x1e')]?_0x50b710['options'][_0x7edd('0x26')]===undefined?!![]:![]:!![],'where':_0x50b710['options']?_0x50b710[_0x7edd('0x1e')][_0x7edd('0x1f')]||null:null,'attributes':_0x50b710['options']?_0x50b710['options'][_0x7edd('0x20')]||null:null,'include':_0x50b710['options']?_0x50b710['options'][_0x7edd('0x21')]?_[_0x7edd('0x22')](_0x50b710[_0x7edd('0x1e')][_0x7edd('0x21')],function(_0x11c87f){return{'model':db[_0x11c87f[_0x7edd('0x23')]],'as':_0x11c87f['as'],'attributes':_0x11c87f[_0x7edd('0x20')],'include':_0x11c87f[_0x7edd('0x21')]?_[_0x7edd('0x22')](_0x11c87f[_0x7edd('0x21')],function(_0x2d049d){return{'model':db[_0x2d049d['model']],'as':_0x2d049d['as'],'attributes':_0x2d049d[_0x7edd('0x20')],'include':_0x2d049d[_0x7edd('0x21')]?_[_0x7edd('0x22')](_0x2d049d[_0x7edd('0x21')],function(_0x284bb1){return{'model':db[_0x284bb1[_0x7edd('0x23')]],'as':_0x284bb1['as'],'attributes':_0x284bb1[_0x7edd('0x20')]};}):[]};}):[]};}):[]:[]})[_0x7edd('0xf')](function(_0x3b7cd5){logger[_0x7edd('0x10')](_0x7edd('0x24'),_0x50b710);logger[_0x7edd('0x12')](_0x7edd('0x24'),_0x50b710,JSON[_0x7edd('0x14')](_0x3b7cd5));_0x5895b6(_0x3b7cd5);})[_0x7edd('0x1a')](function(_0x4af4f7){logger[_0x7edd('0x15')](_0x7edd('0x24'),_0x4af4f7['message'],_0x50b710);_0x3eda1d(_0x22a003[_0x7edd('0x15')](0x1f4,_0x4af4f7[_0x7edd('0x18')]));});});};
\ No newline at end of file
index 2744108..f81c0fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b67=['update','emit','removeListener','register','length','mailQueue:','./mailQueue.events','remove'];(function(_0x33c5dd,_0x745384){var _0x51b519=function(_0x456075){while(--_0x456075){_0x33c5dd['push'](_0x33c5dd['shift']());}};_0x51b519(++_0x745384);}(_0x2b67,0x13e));var _0x72b6=function(_0x4a9767,_0x4ead1d){_0x4a9767=_0x4a9767-0x0;var _0x1b4196=_0x2b67[_0x4a9767];return _0x1b4196;};'use strict';var MailQueueEvents=require(_0x72b6('0x0'));var events=['save',_0x72b6('0x1'),_0x72b6('0x2')];function createListener(_0x2a18e1,_0x7a1226){return function(_0x41a7c0){_0x7a1226[_0x72b6('0x3')](_0x2a18e1,_0x41a7c0);};}function removeListener(_0x1372af,_0x189864){return function(){MailQueueEvents[_0x72b6('0x4')](_0x1372af,_0x189864);};}exports[_0x72b6('0x5')]=function(_0x1dd8a5){for(var _0x58b9e4=0x0,_0x5d825b=events[_0x72b6('0x6')];_0x58b9e4<_0x5d825b;_0x58b9e4++){var _0x47e452=events[_0x58b9e4];var _0x322f65=createListener(_0x72b6('0x7')+_0x47e452,_0x1dd8a5);MailQueueEvents['on'](_0x47e452,_0x322f65);}};
\ No newline at end of file
+var _0x373d=['emit','length','./mailQueue.events','remove','update'];(function(_0x1ba9c5,_0x2059a2){var _0x35911b=function(_0x2b669a){while(--_0x2b669a){_0x1ba9c5['push'](_0x1ba9c5['shift']());}};_0x35911b(++_0x2059a2);}(_0x373d,0x1e2));var _0xd373=function(_0x9647da,_0x1f7117){_0x9647da=_0x9647da-0x0;var _0x25c414=_0x373d[_0x9647da];return _0x25c414;};'use strict';var MailQueueEvents=require(_0xd373('0x0'));var events=['save',_0xd373('0x1'),_0xd373('0x2')];function createListener(_0x30e9ce,_0x79d21f){return function(_0x50ed19){_0x79d21f[_0xd373('0x3')](_0x30e9ce,_0x50ed19);};}function removeListener(_0x547fca,_0x2b6e64){return function(){MailQueueEvents['removeListener'](_0x547fca,_0x2b6e64);};}exports['register']=function(_0x31a0fb){for(var _0x3e4443=0x0,_0x446be6=events[_0xd373('0x4')];_0x3e4443<_0x446be6;_0x3e4443++){var _0x48d977=events[_0x3e4443];var _0xe79819=createListener('mailQueue:'+_0x48d977,_0x31a0fb);MailQueueEvents['on'](_0x48d977,_0xe79819);}};
\ No newline at end of file
index bcda2c0..1eb6b91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fb1=['create','put','update','delete','destroy','exports','multer','util','express','fs-extra','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','/describe','isAuthenticated','/:id','show','post'];(function(_0x11037b,_0x4b732c){var _0x39edc4=function(_0x3cda50){while(--_0x3cda50){_0x11037b['push'](_0x11037b['shift']());}};_0x39edc4(++_0x4b732c);}(_0x0fb1,0x1f4));var _0x10fb=function(_0x1b5dae,_0x230837){_0x1b5dae=_0x1b5dae-0x0;var _0x9e8d92=_0x0fb1[_0x1b5dae];return _0x9e8d92;};'use strict';var multer=require(_0x10fb('0x0'));var util=require(_0x10fb('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x10fb('0x2'));var router=express['Router']();var fs_extra=require(_0x10fb('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x10fb('0x4'));var config=require(_0x10fb('0x5'));var controller=require(_0x10fb('0x6'));router[_0x10fb('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x10fb('0x7')](_0x10fb('0x8'),auth[_0x10fb('0x9')](),controller['describe']);router[_0x10fb('0x7')](_0x10fb('0xa'),auth[_0x10fb('0x9')](),controller[_0x10fb('0xb')]);router[_0x10fb('0xc')]('/',auth['isAuthenticated'](),controller[_0x10fb('0xd')]);router[_0x10fb('0xe')]('/:id',auth[_0x10fb('0x9')](),controller[_0x10fb('0xf')]);router[_0x10fb('0x10')](_0x10fb('0xa'),auth[_0x10fb('0x9')](),controller[_0x10fb('0x11')]);module[_0x10fb('0x12')]=router;
\ No newline at end of file
+var _0x9f75=['update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','/describe','describe','get','/:id','post','create','put'];(function(_0x55e605,_0x162ddb){var _0x20c0cc=function(_0x5737cb){while(--_0x5737cb){_0x55e605['push'](_0x55e605['shift']());}};_0x20c0cc(++_0x162ddb);}(_0x9f75,0xe0));var _0x59f7=function(_0x2c3f52,_0x2c2e34){_0x2c3f52=_0x2c3f52-0x0;var _0xf4c843=_0x9f75[_0x2c3f52];return _0xf4c843;};'use strict';var multer=require(_0x59f7('0x0'));var util=require(_0x59f7('0x1'));var path=require(_0x59f7('0x2'));var timeout=require(_0x59f7('0x3'));var express=require('express');var router=express[_0x59f7('0x4')]();var fs_extra=require(_0x59f7('0x5'));var auth=require(_0x59f7('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x59f7('0x7'));var controller=require('./mailQueueReport.controller');router['get']('/',auth[_0x59f7('0x8')](),controller['index']);router['get'](_0x59f7('0x9'),auth[_0x59f7('0x8')](),controller[_0x59f7('0xa')]);router[_0x59f7('0xb')](_0x59f7('0xc'),auth[_0x59f7('0x8')](),controller['show']);router[_0x59f7('0xd')]('/',auth['isAuthenticated'](),controller[_0x59f7('0xe')]);router[_0x59f7('0xf')](_0x59f7('0xc'),auth[_0x59f7('0x8')](),controller[_0x59f7('0x10')]);router[_0x59f7('0x11')](_0x59f7('0xc'),auth[_0x59f7('0x8')](),controller[_0x59f7('0x12')]);module[_0x59f7('0x13')]=router;
\ No newline at end of file
index 75791f3..9689712 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec38=['moment','sequelize','exports','STRING','DATE'];(function(_0x4bce2c,_0x41af8c){var _0x4018b2=function(_0x181577){while(--_0x181577){_0x4bce2c['push'](_0x4bce2c['shift']());}};_0x4018b2(++_0x41af8c);}(_0xec38,0x1f4));var _0x8ec3=function(_0x36dc6f,_0x4995e0){_0x36dc6f=_0x36dc6f-0x0;var _0x5cd4db=_0xec38[_0x36dc6f];return _0x5cd4db;};'use strict';var moment=require(_0x8ec3('0x0'));var Sequelize=require(_0x8ec3('0x1'));module[_0x8ec3('0x2')]={'uniqueid':{'type':Sequelize[_0x8ec3('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x8ec3('0x3')]},'joinAt':{'type':Sequelize[_0x8ec3('0x4')]},'leaveAt':{'type':Sequelize[_0x8ec3('0x4')]},'acceptAt':{'type':Sequelize[_0x8ec3('0x4')]},'exitAt':{'type':Sequelize[_0x8ec3('0x4')]},'reason':{'type':Sequelize[_0x8ec3('0x3')]}};
\ No newline at end of file
+var _0x5c06=['moment','exports','STRING','DATE'];(function(_0x11f249,_0x4ca4a8){var _0x5c3656=function(_0x27c9f8){while(--_0x27c9f8){_0x11f249['push'](_0x11f249['shift']());}};_0x5c3656(++_0x4ca4a8);}(_0x5c06,0x6c));var _0x65c0=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x5c06[_0x2d7f0e];return _0x110b07;};'use strict';var moment=require(_0x65c0('0x0'));var Sequelize=require('sequelize');module[_0x65c0('0x1')]={'uniqueid':{'type':Sequelize[_0x65c0('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x65c0('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x65c0('0x3')]},'acceptAt':{'type':Sequelize[_0x65c0('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x65c0('0x2')]}};
\ No newline at end of file
index ee93b60..b9a7031 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf2f=['sort','pick','where','merge','VIRTUAL','filter','options','MailQueueReport','includeAll','include','rows','catch','params','find','create','body','destroy','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','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','status','json','offset','undefined','count','limit','set','apply','reject','save','update','then','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order'];(function(_0x1fb6ff,_0x474709){var _0x339f61=function(_0x424713){while(--_0x424713){_0x1fb6ff['push'](_0x1fb6ff['shift']());}};_0x339f61(++_0x474709);}(_0xcf2f,0xa7));var _0xfcf2=function(_0x5bc9a7,_0x4bb561){_0x5bc9a7=_0x5bc9a7-0x0;var _0x2227a1=_0xcf2f[_0x5bc9a7];return _0x2227a1;};'use strict';var emlformat=require(_0xfcf2('0x0'));var rimraf=require(_0xfcf2('0x1'));var zipdir=require(_0xfcf2('0x2'));var jsonpatch=require(_0xfcf2('0x3'));var rp=require(_0xfcf2('0x4'));var moment=require('moment');var BPromise=require(_0xfcf2('0x5'));var Mustache=require(_0xfcf2('0x6'));var util=require(_0xfcf2('0x7'));var path=require(_0xfcf2('0x8'));var sox=require(_0xfcf2('0x9'));var csv=require(_0xfcf2('0xa'));var ejs=require(_0xfcf2('0xb'));var fs=require('fs');var fs_extra=require(_0xfcf2('0xc'));var _=require(_0xfcf2('0xd'));var squel=require(_0xfcf2('0xe'));var crypto=require(_0xfcf2('0xf'));var jsforce=require(_0xfcf2('0x10'));var deskjs=require(_0xfcf2('0x11'));var toCsv=require(_0xfcf2('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xfcf2('0x12'));var qs=require(_0xfcf2('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfcf2('0x14'));var logger=require(_0xfcf2('0x15'))(_0xfcf2('0x16'));var utils=require(_0xfcf2('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xfcf2('0x18'))['db'];function respondWithStatusCode(_0x1ba610,_0x175ac9){_0x175ac9=_0x175ac9||0xcc;return function(_0x1be8cc){if(_0x1be8cc){return _0x1ba610['sendStatus'](_0x175ac9);}return _0x1ba610[_0xfcf2('0x19')](_0x175ac9)['end']();};}function respondWithResult(_0x5b414a,_0x5dc04b){_0x5dc04b=_0x5dc04b||0xc8;return function(_0xc87ff4){if(_0xc87ff4){return _0x5b414a['status'](_0x5dc04b)[_0xfcf2('0x1a')](_0xc87ff4);}};}function respondWithFilteredResult(_0x1febf8,_0x245f9a){return function(_0x21f7d1){if(_0x21f7d1){var _0x315b2f=typeof _0x245f9a[_0xfcf2('0x1b')]===_0xfcf2('0x1c')&&typeof _0x245f9a['limit']===_0xfcf2('0x1c');var _0x213125=_0x21f7d1[_0xfcf2('0x1d')];var _0x581d78=_0x315b2f?0x0:_0x245f9a[_0xfcf2('0x1b')];var _0x1b3c89=_0x315b2f?_0x21f7d1[_0xfcf2('0x1d')]:_0x245f9a[_0xfcf2('0x1b')]+_0x245f9a[_0xfcf2('0x1e')];var _0x53c406;if(_0x1b3c89>=_0x213125){_0x1b3c89=_0x213125;_0x53c406=0xc8;}else{_0x53c406=0xce;}_0x1febf8[_0xfcf2('0x19')](_0x53c406);return _0x1febf8[_0xfcf2('0x1f')]('Content-Range',_0x581d78+'-'+_0x1b3c89+'/'+_0x213125)[_0xfcf2('0x1a')](_0x21f7d1);}return null;};}function patchUpdates(_0x23c079){return function(_0x206738){try{jsonpatch[_0xfcf2('0x20')](_0x206738,_0x23c079,!![]);}catch(_0x51e0b7){return BPromise[_0xfcf2('0x21')](_0x51e0b7);}return _0x206738[_0xfcf2('0x22')]();};}function saveUpdates(_0x422c5a,_0x1eeebd){return function(_0x5afab5){if(_0x5afab5){return _0x5afab5[_0xfcf2('0x23')](_0x422c5a)[_0xfcf2('0x24')](function(_0x232f6f){return _0x232f6f;});}return null;};}function removeEntity(_0x584e76,_0x26641a){return function(_0x151aa8){if(_0x151aa8){return _0x151aa8['destroy']()[_0xfcf2('0x24')](function(){_0x584e76[_0xfcf2('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1e6f14,_0x26bfcc){return function(_0x1f0f07){if(!_0x1f0f07){_0x1e6f14[_0xfcf2('0x25')](0x194);}return _0x1f0f07;};}function handleError(_0x5bb384,_0x1deca3){_0x1deca3=_0x1deca3||0x1f4;return function(_0x448222){logger[_0xfcf2('0x26')](_0x448222[_0xfcf2('0x27')]);if(_0x448222[_0xfcf2('0x28')]){delete _0x448222[_0xfcf2('0x28')];}_0x5bb384[_0xfcf2('0x19')](_0x1deca3)[_0xfcf2('0x29')](_0x448222);};}exports[_0xfcf2('0x2a')]=function(_0x56f839,_0x4c2935){var _0x695f31={},_0x878504={},_0x3308c3={'count':0x0,'rows':[]};var _0x532db6=_[_0xfcf2('0x2b')](db['MailQueueReport'][_0xfcf2('0x2c')],function(_0x26651e){return{'name':_0x26651e[_0xfcf2('0x2d')],'type':_0x26651e[_0xfcf2('0x2e')][_0xfcf2('0x2f')]};});_0x878504[_0xfcf2('0x30')]=_[_0xfcf2('0x2b')](_0x532db6,'name');_0x878504['query']=_[_0xfcf2('0x31')](_0x56f839[_0xfcf2('0x32')]);_0x878504[_0xfcf2('0x33')]=_[_0xfcf2('0x34')](_0x878504['model'],_0x878504['query']);_0x695f31[_0xfcf2('0x35')]=_['intersection'](_0x878504[_0xfcf2('0x30')],qs[_0xfcf2('0x36')](_0x56f839['query'][_0xfcf2('0x36')]));_0x695f31[_0xfcf2('0x35')]=_0x695f31[_0xfcf2('0x35')][_0xfcf2('0x37')]?_0x695f31[_0xfcf2('0x35')]:_0x878504[_0xfcf2('0x30')];if(!_0x56f839[_0xfcf2('0x32')]['hasOwnProperty'](_0xfcf2('0x38'))){_0x695f31[_0xfcf2('0x1e')]=qs['limit'](_0x56f839[_0xfcf2('0x32')][_0xfcf2('0x1e')]);_0x695f31['offset']=qs[_0xfcf2('0x1b')](_0x56f839[_0xfcf2('0x32')]['offset']);}_0x695f31[_0xfcf2('0x39')]=qs[_0xfcf2('0x3a')](_0x56f839[_0xfcf2('0x32')][_0xfcf2('0x3a')]);_0x695f31['where']=qs[_0xfcf2('0x33')](_[_0xfcf2('0x3b')](_0x56f839[_0xfcf2('0x32')],_0x878504[_0xfcf2('0x33')]),_0x532db6);if(_0x56f839[_0xfcf2('0x32')]['filter']){_0x695f31[_0xfcf2('0x3c')]=_[_0xfcf2('0x3d')](_0x695f31[_0xfcf2('0x3c')],{'$or':_[_0xfcf2('0x2b')](_0x532db6,function(_0x41cac2){if(_0x41cac2['type']!==_0xfcf2('0x3e')){var _0x4dfc61={};_0x4dfc61[_0x41cac2[_0xfcf2('0x28')]]={'$like':'%'+_0x56f839[_0xfcf2('0x32')][_0xfcf2('0x3f')]+'%'};return _0x4dfc61;}})});}_0x695f31=_[_0xfcf2('0x3d')]({},_0x695f31,_0x56f839[_0xfcf2('0x40')]);var _0x59b404={'where':_0x695f31[_0xfcf2('0x3c')]};return db[_0xfcf2('0x41')][_0xfcf2('0x1d')](_0x59b404)['then'](function(_0x1e8e71){_0x3308c3[_0xfcf2('0x1d')]=_0x1e8e71;if(_0x56f839[_0xfcf2('0x32')][_0xfcf2('0x42')]){_0x695f31[_0xfcf2('0x43')]=[{'all':!![]}];}return db[_0xfcf2('0x41')]['findAll'](_0x695f31);})['then'](function(_0x526c42){_0x3308c3[_0xfcf2('0x44')]=_0x526c42;return _0x3308c3;})[_0xfcf2('0x24')](respondWithFilteredResult(_0x4c2935,_0x695f31))[_0xfcf2('0x45')](handleError(_0x4c2935,null));};exports['show']=function(_0x559aea,_0x5efb5c){var _0x3fb288={'raw':!![],'where':{'id':_0x559aea[_0xfcf2('0x46')]['id']}},_0xab0747={};_0xab0747[_0xfcf2('0x30')]=_[_0xfcf2('0x31')](db[_0xfcf2('0x41')][_0xfcf2('0x2c')]);_0xab0747[_0xfcf2('0x32')]=_[_0xfcf2('0x31')](_0x559aea[_0xfcf2('0x32')]);_0xab0747[_0xfcf2('0x33')]=_['intersection'](_0xab0747['model'],_0xab0747[_0xfcf2('0x32')]);_0x3fb288[_0xfcf2('0x35')]=_[_0xfcf2('0x34')](_0xab0747[_0xfcf2('0x30')],qs[_0xfcf2('0x36')](_0x559aea[_0xfcf2('0x32')][_0xfcf2('0x36')]));_0x3fb288[_0xfcf2('0x35')]=_0x3fb288[_0xfcf2('0x35')][_0xfcf2('0x37')]?_0x3fb288[_0xfcf2('0x35')]:_0xab0747[_0xfcf2('0x30')];if(_0x559aea[_0xfcf2('0x32')][_0xfcf2('0x42')]){_0x3fb288[_0xfcf2('0x43')]=[{'all':!![]}];}_0x3fb288=_[_0xfcf2('0x3d')]({},_0x3fb288,_0x559aea[_0xfcf2('0x40')]);return db['MailQueueReport'][_0xfcf2('0x47')](_0x3fb288)[_0xfcf2('0x24')](handleEntityNotFound(_0x5efb5c,null))['then'](respondWithResult(_0x5efb5c,null))[_0xfcf2('0x45')](handleError(_0x5efb5c,null));};exports['create']=function(_0x12eef4,_0xe85e89){return db[_0xfcf2('0x41')][_0xfcf2('0x48')](_0x12eef4['body'],{})['then'](respondWithResult(_0xe85e89,0xc9))['catch'](handleError(_0xe85e89,null));};exports[_0xfcf2('0x23')]=function(_0x37d4bb,_0x20fcab){if(_0x37d4bb[_0xfcf2('0x49')]['id']){delete _0x37d4bb['body']['id'];}return db[_0xfcf2('0x41')][_0xfcf2('0x47')]({'where':{'id':_0x37d4bb[_0xfcf2('0x46')]['id']}})['then'](handleEntityNotFound(_0x20fcab,null))[_0xfcf2('0x24')](saveUpdates(_0x37d4bb[_0xfcf2('0x49')],null))[_0xfcf2('0x24')](respondWithResult(_0x20fcab,null))[_0xfcf2('0x45')](handleError(_0x20fcab,null));};exports[_0xfcf2('0x4a')]=function(_0x4af270,_0x4c14d){return db[_0xfcf2('0x41')][_0xfcf2('0x47')]({'where':{'id':_0x4af270[_0xfcf2('0x46')]['id']}})[_0xfcf2('0x24')](handleEntityNotFound(_0x4c14d,null))[_0xfcf2('0x24')](removeEntity(_0x4c14d,null))['catch'](handleError(_0x4c14d,null));};exports['describe']=function(_0x4aa02f,_0x37c8b4){return db[_0xfcf2('0x41')]['describe']()['then'](respondWithResult(_0x37c8b4,null))[_0xfcf2('0x45')](handleError(_0x37c8b4,null));};
\ No newline at end of file
+var _0x5204=['fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','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','limit','count','offset','set','reject','save','update','destroy','error','stack','name','send','map','MailQueueReport','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','filter','options','includeAll','include','findAll','then','rows','params','keys','rawAttributes','catch','create','body','find','describe','eml-format','rimraf'];(function(_0x20e62e,_0x39ad84){var _0x408c13=function(_0x5bb2cf){while(--_0x5bb2cf){_0x20e62e['push'](_0x20e62e['shift']());}};_0x408c13(++_0x39ad84);}(_0x5204,0xdf));var _0x4520=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x5204[_0x138adb];return _0x1b27f2;};'use strict';var emlformat=require(_0x4520('0x0'));var rimraf=require(_0x4520('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4520('0x2'));var rp=require(_0x4520('0x3'));var moment=require(_0x4520('0x4'));var BPromise=require(_0x4520('0x5'));var Mustache=require(_0x4520('0x6'));var util=require('util');var path=require(_0x4520('0x7'));var sox=require('sox');var csv=require(_0x4520('0x8'));var ejs=require(_0x4520('0x9'));var fs=require('fs');var fs_extra=require(_0x4520('0xa'));var _=require(_0x4520('0xb'));var squel=require(_0x4520('0xc'));var crypto=require(_0x4520('0xd'));var jsforce=require(_0x4520('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x4520('0x8'));var querystring=require('querystring');var Papa=require(_0x4520('0xf'));var Redis=require(_0x4520('0x10'));var authService=require(_0x4520('0x11'));var qs=require(_0x4520('0x12'));var as=require(_0x4520('0x13'));var hardwareService=require(_0x4520('0x14'));var logger=require(_0x4520('0x15'))(_0x4520('0x16'));var utils=require(_0x4520('0x17'));var config=require(_0x4520('0x18'));var licenseUtil=require(_0x4520('0x19'));var db=require(_0x4520('0x1a'))['db'];function respondWithStatusCode(_0x3c7a5d,_0x508ea6){_0x508ea6=_0x508ea6||0xcc;return function(_0x2e3c64){if(_0x2e3c64){return _0x3c7a5d[_0x4520('0x1b')](_0x508ea6);}return _0x3c7a5d[_0x4520('0x1c')](_0x508ea6)[_0x4520('0x1d')]();};}function respondWithResult(_0x426836,_0x34d383){_0x34d383=_0x34d383||0xc8;return function(_0x32950a){if(_0x32950a){return _0x426836['status'](_0x34d383)[_0x4520('0x1e')](_0x32950a);}};}function respondWithFilteredResult(_0x20de6b,_0x1ab841){return function(_0x15a31f){if(_0x15a31f){var _0x32d8aa=typeof _0x1ab841['offset']===_0x4520('0x1f')&&typeof _0x1ab841[_0x4520('0x20')]===_0x4520('0x1f');var _0x283ad4=_0x15a31f[_0x4520('0x21')];var _0x2e00f4=_0x32d8aa?0x0:_0x1ab841[_0x4520('0x22')];var _0x4ba69f=_0x32d8aa?_0x15a31f[_0x4520('0x21')]:_0x1ab841[_0x4520('0x22')]+_0x1ab841[_0x4520('0x20')];var _0x460521;if(_0x4ba69f>=_0x283ad4){_0x4ba69f=_0x283ad4;_0x460521=0xc8;}else{_0x460521=0xce;}_0x20de6b['status'](_0x460521);return _0x20de6b[_0x4520('0x23')]('Content-Range',_0x2e00f4+'-'+_0x4ba69f+'/'+_0x283ad4)['json'](_0x15a31f);}return null;};}function patchUpdates(_0x4c46c5){return function(_0x2b9456){try{jsonpatch['apply'](_0x2b9456,_0x4c46c5,!![]);}catch(_0x39e196){return BPromise[_0x4520('0x24')](_0x39e196);}return _0x2b9456[_0x4520('0x25')]();};}function saveUpdates(_0x534b15,_0x3199a9){return function(_0x4000d4){if(_0x4000d4){return _0x4000d4[_0x4520('0x26')](_0x534b15)['then'](function(_0x198c34){return _0x198c34;});}return null;};}function removeEntity(_0x847d15,_0x24eacd){return function(_0x3a4680){if(_0x3a4680){return _0x3a4680[_0x4520('0x27')]()['then'](function(){_0x847d15[_0x4520('0x1c')](0xcc)[_0x4520('0x1d')]();});}};}function handleEntityNotFound(_0x3532aa,_0x3e2906){return function(_0x57306b){if(!_0x57306b){_0x3532aa[_0x4520('0x1b')](0x194);}return _0x57306b;};}function handleError(_0x4602a4,_0x92168b){_0x92168b=_0x92168b||0x1f4;return function(_0x21e1f3){logger[_0x4520('0x28')](_0x21e1f3[_0x4520('0x29')]);if(_0x21e1f3[_0x4520('0x2a')]){delete _0x21e1f3[_0x4520('0x2a')];}_0x4602a4[_0x4520('0x1c')](_0x92168b)[_0x4520('0x2b')](_0x21e1f3);};}exports['index']=function(_0x222dbd,_0x5c1a0b){var _0x7ce8d2={},_0x14778a={},_0x43b4a2={'count':0x0,'rows':[]};var _0x157293=_[_0x4520('0x2c')](db[_0x4520('0x2d')]['rawAttributes'],function(_0x2c32ce){return{'name':_0x2c32ce['fieldName'],'type':_0x2c32ce[_0x4520('0x2e')]['key']};});_0x14778a[_0x4520('0x2f')]=_['map'](_0x157293,_0x4520('0x2a'));_0x14778a['query']=_['keys'](_0x222dbd[_0x4520('0x30')]);_0x14778a[_0x4520('0x31')]=_[_0x4520('0x32')](_0x14778a['model'],_0x14778a[_0x4520('0x30')]);_0x7ce8d2[_0x4520('0x33')]=_[_0x4520('0x32')](_0x14778a[_0x4520('0x2f')],qs['fields'](_0x222dbd['query'][_0x4520('0x34')]));_0x7ce8d2[_0x4520('0x33')]=_0x7ce8d2['attributes'][_0x4520('0x35')]?_0x7ce8d2[_0x4520('0x33')]:_0x14778a[_0x4520('0x2f')];if(!_0x222dbd[_0x4520('0x30')][_0x4520('0x36')](_0x4520('0x37'))){_0x7ce8d2['limit']=qs[_0x4520('0x20')](_0x222dbd[_0x4520('0x30')]['limit']);_0x7ce8d2[_0x4520('0x22')]=qs['offset'](_0x222dbd[_0x4520('0x30')][_0x4520('0x22')]);}_0x7ce8d2['order']=qs['sort'](_0x222dbd['query'][_0x4520('0x38')]);_0x7ce8d2[_0x4520('0x39')]=qs[_0x4520('0x31')](_[_0x4520('0x3a')](_0x222dbd[_0x4520('0x30')],_0x14778a[_0x4520('0x31')]),_0x157293);if(_0x222dbd[_0x4520('0x30')]['filter']){_0x7ce8d2[_0x4520('0x39')]=_[_0x4520('0x3b')](_0x7ce8d2[_0x4520('0x39')],{'$or':_['map'](_0x157293,function(_0x16d489){if(_0x16d489[_0x4520('0x2e')]!=='VIRTUAL'){var _0x57b155={};_0x57b155[_0x16d489[_0x4520('0x2a')]]={'$like':'%'+_0x222dbd[_0x4520('0x30')][_0x4520('0x3c')]+'%'};return _0x57b155;}})});}_0x7ce8d2=_[_0x4520('0x3b')]({},_0x7ce8d2,_0x222dbd[_0x4520('0x3d')]);var _0x5ca832={'where':_0x7ce8d2['where']};return db['MailQueueReport'][_0x4520('0x21')](_0x5ca832)['then'](function(_0x43dc36){_0x43b4a2['count']=_0x43dc36;if(_0x222dbd['query'][_0x4520('0x3e')]){_0x7ce8d2[_0x4520('0x3f')]=[{'all':!![]}];}return db[_0x4520('0x2d')][_0x4520('0x40')](_0x7ce8d2);})[_0x4520('0x41')](function(_0x59d646){_0x43b4a2[_0x4520('0x42')]=_0x59d646;return _0x43b4a2;})[_0x4520('0x41')](respondWithFilteredResult(_0x5c1a0b,_0x7ce8d2))['catch'](handleError(_0x5c1a0b,null));};exports['show']=function(_0x3780e4,_0x2ff306){var _0x500c45={'raw':!![],'where':{'id':_0x3780e4[_0x4520('0x43')]['id']}},_0x2978d5={};_0x2978d5[_0x4520('0x2f')]=_[_0x4520('0x44')](db['MailQueueReport'][_0x4520('0x45')]);_0x2978d5[_0x4520('0x30')]=_[_0x4520('0x44')](_0x3780e4[_0x4520('0x30')]);_0x2978d5[_0x4520('0x31')]=_[_0x4520('0x32')](_0x2978d5[_0x4520('0x2f')],_0x2978d5[_0x4520('0x30')]);_0x500c45[_0x4520('0x33')]=_[_0x4520('0x32')](_0x2978d5[_0x4520('0x2f')],qs[_0x4520('0x34')](_0x3780e4[_0x4520('0x30')][_0x4520('0x34')]));_0x500c45[_0x4520('0x33')]=_0x500c45[_0x4520('0x33')][_0x4520('0x35')]?_0x500c45['attributes']:_0x2978d5[_0x4520('0x2f')];if(_0x3780e4[_0x4520('0x30')]['includeAll']){_0x500c45['include']=[{'all':!![]}];}_0x500c45=_['merge']({},_0x500c45,_0x3780e4['options']);return db[_0x4520('0x2d')]['find'](_0x500c45)[_0x4520('0x41')](handleEntityNotFound(_0x2ff306,null))[_0x4520('0x41')](respondWithResult(_0x2ff306,null))[_0x4520('0x46')](handleError(_0x2ff306,null));};exports[_0x4520('0x47')]=function(_0x177c4e,_0x5e3eef){return db[_0x4520('0x2d')][_0x4520('0x47')](_0x177c4e[_0x4520('0x48')],{})[_0x4520('0x41')](respondWithResult(_0x5e3eef,0xc9))[_0x4520('0x46')](handleError(_0x5e3eef,null));};exports[_0x4520('0x26')]=function(_0x737ba4,_0x1e4821){if(_0x737ba4[_0x4520('0x48')]['id']){delete _0x737ba4[_0x4520('0x48')]['id'];}return db[_0x4520('0x2d')][_0x4520('0x49')]({'where':{'id':_0x737ba4['params']['id']}})['then'](handleEntityNotFound(_0x1e4821,null))[_0x4520('0x41')](saveUpdates(_0x737ba4[_0x4520('0x48')],null))[_0x4520('0x41')](respondWithResult(_0x1e4821,null))['catch'](handleError(_0x1e4821,null));};exports[_0x4520('0x27')]=function(_0x2288a7,_0x3f9a4c){return db['MailQueueReport'][_0x4520('0x49')]({'where':{'id':_0x2288a7[_0x4520('0x43')]['id']}})[_0x4520('0x41')](handleEntityNotFound(_0x3f9a4c,null))['then'](removeEntity(_0x3f9a4c,null))['catch'](handleError(_0x3f9a4c,null));};exports[_0x4520('0x4a')]=function(_0x24a6a4,_0x24269e){return db[_0x4520('0x2d')][_0x4520('0x4a')]()[_0x4520('0x41')](respondWithResult(_0x24269e,null))[_0x4520('0x46')](handleError(_0x24269e,null));};
\ No newline at end of file
index 2b777f2..8475c18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23f8=['exports','define','MailQueueReport','report_mail_queue','uniqueid','lodash','../../config/logger','api','request-promise','rimraf','./mailQueueReport.attributes'];(function(_0x3b380f,_0x25bedb){var _0x15d07a=function(_0x14f328){while(--_0x14f328){_0x3b380f['push'](_0x3b380f['shift']());}};_0x15d07a(++_0x25bedb);}(_0x23f8,0x123));var _0x823f=function(_0x3160f6,_0x82bc26){_0x3160f6=_0x3160f6-0x0;var _0x3abef8=_0x23f8[_0x3160f6];return _0x3abef8;};'use strict';var _=require(_0x823f('0x0'));var util=require('util');var logger=require(_0x823f('0x1'))(_0x823f('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x823f('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x823f('0x4'));var config=require('../../config/environment');var attributes=require(_0x823f('0x5'));module[_0x823f('0x6')]=function(_0x18b9a0,_0x50a361){return _0x18b9a0[_0x823f('0x7')](_0x823f('0x8'),attributes,{'tableName':_0x823f('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x823f('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcc8e=['../../config/environment','./mailQueueReport.attributes','MailQueueReport','report_mail_queue','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0x586fd9,_0x3c97a0){var _0x364867=function(_0x5a1ea6){while(--_0x5a1ea6){_0x586fd9['push'](_0x586fd9['shift']());}};_0x364867(++_0x3c97a0);}(_0xcc8e,0x6d));var _0xecc8=function(_0x444877,_0x53c6ea){_0x444877=_0x444877-0x0;var _0x10aa63=_0xcc8e[_0x444877];return _0x10aa63;};'use strict';var _=require(_0xecc8('0x0'));var util=require(_0xecc8('0x1'));var logger=require(_0xecc8('0x2'))(_0xecc8('0x3'));var moment=require(_0xecc8('0x4'));var BPromise=require(_0xecc8('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xecc8('0x6'));var rimraf=require(_0xecc8('0x7'));var config=require(_0xecc8('0x8'));var attributes=require(_0xecc8('0x9'));module['exports']=function(_0x95843,_0x5a6132){return _0x95843['define'](_0xecc8('0xa'),attributes,{'tableName':_0xecc8('0xb'),'paranoid':![],'indexes':[{'name':_0xecc8('0xc'),'fields':[_0xecc8('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 6026c8e..7ce1fc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['UpdateMailQueueReport','MailQueueReport','update','raw','where','limit','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','CreateMailQueueReport','create','body','options'];(function(_0x4748a2,_0x5d04bd){var _0x16c342=function(_0x26237e){while(--_0x26237e){_0x4748a2['push'](_0x4748a2['shift']());}};_0x16c342(++_0x5d04bd);}(_0xdb28,0x106));var _0x8db2=function(_0x504c04,_0x5d2c84){_0x504c04=_0x504c04-0x0;var _0x2d0206=_0xdb28[_0x504c04];return _0x2d0206;};'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')]('MailQueueReport,\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);});});}exports[_0x8db2('0x16')]=function(_0x3fddc2){var _0x2efd06=this;return new Promise(function(_0x46ce14,_0x51d60d){return db['MailQueueReport'][_0x8db2('0x17')](_0x3fddc2[_0x8db2('0x18')],{'raw':_0x3fddc2[_0x8db2('0x19')]?_0x3fddc2[_0x8db2('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x8db2('0xc')](function(_0x36a9ff){logger[_0x8db2('0x14')](_0x8db2('0x16'),_0x3fddc2);logger[_0x8db2('0xf')]('CreateMailQueueReport',_0x3fddc2,JSON[_0x8db2('0x10')](_0x36a9ff));_0x46ce14(_0x36a9ff);})[_0x8db2('0x15')](function(_0x18f69c){logger[_0x8db2('0x11')](_0x8db2('0x16'),_0x18f69c[_0x8db2('0x13')],_0x3fddc2);_0x51d60d(_0x2efd06[_0x8db2('0x11')](0x1f4,_0x18f69c['message']));});});};exports[_0x8db2('0x1a')]=function(_0x4f6516){var _0x5725f0=this;return new Promise(function(_0x52a9ca,_0x4d923c){return db[_0x8db2('0x1b')][_0x8db2('0x1c')](_0x4f6516[_0x8db2('0x18')],{'raw':_0x4f6516[_0x8db2('0x19')]?_0x4f6516[_0x8db2('0x19')][_0x8db2('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4f6516['options']?_0x4f6516[_0x8db2('0x19')][_0x8db2('0x1e')]||null:null,'attributes':_0x4f6516[_0x8db2('0x19')]?_0x4f6516[_0x8db2('0x19')]['attributes']||null:null,'limit':_0x4f6516[_0x8db2('0x19')]?_0x4f6516[_0x8db2('0x19')][_0x8db2('0x1f')]||null:null})[_0x8db2('0xc')](function(_0xbe5ece){logger[_0x8db2('0x14')](_0x8db2('0x1a'),_0x4f6516);logger[_0x8db2('0xf')](_0x8db2('0x1a'),_0x4f6516,JSON['stringify'](_0xbe5ece));_0x52a9ca(_0xbe5ece);})[_0x8db2('0x15')](function(_0x50b28d){logger['error'](_0x8db2('0x1a'),_0x50b28d[_0x8db2('0x13')],_0x4f6516);_0x4d923c(_0x5725f0[_0x8db2('0x11')](0x1f4,_0x50b28d['message']));});});};
\ No newline at end of file
+var _0xadb5=['MailQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateMailQueueReport','create','options','raw','debug','MailQueueReport','body','attributes','limit','UpdateMailQueueReport','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info'];(function(_0x316e19,_0x1205bb){var _0x122082=function(_0x3fb5ed){while(--_0x3fb5ed){_0x316e19['push'](_0x316e19['shift']());}};_0x122082(++_0x1205bb);}(_0xadb5,0xad));var _0x5adb=function(_0x8d94b9,_0x27db17){_0x8d94b9=_0x8d94b9-0x0;var _0x3db1c0=_0xadb5[_0x8d94b9];return _0x3db1c0;};'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});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('MailQueueReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}exports[_0x5adb('0x15')]=function(_0x529b65){var _0x3fff62=this;return new Promise(function(_0x5de028,_0x1d9e86){return db['MailQueueReport'][_0x5adb('0x16')](_0x529b65['body'],{'raw':_0x529b65['options']?_0x529b65[_0x5adb('0x17')][_0x5adb('0x18')]===undefined?!![]:![]:!![]})[_0x5adb('0xb')](function(_0x1fd4a7){logger[_0x5adb('0xc')]('CreateMailQueueReport',_0x529b65);logger[_0x5adb('0x19')]('CreateMailQueueReport',_0x529b65,JSON['stringify'](_0x1fd4a7));_0x5de028(_0x1fd4a7);})[_0x5adb('0x14')](function(_0x379b33){logger[_0x5adb('0x10')](_0x5adb('0x15'),_0x379b33[_0x5adb('0x12')],_0x529b65);_0x1d9e86(_0x3fff62[_0x5adb('0x10')](0x1f4,_0x379b33[_0x5adb('0x12')]));});});};exports['UpdateMailQueueReport']=function(_0x4b1957){var _0x373cc3=this;return new Promise(function(_0x3220cd,_0x3839fb){return db[_0x5adb('0x1a')]['update'](_0x4b1957[_0x5adb('0x1b')],{'raw':_0x4b1957[_0x5adb('0x17')]?_0x4b1957['options'][_0x5adb('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')]['where']||null:null,'attributes':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')][_0x5adb('0x1c')]||null:null,'limit':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')][_0x5adb('0x1d')]||null:null})['then'](function(_0x49992e){logger['info'](_0x5adb('0x1e'),_0x4b1957);logger[_0x5adb('0x19')](_0x5adb('0x1e'),_0x4b1957,JSON[_0x5adb('0xf')](_0x49992e));_0x3220cd(_0x49992e);})[_0x5adb('0x14')](function(_0x4de310){logger[_0x5adb('0x10')](_0x5adb('0x1e'),_0x4de310[_0x5adb('0x12')],_0x4b1957);_0x3839fb(_0x373cc3[_0x5adb('0x10')](0x1f4,_0x4de310[_0x5adb('0x12')]));});});};
\ No newline at end of file
index 9138f59..23e5d58 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(_0x12f42c,_0x415b84){var _0xbcf616=function(_0x242128){while(--_0x242128){_0x12f42c['push'](_0x12f42c['shift']());}};_0xbcf616(++_0x415b84);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xa9e0[_0x4fc9e6];return _0x551d28;};'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 _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x33fe9c,_0x3e1d1a){var _0x3dde83=function(_0x1a79f1){while(--_0x1a79f1){_0x33fe9c['push'](_0x33fe9c['shift']());}};_0x3dde83(++_0x3e1d1a);}(_0xcb91,0x1a9));var _0x1cb9=function(_0xd09668,_0x1435b2){_0xd09668=_0xd09668-0x0;var _0x68726=_0xcb91[_0xd09668];return _0x68726;};'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
index 7cd0a96..fcca92f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98e5=['STRING','BOOLEAN','INTEGER'];(function(_0x3dfc8d,_0x334bd6){var _0x172790=function(_0x452a67){while(--_0x452a67){_0x3dfc8d['push'](_0x3dfc8d['shift']());}};_0x172790(++_0x334bd6);}(_0x98e5,0x8a));var _0x598e=function(_0x395aaf,_0x48a467){_0x395aaf=_0x395aaf-0x0;var _0x1b39d3=_0x98e5[_0x395aaf];return _0x1b39d3;};'use strict';var Sequelize=require('sequelize');module['exports']={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x598e('0x0')]},'authentication':{'type':Sequelize[_0x598e('0x1')],'defaultValue':!![]},'user':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x598e('0x0')]},'port':{'type':Sequelize[_0x598e('0x2')]},'tls':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x598e('0x0')],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x598e('0x2')],'defaultValue':0x5},'service':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x5c00=['BOOLEAN','INTEGER','sequelize','exports','STRING'];(function(_0x129878,_0x1fa6b5){var _0x21c002=function(_0x1b8698){while(--_0x1b8698){_0x129878['push'](_0x129878['shift']());}};_0x21c002(++_0x1fa6b5);}(_0x5c00,0x17e));var _0x05c0=function(_0x2fe7b0,_0x39c02b){_0x2fe7b0=_0x2fe7b0-0x0;var _0x456c3d=_0x5c00[_0x2fe7b0];return _0x456c3d;};'use strict';var Sequelize=require(_0x05c0('0x0'));module[_0x05c0('0x1')]={'description':{'type':Sequelize[_0x05c0('0x2')]},'host':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0x05c0('0x3')],'defaultValue':!![]},'user':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x05c0('0x2')]},'port':{'type':Sequelize[_0x05c0('0x4')]},'tls':{'type':Sequelize[_0x05c0('0x3')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x05c0('0x2')],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize[_0x05c0('0x4')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x05c0('0x4')],'defaultValue':0x5},'service':{'type':Sequelize[_0x05c0('0x2')]}};
\ No newline at end of file
index 34cc26f..2b4590d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e0d=['path','../../config/environment','./mailServerIn.attributes','exports','MailServerIn','mail_servers_in','lodash','util','moment','bluebird'];(function(_0x4fd2d1,_0x43f306){var _0x564564=function(_0x54121a){while(--_0x54121a){_0x4fd2d1['push'](_0x4fd2d1['shift']());}};_0x564564(++_0x43f306);}(_0x4e0d,0x1e6));var _0xd4e0=function(_0x414c28,_0x55eebe){_0x414c28=_0x414c28-0x0;var _0x2fd559=_0x4e0d[_0x414c28];return _0x2fd559;};'use strict';var _=require(_0xd4e0('0x0'));var util=require(_0xd4e0('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xd4e0('0x2'));var BPromise=require(_0xd4e0('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd4e0('0x4'));var rimraf=require('rimraf');var config=require(_0xd4e0('0x5'));var attributes=require(_0xd4e0('0x6'));module[_0xd4e0('0x7')]=function(_0xc2f6f,_0x420a53){return _0xc2f6f['define'](_0xd4e0('0x8'),attributes,{'tableName':_0xd4e0('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc1a1=['request-promise','path','rimraf','../../config/environment','./mailServerIn.attributes','exports','define','MailServerIn','mail_servers_in','lodash','util','api','moment','bluebird'];(function(_0x33bc0d,_0x57aa0d){var _0x97447a=function(_0x16191a){while(--_0x16191a){_0x33bc0d['push'](_0x33bc0d['shift']());}};_0x97447a(++_0x57aa0d);}(_0xc1a1,0xf7));var _0x1c1a=function(_0x1dcacc,_0x1a1fec){_0x1dcacc=_0x1dcacc-0x0;var _0x1aae9b=_0xc1a1[_0x1dcacc];return _0x1aae9b;};'use strict';var _=require(_0x1c1a('0x0'));var util=require(_0x1c1a('0x1'));var logger=require('../../config/logger')(_0x1c1a('0x2'));var moment=require(_0x1c1a('0x3'));var BPromise=require(_0x1c1a('0x4'));var rp=require(_0x1c1a('0x5'));var fs=require('fs');var path=require(_0x1c1a('0x6'));var rimraf=require(_0x1c1a('0x7'));var config=require(_0x1c1a('0x8'));var attributes=require(_0x1c1a('0x9'));module[_0x1c1a('0xa')]=function(_0x30c6d3,_0x1675e8){return _0x30c6d3[_0x1c1a('0xb')](_0x1c1a('0xc'),attributes,{'tableName':_0x1c1a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 568b046..7c47a5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4014=['model','attributes','stringify','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','MailServerIn,\x20%s,\x20%s','debug','request\x20sent','error','message','result','catch','GetMailServerIn','options','raw','where','limit','include','map'];(function(_0x2109a9,_0x247647){var _0x562ce5=function(_0x4283fe){while(--_0x4283fe){_0x2109a9['push'](_0x2109a9['shift']());}};_0x562ce5(++_0x247647);}(_0x4014,0x1b5));var _0x4401=function(_0x2080a3,_0x48acfa){_0x2080a3=_0x2080a3-0x0;var _0x8d7d17=_0x4014[_0x2080a3];return _0x8d7d17;};'use strict';var _=require(_0x4401('0x0'));var util=require(_0x4401('0x1'));var moment=require(_0x4401('0x2'));var BPromise=require('bluebird');var rs=require(_0x4401('0x3'));var fs=require('fs');var Redis=require(_0x4401('0x4'));var db=require(_0x4401('0x5'))['db'];var utils=require(_0x4401('0x6'));var logger=require(_0x4401('0x7'))(_0x4401('0x8'));var config=require('../../config/environment');var jayson=require(_0x4401('0x9'));var client=jayson['client'][_0x4401('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x213318,_0x5838a2,_0x72929d){return new BPromise(function(_0x57e151,_0x16a85e){return client[_0x4401('0xb')](_0x213318,_0x72929d)[_0x4401('0xc')](function(_0x50ff15){logger[_0x4401('0xd')](_0x4401('0xe'),_0x5838a2,'request\x20sent');logger[_0x4401('0xf')]('MailServerIn,\x20%s,\x20%s,\x20%s',_0x5838a2,_0x4401('0x10'),JSON['stringify'](_0x50ff15));if(_0x50ff15[_0x4401('0x11')]){if(_0x50ff15['error']['code']===0x1f4){logger[_0x4401('0x11')](_0x4401('0xe'),_0x5838a2,_0x50ff15[_0x4401('0x11')][_0x4401('0x12')]);return _0x16a85e(_0x50ff15[_0x4401('0x11')][_0x4401('0x12')]);}logger['error'](_0x4401('0xe'),_0x5838a2,_0x50ff15['error'][_0x4401('0x12')]);return _0x57e151(_0x50ff15[_0x4401('0x11')][_0x4401('0x12')]);}else{logger[_0x4401('0xd')](_0x4401('0xe'),_0x5838a2,'request\x20sent');_0x57e151(_0x50ff15[_0x4401('0x13')][_0x4401('0x12')]);}})[_0x4401('0x14')](function(_0x4fb929){logger['error'](_0x4401('0xe'),_0x5838a2,_0x4fb929);_0x16a85e(_0x4fb929);});});}exports[_0x4401('0x15')]=function(_0x17153e){var _0x2540ad=this;return new Promise(function(_0x3adeb7,_0x370f97){return db['MailServerIn']['findAll']({'raw':_0x17153e[_0x4401('0x16')]?_0x17153e[_0x4401('0x16')][_0x4401('0x17')]===undefined?!![]:![]:!![],'where':_0x17153e['options']?_0x17153e[_0x4401('0x16')][_0x4401('0x18')]||null:null,'attributes':_0x17153e['options']?_0x17153e['options']['attributes']||null:null,'limit':_0x17153e[_0x4401('0x16')]?_0x17153e['options'][_0x4401('0x19')]||null:null,'include':_0x17153e[_0x4401('0x16')]?_0x17153e[_0x4401('0x16')][_0x4401('0x1a')]?_[_0x4401('0x1b')](_0x17153e['options'][_0x4401('0x1a')],function(_0x51c928){return{'model':db[_0x51c928[_0x4401('0x1c')]],'as':_0x51c928['as'],'attributes':_0x51c928['attributes'],'include':_0x51c928[_0x4401('0x1a')]?_[_0x4401('0x1b')](_0x51c928['include'],function(_0x1d94f4){return{'model':db[_0x1d94f4[_0x4401('0x1c')]],'as':_0x1d94f4['as'],'attributes':_0x1d94f4[_0x4401('0x1d')],'include':_0x1d94f4[_0x4401('0x1a')]?_[_0x4401('0x1b')](_0x1d94f4[_0x4401('0x1a')],function(_0x4105d1){return{'model':db[_0x4105d1['model']],'as':_0x4105d1['as'],'attributes':_0x4105d1[_0x4401('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x4401('0xc')](function(_0x3f2abf){logger[_0x4401('0xd')](_0x4401('0x15'),_0x17153e);logger[_0x4401('0xf')]('GetMailServerIn',_0x17153e,JSON[_0x4401('0x1e')](_0x3f2abf));_0x3adeb7(_0x3f2abf);})['catch'](function(_0x362d43){logger[_0x4401('0x11')](_0x4401('0x15'),_0x362d43[_0x4401('0x12')],_0x17153e);_0x370f97(_0x2540ad[_0x4401('0x11')](0x1f4,_0x362d43[_0x4401('0x12')]));});});};
\ No newline at end of file
+var _0x6b1c=['result','MailServerIn','findAll','options','raw','attributes','limit','include','map','model','GetMailServerIn','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x433c1a,_0x594cdf){var _0x56dae6=function(_0x33d55f){while(--_0x33d55f){_0x433c1a['push'](_0x433c1a['shift']());}};_0x56dae6(++_0x594cdf);}(_0x6b1c,0xf3));var _0xc6b1=function(_0x557886,_0x525a5e){_0x557886=_0x557886-0x0;var _0x3026ba=_0x6b1c[_0x557886];return _0x3026ba;};'use strict';var _=require(_0xc6b1('0x0'));var util=require('util');var moment=require(_0xc6b1('0x1'));var BPromise=require(_0xc6b1('0x2'));var rs=require(_0xc6b1('0x3'));var fs=require('fs');var Redis=require(_0xc6b1('0x4'));var db=require(_0xc6b1('0x5'))['db'];var utils=require(_0xc6b1('0x6'));var logger=require('../../config/logger')(_0xc6b1('0x7'));var config=require('../../config/environment');var jayson=require(_0xc6b1('0x8'));var client=jayson[_0xc6b1('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1f8295,_0x1de8b5,_0x362814){return new BPromise(function(_0x1e0dfb,_0x4f6509){return client[_0xc6b1('0xa')](_0x1f8295,_0x362814)[_0xc6b1('0xb')](function(_0x5a8dac){logger['info'](_0xc6b1('0xc'),_0x1de8b5,_0xc6b1('0xd'));logger[_0xc6b1('0xe')](_0xc6b1('0xf'),_0x1de8b5,_0xc6b1('0xd'),JSON[_0xc6b1('0x10')](_0x5a8dac));if(_0x5a8dac['error']){if(_0x5a8dac[_0xc6b1('0x11')][_0xc6b1('0x12')]===0x1f4){logger[_0xc6b1('0x11')](_0xc6b1('0xc'),_0x1de8b5,_0x5a8dac[_0xc6b1('0x11')]['message']);return _0x4f6509(_0x5a8dac[_0xc6b1('0x11')][_0xc6b1('0x13')]);}logger[_0xc6b1('0x11')](_0xc6b1('0xc'),_0x1de8b5,_0x5a8dac['error']['message']);return _0x1e0dfb(_0x5a8dac[_0xc6b1('0x11')][_0xc6b1('0x13')]);}else{logger[_0xc6b1('0x14')](_0xc6b1('0xc'),_0x1de8b5,_0xc6b1('0xd'));_0x1e0dfb(_0x5a8dac[_0xc6b1('0x15')]['message']);}})['catch'](function(_0xaed550){logger[_0xc6b1('0x11')](_0xc6b1('0xc'),_0x1de8b5,_0xaed550);_0x4f6509(_0xaed550);});});}exports['GetMailServerIn']=function(_0x2c4bae){var _0x40a267=this;return new Promise(function(_0x5d732e,_0x41370b){return db[_0xc6b1('0x16')][_0xc6b1('0x17')]({'raw':_0x2c4bae['options']?_0x2c4bae[_0xc6b1('0x18')][_0xc6b1('0x19')]===undefined?!![]:![]:!![],'where':_0x2c4bae[_0xc6b1('0x18')]?_0x2c4bae[_0xc6b1('0x18')]['where']||null:null,'attributes':_0x2c4bae['options']?_0x2c4bae[_0xc6b1('0x18')][_0xc6b1('0x1a')]||null:null,'limit':_0x2c4bae[_0xc6b1('0x18')]?_0x2c4bae[_0xc6b1('0x18')][_0xc6b1('0x1b')]||null:null,'include':_0x2c4bae[_0xc6b1('0x18')]?_0x2c4bae[_0xc6b1('0x18')][_0xc6b1('0x1c')]?_[_0xc6b1('0x1d')](_0x2c4bae[_0xc6b1('0x18')][_0xc6b1('0x1c')],function(_0x673d7f){return{'model':db[_0x673d7f[_0xc6b1('0x1e')]],'as':_0x673d7f['as'],'attributes':_0x673d7f[_0xc6b1('0x1a')],'include':_0x673d7f[_0xc6b1('0x1c')]?_[_0xc6b1('0x1d')](_0x673d7f['include'],function(_0x2d2f13){return{'model':db[_0x2d2f13['model']],'as':_0x2d2f13['as'],'attributes':_0x2d2f13[_0xc6b1('0x1a')],'include':_0x2d2f13[_0xc6b1('0x1c')]?_[_0xc6b1('0x1d')](_0x2d2f13[_0xc6b1('0x1c')],function(_0x50e052){return{'model':db[_0x50e052[_0xc6b1('0x1e')]],'as':_0x50e052['as'],'attributes':_0x50e052[_0xc6b1('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xc6b1('0xb')](function(_0x71ce3e){logger[_0xc6b1('0x14')](_0xc6b1('0x1f'),_0x2c4bae);logger[_0xc6b1('0xe')]('GetMailServerIn',_0x2c4bae,JSON[_0xc6b1('0x10')](_0x71ce3e));_0x5d732e(_0x71ce3e);})[_0xc6b1('0x20')](function(_0x284f6c){logger[_0xc6b1('0x11')](_0xc6b1('0x1f'),_0x284f6c[_0xc6b1('0x13')],_0x2c4bae);_0x41370b(_0x40a267['error'](0x1f4,_0x284f6c[_0xc6b1('0x13')]));});});};
\ No newline at end of file
index 0f05a11..1327eb3 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(_0x36dfbd,_0x5bfe2d){var _0x4ecad9=function(_0x5230da){while(--_0x5230da){_0x36dfbd['push'](_0x36dfbd['shift']());}};_0x4ecad9(++_0x5bfe2d);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'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(_0xf50820,_0x56f041){var _0x2a9b10=function(_0x33f0f4){while(--_0x33f0f4){_0xf50820['push'](_0xf50820['shift']());}};_0x2a9b10(++_0x56f041);}(_0x7a54,0x106));var _0x47a5=function(_0x137a97,_0x8d093b){_0x137a97=_0x137a97-0x0;var _0x34661f=_0x7a54[_0x137a97];return _0x34661f;};'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 9b87603..bc6861f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed35=['STRING','BOOLEAN','sequelize','exports'];(function(_0x5cc120,_0x3dae6e){var _0x32d5e5=function(_0x42182f){while(--_0x42182f){_0x5cc120['push'](_0x5cc120['shift']());}};_0x32d5e5(++_0x3dae6e);}(_0xed35,0xaa));var _0x5ed3=function(_0x34964a,_0x50bfbb){_0x34964a=_0x34964a-0x0;var _0x4008fa=_0xed35[_0x34964a];return _0x4008fa;};'use strict';var Sequelize=require(_0x5ed3('0x0'));module[_0x5ed3('0x1')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x5ed3('0x2')]},'user':{'type':Sequelize[_0x5ed3('0x2')]},'pass':{'type':Sequelize['STRING']},'port':{'type':Sequelize['INTEGER']},'secure':{'type':Sequelize[_0x5ed3('0x3')],'defaultValue':![]},'service':{'type':Sequelize[_0x5ed3('0x2')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0xfa63=['sequelize','exports','STRING'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xfa63,0xf0));var _0x3fa6=function(_0x3f21a1,_0x3d8c0a){_0x3f21a1=_0x3f21a1-0x0;var _0x259f20=_0xfa63[_0x3f21a1];return _0x259f20;};'use strict';var Sequelize=require(_0x3fa6('0x0'));module[_0x3fa6('0x1')]={'description':{'type':Sequelize[_0x3fa6('0x2')]},'host':{'type':Sequelize[_0x3fa6('0x2')]},'user':{'type':Sequelize['STRING']},'pass':{'type':Sequelize[_0x3fa6('0x2')]},'port':{'type':Sequelize['INTEGER']},'secure':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'service':{'type':Sequelize[_0x3fa6('0x2')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 74416d9..9674268 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1def=['stack','name','send','index','MailServerOut','rawAttributes','fieldName','key','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','catch','show','params','include','create','body','find','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','lodash','crypto','desk.js','to-csv','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','Content-Range','apply','reject','save','update','then','destroy'];(function(_0x34ad72,_0x1e43f6){var _0x5c9aa8=function(_0x144388){while(--_0x144388){_0x34ad72['push'](_0x34ad72['shift']());}};_0x5c9aa8(++_0x1e43f6);}(_0x1def,0x1e4));var _0xf1de=function(_0x2892da,_0x191a40){_0x2892da=_0x2892da-0x0;var _0x28cff2=_0x1def[_0x2892da];return _0x28cff2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf1de('0x0'));var zipdir=require(_0xf1de('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf1de('0x2'));var moment=require('moment');var BPromise=require(_0xf1de('0x3'));var Mustache=require(_0xf1de('0x4'));var util=require(_0xf1de('0x5'));var path=require('path');var sox=require(_0xf1de('0x6'));var csv=require('to-csv');var ejs=require(_0xf1de('0x7'));var fs=require('fs');var fs_extra=require(_0xf1de('0x8'));var _=require(_0xf1de('0x9'));var squel=require('squel');var crypto=require(_0xf1de('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xf1de('0xb'));var toCsv=require(_0xf1de('0xc'));var querystring=require(_0xf1de('0xd'));var Papa=require(_0xf1de('0xe'));var Redis=require(_0xf1de('0xf'));var authService=require(_0xf1de('0x10'));var qs=require(_0xf1de('0x11'));var as=require(_0xf1de('0x12'));var hardwareService=require(_0xf1de('0x13'));var logger=require(_0xf1de('0x14'))(_0xf1de('0x15'));var utils=require('../../config/utils');var config=require(_0xf1de('0x16'));var licenseUtil=require(_0xf1de('0x17'));var db=require(_0xf1de('0x18'))['db'];function respondWithStatusCode(_0x364f77,_0x44be51){_0x44be51=_0x44be51||0xcc;return function(_0x3a520a){if(_0x3a520a){return _0x364f77[_0xf1de('0x19')](_0x44be51);}return _0x364f77[_0xf1de('0x1a')](_0x44be51)[_0xf1de('0x1b')]();};}function respondWithResult(_0x5cddbf,_0x36b142){_0x36b142=_0x36b142||0xc8;return function(_0x1f23ea){if(_0x1f23ea){return _0x5cddbf[_0xf1de('0x1a')](_0x36b142)[_0xf1de('0x1c')](_0x1f23ea);}};}function respondWithFilteredResult(_0x275f7d,_0x28849f){return function(_0x4038c8){if(_0x4038c8){var _0x45817c=typeof _0x28849f[_0xf1de('0x1d')]===_0xf1de('0x1e')&&typeof _0x28849f[_0xf1de('0x1f')]===_0xf1de('0x1e');var _0x2a98e6=_0x4038c8[_0xf1de('0x20')];var _0x45e000=_0x45817c?0x0:_0x28849f[_0xf1de('0x1d')];var _0x672947=_0x45817c?_0x4038c8[_0xf1de('0x20')]:_0x28849f[_0xf1de('0x1d')]+_0x28849f[_0xf1de('0x1f')];var _0x561a4f;if(_0x672947>=_0x2a98e6){_0x672947=_0x2a98e6;_0x561a4f=0xc8;}else{_0x561a4f=0xce;}_0x275f7d[_0xf1de('0x1a')](_0x561a4f);return _0x275f7d[_0xf1de('0x21')](_0xf1de('0x22'),_0x45e000+'-'+_0x672947+'/'+_0x2a98e6)[_0xf1de('0x1c')](_0x4038c8);}return null;};}function patchUpdates(_0x553ece){return function(_0x30aafe){try{jsonpatch[_0xf1de('0x23')](_0x30aafe,_0x553ece,!![]);}catch(_0x5480ea){return BPromise[_0xf1de('0x24')](_0x5480ea);}return _0x30aafe[_0xf1de('0x25')]();};}function saveUpdates(_0x561fdf,_0x1a1c97){return function(_0x208387){if(_0x208387){return _0x208387[_0xf1de('0x26')](_0x561fdf)[_0xf1de('0x27')](function(_0x129c45){return _0x129c45;});}return null;};}function removeEntity(_0x4ba31b,_0x202029){return function(_0x3e74d3){if(_0x3e74d3){return _0x3e74d3[_0xf1de('0x28')]()['then'](function(){_0x4ba31b[_0xf1de('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3975f0,_0x5f5127){return function(_0xba99a){if(!_0xba99a){_0x3975f0['sendStatus'](0x194);}return _0xba99a;};}function handleError(_0x4ae5f5,_0x1f7b03){_0x1f7b03=_0x1f7b03||0x1f4;return function(_0x2fb533){logger['error'](_0x2fb533[_0xf1de('0x29')]);if(_0x2fb533['name']){delete _0x2fb533[_0xf1de('0x2a')];}_0x4ae5f5[_0xf1de('0x1a')](_0x1f7b03)[_0xf1de('0x2b')](_0x2fb533);};}exports[_0xf1de('0x2c')]=function(_0x16b20e,_0x5a5321){var _0x4900c={},_0x30e5a7={},_0x2ae590={'count':0x0,'rows':[]};var _0x4205bf=_['map'](db[_0xf1de('0x2d')][_0xf1de('0x2e')],function(_0x4c05b2){return{'name':_0x4c05b2[_0xf1de('0x2f')],'type':_0x4c05b2['type'][_0xf1de('0x30')]};});_0x30e5a7[_0xf1de('0x31')]=_[_0xf1de('0x32')](_0x4205bf,'name');_0x30e5a7['query']=_[_0xf1de('0x33')](_0x16b20e[_0xf1de('0x34')]);_0x30e5a7[_0xf1de('0x35')]=_[_0xf1de('0x36')](_0x30e5a7[_0xf1de('0x31')],_0x30e5a7[_0xf1de('0x34')]);_0x4900c[_0xf1de('0x37')]=_[_0xf1de('0x36')](_0x30e5a7[_0xf1de('0x31')],qs[_0xf1de('0x38')](_0x16b20e[_0xf1de('0x34')][_0xf1de('0x38')]));_0x4900c[_0xf1de('0x37')]=_0x4900c[_0xf1de('0x37')][_0xf1de('0x39')]?_0x4900c[_0xf1de('0x37')]:_0x30e5a7[_0xf1de('0x31')];if(!_0x16b20e[_0xf1de('0x34')][_0xf1de('0x3a')](_0xf1de('0x3b'))){_0x4900c[_0xf1de('0x1f')]=qs[_0xf1de('0x1f')](_0x16b20e[_0xf1de('0x34')][_0xf1de('0x1f')]);_0x4900c[_0xf1de('0x1d')]=qs['offset'](_0x16b20e[_0xf1de('0x34')]['offset']);}_0x4900c[_0xf1de('0x3c')]=qs[_0xf1de('0x3d')](_0x16b20e['query']['sort']);_0x4900c[_0xf1de('0x3e')]=qs[_0xf1de('0x35')](_[_0xf1de('0x3f')](_0x16b20e[_0xf1de('0x34')],_0x30e5a7[_0xf1de('0x35')]),_0x4205bf);if(_0x16b20e[_0xf1de('0x34')][_0xf1de('0x40')]){_0x4900c[_0xf1de('0x3e')]=_[_0xf1de('0x41')](_0x4900c[_0xf1de('0x3e')],{'$or':_[_0xf1de('0x32')](_0x4205bf,function(_0xab0ab8){if(_0xab0ab8['type']!=='VIRTUAL'){var _0x491d51={};_0x491d51[_0xab0ab8[_0xf1de('0x2a')]]={'$like':'%'+_0x16b20e['query'][_0xf1de('0x40')]+'%'};return _0x491d51;}})});}_0x4900c=_[_0xf1de('0x41')]({},_0x4900c,_0x16b20e[_0xf1de('0x42')]);var _0xc416c9={'where':_0x4900c['where']};return db[_0xf1de('0x2d')][_0xf1de('0x20')](_0xc416c9)[_0xf1de('0x27')](function(_0x24d01a){_0x2ae590[_0xf1de('0x20')]=_0x24d01a;if(_0x16b20e[_0xf1de('0x34')][_0xf1de('0x43')]){_0x4900c['include']=[{'all':!![]}];}return db[_0xf1de('0x2d')]['findAll'](_0x4900c);})[_0xf1de('0x27')](function(_0x30de29){_0x2ae590['rows']=_0x30de29;return _0x2ae590;})[_0xf1de('0x27')](respondWithFilteredResult(_0x5a5321,_0x4900c))[_0xf1de('0x44')](handleError(_0x5a5321,null));};exports[_0xf1de('0x45')]=function(_0x5ad8c3,_0x4c4aaa){var _0x364641={'raw':!![],'where':{'id':_0x5ad8c3[_0xf1de('0x46')]['id']}},_0x1b95df={};_0x1b95df[_0xf1de('0x31')]=_['keys'](db[_0xf1de('0x2d')][_0xf1de('0x2e')]);_0x1b95df[_0xf1de('0x34')]=_[_0xf1de('0x33')](_0x5ad8c3[_0xf1de('0x34')]);_0x1b95df[_0xf1de('0x35')]=_[_0xf1de('0x36')](_0x1b95df['model'],_0x1b95df[_0xf1de('0x34')]);_0x364641['attributes']=_['intersection'](_0x1b95df[_0xf1de('0x31')],qs[_0xf1de('0x38')](_0x5ad8c3[_0xf1de('0x34')]['fields']));_0x364641[_0xf1de('0x37')]=_0x364641['attributes']['length']?_0x364641['attributes']:_0x1b95df[_0xf1de('0x31')];if(_0x5ad8c3[_0xf1de('0x34')][_0xf1de('0x43')]){_0x364641[_0xf1de('0x47')]=[{'all':!![]}];}_0x364641=_['merge']({},_0x364641,_0x5ad8c3[_0xf1de('0x42')]);return db[_0xf1de('0x2d')]['find'](_0x364641)[_0xf1de('0x27')](handleEntityNotFound(_0x4c4aaa,null))['then'](respondWithResult(_0x4c4aaa,null))[_0xf1de('0x44')](handleError(_0x4c4aaa,null));};exports[_0xf1de('0x48')]=function(_0x217652,_0x4eab9e){return db['MailServerOut']['create'](_0x217652[_0xf1de('0x49')],{})[_0xf1de('0x27')](respondWithResult(_0x4eab9e,0xc9))[_0xf1de('0x44')](handleError(_0x4eab9e,null));};exports['update']=function(_0x29fb6b,_0x106055){if(_0x29fb6b['body']['id']){delete _0x29fb6b[_0xf1de('0x49')]['id'];}return db[_0xf1de('0x2d')]['find']({'where':{'id':_0x29fb6b[_0xf1de('0x46')]['id']}})[_0xf1de('0x27')](handleEntityNotFound(_0x106055,null))[_0xf1de('0x27')](saveUpdates(_0x29fb6b['body'],null))['then'](respondWithResult(_0x106055,null))[_0xf1de('0x44')](handleError(_0x106055,null));};exports[_0xf1de('0x28')]=function(_0x4b1563,_0x3f6aa2){return db[_0xf1de('0x2d')][_0xf1de('0x4a')]({'where':{'id':_0x4b1563[_0xf1de('0x46')]['id']}})['then'](handleEntityNotFound(_0x3f6aa2,null))[_0xf1de('0x27')](removeEntity(_0x3f6aa2,null))[_0xf1de('0x44')](handleError(_0x3f6aa2,null));};
\ No newline at end of file
+var _0x5291=['json','offset','undefined','count','limit','set','Content-Range','save','update','then','status','error','stack','name','send','index','map','MailServerOut','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','include','find','body','destroy','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','end'];(function(_0x59b58e,_0xc801c2){var _0x2fae76=function(_0x24df70){while(--_0x24df70){_0x59b58e['push'](_0x59b58e['shift']());}};_0x2fae76(++_0xc801c2);}(_0x5291,0x193));var _0x1529=function(_0x55f799,_0x23dbfd){_0x55f799=_0x55f799-0x0;var _0xddaa19=_0x5291[_0x55f799];return _0xddaa19;};'use strict';var emlformat=require(_0x1529('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1529('0x1'));var jsonpatch=require(_0x1529('0x2'));var rp=require(_0x1529('0x3'));var moment=require('moment');var BPromise=require(_0x1529('0x4'));var Mustache=require(_0x1529('0x5'));var util=require(_0x1529('0x6'));var path=require(_0x1529('0x7'));var sox=require(_0x1529('0x8'));var csv=require('to-csv');var ejs=require(_0x1529('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x1529('0xa'));var crypto=require(_0x1529('0xb'));var jsforce=require(_0x1529('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x1529('0xd'));var Papa=require(_0x1529('0xe'));var Redis=require(_0x1529('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x1529('0x10'));var as=require(_0x1529('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x1529('0x12'));var utils=require('../../config/utils');var config=require(_0x1529('0x13'));var licenseUtil=require(_0x1529('0x14'));var db=require(_0x1529('0x15'))['db'];function respondWithStatusCode(_0x52ceac,_0x1e0eca){_0x1e0eca=_0x1e0eca||0xcc;return function(_0x2b89ba){if(_0x2b89ba){return _0x52ceac['sendStatus'](_0x1e0eca);}return _0x52ceac['status'](_0x1e0eca)[_0x1529('0x16')]();};}function respondWithResult(_0x1013eb,_0x5262f8){_0x5262f8=_0x5262f8||0xc8;return function(_0x5e4a11){if(_0x5e4a11){return _0x1013eb['status'](_0x5262f8)[_0x1529('0x17')](_0x5e4a11);}};}function respondWithFilteredResult(_0x100ca9,_0x8856cb){return function(_0x2bdad3){if(_0x2bdad3){var _0x2fd8f2=typeof _0x8856cb[_0x1529('0x18')]==='undefined'&&typeof _0x8856cb['limit']===_0x1529('0x19');var _0xb243aa=_0x2bdad3[_0x1529('0x1a')];var _0x38d13a=_0x2fd8f2?0x0:_0x8856cb['offset'];var _0xf6b711=_0x2fd8f2?_0x2bdad3[_0x1529('0x1a')]:_0x8856cb[_0x1529('0x18')]+_0x8856cb[_0x1529('0x1b')];var _0x3cbaaf;if(_0xf6b711>=_0xb243aa){_0xf6b711=_0xb243aa;_0x3cbaaf=0xc8;}else{_0x3cbaaf=0xce;}_0x100ca9['status'](_0x3cbaaf);return _0x100ca9[_0x1529('0x1c')](_0x1529('0x1d'),_0x38d13a+'-'+_0xf6b711+'/'+_0xb243aa)[_0x1529('0x17')](_0x2bdad3);}return null;};}function patchUpdates(_0x1c4eed){return function(_0x454987){try{jsonpatch['apply'](_0x454987,_0x1c4eed,!![]);}catch(_0x289a16){return BPromise['reject'](_0x289a16);}return _0x454987[_0x1529('0x1e')]();};}function saveUpdates(_0x2977ab,_0x4d7761){return function(_0x1349af){if(_0x1349af){return _0x1349af[_0x1529('0x1f')](_0x2977ab)[_0x1529('0x20')](function(_0x462659){return _0x462659;});}return null;};}function removeEntity(_0x827400,_0x1955b8){return function(_0x284cb1){if(_0x284cb1){return _0x284cb1['destroy']()[_0x1529('0x20')](function(){_0x827400[_0x1529('0x21')](0xcc)[_0x1529('0x16')]();});}};}function handleEntityNotFound(_0x1c0935,_0x1c45a0){return function(_0x464ea9){if(!_0x464ea9){_0x1c0935['sendStatus'](0x194);}return _0x464ea9;};}function handleError(_0x476117,_0x2956d6){_0x2956d6=_0x2956d6||0x1f4;return function(_0x50b7a2){logger[_0x1529('0x22')](_0x50b7a2[_0x1529('0x23')]);if(_0x50b7a2[_0x1529('0x24')]){delete _0x50b7a2[_0x1529('0x24')];}_0x476117[_0x1529('0x21')](_0x2956d6)[_0x1529('0x25')](_0x50b7a2);};}exports[_0x1529('0x26')]=function(_0x4829a7,_0x2b5e8b){var _0x45fb99={},_0x59c328={},_0x40af70={'count':0x0,'rows':[]};var _0x18c268=_[_0x1529('0x27')](db[_0x1529('0x28')]['rawAttributes'],function(_0x56e2c5){return{'name':_0x56e2c5[_0x1529('0x29')],'type':_0x56e2c5[_0x1529('0x2a')][_0x1529('0x2b')]};});_0x59c328[_0x1529('0x2c')]=_[_0x1529('0x27')](_0x18c268,'name');_0x59c328['query']=_[_0x1529('0x2d')](_0x4829a7[_0x1529('0x2e')]);_0x59c328[_0x1529('0x2f')]=_[_0x1529('0x30')](_0x59c328[_0x1529('0x2c')],_0x59c328['query']);_0x45fb99['attributes']=_[_0x1529('0x30')](_0x59c328[_0x1529('0x2c')],qs[_0x1529('0x31')](_0x4829a7[_0x1529('0x2e')][_0x1529('0x31')]));_0x45fb99[_0x1529('0x32')]=_0x45fb99['attributes'][_0x1529('0x33')]?_0x45fb99[_0x1529('0x32')]:_0x59c328['model'];if(!_0x4829a7[_0x1529('0x2e')][_0x1529('0x34')](_0x1529('0x35'))){_0x45fb99[_0x1529('0x1b')]=qs[_0x1529('0x1b')](_0x4829a7['query']['limit']);_0x45fb99['offset']=qs[_0x1529('0x18')](_0x4829a7[_0x1529('0x2e')][_0x1529('0x18')]);}_0x45fb99[_0x1529('0x36')]=qs[_0x1529('0x37')](_0x4829a7[_0x1529('0x2e')][_0x1529('0x37')]);_0x45fb99[_0x1529('0x38')]=qs['filters'](_[_0x1529('0x39')](_0x4829a7['query'],_0x59c328[_0x1529('0x2f')]),_0x18c268);if(_0x4829a7[_0x1529('0x2e')][_0x1529('0x3a')]){_0x45fb99[_0x1529('0x38')]=_[_0x1529('0x3b')](_0x45fb99[_0x1529('0x38')],{'$or':_[_0x1529('0x27')](_0x18c268,function(_0x267d1e){if(_0x267d1e[_0x1529('0x2a')]!==_0x1529('0x3c')){var _0x33b59e={};_0x33b59e[_0x267d1e[_0x1529('0x24')]]={'$like':'%'+_0x4829a7[_0x1529('0x2e')][_0x1529('0x3a')]+'%'};return _0x33b59e;}})});}_0x45fb99=_[_0x1529('0x3b')]({},_0x45fb99,_0x4829a7[_0x1529('0x3d')]);var _0x574e6f={'where':_0x45fb99[_0x1529('0x38')]};return db[_0x1529('0x28')][_0x1529('0x1a')](_0x574e6f)['then'](function(_0x52c506){_0x40af70[_0x1529('0x1a')]=_0x52c506;if(_0x4829a7[_0x1529('0x2e')][_0x1529('0x3e')]){_0x45fb99['include']=[{'all':!![]}];}return db[_0x1529('0x28')][_0x1529('0x3f')](_0x45fb99);})['then'](function(_0x41ab5e){_0x40af70[_0x1529('0x40')]=_0x41ab5e;return _0x40af70;})[_0x1529('0x20')](respondWithFilteredResult(_0x2b5e8b,_0x45fb99))[_0x1529('0x41')](handleError(_0x2b5e8b,null));};exports['show']=function(_0x2fe445,_0x10c144){var _0x21394d={'raw':!![],'where':{'id':_0x2fe445[_0x1529('0x42')]['id']}},_0x4194c4={};_0x4194c4[_0x1529('0x2c')]=_['keys'](db[_0x1529('0x28')]['rawAttributes']);_0x4194c4['query']=_[_0x1529('0x2d')](_0x2fe445[_0x1529('0x2e')]);_0x4194c4[_0x1529('0x2f')]=_['intersection'](_0x4194c4[_0x1529('0x2c')],_0x4194c4['query']);_0x21394d[_0x1529('0x32')]=_[_0x1529('0x30')](_0x4194c4[_0x1529('0x2c')],qs[_0x1529('0x31')](_0x2fe445[_0x1529('0x2e')][_0x1529('0x31')]));_0x21394d[_0x1529('0x32')]=_0x21394d[_0x1529('0x32')][_0x1529('0x33')]?_0x21394d['attributes']:_0x4194c4[_0x1529('0x2c')];if(_0x2fe445['query'][_0x1529('0x3e')]){_0x21394d[_0x1529('0x43')]=[{'all':!![]}];}_0x21394d=_[_0x1529('0x3b')]({},_0x21394d,_0x2fe445['options']);return db[_0x1529('0x28')][_0x1529('0x44')](_0x21394d)[_0x1529('0x20')](handleEntityNotFound(_0x10c144,null))[_0x1529('0x20')](respondWithResult(_0x10c144,null))[_0x1529('0x41')](handleError(_0x10c144,null));};exports['create']=function(_0x23f504,_0x202175){return db[_0x1529('0x28')]['create'](_0x23f504[_0x1529('0x45')],{})[_0x1529('0x20')](respondWithResult(_0x202175,0xc9))[_0x1529('0x41')](handleError(_0x202175,null));};exports[_0x1529('0x1f')]=function(_0x4ccda4,_0x5a4a56){if(_0x4ccda4[_0x1529('0x45')]['id']){delete _0x4ccda4[_0x1529('0x45')]['id'];}return db[_0x1529('0x28')]['find']({'where':{'id':_0x4ccda4['params']['id']}})[_0x1529('0x20')](handleEntityNotFound(_0x5a4a56,null))[_0x1529('0x20')](saveUpdates(_0x4ccda4[_0x1529('0x45')],null))[_0x1529('0x20')](respondWithResult(_0x5a4a56,null))[_0x1529('0x41')](handleError(_0x5a4a56,null));};exports[_0x1529('0x46')]=function(_0x822e2c,_0x518b78){return db[_0x1529('0x28')][_0x1529('0x44')]({'where':{'id':_0x822e2c[_0x1529('0x42')]['id']}})[_0x1529('0x20')](handleEntityNotFound(_0x518b78,null))[_0x1529('0x20')](removeEntity(_0x518b78,null))['catch'](handleError(_0x518b78,null));};
\ No newline at end of file
index d333063..d30c423 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb871=['rimraf','../../config/environment','./mailServerOut.attributes','define','mail_servers_out','lodash','util','../../config/logger','api','moment','bluebird','path'];(function(_0x1df792,_0x120012){var _0x5cb438=function(_0x49a8fe){while(--_0x49a8fe){_0x1df792['push'](_0x1df792['shift']());}};_0x5cb438(++_0x120012);}(_0xb871,0x19d));var _0x1b87=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0xb871[_0x45d55e];return _0x29812a;};'use strict';var _=require(_0x1b87('0x0'));var util=require(_0x1b87('0x1'));var logger=require(_0x1b87('0x2'))(_0x1b87('0x3'));var moment=require(_0x1b87('0x4'));var BPromise=require(_0x1b87('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1b87('0x6'));var rimraf=require(_0x1b87('0x7'));var config=require(_0x1b87('0x8'));var attributes=require(_0x1b87('0x9'));module['exports']=function(_0x38a2e5,_0x179e64){return _0x38a2e5[_0x1b87('0xa')]('MailServerOut',attributes,{'tableName':_0x1b87('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x71bd=['MailServerOut','mail_servers_out','util','../../config/logger','api','path','rimraf','../../config/environment','define'];(function(_0xf3f796,_0x1dcba3){var _0x37eec9=function(_0x2e57ef){while(--_0x2e57ef){_0xf3f796['push'](_0xf3f796['shift']());}};_0x37eec9(++_0x1dcba3);}(_0x71bd,0xbf));var _0xd71b=function(_0x4565ed,_0x40a5a6){_0x4565ed=_0x4565ed-0x0;var _0x372d5d=_0x71bd[_0x4565ed];return _0x372d5d;};'use strict';var _=require('lodash');var util=require(_0xd71b('0x0'));var logger=require(_0xd71b('0x1'))(_0xd71b('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xd71b('0x3'));var rimraf=require(_0xd71b('0x4'));var config=require(_0xd71b('0x5'));var attributes=require('./mailServerOut.attributes');module['exports']=function(_0x5070f2,_0x5d7bdc){return _0x5070f2[_0xd71b('0x6')](_0xd71b('0x7'),attributes,{'tableName':_0xd71b('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 962e828..6a265ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['info','MailServerOut,\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(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x7a54,0x106));var _0x47a5=function(_0x6bac32,_0x5b0143){_0x6bac32=_0x6bac32-0x0;var _0x3ed348=_0x7a54[_0x6bac32];return _0x3ed348;};'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')]('MailServerOut,\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
+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(_0x26c314,_0x2b406f){var _0x406f22=function(_0x33ad53){while(--_0x33ad53){_0x26c314['push'](_0x26c314['shift']());}};_0x406f22(++_0x2b406f);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0xc4aa[_0x5d2803];return _0xdcad2c;};'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 594edad..d41a2d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xced7=['index','/describe','show','post','put','/:id','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','get','isAuthenticated'];(function(_0x2c800e,_0x250c1e){var _0x1f86a4=function(_0x31a365){while(--_0x31a365){_0x2c800e['push'](_0x2c800e['shift']());}};_0x1f86a4(++_0x250c1e);}(_0xced7,0xe6));var _0x7ced=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xced7[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x7ced('0x0'));var timeout=require(_0x7ced('0x1'));var express=require(_0x7ced('0x2'));var router=express[_0x7ced('0x3')]();var fs_extra=require(_0x7ced('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x7ced('0x5'));var config=require(_0x7ced('0x6'));var controller=require(_0x7ced('0x7'));router[_0x7ced('0x8')]('/',auth[_0x7ced('0x9')](),controller[_0x7ced('0xa')]);router[_0x7ced('0x8')](_0x7ced('0xb'),auth[_0x7ced('0x9')](),controller['describe']);router['get']('/:id',auth[_0x7ced('0x9')](),controller[_0x7ced('0xc')]);router[_0x7ced('0xd')]('/',auth[_0x7ced('0x9')](),controller['create']);router[_0x7ced('0xe')](_0x7ced('0xf'),auth[_0x7ced('0x9')](),controller[_0x7ced('0x10')]);router[_0x7ced('0x11')](_0x7ced('0xf'),auth[_0x7ced('0x9')](),controller[_0x7ced('0x12')]);module[_0x7ced('0x13')]=router;
\ No newline at end of file
+var _0x2daf=['util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','show','/:id','update','destroy','exports','multer'];(function(_0x559a4e,_0xc539cf){var _0x39e0b6=function(_0xe4d99d){while(--_0xe4d99d){_0x559a4e['push'](_0x559a4e['shift']());}};_0x39e0b6(++_0xc539cf);}(_0x2daf,0x1c7));var _0xf2da=function(_0xfe5403,_0x1628b1){_0xfe5403=_0xfe5403-0x0;var _0x2d1e48=_0x2daf[_0xfe5403];return _0x2d1e48;};'use strict';var multer=require(_0xf2da('0x0'));var util=require(_0xf2da('0x1'));var path=require(_0xf2da('0x2'));var timeout=require(_0xf2da('0x3'));var express=require(_0xf2da('0x4'));var router=express[_0xf2da('0x5')]();var fs_extra=require(_0xf2da('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xf2da('0x7'));var config=require(_0xf2da('0x8'));var controller=require('./mailSubstatus.controller');router[_0xf2da('0x9')]('/',auth['isAuthenticated'](),controller[_0xf2da('0xa')]);router[_0xf2da('0x9')](_0xf2da('0xb'),auth[_0xf2da('0xc')](),controller[_0xf2da('0xd')]);router[_0xf2da('0x9')]('/:id',auth[_0xf2da('0xc')](),controller[_0xf2da('0xe')]);router['post']('/',auth[_0xf2da('0xc')](),controller['create']);router['put'](_0xf2da('0xf'),auth['isAuthenticated'](),controller[_0xf2da('0x10')]);router['delete'](_0xf2da('0xf'),auth[_0xf2da('0xc')](),controller[_0xf2da('0x11')]);module[_0xf2da('0x12')]=router;
\ No newline at end of file
index 8c962af..8e4d125 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d72=['sequelize','exports','STRING','name'];(function(_0x3797d9,_0x1ce1c7){var _0x2d1c0d=function(_0xbc5158){while(--_0xbc5158){_0x3797d9['push'](_0x3797d9['shift']());}};_0x2d1c0d(++_0x1ce1c7);}(_0x2d72,0xa8));var _0x22d7=function(_0x5b4794,_0x28b939){_0x5b4794=_0x5b4794-0x0;var _0x33f3f0=_0x2d72[_0x5b4794];return _0x33f3f0;};'use strict';var Sequelize=require(_0x22d7('0x0'));module[_0x22d7('0x1')]={'name':{'type':Sequelize[_0x22d7('0x2')],'unique':_0x22d7('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x22d7('0x2')]}};
\ No newline at end of file
+var _0x9fd4=['sequelize','exports','STRING','name'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0x9fd4,0x16c));var _0x49fd=function(_0x5d9c37,_0x518b93){_0x5d9c37=_0x5d9c37-0x0;var _0x1ba9eb=_0x9fd4[_0x5d9c37];return _0x1ba9eb;};'use strict';var Sequelize=require(_0x49fd('0x0'));module[_0x49fd('0x1')]={'name':{'type':Sequelize[_0x49fd('0x2')],'unique':_0x49fd('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x49fd('0x2')]}};
\ No newline at end of file
index a201bcf..609cd05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab33=['crypto','jsforce','desk.js','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','count','limit','set','Content-Range','json','apply','save','then','destroy','end','error','name','send','map','rawAttributes','fieldName','key','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','filters','pick','filter','merge','type','VIRTUAL','options','MailSubstatus','includeAll','include','rows','catch','show','params','create','body','update','find','describe','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra'];(function(_0x48ea7e,_0x49bc83){var _0x3c7031=function(_0x40ba00){while(--_0x40ba00){_0x48ea7e['push'](_0x48ea7e['shift']());}};_0x3c7031(++_0x49bc83);}(_0xab33,0x8c));var _0x3ab3=function(_0x149663,_0x23bd9d){_0x149663=_0x149663-0x0;var _0x20bb73=_0xab33[_0x149663];return _0x20bb73;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3ab3('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3ab3('0x1'));var rp=require(_0x3ab3('0x2'));var moment=require(_0x3ab3('0x3'));var BPromise=require(_0x3ab3('0x4'));var Mustache=require(_0x3ab3('0x5'));var util=require(_0x3ab3('0x6'));var path=require(_0x3ab3('0x7'));var sox=require(_0x3ab3('0x8'));var csv=require(_0x3ab3('0x9'));var ejs=require(_0x3ab3('0xa'));var fs=require('fs');var fs_extra=require(_0x3ab3('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x3ab3('0xc'));var jsforce=require(_0x3ab3('0xd'));var deskjs=require(_0x3ab3('0xe'));var toCsv=require(_0x3ab3('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x3ab3('0xf'));var authService=require(_0x3ab3('0x10'));var qs=require(_0x3ab3('0x11'));var as=require(_0x3ab3('0x12'));var hardwareService=require(_0x3ab3('0x13'));var logger=require(_0x3ab3('0x14'))(_0x3ab3('0x15'));var utils=require(_0x3ab3('0x16'));var config=require(_0x3ab3('0x17'));var licenseUtil=require(_0x3ab3('0x18'));var db=require(_0x3ab3('0x19'))['db'];function respondWithStatusCode(_0x274a1e,_0x180ea8){_0x180ea8=_0x180ea8||0xcc;return function(_0x3422c3){if(_0x3422c3){return _0x274a1e[_0x3ab3('0x1a')](_0x180ea8);}return _0x274a1e[_0x3ab3('0x1b')](_0x180ea8)['end']();};}function respondWithResult(_0x35699c,_0x18f71e){_0x18f71e=_0x18f71e||0xc8;return function(_0x659187){if(_0x659187){return _0x35699c[_0x3ab3('0x1b')](_0x18f71e)['json'](_0x659187);}};}function respondWithFilteredResult(_0x5bcad9,_0x13a965){return function(_0x4a1a64){if(_0x4a1a64){var _0x5a2477=typeof _0x13a965[_0x3ab3('0x1c')]===_0x3ab3('0x1d')&&typeof _0x13a965['limit']===_0x3ab3('0x1d');var _0x351157=_0x4a1a64['count'];var _0x41f082=_0x5a2477?0x0:_0x13a965[_0x3ab3('0x1c')];var _0x3d0aef=_0x5a2477?_0x4a1a64[_0x3ab3('0x1e')]:_0x13a965[_0x3ab3('0x1c')]+_0x13a965[_0x3ab3('0x1f')];var _0x10c6ea;if(_0x3d0aef>=_0x351157){_0x3d0aef=_0x351157;_0x10c6ea=0xc8;}else{_0x10c6ea=0xce;}_0x5bcad9[_0x3ab3('0x1b')](_0x10c6ea);return _0x5bcad9[_0x3ab3('0x20')](_0x3ab3('0x21'),_0x41f082+'-'+_0x3d0aef+'/'+_0x351157)[_0x3ab3('0x22')](_0x4a1a64);}return null;};}function patchUpdates(_0x39cdc9){return function(_0x518b2a){try{jsonpatch[_0x3ab3('0x23')](_0x518b2a,_0x39cdc9,!![]);}catch(_0x3d40e9){return BPromise['reject'](_0x3d40e9);}return _0x518b2a[_0x3ab3('0x24')]();};}function saveUpdates(_0x36fe45,_0x4bab18){return function(_0xf57cd){if(_0xf57cd){return _0xf57cd['update'](_0x36fe45)[_0x3ab3('0x25')](function(_0x95ac22){return _0x95ac22;});}return null;};}function removeEntity(_0x24d985,_0x3a6d7b){return function(_0x38d0ec){if(_0x38d0ec){return _0x38d0ec[_0x3ab3('0x26')]()[_0x3ab3('0x25')](function(){_0x24d985[_0x3ab3('0x1b')](0xcc)[_0x3ab3('0x27')]();});}};}function handleEntityNotFound(_0x5754fe,_0xf21ea0){return function(_0x55402f){if(!_0x55402f){_0x5754fe[_0x3ab3('0x1a')](0x194);}return _0x55402f;};}function handleError(_0x27e203,_0x3eba6f){_0x3eba6f=_0x3eba6f||0x1f4;return function(_0x1d379d){logger[_0x3ab3('0x28')](_0x1d379d['stack']);if(_0x1d379d[_0x3ab3('0x29')]){delete _0x1d379d[_0x3ab3('0x29')];}_0x27e203[_0x3ab3('0x1b')](_0x3eba6f)[_0x3ab3('0x2a')](_0x1d379d);};}exports['index']=function(_0x4d38be,_0x3addd1){var _0x8abcab={},_0x4b7069={},_0x42b10c={'count':0x0,'rows':[]};var _0x4a363c=_[_0x3ab3('0x2b')](db['MailSubstatus'][_0x3ab3('0x2c')],function(_0x483d59){return{'name':_0x483d59[_0x3ab3('0x2d')],'type':_0x483d59['type'][_0x3ab3('0x2e')]};});_0x4b7069['model']=_['map'](_0x4a363c,'name');_0x4b7069[_0x3ab3('0x2f')]=_[_0x3ab3('0x30')](_0x4d38be[_0x3ab3('0x2f')]);_0x4b7069['filters']=_[_0x3ab3('0x31')](_0x4b7069[_0x3ab3('0x32')],_0x4b7069['query']);_0x8abcab['attributes']=_[_0x3ab3('0x31')](_0x4b7069[_0x3ab3('0x32')],qs[_0x3ab3('0x33')](_0x4d38be[_0x3ab3('0x2f')][_0x3ab3('0x33')]));_0x8abcab[_0x3ab3('0x34')]=_0x8abcab[_0x3ab3('0x34')][_0x3ab3('0x35')]?_0x8abcab['attributes']:_0x4b7069['model'];if(!_0x4d38be[_0x3ab3('0x2f')][_0x3ab3('0x36')](_0x3ab3('0x37'))){_0x8abcab[_0x3ab3('0x1f')]=qs[_0x3ab3('0x1f')](_0x4d38be[_0x3ab3('0x2f')]['limit']);_0x8abcab[_0x3ab3('0x1c')]=qs[_0x3ab3('0x1c')](_0x4d38be[_0x3ab3('0x2f')]['offset']);}_0x8abcab['order']=qs[_0x3ab3('0x38')](_0x4d38be[_0x3ab3('0x2f')][_0x3ab3('0x38')]);_0x8abcab['where']=qs[_0x3ab3('0x39')](_[_0x3ab3('0x3a')](_0x4d38be[_0x3ab3('0x2f')],_0x4b7069[_0x3ab3('0x39')]),_0x4a363c);if(_0x4d38be[_0x3ab3('0x2f')][_0x3ab3('0x3b')]){_0x8abcab['where']=_[_0x3ab3('0x3c')](_0x8abcab['where'],{'$or':_[_0x3ab3('0x2b')](_0x4a363c,function(_0x1f13df){if(_0x1f13df[_0x3ab3('0x3d')]!==_0x3ab3('0x3e')){var _0x125401={};_0x125401[_0x1f13df[_0x3ab3('0x29')]]={'$like':'%'+_0x4d38be[_0x3ab3('0x2f')][_0x3ab3('0x3b')]+'%'};return _0x125401;}})});}_0x8abcab=_[_0x3ab3('0x3c')]({},_0x8abcab,_0x4d38be[_0x3ab3('0x3f')]);var _0x108f5f={'where':_0x8abcab['where']};return db[_0x3ab3('0x40')]['count'](_0x108f5f)[_0x3ab3('0x25')](function(_0x57a203){_0x42b10c[_0x3ab3('0x1e')]=_0x57a203;if(_0x4d38be['query'][_0x3ab3('0x41')]){_0x8abcab[_0x3ab3('0x42')]=[{'all':!![]}];}return db[_0x3ab3('0x40')]['findAll'](_0x8abcab);})[_0x3ab3('0x25')](function(_0x58c4f3){_0x42b10c[_0x3ab3('0x43')]=_0x58c4f3;return _0x42b10c;})[_0x3ab3('0x25')](respondWithFilteredResult(_0x3addd1,_0x8abcab))[_0x3ab3('0x44')](handleError(_0x3addd1,null));};exports[_0x3ab3('0x45')]=function(_0x9c3280,_0x53437a){var _0x2d99a9={'raw':!![],'where':{'id':_0x9c3280[_0x3ab3('0x46')]['id']}},_0x3ad28a={};_0x3ad28a[_0x3ab3('0x32')]=_[_0x3ab3('0x30')](db[_0x3ab3('0x40')][_0x3ab3('0x2c')]);_0x3ad28a[_0x3ab3('0x2f')]=_[_0x3ab3('0x30')](_0x9c3280['query']);_0x3ad28a['filters']=_[_0x3ab3('0x31')](_0x3ad28a[_0x3ab3('0x32')],_0x3ad28a[_0x3ab3('0x2f')]);_0x2d99a9[_0x3ab3('0x34')]=_[_0x3ab3('0x31')](_0x3ad28a[_0x3ab3('0x32')],qs[_0x3ab3('0x33')](_0x9c3280['query']['fields']));_0x2d99a9[_0x3ab3('0x34')]=_0x2d99a9['attributes'][_0x3ab3('0x35')]?_0x2d99a9[_0x3ab3('0x34')]:_0x3ad28a['model'];if(_0x9c3280['query'][_0x3ab3('0x41')]){_0x2d99a9['include']=[{'all':!![]}];}_0x2d99a9=_[_0x3ab3('0x3c')]({},_0x2d99a9,_0x9c3280[_0x3ab3('0x3f')]);return db[_0x3ab3('0x40')]['find'](_0x2d99a9)[_0x3ab3('0x25')](handleEntityNotFound(_0x53437a,null))[_0x3ab3('0x25')](respondWithResult(_0x53437a,null))[_0x3ab3('0x44')](handleError(_0x53437a,null));};exports[_0x3ab3('0x47')]=function(_0x3563ce,_0x452004){return db['MailSubstatus'][_0x3ab3('0x47')](_0x3563ce[_0x3ab3('0x48')],{})[_0x3ab3('0x25')](respondWithResult(_0x452004,0xc9))[_0x3ab3('0x44')](handleError(_0x452004,null));};exports[_0x3ab3('0x49')]=function(_0x203da5,_0x49ed46){if(_0x203da5[_0x3ab3('0x48')]['id']){delete _0x203da5[_0x3ab3('0x48')]['id'];}return db['MailSubstatus'][_0x3ab3('0x4a')]({'where':{'id':_0x203da5[_0x3ab3('0x46')]['id']}})[_0x3ab3('0x25')](handleEntityNotFound(_0x49ed46,null))['then'](saveUpdates(_0x203da5[_0x3ab3('0x48')],null))['then'](respondWithResult(_0x49ed46,null))[_0x3ab3('0x44')](handleError(_0x49ed46,null));};exports[_0x3ab3('0x26')]=function(_0x9dd376,_0x518ed3){return db[_0x3ab3('0x40')][_0x3ab3('0x4a')]({'where':{'id':_0x9dd376[_0x3ab3('0x46')]['id']}})[_0x3ab3('0x25')](handleEntityNotFound(_0x518ed3,null))[_0x3ab3('0x25')](removeEntity(_0x518ed3,null))[_0x3ab3('0x44')](handleError(_0x518ed3,null));};exports[_0x3ab3('0x4b')]=function(_0x2706af,_0x342317){return db['MailSubstatus'][_0x3ab3('0x4b')]()[_0x3ab3('0x25')](respondWithResult(_0x342317,null))[_0x3ab3('0x44')](handleError(_0x342317,null));};
\ No newline at end of file
+var _0x1dfc=['nolimit','sort','where','filters','pick','merge','count','includeAll','include','catch','params','options','find','create','body','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','to-csv','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','offset','set','Content-Range','apply','save','update','then','destroy','error','stack','name','index','map','MailSubstatus','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty'];(function(_0x339823,_0x4b05c4){var _0x4be445=function(_0x1e3416){while(--_0x1e3416){_0x339823['push'](_0x339823['shift']());}};_0x4be445(++_0x4b05c4);}(_0x1dfc,0x1e5));var _0xc1df=function(_0x233488,_0x2e2c08){_0x233488=_0x233488-0x0;var _0x49827f=_0x1dfc[_0x233488];return _0x49827f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc1df('0x0'));var zipdir=require(_0xc1df('0x1'));var jsonpatch=require(_0xc1df('0x2'));var rp=require('request-promise');var moment=require(_0xc1df('0x3'));var BPromise=require(_0xc1df('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xc1df('0x5'));var sox=require('sox');var csv=require(_0xc1df('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc1df('0x7'));var _=require(_0xc1df('0x8'));var squel=require(_0xc1df('0x9'));var crypto=require('crypto');var jsforce=require(_0xc1df('0xa'));var deskjs=require(_0xc1df('0xb'));var toCsv=require(_0xc1df('0x6'));var querystring=require('querystring');var Papa=require(_0xc1df('0xc'));var Redis=require('ioredis');var authService=require(_0xc1df('0xd'));var qs=require(_0xc1df('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xc1df('0xf'))(_0xc1df('0x10'));var utils=require(_0xc1df('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0xc1df('0x12'));var db=require(_0xc1df('0x13'))['db'];function respondWithStatusCode(_0x553fb2,_0x17b2ad){_0x17b2ad=_0x17b2ad||0xcc;return function(_0x2d0ff1){if(_0x2d0ff1){return _0x553fb2[_0xc1df('0x14')](_0x17b2ad);}return _0x553fb2[_0xc1df('0x15')](_0x17b2ad)[_0xc1df('0x16')]();};}function respondWithResult(_0x11409e,_0x12ab2b){_0x12ab2b=_0x12ab2b||0xc8;return function(_0x16c77c){if(_0x16c77c){return _0x11409e[_0xc1df('0x15')](_0x12ab2b)[_0xc1df('0x17')](_0x16c77c);}};}function respondWithFilteredResult(_0x3aa194,_0x773b5e){return function(_0x5d4acb){if(_0x5d4acb){var _0x349409=typeof _0x773b5e['offset']==='undefined'&&typeof _0x773b5e[_0xc1df('0x18')]==='undefined';var _0x15cf28=_0x5d4acb['count'];var _0x1288e4=_0x349409?0x0:_0x773b5e[_0xc1df('0x19')];var _0x541af4=_0x349409?_0x5d4acb['count']:_0x773b5e[_0xc1df('0x19')]+_0x773b5e['limit'];var _0x37b9f8;if(_0x541af4>=_0x15cf28){_0x541af4=_0x15cf28;_0x37b9f8=0xc8;}else{_0x37b9f8=0xce;}_0x3aa194[_0xc1df('0x15')](_0x37b9f8);return _0x3aa194[_0xc1df('0x1a')](_0xc1df('0x1b'),_0x1288e4+'-'+_0x541af4+'/'+_0x15cf28)[_0xc1df('0x17')](_0x5d4acb);}return null;};}function patchUpdates(_0x38e6a4){return function(_0x2f99ac){try{jsonpatch[_0xc1df('0x1c')](_0x2f99ac,_0x38e6a4,!![]);}catch(_0x3e4f63){return BPromise['reject'](_0x3e4f63);}return _0x2f99ac[_0xc1df('0x1d')]();};}function saveUpdates(_0x44bcd1,_0x5a250f){return function(_0x2bd268){if(_0x2bd268){return _0x2bd268[_0xc1df('0x1e')](_0x44bcd1)[_0xc1df('0x1f')](function(_0x388f38){return _0x388f38;});}return null;};}function removeEntity(_0x5f1c5,_0x50bd9d){return function(_0x50707f){if(_0x50707f){return _0x50707f[_0xc1df('0x20')]()['then'](function(){_0x5f1c5[_0xc1df('0x15')](0xcc)[_0xc1df('0x16')]();});}};}function handleEntityNotFound(_0x7f94b7,_0x18be56){return function(_0x2b8ca8){if(!_0x2b8ca8){_0x7f94b7['sendStatus'](0x194);}return _0x2b8ca8;};}function handleError(_0x285406,_0x504a0c){_0x504a0c=_0x504a0c||0x1f4;return function(_0x4f2f9b){logger[_0xc1df('0x21')](_0x4f2f9b[_0xc1df('0x22')]);if(_0x4f2f9b[_0xc1df('0x23')]){delete _0x4f2f9b[_0xc1df('0x23')];}_0x285406['status'](_0x504a0c)['send'](_0x4f2f9b);};}exports[_0xc1df('0x24')]=function(_0x20e7e8,_0x31e59f){var _0x269711={},_0x3d19c0={},_0x3fc469={'count':0x0,'rows':[]};var _0x5c7756=_[_0xc1df('0x25')](db[_0xc1df('0x26')][_0xc1df('0x27')],function(_0x6174){return{'name':_0x6174[_0xc1df('0x28')],'type':_0x6174[_0xc1df('0x29')][_0xc1df('0x2a')]};});_0x3d19c0[_0xc1df('0x2b')]=_['map'](_0x5c7756,_0xc1df('0x23'));_0x3d19c0[_0xc1df('0x2c')]=_[_0xc1df('0x2d')](_0x20e7e8['query']);_0x3d19c0['filters']=_[_0xc1df('0x2e')](_0x3d19c0[_0xc1df('0x2b')],_0x3d19c0[_0xc1df('0x2c')]);_0x269711[_0xc1df('0x2f')]=_['intersection'](_0x3d19c0[_0xc1df('0x2b')],qs[_0xc1df('0x30')](_0x20e7e8['query'][_0xc1df('0x30')]));_0x269711[_0xc1df('0x2f')]=_0x269711[_0xc1df('0x2f')][_0xc1df('0x31')]?_0x269711[_0xc1df('0x2f')]:_0x3d19c0[_0xc1df('0x2b')];if(!_0x20e7e8[_0xc1df('0x2c')][_0xc1df('0x32')](_0xc1df('0x33'))){_0x269711[_0xc1df('0x18')]=qs[_0xc1df('0x18')](_0x20e7e8[_0xc1df('0x2c')][_0xc1df('0x18')]);_0x269711[_0xc1df('0x19')]=qs[_0xc1df('0x19')](_0x20e7e8[_0xc1df('0x2c')][_0xc1df('0x19')]);}_0x269711['order']=qs[_0xc1df('0x34')](_0x20e7e8[_0xc1df('0x2c')][_0xc1df('0x34')]);_0x269711[_0xc1df('0x35')]=qs[_0xc1df('0x36')](_[_0xc1df('0x37')](_0x20e7e8[_0xc1df('0x2c')],_0x3d19c0['filters']),_0x5c7756);if(_0x20e7e8[_0xc1df('0x2c')]['filter']){_0x269711[_0xc1df('0x35')]=_[_0xc1df('0x38')](_0x269711[_0xc1df('0x35')],{'$or':_[_0xc1df('0x25')](_0x5c7756,function(_0x2288fa){if(_0x2288fa['type']!=='VIRTUAL'){var _0x1cd485={};_0x1cd485[_0x2288fa['name']]={'$like':'%'+_0x20e7e8['query']['filter']+'%'};return _0x1cd485;}})});}_0x269711=_[_0xc1df('0x38')]({},_0x269711,_0x20e7e8['options']);var _0x24f7f5={'where':_0x269711[_0xc1df('0x35')]};return db['MailSubstatus'][_0xc1df('0x39')](_0x24f7f5)[_0xc1df('0x1f')](function(_0x7a7b92){_0x3fc469['count']=_0x7a7b92;if(_0x20e7e8[_0xc1df('0x2c')][_0xc1df('0x3a')]){_0x269711[_0xc1df('0x3b')]=[{'all':!![]}];}return db[_0xc1df('0x26')]['findAll'](_0x269711);})['then'](function(_0x46b417){_0x3fc469['rows']=_0x46b417;return _0x3fc469;})[_0xc1df('0x1f')](respondWithFilteredResult(_0x31e59f,_0x269711))[_0xc1df('0x3c')](handleError(_0x31e59f,null));};exports['show']=function(_0x592c57,_0x3ec83e){var _0x3664be={'raw':!![],'where':{'id':_0x592c57[_0xc1df('0x3d')]['id']}},_0x39162d={};_0x39162d[_0xc1df('0x2b')]=_[_0xc1df('0x2d')](db[_0xc1df('0x26')]['rawAttributes']);_0x39162d[_0xc1df('0x2c')]=_[_0xc1df('0x2d')](_0x592c57[_0xc1df('0x2c')]);_0x39162d[_0xc1df('0x36')]=_[_0xc1df('0x2e')](_0x39162d['model'],_0x39162d['query']);_0x3664be[_0xc1df('0x2f')]=_['intersection'](_0x39162d[_0xc1df('0x2b')],qs[_0xc1df('0x30')](_0x592c57[_0xc1df('0x2c')][_0xc1df('0x30')]));_0x3664be[_0xc1df('0x2f')]=_0x3664be[_0xc1df('0x2f')]['length']?_0x3664be[_0xc1df('0x2f')]:_0x39162d['model'];if(_0x592c57['query']['includeAll']){_0x3664be[_0xc1df('0x3b')]=[{'all':!![]}];}_0x3664be=_[_0xc1df('0x38')]({},_0x3664be,_0x592c57[_0xc1df('0x3e')]);return db['MailSubstatus'][_0xc1df('0x3f')](_0x3664be)[_0xc1df('0x1f')](handleEntityNotFound(_0x3ec83e,null))[_0xc1df('0x1f')](respondWithResult(_0x3ec83e,null))['catch'](handleError(_0x3ec83e,null));};exports[_0xc1df('0x40')]=function(_0xb1a390,_0x49bfe9){return db[_0xc1df('0x26')][_0xc1df('0x40')](_0xb1a390[_0xc1df('0x41')],{})[_0xc1df('0x1f')](respondWithResult(_0x49bfe9,0xc9))[_0xc1df('0x3c')](handleError(_0x49bfe9,null));};exports[_0xc1df('0x1e')]=function(_0x1d6284,_0x1c1531){if(_0x1d6284[_0xc1df('0x41')]['id']){delete _0x1d6284['body']['id'];}return db[_0xc1df('0x26')][_0xc1df('0x3f')]({'where':{'id':_0x1d6284['params']['id']}})[_0xc1df('0x1f')](handleEntityNotFound(_0x1c1531,null))[_0xc1df('0x1f')](saveUpdates(_0x1d6284[_0xc1df('0x41')],null))['then'](respondWithResult(_0x1c1531,null))[_0xc1df('0x3c')](handleError(_0x1c1531,null));};exports[_0xc1df('0x20')]=function(_0x484a4a,_0x163d2d){return db[_0xc1df('0x26')][_0xc1df('0x3f')]({'where':{'id':_0x484a4a[_0xc1df('0x3d')]['id']}})['then'](handleEntityNotFound(_0x163d2d,null))[_0xc1df('0x1f')](removeEntity(_0x163d2d,null))['catch'](handleError(_0x163d2d,null));};exports[_0xc1df('0x42')]=function(_0x2035ee,_0x48f93e){return db[_0xc1df('0x26')]['describe']()[_0xc1df('0x1f')](respondWithResult(_0x48f93e,null))[_0xc1df('0x3c')](handleError(_0x48f93e,null));};
\ No newline at end of file
index a9da7d8..cfa2625 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca2b=['./mailSubstatus.attributes','define','MailSubstatus','mail_substatuses','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x426b3b,_0x2d02a5){var _0x5d50a9=function(_0x4ee29c){while(--_0x4ee29c){_0x426b3b['push'](_0x426b3b['shift']());}};_0x5d50a9(++_0x2d02a5);}(_0xca2b,0x156));var _0xbca2=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0xca2b[_0x27af45];return _0x18df21;};'use strict';var _=require(_0xbca2('0x0'));var util=require(_0xbca2('0x1'));var logger=require(_0xbca2('0x2'))(_0xbca2('0x3'));var moment=require(_0xbca2('0x4'));var BPromise=require(_0xbca2('0x5'));var rp=require(_0xbca2('0x6'));var fs=require('fs');var path=require(_0xbca2('0x7'));var rimraf=require('rimraf');var config=require(_0xbca2('0x8'));var attributes=require(_0xbca2('0x9'));module['exports']=function(_0x17439f,_0x56d486){return _0x17439f[_0xbca2('0xa')](_0xbca2('0xb'),attributes,{'tableName':_0xbca2('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x98ea=['mail_substatuses','lodash','util','../../config/logger','moment','path','rimraf','../../config/environment','./mailSubstatus.attributes'];(function(_0x5608c8,_0x5cd32a){var _0x34572d=function(_0x52483d){while(--_0x52483d){_0x5608c8['push'](_0x5608c8['shift']());}};_0x34572d(++_0x5cd32a);}(_0x98ea,0x1f0));var _0xa98e=function(_0x4751a1,_0x2395bc){_0x4751a1=_0x4751a1-0x0;var _0x17ed84=_0x98ea[_0x4751a1];return _0x17ed84;};'use strict';var _=require(_0xa98e('0x0'));var util=require(_0xa98e('0x1'));var logger=require(_0xa98e('0x2'))('api');var moment=require(_0xa98e('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa98e('0x4'));var rimraf=require(_0xa98e('0x5'));var config=require(_0xa98e('0x6'));var attributes=require(_0xa98e('0x7'));module['exports']=function(_0x3ae1dc,_0x1ffea9){return _0x3ae1dc['define']('MailSubstatus',attributes,{'tableName':_0xa98e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 21ef1a5..a527ec3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd990=['then','info','request\x20sent','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','code','MailSubstatus,\x20%s,\x20%s','message','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x101a17,_0x5d047a){var _0x3b76ee=function(_0x89be1b){while(--_0x89be1b){_0x101a17['push'](_0x101a17['shift']());}};_0x3b76ee(++_0x5d047a);}(_0xd990,0xdb));var _0x0d99=function(_0x4a3eb2,_0x50a31c){_0x4a3eb2=_0x4a3eb2-0x0;var _0x1edd01=_0xd990[_0x4a3eb2];return _0x1edd01;};'use strict';var _=require(_0x0d99('0x0'));var util=require(_0x0d99('0x1'));var moment=require(_0x0d99('0x2'));var BPromise=require(_0x0d99('0x3'));var rs=require(_0x0d99('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0d99('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x0d99('0x6'));var config=require(_0x0d99('0x7'));var jayson=require(_0x0d99('0x8'));var client=jayson[_0x0d99('0x9')][_0x0d99('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x593368,_0xde5382,_0x1c0437){return new BPromise(function(_0xabf17,_0x477448){return client[_0x0d99('0xb')](_0x593368,_0x1c0437)[_0x0d99('0xc')](function(_0x1e148e){logger[_0x0d99('0xd')]('MailSubstatus,\x20%s,\x20%s',_0xde5382,_0x0d99('0xe'));logger['debug'](_0x0d99('0xf'),_0xde5382,_0x0d99('0xe'),JSON[_0x0d99('0x10')](_0x1e148e));if(_0x1e148e[_0x0d99('0x11')]){if(_0x1e148e[_0x0d99('0x11')][_0x0d99('0x12')]===0x1f4){logger['error'](_0x0d99('0x13'),_0xde5382,_0x1e148e[_0x0d99('0x11')][_0x0d99('0x14')]);return _0x477448(_0x1e148e[_0x0d99('0x11')][_0x0d99('0x14')]);}logger['error'](_0x0d99('0x13'),_0xde5382,_0x1e148e[_0x0d99('0x11')]['message']);return _0xabf17(_0x1e148e['error'][_0x0d99('0x14')]);}else{logger['info'](_0x0d99('0x13'),_0xde5382,_0x0d99('0xe'));_0xabf17(_0x1e148e['result'][_0x0d99('0x14')]);}})['catch'](function(_0x21692e){logger[_0x0d99('0x11')](_0x0d99('0x13'),_0xde5382,_0x21692e);_0x477448(_0x21692e);});});}
\ No newline at end of file
+var _0x17d0=['stringify','error','code','message','result','catch','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','MailSubstatus,\x20%s,\x20%s','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x1a9204,_0x1c9e00){var _0x17ca68=function(_0x1f4399){while(--_0x1f4399){_0x1a9204['push'](_0x1a9204['shift']());}};_0x17ca68(++_0x1c9e00);}(_0x17d0,0x1a8));var _0x017d=function(_0x272d90,_0x5e70ff){_0x272d90=_0x272d90-0x0;var _0x2bf4a2=_0x17d0[_0x272d90];return _0x2bf4a2;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x017d('0x0'));var BPromise=require('bluebird');var rs=require(_0x017d('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x017d('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x017d('0x3'))(_0x017d('0x4'));var config=require(_0x017d('0x5'));var jayson=require(_0x017d('0x6'));var client=jayson['client'][_0x017d('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xd73a93,_0x46466d,_0x57e41b){return new BPromise(function(_0x456965,_0x30d0e0){return client['request'](_0xd73a93,_0x57e41b)['then'](function(_0x3f3e93){logger[_0x017d('0x8')](_0x017d('0x9'),_0x46466d,'request\x20sent');logger[_0x017d('0xa')](_0x017d('0xb'),_0x46466d,_0x017d('0xc'),JSON[_0x017d('0xd')](_0x3f3e93));if(_0x3f3e93[_0x017d('0xe')]){if(_0x3f3e93[_0x017d('0xe')][_0x017d('0xf')]===0x1f4){logger['error']('MailSubstatus,\x20%s,\x20%s',_0x46466d,_0x3f3e93[_0x017d('0xe')]['message']);return _0x30d0e0(_0x3f3e93[_0x017d('0xe')][_0x017d('0x10')]);}logger[_0x017d('0xe')](_0x017d('0x9'),_0x46466d,_0x3f3e93[_0x017d('0xe')][_0x017d('0x10')]);return _0x456965(_0x3f3e93[_0x017d('0xe')][_0x017d('0x10')]);}else{logger[_0x017d('0x8')](_0x017d('0x9'),_0x46466d,_0x017d('0xc'));_0x456965(_0x3f3e93[_0x017d('0x11')][_0x017d('0x10')]);}})[_0x017d('0x12')](function(_0x5ec139){logger[_0x017d('0xe')](_0x017d('0x9'),_0x46466d,_0x5ec139);_0x30d0e0(_0x5ec139);});});}
\ No newline at end of file
index d41d38b..d199a40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x905b=['get','index','/describe','describe','/:id','isAuthenticated','show','create','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailTransferReport.controller'];(function(_0x5ae8d4,_0xbe44a0){var _0x1ee1fe=function(_0x284bc2){while(--_0x284bc2){_0x5ae8d4['push'](_0x5ae8d4['shift']());}};_0x1ee1fe(++_0xbe44a0);}(_0x905b,0x14b));var _0xb905=function(_0x27614f,_0x33d277){_0x27614f=_0x27614f-0x0;var _0x46fb5f=_0x905b[_0x27614f];return _0x46fb5f;};'use strict';var multer=require('multer');var util=require(_0xb905('0x0'));var path=require(_0xb905('0x1'));var timeout=require(_0xb905('0x2'));var express=require('express');var router=express[_0xb905('0x3')]();var fs_extra=require(_0xb905('0x4'));var auth=require(_0xb905('0x5'));var interaction=require(_0xb905('0x6'));var config=require(_0xb905('0x7'));var controller=require(_0xb905('0x8'));router[_0xb905('0x9')]('/',auth['isAuthenticated'](),controller[_0xb905('0xa')]);router[_0xb905('0x9')](_0xb905('0xb'),auth['isAuthenticated'](),controller[_0xb905('0xc')]);router[_0xb905('0x9')](_0xb905('0xd'),auth[_0xb905('0xe')](),controller[_0xb905('0xf')]);router['post']('/',auth[_0xb905('0xe')](),controller[_0xb905('0x10')]);router['put'](_0xb905('0xd'),auth[_0xb905('0xe')](),controller['update']);router[_0xb905('0x11')](_0xb905('0xd'),auth[_0xb905('0xe')](),controller[_0xb905('0x12')]);module[_0xb905('0x13')]=router;
\ No newline at end of file
+var _0x91fb=['path','express','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util'];(function(_0x5af5a8,_0x10ce33){var _0x414545=function(_0xb57b5c){while(--_0xb57b5c){_0x5af5a8['push'](_0x5af5a8['shift']());}};_0x414545(++_0x10ce33);}(_0x91fb,0xa9));var _0xb91f=function(_0x4d08b8,_0x34c445){_0x4d08b8=_0x4d08b8-0x0;var _0x70214a=_0x91fb[_0x4d08b8];return _0x70214a;};'use strict';var multer=require(_0xb91f('0x0'));var util=require(_0xb91f('0x1'));var path=require(_0xb91f('0x2'));var timeout=require('connect-timeout');var express=require(_0xb91f('0x3'));var router=express['Router']();var fs_extra=require(_0xb91f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xb91f('0x5'));var config=require(_0xb91f('0x6'));var controller=require('./mailTransferReport.controller');router[_0xb91f('0x7')]('/',auth[_0xb91f('0x8')](),controller['index']);router[_0xb91f('0x7')](_0xb91f('0x9'),auth[_0xb91f('0x8')](),controller['describe']);router['get'](_0xb91f('0xa'),auth[_0xb91f('0x8')](),controller[_0xb91f('0xb')]);router[_0xb91f('0xc')]('/',auth[_0xb91f('0x8')](),controller[_0xb91f('0xd')]);router[_0xb91f('0xe')](_0xb91f('0xa'),auth['isAuthenticated'](),controller[_0xb91f('0xf')]);router[_0xb91f('0x10')](_0xb91f('0xa'),auth[_0xb91f('0x8')](),controller[_0xb91f('0x11')]);module[_0xb91f('0x12')]=router;
\ No newline at end of file
index 8f19ae7..f4ab8aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ef=['agent','queue','DATE','NOW','moment','sequelize','exports','ENUM','account'];(function(_0x28fd11,_0xb7b5ca){var _0x51caa0=function(_0x39ffeb){while(--_0x39ffeb){_0x28fd11['push'](_0x28fd11['shift']());}};_0x51caa0(++_0xb7b5ca);}(_0x54ef,0x112));var _0xf54e=function(_0x130cbb,_0x3cb3a6){_0x130cbb=_0x130cbb-0x0;var _0x359cea=_0x54ef[_0x130cbb];return _0x359cea;};'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
+var _0xe706=['NOW','moment','sequelize','exports','ENUM','account','agent','queue','DATE'];(function(_0x49d3cd,_0x4ceef3){var _0x2654c3=function(_0x3dea7f){while(--_0x3dea7f){_0x49d3cd['push'](_0x49d3cd['shift']());}};_0x2654c3(++_0x4ceef3);}(_0xe706,0xa3));var _0x6e70=function(_0x24af20,_0xb1b03b){_0x24af20=_0x24af20-0x0;var _0x20bbc5=_0xe706[_0x24af20];return _0x20bbc5;};'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
index 96c86dd..604dd93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1efd=['map','merge','includeAll','include','catch','show','params','options','find','create','body','describe','eml-format','rimraf','zip-dir','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','offset','limit','count','Content-Range','apply','reject','save','update','destroy','then','sendStatus','error','stack','name','index','MailTransferReport','rawAttributes','fieldName','type','key','query','keys','filters','model','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1efd,0x174));var _0xd1ef=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x1efd[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0xd1ef('0x0'));var rimraf=require(_0xd1ef('0x1'));var zipdir=require(_0xd1ef('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd1ef('0x3'));var BPromise=require(_0xd1ef('0x4'));var Mustache=require('mustache');var util=require(_0xd1ef('0x5'));var path=require('path');var sox=require(_0xd1ef('0x6'));var csv=require(_0xd1ef('0x7'));var ejs=require(_0xd1ef('0x8'));var fs=require('fs');var fs_extra=require(_0xd1ef('0x9'));var _=require(_0xd1ef('0xa'));var squel=require('squel');var crypto=require(_0xd1ef('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xd1ef('0xc'));var toCsv=require(_0xd1ef('0x7'));var querystring=require('querystring');var Papa=require(_0xd1ef('0xd'));var Redis=require(_0xd1ef('0xe'));var authService=require(_0xd1ef('0xf'));var qs=require(_0xd1ef('0x10'));var as=require(_0xd1ef('0x11'));var hardwareService=require(_0xd1ef('0x12'));var logger=require(_0xd1ef('0x13'))(_0xd1ef('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xd1ef('0x15'));var db=require(_0xd1ef('0x16'))['db'];function respondWithStatusCode(_0x3bcc66,_0x36e71e){_0x36e71e=_0x36e71e||0xcc;return function(_0x4b35f2){if(_0x4b35f2){return _0x3bcc66['sendStatus'](_0x36e71e);}return _0x3bcc66[_0xd1ef('0x17')](_0x36e71e)[_0xd1ef('0x18')]();};}function respondWithResult(_0x40d5e4,_0x275120){_0x275120=_0x275120||0xc8;return function(_0x3343c5){if(_0x3343c5){return _0x40d5e4['status'](_0x275120)[_0xd1ef('0x19')](_0x3343c5);}};}function respondWithFilteredResult(_0x2ca1e7,_0x3993a3){return function(_0x13a82c){if(_0x13a82c){var _0x3c186f=typeof _0x3993a3[_0xd1ef('0x1a')]==='undefined'&&typeof _0x3993a3[_0xd1ef('0x1b')]==='undefined';var _0x4858e6=_0x13a82c[_0xd1ef('0x1c')];var _0x395765=_0x3c186f?0x0:_0x3993a3[_0xd1ef('0x1a')];var _0x11e3d9=_0x3c186f?_0x13a82c[_0xd1ef('0x1c')]:_0x3993a3['offset']+_0x3993a3[_0xd1ef('0x1b')];var _0xca3773;if(_0x11e3d9>=_0x4858e6){_0x11e3d9=_0x4858e6;_0xca3773=0xc8;}else{_0xca3773=0xce;}_0x2ca1e7['status'](_0xca3773);return _0x2ca1e7['set'](_0xd1ef('0x1d'),_0x395765+'-'+_0x11e3d9+'/'+_0x4858e6)[_0xd1ef('0x19')](_0x13a82c);}return null;};}function patchUpdates(_0x5c28d5){return function(_0x342a08){try{jsonpatch[_0xd1ef('0x1e')](_0x342a08,_0x5c28d5,!![]);}catch(_0x54c61a){return BPromise[_0xd1ef('0x1f')](_0x54c61a);}return _0x342a08[_0xd1ef('0x20')]();};}function saveUpdates(_0x36c935,_0x1ab0e7){return function(_0x14e652){if(_0x14e652){return _0x14e652[_0xd1ef('0x21')](_0x36c935)['then'](function(_0x153dcd){return _0x153dcd;});}return null;};}function removeEntity(_0x4f1430,_0x472aab){return function(_0x5828d2){if(_0x5828d2){return _0x5828d2[_0xd1ef('0x22')]()[_0xd1ef('0x23')](function(){_0x4f1430['status'](0xcc)[_0xd1ef('0x18')]();});}};}function handleEntityNotFound(_0x2daa27,_0x390e97){return function(_0x4d9960){if(!_0x4d9960){_0x2daa27[_0xd1ef('0x24')](0x194);}return _0x4d9960;};}function handleError(_0x434b84,_0x201681){_0x201681=_0x201681||0x1f4;return function(_0x21cf6e){logger[_0xd1ef('0x25')](_0x21cf6e[_0xd1ef('0x26')]);if(_0x21cf6e[_0xd1ef('0x27')]){delete _0x21cf6e[_0xd1ef('0x27')];}_0x434b84[_0xd1ef('0x17')](_0x201681)['send'](_0x21cf6e);};}exports[_0xd1ef('0x28')]=function(_0x5bdb8d,_0xc063b4){var _0x269a03={},_0x5ab3db={},_0x5078ac={'count':0x0,'rows':[]};var _0x29738f=_['map'](db[_0xd1ef('0x29')][_0xd1ef('0x2a')],function(_0x2fd51d){return{'name':_0x2fd51d[_0xd1ef('0x2b')],'type':_0x2fd51d[_0xd1ef('0x2c')][_0xd1ef('0x2d')]};});_0x5ab3db['model']=_['map'](_0x29738f,_0xd1ef('0x27'));_0x5ab3db[_0xd1ef('0x2e')]=_[_0xd1ef('0x2f')](_0x5bdb8d['query']);_0x5ab3db[_0xd1ef('0x30')]=_['intersection'](_0x5ab3db[_0xd1ef('0x31')],_0x5ab3db[_0xd1ef('0x2e')]);_0x269a03['attributes']=_[_0xd1ef('0x32')](_0x5ab3db[_0xd1ef('0x31')],qs[_0xd1ef('0x33')](_0x5bdb8d['query'][_0xd1ef('0x33')]));_0x269a03[_0xd1ef('0x34')]=_0x269a03['attributes'][_0xd1ef('0x35')]?_0x269a03[_0xd1ef('0x34')]:_0x5ab3db['model'];if(!_0x5bdb8d[_0xd1ef('0x2e')]['hasOwnProperty'](_0xd1ef('0x36'))){_0x269a03['limit']=qs[_0xd1ef('0x1b')](_0x5bdb8d[_0xd1ef('0x2e')]['limit']);_0x269a03[_0xd1ef('0x1a')]=qs['offset'](_0x5bdb8d[_0xd1ef('0x2e')][_0xd1ef('0x1a')]);}_0x269a03[_0xd1ef('0x37')]=qs[_0xd1ef('0x38')](_0x5bdb8d[_0xd1ef('0x2e')]['sort']);_0x269a03[_0xd1ef('0x39')]=qs['filters'](_[_0xd1ef('0x3a')](_0x5bdb8d[_0xd1ef('0x2e')],_0x5ab3db[_0xd1ef('0x30')]),_0x29738f);if(_0x5bdb8d[_0xd1ef('0x2e')][_0xd1ef('0x3b')]){_0x269a03[_0xd1ef('0x39')]=_['merge'](_0x269a03[_0xd1ef('0x39')],{'$or':_[_0xd1ef('0x3c')](_0x29738f,function(_0x3123d2){if(_0x3123d2['type']!=='VIRTUAL'){var _0x416077={};_0x416077[_0x3123d2[_0xd1ef('0x27')]]={'$like':'%'+_0x5bdb8d[_0xd1ef('0x2e')][_0xd1ef('0x3b')]+'%'};return _0x416077;}})});}_0x269a03=_[_0xd1ef('0x3d')]({},_0x269a03,_0x5bdb8d['options']);var _0x4ecba7={'where':_0x269a03[_0xd1ef('0x39')]};return db[_0xd1ef('0x29')][_0xd1ef('0x1c')](_0x4ecba7)['then'](function(_0x3ea455){_0x5078ac[_0xd1ef('0x1c')]=_0x3ea455;if(_0x5bdb8d['query'][_0xd1ef('0x3e')]){_0x269a03[_0xd1ef('0x3f')]=[{'all':!![]}];}return db[_0xd1ef('0x29')]['findAll'](_0x269a03);})['then'](function(_0x15f0b5){_0x5078ac['rows']=_0x15f0b5;return _0x5078ac;})['then'](respondWithFilteredResult(_0xc063b4,_0x269a03))[_0xd1ef('0x40')](handleError(_0xc063b4,null));};exports[_0xd1ef('0x41')]=function(_0xe47248,_0x24793d){var _0x2f526a={'raw':!![],'where':{'id':_0xe47248[_0xd1ef('0x42')]['id']}},_0x241071={};_0x241071[_0xd1ef('0x31')]=_[_0xd1ef('0x2f')](db[_0xd1ef('0x29')][_0xd1ef('0x2a')]);_0x241071['query']=_[_0xd1ef('0x2f')](_0xe47248['query']);_0x241071[_0xd1ef('0x30')]=_['intersection'](_0x241071[_0xd1ef('0x31')],_0x241071[_0xd1ef('0x2e')]);_0x2f526a[_0xd1ef('0x34')]=_[_0xd1ef('0x32')](_0x241071[_0xd1ef('0x31')],qs[_0xd1ef('0x33')](_0xe47248[_0xd1ef('0x2e')][_0xd1ef('0x33')]));_0x2f526a[_0xd1ef('0x34')]=_0x2f526a[_0xd1ef('0x34')][_0xd1ef('0x35')]?_0x2f526a[_0xd1ef('0x34')]:_0x241071[_0xd1ef('0x31')];if(_0xe47248[_0xd1ef('0x2e')][_0xd1ef('0x3e')]){_0x2f526a[_0xd1ef('0x3f')]=[{'all':!![]}];}_0x2f526a=_[_0xd1ef('0x3d')]({},_0x2f526a,_0xe47248[_0xd1ef('0x43')]);return db['MailTransferReport'][_0xd1ef('0x44')](_0x2f526a)['then'](handleEntityNotFound(_0x24793d,null))[_0xd1ef('0x23')](respondWithResult(_0x24793d,null))[_0xd1ef('0x40')](handleError(_0x24793d,null));};exports[_0xd1ef('0x45')]=function(_0x350869,_0x1d5153){return db[_0xd1ef('0x29')][_0xd1ef('0x45')](_0x350869[_0xd1ef('0x46')],{})[_0xd1ef('0x23')](respondWithResult(_0x1d5153,0xc9))[_0xd1ef('0x40')](handleError(_0x1d5153,null));};exports['update']=function(_0x4d5236,_0x580309){if(_0x4d5236['body']['id']){delete _0x4d5236[_0xd1ef('0x46')]['id'];}return db[_0xd1ef('0x29')][_0xd1ef('0x44')]({'where':{'id':_0x4d5236[_0xd1ef('0x42')]['id']}})[_0xd1ef('0x23')](handleEntityNotFound(_0x580309,null))['then'](saveUpdates(_0x4d5236[_0xd1ef('0x46')],null))[_0xd1ef('0x23')](respondWithResult(_0x580309,null))[_0xd1ef('0x40')](handleError(_0x580309,null));};exports[_0xd1ef('0x22')]=function(_0x14a206,_0x2e90c5){return db['MailTransferReport'][_0xd1ef('0x44')]({'where':{'id':_0x14a206[_0xd1ef('0x42')]['id']}})[_0xd1ef('0x23')](handleEntityNotFound(_0x2e90c5,null))[_0xd1ef('0x23')](removeEntity(_0x2e90c5,null))[_0xd1ef('0x40')](handleError(_0x2e90c5,null));};exports[_0xd1ef('0x47')]=function(_0x3fab9b,_0x53c97e){return db[_0xd1ef('0x29')][_0xd1ef('0x47')]()[_0xd1ef('0x23')](respondWithResult(_0x53c97e,null))[_0xd1ef('0x40')](handleError(_0x53c97e,null));};
\ No newline at end of file
+var _0xbc8e=['key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','keys','find','create','body','destroy','describe','eml-format','rimraf','request-promise','moment','bluebird','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','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','sendStatus','error','stack','name','send','MailTransferReport','rawAttributes','fieldName','type'];(function(_0x557ac1,_0x845e21){var _0x2c5f12=function(_0x35627c){while(--_0x35627c){_0x557ac1['push'](_0x557ac1['shift']());}};_0x2c5f12(++_0x845e21);}(_0xbc8e,0x10f));var _0xebc8=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xbc8e[_0x4b369d];return _0x571a98;};'use strict';var emlformat=require(_0xebc8('0x0'));var rimraf=require(_0xebc8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xebc8('0x2'));var moment=require(_0xebc8('0x3'));var BPromise=require(_0xebc8('0x4'));var Mustache=require(_0xebc8('0x5'));var util=require(_0xebc8('0x6'));var path=require('path');var sox=require(_0xebc8('0x7'));var csv=require(_0xebc8('0x8'));var ejs=require(_0xebc8('0x9'));var fs=require('fs');var fs_extra=require(_0xebc8('0xa'));var _=require(_0xebc8('0xb'));var squel=require(_0xebc8('0xc'));var crypto=require(_0xebc8('0xd'));var jsforce=require(_0xebc8('0xe'));var deskjs=require(_0xebc8('0xf'));var toCsv=require(_0xebc8('0x8'));var querystring=require(_0xebc8('0x10'));var Papa=require(_0xebc8('0x11'));var Redis=require(_0xebc8('0x12'));var authService=require(_0xebc8('0x13'));var qs=require(_0xebc8('0x14'));var as=require(_0xebc8('0x15'));var hardwareService=require(_0xebc8('0x16'));var logger=require('../../config/logger')(_0xebc8('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xebc8('0x18'));var db=require(_0xebc8('0x19'))['db'];function respondWithStatusCode(_0x233426,_0x3345bf){_0x3345bf=_0x3345bf||0xcc;return function(_0x285bf1){if(_0x285bf1){return _0x233426['sendStatus'](_0x3345bf);}return _0x233426[_0xebc8('0x1a')](_0x3345bf)[_0xebc8('0x1b')]();};}function respondWithResult(_0x22f3f4,_0x41d84c){_0x41d84c=_0x41d84c||0xc8;return function(_0x47952b){if(_0x47952b){return _0x22f3f4[_0xebc8('0x1a')](_0x41d84c)[_0xebc8('0x1c')](_0x47952b);}};}function respondWithFilteredResult(_0x273dbd,_0x504bc1){return function(_0x115372){if(_0x115372){var _0x3479a5=typeof _0x504bc1[_0xebc8('0x1d')]===_0xebc8('0x1e')&&typeof _0x504bc1[_0xebc8('0x1f')]===_0xebc8('0x1e');var _0x35abc5=_0x115372[_0xebc8('0x20')];var _0x4b6851=_0x3479a5?0x0:_0x504bc1[_0xebc8('0x1d')];var _0x51661e=_0x3479a5?_0x115372[_0xebc8('0x20')]:_0x504bc1['offset']+_0x504bc1[_0xebc8('0x1f')];var _0x4cddbd;if(_0x51661e>=_0x35abc5){_0x51661e=_0x35abc5;_0x4cddbd=0xc8;}else{_0x4cddbd=0xce;}_0x273dbd[_0xebc8('0x1a')](_0x4cddbd);return _0x273dbd[_0xebc8('0x21')](_0xebc8('0x22'),_0x4b6851+'-'+_0x51661e+'/'+_0x35abc5)[_0xebc8('0x1c')](_0x115372);}return null;};}function patchUpdates(_0x30279b){return function(_0x517174){try{jsonpatch[_0xebc8('0x23')](_0x517174,_0x30279b,!![]);}catch(_0x18c11b){return BPromise[_0xebc8('0x24')](_0x18c11b);}return _0x517174[_0xebc8('0x25')]();};}function saveUpdates(_0x431e06,_0x3ed946){return function(_0x3b7e43){if(_0x3b7e43){return _0x3b7e43[_0xebc8('0x26')](_0x431e06)[_0xebc8('0x27')](function(_0x19b81a){return _0x19b81a;});}return null;};}function removeEntity(_0xba54f9,_0x26fbe3){return function(_0x795803){if(_0x795803){return _0x795803['destroy']()['then'](function(){_0xba54f9[_0xebc8('0x1a')](0xcc)[_0xebc8('0x1b')]();});}};}function handleEntityNotFound(_0x5d2ea1,_0xfc41c6){return function(_0x568a6b){if(!_0x568a6b){_0x5d2ea1[_0xebc8('0x28')](0x194);}return _0x568a6b;};}function handleError(_0x4a87c4,_0x3b7d6d){_0x3b7d6d=_0x3b7d6d||0x1f4;return function(_0x3a47a2){logger[_0xebc8('0x29')](_0x3a47a2[_0xebc8('0x2a')]);if(_0x3a47a2[_0xebc8('0x2b')]){delete _0x3a47a2[_0xebc8('0x2b')];}_0x4a87c4[_0xebc8('0x1a')](_0x3b7d6d)[_0xebc8('0x2c')](_0x3a47a2);};}exports['index']=function(_0x2d776d,_0x396bb0){var _0x243112={},_0x502d63={},_0x133f14={'count':0x0,'rows':[]};var _0xd35b1a=_['map'](db[_0xebc8('0x2d')][_0xebc8('0x2e')],function(_0x2d5b40){return{'name':_0x2d5b40[_0xebc8('0x2f')],'type':_0x2d5b40[_0xebc8('0x30')][_0xebc8('0x31')]};});_0x502d63[_0xebc8('0x32')]=_[_0xebc8('0x33')](_0xd35b1a,'name');_0x502d63[_0xebc8('0x34')]=_['keys'](_0x2d776d[_0xebc8('0x34')]);_0x502d63[_0xebc8('0x35')]=_[_0xebc8('0x36')](_0x502d63[_0xebc8('0x32')],_0x502d63[_0xebc8('0x34')]);_0x243112[_0xebc8('0x37')]=_[_0xebc8('0x36')](_0x502d63[_0xebc8('0x32')],qs['fields'](_0x2d776d[_0xebc8('0x34')][_0xebc8('0x38')]));_0x243112[_0xebc8('0x37')]=_0x243112['attributes'][_0xebc8('0x39')]?_0x243112[_0xebc8('0x37')]:_0x502d63['model'];if(!_0x2d776d[_0xebc8('0x34')][_0xebc8('0x3a')](_0xebc8('0x3b'))){_0x243112[_0xebc8('0x1f')]=qs['limit'](_0x2d776d['query'][_0xebc8('0x1f')]);_0x243112[_0xebc8('0x1d')]=qs[_0xebc8('0x1d')](_0x2d776d[_0xebc8('0x34')][_0xebc8('0x1d')]);}_0x243112[_0xebc8('0x3c')]=qs[_0xebc8('0x3d')](_0x2d776d[_0xebc8('0x34')][_0xebc8('0x3d')]);_0x243112[_0xebc8('0x3e')]=qs[_0xebc8('0x35')](_[_0xebc8('0x3f')](_0x2d776d['query'],_0x502d63[_0xebc8('0x35')]),_0xd35b1a);if(_0x2d776d[_0xebc8('0x34')][_0xebc8('0x40')]){_0x243112[_0xebc8('0x3e')]=_[_0xebc8('0x41')](_0x243112[_0xebc8('0x3e')],{'$or':_[_0xebc8('0x33')](_0xd35b1a,function(_0x37b719){if(_0x37b719[_0xebc8('0x30')]!==_0xebc8('0x42')){var _0x37d458={};_0x37d458[_0x37b719[_0xebc8('0x2b')]]={'$like':'%'+_0x2d776d[_0xebc8('0x34')][_0xebc8('0x40')]+'%'};return _0x37d458;}})});}_0x243112=_[_0xebc8('0x41')]({},_0x243112,_0x2d776d[_0xebc8('0x43')]);var _0x9267e0={'where':_0x243112[_0xebc8('0x3e')]};return db[_0xebc8('0x2d')]['count'](_0x9267e0)[_0xebc8('0x27')](function(_0x981b75){_0x133f14[_0xebc8('0x20')]=_0x981b75;if(_0x2d776d[_0xebc8('0x34')][_0xebc8('0x44')]){_0x243112[_0xebc8('0x45')]=[{'all':!![]}];}return db[_0xebc8('0x2d')]['findAll'](_0x243112);})[_0xebc8('0x27')](function(_0x4c6454){_0x133f14[_0xebc8('0x46')]=_0x4c6454;return _0x133f14;})['then'](respondWithFilteredResult(_0x396bb0,_0x243112))[_0xebc8('0x47')](handleError(_0x396bb0,null));};exports[_0xebc8('0x48')]=function(_0x539681,_0x19da95){var _0x22d74e={'raw':!![],'where':{'id':_0x539681[_0xebc8('0x49')]['id']}},_0x6427b9={};_0x6427b9[_0xebc8('0x32')]=_[_0xebc8('0x4a')](db['MailTransferReport'][_0xebc8('0x2e')]);_0x6427b9['query']=_[_0xebc8('0x4a')](_0x539681[_0xebc8('0x34')]);_0x6427b9[_0xebc8('0x35')]=_[_0xebc8('0x36')](_0x6427b9['model'],_0x6427b9['query']);_0x22d74e[_0xebc8('0x37')]=_[_0xebc8('0x36')](_0x6427b9['model'],qs[_0xebc8('0x38')](_0x539681[_0xebc8('0x34')][_0xebc8('0x38')]));_0x22d74e[_0xebc8('0x37')]=_0x22d74e[_0xebc8('0x37')][_0xebc8('0x39')]?_0x22d74e['attributes']:_0x6427b9[_0xebc8('0x32')];if(_0x539681[_0xebc8('0x34')][_0xebc8('0x44')]){_0x22d74e['include']=[{'all':!![]}];}_0x22d74e=_[_0xebc8('0x41')]({},_0x22d74e,_0x539681[_0xebc8('0x43')]);return db['MailTransferReport'][_0xebc8('0x4b')](_0x22d74e)[_0xebc8('0x27')](handleEntityNotFound(_0x19da95,null))[_0xebc8('0x27')](respondWithResult(_0x19da95,null))[_0xebc8('0x47')](handleError(_0x19da95,null));};exports[_0xebc8('0x4c')]=function(_0x34a74a,_0x3fedd7){return db[_0xebc8('0x2d')]['create'](_0x34a74a[_0xebc8('0x4d')],{})['then'](respondWithResult(_0x3fedd7,0xc9))['catch'](handleError(_0x3fedd7,null));};exports[_0xebc8('0x26')]=function(_0x1d1e55,_0x1c652c){if(_0x1d1e55[_0xebc8('0x4d')]['id']){delete _0x1d1e55['body']['id'];}return db[_0xebc8('0x2d')][_0xebc8('0x4b')]({'where':{'id':_0x1d1e55[_0xebc8('0x49')]['id']}})[_0xebc8('0x27')](handleEntityNotFound(_0x1c652c,null))[_0xebc8('0x27')](saveUpdates(_0x1d1e55['body'],null))['then'](respondWithResult(_0x1c652c,null))[_0xebc8('0x47')](handleError(_0x1c652c,null));};exports[_0xebc8('0x4e')]=function(_0x59ad63,_0x3fabc6){return db[_0xebc8('0x2d')][_0xebc8('0x4b')]({'where':{'id':_0x59ad63[_0xebc8('0x49')]['id']}})[_0xebc8('0x27')](handleEntityNotFound(_0x3fabc6,null))[_0xebc8('0x27')](removeEntity(_0x3fabc6,null))[_0xebc8('0x47')](handleError(_0x3fabc6,null));};exports[_0xebc8('0x4f')]=function(_0xc8267,_0x41b433){return db[_0xebc8('0x2d')][_0xebc8('0x4f')]()['then'](respondWithResult(_0x41b433,null))[_0xebc8('0x47')](handleError(_0x41b433,null));};
\ No newline at end of file
index 3851ed4..bc8d30b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb26=['define','uniqueid','util','../../config/logger','api','moment','bluebird','path','../../config/environment','./mailTransferReport.attributes','exports'];(function(_0x4b8156,_0x437af2){var _0x4a819c=function(_0xe21347){while(--_0xe21347){_0x4b8156['push'](_0x4b8156['shift']());}};_0x4a819c(++_0x437af2);}(_0xcb26,0x14c));var _0x6cb2=function(_0x11c573,_0x9e7c6e){_0x11c573=_0x11c573-0x0;var _0x6b72de=_0xcb26[_0x11c573];return _0x6b72de;};'use strict';var _=require('lodash');var util=require(_0x6cb2('0x0'));var logger=require(_0x6cb2('0x1'))(_0x6cb2('0x2'));var moment=require(_0x6cb2('0x3'));var BPromise=require(_0x6cb2('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6cb2('0x5'));var rimraf=require('rimraf');var config=require(_0x6cb2('0x6'));var attributes=require(_0x6cb2('0x7'));module[_0x6cb2('0x8')]=function(_0x2d8bce,_0x172745){return _0x2d8bce[_0x6cb2('0x9')]('MailTransferReport',attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':_0x6cb2('0xa'),'fields':[_0x6cb2('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xbbfa=['bluebird','request-promise','path','./mailTransferReport.attributes','exports','define','MailTransferReport','report_mail_transfer','uniqueid','lodash','util','../../config/logger','moment'];(function(_0x4d4689,_0x3dc0a0){var _0x1f53fc=function(_0x5c5069){while(--_0x5c5069){_0x4d4689['push'](_0x4d4689['shift']());}};_0x1f53fc(++_0x3dc0a0);}(_0xbbfa,0x175));var _0xabbf=function(_0x30584f,_0x4a1f96){_0x30584f=_0x30584f-0x0;var _0x2a31e1=_0xbbfa[_0x30584f];return _0x2a31e1;};'use strict';var _=require(_0xabbf('0x0'));var util=require(_0xabbf('0x1'));var logger=require(_0xabbf('0x2'))('api');var moment=require(_0xabbf('0x3'));var BPromise=require(_0xabbf('0x4'));var rp=require(_0xabbf('0x5'));var fs=require('fs');var path=require(_0xabbf('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xabbf('0x7'));module[_0xabbf('0x8')]=function(_0x15a3b6,_0x1c59e5){return _0x15a3b6[_0xabbf('0x9')](_0xabbf('0xa'),attributes,{'tableName':_0xabbf('0xb'),'paranoid':![],'indexes':[{'name':_0xabbf('0xc'),'fields':[_0xabbf('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index eda54f0..60942a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b89=['client','http','request','info','MailTransferReport,\x20%s,\x20%s','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x521500,_0x4cc29f){var _0x4c0a73=function(_0xfbfda){while(--_0xfbfda){_0x521500['push'](_0x521500['shift']());}};_0x4c0a73(++_0x4cc29f);}(_0x4b89,0x167));var _0x94b8=function(_0x2c7900,_0x44f3b6){_0x2c7900=_0x2c7900-0x0;var _0x35c02f=_0x4b89[_0x2c7900];return _0x35c02f;};'use strict';var _=require(_0x94b8('0x0'));var util=require(_0x94b8('0x1'));var moment=require(_0x94b8('0x2'));var BPromise=require('bluebird');var rs=require(_0x94b8('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x94b8('0x4'))['db'];var utils=require(_0x94b8('0x5'));var logger=require('../../config/logger')(_0x94b8('0x6'));var config=require(_0x94b8('0x7'));var jayson=require(_0x94b8('0x8'));var client=jayson[_0x94b8('0x9')][_0x94b8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5b1112,_0xf85f0f,_0x32a154){return new BPromise(function(_0x342d67,_0x5527ad){return client[_0x94b8('0xb')](_0x5b1112,_0x32a154)['then'](function(_0x2a6373){logger[_0x94b8('0xc')](_0x94b8('0xd'),_0xf85f0f,'request\x20sent');logger[_0x94b8('0xe')](_0x94b8('0xf'),_0xf85f0f,_0x94b8('0x10'),JSON[_0x94b8('0x11')](_0x2a6373));if(_0x2a6373[_0x94b8('0x12')]){if(_0x2a6373[_0x94b8('0x12')][_0x94b8('0x13')]===0x1f4){logger[_0x94b8('0x12')](_0x94b8('0xd'),_0xf85f0f,_0x2a6373[_0x94b8('0x12')]['message']);return _0x5527ad(_0x2a6373['error'][_0x94b8('0x14')]);}logger[_0x94b8('0x12')](_0x94b8('0xd'),_0xf85f0f,_0x2a6373[_0x94b8('0x12')][_0x94b8('0x14')]);return _0x342d67(_0x2a6373['error'][_0x94b8('0x14')]);}else{logger[_0x94b8('0xc')](_0x94b8('0xd'),_0xf85f0f,_0x94b8('0x10'));_0x342d67(_0x2a6373[_0x94b8('0x15')][_0x94b8('0x14')]);}})[_0x94b8('0x16')](function(_0x3ffb8f){logger[_0x94b8('0x12')]('MailTransferReport,\x20%s,\x20%s',_0xf85f0f,_0x3ffb8f);_0x5527ad(_0x3ffb8f);});});}
\ No newline at end of file
+var _0xcf39=['../../config/environment','jayson/promise','client','http','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','bluebird','randomstring','../../config/utils','rpc'];(function(_0x4358f5,_0x5b1ac6){var _0x4d8104=function(_0x1d4aee){while(--_0x1d4aee){_0x4358f5['push'](_0x4358f5['shift']());}};_0x4d8104(++_0x5b1ac6);}(_0xcf39,0x112));var _0x9cf3=function(_0x1e203a,_0x397111){_0x1e203a=_0x1e203a-0x0;var _0x2a5006=_0xcf39[_0x1e203a];return _0x2a5006;};'use strict';var _=require('lodash');var util=require(_0x9cf3('0x0'));var moment=require(_0x9cf3('0x1'));var BPromise=require(_0x9cf3('0x2'));var rs=require(_0x9cf3('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x9cf3('0x4'));var logger=require('../../config/logger')(_0x9cf3('0x5'));var config=require(_0x9cf3('0x6'));var jayson=require(_0x9cf3('0x7'));var client=jayson[_0x9cf3('0x8')][_0x9cf3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x217dc4,_0x4dfe37,_0xd34015){return new BPromise(function(_0x3c1c5c,_0x2d2f13){return client['request'](_0x217dc4,_0xd34015)['then'](function(_0x29e51f){logger[_0x9cf3('0xa')](_0x9cf3('0xb'),_0x4dfe37,_0x9cf3('0xc'));logger[_0x9cf3('0xd')](_0x9cf3('0xe'),_0x4dfe37,_0x9cf3('0xc'),JSON[_0x9cf3('0xf')](_0x29e51f));if(_0x29e51f[_0x9cf3('0x10')]){if(_0x29e51f['error'][_0x9cf3('0x11')]===0x1f4){logger['error'](_0x9cf3('0xb'),_0x4dfe37,_0x29e51f[_0x9cf3('0x10')]['message']);return _0x2d2f13(_0x29e51f['error']['message']);}logger[_0x9cf3('0x10')](_0x9cf3('0xb'),_0x4dfe37,_0x29e51f[_0x9cf3('0x10')]['message']);return _0x3c1c5c(_0x29e51f[_0x9cf3('0x10')][_0x9cf3('0x12')]);}else{logger['info'](_0x9cf3('0xb'),_0x4dfe37,_0x9cf3('0xc'));_0x3c1c5c(_0x29e51f[_0x9cf3('0x13')][_0x9cf3('0x12')]);}})['catch'](function(_0x3cfd50){logger[_0x9cf3('0x10')]('MailTransferReport,\x20%s,\x20%s',_0x4dfe37,_0x3cfd50);_0x2d2f13(_0x3cfd50);});});}
\ No newline at end of file
index ef981d2..4618853 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b6a=['show','post','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/:id'];(function(_0x7b3997,_0x43156c){var _0x231cd9=function(_0x5804a8){while(--_0x5804a8){_0x7b3997['push'](_0x7b3997['shift']());}};_0x231cd9(++_0x43156c);}(_0x5b6a,0xba));var _0xa5b6=function(_0x3b6945,_0x2704e7){_0x3b6945=_0x3b6945-0x0;var _0x338c99=_0x5b6a[_0x3b6945];return _0x338c99;};'use strict';var multer=require(_0xa5b6('0x0'));var util=require(_0xa5b6('0x1'));var path=require(_0xa5b6('0x2'));var timeout=require(_0xa5b6('0x3'));var express=require(_0xa5b6('0x4'));var router=express[_0xa5b6('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xa5b6('0x6'));var interaction=require(_0xa5b6('0x7'));var config=require(_0xa5b6('0x8'));var controller=require('./memberReport.controller');router[_0xa5b6('0x9')]('/',auth[_0xa5b6('0xa')](),controller[_0xa5b6('0xb')]);router[_0xa5b6('0x9')](_0xa5b6('0xc'),auth[_0xa5b6('0xa')](),controller['describe']);router[_0xa5b6('0x9')](_0xa5b6('0xd'),auth['isAuthenticated'](),controller[_0xa5b6('0xe')]);router[_0xa5b6('0xf')]('/',auth[_0xa5b6('0xa')](),controller['create']);router[_0xa5b6('0x10')](_0xa5b6('0xd'),auth[_0xa5b6('0xa')](),controller[_0xa5b6('0x11')]);router[_0xa5b6('0x12')](_0xa5b6('0xd'),auth[_0xa5b6('0xa')](),controller['destroy']);module[_0xa5b6('0x13')]=router;
\ No newline at end of file
+var _0x62c4=['describe','/:id','isAuthenticated','put','update','delete','destroy','exports','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./memberReport.controller','get','/describe'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x62c4,0x6e));var _0x462c=function(_0x358b4f,_0x260d31){_0x358b4f=_0x358b4f-0x0;var _0x37d84d=_0x62c4[_0x358b4f];return _0x37d84d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x462c('0x0'));var timeout=require('connect-timeout');var express=require(_0x462c('0x1'));var router=express[_0x462c('0x2')]();var fs_extra=require(_0x462c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x462c('0x4'));var config=require(_0x462c('0x5'));var controller=require(_0x462c('0x6'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x462c('0x7')](_0x462c('0x8'),auth['isAuthenticated'](),controller[_0x462c('0x9')]);router[_0x462c('0x7')](_0x462c('0xa'),auth[_0x462c('0xb')](),controller['show']);router['post']('/',auth[_0x462c('0xb')](),controller['create']);router[_0x462c('0xc')](_0x462c('0xa'),auth[_0x462c('0xb')](),controller[_0x462c('0xd')]);router[_0x462c('0xe')](_0x462c('0xa'),auth[_0x462c('0xb')](),controller[_0x462c('0xf')]);module[_0x462c('0x10')]=router;
\ No newline at end of file
index 3a6b882..bcd4206 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc65=['DATE','getDataValue','diff','seconds','setDataValue','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[destination]','talk:[dial\x20string]','talk:[queue]','INTEGER','sequelize','moment','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING'];(function(_0x188663,_0x45eb5c){var _0xf4eeba=function(_0x25c073){while(--_0x25c073){_0x188663['push'](_0x188663['shift']());}};_0xf4eeba(++_0x45eb5c);}(_0xfc65,0x1b4));var _0x5fc6=function(_0x46e09c,_0x549a62){_0x46e09c=_0x46e09c-0x0;var _0x39bf7a=_0xfc65[_0x46e09c];return _0x39bf7a;};'use strict';var Sequelize=require(_0x5fc6('0x0'));var moment=require(_0x5fc6('0x1'));module[_0x5fc6('0x2')]={'channel':{'type':Sequelize[_0x5fc6('0x3')]},'membername':{'type':Sequelize[_0x5fc6('0x3')]},'interface':{'type':Sequelize[_0x5fc6('0x3')]},'type':{'type':Sequelize[_0x5fc6('0x3')],'defaultValue':_0x5fc6('0x4'),'comment':_0x5fc6('0x5')},'duration':{'type':Sequelize['INTEGER']},'enterAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x5fc6('0x6')],'set':function(_0x2e1c2b){var _0x3e9bf3=moment(_0x2e1c2b);var _0x26d89e=moment(this[_0x5fc6('0x7')]('enterAt'));var _0x5a47c1=_0x3e9bf3[_0x5fc6('0x8')](_0x26d89e,_0x5fc6('0x9'));this[_0x5fc6('0xa')]('exitAt',_0x2e1c2b);this[_0x5fc6('0xa')](_0x5fc6('0xb'),_0x5a47c1||null);}},'data1':{'type':Sequelize['STRING'],'comment':_0x5fc6('0xc')},'data2':{'type':Sequelize[_0x5fc6('0x3')],'comment':'talk:[start]'},'data3':{'type':Sequelize['STRING'],'comment':_0x5fc6('0xd')},'data4':{'type':Sequelize[_0x5fc6('0x3')],'comment':_0x5fc6('0xe')},'data5':{'type':Sequelize['STRING'],'comment':_0x5fc6('0xf')},'role':{'type':Sequelize[_0x5fc6('0x3')]},'internal':{'type':Sequelize[_0x5fc6('0x10')]},'uniqueid':{'type':Sequelize[_0x5fc6('0x3')]}};
\ No newline at end of file
+var _0x2746=['duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','exports','STRING','DEFAULT\x20PAUSE','DATE','getDataValue','enterAt','diff','setDataValue'];(function(_0x47bc5e,_0x6fc500){var _0x323a59=function(_0x32df89){while(--_0x32df89){_0x47bc5e['push'](_0x47bc5e['shift']());}};_0x323a59(++_0x6fc500);}(_0x2746,0x19c));var _0x6274=function(_0x71ceb8,_0x38c724){_0x71ceb8=_0x71ceb8-0x0;var _0x26c2a1=_0x2746[_0x71ceb8];return _0x26c2a1;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0x6274('0x0')]={'channel':{'type':Sequelize[_0x6274('0x1')]},'membername':{'type':Sequelize[_0x6274('0x1')]},'interface':{'type':Sequelize[_0x6274('0x1')]},'type':{'type':Sequelize[_0x6274('0x1')],'defaultValue':_0x6274('0x2'),'comment':'LOGIN,\x20PAUSE,\x20TALKING'},'duration':{'type':Sequelize['INTEGER']},'enterAt':{'type':Sequelize[_0x6274('0x3')]},'exitAt':{'type':Sequelize[_0x6274('0x3')],'set':function(_0x1978ff){var _0x534aee=moment(_0x1978ff);var _0x1d22fb=moment(this[_0x6274('0x4')](_0x6274('0x5')));var _0x3158f6=_0x534aee[_0x6274('0x6')](_0x1d22fb,'seconds');this[_0x6274('0x7')]('exitAt',_0x1978ff);this[_0x6274('0x7')](_0x6274('0x8'),_0x3158f6||null);}},'data1':{'type':Sequelize[_0x6274('0x1')],'comment':_0x6274('0x9')},'data2':{'type':Sequelize[_0x6274('0x1')],'comment':_0x6274('0xa')},'data3':{'type':Sequelize[_0x6274('0x1')],'comment':_0x6274('0xb')},'data4':{'type':Sequelize[_0x6274('0x1')],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize['STRING'],'comment':'talk:[queue]'},'role':{'type':Sequelize[_0x6274('0x1')]},'internal':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize[_0x6274('0x1')]}};
\ No newline at end of file
index 1ba77d3..860a9ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','merge','filter','includeAll','include','rows','catch','show','params','rawAttributes','length','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','stack','send','index','map','MemberReport','fieldName','type','model','name','keys'];(function(_0x5165cf,_0x16815e){var _0x5d5987=function(_0x5e1626){while(--_0x5e1626){_0x5165cf['push'](_0x5165cf['shift']());}};_0x5d5987(++_0x16815e);}(_0x7217,0x19e));var _0x7721=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0x7217[_0x34bf97];return _0x292719;};'use strict';var emlformat=require(_0x7721('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7721('0x1'));var jsonpatch=require(_0x7721('0x2'));var rp=require(_0x7721('0x3'));var moment=require(_0x7721('0x4'));var BPromise=require(_0x7721('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x7721('0x6'));var sox=require(_0x7721('0x7'));var csv=require(_0x7721('0x8'));var ejs=require(_0x7721('0x9'));var fs=require('fs');var fs_extra=require(_0x7721('0xa'));var _=require(_0x7721('0xb'));var squel=require(_0x7721('0xc'));var crypto=require(_0x7721('0xd'));var jsforce=require(_0x7721('0xe'));var deskjs=require(_0x7721('0xf'));var toCsv=require(_0x7721('0x8'));var querystring=require(_0x7721('0x10'));var Papa=require(_0x7721('0x11'));var Redis=require(_0x7721('0x12'));var authService=require(_0x7721('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x7721('0x14'));var hardwareService=require(_0x7721('0x15'));var logger=require(_0x7721('0x16'))(_0x7721('0x17'));var utils=require(_0x7721('0x18'));var config=require(_0x7721('0x19'));var licenseUtil=require(_0x7721('0x1a'));var db=require(_0x7721('0x1b'))['db'];function respondWithStatusCode(_0x55b4ca,_0x2911ec){_0x2911ec=_0x2911ec||0xcc;return function(_0x199930){if(_0x199930){return _0x55b4ca['sendStatus'](_0x2911ec);}return _0x55b4ca[_0x7721('0x1c')](_0x2911ec)[_0x7721('0x1d')]();};}function respondWithResult(_0x3f01c5,_0x2e9752){_0x2e9752=_0x2e9752||0xc8;return function(_0x5069da){if(_0x5069da){return _0x3f01c5[_0x7721('0x1c')](_0x2e9752)[_0x7721('0x1e')](_0x5069da);}};}function respondWithFilteredResult(_0x534f1b,_0x4e199a){return function(_0x4b183e){if(_0x4b183e){var _0x5ed54=typeof _0x4e199a[_0x7721('0x1f')]===_0x7721('0x20')&&typeof _0x4e199a[_0x7721('0x21')]==='undefined';var _0x20f669=_0x4b183e['count'];var _0x3fc09e=_0x5ed54?0x0:_0x4e199a['offset'];var _0xfec626=_0x5ed54?_0x4b183e[_0x7721('0x22')]:_0x4e199a[_0x7721('0x1f')]+_0x4e199a[_0x7721('0x21')];var _0x2286e5;if(_0xfec626>=_0x20f669){_0xfec626=_0x20f669;_0x2286e5=0xc8;}else{_0x2286e5=0xce;}_0x534f1b[_0x7721('0x1c')](_0x2286e5);return _0x534f1b[_0x7721('0x23')](_0x7721('0x24'),_0x3fc09e+'-'+_0xfec626+'/'+_0x20f669)[_0x7721('0x1e')](_0x4b183e);}return null;};}function patchUpdates(_0xaeccc4){return function(_0x4ce1db){try{jsonpatch[_0x7721('0x25')](_0x4ce1db,_0xaeccc4,!![]);}catch(_0x2c1583){return BPromise[_0x7721('0x26')](_0x2c1583);}return _0x4ce1db[_0x7721('0x27')]();};}function saveUpdates(_0x57140c,_0x28f5a6){return function(_0x512f31){if(_0x512f31){return _0x512f31[_0x7721('0x28')](_0x57140c)[_0x7721('0x29')](function(_0x3e8a4e){return _0x3e8a4e;});}return null;};}function removeEntity(_0x1caad8,_0x121cc4){return function(_0x395b15){if(_0x395b15){return _0x395b15[_0x7721('0x2a')]()['then'](function(){_0x1caad8[_0x7721('0x1c')](0xcc)[_0x7721('0x1d')]();});}};}function handleEntityNotFound(_0x125564,_0x1f67c7){return function(_0x40d550){if(!_0x40d550){_0x125564[_0x7721('0x2b')](0x194);}return _0x40d550;};}function handleError(_0x424e05,_0xf753f1){_0xf753f1=_0xf753f1||0x1f4;return function(_0x40f367){logger['error'](_0x40f367[_0x7721('0x2c')]);if(_0x40f367['name']){delete _0x40f367['name'];}_0x424e05[_0x7721('0x1c')](_0xf753f1)[_0x7721('0x2d')](_0x40f367);};}exports[_0x7721('0x2e')]=function(_0x158d98,_0x1ea4d){var _0x37b9f0={},_0xd7d703={},_0x1da2d8={'count':0x0,'rows':[]};var _0x5c54f0=_[_0x7721('0x2f')](db[_0x7721('0x30')]['rawAttributes'],function(_0x4a25c9){return{'name':_0x4a25c9[_0x7721('0x31')],'type':_0x4a25c9[_0x7721('0x32')]['key']};});_0xd7d703[_0x7721('0x33')]=_[_0x7721('0x2f')](_0x5c54f0,_0x7721('0x34'));_0xd7d703['query']=_[_0x7721('0x35')](_0x158d98[_0x7721('0x36')]);_0xd7d703[_0x7721('0x37')]=_[_0x7721('0x38')](_0xd7d703[_0x7721('0x33')],_0xd7d703['query']);_0x37b9f0[_0x7721('0x39')]=_[_0x7721('0x38')](_0xd7d703[_0x7721('0x33')],qs['fields'](_0x158d98[_0x7721('0x36')][_0x7721('0x3a')]));_0x37b9f0['attributes']=_0x37b9f0[_0x7721('0x39')]['length']?_0x37b9f0[_0x7721('0x39')]:_0xd7d703[_0x7721('0x33')];if(!_0x158d98[_0x7721('0x36')][_0x7721('0x3b')](_0x7721('0x3c'))){_0x37b9f0[_0x7721('0x21')]=qs[_0x7721('0x21')](_0x158d98[_0x7721('0x36')][_0x7721('0x21')]);_0x37b9f0[_0x7721('0x1f')]=qs[_0x7721('0x1f')](_0x158d98['query'][_0x7721('0x1f')]);}_0x37b9f0['order']=qs[_0x7721('0x3d')](_0x158d98[_0x7721('0x36')][_0x7721('0x3d')]);_0x37b9f0[_0x7721('0x3e')]=qs[_0x7721('0x37')](_[_0x7721('0x3f')](_0x158d98['query'],_0xd7d703['filters']),_0x5c54f0);if(_0x158d98['query']['filter']){_0x37b9f0[_0x7721('0x3e')]=_[_0x7721('0x40')](_0x37b9f0[_0x7721('0x3e')],{'$or':_[_0x7721('0x2f')](_0x5c54f0,function(_0x4a90ce){if(_0x4a90ce[_0x7721('0x32')]!=='VIRTUAL'){var _0xfab37b={};_0xfab37b[_0x4a90ce[_0x7721('0x34')]]={'$like':'%'+_0x158d98['query'][_0x7721('0x41')]+'%'};return _0xfab37b;}})});}_0x37b9f0=_[_0x7721('0x40')]({},_0x37b9f0,_0x158d98['options']);var _0x4d0111={'where':_0x37b9f0[_0x7721('0x3e')]};return db[_0x7721('0x30')][_0x7721('0x22')](_0x4d0111)[_0x7721('0x29')](function(_0x577af9){_0x1da2d8[_0x7721('0x22')]=_0x577af9;if(_0x158d98[_0x7721('0x36')][_0x7721('0x42')]){_0x37b9f0[_0x7721('0x43')]=[{'all':!![]}];}return db[_0x7721('0x30')]['findAll'](_0x37b9f0);})[_0x7721('0x29')](function(_0x4a2c28){_0x1da2d8[_0x7721('0x44')]=_0x4a2c28;return _0x1da2d8;})['then'](respondWithFilteredResult(_0x1ea4d,_0x37b9f0))[_0x7721('0x45')](handleError(_0x1ea4d,null));};exports[_0x7721('0x46')]=function(_0x231dad,_0x49e0c5){var _0x1453d4={'raw':!![],'where':{'id':_0x231dad[_0x7721('0x47')]['id']}},_0x11d853={};_0x11d853['model']=_[_0x7721('0x35')](db[_0x7721('0x30')][_0x7721('0x48')]);_0x11d853[_0x7721('0x36')]=_[_0x7721('0x35')](_0x231dad[_0x7721('0x36')]);_0x11d853[_0x7721('0x37')]=_['intersection'](_0x11d853['model'],_0x11d853[_0x7721('0x36')]);_0x1453d4[_0x7721('0x39')]=_[_0x7721('0x38')](_0x11d853[_0x7721('0x33')],qs[_0x7721('0x3a')](_0x231dad[_0x7721('0x36')][_0x7721('0x3a')]));_0x1453d4[_0x7721('0x39')]=_0x1453d4[_0x7721('0x39')][_0x7721('0x49')]?_0x1453d4['attributes']:_0x11d853['model'];if(_0x231dad[_0x7721('0x36')][_0x7721('0x42')]){_0x1453d4[_0x7721('0x43')]=[{'all':!![]}];}_0x1453d4=_[_0x7721('0x40')]({},_0x1453d4,_0x231dad['options']);return db[_0x7721('0x30')][_0x7721('0x4a')](_0x1453d4)['then'](handleEntityNotFound(_0x49e0c5,null))[_0x7721('0x29')](respondWithResult(_0x49e0c5,null))['catch'](handleError(_0x49e0c5,null));};exports[_0x7721('0x4b')]=function(_0x5c6922,_0x334f23){return db[_0x7721('0x30')][_0x7721('0x4b')](_0x5c6922['body'],{})[_0x7721('0x29')](respondWithResult(_0x334f23,0xc9))[_0x7721('0x45')](handleError(_0x334f23,null));};exports['update']=function(_0x223d93,_0x1196c2){if(_0x223d93[_0x7721('0x4c')]['id']){delete _0x223d93['body']['id'];}return db[_0x7721('0x30')]['find']({'where':{'id':_0x223d93[_0x7721('0x47')]['id']}})[_0x7721('0x29')](handleEntityNotFound(_0x1196c2,null))[_0x7721('0x29')](saveUpdates(_0x223d93[_0x7721('0x4c')],null))[_0x7721('0x29')](respondWithResult(_0x1196c2,null))[_0x7721('0x45')](handleError(_0x1196c2,null));};exports[_0x7721('0x2a')]=function(_0x7fbb73,_0x694d2f){return db[_0x7721('0x30')][_0x7721('0x4a')]({'where':{'id':_0x7fbb73[_0x7721('0x47')]['id']}})[_0x7721('0x29')](handleEntityNotFound(_0x694d2f,null))[_0x7721('0x29')](removeEntity(_0x694d2f,null))[_0x7721('0x45')](handleError(_0x694d2f,null));};exports['describe']=function(_0x474f32,_0x2f6f30){return db[_0x7721('0x30')][_0x7721('0x4d')]()[_0x7721('0x29')](respondWithResult(_0x2f6f30,null))[_0x7721('0x45')](handleError(_0x2f6f30,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(_0x4baae2,_0x487ab6){var _0x1a2285=function(_0x1cea47){while(--_0x1cea47){_0x4baae2['push'](_0x4baae2['shift']());}};_0x1a2285(++_0x487ab6);}(_0xedd9,0xfc));var _0x9edd=function(_0xbcd9be,_0x395408){_0xbcd9be=_0xbcd9be-0x0;var _0x37dd20=_0xedd9[_0xbcd9be];return _0x37dd20;};'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 6f8f10f..1230b43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x975a=['exports','define','MemberReport','report_member','membername_interface','membername','interface','lodash','util','../../config/logger','api','bluebird','path','../../config/environment','./memberReport.attributes'];(function(_0x713a9,_0xa95082){var _0x16b80e=function(_0x13838c){while(--_0x13838c){_0x713a9['push'](_0x713a9['shift']());}};_0x16b80e(++_0xa95082);}(_0x975a,0x142));var _0xa975=function(_0x191f7d,_0x111923){_0x191f7d=_0x191f7d-0x0;var _0x48a07e=_0x975a[_0x191f7d];return _0x48a07e;};'use strict';var _=require(_0xa975('0x0'));var util=require(_0xa975('0x1'));var logger=require(_0xa975('0x2'))(_0xa975('0x3'));var moment=require('moment');var BPromise=require(_0xa975('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa975('0x5'));var rimraf=require('rimraf');var config=require(_0xa975('0x6'));var attributes=require(_0xa975('0x7'));module[_0xa975('0x8')]=function(_0x21f9b4,_0x1955cd){return _0x21f9b4[_0xa975('0x9')](_0xa975('0xa'),attributes,{'tableName':_0xa975('0xb'),'paranoid':![],'indexes':[{'name':_0xa975('0xc'),'fields':[_0xa975('0xd'),_0xa975('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x525d=['../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./memberReport.attributes','exports','MemberReport','report_member','membername_interface','interface','lodash','util'];(function(_0x21aec3,_0x5c97e9){var _0x288bbc=function(_0x2283fe){while(--_0x2283fe){_0x21aec3['push'](_0x21aec3['shift']());}};_0x288bbc(++_0x5c97e9);}(_0x525d,0x15c));var _0xd525=function(_0x29521c,_0x3a9408){_0x29521c=_0x29521c-0x0;var _0x662147=_0x525d[_0x29521c];return _0x662147;};'use strict';var _=require(_0xd525('0x0'));var util=require(_0xd525('0x1'));var logger=require(_0xd525('0x2'))(_0xd525('0x3'));var moment=require(_0xd525('0x4'));var BPromise=require(_0xd525('0x5'));var rp=require(_0xd525('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xd525('0x7'));var attributes=require(_0xd525('0x8'));module[_0xd525('0x9')]=function(_0x546f4a,_0x16f88b){return _0x546f4a['define'](_0xd525('0xa'),attributes,{'tableName':_0xd525('0xb'),'paranoid':![],'indexes':[{'name':_0xd525('0xc'),'fields':['membername',_0xd525('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 02f51f0..9abae55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06ae=['error','code','MemberReport,\x20%s,\x20%s','message','result','MemberReport','findAll','options','attributes','limit','include','map','model','debug','GetMemberReport','catch','create','raw','then','CreateMemberReport','update','body','where','UpdateMemberReport','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','http','request','info','request\x20sent','stringify'];(function(_0x1030ce,_0xbe3f74){var _0x3367fd=function(_0x387153){while(--_0x387153){_0x1030ce['push'](_0x1030ce['shift']());}};_0x3367fd(++_0xbe3f74);}(_0x06ae,0x16e));var _0xe06a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x06ae[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0xe06a('0x0'));var moment=require(_0xe06a('0x1'));var BPromise=require(_0xe06a('0x2'));var rs=require(_0xe06a('0x3'));var fs=require('fs');var Redis=require(_0xe06a('0x4'));var db=require(_0xe06a('0x5'))['db'];var utils=require(_0xe06a('0x6'));var logger=require(_0xe06a('0x7'))(_0xe06a('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xe06a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x745f79,_0x20bd8a,_0x3dfa60){return new BPromise(function(_0x1ea66c,_0x563322){return client[_0xe06a('0xa')](_0x745f79,_0x3dfa60)['then'](function(_0x586e05){logger[_0xe06a('0xb')]('MemberReport,\x20%s,\x20%s',_0x20bd8a,_0xe06a('0xc'));logger['debug']('MemberReport,\x20%s,\x20%s,\x20%s',_0x20bd8a,_0xe06a('0xc'),JSON[_0xe06a('0xd')](_0x586e05));if(_0x586e05['error']){if(_0x586e05[_0xe06a('0xe')][_0xe06a('0xf')]===0x1f4){logger['error'](_0xe06a('0x10'),_0x20bd8a,_0x586e05[_0xe06a('0xe')][_0xe06a('0x11')]);return _0x563322(_0x586e05['error'][_0xe06a('0x11')]);}logger[_0xe06a('0xe')](_0xe06a('0x10'),_0x20bd8a,_0x586e05[_0xe06a('0xe')][_0xe06a('0x11')]);return _0x1ea66c(_0x586e05['error'][_0xe06a('0x11')]);}else{logger[_0xe06a('0xb')](_0xe06a('0x10'),_0x20bd8a,_0xe06a('0xc'));_0x1ea66c(_0x586e05[_0xe06a('0x12')][_0xe06a('0x11')]);}})['catch'](function(_0xa9b1af){logger['error']('MemberReport,\x20%s,\x20%s',_0x20bd8a,_0xa9b1af);_0x563322(_0xa9b1af);});});}exports['GetMemberReport']=function(_0x7a5a6f){var _0x43ce7b=this;return new Promise(function(_0xc62c1f,_0x57f5aa){return db[_0xe06a('0x13')][_0xe06a('0x14')]({'raw':_0x7a5a6f['options']?_0x7a5a6f[_0xe06a('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x7a5a6f[_0xe06a('0x15')]?_0x7a5a6f['options']['where']||null:null,'attributes':_0x7a5a6f[_0xe06a('0x15')]?_0x7a5a6f[_0xe06a('0x15')][_0xe06a('0x16')]||null:null,'limit':_0x7a5a6f[_0xe06a('0x15')]?_0x7a5a6f[_0xe06a('0x15')][_0xe06a('0x17')]||null:null,'include':_0x7a5a6f[_0xe06a('0x15')]?_0x7a5a6f[_0xe06a('0x15')][_0xe06a('0x18')]?_[_0xe06a('0x19')](_0x7a5a6f['options'][_0xe06a('0x18')],function(_0x31c2cb){return{'model':db[_0x31c2cb[_0xe06a('0x1a')]],'as':_0x31c2cb['as'],'attributes':_0x31c2cb[_0xe06a('0x16')],'include':_0x31c2cb[_0xe06a('0x18')]?_[_0xe06a('0x19')](_0x31c2cb[_0xe06a('0x18')],function(_0x19a7e0){return{'model':db[_0x19a7e0[_0xe06a('0x1a')]],'as':_0x19a7e0['as'],'attributes':_0x19a7e0['attributes'],'include':_0x19a7e0['include']?_[_0xe06a('0x19')](_0x19a7e0['include'],function(_0x319e25){return{'model':db[_0x319e25['model']],'as':_0x319e25['as'],'attributes':_0x319e25['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x37ff49){logger[_0xe06a('0xb')]('GetMemberReport',_0x7a5a6f);logger[_0xe06a('0x1b')](_0xe06a('0x1c'),_0x7a5a6f,JSON[_0xe06a('0xd')](_0x37ff49));_0xc62c1f(_0x37ff49);})[_0xe06a('0x1d')](function(_0x15cf61){logger[_0xe06a('0xe')](_0xe06a('0x1c'),_0x15cf61[_0xe06a('0x11')],_0x7a5a6f);_0x57f5aa(_0x43ce7b[_0xe06a('0xe')](0x1f4,_0x15cf61['message']));});});};exports['CreateMemberReport']=function(_0x177d3e){var _0x1f985b=this;return new Promise(function(_0x46c75a,_0x1d4375){return db['MemberReport'][_0xe06a('0x1e')](_0x177d3e['body'],{'raw':_0x177d3e[_0xe06a('0x15')]?_0x177d3e[_0xe06a('0x15')][_0xe06a('0x1f')]===undefined?!![]:![]:!![]})[_0xe06a('0x20')](function(_0x492919){logger[_0xe06a('0xb')](_0xe06a('0x21'),_0x177d3e);logger[_0xe06a('0x1b')](_0xe06a('0x21'),_0x177d3e,JSON['stringify'](_0x492919));_0x46c75a(_0x492919);})['catch'](function(_0x2d66ed){logger[_0xe06a('0xe')](_0xe06a('0x21'),_0x2d66ed[_0xe06a('0x11')],_0x177d3e);_0x1d4375(_0x1f985b[_0xe06a('0xe')](0x1f4,_0x2d66ed[_0xe06a('0x11')]));});});};exports['UpdateMemberReport']=function(_0x4ea32e){var _0x3f362c=this;return new Promise(function(_0x541bf5,_0x244626){return db['MemberReport'][_0xe06a('0x22')](_0x4ea32e[_0xe06a('0x23')],{'raw':_0x4ea32e[_0xe06a('0x15')]?_0x4ea32e['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4ea32e[_0xe06a('0x15')]?_0x4ea32e[_0xe06a('0x15')][_0xe06a('0x24')]||null:null,'attributes':_0x4ea32e[_0xe06a('0x15')]?_0x4ea32e[_0xe06a('0x15')][_0xe06a('0x16')]||null:null,'limit':_0x4ea32e['options']?_0x4ea32e['options']['limit']||null:null})['then'](function(_0xed8a80){logger[_0xe06a('0xb')](_0xe06a('0x25'),_0x4ea32e);logger[_0xe06a('0x1b')](_0xe06a('0x25'),_0x4ea32e,JSON['stringify'](_0xed8a80));_0x541bf5(_0xed8a80);})[_0xe06a('0x1d')](function(_0x102f49){logger[_0xe06a('0xe')]('UpdateMemberReport',_0x102f49[_0xe06a('0x11')],_0x4ea32e);_0x244626(_0x3f362c[_0xe06a('0xe')](0x1f4,_0x102f49[_0xe06a('0x11')]));});});};
\ No newline at end of file
+var _0xfe91=['stringify','error','code','message','catch','GetMemberReport','MemberReport','findAll','options','raw','where','attributes','limit','include','map','model','then','CreateMemberReport','create','body','update','UpdateMemberReport','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','MemberReport,\x20%s,\x20%s,\x20%s'];(function(_0x3aaf0a,_0x450970){var _0x33e6bc=function(_0x1db54d){while(--_0x1db54d){_0x3aaf0a['push'](_0x3aaf0a['shift']());}};_0x33e6bc(++_0x450970);}(_0xfe91,0xd4));var _0x1fe9=function(_0x57d370,_0x3ed0f6){_0x57d370=_0x57d370-0x0;var _0x550fd2=_0xfe91[_0x57d370];return _0x550fd2;};'use strict';var _=require(_0x1fe9('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x1fe9('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1fe9('0x2'));var db=require(_0x1fe9('0x3'))['db'];var utils=require(_0x1fe9('0x4'));var logger=require(_0x1fe9('0x5'))(_0x1fe9('0x6'));var config=require(_0x1fe9('0x7'));var jayson=require(_0x1fe9('0x8'));var client=jayson['client'][_0x1fe9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2a7f10,_0x92b169,_0x548aeb){return new BPromise(function(_0x5a8fdd,_0x3a7562){return client[_0x1fe9('0xa')](_0x2a7f10,_0x548aeb)['then'](function(_0x1fd0fe){logger[_0x1fe9('0xb')](_0x1fe9('0xc'),_0x92b169,_0x1fe9('0xd'));logger[_0x1fe9('0xe')](_0x1fe9('0xf'),_0x92b169,_0x1fe9('0xd'),JSON[_0x1fe9('0x10')](_0x1fd0fe));if(_0x1fd0fe['error']){if(_0x1fd0fe[_0x1fe9('0x11')][_0x1fe9('0x12')]===0x1f4){logger['error'](_0x1fe9('0xc'),_0x92b169,_0x1fd0fe[_0x1fe9('0x11')][_0x1fe9('0x13')]);return _0x3a7562(_0x1fd0fe[_0x1fe9('0x11')][_0x1fe9('0x13')]);}logger['error'](_0x1fe9('0xc'),_0x92b169,_0x1fd0fe[_0x1fe9('0x11')][_0x1fe9('0x13')]);return _0x5a8fdd(_0x1fd0fe[_0x1fe9('0x11')]['message']);}else{logger[_0x1fe9('0xb')](_0x1fe9('0xc'),_0x92b169,_0x1fe9('0xd'));_0x5a8fdd(_0x1fd0fe['result'][_0x1fe9('0x13')]);}})[_0x1fe9('0x14')](function(_0x827331){logger['error'](_0x1fe9('0xc'),_0x92b169,_0x827331);_0x3a7562(_0x827331);});});}exports[_0x1fe9('0x15')]=function(_0x2085ac){var _0x4cd11f=this;return new Promise(function(_0x2070a3,_0x4c7cc9){return db[_0x1fe9('0x16')][_0x1fe9('0x17')]({'raw':_0x2085ac['options']?_0x2085ac[_0x1fe9('0x18')][_0x1fe9('0x19')]===undefined?!![]:![]:!![],'where':_0x2085ac[_0x1fe9('0x18')]?_0x2085ac[_0x1fe9('0x18')][_0x1fe9('0x1a')]||null:null,'attributes':_0x2085ac[_0x1fe9('0x18')]?_0x2085ac['options'][_0x1fe9('0x1b')]||null:null,'limit':_0x2085ac['options']?_0x2085ac['options'][_0x1fe9('0x1c')]||null:null,'include':_0x2085ac[_0x1fe9('0x18')]?_0x2085ac[_0x1fe9('0x18')][_0x1fe9('0x1d')]?_[_0x1fe9('0x1e')](_0x2085ac[_0x1fe9('0x18')]['include'],function(_0x18afe2){return{'model':db[_0x18afe2[_0x1fe9('0x1f')]],'as':_0x18afe2['as'],'attributes':_0x18afe2['attributes'],'include':_0x18afe2[_0x1fe9('0x1d')]?_[_0x1fe9('0x1e')](_0x18afe2['include'],function(_0x2e492f){return{'model':db[_0x2e492f[_0x1fe9('0x1f')]],'as':_0x2e492f['as'],'attributes':_0x2e492f['attributes'],'include':_0x2e492f[_0x1fe9('0x1d')]?_[_0x1fe9('0x1e')](_0x2e492f['include'],function(_0x297c4b){return{'model':db[_0x297c4b[_0x1fe9('0x1f')]],'as':_0x297c4b['as'],'attributes':_0x297c4b[_0x1fe9('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x1fe9('0x20')](function(_0x36b7f4){logger[_0x1fe9('0xb')](_0x1fe9('0x15'),_0x2085ac);logger[_0x1fe9('0xe')](_0x1fe9('0x15'),_0x2085ac,JSON[_0x1fe9('0x10')](_0x36b7f4));_0x2070a3(_0x36b7f4);})[_0x1fe9('0x14')](function(_0x11f374){logger[_0x1fe9('0x11')]('GetMemberReport',_0x11f374[_0x1fe9('0x13')],_0x2085ac);_0x4c7cc9(_0x4cd11f[_0x1fe9('0x11')](0x1f4,_0x11f374[_0x1fe9('0x13')]));});});};exports[_0x1fe9('0x21')]=function(_0x216ed4){var _0x43331c=this;return new Promise(function(_0x4865f9,_0x3f1439){return db['MemberReport'][_0x1fe9('0x22')](_0x216ed4[_0x1fe9('0x23')],{'raw':_0x216ed4[_0x1fe9('0x18')]?_0x216ed4[_0x1fe9('0x18')][_0x1fe9('0x19')]===undefined?!![]:![]:!![]})[_0x1fe9('0x20')](function(_0x40f53d){logger[_0x1fe9('0xb')](_0x1fe9('0x21'),_0x216ed4);logger['debug'](_0x1fe9('0x21'),_0x216ed4,JSON[_0x1fe9('0x10')](_0x40f53d));_0x4865f9(_0x40f53d);})['catch'](function(_0x37fda5){logger[_0x1fe9('0x11')](_0x1fe9('0x21'),_0x37fda5[_0x1fe9('0x13')],_0x216ed4);_0x3f1439(_0x43331c[_0x1fe9('0x11')](0x1f4,_0x37fda5[_0x1fe9('0x13')]));});});};exports['UpdateMemberReport']=function(_0x5ba591){var _0xd6c911=this;return new Promise(function(_0x4e9e97,_0x4b14cd){return db[_0x1fe9('0x16')][_0x1fe9('0x24')](_0x5ba591[_0x1fe9('0x23')],{'raw':_0x5ba591[_0x1fe9('0x18')]?_0x5ba591['options'][_0x1fe9('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5ba591['options']?_0x5ba591[_0x1fe9('0x18')][_0x1fe9('0x1a')]||null:null,'attributes':_0x5ba591['options']?_0x5ba591[_0x1fe9('0x18')]['attributes']||null:null,'limit':_0x5ba591[_0x1fe9('0x18')]?_0x5ba591[_0x1fe9('0x18')][_0x1fe9('0x1c')]||null:null})['then'](function(_0x166908){logger[_0x1fe9('0xb')](_0x1fe9('0x25'),_0x5ba591);logger['debug'](_0x1fe9('0x25'),_0x5ba591,JSON[_0x1fe9('0x10')](_0x166908));_0x4e9e97(_0x166908);})['catch'](function(_0x782f5b){logger[_0x1fe9('0x11')](_0x1fe9('0x25'),_0x782f5b[_0x1fe9('0x13')],_0x5ba591);_0x4b14cd(_0xd6c911[_0x1fe9('0x11')](0x1f4,_0x782f5b['message']));});});};
\ No newline at end of file
index 637c78e..81c35f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8fb=['multer','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service','./migration.controller','get','exports'];(function(_0x4aef9a,_0x3eab87){var _0x10365d=function(_0x16ee1f){while(--_0x16ee1f){_0x4aef9a['push'](_0x4aef9a['shift']());}};_0x10365d(++_0x3eab87);}(_0xd8fb,0x99));var _0xbd8f=function(_0x1a72bf,_0x49e120){_0x1a72bf=_0x1a72bf-0x0;var _0x15786e=_0xd8fb[_0x1a72bf];return _0x15786e;};'use strict';var multer=require(_0xbd8f('0x0'));var util=require(_0xbd8f('0x1'));var path=require(_0xbd8f('0x2'));var timeout=require(_0xbd8f('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xbd8f('0x4'));var interaction=require(_0xbd8f('0x5'));var config=require('../../config/environment');var controller=require(_0xbd8f('0x6'));router[_0xbd8f('0x7')]('/',controller['index']);module[_0xbd8f('0x8')]=router;
\ No newline at end of file
+var _0x3fa4=['multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./migration.controller','index','exports'];(function(_0x2f3f6f,_0x501a1d){var _0x186bd8=function(_0x26b86c){while(--_0x26b86c){_0x2f3f6f['push'](_0x2f3f6f['shift']());}};_0x186bd8(++_0x501a1d);}(_0x3fa4,0xf0));var _0x43fa=function(_0x4a11ae,_0x32abad){_0x4a11ae=_0x4a11ae-0x0;var _0x97474f=_0x3fa4[_0x4a11ae];return _0x97474f;};'use strict';var multer=require(_0x43fa('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x43fa('0x1'));var router=express[_0x43fa('0x2')]();var fs_extra=require(_0x43fa('0x3'));var auth=require(_0x43fa('0x4'));var interaction=require(_0x43fa('0x5'));var config=require(_0x43fa('0x6'));var controller=require(_0x43fa('0x7'));router['get']('/',controller[_0x43fa('0x8')]);module[_0x43fa('0x9')]=router;
\ No newline at end of file
index 41c6efc..3304703 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1dc9=['sequelize','exports','STRING'];(function(_0x4ded50,_0x4a6af3){var _0xa92135=function(_0xe09b41){while(--_0xe09b41){_0x4ded50['push'](_0x4ded50['shift']());}};_0xa92135(++_0x4a6af3);}(_0x1dc9,0x111));var _0x91dc=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1dc9[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x91dc('0x0'));module[_0x91dc('0x1')]={'version':{'type':Sequelize[_0x91dc('0x2')],'unique':'version'}};
\ No newline at end of file
+var _0x14c9=['exports','STRING','version'];(function(_0x75f869,_0x3690d6){var _0x10af8b=function(_0x22d3ff){while(--_0x22d3ff){_0x75f869['push'](_0x75f869['shift']());}};_0x10af8b(++_0x3690d6);}(_0x14c9,0x1b6));var _0x914c=function(_0x21d9ba,_0x236b71){_0x21d9ba=_0x21d9ba-0x0;var _0x23a8db=_0x14c9[_0x21d9ba];return _0x23a8db;};'use strict';var Sequelize=require('sequelize');module[_0x914c('0x0')]={'version':{'type':Sequelize[_0x914c('0x1')],'unique':_0x914c('0x2')}};
\ No newline at end of file
index 906c86b..d0b2752 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb59e=['moment','bluebird','mustache','sox','to-csv','ejs','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','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','error','stack','name','index','map','Migration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x4b1fc,_0x274688){var _0x445d4c=function(_0x4f8544){while(--_0x4f8544){_0x4b1fc['push'](_0x4b1fc['shift']());}};_0x445d4c(++_0x274688);}(_0xb59e,0x89));var _0xeb59=function(_0x1a40e2,_0x3c72e7){_0x1a40e2=_0x1a40e2-0x0;var _0x1785c7=_0xb59e[_0x1a40e2];return _0x1785c7;};'use strict';var emlformat=require(_0xeb59('0x0'));var rimraf=require(_0xeb59('0x1'));var zipdir=require(_0xeb59('0x2'));var jsonpatch=require(_0xeb59('0x3'));var rp=require(_0xeb59('0x4'));var moment=require(_0xeb59('0x5'));var BPromise=require(_0xeb59('0x6'));var Mustache=require(_0xeb59('0x7'));var util=require('util');var path=require('path');var sox=require(_0xeb59('0x8'));var csv=require(_0xeb59('0x9'));var ejs=require(_0xeb59('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xeb59('0xb'));var squel=require(_0xeb59('0xc'));var crypto=require(_0xeb59('0xd'));var jsforce=require(_0xeb59('0xe'));var deskjs=require(_0xeb59('0xf'));var toCsv=require(_0xeb59('0x9'));var querystring=require(_0xeb59('0x10'));var Papa=require(_0xeb59('0x11'));var Redis=require(_0xeb59('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xeb59('0x13'));var as=require(_0xeb59('0x14'));var hardwareService=require(_0xeb59('0x15'));var logger=require(_0xeb59('0x16'))(_0xeb59('0x17'));var utils=require(_0xeb59('0x18'));var config=require(_0xeb59('0x19'));var licenseUtil=require(_0xeb59('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5b9181,_0x10141a){_0x10141a=_0x10141a||0xcc;return function(_0x22fed2){if(_0x22fed2){return _0x5b9181[_0xeb59('0x1b')](_0x10141a);}return _0x5b9181[_0xeb59('0x1c')](_0x10141a)['end']();};}function respondWithResult(_0x1b1da3,_0x2c642c){_0x2c642c=_0x2c642c||0xc8;return function(_0x109a41){if(_0x109a41){return _0x1b1da3[_0xeb59('0x1c')](_0x2c642c)[_0xeb59('0x1d')](_0x109a41);}};}function respondWithFilteredResult(_0x5b0c95,_0x10fdc7){return function(_0x2084b6){if(_0x2084b6){var _0x5ecfa6=typeof _0x10fdc7[_0xeb59('0x1e')]===_0xeb59('0x1f')&&typeof _0x10fdc7[_0xeb59('0x20')]===_0xeb59('0x1f');var _0x1d8cf4=_0x2084b6['count'];var _0x314c84=_0x5ecfa6?0x0:_0x10fdc7[_0xeb59('0x1e')];var _0x372cfd=_0x5ecfa6?_0x2084b6[_0xeb59('0x21')]:_0x10fdc7[_0xeb59('0x1e')]+_0x10fdc7[_0xeb59('0x20')];var _0x1716a9;if(_0x372cfd>=_0x1d8cf4){_0x372cfd=_0x1d8cf4;_0x1716a9=0xc8;}else{_0x1716a9=0xce;}_0x5b0c95[_0xeb59('0x1c')](_0x1716a9);return _0x5b0c95[_0xeb59('0x22')](_0xeb59('0x23'),_0x314c84+'-'+_0x372cfd+'/'+_0x1d8cf4)[_0xeb59('0x1d')](_0x2084b6);}return null;};}function patchUpdates(_0x30c1b8){return function(_0x39f758){try{jsonpatch[_0xeb59('0x24')](_0x39f758,_0x30c1b8,!![]);}catch(_0x6f947a){return BPromise[_0xeb59('0x25')](_0x6f947a);}return _0x39f758['save']();};}function saveUpdates(_0x5ce6fd,_0x23ee0a){return function(_0x2e63f1){if(_0x2e63f1){return _0x2e63f1[_0xeb59('0x26')](_0x5ce6fd)[_0xeb59('0x27')](function(_0x50af10){return _0x50af10;});}return null;};}function removeEntity(_0x1e1493,_0x3d459a){return function(_0x369967){if(_0x369967){return _0x369967['destroy']()[_0xeb59('0x27')](function(){_0x1e1493[_0xeb59('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3e7139,_0x3e4b5c){return function(_0x2353f9){if(!_0x2353f9){_0x3e7139[_0xeb59('0x1b')](0x194);}return _0x2353f9;};}function handleError(_0x500a47,_0x33abe7){_0x33abe7=_0x33abe7||0x1f4;return function(_0x7c891a){logger[_0xeb59('0x28')](_0x7c891a[_0xeb59('0x29')]);if(_0x7c891a[_0xeb59('0x2a')]){delete _0x7c891a['name'];}_0x500a47['status'](_0x33abe7)['send'](_0x7c891a);};}exports[_0xeb59('0x2b')]=function(_0x2508ee,_0x1e85d3){var _0x225501={},_0x27571a={},_0x1e12a0={'count':0x0,'rows':[]};var _0xac36a4=_[_0xeb59('0x2c')](db[_0xeb59('0x2d')][_0xeb59('0x2e')],function(_0x2f0f73){return{'name':_0x2f0f73[_0xeb59('0x2f')],'type':_0x2f0f73[_0xeb59('0x30')][_0xeb59('0x31')]};});_0x27571a[_0xeb59('0x32')]=_[_0xeb59('0x2c')](_0xac36a4,_0xeb59('0x2a'));_0x27571a[_0xeb59('0x33')]=_[_0xeb59('0x34')](_0x2508ee['query']);_0x27571a[_0xeb59('0x35')]=_['intersection'](_0x27571a['model'],_0x27571a[_0xeb59('0x33')]);_0x225501['attributes']=_[_0xeb59('0x36')](_0x27571a[_0xeb59('0x32')],qs[_0xeb59('0x37')](_0x2508ee[_0xeb59('0x33')][_0xeb59('0x37')]));_0x225501[_0xeb59('0x38')]=_0x225501[_0xeb59('0x38')]['length']?_0x225501[_0xeb59('0x38')]:_0x27571a['model'];if(!_0x2508ee['query'][_0xeb59('0x39')](_0xeb59('0x3a'))){_0x225501['limit']=qs[_0xeb59('0x20')](_0x2508ee[_0xeb59('0x33')][_0xeb59('0x20')]);_0x225501['offset']=qs[_0xeb59('0x1e')](_0x2508ee[_0xeb59('0x33')][_0xeb59('0x1e')]);}_0x225501['order']=qs['sort'](_0x2508ee['query'][_0xeb59('0x3b')]);_0x225501[_0xeb59('0x3c')]=qs[_0xeb59('0x35')](_[_0xeb59('0x3d')](_0x2508ee[_0xeb59('0x33')],_0x27571a[_0xeb59('0x35')]),_0xac36a4);if(_0x2508ee[_0xeb59('0x33')][_0xeb59('0x3e')]){_0x225501[_0xeb59('0x3c')]=_[_0xeb59('0x3f')](_0x225501['where'],{'$or':_[_0xeb59('0x2c')](_0xac36a4,function(_0x59e60f){if(_0x59e60f[_0xeb59('0x30')]!==_0xeb59('0x40')){var _0x13c346={};_0x13c346[_0x59e60f[_0xeb59('0x2a')]]={'$like':'%'+_0x2508ee[_0xeb59('0x33')][_0xeb59('0x3e')]+'%'};return _0x13c346;}})});}_0x225501=_['merge']({},_0x225501,_0x2508ee[_0xeb59('0x41')]);var _0x1efb62={'where':_0x225501[_0xeb59('0x3c')]};return db[_0xeb59('0x2d')][_0xeb59('0x21')](_0x1efb62)[_0xeb59('0x27')](function(_0x53008d){_0x1e12a0[_0xeb59('0x21')]=_0x53008d;if(_0x2508ee[_0xeb59('0x33')][_0xeb59('0x42')]){_0x225501[_0xeb59('0x43')]=[{'all':!![]}];}return db[_0xeb59('0x2d')][_0xeb59('0x44')](_0x225501);})[_0xeb59('0x27')](function(_0x5179ba){_0x1e12a0[_0xeb59('0x45')]=_0x5179ba;return _0x1e12a0;})[_0xeb59('0x27')](respondWithFilteredResult(_0x1e85d3,_0x225501))[_0xeb59('0x46')](handleError(_0x1e85d3,null));};
\ No newline at end of file
+var _0xeccb=['crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','undefined','limit','count','offset','set','apply','reject','then','end','sendStatus','error','stack','name','send','index','map','Migration','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','sort','pick','filter','where','merge','options','includeAll','include','findAll','catch','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel'];(function(_0x195d70,_0xed56eb){var _0x50fc01=function(_0x273291){while(--_0x273291){_0x195d70['push'](_0x195d70['shift']());}};_0x50fc01(++_0xed56eb);}(_0xeccb,0x76));var _0xbecc=function(_0x2cfb58,_0x3d9412){_0x2cfb58=_0x2cfb58-0x0;var _0xd99951=_0xeccb[_0x2cfb58];return _0xd99951;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbecc('0x0'));var zipdir=require(_0xbecc('0x1'));var jsonpatch=require(_0xbecc('0x2'));var rp=require(_0xbecc('0x3'));var moment=require(_0xbecc('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xbecc('0x5'));var util=require(_0xbecc('0x6'));var path=require(_0xbecc('0x7'));var sox=require(_0xbecc('0x8'));var csv=require(_0xbecc('0x9'));var ejs=require(_0xbecc('0xa'));var fs=require('fs');var fs_extra=require(_0xbecc('0xb'));var _=require(_0xbecc('0xc'));var squel=require(_0xbecc('0xd'));var crypto=require(_0xbecc('0xe'));var jsforce=require(_0xbecc('0xf'));var deskjs=require(_0xbecc('0x10'));var toCsv=require(_0xbecc('0x9'));var querystring=require(_0xbecc('0x11'));var Papa=require('papaparse');var Redis=require(_0xbecc('0x12'));var authService=require(_0xbecc('0x13'));var qs=require(_0xbecc('0x14'));var as=require(_0xbecc('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xbecc('0x16'))('api');var utils=require(_0xbecc('0x17'));var config=require(_0xbecc('0x18'));var licenseUtil=require(_0xbecc('0x19'));var db=require(_0xbecc('0x1a'))['db'];function respondWithStatusCode(_0x245be5,_0x276a65){_0x276a65=_0x276a65||0xcc;return function(_0x2246a0){if(_0x2246a0){return _0x245be5['sendStatus'](_0x276a65);}return _0x245be5['status'](_0x276a65)['end']();};}function respondWithResult(_0x4d77e6,_0x3eea8f){_0x3eea8f=_0x3eea8f||0xc8;return function(_0x73eecf){if(_0x73eecf){return _0x4d77e6[_0xbecc('0x1b')](_0x3eea8f)[_0xbecc('0x1c')](_0x73eecf);}};}function respondWithFilteredResult(_0x3a85fa,_0x1fc6b8){return function(_0x149201){if(_0x149201){var _0x5a10e9=typeof _0x1fc6b8['offset']===_0xbecc('0x1d')&&typeof _0x1fc6b8[_0xbecc('0x1e')]===_0xbecc('0x1d');var _0x56c01d=_0x149201[_0xbecc('0x1f')];var _0x34ccea=_0x5a10e9?0x0:_0x1fc6b8[_0xbecc('0x20')];var _0x47e3a0=_0x5a10e9?_0x149201[_0xbecc('0x1f')]:_0x1fc6b8[_0xbecc('0x20')]+_0x1fc6b8['limit'];var _0x4cf0be;if(_0x47e3a0>=_0x56c01d){_0x47e3a0=_0x56c01d;_0x4cf0be=0xc8;}else{_0x4cf0be=0xce;}_0x3a85fa[_0xbecc('0x1b')](_0x4cf0be);return _0x3a85fa[_0xbecc('0x21')]('Content-Range',_0x34ccea+'-'+_0x47e3a0+'/'+_0x56c01d)['json'](_0x149201);}return null;};}function patchUpdates(_0x5d457c){return function(_0x40e89e){try{jsonpatch[_0xbecc('0x22')](_0x40e89e,_0x5d457c,!![]);}catch(_0xfec0d3){return BPromise[_0xbecc('0x23')](_0xfec0d3);}return _0x40e89e['save']();};}function saveUpdates(_0xca3f0,_0x4ae385){return function(_0x3f7acd){if(_0x3f7acd){return _0x3f7acd['update'](_0xca3f0)[_0xbecc('0x24')](function(_0x48879e){return _0x48879e;});}return null;};}function removeEntity(_0x3d4e9e,_0x1e9729){return function(_0x215a46){if(_0x215a46){return _0x215a46['destroy']()['then'](function(){_0x3d4e9e[_0xbecc('0x1b')](0xcc)[_0xbecc('0x25')]();});}};}function handleEntityNotFound(_0x1853df,_0xfdcf34){return function(_0x361c74){if(!_0x361c74){_0x1853df[_0xbecc('0x26')](0x194);}return _0x361c74;};}function handleError(_0x29e444,_0x4294b5){_0x4294b5=_0x4294b5||0x1f4;return function(_0x5bdc9a){logger[_0xbecc('0x27')](_0x5bdc9a[_0xbecc('0x28')]);if(_0x5bdc9a['name']){delete _0x5bdc9a[_0xbecc('0x29')];}_0x29e444[_0xbecc('0x1b')](_0x4294b5)[_0xbecc('0x2a')](_0x5bdc9a);};}exports[_0xbecc('0x2b')]=function(_0x31b453,_0x2bf4c7){var _0x505fda={},_0x1a40aa={},_0x4c62eb={'count':0x0,'rows':[]};var _0x1ce335=_[_0xbecc('0x2c')](db[_0xbecc('0x2d')][_0xbecc('0x2e')],function(_0x1f4ac5){return{'name':_0x1f4ac5['fieldName'],'type':_0x1f4ac5[_0xbecc('0x2f')][_0xbecc('0x30')]};});_0x1a40aa[_0xbecc('0x31')]=_[_0xbecc('0x2c')](_0x1ce335,_0xbecc('0x29'));_0x1a40aa[_0xbecc('0x32')]=_['keys'](_0x31b453[_0xbecc('0x32')]);_0x1a40aa[_0xbecc('0x33')]=_[_0xbecc('0x34')](_0x1a40aa['model'],_0x1a40aa['query']);_0x505fda[_0xbecc('0x35')]=_['intersection'](_0x1a40aa[_0xbecc('0x31')],qs[_0xbecc('0x36')](_0x31b453['query'][_0xbecc('0x36')]));_0x505fda['attributes']=_0x505fda['attributes']['length']?_0x505fda['attributes']:_0x1a40aa[_0xbecc('0x31')];if(!_0x31b453[_0xbecc('0x32')][_0xbecc('0x37')]('nolimit')){_0x505fda[_0xbecc('0x1e')]=qs[_0xbecc('0x1e')](_0x31b453[_0xbecc('0x32')][_0xbecc('0x1e')]);_0x505fda['offset']=qs['offset'](_0x31b453[_0xbecc('0x32')][_0xbecc('0x20')]);}_0x505fda['order']=qs[_0xbecc('0x38')](_0x31b453[_0xbecc('0x32')][_0xbecc('0x38')]);_0x505fda['where']=qs['filters'](_[_0xbecc('0x39')](_0x31b453[_0xbecc('0x32')],_0x1a40aa[_0xbecc('0x33')]),_0x1ce335);if(_0x31b453[_0xbecc('0x32')][_0xbecc('0x3a')]){_0x505fda[_0xbecc('0x3b')]=_[_0xbecc('0x3c')](_0x505fda[_0xbecc('0x3b')],{'$or':_[_0xbecc('0x2c')](_0x1ce335,function(_0x5ec73a){if(_0x5ec73a['type']!=='VIRTUAL'){var _0x2a7592={};_0x2a7592[_0x5ec73a['name']]={'$like':'%'+_0x31b453[_0xbecc('0x32')][_0xbecc('0x3a')]+'%'};return _0x2a7592;}})});}_0x505fda=_[_0xbecc('0x3c')]({},_0x505fda,_0x31b453[_0xbecc('0x3d')]);var _0x6b5eff={'where':_0x505fda[_0xbecc('0x3b')]};return db[_0xbecc('0x2d')][_0xbecc('0x1f')](_0x6b5eff)[_0xbecc('0x24')](function(_0x4f8d5b){_0x4c62eb[_0xbecc('0x1f')]=_0x4f8d5b;if(_0x31b453['query'][_0xbecc('0x3e')]){_0x505fda[_0xbecc('0x3f')]=[{'all':!![]}];}return db[_0xbecc('0x2d')][_0xbecc('0x40')](_0x505fda);})['then'](function(_0x1a2107){_0x4c62eb['rows']=_0x1a2107;return _0x4c62eb;})[_0xbecc('0x24')](respondWithFilteredResult(_0x2bf4c7,_0x505fda))[_0xbecc('0x41')](handleError(_0x2bf4c7,null));};
\ No newline at end of file
index b8eb184..ce4a857 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9765=['../../config/logger','api','moment','request-promise','../../config/environment','./migration.attributes','exports','define','Migration','lodash','util'];(function(_0xad217e,_0x6324ba){var _0x401750=function(_0x443062){while(--_0x443062){_0xad217e['push'](_0xad217e['shift']());}};_0x401750(++_0x6324ba);}(_0x9765,0x174));var _0x5976=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x9765[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0x5976('0x0'));var util=require(_0x5976('0x1'));var logger=require(_0x5976('0x2'))(_0x5976('0x3'));var moment=require(_0x5976('0x4'));var BPromise=require('bluebird');var rp=require(_0x5976('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5976('0x6'));var attributes=require(_0x5976('0x7'));module[_0x5976('0x8')]=function(_0xe2e134,_0x4847ee){return _0xe2e134[_0x5976('0x9')](_0x5976('0xa'),attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x25ea=['bluebird','path','../../config/environment','exports','define','Migration','lodash','util','../../config/logger','moment'];(function(_0x39bb28,_0x3e86c6){var _0x218f07=function(_0x34ce6b){while(--_0x34ce6b){_0x39bb28['push'](_0x39bb28['shift']());}};_0x218f07(++_0x3e86c6);}(_0x25ea,0x6a));var _0xa25e=function(_0x43aee5,_0x11268b){_0x43aee5=_0x43aee5-0x0;var _0x76d1d0=_0x25ea[_0x43aee5];return _0x76d1d0;};'use strict';var _=require(_0xa25e('0x0'));var util=require(_0xa25e('0x1'));var logger=require(_0xa25e('0x2'))('api');var moment=require(_0xa25e('0x3'));var BPromise=require(_0xa25e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa25e('0x5'));var rimraf=require('rimraf');var config=require(_0xa25e('0x6'));var attributes=require('./migration.attributes');module[_0xa25e('0x7')]=function(_0x1798c2,_0xd6e7bd){return _0x1798c2[_0xa25e('0x8')](_0xa25e('0x9'),attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1106f91..d86e71f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4157=['code','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','Migration,\x20%s,\x20%s','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x4cf97f,_0x3bcb11){var _0x41106a=function(_0x31c7fb){while(--_0x31c7fb){_0x4cf97f['push'](_0x4cf97f['shift']());}};_0x41106a(++_0x3bcb11);}(_0x4157,0xf3));var _0x7415=function(_0xc32530,_0x9c55b9){_0xc32530=_0xc32530-0x0;var _0x4917da=_0x4157[_0xc32530];return _0x4917da;};'use strict';var _=require(_0x7415('0x0'));var util=require(_0x7415('0x1'));var moment=require(_0x7415('0x2'));var BPromise=require(_0x7415('0x3'));var rs=require(_0x7415('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7415('0x5'))['db'];var utils=require(_0x7415('0x6'));var logger=require(_0x7415('0x7'))(_0x7415('0x8'));var config=require(_0x7415('0x9'));var jayson=require(_0x7415('0xa'));var client=jayson[_0x7415('0xb')][_0x7415('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3c7980,_0x49b694,_0x26fe93){return new BPromise(function(_0x588c5a,_0x972b02){return client['request'](_0x3c7980,_0x26fe93)[_0x7415('0xd')](function(_0x1a42df){logger[_0x7415('0xe')](_0x7415('0xf'),_0x49b694,_0x7415('0x10'));logger[_0x7415('0x11')](_0x7415('0x12'),_0x49b694,'request\x20sent',JSON[_0x7415('0x13')](_0x1a42df));if(_0x1a42df[_0x7415('0x14')]){if(_0x1a42df[_0x7415('0x14')][_0x7415('0x15')]===0x1f4){logger[_0x7415('0x14')]('Migration,\x20%s,\x20%s',_0x49b694,_0x1a42df[_0x7415('0x14')][_0x7415('0x16')]);return _0x972b02(_0x1a42df[_0x7415('0x14')][_0x7415('0x16')]);}logger[_0x7415('0x14')](_0x7415('0xf'),_0x49b694,_0x1a42df[_0x7415('0x14')][_0x7415('0x16')]);return _0x588c5a(_0x1a42df[_0x7415('0x14')][_0x7415('0x16')]);}else{logger[_0x7415('0xe')](_0x7415('0xf'),_0x49b694,_0x7415('0x10'));_0x588c5a(_0x1a42df['result'][_0x7415('0x16')]);}})[_0x7415('0x17')](function(_0x2398d1){logger[_0x7415('0x14')]('Migration,\x20%s,\x20%s',_0x49b694,_0x2398d1);_0x972b02(_0x2398d1);});});}
\ No newline at end of file
+var _0x2333=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Migration,\x20%s,\x20%s','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','randomstring','ioredis'];(function(_0x51674a,_0x77ccff){var _0x13fca6=function(_0x3d6c27){while(--_0x3d6c27){_0x51674a['push'](_0x51674a['shift']());}};_0x13fca6(++_0x77ccff);}(_0x2333,0x11a));var _0x3233=function(_0x472089,_0x312426){_0x472089=_0x472089-0x0;var _0x274b4b=_0x2333[_0x472089];return _0x274b4b;};'use strict';var _=require(_0x3233('0x0'));var util=require(_0x3233('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x3233('0x2'));var fs=require('fs');var Redis=require(_0x3233('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x3233('0x4'));var logger=require(_0x3233('0x5'))(_0x3233('0x6'));var config=require(_0x3233('0x7'));var jayson=require(_0x3233('0x8'));var client=jayson[_0x3233('0x9')][_0x3233('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x33a56d,_0x1e93e8,_0x1842a1){return new BPromise(function(_0x1837b6,_0x2ee6df){return client[_0x3233('0xb')](_0x33a56d,_0x1842a1)[_0x3233('0xc')](function(_0x7ff4bd){logger[_0x3233('0xd')](_0x3233('0xe'),_0x1e93e8,_0x3233('0xf'));logger[_0x3233('0x10')](_0x3233('0x11'),_0x1e93e8,_0x3233('0xf'),JSON['stringify'](_0x7ff4bd));if(_0x7ff4bd[_0x3233('0x12')]){if(_0x7ff4bd[_0x3233('0x12')][_0x3233('0x13')]===0x1f4){logger[_0x3233('0x12')](_0x3233('0xe'),_0x1e93e8,_0x7ff4bd[_0x3233('0x12')][_0x3233('0x14')]);return _0x2ee6df(_0x7ff4bd[_0x3233('0x12')][_0x3233('0x14')]);}logger[_0x3233('0x12')](_0x3233('0xe'),_0x1e93e8,_0x7ff4bd[_0x3233('0x12')][_0x3233('0x14')]);return _0x1837b6(_0x7ff4bd['error']['message']);}else{logger[_0x3233('0xd')](_0x3233('0xe'),_0x1e93e8,_0x3233('0xf'));_0x1837b6(_0x7ff4bd['result'][_0x3233('0x14')]);}})[_0x3233('0x15')](function(_0x127227){logger['error'](_0x3233('0xe'),_0x1e93e8,_0x127227);_0x2ee6df(_0x127227);});});}
\ No newline at end of file
index c0f2fab..6d018e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9c3=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','get','/:id','isAuthenticated','show','post','create','put','delete','destroy','path','express','Router'];(function(_0xeb4417,_0xc7f305){var _0x214712=function(_0x22ebac){while(--_0x22ebac){_0xeb4417['push'](_0xeb4417['shift']());}};_0x214712(++_0xc7f305);}(_0xc9c3,0x96));var _0x3c9c=function(_0x56cbcd,_0x183214){_0x56cbcd=_0x56cbcd-0x0;var _0x4b7e1b=_0xc9c3[_0x56cbcd];return _0x4b7e1b;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3c9c('0x0'));var timeout=require('connect-timeout');var express=require(_0x3c9c('0x1'));var router=express[_0x3c9c('0x2')]();var fs_extra=require(_0x3c9c('0x3'));var auth=require(_0x3c9c('0x4'));var interaction=require(_0x3c9c('0x5'));var config=require(_0x3c9c('0x6'));var controller=require(_0x3c9c('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x3c9c('0x8')](_0x3c9c('0x9'),auth[_0x3c9c('0xa')](),controller[_0x3c9c('0xb')]);router[_0x3c9c('0xc')]('/',auth[_0x3c9c('0xa')](),controller[_0x3c9c('0xd')]);router[_0x3c9c('0xe')](_0x3c9c('0x9'),auth[_0x3c9c('0xa')](),controller['update']);router[_0x3c9c('0xf')](_0x3c9c('0x9'),auth['isAuthenticated'](),controller[_0x3c9c('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xb89c=['get','/:id','show','post','put','isAuthenticated','update','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./network.controller','index'];(function(_0x478414,_0xcf142d){var _0x5eb6b9=function(_0x10e6fe){while(--_0x10e6fe){_0x478414['push'](_0x478414['shift']());}};_0x5eb6b9(++_0xcf142d);}(_0xb89c,0x198));var _0xcb89=function(_0xa4547e,_0x5334f9){_0xa4547e=_0xa4547e-0x0;var _0x58ec2f=_0xb89c[_0xa4547e];return _0x58ec2f;};'use strict';var multer=require(_0xcb89('0x0'));var util=require(_0xcb89('0x1'));var path=require(_0xcb89('0x2'));var timeout=require(_0xcb89('0x3'));var express=require('express');var router=express[_0xcb89('0x4')]();var fs_extra=require(_0xcb89('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xcb89('0x6'));var config=require(_0xcb89('0x7'));var controller=require(_0xcb89('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xcb89('0x9')]);router[_0xcb89('0xa')](_0xcb89('0xb'),auth['isAuthenticated'](),controller[_0xcb89('0xc')]);router[_0xcb89('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0xcb89('0xe')]('/:id',auth[_0xcb89('0xf')](),controller[_0xcb89('0x10')]);router[_0xcb89('0x11')](_0xcb89('0xb'),auth[_0xcb89('0xf')](),controller[_0xcb89('0x12')]);module['exports']=router;
\ No newline at end of file
index 790aed5..b00c905 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6e6=['STRING','localnet','turn'];(function(_0x38bbe8,_0x51b74d){var _0x5ebd60=function(_0x44e9f2){while(--_0x44e9f2){_0x38bbe8['push'](_0x38bbe8['shift']());}};_0x5ebd60(++_0x51b74d);}(_0xd6e6,0x118));var _0x6d6e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd6e6[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize['ENUM'](_0x6d6e('0x0'),'externip','stun',_0x6d6e('0x1'))},'value':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x6d6e('0x2')]}};
\ No newline at end of file
+var _0x09b7=['externip','stun','turn','STRING','exports','ENUM'];(function(_0x297d26,_0x181c70){var _0x386f9f=function(_0xd5114){while(--_0xd5114){_0x297d26['push'](_0x297d26['shift']());}};_0x386f9f(++_0x181c70);}(_0x09b7,0x1c0));var _0x709b=function(_0x476705,_0x34fe4c){_0x476705=_0x476705-0x0;var _0x520734=_0x09b7[_0x476705];return _0x520734;};'use strict';var Sequelize=require('sequelize');module[_0x709b('0x0')]={'type':{'type':Sequelize[_0x709b('0x1')]('localnet',_0x709b('0x2'),_0x709b('0x3'),_0x709b('0x4'))},'value':{'type':Sequelize[_0x709b('0x5')]},'username':{'type':Sequelize[_0x709b('0x5')]},'password':{'type':Sequelize[_0x709b('0x5')]}};
\ No newline at end of file
index 8bba01e..657024c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x676d=['filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','include','show','params','rawAttributes','find','create','transaction','findAll','toUpperCase','STUN','readFileSync','join','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','Reload','res_stun_monitor.so','TURN','root','server/files/templates/turn_multiple.ejs','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','body','toLowerCase','chan_sip.so','/etc/asterisk/stun_xcally.conf','/etc/asterisk/turn_xcally.conf','destroy','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','jayson/promise','request','then','info','debug','Network,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Network,\x20%s,\x20%s','message','result','catch','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','update','sendStatus','stack','name','send','index','map','Network','fieldName','type','key','model','query','keys'];(function(_0x547f29,_0x268f88){var _0x4192be=function(_0x4f1c86){while(--_0x4f1c86){_0x547f29['push'](_0x547f29['shift']());}};_0x4192be(++_0x268f88);}(_0x676d,0x1dc));var _0xd676=function(_0x5d048b,_0xa14b66){_0x5d048b=_0x5d048b-0x0;var _0x2205af=_0x676d[_0x5d048b];return _0x2205af;};'use strict';var emlformat=require(_0xd676('0x0'));var rimraf=require(_0xd676('0x1'));var zipdir=require(_0xd676('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd676('0x3'));var BPromise=require(_0xd676('0x4'));var Mustache=require(_0xd676('0x5'));var util=require(_0xd676('0x6'));var path=require(_0xd676('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd676('0x8'));var fs=require('fs');var fs_extra=require(_0xd676('0x9'));var _=require(_0xd676('0xa'));var squel=require(_0xd676('0xb'));var crypto=require(_0xd676('0xc'));var jsforce=require(_0xd676('0xd'));var deskjs=require(_0xd676('0xe'));var toCsv=require(_0xd676('0xf'));var querystring=require(_0xd676('0x10'));var Papa=require(_0xd676('0x11'));var Redis=require(_0xd676('0x12'));var authService=require(_0xd676('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xd676('0x14'));var hardwareService=require(_0xd676('0x15'));var logger=require('../../config/logger')(_0xd676('0x16'));var utils=require(_0xd676('0x17'));var config=require(_0xd676('0x18'));var licenseUtil=require(_0xd676('0x19'));var db=require('../../mysqldb')['db'];var jayson=require(_0xd676('0x1a'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x28b82a,_0x5052f7,_0x28d3e5,_0x1eb4c4){return new BPromise(function(_0x5a0047,_0x1991d8){var _0x12e47f=_0x1eb4c4||client;return _0x12e47f[_0xd676('0x1b')](_0x28b82a,_0x28d3e5)[_0xd676('0x1c')](function(_0x9659e8){logger[_0xd676('0x1d')]('Network,\x20%s,\x20%s',_0x5052f7,'request\x20sent');logger[_0xd676('0x1e')](_0xd676('0x1f'),_0x5052f7,_0xd676('0x20'),JSON[_0xd676('0x21')](_0x9659e8));if(_0x9659e8['error']){if(_0x9659e8[_0xd676('0x22')][_0xd676('0x23')]===0x1f4){logger[_0xd676('0x22')](_0xd676('0x24'),_0x5052f7,_0x9659e8[_0xd676('0x22')]['message']);return _0x1991d8(_0x9659e8[_0xd676('0x22')][_0xd676('0x25')]);}logger['error']('Network,\x20%s,\x20%s',_0x5052f7,_0x9659e8[_0xd676('0x22')][_0xd676('0x25')]);return _0x5a0047(_0x9659e8[_0xd676('0x22')][_0xd676('0x25')]);}else{logger[_0xd676('0x1d')]('Network,\x20%s,\x20%s',_0x5052f7,_0xd676('0x20'));_0x5a0047(_0x9659e8[_0xd676('0x26')][_0xd676('0x25')]);}})[_0xd676('0x27')](function(_0xdf13b1){logger[_0xd676('0x22')]('Network,\x20%s,\x20%s',_0x5052f7,_0xdf13b1);_0x1991d8(_0xdf13b1);});});}function respondWithStatusCode(_0x25dbe7,_0x59e5cc){_0x59e5cc=_0x59e5cc||0xcc;return function(_0x2910ec){if(_0x2910ec){return _0x25dbe7['sendStatus'](_0x59e5cc);}return _0x25dbe7[_0xd676('0x28')](_0x59e5cc)[_0xd676('0x29')]();};}function respondWithResult(_0x2226f6,_0x12132e){_0x12132e=_0x12132e||0xc8;return function(_0x209a3b){if(_0x209a3b){return _0x2226f6[_0xd676('0x28')](_0x12132e)[_0xd676('0x2a')](_0x209a3b);}};}function respondWithFilteredResult(_0x2d6a75,_0x34af6f){return function(_0x39ba2){if(_0x39ba2){var _0x23cead=typeof _0x34af6f[_0xd676('0x2b')]==='undefined'&&typeof _0x34af6f[_0xd676('0x2c')]===_0xd676('0x2d');var _0x2dc89b=_0x39ba2[_0xd676('0x2e')];var _0x239a0f=_0x23cead?0x0:_0x34af6f[_0xd676('0x2b')];var _0x26dbc4=_0x23cead?_0x39ba2[_0xd676('0x2e')]:_0x34af6f['offset']+_0x34af6f[_0xd676('0x2c')];var _0x1ad38a;if(_0x26dbc4>=_0x2dc89b){_0x26dbc4=_0x2dc89b;_0x1ad38a=0xc8;}else{_0x1ad38a=0xce;}_0x2d6a75[_0xd676('0x28')](_0x1ad38a);return _0x2d6a75[_0xd676('0x2f')](_0xd676('0x30'),_0x239a0f+'-'+_0x26dbc4+'/'+_0x2dc89b)[_0xd676('0x2a')](_0x39ba2);}return null;};}function patchUpdates(_0x51a72a){return function(_0x39c114){try{jsonpatch[_0xd676('0x31')](_0x39c114,_0x51a72a,!![]);}catch(_0x4142a8){return BPromise['reject'](_0x4142a8);}return _0x39c114['save']();};}function saveUpdates(_0xfddb1,_0x50e736){return function(_0x3aef83){if(_0x3aef83){return _0x3aef83[_0xd676('0x32')](_0xfddb1)[_0xd676('0x1c')](function(_0xabc1c1){return _0xabc1c1;});}return null;};}function removeEntity(_0x8a2436,_0x19bf8a){return function(_0x388ef6){if(_0x388ef6){return _0x388ef6['destroy']()[_0xd676('0x1c')](function(){_0x8a2436['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x249cc5,_0x515645){return function(_0x491f2b){if(!_0x491f2b){_0x249cc5[_0xd676('0x33')](0x194);}return _0x491f2b;};}function handleError(_0x4cc9a7,_0x10100e){_0x10100e=_0x10100e||0x1f4;return function(_0x51cf29){logger[_0xd676('0x22')](_0x51cf29[_0xd676('0x34')]);if(_0x51cf29[_0xd676('0x35')]){delete _0x51cf29['name'];}_0x4cc9a7[_0xd676('0x28')](_0x10100e)[_0xd676('0x36')](_0x51cf29);};}exports[_0xd676('0x37')]=function(_0x557633,_0x47c907){var _0x27d196={},_0x17d13f={},_0x276c6a={'count':0x0,'rows':[]};var _0x14f894=_[_0xd676('0x38')](db[_0xd676('0x39')]['rawAttributes'],function(_0x3398a9){return{'name':_0x3398a9[_0xd676('0x3a')],'type':_0x3398a9[_0xd676('0x3b')][_0xd676('0x3c')]};});_0x17d13f[_0xd676('0x3d')]=_[_0xd676('0x38')](_0x14f894,_0xd676('0x35'));_0x17d13f[_0xd676('0x3e')]=_[_0xd676('0x3f')](_0x557633[_0xd676('0x3e')]);_0x17d13f[_0xd676('0x40')]=_[_0xd676('0x41')](_0x17d13f[_0xd676('0x3d')],_0x17d13f[_0xd676('0x3e')]);_0x27d196[_0xd676('0x42')]=_[_0xd676('0x41')](_0x17d13f[_0xd676('0x3d')],qs[_0xd676('0x43')](_0x557633[_0xd676('0x3e')][_0xd676('0x43')]));_0x27d196[_0xd676('0x42')]=_0x27d196['attributes'][_0xd676('0x44')]?_0x27d196[_0xd676('0x42')]:_0x17d13f['model'];if(!_0x557633[_0xd676('0x3e')][_0xd676('0x45')](_0xd676('0x46'))){_0x27d196[_0xd676('0x2c')]=qs[_0xd676('0x2c')](_0x557633['query'][_0xd676('0x2c')]);_0x27d196[_0xd676('0x2b')]=qs['offset'](_0x557633['query'][_0xd676('0x2b')]);}_0x27d196['order']=qs[_0xd676('0x47')](_0x557633[_0xd676('0x3e')][_0xd676('0x47')]);_0x27d196[_0xd676('0x48')]=qs[_0xd676('0x40')](_[_0xd676('0x49')](_0x557633['query'],_0x17d13f[_0xd676('0x40')]),_0x14f894);if(_0x557633['query'][_0xd676('0x4a')]){_0x27d196[_0xd676('0x48')]=_[_0xd676('0x4b')](_0x27d196[_0xd676('0x48')],{'$or':_[_0xd676('0x38')](_0x14f894,function(_0x228896){if(_0x228896[_0xd676('0x3b')]!=='VIRTUAL'){var _0x2ac1a6={};_0x2ac1a6[_0x228896[_0xd676('0x35')]]={'$like':'%'+_0x557633[_0xd676('0x3e')][_0xd676('0x4a')]+'%'};return _0x2ac1a6;}})});}_0x27d196=_[_0xd676('0x4b')]({},_0x27d196,_0x557633[_0xd676('0x4c')]);var _0x1166e5={'where':_0x27d196[_0xd676('0x48')]};return db[_0xd676('0x39')][_0xd676('0x2e')](_0x1166e5)[_0xd676('0x1c')](function(_0x48f958){_0x276c6a[_0xd676('0x2e')]=_0x48f958;if(_0x557633[_0xd676('0x3e')][_0xd676('0x4d')]){_0x27d196[_0xd676('0x4e')]=[{'all':!![]}];}return db[_0xd676('0x39')]['findAll'](_0x27d196);})['then'](function(_0x8c8307){_0x276c6a['rows']=_0x8c8307;return _0x276c6a;})[_0xd676('0x1c')](respondWithFilteredResult(_0x47c907,_0x27d196))['catch'](handleError(_0x47c907,null));};exports[_0xd676('0x4f')]=function(_0x37a173,_0xf34b57){var _0x590455={'raw':!![],'where':{'id':_0x37a173[_0xd676('0x50')]['id']}},_0x1922f9={};_0x1922f9[_0xd676('0x3d')]=_[_0xd676('0x3f')](db[_0xd676('0x39')][_0xd676('0x51')]);_0x1922f9[_0xd676('0x3e')]=_[_0xd676('0x3f')](_0x37a173['query']);_0x1922f9['filters']=_[_0xd676('0x41')](_0x1922f9[_0xd676('0x3d')],_0x1922f9[_0xd676('0x3e')]);_0x590455[_0xd676('0x42')]=_['intersection'](_0x1922f9[_0xd676('0x3d')],qs[_0xd676('0x43')](_0x37a173[_0xd676('0x3e')][_0xd676('0x43')]));_0x590455[_0xd676('0x42')]=_0x590455['attributes']['length']?_0x590455[_0xd676('0x42')]:_0x1922f9[_0xd676('0x3d')];if(_0x37a173[_0xd676('0x3e')][_0xd676('0x4d')]){_0x590455[_0xd676('0x4e')]=[{'all':!![]}];}_0x590455=_['merge']({},_0x590455,_0x37a173[_0xd676('0x4c')]);return db[_0xd676('0x39')][_0xd676('0x52')](_0x590455)[_0xd676('0x1c')](handleEntityNotFound(_0xf34b57,null))[_0xd676('0x1c')](respondWithResult(_0xf34b57,null))[_0xd676('0x27')](handleError(_0xf34b57,null));};exports[_0xd676('0x53')]=function(_0x72ad1,_0x5a9b26,_0x3173b2){var _0x3f84fb;return db['sequelize'][_0xd676('0x54')](function(_0x1f605f){return db[_0xd676('0x39')]['create'](_0x72ad1['body'],{'raw':!![]})[_0xd676('0x1c')](function(_0x308709){_0x3f84fb=_0x308709;return db['Network'][_0xd676('0x55')]({'where':{'type':_0x72ad1['body']['type']},'raw':!![]});})[_0xd676('0x1c')](function(_0x4ead4e){if(_0x3f84fb[_0xd676('0x3b')][_0xd676('0x56')]()==_0xd676('0x57')){var _0x17c26c=fs[_0xd676('0x58')](path[_0xd676('0x59')](config['root'],_0xd676('0x5a')),_0xd676('0x5b'));var _0x1f0dfe=ejs[_0xd676('0x5c')](_0x17c26c,{'networks':_0x4ead4e||[]});fs[_0xd676('0x5d')]('/etc/asterisk/stun_xcally.conf',_0x1f0dfe);return respondWithRpcPromise(_0xd676('0x5e'),_0xd676('0x53'),{'module':_0xd676('0x5f')});}else if(_0x3f84fb[_0xd676('0x3b')][_0xd676('0x56')]()==_0xd676('0x60')){var _0x279c51=fs[_0xd676('0x58')](path[_0xd676('0x59')](config[_0xd676('0x61')],_0xd676('0x62')),'utf8');var _0x4a5d4f=ejs[_0xd676('0x5c')](_0x279c51,{'networks':_0x4ead4e||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x4a5d4f);return respondWithRpcPromise(_0xd676('0x5e'),_0xd676('0x53'),{'module':_0xd676('0x5f')});}else{var _0x3d31a8=fs[_0xd676('0x58')](path['join'](config['root'],_0xd676('0x63')),_0xd676('0x5b'));var _0x2c719f=ejs['render'](_0x3d31a8,{'networks':_0x4ead4e||[]});fs['writeFileSync'](util[_0xd676('0x64')](_0xd676('0x65'),_0x72ad1[_0xd676('0x66')][_0xd676('0x3b')][_0xd676('0x67')]()),_0x2c719f);return respondWithRpcPromise('Reload',_0xd676('0x53'),{'module':_0xd676('0x68')});}return null;})[_0xd676('0x1c')](function(){return _0x3f84fb;});})[_0xd676('0x1c')](respondWithResult(_0x5a9b26,0xc9))['catch'](handleError(_0x5a9b26,null));};exports[_0xd676('0x32')]=function(_0x341b66,_0x42f2dc,_0x12f079){var _0x1778a6;return db['sequelize'][_0xd676('0x54')](function(_0x13209e){return db[_0xd676('0x39')][_0xd676('0x52')]({'where':{'id':_0x341b66[_0xd676('0x50')]['id']}})[_0xd676('0x1c')](handleEntityNotFound(_0x42f2dc,null))[_0xd676('0x1c')](saveUpdates(_0x341b66[_0xd676('0x66')],null))[_0xd676('0x1c')](function(_0x88889b){if(_0x88889b){_0x1778a6=_0x88889b;return db['Network'][_0xd676('0x55')]({'where':{'type':_0x1778a6['type']},'raw':!![]});}return null;})['then'](function(_0x38bda2){if(_0x1778a6[_0xd676('0x3b')]['toUpperCase']()=='STUN'){var _0x5a6a54=fs['readFileSync'](path['join'](config[_0xd676('0x61')],_0xd676('0x5a')),_0xd676('0x5b'));var _0x4f124d=ejs[_0xd676('0x5c')](_0x5a6a54,{'networks':_0x38bda2||[]});fs[_0xd676('0x5d')](_0xd676('0x69'),_0x4f124d);return respondWithRpcPromise(_0xd676('0x5e'),_0xd676('0x32'),{'module':_0xd676('0x5f')});}else if(_0x1778a6[_0xd676('0x3b')][_0xd676('0x56')]()==_0xd676('0x60')){var _0x3af53a=fs['readFileSync'](path['join'](config[_0xd676('0x61')],_0xd676('0x62')),_0xd676('0x5b'));var _0x4d0ac3=ejs['render'](_0x3af53a,{'networks':_0x38bda2||[]});fs[_0xd676('0x5d')](_0xd676('0x6a'),_0x4d0ac3);return respondWithRpcPromise(_0xd676('0x5e'),_0xd676('0x32'),{'module':_0xd676('0x5f')});}else{var _0x12834b=fs[_0xd676('0x58')](path[_0xd676('0x59')](config[_0xd676('0x61')],_0xd676('0x63')),_0xd676('0x5b'));var _0xbf4c5e=ejs['render'](_0x12834b,{'networks':_0x38bda2||[]});fs[_0xd676('0x5d')](util[_0xd676('0x64')](_0xd676('0x65'),_0x341b66['body'][_0xd676('0x3b')][_0xd676('0x67')]()),_0xbf4c5e);return respondWithRpcPromise(_0xd676('0x5e'),_0xd676('0x32'),{'module':_0xd676('0x68')});}return null;})['then'](function(_0x565f62){if(_0x565f62){return _0x1778a6;}return null;});})[_0xd676('0x1c')](respondWithResult(_0x42f2dc,null))['catch'](handleError(_0x42f2dc,null));};exports[_0xd676('0x6b')]=function(_0x4d857f,_0x9558f4,_0x43119f){var _0x23e558;return db[_0xd676('0x39')][_0xd676('0x52')]({'where':{'id':_0x4d857f[_0xd676('0x50')]['id']}})[_0xd676('0x1c')](function(_0x58da5a){_0x23e558=_0x58da5a;return _0x58da5a;})['then'](handleEntityNotFound(_0x9558f4,null))[_0xd676('0x1c')](removeEntity(_0x9558f4,null))[_0xd676('0x1c')](function(){if(_0x23e558){return db[_0xd676('0x39')][_0xd676('0x55')]({'where':{'type':_0x23e558[_0xd676('0x3b')]},'raw':!![]});}})['then'](function(_0x2bf983){if(_0x23e558[_0xd676('0x3b')][_0xd676('0x56')]()==_0xd676('0x57')){var _0x5e56ef=fs[_0xd676('0x58')](path[_0xd676('0x59')](config['root'],'server/files/templates/stun_multiple.ejs'),'utf8');var _0x397f4c=ejs[_0xd676('0x5c')](_0x5e56ef,{'networks':_0x2bf983||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0x397f4c);return respondWithRpcPromise('Reload',_0xd676('0x6b'),{'module':'res_stun_monitor.so'});}else if(_0x23e558['type']['toUpperCase']()==_0xd676('0x60')){var _0xa5e9b9=fs[_0xd676('0x58')](path[_0xd676('0x59')](config[_0xd676('0x61')],'server/files/templates/turn_multiple.ejs'),_0xd676('0x5b'));var _0x497ebe=ejs[_0xd676('0x5c')](_0xa5e9b9,{'networks':_0x2bf983||[]});fs[_0xd676('0x5d')]('/etc/asterisk/turn_xcally.conf',_0x497ebe);return respondWithRpcPromise(_0xd676('0x5e'),_0xd676('0x6b'),{'module':_0xd676('0x5f')});}else{var _0x43d143=fs[_0xd676('0x58')](path[_0xd676('0x59')](config[_0xd676('0x61')],'server/files/templates/network.ejs'),_0xd676('0x5b'));var _0x5d7c80=ejs[_0xd676('0x5c')](_0x43d143,{'networks':_0x2bf983||[]});fs['writeFileSync'](util[_0xd676('0x64')](_0xd676('0x65'),_0x4d857f['body'][_0xd676('0x3b')][_0xd676('0x67')]()),_0x5d7c80);return respondWithRpcPromise(_0xd676('0x5e'),_0xd676('0x6b'),{'module':_0xd676('0x68')});}return null;})[_0xd676('0x27')](handleError(_0x9558f4,null));};
\ No newline at end of file
+var _0x661a=['toUpperCase','TURN','writeFileSync','/etc/asterisk/turn_xcally.conf','res_stun_monitor.so','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','find','server/files/templates/stun_multiple.ejs','server/files/templates/turn_multiple.ejs','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','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/utils','../../config/environment','../../config/license/util','../../mysqldb','http','request','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','destroy','stack','name','send','index','Network','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','sort','pick','filter','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','length','merge','create','sequelize','transaction','body','STUN','readFileSync','join','root','utf8','render','/etc/asterisk/stun_xcally.conf','Reload'];(function(_0x478984,_0x3c1e96){var _0x599f33=function(_0xf3abce){while(--_0xf3abce){_0x478984['push'](_0x478984['shift']());}};_0x599f33(++_0x3c1e96);}(_0x661a,0x1c9));var _0xa661=function(_0x4314d7,_0x355218){_0x4314d7=_0x4314d7-0x0;var _0x5c599b=_0x661a[_0x4314d7];return _0x5c599b;};'use strict';var emlformat=require(_0xa661('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa661('0x1'));var jsonpatch=require(_0xa661('0x2'));var rp=require(_0xa661('0x3'));var moment=require('moment');var BPromise=require(_0xa661('0x4'));var Mustache=require(_0xa661('0x5'));var util=require(_0xa661('0x6'));var path=require('path');var sox=require(_0xa661('0x7'));var csv=require('to-csv');var ejs=require(_0xa661('0x8'));var fs=require('fs');var fs_extra=require(_0xa661('0x9'));var _=require(_0xa661('0xa'));var squel=require(_0xa661('0xb'));var crypto=require(_0xa661('0xc'));var jsforce=require(_0xa661('0xd'));var deskjs=require(_0xa661('0xe'));var toCsv=require('to-csv');var querystring=require(_0xa661('0xf'));var Papa=require('papaparse');var Redis=require(_0xa661('0x10'));var authService=require(_0xa661('0x11'));var qs=require(_0xa661('0x12'));var as=require(_0xa661('0x13'));var hardwareService=require(_0xa661('0x14'));var logger=require(_0xa661('0x15'))(_0xa661('0x16'));var utils=require(_0xa661('0x17'));var config=require(_0xa661('0x18'));var licenseUtil=require(_0xa661('0x19'));var db=require(_0xa661('0x1a'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0xa661('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x3033e4,_0x46e634,_0x5882ef,_0x4f756a){return new BPromise(function(_0x319b82,_0x3e7ed7){var _0x1b11b2=_0x4f756a||client;return _0x1b11b2[_0xa661('0x1c')](_0x3033e4,_0x5882ef)[_0xa661('0x1d')](function(_0x282002){logger[_0xa661('0x1e')](_0xa661('0x1f'),_0x46e634,_0xa661('0x20'));logger[_0xa661('0x21')](_0xa661('0x22'),_0x46e634,_0xa661('0x20'),JSON[_0xa661('0x23')](_0x282002));if(_0x282002[_0xa661('0x24')]){if(_0x282002['error'][_0xa661('0x25')]===0x1f4){logger[_0xa661('0x24')](_0xa661('0x1f'),_0x46e634,_0x282002[_0xa661('0x24')]['message']);return _0x3e7ed7(_0x282002[_0xa661('0x24')]['message']);}logger[_0xa661('0x24')]('Network,\x20%s,\x20%s',_0x46e634,_0x282002[_0xa661('0x24')]['message']);return _0x319b82(_0x282002[_0xa661('0x24')][_0xa661('0x26')]);}else{logger[_0xa661('0x1e')](_0xa661('0x1f'),_0x46e634,'request\x20sent');_0x319b82(_0x282002[_0xa661('0x27')][_0xa661('0x26')]);}})['catch'](function(_0x2890a5){logger[_0xa661('0x24')]('Network,\x20%s,\x20%s',_0x46e634,_0x2890a5);_0x3e7ed7(_0x2890a5);});});}function respondWithStatusCode(_0x405e46,_0x4b06bf){_0x4b06bf=_0x4b06bf||0xcc;return function(_0x51b69a){if(_0x51b69a){return _0x405e46[_0xa661('0x28')](_0x4b06bf);}return _0x405e46[_0xa661('0x29')](_0x4b06bf)[_0xa661('0x2a')]();};}function respondWithResult(_0x4bf9ef,_0x11b6f2){_0x11b6f2=_0x11b6f2||0xc8;return function(_0x479577){if(_0x479577){return _0x4bf9ef[_0xa661('0x29')](_0x11b6f2)[_0xa661('0x2b')](_0x479577);}};}function respondWithFilteredResult(_0x3715a9,_0x2d275b){return function(_0x954273){if(_0x954273){var _0x31ee05=typeof _0x2d275b[_0xa661('0x2c')]===_0xa661('0x2d')&&typeof _0x2d275b['limit']===_0xa661('0x2d');var _0xae3203=_0x954273[_0xa661('0x2e')];var _0x165413=_0x31ee05?0x0:_0x2d275b['offset'];var _0x2e61ba=_0x31ee05?_0x954273[_0xa661('0x2e')]:_0x2d275b[_0xa661('0x2c')]+_0x2d275b[_0xa661('0x2f')];var _0x86105a;if(_0x2e61ba>=_0xae3203){_0x2e61ba=_0xae3203;_0x86105a=0xc8;}else{_0x86105a=0xce;}_0x3715a9['status'](_0x86105a);return _0x3715a9[_0xa661('0x30')](_0xa661('0x31'),_0x165413+'-'+_0x2e61ba+'/'+_0xae3203)[_0xa661('0x2b')](_0x954273);}return null;};}function patchUpdates(_0x33bf85){return function(_0xdb0cbc){try{jsonpatch[_0xa661('0x32')](_0xdb0cbc,_0x33bf85,!![]);}catch(_0x31ef0b){return BPromise['reject'](_0x31ef0b);}return _0xdb0cbc[_0xa661('0x33')]();};}function saveUpdates(_0x575b7f,_0x4e1b44){return function(_0x25f680){if(_0x25f680){return _0x25f680[_0xa661('0x34')](_0x575b7f)[_0xa661('0x1d')](function(_0x10cfda){return _0x10cfda;});}return null;};}function removeEntity(_0x11323a,_0x9d8b1e){return function(_0x51cfa2){if(_0x51cfa2){return _0x51cfa2[_0xa661('0x35')]()[_0xa661('0x1d')](function(){_0x11323a[_0xa661('0x29')](0xcc)[_0xa661('0x2a')]();});}};}function handleEntityNotFound(_0x3feb6e,_0x518fdb){return function(_0x4fdf4f){if(!_0x4fdf4f){_0x3feb6e[_0xa661('0x28')](0x194);}return _0x4fdf4f;};}function handleError(_0x41f2d2,_0x207953){_0x207953=_0x207953||0x1f4;return function(_0x25b5e9){logger[_0xa661('0x24')](_0x25b5e9[_0xa661('0x36')]);if(_0x25b5e9[_0xa661('0x37')]){delete _0x25b5e9[_0xa661('0x37')];}_0x41f2d2[_0xa661('0x29')](_0x207953)[_0xa661('0x38')](_0x25b5e9);};}exports[_0xa661('0x39')]=function(_0x5a6d4d,_0x4fa85a){var _0x5a3182={},_0x182748={},_0x1817be={'count':0x0,'rows':[]};var _0x1b52a9=_['map'](db[_0xa661('0x3a')][_0xa661('0x3b')],function(_0xa59891){return{'name':_0xa59891[_0xa661('0x3c')],'type':_0xa59891[_0xa661('0x3d')][_0xa661('0x3e')]};});_0x182748['model']=_['map'](_0x1b52a9,_0xa661('0x37'));_0x182748[_0xa661('0x3f')]=_[_0xa661('0x40')](_0x5a6d4d['query']);_0x182748[_0xa661('0x41')]=_[_0xa661('0x42')](_0x182748[_0xa661('0x43')],_0x182748[_0xa661('0x3f')]);_0x5a3182['attributes']=_[_0xa661('0x42')](_0x182748['model'],qs[_0xa661('0x44')](_0x5a6d4d[_0xa661('0x3f')][_0xa661('0x44')]));_0x5a3182[_0xa661('0x45')]=_0x5a3182[_0xa661('0x45')]['length']?_0x5a3182[_0xa661('0x45')]:_0x182748['model'];if(!_0x5a6d4d[_0xa661('0x3f')][_0xa661('0x46')](_0xa661('0x47'))){_0x5a3182[_0xa661('0x2f')]=qs[_0xa661('0x2f')](_0x5a6d4d[_0xa661('0x3f')][_0xa661('0x2f')]);_0x5a3182[_0xa661('0x2c')]=qs[_0xa661('0x2c')](_0x5a6d4d[_0xa661('0x3f')]['offset']);}_0x5a3182['order']=qs[_0xa661('0x48')](_0x5a6d4d['query'][_0xa661('0x48')]);_0x5a3182['where']=qs[_0xa661('0x41')](_[_0xa661('0x49')](_0x5a6d4d[_0xa661('0x3f')],_0x182748[_0xa661('0x41')]),_0x1b52a9);if(_0x5a6d4d[_0xa661('0x3f')][_0xa661('0x4a')]){_0x5a3182[_0xa661('0x4b')]=_['merge'](_0x5a3182[_0xa661('0x4b')],{'$or':_['map'](_0x1b52a9,function(_0x2bedab){if(_0x2bedab[_0xa661('0x3d')]!==_0xa661('0x4c')){var _0x2209dd={};_0x2209dd[_0x2bedab[_0xa661('0x37')]]={'$like':'%'+_0x5a6d4d[_0xa661('0x3f')]['filter']+'%'};return _0x2209dd;}})});}_0x5a3182=_['merge']({},_0x5a3182,_0x5a6d4d[_0xa661('0x4d')]);var _0x538ff8={'where':_0x5a3182[_0xa661('0x4b')]};return db['Network'][_0xa661('0x2e')](_0x538ff8)[_0xa661('0x1d')](function(_0x1392e3){_0x1817be[_0xa661('0x2e')]=_0x1392e3;if(_0x5a6d4d[_0xa661('0x3f')][_0xa661('0x4e')]){_0x5a3182[_0xa661('0x4f')]=[{'all':!![]}];}return db['Network'][_0xa661('0x50')](_0x5a3182);})[_0xa661('0x1d')](function(_0x5a4b27){_0x1817be[_0xa661('0x51')]=_0x5a4b27;return _0x1817be;})[_0xa661('0x1d')](respondWithFilteredResult(_0x4fa85a,_0x5a3182))[_0xa661('0x52')](handleError(_0x4fa85a,null));};exports['show']=function(_0x221892,_0x3c7a97){var _0x4342c1={'raw':!![],'where':{'id':_0x221892[_0xa661('0x53')]['id']}},_0x364f30={};_0x364f30[_0xa661('0x43')]=_[_0xa661('0x40')](db[_0xa661('0x3a')][_0xa661('0x3b')]);_0x364f30[_0xa661('0x3f')]=_[_0xa661('0x40')](_0x221892[_0xa661('0x3f')]);_0x364f30[_0xa661('0x41')]=_[_0xa661('0x42')](_0x364f30['model'],_0x364f30[_0xa661('0x3f')]);_0x4342c1[_0xa661('0x45')]=_[_0xa661('0x42')](_0x364f30[_0xa661('0x43')],qs[_0xa661('0x44')](_0x221892[_0xa661('0x3f')]['fields']));_0x4342c1[_0xa661('0x45')]=_0x4342c1[_0xa661('0x45')][_0xa661('0x54')]?_0x4342c1[_0xa661('0x45')]:_0x364f30[_0xa661('0x43')];if(_0x221892['query'][_0xa661('0x4e')]){_0x4342c1['include']=[{'all':!![]}];}_0x4342c1=_[_0xa661('0x55')]({},_0x4342c1,_0x221892['options']);return db[_0xa661('0x3a')]['find'](_0x4342c1)['then'](handleEntityNotFound(_0x3c7a97,null))['then'](respondWithResult(_0x3c7a97,null))[_0xa661('0x52')](handleError(_0x3c7a97,null));};exports[_0xa661('0x56')]=function(_0x228a45,_0x3c9ee5,_0x59270d){var _0x4e3b93;return db[_0xa661('0x57')][_0xa661('0x58')](function(_0x34cf5d){return db[_0xa661('0x3a')][_0xa661('0x56')](_0x228a45[_0xa661('0x59')],{'raw':!![]})[_0xa661('0x1d')](function(_0x280a45){_0x4e3b93=_0x280a45;return db[_0xa661('0x3a')][_0xa661('0x50')]({'where':{'type':_0x228a45[_0xa661('0x59')][_0xa661('0x3d')]},'raw':!![]});})[_0xa661('0x1d')](function(_0x4b73ee){if(_0x4e3b93[_0xa661('0x3d')]['toUpperCase']()==_0xa661('0x5a')){var _0x2999b7=fs[_0xa661('0x5b')](path[_0xa661('0x5c')](config[_0xa661('0x5d')],'server/files/templates/stun_multiple.ejs'),_0xa661('0x5e'));var _0x225de2=ejs[_0xa661('0x5f')](_0x2999b7,{'networks':_0x4b73ee||[]});fs['writeFileSync'](_0xa661('0x60'),_0x225de2);return respondWithRpcPromise(_0xa661('0x61'),'create',{'module':'res_stun_monitor.so'});}else if(_0x4e3b93[_0xa661('0x3d')][_0xa661('0x62')]()==_0xa661('0x63')){var _0x3ff1bd=fs[_0xa661('0x5b')](path[_0xa661('0x5c')](config[_0xa661('0x5d')],'server/files/templates/turn_multiple.ejs'),'utf8');var _0xde5e9c=ejs['render'](_0x3ff1bd,{'networks':_0x4b73ee||[]});fs[_0xa661('0x64')](_0xa661('0x65'),_0xde5e9c);return respondWithRpcPromise(_0xa661('0x61'),_0xa661('0x56'),{'module':_0xa661('0x66')});}else{var _0x867df4=fs[_0xa661('0x5b')](path['join'](config['root'],_0xa661('0x67')),_0xa661('0x5e'));var _0x5e25d9=ejs[_0xa661('0x5f')](_0x867df4,{'networks':_0x4b73ee||[]});fs[_0xa661('0x64')](util[_0xa661('0x68')](_0xa661('0x69'),_0x228a45[_0xa661('0x59')][_0xa661('0x3d')][_0xa661('0x6a')]()),_0x5e25d9);return respondWithRpcPromise('Reload',_0xa661('0x56'),{'module':_0xa661('0x6b')});}return null;})[_0xa661('0x1d')](function(){return _0x4e3b93;});})[_0xa661('0x1d')](respondWithResult(_0x3c9ee5,0xc9))[_0xa661('0x52')](handleError(_0x3c9ee5,null));};exports[_0xa661('0x34')]=function(_0xb41f27,_0x3e4cab,_0x3e8c8f){var _0x5a6860;return db['sequelize'][_0xa661('0x58')](function(_0x30cc8d){return db[_0xa661('0x3a')][_0xa661('0x6c')]({'where':{'id':_0xb41f27['params']['id']}})[_0xa661('0x1d')](handleEntityNotFound(_0x3e4cab,null))[_0xa661('0x1d')](saveUpdates(_0xb41f27['body'],null))[_0xa661('0x1d')](function(_0x343de5){if(_0x343de5){_0x5a6860=_0x343de5;return db[_0xa661('0x3a')][_0xa661('0x50')]({'where':{'type':_0x5a6860[_0xa661('0x3d')]},'raw':!![]});}return null;})[_0xa661('0x1d')](function(_0x383580){if(_0x5a6860[_0xa661('0x3d')]['toUpperCase']()==_0xa661('0x5a')){var _0x49276b=fs[_0xa661('0x5b')](path[_0xa661('0x5c')](config[_0xa661('0x5d')],_0xa661('0x6d')),_0xa661('0x5e'));var _0x345f42=ejs[_0xa661('0x5f')](_0x49276b,{'networks':_0x383580||[]});fs[_0xa661('0x64')](_0xa661('0x60'),_0x345f42);return respondWithRpcPromise(_0xa661('0x61'),'update',{'module':'res_stun_monitor.so'});}else if(_0x5a6860['type']['toUpperCase']()==_0xa661('0x63')){var _0x917a65=fs[_0xa661('0x5b')](path[_0xa661('0x5c')](config[_0xa661('0x5d')],'server/files/templates/turn_multiple.ejs'),_0xa661('0x5e'));var _0x1befee=ejs[_0xa661('0x5f')](_0x917a65,{'networks':_0x383580||[]});fs['writeFileSync'](_0xa661('0x65'),_0x1befee);return respondWithRpcPromise('Reload',_0xa661('0x34'),{'module':_0xa661('0x66')});}else{var _0x3f530f=fs[_0xa661('0x5b')](path[_0xa661('0x5c')](config['root'],'server/files/templates/network.ejs'),_0xa661('0x5e'));var _0xf07ccd=ejs['render'](_0x3f530f,{'networks':_0x383580||[]});fs[_0xa661('0x64')](util['format'](_0xa661('0x69'),_0xb41f27[_0xa661('0x59')][_0xa661('0x3d')][_0xa661('0x6a')]()),_0xf07ccd);return respondWithRpcPromise(_0xa661('0x61'),_0xa661('0x34'),{'module':_0xa661('0x6b')});}return null;})[_0xa661('0x1d')](function(_0x54f6cd){if(_0x54f6cd){return _0x5a6860;}return null;});})[_0xa661('0x1d')](respondWithResult(_0x3e4cab,null))[_0xa661('0x52')](handleError(_0x3e4cab,null));};exports[_0xa661('0x35')]=function(_0xe41651,_0x29aa03,_0x2646e8){var _0x566ae1;return db[_0xa661('0x3a')][_0xa661('0x6c')]({'where':{'id':_0xe41651[_0xa661('0x53')]['id']}})[_0xa661('0x1d')](function(_0x2c8db1){_0x566ae1=_0x2c8db1;return _0x2c8db1;})[_0xa661('0x1d')](handleEntityNotFound(_0x29aa03,null))[_0xa661('0x1d')](removeEntity(_0x29aa03,null))['then'](function(){if(_0x566ae1){return db[_0xa661('0x3a')]['findAll']({'where':{'type':_0x566ae1['type']},'raw':!![]});}})[_0xa661('0x1d')](function(_0x5d30d0){if(_0x566ae1[_0xa661('0x3d')]['toUpperCase']()=='STUN'){var _0x1dd3ec=fs[_0xa661('0x5b')](path[_0xa661('0x5c')](config[_0xa661('0x5d')],_0xa661('0x6d')),_0xa661('0x5e'));var _0x46b235=ejs[_0xa661('0x5f')](_0x1dd3ec,{'networks':_0x5d30d0||[]});fs[_0xa661('0x64')]('/etc/asterisk/stun_xcally.conf',_0x46b235);return respondWithRpcPromise('Reload',_0xa661('0x35'),{'module':_0xa661('0x66')});}else if(_0x566ae1[_0xa661('0x3d')][_0xa661('0x62')]()=='TURN'){var _0x52c344=fs['readFileSync'](path[_0xa661('0x5c')](config[_0xa661('0x5d')],_0xa661('0x6e')),_0xa661('0x5e'));var _0x47c7ff=ejs[_0xa661('0x5f')](_0x52c344,{'networks':_0x5d30d0||[]});fs[_0xa661('0x64')](_0xa661('0x65'),_0x47c7ff);return respondWithRpcPromise(_0xa661('0x61'),_0xa661('0x35'),{'module':_0xa661('0x66')});}else{var _0x292cc7=fs[_0xa661('0x5b')](path[_0xa661('0x5c')](config[_0xa661('0x5d')],'server/files/templates/network.ejs'),_0xa661('0x5e'));var _0x4c692e=ejs[_0xa661('0x5f')](_0x292cc7,{'networks':_0x5d30d0||[]});fs[_0xa661('0x64')](util[_0xa661('0x68')]('/etc/asterisk/sip_xcally_%s.conf',_0xe41651[_0xa661('0x59')]['type'][_0xa661('0x6a')]()),_0x4c692e);return respondWithRpcPromise('Reload',_0xa661('0x35'),{'module':_0xa661('0x6b')});}return null;})[_0xa661('0x52')](handleError(_0x29aa03,null));};
\ No newline at end of file
index 0980267..8dc4255 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d9b=['rimraf','./network.attributes','Network','network','util','../../config/logger','moment','request-promise','path'];(function(_0xbcfe5f,_0x4b1da6){var _0x438ad8=function(_0x53379d){while(--_0x53379d){_0xbcfe5f['push'](_0xbcfe5f['shift']());}};_0x438ad8(++_0x4b1da6);}(_0x9d9b,0x1e1));var _0xb9d9=function(_0x52a7e9,_0x5a85a5){_0x52a7e9=_0x52a7e9-0x0;var _0x36d99c=_0x9d9b[_0x52a7e9];return _0x36d99c;};'use strict';var _=require('lodash');var util=require(_0xb9d9('0x0'));var logger=require(_0xb9d9('0x1'))('api');var moment=require(_0xb9d9('0x2'));var BPromise=require('bluebird');var rp=require(_0xb9d9('0x3'));var fs=require('fs');var path=require(_0xb9d9('0x4'));var rimraf=require(_0xb9d9('0x5'));var config=require('../../config/environment');var attributes=require(_0xb9d9('0x6'));module['exports']=function(_0x1b1f3c,_0x32cf18){return _0x1b1f3c['define'](_0xb9d9('0x7'),attributes,{'tableName':_0xb9d9('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5ec6=['network','lodash','util','../../config/logger','moment','request-promise','rimraf','./network.attributes','Network'];(function(_0x29352f,_0x458a13){var _0x217e89=function(_0x54ec85){while(--_0x54ec85){_0x29352f['push'](_0x29352f['shift']());}};_0x217e89(++_0x458a13);}(_0x5ec6,0x7f));var _0x65ec=function(_0x3592cb,_0x3b1ca3){_0x3592cb=_0x3592cb-0x0;var _0x1ec291=_0x5ec6[_0x3592cb];return _0x1ec291;};'use strict';var _=require(_0x65ec('0x0'));var util=require(_0x65ec('0x1'));var logger=require(_0x65ec('0x2'))('api');var moment=require(_0x65ec('0x3'));var BPromise=require('bluebird');var rp=require(_0x65ec('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x65ec('0x5'));var config=require('../../config/environment');var attributes=require(_0x65ec('0x6'));module['exports']=function(_0x2fc973,_0xbb2e56){return _0x2fc973['define'](_0x65ec('0x7'),attributes,{'tableName':_0x65ec('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 055b71a..957bd24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x7a54,0x106));var _0x47a5=function(_0x578509,_0x2b20ac){_0x578509=_0x578509-0x0;var _0xfb7ebe=_0x7a54[_0x578509];return _0xfb7ebe;};'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
+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(_0x154257,_0x4bd86b){var _0x2bac70=function(_0x22cdcc){while(--_0x22cdcc){_0x154257['push'](_0x154257['shift']());}};_0x2bac70(++_0x4bd86b);}(_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 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
index dc44e9c..2914705 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd86c=['../../components/interaction/service','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','/:id/canned_answers','getAnswers','getApplications','getInteractions','/:id/users','post','create','addDisposition','addAnswer','/:id/notify','notify','/:id/send','send','put','update','destroy','delete','removeDispositions','exports','multer','util','connect-timeout','Router','fs-extra'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xd86c,0x64));var _0xcd86=function(_0x3203a1,_0x46c498){_0x3203a1=_0x3203a1-0x0;var _0x24215e=_0xd86c[_0x3203a1];return _0x24215e;};'use strict';var multer=require(_0xcd86('0x0'));var util=require(_0xcd86('0x1'));var path=require('path');var timeout=require(_0xcd86('0x2'));var express=require('express');var router=express[_0xcd86('0x3')]();var fs_extra=require(_0xcd86('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xcd86('0x5'));var config=require(_0xcd86('0x6'));var controller=require(_0xcd86('0x7'));router[_0xcd86('0x8')]('/',auth[_0xcd86('0x9')](),controller[_0xcd86('0xa')]);router['get'](_0xcd86('0xb'),auth[_0xcd86('0x9')](),controller[_0xcd86('0xc')]);router[_0xcd86('0x8')](_0xcd86('0xd'),auth['isAuthenticated'](),controller[_0xcd86('0xe')]);router[_0xcd86('0x8')](_0xcd86('0xf'),auth[_0xcd86('0x9')](),controller['getDispositions']);router['get'](_0xcd86('0x10'),auth[_0xcd86('0x9')](),controller[_0xcd86('0x11')]);router[_0xcd86('0x8')]('/:id/applications',auth[_0xcd86('0x9')](),controller[_0xcd86('0x12')]);router[_0xcd86('0x8')]('/:id/interactions',auth[_0xcd86('0x9')](),controller[_0xcd86('0x13')]);router[_0xcd86('0x8')](_0xcd86('0x14'),auth[_0xcd86('0x9')](),controller['getAgents']);router[_0xcd86('0x15')]('/',auth[_0xcd86('0x9')](),controller[_0xcd86('0x16')]);router[_0xcd86('0x15')](_0xcd86('0xf'),auth[_0xcd86('0x9')](),controller[_0xcd86('0x17')]);router[_0xcd86('0x15')]('/:id/canned_answers',auth[_0xcd86('0x9')](),controller[_0xcd86('0x18')]);router[_0xcd86('0x15')](_0xcd86('0x19'),controller[_0xcd86('0x1a')]);router[_0xcd86('0x15')]('/:id/applications',auth['isAuthenticated'](),controller['addApplications']);router[_0xcd86('0x15')](_0xcd86('0x14'),auth['isAuthenticated'](),controller['addAgents']);router['post'](_0xcd86('0x1b'),auth[_0xcd86('0x9')](),controller[_0xcd86('0x1c')]);router[_0xcd86('0x1d')](_0xcd86('0xd'),auth[_0xcd86('0x9')](),controller[_0xcd86('0x1e')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xcd86('0x1f')]);router[_0xcd86('0x20')](_0xcd86('0xf'),auth[_0xcd86('0x9')](),controller[_0xcd86('0x21')]);router[_0xcd86('0x20')](_0xcd86('0x10'),auth[_0xcd86('0x9')](),controller['removeAnswers']);router['delete']('/:id/users',auth[_0xcd86('0x9')](),controller['removeAgents']);module[_0xcd86('0x22')]=router;
\ No newline at end of file
+var _0x9059=['../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','getApplications','/:id/interactions','getInteractions','getAgents','create','post','addDisposition','/:id/notify','addApplications','addAgents','/:id/send','send','put','update','delete','destroy','removeAnswers','/:id/users','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x2c8328,_0x21548a){var _0x10a892=function(_0xf5c587){while(--_0xf5c587){_0x2c8328['push'](_0x2c8328['shift']());}};_0x10a892(++_0x21548a);}(_0x9059,0x77));var _0x9905=function(_0x4abb36,_0x22c779){_0x4abb36=_0x4abb36-0x0;var _0xd32caf=_0x9059[_0x4abb36];return _0xd32caf;};'use strict';var multer=require(_0x9905('0x0'));var util=require(_0x9905('0x1'));var path=require(_0x9905('0x2'));var timeout=require(_0x9905('0x3'));var express=require(_0x9905('0x4'));var router=express[_0x9905('0x5')]();var fs_extra=require(_0x9905('0x6'));var auth=require(_0x9905('0x7'));var interaction=require(_0x9905('0x8'));var config=require(_0x9905('0x9'));var controller=require(_0x9905('0xa'));router[_0x9905('0xb')]('/',auth[_0x9905('0xc')](),controller[_0x9905('0xd')]);router['get'](_0x9905('0xe'),auth[_0x9905('0xc')](),controller[_0x9905('0xf')]);router[_0x9905('0xb')](_0x9905('0x10'),auth['isAuthenticated'](),controller[_0x9905('0x11')]);router[_0x9905('0xb')](_0x9905('0x12'),auth[_0x9905('0xc')](),controller[_0x9905('0x13')]);router[_0x9905('0xb')](_0x9905('0x14'),auth[_0x9905('0xc')](),controller[_0x9905('0x15')]);router[_0x9905('0xb')]('/:id/applications',auth[_0x9905('0xc')](),controller[_0x9905('0x16')]);router['get'](_0x9905('0x17'),auth[_0x9905('0xc')](),controller[_0x9905('0x18')]);router[_0x9905('0xb')]('/:id/users',auth[_0x9905('0xc')](),controller[_0x9905('0x19')]);router['post']('/',auth[_0x9905('0xc')](),controller[_0x9905('0x1a')]);router[_0x9905('0x1b')](_0x9905('0x12'),auth[_0x9905('0xc')](),controller[_0x9905('0x1c')]);router[_0x9905('0x1b')](_0x9905('0x14'),auth['isAuthenticated'](),controller['addAnswer']);router[_0x9905('0x1b')](_0x9905('0x1d'),controller['notify']);router['post']('/:id/applications',auth['isAuthenticated'](),controller[_0x9905('0x1e')]);router['post']('/:id/users',auth['isAuthenticated'](),controller[_0x9905('0x1f')]);router[_0x9905('0x1b')](_0x9905('0x20'),auth[_0x9905('0xc')](),controller[_0x9905('0x21')]);router[_0x9905('0x22')](_0x9905('0x10'),auth[_0x9905('0xc')](),controller[_0x9905('0x23')]);router[_0x9905('0x24')](_0x9905('0x10'),auth['isAuthenticated'](),controller[_0x9905('0x25')]);router[_0x9905('0x24')](_0x9905('0x12'),auth[_0x9905('0xc')](),controller['removeDispositions']);router[_0x9905('0x24')]('/:id/canned_answers',auth[_0x9905('0xc')](),controller[_0x9905('0x26')]);router['delete'](_0x9905('0x27'),auth[_0x9905('0xc')](),controller[_0x9905('0x28')]);module[_0x9905('0x29')]=router;
\ No newline at end of file
index 445e87f..422d721 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f94=['INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','STRING','generate','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN'];(function(_0x5cb1af,_0x4bdc8c){var _0x8d7940=function(_0x3db70a){while(--_0x3db70a){_0x5cb1af['push'](_0x5cb1af['shift']());}};_0x8d7940(++_0x4bdc8c);}(_0x8f94,0x6d));var _0x48f9=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x8f94[_0x2f5ac5];return _0x37c9a8;};'use strict';var Sequelize=require(_0x48f9('0x0'));var rs=require(_0x48f9('0x1'));module[_0x48f9('0x2')]={'name':{'type':Sequelize[_0x48f9('0x3')],'unique':'name','allowNull':![]},'description':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x48f9('0x3')],'defaultValue':function(){return rs[_0x48f9('0x4')]();}},'replyUri':{'type':Sequelize[_0x48f9('0x3')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x48f9('0x3')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x48f9('0x5')],'defaultValue':function(){return _0x48f9('0x6');}},'notificationSound':{'type':Sequelize[_0x48f9('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x48f9('0x7')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x48f9('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x48f9('0x3')]},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x48f9('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x48f9('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x48f9('0x8')],'allowNull':!![],'defaultValue':null,'comment':_0x48f9('0x9')},'mandatoryDisposition':{'type':Sequelize[_0x48f9('0x7')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x3512cf){if(!_0x3512cf)this[_0x48f9('0xa')](_0x48f9('0xb'),null);this[_0x48f9('0xa')](_0x48f9('0xc'),_0x3512cf);}}};
\ No newline at end of file
+var _0x0663=['exports','STRING','generate','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','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','sequelize','randomstring'];(function(_0x17a114,_0xdc8a5c){var _0x9fd649=function(_0x5f5452){while(--_0x5f5452){_0x17a114['push'](_0x17a114['shift']());}};_0x9fd649(++_0xdc8a5c);}(_0x0663,0x18a));var _0x3066=function(_0xf9e67a,_0x55be97){_0xf9e67a=_0xf9e67a-0x0;var _0x30e578=_0x0663[_0xf9e67a];return _0x30e578;};'use strict';var Sequelize=require(_0x3066('0x0'));var rs=require(_0x3066('0x1'));module[_0x3066('0x2')]={'name':{'type':Sequelize[_0x3066('0x3')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0x3066('0x3')]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x3066('0x4')]();}},'replyUri':{'type':Sequelize['STRING'],'validate':{'isUrl':!![]}},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x3066('0x5')],'defaultValue':function(){return _0x3066('0x6');}},'notificationSound':{'type':Sequelize[_0x3066('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x3066('0x7')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x3066('0x3')]},'queueTransfer':{'type':Sequelize[_0x3066('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x3066('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x3066('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x3066('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x3066('0x8')],'allowNull':!![],'defaultValue':null,'comment':_0x3066('0x9')},'mandatoryDisposition':{'type':Sequelize[_0x3066('0x7')],'defaultValue':![],'comment':_0x3066('0xa'),'set':function(_0x6d7afb){if(!_0x6d7afb)this[_0x3066('0xb')]('mandatoryDispositionPauseId',null);this['setDataValue']('mandatoryDisposition',_0x6d7afb);}}};
\ No newline at end of file
index 9b4fcf7..b6298a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca3a=['findAndCountAll','priority','getApplications','hasOwnProperty','getInteractions','Contact','Owner','fullname','internal','Tags','color','tag','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','userOpenchannelAccount:remove','getAgents','CmList','ListId','out','OpenchannelMessage','Messages','dataValues','push','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./openchannelAccount.socket','register','client','http','then','info','OpenchannelAccount,\x20%s,\x20%s','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','error','message','request\x20sent','result','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','OpenchannelAccounts','UserProfileResource','destroy','name','send','index','Pause','map','OpenchannelAccount','rawAttributes','fieldName','type','key','keys','query','intersection','model','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','mandatoryDispositionPause','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','params','describe','addDisposition','Disposition','OpenchannelAccountId','rows','ids','CannedAnswer','getAnswers','findOne','removeAnswers','notify','openchannel','CmContact','no\x20available\x20attributes','difference','createdAt','updatedAt','isNil','ValidationError','from\x20is\x20mandatory','Sequelize','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','OpenchannelApplication','account','applications','Applications','orderBy','asc','from','contact','firstName','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','messageId','created','close','unmanaged','*,*,*,*','AttachmentId','interaction','UserId','User','agent','forcedOwnership','Start','startRouting','EventManager','sequelize','transaction'];(function(_0x1e44d7,_0xfa6db6){var _0x421265=function(_0x5e264b){while(--_0x5e264b){_0x1e44d7['push'](_0x1e44d7['shift']());}};_0x421265(++_0xfa6db6);}(_0xca3a,0xcf));var _0xaca3=function(_0x41d7b3,_0x346ba4){_0x41d7b3=_0x41d7b3-0x0;var _0x3e53bb=_0xca3a[_0x41d7b3];return _0x3e53bb;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xaca3('0x0'));var jsonpatch=require(_0xaca3('0x1'));var rp=require('request-promise');var moment=require(_0xaca3('0x2'));var BPromise=require(_0xaca3('0x3'));var Mustache=require('mustache');var util=require(_0xaca3('0x4'));var path=require(_0xaca3('0x5'));var sox=require(_0xaca3('0x6'));var csv=require(_0xaca3('0x7'));var ejs=require(_0xaca3('0x8'));var fs=require('fs');var fs_extra=require(_0xaca3('0x9'));var _=require('lodash');var squel=require(_0xaca3('0xa'));var crypto=require('crypto');var jsforce=require(_0xaca3('0xb'));var deskjs=require(_0xaca3('0xc'));var toCsv=require(_0xaca3('0x7'));var querystring=require(_0xaca3('0xd'));var Papa=require('papaparse');var Redis=require(_0xaca3('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xaca3('0xf'));var as=require(_0xaca3('0x10'));var hardwareService=require(_0xaca3('0x11'));var logger=require(_0xaca3('0x12'))('api');var utils=require(_0xaca3('0x13'));var config=require(_0xaca3('0x14'));var licenseUtil=require(_0xaca3('0x15'));var db=require(_0xaca3('0x16'))['db'];config[_0xaca3('0x17')]=_[_0xaca3('0x18')](config['redis'],{'host':_0xaca3('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xaca3('0x17')]));require(_0xaca3('0x1a'))[_0xaca3('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson[_0xaca3('0x1c')]['http']({'port':0x232c});var client9002=jayson[_0xaca3('0x1c')][_0xaca3('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x4016e6,_0x2a144e,_0x16bb8f,_0x319e04){return new BPromise(function(_0x14a477,_0xfb067d){var _0x4cfcdc=_0x319e04||client;return _0x4cfcdc['request'](_0x4016e6,_0x16bb8f)[_0xaca3('0x1e')](function(_0x788d9f){logger[_0xaca3('0x1f')](_0xaca3('0x20'),_0x2a144e,'request\x20sent');logger[_0xaca3('0x21')](_0xaca3('0x22'),_0x2a144e,'request\x20sent',JSON['stringify'](_0x788d9f));if(_0x788d9f[_0xaca3('0x23')]){if(_0x788d9f[_0xaca3('0x23')]['code']===0x1f4){logger[_0xaca3('0x23')](_0xaca3('0x20'),_0x2a144e,_0x788d9f['error'][_0xaca3('0x24')]);return _0xfb067d(_0x788d9f[_0xaca3('0x23')][_0xaca3('0x24')]);}logger[_0xaca3('0x23')]('OpenchannelAccount,\x20%s,\x20%s',_0x2a144e,_0x788d9f[_0xaca3('0x23')]['message']);return _0x14a477(_0x788d9f['error'][_0xaca3('0x24')]);}else{logger[_0xaca3('0x1f')]('OpenchannelAccount,\x20%s,\x20%s',_0x2a144e,_0xaca3('0x25'));_0x14a477(_0x788d9f[_0xaca3('0x26')][_0xaca3('0x24')]);}})[_0xaca3('0x27')](function(_0x3b4c53){logger[_0xaca3('0x23')](_0xaca3('0x20'),_0x2a144e,_0x3b4c53);_0xfb067d(_0x3b4c53);});});}function respondWithStatusCode(_0x3387f8,_0x57127a){_0x57127a=_0x57127a||0xcc;return function(_0x264bb5){if(_0x264bb5){return _0x3387f8[_0xaca3('0x28')](_0x57127a);}return _0x3387f8[_0xaca3('0x29')](_0x57127a)[_0xaca3('0x2a')]();};}function respondWithResult(_0x3f6e6d,_0x282b3d){_0x282b3d=_0x282b3d||0xc8;return function(_0x3c39a5){if(_0x3c39a5){return _0x3f6e6d[_0xaca3('0x29')](_0x282b3d)['json'](_0x3c39a5);}};}function respondWithFilteredResult(_0x3e43cf,_0x5b3cc4){return function(_0x259cf4){if(_0x259cf4){var _0xa2ce66=typeof _0x5b3cc4[_0xaca3('0x2b')]===_0xaca3('0x2c')&&typeof _0x5b3cc4[_0xaca3('0x2d')]==='undefined';var _0x2cb08e=_0x259cf4[_0xaca3('0x2e')];var _0x4d8b48=_0xa2ce66?0x0:_0x5b3cc4[_0xaca3('0x2b')];var _0xef8dbd=_0xa2ce66?_0x259cf4['count']:_0x5b3cc4[_0xaca3('0x2b')]+_0x5b3cc4[_0xaca3('0x2d')];var _0x8a40f;if(_0xef8dbd>=_0x2cb08e){_0xef8dbd=_0x2cb08e;_0x8a40f=0xc8;}else{_0x8a40f=0xce;}_0x3e43cf['status'](_0x8a40f);return _0x3e43cf[_0xaca3('0x2f')](_0xaca3('0x30'),_0x4d8b48+'-'+_0xef8dbd+'/'+_0x2cb08e)['json'](_0x259cf4);}return null;};}function patchUpdates(_0x480038){return function(_0x593486){try{jsonpatch[_0xaca3('0x31')](_0x593486,_0x480038,!![]);}catch(_0x5f1cdc){return BPromise[_0xaca3('0x32')](_0x5f1cdc);}return _0x593486[_0xaca3('0x33')]();};}function saveUpdates(_0x22db02,_0x28b54f){return function(_0x387bb3){if(_0x387bb3){return _0x387bb3[_0xaca3('0x34')](_0x22db02)[_0xaca3('0x1e')](function(_0x1876b3){return _0x1876b3;});}return null;};}function removeEntity(_0xdf5a04,_0x43c27e){return function(_0x28815b){if(_0x28815b){return _0x28815b['destroy']()['then'](function(){var _0x2ad678=_0x28815b['get']({'plain':!![]});var _0x1df6d7=_0xaca3('0x35');return db[_0xaca3('0x36')][_0xaca3('0x37')]({'where':{'type':_0x1df6d7,'resourceId':_0x2ad678['id']}})[_0xaca3('0x1e')](function(){return _0x28815b;});})[_0xaca3('0x1e')](function(){_0xdf5a04[_0xaca3('0x29')](0xcc)[_0xaca3('0x2a')]();});}};}function handleEntityNotFound(_0x2d93e4,_0xb18bcb){return function(_0x218e78){if(!_0x218e78){_0x2d93e4[_0xaca3('0x28')](0x194);}return _0x218e78;};}function handleError(_0x2f0c65,_0x476b06){_0x476b06=_0x476b06||0x1f4;return function(_0x5eedc2){logger[_0xaca3('0x23')](_0x5eedc2['stack']);if(_0x5eedc2[_0xaca3('0x38')]){delete _0x5eedc2[_0xaca3('0x38')];}_0x2f0c65[_0xaca3('0x29')](_0x476b06)[_0xaca3('0x39')](_0x5eedc2);};}exports[_0xaca3('0x3a')]=function(_0x3b7edb,_0x121829){var _0x414403={'include':[{'model':db[_0xaca3('0x3b')],'as':'mandatoryDispositionPause'}]},_0x431c19={},_0x1add7d={'count':0x0,'rows':[]};var _0x2669e3=_[_0xaca3('0x3c')](db[_0xaca3('0x3d')][_0xaca3('0x3e')],function(_0x14e637){return{'name':_0x14e637[_0xaca3('0x3f')],'type':_0x14e637[_0xaca3('0x40')][_0xaca3('0x41')]};});_0x431c19['model']=_[_0xaca3('0x3c')](_0x2669e3,_0xaca3('0x38'));_0x431c19['query']=_[_0xaca3('0x42')](_0x3b7edb[_0xaca3('0x43')]);_0x431c19['filters']=_[_0xaca3('0x44')](_0x431c19[_0xaca3('0x45')],_0x431c19[_0xaca3('0x43')]);_0x414403[_0xaca3('0x46')]=_['intersection'](_0x431c19[_0xaca3('0x45')],qs[_0xaca3('0x47')](_0x3b7edb[_0xaca3('0x43')]['fields']));_0x414403['attributes']=_0x414403[_0xaca3('0x46')][_0xaca3('0x48')]?_0x414403[_0xaca3('0x46')]:_0x431c19[_0xaca3('0x45')];if(!_0x3b7edb[_0xaca3('0x43')]['hasOwnProperty'](_0xaca3('0x49'))){_0x414403[_0xaca3('0x2d')]=qs[_0xaca3('0x2d')](_0x3b7edb['query'][_0xaca3('0x2d')]);_0x414403['offset']=qs['offset'](_0x3b7edb[_0xaca3('0x43')][_0xaca3('0x2b')]);}_0x414403[_0xaca3('0x4a')]=qs[_0xaca3('0x4b')](_0x3b7edb[_0xaca3('0x43')][_0xaca3('0x4b')]);_0x414403[_0xaca3('0x4c')]=qs[_0xaca3('0x4d')](_[_0xaca3('0x4e')](_0x3b7edb[_0xaca3('0x43')],_0x431c19[_0xaca3('0x4d')]),_0x2669e3);if(_0x3b7edb[_0xaca3('0x43')][_0xaca3('0x4f')]){_0x414403[_0xaca3('0x4c')]=_[_0xaca3('0x50')](_0x414403[_0xaca3('0x4c')],{'$or':_['map'](_0x2669e3,function(_0x56950c){if(_0x56950c['type']!==_0xaca3('0x51')){var _0x8c4847={};_0x8c4847[_0x56950c[_0xaca3('0x38')]]={'$like':'%'+_0x3b7edb[_0xaca3('0x43')]['filter']+'%'};return _0x8c4847;}})});}_0x414403=_['merge']({},_0x414403,_0x3b7edb[_0xaca3('0x52')]);var _0x428a23={'where':_0x414403[_0xaca3('0x4c')]};return db[_0xaca3('0x3d')][_0xaca3('0x2e')](_0x428a23)[_0xaca3('0x1e')](function(_0x3700fc){_0x1add7d[_0xaca3('0x2e')]=_0x3700fc;if(_0x3b7edb[_0xaca3('0x43')][_0xaca3('0x53')]){_0x414403[_0xaca3('0x54')]=[{'all':!![]}];}return db[_0xaca3('0x3d')][_0xaca3('0x55')](_0x414403);})[_0xaca3('0x1e')](function(_0x6dd4b4){_0x1add7d['rows']=_0x6dd4b4;return _0x1add7d;})[_0xaca3('0x1e')](respondWithFilteredResult(_0x121829,_0x414403))[_0xaca3('0x27')](handleError(_0x121829,null));};exports['show']=function(_0x1b0c6d,_0x2e95fa){var _0x4213f0={'raw':![],'where':{'id':_0x1b0c6d['params']['id']},'include':[{'model':db[_0xaca3('0x3b')],'as':_0xaca3('0x56')}]},_0x12e4c3={};_0x12e4c3['model']=_['keys'](db['OpenchannelAccount'][_0xaca3('0x3e')]);_0x12e4c3['query']=_['keys'](_0x1b0c6d[_0xaca3('0x43')]);_0x12e4c3[_0xaca3('0x4d')]=_['intersection'](_0x12e4c3[_0xaca3('0x45')],_0x12e4c3[_0xaca3('0x43')]);_0x4213f0[_0xaca3('0x46')]=_['intersection'](_0x12e4c3[_0xaca3('0x45')],qs['fields'](_0x1b0c6d[_0xaca3('0x43')][_0xaca3('0x47')]));_0x4213f0['attributes']=_0x4213f0[_0xaca3('0x46')][_0xaca3('0x48')]?_0x4213f0[_0xaca3('0x46')]:_0x12e4c3[_0xaca3('0x45')];if(_0x1b0c6d[_0xaca3('0x43')]['includeAll']){_0x4213f0[_0xaca3('0x54')]=[{'all':!![]}];}_0x4213f0=_[_0xaca3('0x50')]({},_0x4213f0,_0x1b0c6d[_0xaca3('0x52')]);return db[_0xaca3('0x3d')][_0xaca3('0x57')](_0x4213f0)[_0xaca3('0x1e')](handleEntityNotFound(_0x2e95fa,null))['then'](respondWithResult(_0x2e95fa,null))['catch'](handleError(_0x2e95fa,null));};exports['create']=function(_0x4a12a8,_0x32a285){return db[_0xaca3('0x3d')][_0xaca3('0x58')](_0x4a12a8[_0xaca3('0x59')],{})[_0xaca3('0x1e')](function(_0x3fb8ba){var _0x4d7c7f=_0x4a12a8[_0xaca3('0x5a')][_0xaca3('0x5b')]({'plain':!![]});if(!_0x4d7c7f)throw new Error(_0xaca3('0x5c'));if(_0x4d7c7f[_0xaca3('0x5d')]===_0xaca3('0x5a')){var _0x6b0140=_0x3fb8ba['get']({'plain':!![]});var _0x38914b=_0xaca3('0x35');return db[_0xaca3('0x5e')][_0xaca3('0x57')]({'where':{'name':_0x38914b,'userProfileId':_0x4d7c7f['userProfileId']},'raw':!![]})['then'](function(_0x24a15f){if(_0x24a15f&&_0x24a15f['autoAssociation']===0x0){return db[_0xaca3('0x36')][_0xaca3('0x58')]({'name':_0x6b0140[_0xaca3('0x38')],'resourceId':_0x6b0140['id'],'type':_0x24a15f[_0xaca3('0x38')],'sectionId':_0x24a15f['id']},{})[_0xaca3('0x1e')](function(){return _0x3fb8ba;});}else{return _0x3fb8ba;}})[_0xaca3('0x27')](function(_0x2b7c03){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2b7c03);throw _0x2b7c03;});}return _0x3fb8ba;})['then'](respondWithResult(_0x32a285,0xc9))[_0xaca3('0x27')](handleError(_0x32a285,null));};exports[_0xaca3('0x34')]=function(_0x264546,_0x5739ba){if(_0x264546[_0xaca3('0x59')]['id']){delete _0x264546[_0xaca3('0x59')]['id'];}return db[_0xaca3('0x3d')]['find']({'where':{'id':_0x264546['params']['id']},'include':[{'model':db['Pause'],'as':_0xaca3('0x56')}]})[_0xaca3('0x1e')](handleEntityNotFound(_0x5739ba,null))[_0xaca3('0x1e')](saveUpdates(_0x264546[_0xaca3('0x59')],null))[_0xaca3('0x1e')](respondWithResult(_0x5739ba,null))[_0xaca3('0x27')](handleError(_0x5739ba,null));};exports[_0xaca3('0x37')]=function(_0x5ec3aa,_0x1d6af5){return db['OpenchannelAccount'][_0xaca3('0x57')]({'where':{'id':_0x5ec3aa[_0xaca3('0x5f')]['id']}})[_0xaca3('0x1e')](handleEntityNotFound(_0x1d6af5,null))[_0xaca3('0x1e')](removeEntity(_0x1d6af5,null))[_0xaca3('0x27')](handleError(_0x1d6af5,null));};exports[_0xaca3('0x60')]=function(_0x5ba1de,_0x580bbc){return db['OpenchannelAccount'][_0xaca3('0x60')]()[_0xaca3('0x1e')](respondWithResult(_0x580bbc,null))[_0xaca3('0x27')](handleError(_0x580bbc,null));};exports[_0xaca3('0x61')]=function(_0x1996ff,_0x3ea55c,_0x2ce8da){if(_0x1996ff[_0xaca3('0x59')]['id']){delete _0x1996ff['body']['id'];}return db[_0xaca3('0x3d')][_0xaca3('0x57')]({'where':{'id':_0x1996ff['params']['id']}})[_0xaca3('0x1e')](handleEntityNotFound(_0x3ea55c,null))['then'](function(_0x3394a1){if(_0x3394a1){_0x1996ff[_0xaca3('0x59')]['OpenchannelAccountId']=_0x3394a1['id'];return db['Disposition'][_0xaca3('0x58')](_0x1996ff['body']);}})[_0xaca3('0x1e')](respondWithResult(_0x3ea55c,null))[_0xaca3('0x27')](handleError(_0x3ea55c,null));};exports['getDispositions']=function(_0x595a89,_0x4eaa90,_0x416d61){var _0xc4e021={'raw':![],'where':{}};var _0x1c8d7e={};var _0x52d431={'count':0x0,'rows':[]};return db[_0xaca3('0x3d')]['findOne']({'where':{'id':_0x595a89[_0xaca3('0x5f')]['id']}})[_0xaca3('0x1e')](handleEntityNotFound(_0x4eaa90,null))[_0xaca3('0x1e')](function(_0x2ef9a8){if(_0x2ef9a8){_0x1c8d7e['model']=_['keys'](db[_0xaca3('0x62')][_0xaca3('0x3e')]);_0x1c8d7e[_0xaca3('0x43')]=_[_0xaca3('0x42')](_0x595a89['query']);_0x1c8d7e[_0xaca3('0x4d')]=_[_0xaca3('0x44')](_0x1c8d7e[_0xaca3('0x45')],_0x1c8d7e[_0xaca3('0x43')]);_0xc4e021['attributes']=_[_0xaca3('0x44')](_0x1c8d7e[_0xaca3('0x45')],qs[_0xaca3('0x47')](_0x595a89[_0xaca3('0x43')]['fields']));_0xc4e021['attributes']=_0xc4e021[_0xaca3('0x46')][_0xaca3('0x48')]?_0xc4e021[_0xaca3('0x46')]:_0x1c8d7e['model'];if(!_0x595a89['query']['hasOwnProperty'](_0xaca3('0x49'))){_0xc4e021['limit']=qs['limit'](_0x595a89['query'][_0xaca3('0x2d')]);_0xc4e021[_0xaca3('0x2b')]=qs[_0xaca3('0x2b')](_0x595a89['query'][_0xaca3('0x2b')]);}_0xc4e021[_0xaca3('0x4a')]=qs[_0xaca3('0x4b')](_0x595a89[_0xaca3('0x43')]['sort']);_0xc4e021['where']=qs[_0xaca3('0x4d')](_[_0xaca3('0x4e')](_0x595a89[_0xaca3('0x43')],_0x1c8d7e[_0xaca3('0x4d')]));_0xc4e021[_0xaca3('0x4c')][_0xaca3('0x63')]=_0x2ef9a8['id'];if(_0x595a89[_0xaca3('0x43')][_0xaca3('0x4f')]){_0xc4e021[_0xaca3('0x4c')]=_['merge'](_0xc4e021['where'],{'$or':_['map'](_0xc4e021['attributes'],function(_0x2d9f1b){var _0xe53454={};_0xe53454[_0x2d9f1b]={'$like':'%'+_0x595a89[_0xaca3('0x43')]['filter']+'%'};return _0xe53454;})});}_0xc4e021=_['merge']({},_0xc4e021,_0x595a89[_0xaca3('0x52')]);return db[_0xaca3('0x62')]['count']({'where':_0xc4e021[_0xaca3('0x4c')]})[_0xaca3('0x1e')](function(_0x3d1115){_0x52d431[_0xaca3('0x2e')]=_0x3d1115;if(_0x595a89[_0xaca3('0x43')]['includeAll']){_0xc4e021[_0xaca3('0x54')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0xc4e021);})[_0xaca3('0x1e')](function(_0x2bc4a8){_0x52d431[_0xaca3('0x64')]=_0x2bc4a8;return _0x52d431;});}})['then'](respondWithFilteredResult(_0x4eaa90,_0xc4e021))[_0xaca3('0x27')](handleError(_0x4eaa90,null));};exports['removeDispositions']=function(_0x51c363,_0x94530f,_0x3c5713){return db['OpenchannelAccount']['find']({'where':{'id':_0x51c363[_0xaca3('0x5f')]['id']}})['then'](handleEntityNotFound(_0x94530f,null))[_0xaca3('0x1e')](function(_0x15d757){if(_0x15d757){return _0x15d757['removeDispositions'](_0x51c363[_0xaca3('0x43')][_0xaca3('0x65')]);}})['then'](respondWithStatusCode(_0x94530f,null))[_0xaca3('0x27')](handleError(_0x94530f,null));};exports['addAnswer']=function(_0x24593f,_0x4d2c1f,_0x27d917){if(_0x24593f[_0xaca3('0x59')]['id']){delete _0x24593f['body']['id'];}return db[_0xaca3('0x3d')]['find']({'where':{'id':_0x24593f[_0xaca3('0x5f')]['id']}})[_0xaca3('0x1e')](handleEntityNotFound(_0x4d2c1f,null))['then'](function(_0x56863f){if(_0x56863f){_0x24593f[_0xaca3('0x59')][_0xaca3('0x63')]=_0x56863f['id'];return db[_0xaca3('0x66')][_0xaca3('0x58')](_0x24593f[_0xaca3('0x59')]);}})[_0xaca3('0x1e')](respondWithResult(_0x4d2c1f,null))[_0xaca3('0x27')](handleError(_0x4d2c1f,null));};exports[_0xaca3('0x67')]=function(_0x1c3f69,_0x595c36,_0x6f15d4){var _0x378fed={'raw':![],'where':{}};var _0x2da7d9={};var _0x8a7545={'count':0x0,'rows':[]};return db[_0xaca3('0x3d')][_0xaca3('0x68')]({'where':{'id':_0x1c3f69[_0xaca3('0x5f')]['id']}})[_0xaca3('0x1e')](handleEntityNotFound(_0x595c36,null))[_0xaca3('0x1e')](function(_0x4c7bf1){if(_0x4c7bf1){_0x2da7d9[_0xaca3('0x45')]=_[_0xaca3('0x42')](db['CannedAnswer'][_0xaca3('0x3e')]);_0x2da7d9[_0xaca3('0x43')]=_['keys'](_0x1c3f69[_0xaca3('0x43')]);_0x2da7d9[_0xaca3('0x4d')]=_[_0xaca3('0x44')](_0x2da7d9[_0xaca3('0x45')],_0x2da7d9[_0xaca3('0x43')]);_0x378fed[_0xaca3('0x46')]=_[_0xaca3('0x44')](_0x2da7d9[_0xaca3('0x45')],qs[_0xaca3('0x47')](_0x1c3f69[_0xaca3('0x43')][_0xaca3('0x47')]));_0x378fed[_0xaca3('0x46')]=_0x378fed[_0xaca3('0x46')][_0xaca3('0x48')]?_0x378fed[_0xaca3('0x46')]:_0x2da7d9[_0xaca3('0x45')];if(!_0x1c3f69[_0xaca3('0x43')]['hasOwnProperty']('nolimit')){_0x378fed['limit']=qs[_0xaca3('0x2d')](_0x1c3f69[_0xaca3('0x43')]['limit']);_0x378fed['offset']=qs[_0xaca3('0x2b')](_0x1c3f69[_0xaca3('0x43')][_0xaca3('0x2b')]);}_0x378fed[_0xaca3('0x4a')]=qs['sort'](_0x1c3f69[_0xaca3('0x43')][_0xaca3('0x4b')]);_0x378fed[_0xaca3('0x4c')]=qs[_0xaca3('0x4d')](_[_0xaca3('0x4e')](_0x1c3f69['query'],_0x2da7d9[_0xaca3('0x4d')]));_0x378fed['where'][_0xaca3('0x63')]=_0x4c7bf1['id'];if(_0x1c3f69[_0xaca3('0x43')][_0xaca3('0x4f')]){_0x378fed[_0xaca3('0x4c')]=_[_0xaca3('0x50')](_0x378fed[_0xaca3('0x4c')],{'$or':_[_0xaca3('0x3c')](_0x378fed[_0xaca3('0x46')],function(_0xaa761a){var _0x2bbdbe={};_0x2bbdbe[_0xaa761a]={'$like':'%'+_0x1c3f69[_0xaca3('0x43')]['filter']+'%'};return _0x2bbdbe;})});}_0x378fed=_[_0xaca3('0x50')]({},_0x378fed,_0x1c3f69[_0xaca3('0x52')]);return db[_0xaca3('0x66')][_0xaca3('0x2e')]({'where':_0x378fed['where']})['then'](function(_0x3fac52){_0x8a7545[_0xaca3('0x2e')]=_0x3fac52;if(_0x1c3f69[_0xaca3('0x43')][_0xaca3('0x53')]){_0x378fed[_0xaca3('0x54')]=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x378fed);})[_0xaca3('0x1e')](function(_0x5f0360){_0x8a7545[_0xaca3('0x64')]=_0x5f0360;return _0x8a7545;});}})[_0xaca3('0x1e')](respondWithFilteredResult(_0x595c36,_0x378fed))[_0xaca3('0x27')](handleError(_0x595c36,null));};exports['removeAnswers']=function(_0x41df1e,_0x1c619e,_0x5524b1){return db[_0xaca3('0x3d')]['find']({'where':{'id':_0x41df1e[_0xaca3('0x5f')]['id']}})[_0xaca3('0x1e')](handleEntityNotFound(_0x1c619e,null))[_0xaca3('0x1e')](function(_0x54be82){if(_0x54be82){return _0x54be82[_0xaca3('0x69')](_0x41df1e[_0xaca3('0x43')][_0xaca3('0x65')]);}})[_0xaca3('0x1e')](respondWithStatusCode(_0x1c619e,null))[_0xaca3('0x27')](handleError(_0x1c619e,null));};exports[_0xaca3('0x6a')]=function(_0x11a17b,_0x3e625e,_0xfa7c4a){var _0x36610e={'body':_0x11a17b[_0xaca3('0x59')],'channel':_0xaca3('0x6b')};var _0x290c6d=[];var _0x3ef602=[];var _0x3ca4e4={};var _0x13072c=![];return db[_0xaca3('0x6c')][_0xaca3('0x60')]()[_0xaca3('0x1e')](function(_0x3b763e){if(!_0x3b763e){throw new db['Sequelize']['ValidationError'](_0xaca3('0x6d'));}_0x290c6d=_['difference'](_['keys'](_0x3b763e),['createdAt','updatedAt']);_0x3ef602=_[_0xaca3('0x6e')](_[_0xaca3('0x42')](_0x3b763e),[_0xaca3('0x6f'),_0xaca3('0x70'),'CompanyId','ListId']);if(_0x11a17b[_0xaca3('0x59')]['id']){delete _0x11a17b[_0xaca3('0x59')]['id'];}if(_[_0xaca3('0x71')](_0x11a17b[_0xaca3('0x59')]['from'])){throw new db['Sequelize'][(_0xaca3('0x72'))](_0xaca3('0x73'));}if(_['isNil'](_0x11a17b[_0xaca3('0x59')][_0xaca3('0x59')])||_0x11a17b['body'][_0xaca3('0x59')]===''){throw new db[(_0xaca3('0x74'))]['ValidationError'](_0xaca3('0x75'));}if(_[_0xaca3('0x71')](_0x11a17b['body'][_0xaca3('0x76')])){throw new db['Sequelize']['ValidationError'](_0xaca3('0x77')+_0x3ef602);}if(!_[_0xaca3('0x78')](_0x3ef602,_0x11a17b[_0xaca3('0x59')][_0xaca3('0x76')])){throw new db['Sequelize'][(_0xaca3('0x72'))](_0xaca3('0x79')+_0x3ef602);}_0x3ca4e4[_0x11a17b[_0xaca3('0x59')][_0xaca3('0x76')]]=_0x11a17b[_0xaca3('0x59')]['from'];})[_0xaca3('0x1e')](function(){return db['OpenchannelAccount'][_0xaca3('0x57')]({'where':{'id':_0x11a17b[_0xaca3('0x5f')]['id']},'include':[{'model':db['CmList'],'as':_0xaca3('0x7a'),'include':[{'model':db[_0xaca3('0x6c')],'as':_0xaca3('0x7b'),'where':_0x3ca4e4,'limit':0x1,'order':[[_0xaca3('0x70'),_0xaca3('0x7c')]]}]},{'model':db[_0xaca3('0x7d')],'as':'Applications'}]});})['then'](handleEntityNotFound(_0x3e625e,null))[_0xaca3('0x1e')](function(_0x1e00ec){if(_0x1e00ec&&_0x1e00ec[_0xaca3('0x7a')]){_0x36610e[_0xaca3('0x7e')]=_0x1e00ec;_0x36610e[_0xaca3('0x7f')]=_0x1e00ec[_0xaca3('0x80')];_0x36610e['list']=_0x1e00ec['List'];_0x36610e['applications']=_[_0xaca3('0x81')](_0x36610e[_0xaca3('0x7f')],['priority'],[_0xaca3('0x82')]);if(_0x36610e[_0xaca3('0x7e')]['Applications']){delete _0x36610e[_0xaca3('0x7e')]['Applications'];}if(_0x36610e[_0xaca3('0x7e')]['List']&&_0x36610e[_0xaca3('0x7e')][_0xaca3('0x7a')][_0xaca3('0x7b')][_0xaca3('0x48')]){return _0x36610e[_0xaca3('0x7e')][_0xaca3('0x7a')][_0xaca3('0x7b')][0x0];}var _0x5714de=_[_0xaca3('0x18')](_0x11a17b[_0xaca3('0x59')],{'firstName':_0x11a17b['body'][_0xaca3('0x83')],'ListId':_0x1e00ec['ListId']});_0x5714de[_0x11a17b[_0xaca3('0x59')][_0xaca3('0x76')]]=_0x11a17b[_0xaca3('0x59')]['from'];return db[_0xaca3('0x6c')][_0xaca3('0x58')](_0x5714de,{'fields':_0x290c6d,'raw':!![]});}})[_0xaca3('0x1e')](handleEntityNotFound(_0x3e625e,null))['then'](function(_0x24c2aa){_0x36610e[_0xaca3('0x84')]=_0x24c2aa;if(_0x24c2aa){var _0x12797c={'ContactId':_0x24c2aa['id'],'OpenchannelAccountId':_0x11a17b[_0xaca3('0x5f')]['id'],'from':(_0x24c2aa[_0xaca3('0x85')]||'')+'\x20'+(_0x24c2aa['lastName']||'')};var _0x892c55={'OpenchannelAccountId':_0x11a17b[_0xaca3('0x5f')]['id'],'closed':![]};if(_0x11a17b['body'][_0xaca3('0x86')]){_0x892c55[_0xaca3('0x86')]=_0x11a17b[_0xaca3('0x59')][_0xaca3('0x86')];return db[_0xaca3('0x87')]['find']({'where':_0x892c55})[_0xaca3('0x1e')](function(_0x41241d){if(_0x41241d){return[_0x41241d,![]];}_0x12797c[_0xaca3('0x86')]=_0x11a17b[_0xaca3('0x59')][_0xaca3('0x86')];_0x12797c[_0xaca3('0x88')]=_0x11a17b['body'][_0xaca3('0x88')];return db[_0xaca3('0x87')][_0xaca3('0x58')](_0x12797c)[_0xaca3('0x1e')](function(_0x4bfa69){return[_0x4bfa69,!![]];});});}else{_0x892c55[_0xaca3('0x86')]=null;}_0x892c55[_0xaca3('0x89')]=_0x24c2aa['id'];return db['OpenchannelInteraction'][_0xaca3('0x57')]({'where':_0x892c55})['then'](function(_0x315407){if(_0x315407){return[_0x315407,![]];}return db[_0xaca3('0x87')][_0xaca3('0x58')](_0x12797c)[_0xaca3('0x1e')](function(_0x4909c3){return[_0x4909c3,!![]];});});}})[_0xaca3('0x8a')](function(_0x13f6d8,_0x3ec02e){if(_0x13f6d8){_0x13072c=_0x3ec02e;if(!_0x3ec02e){var _0xdf58b2={'from':(_0x36610e['contact'][_0xaca3('0x85')]||'')+'\x20'+(_0x36610e['contact']['lastName']||'')};if(_0x11a17b['body'][_0xaca3('0x86')]&&_0x11a17b['body'][_0xaca3('0x8b')]&&_0x11a17b['body']['threadId']!=_0x11a17b['body'][_0xaca3('0x8b')]){_0xdf58b2[_0xaca3('0x86')]=_0x11a17b[_0xaca3('0x59')][_0xaca3('0x8b')];}return _0x13f6d8[_0xaca3('0x34')](_0xdf58b2);}else{return _0x13f6d8;}}})[_0xaca3('0x1e')](function(_0x3d460a){_0x36610e['interaction']=_0x3d460a[_0xaca3('0x5b')]({'plain':!![]});_0x36610e['interaction']['created']=_0x13072c;if(_0x36610e['interaction'][_0xaca3('0x8c')]){if(_0x36610e['account']['autoclose']){_0x36610e[_0xaca3('0x7f')]['push']({'id':0x0,'priority':_0x36610e['applications'][_0xaca3('0x48')]+0x1,'app':_0xaca3('0x8d'),'appdata':_0xaca3('0x8e'),'interval':_0xaca3('0x8f')});}}return db['OpenchannelMessage'][_0xaca3('0x58')]({'body':_0x11a17b['body'][_0xaca3('0x59')],'OpenchannelAccountId':_0x11a17b[_0xaca3('0x5f')]['id'],'OpenchannelInteractionId':_0x3d460a['id'],'direction':'in','ContactId':_0x36610e[_0xaca3('0x84')]['id'],'AttachmentId':_0x11a17b['body'][_0xaca3('0x90')]});})[_0xaca3('0x1e')](function(_0x3a1d68){_0x36610e[_0xaca3('0x24')]=_0x3a1d68;if(_0x36610e[_0xaca3('0x91')][_0xaca3('0x92')]){return db[_0xaca3('0x93')][_0xaca3('0x57')]({'attributes':['id',_0xaca3('0x38')],'where':{'id':_0x36610e[_0xaca3('0x91')]['UserId']}})[_0xaca3('0x1e')](function(_0x348761){if(_0x348761){_0x36610e[_0xaca3('0x7f')]['unshift']({'id':0x0,'priority':0x0,'app':_0xaca3('0x94'),'appdata':_0x348761[_0xaca3('0x38')]+','+(_0x36610e['account']['waitForTheAssignedAgent']||0xa),'interval':_0xaca3('0x8f')});_0x36610e[_0xaca3('0x95')]=![];}return respondWithRpcPromise(_0xaca3('0x96'),_0xaca3('0x97'),_0x36610e);});}return respondWithRpcPromise(_0xaca3('0x96'),'startRouting',_0x36610e);})[_0xaca3('0x1e')](function(_0x2fe4b6){respondWithRpcPromise('EventManager',_0xaca3('0x98'),{'event':_0xaca3('0x6a'),'message':_0x2fe4b6},client9002);return _0x2fe4b6;})[_0xaca3('0x1e')](respondWithResult(_0x3e625e,null))[_0xaca3('0x27')](handleError(_0x3e625e,null));};exports['addApplications']=function(_0x2ca519,_0x1261dd,_0x4a327e){return db[_0xaca3('0x3d')][_0xaca3('0x68')]({'where':{'id':_0x2ca519['params']['id']}})[_0xaca3('0x1e')](handleEntityNotFound(_0x1261dd,null))[_0xaca3('0x1e')](function(_0x5abb41){if(_0x5abb41){return db[_0xaca3('0x99')][_0xaca3('0x9a')](function(_0x5718c2){return db[_0xaca3('0x7d')][_0xaca3('0x37')]({'where':{'OpenchannelAccountId':_0x2ca519[_0xaca3('0x5f')]['id']},'transaction':_0x5718c2})[_0xaca3('0x1e')](function(_0x2ae87d){var _0x724515=_['map'](_0x2ca519[_0xaca3('0x59')],function(_0x467e26){_0x467e26[_0xaca3('0x63')]=_0x2ca519[_0xaca3('0x5f')]['id'];return _0x467e26;});return db[_0xaca3('0x7d')]['bulkCreate'](_0x724515,{'transaction':_0x5718c2});});})[_0xaca3('0x1e')](function(){return db[_0xaca3('0x7d')][_0xaca3('0x9b')]({'where':{'OpenchannelAccountId':_0x2ca519[_0xaca3('0x5f')]['id']},'order':_0xaca3('0x9c')});});}})[_0xaca3('0x1e')](respondWithResult(_0x1261dd,null))[_0xaca3('0x27')](handleError(_0x1261dd,null));};exports[_0xaca3('0x9d')]=function(_0x546c9e,_0x3fc630,_0x230600){var _0x2ac87f={};var _0x8cbb20={};var _0x2db17d;var _0x4d244d;return db[_0xaca3('0x3d')][_0xaca3('0x68')]({'where':{'id':_0x546c9e[_0xaca3('0x5f')]['id']}})['then'](handleEntityNotFound(_0x3fc630,null))['then'](function(_0x20b6bf){if(_0x20b6bf){_0x2db17d=_0x20b6bf;_0x8cbb20['model']=_[_0xaca3('0x42')](db[_0xaca3('0x7d')]['rawAttributes']);_0x8cbb20[_0xaca3('0x43')]=_['keys'](_0x546c9e[_0xaca3('0x43')]);_0x8cbb20[_0xaca3('0x4d')]=_[_0xaca3('0x44')](_0x8cbb20[_0xaca3('0x45')],_0x8cbb20[_0xaca3('0x43')]);_0x2ac87f[_0xaca3('0x46')]=_[_0xaca3('0x44')](_0x8cbb20[_0xaca3('0x45')],qs[_0xaca3('0x47')](_0x546c9e[_0xaca3('0x43')][_0xaca3('0x47')]));_0x2ac87f[_0xaca3('0x46')]=_0x2ac87f[_0xaca3('0x46')][_0xaca3('0x48')]?_0x2ac87f[_0xaca3('0x46')]:_0x8cbb20[_0xaca3('0x45')];_0x2ac87f['order']=qs['sort'](_0x546c9e[_0xaca3('0x43')][_0xaca3('0x4b')]);_0x2ac87f[_0xaca3('0x4c')]=qs[_0xaca3('0x4d')](_[_0xaca3('0x4e')](_0x546c9e[_0xaca3('0x43')],_0x8cbb20['filters']));if(_0x546c9e[_0xaca3('0x43')][_0xaca3('0x4f')]){_0x2ac87f['where']=_['merge'](_0x2ac87f[_0xaca3('0x4c')],{'$or':_[_0xaca3('0x3c')](_0x2ac87f['attributes'],function(_0x29d23d){var _0x1d0307={};_0x1d0307[_0x29d23d]={'$like':'%'+_0x546c9e[_0xaca3('0x43')]['filter']+'%'};return _0x1d0307;})});}_0x2ac87f=_[_0xaca3('0x50')]({},_0x2ac87f,_0x546c9e[_0xaca3('0x52')]);return _0x2db17d[_0xaca3('0x9d')](_0x2ac87f);}})[_0xaca3('0x1e')](function(_0x137862){if(_0x137862){_0x4d244d=_0x137862[_0xaca3('0x48')];if(!_0x546c9e['query'][_0xaca3('0x9e')](_0xaca3('0x49'))){_0x2ac87f['limit']=qs[_0xaca3('0x2d')](_0x546c9e['query'][_0xaca3('0x2d')]);_0x2ac87f[_0xaca3('0x2b')]=qs[_0xaca3('0x2b')](_0x546c9e[_0xaca3('0x43')]['offset']);}return _0x2db17d[_0xaca3('0x9d')](_0x2ac87f);}})[_0xaca3('0x1e')](function(_0x1f170b){if(_0x1f170b){return _0x1f170b?{'count':_0x4d244d,'rows':_0x1f170b}:null;}})[_0xaca3('0x1e')](respondWithResult(_0x3fc630,null))[_0xaca3('0x27')](handleError(_0x3fc630,null));};exports[_0xaca3('0x9f')]=function(_0x5befef,_0x172ef0,_0x5cb4ef){var _0x2369f3={'raw':![],'where':{}};var _0x1f1d84={};var _0x38ab9c={'count':0x0,'rows':[]};return db[_0xaca3('0x3d')][_0xaca3('0x68')]({'where':{'id':_0x5befef[_0xaca3('0x5f')]['id']}})[_0xaca3('0x1e')](handleEntityNotFound(_0x172ef0,null))[_0xaca3('0x1e')](function(_0x3ce744){if(_0x3ce744){_0x1f1d84['model']=_[_0xaca3('0x42')](db['OpenchannelInteraction'][_0xaca3('0x3e')]);_0x1f1d84['query']=_['keys'](_0x5befef[_0xaca3('0x43')]);_0x1f1d84[_0xaca3('0x4d')]=_['intersection'](_0x1f1d84[_0xaca3('0x45')],_0x1f1d84[_0xaca3('0x43')]);_0x2369f3['attributes']=_[_0xaca3('0x44')](_0x1f1d84[_0xaca3('0x45')],qs[_0xaca3('0x47')](_0x5befef[_0xaca3('0x43')]['fields']));_0x2369f3[_0xaca3('0x46')]=_0x2369f3[_0xaca3('0x46')]['length']?_0x2369f3['attributes']:_0x1f1d84['model'];if(!_0x5befef[_0xaca3('0x43')]['hasOwnProperty']('nolimit')){_0x2369f3['limit']=qs[_0xaca3('0x2d')](_0x5befef[_0xaca3('0x43')][_0xaca3('0x2d')]);_0x2369f3['offset']=qs['offset'](_0x5befef[_0xaca3('0x43')][_0xaca3('0x2b')]);}_0x2369f3['order']=qs[_0xaca3('0x4b')](_0x5befef[_0xaca3('0x43')]['sort']);_0x2369f3['where']=qs['filters'](_[_0xaca3('0x4e')](_0x5befef['query'],_0x1f1d84[_0xaca3('0x4d')]));_0x2369f3[_0xaca3('0x4c')][_0xaca3('0x63')]=_0x3ce744['id'];if(_0x5befef[_0xaca3('0x43')][_0xaca3('0x4f')]){_0x2369f3[_0xaca3('0x4c')]=_[_0xaca3('0x50')](_0x2369f3[_0xaca3('0x4c')],{'$or':_[_0xaca3('0x3c')](_0x2369f3[_0xaca3('0x46')],function(_0x364119){var _0x12bda5={};_0x12bda5[_0x364119]={'$like':'%'+_0x5befef[_0xaca3('0x43')]['filter']+'%'};return _0x12bda5;})});}_0x2369f3=_[_0xaca3('0x50')]({},_0x2369f3,_0x5befef['options']);return db['OpenchannelInteraction'][_0xaca3('0x2e')]({'where':_0x2369f3['where']})[_0xaca3('0x1e')](function(_0x371365){_0x38ab9c[_0xaca3('0x2e')]=_0x371365;if(_0x5befef[_0xaca3('0x43')][_0xaca3('0x53')]){_0x2369f3[_0xaca3('0x54')]=[{'model':db[_0xaca3('0x6c')],'as':_0xaca3('0xa0'),'required':![]},{'model':db[_0xaca3('0x93')],'as':_0xaca3('0xa1'),'attributes':[_0xaca3('0x38'),_0xaca3('0xa2'),_0xaca3('0xa3')],'required':![]},{'model':db['Tag'],'as':_0xaca3('0xa4'),'attributes':['id',_0xaca3('0x38'),_0xaca3('0xa5')],'where':_0x5befef[_0xaca3('0x43')][_0xaca3('0xa6')]?{'id':_0x5befef['query'][_0xaca3('0xa6')]}:undefined,'required':_0x5befef[_0xaca3('0x43')]['tag']?!![]:![]}];}return db['OpenchannelInteraction'][_0xaca3('0x55')](_0x2369f3);})['then'](function(_0x5c0c41){_0x38ab9c[_0xaca3('0x64')]=_0x5c0c41;return _0x38ab9c;});}})[_0xaca3('0x1e')](respondWithFilteredResult(_0x172ef0,_0x2369f3))[_0xaca3('0x27')](handleError(_0x172ef0,null));};exports[_0xaca3('0xa7')]=function(_0x20e40d,_0x4809d7,_0x14c955){return db['OpenchannelAccount'][_0xaca3('0x57')]({'where':{'id':_0x20e40d[_0xaca3('0x5f')]['id']}})[_0xaca3('0x1e')](handleEntityNotFound(_0x4809d7,null))['then'](function(_0x284c6a){if(_0x284c6a){return _0x284c6a['addAgents'](_0x20e40d[_0xaca3('0x59')][_0xaca3('0x65')],_[_0xaca3('0xa8')](_0x20e40d['body'],[_0xaca3('0x65'),'id'])||{})[_0xaca3('0x8a')](function(_0xf93acc){for(var _0x2f2082=0x0;_0x2f2082<_0x20e40d[_0xaca3('0x59')]['ids']['length'];_0x2f2082+=0x1){socket[_0xaca3('0xa9')](_0xaca3('0xaa'),{'UserId':Number(_0x20e40d['body'][_0xaca3('0x65')][_0x2f2082]),'OpenchannelAccountId':Number(_0x20e40d['params']['id'])});}return _0xf93acc;});}})[_0xaca3('0x1e')](respondWithResult(_0x4809d7,null))[_0xaca3('0x27')](handleError(_0x4809d7,null));};exports[_0xaca3('0xab')]=function(_0x1d7cae,_0x15d016,_0x2c99a6){return db['OpenchannelAccount']['find']({'where':{'id':_0x1d7cae[_0xaca3('0x5f')]['id']}})[_0xaca3('0x1e')](handleEntityNotFound(_0x15d016,null))['then'](function(_0x16d959){if(_0x16d959){return _0x16d959['removeAgents'](_0x1d7cae[_0xaca3('0x43')][_0xaca3('0x65')])[_0xaca3('0x1e')](function(){if(_['isArray'](_0x1d7cae[_0xaca3('0x43')][_0xaca3('0x65')])){for(var _0x5b9c41=0x0;_0x5b9c41<_0x1d7cae['query'][_0xaca3('0x65')][_0xaca3('0x48')];_0x5b9c41+=0x1){socket[_0xaca3('0xa9')](_0xaca3('0xac'),{'UserId':Number(_0x1d7cae[_0xaca3('0x43')][_0xaca3('0x65')][_0x5b9c41]),'OpenchannelAccountId':Number(_0x1d7cae[_0xaca3('0x5f')]['id'])});}}else{socket['emit'](_0xaca3('0xac'),{'UserId':Number(_0x1d7cae['query'][_0xaca3('0x65')]),'OpenchannelAccountId':Number(_0x1d7cae[_0xaca3('0x5f')]['id'])});}});}})[_0xaca3('0x1e')](respondWithStatusCode(_0x15d016,null))[_0xaca3('0x27')](handleError(_0x15d016,null));};exports[_0xaca3('0xad')]=function(_0x5d9006,_0x1f1090,_0x2ab6c2){var _0x145a69={};var _0x3d6d62={};var _0x48f0c1;var _0x55cf33;return db[_0xaca3('0x3d')][_0xaca3('0x68')]({'where':{'id':_0x5d9006[_0xaca3('0x5f')]['id']}})[_0xaca3('0x1e')](handleEntityNotFound(_0x1f1090,null))[_0xaca3('0x1e')](function(_0x2f1e3f){if(_0x2f1e3f){_0x48f0c1=_0x2f1e3f;_0x3d6d62['model']=_[_0xaca3('0x42')](db['User'][_0xaca3('0x3e')]);_0x3d6d62[_0xaca3('0x43')]=_[_0xaca3('0x42')](_0x5d9006[_0xaca3('0x43')]);_0x3d6d62[_0xaca3('0x4d')]=_[_0xaca3('0x44')](_0x3d6d62[_0xaca3('0x45')],_0x3d6d62[_0xaca3('0x43')]);_0x145a69[_0xaca3('0x46')]=_[_0xaca3('0x44')](_0x3d6d62[_0xaca3('0x45')],qs[_0xaca3('0x47')](_0x5d9006[_0xaca3('0x43')][_0xaca3('0x47')]));_0x145a69['attributes']=_0x145a69[_0xaca3('0x46')][_0xaca3('0x48')]?_0x145a69['attributes']:_0x3d6d62[_0xaca3('0x45')];_0x145a69[_0xaca3('0x4a')]=qs[_0xaca3('0x4b')](_0x5d9006[_0xaca3('0x43')][_0xaca3('0x4b')]);_0x145a69[_0xaca3('0x4c')]=qs[_0xaca3('0x4d')](_[_0xaca3('0x4e')](_0x5d9006[_0xaca3('0x43')],_0x3d6d62[_0xaca3('0x4d')]));if(_0x5d9006[_0xaca3('0x43')][_0xaca3('0x4f')]){_0x145a69['where']=_['merge'](_0x145a69[_0xaca3('0x4c')],{'$or':_[_0xaca3('0x3c')](_0x145a69[_0xaca3('0x46')],function(_0xb214a2){var _0x54e714={};_0x54e714[_0xb214a2]={'$like':'%'+_0x5d9006[_0xaca3('0x43')][_0xaca3('0x4f')]+'%'};return _0x54e714;})});}_0x145a69=_[_0xaca3('0x50')]({},_0x145a69,_0x5d9006[_0xaca3('0x52')]);return _0x48f0c1['getAgents'](_0x145a69);}})[_0xaca3('0x1e')](function(_0x150678){if(_0x150678){_0x55cf33=_0x150678[_0xaca3('0x48')];if(!_0x5d9006['query'][_0xaca3('0x9e')](_0xaca3('0x49'))){_0x145a69[_0xaca3('0x2d')]=qs['limit'](_0x5d9006[_0xaca3('0x43')][_0xaca3('0x2d')]);_0x145a69[_0xaca3('0x2b')]=qs[_0xaca3('0x2b')](_0x5d9006[_0xaca3('0x43')][_0xaca3('0x2b')]);}return _0x48f0c1[_0xaca3('0xad')](_0x145a69);}})[_0xaca3('0x1e')](function(_0x34c58e){if(_0x34c58e){return _0x34c58e?{'count':_0x55cf33,'rows':_0x34c58e}:null;}})[_0xaca3('0x1e')](respondWithResult(_0x1f1090,null))[_0xaca3('0x27')](handleError(_0x1f1090,null));};exports[_0xaca3('0x39')]=function(_0x28f89c,_0x37fd4b,_0x12c092){var _0x479c88,_0x390749,_0x30ecb3;if(_[_0xaca3('0x71')](_0x28f89c[_0xaca3('0x59')][_0xaca3('0x59')])||_0x28f89c[_0xaca3('0x59')][_0xaca3('0x59')]===''){throw new db['Sequelize'][(_0xaca3('0x72'))](_0xaca3('0x75'));}if(_[_0xaca3('0x71')](_0x28f89c['body']['to'])){}_0x479c88=_0x28f89c[_0xaca3('0x59')]['to'];return db[_0xaca3('0x3d')]['findOne']({'where':{'id':_0x28f89c['params']['id']}})[_0xaca3('0x1e')](handleEntityNotFound(_0x37fd4b,null))['then'](function(_0x2be3a3){if(_0x2be3a3){return db['OpenchannelAccount'][_0xaca3('0x57')]({'where':{'id':_0x2be3a3['id']},'include':[{'model':db[_0xaca3('0xae')],'as':_0xaca3('0x7a'),'include':[{'model':db['CmContact'],'as':_0xaca3('0x7b'),'where':{[_0x2be3a3[_0xaca3('0x76')]]:_0x479c88},'limit':0x1,'order':[[_0xaca3('0x70'),_0xaca3('0x7c')]]}]}]})[_0xaca3('0x1e')](handleEntityNotFound(_0x37fd4b,null))[_0xaca3('0x1e')](function(_0x39ac3a){if(_0x39ac3a&&_0x39ac3a[_0xaca3('0x7a')]){_0x390749=_0x39ac3a[_0xaca3('0x5b')]({'plain':!![]});if(_0x390749[_0xaca3('0x7a')]&&_0x390749[_0xaca3('0x7a')][_0xaca3('0x7b')][_0xaca3('0x48')]){return _0x390749[_0xaca3('0x7a')][_0xaca3('0x7b')][0x0];}return db[_0xaca3('0x6c')]['create'](_[_0xaca3('0x18')](_0x28f89c[_0xaca3('0x59')],{'firstName':_0x479c88,[_0x39ac3a[_0xaca3('0x76')]]:_0x479c88,'phone':_0x479c88,'ListId':_0x390749[_0xaca3('0xaf')]}));}})[_0xaca3('0x1e')](handleEntityNotFound(_0x37fd4b,null))['then'](function(_0x1a3386){if(_0x1a3386){_0x30ecb3=_0x1a3386;return db['OpenchannelInteraction'][_0xaca3('0x57')]({'where':{'ContactId':_0x30ecb3['id'],'closed':![],'OpenchannelAccountId':_0x390749['id']}})[_0xaca3('0x1e')](function(_0x1f05fa){if(_0x1f05fa){return[_0x1f05fa,![]];}return db['OpenchannelInteraction'][_0xaca3('0x58')]({'UserId':_0x28f89c[_0xaca3('0x5a')]['id'],'ContactId':_0x30ecb3['id'],'OpenchannelAccountId':_0x390749['id'],'lastMsgDirection':_0xaca3('0xb0'),'Messages':[_[_0xaca3('0x50')](_0x28f89c[_0xaca3('0x59')],{'read':![],'body':_0x28f89c[_0xaca3('0x59')][_0xaca3('0x59')],'OpenchannelAccountId':_0x390749['id'],'UserId':_0x28f89c['user']['id'],'ContactId':_0x30ecb3['id']})]},{'include':[{'model':db[_0xaca3('0xb1')],'as':_0xaca3('0xb2')}]})[_0xaca3('0x1e')](function(_0x16d7d7){return[_0x16d7d7,!![]];});});}})[_0xaca3('0x8a')](function(_0x3fe907,_0x1b9c29){if(_0x1b9c29){return _0x3fe907;}return db[_0xaca3('0xb1')][_0xaca3('0x58')](_[_0xaca3('0x50')](_0x28f89c[_0xaca3('0x59')],{'read':![],'body':_0x28f89c[_0xaca3('0x59')][_0xaca3('0x59')],'OpenchannelAccountId':_0x390749['id'],'OpenchannelInteractionId':_0x3fe907['id'],'UserId':_0x28f89c['user']['id'],'ContactId':_0x30ecb3['id']}))['then'](function(_0x371dcd){_0x3fe907[_0xaca3('0xb3')][_0xaca3('0xb2')]=[];_0x3fe907[_0xaca3('0xb3')][_0xaca3('0xb2')][_0xaca3('0xb4')](_0x371dcd[_0xaca3('0xb3')]);return _0x3fe907;});});}})['then'](respondWithResult(_0x37fd4b,null))[_0xaca3('0x27')](handleError(_0x37fd4b,null));};
\ No newline at end of file
+var _0x1e6b=['getDispositions','findOne','hasOwnProperty','sort','pick','removeDispositions','ids','addAnswer','CannedAnswer','rows','removeAnswers','notify','CmContact','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','isNil','from','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','CmList','List','Contacts','DESC','OpenchannelApplication','Applications','applications','list','orderBy','account','contact','firstName','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','messageId','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','Start','startRouting','EventManager','addApplications','transaction','bulkCreate','findAndCountAll','priority','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','color','tag','addAgents','omit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','emit','getAgents','send','out','Messages','dataValues','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','reject','save','update','destroy','OpenchannelAccounts','stack','name','index','Pause','mandatoryDispositionPause','map','OpenchannelAccount','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','where','filters','merge','filter','includeAll','include','findAll','show','rawAttributes','options','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','OpenchannelAccountId','Disposition'];(function(_0x5030a4,_0x897564){var _0x34594e=function(_0x13d1e5){while(--_0x13d1e5){_0x5030a4['push'](_0x5030a4['shift']());}};_0x34594e(++_0x897564);}(_0x1e6b,0x1dc));var _0xb1e6=function(_0x384b9b,_0x44f02a){_0x384b9b=_0x384b9b-0x0;var _0x1a911c=_0x1e6b[_0x384b9b];return _0x1a911c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb1e6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb1e6('0x1'));var rp=require(_0xb1e6('0x2'));var moment=require(_0xb1e6('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xb1e6('0x4'));var util=require(_0xb1e6('0x5'));var path=require(_0xb1e6('0x6'));var sox=require(_0xb1e6('0x7'));var csv=require('to-csv');var ejs=require(_0xb1e6('0x8'));var fs=require('fs');var fs_extra=require(_0xb1e6('0x9'));var _=require(_0xb1e6('0xa'));var squel=require(_0xb1e6('0xb'));var crypto=require('crypto');var jsforce=require(_0xb1e6('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xb1e6('0xd'));var Papa=require(_0xb1e6('0xe'));var Redis=require(_0xb1e6('0xf'));var authService=require(_0xb1e6('0x10'));var qs=require(_0xb1e6('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb1e6('0x12'));var utils=require(_0xb1e6('0x13'));var config=require(_0xb1e6('0x14'));var licenseUtil=require(_0xb1e6('0x15'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xb1e6('0x16')](config[_0xb1e6('0x17')],{'host':_0xb1e6('0x18'),'port':0x18eb});var socket=require(_0xb1e6('0x19'))(new Redis(config[_0xb1e6('0x17')]));require('./openchannelAccount.socket')[_0xb1e6('0x1a')](socket);var jayson=require(_0xb1e6('0x1b'));var client=jayson[_0xb1e6('0x1c')][_0xb1e6('0x1d')]({'port':0x232c});var client9002=jayson[_0xb1e6('0x1c')][_0xb1e6('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x433036,_0x4ac651,_0x9be51e,_0x1218a1){return new BPromise(function(_0x1a7592,_0xba33e3){var _0x357b0a=_0x1218a1||client;return _0x357b0a[_0xb1e6('0x1e')](_0x433036,_0x9be51e)[_0xb1e6('0x1f')](function(_0x26ac48){logger['info'](_0xb1e6('0x20'),_0x4ac651,_0xb1e6('0x21'));logger[_0xb1e6('0x22')](_0xb1e6('0x23'),_0x4ac651,'request\x20sent',JSON[_0xb1e6('0x24')](_0x26ac48));if(_0x26ac48[_0xb1e6('0x25')]){if(_0x26ac48[_0xb1e6('0x25')][_0xb1e6('0x26')]===0x1f4){logger[_0xb1e6('0x25')]('OpenchannelAccount,\x20%s,\x20%s',_0x4ac651,_0x26ac48[_0xb1e6('0x25')]['message']);return _0xba33e3(_0x26ac48[_0xb1e6('0x25')]['message']);}logger[_0xb1e6('0x25')](_0xb1e6('0x20'),_0x4ac651,_0x26ac48[_0xb1e6('0x25')]['message']);return _0x1a7592(_0x26ac48[_0xb1e6('0x25')][_0xb1e6('0x27')]);}else{logger[_0xb1e6('0x28')](_0xb1e6('0x20'),_0x4ac651,'request\x20sent');_0x1a7592(_0x26ac48['result'][_0xb1e6('0x27')]);}})[_0xb1e6('0x29')](function(_0x55fd8b){logger[_0xb1e6('0x25')](_0xb1e6('0x20'),_0x4ac651,_0x55fd8b);_0xba33e3(_0x55fd8b);});});}function respondWithStatusCode(_0x11417f,_0x3e6be8){_0x3e6be8=_0x3e6be8||0xcc;return function(_0x26f0ff){if(_0x26f0ff){return _0x11417f[_0xb1e6('0x2a')](_0x3e6be8);}return _0x11417f[_0xb1e6('0x2b')](_0x3e6be8)[_0xb1e6('0x2c')]();};}function respondWithResult(_0xa888bf,_0x4b311e){_0x4b311e=_0x4b311e||0xc8;return function(_0x306264){if(_0x306264){return _0xa888bf[_0xb1e6('0x2b')](_0x4b311e)['json'](_0x306264);}};}function respondWithFilteredResult(_0x503f3d,_0x5caf1a){return function(_0x998f46){if(_0x998f46){var _0x4b3b38=typeof _0x5caf1a[_0xb1e6('0x2d')]==='undefined'&&typeof _0x5caf1a[_0xb1e6('0x2e')]===_0xb1e6('0x2f');var _0x1c652b=_0x998f46[_0xb1e6('0x30')];var _0x5acd5f=_0x4b3b38?0x0:_0x5caf1a['offset'];var _0x6b8c9c=_0x4b3b38?_0x998f46[_0xb1e6('0x30')]:_0x5caf1a['offset']+_0x5caf1a['limit'];var _0x9e6b5;if(_0x6b8c9c>=_0x1c652b){_0x6b8c9c=_0x1c652b;_0x9e6b5=0xc8;}else{_0x9e6b5=0xce;}_0x503f3d[_0xb1e6('0x2b')](_0x9e6b5);return _0x503f3d[_0xb1e6('0x31')](_0xb1e6('0x32'),_0x5acd5f+'-'+_0x6b8c9c+'/'+_0x1c652b)[_0xb1e6('0x33')](_0x998f46);}return null;};}function patchUpdates(_0x36fd8a){return function(_0x86533c){try{jsonpatch['apply'](_0x86533c,_0x36fd8a,!![]);}catch(_0x1bef76){return BPromise[_0xb1e6('0x34')](_0x1bef76);}return _0x86533c[_0xb1e6('0x35')]();};}function saveUpdates(_0x258b30,_0x3940ed){return function(_0x3126a1){if(_0x3126a1){return _0x3126a1[_0xb1e6('0x36')](_0x258b30)[_0xb1e6('0x1f')](function(_0x11c0d6){return _0x11c0d6;});}return null;};}function removeEntity(_0x506399,_0x3f4d2b){return function(_0x2e254b){if(_0x2e254b){return _0x2e254b[_0xb1e6('0x37')]()[_0xb1e6('0x1f')](function(){var _0x436ce6=_0x2e254b['get']({'plain':!![]});var _0x3b0bd1=_0xb1e6('0x38');return db['UserProfileResource'][_0xb1e6('0x37')]({'where':{'type':_0x3b0bd1,'resourceId':_0x436ce6['id']}})['then'](function(){return _0x2e254b;});})['then'](function(){_0x506399[_0xb1e6('0x2b')](0xcc)[_0xb1e6('0x2c')]();});}};}function handleEntityNotFound(_0x270f10,_0x57488b){return function(_0x2523cc){if(!_0x2523cc){_0x270f10[_0xb1e6('0x2a')](0x194);}return _0x2523cc;};}function handleError(_0x287d79,_0x563b12){_0x563b12=_0x563b12||0x1f4;return function(_0x5fe5c1){logger['error'](_0x5fe5c1[_0xb1e6('0x39')]);if(_0x5fe5c1[_0xb1e6('0x3a')]){delete _0x5fe5c1[_0xb1e6('0x3a')];}_0x287d79['status'](_0x563b12)['send'](_0x5fe5c1);};}exports[_0xb1e6('0x3b')]=function(_0x3456cf,_0x320b7f){var _0x5f4e94={'include':[{'model':db[_0xb1e6('0x3c')],'as':_0xb1e6('0x3d')}]},_0x265e5e={},_0x4f613f={'count':0x0,'rows':[]};var _0x2a0598=_[_0xb1e6('0x3e')](db[_0xb1e6('0x3f')]['rawAttributes'],function(_0x2a9bdc){return{'name':_0x2a9bdc['fieldName'],'type':_0x2a9bdc[_0xb1e6('0x40')][_0xb1e6('0x41')]};});_0x265e5e[_0xb1e6('0x42')]=_[_0xb1e6('0x3e')](_0x2a0598,_0xb1e6('0x3a'));_0x265e5e[_0xb1e6('0x43')]=_[_0xb1e6('0x44')](_0x3456cf[_0xb1e6('0x43')]);_0x265e5e['filters']=_[_0xb1e6('0x45')](_0x265e5e[_0xb1e6('0x42')],_0x265e5e[_0xb1e6('0x43')]);_0x5f4e94[_0xb1e6('0x46')]=_[_0xb1e6('0x45')](_0x265e5e[_0xb1e6('0x42')],qs['fields'](_0x3456cf[_0xb1e6('0x43')][_0xb1e6('0x47')]));_0x5f4e94[_0xb1e6('0x46')]=_0x5f4e94[_0xb1e6('0x46')][_0xb1e6('0x48')]?_0x5f4e94[_0xb1e6('0x46')]:_0x265e5e[_0xb1e6('0x42')];if(!_0x3456cf[_0xb1e6('0x43')]['hasOwnProperty'](_0xb1e6('0x49'))){_0x5f4e94[_0xb1e6('0x2e')]=qs[_0xb1e6('0x2e')](_0x3456cf['query'][_0xb1e6('0x2e')]);_0x5f4e94[_0xb1e6('0x2d')]=qs[_0xb1e6('0x2d')](_0x3456cf['query'][_0xb1e6('0x2d')]);}_0x5f4e94[_0xb1e6('0x4a')]=qs['sort'](_0x3456cf[_0xb1e6('0x43')]['sort']);_0x5f4e94[_0xb1e6('0x4b')]=qs[_0xb1e6('0x4c')](_['pick'](_0x3456cf['query'],_0x265e5e['filters']),_0x2a0598);if(_0x3456cf['query']['filter']){_0x5f4e94[_0xb1e6('0x4b')]=_[_0xb1e6('0x4d')](_0x5f4e94['where'],{'$or':_[_0xb1e6('0x3e')](_0x2a0598,function(_0x2f80d1){if(_0x2f80d1[_0xb1e6('0x40')]!=='VIRTUAL'){var _0x4b7751={};_0x4b7751[_0x2f80d1[_0xb1e6('0x3a')]]={'$like':'%'+_0x3456cf[_0xb1e6('0x43')][_0xb1e6('0x4e')]+'%'};return _0x4b7751;}})});}_0x5f4e94=_[_0xb1e6('0x4d')]({},_0x5f4e94,_0x3456cf['options']);var _0x27fb55={'where':_0x5f4e94['where']};return db[_0xb1e6('0x3f')][_0xb1e6('0x30')](_0x27fb55)['then'](function(_0x2e72c1){_0x4f613f['count']=_0x2e72c1;if(_0x3456cf[_0xb1e6('0x43')][_0xb1e6('0x4f')]){_0x5f4e94[_0xb1e6('0x50')]=[{'all':!![]}];}return db[_0xb1e6('0x3f')][_0xb1e6('0x51')](_0x5f4e94);})[_0xb1e6('0x1f')](function(_0x499c92){_0x4f613f['rows']=_0x499c92;return _0x4f613f;})[_0xb1e6('0x1f')](respondWithFilteredResult(_0x320b7f,_0x5f4e94))['catch'](handleError(_0x320b7f,null));};exports[_0xb1e6('0x52')]=function(_0x2962f8,_0x4b427e){var _0x1f728c={'raw':![],'where':{'id':_0x2962f8['params']['id']},'include':[{'model':db['Pause'],'as':_0xb1e6('0x3d')}]},_0x17e8ad={};_0x17e8ad['model']=_['keys'](db[_0xb1e6('0x3f')][_0xb1e6('0x53')]);_0x17e8ad[_0xb1e6('0x43')]=_[_0xb1e6('0x44')](_0x2962f8[_0xb1e6('0x43')]);_0x17e8ad['filters']=_[_0xb1e6('0x45')](_0x17e8ad['model'],_0x17e8ad['query']);_0x1f728c[_0xb1e6('0x46')]=_[_0xb1e6('0x45')](_0x17e8ad[_0xb1e6('0x42')],qs['fields'](_0x2962f8[_0xb1e6('0x43')]['fields']));_0x1f728c[_0xb1e6('0x46')]=_0x1f728c['attributes'][_0xb1e6('0x48')]?_0x1f728c[_0xb1e6('0x46')]:_0x17e8ad[_0xb1e6('0x42')];if(_0x2962f8[_0xb1e6('0x43')]['includeAll']){_0x1f728c[_0xb1e6('0x50')]=[{'all':!![]}];}_0x1f728c=_[_0xb1e6('0x4d')]({},_0x1f728c,_0x2962f8[_0xb1e6('0x54')]);return db[_0xb1e6('0x3f')]['find'](_0x1f728c)[_0xb1e6('0x1f')](handleEntityNotFound(_0x4b427e,null))[_0xb1e6('0x1f')](respondWithResult(_0x4b427e,null))[_0xb1e6('0x29')](handleError(_0x4b427e,null));};exports[_0xb1e6('0x55')]=function(_0x48778,_0x558c78){return db[_0xb1e6('0x3f')][_0xb1e6('0x55')](_0x48778[_0xb1e6('0x56')],{})[_0xb1e6('0x1f')](function(_0x5a805f){var _0x18af4a=_0x48778[_0xb1e6('0x57')][_0xb1e6('0x58')]({'plain':!![]});if(!_0x18af4a)throw new Error(_0xb1e6('0x59'));if(_0x18af4a[_0xb1e6('0x5a')]==='user'){var _0xeb2d17=_0x5a805f[_0xb1e6('0x58')]({'plain':!![]});var _0x1632f2=_0xb1e6('0x38');return db['UserProfileSection'][_0xb1e6('0x5b')]({'where':{'name':_0x1632f2,'userProfileId':_0x18af4a[_0xb1e6('0x5c')]},'raw':!![]})[_0xb1e6('0x1f')](function(_0x343800){if(_0x343800&&_0x343800[_0xb1e6('0x5d')]===0x0){return db['UserProfileResource'][_0xb1e6('0x55')]({'name':_0xeb2d17['name'],'resourceId':_0xeb2d17['id'],'type':_0x343800[_0xb1e6('0x3a')],'sectionId':_0x343800['id']},{})['then'](function(){return _0x5a805f;});}else{return _0x5a805f;}})[_0xb1e6('0x29')](function(_0xdc4b13){logger[_0xb1e6('0x25')](_0xb1e6('0x5e'),_0xdc4b13);throw _0xdc4b13;});}return _0x5a805f;})[_0xb1e6('0x1f')](respondWithResult(_0x558c78,0xc9))[_0xb1e6('0x29')](handleError(_0x558c78,null));};exports[_0xb1e6('0x36')]=function(_0x4fc02e,_0x41ddd7){if(_0x4fc02e[_0xb1e6('0x56')]['id']){delete _0x4fc02e['body']['id'];}return db['OpenchannelAccount']['find']({'where':{'id':_0x4fc02e[_0xb1e6('0x5f')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0xb1e6('0x1f')](handleEntityNotFound(_0x41ddd7,null))['then'](saveUpdates(_0x4fc02e[_0xb1e6('0x56')],null))['then'](respondWithResult(_0x41ddd7,null))[_0xb1e6('0x29')](handleError(_0x41ddd7,null));};exports[_0xb1e6('0x37')]=function(_0x525d88,_0xd910d1){return db[_0xb1e6('0x3f')][_0xb1e6('0x5b')]({'where':{'id':_0x525d88[_0xb1e6('0x5f')]['id']}})['then'](handleEntityNotFound(_0xd910d1,null))['then'](removeEntity(_0xd910d1,null))[_0xb1e6('0x29')](handleError(_0xd910d1,null));};exports[_0xb1e6('0x60')]=function(_0x76f11f,_0x947f9f){return db[_0xb1e6('0x3f')][_0xb1e6('0x60')]()[_0xb1e6('0x1f')](respondWithResult(_0x947f9f,null))['catch'](handleError(_0x947f9f,null));};exports[_0xb1e6('0x61')]=function(_0x42f713,_0x57a736,_0x56abeb){if(_0x42f713[_0xb1e6('0x56')]['id']){delete _0x42f713[_0xb1e6('0x56')]['id'];}return db['OpenchannelAccount'][_0xb1e6('0x5b')]({'where':{'id':_0x42f713['params']['id']}})[_0xb1e6('0x1f')](handleEntityNotFound(_0x57a736,null))[_0xb1e6('0x1f')](function(_0x53fd28){if(_0x53fd28){_0x42f713[_0xb1e6('0x56')][_0xb1e6('0x62')]=_0x53fd28['id'];return db[_0xb1e6('0x63')]['create'](_0x42f713[_0xb1e6('0x56')]);}})[_0xb1e6('0x1f')](respondWithResult(_0x57a736,null))['catch'](handleError(_0x57a736,null));};exports[_0xb1e6('0x64')]=function(_0x21ff46,_0x13e1ae,_0x598523){var _0x53918f={'raw':![],'where':{}};var _0x56de57={};var _0x2a47bc={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0xb1e6('0x65')]({'where':{'id':_0x21ff46[_0xb1e6('0x5f')]['id']}})[_0xb1e6('0x1f')](handleEntityNotFound(_0x13e1ae,null))[_0xb1e6('0x1f')](function(_0x47737b){if(_0x47737b){_0x56de57[_0xb1e6('0x42')]=_[_0xb1e6('0x44')](db[_0xb1e6('0x63')]['rawAttributes']);_0x56de57[_0xb1e6('0x43')]=_['keys'](_0x21ff46[_0xb1e6('0x43')]);_0x56de57[_0xb1e6('0x4c')]=_[_0xb1e6('0x45')](_0x56de57[_0xb1e6('0x42')],_0x56de57[_0xb1e6('0x43')]);_0x53918f[_0xb1e6('0x46')]=_[_0xb1e6('0x45')](_0x56de57[_0xb1e6('0x42')],qs[_0xb1e6('0x47')](_0x21ff46[_0xb1e6('0x43')]['fields']));_0x53918f[_0xb1e6('0x46')]=_0x53918f[_0xb1e6('0x46')][_0xb1e6('0x48')]?_0x53918f[_0xb1e6('0x46')]:_0x56de57[_0xb1e6('0x42')];if(!_0x21ff46['query'][_0xb1e6('0x66')]('nolimit')){_0x53918f[_0xb1e6('0x2e')]=qs[_0xb1e6('0x2e')](_0x21ff46[_0xb1e6('0x43')]['limit']);_0x53918f[_0xb1e6('0x2d')]=qs['offset'](_0x21ff46[_0xb1e6('0x43')][_0xb1e6('0x2d')]);}_0x53918f[_0xb1e6('0x4a')]=qs[_0xb1e6('0x67')](_0x21ff46[_0xb1e6('0x43')]['sort']);_0x53918f[_0xb1e6('0x4b')]=qs['filters'](_[_0xb1e6('0x68')](_0x21ff46[_0xb1e6('0x43')],_0x56de57[_0xb1e6('0x4c')]));_0x53918f[_0xb1e6('0x4b')][_0xb1e6('0x62')]=_0x47737b['id'];if(_0x21ff46[_0xb1e6('0x43')][_0xb1e6('0x4e')]){_0x53918f[_0xb1e6('0x4b')]=_[_0xb1e6('0x4d')](_0x53918f[_0xb1e6('0x4b')],{'$or':_[_0xb1e6('0x3e')](_0x53918f[_0xb1e6('0x46')],function(_0x4c0329){var _0x3abb40={};_0x3abb40[_0x4c0329]={'$like':'%'+_0x21ff46['query'][_0xb1e6('0x4e')]+'%'};return _0x3abb40;})});}_0x53918f=_['merge']({},_0x53918f,_0x21ff46[_0xb1e6('0x54')]);return db['Disposition'][_0xb1e6('0x30')]({'where':_0x53918f['where']})[_0xb1e6('0x1f')](function(_0x168d37){_0x2a47bc['count']=_0x168d37;if(_0x21ff46[_0xb1e6('0x43')][_0xb1e6('0x4f')]){_0x53918f[_0xb1e6('0x50')]=[{'all':!![]}];}return db['Disposition'][_0xb1e6('0x51')](_0x53918f);})[_0xb1e6('0x1f')](function(_0x54bb34){_0x2a47bc['rows']=_0x54bb34;return _0x2a47bc;});}})['then'](respondWithFilteredResult(_0x13e1ae,_0x53918f))['catch'](handleError(_0x13e1ae,null));};exports[_0xb1e6('0x69')]=function(_0x101cef,_0x252d0f,_0xec11f3){return db[_0xb1e6('0x3f')][_0xb1e6('0x5b')]({'where':{'id':_0x101cef['params']['id']}})[_0xb1e6('0x1f')](handleEntityNotFound(_0x252d0f,null))[_0xb1e6('0x1f')](function(_0x25c2ab){if(_0x25c2ab){return _0x25c2ab[_0xb1e6('0x69')](_0x101cef['query'][_0xb1e6('0x6a')]);}})[_0xb1e6('0x1f')](respondWithStatusCode(_0x252d0f,null))[_0xb1e6('0x29')](handleError(_0x252d0f,null));};exports[_0xb1e6('0x6b')]=function(_0x567b55,_0x57b7f8,_0x1b373d){if(_0x567b55[_0xb1e6('0x56')]['id']){delete _0x567b55['body']['id'];}return db[_0xb1e6('0x3f')]['find']({'where':{'id':_0x567b55[_0xb1e6('0x5f')]['id']}})[_0xb1e6('0x1f')](handleEntityNotFound(_0x57b7f8,null))[_0xb1e6('0x1f')](function(_0x8be3ac){if(_0x8be3ac){_0x567b55['body']['OpenchannelAccountId']=_0x8be3ac['id'];return db['CannedAnswer'][_0xb1e6('0x55')](_0x567b55[_0xb1e6('0x56')]);}})[_0xb1e6('0x1f')](respondWithResult(_0x57b7f8,null))[_0xb1e6('0x29')](handleError(_0x57b7f8,null));};exports['getAnswers']=function(_0x4ca10e,_0x2cd5d8,_0x2764bc){var _0x40e712={'raw':![],'where':{}};var _0x49f53c={};var _0x42997d={'count':0x0,'rows':[]};return db[_0xb1e6('0x3f')][_0xb1e6('0x65')]({'where':{'id':_0x4ca10e[_0xb1e6('0x5f')]['id']}})[_0xb1e6('0x1f')](handleEntityNotFound(_0x2cd5d8,null))[_0xb1e6('0x1f')](function(_0x4250f8){if(_0x4250f8){_0x49f53c['model']=_[_0xb1e6('0x44')](db[_0xb1e6('0x6c')][_0xb1e6('0x53')]);_0x49f53c[_0xb1e6('0x43')]=_[_0xb1e6('0x44')](_0x4ca10e[_0xb1e6('0x43')]);_0x49f53c['filters']=_[_0xb1e6('0x45')](_0x49f53c['model'],_0x49f53c[_0xb1e6('0x43')]);_0x40e712['attributes']=_['intersection'](_0x49f53c[_0xb1e6('0x42')],qs[_0xb1e6('0x47')](_0x4ca10e[_0xb1e6('0x43')]['fields']));_0x40e712[_0xb1e6('0x46')]=_0x40e712[_0xb1e6('0x46')]['length']?_0x40e712[_0xb1e6('0x46')]:_0x49f53c[_0xb1e6('0x42')];if(!_0x4ca10e[_0xb1e6('0x43')]['hasOwnProperty'](_0xb1e6('0x49'))){_0x40e712[_0xb1e6('0x2e')]=qs[_0xb1e6('0x2e')](_0x4ca10e[_0xb1e6('0x43')][_0xb1e6('0x2e')]);_0x40e712[_0xb1e6('0x2d')]=qs[_0xb1e6('0x2d')](_0x4ca10e[_0xb1e6('0x43')][_0xb1e6('0x2d')]);}_0x40e712[_0xb1e6('0x4a')]=qs[_0xb1e6('0x67')](_0x4ca10e[_0xb1e6('0x43')][_0xb1e6('0x67')]);_0x40e712[_0xb1e6('0x4b')]=qs['filters'](_[_0xb1e6('0x68')](_0x4ca10e[_0xb1e6('0x43')],_0x49f53c[_0xb1e6('0x4c')]));_0x40e712['where']['OpenchannelAccountId']=_0x4250f8['id'];if(_0x4ca10e['query'][_0xb1e6('0x4e')]){_0x40e712[_0xb1e6('0x4b')]=_[_0xb1e6('0x4d')](_0x40e712[_0xb1e6('0x4b')],{'$or':_[_0xb1e6('0x3e')](_0x40e712['attributes'],function(_0x46f6b3){var _0xd3136={};_0xd3136[_0x46f6b3]={'$like':'%'+_0x4ca10e['query'][_0xb1e6('0x4e')]+'%'};return _0xd3136;})});}_0x40e712=_[_0xb1e6('0x4d')]({},_0x40e712,_0x4ca10e[_0xb1e6('0x54')]);return db['CannedAnswer'][_0xb1e6('0x30')]({'where':_0x40e712['where']})[_0xb1e6('0x1f')](function(_0x46755e){_0x42997d['count']=_0x46755e;if(_0x4ca10e[_0xb1e6('0x43')][_0xb1e6('0x4f')]){_0x40e712[_0xb1e6('0x50')]=[{'all':!![]}];}return db[_0xb1e6('0x6c')][_0xb1e6('0x51')](_0x40e712);})['then'](function(_0x4c8dd4){_0x42997d[_0xb1e6('0x6d')]=_0x4c8dd4;return _0x42997d;});}})['then'](respondWithFilteredResult(_0x2cd5d8,_0x40e712))[_0xb1e6('0x29')](handleError(_0x2cd5d8,null));};exports[_0xb1e6('0x6e')]=function(_0x27fe15,_0x2c4b83,_0x5434d7){return db[_0xb1e6('0x3f')][_0xb1e6('0x5b')]({'where':{'id':_0x27fe15[_0xb1e6('0x5f')]['id']}})[_0xb1e6('0x1f')](handleEntityNotFound(_0x2c4b83,null))['then'](function(_0x42b61a){if(_0x42b61a){return _0x42b61a[_0xb1e6('0x6e')](_0x27fe15[_0xb1e6('0x43')][_0xb1e6('0x6a')]);}})['then'](respondWithStatusCode(_0x2c4b83,null))[_0xb1e6('0x29')](handleError(_0x2c4b83,null));};exports[_0xb1e6('0x6f')]=function(_0x3635d8,_0x558f28,_0x1cdb01){var _0x44bf00={'body':_0x3635d8['body'],'channel':'openchannel'};var _0x448939=[];var _0x245609=[];var _0x3ac630={};var _0x1c0920=![];return db[_0xb1e6('0x70')][_0xb1e6('0x60')]()[_0xb1e6('0x1f')](function(_0x4a0dd8){if(!_0x4a0dd8){throw new db['Sequelize'][(_0xb1e6('0x71'))](_0xb1e6('0x72'));}_0x448939=_[_0xb1e6('0x73')](_[_0xb1e6('0x44')](_0x4a0dd8),['createdAt','updatedAt']);_0x245609=_[_0xb1e6('0x73')](_['keys'](_0x4a0dd8),[_0xb1e6('0x74'),_0xb1e6('0x75'),_0xb1e6('0x76'),_0xb1e6('0x77')]);if(_0x3635d8[_0xb1e6('0x56')]['id']){delete _0x3635d8['body']['id'];}if(_[_0xb1e6('0x78')](_0x3635d8['body'][_0xb1e6('0x79')])){throw new db[(_0xb1e6('0x7a'))]['ValidationError'](_0xb1e6('0x7b'));}if(_[_0xb1e6('0x78')](_0x3635d8[_0xb1e6('0x56')][_0xb1e6('0x56')])||_0x3635d8[_0xb1e6('0x56')][_0xb1e6('0x56')]===''){throw new db[(_0xb1e6('0x7a'))][(_0xb1e6('0x71'))](_0xb1e6('0x7c'));}if(_[_0xb1e6('0x78')](_0x3635d8['body'][_0xb1e6('0x7d')])){throw new db['Sequelize']['ValidationError'](_0xb1e6('0x7e')+_0x245609);}if(!_[_0xb1e6('0x7f')](_0x245609,_0x3635d8[_0xb1e6('0x56')]['mapKey'])){throw new db[(_0xb1e6('0x7a'))][(_0xb1e6('0x71'))](_0xb1e6('0x80')+_0x245609);}_0x3ac630[_0x3635d8[_0xb1e6('0x56')]['mapKey']]=_0x3635d8[_0xb1e6('0x56')][_0xb1e6('0x79')];})[_0xb1e6('0x1f')](function(){return db['OpenchannelAccount'][_0xb1e6('0x5b')]({'where':{'id':_0x3635d8['params']['id']},'include':[{'model':db[_0xb1e6('0x81')],'as':_0xb1e6('0x82'),'include':[{'model':db[_0xb1e6('0x70')],'as':_0xb1e6('0x83'),'where':_0x3ac630,'limit':0x1,'order':[['updatedAt',_0xb1e6('0x84')]]}]},{'model':db[_0xb1e6('0x85')],'as':_0xb1e6('0x86')}]});})['then'](handleEntityNotFound(_0x558f28,null))[_0xb1e6('0x1f')](function(_0x19c9a6){if(_0x19c9a6&&_0x19c9a6['List']){_0x44bf00['account']=_0x19c9a6;_0x44bf00[_0xb1e6('0x87')]=_0x19c9a6[_0xb1e6('0x86')];_0x44bf00[_0xb1e6('0x88')]=_0x19c9a6[_0xb1e6('0x82')];_0x44bf00[_0xb1e6('0x87')]=_[_0xb1e6('0x89')](_0x44bf00[_0xb1e6('0x87')],['priority'],['asc']);if(_0x44bf00[_0xb1e6('0x8a')][_0xb1e6('0x86')]){delete _0x44bf00[_0xb1e6('0x8a')][_0xb1e6('0x86')];}if(_0x44bf00[_0xb1e6('0x8a')]['List']&&_0x44bf00['account']['List'][_0xb1e6('0x83')][_0xb1e6('0x48')]){return _0x44bf00[_0xb1e6('0x8a')][_0xb1e6('0x82')][_0xb1e6('0x83')][0x0];}var _0x4a8867=_[_0xb1e6('0x16')](_0x3635d8[_0xb1e6('0x56')],{'firstName':_0x3635d8[_0xb1e6('0x56')]['from'],'ListId':_0x19c9a6['ListId']});_0x4a8867[_0x3635d8[_0xb1e6('0x56')]['mapKey']]=_0x3635d8['body'][_0xb1e6('0x79')];return db[_0xb1e6('0x70')][_0xb1e6('0x55')](_0x4a8867,{'fields':_0x448939,'raw':!![]});}})[_0xb1e6('0x1f')](handleEntityNotFound(_0x558f28,null))[_0xb1e6('0x1f')](function(_0x172f2e){_0x44bf00[_0xb1e6('0x8b')]=_0x172f2e;if(_0x172f2e){var _0x315299={'ContactId':_0x172f2e['id'],'OpenchannelAccountId':_0x3635d8[_0xb1e6('0x5f')]['id'],'from':(_0x172f2e[_0xb1e6('0x8c')]||'')+'\x20'+(_0x172f2e[_0xb1e6('0x8d')]||'')};var _0x2dbca0={'OpenchannelAccountId':_0x3635d8[_0xb1e6('0x5f')]['id'],'closed':![]};if(_0x3635d8[_0xb1e6('0x56')][_0xb1e6('0x8e')]){_0x2dbca0[_0xb1e6('0x8e')]=_0x3635d8['body'][_0xb1e6('0x8e')];return db[_0xb1e6('0x8f')][_0xb1e6('0x5b')]({'where':_0x2dbca0})[_0xb1e6('0x1f')](function(_0x20dda1){if(_0x20dda1){return[_0x20dda1,![]];}_0x315299['threadId']=_0x3635d8[_0xb1e6('0x56')]['threadId'];_0x315299['externalUrl']=_0x3635d8[_0xb1e6('0x56')][_0xb1e6('0x90')];return db[_0xb1e6('0x8f')][_0xb1e6('0x55')](_0x315299)[_0xb1e6('0x1f')](function(_0x494547){return[_0x494547,!![]];});});}else{_0x2dbca0[_0xb1e6('0x8e')]=null;}_0x2dbca0[_0xb1e6('0x91')]=_0x172f2e['id'];return db[_0xb1e6('0x8f')][_0xb1e6('0x5b')]({'where':_0x2dbca0})[_0xb1e6('0x1f')](function(_0x5adcf4){if(_0x5adcf4){return[_0x5adcf4,![]];}return db[_0xb1e6('0x8f')][_0xb1e6('0x55')](_0x315299)[_0xb1e6('0x1f')](function(_0x1a17ff){return[_0x1a17ff,!![]];});});}})[_0xb1e6('0x92')](function(_0x59c8d9,_0x5e2154){if(_0x59c8d9){_0x1c0920=_0x5e2154;if(!_0x5e2154){var _0x56b0c2={'from':(_0x44bf00[_0xb1e6('0x8b')]['firstName']||'')+'\x20'+(_0x44bf00['contact'][_0xb1e6('0x8d')]||'')};if(_0x3635d8[_0xb1e6('0x56')][_0xb1e6('0x8e')]&&_0x3635d8[_0xb1e6('0x56')][_0xb1e6('0x93')]&&_0x3635d8['body'][_0xb1e6('0x8e')]!=_0x3635d8[_0xb1e6('0x56')][_0xb1e6('0x93')]){_0x56b0c2[_0xb1e6('0x8e')]=_0x3635d8[_0xb1e6('0x56')][_0xb1e6('0x93')];}return _0x59c8d9[_0xb1e6('0x36')](_0x56b0c2);}else{return _0x59c8d9;}}})[_0xb1e6('0x1f')](function(_0x3b1d98){_0x44bf00[_0xb1e6('0x94')]=_0x3b1d98[_0xb1e6('0x58')]({'plain':!![]});_0x44bf00[_0xb1e6('0x94')][_0xb1e6('0x95')]=_0x1c0920;if(_0x44bf00[_0xb1e6('0x94')][_0xb1e6('0x95')]){if(_0x44bf00['account'][_0xb1e6('0x96')]){_0x44bf00[_0xb1e6('0x87')][_0xb1e6('0x97')]({'id':0x0,'priority':_0x44bf00['applications'][_0xb1e6('0x48')]+0x1,'app':_0xb1e6('0x98'),'appdata':_0xb1e6('0x99'),'interval':_0xb1e6('0x9a')});}}return db[_0xb1e6('0x9b')][_0xb1e6('0x55')]({'body':_0x3635d8[_0xb1e6('0x56')][_0xb1e6('0x56')],'OpenchannelAccountId':_0x3635d8[_0xb1e6('0x5f')]['id'],'OpenchannelInteractionId':_0x3b1d98['id'],'direction':'in','ContactId':_0x44bf00[_0xb1e6('0x8b')]['id'],'AttachmentId':_0x3635d8[_0xb1e6('0x56')][_0xb1e6('0x9c')]});})[_0xb1e6('0x1f')](function(_0x100db7){_0x44bf00['message']=_0x100db7;if(_0x44bf00[_0xb1e6('0x94')][_0xb1e6('0x9d')]){return db[_0xb1e6('0x9e')]['find']({'attributes':['id',_0xb1e6('0x3a')],'where':{'id':_0x44bf00[_0xb1e6('0x94')][_0xb1e6('0x9d')]}})[_0xb1e6('0x1f')](function(_0x35c54b){if(_0x35c54b){_0x44bf00[_0xb1e6('0x87')][_0xb1e6('0x9f')]({'id':0x0,'priority':0x0,'app':_0xb1e6('0xa0'),'appdata':_0x35c54b[_0xb1e6('0x3a')]+','+(_0x44bf00[_0xb1e6('0x8a')][_0xb1e6('0xa1')]||0xa),'interval':_0xb1e6('0x9a')});_0x44bf00['forcedOwnership']=![];}return respondWithRpcPromise(_0xb1e6('0xa2'),_0xb1e6('0xa3'),_0x44bf00);});}return respondWithRpcPromise('Start','startRouting',_0x44bf00);})[_0xb1e6('0x1f')](function(_0x439a98){respondWithRpcPromise(_0xb1e6('0xa4'),'EventManager',{'event':_0xb1e6('0x6f'),'message':_0x439a98},client9002);return _0x439a98;})['then'](respondWithResult(_0x558f28,null))[_0xb1e6('0x29')](handleError(_0x558f28,null));};exports[_0xb1e6('0xa5')]=function(_0x598dc3,_0x11bf10,_0x9717c3){return db[_0xb1e6('0x3f')][_0xb1e6('0x65')]({'where':{'id':_0x598dc3[_0xb1e6('0x5f')]['id']}})['then'](handleEntityNotFound(_0x11bf10,null))['then'](function(_0x599657){if(_0x599657){return db['sequelize'][_0xb1e6('0xa6')](function(_0x92c9b){return db[_0xb1e6('0x85')]['destroy']({'where':{'OpenchannelAccountId':_0x598dc3[_0xb1e6('0x5f')]['id']},'transaction':_0x92c9b})['then'](function(_0x5543b2){var _0x1674b5=_['map'](_0x598dc3['body'],function(_0x4dec89){_0x4dec89[_0xb1e6('0x62')]=_0x598dc3['params']['id'];return _0x4dec89;});return db[_0xb1e6('0x85')][_0xb1e6('0xa7')](_0x1674b5,{'transaction':_0x92c9b});});})[_0xb1e6('0x1f')](function(){return db[_0xb1e6('0x85')][_0xb1e6('0xa8')]({'where':{'OpenchannelAccountId':_0x598dc3[_0xb1e6('0x5f')]['id']},'order':_0xb1e6('0xa9')});});}})['then'](respondWithResult(_0x11bf10,null))['catch'](handleError(_0x11bf10,null));};exports[_0xb1e6('0xaa')]=function(_0x10724b,_0x39983b,_0xbb4d86){var _0x3b2252={};var _0x5987ba={};var _0x1f43ad;var _0x48f586;return db['OpenchannelAccount'][_0xb1e6('0x65')]({'where':{'id':_0x10724b[_0xb1e6('0x5f')]['id']}})[_0xb1e6('0x1f')](handleEntityNotFound(_0x39983b,null))['then'](function(_0x10b677){if(_0x10b677){_0x1f43ad=_0x10b677;_0x5987ba[_0xb1e6('0x42')]=_[_0xb1e6('0x44')](db['OpenchannelApplication'][_0xb1e6('0x53')]);_0x5987ba[_0xb1e6('0x43')]=_[_0xb1e6('0x44')](_0x10724b[_0xb1e6('0x43')]);_0x5987ba['filters']=_['intersection'](_0x5987ba[_0xb1e6('0x42')],_0x5987ba[_0xb1e6('0x43')]);_0x3b2252['attributes']=_[_0xb1e6('0x45')](_0x5987ba[_0xb1e6('0x42')],qs[_0xb1e6('0x47')](_0x10724b[_0xb1e6('0x43')][_0xb1e6('0x47')]));_0x3b2252[_0xb1e6('0x46')]=_0x3b2252[_0xb1e6('0x46')][_0xb1e6('0x48')]?_0x3b2252[_0xb1e6('0x46')]:_0x5987ba[_0xb1e6('0x42')];_0x3b2252[_0xb1e6('0x4a')]=qs['sort'](_0x10724b[_0xb1e6('0x43')][_0xb1e6('0x67')]);_0x3b2252[_0xb1e6('0x4b')]=qs[_0xb1e6('0x4c')](_[_0xb1e6('0x68')](_0x10724b['query'],_0x5987ba['filters']));if(_0x10724b[_0xb1e6('0x43')][_0xb1e6('0x4e')]){_0x3b2252[_0xb1e6('0x4b')]=_['merge'](_0x3b2252['where'],{'$or':_['map'](_0x3b2252[_0xb1e6('0x46')],function(_0x17a37e){var _0xbed532={};_0xbed532[_0x17a37e]={'$like':'%'+_0x10724b[_0xb1e6('0x43')][_0xb1e6('0x4e')]+'%'};return _0xbed532;})});}_0x3b2252=_[_0xb1e6('0x4d')]({},_0x3b2252,_0x10724b[_0xb1e6('0x54')]);return _0x1f43ad[_0xb1e6('0xaa')](_0x3b2252);}})[_0xb1e6('0x1f')](function(_0x288f50){if(_0x288f50){_0x48f586=_0x288f50['length'];if(!_0x10724b[_0xb1e6('0x43')][_0xb1e6('0x66')](_0xb1e6('0x49'))){_0x3b2252[_0xb1e6('0x2e')]=qs[_0xb1e6('0x2e')](_0x10724b[_0xb1e6('0x43')][_0xb1e6('0x2e')]);_0x3b2252[_0xb1e6('0x2d')]=qs['offset'](_0x10724b['query']['offset']);}return _0x1f43ad[_0xb1e6('0xaa')](_0x3b2252);}})[_0xb1e6('0x1f')](function(_0x5abc37){if(_0x5abc37){return _0x5abc37?{'count':_0x48f586,'rows':_0x5abc37}:null;}})[_0xb1e6('0x1f')](respondWithResult(_0x39983b,null))['catch'](handleError(_0x39983b,null));};exports[_0xb1e6('0xab')]=function(_0x5d530e,_0x304d3c,_0x1f9628){var _0x155727={'raw':![],'where':{}};var _0x2aef7b={};var _0x53b987={'count':0x0,'rows':[]};return db[_0xb1e6('0x3f')][_0xb1e6('0x65')]({'where':{'id':_0x5d530e[_0xb1e6('0x5f')]['id']}})[_0xb1e6('0x1f')](handleEntityNotFound(_0x304d3c,null))[_0xb1e6('0x1f')](function(_0x133d13){if(_0x133d13){_0x2aef7b['model']=_[_0xb1e6('0x44')](db[_0xb1e6('0x8f')]['rawAttributes']);_0x2aef7b[_0xb1e6('0x43')]=_['keys'](_0x5d530e[_0xb1e6('0x43')]);_0x2aef7b[_0xb1e6('0x4c')]=_[_0xb1e6('0x45')](_0x2aef7b['model'],_0x2aef7b[_0xb1e6('0x43')]);_0x155727[_0xb1e6('0x46')]=_[_0xb1e6('0x45')](_0x2aef7b['model'],qs[_0xb1e6('0x47')](_0x5d530e['query'][_0xb1e6('0x47')]));_0x155727['attributes']=_0x155727[_0xb1e6('0x46')][_0xb1e6('0x48')]?_0x155727['attributes']:_0x2aef7b['model'];if(!_0x5d530e[_0xb1e6('0x43')][_0xb1e6('0x66')](_0xb1e6('0x49'))){_0x155727[_0xb1e6('0x2e')]=qs[_0xb1e6('0x2e')](_0x5d530e[_0xb1e6('0x43')]['limit']);_0x155727[_0xb1e6('0x2d')]=qs[_0xb1e6('0x2d')](_0x5d530e[_0xb1e6('0x43')][_0xb1e6('0x2d')]);}_0x155727['order']=qs[_0xb1e6('0x67')](_0x5d530e[_0xb1e6('0x43')][_0xb1e6('0x67')]);_0x155727[_0xb1e6('0x4b')]=qs[_0xb1e6('0x4c')](_[_0xb1e6('0x68')](_0x5d530e[_0xb1e6('0x43')],_0x2aef7b[_0xb1e6('0x4c')]));_0x155727[_0xb1e6('0x4b')][_0xb1e6('0x62')]=_0x133d13['id'];if(_0x5d530e[_0xb1e6('0x43')][_0xb1e6('0x4e')]){_0x155727[_0xb1e6('0x4b')]=_[_0xb1e6('0x4d')](_0x155727['where'],{'$or':_[_0xb1e6('0x3e')](_0x155727[_0xb1e6('0x46')],function(_0x419123){var _0x1d4c50={};_0x1d4c50[_0x419123]={'$like':'%'+_0x5d530e[_0xb1e6('0x43')][_0xb1e6('0x4e')]+'%'};return _0x1d4c50;})});}_0x155727=_['merge']({},_0x155727,_0x5d530e[_0xb1e6('0x54')]);return db[_0xb1e6('0x8f')][_0xb1e6('0x30')]({'where':_0x155727[_0xb1e6('0x4b')]})[_0xb1e6('0x1f')](function(_0x53a652){_0x53b987[_0xb1e6('0x30')]=_0x53a652;if(_0x5d530e[_0xb1e6('0x43')][_0xb1e6('0x4f')]){_0x155727['include']=[{'model':db[_0xb1e6('0x70')],'as':_0xb1e6('0xac'),'required':![]},{'model':db[_0xb1e6('0x9e')],'as':_0xb1e6('0xad'),'attributes':['name',_0xb1e6('0xae'),_0xb1e6('0xaf')],'required':![]},{'model':db[_0xb1e6('0xb0')],'as':_0xb1e6('0xb1'),'attributes':['id',_0xb1e6('0x3a'),_0xb1e6('0xb2')],'where':_0x5d530e['query']['tag']?{'id':_0x5d530e[_0xb1e6('0x43')][_0xb1e6('0xb3')]}:undefined,'required':_0x5d530e[_0xb1e6('0x43')]['tag']?!![]:![]}];}return db['OpenchannelInteraction'][_0xb1e6('0x51')](_0x155727);})['then'](function(_0x388608){_0x53b987[_0xb1e6('0x6d')]=_0x388608;return _0x53b987;});}})[_0xb1e6('0x1f')](respondWithFilteredResult(_0x304d3c,_0x155727))[_0xb1e6('0x29')](handleError(_0x304d3c,null));};exports[_0xb1e6('0xb4')]=function(_0x57867a,_0x7060ce,_0x5e66fe){return db[_0xb1e6('0x3f')][_0xb1e6('0x5b')]({'where':{'id':_0x57867a[_0xb1e6('0x5f')]['id']}})['then'](handleEntityNotFound(_0x7060ce,null))[_0xb1e6('0x1f')](function(_0x52c7a5){if(_0x52c7a5){return _0x52c7a5[_0xb1e6('0xb4')](_0x57867a['body'][_0xb1e6('0x6a')],_[_0xb1e6('0xb5')](_0x57867a['body'],[_0xb1e6('0x6a'),'id'])||{})[_0xb1e6('0x92')](function(_0x5bb975){for(var _0x2e40a3=0x0;_0x2e40a3<_0x57867a['body']['ids'][_0xb1e6('0x48')];_0x2e40a3+=0x1){socket['emit'](_0xb1e6('0xb6'),{'UserId':Number(_0x57867a[_0xb1e6('0x56')][_0xb1e6('0x6a')][_0x2e40a3]),'OpenchannelAccountId':Number(_0x57867a['params']['id'])});}return _0x5bb975;});}})[_0xb1e6('0x1f')](respondWithResult(_0x7060ce,null))[_0xb1e6('0x29')](handleError(_0x7060ce,null));};exports[_0xb1e6('0xb7')]=function(_0x11e46d,_0x152980,_0x9b9d88){return db[_0xb1e6('0x3f')][_0xb1e6('0x5b')]({'where':{'id':_0x11e46d[_0xb1e6('0x5f')]['id']}})['then'](handleEntityNotFound(_0x152980,null))[_0xb1e6('0x1f')](function(_0x3ab55f){if(_0x3ab55f){return _0x3ab55f[_0xb1e6('0xb7')](_0x11e46d[_0xb1e6('0x43')]['ids'])[_0xb1e6('0x1f')](function(){if(_[_0xb1e6('0xb8')](_0x11e46d[_0xb1e6('0x43')][_0xb1e6('0x6a')])){for(var _0x55ad2d=0x0;_0x55ad2d<_0x11e46d[_0xb1e6('0x43')]['ids'][_0xb1e6('0x48')];_0x55ad2d+=0x1){socket['emit'](_0xb1e6('0xb9'),{'UserId':Number(_0x11e46d[_0xb1e6('0x43')][_0xb1e6('0x6a')][_0x55ad2d]),'OpenchannelAccountId':Number(_0x11e46d[_0xb1e6('0x5f')]['id'])});}}else{socket[_0xb1e6('0xba')](_0xb1e6('0xb9'),{'UserId':Number(_0x11e46d[_0xb1e6('0x43')]['ids']),'OpenchannelAccountId':Number(_0x11e46d[_0xb1e6('0x5f')]['id'])});}});}})[_0xb1e6('0x1f')](respondWithStatusCode(_0x152980,null))[_0xb1e6('0x29')](handleError(_0x152980,null));};exports[_0xb1e6('0xbb')]=function(_0x106057,_0x5f3d67,_0x187b58){var _0x398251={};var _0x5ad9dd={};var _0x462e74;var _0x1bc870;return db[_0xb1e6('0x3f')]['findOne']({'where':{'id':_0x106057[_0xb1e6('0x5f')]['id']}})[_0xb1e6('0x1f')](handleEntityNotFound(_0x5f3d67,null))['then'](function(_0x55ca5a){if(_0x55ca5a){_0x462e74=_0x55ca5a;_0x5ad9dd[_0xb1e6('0x42')]=_['keys'](db['User'][_0xb1e6('0x53')]);_0x5ad9dd[_0xb1e6('0x43')]=_[_0xb1e6('0x44')](_0x106057[_0xb1e6('0x43')]);_0x5ad9dd[_0xb1e6('0x4c')]=_[_0xb1e6('0x45')](_0x5ad9dd[_0xb1e6('0x42')],_0x5ad9dd[_0xb1e6('0x43')]);_0x398251['attributes']=_[_0xb1e6('0x45')](_0x5ad9dd[_0xb1e6('0x42')],qs[_0xb1e6('0x47')](_0x106057[_0xb1e6('0x43')][_0xb1e6('0x47')]));_0x398251['attributes']=_0x398251['attributes'][_0xb1e6('0x48')]?_0x398251['attributes']:_0x5ad9dd['model'];_0x398251[_0xb1e6('0x4a')]=qs['sort'](_0x106057[_0xb1e6('0x43')][_0xb1e6('0x67')]);_0x398251[_0xb1e6('0x4b')]=qs[_0xb1e6('0x4c')](_[_0xb1e6('0x68')](_0x106057[_0xb1e6('0x43')],_0x5ad9dd[_0xb1e6('0x4c')]));if(_0x106057[_0xb1e6('0x43')][_0xb1e6('0x4e')]){_0x398251['where']=_[_0xb1e6('0x4d')](_0x398251[_0xb1e6('0x4b')],{'$or':_['map'](_0x398251[_0xb1e6('0x46')],function(_0x216ae7){var _0x1a1958={};_0x1a1958[_0x216ae7]={'$like':'%'+_0x106057[_0xb1e6('0x43')][_0xb1e6('0x4e')]+'%'};return _0x1a1958;})});}_0x398251=_[_0xb1e6('0x4d')]({},_0x398251,_0x106057[_0xb1e6('0x54')]);return _0x462e74[_0xb1e6('0xbb')](_0x398251);}})[_0xb1e6('0x1f')](function(_0x1def14){if(_0x1def14){_0x1bc870=_0x1def14[_0xb1e6('0x48')];if(!_0x106057['query'][_0xb1e6('0x66')](_0xb1e6('0x49'))){_0x398251[_0xb1e6('0x2e')]=qs[_0xb1e6('0x2e')](_0x106057[_0xb1e6('0x43')]['limit']);_0x398251[_0xb1e6('0x2d')]=qs[_0xb1e6('0x2d')](_0x106057[_0xb1e6('0x43')]['offset']);}return _0x462e74['getAgents'](_0x398251);}})[_0xb1e6('0x1f')](function(_0x53d78a){if(_0x53d78a){return _0x53d78a?{'count':_0x1bc870,'rows':_0x53d78a}:null;}})['then'](respondWithResult(_0x5f3d67,null))['catch'](handleError(_0x5f3d67,null));};exports[_0xb1e6('0xbc')]=function(_0x598f8b,_0xdc579c,_0x57a9b0){var _0x3c6c90,_0x3e1ea7,_0x502628;if(_[_0xb1e6('0x78')](_0x598f8b[_0xb1e6('0x56')][_0xb1e6('0x56')])||_0x598f8b['body'][_0xb1e6('0x56')]===''){throw new db[(_0xb1e6('0x7a'))]['ValidationError'](_0xb1e6('0x7c'));}if(_[_0xb1e6('0x78')](_0x598f8b[_0xb1e6('0x56')]['to'])){}_0x3c6c90=_0x598f8b['body']['to'];return db['OpenchannelAccount'][_0xb1e6('0x65')]({'where':{'id':_0x598f8b[_0xb1e6('0x5f')]['id']}})[_0xb1e6('0x1f')](handleEntityNotFound(_0xdc579c,null))[_0xb1e6('0x1f')](function(_0x3f2dd4){if(_0x3f2dd4){return db[_0xb1e6('0x3f')][_0xb1e6('0x5b')]({'where':{'id':_0x3f2dd4['id']},'include':[{'model':db[_0xb1e6('0x81')],'as':_0xb1e6('0x82'),'include':[{'model':db[_0xb1e6('0x70')],'as':'Contacts','where':{[_0x3f2dd4['mapKey']]:_0x3c6c90},'limit':0x1,'order':[['updatedAt','DESC']]}]}]})[_0xb1e6('0x1f')](handleEntityNotFound(_0xdc579c,null))[_0xb1e6('0x1f')](function(_0x82447c){if(_0x82447c&&_0x82447c[_0xb1e6('0x82')]){_0x3e1ea7=_0x82447c['get']({'plain':!![]});if(_0x3e1ea7[_0xb1e6('0x82')]&&_0x3e1ea7[_0xb1e6('0x82')][_0xb1e6('0x83')][_0xb1e6('0x48')]){return _0x3e1ea7[_0xb1e6('0x82')][_0xb1e6('0x83')][0x0];}return db[_0xb1e6('0x70')][_0xb1e6('0x55')](_[_0xb1e6('0x16')](_0x598f8b[_0xb1e6('0x56')],{'firstName':_0x3c6c90,[_0x82447c[_0xb1e6('0x7d')]]:_0x3c6c90,'phone':_0x3c6c90,'ListId':_0x3e1ea7[_0xb1e6('0x77')]}));}})['then'](handleEntityNotFound(_0xdc579c,null))['then'](function(_0x402070){if(_0x402070){_0x502628=_0x402070;return db[_0xb1e6('0x8f')][_0xb1e6('0x5b')]({'where':{'ContactId':_0x502628['id'],'closed':![],'OpenchannelAccountId':_0x3e1ea7['id']}})[_0xb1e6('0x1f')](function(_0x5a945e){if(_0x5a945e){return[_0x5a945e,![]];}return db[_0xb1e6('0x8f')][_0xb1e6('0x55')]({'UserId':_0x598f8b[_0xb1e6('0x57')]['id'],'ContactId':_0x502628['id'],'OpenchannelAccountId':_0x3e1ea7['id'],'lastMsgDirection':_0xb1e6('0xbd'),'Messages':[_[_0xb1e6('0x4d')](_0x598f8b[_0xb1e6('0x56')],{'read':![],'body':_0x598f8b[_0xb1e6('0x56')][_0xb1e6('0x56')],'OpenchannelAccountId':_0x3e1ea7['id'],'UserId':_0x598f8b['user']['id'],'ContactId':_0x502628['id']})]},{'include':[{'model':db[_0xb1e6('0x9b')],'as':_0xb1e6('0xbe')}]})['then'](function(_0xde3744){return[_0xde3744,!![]];});});}})[_0xb1e6('0x92')](function(_0x37bf20,_0x13139c){if(_0x13139c){return _0x37bf20;}return db['OpenchannelMessage']['create'](_[_0xb1e6('0x4d')](_0x598f8b[_0xb1e6('0x56')],{'read':![],'body':_0x598f8b['body'][_0xb1e6('0x56')],'OpenchannelAccountId':_0x3e1ea7['id'],'OpenchannelInteractionId':_0x37bf20['id'],'UserId':_0x598f8b[_0xb1e6('0x57')]['id'],'ContactId':_0x502628['id']}))[_0xb1e6('0x1f')](function(_0x3437c5){_0x37bf20['dataValues'][_0xb1e6('0xbe')]=[];_0x37bf20[_0xb1e6('0xbf')][_0xb1e6('0xbe')][_0xb1e6('0x97')](_0x3437c5['dataValues']);return _0x37bf20;});});}})[_0xb1e6('0x1f')](respondWithResult(_0xdc579c,null))[_0xb1e6('0x29')](handleError(_0xdc579c,null));};
\ No newline at end of file
index fcda94f..312f769 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb688=['../../mysqldb','OpenchannelAccount','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports'];(function(_0x4e46fd,_0x5993bb){var _0x4dc5cf=function(_0xb9c857){while(--_0xb9c857){_0x4e46fd['push'](_0x4e46fd['shift']());}};_0x4dc5cf(++_0x5993bb);}(_0xb688,0xcf));var _0x8b68=function(_0x16b010,_0x55dbc3){_0x16b010=_0x16b010-0x0;var _0x27f420=_0xb688[_0x16b010];return _0x27f420;};'use strict';var EventEmitter=require('events');var OpenchannelAccount=require(_0x8b68('0x0'))['db'][_0x8b68('0x1')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x8b68('0x2')](0x0);var events={'afterCreate':_0x8b68('0x3'),'afterUpdate':_0x8b68('0x4'),'afterDestroy':_0x8b68('0x5')};function emitEvent(_0x4e281c){return function(_0x41030e,_0x27925d,_0x30f33d){OpenchannelAccountEvents[_0x8b68('0x6')](_0x4e281c+':'+_0x41030e['id'],_0x41030e);OpenchannelAccountEvents['emit'](_0x4e281c,_0x41030e);_0x30f33d(null);};}for(var e in events){if(events[_0x8b68('0x7')](e)){var event=events[e];OpenchannelAccount['hook'](e,emitEvent(event));}}module[_0x8b68('0x8')]=OpenchannelAccountEvents;
\ No newline at end of file
+var _0xb688=['../../mysqldb','OpenchannelAccount','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports'];(function(_0x511577,_0x2ec0cf){var _0x1b9201=function(_0x334aac){while(--_0x334aac){_0x511577['push'](_0x511577['shift']());}};_0x1b9201(++_0x2ec0cf);}(_0xb688,0xcf));var _0x8b68=function(_0x5dcfbb,_0x5a1090){_0x5dcfbb=_0x5dcfbb-0x0;var _0x1bbdd6=_0xb688[_0x5dcfbb];return _0x1bbdd6;};'use strict';var EventEmitter=require('events');var OpenchannelAccount=require(_0x8b68('0x0'))['db'][_0x8b68('0x1')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x8b68('0x2')](0x0);var events={'afterCreate':_0x8b68('0x3'),'afterUpdate':_0x8b68('0x4'),'afterDestroy':_0x8b68('0x5')};function emitEvent(_0x4e281c){return function(_0x41030e,_0x27925d,_0x30f33d){OpenchannelAccountEvents[_0x8b68('0x6')](_0x4e281c+':'+_0x41030e['id'],_0x41030e);OpenchannelAccountEvents['emit'](_0x4e281c,_0x41030e);_0x30f33d(null);};}for(var e in events){if(events[_0x8b68('0x7')](e)){var event=events[e];OpenchannelAccount['hook'](e,emitEvent(event));}}module[_0x8b68('0x8')]=OpenchannelAccountEvents;
\ No newline at end of file
index b7734e0..00f25eb 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(_0x5c5965,_0x427b14){var _0x3628a4=function(_0xe0db3a){while(--_0xe0db3a){_0x5c5965['push'](_0x5c5965['shift']());}};_0x3628a4(++_0x427b14);}(_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(_0x14af42,_0x523098){var _0xfe7c02=function(_0x10b241){while(--_0x10b241){_0x14af42['push'](_0x14af42['shift']());}};_0xfe7c02(++_0x523098);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0xa9e0[_0x5447fd];return _0x15b28a;};'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 2d4819f..7707358 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b65=['ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','request','info','OpenchannelAccount,\x20%s,\x20%s','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','code','error','message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x47a7d0,_0x4e182d){var _0xb9bd08=function(_0x588ee2){while(--_0x588ee2){_0x47a7d0['push'](_0x47a7d0['shift']());}};_0xb9bd08(++_0x4e182d);}(_0x2b65,0x131));var _0x52b6=function(_0x33654f,_0x1313a8){_0x33654f=_0x33654f-0x0;var _0x1e01b4=_0x2b65[_0x33654f];return _0x1e01b4;};'use strict';var _=require(_0x52b6('0x0'));var util=require(_0x52b6('0x1'));var moment=require(_0x52b6('0x2'));var BPromise=require(_0x52b6('0x3'));var rs=require(_0x52b6('0x4'));var fs=require('fs');var Redis=require(_0x52b6('0x5'));var db=require(_0x52b6('0x6'))['db'];var utils=require(_0x52b6('0x7'));var logger=require('../../config/logger')(_0x52b6('0x8'));var config=require(_0x52b6('0x9'));var jayson=require(_0x52b6('0xa'));var client=jayson[_0x52b6('0xb')][_0x52b6('0xc')]({'port':0x232a});config[_0x52b6('0xd')]=_[_0x52b6('0xe')](config[_0x52b6('0xd')],{'host':_0x52b6('0xf'),'port':0x18eb});var socket=require(_0x52b6('0x10'))(new Redis(config['redis']));require(_0x52b6('0x11'))[_0x52b6('0x12')](socket);function respondWithRpcPromise(_0x18b34d,_0x4d6d94,_0x19d1d9){return new BPromise(function(_0x2bb857,_0x19f475){return client[_0x52b6('0x13')](_0x18b34d,_0x19d1d9)['then'](function(_0xf91209){logger[_0x52b6('0x14')](_0x52b6('0x15'),_0x4d6d94,'request\x20sent');logger[_0x52b6('0x16')](_0x52b6('0x17'),_0x4d6d94,'request\x20sent',JSON[_0x52b6('0x18')](_0xf91209));if(_0xf91209['error']){if(_0xf91209['error'][_0x52b6('0x19')]===0x1f4){logger[_0x52b6('0x1a')](_0x52b6('0x15'),_0x4d6d94,_0xf91209[_0x52b6('0x1a')][_0x52b6('0x1b')]);return _0x19f475(_0xf91209[_0x52b6('0x1a')][_0x52b6('0x1b')]);}logger[_0x52b6('0x1a')](_0x52b6('0x15'),_0x4d6d94,_0xf91209[_0x52b6('0x1a')][_0x52b6('0x1b')]);return _0x2bb857(_0xf91209[_0x52b6('0x1a')][_0x52b6('0x1b')]);}else{logger['info'](_0x52b6('0x15'),_0x4d6d94,_0x52b6('0x1c'));_0x2bb857(_0xf91209[_0x52b6('0x1d')]['message']);}})[_0x52b6('0x1e')](function(_0x184ee8){logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0x4d6d94,_0x184ee8);_0x19f475(_0x184ee8);});});}
\ No newline at end of file
+var _0xbfcc=['redis','localhost','socket.io-emitter','register','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','jayson/promise','client'];(function(_0x254081,_0x20731a){var _0x5d1e2a=function(_0x597854){while(--_0x597854){_0x254081['push'](_0x254081['shift']());}};_0x5d1e2a(++_0x20731a);}(_0xbfcc,0x1dd));var _0xcbfc=function(_0x5ce3c8,_0x2503bd){_0x5ce3c8=_0x5ce3c8-0x0;var _0xa76867=_0xbfcc[_0x5ce3c8];return _0xa76867;};'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});config[_0xcbfc('0x7')]=_['defaults'](config[_0xcbfc('0x7')],{'host':_0xcbfc('0x8'),'port':0x18eb});var socket=require(_0xcbfc('0x9'))(new Redis(config[_0xcbfc('0x7')]));require('./openchannelAccount.socket')[_0xcbfc('0xa')](socket);function respondWithRpcPromise(_0x3be6f9,_0x36bdb8,_0x25786f){return new BPromise(function(_0x20c7c6,_0x3498c7){return client['request'](_0x3be6f9,_0x25786f)[_0xcbfc('0xb')](function(_0x376a4c){logger[_0xcbfc('0xc')](_0xcbfc('0xd'),_0x36bdb8,_0xcbfc('0xe'));logger['debug'](_0xcbfc('0xf'),_0x36bdb8,_0xcbfc('0xe'),JSON[_0xcbfc('0x10')](_0x376a4c));if(_0x376a4c['error']){if(_0x376a4c[_0xcbfc('0x11')][_0xcbfc('0x12')]===0x1f4){logger[_0xcbfc('0x11')](_0xcbfc('0xd'),_0x36bdb8,_0x376a4c[_0xcbfc('0x11')]['message']);return _0x3498c7(_0x376a4c[_0xcbfc('0x11')][_0xcbfc('0x13')]);}logger[_0xcbfc('0x11')](_0xcbfc('0xd'),_0x36bdb8,_0x376a4c['error']['message']);return _0x20c7c6(_0x376a4c[_0xcbfc('0x11')][_0xcbfc('0x13')]);}else{logger[_0xcbfc('0xc')]('OpenchannelAccount,\x20%s,\x20%s',_0x36bdb8,'request\x20sent');_0x20c7c6(_0x376a4c[_0xcbfc('0x14')][_0xcbfc('0x13')]);}})[_0xcbfc('0x15')](function(_0x4beb87){logger[_0xcbfc('0x11')]('OpenchannelAccount,\x20%s,\x20%s',_0x36bdb8,_0x4beb87);_0x3498c7(_0x4beb87);});});}
\ No newline at end of file
index c6bce27..ee9b7a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3b0=['remove','update','emit','removeListener','register','length','./openchannelAccount.events','save'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xc3b0,0x166));var _0x0c3b=function(_0x25e00f,_0x618f92){_0x25e00f=_0x25e00f-0x0;var _0xa85c07=_0xc3b0[_0x25e00f];return _0xa85c07;};'use strict';var OpenchannelAccountEvents=require(_0x0c3b('0x0'));var events=[_0x0c3b('0x1'),_0x0c3b('0x2'),_0x0c3b('0x3')];function createListener(_0x5348c4,_0x5af7d8){return function(_0x2f8bb7){_0x5af7d8[_0x0c3b('0x4')](_0x5348c4,_0x2f8bb7);};}function removeListener(_0x508b38,_0x2b13c6){return function(){OpenchannelAccountEvents[_0x0c3b('0x5')](_0x508b38,_0x2b13c6);};}exports[_0x0c3b('0x6')]=function(_0x5ba7f1){for(var _0x408fd8=0x0,_0x3e2305=events[_0x0c3b('0x7')];_0x408fd8<_0x3e2305;_0x408fd8++){var _0x4e7c4f=events[_0x408fd8];var _0x5c4e3a=createListener('openchannelAccount:'+_0x4e7c4f,_0x5ba7f1);OpenchannelAccountEvents['on'](_0x4e7c4f,_0x5c4e3a);}};
\ No newline at end of file
+var _0x33a4=['removeListener','register','length','openchannelAccount:','save','update'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x33a4,0x88));var _0x433a=function(_0x431eae,_0xc1ef29){_0x431eae=_0x431eae-0x0;var _0x5c07b2=_0x33a4[_0x431eae];return _0x5c07b2;};'use strict';var OpenchannelAccountEvents=require('./openchannelAccount.events');var events=[_0x433a('0x0'),'remove',_0x433a('0x1')];function createListener(_0x4786e1,_0x1917aa){return function(_0x4909a4){_0x1917aa['emit'](_0x4786e1,_0x4909a4);};}function removeListener(_0x4f5bc0,_0x19166b){return function(){OpenchannelAccountEvents[_0x433a('0x2')](_0x4f5bc0,_0x19166b);};}exports[_0x433a('0x3')]=function(_0x60b6b3){for(var _0x1b6f5a=0x0,_0x4fcc88=events[_0x433a('0x4')];_0x1b6f5a<_0x4fcc88;_0x1b6f5a++){var _0x58e65c=events[_0x1b6f5a];var _0x2c2404=createListener(_0x433a('0x5')+_0x58e65c,_0x60b6b3);OpenchannelAccountEvents['on'](_0x58e65c,_0x2c2404);}};
\ No newline at end of file
index 28822f7..546a6c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a1e=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show','post','create','put','update','delete','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x2532df,_0x180423){var _0x54c61a=function(_0x5cecae){while(--_0x5cecae){_0x2532df['push'](_0x2532df['shift']());}};_0x54c61a(++_0x180423);}(_0x1a1e,0x86));var _0xe1a1=function(_0x629a48,_0x5dbd3f){_0x629a48=_0x629a48-0x0;var _0x44b629=_0x1a1e[_0x629a48];return _0x44b629;};'use strict';var multer=require(_0xe1a1('0x0'));var util=require(_0xe1a1('0x1'));var path=require(_0xe1a1('0x2'));var timeout=require(_0xe1a1('0x3'));var express=require(_0xe1a1('0x4'));var router=express[_0xe1a1('0x5')]();var fs_extra=require(_0xe1a1('0x6'));var auth=require(_0xe1a1('0x7'));var interaction=require(_0xe1a1('0x8'));var config=require(_0xe1a1('0x9'));var controller=require('./openchannelApplication.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xe1a1('0xa')](_0xe1a1('0xb'),auth[_0xe1a1('0xc')](),controller[_0xe1a1('0xd')]);router[_0xe1a1('0xe')]('/',auth[_0xe1a1('0xc')](),controller[_0xe1a1('0xf')]);router[_0xe1a1('0x10')](_0xe1a1('0xb'),auth[_0xe1a1('0xc')](),controller[_0xe1a1('0x11')]);router[_0xe1a1('0x12')](_0xe1a1('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0xe1a1('0x13')]=router;
\ No newline at end of file
+var _0x7326=['exports','multer','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','isAuthenticated','index','get','show','post','put','/:id','update','delete'];(function(_0x4960ed,_0x3cf3c8){var _0xbb82a3=function(_0x51258a){while(--_0x51258a){_0x4960ed['push'](_0x4960ed['shift']());}};_0xbb82a3(++_0x3cf3c8);}(_0x7326,0x188));var _0x6732=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0x7326[_0x5447fd];return _0x15b28a;};'use strict';var multer=require(_0x6732('0x0'));var util=require('util');var path=require(_0x6732('0x1'));var timeout=require('connect-timeout');var express=require(_0x6732('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x6732('0x3'));var interaction=require(_0x6732('0x4'));var config=require(_0x6732('0x5'));var controller=require(_0x6732('0x6'));router['get']('/',auth[_0x6732('0x7')](),controller[_0x6732('0x8')]);router[_0x6732('0x9')]('/:id',auth[_0x6732('0x7')](),controller[_0x6732('0xa')]);router[_0x6732('0xb')]('/',auth[_0x6732('0x7')](),controller['create']);router[_0x6732('0xc')](_0x6732('0xd'),auth[_0x6732('0x7')](),controller[_0x6732('0xe')]);router[_0x6732('0xf')](_0x6732('0xd'),auth[_0x6732('0x7')](),controller['destroy']);module[_0x6732('0x10')]=router;
\ No newline at end of file
index 062970a..9d53a24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8598=['*,*,*,*','sequelize','exports','STRING','noop','TEXT'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x8598,0x13f));var _0x8859=function(_0x179d86,_0x139c2c){_0x179d86=_0x179d86-0x0;var _0x437ec7=_0x8598[_0x179d86];return _0x437ec7;};'use strict';var Sequelize=require(_0x8859('0x0'));module[_0x8859('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x8859('0x2')],'allowNull':![],'defaultValue':_0x8859('0x3')},'appdata':{'type':Sequelize[_0x8859('0x4')]()},'description':{'type':Sequelize[_0x8859('0x2')]},'interval':{'type':Sequelize[_0x8859('0x2')],'defaultValue':_0x8859('0x5')}};
\ No newline at end of file
+var _0xa960=['INTEGER','STRING','noop','*,*,*,*','sequelize','exports'];(function(_0x1f936c,_0x14a812){var _0x58c95d=function(_0xa2872e){while(--_0xa2872e){_0x1f936c['push'](_0x1f936c['shift']());}};_0x58c95d(++_0x14a812);}(_0xa960,0x124));var _0x0a96=function(_0x5b692e,_0x1c3e54){_0x5b692e=_0x5b692e-0x0;var _0x3bd7ab=_0xa960[_0x5b692e];return _0x3bd7ab;};'use strict';var Sequelize=require(_0x0a96('0x0'));module[_0x0a96('0x1')]={'priority':{'type':Sequelize[_0x0a96('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x0a96('0x3')],'allowNull':![],'defaultValue':_0x0a96('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x0a96('0x5')}};
\ No newline at end of file
index cd85eb9..d3d768e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a4f=['../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','destroy','then','error','stack','name','send','map','OpenchannelApplication','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','findAll','rows','catch','show','params','include','options','find','create','body','rimraf','zip-dir','fast-json-patch','moment','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x549972,_0x50d1bc){var _0x2fee27=function(_0x5645a6){while(--_0x5645a6){_0x549972['push'](_0x549972['shift']());}};_0x2fee27(++_0x50d1bc);}(_0x1a4f,0x163));var _0xf1a4=function(_0x51c657,_0x58d926){_0x51c657=_0x51c657-0x0;var _0x1c4198=_0x1a4f[_0x51c657];return _0x1c4198;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf1a4('0x0'));var zipdir=require(_0xf1a4('0x1'));var jsonpatch=require(_0xf1a4('0x2'));var rp=require('request-promise');var moment=require(_0xf1a4('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xf1a4('0x4'));var util=require(_0xf1a4('0x5'));var path=require('path');var sox=require(_0xf1a4('0x6'));var csv=require(_0xf1a4('0x7'));var ejs=require(_0xf1a4('0x8'));var fs=require('fs');var fs_extra=require(_0xf1a4('0x9'));var _=require('lodash');var squel=require(_0xf1a4('0xa'));var crypto=require(_0xf1a4('0xb'));var jsforce=require(_0xf1a4('0xc'));var deskjs=require(_0xf1a4('0xd'));var toCsv=require(_0xf1a4('0x7'));var querystring=require('querystring');var Papa=require(_0xf1a4('0xe'));var Redis=require(_0xf1a4('0xf'));var authService=require(_0xf1a4('0x10'));var qs=require(_0xf1a4('0x11'));var as=require(_0xf1a4('0x12'));var hardwareService=require(_0xf1a4('0x13'));var logger=require(_0xf1a4('0x14'))(_0xf1a4('0x15'));var utils=require(_0xf1a4('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xf1a4('0x17'));var db=require(_0xf1a4('0x18'))['db'];function respondWithStatusCode(_0x168c73,_0xe07b3a){_0xe07b3a=_0xe07b3a||0xcc;return function(_0x491923){if(_0x491923){return _0x168c73[_0xf1a4('0x19')](_0xe07b3a);}return _0x168c73[_0xf1a4('0x1a')](_0xe07b3a)[_0xf1a4('0x1b')]();};}function respondWithResult(_0x5c024d,_0xe296f1){_0xe296f1=_0xe296f1||0xc8;return function(_0x5aabb9){if(_0x5aabb9){return _0x5c024d[_0xf1a4('0x1a')](_0xe296f1)[_0xf1a4('0x1c')](_0x5aabb9);}};}function respondWithFilteredResult(_0x2e5500,_0xdb2ebf){return function(_0x219cae){if(_0x219cae){var _0x37cd9a=typeof _0xdb2ebf[_0xf1a4('0x1d')]===_0xf1a4('0x1e')&&typeof _0xdb2ebf[_0xf1a4('0x1f')]==='undefined';var _0x175f9f=_0x219cae[_0xf1a4('0x20')];var _0x56f002=_0x37cd9a?0x0:_0xdb2ebf[_0xf1a4('0x1d')];var _0x1c03c1=_0x37cd9a?_0x219cae[_0xf1a4('0x20')]:_0xdb2ebf[_0xf1a4('0x1d')]+_0xdb2ebf[_0xf1a4('0x1f')];var _0x3229a8;if(_0x1c03c1>=_0x175f9f){_0x1c03c1=_0x175f9f;_0x3229a8=0xc8;}else{_0x3229a8=0xce;}_0x2e5500[_0xf1a4('0x1a')](_0x3229a8);return _0x2e5500[_0xf1a4('0x21')](_0xf1a4('0x22'),_0x56f002+'-'+_0x1c03c1+'/'+_0x175f9f)[_0xf1a4('0x1c')](_0x219cae);}return null;};}function patchUpdates(_0x38876b){return function(_0x4dbeca){try{jsonpatch[_0xf1a4('0x23')](_0x4dbeca,_0x38876b,!![]);}catch(_0x2dc429){return BPromise[_0xf1a4('0x24')](_0x2dc429);}return _0x4dbeca['save']();};}function saveUpdates(_0x38574c,_0x2b3485){return function(_0x4c0b4f){if(_0x4c0b4f){return _0x4c0b4f['update'](_0x38574c)['then'](function(_0x644198){return _0x644198;});}return null;};}function removeEntity(_0x4e99ea,_0x1350cc){return function(_0xd0f918){if(_0xd0f918){return _0xd0f918[_0xf1a4('0x25')]()[_0xf1a4('0x26')](function(){_0x4e99ea[_0xf1a4('0x1a')](0xcc)[_0xf1a4('0x1b')]();});}};}function handleEntityNotFound(_0x59d1cd,_0x19b3f9){return function(_0xce8805){if(!_0xce8805){_0x59d1cd[_0xf1a4('0x19')](0x194);}return _0xce8805;};}function handleError(_0x414c6b,_0x5cdb0b){_0x5cdb0b=_0x5cdb0b||0x1f4;return function(_0x5a3cf6){logger[_0xf1a4('0x27')](_0x5a3cf6[_0xf1a4('0x28')]);if(_0x5a3cf6[_0xf1a4('0x29')]){delete _0x5a3cf6['name'];}_0x414c6b[_0xf1a4('0x1a')](_0x5cdb0b)[_0xf1a4('0x2a')](_0x5a3cf6);};}exports['index']=function(_0x26344f,_0x598d73){var _0x15ea9b={},_0xca16d1={},_0x3bed14={'count':0x0,'rows':[]};var _0x4514d9=_[_0xf1a4('0x2b')](db[_0xf1a4('0x2c')][_0xf1a4('0x2d')],function(_0x6a56bf){return{'name':_0x6a56bf[_0xf1a4('0x2e')],'type':_0x6a56bf['type'][_0xf1a4('0x2f')]};});_0xca16d1[_0xf1a4('0x30')]=_[_0xf1a4('0x2b')](_0x4514d9,_0xf1a4('0x29'));_0xca16d1[_0xf1a4('0x31')]=_[_0xf1a4('0x32')](_0x26344f['query']);_0xca16d1[_0xf1a4('0x33')]=_[_0xf1a4('0x34')](_0xca16d1['model'],_0xca16d1[_0xf1a4('0x31')]);_0x15ea9b[_0xf1a4('0x35')]=_[_0xf1a4('0x34')](_0xca16d1[_0xf1a4('0x30')],qs[_0xf1a4('0x36')](_0x26344f[_0xf1a4('0x31')][_0xf1a4('0x36')]));_0x15ea9b[_0xf1a4('0x35')]=_0x15ea9b[_0xf1a4('0x35')][_0xf1a4('0x37')]?_0x15ea9b['attributes']:_0xca16d1[_0xf1a4('0x30')];if(!_0x26344f[_0xf1a4('0x31')]['hasOwnProperty'](_0xf1a4('0x38'))){_0x15ea9b[_0xf1a4('0x1f')]=qs[_0xf1a4('0x1f')](_0x26344f[_0xf1a4('0x31')]['limit']);_0x15ea9b[_0xf1a4('0x1d')]=qs['offset'](_0x26344f[_0xf1a4('0x31')][_0xf1a4('0x1d')]);}_0x15ea9b[_0xf1a4('0x39')]=qs['sort'](_0x26344f['query'][_0xf1a4('0x3a')]);_0x15ea9b[_0xf1a4('0x3b')]=qs[_0xf1a4('0x33')](_[_0xf1a4('0x3c')](_0x26344f[_0xf1a4('0x31')],_0xca16d1[_0xf1a4('0x33')]),_0x4514d9);if(_0x26344f['query'][_0xf1a4('0x3d')]){_0x15ea9b['where']=_['merge'](_0x15ea9b['where'],{'$or':_['map'](_0x4514d9,function(_0xe86dc){if(_0xe86dc['type']!==_0xf1a4('0x3e')){var _0x4b13f1={};_0x4b13f1[_0xe86dc[_0xf1a4('0x29')]]={'$like':'%'+_0x26344f[_0xf1a4('0x31')]['filter']+'%'};return _0x4b13f1;}})});}_0x15ea9b=_[_0xf1a4('0x3f')]({},_0x15ea9b,_0x26344f['options']);var _0x1243c0={'where':_0x15ea9b[_0xf1a4('0x3b')]};return db[_0xf1a4('0x2c')][_0xf1a4('0x20')](_0x1243c0)['then'](function(_0x53243e){_0x3bed14['count']=_0x53243e;if(_0x26344f[_0xf1a4('0x31')][_0xf1a4('0x40')]){_0x15ea9b['include']=[{'all':!![]}];}return db['OpenchannelApplication'][_0xf1a4('0x41')](_0x15ea9b);})[_0xf1a4('0x26')](function(_0x364813){_0x3bed14[_0xf1a4('0x42')]=_0x364813;return _0x3bed14;})[_0xf1a4('0x26')](respondWithFilteredResult(_0x598d73,_0x15ea9b))[_0xf1a4('0x43')](handleError(_0x598d73,null));};exports[_0xf1a4('0x44')]=function(_0x5a83f8,_0x41285c){var _0x4bb61e={'raw':!![],'where':{'id':_0x5a83f8[_0xf1a4('0x45')]['id']}},_0x2472e0={};_0x2472e0['model']=_['keys'](db[_0xf1a4('0x2c')]['rawAttributes']);_0x2472e0[_0xf1a4('0x31')]=_[_0xf1a4('0x32')](_0x5a83f8['query']);_0x2472e0[_0xf1a4('0x33')]=_[_0xf1a4('0x34')](_0x2472e0['model'],_0x2472e0['query']);_0x4bb61e[_0xf1a4('0x35')]=_[_0xf1a4('0x34')](_0x2472e0['model'],qs['fields'](_0x5a83f8['query'][_0xf1a4('0x36')]));_0x4bb61e[_0xf1a4('0x35')]=_0x4bb61e[_0xf1a4('0x35')][_0xf1a4('0x37')]?_0x4bb61e['attributes']:_0x2472e0[_0xf1a4('0x30')];if(_0x5a83f8['query'][_0xf1a4('0x40')]){_0x4bb61e[_0xf1a4('0x46')]=[{'all':!![]}];}_0x4bb61e=_[_0xf1a4('0x3f')]({},_0x4bb61e,_0x5a83f8[_0xf1a4('0x47')]);return db['OpenchannelApplication'][_0xf1a4('0x48')](_0x4bb61e)[_0xf1a4('0x26')](handleEntityNotFound(_0x41285c,null))['then'](respondWithResult(_0x41285c,null))['catch'](handleError(_0x41285c,null));};exports['create']=function(_0xbe9944,_0x1d46f9){return db[_0xf1a4('0x2c')][_0xf1a4('0x49')](_0xbe9944[_0xf1a4('0x4a')],{})[_0xf1a4('0x26')](respondWithResult(_0x1d46f9,0xc9))[_0xf1a4('0x43')](handleError(_0x1d46f9,null));};exports['update']=function(_0x295ad5,_0x34a183){if(_0x295ad5[_0xf1a4('0x4a')]['id']){delete _0x295ad5[_0xf1a4('0x4a')]['id'];}return db[_0xf1a4('0x2c')][_0xf1a4('0x48')]({'where':{'id':_0x295ad5['params']['id']}})['then'](handleEntityNotFound(_0x34a183,null))[_0xf1a4('0x26')](saveUpdates(_0x295ad5['body'],null))[_0xf1a4('0x26')](respondWithResult(_0x34a183,null))[_0xf1a4('0x43')](handleError(_0x34a183,null));};exports[_0xf1a4('0x25')]=function(_0x275365,_0x1799a5){return db[_0xf1a4('0x2c')][_0xf1a4('0x48')]({'where':{'id':_0x275365['params']['id']}})[_0xf1a4('0x26')](handleEntityNotFound(_0x1799a5,null))[_0xf1a4('0x26')](removeEntity(_0x1799a5,null))['catch'](handleError(_0x1799a5,null));};
\ No newline at end of file
+var _0xb774=['fast-json-patch','moment','mustache','util','path','sox','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','OpenchannelApplication','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','findAll','rows','show','params','keys','include','create','catch','body','find','destroy','rimraf','zip-dir'];(function(_0x4de1b5,_0x2a7626){var _0xed55cf=function(_0x5f1115){while(--_0x5f1115){_0x4de1b5['push'](_0x4de1b5['shift']());}};_0xed55cf(++_0x2a7626);}(_0xb774,0x9a));var _0x4b77=function(_0x4f4d07,_0x3f640c){_0x4f4d07=_0x4f4d07-0x0;var _0x4308fd=_0xb774[_0x4f4d07];return _0x4308fd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4b77('0x0'));var zipdir=require(_0x4b77('0x1'));var jsonpatch=require(_0x4b77('0x2'));var rp=require('request-promise');var moment=require(_0x4b77('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x4b77('0x4'));var util=require(_0x4b77('0x5'));var path=require(_0x4b77('0x6'));var sox=require(_0x4b77('0x7'));var csv=require('to-csv');var ejs=require(_0x4b77('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4b77('0x9'));var squel=require(_0x4b77('0xa'));var crypto=require(_0x4b77('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x4b77('0xc'));var toCsv=require(_0x4b77('0xd'));var querystring=require(_0x4b77('0xe'));var Papa=require(_0x4b77('0xf'));var Redis=require(_0x4b77('0x10'));var authService=require(_0x4b77('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4b77('0x12'));var logger=require(_0x4b77('0x13'))(_0x4b77('0x14'));var utils=require('../../config/utils');var config=require(_0x4b77('0x15'));var licenseUtil=require(_0x4b77('0x16'));var db=require(_0x4b77('0x17'))['db'];function respondWithStatusCode(_0x427fa1,_0x1324b2){_0x1324b2=_0x1324b2||0xcc;return function(_0x5bc544){if(_0x5bc544){return _0x427fa1[_0x4b77('0x18')](_0x1324b2);}return _0x427fa1[_0x4b77('0x19')](_0x1324b2)[_0x4b77('0x1a')]();};}function respondWithResult(_0x551f23,_0x5c68f7){_0x5c68f7=_0x5c68f7||0xc8;return function(_0x12007b){if(_0x12007b){return _0x551f23[_0x4b77('0x19')](_0x5c68f7)[_0x4b77('0x1b')](_0x12007b);}};}function respondWithFilteredResult(_0x17cbcf,_0x30c03b){return function(_0x9e1166){if(_0x9e1166){var _0x48f37c=typeof _0x30c03b[_0x4b77('0x1c')]===_0x4b77('0x1d')&&typeof _0x30c03b[_0x4b77('0x1e')]===_0x4b77('0x1d');var _0x5087cc=_0x9e1166[_0x4b77('0x1f')];var _0x2e0dd3=_0x48f37c?0x0:_0x30c03b['offset'];var _0x107e39=_0x48f37c?_0x9e1166[_0x4b77('0x1f')]:_0x30c03b[_0x4b77('0x1c')]+_0x30c03b[_0x4b77('0x1e')];var _0x355b1e;if(_0x107e39>=_0x5087cc){_0x107e39=_0x5087cc;_0x355b1e=0xc8;}else{_0x355b1e=0xce;}_0x17cbcf['status'](_0x355b1e);return _0x17cbcf[_0x4b77('0x20')](_0x4b77('0x21'),_0x2e0dd3+'-'+_0x107e39+'/'+_0x5087cc)[_0x4b77('0x1b')](_0x9e1166);}return null;};}function patchUpdates(_0x1bc0db){return function(_0x409b17){try{jsonpatch[_0x4b77('0x22')](_0x409b17,_0x1bc0db,!![]);}catch(_0x27258f){return BPromise[_0x4b77('0x23')](_0x27258f);}return _0x409b17[_0x4b77('0x24')]();};}function saveUpdates(_0x290fdc,_0x36cb75){return function(_0x4a422d){if(_0x4a422d){return _0x4a422d[_0x4b77('0x25')](_0x290fdc)[_0x4b77('0x26')](function(_0x5deba1){return _0x5deba1;});}return null;};}function removeEntity(_0x14106e,_0x221e6a){return function(_0x17f642){if(_0x17f642){return _0x17f642['destroy']()['then'](function(){_0x14106e[_0x4b77('0x19')](0xcc)[_0x4b77('0x1a')]();});}};}function handleEntityNotFound(_0xd2e300,_0x551257){return function(_0x1552ef){if(!_0x1552ef){_0xd2e300[_0x4b77('0x18')](0x194);}return _0x1552ef;};}function handleError(_0x198c85,_0x36e07f){_0x36e07f=_0x36e07f||0x1f4;return function(_0x133dd9){logger[_0x4b77('0x27')](_0x133dd9[_0x4b77('0x28')]);if(_0x133dd9['name']){delete _0x133dd9[_0x4b77('0x29')];}_0x198c85[_0x4b77('0x19')](_0x36e07f)[_0x4b77('0x2a')](_0x133dd9);};}exports[_0x4b77('0x2b')]=function(_0x3f925c,_0x5281fa){var _0x4aa33a={},_0x98706a={},_0x23d0eb={'count':0x0,'rows':[]};var _0x1ba717=_[_0x4b77('0x2c')](db[_0x4b77('0x2d')][_0x4b77('0x2e')],function(_0x5b8e25){return{'name':_0x5b8e25[_0x4b77('0x2f')],'type':_0x5b8e25[_0x4b77('0x30')][_0x4b77('0x31')]};});_0x98706a[_0x4b77('0x32')]=_['map'](_0x1ba717,_0x4b77('0x29'));_0x98706a[_0x4b77('0x33')]=_['keys'](_0x3f925c[_0x4b77('0x33')]);_0x98706a[_0x4b77('0x34')]=_['intersection'](_0x98706a[_0x4b77('0x32')],_0x98706a[_0x4b77('0x33')]);_0x4aa33a['attributes']=_[_0x4b77('0x35')](_0x98706a[_0x4b77('0x32')],qs[_0x4b77('0x36')](_0x3f925c['query'][_0x4b77('0x36')]));_0x4aa33a[_0x4b77('0x37')]=_0x4aa33a[_0x4b77('0x37')][_0x4b77('0x38')]?_0x4aa33a[_0x4b77('0x37')]:_0x98706a[_0x4b77('0x32')];if(!_0x3f925c[_0x4b77('0x33')][_0x4b77('0x39')](_0x4b77('0x3a'))){_0x4aa33a[_0x4b77('0x1e')]=qs[_0x4b77('0x1e')](_0x3f925c[_0x4b77('0x33')]['limit']);_0x4aa33a['offset']=qs[_0x4b77('0x1c')](_0x3f925c['query'][_0x4b77('0x1c')]);}_0x4aa33a[_0x4b77('0x3b')]=qs[_0x4b77('0x3c')](_0x3f925c[_0x4b77('0x33')][_0x4b77('0x3c')]);_0x4aa33a[_0x4b77('0x3d')]=qs[_0x4b77('0x34')](_[_0x4b77('0x3e')](_0x3f925c['query'],_0x98706a[_0x4b77('0x34')]),_0x1ba717);if(_0x3f925c[_0x4b77('0x33')][_0x4b77('0x3f')]){_0x4aa33a['where']=_['merge'](_0x4aa33a[_0x4b77('0x3d')],{'$or':_[_0x4b77('0x2c')](_0x1ba717,function(_0x480eac){if(_0x480eac[_0x4b77('0x30')]!==_0x4b77('0x40')){var _0x2a4cda={};_0x2a4cda[_0x480eac[_0x4b77('0x29')]]={'$like':'%'+_0x3f925c[_0x4b77('0x33')][_0x4b77('0x3f')]+'%'};return _0x2a4cda;}})});}_0x4aa33a=_['merge']({},_0x4aa33a,_0x3f925c[_0x4b77('0x41')]);var _0x47648d={'where':_0x4aa33a[_0x4b77('0x3d')]};return db['OpenchannelApplication'][_0x4b77('0x1f')](_0x47648d)[_0x4b77('0x26')](function(_0x727f15){_0x23d0eb[_0x4b77('0x1f')]=_0x727f15;if(_0x3f925c['query'][_0x4b77('0x42')]){_0x4aa33a['include']=[{'all':!![]}];}return db['OpenchannelApplication'][_0x4b77('0x43')](_0x4aa33a);})[_0x4b77('0x26')](function(_0x56ad80){_0x23d0eb[_0x4b77('0x44')]=_0x56ad80;return _0x23d0eb;})[_0x4b77('0x26')](respondWithFilteredResult(_0x5281fa,_0x4aa33a))['catch'](handleError(_0x5281fa,null));};exports[_0x4b77('0x45')]=function(_0x42fe49,_0x12e1a7){var _0x15c2f1={'raw':!![],'where':{'id':_0x42fe49[_0x4b77('0x46')]['id']}},_0x4e5909={};_0x4e5909[_0x4b77('0x32')]=_[_0x4b77('0x47')](db['OpenchannelApplication']['rawAttributes']);_0x4e5909[_0x4b77('0x33')]=_[_0x4b77('0x47')](_0x42fe49['query']);_0x4e5909[_0x4b77('0x34')]=_['intersection'](_0x4e5909[_0x4b77('0x32')],_0x4e5909[_0x4b77('0x33')]);_0x15c2f1[_0x4b77('0x37')]=_[_0x4b77('0x35')](_0x4e5909['model'],qs[_0x4b77('0x36')](_0x42fe49[_0x4b77('0x33')][_0x4b77('0x36')]));_0x15c2f1[_0x4b77('0x37')]=_0x15c2f1[_0x4b77('0x37')][_0x4b77('0x38')]?_0x15c2f1[_0x4b77('0x37')]:_0x4e5909[_0x4b77('0x32')];if(_0x42fe49[_0x4b77('0x33')]['includeAll']){_0x15c2f1[_0x4b77('0x48')]=[{'all':!![]}];}_0x15c2f1=_['merge']({},_0x15c2f1,_0x42fe49[_0x4b77('0x41')]);return db['OpenchannelApplication']['find'](_0x15c2f1)[_0x4b77('0x26')](handleEntityNotFound(_0x12e1a7,null))[_0x4b77('0x26')](respondWithResult(_0x12e1a7,null))['catch'](handleError(_0x12e1a7,null));};exports[_0x4b77('0x49')]=function(_0xbc813d,_0x4714b0){return db['OpenchannelApplication'][_0x4b77('0x49')](_0xbc813d['body'],{})[_0x4b77('0x26')](respondWithResult(_0x4714b0,0xc9))[_0x4b77('0x4a')](handleError(_0x4714b0,null));};exports[_0x4b77('0x25')]=function(_0x2473a6,_0x5e0df9){if(_0x2473a6[_0x4b77('0x4b')]['id']){delete _0x2473a6['body']['id'];}return db[_0x4b77('0x2d')][_0x4b77('0x4c')]({'where':{'id':_0x2473a6[_0x4b77('0x46')]['id']}})[_0x4b77('0x26')](handleEntityNotFound(_0x5e0df9,null))['then'](saveUpdates(_0x2473a6['body'],null))[_0x4b77('0x26')](respondWithResult(_0x5e0df9,null))[_0x4b77('0x4a')](handleError(_0x5e0df9,null));};exports[_0x4b77('0x4d')]=function(_0xc11f59,_0x3dbad2){return db[_0x4b77('0x2d')][_0x4b77('0x4c')]({'where':{'id':_0xc11f59[_0x4b77('0x46')]['id']}})[_0x4b77('0x26')](handleEntityNotFound(_0x3dbad2,null))['then'](removeEntity(_0x3dbad2,null))[_0x4b77('0x4a')](handleError(_0x3dbad2,null));};
\ No newline at end of file
index 22ed7a9..e8d453b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84bf=['OpenchannelApplication','openchannel_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./openchannelApplication.attributes','exports','define'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x84bf,0x112));var _0xf84b=function(_0x4d1d02,_0x42a06e){_0x4d1d02=_0x4d1d02-0x0;var _0x510b22=_0x84bf[_0x4d1d02];return _0x510b22;};'use strict';var _=require(_0xf84b('0x0'));var util=require(_0xf84b('0x1'));var logger=require(_0xf84b('0x2'))(_0xf84b('0x3'));var moment=require('moment');var BPromise=require(_0xf84b('0x4'));var rp=require(_0xf84b('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf84b('0x6'));var config=require(_0xf84b('0x7'));var attributes=require(_0xf84b('0x8'));module[_0xf84b('0x9')]=function(_0x49bc2f,_0x1bf45d){return _0x49bc2f[_0xf84b('0xa')](_0xf84b('0xb'),attributes,{'tableName':_0xf84b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf84b('0xd'),'collate':_0xf84b('0xe')});};
\ No newline at end of file
+var _0x7f88=['../../config/logger','api','moment','bluebird','request-promise','./openchannelApplication.attributes','exports','define','OpenchannelApplication','openchannel_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util'];(function(_0x25bbdd,_0x4137ed){var _0x20ec55=function(_0x37f6db){while(--_0x37f6db){_0x25bbdd['push'](_0x25bbdd['shift']());}};_0x20ec55(++_0x4137ed);}(_0x7f88,0x98));var _0x87f8=function(_0x5c9cf4,_0x16481d){_0x5c9cf4=_0x5c9cf4-0x0;var _0x1cced0=_0x7f88[_0x5c9cf4];return _0x1cced0;};'use strict';var _=require(_0x87f8('0x0'));var util=require(_0x87f8('0x1'));var logger=require(_0x87f8('0x2'))(_0x87f8('0x3'));var moment=require(_0x87f8('0x4'));var BPromise=require(_0x87f8('0x5'));var rp=require(_0x87f8('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x87f8('0x7'));module[_0x87f8('0x8')]=function(_0x3b783f,_0x478572){return _0x3b783f[_0x87f8('0x9')](_0x87f8('0xa'),attributes,{'tableName':_0x87f8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x87f8('0xc'),'collate':_0x87f8('0xd')});};
\ No newline at end of file
index 5061a70..1673d7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6f7=['OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','UpdateOpenchannelApplication','OpenchannelApplication','update','options','raw','where','attributes','then','debug','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent'];(function(_0x25a434,_0xe22f05){var _0x5ea463=function(_0x21be62){while(--_0x21be62){_0x25a434['push'](_0x25a434['shift']());}};_0x5ea463(++_0xe22f05);}(_0xf6f7,0x87));var _0x7f6f=function(_0x4ce028,_0x526d4b){_0x4ce028=_0x4ce028-0x0;var _0x583d0c=_0xf6f7[_0x4ce028];return _0x583d0c;};'use strict';var _=require(_0x7f6f('0x0'));var util=require(_0x7f6f('0x1'));var moment=require(_0x7f6f('0x2'));var BPromise=require(_0x7f6f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7f6f('0x4'));var db=require(_0x7f6f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x7f6f('0x6'))(_0x7f6f('0x7'));var config=require(_0x7f6f('0x8'));var jayson=require(_0x7f6f('0x9'));var client=jayson[_0x7f6f('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2f3910,_0x3cca28,_0x35a65b){return new BPromise(function(_0x49abd7,_0x32242a){return client[_0x7f6f('0xb')](_0x2f3910,_0x35a65b)['then'](function(_0x5870e2){logger[_0x7f6f('0xc')](_0x7f6f('0xd'),_0x3cca28,_0x7f6f('0xe'));logger['debug'](_0x7f6f('0xf'),_0x3cca28,_0x7f6f('0xe'),JSON[_0x7f6f('0x10')](_0x5870e2));if(_0x5870e2['error']){if(_0x5870e2[_0x7f6f('0x11')][_0x7f6f('0x12')]===0x1f4){logger[_0x7f6f('0x11')](_0x7f6f('0xd'),_0x3cca28,_0x5870e2['error'][_0x7f6f('0x13')]);return _0x32242a(_0x5870e2[_0x7f6f('0x11')]['message']);}logger[_0x7f6f('0x11')](_0x7f6f('0xd'),_0x3cca28,_0x5870e2[_0x7f6f('0x11')][_0x7f6f('0x13')]);return _0x49abd7(_0x5870e2[_0x7f6f('0x11')][_0x7f6f('0x13')]);}else{logger[_0x7f6f('0xc')]('OpenchannelApplication,\x20%s,\x20%s',_0x3cca28,'request\x20sent');_0x49abd7(_0x5870e2['result'][_0x7f6f('0x13')]);}})[_0x7f6f('0x14')](function(_0xb14f0f){logger[_0x7f6f('0x11')](_0x7f6f('0xd'),_0x3cca28,_0xb14f0f);_0x32242a(_0xb14f0f);});});}exports[_0x7f6f('0x15')]=function(_0x497c60){var _0x3bebe1=this;return new Promise(function(_0x152e80,_0x5b9301){return db[_0x7f6f('0x16')][_0x7f6f('0x17')](_0x497c60['body'],{'raw':_0x497c60[_0x7f6f('0x18')]?_0x497c60[_0x7f6f('0x18')][_0x7f6f('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x497c60['options']?_0x497c60[_0x7f6f('0x18')][_0x7f6f('0x1a')]||null:null,'attributes':_0x497c60['options']?_0x497c60[_0x7f6f('0x18')][_0x7f6f('0x1b')]||null:null,'limit':_0x497c60['options']?_0x497c60[_0x7f6f('0x18')]['limit']||null:null})[_0x7f6f('0x1c')](function(_0x1afe9a){logger['info'](_0x7f6f('0x15'),_0x497c60);logger[_0x7f6f('0x1d')](_0x7f6f('0x15'),_0x497c60,JSON[_0x7f6f('0x10')](_0x1afe9a));_0x152e80(_0x1afe9a);})[_0x7f6f('0x14')](function(_0x175a75){logger[_0x7f6f('0x11')]('UpdateOpenchannelApplication',_0x175a75[_0x7f6f('0x13')],_0x497c60);_0x5b9301(_0x3bebe1['error'](0x1f4,_0x175a75[_0x7f6f('0x13')]));});});};
\ No newline at end of file
+var _0x65fc=['catch','UpdateOpenchannelApplication','OpenchannelApplication','update','body','options','raw','attributes','limit','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelApplication,\x20%s,\x20%s','message','result'];(function(_0x507496,_0x3b00ed){var _0x1b28c7=function(_0x950dd0){while(--_0x950dd0){_0x507496['push'](_0x507496['shift']());}};_0x1b28c7(++_0x3b00ed);}(_0x65fc,0x85));var _0xc65f=function(_0x44389b,_0x5e35e9){_0x44389b=_0x44389b-0x0;var _0x387b67=_0x65fc[_0x44389b];return _0x387b67;};'use strict';var _=require(_0xc65f('0x0'));var util=require(_0xc65f('0x1'));var moment=require(_0xc65f('0x2'));var BPromise=require(_0xc65f('0x3'));var rs=require(_0xc65f('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc65f('0x5'))['db'];var utils=require(_0xc65f('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xc65f('0x7'));var jayson=require(_0xc65f('0x8'));var client=jayson['client'][_0xc65f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x16ab55,_0x463f29,_0x199980){return new BPromise(function(_0x347354,_0x26a4ee){return client[_0xc65f('0xa')](_0x16ab55,_0x199980)[_0xc65f('0xb')](function(_0x2193ab){logger[_0xc65f('0xc')]('OpenchannelApplication,\x20%s,\x20%s',_0x463f29,_0xc65f('0xd'));logger[_0xc65f('0xe')](_0xc65f('0xf'),_0x463f29,_0xc65f('0xd'),JSON[_0xc65f('0x10')](_0x2193ab));if(_0x2193ab['error']){if(_0x2193ab[_0xc65f('0x11')][_0xc65f('0x12')]===0x1f4){logger['error'](_0xc65f('0x13'),_0x463f29,_0x2193ab[_0xc65f('0x11')][_0xc65f('0x14')]);return _0x26a4ee(_0x2193ab[_0xc65f('0x11')][_0xc65f('0x14')]);}logger[_0xc65f('0x11')](_0xc65f('0x13'),_0x463f29,_0x2193ab[_0xc65f('0x11')][_0xc65f('0x14')]);return _0x347354(_0x2193ab['error'][_0xc65f('0x14')]);}else{logger[_0xc65f('0xc')](_0xc65f('0x13'),_0x463f29,_0xc65f('0xd'));_0x347354(_0x2193ab[_0xc65f('0x15')][_0xc65f('0x14')]);}})[_0xc65f('0x16')](function(_0x5613e2){logger[_0xc65f('0x11')]('OpenchannelApplication,\x20%s,\x20%s',_0x463f29,_0x5613e2);_0x26a4ee(_0x5613e2);});});}exports[_0xc65f('0x17')]=function(_0x15700b){var _0x256820=this;return new Promise(function(_0x5e472f,_0x10d592){return db[_0xc65f('0x18')][_0xc65f('0x19')](_0x15700b[_0xc65f('0x1a')],{'raw':_0x15700b[_0xc65f('0x1b')]?_0x15700b['options'][_0xc65f('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x15700b[_0xc65f('0x1b')]?_0x15700b[_0xc65f('0x1b')]['where']||null:null,'attributes':_0x15700b[_0xc65f('0x1b')]?_0x15700b['options'][_0xc65f('0x1d')]||null:null,'limit':_0x15700b[_0xc65f('0x1b')]?_0x15700b[_0xc65f('0x1b')][_0xc65f('0x1e')]||null:null})[_0xc65f('0xb')](function(_0x2953ae){logger[_0xc65f('0xc')](_0xc65f('0x17'),_0x15700b);logger[_0xc65f('0xe')](_0xc65f('0x17'),_0x15700b,JSON[_0xc65f('0x10')](_0x2953ae));_0x5e472f(_0x2953ae);})[_0xc65f('0x16')](function(_0x146476){logger[_0xc65f('0x11')](_0xc65f('0x17'),_0x146476[_0xc65f('0x14')],_0x15700b);_0x10d592(_0x256820[_0xc65f('0x11')](0x1f4,_0x146476['message']));});});};
\ No newline at end of file
index b5703a4..41b3c10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45ff=['isAuthenticated','get','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','openchannel','openchannelinteraction:addtags','openchannelinteraction:update','update','delete','/:id','destroy','removeTags','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelInteraction.controller','index'];(function(_0x2c24fd,_0x42528e){var _0x5073c9=function(_0xd99f0d){while(--_0xd99f0d){_0x2c24fd['push'](_0x2c24fd['shift']());}};_0x5073c9(++_0x42528e);}(_0x45ff,0x189));var _0xf45f=function(_0x4a45b4,_0x59804f){_0x4a45b4=_0x4a45b4-0x0;var _0x1a99c9=_0x45ff[_0x4a45b4];return _0x1a99c9;};'use strict';var multer=require(_0xf45f('0x0'));var util=require('util');var path=require(_0xf45f('0x1'));var timeout=require(_0xf45f('0x2'));var express=require(_0xf45f('0x3'));var router=express['Router']();var fs_extra=require(_0xf45f('0x4'));var auth=require(_0xf45f('0x5'));var interaction=require(_0xf45f('0x6'));var config=require(_0xf45f('0x7'));var controller=require(_0xf45f('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xf45f('0x9')]);router['get']('/describe',auth[_0xf45f('0xa')](),controller['describe']);router[_0xf45f('0xb')]('/:id',auth['isAuthenticated'](),controller[_0xf45f('0xc')]);router[_0xf45f('0xb')](_0xf45f('0xd'),auth[_0xf45f('0xa')](),controller[_0xf45f('0xe')]);router[_0xf45f('0xb')](_0xf45f('0xf'),auth['isAuthenticated'](),controller[_0xf45f('0x10')]);router[_0xf45f('0x11')]('/',auth['isAuthenticated'](),controller[_0xf45f('0x12')]);router[_0xf45f('0x11')](_0xf45f('0xd'),auth[_0xf45f('0xa')](),controller[_0xf45f('0x13')]);router[_0xf45f('0x11')](_0xf45f('0x14'),auth[_0xf45f('0xa')](),interaction[_0xf45f('0x15')](_0xf45f('0x16'),_0xf45f('0x17')),controller['addTags']);router['put']('/:id',auth[_0xf45f('0xa')](),interaction[_0xf45f('0x15')](_0xf45f('0x16'),_0xf45f('0x18')),controller[_0xf45f('0x19')]);router[_0xf45f('0x1a')](_0xf45f('0x1b'),auth['isAuthenticated'](),interaction[_0xf45f('0x15')]('openchannel','openchannelinteraction:destroy'),controller[_0xf45f('0x1c')]);router[_0xf45f('0x1a')](_0xf45f('0x14'),auth[_0xf45f('0xa')](),controller[_0xf45f('0x1d')]);module[_0xf45f('0x1e')]=router;
\ No newline at end of file
+var _0x9832=['getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','openchannel','openchannelinteraction:addtags','addTags','put','openchannelinteraction:update','update','delete','openchannelinteraction:destroy','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelInteraction.controller','get','isAuthenticated','index','/describe','/:id','/:id/messages'];(function(_0x462fe4,_0x394d3e){var _0x82b23a=function(_0x2c071f){while(--_0x2c071f){_0x462fe4['push'](_0x462fe4['shift']());}};_0x82b23a(++_0x394d3e);}(_0x9832,0x1e0));var _0x2983=function(_0x189c81,_0xa204d3){_0x189c81=_0x189c81-0x0;var _0x18f178=_0x9832[_0x189c81];return _0x18f178;};'use strict';var multer=require(_0x2983('0x0'));var util=require(_0x2983('0x1'));var path=require('path');var timeout=require(_0x2983('0x2'));var express=require(_0x2983('0x3'));var router=express[_0x2983('0x4')]();var fs_extra=require(_0x2983('0x5'));var auth=require(_0x2983('0x6'));var interaction=require(_0x2983('0x7'));var config=require('../../config/environment');var controller=require(_0x2983('0x8'));router[_0x2983('0x9')]('/',auth[_0x2983('0xa')](),controller[_0x2983('0xb')]);router['get'](_0x2983('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x2983('0x9')](_0x2983('0xd'),auth['isAuthenticated'](),controller['show']);router['get'](_0x2983('0xe'),auth[_0x2983('0xa')](),controller[_0x2983('0xf')]);router[_0x2983('0x9')](_0x2983('0x10'),auth['isAuthenticated'](),controller[_0x2983('0x11')]);router[_0x2983('0x12')]('/',auth['isAuthenticated'](),controller[_0x2983('0x13')]);router[_0x2983('0x12')](_0x2983('0xe'),auth['isAuthenticated'](),controller[_0x2983('0x14')]);router['post'](_0x2983('0x15'),auth['isAuthenticated'](),interaction[_0x2983('0x16')](_0x2983('0x17'),_0x2983('0x18')),controller[_0x2983('0x19')]);router[_0x2983('0x1a')](_0x2983('0xd'),auth['isAuthenticated'](),interaction[_0x2983('0x16')](_0x2983('0x17'),_0x2983('0x1b')),controller[_0x2983('0x1c')]);router[_0x2983('0x1d')]('/:id',auth[_0x2983('0xa')](),interaction['tracked']('openchannel',_0x2983('0x1e')),controller[_0x2983('0x1f')]);router[_0x2983('0x1d')](_0x2983('0x15'),auth[_0x2983('0xa')](),controller['removeTags']);module[_0x2983('0x20')]=router;
\ No newline at end of file
index 9e7eadd..c862bc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a25=['exports','DATE','STRING','ENUM','out','BOOLEAN','sequelize'];(function(_0x2b7764,_0x2606f1){var _0x848dcb=function(_0x1ae85b){while(--_0x1ae85b){_0x2b7764['push'](_0x2b7764['shift']());}};_0x848dcb(++_0x2606f1);}(_0x0a25,0x68));var _0x50a2=function(_0x391b7,_0x48ef4e){_0x391b7=_0x391b7-0x0;var _0x11095d=_0x0a25[_0x391b7];return _0x11095d;};'use strict';var Sequelize=require(_0x50a2('0x0'));module[_0x50a2('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x50a2('0x2')]},'disposition':{'type':Sequelize[_0x50a2('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x50a2('0x3')]},'note':{'type':Sequelize[_0x50a2('0x3')]},'read1stAt':{'type':Sequelize[_0x50a2('0x2')]},'threadId':{'type':Sequelize[_0x50a2('0x3')]},'externalUrl':{'type':Sequelize[_0x50a2('0x3')]},'lastMsgAt':{'type':Sequelize[_0x50a2('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x50a2('0x4')]('in',_0x50a2('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x50a2('0x3')]},'autoreplyExecuted':{'type':Sequelize[_0x50a2('0x6')],'defaultValue':![]}};
\ No newline at end of file
+var _0x1c55=['sequelize','exports','BOOLEAN','DATE','STRING','ENUM','out'];(function(_0x458edc,_0x9baf98){var _0x44af29=function(_0x41929c){while(--_0x41929c){_0x458edc['push'](_0x458edc['shift']());}};_0x44af29(++_0x9baf98);}(_0x1c55,0x1e3));var _0x51c5=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1c55[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x51c5('0x0'));module[_0x51c5('0x1')]={'closed':{'type':Sequelize[_0x51c5('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x51c5('0x3')]},'disposition':{'type':Sequelize[_0x51c5('0x4')]},'secondDisposition':{'type':Sequelize[_0x51c5('0x4')]},'thirdDisposition':{'type':Sequelize[_0x51c5('0x4')]},'note':{'type':Sequelize[_0x51c5('0x4')]},'read1stAt':{'type':Sequelize[_0x51c5('0x3')]},'threadId':{'type':Sequelize[_0x51c5('0x4')]},'externalUrl':{'type':Sequelize['STRING']},'lastMsgAt':{'type':Sequelize[_0x51c5('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x51c5('0x5')]('in',_0x51c5('0x6')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x51c5('0x4')]},'autoreplyExecuted':{'type':Sequelize[_0x51c5('0x2')],'defaultValue':![]}};
\ No newline at end of file
index bf32259..753e02f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d6d=['key','model','keys','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','select','field','from','tools_tags','u.id','u.fullname','ui.OpenchannelInteractionId','left_join','users','openchannel_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','openchannel_accounts','openchannel_messages','me.OpenchannelInteractionId\x20=\x20i.id','expr','search','parseSearch','conditions','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','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?','find','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?','UserId','body','some','compact','isEmpty','OpenchannelAccountId','i.OpenchannelAccountId\x20IN\x20?','concat','parse','$lte','null','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','getFullTextValue','i.from\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','agent','getOpenchannelAccounts','role','sequelize','toString','keyBy','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','rows','catch','show','params','merge','options','create','describe','addMessage','OpenchannelMessage','ids','findOne','hasOwnProperty','pick','OpenchannelInteractionId','$gte','YYYY-MM-DD\x20HH:mm:ss','includeAll','include','setTags','findAll','color','emit','removeTags','download','root','files','tmp','join','server','format','transcript-%d-%s.zip','CmContact','lastName','Attachment','Messages','createdAt','direction','secret','OpenchannelAccount','get','Account','Owner','N.A.','closed','closedAt','threadId','Public','existsSync','pipe','createWriteStream','basename','out','System','Contact','firstName','views','downloadInteraction.ejs','transcript-','.pdf','Openchannel','createPdfFromHTML','log','err','eml-format','fast-json-patch','moment','bluebird','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','localhost','./openchannelInteraction.socket','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','name','send','Users','map','fullname','Tags','split','forEach','push','TagIds','index','OpenchannelInteraction','rawAttributes','fieldName','type'];(function(_0x46f965,_0x23bf4c){var _0x324394=function(_0x21fb02){while(--_0x21fb02){_0x46f965['push'](_0x46f965['shift']());}};_0x324394(++_0x23bf4c);}(_0x0d6d,0x197));var _0xd0d6=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0x0d6d[_0x2e4aa2];return _0x5e6092;};'use strict';var emlformat=require(_0xd0d6('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xd0d6('0x1'));var rp=require('request-promise');var moment=require(_0xd0d6('0x2'));var BPromise=require(_0xd0d6('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd0d6('0x4'));var sox=require(_0xd0d6('0x5'));var csv=require(_0xd0d6('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd0d6('0x7'));var _=require('lodash');var squel=require(_0xd0d6('0x8'));var crypto=require(_0xd0d6('0x9'));var jsforce=require(_0xd0d6('0xa'));var deskjs=require(_0xd0d6('0xb'));var toCsv=require('to-csv');var querystring=require(_0xd0d6('0xc'));var Papa=require(_0xd0d6('0xd'));var Redis=require(_0xd0d6('0xe'));var authService=require(_0xd0d6('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var pdf=require(_0xd0d6('0x10'));var hardwareService=require(_0xd0d6('0x11'));var logger=require(_0xd0d6('0x12'))(_0xd0d6('0x13'));var utils=require('../../config/utils');var config=require(_0xd0d6('0x14'));var licenseUtil=require(_0xd0d6('0x15'));var db=require('../../mysqldb')['db'];config[_0xd0d6('0x16')]=_['defaults'](config[_0xd0d6('0x16')],{'host':_0xd0d6('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd0d6('0x16')]));require(_0xd0d6('0x18'))['register'](socket);function respondWithStatusCode(_0x5b49da,_0x3ee478){_0x3ee478=_0x3ee478||0xcc;return function(_0x14829d){if(_0x14829d){return _0x5b49da[_0xd0d6('0x19')](_0x3ee478);}return _0x5b49da[_0xd0d6('0x1a')](_0x3ee478)[_0xd0d6('0x1b')]();};}function respondWithResult(_0x44dab0,_0x5fb3bb){_0x5fb3bb=_0x5fb3bb||0xc8;return function(_0xe31f7d){if(_0xe31f7d){return _0x44dab0[_0xd0d6('0x1a')](_0x5fb3bb)[_0xd0d6('0x1c')](_0xe31f7d);}};}function respondWithFilteredResult(_0x406630,_0x59d885){return function(_0x1b8d8a){if(_0x1b8d8a){var _0x231fd1=typeof _0x59d885[_0xd0d6('0x1d')]===_0xd0d6('0x1e')&&typeof _0x59d885[_0xd0d6('0x1f')]==='undefined';var _0x3d042a=_0x1b8d8a[_0xd0d6('0x20')];var _0x20ba25=_0x231fd1?0x0:_0x59d885[_0xd0d6('0x1d')];var _0x7569a3=_0x231fd1?_0x1b8d8a[_0xd0d6('0x20')]:_0x59d885[_0xd0d6('0x1d')]+_0x59d885['limit'];var _0x1914b8;if(_0x7569a3>=_0x3d042a){_0x7569a3=_0x3d042a;_0x1914b8=0xc8;}else{_0x1914b8=0xce;}_0x406630[_0xd0d6('0x1a')](_0x1914b8);return _0x406630['set'](_0xd0d6('0x21'),_0x20ba25+'-'+_0x7569a3+'/'+_0x3d042a)[_0xd0d6('0x1c')](_0x1b8d8a);}return null;};}function patchUpdates(_0x3a96a9){return function(_0x2fa77b){try{jsonpatch[_0xd0d6('0x22')](_0x2fa77b,_0x3a96a9,!![]);}catch(_0x45c39a){return BPromise[_0xd0d6('0x23')](_0x45c39a);}return _0x2fa77b[_0xd0d6('0x24')]();};}function saveUpdates(_0x134b60,_0x2f312e){return function(_0x573b99){if(_0x573b99){return _0x573b99[_0xd0d6('0x25')](_0x134b60)[_0xd0d6('0x26')](function(_0x19b531){return _0x19b531;});}return null;};}function removeEntity(_0x3f996b,_0x2cec70){return function(_0x4d1b9d){if(_0x4d1b9d){return _0x4d1b9d[_0xd0d6('0x27')]()['then'](function(){_0x3f996b['status'](0xcc)[_0xd0d6('0x1b')]();});}};}function handleEntityNotFound(_0x302840,_0x7ebbdd){return function(_0x49623a){if(!_0x49623a){_0x302840[_0xd0d6('0x19')](0x194);}return _0x49623a;};}function handleError(_0x41df9d,_0x8c0310){_0x8c0310=_0x8c0310||0x1f4;return function(_0x50c0d5){logger['error'](_0x50c0d5['stack']);if(_0x50c0d5[_0xd0d6('0x28')]){delete _0x50c0d5['name'];}_0x41df9d[_0xd0d6('0x1a')](_0x8c0310)[_0xd0d6('0x29')](_0x50c0d5);};}function getInteractionUsers(_0x1a0a15,_0x383084){return new BPromise(function(_0x2fdf73,_0x5d4c73){try{if(_0x383084[_0x1a0a15['id']]){_0x1a0a15[_0xd0d6('0x2a')]=_[_0xd0d6('0x2b')](_0x383084[_0x1a0a15['id']],function(_0x5aa955){return{'id':_0x5aa955['id'],'fullname':_0x5aa955[_0xd0d6('0x2c')]};});}}catch(_0x1ea65d){_0x5d4c73(_0x1ea65d);}_0x2fdf73(_0x1a0a15);});}function getInteractionTags(_0x111268,_0xaea0b9){return new BPromise(function(_0x1b34ad,_0x55a0ca){try{if(_0x111268['TagIds']){_0x111268[_0xd0d6('0x2d')]=[];_0x111268['TagIds'][_0xd0d6('0x2e')](',')[_0xd0d6('0x2f')](function(_0x4799a7){_0x111268[_0xd0d6('0x2d')][_0xd0d6('0x30')](_0xaea0b9[_0x4799a7]);});}delete _0x111268[_0xd0d6('0x31')];}catch(_0xe66b3e){_0x55a0ca(_0xe66b3e);}_0x1b34ad(_0x111268);});}function updateOpenchannelInteraction(_0x37f2bd,_0x2bbe6f,_0xfcba97){return new BPromise(function(_0x5cd357,_0x4726f){return getInteractionUsers(_0x37f2bd,_0xfcba97)[_0xd0d6('0x26')](function(_0x398243){return getInteractionTags(_0x398243,_0x2bbe6f);})[_0xd0d6('0x26')](function(_0xb67b6b){_0x5cd357(_0xb67b6b);})['catch'](function(_0x1ac369){_0x4726f(_0x1ac369);});});}exports[_0xd0d6('0x32')]=function(_0x2d3e00,_0x2249f8){var _0x5f4961={},_0x39bb4c={},_0x421585={'count':0x0,'rows':[]};var _0x248ccc=_[_0xd0d6('0x2b')](db[_0xd0d6('0x33')][_0xd0d6('0x34')],function(_0x3c20d7){return{'name':_0x3c20d7[_0xd0d6('0x35')],'type':_0x3c20d7[_0xd0d6('0x36')][_0xd0d6('0x37')]};});_0x39bb4c[_0xd0d6('0x38')]=_['map'](_0x248ccc,_0xd0d6('0x28'));_0x39bb4c['query']=_[_0xd0d6('0x39')](_0x2d3e00[_0xd0d6('0x3a')]);_0x39bb4c[_0xd0d6('0x3b')]=_['intersection'](_0x39bb4c['model'],_0x39bb4c[_0xd0d6('0x3a')]);_0x5f4961['attributes']=_[_0xd0d6('0x3c')](_0x39bb4c['model'],qs['fields'](_0x2d3e00['query'][_0xd0d6('0x3d')]));_0x5f4961[_0xd0d6('0x3e')]=_0x5f4961[_0xd0d6('0x3e')][_0xd0d6('0x3f')]?_0x5f4961['attributes']:_0x39bb4c[_0xd0d6('0x38')];if(!_0x2d3e00[_0xd0d6('0x3a')]['hasOwnProperty'](_0xd0d6('0x40'))){_0x5f4961[_0xd0d6('0x1f')]=qs[_0xd0d6('0x1f')](_0x2d3e00[_0xd0d6('0x3a')]['limit']);_0x5f4961['offset']=qs[_0xd0d6('0x1d')](_0x2d3e00['query'][_0xd0d6('0x1d')]);}_0x5f4961[_0xd0d6('0x41')]=qs[_0xd0d6('0x42')](_0x2d3e00[_0xd0d6('0x3a')]['sort']);_0x5f4961[_0xd0d6('0x43')]=qs['filters'](_['pick'](_0x2d3e00[_0xd0d6('0x3a')],_0x39bb4c[_0xd0d6('0x3b')]),_0x248ccc);var _0x40040c=[];var _0x3dd3d6=squel[_0xd0d6('0x44')]()[_0xd0d6('0x45')]('id')[_0xd0d6('0x45')]('name')[_0xd0d6('0x45')]('color')[_0xd0d6('0x46')](_0xd0d6('0x47'));var _0x109213=squel[_0xd0d6('0x44')]()[_0xd0d6('0x45')](_0xd0d6('0x48'))[_0xd0d6('0x45')](_0xd0d6('0x49'))['field'](_0xd0d6('0x4a'))[_0xd0d6('0x46')]('user_has_openchannel_interactions','ui')[_0xd0d6('0x4b')](_0xd0d6('0x4c'),'u','u.id\x20=\x20ui.UserId');var _0x4f6c5a=squel[_0xd0d6('0x44')]()['from'](_0xd0d6('0x4d'),'i')[_0xd0d6('0x4b')](_0xd0d6('0x4e'),'c',_0xd0d6('0x4f'))[_0xd0d6('0x4b')]('users','o',_0xd0d6('0x50'))[_0xd0d6('0x4b')](_0xd0d6('0x51'),'a','a.id\x20=\x20i.OpenchannelAccountId')[_0xd0d6('0x4b')](_0xd0d6('0x52'),'me',_0xd0d6('0x53'))[_0xd0d6('0x4b')]('openchannel_interaction_has_tags','it','it.OpenchannelInteractionId\x20=\x20i.id')[_0xd0d6('0x4b')]('tools_tags','t','t.id\x20=\x20it.TagId');var _0x24351e=squel[_0xd0d6('0x54')]();var _0x25cb25=[];var _0x4865d7=squel['expr']();var _0x46ce06;if(_0x2d3e00[_0xd0d6('0x3a')][_0xd0d6('0x55')]){_0x46ce06=as[_0xd0d6('0x56')](_0x2d3e00['query'][_0xd0d6('0x55')]);var _0x3a3a07=_0x46ce06['sqlOperator'];for(var _0x2cefa8=0x0;_0x2cefa8<_0x46ce06[_0xd0d6('0x57')][_0xd0d6('0x3f')];_0x2cefa8++){var _0x3f88d5=_0x46ce06[_0xd0d6('0x57')][_0x2cefa8];var _0x3cdf3f='i';var _0x32aa7d=_['find'](_0x248ccc,['name',_0x3f88d5[_0xd0d6('0x45')]]);if(!_0x32aa7d){switch(_0x3f88d5[_0xd0d6('0x45')]){case _0xd0d6('0x58'):if(_0x3f88d5[_0xd0d6('0x59')]==0x1){_0x4f6c5a[_0xd0d6('0x5a')]('`'+_0x3f88d5[_0xd0d6('0x45')]+_0xd0d6('0x5b'));}else{_0x4f6c5a['having']('`'+_0x3f88d5[_0xd0d6('0x45')]+_0xd0d6('0x5c'));}break;case'Contact':if(_0x3f88d5[_0xd0d6('0x5d')]===_0xd0d6('0x5e')){if(_0x3f88d5[_0xd0d6('0x59')][_0xd0d6('0x2e')]('\x20')[_0xd0d6('0x3f')]>0x1){_0x24351e[_0x3a3a07](_0xd0d6('0x5f'),qs['getFullTextValue'](_0x3f88d5['value']),null);}else{var _0x52c237='%'+_0x3f88d5[_0xd0d6('0x59')]+'%';_0x24351e[_0x3a3a07](_0xd0d6('0x60'),_0x52c237,_0x52c237,_0x52c237);}}else{_0x32aa7d=_[_0xd0d6('0x61')](_0x248ccc,[_0xd0d6('0x28'),_0xd0d6('0x62')]);_0x3f88d5[_0xd0d6('0x45')]='ContactId';_0x4c31a9=as[_0xd0d6('0x63')](_0x3cdf3f,_0x32aa7d[_0xd0d6('0x36')],_0x3f88d5);_0x24351e[_0x3a3a07](_0x4c31a9[_0xd0d6('0x64')],_0x4c31a9[_0xd0d6('0x59')][_0xd0d6('0x65')],_0x4c31a9[_0xd0d6('0x59')][_0xd0d6('0x1b')]);}break;case _0xd0d6('0x66'):var _0x572518=_0x3f88d5[_0xd0d6('0x59')]['split'](',')[_0xd0d6('0x2b')](function(_0x5b2f65){return Number(_0x5b2f65);});_0x572518['forEach'](function(_0x54d72b){_0x4865d7['or'](_0xd0d6('0x67'),'%,'+_0x54d72b+',%');});_0x25cb25=_[_0xd0d6('0x68')](_0x25cb25,_0x572518);break;case _0xd0d6('0x69'):if(_0x3f88d5[_0xd0d6('0x5d')]===_0xd0d6('0x5e')){_0x24351e[_0x3a3a07](_0xd0d6('0x6a'),'%'+_0x3f88d5['value']+'%',null);}else{_0x32aa7d=_['find'](_0x248ccc,['name',_0xd0d6('0x6b')]);_0x3f88d5[_0xd0d6('0x45')]='UserId';_0x4c31a9=as[_0xd0d6('0x63')](_0x3cdf3f,_0x32aa7d[_0xd0d6('0x36')],_0x3f88d5);_0x24351e[_0x3a3a07](_0x4c31a9[_0xd0d6('0x64')],_0x4c31a9[_0xd0d6('0x59')][_0xd0d6('0x65')],_0x4c31a9[_0xd0d6('0x59')][_0xd0d6('0x1b')]);}break;case _0xd0d6('0x6c'):_0x4c31a9=as['buildExpression']('me',null,_0x3f88d5);_0x24351e[_0x3a3a07](_0x4c31a9[_0xd0d6('0x64')],_0x4c31a9[_0xd0d6('0x59')][_0xd0d6('0x65')],_0x4c31a9[_0xd0d6('0x59')]['end']);break;}}else{var _0x4c31a9=as[_0xd0d6('0x63')](_0x3cdf3f,_0x32aa7d[_0xd0d6('0x36')],_0x3f88d5);_0x24351e[_0x3a3a07](_0x4c31a9[_0xd0d6('0x64')],_0x4c31a9[_0xd0d6('0x59')][_0xd0d6('0x65')],_0x4c31a9[_0xd0d6('0x59')][_0xd0d6('0x1b')]);}}}else{var _0x127d6a=_(_0x2d3e00[_0xd0d6('0x3a')])[_0xd0d6('0x39')]()[_0xd0d6('0x2b')](function(_0x3c04ec){return _[_0xd0d6('0x6d')](_0x248ccc,[_0xd0d6('0x28'),_0x3c04ec])?_0x3c04ec:undefined;})[_0xd0d6('0x6e')]()[_0xd0d6('0x59')]();if(!_[_0xd0d6('0x6f')](_0x127d6a)){_0x127d6a[_0xd0d6('0x2f')](function(_0x383e69){if(_0x383e69===_0xd0d6('0x70')){_0x4f6c5a[_0xd0d6('0x43')](_0xd0d6('0x71'),[][_0xd0d6('0x72')](_0x2d3e00[_0xd0d6('0x3a')][_0x383e69]));}else if(_0x383e69==='createdAt'){var _0x2da28f=JSON[_0xd0d6('0x73')](_0x2d3e00[_0xd0d6('0x3a')][_0x383e69])['$gte'];var _0x162f3a=JSON[_0xd0d6('0x73')](_0x2d3e00[_0xd0d6('0x3a')][_0x383e69])[_0xd0d6('0x74')];_0x4f6c5a[_0xd0d6('0x43')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x2da28f,_0x162f3a);}else{if(_0x2d3e00['query'][_0x383e69]===_0xd0d6('0x75')){_0x4f6c5a[_0xd0d6('0x43')]('i.'+_0x383e69+'\x20IS\x20NULL');}else{_0x4f6c5a['where']('i.'+_0x383e69+_0xd0d6('0x76'),_0x2d3e00[_0xd0d6('0x3a')][_0x383e69]);}}});}if(_0x2d3e00['query'][_0xd0d6('0x77')]){if(_0x2d3e00[_0xd0d6('0x3a')][_0xd0d6('0x77')]==0x1){_0x4f6c5a[_0xd0d6('0x5a')]('`unreadMessages`\x20=\x200');}else{_0x4f6c5a[_0xd0d6('0x5a')](_0xd0d6('0x78'));}}if(_0x2d3e00[_0xd0d6('0x3a')][_0xd0d6('0x79')]){_0x25cb25=_['isArray'](_0x2d3e00[_0xd0d6('0x3a')][_0xd0d6('0x79')])?_0x2d3e00['query'][_0xd0d6('0x79')]:new Array(_0x2d3e00[_0xd0d6('0x3a')]['tag']);_0x25cb25['forEach'](function(_0x1ec029){_0x4865d7['or'](_0xd0d6('0x67'),'%,'+_0x1ec029+',%');});}if(_0x2d3e00[_0xd0d6('0x3a')][_0xd0d6('0x7a')]){var _0x461b44=_0x2d3e00[_0xd0d6('0x3a')][_0xd0d6('0x7a')][_0xd0d6('0x7b')]('\x5c','\x5c\x5c')[_0xd0d6('0x7b')](/'/g,'\x27\x27');if(qs[_0xd0d6('0x7c')](_0x461b44)){_0x24351e['or'](_0xd0d6('0x7d'),_0x461b44+'%');}else{_0x24351e['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xd0d6('0x7e')](_0x461b44))['or'](_0xd0d6('0x7f'),_0x461b44+'%')['or'](_0xd0d6('0x80'),_0x461b44+'%');}}}_0x4f6c5a[_0xd0d6('0x43')](_0x24351e);_0x4f6c5a[_0xd0d6('0x81')](_0xd0d6('0x82'));var _0x408991={'type':db[_0xd0d6('0x83')]['QueryTypes']['SELECT'],'raw':!![]};var _0x46e391=_0x4f6c5a['clone']();_0x46e391[_0xd0d6('0x45')](_0xd0d6('0x82'));_0x46e391[_0xd0d6('0x45')](_0xd0d6('0x84'),'unreadMessages');if(_0x5f4961['order']){_0x5f4961['order'][_0xd0d6('0x2f')](function(_0x5491c6){var _0xa670ba=_0x5491c6[0x0]===_0xd0d6('0x85')?_0x5491c6[0x0]:'i.'+_0x5491c6[0x0];_0x4f6c5a[_0xd0d6('0x41')](_0xa670ba,_0x5491c6[0x1]===_0xd0d6('0x86')?![]:!![]);});}if(!_[_0xd0d6('0x6f')](_0x25cb25)){_0x4f6c5a[_0xd0d6('0x5a')](_0x4865d7);_0x46e391[_0xd0d6('0x43')](_0xd0d6('0x87'),_0x25cb25);}BPromise[_0xd0d6('0x88')]()['then'](function(){if(!_0x46ce06){if(_0x2d3e00[_0xd0d6('0x3a')][_0xd0d6('0x70')])return;_0x46e391[_0xd0d6('0x43')]('i.OpenchannelAccountId\x20IS\x20NOT\x20NULL');_0x4f6c5a[_0xd0d6('0x43')](_0xd0d6('0x89'));return;}if(_0x2d3e00[_0xd0d6('0x8a')]['role']!==_0xd0d6('0x8b'))return;return _0x2d3e00[_0xd0d6('0x8a')][_0xd0d6('0x8c')]({'attributes':['id'],'raw':!![]})[_0xd0d6('0x26')](function(_0x4af0a3){if(_[_0xd0d6('0x6f')](_0x4af0a3)){_0x46e391[_0xd0d6('0x43')]('i.OpenchannelAccountId\x20IS\x20NULL');_0x4f6c5a['where']('i.OpenchannelAccountId\x20IS\x20NULL');}else{_0x46e391[_0xd0d6('0x43')](_0xd0d6('0x71'),_[_0xd0d6('0x2b')](_0x4af0a3,'id'));_0x4f6c5a[_0xd0d6('0x43')]('i.OpenchannelAccountId\x20IN\x20?',_[_0xd0d6('0x2b')](_0x4af0a3,'id'));}});})['then'](function(){if(_0x2d3e00[_0xd0d6('0x8a')][_0xd0d6('0x8d')]===_0xd0d6('0x8b')&&!_0x46ce06&&!_0x2d3e00['query']['OpenchannelAccountId'])return[];return db[_0xd0d6('0x8e')][_0xd0d6('0x3a')](_0x46e391[_0xd0d6('0x8f')](),_0x408991);})['then'](function(_0x2fbae2){_0x421585[_0xd0d6('0x20')]=_0x2fbae2[_0xd0d6('0x3f')];if(_0x421585['count']===0x0)return[];return db[_0xd0d6('0x8e')][_0xd0d6('0x3a')](_0x3dd3d6[_0xd0d6('0x8f')](),_0x408991)[_0xd0d6('0x26')](function(_0x18cb1e){_0x40040c=_[_0xd0d6('0x90')](_0x18cb1e,'id');_0x408991=_['merge'](_0x408991,{'model':db[_0xd0d6('0x33')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2d3e00[_0xd0d6('0x3a')][_0xd0d6('0x3d')]){_0x5f4961[_0xd0d6('0x3e')][_0xd0d6('0x2f')](function(_0x1bf87f){_0x4f6c5a[_0xd0d6('0x45')]('i.'+_0x1bf87f);});}else{_0x4f6c5a[_0xd0d6('0x45')](_0xd0d6('0x84'),_0xd0d6('0x58'));_0x4f6c5a['field'](_0xd0d6('0x91'),_0xd0d6('0x92'));_0x4f6c5a[_0xd0d6('0x45')](_0xd0d6('0x93'),_0xd0d6('0x94'));_0x4f6c5a[_0xd0d6('0x45')]('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');_0x4f6c5a[_0xd0d6('0x45')](_0xd0d6('0x95'));_0x4f6c5a[_0xd0d6('0x45')](_0xd0d6('0x96'),_0xd0d6('0x97'));_0x4f6c5a[_0xd0d6('0x45')](_0xd0d6('0x98'),_0xd0d6('0x99'));_0x4f6c5a[_0xd0d6('0x45')]('c.email',_0xd0d6('0x9a'));_0x4f6c5a['field'](_0xd0d6('0x9b'),_0xd0d6('0x9c'));_0x4f6c5a['field'](_0xd0d6('0x9d'),_0xd0d6('0x9e'));_0x4f6c5a['field']('c.fax',_0xd0d6('0x9f'));_0x4f6c5a[_0xd0d6('0x45')](_0xd0d6('0xa0'),_0xd0d6('0xa1'));_0x4f6c5a[_0xd0d6('0x45')](_0xd0d6('0xa2'),_0xd0d6('0xa3'));_0x4f6c5a[_0xd0d6('0x45')](_0xd0d6('0xa4'),'TagIds');}if(_0x5f4961['limit'])_0x4f6c5a[_0xd0d6('0x1f')](_0x5f4961[_0xd0d6('0x1f')]);if(_0x5f4961[_0xd0d6('0x1d')])_0x4f6c5a[_0xd0d6('0x1d')](_0x5f4961[_0xd0d6('0x1d')]);return db[_0xd0d6('0x8e')][_0xd0d6('0x3a')](_0x4f6c5a['toString'](),_0x408991);})[_0xd0d6('0x26')](function(_0x563110){if(_0x563110[_0xd0d6('0x3f')]>0x0)_0x109213['where'](_0xd0d6('0xa5'),_['map'](_0x563110,'id'));return db['sequelize'][_0xd0d6('0x3a')](_0x109213['toString'](),_0x408991)[_0xd0d6('0x26')](function(_0x5d8de6){var _0x303b64=_[_0xd0d6('0xa6')](_0x5d8de6,'OpenchannelInteractionId');var _0x5a2a96=[];_0x563110[_0xd0d6('0x2f')](function(_0x35b55a){_0x5a2a96[_0xd0d6('0x30')](updateOpenchannelInteraction(_0x35b55a,_0x40040c,_0x303b64));});return BPromise['all'](_0x5a2a96);});});})[_0xd0d6('0x26')](function(_0x554753){_0x421585[_0xd0d6('0xa7')]=_0x554753;return _0x421585;})[_0xd0d6('0x26')](respondWithFilteredResult(_0x2249f8,_0x5f4961))[_0xd0d6('0xa8')](handleError(_0x2249f8,null));};exports[_0xd0d6('0xa9')]=function(_0x3c649d,_0x33401d){var _0x34959e={};if(_0x3c649d[_0xd0d6('0x3a')]['type']&&_0x3c649d[_0xd0d6('0x3a')][_0xd0d6('0x36')]===_0xd0d6('0x46')){_0x34959e['from']=_0x3c649d[_0xd0d6('0xaa')]['id'];}else{_0x34959e['id']=_0x3c649d[_0xd0d6('0xaa')]['id'];}var _0x35e596={'raw':![],'where':_0x34959e},_0x459385={};_0x459385[_0xd0d6('0x38')]=_[_0xd0d6('0x39')](db[_0xd0d6('0x33')][_0xd0d6('0x34')]);_0x459385['query']=_[_0xd0d6('0x39')](_0x3c649d[_0xd0d6('0x3a')]);_0x459385[_0xd0d6('0x3b')]=_[_0xd0d6('0x3c')](_0x459385[_0xd0d6('0x38')],_0x459385[_0xd0d6('0x3a')]);_0x35e596[_0xd0d6('0x3e')]=_[_0xd0d6('0x3c')](_0x459385[_0xd0d6('0x38')],qs[_0xd0d6('0x3d')](_0x3c649d[_0xd0d6('0x3a')][_0xd0d6('0x3d')]));_0x35e596[_0xd0d6('0x3e')]=_0x35e596[_0xd0d6('0x3e')][_0xd0d6('0x3f')]?_0x35e596['attributes']:_0x459385[_0xd0d6('0x38')];if(_0x3c649d['query']['includeAll']){_0x35e596['include']=[{'all':!![]}];}_0x35e596=_[_0xd0d6('0xab')]({},_0x35e596,_0x3c649d[_0xd0d6('0xac')]);return db[_0xd0d6('0x33')][_0xd0d6('0x61')](_0x35e596)[_0xd0d6('0x26')](handleEntityNotFound(_0x33401d,null))[_0xd0d6('0x26')](respondWithResult(_0x33401d,null))[_0xd0d6('0xa8')](handleError(_0x33401d,null));};exports[_0xd0d6('0xad')]=function(_0x526b22,_0x1d4cad){return db[_0xd0d6('0x33')][_0xd0d6('0xad')](_0x526b22[_0xd0d6('0x6c')],{})[_0xd0d6('0x26')](respondWithResult(_0x1d4cad,0xc9))['catch'](handleError(_0x1d4cad,null));};exports['update']=function(_0xfca0ad,_0xb094df){if(_0xfca0ad['body']['id']){delete _0xfca0ad[_0xd0d6('0x6c')]['id'];}return db[_0xd0d6('0x33')][_0xd0d6('0x61')]({'where':{'id':_0xfca0ad[_0xd0d6('0xaa')]['id']}})[_0xd0d6('0x26')](handleEntityNotFound(_0xb094df,null))['then'](saveUpdates(_0xfca0ad['body'],null))[_0xd0d6('0x26')](respondWithResult(_0xb094df,null))[_0xd0d6('0xa8')](handleError(_0xb094df,null));};exports[_0xd0d6('0x27')]=function(_0xf40628,_0x116b40){return db[_0xd0d6('0x33')][_0xd0d6('0x61')]({'where':{'id':_0xf40628[_0xd0d6('0xaa')]['id']}})[_0xd0d6('0x26')](handleEntityNotFound(_0x116b40,null))[_0xd0d6('0x26')](removeEntity(_0x116b40,null))[_0xd0d6('0xa8')](handleError(_0x116b40,null));};exports[_0xd0d6('0xae')]=function(_0x355859,_0x46c95f){return db[_0xd0d6('0x33')][_0xd0d6('0xae')]()[_0xd0d6('0x26')](respondWithResult(_0x46c95f,null))['catch'](handleError(_0x46c95f,null));};exports[_0xd0d6('0xaf')]=function(_0x65476c,_0x573a8f,_0x2ee102){return db[_0xd0d6('0xb0')]['find']({'where':{'id':_0x65476c[_0xd0d6('0xaa')]['id']}})[_0xd0d6('0x26')](handleEntityNotFound(_0x573a8f,null))[_0xd0d6('0x26')](function(_0x48b6f8){if(_0x48b6f8){return _0x48b6f8[_0xd0d6('0xaf')](_0x65476c[_0xd0d6('0x6c')][_0xd0d6('0xb1')],_['omit'](_0x65476c[_0xd0d6('0x6c')],[_0xd0d6('0xb1'),'id'])||{});}})['then'](respondWithResult(_0x573a8f,null))['catch'](handleError(_0x573a8f,null));};exports['getMessages']=function(_0x29c26b,_0x2c1899,_0x16155e){var _0x4582ed={'raw':![],'where':{}};var _0x22bdd6={};var _0x142fc5={'count':0x0,'rows':[]};return db[_0xd0d6('0x33')][_0xd0d6('0xb2')]({'where':{'id':_0x29c26b[_0xd0d6('0xaa')]['id']}})['then'](handleEntityNotFound(_0x2c1899,null))['then'](function(_0x44417c){if(_0x44417c){_0x22bdd6[_0xd0d6('0x38')]=_[_0xd0d6('0x39')](db[_0xd0d6('0xb0')][_0xd0d6('0x34')]);_0x22bdd6[_0xd0d6('0x3a')]=_[_0xd0d6('0x39')](_0x29c26b[_0xd0d6('0x3a')]);_0x22bdd6['filters']=_[_0xd0d6('0x3c')](_0x22bdd6[_0xd0d6('0x38')],_0x22bdd6[_0xd0d6('0x3a')]);_0x4582ed[_0xd0d6('0x3e')]=_[_0xd0d6('0x3c')](_0x22bdd6['model'],qs[_0xd0d6('0x3d')](_0x29c26b[_0xd0d6('0x3a')][_0xd0d6('0x3d')]));_0x4582ed['attributes']=_0x4582ed[_0xd0d6('0x3e')][_0xd0d6('0x3f')]?_0x4582ed['attributes']:_0x22bdd6[_0xd0d6('0x38')];if(!_0x29c26b[_0xd0d6('0x3a')][_0xd0d6('0xb3')](_0xd0d6('0x40'))){_0x4582ed['limit']=qs[_0xd0d6('0x1f')](_0x29c26b[_0xd0d6('0x3a')][_0xd0d6('0x1f')]);_0x4582ed[_0xd0d6('0x1d')]=qs[_0xd0d6('0x1d')](_0x29c26b[_0xd0d6('0x3a')]['offset']);}_0x4582ed['order']=qs[_0xd0d6('0x42')](_0x29c26b[_0xd0d6('0x3a')][_0xd0d6('0x42')]);_0x4582ed['where']=qs[_0xd0d6('0x3b')](_[_0xd0d6('0xb4')](_0x29c26b[_0xd0d6('0x3a')],_0x22bdd6[_0xd0d6('0x3b')]));_0x4582ed[_0xd0d6('0x43')][_0xd0d6('0xb5')]=_0x44417c['id'];if(_0x29c26b['query'][_0xd0d6('0x7a')]){_0x4582ed['where']=_['merge'](_0x4582ed[_0xd0d6('0x43')],{'$or':_[_0xd0d6('0x2b')](_0x4582ed[_0xd0d6('0x3e')],function(_0x3df3e){var _0x25befa={};_0x25befa[_0x3df3e]={'$like':'%'+_0x29c26b[_0xd0d6('0x3a')][_0xd0d6('0x7a')]+'%'};return _0x25befa;})});}if(_0x29c26b['query']['$gte']){var _0x3e650f=_0x29c26b['query'][_0xd0d6('0xb6')][_0xd0d6('0x2e')](',');var _0xb5e3d0={};_0xb5e3d0[_0x3e650f[0x0]]={'$gte':moment(_0x3e650f[0x1])['format'](_0xd0d6('0xb7'))};_0x4582ed[_0xd0d6('0x43')]=_['merge'](_0x4582ed['where'],_0xb5e3d0);}_0x4582ed=_[_0xd0d6('0xab')]({},_0x4582ed,_0x29c26b[_0xd0d6('0xac')]);return db[_0xd0d6('0xb0')][_0xd0d6('0x20')]({'where':_0x4582ed[_0xd0d6('0x43')]})[_0xd0d6('0x26')](function(_0x38ed5d){_0x142fc5[_0xd0d6('0x20')]=_0x38ed5d;if(_0x29c26b[_0xd0d6('0x3a')][_0xd0d6('0xb8')]){_0x4582ed[_0xd0d6('0xb9')]=[{'all':!![]}];}return db['OpenchannelMessage']['findAll'](_0x4582ed);})[_0xd0d6('0x26')](function(_0x26aea8){_0x142fc5[_0xd0d6('0xa7')]=_0x26aea8;return _0x142fc5;});}})['then'](respondWithFilteredResult(_0x2c1899,_0x4582ed))['catch'](handleError(_0x2c1899,null));};exports['addTags']=function(_0x324eea,_0x230eba,_0x3849cf){return db[_0xd0d6('0x33')][_0xd0d6('0x61')]({'where':{'id':_0x324eea[_0xd0d6('0xaa')]['id']}})[_0xd0d6('0x26')](handleEntityNotFound(_0x230eba,null))['then'](function(_0x4e1df5){if(_0x4e1df5){return _0x4e1df5[_0xd0d6('0xba')](_0x324eea[_0xd0d6('0x6c')][_0xd0d6('0xb1')],_['omit'](_0x324eea[_0xd0d6('0x6c')],[_0xd0d6('0xb1'),'id'])||{})['spread'](function(){return db['Tag'][_0xd0d6('0xbb')]({'attributes':['id',_0xd0d6('0x28'),_0xd0d6('0xbc')],'where':{'id':_0x324eea[_0xd0d6('0x6c')]['ids']}});})[_0xd0d6('0x26')](function(_0x5c4b6c){socket[_0xd0d6('0xbd')]('openchannelInteractionTags:save',{'id':Number(_0x324eea['params']['id']),'tags':_0x5c4b6c||[]});return{'id':Number(_0x324eea[_0xd0d6('0xaa')]['id']),'tags':_0x5c4b6c||[]};});}})[_0xd0d6('0x26')](respondWithResult(_0x230eba,null))[_0xd0d6('0xa8')](handleError(_0x230eba,null));};exports[_0xd0d6('0xbe')]=function(_0x449ce9,_0x17ca1c,_0x2101fa){return db[_0xd0d6('0x33')][_0xd0d6('0x61')]({'where':{'id':_0x449ce9[_0xd0d6('0xaa')]['id']}})['then'](handleEntityNotFound(_0x17ca1c,null))[_0xd0d6('0x26')](function(_0x33a8bd){if(_0x33a8bd){return _0x33a8bd[_0xd0d6('0xbe')](_0x449ce9['query'][_0xd0d6('0xb1')]);}})[_0xd0d6('0x26')](respondWithStatusCode(_0x17ca1c,null))[_0xd0d6('0xa8')](handleError(_0x17ca1c,null));};exports[_0xd0d6('0xbf')]=function(_0x26871f,_0x2bfc6a){var _0x24e749=moment()['unix']()[_0xd0d6('0x8f')]();var _0x21c819=path['join'](config[_0xd0d6('0xc0')],'server',_0xd0d6('0xc1'),_0xd0d6('0xc2'));var _0x5bb739=path[_0xd0d6('0xc3')](config['root'],_0xd0d6('0xc4'),_0xd0d6('0xc1'),'attachments');var _0x464231=path[_0xd0d6('0xc3')](_0x21c819,_0x24e749);var _0x1ef3bf=util[_0xd0d6('0xc5')](_0xd0d6('0xc6'),_0x26871f[_0xd0d6('0xaa')]['id'],_0x24e749);var _0x3e8f43=path[_0xd0d6('0xc3')](_0x21c819,_0x1ef3bf);var _0x3b7c5b=[];_0x3b7c5b['push']({'model':db['User'],'as':_0xd0d6('0x69'),'attributes':['id',_0xd0d6('0x2c')],'raw':!![]});_0x3b7c5b['push']({'model':db[_0xd0d6('0xc7')],'as':'Contact','attributes':['id','firstName',_0xd0d6('0xc8')],'raw':!![]});if(_0x26871f['query']['attachments']){_0x3b7c5b[_0xd0d6('0x30')]({'model':db[_0xd0d6('0xc9')],'as':'Attachment','raw':!![]});}var _0x2532a3=[{'model':db['OpenchannelMessage'],'as':_0xd0d6('0xca'),'attributes':['id',_0xd0d6('0x6c'),_0xd0d6('0xcb'),_0xd0d6('0xcc'),_0xd0d6('0xcd'),'read'],'include':_0x3b7c5b}];_0x2532a3[_0xd0d6('0x30')]({'model':db[_0xd0d6('0xce')],'as':'Account','attributes':['id',_0xd0d6('0x28')]});_0x2532a3[_0xd0d6('0x30')]({'model':db[_0xd0d6('0x69')],'as':'Owner','attributes':['id',_0xd0d6('0x2c')]});return db['OpenchannelInteraction']['find']({'where':{'id':_0x26871f[_0xd0d6('0xaa')]['id']},'include':_0x2532a3})[_0xd0d6('0x26')](handleEntityNotFound(_0x2bfc6a,null))[_0xd0d6('0x26')](function(_0x41281d){if(_0x41281d){var _0x4dc1f5=_0x41281d[_0xd0d6('0xcf')]({'plain':!![]});fs['mkdirSync'](_0x464231);var _0x573710={'channel':'Openchannel','account':_0x4dc1f5[_0xd0d6('0xd0')][_0xd0d6('0x28')],'agent':_0x4dc1f5[_0xd0d6('0xd1')]?_0x4dc1f5[_0xd0d6('0xd1')][_0xd0d6('0x2c')]:_0xd0d6('0xd2'),'createdAt':moment(_0x4dc1f5[_0xd0d6('0xcb')])[_0xd0d6('0xc5')](_0xd0d6('0xb7'))[_0xd0d6('0x8f')](),'closedAt':_0x4dc1f5[_0xd0d6('0xd3')]?moment(_0x4dc1f5[_0xd0d6('0xd4')])[_0xd0d6('0xc5')](_0xd0d6('0xb7'))[_0xd0d6('0x8f')]():'','disposition':_0x4dc1f5['disposition'],'visibility':_0x4dc1f5[_0xd0d6('0xd5')]?_0xd0d6('0xd6'):'Private','messages':_(_0x4dc1f5[_0xd0d6('0xca')])['filter']({'secret':![]})[_0xd0d6('0x2b')](function(_0x46d5fb){if(_0x46d5fb['Attachment']){var _0x40a9c2=path[_0xd0d6('0xc3')](_0x5bb739,_0x46d5fb[_0xd0d6('0xc9')]['basename']);if(fs[_0xd0d6('0xd7')](_0x40a9c2)){fs['createReadStream'](_0x40a9c2)[_0xd0d6('0xd8')](fs[_0xd0d6('0xd9')](path[_0xd0d6('0xc3')](_0x464231,_0x46d5fb[_0xd0d6('0xc9')][_0xd0d6('0xda')])));}}return{'date':moment(_0x46d5fb['createdAt'])[_0xd0d6('0xc5')](_0xd0d6('0xb7'))['toString'](),'sender':_0x46d5fb['direction']===_0xd0d6('0xdb')?_0x46d5fb['User']?_0x46d5fb[_0xd0d6('0x69')][_0xd0d6('0x2c')]:_0xd0d6('0xdc'):_0x46d5fb[_0xd0d6('0xdd')][_0xd0d6('0xde')]+(_0x46d5fb['Contact'][_0xd0d6('0xc8')]?'\x20'+_0x46d5fb[_0xd0d6('0xdd')][_0xd0d6('0xc8')]:''),'body':_0x46d5fb[_0xd0d6('0xc9')]?_0x46d5fb[_0xd0d6('0xc9')]['basename']:_0x46d5fb[_0xd0d6('0x6c')],'direction':_0x46d5fb[_0xd0d6('0xcc')]===_0xd0d6('0xdb')?'A':'C','secret':_0x46d5fb[_0xd0d6('0xcd')],'read':_0x46d5fb['read'],'attachment':_0x46d5fb[_0xd0d6('0xc9')]};})[_0xd0d6('0x59')]()};return ejs['renderFile'](path['join'](config[_0xd0d6('0xc0')],_0xd0d6('0xc4'),_0xd0d6('0xdf'),_0xd0d6('0xe0')),{'interaction':_0x573710})[_0xd0d6('0x26')](function(_0x57a0b6){var _0x5de9bf=path['join'](_0x464231,_0xd0d6('0xe1')+_0x4dc1f5['id']+'-'+_0x24e749+_0xd0d6('0xe2'));var _0x1195f7={'path':_0x5de9bf,'channel':_0xd0d6('0xe3'),'interactionId':_0x4dc1f5['id']};return pdf[_0xd0d6('0xe4')](_0x57a0b6,_0x1195f7);})[_0xd0d6('0x26')](function(){return new BPromise(function(_0x1ad701,_0x3cfe9e){zipdir(_0x464231,{'saveTo':_0x3e8f43},function(_0x3265cd,_0xf9294c){if(_0x3265cd)return _0x3cfe9e(_0x3265cd);return _0x1ad701(_0xf9294c);});})[_0xd0d6('0x26')](function(){return new BPromise(function(_0x293890,_0x222c24){rimraf(_0x464231,function(_0x1b744e){if(_0x1b744e)_0x222c24(_0x1b744e);return _0x293890();});});})[_0xd0d6('0x26')](function(){return _0x2bfc6a[_0xd0d6('0xbf')](_0x3e8f43,_0x1ef3bf,function(_0x2d9eaa){if(_0x2d9eaa){console[_0xd0d6('0xe5')](_0xd0d6('0xe6'),_0x2d9eaa);}else{fs['unlinkSync'](_0x3e8f43);}});});});}else{return _0x2bfc6a['sendStatus'](0xc8);}})[_0xd0d6('0xa8')](handleError(_0x2bfc6a,null));};
\ No newline at end of file
+var _0x4c13=['closed','YYYY-MM-DD\x20HH:mm:ss','disposition','threadId','Public','Private','basename','existsSync','pipe','createWriteStream','System','lastName','renderFile','views','transcript-','.pdf','Openchannel','createPdfFromHTML','err','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/export/pdf','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','register','sendStatus','status','end','json','offset','count','set','Content-Range','apply','reject','save','update','then','destroy','name','send','map','fullname','Tags','TagIds','split','forEach','catch','index','fieldName','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','field','from','tools_tags','select','u.fullname','ui.OpenchannelInteractionId','user_has_openchannel_interactions','left_join','users','u.id\x20=\x20ui.UserId','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','a.id\x20=\x20i.OpenchannelAccountId','me.OpenchannelInteractionId\x20=\x20i.id','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id','parseSearch','search','sqlOperator','conditions','find','unreadMessages','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)','value','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','type','text','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','start','some','compact','isEmpty','OpenchannelAccountId','i.OpenchannelAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','i.from\x20LIKE\x20?','group','Sequelize','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','sequelize','toString','keyBy','OpenchannelInteraction','a.key','Account.key','a.mandatoryDisposition','contactName','i.*','c.firstName','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?','OpenchannelInteractionId','push','show','params','rawAttributes','keys','includeAll','include','merge','options','create','body','describe','OpenchannelMessage','addMessage','omit','ids','format','findAll','rows','setTags','spread','color','emit','openchannelInteractionTags:save','removeTags','download','unix','join','root','server','files','attachments','transcript-%d-%s.zip','CmContact','firstName','Attachment','Messages','direction','secret','read','OpenchannelAccount','Account','get','mkdirSync','Owner','N.A.'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x4c13,0x102));var _0x34c1=function(_0x20499e,_0x47ccd6){_0x20499e=_0x20499e-0x0;var _0x255050=_0x4c13[_0x20499e];return _0x255050;};'use strict';var emlformat=require(_0x34c1('0x0'));var rimraf=require(_0x34c1('0x1'));var zipdir=require(_0x34c1('0x2'));var jsonpatch=require(_0x34c1('0x3'));var rp=require(_0x34c1('0x4'));var moment=require(_0x34c1('0x5'));var BPromise=require(_0x34c1('0x6'));var Mustache=require(_0x34c1('0x7'));var util=require('util');var path=require(_0x34c1('0x8'));var sox=require(_0x34c1('0x9'));var csv=require(_0x34c1('0xa'));var ejs=require(_0x34c1('0xb'));var fs=require('fs');var fs_extra=require(_0x34c1('0xc'));var _=require(_0x34c1('0xd'));var squel=require(_0x34c1('0xe'));var crypto=require('crypto');var jsforce=require(_0x34c1('0xf'));var deskjs=require(_0x34c1('0x10'));var toCsv=require(_0x34c1('0xa'));var querystring=require('querystring');var Papa=require(_0x34c1('0x11'));var Redis=require('ioredis');var authService=require(_0x34c1('0x12'));var qs=require(_0x34c1('0x13'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0x34c1('0x14'));var hardwareService=require(_0x34c1('0x15'));var logger=require(_0x34c1('0x16'))('api');var utils=require(_0x34c1('0x17'));var config=require(_0x34c1('0x18'));var licenseUtil=require(_0x34c1('0x19'));var db=require(_0x34c1('0x1a'))['db'];config['redis']=_[_0x34c1('0x1b')](config[_0x34c1('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0x34c1('0x1d'))(new Redis(config[_0x34c1('0x1c')]));require('./openchannelInteraction.socket')[_0x34c1('0x1e')](socket);function respondWithStatusCode(_0x2ab663,_0x2e7779){_0x2e7779=_0x2e7779||0xcc;return function(_0x4d256e){if(_0x4d256e){return _0x2ab663[_0x34c1('0x1f')](_0x2e7779);}return _0x2ab663[_0x34c1('0x20')](_0x2e7779)[_0x34c1('0x21')]();};}function respondWithResult(_0x40c764,_0x435625){_0x435625=_0x435625||0xc8;return function(_0x5a6b96){if(_0x5a6b96){return _0x40c764[_0x34c1('0x20')](_0x435625)[_0x34c1('0x22')](_0x5a6b96);}};}function respondWithFilteredResult(_0x1b6d57,_0x42d4ee){return function(_0x5e01d3){if(_0x5e01d3){var _0x1ed199=typeof _0x42d4ee[_0x34c1('0x23')]==='undefined'&&typeof _0x42d4ee['limit']==='undefined';var _0x5cbb42=_0x5e01d3[_0x34c1('0x24')];var _0x340e99=_0x1ed199?0x0:_0x42d4ee['offset'];var _0xd4c99b=_0x1ed199?_0x5e01d3[_0x34c1('0x24')]:_0x42d4ee[_0x34c1('0x23')]+_0x42d4ee['limit'];var _0x1f7085;if(_0xd4c99b>=_0x5cbb42){_0xd4c99b=_0x5cbb42;_0x1f7085=0xc8;}else{_0x1f7085=0xce;}_0x1b6d57[_0x34c1('0x20')](_0x1f7085);return _0x1b6d57[_0x34c1('0x25')](_0x34c1('0x26'),_0x340e99+'-'+_0xd4c99b+'/'+_0x5cbb42)[_0x34c1('0x22')](_0x5e01d3);}return null;};}function patchUpdates(_0x558234){return function(_0x24114b){try{jsonpatch[_0x34c1('0x27')](_0x24114b,_0x558234,!![]);}catch(_0x484b99){return BPromise[_0x34c1('0x28')](_0x484b99);}return _0x24114b[_0x34c1('0x29')]();};}function saveUpdates(_0x12ed9d,_0x415ea0){return function(_0x2959f6){if(_0x2959f6){return _0x2959f6[_0x34c1('0x2a')](_0x12ed9d)[_0x34c1('0x2b')](function(_0x43d397){return _0x43d397;});}return null;};}function removeEntity(_0x3337e8,_0x5f0962){return function(_0x2f11e5){if(_0x2f11e5){return _0x2f11e5[_0x34c1('0x2c')]()[_0x34c1('0x2b')](function(){_0x3337e8[_0x34c1('0x20')](0xcc)[_0x34c1('0x21')]();});}};}function handleEntityNotFound(_0x4bf751,_0x158be7){return function(_0x125665){if(!_0x125665){_0x4bf751['sendStatus'](0x194);}return _0x125665;};}function handleError(_0x96a3c5,_0x5ba572){_0x5ba572=_0x5ba572||0x1f4;return function(_0xbd85e){logger['error'](_0xbd85e['stack']);if(_0xbd85e[_0x34c1('0x2d')]){delete _0xbd85e[_0x34c1('0x2d')];}_0x96a3c5[_0x34c1('0x20')](_0x5ba572)[_0x34c1('0x2e')](_0xbd85e);};}function getInteractionUsers(_0x5293f7,_0x59120a){return new BPromise(function(_0x1866d7,_0xcf2f4b){try{if(_0x59120a[_0x5293f7['id']]){_0x5293f7['Users']=_[_0x34c1('0x2f')](_0x59120a[_0x5293f7['id']],function(_0x29fd7b){return{'id':_0x29fd7b['id'],'fullname':_0x29fd7b[_0x34c1('0x30')]};});}}catch(_0x2e1cc0){_0xcf2f4b(_0x2e1cc0);}_0x1866d7(_0x5293f7);});}function getInteractionTags(_0x399609,_0x4ee8b3){return new BPromise(function(_0xb53b2,_0x5cd60e){try{if(_0x399609['TagIds']){_0x399609[_0x34c1('0x31')]=[];_0x399609[_0x34c1('0x32')][_0x34c1('0x33')](',')[_0x34c1('0x34')](function(_0x2c4541){_0x399609['Tags']['push'](_0x4ee8b3[_0x2c4541]);});}delete _0x399609[_0x34c1('0x32')];}catch(_0x218709){_0x5cd60e(_0x218709);}_0xb53b2(_0x399609);});}function updateOpenchannelInteraction(_0x30c54f,_0xdf1765,_0x46f8fb){return new BPromise(function(_0x35d7a8,_0x17223a){return getInteractionUsers(_0x30c54f,_0x46f8fb)[_0x34c1('0x2b')](function(_0x588722){return getInteractionTags(_0x588722,_0xdf1765);})[_0x34c1('0x2b')](function(_0x248ef4){_0x35d7a8(_0x248ef4);})[_0x34c1('0x35')](function(_0x164ce7){_0x17223a(_0x164ce7);});});}exports[_0x34c1('0x36')]=function(_0x40ebb9,_0x1004cb){var _0x1de541={},_0x5b6460={},_0x37652e={'count':0x0,'rows':[]};var _0x3eecec=_[_0x34c1('0x2f')](db['OpenchannelInteraction']['rawAttributes'],function(_0x3df992){return{'name':_0x3df992[_0x34c1('0x37')],'type':_0x3df992['type'][_0x34c1('0x38')]};});_0x5b6460[_0x34c1('0x39')]=_[_0x34c1('0x2f')](_0x3eecec,_0x34c1('0x2d'));_0x5b6460[_0x34c1('0x3a')]=_['keys'](_0x40ebb9[_0x34c1('0x3a')]);_0x5b6460[_0x34c1('0x3b')]=_['intersection'](_0x5b6460[_0x34c1('0x39')],_0x5b6460[_0x34c1('0x3a')]);_0x1de541[_0x34c1('0x3c')]=_[_0x34c1('0x3d')](_0x5b6460['model'],qs[_0x34c1('0x3e')](_0x40ebb9[_0x34c1('0x3a')][_0x34c1('0x3e')]));_0x1de541['attributes']=_0x1de541[_0x34c1('0x3c')][_0x34c1('0x3f')]?_0x1de541[_0x34c1('0x3c')]:_0x5b6460['model'];if(!_0x40ebb9[_0x34c1('0x3a')][_0x34c1('0x40')](_0x34c1('0x41'))){_0x1de541['limit']=qs['limit'](_0x40ebb9[_0x34c1('0x3a')][_0x34c1('0x42')]);_0x1de541[_0x34c1('0x23')]=qs[_0x34c1('0x23')](_0x40ebb9[_0x34c1('0x3a')][_0x34c1('0x23')]);}_0x1de541[_0x34c1('0x43')]=qs['sort'](_0x40ebb9[_0x34c1('0x3a')][_0x34c1('0x44')]);_0x1de541[_0x34c1('0x45')]=qs[_0x34c1('0x3b')](_['pick'](_0x40ebb9[_0x34c1('0x3a')],_0x5b6460[_0x34c1('0x3b')]),_0x3eecec);var _0x9cd75b=[];var _0x52fbd2=squel['select']()[_0x34c1('0x46')]('id')[_0x34c1('0x46')](_0x34c1('0x2d'))[_0x34c1('0x46')]('color')[_0x34c1('0x47')](_0x34c1('0x48'));var _0x56f464=squel[_0x34c1('0x49')]()[_0x34c1('0x46')]('u.id')[_0x34c1('0x46')](_0x34c1('0x4a'))['field'](_0x34c1('0x4b'))[_0x34c1('0x47')](_0x34c1('0x4c'),'ui')[_0x34c1('0x4d')](_0x34c1('0x4e'),'u',_0x34c1('0x4f'));var _0x3ac3e7=squel['select']()[_0x34c1('0x47')]('openchannel_interactions','i')[_0x34c1('0x4d')]('cm_contacts','c',_0x34c1('0x50'))[_0x34c1('0x4d')](_0x34c1('0x4e'),'o',_0x34c1('0x51'))['left_join']('openchannel_accounts','a',_0x34c1('0x52'))[_0x34c1('0x4d')]('openchannel_messages','me',_0x34c1('0x53'))[_0x34c1('0x4d')](_0x34c1('0x54'),'it',_0x34c1('0x55'))[_0x34c1('0x4d')](_0x34c1('0x48'),'t','t.id\x20=\x20it.TagId');var _0x2d77f3=squel['expr']();var _0x3b30ac=[];var _0x43c735=squel['expr']();var _0x589d09;if(_0x40ebb9[_0x34c1('0x3a')]['search']){_0x589d09=as[_0x34c1('0x56')](_0x40ebb9[_0x34c1('0x3a')][_0x34c1('0x57')]);var _0x5a8e05=_0x589d09[_0x34c1('0x58')];for(var _0x5ca16a=0x0;_0x5ca16a<_0x589d09['conditions'][_0x34c1('0x3f')];_0x5ca16a++){var _0x5f0a86=_0x589d09[_0x34c1('0x59')][_0x5ca16a];var _0x1db76='i';var _0x106790=_[_0x34c1('0x5a')](_0x3eecec,[_0x34c1('0x2d'),_0x5f0a86['field']]);if(!_0x106790){switch(_0x5f0a86[_0x34c1('0x46')]){case _0x34c1('0x5b'):if(_0x5f0a86['value']==0x1){_0x3ac3e7[_0x34c1('0x5c')]('`'+_0x5f0a86[_0x34c1('0x46')]+_0x34c1('0x5d'));}else{_0x3ac3e7['having']('`'+_0x5f0a86[_0x34c1('0x46')]+_0x34c1('0x5e'));}break;case _0x34c1('0x5f'):if(_0x5f0a86[_0x34c1('0x60')]===_0x34c1('0x61')){if(_0x5f0a86['value'][_0x34c1('0x33')]('\x20')['length']>0x1){_0x2d77f3[_0x5a8e05](_0x34c1('0x62'),qs['getFullTextValue'](_0x5f0a86[_0x34c1('0x63')]),null);}else{var _0xbfd5d3='%'+_0x5f0a86[_0x34c1('0x63')]+'%';_0x2d77f3[_0x5a8e05](_0x34c1('0x64'),_0xbfd5d3,_0xbfd5d3,_0xbfd5d3);}}else{_0x106790=_[_0x34c1('0x5a')](_0x3eecec,['name','ContactId']);_0x5f0a86[_0x34c1('0x46')]=_0x34c1('0x65');_0x31cbd7=as[_0x34c1('0x66')](_0x1db76,_0x106790[_0x34c1('0x67')],_0x5f0a86);_0x2d77f3[_0x5a8e05](_0x31cbd7[_0x34c1('0x68')],_0x31cbd7[_0x34c1('0x63')]['start'],_0x31cbd7[_0x34c1('0x63')][_0x34c1('0x21')]);}break;case _0x34c1('0x69'):var _0x358c3b=_0x5f0a86[_0x34c1('0x63')][_0x34c1('0x33')](',')[_0x34c1('0x2f')](function(_0x35afc8){return Number(_0x35afc8);});_0x358c3b[_0x34c1('0x34')](function(_0x3f0ca1){_0x43c735['or'](_0x34c1('0x6a'),'%,'+_0x3f0ca1+',%');});_0x3b30ac=_['union'](_0x3b30ac,_0x358c3b);break;case _0x34c1('0x6b'):if(_0x5f0a86[_0x34c1('0x60')]===_0x34c1('0x61')){_0x2d77f3[_0x5a8e05](_0x34c1('0x6c'),'%'+_0x5f0a86[_0x34c1('0x63')]+'%',null);}else{_0x106790=_[_0x34c1('0x5a')](_0x3eecec,['name',_0x34c1('0x6d')]);_0x5f0a86[_0x34c1('0x46')]=_0x34c1('0x6d');_0x31cbd7=as[_0x34c1('0x66')](_0x1db76,_0x106790[_0x34c1('0x67')],_0x5f0a86);_0x2d77f3[_0x5a8e05](_0x31cbd7[_0x34c1('0x68')],_0x31cbd7['value']['start'],_0x31cbd7[_0x34c1('0x63')][_0x34c1('0x21')]);}break;case'body':_0x31cbd7=as[_0x34c1('0x66')]('me',null,_0x5f0a86);_0x2d77f3[_0x5a8e05](_0x31cbd7[_0x34c1('0x68')],_0x31cbd7['value'][_0x34c1('0x6e')],_0x31cbd7[_0x34c1('0x63')][_0x34c1('0x21')]);break;}}else{var _0x31cbd7=as['buildExpression'](_0x1db76,_0x106790['type'],_0x5f0a86);_0x2d77f3[_0x5a8e05](_0x31cbd7[_0x34c1('0x68')],_0x31cbd7[_0x34c1('0x63')][_0x34c1('0x6e')],_0x31cbd7[_0x34c1('0x63')][_0x34c1('0x21')]);}}}else{var _0x21ac76=_(_0x40ebb9[_0x34c1('0x3a')])['keys']()[_0x34c1('0x2f')](function(_0x9422c3){return _[_0x34c1('0x6f')](_0x3eecec,[_0x34c1('0x2d'),_0x9422c3])?_0x9422c3:undefined;})[_0x34c1('0x70')]()['value']();if(!_[_0x34c1('0x71')](_0x21ac76)){_0x21ac76[_0x34c1('0x34')](function(_0xf4d00e){if(_0xf4d00e===_0x34c1('0x72')){_0x3ac3e7[_0x34c1('0x45')](_0x34c1('0x73'),[][_0x34c1('0x74')](_0x40ebb9[_0x34c1('0x3a')][_0xf4d00e]));}else if(_0xf4d00e===_0x34c1('0x75')){var _0x10a6b3=JSON[_0x34c1('0x76')](_0x40ebb9[_0x34c1('0x3a')][_0xf4d00e])[_0x34c1('0x77')];var _0x536e73=JSON[_0x34c1('0x76')](_0x40ebb9[_0x34c1('0x3a')][_0xf4d00e])[_0x34c1('0x78')];_0x3ac3e7[_0x34c1('0x45')](_0x34c1('0x79'),_0x10a6b3,_0x536e73);}else{if(_0x40ebb9['query'][_0xf4d00e]===_0x34c1('0x7a')){_0x3ac3e7[_0x34c1('0x45')]('i.'+_0xf4d00e+_0x34c1('0x7b'));}else{_0x3ac3e7[_0x34c1('0x45')]('i.'+_0xf4d00e+_0x34c1('0x7c'),_0x40ebb9['query'][_0xf4d00e]);}}});}if(_0x40ebb9[_0x34c1('0x3a')]['read']){if(_0x40ebb9[_0x34c1('0x3a')]['read']==0x1){_0x3ac3e7[_0x34c1('0x5c')](_0x34c1('0x7d'));}else{_0x3ac3e7[_0x34c1('0x5c')](_0x34c1('0x7e'));}}if(_0x40ebb9[_0x34c1('0x3a')][_0x34c1('0x7f')]){_0x3b30ac=_[_0x34c1('0x80')](_0x40ebb9[_0x34c1('0x3a')][_0x34c1('0x7f')])?_0x40ebb9['query'][_0x34c1('0x7f')]:new Array(_0x40ebb9[_0x34c1('0x3a')]['tag']);_0x3b30ac[_0x34c1('0x34')](function(_0x4ce33f){_0x43c735['or'](_0x34c1('0x6a'),'%,'+_0x4ce33f+',%');});}if(_0x40ebb9[_0x34c1('0x3a')]['filter']){var _0x3a7718=_0x40ebb9[_0x34c1('0x3a')][_0x34c1('0x81')][_0x34c1('0x82')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x34c1('0x83')](_0x3a7718)){_0x2d77f3['or'](_0x34c1('0x84'),_0x3a7718+'%');}else{_0x2d77f3['or'](_0x34c1('0x85'),qs['getFullTextValue'](_0x3a7718))['or'](_0x34c1('0x86'),_0x3a7718+'%')['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x3a7718+'%');}}}_0x3ac3e7['where'](_0x2d77f3);_0x3ac3e7[_0x34c1('0x87')]('i.id');var _0x2484de={'type':db[_0x34c1('0x88')]['QueryTypes']['SELECT'],'raw':!![]};var _0x33d2d7=_0x3ac3e7[_0x34c1('0x89')]();_0x33d2d7[_0x34c1('0x46')]('i.id');_0x33d2d7[_0x34c1('0x46')](_0x34c1('0x8a'),_0x34c1('0x5b'));if(_0x1de541[_0x34c1('0x43')]){_0x1de541[_0x34c1('0x43')]['forEach'](function(_0x321e72){var _0x3d4906=_0x321e72[0x0]==='contactName'?_0x321e72[0x0]:'i.'+_0x321e72[0x0];_0x3ac3e7['order'](_0x3d4906,_0x321e72[0x1]===_0x34c1('0x8b')?![]:!![]);});}if(!_[_0x34c1('0x71')](_0x3b30ac)){_0x3ac3e7[_0x34c1('0x5c')](_0x43c735);_0x33d2d7['where']('t.id\x20IN\x20?',_0x3b30ac);}BPromise[_0x34c1('0x8c')]()[_0x34c1('0x2b')](function(){if(!_0x589d09){if(_0x40ebb9[_0x34c1('0x3a')][_0x34c1('0x72')])return;_0x33d2d7[_0x34c1('0x45')]('i.OpenchannelAccountId\x20IS\x20NOT\x20NULL');_0x3ac3e7[_0x34c1('0x45')](_0x34c1('0x8d'));return;}if(_0x40ebb9[_0x34c1('0x8e')][_0x34c1('0x8f')]!==_0x34c1('0x90'))return;return _0x40ebb9[_0x34c1('0x8e')][_0x34c1('0x91')]({'attributes':['id'],'raw':!![]})[_0x34c1('0x2b')](function(_0x138799){if(_['isEmpty'](_0x138799)){_0x33d2d7['where'](_0x34c1('0x92'));_0x3ac3e7['where'](_0x34c1('0x92'));}else{_0x33d2d7[_0x34c1('0x45')]('i.OpenchannelAccountId\x20IN\x20?',_['map'](_0x138799,'id'));_0x3ac3e7['where']('i.OpenchannelAccountId\x20IN\x20?',_[_0x34c1('0x2f')](_0x138799,'id'));}});})[_0x34c1('0x2b')](function(){if(_0x40ebb9[_0x34c1('0x8e')]['role']==='agent'&&!_0x589d09&&!_0x40ebb9[_0x34c1('0x3a')]['OpenchannelAccountId'])return[];return db[_0x34c1('0x93')][_0x34c1('0x3a')](_0x33d2d7[_0x34c1('0x94')](),_0x2484de);})['then'](function(_0x4010c8){_0x37652e[_0x34c1('0x24')]=_0x4010c8[_0x34c1('0x3f')];if(_0x37652e[_0x34c1('0x24')]===0x0)return[];return db[_0x34c1('0x93')][_0x34c1('0x3a')](_0x52fbd2[_0x34c1('0x94')](),_0x2484de)['then'](function(_0xfc7e28){_0x9cd75b=_[_0x34c1('0x95')](_0xfc7e28,'id');_0x2484de=_['merge'](_0x2484de,{'model':db[_0x34c1('0x96')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x40ebb9[_0x34c1('0x3a')][_0x34c1('0x3e')]){_0x1de541['attributes'][_0x34c1('0x34')](function(_0x28f087){_0x3ac3e7['field']('i.'+_0x28f087);});}else{_0x3ac3e7[_0x34c1('0x46')](_0x34c1('0x8a'),'unreadMessages');_0x3ac3e7[_0x34c1('0x46')](_0x34c1('0x97'),_0x34c1('0x98'));_0x3ac3e7[_0x34c1('0x46')](_0x34c1('0x99'),'Account.mandatoryDisposition');_0x3ac3e7[_0x34c1('0x46')]('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',_0x34c1('0x9a'));_0x3ac3e7[_0x34c1('0x46')](_0x34c1('0x9b'));_0x3ac3e7[_0x34c1('0x46')](_0x34c1('0x9c'),_0x34c1('0x9d'));_0x3ac3e7[_0x34c1('0x46')](_0x34c1('0x9e'),_0x34c1('0x9f'));_0x3ac3e7[_0x34c1('0x46')](_0x34c1('0xa0'),_0x34c1('0xa1'));_0x3ac3e7[_0x34c1('0x46')](_0x34c1('0xa2'),_0x34c1('0xa3'));_0x3ac3e7[_0x34c1('0x46')](_0x34c1('0xa4'),_0x34c1('0xa5'));_0x3ac3e7[_0x34c1('0x46')](_0x34c1('0xa6'),'Contact.fax');_0x3ac3e7[_0x34c1('0x46')](_0x34c1('0xa7'),_0x34c1('0xa8'));_0x3ac3e7[_0x34c1('0x46')](_0x34c1('0xa9'),_0x34c1('0xaa'));_0x3ac3e7[_0x34c1('0x46')](_0x34c1('0xab'),_0x34c1('0x32'));}if(_0x1de541[_0x34c1('0x42')])_0x3ac3e7[_0x34c1('0x42')](_0x1de541[_0x34c1('0x42')]);if(_0x1de541[_0x34c1('0x23')])_0x3ac3e7[_0x34c1('0x23')](_0x1de541[_0x34c1('0x23')]);return db['sequelize'][_0x34c1('0x3a')](_0x3ac3e7[_0x34c1('0x94')](),_0x2484de);})[_0x34c1('0x2b')](function(_0x3ee43a){if(_0x3ee43a[_0x34c1('0x3f')]>0x0)_0x56f464['where'](_0x34c1('0xac'),_[_0x34c1('0x2f')](_0x3ee43a,'id'));return db[_0x34c1('0x93')][_0x34c1('0x3a')](_0x56f464['toString'](),_0x2484de)[_0x34c1('0x2b')](function(_0x101b15){var _0x134071=_['groupBy'](_0x101b15,_0x34c1('0xad'));var _0x4b08cd=[];_0x3ee43a[_0x34c1('0x34')](function(_0x7c234f){_0x4b08cd[_0x34c1('0xae')](updateOpenchannelInteraction(_0x7c234f,_0x9cd75b,_0x134071));});return BPromise['all'](_0x4b08cd);});});})['then'](function(_0x1feea8){_0x37652e['rows']=_0x1feea8;return _0x37652e;})[_0x34c1('0x2b')](respondWithFilteredResult(_0x1004cb,_0x1de541))[_0x34c1('0x35')](handleError(_0x1004cb,null));};exports[_0x34c1('0xaf')]=function(_0x438c17,_0x31dfc2){var _0x5484a8={};if(_0x438c17['query'][_0x34c1('0x67')]&&_0x438c17[_0x34c1('0x3a')]['type']==='from'){_0x5484a8[_0x34c1('0x47')]=_0x438c17[_0x34c1('0xb0')]['id'];}else{_0x5484a8['id']=_0x438c17[_0x34c1('0xb0')]['id'];}var _0x11f8e6={'raw':![],'where':_0x5484a8},_0x598548={};_0x598548[_0x34c1('0x39')]=_['keys'](db['OpenchannelInteraction'][_0x34c1('0xb1')]);_0x598548['query']=_[_0x34c1('0xb2')](_0x438c17[_0x34c1('0x3a')]);_0x598548[_0x34c1('0x3b')]=_[_0x34c1('0x3d')](_0x598548['model'],_0x598548[_0x34c1('0x3a')]);_0x11f8e6[_0x34c1('0x3c')]=_[_0x34c1('0x3d')](_0x598548[_0x34c1('0x39')],qs[_0x34c1('0x3e')](_0x438c17[_0x34c1('0x3a')]['fields']));_0x11f8e6[_0x34c1('0x3c')]=_0x11f8e6[_0x34c1('0x3c')][_0x34c1('0x3f')]?_0x11f8e6[_0x34c1('0x3c')]:_0x598548[_0x34c1('0x39')];if(_0x438c17[_0x34c1('0x3a')][_0x34c1('0xb3')]){_0x11f8e6[_0x34c1('0xb4')]=[{'all':!![]}];}_0x11f8e6=_[_0x34c1('0xb5')]({},_0x11f8e6,_0x438c17[_0x34c1('0xb6')]);return db[_0x34c1('0x96')]['find'](_0x11f8e6)[_0x34c1('0x2b')](handleEntityNotFound(_0x31dfc2,null))['then'](respondWithResult(_0x31dfc2,null))[_0x34c1('0x35')](handleError(_0x31dfc2,null));};exports[_0x34c1('0xb7')]=function(_0x4c3c28,_0x4ee8a6){return db['OpenchannelInteraction']['create'](_0x4c3c28['body'],{})[_0x34c1('0x2b')](respondWithResult(_0x4ee8a6,0xc9))[_0x34c1('0x35')](handleError(_0x4ee8a6,null));};exports['update']=function(_0x5b33f4,_0x331c39){if(_0x5b33f4[_0x34c1('0xb8')]['id']){delete _0x5b33f4['body']['id'];}return db[_0x34c1('0x96')]['find']({'where':{'id':_0x5b33f4[_0x34c1('0xb0')]['id']}})[_0x34c1('0x2b')](handleEntityNotFound(_0x331c39,null))[_0x34c1('0x2b')](saveUpdates(_0x5b33f4[_0x34c1('0xb8')],null))[_0x34c1('0x2b')](respondWithResult(_0x331c39,null))[_0x34c1('0x35')](handleError(_0x331c39,null));};exports[_0x34c1('0x2c')]=function(_0x175c9e,_0x10f903){return db[_0x34c1('0x96')]['find']({'where':{'id':_0x175c9e[_0x34c1('0xb0')]['id']}})['then'](handleEntityNotFound(_0x10f903,null))[_0x34c1('0x2b')](removeEntity(_0x10f903,null))[_0x34c1('0x35')](handleError(_0x10f903,null));};exports[_0x34c1('0xb9')]=function(_0x86b3ad,_0x3fd583){return db[_0x34c1('0x96')][_0x34c1('0xb9')]()[_0x34c1('0x2b')](respondWithResult(_0x3fd583,null))[_0x34c1('0x35')](handleError(_0x3fd583,null));};exports['addMessage']=function(_0x1cf437,_0x31b27e,_0xdf75e7){return db[_0x34c1('0xba')]['find']({'where':{'id':_0x1cf437[_0x34c1('0xb0')]['id']}})[_0x34c1('0x2b')](handleEntityNotFound(_0x31b27e,null))['then'](function(_0x558851){if(_0x558851){return _0x558851[_0x34c1('0xbb')](_0x1cf437[_0x34c1('0xb8')]['ids'],_[_0x34c1('0xbc')](_0x1cf437[_0x34c1('0xb8')],[_0x34c1('0xbd'),'id'])||{});}})[_0x34c1('0x2b')](respondWithResult(_0x31b27e,null))[_0x34c1('0x35')](handleError(_0x31b27e,null));};exports['getMessages']=function(_0x13a712,_0x4b0a7f,_0x4778bb){var _0x138f0f={'raw':![],'where':{}};var _0x1cb06a={};var _0x268442={'count':0x0,'rows':[]};return db[_0x34c1('0x96')]['findOne']({'where':{'id':_0x13a712[_0x34c1('0xb0')]['id']}})[_0x34c1('0x2b')](handleEntityNotFound(_0x4b0a7f,null))['then'](function(_0x295287){if(_0x295287){_0x1cb06a[_0x34c1('0x39')]=_['keys'](db[_0x34c1('0xba')][_0x34c1('0xb1')]);_0x1cb06a[_0x34c1('0x3a')]=_[_0x34c1('0xb2')](_0x13a712[_0x34c1('0x3a')]);_0x1cb06a[_0x34c1('0x3b')]=_[_0x34c1('0x3d')](_0x1cb06a['model'],_0x1cb06a[_0x34c1('0x3a')]);_0x138f0f[_0x34c1('0x3c')]=_[_0x34c1('0x3d')](_0x1cb06a[_0x34c1('0x39')],qs['fields'](_0x13a712[_0x34c1('0x3a')][_0x34c1('0x3e')]));_0x138f0f[_0x34c1('0x3c')]=_0x138f0f[_0x34c1('0x3c')][_0x34c1('0x3f')]?_0x138f0f[_0x34c1('0x3c')]:_0x1cb06a['model'];if(!_0x13a712[_0x34c1('0x3a')][_0x34c1('0x40')]('nolimit')){_0x138f0f[_0x34c1('0x42')]=qs['limit'](_0x13a712[_0x34c1('0x3a')]['limit']);_0x138f0f[_0x34c1('0x23')]=qs['offset'](_0x13a712[_0x34c1('0x3a')][_0x34c1('0x23')]);}_0x138f0f[_0x34c1('0x43')]=qs[_0x34c1('0x44')](_0x13a712[_0x34c1('0x3a')][_0x34c1('0x44')]);_0x138f0f[_0x34c1('0x45')]=qs[_0x34c1('0x3b')](_['pick'](_0x13a712[_0x34c1('0x3a')],_0x1cb06a[_0x34c1('0x3b')]));_0x138f0f[_0x34c1('0x45')][_0x34c1('0xad')]=_0x295287['id'];if(_0x13a712['query']['filter']){_0x138f0f[_0x34c1('0x45')]=_['merge'](_0x138f0f['where'],{'$or':_['map'](_0x138f0f['attributes'],function(_0x49adbf){var _0x3a83e0={};_0x3a83e0[_0x49adbf]={'$like':'%'+_0x13a712[_0x34c1('0x3a')][_0x34c1('0x81')]+'%'};return _0x3a83e0;})});}if(_0x13a712['query'][_0x34c1('0x77')]){var _0x3d0864=_0x13a712[_0x34c1('0x3a')][_0x34c1('0x77')][_0x34c1('0x33')](',');var _0x5651b7={};_0x5651b7[_0x3d0864[0x0]]={'$gte':moment(_0x3d0864[0x1])[_0x34c1('0xbe')]('YYYY-MM-DD\x20HH:mm:ss')};_0x138f0f[_0x34c1('0x45')]=_[_0x34c1('0xb5')](_0x138f0f['where'],_0x5651b7);}_0x138f0f=_['merge']({},_0x138f0f,_0x13a712[_0x34c1('0xb6')]);return db['OpenchannelMessage'][_0x34c1('0x24')]({'where':_0x138f0f['where']})[_0x34c1('0x2b')](function(_0x8db203){_0x268442[_0x34c1('0x24')]=_0x8db203;if(_0x13a712[_0x34c1('0x3a')][_0x34c1('0xb3')]){_0x138f0f['include']=[{'all':!![]}];}return db[_0x34c1('0xba')][_0x34c1('0xbf')](_0x138f0f);})['then'](function(_0x5ca9fd){_0x268442[_0x34c1('0xc0')]=_0x5ca9fd;return _0x268442;});}})[_0x34c1('0x2b')](respondWithFilteredResult(_0x4b0a7f,_0x138f0f))['catch'](handleError(_0x4b0a7f,null));};exports['addTags']=function(_0x164c70,_0x4b9714,_0x332da4){return db[_0x34c1('0x96')][_0x34c1('0x5a')]({'where':{'id':_0x164c70[_0x34c1('0xb0')]['id']}})[_0x34c1('0x2b')](handleEntityNotFound(_0x4b9714,null))[_0x34c1('0x2b')](function(_0xe70c06){if(_0xe70c06){return _0xe70c06[_0x34c1('0xc1')](_0x164c70['body'][_0x34c1('0xbd')],_[_0x34c1('0xbc')](_0x164c70[_0x34c1('0xb8')],[_0x34c1('0xbd'),'id'])||{})[_0x34c1('0xc2')](function(){return db['Tag'][_0x34c1('0xbf')]({'attributes':['id',_0x34c1('0x2d'),_0x34c1('0xc3')],'where':{'id':_0x164c70[_0x34c1('0xb8')]['ids']}});})[_0x34c1('0x2b')](function(_0x1e3e49){socket[_0x34c1('0xc4')](_0x34c1('0xc5'),{'id':Number(_0x164c70[_0x34c1('0xb0')]['id']),'tags':_0x1e3e49||[]});return{'id':Number(_0x164c70[_0x34c1('0xb0')]['id']),'tags':_0x1e3e49||[]};});}})[_0x34c1('0x2b')](respondWithResult(_0x4b9714,null))['catch'](handleError(_0x4b9714,null));};exports[_0x34c1('0xc6')]=function(_0x89ca15,_0x40c69b,_0x422f63){return db[_0x34c1('0x96')][_0x34c1('0x5a')]({'where':{'id':_0x89ca15[_0x34c1('0xb0')]['id']}})[_0x34c1('0x2b')](handleEntityNotFound(_0x40c69b,null))['then'](function(_0x4cad95){if(_0x4cad95){return _0x4cad95['removeTags'](_0x89ca15[_0x34c1('0x3a')]['ids']);}})[_0x34c1('0x2b')](respondWithStatusCode(_0x40c69b,null))[_0x34c1('0x35')](handleError(_0x40c69b,null));};exports[_0x34c1('0xc7')]=function(_0x5f8d2c,_0x55e515){var _0x4d75ed=moment()[_0x34c1('0xc8')]()[_0x34c1('0x94')]();var _0x194b10=path[_0x34c1('0xc9')](config[_0x34c1('0xca')],_0x34c1('0xcb'),_0x34c1('0xcc'),'tmp');var _0xf263cf=path[_0x34c1('0xc9')](config[_0x34c1('0xca')],'server','files',_0x34c1('0xcd'));var _0x5bf427=path[_0x34c1('0xc9')](_0x194b10,_0x4d75ed);var _0x4f1bd6=util[_0x34c1('0xbe')](_0x34c1('0xce'),_0x5f8d2c['params']['id'],_0x4d75ed);var _0x1cbe7=path['join'](_0x194b10,_0x4f1bd6);var _0x1bfc88=[];_0x1bfc88[_0x34c1('0xae')]({'model':db[_0x34c1('0x6b')],'as':'User','attributes':['id','fullname'],'raw':!![]});_0x1bfc88[_0x34c1('0xae')]({'model':db[_0x34c1('0xcf')],'as':_0x34c1('0x5f'),'attributes':['id',_0x34c1('0xd0'),'lastName'],'raw':!![]});if(_0x5f8d2c[_0x34c1('0x3a')][_0x34c1('0xcd')]){_0x1bfc88['push']({'model':db['Attachment'],'as':_0x34c1('0xd1'),'raw':!![]});}var _0x1ee022=[{'model':db['OpenchannelMessage'],'as':_0x34c1('0xd2'),'attributes':['id',_0x34c1('0xb8'),_0x34c1('0x75'),_0x34c1('0xd3'),_0x34c1('0xd4'),_0x34c1('0xd5')],'include':_0x1bfc88}];_0x1ee022['push']({'model':db[_0x34c1('0xd6')],'as':_0x34c1('0xd7'),'attributes':['id',_0x34c1('0x2d')]});_0x1ee022[_0x34c1('0xae')]({'model':db[_0x34c1('0x6b')],'as':'Owner','attributes':['id',_0x34c1('0x30')]});return db[_0x34c1('0x96')]['find']({'where':{'id':_0x5f8d2c[_0x34c1('0xb0')]['id']},'include':_0x1ee022})['then'](handleEntityNotFound(_0x55e515,null))['then'](function(_0x18a54b){if(_0x18a54b){var _0x322473=_0x18a54b[_0x34c1('0xd8')]({'plain':!![]});fs[_0x34c1('0xd9')](_0x5bf427);var _0x12043c={'channel':'Openchannel','account':_0x322473['Account'][_0x34c1('0x2d')],'agent':_0x322473[_0x34c1('0xda')]?_0x322473[_0x34c1('0xda')][_0x34c1('0x30')]:_0x34c1('0xdb'),'createdAt':moment(_0x322473[_0x34c1('0x75')])[_0x34c1('0xbe')]('YYYY-MM-DD\x20HH:mm:ss')[_0x34c1('0x94')](),'closedAt':_0x322473[_0x34c1('0xdc')]?moment(_0x322473['closedAt'])['format'](_0x34c1('0xdd'))[_0x34c1('0x94')]():'','disposition':_0x322473[_0x34c1('0xde')],'visibility':_0x322473[_0x34c1('0xdf')]?_0x34c1('0xe0'):_0x34c1('0xe1'),'messages':_(_0x322473[_0x34c1('0xd2')])[_0x34c1('0x81')]({'secret':![]})[_0x34c1('0x2f')](function(_0x5dcc20){if(_0x5dcc20[_0x34c1('0xd1')]){var _0x210c98=path['join'](_0xf263cf,_0x5dcc20['Attachment'][_0x34c1('0xe2')]);if(fs[_0x34c1('0xe3')](_0x210c98)){fs['createReadStream'](_0x210c98)[_0x34c1('0xe4')](fs[_0x34c1('0xe5')](path[_0x34c1('0xc9')](_0x5bf427,_0x5dcc20[_0x34c1('0xd1')][_0x34c1('0xe2')])));}}return{'date':moment(_0x5dcc20[_0x34c1('0x75')])[_0x34c1('0xbe')](_0x34c1('0xdd'))[_0x34c1('0x94')](),'sender':_0x5dcc20[_0x34c1('0xd3')]==='out'?_0x5dcc20[_0x34c1('0x6b')]?_0x5dcc20[_0x34c1('0x6b')]['fullname']:_0x34c1('0xe6'):_0x5dcc20['Contact'][_0x34c1('0xd0')]+(_0x5dcc20[_0x34c1('0x5f')][_0x34c1('0xe7')]?'\x20'+_0x5dcc20[_0x34c1('0x5f')][_0x34c1('0xe7')]:''),'body':_0x5dcc20[_0x34c1('0xd1')]?_0x5dcc20['Attachment'][_0x34c1('0xe2')]:_0x5dcc20['body'],'direction':_0x5dcc20[_0x34c1('0xd3')]==='out'?'A':'C','secret':_0x5dcc20[_0x34c1('0xd4')],'read':_0x5dcc20[_0x34c1('0xd5')],'attachment':_0x5dcc20['Attachment']};})[_0x34c1('0x63')]()};return ejs[_0x34c1('0xe8')](path[_0x34c1('0xc9')](config[_0x34c1('0xca')],_0x34c1('0xcb'),_0x34c1('0xe9'),'downloadInteraction.ejs'),{'interaction':_0x12043c})[_0x34c1('0x2b')](function(_0x54d8ac){var _0x2ffc9a=path[_0x34c1('0xc9')](_0x5bf427,_0x34c1('0xea')+_0x322473['id']+'-'+_0x4d75ed+_0x34c1('0xeb'));var _0x675490={'path':_0x2ffc9a,'channel':_0x34c1('0xec'),'interactionId':_0x322473['id']};return pdf[_0x34c1('0xed')](_0x54d8ac,_0x675490);})['then'](function(){return new BPromise(function(_0x1fa907,_0x539481){zipdir(_0x5bf427,{'saveTo':_0x1cbe7},function(_0x266590,_0x27130c){if(_0x266590)return _0x539481(_0x266590);return _0x1fa907(_0x27130c);});})['then'](function(){return new BPromise(function(_0xe1ea91,_0x2d98f4){rimraf(_0x5bf427,function(_0x42480a){if(_0x42480a)_0x2d98f4(_0x42480a);return _0xe1ea91();});});})[_0x34c1('0x2b')](function(){return _0x55e515[_0x34c1('0xc7')](_0x1cbe7,_0x4f1bd6,function(_0x301dba){if(_0x301dba){console['log'](_0x34c1('0xee'),_0x301dba);}else{fs['unlinkSync'](_0x1cbe7);}});});});}else{return _0x55e515[_0x34c1('0x1f')](0xc8);}})[_0x34c1('0x35')](handleError(_0x55e515,null));};
\ No newline at end of file
index c97e194..5d3bc9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa68d=['getUsers','Users','map','findAll','then','setDataValue','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','OpenchannelInteraction','OpenchannelMessage','setMaxListeners','save','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa68d,0x1d9));var _0xda68=function(_0x3df41a,_0x24481e){_0x3df41a=_0x3df41a-0x0;var _0x3abcbd=_0xa68d[_0x3df41a];return _0x3abcbd;};'use strict';var EventEmitter=require(_0xda68('0x0'));var OpenchannelInteraction=require(_0xda68('0x1'))['db'][_0xda68('0x2')];var OpenchannelMessage=require('../../mysqldb')['db'][_0xda68('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0xda68('0x4')](0x0);var events={'afterCreate':_0xda68('0x5'),'afterUpdate':_0xda68('0x6'),'afterDestroy':'remove'};function emitEvent(_0x529926){return function(_0x3f591f,_0x46fc66,_0x446abf){_0x3f591f[_0xda68('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x2d9acd){_0x3f591f['setDataValue'](_0xda68('0x8'),_0x2d9acd[_0xda68('0x9')](function(_0x494b51){return{'id':_0x494b51['id']};}));return OpenchannelMessage[_0xda68('0xa')]({'where':{'OpenchannelInteractionId':_0x3f591f['id'],'direction':'in','read':![]},'raw':!![]});})[_0xda68('0xb')](function(_0x28fe15){_0x3f591f[_0xda68('0xc')](_0xda68('0xd'),_0x28fe15[_0xda68('0xe')]);OpenchannelInteractionEvents[_0xda68('0xf')](_0x529926+':'+_0x3f591f['id'],_0x3f591f);OpenchannelInteractionEvents[_0xda68('0xf')](_0x529926,_0x3f591f);_0x446abf(null);})[_0xda68('0x10')](_0x446abf(null));};}for(var e in events){if(events[_0xda68('0x11')](e)){var event=events[e];OpenchannelInteraction[_0xda68('0x12')](e,emitEvent(event));}}module[_0xda68('0x13')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0xf64d=['hook','events','../../mysqldb','OpenchannelInteraction','OpenchannelMessage','setMaxListeners','save','update','remove','getUsers','then','setDataValue','Users','map','unreadMessages','length','emit','catch','hasOwnProperty'];(function(_0x61c5bb,_0x4605f1){var _0x1d37a0=function(_0x13bfc3){while(--_0x13bfc3){_0x61c5bb['push'](_0x61c5bb['shift']());}};_0x1d37a0(++_0x4605f1);}(_0xf64d,0xd2));var _0xdf64=function(_0x31b425,_0x35bda9){_0x31b425=_0x31b425-0x0;var _0xa8588e=_0xf64d[_0x31b425];return _0xa8588e;};'use strict';var EventEmitter=require(_0xdf64('0x0'));var OpenchannelInteraction=require(_0xdf64('0x1'))['db'][_0xdf64('0x2')];var OpenchannelMessage=require(_0xdf64('0x1'))['db'][_0xdf64('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0xdf64('0x4')](0x0);var events={'afterCreate':_0xdf64('0x5'),'afterUpdate':_0xdf64('0x6'),'afterDestroy':_0xdf64('0x7')};function emitEvent(_0xf48e80){return function(_0x2491d5,_0x2024a6,_0x5b68b5){_0x2491d5[_0xdf64('0x8')]({'attributes':['id'],'raw':!![]})[_0xdf64('0x9')](function(_0x4b92f8){_0x2491d5[_0xdf64('0xa')](_0xdf64('0xb'),_0x4b92f8[_0xdf64('0xc')](function(_0x5720f3){return{'id':_0x5720f3['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0x2491d5['id'],'direction':'in','read':![]},'raw':!![]});})[_0xdf64('0x9')](function(_0x5a2ca5){_0x2491d5['setDataValue'](_0xdf64('0xd'),_0x5a2ca5[_0xdf64('0xe')]);OpenchannelInteractionEvents[_0xdf64('0xf')](_0xf48e80+':'+_0x2491d5['id'],_0x2491d5);OpenchannelInteractionEvents['emit'](_0xf48e80,_0x2491d5);_0x5b68b5(null);})[_0xdf64('0x10')](_0x5b68b5(null));};}for(var e in events){if(events[_0xdf64('0x11')](e)){var event=events[e];OpenchannelInteraction[_0xdf64('0x12')](e,emitEvent(event));}}module['exports']=OpenchannelInteractionEvents;
\ No newline at end of file
index d6d31b4..958b0e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa01e=['./openchannelInteraction.attributes','define','OpenchannelInteraction','openchannel_interactions','utf8mb4','closedAt','format','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x3d8c75,_0x5c7920){var _0x425663=function(_0x50a10a){while(--_0x50a10a){_0x3d8c75['push'](_0x3d8c75['shift']());}};_0x425663(++_0x5c7920);}(_0xa01e,0x9d));var _0xea01=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xa01e[_0x3054be];return _0x3df150;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xea01('0x0'))(_0xea01('0x1'));var moment=require(_0xea01('0x2'));var BPromise=require(_0xea01('0x3'));var rp=require(_0xea01('0x4'));var fs=require('fs');var path=require(_0xea01('0x5'));var rimraf=require(_0xea01('0x6'));var config=require(_0xea01('0x7'));var attributes=require(_0xea01('0x8'));module['exports']=function(_0x4e8e35,_0xaf524b){return _0x4e8e35[_0xea01('0x9')](_0xea01('0xa'),attributes,{'tableName':_0xea01('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xea01('0xc'),'collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0x489ede,_0x2f3731,_0x14374a){if(_0x489ede['changed']('closed')){_0x489ede[_0xea01('0xd')]=moment()[_0xea01('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}_0x14374a(null,_0x489ede);}}});};
\ No newline at end of file
+var _0xc965=['closed','format','YYYY-MM-DD\x20HH:mm:ss','lodash','moment','path','rimraf','./openchannelInteraction.attributes','exports','define','OpenchannelInteraction','utf8mb4_unicode_ci'];(function(_0x54ef75,_0x9a36d4){var _0x3b84df=function(_0x5d764f){while(--_0x5d764f){_0x54ef75['push'](_0x54ef75['shift']());}};_0x3b84df(++_0x9a36d4);}(_0xc965,0x6f));var _0x5c96=function(_0x5e2b34,_0x58385c){_0x5e2b34=_0x5e2b34-0x0;var _0x4859f9=_0xc965[_0x5e2b34];return _0x4859f9;};'use strict';var _=require(_0x5c96('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x5c96('0x1'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x5c96('0x2'));var rimraf=require(_0x5c96('0x3'));var config=require('../../config/environment');var attributes=require(_0x5c96('0x4'));module[_0x5c96('0x5')]=function(_0xb9c889,_0x5d957b){return _0xb9c889[_0x5c96('0x6')](_0x5c96('0x7'),attributes,{'tableName':'openchannel_interactions','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x5c96('0x8'),'hooks':{'beforeUpdate':function(_0x4bef69,_0x285427,_0x16ddbb){if(_0x4bef69['changed'](_0x5c96('0x9'))){_0x4bef69['closedAt']=moment()[_0x5c96('0xa')](_0x5c96('0xb'));}_0x16ddbb(null,_0x4bef69);}}});};
\ No newline at end of file
index 2f061cc..46c0b68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd85=['client','redis','defaults','localhost','socket.io-emitter','register','request','info','request\x20sent','stringify','error','code','OpenchannelInteraction,\x20%s,\x20%s','message','result','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','body','options','raw','where','attributes','limit','then','AddTagsToOpenchannelInteraction','ids','omit','spread','AddTags','debug','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise'];(function(_0x3c6741,_0x24c6f0){var _0x5d3310=function(_0x504ffb){while(--_0x504ffb){_0x3c6741['push'](_0x3c6741['shift']());}};_0x5d3310(++_0x24c6f0);}(_0xfd85,0x97));var _0x5fd8=function(_0x47327a,_0xa744ab){_0x47327a=_0x47327a-0x0;var _0x258c4c=_0xfd85[_0x47327a];return _0x258c4c;};'use strict';var _=require(_0x5fd8('0x0'));var util=require(_0x5fd8('0x1'));var moment=require(_0x5fd8('0x2'));var BPromise=require(_0x5fd8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5fd8('0x4'));var db=require(_0x5fd8('0x5'))['db'];var utils=require(_0x5fd8('0x6'));var logger=require(_0x5fd8('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x5fd8('0x8'));var client=jayson[_0x5fd8('0x9')]['http']({'port':0x232a});config[_0x5fd8('0xa')]=_[_0x5fd8('0xb')](config[_0x5fd8('0xa')],{'host':_0x5fd8('0xc'),'port':0x18eb});var socket=require(_0x5fd8('0xd'))(new Redis(config[_0x5fd8('0xa')]));require('./openchannelInteraction.socket')[_0x5fd8('0xe')](socket);function respondWithRpcPromise(_0x30582d,_0x10a51f,_0x4fe553){return new BPromise(function(_0x25a8a3,_0x5561dd){return client[_0x5fd8('0xf')](_0x30582d,_0x4fe553)['then'](function(_0x753d6e){logger[_0x5fd8('0x10')]('OpenchannelInteraction,\x20%s,\x20%s',_0x10a51f,_0x5fd8('0x11'));logger['debug']('OpenchannelInteraction,\x20%s,\x20%s,\x20%s',_0x10a51f,'request\x20sent',JSON[_0x5fd8('0x12')](_0x753d6e));if(_0x753d6e[_0x5fd8('0x13')]){if(_0x753d6e['error'][_0x5fd8('0x14')]===0x1f4){logger[_0x5fd8('0x13')](_0x5fd8('0x15'),_0x10a51f,_0x753d6e[_0x5fd8('0x13')][_0x5fd8('0x16')]);return _0x5561dd(_0x753d6e[_0x5fd8('0x13')][_0x5fd8('0x16')]);}logger[_0x5fd8('0x13')](_0x5fd8('0x15'),_0x10a51f,_0x753d6e[_0x5fd8('0x13')][_0x5fd8('0x16')]);return _0x25a8a3(_0x753d6e[_0x5fd8('0x13')][_0x5fd8('0x16')]);}else{logger[_0x5fd8('0x10')](_0x5fd8('0x15'),_0x10a51f,_0x5fd8('0x11'));_0x25a8a3(_0x753d6e[_0x5fd8('0x17')]['message']);}})[_0x5fd8('0x18')](function(_0x116cb8){logger['error'](_0x5fd8('0x15'),_0x10a51f,_0x116cb8);_0x5561dd(_0x116cb8);});});}exports[_0x5fd8('0x19')]=function(_0x2131de){var _0x1d31af=this;return new Promise(function(_0x3728a7,_0x56c87d){return db[_0x5fd8('0x1a')]['update'](_0x2131de[_0x5fd8('0x1b')],{'raw':_0x2131de[_0x5fd8('0x1c')]?_0x2131de[_0x5fd8('0x1c')][_0x5fd8('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2131de[_0x5fd8('0x1c')]?_0x2131de[_0x5fd8('0x1c')][_0x5fd8('0x1e')]||null:null,'attributes':_0x2131de[_0x5fd8('0x1c')]?_0x2131de[_0x5fd8('0x1c')][_0x5fd8('0x1f')]||null:null,'limit':_0x2131de[_0x5fd8('0x1c')]?_0x2131de[_0x5fd8('0x1c')][_0x5fd8('0x20')]||null:null})[_0x5fd8('0x21')](function(_0x13a280){logger[_0x5fd8('0x10')](_0x5fd8('0x19'),_0x2131de);logger['debug']('UpdateOpenchannelInteraction',_0x2131de,JSON[_0x5fd8('0x12')](_0x13a280));_0x3728a7(_0x13a280);})['catch'](function(_0x74c51a){logger['error']('UpdateOpenchannelInteraction',_0x74c51a[_0x5fd8('0x16')],_0x2131de);_0x56c87d(_0x1d31af['error'](0x1f4,_0x74c51a['message']));});});};exports[_0x5fd8('0x22')]=function(_0x30a079){return new Promise(function(_0x3318c0,_0x540836){return db[_0x5fd8('0x1a')]['find']({'where':_0x30a079[_0x5fd8('0x1c')]?_0x30a079['options'][_0x5fd8('0x1e')]||null:null})[_0x5fd8('0x21')](function(_0x7415e2){if(_0x7415e2){return _0x7415e2['addTags'](_0x30a079['body'][_0x5fd8('0x23')],_[_0x5fd8('0x24')](_0x30a079['body'],[_0x5fd8('0x23'),'id'])||{});}})[_0x5fd8('0x25')](function(_0x520bfb){logger[_0x5fd8('0x10')](_0x5fd8('0x26'),_0x30a079);logger[_0x5fd8('0x27')](_0x5fd8('0x26'),_0x30a079,JSON[_0x5fd8('0x12')](_0x520bfb));_0x3318c0(_0x520bfb);})['catch'](function(_0xe5aa6){logger[_0x5fd8('0x13')](_0x5fd8('0x26'),_0xe5aa6[_0x5fd8('0x16')],_0x30a079);_0x540836(_this['error'](0x1f4,_0xe5aa6[_0x5fd8('0x16')]));});});};
\ No newline at end of file
+var _0x43a6=['lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','body','options','where','attributes','limit','debug','find','ids','omit','spread','AddTags'];(function(_0x58cf07,_0x2e3858){var _0x42afe0=function(_0x3c71ff){while(--_0x3c71ff){_0x58cf07['push'](_0x58cf07['shift']());}};_0x42afe0(++_0x2e3858);}(_0x43a6,0x7b));var _0x643a=function(_0x2c1e7a,_0x155f86){_0x2c1e7a=_0x2c1e7a-0x0;var _0xcacb4f=_0x43a6[_0x2c1e7a];return _0xcacb4f;};'use strict';var _=require(_0x643a('0x0'));var util=require('util');var moment=require(_0x643a('0x1'));var BPromise=require('bluebird');var rs=require(_0x643a('0x2'));var fs=require('fs');var Redis=require(_0x643a('0x3'));var db=require(_0x643a('0x4'))['db'];var utils=require(_0x643a('0x5'));var logger=require(_0x643a('0x6'))(_0x643a('0x7'));var config=require(_0x643a('0x8'));var jayson=require(_0x643a('0x9'));var client=jayson[_0x643a('0xa')][_0x643a('0xb')]({'port':0x232a});config[_0x643a('0xc')]=_[_0x643a('0xd')](config[_0x643a('0xc')],{'host':_0x643a('0xe'),'port':0x18eb});var socket=require(_0x643a('0xf'))(new Redis(config['redis']));require(_0x643a('0x10'))['register'](socket);function respondWithRpcPromise(_0x575afa,_0x550233,_0x564677){return new BPromise(function(_0xecdf7c,_0x16dd9e){return client[_0x643a('0x11')](_0x575afa,_0x564677)[_0x643a('0x12')](function(_0x480002){logger[_0x643a('0x13')](_0x643a('0x14'),_0x550233,_0x643a('0x15'));logger['debug'](_0x643a('0x16'),_0x550233,_0x643a('0x15'),JSON[_0x643a('0x17')](_0x480002));if(_0x480002['error']){if(_0x480002[_0x643a('0x18')]['code']===0x1f4){logger[_0x643a('0x18')](_0x643a('0x14'),_0x550233,_0x480002['error'][_0x643a('0x19')]);return _0x16dd9e(_0x480002[_0x643a('0x18')][_0x643a('0x19')]);}logger['error'](_0x643a('0x14'),_0x550233,_0x480002[_0x643a('0x18')][_0x643a('0x19')]);return _0xecdf7c(_0x480002[_0x643a('0x18')][_0x643a('0x19')]);}else{logger[_0x643a('0x13')]('OpenchannelInteraction,\x20%s,\x20%s',_0x550233,_0x643a('0x15'));_0xecdf7c(_0x480002[_0x643a('0x1a')][_0x643a('0x19')]);}})[_0x643a('0x1b')](function(_0x37c6a4){logger[_0x643a('0x18')](_0x643a('0x14'),_0x550233,_0x37c6a4);_0x16dd9e(_0x37c6a4);});});}exports[_0x643a('0x1c')]=function(_0x5824f4){var _0x2a085a=this;return new Promise(function(_0xf6f31b,_0x3e5444){return db[_0x643a('0x1d')]['update'](_0x5824f4[_0x643a('0x1e')],{'raw':_0x5824f4[_0x643a('0x1f')]?_0x5824f4[_0x643a('0x1f')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5824f4[_0x643a('0x1f')]?_0x5824f4['options'][_0x643a('0x20')]||null:null,'attributes':_0x5824f4[_0x643a('0x1f')]?_0x5824f4[_0x643a('0x1f')][_0x643a('0x21')]||null:null,'limit':_0x5824f4[_0x643a('0x1f')]?_0x5824f4['options'][_0x643a('0x22')]||null:null})[_0x643a('0x12')](function(_0x4208fc){logger[_0x643a('0x13')]('UpdateOpenchannelInteraction',_0x5824f4);logger[_0x643a('0x23')]('UpdateOpenchannelInteraction',_0x5824f4,JSON[_0x643a('0x17')](_0x4208fc));_0xf6f31b(_0x4208fc);})['catch'](function(_0x4a0308){logger[_0x643a('0x18')]('UpdateOpenchannelInteraction',_0x4a0308[_0x643a('0x19')],_0x5824f4);_0x3e5444(_0x2a085a['error'](0x1f4,_0x4a0308['message']));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x2224d4){return new Promise(function(_0x324f8e,_0x27a26f){return db[_0x643a('0x1d')][_0x643a('0x24')]({'where':_0x2224d4['options']?_0x2224d4['options']['where']||null:null})[_0x643a('0x12')](function(_0x18c071){if(_0x18c071){return _0x18c071['addTags'](_0x2224d4[_0x643a('0x1e')][_0x643a('0x25')],_[_0x643a('0x26')](_0x2224d4['body'],['ids','id'])||{});}})[_0x643a('0x27')](function(_0x838492){logger[_0x643a('0x13')]('AddTags',_0x2224d4);logger[_0x643a('0x23')](_0x643a('0x28'),_0x2224d4,JSON[_0x643a('0x17')](_0x838492));_0x324f8e(_0x838492);})[_0x643a('0x1b')](function(_0x1945fe){logger[_0x643a('0x18')]('AddTags',_0x1945fe[_0x643a('0x19')],_0x2224d4);_0x27a26f(_this['error'](0x1f4,_0x1945fe[_0x643a('0x19')]));});});};
\ No newline at end of file
index 063a9d5..c9b62ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9789=['emit','removeListener','length','openchannelInteraction:','save','remove'];(function(_0x145d12,_0x1df727){var _0x36245a=function(_0x5334ba){while(--_0x5334ba){_0x145d12['push'](_0x145d12['shift']());}};_0x36245a(++_0x1df727);}(_0x9789,0x94));var _0x9978=function(_0x6addb5,_0x4706a9){_0x6addb5=_0x6addb5-0x0;var _0x1d8085=_0x9789[_0x6addb5];return _0x1d8085;};'use strict';var OpenchannelInteractionEvents=require('./openchannelInteraction.events');var events=[_0x9978('0x0'),_0x9978('0x1'),'update'];function createListener(_0x5558ad,_0x264690){return function(_0x2ff154){_0x264690[_0x9978('0x2')](_0x5558ad,_0x2ff154);};}function removeListener(_0x419c74,_0x4fc7e5){return function(){OpenchannelInteractionEvents[_0x9978('0x3')](_0x419c74,_0x4fc7e5);};}exports['register']=function(_0x5d4df2){for(var _0xef8bdd=0x0,_0x15028d=events[_0x9978('0x4')];_0xef8bdd<_0x15028d;_0xef8bdd++){var _0x5a4d9e=events[_0xef8bdd];var _0x1a5d0e=createListener(_0x9978('0x5')+_0x5a4d9e,_0x5d4df2);OpenchannelInteractionEvents['on'](_0x5a4d9e,_0x1a5d0e);}};
\ No newline at end of file
+var _0x076b=['update','emit','removeListener','length','openchannelInteraction:','./openchannelInteraction.events','save'];(function(_0x55c0a6,_0x107fb6){var _0xb55015=function(_0x36be03){while(--_0x36be03){_0x55c0a6['push'](_0x55c0a6['shift']());}};_0xb55015(++_0x107fb6);}(_0x076b,0xd0));var _0xb076=function(_0x1a973f,_0x2bf776){_0x1a973f=_0x1a973f-0x0;var _0xc51b32=_0x076b[_0x1a973f];return _0xc51b32;};'use strict';var OpenchannelInteractionEvents=require(_0xb076('0x0'));var events=[_0xb076('0x1'),'remove',_0xb076('0x2')];function createListener(_0x580d82,_0x1e24d7){return function(_0x1dd649){_0x1e24d7[_0xb076('0x3')](_0x580d82,_0x1dd649);};}function removeListener(_0x2b47bc,_0x113981){return function(){OpenchannelInteractionEvents[_0xb076('0x4')](_0x2b47bc,_0x113981);};}exports['register']=function(_0x33fd52){for(var _0x193b04=0x0,_0x23f554=events[_0xb076('0x5')];_0x193b04<_0x23f554;_0x193b04++){var _0x4feb24=events[_0x193b04];var _0x3c7d8e=createListener(_0xb076('0x6')+_0x4feb24,_0x33fd52);OpenchannelInteractionEvents['on'](_0x4feb24,_0x3c7d8e);}};
\ No newline at end of file
index c631417..ce8082a 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(_0x205f7a,_0x4882f3){_0x205f7a=_0x205f7a-0x0;var _0x3f55a2=_0x70e0[_0x205f7a];return _0x3f55a2;};'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 _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(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x70e0,0x17b));var _0x070e=function(_0x80e7d9,_0x428952){_0x80e7d9=_0x80e7d9-0x0;var _0x1cf0aa=_0x70e0[_0x80e7d9];return _0x1cf0aa;};'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
index e5c0620..7089f5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3e2=['sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out','DATE'];(function(_0x29b8dd,_0xbeebec){var _0x32ec29=function(_0x24a099){while(--_0x24a099){_0x29b8dd['push'](_0x29b8dd['shift']());}};_0x32ec29(++_0xbeebec);}(_0xf3e2,0x168));var _0x2f3e=function(_0x4a9b0e,_0x13ae85){_0x4a9b0e=_0x4a9b0e-0x0;var _0x4e83a9=_0xf3e2[_0x4a9b0e];return _0x4e83a9;};'use strict';var Sequelize=require(_0x2f3e('0x0'));module[_0x2f3e('0x1')]={'body':{'type':Sequelize[_0x2f3e('0x2')](_0x2f3e('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x2f3e('0x4')],'defaultValue':![]},'secret':{'type':Sequelize[_0x2f3e('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x2f3e('0x5')]('in',_0x2f3e('0x6')),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x2f3e('0x7')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x2f3e('0x2')]}};
\ No newline at end of file
+var _0xceb0=['ENUM','out','TEXT','BOOLEAN'];(function(_0x5eb22e,_0x27cbac){var _0x27fed5=function(_0x565467){while(--_0x565467){_0x5eb22e['push'](_0x5eb22e['shift']());}};_0x27fed5(++_0x27cbac);}(_0xceb0,0x173));var _0x0ceb=function(_0xe794ca,_0x8f929b){_0xe794ca=_0xe794ca-0x0;var _0x3ade83=_0xceb0[_0xe794ca];return _0x3ade83;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x0ceb('0x0')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x0ceb('0x1')]('in',_0x0ceb('0x2')),'defaultValue':_0x0ceb('0x2'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x0ceb('0x3')]}};
\ No newline at end of file
index 64cd1bc..0dad983 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07ce=['create','body','params','describe','openchannel-interactions','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','OpenchannelInteractionId','isNil','read1stAt','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','stringify','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','openchannel','OpenchannelInteraction','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','Sequelize','QueryTypes','rejectmessage','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','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','./openchannelMessage.socket','register','client','http','request','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','destroy','stack','name','send','index','OpenchannelMessage','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','filter','map','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','fields','find'];(function(_0x28014d,_0x383e2f){var _0x2572cc=function(_0x17aabd){while(--_0x17aabd){_0x28014d['push'](_0x28014d['shift']());}};_0x2572cc(++_0x383e2f);}(_0x07ce,0x1ce));var _0xe07c=function(_0x22547d,_0x223632){_0x22547d=_0x22547d-0x0;var _0x1cf6f0=_0x07ce[_0x22547d];return _0x1cf6f0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe07c('0x0'));var zipdir=require(_0xe07c('0x1'));var jsonpatch=require(_0xe07c('0x2'));var rp=require(_0xe07c('0x3'));var moment=require(_0xe07c('0x4'));var BPromise=require(_0xe07c('0x5'));var Mustache=require(_0xe07c('0x6'));var util=require(_0xe07c('0x7'));var path=require(_0xe07c('0x8'));var sox=require(_0xe07c('0x9'));var csv=require(_0xe07c('0xa'));var ejs=require(_0xe07c('0xb'));var fs=require('fs');var fs_extra=require(_0xe07c('0xc'));var _=require(_0xe07c('0xd'));var squel=require('squel');var crypto=require(_0xe07c('0xe'));var jsforce=require(_0xe07c('0xf'));var deskjs=require(_0xe07c('0x10'));var toCsv=require(_0xe07c('0xa'));var querystring=require('querystring');var Papa=require(_0xe07c('0x11'));var Redis=require(_0xe07c('0x12'));var authService=require(_0xe07c('0x13'));var qs=require(_0xe07c('0x14'));var as=require(_0xe07c('0x15'));var hardwareService=require(_0xe07c('0x16'));var logger=require(_0xe07c('0x17'))('api');var utils=require(_0xe07c('0x18'));var config=require(_0xe07c('0x19'));var licenseUtil=require(_0xe07c('0x1a'));var db=require(_0xe07c('0x1b'))['db'];config[_0xe07c('0x1c')]=_[_0xe07c('0x1d')](config[_0xe07c('0x1c')],{'host':_0xe07c('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe07c('0x1c')]));require(_0xe07c('0x1f'))[_0xe07c('0x20')](socket);var jayson=require('jayson/promise');var client=jayson[_0xe07c('0x21')][_0xe07c('0x22')]({'port':0x232c});var client9002=jayson[_0xe07c('0x21')][_0xe07c('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x393cdc,_0x507420,_0x15706c,_0x531653){return new BPromise(function(_0x586e4e,_0x1cd8e8){var _0x2e092e=_0x531653||client;return _0x2e092e[_0xe07c('0x23')](_0x393cdc,_0x15706c)[_0xe07c('0x24')](function(_0x276941){logger[_0xe07c('0x25')](_0xe07c('0x26'),_0x507420,_0xe07c('0x27'));logger[_0xe07c('0x28')](_0xe07c('0x29'),_0x507420,_0xe07c('0x27'),JSON['stringify'](_0x276941));if(_0x276941[_0xe07c('0x2a')]){if(_0x276941['error'][_0xe07c('0x2b')]===0x1f4){logger[_0xe07c('0x2a')]('OpenchannelMessage,\x20%s,\x20%s',_0x507420,_0x276941[_0xe07c('0x2a')][_0xe07c('0x2c')]);return _0x1cd8e8(_0x276941['error']['message']);}logger[_0xe07c('0x2a')](_0xe07c('0x26'),_0x507420,_0x276941[_0xe07c('0x2a')]['message']);return _0x586e4e(_0x276941[_0xe07c('0x2a')][_0xe07c('0x2c')]);}else{logger[_0xe07c('0x25')](_0xe07c('0x26'),_0x507420,_0xe07c('0x27'));_0x586e4e(_0x276941[_0xe07c('0x2d')]['message']);}})[_0xe07c('0x2e')](function(_0x22baa1){logger[_0xe07c('0x2a')](_0xe07c('0x26'),_0x507420,_0x22baa1);_0x1cd8e8(_0x22baa1);});});}function respondWithStatusCode(_0x48b6aa,_0x1979b3){_0x1979b3=_0x1979b3||0xcc;return function(_0x1148eb){if(_0x1148eb){return _0x48b6aa['sendStatus'](_0x1979b3);}return _0x48b6aa[_0xe07c('0x2f')](_0x1979b3)[_0xe07c('0x30')]();};}function respondWithResult(_0x9e8215,_0x5ebad6){_0x5ebad6=_0x5ebad6||0xc8;return function(_0x4d9737){if(_0x4d9737){return _0x9e8215[_0xe07c('0x2f')](_0x5ebad6)[_0xe07c('0x31')](_0x4d9737);}};}function respondWithFilteredResult(_0x1ba9e4,_0x3dc6e3){return function(_0x52ccbe){if(_0x52ccbe){var _0x48eb54=typeof _0x3dc6e3[_0xe07c('0x32')]===_0xe07c('0x33')&&typeof _0x3dc6e3[_0xe07c('0x34')]===_0xe07c('0x33');var _0x4c683b=_0x52ccbe[_0xe07c('0x35')];var _0x18206b=_0x48eb54?0x0:_0x3dc6e3[_0xe07c('0x32')];var _0x4ec0ef=_0x48eb54?_0x52ccbe[_0xe07c('0x35')]:_0x3dc6e3[_0xe07c('0x32')]+_0x3dc6e3[_0xe07c('0x34')];var _0x2ea7cf;if(_0x4ec0ef>=_0x4c683b){_0x4ec0ef=_0x4c683b;_0x2ea7cf=0xc8;}else{_0x2ea7cf=0xce;}_0x1ba9e4[_0xe07c('0x2f')](_0x2ea7cf);return _0x1ba9e4[_0xe07c('0x36')]('Content-Range',_0x18206b+'-'+_0x4ec0ef+'/'+_0x4c683b)[_0xe07c('0x31')](_0x52ccbe);}return null;};}function patchUpdates(_0x19ea7f){return function(_0x2dc04b){try{jsonpatch[_0xe07c('0x37')](_0x2dc04b,_0x19ea7f,!![]);}catch(_0x576a2d){return BPromise[_0xe07c('0x38')](_0x576a2d);}return _0x2dc04b[_0xe07c('0x39')]();};}function saveUpdates(_0xea5cf8,_0x5a5f64){return function(_0x2f38be){if(_0x2f38be){return _0x2f38be[_0xe07c('0x3a')](_0xea5cf8)[_0xe07c('0x24')](function(_0x56a4db){return _0x56a4db;});}return null;};}function removeEntity(_0x3b4f90,_0x4ba708){return function(_0x354d08){if(_0x354d08){return _0x354d08[_0xe07c('0x3b')]()['then'](function(){_0x3b4f90[_0xe07c('0x2f')](0xcc)[_0xe07c('0x30')]();});}};}function handleEntityNotFound(_0x11aabb,_0x3e4d0f){return function(_0x4c25ff){if(!_0x4c25ff){_0x11aabb['sendStatus'](0x194);}return _0x4c25ff;};}function handleError(_0x24589a,_0x2b0c45){_0x2b0c45=_0x2b0c45||0x1f4;return function(_0x1a5568){logger['error'](_0x1a5568[_0xe07c('0x3c')]);if(_0x1a5568[_0xe07c('0x3d')]){delete _0x1a5568['name'];}_0x24589a[_0xe07c('0x2f')](_0x2b0c45)[_0xe07c('0x3e')](_0x1a5568);};}exports[_0xe07c('0x3f')]=function(_0xd0582c,_0x575bfb){var _0x55b5ce={},_0x11d3ee={},_0x37e0c3={'count':0x0,'rows':[]};var _0x1c8f01=_['map'](db[_0xe07c('0x40')]['rawAttributes'],function(_0x50a825){return{'name':_0x50a825['fieldName'],'type':_0x50a825[_0xe07c('0x41')][_0xe07c('0x42')]};});_0x11d3ee[_0xe07c('0x43')]=_['map'](_0x1c8f01,_0xe07c('0x3d'));_0x11d3ee[_0xe07c('0x44')]=_[_0xe07c('0x45')](_0xd0582c['query']);_0x11d3ee[_0xe07c('0x46')]=_[_0xe07c('0x47')](_0x11d3ee['model'],_0x11d3ee['query']);_0x55b5ce[_0xe07c('0x48')]=_[_0xe07c('0x47')](_0x11d3ee[_0xe07c('0x43')],qs['fields'](_0xd0582c[_0xe07c('0x44')]['fields']));_0x55b5ce[_0xe07c('0x48')]=_0x55b5ce[_0xe07c('0x48')][_0xe07c('0x49')]?_0x55b5ce[_0xe07c('0x48')]:_0x11d3ee[_0xe07c('0x43')];if(!_0xd0582c['query'][_0xe07c('0x4a')](_0xe07c('0x4b'))){_0x55b5ce[_0xe07c('0x34')]=qs[_0xe07c('0x34')](_0xd0582c['query'][_0xe07c('0x34')]);_0x55b5ce[_0xe07c('0x32')]=qs[_0xe07c('0x32')](_0xd0582c[_0xe07c('0x44')][_0xe07c('0x32')]);}_0x55b5ce['order']=qs[_0xe07c('0x4c')](_0xd0582c[_0xe07c('0x44')][_0xe07c('0x4c')]);_0x55b5ce[_0xe07c('0x4d')]=qs[_0xe07c('0x46')](_['pick'](_0xd0582c[_0xe07c('0x44')],_0x11d3ee[_0xe07c('0x46')]),_0x1c8f01);if(_0xd0582c[_0xe07c('0x44')][_0xe07c('0x4e')]){_0x55b5ce[_0xe07c('0x4d')]=_['merge'](_0x55b5ce['where'],{'$or':_[_0xe07c('0x4f')](_0x1c8f01,function(_0x1c8b85){if(_0x1c8b85[_0xe07c('0x41')]!==_0xe07c('0x50')){var _0x2d84c7={};_0x2d84c7[_0x1c8b85['name']]={'$like':'%'+_0xd0582c[_0xe07c('0x44')][_0xe07c('0x4e')]+'%'};return _0x2d84c7;}})});}_0x55b5ce=_[_0xe07c('0x51')]({},_0x55b5ce,_0xd0582c[_0xe07c('0x52')]);var _0x555e17={'where':_0x55b5ce[_0xe07c('0x4d')]};return db[_0xe07c('0x40')]['count'](_0x555e17)[_0xe07c('0x24')](function(_0x31ea68){_0x37e0c3[_0xe07c('0x35')]=_0x31ea68;if(_0xd0582c[_0xe07c('0x44')][_0xe07c('0x53')]){_0x55b5ce[_0xe07c('0x54')]=[{'all':!![]}];}return db['OpenchannelMessage'][_0xe07c('0x55')](_0x55b5ce);})['then'](function(_0x4a86be){_0x37e0c3[_0xe07c('0x56')]=_0x4a86be;return _0x37e0c3;})[_0xe07c('0x24')](respondWithFilteredResult(_0x575bfb,_0x55b5ce))[_0xe07c('0x2e')](handleError(_0x575bfb,null));};exports[_0xe07c('0x57')]=function(_0x27d383,_0x54068d){var _0x3ffd78={'raw':!![],'where':{'id':_0x27d383['params']['id']}},_0x568555={};_0x568555[_0xe07c('0x43')]=_[_0xe07c('0x45')](db[_0xe07c('0x40')]['rawAttributes']);_0x568555[_0xe07c('0x44')]=_[_0xe07c('0x45')](_0x27d383[_0xe07c('0x44')]);_0x568555['filters']=_[_0xe07c('0x47')](_0x568555['model'],_0x568555['query']);_0x3ffd78[_0xe07c('0x48')]=_[_0xe07c('0x47')](_0x568555[_0xe07c('0x43')],qs[_0xe07c('0x58')](_0x27d383[_0xe07c('0x44')][_0xe07c('0x58')]));_0x3ffd78[_0xe07c('0x48')]=_0x3ffd78[_0xe07c('0x48')][_0xe07c('0x49')]?_0x3ffd78[_0xe07c('0x48')]:_0x568555[_0xe07c('0x43')];if(_0x27d383[_0xe07c('0x44')][_0xe07c('0x53')]){_0x3ffd78[_0xe07c('0x54')]=[{'all':!![]}];}_0x3ffd78=_['merge']({},_0x3ffd78,_0x27d383[_0xe07c('0x52')]);return db[_0xe07c('0x40')][_0xe07c('0x59')](_0x3ffd78)[_0xe07c('0x24')](handleEntityNotFound(_0x54068d,null))[_0xe07c('0x24')](respondWithResult(_0x54068d,null))[_0xe07c('0x2e')](handleError(_0x54068d,null));};exports['create']=function(_0x164294,_0x4df9b1){return db[_0xe07c('0x40')][_0xe07c('0x5a')](_0x164294['body'],{})[_0xe07c('0x24')](respondWithResult(_0x4df9b1,0xc9))[_0xe07c('0x2e')](handleError(_0x4df9b1,null));};exports[_0xe07c('0x3a')]=function(_0xf34a3b,_0x282d6a){if(_0xf34a3b['body']['id']){delete _0xf34a3b[_0xe07c('0x5b')]['id'];}return db[_0xe07c('0x40')]['find']({'where':{'id':_0xf34a3b[_0xe07c('0x5c')]['id']}})[_0xe07c('0x24')](handleEntityNotFound(_0x282d6a,null))[_0xe07c('0x24')](saveUpdates(_0xf34a3b['body'],null))[_0xe07c('0x24')](respondWithResult(_0x282d6a,null))[_0xe07c('0x2e')](handleError(_0x282d6a,null));};exports['destroy']=function(_0x574307,_0x5de0b4){return db[_0xe07c('0x40')]['find']({'where':{'id':_0x574307[_0xe07c('0x5c')]['id']}})[_0xe07c('0x24')](handleEntityNotFound(_0x5de0b4,null))[_0xe07c('0x24')](removeEntity(_0x5de0b4,null))[_0xe07c('0x2e')](handleError(_0x5de0b4,null));};exports[_0xe07c('0x5d')]=function(_0x352711,_0x1f0d34){return db[_0xe07c('0x40')][_0xe07c('0x5d')]()[_0xe07c('0x24')](respondWithResult(_0x1f0d34,null))[_0xe07c('0x2e')](handleError(_0x1f0d34,null));};var interaction_log=require(_0xe07c('0x17'))(_0xe07c('0x5e'));exports[_0xe07c('0x5f')]=function(_0x456cd0,_0x401f4b,_0x172afa){var _0x20fd58={'agent':{},'channel':'openchannel'};if(_0x456cd0[_0xe07c('0x5b')]['id']){delete _0x456cd0[_0xe07c('0x5b')]['id'];}_0x456cd0[_0xe07c('0x5b')][_0xe07c('0x60')]=!![];_0x456cd0[_0xe07c('0x5b')][_0xe07c('0x61')]=moment()[_0xe07c('0x62')](_0xe07c('0x63'));_0x456cd0[_0xe07c('0x5b')][_0xe07c('0x64')]=_0x456cd0[_0xe07c('0x5b')][_0xe07c('0x64')]||_0x456cd0['user']['id'];_0x20fd58[_0xe07c('0x65')]['id']=_0x456cd0['body']['UserId'];return db[_0xe07c('0x40')][_0xe07c('0x59')]({'where':{'id':_0x456cd0[_0xe07c('0x5c')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x401f4b,null))['then'](saveUpdates(_0x456cd0[_0xe07c('0x5b')],null))[_0xe07c('0x24')](function(_0x2cab63){if(_0x2cab63){_0x20fd58[_0xe07c('0x2c')]=_0x2cab63[_0xe07c('0x66')]({'plain':!![]});return db['OpenchannelInteraction']['find']({'where':{'id':_0x2cab63[_0xe07c('0x67')]}});}return null;})[_0xe07c('0x24')](handleEntityNotFound(_0x401f4b,null))['then'](function(_0x1c580c){if(_0x1c580c){return _0x1c580c[_0xe07c('0x3a')]({'UserId':_0x456cd0[_0xe07c('0x5b')][_0xe07c('0x64')],'read1stAt':_[_0xe07c('0x68')](_0x1c580c[_0xe07c('0x69')])?moment()[_0xe07c('0x62')](_0xe07c('0x63')):undefined});}return null;})[_0xe07c('0x24')](function(_0x4671f8){if(_0x4671f8){_0x20fd58[_0xe07c('0x6a')]=_0x4671f8[_0xe07c('0x66')]({'plain':!![]});interaction_log[_0xe07c('0x25')](_0xe07c('0x6b'),_0x456cd0[_0xe07c('0x6c')]['id'],_0x456cd0[_0xe07c('0x6c')][_0xe07c('0x3d')],_0x456cd0[_0xe07c('0x6c')][_0xe07c('0x6d')],_0x20fd58[_0xe07c('0x6a')]['id'],_0x456cd0['body']?JSON[_0xe07c('0x6e')](_0x456cd0[_0xe07c('0x5b')]):_0xe07c('0x6f'));return respondWithRpcPromise(_0xe07c('0x70'),_0xe07c('0x71'),_0x20fd58);}return null;})[_0xe07c('0x24')](function(_0x5a1b7f){var _0x40668b=_0xe07c('0x72')+_0x5a1b7f[_0xe07c('0x2c')][_0xe07c('0x73')];return db[_0xe07c('0x74')][_0xe07c('0x44')](_0x40668b,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x4f4b24){return _0x4f4b24;});})[_0xe07c('0x24')](function(_0x3cc08e){if(_0x3cc08e){_0x20fd58[_0xe07c('0x2c')][_0xe07c('0x75')]=_0x3cc08e[0x0];if(!_0x456cd0['body']['UserId'])return;return db[_0xe07c('0x76')][_0xe07c('0x59')]({'where':{'id':_0x456cd0['body'][_0xe07c('0x64')],'role':_0xe07c('0x65')},'attributes':['id',_0xe07c('0x3d'),_0xe07c('0x77'),_0xe07c('0x78'),_0xe07c('0x79')],'raw':!![]});}return null;})[_0xe07c('0x24')](function(_0x1b708b){if(!_0x1b708b)return null;_0x20fd58[_0xe07c('0x2c')]['agent']=_0x1b708b;return _0x20fd58;})['then'](function(_0x4deab1){if(_0x4deab1){if(_0x456cd0['body'][_0xe07c('0x7a')]){_0x20fd58[_0xe07c('0x2c')][_0xe07c('0x7b')]=util[_0xe07c('0x62')](_0xe07c('0x7c'),_0x456cd0[_0xe07c('0x6c')]['name']);_0x20fd58['message'][_0xe07c('0x7d')]=_0x20fd58[_0xe07c('0x7d')];_0x20fd58[_0xe07c('0x2c')][_0xe07c('0x7e')]=_0x20fd58[_0xe07c('0x7d')];_0x20fd58['message'][_0xe07c('0x7f')]=_0xe07c('0x5f');return respondWithRpcPromise(_0xe07c('0x80'),_0xe07c('0x80'),{'event':_0xe07c('0x81'),'message':_0x20fd58['message']},client9002)[_0xe07c('0x24')](function(){return _0x20fd58;});}return _0x20fd58;}return null;})[_0xe07c('0x24')](respondWithResult(_0x401f4b,null))[_0xe07c('0x2e')](handleError(_0x401f4b,null));};var interaction_log=require('../../config/logger')(_0xe07c('0x5e'));exports[_0xe07c('0x38')]=function(_0x17b41a,_0x2132c7,_0x153a80){var _0x591add={'agent':{},'channel':_0xe07c('0x82')};if(_0x17b41a[_0xe07c('0x5b')]['id']){delete _0x17b41a[_0xe07c('0x5b')]['id'];}_0x17b41a['body'][_0xe07c('0x64')]=_0x17b41a['body'][_0xe07c('0x64')]||_0x17b41a['user']['id'];_0x591add[_0xe07c('0x65')]['id']=_0x17b41a[_0xe07c('0x5b')][_0xe07c('0x64')];return db[_0xe07c('0x40')][_0xe07c('0x59')]({'where':{'id':_0x17b41a[_0xe07c('0x5c')]['id'],'UserId':null}})[_0xe07c('0x24')](handleEntityNotFound(_0x2132c7,null))[_0xe07c('0x24')](function(_0x2b1958){if(_0x2b1958){_0x591add[_0xe07c('0x2c')]=_0x2b1958[_0xe07c('0x66')]({'plain':!![]});return db[_0xe07c('0x83')][_0xe07c('0x59')]({'where':{'id':_0x2b1958[_0xe07c('0x67')]}});}return null;})[_0xe07c('0x24')](handleEntityNotFound(_0x2132c7,null))[_0xe07c('0x24')](function(_0x2262d5){if(_0x2262d5){_0x591add[_0xe07c('0x6a')]=_0x2262d5[_0xe07c('0x66')]({'plain':!![]});interaction_log[_0xe07c('0x25')](_0xe07c('0x84'),_0x17b41a[_0xe07c('0x6c')]['id'],_0x17b41a[_0xe07c('0x6c')][_0xe07c('0x3d')],_0x17b41a[_0xe07c('0x6c')][_0xe07c('0x6d')],_0x591add[_0xe07c('0x6a')]['id'],_0x17b41a['body']?JSON[_0xe07c('0x6e')](_0x17b41a['body']):_0xe07c('0x6f'));return respondWithRpcPromise(_0xe07c('0x85'),_0xe07c('0x86'),_0x591add);}return null;})['then'](function(_0xe3ed63){var _0x375a0b='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0xe3ed63[_0xe07c('0x2c')][_0xe07c('0x73')];return db['sequelize'][_0xe07c('0x44')](_0x375a0b,{'type':db[_0xe07c('0x87')][_0xe07c('0x88')]['SELECT'],'raw':!![]})['then'](function(_0x5d99f2){return _0x5d99f2;});})[_0xe07c('0x24')](function(_0x4db92e){if(_0x4db92e){_0x591add[_0xe07c('0x2c')]['contact']=_0x4db92e[0x0];if(!_0x17b41a[_0xe07c('0x5b')]['UserId'])return;return db[_0xe07c('0x76')]['find']({'where':{'id':_0x17b41a['body'][_0xe07c('0x64')],'role':_0xe07c('0x65')},'attributes':['id',_0xe07c('0x3d'),'fullname',_0xe07c('0x78'),_0xe07c('0x79')],'raw':!![]});}return null;})[_0xe07c('0x24')](function(_0xd9ad36){if(!_0xd9ad36)return null;_0x591add['message'][_0xe07c('0x65')]=_0xd9ad36;return _0x591add;})[_0xe07c('0x24')](function(_0x417200){if(_0x417200){_0x417200[_0xe07c('0x2c')][_0xe07c('0x7b')]=util['format'](_0xe07c('0x7c'),_0x17b41a[_0xe07c('0x6c')][_0xe07c('0x3d')]);_0x417200[_0xe07c('0x2c')]['channel']=_0x591add['channel'];_0x417200['message'][_0xe07c('0x7e')]=_0x591add[_0xe07c('0x7d')];_0x417200['message'][_0xe07c('0x7f')]='reject';respondWithRpcPromise(_0xe07c('0x80'),'EventManager',{'event':_0xe07c('0x89'),'message':_0x417200['message']},client9002);return _0x591add;}return null;})[_0xe07c('0x24')](respondWithResult(_0x2132c7,null))[_0xe07c('0x2e')](handleError(_0x2132c7,null));};
\ No newline at end of file
+var _0x8542=['error','message','info','result','catch','sendStatus','status','end','offset','limit','undefined','count','Content-Range','apply','reject','save','destroy','stack','name','send','index','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','rows','show','params','OpenchannelMessage','rawAttributes','options','find','create','body','update','describe','../../config/logger','accept','openchannel','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','acceptMessage','ContactId','sequelize','Sequelize','QueryTypes','User','fullname','email','internal','manual','interface','channel','event','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','SELECT','contact','EventManager','rejectmessage','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','jayson/promise','http','client','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x55e08b,_0x421620){var _0xd1a7ff=function(_0x58c7ff){while(--_0x58c7ff){_0x55e08b['push'](_0x55e08b['shift']());}};_0xd1a7ff(++_0x421620);}(_0x8542,0x1e4));var _0x2854=function(_0x44e201,_0x2477f9){_0x44e201=_0x44e201-0x0;var _0xb720a9=_0x8542[_0x44e201];return _0xb720a9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2854('0x0'));var jsonpatch=require(_0x2854('0x1'));var rp=require(_0x2854('0x2'));var moment=require(_0x2854('0x3'));var BPromise=require(_0x2854('0x4'));var Mustache=require(_0x2854('0x5'));var util=require(_0x2854('0x6'));var path=require(_0x2854('0x7'));var sox=require(_0x2854('0x8'));var csv=require(_0x2854('0x9'));var ejs=require(_0x2854('0xa'));var fs=require('fs');var fs_extra=require(_0x2854('0xb'));var _=require('lodash');var squel=require(_0x2854('0xc'));var crypto=require(_0x2854('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x2854('0xe'));var toCsv=require(_0x2854('0x9'));var querystring=require('querystring');var Papa=require(_0x2854('0xf'));var Redis=require(_0x2854('0x10'));var authService=require(_0x2854('0x11'));var qs=require(_0x2854('0x12'));var as=require(_0x2854('0x13'));var hardwareService=require(_0x2854('0x14'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x2854('0x15'));var db=require(_0x2854('0x16'))['db'];config['redis']=_['defaults'](config[_0x2854('0x17')],{'host':_0x2854('0x18'),'port':0x18eb});var socket=require(_0x2854('0x19'))(new Redis(config[_0x2854('0x17')]));require('./openchannelMessage.socket')[_0x2854('0x1a')](socket);var jayson=require(_0x2854('0x1b'));var client=jayson['client'][_0x2854('0x1c')]({'port':0x232c});var client9002=jayson[_0x2854('0x1d')][_0x2854('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x414057,_0x57726b,_0x3ac2ad,_0x158373){return new BPromise(function(_0x17bdbc,_0x11721c){var _0x57d3a5=_0x158373||client;return _0x57d3a5['request'](_0x414057,_0x3ac2ad)[_0x2854('0x1e')](function(_0x5f2109){logger['info'](_0x2854('0x1f'),_0x57726b,_0x2854('0x20'));logger[_0x2854('0x21')](_0x2854('0x22'),_0x57726b,_0x2854('0x20'),JSON[_0x2854('0x23')](_0x5f2109));if(_0x5f2109[_0x2854('0x24')]){if(_0x5f2109[_0x2854('0x24')]['code']===0x1f4){logger['error'](_0x2854('0x1f'),_0x57726b,_0x5f2109[_0x2854('0x24')][_0x2854('0x25')]);return _0x11721c(_0x5f2109['error']['message']);}logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x57726b,_0x5f2109[_0x2854('0x24')][_0x2854('0x25')]);return _0x17bdbc(_0x5f2109['error'][_0x2854('0x25')]);}else{logger[_0x2854('0x26')](_0x2854('0x1f'),_0x57726b,'request\x20sent');_0x17bdbc(_0x5f2109[_0x2854('0x27')][_0x2854('0x25')]);}})[_0x2854('0x28')](function(_0x166fa9){logger[_0x2854('0x24')](_0x2854('0x1f'),_0x57726b,_0x166fa9);_0x11721c(_0x166fa9);});});}function respondWithStatusCode(_0x44cdd7,_0x6fcc4b){_0x6fcc4b=_0x6fcc4b||0xcc;return function(_0x5d4380){if(_0x5d4380){return _0x44cdd7[_0x2854('0x29')](_0x6fcc4b);}return _0x44cdd7[_0x2854('0x2a')](_0x6fcc4b)[_0x2854('0x2b')]();};}function respondWithResult(_0x348e14,_0x1185a7){_0x1185a7=_0x1185a7||0xc8;return function(_0x2964b6){if(_0x2964b6){return _0x348e14['status'](_0x1185a7)['json'](_0x2964b6);}};}function respondWithFilteredResult(_0x6f6919,_0x49f5a8){return function(_0x5b5bda){if(_0x5b5bda){var _0xf8b01=typeof _0x49f5a8[_0x2854('0x2c')]==='undefined'&&typeof _0x49f5a8[_0x2854('0x2d')]===_0x2854('0x2e');var _0x85b0a8=_0x5b5bda[_0x2854('0x2f')];var _0x3b178c=_0xf8b01?0x0:_0x49f5a8[_0x2854('0x2c')];var _0x5806c9=_0xf8b01?_0x5b5bda[_0x2854('0x2f')]:_0x49f5a8[_0x2854('0x2c')]+_0x49f5a8[_0x2854('0x2d')];var _0x259d3d;if(_0x5806c9>=_0x85b0a8){_0x5806c9=_0x85b0a8;_0x259d3d=0xc8;}else{_0x259d3d=0xce;}_0x6f6919[_0x2854('0x2a')](_0x259d3d);return _0x6f6919['set'](_0x2854('0x30'),_0x3b178c+'-'+_0x5806c9+'/'+_0x85b0a8)['json'](_0x5b5bda);}return null;};}function patchUpdates(_0x7100cd){return function(_0x1bb606){try{jsonpatch[_0x2854('0x31')](_0x1bb606,_0x7100cd,!![]);}catch(_0x327725){return BPromise[_0x2854('0x32')](_0x327725);}return _0x1bb606[_0x2854('0x33')]();};}function saveUpdates(_0x3e4ebf,_0x19a701){return function(_0x377def){if(_0x377def){return _0x377def['update'](_0x3e4ebf)[_0x2854('0x1e')](function(_0x1dc30f){return _0x1dc30f;});}return null;};}function removeEntity(_0x128c44,_0x473e79){return function(_0x2f0066){if(_0x2f0066){return _0x2f0066[_0x2854('0x34')]()['then'](function(){_0x128c44[_0x2854('0x2a')](0xcc)[_0x2854('0x2b')]();});}};}function handleEntityNotFound(_0x5da213,_0x2acbc6){return function(_0x5ccd80){if(!_0x5ccd80){_0x5da213[_0x2854('0x29')](0x194);}return _0x5ccd80;};}function handleError(_0x520089,_0x5cb86a){_0x5cb86a=_0x5cb86a||0x1f4;return function(_0x158f52){logger[_0x2854('0x24')](_0x158f52[_0x2854('0x35')]);if(_0x158f52['name']){delete _0x158f52[_0x2854('0x36')];}_0x520089[_0x2854('0x2a')](_0x5cb86a)[_0x2854('0x37')](_0x158f52);};}exports[_0x2854('0x38')]=function(_0x12e21f,_0x393573){var _0x36648e={},_0x56c045={},_0x5ce07d={'count':0x0,'rows':[]};var _0xf15359=_[_0x2854('0x39')](db['OpenchannelMessage']['rawAttributes'],function(_0x244ac4){return{'name':_0x244ac4[_0x2854('0x3a')],'type':_0x244ac4[_0x2854('0x3b')][_0x2854('0x3c')]};});_0x56c045[_0x2854('0x3d')]=_[_0x2854('0x39')](_0xf15359,_0x2854('0x36'));_0x56c045[_0x2854('0x3e')]=_[_0x2854('0x3f')](_0x12e21f['query']);_0x56c045[_0x2854('0x40')]=_[_0x2854('0x41')](_0x56c045[_0x2854('0x3d')],_0x56c045[_0x2854('0x3e')]);_0x36648e[_0x2854('0x42')]=_[_0x2854('0x41')](_0x56c045['model'],qs[_0x2854('0x43')](_0x12e21f[_0x2854('0x3e')][_0x2854('0x43')]));_0x36648e[_0x2854('0x42')]=_0x36648e[_0x2854('0x42')][_0x2854('0x44')]?_0x36648e[_0x2854('0x42')]:_0x56c045['model'];if(!_0x12e21f[_0x2854('0x3e')][_0x2854('0x45')](_0x2854('0x46'))){_0x36648e[_0x2854('0x2d')]=qs['limit'](_0x12e21f[_0x2854('0x3e')][_0x2854('0x2d')]);_0x36648e[_0x2854('0x2c')]=qs['offset'](_0x12e21f[_0x2854('0x3e')][_0x2854('0x2c')]);}_0x36648e['order']=qs[_0x2854('0x47')](_0x12e21f[_0x2854('0x3e')]['sort']);_0x36648e[_0x2854('0x48')]=qs[_0x2854('0x40')](_[_0x2854('0x49')](_0x12e21f[_0x2854('0x3e')],_0x56c045[_0x2854('0x40')]),_0xf15359);if(_0x12e21f[_0x2854('0x3e')][_0x2854('0x4a')]){_0x36648e[_0x2854('0x48')]=_[_0x2854('0x4b')](_0x36648e[_0x2854('0x48')],{'$or':_[_0x2854('0x39')](_0xf15359,function(_0x1cf693){if(_0x1cf693[_0x2854('0x3b')]!==_0x2854('0x4c')){var _0x3d5e91={};_0x3d5e91[_0x1cf693[_0x2854('0x36')]]={'$like':'%'+_0x12e21f[_0x2854('0x3e')][_0x2854('0x4a')]+'%'};return _0x3d5e91;}})});}_0x36648e=_[_0x2854('0x4b')]({},_0x36648e,_0x12e21f['options']);var _0x133670={'where':_0x36648e[_0x2854('0x48')]};return db['OpenchannelMessage']['count'](_0x133670)[_0x2854('0x1e')](function(_0xf09a39){_0x5ce07d[_0x2854('0x2f')]=_0xf09a39;if(_0x12e21f['query'][_0x2854('0x4d')]){_0x36648e['include']=[{'all':!![]}];}return db['OpenchannelMessage'][_0x2854('0x4e')](_0x36648e);})[_0x2854('0x1e')](function(_0x4abc1a){_0x5ce07d[_0x2854('0x4f')]=_0x4abc1a;return _0x5ce07d;})['then'](respondWithFilteredResult(_0x393573,_0x36648e))[_0x2854('0x28')](handleError(_0x393573,null));};exports[_0x2854('0x50')]=function(_0x31f535,_0xd65c1d){var _0x5a552a={'raw':!![],'where':{'id':_0x31f535[_0x2854('0x51')]['id']}},_0x47df59={};_0x47df59[_0x2854('0x3d')]=_['keys'](db[_0x2854('0x52')][_0x2854('0x53')]);_0x47df59[_0x2854('0x3e')]=_['keys'](_0x31f535[_0x2854('0x3e')]);_0x47df59[_0x2854('0x40')]=_[_0x2854('0x41')](_0x47df59[_0x2854('0x3d')],_0x47df59[_0x2854('0x3e')]);_0x5a552a[_0x2854('0x42')]=_['intersection'](_0x47df59[_0x2854('0x3d')],qs[_0x2854('0x43')](_0x31f535[_0x2854('0x3e')][_0x2854('0x43')]));_0x5a552a[_0x2854('0x42')]=_0x5a552a[_0x2854('0x42')][_0x2854('0x44')]?_0x5a552a[_0x2854('0x42')]:_0x47df59[_0x2854('0x3d')];if(_0x31f535[_0x2854('0x3e')][_0x2854('0x4d')]){_0x5a552a['include']=[{'all':!![]}];}_0x5a552a=_[_0x2854('0x4b')]({},_0x5a552a,_0x31f535[_0x2854('0x54')]);return db[_0x2854('0x52')][_0x2854('0x55')](_0x5a552a)['then'](handleEntityNotFound(_0xd65c1d,null))['then'](respondWithResult(_0xd65c1d,null))[_0x2854('0x28')](handleError(_0xd65c1d,null));};exports[_0x2854('0x56')]=function(_0x57fbbb,_0x5f01d9){return db[_0x2854('0x52')][_0x2854('0x56')](_0x57fbbb[_0x2854('0x57')],{})[_0x2854('0x1e')](respondWithResult(_0x5f01d9,0xc9))[_0x2854('0x28')](handleError(_0x5f01d9,null));};exports[_0x2854('0x58')]=function(_0x5aae21,_0xca6f35){if(_0x5aae21['body']['id']){delete _0x5aae21[_0x2854('0x57')]['id'];}return db[_0x2854('0x52')][_0x2854('0x55')]({'where':{'id':_0x5aae21[_0x2854('0x51')]['id']}})['then'](handleEntityNotFound(_0xca6f35,null))[_0x2854('0x1e')](saveUpdates(_0x5aae21[_0x2854('0x57')],null))[_0x2854('0x1e')](respondWithResult(_0xca6f35,null))[_0x2854('0x28')](handleError(_0xca6f35,null));};exports['destroy']=function(_0x304a6d,_0x5f460f){return db[_0x2854('0x52')][_0x2854('0x55')]({'where':{'id':_0x304a6d[_0x2854('0x51')]['id']}})['then'](handleEntityNotFound(_0x5f460f,null))['then'](removeEntity(_0x5f460f,null))[_0x2854('0x28')](handleError(_0x5f460f,null));};exports['describe']=function(_0x3ca206,_0x3d7991){return db[_0x2854('0x52')][_0x2854('0x59')]()[_0x2854('0x1e')](respondWithResult(_0x3d7991,null))[_0x2854('0x28')](handleError(_0x3d7991,null));};var interaction_log=require(_0x2854('0x5a'))('openchannel-interactions');exports[_0x2854('0x5b')]=function(_0x4affa2,_0x137e08,_0x46a39c){var _0x19b0e8={'agent':{},'channel':_0x2854('0x5c')};if(_0x4affa2[_0x2854('0x57')]['id']){delete _0x4affa2[_0x2854('0x57')]['id'];}_0x4affa2['body'][_0x2854('0x5d')]=!![];_0x4affa2['body'][_0x2854('0x5e')]=moment()[_0x2854('0x5f')](_0x2854('0x60'));_0x4affa2[_0x2854('0x57')][_0x2854('0x61')]=_0x4affa2[_0x2854('0x57')][_0x2854('0x61')]||_0x4affa2[_0x2854('0x62')]['id'];_0x19b0e8[_0x2854('0x63')]['id']=_0x4affa2['body'][_0x2854('0x61')];return db['OpenchannelMessage']['find']({'where':{'id':_0x4affa2['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x137e08,null))['then'](saveUpdates(_0x4affa2['body'],null))[_0x2854('0x1e')](function(_0x223d23){if(_0x223d23){_0x19b0e8[_0x2854('0x25')]=_0x223d23[_0x2854('0x64')]({'plain':!![]});return db[_0x2854('0x65')][_0x2854('0x55')]({'where':{'id':_0x223d23[_0x2854('0x66')]}});}return null;})['then'](handleEntityNotFound(_0x137e08,null))['then'](function(_0x1680d2){if(_0x1680d2){return _0x1680d2[_0x2854('0x58')]({'UserId':_0x4affa2[_0x2854('0x57')][_0x2854('0x61')],'read1stAt':_[_0x2854('0x67')](_0x1680d2[_0x2854('0x68')])?moment()[_0x2854('0x5f')](_0x2854('0x60')):undefined});}return null;})[_0x2854('0x1e')](function(_0x53df44){if(_0x53df44){_0x19b0e8[_0x2854('0x69')]=_0x53df44[_0x2854('0x64')]({'plain':!![]});interaction_log[_0x2854('0x26')](_0x2854('0x6a'),_0x4affa2[_0x2854('0x62')]['id'],_0x4affa2[_0x2854('0x62')]['name'],_0x4affa2['user'][_0x2854('0x6b')],_0x19b0e8[_0x2854('0x69')]['id'],_0x4affa2['body']?JSON[_0x2854('0x23')](_0x4affa2[_0x2854('0x57')]):_0x2854('0x6c'));return respondWithRpcPromise('AcceptMessage',_0x2854('0x6d'),_0x19b0e8);}return null;})[_0x2854('0x1e')](function(_0x8b82b9){var _0x20a988='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x8b82b9[_0x2854('0x25')][_0x2854('0x6e')];return db[_0x2854('0x6f')][_0x2854('0x3e')](_0x20a988,{'type':db[_0x2854('0x70')][_0x2854('0x71')]['SELECT'],'raw':!![]})[_0x2854('0x1e')](function(_0x2a8c9d){return _0x2a8c9d;});})[_0x2854('0x1e')](function(_0x1b28ea){if(_0x1b28ea){_0x19b0e8[_0x2854('0x25')]['contact']=_0x1b28ea[0x0];if(!_0x4affa2['body'][_0x2854('0x61')])return;return db[_0x2854('0x72')][_0x2854('0x55')]({'where':{'id':_0x4affa2[_0x2854('0x57')][_0x2854('0x61')],'role':_0x2854('0x63')},'attributes':['id',_0x2854('0x36'),_0x2854('0x73'),_0x2854('0x74'),_0x2854('0x75')],'raw':!![]});}return null;})['then'](function(_0x493f4b){if(!_0x493f4b)return null;_0x19b0e8['message'][_0x2854('0x63')]=_0x493f4b;return _0x19b0e8;})[_0x2854('0x1e')](function(_0x2e2a5a){if(_0x2e2a5a){if(_0x4affa2[_0x2854('0x57')][_0x2854('0x76')]){_0x19b0e8['message'][_0x2854('0x77')]=util['format']('SIP/%s',_0x4affa2[_0x2854('0x62')][_0x2854('0x36')]);_0x19b0e8[_0x2854('0x25')][_0x2854('0x78')]=_0x19b0e8[_0x2854('0x78')];_0x19b0e8[_0x2854('0x25')][_0x2854('0x79')]=_0x2854('0x5b');return respondWithRpcPromise('EventManager','EventManager',{'event':'acceptmessage','message':_0x19b0e8[_0x2854('0x25')]},client9002)[_0x2854('0x1e')](function(){return _0x19b0e8;});}return _0x19b0e8;}return null;})[_0x2854('0x1e')](respondWithResult(_0x137e08,null))['catch'](handleError(_0x137e08,null));};var interaction_log=require(_0x2854('0x5a'))('openchannel-interactions');exports['reject']=function(_0x29497a,_0x447df7,_0x28bcea){var _0x323b95={'agent':{},'channel':_0x2854('0x5c')};if(_0x29497a['body']['id']){delete _0x29497a[_0x2854('0x57')]['id'];}_0x29497a['body']['UserId']=_0x29497a[_0x2854('0x57')][_0x2854('0x61')]||_0x29497a['user']['id'];_0x323b95[_0x2854('0x63')]['id']=_0x29497a['body'][_0x2854('0x61')];return db[_0x2854('0x52')]['find']({'where':{'id':_0x29497a[_0x2854('0x51')]['id'],'UserId':null}})[_0x2854('0x1e')](handleEntityNotFound(_0x447df7,null))[_0x2854('0x1e')](function(_0x463d1d){if(_0x463d1d){_0x323b95['message']=_0x463d1d[_0x2854('0x64')]({'plain':!![]});return db[_0x2854('0x65')][_0x2854('0x55')]({'where':{'id':_0x463d1d[_0x2854('0x66')]}});}return null;})[_0x2854('0x1e')](handleEntityNotFound(_0x447df7,null))[_0x2854('0x1e')](function(_0x5549ad){if(_0x5549ad){_0x323b95[_0x2854('0x69')]=_0x5549ad[_0x2854('0x64')]({'plain':!![]});interaction_log[_0x2854('0x26')](_0x2854('0x7a'),_0x29497a[_0x2854('0x62')]['id'],_0x29497a[_0x2854('0x62')][_0x2854('0x36')],_0x29497a[_0x2854('0x62')][_0x2854('0x6b')],_0x323b95['interaction']['id'],_0x29497a[_0x2854('0x57')]?JSON['stringify'](_0x29497a[_0x2854('0x57')]):_0x2854('0x6c'));return respondWithRpcPromise(_0x2854('0x7b'),_0x2854('0x7c'),_0x323b95);}return null;})[_0x2854('0x1e')](function(_0x23281f){var _0xf0a4fc=_0x2854('0x7d')+_0x23281f['message']['ContactId'];return db[_0x2854('0x6f')]['query'](_0xf0a4fc,{'type':db[_0x2854('0x70')][_0x2854('0x71')][_0x2854('0x7e')],'raw':!![]})['then'](function(_0x56b250){return _0x56b250;});})[_0x2854('0x1e')](function(_0x1a1171){if(_0x1a1171){_0x323b95[_0x2854('0x25')][_0x2854('0x7f')]=_0x1a1171[0x0];if(!_0x29497a[_0x2854('0x57')]['UserId'])return;return db[_0x2854('0x72')][_0x2854('0x55')]({'where':{'id':_0x29497a[_0x2854('0x57')][_0x2854('0x61')],'role':'agent'},'attributes':['id',_0x2854('0x36'),'fullname','email','internal'],'raw':!![]});}return null;})[_0x2854('0x1e')](function(_0x4f7ae8){if(!_0x4f7ae8)return null;_0x323b95['message'][_0x2854('0x63')]=_0x4f7ae8;return _0x323b95;})[_0x2854('0x1e')](function(_0x4ca587){if(_0x4ca587){_0x4ca587['message'][_0x2854('0x77')]=util['format']('SIP/%s',_0x29497a[_0x2854('0x62')][_0x2854('0x36')]);_0x4ca587['message'][_0x2854('0x78')]=_0x323b95[_0x2854('0x78')];_0x4ca587[_0x2854('0x25')][_0x2854('0x79')]=_0x2854('0x32');respondWithRpcPromise(_0x2854('0x80'),_0x2854('0x80'),{'event':_0x2854('0x81'),'message':_0x4ca587[_0x2854('0x25')]},client9002);return _0x323b95;}return null;})[_0x2854('0x1e')](respondWithResult(_0x447df7,null))[_0x2854('0x28')](handleError(_0x447df7,null));};
\ No newline at end of file
index bbbe757..845f09f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8662=['update','emit','hasOwnProperty','hook','exports','OpenchannelMessage','setMaxListeners'];(function(_0xa83263,_0x4b5a6a){var _0x18d67c=function(_0x235d59){while(--_0x235d59){_0xa83263['push'](_0xa83263['shift']());}};_0x18d67c(++_0x4b5a6a);}(_0x8662,0x116));var _0x2866=function(_0x8653c6,_0x504c20){_0x8653c6=_0x8653c6-0x0;var _0x1c1960=_0x8662[_0x8653c6];return _0x1c1960;};'use strict';var EventEmitter=require('events');var OpenchannelMessage=require('../../mysqldb')['db'][_0x2866('0x0')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x2866('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x2866('0x2'),'afterDestroy':'remove'};function emitEvent(_0x541b1b){return function(_0x2f91d8,_0x6bb431,_0x52ca9b){OpenchannelMessageEvents[_0x2866('0x3')](_0x541b1b+':'+_0x2f91d8['id'],_0x2f91d8);OpenchannelMessageEvents[_0x2866('0x3')](_0x541b1b,_0x2f91d8);_0x52ca9b(null);};}for(var e in events){if(events[_0x2866('0x4')](e)){var event=events[e];OpenchannelMessage[_0x2866('0x5')](e,emitEvent(event));}}module[_0x2866('0x6')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0xc0f0=['emit','hook','exports','events','../../mysqldb','OpenchannelMessage','setMaxListeners','save','update'];(function(_0x195f6c,_0xd406c0){var _0x42a80c=function(_0x34424b){while(--_0x34424b){_0x195f6c['push'](_0x195f6c['shift']());}};_0x42a80c(++_0xd406c0);}(_0xc0f0,0x1b3));var _0x0c0f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xc0f0[_0x14add3];return _0x4a174f;};'use strict';var EventEmitter=require(_0x0c0f('0x0'));var OpenchannelMessage=require(_0x0c0f('0x1'))['db'][_0x0c0f('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x0c0f('0x3')](0x0);var events={'afterCreate':_0x0c0f('0x4'),'afterUpdate':_0x0c0f('0x5'),'afterDestroy':'remove'};function emitEvent(_0x123b55){return function(_0x26ed44,_0x4bb2aa,_0x5dc004){OpenchannelMessageEvents['emit'](_0x123b55+':'+_0x26ed44['id'],_0x26ed44);OpenchannelMessageEvents[_0x0c0f('0x6')](_0x123b55,_0x26ed44);_0x5dc004(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelMessage[_0x0c0f('0x7')](e,emitEvent(event));}}module[_0x0c0f('0x8')]=OpenchannelMessageEvents;
\ No newline at end of file
index 6577b4a..49d17e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb03e=['info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','length','Interaction','omit','POST','method','GET','threadId','inspect','utf8mb4','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelMessage.attributes','exports','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','FULLTEXT','direction','toLowerCase','out','secret','isNil','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','then','update','createdAt','error','CmContact','describe','OpenchannelAccount','find','OpenchannelAccountId','Interactions','Contact','get','replyUri'];(function(_0x2c6120,_0x1f3e60){var _0x5fb114=function(_0x45a72d){while(--_0x45a72d){_0x2c6120['push'](_0x2c6120['shift']());}};_0x5fb114(++_0x1f3e60);}(_0xb03e,0x1eb));var _0xeb03=function(_0x13ff23,_0x27d95b){_0x13ff23=_0x13ff23-0x0;var _0x27afc6=_0xb03e[_0x13ff23];return _0x27afc6;};'use strict';var _=require('lodash');var util=require(_0xeb03('0x0'));var logger=require(_0xeb03('0x1'))(_0xeb03('0x2'));var moment=require(_0xeb03('0x3'));var BPromise=require(_0xeb03('0x4'));var rp=require(_0xeb03('0x5'));var fs=require('fs');var path=require(_0xeb03('0x6'));var rimraf=require(_0xeb03('0x7'));var config=require(_0xeb03('0x8'));var attributes=require(_0xeb03('0x9'));module[_0xeb03('0xa')]=function(_0xee2291,_0x4e1cea){return _0xee2291[_0xeb03('0xb')](_0xeb03('0xc'),attributes,{'tableName':_0xeb03('0xd'),'paranoid':![],'indexes':[{'name':_0xeb03('0xe'),'fields':[_0xeb03('0xf')],'type':_0xeb03('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5a8491,_0x403b77,_0x99f4e2){var _0x14cfa0=_0xee2291['models'];var _0x31af2c=_0x5a8491['get']({'plain':!![]});if(_0x31af2c[_0xeb03('0x11')][_0xeb03('0x12')]()==='in'||_0x31af2c[_0xeb03('0x11')][_0xeb03('0x12')]()===_0xeb03('0x13')&&!_0x31af2c[_0xeb03('0x14')]&&!_[_0xeb03('0x15')](_0x31af2c[_0xeb03('0x16')])){_0x14cfa0[_0xeb03('0x17')][_0xeb03('0x18')]({'where':{'id':_0x31af2c[_0xeb03('0x19')]}})[_0xeb03('0x1a')](function(_0x4d9c8e){if(_0x4d9c8e){_0x4d9c8e[_0xeb03('0x1b')]({'lastMsgAt':_0x31af2c[_0xeb03('0x1c')],'lastMsgDirection':_0x31af2c[_0xeb03('0x11')][_0xeb03('0x12')]()});}})['catch'](function(_0x15f4fe){console[_0xeb03('0x1d')](_0x15f4fe);});}if(_0x31af2c[_0xeb03('0x11')]==='out'&&!_0x31af2c[_0xeb03('0x14')]){var _0x46dd1b;_0x14cfa0[_0xeb03('0x1e')][_0xeb03('0x1f')]()[_0xeb03('0x1a')](function(_0x1b4cbd){return _0x14cfa0[_0xeb03('0x20')][_0xeb03('0x21')]({'where':{'id':_0x31af2c[_0xeb03('0x22')]},'include':[{'model':_0x14cfa0[_0xeb03('0x17')],'as':_0xeb03('0x23'),'where':{'id':_0x31af2c[_0xeb03('0x19')]},'limit':0x1,'include':[{'model':_0x14cfa0[_0xeb03('0x1e')],'as':_0xeb03('0x24'),'attributes':_['keys'](_0x1b4cbd)}]}]});})[_0xeb03('0x1a')](function(_0x3855dd){_0x46dd1b=_0x3855dd[_0xeb03('0x25')]({'plain':!![]});if(_0x46dd1b&&_0x46dd1b[_0xeb03('0x26')]){logger[_0xeb03('0x27')](_0xeb03('0x28'),_0xeb03('0x29'),util[_0xeb03('0x2a')](_0xeb03('0x2b'),_0x31af2c['id'],_0x46dd1b['replyUri']));if(_0x46dd1b[_0xeb03('0x23')]&&_0x46dd1b[_0xeb03('0x23')][_0xeb03('0x2c')]){_0x31af2c[_0xeb03('0x2d')]=_[_0xeb03('0x2e')](_0x46dd1b['Interactions'][0x0],_0xeb03('0x24'));_0x31af2c[_0xeb03('0x24')]=_0x46dd1b[_0xeb03('0x23')][0x0][_0xeb03('0x24')];}var _0x403b77={'method':_0xeb03('0x2f'),'uri':encodeURI(_0x46dd1b[_0xeb03('0x26')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x403b77[_0xeb03('0x30')]){case _0xeb03('0x31'):_0x403b77['qs']=_0x31af2c;break;case'POST':_0x403b77[_0xeb03('0xf')]=_0x31af2c;break;}return rp(_0x403b77)[_0xeb03('0x1a')](function(_0x2683f9){logger[_0xeb03('0x27')]('OpenchannelMessage,\x20%s,\x20%s','afterCreate',util[_0xeb03('0x2a')]('Message\x20%d\x20forwarded\x20to\x20%s',_0x31af2c['id'],_0x46dd1b[_0xeb03('0x26')]));if(_0x2683f9[_0xeb03('0xf')][_0xeb03('0x32')]&&_0x2683f9['body'][_0xeb03('0x32')]!=_0x31af2c['Interaction']['threadId']){return _0x14cfa0['OpenchannelInteraction']['update']({'threadId':_0x2683f9[_0xeb03('0xf')][_0xeb03('0x32')]},{'logging':!![],'where':{'id':_0x31af2c['Interaction']['id']}});}else{return;}})['then'](function(){return _0x5a8491['update']({'read':!![]});})['catch'](function(_0x1e8009){logger[_0xeb03('0x1d')](_0xeb03('0x28'),_0xeb03('0x29'),util[_0xeb03('0x33')](_0x1e8009,{'showHidden':![],'depth':null}));_0x99f4e2();});}else{_0x99f4e2();}})['finally'](function(){_0x99f4e2();});}else{_0x99f4e2();}}},'charset':_0xeb03('0x34'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xf4f4=['Interactions','Contact','keys','replyUri','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','omit','POST','method','Message\x20%d\x20forwarded\x20to\x20%s','Interaction','threadId','error','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','exports','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','models','get','direction','toLowerCase','out','secret','isNil','UserId','OpenchannelInteraction','OpenchannelInteractionId','update','createdAt','catch','CmContact','describe','then','OpenchannelAccount','find','OpenchannelAccountId'];(function(_0x4dbe11,_0x12b87c){var _0x52f66c=function(_0x293c38){while(--_0x293c38){_0x4dbe11['push'](_0x4dbe11['shift']());}};_0x52f66c(++_0x12b87c);}(_0xf4f4,0xe3));var _0x4f4f=function(_0x570845,_0x4935ca){_0x570845=_0x570845-0x0;var _0x393e6c=_0xf4f4[_0x570845];return _0x393e6c;};'use strict';var _=require(_0x4f4f('0x0'));var util=require(_0x4f4f('0x1'));var logger=require('../../config/logger')(_0x4f4f('0x2'));var moment=require(_0x4f4f('0x3'));var BPromise=require(_0x4f4f('0x4'));var rp=require(_0x4f4f('0x5'));var fs=require('fs');var path=require(_0x4f4f('0x6'));var rimraf=require('rimraf');var config=require(_0x4f4f('0x7'));var attributes=require('./openchannelMessage.attributes');module[_0x4f4f('0x8')]=function(_0x132d5c,_0x20ee6e){return _0x132d5c[_0x4f4f('0x9')](_0x4f4f('0xa'),attributes,{'tableName':_0x4f4f('0xb'),'paranoid':![],'indexes':[{'name':_0x4f4f('0xc'),'fields':[_0x4f4f('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0xc066a4,_0x38d110,_0x39e36b){var _0x2d86d1=_0x132d5c[_0x4f4f('0xe')];var _0x11940f=_0xc066a4[_0x4f4f('0xf')]({'plain':!![]});if(_0x11940f[_0x4f4f('0x10')]['toLowerCase']()==='in'||_0x11940f['direction'][_0x4f4f('0x11')]()===_0x4f4f('0x12')&&!_0x11940f[_0x4f4f('0x13')]&&!_[_0x4f4f('0x14')](_0x11940f[_0x4f4f('0x15')])){_0x2d86d1[_0x4f4f('0x16')]['findOne']({'where':{'id':_0x11940f[_0x4f4f('0x17')]}})['then'](function(_0x216ba8){if(_0x216ba8){_0x216ba8[_0x4f4f('0x18')]({'lastMsgAt':_0x11940f[_0x4f4f('0x19')],'lastMsgDirection':_0x11940f[_0x4f4f('0x10')]['toLowerCase']()});}})[_0x4f4f('0x1a')](function(_0x4c68f4){console['error'](_0x4c68f4);});}if(_0x11940f['direction']===_0x4f4f('0x12')&&!_0x11940f[_0x4f4f('0x13')]){var _0x2d21ed;_0x2d86d1[_0x4f4f('0x1b')][_0x4f4f('0x1c')]()[_0x4f4f('0x1d')](function(_0x1245c4){return _0x2d86d1[_0x4f4f('0x1e')][_0x4f4f('0x1f')]({'where':{'id':_0x11940f[_0x4f4f('0x20')]},'include':[{'model':_0x2d86d1[_0x4f4f('0x16')],'as':_0x4f4f('0x21'),'where':{'id':_0x11940f['OpenchannelInteractionId']},'limit':0x1,'include':[{'model':_0x2d86d1[_0x4f4f('0x1b')],'as':_0x4f4f('0x22'),'attributes':_[_0x4f4f('0x23')](_0x1245c4)}]}]});})[_0x4f4f('0x1d')](function(_0x302a79){_0x2d21ed=_0x302a79[_0x4f4f('0xf')]({'plain':!![]});if(_0x2d21ed&&_0x2d21ed[_0x4f4f('0x24')]){logger[_0x4f4f('0x25')](_0x4f4f('0x26'),_0x4f4f('0x27'),util[_0x4f4f('0x28')](_0x4f4f('0x29'),_0x11940f['id'],_0x2d21ed[_0x4f4f('0x24')]));if(_0x2d21ed[_0x4f4f('0x21')]&&_0x2d21ed['Interactions']['length']){_0x11940f['Interaction']=_[_0x4f4f('0x2a')](_0x2d21ed[_0x4f4f('0x21')][0x0],'Contact');_0x11940f[_0x4f4f('0x22')]=_0x2d21ed[_0x4f4f('0x21')][0x0][_0x4f4f('0x22')];}var _0x38d110={'method':_0x4f4f('0x2b'),'uri':encodeURI(_0x2d21ed[_0x4f4f('0x24')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x38d110[_0x4f4f('0x2c')]){case'GET':_0x38d110['qs']=_0x11940f;break;case _0x4f4f('0x2b'):_0x38d110[_0x4f4f('0xd')]=_0x11940f;break;}return rp(_0x38d110)[_0x4f4f('0x1d')](function(_0x15c79c){logger[_0x4f4f('0x25')]('OpenchannelMessage,\x20%s,\x20%s',_0x4f4f('0x27'),util[_0x4f4f('0x28')](_0x4f4f('0x2d'),_0x11940f['id'],_0x2d21ed['replyUri']));if(_0x15c79c['body']['threadId']&&_0x15c79c[_0x4f4f('0xd')]['threadId']!=_0x11940f[_0x4f4f('0x2e')][_0x4f4f('0x2f')]){return _0x2d86d1[_0x4f4f('0x16')]['update']({'threadId':_0x15c79c[_0x4f4f('0xd')][_0x4f4f('0x2f')]},{'logging':!![],'where':{'id':_0x11940f['Interaction']['id']}});}else{return;}})[_0x4f4f('0x1d')](function(){return _0xc066a4[_0x4f4f('0x18')]({'read':!![]});})[_0x4f4f('0x1a')](function(_0x5b937e){logger[_0x4f4f('0x30')](_0x4f4f('0x26'),'afterCreate',util['inspect'](_0x5b937e,{'showHidden':![],'depth':null}));_0x39e36b();});}else{_0x39e36b();}})[_0x4f4f('0x31')](function(){_0x39e36b();});}else{_0x39e36b();}}},'charset':_0x4f4f('0x32'),'collate':_0x4f4f('0x33')});};
\ No newline at end of file
index bfa184d..830aa0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['message','result','OpenchannelMessage','create','body','options','CreateOpenchannelMessage','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./openchannelMessage.socket','then','info','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelMessage,\x20%s,\x20%s'];(function(_0x4460d3,_0x58b53d){var _0x37eae3=function(_0x3fb6cf){while(--_0x3fb6cf){_0x4460d3['push'](_0x4460d3['shift']());}};_0x37eae3(++_0x58b53d);}(_0x0b0e,0x187));var _0xe0b0=function(_0x2652ef,_0x234230){_0x2652ef=_0x2652ef-0x0;var _0x2db578=_0x0b0e[_0x2652ef];return _0x2db578;};'use strict';var _=require(_0xe0b0('0x0'));var util=require('util');var moment=require(_0xe0b0('0x1'));var BPromise=require('bluebird');var rs=require(_0xe0b0('0x2'));var fs=require('fs');var Redis=require(_0xe0b0('0x3'));var db=require(_0xe0b0('0x4'))['db'];var utils=require(_0xe0b0('0x5'));var logger=require(_0xe0b0('0x6'))(_0xe0b0('0x7'));var config=require(_0xe0b0('0x8'));var jayson=require(_0xe0b0('0x9'));var client=jayson[_0xe0b0('0xa')][_0xe0b0('0xb')]({'port':0x232a});config[_0xe0b0('0xc')]=_['defaults'](config['redis'],{'host':_0xe0b0('0xd'),'port':0x18eb});var socket=require(_0xe0b0('0xe'))(new Redis(config[_0xe0b0('0xc')]));require(_0xe0b0('0xf'))['register'](socket);function respondWithRpcPromise(_0x338e7c,_0x1dd3b8,_0x553d4f){return new BPromise(function(_0x1fef28,_0x2f32b6){return client['request'](_0x338e7c,_0x553d4f)[_0xe0b0('0x10')](function(_0x2cdad2){logger[_0xe0b0('0x11')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,_0xe0b0('0x12'));logger[_0xe0b0('0x13')](_0xe0b0('0x14'),_0x1dd3b8,_0xe0b0('0x12'),JSON[_0xe0b0('0x15')](_0x2cdad2));if(_0x2cdad2['error']){if(_0x2cdad2[_0xe0b0('0x16')][_0xe0b0('0x17')]===0x1f4){logger[_0xe0b0('0x16')](_0xe0b0('0x18'),_0x1dd3b8,_0x2cdad2[_0xe0b0('0x16')]['message']);return _0x2f32b6(_0x2cdad2[_0xe0b0('0x16')]['message']);}logger[_0xe0b0('0x16')](_0xe0b0('0x18'),_0x1dd3b8,_0x2cdad2['error'][_0xe0b0('0x19')]);return _0x1fef28(_0x2cdad2['error'][_0xe0b0('0x19')]);}else{logger[_0xe0b0('0x11')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,'request\x20sent');_0x1fef28(_0x2cdad2[_0xe0b0('0x1a')]['message']);}})['catch'](function(_0x4bce65){logger[_0xe0b0('0x16')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,_0x4bce65);_0x2f32b6(_0x4bce65);});});}exports['CreateOpenchannelMessage']=function(_0x10cde1){var _0x59dff5=this;return new Promise(function(_0x472286,_0x5dba2f){return db[_0xe0b0('0x1b')][_0xe0b0('0x1c')](_0x10cde1[_0xe0b0('0x1d')],{'raw':_0x10cde1[_0xe0b0('0x1e')]?_0x10cde1[_0xe0b0('0x1e')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x2fa820){logger['info'](_0xe0b0('0x1f'),_0x10cde1);logger[_0xe0b0('0x13')]('CreateOpenchannelMessage',_0x10cde1,JSON[_0xe0b0('0x15')](_0x2fa820));_0x472286(_0x2fa820);})['catch'](function(_0x2208d0){logger['error'](_0xe0b0('0x1f'),_0x2208d0['message'],_0x10cde1);_0x5dba2f(_0x59dff5[_0xe0b0('0x16')](0x1f4,_0x2208d0['message']));});});};
\ No newline at end of file
+var _0xdb28=['then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','CreateOpenchannelMessage','OpenchannelMessage','create','body','options','raw','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./openchannelMessage.socket','register','request'];(function(_0x3086e3,_0x42bab4){var _0x46369a=function(_0x17c8c6){while(--_0x17c8c6){_0x3086e3['push'](_0x3086e3['shift']());}};_0x46369a(++_0x42bab4);}(_0xdb28,0x106));var _0x8db2=function(_0x375c79,_0x333c48){_0x375c79=_0x375c79-0x0;var _0x5332f1=_0xdb28[_0x375c79];return _0x5332f1;};'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});config['redis']=_[_0x8db2('0xb')](config[_0x8db2('0xc')],{'host':_0x8db2('0xd'),'port':0x18eb});var socket=require(_0x8db2('0xe'))(new Redis(config[_0x8db2('0xc')]));require(_0x8db2('0xf'))[_0x8db2('0x10')](socket);function respondWithRpcPromise(_0x4ba340,_0x30dc90,_0x476216){return new BPromise(function(_0x1f62af,_0x57015f){return client[_0x8db2('0x11')](_0x4ba340,_0x476216)[_0x8db2('0x12')](function(_0x576475){logger[_0x8db2('0x13')](_0x8db2('0x14'),_0x30dc90,_0x8db2('0x15'));logger[_0x8db2('0x16')](_0x8db2('0x17'),_0x30dc90,'request\x20sent',JSON['stringify'](_0x576475));if(_0x576475[_0x8db2('0x18')]){if(_0x576475[_0x8db2('0x18')][_0x8db2('0x19')]===0x1f4){logger[_0x8db2('0x18')](_0x8db2('0x14'),_0x30dc90,_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);return _0x57015f(_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);}logger[_0x8db2('0x18')]('OpenchannelMessage,\x20%s,\x20%s',_0x30dc90,_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);return _0x1f62af(_0x576475['error'][_0x8db2('0x1a')]);}else{logger[_0x8db2('0x13')](_0x8db2('0x14'),_0x30dc90,_0x8db2('0x15'));_0x1f62af(_0x576475[_0x8db2('0x1b')][_0x8db2('0x1a')]);}})['catch'](function(_0x5df464){logger[_0x8db2('0x18')](_0x8db2('0x14'),_0x30dc90,_0x5df464);_0x57015f(_0x5df464);});});}exports[_0x8db2('0x1c')]=function(_0x1b64e4){var _0x58562e=this;return new Promise(function(_0x431d60,_0x36a9ff){return db[_0x8db2('0x1d')][_0x8db2('0x1e')](_0x1b64e4[_0x8db2('0x1f')],{'raw':_0x1b64e4['options']?_0x1b64e4[_0x8db2('0x20')][_0x8db2('0x21')]===undefined?!![]:![]:!![]})[_0x8db2('0x12')](function(_0x125be2){logger[_0x8db2('0x13')](_0x8db2('0x1c'),_0x1b64e4);logger[_0x8db2('0x16')]('CreateOpenchannelMessage',_0x1b64e4,JSON[_0x8db2('0x22')](_0x125be2));_0x431d60(_0x125be2);})['catch'](function(_0x5725f0){logger['error']('CreateOpenchannelMessage',_0x5725f0[_0x8db2('0x1a')],_0x1b64e4);_0x36a9ff(_0x58562e[_0x8db2('0x18')](0x1f4,_0x5725f0[_0x8db2('0x1a')]));});});};
\ No newline at end of file
index 02ec348..29caf4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c55=['save','remove','update','removeListener','register','openchannelMessage:','./openchannelMessage.events'];(function(_0x4e4ce7,_0x27951a){var _0x5840e0=function(_0xb5c4a4){while(--_0xb5c4a4){_0x4e4ce7['push'](_0x4e4ce7['shift']());}};_0x5840e0(++_0x27951a);}(_0x7c55,0x180));var _0x57c5=function(_0x378abf,_0x3d2bad){_0x378abf=_0x378abf-0x0;var _0x29642e=_0x7c55[_0x378abf];return _0x29642e;};'use strict';var OpenchannelMessageEvents=require(_0x57c5('0x0'));var events=[_0x57c5('0x1'),_0x57c5('0x2'),_0x57c5('0x3')];function createListener(_0x3b7f88,_0x5b4776){return function(_0x2a8adf){_0x5b4776['emit'](_0x3b7f88,_0x2a8adf);};}function removeListener(_0x3d0f45,_0x3719a4){return function(){OpenchannelMessageEvents[_0x57c5('0x4')](_0x3d0f45,_0x3719a4);};}exports[_0x57c5('0x5')]=function(_0x1be252){for(var _0x51fa53=0x0,_0x54e7c5=events['length'];_0x51fa53<_0x54e7c5;_0x51fa53++){var _0x5de0ea=events[_0x51fa53];var _0x314ce3=createListener(_0x57c5('0x6')+_0x5de0ea,_0x1be252);OpenchannelMessageEvents['on'](_0x5de0ea,_0x314ce3);}};
\ No newline at end of file
+var _0x04f7=['update','length','./openchannelMessage.events','remove'];(function(_0x12a66f,_0x564a7c){var _0x46e14b=function(_0xf59596){while(--_0xf59596){_0x12a66f['push'](_0x12a66f['shift']());}};_0x46e14b(++_0x564a7c);}(_0x04f7,0x1f2));var _0x704f=function(_0x2336a1,_0x3c2c16){_0x2336a1=_0x2336a1-0x0;var _0x494312=_0x04f7[_0x2336a1];return _0x494312;};'use strict';var OpenchannelMessageEvents=require(_0x704f('0x0'));var events=['save',_0x704f('0x1'),_0x704f('0x2')];function createListener(_0x3fc397,_0x215238){return function(_0x3f4474){_0x215238['emit'](_0x3fc397,_0x3f4474);};}function removeListener(_0x3acf30,_0x550c27){return function(){OpenchannelMessageEvents['removeListener'](_0x3acf30,_0x550c27);};}exports['register']=function(_0x1d17f7){for(var _0x32bf45=0x0,_0xfea3e0=events[_0x704f('0x3')];_0x32bf45<_0xfea3e0;_0x32bf45++){var _0x3fa1e6=events[_0x32bf45];var _0xc41786=createListener('openchannelMessage:'+_0x3fa1e6,_0x1d17f7);OpenchannelMessageEvents['on'](_0x3fa1e6,_0xc41786);}};
\ No newline at end of file
index c237541..12266e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe422=['addAgents','put','/:id','update','delete','destroy','removeTeams','removeAgents','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','/describe','describe','show','getMembers','/:id/teams','getTeams','/:id/users','post','create','addTeams'];(function(_0x56bc39,_0x2a7549){var _0x35ed2e=function(_0x1154a4){while(--_0x1154a4){_0x56bc39['push'](_0x56bc39['shift']());}};_0x35ed2e(++_0x2a7549);}(_0xe422,0x9e));var _0x2e42=function(_0x1589dd,_0x2b9d22){_0x1589dd=_0x1589dd-0x0;var _0x1bddd1=_0xe422[_0x1589dd];return _0x1bddd1;};'use strict';var multer=require(_0x2e42('0x0'));var util=require(_0x2e42('0x1'));var path=require(_0x2e42('0x2'));var timeout=require(_0x2e42('0x3'));var express=require(_0x2e42('0x4'));var router=express['Router']();var fs_extra=require(_0x2e42('0x5'));var auth=require(_0x2e42('0x6'));var interaction=require(_0x2e42('0x7'));var config=require(_0x2e42('0x8'));var controller=require(_0x2e42('0x9'));router[_0x2e42('0xa')]('/',auth[_0x2e42('0xb')](),controller['index']);router[_0x2e42('0xa')](_0x2e42('0xc'),auth['isAuthenticated'](),controller[_0x2e42('0xd')]);router[_0x2e42('0xa')]('/:id',auth[_0x2e42('0xb')](),controller[_0x2e42('0xe')]);router[_0x2e42('0xa')]('/:id/members',auth['isAuthenticated'](),controller[_0x2e42('0xf')]);router[_0x2e42('0xa')](_0x2e42('0x10'),auth[_0x2e42('0xb')](),controller[_0x2e42('0x11')]);router[_0x2e42('0xa')](_0x2e42('0x12'),auth[_0x2e42('0xb')](),controller['getAgents']);router[_0x2e42('0x13')]('/',auth[_0x2e42('0xb')](),controller[_0x2e42('0x14')]);router[_0x2e42('0x13')](_0x2e42('0x10'),auth[_0x2e42('0xb')](),controller[_0x2e42('0x15')]);router[_0x2e42('0x13')](_0x2e42('0x12'),auth[_0x2e42('0xb')](),controller[_0x2e42('0x16')]);router[_0x2e42('0x17')](_0x2e42('0x18'),auth['isAuthenticated'](),controller[_0x2e42('0x19')]);router[_0x2e42('0x1a')](_0x2e42('0x18'),auth[_0x2e42('0xb')](),controller[_0x2e42('0x1b')]);router['delete'](_0x2e42('0x10'),auth[_0x2e42('0xb')](),controller[_0x2e42('0x1c')]);router[_0x2e42('0x1a')]('/:id/users',auth['isAuthenticated'](),controller[_0x2e42('0x1d')]);module['exports']=router;
\ No newline at end of file
+var _0x9751=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','describe','/:id','show','/:id/members','/:id/teams','getTeams','getAgents','post','addTeams','/:id/users','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','connect-timeout','express','fs-extra'];(function(_0x18a50a,_0x5617a8){var _0x11f37e=function(_0x1a3f65){while(--_0x1a3f65){_0x18a50a['push'](_0x18a50a['shift']());}};_0x11f37e(++_0x5617a8);}(_0x9751,0x133));var _0x1975=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0x9751[_0x543084];return _0x306a57;};'use strict';var multer=require(_0x1975('0x0'));var util=require(_0x1975('0x1'));var path=require('path');var timeout=require(_0x1975('0x2'));var express=require(_0x1975('0x3'));var router=express['Router']();var fs_extra=require(_0x1975('0x4'));var auth=require(_0x1975('0x5'));var interaction=require(_0x1975('0x6'));var config=require(_0x1975('0x7'));var controller=require('./openchannelQueue.controller');router[_0x1975('0x8')]('/',auth[_0x1975('0x9')](),controller['index']);router[_0x1975('0x8')]('/describe',auth[_0x1975('0x9')](),controller[_0x1975('0xa')]);router[_0x1975('0x8')](_0x1975('0xb'),auth[_0x1975('0x9')](),controller[_0x1975('0xc')]);router[_0x1975('0x8')](_0x1975('0xd'),auth[_0x1975('0x9')](),controller['getMembers']);router[_0x1975('0x8')](_0x1975('0xe'),auth[_0x1975('0x9')](),controller[_0x1975('0xf')]);router[_0x1975('0x8')]('/:id/users',auth[_0x1975('0x9')](),controller[_0x1975('0x10')]);router[_0x1975('0x11')]('/',auth[_0x1975('0x9')](),controller['create']);router['post'](_0x1975('0xe'),auth['isAuthenticated'](),controller[_0x1975('0x12')]);router['post'](_0x1975('0x13'),auth[_0x1975('0x9')](),controller['addAgents']);router['put'](_0x1975('0xb'),auth['isAuthenticated'](),controller[_0x1975('0x14')]);router[_0x1975('0x15')](_0x1975('0xb'),auth[_0x1975('0x9')](),controller[_0x1975('0x16')]);router[_0x1975('0x15')]('/:id/teams',auth[_0x1975('0x9')](),controller[_0x1975('0x17')]);router[_0x1975('0x15')](_0x1975('0x13'),auth[_0x1975('0x9')](),controller[_0x1975('0x18')]);module[_0x1975('0x19')]=router;
\ No newline at end of file
index 7304d62..ea2a50d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb899=['beepall','roundrobin','sequelize','STRING','INTEGER','ENUM','rrmemory'];(function(_0x1a3655,_0x5ca83f){var _0x9857a1=function(_0x6ab219){while(--_0x6ab219){_0x1a3655['push'](_0x1a3655['shift']());}};_0x9857a1(++_0x5ca83f);}(_0xb899,0x1ec));var _0x9b89=function(_0x4d2d7d,_0x201f63){_0x4d2d7d=_0x4d2d7d-0x0;var _0x34a37c=_0xb899[_0x4d2d7d];return _0x34a37c;};'use strict';var Sequelize=require(_0x9b89('0x0'));module['exports']={'name':{'type':Sequelize[_0x9b89('0x1')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x9b89('0x1')]},'timeout':{'type':Sequelize[_0x9b89('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x9b89('0x3')](_0x9b89('0x4'),_0x9b89('0x5'),_0x9b89('0x6'))}};
\ No newline at end of file
+var _0x6b5c=['STRING','INTEGER','ENUM','rrmemory','roundrobin','exports'];(function(_0x3831ee,_0x41a8e0){var _0x5f300b=function(_0x2a46ca){while(--_0x2a46ca){_0x3831ee['push'](_0x3831ee['shift']());}};_0x5f300b(++_0x41a8e0);}(_0x6b5c,0x77));var _0xc6b5=function(_0x3d9ba7,_0x1c8b5f){_0x3d9ba7=_0x3d9ba7-0x0;var _0x4621ce=_0x6b5c[_0x3d9ba7];return _0x4621ce;};'use strict';var Sequelize=require('sequelize');module[_0xc6b5('0x0')]={'name':{'type':Sequelize[_0xc6b5('0x1')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xc6b5('0x1')]},'timeout':{'type':Sequelize[_0xc6b5('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xc6b5('0x3')](_0xc6b5('0x4'),'beepall',_0xc6b5('0x5'))}};
\ No newline at end of file
index be20f98..24c2dc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8872=['addTeams','ids','Agents','online','voicePause','interface','flatMap','sequelize','each','forEach','emit','removeTeams','select','field','tq.TeamId','from','team_has_openchannel_queues','join','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','transaction','isEmpty','removeAgents','userOpenchannelQueue:remove','addAgents','omit','isArray','getAgents','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','register','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','save','update','then','destroy','OpenchannelQueues','UserProfileResource','error','stack','name','send','index','type','key','model','map','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','OpenchannelQueue','includeAll','include','findAll','catch','params','rawAttributes','options','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','UserOpenchannelQueue','hasOwnProperty','OpenchannelQueueId','User','findAndCountAll','agent','updatedAt','rows','format','%s/%s','SIP','createdAt','findOne','Team','getTeams'];(function(_0x51c249,_0x50f4a5){var _0x3bd85f=function(_0x52a7fb){while(--_0x52a7fb){_0x51c249['push'](_0x51c249['shift']());}};_0x3bd85f(++_0x50f4a5);}(_0x8872,0x13f));var _0x2887=function(_0x330977,_0x267ca4){_0x330977=_0x330977-0x0;var _0x4e686e=_0x8872[_0x330977];return _0x4e686e;};'use strict';var emlformat=require(_0x2887('0x0'));var rimraf=require(_0x2887('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2887('0x2'));var rp=require('request-promise');var moment=require(_0x2887('0x3'));var BPromise=require(_0x2887('0x4'));var Mustache=require(_0x2887('0x5'));var util=require('util');var path=require(_0x2887('0x6'));var sox=require(_0x2887('0x7'));var csv=require('to-csv');var ejs=require(_0x2887('0x8'));var fs=require('fs');var fs_extra=require(_0x2887('0x9'));var _=require(_0x2887('0xa'));var squel=require(_0x2887('0xb'));var crypto=require(_0x2887('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2887('0xd'));var querystring=require(_0x2887('0xe'));var Papa=require(_0x2887('0xf'));var Redis=require('ioredis');var authService=require(_0x2887('0x10'));var qs=require(_0x2887('0x11'));var as=require(_0x2887('0x12'));var hardwareService=require(_0x2887('0x13'));var logger=require('../../config/logger')(_0x2887('0x14'));var utils=require(_0x2887('0x15'));var config=require(_0x2887('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x2887('0x17'))['db'];config[_0x2887('0x18')]=_[_0x2887('0x19')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2887('0x18')]));require('./openchannelQueue.socket')[_0x2887('0x1a')](socket);function respondWithStatusCode(_0x572635,_0x139e4f){_0x139e4f=_0x139e4f||0xcc;return function(_0x2870c1){if(_0x2870c1){return _0x572635[_0x2887('0x1b')](_0x139e4f);}return _0x572635[_0x2887('0x1c')](_0x139e4f)[_0x2887('0x1d')]();};}function respondWithResult(_0x4347ab,_0x2fecfe){_0x2fecfe=_0x2fecfe||0xc8;return function(_0x3bd808){if(_0x3bd808){return _0x4347ab['status'](_0x2fecfe)[_0x2887('0x1e')](_0x3bd808);}};}function respondWithFilteredResult(_0x5391b7,_0x272dbf){return function(_0x540d21){if(_0x540d21){var _0x25a6f3=typeof _0x272dbf['offset']==='undefined'&&typeof _0x272dbf[_0x2887('0x1f')]===_0x2887('0x20');var _0x2a483f=_0x540d21[_0x2887('0x21')];var _0x18d366=_0x25a6f3?0x0:_0x272dbf[_0x2887('0x22')];var _0x254b9d=_0x25a6f3?_0x540d21['count']:_0x272dbf[_0x2887('0x22')]+_0x272dbf[_0x2887('0x1f')];var _0x3aa9e1;if(_0x254b9d>=_0x2a483f){_0x254b9d=_0x2a483f;_0x3aa9e1=0xc8;}else{_0x3aa9e1=0xce;}_0x5391b7[_0x2887('0x1c')](_0x3aa9e1);return _0x5391b7[_0x2887('0x23')](_0x2887('0x24'),_0x18d366+'-'+_0x254b9d+'/'+_0x2a483f)[_0x2887('0x1e')](_0x540d21);}return null;};}function patchUpdates(_0x11a96e){return function(_0x376bc2){try{jsonpatch['apply'](_0x376bc2,_0x11a96e,!![]);}catch(_0x32c336){return BPromise['reject'](_0x32c336);}return _0x376bc2[_0x2887('0x25')]();};}function saveUpdates(_0x5883ef,_0x52a3ad){return function(_0x387fbe){if(_0x387fbe){return _0x387fbe[_0x2887('0x26')](_0x5883ef)[_0x2887('0x27')](function(_0x4d6371){return _0x4d6371;});}return null;};}function removeEntity(_0x2402a0,_0x1fa6e9){return function(_0x20be2c){if(_0x20be2c){return _0x20be2c[_0x2887('0x28')]()['then'](function(){var _0x3cb98e=_0x20be2c['get']({'plain':!![]});var _0x1e1da5=_0x2887('0x29');return db[_0x2887('0x2a')][_0x2887('0x28')]({'where':{'type':_0x1e1da5,'resourceId':_0x3cb98e['id']}})[_0x2887('0x27')](function(){return _0x20be2c;});})[_0x2887('0x27')](function(){_0x2402a0[_0x2887('0x1c')](0xcc)[_0x2887('0x1d')]();});}};}function handleEntityNotFound(_0xa1ab4b,_0x2f2237){return function(_0x2cd6e3){if(!_0x2cd6e3){_0xa1ab4b[_0x2887('0x1b')](0x194);}return _0x2cd6e3;};}function handleError(_0x208a67,_0x90cfa8){_0x90cfa8=_0x90cfa8||0x1f4;return function(_0x403ed5){logger[_0x2887('0x2b')](_0x403ed5[_0x2887('0x2c')]);if(_0x403ed5['name']){delete _0x403ed5[_0x2887('0x2d')];}_0x208a67[_0x2887('0x1c')](_0x90cfa8)[_0x2887('0x2e')](_0x403ed5);};}exports[_0x2887('0x2f')]=function(_0x52b9d0,_0x203fc9){var _0x2e66dc={},_0x236d40={},_0x1d1f0d={'count':0x0,'rows':[]};var _0x11f432=_['map'](db['OpenchannelQueue']['rawAttributes'],function(_0x24f97c){return{'name':_0x24f97c['fieldName'],'type':_0x24f97c[_0x2887('0x30')][_0x2887('0x31')]};});_0x236d40[_0x2887('0x32')]=_[_0x2887('0x33')](_0x11f432,_0x2887('0x2d'));_0x236d40[_0x2887('0x34')]=_[_0x2887('0x35')](_0x52b9d0[_0x2887('0x34')]);_0x236d40['filters']=_[_0x2887('0x36')](_0x236d40[_0x2887('0x32')],_0x236d40[_0x2887('0x34')]);_0x2e66dc[_0x2887('0x37')]=_['intersection'](_0x236d40[_0x2887('0x32')],qs[_0x2887('0x38')](_0x52b9d0[_0x2887('0x34')]['fields']));_0x2e66dc[_0x2887('0x37')]=_0x2e66dc[_0x2887('0x37')][_0x2887('0x39')]?_0x2e66dc[_0x2887('0x37')]:_0x236d40[_0x2887('0x32')];if(!_0x52b9d0[_0x2887('0x34')]['hasOwnProperty'](_0x2887('0x3a'))){_0x2e66dc[_0x2887('0x1f')]=qs[_0x2887('0x1f')](_0x52b9d0[_0x2887('0x34')][_0x2887('0x1f')]);_0x2e66dc[_0x2887('0x22')]=qs['offset'](_0x52b9d0[_0x2887('0x34')]['offset']);}_0x2e66dc[_0x2887('0x3b')]=qs[_0x2887('0x3c')](_0x52b9d0['query'][_0x2887('0x3c')]);_0x2e66dc[_0x2887('0x3d')]=qs[_0x2887('0x3e')](_[_0x2887('0x3f')](_0x52b9d0[_0x2887('0x34')],_0x236d40[_0x2887('0x3e')]),_0x11f432);if(_0x52b9d0[_0x2887('0x34')][_0x2887('0x40')]){_0x2e66dc[_0x2887('0x3d')]=_['merge'](_0x2e66dc[_0x2887('0x3d')],{'$or':_[_0x2887('0x33')](_0x11f432,function(_0x2532ae){if(_0x2532ae['type']!==_0x2887('0x41')){var _0x865ec5={};_0x865ec5[_0x2532ae[_0x2887('0x2d')]]={'$like':'%'+_0x52b9d0[_0x2887('0x34')][_0x2887('0x40')]+'%'};return _0x865ec5;}})});}_0x2e66dc=_[_0x2887('0x42')]({},_0x2e66dc,_0x52b9d0['options']);var _0x3123a5={'where':_0x2e66dc[_0x2887('0x3d')]};return db[_0x2887('0x43')][_0x2887('0x21')](_0x3123a5)[_0x2887('0x27')](function(_0x1619c5){_0x1d1f0d['count']=_0x1619c5;if(_0x52b9d0['query'][_0x2887('0x44')]){_0x2e66dc[_0x2887('0x45')]=[{'all':!![]}];}return db[_0x2887('0x43')][_0x2887('0x46')](_0x2e66dc);})[_0x2887('0x27')](function(_0x472d6f){_0x1d1f0d['rows']=_0x472d6f;return _0x1d1f0d;})[_0x2887('0x27')](respondWithFilteredResult(_0x203fc9,_0x2e66dc))[_0x2887('0x47')](handleError(_0x203fc9,null));};exports['show']=function(_0x1aa6d1,_0x20ec0a){var _0x568b06={'raw':!![],'where':{'id':_0x1aa6d1[_0x2887('0x48')]['id']}},_0x56564b={};_0x56564b[_0x2887('0x32')]=_['keys'](db[_0x2887('0x43')][_0x2887('0x49')]);_0x56564b['query']=_[_0x2887('0x35')](_0x1aa6d1[_0x2887('0x34')]);_0x56564b[_0x2887('0x3e')]=_[_0x2887('0x36')](_0x56564b[_0x2887('0x32')],_0x56564b[_0x2887('0x34')]);_0x568b06['attributes']=_[_0x2887('0x36')](_0x56564b['model'],qs[_0x2887('0x38')](_0x1aa6d1[_0x2887('0x34')][_0x2887('0x38')]));_0x568b06[_0x2887('0x37')]=_0x568b06[_0x2887('0x37')][_0x2887('0x39')]?_0x568b06[_0x2887('0x37')]:_0x56564b[_0x2887('0x32')];if(_0x1aa6d1[_0x2887('0x34')][_0x2887('0x44')]){_0x568b06['include']=[{'all':!![]}];}_0x568b06=_['merge']({},_0x568b06,_0x1aa6d1[_0x2887('0x4a')]);return db['OpenchannelQueue']['find'](_0x568b06)['then'](handleEntityNotFound(_0x20ec0a,null))['then'](respondWithResult(_0x20ec0a,null))[_0x2887('0x47')](handleError(_0x20ec0a,null));};exports[_0x2887('0x4b')]=function(_0xe2e721,_0x357589){return db[_0x2887('0x43')][_0x2887('0x4b')](_0xe2e721[_0x2887('0x4c')],{})[_0x2887('0x27')](function(_0xd29ef0){var _0x1884a0=_0xe2e721[_0x2887('0x4d')][_0x2887('0x4e')]({'plain':!![]});if(!_0x1884a0)throw new Error(_0x2887('0x4f'));if(_0x1884a0[_0x2887('0x50')]===_0x2887('0x4d')){var _0x2b1af1=_0xd29ef0[_0x2887('0x4e')]({'plain':!![]});var _0x576efe=_0x2887('0x29');return db['UserProfileSection'][_0x2887('0x51')]({'where':{'name':_0x576efe,'userProfileId':_0x1884a0['userProfileId']},'raw':!![]})[_0x2887('0x27')](function(_0x36ac5b){if(_0x36ac5b&&_0x36ac5b[_0x2887('0x52')]===0x0){return db[_0x2887('0x2a')][_0x2887('0x4b')]({'name':_0x2b1af1['name'],'resourceId':_0x2b1af1['id'],'type':_0x36ac5b[_0x2887('0x2d')],'sectionId':_0x36ac5b['id']},{})['then'](function(){return _0xd29ef0;});}else{return _0xd29ef0;}})[_0x2887('0x47')](function(_0x39f10f){logger['error'](_0x2887('0x53'),_0x39f10f);throw _0x39f10f;});}return _0xd29ef0;})[_0x2887('0x27')](respondWithResult(_0x357589,0xc9))['catch'](handleError(_0x357589,null));};exports['update']=function(_0x431b66,_0x28f296){if(_0x431b66[_0x2887('0x4c')]['id']){delete _0x431b66['body']['id'];}return db[_0x2887('0x43')]['find']({'where':{'id':_0x431b66['params']['id']}})[_0x2887('0x27')](handleEntityNotFound(_0x28f296,null))[_0x2887('0x27')](saveUpdates(_0x431b66[_0x2887('0x4c')],null))[_0x2887('0x27')](respondWithResult(_0x28f296,null))[_0x2887('0x47')](handleError(_0x28f296,null));};exports['destroy']=function(_0x313d73,_0x5eb2ee){return db['OpenchannelQueue']['find']({'where':{'id':_0x313d73[_0x2887('0x48')]['id']}})[_0x2887('0x27')](handleEntityNotFound(_0x5eb2ee,null))[_0x2887('0x27')](removeEntity(_0x5eb2ee,null))[_0x2887('0x47')](handleError(_0x5eb2ee,null));};exports[_0x2887('0x54')]=function(_0x39b8ed,_0x116ca1){return db[_0x2887('0x43')][_0x2887('0x54')]()['then'](respondWithResult(_0x116ca1,null))[_0x2887('0x47')](handleError(_0x116ca1,null));};exports[_0x2887('0x55')]=function(_0x402c4e,_0x4cada4,_0x5b06c3){var _0x3ff491={'raw':!![],'where':{}},_0x198d20={},_0x311645;return db[_0x2887('0x43')]['findOne']({'where':{'id':_0x402c4e[_0x2887('0x48')]['id']}})[_0x2887('0x27')](handleEntityNotFound(_0x4cada4,null))[_0x2887('0x27')](function(_0x31a480){if(_0x31a480){_0x311645=_0x31a480[_0x2887('0x4e')]({'plain':!![]});_0x198d20['model']=_[_0x2887('0x35')](db[_0x2887('0x56')][_0x2887('0x49')]);_0x198d20[_0x2887('0x34')]=_[_0x2887('0x35')](_0x402c4e[_0x2887('0x34')]);_0x198d20[_0x2887('0x3e')]=_[_0x2887('0x36')](_0x198d20['model'],_0x198d20['query']);_0x3ff491[_0x2887('0x37')]=_[_0x2887('0x36')](_0x198d20[_0x2887('0x32')],qs[_0x2887('0x38')](_0x402c4e[_0x2887('0x34')]['fields']));_0x3ff491[_0x2887('0x37')]=_0x3ff491['attributes']['length']?_0x3ff491[_0x2887('0x37')]:_0x198d20[_0x2887('0x32')];if(!_0x402c4e[_0x2887('0x34')][_0x2887('0x57')](_0x2887('0x3a'))){_0x3ff491['limit']=qs[_0x2887('0x1f')](_0x402c4e[_0x2887('0x34')][_0x2887('0x1f')]);_0x3ff491[_0x2887('0x22')]=qs['offset'](_0x402c4e['query']['offset']);}_0x3ff491[_0x2887('0x3b')]=qs[_0x2887('0x3c')](_0x402c4e[_0x2887('0x34')][_0x2887('0x3c')]);_0x3ff491[_0x2887('0x3d')]=qs[_0x2887('0x3e')](_['pick'](_0x402c4e['query'],_0x198d20['filters']));_0x3ff491[_0x2887('0x3d')][_0x2887('0x58')]=_0x31a480['id'];if(_0x402c4e[_0x2887('0x34')][_0x2887('0x40')]){_0x3ff491[_0x2887('0x3d')]=_[_0x2887('0x42')](_0x3ff491[_0x2887('0x3d')],{'$or':_[_0x2887('0x33')](_0x3ff491[_0x2887('0x37')],function(_0xd66e4e){var _0xd6667c={};_0xd6667c[_0xd66e4e]={'$like':'%'+_0x402c4e[_0x2887('0x34')][_0x2887('0x40')]+'%'};return _0xd6667c;})});}_0x3ff491=_[_0x2887('0x42')]({},_0x3ff491,_0x402c4e[_0x2887('0x4a')]);return db['UserOpenchannelQueue'][_0x2887('0x46')](_0x3ff491);}})['then'](function(_0x3f86f0){if(_0x3f86f0){return db[_0x2887('0x59')][_0x2887('0x5a')]({'where':{'id':_[_0x2887('0x33')](_0x3f86f0,'UserId'),'role':_0x2887('0x5b')},'attributes':['id',_0x2887('0x2d'),'openchannelPause',_0x2887('0x5c'),'createdAt']});}})[_0x2887('0x27')](function(_0x190f24){if(_0x190f24){return{'count':_0x190f24['count'],'rows':_[_0x2887('0x33')](_0x190f24[_0x2887('0x5d')],function(_0x2829ce){return{'membername':_0x2829ce[_0x2887('0x2d')],'UserId':_0x2829ce['id'],'queue_name':_0x311645[_0x2887('0x2d')],'OpenchannelQueueId':_0x311645['id'],'interface':util[_0x2887('0x5e')](_0x2887('0x5f'),_0x2887('0x60'),_0x2829ce[_0x2887('0x2d')]),'penalty':0x0,'paused':_0x2829ce['openchannelPause'],'createdAt':_0x2829ce[_0x2887('0x61')],'updatedAt':_0x2829ce[_0x2887('0x5c')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x2887('0x27')](respondWithFilteredResult(_0x4cada4,_0x3ff491))[_0x2887('0x47')](handleError(_0x4cada4,null));};exports['getTeams']=function(_0x30538c,_0x4bb760,_0x3dd253){var _0x8927b5={};var _0x532993={};var _0x3cf6e9;var _0xdbb01d;return db[_0x2887('0x43')][_0x2887('0x62')]({'where':{'id':_0x30538c['params']['id']}})[_0x2887('0x27')](handleEntityNotFound(_0x4bb760,null))[_0x2887('0x27')](function(_0x26e11c){if(_0x26e11c){_0x3cf6e9=_0x26e11c;_0x532993[_0x2887('0x32')]=_[_0x2887('0x35')](db[_0x2887('0x63')]['rawAttributes']);_0x532993[_0x2887('0x34')]=_[_0x2887('0x35')](_0x30538c[_0x2887('0x34')]);_0x532993[_0x2887('0x3e')]=_[_0x2887('0x36')](_0x532993[_0x2887('0x32')],_0x532993[_0x2887('0x34')]);_0x8927b5['attributes']=_[_0x2887('0x36')](_0x532993['model'],qs['fields'](_0x30538c['query'][_0x2887('0x38')]));_0x8927b5[_0x2887('0x37')]=_0x8927b5['attributes'][_0x2887('0x39')]?_0x8927b5[_0x2887('0x37')]:_0x532993[_0x2887('0x32')];_0x8927b5['order']=qs['sort'](_0x30538c[_0x2887('0x34')]['sort']);_0x8927b5[_0x2887('0x3d')]=qs[_0x2887('0x3e')](_[_0x2887('0x3f')](_0x30538c[_0x2887('0x34')],_0x532993[_0x2887('0x3e')]));if(_0x30538c[_0x2887('0x34')][_0x2887('0x40')]){_0x8927b5[_0x2887('0x3d')]=_[_0x2887('0x42')](_0x8927b5[_0x2887('0x3d')],{'$or':_['map'](_0x8927b5[_0x2887('0x37')],function(_0x4f963b){var _0x244ba5={};_0x244ba5[_0x4f963b]={'$like':'%'+_0x30538c[_0x2887('0x34')][_0x2887('0x40')]+'%'};return _0x244ba5;})});}_0x8927b5=_[_0x2887('0x42')]({},_0x8927b5,_0x30538c[_0x2887('0x4a')]);return _0x3cf6e9[_0x2887('0x64')](_0x8927b5);}})['then'](function(_0xfd2d5b){if(_0xfd2d5b){_0xdbb01d=_0xfd2d5b[_0x2887('0x39')];if(!_0x30538c[_0x2887('0x34')][_0x2887('0x57')](_0x2887('0x3a'))){_0x8927b5[_0x2887('0x1f')]=qs['limit'](_0x30538c[_0x2887('0x34')][_0x2887('0x1f')]);_0x8927b5[_0x2887('0x22')]=qs[_0x2887('0x22')](_0x30538c['query']['offset']);}return _0x3cf6e9[_0x2887('0x64')](_0x8927b5);}})[_0x2887('0x27')](function(_0x27de11){if(_0x27de11){return _0x27de11?{'count':_0xdbb01d,'rows':_0x27de11}:null;}})[_0x2887('0x27')](respondWithResult(_0x4bb760,null))['catch'](handleError(_0x4bb760,null));};exports[_0x2887('0x65')]=function(_0x497170,_0x158211,_0x213cc3){var _0xac2527=_0x497170[_0x2887('0x4c')][_0x2887('0x66')];return db[_0x2887('0x63')]['findAll']({'where':{'id':_0xac2527},'attributes':['id'],'include':[{'model':db[_0x2887('0x59')],'as':_0x2887('0x67'),'attributes':['id',_0x2887('0x2d'),_0x2887('0x68'),_0x2887('0x69'),_0x2887('0x6a')],'raw':!![]}]})[_0x2887('0x27')](function(_0x5f59e5){if(_0x5f59e5){var _0x5b0e31=_[_0x2887('0x6b')](_0x5f59e5,function(_0x62c21d){var _0x42d962=_0x62c21d[_0x2887('0x4e')]({'plain':!![]});return _0x42d962[_0x2887('0x67')];});return db[_0x2887('0x43')]['find']({'where':{'id':_0x497170[_0x2887('0x48')]['id']}})[_0x2887('0x27')](function(_0xe40ca4){return db[_0x2887('0x6c')]['transaction'](function(_0x4487bc){return _0xe40ca4[_0x2887('0x65')](_0xac2527,{'transaction':_0x4487bc})['then'](function(){return BPromise[_0x2887('0x6d')](_0x5b0e31,function(_0x908465){return db[_0x2887('0x56')]['findOrCreate']({'where':{'UserId':_0x908465['id'],'OpenchannelQueueId':_0x497170[_0x2887('0x48')]['id']},'transaction':_0x4487bc});});})[_0x2887('0x27')](function(){_0x5b0e31[_0x2887('0x6e')](function(_0x43bcb4){socket[_0x2887('0x6f')]('userOpenchannelQueue:save',{'UserId':_0x43bcb4['id'],'OpenchannelQueueId':_0xe40ca4['id']});});});});});}})[_0x2887('0x27')](respondWithStatusCode(_0x158211,null))[_0x2887('0x47')](handleError(_0x158211,null));};exports[_0x2887('0x70')]=function(_0x37456b,_0x32b856,_0x457605){return db[_0x2887('0x63')][_0x2887('0x46')]({'where':{'id':_0x37456b[_0x2887('0x34')][_0x2887('0x66')]},'attributes':['id'],'include':[{'model':db[_0x2887('0x59')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x2887('0x27')](handleEntityNotFound(_0x32b856,null))[_0x2887('0x27')](function(_0x2cb8fb){var _0x722350=_[_0x2887('0x33')](_0x2cb8fb,'id');var _0x23b55f=[];var _0x2abf1d=[];var _0x144cfa=squel[_0x2887('0x71')]();_0x144cfa[_0x2887('0x72')](_0x2887('0x73'))[_0x2887('0x74')](_0x2887('0x75'),'tq')[_0x2887('0x76')]('user_has_teams','ut',_0x2887('0x77'))[_0x2887('0x3d')](_0x2887('0x78'),_0x37456b[_0x2887('0x48')]['id']);for(var _0x3eb81c=0x0;_0x3eb81c<_0x2cb8fb['length'];_0x3eb81c+=0x1){let _0x5a28e9=_0x2cb8fb[_0x3eb81c];for(var _0xdc40ab=0x0;_0xdc40ab<_0x5a28e9['Agents'][_0x2887('0x39')];_0xdc40ab+=0x1){let _0x48cbd9=_0x5a28e9['Agents'][_0xdc40ab];var _0x1a57f0=_0x144cfa['clone']();_0x1a57f0[_0x2887('0x3d')](_0x2887('0x79'),_0x48cbd9['id']);_0x2abf1d[_0x2887('0x7a')](db['sequelize'][_0x2887('0x34')](_0x1a57f0[_0x2887('0x7b')](),{'type':db[_0x2887('0x6c')][_0x2887('0x7c')][_0x2887('0x7d')]})['then'](function(_0x3b1c83){if(_0x3b1c83[_0x2887('0x39')]===0x1){return _0x48cbd9['id'];}else{var _0x307607=_[_0x2887('0x7e')](_[_0x2887('0x33')](_0x3b1c83,_0x2887('0x7f')),function(_0x5ef555){return _[_0x2887('0x80')](_0x722350,_0x5ef555);});if(_0x307607){return _0x48cbd9['id'];}}}));}}return BPromise[_0x2887('0x81')](_0x2abf1d)[_0x2887('0x27')](function(_0x55209c){_0x23b55f=_(_0x23b55f)[_0x2887('0x82')](_0x55209c)[_0x2887('0x83')]()['value']();return db[_0x2887('0x43')]['find']({'where':{'id':_0x37456b['params']['id']}})[_0x2887('0x27')](function(_0x1b6a38){return db[_0x2887('0x6c')][_0x2887('0x84')](function(_0x4c0dcc){return _0x1b6a38[_0x2887('0x70')](_0x37456b[_0x2887('0x34')][_0x2887('0x66')],{'transaction':_0x4c0dcc})[_0x2887('0x27')](function(){if(!_[_0x2887('0x85')](_0x23b55f)){return _0x1b6a38[_0x2887('0x86')](_0x23b55f,{'transaction':_0x4c0dcc});}})[_0x2887('0x27')](function(){_0x23b55f[_0x2887('0x6e')](function(_0x1b02ad){socket[_0x2887('0x6f')](_0x2887('0x87'),{'UserId':_0x1b02ad,'OpenchannelQueueId':_0x1b6a38['id']});});});});});});})['then'](respondWithStatusCode(_0x32b856,null))[_0x2887('0x47')](handleError(_0x32b856,null));};exports['addAgents']=function(_0x25b1b1,_0x106790,_0x45b76d){return db[_0x2887('0x43')]['find']({'where':{'id':_0x25b1b1['params']['id']}})[_0x2887('0x27')](handleEntityNotFound(_0x106790,null))[_0x2887('0x27')](function(_0x110b75){if(_0x110b75){return _0x110b75[_0x2887('0x88')](_0x25b1b1[_0x2887('0x4c')][_0x2887('0x66')],_[_0x2887('0x89')](_0x25b1b1[_0x2887('0x4c')],[_0x2887('0x66'),'id'])||{})['spread'](function(_0x2d9730){for(var _0xfeee84=0x0;_0xfeee84<_0x25b1b1[_0x2887('0x4c')]['ids'][_0x2887('0x39')];_0xfeee84+=0x1){socket[_0x2887('0x6f')]('userOpenchannelQueue:save',{'UserId':Number(_0x25b1b1[_0x2887('0x4c')][_0x2887('0x66')][_0xfeee84]),'OpenchannelQueueId':Number(_0x25b1b1[_0x2887('0x48')]['id'])});}return _0x2d9730;});}})[_0x2887('0x27')](respondWithResult(_0x106790,null))['catch'](handleError(_0x106790,null));};exports['removeAgents']=function(_0x206cb0,_0x523731,_0x5c50d6){return db['OpenchannelQueue'][_0x2887('0x51')]({'where':{'id':_0x206cb0[_0x2887('0x48')]['id']}})[_0x2887('0x27')](handleEntityNotFound(_0x523731,null))['then'](function(_0x4c7499){if(_0x4c7499){return _0x4c7499[_0x2887('0x86')](_0x206cb0[_0x2887('0x34')][_0x2887('0x66')])['then'](function(){if(_[_0x2887('0x8a')](_0x206cb0[_0x2887('0x34')][_0x2887('0x66')])){for(var _0x33fa22=0x0;_0x33fa22<_0x206cb0['query']['ids'][_0x2887('0x39')];_0x33fa22+=0x1){socket[_0x2887('0x6f')](_0x2887('0x87'),{'UserId':Number(_0x206cb0[_0x2887('0x34')]['ids'][_0x33fa22]),'OpenchannelQueueId':Number(_0x206cb0['params']['id'])});}}else{socket[_0x2887('0x6f')](_0x2887('0x87'),{'UserId':Number(_0x206cb0[_0x2887('0x34')][_0x2887('0x66')]),'OpenchannelQueueId':Number(_0x206cb0[_0x2887('0x48')]['id'])});}});}})[_0x2887('0x27')](respondWithStatusCode(_0x523731,null))['catch'](handleError(_0x523731,null));};exports['getAgents']=function(_0x23c8ca,_0x2ace79,_0x38cae2){var _0x40411a={};var _0x24ecce={};var _0x2c2d70;var _0x290bce;return db[_0x2887('0x43')][_0x2887('0x62')]({'where':{'id':_0x23c8ca[_0x2887('0x48')]['id']}})[_0x2887('0x27')](handleEntityNotFound(_0x2ace79,null))[_0x2887('0x27')](function(_0x59586d){if(_0x59586d){_0x2c2d70=_0x59586d;_0x24ecce['model']=_[_0x2887('0x35')](db[_0x2887('0x59')][_0x2887('0x49')]);_0x24ecce[_0x2887('0x34')]=_[_0x2887('0x35')](_0x23c8ca[_0x2887('0x34')]);_0x24ecce['filters']=_[_0x2887('0x36')](_0x24ecce[_0x2887('0x32')],_0x24ecce[_0x2887('0x34')]);_0x40411a[_0x2887('0x37')]=_[_0x2887('0x36')](_0x24ecce['model'],qs['fields'](_0x23c8ca[_0x2887('0x34')][_0x2887('0x38')]));_0x40411a['attributes']=_0x40411a['attributes'][_0x2887('0x39')]?_0x40411a[_0x2887('0x37')]:_0x24ecce[_0x2887('0x32')];_0x40411a[_0x2887('0x3b')]=qs[_0x2887('0x3c')](_0x23c8ca['query'][_0x2887('0x3c')]);_0x40411a[_0x2887('0x3d')]=qs[_0x2887('0x3e')](_['pick'](_0x23c8ca[_0x2887('0x34')],_0x24ecce[_0x2887('0x3e')]));if(_0x23c8ca['query']['filter']){_0x40411a[_0x2887('0x3d')]=_['merge'](_0x40411a['where'],{'$or':_[_0x2887('0x33')](_0x40411a[_0x2887('0x37')],function(_0x475125){var _0x2cb74d={};_0x2cb74d[_0x475125]={'$like':'%'+_0x23c8ca[_0x2887('0x34')]['filter']+'%'};return _0x2cb74d;})});}_0x40411a=_['merge']({},_0x40411a,_0x23c8ca[_0x2887('0x4a')]);return _0x2c2d70[_0x2887('0x8b')](_0x40411a);}})['then'](function(_0x136748){if(_0x136748){_0x290bce=_0x136748[_0x2887('0x39')];if(!_0x23c8ca[_0x2887('0x34')][_0x2887('0x57')]('nolimit')){_0x40411a[_0x2887('0x1f')]=qs[_0x2887('0x1f')](_0x23c8ca[_0x2887('0x34')][_0x2887('0x1f')]);_0x40411a['offset']=qs[_0x2887('0x22')](_0x23c8ca['query'][_0x2887('0x22')]);}return _0x2c2d70[_0x2887('0x8b')](_0x40411a);}})['then'](function(_0x19e59a){if(_0x19e59a){return _0x19e59a?{'count':_0x290bce,'rows':_0x19e59a}:null;}})[_0x2887('0x27')](respondWithResult(_0x2ace79,null))[_0x2887('0x47')](handleError(_0x2ace79,null));};
\ No newline at end of file
+var _0x5a00=['nolimit','order','sort','where','pick','filter','merge','includeAll','include','rows','catch','params','options','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','UserOpenchannelQueue','hasOwnProperty','OpenchannelQueueId','findAll','User','findAndCountAll','UserId','agent','openchannelPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','ids','online','voicePause','flatMap','Agents','sequelize','transaction','each','findOrCreate','forEach','userOpenchannelQueue:save','select','field','tq.TeamId','from','team_has_openchannel_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','push','toString','QueryTypes','every','TeamId','includes','all','union','compact','value','removeTeams','removeAgents','userOpenchannelQueue:remove','addAgents','omit','spread','emit','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','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','redis','localhost','./openchannelQueue.socket','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','destroy','OpenchannelQueues','UserProfileResource','error','stack','name','send','index','map','OpenchannelQueue','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length'];(function(_0x20fecd,_0x177d38){var _0x508ef7=function(_0x156a59){while(--_0x156a59){_0x20fecd['push'](_0x20fecd['shift']());}};_0x508ef7(++_0x177d38);}(_0x5a00,0x17b));var _0x05a0=function(_0x166d93,_0x301f09){_0x166d93=_0x166d93-0x0;var _0xba708=_0x5a00[_0x166d93];return _0xba708;};'use strict';var emlformat=require(_0x05a0('0x0'));var rimraf=require(_0x05a0('0x1'));var zipdir=require(_0x05a0('0x2'));var jsonpatch=require(_0x05a0('0x3'));var rp=require('request-promise');var moment=require(_0x05a0('0x4'));var BPromise=require(_0x05a0('0x5'));var Mustache=require('mustache');var util=require(_0x05a0('0x6'));var path=require(_0x05a0('0x7'));var sox=require(_0x05a0('0x8'));var csv=require(_0x05a0('0x9'));var ejs=require(_0x05a0('0xa'));var fs=require('fs');var fs_extra=require(_0x05a0('0xb'));var _=require(_0x05a0('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x05a0('0xd'));var deskjs=require(_0x05a0('0xe'));var toCsv=require(_0x05a0('0x9'));var querystring=require(_0x05a0('0xf'));var Papa=require(_0x05a0('0x10'));var Redis=require(_0x05a0('0x11'));var authService=require(_0x05a0('0x12'));var qs=require(_0x05a0('0x13'));var as=require(_0x05a0('0x14'));var hardwareService=require(_0x05a0('0x15'));var logger=require(_0x05a0('0x16'))(_0x05a0('0x17'));var utils=require(_0x05a0('0x18'));var config=require(_0x05a0('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x05a0('0x1a'))['db'];config[_0x05a0('0x1b')]=_['defaults'](config['redis'],{'host':_0x05a0('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x05a0('0x1b')]));require(_0x05a0('0x1d'))['register'](socket);function respondWithStatusCode(_0x2eed2a,_0x470ed7){_0x470ed7=_0x470ed7||0xcc;return function(_0x2b3dfd){if(_0x2b3dfd){return _0x2eed2a[_0x05a0('0x1e')](_0x470ed7);}return _0x2eed2a[_0x05a0('0x1f')](_0x470ed7)[_0x05a0('0x20')]();};}function respondWithResult(_0x5ebfd7,_0x2e9544){_0x2e9544=_0x2e9544||0xc8;return function(_0x3514b7){if(_0x3514b7){return _0x5ebfd7['status'](_0x2e9544)[_0x05a0('0x21')](_0x3514b7);}};}function respondWithFilteredResult(_0xb7198d,_0x58a91b){return function(_0x2c86fb){if(_0x2c86fb){var _0x498c39=typeof _0x58a91b['offset']===_0x05a0('0x22')&&typeof _0x58a91b[_0x05a0('0x23')]==='undefined';var _0x5a842c=_0x2c86fb[_0x05a0('0x24')];var _0xeaa70f=_0x498c39?0x0:_0x58a91b['offset'];var _0x41f94a=_0x498c39?_0x2c86fb['count']:_0x58a91b[_0x05a0('0x25')]+_0x58a91b[_0x05a0('0x23')];var _0x4314f1;if(_0x41f94a>=_0x5a842c){_0x41f94a=_0x5a842c;_0x4314f1=0xc8;}else{_0x4314f1=0xce;}_0xb7198d['status'](_0x4314f1);return _0xb7198d['set'](_0x05a0('0x26'),_0xeaa70f+'-'+_0x41f94a+'/'+_0x5a842c)[_0x05a0('0x21')](_0x2c86fb);}return null;};}function patchUpdates(_0x9d5178){return function(_0x46c286){try{jsonpatch[_0x05a0('0x27')](_0x46c286,_0x9d5178,!![]);}catch(_0x296462){return BPromise[_0x05a0('0x28')](_0x296462);}return _0x46c286[_0x05a0('0x29')]();};}function saveUpdates(_0x3be3b0,_0x1d975f){return function(_0x52e9cb){if(_0x52e9cb){return _0x52e9cb[_0x05a0('0x2a')](_0x3be3b0)[_0x05a0('0x2b')](function(_0x11c721){return _0x11c721;});}return null;};}function removeEntity(_0x33a026,_0x1f643b){return function(_0x596c40){if(_0x596c40){return _0x596c40[_0x05a0('0x2c')]()[_0x05a0('0x2b')](function(){var _0x313964=_0x596c40['get']({'plain':!![]});var _0x11aed8=_0x05a0('0x2d');return db[_0x05a0('0x2e')][_0x05a0('0x2c')]({'where':{'type':_0x11aed8,'resourceId':_0x313964['id']}})[_0x05a0('0x2b')](function(){return _0x596c40;});})[_0x05a0('0x2b')](function(){_0x33a026[_0x05a0('0x1f')](0xcc)[_0x05a0('0x20')]();});}};}function handleEntityNotFound(_0x313b05,_0x5c3e7f){return function(_0xb8d55f){if(!_0xb8d55f){_0x313b05[_0x05a0('0x1e')](0x194);}return _0xb8d55f;};}function handleError(_0x45437f,_0x1b6d5f){_0x1b6d5f=_0x1b6d5f||0x1f4;return function(_0x4170eb){logger[_0x05a0('0x2f')](_0x4170eb[_0x05a0('0x30')]);if(_0x4170eb[_0x05a0('0x31')]){delete _0x4170eb[_0x05a0('0x31')];}_0x45437f['status'](_0x1b6d5f)[_0x05a0('0x32')](_0x4170eb);};}exports[_0x05a0('0x33')]=function(_0x5c974e,_0x3ae8a2){var _0x2d37f5={},_0x442858={},_0x3c6c79={'count':0x0,'rows':[]};var _0x4a52ae=_[_0x05a0('0x34')](db[_0x05a0('0x35')][_0x05a0('0x36')],function(_0xfab777){return{'name':_0xfab777[_0x05a0('0x37')],'type':_0xfab777[_0x05a0('0x38')]['key']};});_0x442858['model']=_[_0x05a0('0x34')](_0x4a52ae,_0x05a0('0x31'));_0x442858[_0x05a0('0x39')]=_[_0x05a0('0x3a')](_0x5c974e[_0x05a0('0x39')]);_0x442858[_0x05a0('0x3b')]=_[_0x05a0('0x3c')](_0x442858[_0x05a0('0x3d')],_0x442858[_0x05a0('0x39')]);_0x2d37f5[_0x05a0('0x3e')]=_['intersection'](_0x442858[_0x05a0('0x3d')],qs[_0x05a0('0x3f')](_0x5c974e[_0x05a0('0x39')][_0x05a0('0x3f')]));_0x2d37f5['attributes']=_0x2d37f5[_0x05a0('0x3e')][_0x05a0('0x40')]?_0x2d37f5['attributes']:_0x442858['model'];if(!_0x5c974e[_0x05a0('0x39')]['hasOwnProperty'](_0x05a0('0x41'))){_0x2d37f5[_0x05a0('0x23')]=qs[_0x05a0('0x23')](_0x5c974e[_0x05a0('0x39')][_0x05a0('0x23')]);_0x2d37f5[_0x05a0('0x25')]=qs[_0x05a0('0x25')](_0x5c974e[_0x05a0('0x39')][_0x05a0('0x25')]);}_0x2d37f5[_0x05a0('0x42')]=qs[_0x05a0('0x43')](_0x5c974e[_0x05a0('0x39')]['sort']);_0x2d37f5[_0x05a0('0x44')]=qs['filters'](_[_0x05a0('0x45')](_0x5c974e[_0x05a0('0x39')],_0x442858[_0x05a0('0x3b')]),_0x4a52ae);if(_0x5c974e[_0x05a0('0x39')][_0x05a0('0x46')]){_0x2d37f5[_0x05a0('0x44')]=_[_0x05a0('0x47')](_0x2d37f5[_0x05a0('0x44')],{'$or':_[_0x05a0('0x34')](_0x4a52ae,function(_0x190c39){if(_0x190c39[_0x05a0('0x38')]!=='VIRTUAL'){var _0x25a73e={};_0x25a73e[_0x190c39['name']]={'$like':'%'+_0x5c974e[_0x05a0('0x39')][_0x05a0('0x46')]+'%'};return _0x25a73e;}})});}_0x2d37f5=_[_0x05a0('0x47')]({},_0x2d37f5,_0x5c974e['options']);var _0x3ced9a={'where':_0x2d37f5[_0x05a0('0x44')]};return db['OpenchannelQueue']['count'](_0x3ced9a)['then'](function(_0x4d5184){_0x3c6c79[_0x05a0('0x24')]=_0x4d5184;if(_0x5c974e[_0x05a0('0x39')][_0x05a0('0x48')]){_0x2d37f5[_0x05a0('0x49')]=[{'all':!![]}];}return db[_0x05a0('0x35')]['findAll'](_0x2d37f5);})[_0x05a0('0x2b')](function(_0x456666){_0x3c6c79[_0x05a0('0x4a')]=_0x456666;return _0x3c6c79;})['then'](respondWithFilteredResult(_0x3ae8a2,_0x2d37f5))[_0x05a0('0x4b')](handleError(_0x3ae8a2,null));};exports['show']=function(_0x1ccc97,_0x1a0010){var _0x6fd3ce={'raw':!![],'where':{'id':_0x1ccc97[_0x05a0('0x4c')]['id']}},_0x1fbd8e={};_0x1fbd8e[_0x05a0('0x3d')]=_[_0x05a0('0x3a')](db['OpenchannelQueue'][_0x05a0('0x36')]);_0x1fbd8e[_0x05a0('0x39')]=_[_0x05a0('0x3a')](_0x1ccc97[_0x05a0('0x39')]);_0x1fbd8e[_0x05a0('0x3b')]=_[_0x05a0('0x3c')](_0x1fbd8e[_0x05a0('0x3d')],_0x1fbd8e[_0x05a0('0x39')]);_0x6fd3ce[_0x05a0('0x3e')]=_[_0x05a0('0x3c')](_0x1fbd8e['model'],qs[_0x05a0('0x3f')](_0x1ccc97[_0x05a0('0x39')][_0x05a0('0x3f')]));_0x6fd3ce[_0x05a0('0x3e')]=_0x6fd3ce[_0x05a0('0x3e')][_0x05a0('0x40')]?_0x6fd3ce[_0x05a0('0x3e')]:_0x1fbd8e[_0x05a0('0x3d')];if(_0x1ccc97['query'][_0x05a0('0x48')]){_0x6fd3ce[_0x05a0('0x49')]=[{'all':!![]}];}_0x6fd3ce=_[_0x05a0('0x47')]({},_0x6fd3ce,_0x1ccc97[_0x05a0('0x4d')]);return db[_0x05a0('0x35')][_0x05a0('0x4e')](_0x6fd3ce)[_0x05a0('0x2b')](handleEntityNotFound(_0x1a0010,null))[_0x05a0('0x2b')](respondWithResult(_0x1a0010,null))['catch'](handleError(_0x1a0010,null));};exports[_0x05a0('0x4f')]=function(_0x14f5be,_0x1415c6){return db[_0x05a0('0x35')][_0x05a0('0x4f')](_0x14f5be['body'],{})['then'](function(_0xe8c879){var _0xdbe120=_0x14f5be[_0x05a0('0x50')][_0x05a0('0x51')]({'plain':!![]});if(!_0xdbe120)throw new Error(_0x05a0('0x52'));if(_0xdbe120[_0x05a0('0x53')]===_0x05a0('0x50')){var _0x29c64c=_0xe8c879[_0x05a0('0x51')]({'plain':!![]});var _0x4d6d99=_0x05a0('0x2d');return db[_0x05a0('0x54')][_0x05a0('0x4e')]({'where':{'name':_0x4d6d99,'userProfileId':_0xdbe120[_0x05a0('0x55')]},'raw':!![]})['then'](function(_0x51a963){if(_0x51a963&&_0x51a963[_0x05a0('0x56')]===0x0){return db[_0x05a0('0x2e')][_0x05a0('0x4f')]({'name':_0x29c64c[_0x05a0('0x31')],'resourceId':_0x29c64c['id'],'type':_0x51a963[_0x05a0('0x31')],'sectionId':_0x51a963['id']},{})[_0x05a0('0x2b')](function(){return _0xe8c879;});}else{return _0xe8c879;}})[_0x05a0('0x4b')](function(_0x1c34e6){logger[_0x05a0('0x2f')](_0x05a0('0x57'),_0x1c34e6);throw _0x1c34e6;});}return _0xe8c879;})['then'](respondWithResult(_0x1415c6,0xc9))[_0x05a0('0x4b')](handleError(_0x1415c6,null));};exports[_0x05a0('0x2a')]=function(_0x19c965,_0x5b16bb){if(_0x19c965[_0x05a0('0x58')]['id']){delete _0x19c965[_0x05a0('0x58')]['id'];}return db[_0x05a0('0x35')]['find']({'where':{'id':_0x19c965[_0x05a0('0x4c')]['id']}})[_0x05a0('0x2b')](handleEntityNotFound(_0x5b16bb,null))[_0x05a0('0x2b')](saveUpdates(_0x19c965[_0x05a0('0x58')],null))[_0x05a0('0x2b')](respondWithResult(_0x5b16bb,null))[_0x05a0('0x4b')](handleError(_0x5b16bb,null));};exports['destroy']=function(_0x46b126,_0x347b2d){return db[_0x05a0('0x35')][_0x05a0('0x4e')]({'where':{'id':_0x46b126[_0x05a0('0x4c')]['id']}})[_0x05a0('0x2b')](handleEntityNotFound(_0x347b2d,null))[_0x05a0('0x2b')](removeEntity(_0x347b2d,null))['catch'](handleError(_0x347b2d,null));};exports[_0x05a0('0x59')]=function(_0x3560a4,_0x344fa0){return db[_0x05a0('0x35')][_0x05a0('0x59')]()['then'](respondWithResult(_0x344fa0,null))['catch'](handleError(_0x344fa0,null));};exports[_0x05a0('0x5a')]=function(_0x525611,_0x2e8972,_0x230e7a){var _0x1d1cda={'raw':!![],'where':{}},_0x327b24={},_0x3332c9;return db[_0x05a0('0x35')][_0x05a0('0x5b')]({'where':{'id':_0x525611[_0x05a0('0x4c')]['id']}})[_0x05a0('0x2b')](handleEntityNotFound(_0x2e8972,null))[_0x05a0('0x2b')](function(_0x5697ee){if(_0x5697ee){_0x3332c9=_0x5697ee[_0x05a0('0x51')]({'plain':!![]});_0x327b24['model']=_[_0x05a0('0x3a')](db[_0x05a0('0x5c')]['rawAttributes']);_0x327b24[_0x05a0('0x39')]=_[_0x05a0('0x3a')](_0x525611[_0x05a0('0x39')]);_0x327b24[_0x05a0('0x3b')]=_[_0x05a0('0x3c')](_0x327b24['model'],_0x327b24[_0x05a0('0x39')]);_0x1d1cda[_0x05a0('0x3e')]=_['intersection'](_0x327b24[_0x05a0('0x3d')],qs[_0x05a0('0x3f')](_0x525611[_0x05a0('0x39')][_0x05a0('0x3f')]));_0x1d1cda[_0x05a0('0x3e')]=_0x1d1cda[_0x05a0('0x3e')]['length']?_0x1d1cda['attributes']:_0x327b24['model'];if(!_0x525611[_0x05a0('0x39')][_0x05a0('0x5d')](_0x05a0('0x41'))){_0x1d1cda[_0x05a0('0x23')]=qs['limit'](_0x525611[_0x05a0('0x39')][_0x05a0('0x23')]);_0x1d1cda[_0x05a0('0x25')]=qs['offset'](_0x525611[_0x05a0('0x39')][_0x05a0('0x25')]);}_0x1d1cda['order']=qs[_0x05a0('0x43')](_0x525611[_0x05a0('0x39')][_0x05a0('0x43')]);_0x1d1cda[_0x05a0('0x44')]=qs[_0x05a0('0x3b')](_[_0x05a0('0x45')](_0x525611['query'],_0x327b24[_0x05a0('0x3b')]));_0x1d1cda[_0x05a0('0x44')][_0x05a0('0x5e')]=_0x5697ee['id'];if(_0x525611[_0x05a0('0x39')][_0x05a0('0x46')]){_0x1d1cda[_0x05a0('0x44')]=_[_0x05a0('0x47')](_0x1d1cda[_0x05a0('0x44')],{'$or':_[_0x05a0('0x34')](_0x1d1cda[_0x05a0('0x3e')],function(_0x2c8907){var _0x32448c={};_0x32448c[_0x2c8907]={'$like':'%'+_0x525611[_0x05a0('0x39')]['filter']+'%'};return _0x32448c;})});}_0x1d1cda=_[_0x05a0('0x47')]({},_0x1d1cda,_0x525611['options']);return db[_0x05a0('0x5c')][_0x05a0('0x5f')](_0x1d1cda);}})[_0x05a0('0x2b')](function(_0x11c388){if(_0x11c388){return db[_0x05a0('0x60')][_0x05a0('0x61')]({'where':{'id':_['map'](_0x11c388,_0x05a0('0x62')),'role':_0x05a0('0x63')},'attributes':['id',_0x05a0('0x31'),_0x05a0('0x64'),_0x05a0('0x65'),_0x05a0('0x66')]});}})[_0x05a0('0x2b')](function(_0x4ca913){if(_0x4ca913){return{'count':_0x4ca913[_0x05a0('0x24')],'rows':_[_0x05a0('0x34')](_0x4ca913['rows'],function(_0x579e13){return{'membername':_0x579e13[_0x05a0('0x31')],'UserId':_0x579e13['id'],'queue_name':_0x3332c9[_0x05a0('0x31')],'OpenchannelQueueId':_0x3332c9['id'],'interface':util[_0x05a0('0x67')](_0x05a0('0x68'),_0x05a0('0x69'),_0x579e13[_0x05a0('0x31')]),'penalty':0x0,'paused':_0x579e13['openchannelPause'],'createdAt':_0x579e13[_0x05a0('0x66')],'updatedAt':_0x579e13[_0x05a0('0x65')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x05a0('0x2b')](respondWithFilteredResult(_0x2e8972,_0x1d1cda))[_0x05a0('0x4b')](handleError(_0x2e8972,null));};exports[_0x05a0('0x6a')]=function(_0xa2ee9f,_0x16ee3e,_0x5f712c){var _0xab4736={};var _0x56868a={};var _0x11052d;var _0x32b9e5;return db['OpenchannelQueue'][_0x05a0('0x5b')]({'where':{'id':_0xa2ee9f[_0x05a0('0x4c')]['id']}})['then'](handleEntityNotFound(_0x16ee3e,null))[_0x05a0('0x2b')](function(_0x4926d7){if(_0x4926d7){_0x11052d=_0x4926d7;_0x56868a[_0x05a0('0x3d')]=_[_0x05a0('0x3a')](db[_0x05a0('0x6b')][_0x05a0('0x36')]);_0x56868a[_0x05a0('0x39')]=_['keys'](_0xa2ee9f[_0x05a0('0x39')]);_0x56868a[_0x05a0('0x3b')]=_[_0x05a0('0x3c')](_0x56868a[_0x05a0('0x3d')],_0x56868a[_0x05a0('0x39')]);_0xab4736[_0x05a0('0x3e')]=_[_0x05a0('0x3c')](_0x56868a[_0x05a0('0x3d')],qs[_0x05a0('0x3f')](_0xa2ee9f['query']['fields']));_0xab4736[_0x05a0('0x3e')]=_0xab4736['attributes']['length']?_0xab4736['attributes']:_0x56868a[_0x05a0('0x3d')];_0xab4736['order']=qs[_0x05a0('0x43')](_0xa2ee9f['query']['sort']);_0xab4736[_0x05a0('0x44')]=qs[_0x05a0('0x3b')](_[_0x05a0('0x45')](_0xa2ee9f[_0x05a0('0x39')],_0x56868a[_0x05a0('0x3b')]));if(_0xa2ee9f[_0x05a0('0x39')][_0x05a0('0x46')]){_0xab4736[_0x05a0('0x44')]=_[_0x05a0('0x47')](_0xab4736[_0x05a0('0x44')],{'$or':_['map'](_0xab4736[_0x05a0('0x3e')],function(_0x4cccb5){var _0x5177f5={};_0x5177f5[_0x4cccb5]={'$like':'%'+_0xa2ee9f[_0x05a0('0x39')][_0x05a0('0x46')]+'%'};return _0x5177f5;})});}_0xab4736=_['merge']({},_0xab4736,_0xa2ee9f['options']);return _0x11052d[_0x05a0('0x6a')](_0xab4736);}})[_0x05a0('0x2b')](function(_0x389049){if(_0x389049){_0x32b9e5=_0x389049[_0x05a0('0x40')];if(!_0xa2ee9f[_0x05a0('0x39')][_0x05a0('0x5d')](_0x05a0('0x41'))){_0xab4736[_0x05a0('0x23')]=qs[_0x05a0('0x23')](_0xa2ee9f[_0x05a0('0x39')][_0x05a0('0x23')]);_0xab4736[_0x05a0('0x25')]=qs['offset'](_0xa2ee9f['query'][_0x05a0('0x25')]);}return _0x11052d[_0x05a0('0x6a')](_0xab4736);}})[_0x05a0('0x2b')](function(_0x2f442c){if(_0x2f442c){return _0x2f442c?{'count':_0x32b9e5,'rows':_0x2f442c}:null;}})[_0x05a0('0x2b')](respondWithResult(_0x16ee3e,null))[_0x05a0('0x4b')](handleError(_0x16ee3e,null));};exports[_0x05a0('0x6c')]=function(_0x207b82,_0x437bc3,_0x5205da){var _0x22e997=_0x207b82[_0x05a0('0x58')][_0x05a0('0x6d')];return db[_0x05a0('0x6b')][_0x05a0('0x5f')]({'where':{'id':_0x22e997},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0x05a0('0x31'),_0x05a0('0x6e'),_0x05a0('0x6f'),'interface'],'raw':!![]}]})['then'](function(_0x4619ce){if(_0x4619ce){var _0x5bd1cd=_[_0x05a0('0x70')](_0x4619ce,function(_0xa167db){var _0x352e07=_0xa167db[_0x05a0('0x51')]({'plain':!![]});return _0x352e07[_0x05a0('0x71')];});return db[_0x05a0('0x35')][_0x05a0('0x4e')]({'where':{'id':_0x207b82[_0x05a0('0x4c')]['id']}})['then'](function(_0x265c15){return db[_0x05a0('0x72')][_0x05a0('0x73')](function(_0x32ab54){return _0x265c15[_0x05a0('0x6c')](_0x22e997,{'transaction':_0x32ab54})[_0x05a0('0x2b')](function(){return BPromise[_0x05a0('0x74')](_0x5bd1cd,function(_0x1c96a5){return db[_0x05a0('0x5c')][_0x05a0('0x75')]({'where':{'UserId':_0x1c96a5['id'],'OpenchannelQueueId':_0x207b82[_0x05a0('0x4c')]['id']},'transaction':_0x32ab54});});})[_0x05a0('0x2b')](function(){_0x5bd1cd[_0x05a0('0x76')](function(_0x54cac1){socket['emit'](_0x05a0('0x77'),{'UserId':_0x54cac1['id'],'OpenchannelQueueId':_0x265c15['id']});});});});});}})[_0x05a0('0x2b')](respondWithStatusCode(_0x437bc3,null))[_0x05a0('0x4b')](handleError(_0x437bc3,null));};exports['removeTeams']=function(_0x1c9973,_0xe85ac0,_0x50a2e4){return db[_0x05a0('0x6b')][_0x05a0('0x5f')]({'where':{'id':_0x1c9973[_0x05a0('0x39')][_0x05a0('0x6d')]},'attributes':['id'],'include':[{'model':db[_0x05a0('0x60')],'as':_0x05a0('0x71'),'attributes':['id'],'raw':!![]}]})[_0x05a0('0x2b')](handleEntityNotFound(_0xe85ac0,null))[_0x05a0('0x2b')](function(_0x3d52e7){var _0x44e8d1=_[_0x05a0('0x34')](_0x3d52e7,'id');var _0x3e3f5c=[];var _0x36b9dd=[];var _0x29c7cc=squel[_0x05a0('0x78')]();_0x29c7cc[_0x05a0('0x79')](_0x05a0('0x7a'))[_0x05a0('0x7b')](_0x05a0('0x7c'),'tq')[_0x05a0('0x7d')](_0x05a0('0x7e'),'ut',_0x05a0('0x7f'))[_0x05a0('0x44')](_0x05a0('0x80'),_0x1c9973['params']['id']);for(var _0x104171=0x0;_0x104171<_0x3d52e7['length'];_0x104171+=0x1){let _0x20efdb=_0x3d52e7[_0x104171];for(var _0x2d4a3b=0x0;_0x2d4a3b<_0x20efdb[_0x05a0('0x71')]['length'];_0x2d4a3b+=0x1){let _0x342739=_0x20efdb[_0x05a0('0x71')][_0x2d4a3b];var _0x522426=_0x29c7cc[_0x05a0('0x81')]();_0x522426[_0x05a0('0x44')]('ut.UserId\x20=\x20?',_0x342739['id']);_0x36b9dd[_0x05a0('0x82')](db[_0x05a0('0x72')]['query'](_0x522426[_0x05a0('0x83')](),{'type':db[_0x05a0('0x72')][_0x05a0('0x84')]['SELECT']})[_0x05a0('0x2b')](function(_0x40b15b){if(_0x40b15b[_0x05a0('0x40')]===0x1){return _0x342739['id'];}else{var _0x4b63c2=_[_0x05a0('0x85')](_['map'](_0x40b15b,_0x05a0('0x86')),function(_0x21f4dc){return _[_0x05a0('0x87')](_0x44e8d1,_0x21f4dc);});if(_0x4b63c2){return _0x342739['id'];}}}));}}return BPromise[_0x05a0('0x88')](_0x36b9dd)['then'](function(_0x16e984){_0x3e3f5c=_(_0x3e3f5c)[_0x05a0('0x89')](_0x16e984)[_0x05a0('0x8a')]()[_0x05a0('0x8b')]();return db[_0x05a0('0x35')][_0x05a0('0x4e')]({'where':{'id':_0x1c9973[_0x05a0('0x4c')]['id']}})[_0x05a0('0x2b')](function(_0x3cac01){return db[_0x05a0('0x72')][_0x05a0('0x73')](function(_0x7394e6){return _0x3cac01[_0x05a0('0x8c')](_0x1c9973[_0x05a0('0x39')][_0x05a0('0x6d')],{'transaction':_0x7394e6})[_0x05a0('0x2b')](function(){if(!_['isEmpty'](_0x3e3f5c)){return _0x3cac01[_0x05a0('0x8d')](_0x3e3f5c,{'transaction':_0x7394e6});}})['then'](function(){_0x3e3f5c['forEach'](function(_0xd023fe){socket['emit'](_0x05a0('0x8e'),{'UserId':_0xd023fe,'OpenchannelQueueId':_0x3cac01['id']});});});});});});})[_0x05a0('0x2b')](respondWithStatusCode(_0xe85ac0,null))[_0x05a0('0x4b')](handleError(_0xe85ac0,null));};exports[_0x05a0('0x8f')]=function(_0x5b518a,_0x2c32eb,_0x3a7fac){return db[_0x05a0('0x35')][_0x05a0('0x4e')]({'where':{'id':_0x5b518a[_0x05a0('0x4c')]['id']}})[_0x05a0('0x2b')](handleEntityNotFound(_0x2c32eb,null))[_0x05a0('0x2b')](function(_0x14449e){if(_0x14449e){return _0x14449e[_0x05a0('0x8f')](_0x5b518a[_0x05a0('0x58')]['ids'],_[_0x05a0('0x90')](_0x5b518a[_0x05a0('0x58')],[_0x05a0('0x6d'),'id'])||{})[_0x05a0('0x91')](function(_0x3430b4){for(var _0x3300d1=0x0;_0x3300d1<_0x5b518a[_0x05a0('0x58')]['ids'][_0x05a0('0x40')];_0x3300d1+=0x1){socket[_0x05a0('0x92')](_0x05a0('0x77'),{'UserId':Number(_0x5b518a[_0x05a0('0x58')][_0x05a0('0x6d')][_0x3300d1]),'OpenchannelQueueId':Number(_0x5b518a[_0x05a0('0x4c')]['id'])});}return _0x3430b4;});}})['then'](respondWithResult(_0x2c32eb,null))[_0x05a0('0x4b')](handleError(_0x2c32eb,null));};exports[_0x05a0('0x8d')]=function(_0x2f988e,_0x35420d,_0x29b7cc){return db[_0x05a0('0x35')]['find']({'where':{'id':_0x2f988e[_0x05a0('0x4c')]['id']}})['then'](handleEntityNotFound(_0x35420d,null))['then'](function(_0x4fc447){if(_0x4fc447){return _0x4fc447['removeAgents'](_0x2f988e[_0x05a0('0x39')][_0x05a0('0x6d')])[_0x05a0('0x2b')](function(){if(_['isArray'](_0x2f988e[_0x05a0('0x39')]['ids'])){for(var _0x34b926=0x0;_0x34b926<_0x2f988e[_0x05a0('0x39')][_0x05a0('0x6d')][_0x05a0('0x40')];_0x34b926+=0x1){socket[_0x05a0('0x92')]('userOpenchannelQueue:remove',{'UserId':Number(_0x2f988e['query'][_0x05a0('0x6d')][_0x34b926]),'OpenchannelQueueId':Number(_0x2f988e['params']['id'])});}}else{socket[_0x05a0('0x92')](_0x05a0('0x8e'),{'UserId':Number(_0x2f988e[_0x05a0('0x39')][_0x05a0('0x6d')]),'OpenchannelQueueId':Number(_0x2f988e[_0x05a0('0x4c')]['id'])});}});}})[_0x05a0('0x2b')](respondWithStatusCode(_0x35420d,null))['catch'](handleError(_0x35420d,null));};exports[_0x05a0('0x93')]=function(_0x1e00c6,_0x28762f,_0x1430ce){var _0x4c3c61={};var _0x1db535={};var _0xce216e;var _0x283afd;return db['OpenchannelQueue'][_0x05a0('0x5b')]({'where':{'id':_0x1e00c6['params']['id']}})['then'](handleEntityNotFound(_0x28762f,null))[_0x05a0('0x2b')](function(_0x2edeee){if(_0x2edeee){_0xce216e=_0x2edeee;_0x1db535[_0x05a0('0x3d')]=_['keys'](db[_0x05a0('0x60')][_0x05a0('0x36')]);_0x1db535[_0x05a0('0x39')]=_[_0x05a0('0x3a')](_0x1e00c6[_0x05a0('0x39')]);_0x1db535[_0x05a0('0x3b')]=_[_0x05a0('0x3c')](_0x1db535['model'],_0x1db535[_0x05a0('0x39')]);_0x4c3c61[_0x05a0('0x3e')]=_[_0x05a0('0x3c')](_0x1db535[_0x05a0('0x3d')],qs[_0x05a0('0x3f')](_0x1e00c6[_0x05a0('0x39')][_0x05a0('0x3f')]));_0x4c3c61[_0x05a0('0x3e')]=_0x4c3c61[_0x05a0('0x3e')][_0x05a0('0x40')]?_0x4c3c61[_0x05a0('0x3e')]:_0x1db535[_0x05a0('0x3d')];_0x4c3c61[_0x05a0('0x42')]=qs['sort'](_0x1e00c6['query'][_0x05a0('0x43')]);_0x4c3c61['where']=qs[_0x05a0('0x3b')](_[_0x05a0('0x45')](_0x1e00c6[_0x05a0('0x39')],_0x1db535[_0x05a0('0x3b')]));if(_0x1e00c6[_0x05a0('0x39')][_0x05a0('0x46')]){_0x4c3c61[_0x05a0('0x44')]=_['merge'](_0x4c3c61[_0x05a0('0x44')],{'$or':_[_0x05a0('0x34')](_0x4c3c61[_0x05a0('0x3e')],function(_0x557451){var _0x762a70={};_0x762a70[_0x557451]={'$like':'%'+_0x1e00c6['query'][_0x05a0('0x46')]+'%'};return _0x762a70;})});}_0x4c3c61=_['merge']({},_0x4c3c61,_0x1e00c6[_0x05a0('0x4d')]);return _0xce216e[_0x05a0('0x93')](_0x4c3c61);}})[_0x05a0('0x2b')](function(_0x3c5434){if(_0x3c5434){_0x283afd=_0x3c5434[_0x05a0('0x40')];if(!_0x1e00c6[_0x05a0('0x39')][_0x05a0('0x5d')](_0x05a0('0x41'))){_0x4c3c61[_0x05a0('0x23')]=qs[_0x05a0('0x23')](_0x1e00c6[_0x05a0('0x39')][_0x05a0('0x23')]);_0x4c3c61[_0x05a0('0x25')]=qs[_0x05a0('0x25')](_0x1e00c6[_0x05a0('0x39')][_0x05a0('0x25')]);}return _0xce216e[_0x05a0('0x93')](_0x4c3c61);}})[_0x05a0('0x2b')](function(_0x468134){if(_0x468134){return _0x468134?{'count':_0x283afd,'rows':_0x468134}:null;}})[_0x05a0('0x2b')](respondWithResult(_0x28762f,null))[_0x05a0('0x4b')](handleError(_0x28762f,null));};
\ No newline at end of file
index 8dc0dd6..77c165b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce67=['hasOwnProperty','exports','events','../../mysqldb','OpenchannelQueue','save','remove','emit'];(function(_0x2cafb4,_0x567156){var _0x1eeb3c=function(_0x5f1fd2){while(--_0x5f1fd2){_0x2cafb4['push'](_0x2cafb4['shift']());}};_0x1eeb3c(++_0x567156);}(_0xce67,0x14a));var _0x7ce6=function(_0xc7e01c,_0x16d801){_0xc7e01c=_0xc7e01c-0x0;var _0x4b3921=_0xce67[_0xc7e01c];return _0x4b3921;};'use strict';var EventEmitter=require(_0x7ce6('0x0'));var OpenchannelQueue=require(_0x7ce6('0x1'))['db'][_0x7ce6('0x2')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7ce6('0x3'),'afterUpdate':'update','afterDestroy':_0x7ce6('0x4')};function emitEvent(_0x21972d){return function(_0xc3367f,_0x153132,_0x505fdf){OpenchannelQueueEvents['emit'](_0x21972d+':'+_0xc3367f['id'],_0xc3367f);OpenchannelQueueEvents[_0x7ce6('0x5')](_0x21972d,_0xc3367f);_0x505fdf(null);};}for(var e in events){if(events[_0x7ce6('0x6')](e)){var event=events[e];OpenchannelQueue['hook'](e,emitEvent(event));}}module[_0x7ce6('0x7')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0x7fca=['emit','hasOwnProperty','hook','exports','events','OpenchannelQueue','setMaxListeners','save','update','remove'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0x7fca,0xcc));var _0xa7fc=function(_0x415f3d,_0x17a9f4){_0x415f3d=_0x415f3d-0x0;var _0xb2c2d8=_0x7fca[_0x415f3d];return _0xb2c2d8;};'use strict';var EventEmitter=require(_0xa7fc('0x0'));var OpenchannelQueue=require('../../mysqldb')['db'][_0xa7fc('0x1')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0xa7fc('0x2')](0x0);var events={'afterCreate':_0xa7fc('0x3'),'afterUpdate':_0xa7fc('0x4'),'afterDestroy':_0xa7fc('0x5')};function emitEvent(_0x2dbaa5){return function(_0x4ea4ed,_0x31c052,_0x3f262c){OpenchannelQueueEvents['emit'](_0x2dbaa5+':'+_0x4ea4ed['id'],_0x4ea4ed);OpenchannelQueueEvents[_0xa7fc('0x6')](_0x2dbaa5,_0x4ea4ed);_0x3f262c(null);};}for(var e in events){if(events[_0xa7fc('0x7')](e)){var event=events[e];OpenchannelQueue[_0xa7fc('0x8')](e,emitEvent(event));}}module[_0xa7fc('0x9')]=OpenchannelQueueEvents;
\ No newline at end of file
index b685bc0..a93ce76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd660=['path','rimraf','../../config/environment','./openchannelQueue.attributes','define','OpenchannelQueue','openchannel_queues','lodash','util','../../config/logger','moment'];(function(_0x25a99b,_0xebc008){var _0x333419=function(_0x2d460f){while(--_0x2d460f){_0x25a99b['push'](_0x25a99b['shift']());}};_0x333419(++_0xebc008);}(_0xd660,0x104));var _0x0d66=function(_0x2ba853,_0x45be){_0x2ba853=_0x2ba853-0x0;var _0xe21285=_0xd660[_0x2ba853];return _0xe21285;};'use strict';var _=require(_0x0d66('0x0'));var util=require(_0x0d66('0x1'));var logger=require(_0x0d66('0x2'))('api');var moment=require(_0x0d66('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x0d66('0x4'));var rimraf=require(_0x0d66('0x5'));var config=require(_0x0d66('0x6'));var attributes=require(_0x0d66('0x7'));module['exports']=function(_0x2f1b29,_0xa09be5){return _0x2f1b29[_0x0d66('0x8')](_0x0d66('0x9'),attributes,{'tableName':_0x0d66('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0b30=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./openchannelQueue.attributes','exports','define','OpenchannelQueue','openchannel_queues','lodash','util'];(function(_0x58cbde,_0x4b0f62){var _0x5799f3=function(_0x326eca){while(--_0x326eca){_0x58cbde['push'](_0x58cbde['shift']());}};_0x5799f3(++_0x4b0f62);}(_0x0b30,0x1b0));var _0x00b3=function(_0x1bdf3b,_0x4b3f93){_0x1bdf3b=_0x1bdf3b-0x0;var _0x5d8b96=_0x0b30[_0x1bdf3b];return _0x5d8b96;};'use strict';var _=require(_0x00b3('0x0'));var util=require(_0x00b3('0x1'));var logger=require(_0x00b3('0x2'))(_0x00b3('0x3'));var moment=require(_0x00b3('0x4'));var BPromise=require(_0x00b3('0x5'));var rp=require(_0x00b3('0x6'));var fs=require('fs');var path=require(_0x00b3('0x7'));var rimraf=require(_0x00b3('0x8'));var config=require('../../config/environment');var attributes=require(_0x00b3('0x9'));module[_0x00b3('0xa')]=function(_0x24f9c2,_0x1fa11d){return _0x24f9c2[_0x00b3('0xb')](_0x00b3('0xc'),attributes,{'tableName':_0x00b3('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 64d0e9b..a16a5a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97c2=['include','map','model','then','ShowOpenchannelQueue','find','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','request','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','raw','options','where','attributes','limit'];(function(_0x11bdbf,_0xa59293){var _0x53e5a3=function(_0x49a529){while(--_0x49a529){_0x11bdbf['push'](_0x11bdbf['shift']());}};_0x53e5a3(++_0xa59293);}(_0x97c2,0xae));var _0x297c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x97c2[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x297c('0x0'));var BPromise=require(_0x297c('0x1'));var rs=require(_0x297c('0x2'));var fs=require('fs');var Redis=require(_0x297c('0x3'));var db=require(_0x297c('0x4'))['db'];var utils=require(_0x297c('0x5'));var logger=require(_0x297c('0x6'))(_0x297c('0x7'));var config=require('../../config/environment');var jayson=require(_0x297c('0x8'));var client=jayson[_0x297c('0x9')][_0x297c('0xa')]({'port':0x232a});config[_0x297c('0xb')]=_[_0x297c('0xc')](config[_0x297c('0xb')],{'host':_0x297c('0xd'),'port':0x18eb});var socket=require(_0x297c('0xe'))(new Redis(config[_0x297c('0xb')]));require(_0x297c('0xf'))[_0x297c('0x10')](socket);function respondWithRpcPromise(_0x57c736,_0x61fa5c,_0x471a88){return new BPromise(function(_0x20ad36,_0x3ed3be){return client[_0x297c('0x11')](_0x57c736,_0x471a88)['then'](function(_0x339dbb){logger[_0x297c('0x12')](_0x297c('0x13'),_0x61fa5c,_0x297c('0x14'));logger[_0x297c('0x15')]('OpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x61fa5c,_0x297c('0x14'),JSON[_0x297c('0x16')](_0x339dbb));if(_0x339dbb[_0x297c('0x17')]){if(_0x339dbb['error'][_0x297c('0x18')]===0x1f4){logger[_0x297c('0x17')]('OpenchannelQueue,\x20%s,\x20%s',_0x61fa5c,_0x339dbb[_0x297c('0x17')][_0x297c('0x19')]);return _0x3ed3be(_0x339dbb[_0x297c('0x17')][_0x297c('0x19')]);}logger[_0x297c('0x17')](_0x297c('0x13'),_0x61fa5c,_0x339dbb[_0x297c('0x17')][_0x297c('0x19')]);return _0x20ad36(_0x339dbb[_0x297c('0x17')]['message']);}else{logger[_0x297c('0x12')]('OpenchannelQueue,\x20%s,\x20%s',_0x61fa5c,_0x297c('0x14'));_0x20ad36(_0x339dbb[_0x297c('0x1a')][_0x297c('0x19')]);}})[_0x297c('0x1b')](function(_0x70e7bf){logger['error']('OpenchannelQueue,\x20%s,\x20%s',_0x61fa5c,_0x70e7bf);_0x3ed3be(_0x70e7bf);});});}exports[_0x297c('0x1c')]=function(_0x198160){var _0x3403a5=this;return new Promise(function(_0x68129d,_0x144689){return db[_0x297c('0x1d')][_0x297c('0x1e')]({'raw':_0x198160['options']?_0x198160['options'][_0x297c('0x1f')]===undefined?!![]:![]:!![],'where':_0x198160[_0x297c('0x20')]?_0x198160[_0x297c('0x20')][_0x297c('0x21')]||null:null,'attributes':_0x198160[_0x297c('0x20')]?_0x198160[_0x297c('0x20')][_0x297c('0x22')]||null:null,'limit':_0x198160[_0x297c('0x20')]?_0x198160[_0x297c('0x20')][_0x297c('0x23')]||null:null,'include':_0x198160[_0x297c('0x20')]?_0x198160[_0x297c('0x20')][_0x297c('0x24')]?_[_0x297c('0x25')](_0x198160['options'][_0x297c('0x24')],function(_0x366f01){return{'model':db[_0x366f01[_0x297c('0x26')]],'as':_0x366f01['as'],'attributes':_0x366f01['attributes'],'include':_0x366f01[_0x297c('0x24')]?_[_0x297c('0x25')](_0x366f01[_0x297c('0x24')],function(_0x102caf){return{'model':db[_0x102caf[_0x297c('0x26')]],'as':_0x102caf['as'],'attributes':_0x102caf[_0x297c('0x22')],'include':_0x102caf[_0x297c('0x24')]?_[_0x297c('0x25')](_0x102caf[_0x297c('0x24')],function(_0xd99c29){return{'model':db[_0xd99c29['model']],'as':_0xd99c29['as'],'attributes':_0xd99c29[_0x297c('0x22')]};}):[]};}):[]};}):[]:[]})[_0x297c('0x27')](function(_0x393813){logger[_0x297c('0x12')](_0x297c('0x1c'),_0x198160);logger[_0x297c('0x15')]('GetOpenchannelQueue',_0x198160,JSON['stringify'](_0x393813));_0x68129d(_0x393813);})['catch'](function(_0x24d1ac){logger[_0x297c('0x17')](_0x297c('0x1c'),_0x24d1ac['message'],_0x198160);_0x144689(_0x3403a5[_0x297c('0x17')](0x1f4,_0x24d1ac['message']));});});};exports[_0x297c('0x28')]=function(_0xeb1d20){var _0x4b3c25=this;return new Promise(function(_0x312f83,_0x34b763){return db[_0x297c('0x1d')][_0x297c('0x29')]({'raw':_0xeb1d20[_0x297c('0x20')]?_0xeb1d20[_0x297c('0x20')][_0x297c('0x1f')]===undefined?!![]:![]:!![],'where':_0xeb1d20[_0x297c('0x20')]?_0xeb1d20[_0x297c('0x20')][_0x297c('0x21')]||null:null,'attributes':_0xeb1d20[_0x297c('0x20')]?_0xeb1d20[_0x297c('0x20')][_0x297c('0x22')]||null:null,'include':_0xeb1d20[_0x297c('0x20')]?_0xeb1d20[_0x297c('0x20')][_0x297c('0x24')]?_['map'](_0xeb1d20[_0x297c('0x20')]['include'],function(_0x304339){return{'model':db[_0x304339[_0x297c('0x26')]],'as':_0x304339['as'],'attributes':_0x304339[_0x297c('0x22')],'include':_0x304339[_0x297c('0x24')]?_['map'](_0x304339[_0x297c('0x24')],function(_0x3deea9){return{'model':db[_0x3deea9[_0x297c('0x26')]],'as':_0x3deea9['as'],'attributes':_0x3deea9[_0x297c('0x22')],'include':_0x3deea9[_0x297c('0x24')]?_[_0x297c('0x25')](_0x3deea9['include'],function(_0x3ddcce){return{'model':db[_0x3ddcce[_0x297c('0x26')]],'as':_0x3ddcce['as'],'attributes':_0x3ddcce[_0x297c('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4a7fdc){logger['info']('ShowOpenchannelQueue',_0xeb1d20);logger[_0x297c('0x15')](_0x297c('0x28'),_0xeb1d20,JSON['stringify'](_0x4a7fdc));_0x312f83(_0x4a7fdc);})[_0x297c('0x1b')](function(_0xc8e006){logger['error'](_0x297c('0x28'),_0xc8e006[_0x297c('0x19')],_0xeb1d20);_0x34b763(_0x4b3c25[_0x297c('0x17')](0x1f4,_0xc8e006[_0x297c('0x19')]));});});};
\ No newline at end of file
+var _0x7ff0=['./openchannelQueue.socket','request','then','info','OpenchannelQueue,\x20%s,\x20%s','debug','stringify','error','message','result','GetOpenchannelQueue','OpenchannelQueue','options','raw','where','attributes','limit','map','model','include','catch','ShowOpenchannelQueue','find','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter'];(function(_0x6ce872,_0x17c45d){var _0x4abf55=function(_0x2c13a7){while(--_0x2c13a7){_0x6ce872['push'](_0x6ce872['shift']());}};_0x4abf55(++_0x17c45d);}(_0x7ff0,0x121));var _0x07ff=function(_0x55fa03,_0xcb96c2){_0x55fa03=_0x55fa03-0x0;var _0x2cd7cd=_0x7ff0[_0x55fa03];return _0x2cd7cd;};'use strict';var _=require(_0x07ff('0x0'));var util=require('util');var moment=require(_0x07ff('0x1'));var BPromise=require(_0x07ff('0x2'));var rs=require(_0x07ff('0x3'));var fs=require('fs');var Redis=require(_0x07ff('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x07ff('0x5'));var logger=require(_0x07ff('0x6'))('rpc');var config=require(_0x07ff('0x7'));var jayson=require(_0x07ff('0x8'));var client=jayson[_0x07ff('0x9')][_0x07ff('0xa')]({'port':0x232a});config[_0x07ff('0xb')]=_[_0x07ff('0xc')](config[_0x07ff('0xb')],{'host':_0x07ff('0xd'),'port':0x18eb});var socket=require(_0x07ff('0xe'))(new Redis(config[_0x07ff('0xb')]));require(_0x07ff('0xf'))['register'](socket);function respondWithRpcPromise(_0x59e2ad,_0x2c6466,_0x399f5d){return new BPromise(function(_0x4dd674,_0xa63391){return client[_0x07ff('0x10')](_0x59e2ad,_0x399f5d)[_0x07ff('0x11')](function(_0x237784){logger[_0x07ff('0x12')](_0x07ff('0x13'),_0x2c6466,'request\x20sent');logger[_0x07ff('0x14')]('OpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x2c6466,'request\x20sent',JSON[_0x07ff('0x15')](_0x237784));if(_0x237784[_0x07ff('0x16')]){if(_0x237784[_0x07ff('0x16')]['code']===0x1f4){logger[_0x07ff('0x16')](_0x07ff('0x13'),_0x2c6466,_0x237784['error'][_0x07ff('0x17')]);return _0xa63391(_0x237784[_0x07ff('0x16')][_0x07ff('0x17')]);}logger[_0x07ff('0x16')]('OpenchannelQueue,\x20%s,\x20%s',_0x2c6466,_0x237784[_0x07ff('0x16')][_0x07ff('0x17')]);return _0x4dd674(_0x237784[_0x07ff('0x16')][_0x07ff('0x17')]);}else{logger[_0x07ff('0x12')](_0x07ff('0x13'),_0x2c6466,'request\x20sent');_0x4dd674(_0x237784[_0x07ff('0x18')][_0x07ff('0x17')]);}})['catch'](function(_0x1b09f6){logger[_0x07ff('0x16')]('OpenchannelQueue,\x20%s,\x20%s',_0x2c6466,_0x1b09f6);_0xa63391(_0x1b09f6);});});}exports[_0x07ff('0x19')]=function(_0x319a0c){var _0xe4376a=this;return new Promise(function(_0x2ea712,_0x2423c1){return db[_0x07ff('0x1a')]['findAll']({'raw':_0x319a0c[_0x07ff('0x1b')]?_0x319a0c['options'][_0x07ff('0x1c')]===undefined?!![]:![]:!![],'where':_0x319a0c[_0x07ff('0x1b')]?_0x319a0c[_0x07ff('0x1b')][_0x07ff('0x1d')]||null:null,'attributes':_0x319a0c[_0x07ff('0x1b')]?_0x319a0c[_0x07ff('0x1b')][_0x07ff('0x1e')]||null:null,'limit':_0x319a0c[_0x07ff('0x1b')]?_0x319a0c[_0x07ff('0x1b')][_0x07ff('0x1f')]||null:null,'include':_0x319a0c[_0x07ff('0x1b')]?_0x319a0c[_0x07ff('0x1b')]['include']?_[_0x07ff('0x20')](_0x319a0c[_0x07ff('0x1b')]['include'],function(_0x19c367){return{'model':db[_0x19c367[_0x07ff('0x21')]],'as':_0x19c367['as'],'attributes':_0x19c367[_0x07ff('0x1e')],'include':_0x19c367[_0x07ff('0x22')]?_[_0x07ff('0x20')](_0x19c367[_0x07ff('0x22')],function(_0x3ddf29){return{'model':db[_0x3ddf29[_0x07ff('0x21')]],'as':_0x3ddf29['as'],'attributes':_0x3ddf29[_0x07ff('0x1e')],'include':_0x3ddf29[_0x07ff('0x22')]?_[_0x07ff('0x20')](_0x3ddf29[_0x07ff('0x22')],function(_0x532ee8){return{'model':db[_0x532ee8[_0x07ff('0x21')]],'as':_0x532ee8['as'],'attributes':_0x532ee8[_0x07ff('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x07ff('0x11')](function(_0x54c08f){logger['info']('GetOpenchannelQueue',_0x319a0c);logger['debug']('GetOpenchannelQueue',_0x319a0c,JSON[_0x07ff('0x15')](_0x54c08f));_0x2ea712(_0x54c08f);})[_0x07ff('0x23')](function(_0xf09d22){logger[_0x07ff('0x16')](_0x07ff('0x19'),_0xf09d22[_0x07ff('0x17')],_0x319a0c);_0x2423c1(_0xe4376a['error'](0x1f4,_0xf09d22[_0x07ff('0x17')]));});});};exports[_0x07ff('0x24')]=function(_0x31408e){var _0x2b8e39=this;return new Promise(function(_0x38145b,_0xb2259e){return db[_0x07ff('0x1a')][_0x07ff('0x25')]({'raw':_0x31408e[_0x07ff('0x1b')]?_0x31408e[_0x07ff('0x1b')][_0x07ff('0x1c')]===undefined?!![]:![]:!![],'where':_0x31408e['options']?_0x31408e[_0x07ff('0x1b')][_0x07ff('0x1d')]||null:null,'attributes':_0x31408e[_0x07ff('0x1b')]?_0x31408e[_0x07ff('0x1b')][_0x07ff('0x1e')]||null:null,'include':_0x31408e[_0x07ff('0x1b')]?_0x31408e[_0x07ff('0x1b')][_0x07ff('0x22')]?_[_0x07ff('0x20')](_0x31408e[_0x07ff('0x1b')][_0x07ff('0x22')],function(_0x5ff2d4){return{'model':db[_0x5ff2d4[_0x07ff('0x21')]],'as':_0x5ff2d4['as'],'attributes':_0x5ff2d4['attributes'],'include':_0x5ff2d4['include']?_[_0x07ff('0x20')](_0x5ff2d4[_0x07ff('0x22')],function(_0x397cd7){return{'model':db[_0x397cd7[_0x07ff('0x21')]],'as':_0x397cd7['as'],'attributes':_0x397cd7['attributes'],'include':_0x397cd7['include']?_[_0x07ff('0x20')](_0x397cd7[_0x07ff('0x22')],function(_0x4d4437){return{'model':db[_0x4d4437[_0x07ff('0x21')]],'as':_0x4d4437['as'],'attributes':_0x4d4437[_0x07ff('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2586c4){logger[_0x07ff('0x12')](_0x07ff('0x24'),_0x31408e);logger[_0x07ff('0x14')]('ShowOpenchannelQueue',_0x31408e,JSON[_0x07ff('0x15')](_0x2586c4));_0x38145b(_0x2586c4);})[_0x07ff('0x23')](function(_0x3ff3b3){logger[_0x07ff('0x16')](_0x07ff('0x24'),_0x3ff3b3[_0x07ff('0x17')],_0x31408e);_0xb2259e(_0x2b8e39[_0x07ff('0x16')](0x1f4,_0x3ff3b3[_0x07ff('0x17')]));});});};
\ No newline at end of file
index ee4e0a8..5b1fe54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0481=['./openchannelQueue.events','save','update','emit','register','length','openchannelQueue:'];(function(_0x1d1854,_0x4a83b1){var _0x5b2acb=function(_0x29ae13){while(--_0x29ae13){_0x1d1854['push'](_0x1d1854['shift']());}};_0x5b2acb(++_0x4a83b1);}(_0x0481,0x77));var _0x1048=function(_0x33c42e,_0x170930){_0x33c42e=_0x33c42e-0x0;var _0xfddb2b=_0x0481[_0x33c42e];return _0xfddb2b;};'use strict';var OpenchannelQueueEvents=require(_0x1048('0x0'));var events=[_0x1048('0x1'),'remove',_0x1048('0x2')];function createListener(_0x50065f,_0x58ca6d){return function(_0x3ebed1){_0x58ca6d[_0x1048('0x3')](_0x50065f,_0x3ebed1);};}function removeListener(_0x5b2f1e,_0x18c152){return function(){OpenchannelQueueEvents['removeListener'](_0x5b2f1e,_0x18c152);};}exports[_0x1048('0x4')]=function(_0x5172c5){for(var _0x265160=0x0,_0x4d000b=events[_0x1048('0x5')];_0x265160<_0x4d000b;_0x265160++){var _0xf2a60d=events[_0x265160];var _0x317cae=createListener(_0x1048('0x6')+_0xf2a60d,_0x5172c5);OpenchannelQueueEvents['on'](_0xf2a60d,_0x317cae);}};
\ No newline at end of file
+var _0x019c=['update','removeListener','register','length','openchannelQueue:','./openchannelQueue.events','save','remove'];(function(_0x2cbec0,_0x262fef){var _0x3d4101=function(_0x549a36){while(--_0x549a36){_0x2cbec0['push'](_0x2cbec0['shift']());}};_0x3d4101(++_0x262fef);}(_0x019c,0x10d));var _0xc019=function(_0x5d8f,_0x14d9d3){_0x5d8f=_0x5d8f-0x0;var _0x252a50=_0x019c[_0x5d8f];return _0x252a50;};'use strict';var OpenchannelQueueEvents=require(_0xc019('0x0'));var events=[_0xc019('0x1'),_0xc019('0x2'),_0xc019('0x3')];function createListener(_0x50606c,_0x10fde3){return function(_0x106cf3){_0x10fde3['emit'](_0x50606c,_0x106cf3);};}function removeListener(_0x1beff5,_0xc1b68){return function(){OpenchannelQueueEvents[_0xc019('0x4')](_0x1beff5,_0xc1b68);};}exports[_0xc019('0x5')]=function(_0x50c482){for(var _0x196707=0x0,_0x1b5bf4=events[_0xc019('0x6')];_0x196707<_0x1b5bf4;_0x196707++){var _0x382e91=events[_0x196707];var _0x2bf096=createListener(_0xc019('0x7')+_0x382e91,_0x50c482);OpenchannelQueueEvents['on'](_0x382e91,_0x2bf096);}};
\ No newline at end of file
index 20bd1d0..b8d7367 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0abf=['show','create','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','./openchannelQueueReport.controller','get','isAuthenticated','index','/describe','/:id'];(function(_0x3f0919,_0x44f104){var _0x8532d1=function(_0x450403){while(--_0x450403){_0x3f0919['push'](_0x3f0919['shift']());}};_0x8532d1(++_0x44f104);}(_0x0abf,0x125));var _0xf0ab=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x0abf[_0x1facfa];return _0x9ec701;};'use strict';var multer=require(_0xf0ab('0x0'));var util=require(_0xf0ab('0x1'));var path=require(_0xf0ab('0x2'));var timeout=require(_0xf0ab('0x3'));var express=require(_0xf0ab('0x4'));var router=express[_0xf0ab('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xf0ab('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf0ab('0x7'));router[_0xf0ab('0x8')]('/',auth[_0xf0ab('0x9')](),controller[_0xf0ab('0xa')]);router[_0xf0ab('0x8')](_0xf0ab('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0xf0ab('0x8')](_0xf0ab('0xc'),auth[_0xf0ab('0x9')](),controller[_0xf0ab('0xd')]);router['post']('/',auth[_0xf0ab('0x9')](),controller[_0xf0ab('0xe')]);router['put'](_0xf0ab('0xc'),auth[_0xf0ab('0x9')](),controller['update']);router['delete'](_0xf0ab('0xc'),auth[_0xf0ab('0x9')](),controller[_0xf0ab('0xf')]);module[_0xf0ab('0x10')]=router;
\ No newline at end of file
+var _0xf086=['get','/describe','isAuthenticated','describe','post','create','/:id','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x11cd46,_0x2b708e){var _0x497e19=function(_0x3f46a6){while(--_0x3f46a6){_0x11cd46['push'](_0x11cd46['shift']());}};_0x497e19(++_0x2b708e);}(_0xf086,0x172));var _0x6f08=function(_0x2f3810,_0xd81355){_0x2f3810=_0x2f3810-0x0;var _0x18938c=_0xf086[_0x2f3810];return _0x18938c;};'use strict';var multer=require(_0x6f08('0x0'));var util=require(_0x6f08('0x1'));var path=require(_0x6f08('0x2'));var timeout=require(_0x6f08('0x3'));var express=require(_0x6f08('0x4'));var router=express[_0x6f08('0x5')]();var fs_extra=require(_0x6f08('0x6'));var auth=require(_0x6f08('0x7'));var interaction=require(_0x6f08('0x8'));var config=require(_0x6f08('0x9'));var controller=require('./openchannelQueueReport.controller');router[_0x6f08('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x6f08('0xa')](_0x6f08('0xb'),auth[_0x6f08('0xc')](),controller[_0x6f08('0xd')]);router['get']('/:id',auth[_0x6f08('0xc')](),controller['show']);router[_0x6f08('0xe')]('/',auth[_0x6f08('0xc')](),controller[_0x6f08('0xf')]);router['put'](_0x6f08('0x10'),auth[_0x6f08('0xc')](),controller[_0x6f08('0x11')]);router[_0x6f08('0x12')](_0x6f08('0x10'),auth[_0x6f08('0xc')](),controller['destroy']);module[_0x6f08('0x13')]=router;
\ No newline at end of file
index fc4811e..212f456 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc066=['DATE','moment','sequelize','STRING'];(function(_0xcea434,_0x210076){var _0x40435c=function(_0x24fee1){while(--_0x24fee1){_0xcea434['push'](_0xcea434['shift']());}};_0x40435c(++_0x210076);}(_0xc066,0xd1));var _0x6c06=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xc066[_0x40a045];return _0x1a687c;};'use strict';var moment=require(_0x6c06('0x0'));var Sequelize=require(_0x6c06('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0x6c06('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x6c06('0x2')]},'joinAt':{'type':Sequelize[_0x6c06('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x6c06('0x3')]},'exitAt':{'type':Sequelize[_0x6c06('0x3')]},'reason':{'type':Sequelize[_0x6c06('0x2')]}};
\ No newline at end of file
+var _0x8786=['STRING','DATE','moment','sequelize','exports'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x8786,0x7a));var _0x6878=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x8786[_0x167cc1];return _0x10bc4b;};'use strict';var moment=require(_0x6878('0x0'));var Sequelize=require(_0x6878('0x1'));module[_0x6878('0x2')]={'uniqueid':{'type':Sequelize[_0x6878('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x6878('0x3')]},'joinAt':{'type':Sequelize[_0x6878('0x4')]},'leaveAt':{'type':Sequelize[_0x6878('0x4')]},'acceptAt':{'type':Sequelize[_0x6878('0x4')]},'exitAt':{'type':Sequelize[_0x6878('0x4')]},'reason':{'type':Sequelize[_0x6878('0x3')]}};
\ No newline at end of file
index 07bbb54..fe38300 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2db9=['error','stack','name','index','OpenchannelQueueReport','rawAttributes','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filter','merge','options','includeAll','include','findAll','keys','length','catch','create','update','body','find','params','describe','eml-format','rimraf','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../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','count','limit','set','Content-Range','json','then','destroy'];(function(_0x3c86dc,_0x5d22fc){var _0x4aeb79=function(_0x29d7c8){while(--_0x29d7c8){_0x3c86dc['push'](_0x3c86dc['shift']());}};_0x4aeb79(++_0x5d22fc);}(_0x2db9,0x13e));var _0x92db=function(_0xfee5e7,_0x5922d8){_0xfee5e7=_0xfee5e7-0x0;var _0x7db8bb=_0x2db9[_0xfee5e7];return _0x7db8bb;};'use strict';var emlformat=require(_0x92db('0x0'));var rimraf=require(_0x92db('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x92db('0x2'));var rp=require('request-promise');var moment=require(_0x92db('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x92db('0x4'));var util=require('util');var path=require(_0x92db('0x5'));var sox=require(_0x92db('0x6'));var csv=require(_0x92db('0x7'));var ejs=require(_0x92db('0x8'));var fs=require('fs');var fs_extra=require(_0x92db('0x9'));var _=require(_0x92db('0xa'));var squel=require('squel');var crypto=require(_0x92db('0xb'));var jsforce=require(_0x92db('0xc'));var deskjs=require(_0x92db('0xd'));var toCsv=require(_0x92db('0x7'));var querystring=require(_0x92db('0xe'));var Papa=require('papaparse');var Redis=require(_0x92db('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x92db('0x10'));var as=require(_0x92db('0x11'));var hardwareService=require(_0x92db('0x12'));var logger=require(_0x92db('0x13'))(_0x92db('0x14'));var utils=require(_0x92db('0x15'));var config=require(_0x92db('0x16'));var licenseUtil=require(_0x92db('0x17'));var db=require(_0x92db('0x18'))['db'];function respondWithStatusCode(_0x2fa844,_0x52a28b){_0x52a28b=_0x52a28b||0xcc;return function(_0x13f228){if(_0x13f228){return _0x2fa844[_0x92db('0x19')](_0x52a28b);}return _0x2fa844['status'](_0x52a28b)[_0x92db('0x1a')]();};}function respondWithResult(_0x1c4a04,_0x423a38){_0x423a38=_0x423a38||0xc8;return function(_0x4083d6){if(_0x4083d6){return _0x1c4a04[_0x92db('0x1b')](_0x423a38)['json'](_0x4083d6);}};}function respondWithFilteredResult(_0x512136,_0x570ed1){return function(_0x3f29d){if(_0x3f29d){var _0x699404=typeof _0x570ed1[_0x92db('0x1c')]===_0x92db('0x1d')&&typeof _0x570ed1['limit']===_0x92db('0x1d');var _0x16f7a4=_0x3f29d[_0x92db('0x1e')];var _0x4efc96=_0x699404?0x0:_0x570ed1[_0x92db('0x1c')];var _0x4c2be6=_0x699404?_0x3f29d['count']:_0x570ed1[_0x92db('0x1c')]+_0x570ed1[_0x92db('0x1f')];var _0x486e33;if(_0x4c2be6>=_0x16f7a4){_0x4c2be6=_0x16f7a4;_0x486e33=0xc8;}else{_0x486e33=0xce;}_0x512136['status'](_0x486e33);return _0x512136[_0x92db('0x20')](_0x92db('0x21'),_0x4efc96+'-'+_0x4c2be6+'/'+_0x16f7a4)[_0x92db('0x22')](_0x3f29d);}return null;};}function patchUpdates(_0x2dff21){return function(_0xebddb0){try{jsonpatch['apply'](_0xebddb0,_0x2dff21,!![]);}catch(_0x42f7cd){return BPromise['reject'](_0x42f7cd);}return _0xebddb0['save']();};}function saveUpdates(_0x2cf43b,_0x15c6a8){return function(_0x50c2e7){if(_0x50c2e7){return _0x50c2e7['update'](_0x2cf43b)[_0x92db('0x23')](function(_0x5bf7fa){return _0x5bf7fa;});}return null;};}function removeEntity(_0x4c1d0d,_0xe4444d){return function(_0x1a5a4c){if(_0x1a5a4c){return _0x1a5a4c[_0x92db('0x24')]()[_0x92db('0x23')](function(){_0x4c1d0d[_0x92db('0x1b')](0xcc)[_0x92db('0x1a')]();});}};}function handleEntityNotFound(_0x553a42,_0x343cb8){return function(_0x31d1c1){if(!_0x31d1c1){_0x553a42[_0x92db('0x19')](0x194);}return _0x31d1c1;};}function handleError(_0x497b3d,_0x271d85){_0x271d85=_0x271d85||0x1f4;return function(_0x1ad872){logger[_0x92db('0x25')](_0x1ad872[_0x92db('0x26')]);if(_0x1ad872[_0x92db('0x27')]){delete _0x1ad872['name'];}_0x497b3d[_0x92db('0x1b')](_0x271d85)['send'](_0x1ad872);};}exports[_0x92db('0x28')]=function(_0x47f498,_0x235ea5){var _0x2de9a0={},_0x53ae1b={},_0x8ad0db={'count':0x0,'rows':[]};var _0x486786=_['map'](db[_0x92db('0x29')][_0x92db('0x2a')],function(_0x32c61d){return{'name':_0x32c61d[_0x92db('0x2b')],'type':_0x32c61d[_0x92db('0x2c')]['key']};});_0x53ae1b[_0x92db('0x2d')]=_[_0x92db('0x2e')](_0x486786,_0x92db('0x27'));_0x53ae1b['query']=_['keys'](_0x47f498[_0x92db('0x2f')]);_0x53ae1b[_0x92db('0x30')]=_[_0x92db('0x31')](_0x53ae1b[_0x92db('0x2d')],_0x53ae1b[_0x92db('0x2f')]);_0x2de9a0[_0x92db('0x32')]=_[_0x92db('0x31')](_0x53ae1b[_0x92db('0x2d')],qs['fields'](_0x47f498[_0x92db('0x2f')][_0x92db('0x33')]));_0x2de9a0['attributes']=_0x2de9a0[_0x92db('0x32')]['length']?_0x2de9a0[_0x92db('0x32')]:_0x53ae1b['model'];if(!_0x47f498[_0x92db('0x2f')][_0x92db('0x34')](_0x92db('0x35'))){_0x2de9a0[_0x92db('0x1f')]=qs[_0x92db('0x1f')](_0x47f498[_0x92db('0x2f')][_0x92db('0x1f')]);_0x2de9a0['offset']=qs[_0x92db('0x1c')](_0x47f498[_0x92db('0x2f')]['offset']);}_0x2de9a0['order']=qs['sort'](_0x47f498['query'][_0x92db('0x36')]);_0x2de9a0[_0x92db('0x37')]=qs[_0x92db('0x30')](_['pick'](_0x47f498['query'],_0x53ae1b[_0x92db('0x30')]),_0x486786);if(_0x47f498[_0x92db('0x2f')][_0x92db('0x38')]){_0x2de9a0['where']=_[_0x92db('0x39')](_0x2de9a0[_0x92db('0x37')],{'$or':_['map'](_0x486786,function(_0xa765b5){if(_0xa765b5[_0x92db('0x2c')]!=='VIRTUAL'){var _0x5414ba={};_0x5414ba[_0xa765b5[_0x92db('0x27')]]={'$like':'%'+_0x47f498[_0x92db('0x2f')][_0x92db('0x38')]+'%'};return _0x5414ba;}})});}_0x2de9a0=_[_0x92db('0x39')]({},_0x2de9a0,_0x47f498[_0x92db('0x3a')]);var _0x30db6d={'where':_0x2de9a0[_0x92db('0x37')]};return db[_0x92db('0x29')][_0x92db('0x1e')](_0x30db6d)[_0x92db('0x23')](function(_0x45b4fc){_0x8ad0db[_0x92db('0x1e')]=_0x45b4fc;if(_0x47f498['query'][_0x92db('0x3b')]){_0x2de9a0[_0x92db('0x3c')]=[{'all':!![]}];}return db[_0x92db('0x29')][_0x92db('0x3d')](_0x2de9a0);})[_0x92db('0x23')](function(_0x983a0f){_0x8ad0db['rows']=_0x983a0f;return _0x8ad0db;})[_0x92db('0x23')](respondWithFilteredResult(_0x235ea5,_0x2de9a0))['catch'](handleError(_0x235ea5,null));};exports['show']=function(_0x30d5ff,_0x56ac3d){var _0x28e28c={'raw':!![],'where':{'id':_0x30d5ff['params']['id']}},_0x3a935f={};_0x3a935f[_0x92db('0x2d')]=_[_0x92db('0x3e')](db[_0x92db('0x29')][_0x92db('0x2a')]);_0x3a935f[_0x92db('0x2f')]=_[_0x92db('0x3e')](_0x30d5ff['query']);_0x3a935f[_0x92db('0x30')]=_[_0x92db('0x31')](_0x3a935f[_0x92db('0x2d')],_0x3a935f[_0x92db('0x2f')]);_0x28e28c[_0x92db('0x32')]=_[_0x92db('0x31')](_0x3a935f[_0x92db('0x2d')],qs[_0x92db('0x33')](_0x30d5ff[_0x92db('0x2f')][_0x92db('0x33')]));_0x28e28c['attributes']=_0x28e28c[_0x92db('0x32')][_0x92db('0x3f')]?_0x28e28c[_0x92db('0x32')]:_0x3a935f['model'];if(_0x30d5ff[_0x92db('0x2f')][_0x92db('0x3b')]){_0x28e28c['include']=[{'all':!![]}];}_0x28e28c=_[_0x92db('0x39')]({},_0x28e28c,_0x30d5ff[_0x92db('0x3a')]);return db[_0x92db('0x29')]['find'](_0x28e28c)[_0x92db('0x23')](handleEntityNotFound(_0x56ac3d,null))[_0x92db('0x23')](respondWithResult(_0x56ac3d,null))[_0x92db('0x40')](handleError(_0x56ac3d,null));};exports[_0x92db('0x41')]=function(_0x48c58b,_0x1075cd){return db['OpenchannelQueueReport'][_0x92db('0x41')](_0x48c58b['body'],{})[_0x92db('0x23')](respondWithResult(_0x1075cd,0xc9))[_0x92db('0x40')](handleError(_0x1075cd,null));};exports[_0x92db('0x42')]=function(_0x48ec79,_0x528931){if(_0x48ec79[_0x92db('0x43')]['id']){delete _0x48ec79['body']['id'];}return db['OpenchannelQueueReport'][_0x92db('0x44')]({'where':{'id':_0x48ec79[_0x92db('0x45')]['id']}})[_0x92db('0x23')](handleEntityNotFound(_0x528931,null))['then'](saveUpdates(_0x48ec79[_0x92db('0x43')],null))[_0x92db('0x23')](respondWithResult(_0x528931,null))['catch'](handleError(_0x528931,null));};exports[_0x92db('0x24')]=function(_0x1a7a1f,_0x29b649){return db[_0x92db('0x29')][_0x92db('0x44')]({'where':{'id':_0x1a7a1f[_0x92db('0x45')]['id']}})['then'](handleEntityNotFound(_0x29b649,null))['then'](removeEntity(_0x29b649,null))[_0x92db('0x40')](handleError(_0x29b649,null));};exports[_0x92db('0x46')]=function(_0x3848ac,_0x3a3cf0){return db[_0x92db('0x29')][_0x92db('0x46')]()[_0x92db('0x23')](respondWithResult(_0x3a3cf0,null))['catch'](handleError(_0x3a3cf0,null));};
\ No newline at end of file
+var _0xeba7=['VIRTUAL','filter','includeAll','include','findAll','rows','catch','params','rawAttributes','find','create','body','update','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','json','reject','save','then','error','stack','name','send','index','map','OpenchannelQueueReport','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','pick','merge'];(function(_0x12edf9,_0x4751e3){var _0x591aa4=function(_0x19a206){while(--_0x19a206){_0x12edf9['push'](_0x12edf9['shift']());}};_0x591aa4(++_0x4751e3);}(_0xeba7,0xa3));var _0x7eba=function(_0x3bb0d6,_0x519062){_0x3bb0d6=_0x3bb0d6-0x0;var _0x2df72f=_0xeba7[_0x3bb0d6];return _0x2df72f;};'use strict';var emlformat=require(_0x7eba('0x0'));var rimraf=require(_0x7eba('0x1'));var zipdir=require(_0x7eba('0x2'));var jsonpatch=require(_0x7eba('0x3'));var rp=require(_0x7eba('0x4'));var moment=require(_0x7eba('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x7eba('0x6'));var path=require(_0x7eba('0x7'));var sox=require(_0x7eba('0x8'));var csv=require(_0x7eba('0x9'));var ejs=require(_0x7eba('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x7eba('0xb'));var crypto=require(_0x7eba('0xc'));var jsforce=require(_0x7eba('0xd'));var deskjs=require(_0x7eba('0xe'));var toCsv=require(_0x7eba('0x9'));var querystring=require('querystring');var Papa=require(_0x7eba('0xf'));var Redis=require(_0x7eba('0x10'));var authService=require(_0x7eba('0x11'));var qs=require(_0x7eba('0x12'));var as=require(_0x7eba('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7eba('0x14'))(_0x7eba('0x15'));var utils=require(_0x7eba('0x16'));var config=require(_0x7eba('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x7eba('0x18'))['db'];function respondWithStatusCode(_0x1996aa,_0x33903b){_0x33903b=_0x33903b||0xcc;return function(_0x2b592f){if(_0x2b592f){return _0x1996aa[_0x7eba('0x19')](_0x33903b);}return _0x1996aa[_0x7eba('0x1a')](_0x33903b)[_0x7eba('0x1b')]();};}function respondWithResult(_0x48b870,_0x41974){_0x41974=_0x41974||0xc8;return function(_0x5f543e){if(_0x5f543e){return _0x48b870[_0x7eba('0x1a')](_0x41974)['json'](_0x5f543e);}};}function respondWithFilteredResult(_0x3f79b1,_0x6bbc83){return function(_0x7ac620){if(_0x7ac620){var _0x271097=typeof _0x6bbc83[_0x7eba('0x1c')]==='undefined'&&typeof _0x6bbc83[_0x7eba('0x1d')]===_0x7eba('0x1e');var _0x234174=_0x7ac620['count'];var _0x51a001=_0x271097?0x0:_0x6bbc83['offset'];var _0x405e93=_0x271097?_0x7ac620[_0x7eba('0x1f')]:_0x6bbc83['offset']+_0x6bbc83[_0x7eba('0x1d')];var _0x2769c1;if(_0x405e93>=_0x234174){_0x405e93=_0x234174;_0x2769c1=0xc8;}else{_0x2769c1=0xce;}_0x3f79b1[_0x7eba('0x1a')](_0x2769c1);return _0x3f79b1['set']('Content-Range',_0x51a001+'-'+_0x405e93+'/'+_0x234174)[_0x7eba('0x20')](_0x7ac620);}return null;};}function patchUpdates(_0x4e7208){return function(_0x295cba){try{jsonpatch['apply'](_0x295cba,_0x4e7208,!![]);}catch(_0x8635df){return BPromise[_0x7eba('0x21')](_0x8635df);}return _0x295cba[_0x7eba('0x22')]();};}function saveUpdates(_0x15fb6a,_0x144d56){return function(_0x5c0ace){if(_0x5c0ace){return _0x5c0ace['update'](_0x15fb6a)[_0x7eba('0x23')](function(_0x5386a6){return _0x5386a6;});}return null;};}function removeEntity(_0x5a411b,_0x111ade){return function(_0x3a424d){if(_0x3a424d){return _0x3a424d['destroy']()[_0x7eba('0x23')](function(){_0x5a411b[_0x7eba('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x789edd,_0x4ea857){return function(_0x52596f){if(!_0x52596f){_0x789edd['sendStatus'](0x194);}return _0x52596f;};}function handleError(_0x205a9c,_0x3be693){_0x3be693=_0x3be693||0x1f4;return function(_0x25e340){logger[_0x7eba('0x24')](_0x25e340[_0x7eba('0x25')]);if(_0x25e340[_0x7eba('0x26')]){delete _0x25e340[_0x7eba('0x26')];}_0x205a9c['status'](_0x3be693)[_0x7eba('0x27')](_0x25e340);};}exports[_0x7eba('0x28')]=function(_0x396647,_0xedc307){var _0x317a4d={},_0x2444d2={},_0x53737c={'count':0x0,'rows':[]};var _0x5922d6=_[_0x7eba('0x29')](db[_0x7eba('0x2a')]['rawAttributes'],function(_0x3f2620){return{'name':_0x3f2620[_0x7eba('0x2b')],'type':_0x3f2620[_0x7eba('0x2c')][_0x7eba('0x2d')]};});_0x2444d2[_0x7eba('0x2e')]=_['map'](_0x5922d6,'name');_0x2444d2[_0x7eba('0x2f')]=_[_0x7eba('0x30')](_0x396647[_0x7eba('0x2f')]);_0x2444d2['filters']=_[_0x7eba('0x31')](_0x2444d2['model'],_0x2444d2[_0x7eba('0x2f')]);_0x317a4d[_0x7eba('0x32')]=_[_0x7eba('0x31')](_0x2444d2[_0x7eba('0x2e')],qs[_0x7eba('0x33')](_0x396647[_0x7eba('0x2f')][_0x7eba('0x33')]));_0x317a4d[_0x7eba('0x32')]=_0x317a4d[_0x7eba('0x32')][_0x7eba('0x34')]?_0x317a4d[_0x7eba('0x32')]:_0x2444d2['model'];if(!_0x396647[_0x7eba('0x2f')][_0x7eba('0x35')]('nolimit')){_0x317a4d[_0x7eba('0x1d')]=qs[_0x7eba('0x1d')](_0x396647[_0x7eba('0x2f')][_0x7eba('0x1d')]);_0x317a4d['offset']=qs[_0x7eba('0x1c')](_0x396647['query'][_0x7eba('0x1c')]);}_0x317a4d['order']=qs[_0x7eba('0x36')](_0x396647[_0x7eba('0x2f')]['sort']);_0x317a4d[_0x7eba('0x37')]=qs[_0x7eba('0x38')](_[_0x7eba('0x39')](_0x396647['query'],_0x2444d2[_0x7eba('0x38')]),_0x5922d6);if(_0x396647[_0x7eba('0x2f')]['filter']){_0x317a4d[_0x7eba('0x37')]=_[_0x7eba('0x3a')](_0x317a4d[_0x7eba('0x37')],{'$or':_[_0x7eba('0x29')](_0x5922d6,function(_0x5f4cbb){if(_0x5f4cbb['type']!==_0x7eba('0x3b')){var _0x3a6737={};_0x3a6737[_0x5f4cbb[_0x7eba('0x26')]]={'$like':'%'+_0x396647[_0x7eba('0x2f')][_0x7eba('0x3c')]+'%'};return _0x3a6737;}})});}_0x317a4d=_[_0x7eba('0x3a')]({},_0x317a4d,_0x396647['options']);var _0x5cdc25={'where':_0x317a4d[_0x7eba('0x37')]};return db[_0x7eba('0x2a')][_0x7eba('0x1f')](_0x5cdc25)[_0x7eba('0x23')](function(_0x1c8f73){_0x53737c[_0x7eba('0x1f')]=_0x1c8f73;if(_0x396647[_0x7eba('0x2f')][_0x7eba('0x3d')]){_0x317a4d[_0x7eba('0x3e')]=[{'all':!![]}];}return db[_0x7eba('0x2a')][_0x7eba('0x3f')](_0x317a4d);})[_0x7eba('0x23')](function(_0x417d13){_0x53737c[_0x7eba('0x40')]=_0x417d13;return _0x53737c;})[_0x7eba('0x23')](respondWithFilteredResult(_0xedc307,_0x317a4d))[_0x7eba('0x41')](handleError(_0xedc307,null));};exports['show']=function(_0x46d14f,_0x4f11d7){var _0x1bf805={'raw':!![],'where':{'id':_0x46d14f[_0x7eba('0x42')]['id']}},_0x93663f={};_0x93663f[_0x7eba('0x2e')]=_[_0x7eba('0x30')](db[_0x7eba('0x2a')][_0x7eba('0x43')]);_0x93663f[_0x7eba('0x2f')]=_[_0x7eba('0x30')](_0x46d14f[_0x7eba('0x2f')]);_0x93663f[_0x7eba('0x38')]=_['intersection'](_0x93663f['model'],_0x93663f[_0x7eba('0x2f')]);_0x1bf805['attributes']=_[_0x7eba('0x31')](_0x93663f[_0x7eba('0x2e')],qs[_0x7eba('0x33')](_0x46d14f[_0x7eba('0x2f')][_0x7eba('0x33')]));_0x1bf805[_0x7eba('0x32')]=_0x1bf805[_0x7eba('0x32')]['length']?_0x1bf805[_0x7eba('0x32')]:_0x93663f[_0x7eba('0x2e')];if(_0x46d14f[_0x7eba('0x2f')][_0x7eba('0x3d')]){_0x1bf805[_0x7eba('0x3e')]=[{'all':!![]}];}_0x1bf805=_[_0x7eba('0x3a')]({},_0x1bf805,_0x46d14f['options']);return db[_0x7eba('0x2a')][_0x7eba('0x44')](_0x1bf805)[_0x7eba('0x23')](handleEntityNotFound(_0x4f11d7,null))[_0x7eba('0x23')](respondWithResult(_0x4f11d7,null))[_0x7eba('0x41')](handleError(_0x4f11d7,null));};exports[_0x7eba('0x45')]=function(_0x2260fe,_0x2c9829){return db[_0x7eba('0x2a')][_0x7eba('0x45')](_0x2260fe[_0x7eba('0x46')],{})['then'](respondWithResult(_0x2c9829,0xc9))[_0x7eba('0x41')](handleError(_0x2c9829,null));};exports[_0x7eba('0x47')]=function(_0x59d661,_0x1a65df){if(_0x59d661[_0x7eba('0x46')]['id']){delete _0x59d661[_0x7eba('0x46')]['id'];}return db[_0x7eba('0x2a')]['find']({'where':{'id':_0x59d661[_0x7eba('0x42')]['id']}})[_0x7eba('0x23')](handleEntityNotFound(_0x1a65df,null))[_0x7eba('0x23')](saveUpdates(_0x59d661['body'],null))['then'](respondWithResult(_0x1a65df,null))[_0x7eba('0x41')](handleError(_0x1a65df,null));};exports[_0x7eba('0x48')]=function(_0x1d6f8d,_0x3b8829){return db[_0x7eba('0x2a')]['find']({'where':{'id':_0x1d6f8d[_0x7eba('0x42')]['id']}})[_0x7eba('0x23')](handleEntityNotFound(_0x3b8829,null))['then'](removeEntity(_0x3b8829,null))[_0x7eba('0x41')](handleError(_0x3b8829,null));};exports[_0x7eba('0x49')]=function(_0x172b86,_0x5dd10d){return db[_0x7eba('0x2a')][_0x7eba('0x49')]()[_0x7eba('0x23')](respondWithResult(_0x5dd10d,null))['catch'](handleError(_0x5dd10d,null));};
\ No newline at end of file
index c0e7630..ddcf235 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','uniqueid','lodash','util'];(function(_0x16de68,_0x33d7ff){var _0x1c277e=function(_0x1d8549){while(--_0x1d8549){_0x16de68['push'](_0x16de68['shift']());}};_0x1c277e(++_0x33d7ff);}(_0x814b,0x1a2));var _0xb814=function(_0x27bd2c,_0x24bd98){_0x27bd2c=_0x27bd2c-0x0;var _0x3784ea=_0x814b[_0x27bd2c];return _0x3784ea;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb814('0x6'));var rimraf=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var attributes=require(_0xb814('0x9'));module[_0xb814('0xa')]=function(_0x322a70,_0x53e507){return _0x322a70[_0xb814('0xb')](_0xb814('0xc'),attributes,{'tableName':'report_openchannel_queue','paranoid':![],'indexes':[{'name':_0xb814('0xd'),'fields':[_0xb814('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','report_openchannel_queue','uniqueid','lodash'];(function(_0x1ff8ef,_0x5c53e3){var _0x380553=function(_0x530393){while(--_0x530393){_0x1ff8ef['push'](_0x1ff8ef['shift']());}};_0x380553(++_0x5c53e3);}(_0x326f,0xd1));var _0xf326=function(_0x421c6f,_0x3b8b6e){_0x421c6f=_0x421c6f-0x0;var _0x3936c6=_0x326f[_0x421c6f];return _0x3936c6;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf326('0x1'));var moment=require(_0xf326('0x2'));var BPromise=require(_0xf326('0x3'));var rp=require(_0xf326('0x4'));var fs=require('fs');var path=require(_0xf326('0x5'));var rimraf=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var attributes=require(_0xf326('0x8'));module[_0xf326('0x9')]=function(_0x3ace29,_0x4c2249){return _0x3ace29[_0xf326('0xa')](_0xf326('0xb'),attributes,{'tableName':_0xf326('0xc'),'paranoid':![],'indexes':[{'name':_0xf326('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 9e0ae8c..f39d81d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6fa=['attributes','limit','lodash','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','options','raw','debug','UpdateOpenchannelQueueReport','update','body','where'];(function(_0x23cec3,_0x445be9){var _0x4410a8=function(_0x495518){while(--_0x495518){_0x23cec3['push'](_0x23cec3['shift']());}};_0x4410a8(++_0x445be9);}(_0xb6fa,0x1c2));var _0xab6f=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0xb6fa[_0x2e4aa2];return _0x5e6092;};'use strict';var _=require(_0xab6f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xab6f('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xab6f('0x2'))['db'];var utils=require(_0xab6f('0x3'));var logger=require('../../config/logger')(_0xab6f('0x4'));var config=require(_0xab6f('0x5'));var jayson=require(_0xab6f('0x6'));var client=jayson[_0xab6f('0x7')][_0xab6f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x895acc,_0x16b84e,_0x1b4da9){return new BPromise(function(_0x46b0f6,_0x85cb19){return client[_0xab6f('0x9')](_0x895acc,_0x1b4da9)[_0xab6f('0xa')](function(_0x199f2d){logger[_0xab6f('0xb')](_0xab6f('0xc'),_0x16b84e,_0xab6f('0xd'));logger['debug']('OpenchannelQueueReport,\x20%s,\x20%s,\x20%s',_0x16b84e,_0xab6f('0xd'),JSON[_0xab6f('0xe')](_0x199f2d));if(_0x199f2d['error']){if(_0x199f2d[_0xab6f('0xf')][_0xab6f('0x10')]===0x1f4){logger[_0xab6f('0xf')](_0xab6f('0xc'),_0x16b84e,_0x199f2d[_0xab6f('0xf')][_0xab6f('0x11')]);return _0x85cb19(_0x199f2d[_0xab6f('0xf')]['message']);}logger[_0xab6f('0xf')](_0xab6f('0xc'),_0x16b84e,_0x199f2d[_0xab6f('0xf')]['message']);return _0x46b0f6(_0x199f2d[_0xab6f('0xf')]['message']);}else{logger['info'](_0xab6f('0xc'),_0x16b84e,'request\x20sent');_0x46b0f6(_0x199f2d[_0xab6f('0x12')][_0xab6f('0x11')]);}})[_0xab6f('0x13')](function(_0x59b934){logger[_0xab6f('0xf')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x16b84e,_0x59b934);_0x85cb19(_0x59b934);});});}exports[_0xab6f('0x14')]=function(_0x439b73){var _0x3e616c=this;return new Promise(function(_0x2f75c1,_0xbb7af){return db[_0xab6f('0x15')][_0xab6f('0x16')](_0x439b73['body'],{'raw':_0x439b73[_0xab6f('0x17')]?_0x439b73[_0xab6f('0x17')][_0xab6f('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x43eda0){logger[_0xab6f('0xb')](_0xab6f('0x14'),_0x439b73);logger[_0xab6f('0x19')](_0xab6f('0x14'),_0x439b73,JSON[_0xab6f('0xe')](_0x43eda0));_0x2f75c1(_0x43eda0);})['catch'](function(_0x4dc7c1){logger[_0xab6f('0xf')](_0xab6f('0x14'),_0x4dc7c1[_0xab6f('0x11')],_0x439b73);_0xbb7af(_0x3e616c[_0xab6f('0xf')](0x1f4,_0x4dc7c1[_0xab6f('0x11')]));});});};exports[_0xab6f('0x1a')]=function(_0xb1ef77){var _0x5634c5=this;return new Promise(function(_0x1294d3,_0xf849b5){return db['OpenchannelQueueReport'][_0xab6f('0x1b')](_0xb1ef77[_0xab6f('0x1c')],{'raw':_0xb1ef77[_0xab6f('0x17')]?_0xb1ef77[_0xab6f('0x17')][_0xab6f('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xb1ef77['options']?_0xb1ef77[_0xab6f('0x17')][_0xab6f('0x1d')]||null:null,'attributes':_0xb1ef77['options']?_0xb1ef77[_0xab6f('0x17')][_0xab6f('0x1e')]||null:null,'limit':_0xb1ef77[_0xab6f('0x17')]?_0xb1ef77[_0xab6f('0x17')][_0xab6f('0x1f')]||null:null})[_0xab6f('0xa')](function(_0x4952f9){logger[_0xab6f('0xb')]('UpdateOpenchannelQueueReport',_0xb1ef77);logger['debug']('UpdateOpenchannelQueueReport',_0xb1ef77,JSON['stringify'](_0x4952f9));_0x1294d3(_0x4952f9);})['catch'](function(_0x14af68){logger[_0xab6f('0xf')](_0xab6f('0x1a'),_0x14af68[_0xab6f('0x11')],_0xb1ef77);_0xf849b5(_0x5634c5[_0xab6f('0xf')](0x1f4,_0x14af68['message']));});});};
\ No newline at end of file
+var _0x02a7=['raw','UpdateOpenchannelQueueReport','OpenchannelQueueReport','where','attributes','then','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','info','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelQueueReport,\x20%s,\x20%s','message','result','catch','CreateOpenchannelQueueReport','create','body','options'];(function(_0x1057a3,_0x28d9b7){var _0x131cdb=function(_0x47a386){while(--_0x47a386){_0x1057a3['push'](_0x1057a3['shift']());}};_0x131cdb(++_0x28d9b7);}(_0x02a7,0x1a6));var _0x702a=function(_0xf68e20,_0x14afb8){_0xf68e20=_0xf68e20-0x0;var _0x528a9=_0x02a7[_0xf68e20];return _0x528a9;};'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')]('OpenchannelQueueReport,\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']('OpenchannelQueueReport,\x20%s,\x20%s',_0x27bfc7,_0x451881);_0x562fdb(_0x451881);});});}exports[_0x702a('0x16')]=function(_0x340dc2){var _0x2071ad=this;return new Promise(function(_0x3d1550,_0x1885eb){return db['OpenchannelQueueReport'][_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']));});});};exports[_0x702a('0x1b')]=function(_0x544be5){var _0x5e6cce=this;return new Promise(function(_0x57d897,_0xa2be1d){return db[_0x702a('0x1c')]['update'](_0x544be5[_0x702a('0x18')],{'raw':_0x544be5[_0x702a('0x19')]?_0x544be5[_0x702a('0x19')][_0x702a('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x544be5[_0x702a('0x19')]?_0x544be5[_0x702a('0x19')][_0x702a('0x1d')]||null:null,'attributes':_0x544be5[_0x702a('0x19')]?_0x544be5[_0x702a('0x19')][_0x702a('0x1e')]||null:null,'limit':_0x544be5['options']?_0x544be5[_0x702a('0x19')]['limit']||null:null})[_0x702a('0x1f')](function(_0x51867d){logger[_0x702a('0xb')](_0x702a('0x1b'),_0x544be5);logger[_0x702a('0xd')]('UpdateOpenchannelQueueReport',_0x544be5,JSON[_0x702a('0xf')](_0x51867d));_0x57d897(_0x51867d);})[_0x702a('0x15')](function(_0x26e1d1){logger['error'](_0x702a('0x1b'),_0x26e1d1['message'],_0x544be5);_0xa2be1d(_0x5e6cce[_0x702a('0x10')](0x1f4,_0x26e1d1[_0x702a('0x13')]));});});};
\ No newline at end of file
index 64f88e8..28a3360 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6653=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','isAuthenticated','index','/describe','describe','get','/:id','show','post','create','put','update','exports','util','path','connect-timeout','express'];(function(_0x26641c,_0x1ba2a5){var _0x42c01a=function(_0x15c7da){while(--_0x15c7da){_0x26641c['push'](_0x26641c['shift']());}};_0x42c01a(++_0x1ba2a5);}(_0x6653,0x14c));var _0x3665=function(_0x225f37,_0x2ae93c){_0x225f37=_0x225f37-0x0;var _0x2a4b0c=_0x6653[_0x225f37];return _0x2a4b0c;};'use strict';var multer=require('multer');var util=require(_0x3665('0x0'));var path=require(_0x3665('0x1'));var timeout=require(_0x3665('0x2'));var express=require(_0x3665('0x3'));var router=express[_0x3665('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x3665('0x5'));var interaction=require(_0x3665('0x6'));var config=require(_0x3665('0x7'));var controller=require(_0x3665('0x8'));router['get']('/',auth[_0x3665('0x9')](),controller[_0x3665('0xa')]);router['get'](_0x3665('0xb'),auth[_0x3665('0x9')](),controller[_0x3665('0xc')]);router[_0x3665('0xd')](_0x3665('0xe'),auth[_0x3665('0x9')](),controller[_0x3665('0xf')]);router[_0x3665('0x10')]('/',auth[_0x3665('0x9')](),controller[_0x3665('0x11')]);router[_0x3665('0x12')](_0x3665('0xe'),auth[_0x3665('0x9')](),controller[_0x3665('0x13')]);router['delete'](_0x3665('0xe'),auth[_0x3665('0x9')](),controller['destroy']);module[_0x3665('0x14')]=router;
\ No newline at end of file
+var _0x3f2d=['put','destroy','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x3f2d,0x134));var _0xd3f2=function(_0x6b25ac,_0x14390e){_0x6b25ac=_0x6b25ac-0x0;var _0x15932a=_0x3f2d[_0x6b25ac];return _0x15932a;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xd3f2('0x0'));var express=require(_0xd3f2('0x1'));var router=express[_0xd3f2('0x2')]();var fs_extra=require(_0xd3f2('0x3'));var auth=require(_0xd3f2('0x4'));var interaction=require(_0xd3f2('0x5'));var config=require(_0xd3f2('0x6'));var controller=require(_0xd3f2('0x7'));router['get']('/',auth[_0xd3f2('0x8')](),controller[_0xd3f2('0x9')]);router[_0xd3f2('0xa')](_0xd3f2('0xb'),auth[_0xd3f2('0x8')](),controller[_0xd3f2('0xc')]);router[_0xd3f2('0xa')](_0xd3f2('0xd'),auth[_0xd3f2('0x8')](),controller[_0xd3f2('0xe')]);router['post']('/',auth[_0xd3f2('0x8')](),controller['create']);router[_0xd3f2('0xf')](_0xd3f2('0xd'),auth[_0xd3f2('0x8')](),controller['update']);router['delete']('/:id',auth[_0xd3f2('0x8')](),controller[_0xd3f2('0x10')]);module['exports']=router;
\ No newline at end of file
index 26520bb..38aa2a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0xaf52c,_0x11ee82){var _0x1c8909=function(_0x2be00e){while(--_0x2be00e){_0xaf52c['push'](_0xaf52c['shift']());}};_0x1c8909(++_0x11ee82);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2283dc,_0x2fcfc5){_0x2283dc=_0x2283dc-0x0;var _0x16db90=_0xcb91[_0x2283dc];return _0x16db90;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x1cb9('0x0')]={'uniqueid':{'type':Sequelize[_0x1cb9('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x1cb9('0x2')](_0x1cb9('0x3'),'agent',_0x1cb9('0x4')),'allowNull':![],'defaultValue':_0x1cb9('0x4')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x1cb9('0x5')]}};
\ No newline at end of file
+var _0xa9e0=['account','queue','DATE','NOW','moment','sequelize','exports'];(function(_0x823a0b,_0x5824ff){var _0x162120=function(_0x472388){while(--_0x472388){_0x823a0b['push'](_0x823a0b['shift']());}};_0x162120(++_0x5824ff);}(_0xa9e0,0x123));var _0x0a9e=function(_0x373dee,_0x1a8c45){_0x373dee=_0x373dee-0x0;var _0x46798f=_0xa9e0[_0x373dee];return _0x46798f;};'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
index 5d72f2b..b6f7920 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a2c=['../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','set','Content-Range','reject','then','destroy','error','name','index','OpenchannelTransferReport','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','rawAttributes','find','catch','create','body','update','eml-format','rimraf','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x5e31e2,_0x273090){var _0x294e2c=function(_0x20ab82){while(--_0x20ab82){_0x5e31e2['push'](_0x5e31e2['shift']());}};_0x294e2c(++_0x273090);}(_0x0a2c,0x81));var _0xc0a2=function(_0xbbc9e9,_0x36cd5f){_0xbbc9e9=_0xbbc9e9-0x0;var _0x500471=_0x0a2c[_0xbbc9e9];return _0x500471;};'use strict';var emlformat=require(_0xc0a2('0x0'));var rimraf=require(_0xc0a2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc0a2('0x2'));var rp=require(_0xc0a2('0x3'));var moment=require(_0xc0a2('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xc0a2('0x5'));var path=require(_0xc0a2('0x6'));var sox=require(_0xc0a2('0x7'));var csv=require(_0xc0a2('0x8'));var ejs=require(_0xc0a2('0x9'));var fs=require('fs');var fs_extra=require(_0xc0a2('0xa'));var _=require(_0xc0a2('0xb'));var squel=require(_0xc0a2('0xc'));var crypto=require(_0xc0a2('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xc0a2('0xe'));var toCsv=require(_0xc0a2('0x8'));var querystring=require(_0xc0a2('0xf'));var Papa=require(_0xc0a2('0x10'));var Redis=require(_0xc0a2('0x11'));var authService=require(_0xc0a2('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xc0a2('0x13'));var hardwareService=require(_0xc0a2('0x14'));var logger=require(_0xc0a2('0x15'))(_0xc0a2('0x16'));var utils=require(_0xc0a2('0x17'));var config=require(_0xc0a2('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xc0a2('0x19'))['db'];function respondWithStatusCode(_0x32ccfb,_0x182237){_0x182237=_0x182237||0xcc;return function(_0x12e28f){if(_0x12e28f){return _0x32ccfb[_0xc0a2('0x1a')](_0x182237);}return _0x32ccfb['status'](_0x182237)[_0xc0a2('0x1b')]();};}function respondWithResult(_0x3dc7b9,_0x30dcce){_0x30dcce=_0x30dcce||0xc8;return function(_0x51c72e){if(_0x51c72e){return _0x3dc7b9[_0xc0a2('0x1c')](_0x30dcce)[_0xc0a2('0x1d')](_0x51c72e);}};}function respondWithFilteredResult(_0x525054,_0x34afe8){return function(_0x4e5a7d){if(_0x4e5a7d){var _0x517b96=typeof _0x34afe8['offset']===_0xc0a2('0x1e')&&typeof _0x34afe8[_0xc0a2('0x1f')]==='undefined';var _0x423bab=_0x4e5a7d[_0xc0a2('0x20')];var _0x46def0=_0x517b96?0x0:_0x34afe8['offset'];var _0x41bbbb=_0x517b96?_0x4e5a7d[_0xc0a2('0x20')]:_0x34afe8['offset']+_0x34afe8[_0xc0a2('0x1f')];var _0x2a6c9c;if(_0x41bbbb>=_0x423bab){_0x41bbbb=_0x423bab;_0x2a6c9c=0xc8;}else{_0x2a6c9c=0xce;}_0x525054[_0xc0a2('0x1c')](_0x2a6c9c);return _0x525054[_0xc0a2('0x21')](_0xc0a2('0x22'),_0x46def0+'-'+_0x41bbbb+'/'+_0x423bab)[_0xc0a2('0x1d')](_0x4e5a7d);}return null;};}function patchUpdates(_0x3a08a7){return function(_0x78549b){try{jsonpatch['apply'](_0x78549b,_0x3a08a7,!![]);}catch(_0x68de11){return BPromise[_0xc0a2('0x23')](_0x68de11);}return _0x78549b['save']();};}function saveUpdates(_0x545f2b,_0x248b5a){return function(_0x3c18bc){if(_0x3c18bc){return _0x3c18bc['update'](_0x545f2b)[_0xc0a2('0x24')](function(_0x13cfb0){return _0x13cfb0;});}return null;};}function removeEntity(_0x905e18,_0x5032b4){return function(_0x41aaf5){if(_0x41aaf5){return _0x41aaf5[_0xc0a2('0x25')]()[_0xc0a2('0x24')](function(){_0x905e18[_0xc0a2('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x601ad6,_0x19f8e8){return function(_0x41a9e4){if(!_0x41a9e4){_0x601ad6['sendStatus'](0x194);}return _0x41a9e4;};}function handleError(_0x2e356c,_0x56ad3b){_0x56ad3b=_0x56ad3b||0x1f4;return function(_0x4a27e0){logger[_0xc0a2('0x26')](_0x4a27e0['stack']);if(_0x4a27e0['name']){delete _0x4a27e0[_0xc0a2('0x27')];}_0x2e356c[_0xc0a2('0x1c')](_0x56ad3b)['send'](_0x4a27e0);};}exports[_0xc0a2('0x28')]=function(_0x45c248,_0x5da220){var _0x89aa66={},_0x2ac5bd={},_0x1770ad={'count':0x0,'rows':[]};var _0x346029=_['map'](db[_0xc0a2('0x29')]['rawAttributes'],function(_0x46b86f){return{'name':_0x46b86f[_0xc0a2('0x2a')],'type':_0x46b86f[_0xc0a2('0x2b')][_0xc0a2('0x2c')]};});_0x2ac5bd[_0xc0a2('0x2d')]=_['map'](_0x346029,_0xc0a2('0x27'));_0x2ac5bd[_0xc0a2('0x2e')]=_[_0xc0a2('0x2f')](_0x45c248[_0xc0a2('0x2e')]);_0x2ac5bd[_0xc0a2('0x30')]=_[_0xc0a2('0x31')](_0x2ac5bd[_0xc0a2('0x2d')],_0x2ac5bd[_0xc0a2('0x2e')]);_0x89aa66[_0xc0a2('0x32')]=_['intersection'](_0x2ac5bd[_0xc0a2('0x2d')],qs['fields'](_0x45c248[_0xc0a2('0x2e')][_0xc0a2('0x33')]));_0x89aa66[_0xc0a2('0x32')]=_0x89aa66[_0xc0a2('0x32')][_0xc0a2('0x34')]?_0x89aa66[_0xc0a2('0x32')]:_0x2ac5bd[_0xc0a2('0x2d')];if(!_0x45c248[_0xc0a2('0x2e')][_0xc0a2('0x35')](_0xc0a2('0x36'))){_0x89aa66[_0xc0a2('0x1f')]=qs['limit'](_0x45c248[_0xc0a2('0x2e')][_0xc0a2('0x1f')]);_0x89aa66[_0xc0a2('0x37')]=qs[_0xc0a2('0x37')](_0x45c248[_0xc0a2('0x2e')][_0xc0a2('0x37')]);}_0x89aa66[_0xc0a2('0x38')]=qs[_0xc0a2('0x39')](_0x45c248['query'][_0xc0a2('0x39')]);_0x89aa66[_0xc0a2('0x3a')]=qs[_0xc0a2('0x30')](_[_0xc0a2('0x3b')](_0x45c248['query'],_0x2ac5bd[_0xc0a2('0x30')]),_0x346029);if(_0x45c248[_0xc0a2('0x2e')][_0xc0a2('0x3c')]){_0x89aa66[_0xc0a2('0x3a')]=_[_0xc0a2('0x3d')](_0x89aa66[_0xc0a2('0x3a')],{'$or':_['map'](_0x346029,function(_0xbb283a){if(_0xbb283a[_0xc0a2('0x2b')]!==_0xc0a2('0x3e')){var _0x402b68={};_0x402b68[_0xbb283a[_0xc0a2('0x27')]]={'$like':'%'+_0x45c248['query'][_0xc0a2('0x3c')]+'%'};return _0x402b68;}})});}_0x89aa66=_[_0xc0a2('0x3d')]({},_0x89aa66,_0x45c248[_0xc0a2('0x3f')]);var _0x525ed9={'where':_0x89aa66[_0xc0a2('0x3a')]};return db[_0xc0a2('0x29')][_0xc0a2('0x20')](_0x525ed9)['then'](function(_0x5a55d7){_0x1770ad[_0xc0a2('0x20')]=_0x5a55d7;if(_0x45c248[_0xc0a2('0x2e')][_0xc0a2('0x40')]){_0x89aa66[_0xc0a2('0x41')]=[{'all':!![]}];}return db[_0xc0a2('0x29')][_0xc0a2('0x42')](_0x89aa66);})[_0xc0a2('0x24')](function(_0x5e0de1){_0x1770ad[_0xc0a2('0x43')]=_0x5e0de1;return _0x1770ad;})[_0xc0a2('0x24')](respondWithFilteredResult(_0x5da220,_0x89aa66))['catch'](handleError(_0x5da220,null));};exports[_0xc0a2('0x44')]=function(_0x484dcd,_0x31737c){var _0x3feb50={'raw':!![],'where':{'id':_0x484dcd[_0xc0a2('0x45')]['id']}},_0x3c4956={};_0x3c4956[_0xc0a2('0x2d')]=_[_0xc0a2('0x2f')](db['OpenchannelTransferReport'][_0xc0a2('0x46')]);_0x3c4956[_0xc0a2('0x2e')]=_[_0xc0a2('0x2f')](_0x484dcd[_0xc0a2('0x2e')]);_0x3c4956['filters']=_['intersection'](_0x3c4956[_0xc0a2('0x2d')],_0x3c4956[_0xc0a2('0x2e')]);_0x3feb50['attributes']=_[_0xc0a2('0x31')](_0x3c4956[_0xc0a2('0x2d')],qs[_0xc0a2('0x33')](_0x484dcd[_0xc0a2('0x2e')]['fields']));_0x3feb50['attributes']=_0x3feb50[_0xc0a2('0x32')][_0xc0a2('0x34')]?_0x3feb50[_0xc0a2('0x32')]:_0x3c4956['model'];if(_0x484dcd[_0xc0a2('0x2e')]['includeAll']){_0x3feb50['include']=[{'all':!![]}];}_0x3feb50=_['merge']({},_0x3feb50,_0x484dcd['options']);return db[_0xc0a2('0x29')][_0xc0a2('0x47')](_0x3feb50)[_0xc0a2('0x24')](handleEntityNotFound(_0x31737c,null))[_0xc0a2('0x24')](respondWithResult(_0x31737c,null))[_0xc0a2('0x48')](handleError(_0x31737c,null));};exports[_0xc0a2('0x49')]=function(_0x25b21c,_0x1ef619){return db[_0xc0a2('0x29')]['create'](_0x25b21c[_0xc0a2('0x4a')],{})[_0xc0a2('0x24')](respondWithResult(_0x1ef619,0xc9))[_0xc0a2('0x48')](handleError(_0x1ef619,null));};exports[_0xc0a2('0x4b')]=function(_0x2642fa,_0x24021e){if(_0x2642fa['body']['id']){delete _0x2642fa[_0xc0a2('0x4a')]['id'];}return db[_0xc0a2('0x29')][_0xc0a2('0x47')]({'where':{'id':_0x2642fa[_0xc0a2('0x45')]['id']}})[_0xc0a2('0x24')](handleEntityNotFound(_0x24021e,null))[_0xc0a2('0x24')](saveUpdates(_0x2642fa[_0xc0a2('0x4a')],null))[_0xc0a2('0x24')](respondWithResult(_0x24021e,null))[_0xc0a2('0x48')](handleError(_0x24021e,null));};exports[_0xc0a2('0x25')]=function(_0x212396,_0x27ff06){return db[_0xc0a2('0x29')][_0xc0a2('0x47')]({'where':{'id':_0x212396[_0xc0a2('0x45')]['id']}})[_0xc0a2('0x24')](handleEntityNotFound(_0x27ff06,null))[_0xc0a2('0x24')](removeEntity(_0x27ff06,null))[_0xc0a2('0x48')](handleError(_0x27ff06,null));};exports['describe']=function(_0x21f1f7,_0x3752f2){return db[_0xc0a2('0x29')]['describe']()[_0xc0a2('0x24')](respondWithResult(_0x3752f2,null))[_0xc0a2('0x48')](handleError(_0x3752f2,null));};
\ No newline at end of file
+var _0x6658=['destroy','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','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','limit','count','set','Content-Range','apply','reject','save','then','error','name','send','map','OpenchannelTransferReport','rawAttributes','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','show','params','filters','options','find','create','body','catch','update'];(function(_0x4067ac,_0x363603){var _0x53d74d=function(_0x492ad4){while(--_0x492ad4){_0x4067ac['push'](_0x4067ac['shift']());}};_0x53d74d(++_0x363603);}(_0x6658,0x9a));var _0x8665=function(_0x109514,_0x37329e){_0x109514=_0x109514-0x0;var _0x1b0e18=_0x6658[_0x109514];return _0x1b0e18;};'use strict';var emlformat=require(_0x8665('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8665('0x1'));var jsonpatch=require(_0x8665('0x2'));var rp=require(_0x8665('0x3'));var moment=require(_0x8665('0x4'));var BPromise=require(_0x8665('0x5'));var Mustache=require('mustache');var util=require(_0x8665('0x6'));var path=require('path');var sox=require(_0x8665('0x7'));var csv=require('to-csv');var ejs=require(_0x8665('0x8'));var fs=require('fs');var fs_extra=require(_0x8665('0x9'));var _=require(_0x8665('0xa'));var squel=require('squel');var crypto=require(_0x8665('0xb'));var jsforce=require(_0x8665('0xc'));var deskjs=require(_0x8665('0xd'));var toCsv=require('to-csv');var querystring=require(_0x8665('0xe'));var Papa=require('papaparse');var Redis=require(_0x8665('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x8665('0x10'));var as=require(_0x8665('0x11'));var hardwareService=require(_0x8665('0x12'));var logger=require(_0x8665('0x13'))(_0x8665('0x14'));var utils=require(_0x8665('0x15'));var config=require(_0x8665('0x16'));var licenseUtil=require(_0x8665('0x17'));var db=require(_0x8665('0x18'))['db'];function respondWithStatusCode(_0x56f72a,_0x4facf3){_0x4facf3=_0x4facf3||0xcc;return function(_0x3200ab){if(_0x3200ab){return _0x56f72a[_0x8665('0x19')](_0x4facf3);}return _0x56f72a[_0x8665('0x1a')](_0x4facf3)[_0x8665('0x1b')]();};}function respondWithResult(_0x1abe06,_0x5ce710){_0x5ce710=_0x5ce710||0xc8;return function(_0x33806c){if(_0x33806c){return _0x1abe06[_0x8665('0x1a')](_0x5ce710)[_0x8665('0x1c')](_0x33806c);}};}function respondWithFilteredResult(_0x141115,_0x1bfb1c){return function(_0x25d7ea){if(_0x25d7ea){var _0x1834bf=typeof _0x1bfb1c[_0x8665('0x1d')]===_0x8665('0x1e')&&typeof _0x1bfb1c[_0x8665('0x1f')]==='undefined';var _0x2b2eaf=_0x25d7ea[_0x8665('0x20')];var _0x53ce8b=_0x1834bf?0x0:_0x1bfb1c[_0x8665('0x1d')];var _0x536d6e=_0x1834bf?_0x25d7ea['count']:_0x1bfb1c[_0x8665('0x1d')]+_0x1bfb1c[_0x8665('0x1f')];var _0x781638;if(_0x536d6e>=_0x2b2eaf){_0x536d6e=_0x2b2eaf;_0x781638=0xc8;}else{_0x781638=0xce;}_0x141115[_0x8665('0x1a')](_0x781638);return _0x141115[_0x8665('0x21')](_0x8665('0x22'),_0x53ce8b+'-'+_0x536d6e+'/'+_0x2b2eaf)['json'](_0x25d7ea);}return null;};}function patchUpdates(_0x12f24a){return function(_0x1e57ab){try{jsonpatch[_0x8665('0x23')](_0x1e57ab,_0x12f24a,!![]);}catch(_0x446645){return BPromise[_0x8665('0x24')](_0x446645);}return _0x1e57ab[_0x8665('0x25')]();};}function saveUpdates(_0x1898f2,_0x53ec31){return function(_0x133547){if(_0x133547){return _0x133547['update'](_0x1898f2)[_0x8665('0x26')](function(_0x18c262){return _0x18c262;});}return null;};}function removeEntity(_0x31dd24,_0x4fdc99){return function(_0x39c7d6){if(_0x39c7d6){return _0x39c7d6['destroy']()[_0x8665('0x26')](function(){_0x31dd24['status'](0xcc)[_0x8665('0x1b')]();});}};}function handleEntityNotFound(_0x1e8392,_0x293a71){return function(_0x3dcb76){if(!_0x3dcb76){_0x1e8392['sendStatus'](0x194);}return _0x3dcb76;};}function handleError(_0xbaea45,_0x258234){_0x258234=_0x258234||0x1f4;return function(_0x1560fa){logger[_0x8665('0x27')](_0x1560fa['stack']);if(_0x1560fa[_0x8665('0x28')]){delete _0x1560fa['name'];}_0xbaea45[_0x8665('0x1a')](_0x258234)[_0x8665('0x29')](_0x1560fa);};}exports['index']=function(_0x5bf825,_0xe83a0a){var _0x5ba2e4={},_0x5d1c57={},_0x3489ce={'count':0x0,'rows':[]};var _0x26075b=_[_0x8665('0x2a')](db[_0x8665('0x2b')][_0x8665('0x2c')],function(_0xc79f79){return{'name':_0xc79f79['fieldName'],'type':_0xc79f79[_0x8665('0x2d')][_0x8665('0x2e')]};});_0x5d1c57[_0x8665('0x2f')]=_[_0x8665('0x2a')](_0x26075b,_0x8665('0x28'));_0x5d1c57[_0x8665('0x30')]=_[_0x8665('0x31')](_0x5bf825[_0x8665('0x30')]);_0x5d1c57['filters']=_['intersection'](_0x5d1c57[_0x8665('0x2f')],_0x5d1c57[_0x8665('0x30')]);_0x5ba2e4[_0x8665('0x32')]=_[_0x8665('0x33')](_0x5d1c57[_0x8665('0x2f')],qs[_0x8665('0x34')](_0x5bf825[_0x8665('0x30')]['fields']));_0x5ba2e4['attributes']=_0x5ba2e4[_0x8665('0x32')][_0x8665('0x35')]?_0x5ba2e4['attributes']:_0x5d1c57[_0x8665('0x2f')];if(!_0x5bf825[_0x8665('0x30')][_0x8665('0x36')](_0x8665('0x37'))){_0x5ba2e4[_0x8665('0x1f')]=qs[_0x8665('0x1f')](_0x5bf825[_0x8665('0x30')][_0x8665('0x1f')]);_0x5ba2e4[_0x8665('0x1d')]=qs[_0x8665('0x1d')](_0x5bf825['query'][_0x8665('0x1d')]);}_0x5ba2e4[_0x8665('0x38')]=qs[_0x8665('0x39')](_0x5bf825['query'][_0x8665('0x39')]);_0x5ba2e4[_0x8665('0x3a')]=qs['filters'](_[_0x8665('0x3b')](_0x5bf825[_0x8665('0x30')],_0x5d1c57['filters']),_0x26075b);if(_0x5bf825['query']['filter']){_0x5ba2e4['where']=_[_0x8665('0x3c')](_0x5ba2e4['where'],{'$or':_['map'](_0x26075b,function(_0x6dc88f){if(_0x6dc88f[_0x8665('0x2d')]!==_0x8665('0x3d')){var _0x568d13={};_0x568d13[_0x6dc88f[_0x8665('0x28')]]={'$like':'%'+_0x5bf825[_0x8665('0x30')][_0x8665('0x3e')]+'%'};return _0x568d13;}})});}_0x5ba2e4=_['merge']({},_0x5ba2e4,_0x5bf825['options']);var _0x4bc300={'where':_0x5ba2e4[_0x8665('0x3a')]};return db[_0x8665('0x2b')]['count'](_0x4bc300)[_0x8665('0x26')](function(_0x5ba880){_0x3489ce[_0x8665('0x20')]=_0x5ba880;if(_0x5bf825[_0x8665('0x30')][_0x8665('0x3f')]){_0x5ba2e4[_0x8665('0x40')]=[{'all':!![]}];}return db[_0x8665('0x2b')]['findAll'](_0x5ba2e4);})[_0x8665('0x26')](function(_0x17b138){_0x3489ce['rows']=_0x17b138;return _0x3489ce;})[_0x8665('0x26')](respondWithFilteredResult(_0xe83a0a,_0x5ba2e4))['catch'](handleError(_0xe83a0a,null));};exports[_0x8665('0x41')]=function(_0x4c63fe,_0x36faa8){var _0x4d5f7e={'raw':!![],'where':{'id':_0x4c63fe[_0x8665('0x42')]['id']}},_0x2a58bf={};_0x2a58bf['model']=_[_0x8665('0x31')](db[_0x8665('0x2b')][_0x8665('0x2c')]);_0x2a58bf[_0x8665('0x30')]=_[_0x8665('0x31')](_0x4c63fe[_0x8665('0x30')]);_0x2a58bf[_0x8665('0x43')]=_[_0x8665('0x33')](_0x2a58bf[_0x8665('0x2f')],_0x2a58bf[_0x8665('0x30')]);_0x4d5f7e['attributes']=_['intersection'](_0x2a58bf[_0x8665('0x2f')],qs[_0x8665('0x34')](_0x4c63fe['query'][_0x8665('0x34')]));_0x4d5f7e[_0x8665('0x32')]=_0x4d5f7e[_0x8665('0x32')][_0x8665('0x35')]?_0x4d5f7e[_0x8665('0x32')]:_0x2a58bf[_0x8665('0x2f')];if(_0x4c63fe[_0x8665('0x30')][_0x8665('0x3f')]){_0x4d5f7e['include']=[{'all':!![]}];}_0x4d5f7e=_[_0x8665('0x3c')]({},_0x4d5f7e,_0x4c63fe[_0x8665('0x44')]);return db['OpenchannelTransferReport'][_0x8665('0x45')](_0x4d5f7e)[_0x8665('0x26')](handleEntityNotFound(_0x36faa8,null))[_0x8665('0x26')](respondWithResult(_0x36faa8,null))['catch'](handleError(_0x36faa8,null));};exports['create']=function(_0x57cbbc,_0x56705e){return db['OpenchannelTransferReport'][_0x8665('0x46')](_0x57cbbc[_0x8665('0x47')],{})[_0x8665('0x26')](respondWithResult(_0x56705e,0xc9))[_0x8665('0x48')](handleError(_0x56705e,null));};exports[_0x8665('0x49')]=function(_0x2daed0,_0x191988){if(_0x2daed0['body']['id']){delete _0x2daed0[_0x8665('0x47')]['id'];}return db[_0x8665('0x2b')]['find']({'where':{'id':_0x2daed0[_0x8665('0x42')]['id']}})[_0x8665('0x26')](handleEntityNotFound(_0x191988,null))[_0x8665('0x26')](saveUpdates(_0x2daed0['body'],null))[_0x8665('0x26')](respondWithResult(_0x191988,null))[_0x8665('0x48')](handleError(_0x191988,null));};exports[_0x8665('0x4a')]=function(_0x560579,_0x4f440d){return db['OpenchannelTransferReport'][_0x8665('0x45')]({'where':{'id':_0x560579[_0x8665('0x42')]['id']}})['then'](handleEntityNotFound(_0x4f440d,null))[_0x8665('0x26')](removeEntity(_0x4f440d,null))[_0x8665('0x48')](handleError(_0x4f440d,null));};exports[_0x8665('0x4b')]=function(_0x2cc1a9,_0x4d6864){return db[_0x8665('0x2b')]['describe']()[_0x8665('0x26')](respondWithResult(_0x4d6864,null))[_0x8665('0x48')](handleError(_0x4d6864,null));};
\ No newline at end of file
index 05ce205..33fcf92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf1f=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./openchannelTransferReport.attributes','exports','define','report_openchannel_transfer','lodash'];(function(_0x2de23b,_0x4734b0){var _0x2e135a=function(_0x41b246){while(--_0x41b246){_0x2de23b['push'](_0x2de23b['shift']());}};_0x2e135a(++_0x4734b0);}(_0xaf1f,0x9b));var _0xfaf1=function(_0x3a806c,_0x1d29af){_0x3a806c=_0x3a806c-0x0;var _0xee3069=_0xaf1f[_0x3a806c];return _0xee3069;};'use strict';var _=require(_0xfaf1('0x0'));var util=require(_0xfaf1('0x1'));var logger=require(_0xfaf1('0x2'))(_0xfaf1('0x3'));var moment=require(_0xfaf1('0x4'));var BPromise=require(_0xfaf1('0x5'));var rp=require(_0xfaf1('0x6'));var fs=require('fs');var path=require(_0xfaf1('0x7'));var rimraf=require(_0xfaf1('0x8'));var config=require('../../config/environment');var attributes=require(_0xfaf1('0x9'));module[_0xfaf1('0xa')]=function(_0x4b7b70,_0x19de52){return _0x4b7b70[_0xfaf1('0xb')]('OpenchannelTransferReport',attributes,{'tableName':_0xfaf1('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xff8f=['lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','exports','OpenchannelTransferReport','report_openchannel_transfer'];(function(_0x3ba753,_0x2f3216){var _0x2f469a=function(_0x3c0c23){while(--_0x3c0c23){_0x3ba753['push'](_0x3ba753['shift']());}};_0x2f469a(++_0x2f3216);}(_0xff8f,0x181));var _0xfff8=function(_0x538736,_0x43d1cc){_0x538736=_0x538736-0x0;var _0x3cb4ee=_0xff8f[_0x538736];return _0x3cb4ee;};'use strict';var _=require(_0xfff8('0x0'));var util=require(_0xfff8('0x1'));var logger=require(_0xfff8('0x2'))('api');var moment=require(_0xfff8('0x3'));var BPromise=require(_0xfff8('0x4'));var rp=require(_0xfff8('0x5'));var fs=require('fs');var path=require(_0xfff8('0x6'));var rimraf=require(_0xfff8('0x7'));var config=require('../../config/environment');var attributes=require('./openchannelTransferReport.attributes');module[_0xfff8('0x8')]=function(_0x4728e9,_0x418931){return _0x4728e9['define'](_0xfff8('0x9'),attributes,{'tableName':_0xfff8('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 04264f0..236d292 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dee=['lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x29b997,_0x3f7266){var _0x18fe58=function(_0x11ba28){while(--_0x11ba28){_0x29b997['push'](_0x29b997['shift']());}};_0x18fe58(++_0x3f7266);}(_0x7dee,0xb0));var _0xe7de=function(_0x3bd34c,_0x3045de){_0x3bd34c=_0x3bd34c-0x0;var _0x4abcfc=_0x7dee[_0x3bd34c];return _0x4abcfc;};'use strict';var _=require(_0xe7de('0x0'));var util=require('util');var moment=require(_0xe7de('0x1'));var BPromise=require('bluebird');var rs=require(_0xe7de('0x2'));var fs=require('fs');var Redis=require(_0xe7de('0x3'));var db=require(_0xe7de('0x4'))['db'];var utils=require(_0xe7de('0x5'));var logger=require('../../config/logger')(_0xe7de('0x6'));var config=require('../../config/environment');var jayson=require(_0xe7de('0x7'));var client=jayson[_0xe7de('0x8')][_0xe7de('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x17515b,_0x372910,_0x392168){return new BPromise(function(_0x52753f,_0x4469e0){return client[_0xe7de('0xa')](_0x17515b,_0x392168)[_0xe7de('0xb')](function(_0x2177f9){logger['info'](_0xe7de('0xc'),_0x372910,_0xe7de('0xd'));logger[_0xe7de('0xe')](_0xe7de('0xf'),_0x372910,_0xe7de('0xd'),JSON[_0xe7de('0x10')](_0x2177f9));if(_0x2177f9[_0xe7de('0x11')]){if(_0x2177f9['error'][_0xe7de('0x12')]===0x1f4){logger[_0xe7de('0x11')](_0xe7de('0xc'),_0x372910,_0x2177f9[_0xe7de('0x11')][_0xe7de('0x13')]);return _0x4469e0(_0x2177f9['error'][_0xe7de('0x13')]);}logger[_0xe7de('0x11')](_0xe7de('0xc'),_0x372910,_0x2177f9[_0xe7de('0x11')][_0xe7de('0x13')]);return _0x52753f(_0x2177f9[_0xe7de('0x11')]['message']);}else{logger['info'](_0xe7de('0xc'),_0x372910,_0xe7de('0xd'));_0x52753f(_0x2177f9[_0xe7de('0x14')][_0xe7de('0x13')]);}})[_0xe7de('0x15')](function(_0x573cb4){logger[_0xe7de('0x11')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x372910,_0x573cb4);_0x4469e0(_0x573cb4);});});}
\ No newline at end of file
+var _0x4ab0=['jayson/promise','client','request','then','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc'];(function(_0xe58e43,_0x49468c){var _0x25ad9b=function(_0x41b312){while(--_0x41b312){_0xe58e43['push'](_0xe58e43['shift']());}};_0x25ad9b(++_0x49468c);}(_0x4ab0,0xd5));var _0x04ab=function(_0x30a2e9,_0x3804fa){_0x30a2e9=_0x30a2e9-0x0;var _0x1076b8=_0x4ab0[_0x30a2e9];return _0x1076b8;};'use strict';var _=require('lodash');var util=require(_0x04ab('0x0'));var moment=require(_0x04ab('0x1'));var BPromise=require(_0x04ab('0x2'));var rs=require(_0x04ab('0x3'));var fs=require('fs');var Redis=require(_0x04ab('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x04ab('0x5'))(_0x04ab('0x6'));var config=require('../../config/environment');var jayson=require(_0x04ab('0x7'));var client=jayson[_0x04ab('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3f5901,_0x293f1d,_0x1ff7f6){return new BPromise(function(_0x4bc05e,_0x101d6b){return client[_0x04ab('0x9')](_0x3f5901,_0x1ff7f6)[_0x04ab('0xa')](function(_0x41ce1e){logger['info'](_0x04ab('0xb'),_0x293f1d,_0x04ab('0xc'));logger[_0x04ab('0xd')](_0x04ab('0xe'),_0x293f1d,'request\x20sent',JSON[_0x04ab('0xf')](_0x41ce1e));if(_0x41ce1e[_0x04ab('0x10')]){if(_0x41ce1e[_0x04ab('0x10')][_0x04ab('0x11')]===0x1f4){logger[_0x04ab('0x10')](_0x04ab('0xb'),_0x293f1d,_0x41ce1e['error'][_0x04ab('0x12')]);return _0x101d6b(_0x41ce1e['error'][_0x04ab('0x12')]);}logger[_0x04ab('0x10')](_0x04ab('0xb'),_0x293f1d,_0x41ce1e[_0x04ab('0x10')]['message']);return _0x4bc05e(_0x41ce1e['error']['message']);}else{logger[_0x04ab('0x13')](_0x04ab('0xb'),_0x293f1d,_0x04ab('0xc'));_0x4bc05e(_0x41ce1e[_0x04ab('0x14')][_0x04ab('0x12')]);}})[_0x04ab('0x15')](function(_0x42c937){logger[_0x04ab('0x10')](_0x04ab('0xb'),_0x293f1d,_0x42c937);_0x101d6b(_0x42c937);});});}
\ No newline at end of file
index cfe0333..209ebca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1f1=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','get','isAuthenticated','index','/:id','show','post','put','update','destroy','exports','util','path','connect-timeout'];(function(_0x3eef96,_0x55f95a){var _0x2c2741=function(_0x21995f){while(--_0x21995f){_0x3eef96['push'](_0x3eef96['shift']());}};_0x2c2741(++_0x55f95a);}(_0xa1f1,0x7b));var _0x1a1f=function(_0x20cc29,_0x30a46d){_0x20cc29=_0x20cc29-0x0;var _0x28d513=_0xa1f1[_0x20cc29];return _0x28d513;};'use strict';var multer=require('multer');var util=require(_0x1a1f('0x0'));var path=require(_0x1a1f('0x1'));var timeout=require(_0x1a1f('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x1a1f('0x3'));var auth=require(_0x1a1f('0x4'));var interaction=require(_0x1a1f('0x5'));var config=require(_0x1a1f('0x6'));var controller=require(_0x1a1f('0x7'));router[_0x1a1f('0x8')]('/',auth[_0x1a1f('0x9')](),controller[_0x1a1f('0xa')]);router[_0x1a1f('0x8')](_0x1a1f('0xb'),auth['isAuthenticated'](),controller[_0x1a1f('0xc')]);router[_0x1a1f('0xd')]('/',auth[_0x1a1f('0x9')](),controller['create']);router[_0x1a1f('0xe')](_0x1a1f('0xb'),auth[_0x1a1f('0x9')](),controller[_0x1a1f('0xf')]);router['delete'](_0x1a1f('0xb'),auth[_0x1a1f('0x9')](),controller[_0x1a1f('0x10')]);module[_0x1a1f('0x11')]=router;
\ No newline at end of file
+var _0x2f22=['create','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','get','isAuthenticated','index','/:id','show','post'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x2f22,0x156));var _0x22f2=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x2f22[_0x465a0c];return _0x1e202e;};'use strict';var multer=require(_0x22f2('0x0'));var util=require(_0x22f2('0x1'));var path=require(_0x22f2('0x2'));var timeout=require('connect-timeout');var express=require(_0x22f2('0x3'));var router=express[_0x22f2('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x22f2('0x5'));var interaction=require(_0x22f2('0x6'));var config=require(_0x22f2('0x7'));var controller=require(_0x22f2('0x8'));router[_0x22f2('0x9')]('/',auth[_0x22f2('0xa')](),controller[_0x22f2('0xb')]);router['get'](_0x22f2('0xc'),auth[_0x22f2('0xa')](),controller[_0x22f2('0xd')]);router[_0x22f2('0xe')]('/',auth['isAuthenticated'](),controller[_0x22f2('0xf')]);router[_0x22f2('0x10')]('/:id',auth[_0x22f2('0xa')](),controller[_0x22f2('0x11')]);router[_0x22f2('0x12')](_0x22f2('0xc'),auth[_0x22f2('0xa')](),controller[_0x22f2('0x13')]);module[_0x22f2('0x14')]=router;
\ No newline at end of file
index 9f439aa..907f597 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bc4=['sequelize','STRING'];(function(_0x20714a,_0x7de591){var _0x15e877=function(_0x3f9f8d){while(--_0x3f9f8d){_0x20714a['push'](_0x20714a['shift']());}};_0x15e877(++_0x7de591);}(_0x1bc4,0x6e));var _0x41bc=function(_0xc83a62,_0x55fdc7){_0xc83a62=_0xc83a62-0x0;var _0x5c179e=_0x1bc4[_0xc83a62];return _0x5c179e;};'use strict';var Sequelize=require(_0x41bc('0x0'));module['exports']={'name':{'type':Sequelize[_0x41bc('0x1')],'unique':'name','allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb822=['sequelize','exports','STRING'];(function(_0x2039f7,_0x2a781b){var _0x41c7a8=function(_0x331f7c){while(--_0x331f7c){_0x2039f7['push'](_0x2039f7['shift']());}};_0x41c7a8(++_0x2a781b);}(_0xb822,0x93));var _0x2b82=function(_0x5eda14,_0x978e53){_0x5eda14=_0x5eda14-0x0;var _0x3c526c=_0xb822[_0x5eda14];return _0x3c526c;};'use strict';var Sequelize=require(_0x2b82('0x0'));module[_0x2b82('0x1')]={'name':{'type':Sequelize[_0x2b82('0x2')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0x2b82('0x2')]}};
\ No newline at end of file
index 5a69a9f..9e17a22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e2=['destroy','get','Pauses','UserProfileResource','error','stack','name','index','map','Pause','rawAttributes','fieldName','type','query','keys','filters','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','findAll','rows','catch','params','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','update','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','fs-extra','lodash','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','../../mysqldb','sendStatus','status','json','limit','undefined','offset','Content-Range','apply','save','then'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xb7e2,0x172));var _0x2b7e=function(_0x361d44,_0x3aa74f){_0x361d44=_0x361d44-0x0;var _0x49c8aa=_0xb7e2[_0x361d44];return _0x49c8aa;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2b7e('0x0'));var zipdir=require(_0x2b7e('0x1'));var jsonpatch=require(_0x2b7e('0x2'));var rp=require('request-promise');var moment=require(_0x2b7e('0x3'));var BPromise=require(_0x2b7e('0x4'));var Mustache=require('mustache');var util=require(_0x2b7e('0x5'));var path=require(_0x2b7e('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2b7e('0x7'));var _=require(_0x2b7e('0x8'));var squel=require('squel');var crypto=require(_0x2b7e('0x9'));var jsforce=require(_0x2b7e('0xa'));var deskjs=require(_0x2b7e('0xb'));var toCsv=require(_0x2b7e('0xc'));var querystring=require(_0x2b7e('0xd'));var Papa=require(_0x2b7e('0xe'));var Redis=require(_0x2b7e('0xf'));var authService=require(_0x2b7e('0x10'));var qs=require(_0x2b7e('0x11'));var as=require(_0x2b7e('0x12'));var hardwareService=require(_0x2b7e('0x13'));var logger=require(_0x2b7e('0x14'))(_0x2b7e('0x15'));var utils=require(_0x2b7e('0x16'));var config=require(_0x2b7e('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x2b7e('0x18'))['db'];function respondWithStatusCode(_0x4fb99f,_0x2c2a94){_0x2c2a94=_0x2c2a94||0xcc;return function(_0xd6eb10){if(_0xd6eb10){return _0x4fb99f[_0x2b7e('0x19')](_0x2c2a94);}return _0x4fb99f[_0x2b7e('0x1a')](_0x2c2a94)['end']();};}function respondWithResult(_0x3c24e5,_0x1365a5){_0x1365a5=_0x1365a5||0xc8;return function(_0xae78ed){if(_0xae78ed){return _0x3c24e5[_0x2b7e('0x1a')](_0x1365a5)[_0x2b7e('0x1b')](_0xae78ed);}};}function respondWithFilteredResult(_0xf4cfa2,_0x7dcd7f){return function(_0x3ce73b){if(_0x3ce73b){var _0x124d32=typeof _0x7dcd7f['offset']==='undefined'&&typeof _0x7dcd7f[_0x2b7e('0x1c')]===_0x2b7e('0x1d');var _0x124def=_0x3ce73b['count'];var _0x1b1b38=_0x124d32?0x0:_0x7dcd7f[_0x2b7e('0x1e')];var _0x8b9d6a=_0x124d32?_0x3ce73b['count']:_0x7dcd7f['offset']+_0x7dcd7f[_0x2b7e('0x1c')];var _0x1b2a41;if(_0x8b9d6a>=_0x124def){_0x8b9d6a=_0x124def;_0x1b2a41=0xc8;}else{_0x1b2a41=0xce;}_0xf4cfa2[_0x2b7e('0x1a')](_0x1b2a41);return _0xf4cfa2['set'](_0x2b7e('0x1f'),_0x1b1b38+'-'+_0x8b9d6a+'/'+_0x124def)[_0x2b7e('0x1b')](_0x3ce73b);}return null;};}function patchUpdates(_0x3b6f8e){return function(_0x1858c7){try{jsonpatch[_0x2b7e('0x20')](_0x1858c7,_0x3b6f8e,!![]);}catch(_0x54e2b1){return BPromise['reject'](_0x54e2b1);}return _0x1858c7[_0x2b7e('0x21')]();};}function saveUpdates(_0x285f5c,_0x443eb8){return function(_0x4f9dbc){if(_0x4f9dbc){return _0x4f9dbc['update'](_0x285f5c)[_0x2b7e('0x22')](function(_0x400738){return _0x400738;});}return null;};}function removeEntity(_0x1ed1df,_0x2ec040){return function(_0x2cf155){if(_0x2cf155){return _0x2cf155[_0x2b7e('0x23')]()[_0x2b7e('0x22')](function(){var _0x4e02ce=_0x2cf155[_0x2b7e('0x24')]({'plain':!![]});var _0x53bd83=_0x2b7e('0x25');return db[_0x2b7e('0x26')][_0x2b7e('0x23')]({'where':{'type':_0x53bd83,'resourceId':_0x4e02ce['id']}})[_0x2b7e('0x22')](function(){return _0x2cf155;});})['then'](function(){_0x1ed1df[_0x2b7e('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x58eba9,_0x1deeb0){return function(_0x1298b6){if(!_0x1298b6){_0x58eba9[_0x2b7e('0x19')](0x194);}return _0x1298b6;};}function handleError(_0x3d9b2a,_0x5037f1){_0x5037f1=_0x5037f1||0x1f4;return function(_0x5dc1e0){logger[_0x2b7e('0x27')](_0x5dc1e0[_0x2b7e('0x28')]);if(_0x5dc1e0[_0x2b7e('0x29')]){delete _0x5dc1e0['name'];}_0x3d9b2a['status'](_0x5037f1)['send'](_0x5dc1e0);};}exports[_0x2b7e('0x2a')]=function(_0x31dc3a,_0x5d4fed){var _0x1f845a={},_0x3862e0={},_0x353860={'count':0x0,'rows':[]};var _0x505610=_[_0x2b7e('0x2b')](db[_0x2b7e('0x2c')][_0x2b7e('0x2d')],function(_0x2d7045){return{'name':_0x2d7045[_0x2b7e('0x2e')],'type':_0x2d7045[_0x2b7e('0x2f')]['key']};});_0x3862e0['model']=_[_0x2b7e('0x2b')](_0x505610,'name');_0x3862e0[_0x2b7e('0x30')]=_[_0x2b7e('0x31')](_0x31dc3a[_0x2b7e('0x30')]);_0x3862e0[_0x2b7e('0x32')]=_['intersection'](_0x3862e0['model'],_0x3862e0[_0x2b7e('0x30')]);_0x1f845a[_0x2b7e('0x33')]=_[_0x2b7e('0x34')](_0x3862e0[_0x2b7e('0x35')],qs[_0x2b7e('0x36')](_0x31dc3a['query']['fields']));_0x1f845a[_0x2b7e('0x33')]=_0x1f845a[_0x2b7e('0x33')][_0x2b7e('0x37')]?_0x1f845a[_0x2b7e('0x33')]:_0x3862e0[_0x2b7e('0x35')];if(!_0x31dc3a[_0x2b7e('0x30')][_0x2b7e('0x38')](_0x2b7e('0x39'))){_0x1f845a[_0x2b7e('0x1c')]=qs['limit'](_0x31dc3a['query'][_0x2b7e('0x1c')]);_0x1f845a[_0x2b7e('0x1e')]=qs[_0x2b7e('0x1e')](_0x31dc3a[_0x2b7e('0x30')][_0x2b7e('0x1e')]);}_0x1f845a[_0x2b7e('0x3a')]=qs[_0x2b7e('0x3b')](_0x31dc3a[_0x2b7e('0x30')][_0x2b7e('0x3b')]);_0x1f845a[_0x2b7e('0x3c')]=qs['filters'](_[_0x2b7e('0x3d')](_0x31dc3a[_0x2b7e('0x30')],_0x3862e0[_0x2b7e('0x32')]),_0x505610);if(_0x31dc3a[_0x2b7e('0x30')][_0x2b7e('0x3e')]){_0x1f845a[_0x2b7e('0x3c')]=_[_0x2b7e('0x3f')](_0x1f845a['where'],{'$or':_[_0x2b7e('0x2b')](_0x505610,function(_0x5a19b6){if(_0x5a19b6['type']!==_0x2b7e('0x40')){var _0x3b4034={};_0x3b4034[_0x5a19b6[_0x2b7e('0x29')]]={'$like':'%'+_0x31dc3a[_0x2b7e('0x30')][_0x2b7e('0x3e')]+'%'};return _0x3b4034;}})});}_0x1f845a=_[_0x2b7e('0x3f')]({},_0x1f845a,_0x31dc3a[_0x2b7e('0x41')]);var _0x512099={'where':_0x1f845a[_0x2b7e('0x3c')]};return db['Pause'][_0x2b7e('0x42')](_0x512099)[_0x2b7e('0x22')](function(_0xd3c197){_0x353860[_0x2b7e('0x42')]=_0xd3c197;if(_0x31dc3a[_0x2b7e('0x30')]['includeAll']){_0x1f845a['include']=[{'all':!![]}];}return db[_0x2b7e('0x2c')][_0x2b7e('0x43')](_0x1f845a);})[_0x2b7e('0x22')](function(_0x3d06df){_0x353860[_0x2b7e('0x44')]=_0x3d06df;return _0x353860;})[_0x2b7e('0x22')](respondWithFilteredResult(_0x5d4fed,_0x1f845a))[_0x2b7e('0x45')](handleError(_0x5d4fed,null));};exports['show']=function(_0x8ecc92,_0x44df31){var _0x3c7784={'raw':!![],'where':{'id':_0x8ecc92[_0x2b7e('0x46')]['id']}},_0x36c1f4={};_0x36c1f4[_0x2b7e('0x35')]=_[_0x2b7e('0x31')](db['Pause']['rawAttributes']);_0x36c1f4[_0x2b7e('0x30')]=_[_0x2b7e('0x31')](_0x8ecc92[_0x2b7e('0x30')]);_0x36c1f4['filters']=_['intersection'](_0x36c1f4[_0x2b7e('0x35')],_0x36c1f4['query']);_0x3c7784[_0x2b7e('0x33')]=_[_0x2b7e('0x34')](_0x36c1f4[_0x2b7e('0x35')],qs[_0x2b7e('0x36')](_0x8ecc92[_0x2b7e('0x30')][_0x2b7e('0x36')]));_0x3c7784['attributes']=_0x3c7784[_0x2b7e('0x33')][_0x2b7e('0x37')]?_0x3c7784[_0x2b7e('0x33')]:_0x36c1f4[_0x2b7e('0x35')];if(_0x8ecc92[_0x2b7e('0x30')]['includeAll']){_0x3c7784[_0x2b7e('0x47')]=[{'all':!![]}];}_0x3c7784=_[_0x2b7e('0x3f')]({},_0x3c7784,_0x8ecc92[_0x2b7e('0x41')]);return db[_0x2b7e('0x2c')][_0x2b7e('0x48')](_0x3c7784)[_0x2b7e('0x22')](handleEntityNotFound(_0x44df31,null))[_0x2b7e('0x22')](respondWithResult(_0x44df31,null))[_0x2b7e('0x45')](handleError(_0x44df31,null));};exports[_0x2b7e('0x49')]=function(_0x3f46b6,_0x2923ec){return db[_0x2b7e('0x2c')][_0x2b7e('0x49')](_0x3f46b6[_0x2b7e('0x4a')],{})['then'](function(_0x29cf00){var _0x299e3e=_0x3f46b6[_0x2b7e('0x4b')]['get']({'plain':!![]});if(!_0x299e3e)throw new Error(_0x2b7e('0x4c'));if(_0x299e3e[_0x2b7e('0x4d')]==='user'){var _0x335b47=_0x29cf00[_0x2b7e('0x24')]({'plain':!![]});var _0x57340e=_0x2b7e('0x25');return db['UserProfileSection'][_0x2b7e('0x48')]({'where':{'name':_0x57340e,'userProfileId':_0x299e3e[_0x2b7e('0x4e')]},'raw':!![]})[_0x2b7e('0x22')](function(_0x151f10){if(_0x151f10&&_0x151f10[_0x2b7e('0x4f')]===0x0){return db[_0x2b7e('0x26')][_0x2b7e('0x49')]({'name':_0x335b47['name'],'resourceId':_0x335b47['id'],'type':_0x151f10[_0x2b7e('0x29')],'sectionId':_0x151f10['id']},{})[_0x2b7e('0x22')](function(){return _0x29cf00;});}else{return _0x29cf00;}})[_0x2b7e('0x45')](function(_0x2147eb){logger[_0x2b7e('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2147eb);throw _0x2147eb;});}return _0x29cf00;})[_0x2b7e('0x22')](respondWithResult(_0x2923ec,0xc9))[_0x2b7e('0x45')](handleError(_0x2923ec,null));};exports[_0x2b7e('0x50')]=function(_0x1f90b2,_0x3bc768){if(_0x1f90b2[_0x2b7e('0x4a')]['id']){delete _0x1f90b2[_0x2b7e('0x4a')]['id'];}return db['Pause'][_0x2b7e('0x48')]({'where':{'id':_0x1f90b2[_0x2b7e('0x46')]['id']}})[_0x2b7e('0x22')](handleEntityNotFound(_0x3bc768,null))[_0x2b7e('0x22')](saveUpdates(_0x1f90b2[_0x2b7e('0x4a')],null))[_0x2b7e('0x22')](respondWithResult(_0x3bc768,null))[_0x2b7e('0x45')](handleError(_0x3bc768,null));};exports[_0x2b7e('0x23')]=function(_0x5c7d08,_0x748bf6){return db[_0x2b7e('0x2c')][_0x2b7e('0x48')]({'where':{'id':_0x5c7d08[_0x2b7e('0x46')]['id']}})[_0x2b7e('0x22')](handleEntityNotFound(_0x748bf6,null))[_0x2b7e('0x22')](removeEntity(_0x748bf6,null))['catch'](handleError(_0x748bf6,null));};
\ No newline at end of file
+var _0xe9b4=['Pause','fieldName','type','model','query','keys','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','params','attributes','include','merge','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','zip-dir','fast-json-patch','request-promise','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','destroy','Pauses','UserProfileResource','error','stack','name','send','map'];(function(_0x5c5dd2,_0x5b8f50){var _0x4dcb33=function(_0x3e15e5){while(--_0x3e15e5){_0x5c5dd2['push'](_0x5c5dd2['shift']());}};_0x4dcb33(++_0x5b8f50);}(_0xe9b4,0xbd));var _0x4e9b=function(_0x28bc9e,_0x333f2b){_0x28bc9e=_0x28bc9e-0x0;var _0x5d1a43=_0xe9b4[_0x28bc9e];return _0x5d1a43;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x4e9b('0x0'));var jsonpatch=require(_0x4e9b('0x1'));var rp=require(_0x4e9b('0x2'));var moment=require('moment');var BPromise=require(_0x4e9b('0x3'));var Mustache=require(_0x4e9b('0x4'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x4e9b('0x5'));var ejs=require(_0x4e9b('0x6'));var fs=require('fs');var fs_extra=require(_0x4e9b('0x7'));var _=require(_0x4e9b('0x8'));var squel=require(_0x4e9b('0x9'));var crypto=require('crypto');var jsforce=require(_0x4e9b('0xa'));var deskjs=require(_0x4e9b('0xb'));var toCsv=require(_0x4e9b('0x5'));var querystring=require('querystring');var Papa=require(_0x4e9b('0xc'));var Redis=require('ioredis');var authService=require(_0x4e9b('0xd'));var qs=require(_0x4e9b('0xe'));var as=require(_0x4e9b('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x4e9b('0x10'));var licenseUtil=require(_0x4e9b('0x11'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x48ce0a,_0x26904a){_0x26904a=_0x26904a||0xcc;return function(_0x4549af){if(_0x4549af){return _0x48ce0a[_0x4e9b('0x12')](_0x26904a);}return _0x48ce0a['status'](_0x26904a)[_0x4e9b('0x13')]();};}function respondWithResult(_0x2a3717,_0x319e64){_0x319e64=_0x319e64||0xc8;return function(_0x32b556){if(_0x32b556){return _0x2a3717[_0x4e9b('0x14')](_0x319e64)[_0x4e9b('0x15')](_0x32b556);}};}function respondWithFilteredResult(_0x5687a6,_0x555f73){return function(_0x2ad664){if(_0x2ad664){var _0x84c552=typeof _0x555f73[_0x4e9b('0x16')]===_0x4e9b('0x17')&&typeof _0x555f73[_0x4e9b('0x18')]===_0x4e9b('0x17');var _0x2f7340=_0x2ad664[_0x4e9b('0x19')];var _0x46fdc6=_0x84c552?0x0:_0x555f73[_0x4e9b('0x16')];var _0x1892bb=_0x84c552?_0x2ad664['count']:_0x555f73['offset']+_0x555f73['limit'];var _0x338024;if(_0x1892bb>=_0x2f7340){_0x1892bb=_0x2f7340;_0x338024=0xc8;}else{_0x338024=0xce;}_0x5687a6[_0x4e9b('0x14')](_0x338024);return _0x5687a6['set'](_0x4e9b('0x1a'),_0x46fdc6+'-'+_0x1892bb+'/'+_0x2f7340)[_0x4e9b('0x15')](_0x2ad664);}return null;};}function patchUpdates(_0x359df9){return function(_0x474a21){try{jsonpatch['apply'](_0x474a21,_0x359df9,!![]);}catch(_0x499af4){return BPromise[_0x4e9b('0x1b')](_0x499af4);}return _0x474a21[_0x4e9b('0x1c')]();};}function saveUpdates(_0x112677,_0x56ad16){return function(_0x9468f9){if(_0x9468f9){return _0x9468f9[_0x4e9b('0x1d')](_0x112677)[_0x4e9b('0x1e')](function(_0x31bd32){return _0x31bd32;});}return null;};}function removeEntity(_0x5aad44,_0x3d77a6){return function(_0x1b93dc){if(_0x1b93dc){return _0x1b93dc[_0x4e9b('0x1f')]()[_0x4e9b('0x1e')](function(){var _0x3ae30a=_0x1b93dc['get']({'plain':!![]});var _0x4e9393=_0x4e9b('0x20');return db[_0x4e9b('0x21')]['destroy']({'where':{'type':_0x4e9393,'resourceId':_0x3ae30a['id']}})[_0x4e9b('0x1e')](function(){return _0x1b93dc;});})[_0x4e9b('0x1e')](function(){_0x5aad44[_0x4e9b('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a8a5e,_0xc7c84c){return function(_0x1c90c6){if(!_0x1c90c6){_0x3a8a5e['sendStatus'](0x194);}return _0x1c90c6;};}function handleError(_0xb0e3d7,_0x136e93){_0x136e93=_0x136e93||0x1f4;return function(_0x41a315){logger[_0x4e9b('0x22')](_0x41a315[_0x4e9b('0x23')]);if(_0x41a315['name']){delete _0x41a315[_0x4e9b('0x24')];}_0xb0e3d7[_0x4e9b('0x14')](_0x136e93)[_0x4e9b('0x25')](_0x41a315);};}exports['index']=function(_0x49f00a,_0x58b898){var _0x32c1e2={},_0x57526a={},_0x24c386={'count':0x0,'rows':[]};var _0x85d003=_[_0x4e9b('0x26')](db[_0x4e9b('0x27')]['rawAttributes'],function(_0x31139a){return{'name':_0x31139a[_0x4e9b('0x28')],'type':_0x31139a[_0x4e9b('0x29')]['key']};});_0x57526a[_0x4e9b('0x2a')]=_[_0x4e9b('0x26')](_0x85d003,'name');_0x57526a[_0x4e9b('0x2b')]=_[_0x4e9b('0x2c')](_0x49f00a[_0x4e9b('0x2b')]);_0x57526a['filters']=_[_0x4e9b('0x2d')](_0x57526a['model'],_0x57526a[_0x4e9b('0x2b')]);_0x32c1e2['attributes']=_[_0x4e9b('0x2d')](_0x57526a[_0x4e9b('0x2a')],qs[_0x4e9b('0x2e')](_0x49f00a['query'][_0x4e9b('0x2e')]));_0x32c1e2['attributes']=_0x32c1e2['attributes'][_0x4e9b('0x2f')]?_0x32c1e2['attributes']:_0x57526a[_0x4e9b('0x2a')];if(!_0x49f00a[_0x4e9b('0x2b')][_0x4e9b('0x30')](_0x4e9b('0x31'))){_0x32c1e2['limit']=qs[_0x4e9b('0x18')](_0x49f00a['query'][_0x4e9b('0x18')]);_0x32c1e2[_0x4e9b('0x16')]=qs[_0x4e9b('0x16')](_0x49f00a[_0x4e9b('0x2b')]['offset']);}_0x32c1e2[_0x4e9b('0x32')]=qs[_0x4e9b('0x33')](_0x49f00a[_0x4e9b('0x2b')][_0x4e9b('0x33')]);_0x32c1e2[_0x4e9b('0x34')]=qs[_0x4e9b('0x35')](_[_0x4e9b('0x36')](_0x49f00a[_0x4e9b('0x2b')],_0x57526a[_0x4e9b('0x35')]),_0x85d003);if(_0x49f00a[_0x4e9b('0x2b')]['filter']){_0x32c1e2[_0x4e9b('0x34')]=_['merge'](_0x32c1e2[_0x4e9b('0x34')],{'$or':_[_0x4e9b('0x26')](_0x85d003,function(_0x89d29d){if(_0x89d29d[_0x4e9b('0x29')]!==_0x4e9b('0x37')){var _0x58f129={};_0x58f129[_0x89d29d[_0x4e9b('0x24')]]={'$like':'%'+_0x49f00a[_0x4e9b('0x2b')][_0x4e9b('0x38')]+'%'};return _0x58f129;}})});}_0x32c1e2=_['merge']({},_0x32c1e2,_0x49f00a[_0x4e9b('0x39')]);var _0x5c1619={'where':_0x32c1e2[_0x4e9b('0x34')]};return db['Pause'][_0x4e9b('0x19')](_0x5c1619)[_0x4e9b('0x1e')](function(_0x153740){_0x24c386['count']=_0x153740;if(_0x49f00a[_0x4e9b('0x2b')][_0x4e9b('0x3a')]){_0x32c1e2['include']=[{'all':!![]}];}return db[_0x4e9b('0x27')][_0x4e9b('0x3b')](_0x32c1e2);})['then'](function(_0x17de3a){_0x24c386[_0x4e9b('0x3c')]=_0x17de3a;return _0x24c386;})[_0x4e9b('0x1e')](respondWithFilteredResult(_0x58b898,_0x32c1e2))[_0x4e9b('0x3d')](handleError(_0x58b898,null));};exports[_0x4e9b('0x3e')]=function(_0x143314,_0x5abb8b){var _0x19e1a9={'raw':!![],'where':{'id':_0x143314[_0x4e9b('0x3f')]['id']}},_0x1aeec2={};_0x1aeec2[_0x4e9b('0x2a')]=_[_0x4e9b('0x2c')](db[_0x4e9b('0x27')]['rawAttributes']);_0x1aeec2[_0x4e9b('0x2b')]=_[_0x4e9b('0x2c')](_0x143314[_0x4e9b('0x2b')]);_0x1aeec2[_0x4e9b('0x35')]=_[_0x4e9b('0x2d')](_0x1aeec2['model'],_0x1aeec2[_0x4e9b('0x2b')]);_0x19e1a9[_0x4e9b('0x40')]=_[_0x4e9b('0x2d')](_0x1aeec2[_0x4e9b('0x2a')],qs[_0x4e9b('0x2e')](_0x143314[_0x4e9b('0x2b')][_0x4e9b('0x2e')]));_0x19e1a9[_0x4e9b('0x40')]=_0x19e1a9[_0x4e9b('0x40')][_0x4e9b('0x2f')]?_0x19e1a9['attributes']:_0x1aeec2[_0x4e9b('0x2a')];if(_0x143314[_0x4e9b('0x2b')][_0x4e9b('0x3a')]){_0x19e1a9[_0x4e9b('0x41')]=[{'all':!![]}];}_0x19e1a9=_[_0x4e9b('0x42')]({},_0x19e1a9,_0x143314[_0x4e9b('0x39')]);return db[_0x4e9b('0x27')]['find'](_0x19e1a9)['then'](handleEntityNotFound(_0x5abb8b,null))[_0x4e9b('0x1e')](respondWithResult(_0x5abb8b,null))[_0x4e9b('0x3d')](handleError(_0x5abb8b,null));};exports[_0x4e9b('0x43')]=function(_0x74ec76,_0x4dda0e){return db[_0x4e9b('0x27')][_0x4e9b('0x43')](_0x74ec76[_0x4e9b('0x44')],{})['then'](function(_0x2c436b){var _0x360adf=_0x74ec76[_0x4e9b('0x45')][_0x4e9b('0x46')]({'plain':!![]});if(!_0x360adf)throw new Error(_0x4e9b('0x47'));if(_0x360adf['role']===_0x4e9b('0x45')){var _0x1c649f=_0x2c436b['get']({'plain':!![]});var _0x251b98=_0x4e9b('0x20');return db[_0x4e9b('0x48')][_0x4e9b('0x49')]({'where':{'name':_0x251b98,'userProfileId':_0x360adf['userProfileId']},'raw':!![]})['then'](function(_0x40c2d5){if(_0x40c2d5&&_0x40c2d5[_0x4e9b('0x4a')]===0x0){return db[_0x4e9b('0x21')][_0x4e9b('0x43')]({'name':_0x1c649f[_0x4e9b('0x24')],'resourceId':_0x1c649f['id'],'type':_0x40c2d5[_0x4e9b('0x24')],'sectionId':_0x40c2d5['id']},{})[_0x4e9b('0x1e')](function(){return _0x2c436b;});}else{return _0x2c436b;}})[_0x4e9b('0x3d')](function(_0x3cfc19){logger[_0x4e9b('0x22')](_0x4e9b('0x4b'),_0x3cfc19);throw _0x3cfc19;});}return _0x2c436b;})[_0x4e9b('0x1e')](respondWithResult(_0x4dda0e,0xc9))['catch'](handleError(_0x4dda0e,null));};exports['update']=function(_0xed36bd,_0x23b9b5){if(_0xed36bd['body']['id']){delete _0xed36bd[_0x4e9b('0x44')]['id'];}return db[_0x4e9b('0x27')]['find']({'where':{'id':_0xed36bd[_0x4e9b('0x3f')]['id']}})[_0x4e9b('0x1e')](handleEntityNotFound(_0x23b9b5,null))[_0x4e9b('0x1e')](saveUpdates(_0xed36bd[_0x4e9b('0x44')],null))[_0x4e9b('0x1e')](respondWithResult(_0x23b9b5,null))[_0x4e9b('0x3d')](handleError(_0x23b9b5,null));};exports['destroy']=function(_0x2849d6,_0x6a33d0){return db['Pause']['find']({'where':{'id':_0x2849d6['params']['id']}})[_0x4e9b('0x1e')](handleEntityNotFound(_0x6a33d0,null))[_0x4e9b('0x1e')](removeEntity(_0x6a33d0,null))[_0x4e9b('0x3d')](handleError(_0x6a33d0,null));};
\ No newline at end of file
index cc53681..7208967 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['bluebird','../../config/environment','./pause.attributes','exports','define','Pause','tools_pauses','lodash','util','../../config/logger','api','moment'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x5a776b,_0x46f785){_0x5a776b=_0x5a776b-0x0;var _0xbbef59=_0xc4aa[_0x5a776b];return _0xbbef59;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var logger=require(_0xac4a('0x2'))(_0xac4a('0x3'));var moment=require(_0xac4a('0x4'));var BPromise=require(_0xac4a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xac4a('0x6'));var attributes=require(_0xac4a('0x7'));module[_0xac4a('0x8')]=function(_0x215f39,_0x96be2b){return _0x215f39[_0xac4a('0x9')](_0xac4a('0xa'),attributes,{'tableName':_0xac4a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7fbe=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./pause.attributes','exports','define','Pause'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x428c50,_0x49dc7a){_0x428c50=_0x428c50-0x0;var _0x3779b6=_0x7fbe[_0x428c50];return _0x3779b6;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe7fb('0x0'))(_0xe7fb('0x1'));var moment=require(_0xe7fb('0x2'));var BPromise=require(_0xe7fb('0x3'));var rp=require(_0xe7fb('0x4'));var fs=require('fs');var path=require(_0xe7fb('0x5'));var rimraf=require(_0xe7fb('0x6'));var config=require(_0xe7fb('0x7'));var attributes=require(_0xe7fb('0x8'));module[_0xe7fb('0x9')]=function(_0x290172,_0x12d1b0){return _0x290172[_0xe7fb('0xa')](_0xe7fb('0xb'),attributes,{'tableName':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bca3711..662cb57 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(_0x5c406c,_0x442421){var _0x1dce3d=function(_0x176bd1){while(--_0x176bd1){_0x5c406c['push'](_0x5c406c['shift']());}};_0x1dce3d(++_0x442421);}(_0xb10b,0x12a));var _0xbb10=function(_0x171d07,_0x59c974){_0x171d07=_0x171d07-0x0;var _0x135563=_0xb10b[_0x171d07];return _0x135563;};'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(_0x5e5dbc,_0x3cefe8){var _0x5df6b4=function(_0x2e2b1f){while(--_0x2e2b1f){_0x5e5dbc['push'](_0x5e5dbc['shift']());}};_0x5df6b4(++_0x3cefe8);}(_0xb10b,0x12a));var _0xbb10=function(_0xef9edb,_0x406d7b){_0xef9edb=_0xef9edb-0x0;var _0x3583e3=_0xb10b[_0xef9edb];return _0x3583e3;};'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 9818d26..3f993fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ad3=['webhookGet','/:id','show','download','root','server/files/plugins','replace','format','%s-%s%s','originalname','extname','now','post','single','file','/webhook','webhookPost','put','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get','isAuthenticated','index'];(function(_0x1277c8,_0x272fb9){var _0x33deca=function(_0x23f6a7){while(--_0x23f6a7){_0x1277c8['push'](_0x1277c8['shift']());}};_0x33deca(++_0x272fb9);}(_0x5ad3,0x1e2));var _0x35ad=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x5ad3[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0x35ad('0x0'));var util=require(_0x35ad('0x1'));var path=require(_0x35ad('0x2'));var timeout=require(_0x35ad('0x3'));var express=require('express');var router=express[_0x35ad('0x4')]();var fs_extra=require(_0x35ad('0x5'));var auth=require(_0x35ad('0x6'));var interaction=require(_0x35ad('0x7'));var config=require(_0x35ad('0x8'));var controller=require(_0x35ad('0x9'));router[_0x35ad('0xa')]('/',auth[_0x35ad('0xb')](),controller[_0x35ad('0xc')]);router[_0x35ad('0xa')]('/webhook',controller[_0x35ad('0xd')]);router[_0x35ad('0xa')](_0x35ad('0xe'),auth['isAuthenticated'](),controller[_0x35ad('0xf')]);router['get']('/:id/download',auth[_0x35ad('0xb')](),controller[_0x35ad('0x10')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x34c2cb,_0x3a70a9,_0x4ad760){_0x4ad760(null,path['join'](config[_0x35ad('0x11')],_0x35ad('0x12')));},'filename':function(_0x4cf6bd,_0x3c4dd5,_0x33e2ec){_0x3c4dd5['originalname']=_0x3c4dd5['originalname'][_0x35ad('0x13')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x33e2ec(null,util[_0x35ad('0x14')](_0x35ad('0x15'),path['basename'](_0x3c4dd5[_0x35ad('0x16')],path[_0x35ad('0x17')](_0x3c4dd5['originalname'])),Date[_0x35ad('0x18')](),path['extname'](_0x3c4dd5['originalname'])));}})});router[_0x35ad('0x19')]('/',upload[_0x35ad('0x1a')](_0x35ad('0x1b')),controller['upload']);router[_0x35ad('0x19')](_0x35ad('0x1c'),controller[_0x35ad('0x1d')]);router[_0x35ad('0x1e')](_0x35ad('0xe'),auth[_0x35ad('0xb')](),controller['update']);router[_0x35ad('0x1f')](_0x35ad('0xe'),auth['isAuthenticated'](),controller['delete']);module[_0x35ad('0x20')]=router;
\ No newline at end of file
+var _0x0c02=['util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get','isAuthenticated','index','/:id','show','/:id/download','join','root','server/files/plugins','replace','format','%s-%s%s','basename','originalname','extname','now','post','single','file','upload','/webhook','update','delete','exports'];(function(_0x3828c3,_0x429e9a){var _0x3929f5=function(_0x5e9b1c){while(--_0x5e9b1c){_0x3828c3['push'](_0x3828c3['shift']());}};_0x3929f5(++_0x429e9a);}(_0x0c02,0x84));var _0x20c0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0c02[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x20c0('0x0'));var path=require(_0x20c0('0x1'));var timeout=require('connect-timeout');var express=require(_0x20c0('0x2'));var router=express[_0x20c0('0x3')]();var fs_extra=require(_0x20c0('0x4'));var auth=require(_0x20c0('0x5'));var interaction=require(_0x20c0('0x6'));var config=require(_0x20c0('0x7'));var controller=require(_0x20c0('0x8'));router[_0x20c0('0x9')]('/',auth[_0x20c0('0xa')](),controller[_0x20c0('0xb')]);router['get']('/webhook',controller['webhookGet']);router['get'](_0x20c0('0xc'),auth[_0x20c0('0xa')](),controller[_0x20c0('0xd')]);router[_0x20c0('0x9')](_0x20c0('0xe'),auth[_0x20c0('0xa')](),controller['download']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x52eb0d,_0x578592,_0x56770a){_0x56770a(null,path[_0x20c0('0xf')](config[_0x20c0('0x10')],_0x20c0('0x11')));},'filename':function(_0x207b1e,_0x4ed79e,_0x56fa09){_0x4ed79e['originalname']=_0x4ed79e['originalname'][_0x20c0('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x56fa09(null,util[_0x20c0('0x13')](_0x20c0('0x14'),path[_0x20c0('0x15')](_0x4ed79e[_0x20c0('0x16')],path[_0x20c0('0x17')](_0x4ed79e[_0x20c0('0x16')])),Date[_0x20c0('0x18')](),path[_0x20c0('0x17')](_0x4ed79e['originalname'])));}})});router[_0x20c0('0x19')]('/',upload[_0x20c0('0x1a')](_0x20c0('0x1b')),controller[_0x20c0('0x1c')]);router[_0x20c0('0x19')](_0x20c0('0x1d'),controller['webhookPost']);router['put']('/:id',auth[_0x20c0('0xa')](),controller[_0x20c0('0x1e')]);router[_0x20c0('0x1f')](_0x20c0('0xc'),auth['isAuthenticated'](),controller[_0x20c0('0x1f')]);module[_0x20c0('0x20')]=router;
\ No newline at end of file
index a3457f2..8277059 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7916=['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','sequelize','exports','STRING','ENUM','html'];(function(_0x281e5e,_0xf320e2){var _0x5a22d2=function(_0x405ff9){while(--_0x405ff9){_0x281e5e['push'](_0x281e5e['shift']());}};_0x5a22d2(++_0xf320e2);}(_0x7916,0x70));var _0x6791=function(_0x2a0f15,_0x524f98){_0x2a0f15=_0x2a0f15-0x0;var _0x490c3c=_0x7916[_0x2a0f15];return _0x490c3c;};'use strict';var Sequelize=require(_0x6791('0x0'));module[_0x6791('0x1')]={'name':{'type':Sequelize[_0x6791('0x2')]},'type':{'type':Sequelize[_0x6791('0x3')](_0x6791('0x4'),_0x6791('0x5'))},'description':{'type':Sequelize[_0x6791('0x6')]},'version':{'type':Sequelize['TEXT']},'path':{'type':Sequelize[_0x6791('0x2')],'comment':_0x6791('0x7')},'active':{'type':Sequelize[_0x6791('0x8')],'defaultValue':0x0,'comment':_0x6791('0x9')},'sidebar':{'type':Sequelize[_0x6791('0x3')](_0x6791('0xa'),_0x6791('0xb'),'always','never'),'defaultValue':_0x6791('0xc'),'comment':'Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.'},'icon':{'type':Sequelize[_0x6791('0x2')]},'adminUrl':{'type':Sequelize[_0x6791('0x2')]},'agentUrl':{'type':Sequelize[_0x6791('0x2')]},'scriptName':{'type':Sequelize[_0x6791('0x2')]},'scriptPath':{'type':Sequelize[_0x6791('0x2')]}};
\ No newline at end of file
+var _0xd6cb=['ENUM','html','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','STRING'];(function(_0x4a3eef,_0x16388a){var _0x2d5b79=function(_0x530975){while(--_0x530975){_0x4a3eef['push'](_0x4a3eef['shift']());}};_0x2d5b79(++_0x16388a);}(_0xd6cb,0xe6));var _0xbd6c=function(_0x5e56de,_0x189fa7){_0x5e56de=_0x5e56de-0x0;var _0x26c6ec=_0xd6cb[_0x5e56de];return _0x26c6ec;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xbd6c('0x0')]},'type':{'type':Sequelize[_0xbd6c('0x1')](_0xbd6c('0x2'),'script')},'description':{'type':Sequelize[_0xbd6c('0x3')]},'version':{'type':Sequelize[_0xbd6c('0x3')]},'path':{'type':Sequelize['STRING'],'comment':_0xbd6c('0x4')},'active':{'type':Sequelize[_0xbd6c('0x5')],'defaultValue':0x0,'comment':_0xbd6c('0x6')},'sidebar':{'type':Sequelize['ENUM'](_0xbd6c('0x7'),_0xbd6c('0x8'),_0xbd6c('0x9'),_0xbd6c('0xa')),'defaultValue':_0xbd6c('0x9'),'comment':'Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.'},'icon':{'type':Sequelize[_0xbd6c('0x0')]},'adminUrl':{'type':Sequelize['STRING']},'agentUrl':{'type':Sequelize[_0xbd6c('0x0')]},'scriptName':{'type':Sequelize[_0xbd6c('0x0')]},'scriptPath':{'type':Sequelize[_0xbd6c('0x0')]}};
\ No newline at end of file
index 67e79d8..74081c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0b6=['isDirectory','some','readFileSync','manifest.json','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','views','Invalid\x20manifest:\x20views\x20missing','agent','Invalid\x20manifest:\x20no\x20view\x20specified','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon-apps','html','admin','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','script','scriptName','create','body','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','params','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','hostname','http://localhost:','encoding','%s%s','headers','content-length','endsWith','statusCode','sendStatus','webhookPost','\x27PORT\x27\x20parameter\x20not\x20specified','method','content-type','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','extract-zip','archiver','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./plugin.socket','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','get','Plugins','then','error','stack','name','send','index','map','Plugin','rawAttributes','fieldName','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','rows','catch','show','include','find','download','join','root','server/files/plugins','format','basename','createWriteStream','code','ENOENT','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','dirname','node_modules/**/*','attachments/**/*','finalize','existsSync','Plugin\x20not\x20found','%s.zip','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','file','filename','extname','Plugin\x20upload\x20filepath:\x20%s','chmodSync','0777','readdirSync','lstatSync','isFile','Invalid\x20plugin\x20structure'];(function(_0x2cd146,_0x390eed){var _0x4063bb=function(_0x4877eb){while(--_0x4877eb){_0x2cd146['push'](_0x2cd146['shift']());}};_0x4063bb(++_0x390eed);}(_0xe0b6,0x195));var _0x6e0b=function(_0x386525,_0xefae6){_0x386525=_0x386525-0x0;var _0x14d015=_0xe0b6[_0x386525];return _0x14d015;};'use strict';var emlformat=require(_0x6e0b('0x0'));var rimraf=require(_0x6e0b('0x1'));var zipdir=require(_0x6e0b('0x2'));var jsonpatch=require(_0x6e0b('0x3'));var rp=require(_0x6e0b('0x4'));var moment=require('moment');var BPromise=require(_0x6e0b('0x5'));var Mustache=require('mustache');var util=require(_0x6e0b('0x6'));var path=require(_0x6e0b('0x7'));var sox=require('sox');var csv=require(_0x6e0b('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6e0b('0x9'));var _=require(_0x6e0b('0xa'));var squel=require(_0x6e0b('0xb'));var crypto=require(_0x6e0b('0xc'));var jsforce=require(_0x6e0b('0xd'));var deskjs=require(_0x6e0b('0xe'));var toCsv=require(_0x6e0b('0x8'));var querystring=require(_0x6e0b('0xf'));var Papa=require(_0x6e0b('0x10'));var extract=require(_0x6e0b('0x11'));var rimraf=require(_0x6e0b('0x1'));var archiver=require(_0x6e0b('0x12'));var Redis=require(_0x6e0b('0x13'));var authService=require(_0x6e0b('0x14'));var qs=require(_0x6e0b('0x15'));var as=require(_0x6e0b('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6e0b('0x17'));var utils=require('../../config/utils');var config=require(_0x6e0b('0x18'));var licenseUtil=require(_0x6e0b('0x19'));var db=require(_0x6e0b('0x1a'))['db'];config[_0x6e0b('0x1b')]=_[_0x6e0b('0x1c')](config[_0x6e0b('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0x6e0b('0x1d'))(new Redis(config['redis']));require(_0x6e0b('0x1e'))['register'](socket);function respondWithStatusCode(_0x45ffac,_0x4861c8){_0x4861c8=_0x4861c8||0xcc;return function(_0x922f7b){if(_0x922f7b){return _0x45ffac['sendStatus'](_0x4861c8);}return _0x45ffac[_0x6e0b('0x1f')](_0x4861c8)[_0x6e0b('0x20')]();};}function respondWithResult(_0x40a365,_0x34fe1a){_0x34fe1a=_0x34fe1a||0xc8;return function(_0x1fa83f){if(_0x1fa83f){return _0x40a365[_0x6e0b('0x1f')](_0x34fe1a)[_0x6e0b('0x21')](_0x1fa83f);}};}function respondWithFilteredResult(_0x2aca9d,_0xfde8b2){return function(_0x5a71dc){if(_0x5a71dc){var _0x38a32c=typeof _0xfde8b2[_0x6e0b('0x22')]===_0x6e0b('0x23')&&typeof _0xfde8b2[_0x6e0b('0x24')]==='undefined';var _0x615b13=_0x5a71dc[_0x6e0b('0x25')];var _0x1e1782=_0x38a32c?0x0:_0xfde8b2[_0x6e0b('0x22')];var _0x5761ed=_0x38a32c?_0x5a71dc['count']:_0xfde8b2[_0x6e0b('0x22')]+_0xfde8b2['limit'];var _0x474a09;if(_0x5761ed>=_0x615b13){_0x5761ed=_0x615b13;_0x474a09=0xc8;}else{_0x474a09=0xce;}_0x2aca9d[_0x6e0b('0x1f')](_0x474a09);return _0x2aca9d[_0x6e0b('0x26')](_0x6e0b('0x27'),_0x1e1782+'-'+_0x5761ed+'/'+_0x615b13)['json'](_0x5a71dc);}return null;};}function patchUpdates(_0x10cbbb){return function(_0x3663d6){try{jsonpatch[_0x6e0b('0x28')](_0x3663d6,_0x10cbbb,!![]);}catch(_0x48e38a){return BPromise['reject'](_0x48e38a);}return _0x3663d6[_0x6e0b('0x29')]();};}function saveUpdates(_0x354c0a,_0x403d74){return function(_0xa46daa){if(_0xa46daa){return _0xa46daa[_0x6e0b('0x2a')](_0x354c0a)['then'](function(_0x14ecc3){return _0x14ecc3;});}return null;};}function removeEntity(_0x334bb3,_0x577370){return function(_0x7f9c66){if(_0x7f9c66){return _0x7f9c66[_0x6e0b('0x2b')]()['then'](function(){var _0x5d6c33=_0x7f9c66[_0x6e0b('0x2c')]({'plain':!![]});var _0x5ba603=_0x6e0b('0x2d');return db['UserProfileResource'][_0x6e0b('0x2b')]({'where':{'type':_0x5ba603,'resourceId':_0x5d6c33['id']}})['then'](function(){return _0x7f9c66;});})[_0x6e0b('0x2e')](function(){_0x334bb3[_0x6e0b('0x1f')](0xcc)[_0x6e0b('0x20')]();});}};}function handleEntityNotFound(_0x2ae29b,_0x3fc1b3){return function(_0x49102c){if(!_0x49102c){_0x2ae29b['sendStatus'](0x194);}return _0x49102c;};}function handleError(_0xbe16f8,_0x1755e6){_0x1755e6=_0x1755e6||0x1f4;return function(_0x54660f){logger[_0x6e0b('0x2f')](_0x54660f[_0x6e0b('0x30')]);if(_0x54660f[_0x6e0b('0x31')]){delete _0x54660f[_0x6e0b('0x31')];}_0xbe16f8[_0x6e0b('0x1f')](_0x1755e6)[_0x6e0b('0x32')](_0x54660f);};}exports[_0x6e0b('0x33')]=function(_0x22c20e,_0x2c78bf){var _0x4e5465={},_0x517e9d={},_0x1759a0={'count':0x0,'rows':[]};var _0x5912ed=_[_0x6e0b('0x34')](db[_0x6e0b('0x35')][_0x6e0b('0x36')],function(_0xa004a2){return{'name':_0xa004a2[_0x6e0b('0x37')],'type':_0xa004a2['type']['key']};});_0x517e9d[_0x6e0b('0x38')]=_['map'](_0x5912ed,'name');_0x517e9d[_0x6e0b('0x39')]=_[_0x6e0b('0x3a')](_0x22c20e[_0x6e0b('0x39')]);_0x517e9d[_0x6e0b('0x3b')]=_['intersection'](_0x517e9d[_0x6e0b('0x38')],_0x517e9d[_0x6e0b('0x39')]);_0x4e5465[_0x6e0b('0x3c')]=_[_0x6e0b('0x3d')](_0x517e9d[_0x6e0b('0x38')],qs['fields'](_0x22c20e['query'][_0x6e0b('0x3e')]));_0x4e5465[_0x6e0b('0x3c')]=_0x4e5465[_0x6e0b('0x3c')][_0x6e0b('0x3f')]?_0x4e5465['attributes']:_0x517e9d[_0x6e0b('0x38')];if(!_0x22c20e[_0x6e0b('0x39')][_0x6e0b('0x40')](_0x6e0b('0x41'))){_0x4e5465[_0x6e0b('0x24')]=qs[_0x6e0b('0x24')](_0x22c20e[_0x6e0b('0x39')][_0x6e0b('0x24')]);_0x4e5465[_0x6e0b('0x22')]=qs['offset'](_0x22c20e['query'][_0x6e0b('0x22')]);}_0x4e5465[_0x6e0b('0x42')]=qs[_0x6e0b('0x43')](_0x22c20e[_0x6e0b('0x39')][_0x6e0b('0x43')]);_0x4e5465[_0x6e0b('0x44')]=qs[_0x6e0b('0x3b')](_[_0x6e0b('0x45')](_0x22c20e[_0x6e0b('0x39')],_0x517e9d[_0x6e0b('0x3b')]),_0x5912ed);if(_0x22c20e['query']['filter']){_0x4e5465[_0x6e0b('0x44')]=_[_0x6e0b('0x46')](_0x4e5465[_0x6e0b('0x44')],{'$or':_[_0x6e0b('0x34')](_0x5912ed,function(_0x1b6c63){if(_0x1b6c63[_0x6e0b('0x47')]!==_0x6e0b('0x48')){var _0x3aa020={};_0x3aa020[_0x1b6c63[_0x6e0b('0x31')]]={'$like':'%'+_0x22c20e[_0x6e0b('0x39')][_0x6e0b('0x49')]+'%'};return _0x3aa020;}})});}_0x4e5465=_[_0x6e0b('0x46')]({},_0x4e5465,_0x22c20e[_0x6e0b('0x4a')]);var _0x1330cd={'where':_0x4e5465[_0x6e0b('0x44')]};return db[_0x6e0b('0x35')]['count'](_0x1330cd)[_0x6e0b('0x2e')](function(_0x536e25){_0x1759a0[_0x6e0b('0x25')]=_0x536e25;if(_0x22c20e[_0x6e0b('0x39')][_0x6e0b('0x4b')]){_0x4e5465['include']=[{'all':!![]}];}return db['Plugin']['findAll'](_0x4e5465);})['then'](function(_0x583021){_0x1759a0[_0x6e0b('0x4c')]=_0x583021;return _0x1759a0;})[_0x6e0b('0x2e')](respondWithFilteredResult(_0x2c78bf,_0x4e5465))[_0x6e0b('0x4d')](handleError(_0x2c78bf,null));};exports[_0x6e0b('0x4e')]=function(_0x48bb5e,_0x4e235d){var _0x2e3b26={'raw':!![],'where':{'id':_0x48bb5e['params']['id']}},_0x37d334={};_0x37d334[_0x6e0b('0x38')]=_[_0x6e0b('0x3a')](db[_0x6e0b('0x35')][_0x6e0b('0x36')]);_0x37d334[_0x6e0b('0x39')]=_[_0x6e0b('0x3a')](_0x48bb5e[_0x6e0b('0x39')]);_0x37d334[_0x6e0b('0x3b')]=_[_0x6e0b('0x3d')](_0x37d334[_0x6e0b('0x38')],_0x37d334[_0x6e0b('0x39')]);_0x2e3b26[_0x6e0b('0x3c')]=_[_0x6e0b('0x3d')](_0x37d334[_0x6e0b('0x38')],qs['fields'](_0x48bb5e[_0x6e0b('0x39')][_0x6e0b('0x3e')]));_0x2e3b26['attributes']=_0x2e3b26[_0x6e0b('0x3c')]['length']?_0x2e3b26[_0x6e0b('0x3c')]:_0x37d334[_0x6e0b('0x38')];if(_0x48bb5e['query']['includeAll']){_0x2e3b26[_0x6e0b('0x4f')]=[{'all':!![]}];}_0x2e3b26=_[_0x6e0b('0x46')]({},_0x2e3b26,_0x48bb5e[_0x6e0b('0x4a')]);return db[_0x6e0b('0x35')][_0x6e0b('0x50')](_0x2e3b26)[_0x6e0b('0x2e')](handleEntityNotFound(_0x4e235d,null))[_0x6e0b('0x2e')](respondWithResult(_0x4e235d,null))[_0x6e0b('0x4d')](handleError(_0x4e235d,null));};exports[_0x6e0b('0x51')]=function(_0x32e7fe,_0x58ee9d,_0x456a70){return db[_0x6e0b('0x35')][_0x6e0b('0x50')]({'where':{'id':_0x32e7fe['params']['id']},'attributes':[_0x6e0b('0x31'),_0x6e0b('0x7')],'raw':!![]})['then'](handleEntityNotFound(_0x58ee9d,null))['then'](function(_0x1aa78e){if(_0x1aa78e){var _0x113d2f=path[_0x6e0b('0x52')](config[_0x6e0b('0x53')],_0x6e0b('0x54'),util[_0x6e0b('0x55')]('%s.zip',path[_0x6e0b('0x56')](_0x1aa78e['path'])));var _0x12d2df=fs[_0x6e0b('0x57')](_0x113d2f);var _0x4d2971=archiver('zip',{'zlib':{'level':0x9}});_0x4d2971['on']('warning',function(_0x665467){if(_0x665467[_0x6e0b('0x58')]===_0x6e0b('0x59')){logger['error'](_0x665467);}else{throw new db[(_0x6e0b('0x5a'))][(_0x6e0b('0x5b'))]('Error\x20while\x20generating\x20the\x20zip\x20archive');}});_0x4d2971['on']('error',function(_0x55e4fb){throw new db[(_0x6e0b('0x5a'))][(_0x6e0b('0x5b'))](_0x6e0b('0x5c'));});_0x4d2971[_0x6e0b('0x5d')](_0x12d2df);_0x4d2971[_0x6e0b('0x5e')](_0x6e0b('0x5f'),{'cwd':path[_0x6e0b('0x52')](config[_0x6e0b('0x53')],_0x6e0b('0x54'),path[_0x6e0b('0x60')](_0x1aa78e[_0x6e0b('0x7')])),'ignore':[path['join'](path['basename'](_0x1aa78e[_0x6e0b('0x7')]),_0x6e0b('0x61')),path[_0x6e0b('0x52')](path[_0x6e0b('0x56')](_0x1aa78e[_0x6e0b('0x7')]),_0x6e0b('0x62'))],'nodir':!![]})[_0x6e0b('0x63')]();_0x12d2df['on']('close',function(){if(!fs[_0x6e0b('0x64')](_0x113d2f)){throw new db[(_0x6e0b('0x5a'))][(_0x6e0b('0x5b'))](_0x6e0b('0x65'));}return _0x58ee9d[_0x6e0b('0x51')](_0x113d2f,util['format'](_0x6e0b('0x66'),path['basename'](_0x1aa78e[_0x6e0b('0x7')])),function(_0x963f32){if(_0x963f32){throw new db[(_0x6e0b('0x5a'))][(_0x6e0b('0x5b'))](_0x6e0b('0x67'));}fs[_0x6e0b('0x68')](_0x113d2f);logger[_0x6e0b('0x69')](_0x6e0b('0x6a'));logger[_0x6e0b('0x69')]('Temporary\x20file\x20removed');});});}return null;})['catch'](handleError(_0x58ee9d,null));};exports['upload']=function(_0x26490d,_0x2d9583,_0x28b564){var _0x480634=path['basename'](_0x26490d[_0x6e0b('0x6b')][_0x6e0b('0x6c')],path[_0x6e0b('0x6d')](_0x26490d['file']['filename']));var _0x4bd7d8=path['join'](config[_0x6e0b('0x53')],_0x6e0b('0x54'),_0x26490d[_0x6e0b('0x6b')][_0x6e0b('0x6c')]);var _0x391b04=path[_0x6e0b('0x52')](config[_0x6e0b('0x53')],'server/files/plugins',_0x480634);logger['info'](_0x6e0b('0x6e'),_0x4bd7d8);logger[_0x6e0b('0x69')]('Plugin\x20upload\x20destination:\x20%s',_0x391b04);try{fs[_0x6e0b('0x6f')](_0x4bd7d8,parseInt(_0x6e0b('0x70'),0x8));extract(_0x4bd7d8,{'dir':_0x391b04},function(_0x169f12){if(_0x169f12){logger['error'](_0x169f12);handleError(_0x169f12,!![]);};var _0x4fbd02=fs[_0x6e0b('0x71')](_0x391b04);if(_0x4fbd02[_0x6e0b('0x3f')]>0x1){removeReferences(_0x4bd7d8,_0x391b04);logger['error']('Invalid\x20plugin\x20structure');return _0x28b564(new Error('Invalid\x20plugin\x20structure'));}var _0x6dbd52=fs[_0x6e0b('0x72')](path[_0x6e0b('0x52')](_0x391b04,_0x4fbd02[0x0]));if(_0x6dbd52[_0x6e0b('0x73')]()){removeReferences(_0x4bd7d8,_0x391b04);logger[_0x6e0b('0x2f')]('Invalid\x20plugin\x20structure');return _0x28b564(new Error(_0x6e0b('0x74')));}if(_0x6dbd52[_0x6e0b('0x75')]()){var _0x15bf65=fs['readdirSync'](path[_0x6e0b('0x52')](_0x391b04,_0x4fbd02[0x0]));if(_0x15bf65[_0x6e0b('0x3f')]===0x0){removeReferences(_0x4bd7d8,_0x391b04);logger[_0x6e0b('0x2f')](_0x6e0b('0x74'));return _0x28b564(new Error(_0x6e0b('0x74')));}var _0x1b3de4=_0x15bf65[_0x6e0b('0x76')](function(_0x38ff1e){return _0x38ff1e==='manifest.json';});if(!_0x1b3de4){return _0x28b564(new Error('Plugin\x20manifest\x20missing'));}var _0x2501ab=fs[_0x6e0b('0x77')](path[_0x6e0b('0x52')](_0x391b04,_0x4fbd02[0x0],_0x6e0b('0x78')));var _0x110a81=JSON[_0x6e0b('0x79')](_0x2501ab);if('undefined'==typeof _0x110a81[_0x6e0b('0x31')]){return _0x28b564(new Error(_0x6e0b('0x7a')));}if(_0x6e0b('0x23')==typeof _0x110a81[_0x6e0b('0x47')]){return _0x28b564(new Error(_0x6e0b('0x7b')));}if(_0x6e0b('0x23')==typeof _0x110a81[_0x6e0b('0x7c')]){return _0x28b564(new Error(_0x6e0b('0x7d')));}if('undefined'==typeof _0x110a81[_0x6e0b('0x7e')]){return _0x28b564(new Error(_0x6e0b('0x7f')));}if(_0x110a81[_0x6e0b('0x47')]==='html'){if(_0x6e0b('0x23')==typeof _0x110a81[_0x6e0b('0x7e')][_0x6e0b('0x80')]){return _0x28b564(new Error(_0x6e0b('0x81')));}if(_0x6e0b('0x23')==typeof _0x110a81[_0x6e0b('0x7e')]['views']['admin']&&_0x6e0b('0x23')==typeof _0x110a81[_0x6e0b('0x7e')]['views'][_0x6e0b('0x82')]){return _0x28b564(new Error(_0x6e0b('0x83')));}}else if(_0x110a81['type']==='script'){if(_0x6e0b('0x23')==typeof _0x110a81[_0x6e0b('0x7e')]['scriptName']){return _0x28b564(new Error(_0x6e0b('0x84')));}if('undefined'==typeof _0x110a81['parameters'][_0x6e0b('0x85')]){return _0x28b564(new Error(_0x6e0b('0x86')));}}else{return _0x28b564(new Error(_0x6e0b('0x87')));}var _0x444a3e=_0x110a81['name'];var _0x384567=_0x110a81[_0x6e0b('0x88')];var _0x4320c1=_0x110a81[_0x6e0b('0x47')];var _0x50c46d=_0x110a81[_0x6e0b('0x89')]?_0x110a81[_0x6e0b('0x89')]:_0x6e0b('0x8a');var _0x26df6d=_0x110a81['icon']?_0x110a81['icon']:_0x6e0b('0x8b');var _0x3123eb='';var _0x1ed897='';var _0x612af='';var _0x23b6a7='';var _0x3a11d6=_0x110a81[_0x6e0b('0x7c')];if(_0x4320c1===_0x6e0b('0x8c')){if(_0x6e0b('0x23')!=typeof _0x110a81[_0x6e0b('0x7e')][_0x6e0b('0x80')]['admin']){var _0x5326f3=_0x110a81['parameters'][_0x6e0b('0x80')][_0x6e0b('0x8d')];if(!/^(f|ht)tps?:\/\//i[_0x6e0b('0x8e')](_0x5326f3)){_0x3123eb=path[_0x6e0b('0x52')](_0x6e0b('0x8f'),_0x480634,_0x4fbd02[0x0],_0x5326f3);}else{_0x3123eb=_0x5326f3;}}else{logger[_0x6e0b('0x69')](_0x6e0b('0x90'));}if(_0x6e0b('0x23')!=typeof _0x110a81[_0x6e0b('0x7e')][_0x6e0b('0x80')][_0x6e0b('0x82')]){var _0x15f462=_0x110a81[_0x6e0b('0x7e')]['views'][_0x6e0b('0x82')];if(!/^(f|ht)tps?:\/\//i[_0x6e0b('0x8e')](_0x15f462)){_0x1ed897=path[_0x6e0b('0x52')](_0x6e0b('0x8f'),_0x480634,_0x4fbd02[0x0],_0x15f462);}else{_0x1ed897=_0x15f462;}}else{logger[_0x6e0b('0x69')](_0x6e0b('0x91'));}}else if(_0x4320c1===_0x6e0b('0x92')){_0x612af=_0x110a81['parameters'][_0x6e0b('0x93')];_0x23b6a7=_0x110a81[_0x6e0b('0x7e')]['scriptPath'];if('undefined'!=typeof _0x110a81[_0x6e0b('0x7e')][_0x6e0b('0x80')]){if(_0x6e0b('0x23')!=typeof _0x110a81[_0x6e0b('0x7e')][_0x6e0b('0x80')][_0x6e0b('0x8d')]){var _0x5326f3=_0x110a81[_0x6e0b('0x7e')][_0x6e0b('0x80')][_0x6e0b('0x8d')];if(!/^(f|ht)tps?:\/\//i[_0x6e0b('0x8e')](_0x5326f3)){_0x3123eb=path['join'](_0x6e0b('0x8f'),_0x480634,_0x4fbd02[0x0],_0x5326f3);}else{_0x3123eb=_0x5326f3;}}if(_0x6e0b('0x23')!=typeof _0x110a81[_0x6e0b('0x7e')][_0x6e0b('0x80')]['agent']){var _0x15f462=_0x110a81[_0x6e0b('0x7e')][_0x6e0b('0x80')][_0x6e0b('0x82')];if(!/^(f|ht)tps?:\/\//i['test'](_0x15f462)){_0x1ed897=path['join'](_0x6e0b('0x8f'),_0x480634,_0x4fbd02[0x0],_0x15f462);}else{_0x1ed897=_0x15f462;}}}}var _0x45ce0f={'name':_0x444a3e,'description':_0x384567,'path':path[_0x6e0b('0x52')](_0x480634,_0x4fbd02[0x0]),'type':_0x4320c1,'sidebar':_0x50c46d,'icon':_0x26df6d,'adminUrl':_0x3123eb,'agentUrl':_0x1ed897,'scriptName':_0x612af,'scriptPath':_0x23b6a7,'version':_0x3a11d6};removeReferences(_0x4bd7d8,null);return db[_0x6e0b('0x35')][_0x6e0b('0x94')](_0x45ce0f)['then'](function(_0x4ab260){var _0x3f8d09={'role':_0x26490d[_0x6e0b('0x95')][_0x6e0b('0x96')],'userProfileId':_0x26490d[_0x6e0b('0x95')]['userProfileId']};if(!_0x3f8d09)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3f8d09[_0x6e0b('0x96')]==='user'){var _0x13946e=_0x4ab260[_0x6e0b('0x2c')]({'plain':!![]});return db['UserProfileSection'][_0x6e0b('0x50')]({'where':{'name':_0x6e0b('0x2d'),'userProfileId':_0x3f8d09[_0x6e0b('0x97')]},'raw':!![]})['then'](function(_0x6950d9){if(_0x6950d9&&_0x6950d9[_0x6e0b('0x98')]===0x0){return db[_0x6e0b('0x99')][_0x6e0b('0x94')]({'name':_0x13946e['name'],'resourceId':_0x13946e['id'],'type':_0x6950d9[_0x6e0b('0x31')],'sectionId':_0x6950d9['id']},{})['then'](function(){return _0x4ab260;});}else{return _0x4ab260;}})[_0x6e0b('0x4d')](function(_0x3e5529){logger[_0x6e0b('0x2f')](_0x6e0b('0x9a'),_0x3e5529);throw _0x3e5529;});}return _0x4ab260;})[_0x6e0b('0x2e')](respondWithResult(_0x2d9583,null))['catch'](handleError(_0x2d9583,null));}});}catch(_0x44dfd2){_0x2d9583[_0x6e0b('0x1f')](0x1f4)['send'](_0x44dfd2);}};function removeReferences(_0x7d3d71,_0xbed94c){try{if(_0x7d3d71){fs[_0x6e0b('0x68')](_0x7d3d71);logger[_0x6e0b('0x69')](_0x6e0b('0x9b'));}if(_0xbed94c){rimraf(_0xbed94c,function(){});logger[_0x6e0b('0x69')]('Extracted\x20folder\x20removed');}}catch(_0x59470f){logger['error'](_0x59470f);}}exports[_0x6e0b('0x2a')]=function(_0x45c5a1,_0xe2d180,_0x2af761){return db['Plugin'][_0x6e0b('0x50')]({'where':{'id':_0x45c5a1[_0x6e0b('0x9c')]['id']}})[_0x6e0b('0x2e')](handleEntityNotFound(_0xe2d180,null))[_0x6e0b('0x2e')](saveUpdates(_0x45c5a1[_0x6e0b('0x95')],null))[_0x6e0b('0x2e')](respondWithResult(_0xe2d180,null))[_0x6e0b('0x4d')](handleError(_0xe2d180,null));};exports['delete']=function(_0xa9c48d,_0x313cf9,_0x33172e){return db['Plugin']['find']({'where':{'id':_0xa9c48d['params']['id']}})['then'](function(_0x8a7253){if(_0x8a7253){return _0x8a7253[_0x6e0b('0x2b')]();}})[_0x6e0b('0x2e')](function(_0x40a272){rimraf(path[_0x6e0b('0x52')](config[_0x6e0b('0x53')],_0x6e0b('0x54'),path[_0x6e0b('0x60')](_0x40a272[_0x6e0b('0x7')])),function(){});return _0x40a272;})[_0x6e0b('0x2e')](handleEntityNotFound(_0x313cf9,null))[_0x6e0b('0x2e')](respondWithStatusCode(_0x313cf9,null))[_0x6e0b('0x4d')](handleError(_0x313cf9,null));};exports[_0x6e0b('0x9d')]=function(_0x4ad0a7,_0x4c20bd,_0x4c9d14){return BPromise[_0x6e0b('0x9e')]()[_0x6e0b('0x2e')](function(){if(!_0x4ad0a7[_0x6e0b('0x39')][_0x6e0b('0x7')]){throw new Error(_0x6e0b('0x9f'));}if(!_0x4ad0a7[_0x6e0b('0x39')][_0x6e0b('0xa0')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x28a952=_0x4ad0a7['query'][_0x6e0b('0xa1')]?_0x4ad0a7[_0x6e0b('0x39')][_0x6e0b('0xa1')]+':'+_0x4ad0a7['query'][_0x6e0b('0xa0')]:_0x6e0b('0xa2')+_0x4ad0a7['query'][_0x6e0b('0xa0')];var _0x3c3808=_0x4ad0a7[_0x6e0b('0x39')][_0x6e0b('0x21')]?_0x4ad0a7['query']['json']:!![];var _0x72303e=_0x4ad0a7[_0x6e0b('0x39')][_0x6e0b('0xa3')]?_0x4ad0a7[_0x6e0b('0x39')][_0x6e0b('0xa3')]:null;var _0x27e581={'method':_0x4ad0a7['method'],'uri':util['format'](_0x6e0b('0xa4'),_0x28a952,_0x4ad0a7[_0x6e0b('0x39')]['path']),'json':_0x3c3808,'resolveWithFullResponse':!![],'encoding':_0x72303e,'qs':_0x4ad0a7[_0x6e0b('0x39')]};if(_0x4ad0a7['headers']){_0x27e581[_0x6e0b('0xa5')]=_0x4ad0a7[_0x6e0b('0xa5')];if(_0x27e581[_0x6e0b('0xa5')][_0x6e0b('0xa6')]){delete _0x27e581[_0x6e0b('0xa5')]['content-length'];}}if(_0x27e581[_0x6e0b('0xa5')]['content-type']){delete _0x27e581[_0x6e0b('0xa5')]['content-type'];}return rp(_0x27e581);})[_0x6e0b('0x2e')](function(_0x27f5d5){if(_0x27f5d5){_0x4c20bd[_0x6e0b('0x26')](_0x27f5d5[_0x6e0b('0xa5')]);logger[_0x6e0b('0x69')](_0x27f5d5[_0x6e0b('0x95')]);if(_[_0x6e0b('0xa7')](_0x4ad0a7['query'][_0x6e0b('0x7')],_0x6e0b('0x51'))&&_0x27f5d5[_0x6e0b('0xa8')]==0x1f4){return _0x4c20bd['sendStatus'](_0x27f5d5[_0x6e0b('0xa8')]);}else{return _0x4c20bd[_0x6e0b('0x1f')](_0x27f5d5['statusCode'])[_0x6e0b('0x32')](_0x27f5d5[_0x6e0b('0x95')]);}}else{return _0x4c20bd[_0x6e0b('0xa9')](0xc8);}})['catch'](handleError(_0x4c20bd,null));};exports[_0x6e0b('0xaa')]=function(_0x575ace,_0x3d35f4,_0xad5029){return BPromise[_0x6e0b('0x9e')]()['then'](function(){if(!_0x575ace[_0x6e0b('0x39')][_0x6e0b('0x7')]){throw new Error(_0x6e0b('0x9f'));}if(!_0x575ace[_0x6e0b('0x39')][_0x6e0b('0xa0')]){throw new Error(_0x6e0b('0xab'));}var _0xf427d8=_0x575ace[_0x6e0b('0x39')][_0x6e0b('0xa1')]?_0x575ace[_0x6e0b('0x39')]['hostname']+':'+_0x575ace[_0x6e0b('0x39')]['port']:_0x6e0b('0xa2')+_0x575ace['query'][_0x6e0b('0xa0')];var _0x4b2c6c=_0x575ace[_0x6e0b('0x39')][_0x6e0b('0x21')]?_0x575ace[_0x6e0b('0x39')]['json']:!![];var _0x334350=_0x575ace[_0x6e0b('0x39')]['encoding']?_0x575ace['query'][_0x6e0b('0xa3')]:null;var _0x284b4={'method':_0x575ace[_0x6e0b('0xac')],'uri':util[_0x6e0b('0x55')](_0x6e0b('0xa4'),_0xf427d8,_0x575ace[_0x6e0b('0x39')]['path']),'json':_0x4b2c6c,'resolveWithFullResponse':!![],'encoding':_0x334350,'body':_0x575ace[_0x6e0b('0x95')]};if(_0x575ace[_0x6e0b('0xa5')]){_0x284b4[_0x6e0b('0xa5')]=_0x575ace['headers'];if(_0x284b4[_0x6e0b('0xa5')][_0x6e0b('0xa6')]){delete _0x284b4[_0x6e0b('0xa5')][_0x6e0b('0xa6')];}}if(_0x284b4[_0x6e0b('0xa5')][_0x6e0b('0xad')]){delete _0x284b4[_0x6e0b('0xa5')][_0x6e0b('0xad')];}return rp(_0x284b4);})['then'](function(_0x337caa){if(_0x337caa){_0x3d35f4['set'](_0x337caa[_0x6e0b('0xa5')]);logger['info'](_0x337caa[_0x6e0b('0x95')]);return _0x3d35f4[_0x6e0b('0x1f')](_0x337caa[_0x6e0b('0xa8')])[_0x6e0b('0x32')](_0x337caa[_0x6e0b('0x95')]);}else{return _0x3d35f4['sendStatus'](0xc8);}})[_0x6e0b('0x4d')](handleError(_0x3d35f4,null));};
\ No newline at end of file
+var _0x7d16=['destroy','get','Plugins','UserProfileResource','sendStatus','error','stack','name','index','map','Plugin','rawAttributes','type','query','keys','filters','intersection','attributes','fields','model','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','download','find','join','root','server/files/plugins','%s.zip','basename','createWriteStream','zip','code','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','dirname','node_modules/**/*','attachments/**/*','finalize','close','existsSync','Plugin\x20not\x20found','format','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','Download\x20completed','info','upload','file','filename','extname','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','0777','length','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','readdirSync','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','Invalid\x20manifest:\x20views\x20missing','views','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','version','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','script','create','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','send','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','port','http://localhost:','encoding','%s%s','headers','content-length','content-type','endsWith','statusCode','webhookPost','method','eml-format','zip-dir','request-promise','moment','bluebird','path','sox','ejs','fs-extra','lodash','jsforce','to-csv','querystring','papaparse','extract-zip','rimraf','archiver','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./plugin.socket','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then'];(function(_0x18c99c,_0x330b28){var _0x28575e=function(_0x5c6851){while(--_0x5c6851){_0x18c99c['push'](_0x18c99c['shift']());}};_0x28575e(++_0x330b28);}(_0x7d16,0x1e0));var _0x67d1=function(_0x4fb377,_0x3210e3){_0x4fb377=_0x4fb377-0x0;var _0x592919=_0x7d16[_0x4fb377];return _0x592919;};'use strict';var emlformat=require(_0x67d1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x67d1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x67d1('0x2'));var moment=require(_0x67d1('0x3'));var BPromise=require(_0x67d1('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x67d1('0x5'));var sox=require(_0x67d1('0x6'));var csv=require('to-csv');var ejs=require(_0x67d1('0x7'));var fs=require('fs');var fs_extra=require(_0x67d1('0x8'));var _=require(_0x67d1('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x67d1('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x67d1('0xb'));var querystring=require(_0x67d1('0xc'));var Papa=require(_0x67d1('0xd'));var extract=require(_0x67d1('0xe'));var rimraf=require(_0x67d1('0xf'));var archiver=require(_0x67d1('0x10'));var Redis=require(_0x67d1('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x67d1('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x67d1('0x13'))(_0x67d1('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x67d1('0x15'));var db=require(_0x67d1('0x16'))['db'];config['redis']=_[_0x67d1('0x17')](config[_0x67d1('0x18')],{'host':_0x67d1('0x19'),'port':0x18eb});var socket=require(_0x67d1('0x1a'))(new Redis(config[_0x67d1('0x18')]));require(_0x67d1('0x1b'))['register'](socket);function respondWithStatusCode(_0x48dfda,_0x41bc55){_0x41bc55=_0x41bc55||0xcc;return function(_0x3cf959){if(_0x3cf959){return _0x48dfda['sendStatus'](_0x41bc55);}return _0x48dfda[_0x67d1('0x1c')](_0x41bc55)[_0x67d1('0x1d')]();};}function respondWithResult(_0x1c9f17,_0x23bff1){_0x23bff1=_0x23bff1||0xc8;return function(_0x29f75d){if(_0x29f75d){return _0x1c9f17[_0x67d1('0x1c')](_0x23bff1)[_0x67d1('0x1e')](_0x29f75d);}};}function respondWithFilteredResult(_0x5654ef,_0x5ea7c2){return function(_0x5e8d78){if(_0x5e8d78){var _0x331817=typeof _0x5ea7c2[_0x67d1('0x1f')]===_0x67d1('0x20')&&typeof _0x5ea7c2[_0x67d1('0x21')]===_0x67d1('0x20');var _0x3bac99=_0x5e8d78['count'];var _0x18e7dd=_0x331817?0x0:_0x5ea7c2[_0x67d1('0x1f')];var _0x10c1ad=_0x331817?_0x5e8d78[_0x67d1('0x22')]:_0x5ea7c2[_0x67d1('0x1f')]+_0x5ea7c2['limit'];var _0x59adff;if(_0x10c1ad>=_0x3bac99){_0x10c1ad=_0x3bac99;_0x59adff=0xc8;}else{_0x59adff=0xce;}_0x5654ef[_0x67d1('0x1c')](_0x59adff);return _0x5654ef[_0x67d1('0x23')](_0x67d1('0x24'),_0x18e7dd+'-'+_0x10c1ad+'/'+_0x3bac99)['json'](_0x5e8d78);}return null;};}function patchUpdates(_0x45c9e4){return function(_0x3d87af){try{jsonpatch['apply'](_0x3d87af,_0x45c9e4,!![]);}catch(_0xecbbcd){return BPromise['reject'](_0xecbbcd);}return _0x3d87af['save']();};}function saveUpdates(_0x4bf234,_0x4f304b){return function(_0x2940ef){if(_0x2940ef){return _0x2940ef[_0x67d1('0x25')](_0x4bf234)[_0x67d1('0x26')](function(_0x273717){return _0x273717;});}return null;};}function removeEntity(_0x15188a,_0x10b167){return function(_0x572442){if(_0x572442){return _0x572442[_0x67d1('0x27')]()[_0x67d1('0x26')](function(){var _0x4c83a2=_0x572442[_0x67d1('0x28')]({'plain':!![]});var _0x43a97f=_0x67d1('0x29');return db[_0x67d1('0x2a')]['destroy']({'where':{'type':_0x43a97f,'resourceId':_0x4c83a2['id']}})[_0x67d1('0x26')](function(){return _0x572442;});})[_0x67d1('0x26')](function(){_0x15188a['status'](0xcc)[_0x67d1('0x1d')]();});}};}function handleEntityNotFound(_0x3c3d28,_0x494af4){return function(_0x509188){if(!_0x509188){_0x3c3d28[_0x67d1('0x2b')](0x194);}return _0x509188;};}function handleError(_0x4e65dc,_0x5c78d4){_0x5c78d4=_0x5c78d4||0x1f4;return function(_0x207de7){logger[_0x67d1('0x2c')](_0x207de7[_0x67d1('0x2d')]);if(_0x207de7[_0x67d1('0x2e')]){delete _0x207de7[_0x67d1('0x2e')];}_0x4e65dc[_0x67d1('0x1c')](_0x5c78d4)['send'](_0x207de7);};}exports[_0x67d1('0x2f')]=function(_0x2b855e,_0x55bc6d){var _0x50aa6a={},_0x199367={},_0x38d0ce={'count':0x0,'rows':[]};var _0x2a9d7d=_[_0x67d1('0x30')](db[_0x67d1('0x31')][_0x67d1('0x32')],function(_0x5a561c){return{'name':_0x5a561c['fieldName'],'type':_0x5a561c[_0x67d1('0x33')]['key']};});_0x199367['model']=_['map'](_0x2a9d7d,_0x67d1('0x2e'));_0x199367[_0x67d1('0x34')]=_[_0x67d1('0x35')](_0x2b855e[_0x67d1('0x34')]);_0x199367[_0x67d1('0x36')]=_[_0x67d1('0x37')](_0x199367['model'],_0x199367[_0x67d1('0x34')]);_0x50aa6a[_0x67d1('0x38')]=_[_0x67d1('0x37')](_0x199367['model'],qs[_0x67d1('0x39')](_0x2b855e[_0x67d1('0x34')][_0x67d1('0x39')]));_0x50aa6a[_0x67d1('0x38')]=_0x50aa6a[_0x67d1('0x38')]['length']?_0x50aa6a[_0x67d1('0x38')]:_0x199367[_0x67d1('0x3a')];if(!_0x2b855e[_0x67d1('0x34')][_0x67d1('0x3b')](_0x67d1('0x3c'))){_0x50aa6a[_0x67d1('0x21')]=qs['limit'](_0x2b855e[_0x67d1('0x34')][_0x67d1('0x21')]);_0x50aa6a[_0x67d1('0x1f')]=qs['offset'](_0x2b855e[_0x67d1('0x34')][_0x67d1('0x1f')]);}_0x50aa6a[_0x67d1('0x3d')]=qs[_0x67d1('0x3e')](_0x2b855e[_0x67d1('0x34')][_0x67d1('0x3e')]);_0x50aa6a[_0x67d1('0x3f')]=qs[_0x67d1('0x36')](_['pick'](_0x2b855e[_0x67d1('0x34')],_0x199367[_0x67d1('0x36')]),_0x2a9d7d);if(_0x2b855e[_0x67d1('0x34')][_0x67d1('0x40')]){_0x50aa6a[_0x67d1('0x3f')]=_[_0x67d1('0x41')](_0x50aa6a[_0x67d1('0x3f')],{'$or':_[_0x67d1('0x30')](_0x2a9d7d,function(_0x3b1944){if(_0x3b1944[_0x67d1('0x33')]!==_0x67d1('0x42')){var _0x5afc78={};_0x5afc78[_0x3b1944['name']]={'$like':'%'+_0x2b855e['query'][_0x67d1('0x40')]+'%'};return _0x5afc78;}})});}_0x50aa6a=_[_0x67d1('0x41')]({},_0x50aa6a,_0x2b855e[_0x67d1('0x43')]);var _0x2ba4ab={'where':_0x50aa6a['where']};return db[_0x67d1('0x31')]['count'](_0x2ba4ab)[_0x67d1('0x26')](function(_0x19a653){_0x38d0ce['count']=_0x19a653;if(_0x2b855e[_0x67d1('0x34')][_0x67d1('0x44')]){_0x50aa6a['include']=[{'all':!![]}];}return db[_0x67d1('0x31')][_0x67d1('0x45')](_0x50aa6a);})[_0x67d1('0x26')](function(_0x8a6570){_0x38d0ce[_0x67d1('0x46')]=_0x8a6570;return _0x38d0ce;})[_0x67d1('0x26')](respondWithFilteredResult(_0x55bc6d,_0x50aa6a))[_0x67d1('0x47')](handleError(_0x55bc6d,null));};exports[_0x67d1('0x48')]=function(_0x1aa877,_0x159057){var _0x16cf69={'raw':!![],'where':{'id':_0x1aa877[_0x67d1('0x49')]['id']}},_0x4b13ed={};_0x4b13ed[_0x67d1('0x3a')]=_[_0x67d1('0x35')](db[_0x67d1('0x31')][_0x67d1('0x32')]);_0x4b13ed[_0x67d1('0x34')]=_[_0x67d1('0x35')](_0x1aa877[_0x67d1('0x34')]);_0x4b13ed[_0x67d1('0x36')]=_[_0x67d1('0x37')](_0x4b13ed[_0x67d1('0x3a')],_0x4b13ed[_0x67d1('0x34')]);_0x16cf69[_0x67d1('0x38')]=_[_0x67d1('0x37')](_0x4b13ed[_0x67d1('0x3a')],qs['fields'](_0x1aa877[_0x67d1('0x34')][_0x67d1('0x39')]));_0x16cf69['attributes']=_0x16cf69[_0x67d1('0x38')]['length']?_0x16cf69[_0x67d1('0x38')]:_0x4b13ed[_0x67d1('0x3a')];if(_0x1aa877[_0x67d1('0x34')][_0x67d1('0x44')]){_0x16cf69[_0x67d1('0x4a')]=[{'all':!![]}];}_0x16cf69=_['merge']({},_0x16cf69,_0x1aa877['options']);return db[_0x67d1('0x31')]['find'](_0x16cf69)[_0x67d1('0x26')](handleEntityNotFound(_0x159057,null))[_0x67d1('0x26')](respondWithResult(_0x159057,null))['catch'](handleError(_0x159057,null));};exports[_0x67d1('0x4b')]=function(_0xb515c9,_0x4917b3,_0x3984d0){return db[_0x67d1('0x31')][_0x67d1('0x4c')]({'where':{'id':_0xb515c9['params']['id']},'attributes':['name','path'],'raw':!![]})[_0x67d1('0x26')](handleEntityNotFound(_0x4917b3,null))['then'](function(_0x5dc3d8){if(_0x5dc3d8){var _0x4a9c3f=path[_0x67d1('0x4d')](config[_0x67d1('0x4e')],_0x67d1('0x4f'),util['format'](_0x67d1('0x50'),path[_0x67d1('0x51')](_0x5dc3d8[_0x67d1('0x5')])));var _0x28dfaf=fs[_0x67d1('0x52')](_0x4a9c3f);var _0x23233a=archiver(_0x67d1('0x53'),{'zlib':{'level':0x9}});_0x23233a['on']('warning',function(_0x417d93){if(_0x417d93[_0x67d1('0x54')]==='ENOENT'){logger['error'](_0x417d93);}else{throw new db[(_0x67d1('0x55'))][(_0x67d1('0x56'))](_0x67d1('0x57'));}});_0x23233a['on'](_0x67d1('0x2c'),function(_0x52ddd4){throw new db[(_0x67d1('0x55'))]['Error'](_0x67d1('0x57'));});_0x23233a[_0x67d1('0x58')](_0x28dfaf);_0x23233a[_0x67d1('0x59')](_0x67d1('0x5a'),{'cwd':path['join'](config[_0x67d1('0x4e')],_0x67d1('0x4f'),path[_0x67d1('0x5b')](_0x5dc3d8[_0x67d1('0x5')])),'ignore':[path[_0x67d1('0x4d')](path[_0x67d1('0x51')](_0x5dc3d8[_0x67d1('0x5')]),_0x67d1('0x5c')),path[_0x67d1('0x4d')](path[_0x67d1('0x51')](_0x5dc3d8[_0x67d1('0x5')]),_0x67d1('0x5d'))],'nodir':!![]})[_0x67d1('0x5e')]();_0x28dfaf['on'](_0x67d1('0x5f'),function(){if(!fs[_0x67d1('0x60')](_0x4a9c3f)){throw new db[(_0x67d1('0x55'))]['Error'](_0x67d1('0x61'));}return _0x4917b3[_0x67d1('0x4b')](_0x4a9c3f,util[_0x67d1('0x62')](_0x67d1('0x50'),path['basename'](_0x5dc3d8[_0x67d1('0x5')])),function(_0x4cd837){if(_0x4cd837){throw new db[(_0x67d1('0x55'))][(_0x67d1('0x56'))](_0x67d1('0x63'));}fs[_0x67d1('0x64')](_0x4a9c3f);logger['info'](_0x67d1('0x65'));logger[_0x67d1('0x66')]('Temporary\x20file\x20removed');});});}return null;})['catch'](handleError(_0x4917b3,null));};exports[_0x67d1('0x67')]=function(_0x4c5562,_0x1074c3,_0x38972a){var _0x2800cb=path[_0x67d1('0x51')](_0x4c5562[_0x67d1('0x68')][_0x67d1('0x69')],path[_0x67d1('0x6a')](_0x4c5562['file'][_0x67d1('0x69')]));var _0x4b9b17=path[_0x67d1('0x4d')](config[_0x67d1('0x4e')],_0x67d1('0x4f'),_0x4c5562[_0x67d1('0x68')][_0x67d1('0x69')]);var _0x125ce6=path[_0x67d1('0x4d')](config['root'],_0x67d1('0x4f'),_0x2800cb);logger['info'](_0x67d1('0x6b'),_0x4b9b17);logger['info'](_0x67d1('0x6c'),_0x125ce6);try{fs['chmodSync'](_0x4b9b17,parseInt(_0x67d1('0x6d'),0x8));extract(_0x4b9b17,{'dir':_0x125ce6},function(_0x17f574){if(_0x17f574){logger['error'](_0x17f574);handleError(_0x17f574,!![]);};var _0x1162cd=fs['readdirSync'](_0x125ce6);if(_0x1162cd[_0x67d1('0x6e')]>0x1){removeReferences(_0x4b9b17,_0x125ce6);logger[_0x67d1('0x2c')]('Invalid\x20plugin\x20structure');return _0x38972a(new Error(_0x67d1('0x6f')));}var _0x28f1ff=fs[_0x67d1('0x70')](path[_0x67d1('0x4d')](_0x125ce6,_0x1162cd[0x0]));if(_0x28f1ff[_0x67d1('0x71')]()){removeReferences(_0x4b9b17,_0x125ce6);logger[_0x67d1('0x2c')](_0x67d1('0x6f'));return _0x38972a(new Error('Invalid\x20plugin\x20structure'));}if(_0x28f1ff[_0x67d1('0x72')]()){var _0xfe2737=fs[_0x67d1('0x73')](path['join'](_0x125ce6,_0x1162cd[0x0]));if(_0xfe2737[_0x67d1('0x6e')]===0x0){removeReferences(_0x4b9b17,_0x125ce6);logger[_0x67d1('0x2c')](_0x67d1('0x6f'));return _0x38972a(new Error(_0x67d1('0x6f')));}var _0x53a6db=_0xfe2737[_0x67d1('0x74')](function(_0x10bc51){return _0x10bc51===_0x67d1('0x75');});if(!_0x53a6db){return _0x38972a(new Error(_0x67d1('0x76')));}var _0x1f6bec=fs[_0x67d1('0x77')](path['join'](_0x125ce6,_0x1162cd[0x0],_0x67d1('0x75')));var _0x394e2b=JSON[_0x67d1('0x78')](_0x1f6bec);if(_0x67d1('0x20')==typeof _0x394e2b[_0x67d1('0x2e')]){return _0x38972a(new Error('Invalid\x20manifest:\x20name\x20missing'));}if(_0x67d1('0x20')==typeof _0x394e2b[_0x67d1('0x33')]){return _0x38972a(new Error('Invalid\x20manifest:\x20type\x20missing'));}if(_0x67d1('0x20')==typeof _0x394e2b['version']){return _0x38972a(new Error('Invalid\x20manifest:\x20version\x20not\x20specified'));}if(_0x67d1('0x20')==typeof _0x394e2b[_0x67d1('0x79')]){return _0x38972a(new Error(_0x67d1('0x7a')));}if(_0x394e2b[_0x67d1('0x33')]===_0x67d1('0x7b')){if(_0x67d1('0x20')==typeof _0x394e2b[_0x67d1('0x79')]['views']){return _0x38972a(new Error(_0x67d1('0x7c')));}if(_0x67d1('0x20')==typeof _0x394e2b[_0x67d1('0x79')][_0x67d1('0x7d')][_0x67d1('0x7e')]&&_0x67d1('0x20')==typeof _0x394e2b[_0x67d1('0x79')][_0x67d1('0x7d')][_0x67d1('0x7f')]){return _0x38972a(new Error(_0x67d1('0x80')));}}else if(_0x394e2b[_0x67d1('0x33')]==='script'){if('undefined'==typeof _0x394e2b[_0x67d1('0x79')][_0x67d1('0x81')]){return _0x38972a(new Error(_0x67d1('0x82')));}if(_0x67d1('0x20')==typeof _0x394e2b[_0x67d1('0x79')][_0x67d1('0x83')]){return _0x38972a(new Error('Invalid\x20manifest:\x20script\x20path\x20missing'));}}else{return _0x38972a(new Error(_0x67d1('0x84')));}var _0x283a79=_0x394e2b['name'];var _0x34bbda=_0x394e2b[_0x67d1('0x85')];var _0x232ee6=_0x394e2b['type'];var _0x2ee3ec=_0x394e2b[_0x67d1('0x86')]?_0x394e2b['sidebar']:_0x67d1('0x87');var _0x2106d2=_0x394e2b[_0x67d1('0x88')]?_0x394e2b['icon']:_0x67d1('0x89');var _0x5d2cc3='';var _0x35a85e='';var _0x15982b='';var _0x45cf9c='';var _0x33ca19=_0x394e2b[_0x67d1('0x8a')];if(_0x232ee6===_0x67d1('0x7b')){if(_0x67d1('0x20')!=typeof _0x394e2b[_0x67d1('0x79')][_0x67d1('0x7d')][_0x67d1('0x7e')]){var _0x38d929=_0x394e2b[_0x67d1('0x79')][_0x67d1('0x7d')][_0x67d1('0x7e')];if(!/^(f|ht)tps?:\/\//i[_0x67d1('0x8b')](_0x38d929)){_0x5d2cc3=path[_0x67d1('0x4d')](_0x67d1('0x8c'),_0x2800cb,_0x1162cd[0x0],_0x38d929);}else{_0x5d2cc3=_0x38d929;}}else{logger[_0x67d1('0x66')](_0x67d1('0x8d'));}if(_0x67d1('0x20')!=typeof _0x394e2b[_0x67d1('0x79')][_0x67d1('0x7d')]['agent']){var _0x4fa1d5=_0x394e2b['parameters'][_0x67d1('0x7d')][_0x67d1('0x7f')];if(!/^(f|ht)tps?:\/\//i[_0x67d1('0x8b')](_0x4fa1d5)){_0x35a85e=path[_0x67d1('0x4d')]('plugins',_0x2800cb,_0x1162cd[0x0],_0x4fa1d5);}else{_0x35a85e=_0x4fa1d5;}}else{logger[_0x67d1('0x66')](_0x67d1('0x8e'));}}else if(_0x232ee6===_0x67d1('0x8f')){_0x15982b=_0x394e2b[_0x67d1('0x79')]['scriptName'];_0x45cf9c=_0x394e2b[_0x67d1('0x79')]['scriptPath'];if('undefined'!=typeof _0x394e2b[_0x67d1('0x79')]['views']){if(_0x67d1('0x20')!=typeof _0x394e2b[_0x67d1('0x79')]['views'][_0x67d1('0x7e')]){var _0x38d929=_0x394e2b[_0x67d1('0x79')][_0x67d1('0x7d')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0x67d1('0x8b')](_0x38d929)){_0x5d2cc3=path['join'](_0x67d1('0x8c'),_0x2800cb,_0x1162cd[0x0],_0x38d929);}else{_0x5d2cc3=_0x38d929;}}if(_0x67d1('0x20')!=typeof _0x394e2b[_0x67d1('0x79')][_0x67d1('0x7d')][_0x67d1('0x7f')]){var _0x4fa1d5=_0x394e2b['parameters'][_0x67d1('0x7d')][_0x67d1('0x7f')];if(!/^(f|ht)tps?:\/\//i[_0x67d1('0x8b')](_0x4fa1d5)){_0x35a85e=path[_0x67d1('0x4d')](_0x67d1('0x8c'),_0x2800cb,_0x1162cd[0x0],_0x4fa1d5);}else{_0x35a85e=_0x4fa1d5;}}}}var _0x4c2a1c={'name':_0x283a79,'description':_0x34bbda,'path':path[_0x67d1('0x4d')](_0x2800cb,_0x1162cd[0x0]),'type':_0x232ee6,'sidebar':_0x2ee3ec,'icon':_0x2106d2,'adminUrl':_0x5d2cc3,'agentUrl':_0x35a85e,'scriptName':_0x15982b,'scriptPath':_0x45cf9c,'version':_0x33ca19};removeReferences(_0x4b9b17,null);return db[_0x67d1('0x31')][_0x67d1('0x90')](_0x4c2a1c)[_0x67d1('0x26')](function(_0xed357){var _0x44c96a={'role':_0x4c5562[_0x67d1('0x91')][_0x67d1('0x92')],'userProfileId':_0x4c5562[_0x67d1('0x91')][_0x67d1('0x93')]};if(!_0x44c96a)throw new Error(_0x67d1('0x94'));if(_0x44c96a[_0x67d1('0x92')]===_0x67d1('0x95')){var _0x54f6fa=_0xed357[_0x67d1('0x28')]({'plain':!![]});return db[_0x67d1('0x96')][_0x67d1('0x4c')]({'where':{'name':_0x67d1('0x29'),'userProfileId':_0x44c96a[_0x67d1('0x93')]},'raw':!![]})[_0x67d1('0x26')](function(_0x312e85){if(_0x312e85&&_0x312e85[_0x67d1('0x97')]===0x0){return db['UserProfileResource'][_0x67d1('0x90')]({'name':_0x54f6fa[_0x67d1('0x2e')],'resourceId':_0x54f6fa['id'],'type':_0x312e85[_0x67d1('0x2e')],'sectionId':_0x312e85['id']},{})['then'](function(){return _0xed357;});}else{return _0xed357;}})[_0x67d1('0x47')](function(_0x32a9cc){logger['error'](_0x67d1('0x98'),_0x32a9cc);throw _0x32a9cc;});}return _0xed357;})[_0x67d1('0x26')](respondWithResult(_0x1074c3,null))[_0x67d1('0x47')](handleError(_0x1074c3,null));}});}catch(_0x5870cb){_0x1074c3[_0x67d1('0x1c')](0x1f4)[_0x67d1('0x99')](_0x5870cb);}};function removeReferences(_0x1eb810,_0xbcf016){try{if(_0x1eb810){fs[_0x67d1('0x64')](_0x1eb810);logger['info'](_0x67d1('0x9a'));}if(_0xbcf016){rimraf(_0xbcf016,function(){});logger[_0x67d1('0x66')](_0x67d1('0x9b'));}}catch(_0x2e340e){logger[_0x67d1('0x2c')](_0x2e340e);}}exports[_0x67d1('0x25')]=function(_0xebb0b,_0x3215d0,_0x3d7935){return db['Plugin'][_0x67d1('0x4c')]({'where':{'id':_0xebb0b[_0x67d1('0x49')]['id']}})[_0x67d1('0x26')](handleEntityNotFound(_0x3215d0,null))[_0x67d1('0x26')](saveUpdates(_0xebb0b[_0x67d1('0x91')],null))[_0x67d1('0x26')](respondWithResult(_0x3215d0,null))[_0x67d1('0x47')](handleError(_0x3215d0,null));};exports[_0x67d1('0x9c')]=function(_0x177512,_0x4f9aae,_0x4388aa){return db['Plugin']['find']({'where':{'id':_0x177512['params']['id']}})[_0x67d1('0x26')](function(_0x5434c4){if(_0x5434c4){return _0x5434c4[_0x67d1('0x27')]();}})['then'](function(_0x429d11){rimraf(path['join'](config[_0x67d1('0x4e')],_0x67d1('0x4f'),path[_0x67d1('0x5b')](_0x429d11[_0x67d1('0x5')])),function(){});return _0x429d11;})[_0x67d1('0x26')](handleEntityNotFound(_0x4f9aae,null))['then'](respondWithStatusCode(_0x4f9aae,null))['catch'](handleError(_0x4f9aae,null));};exports[_0x67d1('0x9d')]=function(_0x5d6f27,_0x3c8287,_0x24e09f){return BPromise[_0x67d1('0x9e')]()['then'](function(){if(!_0x5d6f27[_0x67d1('0x34')][_0x67d1('0x5')]){throw new Error(_0x67d1('0x9f'));}if(!_0x5d6f27['query']['port']){throw new Error(_0x67d1('0xa0'));}var _0x482674=_0x5d6f27['query']['hostname']?_0x5d6f27[_0x67d1('0x34')][_0x67d1('0xa1')]+':'+_0x5d6f27[_0x67d1('0x34')][_0x67d1('0xa2')]:_0x67d1('0xa3')+_0x5d6f27[_0x67d1('0x34')][_0x67d1('0xa2')];var _0x1c67d0=_0x5d6f27['query'][_0x67d1('0x1e')]?_0x5d6f27['query'][_0x67d1('0x1e')]:!![];var _0x5e149c=_0x5d6f27[_0x67d1('0x34')][_0x67d1('0xa4')]?_0x5d6f27[_0x67d1('0x34')][_0x67d1('0xa4')]:null;var _0x5ad7fa={'method':_0x5d6f27['method'],'uri':util['format'](_0x67d1('0xa5'),_0x482674,_0x5d6f27['query']['path']),'json':_0x1c67d0,'resolveWithFullResponse':!![],'encoding':_0x5e149c,'qs':_0x5d6f27[_0x67d1('0x34')]};if(_0x5d6f27[_0x67d1('0xa6')]){_0x5ad7fa['headers']=_0x5d6f27[_0x67d1('0xa6')];if(_0x5ad7fa['headers']['content-length']){delete _0x5ad7fa[_0x67d1('0xa6')][_0x67d1('0xa7')];}}if(_0x5ad7fa[_0x67d1('0xa6')][_0x67d1('0xa8')]){delete _0x5ad7fa['headers'][_0x67d1('0xa8')];}return rp(_0x5ad7fa);})[_0x67d1('0x26')](function(_0x1e8eeb){if(_0x1e8eeb){_0x3c8287[_0x67d1('0x23')](_0x1e8eeb['headers']);logger['info'](_0x1e8eeb[_0x67d1('0x91')]);if(_[_0x67d1('0xa9')](_0x5d6f27[_0x67d1('0x34')]['path'],_0x67d1('0x4b'))&&_0x1e8eeb[_0x67d1('0xaa')]==0x1f4){return _0x3c8287['sendStatus'](_0x1e8eeb['statusCode']);}else{return _0x3c8287[_0x67d1('0x1c')](_0x1e8eeb[_0x67d1('0xaa')])[_0x67d1('0x99')](_0x1e8eeb['body']);}}else{return _0x3c8287[_0x67d1('0x2b')](0xc8);}})[_0x67d1('0x47')](handleError(_0x3c8287,null));};exports[_0x67d1('0xab')]=function(_0x5acda6,_0x5aa365,_0x57141c){return BPromise['resolve']()[_0x67d1('0x26')](function(){if(!_0x5acda6[_0x67d1('0x34')][_0x67d1('0x5')]){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x5acda6[_0x67d1('0x34')][_0x67d1('0xa2')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x2f30b2=_0x5acda6[_0x67d1('0x34')][_0x67d1('0xa1')]?_0x5acda6['query'][_0x67d1('0xa1')]+':'+_0x5acda6[_0x67d1('0x34')][_0x67d1('0xa2')]:_0x67d1('0xa3')+_0x5acda6[_0x67d1('0x34')][_0x67d1('0xa2')];var _0x42fb62=_0x5acda6[_0x67d1('0x34')][_0x67d1('0x1e')]?_0x5acda6['query']['json']:!![];var _0xa33a7b=_0x5acda6[_0x67d1('0x34')][_0x67d1('0xa4')]?_0x5acda6[_0x67d1('0x34')][_0x67d1('0xa4')]:null;var _0x36b708={'method':_0x5acda6[_0x67d1('0xac')],'uri':util['format'](_0x67d1('0xa5'),_0x2f30b2,_0x5acda6[_0x67d1('0x34')][_0x67d1('0x5')]),'json':_0x42fb62,'resolveWithFullResponse':!![],'encoding':_0xa33a7b,'body':_0x5acda6['body']};if(_0x5acda6[_0x67d1('0xa6')]){_0x36b708[_0x67d1('0xa6')]=_0x5acda6[_0x67d1('0xa6')];if(_0x36b708['headers'][_0x67d1('0xa7')]){delete _0x36b708[_0x67d1('0xa6')][_0x67d1('0xa7')];}}if(_0x36b708['headers'][_0x67d1('0xa8')]){delete _0x36b708['headers'][_0x67d1('0xa8')];}return rp(_0x36b708);})[_0x67d1('0x26')](function(_0x3025bd){if(_0x3025bd){_0x5aa365[_0x67d1('0x23')](_0x3025bd[_0x67d1('0xa6')]);logger[_0x67d1('0x66')](_0x3025bd[_0x67d1('0x91')]);return _0x5aa365[_0x67d1('0x1c')](_0x3025bd[_0x67d1('0xaa')])[_0x67d1('0x99')](_0x3025bd['body']);}else{return _0x5aa365[_0x67d1('0x2b')](0xc8);}})[_0x67d1('0x47')](handleError(_0x5aa365,null));};
\ No newline at end of file
index 90c04e2..8432ad3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f02=['save','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x204c3a,_0x5129a7){var _0x465b9d=function(_0x31dea9){while(--_0x31dea9){_0x204c3a['push'](_0x204c3a['shift']());}};_0x465b9d(++_0x5129a7);}(_0x9f02,0x68));var _0x29f0=function(_0x7e6b65,_0x24814b){_0x7e6b65=_0x7e6b65-0x0;var _0x3941fd=_0x9f02[_0x7e6b65];return _0x3941fd;};'use strict';var EventEmitter=require(_0x29f0('0x0'));var Plugin=require('../../mysqldb')['db']['Plugin'];var PluginEvents=new EventEmitter();PluginEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x29f0('0x1'),'afterUpdate':_0x29f0('0x2'),'afterDestroy':_0x29f0('0x3')};function emitEvent(_0x24792b){return function(_0x1a49c1,_0x47e569,_0x204fc4){PluginEvents['emit'](_0x24792b+':'+_0x1a49c1['id'],_0x1a49c1);PluginEvents[_0x29f0('0x4')](_0x24792b,_0x1a49c1);_0x204fc4(null);};}for(var e in events){if(events[_0x29f0('0x5')](e)){var event=events[e];Plugin[_0x29f0('0x6')](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
+var _0x1a44=['update','remove','emit','hasOwnProperty','events','Plugin','setMaxListeners','save'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0x1a44,0xc4));var _0x41a4=function(_0x3fcbca,_0x95c30){_0x3fcbca=_0x3fcbca-0x0;var _0x3ba8fd=_0x1a44[_0x3fcbca];return _0x3ba8fd;};'use strict';var EventEmitter=require(_0x41a4('0x0'));var Plugin=require('../../mysqldb')['db'][_0x41a4('0x1')];var PluginEvents=new EventEmitter();PluginEvents[_0x41a4('0x2')](0x0);var events={'afterCreate':_0x41a4('0x3'),'afterUpdate':_0x41a4('0x4'),'afterDestroy':_0x41a4('0x5')};function emitEvent(_0x3c3c23){return function(_0x397cb2,_0x529244,_0x20ab2d){PluginEvents[_0x41a4('0x6')](_0x3c3c23+':'+_0x397cb2['id'],_0x397cb2);PluginEvents[_0x41a4('0x6')](_0x3c3c23,_0x397cb2);_0x20ab2d(null);};}for(var e in events){if(events[_0x41a4('0x7')](e)){var event=events[e];Plugin['hook'](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
index df7e271..8e266cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda51=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./plugin.attributes','exports','define','Plugin','lodash'];(function(_0x43d11d,_0xccff91){var _0x38cd08=function(_0x131ae2){while(--_0x131ae2){_0x43d11d['push'](_0x43d11d['shift']());}};_0x38cd08(++_0xccff91);}(_0xda51,0x1db));var _0x1da5=function(_0xf3e4a0,_0x16a172){_0xf3e4a0=_0xf3e4a0-0x0;var _0x43f1cc=_0xda51[_0xf3e4a0];return _0x43f1cc;};'use strict';var _=require(_0x1da5('0x0'));var util=require(_0x1da5('0x1'));var logger=require(_0x1da5('0x2'))(_0x1da5('0x3'));var moment=require(_0x1da5('0x4'));var BPromise=require(_0x1da5('0x5'));var rp=require(_0x1da5('0x6'));var fs=require('fs');var path=require(_0x1da5('0x7'));var rimraf=require(_0x1da5('0x8'));var config=require(_0x1da5('0x9'));var attributes=require(_0x1da5('0xa'));module[_0x1da5('0xb')]=function(_0x2ee67c,_0x35eceb){return _0x2ee67c[_0x1da5('0xc')](_0x1da5('0xd'),attributes,{'tableName':'plugins','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9312=['./plugin.attributes','exports','define','util','../../config/logger','moment','path','rimraf','../../config/environment'];(function(_0x431a58,_0x22f689){var _0x17f42b=function(_0x2fd333){while(--_0x2fd333){_0x431a58['push'](_0x431a58['shift']());}};_0x17f42b(++_0x22f689);}(_0x9312,0x1aa));var _0x2931=function(_0x13843f,_0x50422d){_0x13843f=_0x13843f-0x0;var _0x1063ae=_0x9312[_0x13843f];return _0x1063ae;};'use strict';var _=require('lodash');var util=require(_0x2931('0x0'));var logger=require(_0x2931('0x1'))('api');var moment=require(_0x2931('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2931('0x3'));var rimraf=require(_0x2931('0x4'));var config=require(_0x2931('0x5'));var attributes=require(_0x2931('0x6'));module[_0x2931('0x7')]=function(_0x15e76f,_0x17e18a){return _0x15e76f[_0x2931('0x8')]('Plugin',attributes,{'tableName':'plugins','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 69e1738..a864e34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1c1=['jayson/promise','http','defaults','redis','localhost','socket.io-emitter','./plugin.socket','register','request','then','info','Plugin,\x20%s,\x20%s','request\x20sent','debug','error','code','message','Plugin','create','body','options','raw','CreatePlugin','stringify','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x5806f4,_0x177bcc){var _0x213a88=function(_0x57d76e){while(--_0x57d76e){_0x5806f4['push'](_0x5806f4['shift']());}};_0x213a88(++_0x177bcc);}(_0xd1c1,0x7b));var _0x1d1c=function(_0x481bdf,_0x231538){_0x481bdf=_0x481bdf-0x0;var _0x281a12=_0xd1c1[_0x481bdf];return _0x281a12;};'use strict';var _=require(_0x1d1c('0x0'));var util=require(_0x1d1c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x1d1c('0x2'));var fs=require('fs');var Redis=require(_0x1d1c('0x3'));var db=require(_0x1d1c('0x4'))['db'];var utils=require(_0x1d1c('0x5'));var logger=require(_0x1d1c('0x6'))(_0x1d1c('0x7'));var config=require(_0x1d1c('0x8'));var jayson=require(_0x1d1c('0x9'));var client=jayson['client'][_0x1d1c('0xa')]({'port':0x232a});config['redis']=_[_0x1d1c('0xb')](config[_0x1d1c('0xc')],{'host':_0x1d1c('0xd'),'port':0x18eb});var socket=require(_0x1d1c('0xe'))(new Redis(config['redis']));require(_0x1d1c('0xf'))[_0x1d1c('0x10')](socket);function respondWithRpcPromise(_0xe15cd6,_0x5d47e5,_0x5ef351){return new BPromise(function(_0x4c6080,_0x335e0d){return client[_0x1d1c('0x11')](_0xe15cd6,_0x5ef351)[_0x1d1c('0x12')](function(_0x523fee){logger[_0x1d1c('0x13')](_0x1d1c('0x14'),_0x5d47e5,_0x1d1c('0x15'));logger[_0x1d1c('0x16')]('Plugin,\x20%s,\x20%s,\x20%s',_0x5d47e5,_0x1d1c('0x15'),JSON['stringify'](_0x523fee));if(_0x523fee[_0x1d1c('0x17')]){if(_0x523fee['error'][_0x1d1c('0x18')]===0x1f4){logger[_0x1d1c('0x17')]('Plugin,\x20%s,\x20%s',_0x5d47e5,_0x523fee['error'][_0x1d1c('0x19')]);return _0x335e0d(_0x523fee['error'][_0x1d1c('0x19')]);}logger[_0x1d1c('0x17')](_0x1d1c('0x14'),_0x5d47e5,_0x523fee[_0x1d1c('0x17')][_0x1d1c('0x19')]);return _0x4c6080(_0x523fee[_0x1d1c('0x17')][_0x1d1c('0x19')]);}else{logger[_0x1d1c('0x13')](_0x1d1c('0x14'),_0x5d47e5,'request\x20sent');_0x4c6080(_0x523fee['result'][_0x1d1c('0x19')]);}})['catch'](function(_0x55f6d1){logger[_0x1d1c('0x17')](_0x1d1c('0x14'),_0x5d47e5,_0x55f6d1);_0x335e0d(_0x55f6d1);});});}exports['CreatePlugin']=function(_0x3678f7){var _0x74eea1=this;return new Promise(function(_0x316f58,_0x178af4){return db[_0x1d1c('0x1a')][_0x1d1c('0x1b')](_0x3678f7[_0x1d1c('0x1c')],{'raw':_0x3678f7[_0x1d1c('0x1d')]?_0x3678f7[_0x1d1c('0x1d')][_0x1d1c('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x3deadd){logger[_0x1d1c('0x13')]('CreatePlugin',_0x3678f7);logger[_0x1d1c('0x16')](_0x1d1c('0x1f'),_0x3678f7,JSON[_0x1d1c('0x20')](_0x3deadd));_0x316f58(_0x3deadd);})['catch'](function(_0x3d1cd8){logger[_0x1d1c('0x17')](_0x1d1c('0x1f'),_0x3d1cd8['message'],_0x3678f7);_0x178af4(_0x74eea1[_0x1d1c('0x17')](0x1f4,_0x3d1cd8[_0x1d1c('0x19')]));});});};
\ No newline at end of file
+var _0xeeca=['create','body','options','raw','then','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./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'];(function(_0x895358,_0x32f914){var _0x26e26e=function(_0xf2da4a){while(--_0xf2da4a){_0x895358['push'](_0x895358['shift']());}};_0x26e26e(++_0x32f914);}(_0xeeca,0x1e1));var _0xaeec=function(_0x469a3c,_0x5ebc10){_0x469a3c=_0x469a3c-0x0;var _0x968f4=_0xeeca[_0x469a3c];return _0x968f4;};'use strict';var _=require(_0xaeec('0x0'));var util=require(_0xaeec('0x1'));var moment=require('moment');var BPromise=require(_0xaeec('0x2'));var rs=require(_0xaeec('0x3'));var fs=require('fs');var Redis=require(_0xaeec('0x4'));var db=require(_0xaeec('0x5'))['db'];var utils=require(_0xaeec('0x6'));var logger=require('../../config/logger')(_0xaeec('0x7'));var config=require(_0xaeec('0x8'));var jayson=require(_0xaeec('0x9'));var client=jayson['client'][_0xaeec('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0xaeec('0xb')],{'host':_0xaeec('0xc'),'port':0x18eb});var socket=require(_0xaeec('0xd'))(new Redis(config[_0xaeec('0xb')]));require(_0xaeec('0xe'))[_0xaeec('0xf')](socket);function respondWithRpcPromise(_0x31f28f,_0x5701f0,_0x1f726a){return new BPromise(function(_0x4cb64e,_0x4582e6){return client[_0xaeec('0x10')](_0x31f28f,_0x1f726a)['then'](function(_0x14cbcc){logger[_0xaeec('0x11')](_0xaeec('0x12'),_0x5701f0,'request\x20sent');logger['debug'](_0xaeec('0x13'),_0x5701f0,_0xaeec('0x14'),JSON[_0xaeec('0x15')](_0x14cbcc));if(_0x14cbcc['error']){if(_0x14cbcc[_0xaeec('0x16')][_0xaeec('0x17')]===0x1f4){logger[_0xaeec('0x16')]('Plugin,\x20%s,\x20%s',_0x5701f0,_0x14cbcc['error'][_0xaeec('0x18')]);return _0x4582e6(_0x14cbcc[_0xaeec('0x16')][_0xaeec('0x18')]);}logger[_0xaeec('0x16')](_0xaeec('0x12'),_0x5701f0,_0x14cbcc[_0xaeec('0x16')][_0xaeec('0x18')]);return _0x4cb64e(_0x14cbcc[_0xaeec('0x16')][_0xaeec('0x18')]);}else{logger['info']('Plugin,\x20%s,\x20%s',_0x5701f0,'request\x20sent');_0x4cb64e(_0x14cbcc[_0xaeec('0x19')]['message']);}})[_0xaeec('0x1a')](function(_0x4a5cda){logger[_0xaeec('0x16')](_0xaeec('0x12'),_0x5701f0,_0x4a5cda);_0x4582e6(_0x4a5cda);});});}exports[_0xaeec('0x1b')]=function(_0x5a3780){var _0x1cc273=this;return new Promise(function(_0x571e7b,_0x488a9e){return db[_0xaeec('0x1c')][_0xaeec('0x1d')](_0x5a3780[_0xaeec('0x1e')],{'raw':_0x5a3780['options']?_0x5a3780[_0xaeec('0x1f')][_0xaeec('0x20')]===undefined?!![]:![]:!![]})[_0xaeec('0x21')](function(_0x3c0528){logger[_0xaeec('0x11')]('CreatePlugin',_0x5a3780);logger['debug'](_0xaeec('0x1b'),_0x5a3780,JSON[_0xaeec('0x15')](_0x3c0528));_0x571e7b(_0x3c0528);})[_0xaeec('0x1a')](function(_0x54c56b){logger[_0xaeec('0x16')](_0xaeec('0x1b'),_0x54c56b['message'],_0x5a3780);_0x488a9e(_0x1cc273[_0xaeec('0x16')](0x1f4,_0x54c56b['message']));});});};
\ No newline at end of file
index 9450e16..03686f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdebe=['plugin:','./plugin.events','save','remove','emit','removeListener','register','length'];(function(_0x59d5a4,_0x54ab8e){var _0x5f7263=function(_0x7e37fd){while(--_0x7e37fd){_0x59d5a4['push'](_0x59d5a4['shift']());}};_0x5f7263(++_0x54ab8e);}(_0xdebe,0x169));var _0xedeb=function(_0x34d071,_0x2d8850){_0x34d071=_0x34d071-0x0;var _0x255b91=_0xdebe[_0x34d071];return _0x255b91;};'use strict';var PluginEvents=require(_0xedeb('0x0'));var events=[_0xedeb('0x1'),_0xedeb('0x2'),'update'];function createListener(_0xe4ab9e,_0x376b8d){return function(_0x2758f7){_0x376b8d[_0xedeb('0x3')](_0xe4ab9e,_0x2758f7);};}function removeListener(_0xf89105,_0x46f899){return function(){PluginEvents[_0xedeb('0x4')](_0xf89105,_0x46f899);};}exports[_0xedeb('0x5')]=function(_0xf877c5){for(var _0x590615=0x0,_0x4ba1b3=events[_0xedeb('0x6')];_0x590615<_0x4ba1b3;_0x590615++){var _0x9b2df3=events[_0x590615];var _0x5e626d=createListener(_0xedeb('0x7')+_0x9b2df3,_0xf877c5);PluginEvents['on'](_0x9b2df3,_0x5e626d);}};
\ No newline at end of file
+var _0xc26c=['length','plugin:','./plugin.events','save','remove','update','emit','removeListener'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc26c,0x1ca));var _0xcc26=function(_0x2c10c4,_0x5d7c73){_0x2c10c4=_0x2c10c4-0x0;var _0x36f92e=_0xc26c[_0x2c10c4];return _0x36f92e;};'use strict';var PluginEvents=require(_0xcc26('0x0'));var events=[_0xcc26('0x1'),_0xcc26('0x2'),_0xcc26('0x3')];function createListener(_0x3ca3d1,_0x11f529){return function(_0x4f4af7){_0x11f529[_0xcc26('0x4')](_0x3ca3d1,_0x4f4af7);};}function removeListener(_0x216f49,_0x267b86){return function(){PluginEvents[_0xcc26('0x5')](_0x216f49,_0x267b86);};}exports['register']=function(_0x4dd732){for(var _0x53c222=0x0,_0x49a075=events[_0xcc26('0x6')];_0x53c222<_0x49a075;_0x53c222++){var _0x14d17d=events[_0x53c222];var _0x224346=createListener(_0xcc26('0x7')+_0x14d17d,_0x4dd732);PluginEvents['on'](_0x14d17d,_0x224346);}};
\ No newline at end of file
index 21ca92c..f1bebc4 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(_0x1ce16c,_0x42816c){var _0x31d66a=function(_0x161b63){while(--_0x161b63){_0x1ce16c['push'](_0x1ce16c['shift']());}};_0x31d66a(++_0x42816c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0xa9e0[_0x47a7d0];return _0xb9bd08;};'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(_0x45af40,_0x27a579){var _0x293367=function(_0xbd4f52){while(--_0xbd4f52){_0x45af40['push'](_0x45af40['shift']());}};_0x293367(++_0x27a579);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xa9e0[_0x4154a6];return _0x3b2786;};'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 98e9d87..3b34356 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x878f=['dirname','start','dump','restart','stop','hasOwnProperty','params','send','destroy','delete','Unknown\x20id','../../config/pm2','../../config/logger','api','path','child_process','exec','bluebird','sendStatus','status','name','info','index','then','express','motion2','length','catch','show','describe','create','body','script','../../files/plugins','cwd','chdir'];(function(_0x1a238e,_0x391546){var _0x42dab6=function(_0x784156){while(--_0x784156){_0x1a238e['push'](_0x1a238e['shift']());}};_0x42dab6(++_0x391546);}(_0x878f,0x173));var _0xf878=function(_0x305b70,_0x5be94e){_0x305b70=_0x305b70-0x0;var _0x2631d3=_0x878f[_0x305b70];return _0x2631d3;};'use strict';var _=require('lodash');var pm2=require(_0xf878('0x0'));var logger=require(_0xf878('0x1'))(_0xf878('0x2'));var path=require(_0xf878('0x3'));var exec=require(_0xf878('0x4'))[_0xf878('0x5')];var BPromise=require(_0xf878('0x6'));function handleEntityNotFound(_0x45a37b,_0x240b48){return function(_0xcf1927){if(!_0xcf1927){_0x45a37b[_0xf878('0x7')](0x194);;}return _0xcf1927;};}function respondWithResult(_0x4bc9aa,_0x4ac8d8){_0x4ac8d8=_0x4ac8d8||0xc8;return function(_0x3c5f5c){if(_0x3c5f5c){return _0x4bc9aa[_0xf878('0x8')](_0x4ac8d8)['json'](_0x3c5f5c);}return null;};}function handleError(_0x52851e,_0x530767){_0x530767=_0x530767||0x1f4;return function(_0x3329df){logger['error'](_0x3329df['stack']);if(_0x3329df[_0xf878('0x9')]){delete _0x3329df[_0xf878('0x9')];}_0x52851e[_0xf878('0x8')](_0x530767)['send'](_0x3329df);};}function execChildProcess(){return new BPromise(function(_0xb2863e,_0x1399a3){exec('npm\x20install',function(_0xdf76,_0x4f7e7f,_0x31d3d2){logger[_0xf878('0xa')](_0x4f7e7f);logger[_0xf878('0xa')](_0x31d3d2);if(_0xdf76){logger['error'](_0xdf76);return _0x1399a3(_0xdf76);}return _0xb2863e(_0x4f7e7f);});});}exports[_0xf878('0xb')]=function(_0x38eddf,_0x39b1bb){return pm2['list']()[_0xf878('0xc')](function(_0x3902f7){if(_0x3902f7){var _0x119e9e=_['reject'](_0x3902f7,function(_0x568a3a){return _0x568a3a[_0xf878('0x9')]===_0xf878('0xd')||_0x568a3a[_0xf878('0x9')]===_0xf878('0xe');});return{'rows':_0x119e9e,'count':_0x119e9e[_0xf878('0xf')]};}return null;})[_0xf878('0xc')](respondWithResult(_0x39b1bb,null))[_0xf878('0x10')](handleError(_0x39b1bb,null));};exports[_0xf878('0x11')]=function(_0x3c5dee,_0x3a55f3){return pm2[_0xf878('0x12')](_0x3c5dee['params']['id'])[_0xf878('0xc')](respondWithResult(_0x3a55f3,null))[_0xf878('0xc')](handleEntityNotFound(_0x3a55f3,null))[_0xf878('0x10')](handleError(_0x3a55f3,null));};exports[_0xf878('0x13')]=function(_0x3714f6,_0x237d15){if(_0x3714f6[_0xf878('0x14')]['name']&&_0x3714f6[_0xf878('0x14')][_0xf878('0x15')]){var _0x250f85=path['join'](__dirname,_0xf878('0x16'),_0x3714f6[_0xf878('0x14')][_0xf878('0x15')]);var _0x392822=process[_0xf878('0x17')]();process[_0xf878('0x18')](path[_0xf878('0x19')](_0x250f85));return execChildProcess()[_0xf878('0xc')](function(_0x212436){process[_0xf878('0x18')](_0x392822);return pm2[_0xf878('0x1a')]({'name':_0x3714f6['body'][_0xf878('0x9')],'script':_0x250f85});})['then'](function(_0xa3d3d3){pm2[_0xf878('0x1b')]();return _0xa3d3d3[0x0];})[_0xf878('0xc')](respondWithResult(_0x237d15,0xc9))[_0xf878('0x10')](handleError(_0x237d15,null));}else{return _0x237d15[_0xf878('0x8')](0x1f4)['send']({'message':'Missing\x20name\x20and/or\x20path'});}};exports['update']=function(_0x242926,_0x3baba4){if(_0x242926[_0xf878('0x14')]['id']){delete _0x242926['body']['id'];}var _0xfa3e11={'online':_0xf878('0x1c'),'stopped':_0xf878('0x1d')};if(_0xfa3e11[_0xf878('0x1e')](_0x242926[_0xf878('0x14')]['status'])){return pm2[_0xfa3e11[_0x242926['body'][_0xf878('0x8')]]](_0x242926[_0xf878('0x1f')]['id'])['then'](respondWithResult(_0x3baba4,0xc8))[_0xf878('0x10')](handleError(_0x3baba4,null));}else{return _0x3baba4['status'](0x1f4)[_0xf878('0x20')]({'message':'Unknown\x20status'});}};exports[_0xf878('0x21')]=function(_0x49e66a,_0x2630fb){if(_0x49e66a['body']['id']){delete _0x49e66a[_0xf878('0x14')]['id'];}if(_0x49e66a[_0xf878('0x1f')]['id']){return pm2[_0xf878('0x22')](_0x49e66a[_0xf878('0x1f')]['id'])[_0xf878('0xc')](function(_0x716782){pm2['dump']();return _0x716782[0x0];})[_0xf878('0xc')](respondWithResult(_0x2630fb,null))[_0xf878('0x10')](handleError(_0x2630fb,null));}else{return _0x2630fb[_0xf878('0x8')](0x1f4)[_0xf878('0x20')]({'message':_0xf878('0x23')});}};
\ No newline at end of file
+var _0x04b8=['join','../../files/plugins','cwd','chdir','start','send','Missing\x20name\x20and/or\x20path','update','restart','stop','hasOwnProperty','Unknown\x20status','destroy','params','delete','dump','Unknown\x20id','../../config/pm2','api','path','exec','bluebird','sendStatus','status','error','stack','name','npm\x20install','info','index','list','reject','express','length','catch','show','describe','then','create','body','script'];(function(_0x3b632f,_0x453380){var _0x10e788=function(_0x2228a4){while(--_0x2228a4){_0x3b632f['push'](_0x3b632f['shift']());}};_0x10e788(++_0x453380);}(_0x04b8,0x159));var _0x804b=function(_0x30fe0e,_0x5941f4){_0x30fe0e=_0x30fe0e-0x0;var _0x5c9413=_0x04b8[_0x30fe0e];return _0x5c9413;};'use strict';var _=require('lodash');var pm2=require(_0x804b('0x0'));var logger=require('../../config/logger')(_0x804b('0x1'));var path=require(_0x804b('0x2'));var exec=require('child_process')[_0x804b('0x3')];var BPromise=require(_0x804b('0x4'));function handleEntityNotFound(_0x5857dc,_0x3530f6){return function(_0x1c3474){if(!_0x1c3474){_0x5857dc[_0x804b('0x5')](0x194);;}return _0x1c3474;};}function respondWithResult(_0x5a8a5b,_0x2c22e3){_0x2c22e3=_0x2c22e3||0xc8;return function(_0x3c5404){if(_0x3c5404){return _0x5a8a5b[_0x804b('0x6')](_0x2c22e3)['json'](_0x3c5404);}return null;};}function handleError(_0x27e950,_0x1071b4){_0x1071b4=_0x1071b4||0x1f4;return function(_0x592e14){logger[_0x804b('0x7')](_0x592e14[_0x804b('0x8')]);if(_0x592e14[_0x804b('0x9')]){delete _0x592e14[_0x804b('0x9')];}_0x27e950[_0x804b('0x6')](_0x1071b4)['send'](_0x592e14);};}function execChildProcess(){return new BPromise(function(_0x22c98d,_0x3338ba){exec(_0x804b('0xa'),function(_0x7029e7,_0x2d13ba,_0x12e7b4){logger['info'](_0x2d13ba);logger[_0x804b('0xb')](_0x12e7b4);if(_0x7029e7){logger['error'](_0x7029e7);return _0x3338ba(_0x7029e7);}return _0x22c98d(_0x2d13ba);});});}exports[_0x804b('0xc')]=function(_0x3a2702,_0xfa2ddd){return pm2[_0x804b('0xd')]()['then'](function(_0x215825){if(_0x215825){var _0x1b01a7=_[_0x804b('0xe')](_0x215825,function(_0x236a85){return _0x236a85['name']===_0x804b('0xf')||_0x236a85[_0x804b('0x9')]==='motion2';});return{'rows':_0x1b01a7,'count':_0x1b01a7[_0x804b('0x10')]};}return null;})['then'](respondWithResult(_0xfa2ddd,null))[_0x804b('0x11')](handleError(_0xfa2ddd,null));};exports[_0x804b('0x12')]=function(_0x13662e,_0x1760f8){return pm2[_0x804b('0x13')](_0x13662e['params']['id'])[_0x804b('0x14')](respondWithResult(_0x1760f8,null))['then'](handleEntityNotFound(_0x1760f8,null))[_0x804b('0x11')](handleError(_0x1760f8,null));};exports[_0x804b('0x15')]=function(_0x42cceb,_0x469251){if(_0x42cceb['body'][_0x804b('0x9')]&&_0x42cceb[_0x804b('0x16')][_0x804b('0x17')]){var _0x11eaf6=path[_0x804b('0x18')](__dirname,_0x804b('0x19'),_0x42cceb[_0x804b('0x16')][_0x804b('0x17')]);var _0xaa9521=process[_0x804b('0x1a')]();process[_0x804b('0x1b')](path['dirname'](_0x11eaf6));return execChildProcess()[_0x804b('0x14')](function(_0x5a77e0){process['chdir'](_0xaa9521);return pm2[_0x804b('0x1c')]({'name':_0x42cceb[_0x804b('0x16')][_0x804b('0x9')],'script':_0x11eaf6});})[_0x804b('0x14')](function(_0x9080c2){pm2['dump']();return _0x9080c2[0x0];})[_0x804b('0x14')](respondWithResult(_0x469251,0xc9))[_0x804b('0x11')](handleError(_0x469251,null));}else{return _0x469251['status'](0x1f4)[_0x804b('0x1d')]({'message':_0x804b('0x1e')});}};exports[_0x804b('0x1f')]=function(_0x27d5ec,_0x2d88da){if(_0x27d5ec['body']['id']){delete _0x27d5ec[_0x804b('0x16')]['id'];}var _0x22f822={'online':_0x804b('0x20'),'stopped':_0x804b('0x21')};if(_0x22f822[_0x804b('0x22')](_0x27d5ec['body'][_0x804b('0x6')])){return pm2[_0x22f822[_0x27d5ec[_0x804b('0x16')][_0x804b('0x6')]]](_0x27d5ec['params']['id'])[_0x804b('0x14')](respondWithResult(_0x2d88da,0xc8))[_0x804b('0x11')](handleError(_0x2d88da,null));}else{return _0x2d88da[_0x804b('0x6')](0x1f4)['send']({'message':_0x804b('0x23')});}};exports[_0x804b('0x24')]=function(_0x5e8f85,_0x391376){if(_0x5e8f85[_0x804b('0x16')]['id']){delete _0x5e8f85[_0x804b('0x16')]['id'];}if(_0x5e8f85[_0x804b('0x25')]['id']){return pm2[_0x804b('0x26')](_0x5e8f85[_0x804b('0x25')]['id'])['then'](function(_0x3b0692){pm2[_0x804b('0x27')]();return _0x3b0692[0x0];})[_0x804b('0x14')](respondWithResult(_0x391376,null))[_0x804b('0x11')](handleError(_0x391376,null));}else{return _0x391376[_0x804b('0x6')](0x1f4)[_0x804b('0x1d')]({'message':_0x804b('0x28')});}};
\ No newline at end of file
index fef79b4..bfe9658 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6fa=['isAuthenticated','getQueues','express','./realtime.controller'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb6fa,0x1c2));var _0xab6f=function(_0x17a32f,_0x5a51a){_0x17a32f=_0x17a32f-0x0;var _0x15a293=_0xb6fa[_0x17a32f];return _0x15a293;};'use strict';var express=require(_0xab6f('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var controller=require(_0xab6f('0x1'));router['get']('/queues',auth[_0xab6f('0x2')](),controller[_0xab6f('0x3')]);module['exports']=router;
\ No newline at end of file
+var _0x023e=['exports','express','/queues','isAuthenticated'];(function(_0x586db9,_0x1ba4f8){var _0x29f15d=function(_0x1b39c7){while(--_0x1b39c7){_0x586db9['push'](_0x586db9['shift']());}};_0x29f15d(++_0x1ba4f8);}(_0x023e,0xc5));var _0xe023=function(_0x419022,_0x47cd8d){_0x419022=_0x419022-0x0;var _0x53a1a7=_0x023e[_0x419022];return _0x53a1a7;};'use strict';var express=require(_0xe023('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var controller=require('./realtime.controller');router['get'](_0xe023('0x1'),auth[_0xe023('0x2')](),controller['getQueues']);module[_0xe023('0x3')]=router;
\ No newline at end of file
index 9bddc62..a946841 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbff5=['findAll','QueueId','agent','catch','util','lodash','jayson/promise','../../components/parsers/qs','../../config/logger','api','../../mysqldb','http','offset','undefined','limit','count','status','Content-Range','json','error','stack','name','chat','sms','openchannel','whatsapp','voice','resolve','then','query','includes','channel','Invalid\x20channel','toLowerCase','startCase','Queue','map','fieldName','type','key','getOptions','user','role','userProfileId','outbound','QueueCampaigns','Queues','filter','UserProfile','findAndCountAll','request','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','loggedIn','available','talking','paused','push','pTalking','message','dialActive','dialMethod','Trunk','startProgressive','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgTalktime','rows','get','loggedInDb','waiting','originated','agents','find','merge','pick','online','getMembers','UserId','User','Pause'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xbff5,0x1bc));var _0x5bff=function(_0x1b245a,_0x2d800e){_0x1b245a=_0x1b245a-0x0;var _0x440fb1=_0xbff5[_0x1b245a];return _0x440fb1;};'use strict';var util=require(_0x5bff('0x0'));var _=require(_0x5bff('0x1'));var jayson=require(_0x5bff('0x2'));var qs=require(_0x5bff('0x3'));var logger=require(_0x5bff('0x4'))(_0x5bff('0x5'));var db=require(_0x5bff('0x6'))['db'];var client=jayson['client'][_0x5bff('0x7')]({'port':0x232a});var routingClient=jayson['client']['http']({'port':0x232c});function respondWithFilteredResult(_0x16ed7b,_0x1d8650){return function(_0x151add){if(_0x151add){var _0xa54c57=typeof _0x1d8650[_0x5bff('0x8')]===_0x5bff('0x9')&&typeof _0x1d8650[_0x5bff('0xa')]===_0x5bff('0x9');var _0x3eb6f9=_0x151add['count'];var _0x20e26f=_0xa54c57?0x0:_0x1d8650['offset'];var _0x1d8197=_0xa54c57?_0x151add[_0x5bff('0xb')]:_0x1d8650['offset']+_0x1d8650[_0x5bff('0xa')];var _0x5aff6f;if(_0x1d8197>=_0x3eb6f9){_0x1d8197=_0x3eb6f9;_0x5aff6f=0xc8;}else{_0x5aff6f=0xce;}_0x16ed7b[_0x5bff('0xc')](_0x5aff6f);return _0x16ed7b['set'](_0x5bff('0xd'),_0x20e26f+'-'+_0x1d8197+'/'+_0x3eb6f9)[_0x5bff('0xe')](_0x151add);}return null;};}function handleError(_0x4a6903,_0x132dc9){_0x132dc9=_0x132dc9||0x1f4;return function(_0x50e1e9){logger[_0x5bff('0xf')](_0x50e1e9[_0x5bff('0x10')]);if(_0x50e1e9['name']){delete _0x50e1e9[_0x5bff('0x11')];}_0x4a6903[_0x5bff('0xc')](_0x132dc9)['send'](_0x50e1e9);};}exports['getQueues']=function(_0x378eca,_0x1d300e){var _0x3a507c=['mail',_0x5bff('0x12'),_0x5bff('0x13'),_0x5bff('0x14'),'fax',_0x5bff('0x15'),_0x5bff('0x16')];var _0x38daa0={'count':0x0,'rows':[]},_0x546351={},_0xc9fbc3;Promise[_0x5bff('0x17')]()[_0x5bff('0x18')](function(){if(_0x378eca[_0x5bff('0x19')]['channel']){if(!_[_0x5bff('0x1a')](_0x3a507c,_0x378eca['query'][_0x5bff('0x1b')]['toLowerCase']()))throw new Error(_0x5bff('0x1c'));_0xc9fbc3=_0x378eca[_0x5bff('0x19')][_0x5bff('0x1b')][_0x5bff('0x1d')]();}var _0x12d018=_[_0x5bff('0x1e')](_0xc9fbc3)+_0x5bff('0x1f');var _0x13ee8f=_[_0x5bff('0x20')](db[_0x12d018]['rawAttributes'],function(_0x5f2593){return{'name':_0x5f2593[_0x5bff('0x21')],'type':_0x5f2593[_0x5bff('0x22')][_0x5bff('0x23')]};});_0x546351=qs[_0x5bff('0x24')](_0x13ee8f,_0x378eca);if(_0x378eca[_0x5bff('0x25')][_0x5bff('0x26')]===_0x5bff('0x25')){var _0x5e2ae8={'params':{'id':_0x378eca['user'][_0x5bff('0x27')]},'query':{'section':_0xc9fbc3==='voice'&&_0x378eca[_0x5bff('0x19')][_0x5bff('0x22')]===_0x5bff('0x28')?_0x5bff('0x29'):_[_0x5bff('0x1e')](_0xc9fbc3)+_0x5bff('0x2a'),'type':_0x378eca[_0x5bff('0x19')][_0x5bff('0x22')],'nolimit':!![],'sort':'name','filter':_0x378eca['query'][_0x5bff('0x2b')]}};return db[_0x5bff('0x2c')]['getResources'](_0x5e2ae8);}return db[_0x12d018][_0x5bff('0x2d')](_0x546351);})['then'](function(_0x5470cb){_0x38daa0[_0x5bff('0xb')]=_0x5470cb['count'];var _0x3ed23b=_0xc9fbc3===_0x5bff('0x16')?client:routingClient;return _0x3ed23b[_0x5bff('0x2e')](_[_0x5bff('0x1e')](_0xc9fbc3)+'Queues',_0x378eca)[_0x5bff('0x18')](function(_0x4ee6f1){if(_0x4ee6f1[_0x5bff('0xf')])throw new Error(util['format'](_0x5bff('0x2f'),_0xc9fbc3));var _0x100d0c=_0x4ee6f1[_0x5bff('0x30')];var _0x3491e0=[_0x5bff('0x31'),_0x5bff('0x32'),'waiting',_0x5bff('0x33'),_0x5bff('0x34')];if(_0xc9fbc3===_0x5bff('0x16')&&_0x378eca[_0x5bff('0x19')][_0x5bff('0x22')]===_0x5bff('0x28')){_0x3491e0[_0x5bff('0x35')](_0x5bff('0x36'),'originated',_0x5bff('0x37'),_0x5bff('0x38'),_0x5bff('0x39'),_0x5bff('0x3a'),'startPredictive',_0x5bff('0x3b'),_0x5bff('0x3c'),'erlangCallToSecond',_0x5bff('0x3d'),_0x5bff('0x3e'),_0x5bff('0x3f'),_0x5bff('0x40'),'dialPredictiveIntervalMinThreshold',_0x5bff('0x41'),_0x5bff('0x42'),_0x5bff('0x43'),'predictiveIntervalDroppedCallsTimeout',_0x5bff('0x44'),'predictiveIntervalAvgHoldtime',_0x5bff('0x45'));}var _0x42cda7=_0x5470cb[_0x5bff('0x46')]['map'](function(_0x368110){var _0x1ec079=_0x368110[_0x5bff('0x47')]({'plain':!![]});_0x1ec079['paused']=0x0;_0x1ec079[_0x5bff('0x48')]=0x0;_0x1ec079[_0x5bff('0x31')]=0x0;_0x1ec079['available']=0x0;_0x1ec079[_0x5bff('0x34')]=0x0;_0x1ec079[_0x5bff('0x49')]=0x0;if(_0xc9fbc3===_0x5bff('0x16')){_0x1ec079[_0x5bff('0x33')]=0x0;if(_0x378eca[_0x5bff('0x19')]['type']===_0x5bff('0x28')){_0x1ec079['pTalking']=0x0;_0x1ec079[_0x5bff('0x4a')]=0x0;}}_0x1ec079[_0x5bff('0x4b')]=[];var _0x1c3f65=_[_0x5bff('0x4c')](_0x100d0c[_0x5bff('0x46')],['id',_0x1ec079['id']]);if(_0x1c3f65)_[_0x5bff('0x4d')](_0x1ec079,_[_0x5bff('0x4e')](_0x1c3f65,_0x3491e0));if(_0xc9fbc3==='voice'){return _0x368110['getAgents']({'attributes':['id',_0x5bff('0x11'),_0x5bff('0x4f')],'joinTableAttributes':[],'raw':!![]})[_0x5bff('0x18')](function(_0x27a191){return _0x368110[_0x5bff('0x50')]({'raw':!![]})[_0x5bff('0x18')](function(_0x13de8a){for(var _0x30949a=0x0;_0x30949a<_0x27a191['length'];_0x30949a++){var _0x277464=_['find'](_0x13de8a,[_0x5bff('0x51'),_0x27a191[_0x30949a]['id']]);var _0x1b8c7f={'id':_0x27a191[_0x30949a]['id'],'name':_0x27a191[_0x30949a]['name'],'online':Boolean(_0x27a191[_0x30949a][_0x5bff('0x4f')]),'paused':_0x277464?Boolean(_0x277464[_0x5bff('0x34')]):![]};if(_0x1b8c7f['online'])_0x1ec079[_0x5bff('0x48')]++;if(_0x1b8c7f[_0x5bff('0x34')])_0x1ec079[_0x5bff('0x34')]++;_0x1ec079['agents'][_0x5bff('0x35')](_0x1b8c7f);}return _0x1ec079;});});}else{var _0x3a9958=_0x5bff('0x52')+_['startCase'](_0xc9fbc3)+_0x5bff('0x1f');var _0x398896=_0xc9fbc3+_0x5bff('0x53');return db[_0x3a9958][_0x5bff('0x54')]({'where':{[_['startCase'](_0xc9fbc3)+_0x5bff('0x55')]:_0x368110['id']},'raw':!![]})['then'](function(_0x57e850){return db[_0x5bff('0x52')][_0x5bff('0x54')]({'attributes':['id','name',_0x5bff('0x4f'),_0x398896],'where':{'id':_[_0x5bff('0x20')](_0x57e850,'UserId'),'role':_0x5bff('0x56')},'raw':!![]});})[_0x5bff('0x18')](function(_0x18f8a5){for(var _0x39c90f=0x0;_0x39c90f<_0x18f8a5['length'];_0x39c90f++){var _0x579a8d={'id':_0x18f8a5[_0x39c90f]['id'],'name':_0x18f8a5[_0x39c90f][_0x5bff('0x11')],'online':Boolean(_0x18f8a5[_0x39c90f][_0x5bff('0x4f')]),'paused':Boolean(_0x18f8a5[_0x39c90f][_0x398896])};if(_0x579a8d[_0x5bff('0x4f')])_0x1ec079[_0x5bff('0x48')]++;if(_0x579a8d[_0x5bff('0x34')])_0x1ec079['paused']++;_0x1ec079[_0x5bff('0x4b')][_0x5bff('0x35')](_0x579a8d);}return _0x1ec079;});}});return Promise['all'](_0x42cda7);});})[_0x5bff('0x18')](function(_0x5c59c0){_0x38daa0['rows']=_0x5c59c0;return _0x38daa0;})['then'](respondWithFilteredResult(_0x1d300e,_0x546351))[_0x5bff('0x57')](handleError(_0x1d300e,null));};
\ No newline at end of file
+var _0x7096=['pick','getAgents','online','getMembers','UserId','Pause','findAll','QueueId','User','agent','length','all','catch','lodash','../../components/parsers/qs','api','../../mysqldb','client','http','offset','undefined','limit','count','status','set','Content-Range','json','error','name','send','chat','sms','openchannel','fax','then','query','channel','toLowerCase','Invalid\x20channel','startCase','Queue','map','rawAttributes','fieldName','type','key','user','role','userProfileId','voice','outbound','QueueCampaigns','Queues','UserProfile','findAndCountAll','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','loggedIn','available','waiting','talking','paused','push','originated','message','dialActive','dialMethod','startPredictive','startProgressive','erlangCallToSecond','erlangAbandonmentRate','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','rows','get','pTalking','agents','merge'];(function(_0x123423,_0x4a6dd9){var _0x4022da=function(_0x15ecd7){while(--_0x15ecd7){_0x123423['push'](_0x123423['shift']());}};_0x4022da(++_0x4a6dd9);}(_0x7096,0x10c));var _0x6709=function(_0x2b7764,_0x2606f1){_0x2b7764=_0x2b7764-0x0;var _0x848dcb=_0x7096[_0x2b7764];return _0x848dcb;};'use strict';var util=require('util');var _=require(_0x6709('0x0'));var jayson=require('jayson/promise');var qs=require(_0x6709('0x1'));var logger=require('../../config/logger')(_0x6709('0x2'));var db=require(_0x6709('0x3'))['db'];var client=jayson[_0x6709('0x4')][_0x6709('0x5')]({'port':0x232a});var routingClient=jayson[_0x6709('0x4')][_0x6709('0x5')]({'port':0x232c});function respondWithFilteredResult(_0xb8fe6d,_0x9d630f){return function(_0xa35832){if(_0xa35832){var _0x3e2223=typeof _0x9d630f[_0x6709('0x6')]===_0x6709('0x7')&&typeof _0x9d630f[_0x6709('0x8')]==='undefined';var _0x5af380=_0xa35832[_0x6709('0x9')];var _0x2d8c0b=_0x3e2223?0x0:_0x9d630f[_0x6709('0x6')];var _0x1aa476=_0x3e2223?_0xa35832[_0x6709('0x9')]:_0x9d630f[_0x6709('0x6')]+_0x9d630f['limit'];var _0x5b9f26;if(_0x1aa476>=_0x5af380){_0x1aa476=_0x5af380;_0x5b9f26=0xc8;}else{_0x5b9f26=0xce;}_0xb8fe6d[_0x6709('0xa')](_0x5b9f26);return _0xb8fe6d[_0x6709('0xb')](_0x6709('0xc'),_0x2d8c0b+'-'+_0x1aa476+'/'+_0x5af380)[_0x6709('0xd')](_0xa35832);}return null;};}function handleError(_0x31ac88,_0x288f51){_0x288f51=_0x288f51||0x1f4;return function(_0x1d56a5){logger[_0x6709('0xe')](_0x1d56a5['stack']);if(_0x1d56a5[_0x6709('0xf')]){delete _0x1d56a5[_0x6709('0xf')];}_0x31ac88[_0x6709('0xa')](_0x288f51)[_0x6709('0x10')](_0x1d56a5);};}exports['getQueues']=function(_0xc728aa,_0x5c667c){var _0x41af1f=['mail',_0x6709('0x11'),_0x6709('0x12'),_0x6709('0x13'),_0x6709('0x14'),'whatsapp','voice'];var _0x5c4f94={'count':0x0,'rows':[]},_0x3fa5b1={},_0x235a54;Promise['resolve']()[_0x6709('0x15')](function(){if(_0xc728aa[_0x6709('0x16')][_0x6709('0x17')]){if(!_['includes'](_0x41af1f,_0xc728aa[_0x6709('0x16')][_0x6709('0x17')][_0x6709('0x18')]()))throw new Error(_0x6709('0x19'));_0x235a54=_0xc728aa['query'][_0x6709('0x17')][_0x6709('0x18')]();}var _0x373047=_[_0x6709('0x1a')](_0x235a54)+_0x6709('0x1b');var _0x224e8a=_[_0x6709('0x1c')](db[_0x373047][_0x6709('0x1d')],function(_0x386224){return{'name':_0x386224[_0x6709('0x1e')],'type':_0x386224[_0x6709('0x1f')][_0x6709('0x20')]};});_0x3fa5b1=qs['getOptions'](_0x224e8a,_0xc728aa);if(_0xc728aa[_0x6709('0x21')][_0x6709('0x22')]===_0x6709('0x21')){var _0x5c7982={'params':{'id':_0xc728aa[_0x6709('0x21')][_0x6709('0x23')]},'query':{'section':_0x235a54===_0x6709('0x24')&&_0xc728aa[_0x6709('0x16')]['type']===_0x6709('0x25')?_0x6709('0x26'):_['startCase'](_0x235a54)+_0x6709('0x27'),'type':_0xc728aa[_0x6709('0x16')]['type'],'nolimit':!![],'sort':_0x6709('0xf'),'filter':_0xc728aa[_0x6709('0x16')]['filter']}};return db[_0x6709('0x28')]['getResources'](_0x5c7982);}return db[_0x373047][_0x6709('0x29')](_0x3fa5b1);})[_0x6709('0x15')](function(_0x5b6906){_0x5c4f94[_0x6709('0x9')]=_0x5b6906['count'];var _0xe066d8=_0x235a54===_0x6709('0x24')?client:routingClient;return _0xe066d8['request'](_[_0x6709('0x1a')](_0x235a54)+'Queues',_0xc728aa)[_0x6709('0x15')](function(_0x135f46){if(_0x135f46['error'])throw new Error(util['format'](_0x6709('0x2a'),_0x235a54));var _0x2a0cb0=_0x135f46[_0x6709('0x2b')];var _0x3f2b5e=[_0x6709('0x2c'),_0x6709('0x2d'),_0x6709('0x2e'),_0x6709('0x2f'),_0x6709('0x30')];if(_0x235a54==='voice'&&_0xc728aa[_0x6709('0x16')][_0x6709('0x1f')]===_0x6709('0x25')){_0x3f2b5e[_0x6709('0x31')]('pTalking',_0x6709('0x32'),_0x6709('0x33'),_0x6709('0x34'),_0x6709('0x35'),'Trunk',_0x6709('0x36'),_0x6709('0x37'),'erlangCalls',_0x6709('0x38'),_0x6709('0x39'),'erlangBusyFactor',_0x6709('0x3a'),_0x6709('0x3b'),_0x6709('0x3c'),_0x6709('0x3d'),_0x6709('0x3e'),_0x6709('0x3f'),_0x6709('0x40'),'predictiveIntervalDroppedCallsCallersExit',_0x6709('0x41'),_0x6709('0x42'));}var _0x4fad54=_0x5b6906[_0x6709('0x43')][_0x6709('0x1c')](function(_0x6b5f39){var _0x2bb89c=_0x6b5f39[_0x6709('0x44')]({'plain':!![]});_0x2bb89c[_0x6709('0x30')]=0x0;_0x2bb89c['loggedInDb']=0x0;_0x2bb89c[_0x6709('0x2c')]=0x0;_0x2bb89c['available']=0x0;_0x2bb89c[_0x6709('0x30')]=0x0;_0x2bb89c[_0x6709('0x2e')]=0x0;if(_0x235a54===_0x6709('0x24')){_0x2bb89c['talking']=0x0;if(_0xc728aa[_0x6709('0x16')][_0x6709('0x1f')]===_0x6709('0x25')){_0x2bb89c[_0x6709('0x45')]=0x0;_0x2bb89c[_0x6709('0x32')]=0x0;}}_0x2bb89c[_0x6709('0x46')]=[];var _0x450654=_['find'](_0x2a0cb0[_0x6709('0x43')],['id',_0x2bb89c['id']]);if(_0x450654)_[_0x6709('0x47')](_0x2bb89c,_[_0x6709('0x48')](_0x450654,_0x3f2b5e));if(_0x235a54===_0x6709('0x24')){return _0x6b5f39[_0x6709('0x49')]({'attributes':['id',_0x6709('0xf'),_0x6709('0x4a')],'joinTableAttributes':[],'raw':!![]})['then'](function(_0x5abb53){return _0x6b5f39[_0x6709('0x4b')]({'raw':!![]})[_0x6709('0x15')](function(_0x98a12c){for(var _0x42790d=0x0;_0x42790d<_0x5abb53['length'];_0x42790d++){var _0x5afebc=_['find'](_0x98a12c,[_0x6709('0x4c'),_0x5abb53[_0x42790d]['id']]);var _0x293577={'id':_0x5abb53[_0x42790d]['id'],'name':_0x5abb53[_0x42790d]['name'],'online':Boolean(_0x5abb53[_0x42790d][_0x6709('0x4a')]),'paused':_0x5afebc?Boolean(_0x5afebc[_0x6709('0x30')]):![]};if(_0x293577['online'])_0x2bb89c['loggedInDb']++;if(_0x293577[_0x6709('0x30')])_0x2bb89c[_0x6709('0x30')]++;_0x2bb89c[_0x6709('0x46')][_0x6709('0x31')](_0x293577);}return _0x2bb89c;});});}else{var _0x13877a='User'+_[_0x6709('0x1a')](_0x235a54)+'Queue';var _0x26e871=_0x235a54+_0x6709('0x4d');return db[_0x13877a][_0x6709('0x4e')]({'where':{[_['startCase'](_0x235a54)+_0x6709('0x4f')]:_0x6b5f39['id']},'raw':!![]})['then'](function(_0x57c5bf){return db[_0x6709('0x50')][_0x6709('0x4e')]({'attributes':['id',_0x6709('0xf'),_0x6709('0x4a'),_0x26e871],'where':{'id':_[_0x6709('0x1c')](_0x57c5bf,_0x6709('0x4c')),'role':_0x6709('0x51')},'raw':!![]});})[_0x6709('0x15')](function(_0x123793){for(var _0xe999aa=0x0;_0xe999aa<_0x123793[_0x6709('0x52')];_0xe999aa++){var _0x17f95d={'id':_0x123793[_0xe999aa]['id'],'name':_0x123793[_0xe999aa][_0x6709('0xf')],'online':Boolean(_0x123793[_0xe999aa][_0x6709('0x4a')]),'paused':Boolean(_0x123793[_0xe999aa][_0x26e871])};if(_0x17f95d[_0x6709('0x4a')])_0x2bb89c['loggedInDb']++;if(_0x17f95d[_0x6709('0x30')])_0x2bb89c['paused']++;_0x2bb89c['agents'][_0x6709('0x31')](_0x17f95d);}return _0x2bb89c;});}});return Promise[_0x6709('0x53')](_0x4fad54);});})[_0x6709('0x15')](function(_0xe8dd1){_0x5c4f94[_0x6709('0x43')]=_0xe8dd1;return _0x5c4f94;})[_0x6709('0x15')](respondWithFilteredResult(_0x5c667c,_0x3fa5b1))[_0x6709('0x54')](handleError(_0x5c667c,null));};
\ No newline at end of file
index 1f6ea25..77ab56a 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(_0xb72a11,_0x19b9ae){var _0x2be16f=function(_0x56c9ea){while(--_0x56c9ea){_0xb72a11['push'](_0xb72a11['shift']());}};_0x2be16f(++_0x19b9ae);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x5e8c32,_0x1b1f3f){_0x5e8c32=_0x5e8c32-0x0;var _0x595f7b=_0xcb91[_0x5e8c32];return _0x595f7b;};'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 _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x2f9f2e,_0x803bef){var _0x2b78c9=function(_0xdee88c){while(--_0xdee88c){_0x2f9f2e['push'](_0x2f9f2e['shift']());}};_0x2b78c9(++_0x803bef);}(_0x70e0,0x17b));var _0x070e=function(_0x5d4b5d,_0x57e58e){_0x5d4b5d=_0x5d4b5d-0x0;var _0x1e1e36=_0x70e0[_0x5d4b5d];return _0x1e1e36;};'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 d499fb7..790dbb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc1c=['exports','STRING','DATE','INTEGER'];(function(_0x1b376b,_0x57e39f){var _0x1fe74e=function(_0x489711){while(--_0x489711){_0x1b376b['push'](_0x1b376b['shift']());}};_0x1fe74e(++_0x57e39f);}(_0xbc1c,0xd8));var _0xcbc1=function(_0x3b660f,_0x45c3db){_0x3b660f=_0x3b660f-0x0;var _0x187a29=_0xbc1c[_0x3b660f];return _0x187a29;};'use strict';var Sequelize=require('sequelize');module[_0xcbc1('0x0')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0xcbc1('0x1')]},'scheduledat':{'type':Sequelize['DATE']},'uniqueid':{'type':Sequelize[_0xcbc1('0x1')]},'starttime':{'type':Sequelize[_0xcbc1('0x2')]},'responsetime':{'type':Sequelize[_0xcbc1('0x2')]},'ringtime':{'type':Sequelize[_0xcbc1('0x3')],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xcbc1('0x1')]},'membername':{'type':Sequelize[_0xcbc1('0x1')]}};
\ No newline at end of file
+var _0xbe2a=['INTEGER','STRING','DATE','sequelize','exports'];(function(_0x47ddbb,_0x1b11ea){var _0x139542=function(_0x318bba){while(--_0x318bba){_0x47ddbb['push'](_0x47ddbb['shift']());}};_0x139542(++_0x1b11ea);}(_0xbe2a,0x1d9));var _0xabe2=function(_0x367c86,_0x5a361b){_0x367c86=_0x367c86-0x0;var _0x1243da=_0xbe2a[_0x367c86];return _0x1243da;};'use strict';var Sequelize=require(_0xabe2('0x0'));module[_0xabe2('0x1')]={'state':{'type':Sequelize[_0xabe2('0x2')](0x2)},'statedesc':{'type':Sequelize[_0xabe2('0x3')]},'scheduledat':{'type':Sequelize[_0xabe2('0x4')]},'uniqueid':{'type':Sequelize[_0xabe2('0x3')]},'starttime':{'type':Sequelize[_0xabe2('0x4')]},'responsetime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0xabe2('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xabe2('0x3')]},'membername':{'type':Sequelize[_0xabe2('0x3')]}};
\ No newline at end of file
index 305b32e..30c1769 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dd6=['../../config/environment','exports','define','ReportAgentPreview','report_agent_preview','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x8dd6,0x1bf));var _0x68dd=function(_0x5d9ecc,_0x55d21a){_0x5d9ecc=_0x5d9ecc-0x0;var _0x30baea=_0x8dd6[_0x5d9ecc];return _0x30baea;};'use strict';var _=require(_0x68dd('0x0'));var util=require(_0x68dd('0x1'));var logger=require(_0x68dd('0x2'))(_0x68dd('0x3'));var moment=require(_0x68dd('0x4'));var BPromise=require(_0x68dd('0x5'));var rp=require(_0x68dd('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x68dd('0x7'));var config=require(_0x68dd('0x8'));var attributes=require('./reportAgentPreview.attributes');module[_0x68dd('0x9')]=function(_0x155a80,_0x58f4f3){return _0x155a80[_0x68dd('0xa')](_0x68dd('0xb'),attributes,{'tableName':_0x68dd('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0bb9=['path','rimraf','./reportAgentPreview.attributes','exports','lodash','util','../../config/logger','bluebird','request-promise'];(function(_0x5b6a9d,_0x2e6019){var _0x1dc718=function(_0x53663c){while(--_0x53663c){_0x5b6a9d['push'](_0x5b6a9d['shift']());}};_0x1dc718(++_0x2e6019);}(_0x0bb9,0x109));var _0x90bb=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x0bb9[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0x90bb('0x0'));var util=require(_0x90bb('0x1'));var logger=require(_0x90bb('0x2'))('api');var moment=require('moment');var BPromise=require(_0x90bb('0x3'));var rp=require(_0x90bb('0x4'));var fs=require('fs');var path=require(_0x90bb('0x5'));var rimraf=require(_0x90bb('0x6'));var config=require('../../config/environment');var attributes=require(_0x90bb('0x7'));module[_0x90bb('0x8')]=function(_0x2bb785,_0x1db292){return _0x2bb785['define']('ReportAgentPreview',attributes,{'tableName':'report_agent_preview','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9fc3efe..5ea7765 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe74c=['moment','bluebird','ioredis','../../mysqldb','rpc','jayson/promise','client','http','request','then','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','CreateReportAgentPreview','ReportAgentPreview','create','body','options','raw','lodash','util'];(function(_0x15fa77,_0x93eaff){var _0x1385ff=function(_0x165e02){while(--_0x165e02){_0x15fa77['push'](_0x15fa77['shift']());}};_0x1385ff(++_0x93eaff);}(_0xe74c,0xf1));var _0xce74=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0xe74c[_0x3a6efd];return _0x487b9a;};'use strict';var _=require(_0xce74('0x0'));var util=require(_0xce74('0x1'));var moment=require(_0xce74('0x2'));var BPromise=require(_0xce74('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xce74('0x4'));var db=require(_0xce74('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xce74('0x6'));var config=require('../../config/environment');var jayson=require(_0xce74('0x7'));var client=jayson[_0xce74('0x8')][_0xce74('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x38af27,_0x3ea743,_0x1e07d0){return new BPromise(function(_0x3fbc1f,_0x428a01){return client[_0xce74('0xa')](_0x38af27,_0x1e07d0)[_0xce74('0xb')](function(_0x38e5d3){logger[_0xce74('0xc')](_0xce74('0xd'),_0x3ea743,_0xce74('0xe'));logger[_0xce74('0xf')]('ReportAgentPreview,\x20%s,\x20%s,\x20%s',_0x3ea743,_0xce74('0xe'),JSON[_0xce74('0x10')](_0x38e5d3));if(_0x38e5d3[_0xce74('0x11')]){if(_0x38e5d3[_0xce74('0x11')][_0xce74('0x12')]===0x1f4){logger[_0xce74('0x11')](_0xce74('0xd'),_0x3ea743,_0x38e5d3[_0xce74('0x11')][_0xce74('0x13')]);return _0x428a01(_0x38e5d3['error'][_0xce74('0x13')]);}logger['error'](_0xce74('0xd'),_0x3ea743,_0x38e5d3[_0xce74('0x11')][_0xce74('0x13')]);return _0x3fbc1f(_0x38e5d3[_0xce74('0x11')]['message']);}else{logger[_0xce74('0xc')]('ReportAgentPreview,\x20%s,\x20%s',_0x3ea743,_0xce74('0xe'));_0x3fbc1f(_0x38e5d3[_0xce74('0x14')][_0xce74('0x13')]);}})['catch'](function(_0x20591e){logger[_0xce74('0x11')](_0xce74('0xd'),_0x3ea743,_0x20591e);_0x428a01(_0x20591e);});});}exports[_0xce74('0x15')]=function(_0x4a951e){var _0x3bf7de=this;return new Promise(function(_0x3629ae,_0x4af1e8){return db[_0xce74('0x16')][_0xce74('0x17')](_0x4a951e[_0xce74('0x18')],{'raw':_0x4a951e[_0xce74('0x19')]?_0x4a951e[_0xce74('0x19')][_0xce74('0x1a')]===undefined?!![]:![]:!![]})[_0xce74('0xb')](function(_0x1f3111){logger[_0xce74('0xc')](_0xce74('0x15'),_0x4a951e);logger[_0xce74('0xf')]('CreateReportAgentPreview',_0x4a951e,JSON[_0xce74('0x10')](_0x1f3111));_0x3629ae(_0x1f3111);})['catch'](function(_0x175641){logger[_0xce74('0x11')]('CreateReportAgentPreview',_0x175641['message'],_0x4a951e);_0x4af1e8(_0x3bf7de[_0xce74('0x11')](0x1f4,_0x175641[_0xce74('0x13')]));});});};
\ No newline at end of file
+var _0x4ed7=['randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','ReportAgentPreview,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','create','body','options','raw','CreateReportAgentPreview','stringify','util','moment','bluebird'];(function(_0x395872,_0x36626f){var _0x574871=function(_0x1fda6e){while(--_0x1fda6e){_0x395872['push'](_0x395872['shift']());}};_0x574871(++_0x36626f);}(_0x4ed7,0x69));var _0x74ed=function(_0x500785,_0x15e5ff){_0x500785=_0x500785-0x0;var _0x1f8bcc=_0x4ed7[_0x500785];return _0x1f8bcc;};'use strict';var _=require('lodash');var util=require(_0x74ed('0x0'));var moment=require(_0x74ed('0x1'));var BPromise=require(_0x74ed('0x2'));var rs=require(_0x74ed('0x3'));var fs=require('fs');var Redis=require(_0x74ed('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x74ed('0x5'));var logger=require(_0x74ed('0x6'))(_0x74ed('0x7'));var config=require(_0x74ed('0x8'));var jayson=require(_0x74ed('0x9'));var client=jayson['client'][_0x74ed('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5b34bb,_0x30620e,_0x6fe331){return new BPromise(function(_0x11e3f7,_0x2cd605){return client['request'](_0x5b34bb,_0x6fe331)[_0x74ed('0xb')](function(_0x425642){logger[_0x74ed('0xc')](_0x74ed('0xd'),_0x30620e,_0x74ed('0xe'));logger['debug'](_0x74ed('0xf'),_0x30620e,_0x74ed('0xe'),JSON['stringify'](_0x425642));if(_0x425642[_0x74ed('0x10')]){if(_0x425642[_0x74ed('0x10')][_0x74ed('0x11')]===0x1f4){logger['error'](_0x74ed('0xd'),_0x30620e,_0x425642['error'][_0x74ed('0x12')]);return _0x2cd605(_0x425642[_0x74ed('0x10')][_0x74ed('0x12')]);}logger[_0x74ed('0x10')]('ReportAgentPreview,\x20%s,\x20%s',_0x30620e,_0x425642['error'][_0x74ed('0x12')]);return _0x11e3f7(_0x425642[_0x74ed('0x10')][_0x74ed('0x12')]);}else{logger[_0x74ed('0xc')](_0x74ed('0xd'),_0x30620e,_0x74ed('0xe'));_0x11e3f7(_0x425642[_0x74ed('0x13')]['message']);}})[_0x74ed('0x14')](function(_0x4cdf67){logger[_0x74ed('0x10')]('ReportAgentPreview,\x20%s,\x20%s',_0x30620e,_0x4cdf67);_0x2cd605(_0x4cdf67);});});}exports['CreateReportAgentPreview']=function(_0x1dd005){var _0x3d6316=this;return new Promise(function(_0x11351a,_0x33ac8a){return db['ReportAgentPreview'][_0x74ed('0x15')](_0x1dd005[_0x74ed('0x16')],{'raw':_0x1dd005[_0x74ed('0x17')]?_0x1dd005['options'][_0x74ed('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x5871af){logger[_0x74ed('0xc')](_0x74ed('0x19'),_0x1dd005);logger['debug'](_0x74ed('0x19'),_0x1dd005,JSON[_0x74ed('0x1a')](_0x5871af));_0x11351a(_0x5871af);})[_0x74ed('0x14')](function(_0x2bfaec){logger[_0x74ed('0x10')](_0x74ed('0x19'),_0x2bfaec[_0x74ed('0x12')],_0x1dd005);_0x33ac8a(_0x3d6316[_0x74ed('0x10')](0x1f4,_0x2bfaec[_0x74ed('0x12')]));});});};
\ No newline at end of file
index 85fb756..799e3f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb975=['util','path','Router','isAuthenticated','voiceChannels','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','get','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','voiceQueues','/chat/queues','chatQueues','/mail/queues','mailQueues','mailAccounts','/openchannel/queues','/sms/queues','smsQueues','whatsappQueues','/fax/queues','/voice/queues/preview/:id','/voice/queues/channels','voiceQueuesChannels','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','put','updateVoiceQueue','/outbound','outbound','/agents','agents','agentCapacity','/telephones','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','/mail/queues/:id/notify','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','/chat/queues/:id','post','/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','multer'];(function(_0x499aad,_0x62c3b3){var _0x56609e=function(_0x424006){while(--_0x424006){_0x499aad['push'](_0x499aad['shift']());}};_0x56609e(++_0x62c3b3);}(_0xb975,0x199));var _0x5b97=function(_0x35af23,_0x9190f6){_0x35af23=_0x35af23-0x0;var _0x340506=_0xb975[_0x35af23];return _0x340506;};'use strict';var multer=require(_0x5b97('0x0'));var util=require(_0x5b97('0x1'));var path=require(_0x5b97('0x2'));var express=require('express');var router=express[_0x5b97('0x3')]();var auth=require('../../components/auth/service');var controller=require('./rpc.controller');router['get']('/voice/channels',auth[_0x5b97('0x4')](),controller[_0x5b97('0x5')]);router['get'](_0x5b97('0x6'),auth['isAuthenticated'](),controller[_0x5b97('0x7')]);router[_0x5b97('0x8')](_0x5b97('0x9'),auth[_0x5b97('0x4')](),controller[_0x5b97('0xa')]);router[_0x5b97('0x8')]('/voice/queues',auth[_0x5b97('0x4')](),controller[_0x5b97('0xb')]);router[_0x5b97('0x8')](_0x5b97('0xc'),auth[_0x5b97('0x4')](),controller[_0x5b97('0xd')]);router[_0x5b97('0x8')](_0x5b97('0xe'),auth[_0x5b97('0x4')](),controller[_0x5b97('0xf')]);router[_0x5b97('0x8')]('/mail/accounts',auth[_0x5b97('0x4')](),controller[_0x5b97('0x10')]);router['get'](_0x5b97('0x11'),auth[_0x5b97('0x4')](),controller['openchannelQueues']);router['get'](_0x5b97('0x12'),auth[_0x5b97('0x4')](),controller[_0x5b97('0x13')]);router[_0x5b97('0x8')]('/whatsapp/queues',auth[_0x5b97('0x4')](),controller[_0x5b97('0x14')]);router[_0x5b97('0x8')](_0x5b97('0x15'),auth['isAuthenticated'](),controller['faxQueues']);router[_0x5b97('0x8')](_0x5b97('0x16'),auth[_0x5b97('0x4')](),controller['voiceQueuesPreview']);router['get'](_0x5b97('0x17'),auth[_0x5b97('0x4')](),controller[_0x5b97('0x18')]);router['get']('/voice/queues/channels/:uniqueid',auth[_0x5b97('0x4')](),controller[_0x5b97('0x19')]);router[_0x5b97('0x8')](_0x5b97('0x1a'),auth[_0x5b97('0x4')](),controller['voiceQueuesChannelHangup']);router[_0x5b97('0x8')](_0x5b97('0x1b'),auth['isAuthenticated'](),controller[_0x5b97('0x1c')]);router[_0x5b97('0x8')](_0x5b97('0x1d'),auth[_0x5b97('0x4')](),controller['showVoiceQueues']);router[_0x5b97('0x1e')](_0x5b97('0x1d'),auth[_0x5b97('0x4')](),controller[_0x5b97('0x1f')]);router[_0x5b97('0x8')](_0x5b97('0x20'),auth[_0x5b97('0x4')](),controller[_0x5b97('0x21')]);router[_0x5b97('0x8')]('/outbound/channels',auth[_0x5b97('0x4')](),controller['outboundChannels']);router[_0x5b97('0x8')](_0x5b97('0x22'),auth[_0x5b97('0x4')](),controller[_0x5b97('0x23')]);router[_0x5b97('0x1e')]('/agents/:id/capacity',auth['isAuthenticated'](),controller[_0x5b97('0x24')]);router['get'](_0x5b97('0x25'),auth[_0x5b97('0x4')](),controller[_0x5b97('0x26')]);router[_0x5b97('0x8')](_0x5b97('0x27'),auth[_0x5b97('0x4')](),controller[_0x5b97('0x28')]);router[_0x5b97('0x8')](_0x5b97('0x29'),auth[_0x5b97('0x4')](),controller[_0x5b97('0x2a')]);router[_0x5b97('0x8')](_0x5b97('0x2b'),auth[_0x5b97('0x4')](),controller[_0x5b97('0x2c')]);router[_0x5b97('0x8')]('/chat/queues/waitinginteractions',auth['isAuthenticated'](),controller[_0x5b97('0x2d')]);router[_0x5b97('0x8')](_0x5b97('0x2e'),auth['isAuthenticated'](),controller[_0x5b97('0x2f')]);router[_0x5b97('0x8')](_0x5b97('0x30'),auth[_0x5b97('0x4')](),controller[_0x5b97('0x31')]);router[_0x5b97('0x8')]('/openchannel/queues/:id/waitinginteractions',auth[_0x5b97('0x4')](),controller[_0x5b97('0x32')]);router[_0x5b97('0x8')](_0x5b97('0x33'),auth[_0x5b97('0x4')](),controller[_0x5b97('0x34')]);router['get'](_0x5b97('0x35'),auth['isAuthenticated'](),controller[_0x5b97('0x36')]);router['get'](_0x5b97('0x37'),auth[_0x5b97('0x4')](),controller[_0x5b97('0x38')]);router['post'](_0x5b97('0x39'),auth['isAuthenticated'](),controller[_0x5b97('0x3a')](_0x5b97('0x3b')));router[_0x5b97('0x8')](_0x5b97('0x3c'),auth[_0x5b97('0x4')](),controller[_0x5b97('0x3d')]);router['post'](_0x5b97('0x3e'),auth[_0x5b97('0x4')](),controller[_0x5b97('0x3a')]('chat'));router[_0x5b97('0x8')](_0x5b97('0x3f'),auth[_0x5b97('0x4')](),controller['showChatQueues']);router[_0x5b97('0x40')](_0x5b97('0x41'),auth[_0x5b97('0x4')](),controller[_0x5b97('0x3a')]('fax'));router[_0x5b97('0x8')](_0x5b97('0x42'),auth['isAuthenticated'](),controller[_0x5b97('0x43')]);router['post'](_0x5b97('0x44'),auth[_0x5b97('0x4')](),controller['queueNotify'](_0x5b97('0x45')));router[_0x5b97('0x8')](_0x5b97('0x46'),auth[_0x5b97('0x4')](),controller[_0x5b97('0x47')]);router['post'](_0x5b97('0x48'),auth['isAuthenticated'](),controller['queueNotify'](_0x5b97('0x49')));router[_0x5b97('0x40')](_0x5b97('0x4a'),auth[_0x5b97('0x4')](),controller[_0x5b97('0x3a')]('whatsapp'));router[_0x5b97('0x8')](_0x5b97('0x4b'),auth[_0x5b97('0x4')](),controller[_0x5b97('0x4c')]);router[_0x5b97('0x8')](_0x5b97('0x4d'),auth['isAuthenticated'](),controller[_0x5b97('0x4e')]);router[_0x5b97('0x40')](_0x5b97('0x4f'),auth[_0x5b97('0x4')](),controller[_0x5b97('0x50')]);module[_0x5b97('0x51')]=router;
\ No newline at end of file
+var _0x27ce=['whatsappQueues','faxQueues','/voice/queues/preview/:id','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/channels','agents','/agents/:id/capacity','agentCapacity','telephones','/trunks','trunks','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','/openchannel/queues/:id/waitinginteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','fax','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','multer','util','path','express','Router','./rpc.controller','get','/voice/channels','isAuthenticated','/voice/channels/:uniqueid/mixmonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','/chat/queues','/mail/queues','mailQueues','/openchannel/queues','openchannelQueues','smsQueues','/whatsapp/queues'];(function(_0x50007c,_0x1cbf11){var _0x5c1ec7=function(_0x52d038){while(--_0x52d038){_0x50007c['push'](_0x50007c['shift']());}};_0x5c1ec7(++_0x1cbf11);}(_0x27ce,0x1d8));var _0xe27c=function(_0x4145a2,_0x4770b6){_0x4145a2=_0x4145a2-0x0;var _0x578557=_0x27ce[_0x4145a2];return _0x578557;};'use strict';var multer=require(_0xe27c('0x0'));var util=require(_0xe27c('0x1'));var path=require(_0xe27c('0x2'));var express=require(_0xe27c('0x3'));var router=express[_0xe27c('0x4')]();var auth=require('../../components/auth/service');var controller=require(_0xe27c('0x5'));router[_0xe27c('0x6')](_0xe27c('0x7'),auth[_0xe27c('0x8')](),controller['voiceChannels']);router[_0xe27c('0x6')](_0xe27c('0x9'),auth[_0xe27c('0x8')](),controller['voiceChannelMixMonitor']);router[_0xe27c('0x6')]('/voice/channels/:uniqueid/stopmixmonitor',auth[_0xe27c('0x8')](),controller[_0xe27c('0xa')]);router[_0xe27c('0x6')](_0xe27c('0xb'),auth['isAuthenticated'](),controller[_0xe27c('0xc')]);router[_0xe27c('0x6')](_0xe27c('0xd'),auth[_0xe27c('0x8')](),controller['chatQueues']);router['get'](_0xe27c('0xe'),auth[_0xe27c('0x8')](),controller[_0xe27c('0xf')]);router[_0xe27c('0x6')]('/mail/accounts',auth['isAuthenticated'](),controller['mailAccounts']);router['get'](_0xe27c('0x10'),auth[_0xe27c('0x8')](),controller[_0xe27c('0x11')]);router['get']('/sms/queues',auth['isAuthenticated'](),controller[_0xe27c('0x12')]);router[_0xe27c('0x6')](_0xe27c('0x13'),auth[_0xe27c('0x8')](),controller[_0xe27c('0x14')]);router[_0xe27c('0x6')]('/fax/queues',auth[_0xe27c('0x8')](),controller[_0xe27c('0x15')]);router['get'](_0xe27c('0x16'),auth[_0xe27c('0x8')](),controller[_0xe27c('0x17')]);router[_0xe27c('0x6')](_0xe27c('0x18'),auth['isAuthenticated'](),controller[_0xe27c('0x19')]);router[_0xe27c('0x6')](_0xe27c('0x1a'),auth[_0xe27c('0x8')](),controller[_0xe27c('0x1b')]);router[_0xe27c('0x6')](_0xe27c('0x1c'),auth[_0xe27c('0x8')](),controller['voiceQueuesChannelHangup']);router[_0xe27c('0x6')](_0xe27c('0x1d'),auth[_0xe27c('0x8')](),controller[_0xe27c('0x1e')]);router[_0xe27c('0x6')](_0xe27c('0x1f'),auth[_0xe27c('0x8')](),controller[_0xe27c('0x20')]);router[_0xe27c('0x21')](_0xe27c('0x1f'),auth[_0xe27c('0x8')](),controller[_0xe27c('0x22')]);router['get']('/outbound',auth[_0xe27c('0x8')](),controller[_0xe27c('0x23')]);router[_0xe27c('0x6')](_0xe27c('0x24'),auth[_0xe27c('0x8')](),controller['outboundChannels']);router[_0xe27c('0x6')]('/agents',auth['isAuthenticated'](),controller[_0xe27c('0x25')]);router[_0xe27c('0x21')](_0xe27c('0x26'),auth['isAuthenticated'](),controller[_0xe27c('0x27')]);router[_0xe27c('0x6')]('/telephones',auth[_0xe27c('0x8')](),controller[_0xe27c('0x28')]);router[_0xe27c('0x6')](_0xe27c('0x29'),auth['isAuthenticated'](),controller[_0xe27c('0x2a')]);router[_0xe27c('0x6')]('/campaigns',auth['isAuthenticated'](),controller['campaigns']);router[_0xe27c('0x6')](_0xe27c('0x2b'),auth['isAuthenticated'](),controller[_0xe27c('0x2c')]);router[_0xe27c('0x6')](_0xe27c('0x2d'),auth['isAuthenticated'](),controller[_0xe27c('0x2e')]);router[_0xe27c('0x6')](_0xe27c('0x2f'),auth['isAuthenticated'](),controller[_0xe27c('0x30')]);router[_0xe27c('0x6')](_0xe27c('0x31'),auth[_0xe27c('0x8')](),controller['openchannelQueuesWaitingInteractions']);router[_0xe27c('0x6')](_0xe27c('0x32'),auth[_0xe27c('0x8')](),controller['openchannelQueuesIdWaitingInteractions']);router[_0xe27c('0x6')](_0xe27c('0x33'),auth[_0xe27c('0x8')](),controller[_0xe27c('0x34')]);router[_0xe27c('0x6')](_0xe27c('0x35'),auth[_0xe27c('0x8')](),controller['whatsappQueuesWaitingInteractions']);router[_0xe27c('0x6')](_0xe27c('0x36'),auth['isAuthenticated'](),controller[_0xe27c('0x37')]);router[_0xe27c('0x38')](_0xe27c('0x39'),auth[_0xe27c('0x8')](),controller[_0xe27c('0x3a')](_0xe27c('0x3b')));router[_0xe27c('0x6')](_0xe27c('0x3c'),auth['isAuthenticated'](),controller[_0xe27c('0x3d')]);router[_0xe27c('0x38')](_0xe27c('0x3e'),auth['isAuthenticated'](),controller[_0xe27c('0x3a')](_0xe27c('0x3f')));router['get']('/chat/queues/:id',auth['isAuthenticated'](),controller['showChatQueues']);router[_0xe27c('0x38')]('/fax/queues/:id/notify',auth[_0xe27c('0x8')](),controller[_0xe27c('0x3a')](_0xe27c('0x40')));router[_0xe27c('0x6')](_0xe27c('0x41'),auth[_0xe27c('0x8')](),controller[_0xe27c('0x42')]);router[_0xe27c('0x38')](_0xe27c('0x43'),auth[_0xe27c('0x8')](),controller[_0xe27c('0x3a')](_0xe27c('0x44')));router[_0xe27c('0x6')](_0xe27c('0x45'),auth[_0xe27c('0x8')](),controller[_0xe27c('0x46')]);router[_0xe27c('0x38')](_0xe27c('0x47'),auth[_0xe27c('0x8')](),controller['queueNotify'](_0xe27c('0x48')));router['post'](_0xe27c('0x49'),auth[_0xe27c('0x8')](),controller[_0xe27c('0x3a')](_0xe27c('0x4a')));router[_0xe27c('0x6')](_0xe27c('0x4b'),auth[_0xe27c('0x8')](),controller[_0xe27c('0x4c')]);router[_0xe27c('0x6')](_0xe27c('0x4d'),auth['isAuthenticated'](),controller[_0xe27c('0x4e')]);router[_0xe27c('0x38')](_0xe27c('0x4f'),auth['isAuthenticated'](),controller[_0xe27c('0x50')]);module[_0xe27c('0x51')]=router;
\ No newline at end of file
index 82b2c2a..7266dc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d17=['whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','capitalize','chat','Website','Queue','\x20Queue\x20not\x20found','Message','findOne','messageId','Interaction','\x20Message\x20not\x20found','update','queue','MessageId','InteractionId','QueueId','TransferReport','create','Start','Account','queueTransferTimeout','*,*,*,*','agentNotify','channel','User','Agent\x20not\x20found','agentTransferTimeout','bluebird','moment','../../mysqldb','../../config/logger','api','client','http','code','error','message','result','catch','status','json','sendStatus','stack','name','send','isNil','rows','find','VoiceChannels','then','voiceChannelMixMonitor','VoiceChannelMixMonitor','query','params','voiceChannelStopMixMonitor','merge','voiceQueues','VoiceQueues','showVoiceQueues','UpdateVoiceQueue','body','voiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','Outbound','outboundChannels','agents','Agents','agentCapacity','interaction','user','hasOwnProperty','MemberReport','findAll','INTERACTION','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','findOrCreate','interface','SIP/%s','format','agent','internal','AgentCapacity','capacity','Telephones','trunks','Trunks','campaigns','Campaigns','chatQueues','showChatQueues','ChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','openchannelQueues','showOpenchannelQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','faxQueues','FaxQueues','FaxAccounts','ChatQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','queue_id','uniq','value','filter','indexOf','smsQueuesWaitingInteractions'];(function(_0x4da26f,_0x1bf58a){var _0x4c37b9=function(_0x1884a6){while(--_0x1884a6){_0x4da26f['push'](_0x4da26f['shift']());}};_0x4c37b9(++_0x1bf58a);}(_0x5d17,0x114));var _0x75d1=function(_0x419ffd,_0x10bdfe){_0x419ffd=_0x419ffd-0x0;var _0xb0b19d=_0x5d17[_0x419ffd];return _0xb0b19d;};'use strict';var BPromise=require(_0x75d1('0x0'));var moment=require(_0x75d1('0x1'));var _=require('lodash');var util=require('util');var db=require(_0x75d1('0x2'))['db'];var logger=require(_0x75d1('0x3'))(_0x75d1('0x4'));var jayson=require('jayson/promise');var amiClient=jayson[_0x75d1('0x5')][_0x75d1('0x6')]({'port':0x232a});var mailClient=jayson[_0x75d1('0x5')][_0x75d1('0x6')]({'port':0x232b});var routingClient=jayson['client'][_0x75d1('0x6')]({'port':0x232c});function respondWithRpcPromise(_0x116a51,_0x5c957a,_0x1ee61b){return new BPromise(function(_0x3a9d5e,_0x105607){var _0xf9f8e=_0x1ee61b?_0x1ee61b:amiClient;return _0xf9f8e['request'](_0x116a51,_0x5c957a)['then'](function(_0x40df40){if(_0x40df40['error']){if(_0x40df40['error'][_0x75d1('0x7')]===0x1f4){return _0x105607(_0x40df40[_0x75d1('0x8')]['message']);}return _0x3a9d5e(_0x40df40[_0x75d1('0x8')][_0x75d1('0x9')]);}else{_0x3a9d5e(_0x40df40[_0x75d1('0xa')]);}})[_0x75d1('0xb')](function(_0x6c1265){_0x105607(_0x6c1265);});});}function respondWithResult(_0xd089cf,_0x49667a){_0x49667a=_0x49667a||0xc8;return function(_0x19e825){if(_0x19e825){return _0xd089cf[_0x75d1('0xc')](_0x49667a)[_0x75d1('0xd')](_0x19e825);}return _0xd089cf[_0x75d1('0xe')](0x194);};}function handleError(_0x49d723,_0x553697){_0x553697=_0x553697||0x1f4;return function(_0x55b8a0){logger[_0x75d1('0x8')](_0x55b8a0[_0x75d1('0xf')]);if(_0x55b8a0[_0x75d1('0x10')]){delete _0x55b8a0['name'];}_0x49d723[_0x75d1('0xc')](_0x553697)[_0x75d1('0x11')](_0x55b8a0);};}function findById(_0x1d30f3){return function(_0x269e82){if(!_[_0x75d1('0x12')](_0x1d30f3)&&!_[_0x75d1('0x12')](_0x269e82)&&!_[_0x75d1('0x12')](_0x269e82[_0x75d1('0x13')])){return _[_0x75d1('0x14')](_0x269e82[_0x75d1('0x13')],function(_0x2c2a6d){return _0x2c2a6d['id']==_0x1d30f3;});}return null;};}exports['voiceChannels']=function(_0x493fff,_0xc6b282){return respondWithRpcPromise(_0x75d1('0x15'),_0x493fff['query'])[_0x75d1('0x16')](respondWithResult(_0xc6b282,null))[_0x75d1('0xb')](handleError(_0xc6b282,null));};exports[_0x75d1('0x17')]=function(_0xf6cc70,_0xa42dbe){return respondWithRpcPromise(_0x75d1('0x18'),_['merge'](_0xf6cc70[_0x75d1('0x19')],_0xf6cc70[_0x75d1('0x1a')]))['then'](respondWithResult(_0xa42dbe,null))[_0x75d1('0xb')](handleError(_0xa42dbe,null));};exports[_0x75d1('0x1b')]=function(_0x526f6c,_0x2c0c21){return respondWithRpcPromise('VoiceChannelStopMixMonitor',_[_0x75d1('0x1c')](_0x526f6c[_0x75d1('0x19')],_0x526f6c[_0x75d1('0x1a')]))['then'](respondWithResult(_0x2c0c21,null))['catch'](handleError(_0x2c0c21,null));};exports[_0x75d1('0x1d')]=function(_0x45b18f,_0x315ce5){return respondWithRpcPromise(_0x75d1('0x1e'),_0x45b18f['query'])[_0x75d1('0x16')](respondWithResult(_0x315ce5,null))[_0x75d1('0xb')](handleError(_0x315ce5,null));};exports[_0x75d1('0x1f')]=function(_0x51138e,_0x54095d){return respondWithRpcPromise('VoiceQueues',_0x51138e[_0x75d1('0x19')])[_0x75d1('0x16')](findById(_0x51138e[_0x75d1('0x1a')]['id']))[_0x75d1('0x16')](respondWithResult(_0x54095d,null))[_0x75d1('0xb')](handleError(_0x54095d,null));};exports['updateVoiceQueue']=function(_0x4d292e,_0x410e16){return respondWithRpcPromise(_0x75d1('0x20'),_['merge'](_0x4d292e[_0x75d1('0x21')],_0x4d292e['params']))[_0x75d1('0x16')](respondWithResult(_0x410e16,null))[_0x75d1('0xb')](handleError(_0x410e16,null));};exports[_0x75d1('0x22')]=function(_0x3fb7b9,_0x36ae86){return respondWithRpcPromise('VoiceQueuesPreview',_[_0x75d1('0x1c')](_0x3fb7b9[_0x75d1('0x19')],_0x3fb7b9[_0x75d1('0x1a')]))[_0x75d1('0x16')](respondWithResult(_0x36ae86,null))['catch'](handleError(_0x36ae86,null));};exports[_0x75d1('0x23')]=function(_0x551824,_0x1b2bbb){return respondWithRpcPromise(_0x75d1('0x24'),_0x551824['query'])[_0x75d1('0x16')](respondWithResult(_0x1b2bbb,null))[_0x75d1('0xb')](handleError(_0x1b2bbb,null));};exports[_0x75d1('0x25')]=function(_0x100a4b,_0x22b190){return respondWithRpcPromise('VoiceQueuesChannel',_[_0x75d1('0x1c')](_0x100a4b[_0x75d1('0x19')],_0x100a4b[_0x75d1('0x1a')]))[_0x75d1('0x16')](respondWithResult(_0x22b190,null))['catch'](handleError(_0x22b190,null));};exports['voiceQueuesChannelHangup']=function(_0x551723,_0x3d9275){return respondWithRpcPromise(_0x75d1('0x26'),_[_0x75d1('0x1c')](_0x551723[_0x75d1('0x19')],_0x551723[_0x75d1('0x1a')]))[_0x75d1('0x16')](respondWithResult(_0x3d9275,null))[_0x75d1('0xb')](handleError(_0x3d9275,null));};exports[_0x75d1('0x27')]=function(_0x433092,_0x534511){return respondWithRpcPromise(_0x75d1('0x28'),_[_0x75d1('0x1c')](_0x433092[_0x75d1('0x19')],_0x433092[_0x75d1('0x1a')]))[_0x75d1('0x16')](respondWithResult(_0x534511,null))['catch'](handleError(_0x534511,null));};exports['outbound']=function(_0x487431,_0x1058b7){return respondWithRpcPromise(_0x75d1('0x29'),_0x487431[_0x75d1('0x19')])[_0x75d1('0x16')](respondWithResult(_0x1058b7,null))[_0x75d1('0xb')](handleError(_0x1058b7,null));};exports[_0x75d1('0x2a')]=function(_0x48f9f3,_0x5553b9){return respondWithRpcPromise('OutboundChannels',_0x48f9f3[_0x75d1('0x19')])['then'](respondWithResult(_0x5553b9,null))['catch'](handleError(_0x5553b9,null));};exports[_0x75d1('0x2b')]=function(_0x21bfd8,_0x45eea3){var _0x46854c;return respondWithRpcPromise('Agents',_0x21bfd8[_0x75d1('0x19')])[_0x75d1('0x16')](function(_0x38bf47){_0x46854c=_0x38bf47;return respondWithRpcPromise(_0x75d1('0x2c'),_0x21bfd8[_0x75d1('0x19')],routingClient);})[_0x75d1('0x16')](function(_0x33df05){return _[_0x75d1('0x1c')]({},_0x33df05,_0x46854c);})[_0x75d1('0x16')](respondWithResult(_0x45eea3,null))[_0x75d1('0xb')](handleError(_0x45eea3,null));};exports[_0x75d1('0x2d')]=function(_0x93922f,_0xe14be9){if(_0x93922f[_0x75d1('0x21')]&&_0x93922f[_0x75d1('0x21')][_0x75d1('0x2e')]&&_0x93922f[_0x75d1('0x2f')]&&_0x93922f[_0x75d1('0x2f')][_0x75d1('0x10')]){for(var _0x2384aa in _0x93922f[_0x75d1('0x21')][_0x75d1('0x2e')]){if(_0x93922f['body']['interaction'][_0x75d1('0x30')](_0x2384aa)){db[_0x75d1('0x31')][_0x75d1('0x32')]({'where':{'channel':_0x2384aa,'membername':_0x93922f[_0x75d1('0x2f')]['name'],'type':_0x75d1('0x33'),'exitAt':null,'uniqueid':_0x93922f[_0x75d1('0x21')][_0x75d1('0x2e')][_0x2384aa]&&_0x93922f[_0x75d1('0x21')]['interaction'][_0x2384aa][_0x75d1('0x34')]?{'$notIn':_0x93922f[_0x75d1('0x21')][_0x75d1('0x2e')][_0x2384aa]}:{'$ne':null}}})[_0x75d1('0x16')](function(_0x5b486d){var _0x34d132=moment()['format'](_0x75d1('0x35'));for(var _0x1d063d=0x0,_0x9bc1ed=_0x5b486d[_0x75d1('0x34')];_0x1d063d<_0x9bc1ed;_0x1d063d+=0x1){_0x5b486d[_0x1d063d][_0x75d1('0x36')]({'exitAt':_0x34d132});}});for(var _0x2137e1=0x0;_0x2137e1<_0x93922f['body'][_0x75d1('0x2e')][_0x2384aa]['length'];_0x2137e1+=0x1){db['MemberReport'][_0x75d1('0x37')]({'where':{'channel':_0x2384aa,'membername':_0x93922f[_0x75d1('0x2f')][_0x75d1('0x10')],'type':_0x75d1('0x33'),'uniqueid':_0x93922f[_0x75d1('0x21')][_0x75d1('0x2e')][_0x2384aa][_0x2137e1],'exitAt':null},'defaults':{'channel':_0x2384aa,'membername':_0x93922f[_0x75d1('0x2f')]['name'],'interface':_['isNil'](_0x93922f[_0x75d1('0x2f')][_0x75d1('0x38')])?util['format'](_0x75d1('0x39'),_0x93922f[_0x75d1('0x2f')][_0x75d1('0x10')]):_0x93922f['user'][_0x75d1('0x38')],'type':_0x75d1('0x33'),'enterAt':moment()[_0x75d1('0x3a')](_0x75d1('0x35')),'role':_0x75d1('0x3b'),'internal':_0x93922f[_0x75d1('0x2f')][_0x75d1('0x3c')],'uniqueid':_0x93922f['body'][_0x75d1('0x2e')][_0x2384aa][_0x2137e1]}});}}}}return respondWithRpcPromise(_0x75d1('0x3d'),{'id':_0x93922f[_0x75d1('0x1a')]['id'],'capacity':_0x93922f[_0x75d1('0x21')][_0x75d1('0x3e')]},routingClient)[_0x75d1('0x16')](respondWithResult(_0xe14be9,null))[_0x75d1('0xb')](handleError(_0xe14be9,null));};exports['telephones']=function(_0x7da202,_0x3af9c5){return respondWithRpcPromise(_0x75d1('0x3f'),_0x7da202['query'])[_0x75d1('0x16')](respondWithResult(_0x3af9c5,null))[_0x75d1('0xb')](handleError(_0x3af9c5,null));};exports[_0x75d1('0x40')]=function(_0x382760,_0x281123){return respondWithRpcPromise(_0x75d1('0x41'),_0x382760['query'])[_0x75d1('0x16')](respondWithResult(_0x281123,null))[_0x75d1('0xb')](handleError(_0x281123,null));};exports[_0x75d1('0x42')]=function(_0x46e665,_0x2e746a){return respondWithRpcPromise(_0x75d1('0x43'),_0x46e665[_0x75d1('0x19')])[_0x75d1('0x16')](respondWithResult(_0x2e746a,null))[_0x75d1('0xb')](handleError(_0x2e746a,null));};exports[_0x75d1('0x44')]=function(_0x1038d2,_0x13050e){return respondWithRpcPromise('ChatQueues',_0x1038d2['query'],routingClient)[_0x75d1('0x16')](respondWithResult(_0x13050e,null))['catch'](handleError(_0x13050e,null));};exports[_0x75d1('0x45')]=function(_0x1e149b,_0x5dcb55){return respondWithRpcPromise(_0x75d1('0x46'),_0x1e149b[_0x75d1('0x19')],routingClient)[_0x75d1('0x16')](findById(_0x1e149b[_0x75d1('0x1a')]['id']))[_0x75d1('0x16')](respondWithResult(_0x5dcb55,null))[_0x75d1('0xb')](handleError(_0x5dcb55,null));};exports[_0x75d1('0x47')]=function(_0x5048ef,_0x3c5da6){return respondWithRpcPromise(_0x75d1('0x48'),_0x5048ef[_0x75d1('0x19')],routingClient)[_0x75d1('0x16')](respondWithResult(_0x3c5da6,null))[_0x75d1('0xb')](handleError(_0x3c5da6,null));};exports[_0x75d1('0x49')]=function(_0x41f98f,_0x3b30fb){return respondWithRpcPromise(_0x75d1('0x48'),_0x41f98f[_0x75d1('0x19')],routingClient)['then'](findById(_0x41f98f['params']['id']))[_0x75d1('0x16')](respondWithResult(_0x3b30fb,null))[_0x75d1('0xb')](handleError(_0x3b30fb,null));};exports[_0x75d1('0x4a')]=function(_0x49d9ca,_0x1d7de1){return respondWithRpcPromise('MailAccounts',_0x49d9ca[_0x75d1('0x19')],mailClient)[_0x75d1('0x16')](respondWithResult(_0x1d7de1,null))[_0x75d1('0xb')](handleError(_0x1d7de1,null));};exports[_0x75d1('0x4b')]=function(_0x5d2219,_0x22ce12){return respondWithRpcPromise('OpenchannelQueues',_0x5d2219['query'],routingClient)[_0x75d1('0x16')](respondWithResult(_0x22ce12,null))[_0x75d1('0xb')](handleError(_0x22ce12,null));};exports[_0x75d1('0x4c')]=function(_0x3c8119,_0x4fd170){return respondWithRpcPromise('OpenchannelQueues',_0x3c8119[_0x75d1('0x19')],routingClient)[_0x75d1('0x16')](findById(_0x3c8119[_0x75d1('0x1a')]['id']))[_0x75d1('0x16')](respondWithResult(_0x4fd170,null))[_0x75d1('0xb')](handleError(_0x4fd170,null));};exports['smsQueues']=function(_0x223db6,_0x44173c){return respondWithRpcPromise(_0x75d1('0x4d'),_0x223db6[_0x75d1('0x19')],routingClient)[_0x75d1('0x16')](respondWithResult(_0x44173c,null))[_0x75d1('0xb')](handleError(_0x44173c,null));};exports[_0x75d1('0x4e')]=function(_0x1092fb,_0x40f50b){return respondWithRpcPromise(_0x75d1('0x4d'),_0x1092fb[_0x75d1('0x19')],routingClient)['then'](findById(_0x1092fb[_0x75d1('0x1a')]['id']))[_0x75d1('0x16')](respondWithResult(_0x40f50b,null))[_0x75d1('0xb')](handleError(_0x40f50b,null));};exports[_0x75d1('0x4f')]=function(_0x3754b1,_0x174fde){return respondWithRpcPromise(_0x75d1('0x50'),_0x3754b1['query'],routingClient)['then'](respondWithResult(_0x174fde,null))[_0x75d1('0xb')](handleError(_0x174fde,null));};exports[_0x75d1('0x51')]=function(_0x6f8ca2,_0x13ddbb){return respondWithRpcPromise(_0x75d1('0x50'),_0x6f8ca2['query'],routingClient)['then'](findById(_0x6f8ca2[_0x75d1('0x1a')]['id']))[_0x75d1('0x16')](respondWithResult(_0x13ddbb,null))['catch'](handleError(_0x13ddbb,null));};exports[_0x75d1('0x52')]=function(_0x29b1f4,_0x25dfa1){return respondWithRpcPromise(_0x75d1('0x53'),_0x29b1f4[_0x75d1('0x19')],routingClient)[_0x75d1('0x16')](respondWithResult(_0x25dfa1,null))['catch'](handleError(_0x25dfa1,null));};exports['showFaxQueues']=function(_0x2c0452,_0x3fad5c){return respondWithRpcPromise('FaxQueues',_0x2c0452[_0x75d1('0x19')],routingClient)['then'](findById(_0x2c0452[_0x75d1('0x1a')]['id']))[_0x75d1('0x16')](respondWithResult(_0x3fad5c,null))[_0x75d1('0xb')](handleError(_0x3fad5c,null));};exports['faxAccounts']=function(_0x254cfe,_0x1f9ac2){return respondWithRpcPromise(_0x75d1('0x54'),_0x254cfe[_0x75d1('0x19')])[_0x75d1('0x16')](respondWithResult(_0x1f9ac2,null))['catch'](handleError(_0x1f9ac2,null));};exports['chatQueuesWaitingInteractions']=function(_0x3785fd,_0x58d20b){return respondWithRpcPromise(_0x75d1('0x55'),_0x3785fd[_0x75d1('0x19')],routingClient)[_0x75d1('0x16')](respondWithResult(_0x58d20b,null))['catch'](handleError(_0x58d20b,null));};exports['mailQueuesWaitingInteractions']=function(_0x2e6849,_0x486977){return respondWithRpcPromise(_0x75d1('0x56'),_0x2e6849[_0x75d1('0x19')],routingClient)[_0x75d1('0x16')](respondWithResult(_0x486977,null))['catch'](handleError(_0x486977,null));};exports[_0x75d1('0x57')]=function(_0x353bec,_0x644ced){return respondWithRpcPromise(_0x75d1('0x58'),_0x353bec[_0x75d1('0x19')],routingClient)[_0x75d1('0x16')](respondWithResult(_0x644ced,null))[_0x75d1('0xb')](handleError(_0x644ced,null));};exports[_0x75d1('0x59')]=function(_0x3af4a7,_0x1ca2ee){return respondWithRpcPromise(_0x75d1('0x58'),_0x3af4a7[_0x75d1('0x19')],routingClient)[_0x75d1('0x16')](function(_0x44ef76){if(_0x3af4a7['query']['type']!==undefined){var _0x410fa1=_(_0x44ef76[_0x75d1('0x13')])['filter']([_0x3af4a7[_0x75d1('0x19')]['type'],_0x3af4a7['params']['id']])['map'](_0x75d1('0x5a'))[_0x75d1('0x5b')]()[_0x75d1('0x5c')]();return _0x44ef76[_0x75d1('0x13')][_0x75d1('0x5d')](function(_0x5d5a72){return _0x410fa1[_0x75d1('0x5e')](_0x5d5a72[_0x75d1('0x5a')])>-0x1;});}else{return _0x44ef76[_0x75d1('0x13')][_0x75d1('0x5d')](function(_0x29960e){return _0x29960e['queue_id']===parseInt(_0x3af4a7[_0x75d1('0x1a')]['id']);});}})['then'](respondWithResult(_0x1ca2ee,null))[_0x75d1('0xb')](handleError(_0x1ca2ee,null));};exports[_0x75d1('0x5f')]=function(_0x3d5355,_0x526d98){return respondWithRpcPromise('SmsQueuesWaitingInteractions',_0x3d5355['query'],routingClient)[_0x75d1('0x16')](respondWithResult(_0x526d98,null))[_0x75d1('0xb')](handleError(_0x526d98,null));};exports[_0x75d1('0x60')]=function(_0x22caf3,_0x17ec6d){return respondWithRpcPromise(_0x75d1('0x61'),_0x22caf3['query'],routingClient)[_0x75d1('0x16')](respondWithResult(_0x17ec6d,null))[_0x75d1('0xb')](handleError(_0x17ec6d,null));};exports['faxQueuesWaitingInteractions']=function(_0x4eda90,_0x5c16be){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0x4eda90['query'],routingClient)[_0x75d1('0x16')](respondWithResult(_0x5c16be,null))['catch'](handleError(_0x5c16be,null));};exports['queueNotify']=function(_0x3f582c){return function(_0x4e546f,_0x451828){var _0x13179c,_0x739cc2;var _0xc939c9=_[_0x75d1('0x62')](_0x3f582c);var _0x1aa806=_0x3f582c===_0x75d1('0x63')?_0x75d1('0x64'):'Account';return db[_0xc939c9+_0x75d1('0x65')]['findOne']({'raw':!![],'where':{'id':_0x4e546f[_0x75d1('0x1a')]['id']}})[_0x75d1('0x16')](function(_0x358c70){if(_['isNil'](_0x358c70)){throw new Error(_0xc939c9+_0x75d1('0x66'));}_0x13179c=_0x358c70;return db[_0xc939c9+_0x75d1('0x67')][_0x75d1('0x68')]({'where':{'id':_0x4e546f[_0x75d1('0x21')][_0x75d1('0x69')]},'include':[{'model':db[_0xc939c9+_0x75d1('0x6a')],'as':_0x75d1('0x6a')},{'model':db[_0xc939c9+_0x1aa806],'as':'Account'}]});})[_0x75d1('0x16')](function(_0x21932b){if(_[_0x75d1('0x12')](_0x21932b)){throw new Error(_0xc939c9+_0x75d1('0x6b'));}_0x739cc2=_0x21932b;return _0x21932b[_0x75d1('0x6c')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x4814d8={'uniqueid':_0x3f582c+'.'+_0x739cc2['id']+'.'+_0x739cc2[_0x75d1('0x6a')]['id'],'FromUserId':_0x4e546f['user']['id'],'type':_0x75d1('0x6d')};_0x4814d8[_0xc939c9+_0x75d1('0x6e')]=_0x739cc2['id'];_0x4814d8[_0xc939c9+_0x75d1('0x6f')]=_0x739cc2[_0x75d1('0x6a')]['id'];_0x4814d8['From'+_0xc939c9+_0x1aa806+'Id']=_0x739cc2['Account']['id'];_0x4814d8['To'+_0xc939c9+_0x75d1('0x70')]=_0x13179c['id'];return db[_0xc939c9+_0x75d1('0x71')][_0x75d1('0x72')](_0x4814d8);})[_0x75d1('0x16')](function(){return respondWithRpcPromise(_0x75d1('0x73'),{'channel':_0x3f582c,'interaction':_0x739cc2['Interaction'],'message':_0x739cc2,'account':_0x739cc2[_0x75d1('0x74')],'applications':[{'id':0x0,'priority':0x1,'app':_0x75d1('0x6d'),'appdata':_0x13179c['name']+','+(_0x739cc2[_0x75d1('0x74')][_0x75d1('0x75')]||0x12c),'interval':_0x75d1('0x76')}]},routingClient);})[_0x75d1('0x16')](respondWithResult(_0x451828,null))[_0x75d1('0xb')](handleError(_0x451828,null));};};exports[_0x75d1('0x77')]=function(_0x54405a,_0x145b7f){var _0x1b026e,_0x39084f;if(_[_0x75d1('0x12')](_0x54405a[_0x75d1('0x21')][_0x75d1('0x78')])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x30214e=_0x54405a['body'][_0x75d1('0x78')];var _0x400d3a=_[_0x75d1('0x62')](_0x30214e);var _0x15ac7b=_0x30214e===_0x75d1('0x63')?_0x75d1('0x64'):'Account';return db[_0x75d1('0x79')][_0x75d1('0x68')]({'raw':!![],'where':{'id':_0x54405a[_0x75d1('0x1a')]['id'],'role':'agent'}})[_0x75d1('0x16')](function(_0x4433ff){if(_['isNil'](_0x4433ff)){throw new Error(_0x75d1('0x7a'));}_0x1b026e=_0x4433ff;return db[_0x400d3a+_0x75d1('0x67')][_0x75d1('0x68')]({'where':{'id':_0x54405a[_0x75d1('0x21')][_0x75d1('0x69')]},'include':[{'model':db[_0x400d3a+_0x75d1('0x6a')],'as':_0x75d1('0x6a')},{'model':db[_0x400d3a+_0x15ac7b],'as':_0x75d1('0x74')}]});})[_0x75d1('0x16')](function(_0x57653d){if(_[_0x75d1('0x12')](_0x57653d)){throw new Error(_0x400d3a+_0x75d1('0x6b'));}_0x39084f=_0x57653d;return _0x57653d['update']({'read':0x0,'readAt':null,'UserId':null});})[_0x75d1('0x16')](function(){var _0x2e9cf1={'uniqueid':_0x30214e+'.'+_0x39084f['id']+'.'+_0x39084f['Interaction']['id'],'FromUserId':_0x54405a['user']['id'],'type':_0x75d1('0x6d'),'ToUserId':_0x1b026e['id']};_0x2e9cf1[_0x400d3a+_0x75d1('0x6e')]=_0x39084f['id'];_0x2e9cf1[_0x400d3a+_0x75d1('0x6f')]=_0x39084f[_0x75d1('0x6a')]['id'];_0x2e9cf1['From'+_0x400d3a+_0x15ac7b+'Id']=_0x39084f[_0x75d1('0x74')]['id'];return db[_0x400d3a+'TransferReport'][_0x75d1('0x72')](_0x2e9cf1);})[_0x75d1('0x16')](function(){return respondWithRpcPromise(_0x75d1('0x73'),{'channel':_0x30214e,'interaction':_0x39084f[_0x75d1('0x6a')],'message':_0x39084f,'account':_0x39084f[_0x75d1('0x74')],'applications':[{'id':0x0,'priority':0x1,'app':_0x75d1('0x3b'),'appdata':_0x1b026e[_0x75d1('0x10')]+','+(_0x39084f[_0x75d1('0x74')][_0x75d1('0x7b')]||0x12c),'interval':_0x75d1('0x76')}]},routingClient);})[_0x75d1('0x16')](respondWithResult(_0x145b7f,null))[_0x75d1('0xb')](handleError(_0x145b7f,null));};
\ No newline at end of file
+var _0xf2ca=['voiceQueues','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','VoiceQueuesChannel','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','Outbound','OutboundChannels','agents','Agents','agentCapacity','body','user','interaction','hasOwnProperty','findAll','INTERACTION','length','findOrCreate','interface','format','YYYY-MM-DD\x20HH:mm:ss','agent','internal','AgentCapacity','capacity','Telephones','trunks','Trunks','campaigns','Campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','showMailQueues','MailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','showOpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','WhatsappQueues','faxQueues','showFaxQueues','FaxQueues','faxAccounts','FaxAccounts','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','filter','map','uniq','value','indexOf','queue_id','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','findOne','\x20Queue\x20not\x20found','messageId','Interaction','\x20Message\x20not\x20found','queue','MessageId','InteractionId','From','QueueId','*,*,*,*','agentNotify','channel','User','Agent\x20not\x20found','Message','TransferReport','create','Start','bluebird','moment','lodash','../../mysqldb','../../config/logger','api','jayson/promise','client','http','then','error','code','message','result','catch','status','json','sendStatus','stack','name','send','isNil','find','rows','VoiceChannels','query','VoiceChannelMixMonitor','merge','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','params'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xf2ca,0x16a));var _0xaf2c=function(_0x5a60ce,_0x48f080){_0x5a60ce=_0x5a60ce-0x0;var _0x393e5e=_0xf2ca[_0x5a60ce];return _0x393e5e;};'use strict';var BPromise=require(_0xaf2c('0x0'));var moment=require(_0xaf2c('0x1'));var _=require(_0xaf2c('0x2'));var util=require('util');var db=require(_0xaf2c('0x3'))['db'];var logger=require(_0xaf2c('0x4'))(_0xaf2c('0x5'));var jayson=require(_0xaf2c('0x6'));var amiClient=jayson[_0xaf2c('0x7')][_0xaf2c('0x8')]({'port':0x232a});var mailClient=jayson['client'][_0xaf2c('0x8')]({'port':0x232b});var routingClient=jayson[_0xaf2c('0x7')][_0xaf2c('0x8')]({'port':0x232c});function respondWithRpcPromise(_0x1f9531,_0x58351f,_0x37fedd){return new BPromise(function(_0x3c0421,_0x4a7397){var _0x2a011d=_0x37fedd?_0x37fedd:amiClient;return _0x2a011d['request'](_0x1f9531,_0x58351f)[_0xaf2c('0x9')](function(_0x4a0064){if(_0x4a0064[_0xaf2c('0xa')]){if(_0x4a0064[_0xaf2c('0xa')][_0xaf2c('0xb')]===0x1f4){return _0x4a7397(_0x4a0064[_0xaf2c('0xa')]['message']);}return _0x3c0421(_0x4a0064['error'][_0xaf2c('0xc')]);}else{_0x3c0421(_0x4a0064[_0xaf2c('0xd')]);}})[_0xaf2c('0xe')](function(_0xd56a5d){_0x4a7397(_0xd56a5d);});});}function respondWithResult(_0x285dac,_0x59a59b){_0x59a59b=_0x59a59b||0xc8;return function(_0x590126){if(_0x590126){return _0x285dac[_0xaf2c('0xf')](_0x59a59b)[_0xaf2c('0x10')](_0x590126);}return _0x285dac[_0xaf2c('0x11')](0x194);};}function handleError(_0x18a8a5,_0x293ca6){_0x293ca6=_0x293ca6||0x1f4;return function(_0x152c73){logger[_0xaf2c('0xa')](_0x152c73[_0xaf2c('0x12')]);if(_0x152c73[_0xaf2c('0x13')]){delete _0x152c73[_0xaf2c('0x13')];}_0x18a8a5[_0xaf2c('0xf')](_0x293ca6)[_0xaf2c('0x14')](_0x152c73);};}function findById(_0x26bf7b){return function(_0x3432e4){if(!_[_0xaf2c('0x15')](_0x26bf7b)&&!_['isNil'](_0x3432e4)&&!_[_0xaf2c('0x15')](_0x3432e4['rows'])){return _[_0xaf2c('0x16')](_0x3432e4[_0xaf2c('0x17')],function(_0x1d544a){return _0x1d544a['id']==_0x26bf7b;});}return null;};}exports['voiceChannels']=function(_0x28ae7b,_0x297bcd){return respondWithRpcPromise(_0xaf2c('0x18'),_0x28ae7b[_0xaf2c('0x19')])[_0xaf2c('0x9')](respondWithResult(_0x297bcd,null))[_0xaf2c('0xe')](handleError(_0x297bcd,null));};exports['voiceChannelMixMonitor']=function(_0x35e712,_0x164bcb){return respondWithRpcPromise(_0xaf2c('0x1a'),_[_0xaf2c('0x1b')](_0x35e712[_0xaf2c('0x19')],_0x35e712['params']))[_0xaf2c('0x9')](respondWithResult(_0x164bcb,null))[_0xaf2c('0xe')](handleError(_0x164bcb,null));};exports[_0xaf2c('0x1c')]=function(_0x4be6ed,_0x59b113){return respondWithRpcPromise(_0xaf2c('0x1d'),_[_0xaf2c('0x1b')](_0x4be6ed[_0xaf2c('0x19')],_0x4be6ed[_0xaf2c('0x1e')]))['then'](respondWithResult(_0x59b113,null))[_0xaf2c('0xe')](handleError(_0x59b113,null));};exports[_0xaf2c('0x1f')]=function(_0x3a0145,_0x3c1ae6){return respondWithRpcPromise(_0xaf2c('0x20'),_0x3a0145[_0xaf2c('0x19')])[_0xaf2c('0x9')](respondWithResult(_0x3c1ae6,null))['catch'](handleError(_0x3c1ae6,null));};exports[_0xaf2c('0x21')]=function(_0x2051be,_0x36f37c){return respondWithRpcPromise(_0xaf2c('0x20'),_0x2051be['query'])[_0xaf2c('0x9')](findById(_0x2051be['params']['id']))[_0xaf2c('0x9')](respondWithResult(_0x36f37c,null))[_0xaf2c('0xe')](handleError(_0x36f37c,null));};exports[_0xaf2c('0x22')]=function(_0x5d685a,_0x2747bb){return respondWithRpcPromise(_0xaf2c('0x23'),_[_0xaf2c('0x1b')](_0x5d685a['body'],_0x5d685a[_0xaf2c('0x1e')]))[_0xaf2c('0x9')](respondWithResult(_0x2747bb,null))[_0xaf2c('0xe')](handleError(_0x2747bb,null));};exports[_0xaf2c('0x24')]=function(_0x59d858,_0x3da072){return respondWithRpcPromise(_0xaf2c('0x25'),_[_0xaf2c('0x1b')](_0x59d858['query'],_0x59d858['params']))[_0xaf2c('0x9')](respondWithResult(_0x3da072,null))['catch'](handleError(_0x3da072,null));};exports[_0xaf2c('0x26')]=function(_0x5e7247,_0x337cea){return respondWithRpcPromise(_0xaf2c('0x27'),_0x5e7247['query'])[_0xaf2c('0x9')](respondWithResult(_0x337cea,null))[_0xaf2c('0xe')](handleError(_0x337cea,null));};exports['voiceQueuesChannel']=function(_0x13ced2,_0xbec302){return respondWithRpcPromise(_0xaf2c('0x28'),_[_0xaf2c('0x1b')](_0x13ced2[_0xaf2c('0x19')],_0x13ced2[_0xaf2c('0x1e')]))['then'](respondWithResult(_0xbec302,null))[_0xaf2c('0xe')](handleError(_0xbec302,null));};exports['voiceQueuesChannelHangup']=function(_0x321f7c,_0x514bff){return respondWithRpcPromise(_0xaf2c('0x29'),_['merge'](_0x321f7c[_0xaf2c('0x19')],_0x321f7c['params']))[_0xaf2c('0x9')](respondWithResult(_0x514bff,null))['catch'](handleError(_0x514bff,null));};exports[_0xaf2c('0x2a')]=function(_0x356402,_0x1a6929){return respondWithRpcPromise(_0xaf2c('0x2b'),_[_0xaf2c('0x1b')](_0x356402['query'],_0x356402['params']))[_0xaf2c('0x9')](respondWithResult(_0x1a6929,null))[_0xaf2c('0xe')](handleError(_0x1a6929,null));};exports[_0xaf2c('0x2c')]=function(_0xa44813,_0x4eeecf){return respondWithRpcPromise(_0xaf2c('0x2d'),_0xa44813['query'])[_0xaf2c('0x9')](respondWithResult(_0x4eeecf,null))[_0xaf2c('0xe')](handleError(_0x4eeecf,null));};exports['outboundChannels']=function(_0x36081a,_0x24668d){return respondWithRpcPromise(_0xaf2c('0x2e'),_0x36081a[_0xaf2c('0x19')])[_0xaf2c('0x9')](respondWithResult(_0x24668d,null))[_0xaf2c('0xe')](handleError(_0x24668d,null));};exports[_0xaf2c('0x2f')]=function(_0x310d3b,_0x296ca8){var _0x106eb9;return respondWithRpcPromise(_0xaf2c('0x30'),_0x310d3b[_0xaf2c('0x19')])[_0xaf2c('0x9')](function(_0x4b524d){_0x106eb9=_0x4b524d;return respondWithRpcPromise('Agents',_0x310d3b['query'],routingClient);})[_0xaf2c('0x9')](function(_0x3cb075){return _[_0xaf2c('0x1b')]({},_0x3cb075,_0x106eb9);})[_0xaf2c('0x9')](respondWithResult(_0x296ca8,null))[_0xaf2c('0xe')](handleError(_0x296ca8,null));};exports[_0xaf2c('0x31')]=function(_0x51c441,_0x1d58bd){if(_0x51c441[_0xaf2c('0x32')]&&_0x51c441[_0xaf2c('0x32')]['interaction']&&_0x51c441['user']&&_0x51c441[_0xaf2c('0x33')]['name']){for(var _0x181787 in _0x51c441[_0xaf2c('0x32')][_0xaf2c('0x34')]){if(_0x51c441[_0xaf2c('0x32')]['interaction'][_0xaf2c('0x35')](_0x181787)){db['MemberReport'][_0xaf2c('0x36')]({'where':{'channel':_0x181787,'membername':_0x51c441[_0xaf2c('0x33')]['name'],'type':_0xaf2c('0x37'),'exitAt':null,'uniqueid':_0x51c441['body'][_0xaf2c('0x34')][_0x181787]&&_0x51c441[_0xaf2c('0x32')][_0xaf2c('0x34')][_0x181787][_0xaf2c('0x38')]?{'$notIn':_0x51c441[_0xaf2c('0x32')][_0xaf2c('0x34')][_0x181787]}:{'$ne':null}}})[_0xaf2c('0x9')](function(_0x16b469){var _0x922b9=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');for(var _0x18e62b=0x0,_0x4d0977=_0x16b469['length'];_0x18e62b<_0x4d0977;_0x18e62b+=0x1){_0x16b469[_0x18e62b]['updateAttributes']({'exitAt':_0x922b9});}});for(var _0x11a90a=0x0;_0x11a90a<_0x51c441[_0xaf2c('0x32')][_0xaf2c('0x34')][_0x181787][_0xaf2c('0x38')];_0x11a90a+=0x1){db['MemberReport'][_0xaf2c('0x39')]({'where':{'channel':_0x181787,'membername':_0x51c441['user'][_0xaf2c('0x13')],'type':'INTERACTION','uniqueid':_0x51c441[_0xaf2c('0x32')][_0xaf2c('0x34')][_0x181787][_0x11a90a],'exitAt':null},'defaults':{'channel':_0x181787,'membername':_0x51c441[_0xaf2c('0x33')][_0xaf2c('0x13')],'interface':_[_0xaf2c('0x15')](_0x51c441['user'][_0xaf2c('0x3a')])?util[_0xaf2c('0x3b')]('SIP/%s',_0x51c441['user'][_0xaf2c('0x13')]):_0x51c441['user'][_0xaf2c('0x3a')],'type':_0xaf2c('0x37'),'enterAt':moment()[_0xaf2c('0x3b')](_0xaf2c('0x3c')),'role':_0xaf2c('0x3d'),'internal':_0x51c441[_0xaf2c('0x33')][_0xaf2c('0x3e')],'uniqueid':_0x51c441[_0xaf2c('0x32')][_0xaf2c('0x34')][_0x181787][_0x11a90a]}});}}}}return respondWithRpcPromise(_0xaf2c('0x3f'),{'id':_0x51c441[_0xaf2c('0x1e')]['id'],'capacity':_0x51c441['body'][_0xaf2c('0x40')]},routingClient)[_0xaf2c('0x9')](respondWithResult(_0x1d58bd,null))['catch'](handleError(_0x1d58bd,null));};exports['telephones']=function(_0x56d7ce,_0x7ddca0){return respondWithRpcPromise(_0xaf2c('0x41'),_0x56d7ce['query'])[_0xaf2c('0x9')](respondWithResult(_0x7ddca0,null))[_0xaf2c('0xe')](handleError(_0x7ddca0,null));};exports[_0xaf2c('0x42')]=function(_0x3085e5,_0x265748){return respondWithRpcPromise(_0xaf2c('0x43'),_0x3085e5[_0xaf2c('0x19')])['then'](respondWithResult(_0x265748,null))[_0xaf2c('0xe')](handleError(_0x265748,null));};exports[_0xaf2c('0x44')]=function(_0x5771e5,_0x245797){return respondWithRpcPromise(_0xaf2c('0x45'),_0x5771e5[_0xaf2c('0x19')])[_0xaf2c('0x9')](respondWithResult(_0x245797,null))[_0xaf2c('0xe')](handleError(_0x245797,null));};exports[_0xaf2c('0x46')]=function(_0x332340,_0x15a335){return respondWithRpcPromise(_0xaf2c('0x47'),_0x332340[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](respondWithResult(_0x15a335,null))[_0xaf2c('0xe')](handleError(_0x15a335,null));};exports[_0xaf2c('0x48')]=function(_0x2356a0,_0x297a22){return respondWithRpcPromise(_0xaf2c('0x47'),_0x2356a0[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](findById(_0x2356a0[_0xaf2c('0x1e')]['id']))[_0xaf2c('0x9')](respondWithResult(_0x297a22,null))['catch'](handleError(_0x297a22,null));};exports[_0xaf2c('0x49')]=function(_0x3ac79c,_0xfe5928){return respondWithRpcPromise('MailQueues',_0x3ac79c[_0xaf2c('0x19')],routingClient)['then'](respondWithResult(_0xfe5928,null))[_0xaf2c('0xe')](handleError(_0xfe5928,null));};exports[_0xaf2c('0x4a')]=function(_0xb3ad9,_0x45918b){return respondWithRpcPromise(_0xaf2c('0x4b'),_0xb3ad9[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](findById(_0xb3ad9[_0xaf2c('0x1e')]['id']))[_0xaf2c('0x9')](respondWithResult(_0x45918b,null))['catch'](handleError(_0x45918b,null));};exports[_0xaf2c('0x4c')]=function(_0x400dcd,_0x262937){return respondWithRpcPromise(_0xaf2c('0x4d'),_0x400dcd[_0xaf2c('0x19')],mailClient)['then'](respondWithResult(_0x262937,null))[_0xaf2c('0xe')](handleError(_0x262937,null));};exports[_0xaf2c('0x4e')]=function(_0x506000,_0x33aa67){return respondWithRpcPromise(_0xaf2c('0x4f'),_0x506000['query'],routingClient)['then'](respondWithResult(_0x33aa67,null))[_0xaf2c('0xe')](handleError(_0x33aa67,null));};exports[_0xaf2c('0x50')]=function(_0xc83d19,_0x39c5d2){return respondWithRpcPromise('OpenchannelQueues',_0xc83d19[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](findById(_0xc83d19['params']['id']))[_0xaf2c('0x9')](respondWithResult(_0x39c5d2,null))['catch'](handleError(_0x39c5d2,null));};exports[_0xaf2c('0x51')]=function(_0xe6a251,_0x16e9f4){return respondWithRpcPromise(_0xaf2c('0x52'),_0xe6a251[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](respondWithResult(_0x16e9f4,null))[_0xaf2c('0xe')](handleError(_0x16e9f4,null));};exports[_0xaf2c('0x53')]=function(_0x1520ec,_0xc27601){return respondWithRpcPromise('SmsQueues',_0x1520ec[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](findById(_0x1520ec[_0xaf2c('0x1e')]['id']))[_0xaf2c('0x9')](respondWithResult(_0xc27601,null))[_0xaf2c('0xe')](handleError(_0xc27601,null));};exports['whatsappQueues']=function(_0xbfb776,_0x28b09f){return respondWithRpcPromise(_0xaf2c('0x54'),_0xbfb776[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](respondWithResult(_0x28b09f,null))['catch'](handleError(_0x28b09f,null));};exports['showWhatsappQueues']=function(_0x1166c9,_0x1ead61){return respondWithRpcPromise('WhatsappQueues',_0x1166c9[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](findById(_0x1166c9[_0xaf2c('0x1e')]['id']))['then'](respondWithResult(_0x1ead61,null))[_0xaf2c('0xe')](handleError(_0x1ead61,null));};exports[_0xaf2c('0x55')]=function(_0x18dcde,_0x2aae3a){return respondWithRpcPromise('FaxQueues',_0x18dcde[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](respondWithResult(_0x2aae3a,null))[_0xaf2c('0xe')](handleError(_0x2aae3a,null));};exports[_0xaf2c('0x56')]=function(_0x20c120,_0x1ecf97){return respondWithRpcPromise(_0xaf2c('0x57'),_0x20c120[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](findById(_0x20c120[_0xaf2c('0x1e')]['id']))[_0xaf2c('0x9')](respondWithResult(_0x1ecf97,null))['catch'](handleError(_0x1ecf97,null));};exports[_0xaf2c('0x58')]=function(_0x5d965c,_0x1a0795){return respondWithRpcPromise(_0xaf2c('0x59'),_0x5d965c['query'])[_0xaf2c('0x9')](respondWithResult(_0x1a0795,null))['catch'](handleError(_0x1a0795,null));};exports['chatQueuesWaitingInteractions']=function(_0x316333,_0x1d73ef){return respondWithRpcPromise(_0xaf2c('0x5a'),_0x316333['query'],routingClient)['then'](respondWithResult(_0x1d73ef,null))['catch'](handleError(_0x1d73ef,null));};exports[_0xaf2c('0x5b')]=function(_0x3e972c,_0x517f8d){return respondWithRpcPromise(_0xaf2c('0x5c'),_0x3e972c[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](respondWithResult(_0x517f8d,null))[_0xaf2c('0xe')](handleError(_0x517f8d,null));};exports[_0xaf2c('0x5d')]=function(_0x44303c,_0x4be47b){return respondWithRpcPromise(_0xaf2c('0x5e'),_0x44303c[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](respondWithResult(_0x4be47b,null))['catch'](handleError(_0x4be47b,null));};exports[_0xaf2c('0x5f')]=function(_0x3c53ff,_0x37ee02){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x3c53ff[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](function(_0x433f9e){if(_0x3c53ff[_0xaf2c('0x19')]['type']!==undefined){var _0x286a40=_(_0x433f9e[_0xaf2c('0x17')])[_0xaf2c('0x60')]([_0x3c53ff['query']['type'],_0x3c53ff[_0xaf2c('0x1e')]['id']])[_0xaf2c('0x61')]('queue_id')[_0xaf2c('0x62')]()[_0xaf2c('0x63')]();return _0x433f9e['rows'][_0xaf2c('0x60')](function(_0x31cf3e){return _0x286a40[_0xaf2c('0x64')](_0x31cf3e[_0xaf2c('0x65')])>-0x1;});}else{return _0x433f9e[_0xaf2c('0x17')]['filter'](function(_0x5831c9){return _0x5831c9[_0xaf2c('0x65')]===parseInt(_0x3c53ff[_0xaf2c('0x1e')]['id']);});}})[_0xaf2c('0x9')](respondWithResult(_0x37ee02,null))['catch'](handleError(_0x37ee02,null));};exports[_0xaf2c('0x66')]=function(_0x467a36,_0x3d8471){return respondWithRpcPromise(_0xaf2c('0x67'),_0x467a36[_0xaf2c('0x19')],routingClient)['then'](respondWithResult(_0x3d8471,null))[_0xaf2c('0xe')](handleError(_0x3d8471,null));};exports[_0xaf2c('0x68')]=function(_0x154f69,_0x1ef61f){return respondWithRpcPromise(_0xaf2c('0x69'),_0x154f69[_0xaf2c('0x19')],routingClient)['then'](respondWithResult(_0x1ef61f,null))[_0xaf2c('0xe')](handleError(_0x1ef61f,null));};exports[_0xaf2c('0x6a')]=function(_0x483774,_0x5beb89){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0x483774[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](respondWithResult(_0x5beb89,null))[_0xaf2c('0xe')](handleError(_0x5beb89,null));};exports[_0xaf2c('0x6b')]=function(_0x499bbe){return function(_0x19fbd5,_0x2d7ca5){var _0x2b57d2,_0x430567;var _0x4ddf95=_[_0xaf2c('0x6c')](_0x499bbe);var _0x23aeac=_0x499bbe===_0xaf2c('0x6d')?_0xaf2c('0x6e'):_0xaf2c('0x6f');return db[_0x4ddf95+'Queue'][_0xaf2c('0x70')]({'raw':!![],'where':{'id':_0x19fbd5[_0xaf2c('0x1e')]['id']}})['then'](function(_0x516193){if(_[_0xaf2c('0x15')](_0x516193)){throw new Error(_0x4ddf95+_0xaf2c('0x71'));}_0x2b57d2=_0x516193;return db[_0x4ddf95+'Message'][_0xaf2c('0x70')]({'where':{'id':_0x19fbd5[_0xaf2c('0x32')][_0xaf2c('0x72')]},'include':[{'model':db[_0x4ddf95+_0xaf2c('0x73')],'as':_0xaf2c('0x73')},{'model':db[_0x4ddf95+_0x23aeac],'as':_0xaf2c('0x6f')}]});})[_0xaf2c('0x9')](function(_0x43c174){if(_['isNil'](_0x43c174)){throw new Error(_0x4ddf95+_0xaf2c('0x74'));}_0x430567=_0x43c174;return _0x43c174['update']({'read':0x0,'readAt':null,'UserId':null});})[_0xaf2c('0x9')](function(){var _0x7724cc={'uniqueid':_0x499bbe+'.'+_0x430567['id']+'.'+_0x430567['Interaction']['id'],'FromUserId':_0x19fbd5['user']['id'],'type':_0xaf2c('0x75')};_0x7724cc[_0x4ddf95+_0xaf2c('0x76')]=_0x430567['id'];_0x7724cc[_0x4ddf95+_0xaf2c('0x77')]=_0x430567['Interaction']['id'];_0x7724cc[_0xaf2c('0x78')+_0x4ddf95+_0x23aeac+'Id']=_0x430567[_0xaf2c('0x6f')]['id'];_0x7724cc['To'+_0x4ddf95+_0xaf2c('0x79')]=_0x2b57d2['id'];return db[_0x4ddf95+'TransferReport']['create'](_0x7724cc);})['then'](function(){return respondWithRpcPromise('Start',{'channel':_0x499bbe,'interaction':_0x430567[_0xaf2c('0x73')],'message':_0x430567,'account':_0x430567[_0xaf2c('0x6f')],'applications':[{'id':0x0,'priority':0x1,'app':_0xaf2c('0x75'),'appdata':_0x2b57d2[_0xaf2c('0x13')]+','+(_0x430567[_0xaf2c('0x6f')]['queueTransferTimeout']||0x12c),'interval':_0xaf2c('0x7a')}]},routingClient);})[_0xaf2c('0x9')](respondWithResult(_0x2d7ca5,null))['catch'](handleError(_0x2d7ca5,null));};};exports[_0xaf2c('0x7b')]=function(_0x4a3a61,_0x31f1d3){var _0x25d49c,_0x1e403a;if(_[_0xaf2c('0x15')](_0x4a3a61[_0xaf2c('0x32')][_0xaf2c('0x7c')])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x47b971=_0x4a3a61[_0xaf2c('0x32')][_0xaf2c('0x7c')];var _0x1bc548=_[_0xaf2c('0x6c')](_0x47b971);var _0x118e78=_0x47b971===_0xaf2c('0x6d')?'Website':'Account';return db[_0xaf2c('0x7d')]['findOne']({'raw':!![],'where':{'id':_0x4a3a61[_0xaf2c('0x1e')]['id'],'role':'agent'}})[_0xaf2c('0x9')](function(_0x639b4b){if(_['isNil'](_0x639b4b)){throw new Error(_0xaf2c('0x7e'));}_0x25d49c=_0x639b4b;return db[_0x1bc548+_0xaf2c('0x7f')][_0xaf2c('0x70')]({'where':{'id':_0x4a3a61['body'][_0xaf2c('0x72')]},'include':[{'model':db[_0x1bc548+_0xaf2c('0x73')],'as':_0xaf2c('0x73')},{'model':db[_0x1bc548+_0x118e78],'as':_0xaf2c('0x6f')}]});})[_0xaf2c('0x9')](function(_0xb311e1){if(_['isNil'](_0xb311e1)){throw new Error(_0x1bc548+'\x20Message\x20not\x20found');}_0x1e403a=_0xb311e1;return _0xb311e1['update']({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x2db412={'uniqueid':_0x47b971+'.'+_0x1e403a['id']+'.'+_0x1e403a['Interaction']['id'],'FromUserId':_0x4a3a61[_0xaf2c('0x33')]['id'],'type':'queue','ToUserId':_0x25d49c['id']};_0x2db412[_0x1bc548+'MessageId']=_0x1e403a['id'];_0x2db412[_0x1bc548+_0xaf2c('0x77')]=_0x1e403a[_0xaf2c('0x73')]['id'];_0x2db412['From'+_0x1bc548+_0x118e78+'Id']=_0x1e403a[_0xaf2c('0x6f')]['id'];return db[_0x1bc548+_0xaf2c('0x80')][_0xaf2c('0x81')](_0x2db412);})[_0xaf2c('0x9')](function(){return respondWithRpcPromise(_0xaf2c('0x82'),{'channel':_0x47b971,'interaction':_0x1e403a[_0xaf2c('0x73')],'message':_0x1e403a,'account':_0x1e403a[_0xaf2c('0x6f')],'applications':[{'id':0x0,'priority':0x1,'app':_0xaf2c('0x3d'),'appdata':_0x25d49c[_0xaf2c('0x13')]+','+(_0x1e403a[_0xaf2c('0x6f')]['agentTransferTimeout']||0x12c),'interval':_0xaf2c('0x7a')}]},routingClient);})['then'](respondWithResult(_0x31f1d3,null))[_0xaf2c('0xe')](handleError(_0x31f1d3,null));};
\ No newline at end of file
index 494e819..b463337 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x996a=['show','post','create','put','/:id','update','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller','get','index','isAuthenticated'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x996a,0xef));var _0xa996=function(_0x2db704,_0x581549){_0x2db704=_0x2db704-0x0;var _0x56a6f7=_0x996a[_0x2db704];return _0x56a6f7;};'use strict';var multer=require(_0xa996('0x0'));var util=require(_0xa996('0x1'));var path=require(_0xa996('0x2'));var timeout=require(_0xa996('0x3'));var express=require('express');var router=express[_0xa996('0x4')]();var fs_extra=require(_0xa996('0x5'));var auth=require(_0xa996('0x6'));var interaction=require(_0xa996('0x7'));var config=require(_0xa996('0x8'));var controller=require(_0xa996('0x9'));router[_0xa996('0xa')]('/',auth['isAuthenticated'](),controller[_0xa996('0xb')]);router[_0xa996('0xa')]('/:id',auth[_0xa996('0xc')](),controller[_0xa996('0xd')]);router[_0xa996('0xa')]('/:id/run',auth[_0xa996('0xc')](),controller['run']);router[_0xa996('0xe')]('/',auth[_0xa996('0xc')](),controller[_0xa996('0xf')]);router[_0xa996('0x10')](_0xa996('0x11'),auth[_0xa996('0xc')](),controller[_0xa996('0x12')]);router[_0xa996('0x13')](_0xa996('0x11'),auth[_0xa996('0xc')](),controller[_0xa996('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x300b=['post','create','put','update','delete','destroy','multer','path','express','Router','fs-extra','../../components/auth/service','./schedule.controller','get','isAuthenticated','/:id','show','/:id/run','run'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x300b,0x149));var _0xb300=function(_0x15fb8e,_0x510e48){_0x15fb8e=_0x15fb8e-0x0;var _0x56d327=_0x300b[_0x15fb8e];return _0x56d327;};'use strict';var multer=require(_0xb300('0x0'));var util=require('util');var path=require(_0xb300('0x1'));var timeout=require('connect-timeout');var express=require(_0xb300('0x2'));var router=express[_0xb300('0x3')]();var fs_extra=require(_0xb300('0x4'));var auth=require(_0xb300('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xb300('0x6'));router[_0xb300('0x7')]('/',auth[_0xb300('0x8')](),controller['index']);router[_0xb300('0x7')](_0xb300('0x9'),auth[_0xb300('0x8')](),controller[_0xb300('0xa')]);router[_0xb300('0x7')](_0xb300('0xb'),auth[_0xb300('0x8')](),controller[_0xb300('0xc')]);router[_0xb300('0xd')]('/',auth[_0xb300('0x8')](),controller[_0xb300('0xe')]);router[_0xb300('0xf')](_0xb300('0x9'),auth[_0xb300('0x8')](),controller[_0xb300('0x10')]);router[_0xb300('0x11')](_0xb300('0x9'),auth[_0xb300('0x8')](),controller[_0xb300('0x12')]);module['exports']=router;
\ No newline at end of file
index 8f02b95..8e95c07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc778=['minutes','days','ENUM','pdf','csv','custom','default','TEXT','sequelize','exports','STRING','BOOLEAN','DATE','INTEGER','years','months','weeks','hours'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xc778,0xce));var _0x8c77=function(_0x38e49a,_0x7717aa){_0x38e49a=_0x38e49a-0x0;var _0x246c53=_0xc778[_0x38e49a];return _0x246c53;};'use strict';var Sequelize=require(_0x8c77('0x0'));module[_0x8c77('0x1')]={'name':{'type':Sequelize[_0x8c77('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0x8c77('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x8c77('0x2')],'allowNull':![],'defaultValue':'0\x200\x20*\x20*\x20*'},'startAt':{'type':Sequelize[_0x8c77('0x4')],'allowNull':![]},'endAt':{'type':Sequelize[_0x8c77('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x8c77('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM'](_0x8c77('0x6'),'quarters',_0x8c77('0x7'),_0x8c77('0x8'),'days',_0x8c77('0x9'),_0x8c77('0xa')),'allowNull':![],'defaultValue':_0x8c77('0xb')},'output':{'type':Sequelize[_0x8c77('0xc')]('csv',_0x8c77('0xd'),'xlsx'),'allowNull':![],'defaultValue':_0x8c77('0xe')},'type':{'type':Sequelize[_0x8c77('0xc')](_0x8c77('0xf'),_0x8c77('0x10')),'allowNull':![],'defaultValue':_0x8c77('0xf')},'sendMail':{'type':Sequelize[_0x8c77('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0x8c77('0x2')]},'cc':{'type':Sequelize[_0x8c77('0x11')]},'bcc':{'type':Sequelize[_0x8c77('0x11')]},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0xc9a6=['pdf','xlsx','custom','default','TEXT','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER','years','months','weeks','days','hours','minutes','ENUM','csv'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xc9a6,0xb9));var _0x6c9a=function(_0x4c3edf,_0x2ce2fe){_0x4c3edf=_0x4c3edf-0x0;var _0x214e71=_0xc9a6[_0x4c3edf];return _0x214e71;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x6c9a('0x0')],'allowNull':![]},'description':{'type':Sequelize[_0x6c9a('0x0')]},'active':{'type':Sequelize[_0x6c9a('0x1')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x6c9a('0x0')],'allowNull':![],'defaultValue':_0x6c9a('0x2')},'startAt':{'type':Sequelize[_0x6c9a('0x3')],'allowNull':![]},'endAt':{'type':Sequelize[_0x6c9a('0x3')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x6c9a('0x4')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM'](_0x6c9a('0x5'),'quarters',_0x6c9a('0x6'),_0x6c9a('0x7'),_0x6c9a('0x8'),_0x6c9a('0x9'),_0x6c9a('0xa')),'allowNull':![],'defaultValue':_0x6c9a('0x8')},'output':{'type':Sequelize[_0x6c9a('0xb')](_0x6c9a('0xc'),_0x6c9a('0xd'),_0x6c9a('0xe')),'allowNull':![],'defaultValue':_0x6c9a('0xc')},'type':{'type':Sequelize[_0x6c9a('0xb')](_0x6c9a('0xf'),_0x6c9a('0x10')),'allowNull':![],'defaultValue':_0x6c9a('0xf')},'sendMail':{'type':Sequelize[_0x6c9a('0x1')],'defaultValue':![]},'email':{'type':Sequelize[_0x6c9a('0x0')]},'cc':{'type':Sequelize[_0x6c9a('0x11')]},'bcc':{'type':Sequelize[_0x6c9a('0x11')]},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index ff20e30..c55bb0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf732=['ejs','crypto','desk.js','to-csv','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','json','reject','update','then','get','Scheduler','UserProfileResource','error','stack','send','index','map','Schedule','rawAttributes','fieldName','type','key','model','name','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','filter','where','merge','includeAll','findAll','rows','catch','show','params','keys','length','include','options','create','body','role','user','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','run','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox'];(function(_0x5ec454,_0xfcd77e){var _0x5ebf50=function(_0x29de85){while(--_0x29de85){_0x5ec454['push'](_0x5ec454['shift']());}};_0x5ebf50(++_0xfcd77e);}(_0xf732,0xe4));var _0x2f73=function(_0x1e235e,_0x994b77){_0x1e235e=_0x1e235e-0x0;var _0x1e8e94=_0xf732[_0x1e235e];return _0x1e8e94;};'use strict';var emlformat=require(_0x2f73('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2f73('0x1'));var jsonpatch=require(_0x2f73('0x2'));var rp=require(_0x2f73('0x3'));var moment=require(_0x2f73('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2f73('0x5'));var util=require(_0x2f73('0x6'));var path=require(_0x2f73('0x7'));var sox=require(_0x2f73('0x8'));var csv=require('to-csv');var ejs=require(_0x2f73('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x2f73('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x2f73('0xb'));var toCsv=require(_0x2f73('0xc'));var querystring=require(_0x2f73('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x2f73('0xe'));var as=require(_0x2f73('0xf'));var hardwareService=require(_0x2f73('0x10'));var logger=require(_0x2f73('0x11'))('api');var utils=require(_0x2f73('0x12'));var config=require(_0x2f73('0x13'));var licenseUtil=require(_0x2f73('0x14'));var db=require(_0x2f73('0x15'))['db'];function respondWithStatusCode(_0x2923d9,_0xdf3e79){_0xdf3e79=_0xdf3e79||0xcc;return function(_0x1a5aba){if(_0x1a5aba){return _0x2923d9['sendStatus'](_0xdf3e79);}return _0x2923d9[_0x2f73('0x16')](_0xdf3e79)[_0x2f73('0x17')]();};}function respondWithResult(_0x2a2726,_0x4b3646){_0x4b3646=_0x4b3646||0xc8;return function(_0x7fc5ce){if(_0x7fc5ce){return _0x2a2726['status'](_0x4b3646)['json'](_0x7fc5ce);}};}function respondWithFilteredResult(_0x17488f,_0x20d034){return function(_0x5ce752){if(_0x5ce752){var _0x2e8463=typeof _0x20d034[_0x2f73('0x18')]===_0x2f73('0x19')&&typeof _0x20d034[_0x2f73('0x1a')]==='undefined';var _0x300e9a=_0x5ce752[_0x2f73('0x1b')];var _0x7743d9=_0x2e8463?0x0:_0x20d034[_0x2f73('0x18')];var _0x5ab048=_0x2e8463?_0x5ce752['count']:_0x20d034['offset']+_0x20d034[_0x2f73('0x1a')];var _0x1a1adb;if(_0x5ab048>=_0x300e9a){_0x5ab048=_0x300e9a;_0x1a1adb=0xc8;}else{_0x1a1adb=0xce;}_0x17488f[_0x2f73('0x16')](_0x1a1adb);return _0x17488f['set']('Content-Range',_0x7743d9+'-'+_0x5ab048+'/'+_0x300e9a)[_0x2f73('0x1c')](_0x5ce752);}return null;};}function patchUpdates(_0x2bf6ce){return function(_0x2718cb){try{jsonpatch['apply'](_0x2718cb,_0x2bf6ce,!![]);}catch(_0x1a8be2){return BPromise[_0x2f73('0x1d')](_0x1a8be2);}return _0x2718cb['save']();};}function saveUpdates(_0x2ef130,_0x33bfd8){return function(_0x247966){if(_0x247966){return _0x247966[_0x2f73('0x1e')](_0x2ef130)[_0x2f73('0x1f')](function(_0x225616){return _0x225616;});}return null;};}function removeEntity(_0x39015e,_0x544b59){return function(_0x2ad146){if(_0x2ad146){return _0x2ad146['destroy']()[_0x2f73('0x1f')](function(){var _0xd5d499=_0x2ad146[_0x2f73('0x20')]({'plain':!![]});var _0x425a6b=_0x2f73('0x21');return db[_0x2f73('0x22')]['destroy']({'where':{'type':_0x425a6b,'resourceId':_0xd5d499['id']}})['then'](function(){return _0x2ad146;});})[_0x2f73('0x1f')](function(){_0x39015e[_0x2f73('0x16')](0xcc)[_0x2f73('0x17')]();});}};}function handleEntityNotFound(_0x1eac69,_0x504c83){return function(_0x2fd5f7){if(!_0x2fd5f7){_0x1eac69['sendStatus'](0x194);}return _0x2fd5f7;};}function handleError(_0x4e0e77,_0x236df6){_0x236df6=_0x236df6||0x1f4;return function(_0x233683){logger[_0x2f73('0x23')](_0x233683[_0x2f73('0x24')]);if(_0x233683['name']){delete _0x233683['name'];}_0x4e0e77[_0x2f73('0x16')](_0x236df6)[_0x2f73('0x25')](_0x233683);};}exports[_0x2f73('0x26')]=function(_0xa0f12f,_0x179037){var _0x3831d9={},_0x255eff={},_0x2304c3={'count':0x0,'rows':[]};var _0x5a01f1=_[_0x2f73('0x27')](db[_0x2f73('0x28')][_0x2f73('0x29')],function(_0x4c3d4a){return{'name':_0x4c3d4a[_0x2f73('0x2a')],'type':_0x4c3d4a[_0x2f73('0x2b')][_0x2f73('0x2c')]};});_0x255eff[_0x2f73('0x2d')]=_[_0x2f73('0x27')](_0x5a01f1,_0x2f73('0x2e'));_0x255eff['query']=_['keys'](_0xa0f12f[_0x2f73('0x2f')]);_0x255eff['filters']=_[_0x2f73('0x30')](_0x255eff[_0x2f73('0x2d')],_0x255eff[_0x2f73('0x2f')]);_0x3831d9[_0x2f73('0x31')]=_[_0x2f73('0x30')](_0x255eff['model'],qs[_0x2f73('0x32')](_0xa0f12f[_0x2f73('0x2f')][_0x2f73('0x32')]));_0x3831d9[_0x2f73('0x31')]=_0x3831d9['attributes']['length']?_0x3831d9[_0x2f73('0x31')]:_0x255eff[_0x2f73('0x2d')];if(!_0xa0f12f[_0x2f73('0x2f')][_0x2f73('0x33')](_0x2f73('0x34'))){_0x3831d9['limit']=qs[_0x2f73('0x1a')](_0xa0f12f[_0x2f73('0x2f')][_0x2f73('0x1a')]);_0x3831d9[_0x2f73('0x18')]=qs['offset'](_0xa0f12f[_0x2f73('0x2f')][_0x2f73('0x18')]);}_0x3831d9[_0x2f73('0x35')]=qs[_0x2f73('0x36')](_0xa0f12f['query']['sort']);_0x3831d9['where']=qs[_0x2f73('0x37')](_['pick'](_0xa0f12f['query'],_0x255eff['filters']),_0x5a01f1);if(_0xa0f12f[_0x2f73('0x2f')][_0x2f73('0x38')]){_0x3831d9[_0x2f73('0x39')]=_[_0x2f73('0x3a')](_0x3831d9[_0x2f73('0x39')],{'$or':_['map'](_0x5a01f1,function(_0x182001){if(_0x182001[_0x2f73('0x2b')]!=='VIRTUAL'){var _0x2e1398={};_0x2e1398[_0x182001[_0x2f73('0x2e')]]={'$like':'%'+_0xa0f12f[_0x2f73('0x2f')][_0x2f73('0x38')]+'%'};return _0x2e1398;}})});}_0x3831d9=_[_0x2f73('0x3a')]({},_0x3831d9,_0xa0f12f['options']);var _0x20ac45={'where':_0x3831d9[_0x2f73('0x39')]};return db[_0x2f73('0x28')][_0x2f73('0x1b')](_0x20ac45)['then'](function(_0x5db4db){_0x2304c3[_0x2f73('0x1b')]=_0x5db4db;if(_0xa0f12f[_0x2f73('0x2f')][_0x2f73('0x3b')]){_0x3831d9['include']=[{'all':!![]}];}return db[_0x2f73('0x28')][_0x2f73('0x3c')](_0x3831d9);})[_0x2f73('0x1f')](function(_0x1d9786){_0x2304c3[_0x2f73('0x3d')]=_0x1d9786;return _0x2304c3;})[_0x2f73('0x1f')](respondWithFilteredResult(_0x179037,_0x3831d9))[_0x2f73('0x3e')](handleError(_0x179037,null));};exports[_0x2f73('0x3f')]=function(_0x4b4ce8,_0x1cf1ae){var _0x24231c={'raw':![],'where':{'id':_0x4b4ce8[_0x2f73('0x40')]['id']}},_0x408902={};_0x408902[_0x2f73('0x2d')]=_[_0x2f73('0x41')](db[_0x2f73('0x28')][_0x2f73('0x29')]);_0x408902[_0x2f73('0x2f')]=_['keys'](_0x4b4ce8[_0x2f73('0x2f')]);_0x408902[_0x2f73('0x37')]=_[_0x2f73('0x30')](_0x408902[_0x2f73('0x2d')],_0x408902['query']);_0x24231c[_0x2f73('0x31')]=_[_0x2f73('0x30')](_0x408902['model'],qs['fields'](_0x4b4ce8['query']['fields']));_0x24231c[_0x2f73('0x31')]=_0x24231c['attributes'][_0x2f73('0x42')]?_0x24231c[_0x2f73('0x31')]:_0x408902['model'];if(_0x4b4ce8[_0x2f73('0x2f')][_0x2f73('0x3b')]){_0x24231c[_0x2f73('0x43')]=[{'all':!![]}];}_0x24231c=_[_0x2f73('0x3a')]({},_0x24231c,_0x4b4ce8[_0x2f73('0x44')]);return db[_0x2f73('0x28')]['find'](_0x24231c)[_0x2f73('0x1f')](handleEntityNotFound(_0x1cf1ae,null))[_0x2f73('0x1f')](respondWithResult(_0x1cf1ae,null))[_0x2f73('0x3e')](handleError(_0x1cf1ae,null));};exports[_0x2f73('0x45')]=function(_0x6d8bbd,_0x3d7c47){return db['Schedule']['create'](_0x6d8bbd[_0x2f73('0x46')],{})[_0x2f73('0x1f')](function(_0x40ef33){var _0x35d2bd=_0x6d8bbd['user']['get']({'plain':!![]});if(!_0x35d2bd)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x35d2bd[_0x2f73('0x47')]===_0x2f73('0x48')){var _0x43a2b0=_0x40ef33[_0x2f73('0x20')]({'plain':!![]});var _0x8da127='Scheduler';return db[_0x2f73('0x49')][_0x2f73('0x4a')]({'where':{'name':_0x8da127,'userProfileId':_0x35d2bd[_0x2f73('0x4b')]},'raw':!![]})[_0x2f73('0x1f')](function(_0xeae57a){if(_0xeae57a&&_0xeae57a['autoAssociation']===0x0){return db['UserProfileResource'][_0x2f73('0x45')]({'name':_0x43a2b0[_0x2f73('0x2e')],'resourceId':_0x43a2b0['id'],'type':_0xeae57a[_0x2f73('0x2e')],'sectionId':_0xeae57a['id']},{})['then'](function(){return _0x40ef33;});}else{return _0x40ef33;}})['catch'](function(_0x5dbbf4){logger['error'](_0x2f73('0x4c'),_0x5dbbf4);throw _0x5dbbf4;});}return _0x40ef33;})[_0x2f73('0x1f')](respondWithResult(_0x3d7c47,0xc9))[_0x2f73('0x3e')](handleError(_0x3d7c47,null));};exports[_0x2f73('0x1e')]=function(_0x38a84a,_0x38b37c){if(_0x38a84a[_0x2f73('0x46')]['id']){delete _0x38a84a[_0x2f73('0x46')]['id'];}return db['Schedule'][_0x2f73('0x4a')]({'where':{'id':_0x38a84a[_0x2f73('0x40')]['id']}})[_0x2f73('0x1f')](handleEntityNotFound(_0x38b37c,null))[_0x2f73('0x1f')](saveUpdates(_0x38a84a[_0x2f73('0x46')],null))[_0x2f73('0x1f')](respondWithResult(_0x38b37c,null))[_0x2f73('0x3e')](handleError(_0x38b37c,null));};exports[_0x2f73('0x4d')]=function(_0x4f1b70,_0x2d4e2a){return db[_0x2f73('0x28')]['find']({'where':{'id':_0x4f1b70[_0x2f73('0x40')]['id']}})[_0x2f73('0x1f')](handleEntityNotFound(_0x2d4e2a,null))[_0x2f73('0x1f')](removeEntity(_0x2d4e2a,null))[_0x2f73('0x3e')](handleError(_0x2d4e2a,null));};exports[_0x2f73('0x4e')]=function(_0x3fceb3,_0x1caaaf,_0x19d769){var _0x205db5=require('../../config/schedule');return db[_0x2f73('0x28')][_0x2f73('0x4a')]({'where':{'id':_0x3fceb3[_0x2f73('0x40')]['id']},'raw':!![]})[_0x2f73('0x1f')](handleEntityNotFound(_0x1caaaf,null))[_0x2f73('0x1f')](function(){_0x205db5['run'](_0x3fceb3[_0x2f73('0x40')]['id']);})[_0x2f73('0x1f')](respondWithStatusCode(_0x1caaaf,null))[_0x2f73('0x3e')](handleError(_0x1caaaf,null));};
\ No newline at end of file
+var _0x294f=['util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','set','apply','reject','save','update','then','destroy','get','Scheduler','UserProfileResource','sendStatus','error','stack','name','send','index','Schedule','rawAttributes','fieldName','type','key','model','map','keys','query','filters','attributes','fields','length','nolimit','order','sort','where','filter','VIRTUAL','count','include','findAll','catch','params','intersection','includeAll','merge','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','../../config/schedule','run','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x1a809b,_0x4c15e3){var _0x5d90e6=function(_0x5dd2e1){while(--_0x5dd2e1){_0x1a809b['push'](_0x1a809b['shift']());}};_0x5d90e6(++_0x4c15e3);}(_0x294f,0xfa));var _0xf294=function(_0x4f96a3,_0xe68556){_0x4f96a3=_0x4f96a3-0x0;var _0x44529e=_0x294f[_0x4f96a3];return _0x44529e;};'use strict';var emlformat=require(_0xf294('0x0'));var rimraf=require(_0xf294('0x1'));var zipdir=require(_0xf294('0x2'));var jsonpatch=require(_0xf294('0x3'));var rp=require(_0xf294('0x4'));var moment=require(_0xf294('0x5'));var BPromise=require(_0xf294('0x6'));var Mustache=require(_0xf294('0x7'));var util=require(_0xf294('0x8'));var path=require(_0xf294('0x9'));var sox=require(_0xf294('0xa'));var csv=require(_0xf294('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf294('0xc'));var squel=require(_0xf294('0xd'));var crypto=require(_0xf294('0xe'));var jsforce=require(_0xf294('0xf'));var deskjs=require(_0xf294('0x10'));var toCsv=require('to-csv');var querystring=require(_0xf294('0x11'));var Papa=require(_0xf294('0x12'));var Redis=require('ioredis');var authService=require(_0xf294('0x13'));var qs=require(_0xf294('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xf294('0x15'))('api');var utils=require(_0xf294('0x16'));var config=require(_0xf294('0x17'));var licenseUtil=require(_0xf294('0x18'));var db=require(_0xf294('0x19'))['db'];function respondWithStatusCode(_0x21dc06,_0x2e70da){_0x2e70da=_0x2e70da||0xcc;return function(_0x155933){if(_0x155933){return _0x21dc06['sendStatus'](_0x2e70da);}return _0x21dc06[_0xf294('0x1a')](_0x2e70da)['end']();};}function respondWithResult(_0x145e73,_0x2bade3){_0x2bade3=_0x2bade3||0xc8;return function(_0x2d08ce){if(_0x2d08ce){return _0x145e73[_0xf294('0x1a')](_0x2bade3)[_0xf294('0x1b')](_0x2d08ce);}};}function respondWithFilteredResult(_0x18d50b,_0x574bf3){return function(_0x12efc4){if(_0x12efc4){var _0x31669d=typeof _0x574bf3[_0xf294('0x1c')]===_0xf294('0x1d')&&typeof _0x574bf3[_0xf294('0x1e')]===_0xf294('0x1d');var _0xa4d1bf=_0x12efc4['count'];var _0x29a9a8=_0x31669d?0x0:_0x574bf3[_0xf294('0x1c')];var _0x18f97c=_0x31669d?_0x12efc4['count']:_0x574bf3[_0xf294('0x1c')]+_0x574bf3[_0xf294('0x1e')];var _0x5677fe;if(_0x18f97c>=_0xa4d1bf){_0x18f97c=_0xa4d1bf;_0x5677fe=0xc8;}else{_0x5677fe=0xce;}_0x18d50b[_0xf294('0x1a')](_0x5677fe);return _0x18d50b[_0xf294('0x1f')]('Content-Range',_0x29a9a8+'-'+_0x18f97c+'/'+_0xa4d1bf)[_0xf294('0x1b')](_0x12efc4);}return null;};}function patchUpdates(_0x49b7c9){return function(_0x122236){try{jsonpatch[_0xf294('0x20')](_0x122236,_0x49b7c9,!![]);}catch(_0x381785){return BPromise[_0xf294('0x21')](_0x381785);}return _0x122236[_0xf294('0x22')]();};}function saveUpdates(_0x31403f,_0x46b1ad){return function(_0x14e099){if(_0x14e099){return _0x14e099[_0xf294('0x23')](_0x31403f)[_0xf294('0x24')](function(_0x14a410){return _0x14a410;});}return null;};}function removeEntity(_0x58afa1,_0x3a4f8d){return function(_0x485f95){if(_0x485f95){return _0x485f95[_0xf294('0x25')]()[_0xf294('0x24')](function(){var _0x110807=_0x485f95[_0xf294('0x26')]({'plain':!![]});var _0x523215=_0xf294('0x27');return db[_0xf294('0x28')][_0xf294('0x25')]({'where':{'type':_0x523215,'resourceId':_0x110807['id']}})[_0xf294('0x24')](function(){return _0x485f95;});})[_0xf294('0x24')](function(){_0x58afa1[_0xf294('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x116498,_0x14a4be){return function(_0xc42cae){if(!_0xc42cae){_0x116498[_0xf294('0x29')](0x194);}return _0xc42cae;};}function handleError(_0x9bc432,_0x8a5597){_0x8a5597=_0x8a5597||0x1f4;return function(_0x21f29b){logger[_0xf294('0x2a')](_0x21f29b[_0xf294('0x2b')]);if(_0x21f29b['name']){delete _0x21f29b[_0xf294('0x2c')];}_0x9bc432[_0xf294('0x1a')](_0x8a5597)[_0xf294('0x2d')](_0x21f29b);};}exports[_0xf294('0x2e')]=function(_0x31fde,_0x5df5c2){var _0x6c65b2={},_0x3071dd={},_0x735e47={'count':0x0,'rows':[]};var _0x50d79d=_['map'](db[_0xf294('0x2f')][_0xf294('0x30')],function(_0x1ae7f2){return{'name':_0x1ae7f2[_0xf294('0x31')],'type':_0x1ae7f2[_0xf294('0x32')][_0xf294('0x33')]};});_0x3071dd[_0xf294('0x34')]=_[_0xf294('0x35')](_0x50d79d,'name');_0x3071dd['query']=_[_0xf294('0x36')](_0x31fde[_0xf294('0x37')]);_0x3071dd[_0xf294('0x38')]=_['intersection'](_0x3071dd[_0xf294('0x34')],_0x3071dd[_0xf294('0x37')]);_0x6c65b2[_0xf294('0x39')]=_['intersection'](_0x3071dd[_0xf294('0x34')],qs[_0xf294('0x3a')](_0x31fde[_0xf294('0x37')]['fields']));_0x6c65b2['attributes']=_0x6c65b2['attributes'][_0xf294('0x3b')]?_0x6c65b2[_0xf294('0x39')]:_0x3071dd[_0xf294('0x34')];if(!_0x31fde[_0xf294('0x37')]['hasOwnProperty'](_0xf294('0x3c'))){_0x6c65b2[_0xf294('0x1e')]=qs[_0xf294('0x1e')](_0x31fde[_0xf294('0x37')][_0xf294('0x1e')]);_0x6c65b2[_0xf294('0x1c')]=qs[_0xf294('0x1c')](_0x31fde[_0xf294('0x37')]['offset']);}_0x6c65b2[_0xf294('0x3d')]=qs[_0xf294('0x3e')](_0x31fde[_0xf294('0x37')][_0xf294('0x3e')]);_0x6c65b2[_0xf294('0x3f')]=qs[_0xf294('0x38')](_['pick'](_0x31fde[_0xf294('0x37')],_0x3071dd[_0xf294('0x38')]),_0x50d79d);if(_0x31fde[_0xf294('0x37')][_0xf294('0x40')]){_0x6c65b2[_0xf294('0x3f')]=_['merge'](_0x6c65b2['where'],{'$or':_[_0xf294('0x35')](_0x50d79d,function(_0x42fc4c){if(_0x42fc4c[_0xf294('0x32')]!==_0xf294('0x41')){var _0x45a611={};_0x45a611[_0x42fc4c[_0xf294('0x2c')]]={'$like':'%'+_0x31fde['query'][_0xf294('0x40')]+'%'};return _0x45a611;}})});}_0x6c65b2=_['merge']({},_0x6c65b2,_0x31fde['options']);var _0x27e903={'where':_0x6c65b2[_0xf294('0x3f')]};return db[_0xf294('0x2f')]['count'](_0x27e903)['then'](function(_0x445c19){_0x735e47[_0xf294('0x42')]=_0x445c19;if(_0x31fde['query']['includeAll']){_0x6c65b2[_0xf294('0x43')]=[{'all':!![]}];}return db[_0xf294('0x2f')][_0xf294('0x44')](_0x6c65b2);})[_0xf294('0x24')](function(_0x4e8563){_0x735e47['rows']=_0x4e8563;return _0x735e47;})['then'](respondWithFilteredResult(_0x5df5c2,_0x6c65b2))[_0xf294('0x45')](handleError(_0x5df5c2,null));};exports['show']=function(_0x3751be,_0x406e49){var _0x167ec6={'raw':![],'where':{'id':_0x3751be[_0xf294('0x46')]['id']}},_0x382e83={};_0x382e83[_0xf294('0x34')]=_[_0xf294('0x36')](db[_0xf294('0x2f')][_0xf294('0x30')]);_0x382e83[_0xf294('0x37')]=_[_0xf294('0x36')](_0x3751be[_0xf294('0x37')]);_0x382e83[_0xf294('0x38')]=_[_0xf294('0x47')](_0x382e83[_0xf294('0x34')],_0x382e83[_0xf294('0x37')]);_0x167ec6[_0xf294('0x39')]=_[_0xf294('0x47')](_0x382e83[_0xf294('0x34')],qs[_0xf294('0x3a')](_0x3751be[_0xf294('0x37')][_0xf294('0x3a')]));_0x167ec6[_0xf294('0x39')]=_0x167ec6[_0xf294('0x39')][_0xf294('0x3b')]?_0x167ec6[_0xf294('0x39')]:_0x382e83[_0xf294('0x34')];if(_0x3751be[_0xf294('0x37')][_0xf294('0x48')]){_0x167ec6[_0xf294('0x43')]=[{'all':!![]}];}_0x167ec6=_[_0xf294('0x49')]({},_0x167ec6,_0x3751be['options']);return db['Schedule'][_0xf294('0x4a')](_0x167ec6)[_0xf294('0x24')](handleEntityNotFound(_0x406e49,null))[_0xf294('0x24')](respondWithResult(_0x406e49,null))[_0xf294('0x45')](handleError(_0x406e49,null));};exports[_0xf294('0x4b')]=function(_0x112da,_0x5b438a){return db[_0xf294('0x2f')][_0xf294('0x4b')](_0x112da['body'],{})[_0xf294('0x24')](function(_0x397ed9){var _0x4cc73d=_0x112da[_0xf294('0x4c')][_0xf294('0x26')]({'plain':!![]});if(!_0x4cc73d)throw new Error(_0xf294('0x4d'));if(_0x4cc73d[_0xf294('0x4e')]==='user'){var _0x5099e8=_0x397ed9[_0xf294('0x26')]({'plain':!![]});var _0x22a4bc=_0xf294('0x27');return db[_0xf294('0x4f')][_0xf294('0x4a')]({'where':{'name':_0x22a4bc,'userProfileId':_0x4cc73d[_0xf294('0x50')]},'raw':!![]})[_0xf294('0x24')](function(_0x4d4578){if(_0x4d4578&&_0x4d4578[_0xf294('0x51')]===0x0){return db['UserProfileResource']['create']({'name':_0x5099e8[_0xf294('0x2c')],'resourceId':_0x5099e8['id'],'type':_0x4d4578[_0xf294('0x2c')],'sectionId':_0x4d4578['id']},{})['then'](function(){return _0x397ed9;});}else{return _0x397ed9;}})[_0xf294('0x45')](function(_0x118719){logger['error'](_0xf294('0x52'),_0x118719);throw _0x118719;});}return _0x397ed9;})['then'](respondWithResult(_0x5b438a,0xc9))['catch'](handleError(_0x5b438a,null));};exports['update']=function(_0x8ba848,_0x16dbb1){if(_0x8ba848[_0xf294('0x53')]['id']){delete _0x8ba848[_0xf294('0x53')]['id'];}return db[_0xf294('0x2f')]['find']({'where':{'id':_0x8ba848['params']['id']}})[_0xf294('0x24')](handleEntityNotFound(_0x16dbb1,null))[_0xf294('0x24')](saveUpdates(_0x8ba848[_0xf294('0x53')],null))['then'](respondWithResult(_0x16dbb1,null))[_0xf294('0x45')](handleError(_0x16dbb1,null));};exports[_0xf294('0x25')]=function(_0x1f7fce,_0x21a6b4){return db[_0xf294('0x2f')][_0xf294('0x4a')]({'where':{'id':_0x1f7fce[_0xf294('0x46')]['id']}})['then'](handleEntityNotFound(_0x21a6b4,null))[_0xf294('0x24')](removeEntity(_0x21a6b4,null))[_0xf294('0x45')](handleError(_0x21a6b4,null));};exports['run']=function(_0x10ded0,_0x598345,_0x39d01e){var _0x35b393=require(_0xf294('0x54'));return db[_0xf294('0x2f')][_0xf294('0x4a')]({'where':{'id':_0x10ded0['params']['id']},'raw':!![]})[_0xf294('0x24')](handleEntityNotFound(_0x598345,null))[_0xf294('0x24')](function(){_0x35b393[_0xf294('0x55')](_0x10ded0['params']['id']);})[_0xf294('0x24')](respondWithStatusCode(_0x598345,null))[_0xf294('0x45')](handleError(_0x598345,null));};
\ No newline at end of file
index f5bdb37..0d3e057 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf01=['Schedule','tools_schedules','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./schedule.attributes','exports','define'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0xcf01,0xf0));var _0x1cf0=function(_0x5e0914,_0x481afe){_0x5e0914=_0x5e0914-0x0;var _0x5eebff=_0xcf01[_0x5e0914];return _0x5eebff;};'use strict';var _=require(_0x1cf0('0x0'));var util=require(_0x1cf0('0x1'));var logger=require(_0x1cf0('0x2'))(_0x1cf0('0x3'));var moment=require(_0x1cf0('0x4'));var BPromise=require('bluebird');var rp=require(_0x1cf0('0x5'));var fs=require('fs');var path=require(_0x1cf0('0x6'));var rimraf=require(_0x1cf0('0x7'));var config=require(_0x1cf0('0x8'));var attributes=require(_0x1cf0('0x9'));module[_0x1cf0('0xa')]=function(_0x214c84,_0xfd2fa0){return _0x214c84[_0x1cf0('0xb')](_0x1cf0('0xc'),attributes,{'tableName':_0x1cf0('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa21e=['path','rimraf','../../config/environment','exports','define','Schedule','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x4aa9ed,_0x93e3a2){var _0x14c0a5=function(_0x22a359){while(--_0x22a359){_0x4aa9ed['push'](_0x4aa9ed['shift']());}};_0x14c0a5(++_0x93e3a2);}(_0xa21e,0x156));var _0xea21=function(_0x1b6c6d,_0x2983b0){_0x1b6c6d=_0x1b6c6d-0x0;var _0x290d9d=_0xa21e[_0x1b6c6d];return _0x290d9d;};'use strict';var _=require(_0xea21('0x0'));var util=require(_0xea21('0x1'));var logger=require(_0xea21('0x2'))(_0xea21('0x3'));var moment=require(_0xea21('0x4'));var BPromise=require('bluebird');var rp=require(_0xea21('0x5'));var fs=require('fs');var path=require(_0xea21('0x6'));var rimraf=require(_0xea21('0x7'));var config=require(_0xea21('0x8'));var attributes=require('./schedule.attributes');module[_0xea21('0x9')]=function(_0x4dc433,_0x3191ea){return _0x4dc433[_0xea21('0xa')](_0xea21('0xb'),attributes,{'tableName':'tools_schedules','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fc7f2e9..31be1e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5d4=['../../config/environment','jayson/promise','client','request','then','Schedule,\x20%s,\x20%s','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x417ee9,_0x1d007f){var _0x2071e6=function(_0x2f0a51){while(--_0x2f0a51){_0x417ee9['push'](_0x417ee9['shift']());}};_0x2071e6(++_0x1d007f);}(_0xa5d4,0x109));var _0x4a5d=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0xa5d4[_0x53ccf2];return _0x5a2964;};'use strict';var _=require(_0x4a5d('0x0'));var util=require(_0x4a5d('0x1'));var moment=require(_0x4a5d('0x2'));var BPromise=require(_0x4a5d('0x3'));var rs=require(_0x4a5d('0x4'));var fs=require('fs');var Redis=require(_0x4a5d('0x5'));var db=require(_0x4a5d('0x6'))['db'];var utils=require(_0x4a5d('0x7'));var logger=require(_0x4a5d('0x8'))(_0x4a5d('0x9'));var config=require(_0x4a5d('0xa'));var jayson=require(_0x4a5d('0xb'));var client=jayson[_0x4a5d('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ad936,_0x208657,_0x2c1022){return new BPromise(function(_0x81b911,_0x127a74){return client[_0x4a5d('0xd')](_0x4ad936,_0x2c1022)[_0x4a5d('0xe')](function(_0x152473){logger['info'](_0x4a5d('0xf'),_0x208657,_0x4a5d('0x10'));logger[_0x4a5d('0x11')](_0x4a5d('0x12'),_0x208657,_0x4a5d('0x10'),JSON[_0x4a5d('0x13')](_0x152473));if(_0x152473[_0x4a5d('0x14')]){if(_0x152473[_0x4a5d('0x14')][_0x4a5d('0x15')]===0x1f4){logger[_0x4a5d('0x14')]('Schedule,\x20%s,\x20%s',_0x208657,_0x152473[_0x4a5d('0x14')][_0x4a5d('0x16')]);return _0x127a74(_0x152473[_0x4a5d('0x14')][_0x4a5d('0x16')]);}logger[_0x4a5d('0x14')](_0x4a5d('0xf'),_0x208657,_0x152473[_0x4a5d('0x14')][_0x4a5d('0x16')]);return _0x81b911(_0x152473[_0x4a5d('0x14')]['message']);}else{logger[_0x4a5d('0x17')](_0x4a5d('0xf'),_0x208657,_0x4a5d('0x10'));_0x81b911(_0x152473[_0x4a5d('0x18')][_0x4a5d('0x16')]);}})['catch'](function(_0x448fc0){logger[_0x4a5d('0x14')]('Schedule,\x20%s,\x20%s',_0x208657,_0x448fc0);_0x127a74(_0x448fc0);});});}
\ No newline at end of file
+var _0x334a=['code','message','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Schedule,\x20%s,\x20%s','Schedule,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x6c16a4,_0x3f6dca){var _0x547541=function(_0x56d3cf){while(--_0x56d3cf){_0x6c16a4['push'](_0x6c16a4['shift']());}};_0x547541(++_0x3f6dca);}(_0x334a,0xde));var _0xa334=function(_0x9e518f,_0x790a44){_0x9e518f=_0x9e518f-0x0;var _0x2fc150=_0x334a[_0x9e518f];return _0x2fc150;};'use strict';var _=require(_0xa334('0x0'));var util=require(_0xa334('0x1'));var moment=require('moment');var BPromise=require(_0xa334('0x2'));var rs=require(_0xa334('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa334('0x4'))['db'];var utils=require(_0xa334('0x5'));var logger=require(_0xa334('0x6'))(_0xa334('0x7'));var config=require(_0xa334('0x8'));var jayson=require(_0xa334('0x9'));var client=jayson[_0xa334('0xa')][_0xa334('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1112ec,_0x4bffc3,_0x664ca5){return new BPromise(function(_0x3fce41,_0x2082f5){return client[_0xa334('0xc')](_0x1112ec,_0x664ca5)[_0xa334('0xd')](function(_0x59f84d){logger[_0xa334('0xe')](_0xa334('0xf'),_0x4bffc3,'request\x20sent');logger['debug'](_0xa334('0x10'),_0x4bffc3,_0xa334('0x11'),JSON[_0xa334('0x12')](_0x59f84d));if(_0x59f84d[_0xa334('0x13')]){if(_0x59f84d[_0xa334('0x13')][_0xa334('0x14')]===0x1f4){logger[_0xa334('0x13')]('Schedule,\x20%s,\x20%s',_0x4bffc3,_0x59f84d['error']['message']);return _0x2082f5(_0x59f84d[_0xa334('0x13')][_0xa334('0x15')]);}logger['error'](_0xa334('0xf'),_0x4bffc3,_0x59f84d[_0xa334('0x13')][_0xa334('0x15')]);return _0x3fce41(_0x59f84d[_0xa334('0x13')]['message']);}else{logger[_0xa334('0xe')]('Schedule,\x20%s,\x20%s',_0x4bffc3,_0xa334('0x11'));_0x3fce41(_0x59f84d['result'][_0xa334('0x15')]);}})['catch'](function(_0x799c1){logger[_0xa334('0x13')](_0xa334('0xf'),_0x4bffc3,_0x799c1);_0x2082f5(_0x799c1);});});}
\ No newline at end of file
index 1167224..220c461 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6db6=['../../components/auth/service','../../components/interaction/service','../../config/environment','index','get','/describe','isAuthenticated','describe','/:id','show','/:id/download','download','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x144eb9,_0x3d02cf){var _0x410544=function(_0x58cbac){while(--_0x58cbac){_0x144eb9['push'](_0x144eb9['shift']());}};_0x410544(++_0x3d02cf);}(_0x6db6,0x9d));var _0x66db=function(_0xe103f4,_0x1ffd45){_0xe103f4=_0xe103f4-0x0;var _0x6fa91a=_0x6db6[_0xe103f4];return _0x6fa91a;};'use strict';var multer=require(_0x66db('0x0'));var util=require(_0x66db('0x1'));var path=require(_0x66db('0x2'));var timeout=require(_0x66db('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x66db('0x4'));var interaction=require(_0x66db('0x5'));var config=require(_0x66db('0x6'));var controller=require('./screenRecording.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x66db('0x7')]);router[_0x66db('0x8')](_0x66db('0x9'),auth[_0x66db('0xa')](),controller[_0x66db('0xb')]);router[_0x66db('0x8')](_0x66db('0xc'),auth[_0x66db('0xa')](),controller[_0x66db('0xd')]);router[_0x66db('0x8')](_0x66db('0xe'),auth[_0x66db('0xa')](),controller[_0x66db('0xf')]);router[_0x66db('0x10')]('/',auth['isAuthenticated'](),controller[_0x66db('0x11')]);router[_0x66db('0x12')]('/:id',auth[_0x66db('0xa')](),controller[_0x66db('0x13')]);router[_0x66db('0x14')]('/:id',auth[_0x66db('0xa')](),controller[_0x66db('0x15')]);module[_0x66db('0x16')]=router;
\ No newline at end of file
+var _0x2a25=['exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./screenRecording.controller','get','isAuthenticated','index','describe','/:id','show','download','post','create','put','destroy'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2a25,0x79));var _0x52a2=function(_0x5a0c94,_0x1b06fe){_0x5a0c94=_0x5a0c94-0x0;var _0x1832e0=_0x2a25[_0x5a0c94];return _0x1832e0;};'use strict';var multer=require(_0x52a2('0x0'));var util=require(_0x52a2('0x1'));var path=require('path');var timeout=require(_0x52a2('0x2'));var express=require(_0x52a2('0x3'));var router=express['Router']();var fs_extra=require(_0x52a2('0x4'));var auth=require(_0x52a2('0x5'));var interaction=require(_0x52a2('0x6'));var config=require('../../config/environment');var controller=require(_0x52a2('0x7'));router[_0x52a2('0x8')]('/',auth[_0x52a2('0x9')](),controller[_0x52a2('0xa')]);router['get']('/describe',auth[_0x52a2('0x9')](),controller[_0x52a2('0xb')]);router[_0x52a2('0x8')](_0x52a2('0xc'),auth[_0x52a2('0x9')](),controller[_0x52a2('0xd')]);router[_0x52a2('0x8')]('/:id/download',auth[_0x52a2('0x9')](),controller[_0x52a2('0xe')]);router[_0x52a2('0xf')]('/',auth['isAuthenticated'](),controller[_0x52a2('0x10')]);router[_0x52a2('0x11')](_0x52a2('0xc'),auth[_0x52a2('0x9')](),controller['update']);router['delete'](_0x52a2('0xc'),auth[_0x52a2('0x9')](),controller[_0x52a2('0x12')]);module[_0x52a2('0x13')]=router;
\ No newline at end of file
index 21c4f85..6e1b1cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4991=['sequelize','path','exports','VIRTUAL','getDataValue','value','extname','STRING','replace','setDataValue','INTEGER','startedAt','closedAt','duration','DATE','MM-DD-YYYY\x20HH:mm','toString','createdAt','format'];(function(_0x3be2e2,_0x5c166d){var _0x53b9c5=function(_0x248aa7){while(--_0x248aa7){_0x3be2e2['push'](_0x3be2e2['shift']());}};_0x53b9c5(++_0x5c166d);}(_0x4991,0xf7));var _0x1499=function(_0x266ec6,_0x44e3ca){_0x266ec6=_0x266ec6-0x0;var _0x5f1f59=_0x4991[_0x266ec6];return _0x5f1f59;};'use strict';var Sequelize=require(_0x1499('0x0'));var moment=require('moment');var path=require(_0x1499('0x1'));var config=require('../../config/environment');module[_0x1499('0x2')]={'format':{'type':Sequelize[_0x1499('0x3')],'get':function(){return this[_0x1499('0x4')](_0x1499('0x5'))?path[_0x1499('0x6')](this[_0x1499('0x4')](_0x1499('0x5'))):undefined;}},'interactionid':{'type':Sequelize[_0x1499('0x7')]},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize[_0x1499('0x7')],'set':function(_0x1c3bd7){var _0x1c65c3=_0x1c3bd7[_0x1499('0x8')](/\\/g,'/');this[_0x1499('0x9')](_0x1499('0x5'),_0x1c65c3);}},'rating':{'type':Sequelize[_0x1499('0xa')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x1499('0xa')],'set':function(_0x48d2ca){this[_0x1499('0x9')](_0x1499('0xb'),moment()['subtract'](_0x48d2ca,'ms'));this[_0x1499('0x9')](_0x1499('0xc'),moment());this['setDataValue'](_0x1499('0xd'),_0x48d2ca);}},'startedAt':{'type':Sequelize[_0x1499('0xe')],'get':function(){return moment(this['getDataValue']('startedAt'))['format'](_0x1499('0xf'))[_0x1499('0x10')]();}},'closedAt':{'type':Sequelize[_0x1499('0xe')],'get':function(){return moment(this[_0x1499('0x4')](_0x1499('0xc')))['format']('MM-DD-YYYY\x20HH:mm')[_0x1499('0x10')]();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x1499('0x4')](_0x1499('0x11')))[_0x1499('0x12')](_0x1499('0xf'))['toString']();}},'updatedAt':{'type':Sequelize[_0x1499('0xe')],'get':function(){return moment(this[_0x1499('0x4')]('updatedAt'))[_0x1499('0x12')](_0x1499('0xf'))[_0x1499('0x10')]();}}};
\ No newline at end of file
+var _0x8ff9=['closedAt','duration','MM-DD-YYYY\x20HH:mm','toString','DATE','createdAt','format','updatedAt','sequelize','moment','path','../../config/environment','exports','VIRTUAL','getDataValue','value','extname','STRING','replace','setDataValue','INTEGER','startedAt','subtract'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x8ff9,0x1a6));var _0x98ff=function(_0x4818f0,_0x35d99e){_0x4818f0=_0x4818f0-0x0;var _0x5f9ba4=_0x8ff9[_0x4818f0];return _0x5f9ba4;};'use strict';var Sequelize=require(_0x98ff('0x0'));var moment=require(_0x98ff('0x1'));var path=require(_0x98ff('0x2'));var config=require(_0x98ff('0x3'));module[_0x98ff('0x4')]={'format':{'type':Sequelize[_0x98ff('0x5')],'get':function(){return this[_0x98ff('0x6')](_0x98ff('0x7'))?path[_0x98ff('0x8')](this[_0x98ff('0x6')](_0x98ff('0x7'))):undefined;}},'interactionid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x98ff('0x9')]},'value':{'type':Sequelize[_0x98ff('0x9')],'set':function(_0x13537e){var _0x21d840=_0x13537e[_0x98ff('0xa')](/\\/g,'/');this[_0x98ff('0xb')]('value',_0x21d840);}},'rating':{'type':Sequelize[_0x98ff('0xc')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize['INTEGER'],'set':function(_0x4bbf37){this[_0x98ff('0xb')](_0x98ff('0xd'),moment()[_0x98ff('0xe')](_0x4bbf37,'ms'));this[_0x98ff('0xb')](_0x98ff('0xf'),moment());this['setDataValue'](_0x98ff('0x10'),_0x4bbf37);}},'startedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x98ff('0x6')]('startedAt'))['format'](_0x98ff('0x11'))[_0x98ff('0x12')]();}},'closedAt':{'type':Sequelize[_0x98ff('0x13')],'get':function(){return moment(this['getDataValue'](_0x98ff('0xf')))['format'](_0x98ff('0x11'))[_0x98ff('0x12')]();}},'createdAt':{'type':Sequelize[_0x98ff('0x13')],'get':function(){return moment(this[_0x98ff('0x6')](_0x98ff('0x14')))[_0x98ff('0x15')]('MM-DD-YYYY\x20HH:mm')[_0x98ff('0x12')]();}},'updatedAt':{'type':Sequelize[_0x98ff('0x13')],'get':function(){return moment(this[_0x98ff('0x6')](_0x98ff('0x16')))[_0x98ff('0x15')](_0x98ff('0x11'))[_0x98ff('0x12')]();}}};
\ No newline at end of file
index 1b39c20..a53486c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5636=['rawAttributes','fieldName','type','key','model','differenceBy','map','format','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','ScreenRecording','count','includeAll','include','findAll','rows','catch','show','find','create','body','duration','createdAt','closedAt','value','describe','uniqueid','params','join','root','server/files/screen_recordings','%s.cypher','existsSync','secrets','recording','Sequelize','ValidationError','download','filename','extname','unlink','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','rimraf','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','set','Content-Range','reject','save','update','then','destroy','stack','name','index'];(function(_0x35ec2a,_0x574522){var _0x4fac39=function(_0x13bea7){while(--_0x13bea7){_0x35ec2a['push'](_0x35ec2a['shift']());}};_0x4fac39(++_0x574522);}(_0x5636,0x102));var _0x6563=function(_0xb85107,_0x375ff5){_0xb85107=_0xb85107-0x0;var _0x475e2a=_0x5636[_0xb85107];return _0x475e2a;};'use strict';var emlformat=require(_0x6563('0x0'));var rimraf=require(_0x6563('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x6563('0x2'));var BPromise=require(_0x6563('0x3'));var Mustache=require(_0x6563('0x4'));var util=require('util');var path=require(_0x6563('0x5'));var sox=require(_0x6563('0x6'));var csv=require(_0x6563('0x7'));var ejs=require(_0x6563('0x8'));var fs=require('fs');var fs_extra=require(_0x6563('0x9'));var _=require(_0x6563('0xa'));var squel=require(_0x6563('0xb'));var crypto=require(_0x6563('0xc'));var jsforce=require(_0x6563('0xd'));var deskjs=require(_0x6563('0xe'));var toCsv=require(_0x6563('0x7'));var querystring=require(_0x6563('0xf'));var Papa=require(_0x6563('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6563('0x11'));var as=require(_0x6563('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x6563('0x13'));var config=require(_0x6563('0x14'));var licenseUtil=require(_0x6563('0x15'));var db=require(_0x6563('0x16'))['db'];function respondWithStatusCode(_0x33816e,_0x2ed676){_0x2ed676=_0x2ed676||0xcc;return function(_0x31d3fa){if(_0x31d3fa){return _0x33816e[_0x6563('0x17')](_0x2ed676);}return _0x33816e[_0x6563('0x18')](_0x2ed676)['end']();};}function respondWithResult(_0xa0a0b6,_0x5e9329){_0x5e9329=_0x5e9329||0xc8;return function(_0x37131e){if(_0x37131e){return _0xa0a0b6[_0x6563('0x18')](_0x5e9329)[_0x6563('0x19')](_0x37131e);}};}function respondWithFilteredResult(_0x10d08c,_0x5af5d0){return function(_0x26f26e){if(_0x26f26e){var _0x11baa2=typeof _0x5af5d0[_0x6563('0x1a')]===_0x6563('0x1b')&&typeof _0x5af5d0['limit']===_0x6563('0x1b');var _0x589632=_0x26f26e['count'];var _0x47972a=_0x11baa2?0x0:_0x5af5d0[_0x6563('0x1a')];var _0x4f5609=_0x11baa2?_0x26f26e['count']:_0x5af5d0[_0x6563('0x1a')]+_0x5af5d0[_0x6563('0x1c')];var _0x17a29f;if(_0x4f5609>=_0x589632){_0x4f5609=_0x589632;_0x17a29f=0xc8;}else{_0x17a29f=0xce;}_0x10d08c[_0x6563('0x18')](_0x17a29f);return _0x10d08c[_0x6563('0x1d')](_0x6563('0x1e'),_0x47972a+'-'+_0x4f5609+'/'+_0x589632)[_0x6563('0x19')](_0x26f26e);}return null;};}function patchUpdates(_0x93a45){return function(_0x2a70f0){try{jsonpatch['apply'](_0x2a70f0,_0x93a45,!![]);}catch(_0x2f2905){return BPromise[_0x6563('0x1f')](_0x2f2905);}return _0x2a70f0[_0x6563('0x20')]();};}function saveUpdates(_0x5a335c,_0x293db2){return function(_0x5c37bb){if(_0x5c37bb){return _0x5c37bb[_0x6563('0x21')](_0x5a335c)[_0x6563('0x22')](function(_0x5610b0){return _0x5610b0;});}return null;};}function removeEntity(_0x5773e2,_0x3ab7f6){return function(_0x492f45){if(_0x492f45){return _0x492f45[_0x6563('0x23')]()[_0x6563('0x22')](function(){_0x5773e2[_0x6563('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0xd860d5,_0x51ff06){return function(_0x7ea857){if(!_0x7ea857){_0xd860d5[_0x6563('0x17')](0x194);}return _0x7ea857;};}function handleError(_0x5e5aeb,_0x365b16){_0x365b16=_0x365b16||0x1f4;return function(_0x28252d){logger['error'](_0x28252d[_0x6563('0x24')]);if(_0x28252d['name']){delete _0x28252d[_0x6563('0x25')];}_0x5e5aeb['status'](_0x365b16)['send'](_0x28252d);};}exports[_0x6563('0x26')]=function(_0x118d31,_0x17326c){var _0x2a1550={},_0x3eb23b={},_0x4b4d3b={'count':0x0,'rows':[]};var _0x3c8bd1=_['map'](db['ScreenRecording'][_0x6563('0x27')],function(_0x35af37){return{'name':_0x35af37[_0x6563('0x28')],'type':_0x35af37[_0x6563('0x29')][_0x6563('0x2a')]};});_0x3eb23b[_0x6563('0x2b')]=_[_0x6563('0x2c')](_[_0x6563('0x2d')](_0x3c8bd1,_0x6563('0x25')),[_0x6563('0x2e')]);_0x3eb23b['query']=_[_0x6563('0x2f')](_0x118d31[_0x6563('0x30')]);_0x3eb23b[_0x6563('0x31')]=_[_0x6563('0x32')](_0x3eb23b[_0x6563('0x2b')],_0x3eb23b[_0x6563('0x30')]);_0x2a1550[_0x6563('0x33')]=_['intersection'](_0x3eb23b[_0x6563('0x2b')],qs[_0x6563('0x34')](_0x118d31[_0x6563('0x30')][_0x6563('0x34')]));_0x2a1550[_0x6563('0x33')]=_0x2a1550[_0x6563('0x33')]['length']?_0x2a1550[_0x6563('0x33')]:_0x3eb23b[_0x6563('0x2b')];if(!_0x118d31[_0x6563('0x30')][_0x6563('0x35')](_0x6563('0x36'))){_0x2a1550[_0x6563('0x1c')]=qs[_0x6563('0x1c')](_0x118d31['query'][_0x6563('0x1c')]);_0x2a1550[_0x6563('0x1a')]=qs['offset'](_0x118d31[_0x6563('0x30')][_0x6563('0x1a')]);}_0x2a1550['order']=qs['sort'](_0x118d31[_0x6563('0x30')][_0x6563('0x37')]);_0x2a1550[_0x6563('0x38')]=qs[_0x6563('0x31')](_['pick'](_0x118d31[_0x6563('0x30')],_0x3eb23b[_0x6563('0x31')]),_0x3c8bd1);if(_0x118d31['query'][_0x6563('0x39')]){_0x2a1550[_0x6563('0x38')]=_[_0x6563('0x3a')](_0x2a1550[_0x6563('0x38')],{'$or':_[_0x6563('0x2d')](_0x3c8bd1,function(_0x1f6341){if(_0x1f6341[_0x6563('0x29')]!==_0x6563('0x3b')){var _0x2e4177={};_0x2e4177[_0x1f6341['name']]={'$like':'%'+_0x118d31[_0x6563('0x30')][_0x6563('0x39')]+'%'};return _0x2e4177;}})});}_0x2a1550=_[_0x6563('0x3a')]({},_0x2a1550,_0x118d31[_0x6563('0x3c')]);var _0x5ebe88={'where':_0x2a1550['where']};return db[_0x6563('0x3d')][_0x6563('0x3e')](_0x5ebe88)[_0x6563('0x22')](function(_0x5db29d){_0x4b4d3b[_0x6563('0x3e')]=_0x5db29d;if(_0x118d31['query'][_0x6563('0x3f')]){_0x2a1550[_0x6563('0x40')]=[{'all':!![]}];}return db['ScreenRecording'][_0x6563('0x41')](_0x2a1550);})[_0x6563('0x22')](function(_0xea186){_0x4b4d3b[_0x6563('0x42')]=_0xea186;return _0x4b4d3b;})[_0x6563('0x22')](respondWithFilteredResult(_0x17326c,_0x2a1550))[_0x6563('0x43')](handleError(_0x17326c,null));};exports[_0x6563('0x44')]=function(_0x32932f,_0xd30789){var _0xfc7eb1={'raw':![],'where':{'id':_0x32932f['params']['id']}},_0x2acb52={};_0x2acb52['model']=_[_0x6563('0x2f')](db[_0x6563('0x3d')][_0x6563('0x27')]);_0x2acb52[_0x6563('0x30')]=_[_0x6563('0x2f')](_0x32932f[_0x6563('0x30')]);_0x2acb52[_0x6563('0x31')]=_['intersection'](_0x2acb52[_0x6563('0x2b')],_0x2acb52[_0x6563('0x30')]);_0xfc7eb1[_0x6563('0x33')]=_[_0x6563('0x32')](_0x2acb52['model'],qs[_0x6563('0x34')](_0x32932f[_0x6563('0x30')][_0x6563('0x34')]));_0xfc7eb1[_0x6563('0x33')]=_0xfc7eb1[_0x6563('0x33')]['length']?_0xfc7eb1['attributes']:_0x2acb52[_0x6563('0x2b')];if(_0x32932f[_0x6563('0x30')][_0x6563('0x3f')]){_0xfc7eb1['include']=[{'all':!![]}];}_0xfc7eb1=_[_0x6563('0x3a')]({},_0xfc7eb1,_0x32932f[_0x6563('0x3c')]);return db[_0x6563('0x3d')][_0x6563('0x45')](_0xfc7eb1)['then'](handleEntityNotFound(_0xd30789,null))[_0x6563('0x22')](respondWithResult(_0xd30789,null))[_0x6563('0x43')](handleError(_0xd30789,null));};exports[_0x6563('0x46')]=function(_0x55e927,_0x35b0ce){return db['ScreenRecording'][_0x6563('0x46')](_0x55e927['body'],{})['then'](respondWithResult(_0x35b0ce,0xc9))[_0x6563('0x43')](handleError(_0x35b0ce,null));};exports[_0x6563('0x21')]=function(_0x2ebab0,_0xb84325){if(_0x2ebab0[_0x6563('0x47')]['id']){delete _0x2ebab0[_0x6563('0x47')]['id'];}delete _0x2ebab0[_0x6563('0x47')][_0x6563('0x48')];delete _0x2ebab0[_0x6563('0x47')][_0x6563('0x49')];delete _0x2ebab0['body'][_0x6563('0x4a')];delete _0x2ebab0['body'][_0x6563('0x4b')];return db[_0x6563('0x3d')][_0x6563('0x45')]({'where':{'id':_0x2ebab0['params']['id']}})[_0x6563('0x22')](handleEntityNotFound(_0xb84325,null))[_0x6563('0x22')](saveUpdates(_0x2ebab0['body'],null))[_0x6563('0x22')](respondWithResult(_0xb84325,null))[_0x6563('0x43')](handleError(_0xb84325,null));};exports[_0x6563('0x4c')]=function(_0x3883f3,_0xbd920a){return db['ScreenRecording'][_0x6563('0x4c')]()['then'](respondWithResult(_0xbd920a,null))[_0x6563('0x43')](handleError(_0xbd920a,null));};exports['download']=function(_0xd2ed6b,_0x5992c8,_0x55e002){var _0x5c8274=require('../../components/encryptor');var _0x270667=![];var _0x5ade56={};if(_0xd2ed6b[_0x6563('0x30')]['type']&&_0xd2ed6b[_0x6563('0x30')][_0x6563('0x29')]===_0x6563('0x4d')){_0x5ade56[_0x6563('0x4d')]=_0xd2ed6b[_0x6563('0x4e')]['id'];}else{_0x5ade56['id']=_0xd2ed6b[_0x6563('0x4e')]['id'];}return db[_0x6563('0x3d')][_0x6563('0x45')]({'where':_0x5ade56,'attributes':['id',_0x6563('0x4b')],'raw':!![]})['then'](handleEntityNotFound(_0x5992c8,null))[_0x6563('0x22')](function(_0x28b1c6){if(_0x28b1c6){var _0x97ee3=path[_0x6563('0x4f')](config[_0x6563('0x50')],_0x6563('0x51'),_0x28b1c6[_0x6563('0x4b')]);var _0x32c715=util[_0x6563('0x2e')](_0x6563('0x52'),_0x97ee3);if(fs[_0x6563('0x53')](_0x32c715)){_0x270667=!![];return _0x5c8274['decryptFile'](_0x32c715,_0x97ee3,config[_0x6563('0x54')][_0x6563('0x55')])[_0x6563('0x22')](function(){return _0x28b1c6;});}return _0x28b1c6;}})[_0x6563('0x22')](function(_0x46c26c){if(_0x46c26c){var _0x3c06ac=path[_0x6563('0x4f')](config[_0x6563('0x50')],'server/files/screen_recordings',_0x46c26c[_0x6563('0x4b')]);if(!fs['existsSync'](_0x3c06ac)){throw new db[(_0x6563('0x56'))][(_0x6563('0x57'))]('ScreenRecording\x20not\x20found');}if(_0x46c26c['filename']){return _0x5992c8[_0x6563('0x58')](_0x3c06ac,_0x46c26c[_0x6563('0x59')]+path[_0x6563('0x5a')](_0x3c06ac),function(){if(_0x270667){fs[_0x6563('0x5b')](_0x3c06ac);}});}else{return _0x5992c8['download'](_0x3c06ac,function(_0x2a3df0){if(_0x270667){fs['unlink'](_0x3c06ac);}});}}})[_0x6563('0x43')](function(_0x29aecb){if(_0x29aecb['message']==='ScreenRecording\x20not\x20found'){_0x5992c8[_0x6563('0x18')](0x194)['send']('Not\x20found');}else{return handleError(_0x5992c8,null);}});};exports[_0x6563('0x23')]=function(_0x49d6a5,_0x356010){return db[_0x6563('0x3d')][_0x6563('0x45')]({'where':{'id':_0x49d6a5[_0x6563('0x4e')]['id']}})['then'](function(_0x83d5c){if(_[_0x6563('0x5c')](_0x83d5c)){throw new ReferenceError(_0x6563('0x5d'));}return _0x83d5c;})[_0x6563('0x22')](function(_0x3ffb7f){var _0x2d4694=path[_0x6563('0x4f')](config[_0x6563('0x50')],'server/files/screen_recordings',_0x3ffb7f['value']);logger[_0x6563('0x5e')](_0x6563('0x5f'),_0x2d4694);if(!_['isNil'](_0x3ffb7f['value'])&&fs['existsSync'](_0x2d4694)){logger[_0x6563('0x5e')](_0x6563('0x60')+_0x2d4694+_0x6563('0x61'));fs[_0x6563('0x62')](_0x2d4694);}_0x2d4694=_0x2d4694+'.cypher';if(!_[_0x6563('0x5c')](_0x3ffb7f[_0x6563('0x4b')])&&fs[_0x6563('0x53')](_0x2d4694)){logger[_0x6563('0x5e')](_0x6563('0x60')+_0x2d4694+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x2d4694);}return _0x3ffb7f;})[_0x6563('0x22')](function(_0x1d7b5d){if(!_0x1d7b5d)throw new InternalError();return _0x1d7b5d[_0x6563('0x23')]();})['then'](function(){_0x356010[_0x6563('0x18')](0xcc)['end']();})[_0x6563('0x43')](handleError(_0x356010,null));};
\ No newline at end of file
+var _0xd6d6=['../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','ScreenRecording','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','include','findAll','catch','find','create','body','duration','createdAt','closedAt','value','params','describe','download','../../components/encryptor','uniqueid','join','root','server/files/screen_recordings','format','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','Entity\x20not\x20found','info','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','isNil','File:\x20\x22','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x531586,_0x19f51a){var _0x3e6748=function(_0x287912){while(--_0x287912){_0x531586['push'](_0x531586['shift']());}};_0x3e6748(++_0x19f51a);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x28c6cc,_0x44487c){_0x28c6cc=_0x28c6cc-0x0;var _0x2c3014=_0xd6d6[_0x28c6cc];return _0x2c3014;};'use strict';var emlformat=require(_0x6d6d('0x0'));var rimraf=require(_0x6d6d('0x1'));var zipdir=require(_0x6d6d('0x2'));var jsonpatch=require(_0x6d6d('0x3'));var rp=require('request-promise');var moment=require(_0x6d6d('0x4'));var BPromise=require(_0x6d6d('0x5'));var Mustache=require(_0x6d6d('0x6'));var util=require(_0x6d6d('0x7'));var path=require(_0x6d6d('0x8'));var sox=require(_0x6d6d('0x9'));var csv=require(_0x6d6d('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6d6d('0xb'));var _=require(_0x6d6d('0xc'));var squel=require(_0x6d6d('0xd'));var crypto=require(_0x6d6d('0xe'));var jsforce=require(_0x6d6d('0xf'));var deskjs=require(_0x6d6d('0x10'));var toCsv=require(_0x6d6d('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x6d6d('0x11'));var authService=require(_0x6d6d('0x12'));var qs=require(_0x6d6d('0x13'));var as=require(_0x6d6d('0x14'));var hardwareService=require(_0x6d6d('0x15'));var logger=require('../../config/logger')(_0x6d6d('0x16'));var utils=require(_0x6d6d('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x6d6d('0x18'))['db'];function respondWithStatusCode(_0x32146d,_0xe61c36){_0xe61c36=_0xe61c36||0xcc;return function(_0x3f8542){if(_0x3f8542){return _0x32146d[_0x6d6d('0x19')](_0xe61c36);}return _0x32146d[_0x6d6d('0x1a')](_0xe61c36)[_0x6d6d('0x1b')]();};}function respondWithResult(_0x2cb2dd,_0x5f4154){_0x5f4154=_0x5f4154||0xc8;return function(_0xd09ea7){if(_0xd09ea7){return _0x2cb2dd[_0x6d6d('0x1a')](_0x5f4154)[_0x6d6d('0x1c')](_0xd09ea7);}};}function respondWithFilteredResult(_0xa3b05d,_0x29cbd8){return function(_0x5d80c0){if(_0x5d80c0){var _0x2e6fdb=typeof _0x29cbd8['offset']===_0x6d6d('0x1d')&&typeof _0x29cbd8[_0x6d6d('0x1e')]===_0x6d6d('0x1d');var _0x4bb3d1=_0x5d80c0['count'];var _0x9e1e18=_0x2e6fdb?0x0:_0x29cbd8[_0x6d6d('0x1f')];var _0x2b59d4=_0x2e6fdb?_0x5d80c0[_0x6d6d('0x20')]:_0x29cbd8['offset']+_0x29cbd8['limit'];var _0x474873;if(_0x2b59d4>=_0x4bb3d1){_0x2b59d4=_0x4bb3d1;_0x474873=0xc8;}else{_0x474873=0xce;}_0xa3b05d['status'](_0x474873);return _0xa3b05d[_0x6d6d('0x21')](_0x6d6d('0x22'),_0x9e1e18+'-'+_0x2b59d4+'/'+_0x4bb3d1)[_0x6d6d('0x1c')](_0x5d80c0);}return null;};}function patchUpdates(_0x450352){return function(_0x40d35b){try{jsonpatch[_0x6d6d('0x23')](_0x40d35b,_0x450352,!![]);}catch(_0x164c67){return BPromise[_0x6d6d('0x24')](_0x164c67);}return _0x40d35b[_0x6d6d('0x25')]();};}function saveUpdates(_0x6f64e3,_0x24b10d){return function(_0x6e58e3){if(_0x6e58e3){return _0x6e58e3[_0x6d6d('0x26')](_0x6f64e3)[_0x6d6d('0x27')](function(_0x1f7f88){return _0x1f7f88;});}return null;};}function removeEntity(_0x25a02e,_0xced622){return function(_0x583b10){if(_0x583b10){return _0x583b10[_0x6d6d('0x28')]()[_0x6d6d('0x27')](function(){_0x25a02e[_0x6d6d('0x1a')](0xcc)[_0x6d6d('0x1b')]();});}};}function handleEntityNotFound(_0xf0df7f,_0x12fab2){return function(_0x554f8e){if(!_0x554f8e){_0xf0df7f[_0x6d6d('0x19')](0x194);}return _0x554f8e;};}function handleError(_0x2b5e31,_0x235451){_0x235451=_0x235451||0x1f4;return function(_0x126ac8){logger[_0x6d6d('0x29')](_0x126ac8[_0x6d6d('0x2a')]);if(_0x126ac8[_0x6d6d('0x2b')]){delete _0x126ac8['name'];}_0x2b5e31[_0x6d6d('0x1a')](_0x235451)[_0x6d6d('0x2c')](_0x126ac8);};}exports['index']=function(_0x553645,_0x3edcce){var _0x5273cd={},_0x8a9a84={},_0x57341f={'count':0x0,'rows':[]};var _0xde3272=_[_0x6d6d('0x2d')](db[_0x6d6d('0x2e')][_0x6d6d('0x2f')],function(_0x64d1f7){return{'name':_0x64d1f7[_0x6d6d('0x30')],'type':_0x64d1f7[_0x6d6d('0x31')][_0x6d6d('0x32')]};});_0x8a9a84[_0x6d6d('0x33')]=_[_0x6d6d('0x34')](_['map'](_0xde3272,_0x6d6d('0x2b')),['format']);_0x8a9a84[_0x6d6d('0x35')]=_[_0x6d6d('0x36')](_0x553645[_0x6d6d('0x35')]);_0x8a9a84[_0x6d6d('0x37')]=_['intersection'](_0x8a9a84[_0x6d6d('0x33')],_0x8a9a84['query']);_0x5273cd[_0x6d6d('0x38')]=_[_0x6d6d('0x39')](_0x8a9a84['model'],qs[_0x6d6d('0x3a')](_0x553645[_0x6d6d('0x35')][_0x6d6d('0x3a')]));_0x5273cd[_0x6d6d('0x38')]=_0x5273cd[_0x6d6d('0x38')][_0x6d6d('0x3b')]?_0x5273cd[_0x6d6d('0x38')]:_0x8a9a84[_0x6d6d('0x33')];if(!_0x553645[_0x6d6d('0x35')][_0x6d6d('0x3c')](_0x6d6d('0x3d'))){_0x5273cd[_0x6d6d('0x1e')]=qs[_0x6d6d('0x1e')](_0x553645[_0x6d6d('0x35')]['limit']);_0x5273cd[_0x6d6d('0x1f')]=qs[_0x6d6d('0x1f')](_0x553645[_0x6d6d('0x35')][_0x6d6d('0x1f')]);}_0x5273cd['order']=qs['sort'](_0x553645[_0x6d6d('0x35')][_0x6d6d('0x3e')]);_0x5273cd[_0x6d6d('0x3f')]=qs['filters'](_[_0x6d6d('0x40')](_0x553645[_0x6d6d('0x35')],_0x8a9a84[_0x6d6d('0x37')]),_0xde3272);if(_0x553645[_0x6d6d('0x35')]['filter']){_0x5273cd['where']=_['merge'](_0x5273cd[_0x6d6d('0x3f')],{'$or':_[_0x6d6d('0x2d')](_0xde3272,function(_0x33c8f2){if(_0x33c8f2[_0x6d6d('0x31')]!=='VIRTUAL'){var _0x253416={};_0x253416[_0x33c8f2[_0x6d6d('0x2b')]]={'$like':'%'+_0x553645[_0x6d6d('0x35')][_0x6d6d('0x41')]+'%'};return _0x253416;}})});}_0x5273cd=_[_0x6d6d('0x42')]({},_0x5273cd,_0x553645[_0x6d6d('0x43')]);var _0x4b457d={'where':_0x5273cd[_0x6d6d('0x3f')]};return db[_0x6d6d('0x2e')][_0x6d6d('0x20')](_0x4b457d)[_0x6d6d('0x27')](function(_0x32275b){_0x57341f[_0x6d6d('0x20')]=_0x32275b;if(_0x553645[_0x6d6d('0x35')]['includeAll']){_0x5273cd[_0x6d6d('0x44')]=[{'all':!![]}];}return db[_0x6d6d('0x2e')][_0x6d6d('0x45')](_0x5273cd);})[_0x6d6d('0x27')](function(_0xe1aa77){_0x57341f['rows']=_0xe1aa77;return _0x57341f;})[_0x6d6d('0x27')](respondWithFilteredResult(_0x3edcce,_0x5273cd))[_0x6d6d('0x46')](handleError(_0x3edcce,null));};exports['show']=function(_0x452de2,_0x50dc17){var _0x15bf62={'raw':![],'where':{'id':_0x452de2['params']['id']}},_0x43c03c={};_0x43c03c[_0x6d6d('0x33')]=_[_0x6d6d('0x36')](db[_0x6d6d('0x2e')][_0x6d6d('0x2f')]);_0x43c03c[_0x6d6d('0x35')]=_['keys'](_0x452de2['query']);_0x43c03c[_0x6d6d('0x37')]=_['intersection'](_0x43c03c['model'],_0x43c03c[_0x6d6d('0x35')]);_0x15bf62[_0x6d6d('0x38')]=_[_0x6d6d('0x39')](_0x43c03c['model'],qs[_0x6d6d('0x3a')](_0x452de2['query'][_0x6d6d('0x3a')]));_0x15bf62[_0x6d6d('0x38')]=_0x15bf62[_0x6d6d('0x38')][_0x6d6d('0x3b')]?_0x15bf62[_0x6d6d('0x38')]:_0x43c03c[_0x6d6d('0x33')];if(_0x452de2[_0x6d6d('0x35')]['includeAll']){_0x15bf62[_0x6d6d('0x44')]=[{'all':!![]}];}_0x15bf62=_[_0x6d6d('0x42')]({},_0x15bf62,_0x452de2[_0x6d6d('0x43')]);return db[_0x6d6d('0x2e')][_0x6d6d('0x47')](_0x15bf62)[_0x6d6d('0x27')](handleEntityNotFound(_0x50dc17,null))[_0x6d6d('0x27')](respondWithResult(_0x50dc17,null))[_0x6d6d('0x46')](handleError(_0x50dc17,null));};exports[_0x6d6d('0x48')]=function(_0x5e4c04,_0x4d78bb){return db[_0x6d6d('0x2e')][_0x6d6d('0x48')](_0x5e4c04[_0x6d6d('0x49')],{})[_0x6d6d('0x27')](respondWithResult(_0x4d78bb,0xc9))[_0x6d6d('0x46')](handleError(_0x4d78bb,null));};exports['update']=function(_0x47170d,_0x27b396){if(_0x47170d[_0x6d6d('0x49')]['id']){delete _0x47170d[_0x6d6d('0x49')]['id'];}delete _0x47170d[_0x6d6d('0x49')][_0x6d6d('0x4a')];delete _0x47170d[_0x6d6d('0x49')][_0x6d6d('0x4b')];delete _0x47170d[_0x6d6d('0x49')][_0x6d6d('0x4c')];delete _0x47170d[_0x6d6d('0x49')][_0x6d6d('0x4d')];return db['ScreenRecording'][_0x6d6d('0x47')]({'where':{'id':_0x47170d[_0x6d6d('0x4e')]['id']}})[_0x6d6d('0x27')](handleEntityNotFound(_0x27b396,null))[_0x6d6d('0x27')](saveUpdates(_0x47170d[_0x6d6d('0x49')],null))['then'](respondWithResult(_0x27b396,null))[_0x6d6d('0x46')](handleError(_0x27b396,null));};exports[_0x6d6d('0x4f')]=function(_0x45340b,_0x4e4c3e){return db['ScreenRecording'][_0x6d6d('0x4f')]()['then'](respondWithResult(_0x4e4c3e,null))[_0x6d6d('0x46')](handleError(_0x4e4c3e,null));};exports[_0x6d6d('0x50')]=function(_0x32aaae,_0x268361,_0x4777a5){var _0x18e2de=require(_0x6d6d('0x51'));var _0x26c23a=![];var _0x1a8f33={};if(_0x32aaae[_0x6d6d('0x35')]['type']&&_0x32aaae[_0x6d6d('0x35')][_0x6d6d('0x31')]===_0x6d6d('0x52')){_0x1a8f33[_0x6d6d('0x52')]=_0x32aaae[_0x6d6d('0x4e')]['id'];}else{_0x1a8f33['id']=_0x32aaae[_0x6d6d('0x4e')]['id'];}return db[_0x6d6d('0x2e')]['find']({'where':_0x1a8f33,'attributes':['id','value'],'raw':!![]})[_0x6d6d('0x27')](handleEntityNotFound(_0x268361,null))[_0x6d6d('0x27')](function(_0x5cc644){if(_0x5cc644){var _0x3e98a0=path[_0x6d6d('0x53')](config[_0x6d6d('0x54')],_0x6d6d('0x55'),_0x5cc644[_0x6d6d('0x4d')]);var _0xc6b96e=util[_0x6d6d('0x56')](_0x6d6d('0x57'),_0x3e98a0);if(fs[_0x6d6d('0x58')](_0xc6b96e)){_0x26c23a=!![];return _0x18e2de[_0x6d6d('0x59')](_0xc6b96e,_0x3e98a0,config[_0x6d6d('0x5a')][_0x6d6d('0x5b')])[_0x6d6d('0x27')](function(){return _0x5cc644;});}return _0x5cc644;}})[_0x6d6d('0x27')](function(_0x3065ea){if(_0x3065ea){var _0x50d8dd=path[_0x6d6d('0x53')](config[_0x6d6d('0x54')],'server/files/screen_recordings',_0x3065ea[_0x6d6d('0x4d')]);if(!fs[_0x6d6d('0x58')](_0x50d8dd)){throw new db[(_0x6d6d('0x5c'))][(_0x6d6d('0x5d'))](_0x6d6d('0x5e'));}if(_0x3065ea[_0x6d6d('0x5f')]){return _0x268361[_0x6d6d('0x50')](_0x50d8dd,_0x3065ea[_0x6d6d('0x5f')]+path[_0x6d6d('0x60')](_0x50d8dd),function(){if(_0x26c23a){fs['unlink'](_0x50d8dd);}});}else{return _0x268361['download'](_0x50d8dd,function(_0x22c3a1){if(_0x26c23a){fs[_0x6d6d('0x61')](_0x50d8dd);}});}}})[_0x6d6d('0x46')](function(_0x5de33f){if(_0x5de33f['message']===_0x6d6d('0x5e')){_0x268361['status'](0x194)[_0x6d6d('0x2c')]('Not\x20found');}else{return handleError(_0x268361,null);}});};exports[_0x6d6d('0x28')]=function(_0x367a6f,_0x21f14c){return db[_0x6d6d('0x2e')][_0x6d6d('0x47')]({'where':{'id':_0x367a6f[_0x6d6d('0x4e')]['id']}})['then'](function(_0x41e576){if(_['isNil'](_0x41e576)){throw new ReferenceError(_0x6d6d('0x62'));}return _0x41e576;})['then'](function(_0x2a21d8){var _0x3e48f7=path[_0x6d6d('0x53')](config[_0x6d6d('0x54')],_0x6d6d('0x55'),_0x2a21d8[_0x6d6d('0x4d')]);logger[_0x6d6d('0x63')]('cancellazione\x20fisica\x20documento\x20%s',_0x3e48f7);if(!_['isNil'](_0x2a21d8[_0x6d6d('0x4d')])&&fs['existsSync'](_0x3e48f7)){logger[_0x6d6d('0x63')]('File:\x20\x22'+_0x3e48f7+_0x6d6d('0x64'));fs[_0x6d6d('0x65')](_0x3e48f7);}_0x3e48f7=_0x3e48f7+_0x6d6d('0x66');if(!_[_0x6d6d('0x67')](_0x2a21d8[_0x6d6d('0x4d')])&&fs[_0x6d6d('0x58')](_0x3e48f7)){logger['info'](_0x6d6d('0x68')+_0x3e48f7+_0x6d6d('0x64'));fs[_0x6d6d('0x65')](_0x3e48f7);}return _0x2a21d8;})[_0x6d6d('0x27')](function(_0x1ba731){if(!_0x1ba731)throw new InternalError();return _0x1ba731[_0x6d6d('0x28')]();})[_0x6d6d('0x27')](function(){_0x21f14c['status'](0xcc)[_0x6d6d('0x1b')]();})[_0x6d6d('0x46')](handleError(_0x21f14c,null));};
\ No newline at end of file
index 86dc7b0..64b3d5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9073=['define','ScreenRecording','screen_recordings','interactionid','util','../../config/logger','moment','bluebird','request-promise','./screenRecording.attributes','exports'];(function(_0x59bcb1,_0x5a4b6c){var _0x4a737f=function(_0x546a49){while(--_0x546a49){_0x59bcb1['push'](_0x59bcb1['shift']());}};_0x4a737f(++_0x5a4b6c);}(_0x9073,0x10c));var _0x3907=function(_0x587439,_0x153c32){_0x587439=_0x587439-0x0;var _0x138c81=_0x9073[_0x587439];return _0x138c81;};'use strict';var _=require('lodash');var util=require(_0x3907('0x0'));var logger=require(_0x3907('0x1'))('api');var moment=require(_0x3907('0x2'));var BPromise=require(_0x3907('0x3'));var rp=require(_0x3907('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x3907('0x5'));module[_0x3907('0x6')]=function(_0x328f28,_0x514004){return _0x328f28[_0x3907('0x7')](_0x3907('0x8'),attributes,{'tableName':_0x3907('0x9'),'paranoid':![],'indexes':[{'name':'interactionid','fields':[_0x3907('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xddb3=['./screenRecording.attributes','exports','define','ScreenRecording','screen_recordings','interactionid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x56899e,_0x5b2729){var _0x50261b=function(_0x259b08){while(--_0x259b08){_0x56899e['push'](_0x56899e['shift']());}};_0x50261b(++_0x5b2729);}(_0xddb3,0x1d7));var _0x3ddb=function(_0x5ec21a,_0x19a8c8){_0x5ec21a=_0x5ec21a-0x0;var _0x151db5=_0xddb3[_0x5ec21a];return _0x151db5;};'use strict';var _=require(_0x3ddb('0x0'));var util=require(_0x3ddb('0x1'));var logger=require(_0x3ddb('0x2'))(_0x3ddb('0x3'));var moment=require(_0x3ddb('0x4'));var BPromise=require(_0x3ddb('0x5'));var rp=require(_0x3ddb('0x6'));var fs=require('fs');var path=require(_0x3ddb('0x7'));var rimraf=require('rimraf');var config=require(_0x3ddb('0x8'));var attributes=require(_0x3ddb('0x9'));module[_0x3ddb('0xa')]=function(_0x371792,_0x3215ba){return _0x371792[_0x3ddb('0xb')](_0x3ddb('0xc'),attributes,{'tableName':_0x3ddb('0xd'),'paranoid':![],'indexes':[{'name':'interactionid','fields':[_0x3ddb('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 1466110..75b275f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe1a=['jayson/promise','client','request','then','info','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','error','code','message','lodash','util','moment','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x476d15,_0x563a4d){var _0x5d4b5c=function(_0x17f1eb){while(--_0x17f1eb){_0x476d15['push'](_0x476d15['shift']());}};_0x5d4b5c(++_0x563a4d);}(_0xfe1a,0xa4));var _0xafe1=function(_0x4fde08,_0x463a36){_0x4fde08=_0x4fde08-0x0;var _0x12e725=_0xfe1a[_0x4fde08];return _0x12e725;};'use strict';var _=require(_0xafe1('0x0'));var util=require(_0xafe1('0x1'));var moment=require(_0xafe1('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xafe1('0x3'));var db=require(_0xafe1('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xafe1('0x5'))(_0xafe1('0x6'));var config=require('../../config/environment');var jayson=require(_0xafe1('0x7'));var client=jayson[_0xafe1('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x51da69,_0x38b8f1,_0xc448c1){return new BPromise(function(_0x260c9c,_0x1117ca){return client[_0xafe1('0x9')](_0x51da69,_0xc448c1)[_0xafe1('0xa')](function(_0x38fbc5){logger[_0xafe1('0xb')](_0xafe1('0xc'),_0x38b8f1,_0xafe1('0xd'));logger[_0xafe1('0xe')](_0xafe1('0xf'),_0x38b8f1,'request\x20sent',JSON['stringify'](_0x38fbc5));if(_0x38fbc5['error']){if(_0x38fbc5[_0xafe1('0x10')][_0xafe1('0x11')]===0x1f4){logger[_0xafe1('0x10')]('ScreenRecording,\x20%s,\x20%s',_0x38b8f1,_0x38fbc5[_0xafe1('0x10')]['message']);return _0x1117ca(_0x38fbc5[_0xafe1('0x10')][_0xafe1('0x12')]);}logger['error'](_0xafe1('0xc'),_0x38b8f1,_0x38fbc5[_0xafe1('0x10')][_0xafe1('0x12')]);return _0x260c9c(_0x38fbc5[_0xafe1('0x10')][_0xafe1('0x12')]);}else{logger[_0xafe1('0xb')]('ScreenRecording,\x20%s,\x20%s',_0x38b8f1,_0xafe1('0xd'));_0x260c9c(_0x38fbc5['result'][_0xafe1('0x12')]);}})['catch'](function(_0x3a893b){logger['error'](_0xafe1('0xc'),_0x38b8f1,_0x3a893b);_0x1117ca(_0x3a893b);});});}
\ No newline at end of file
+var _0x9767=['lodash','util','moment','ioredis','../../config/logger','rpc','jayson/promise','client','request','info','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ScreenRecording,\x20%s,\x20%s','catch'];(function(_0x544d66,_0xabcbd9){var _0x46a80d=function(_0x48311d){while(--_0x48311d){_0x544d66['push'](_0x544d66['shift']());}};_0x46a80d(++_0xabcbd9);}(_0x9767,0x1db));var _0x7976=function(_0x1933f9,_0x239e5f){_0x1933f9=_0x1933f9-0x0;var _0x5b1657=_0x9767[_0x1933f9];return _0x5b1657;};'use strict';var _=require(_0x7976('0x0'));var util=require(_0x7976('0x1'));var moment=require(_0x7976('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7976('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x7976('0x4'))(_0x7976('0x5'));var config=require('../../config/environment');var jayson=require(_0x7976('0x6'));var client=jayson[_0x7976('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3b3bc3,_0x14a210,_0x2de536){return new BPromise(function(_0x4d2e39,_0x4b42ee){return client[_0x7976('0x8')](_0x3b3bc3,_0x2de536)['then'](function(_0x39ef3d){logger[_0x7976('0x9')]('ScreenRecording,\x20%s,\x20%s',_0x14a210,_0x7976('0xa'));logger[_0x7976('0xb')](_0x7976('0xc'),_0x14a210,_0x7976('0xa'),JSON[_0x7976('0xd')](_0x39ef3d));if(_0x39ef3d[_0x7976('0xe')]){if(_0x39ef3d['error'][_0x7976('0xf')]===0x1f4){logger[_0x7976('0xe')]('ScreenRecording,\x20%s,\x20%s',_0x14a210,_0x39ef3d[_0x7976('0xe')][_0x7976('0x10')]);return _0x4b42ee(_0x39ef3d[_0x7976('0xe')][_0x7976('0x10')]);}logger[_0x7976('0xe')](_0x7976('0x11'),_0x14a210,_0x39ef3d[_0x7976('0xe')]['message']);return _0x4d2e39(_0x39ef3d[_0x7976('0xe')]['message']);}else{logger[_0x7976('0x9')](_0x7976('0x11'),_0x14a210,_0x7976('0xa'));_0x4d2e39(_0x39ef3d['result']['message']);}})[_0x7976('0x12')](function(_0x3f142f){logger[_0x7976('0xe')](_0x7976('0x11'),_0x14a210,_0x3f142f);_0x4b42ee(_0x3f142f);});});}
\ No newline at end of file
index 7f3cee3..13b4e5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72d8=['/:id/preferred','single','addPreferred','addFavicon','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/now','getDate','/:id','show','getLogoLogin','/:id/gdpr','gdpr','getPreferred','/:id/favicon','getFavicon','diskStorage','join','server/files/images/logos/','format','%s%s','logo','extname','originalname','/:id/logo','file','addLogo','root','logologin','post','/:id/logo_login','addLogoLogin','preferred'];(function(_0x378fc7,_0x5181a3){var _0x44dfec=function(_0x2e0f62){while(--_0x2e0f62){_0x378fc7['push'](_0x378fc7['shift']());}};_0x44dfec(++_0x5181a3);}(_0x72d8,0x11b));var _0x872d=function(_0x1abb09,_0x18ee91){_0x1abb09=_0x1abb09-0x0;var _0xea1c07=_0x72d8[_0x1abb09];return _0xea1c07;};'use strict';var multer=require(_0x872d('0x0'));var util=require(_0x872d('0x1'));var path=require(_0x872d('0x2'));var timeout=require(_0x872d('0x3'));var express=require(_0x872d('0x4'));var router=express[_0x872d('0x5')]();var fs_extra=require(_0x872d('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x872d('0x7'));var config=require(_0x872d('0x8'));var controller=require('./setting.controller');router['get']('/',auth[_0x872d('0x9')](),controller[_0x872d('0xa')]);router[_0x872d('0xb')](_0x872d('0xc'),controller[_0x872d('0xd')]);router[_0x872d('0xb')](_0x872d('0xe'),controller[_0x872d('0xf')]);router[_0x872d('0xb')]('/:id/logo',controller['getLogo']);router[_0x872d('0xb')]('/:id/logo_login',controller[_0x872d('0x10')]);router[_0x872d('0xb')](_0x872d('0x11'),controller[_0x872d('0x12')]);router[_0x872d('0xb')]('/:id/preferred',controller[_0x872d('0x13')]);router[_0x872d('0xb')](_0x872d('0x14'),controller[_0x872d('0x15')]);var upload=multer({'storage':multer[_0x872d('0x16')]({'destination':function(_0x235b82,_0x26c158,_0x753969){_0x753969(null,path[_0x872d('0x17')](config['root'],_0x872d('0x18')));},'filename':function(_0x49def9,_0x1093c9,_0x25e55a){_0x25e55a(null,util[_0x872d('0x19')](_0x872d('0x1a'),_0x872d('0x1b'),path[_0x872d('0x1c')](_0x1093c9[_0x872d('0x1d')])));}})});router['post'](_0x872d('0x1e'),upload['single'](_0x872d('0x1f')),controller[_0x872d('0x20')]);var upload=multer({'storage':multer[_0x872d('0x16')]({'destination':function(_0x379c8a,_0x2d3816,_0x3526e2){_0x3526e2(null,path[_0x872d('0x17')](config[_0x872d('0x21')],'server/files/images/logos/'));},'filename':function(_0x1afcde,_0x4c9e7c,_0x5ef8d9){_0x5ef8d9(null,util[_0x872d('0x19')](_0x872d('0x1a'),_0x872d('0x22'),path[_0x872d('0x1c')](_0x4c9e7c['originalname'])));}})});router[_0x872d('0x23')](_0x872d('0x24'),upload['single']('file'),controller[_0x872d('0x25')]);var upload=multer({'storage':multer[_0x872d('0x16')]({'destination':function(_0x284a00,_0x485b35,_0x4ef4e8){_0x4ef4e8(null,path['join'](config[_0x872d('0x21')],_0x872d('0x18')));},'filename':function(_0x3b37af,_0xdd9b9e,_0x37786b){_0x37786b(null,util[_0x872d('0x19')](_0x872d('0x1a'),_0x872d('0x26'),path[_0x872d('0x1c')](_0xdd9b9e[_0x872d('0x1d')])));}})});router[_0x872d('0x23')](_0x872d('0x27'),upload[_0x872d('0x28')](_0x872d('0x1f')),controller[_0x872d('0x29')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x495c30,_0x1438ec,_0x1009f2){_0x1009f2(null,path[_0x872d('0x17')](config['root'],_0x872d('0x18')));},'filename':function(_0x4eece2,_0x4a9a35,_0x595987){_0x595987(null,util[_0x872d('0x19')](_0x872d('0x1a'),'favicon',path[_0x872d('0x1c')](_0x4a9a35[_0x872d('0x1d')])));}})});router[_0x872d('0x23')](_0x872d('0x14'),upload[_0x872d('0x28')](_0x872d('0x1f')),controller[_0x872d('0x2a')]);router[_0x872d('0x2b')](_0x872d('0xe'),auth['isAuthenticated'](),controller[_0x872d('0x2c')]);module[_0x872d('0x2d')]=router;
\ No newline at end of file
+var _0xe497=['server/files/images/logos/','format','%s%s','extname','originalname','post','/:id/logo','file','addLogo','diskStorage','logologin','addLogoLogin','preferred','single','addPreferred','favicon','addFavicon','put','update','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./setting.controller','get','index','getDate','/:id','getLogo','/:id/logo_login','getLogoLogin','/:id/preferred','getPreferred','/:id/favicon','getFavicon','join','root'];(function(_0x33ccd5,_0x475e53){var _0x8cb1b2=function(_0x5c0b25){while(--_0x5c0b25){_0x33ccd5['push'](_0x33ccd5['shift']());}};_0x8cb1b2(++_0x475e53);}(_0xe497,0x139));var _0x7e49=function(_0x26855a,_0x2dea5a){_0x26855a=_0x26855a-0x0;var _0x5c061f=_0xe497[_0x26855a];return _0x5c061f;};'use strict';var multer=require(_0x7e49('0x0'));var util=require(_0x7e49('0x1'));var path=require(_0x7e49('0x2'));var timeout=require(_0x7e49('0x3'));var express=require(_0x7e49('0x4'));var router=express[_0x7e49('0x5')]();var fs_extra=require(_0x7e49('0x6'));var auth=require(_0x7e49('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x7e49('0x8'));var controller=require(_0x7e49('0x9'));router[_0x7e49('0xa')]('/',auth['isAuthenticated'](),controller[_0x7e49('0xb')]);router['get']('/now',controller[_0x7e49('0xc')]);router[_0x7e49('0xa')](_0x7e49('0xd'),controller['show']);router[_0x7e49('0xa')]('/:id/logo',controller[_0x7e49('0xe')]);router[_0x7e49('0xa')](_0x7e49('0xf'),controller[_0x7e49('0x10')]);router[_0x7e49('0xa')]('/:id/gdpr',controller['gdpr']);router['get'](_0x7e49('0x11'),controller[_0x7e49('0x12')]);router[_0x7e49('0xa')](_0x7e49('0x13'),controller[_0x7e49('0x14')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x2f1dff,_0x1172aa,_0xfb49d4){_0xfb49d4(null,path[_0x7e49('0x15')](config[_0x7e49('0x16')],_0x7e49('0x17')));},'filename':function(_0x1a923c,_0x2971c8,_0x55816c){_0x55816c(null,util[_0x7e49('0x18')](_0x7e49('0x19'),'logo',path[_0x7e49('0x1a')](_0x2971c8[_0x7e49('0x1b')])));}})});router[_0x7e49('0x1c')](_0x7e49('0x1d'),upload['single'](_0x7e49('0x1e')),controller[_0x7e49('0x1f')]);var upload=multer({'storage':multer[_0x7e49('0x20')]({'destination':function(_0x1d60d3,_0x4a14a7,_0x31c708){_0x31c708(null,path[_0x7e49('0x15')](config['root'],_0x7e49('0x17')));},'filename':function(_0x231638,_0x3f6c89,_0x6da3ed){_0x6da3ed(null,util['format'](_0x7e49('0x19'),_0x7e49('0x21'),path[_0x7e49('0x1a')](_0x3f6c89[_0x7e49('0x1b')])));}})});router[_0x7e49('0x1c')]('/:id/logo_login',upload['single'](_0x7e49('0x1e')),controller[_0x7e49('0x22')]);var upload=multer({'storage':multer[_0x7e49('0x20')]({'destination':function(_0x237074,_0x42057b,_0x39dbbc){_0x39dbbc(null,path[_0x7e49('0x15')](config[_0x7e49('0x16')],_0x7e49('0x17')));},'filename':function(_0x5c6b44,_0x20d5a3,_0x144230){_0x144230(null,util[_0x7e49('0x18')](_0x7e49('0x19'),_0x7e49('0x23'),path['extname'](_0x20d5a3[_0x7e49('0x1b')])));}})});router[_0x7e49('0x1c')](_0x7e49('0x11'),upload[_0x7e49('0x24')](_0x7e49('0x1e')),controller[_0x7e49('0x25')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x18872b,_0x27db00,_0x104ecb){_0x104ecb(null,path[_0x7e49('0x15')](config[_0x7e49('0x16')],_0x7e49('0x17')));},'filename':function(_0x39d935,_0x11c308,_0x4e6830){_0x4e6830(null,util[_0x7e49('0x18')](_0x7e49('0x19'),_0x7e49('0x26'),path['extname'](_0x11c308[_0x7e49('0x1b')])));}})});router[_0x7e49('0x1c')](_0x7e49('0x13'),upload[_0x7e49('0x24')](_0x7e49('0x1e')),controller[_0x7e49('0x27')]);router[_0x7e49('0x28')](_0x7e49('0xd'),auth['isAuthenticated'](),controller[_0x7e49('0x29')]);module['exports']=router;
\ No newline at end of file
index 1cad88d..68532bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['INTEGER','min_internal','min_mailbox','STRING','BOOLEAN','alternate','UNSIGNED','sequelize','exports'];(function(_0x468756,_0x4f7d41){var _0x120528=function(_0x4106b3){while(--_0x4106b3){_0x468756['push'](_0x468756['shift']());}};_0x120528(++_0x4f7d41);}(_0x5f2f,0x73));var _0xf5f2=function(_0x2719b4,_0x3bb25b){_0x2719b4=_0x2719b4-0x0;var _0x18b233=_0x5f2f[_0x2719b4];return _0x18b233;};'use strict';var Sequelize=require(_0xf5f2('0x0'));module[_0xf5f2('0x1')]={'min_internal':{'type':Sequelize[_0xf5f2('0x2')](0xb),'unique':_0xf5f2('0x3'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0xf5f2('0x2')](0xb),'unique':_0xf5f2('0x4'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0xf5f2('0x2')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0xf5f2('0x5')],'defaultValue':'/var/opt/motion2/server/files/sounds/converted'},'logo':{'type':Sequelize['STRING']},'defaultLogo':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0xf5f2('0x5')]},'defaultLoginLogo':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0xf5f2('0x5')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0xf5f2('0x5')]},'turnaddr':{'type':Sequelize[_0xf5f2('0x5')]},'turnusername':{'type':Sequelize[_0xf5f2('0x5')]},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize[_0xf5f2('0x5')]},'defaultPageTitle':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize['STRING'],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'split':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0xf5f2('0x5')],'defaultValue':_0xf5f2('0x7')},'chatTimeout':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize['STRING']},'defaultPreferred':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0xf5f2('0x5')]},'allowedLoginAttempts':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize['STRING']},'defaultFavicon':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0xf5f2('0x2')]},'transcribeRegion':{'type':Sequelize[_0xf5f2('0x5')]},'sentiment':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0xf5f2('0x2')]},'sentimentRegion':{'type':Sequelize[_0xf5f2('0x5')]},'language':{'type':Sequelize[_0xf5f2('0x5')]},'bucket':{'type':Sequelize[_0xf5f2('0x5')]},'googleSsoEnabled':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0xf5f2('0x2')](0x2)[_0xf5f2('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0xf5f2('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0xf5f2('0x2')](0x2)[_0xf5f2('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0xf5f2('0x2')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0xf5f2('0x6')],'defaultValue':![]}};
\ No newline at end of file
+var _0xdb28=['INTEGER','min_internal','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN','https://www.xcally.com/bar/phonebar/autoupdater.xml','alternate','UNSIGNED','sequelize','exports'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xdb28,0x106));var _0x8db2=function(_0x5905a4,_0x546ab){_0x5905a4=_0x5905a4-0x0;var _0x2c4d8f=_0xdb28[_0x5905a4];return _0x2c4d8f;};'use strict';var Sequelize=require(_0x8db2('0x0'));module[_0x8db2('0x1')]={'min_internal':{'type':Sequelize[_0x8db2('0x2')](0xb),'unique':_0x8db2('0x3'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize['INTEGER'](0xb),'unique':_0x8db2('0x4'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0x8db2('0x2')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x8db2('0x5')],'defaultValue':_0x8db2('0x6')},'logo':{'type':Sequelize[_0x8db2('0x5')]},'defaultLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x8db2('0x5')]},'defaultLoginLogo':{'type':Sequelize[_0x8db2('0x7')],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize['STRING']},'defaultHeaderWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x8db2('0x7')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x8db2('0x7')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x8db2('0x5')]},'turnaddr':{'type':Sequelize[_0x8db2('0x5')]},'turnusername':{'type':Sequelize[_0x8db2('0x5')]},'turnpassword':{'type':Sequelize[_0x8db2('0x5')]},'pageTitle':{'type':Sequelize[_0x8db2('0x5')]},'defaultPageTitle':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x8db2('0x7')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x8db2('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x8db2('0x7')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize['STRING'],'defaultValue':_0x8db2('0x8')},'enableEmailPreview':{'type':Sequelize[_0x8db2('0x7')],'defaultValue':![]},'split':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize[_0x8db2('0x2')],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x8db2('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x8db2('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x8db2('0x5')],'defaultValue':_0x8db2('0x9')},'chatTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x8db2('0x5')]},'defaultPreferred':{'type':Sequelize[_0x8db2('0x7')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x8db2('0x7')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x8db2('0x5')]},'allowedLoginAttempts':{'type':Sequelize[_0x8db2('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x8db2('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x8db2('0x5')]},'defaultFavicon':{'type':Sequelize[_0x8db2('0x7')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x8db2('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x8db2('0x7')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x8db2('0x2')]},'transcribeRegion':{'type':Sequelize[_0x8db2('0x5')]},'sentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0x8db2('0x7')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x8db2('0x2')]},'sentimentRegion':{'type':Sequelize[_0x8db2('0x5')]},'language':{'type':Sequelize[_0x8db2('0x5')]},'bucket':{'type':Sequelize[_0x8db2('0x5')]},'googleSsoEnabled':{'type':Sequelize[_0x8db2('0x7')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize['INTEGER'](0x2)[_0x8db2('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x8db2('0x2')](0x2)[_0x8db2('0xa')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x8db2('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x8db2('0x2')](0x2)[_0x8db2('0xa')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x8db2('0x7')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x8db2('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x8db2('0x2')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x8db2('0x2')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x8db2('0x2')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x8db2('0x7')],'defaultValue':![]}};
\ No newline at end of file
index 4b91a9b..8a24a12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d10=['default_preferred.png','ValidationError','default_favicon.ico','getDate','utcOffset','YYYY-MM-DD\x20HH:mm:ss:SSS','send','eml-format','zip-dir','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','jayson/promise','client','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','error','message','catch','sendStatus','status','end','json','offset','undefined','count','limit','apply','reject','save','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','Setting','findAll','rows','show','find','update','body','params','file','filename','logo','addLogoLogin','loginLogo','getLogo','server/files/images/logos','getLicense','favicon','defaultLogo','defaultPreferred','existsSync','join','root','toLower','default_logo.svg','default','upperFirst','custom','Sequelize','\x20not\x20found','download','defaultLoginLogo','defaultFavicon','default_loginLogo.svg','gdpr','addPreferred','preferred','getPreferred'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x3d10,0x7b));var _0x03d1=function(_0x4fe19c,_0x45d0fe){_0x4fe19c=_0x4fe19c-0x0;var _0x952ac7=_0x3d10[_0x4fe19c];return _0x952ac7;};'use strict';var emlformat=require(_0x03d1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x03d1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x03d1('0x2'));var moment=require(_0x03d1('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x03d1('0x4'));var path=require(_0x03d1('0x5'));var sox=require(_0x03d1('0x6'));var csv=require(_0x03d1('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x03d1('0x8'));var _=require(_0x03d1('0x9'));var squel=require(_0x03d1('0xa'));var crypto=require('crypto');var jsforce=require(_0x03d1('0xb'));var deskjs=require(_0x03d1('0xc'));var toCsv=require(_0x03d1('0x7'));var querystring=require(_0x03d1('0xd'));var Papa=require(_0x03d1('0xe'));var Redis=require(_0x03d1('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x03d1('0x10'));var as=require(_0x03d1('0x11'));var hardwareService=require(_0x03d1('0x12'));var logger=require(_0x03d1('0x13'))(_0x03d1('0x14'));var utils=require(_0x03d1('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x03d1('0x16'));var db=require(_0x03d1('0x17'))['db'];var jayson=require(_0x03d1('0x18'));var client=jayson[_0x03d1('0x19')]['http']({'port':0x232a});function respondWithRpcPromise(_0x250992,_0x3c76ba,_0x537fb2,_0x417245){return new BPromise(function(_0x3ac4ec,_0x2c3604){var _0x42116d=_0x417245||client;return _0x42116d[_0x03d1('0x1a')](_0x250992,_0x537fb2)[_0x03d1('0x1b')](function(_0x2d6983){logger[_0x03d1('0x1c')](_0x03d1('0x1d'),_0x3c76ba,_0x03d1('0x1e'));logger[_0x03d1('0x1f')]('Setting,\x20%s,\x20%s,\x20%s',_0x3c76ba,_0x03d1('0x1e'),JSON['stringify'](_0x2d6983));if(_0x2d6983[_0x03d1('0x20')]){if(_0x2d6983[_0x03d1('0x20')]['code']===0x1f4){logger[_0x03d1('0x20')](_0x03d1('0x1d'),_0x3c76ba,_0x2d6983['error']['message']);return _0x2c3604(_0x2d6983[_0x03d1('0x20')][_0x03d1('0x21')]);}logger[_0x03d1('0x20')](_0x03d1('0x1d'),_0x3c76ba,_0x2d6983['error'][_0x03d1('0x21')]);return _0x3ac4ec(_0x2d6983[_0x03d1('0x20')][_0x03d1('0x21')]);}else{logger[_0x03d1('0x1c')](_0x03d1('0x1d'),_0x3c76ba,_0x03d1('0x1e'));_0x3ac4ec(_0x2d6983['result'][_0x03d1('0x21')]);}})[_0x03d1('0x22')](function(_0x2d6a97){logger[_0x03d1('0x20')](_0x03d1('0x1d'),_0x3c76ba,_0x2d6a97);_0x2c3604(_0x2d6a97);});});}function respondWithStatusCode(_0x80030a,_0x221bf8){_0x221bf8=_0x221bf8||0xcc;return function(_0x2aaabb){if(_0x2aaabb){return _0x80030a[_0x03d1('0x23')](_0x221bf8);}return _0x80030a[_0x03d1('0x24')](_0x221bf8)[_0x03d1('0x25')]();};}function respondWithResult(_0x120a5b,_0x1b6ff4){_0x1b6ff4=_0x1b6ff4||0xc8;return function(_0x541ad1){if(_0x541ad1){return _0x120a5b[_0x03d1('0x24')](_0x1b6ff4)[_0x03d1('0x26')](_0x541ad1);}};}function respondWithFilteredResult(_0x42f56d,_0x48ad17){return function(_0x11f56e){if(_0x11f56e){var _0x29a36d=typeof _0x48ad17[_0x03d1('0x27')]==='undefined'&&typeof _0x48ad17['limit']===_0x03d1('0x28');var _0x433e96=_0x11f56e['count'];var _0xe5fce4=_0x29a36d?0x0:_0x48ad17[_0x03d1('0x27')];var _0x50292d=_0x29a36d?_0x11f56e[_0x03d1('0x29')]:_0x48ad17[_0x03d1('0x27')]+_0x48ad17[_0x03d1('0x2a')];var _0x208679;if(_0x50292d>=_0x433e96){_0x50292d=_0x433e96;_0x208679=0xc8;}else{_0x208679=0xce;}_0x42f56d['status'](_0x208679);return _0x42f56d['set']('Content-Range',_0xe5fce4+'-'+_0x50292d+'/'+_0x433e96)[_0x03d1('0x26')](_0x11f56e);}return null;};}function patchUpdates(_0x237fa3){return function(_0x517eb8){try{jsonpatch[_0x03d1('0x2b')](_0x517eb8,_0x237fa3,!![]);}catch(_0xbddd0e){return BPromise[_0x03d1('0x2c')](_0xbddd0e);}return _0x517eb8[_0x03d1('0x2d')]();};}function saveUpdates(_0xb29799,_0x59a204){return function(_0x182cf8){if(_0x182cf8){return _0x182cf8['update'](_0xb29799)[_0x03d1('0x1b')](function(_0x3fc593){return _0x3fc593;});}return null;};}function removeEntity(_0x2a0882,_0x46e6d4){return function(_0xa024dd){if(_0xa024dd){return _0xa024dd['destroy']()[_0x03d1('0x1b')](function(){_0x2a0882['status'](0xcc)[_0x03d1('0x25')]();});}};}function handleEntityNotFound(_0x3e8229,_0x1eac00){return function(_0x30c206){if(!_0x30c206){_0x3e8229[_0x03d1('0x23')](0x194);}return _0x30c206;};}function handleError(_0x27258a,_0x13380f){_0x13380f=_0x13380f||0x1f4;return function(_0x48446e){logger[_0x03d1('0x20')](_0x48446e[_0x03d1('0x2e')]);if(_0x48446e[_0x03d1('0x2f')]){delete _0x48446e['name'];}_0x27258a['status'](_0x13380f)['send'](_0x48446e);};}exports[_0x03d1('0x30')]=function(_0x17ccaa,_0x30cf5c){var _0x3930f8={},_0x34fb34={},_0x1a21c8={'count':0x0,'rows':[]};var _0x5f28c8=_[_0x03d1('0x31')](db['Setting'][_0x03d1('0x32')],function(_0x28bb1c){return{'name':_0x28bb1c[_0x03d1('0x33')],'type':_0x28bb1c[_0x03d1('0x34')][_0x03d1('0x35')]};});_0x34fb34[_0x03d1('0x36')]=_['map'](_0x5f28c8,_0x03d1('0x2f'));_0x34fb34[_0x03d1('0x37')]=_[_0x03d1('0x38')](_0x17ccaa['query']);_0x34fb34[_0x03d1('0x39')]=_[_0x03d1('0x3a')](_0x34fb34[_0x03d1('0x36')],_0x34fb34[_0x03d1('0x37')]);_0x3930f8['attributes']=_[_0x03d1('0x3a')](_0x34fb34[_0x03d1('0x36')],qs[_0x03d1('0x3b')](_0x17ccaa['query'][_0x03d1('0x3b')]));_0x3930f8[_0x03d1('0x3c')]=_0x3930f8[_0x03d1('0x3c')]['length']?_0x3930f8['attributes']:_0x34fb34['model'];if(!_0x17ccaa[_0x03d1('0x37')][_0x03d1('0x3d')](_0x03d1('0x3e'))){_0x3930f8[_0x03d1('0x2a')]=qs['limit'](_0x17ccaa[_0x03d1('0x37')][_0x03d1('0x2a')]);_0x3930f8[_0x03d1('0x27')]=qs[_0x03d1('0x27')](_0x17ccaa[_0x03d1('0x37')][_0x03d1('0x27')]);}_0x3930f8[_0x03d1('0x3f')]=qs[_0x03d1('0x40')](_0x17ccaa['query'][_0x03d1('0x40')]);_0x3930f8[_0x03d1('0x41')]=qs[_0x03d1('0x39')](_[_0x03d1('0x42')](_0x17ccaa[_0x03d1('0x37')],_0x34fb34[_0x03d1('0x39')]),_0x5f28c8);if(_0x17ccaa[_0x03d1('0x37')][_0x03d1('0x43')]){_0x3930f8[_0x03d1('0x41')]=_[_0x03d1('0x44')](_0x3930f8[_0x03d1('0x41')],{'$or':_['map'](_0x5f28c8,function(_0x167097){if(_0x167097['type']!=='VIRTUAL'){var _0xfe3b58={};_0xfe3b58[_0x167097['name']]={'$like':'%'+_0x17ccaa['query'][_0x03d1('0x43')]+'%'};return _0xfe3b58;}})});}_0x3930f8=_[_0x03d1('0x44')]({},_0x3930f8,_0x17ccaa[_0x03d1('0x45')]);var _0x8f5efd={'where':_0x3930f8['where']};return db['Setting'][_0x03d1('0x29')](_0x8f5efd)['then'](function(_0x1f17f0){_0x1a21c8[_0x03d1('0x29')]=_0x1f17f0;if(_0x17ccaa[_0x03d1('0x37')][_0x03d1('0x46')]){_0x3930f8[_0x03d1('0x47')]=[{'all':!![]}];}return db[_0x03d1('0x48')][_0x03d1('0x49')](_0x3930f8);})['then'](function(_0x4e6e3d){_0x1a21c8[_0x03d1('0x4a')]=_0x4e6e3d;return _0x1a21c8;})['then'](respondWithFilteredResult(_0x30cf5c,_0x3930f8))['catch'](handleError(_0x30cf5c,null));};exports[_0x03d1('0x4b')]=function(_0x2d0c66,_0xd4760d){var _0x34b2e4={'raw':![],'where':{'id':_0x2d0c66['params']['id']}},_0x387848={};_0x387848[_0x03d1('0x36')]=_['keys'](db['Setting'][_0x03d1('0x32')]);_0x387848[_0x03d1('0x37')]=_['keys'](_0x2d0c66['query']);_0x387848[_0x03d1('0x39')]=_[_0x03d1('0x3a')](_0x387848[_0x03d1('0x36')],_0x387848[_0x03d1('0x37')]);_0x34b2e4[_0x03d1('0x3c')]=_[_0x03d1('0x3a')](_0x387848[_0x03d1('0x36')],qs[_0x03d1('0x3b')](_0x2d0c66[_0x03d1('0x37')][_0x03d1('0x3b')]));_0x34b2e4[_0x03d1('0x3c')]=_0x34b2e4[_0x03d1('0x3c')]['length']?_0x34b2e4[_0x03d1('0x3c')]:_0x387848[_0x03d1('0x36')];if(_0x2d0c66[_0x03d1('0x37')]['includeAll']){_0x34b2e4[_0x03d1('0x47')]=[{'all':!![]}];}_0x34b2e4=_[_0x03d1('0x44')]({},_0x34b2e4,_0x2d0c66[_0x03d1('0x45')]);return db[_0x03d1('0x48')][_0x03d1('0x4c')](_0x34b2e4)['then'](handleEntityNotFound(_0xd4760d,null))['then'](respondWithResult(_0xd4760d,null))[_0x03d1('0x22')](handleError(_0xd4760d,null));};exports[_0x03d1('0x4d')]=function(_0xca5df6,_0x263787){if(_0xca5df6[_0x03d1('0x4e')]['id']){delete _0xca5df6[_0x03d1('0x4e')]['id'];}return db[_0x03d1('0x48')][_0x03d1('0x4c')]({'where':{'id':_0xca5df6[_0x03d1('0x4f')]['id']}})['then'](handleEntityNotFound(_0x263787,null))[_0x03d1('0x1b')](saveUpdates(_0xca5df6[_0x03d1('0x4e')],null))[_0x03d1('0x1b')](respondWithResult(_0x263787,null))['catch'](handleError(_0x263787,null));};exports['addLogo']=function(_0x3a43a5,_0x1025bb,_0x115096){if(_0x3a43a5[_0x03d1('0x50')]&&_0x3a43a5[_0x03d1('0x50')][_0x03d1('0x51')]){_0x3a43a5['body'][_0x03d1('0x52')]=_0x3a43a5[_0x03d1('0x50')][_0x03d1('0x51')];}return db[_0x03d1('0x48')]['find']({'where':{'id':_0x3a43a5[_0x03d1('0x4f')]['id']}})['then'](handleEntityNotFound(_0x1025bb,null))[_0x03d1('0x1b')](saveUpdates(_0x3a43a5[_0x03d1('0x4e')],null))[_0x03d1('0x1b')](respondWithResult(_0x1025bb,null))[_0x03d1('0x22')](handleError(_0x1025bb,null));};exports[_0x03d1('0x53')]=function(_0x3e40a8,_0x31924e,_0x3f9e13){if(_0x3e40a8[_0x03d1('0x50')]&&_0x3e40a8[_0x03d1('0x50')][_0x03d1('0x51')]){_0x3e40a8[_0x03d1('0x4e')][_0x03d1('0x54')]=_0x3e40a8['file'][_0x03d1('0x51')];}return db[_0x03d1('0x48')][_0x03d1('0x4c')]({'where':{'id':_0x3e40a8[_0x03d1('0x4f')]['id']}})[_0x03d1('0x1b')](handleEntityNotFound(_0x31924e,null))[_0x03d1('0x1b')](saveUpdates(_0x3e40a8[_0x03d1('0x4e')],null))[_0x03d1('0x1b')](respondWithResult(_0x31924e,null))[_0x03d1('0x22')](handleError(_0x31924e,null));};var utilLicense=require(_0x03d1('0x16'));exports[_0x03d1('0x55')]=function(_0x39628d,_0x298c3b,_0x44cd43){var _0x393297=_0x03d1('0x56');var _0x4a5ead={'custom':![]};return utilLicense[_0x03d1('0x57')]()[_0x03d1('0x1b')](function(_0xf01386){if(_0xf01386){_0x4a5ead=_0xf01386;}return db[_0x03d1('0x48')][_0x03d1('0x4c')]({'where':{'id':_0x39628d[_0x03d1('0x4f')]['id']},'attributes':['logo',_0x03d1('0x54'),'preferred',_0x03d1('0x58'),_0x03d1('0x59'),'defaultLoginLogo',_0x03d1('0x5a'),'defaultFavicon'],'raw':!![]});})['then'](handleEntityNotFound(_0x298c3b,null))['then'](function(_0x19b7ea){if(_0x19b7ea){var _0xb1e969=_0x19b7ea['logo']&&fs[_0x03d1('0x5b')](path[_0x03d1('0x5c')](config[_0x03d1('0x5d')],_0x393297,_[_0x03d1('0x5e')](_0x19b7ea[_0x03d1('0x52')])))?path[_0x03d1('0x5c')](config[_0x03d1('0x5d')],_0x393297,_[_0x03d1('0x5e')](_0x19b7ea['logo'])):path[_0x03d1('0x5c')](config['root'],_0x393297,_[_0x03d1('0x5e')](_0x03d1('0x5f')));var _0x5ee65f=_0x03d1('0x60')+_[_0x03d1('0x61')](_0x03d1('0x52'));if(_0x19b7ea[_0x5ee65f]||!_0x4a5ead[_0x03d1('0x62')]){_0xb1e969=path['join'](config['root'],_0x393297,_['toLower'](_0x03d1('0x5f')));}if(!fs[_0x03d1('0x5b')](_0xb1e969)){throw new db[(_0x03d1('0x63'))]['ValidationError'](_[_0x03d1('0x61')](_0x03d1('0x52'))+_0x03d1('0x64'));}return _0x298c3b[_0x03d1('0x65')](_0xb1e969);}})['catch'](handleError(_0x298c3b,null));};var utilLicense=require(_0x03d1('0x16'));exports['getLogoLogin']=function(_0x224c3b,_0x474fe9,_0x4820ae){var _0x4f4efe='server/files/images/logos';var _0xd7f8fa={'custom':![]};return utilLicense[_0x03d1('0x57')]()[_0x03d1('0x1b')](function(_0x41bed0){if(_0x41bed0){_0xd7f8fa=_0x41bed0;}return db['Setting'][_0x03d1('0x4c')]({'where':{'id':_0x224c3b[_0x03d1('0x4f')]['id']},'attributes':['logo',_0x03d1('0x54'),'preferred','favicon',_0x03d1('0x59'),_0x03d1('0x66'),_0x03d1('0x5a'),_0x03d1('0x67')],'raw':!![]});})[_0x03d1('0x1b')](handleEntityNotFound(_0x474fe9,null))['then'](function(_0x10e581){if(_0x10e581){var _0x165038=_0x10e581[_0x03d1('0x54')]&&fs[_0x03d1('0x5b')](path[_0x03d1('0x5c')](config[_0x03d1('0x5d')],_0x4f4efe,_['toLower'](_0x10e581['loginLogo'])))?path[_0x03d1('0x5c')](config[_0x03d1('0x5d')],_0x4f4efe,_[_0x03d1('0x5e')](_0x10e581['loginLogo'])):path[_0x03d1('0x5c')](config[_0x03d1('0x5d')],_0x4f4efe,_[_0x03d1('0x5e')]('default_loginLogo.svg'));var _0x2d3487='default'+_[_0x03d1('0x61')](_0x03d1('0x54'));if(_0x10e581[_0x2d3487]||!_0xd7f8fa['custom']){_0x165038=path[_0x03d1('0x5c')](config[_0x03d1('0x5d')],_0x4f4efe,_[_0x03d1('0x5e')](_0x03d1('0x68')));}if(!fs['existsSync'](_0x165038)){throw new db[(_0x03d1('0x63'))]['ValidationError'](_['upperFirst'](_0x03d1('0x54'))+_0x03d1('0x64'));}return _0x474fe9[_0x03d1('0x65')](_0x165038);}})[_0x03d1('0x22')](handleError(_0x474fe9,null));};exports[_0x03d1('0x69')]=function(_0x892499,_0x3e62bc){return db[_0x03d1('0x48')][_0x03d1('0x4c')]({'where':{'id':_0x892499[_0x03d1('0x4f')]['id']},'attributes':['securePassword']})[_0x03d1('0x1b')](respondWithResult(_0x3e62bc,null))[_0x03d1('0x22')](handleError(_0x3e62bc,null));};exports[_0x03d1('0x6a')]=function(_0x4e4653,_0x3a2d8a,_0x467ea8){if(_0x4e4653[_0x03d1('0x50')]&&_0x4e4653[_0x03d1('0x50')][_0x03d1('0x51')]){_0x4e4653[_0x03d1('0x4e')][_0x03d1('0x6b')]=_0x4e4653[_0x03d1('0x50')]['filename'];}return db[_0x03d1('0x48')]['find']({'where':{'id':_0x4e4653[_0x03d1('0x4f')]['id']}})[_0x03d1('0x1b')](handleEntityNotFound(_0x3a2d8a,null))[_0x03d1('0x1b')](saveUpdates(_0x4e4653['body'],null))['then'](respondWithResult(_0x3a2d8a,null))[_0x03d1('0x22')](handleError(_0x3a2d8a,null));};var utilLicense=require(_0x03d1('0x16'));exports[_0x03d1('0x6c')]=function(_0x43aeb4,_0x8e1e50,_0x2535cf){var _0x11289c='server/files/images/logos';var _0x45f830={'custom':![]};return utilLicense['getLicense']()['then'](function(_0x3b4613){if(_0x3b4613){_0x45f830=_0x3b4613;}return db['Setting'][_0x03d1('0x4c')]({'where':{'id':_0x43aeb4[_0x03d1('0x4f')]['id']},'attributes':[_0x03d1('0x52'),_0x03d1('0x54'),'preferred','favicon','defaultLogo',_0x03d1('0x66'),_0x03d1('0x5a'),_0x03d1('0x67')],'raw':!![]});})[_0x03d1('0x1b')](handleEntityNotFound(_0x8e1e50,null))[_0x03d1('0x1b')](function(_0x590276){if(_0x590276){var _0x41ce0b=_0x590276[_0x03d1('0x6b')]&&fs[_0x03d1('0x5b')](path['join'](config[_0x03d1('0x5d')],_0x11289c,_[_0x03d1('0x5e')](_0x590276[_0x03d1('0x6b')])))?path[_0x03d1('0x5c')](config[_0x03d1('0x5d')],_0x11289c,_[_0x03d1('0x5e')](_0x590276[_0x03d1('0x6b')])):path[_0x03d1('0x5c')](config[_0x03d1('0x5d')],_0x11289c,_['toLower'](_0x03d1('0x6d')));var _0x54ea1c=_0x03d1('0x60')+_[_0x03d1('0x61')]('preferred');if(_0x590276[_0x54ea1c]||!_0x45f830['custom']||!_0x45f830[_0x03d1('0x6b')]){_0x41ce0b=path[_0x03d1('0x5c')](config[_0x03d1('0x5d')],_0x11289c,_[_0x03d1('0x5e')](_0x03d1('0x6d')));}if(!fs['existsSync'](_0x41ce0b)){throw new db[(_0x03d1('0x63'))][(_0x03d1('0x6e'))](_[_0x03d1('0x61')]('preferred')+'\x20not\x20found');}return _0x8e1e50[_0x03d1('0x65')](_0x41ce0b);}})['catch'](handleError(_0x8e1e50,null));};exports['addFavicon']=function(_0x358a69,_0x24039f,_0x5b146c){if(_0x358a69[_0x03d1('0x50')]&&_0x358a69['file']['filename']){_0x358a69[_0x03d1('0x4e')][_0x03d1('0x58')]=_0x358a69[_0x03d1('0x50')][_0x03d1('0x51')];}return db[_0x03d1('0x48')][_0x03d1('0x4c')]({'where':{'id':_0x358a69[_0x03d1('0x4f')]['id']}})['then'](handleEntityNotFound(_0x24039f,null))['then'](saveUpdates(_0x358a69[_0x03d1('0x4e')],null))[_0x03d1('0x1b')](respondWithResult(_0x24039f,null))[_0x03d1('0x22')](handleError(_0x24039f,null));};var utilLicense=require('../../config/license/util');exports['getFavicon']=function(_0x5b3541,_0x55382a,_0xba50a2){var _0x5ab118='server/files/images/logos';var _0x898b72={'custom':![]};return utilLicense['getLicense']()['then'](function(_0x552652){if(_0x552652){_0x898b72=_0x552652;}return db[_0x03d1('0x48')][_0x03d1('0x4c')]({'where':{'id':_0x5b3541['params']['id']},'attributes':[_0x03d1('0x52'),'loginLogo',_0x03d1('0x6b'),_0x03d1('0x58'),'defaultLogo',_0x03d1('0x66'),_0x03d1('0x5a'),_0x03d1('0x67')],'raw':!![]});})[_0x03d1('0x1b')](handleEntityNotFound(_0x55382a,null))[_0x03d1('0x1b')](function(_0x48688c){if(_0x48688c){var _0x7bd3ac=_0x48688c[_0x03d1('0x58')]&&fs[_0x03d1('0x5b')](path[_0x03d1('0x5c')](config['root'],_0x5ab118,_[_0x03d1('0x5e')](_0x48688c[_0x03d1('0x58')])))?path[_0x03d1('0x5c')](config[_0x03d1('0x5d')],_0x5ab118,_[_0x03d1('0x5e')](_0x48688c[_0x03d1('0x58')])):path[_0x03d1('0x5c')](config[_0x03d1('0x5d')],_0x5ab118,_['toLower']('default_favicon.ico'));var _0x1eeb34=_0x03d1('0x60')+_[_0x03d1('0x61')](_0x03d1('0x58'));if(_0x48688c[_0x1eeb34]||!_0x898b72[_0x03d1('0x62')]){_0x7bd3ac=path['join'](config[_0x03d1('0x5d')],_0x5ab118,_[_0x03d1('0x5e')](_0x03d1('0x6f')));}if(!fs['existsSync'](_0x7bd3ac)){throw new db['Sequelize'][(_0x03d1('0x6e'))](_[_0x03d1('0x61')](_0x03d1('0x58'))+'\x20not\x20found');}return _0x55382a[_0x03d1('0x65')](_0x7bd3ac);}})[_0x03d1('0x22')](handleError(_0x55382a,null));};exports[_0x03d1('0x70')]=function(_0x1f89ea,_0x3838d1){var _0x39434a={'offset':moment()[_0x03d1('0x71')]()};_0x39434a['now']=moment()['utcOffset'](_0x39434a[_0x03d1('0x27')])['format'](_0x03d1('0x72'));return _0x3838d1[_0x03d1('0x24')](0xc8)[_0x03d1('0x73')](_0x39434a);};
\ No newline at end of file
+var _0x36f1=['loginLogo','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','toLower','root','join','default','custom','default_logo.svg','Sequelize','ValidationError','upperFirst','download','getLogoLogin','server/files/images/logos','default_loginLogo.svg','\x20not\x20found','securePassword','addPreferred','getPreferred','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','getDate','utcOffset','now','format','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','jayson/promise','http','request','then','info','request\x20sent','debug','stringify','error','code','message','Setting,\x20%s,\x20%s','result','catch','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','end','stack','name','send','index','map','Setting','rawAttributes','fieldName','key','model','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','find','body','addLogo','file','logo','filename','addLogoLogin','getLogo','getLicense'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x36f1,0x19f));var _0x136f=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0x36f1[_0x1e7b16];return _0x37fadc;};'use strict';var emlformat=require(_0x136f('0x0'));var rimraf=require(_0x136f('0x1'));var zipdir=require(_0x136f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x136f('0x3'));var moment=require(_0x136f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x136f('0x5'));var util=require(_0x136f('0x6'));var path=require(_0x136f('0x7'));var sox=require(_0x136f('0x8'));var csv=require(_0x136f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x136f('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x136f('0xb'));var jsforce=require(_0x136f('0xc'));var deskjs=require(_0x136f('0xd'));var toCsv=require('to-csv');var querystring=require(_0x136f('0xe'));var Papa=require(_0x136f('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x136f('0x10'));var as=require(_0x136f('0x11'));var hardwareService=require(_0x136f('0x12'));var logger=require('../../config/logger')(_0x136f('0x13'));var utils=require('../../config/utils');var config=require(_0x136f('0x14'));var licenseUtil=require(_0x136f('0x15'));var db=require('../../mysqldb')['db'];var jayson=require(_0x136f('0x16'));var client=jayson['client'][_0x136f('0x17')]({'port':0x232a});function respondWithRpcPromise(_0x198090,_0x5bf4e6,_0xfa3ffe,_0x1ba6a0){return new BPromise(function(_0x5807d1,_0x343538){var _0x24d348=_0x1ba6a0||client;return _0x24d348[_0x136f('0x18')](_0x198090,_0xfa3ffe)[_0x136f('0x19')](function(_0x4c50f0){logger[_0x136f('0x1a')]('Setting,\x20%s,\x20%s',_0x5bf4e6,_0x136f('0x1b'));logger[_0x136f('0x1c')]('Setting,\x20%s,\x20%s,\x20%s',_0x5bf4e6,_0x136f('0x1b'),JSON[_0x136f('0x1d')](_0x4c50f0));if(_0x4c50f0[_0x136f('0x1e')]){if(_0x4c50f0[_0x136f('0x1e')][_0x136f('0x1f')]===0x1f4){logger['error']('Setting,\x20%s,\x20%s',_0x5bf4e6,_0x4c50f0['error'][_0x136f('0x20')]);return _0x343538(_0x4c50f0[_0x136f('0x1e')][_0x136f('0x20')]);}logger[_0x136f('0x1e')](_0x136f('0x21'),_0x5bf4e6,_0x4c50f0[_0x136f('0x1e')][_0x136f('0x20')]);return _0x5807d1(_0x4c50f0['error'][_0x136f('0x20')]);}else{logger[_0x136f('0x1a')]('Setting,\x20%s,\x20%s',_0x5bf4e6,_0x136f('0x1b'));_0x5807d1(_0x4c50f0[_0x136f('0x22')][_0x136f('0x20')]);}})[_0x136f('0x23')](function(_0x3bb8ba){logger['error'](_0x136f('0x21'),_0x5bf4e6,_0x3bb8ba);_0x343538(_0x3bb8ba);});});}function respondWithStatusCode(_0x9cd00a,_0x3281e3){_0x3281e3=_0x3281e3||0xcc;return function(_0x34111f){if(_0x34111f){return _0x9cd00a[_0x136f('0x24')](_0x3281e3);}return _0x9cd00a[_0x136f('0x25')](_0x3281e3)['end']();};}function respondWithResult(_0x81012f,_0x411750){_0x411750=_0x411750||0xc8;return function(_0x466589){if(_0x466589){return _0x81012f[_0x136f('0x25')](_0x411750)[_0x136f('0x26')](_0x466589);}};}function respondWithFilteredResult(_0x565577,_0x128070){return function(_0x3ab82f){if(_0x3ab82f){var _0x4e7ee3=typeof _0x128070[_0x136f('0x27')]==='undefined'&&typeof _0x128070['limit']===_0x136f('0x28');var _0x5d2ad2=_0x3ab82f[_0x136f('0x29')];var _0x3fc1c4=_0x4e7ee3?0x0:_0x128070[_0x136f('0x27')];var _0x186861=_0x4e7ee3?_0x3ab82f[_0x136f('0x29')]:_0x128070[_0x136f('0x27')]+_0x128070[_0x136f('0x2a')];var _0x4ce987;if(_0x186861>=_0x5d2ad2){_0x186861=_0x5d2ad2;_0x4ce987=0xc8;}else{_0x4ce987=0xce;}_0x565577[_0x136f('0x25')](_0x4ce987);return _0x565577[_0x136f('0x2b')](_0x136f('0x2c'),_0x3fc1c4+'-'+_0x186861+'/'+_0x5d2ad2)[_0x136f('0x26')](_0x3ab82f);}return null;};}function patchUpdates(_0x3a08ec){return function(_0x2c391e){try{jsonpatch[_0x136f('0x2d')](_0x2c391e,_0x3a08ec,!![]);}catch(_0x2ce48c){return BPromise[_0x136f('0x2e')](_0x2ce48c);}return _0x2c391e[_0x136f('0x2f')]();};}function saveUpdates(_0x901c38,_0x5a517c){return function(_0x34df0a){if(_0x34df0a){return _0x34df0a[_0x136f('0x30')](_0x901c38)[_0x136f('0x19')](function(_0x115983){return _0x115983;});}return null;};}function removeEntity(_0x9a7543,_0x2c3c44){return function(_0x241a84){if(_0x241a84){return _0x241a84[_0x136f('0x31')]()[_0x136f('0x19')](function(){_0x9a7543[_0x136f('0x25')](0xcc)[_0x136f('0x32')]();});}};}function handleEntityNotFound(_0x598693,_0x14c695){return function(_0x180662){if(!_0x180662){_0x598693['sendStatus'](0x194);}return _0x180662;};}function handleError(_0x391108,_0x11e863){_0x11e863=_0x11e863||0x1f4;return function(_0x3b1520){logger[_0x136f('0x1e')](_0x3b1520[_0x136f('0x33')]);if(_0x3b1520[_0x136f('0x34')]){delete _0x3b1520['name'];}_0x391108['status'](_0x11e863)[_0x136f('0x35')](_0x3b1520);};}exports[_0x136f('0x36')]=function(_0x2cc2a9,_0xba4e70){var _0x317465={},_0x1d485d={},_0x4fca3a={'count':0x0,'rows':[]};var _0x460908=_[_0x136f('0x37')](db[_0x136f('0x38')][_0x136f('0x39')],function(_0xf36c53){return{'name':_0xf36c53[_0x136f('0x3a')],'type':_0xf36c53['type'][_0x136f('0x3b')]};});_0x1d485d[_0x136f('0x3c')]=_[_0x136f('0x37')](_0x460908,_0x136f('0x34'));_0x1d485d['query']=_[_0x136f('0x3d')](_0x2cc2a9['query']);_0x1d485d[_0x136f('0x3e')]=_[_0x136f('0x3f')](_0x1d485d[_0x136f('0x3c')],_0x1d485d[_0x136f('0x40')]);_0x317465['attributes']=_['intersection'](_0x1d485d[_0x136f('0x3c')],qs['fields'](_0x2cc2a9[_0x136f('0x40')][_0x136f('0x41')]));_0x317465[_0x136f('0x42')]=_0x317465[_0x136f('0x42')][_0x136f('0x43')]?_0x317465['attributes']:_0x1d485d['model'];if(!_0x2cc2a9[_0x136f('0x40')][_0x136f('0x44')](_0x136f('0x45'))){_0x317465[_0x136f('0x2a')]=qs['limit'](_0x2cc2a9[_0x136f('0x40')]['limit']);_0x317465['offset']=qs[_0x136f('0x27')](_0x2cc2a9[_0x136f('0x40')]['offset']);}_0x317465[_0x136f('0x46')]=qs[_0x136f('0x47')](_0x2cc2a9[_0x136f('0x40')][_0x136f('0x47')]);_0x317465[_0x136f('0x48')]=qs['filters'](_[_0x136f('0x49')](_0x2cc2a9[_0x136f('0x40')],_0x1d485d[_0x136f('0x3e')]),_0x460908);if(_0x2cc2a9[_0x136f('0x40')][_0x136f('0x4a')]){_0x317465['where']=_['merge'](_0x317465[_0x136f('0x48')],{'$or':_['map'](_0x460908,function(_0x4934ba){if(_0x4934ba['type']!==_0x136f('0x4b')){var _0x399844={};_0x399844[_0x4934ba[_0x136f('0x34')]]={'$like':'%'+_0x2cc2a9[_0x136f('0x40')][_0x136f('0x4a')]+'%'};return _0x399844;}})});}_0x317465=_[_0x136f('0x4c')]({},_0x317465,_0x2cc2a9[_0x136f('0x4d')]);var _0x20d6ca={'where':_0x317465['where']};return db[_0x136f('0x38')][_0x136f('0x29')](_0x20d6ca)['then'](function(_0x10baf4){_0x4fca3a[_0x136f('0x29')]=_0x10baf4;if(_0x2cc2a9['query'][_0x136f('0x4e')]){_0x317465[_0x136f('0x4f')]=[{'all':!![]}];}return db[_0x136f('0x38')][_0x136f('0x50')](_0x317465);})['then'](function(_0x5b3137){_0x4fca3a[_0x136f('0x51')]=_0x5b3137;return _0x4fca3a;})[_0x136f('0x19')](respondWithFilteredResult(_0xba4e70,_0x317465))['catch'](handleError(_0xba4e70,null));};exports[_0x136f('0x52')]=function(_0x4ba4ac,_0x394020){var _0x283159={'raw':![],'where':{'id':_0x4ba4ac[_0x136f('0x53')]['id']}},_0x2e16ff={};_0x2e16ff['model']=_[_0x136f('0x3d')](db[_0x136f('0x38')][_0x136f('0x39')]);_0x2e16ff['query']=_[_0x136f('0x3d')](_0x4ba4ac[_0x136f('0x40')]);_0x2e16ff['filters']=_['intersection'](_0x2e16ff['model'],_0x2e16ff['query']);_0x283159[_0x136f('0x42')]=_[_0x136f('0x3f')](_0x2e16ff[_0x136f('0x3c')],qs[_0x136f('0x41')](_0x4ba4ac[_0x136f('0x40')][_0x136f('0x41')]));_0x283159['attributes']=_0x283159['attributes'][_0x136f('0x43')]?_0x283159[_0x136f('0x42')]:_0x2e16ff[_0x136f('0x3c')];if(_0x4ba4ac['query'][_0x136f('0x4e')]){_0x283159[_0x136f('0x4f')]=[{'all':!![]}];}_0x283159=_[_0x136f('0x4c')]({},_0x283159,_0x4ba4ac[_0x136f('0x4d')]);return db[_0x136f('0x38')][_0x136f('0x54')](_0x283159)[_0x136f('0x19')](handleEntityNotFound(_0x394020,null))[_0x136f('0x19')](respondWithResult(_0x394020,null))[_0x136f('0x23')](handleError(_0x394020,null));};exports['update']=function(_0x24fa43,_0x4a7aaa){if(_0x24fa43[_0x136f('0x55')]['id']){delete _0x24fa43['body']['id'];}return db[_0x136f('0x38')][_0x136f('0x54')]({'where':{'id':_0x24fa43['params']['id']}})[_0x136f('0x19')](handleEntityNotFound(_0x4a7aaa,null))[_0x136f('0x19')](saveUpdates(_0x24fa43[_0x136f('0x55')],null))[_0x136f('0x19')](respondWithResult(_0x4a7aaa,null))[_0x136f('0x23')](handleError(_0x4a7aaa,null));};exports[_0x136f('0x56')]=function(_0x3f7fe0,_0x1a5d8c,_0x37f44f){if(_0x3f7fe0[_0x136f('0x57')]&&_0x3f7fe0[_0x136f('0x57')]['filename']){_0x3f7fe0['body'][_0x136f('0x58')]=_0x3f7fe0[_0x136f('0x57')][_0x136f('0x59')];}return db['Setting'][_0x136f('0x54')]({'where':{'id':_0x3f7fe0[_0x136f('0x53')]['id']}})[_0x136f('0x19')](handleEntityNotFound(_0x1a5d8c,null))[_0x136f('0x19')](saveUpdates(_0x3f7fe0[_0x136f('0x55')],null))[_0x136f('0x19')](respondWithResult(_0x1a5d8c,null))[_0x136f('0x23')](handleError(_0x1a5d8c,null));};exports[_0x136f('0x5a')]=function(_0x2c36d7,_0x40b005,_0x31d68b){if(_0x2c36d7['file']&&_0x2c36d7[_0x136f('0x57')]['filename']){_0x2c36d7['body']['loginLogo']=_0x2c36d7[_0x136f('0x57')][_0x136f('0x59')];}return db[_0x136f('0x38')][_0x136f('0x54')]({'where':{'id':_0x2c36d7['params']['id']}})[_0x136f('0x19')](handleEntityNotFound(_0x40b005,null))['then'](saveUpdates(_0x2c36d7['body'],null))['then'](respondWithResult(_0x40b005,null))[_0x136f('0x23')](handleError(_0x40b005,null));};var utilLicense=require(_0x136f('0x15'));exports[_0x136f('0x5b')]=function(_0x5111da,_0x2b14a1,_0x509d0b){var _0x5d18de='server/files/images/logos';var _0xcf77b={'custom':![]};return utilLicense[_0x136f('0x5c')]()[_0x136f('0x19')](function(_0x2beb9c){if(_0x2beb9c){_0xcf77b=_0x2beb9c;}return db['Setting'][_0x136f('0x54')]({'where':{'id':_0x5111da[_0x136f('0x53')]['id']},'attributes':['logo',_0x136f('0x5d'),_0x136f('0x5e'),_0x136f('0x5f'),_0x136f('0x60'),_0x136f('0x61'),_0x136f('0x62'),_0x136f('0x63')],'raw':!![]});})[_0x136f('0x19')](handleEntityNotFound(_0x2b14a1,null))[_0x136f('0x19')](function(_0x1f23d9){if(_0x1f23d9){var _0x8fdef2=_0x1f23d9[_0x136f('0x58')]&&fs[_0x136f('0x64')](path['join'](config['root'],_0x5d18de,_[_0x136f('0x65')](_0x1f23d9[_0x136f('0x58')])))?path['join'](config[_0x136f('0x66')],_0x5d18de,_[_0x136f('0x65')](_0x1f23d9[_0x136f('0x58')])):path[_0x136f('0x67')](config[_0x136f('0x66')],_0x5d18de,_[_0x136f('0x65')]('default_logo.svg'));var _0x152188=_0x136f('0x68')+_['upperFirst'](_0x136f('0x58'));if(_0x1f23d9[_0x152188]||!_0xcf77b[_0x136f('0x69')]){_0x8fdef2=path['join'](config[_0x136f('0x66')],_0x5d18de,_[_0x136f('0x65')](_0x136f('0x6a')));}if(!fs['existsSync'](_0x8fdef2)){throw new db[(_0x136f('0x6b'))][(_0x136f('0x6c'))](_[_0x136f('0x6d')](_0x136f('0x58'))+'\x20not\x20found');}return _0x2b14a1[_0x136f('0x6e')](_0x8fdef2);}})[_0x136f('0x23')](handleError(_0x2b14a1,null));};var utilLicense=require(_0x136f('0x15'));exports[_0x136f('0x6f')]=function(_0x20121d,_0x2aa869,_0x3d488a){var _0x29b056=_0x136f('0x70');var _0x45b0ac={'custom':![]};return utilLicense['getLicense']()['then'](function(_0x23467f){if(_0x23467f){_0x45b0ac=_0x23467f;}return db[_0x136f('0x38')][_0x136f('0x54')]({'where':{'id':_0x20121d['params']['id']},'attributes':[_0x136f('0x58'),_0x136f('0x5d'),_0x136f('0x5e'),_0x136f('0x5f'),'defaultLogo',_0x136f('0x61'),_0x136f('0x62'),_0x136f('0x63')],'raw':!![]});})[_0x136f('0x19')](handleEntityNotFound(_0x2aa869,null))[_0x136f('0x19')](function(_0x5e8ae7){if(_0x5e8ae7){var _0x35304d=_0x5e8ae7[_0x136f('0x5d')]&&fs[_0x136f('0x64')](path[_0x136f('0x67')](config['root'],_0x29b056,_[_0x136f('0x65')](_0x5e8ae7[_0x136f('0x5d')])))?path[_0x136f('0x67')](config[_0x136f('0x66')],_0x29b056,_[_0x136f('0x65')](_0x5e8ae7[_0x136f('0x5d')])):path['join'](config['root'],_0x29b056,_[_0x136f('0x65')]('default_loginLogo.svg'));var _0x2b480e='default'+_['upperFirst']('loginLogo');if(_0x5e8ae7[_0x2b480e]||!_0x45b0ac[_0x136f('0x69')]){_0x35304d=path[_0x136f('0x67')](config['root'],_0x29b056,_[_0x136f('0x65')](_0x136f('0x71')));}if(!fs[_0x136f('0x64')](_0x35304d)){throw new db[(_0x136f('0x6b'))][(_0x136f('0x6c'))](_[_0x136f('0x6d')](_0x136f('0x5d'))+_0x136f('0x72'));}return _0x2aa869[_0x136f('0x6e')](_0x35304d);}})['catch'](handleError(_0x2aa869,null));};exports['gdpr']=function(_0x51f737,_0x46b2fb){return db['Setting'][_0x136f('0x54')]({'where':{'id':_0x51f737[_0x136f('0x53')]['id']},'attributes':[_0x136f('0x73')]})[_0x136f('0x19')](respondWithResult(_0x46b2fb,null))['catch'](handleError(_0x46b2fb,null));};exports[_0x136f('0x74')]=function(_0x4b1504,_0x151428,_0x58074e){if(_0x4b1504['file']&&_0x4b1504['file'][_0x136f('0x59')]){_0x4b1504[_0x136f('0x55')]['preferred']=_0x4b1504['file'][_0x136f('0x59')];}return db[_0x136f('0x38')][_0x136f('0x54')]({'where':{'id':_0x4b1504['params']['id']}})[_0x136f('0x19')](handleEntityNotFound(_0x151428,null))[_0x136f('0x19')](saveUpdates(_0x4b1504[_0x136f('0x55')],null))['then'](respondWithResult(_0x151428,null))[_0x136f('0x23')](handleError(_0x151428,null));};var utilLicense=require(_0x136f('0x15'));exports[_0x136f('0x75')]=function(_0x163cc3,_0x4518df,_0x53d2f8){var _0x37ea3e=_0x136f('0x70');var _0x1b83c7={'custom':![]};return utilLicense[_0x136f('0x5c')]()[_0x136f('0x19')](function(_0x112463){if(_0x112463){_0x1b83c7=_0x112463;}return db[_0x136f('0x38')]['find']({'where':{'id':_0x163cc3[_0x136f('0x53')]['id']},'attributes':[_0x136f('0x58'),_0x136f('0x5d'),'preferred',_0x136f('0x5f'),'defaultLogo',_0x136f('0x61'),_0x136f('0x62'),_0x136f('0x63')],'raw':!![]});})[_0x136f('0x19')](handleEntityNotFound(_0x4518df,null))[_0x136f('0x19')](function(_0x5c05bb){if(_0x5c05bb){var _0x333e8a=_0x5c05bb[_0x136f('0x5e')]&&fs[_0x136f('0x64')](path[_0x136f('0x67')](config[_0x136f('0x66')],_0x37ea3e,_[_0x136f('0x65')](_0x5c05bb[_0x136f('0x5e')])))?path[_0x136f('0x67')](config['root'],_0x37ea3e,_[_0x136f('0x65')](_0x5c05bb[_0x136f('0x5e')])):path[_0x136f('0x67')](config[_0x136f('0x66')],_0x37ea3e,_['toLower'](_0x136f('0x76')));var _0x5acd92=_0x136f('0x68')+_[_0x136f('0x6d')](_0x136f('0x5e'));if(_0x5c05bb[_0x5acd92]||!_0x1b83c7['custom']||!_0x1b83c7[_0x136f('0x5e')]){_0x333e8a=path['join'](config[_0x136f('0x66')],_0x37ea3e,_[_0x136f('0x65')](_0x136f('0x76')));}if(!fs[_0x136f('0x64')](_0x333e8a)){throw new db['Sequelize']['ValidationError'](_[_0x136f('0x6d')](_0x136f('0x5e'))+_0x136f('0x72'));}return _0x4518df[_0x136f('0x6e')](_0x333e8a);}})[_0x136f('0x23')](handleError(_0x4518df,null));};exports[_0x136f('0x77')]=function(_0x23d2a6,_0x173848,_0x5bbddb){if(_0x23d2a6[_0x136f('0x57')]&&_0x23d2a6[_0x136f('0x57')][_0x136f('0x59')]){_0x23d2a6[_0x136f('0x55')]['favicon']=_0x23d2a6[_0x136f('0x57')]['filename'];}return db[_0x136f('0x38')][_0x136f('0x54')]({'where':{'id':_0x23d2a6[_0x136f('0x53')]['id']}})['then'](handleEntityNotFound(_0x173848,null))[_0x136f('0x19')](saveUpdates(_0x23d2a6[_0x136f('0x55')],null))[_0x136f('0x19')](respondWithResult(_0x173848,null))[_0x136f('0x23')](handleError(_0x173848,null));};var utilLicense=require('../../config/license/util');exports[_0x136f('0x78')]=function(_0x3fff8b,_0x44160e,_0x529c25){var _0x3613c0=_0x136f('0x70');var _0x2d19a4={'custom':![]};return utilLicense[_0x136f('0x5c')]()[_0x136f('0x19')](function(_0x241b81){if(_0x241b81){_0x2d19a4=_0x241b81;}return db[_0x136f('0x38')][_0x136f('0x54')]({'where':{'id':_0x3fff8b[_0x136f('0x53')]['id']},'attributes':[_0x136f('0x58'),'loginLogo',_0x136f('0x5e'),'favicon',_0x136f('0x60'),_0x136f('0x61'),'defaultPreferred',_0x136f('0x63')],'raw':!![]});})[_0x136f('0x19')](handleEntityNotFound(_0x44160e,null))[_0x136f('0x19')](function(_0x2b9640){if(_0x2b9640){var _0x41211c=_0x2b9640[_0x136f('0x5f')]&&fs['existsSync'](path['join'](config['root'],_0x3613c0,_[_0x136f('0x65')](_0x2b9640[_0x136f('0x5f')])))?path[_0x136f('0x67')](config['root'],_0x3613c0,_[_0x136f('0x65')](_0x2b9640[_0x136f('0x5f')])):path['join'](config['root'],_0x3613c0,_[_0x136f('0x65')]('default_favicon.ico'));var _0x2f789e=_0x136f('0x68')+_['upperFirst'](_0x136f('0x5f'));if(_0x2b9640[_0x2f789e]||!_0x2d19a4[_0x136f('0x69')]){_0x41211c=path[_0x136f('0x67')](config[_0x136f('0x66')],_0x3613c0,_['toLower'](_0x136f('0x79')));}if(!fs[_0x136f('0x64')](_0x41211c)){throw new db[(_0x136f('0x6b'))][(_0x136f('0x6c'))](_[_0x136f('0x6d')](_0x136f('0x5f'))+_0x136f('0x72'));}return _0x44160e[_0x136f('0x6e')](_0x41211c);}})[_0x136f('0x23')](handleError(_0x44160e,null));};exports[_0x136f('0x7a')]=function(_0x29848d,_0x242057){var _0x410be0={'offset':moment()[_0x136f('0x7b')]()};_0x410be0[_0x136f('0x7c')]=moment()['utcOffset'](_0x410be0['offset'])[_0x136f('0x7d')](_0x136f('0x7e'));return _0x242057[_0x136f('0x25')](0xc8)[_0x136f('0x35')](_0x410be0);};
\ No newline at end of file
index f72c3ff..1767650 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./setting.attributes','exports','Setting','util'];(function(_0x225ebc,_0x267838){var _0x5789e0=function(_0x218443){while(--_0x218443){_0x225ebc['push'](_0x225ebc['shift']());}};_0x5789e0(++_0x267838);}(_0xedd9,0xfc));var _0x9edd=function(_0x4edd60,_0x48e214){_0x4edd60=_0x4edd60-0x0;var _0x570167=_0xedd9[_0x4edd60];return _0x570167;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var logger=require(_0x9edd('0x1'))(_0x9edd('0x2'));var moment=require(_0x9edd('0x3'));var BPromise=require(_0x9edd('0x4'));var rp=require(_0x9edd('0x5'));var fs=require('fs');var path=require(_0x9edd('0x6'));var rimraf=require(_0x9edd('0x7'));var config=require('../../config/environment');var attributes=require(_0x9edd('0x8'));module[_0x9edd('0x9')]=function(_0x268f9e,_0x34c1a7){return _0x268f9e['define'](_0x9edd('0xa'),attributes,{'tableName':'settings','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(_0x5a2d3f,_0x27b04e){var _0x5c65d8=function(_0x2d1965){while(--_0x2d1965){_0x5a2d3f['push'](_0x5a2d3f['shift']());}};_0x5c65d8(++_0x27b04e);}(_0x55ca,0x126));var _0xa55c=function(_0x4d593e,_0x131776){_0x4d593e=_0x4d593e-0x0;var _0x31e2df=_0x55ca[_0x4d593e];return _0x31e2df;};'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 da2cceb..a06004d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x989c=['model','then','catch','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','error','message','ShowSetting','Setting','find','options','where','attributes','include','map'];(function(_0x185878,_0x2b0b85){var _0x4e977a=function(_0xaf00e8){while(--_0xaf00e8){_0x185878['push'](_0x185878['shift']());}};_0x4e977a(++_0x2b0b85);}(_0x989c,0x142));var _0xc989=function(_0x436de9,_0x7e2a95){_0x436de9=_0x436de9-0x0;var _0x5d1b67=_0x989c[_0x436de9];return _0x5d1b67;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xc989('0x0'));var rs=require(_0xc989('0x1'));var fs=require('fs');var Redis=require(_0xc989('0x2'));var db=require(_0xc989('0x3'))['db'];var utils=require(_0xc989('0x4'));var logger=require(_0xc989('0x5'))(_0xc989('0x6'));var config=require(_0xc989('0x7'));var jayson=require(_0xc989('0x8'));var client=jayson[_0xc989('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c94e9,_0x4cb44a,_0x3c81f4){return new BPromise(function(_0x584e31,_0x971b0d){return client[_0xc989('0xa')](_0x3c94e9,_0x3c81f4)['then'](function(_0x2e0780){logger[_0xc989('0xb')](_0xc989('0xc'),_0x4cb44a,_0xc989('0xd'));logger[_0xc989('0xe')](_0xc989('0xf'),_0x4cb44a,'request\x20sent',JSON['stringify'](_0x2e0780));if(_0x2e0780[_0xc989('0x10')]){if(_0x2e0780[_0xc989('0x10')]['code']===0x1f4){logger[_0xc989('0x10')](_0xc989('0xc'),_0x4cb44a,_0x2e0780[_0xc989('0x10')][_0xc989('0x11')]);return _0x971b0d(_0x2e0780[_0xc989('0x10')]['message']);}logger[_0xc989('0x10')](_0xc989('0xc'),_0x4cb44a,_0x2e0780[_0xc989('0x10')][_0xc989('0x11')]);return _0x584e31(_0x2e0780[_0xc989('0x10')][_0xc989('0x11')]);}else{logger['info'](_0xc989('0xc'),_0x4cb44a,_0xc989('0xd'));_0x584e31(_0x2e0780['result']['message']);}})['catch'](function(_0x542962){logger[_0xc989('0x10')](_0xc989('0xc'),_0x4cb44a,_0x542962);_0x971b0d(_0x542962);});});}exports[_0xc989('0x12')]=function(_0x3ba66c){var _0x21f9c9=this;return new Promise(function(_0xd81dee,_0xcf2154){return db[_0xc989('0x13')][_0xc989('0x14')]({'raw':_0x3ba66c[_0xc989('0x15')]?_0x3ba66c[_0xc989('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x3ba66c['options']?_0x3ba66c[_0xc989('0x15')][_0xc989('0x16')]||null:null,'attributes':_0x3ba66c[_0xc989('0x15')]?_0x3ba66c['options'][_0xc989('0x17')]||null:null,'include':_0x3ba66c['options']?_0x3ba66c[_0xc989('0x15')][_0xc989('0x18')]?_[_0xc989('0x19')](_0x3ba66c[_0xc989('0x15')][_0xc989('0x18')],function(_0x4af3f1){return{'model':db[_0x4af3f1[_0xc989('0x1a')]],'as':_0x4af3f1['as'],'attributes':_0x4af3f1[_0xc989('0x17')],'include':_0x4af3f1[_0xc989('0x18')]?_['map'](_0x4af3f1[_0xc989('0x18')],function(_0x32c8d2){return{'model':db[_0x32c8d2[_0xc989('0x1a')]],'as':_0x32c8d2['as'],'attributes':_0x32c8d2[_0xc989('0x17')],'include':_0x32c8d2[_0xc989('0x18')]?_[_0xc989('0x19')](_0x32c8d2['include'],function(_0x42085b){return{'model':db[_0x42085b[_0xc989('0x1a')]],'as':_0x42085b['as'],'attributes':_0x42085b[_0xc989('0x17')]};}):[]};}):[]};}):[]:[]})[_0xc989('0x1b')](function(_0x33ba73){logger[_0xc989('0xb')](_0xc989('0x12'),_0x3ba66c);logger[_0xc989('0xe')](_0xc989('0x12'),_0x3ba66c,JSON['stringify'](_0x33ba73));_0xd81dee(_0x33ba73);})[_0xc989('0x1c')](function(_0xf07840){logger[_0xc989('0x10')]('ShowSetting',_0xf07840[_0xc989('0x11')],_0x3ba66c);_0xcf2154(_0x21f9c9[_0xc989('0x10')](0x1f4,_0xf07840[_0xc989('0x11')]));});});};
\ No newline at end of file
+var _0x2425=['include','map','model','then','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','info','Setting,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','ShowSetting','Setting','options','raw','where','attributes'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x2425,0x16c));var _0x5242=function(_0x5d2415,_0x52ca09){_0x5d2415=_0x5d2415-0x0;var _0xdcfd1e=_0x2425[_0x5d2415];return _0xdcfd1e;};'use strict';var _=require('lodash');var util=require(_0x5242('0x0'));var moment=require(_0x5242('0x1'));var BPromise=require(_0x5242('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5242('0x3'));var db=require(_0x5242('0x4'))['db'];var utils=require(_0x5242('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x5242('0x6'));var jayson=require(_0x5242('0x7'));var client=jayson[_0x5242('0x8')][_0x5242('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4549f3,_0x4b81a5,_0x54221){return new BPromise(function(_0x2bd6aa,_0x2cc979){return client['request'](_0x4549f3,_0x54221)['then'](function(_0x3ef8b4){logger[_0x5242('0xa')](_0x5242('0xb'),_0x4b81a5,_0x5242('0xc'));logger[_0x5242('0xd')]('Setting,\x20%s,\x20%s,\x20%s',_0x4b81a5,_0x5242('0xc'),JSON[_0x5242('0xe')](_0x3ef8b4));if(_0x3ef8b4[_0x5242('0xf')]){if(_0x3ef8b4['error'][_0x5242('0x10')]===0x1f4){logger[_0x5242('0xf')](_0x5242('0xb'),_0x4b81a5,_0x3ef8b4[_0x5242('0xf')][_0x5242('0x11')]);return _0x2cc979(_0x3ef8b4[_0x5242('0xf')][_0x5242('0x11')]);}logger[_0x5242('0xf')](_0x5242('0xb'),_0x4b81a5,_0x3ef8b4[_0x5242('0xf')][_0x5242('0x11')]);return _0x2bd6aa(_0x3ef8b4[_0x5242('0xf')][_0x5242('0x11')]);}else{logger[_0x5242('0xa')](_0x5242('0xb'),_0x4b81a5,_0x5242('0xc'));_0x2bd6aa(_0x3ef8b4[_0x5242('0x12')][_0x5242('0x11')]);}})[_0x5242('0x13')](function(_0x53058b){logger[_0x5242('0xf')]('Setting,\x20%s,\x20%s',_0x4b81a5,_0x53058b);_0x2cc979(_0x53058b);});});}exports[_0x5242('0x14')]=function(_0x27395f){var _0x50e769=this;return new Promise(function(_0x47bf1d,_0x14f317){return db[_0x5242('0x15')]['find']({'raw':_0x27395f[_0x5242('0x16')]?_0x27395f[_0x5242('0x16')][_0x5242('0x17')]===undefined?!![]:![]:!![],'where':_0x27395f[_0x5242('0x16')]?_0x27395f['options'][_0x5242('0x18')]||null:null,'attributes':_0x27395f[_0x5242('0x16')]?_0x27395f[_0x5242('0x16')][_0x5242('0x19')]||null:null,'include':_0x27395f['options']?_0x27395f[_0x5242('0x16')][_0x5242('0x1a')]?_[_0x5242('0x1b')](_0x27395f[_0x5242('0x16')][_0x5242('0x1a')],function(_0x25ab97){return{'model':db[_0x25ab97[_0x5242('0x1c')]],'as':_0x25ab97['as'],'attributes':_0x25ab97[_0x5242('0x19')],'include':_0x25ab97['include']?_[_0x5242('0x1b')](_0x25ab97[_0x5242('0x1a')],function(_0x7dbe59){return{'model':db[_0x7dbe59[_0x5242('0x1c')]],'as':_0x7dbe59['as'],'attributes':_0x7dbe59[_0x5242('0x19')],'include':_0x7dbe59[_0x5242('0x1a')]?_['map'](_0x7dbe59[_0x5242('0x1a')],function(_0x981a84){return{'model':db[_0x981a84['model']],'as':_0x981a84['as'],'attributes':_0x981a84[_0x5242('0x19')]};}):[]};}):[]};}):[]:[]})[_0x5242('0x1d')](function(_0x51c85d){logger[_0x5242('0xa')](_0x5242('0x14'),_0x27395f);logger[_0x5242('0xd')](_0x5242('0x14'),_0x27395f,JSON[_0x5242('0xe')](_0x51c85d));_0x47bf1d(_0x51c85d);})[_0x5242('0x13')](function(_0x2e530e){logger[_0x5242('0xf')](_0x5242('0x14'),_0x2e530e[_0x5242('0x11')],_0x27395f);_0x14f317(_0x50e769['error'](0x1f4,_0x2e530e[_0x5242('0x11')]));});});};
\ No newline at end of file
index e2b9e1c..84284ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status','statusGet','/:id/users','getAgents','post','create','addDisposition','addAnswer','/:id/send','status','addAgents','put','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated'];(function(_0x1a79c6,_0x5bad0b){var _0x301647=function(_0x9d3817){while(--_0x9d3817){_0x1a79c6['push'](_0x1a79c6['shift']());}};_0x301647(++_0x5bad0b);}(_0x814b,0x1a2));var _0xb814=function(_0x1fc1f9,_0x454fb2){_0x1fc1f9=_0x1fc1f9-0x0;var _0x4987ca=_0x814b[_0x1fc1f9];return _0x4987ca;};'use strict';var multer=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var path=require(_0xb814('0x2'));var timeout=require(_0xb814('0x3'));var express=require(_0xb814('0x4'));var router=express[_0xb814('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb814('0x6'));var interaction=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var controller=require(_0xb814('0x9'));router[_0xb814('0xa')]('/',auth[_0xb814('0xb')](),controller['index']);router[_0xb814('0xa')](_0xb814('0xc'),auth['isAuthenticated'](),controller[_0xb814('0xd')]);router[_0xb814('0xa')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0xf')]);router[_0xb814('0xa')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x11')]);router[_0xb814('0xa')](_0xb814('0x12'),auth['isAuthenticated'](),controller[_0xb814('0x13')]);router['get'](_0xb814('0x14'),auth[_0xb814('0xb')](),controller[_0xb814('0x15')]);router[_0xb814('0xa')](_0xb814('0x16'),auth[_0xb814('0xb')](),controller[_0xb814('0x17')]);router[_0xb814('0xa')](_0xb814('0x18'),controller[_0xb814('0x19')]);router[_0xb814('0xa')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x1b')]);router[_0xb814('0x1c')]('/',auth[_0xb814('0xb')](),controller[_0xb814('0x1d')]);router[_0xb814('0x1c')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x1e')]);router['post'](_0xb814('0x12'),auth['isAuthenticated'](),controller[_0xb814('0x1f')]);router[_0xb814('0x1c')]('/:id/notify',controller['notify']);router['post'](_0xb814('0x14'),auth['isAuthenticated'](),controller['addApplications']);router[_0xb814('0x1c')](_0xb814('0x20'),auth[_0xb814('0xb')](),controller['send']);router[_0xb814('0x1c')]('/:id/status',controller[_0xb814('0x21')]);router[_0xb814('0x1c')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x22')]);router[_0xb814('0x23')](_0xb814('0xe'),auth['isAuthenticated'](),controller[_0xb814('0x24')]);router['delete'](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0x25')]);router[_0xb814('0x26')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x27')]);router['delete'](_0xb814('0x12'),auth[_0xb814('0xb')](),controller[_0xb814('0x28')]);router[_0xb814('0x26')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x29')]);module[_0xb814('0x2a')]=router;
\ No newline at end of file
+var _0xc4aa=['statusGet','/:id/users','getAgents','post','addDisposition','addAnswer','notify','addApplications','/:id/send','send','status','put','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../config/environment','./smsAccount.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status'];(function(_0x330b84,_0x4f60bf){var _0x34c611=function(_0x1d24da){while(--_0x1d24da){_0x330b84['push'](_0x330b84['shift']());}};_0x34c611(++_0x4f60bf);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x2235bf,_0x3a06a7){_0x2235bf=_0x2235bf-0x0;var _0x4c3a64=_0xc4aa[_0x2235bf];return _0x4c3a64;};'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['get'](_0xac4a('0x12'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x13')]);router['get'](_0xac4a('0x14'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x15')]);router[_0xac4a('0x8')](_0xac4a('0x16'),controller[_0xac4a('0x17')]);router[_0xac4a('0x8')](_0xac4a('0x18'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x19')]);router[_0xac4a('0x1a')]('/',auth[_0xac4a('0x9')](),controller['create']);router[_0xac4a('0x1a')](_0xac4a('0xe'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x1b')]);router[_0xac4a('0x1a')](_0xac4a('0x10'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x1c')]);router['post']('/:id/notify',controller[_0xac4a('0x1d')]);router[_0xac4a('0x1a')](_0xac4a('0x12'),auth['isAuthenticated'](),controller[_0xac4a('0x1e')]);router[_0xac4a('0x1a')](_0xac4a('0x1f'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x20')]);router[_0xac4a('0x1a')](_0xac4a('0x16'),controller[_0xac4a('0x21')]);router['post'](_0xac4a('0x18'),auth[_0xac4a('0x9')](),controller['addAgents']);router[_0xac4a('0x22')](_0xac4a('0xc'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x23')]);router['delete'](_0xac4a('0xc'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x24')]);router[_0xac4a('0x25')](_0xac4a('0xe'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x26')]);router[_0xac4a('0x25')](_0xac4a('0x10'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x27')]);router[_0xac4a('0x25')](_0xac4a('0x18'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x28')]);module[_0xac4a('0x29')]=router;
\ No newline at end of file
index 0a263ec..eb2b954 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71a9=['bandwidth','csc','infobip','intelepeer','BOOLEAN','TEXT','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','STRING','name','generate','ENUM','twilio','skebby','clicksend','plivo','clickatell'];(function(_0x5bdeed,_0x5b3377){var _0x17bd90=function(_0x18af46){while(--_0x18af46){_0x5bdeed['push'](_0x5bdeed['shift']());}};_0x17bd90(++_0x5b3377);}(_0x71a9,0x129));var _0x971a=function(_0x44c342,_0x1e2e82){_0x44c342=_0x44c342-0x0;var _0x2f8ed8=_0x71a9[_0x44c342];return _0x2f8ed8;};'use strict';var Sequelize=require(_0x971a('0x0'));var rs=require(_0x971a('0x1'));module['exports']={'name':{'type':Sequelize[_0x971a('0x2')],'unique':_0x971a('0x3'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0x971a('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x971a('0x2')],'defaultValue':function(){return rs[_0x971a('0x4')]();}},'phone':{'type':Sequelize[_0x971a('0x2')]},'type':{'type':Sequelize[_0x971a('0x5')](_0x971a('0x6'),_0x971a('0x7'),'connectel',_0x971a('0x8'),_0x971a('0x9'),_0x971a('0xa'),_0x971a('0xb'),_0x971a('0xc'),_0x971a('0xd'),_0x971a('0xe'))},'accountSid':{'type':Sequelize[_0x971a('0x2')]},'authId':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize[_0x971a('0x5')]('SI','TI','GP')},'username':{'type':Sequelize[_0x971a('0x2')]},'password':{'type':Sequelize[_0x971a('0x2')]},'apiKey':{'type':Sequelize[_0x971a('0x2')]},'applicationId':{'type':Sequelize[_0x971a('0x2')]},'accountId':{'type':Sequelize[_0x971a('0x2')]},'senderString':{'type':Sequelize[_0x971a('0x2')]},'deliveryReport':{'type':Sequelize[_0x971a('0xf')],'defaultValue':![]},'description':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x971a('0x10')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x971a('0xf')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x971a('0xf')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x971a('0xf')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x971a('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x971a('0xf')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x971a('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize['STRING']},'mandatoryDispositionPauseId':{'type':Sequelize[_0x971a('0x11')],'comment':_0x971a('0x12')},'mandatoryDisposition':{'type':Sequelize[_0x971a('0xf')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x1e7cb5){if(!_0x1e7cb5)this[_0x971a('0x13')](_0x971a('0x14'),null);this[_0x971a('0x13')](_0x971a('0x15'),_0x1e7cb5);}}};
\ No newline at end of file
+var _0x68c6=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','sequelize','randomstring','STRING','name','skebby','connectel','clicksend','clickatell','bandwidth','infobip','intelepeer','ENUM','BOOLEAN','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER'];(function(_0x47a7d0,_0x4e182d){var _0xb9bd08=function(_0x588ee2){while(--_0x588ee2){_0x47a7d0['push'](_0x47a7d0['shift']());}};_0xb9bd08(++_0x4e182d);}(_0x68c6,0x1cb));var _0x668c=function(_0x58675f,_0x390355){_0x58675f=_0x58675f-0x0;var _0x1cc7f0=_0x68c6[_0x58675f];return _0x1cc7f0;};'use strict';var Sequelize=require(_0x668c('0x0'));var rs=require(_0x668c('0x1'));module['exports']={'name':{'type':Sequelize[_0x668c('0x2')],'unique':_0x668c('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x668c('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0x668c('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x668c('0x2')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0x668c('0x2')]},'type':{'type':Sequelize['ENUM']('twilio',_0x668c('0x4'),_0x668c('0x5'),_0x668c('0x6'),'plivo',_0x668c('0x7'),_0x668c('0x8'),'csc',_0x668c('0x9'),_0x668c('0xa'))},'accountSid':{'type':Sequelize[_0x668c('0x2')]},'authId':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x668c('0x2')]},'smsMethod':{'type':Sequelize[_0x668c('0xb')]('SI','TI','GP')},'username':{'type':Sequelize[_0x668c('0x2')]},'password':{'type':Sequelize['STRING']},'apiKey':{'type':Sequelize['STRING']},'applicationId':{'type':Sequelize[_0x668c('0x2')]},'accountId':{'type':Sequelize[_0x668c('0x2')]},'senderString':{'type':Sequelize[_0x668c('0x2')]},'deliveryReport':{'type':Sequelize[_0x668c('0xc')],'defaultValue':![]},'description':{'type':Sequelize[_0x668c('0x2')]},'notificationTemplate':{'type':Sequelize[_0x668c('0xd')],'defaultValue':function(){return _0x668c('0xe');}},'notificationSound':{'type':Sequelize[_0x668c('0xc')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x668c('0xc')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x668c('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x668c('0xc')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x668c('0xc')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x668c('0x2')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x668c('0xf')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x668c('0xc')],'defaultValue':![],'comment':_0x668c('0x10'),'set':function(_0x37a508){if(!_0x37a508)this[_0x668c('0x11')](_0x668c('0x12'),null);this['setDataValue']('mandatoryDisposition',_0x37a508);}}};
\ No newline at end of file
index 5aa532c..9358fb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3da0=['SmsAccountId','Disposition','getDispositions','ids','addAnswer','findOne','CannedAnswer','removeAnswers','sms','SmsApplication','Applications','account','applications','priority','asc','CmContact','no\x20available\x20attributes','difference','updatedAt','createdAt','CompanyId','ListId','mobile','twilio','from','From','Body','MessageSid','skebby','sender','text','connectel','clicksend','messageId','message_id','Text','infobip','results','csc','originatingAddress','fromNumber','replyMessageId','bandwidth','intelepeer','refid','Sequelize','ValidationError','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','CmList','Contacts','DESC','list','omit','contact','SmsInteraction','spread','interaction','autoclose','push','close','unmanaged','created','ContactId','AttachmentId','UserId','User','unshift','agent','Start','startRouting','receiveMessage','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','stringify','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','bulkCreate','findAndCountAll','getApplications','order','getInteractions','Contact','Owner','fullname','internal','Tag','color','tag','List','out','SmsMessage','Messages','dataValues','inspect','skebby_dispatch_id','requestid','statusInt','status_code','DELIVERED','groupName','clickatell','redif','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','DELIVRD','ACCEPTD','received\x20delivery\x20report\x20from','message-id','state','addAgents','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','register','jayson/promise','client','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','error','code','message','catch','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','update','destroy','get','SmsAccounts','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','map','SmsAccount','rawAttributes','fieldName','key','model','query','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','filters','pick','type','filter','merge','options','includeAll','include','findAll','rows','show','params','keys','length','find','create','user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition'];(function(_0x578dd3,_0xf9e7d3){var _0x57efe2=function(_0x824f6c){while(--_0x824f6c){_0x578dd3['push'](_0x578dd3['shift']());}};_0x57efe2(++_0xf9e7d3);}(_0x3da0,0x15f));var _0x03da=function(_0x5e2cb4,_0x592c64){_0x5e2cb4=_0x5e2cb4-0x0;var _0x282902=_0x3da0[_0x5e2cb4];return _0x282902;};'use strict';var emlformat=require(_0x03da('0x0'));var rimraf=require(_0x03da('0x1'));var zipdir=require(_0x03da('0x2'));var jsonpatch=require(_0x03da('0x3'));var rp=require('request-promise');var moment=require(_0x03da('0x4'));var BPromise=require(_0x03da('0x5'));var Mustache=require(_0x03da('0x6'));var util=require(_0x03da('0x7'));var path=require(_0x03da('0x8'));var sox=require('sox');var csv=require(_0x03da('0x9'));var ejs=require(_0x03da('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x03da('0xb'));var squel=require(_0x03da('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x03da('0xd'));var toCsv=require(_0x03da('0x9'));var querystring=require(_0x03da('0xe'));var Papa=require(_0x03da('0xf'));var Redis=require(_0x03da('0x10'));var authService=require(_0x03da('0x11'));var qs=require(_0x03da('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x03da('0x13'));var logger=require(_0x03da('0x14'))(_0x03da('0x15'));var utils=require('../../config/utils');var config=require(_0x03da('0x16'));var licenseUtil=require(_0x03da('0x17'));var db=require(_0x03da('0x18'))['db'];config[_0x03da('0x19')]=_[_0x03da('0x1a')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x03da('0x19')]));require('./smsAccount.socket')[_0x03da('0x1b')](socket);var jayson=require(_0x03da('0x1c'));var client=jayson[_0x03da('0x1d')]['http']({'port':0x232c});function respondWithRpcPromise(_0x1d79b8,_0x4fcf3c,_0xcc5e19,_0x1d1d17){return new BPromise(function(_0x36c175,_0x589990){var _0x16b888=_0x1d1d17||client;return _0x16b888['request'](_0x1d79b8,_0xcc5e19)[_0x03da('0x1e')](function(_0x1ed488){logger[_0x03da('0x1f')](_0x03da('0x20'),_0x4fcf3c,_0x03da('0x21'));logger[_0x03da('0x22')](_0x03da('0x23'),_0x4fcf3c,'request\x20sent',JSON['stringify'](_0x1ed488));if(_0x1ed488['error']){if(_0x1ed488[_0x03da('0x24')][_0x03da('0x25')]===0x1f4){logger[_0x03da('0x24')](_0x03da('0x20'),_0x4fcf3c,_0x1ed488['error'][_0x03da('0x26')]);return _0x589990(_0x1ed488[_0x03da('0x24')][_0x03da('0x26')]);}logger[_0x03da('0x24')](_0x03da('0x20'),_0x4fcf3c,_0x1ed488[_0x03da('0x24')][_0x03da('0x26')]);return _0x36c175(_0x1ed488[_0x03da('0x24')][_0x03da('0x26')]);}else{logger['info']('SmsAccount,\x20%s,\x20%s',_0x4fcf3c,_0x03da('0x21'));_0x36c175(_0x1ed488['result'][_0x03da('0x26')]);}})[_0x03da('0x27')](function(_0x31b8f8){logger['error'](_0x03da('0x20'),_0x4fcf3c,_0x31b8f8);_0x589990(_0x31b8f8);});});}function respondWithStatusCode(_0x16e299,_0xddb654){_0xddb654=_0xddb654||0xcc;return function(_0x3f2a6b){if(_0x3f2a6b){return _0x16e299[_0x03da('0x28')](_0xddb654);}return _0x16e299[_0x03da('0x29')](_0xddb654)[_0x03da('0x2a')]();};}function respondWithResult(_0x307848,_0x1031f9){_0x1031f9=_0x1031f9||0xc8;return function(_0x38268e){if(_0x38268e){return _0x307848[_0x03da('0x29')](_0x1031f9)['json'](_0x38268e);}};}function respondWithFilteredResult(_0x1443fa,_0x4e92f0){return function(_0x1dfab0){if(_0x1dfab0){var _0x18843f=typeof _0x4e92f0['offset']===_0x03da('0x2b')&&typeof _0x4e92f0[_0x03da('0x2c')]===_0x03da('0x2b');var _0x182556=_0x1dfab0[_0x03da('0x2d')];var _0x4f5d69=_0x18843f?0x0:_0x4e92f0[_0x03da('0x2e')];var _0x522e5a=_0x18843f?_0x1dfab0['count']:_0x4e92f0['offset']+_0x4e92f0[_0x03da('0x2c')];var _0x5acdbd;if(_0x522e5a>=_0x182556){_0x522e5a=_0x182556;_0x5acdbd=0xc8;}else{_0x5acdbd=0xce;}_0x1443fa['status'](_0x5acdbd);return _0x1443fa[_0x03da('0x2f')](_0x03da('0x30'),_0x4f5d69+'-'+_0x522e5a+'/'+_0x182556)[_0x03da('0x31')](_0x1dfab0);}return null;};}function patchUpdates(_0x17cad1){return function(_0x74071c){try{jsonpatch[_0x03da('0x32')](_0x74071c,_0x17cad1,!![]);}catch(_0x420559){return BPromise[_0x03da('0x33')](_0x420559);}return _0x74071c['save']();};}function saveUpdates(_0x19b55a,_0x3be2dc){return function(_0x5c3db8){if(_0x5c3db8){return _0x5c3db8[_0x03da('0x34')](_0x19b55a)[_0x03da('0x1e')](function(_0x177b34){return _0x177b34;});}return null;};}function removeEntity(_0x2d1491,_0x55e825){return function(_0x27c695){if(_0x27c695){return _0x27c695[_0x03da('0x35')]()[_0x03da('0x1e')](function(){var _0x117fac=_0x27c695[_0x03da('0x36')]({'plain':!![]});var _0x4236e4=_0x03da('0x37');return db[_0x03da('0x38')][_0x03da('0x35')]({'where':{'type':_0x4236e4,'resourceId':_0x117fac['id']}})[_0x03da('0x1e')](function(){return _0x27c695;});})[_0x03da('0x1e')](function(){_0x2d1491[_0x03da('0x29')](0xcc)[_0x03da('0x2a')]();});}};}function handleEntityNotFound(_0x553728,_0x440d16){return function(_0xdd36f2){if(!_0xdd36f2){_0x553728['sendStatus'](0x194);}return _0xdd36f2;};}function handleError(_0x222605,_0x2142ad){_0x2142ad=_0x2142ad||0x1f4;return function(_0x4cc764){logger['error'](_0x4cc764[_0x03da('0x39')]);if(_0x4cc764['name']){delete _0x4cc764[_0x03da('0x3a')];}_0x222605[_0x03da('0x29')](_0x2142ad)[_0x03da('0x3b')](_0x4cc764);};}exports[_0x03da('0x3c')]=function(_0x4d507b,_0x4d5f25){var _0x2be90d={'include':[{'model':db[_0x03da('0x3d')],'as':_0x03da('0x3e')}]},_0x1138df={},_0x250057={'count':0x0,'rows':[]};var _0x1cda90=_[_0x03da('0x3f')](db[_0x03da('0x40')][_0x03da('0x41')],function(_0x5de7b7){return{'name':_0x5de7b7[_0x03da('0x42')],'type':_0x5de7b7['type'][_0x03da('0x43')]};});_0x1138df[_0x03da('0x44')]=_[_0x03da('0x3f')](_0x1cda90,'name');_0x1138df[_0x03da('0x45')]=_['keys'](_0x4d507b[_0x03da('0x45')]);_0x1138df['filters']=_['intersection'](_0x1138df['model'],_0x1138df[_0x03da('0x45')]);_0x2be90d['attributes']=_[_0x03da('0x46')](_0x1138df['model'],qs[_0x03da('0x47')](_0x4d507b[_0x03da('0x45')][_0x03da('0x47')]));_0x2be90d[_0x03da('0x48')]=_0x2be90d[_0x03da('0x48')]['length']?_0x2be90d[_0x03da('0x48')]:_0x1138df[_0x03da('0x44')];if(!_0x4d507b[_0x03da('0x45')][_0x03da('0x49')](_0x03da('0x4a'))){_0x2be90d['limit']=qs['limit'](_0x4d507b[_0x03da('0x45')][_0x03da('0x2c')]);_0x2be90d[_0x03da('0x2e')]=qs[_0x03da('0x2e')](_0x4d507b[_0x03da('0x45')]['offset']);}_0x2be90d['order']=qs[_0x03da('0x4b')](_0x4d507b['query'][_0x03da('0x4b')]);_0x2be90d[_0x03da('0x4c')]=qs[_0x03da('0x4d')](_[_0x03da('0x4e')](_0x4d507b['query'],_0x1138df[_0x03da('0x4d')]),_0x1cda90);if(_0x4d507b[_0x03da('0x45')]['filter']){_0x2be90d[_0x03da('0x4c')]=_['merge'](_0x2be90d[_0x03da('0x4c')],{'$or':_[_0x03da('0x3f')](_0x1cda90,function(_0x492530){if(_0x492530[_0x03da('0x4f')]!=='VIRTUAL'){var _0x5f5873={};_0x5f5873[_0x492530['name']]={'$like':'%'+_0x4d507b[_0x03da('0x45')][_0x03da('0x50')]+'%'};return _0x5f5873;}})});}_0x2be90d=_[_0x03da('0x51')]({},_0x2be90d,_0x4d507b[_0x03da('0x52')]);var _0x33b281={'where':_0x2be90d['where']};return db[_0x03da('0x40')][_0x03da('0x2d')](_0x33b281)[_0x03da('0x1e')](function(_0x13e3f8){_0x250057[_0x03da('0x2d')]=_0x13e3f8;if(_0x4d507b[_0x03da('0x45')][_0x03da('0x53')]){_0x2be90d[_0x03da('0x54')]=[{'all':!![]}];}return db[_0x03da('0x40')][_0x03da('0x55')](_0x2be90d);})['then'](function(_0x160f19){_0x250057[_0x03da('0x56')]=_0x160f19;return _0x250057;})[_0x03da('0x1e')](respondWithFilteredResult(_0x4d5f25,_0x2be90d))[_0x03da('0x27')](handleError(_0x4d5f25,null));};exports[_0x03da('0x57')]=function(_0x19dbc7,_0x5e1cf9){var _0xc8b4d6={'raw':![],'where':{'id':_0x19dbc7[_0x03da('0x58')]['id']},'include':[{'model':db['Pause'],'as':_0x03da('0x3e')}]},_0xe199fa={};_0xe199fa['model']=_['keys'](db['SmsAccount']['rawAttributes']);_0xe199fa['query']=_[_0x03da('0x59')](_0x19dbc7[_0x03da('0x45')]);_0xe199fa[_0x03da('0x4d')]=_['intersection'](_0xe199fa['model'],_0xe199fa[_0x03da('0x45')]);_0xc8b4d6[_0x03da('0x48')]=_[_0x03da('0x46')](_0xe199fa['model'],qs[_0x03da('0x47')](_0x19dbc7['query'][_0x03da('0x47')]));_0xc8b4d6['attributes']=_0xc8b4d6[_0x03da('0x48')][_0x03da('0x5a')]?_0xc8b4d6[_0x03da('0x48')]:_0xe199fa[_0x03da('0x44')];if(_0x19dbc7[_0x03da('0x45')][_0x03da('0x53')]){_0xc8b4d6[_0x03da('0x54')]=[{'all':!![]}];}_0xc8b4d6=_[_0x03da('0x51')]({},_0xc8b4d6,_0x19dbc7[_0x03da('0x52')]);return db[_0x03da('0x40')][_0x03da('0x5b')](_0xc8b4d6)[_0x03da('0x1e')](handleEntityNotFound(_0x5e1cf9,null))[_0x03da('0x1e')](respondWithResult(_0x5e1cf9,null))[_0x03da('0x27')](handleError(_0x5e1cf9,null));};exports[_0x03da('0x5c')]=function(_0x445237,_0x3818d9){return db[_0x03da('0x40')][_0x03da('0x5c')](_0x445237['body'],{})['then'](function(_0x116c53){var _0x284e95=_0x445237[_0x03da('0x5d')][_0x03da('0x36')]({'plain':!![]});if(!_0x284e95)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x284e95[_0x03da('0x5e')]===_0x03da('0x5d')){var _0x5eeeba=_0x116c53[_0x03da('0x36')]({'plain':!![]});var _0x1940d0=_0x03da('0x37');return db[_0x03da('0x5f')][_0x03da('0x5b')]({'where':{'name':_0x1940d0,'userProfileId':_0x284e95[_0x03da('0x60')]},'raw':!![]})[_0x03da('0x1e')](function(_0x1e69a6){if(_0x1e69a6&&_0x1e69a6['autoAssociation']===0x0){return db['UserProfileResource'][_0x03da('0x5c')]({'name':_0x5eeeba[_0x03da('0x3a')],'resourceId':_0x5eeeba['id'],'type':_0x1e69a6[_0x03da('0x3a')],'sectionId':_0x1e69a6['id']},{})[_0x03da('0x1e')](function(){return _0x116c53;});}else{return _0x116c53;}})[_0x03da('0x27')](function(_0x30330f){logger[_0x03da('0x24')](_0x03da('0x61'),_0x30330f);throw _0x30330f;});}return _0x116c53;})[_0x03da('0x1e')](respondWithResult(_0x3818d9,0xc9))['catch'](handleError(_0x3818d9,null));};exports[_0x03da('0x34')]=function(_0x57e205,_0x30ed50){if(_0x57e205[_0x03da('0x62')]['id']){delete _0x57e205[_0x03da('0x62')]['id'];}return db['SmsAccount'][_0x03da('0x5b')]({'where':{'id':_0x57e205['params']['id']},'include':[{'model':db['Pause'],'as':_0x03da('0x3e')}]})['then'](handleEntityNotFound(_0x30ed50,null))[_0x03da('0x1e')](saveUpdates(_0x57e205[_0x03da('0x62')],null))[_0x03da('0x1e')](respondWithResult(_0x30ed50,null))[_0x03da('0x27')](handleError(_0x30ed50,null));};exports[_0x03da('0x35')]=function(_0x33fbf5,_0x54ca25){return db[_0x03da('0x40')][_0x03da('0x5b')]({'where':{'id':_0x33fbf5[_0x03da('0x58')]['id']}})[_0x03da('0x1e')](handleEntityNotFound(_0x54ca25,null))[_0x03da('0x1e')](removeEntity(_0x54ca25,null))[_0x03da('0x27')](handleError(_0x54ca25,null));};exports[_0x03da('0x63')]=function(_0x283003,_0x56816d){return db[_0x03da('0x40')]['describe']()[_0x03da('0x1e')](respondWithResult(_0x56816d,null))[_0x03da('0x27')](handleError(_0x56816d,null));};exports[_0x03da('0x64')]=function(_0x9d5f95,_0x34a28f,_0x30eb1c){if(_0x9d5f95[_0x03da('0x62')]['id']){delete _0x9d5f95[_0x03da('0x62')]['id'];}return db[_0x03da('0x40')]['find']({'where':{'id':_0x9d5f95[_0x03da('0x58')]['id']}})['then'](handleEntityNotFound(_0x34a28f,null))[_0x03da('0x1e')](function(_0x1ec8a5){if(_0x1ec8a5){_0x9d5f95['body'][_0x03da('0x65')]=_0x1ec8a5['id'];return db[_0x03da('0x66')][_0x03da('0x5c')](_0x9d5f95[_0x03da('0x62')]);}})[_0x03da('0x1e')](respondWithResult(_0x34a28f,null))[_0x03da('0x27')](handleError(_0x34a28f,null));};exports[_0x03da('0x67')]=function(_0x278b16,_0x24bb2c,_0x2eaa8c){var _0x1b7f58={'raw':![],'where':{}};var _0x3e4d8b={};var _0x5bc2e1={'count':0x0,'rows':[]};return db[_0x03da('0x40')]['findOne']({'where':{'id':_0x278b16[_0x03da('0x58')]['id']}})[_0x03da('0x1e')](handleEntityNotFound(_0x24bb2c,null))[_0x03da('0x1e')](function(_0x4ca971){if(_0x4ca971){_0x3e4d8b[_0x03da('0x44')]=_[_0x03da('0x59')](db[_0x03da('0x66')]['rawAttributes']);_0x3e4d8b[_0x03da('0x45')]=_[_0x03da('0x59')](_0x278b16[_0x03da('0x45')]);_0x3e4d8b['filters']=_[_0x03da('0x46')](_0x3e4d8b['model'],_0x3e4d8b['query']);_0x1b7f58[_0x03da('0x48')]=_[_0x03da('0x46')](_0x3e4d8b[_0x03da('0x44')],qs[_0x03da('0x47')](_0x278b16[_0x03da('0x45')][_0x03da('0x47')]));_0x1b7f58[_0x03da('0x48')]=_0x1b7f58[_0x03da('0x48')][_0x03da('0x5a')]?_0x1b7f58[_0x03da('0x48')]:_0x3e4d8b[_0x03da('0x44')];if(!_0x278b16['query'][_0x03da('0x49')](_0x03da('0x4a'))){_0x1b7f58[_0x03da('0x2c')]=qs[_0x03da('0x2c')](_0x278b16[_0x03da('0x45')][_0x03da('0x2c')]);_0x1b7f58[_0x03da('0x2e')]=qs[_0x03da('0x2e')](_0x278b16['query'][_0x03da('0x2e')]);}_0x1b7f58['order']=qs['sort'](_0x278b16[_0x03da('0x45')][_0x03da('0x4b')]);_0x1b7f58['where']=qs['filters'](_[_0x03da('0x4e')](_0x278b16[_0x03da('0x45')],_0x3e4d8b[_0x03da('0x4d')]));_0x1b7f58[_0x03da('0x4c')][_0x03da('0x65')]=_0x4ca971['id'];if(_0x278b16[_0x03da('0x45')][_0x03da('0x50')]){_0x1b7f58[_0x03da('0x4c')]=_[_0x03da('0x51')](_0x1b7f58['where'],{'$or':_[_0x03da('0x3f')](_0x1b7f58[_0x03da('0x48')],function(_0x1f9cd2){var _0x5408d9={};_0x5408d9[_0x1f9cd2]={'$like':'%'+_0x278b16[_0x03da('0x45')]['filter']+'%'};return _0x5408d9;})});}_0x1b7f58=_['merge']({},_0x1b7f58,_0x278b16[_0x03da('0x52')]);return db[_0x03da('0x66')]['count']({'where':_0x1b7f58['where']})['then'](function(_0x5b704c){_0x5bc2e1[_0x03da('0x2d')]=_0x5b704c;if(_0x278b16[_0x03da('0x45')][_0x03da('0x53')]){_0x1b7f58['include']=[{'all':!![]}];}return db[_0x03da('0x66')][_0x03da('0x55')](_0x1b7f58);})[_0x03da('0x1e')](function(_0x5769c8){_0x5bc2e1['rows']=_0x5769c8;return _0x5bc2e1;});}})[_0x03da('0x1e')](respondWithFilteredResult(_0x24bb2c,_0x1b7f58))[_0x03da('0x27')](handleError(_0x24bb2c,null));};exports['removeDispositions']=function(_0x49018b,_0x27b846,_0x456716){return db[_0x03da('0x40')][_0x03da('0x5b')]({'where':{'id':_0x49018b[_0x03da('0x58')]['id']}})[_0x03da('0x1e')](handleEntityNotFound(_0x27b846,null))[_0x03da('0x1e')](function(_0x157c6f){if(_0x157c6f){return _0x157c6f['removeDispositions'](_0x49018b[_0x03da('0x45')][_0x03da('0x68')]);}})[_0x03da('0x1e')](respondWithStatusCode(_0x27b846,null))[_0x03da('0x27')](handleError(_0x27b846,null));};exports[_0x03da('0x69')]=function(_0x262985,_0xdca35,_0x55edd0){if(_0x262985[_0x03da('0x62')]['id']){delete _0x262985[_0x03da('0x62')]['id'];}return db[_0x03da('0x40')]['find']({'where':{'id':_0x262985[_0x03da('0x58')]['id']}})['then'](handleEntityNotFound(_0xdca35,null))[_0x03da('0x1e')](function(_0x388dd5){if(_0x388dd5){_0x262985[_0x03da('0x62')][_0x03da('0x65')]=_0x388dd5['id'];return db['CannedAnswer'][_0x03da('0x5c')](_0x262985[_0x03da('0x62')]);}})[_0x03da('0x1e')](respondWithResult(_0xdca35,null))[_0x03da('0x27')](handleError(_0xdca35,null));};exports['getAnswers']=function(_0x1c1a04,_0x28f770,_0x3b906b){var _0x485fa2={'raw':![],'where':{}};var _0x34eba5={};var _0x3214c0={'count':0x0,'rows':[]};return db[_0x03da('0x40')][_0x03da('0x6a')]({'where':{'id':_0x1c1a04[_0x03da('0x58')]['id']}})['then'](handleEntityNotFound(_0x28f770,null))[_0x03da('0x1e')](function(_0x19d523){if(_0x19d523){_0x34eba5[_0x03da('0x44')]=_[_0x03da('0x59')](db[_0x03da('0x6b')]['rawAttributes']);_0x34eba5[_0x03da('0x45')]=_[_0x03da('0x59')](_0x1c1a04['query']);_0x34eba5[_0x03da('0x4d')]=_['intersection'](_0x34eba5[_0x03da('0x44')],_0x34eba5[_0x03da('0x45')]);_0x485fa2['attributes']=_[_0x03da('0x46')](_0x34eba5['model'],qs[_0x03da('0x47')](_0x1c1a04[_0x03da('0x45')]['fields']));_0x485fa2[_0x03da('0x48')]=_0x485fa2[_0x03da('0x48')]['length']?_0x485fa2['attributes']:_0x34eba5[_0x03da('0x44')];if(!_0x1c1a04[_0x03da('0x45')][_0x03da('0x49')](_0x03da('0x4a'))){_0x485fa2['limit']=qs['limit'](_0x1c1a04['query'][_0x03da('0x2c')]);_0x485fa2[_0x03da('0x2e')]=qs[_0x03da('0x2e')](_0x1c1a04[_0x03da('0x45')][_0x03da('0x2e')]);}_0x485fa2['order']=qs[_0x03da('0x4b')](_0x1c1a04['query']['sort']);_0x485fa2[_0x03da('0x4c')]=qs['filters'](_[_0x03da('0x4e')](_0x1c1a04[_0x03da('0x45')],_0x34eba5[_0x03da('0x4d')]));_0x485fa2[_0x03da('0x4c')][_0x03da('0x65')]=_0x19d523['id'];if(_0x1c1a04['query'][_0x03da('0x50')]){_0x485fa2[_0x03da('0x4c')]=_[_0x03da('0x51')](_0x485fa2['where'],{'$or':_[_0x03da('0x3f')](_0x485fa2['attributes'],function(_0x54bc2e){var _0x27208d={};_0x27208d[_0x54bc2e]={'$like':'%'+_0x1c1a04[_0x03da('0x45')][_0x03da('0x50')]+'%'};return _0x27208d;})});}_0x485fa2=_[_0x03da('0x51')]({},_0x485fa2,_0x1c1a04[_0x03da('0x52')]);return db['CannedAnswer']['count']({'where':_0x485fa2[_0x03da('0x4c')]})['then'](function(_0x6bac37){_0x3214c0[_0x03da('0x2d')]=_0x6bac37;if(_0x1c1a04[_0x03da('0x45')][_0x03da('0x53')]){_0x485fa2[_0x03da('0x54')]=[{'all':!![]}];}return db[_0x03da('0x6b')][_0x03da('0x55')](_0x485fa2);})[_0x03da('0x1e')](function(_0x15b32c){_0x3214c0[_0x03da('0x56')]=_0x15b32c;return _0x3214c0;});}})[_0x03da('0x1e')](respondWithFilteredResult(_0x28f770,_0x485fa2))[_0x03da('0x27')](handleError(_0x28f770,null));};exports[_0x03da('0x6c')]=function(_0x4f51a2,_0x2563dd,_0x174063){return db[_0x03da('0x40')][_0x03da('0x5b')]({'where':{'id':_0x4f51a2[_0x03da('0x58')]['id']}})['then'](handleEntityNotFound(_0x2563dd,null))['then'](function(_0x45c190){if(_0x45c190){return _0x45c190[_0x03da('0x6c')](_0x4f51a2[_0x03da('0x45')][_0x03da('0x68')]);}})[_0x03da('0x1e')](respondWithStatusCode(_0x2563dd,null))['catch'](handleError(_0x2563dd,null));};exports['notify']=function(_0x25d5a6,_0xb38eb3,_0x2ec5a1){var _0x64b945={'channel':_0x03da('0x6d')};var _0x430a8b=[];var _0x24a8cc=[];var _0x2038bb={};return db[_0x03da('0x40')]['find']({'where':{'id':_0x25d5a6[_0x03da('0x58')]['id']},'include':[{'model':db[_0x03da('0x6e')],'as':_0x03da('0x6f')}]})[_0x03da('0x1e')](handleEntityNotFound(_0xb38eb3,null))[_0x03da('0x1e')](function(_0x1771f1){_0x64b945[_0x03da('0x70')]=_0x1771f1;_0x64b945[_0x03da('0x71')]=_['orderBy'](_0x1771f1[_0x03da('0x6f')],[_0x03da('0x72')],[_0x03da('0x73')]);if(_0x64b945['account'][_0x03da('0x6f')]){delete _0x64b945[_0x03da('0x70')][_0x03da('0x6f')];}return db[_0x03da('0x74')][_0x03da('0x63')]();})['then'](function(_0x460351){if(!_0x460351){throw new db['Sequelize']['ValidationError'](_0x03da('0x75'));}_0x430a8b=_[_0x03da('0x76')](_[_0x03da('0x59')](_0x460351),['createdAt',_0x03da('0x77')]);_0x24a8cc=_[_0x03da('0x76')](_[_0x03da('0x59')](_0x460351),[_0x03da('0x78'),_0x03da('0x77'),_0x03da('0x79'),_0x03da('0x7a')]);_0x64b945[_0x03da('0x62')]={'mapKey':_0x03da('0x7b')};if(_0x64b945[_0x03da('0x70')]['type']){switch(_0x64b945[_0x03da('0x70')]['type']){case _0x03da('0x7c'):_0x64b945['body'][_0x03da('0x7d')]=_0x25d5a6[_0x03da('0x62')][_0x03da('0x7e')];_0x64b945[_0x03da('0x62')][_0x03da('0x62')]=_0x25d5a6['body'][_0x03da('0x7f')];_0x64b945[_0x03da('0x62')]['messageId']=_0x25d5a6[_0x03da('0x62')][_0x03da('0x80')];break;case _0x03da('0x81'):_0x64b945[_0x03da('0x62')]['from']='+'+_0x25d5a6[_0x03da('0x62')][_0x03da('0x82')];_0x64b945[_0x03da('0x62')]['body']=_0x25d5a6[_0x03da('0x62')][_0x03da('0x83')];break;case _0x03da('0x84'):_0x64b945[_0x03da('0x62')][_0x03da('0x7d')]=_0x25d5a6[_0x03da('0x62')][_0x03da('0x7d')];_0x64b945[_0x03da('0x62')][_0x03da('0x62')]=_0x25d5a6[_0x03da('0x62')][_0x03da('0x26')];break;case _0x03da('0x85'):_0x64b945[_0x03da('0x62')]['from']=_0x25d5a6['body'][_0x03da('0x7d')];_0x64b945[_0x03da('0x62')]['body']=_0x25d5a6[_0x03da('0x62')][_0x03da('0x62')];_0x64b945['body'][_0x03da('0x86')]=_0x25d5a6[_0x03da('0x62')][_0x03da('0x87')];break;case'plivo':_0x64b945['body'][_0x03da('0x7d')]=_0x25d5a6['body'][_0x03da('0x7e')];_0x64b945[_0x03da('0x62')][_0x03da('0x62')]=_0x25d5a6[_0x03da('0x62')][_0x03da('0x88')];_0x64b945[_0x03da('0x62')][_0x03da('0x86')]=_0x25d5a6['body']['MessageUUID'];break;case _0x03da('0x89'):_0x64b945[_0x03da('0x62')][_0x03da('0x7d')]='+'+_0x25d5a6[_0x03da('0x62')][_0x03da('0x8a')][0x0][_0x03da('0x7d')];_0x64b945[_0x03da('0x62')][_0x03da('0x62')]=_0x25d5a6[_0x03da('0x62')][_0x03da('0x8a')][0x0][_0x03da('0x83')];_0x64b945[_0x03da('0x62')][_0x03da('0x86')]=_0x25d5a6['body'][_0x03da('0x8a')][0x0]['messageId'];break;case _0x03da('0x8b'):_0x64b945[_0x03da('0x62')]['from']=_0x25d5a6[_0x03da('0x62')][_0x03da('0x8c')];_0x64b945[_0x03da('0x62')][_0x03da('0x62')]=_0x25d5a6[_0x03da('0x62')]['segmentedMessage'][_0x03da('0x26')];break;case'clickatell':_0x64b945['body'][_0x03da('0x7d')]=_0x25d5a6['body'][_0x03da('0x8d')];_0x64b945[_0x03da('0x62')][_0x03da('0x62')]=_0x25d5a6[_0x03da('0x62')][_0x03da('0x83')];_0x64b945[_0x03da('0x62')][_0x03da('0x86')]=_0x25d5a6[_0x03da('0x62')][_0x03da('0x8e')];break;case _0x03da('0x8f'):_0x64b945[_0x03da('0x62')][_0x03da('0x86')]=_0x25d5a6[_0x03da('0x62')][0x0]['message']['id'];_0x64b945[_0x03da('0x62')][_0x03da('0x7d')]=_0x25d5a6[_0x03da('0x62')][0x0]['message'][_0x03da('0x7d')];_0x64b945[_0x03da('0x62')][_0x03da('0x62')]=_0x25d5a6[_0x03da('0x62')][0x0]['message'][_0x03da('0x83')];break;case _0x03da('0x90'):_0x64b945[_0x03da('0x62')]['from']=_0x25d5a6[_0x03da('0x62')][_0x03da('0x7d')];_0x64b945[_0x03da('0x62')][_0x03da('0x62')]=_0x25d5a6[_0x03da('0x62')][_0x03da('0x26')];_0x64b945[_0x03da('0x62')]['messageId']=_0x25d5a6[_0x03da('0x62')][_0x03da('0x91')];break;}}if(_0x64b945[_0x03da('0x62')]['id']){delete _0x64b945[_0x03da('0x62')]['id'];}if(_['isNil'](_0x64b945[_0x03da('0x62')][_0x03da('0x7d')])){throw new db[(_0x03da('0x92'))][(_0x03da('0x93'))](_0x03da('0x94'));}if(_[_0x03da('0x95')](_0x64b945[_0x03da('0x62')][_0x03da('0x62')])||_0x64b945[_0x03da('0x62')][_0x03da('0x62')]===''){throw new db['Sequelize'][(_0x03da('0x93'))](_0x03da('0x96'));}if(_[_0x03da('0x95')](_0x64b945['body'][_0x03da('0x97')])){throw new db['Sequelize'][(_0x03da('0x93'))](_0x03da('0x98')+_0x24a8cc);}if(!_[_0x03da('0x99')](_0x24a8cc,_0x64b945['body'][_0x03da('0x97')])){throw new db['Sequelize']['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x24a8cc);}_0x2038bb[_0x64b945[_0x03da('0x62')][_0x03da('0x97')]]=_0x64b945['body']['from'];return db[_0x03da('0x9a')][_0x03da('0x5b')]({'where':{'id':_0x64b945[_0x03da('0x70')][_0x03da('0x7a')]},'include':[{'model':db[_0x03da('0x74')],'as':_0x03da('0x9b'),'where':_0x2038bb,'limit':0x1,'order':[[_0x03da('0x77'),_0x03da('0x9c')]]}]});})['then'](handleEntityNotFound(_0xb38eb3,null))[_0x03da('0x1e')](function(_0x2f03f8){if(_0x2f03f8){_0x64b945[_0x03da('0x9d')]=_[_0x03da('0x9e')](_0x2f03f8,[_0x03da('0x9b')]);if(_0x2f03f8[_0x03da('0x9b')][_0x03da('0x5a')]){return _0x2f03f8[_0x03da('0x9b')][0x0];}var _0x5a29d3=_[_0x03da('0x1a')](_0x64b945[_0x03da('0x62')],{'firstName':_0x64b945['body'][_0x03da('0x7d')],'ListId':_0x2f03f8['id']});_0x5a29d3[_0x64b945[_0x03da('0x62')][_0x03da('0x97')]]=_0x64b945['body'][_0x03da('0x7d')];return db[_0x03da('0x74')][_0x03da('0x5c')](_0x5a29d3,{'fields':_0x430a8b,'raw':!![]});}})[_0x03da('0x1e')](handleEntityNotFound(_0xb38eb3,null))[_0x03da('0x1e')](function(_0x37284f){if(_0x37284f){_0x64b945[_0x03da('0x9f')]=_0x37284f;var _0x222517={'ContactId':_0x37284f['id'],'phone':_0x64b945[_0x03da('0x62')][_0x03da('0x7d')],'SmsAccountId':_0x25d5a6[_0x03da('0x58')]['id']};var _0x1c370a={'ContactId':_0x37284f['id'],'SmsAccountId':_0x25d5a6[_0x03da('0x58')]['id'],'closed':![]};return db['SmsInteraction'][_0x03da('0x5b')]({'where':_0x1c370a})[_0x03da('0x1e')](function(_0x44d209){if(_0x44d209){return[_0x44d209,![]];}return db[_0x03da('0xa0')][_0x03da('0x5c')](_0x222517)[_0x03da('0x1e')](function(_0x439f14){return[_0x439f14,!![]];});});}})[_0x03da('0xa1')](function(_0x1a7382,_0x2224d6){_0x64b945[_0x03da('0xa2')]=_0x1a7382[_0x03da('0x36')]({'plain':!![]});_0x64b945[_0x03da('0xa2')]['created']=![];if(_0x2224d6){if(_0x64b945[_0x03da('0x70')][_0x03da('0xa3')]){_0x64b945['applications'][_0x03da('0xa4')]({'id':0x0,'priority':_0x64b945['applications'][_0x03da('0x5a')]+0x1,'app':_0x03da('0xa5'),'appdata':_0x03da('0xa6'),'interval':'*,*,*,*'});}_0x64b945[_0x03da('0xa2')][_0x03da('0xa7')]=!![];}return db['SmsMessage'][_0x03da('0x5c')]({'phone':_0x64b945['body'][_0x03da('0x7d')],'messageId':_0x64b945[_0x03da('0x62')][_0x03da('0x86')],'body':_0x64b945[_0x03da('0x62')][_0x03da('0x62')],'SmsAccountId':_0x25d5a6['params']['id'],'SmsInteractionId':_0x1a7382['id'],'direction':'in','ContactId':_0x1a7382[_0x03da('0xa8')],'AttachmentId':_0x64b945[_0x03da('0x62')][_0x03da('0xa9')]});})[_0x03da('0x1e')](function(_0x4f16ea){_0x64b945[_0x03da('0x26')]=_0x4f16ea;if(_0x64b945[_0x03da('0xa2')][_0x03da('0xaa')]){return db[_0x03da('0xab')][_0x03da('0x5b')]({'attributes':['id',_0x03da('0x3a')],'where':{'id':_0x64b945[_0x03da('0xa2')][_0x03da('0xaa')]}})[_0x03da('0x1e')](function(_0x4317cf){if(_0x4317cf){_0x64b945[_0x03da('0x71')][_0x03da('0xac')]({'id':0x0,'priority':0x0,'app':_0x03da('0xad'),'appdata':_0x4317cf[_0x03da('0x3a')]+','+(_0x64b945[_0x03da('0x70')]['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x03da('0xae'),_0x03da('0xaf'),_0x64b945);});}return respondWithRpcPromise(_0x03da('0xae'),'startRouting',_0x64b945);})[_0x03da('0x1e')](function(_0x52c1fa){if(_0x52c1fa){var _0xfdc618=0xc8;var _0x554ba7=_0x03da('0xb0');logger['info']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x554ba7,_0xfdc618,_0x03da('0xb1'));logger['debug'](_0x03da('0xb2'),_0x554ba7,_0xfdc618,_0x03da('0xb1'),JSON[_0x03da('0xb3')](_0x52c1fa));if(_0x64b945[_0x03da('0x70')][_0x03da('0x4f')]==='twilio'){return _0xb38eb3[_0x03da('0x29')](_0xfdc618)['set']('Content-Type',_0x03da('0xb4'))['send'](_0x03da('0xb5'));}else{return _0xb38eb3[_0x03da('0x29')](_0xfdc618)[_0x03da('0x31')](_0x52c1fa);}}})[_0x03da('0x27')](handleError(_0xb38eb3,null));};exports[_0x03da('0xb6')]=function(_0x2b5376,_0x5bbca1,_0x5d06fe){return db['SmsAccount'][_0x03da('0x6a')]({'where':{'id':_0x2b5376[_0x03da('0x58')]['id']}})[_0x03da('0x1e')](handleEntityNotFound(_0x5bbca1,null))[_0x03da('0x1e')](function(_0x35b41e){if(_0x35b41e){return db[_0x03da('0xb7')][_0x03da('0xb8')](function(_0x20dbf5){return db[_0x03da('0x6e')]['destroy']({'where':{'SmsAccountId':_0x2b5376[_0x03da('0x58')]['id']},'transaction':_0x20dbf5})['then'](function(_0xde0a68){var _0x58f089=_[_0x03da('0x3f')](_0x2b5376[_0x03da('0x62')],function(_0x15f0de){_0x15f0de['SmsAccountId']=_0x2b5376[_0x03da('0x58')]['id'];return _0x15f0de;});return db['SmsApplication'][_0x03da('0xb9')](_0x58f089,{'transaction':_0x20dbf5});});})[_0x03da('0x1e')](function(){return db[_0x03da('0x6e')][_0x03da('0xba')]({'where':{'SmsAccountId':_0x2b5376[_0x03da('0x58')]['id']},'order':_0x03da('0x72')});});}})[_0x03da('0x1e')](respondWithResult(_0x5bbca1,null))['catch'](handleError(_0x5bbca1,null));};exports[_0x03da('0xbb')]=function(_0x45429a,_0x4c4aab,_0x467df5){var _0x11ebd0={};var _0x10769a={};var _0x4171d6;var _0x4ab37f;return db[_0x03da('0x40')][_0x03da('0x6a')]({'where':{'id':_0x45429a[_0x03da('0x58')]['id']}})['then'](handleEntityNotFound(_0x4c4aab,null))[_0x03da('0x1e')](function(_0x39ebe1){if(_0x39ebe1){_0x4171d6=_0x39ebe1;_0x10769a['model']=_['keys'](db[_0x03da('0x6e')][_0x03da('0x41')]);_0x10769a[_0x03da('0x45')]=_[_0x03da('0x59')](_0x45429a[_0x03da('0x45')]);_0x10769a['filters']=_['intersection'](_0x10769a['model'],_0x10769a['query']);_0x11ebd0[_0x03da('0x48')]=_[_0x03da('0x46')](_0x10769a['model'],qs[_0x03da('0x47')](_0x45429a[_0x03da('0x45')][_0x03da('0x47')]));_0x11ebd0[_0x03da('0x48')]=_0x11ebd0[_0x03da('0x48')][_0x03da('0x5a')]?_0x11ebd0[_0x03da('0x48')]:_0x10769a[_0x03da('0x44')];_0x11ebd0[_0x03da('0xbc')]=qs[_0x03da('0x4b')](_0x45429a[_0x03da('0x45')]['sort']);_0x11ebd0['where']=qs[_0x03da('0x4d')](_[_0x03da('0x4e')](_0x45429a[_0x03da('0x45')],_0x10769a[_0x03da('0x4d')]));if(_0x45429a[_0x03da('0x45')][_0x03da('0x50')]){_0x11ebd0['where']=_[_0x03da('0x51')](_0x11ebd0[_0x03da('0x4c')],{'$or':_['map'](_0x11ebd0[_0x03da('0x48')],function(_0x443a52){var _0x497a05={};_0x497a05[_0x443a52]={'$like':'%'+_0x45429a['query'][_0x03da('0x50')]+'%'};return _0x497a05;})});}_0x11ebd0=_['merge']({},_0x11ebd0,_0x45429a[_0x03da('0x52')]);return _0x4171d6[_0x03da('0xbb')](_0x11ebd0);}})[_0x03da('0x1e')](function(_0x14877b){if(_0x14877b){_0x4ab37f=_0x14877b['length'];if(!_0x45429a['query'][_0x03da('0x49')](_0x03da('0x4a'))){_0x11ebd0[_0x03da('0x2c')]=qs[_0x03da('0x2c')](_0x45429a[_0x03da('0x45')][_0x03da('0x2c')]);_0x11ebd0['offset']=qs[_0x03da('0x2e')](_0x45429a['query'][_0x03da('0x2e')]);}return _0x4171d6['getApplications'](_0x11ebd0);}})[_0x03da('0x1e')](function(_0x4fe2ce){if(_0x4fe2ce){return _0x4fe2ce?{'count':_0x4ab37f,'rows':_0x4fe2ce}:null;}})[_0x03da('0x1e')](respondWithResult(_0x4c4aab,null))['catch'](handleError(_0x4c4aab,null));};exports[_0x03da('0xbd')]=function(_0x297b2c,_0x2f13a0,_0x3a3739){var _0x13afa6={'raw':![],'where':{}};var _0x4ab74f={};var _0x14bd1d={'count':0x0,'rows':[]};return db[_0x03da('0x40')][_0x03da('0x6a')]({'where':{'id':_0x297b2c[_0x03da('0x58')]['id']}})[_0x03da('0x1e')](handleEntityNotFound(_0x2f13a0,null))['then'](function(_0x5a8198){if(_0x5a8198){_0x4ab74f[_0x03da('0x44')]=_['keys'](db[_0x03da('0xa0')]['rawAttributes']);_0x4ab74f[_0x03da('0x45')]=_['keys'](_0x297b2c['query']);_0x4ab74f[_0x03da('0x4d')]=_[_0x03da('0x46')](_0x4ab74f['model'],_0x4ab74f[_0x03da('0x45')]);_0x13afa6[_0x03da('0x48')]=_['intersection'](_0x4ab74f[_0x03da('0x44')],qs['fields'](_0x297b2c['query'][_0x03da('0x47')]));_0x13afa6['attributes']=_0x13afa6['attributes'][_0x03da('0x5a')]?_0x13afa6[_0x03da('0x48')]:_0x4ab74f[_0x03da('0x44')];if(!_0x297b2c[_0x03da('0x45')][_0x03da('0x49')]('nolimit')){_0x13afa6[_0x03da('0x2c')]=qs[_0x03da('0x2c')](_0x297b2c[_0x03da('0x45')]['limit']);_0x13afa6[_0x03da('0x2e')]=qs[_0x03da('0x2e')](_0x297b2c['query'][_0x03da('0x2e')]);}_0x13afa6['order']=qs['sort'](_0x297b2c[_0x03da('0x45')][_0x03da('0x4b')]);_0x13afa6[_0x03da('0x4c')]=qs['filters'](_[_0x03da('0x4e')](_0x297b2c[_0x03da('0x45')],_0x4ab74f[_0x03da('0x4d')]));_0x13afa6[_0x03da('0x4c')][_0x03da('0x65')]=_0x5a8198['id'];if(_0x297b2c[_0x03da('0x45')][_0x03da('0x50')]){_0x13afa6['where']=_[_0x03da('0x51')](_0x13afa6[_0x03da('0x4c')],{'$or':_[_0x03da('0x3f')](_0x13afa6[_0x03da('0x48')],function(_0x2f9ff6){var _0xe2fb46={};_0xe2fb46[_0x2f9ff6]={'$like':'%'+_0x297b2c[_0x03da('0x45')][_0x03da('0x50')]+'%'};return _0xe2fb46;})});}_0x13afa6=_['merge']({},_0x13afa6,_0x297b2c[_0x03da('0x52')]);return db[_0x03da('0xa0')][_0x03da('0x2d')]({'where':_0x13afa6[_0x03da('0x4c')]})[_0x03da('0x1e')](function(_0x41ab71){_0x14bd1d[_0x03da('0x2d')]=_0x41ab71;if(_0x297b2c[_0x03da('0x45')][_0x03da('0x53')]){_0x13afa6[_0x03da('0x54')]=[{'model':db[_0x03da('0x74')],'as':_0x03da('0xbe'),'required':![]},{'model':db['User'],'as':_0x03da('0xbf'),'attributes':[_0x03da('0x3a'),_0x03da('0xc0'),_0x03da('0xc1')],'required':![]},{'model':db[_0x03da('0xc2')],'as':'Tags','attributes':['id',_0x03da('0x3a'),_0x03da('0xc3')],'where':_0x297b2c['query'][_0x03da('0xc4')]?{'id':_0x297b2c[_0x03da('0x45')]['tag']}:undefined,'required':_0x297b2c[_0x03da('0x45')]['tag']?!![]:![]}];}return db[_0x03da('0xa0')][_0x03da('0x55')](_0x13afa6);})[_0x03da('0x1e')](function(_0x17ae51){_0x14bd1d[_0x03da('0x56')]=_0x17ae51;return _0x14bd1d;});}})[_0x03da('0x1e')](respondWithFilteredResult(_0x2f13a0,_0x13afa6))['catch'](handleError(_0x2f13a0,null));};exports[_0x03da('0x3b')]=function(_0x44aa29,_0x454798,_0x403253){var _0x5ac6ff,_0x3178b4,_0x4078de;if(_[_0x03da('0x95')](_0x44aa29[_0x03da('0x62')][_0x03da('0x62')])||_0x44aa29[_0x03da('0x62')]['body']===''){throw new db[(_0x03da('0x92'))][(_0x03da('0x93'))](_0x03da('0x96'));}if(_[_0x03da('0x95')](_0x44aa29['body']['to'])){throw new db[(_0x03da('0x92'))][(_0x03da('0x93'))]('to\x20is\x20mandatory');}_0x5ac6ff=_0x44aa29[_0x03da('0x62')]['to'];return db[_0x03da('0x40')][_0x03da('0x5b')]({'where':{'id':_0x44aa29[_0x03da('0x58')]['id']},'include':[{'model':db[_0x03da('0x9a')],'as':_0x03da('0xc5'),'include':[{'model':db[_0x03da('0x74')],'as':_0x03da('0x9b'),'where':{'mobile':_0x5ac6ff},'limit':0x1,'order':[[_0x03da('0x77'),'DESC']]}]}]})[_0x03da('0x1e')](handleEntityNotFound(_0x454798,null))['then'](function(_0x278129){if(_0x278129&&_0x278129[_0x03da('0xc5')]){_0x3178b4=_0x278129['get']({'plain':!![]});if(_0x3178b4[_0x03da('0xc5')]&&_0x3178b4['List'][_0x03da('0x9b')][_0x03da('0x5a')]){return _0x3178b4['List'][_0x03da('0x9b')][0x0];}return db['CmContact']['create'](_[_0x03da('0x1a')](_0x44aa29[_0x03da('0x62')],{'firstName':_0x5ac6ff,'mobile':_0x5ac6ff,'phone':_0x5ac6ff,'ListId':_0x3178b4[_0x03da('0x7a')]}));}})[_0x03da('0x1e')](handleEntityNotFound(_0x454798,null))['then'](function(_0x471310){if(_0x471310){_0x4078de=_0x471310;return db['SmsInteraction'][_0x03da('0x5b')]({'where':{'ContactId':_0x4078de['id'],'closed':![],'SmsAccountId':_0x3178b4['id']}})[_0x03da('0x1e')](function(_0xa2481e){if(_0xa2481e){return[_0xa2481e,![]];}return db[_0x03da('0xa0')][_0x03da('0x5c')]({'UserId':_0x44aa29[_0x03da('0x5d')]['id'],'ContactId':_0x4078de['id'],'SmsAccountId':_0x3178b4['id'],'phone':_0x5ac6ff,'firstMsgDirection':_0x03da('0xc6'),'Messages':[_[_0x03da('0x51')](_0x44aa29[_0x03da('0x62')],{'read':![],'body':_0x44aa29['body']['body'],'phone':_0x5ac6ff,'SmsAccountId':_0x3178b4['id'],'UserId':_0x44aa29['user']['id'],'ContactId':_0x4078de['id']})]},{'include':[{'model':db[_0x03da('0xc7')],'as':_0x03da('0xc8')}]})['then'](function(_0x400945){return[_0x400945,!![]];});});}})[_0x03da('0xa1')](function(_0x521753,_0x2af6b8){if(_0x2af6b8){return _0x521753;}return db[_0x03da('0xc7')][_0x03da('0x5c')](_[_0x03da('0x51')](_0x44aa29[_0x03da('0x62')],{'read':![],'body':_0x44aa29[_0x03da('0x62')][_0x03da('0x62')],'phone':_0x5ac6ff,'SmsAccountId':_0x3178b4['id'],'SmsInteractionId':_0x521753['id'],'UserId':_0x44aa29[_0x03da('0x5d')]['id'],'ContactId':_0x4078de['id']}))[_0x03da('0x1e')](function(_0x2437d8){_0x521753['dataValues'][_0x03da('0xc8')]=[];_0x521753[_0x03da('0xc9')]['Messages']['push'](_0x2437d8[_0x03da('0xc9')]);return _0x521753;});})['then'](respondWithResult(_0x454798,null))[_0x03da('0x27')](handleError(_0x454798,null));};exports[_0x03da('0x29')]=function(_0x371fe4,_0x4ff860,_0x3c5aed){if(_0x371fe4[_0x03da('0x62')]['id']){delete _0x371fe4[_0x03da('0x62')]['id'];}var _0x23d07a,_0x4b772e,_0x51caca;return db[_0x03da('0x40')][_0x03da('0x5b')]({'where':{'id':_0x371fe4[_0x03da('0x58')]['id']}})[_0x03da('0x1e')](handleEntityNotFound(_0x4ff860,null))[_0x03da('0x1e')](function(_0x301dec){if(_0x301dec){_0x51caca=_0x301dec;logger[_0x03da('0x22')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x03da('0x29'),'received\x20delivery\x20report\x20from',_0x301dec[_0x03da('0x4f')],util[_0x03da('0xca')](_0x371fe4[_0x03da('0x62')],{'showHidden':![],'depth':null}));switch(_0x301dec[_0x03da('0x4f')]){case _0x03da('0x81'):if(_0x371fe4[_0x03da('0x62')][_0x03da('0xcb')]&&_0x371fe4[_0x03da('0x62')][_0x03da('0x29')]){_0x4b772e=_0x371fe4['body'][_0x03da('0x29')];return db['SmsMessage']['find']({'where':{'messageId':_0x371fe4[_0x03da('0x62')][_0x03da('0xcb')]}});}break;case _0x03da('0x84'):if(_0x371fe4[_0x03da('0x62')][_0x03da('0xcc')]&&_0x371fe4['body'][_0x03da('0xcd')]){_0x4b772e=_0x371fe4[_0x03da('0x62')][_0x03da('0xcd')];return db[_0x03da('0xc7')][_0x03da('0x5b')]({'where':{'messageId':_0x371fe4[_0x03da('0x62')]['requestid']}});}break;case _0x03da('0x85'):if(_0x371fe4[_0x03da('0x62')][_0x03da('0x87')]&&_0x371fe4[_0x03da('0x62')][_0x03da('0xce')]){_0x4b772e=_0x371fe4[_0x03da('0x62')][_0x03da('0xce')];return db['SmsMessage'][_0x03da('0x5b')]({'where':{'messageId':_0x371fe4[_0x03da('0x62')][_0x03da('0x87')]}});}break;case'infobip':var _0x1b6098=_0x371fe4[_0x03da('0x62')][_0x03da('0x8a')][0x0];if(_0x1b6098[_0x03da('0x86')]&&_0x1b6098[_0x03da('0x29')]['groupName']===_0x03da('0xcf')){_0x4b772e=_0x1b6098[_0x03da('0x29')][_0x03da('0xd0')];return db[_0x03da('0xc7')]['find']({'where':{'messageId':_0x1b6098['messageId']}});}break;case _0x03da('0xd1'):if(_0x371fe4[_0x03da('0x62')][_0x03da('0x86')]&&_0x371fe4[_0x03da('0x62')]['status']){_0x4b772e=_0x371fe4['body'][_0x03da('0x29')];return db[_0x03da('0xc7')][_0x03da('0x5b')]({'where':{'messageId':_0x371fe4[_0x03da('0x62')][_0x03da('0x86')]}});}break;case _0x03da('0x8f'):if(_0x371fe4[_0x03da('0x62')][0x0][_0x03da('0x26')]['id']){_0x4b772e=_0x371fe4['body'][0x0][_0x03da('0x4f')];return db[_0x03da('0xc7')]['find']({'where':{'messageId':_0x371fe4[_0x03da('0x62')][0x0][_0x03da('0x26')]['id']}});}break;case _0x03da('0x90'):if(_0x371fe4[_0x03da('0x62')]['redif']&&_0x371fe4[_0x03da('0x62')][_0x03da('0x29')]){_0x4b772e=_0x371fe4[_0x03da('0x62')][_0x03da('0x29')];return db[_0x03da('0xc7')][_0x03da('0x5b')]({'where':{'messageId':_0x371fe4[_0x03da('0x62')][_0x03da('0xd2')]}});}break;}}})[_0x03da('0x1e')](handleEntityNotFound(_0x4ff860,null))['then'](function(_0x3d4500){if(_0x3d4500){_0x23d07a=_0x3d4500;switch(_0x51caca['type']){case'skebby':if(_0x4b772e===_0x03da('0xcf')){return _0x23d07a[_0x03da('0x34')]({'read':!![]});}else{logger[_0x03da('0x24')](_0x03da('0x23'),_0x03da('0x29'),_0x03da('0x81'),util[_0x03da('0xca')](_0x371fe4[_0x03da('0x62')],{'showHidden':![],'depth':null}));}break;case _0x03da('0x84'):if(_0x4b772e==='1'){return _0x23d07a[_0x03da('0x34')]({'read':!![]});}else{logger['error'](_0x03da('0x23'),'status','skebby',util[_0x03da('0xca')](_0x371fe4[_0x03da('0x62')],{'showHidden':![],'depth':null}));}break;case'clicksend':if(!_0x371fe4[_0x03da('0x62')][_0x03da('0xd3')]&&_0x4b772e>=0xc8&&_0x4b772e<=0xce){return _0x23d07a[_0x03da('0x34')]({'read':!![]});}else{logger[_0x03da('0x24')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x03da('0x29'),_0x03da('0x85'),util[_0x03da('0xca')](_0x371fe4[_0x03da('0x62')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x2ed0a8=_0x371fe4['body'][_0x03da('0x8a')][0x0];if(_0x2ed0a8[_0x03da('0x29')][_0x03da('0xd0')]==='DELIVERED'){return _0x23d07a['update']({'read':!![]});}else{logger[_0x03da('0x24')](_0x03da('0x23'),_0x03da('0x29'),_0x03da('0x89'),util[_0x03da('0xca')](_0x371fe4[_0x03da('0x62')],{'showHidden':![],'depth':null}));}break;case'clickatell':if(_0x4b772e==_0x03da('0xd4')||_0x4b772e==_0x03da('0xd5')){return _0x23d07a[_0x03da('0x34')]({'read':!![]});}else{logger[_0x03da('0x24')](_0x03da('0x23'),_0x03da('0x29'),'clickatell',util['inspect'](_0x371fe4[_0x03da('0x62')],{'showHidden':![],'depth':null}));}break;case _0x03da('0x8f'):if(_0x4b772e=='message-delivered'){return _0x23d07a['update']({'read':!![]});}else{logger[_0x03da('0x24')](_0x03da('0x23'),'status',_0x03da('0x8f'),util[_0x03da('0xca')](_0x371fe4[_0x03da('0x62')],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x4b772e===_0x03da('0xd6')||_0x4b772e===_0x03da('0xd7')){return _0x23d07a['update']({'read':!![]});}else{logger[_0x03da('0x24')](_0x03da('0x23'),_0x03da('0x29'),_0x03da('0x90'),util[_0x03da('0xca')](_0x371fe4[_0x03da('0x62')],{'showHidden':![],'depth':null}));}break;}return _0x23d07a;}})[_0x03da('0x1e')](respondWithResult(_0x4ff860,null))[_0x03da('0x27')](handleError(_0x4ff860,null));};exports['statusGet']=function(_0x257b07,_0x1e4be1,_0xdfae94){var _0x3a96f8,_0x1aa497,_0x1ff435;return db[_0x03da('0x40')][_0x03da('0x5b')]({'where':{'id':_0x257b07[_0x03da('0x58')]['id']}})[_0x03da('0x1e')](handleEntityNotFound(_0x1e4be1,null))[_0x03da('0x1e')](function(_0x3f1b1e){if(_0x3f1b1e){_0x1ff435=_0x3f1b1e;logger[_0x03da('0x22')](_0x03da('0x23'),'status',_0x03da('0xd8'),_0x3f1b1e[_0x03da('0x4f')],util['inspect'](_0x257b07[_0x03da('0x45')],{'showHidden':![],'depth':null}));switch(_0x3f1b1e['type']){case _0x03da('0x8b'):if(_0x257b07[_0x03da('0x45')][_0x03da('0xd9')]&&_0x257b07['query']['state']){_0x1aa497=_0x257b07[_0x03da('0x45')][_0x03da('0xda')];return db['SmsMessage'][_0x03da('0x5b')]({'where':{'messageId':_0x257b07['query'][_0x03da('0xd9')]}});}break;}}})[_0x03da('0x1e')](handleEntityNotFound(_0x1e4be1,null))[_0x03da('0x1e')](function(_0x8698f9){if(_0x8698f9){_0x3a96f8=_0x8698f9;switch(_0x1ff435[_0x03da('0x4f')]){case _0x03da('0x8b'):if(_0x1aa497==='2'||_0x1aa497==='6'){return _0x3a96f8[_0x03da('0x34')]({'read':!![]});}else{logger[_0x03da('0x24')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x03da('0x29'),_0x03da('0x8b'),util[_0x03da('0xca')](_0x257b07['query'],{'showHidden':![],'depth':null}));};break;}return _0x3a96f8;}})[_0x03da('0x1e')](respondWithResult(_0x1e4be1,null))[_0x03da('0x27')](handleError(_0x1e4be1,null));};exports[_0x03da('0xdb')]=function(_0x2feccd,_0x5ca31f,_0x1ac98e){return db['SmsAccount'][_0x03da('0x5b')]({'where':{'id':_0x2feccd['params']['id']}})[_0x03da('0x1e')](handleEntityNotFound(_0x5ca31f,null))[_0x03da('0x1e')](function(_0x594448){if(_0x594448){return _0x594448[_0x03da('0xdb')](_0x2feccd[_0x03da('0x62')][_0x03da('0x68')],_[_0x03da('0x9e')](_0x2feccd[_0x03da('0x62')],[_0x03da('0x68'),'id'])||{})[_0x03da('0xa1')](function(_0x4de290){for(var _0x1941d7=0x0;_0x1941d7<_0x2feccd[_0x03da('0x62')]['ids'][_0x03da('0x5a')];_0x1941d7+=0x1){socket[_0x03da('0xdc')](_0x03da('0xdd'),{'UserId':Number(_0x2feccd[_0x03da('0x62')]['ids'][_0x1941d7]),'SmsAccountId':Number(_0x2feccd[_0x03da('0x58')]['id'])});}return _0x4de290;});}})[_0x03da('0x1e')](respondWithResult(_0x5ca31f,null))[_0x03da('0x27')](handleError(_0x5ca31f,null));};exports[_0x03da('0xde')]=function(_0x1f92d0,_0x1388f4,_0x5e3d1d){return db['SmsAccount'][_0x03da('0x5b')]({'where':{'id':_0x1f92d0[_0x03da('0x58')]['id']}})[_0x03da('0x1e')](handleEntityNotFound(_0x1388f4,null))['then'](function(_0x5466c2){if(_0x5466c2){return _0x5466c2['removeAgents'](_0x1f92d0[_0x03da('0x45')][_0x03da('0x68')])['then'](function(){if(_[_0x03da('0xdf')](_0x1f92d0['query'][_0x03da('0x68')])){for(var _0x3cbbe1=0x0;_0x3cbbe1<_0x1f92d0[_0x03da('0x45')]['ids'][_0x03da('0x5a')];_0x3cbbe1+=0x1){socket[_0x03da('0xdc')](_0x03da('0xe0'),{'UserId':Number(_0x1f92d0[_0x03da('0x45')][_0x03da('0x68')][_0x3cbbe1]),'SmsAccountId':Number(_0x1f92d0[_0x03da('0x58')]['id'])});}}else{socket[_0x03da('0xdc')]('userSmsAccount:remove',{'UserId':Number(_0x1f92d0[_0x03da('0x45')][_0x03da('0x68')]),'SmsAccountId':Number(_0x1f92d0[_0x03da('0x58')]['id'])});}});}})[_0x03da('0x1e')](respondWithStatusCode(_0x1388f4,null))[_0x03da('0x27')](handleError(_0x1388f4,null));};exports[_0x03da('0xe1')]=function(_0x1f1947,_0x59291,_0x331947){var _0x1e85bb={};var _0x57282f={};var _0x37f1a3;var _0x34b207;return db[_0x03da('0x40')][_0x03da('0x6a')]({'where':{'id':_0x1f1947[_0x03da('0x58')]['id']}})[_0x03da('0x1e')](handleEntityNotFound(_0x59291,null))[_0x03da('0x1e')](function(_0x1337a7){if(_0x1337a7){_0x37f1a3=_0x1337a7;_0x57282f[_0x03da('0x44')]=_['keys'](db[_0x03da('0xab')][_0x03da('0x41')]);_0x57282f[_0x03da('0x45')]=_[_0x03da('0x59')](_0x1f1947['query']);_0x57282f[_0x03da('0x4d')]=_[_0x03da('0x46')](_0x57282f[_0x03da('0x44')],_0x57282f[_0x03da('0x45')]);_0x1e85bb['attributes']=_[_0x03da('0x46')](_0x57282f['model'],qs[_0x03da('0x47')](_0x1f1947['query']['fields']));_0x1e85bb[_0x03da('0x48')]=_0x1e85bb['attributes'][_0x03da('0x5a')]?_0x1e85bb['attributes']:_0x57282f['model'];_0x1e85bb[_0x03da('0xbc')]=qs[_0x03da('0x4b')](_0x1f1947[_0x03da('0x45')][_0x03da('0x4b')]);_0x1e85bb[_0x03da('0x4c')]=qs['filters'](_['pick'](_0x1f1947[_0x03da('0x45')],_0x57282f[_0x03da('0x4d')]));if(_0x1f1947[_0x03da('0x45')][_0x03da('0x50')]){_0x1e85bb[_0x03da('0x4c')]=_['merge'](_0x1e85bb['where'],{'$or':_[_0x03da('0x3f')](_0x1e85bb[_0x03da('0x48')],function(_0x4c698a){var _0x87203a={};_0x87203a[_0x4c698a]={'$like':'%'+_0x1f1947[_0x03da('0x45')]['filter']+'%'};return _0x87203a;})});}_0x1e85bb=_['merge']({},_0x1e85bb,_0x1f1947[_0x03da('0x52')]);return _0x37f1a3[_0x03da('0xe1')](_0x1e85bb);}})[_0x03da('0x1e')](function(_0x4f2c93){if(_0x4f2c93){_0x34b207=_0x4f2c93[_0x03da('0x5a')];if(!_0x1f1947[_0x03da('0x45')][_0x03da('0x49')](_0x03da('0x4a'))){_0x1e85bb[_0x03da('0x2c')]=qs['limit'](_0x1f1947[_0x03da('0x45')][_0x03da('0x2c')]);_0x1e85bb[_0x03da('0x2e')]=qs['offset'](_0x1f1947['query'][_0x03da('0x2e')]);}return _0x37f1a3[_0x03da('0xe1')](_0x1e85bb);}})[_0x03da('0x1e')](function(_0x49fc79){if(_0x49fc79){return _0x49fc79?{'count':_0x34b207,'rows':_0x49fc79}:null;}})['then'](respondWithResult(_0x59291,null))[_0x03da('0x27')](handleError(_0x59291,null));};
\ No newline at end of file
+var _0xd965=['createdAt','updatedAt','ListId','mobile','twilio','from','From','Body','messageId','MessageSid','skebby','sender','text','clicksend','plivo','Text','MessageUUID','infobip','results','originatingAddress','segmentedMessage','clickatell','fromNumber','replyMessageId','intelepeer','refid','isNil','Sequelize','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','CmList','Contacts','DESC','list','omit','defaults','contact','SmsInteraction','spread','interaction','created','*,*,*,*','SmsMessage','ContactId','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','SmsApplication','bulkCreate','findAndCountAll','getApplications','getInteractions','Contact','fullname','Tag','color','tag','to\x20is\x20mandatory','List','out','Messages','dataValues','received\x20delivery\x20report\x20from','skebby_dispatch_id','connectel','requestid','statusInt','status_code','message_id','groupName','bandwidth','redif','DELIVERED','inspect','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','ACCEPTD','statusGet','csc','state','addAgents','ids','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','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/logger','../../config/utils','../../config/environment','../../config/license/util','socket.io-emitter','redis','./smsAccount.socket','register','client','http','request','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','get','UserProfileResource','name','send','index','Pause','mandatoryDispositionPause','map','rawAttributes','fieldName','type','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','SmsAccount','includeAll','include','findAll','rows','show','params','keys','find','create','role','user','SmsAccounts','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','Disposition','getDispositions','findOne','SmsAccountId','removeDispositions','addAnswer','CannedAnswer','getAnswers','removeAnswers','notify','sms','Applications','account','applications','orderBy','priority','asc','CmContact','ValidationError','no\x20available\x20attributes','difference'];(function(_0x2a5b24,_0xdb5e9b){var _0x19d021=function(_0x3604fd){while(--_0x3604fd){_0x2a5b24['push'](_0x2a5b24['shift']());}};_0x19d021(++_0xdb5e9b);}(_0xd965,0x151));var _0x5d96=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd965[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x5d96('0x0'));var rimraf=require(_0x5d96('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x5d96('0x2'));var BPromise=require(_0x5d96('0x3'));var Mustache=require(_0x5d96('0x4'));var util=require(_0x5d96('0x5'));var path=require(_0x5d96('0x6'));var sox=require('sox');var csv=require(_0x5d96('0x7'));var ejs=require(_0x5d96('0x8'));var fs=require('fs');var fs_extra=require(_0x5d96('0x9'));var _=require(_0x5d96('0xa'));var squel=require(_0x5d96('0xb'));var crypto=require('crypto');var jsforce=require(_0x5d96('0xc'));var deskjs=require(_0x5d96('0xd'));var toCsv=require(_0x5d96('0x7'));var querystring=require(_0x5d96('0xe'));var Papa=require(_0x5d96('0xf'));var Redis=require(_0x5d96('0x10'));var authService=require(_0x5d96('0x11'));var qs=require(_0x5d96('0x12'));var as=require(_0x5d96('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5d96('0x14'))('api');var utils=require(_0x5d96('0x15'));var config=require(_0x5d96('0x16'));var licenseUtil=require(_0x5d96('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x5d96('0x18'))(new Redis(config[_0x5d96('0x19')]));require(_0x5d96('0x1a'))[_0x5d96('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson[_0x5d96('0x1c')][_0x5d96('0x1d')]({'port':0x232c});function respondWithRpcPromise(_0x8de9f3,_0x3f6186,_0x1e90d5,_0x57c9d2){return new BPromise(function(_0x4cb730,_0x2c7728){var _0x34c220=_0x57c9d2||client;return _0x34c220[_0x5d96('0x1e')](_0x8de9f3,_0x1e90d5)['then'](function(_0x19d8fb){logger[_0x5d96('0x1f')](_0x5d96('0x20'),_0x3f6186,_0x5d96('0x21'));logger[_0x5d96('0x22')](_0x5d96('0x23'),_0x3f6186,'request\x20sent',JSON[_0x5d96('0x24')](_0x19d8fb));if(_0x19d8fb[_0x5d96('0x25')]){if(_0x19d8fb[_0x5d96('0x25')]['code']===0x1f4){logger[_0x5d96('0x25')](_0x5d96('0x20'),_0x3f6186,_0x19d8fb['error'][_0x5d96('0x26')]);return _0x2c7728(_0x19d8fb[_0x5d96('0x25')][_0x5d96('0x26')]);}logger[_0x5d96('0x25')](_0x5d96('0x20'),_0x3f6186,_0x19d8fb[_0x5d96('0x25')][_0x5d96('0x26')]);return _0x4cb730(_0x19d8fb[_0x5d96('0x25')]['message']);}else{logger['info'](_0x5d96('0x20'),_0x3f6186,_0x5d96('0x21'));_0x4cb730(_0x19d8fb[_0x5d96('0x27')]['message']);}})[_0x5d96('0x28')](function(_0x56cebe){logger[_0x5d96('0x25')](_0x5d96('0x20'),_0x3f6186,_0x56cebe);_0x2c7728(_0x56cebe);});});}function respondWithStatusCode(_0x138664,_0x4ebadc){_0x4ebadc=_0x4ebadc||0xcc;return function(_0x48620b){if(_0x48620b){return _0x138664[_0x5d96('0x29')](_0x4ebadc);}return _0x138664[_0x5d96('0x2a')](_0x4ebadc)[_0x5d96('0x2b')]();};}function respondWithResult(_0x5da8b4,_0x1b7e0a){_0x1b7e0a=_0x1b7e0a||0xc8;return function(_0x45f6b7){if(_0x45f6b7){return _0x5da8b4[_0x5d96('0x2a')](_0x1b7e0a)[_0x5d96('0x2c')](_0x45f6b7);}};}function respondWithFilteredResult(_0x33ef68,_0x497ba8){return function(_0x5bdd5f){if(_0x5bdd5f){var _0x35b510=typeof _0x497ba8['offset']===_0x5d96('0x2d')&&typeof _0x497ba8[_0x5d96('0x2e')]===_0x5d96('0x2d');var _0xc90e2=_0x5bdd5f[_0x5d96('0x2f')];var _0x4a71eb=_0x35b510?0x0:_0x497ba8[_0x5d96('0x30')];var _0x1a4068=_0x35b510?_0x5bdd5f['count']:_0x497ba8[_0x5d96('0x30')]+_0x497ba8[_0x5d96('0x2e')];var _0x2397e9;if(_0x1a4068>=_0xc90e2){_0x1a4068=_0xc90e2;_0x2397e9=0xc8;}else{_0x2397e9=0xce;}_0x33ef68[_0x5d96('0x2a')](_0x2397e9);return _0x33ef68[_0x5d96('0x31')](_0x5d96('0x32'),_0x4a71eb+'-'+_0x1a4068+'/'+_0xc90e2)[_0x5d96('0x2c')](_0x5bdd5f);}return null;};}function patchUpdates(_0x34fe4c){return function(_0x22d701){try{jsonpatch[_0x5d96('0x33')](_0x22d701,_0x34fe4c,!![]);}catch(_0x1f533a){return BPromise[_0x5d96('0x34')](_0x1f533a);}return _0x22d701['save']();};}function saveUpdates(_0x1472f8,_0x105b81){return function(_0x3d2b7a){if(_0x3d2b7a){return _0x3d2b7a[_0x5d96('0x35')](_0x1472f8)[_0x5d96('0x36')](function(_0x49952d){return _0x49952d;});}return null;};}function removeEntity(_0xd73df7,_0x40bbca){return function(_0x47ac66){if(_0x47ac66){return _0x47ac66[_0x5d96('0x37')]()[_0x5d96('0x36')](function(){var _0x2a417a=_0x47ac66[_0x5d96('0x38')]({'plain':!![]});var _0x43657e='SmsAccounts';return db[_0x5d96('0x39')][_0x5d96('0x37')]({'where':{'type':_0x43657e,'resourceId':_0x2a417a['id']}})['then'](function(){return _0x47ac66;});})[_0x5d96('0x36')](function(){_0xd73df7[_0x5d96('0x2a')](0xcc)[_0x5d96('0x2b')]();});}};}function handleEntityNotFound(_0x4bacb2,_0x57b63f){return function(_0x131ace){if(!_0x131ace){_0x4bacb2[_0x5d96('0x29')](0x194);}return _0x131ace;};}function handleError(_0x19fd9d,_0x5466f3){_0x5466f3=_0x5466f3||0x1f4;return function(_0x5ebe55){logger[_0x5d96('0x25')](_0x5ebe55['stack']);if(_0x5ebe55['name']){delete _0x5ebe55[_0x5d96('0x3a')];}_0x19fd9d['status'](_0x5466f3)[_0x5d96('0x3b')](_0x5ebe55);};}exports[_0x5d96('0x3c')]=function(_0x68719b,_0x59abfc){var _0x29c008={'include':[{'model':db[_0x5d96('0x3d')],'as':_0x5d96('0x3e')}]},_0x45b889={},_0x3c24ad={'count':0x0,'rows':[]};var _0x43cfad=_[_0x5d96('0x3f')](db['SmsAccount'][_0x5d96('0x40')],function(_0x566ff6){return{'name':_0x566ff6[_0x5d96('0x41')],'type':_0x566ff6[_0x5d96('0x42')]['key']};});_0x45b889[_0x5d96('0x43')]=_[_0x5d96('0x3f')](_0x43cfad,_0x5d96('0x3a'));_0x45b889[_0x5d96('0x44')]=_['keys'](_0x68719b[_0x5d96('0x44')]);_0x45b889['filters']=_[_0x5d96('0x45')](_0x45b889[_0x5d96('0x43')],_0x45b889[_0x5d96('0x44')]);_0x29c008['attributes']=_[_0x5d96('0x45')](_0x45b889[_0x5d96('0x43')],qs[_0x5d96('0x46')](_0x68719b[_0x5d96('0x44')][_0x5d96('0x46')]));_0x29c008[_0x5d96('0x47')]=_0x29c008[_0x5d96('0x47')][_0x5d96('0x48')]?_0x29c008[_0x5d96('0x47')]:_0x45b889[_0x5d96('0x43')];if(!_0x68719b['query'][_0x5d96('0x49')](_0x5d96('0x4a'))){_0x29c008['limit']=qs[_0x5d96('0x2e')](_0x68719b[_0x5d96('0x44')]['limit']);_0x29c008[_0x5d96('0x30')]=qs[_0x5d96('0x30')](_0x68719b['query'][_0x5d96('0x30')]);}_0x29c008[_0x5d96('0x4b')]=qs[_0x5d96('0x4c')](_0x68719b[_0x5d96('0x44')][_0x5d96('0x4c')]);_0x29c008[_0x5d96('0x4d')]=qs[_0x5d96('0x4e')](_[_0x5d96('0x4f')](_0x68719b['query'],_0x45b889[_0x5d96('0x4e')]),_0x43cfad);if(_0x68719b[_0x5d96('0x44')][_0x5d96('0x50')]){_0x29c008[_0x5d96('0x4d')]=_[_0x5d96('0x51')](_0x29c008[_0x5d96('0x4d')],{'$or':_[_0x5d96('0x3f')](_0x43cfad,function(_0x4eef20){if(_0x4eef20[_0x5d96('0x42')]!==_0x5d96('0x52')){var _0xb8fcb4={};_0xb8fcb4[_0x4eef20[_0x5d96('0x3a')]]={'$like':'%'+_0x68719b[_0x5d96('0x44')][_0x5d96('0x50')]+'%'};return _0xb8fcb4;}})});}_0x29c008=_[_0x5d96('0x51')]({},_0x29c008,_0x68719b[_0x5d96('0x53')]);var _0x588b4c={'where':_0x29c008['where']};return db[_0x5d96('0x54')][_0x5d96('0x2f')](_0x588b4c)['then'](function(_0x4f0cb7){_0x3c24ad[_0x5d96('0x2f')]=_0x4f0cb7;if(_0x68719b[_0x5d96('0x44')][_0x5d96('0x55')]){_0x29c008[_0x5d96('0x56')]=[{'all':!![]}];}return db[_0x5d96('0x54')][_0x5d96('0x57')](_0x29c008);})['then'](function(_0x2d1272){_0x3c24ad[_0x5d96('0x58')]=_0x2d1272;return _0x3c24ad;})[_0x5d96('0x36')](respondWithFilteredResult(_0x59abfc,_0x29c008))['catch'](handleError(_0x59abfc,null));};exports[_0x5d96('0x59')]=function(_0xa24f9c,_0x38107f){var _0x406c3a={'raw':![],'where':{'id':_0xa24f9c[_0x5d96('0x5a')]['id']},'include':[{'model':db[_0x5d96('0x3d')],'as':'mandatoryDispositionPause'}]},_0x4a944d={};_0x4a944d[_0x5d96('0x43')]=_[_0x5d96('0x5b')](db[_0x5d96('0x54')]['rawAttributes']);_0x4a944d[_0x5d96('0x44')]=_[_0x5d96('0x5b')](_0xa24f9c['query']);_0x4a944d[_0x5d96('0x4e')]=_[_0x5d96('0x45')](_0x4a944d[_0x5d96('0x43')],_0x4a944d[_0x5d96('0x44')]);_0x406c3a[_0x5d96('0x47')]=_[_0x5d96('0x45')](_0x4a944d['model'],qs['fields'](_0xa24f9c['query'][_0x5d96('0x46')]));_0x406c3a['attributes']=_0x406c3a[_0x5d96('0x47')][_0x5d96('0x48')]?_0x406c3a[_0x5d96('0x47')]:_0x4a944d[_0x5d96('0x43')];if(_0xa24f9c[_0x5d96('0x44')][_0x5d96('0x55')]){_0x406c3a[_0x5d96('0x56')]=[{'all':!![]}];}_0x406c3a=_[_0x5d96('0x51')]({},_0x406c3a,_0xa24f9c[_0x5d96('0x53')]);return db['SmsAccount'][_0x5d96('0x5c')](_0x406c3a)['then'](handleEntityNotFound(_0x38107f,null))['then'](respondWithResult(_0x38107f,null))[_0x5d96('0x28')](handleError(_0x38107f,null));};exports[_0x5d96('0x5d')]=function(_0x267c44,_0x372075){return db[_0x5d96('0x54')]['create'](_0x267c44['body'],{})[_0x5d96('0x36')](function(_0xc05273){var _0x5f4a20=_0x267c44['user'][_0x5d96('0x38')]({'plain':!![]});if(!_0x5f4a20)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5f4a20[_0x5d96('0x5e')]===_0x5d96('0x5f')){var _0x480180=_0xc05273['get']({'plain':!![]});var _0x4922df=_0x5d96('0x60');return db[_0x5d96('0x61')][_0x5d96('0x5c')]({'where':{'name':_0x4922df,'userProfileId':_0x5f4a20[_0x5d96('0x62')]},'raw':!![]})[_0x5d96('0x36')](function(_0x189c94){if(_0x189c94&&_0x189c94[_0x5d96('0x63')]===0x0){return db[_0x5d96('0x39')][_0x5d96('0x5d')]({'name':_0x480180[_0x5d96('0x3a')],'resourceId':_0x480180['id'],'type':_0x189c94['name'],'sectionId':_0x189c94['id']},{})[_0x5d96('0x36')](function(){return _0xc05273;});}else{return _0xc05273;}})[_0x5d96('0x28')](function(_0x2d2b55){logger[_0x5d96('0x25')](_0x5d96('0x64'),_0x2d2b55);throw _0x2d2b55;});}return _0xc05273;})[_0x5d96('0x36')](respondWithResult(_0x372075,0xc9))[_0x5d96('0x28')](handleError(_0x372075,null));};exports[_0x5d96('0x35')]=function(_0x1dd6f7,_0x321776){if(_0x1dd6f7[_0x5d96('0x65')]['id']){delete _0x1dd6f7[_0x5d96('0x65')]['id'];}return db[_0x5d96('0x54')]['find']({'where':{'id':_0x1dd6f7[_0x5d96('0x5a')]['id']},'include':[{'model':db[_0x5d96('0x3d')],'as':_0x5d96('0x3e')}]})[_0x5d96('0x36')](handleEntityNotFound(_0x321776,null))[_0x5d96('0x36')](saveUpdates(_0x1dd6f7['body'],null))[_0x5d96('0x36')](respondWithResult(_0x321776,null))[_0x5d96('0x28')](handleError(_0x321776,null));};exports[_0x5d96('0x37')]=function(_0x491760,_0x4c9001){return db['SmsAccount']['find']({'where':{'id':_0x491760[_0x5d96('0x5a')]['id']}})[_0x5d96('0x36')](handleEntityNotFound(_0x4c9001,null))[_0x5d96('0x36')](removeEntity(_0x4c9001,null))['catch'](handleError(_0x4c9001,null));};exports[_0x5d96('0x66')]=function(_0xbb1fdc,_0x5f0413){return db[_0x5d96('0x54')][_0x5d96('0x66')]()[_0x5d96('0x36')](respondWithResult(_0x5f0413,null))['catch'](handleError(_0x5f0413,null));};exports[_0x5d96('0x67')]=function(_0x3c7c01,_0x47dd4c,_0x517e15){if(_0x3c7c01['body']['id']){delete _0x3c7c01['body']['id'];}return db[_0x5d96('0x54')][_0x5d96('0x5c')]({'where':{'id':_0x3c7c01[_0x5d96('0x5a')]['id']}})[_0x5d96('0x36')](handleEntityNotFound(_0x47dd4c,null))[_0x5d96('0x36')](function(_0x3fdb9b){if(_0x3fdb9b){_0x3c7c01['body']['SmsAccountId']=_0x3fdb9b['id'];return db[_0x5d96('0x68')][_0x5d96('0x5d')](_0x3c7c01[_0x5d96('0x65')]);}})[_0x5d96('0x36')](respondWithResult(_0x47dd4c,null))['catch'](handleError(_0x47dd4c,null));};exports[_0x5d96('0x69')]=function(_0x1fce9f,_0x42cb60,_0x5b9dcd){var _0x1292b9={'raw':![],'where':{}};var _0x15374a={};var _0x1376d7={'count':0x0,'rows':[]};return db[_0x5d96('0x54')][_0x5d96('0x6a')]({'where':{'id':_0x1fce9f['params']['id']}})[_0x5d96('0x36')](handleEntityNotFound(_0x42cb60,null))[_0x5d96('0x36')](function(_0xe77acc){if(_0xe77acc){_0x15374a[_0x5d96('0x43')]=_[_0x5d96('0x5b')](db[_0x5d96('0x68')]['rawAttributes']);_0x15374a[_0x5d96('0x44')]=_[_0x5d96('0x5b')](_0x1fce9f['query']);_0x15374a[_0x5d96('0x4e')]=_[_0x5d96('0x45')](_0x15374a[_0x5d96('0x43')],_0x15374a[_0x5d96('0x44')]);_0x1292b9[_0x5d96('0x47')]=_[_0x5d96('0x45')](_0x15374a[_0x5d96('0x43')],qs['fields'](_0x1fce9f[_0x5d96('0x44')]['fields']));_0x1292b9[_0x5d96('0x47')]=_0x1292b9[_0x5d96('0x47')][_0x5d96('0x48')]?_0x1292b9[_0x5d96('0x47')]:_0x15374a['model'];if(!_0x1fce9f['query'][_0x5d96('0x49')](_0x5d96('0x4a'))){_0x1292b9[_0x5d96('0x2e')]=qs[_0x5d96('0x2e')](_0x1fce9f[_0x5d96('0x44')][_0x5d96('0x2e')]);_0x1292b9[_0x5d96('0x30')]=qs['offset'](_0x1fce9f[_0x5d96('0x44')][_0x5d96('0x30')]);}_0x1292b9['order']=qs[_0x5d96('0x4c')](_0x1fce9f[_0x5d96('0x44')]['sort']);_0x1292b9[_0x5d96('0x4d')]=qs[_0x5d96('0x4e')](_[_0x5d96('0x4f')](_0x1fce9f[_0x5d96('0x44')],_0x15374a['filters']));_0x1292b9[_0x5d96('0x4d')][_0x5d96('0x6b')]=_0xe77acc['id'];if(_0x1fce9f[_0x5d96('0x44')][_0x5d96('0x50')]){_0x1292b9[_0x5d96('0x4d')]=_[_0x5d96('0x51')](_0x1292b9['where'],{'$or':_[_0x5d96('0x3f')](_0x1292b9[_0x5d96('0x47')],function(_0x378408){var _0x119f64={};_0x119f64[_0x378408]={'$like':'%'+_0x1fce9f[_0x5d96('0x44')][_0x5d96('0x50')]+'%'};return _0x119f64;})});}_0x1292b9=_[_0x5d96('0x51')]({},_0x1292b9,_0x1fce9f[_0x5d96('0x53')]);return db['Disposition'][_0x5d96('0x2f')]({'where':_0x1292b9['where']})['then'](function(_0x4f2612){_0x1376d7[_0x5d96('0x2f')]=_0x4f2612;if(_0x1fce9f[_0x5d96('0x44')][_0x5d96('0x55')]){_0x1292b9[_0x5d96('0x56')]=[{'all':!![]}];}return db[_0x5d96('0x68')][_0x5d96('0x57')](_0x1292b9);})['then'](function(_0x3d29e6){_0x1376d7[_0x5d96('0x58')]=_0x3d29e6;return _0x1376d7;});}})[_0x5d96('0x36')](respondWithFilteredResult(_0x42cb60,_0x1292b9))[_0x5d96('0x28')](handleError(_0x42cb60,null));};exports[_0x5d96('0x6c')]=function(_0x4f889b,_0x2862ab,_0x48eca9){return db['SmsAccount'][_0x5d96('0x5c')]({'where':{'id':_0x4f889b[_0x5d96('0x5a')]['id']}})[_0x5d96('0x36')](handleEntityNotFound(_0x2862ab,null))[_0x5d96('0x36')](function(_0x3bd2b6){if(_0x3bd2b6){return _0x3bd2b6['removeDispositions'](_0x4f889b['query']['ids']);}})[_0x5d96('0x36')](respondWithStatusCode(_0x2862ab,null))[_0x5d96('0x28')](handleError(_0x2862ab,null));};exports[_0x5d96('0x6d')]=function(_0x3516e0,_0x35c1e1,_0x1d2d02){if(_0x3516e0[_0x5d96('0x65')]['id']){delete _0x3516e0['body']['id'];}return db['SmsAccount'][_0x5d96('0x5c')]({'where':{'id':_0x3516e0['params']['id']}})['then'](handleEntityNotFound(_0x35c1e1,null))[_0x5d96('0x36')](function(_0x15d5d9){if(_0x15d5d9){_0x3516e0['body']['SmsAccountId']=_0x15d5d9['id'];return db[_0x5d96('0x6e')][_0x5d96('0x5d')](_0x3516e0[_0x5d96('0x65')]);}})[_0x5d96('0x36')](respondWithResult(_0x35c1e1,null))[_0x5d96('0x28')](handleError(_0x35c1e1,null));};exports[_0x5d96('0x6f')]=function(_0x1881aa,_0xedd3b8,_0x8623b8){var _0x4aaa04={'raw':![],'where':{}};var _0x5d708c={};var _0xb7224c={'count':0x0,'rows':[]};return db[_0x5d96('0x54')][_0x5d96('0x6a')]({'where':{'id':_0x1881aa['params']['id']}})[_0x5d96('0x36')](handleEntityNotFound(_0xedd3b8,null))[_0x5d96('0x36')](function(_0x4a74b6){if(_0x4a74b6){_0x5d708c[_0x5d96('0x43')]=_[_0x5d96('0x5b')](db[_0x5d96('0x6e')][_0x5d96('0x40')]);_0x5d708c[_0x5d96('0x44')]=_['keys'](_0x1881aa['query']);_0x5d708c[_0x5d96('0x4e')]=_[_0x5d96('0x45')](_0x5d708c['model'],_0x5d708c[_0x5d96('0x44')]);_0x4aaa04['attributes']=_[_0x5d96('0x45')](_0x5d708c[_0x5d96('0x43')],qs[_0x5d96('0x46')](_0x1881aa['query'][_0x5d96('0x46')]));_0x4aaa04[_0x5d96('0x47')]=_0x4aaa04['attributes'][_0x5d96('0x48')]?_0x4aaa04[_0x5d96('0x47')]:_0x5d708c[_0x5d96('0x43')];if(!_0x1881aa[_0x5d96('0x44')][_0x5d96('0x49')](_0x5d96('0x4a'))){_0x4aaa04['limit']=qs[_0x5d96('0x2e')](_0x1881aa[_0x5d96('0x44')][_0x5d96('0x2e')]);_0x4aaa04[_0x5d96('0x30')]=qs['offset'](_0x1881aa[_0x5d96('0x44')]['offset']);}_0x4aaa04[_0x5d96('0x4b')]=qs['sort'](_0x1881aa[_0x5d96('0x44')][_0x5d96('0x4c')]);_0x4aaa04[_0x5d96('0x4d')]=qs[_0x5d96('0x4e')](_['pick'](_0x1881aa[_0x5d96('0x44')],_0x5d708c['filters']));_0x4aaa04['where'][_0x5d96('0x6b')]=_0x4a74b6['id'];if(_0x1881aa['query']['filter']){_0x4aaa04[_0x5d96('0x4d')]=_[_0x5d96('0x51')](_0x4aaa04[_0x5d96('0x4d')],{'$or':_[_0x5d96('0x3f')](_0x4aaa04[_0x5d96('0x47')],function(_0x1bd582){var _0x5eb1cb={};_0x5eb1cb[_0x1bd582]={'$like':'%'+_0x1881aa[_0x5d96('0x44')][_0x5d96('0x50')]+'%'};return _0x5eb1cb;})});}_0x4aaa04=_[_0x5d96('0x51')]({},_0x4aaa04,_0x1881aa[_0x5d96('0x53')]);return db['CannedAnswer']['count']({'where':_0x4aaa04[_0x5d96('0x4d')]})['then'](function(_0x101122){_0xb7224c['count']=_0x101122;if(_0x1881aa[_0x5d96('0x44')][_0x5d96('0x55')]){_0x4aaa04[_0x5d96('0x56')]=[{'all':!![]}];}return db[_0x5d96('0x6e')][_0x5d96('0x57')](_0x4aaa04);})['then'](function(_0x3836ee){_0xb7224c[_0x5d96('0x58')]=_0x3836ee;return _0xb7224c;});}})[_0x5d96('0x36')](respondWithFilteredResult(_0xedd3b8,_0x4aaa04))[_0x5d96('0x28')](handleError(_0xedd3b8,null));};exports[_0x5d96('0x70')]=function(_0x575259,_0x4776bf,_0x461f14){return db[_0x5d96('0x54')][_0x5d96('0x5c')]({'where':{'id':_0x575259[_0x5d96('0x5a')]['id']}})['then'](handleEntityNotFound(_0x4776bf,null))[_0x5d96('0x36')](function(_0x1bec80){if(_0x1bec80){return _0x1bec80[_0x5d96('0x70')](_0x575259[_0x5d96('0x44')]['ids']);}})[_0x5d96('0x36')](respondWithStatusCode(_0x4776bf,null))['catch'](handleError(_0x4776bf,null));};exports[_0x5d96('0x71')]=function(_0x4ccbfa,_0x3ba0ac,_0x44cdce){var _0xdd6467={'channel':_0x5d96('0x72')};var _0x46b5c5=[];var _0x1f5591=[];var _0xb9802={};return db['SmsAccount'][_0x5d96('0x5c')]({'where':{'id':_0x4ccbfa[_0x5d96('0x5a')]['id']},'include':[{'model':db['SmsApplication'],'as':_0x5d96('0x73')}]})[_0x5d96('0x36')](handleEntityNotFound(_0x3ba0ac,null))[_0x5d96('0x36')](function(_0x32787b){_0xdd6467[_0x5d96('0x74')]=_0x32787b;_0xdd6467[_0x5d96('0x75')]=_[_0x5d96('0x76')](_0x32787b[_0x5d96('0x73')],[_0x5d96('0x77')],[_0x5d96('0x78')]);if(_0xdd6467['account'][_0x5d96('0x73')]){delete _0xdd6467[_0x5d96('0x74')][_0x5d96('0x73')];}return db[_0x5d96('0x79')][_0x5d96('0x66')]();})[_0x5d96('0x36')](function(_0x309531){if(!_0x309531){throw new db['Sequelize'][(_0x5d96('0x7a'))](_0x5d96('0x7b'));}_0x46b5c5=_[_0x5d96('0x7c')](_['keys'](_0x309531),[_0x5d96('0x7d'),_0x5d96('0x7e')]);_0x1f5591=_[_0x5d96('0x7c')](_['keys'](_0x309531),[_0x5d96('0x7d'),_0x5d96('0x7e'),'CompanyId',_0x5d96('0x7f')]);_0xdd6467[_0x5d96('0x65')]={'mapKey':_0x5d96('0x80')};if(_0xdd6467['account'][_0x5d96('0x42')]){switch(_0xdd6467[_0x5d96('0x74')][_0x5d96('0x42')]){case _0x5d96('0x81'):_0xdd6467[_0x5d96('0x65')][_0x5d96('0x82')]=_0x4ccbfa[_0x5d96('0x65')][_0x5d96('0x83')];_0xdd6467[_0x5d96('0x65')][_0x5d96('0x65')]=_0x4ccbfa['body'][_0x5d96('0x84')];_0xdd6467['body'][_0x5d96('0x85')]=_0x4ccbfa[_0x5d96('0x65')][_0x5d96('0x86')];break;case _0x5d96('0x87'):_0xdd6467[_0x5d96('0x65')][_0x5d96('0x82')]='+'+_0x4ccbfa[_0x5d96('0x65')][_0x5d96('0x88')];_0xdd6467[_0x5d96('0x65')][_0x5d96('0x65')]=_0x4ccbfa[_0x5d96('0x65')][_0x5d96('0x89')];break;case'connectel':_0xdd6467[_0x5d96('0x65')][_0x5d96('0x82')]=_0x4ccbfa[_0x5d96('0x65')][_0x5d96('0x82')];_0xdd6467[_0x5d96('0x65')][_0x5d96('0x65')]=_0x4ccbfa[_0x5d96('0x65')][_0x5d96('0x26')];break;case _0x5d96('0x8a'):_0xdd6467['body'][_0x5d96('0x82')]=_0x4ccbfa[_0x5d96('0x65')][_0x5d96('0x82')];_0xdd6467[_0x5d96('0x65')][_0x5d96('0x65')]=_0x4ccbfa[_0x5d96('0x65')]['body'];_0xdd6467[_0x5d96('0x65')]['messageId']=_0x4ccbfa[_0x5d96('0x65')]['message_id'];break;case _0x5d96('0x8b'):_0xdd6467[_0x5d96('0x65')]['from']=_0x4ccbfa[_0x5d96('0x65')]['From'];_0xdd6467['body']['body']=_0x4ccbfa[_0x5d96('0x65')][_0x5d96('0x8c')];_0xdd6467[_0x5d96('0x65')][_0x5d96('0x85')]=_0x4ccbfa[_0x5d96('0x65')][_0x5d96('0x8d')];break;case _0x5d96('0x8e'):_0xdd6467[_0x5d96('0x65')][_0x5d96('0x82')]='+'+_0x4ccbfa[_0x5d96('0x65')][_0x5d96('0x8f')][0x0][_0x5d96('0x82')];_0xdd6467[_0x5d96('0x65')]['body']=_0x4ccbfa['body'][_0x5d96('0x8f')][0x0]['text'];_0xdd6467[_0x5d96('0x65')][_0x5d96('0x85')]=_0x4ccbfa[_0x5d96('0x65')][_0x5d96('0x8f')][0x0][_0x5d96('0x85')];break;case'csc':_0xdd6467[_0x5d96('0x65')][_0x5d96('0x82')]=_0x4ccbfa[_0x5d96('0x65')][_0x5d96('0x90')];_0xdd6467['body'][_0x5d96('0x65')]=_0x4ccbfa['body'][_0x5d96('0x91')][_0x5d96('0x26')];break;case _0x5d96('0x92'):_0xdd6467[_0x5d96('0x65')][_0x5d96('0x82')]=_0x4ccbfa[_0x5d96('0x65')][_0x5d96('0x93')];_0xdd6467[_0x5d96('0x65')][_0x5d96('0x65')]=_0x4ccbfa[_0x5d96('0x65')][_0x5d96('0x89')];_0xdd6467[_0x5d96('0x65')][_0x5d96('0x85')]=_0x4ccbfa['body'][_0x5d96('0x94')];break;case'bandwidth':_0xdd6467[_0x5d96('0x65')]['messageId']=_0x4ccbfa['body'][0x0][_0x5d96('0x26')]['id'];_0xdd6467[_0x5d96('0x65')][_0x5d96('0x82')]=_0x4ccbfa['body'][0x0]['message'][_0x5d96('0x82')];_0xdd6467[_0x5d96('0x65')]['body']=_0x4ccbfa['body'][0x0][_0x5d96('0x26')][_0x5d96('0x89')];break;case _0x5d96('0x95'):_0xdd6467[_0x5d96('0x65')][_0x5d96('0x82')]=_0x4ccbfa[_0x5d96('0x65')][_0x5d96('0x82')];_0xdd6467[_0x5d96('0x65')][_0x5d96('0x65')]=_0x4ccbfa[_0x5d96('0x65')][_0x5d96('0x26')];_0xdd6467['body'][_0x5d96('0x85')]=_0x4ccbfa[_0x5d96('0x65')][_0x5d96('0x96')];break;}}if(_0xdd6467[_0x5d96('0x65')]['id']){delete _0xdd6467['body']['id'];}if(_[_0x5d96('0x97')](_0xdd6467[_0x5d96('0x65')][_0x5d96('0x82')])){throw new db[(_0x5d96('0x98'))][(_0x5d96('0x7a'))](_0x5d96('0x99'));}if(_['isNil'](_0xdd6467['body']['body'])||_0xdd6467[_0x5d96('0x65')][_0x5d96('0x65')]===''){throw new db[(_0x5d96('0x98'))][(_0x5d96('0x7a'))](_0x5d96('0x9a'));}if(_[_0x5d96('0x97')](_0xdd6467[_0x5d96('0x65')]['mapKey'])){throw new db[(_0x5d96('0x98'))][(_0x5d96('0x7a'))](_0x5d96('0x9b')+_0x1f5591);}if(!_[_0x5d96('0x9c')](_0x1f5591,_0xdd6467['body']['mapKey'])){throw new db[(_0x5d96('0x98'))][(_0x5d96('0x7a'))](_0x5d96('0x9d')+_0x1f5591);}_0xb9802[_0xdd6467[_0x5d96('0x65')][_0x5d96('0x9e')]]=_0xdd6467[_0x5d96('0x65')][_0x5d96('0x82')];return db[_0x5d96('0x9f')][_0x5d96('0x5c')]({'where':{'id':_0xdd6467[_0x5d96('0x74')]['ListId']},'include':[{'model':db['CmContact'],'as':_0x5d96('0xa0'),'where':_0xb9802,'limit':0x1,'order':[[_0x5d96('0x7e'),_0x5d96('0xa1')]]}]});})['then'](handleEntityNotFound(_0x3ba0ac,null))[_0x5d96('0x36')](function(_0x5bb147){if(_0x5bb147){_0xdd6467[_0x5d96('0xa2')]=_[_0x5d96('0xa3')](_0x5bb147,['Contacts']);if(_0x5bb147[_0x5d96('0xa0')][_0x5d96('0x48')]){return _0x5bb147['Contacts'][0x0];}var _0x29cbb4=_[_0x5d96('0xa4')](_0xdd6467['body'],{'firstName':_0xdd6467[_0x5d96('0x65')][_0x5d96('0x82')],'ListId':_0x5bb147['id']});_0x29cbb4[_0xdd6467[_0x5d96('0x65')][_0x5d96('0x9e')]]=_0xdd6467[_0x5d96('0x65')][_0x5d96('0x82')];return db['CmContact'][_0x5d96('0x5d')](_0x29cbb4,{'fields':_0x46b5c5,'raw':!![]});}})[_0x5d96('0x36')](handleEntityNotFound(_0x3ba0ac,null))['then'](function(_0xa87932){if(_0xa87932){_0xdd6467[_0x5d96('0xa5')]=_0xa87932;var _0x325693={'ContactId':_0xa87932['id'],'phone':_0xdd6467['body'][_0x5d96('0x82')],'SmsAccountId':_0x4ccbfa[_0x5d96('0x5a')]['id']};var _0x423cf3={'ContactId':_0xa87932['id'],'SmsAccountId':_0x4ccbfa[_0x5d96('0x5a')]['id'],'closed':![]};return db[_0x5d96('0xa6')][_0x5d96('0x5c')]({'where':_0x423cf3})[_0x5d96('0x36')](function(_0x432b3f){if(_0x432b3f){return[_0x432b3f,![]];}return db['SmsInteraction'][_0x5d96('0x5d')](_0x325693)[_0x5d96('0x36')](function(_0x48bbd0){return[_0x48bbd0,!![]];});});}})[_0x5d96('0xa7')](function(_0x17931c,_0x4171e3){_0xdd6467[_0x5d96('0xa8')]=_0x17931c[_0x5d96('0x38')]({'plain':!![]});_0xdd6467[_0x5d96('0xa8')][_0x5d96('0xa9')]=![];if(_0x4171e3){if(_0xdd6467[_0x5d96('0x74')]['autoclose']){_0xdd6467[_0x5d96('0x75')]['push']({'id':0x0,'priority':_0xdd6467[_0x5d96('0x75')][_0x5d96('0x48')]+0x1,'app':'close','appdata':'unmanaged','interval':_0x5d96('0xaa')});}_0xdd6467[_0x5d96('0xa8')][_0x5d96('0xa9')]=!![];}return db[_0x5d96('0xab')]['create']({'phone':_0xdd6467[_0x5d96('0x65')][_0x5d96('0x82')],'messageId':_0xdd6467[_0x5d96('0x65')]['messageId'],'body':_0xdd6467[_0x5d96('0x65')]['body'],'SmsAccountId':_0x4ccbfa[_0x5d96('0x5a')]['id'],'SmsInteractionId':_0x17931c['id'],'direction':'in','ContactId':_0x17931c[_0x5d96('0xac')],'AttachmentId':_0xdd6467[_0x5d96('0x65')][_0x5d96('0xad')]});})[_0x5d96('0x36')](function(_0x543187){_0xdd6467[_0x5d96('0x26')]=_0x543187;if(_0xdd6467[_0x5d96('0xa8')][_0x5d96('0xae')]){return db[_0x5d96('0xaf')][_0x5d96('0x5c')]({'attributes':['id',_0x5d96('0x3a')],'where':{'id':_0xdd6467[_0x5d96('0xa8')][_0x5d96('0xae')]}})[_0x5d96('0x36')](function(_0x105704){if(_0x105704){_0xdd6467[_0x5d96('0x75')][_0x5d96('0xb0')]({'id':0x0,'priority':0x0,'app':_0x5d96('0xb1'),'appdata':_0x105704[_0x5d96('0x3a')]+','+(_0xdd6467[_0x5d96('0x74')][_0x5d96('0xb2')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x5d96('0xb3'),_0x5d96('0xb4'),_0xdd6467);});}return respondWithRpcPromise('Start',_0x5d96('0xb4'),_0xdd6467);})[_0x5d96('0x36')](function(_0x4a70b5){if(_0x4a70b5){var _0x70a67e=0xc8;var _0x27cae8=_0x5d96('0xb5');logger[_0x5d96('0x1f')](_0x5d96('0x23'),_0x27cae8,_0x70a67e,'entity\x20found');logger['debug'](_0x5d96('0xb6'),_0x27cae8,_0x70a67e,'entity\x20found',JSON[_0x5d96('0x24')](_0x4a70b5));if(_0xdd6467[_0x5d96('0x74')]['type']==='twilio'){return _0x3ba0ac[_0x5d96('0x2a')](_0x70a67e)[_0x5d96('0x31')](_0x5d96('0xb7'),_0x5d96('0xb8'))['send'](_0x5d96('0xb9'));}else{return _0x3ba0ac[_0x5d96('0x2a')](_0x70a67e)[_0x5d96('0x2c')](_0x4a70b5);}}})['catch'](handleError(_0x3ba0ac,null));};exports[_0x5d96('0xba')]=function(_0x2e0e79,_0x4670f6,_0x309bbc){return db[_0x5d96('0x54')][_0x5d96('0x6a')]({'where':{'id':_0x2e0e79[_0x5d96('0x5a')]['id']}})[_0x5d96('0x36')](handleEntityNotFound(_0x4670f6,null))[_0x5d96('0x36')](function(_0x38f7fc){if(_0x38f7fc){return db['sequelize']['transaction'](function(_0x520146){return db[_0x5d96('0xbb')]['destroy']({'where':{'SmsAccountId':_0x2e0e79[_0x5d96('0x5a')]['id']},'transaction':_0x520146})[_0x5d96('0x36')](function(_0x370b2e){var _0x2c5bcb=_[_0x5d96('0x3f')](_0x2e0e79['body'],function(_0x3b87e8){_0x3b87e8[_0x5d96('0x6b')]=_0x2e0e79['params']['id'];return _0x3b87e8;});return db[_0x5d96('0xbb')][_0x5d96('0xbc')](_0x2c5bcb,{'transaction':_0x520146});});})[_0x5d96('0x36')](function(){return db['SmsApplication'][_0x5d96('0xbd')]({'where':{'SmsAccountId':_0x2e0e79[_0x5d96('0x5a')]['id']},'order':_0x5d96('0x77')});});}})[_0x5d96('0x36')](respondWithResult(_0x4670f6,null))[_0x5d96('0x28')](handleError(_0x4670f6,null));};exports[_0x5d96('0xbe')]=function(_0x121a35,_0x64ed9e,_0x3ff79e){var _0x33cdaa={};var _0x1b855e={};var _0x423846;var _0x1a1490;return db['SmsAccount'][_0x5d96('0x6a')]({'where':{'id':_0x121a35[_0x5d96('0x5a')]['id']}})[_0x5d96('0x36')](handleEntityNotFound(_0x64ed9e,null))[_0x5d96('0x36')](function(_0x3ca098){if(_0x3ca098){_0x423846=_0x3ca098;_0x1b855e[_0x5d96('0x43')]=_[_0x5d96('0x5b')](db[_0x5d96('0xbb')][_0x5d96('0x40')]);_0x1b855e[_0x5d96('0x44')]=_[_0x5d96('0x5b')](_0x121a35[_0x5d96('0x44')]);_0x1b855e[_0x5d96('0x4e')]=_[_0x5d96('0x45')](_0x1b855e[_0x5d96('0x43')],_0x1b855e['query']);_0x33cdaa[_0x5d96('0x47')]=_[_0x5d96('0x45')](_0x1b855e['model'],qs['fields'](_0x121a35[_0x5d96('0x44')]['fields']));_0x33cdaa[_0x5d96('0x47')]=_0x33cdaa[_0x5d96('0x47')]['length']?_0x33cdaa[_0x5d96('0x47')]:_0x1b855e[_0x5d96('0x43')];_0x33cdaa[_0x5d96('0x4b')]=qs[_0x5d96('0x4c')](_0x121a35[_0x5d96('0x44')][_0x5d96('0x4c')]);_0x33cdaa[_0x5d96('0x4d')]=qs['filters'](_[_0x5d96('0x4f')](_0x121a35[_0x5d96('0x44')],_0x1b855e[_0x5d96('0x4e')]));if(_0x121a35[_0x5d96('0x44')]['filter']){_0x33cdaa[_0x5d96('0x4d')]=_['merge'](_0x33cdaa[_0x5d96('0x4d')],{'$or':_[_0x5d96('0x3f')](_0x33cdaa[_0x5d96('0x47')],function(_0x4ad1e5){var _0x51edb7={};_0x51edb7[_0x4ad1e5]={'$like':'%'+_0x121a35[_0x5d96('0x44')]['filter']+'%'};return _0x51edb7;})});}_0x33cdaa=_[_0x5d96('0x51')]({},_0x33cdaa,_0x121a35['options']);return _0x423846[_0x5d96('0xbe')](_0x33cdaa);}})[_0x5d96('0x36')](function(_0x35b0f7){if(_0x35b0f7){_0x1a1490=_0x35b0f7[_0x5d96('0x48')];if(!_0x121a35[_0x5d96('0x44')][_0x5d96('0x49')]('nolimit')){_0x33cdaa[_0x5d96('0x2e')]=qs[_0x5d96('0x2e')](_0x121a35[_0x5d96('0x44')]['limit']);_0x33cdaa['offset']=qs[_0x5d96('0x30')](_0x121a35[_0x5d96('0x44')]['offset']);}return _0x423846[_0x5d96('0xbe')](_0x33cdaa);}})[_0x5d96('0x36')](function(_0x2c4021){if(_0x2c4021){return _0x2c4021?{'count':_0x1a1490,'rows':_0x2c4021}:null;}})['then'](respondWithResult(_0x64ed9e,null))['catch'](handleError(_0x64ed9e,null));};exports[_0x5d96('0xbf')]=function(_0x3da894,_0x19f1bd,_0x51d1fd){var _0x5820d7={'raw':![],'where':{}};var _0x30b0d9={};var _0x141760={'count':0x0,'rows':[]};return db[_0x5d96('0x54')]['findOne']({'where':{'id':_0x3da894['params']['id']}})['then'](handleEntityNotFound(_0x19f1bd,null))[_0x5d96('0x36')](function(_0x58f56d){if(_0x58f56d){_0x30b0d9[_0x5d96('0x43')]=_[_0x5d96('0x5b')](db['SmsInteraction'][_0x5d96('0x40')]);_0x30b0d9[_0x5d96('0x44')]=_['keys'](_0x3da894[_0x5d96('0x44')]);_0x30b0d9['filters']=_['intersection'](_0x30b0d9[_0x5d96('0x43')],_0x30b0d9[_0x5d96('0x44')]);_0x5820d7['attributes']=_['intersection'](_0x30b0d9[_0x5d96('0x43')],qs[_0x5d96('0x46')](_0x3da894[_0x5d96('0x44')][_0x5d96('0x46')]));_0x5820d7[_0x5d96('0x47')]=_0x5820d7[_0x5d96('0x47')][_0x5d96('0x48')]?_0x5820d7[_0x5d96('0x47')]:_0x30b0d9[_0x5d96('0x43')];if(!_0x3da894[_0x5d96('0x44')][_0x5d96('0x49')]('nolimit')){_0x5820d7['limit']=qs['limit'](_0x3da894['query'][_0x5d96('0x2e')]);_0x5820d7[_0x5d96('0x30')]=qs[_0x5d96('0x30')](_0x3da894[_0x5d96('0x44')][_0x5d96('0x30')]);}_0x5820d7['order']=qs[_0x5d96('0x4c')](_0x3da894[_0x5d96('0x44')][_0x5d96('0x4c')]);_0x5820d7['where']=qs[_0x5d96('0x4e')](_[_0x5d96('0x4f')](_0x3da894['query'],_0x30b0d9['filters']));_0x5820d7[_0x5d96('0x4d')][_0x5d96('0x6b')]=_0x58f56d['id'];if(_0x3da894[_0x5d96('0x44')][_0x5d96('0x50')]){_0x5820d7[_0x5d96('0x4d')]=_['merge'](_0x5820d7[_0x5d96('0x4d')],{'$or':_[_0x5d96('0x3f')](_0x5820d7[_0x5d96('0x47')],function(_0x1a42ad){var _0x5c1437={};_0x5c1437[_0x1a42ad]={'$like':'%'+_0x3da894['query'][_0x5d96('0x50')]+'%'};return _0x5c1437;})});}_0x5820d7=_[_0x5d96('0x51')]({},_0x5820d7,_0x3da894['options']);return db['SmsInteraction'][_0x5d96('0x2f')]({'where':_0x5820d7['where']})[_0x5d96('0x36')](function(_0x1ef1da){_0x141760[_0x5d96('0x2f')]=_0x1ef1da;if(_0x3da894[_0x5d96('0x44')]['includeAll']){_0x5820d7[_0x5d96('0x56')]=[{'model':db[_0x5d96('0x79')],'as':_0x5d96('0xc0'),'required':![]},{'model':db[_0x5d96('0xaf')],'as':'Owner','attributes':[_0x5d96('0x3a'),_0x5d96('0xc1'),'internal'],'required':![]},{'model':db[_0x5d96('0xc2')],'as':'Tags','attributes':['id',_0x5d96('0x3a'),_0x5d96('0xc3')],'where':_0x3da894[_0x5d96('0x44')][_0x5d96('0xc4')]?{'id':_0x3da894[_0x5d96('0x44')]['tag']}:undefined,'required':_0x3da894['query'][_0x5d96('0xc4')]?!![]:![]}];}return db['SmsInteraction'][_0x5d96('0x57')](_0x5820d7);})[_0x5d96('0x36')](function(_0x20a2ea){_0x141760[_0x5d96('0x58')]=_0x20a2ea;return _0x141760;});}})['then'](respondWithFilteredResult(_0x19f1bd,_0x5820d7))[_0x5d96('0x28')](handleError(_0x19f1bd,null));};exports[_0x5d96('0x3b')]=function(_0x13f66a,_0x54754b,_0x133750){var _0x3ccb6f,_0x55304e,_0x17cb29;if(_[_0x5d96('0x97')](_0x13f66a[_0x5d96('0x65')][_0x5d96('0x65')])||_0x13f66a[_0x5d96('0x65')][_0x5d96('0x65')]===''){throw new db[(_0x5d96('0x98'))][(_0x5d96('0x7a'))](_0x5d96('0x9a'));}if(_[_0x5d96('0x97')](_0x13f66a[_0x5d96('0x65')]['to'])){throw new db[(_0x5d96('0x98'))][(_0x5d96('0x7a'))](_0x5d96('0xc5'));}_0x3ccb6f=_0x13f66a[_0x5d96('0x65')]['to'];return db[_0x5d96('0x54')][_0x5d96('0x5c')]({'where':{'id':_0x13f66a['params']['id']},'include':[{'model':db[_0x5d96('0x9f')],'as':_0x5d96('0xc6'),'include':[{'model':db[_0x5d96('0x79')],'as':_0x5d96('0xa0'),'where':{'mobile':_0x3ccb6f},'limit':0x1,'order':[[_0x5d96('0x7e'),_0x5d96('0xa1')]]}]}]})[_0x5d96('0x36')](handleEntityNotFound(_0x54754b,null))[_0x5d96('0x36')](function(_0x15a992){if(_0x15a992&&_0x15a992[_0x5d96('0xc6')]){_0x55304e=_0x15a992[_0x5d96('0x38')]({'plain':!![]});if(_0x55304e[_0x5d96('0xc6')]&&_0x55304e['List'][_0x5d96('0xa0')][_0x5d96('0x48')]){return _0x55304e[_0x5d96('0xc6')]['Contacts'][0x0];}return db[_0x5d96('0x79')][_0x5d96('0x5d')](_[_0x5d96('0xa4')](_0x13f66a[_0x5d96('0x65')],{'firstName':_0x3ccb6f,'mobile':_0x3ccb6f,'phone':_0x3ccb6f,'ListId':_0x55304e[_0x5d96('0x7f')]}));}})[_0x5d96('0x36')](handleEntityNotFound(_0x54754b,null))[_0x5d96('0x36')](function(_0x5187d5){if(_0x5187d5){_0x17cb29=_0x5187d5;return db[_0x5d96('0xa6')]['find']({'where':{'ContactId':_0x17cb29['id'],'closed':![],'SmsAccountId':_0x55304e['id']}})[_0x5d96('0x36')](function(_0xcc3503){if(_0xcc3503){return[_0xcc3503,![]];}return db[_0x5d96('0xa6')][_0x5d96('0x5d')]({'UserId':_0x13f66a[_0x5d96('0x5f')]['id'],'ContactId':_0x17cb29['id'],'SmsAccountId':_0x55304e['id'],'phone':_0x3ccb6f,'firstMsgDirection':_0x5d96('0xc7'),'Messages':[_[_0x5d96('0x51')](_0x13f66a[_0x5d96('0x65')],{'read':![],'body':_0x13f66a[_0x5d96('0x65')]['body'],'phone':_0x3ccb6f,'SmsAccountId':_0x55304e['id'],'UserId':_0x13f66a[_0x5d96('0x5f')]['id'],'ContactId':_0x17cb29['id']})]},{'include':[{'model':db['SmsMessage'],'as':_0x5d96('0xc8')}]})[_0x5d96('0x36')](function(_0x40561b){return[_0x40561b,!![]];});});}})[_0x5d96('0xa7')](function(_0x4b3cbf,_0x3b1dbf){if(_0x3b1dbf){return _0x4b3cbf;}return db[_0x5d96('0xab')][_0x5d96('0x5d')](_['merge'](_0x13f66a['body'],{'read':![],'body':_0x13f66a[_0x5d96('0x65')][_0x5d96('0x65')],'phone':_0x3ccb6f,'SmsAccountId':_0x55304e['id'],'SmsInteractionId':_0x4b3cbf['id'],'UserId':_0x13f66a[_0x5d96('0x5f')]['id'],'ContactId':_0x17cb29['id']}))['then'](function(_0xaaeb8){_0x4b3cbf['dataValues']['Messages']=[];_0x4b3cbf[_0x5d96('0xc9')][_0x5d96('0xc8')]['push'](_0xaaeb8[_0x5d96('0xc9')]);return _0x4b3cbf;});})[_0x5d96('0x36')](respondWithResult(_0x54754b,null))['catch'](handleError(_0x54754b,null));};exports[_0x5d96('0x2a')]=function(_0x5c791a,_0x3151cc,_0x43b6e6){if(_0x5c791a[_0x5d96('0x65')]['id']){delete _0x5c791a[_0x5d96('0x65')]['id'];}var _0x37743a,_0x4a8657,_0xa7c2d9;return db[_0x5d96('0x54')][_0x5d96('0x5c')]({'where':{'id':_0x5c791a[_0x5d96('0x5a')]['id']}})[_0x5d96('0x36')](handleEntityNotFound(_0x3151cc,null))[_0x5d96('0x36')](function(_0x1d83db){if(_0x1d83db){_0xa7c2d9=_0x1d83db;logger[_0x5d96('0x22')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x5d96('0x2a'),_0x5d96('0xca'),_0x1d83db[_0x5d96('0x42')],util['inspect'](_0x5c791a[_0x5d96('0x65')],{'showHidden':![],'depth':null}));switch(_0x1d83db[_0x5d96('0x42')]){case'skebby':if(_0x5c791a['body'][_0x5d96('0xcb')]&&_0x5c791a[_0x5d96('0x65')]['status']){_0x4a8657=_0x5c791a[_0x5d96('0x65')][_0x5d96('0x2a')];return db[_0x5d96('0xab')][_0x5d96('0x5c')]({'where':{'messageId':_0x5c791a['body'][_0x5d96('0xcb')]}});}break;case _0x5d96('0xcc'):if(_0x5c791a['body'][_0x5d96('0xcd')]&&_0x5c791a['body'][_0x5d96('0xce')]){_0x4a8657=_0x5c791a[_0x5d96('0x65')][_0x5d96('0xce')];return db[_0x5d96('0xab')][_0x5d96('0x5c')]({'where':{'messageId':_0x5c791a['body'][_0x5d96('0xcd')]}});}break;case _0x5d96('0x8a'):if(_0x5c791a[_0x5d96('0x65')]['message_id']&&_0x5c791a['body'][_0x5d96('0xcf')]){_0x4a8657=_0x5c791a[_0x5d96('0x65')][_0x5d96('0xcf')];return db[_0x5d96('0xab')]['find']({'where':{'messageId':_0x5c791a[_0x5d96('0x65')][_0x5d96('0xd0')]}});}break;case _0x5d96('0x8e'):var _0x4175b8=_0x5c791a[_0x5d96('0x65')][_0x5d96('0x8f')][0x0];if(_0x4175b8['messageId']&&_0x4175b8[_0x5d96('0x2a')]['groupName']==='DELIVERED'){_0x4a8657=_0x4175b8[_0x5d96('0x2a')][_0x5d96('0xd1')];return db[_0x5d96('0xab')]['find']({'where':{'messageId':_0x4175b8[_0x5d96('0x85')]}});}break;case _0x5d96('0x92'):if(_0x5c791a[_0x5d96('0x65')][_0x5d96('0x85')]&&_0x5c791a[_0x5d96('0x65')][_0x5d96('0x2a')]){_0x4a8657=_0x5c791a[_0x5d96('0x65')][_0x5d96('0x2a')];return db[_0x5d96('0xab')][_0x5d96('0x5c')]({'where':{'messageId':_0x5c791a[_0x5d96('0x65')][_0x5d96('0x85')]}});}break;case _0x5d96('0xd2'):if(_0x5c791a[_0x5d96('0x65')][0x0][_0x5d96('0x26')]['id']){_0x4a8657=_0x5c791a[_0x5d96('0x65')][0x0][_0x5d96('0x42')];return db['SmsMessage'][_0x5d96('0x5c')]({'where':{'messageId':_0x5c791a[_0x5d96('0x65')][0x0][_0x5d96('0x26')]['id']}});}break;case'intelepeer':if(_0x5c791a[_0x5d96('0x65')][_0x5d96('0xd3')]&&_0x5c791a[_0x5d96('0x65')][_0x5d96('0x2a')]){_0x4a8657=_0x5c791a[_0x5d96('0x65')][_0x5d96('0x2a')];return db[_0x5d96('0xab')][_0x5d96('0x5c')]({'where':{'messageId':_0x5c791a['body']['redif']}});}break;}}})[_0x5d96('0x36')](handleEntityNotFound(_0x3151cc,null))[_0x5d96('0x36')](function(_0x596607){if(_0x596607){_0x37743a=_0x596607;switch(_0xa7c2d9['type']){case'skebby':if(_0x4a8657===_0x5d96('0xd4')){return _0x37743a[_0x5d96('0x35')]({'read':!![]});}else{logger[_0x5d96('0x25')](_0x5d96('0x23'),_0x5d96('0x2a'),_0x5d96('0x87'),util[_0x5d96('0xd5')](_0x5c791a[_0x5d96('0x65')],{'showHidden':![],'depth':null}));}break;case _0x5d96('0xcc'):if(_0x4a8657==='1'){return _0x37743a['update']({'read':!![]});}else{logger[_0x5d96('0x25')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x5d96('0x87'),util[_0x5d96('0xd5')](_0x5c791a[_0x5d96('0x65')],{'showHidden':![],'depth':null}));}break;case _0x5d96('0x8a'):if(!_0x5c791a['body'][_0x5d96('0xd6')]&&_0x4a8657>=0xc8&&_0x4a8657<=0xce){return _0x37743a['update']({'read':!![]});}else{logger[_0x5d96('0x25')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x5d96('0x8a'),util['inspect'](_0x5c791a[_0x5d96('0x65')],{'showHidden':![],'depth':null}));}break;case _0x5d96('0x8e'):var _0x38c21f=_0x5c791a[_0x5d96('0x65')][_0x5d96('0x8f')][0x0];if(_0x38c21f[_0x5d96('0x2a')]['groupName']==='DELIVERED'){return _0x37743a[_0x5d96('0x35')]({'read':!![]});}else{logger['error'](_0x5d96('0x23'),_0x5d96('0x2a'),_0x5d96('0x8e'),util[_0x5d96('0xd5')](_0x5c791a[_0x5d96('0x65')],{'showHidden':![],'depth':null}));}break;case _0x5d96('0x92'):if(_0x4a8657==_0x5d96('0xd7')||_0x4a8657==_0x5d96('0xd8')){return _0x37743a['update']({'read':!![]});}else{logger[_0x5d96('0x25')](_0x5d96('0x23'),'status',_0x5d96('0x92'),util[_0x5d96('0xd5')](_0x5c791a[_0x5d96('0x65')],{'showHidden':![],'depth':null}));}break;case _0x5d96('0xd2'):if(_0x4a8657==_0x5d96('0xd9')){return _0x37743a[_0x5d96('0x35')]({'read':!![]});}else{logger[_0x5d96('0x25')](_0x5d96('0x23'),_0x5d96('0x2a'),_0x5d96('0xd2'),util[_0x5d96('0xd5')](_0x5c791a[_0x5d96('0x65')],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x4a8657===_0x5d96('0xda')||_0x4a8657===_0x5d96('0xdb')){return _0x37743a[_0x5d96('0x35')]({'read':!![]});}else{logger['error'](_0x5d96('0x23'),_0x5d96('0x2a'),_0x5d96('0x95'),util[_0x5d96('0xd5')](_0x5c791a[_0x5d96('0x65')],{'showHidden':![],'depth':null}));}break;}return _0x37743a;}})['then'](respondWithResult(_0x3151cc,null))[_0x5d96('0x28')](handleError(_0x3151cc,null));};exports[_0x5d96('0xdc')]=function(_0x3917e7,_0x4c514,_0x188837){var _0x837a52,_0xd4c1f0,_0x2a307b;return db[_0x5d96('0x54')]['find']({'where':{'id':_0x3917e7[_0x5d96('0x5a')]['id']}})['then'](handleEntityNotFound(_0x4c514,null))['then'](function(_0xb1324e){if(_0xb1324e){_0x2a307b=_0xb1324e;logger[_0x5d96('0x22')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x5d96('0x2a'),'received\x20delivery\x20report\x20from',_0xb1324e[_0x5d96('0x42')],util[_0x5d96('0xd5')](_0x3917e7[_0x5d96('0x44')],{'showHidden':![],'depth':null}));switch(_0xb1324e[_0x5d96('0x42')]){case _0x5d96('0xdd'):if(_0x3917e7[_0x5d96('0x44')]['message-id']&&_0x3917e7[_0x5d96('0x44')][_0x5d96('0xde')]){_0xd4c1f0=_0x3917e7[_0x5d96('0x44')][_0x5d96('0xde')];return db[_0x5d96('0xab')][_0x5d96('0x5c')]({'where':{'messageId':_0x3917e7[_0x5d96('0x44')]['message-id']}});}break;}}})[_0x5d96('0x36')](handleEntityNotFound(_0x4c514,null))[_0x5d96('0x36')](function(_0x5356d1){if(_0x5356d1){_0x837a52=_0x5356d1;switch(_0x2a307b[_0x5d96('0x42')]){case _0x5d96('0xdd'):if(_0xd4c1f0==='2'||_0xd4c1f0==='6'){return _0x837a52[_0x5d96('0x35')]({'read':!![]});}else{logger[_0x5d96('0x25')](_0x5d96('0x23'),'status',_0x5d96('0xdd'),util[_0x5d96('0xd5')](_0x3917e7[_0x5d96('0x44')],{'showHidden':![],'depth':null}));};break;}return _0x837a52;}})[_0x5d96('0x36')](respondWithResult(_0x4c514,null))['catch'](handleError(_0x4c514,null));};exports[_0x5d96('0xdf')]=function(_0x5077a1,_0x53ad27,_0x17bbc8){return db[_0x5d96('0x54')]['find']({'where':{'id':_0x5077a1[_0x5d96('0x5a')]['id']}})[_0x5d96('0x36')](handleEntityNotFound(_0x53ad27,null))[_0x5d96('0x36')](function(_0x4ee724){if(_0x4ee724){return _0x4ee724[_0x5d96('0xdf')](_0x5077a1[_0x5d96('0x65')][_0x5d96('0xe0')],_[_0x5d96('0xa3')](_0x5077a1[_0x5d96('0x65')],[_0x5d96('0xe0'),'id'])||{})[_0x5d96('0xa7')](function(_0xd45bf0){for(var _0x3dd286=0x0;_0x3dd286<_0x5077a1[_0x5d96('0x65')][_0x5d96('0xe0')]['length'];_0x3dd286+=0x1){socket[_0x5d96('0xe1')](_0x5d96('0xe2'),{'UserId':Number(_0x5077a1['body'][_0x5d96('0xe0')][_0x3dd286]),'SmsAccountId':Number(_0x5077a1[_0x5d96('0x5a')]['id'])});}return _0xd45bf0;});}})[_0x5d96('0x36')](respondWithResult(_0x53ad27,null))[_0x5d96('0x28')](handleError(_0x53ad27,null));};exports['removeAgents']=function(_0x403243,_0x7f91f1,_0xe1c064){return db[_0x5d96('0x54')][_0x5d96('0x5c')]({'where':{'id':_0x403243[_0x5d96('0x5a')]['id']}})['then'](handleEntityNotFound(_0x7f91f1,null))[_0x5d96('0x36')](function(_0x5f120d){if(_0x5f120d){return _0x5f120d[_0x5d96('0xe3')](_0x403243[_0x5d96('0x44')][_0x5d96('0xe0')])[_0x5d96('0x36')](function(){if(_[_0x5d96('0xe4')](_0x403243[_0x5d96('0x44')][_0x5d96('0xe0')])){for(var _0x585917=0x0;_0x585917<_0x403243[_0x5d96('0x44')][_0x5d96('0xe0')][_0x5d96('0x48')];_0x585917+=0x1){socket[_0x5d96('0xe1')](_0x5d96('0xe5'),{'UserId':Number(_0x403243[_0x5d96('0x44')][_0x5d96('0xe0')][_0x585917]),'SmsAccountId':Number(_0x403243[_0x5d96('0x5a')]['id'])});}}else{socket[_0x5d96('0xe1')](_0x5d96('0xe5'),{'UserId':Number(_0x403243[_0x5d96('0x44')][_0x5d96('0xe0')]),'SmsAccountId':Number(_0x403243['params']['id'])});}});}})[_0x5d96('0x36')](respondWithStatusCode(_0x7f91f1,null))['catch'](handleError(_0x7f91f1,null));};exports[_0x5d96('0xe6')]=function(_0x522102,_0x188f5f,_0x12865a){var _0xd9f468={};var _0x4aa73c={};var _0x5bf8a3;var _0x296c4e;return db[_0x5d96('0x54')][_0x5d96('0x6a')]({'where':{'id':_0x522102[_0x5d96('0x5a')]['id']}})[_0x5d96('0x36')](handleEntityNotFound(_0x188f5f,null))[_0x5d96('0x36')](function(_0x400f6e){if(_0x400f6e){_0x5bf8a3=_0x400f6e;_0x4aa73c['model']=_[_0x5d96('0x5b')](db[_0x5d96('0xaf')][_0x5d96('0x40')]);_0x4aa73c[_0x5d96('0x44')]=_[_0x5d96('0x5b')](_0x522102[_0x5d96('0x44')]);_0x4aa73c[_0x5d96('0x4e')]=_[_0x5d96('0x45')](_0x4aa73c[_0x5d96('0x43')],_0x4aa73c[_0x5d96('0x44')]);_0xd9f468['attributes']=_[_0x5d96('0x45')](_0x4aa73c[_0x5d96('0x43')],qs[_0x5d96('0x46')](_0x522102[_0x5d96('0x44')][_0x5d96('0x46')]));_0xd9f468['attributes']=_0xd9f468[_0x5d96('0x47')][_0x5d96('0x48')]?_0xd9f468[_0x5d96('0x47')]:_0x4aa73c[_0x5d96('0x43')];_0xd9f468[_0x5d96('0x4b')]=qs[_0x5d96('0x4c')](_0x522102['query'][_0x5d96('0x4c')]);_0xd9f468[_0x5d96('0x4d')]=qs[_0x5d96('0x4e')](_[_0x5d96('0x4f')](_0x522102[_0x5d96('0x44')],_0x4aa73c['filters']));if(_0x522102['query']['filter']){_0xd9f468[_0x5d96('0x4d')]=_[_0x5d96('0x51')](_0xd9f468[_0x5d96('0x4d')],{'$or':_[_0x5d96('0x3f')](_0xd9f468[_0x5d96('0x47')],function(_0x2a3b5c){var _0x3671ce={};_0x3671ce[_0x2a3b5c]={'$like':'%'+_0x522102['query'][_0x5d96('0x50')]+'%'};return _0x3671ce;})});}_0xd9f468=_[_0x5d96('0x51')]({},_0xd9f468,_0x522102[_0x5d96('0x53')]);return _0x5bf8a3[_0x5d96('0xe6')](_0xd9f468);}})[_0x5d96('0x36')](function(_0x46c4a2){if(_0x46c4a2){_0x296c4e=_0x46c4a2[_0x5d96('0x48')];if(!_0x522102[_0x5d96('0x44')][_0x5d96('0x49')](_0x5d96('0x4a'))){_0xd9f468[_0x5d96('0x2e')]=qs[_0x5d96('0x2e')](_0x522102[_0x5d96('0x44')]['limit']);_0xd9f468[_0x5d96('0x30')]=qs[_0x5d96('0x30')](_0x522102[_0x5d96('0x44')][_0x5d96('0x30')]);}return _0x5bf8a3[_0x5d96('0xe6')](_0xd9f468);}})['then'](function(_0x5c4b8b){if(_0x5c4b8b){return _0x5c4b8b?{'count':_0x296c4e,'rows':_0x5c4b8b}:null;}})[_0x5d96('0x36')](respondWithResult(_0x188f5f,null))[_0x5d96('0x28')](handleError(_0x188f5f,null));};
\ No newline at end of file
index 7c951c5..586a765 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8b9=['remove','emit','exports','events','../../mysqldb','SmsAccount','setMaxListeners','save','update'];(function(_0x26d9e0,_0x305956){var _0x2915fe=function(_0x18f448){while(--_0x18f448){_0x26d9e0['push'](_0x26d9e0['shift']());}};_0x2915fe(++_0x305956);}(_0xb8b9,0x174));var _0x9b8b=function(_0x37d357,_0x2dd095){_0x37d357=_0x37d357-0x0;var _0x3fad62=_0xb8b9[_0x37d357];return _0x3fad62;};'use strict';var EventEmitter=require(_0x9b8b('0x0'));var SmsAccount=require(_0x9b8b('0x1'))['db'][_0x9b8b('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x9b8b('0x3')](0x0);var events={'afterCreate':_0x9b8b('0x4'),'afterUpdate':_0x9b8b('0x5'),'afterDestroy':_0x9b8b('0x6')};function emitEvent(_0x418d8e){return function(_0x1da9ff,_0x46e625,_0x44873a){SmsAccountEvents['emit'](_0x418d8e+':'+_0x1da9ff['id'],_0x1da9ff);SmsAccountEvents[_0x9b8b('0x7')](_0x418d8e,_0x1da9ff);_0x44873a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module[_0x9b8b('0x8')]=SmsAccountEvents;
\ No newline at end of file
+var _0x2933=['hasOwnProperty','exports','events','SmsAccount','setMaxListeners','save','remove','emit'];(function(_0x13e741,_0x5d3c24){var _0x3f8bb3=function(_0x4440a0){while(--_0x4440a0){_0x13e741['push'](_0x13e741['shift']());}};_0x3f8bb3(++_0x5d3c24);}(_0x2933,0x142));var _0x3293=function(_0x4cee2b,_0x35423f){_0x4cee2b=_0x4cee2b-0x0;var _0x215999=_0x2933[_0x4cee2b];return _0x215999;};'use strict';var EventEmitter=require(_0x3293('0x0'));var SmsAccount=require('../../mysqldb')['db'][_0x3293('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x3293('0x2')](0x0);var events={'afterCreate':_0x3293('0x3'),'afterUpdate':'update','afterDestroy':_0x3293('0x4')};function emitEvent(_0x3544ed){return function(_0x747c79,_0x2c72a3,_0x526d7d){SmsAccountEvents[_0x3293('0x5')](_0x3544ed+':'+_0x747c79['id'],_0x747c79);SmsAccountEvents[_0x3293('0x5')](_0x3544ed,_0x747c79);_0x526d7d(null);};}for(var e in events){if(events[_0x3293('0x6')](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module[_0x3293('0x7')]=SmsAccountEvents;
\ No newline at end of file
index 91dcbc2..80084ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf02f=['path','rimraf','./smsAccount.attributes','exports','define','SmsAccount','sms_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2460d9,_0x15da87){var _0x4bc204=function(_0x40bbce){while(--_0x40bbce){_0x2460d9['push'](_0x2460d9['shift']());}};_0x4bc204(++_0x15da87);}(_0xf02f,0x93));var _0xff02=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf02f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xff02('0x0'));var util=require(_0xff02('0x1'));var logger=require(_0xff02('0x2'))(_0xff02('0x3'));var moment=require(_0xff02('0x4'));var BPromise=require(_0xff02('0x5'));var rp=require(_0xff02('0x6'));var fs=require('fs');var path=require(_0xff02('0x7'));var rimraf=require(_0xff02('0x8'));var config=require('../../config/environment');var attributes=require(_0xff02('0x9'));module[_0xff02('0xa')]=function(_0x1b54fb,_0x6aec6c){return _0x1b54fb[_0xff02('0xb')](_0xff02('0xc'),attributes,{'tableName':_0xff02('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1543=['moment','bluebird','path','rimraf','./smsAccount.attributes','exports','sms_accounts','lodash','../../config/logger','api'];(function(_0x53eabc,_0x3d76d5){var _0x4e3564=function(_0x1cd40a){while(--_0x1cd40a){_0x53eabc['push'](_0x53eabc['shift']());}};_0x4e3564(++_0x3d76d5);}(_0x1543,0x1c9));var _0x3154=function(_0x4426ef,_0x1bde6b){_0x4426ef=_0x4426ef-0x0;var _0x455cec=_0x1543[_0x4426ef];return _0x455cec;};'use strict';var _=require(_0x3154('0x0'));var util=require('util');var logger=require(_0x3154('0x1'))(_0x3154('0x2'));var moment=require(_0x3154('0x3'));var BPromise=require(_0x3154('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3154('0x5'));var rimraf=require(_0x3154('0x6'));var config=require('../../config/environment');var attributes=require(_0x3154('0x7'));module[_0x3154('0x8')]=function(_0x2a1ed6,_0x4c072){return _0x2a1ed6['define']('SmsAccount',attributes,{'tableName':_0x3154('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fe9d358..c29cf57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd45=['../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register','request','then','info','request\x20sent','debug','stringify','error','code','SmsAccount,\x20%s,\x20%s','message','catch','find','options','raw','where','map','include','model','attributes','ShowSmsAccount','lodash','moment','bluebird','randomstring','ioredis'];(function(_0x4707e7,_0xd2a9ed){var _0x2b5b65=function(_0x11453d){while(--_0x11453d){_0x4707e7['push'](_0x4707e7['shift']());}};_0x2b5b65(++_0xd2a9ed);}(_0xfd45,0x1b7));var _0x5fd4=function(_0x4b2863,_0x494899){_0x4b2863=_0x4b2863-0x0;var _0x567d67=_0xfd45[_0x4b2863];return _0x567d67;};'use strict';var _=require(_0x5fd4('0x0'));var util=require('util');var moment=require(_0x5fd4('0x1'));var BPromise=require(_0x5fd4('0x2'));var rs=require(_0x5fd4('0x3'));var fs=require('fs');var Redis=require(_0x5fd4('0x4'));var db=require(_0x5fd4('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x5fd4('0x6'))(_0x5fd4('0x7'));var config=require('../../config/environment');var jayson=require(_0x5fd4('0x8'));var client=jayson[_0x5fd4('0x9')][_0x5fd4('0xa')]({'port':0x232a});config[_0x5fd4('0xb')]=_[_0x5fd4('0xc')](config[_0x5fd4('0xb')],{'host':_0x5fd4('0xd'),'port':0x18eb});var socket=require(_0x5fd4('0xe'))(new Redis(config['redis']));require(_0x5fd4('0xf'))[_0x5fd4('0x10')](socket);function respondWithRpcPromise(_0x41c119,_0x5b6081,_0x244a20){return new BPromise(function(_0x8ce857,_0x193187){return client[_0x5fd4('0x11')](_0x41c119,_0x244a20)[_0x5fd4('0x12')](function(_0x308ad2){logger[_0x5fd4('0x13')]('SmsAccount,\x20%s,\x20%s',_0x5b6081,_0x5fd4('0x14'));logger[_0x5fd4('0x15')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x5b6081,_0x5fd4('0x14'),JSON[_0x5fd4('0x16')](_0x308ad2));if(_0x308ad2[_0x5fd4('0x17')]){if(_0x308ad2[_0x5fd4('0x17')][_0x5fd4('0x18')]===0x1f4){logger['error'](_0x5fd4('0x19'),_0x5b6081,_0x308ad2[_0x5fd4('0x17')][_0x5fd4('0x1a')]);return _0x193187(_0x308ad2[_0x5fd4('0x17')][_0x5fd4('0x1a')]);}logger[_0x5fd4('0x17')](_0x5fd4('0x19'),_0x5b6081,_0x308ad2[_0x5fd4('0x17')][_0x5fd4('0x1a')]);return _0x8ce857(_0x308ad2[_0x5fd4('0x17')][_0x5fd4('0x1a')]);}else{logger['info'](_0x5fd4('0x19'),_0x5b6081,_0x5fd4('0x14'));_0x8ce857(_0x308ad2['result']['message']);}})[_0x5fd4('0x1b')](function(_0x483757){logger[_0x5fd4('0x17')](_0x5fd4('0x19'),_0x5b6081,_0x483757);_0x193187(_0x483757);});});}exports['ShowSmsAccount']=function(_0x300303){var _0x565e7b=this;return new Promise(function(_0x231d48,_0x13d87f){return db['SmsAccount'][_0x5fd4('0x1c')]({'raw':_0x300303[_0x5fd4('0x1d')]?_0x300303['options'][_0x5fd4('0x1e')]===undefined?!![]:![]:!![],'where':_0x300303[_0x5fd4('0x1d')]?_0x300303['options'][_0x5fd4('0x1f')]||null:null,'attributes':_0x300303[_0x5fd4('0x1d')]?_0x300303['options']['attributes']||null:null,'include':_0x300303[_0x5fd4('0x1d')]?_0x300303[_0x5fd4('0x1d')]['include']?_[_0x5fd4('0x20')](_0x300303[_0x5fd4('0x1d')][_0x5fd4('0x21')],function(_0x11f0aa){return{'model':db[_0x11f0aa[_0x5fd4('0x22')]],'as':_0x11f0aa['as'],'attributes':_0x11f0aa['attributes'],'include':_0x11f0aa['include']?_[_0x5fd4('0x20')](_0x11f0aa[_0x5fd4('0x21')],function(_0x3fba7c){return{'model':db[_0x3fba7c[_0x5fd4('0x22')]],'as':_0x3fba7c['as'],'attributes':_0x3fba7c['attributes'],'include':_0x3fba7c[_0x5fd4('0x21')]?_[_0x5fd4('0x20')](_0x3fba7c[_0x5fd4('0x21')],function(_0x27adc9){return{'model':db[_0x27adc9['model']],'as':_0x27adc9['as'],'attributes':_0x27adc9[_0x5fd4('0x23')]};}):[]};}):[]};}):[]:[]})[_0x5fd4('0x12')](function(_0x3751de){logger[_0x5fd4('0x13')](_0x5fd4('0x24'),_0x300303);logger['debug'](_0x5fd4('0x24'),_0x300303,JSON[_0x5fd4('0x16')](_0x3751de));_0x231d48(_0x3751de);})[_0x5fd4('0x1b')](function(_0x175248){logger['error'](_0x5fd4('0x24'),_0x175248[_0x5fd4('0x1a')],_0x300303);_0x13d87f(_0x565e7b['error'](0x1f4,_0x175248[_0x5fd4('0x1a')]));});});};
\ No newline at end of file
+var _0x4ae7=['where','attributes','map','include','model','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./smsAccount.socket','register','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','ShowSmsAccount','SmsAccount','find','options'];(function(_0x490c45,_0x97b829){var _0x82738e=function(_0x215c17){while(--_0x215c17){_0x490c45['push'](_0x490c45['shift']());}};_0x82738e(++_0x97b829);}(_0x4ae7,0x136));var _0x74ae=function(_0x427677,_0x397c4e){_0x427677=_0x427677-0x0;var _0x8e5fd9=_0x4ae7[_0x427677];return _0x8e5fd9;};'use strict';var _=require(_0x74ae('0x0'));var util=require('util');var moment=require(_0x74ae('0x1'));var BPromise=require(_0x74ae('0x2'));var rs=require(_0x74ae('0x3'));var fs=require('fs');var Redis=require(_0x74ae('0x4'));var db=require(_0x74ae('0x5'))['db'];var utils=require(_0x74ae('0x6'));var logger=require('../../config/logger')(_0x74ae('0x7'));var config=require(_0x74ae('0x8'));var jayson=require(_0x74ae('0x9'));var client=jayson[_0x74ae('0xa')][_0x74ae('0xb')]({'port':0x232a});config[_0x74ae('0xc')]=_[_0x74ae('0xd')](config[_0x74ae('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x74ae('0xe'))(new Redis(config['redis']));require(_0x74ae('0xf'))[_0x74ae('0x10')](socket);function respondWithRpcPromise(_0x38a196,_0x7bf800,_0x3a4c53){return new BPromise(function(_0x234b8a,_0x395ffa){return client[_0x74ae('0x11')](_0x38a196,_0x3a4c53)[_0x74ae('0x12')](function(_0x4ab528){logger[_0x74ae('0x13')](_0x74ae('0x14'),_0x7bf800,_0x74ae('0x15'));logger[_0x74ae('0x16')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x7bf800,_0x74ae('0x15'),JSON[_0x74ae('0x17')](_0x4ab528));if(_0x4ab528[_0x74ae('0x18')]){if(_0x4ab528[_0x74ae('0x18')][_0x74ae('0x19')]===0x1f4){logger[_0x74ae('0x18')](_0x74ae('0x14'),_0x7bf800,_0x4ab528[_0x74ae('0x18')]['message']);return _0x395ffa(_0x4ab528[_0x74ae('0x18')]['message']);}logger['error'](_0x74ae('0x14'),_0x7bf800,_0x4ab528[_0x74ae('0x18')][_0x74ae('0x1a')]);return _0x234b8a(_0x4ab528[_0x74ae('0x18')]['message']);}else{logger[_0x74ae('0x13')](_0x74ae('0x14'),_0x7bf800,_0x74ae('0x15'));_0x234b8a(_0x4ab528[_0x74ae('0x1b')]['message']);}})['catch'](function(_0x13839f){logger[_0x74ae('0x18')](_0x74ae('0x14'),_0x7bf800,_0x13839f);_0x395ffa(_0x13839f);});});}exports[_0x74ae('0x1c')]=function(_0x31c568){var _0x35fdac=this;return new Promise(function(_0x1f8fda,_0x374eb6){return db[_0x74ae('0x1d')][_0x74ae('0x1e')]({'raw':_0x31c568[_0x74ae('0x1f')]?_0x31c568[_0x74ae('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x31c568[_0x74ae('0x1f')]?_0x31c568[_0x74ae('0x1f')][_0x74ae('0x20')]||null:null,'attributes':_0x31c568[_0x74ae('0x1f')]?_0x31c568[_0x74ae('0x1f')][_0x74ae('0x21')]||null:null,'include':_0x31c568[_0x74ae('0x1f')]?_0x31c568['options']['include']?_[_0x74ae('0x22')](_0x31c568['options'][_0x74ae('0x23')],function(_0x176ab8){return{'model':db[_0x176ab8['model']],'as':_0x176ab8['as'],'attributes':_0x176ab8[_0x74ae('0x21')],'include':_0x176ab8[_0x74ae('0x23')]?_[_0x74ae('0x22')](_0x176ab8[_0x74ae('0x23')],function(_0x463f1e){return{'model':db[_0x463f1e[_0x74ae('0x24')]],'as':_0x463f1e['as'],'attributes':_0x463f1e[_0x74ae('0x21')],'include':_0x463f1e['include']?_[_0x74ae('0x22')](_0x463f1e[_0x74ae('0x23')],function(_0x31f54c){return{'model':db[_0x31f54c[_0x74ae('0x24')]],'as':_0x31f54c['as'],'attributes':_0x31f54c[_0x74ae('0x21')]};}):[]};}):[]};}):[]:[]})[_0x74ae('0x12')](function(_0x583389){logger[_0x74ae('0x13')](_0x74ae('0x1c'),_0x31c568);logger[_0x74ae('0x16')](_0x74ae('0x1c'),_0x31c568,JSON['stringify'](_0x583389));_0x1f8fda(_0x583389);})[_0x74ae('0x25')](function(_0x59a3fa){logger[_0x74ae('0x18')]('ShowSmsAccount',_0x59a3fa[_0x74ae('0x1a')],_0x31c568);_0x374eb6(_0x35fdac['error'](0x1f4,_0x59a3fa['message']));});});};
\ No newline at end of file
index b9fa456..8c1d641 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(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'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 fef0572..e08bafb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x3a6521,_0x2df2da){var _0x23b318=function(_0x1f4a3f){while(--_0x1f4a3f){_0x3a6521['push'](_0x3a6521['shift']());}};_0x23b318(++_0x2df2da);}(_0x55ca,0x126));var _0xa55c=function(_0x1ed116,_0x23bc80){_0x1ed116=_0x1ed116-0x0;var _0x574066=_0x55ca[_0x1ed116];return _0x574066;};'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
+var _0x008c=['exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','post','put','/:id'];(function(_0x228142,_0x11238a){var _0x43e00f=function(_0x1ef0b3){while(--_0x1ef0b3){_0x228142['push'](_0x228142['shift']());}};_0x43e00f(++_0x11238a);}(_0x008c,0x188));var _0xc008=function(_0x23c77e,_0x110c62){_0x23c77e=_0x23c77e-0x0;var _0x57d2be=_0x008c[_0x23c77e];return _0x57d2be;};'use strict';var multer=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var path=require(_0xc008('0x2'));var timeout=require(_0xc008('0x3'));var express=require(_0xc008('0x4'));var router=express['Router']();var fs_extra=require(_0xc008('0x5'));var auth=require(_0xc008('0x6'));var interaction=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var controller=require(_0xc008('0x9'));router[_0xc008('0xa')]('/',auth[_0xc008('0xb')](),controller[_0xc008('0xc')]);router[_0xc008('0xa')]('/:id',auth[_0xc008('0xb')](),controller['show']);router[_0xc008('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0xc008('0xe')](_0xc008('0xf'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xc008('0xf'),auth[_0xc008('0xb')](),controller['destroy']);module[_0xc008('0x10')]=router;
\ No newline at end of file
index 5abc0ed..4a9cadc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa782=['noop','TEXT','STRING','*,*,*,*','sequelize','exports'];(function(_0x3bd17b,_0x5a4dad){var _0x2b69a8=function(_0x172162){while(--_0x172162){_0x3bd17b['push'](_0x3bd17b['shift']());}};_0x2b69a8(++_0x5a4dad);}(_0xa782,0xe2));var _0x2a78=function(_0x2235bf,_0x3a06a7){_0x2235bf=_0x2235bf-0x0;var _0x4c3a64=_0xa782[_0x2235bf];return _0x4c3a64;};'use strict';var Sequelize=require(_0x2a78('0x0'));module[_0x2a78('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x2a78('0x2')},'appdata':{'type':Sequelize[_0x2a78('0x3')]()},'description':{'type':Sequelize[_0x2a78('0x4')]},'interval':{'type':Sequelize[_0x2a78('0x4')],'defaultValue':_0x2a78('0x5')}};
\ No newline at end of file
+var _0xa2ea=['TEXT','sequelize','exports','INTEGER','STRING','noop'];(function(_0x20048c,_0x337690){var _0x1d7f4b=function(_0x420930){while(--_0x420930){_0x20048c['push'](_0x20048c['shift']());}};_0x1d7f4b(++_0x337690);}(_0xa2ea,0xa3));var _0xaa2e=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0xa2ea[_0x4dbaad];return _0x226c72;};'use strict';var Sequelize=require(_0xaa2e('0x0'));module[_0xaa2e('0x1')]={'priority':{'type':Sequelize[_0xaa2e('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xaa2e('0x3')],'allowNull':![],'defaultValue':_0xaa2e('0x4')},'appdata':{'type':Sequelize[_0xaa2e('0x5')]()},'description':{'type':Sequelize[_0xaa2e('0x3')]},'interval':{'type':Sequelize[_0xaa2e('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 3024c3e..4479f6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x282b=['includeAll','include','catch','show','params','find','create','body','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','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','json','offset','undefined','limit','count','status','apply','reject','save','then','destroy','end','stack','name','send','index','map','SmsApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x282b,0x1be));var _0xb282=function(_0x5cae14,_0x4e3f36){_0x5cae14=_0x5cae14-0x0;var _0x285790=_0x282b[_0x5cae14];return _0x285790;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xb282('0x0'));var jsonpatch=require(_0xb282('0x1'));var rp=require(_0xb282('0x2'));var moment=require('moment');var BPromise=require(_0xb282('0x3'));var Mustache=require(_0xb282('0x4'));var util=require(_0xb282('0x5'));var path=require(_0xb282('0x6'));var sox=require(_0xb282('0x7'));var csv=require(_0xb282('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb282('0x9'));var crypto=require('crypto');var jsforce=require(_0xb282('0xa'));var deskjs=require(_0xb282('0xb'));var toCsv=require(_0xb282('0x8'));var querystring=require(_0xb282('0xc'));var Papa=require('papaparse');var Redis=require(_0xb282('0xd'));var authService=require(_0xb282('0xe'));var qs=require(_0xb282('0xf'));var as=require(_0xb282('0x10'));var hardwareService=require(_0xb282('0x11'));var logger=require(_0xb282('0x12'))(_0xb282('0x13'));var utils=require(_0xb282('0x14'));var config=require(_0xb282('0x15'));var licenseUtil=require(_0xb282('0x16'));var db=require(_0xb282('0x17'))['db'];function respondWithStatusCode(_0x5f11ba,_0x1592b3){_0x1592b3=_0x1592b3||0xcc;return function(_0x12e438){if(_0x12e438){return _0x5f11ba[_0xb282('0x18')](_0x1592b3);}return _0x5f11ba['status'](_0x1592b3)['end']();};}function respondWithResult(_0x1351b9,_0x4b1d44){_0x4b1d44=_0x4b1d44||0xc8;return function(_0x54731a){if(_0x54731a){return _0x1351b9['status'](_0x4b1d44)[_0xb282('0x19')](_0x54731a);}};}function respondWithFilteredResult(_0x3a6c98,_0x286a60){return function(_0x2a6239){if(_0x2a6239){var _0x9b70e8=typeof _0x286a60[_0xb282('0x1a')]===_0xb282('0x1b')&&typeof _0x286a60[_0xb282('0x1c')]===_0xb282('0x1b');var _0x3ba9b9=_0x2a6239[_0xb282('0x1d')];var _0x4e2bb0=_0x9b70e8?0x0:_0x286a60[_0xb282('0x1a')];var _0x22534c=_0x9b70e8?_0x2a6239['count']:_0x286a60[_0xb282('0x1a')]+_0x286a60['limit'];var _0x4b42f9;if(_0x22534c>=_0x3ba9b9){_0x22534c=_0x3ba9b9;_0x4b42f9=0xc8;}else{_0x4b42f9=0xce;}_0x3a6c98[_0xb282('0x1e')](_0x4b42f9);return _0x3a6c98['set']('Content-Range',_0x4e2bb0+'-'+_0x22534c+'/'+_0x3ba9b9)[_0xb282('0x19')](_0x2a6239);}return null;};}function patchUpdates(_0x29f53d){return function(_0xfdae53){try{jsonpatch[_0xb282('0x1f')](_0xfdae53,_0x29f53d,!![]);}catch(_0x3aed37){return BPromise[_0xb282('0x20')](_0x3aed37);}return _0xfdae53[_0xb282('0x21')]();};}function saveUpdates(_0x38940d,_0x139bf4){return function(_0x180ea2){if(_0x180ea2){return _0x180ea2['update'](_0x38940d)[_0xb282('0x22')](function(_0x1aaa45){return _0x1aaa45;});}return null;};}function removeEntity(_0x46831d,_0x208e31){return function(_0x343362){if(_0x343362){return _0x343362[_0xb282('0x23')]()[_0xb282('0x22')](function(){_0x46831d[_0xb282('0x1e')](0xcc)[_0xb282('0x24')]();});}};}function handleEntityNotFound(_0x309d85,_0x3b02b7){return function(_0x3bae15){if(!_0x3bae15){_0x309d85[_0xb282('0x18')](0x194);}return _0x3bae15;};}function handleError(_0x5643ee,_0x24048e){_0x24048e=_0x24048e||0x1f4;return function(_0xb77e47){logger['error'](_0xb77e47[_0xb282('0x25')]);if(_0xb77e47[_0xb282('0x26')]){delete _0xb77e47[_0xb282('0x26')];}_0x5643ee['status'](_0x24048e)[_0xb282('0x27')](_0xb77e47);};}exports[_0xb282('0x28')]=function(_0x306817,_0x4bd132){var _0x42be4d={},_0x48a553={},_0xc9e04f={'count':0x0,'rows':[]};var _0x6944c=_[_0xb282('0x29')](db[_0xb282('0x2a')][_0xb282('0x2b')],function(_0x3dc0d3){return{'name':_0x3dc0d3[_0xb282('0x2c')],'type':_0x3dc0d3[_0xb282('0x2d')][_0xb282('0x2e')]};});_0x48a553[_0xb282('0x2f')]=_['map'](_0x6944c,_0xb282('0x26'));_0x48a553[_0xb282('0x30')]=_[_0xb282('0x31')](_0x306817['query']);_0x48a553[_0xb282('0x32')]=_[_0xb282('0x33')](_0x48a553['model'],_0x48a553[_0xb282('0x30')]);_0x42be4d[_0xb282('0x34')]=_['intersection'](_0x48a553['model'],qs[_0xb282('0x35')](_0x306817[_0xb282('0x30')]['fields']));_0x42be4d['attributes']=_0x42be4d[_0xb282('0x34')][_0xb282('0x36')]?_0x42be4d[_0xb282('0x34')]:_0x48a553[_0xb282('0x2f')];if(!_0x306817[_0xb282('0x30')][_0xb282('0x37')](_0xb282('0x38'))){_0x42be4d[_0xb282('0x1c')]=qs[_0xb282('0x1c')](_0x306817['query'][_0xb282('0x1c')]);_0x42be4d[_0xb282('0x1a')]=qs[_0xb282('0x1a')](_0x306817[_0xb282('0x30')][_0xb282('0x1a')]);}_0x42be4d[_0xb282('0x39')]=qs[_0xb282('0x3a')](_0x306817[_0xb282('0x30')][_0xb282('0x3a')]);_0x42be4d[_0xb282('0x3b')]=qs['filters'](_[_0xb282('0x3c')](_0x306817[_0xb282('0x30')],_0x48a553[_0xb282('0x32')]),_0x6944c);if(_0x306817[_0xb282('0x30')][_0xb282('0x3d')]){_0x42be4d[_0xb282('0x3b')]=_[_0xb282('0x3e')](_0x42be4d[_0xb282('0x3b')],{'$or':_[_0xb282('0x29')](_0x6944c,function(_0x3ca928){if(_0x3ca928[_0xb282('0x2d')]!==_0xb282('0x3f')){var _0x2ced12={};_0x2ced12[_0x3ca928['name']]={'$like':'%'+_0x306817[_0xb282('0x30')][_0xb282('0x3d')]+'%'};return _0x2ced12;}})});}_0x42be4d=_[_0xb282('0x3e')]({},_0x42be4d,_0x306817[_0xb282('0x40')]);var _0x55e1e0={'where':_0x42be4d[_0xb282('0x3b')]};return db[_0xb282('0x2a')][_0xb282('0x1d')](_0x55e1e0)[_0xb282('0x22')](function(_0x499aeb){_0xc9e04f[_0xb282('0x1d')]=_0x499aeb;if(_0x306817[_0xb282('0x30')][_0xb282('0x41')]){_0x42be4d[_0xb282('0x42')]=[{'all':!![]}];}return db[_0xb282('0x2a')]['findAll'](_0x42be4d);})[_0xb282('0x22')](function(_0x1a973e){_0xc9e04f['rows']=_0x1a973e;return _0xc9e04f;})[_0xb282('0x22')](respondWithFilteredResult(_0x4bd132,_0x42be4d))[_0xb282('0x43')](handleError(_0x4bd132,null));};exports[_0xb282('0x44')]=function(_0x46126f,_0x52fd96){var _0x1a2a07={'raw':!![],'where':{'id':_0x46126f[_0xb282('0x45')]['id']}},_0x5e6e0c={};_0x5e6e0c['model']=_[_0xb282('0x31')](db['SmsApplication'][_0xb282('0x2b')]);_0x5e6e0c[_0xb282('0x30')]=_[_0xb282('0x31')](_0x46126f['query']);_0x5e6e0c[_0xb282('0x32')]=_[_0xb282('0x33')](_0x5e6e0c[_0xb282('0x2f')],_0x5e6e0c[_0xb282('0x30')]);_0x1a2a07['attributes']=_[_0xb282('0x33')](_0x5e6e0c[_0xb282('0x2f')],qs[_0xb282('0x35')](_0x46126f['query'][_0xb282('0x35')]));_0x1a2a07[_0xb282('0x34')]=_0x1a2a07[_0xb282('0x34')]['length']?_0x1a2a07[_0xb282('0x34')]:_0x5e6e0c['model'];if(_0x46126f[_0xb282('0x30')]['includeAll']){_0x1a2a07['include']=[{'all':!![]}];}_0x1a2a07=_['merge']({},_0x1a2a07,_0x46126f[_0xb282('0x40')]);return db[_0xb282('0x2a')][_0xb282('0x46')](_0x1a2a07)[_0xb282('0x22')](handleEntityNotFound(_0x52fd96,null))[_0xb282('0x22')](respondWithResult(_0x52fd96,null))[_0xb282('0x43')](handleError(_0x52fd96,null));};exports[_0xb282('0x47')]=function(_0x2fa528,_0xdf3836){return db[_0xb282('0x2a')]['create'](_0x2fa528['body'],{})[_0xb282('0x22')](respondWithResult(_0xdf3836,0xc9))[_0xb282('0x43')](handleError(_0xdf3836,null));};exports['update']=function(_0x1e792a,_0x658a47){if(_0x1e792a[_0xb282('0x48')]['id']){delete _0x1e792a[_0xb282('0x48')]['id'];}return db[_0xb282('0x2a')]['find']({'where':{'id':_0x1e792a['params']['id']}})[_0xb282('0x22')](handleEntityNotFound(_0x658a47,null))['then'](saveUpdates(_0x1e792a[_0xb282('0x48')],null))[_0xb282('0x22')](respondWithResult(_0x658a47,null))[_0xb282('0x43')](handleError(_0x658a47,null));};exports[_0xb282('0x23')]=function(_0x6cbbd7,_0x4b5242){return db['SmsApplication'][_0xb282('0x46')]({'where':{'id':_0x6cbbd7[_0xb282('0x45')]['id']}})[_0xb282('0x22')](handleEntityNotFound(_0x4b5242,null))[_0xb282('0x22')](removeEntity(_0x4b5242,null))[_0xb282('0x43')](handleError(_0x4b5242,null));};
\ No newline at end of file
+var _0xfe0b=['../../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','json','undefined','limit','count','offset','set','Content-Range','apply','reject','then','destroy','end','error','name','index','map','SmsApplication','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','params','keys','find','create','body','update','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','papaparse'];(function(_0x592663,_0x2c3a74){var _0x392f26=function(_0x1fcc39){while(--_0x1fcc39){_0x592663['push'](_0x592663['shift']());}};_0x392f26(++_0x2c3a74);}(_0xfe0b,0x1a2));var _0xbfe0=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xfe0b[_0x432682];return _0x463d05;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbfe0('0x0'));var zipdir=require(_0xbfe0('0x1'));var jsonpatch=require(_0xbfe0('0x2'));var rp=require(_0xbfe0('0x3'));var moment=require(_0xbfe0('0x4'));var BPromise=require(_0xbfe0('0x5'));var Mustache=require(_0xbfe0('0x6'));var util=require(_0xbfe0('0x7'));var path=require(_0xbfe0('0x8'));var sox=require(_0xbfe0('0x9'));var csv=require(_0xbfe0('0xa'));var ejs=require(_0xbfe0('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xbfe0('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xbfe0('0xd'));var Redis=require('ioredis');var authService=require(_0xbfe0('0xe'));var qs=require(_0xbfe0('0xf'));var as=require(_0xbfe0('0x10'));var hardwareService=require(_0xbfe0('0x11'));var logger=require(_0xbfe0('0x12'))(_0xbfe0('0x13'));var utils=require(_0xbfe0('0x14'));var config=require(_0xbfe0('0x15'));var licenseUtil=require(_0xbfe0('0x16'));var db=require(_0xbfe0('0x17'))['db'];function respondWithStatusCode(_0x446041,_0x8219a7){_0x8219a7=_0x8219a7||0xcc;return function(_0x38568c){if(_0x38568c){return _0x446041[_0xbfe0('0x18')](_0x8219a7);}return _0x446041[_0xbfe0('0x19')](_0x8219a7)['end']();};}function respondWithResult(_0x302a5e,_0x19ccfb){_0x19ccfb=_0x19ccfb||0xc8;return function(_0x3919fb){if(_0x3919fb){return _0x302a5e[_0xbfe0('0x19')](_0x19ccfb)[_0xbfe0('0x1a')](_0x3919fb);}};}function respondWithFilteredResult(_0x2e6337,_0x13e08e){return function(_0x45a343){if(_0x45a343){var _0x440089=typeof _0x13e08e['offset']===_0xbfe0('0x1b')&&typeof _0x13e08e[_0xbfe0('0x1c')]===_0xbfe0('0x1b');var _0x140323=_0x45a343[_0xbfe0('0x1d')];var _0x580372=_0x440089?0x0:_0x13e08e[_0xbfe0('0x1e')];var _0x2438c2=_0x440089?_0x45a343['count']:_0x13e08e[_0xbfe0('0x1e')]+_0x13e08e[_0xbfe0('0x1c')];var _0x1dfaea;if(_0x2438c2>=_0x140323){_0x2438c2=_0x140323;_0x1dfaea=0xc8;}else{_0x1dfaea=0xce;}_0x2e6337[_0xbfe0('0x19')](_0x1dfaea);return _0x2e6337[_0xbfe0('0x1f')](_0xbfe0('0x20'),_0x580372+'-'+_0x2438c2+'/'+_0x140323)[_0xbfe0('0x1a')](_0x45a343);}return null;};}function patchUpdates(_0x3dda6e){return function(_0x147317){try{jsonpatch[_0xbfe0('0x21')](_0x147317,_0x3dda6e,!![]);}catch(_0x5a9f73){return BPromise[_0xbfe0('0x22')](_0x5a9f73);}return _0x147317['save']();};}function saveUpdates(_0x293206,_0x5b7046){return function(_0x3ff949){if(_0x3ff949){return _0x3ff949['update'](_0x293206)[_0xbfe0('0x23')](function(_0x1d8011){return _0x1d8011;});}return null;};}function removeEntity(_0x4d629c,_0xe0377){return function(_0x23f804){if(_0x23f804){return _0x23f804[_0xbfe0('0x24')]()[_0xbfe0('0x23')](function(){_0x4d629c[_0xbfe0('0x19')](0xcc)[_0xbfe0('0x25')]();});}};}function handleEntityNotFound(_0x1de051,_0x3fdfa4){return function(_0x11a48b){if(!_0x11a48b){_0x1de051[_0xbfe0('0x18')](0x194);}return _0x11a48b;};}function handleError(_0x4c82a0,_0x525da4){_0x525da4=_0x525da4||0x1f4;return function(_0x26c1c8){logger[_0xbfe0('0x26')](_0x26c1c8['stack']);if(_0x26c1c8[_0xbfe0('0x27')]){delete _0x26c1c8['name'];}_0x4c82a0[_0xbfe0('0x19')](_0x525da4)['send'](_0x26c1c8);};}exports[_0xbfe0('0x28')]=function(_0x4a8f4b,_0xaec0cb){var _0x4f23ed={},_0x202f52={},_0x46cfa8={'count':0x0,'rows':[]};var _0xe7fefd=_[_0xbfe0('0x29')](db[_0xbfe0('0x2a')][_0xbfe0('0x2b')],function(_0x175dd8){return{'name':_0x175dd8[_0xbfe0('0x2c')],'type':_0x175dd8[_0xbfe0('0x2d')][_0xbfe0('0x2e')]};});_0x202f52[_0xbfe0('0x2f')]=_[_0xbfe0('0x29')](_0xe7fefd,_0xbfe0('0x27'));_0x202f52[_0xbfe0('0x30')]=_['keys'](_0x4a8f4b['query']);_0x202f52[_0xbfe0('0x31')]=_[_0xbfe0('0x32')](_0x202f52['model'],_0x202f52[_0xbfe0('0x30')]);_0x4f23ed[_0xbfe0('0x33')]=_[_0xbfe0('0x32')](_0x202f52[_0xbfe0('0x2f')],qs[_0xbfe0('0x34')](_0x4a8f4b[_0xbfe0('0x30')][_0xbfe0('0x34')]));_0x4f23ed[_0xbfe0('0x33')]=_0x4f23ed['attributes'][_0xbfe0('0x35')]?_0x4f23ed[_0xbfe0('0x33')]:_0x202f52[_0xbfe0('0x2f')];if(!_0x4a8f4b[_0xbfe0('0x30')][_0xbfe0('0x36')]('nolimit')){_0x4f23ed['limit']=qs[_0xbfe0('0x1c')](_0x4a8f4b[_0xbfe0('0x30')]['limit']);_0x4f23ed[_0xbfe0('0x1e')]=qs[_0xbfe0('0x1e')](_0x4a8f4b[_0xbfe0('0x30')][_0xbfe0('0x1e')]);}_0x4f23ed['order']=qs[_0xbfe0('0x37')](_0x4a8f4b[_0xbfe0('0x30')]['sort']);_0x4f23ed[_0xbfe0('0x38')]=qs[_0xbfe0('0x31')](_[_0xbfe0('0x39')](_0x4a8f4b[_0xbfe0('0x30')],_0x202f52['filters']),_0xe7fefd);if(_0x4a8f4b['query'][_0xbfe0('0x3a')]){_0x4f23ed[_0xbfe0('0x38')]=_[_0xbfe0('0x3b')](_0x4f23ed[_0xbfe0('0x38')],{'$or':_[_0xbfe0('0x29')](_0xe7fefd,function(_0x4714bb){if(_0x4714bb[_0xbfe0('0x2d')]!=='VIRTUAL'){var _0x21597a={};_0x21597a[_0x4714bb['name']]={'$like':'%'+_0x4a8f4b[_0xbfe0('0x30')][_0xbfe0('0x3a')]+'%'};return _0x21597a;}})});}_0x4f23ed=_[_0xbfe0('0x3b')]({},_0x4f23ed,_0x4a8f4b[_0xbfe0('0x3c')]);var _0x59da26={'where':_0x4f23ed[_0xbfe0('0x38')]};return db[_0xbfe0('0x2a')][_0xbfe0('0x1d')](_0x59da26)[_0xbfe0('0x23')](function(_0x45ea88){_0x46cfa8['count']=_0x45ea88;if(_0x4a8f4b[_0xbfe0('0x30')][_0xbfe0('0x3d')]){_0x4f23ed[_0xbfe0('0x3e')]=[{'all':!![]}];}return db['SmsApplication'][_0xbfe0('0x3f')](_0x4f23ed);})['then'](function(_0x501158){_0x46cfa8[_0xbfe0('0x40')]=_0x501158;return _0x46cfa8;})[_0xbfe0('0x23')](respondWithFilteredResult(_0xaec0cb,_0x4f23ed))[_0xbfe0('0x41')](handleError(_0xaec0cb,null));};exports['show']=function(_0x224de7,_0x403ca2){var _0x11c2b6={'raw':!![],'where':{'id':_0x224de7[_0xbfe0('0x42')]['id']}},_0x748e2f={};_0x748e2f[_0xbfe0('0x2f')]=_[_0xbfe0('0x43')](db['SmsApplication'][_0xbfe0('0x2b')]);_0x748e2f[_0xbfe0('0x30')]=_[_0xbfe0('0x43')](_0x224de7[_0xbfe0('0x30')]);_0x748e2f[_0xbfe0('0x31')]=_[_0xbfe0('0x32')](_0x748e2f[_0xbfe0('0x2f')],_0x748e2f[_0xbfe0('0x30')]);_0x11c2b6[_0xbfe0('0x33')]=_['intersection'](_0x748e2f[_0xbfe0('0x2f')],qs[_0xbfe0('0x34')](_0x224de7[_0xbfe0('0x30')][_0xbfe0('0x34')]));_0x11c2b6[_0xbfe0('0x33')]=_0x11c2b6[_0xbfe0('0x33')][_0xbfe0('0x35')]?_0x11c2b6[_0xbfe0('0x33')]:_0x748e2f['model'];if(_0x224de7[_0xbfe0('0x30')][_0xbfe0('0x3d')]){_0x11c2b6[_0xbfe0('0x3e')]=[{'all':!![]}];}_0x11c2b6=_[_0xbfe0('0x3b')]({},_0x11c2b6,_0x224de7[_0xbfe0('0x3c')]);return db[_0xbfe0('0x2a')][_0xbfe0('0x44')](_0x11c2b6)[_0xbfe0('0x23')](handleEntityNotFound(_0x403ca2,null))[_0xbfe0('0x23')](respondWithResult(_0x403ca2,null))[_0xbfe0('0x41')](handleError(_0x403ca2,null));};exports[_0xbfe0('0x45')]=function(_0x12726d,_0x120265){return db[_0xbfe0('0x2a')][_0xbfe0('0x45')](_0x12726d[_0xbfe0('0x46')],{})[_0xbfe0('0x23')](respondWithResult(_0x120265,0xc9))[_0xbfe0('0x41')](handleError(_0x120265,null));};exports[_0xbfe0('0x47')]=function(_0xda7332,_0x202797){if(_0xda7332[_0xbfe0('0x46')]['id']){delete _0xda7332[_0xbfe0('0x46')]['id'];}return db[_0xbfe0('0x2a')][_0xbfe0('0x44')]({'where':{'id':_0xda7332['params']['id']}})[_0xbfe0('0x23')](handleEntityNotFound(_0x202797,null))['then'](saveUpdates(_0xda7332[_0xbfe0('0x46')],null))[_0xbfe0('0x23')](respondWithResult(_0x202797,null))[_0xbfe0('0x41')](handleError(_0x202797,null));};exports[_0xbfe0('0x24')]=function(_0x1426a3,_0x106c05){return db[_0xbfe0('0x2a')][_0xbfe0('0x44')]({'where':{'id':_0x1426a3['params']['id']}})['then'](handleEntityNotFound(_0x106c05,null))[_0xbfe0('0x23')](removeEntity(_0x106c05,null))['catch'](handleError(_0x106c05,null));};
\ No newline at end of file
index cce89e3..bf77e83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9ca=['bluebird','request-promise','rimraf','../../config/environment','exports','define','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment'];(function(_0x26d436,_0x36aeb8){var _0x30c195=function(_0x42f610){while(--_0x42f610){_0x26d436['push'](_0x26d436['shift']());}};_0x30c195(++_0x36aeb8);}(_0xd9ca,0x1a0));var _0xad9c=function(_0x13d6e0,_0x18efaa){_0x13d6e0=_0x13d6e0-0x0;var _0xf924ae=_0xd9ca[_0x13d6e0];return _0xf924ae;};'use strict';var _=require(_0xad9c('0x0'));var util=require(_0xad9c('0x1'));var logger=require(_0xad9c('0x2'))('api');var moment=require(_0xad9c('0x3'));var BPromise=require(_0xad9c('0x4'));var rp=require(_0xad9c('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xad9c('0x6'));var config=require(_0xad9c('0x7'));var attributes=require('./smsApplication.attributes');module[_0xad9c('0x8')]=function(_0x42b0b9,_0xe37208){return _0x42b0b9[_0xad9c('0x9')]('SmsApplication',attributes,{'tableName':'sms_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xad9c('0xa'),'collate':_0xad9c('0xb')});};
\ No newline at end of file
+var _0x5282=['../../config/environment','./smsApplication.attributes','exports','define','SmsApplication','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x26d06e,_0x5d0f7f){var _0x1b39bc=function(_0x46c22e){while(--_0x46c22e){_0x26d06e['push'](_0x26d06e['shift']());}};_0x1b39bc(++_0x5d0f7f);}(_0x5282,0x111));var _0x2528=function(_0x25a42a,_0x3d489b){_0x25a42a=_0x25a42a-0x0;var _0x1129b1=_0x5282[_0x25a42a];return _0x1129b1;};'use strict';var _=require(_0x2528('0x0'));var util=require('util');var logger=require(_0x2528('0x1'))(_0x2528('0x2'));var moment=require(_0x2528('0x3'));var BPromise=require(_0x2528('0x4'));var rp=require(_0x2528('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2528('0x6'));var config=require(_0x2528('0x7'));var attributes=require(_0x2528('0x8'));module[_0x2528('0x9')]=function(_0x266084,_0x1f51f9){return _0x266084[_0x2528('0xa')](_0x2528('0xb'),attributes,{'tableName':'sms_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x2528('0xc'),'collate':_0x2528('0xd')});};
\ No newline at end of file
index 7aa2000..3564c58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cf5=['rpc','../../config/environment','jayson/promise','client','http','request','info','SmsApplication,\x20%s,\x20%s','request\x20sent','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb'];(function(_0x687ddc,_0x2092fa){var _0x441991=function(_0x49c6a6){while(--_0x49c6a6){_0x687ddc['push'](_0x687ddc['shift']());}};_0x441991(++_0x2092fa);}(_0x2cf5,0x19f));var _0x52cf=function(_0x7f14b8,_0x9b6ba9){_0x7f14b8=_0x7f14b8-0x0;var _0x3b7b11=_0x2cf5[_0x7f14b8];return _0x3b7b11;};'use strict';var _=require(_0x52cf('0x0'));var util=require(_0x52cf('0x1'));var moment=require('moment');var BPromise=require(_0x52cf('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x52cf('0x3'));var db=require(_0x52cf('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x52cf('0x5'));var config=require(_0x52cf('0x6'));var jayson=require(_0x52cf('0x7'));var client=jayson[_0x52cf('0x8')][_0x52cf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x13d2fe,_0x1ab7cd,_0x390162){return new BPromise(function(_0x41d874,_0x23b2ab){return client[_0x52cf('0xa')](_0x13d2fe,_0x390162)['then'](function(_0x46d7ac){logger[_0x52cf('0xb')](_0x52cf('0xc'),_0x1ab7cd,_0x52cf('0xd'));logger['debug'](_0x52cf('0xe'),_0x1ab7cd,_0x52cf('0xd'),JSON[_0x52cf('0xf')](_0x46d7ac));if(_0x46d7ac['error']){if(_0x46d7ac[_0x52cf('0x10')][_0x52cf('0x11')]===0x1f4){logger[_0x52cf('0x10')](_0x52cf('0xc'),_0x1ab7cd,_0x46d7ac[_0x52cf('0x10')][_0x52cf('0x12')]);return _0x23b2ab(_0x46d7ac['error']['message']);}logger[_0x52cf('0x10')](_0x52cf('0xc'),_0x1ab7cd,_0x46d7ac[_0x52cf('0x10')][_0x52cf('0x12')]);return _0x41d874(_0x46d7ac[_0x52cf('0x10')][_0x52cf('0x12')]);}else{logger[_0x52cf('0xb')](_0x52cf('0xc'),_0x1ab7cd,'request\x20sent');_0x41d874(_0x46d7ac[_0x52cf('0x13')][_0x52cf('0x12')]);}})[_0x52cf('0x14')](function(_0x580154){logger[_0x52cf('0x10')]('SmsApplication,\x20%s,\x20%s',_0x1ab7cd,_0x580154);_0x23b2ab(_0x580154);});});}
\ No newline at end of file
+var _0x56c8=['message','info','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','debug','SmsApplication,\x20%s,\x20%s,\x20%s','request\x20sent','error','SmsApplication,\x20%s,\x20%s'];(function(_0x5baef5,_0x4fb90b){var _0x57d3a1=function(_0x432836){while(--_0x432836){_0x5baef5['push'](_0x5baef5['shift']());}};_0x57d3a1(++_0x4fb90b);}(_0x56c8,0x12f));var _0x856c=function(_0xe79d37,_0x4f7ed0){_0xe79d37=_0xe79d37-0x0;var _0x52cfcd=_0x56c8[_0xe79d37];return _0x52cfcd;};'use strict';var _=require(_0x856c('0x0'));var util=require(_0x856c('0x1'));var moment=require(_0x856c('0x2'));var BPromise=require(_0x856c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x856c('0x4'));var db=require(_0x856c('0x5'))['db'];var utils=require(_0x856c('0x6'));var logger=require(_0x856c('0x7'))(_0x856c('0x8'));var config=require('../../config/environment');var jayson=require(_0x856c('0x9'));var client=jayson[_0x856c('0xa')][_0x856c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x15a17c,_0x338a7e,_0x456bdb){return new BPromise(function(_0x48d81b,_0x5064ef){return client[_0x856c('0xc')](_0x15a17c,_0x456bdb)[_0x856c('0xd')](function(_0xa2bd07){logger['info']('SmsApplication,\x20%s,\x20%s',_0x338a7e,'request\x20sent');logger[_0x856c('0xe')](_0x856c('0xf'),_0x338a7e,_0x856c('0x10'),JSON['stringify'](_0xa2bd07));if(_0xa2bd07[_0x856c('0x11')]){if(_0xa2bd07[_0x856c('0x11')]['code']===0x1f4){logger[_0x856c('0x11')](_0x856c('0x12'),_0x338a7e,_0xa2bd07[_0x856c('0x11')][_0x856c('0x13')]);return _0x5064ef(_0xa2bd07[_0x856c('0x11')][_0x856c('0x13')]);}logger[_0x856c('0x11')](_0x856c('0x12'),_0x338a7e,_0xa2bd07['error'][_0x856c('0x13')]);return _0x48d81b(_0xa2bd07['error'][_0x856c('0x13')]);}else{logger[_0x856c('0x14')](_0x856c('0x12'),_0x338a7e,_0x856c('0x10'));_0x48d81b(_0xa2bd07[_0x856c('0x15')][_0x856c('0x13')]);}})[_0x856c('0x16')](function(_0x13b1c6){logger[_0x856c('0x11')](_0x856c('0x12'),_0x338a7e,_0x13b1c6);_0x5064ef(_0x13b1c6);});});}
\ No newline at end of file
index bf016c3..7310691 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4024=['addTags','put','smsinteraction:update','update','delete','destroy','removeTags','multer','util','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','download','create','post','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags'];(function(_0x45d3f0,_0x4be53f){var _0x314b79=function(_0x563d32){while(--_0x563d32){_0x45d3f0['push'](_0x45d3f0['shift']());}};_0x314b79(++_0x4be53f);}(_0x4024,0x89));var _0x4402=function(_0x3e4b17,_0x1398fd){_0x3e4b17=_0x3e4b17-0x0;var _0xa2914=_0x4024[_0x3e4b17];return _0xa2914;};'use strict';var multer=require(_0x4402('0x0'));var util=require(_0x4402('0x1'));var path=require('path');var timeout=require(_0x4402('0x2'));var express=require(_0x4402('0x3'));var router=express['Router']();var fs_extra=require(_0x4402('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x4402('0x5'));var config=require(_0x4402('0x6'));var controller=require('./smsInteraction.controller');router['get']('/',auth[_0x4402('0x7')](),controller[_0x4402('0x8')]);router[_0x4402('0x9')]('/describe',auth[_0x4402('0x7')](),controller['describe']);router['get'](_0x4402('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x4402('0x9')]('/:id/messages',auth[_0x4402('0x7')](),controller['getMessages']);router[_0x4402('0x9')]('/:id/download',auth[_0x4402('0x7')](),controller[_0x4402('0xb')]);router['post']('/',auth[_0x4402('0x7')](),controller[_0x4402('0xc')]);router[_0x4402('0xd')]('/:id/messages',auth[_0x4402('0x7')](),controller[_0x4402('0xe')]);router[_0x4402('0xd')](_0x4402('0xf'),auth[_0x4402('0x7')](),interaction[_0x4402('0x10')](_0x4402('0x11'),_0x4402('0x12')),controller[_0x4402('0x13')]);router[_0x4402('0x14')](_0x4402('0xa'),auth[_0x4402('0x7')](),interaction[_0x4402('0x10')](_0x4402('0x11'),_0x4402('0x15')),controller[_0x4402('0x16')]);router[_0x4402('0x17')](_0x4402('0xa'),auth[_0x4402('0x7')](),interaction[_0x4402('0x10')]('sms','smsinteraction:destroy'),controller[_0x4402('0x18')]);router[_0x4402('0x17')]('/:id/tags',auth[_0x4402('0x7')](),controller[_0x4402('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0xe5b5=['destroy','removeTags','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','download','post','/:id/messages','addMessage','/:id/tags','sms','smsinteraction:addtags','put','tracked','smsinteraction:update','delete','smsinteraction:destroy'];(function(_0x1da06f,_0x280122){var _0x5847b0=function(_0x1ae8f8){while(--_0x1ae8f8){_0x1da06f['push'](_0x1da06f['shift']());}};_0x5847b0(++_0x280122);}(_0xe5b5,0x12b));var _0x5e5b=function(_0x53ddab,_0x4ada9d){_0x53ddab=_0x53ddab-0x0;var _0x5819ac=_0xe5b5[_0x53ddab];return _0x5819ac;};'use strict';var multer=require(_0x5e5b('0x0'));var util=require(_0x5e5b('0x1'));var path=require(_0x5e5b('0x2'));var timeout=require(_0x5e5b('0x3'));var express=require(_0x5e5b('0x4'));var router=express[_0x5e5b('0x5')]();var fs_extra=require(_0x5e5b('0x6'));var auth=require(_0x5e5b('0x7'));var interaction=require(_0x5e5b('0x8'));var config=require(_0x5e5b('0x9'));var controller=require(_0x5e5b('0xa'));router[_0x5e5b('0xb')]('/',auth[_0x5e5b('0xc')](),controller[_0x5e5b('0xd')]);router[_0x5e5b('0xb')](_0x5e5b('0xe'),auth[_0x5e5b('0xc')](),controller[_0x5e5b('0xf')]);router[_0x5e5b('0xb')](_0x5e5b('0x10'),auth[_0x5e5b('0xc')](),controller[_0x5e5b('0x11')]);router[_0x5e5b('0xb')]('/:id/messages',auth[_0x5e5b('0xc')](),controller['getMessages']);router[_0x5e5b('0xb')](_0x5e5b('0x12'),auth[_0x5e5b('0xc')](),controller[_0x5e5b('0x13')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x5e5b('0x14')](_0x5e5b('0x15'),auth[_0x5e5b('0xc')](),controller[_0x5e5b('0x16')]);router[_0x5e5b('0x14')](_0x5e5b('0x17'),auth[_0x5e5b('0xc')](),interaction['tracked'](_0x5e5b('0x18'),_0x5e5b('0x19')),controller['addTags']);router[_0x5e5b('0x1a')]('/:id',auth['isAuthenticated'](),interaction[_0x5e5b('0x1b')](_0x5e5b('0x18'),_0x5e5b('0x1c')),controller['update']);router[_0x5e5b('0x1d')]('/:id',auth[_0x5e5b('0xc')](),interaction[_0x5e5b('0x1b')]('sms',_0x5e5b('0x1e')),controller[_0x5e5b('0x1f')]);router[_0x5e5b('0x1d')]('/:id/tags',auth[_0x5e5b('0xc')](),controller[_0x5e5b('0x20')]);module['exports']=router;
\ No newline at end of file
index 87e1af5..2e9b08a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7b6=['STRING','ENUM','out','sequelize','moment','DATE'];(function(_0x5b401e,_0x25eedb){var _0x53e407=function(_0x4e8827){while(--_0x4e8827){_0x5b401e['push'](_0x5b401e['shift']());}};_0x53e407(++_0x25eedb);}(_0xb7b6,0x15f));var _0x6b7b=function(_0x4dc6fc,_0x388f5e){_0x4dc6fc=_0x4dc6fc-0x0;var _0x4e8eba=_0xb7b6[_0x4dc6fc];return _0x4e8eba;};'use strict';var Sequelize=require(_0x6b7b('0x0'));var moment=require(_0x6b7b('0x1'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x6b7b('0x2')]},'disposition':{'type':Sequelize[_0x6b7b('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x6b7b('0x3')]},'note':{'type':Sequelize[_0x6b7b('0x3')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x6b7b('0x4')]('in',_0x6b7b('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x6b7b('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x6b7b('0x4')]('in',_0x6b7b('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x4d87=['ENUM','out','moment','exports','BOOLEAN','STRING','DATE'];(function(_0x2a7ed1,_0x59159e){var _0xc81ead=function(_0xfa2187){while(--_0xfa2187){_0x2a7ed1['push'](_0x2a7ed1['shift']());}};_0xc81ead(++_0x59159e);}(_0x4d87,0xf0));var _0x74d8=function(_0x326fa1,_0x4fa2cd){_0x326fa1=_0x326fa1-0x0;var _0x10b976=_0x4d87[_0x326fa1];return _0x10b976;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x74d8('0x0'));module[_0x74d8('0x1')]={'closed':{'type':Sequelize[_0x74d8('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x74d8('0x3')]},'secondDisposition':{'type':Sequelize[_0x74d8('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x74d8('0x3')]},'read1stAt':{'type':Sequelize[_0x74d8('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x74d8('0x5')]('in',_0x74d8('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x74d8('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 5e572df..9745ff7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a65=['transcript-','.pdf','createPdfFromHTML','log','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','socket.io-emitter','./smsInteraction.socket','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','then','error','stack','name','Users','map','fullname','TagIds','forEach','Tags','push','catch','index','SmsInteraction','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','sort','where','pick','field','color','from','tools_tags','select','u.id','user_has_sms_interactions','left_join','users','cm_contacts','o.id\x20=\x20i.UserId','sms_accounts','a.id\x20=\x20i.SmsAccountId','sms_messages','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','expr','search','parseSearch','sqlOperator','conditions','value','having','`\x20=\x200','operator','split','length','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','UserId','body','some','compact','isEmpty','SmsAccountId','concat','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','order','contactName','t.id\x20IN\x20?','i.SmsAccountId\x20IS\x20NOT\x20NULL','role','agent','user','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','i.SmsAccountId\x20IN\x20?','sequelize','toString','keyBy','a.mandatoryDisposition','c.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','SmsInteractionId','options','create','params','destroy','describe','addMessage','ids','omit','SmsMessage','rawAttributes','nolimit','merge','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','include','findAll','addTags','setTags','spread','smsInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','User','lastName','Messages','direction','secret','SmsAccount','Owner','get','Account','N.A.','createdAt','closedAt','disposition','System','Contact','views'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4a65,0x1ac));var _0x54a6=function(_0x2c7b90,_0x575078){_0x2c7b90=_0x2c7b90-0x0;var _0x2d5672=_0x4a65[_0x2c7b90];return _0x2d5672;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x54a6('0x0'));var jsonpatch=require(_0x54a6('0x1'));var rp=require(_0x54a6('0x2'));var moment=require(_0x54a6('0x3'));var BPromise=require(_0x54a6('0x4'));var Mustache=require(_0x54a6('0x5'));var util=require(_0x54a6('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x54a6('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x54a6('0x8'));var crypto=require(_0x54a6('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x54a6('0xa'));var toCsv=require('to-csv');var querystring=require(_0x54a6('0xb'));var Papa=require('papaparse');var Redis=require(_0x54a6('0xc'));var authService=require('../../components/auth/service');var qs=require(_0x54a6('0xd'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0x54a6('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x54a6('0xf'))(_0x54a6('0x10'));var utils=require(_0x54a6('0x11'));var config=require(_0x54a6('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x54a6('0x13'))['db'];config['redis']=_['defaults'](config[_0x54a6('0x14')],{'host':'localhost','port':0x18eb});var socket=require(_0x54a6('0x15'))(new Redis(config[_0x54a6('0x14')]));require(_0x54a6('0x16'))['register'](socket);function respondWithStatusCode(_0x4cabb4,_0x111e69){_0x111e69=_0x111e69||0xcc;return function(_0x49d8d3){if(_0x49d8d3){return _0x4cabb4[_0x54a6('0x17')](_0x111e69);}return _0x4cabb4[_0x54a6('0x18')](_0x111e69)[_0x54a6('0x19')]();};}function respondWithResult(_0x413918,_0x16c337){_0x16c337=_0x16c337||0xc8;return function(_0x5c101f){if(_0x5c101f){return _0x413918[_0x54a6('0x18')](_0x16c337)['json'](_0x5c101f);}};}function respondWithFilteredResult(_0x11e92f,_0x397594){return function(_0x16cbfa){if(_0x16cbfa){var _0x1b0e0d=typeof _0x397594[_0x54a6('0x1a')]===_0x54a6('0x1b')&&typeof _0x397594[_0x54a6('0x1c')]===_0x54a6('0x1b');var _0x5dc7cc=_0x16cbfa['count'];var _0x27bbae=_0x1b0e0d?0x0:_0x397594['offset'];var _0x58e34e=_0x1b0e0d?_0x16cbfa[_0x54a6('0x1d')]:_0x397594[_0x54a6('0x1a')]+_0x397594[_0x54a6('0x1c')];var _0x3cc5eb;if(_0x58e34e>=_0x5dc7cc){_0x58e34e=_0x5dc7cc;_0x3cc5eb=0xc8;}else{_0x3cc5eb=0xce;}_0x11e92f[_0x54a6('0x18')](_0x3cc5eb);return _0x11e92f[_0x54a6('0x1e')]('Content-Range',_0x27bbae+'-'+_0x58e34e+'/'+_0x5dc7cc)[_0x54a6('0x1f')](_0x16cbfa);}return null;};}function patchUpdates(_0x3d7a9b){return function(_0x55c746){try{jsonpatch[_0x54a6('0x20')](_0x55c746,_0x3d7a9b,!![]);}catch(_0x45ad58){return BPromise[_0x54a6('0x21')](_0x45ad58);}return _0x55c746[_0x54a6('0x22')]();};}function saveUpdates(_0x40a617,_0x14defc){return function(_0x20a730){if(_0x20a730){return _0x20a730[_0x54a6('0x23')](_0x40a617)['then'](function(_0x5a78f9){return _0x5a78f9;});}return null;};}function removeEntity(_0x5bacc6,_0x37e316){return function(_0xbd40b9){if(_0xbd40b9){return _0xbd40b9['destroy']()[_0x54a6('0x24')](function(){_0x5bacc6['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xef3865,_0x14c966){return function(_0x5aa3f5){if(!_0x5aa3f5){_0xef3865['sendStatus'](0x194);}return _0x5aa3f5;};}function handleError(_0x4a293f,_0x2fa925){_0x2fa925=_0x2fa925||0x1f4;return function(_0x14eea6){logger[_0x54a6('0x25')](_0x14eea6[_0x54a6('0x26')]);if(_0x14eea6[_0x54a6('0x27')]){delete _0x14eea6[_0x54a6('0x27')];}_0x4a293f['status'](_0x2fa925)['send'](_0x14eea6);};}function getInteractionUsers(_0x499fc4,_0x58a48a){return new BPromise(function(_0x411892,_0x2b3958){try{if(_0x58a48a[_0x499fc4['id']]){_0x499fc4[_0x54a6('0x28')]=_[_0x54a6('0x29')](_0x58a48a[_0x499fc4['id']],function(_0x5cd2e5){return{'id':_0x5cd2e5['id'],'fullname':_0x5cd2e5[_0x54a6('0x2a')]};});}}catch(_0x4ab562){_0x2b3958(_0x4ab562);}_0x411892(_0x499fc4);});}function getInteractionTags(_0x4093da,_0x27c705){return new BPromise(function(_0xc5b3f2,_0x28afa1){try{if(_0x4093da[_0x54a6('0x2b')]){_0x4093da['Tags']=[];_0x4093da['TagIds']['split'](',')[_0x54a6('0x2c')](function(_0x1b2ad){_0x4093da[_0x54a6('0x2d')][_0x54a6('0x2e')](_0x27c705[_0x1b2ad]);});}delete _0x4093da[_0x54a6('0x2b')];}catch(_0x27fddc){_0x28afa1(_0x27fddc);}_0xc5b3f2(_0x4093da);});}function updateSmsInteraction(_0x2c3a40,_0x2fe668,_0x454ae0){return new BPromise(function(_0x52e78b,_0x5547cb){return getInteractionUsers(_0x2c3a40,_0x454ae0)['then'](function(_0x2d2014){return getInteractionTags(_0x2d2014,_0x2fe668);})[_0x54a6('0x24')](function(_0x4cd85f){_0x52e78b(_0x4cd85f);})[_0x54a6('0x2f')](function(_0x54fe9a){_0x5547cb(_0x54fe9a);});});}exports[_0x54a6('0x30')]=function(_0x440e9c,_0x40e478){var _0x3bc3d8={},_0x31f0b7={},_0x574fc2={'count':0x0,'rows':[]};var _0x4b3304=_[_0x54a6('0x29')](db[_0x54a6('0x31')]['rawAttributes'],function(_0x530fe1){return{'name':_0x530fe1[_0x54a6('0x32')],'type':_0x530fe1[_0x54a6('0x33')][_0x54a6('0x34')]};});_0x31f0b7[_0x54a6('0x35')]=_['map'](_0x4b3304,'name');_0x31f0b7[_0x54a6('0x36')]=_[_0x54a6('0x37')](_0x440e9c[_0x54a6('0x36')]);_0x31f0b7[_0x54a6('0x38')]=_[_0x54a6('0x39')](_0x31f0b7[_0x54a6('0x35')],_0x31f0b7['query']);_0x3bc3d8['attributes']=_[_0x54a6('0x39')](_0x31f0b7[_0x54a6('0x35')],qs[_0x54a6('0x3a')](_0x440e9c[_0x54a6('0x36')][_0x54a6('0x3a')]));_0x3bc3d8[_0x54a6('0x3b')]=_0x3bc3d8[_0x54a6('0x3b')]['length']?_0x3bc3d8[_0x54a6('0x3b')]:_0x31f0b7[_0x54a6('0x35')];if(!_0x440e9c[_0x54a6('0x36')][_0x54a6('0x3c')]('nolimit')){_0x3bc3d8[_0x54a6('0x1c')]=qs[_0x54a6('0x1c')](_0x440e9c[_0x54a6('0x36')][_0x54a6('0x1c')]);_0x3bc3d8[_0x54a6('0x1a')]=qs['offset'](_0x440e9c['query'][_0x54a6('0x1a')]);}_0x3bc3d8['order']=qs[_0x54a6('0x3d')](_0x440e9c['query'][_0x54a6('0x3d')]);_0x3bc3d8[_0x54a6('0x3e')]=qs[_0x54a6('0x38')](_[_0x54a6('0x3f')](_0x440e9c[_0x54a6('0x36')],_0x31f0b7[_0x54a6('0x38')]),_0x4b3304);var _0x2c1146=[];var _0x55af8b=squel['select']()[_0x54a6('0x40')]('id')['field'](_0x54a6('0x27'))[_0x54a6('0x40')](_0x54a6('0x41'))[_0x54a6('0x42')](_0x54a6('0x43'));var _0x591c20=squel[_0x54a6('0x44')]()[_0x54a6('0x40')](_0x54a6('0x45'))[_0x54a6('0x40')]('u.fullname')[_0x54a6('0x40')]('ui.SmsInteractionId')[_0x54a6('0x42')](_0x54a6('0x46'),'ui')[_0x54a6('0x47')](_0x54a6('0x48'),'u','u.id\x20=\x20ui.UserId');var _0x2d00b5=squel['select']()['from']('sms_interactions','i')['left_join'](_0x54a6('0x49'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x54a6('0x47')](_0x54a6('0x48'),'o',_0x54a6('0x4a'))[_0x54a6('0x47')](_0x54a6('0x4b'),'a',_0x54a6('0x4c'))[_0x54a6('0x47')](_0x54a6('0x4d'),'me',_0x54a6('0x4e'))[_0x54a6('0x47')](_0x54a6('0x4f'),'it',_0x54a6('0x50'))[_0x54a6('0x47')](_0x54a6('0x43'),'t','t.id\x20=\x20it.TagId');var _0x1da9e0=squel[_0x54a6('0x51')]();var _0x26fd20=[];var _0x420581=squel[_0x54a6('0x51')]();var _0x10e611;if(_0x440e9c[_0x54a6('0x36')][_0x54a6('0x52')]){_0x10e611=as[_0x54a6('0x53')](_0x440e9c[_0x54a6('0x36')][_0x54a6('0x52')]);var _0x19c697=_0x10e611[_0x54a6('0x54')];for(var _0xe4a73d=0x0;_0xe4a73d<_0x10e611[_0x54a6('0x55')]['length'];_0xe4a73d++){var _0x39724c=_0x10e611['conditions'][_0xe4a73d];var _0x28eef8='i';var _0x1991d1=_['find'](_0x4b3304,[_0x54a6('0x27'),_0x39724c[_0x54a6('0x40')]]);if(!_0x1991d1){switch(_0x39724c[_0x54a6('0x40')]){case'unreadMessages':if(_0x39724c[_0x54a6('0x56')]==0x1){_0x2d00b5[_0x54a6('0x57')]('`'+_0x39724c[_0x54a6('0x40')]+_0x54a6('0x58'));}else{_0x2d00b5['having']('`'+_0x39724c['field']+'`\x20>\x200');}break;case'Contact':if(_0x39724c[_0x54a6('0x59')]==='$substring'){if(_0x39724c[_0x54a6('0x56')][_0x54a6('0x5a')]('\x20')[_0x54a6('0x5b')]>0x1){_0x1da9e0[_0x19c697]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x54a6('0x5c')](_0x39724c['value']),null);}else{var _0x353cd4='%'+_0x39724c[_0x54a6('0x56')]+'%';_0x1da9e0[_0x19c697](_0x54a6('0x5d'),_0x353cd4,_0x353cd4,_0x353cd4);}}else{_0x1991d1=_[_0x54a6('0x5e')](_0x4b3304,[_0x54a6('0x27'),_0x54a6('0x5f')]);_0x39724c[_0x54a6('0x40')]=_0x54a6('0x5f');_0x2cb215=as[_0x54a6('0x60')](_0x28eef8,_0x1991d1[_0x54a6('0x33')],_0x39724c);_0x1da9e0[_0x19c697](_0x2cb215[_0x54a6('0x61')],_0x2cb215['value'][_0x54a6('0x62')],_0x2cb215[_0x54a6('0x56')][_0x54a6('0x19')]);}break;case _0x54a6('0x63'):var _0x1d469a=_0x39724c['value']['split'](',')[_0x54a6('0x29')](function(_0x1f6916){return Number(_0x1f6916);});_0x1d469a['forEach'](function(_0x2199ea){_0x420581['or'](_0x54a6('0x64'),'%,'+_0x2199ea+',%');});_0x26fd20=_['union'](_0x26fd20,_0x1d469a);break;case'User':if(_0x39724c[_0x54a6('0x59')]==='$substring'){_0x1da9e0[_0x19c697]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x39724c[_0x54a6('0x56')]+'%',null);}else{_0x1991d1=_[_0x54a6('0x5e')](_0x4b3304,['name','UserId']);_0x39724c[_0x54a6('0x40')]=_0x54a6('0x65');_0x2cb215=as[_0x54a6('0x60')](_0x28eef8,_0x1991d1[_0x54a6('0x33')],_0x39724c);_0x1da9e0[_0x19c697](_0x2cb215[_0x54a6('0x61')],_0x2cb215[_0x54a6('0x56')][_0x54a6('0x62')],_0x2cb215[_0x54a6('0x56')]['end']);}break;case _0x54a6('0x66'):_0x2cb215=as[_0x54a6('0x60')]('me',null,_0x39724c);_0x1da9e0[_0x19c697](_0x2cb215[_0x54a6('0x61')],_0x2cb215['value'][_0x54a6('0x62')],_0x2cb215[_0x54a6('0x56')][_0x54a6('0x19')]);break;}}else{var _0x2cb215=as[_0x54a6('0x60')](_0x28eef8,_0x1991d1[_0x54a6('0x33')],_0x39724c);_0x1da9e0[_0x19c697](_0x2cb215['text'],_0x2cb215[_0x54a6('0x56')][_0x54a6('0x62')],_0x2cb215[_0x54a6('0x56')][_0x54a6('0x19')]);}}}else{var _0x4b9624=_(_0x440e9c[_0x54a6('0x36')])['keys']()[_0x54a6('0x29')](function(_0x2f0d55){return _[_0x54a6('0x67')](_0x4b3304,[_0x54a6('0x27'),_0x2f0d55])?_0x2f0d55:undefined;})[_0x54a6('0x68')]()[_0x54a6('0x56')]();if(!_[_0x54a6('0x69')](_0x4b9624)){_0x4b9624[_0x54a6('0x2c')](function(_0x324251){if(_0x324251===_0x54a6('0x6a')){_0x2d00b5['where']('i.SmsAccountId\x20IN\x20?',[][_0x54a6('0x6b')](_0x440e9c[_0x54a6('0x36')][_0x324251]));}else if(_0x324251==='createdAt'){var _0x23469b=JSON[_0x54a6('0x6c')](_0x440e9c['query'][_0x324251])[_0x54a6('0x6d')];var _0x23b2dd=JSON[_0x54a6('0x6c')](_0x440e9c[_0x54a6('0x36')][_0x324251])[_0x54a6('0x6e')];_0x2d00b5[_0x54a6('0x3e')](_0x54a6('0x6f'),_0x23469b,_0x23b2dd);}else{if(_0x440e9c[_0x54a6('0x36')][_0x324251]===_0x54a6('0x70')){_0x2d00b5[_0x54a6('0x3e')]('i.'+_0x324251+'\x20IS\x20NULL');}else{_0x2d00b5[_0x54a6('0x3e')]('i.'+_0x324251+_0x54a6('0x71'),_0x440e9c[_0x54a6('0x36')][_0x324251]);}}});}if(_0x440e9c[_0x54a6('0x36')][_0x54a6('0x72')]){if(_0x440e9c[_0x54a6('0x36')][_0x54a6('0x72')]==0x1){_0x2d00b5[_0x54a6('0x57')](_0x54a6('0x73'));}else{_0x2d00b5['having'](_0x54a6('0x74'));}}if(_0x440e9c[_0x54a6('0x36')][_0x54a6('0x75')]){_0x26fd20=_[_0x54a6('0x76')](_0x440e9c[_0x54a6('0x36')][_0x54a6('0x75')])?_0x440e9c[_0x54a6('0x36')][_0x54a6('0x75')]:new Array(_0x440e9c[_0x54a6('0x36')]['tag']);_0x26fd20[_0x54a6('0x2c')](function(_0x125cb3){_0x420581['or'](_0x54a6('0x64'),'%,'+_0x125cb3+',%');});}if(_0x440e9c[_0x54a6('0x36')][_0x54a6('0x77')]){var _0x4d3616=_0x440e9c[_0x54a6('0x36')]['filter'][_0x54a6('0x78')]('\x5c','\x5c\x5c')[_0x54a6('0x78')](/'/g,'\x27\x27');if(qs[_0x54a6('0x79')](_0x4d3616)){_0x1da9e0['or'](_0x54a6('0x7a'),_0x4d3616+'%')['or']('i.phone\x20LIKE\x20?',_0x4d3616+'%');}else{_0x1da9e0['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x54a6('0x5c')](_0x4d3616))['or'](_0x54a6('0x7b'),_0x4d3616+'%');}}}_0x2d00b5[_0x54a6('0x3e')](_0x1da9e0);_0x2d00b5[_0x54a6('0x7c')]('i.id');var _0x4ab357={'type':db[_0x54a6('0x7d')][_0x54a6('0x7e')][_0x54a6('0x7f')],'raw':!![]};var _0x507e49=_0x2d00b5[_0x54a6('0x80')]();_0x507e49[_0x54a6('0x40')]('i.id');_0x507e49[_0x54a6('0x40')](_0x54a6('0x81'),_0x54a6('0x82'));if(_0x3bc3d8[_0x54a6('0x83')]){_0x3bc3d8['order'][_0x54a6('0x2c')](function(_0x8948b4){var _0x16cd6f=_0x8948b4[0x0]===_0x54a6('0x84')?_0x8948b4[0x0]:'i.'+_0x8948b4[0x0];_0x2d00b5[_0x54a6('0x83')](_0x16cd6f,_0x8948b4[0x1]==='DESC'?![]:!![]);});}if(!_['isEmpty'](_0x26fd20)){_0x2d00b5[_0x54a6('0x57')](_0x420581);_0x507e49[_0x54a6('0x3e')](_0x54a6('0x85'),_0x26fd20);}BPromise['resolve']()[_0x54a6('0x24')](function(){if(!_0x10e611){if(_0x440e9c['query'][_0x54a6('0x6a')])return;_0x507e49[_0x54a6('0x3e')]('i.SmsAccountId\x20IS\x20NOT\x20NULL');_0x2d00b5[_0x54a6('0x3e')](_0x54a6('0x86'));return;}if(_0x440e9c['user'][_0x54a6('0x87')]!==_0x54a6('0x88'))return;return _0x440e9c[_0x54a6('0x89')][_0x54a6('0x8a')]({'attributes':['id'],'raw':!![]})[_0x54a6('0x24')](function(_0x413d3c){if(_[_0x54a6('0x69')](_0x413d3c)){_0x507e49[_0x54a6('0x3e')](_0x54a6('0x8b'));_0x2d00b5['where'](_0x54a6('0x8b'));}else{_0x507e49[_0x54a6('0x3e')](_0x54a6('0x8c'),_['map'](_0x413d3c,'id'));_0x2d00b5['where'](_0x54a6('0x8c'),_[_0x54a6('0x29')](_0x413d3c,'id'));}});})['then'](function(){if(_0x440e9c[_0x54a6('0x89')][_0x54a6('0x87')]===_0x54a6('0x88')&&!_0x10e611&&!_0x440e9c[_0x54a6('0x36')][_0x54a6('0x6a')])return[];return db[_0x54a6('0x8d')][_0x54a6('0x36')](_0x507e49[_0x54a6('0x8e')](),_0x4ab357);})['then'](function(_0x2a2d83){_0x574fc2[_0x54a6('0x1d')]=_0x2a2d83[_0x54a6('0x5b')];if(_0x574fc2[_0x54a6('0x1d')]===0x0)return[];return db['sequelize']['query'](_0x55af8b[_0x54a6('0x8e')](),_0x4ab357)[_0x54a6('0x24')](function(_0x397c1b){_0x2c1146=_[_0x54a6('0x8f')](_0x397c1b,'id');_0x4ab357=_['merge'](_0x4ab357,{'model':db['SmsInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x440e9c['query'][_0x54a6('0x3a')]){_0x3bc3d8[_0x54a6('0x3b')]['forEach'](function(_0x4995d8){_0x2d00b5[_0x54a6('0x40')]('i.'+_0x4995d8);});}else{_0x2d00b5[_0x54a6('0x40')](_0x54a6('0x81'),_0x54a6('0x82'));_0x2d00b5[_0x54a6('0x40')]('a.key','Account.key');_0x2d00b5['field'](_0x54a6('0x90'),'Account.mandatoryDisposition');_0x2d00b5[_0x54a6('0x40')]('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');_0x2d00b5[_0x54a6('0x40')]('i.*');_0x2d00b5['field'](_0x54a6('0x91'),'Contact.firstName');_0x2d00b5[_0x54a6('0x40')](_0x54a6('0x92'),_0x54a6('0x93'));_0x2d00b5['field'](_0x54a6('0x94'),_0x54a6('0x95'));_0x2d00b5['field'](_0x54a6('0x96'),_0x54a6('0x97'));_0x2d00b5[_0x54a6('0x40')](_0x54a6('0x98'),_0x54a6('0x99'));_0x2d00b5['field']('c.fax',_0x54a6('0x9a'));_0x2d00b5[_0x54a6('0x40')](_0x54a6('0x9b'),_0x54a6('0x9c'));_0x2d00b5[_0x54a6('0x40')](_0x54a6('0x9d'),'Owner.internal');_0x2d00b5[_0x54a6('0x40')](_0x54a6('0x9e'),_0x54a6('0x2b'));}if(_0x3bc3d8[_0x54a6('0x1c')])_0x2d00b5[_0x54a6('0x1c')](_0x3bc3d8[_0x54a6('0x1c')]);if(_0x3bc3d8['offset'])_0x2d00b5[_0x54a6('0x1a')](_0x3bc3d8[_0x54a6('0x1a')]);return db[_0x54a6('0x8d')]['query'](_0x2d00b5['toString'](),_0x4ab357);})[_0x54a6('0x24')](function(_0x21823b){if(_0x21823b[_0x54a6('0x5b')]>0x0)_0x591c20['where']('ui.SmsInteractionId\x20IN\x20?',_[_0x54a6('0x29')](_0x21823b,'id'));return db[_0x54a6('0x8d')][_0x54a6('0x36')](_0x591c20[_0x54a6('0x8e')](),_0x4ab357)[_0x54a6('0x24')](function(_0x70810){var _0x1718f7=_[_0x54a6('0x9f')](_0x70810,_0x54a6('0xa0'));var _0x152cea=[];_0x21823b['forEach'](function(_0xac038e){_0x152cea[_0x54a6('0x2e')](updateSmsInteraction(_0xac038e,_0x2c1146,_0x1718f7));});return BPromise['all'](_0x152cea);});});})[_0x54a6('0x24')](function(_0x3ea558){_0x574fc2['rows']=_0x3ea558;return _0x574fc2;})[_0x54a6('0x24')](respondWithFilteredResult(_0x40e478,_0x3bc3d8))[_0x54a6('0x2f')](handleError(_0x40e478,null));};exports['show']=function(_0xe428af,_0x4cbdfc){var _0x11f87b={'raw':![],'where':{'id':_0xe428af['params']['id']}},_0x8da0ef={};_0x8da0ef[_0x54a6('0x35')]=_[_0x54a6('0x37')](db[_0x54a6('0x31')]['rawAttributes']);_0x8da0ef[_0x54a6('0x36')]=_[_0x54a6('0x37')](_0xe428af[_0x54a6('0x36')]);_0x8da0ef[_0x54a6('0x38')]=_[_0x54a6('0x39')](_0x8da0ef[_0x54a6('0x35')],_0x8da0ef[_0x54a6('0x36')]);_0x11f87b[_0x54a6('0x3b')]=_[_0x54a6('0x39')](_0x8da0ef[_0x54a6('0x35')],qs['fields'](_0xe428af[_0x54a6('0x36')][_0x54a6('0x3a')]));_0x11f87b[_0x54a6('0x3b')]=_0x11f87b[_0x54a6('0x3b')]['length']?_0x11f87b[_0x54a6('0x3b')]:_0x8da0ef[_0x54a6('0x35')];if(_0xe428af[_0x54a6('0x36')]['includeAll']){_0x11f87b['include']=[{'all':!![]}];}_0x11f87b=_['merge']({},_0x11f87b,_0xe428af[_0x54a6('0xa1')]);return db[_0x54a6('0x31')][_0x54a6('0x5e')](_0x11f87b)[_0x54a6('0x24')](handleEntityNotFound(_0x4cbdfc,null))[_0x54a6('0x24')](respondWithResult(_0x4cbdfc,null))['catch'](handleError(_0x4cbdfc,null));};exports[_0x54a6('0xa2')]=function(_0x22c774,_0x4bac67){return db[_0x54a6('0x31')][_0x54a6('0xa2')](_0x22c774['body'],{})[_0x54a6('0x24')](respondWithResult(_0x4bac67,0xc9))[_0x54a6('0x2f')](handleError(_0x4bac67,null));};exports['update']=function(_0x51a684,_0x279c52){if(_0x51a684['body']['id']){delete _0x51a684['body']['id'];}return db['SmsInteraction'][_0x54a6('0x5e')]({'where':{'id':_0x51a684[_0x54a6('0xa3')]['id']}})[_0x54a6('0x24')](handleEntityNotFound(_0x279c52,null))['then'](saveUpdates(_0x51a684[_0x54a6('0x66')],null))[_0x54a6('0x24')](respondWithResult(_0x279c52,null))['catch'](handleError(_0x279c52,null));};exports[_0x54a6('0xa4')]=function(_0x3fa824,_0x16deac){return db[_0x54a6('0x31')][_0x54a6('0x5e')]({'where':{'id':_0x3fa824[_0x54a6('0xa3')]['id']}})[_0x54a6('0x24')](handleEntityNotFound(_0x16deac,null))[_0x54a6('0x24')](removeEntity(_0x16deac,null))['catch'](handleError(_0x16deac,null));};exports[_0x54a6('0xa5')]=function(_0x48c670,_0xfd532c){return db[_0x54a6('0x31')][_0x54a6('0xa5')]()[_0x54a6('0x24')](respondWithResult(_0xfd532c,null))[_0x54a6('0x2f')](handleError(_0xfd532c,null));};exports[_0x54a6('0xa6')]=function(_0x195ce2,_0x33cf7d,_0x25f7d1){return db['SmsMessage']['find']({'where':{'id':_0x195ce2[_0x54a6('0xa3')]['id']}})[_0x54a6('0x24')](handleEntityNotFound(_0x33cf7d,null))['then'](function(_0x492da7){if(_0x492da7){return _0x492da7[_0x54a6('0xa6')](_0x195ce2[_0x54a6('0x66')][_0x54a6('0xa7')],_[_0x54a6('0xa8')](_0x195ce2[_0x54a6('0x66')],[_0x54a6('0xa7'),'id'])||{});}})[_0x54a6('0x24')](respondWithResult(_0x33cf7d,null))['catch'](handleError(_0x33cf7d,null));};exports['getMessages']=function(_0x3ad80d,_0x4d21a9,_0x18fbaa){var _0x20d36a={'raw':![],'where':{}};var _0x55890a={};var _0x5115ca={'count':0x0,'rows':[]};return db[_0x54a6('0x31')]['findOne']({'where':{'id':_0x3ad80d[_0x54a6('0xa3')]['id']}})[_0x54a6('0x24')](handleEntityNotFound(_0x4d21a9,null))['then'](function(_0x56a6ab){if(_0x56a6ab){_0x55890a['model']=_['keys'](db[_0x54a6('0xa9')][_0x54a6('0xaa')]);_0x55890a[_0x54a6('0x36')]=_[_0x54a6('0x37')](_0x3ad80d[_0x54a6('0x36')]);_0x55890a[_0x54a6('0x38')]=_[_0x54a6('0x39')](_0x55890a[_0x54a6('0x35')],_0x55890a['query']);_0x20d36a[_0x54a6('0x3b')]=_[_0x54a6('0x39')](_0x55890a[_0x54a6('0x35')],qs[_0x54a6('0x3a')](_0x3ad80d[_0x54a6('0x36')][_0x54a6('0x3a')]));_0x20d36a['attributes']=_0x20d36a['attributes'][_0x54a6('0x5b')]?_0x20d36a[_0x54a6('0x3b')]:_0x55890a[_0x54a6('0x35')];if(!_0x3ad80d[_0x54a6('0x36')]['hasOwnProperty'](_0x54a6('0xab'))){_0x20d36a[_0x54a6('0x1c')]=qs[_0x54a6('0x1c')](_0x3ad80d[_0x54a6('0x36')][_0x54a6('0x1c')]);_0x20d36a[_0x54a6('0x1a')]=qs[_0x54a6('0x1a')](_0x3ad80d[_0x54a6('0x36')]['offset']);}_0x20d36a[_0x54a6('0x83')]=qs['sort'](_0x3ad80d[_0x54a6('0x36')][_0x54a6('0x3d')]);_0x20d36a[_0x54a6('0x3e')]=qs[_0x54a6('0x38')](_[_0x54a6('0x3f')](_0x3ad80d[_0x54a6('0x36')],_0x55890a['filters']));_0x20d36a[_0x54a6('0x3e')][_0x54a6('0xa0')]=_0x56a6ab['id'];if(_0x3ad80d['query']['filter']){_0x20d36a[_0x54a6('0x3e')]=_[_0x54a6('0xac')](_0x20d36a[_0x54a6('0x3e')],{'$or':_[_0x54a6('0x29')](_0x20d36a[_0x54a6('0x3b')],function(_0x318dc1){var _0x4d614a={};_0x4d614a[_0x318dc1]={'$like':'%'+_0x3ad80d['query'][_0x54a6('0x77')]+'%'};return _0x4d614a;})});}if(_0x3ad80d[_0x54a6('0x36')][_0x54a6('0x6d')]){var _0x350222=_0x3ad80d[_0x54a6('0x36')][_0x54a6('0x6d')][_0x54a6('0x5a')](',');var _0x4dc0a5={};_0x4dc0a5[_0x350222[0x0]]={'$gte':moment(_0x350222[0x1])[_0x54a6('0xad')](_0x54a6('0xae'))};_0x20d36a[_0x54a6('0x3e')]=_[_0x54a6('0xac')](_0x20d36a[_0x54a6('0x3e')],_0x4dc0a5);}_0x20d36a=_[_0x54a6('0xac')]({},_0x20d36a,_0x3ad80d[_0x54a6('0xa1')]);return db['SmsMessage'][_0x54a6('0x1d')]({'where':_0x20d36a['where']})['then'](function(_0x461247){_0x5115ca[_0x54a6('0x1d')]=_0x461247;if(_0x3ad80d[_0x54a6('0x36')][_0x54a6('0xaf')]){_0x20d36a[_0x54a6('0xb0')]=[{'all':!![]}];}return db['SmsMessage'][_0x54a6('0xb1')](_0x20d36a);})[_0x54a6('0x24')](function(_0x43bb67){_0x5115ca['rows']=_0x43bb67;return _0x5115ca;});}})[_0x54a6('0x24')](respondWithFilteredResult(_0x4d21a9,_0x20d36a))[_0x54a6('0x2f')](handleError(_0x4d21a9,null));};exports[_0x54a6('0xb2')]=function(_0x55b1ee,_0x31134e,_0x16b0c2){return db[_0x54a6('0x31')][_0x54a6('0x5e')]({'where':{'id':_0x55b1ee[_0x54a6('0xa3')]['id']}})[_0x54a6('0x24')](handleEntityNotFound(_0x31134e,null))[_0x54a6('0x24')](function(_0x141b00){if(_0x141b00){return _0x141b00[_0x54a6('0xb3')](_0x55b1ee[_0x54a6('0x66')][_0x54a6('0xa7')],_[_0x54a6('0xa8')](_0x55b1ee[_0x54a6('0x66')],[_0x54a6('0xa7'),'id'])||{})[_0x54a6('0xb4')](function(){return db[_0x54a6('0x63')]['findAll']({'attributes':['id','name',_0x54a6('0x41')],'where':{'id':_0x55b1ee[_0x54a6('0x66')][_0x54a6('0xa7')]}});})[_0x54a6('0x24')](function(_0x1dd41e){socket['emit'](_0x54a6('0xb5'),{'id':Number(_0x55b1ee[_0x54a6('0xa3')]['id']),'tags':_0x1dd41e||[]});return{'id':Number(_0x55b1ee[_0x54a6('0xa3')]['id']),'tags':_0x1dd41e||[]};});}})['then'](respondWithResult(_0x31134e,null))['catch'](handleError(_0x31134e,null));};exports[_0x54a6('0xb6')]=function(_0x16243e,_0x2bd46c,_0x2330ab){return db[_0x54a6('0x31')][_0x54a6('0x5e')]({'where':{'id':_0x16243e[_0x54a6('0xa3')]['id']}})['then'](handleEntityNotFound(_0x2bd46c,null))['then'](function(_0x5b58c2){if(_0x5b58c2){return _0x5b58c2['removeTags'](_0x16243e[_0x54a6('0x36')][_0x54a6('0xa7')]);}})[_0x54a6('0x24')](respondWithStatusCode(_0x2bd46c,null))[_0x54a6('0x2f')](handleError(_0x2bd46c,null));};exports[_0x54a6('0xb7')]=function(_0x16139b,_0x510cf2){var _0x1adb9e=moment()[_0x54a6('0xb8')]()[_0x54a6('0x8e')]();var _0xc3198b=path[_0x54a6('0xb9')](config[_0x54a6('0xba')],_0x54a6('0xbb'),_0x54a6('0xbc'),_0x54a6('0xbd'));var _0x31d669=path['join'](config[_0x54a6('0xba')],_0x54a6('0xbb'),_0x54a6('0xbc'),_0x54a6('0xbe'));var _0xd97fa0=path[_0x54a6('0xb9')](_0xc3198b,_0x1adb9e);var _0x38cc2c=util[_0x54a6('0xad')](_0x54a6('0xbf'),_0x16139b[_0x54a6('0xa3')]['id'],_0x1adb9e);var _0x43ac9c=path['join'](_0xc3198b,_0x38cc2c);var _0x35c411=[];_0x35c411[_0x54a6('0x2e')]({'model':db[_0x54a6('0xc0')],'as':_0x54a6('0xc0'),'attributes':['id','fullname'],'raw':!![]});_0x35c411[_0x54a6('0x2e')]({'model':db['CmContact'],'as':'Contact','attributes':['id','firstName',_0x54a6('0xc1')],'raw':!![]});var _0x15ae39=[{'model':db[_0x54a6('0xa9')],'as':_0x54a6('0xc2'),'attributes':['id',_0x54a6('0x66'),'createdAt',_0x54a6('0xc3'),_0x54a6('0xc4'),_0x54a6('0x72')],'include':_0x35c411}];_0x15ae39['push']({'model':db[_0x54a6('0xc5')],'as':'Account','attributes':['id','name']});_0x15ae39['push']({'model':db[_0x54a6('0xc0')],'as':_0x54a6('0xc6'),'attributes':['id',_0x54a6('0x2a')]});return db[_0x54a6('0x31')][_0x54a6('0x5e')]({'where':{'id':_0x16139b[_0x54a6('0xa3')]['id']},'include':_0x15ae39})['then'](handleEntityNotFound(_0x510cf2,null))[_0x54a6('0x24')](function(_0x501198){if(_0x501198){var _0x5ca15f=_0x501198[_0x54a6('0xc7')]({'plain':!![]});fs['mkdirSync'](_0xd97fa0);var _0x49b5cf={'channel':'Sms','account':_0x5ca15f[_0x54a6('0xc8')][_0x54a6('0x27')],'agent':_0x5ca15f[_0x54a6('0xc6')]?_0x5ca15f[_0x54a6('0xc6')]['fullname']:_0x54a6('0xc9'),'createdAt':moment(_0x5ca15f[_0x54a6('0xca')])[_0x54a6('0xad')]('YYYY-MM-DD\x20HH:mm:ss')[_0x54a6('0x8e')](),'closedAt':_0x5ca15f['closed']?moment(_0x5ca15f[_0x54a6('0xcb')])['format'](_0x54a6('0xae'))['toString']():'','disposition':_0x5ca15f[_0x54a6('0xcc')],'messages':_(_0x5ca15f[_0x54a6('0xc2')])['filter']({'secret':![]})[_0x54a6('0x29')](function(_0x3e8fc3){return{'date':moment(_0x3e8fc3[_0x54a6('0xca')])[_0x54a6('0xad')]('YYYY-MM-DD\x20HH:mm:ss')[_0x54a6('0x8e')](),'sender':_0x3e8fc3['direction']==='out'?_0x3e8fc3[_0x54a6('0xc0')]?_0x3e8fc3[_0x54a6('0xc0')]['fullname']:_0x54a6('0xcd'):_0x3e8fc3[_0x54a6('0xce')]['firstName']+(_0x3e8fc3['Contact']['lastName']?'\x20'+_0x3e8fc3['Contact']['lastName']:''),'body':_0x3e8fc3[_0x54a6('0x66')],'direction':_0x3e8fc3['direction']==='out'?'A':'C','secret':_0x3e8fc3[_0x54a6('0xc4')],'read':_0x3e8fc3[_0x54a6('0x72')]};})['value']()};return ejs['renderFile'](path[_0x54a6('0xb9')](config[_0x54a6('0xba')],_0x54a6('0xbb'),_0x54a6('0xcf'),'downloadInteraction.ejs'),{'interaction':_0x49b5cf})['then'](function(_0xf814c){var _0x3cac81=path[_0x54a6('0xb9')](_0xd97fa0,_0x54a6('0xd0')+_0x5ca15f['id']+'-'+_0x1adb9e+_0x54a6('0xd1'));var _0x3fd79a={'path':_0x3cac81,'channel':'Sms','interactionId':_0x5ca15f['id']};return pdf[_0x54a6('0xd2')](_0xf814c,_0x3fd79a);})[_0x54a6('0x24')](function(){return new BPromise(function(_0x42a5d3,_0x58c368){zipdir(_0xd97fa0,{'saveTo':_0x43ac9c},function(_0x29a8f6,_0x4200b9){if(_0x29a8f6)return _0x58c368(_0x29a8f6);return _0x42a5d3(_0x4200b9);});})[_0x54a6('0x24')](function(){return new BPromise(function(_0x2bef0c,_0x564fe0){rimraf(_0xd97fa0,function(_0x23542c){if(_0x23542c)_0x564fe0(_0x23542c);return _0x2bef0c();});});})[_0x54a6('0x24')](function(){return _0x510cf2[_0x54a6('0xb7')](_0x43ac9c,_0x38cc2c,function(_0x2ea2d0){if(_0x2ea2d0){console[_0x54a6('0xd3')]('err',_0x2ea2d0);}else{fs['unlinkSync'](_0x43ac9c);}});});});}else{return _0x510cf2[_0x54a6('0x17')](0xc8);}})[_0x54a6('0x2f')](handleError(_0x510cf2,null));};
\ No newline at end of file
+var _0xac4a=['group','Sequelize','QueryTypes','SELECT','clone','contactName','DESC','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','i.SmsAccountId\x20IN\x20?','toString','sequelize','keyBy','merge','SmsInteraction','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','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.*','Contact.firstName','c.lastName','c.email','Contact.phone','c.mobile','Contact.mobile','c.fax','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.SmsInteractionId\x20IN\x20?','groupBy','SmsInteractionId','all','rows','params','includeAll','include','options','create','body','update','describe','addMessage','ids','omit','getMessages','findOne','SmsMessage','format','YYYY-MM-DD\x20HH:mm:ss','spread','emit','smsInteractionTags:save','removeTags','download','join','server','tmp','root','files','CmContact','firstName','lastName','direction','secret','SmsAccount','Account','Owner','mkdirSync','Sms','N.A.','createdAt','disposition','Messages','System','out','renderFile','views','transcript-','.pdf','createPdfFromHTML','log','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','ejs','lodash','crypto','jsforce','querystring','ioredis','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','redis','localhost','./smsInteraction.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','then','destroy','error','stack','name','send','Users','map','TagIds','Tags','split','forEach','push','catch','index','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','field','color','from','tools_tags','u.id','ui.SmsInteractionId','user_has_sms_interactions','left_join','users','u.id\x20=\x20ui.UserId','select','sms_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','sms_accounts','a.id\x20=\x20i.SmsAccountId','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','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','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?','UserId','some','compact','isEmpty','SmsAccountId','concat','$gte','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?'];(function(_0x2825a6,_0x5111df){var _0x3eb3ea=function(_0x734517){while(--_0x734517){_0x2825a6['push'](_0x2825a6['shift']());}};_0x3eb3ea(++_0x5111df);}(_0xac4a,0x13f));var _0xaac4=function(_0x7574b4,_0x5d8850){_0x7574b4=_0x7574b4-0x0;var _0x574f00=_0xac4a[_0x7574b4];return _0x574f00;};'use strict';var emlformat=require(_0xaac4('0x0'));var rimraf=require(_0xaac4('0x1'));var zipdir=require(_0xaac4('0x2'));var jsonpatch=require(_0xaac4('0x3'));var rp=require(_0xaac4('0x4'));var moment=require(_0xaac4('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xaac4('0x6'));var path=require(_0xaac4('0x7'));var sox=require(_0xaac4('0x8'));var csv=require('to-csv');var ejs=require(_0xaac4('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaac4('0xa'));var squel=require('squel');var crypto=require(_0xaac4('0xb'));var jsforce=require(_0xaac4('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xaac4('0xd'));var Papa=require('papaparse');var Redis=require(_0xaac4('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xaac4('0xf'));var pdf=require(_0xaac4('0x10'));var hardwareService=require(_0xaac4('0x11'));var logger=require(_0xaac4('0x12'))(_0xaac4('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xaac4('0x14'));var db=require(_0xaac4('0x15'))['db'];config[_0xaac4('0x16')]=_['defaults'](config[_0xaac4('0x16')],{'host':_0xaac4('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xaac4('0x16')]));require(_0xaac4('0x18'))[_0xaac4('0x19')](socket);function respondWithStatusCode(_0x150fdd,_0x187624){_0x187624=_0x187624||0xcc;return function(_0x2fbeb7){if(_0x2fbeb7){return _0x150fdd[_0xaac4('0x1a')](_0x187624);}return _0x150fdd[_0xaac4('0x1b')](_0x187624)[_0xaac4('0x1c')]();};}function respondWithResult(_0xb8466e,_0x35bc32){_0x35bc32=_0x35bc32||0xc8;return function(_0x1766c2){if(_0x1766c2){return _0xb8466e[_0xaac4('0x1b')](_0x35bc32)['json'](_0x1766c2);}};}function respondWithFilteredResult(_0x33bc73,_0x52085a){return function(_0x220630){if(_0x220630){var _0x5b6fd6=typeof _0x52085a[_0xaac4('0x1d')]===_0xaac4('0x1e')&&typeof _0x52085a[_0xaac4('0x1f')]===_0xaac4('0x1e');var _0x3cbcb1=_0x220630[_0xaac4('0x20')];var _0x44f0e8=_0x5b6fd6?0x0:_0x52085a[_0xaac4('0x1d')];var _0x4166ee=_0x5b6fd6?_0x220630['count']:_0x52085a[_0xaac4('0x1d')]+_0x52085a['limit'];var _0x3303f1;if(_0x4166ee>=_0x3cbcb1){_0x4166ee=_0x3cbcb1;_0x3303f1=0xc8;}else{_0x3303f1=0xce;}_0x33bc73[_0xaac4('0x1b')](_0x3303f1);return _0x33bc73[_0xaac4('0x21')](_0xaac4('0x22'),_0x44f0e8+'-'+_0x4166ee+'/'+_0x3cbcb1)[_0xaac4('0x23')](_0x220630);}return null;};}function patchUpdates(_0x383a8c){return function(_0x590905){try{jsonpatch[_0xaac4('0x24')](_0x590905,_0x383a8c,!![]);}catch(_0x27a84d){return BPromise[_0xaac4('0x25')](_0x27a84d);}return _0x590905[_0xaac4('0x26')]();};}function saveUpdates(_0x3dd059,_0x2dcc59){return function(_0xb2577b){if(_0xb2577b){return _0xb2577b['update'](_0x3dd059)[_0xaac4('0x27')](function(_0x4f1b65){return _0x4f1b65;});}return null;};}function removeEntity(_0x54203b,_0x4fac85){return function(_0x5a0bb3){if(_0x5a0bb3){return _0x5a0bb3[_0xaac4('0x28')]()[_0xaac4('0x27')](function(){_0x54203b[_0xaac4('0x1b')](0xcc)[_0xaac4('0x1c')]();});}};}function handleEntityNotFound(_0x3c1445,_0x249a5d){return function(_0x43b122){if(!_0x43b122){_0x3c1445[_0xaac4('0x1a')](0x194);}return _0x43b122;};}function handleError(_0x2f36ad,_0x386c9b){_0x386c9b=_0x386c9b||0x1f4;return function(_0x4d0f5f){logger[_0xaac4('0x29')](_0x4d0f5f[_0xaac4('0x2a')]);if(_0x4d0f5f[_0xaac4('0x2b')]){delete _0x4d0f5f[_0xaac4('0x2b')];}_0x2f36ad[_0xaac4('0x1b')](_0x386c9b)[_0xaac4('0x2c')](_0x4d0f5f);};}function getInteractionUsers(_0x5e469a,_0xcf6c1){return new BPromise(function(_0x5d2c9a,_0x2df7e3){try{if(_0xcf6c1[_0x5e469a['id']]){_0x5e469a[_0xaac4('0x2d')]=_[_0xaac4('0x2e')](_0xcf6c1[_0x5e469a['id']],function(_0x2aaa68){return{'id':_0x2aaa68['id'],'fullname':_0x2aaa68['fullname']};});}}catch(_0x5000e1){_0x2df7e3(_0x5000e1);}_0x5d2c9a(_0x5e469a);});}function getInteractionTags(_0x58f748,_0x20abcc){return new BPromise(function(_0xee6aa9,_0x2df196){try{if(_0x58f748[_0xaac4('0x2f')]){_0x58f748[_0xaac4('0x30')]=[];_0x58f748[_0xaac4('0x2f')][_0xaac4('0x31')](',')[_0xaac4('0x32')](function(_0x2481a9){_0x58f748[_0xaac4('0x30')][_0xaac4('0x33')](_0x20abcc[_0x2481a9]);});}delete _0x58f748[_0xaac4('0x2f')];}catch(_0x10e67b){_0x2df196(_0x10e67b);}_0xee6aa9(_0x58f748);});}function updateSmsInteraction(_0x3b93e5,_0x1f7646,_0x5b38a4){return new BPromise(function(_0x5bad9f,_0xd89df1){return getInteractionUsers(_0x3b93e5,_0x5b38a4)[_0xaac4('0x27')](function(_0xa07d0){return getInteractionTags(_0xa07d0,_0x1f7646);})['then'](function(_0x191d0f){_0x5bad9f(_0x191d0f);})[_0xaac4('0x34')](function(_0x2cbf8d){_0xd89df1(_0x2cbf8d);});});}exports[_0xaac4('0x35')]=function(_0x1ec59d,_0x1e1853){var _0x418939={},_0x53b7cb={},_0x36591a={'count':0x0,'rows':[]};var _0x31ec51=_[_0xaac4('0x2e')](db['SmsInteraction'][_0xaac4('0x36')],function(_0x497e7b){return{'name':_0x497e7b['fieldName'],'type':_0x497e7b[_0xaac4('0x37')][_0xaac4('0x38')]};});_0x53b7cb[_0xaac4('0x39')]=_['map'](_0x31ec51,'name');_0x53b7cb[_0xaac4('0x3a')]=_[_0xaac4('0x3b')](_0x1ec59d[_0xaac4('0x3a')]);_0x53b7cb[_0xaac4('0x3c')]=_[_0xaac4('0x3d')](_0x53b7cb[_0xaac4('0x39')],_0x53b7cb['query']);_0x418939['attributes']=_[_0xaac4('0x3d')](_0x53b7cb[_0xaac4('0x39')],qs['fields'](_0x1ec59d[_0xaac4('0x3a')][_0xaac4('0x3e')]));_0x418939[_0xaac4('0x3f')]=_0x418939['attributes'][_0xaac4('0x40')]?_0x418939[_0xaac4('0x3f')]:_0x53b7cb[_0xaac4('0x39')];if(!_0x1ec59d['query'][_0xaac4('0x41')](_0xaac4('0x42'))){_0x418939[_0xaac4('0x1f')]=qs[_0xaac4('0x1f')](_0x1ec59d['query'][_0xaac4('0x1f')]);_0x418939['offset']=qs['offset'](_0x1ec59d[_0xaac4('0x3a')][_0xaac4('0x1d')]);}_0x418939[_0xaac4('0x43')]=qs[_0xaac4('0x44')](_0x1ec59d[_0xaac4('0x3a')][_0xaac4('0x44')]);_0x418939[_0xaac4('0x45')]=qs[_0xaac4('0x3c')](_['pick'](_0x1ec59d[_0xaac4('0x3a')],_0x53b7cb[_0xaac4('0x3c')]),_0x31ec51);var _0x1fea3d=[];var _0x2bba0c=squel['select']()[_0xaac4('0x46')]('id')[_0xaac4('0x46')](_0xaac4('0x2b'))['field'](_0xaac4('0x47'))[_0xaac4('0x48')](_0xaac4('0x49'));var _0x2b9030=squel['select']()[_0xaac4('0x46')](_0xaac4('0x4a'))[_0xaac4('0x46')]('u.fullname')[_0xaac4('0x46')](_0xaac4('0x4b'))[_0xaac4('0x48')](_0xaac4('0x4c'),'ui')[_0xaac4('0x4d')](_0xaac4('0x4e'),'u',_0xaac4('0x4f'));var _0xa8d1c9=squel[_0xaac4('0x50')]()['from'](_0xaac4('0x51'),'i')[_0xaac4('0x4d')](_0xaac4('0x52'),'c',_0xaac4('0x53'))[_0xaac4('0x4d')]('users','o','o.id\x20=\x20i.UserId')[_0xaac4('0x4d')](_0xaac4('0x54'),'a',_0xaac4('0x55'))[_0xaac4('0x4d')]('sms_messages','me',_0xaac4('0x56'))['left_join'](_0xaac4('0x57'),'it',_0xaac4('0x58'))['left_join'](_0xaac4('0x49'),'t',_0xaac4('0x59'));var _0x357bc6=squel['expr']();var _0x517dac=[];var _0x1624a6=squel[_0xaac4('0x5a')]();var _0x22dda7;if(_0x1ec59d[_0xaac4('0x3a')][_0xaac4('0x5b')]){_0x22dda7=as[_0xaac4('0x5c')](_0x1ec59d['query'][_0xaac4('0x5b')]);var _0x370315=_0x22dda7[_0xaac4('0x5d')];for(var _0x38f9af=0x0;_0x38f9af<_0x22dda7['conditions'][_0xaac4('0x40')];_0x38f9af++){var _0x571418=_0x22dda7[_0xaac4('0x5e')][_0x38f9af];var _0x3a703c='i';var _0x460252=_[_0xaac4('0x5f')](_0x31ec51,[_0xaac4('0x2b'),_0x571418[_0xaac4('0x46')]]);if(!_0x460252){switch(_0x571418[_0xaac4('0x46')]){case _0xaac4('0x60'):if(_0x571418[_0xaac4('0x61')]==0x1){_0xa8d1c9[_0xaac4('0x62')]('`'+_0x571418[_0xaac4('0x46')]+_0xaac4('0x63'));}else{_0xa8d1c9[_0xaac4('0x62')]('`'+_0x571418[_0xaac4('0x46')]+'`\x20>\x200');}break;case _0xaac4('0x64'):if(_0x571418[_0xaac4('0x65')]===_0xaac4('0x66')){if(_0x571418[_0xaac4('0x61')][_0xaac4('0x31')]('\x20')[_0xaac4('0x40')]>0x1){_0x357bc6[_0x370315](_0xaac4('0x67'),qs[_0xaac4('0x68')](_0x571418['value']),null);}else{var _0x3d7ccc='%'+_0x571418['value']+'%';_0x357bc6[_0x370315](_0xaac4('0x69'),_0x3d7ccc,_0x3d7ccc,_0x3d7ccc);}}else{_0x460252=_['find'](_0x31ec51,[_0xaac4('0x2b'),'ContactId']);_0x571418['field']=_0xaac4('0x6a');_0x3f547e=as[_0xaac4('0x6b')](_0x3a703c,_0x460252['type'],_0x571418);_0x357bc6[_0x370315](_0x3f547e[_0xaac4('0x6c')],_0x3f547e[_0xaac4('0x61')][_0xaac4('0x6d')],_0x3f547e[_0xaac4('0x61')][_0xaac4('0x1c')]);}break;case _0xaac4('0x6e'):var _0x5d38bc=_0x571418[_0xaac4('0x61')]['split'](',')[_0xaac4('0x2e')](function(_0x5ec220){return Number(_0x5ec220);});_0x5d38bc['forEach'](function(_0x5e302c){_0x1624a6['or'](_0xaac4('0x6f'),'%,'+_0x5e302c+',%');});_0x517dac=_[_0xaac4('0x70')](_0x517dac,_0x5d38bc);break;case _0xaac4('0x71'):if(_0x571418[_0xaac4('0x65')]==='$substring'){_0x357bc6[_0x370315](_0xaac4('0x72'),'%'+_0x571418[_0xaac4('0x61')]+'%',null);}else{_0x460252=_[_0xaac4('0x5f')](_0x31ec51,['name',_0xaac4('0x73')]);_0x571418[_0xaac4('0x46')]=_0xaac4('0x73');_0x3f547e=as[_0xaac4('0x6b')](_0x3a703c,_0x460252[_0xaac4('0x37')],_0x571418);_0x357bc6[_0x370315](_0x3f547e[_0xaac4('0x6c')],_0x3f547e[_0xaac4('0x61')]['start'],_0x3f547e['value'][_0xaac4('0x1c')]);}break;case'body':_0x3f547e=as['buildExpression']('me',null,_0x571418);_0x357bc6[_0x370315](_0x3f547e[_0xaac4('0x6c')],_0x3f547e['value'][_0xaac4('0x6d')],_0x3f547e['value'][_0xaac4('0x1c')]);break;}}else{var _0x3f547e=as['buildExpression'](_0x3a703c,_0x460252['type'],_0x571418);_0x357bc6[_0x370315](_0x3f547e['text'],_0x3f547e['value'][_0xaac4('0x6d')],_0x3f547e[_0xaac4('0x61')][_0xaac4('0x1c')]);}}}else{var _0x399c74=_(_0x1ec59d['query'])[_0xaac4('0x3b')]()[_0xaac4('0x2e')](function(_0x3b0470){return _[_0xaac4('0x74')](_0x31ec51,[_0xaac4('0x2b'),_0x3b0470])?_0x3b0470:undefined;})[_0xaac4('0x75')]()[_0xaac4('0x61')]();if(!_[_0xaac4('0x76')](_0x399c74)){_0x399c74[_0xaac4('0x32')](function(_0x40271c){if(_0x40271c===_0xaac4('0x77')){_0xa8d1c9['where']('i.SmsAccountId\x20IN\x20?',[][_0xaac4('0x78')](_0x1ec59d['query'][_0x40271c]));}else if(_0x40271c==='createdAt'){var _0x3141af=JSON['parse'](_0x1ec59d[_0xaac4('0x3a')][_0x40271c])[_0xaac4('0x79')];var _0x26bae8=JSON[_0xaac4('0x7a')](_0x1ec59d['query'][_0x40271c])[_0xaac4('0x7b')];_0xa8d1c9[_0xaac4('0x45')](_0xaac4('0x7c'),_0x3141af,_0x26bae8);}else{if(_0x1ec59d[_0xaac4('0x3a')][_0x40271c]===_0xaac4('0x7d')){_0xa8d1c9[_0xaac4('0x45')]('i.'+_0x40271c+'\x20IS\x20NULL');}else{_0xa8d1c9[_0xaac4('0x45')]('i.'+_0x40271c+_0xaac4('0x7e'),_0x1ec59d['query'][_0x40271c]);}}});}if(_0x1ec59d[_0xaac4('0x3a')][_0xaac4('0x7f')]){if(_0x1ec59d['query']['read']==0x1){_0xa8d1c9[_0xaac4('0x62')](_0xaac4('0x80'));}else{_0xa8d1c9[_0xaac4('0x62')](_0xaac4('0x81'));}}if(_0x1ec59d[_0xaac4('0x3a')][_0xaac4('0x82')]){_0x517dac=_[_0xaac4('0x83')](_0x1ec59d[_0xaac4('0x3a')]['tag'])?_0x1ec59d[_0xaac4('0x3a')][_0xaac4('0x82')]:new Array(_0x1ec59d[_0xaac4('0x3a')][_0xaac4('0x82')]);_0x517dac[_0xaac4('0x32')](function(_0x2fef84){_0x1624a6['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2fef84+',%');});}if(_0x1ec59d[_0xaac4('0x3a')][_0xaac4('0x84')]){var _0x53059b=_0x1ec59d['query']['filter'][_0xaac4('0x85')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs['isNumeric'](_0x53059b)){_0x357bc6['or']('i.id\x20LIKE\x20?',_0x53059b+'%')['or']('i.phone\x20LIKE\x20?',_0x53059b+'%');}else{_0x357bc6['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xaac4('0x68')](_0x53059b))['or'](_0xaac4('0x86'),_0x53059b+'%');}}}_0xa8d1c9[_0xaac4('0x45')](_0x357bc6);_0xa8d1c9[_0xaac4('0x87')]('i.id');var _0x28c01d={'type':db[_0xaac4('0x88')][_0xaac4('0x89')][_0xaac4('0x8a')],'raw':!![]};var _0x28cb6f=_0xa8d1c9[_0xaac4('0x8b')]();_0x28cb6f[_0xaac4('0x46')]('i.id');_0x28cb6f[_0xaac4('0x46')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');if(_0x418939[_0xaac4('0x43')]){_0x418939[_0xaac4('0x43')][_0xaac4('0x32')](function(_0x1d02fd){var _0x201d81=_0x1d02fd[0x0]===_0xaac4('0x8c')?_0x1d02fd[0x0]:'i.'+_0x1d02fd[0x0];_0xa8d1c9[_0xaac4('0x43')](_0x201d81,_0x1d02fd[0x1]===_0xaac4('0x8d')?![]:!![]);});}if(!_[_0xaac4('0x76')](_0x517dac)){_0xa8d1c9[_0xaac4('0x62')](_0x1624a6);_0x28cb6f[_0xaac4('0x45')](_0xaac4('0x8e'),_0x517dac);}BPromise[_0xaac4('0x8f')]()[_0xaac4('0x27')](function(){if(!_0x22dda7){if(_0x1ec59d[_0xaac4('0x3a')][_0xaac4('0x77')])return;_0x28cb6f[_0xaac4('0x45')](_0xaac4('0x90'));_0xa8d1c9[_0xaac4('0x45')](_0xaac4('0x90'));return;}if(_0x1ec59d[_0xaac4('0x91')][_0xaac4('0x92')]!==_0xaac4('0x93'))return;return _0x1ec59d[_0xaac4('0x91')][_0xaac4('0x94')]({'attributes':['id'],'raw':!![]})['then'](function(_0xb12069){if(_[_0xaac4('0x76')](_0xb12069)){_0x28cb6f[_0xaac4('0x45')](_0xaac4('0x95'));_0xa8d1c9[_0xaac4('0x45')]('i.SmsAccountId\x20IS\x20NULL');}else{_0x28cb6f[_0xaac4('0x45')](_0xaac4('0x96'),_[_0xaac4('0x2e')](_0xb12069,'id'));_0xa8d1c9[_0xaac4('0x45')](_0xaac4('0x96'),_['map'](_0xb12069,'id'));}});})[_0xaac4('0x27')](function(){if(_0x1ec59d['user'][_0xaac4('0x92')]===_0xaac4('0x93')&&!_0x22dda7&&!_0x1ec59d['query'][_0xaac4('0x77')])return[];return db['sequelize'][_0xaac4('0x3a')](_0x28cb6f[_0xaac4('0x97')](),_0x28c01d);})['then'](function(_0x3dea56){_0x36591a[_0xaac4('0x20')]=_0x3dea56['length'];if(_0x36591a[_0xaac4('0x20')]===0x0)return[];return db[_0xaac4('0x98')][_0xaac4('0x3a')](_0x2bba0c[_0xaac4('0x97')](),_0x28c01d)[_0xaac4('0x27')](function(_0x328567){_0x1fea3d=_[_0xaac4('0x99')](_0x328567,'id');_0x28c01d=_[_0xaac4('0x9a')](_0x28c01d,{'model':db[_0xaac4('0x9b')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1ec59d['query'][_0xaac4('0x3e')]){_0x418939[_0xaac4('0x3f')][_0xaac4('0x32')](function(_0x5d475c){_0xa8d1c9[_0xaac4('0x46')]('i.'+_0x5d475c);});}else{_0xa8d1c9[_0xaac4('0x46')](_0xaac4('0x9c'),_0xaac4('0x60'));_0xa8d1c9[_0xaac4('0x46')](_0xaac4('0x9d'),_0xaac4('0x9e'));_0xa8d1c9[_0xaac4('0x46')](_0xaac4('0x9f'),_0xaac4('0xa0'));_0xa8d1c9[_0xaac4('0x46')](_0xaac4('0xa1'),_0xaac4('0x8c'));_0xa8d1c9[_0xaac4('0x46')](_0xaac4('0xa2'));_0xa8d1c9[_0xaac4('0x46')]('c.firstName',_0xaac4('0xa3'));_0xa8d1c9[_0xaac4('0x46')](_0xaac4('0xa4'),'Contact.lastName');_0xa8d1c9[_0xaac4('0x46')](_0xaac4('0xa5'),'Contact.email');_0xa8d1c9[_0xaac4('0x46')]('c.phone',_0xaac4('0xa6'));_0xa8d1c9[_0xaac4('0x46')](_0xaac4('0xa7'),_0xaac4('0xa8'));_0xa8d1c9[_0xaac4('0x46')](_0xaac4('0xa9'),'Contact.fax');_0xa8d1c9[_0xaac4('0x46')](_0xaac4('0xaa'),_0xaac4('0xab'));_0xa8d1c9[_0xaac4('0x46')]('o.internal',_0xaac4('0xac'));_0xa8d1c9[_0xaac4('0x46')](_0xaac4('0xad'),'TagIds');}if(_0x418939[_0xaac4('0x1f')])_0xa8d1c9[_0xaac4('0x1f')](_0x418939[_0xaac4('0x1f')]);if(_0x418939[_0xaac4('0x1d')])_0xa8d1c9[_0xaac4('0x1d')](_0x418939['offset']);return db['sequelize'][_0xaac4('0x3a')](_0xa8d1c9[_0xaac4('0x97')](),_0x28c01d);})[_0xaac4('0x27')](function(_0xcb43db){if(_0xcb43db['length']>0x0)_0x2b9030[_0xaac4('0x45')](_0xaac4('0xae'),_[_0xaac4('0x2e')](_0xcb43db,'id'));return db[_0xaac4('0x98')][_0xaac4('0x3a')](_0x2b9030[_0xaac4('0x97')](),_0x28c01d)[_0xaac4('0x27')](function(_0x3f97ba){var _0x145ac1=_[_0xaac4('0xaf')](_0x3f97ba,_0xaac4('0xb0'));var _0x1e4e84=[];_0xcb43db[_0xaac4('0x32')](function(_0x4dde7f){_0x1e4e84[_0xaac4('0x33')](updateSmsInteraction(_0x4dde7f,_0x1fea3d,_0x145ac1));});return BPromise[_0xaac4('0xb1')](_0x1e4e84);});});})[_0xaac4('0x27')](function(_0x43c575){_0x36591a[_0xaac4('0xb2')]=_0x43c575;return _0x36591a;})[_0xaac4('0x27')](respondWithFilteredResult(_0x1e1853,_0x418939))[_0xaac4('0x34')](handleError(_0x1e1853,null));};exports['show']=function(_0x3fe063,_0x3abb63){var _0x32ca0b={'raw':![],'where':{'id':_0x3fe063[_0xaac4('0xb3')]['id']}},_0x12df94={};_0x12df94[_0xaac4('0x39')]=_[_0xaac4('0x3b')](db[_0xaac4('0x9b')]['rawAttributes']);_0x12df94[_0xaac4('0x3a')]=_[_0xaac4('0x3b')](_0x3fe063[_0xaac4('0x3a')]);_0x12df94[_0xaac4('0x3c')]=_[_0xaac4('0x3d')](_0x12df94[_0xaac4('0x39')],_0x12df94[_0xaac4('0x3a')]);_0x32ca0b[_0xaac4('0x3f')]=_[_0xaac4('0x3d')](_0x12df94[_0xaac4('0x39')],qs['fields'](_0x3fe063['query'][_0xaac4('0x3e')]));_0x32ca0b[_0xaac4('0x3f')]=_0x32ca0b[_0xaac4('0x3f')][_0xaac4('0x40')]?_0x32ca0b[_0xaac4('0x3f')]:_0x12df94['model'];if(_0x3fe063[_0xaac4('0x3a')][_0xaac4('0xb4')]){_0x32ca0b[_0xaac4('0xb5')]=[{'all':!![]}];}_0x32ca0b=_[_0xaac4('0x9a')]({},_0x32ca0b,_0x3fe063[_0xaac4('0xb6')]);return db[_0xaac4('0x9b')][_0xaac4('0x5f')](_0x32ca0b)[_0xaac4('0x27')](handleEntityNotFound(_0x3abb63,null))[_0xaac4('0x27')](respondWithResult(_0x3abb63,null))[_0xaac4('0x34')](handleError(_0x3abb63,null));};exports[_0xaac4('0xb7')]=function(_0x26cdef,_0xe4a5ad){return db[_0xaac4('0x9b')][_0xaac4('0xb7')](_0x26cdef[_0xaac4('0xb8')],{})[_0xaac4('0x27')](respondWithResult(_0xe4a5ad,0xc9))[_0xaac4('0x34')](handleError(_0xe4a5ad,null));};exports[_0xaac4('0xb9')]=function(_0x2c7e3e,_0x15b1ad){if(_0x2c7e3e[_0xaac4('0xb8')]['id']){delete _0x2c7e3e[_0xaac4('0xb8')]['id'];}return db[_0xaac4('0x9b')][_0xaac4('0x5f')]({'where':{'id':_0x2c7e3e[_0xaac4('0xb3')]['id']}})[_0xaac4('0x27')](handleEntityNotFound(_0x15b1ad,null))[_0xaac4('0x27')](saveUpdates(_0x2c7e3e[_0xaac4('0xb8')],null))[_0xaac4('0x27')](respondWithResult(_0x15b1ad,null))[_0xaac4('0x34')](handleError(_0x15b1ad,null));};exports[_0xaac4('0x28')]=function(_0x337061,_0x20f1c4){return db['SmsInteraction'][_0xaac4('0x5f')]({'where':{'id':_0x337061[_0xaac4('0xb3')]['id']}})[_0xaac4('0x27')](handleEntityNotFound(_0x20f1c4,null))[_0xaac4('0x27')](removeEntity(_0x20f1c4,null))[_0xaac4('0x34')](handleError(_0x20f1c4,null));};exports[_0xaac4('0xba')]=function(_0x8d0eeb,_0x3b0af8){return db['SmsInteraction'][_0xaac4('0xba')]()[_0xaac4('0x27')](respondWithResult(_0x3b0af8,null))['catch'](handleError(_0x3b0af8,null));};exports[_0xaac4('0xbb')]=function(_0x13f59b,_0x18628c,_0x2af5ff){return db['SmsMessage'][_0xaac4('0x5f')]({'where':{'id':_0x13f59b[_0xaac4('0xb3')]['id']}})[_0xaac4('0x27')](handleEntityNotFound(_0x18628c,null))[_0xaac4('0x27')](function(_0x4673f1){if(_0x4673f1){return _0x4673f1[_0xaac4('0xbb')](_0x13f59b[_0xaac4('0xb8')][_0xaac4('0xbc')],_[_0xaac4('0xbd')](_0x13f59b['body'],[_0xaac4('0xbc'),'id'])||{});}})[_0xaac4('0x27')](respondWithResult(_0x18628c,null))[_0xaac4('0x34')](handleError(_0x18628c,null));};exports[_0xaac4('0xbe')]=function(_0x30f57d,_0x1b72e9,_0x2b4e84){var _0x438206={'raw':![],'where':{}};var _0x299b63={};var _0x4c4fd7={'count':0x0,'rows':[]};return db[_0xaac4('0x9b')][_0xaac4('0xbf')]({'where':{'id':_0x30f57d['params']['id']}})['then'](handleEntityNotFound(_0x1b72e9,null))[_0xaac4('0x27')](function(_0x3d9982){if(_0x3d9982){_0x299b63[_0xaac4('0x39')]=_[_0xaac4('0x3b')](db[_0xaac4('0xc0')][_0xaac4('0x36')]);_0x299b63['query']=_[_0xaac4('0x3b')](_0x30f57d[_0xaac4('0x3a')]);_0x299b63['filters']=_[_0xaac4('0x3d')](_0x299b63[_0xaac4('0x39')],_0x299b63[_0xaac4('0x3a')]);_0x438206['attributes']=_[_0xaac4('0x3d')](_0x299b63[_0xaac4('0x39')],qs[_0xaac4('0x3e')](_0x30f57d[_0xaac4('0x3a')]['fields']));_0x438206['attributes']=_0x438206[_0xaac4('0x3f')][_0xaac4('0x40')]?_0x438206[_0xaac4('0x3f')]:_0x299b63[_0xaac4('0x39')];if(!_0x30f57d[_0xaac4('0x3a')][_0xaac4('0x41')](_0xaac4('0x42'))){_0x438206[_0xaac4('0x1f')]=qs[_0xaac4('0x1f')](_0x30f57d['query'][_0xaac4('0x1f')]);_0x438206[_0xaac4('0x1d')]=qs[_0xaac4('0x1d')](_0x30f57d[_0xaac4('0x3a')][_0xaac4('0x1d')]);}_0x438206[_0xaac4('0x43')]=qs[_0xaac4('0x44')](_0x30f57d['query'][_0xaac4('0x44')]);_0x438206[_0xaac4('0x45')]=qs['filters'](_['pick'](_0x30f57d['query'],_0x299b63[_0xaac4('0x3c')]));_0x438206[_0xaac4('0x45')][_0xaac4('0xb0')]=_0x3d9982['id'];if(_0x30f57d[_0xaac4('0x3a')][_0xaac4('0x84')]){_0x438206[_0xaac4('0x45')]=_[_0xaac4('0x9a')](_0x438206[_0xaac4('0x45')],{'$or':_[_0xaac4('0x2e')](_0x438206[_0xaac4('0x3f')],function(_0x128f8e){var _0x44ae3c={};_0x44ae3c[_0x128f8e]={'$like':'%'+_0x30f57d[_0xaac4('0x3a')][_0xaac4('0x84')]+'%'};return _0x44ae3c;})});}if(_0x30f57d['query'][_0xaac4('0x79')]){var _0x533fd7=_0x30f57d[_0xaac4('0x3a')][_0xaac4('0x79')][_0xaac4('0x31')](',');var _0x593598={};_0x593598[_0x533fd7[0x0]]={'$gte':moment(_0x533fd7[0x1])[_0xaac4('0xc1')](_0xaac4('0xc2'))};_0x438206[_0xaac4('0x45')]=_[_0xaac4('0x9a')](_0x438206['where'],_0x593598);}_0x438206=_[_0xaac4('0x9a')]({},_0x438206,_0x30f57d[_0xaac4('0xb6')]);return db[_0xaac4('0xc0')][_0xaac4('0x20')]({'where':_0x438206[_0xaac4('0x45')]})[_0xaac4('0x27')](function(_0x4cbbb8){_0x4c4fd7[_0xaac4('0x20')]=_0x4cbbb8;if(_0x30f57d[_0xaac4('0x3a')]['includeAll']){_0x438206[_0xaac4('0xb5')]=[{'all':!![]}];}return db[_0xaac4('0xc0')]['findAll'](_0x438206);})['then'](function(_0x55c223){_0x4c4fd7[_0xaac4('0xb2')]=_0x55c223;return _0x4c4fd7;});}})[_0xaac4('0x27')](respondWithFilteredResult(_0x1b72e9,_0x438206))[_0xaac4('0x34')](handleError(_0x1b72e9,null));};exports['addTags']=function(_0x25f93b,_0x5da3a2,_0x30b2a1){return db[_0xaac4('0x9b')][_0xaac4('0x5f')]({'where':{'id':_0x25f93b[_0xaac4('0xb3')]['id']}})[_0xaac4('0x27')](handleEntityNotFound(_0x5da3a2,null))['then'](function(_0x30aa12){if(_0x30aa12){return _0x30aa12['setTags'](_0x25f93b[_0xaac4('0xb8')][_0xaac4('0xbc')],_[_0xaac4('0xbd')](_0x25f93b[_0xaac4('0xb8')],[_0xaac4('0xbc'),'id'])||{})[_0xaac4('0xc3')](function(){return db[_0xaac4('0x6e')]['findAll']({'attributes':['id',_0xaac4('0x2b'),_0xaac4('0x47')],'where':{'id':_0x25f93b[_0xaac4('0xb8')]['ids']}});})['then'](function(_0x2f8ac4){socket[_0xaac4('0xc4')](_0xaac4('0xc5'),{'id':Number(_0x25f93b['params']['id']),'tags':_0x2f8ac4||[]});return{'id':Number(_0x25f93b['params']['id']),'tags':_0x2f8ac4||[]};});}})['then'](respondWithResult(_0x5da3a2,null))[_0xaac4('0x34')](handleError(_0x5da3a2,null));};exports[_0xaac4('0xc6')]=function(_0x4b2d98,_0x48fab2,_0x40697e){return db[_0xaac4('0x9b')]['find']({'where':{'id':_0x4b2d98['params']['id']}})[_0xaac4('0x27')](handleEntityNotFound(_0x48fab2,null))[_0xaac4('0x27')](function(_0x5969d1){if(_0x5969d1){return _0x5969d1[_0xaac4('0xc6')](_0x4b2d98[_0xaac4('0x3a')]['ids']);}})[_0xaac4('0x27')](respondWithStatusCode(_0x48fab2,null))[_0xaac4('0x34')](handleError(_0x48fab2,null));};exports[_0xaac4('0xc7')]=function(_0x17ff33,_0x11de67){var _0x11906a=moment()['unix']()['toString']();var _0x4f3de9=path[_0xaac4('0xc8')](config['root'],_0xaac4('0xc9'),'files',_0xaac4('0xca'));var _0x5b8c3b=path[_0xaac4('0xc8')](config[_0xaac4('0xcb')],'server',_0xaac4('0xcc'),'attachments');var _0x27d958=path['join'](_0x4f3de9,_0x11906a);var _0xe692a0=util[_0xaac4('0xc1')]('transcript-%d-%s.zip',_0x17ff33[_0xaac4('0xb3')]['id'],_0x11906a);var _0x1c7ab0=path[_0xaac4('0xc8')](_0x4f3de9,_0xe692a0);var _0x238a16=[];_0x238a16['push']({'model':db['User'],'as':'User','attributes':['id','fullname'],'raw':!![]});_0x238a16[_0xaac4('0x33')]({'model':db[_0xaac4('0xcd')],'as':_0xaac4('0x64'),'attributes':['id',_0xaac4('0xce'),_0xaac4('0xcf')],'raw':!![]});var _0x2e8daf=[{'model':db[_0xaac4('0xc0')],'as':'Messages','attributes':['id',_0xaac4('0xb8'),'createdAt',_0xaac4('0xd0'),_0xaac4('0xd1'),_0xaac4('0x7f')],'include':_0x238a16}];_0x2e8daf[_0xaac4('0x33')]({'model':db[_0xaac4('0xd2')],'as':_0xaac4('0xd3'),'attributes':['id',_0xaac4('0x2b')]});_0x2e8daf[_0xaac4('0x33')]({'model':db[_0xaac4('0x71')],'as':_0xaac4('0xd4'),'attributes':['id','fullname']});return db[_0xaac4('0x9b')][_0xaac4('0x5f')]({'where':{'id':_0x17ff33[_0xaac4('0xb3')]['id']},'include':_0x2e8daf})[_0xaac4('0x27')](handleEntityNotFound(_0x11de67,null))[_0xaac4('0x27')](function(_0x29ffe0){if(_0x29ffe0){var _0x18c51=_0x29ffe0['get']({'plain':!![]});fs[_0xaac4('0xd5')](_0x27d958);var _0x45b118={'channel':_0xaac4('0xd6'),'account':_0x18c51[_0xaac4('0xd3')][_0xaac4('0x2b')],'agent':_0x18c51[_0xaac4('0xd4')]?_0x18c51[_0xaac4('0xd4')]['fullname']:_0xaac4('0xd7'),'createdAt':moment(_0x18c51[_0xaac4('0xd8')])[_0xaac4('0xc1')](_0xaac4('0xc2'))[_0xaac4('0x97')](),'closedAt':_0x18c51['closed']?moment(_0x18c51['closedAt'])[_0xaac4('0xc1')](_0xaac4('0xc2'))[_0xaac4('0x97')]():'','disposition':_0x18c51[_0xaac4('0xd9')],'messages':_(_0x18c51[_0xaac4('0xda')])[_0xaac4('0x84')]({'secret':![]})[_0xaac4('0x2e')](function(_0x38fa21){return{'date':moment(_0x38fa21[_0xaac4('0xd8')])[_0xaac4('0xc1')](_0xaac4('0xc2'))['toString'](),'sender':_0x38fa21[_0xaac4('0xd0')]==='out'?_0x38fa21['User']?_0x38fa21[_0xaac4('0x71')]['fullname']:_0xaac4('0xdb'):_0x38fa21[_0xaac4('0x64')]['firstName']+(_0x38fa21['Contact'][_0xaac4('0xcf')]?'\x20'+_0x38fa21[_0xaac4('0x64')][_0xaac4('0xcf')]:''),'body':_0x38fa21[_0xaac4('0xb8')],'direction':_0x38fa21[_0xaac4('0xd0')]===_0xaac4('0xdc')?'A':'C','secret':_0x38fa21[_0xaac4('0xd1')],'read':_0x38fa21['read']};})[_0xaac4('0x61')]()};return ejs[_0xaac4('0xdd')](path[_0xaac4('0xc8')](config[_0xaac4('0xcb')],_0xaac4('0xc9'),_0xaac4('0xde'),'downloadInteraction.ejs'),{'interaction':_0x45b118})[_0xaac4('0x27')](function(_0x250ab6){var _0x2aa69c=path[_0xaac4('0xc8')](_0x27d958,_0xaac4('0xdf')+_0x18c51['id']+'-'+_0x11906a+_0xaac4('0xe0'));var _0x5cdd55={'path':_0x2aa69c,'channel':_0xaac4('0xd6'),'interactionId':_0x18c51['id']};return pdf[_0xaac4('0xe1')](_0x250ab6,_0x5cdd55);})[_0xaac4('0x27')](function(){return new BPromise(function(_0x1d15fd,_0x4e136c){zipdir(_0x27d958,{'saveTo':_0x1c7ab0},function(_0x482fc7,_0x1291c1){if(_0x482fc7)return _0x4e136c(_0x482fc7);return _0x1d15fd(_0x1291c1);});})[_0xaac4('0x27')](function(){return new BPromise(function(_0x7e7b30,_0x26ed30){rimraf(_0x27d958,function(_0x436337){if(_0x436337)_0x26ed30(_0x436337);return _0x7e7b30();});});})[_0xaac4('0x27')](function(){return _0x11de67[_0xaac4('0xc7')](_0x1c7ab0,_0xe692a0,function(_0x3297c1){if(_0x3297c1){console[_0xaac4('0xe2')]('err',_0x3297c1);}else{fs['unlinkSync'](_0x1c7ab0);}});});});}else{return _0x11de67[_0xaac4('0x1a')](0xc8);}})[_0xaac4('0x34')](handleError(_0x11de67,null));};
\ No newline at end of file
index 06632c7..1394542 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d04=['SmsInteraction','SmsMessage','setMaxListeners','save','update','Users','map','findAll','then','unreadMessages','emit','catch','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x3d04,0xbe));var _0x43d0=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x3d04[_0x501510];return _0x1e6ee5;};'use strict';var EventEmitter=require(_0x43d0('0x0'));var SmsInteraction=require(_0x43d0('0x1'))['db'][_0x43d0('0x2')];var SmsMessage=require(_0x43d0('0x1'))['db'][_0x43d0('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x43d0('0x4')](0x0);var events={'afterCreate':_0x43d0('0x5'),'afterUpdate':_0x43d0('0x6'),'afterDestroy':'remove'};function emitEvent(_0x2a4d4c){return function(_0x1a75d4,_0x746f5e,_0x617bf){_0x1a75d4['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x50919e){_0x1a75d4['setDataValue'](_0x43d0('0x7'),_0x50919e[_0x43d0('0x8')](function(_0x331421){return{'id':_0x331421['id']};}));return SmsMessage[_0x43d0('0x9')]({'where':{'SmsInteractionId':_0x1a75d4['id'],'direction':'in','read':![]},'raw':!![]});})[_0x43d0('0xa')](function(_0x4d75d9){_0x1a75d4['setDataValue'](_0x43d0('0xb'),_0x4d75d9['length']);SmsInteractionEvents['emit'](_0x2a4d4c+':'+_0x1a75d4['id'],_0x1a75d4);SmsInteractionEvents[_0x43d0('0xc')](_0x2a4d4c,_0x1a75d4);_0x617bf(null);})[_0x43d0('0xd')](_0x617bf(null));};}for(var e in events){if(events[_0x43d0('0xe')](e)){var event=events[e];SmsInteraction[_0x43d0('0xf')](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
+var _0xe5af=['findAll','unreadMessages','emit','catch','hasOwnProperty','hook','../../mysqldb','SmsInteraction','SmsMessage','setMaxListeners','save','remove','setDataValue','Users','map'];(function(_0x3e5a5f,_0x42e767){var _0x3352f7=function(_0x4e6268){while(--_0x4e6268){_0x3e5a5f['push'](_0x3e5a5f['shift']());}};_0x3352f7(++_0x42e767);}(_0xe5af,0x9c));var _0xfe5a=function(_0x19c3f4,_0x3b6a12){_0x19c3f4=_0x19c3f4-0x0;var _0x513c9b=_0xe5af[_0x19c3f4];return _0x513c9b;};'use strict';var EventEmitter=require('events');var SmsInteraction=require(_0xfe5a('0x0'))['db'][_0xfe5a('0x1')];var SmsMessage=require('../../mysqldb')['db'][_0xfe5a('0x2')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0xfe5a('0x3')](0x0);var events={'afterCreate':_0xfe5a('0x4'),'afterUpdate':'update','afterDestroy':_0xfe5a('0x5')};function emitEvent(_0x48e3a7){return function(_0x526677,_0x37455d,_0x2039cd){_0x526677['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x356c69){_0x526677[_0xfe5a('0x6')](_0xfe5a('0x7'),_0x356c69[_0xfe5a('0x8')](function(_0x5cd100){return{'id':_0x5cd100['id']};}));return SmsMessage[_0xfe5a('0x9')]({'where':{'SmsInteractionId':_0x526677['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x51718e){_0x526677[_0xfe5a('0x6')](_0xfe5a('0xa'),_0x51718e['length']);SmsInteractionEvents[_0xfe5a('0xb')](_0x48e3a7+':'+_0x526677['id'],_0x526677);SmsInteractionEvents[_0xfe5a('0xb')](_0x48e3a7,_0x526677);_0x2039cd(null);})[_0xfe5a('0xc')](_0x2039cd(null));};}for(var e in events){if(events[_0xfe5a('0xd')](e)){var event=events[e];SmsInteraction[_0xfe5a('0xe')](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
index 860f171..cb6aa55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c5e=['./smsInteraction.attributes','exports','define','SmsInteraction','changed','closed','format','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x3034e6,_0x4bfc06){var _0x53492d=function(_0x94b440){while(--_0x94b440){_0x3034e6['push'](_0x3034e6['shift']());}};_0x53492d(++_0x4bfc06);}(_0x3c5e,0xc8));var _0xe3c5=function(_0x180730,_0x422871){_0x180730=_0x180730-0x0;var _0x2d8375=_0x3c5e[_0x180730];return _0x2d8375;};'use strict';var _=require(_0xe3c5('0x0'));var util=require('util');var logger=require(_0xe3c5('0x1'))(_0xe3c5('0x2'));var moment=require(_0xe3c5('0x3'));var BPromise=require('bluebird');var rp=require(_0xe3c5('0x4'));var fs=require('fs');var path=require(_0xe3c5('0x5'));var rimraf=require(_0xe3c5('0x6'));var config=require(_0xe3c5('0x7'));var attributes=require(_0xe3c5('0x8'));module[_0xe3c5('0x9')]=function(_0x2b1183,_0x1e7b93){return _0x2b1183[_0xe3c5('0xa')](_0xe3c5('0xb'),attributes,{'tableName':'sms_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x269f83,_0x3b6883,_0x2b2178){if(_0x269f83[_0xe3c5('0xc')](_0xe3c5('0xd'))){_0x269f83['closedAt']=moment()[_0xe3c5('0xe')](_0xe3c5('0xf'));}_0x2b2178(null,_0x269f83);}}});};
\ No newline at end of file
+var _0xf4d9=['moment','bluebird','path','./smsInteraction.attributes','define','SmsInteraction','sms_interactions','changed','closed','closedAt','lodash','util','../../config/logger','api'];(function(_0x43b7dc,_0x3e479b){var _0x20a38c=function(_0x2a76bd){while(--_0x2a76bd){_0x43b7dc['push'](_0x43b7dc['shift']());}};_0x20a38c(++_0x3e479b);}(_0xf4d9,0xea));var _0x9f4d=function(_0xc6bb3b,_0x2fcf06){_0xc6bb3b=_0xc6bb3b-0x0;var _0x1ce729=_0xf4d9[_0xc6bb3b];return _0x1ce729;};'use strict';var _=require(_0x9f4d('0x0'));var util=require(_0x9f4d('0x1'));var logger=require(_0x9f4d('0x2'))(_0x9f4d('0x3'));var moment=require(_0x9f4d('0x4'));var BPromise=require(_0x9f4d('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9f4d('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x9f4d('0x7'));module['exports']=function(_0x5202e5,_0x1f310f){return _0x5202e5[_0x9f4d('0x8')](_0x9f4d('0x9'),attributes,{'tableName':_0x9f4d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x194240,_0x494de1,_0x14b5fe){if(_0x194240[_0x9f4d('0xb')](_0x9f4d('0xc'))){_0x194240[_0x9f4d('0xd')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x14b5fe(null,_0x194240);}}});};
\ No newline at end of file
index 82cf5c9..0643270 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e58=['catch','AddTagsToSmsInteraction','find','ids','omit','AddTags','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis','localhost','socket.io-emitter','./smsInteraction.socket','request','then','info','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','SmsInteraction,\x20%s,\x20%s','result','UpdateSmsInteraction','SmsInteraction','update','body','options','raw','where','attributes'];(function(_0x54945e,_0x42f71a){var _0x36eabd=function(_0x178ecf){while(--_0x178ecf){_0x54945e['push'](_0x54945e['shift']());}};_0x36eabd(++_0x42f71a);}(_0x2e58,0x1df));var _0x82e5=function(_0x200820,_0x216700){_0x200820=_0x200820-0x0;var _0x4bbc22=_0x2e58[_0x200820];return _0x4bbc22;};'use strict';var _=require(_0x82e5('0x0'));var util=require(_0x82e5('0x1'));var moment=require(_0x82e5('0x2'));var BPromise=require(_0x82e5('0x3'));var rs=require(_0x82e5('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x82e5('0x5'))['db'];var utils=require(_0x82e5('0x6'));var logger=require(_0x82e5('0x7'))(_0x82e5('0x8'));var config=require(_0x82e5('0x9'));var jayson=require(_0x82e5('0xa'));var client=jayson['client'][_0x82e5('0xb')]({'port':0x232a});config['redis']=_[_0x82e5('0xc')](config[_0x82e5('0xd')],{'host':_0x82e5('0xe'),'port':0x18eb});var socket=require(_0x82e5('0xf'))(new Redis(config['redis']));require(_0x82e5('0x10'))['register'](socket);function respondWithRpcPromise(_0x3820c8,_0x3c764e,_0x3d82e1){return new BPromise(function(_0x11b3ce,_0x3ced13){return client[_0x82e5('0x11')](_0x3820c8,_0x3d82e1)[_0x82e5('0x12')](function(_0x201721){logger[_0x82e5('0x13')]('SmsInteraction,\x20%s,\x20%s',_0x3c764e,_0x82e5('0x14'));logger[_0x82e5('0x15')](_0x82e5('0x16'),_0x3c764e,_0x82e5('0x14'),JSON[_0x82e5('0x17')](_0x201721));if(_0x201721['error']){if(_0x201721[_0x82e5('0x18')][_0x82e5('0x19')]===0x1f4){logger[_0x82e5('0x18')]('SmsInteraction,\x20%s,\x20%s',_0x3c764e,_0x201721[_0x82e5('0x18')]['message']);return _0x3ced13(_0x201721['error'][_0x82e5('0x1a')]);}logger[_0x82e5('0x18')]('SmsInteraction,\x20%s,\x20%s',_0x3c764e,_0x201721[_0x82e5('0x18')]['message']);return _0x11b3ce(_0x201721[_0x82e5('0x18')][_0x82e5('0x1a')]);}else{logger[_0x82e5('0x13')](_0x82e5('0x1b'),_0x3c764e,_0x82e5('0x14'));_0x11b3ce(_0x201721[_0x82e5('0x1c')][_0x82e5('0x1a')]);}})['catch'](function(_0x2863a2){logger[_0x82e5('0x18')](_0x82e5('0x1b'),_0x3c764e,_0x2863a2);_0x3ced13(_0x2863a2);});});}exports[_0x82e5('0x1d')]=function(_0xdc3087){var _0x348b08=this;return new Promise(function(_0x2dd1c0,_0x3c15a8){return db[_0x82e5('0x1e')][_0x82e5('0x1f')](_0xdc3087[_0x82e5('0x20')],{'raw':_0xdc3087[_0x82e5('0x21')]?_0xdc3087['options'][_0x82e5('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xdc3087[_0x82e5('0x21')]?_0xdc3087[_0x82e5('0x21')][_0x82e5('0x23')]||null:null,'attributes':_0xdc3087['options']?_0xdc3087['options'][_0x82e5('0x24')]||null:null,'limit':_0xdc3087[_0x82e5('0x21')]?_0xdc3087[_0x82e5('0x21')]['limit']||null:null})[_0x82e5('0x12')](function(_0x5c1189){logger[_0x82e5('0x13')](_0x82e5('0x1d'),_0xdc3087);logger[_0x82e5('0x15')](_0x82e5('0x1d'),_0xdc3087,JSON[_0x82e5('0x17')](_0x5c1189));_0x2dd1c0(_0x5c1189);})[_0x82e5('0x25')](function(_0x391c87){logger['error']('UpdateSmsInteraction',_0x391c87['message'],_0xdc3087);_0x3c15a8(_0x348b08[_0x82e5('0x18')](0x1f4,_0x391c87[_0x82e5('0x1a')]));});});};exports[_0x82e5('0x26')]=function(_0x5e2c12){return new Promise(function(_0xe1b28c,_0x1ef6ca){return db[_0x82e5('0x1e')][_0x82e5('0x27')]({'where':_0x5e2c12[_0x82e5('0x21')]?_0x5e2c12[_0x82e5('0x21')][_0x82e5('0x23')]||null:null})[_0x82e5('0x12')](function(_0x48d959){if(_0x48d959){return _0x48d959['addTags'](_0x5e2c12[_0x82e5('0x20')][_0x82e5('0x28')],_[_0x82e5('0x29')](_0x5e2c12[_0x82e5('0x20')],['ids','id'])||{});}})['spread'](function(_0x2ef488){logger[_0x82e5('0x13')](_0x82e5('0x2a'),_0x5e2c12);logger[_0x82e5('0x15')](_0x82e5('0x2a'),_0x5e2c12,JSON[_0x82e5('0x17')](_0x2ef488));_0xe1b28c(_0x2ef488);})[_0x82e5('0x25')](function(_0x136e34){logger[_0x82e5('0x18')](_0x82e5('0x2a'),_0x136e34['message'],_0x5e2c12);_0x1ef6ca(_this['error'](0x1f4,_0x136e34[_0x82e5('0x1a')]));});});};
\ No newline at end of file
+var _0x17ed=['stringify','code','error','message','catch','update','body','options','where','attributes','limit','then','UpdateSmsInteraction','AddTagsToSmsInteraction','SmsInteraction','find','addTags','omit','AddTags','lodash','util','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','request','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s'];(function(_0x46ca8e,_0xcdf234){var _0x29bb72=function(_0x55029b){while(--_0x55029b){_0x46ca8e['push'](_0x46ca8e['shift']());}};_0x29bb72(++_0xcdf234);}(_0x17ed,0xe0));var _0xd17e=function(_0x4a8cba,_0x139627){_0x4a8cba=_0x4a8cba-0x0;var _0x261036=_0x17ed[_0x4a8cba];return _0x261036;};'use strict';var _=require(_0xd17e('0x0'));var util=require(_0xd17e('0x1'));var moment=require(_0xd17e('0x2'));var BPromise=require(_0xd17e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd17e('0x4'));var db=require(_0xd17e('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xd17e('0x6'));var config=require(_0xd17e('0x7'));var jayson=require(_0xd17e('0x8'));var client=jayson[_0xd17e('0x9')]['http']({'port':0x232a});config[_0xd17e('0xa')]=_[_0xd17e('0xb')](config[_0xd17e('0xa')],{'host':_0xd17e('0xc'),'port':0x18eb});var socket=require(_0xd17e('0xd'))(new Redis(config[_0xd17e('0xa')]));require(_0xd17e('0xe'))[_0xd17e('0xf')](socket);function respondWithRpcPromise(_0x480461,_0x5aadc5,_0x4147fe){return new BPromise(function(_0x23d53e,_0x912663){return client[_0xd17e('0x10')](_0x480461,_0x4147fe)['then'](function(_0x37d20d){logger[_0xd17e('0x11')](_0xd17e('0x12'),_0x5aadc5,_0xd17e('0x13'));logger[_0xd17e('0x14')](_0xd17e('0x15'),_0x5aadc5,'request\x20sent',JSON[_0xd17e('0x16')](_0x37d20d));if(_0x37d20d['error']){if(_0x37d20d['error'][_0xd17e('0x17')]===0x1f4){logger[_0xd17e('0x18')]('SmsInteraction,\x20%s,\x20%s',_0x5aadc5,_0x37d20d[_0xd17e('0x18')][_0xd17e('0x19')]);return _0x912663(_0x37d20d[_0xd17e('0x18')]['message']);}logger[_0xd17e('0x18')](_0xd17e('0x12'),_0x5aadc5,_0x37d20d[_0xd17e('0x18')][_0xd17e('0x19')]);return _0x23d53e(_0x37d20d['error']['message']);}else{logger['info'](_0xd17e('0x12'),_0x5aadc5,'request\x20sent');_0x23d53e(_0x37d20d['result'][_0xd17e('0x19')]);}})[_0xd17e('0x1a')](function(_0x2d20b9){logger[_0xd17e('0x18')](_0xd17e('0x12'),_0x5aadc5,_0x2d20b9);_0x912663(_0x2d20b9);});});}exports['UpdateSmsInteraction']=function(_0x244954){var _0x2b34eb=this;return new Promise(function(_0x13b25f,_0x31ddaf){return db['SmsInteraction'][_0xd17e('0x1b')](_0x244954[_0xd17e('0x1c')],{'raw':_0x244954[_0xd17e('0x1d')]?_0x244954['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x244954[_0xd17e('0x1d')]?_0x244954['options'][_0xd17e('0x1e')]||null:null,'attributes':_0x244954[_0xd17e('0x1d')]?_0x244954[_0xd17e('0x1d')][_0xd17e('0x1f')]||null:null,'limit':_0x244954[_0xd17e('0x1d')]?_0x244954[_0xd17e('0x1d')][_0xd17e('0x20')]||null:null})[_0xd17e('0x21')](function(_0x52f9b1){logger[_0xd17e('0x11')](_0xd17e('0x22'),_0x244954);logger[_0xd17e('0x14')](_0xd17e('0x22'),_0x244954,JSON['stringify'](_0x52f9b1));_0x13b25f(_0x52f9b1);})[_0xd17e('0x1a')](function(_0x46e99d){logger['error'](_0xd17e('0x22'),_0x46e99d['message'],_0x244954);_0x31ddaf(_0x2b34eb[_0xd17e('0x18')](0x1f4,_0x46e99d['message']));});});};exports[_0xd17e('0x23')]=function(_0xf976f9){return new Promise(function(_0x123f4e,_0x544608){return db[_0xd17e('0x24')][_0xd17e('0x25')]({'where':_0xf976f9[_0xd17e('0x1d')]?_0xf976f9[_0xd17e('0x1d')]['where']||null:null})[_0xd17e('0x21')](function(_0x456b9c){if(_0x456b9c){return _0x456b9c[_0xd17e('0x26')](_0xf976f9['body']['ids'],_[_0xd17e('0x27')](_0xf976f9[_0xd17e('0x1c')],['ids','id'])||{});}})['spread'](function(_0x308e1b){logger[_0xd17e('0x11')](_0xd17e('0x28'),_0xf976f9);logger['debug'](_0xd17e('0x28'),_0xf976f9,JSON[_0xd17e('0x16')](_0x308e1b));_0x123f4e(_0x308e1b);})[_0xd17e('0x1a')](function(_0x3ab330){logger[_0xd17e('0x18')](_0xd17e('0x28'),_0x3ab330[_0xd17e('0x19')],_0xf976f9);_0x544608(_this[_0xd17e('0x18')](0x1f4,_0x3ab330[_0xd17e('0x19')]));});});};
\ No newline at end of file
index c9b05bc..d54d79b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccaa=['update','emit','register','smsInteraction:','./smsInteraction.events','save','remove'];(function(_0xcaf223,_0xd39f07){var _0x17e00d=function(_0xe2852e){while(--_0xe2852e){_0xcaf223['push'](_0xcaf223['shift']());}};_0x17e00d(++_0xd39f07);}(_0xccaa,0x177));var _0xacca=function(_0x286fee,_0x167eb0){_0x286fee=_0x286fee-0x0;var _0x1585fc=_0xccaa[_0x286fee];return _0x1585fc;};'use strict';var SmsInteractionEvents=require(_0xacca('0x0'));var events=[_0xacca('0x1'),_0xacca('0x2'),_0xacca('0x3')];function createListener(_0x43364d,_0x4275b5){return function(_0x3a9bbe){_0x4275b5[_0xacca('0x4')](_0x43364d,_0x3a9bbe);};}function removeListener(_0x4399bc,_0x3af659){return function(){SmsInteractionEvents['removeListener'](_0x4399bc,_0x3af659);};}exports[_0xacca('0x5')]=function(_0x21c7c4){for(var _0x4ce344=0x0,_0xd21ac2=events['length'];_0x4ce344<_0xd21ac2;_0x4ce344++){var _0x2a8fd0=events[_0x4ce344];var _0x376fe4=createListener(_0xacca('0x6')+_0x2a8fd0,_0x21c7c4);SmsInteractionEvents['on'](_0x2a8fd0,_0x376fe4);}};
\ No newline at end of file
+var _0x78b4=['register','smsInteraction:','./smsInteraction.events','save','remove','removeListener'];(function(_0x4bc65f,_0x39ec43){var _0x44f85f=function(_0x175343){while(--_0x175343){_0x4bc65f['push'](_0x4bc65f['shift']());}};_0x44f85f(++_0x39ec43);}(_0x78b4,0xda));var _0x478b=function(_0x4b9ed9,_0x4c7335){_0x4b9ed9=_0x4b9ed9-0x0;var _0x1649ff=_0x78b4[_0x4b9ed9];return _0x1649ff;};'use strict';var SmsInteractionEvents=require(_0x478b('0x0'));var events=[_0x478b('0x1'),_0x478b('0x2'),'update'];function createListener(_0x4ebf19,_0x551722){return function(_0x16712b){_0x551722['emit'](_0x4ebf19,_0x16712b);};}function removeListener(_0xb97bf1,_0x156a03){return function(){SmsInteractionEvents[_0x478b('0x3')](_0xb97bf1,_0x156a03);};}exports[_0x478b('0x4')]=function(_0xbdca4b){for(var _0x2653fa=0x0,_0x564de6=events['length'];_0x2653fa<_0x564de6;_0x2653fa++){var _0x441078=events[_0x2653fa];var _0x1045e4=createListener(_0x478b('0x5')+_0x441078,_0xbdca4b);SmsInteractionEvents['on'](_0x441078,_0x1045e4);}};
\ No newline at end of file
index 68b06c8..466539e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3b7=['accept','/:id/reject','reject','delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','tracked','sms','smsmessage:create','status','put','/:id/accept'];(function(_0x197a56,_0x2e5622){var _0x37238b=function(_0x5c2568){while(--_0x5c2568){_0x197a56['push'](_0x197a56['shift']());}};_0x37238b(++_0x2e5622);}(_0xe3b7,0x17e));var _0x7e3b=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0xe3b7[_0x618414];return _0x21c19a;};'use strict';var multer=require(_0x7e3b('0x0'));var util=require(_0x7e3b('0x1'));var path=require(_0x7e3b('0x2'));var timeout=require(_0x7e3b('0x3'));var express=require(_0x7e3b('0x4'));var router=express['Router']();var fs_extra=require(_0x7e3b('0x5'));var auth=require(_0x7e3b('0x6'));var interaction=require(_0x7e3b('0x7'));var config=require(_0x7e3b('0x8'));var controller=require(_0x7e3b('0x9'));router[_0x7e3b('0xa')]('/',auth[_0x7e3b('0xb')](),controller[_0x7e3b('0xc')]);router[_0x7e3b('0xa')](_0x7e3b('0xd'),auth[_0x7e3b('0xb')](),controller[_0x7e3b('0xe')]);router[_0x7e3b('0xa')](_0x7e3b('0xf'),auth['isAuthenticated'](),controller[_0x7e3b('0x10')]);router[_0x7e3b('0x11')]('/',auth[_0x7e3b('0xb')](),interaction[_0x7e3b('0x12')](_0x7e3b('0x13'),_0x7e3b('0x14')),controller['create']);router[_0x7e3b('0x11')]('/:id/status',controller[_0x7e3b('0x15')]);router[_0x7e3b('0x16')](_0x7e3b('0xf'),auth[_0x7e3b('0xb')](),controller['update']);router['put'](_0x7e3b('0x17'),auth['isAuthenticated'](),controller[_0x7e3b('0x18')]);router[_0x7e3b('0x16')](_0x7e3b('0x19'),auth[_0x7e3b('0xb')](),controller[_0x7e3b('0x1a')]);router[_0x7e3b('0x1b')](_0x7e3b('0xf'),auth[_0x7e3b('0xb')](),controller[_0x7e3b('0x1c')]);module['exports']=router;
\ No newline at end of file
+var _0x0046=['isAuthenticated','index','describe','tracked','smsmessage:create','create','post','/:id/status','status','put','/:id','update','accept','reject','delete','destroy','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsMessage.controller','get'];(function(_0x74f979,_0x3f5b22){var _0x546238=function(_0x21e4e0){while(--_0x21e4e0){_0x74f979['push'](_0x74f979['shift']());}};_0x546238(++_0x3f5b22);}(_0x0046,0x187));var _0x6004=function(_0x40cd11,_0x53da44){_0x40cd11=_0x40cd11-0x0;var _0x15b6eb=_0x0046[_0x40cd11];return _0x15b6eb;};'use strict';var multer=require(_0x6004('0x0'));var util=require('util');var path=require(_0x6004('0x1'));var timeout=require('connect-timeout');var express=require(_0x6004('0x2'));var router=express[_0x6004('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x6004('0x4'));var interaction=require(_0x6004('0x5'));var config=require(_0x6004('0x6'));var controller=require(_0x6004('0x7'));router[_0x6004('0x8')]('/',auth[_0x6004('0x9')](),controller[_0x6004('0xa')]);router['get']('/describe',auth[_0x6004('0x9')](),controller[_0x6004('0xb')]);router[_0x6004('0x8')]('/:id',auth[_0x6004('0x9')](),controller['show']);router['post']('/',auth[_0x6004('0x9')](),interaction[_0x6004('0xc')]('sms',_0x6004('0xd')),controller[_0x6004('0xe')]);router[_0x6004('0xf')](_0x6004('0x10'),controller[_0x6004('0x11')]);router[_0x6004('0x12')](_0x6004('0x13'),auth['isAuthenticated'](),controller[_0x6004('0x14')]);router[_0x6004('0x12')]('/:id/accept',auth['isAuthenticated'](),controller[_0x6004('0x15')]);router[_0x6004('0x12')]('/:id/reject',auth[_0x6004('0x9')](),controller[_0x6004('0x16')]);router[_0x6004('0x17')](_0x6004('0x13'),auth[_0x6004('0x9')](),controller[_0x6004('0x18')]);module['exports']=router;
\ No newline at end of file
index dea94ba..ed87424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x102b=['BOOLEAN','ENUM','out','STRING','DATE','TEXT','exports','medium'];(function(_0x1ddedd,_0x485606){var _0xa3e1ac=function(_0x580444){while(--_0x580444){_0x1ddedd['push'](_0x1ddedd['shift']());}};_0xa3e1ac(++_0x485606);}(_0x102b,0x1be));var _0xb102=function(_0xe61a54,_0x5f0abc){_0xe61a54=_0xe61a54-0x0;var _0x39b7ec=_0x102b[_0xe61a54];return _0x39b7ec;};'use strict';var Sequelize=require('sequelize');module[_0xb102('0x0')]={'body':{'type':Sequelize['TEXT'](_0xb102('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0xb102('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0xb102('0x3')]('in',_0xb102('0x4')),'defaultValue':_0xb102('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0xb102('0x5')](0xbe)},'phone':{'type':Sequelize[_0xb102('0x5')]},'readAt':{'type':Sequelize[_0xb102('0x6')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize[_0xb102('0x5')]},'providerResponse':{'type':Sequelize[_0xb102('0x7')]}};
\ No newline at end of file
+var _0x05dc=['out','STRING','sequelize','exports','TEXT','medium','BOOLEAN'];(function(_0x560166,_0x509bcd){var _0x3fad6d=function(_0x2c6343){while(--_0x2c6343){_0x560166['push'](_0x560166['shift']());}};_0x3fad6d(++_0x509bcd);}(_0x05dc,0xcd));var _0xc05d=function(_0x128188,_0x418a16){_0x128188=_0x128188-0x0;var _0x4bc209=_0x05dc[_0x128188];return _0x4bc209;};'use strict';var Sequelize=require(_0xc05d('0x0'));module[_0xc05d('0x1')]={'body':{'type':Sequelize[_0xc05d('0x2')](_0xc05d('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xc05d('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xc05d('0x5')),'defaultValue':_0xc05d('0x5'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0xc05d('0x6')]},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0xc05d('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 4992fbf..5c44a65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1d2=['UserId','user','agent','get','SmsInteractionId','isNil','format','interaction','info','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','stringify','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','User','fullname','internal','manual','SIP/%s','channel','motionChannel','reject','SmsInteraction','role','RejectMessage','sequelize','QueryTypes','SELECT','contact','interface','event','EventManager','rejectmessage','SmsAccountId','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','MessageUUID','messageId','indexOf','delivered','infobip','results','groupName','DELIVERED','SmsAccount,\x20%s,\x20%s,\x20%s','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./smsMessage.socket','register','jayson/promise','client','http','request','then','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','error','code','message','catch','sendStatus','json','undefined','count','offset','limit','status','set','apply','destroy','end','name','send','map','SmsMessage','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','includeAll','include','findAll','rows','params','rawAttributes','keys','options','create','body','update','find','describe','sms-interactions','accept','sms','read','readAt','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x26bfb0,_0x5b0ffc){var _0x4454b3=function(_0x2e7c5f){while(--_0x2e7c5f){_0x26bfb0['push'](_0x26bfb0['shift']());}};_0x4454b3(++_0x5b0ffc);}(_0xa1d2,0x151));var _0x2a1d=function(_0x28088a,_0x1afad8){_0x28088a=_0x28088a-0x0;var _0x5cafcc=_0xa1d2[_0x28088a];return _0x5cafcc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2a1d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2a1d('0x1'));var rp=require(_0x2a1d('0x2'));var moment=require(_0x2a1d('0x3'));var BPromise=require(_0x2a1d('0x4'));var Mustache=require(_0x2a1d('0x5'));var util=require(_0x2a1d('0x6'));var path=require(_0x2a1d('0x7'));var sox=require(_0x2a1d('0x8'));var csv=require(_0x2a1d('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2a1d('0xa'));var _=require(_0x2a1d('0xb'));var squel=require(_0x2a1d('0xc'));var crypto=require(_0x2a1d('0xd'));var jsforce=require(_0x2a1d('0xe'));var deskjs=require(_0x2a1d('0xf'));var toCsv=require(_0x2a1d('0x9'));var querystring=require(_0x2a1d('0x10'));var Papa=require(_0x2a1d('0x11'));var Redis=require(_0x2a1d('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x2a1d('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2a1d('0x14'));var logger=require(_0x2a1d('0x15'))('api');var utils=require(_0x2a1d('0x16'));var config=require(_0x2a1d('0x17'));var licenseUtil=require(_0x2a1d('0x18'));var db=require('../../mysqldb')['db'];config[_0x2a1d('0x19')]=_['defaults'](config[_0x2a1d('0x19')],{'host':_0x2a1d('0x1a'),'port':0x18eb});var socket=require(_0x2a1d('0x1b'))(new Redis(config[_0x2a1d('0x19')]));require(_0x2a1d('0x1c'))[_0x2a1d('0x1d')](socket);var jayson=require(_0x2a1d('0x1e'));var client=jayson[_0x2a1d('0x1f')][_0x2a1d('0x20')]({'port':0x232c});var client9002=jayson[_0x2a1d('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4630c4,_0x1cfb8b,_0x30a64b,_0x192585){return new BPromise(function(_0x3925e1,_0x12fa6d){var _0x229a21=_0x192585||client;return _0x229a21[_0x2a1d('0x21')](_0x4630c4,_0x30a64b)[_0x2a1d('0x22')](function(_0xb5d08d){logger['info'](_0x2a1d('0x23'),_0x1cfb8b,_0x2a1d('0x24'));logger[_0x2a1d('0x25')](_0x2a1d('0x26'),_0x1cfb8b,_0x2a1d('0x24'),JSON['stringify'](_0xb5d08d));if(_0xb5d08d[_0x2a1d('0x27')]){if(_0xb5d08d['error'][_0x2a1d('0x28')]===0x1f4){logger[_0x2a1d('0x27')](_0x2a1d('0x23'),_0x1cfb8b,_0xb5d08d[_0x2a1d('0x27')][_0x2a1d('0x29')]);return _0x12fa6d(_0xb5d08d['error']['message']);}logger[_0x2a1d('0x27')](_0x2a1d('0x23'),_0x1cfb8b,_0xb5d08d[_0x2a1d('0x27')][_0x2a1d('0x29')]);return _0x3925e1(_0xb5d08d[_0x2a1d('0x27')]['message']);}else{logger['info']('SmsMessage,\x20%s,\x20%s',_0x1cfb8b,_0x2a1d('0x24'));_0x3925e1(_0xb5d08d['result']['message']);}})[_0x2a1d('0x2a')](function(_0x4f858d){logger[_0x2a1d('0x27')](_0x2a1d('0x23'),_0x1cfb8b,_0x4f858d);_0x12fa6d(_0x4f858d);});});}function respondWithStatusCode(_0x587d7b,_0x2a6055){_0x2a6055=_0x2a6055||0xcc;return function(_0x450bac){if(_0x450bac){return _0x587d7b[_0x2a1d('0x2b')](_0x2a6055);}return _0x587d7b['status'](_0x2a6055)['end']();};}function respondWithResult(_0x5e5716,_0x26b351){_0x26b351=_0x26b351||0xc8;return function(_0x2b57c9){if(_0x2b57c9){return _0x5e5716['status'](_0x26b351)[_0x2a1d('0x2c')](_0x2b57c9);}};}function respondWithFilteredResult(_0x511df0,_0x3d75ca){return function(_0x4a5ccd){if(_0x4a5ccd){var _0x3a00e2=typeof _0x3d75ca['offset']===_0x2a1d('0x2d')&&typeof _0x3d75ca['limit']==='undefined';var _0x47d6a6=_0x4a5ccd[_0x2a1d('0x2e')];var _0x58854b=_0x3a00e2?0x0:_0x3d75ca[_0x2a1d('0x2f')];var _0x3c972e=_0x3a00e2?_0x4a5ccd[_0x2a1d('0x2e')]:_0x3d75ca[_0x2a1d('0x2f')]+_0x3d75ca[_0x2a1d('0x30')];var _0x2abad0;if(_0x3c972e>=_0x47d6a6){_0x3c972e=_0x47d6a6;_0x2abad0=0xc8;}else{_0x2abad0=0xce;}_0x511df0[_0x2a1d('0x31')](_0x2abad0);return _0x511df0[_0x2a1d('0x32')]('Content-Range',_0x58854b+'-'+_0x3c972e+'/'+_0x47d6a6)['json'](_0x4a5ccd);}return null;};}function patchUpdates(_0x54031a){return function(_0x28937f){try{jsonpatch[_0x2a1d('0x33')](_0x28937f,_0x54031a,!![]);}catch(_0x4f6df7){return BPromise['reject'](_0x4f6df7);}return _0x28937f['save']();};}function saveUpdates(_0x1f01aa,_0xa43863){return function(_0x1486e6){if(_0x1486e6){return _0x1486e6['update'](_0x1f01aa)[_0x2a1d('0x22')](function(_0x240a0a){return _0x240a0a;});}return null;};}function removeEntity(_0xb8bd4e,_0x459636){return function(_0x192e48){if(_0x192e48){return _0x192e48[_0x2a1d('0x34')]()[_0x2a1d('0x22')](function(){_0xb8bd4e[_0x2a1d('0x31')](0xcc)[_0x2a1d('0x35')]();});}};}function handleEntityNotFound(_0x2eed5f,_0x4fb3ca){return function(_0x2a054e){if(!_0x2a054e){_0x2eed5f['sendStatus'](0x194);}return _0x2a054e;};}function handleError(_0x51d978,_0x5f1130){_0x5f1130=_0x5f1130||0x1f4;return function(_0xc43d4c){logger[_0x2a1d('0x27')](_0xc43d4c['stack']);if(_0xc43d4c['name']){delete _0xc43d4c[_0x2a1d('0x36')];}_0x51d978[_0x2a1d('0x31')](_0x5f1130)[_0x2a1d('0x37')](_0xc43d4c);};}exports['index']=function(_0x4e464a,_0x62be77){var _0x1c43a5={},_0x5d8f87={},_0x1a40ba={'count':0x0,'rows':[]};var _0x4a15c7=_[_0x2a1d('0x38')](db[_0x2a1d('0x39')]['rawAttributes'],function(_0x2ef779){return{'name':_0x2ef779[_0x2a1d('0x3a')],'type':_0x2ef779[_0x2a1d('0x3b')][_0x2a1d('0x3c')]};});_0x5d8f87['model']=_[_0x2a1d('0x38')](_0x4a15c7,_0x2a1d('0x36'));_0x5d8f87[_0x2a1d('0x3d')]=_['keys'](_0x4e464a[_0x2a1d('0x3d')]);_0x5d8f87[_0x2a1d('0x3e')]=_[_0x2a1d('0x3f')](_0x5d8f87[_0x2a1d('0x40')],_0x5d8f87[_0x2a1d('0x3d')]);_0x1c43a5[_0x2a1d('0x41')]=_['intersection'](_0x5d8f87[_0x2a1d('0x40')],qs[_0x2a1d('0x42')](_0x4e464a[_0x2a1d('0x3d')][_0x2a1d('0x42')]));_0x1c43a5[_0x2a1d('0x41')]=_0x1c43a5[_0x2a1d('0x41')][_0x2a1d('0x43')]?_0x1c43a5[_0x2a1d('0x41')]:_0x5d8f87['model'];if(!_0x4e464a[_0x2a1d('0x3d')]['hasOwnProperty'](_0x2a1d('0x44'))){_0x1c43a5['limit']=qs['limit'](_0x4e464a[_0x2a1d('0x3d')]['limit']);_0x1c43a5[_0x2a1d('0x2f')]=qs['offset'](_0x4e464a[_0x2a1d('0x3d')]['offset']);}_0x1c43a5[_0x2a1d('0x45')]=qs[_0x2a1d('0x46')](_0x4e464a['query']['sort']);_0x1c43a5['where']=qs[_0x2a1d('0x3e')](_[_0x2a1d('0x47')](_0x4e464a[_0x2a1d('0x3d')],_0x5d8f87['filters']),_0x4a15c7);if(_0x4e464a['query'][_0x2a1d('0x48')]){_0x1c43a5[_0x2a1d('0x49')]=_['merge'](_0x1c43a5[_0x2a1d('0x49')],{'$or':_[_0x2a1d('0x38')](_0x4a15c7,function(_0x11f017){if(_0x11f017[_0x2a1d('0x3b')]!==_0x2a1d('0x4a')){var _0x38b64f={};_0x38b64f[_0x11f017['name']]={'$like':'%'+_0x4e464a['query']['filter']+'%'};return _0x38b64f;}})});}_0x1c43a5=_[_0x2a1d('0x4b')]({},_0x1c43a5,_0x4e464a['options']);var _0x588ba0={'where':_0x1c43a5['where']};return db[_0x2a1d('0x39')][_0x2a1d('0x2e')](_0x588ba0)[_0x2a1d('0x22')](function(_0x166bb4){_0x1a40ba[_0x2a1d('0x2e')]=_0x166bb4;if(_0x4e464a[_0x2a1d('0x3d')][_0x2a1d('0x4c')]){_0x1c43a5[_0x2a1d('0x4d')]=[{'all':!![]}];}return db['SmsMessage'][_0x2a1d('0x4e')](_0x1c43a5);})['then'](function(_0x5b1c52){_0x1a40ba[_0x2a1d('0x4f')]=_0x5b1c52;return _0x1a40ba;})[_0x2a1d('0x22')](respondWithFilteredResult(_0x62be77,_0x1c43a5))[_0x2a1d('0x2a')](handleError(_0x62be77,null));};exports['show']=function(_0x1a700a,_0x42a16a){var _0x2b6e20={'raw':!![],'where':{'id':_0x1a700a[_0x2a1d('0x50')]['id']}},_0x16ad4b={};_0x16ad4b[_0x2a1d('0x40')]=_['keys'](db[_0x2a1d('0x39')][_0x2a1d('0x51')]);_0x16ad4b['query']=_[_0x2a1d('0x52')](_0x1a700a[_0x2a1d('0x3d')]);_0x16ad4b['filters']=_['intersection'](_0x16ad4b[_0x2a1d('0x40')],_0x16ad4b[_0x2a1d('0x3d')]);_0x2b6e20[_0x2a1d('0x41')]=_['intersection'](_0x16ad4b[_0x2a1d('0x40')],qs[_0x2a1d('0x42')](_0x1a700a['query'][_0x2a1d('0x42')]));_0x2b6e20[_0x2a1d('0x41')]=_0x2b6e20[_0x2a1d('0x41')][_0x2a1d('0x43')]?_0x2b6e20[_0x2a1d('0x41')]:_0x16ad4b[_0x2a1d('0x40')];if(_0x1a700a[_0x2a1d('0x3d')][_0x2a1d('0x4c')]){_0x2b6e20[_0x2a1d('0x4d')]=[{'all':!![]}];}_0x2b6e20=_['merge']({},_0x2b6e20,_0x1a700a[_0x2a1d('0x53')]);return db[_0x2a1d('0x39')]['find'](_0x2b6e20)[_0x2a1d('0x22')](handleEntityNotFound(_0x42a16a,null))[_0x2a1d('0x22')](respondWithResult(_0x42a16a,null))[_0x2a1d('0x2a')](handleError(_0x42a16a,null));};exports[_0x2a1d('0x54')]=function(_0x1e486f,_0x15eaf7){return db['SmsMessage']['create'](_0x1e486f[_0x2a1d('0x55')],{})[_0x2a1d('0x22')](respondWithResult(_0x15eaf7,0xc9))['catch'](handleError(_0x15eaf7,null));};exports[_0x2a1d('0x56')]=function(_0x4a3f85,_0x3950b0){if(_0x4a3f85['body']['id']){delete _0x4a3f85[_0x2a1d('0x55')]['id'];}return db[_0x2a1d('0x39')][_0x2a1d('0x57')]({'where':{'id':_0x4a3f85['params']['id']}})[_0x2a1d('0x22')](handleEntityNotFound(_0x3950b0,null))['then'](saveUpdates(_0x4a3f85[_0x2a1d('0x55')],null))[_0x2a1d('0x22')](respondWithResult(_0x3950b0,null))[_0x2a1d('0x2a')](handleError(_0x3950b0,null));};exports[_0x2a1d('0x34')]=function(_0x389115,_0x1844e7){return db[_0x2a1d('0x39')]['find']({'where':{'id':_0x389115[_0x2a1d('0x50')]['id']}})[_0x2a1d('0x22')](handleEntityNotFound(_0x1844e7,null))[_0x2a1d('0x22')](removeEntity(_0x1844e7,null))[_0x2a1d('0x2a')](handleError(_0x1844e7,null));};exports[_0x2a1d('0x58')]=function(_0x36e446,_0x2b5f29){return db[_0x2a1d('0x39')]['describe']()[_0x2a1d('0x22')](respondWithResult(_0x2b5f29,null))['catch'](handleError(_0x2b5f29,null));};var interaction_log=require(_0x2a1d('0x15'))(_0x2a1d('0x59'));exports[_0x2a1d('0x5a')]=function(_0xd518a0,_0x26df56,_0x58a69e){var _0x553a99={'agent':{},'channel':_0x2a1d('0x5b')};if(_0xd518a0['body']['id']){delete _0xd518a0['body']['id'];}_0xd518a0['body'][_0x2a1d('0x5c')]=!![];_0xd518a0[_0x2a1d('0x55')][_0x2a1d('0x5d')]=moment()['format'](_0x2a1d('0x5e'));_0xd518a0['body'][_0x2a1d('0x5f')]=_0xd518a0['body'][_0x2a1d('0x5f')]||_0xd518a0[_0x2a1d('0x60')]['id'];_0x553a99[_0x2a1d('0x61')]['id']=_0xd518a0[_0x2a1d('0x55')][_0x2a1d('0x5f')];return db['SmsMessage']['find']({'where':{'id':_0xd518a0[_0x2a1d('0x50')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x26df56,null))[_0x2a1d('0x22')](saveUpdates(_0xd518a0[_0x2a1d('0x55')],null))['then'](function(_0x1dcb6c){if(_0x1dcb6c){_0x553a99[_0x2a1d('0x29')]=_0x1dcb6c[_0x2a1d('0x62')]({'plain':!![]});return db['SmsInteraction'][_0x2a1d('0x57')]({'where':{'id':_0x1dcb6c[_0x2a1d('0x63')]}});}return null;})['then'](handleEntityNotFound(_0x26df56,null))['then'](function(_0x42bdaf){if(_0x42bdaf){return _0x42bdaf[_0x2a1d('0x56')]({'UserId':_0xd518a0[_0x2a1d('0x55')][_0x2a1d('0x5f')],'read1stAt':_[_0x2a1d('0x64')](_0x42bdaf['read1stAt'])?moment()[_0x2a1d('0x65')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x2a1d('0x22')](function(_0x567d0){if(_0x567d0){_0x553a99[_0x2a1d('0x66')]=_0x567d0[_0x2a1d('0x62')]({'plain':!![]});interaction_log[_0x2a1d('0x67')](_0x2a1d('0x68'),_0xd518a0['user']['id'],_0xd518a0['user'][_0x2a1d('0x36')],_0xd518a0[_0x2a1d('0x60')]['role'],_0x553a99[_0x2a1d('0x66')]['id'],_0xd518a0['body']?JSON[_0x2a1d('0x69')](_0xd518a0[_0x2a1d('0x55')]):_0x2a1d('0x6a'));return respondWithRpcPromise('AcceptMessage',_0x2a1d('0x6b'),_0x553a99);}return null;})[_0x2a1d('0x22')](function(_0x19eedd){var _0xb2000d=_0x2a1d('0x6c')+_0x19eedd[_0x2a1d('0x29')][_0x2a1d('0x6d')];return db['sequelize'][_0x2a1d('0x3d')](_0xb2000d,{'type':db[_0x2a1d('0x6e')]['QueryTypes']['SELECT'],'raw':!![]})[_0x2a1d('0x22')](function(_0x2c2456){return _0x2c2456;});})[_0x2a1d('0x22')](function(_0xff1eb2){if(_0xff1eb2){_0x553a99['message']['contact']=_0xff1eb2[0x0];if(!_0xd518a0[_0x2a1d('0x55')][_0x2a1d('0x5f')])return;return db[_0x2a1d('0x6f')]['find']({'where':{'id':_0xd518a0[_0x2a1d('0x55')][_0x2a1d('0x5f')],'role':_0x2a1d('0x61')},'attributes':['id',_0x2a1d('0x36'),_0x2a1d('0x70'),'email',_0x2a1d('0x71')],'raw':!![]});}return null;})[_0x2a1d('0x22')](function(_0x262a29){if(!_0x262a29)return null;_0x553a99[_0x2a1d('0x29')][_0x2a1d('0x61')]=_0x262a29;return _0x553a99;})[_0x2a1d('0x22')](function(_0x29776f){if(_0x29776f){if(_0xd518a0[_0x2a1d('0x55')][_0x2a1d('0x72')]){_0x553a99[_0x2a1d('0x29')]['interface']=util[_0x2a1d('0x65')](_0x2a1d('0x73'),_0xd518a0['user'][_0x2a1d('0x36')]);_0x553a99[_0x2a1d('0x29')][_0x2a1d('0x74')]=_0x553a99[_0x2a1d('0x74')];_0x553a99[_0x2a1d('0x29')][_0x2a1d('0x75')]=_0x553a99[_0x2a1d('0x74')];_0x553a99[_0x2a1d('0x29')]['event']=_0x2a1d('0x5a');return respondWithRpcPromise('EventManager','EventManager',{'event':'acceptmessage','message':_0x553a99[_0x2a1d('0x29')]},client9002)['then'](function(){return _0x553a99;});}return _0x553a99;}return null;})['then'](respondWithResult(_0x26df56,null))['catch'](handleError(_0x26df56,null));};var interaction_log=require(_0x2a1d('0x15'))(_0x2a1d('0x59'));exports[_0x2a1d('0x76')]=function(_0x461b0c,_0x1e2c0e,_0x231ba7){var _0x398e40={'agent':{},'channel':_0x2a1d('0x5b')};if(_0x461b0c[_0x2a1d('0x55')]['id']){delete _0x461b0c[_0x2a1d('0x55')]['id'];}_0x461b0c[_0x2a1d('0x55')][_0x2a1d('0x5f')]=_0x461b0c[_0x2a1d('0x55')][_0x2a1d('0x5f')]||_0x461b0c[_0x2a1d('0x60')]['id'];_0x398e40[_0x2a1d('0x61')]['id']=_0x461b0c['body'][_0x2a1d('0x5f')];return db['SmsMessage']['find']({'where':{'id':_0x461b0c[_0x2a1d('0x50')]['id'],'UserId':null}})[_0x2a1d('0x22')](handleEntityNotFound(_0x1e2c0e,null))[_0x2a1d('0x22')](function(_0x44022d){if(_0x44022d){_0x398e40[_0x2a1d('0x29')]=_0x44022d['get']({'plain':!![]});return db[_0x2a1d('0x77')][_0x2a1d('0x57')]({'where':{'id':_0x44022d[_0x2a1d('0x63')]}});}return null;})['then'](handleEntityNotFound(_0x1e2c0e,null))[_0x2a1d('0x22')](function(_0x48536d){if(_0x48536d){_0x398e40[_0x2a1d('0x66')]=_0x48536d[_0x2a1d('0x62')]({'plain':!![]});interaction_log[_0x2a1d('0x67')]('[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x461b0c['user']['id'],_0x461b0c[_0x2a1d('0x60')][_0x2a1d('0x36')],_0x461b0c[_0x2a1d('0x60')][_0x2a1d('0x78')],_0x398e40[_0x2a1d('0x66')]['id'],_0x461b0c[_0x2a1d('0x55')]?JSON[_0x2a1d('0x69')](_0x461b0c[_0x2a1d('0x55')]):_0x2a1d('0x6a'));return respondWithRpcPromise(_0x2a1d('0x79'),'rejectMessage',_0x398e40);}return null;})['then'](function(_0x524619){var _0x171acf=_0x2a1d('0x6c')+_0x524619[_0x2a1d('0x29')][_0x2a1d('0x6d')];return db[_0x2a1d('0x7a')][_0x2a1d('0x3d')](_0x171acf,{'type':db[_0x2a1d('0x6e')][_0x2a1d('0x7b')][_0x2a1d('0x7c')],'raw':!![]})[_0x2a1d('0x22')](function(_0x4e8e4b){return _0x4e8e4b;});})[_0x2a1d('0x22')](function(_0x3669c2){if(_0x3669c2){_0x398e40[_0x2a1d('0x29')][_0x2a1d('0x7d')]=_0x3669c2[0x0];if(!_0x461b0c[_0x2a1d('0x55')][_0x2a1d('0x5f')])return;return db[_0x2a1d('0x6f')][_0x2a1d('0x57')]({'where':{'id':_0x461b0c[_0x2a1d('0x55')][_0x2a1d('0x5f')],'role':'agent'},'attributes':['id','name',_0x2a1d('0x70'),'email',_0x2a1d('0x71')],'raw':!![]});}return null;})[_0x2a1d('0x22')](function(_0x597ef0){if(!_0x597ef0)return null;_0x398e40['message'][_0x2a1d('0x61')]=_0x597ef0;return _0x398e40;})[_0x2a1d('0x22')](function(_0x572bda){if(_0x572bda){_0x572bda[_0x2a1d('0x29')][_0x2a1d('0x7e')]=util[_0x2a1d('0x65')](_0x2a1d('0x73'),_0x461b0c[_0x2a1d('0x60')][_0x2a1d('0x36')]);_0x572bda['message'][_0x2a1d('0x74')]=_0x398e40['channel'];_0x572bda[_0x2a1d('0x29')]['motionChannel']=_0x398e40['channel'];_0x572bda['message'][_0x2a1d('0x7f')]='reject';respondWithRpcPromise(_0x2a1d('0x80'),_0x2a1d('0x80'),{'event':_0x2a1d('0x81'),'message':_0x572bda[_0x2a1d('0x29')]},client9002);return _0x398e40;}return null;})[_0x2a1d('0x22')](respondWithResult(_0x1e2c0e,null))['catch'](handleError(_0x1e2c0e,null));};exports[_0x2a1d('0x31')]=function(_0x3b86f6,_0xa41db2,_0x584fd9){if(_0x3b86f6[_0x2a1d('0x55')]['id']){delete _0x3b86f6[_0x2a1d('0x55')]['id'];}var _0xc33897;return db[_0x2a1d('0x39')][_0x2a1d('0x57')]({'where':{'id':_0x3b86f6['params']['id']}})['then'](handleEntityNotFound(_0xa41db2,null))['then'](function(_0xb0e757){if(_0xb0e757){_0xc33897=_0xb0e757;return db['SmsAccount'][_0x2a1d('0x57')]({'where':{'id':_0xb0e757[_0x2a1d('0x82')]}});}})[_0x2a1d('0x22')](handleEntityNotFound(_0xa41db2,null))['then'](function(_0xf06e3f){if(_0xf06e3f){logger[_0x2a1d('0x25')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2a1d('0x31'),_0x2a1d('0x83'),_0xf06e3f['type'],util[_0x2a1d('0x84')](_0x3b86f6['body'],{'showHidden':![],'depth':null}));switch(_0xf06e3f['type']){case _0x2a1d('0x85'):if(_0x3b86f6[_0x2a1d('0x55')][_0x2a1d('0x86')]&&_0x3b86f6[_0x2a1d('0x55')][_0x2a1d('0x86')]===_0xc33897['messageId']){return _0xc33897[_0x2a1d('0x56')]({'read':!![]});}else{logger[_0x2a1d('0x27')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x2a1d('0x31'),_0x2a1d('0x85'),util[_0x2a1d('0x84')](_0x3b86f6['body'],{'showHidden':![],'depth':null}));}break;case'plivo':if(_0x3b86f6[_0x2a1d('0x55')][_0x2a1d('0x87')]&&_0x3b86f6['body'][_0x2a1d('0x87')]===_0xc33897[_0x2a1d('0x88')]&&_[_0x2a1d('0x89')](['sent',_0x2a1d('0x8a')],_0x3b86f6[_0x2a1d('0x55')]['Status'])>=0x0){return _0xc33897['update']({'read':!![]});}else{logger[_0x2a1d('0x27')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x2a1d('0x31'),'plivio',util[_0x2a1d('0x84')](_0x3b86f6[_0x2a1d('0x55')],{'showHidden':![],'depth':null}));}break;case _0x2a1d('0x8b'):var _0x47adad=_0x3b86f6[_0x2a1d('0x55')][_0x2a1d('0x8c')][0x0];if(_0x47adad[_0x2a1d('0x31')][_0x2a1d('0x8d')]===_0x2a1d('0x8e')){return _0xc33897[_0x2a1d('0x56')]({'read':!![]});}else{logger[_0x2a1d('0x27')](_0x2a1d('0x8f'),_0x2a1d('0x31'),_0x2a1d('0x8b'),util['inspect'](_0x3b86f6[_0x2a1d('0x55')],{'showHidden':![],'depth':null}));}break;}return _0xc33897;}})[_0x2a1d('0x22')](respondWithResult(_0xa41db2,null))[_0x2a1d('0x2a')](handleError(_0xa41db2,null));};
\ No newline at end of file
+var _0x4bd4=['../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./smsMessage.socket','register','http','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','status','end','json','offset','undefined','count','apply','reject','update','destroy','sendStatus','name','map','SmsMessage','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','limit','sort','where','pick','filter','type','options','includeAll','include','findAll','rows','show','params','length','merge','find','catch','create','body','accept','sms','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','SmsInteraction','SmsInteractionId','isNil','read1stAt','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','stringify','null','AcceptMessage','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','SIP/%s','channel','event','EventManager','acceptmessage','sms-interactions','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','interface','SmsAccount','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','indexOf','sent','Status','plivio','infobip','groupName','DELIVERED','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse'];(function(_0x54842e,_0x6303d3){var _0x1fb3f9=function(_0x27735d){while(--_0x27735d){_0x54842e['push'](_0x54842e['shift']());}};_0x1fb3f9(++_0x6303d3);}(_0x4bd4,0x107));var _0x44bd=function(_0x4eae09,_0x5e5c1e){_0x4eae09=_0x4eae09-0x0;var _0x264f33=_0x4bd4[_0x4eae09];return _0x264f33;};'use strict';var emlformat=require(_0x44bd('0x0'));var rimraf=require(_0x44bd('0x1'));var zipdir=require(_0x44bd('0x2'));var jsonpatch=require(_0x44bd('0x3'));var rp=require(_0x44bd('0x4'));var moment=require(_0x44bd('0x5'));var BPromise=require(_0x44bd('0x6'));var Mustache=require(_0x44bd('0x7'));var util=require(_0x44bd('0x8'));var path=require('path');var sox=require(_0x44bd('0x9'));var csv=require(_0x44bd('0xa'));var ejs=require(_0x44bd('0xb'));var fs=require('fs');var fs_extra=require(_0x44bd('0xc'));var _=require('lodash');var squel=require(_0x44bd('0xd'));var crypto=require(_0x44bd('0xe'));var jsforce=require(_0x44bd('0xf'));var deskjs=require(_0x44bd('0x10'));var toCsv=require(_0x44bd('0xa'));var querystring=require(_0x44bd('0x11'));var Papa=require(_0x44bd('0x12'));var Redis=require('ioredis');var authService=require(_0x44bd('0x13'));var qs=require(_0x44bd('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x44bd('0x15'));var logger=require(_0x44bd('0x16'))('api');var utils=require(_0x44bd('0x17'));var config=require(_0x44bd('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x44bd('0x19'))['db'];config[_0x44bd('0x1a')]=_['defaults'](config[_0x44bd('0x1a')],{'host':_0x44bd('0x1b'),'port':0x18eb});var socket=require(_0x44bd('0x1c'))(new Redis(config[_0x44bd('0x1a')]));require(_0x44bd('0x1d'))[_0x44bd('0x1e')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x44bd('0x1f')]({'port':0x232c});var client9002=jayson['client'][_0x44bd('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x414f0e,_0x528787,_0x1024d6,_0x1915b0){return new BPromise(function(_0x29124f,_0x37e095){var _0x3ccec1=_0x1915b0||client;return _0x3ccec1[_0x44bd('0x20')](_0x414f0e,_0x1024d6)[_0x44bd('0x21')](function(_0x195922){logger[_0x44bd('0x22')](_0x44bd('0x23'),_0x528787,_0x44bd('0x24'));logger[_0x44bd('0x25')](_0x44bd('0x26'),_0x528787,'request\x20sent',JSON['stringify'](_0x195922));if(_0x195922[_0x44bd('0x27')]){if(_0x195922[_0x44bd('0x27')][_0x44bd('0x28')]===0x1f4){logger[_0x44bd('0x27')](_0x44bd('0x23'),_0x528787,_0x195922[_0x44bd('0x27')]['message']);return _0x37e095(_0x195922['error'][_0x44bd('0x29')]);}logger[_0x44bd('0x27')](_0x44bd('0x23'),_0x528787,_0x195922['error'][_0x44bd('0x29')]);return _0x29124f(_0x195922['error'][_0x44bd('0x29')]);}else{logger[_0x44bd('0x22')](_0x44bd('0x23'),_0x528787,_0x44bd('0x24'));_0x29124f(_0x195922[_0x44bd('0x2a')][_0x44bd('0x29')]);}})['catch'](function(_0x2a641a){logger['error'](_0x44bd('0x23'),_0x528787,_0x2a641a);_0x37e095(_0x2a641a);});});}function respondWithStatusCode(_0x56d3d6,_0xfa84d8){_0xfa84d8=_0xfa84d8||0xcc;return function(_0x58e736){if(_0x58e736){return _0x56d3d6['sendStatus'](_0xfa84d8);}return _0x56d3d6[_0x44bd('0x2b')](_0xfa84d8)[_0x44bd('0x2c')]();};}function respondWithResult(_0x3fcb52,_0x2f4db2){_0x2f4db2=_0x2f4db2||0xc8;return function(_0x4b417c){if(_0x4b417c){return _0x3fcb52[_0x44bd('0x2b')](_0x2f4db2)[_0x44bd('0x2d')](_0x4b417c);}};}function respondWithFilteredResult(_0x58ea44,_0x5996f9){return function(_0x4a159f){if(_0x4a159f){var _0x3be9a3=typeof _0x5996f9[_0x44bd('0x2e')]===_0x44bd('0x2f')&&typeof _0x5996f9['limit']===_0x44bd('0x2f');var _0x320d76=_0x4a159f[_0x44bd('0x30')];var _0x5bcf60=_0x3be9a3?0x0:_0x5996f9['offset'];var _0x48dc8d=_0x3be9a3?_0x4a159f[_0x44bd('0x30')]:_0x5996f9[_0x44bd('0x2e')]+_0x5996f9['limit'];var _0x8be013;if(_0x48dc8d>=_0x320d76){_0x48dc8d=_0x320d76;_0x8be013=0xc8;}else{_0x8be013=0xce;}_0x58ea44[_0x44bd('0x2b')](_0x8be013);return _0x58ea44['set']('Content-Range',_0x5bcf60+'-'+_0x48dc8d+'/'+_0x320d76)['json'](_0x4a159f);}return null;};}function patchUpdates(_0x250acb){return function(_0x12ddea){try{jsonpatch[_0x44bd('0x31')](_0x12ddea,_0x250acb,!![]);}catch(_0x18cca6){return BPromise[_0x44bd('0x32')](_0x18cca6);}return _0x12ddea['save']();};}function saveUpdates(_0x1a85d7,_0x2c7204){return function(_0x2c21db){if(_0x2c21db){return _0x2c21db[_0x44bd('0x33')](_0x1a85d7)[_0x44bd('0x21')](function(_0x1317d0){return _0x1317d0;});}return null;};}function removeEntity(_0x1221ea,_0x21d53c){return function(_0xc6fe03){if(_0xc6fe03){return _0xc6fe03[_0x44bd('0x34')]()['then'](function(){_0x1221ea[_0x44bd('0x2b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x575ef6,_0x22fdb6){return function(_0x317f15){if(!_0x317f15){_0x575ef6[_0x44bd('0x35')](0x194);}return _0x317f15;};}function handleError(_0x18aadc,_0x2316a6){_0x2316a6=_0x2316a6||0x1f4;return function(_0x57f943){logger[_0x44bd('0x27')](_0x57f943['stack']);if(_0x57f943[_0x44bd('0x36')]){delete _0x57f943[_0x44bd('0x36')];}_0x18aadc[_0x44bd('0x2b')](_0x2316a6)['send'](_0x57f943);};}exports['index']=function(_0x511b0e,_0x115302){var _0x44a25d={},_0x5ec3cb={},_0x1061ca={'count':0x0,'rows':[]};var _0x101063=_[_0x44bd('0x37')](db[_0x44bd('0x38')][_0x44bd('0x39')],function(_0x3ff57b){return{'name':_0x3ff57b[_0x44bd('0x3a')],'type':_0x3ff57b['type'][_0x44bd('0x3b')]};});_0x5ec3cb['model']=_[_0x44bd('0x37')](_0x101063,'name');_0x5ec3cb[_0x44bd('0x3c')]=_[_0x44bd('0x3d')](_0x511b0e['query']);_0x5ec3cb[_0x44bd('0x3e')]=_[_0x44bd('0x3f')](_0x5ec3cb[_0x44bd('0x40')],_0x5ec3cb[_0x44bd('0x3c')]);_0x44a25d[_0x44bd('0x41')]=_[_0x44bd('0x3f')](_0x5ec3cb['model'],qs[_0x44bd('0x42')](_0x511b0e[_0x44bd('0x3c')][_0x44bd('0x42')]));_0x44a25d[_0x44bd('0x41')]=_0x44a25d[_0x44bd('0x41')]['length']?_0x44a25d[_0x44bd('0x41')]:_0x5ec3cb['model'];if(!_0x511b0e[_0x44bd('0x3c')][_0x44bd('0x43')](_0x44bd('0x44'))){_0x44a25d['limit']=qs['limit'](_0x511b0e[_0x44bd('0x3c')][_0x44bd('0x45')]);_0x44a25d[_0x44bd('0x2e')]=qs[_0x44bd('0x2e')](_0x511b0e['query']['offset']);}_0x44a25d['order']=qs[_0x44bd('0x46')](_0x511b0e[_0x44bd('0x3c')][_0x44bd('0x46')]);_0x44a25d[_0x44bd('0x47')]=qs[_0x44bd('0x3e')](_[_0x44bd('0x48')](_0x511b0e[_0x44bd('0x3c')],_0x5ec3cb['filters']),_0x101063);if(_0x511b0e['query'][_0x44bd('0x49')]){_0x44a25d['where']=_['merge'](_0x44a25d[_0x44bd('0x47')],{'$or':_['map'](_0x101063,function(_0x1cf339){if(_0x1cf339[_0x44bd('0x4a')]!=='VIRTUAL'){var _0x598a78={};_0x598a78[_0x1cf339['name']]={'$like':'%'+_0x511b0e[_0x44bd('0x3c')][_0x44bd('0x49')]+'%'};return _0x598a78;}})});}_0x44a25d=_['merge']({},_0x44a25d,_0x511b0e[_0x44bd('0x4b')]);var _0x2abc78={'where':_0x44a25d[_0x44bd('0x47')]};return db[_0x44bd('0x38')][_0x44bd('0x30')](_0x2abc78)[_0x44bd('0x21')](function(_0x4990b4){_0x1061ca[_0x44bd('0x30')]=_0x4990b4;if(_0x511b0e[_0x44bd('0x3c')][_0x44bd('0x4c')]){_0x44a25d[_0x44bd('0x4d')]=[{'all':!![]}];}return db[_0x44bd('0x38')][_0x44bd('0x4e')](_0x44a25d);})[_0x44bd('0x21')](function(_0x518ee2){_0x1061ca[_0x44bd('0x4f')]=_0x518ee2;return _0x1061ca;})[_0x44bd('0x21')](respondWithFilteredResult(_0x115302,_0x44a25d))['catch'](handleError(_0x115302,null));};exports[_0x44bd('0x50')]=function(_0x17d6ec,_0x317814){var _0x3c7b03={'raw':!![],'where':{'id':_0x17d6ec[_0x44bd('0x51')]['id']}},_0xee7e7e={};_0xee7e7e[_0x44bd('0x40')]=_[_0x44bd('0x3d')](db[_0x44bd('0x38')][_0x44bd('0x39')]);_0xee7e7e[_0x44bd('0x3c')]=_[_0x44bd('0x3d')](_0x17d6ec['query']);_0xee7e7e[_0x44bd('0x3e')]=_['intersection'](_0xee7e7e[_0x44bd('0x40')],_0xee7e7e[_0x44bd('0x3c')]);_0x3c7b03[_0x44bd('0x41')]=_[_0x44bd('0x3f')](_0xee7e7e[_0x44bd('0x40')],qs['fields'](_0x17d6ec[_0x44bd('0x3c')]['fields']));_0x3c7b03[_0x44bd('0x41')]=_0x3c7b03[_0x44bd('0x41')][_0x44bd('0x52')]?_0x3c7b03['attributes']:_0xee7e7e[_0x44bd('0x40')];if(_0x17d6ec[_0x44bd('0x3c')]['includeAll']){_0x3c7b03['include']=[{'all':!![]}];}_0x3c7b03=_[_0x44bd('0x53')]({},_0x3c7b03,_0x17d6ec[_0x44bd('0x4b')]);return db[_0x44bd('0x38')][_0x44bd('0x54')](_0x3c7b03)[_0x44bd('0x21')](handleEntityNotFound(_0x317814,null))[_0x44bd('0x21')](respondWithResult(_0x317814,null))[_0x44bd('0x55')](handleError(_0x317814,null));};exports[_0x44bd('0x56')]=function(_0x5a91b9,_0x439e3c){return db['SmsMessage'][_0x44bd('0x56')](_0x5a91b9[_0x44bd('0x57')],{})[_0x44bd('0x21')](respondWithResult(_0x439e3c,0xc9))[_0x44bd('0x55')](handleError(_0x439e3c,null));};exports[_0x44bd('0x33')]=function(_0x5e5f82,_0x449ca1){if(_0x5e5f82[_0x44bd('0x57')]['id']){delete _0x5e5f82[_0x44bd('0x57')]['id'];}return db[_0x44bd('0x38')][_0x44bd('0x54')]({'where':{'id':_0x5e5f82['params']['id']}})[_0x44bd('0x21')](handleEntityNotFound(_0x449ca1,null))[_0x44bd('0x21')](saveUpdates(_0x5e5f82[_0x44bd('0x57')],null))[_0x44bd('0x21')](respondWithResult(_0x449ca1,null))['catch'](handleError(_0x449ca1,null));};exports[_0x44bd('0x34')]=function(_0x1b147c,_0x4a92e2){return db[_0x44bd('0x38')][_0x44bd('0x54')]({'where':{'id':_0x1b147c[_0x44bd('0x51')]['id']}})[_0x44bd('0x21')](handleEntityNotFound(_0x4a92e2,null))[_0x44bd('0x21')](removeEntity(_0x4a92e2,null))[_0x44bd('0x55')](handleError(_0x4a92e2,null));};exports['describe']=function(_0x23528c,_0x3d1896){return db[_0x44bd('0x38')]['describe']()['then'](respondWithResult(_0x3d1896,null))[_0x44bd('0x55')](handleError(_0x3d1896,null));};var interaction_log=require(_0x44bd('0x16'))('sms-interactions');exports[_0x44bd('0x58')]=function(_0xa31433,_0x19997b,_0x1f3e7b){var _0x489df0={'agent':{},'channel':_0x44bd('0x59')};if(_0xa31433[_0x44bd('0x57')]['id']){delete _0xa31433[_0x44bd('0x57')]['id'];}_0xa31433[_0x44bd('0x57')]['read']=!![];_0xa31433[_0x44bd('0x57')][_0x44bd('0x5a')]=moment()[_0x44bd('0x5b')](_0x44bd('0x5c'));_0xa31433['body'][_0x44bd('0x5d')]=_0xa31433[_0x44bd('0x57')][_0x44bd('0x5d')]||_0xa31433[_0x44bd('0x5e')]['id'];_0x489df0[_0x44bd('0x5f')]['id']=_0xa31433['body'][_0x44bd('0x5d')];return db[_0x44bd('0x38')][_0x44bd('0x54')]({'where':{'id':_0xa31433[_0x44bd('0x51')]['id'],'UserId':null}})[_0x44bd('0x21')](handleEntityNotFound(_0x19997b,null))['then'](saveUpdates(_0xa31433['body'],null))[_0x44bd('0x21')](function(_0x2a7428){if(_0x2a7428){_0x489df0[_0x44bd('0x29')]=_0x2a7428[_0x44bd('0x60')]({'plain':!![]});return db[_0x44bd('0x61')][_0x44bd('0x54')]({'where':{'id':_0x2a7428[_0x44bd('0x62')]}});}return null;})[_0x44bd('0x21')](handleEntityNotFound(_0x19997b,null))[_0x44bd('0x21')](function(_0x2eb165){if(_0x2eb165){return _0x2eb165[_0x44bd('0x33')]({'UserId':_0xa31433[_0x44bd('0x57')]['UserId'],'read1stAt':_[_0x44bd('0x63')](_0x2eb165[_0x44bd('0x64')])?moment()[_0x44bd('0x5b')](_0x44bd('0x5c')):undefined});}return null;})[_0x44bd('0x21')](function(_0x5dd606){if(_0x5dd606){_0x489df0[_0x44bd('0x65')]=_0x5dd606[_0x44bd('0x60')]({'plain':!![]});interaction_log[_0x44bd('0x22')](_0x44bd('0x66'),_0xa31433['user']['id'],_0xa31433[_0x44bd('0x5e')]['name'],_0xa31433[_0x44bd('0x5e')][_0x44bd('0x67')],_0x489df0[_0x44bd('0x65')]['id'],_0xa31433['body']?JSON[_0x44bd('0x68')](_0xa31433[_0x44bd('0x57')]):_0x44bd('0x69'));return respondWithRpcPromise(_0x44bd('0x6a'),'acceptMessage',_0x489df0);}return null;})[_0x44bd('0x21')](function(_0x3338fd){var _0x37f164='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3338fd[_0x44bd('0x29')]['ContactId'];return db['sequelize'][_0x44bd('0x3c')](_0x37f164,{'type':db['Sequelize'][_0x44bd('0x6b')][_0x44bd('0x6c')],'raw':!![]})[_0x44bd('0x21')](function(_0x194fa9){return _0x194fa9;});})['then'](function(_0x25ba67){if(_0x25ba67){_0x489df0[_0x44bd('0x29')][_0x44bd('0x6d')]=_0x25ba67[0x0];if(!_0xa31433[_0x44bd('0x57')][_0x44bd('0x5d')])return;return db[_0x44bd('0x6e')][_0x44bd('0x54')]({'where':{'id':_0xa31433[_0x44bd('0x57')]['UserId'],'role':_0x44bd('0x5f')},'attributes':['id',_0x44bd('0x36'),_0x44bd('0x6f'),_0x44bd('0x70'),_0x44bd('0x71')],'raw':!![]});}return null;})[_0x44bd('0x21')](function(_0x267252){if(!_0x267252)return null;_0x489df0[_0x44bd('0x29')][_0x44bd('0x5f')]=_0x267252;return _0x489df0;})[_0x44bd('0x21')](function(_0x3328ce){if(_0x3328ce){if(_0xa31433[_0x44bd('0x57')][_0x44bd('0x72')]){_0x489df0[_0x44bd('0x29')]['interface']=util[_0x44bd('0x5b')](_0x44bd('0x73'),_0xa31433[_0x44bd('0x5e')][_0x44bd('0x36')]);_0x489df0[_0x44bd('0x29')][_0x44bd('0x74')]=_0x489df0[_0x44bd('0x74')];_0x489df0[_0x44bd('0x29')][_0x44bd('0x75')]=_0x44bd('0x58');return respondWithRpcPromise(_0x44bd('0x76'),_0x44bd('0x76'),{'event':_0x44bd('0x77'),'message':_0x489df0[_0x44bd('0x29')]},client9002)[_0x44bd('0x21')](function(){return _0x489df0;});}return _0x489df0;}return null;})[_0x44bd('0x21')](respondWithResult(_0x19997b,null))['catch'](handleError(_0x19997b,null));};var interaction_log=require(_0x44bd('0x16'))(_0x44bd('0x78'));exports[_0x44bd('0x32')]=function(_0x5c1163,_0xb1d122,_0x1375d3){var _0x3f5087={'agent':{},'channel':_0x44bd('0x59')};if(_0x5c1163['body']['id']){delete _0x5c1163[_0x44bd('0x57')]['id'];}_0x5c1163[_0x44bd('0x57')]['UserId']=_0x5c1163[_0x44bd('0x57')][_0x44bd('0x5d')]||_0x5c1163[_0x44bd('0x5e')]['id'];_0x3f5087[_0x44bd('0x5f')]['id']=_0x5c1163['body'][_0x44bd('0x5d')];return db[_0x44bd('0x38')][_0x44bd('0x54')]({'where':{'id':_0x5c1163[_0x44bd('0x51')]['id'],'UserId':null}})[_0x44bd('0x21')](handleEntityNotFound(_0xb1d122,null))[_0x44bd('0x21')](function(_0x2831ae){if(_0x2831ae){_0x3f5087[_0x44bd('0x29')]=_0x2831ae[_0x44bd('0x60')]({'plain':!![]});return db[_0x44bd('0x61')]['find']({'where':{'id':_0x2831ae[_0x44bd('0x62')]}});}return null;})[_0x44bd('0x21')](handleEntityNotFound(_0xb1d122,null))[_0x44bd('0x21')](function(_0x509604){if(_0x509604){_0x3f5087[_0x44bd('0x65')]=_0x509604[_0x44bd('0x60')]({'plain':!![]});interaction_log[_0x44bd('0x22')](_0x44bd('0x79'),_0x5c1163['user']['id'],_0x5c1163[_0x44bd('0x5e')]['name'],_0x5c1163[_0x44bd('0x5e')][_0x44bd('0x67')],_0x3f5087[_0x44bd('0x65')]['id'],_0x5c1163['body']?JSON[_0x44bd('0x68')](_0x5c1163['body']):'null');return respondWithRpcPromise(_0x44bd('0x7a'),'rejectMessage',_0x3f5087);}return null;})[_0x44bd('0x21')](function(_0x39aa9b){var _0x4297ff=_0x44bd('0x7b')+_0x39aa9b['message']['ContactId'];return db[_0x44bd('0x7c')][_0x44bd('0x3c')](_0x4297ff,{'type':db['Sequelize'][_0x44bd('0x6b')]['SELECT'],'raw':!![]})[_0x44bd('0x21')](function(_0x3cea4d){return _0x3cea4d;});})['then'](function(_0x775eec){if(_0x775eec){_0x3f5087[_0x44bd('0x29')][_0x44bd('0x6d')]=_0x775eec[0x0];if(!_0x5c1163[_0x44bd('0x57')][_0x44bd('0x5d')])return;return db[_0x44bd('0x6e')][_0x44bd('0x54')]({'where':{'id':_0x5c1163['body'][_0x44bd('0x5d')],'role':_0x44bd('0x5f')},'attributes':['id',_0x44bd('0x36'),_0x44bd('0x6f'),_0x44bd('0x70'),'internal'],'raw':!![]});}return null;})['then'](function(_0x45c35c){if(!_0x45c35c)return null;_0x3f5087['message'][_0x44bd('0x5f')]=_0x45c35c;return _0x3f5087;})[_0x44bd('0x21')](function(_0x2a9160){if(_0x2a9160){_0x2a9160[_0x44bd('0x29')][_0x44bd('0x7d')]=util['format']('SIP/%s',_0x5c1163[_0x44bd('0x5e')][_0x44bd('0x36')]);_0x2a9160['message'][_0x44bd('0x74')]=_0x3f5087[_0x44bd('0x74')];_0x2a9160[_0x44bd('0x29')][_0x44bd('0x75')]=_0x44bd('0x32');respondWithRpcPromise(_0x44bd('0x76'),_0x44bd('0x76'),{'event':'rejectmessage','message':_0x2a9160[_0x44bd('0x29')]},client9002);return _0x3f5087;}return null;})[_0x44bd('0x21')](respondWithResult(_0xb1d122,null))['catch'](handleError(_0xb1d122,null));};exports[_0x44bd('0x2b')]=function(_0x3ac188,_0x2d34b5,_0x4e3817){if(_0x3ac188[_0x44bd('0x57')]['id']){delete _0x3ac188[_0x44bd('0x57')]['id'];}var _0x44fd0f;return db['SmsMessage'][_0x44bd('0x54')]({'where':{'id':_0x3ac188[_0x44bd('0x51')]['id']}})['then'](handleEntityNotFound(_0x2d34b5,null))['then'](function(_0x5b3517){if(_0x5b3517){_0x44fd0f=_0x5b3517;return db[_0x44bd('0x7e')][_0x44bd('0x54')]({'where':{'id':_0x5b3517['SmsAccountId']}});}})['then'](handleEntityNotFound(_0x2d34b5,null))[_0x44bd('0x21')](function(_0x3ba54d){if(_0x3ba54d){logger[_0x44bd('0x25')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x44bd('0x2b'),_0x44bd('0x7f'),_0x3ba54d[_0x44bd('0x4a')],util[_0x44bd('0x80')](_0x3ac188[_0x44bd('0x57')],{'showHidden':![],'depth':null}));switch(_0x3ba54d['type']){case _0x44bd('0x81'):if(_0x3ac188[_0x44bd('0x57')]['MessageSid']&&_0x3ac188[_0x44bd('0x57')][_0x44bd('0x82')]===_0x44fd0f[_0x44bd('0x83')]){return _0x44fd0f[_0x44bd('0x33')]({'read':!![]});}else{logger[_0x44bd('0x27')](_0x44bd('0x84'),_0x44bd('0x2b'),_0x44bd('0x81'),util[_0x44bd('0x80')](_0x3ac188['body'],{'showHidden':![],'depth':null}));}break;case _0x44bd('0x85'):if(_0x3ac188[_0x44bd('0x57')]['MessageUUID']&&_0x3ac188[_0x44bd('0x57')]['MessageUUID']===_0x44fd0f['messageId']&&_[_0x44bd('0x86')]([_0x44bd('0x87'),'delivered'],_0x3ac188[_0x44bd('0x57')][_0x44bd('0x88')])>=0x0){return _0x44fd0f[_0x44bd('0x33')]({'read':!![]});}else{logger['error'](_0x44bd('0x84'),_0x44bd('0x2b'),_0x44bd('0x89'),util[_0x44bd('0x80')](_0x3ac188[_0x44bd('0x57')],{'showHidden':![],'depth':null}));}break;case _0x44bd('0x8a'):var _0x3a86c4=_0x3ac188[_0x44bd('0x57')]['results'][0x0];if(_0x3a86c4['status'][_0x44bd('0x8b')]===_0x44bd('0x8c')){return _0x44fd0f['update']({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x44bd('0x8a'),util[_0x44bd('0x80')](_0x3ac188[_0x44bd('0x57')],{'showHidden':![],'depth':null}));}break;}return _0x44fd0f;}})[_0x44bd('0x21')](respondWithResult(_0x2d34b5,null))[_0x44bd('0x55')](handleError(_0x2d34b5,null));};
\ No newline at end of file
index 049da3d..e28d38c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66da=['setMaxListeners','save','emit','hasOwnProperty','hook','exports','events','SmsMessage'];(function(_0x572c2d,_0x4a7369){var _0x300e02=function(_0x13d60a){while(--_0x13d60a){_0x572c2d['push'](_0x572c2d['shift']());}};_0x300e02(++_0x4a7369);}(_0x66da,0xf6));var _0xa66d=function(_0x35e92e,_0x21581b){_0x35e92e=_0x35e92e-0x0;var _0x1205a8=_0x66da[_0x35e92e];return _0x1205a8;};'use strict';var EventEmitter=require(_0xa66d('0x0'));var SmsMessage=require('../../mysqldb')['db'][_0xa66d('0x1')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xa66d('0x2')](0x0);var events={'afterCreate':_0xa66d('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x5e95fb){return function(_0xb8c1f1,_0x4bc5f6,_0x3e251f){SmsMessageEvents[_0xa66d('0x4')](_0x5e95fb+':'+_0xb8c1f1['id'],_0xb8c1f1);SmsMessageEvents[_0xa66d('0x4')](_0x5e95fb,_0xb8c1f1);_0x3e251f(null);};}for(var e in events){if(events[_0xa66d('0x5')](e)){var event=events[e];SmsMessage[_0xa66d('0x6')](e,emitEvent(event));}}module[_0xa66d('0x7')]=SmsMessageEvents;
\ No newline at end of file
+var _0xdba8=['setMaxListeners','save','update','remove','emit','hook','SmsMessage'];(function(_0x3c504b,_0x437693){var _0x2e5354=function(_0x456709){while(--_0x456709){_0x3c504b['push'](_0x3c504b['shift']());}};_0x2e5354(++_0x437693);}(_0xdba8,0x179));var _0x8dba=function(_0x2aeecd,_0x526050){_0x2aeecd=_0x2aeecd-0x0;var _0x1dd3f4=_0xdba8[_0x2aeecd];return _0x1dd3f4;};'use strict';var EventEmitter=require('events');var SmsMessage=require('../../mysqldb')['db'][_0x8dba('0x0')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x8dba('0x1')](0x0);var events={'afterCreate':_0x8dba('0x2'),'afterUpdate':_0x8dba('0x3'),'afterDestroy':_0x8dba('0x4')};function emitEvent(_0x245766){return function(_0x5b946f,_0x212cad,_0x10e835){SmsMessageEvents[_0x8dba('0x5')](_0x245766+':'+_0x5b946f['id'],_0x5b946f);SmsMessageEvents[_0x8dba('0x5')](_0x245766,_0x5b946f);_0x10e835(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsMessage[_0x8dba('0x6')](e,emitEvent(event));}}module['exports']=SmsMessageEvents;
\ No newline at end of file
index a38c0e4..d88b1a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x976a=['sms_messages','messageId','fti_sms_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','findOne','SmsInteractionId','then','update','createdAt','catch','error','SmsAccountId','type','twilio','accountSid','authToken','phone','messages','remote','/api/sms/messages/','/status?token=','token','sid','SmsMessage,\x20%s,\x20%s,\x20%s','inspect','afterCreate','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','password','smsMethod','sender','&password=','GET','split','sms','POST','user_key','session_key','total_sent','read','Missing\x20parameters:\x20username,\x20password','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','requestid','Missing\x20parameters:\x20authToken','clicksend','username','xCALLY\x20Motion','%s:%s','https://rest.clicksend.com/v3/sms/send','format','http_code','data','queued_count','head','message_id','deliveryReport','clickSend','plivo','authId','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','IBSSO\x20','Missing\x20parameters:\x20base_url','csc','crypto','apiKey','text','timestamp','keys','sort','length','createHash','digest','hex','signature=','/external/get/send.php?','id_sms','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','applicationId','Basic\x20%s','toString','base64','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','application/json','status','Token\x20not\x20received','utf8mb4','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsMessage.attributes','define','SmsMessage'];(function(_0x25e5f8,_0x4b2fc6){var _0x541adc=function(_0x1a5c56){while(--_0x1a5c56){_0x25e5f8['push'](_0x25e5f8['shift']());}};_0x541adc(++_0x4b2fc6);}(_0x976a,0xf4));var _0xa976=function(_0x1f01f4,_0x5ea9ef){_0x1f01f4=_0x1f01f4-0x0;var _0x42dcb5=_0x976a[_0x1f01f4];return _0x42dcb5;};'use strict';var _=require(_0xa976('0x0'));var util=require(_0xa976('0x1'));var logger=require(_0xa976('0x2'))('api');var moment=require(_0xa976('0x3'));var BPromise=require(_0xa976('0x4'));var rp=require(_0xa976('0x5'));var fs=require('fs');var path=require(_0xa976('0x6'));var rimraf=require(_0xa976('0x7'));var config=require(_0xa976('0x8'));var attributes=require(_0xa976('0x9'));module['exports']=function(_0x47af97,_0x48bf39){return _0x47af97[_0xa976('0xa')](_0xa976('0xb'),attributes,{'tableName':_0xa976('0xc'),'paranoid':![],'indexes':[{'name':_0xa976('0xd'),'fields':[_0xa976('0xd')]},{'name':_0xa976('0xe'),'fields':[_0xa976('0xf')],'type':_0xa976('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x332872,_0x4937a9,_0x4d22a7){var _0x4a98d9=_0x47af97[_0xa976('0x11')];var _0x2b31cb=_0x332872[_0xa976('0x12')]({'plain':!![]});if(_0x2b31cb[_0xa976('0x13')]['toLowerCase']()==='in'||_0x2b31cb[_0xa976('0x13')][_0xa976('0x14')]()===_0xa976('0x15')&&!_0x2b31cb[_0xa976('0x16')]&&!_[_0xa976('0x17')](_0x2b31cb[_0xa976('0x18')])){_0x4a98d9['SmsInteraction'][_0xa976('0x19')]({'where':{'id':_0x2b31cb[_0xa976('0x1a')]}})[_0xa976('0x1b')](function(_0x23aea8){if(_0x23aea8){_0x23aea8[_0xa976('0x1c')]({'lastMsgAt':_0x2b31cb[_0xa976('0x1d')],'lastMsgDirection':_0x2b31cb[_0xa976('0x13')][_0xa976('0x14')]()});}})[_0xa976('0x1e')](function(_0x39ccc6){console[_0xa976('0x1f')](_0x39ccc6);});}if(_0x2b31cb['direction']===_0xa976('0x15')&&!_0x2b31cb[_0xa976('0x16')]){var _0x3405ed;_0x4a98d9['SmsAccount']['find']({'where':{'id':_0x2b31cb[_0xa976('0x20')]},'raw':!![]})[_0xa976('0x1b')](function(_0x3ca2dd){_0x3405ed=_0x3ca2dd;if(_0x3405ed&&_0x3405ed[_0xa976('0x21')]){switch(_0x3405ed[_0xa976('0x21')]){case'twilio':var _0x456e0d=require(_0xa976('0x22'));if(_0x3405ed[_0xa976('0x23')]&&_0x3405ed[_0xa976('0x24')]&&_0x3405ed[_0xa976('0x25')]){var _0x4c8203=new _0x456e0d(_0x3405ed['accountSid'],_0x3405ed[_0xa976('0x24')]);_0x4c8203[_0xa976('0x26')]['create']({'body':_0x2b31cb[_0xa976('0xf')],'to':_0x2b31cb['phone'],'from':_0x3405ed['phone'],'statusCallback':_0x3405ed[_0xa976('0x27')]+_0xa976('0x28')+_0x2b31cb['id']+_0xa976('0x29')+_0x3405ed[_0xa976('0x2a')]})[_0xa976('0x1b')](function(_0xe572fe){if(_0xe572fe[_0xa976('0x2b')]){return _0x332872['update']({'messageId':_0xe572fe[_0xa976('0x2b')]});}})['catch'](function(_0x1be29a){logger[_0xa976('0x1f')](_0xa976('0x2c'),'afterCreate','twilio',util[_0xa976('0x2d')](_0x1be29a,{'showHidden':![],'depth':null}));});}else{logger[_0xa976('0x1f')](_0xa976('0x2c'),_0xa976('0x2e'),_0xa976('0x22'),_0xa976('0x2f'));}break;case _0xa976('0x30'):var _0x3072ec='https://api.skebby.it/API/v1.0/REST/';if(_0x3405ed['username']&&_0x3405ed[_0xa976('0x31')]){var _0x40f799={'recipient':[_0x2b31cb['phone']],'message':_0x2b31cb['body'],'message_type':_0x3405ed[_0xa976('0x32')]};if(_0x3405ed['smsMethod']&&_0x3405ed[_0xa976('0x32')]!=='SI'){_0x40f799[_0xa976('0x33')]=_0x3405ed[_0xa976('0x25')];}var _0x4a38e5={'url':_0x3072ec+'login?username='+_0x3405ed['username']+_0xa976('0x34')+_0x3405ed['password'],'method':_0xa976('0x35')};rp(_0x4a38e5)[_0xa976('0x1b')](function(_0x22807a){var _0x4652eb=_0x22807a[_0xa976('0x36')](';');var _0x24d6a7={'user_key':_0x4652eb[0x0],'session_key':_0x4652eb[0x1]};_0x4a38e5={'url':_0x3072ec+_0xa976('0x37'),'method':_0xa976('0x38'),'headers':{'user_key':_0x24d6a7[_0xa976('0x39')],'Session_key':_0x24d6a7[_0xa976('0x3a')]},'json':!![],'body':_0x40f799};return rp(_0x4a38e5);})[_0xa976('0x1b')](function(_0x3f5a73){if(_0x3f5a73[_0xa976('0x3b')]>=0x1){var _0x23a5b8={'messageId':_0x3f5a73['internal_order_id']};if(_0x3405ed[_0xa976('0x32')]!=='GP'||!_0x3405ed['deliveryReport']){_0x23a5b8[_0xa976('0x3c')]=!![];}return _0x332872[_0xa976('0x1c')](_0x23a5b8);}else{return logger[_0xa976('0x1f')](_0xa976('0x2c'),_0xa976('0x2e'),_0xa976('0x30'),util[_0xa976('0x2d')](_0x3f5a73,{'showHidden':![],'depth':null}));}})[_0xa976('0x1e')](function(_0x11ed29){return logger[_0xa976('0x1f')](_0xa976('0x2c'),_0xa976('0x2e'),_0xa976('0x30'),util['inspect'](_0x11ed29,{'showHidden':![],'depth':null}));});}else{logger[_0xa976('0x1f')](_0xa976('0x2c'),_0xa976('0x2e'),'skebby',_0xa976('0x3d'));}break;case _0xa976('0x3e'):if(_0x3405ed[_0xa976('0x24')]){var _0x1f1d10={'recipient':_0x2b31cb[_0xa976('0x25')],'message':_0x2b31cb['body'],'sender':_0x3405ed[_0xa976('0x3f')]||_0x3405ed['phone'],'authorization':_0x3405ed[_0xa976('0x24')]};var _0x4937a9={'method':'POST','uri':_0xa976('0x40'),'body':_0x1f1d10,'json':!![]};rp(_0x4937a9)[_0xa976('0x1b')](function(_0x558c81){var _0x3b5418={'messageId':_0x558c81[_0xa976('0x41')]};if(!_0x3405ed['deliveryReport']){_0x3b5418[_0xa976('0x3c')]=!![];}return _0x332872['update'](_0x3b5418);})[_0xa976('0x1e')](function(_0x152109){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xa976('0x2e'),_0xa976('0x3e'),util[_0xa976('0x2d')](_0x152109,{'showHidden':![],'depth':null}));});}else{logger[_0xa976('0x1f')](_0xa976('0x2c'),_0xa976('0x2e'),_0xa976('0x3e'),_0xa976('0x42'));}break;case _0xa976('0x43'):if(_0x3405ed[_0xa976('0x44')]&&_0x3405ed[_0xa976('0x31')]){var _0x1f1d10={'messages':[{'source':_0xa976('0x45'),'to':_0x2b31cb[_0xa976('0x25')],'body':_0x2b31cb[_0xa976('0xf')],'from':_0x3405ed[_0xa976('0x3f')]||_0x3405ed[_0xa976('0x25')]}]};var _0x4c319b=util['format'](_0xa976('0x46'),_0x3405ed[_0xa976('0x44')],_0x3405ed[_0xa976('0x31')]);var _0x4937a9={'method':_0xa976('0x38'),'uri':_0xa976('0x47'),'body':_0x1f1d10,'headers':{'Authorization':util[_0xa976('0x48')]('Basic\x20%s',new Buffer(_0x4c319b)['toString']('base64'))},'json':!![]};rp(_0x4937a9)[_0xa976('0x1b')](function(_0x29170f){if(_0x29170f['http_code']>=0xc8&&_0x29170f[_0xa976('0x49')]<=0xce){if(_0x29170f[_0xa976('0x4a')]&&_0x29170f[_0xa976('0x4a')][_0xa976('0x4b')]>0x0){var _0x325399=_[_0xa976('0x4c')](_0x29170f[_0xa976('0x4a')]['messages']);var _0x5b9f19={'messageId':_0x325399[_0xa976('0x4d')]};if(!_0x3405ed[_0xa976('0x4e')]){_0x5b9f19[_0xa976('0x3c')]=!![];}return _0x332872['update'](_0x5b9f19);}else{logger[_0xa976('0x1f')](_0xa976('0x2c'),_0xa976('0x2e'),_0xa976('0x4f'),util['inspect'](_0x29170f,{'showHidden':![],'depth':null}));}}else{logger[_0xa976('0x1f')](_0xa976('0x2c'),'afterCreate',_0xa976('0x4f'),util['inspect'](_0x29170f,{'showHidden':![],'depth':null}));}})[_0xa976('0x1e')](function(_0x40ed63){logger[_0xa976('0x1f')](_0xa976('0x2c'),'afterCreate',_0xa976('0x4f'),util[_0xa976('0x2d')](_0x40ed63,{'showHidden':![],'depth':null}));});}else{logger[_0xa976('0x1f')](_0xa976('0x2c'),'afterCreate',_0xa976('0x4f'),'Missing\x20parameters:\x20username,\x20password');}break;case _0xa976('0x50'):if(_0x3405ed[_0xa976('0x51')]&&_0x3405ed[_0xa976('0x24')]){var _0x1f1d10={'dst':_0x2b31cb[_0xa976('0x25')],'text':_0x2b31cb[_0xa976('0xf')],'src':_0x3405ed[_0xa976('0x3f')]||_0x3405ed[_0xa976('0x25')],'url':_0x3405ed[_0xa976('0x27')]+_0xa976('0x28')+_0x2b31cb['id']+_0xa976('0x29')+_0x3405ed[_0xa976('0x2a')]};var _0x4c319b=util[_0xa976('0x48')](_0xa976('0x46'),_0x3405ed[_0xa976('0x51')],_0x3405ed[_0xa976('0x24')]);var _0x4937a9={'method':'POST','uri':util[_0xa976('0x48')](_0xa976('0x52'),_0x3405ed[_0xa976('0x51')]),'body':_0x1f1d10,'headers':{'Authorization':util[_0xa976('0x48')]('Basic\x20%s',new Buffer(_0x4c319b)['toString']('base64'))},'json':!![]};rp(_0x4937a9)['then'](function(_0xf5a5b0){var _0x384340={'messageId':_0xf5a5b0[_0xa976('0x53')][0x0]};return _0x332872['update'](_0x384340);})[_0xa976('0x1e')](function(_0x52032c){logger[_0xa976('0x1f')](_0xa976('0x2c'),_0xa976('0x2e'),_0xa976('0x50'),util['inspect'](_0x52032c,{'showHidden':![],'depth':null}));});}else{logger[_0xa976('0x1f')](_0xa976('0x2c'),_0xa976('0x2e'),_0xa976('0x50'),_0xa976('0x54'));}break;case _0xa976('0x55'):if(_0x3405ed['username']&&_0x3405ed[_0xa976('0x31')]){if(_0x3405ed[_0xa976('0x56')]){var _0x24076c={'method':'POST','uri':_0x3405ed[_0xa976('0x56')]+_0xa976('0x57'),'body':{'username':_0x3405ed[_0xa976('0x44')],'password':_0x3405ed[_0xa976('0x31')]},'json':!![]};return rp(_0x24076c)[_0xa976('0x1b')](function(_0xeb9f7d){var _0x1c714c={'method':_0xa976('0x38'),'uri':_0x3405ed[_0xa976('0x56')]+_0xa976('0x58'),'body':{'messages':[{'from':_0x3405ed['phone'],'destinations':[{'to':_0x2b31cb[_0xa976('0x25')]}],'text':_0x2b31cb[_0xa976('0xf')],'notifyUrl':_0x3405ed['remote']+_0xa976('0x28')+_0x2b31cb['id']+'/status?token='+_0x3405ed['token'],'notifyContentType':'application/json','callbackData':_0x3405ed[_0xa976('0x25')]+';'+_0x2b31cb['body']}]},'headers':{'Authorization':_0xa976('0x59')+_0xeb9f7d[_0xa976('0x2a')]},'json':!![]};return rp(_0x1c714c)[_0xa976('0x1b')](function(_0x50ae30){if(_0x50ae30[_0xa976('0x26')]){var _0x4b4c69={'messageId':_0x50ae30[_0xa976('0x26')][0x0][_0xa976('0xd')]};if(!_0x3405ed[_0xa976('0x4e')]){_0x4b4c69[_0xa976('0x3c')]=!![];}return _0x332872[_0xa976('0x1c')](_0x4b4c69);}else{return logger['error'](_0xa976('0x2c'),'afterCreate','infobip',util[_0xa976('0x2d')](_0x50ae30,{'showHidden':![],'depth':null}));}});})[_0xa976('0x1e')](function(_0x3c13b9){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xa976('0x55'),util[_0xa976('0x2d')](_0x3c13b9,{'showHidden':![],'depth':null}));});}else{logger[_0xa976('0x1f')](_0xa976('0x2c'),_0xa976('0x2e'),'infobip',_0xa976('0x5a'));}}else{logger[_0xa976('0x1f')](_0xa976('0x2c'),_0xa976('0x2e'),_0xa976('0x55'),_0xa976('0x3d'));}break;case _0xa976('0x5b'):var _0x57313b=require(_0xa976('0x5c'));if(_0x3405ed[_0xa976('0x5d')]){var _0x2223b0={};_0x2223b0['login']=_0x3405ed[_0xa976('0x44')];_0x2223b0[_0xa976('0x25')]=_0x2b31cb[_0xa976('0x25')];_0x2223b0[_0xa976('0x33')]=_0x3405ed['phone'];_0x2223b0[_0xa976('0x5e')]=_0x2b31cb[_0xa976('0xf')];_0x2223b0[_0xa976('0x5f')]=+new Date();var _0x4efe26='';var _0xcda8fc='';var _0x519cc3=Object[_0xa976('0x60')](_0x2223b0);_0x519cc3[_0xa976('0x61')]();for(var _0x1422a3=0x0;_0x1422a3<_0x519cc3[_0xa976('0x62')];_0x1422a3++){if(_0x4efe26!=''){_0x4efe26+='&';}_0x4efe26+=_0x519cc3[_0x1422a3]+'='+encodeURIComponent(_0x2223b0[_0x519cc3[_0x1422a3]]);_0xcda8fc+=_0x2223b0[_0x519cc3[_0x1422a3]];}_0xcda8fc+=_0x3405ed[_0xa976('0x5d')];_0xcda8fc=_0x57313b[_0xa976('0x63')]('md5')[_0xa976('0x1c')](_0xcda8fc)[_0xa976('0x64')](_0xa976('0x65'));if(_0x4efe26!==''){_0x4efe26+='&';}_0x4efe26+=_0xa976('0x66')+_0xcda8fc;var _0x4a38e5={'method':'GET','uri':_0x3405ed[_0xa976('0x56')]+_0xa976('0x67')+_0x4efe26,'json':!![]};return rp(_0x4a38e5)[_0xa976('0x1b')](function(_0x3e8347){var _0x3a9657=Object[_0xa976('0x60')](_0x3e8347);if(_0x3e8347[_0x3a9657[0x0]]['error']&&parseInt(_0x3e8347[_0x3a9657[0x0]][_0xa976('0x1f')])===0x0){var _0x430bd3={'messageId':_0x3e8347[_0x3a9657[0x0]][_0xa976('0x68')]};if(!_0x3405ed[_0xa976('0x4e')]){_0x430bd3[_0xa976('0x3c')]=!![];}return _0x332872[_0xa976('0x1c')](_0x430bd3);}else{return logger[_0xa976('0x1f')](_0xa976('0x2c'),'afterCreate','csc',util[_0xa976('0x2d')](_0x3e8347[_0xa976('0x1f')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x268a78){return logger['error'](_0xa976('0x2c'),_0xa976('0x2e'),'csc',util['inspect'](_0x268a78,{'showHidden':![],'depth':null}));});}else{logger[_0xa976('0x1f')](_0xa976('0x2c'),_0xa976('0x2e'),_0xa976('0x5b'),'Missing\x20parameters:\x20apiKey');}break;case _0xa976('0x69'):if(_0x3405ed[_0xa976('0x5d')]){var _0x5ba20d={'method':_0xa976('0x38'),'uri':_0xa976('0x6a'),'headers':{'Authorization':_0x3405ed['apiKey']},'body':{'content':_0x2b31cb[_0xa976('0xf')],'to':[_0x2b31cb[_0xa976('0x25')]],'from':_0x3405ed['phone'],'binary':![],'clientMessageId':_0xa976('0x6b'),'charset':_0xa976('0x6c')},'json':!![]};rp(_0x5ba20d)['then'](function(_0x5697fb){if(!_0x5697fb[_0xa976('0x1f')]){var _0x123ce0={'messageId':_0x5697fb[_0xa976('0x26')][0x0][_0xa976('0x6d')]};if(!_0x3405ed[_0xa976('0x4e')]){_0x123ce0[_0xa976('0x3c')]=!![];}return _0x332872[_0xa976('0x1c')](_0x123ce0);}else{return logger[_0xa976('0x1f')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xa976('0x2e'),_0xa976('0x69'),util[_0xa976('0x2d')](_0x5697fb['error'],{'showHidden':![],'depth':null}));}})[_0xa976('0x1e')](function(_0x5f118b){return logger[_0xa976('0x1f')](_0xa976('0x2c'),_0xa976('0x2e'),'clickatell',util[_0xa976('0x2d')](_0x5f118b,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xa976('0x2c'),_0xa976('0x2e'),_0xa976('0x69'),'Missing\x20parameters:\x20apiKey');}break;case _0xa976('0x6e'):if(_0x3405ed[_0xa976('0x44')]&&_0x3405ed['password']){var _0x4c319b=util['format']('%s:%s',_0x3405ed[_0xa976('0x44')],_0x3405ed[_0xa976('0x31')]);var _0x4937a9={'method':_0xa976('0x38'),'uri':_0xa976('0x6f')+_0x3405ed[_0xa976('0x70')]+_0xa976('0x71'),'body':{'to':[_0x2b31cb[_0xa976('0x25')]],'text':_0x2b31cb[_0xa976('0xf')],'from':_0x3405ed[_0xa976('0x25')],'applicationId':_0x3405ed[_0xa976('0x72')]},'headers':{'Authorization':util[_0xa976('0x48')](_0xa976('0x73'),new Buffer(_0x4c319b)[_0xa976('0x74')](_0xa976('0x75')))},'json':!![]};rp(_0x4937a9)[_0xa976('0x1b')](function(_0x494784){if(_0x494784['id']){var _0x6d46cd={'messageId':_0x494784['id']};return _0x332872['update'](_0x6d46cd);}else{logger['error'](_0xa976('0x2c'),_0xa976('0x2e'),_0xa976('0x6e'),util[_0xa976('0x2d')](_0x494784,{'showHidden':![],'depth':null}));}})[_0xa976('0x1e')](function(_0x3492a0){logger[_0xa976('0x1f')](_0xa976('0x2c'),_0xa976('0x2e'),_0xa976('0x6e'),util['inspect'](_0x3492a0,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xa976('0x2c'),_0xa976('0x2e'),'bandwidth',_0xa976('0x3d'));}break;case _0xa976('0x76'):if(_0x3405ed[_0xa976('0x5d')]){var _0x2adb56={};var _0x4a38e5={'method':_0xa976('0x38'),'uri':_0xa976('0x77'),'headers':{'Authorization':_0xa976('0x78')+_0x3405ed[_0xa976('0x5d')],'Content-Type':'application/json'},'body':{'from':_0x3405ed[_0xa976('0x25')],'to':_0x2b31cb[_0xa976('0x25')],'text':_0x2b31cb[_0xa976('0xf')]},'json':!![]};return rp(_0x4a38e5)[_0xa976('0x1b')](function(_0x18b894){if(_0x18b894[_0xa976('0x79')]==0xca){_0x2adb56[_0xa976('0x7a')]=_0x18b894;var _0x9cdde4={'method':'POST','uri':_0xa976('0x7b'),'headers':{'Authorization':_0xa976('0x78')+_0x3405ed[_0xa976('0x5d')],'Content-Type':_0xa976('0x7c')},'body':{'refid':_0x2adb56[_0xa976('0x7a')]['refid']},'json':!![]};return rp(_0x9cdde4)[_0xa976('0x1b')](function(_0x217ee9){_0x2adb56[_0xa976('0x7d')]=_0x217ee9;var _0x46e8af={'messageId':_0x2adb56[_0xa976('0x7a')]['refid'],'read':!![]};return _0x332872[_0xa976('0x1c')](_0x46e8af);});}else{return logger[_0xa976('0x1f')](_0xa976('0x2c'),'afterCreate',_0xa976('0x76'),util[_0xa976('0x2d')](_0x18b894,{'showHidden':![],'depth':null}));}})[_0xa976('0x1e')](function(_0x5de0da){return logger[_0xa976('0x1f')](_0xa976('0x2c'),_0xa976('0x2e'),_0xa976('0x76'),util[_0xa976('0x2d')](_0x5de0da,{'showHidden':![],'depth':null}));});}else{return logger[_0xa976('0x1f')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xa976('0x2e'),_0xa976('0x76'),_0xa976('0x7e'));}break;}}})['finally'](function(){_0x4d22a7();});}else{_0x4d22a7();}}},'charset':_0xa976('0x7f'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x9990=['./smsMessage.attributes','exports','define','SmsMessage','sms_messages','messageId','fti_sms_messages','body','models','get','toLowerCase','out','secret','isNil','UserId','findOne','SmsInteractionId','then','update','direction','catch','error','SmsAccount','SmsAccountId','type','twilio','accountSid','authToken','phone','messages','remote','/api/sms/messages/','/status?token=','token','SmsMessage,\x20%s,\x20%s,\x20%s','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','login?username=','GET','split','sms','user_key','session_key','total_sent','deliveryReport','read','afterCreate','connectel','senderString','POST','requestid','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','%s:%s','https://rest.clicksend.com/v3/sms/send','format','Basic\x20%s','toString','base64','http_code','queued_count','head','data','message_id','clickSend','Missing\x20parameters:\x20username,\x20password','plivo','authId','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','Missing\x20parameters:\x20base_url','csc','crypto','login','sender','text','timestamp','sort','length','apiKey','createHash','hex','signature=','/external/get/send.php?','keys','id_sms','Missing\x20parameters:\x20apiKey','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','clickatell','accountId','applicationId','bandwidth','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','status','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x4f8d16,_0x3d5853){var _0x3bb7b1=function(_0x185642){while(--_0x185642){_0x4f8d16['push'](_0x4f8d16['shift']());}};_0x3bb7b1(++_0x3d5853);}(_0x9990,0xf6));var _0x0999=function(_0xeb9f69,_0x34d75e){_0xeb9f69=_0xeb9f69-0x0;var _0x4a8d87=_0x9990[_0xeb9f69];return _0x4a8d87;};'use strict';var _=require('lodash');var util=require(_0x0999('0x0'));var logger=require(_0x0999('0x1'))(_0x0999('0x2'));var moment=require(_0x0999('0x3'));var BPromise=require(_0x0999('0x4'));var rp=require(_0x0999('0x5'));var fs=require('fs');var path=require(_0x0999('0x6'));var rimraf=require(_0x0999('0x7'));var config=require('../../config/environment');var attributes=require(_0x0999('0x8'));module[_0x0999('0x9')]=function(_0x45d3e0,_0x4c606f){return _0x45d3e0[_0x0999('0xa')](_0x0999('0xb'),attributes,{'tableName':_0x0999('0xc'),'paranoid':![],'indexes':[{'name':_0x0999('0xd'),'fields':[_0x0999('0xd')]},{'name':_0x0999('0xe'),'fields':[_0x0999('0xf')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0xf6a77f,_0x3073d3,_0x161b44){var _0x5f1333=_0x45d3e0[_0x0999('0x10')];var _0x471d9c=_0xf6a77f[_0x0999('0x11')]({'plain':!![]});if(_0x471d9c['direction'][_0x0999('0x12')]()==='in'||_0x471d9c['direction'][_0x0999('0x12')]()===_0x0999('0x13')&&!_0x471d9c[_0x0999('0x14')]&&!_[_0x0999('0x15')](_0x471d9c[_0x0999('0x16')])){_0x5f1333['SmsInteraction'][_0x0999('0x17')]({'where':{'id':_0x471d9c[_0x0999('0x18')]}})[_0x0999('0x19')](function(_0x4011bf){if(_0x4011bf){_0x4011bf[_0x0999('0x1a')]({'lastMsgAt':_0x471d9c['createdAt'],'lastMsgDirection':_0x471d9c[_0x0999('0x1b')][_0x0999('0x12')]()});}})[_0x0999('0x1c')](function(_0x4e4e53){console[_0x0999('0x1d')](_0x4e4e53);});}if(_0x471d9c[_0x0999('0x1b')]===_0x0999('0x13')&&!_0x471d9c['secret']){var _0xa82828;_0x5f1333[_0x0999('0x1e')]['find']({'where':{'id':_0x471d9c[_0x0999('0x1f')]},'raw':!![]})[_0x0999('0x19')](function(_0x56373e){_0xa82828=_0x56373e;if(_0xa82828&&_0xa82828[_0x0999('0x20')]){switch(_0xa82828[_0x0999('0x20')]){case _0x0999('0x21'):var _0x470c84=require(_0x0999('0x21'));if(_0xa82828[_0x0999('0x22')]&&_0xa82828[_0x0999('0x23')]&&_0xa82828[_0x0999('0x24')]){var _0x8a5ef6=new _0x470c84(_0xa82828['accountSid'],_0xa82828[_0x0999('0x23')]);_0x8a5ef6[_0x0999('0x25')]['create']({'body':_0x471d9c['body'],'to':_0x471d9c[_0x0999('0x24')],'from':_0xa82828[_0x0999('0x24')],'statusCallback':_0xa82828[_0x0999('0x26')]+_0x0999('0x27')+_0x471d9c['id']+_0x0999('0x28')+_0xa82828[_0x0999('0x29')]})['then'](function(_0x20ba88){if(_0x20ba88['sid']){return _0xf6a77f[_0x0999('0x1a')]({'messageId':_0x20ba88['sid']});}})[_0x0999('0x1c')](function(_0x106669){logger[_0x0999('0x1d')](_0x0999('0x2a'),'afterCreate','twilio',util[_0x0999('0x2b')](_0x106669,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x0999('0x2a'),'afterCreate',_0x0999('0x21'),_0x0999('0x2c'));}break;case _0x0999('0x2d'):var _0xf63dc7=_0x0999('0x2e');if(_0xa82828[_0x0999('0x2f')]&&_0xa82828[_0x0999('0x30')]){var _0x5c9fb4={'recipient':[_0x471d9c[_0x0999('0x24')]],'message':_0x471d9c[_0x0999('0xf')],'message_type':_0xa82828[_0x0999('0x31')]};if(_0xa82828[_0x0999('0x31')]&&_0xa82828[_0x0999('0x31')]!=='SI'){_0x5c9fb4['sender']=_0xa82828[_0x0999('0x24')];}var _0x505994={'url':_0xf63dc7+_0x0999('0x32')+_0xa82828['username']+'&password='+_0xa82828[_0x0999('0x30')],'method':_0x0999('0x33')};rp(_0x505994)['then'](function(_0xdf8b8b){var _0x153f0c=_0xdf8b8b[_0x0999('0x34')](';');var _0x4ede8e={'user_key':_0x153f0c[0x0],'session_key':_0x153f0c[0x1]};_0x505994={'url':_0xf63dc7+_0x0999('0x35'),'method':'POST','headers':{'user_key':_0x4ede8e[_0x0999('0x36')],'Session_key':_0x4ede8e[_0x0999('0x37')]},'json':!![],'body':_0x5c9fb4};return rp(_0x505994);})[_0x0999('0x19')](function(_0x45b1ee){if(_0x45b1ee[_0x0999('0x38')]>=0x1){var _0x53f08d={'messageId':_0x45b1ee['internal_order_id']};if(_0xa82828[_0x0999('0x31')]!=='GP'||!_0xa82828[_0x0999('0x39')]){_0x53f08d[_0x0999('0x3a')]=!![];}return _0xf6a77f[_0x0999('0x1a')](_0x53f08d);}else{return logger['error'](_0x0999('0x2a'),_0x0999('0x3b'),'skebby',util[_0x0999('0x2b')](_0x45b1ee,{'showHidden':![],'depth':null}));}})[_0x0999('0x1c')](function(_0x4611f9){return logger[_0x0999('0x1d')](_0x0999('0x2a'),_0x0999('0x3b'),'skebby',util[_0x0999('0x2b')](_0x4611f9,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x0999('0x2a'),_0x0999('0x3b'),_0x0999('0x2d'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x0999('0x3c'):if(_0xa82828[_0x0999('0x23')]){var _0x4e3bd3={'recipient':_0x471d9c[_0x0999('0x24')],'message':_0x471d9c[_0x0999('0xf')],'sender':_0xa82828[_0x0999('0x3d')]||_0xa82828[_0x0999('0x24')],'authorization':_0xa82828[_0x0999('0x23')]};var _0x3073d3={'method':_0x0999('0x3e'),'uri':'https://smsapi.connectel.se/api/v2/send/','body':_0x4e3bd3,'json':!![]};rp(_0x3073d3)[_0x0999('0x19')](function(_0x22da38){var _0x557358={'messageId':_0x22da38[_0x0999('0x3f')]};if(!_0xa82828[_0x0999('0x39')]){_0x557358[_0x0999('0x3a')]=!![];}return _0xf6a77f[_0x0999('0x1a')](_0x557358);})[_0x0999('0x1c')](function(_0x47ab00){logger[_0x0999('0x1d')](_0x0999('0x2a'),_0x0999('0x3b'),'connectel',util[_0x0999('0x2b')](_0x47ab00,{'showHidden':![],'depth':null}));});}else{logger[_0x0999('0x1d')](_0x0999('0x2a'),_0x0999('0x3b'),_0x0999('0x3c'),_0x0999('0x40'));}break;case _0x0999('0x41'):if(_0xa82828[_0x0999('0x2f')]&&_0xa82828[_0x0999('0x30')]){var _0x4e3bd3={'messages':[{'source':_0x0999('0x42'),'to':_0x471d9c[_0x0999('0x24')],'body':_0x471d9c['body'],'from':_0xa82828[_0x0999('0x3d')]||_0xa82828[_0x0999('0x24')]}]};var _0x4d3d7b=util['format'](_0x0999('0x43'),_0xa82828['username'],_0xa82828['password']);var _0x3073d3={'method':_0x0999('0x3e'),'uri':_0x0999('0x44'),'body':_0x4e3bd3,'headers':{'Authorization':util[_0x0999('0x45')](_0x0999('0x46'),new Buffer(_0x4d3d7b)[_0x0999('0x47')](_0x0999('0x48')))},'json':!![]};rp(_0x3073d3)[_0x0999('0x19')](function(_0x336c19){if(_0x336c19[_0x0999('0x49')]>=0xc8&&_0x336c19[_0x0999('0x49')]<=0xce){if(_0x336c19['data']&&_0x336c19['data'][_0x0999('0x4a')]>0x0){var _0x185fbe=_[_0x0999('0x4b')](_0x336c19[_0x0999('0x4c')][_0x0999('0x25')]);var _0xd6a019={'messageId':_0x185fbe[_0x0999('0x4d')]};if(!_0xa82828[_0x0999('0x39')]){_0xd6a019['read']=!![];}return _0xf6a77f['update'](_0xd6a019);}else{logger[_0x0999('0x1d')](_0x0999('0x2a'),'afterCreate',_0x0999('0x4e'),util['inspect'](_0x336c19,{'showHidden':![],'depth':null}));}}else{logger['error'](_0x0999('0x2a'),_0x0999('0x3b'),_0x0999('0x4e'),util[_0x0999('0x2b')](_0x336c19,{'showHidden':![],'depth':null}));}})[_0x0999('0x1c')](function(_0x6ae41b){logger[_0x0999('0x1d')](_0x0999('0x2a'),_0x0999('0x3b'),'clickSend',util[_0x0999('0x2b')](_0x6ae41b,{'showHidden':![],'depth':null}));});}else{logger[_0x0999('0x1d')](_0x0999('0x2a'),_0x0999('0x3b'),_0x0999('0x4e'),_0x0999('0x4f'));}break;case _0x0999('0x50'):if(_0xa82828[_0x0999('0x51')]&&_0xa82828[_0x0999('0x23')]){var _0x4e3bd3={'dst':_0x471d9c[_0x0999('0x24')],'text':_0x471d9c['body'],'src':_0xa82828[_0x0999('0x3d')]||_0xa82828[_0x0999('0x24')],'url':_0xa82828[_0x0999('0x26')]+_0x0999('0x27')+_0x471d9c['id']+_0x0999('0x28')+_0xa82828['token']};var _0x4d3d7b=util[_0x0999('0x45')](_0x0999('0x43'),_0xa82828[_0x0999('0x51')],_0xa82828[_0x0999('0x23')]);var _0x3073d3={'method':'POST','uri':util[_0x0999('0x45')](_0x0999('0x52'),_0xa82828[_0x0999('0x51')]),'body':_0x4e3bd3,'headers':{'Authorization':util[_0x0999('0x45')](_0x0999('0x46'),new Buffer(_0x4d3d7b)[_0x0999('0x47')](_0x0999('0x48')))},'json':!![]};rp(_0x3073d3)['then'](function(_0x10829d){var _0x1df925={'messageId':_0x10829d[_0x0999('0x53')][0x0]};return _0xf6a77f[_0x0999('0x1a')](_0x1df925);})['catch'](function(_0x2a1769){logger[_0x0999('0x1d')](_0x0999('0x2a'),'afterCreate',_0x0999('0x50'),util[_0x0999('0x2b')](_0x2a1769,{'showHidden':![],'depth':null}));});}else{logger[_0x0999('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x0999('0x3b'),_0x0999('0x50'),_0x0999('0x54'));}break;case _0x0999('0x55'):if(_0xa82828[_0x0999('0x2f')]&&_0xa82828[_0x0999('0x30')]){if(_0xa82828[_0x0999('0x56')]){var _0x1607f1={'method':_0x0999('0x3e'),'uri':_0xa82828['baseUrl']+_0x0999('0x57'),'body':{'username':_0xa82828[_0x0999('0x2f')],'password':_0xa82828[_0x0999('0x30')]},'json':!![]};return rp(_0x1607f1)[_0x0999('0x19')](function(_0x239ee5){var _0x4d86d4={'method':'POST','uri':_0xa82828[_0x0999('0x56')]+_0x0999('0x58'),'body':{'messages':[{'from':_0xa82828['phone'],'destinations':[{'to':_0x471d9c['phone']}],'text':_0x471d9c['body'],'notifyUrl':_0xa82828[_0x0999('0x26')]+_0x0999('0x27')+_0x471d9c['id']+_0x0999('0x28')+_0xa82828[_0x0999('0x29')],'notifyContentType':_0x0999('0x59'),'callbackData':_0xa82828[_0x0999('0x24')]+';'+_0x471d9c[_0x0999('0xf')]}]},'headers':{'Authorization':_0x0999('0x5a')+_0x239ee5[_0x0999('0x29')]},'json':!![]};return rp(_0x4d86d4)['then'](function(_0x12e759){if(_0x12e759['messages']){var _0x2a3f46={'messageId':_0x12e759[_0x0999('0x25')][0x0][_0x0999('0xd')]};if(!_0xa82828[_0x0999('0x39')]){_0x2a3f46[_0x0999('0x3a')]=!![];}return _0xf6a77f['update'](_0x2a3f46);}else{return logger['error'](_0x0999('0x2a'),_0x0999('0x3b'),_0x0999('0x55'),util[_0x0999('0x2b')](_0x12e759,{'showHidden':![],'depth':null}));}});})[_0x0999('0x1c')](function(_0x495047){return logger[_0x0999('0x1d')](_0x0999('0x2a'),_0x0999('0x3b'),_0x0999('0x55'),util[_0x0999('0x2b')](_0x495047,{'showHidden':![],'depth':null}));});}else{logger[_0x0999('0x1d')](_0x0999('0x2a'),_0x0999('0x3b'),_0x0999('0x55'),_0x0999('0x5b'));}}else{logger['error'](_0x0999('0x2a'),_0x0999('0x3b'),'infobip',_0x0999('0x4f'));}break;case _0x0999('0x5c'):var _0x2b85a5=require(_0x0999('0x5d'));if(_0xa82828['apiKey']){var _0x30f751={};_0x30f751[_0x0999('0x5e')]=_0xa82828[_0x0999('0x2f')];_0x30f751['phone']=_0x471d9c['phone'];_0x30f751[_0x0999('0x5f')]=_0xa82828[_0x0999('0x24')];_0x30f751[_0x0999('0x60')]=_0x471d9c['body'];_0x30f751[_0x0999('0x61')]=+new Date();var _0xbe138f='';var _0x353a8f='';var _0x49a856=Object['keys'](_0x30f751);_0x49a856[_0x0999('0x62')]();for(var _0x9f943=0x0;_0x9f943<_0x49a856[_0x0999('0x63')];_0x9f943++){if(_0xbe138f!=''){_0xbe138f+='&';}_0xbe138f+=_0x49a856[_0x9f943]+'='+encodeURIComponent(_0x30f751[_0x49a856[_0x9f943]]);_0x353a8f+=_0x30f751[_0x49a856[_0x9f943]];}_0x353a8f+=_0xa82828[_0x0999('0x64')];_0x353a8f=_0x2b85a5[_0x0999('0x65')]('md5')['update'](_0x353a8f)['digest'](_0x0999('0x66'));if(_0xbe138f!==''){_0xbe138f+='&';}_0xbe138f+=_0x0999('0x67')+_0x353a8f;var _0x505994={'method':'GET','uri':_0xa82828[_0x0999('0x56')]+_0x0999('0x68')+_0xbe138f,'json':!![]};return rp(_0x505994)[_0x0999('0x19')](function(_0x4e57e2){var _0x310508=Object[_0x0999('0x69')](_0x4e57e2);if(_0x4e57e2[_0x310508[0x0]][_0x0999('0x1d')]&&parseInt(_0x4e57e2[_0x310508[0x0]]['error'])===0x0){var _0x50753e={'messageId':_0x4e57e2[_0x310508[0x0]][_0x0999('0x6a')]};if(!_0xa82828['deliveryReport']){_0x50753e[_0x0999('0x3a')]=!![];}return _0xf6a77f['update'](_0x50753e);}else{return logger[_0x0999('0x1d')](_0x0999('0x2a'),_0x0999('0x3b'),'csc',util[_0x0999('0x2b')](_0x4e57e2['error'],{'showHidden':![],'depth':null}));}})[_0x0999('0x1c')](function(_0x3a2e00){return logger[_0x0999('0x1d')](_0x0999('0x2a'),_0x0999('0x3b'),_0x0999('0x5c'),util[_0x0999('0x2b')](_0x3a2e00,{'showHidden':![],'depth':null}));});}else{logger[_0x0999('0x1d')](_0x0999('0x2a'),_0x0999('0x3b'),_0x0999('0x5c'),_0x0999('0x6b'));}break;case'clickatell':if(_0xa82828[_0x0999('0x64')]){var _0x27fca9={'method':'POST','uri':_0x0999('0x6c'),'headers':{'Authorization':_0xa82828[_0x0999('0x64')]},'body':{'content':_0x471d9c[_0x0999('0xf')],'to':[_0x471d9c[_0x0999('0x24')]],'from':_0xa82828[_0x0999('0x24')],'binary':![],'clientMessageId':_0x0999('0x6d'),'charset':_0x0999('0x6e')},'json':!![]};rp(_0x27fca9)[_0x0999('0x19')](function(_0x344675){if(!_0x344675['error']){var _0x3e866d={'messageId':_0x344675['messages'][0x0][_0x0999('0x6f')]};if(!_0xa82828[_0x0999('0x39')]){_0x3e866d[_0x0999('0x3a')]=!![];}return _0xf6a77f[_0x0999('0x1a')](_0x3e866d);}else{return logger[_0x0999('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x0999('0x3b'),'clickatell',util[_0x0999('0x2b')](_0x344675[_0x0999('0x1d')],{'showHidden':![],'depth':null}));}})[_0x0999('0x1c')](function(_0x46fabd){return logger[_0x0999('0x1d')](_0x0999('0x2a'),'afterCreate','clickatell',util[_0x0999('0x2b')](_0x46fabd,{'showHidden':![],'depth':null}));});}else{logger[_0x0999('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x0999('0x3b'),_0x0999('0x70'),_0x0999('0x6b'));}break;case'bandwidth':if(_0xa82828[_0x0999('0x2f')]&&_0xa82828[_0x0999('0x30')]){var _0x4d3d7b=util[_0x0999('0x45')](_0x0999('0x43'),_0xa82828['username'],_0xa82828[_0x0999('0x30')]);var _0x3073d3={'method':_0x0999('0x3e'),'uri':'https://messaging.bandwidth.com/api/v2/users/'+_0xa82828[_0x0999('0x71')]+'/messages','body':{'to':[_0x471d9c['phone']],'text':_0x471d9c[_0x0999('0xf')],'from':_0xa82828['phone'],'applicationId':_0xa82828[_0x0999('0x72')]},'headers':{'Authorization':util[_0x0999('0x45')](_0x0999('0x46'),new Buffer(_0x4d3d7b)[_0x0999('0x47')](_0x0999('0x48')))},'json':!![]};rp(_0x3073d3)[_0x0999('0x19')](function(_0x776b81){if(_0x776b81['id']){var _0x5d4de3={'messageId':_0x776b81['id']};return _0xf6a77f[_0x0999('0x1a')](_0x5d4de3);}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x0999('0x3b'),_0x0999('0x73'),util[_0x0999('0x2b')](_0x776b81,{'showHidden':![],'depth':null}));}})['catch'](function(_0x57ba52){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x0999('0x3b'),_0x0999('0x73'),util[_0x0999('0x2b')](_0x57ba52,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x0999('0x2a'),_0x0999('0x3b'),_0x0999('0x73'),_0x0999('0x4f'));}break;case _0x0999('0x74'):if(_0xa82828['apiKey']){var _0x1645b2={};var _0x505994={'method':_0x0999('0x3e'),'uri':_0x0999('0x75'),'headers':{'Authorization':_0x0999('0x76')+_0xa82828[_0x0999('0x64')],'Content-Type':_0x0999('0x59')},'body':{'from':_0xa82828[_0x0999('0x24')],'to':_0x471d9c[_0x0999('0x24')],'text':_0x471d9c[_0x0999('0xf')]},'json':!![]};return rp(_0x505994)[_0x0999('0x19')](function(_0x1daa8f){if(_0x1daa8f['code']==0xca){_0x1645b2[_0x0999('0x77')]=_0x1daa8f;var _0x37e1b2={'method':_0x0999('0x3e'),'uri':_0x0999('0x78'),'headers':{'Authorization':_0x0999('0x76')+_0xa82828[_0x0999('0x64')],'Content-Type':_0x0999('0x59')},'body':{'refid':_0x1645b2[_0x0999('0x77')][_0x0999('0x79')]},'json':!![]};return rp(_0x37e1b2)[_0x0999('0x19')](function(_0x429111){_0x1645b2[_0x0999('0x7a')]=_0x429111;var _0x18327f={'messageId':_0x1645b2[_0x0999('0x77')][_0x0999('0x79')],'read':!![]};return _0xf6a77f['update'](_0x18327f);});}else{return logger[_0x0999('0x1d')](_0x0999('0x2a'),'afterCreate',_0x0999('0x74'),util[_0x0999('0x2b')](_0x1daa8f,{'showHidden':![],'depth':null}));}})[_0x0999('0x1c')](function(_0x441eb3){return logger[_0x0999('0x1d')](_0x0999('0x2a'),_0x0999('0x3b'),_0x0999('0x74'),util['inspect'](_0x441eb3,{'showHidden':![],'depth':null}));});}else{return logger[_0x0999('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x0999('0x3b'),'intelepeer',_0x0999('0x7b'));}break;}}})[_0x0999('0x7c')](function(){_0x161b44();});}else{_0x161b44();}}},'charset':_0x0999('0x7d'),'collate':_0x0999('0x7e')});};
\ No newline at end of file
index 9762ba3..e6876a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1299=['CreateSmsMessage','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','request','SmsMessage,\x20%s,\x20%s','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','SmsMessage','create','options','then','info'];(function(_0x553d24,_0x37bf47){var _0x44b31e=function(_0x53cabc){while(--_0x53cabc){_0x553d24['push'](_0x553d24['shift']());}};_0x44b31e(++_0x37bf47);}(_0x1299,0x85));var _0x9129=function(_0x3d4315,_0x480724){_0x3d4315=_0x3d4315-0x0;var _0x26c341=_0x1299[_0x3d4315];return _0x26c341;};'use strict';var _=require(_0x9129('0x0'));var util=require(_0x9129('0x1'));var moment=require(_0x9129('0x2'));var BPromise=require(_0x9129('0x3'));var rs=require(_0x9129('0x4'));var fs=require('fs');var Redis=require(_0x9129('0x5'));var db=require(_0x9129('0x6'))['db'];var utils=require(_0x9129('0x7'));var logger=require(_0x9129('0x8'))('rpc');var config=require(_0x9129('0x9'));var jayson=require(_0x9129('0xa'));var client=jayson[_0x9129('0xb')][_0x9129('0xc')]({'port':0x232a});config[_0x9129('0xd')]=_[_0x9129('0xe')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x9129('0xf'))(new Redis(config[_0x9129('0xd')]));require('./smsMessage.socket')[_0x9129('0x10')](socket);function respondWithRpcPromise(_0x1d678f,_0x182683,_0x2d8f9f){return new BPromise(function(_0x159b58,_0xa21768){return client[_0x9129('0x11')](_0x1d678f,_0x2d8f9f)['then'](function(_0xba46ed){logger['info'](_0x9129('0x12'),_0x182683,_0x9129('0x13'));logger['debug'](_0x9129('0x14'),_0x182683,_0x9129('0x13'),JSON[_0x9129('0x15')](_0xba46ed));if(_0xba46ed[_0x9129('0x16')]){if(_0xba46ed[_0x9129('0x16')][_0x9129('0x17')]===0x1f4){logger[_0x9129('0x16')](_0x9129('0x12'),_0x182683,_0xba46ed['error'][_0x9129('0x18')]);return _0xa21768(_0xba46ed[_0x9129('0x16')][_0x9129('0x18')]);}logger[_0x9129('0x16')]('SmsMessage,\x20%s,\x20%s',_0x182683,_0xba46ed[_0x9129('0x16')]['message']);return _0x159b58(_0xba46ed[_0x9129('0x16')]['message']);}else{logger['info'](_0x9129('0x12'),_0x182683,_0x9129('0x13'));_0x159b58(_0xba46ed[_0x9129('0x19')][_0x9129('0x18')]);}})[_0x9129('0x1a')](function(_0x3e3be7){logger[_0x9129('0x16')](_0x9129('0x12'),_0x182683,_0x3e3be7);_0xa21768(_0x3e3be7);});});}exports['CreateSmsMessage']=function(_0x23dd94){var _0x1bd03c=this;return new Promise(function(_0x38573e,_0x262135){return db[_0x9129('0x1b')][_0x9129('0x1c')](_0x23dd94['body'],{'raw':_0x23dd94[_0x9129('0x1d')]?_0x23dd94['options']['raw']===undefined?!![]:![]:!![]})[_0x9129('0x1e')](function(_0x4b73a5){logger[_0x9129('0x1f')]('CreateSmsMessage',_0x23dd94);logger['debug'](_0x9129('0x20'),_0x23dd94,JSON[_0x9129('0x15')](_0x4b73a5));_0x38573e(_0x4b73a5);})[_0x9129('0x1a')](function(_0x44d0c6){logger[_0x9129('0x16')](_0x9129('0x20'),_0x44d0c6[_0x9129('0x18')],_0x23dd94);_0x262135(_0x1bd03c[_0x9129('0x16')](0x1f4,_0x44d0c6[_0x9129('0x18')]));});});};
\ No newline at end of file
+var _0x4fc9=['jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','then','info','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','SmsMessage,\x20%s,\x20%s','catch','CreateSmsMessage','SmsMessage','create','options','debug','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment'];(function(_0x3d9d1e,_0x5d284a){var _0x58a4e2=function(_0x42d718){while(--_0x42d718){_0x3d9d1e['push'](_0x3d9d1e['shift']());}};_0x58a4e2(++_0x5d284a);}(_0x4fc9,0x89));var _0x94fc=function(_0x418226,_0x313434){_0x418226=_0x418226-0x0;var _0x1e4cf2=_0x4fc9[_0x418226];return _0x1e4cf2;};'use strict';var _=require(_0x94fc('0x0'));var util=require(_0x94fc('0x1'));var moment=require(_0x94fc('0x2'));var BPromise=require('bluebird');var rs=require(_0x94fc('0x3'));var fs=require('fs');var Redis=require(_0x94fc('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x94fc('0x5'));var logger=require(_0x94fc('0x6'))('rpc');var config=require(_0x94fc('0x7'));var jayson=require(_0x94fc('0x8'));var client=jayson['client'][_0x94fc('0x9')]({'port':0x232a});config[_0x94fc('0xa')]=_[_0x94fc('0xb')](config['redis'],{'host':_0x94fc('0xc'),'port':0x18eb});var socket=require(_0x94fc('0xd'))(new Redis(config['redis']));require(_0x94fc('0xe'))['register'](socket);function respondWithRpcPromise(_0xc27014,_0x2fce54,_0xd7fc2a){return new BPromise(function(_0x46a1d3,_0x3c442e){return client['request'](_0xc27014,_0xd7fc2a)[_0x94fc('0xf')](function(_0x60080){logger[_0x94fc('0x10')]('SmsMessage,\x20%s,\x20%s',_0x2fce54,_0x94fc('0x11'));logger['debug'](_0x94fc('0x12'),_0x2fce54,_0x94fc('0x11'),JSON[_0x94fc('0x13')](_0x60080));if(_0x60080[_0x94fc('0x14')]){if(_0x60080[_0x94fc('0x14')]['code']===0x1f4){logger[_0x94fc('0x14')]('SmsMessage,\x20%s,\x20%s',_0x2fce54,_0x60080[_0x94fc('0x14')][_0x94fc('0x15')]);return _0x3c442e(_0x60080[_0x94fc('0x14')][_0x94fc('0x15')]);}logger[_0x94fc('0x14')](_0x94fc('0x16'),_0x2fce54,_0x60080[_0x94fc('0x14')][_0x94fc('0x15')]);return _0x46a1d3(_0x60080['error'][_0x94fc('0x15')]);}else{logger[_0x94fc('0x10')](_0x94fc('0x16'),_0x2fce54,_0x94fc('0x11'));_0x46a1d3(_0x60080['result']['message']);}})[_0x94fc('0x17')](function(_0x22657c){logger['error'](_0x94fc('0x16'),_0x2fce54,_0x22657c);_0x3c442e(_0x22657c);});});}exports[_0x94fc('0x18')]=function(_0x1eafc9){var _0x3cf871=this;return new Promise(function(_0x5b80fb,_0x1d3928){return db[_0x94fc('0x19')][_0x94fc('0x1a')](_0x1eafc9['body'],{'raw':_0x1eafc9[_0x94fc('0x1b')]?_0x1eafc9['options']['raw']===undefined?!![]:![]:!![]})[_0x94fc('0xf')](function(_0xbba30a){logger[_0x94fc('0x10')](_0x94fc('0x18'),_0x1eafc9);logger[_0x94fc('0x1c')](_0x94fc('0x18'),_0x1eafc9,JSON[_0x94fc('0x13')](_0xbba30a));_0x5b80fb(_0xbba30a);})[_0x94fc('0x17')](function(_0x2e56ee){logger[_0x94fc('0x14')](_0x94fc('0x18'),_0x2e56ee[_0x94fc('0x15')],_0x1eafc9);_0x1d3928(_0x3cf871[_0x94fc('0x14')](0x1f4,_0x2e56ee[_0x94fc('0x15')]));});});};
\ No newline at end of file
index 0ba7579..6ffbca6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86f7=['./smsMessage.events','save','remove','emit','removeListener','register'];(function(_0x1ae5ab,_0xc5d441){var _0x1ce001=function(_0x5ef96d){while(--_0x5ef96d){_0x1ae5ab['push'](_0x1ae5ab['shift']());}};_0x1ce001(++_0xc5d441);}(_0x86f7,0x8a));var _0x786f=function(_0x263a74,_0xc31414){_0x263a74=_0x263a74-0x0;var _0x2aa86c=_0x86f7[_0x263a74];return _0x2aa86c;};'use strict';var SmsMessageEvents=require(_0x786f('0x0'));var events=[_0x786f('0x1'),_0x786f('0x2'),'update'];function createListener(_0x162103,_0x38c76b){return function(_0xbc5495){_0x38c76b[_0x786f('0x3')](_0x162103,_0xbc5495);};}function removeListener(_0x553060,_0x50fad6){return function(){SmsMessageEvents[_0x786f('0x4')](_0x553060,_0x50fad6);};}exports[_0x786f('0x5')]=function(_0x107cba){for(var _0x2d20da=0x0,_0x47a1f8=events['length'];_0x2d20da<_0x47a1f8;_0x2d20da++){var _0x42429d=events[_0x2d20da];var _0x13e723=createListener('smsMessage:'+_0x42429d,_0x107cba);SmsMessageEvents['on'](_0x42429d,_0x13e723);}};
\ No newline at end of file
+var _0xa051=['update','emit','register','length','smsMessage:','./smsMessage.events','save','remove'];(function(_0x39324f,_0x3e1483){var _0x3ca913=function(_0x2335b6){while(--_0x2335b6){_0x39324f['push'](_0x39324f['shift']());}};_0x3ca913(++_0x3e1483);}(_0xa051,0xf5));var _0x1a05=function(_0x4f00fb,_0x8df1a1){_0x4f00fb=_0x4f00fb-0x0;var _0x41d061=_0xa051[_0x4f00fb];return _0x41d061;};'use strict';var SmsMessageEvents=require(_0x1a05('0x0'));var events=[_0x1a05('0x1'),_0x1a05('0x2'),_0x1a05('0x3')];function createListener(_0x5c7db6,_0x455319){return function(_0x2fa408){_0x455319[_0x1a05('0x4')](_0x5c7db6,_0x2fa408);};}function removeListener(_0x2758e8,_0x40f775){return function(){SmsMessageEvents['removeListener'](_0x2758e8,_0x40f775);};}exports[_0x1a05('0x5')]=function(_0x4ad561){for(var _0x402b30=0x0,_0x2250d0=events[_0x1a05('0x6')];_0x402b30<_0x2250d0;_0x402b30++){var _0x1163cf=events[_0x402b30];var _0x51654e=createListener(_0x1a05('0x7')+_0x1163cf,_0x4ad561);SmsMessageEvents['on'](_0x1163cf,_0x51654e);}};
\ No newline at end of file
index 385a44b..933421d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c72=['delete','/:id/teams','removeTeams','removeAgents','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/users','post','create','addTeams','addAgents'];(function(_0x47a40b,_0x443ecf){var _0x19610c=function(_0x4b8ce1){while(--_0x4b8ce1){_0x47a40b['push'](_0x47a40b['shift']());}};_0x19610c(++_0x443ecf);}(_0x1c72,0x1f2));var _0x21c7=function(_0x44e2c5,_0x3912ce){_0x44e2c5=_0x44e2c5-0x0;var _0x28aba5=_0x1c72[_0x44e2c5];return _0x28aba5;};'use strict';var multer=require(_0x21c7('0x0'));var util=require('util');var path=require(_0x21c7('0x1'));var timeout=require(_0x21c7('0x2'));var express=require(_0x21c7('0x3'));var router=express[_0x21c7('0x4')]();var fs_extra=require(_0x21c7('0x5'));var auth=require(_0x21c7('0x6'));var interaction=require(_0x21c7('0x7'));var config=require(_0x21c7('0x8'));var controller=require(_0x21c7('0x9'));router[_0x21c7('0xa')]('/',auth[_0x21c7('0xb')](),controller[_0x21c7('0xc')]);router[_0x21c7('0xa')](_0x21c7('0xd'),auth['isAuthenticated'](),controller[_0x21c7('0xe')]);router['get'](_0x21c7('0xf'),auth[_0x21c7('0xb')](),controller[_0x21c7('0x10')]);router[_0x21c7('0xa')](_0x21c7('0x11'),auth[_0x21c7('0xb')](),controller[_0x21c7('0x12')]);router[_0x21c7('0xa')]('/:id/teams',auth[_0x21c7('0xb')](),controller['getTeams']);router[_0x21c7('0xa')](_0x21c7('0x13'),auth[_0x21c7('0xb')](),controller['getAgents']);router[_0x21c7('0x14')]('/',auth[_0x21c7('0xb')](),controller[_0x21c7('0x15')]);router['post']('/:id/teams',auth[_0x21c7('0xb')](),controller[_0x21c7('0x16')]);router[_0x21c7('0x14')]('/:id/users',auth['isAuthenticated'](),controller[_0x21c7('0x17')]);router['put'](_0x21c7('0xf'),auth[_0x21c7('0xb')](),controller['update']);router['delete']('/:id',auth[_0x21c7('0xb')](),controller['destroy']);router[_0x21c7('0x18')](_0x21c7('0x19'),auth[_0x21c7('0xb')](),controller[_0x21c7('0x1a')]);router[_0x21c7('0x18')]('/:id/users',auth[_0x21c7('0xb')](),controller[_0x21c7('0x1b')]);module[_0x21c7('0x1c')]=router;
\ No newline at end of file
+var _0x0f34=['/:id/members','getMembers','/:id/teams','getTeams','getAgents','post','create','/:id/users','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','connect-timeout','express','../../components/auth/service','../../config/environment','./smsQueue.controller','get','isAuthenticated','index','/describe'];(function(_0x57606a,_0x55edcf){var _0x323b68=function(_0x3990ea){while(--_0x3990ea){_0x57606a['push'](_0x57606a['shift']());}};_0x323b68(++_0x55edcf);}(_0x0f34,0x154));var _0x40f3=function(_0x45b1ad,_0x215b03){_0x45b1ad=_0x45b1ad-0x0;var _0x3d5696=_0x0f34[_0x45b1ad];return _0x3d5696;};'use strict';var multer=require(_0x40f3('0x0'));var util=require(_0x40f3('0x1'));var path=require('path');var timeout=require(_0x40f3('0x2'));var express=require(_0x40f3('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x40f3('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x40f3('0x5'));var controller=require(_0x40f3('0x6'));router[_0x40f3('0x7')]('/',auth[_0x40f3('0x8')](),controller[_0x40f3('0x9')]);router['get'](_0x40f3('0xa'),auth[_0x40f3('0x8')](),controller['describe']);router[_0x40f3('0x7')]('/:id',auth[_0x40f3('0x8')](),controller['show']);router['get'](_0x40f3('0xb'),auth['isAuthenticated'](),controller[_0x40f3('0xc')]);router[_0x40f3('0x7')](_0x40f3('0xd'),auth['isAuthenticated'](),controller[_0x40f3('0xe')]);router[_0x40f3('0x7')]('/:id/users',auth['isAuthenticated'](),controller[_0x40f3('0xf')]);router[_0x40f3('0x10')]('/',auth[_0x40f3('0x8')](),controller[_0x40f3('0x11')]);router[_0x40f3('0x10')](_0x40f3('0xd'),auth['isAuthenticated'](),controller['addTeams']);router['post'](_0x40f3('0x12'),auth[_0x40f3('0x8')](),controller[_0x40f3('0x13')]);router[_0x40f3('0x14')]('/:id',auth[_0x40f3('0x8')](),controller[_0x40f3('0x15')]);router[_0x40f3('0x16')]('/:id',auth[_0x40f3('0x8')](),controller[_0x40f3('0x17')]);router[_0x40f3('0x16')]('/:id/teams',auth[_0x40f3('0x8')](),controller[_0x40f3('0x18')]);router[_0x40f3('0x16')](_0x40f3('0x12'),auth[_0x40f3('0x8')](),controller[_0x40f3('0x19')]);module[_0x40f3('0x1a')]=router;
\ No newline at end of file
index 8f4cd79..5683fd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd854=['rrmemory','beepall','roundrobin','sequelize','exports','name','STRING','INTEGER','ENUM'];(function(_0x3124f8,_0x1a8b23){var _0x5bab5f=function(_0x18b09b){while(--_0x18b09b){_0x3124f8['push'](_0x3124f8['shift']());}};_0x5bab5f(++_0x1a8b23);}(_0xd854,0x78));var _0x4d85=function(_0x190cd7,_0x3be137){_0x190cd7=_0x190cd7-0x0;var _0x25b246=_0xd854[_0x190cd7];return _0x25b246;};'use strict';var Sequelize=require(_0x4d85('0x0'));module[_0x4d85('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x4d85('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x4d85('0x3')]},'timeout':{'type':Sequelize[_0x4d85('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x4d85('0x5')](_0x4d85('0x6'),_0x4d85('0x7'),_0x4d85('0x8'))}};
\ No newline at end of file
+var _0xb605=['INTEGER','rrmemory','sequelize','STRING','name'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0xb605,0x70));var _0x5b60=function(_0x30cc1a,_0x162bbc){_0x30cc1a=_0x30cc1a-0x0;var _0xb3f18f=_0xb605[_0x30cc1a];return _0xb3f18f;};'use strict';var Sequelize=require(_0x5b60('0x0'));module['exports']={'name':{'type':Sequelize[_0x5b60('0x1')],'unique':_0x5b60('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x5b60('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x5b60('0x4'),'beepall','roundrobin')}};
\ No newline at end of file
index ee26831..23f18ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa64=['offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','get','SmsQueues','UserProfileResource','then','error','name','index','map','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','include','SmsQueue','findAll','rows','show','params','rawAttributes','includeAll','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','catch','describe','getMembers','findOne','UserSmsQueue','order','SmsQueueId','User','findAndCountAll','agent','updatedAt','format','%s/%s','smsPause','createdAt','getTeams','Team','addTeams','ids','Agents','online','voicePause','flatMap','transaction','findOrCreate','forEach','emit','userSmsQueue:save','removeTeams','field','tq.TeamId','from','team_has_sms_queues','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','sequelize','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','isEmpty','removeAgents','userSmsQueue:remove','addAgents','spread','getAgents','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','sendStatus','status','end','json'];(function(_0x44dd4c,_0x5314b4){var _0x55b24b=function(_0x505f01){while(--_0x505f01){_0x44dd4c['push'](_0x44dd4c['shift']());}};_0x55b24b(++_0x5314b4);}(_0xaa64,0xf7));var _0x4aa6=function(_0x182aa9,_0x55f8ab){_0x182aa9=_0x182aa9-0x0;var _0x195f93=_0xaa64[_0x182aa9];return _0x195f93;};'use strict';var emlformat=require(_0x4aa6('0x0'));var rimraf=require(_0x4aa6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4aa6('0x2'));var rp=require('request-promise');var moment=require(_0x4aa6('0x3'));var BPromise=require(_0x4aa6('0x4'));var Mustache=require(_0x4aa6('0x5'));var util=require('util');var path=require(_0x4aa6('0x6'));var sox=require(_0x4aa6('0x7'));var csv=require(_0x4aa6('0x8'));var ejs=require(_0x4aa6('0x9'));var fs=require('fs');var fs_extra=require(_0x4aa6('0xa'));var _=require(_0x4aa6('0xb'));var squel=require(_0x4aa6('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4aa6('0xd'));var toCsv=require(_0x4aa6('0x8'));var querystring=require('querystring');var Papa=require(_0x4aa6('0xe'));var Redis=require('ioredis');var authService=require(_0x4aa6('0xf'));var qs=require(_0x4aa6('0x10'));var as=require(_0x4aa6('0x11'));var hardwareService=require(_0x4aa6('0x12'));var logger=require('../../config/logger')(_0x4aa6('0x13'));var utils=require(_0x4aa6('0x14'));var config=require(_0x4aa6('0x15'));var licenseUtil=require(_0x4aa6('0x16'));var db=require(_0x4aa6('0x17'))['db'];config[_0x4aa6('0x18')]=_[_0x4aa6('0x19')](config[_0x4aa6('0x18')],{'host':_0x4aa6('0x1a'),'port':0x18eb});var socket=require(_0x4aa6('0x1b'))(new Redis(config['redis']));require(_0x4aa6('0x1c'))['register'](socket);function respondWithStatusCode(_0x561f5d,_0x43a0a6){_0x43a0a6=_0x43a0a6||0xcc;return function(_0x17a0e6){if(_0x17a0e6){return _0x561f5d[_0x4aa6('0x1d')](_0x43a0a6);}return _0x561f5d[_0x4aa6('0x1e')](_0x43a0a6)[_0x4aa6('0x1f')]();};}function respondWithResult(_0x238f10,_0x3e234f){_0x3e234f=_0x3e234f||0xc8;return function(_0x2c5c66){if(_0x2c5c66){return _0x238f10['status'](_0x3e234f)[_0x4aa6('0x20')](_0x2c5c66);}};}function respondWithFilteredResult(_0x5458ad,_0x15c2d8){return function(_0x5c6d3c){if(_0x5c6d3c){var _0x54a6d8=typeof _0x15c2d8[_0x4aa6('0x21')]===_0x4aa6('0x22')&&typeof _0x15c2d8[_0x4aa6('0x23')]===_0x4aa6('0x22');var _0x2aa5d7=_0x5c6d3c[_0x4aa6('0x24')];var _0x1d4a09=_0x54a6d8?0x0:_0x15c2d8[_0x4aa6('0x21')];var _0x15365e=_0x54a6d8?_0x5c6d3c['count']:_0x15c2d8[_0x4aa6('0x21')]+_0x15c2d8[_0x4aa6('0x23')];var _0x9a1a7e;if(_0x15365e>=_0x2aa5d7){_0x15365e=_0x2aa5d7;_0x9a1a7e=0xc8;}else{_0x9a1a7e=0xce;}_0x5458ad[_0x4aa6('0x1e')](_0x9a1a7e);return _0x5458ad[_0x4aa6('0x25')](_0x4aa6('0x26'),_0x1d4a09+'-'+_0x15365e+'/'+_0x2aa5d7)['json'](_0x5c6d3c);}return null;};}function patchUpdates(_0xa0f5be){return function(_0x3699f7){try{jsonpatch[_0x4aa6('0x27')](_0x3699f7,_0xa0f5be,!![]);}catch(_0x3af19f){return BPromise[_0x4aa6('0x28')](_0x3af19f);}return _0x3699f7[_0x4aa6('0x29')]();};}function saveUpdates(_0x568a5c,_0x2f4943){return function(_0x91373f){if(_0x91373f){return _0x91373f['update'](_0x568a5c)['then'](function(_0x347856){return _0x347856;});}return null;};}function removeEntity(_0x109a7c,_0x3efa6b){return function(_0x3425df){if(_0x3425df){return _0x3425df[_0x4aa6('0x2a')]()['then'](function(){var _0x44c6cf=_0x3425df[_0x4aa6('0x2b')]({'plain':!![]});var _0x343bd0=_0x4aa6('0x2c');return db[_0x4aa6('0x2d')][_0x4aa6('0x2a')]({'where':{'type':_0x343bd0,'resourceId':_0x44c6cf['id']}})['then'](function(){return _0x3425df;});})[_0x4aa6('0x2e')](function(){_0x109a7c[_0x4aa6('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x149c9a,_0x121b97){return function(_0x2b629e){if(!_0x2b629e){_0x149c9a[_0x4aa6('0x1d')](0x194);}return _0x2b629e;};}function handleError(_0x4d4b60,_0x21efc9){_0x21efc9=_0x21efc9||0x1f4;return function(_0x625df8){logger[_0x4aa6('0x2f')](_0x625df8['stack']);if(_0x625df8[_0x4aa6('0x30')]){delete _0x625df8[_0x4aa6('0x30')];}_0x4d4b60[_0x4aa6('0x1e')](_0x21efc9)['send'](_0x625df8);};}exports[_0x4aa6('0x31')]=function(_0x2af33f,_0x55a8ee){var _0x3f6afa={},_0x426f15={},_0x292dc7={'count':0x0,'rows':[]};var _0x108903=_[_0x4aa6('0x32')](db['SmsQueue']['rawAttributes'],function(_0x246018){return{'name':_0x246018[_0x4aa6('0x33')],'type':_0x246018[_0x4aa6('0x34')]['key']};});_0x426f15['model']=_[_0x4aa6('0x32')](_0x108903,_0x4aa6('0x30'));_0x426f15[_0x4aa6('0x35')]=_[_0x4aa6('0x36')](_0x2af33f[_0x4aa6('0x35')]);_0x426f15[_0x4aa6('0x37')]=_[_0x4aa6('0x38')](_0x426f15[_0x4aa6('0x39')],_0x426f15['query']);_0x3f6afa[_0x4aa6('0x3a')]=_[_0x4aa6('0x38')](_0x426f15[_0x4aa6('0x39')],qs[_0x4aa6('0x3b')](_0x2af33f[_0x4aa6('0x35')][_0x4aa6('0x3b')]));_0x3f6afa['attributes']=_0x3f6afa[_0x4aa6('0x3a')][_0x4aa6('0x3c')]?_0x3f6afa['attributes']:_0x426f15[_0x4aa6('0x39')];if(!_0x2af33f[_0x4aa6('0x35')][_0x4aa6('0x3d')](_0x4aa6('0x3e'))){_0x3f6afa['limit']=qs['limit'](_0x2af33f[_0x4aa6('0x35')][_0x4aa6('0x23')]);_0x3f6afa[_0x4aa6('0x21')]=qs['offset'](_0x2af33f[_0x4aa6('0x35')][_0x4aa6('0x21')]);}_0x3f6afa['order']=qs[_0x4aa6('0x3f')](_0x2af33f[_0x4aa6('0x35')][_0x4aa6('0x3f')]);_0x3f6afa[_0x4aa6('0x40')]=qs[_0x4aa6('0x37')](_[_0x4aa6('0x41')](_0x2af33f['query'],_0x426f15['filters']),_0x108903);if(_0x2af33f[_0x4aa6('0x35')][_0x4aa6('0x42')]){_0x3f6afa[_0x4aa6('0x40')]=_[_0x4aa6('0x43')](_0x3f6afa[_0x4aa6('0x40')],{'$or':_['map'](_0x108903,function(_0x19ac08){if(_0x19ac08[_0x4aa6('0x34')]!=='VIRTUAL'){var _0x13fcc8={};_0x13fcc8[_0x19ac08[_0x4aa6('0x30')]]={'$like':'%'+_0x2af33f[_0x4aa6('0x35')][_0x4aa6('0x42')]+'%'};return _0x13fcc8;}})});}_0x3f6afa=_[_0x4aa6('0x43')]({},_0x3f6afa,_0x2af33f['options']);var _0x29bbf5={'where':_0x3f6afa[_0x4aa6('0x40')]};return db['SmsQueue'][_0x4aa6('0x24')](_0x29bbf5)[_0x4aa6('0x2e')](function(_0x5968d9){_0x292dc7[_0x4aa6('0x24')]=_0x5968d9;if(_0x2af33f[_0x4aa6('0x35')]['includeAll']){_0x3f6afa[_0x4aa6('0x44')]=[{'all':!![]}];}return db[_0x4aa6('0x45')][_0x4aa6('0x46')](_0x3f6afa);})[_0x4aa6('0x2e')](function(_0x24a844){_0x292dc7[_0x4aa6('0x47')]=_0x24a844;return _0x292dc7;})[_0x4aa6('0x2e')](respondWithFilteredResult(_0x55a8ee,_0x3f6afa))['catch'](handleError(_0x55a8ee,null));};exports[_0x4aa6('0x48')]=function(_0x229181,_0x3936ad){var _0x1b90a9={'raw':!![],'where':{'id':_0x229181[_0x4aa6('0x49')]['id']}},_0x3519ea={};_0x3519ea[_0x4aa6('0x39')]=_[_0x4aa6('0x36')](db['SmsQueue'][_0x4aa6('0x4a')]);_0x3519ea['query']=_[_0x4aa6('0x36')](_0x229181[_0x4aa6('0x35')]);_0x3519ea[_0x4aa6('0x37')]=_['intersection'](_0x3519ea[_0x4aa6('0x39')],_0x3519ea['query']);_0x1b90a9['attributes']=_[_0x4aa6('0x38')](_0x3519ea[_0x4aa6('0x39')],qs['fields'](_0x229181[_0x4aa6('0x35')][_0x4aa6('0x3b')]));_0x1b90a9['attributes']=_0x1b90a9[_0x4aa6('0x3a')]['length']?_0x1b90a9['attributes']:_0x3519ea[_0x4aa6('0x39')];if(_0x229181['query'][_0x4aa6('0x4b')]){_0x1b90a9[_0x4aa6('0x44')]=[{'all':!![]}];}_0x1b90a9=_[_0x4aa6('0x43')]({},_0x1b90a9,_0x229181[_0x4aa6('0x4c')]);return db[_0x4aa6('0x45')][_0x4aa6('0x4d')](_0x1b90a9)[_0x4aa6('0x2e')](handleEntityNotFound(_0x3936ad,null))['then'](respondWithResult(_0x3936ad,null))['catch'](handleError(_0x3936ad,null));};exports[_0x4aa6('0x4e')]=function(_0x58344c,_0x2f3ca6){return db['SmsQueue'][_0x4aa6('0x4e')](_0x58344c[_0x4aa6('0x4f')],{})[_0x4aa6('0x2e')](function(_0x25b9cc){var _0x481dc8=_0x58344c['user'][_0x4aa6('0x2b')]({'plain':!![]});if(!_0x481dc8)throw new Error(_0x4aa6('0x50'));if(_0x481dc8[_0x4aa6('0x51')]===_0x4aa6('0x52')){var _0x5a525c=_0x25b9cc[_0x4aa6('0x2b')]({'plain':!![]});var _0x185c32='SmsQueues';return db[_0x4aa6('0x53')]['find']({'where':{'name':_0x185c32,'userProfileId':_0x481dc8[_0x4aa6('0x54')]},'raw':!![]})[_0x4aa6('0x2e')](function(_0x14d7a8){if(_0x14d7a8&&_0x14d7a8[_0x4aa6('0x55')]===0x0){return db['UserProfileResource'][_0x4aa6('0x4e')]({'name':_0x5a525c[_0x4aa6('0x30')],'resourceId':_0x5a525c['id'],'type':_0x14d7a8[_0x4aa6('0x30')],'sectionId':_0x14d7a8['id']},{})['then'](function(){return _0x25b9cc;});}else{return _0x25b9cc;}})['catch'](function(_0x2742a3){logger[_0x4aa6('0x2f')](_0x4aa6('0x56'),_0x2742a3);throw _0x2742a3;});}return _0x25b9cc;})[_0x4aa6('0x2e')](respondWithResult(_0x2f3ca6,0xc9))['catch'](handleError(_0x2f3ca6,null));};exports[_0x4aa6('0x57')]=function(_0x17cab7,_0x1c396d){if(_0x17cab7[_0x4aa6('0x4f')]['id']){delete _0x17cab7[_0x4aa6('0x4f')]['id'];}return db[_0x4aa6('0x45')][_0x4aa6('0x4d')]({'where':{'id':_0x17cab7['params']['id']}})[_0x4aa6('0x2e')](handleEntityNotFound(_0x1c396d,null))['then'](saveUpdates(_0x17cab7['body'],null))['then'](respondWithResult(_0x1c396d,null))[_0x4aa6('0x58')](handleError(_0x1c396d,null));};exports[_0x4aa6('0x2a')]=function(_0x2619a1,_0x4d6cec){return db[_0x4aa6('0x45')][_0x4aa6('0x4d')]({'where':{'id':_0x2619a1[_0x4aa6('0x49')]['id']}})['then'](handleEntityNotFound(_0x4d6cec,null))[_0x4aa6('0x2e')](removeEntity(_0x4d6cec,null))[_0x4aa6('0x58')](handleError(_0x4d6cec,null));};exports[_0x4aa6('0x59')]=function(_0x349078,_0x38ef59){return db[_0x4aa6('0x45')][_0x4aa6('0x59')]()[_0x4aa6('0x2e')](respondWithResult(_0x38ef59,null))[_0x4aa6('0x58')](handleError(_0x38ef59,null));};exports[_0x4aa6('0x5a')]=function(_0x593dda,_0x17b8ea,_0x13f330){var _0x51bf39={'raw':!![],'where':{}},_0x2bdec8={},_0x4b41ec;return db[_0x4aa6('0x45')][_0x4aa6('0x5b')]({'where':{'id':_0x593dda[_0x4aa6('0x49')]['id']}})[_0x4aa6('0x2e')](handleEntityNotFound(_0x17b8ea,null))[_0x4aa6('0x2e')](function(_0x543427){if(_0x543427){_0x4b41ec=_0x543427[_0x4aa6('0x2b')]({'plain':!![]});_0x2bdec8[_0x4aa6('0x39')]=_[_0x4aa6('0x36')](db[_0x4aa6('0x5c')][_0x4aa6('0x4a')]);_0x2bdec8['query']=_[_0x4aa6('0x36')](_0x593dda[_0x4aa6('0x35')]);_0x2bdec8[_0x4aa6('0x37')]=_['intersection'](_0x2bdec8['model'],_0x2bdec8['query']);_0x51bf39['attributes']=_[_0x4aa6('0x38')](_0x2bdec8[_0x4aa6('0x39')],qs['fields'](_0x593dda['query'][_0x4aa6('0x3b')]));_0x51bf39[_0x4aa6('0x3a')]=_0x51bf39[_0x4aa6('0x3a')][_0x4aa6('0x3c')]?_0x51bf39[_0x4aa6('0x3a')]:_0x2bdec8[_0x4aa6('0x39')];if(!_0x593dda[_0x4aa6('0x35')][_0x4aa6('0x3d')](_0x4aa6('0x3e'))){_0x51bf39[_0x4aa6('0x23')]=qs[_0x4aa6('0x23')](_0x593dda[_0x4aa6('0x35')][_0x4aa6('0x23')]);_0x51bf39[_0x4aa6('0x21')]=qs[_0x4aa6('0x21')](_0x593dda['query'][_0x4aa6('0x21')]);}_0x51bf39[_0x4aa6('0x5d')]=qs[_0x4aa6('0x3f')](_0x593dda[_0x4aa6('0x35')][_0x4aa6('0x3f')]);_0x51bf39['where']=qs[_0x4aa6('0x37')](_[_0x4aa6('0x41')](_0x593dda[_0x4aa6('0x35')],_0x2bdec8['filters']));_0x51bf39[_0x4aa6('0x40')][_0x4aa6('0x5e')]=_0x543427['id'];if(_0x593dda['query'][_0x4aa6('0x42')]){_0x51bf39[_0x4aa6('0x40')]=_['merge'](_0x51bf39[_0x4aa6('0x40')],{'$or':_[_0x4aa6('0x32')](_0x51bf39[_0x4aa6('0x3a')],function(_0x5438f1){var _0x3f6139={};_0x3f6139[_0x5438f1]={'$like':'%'+_0x593dda[_0x4aa6('0x35')][_0x4aa6('0x42')]+'%'};return _0x3f6139;})});}_0x51bf39=_[_0x4aa6('0x43')]({},_0x51bf39,_0x593dda[_0x4aa6('0x4c')]);return db[_0x4aa6('0x5c')][_0x4aa6('0x46')](_0x51bf39);}})[_0x4aa6('0x2e')](function(_0x5f3a62){if(_0x5f3a62){return db[_0x4aa6('0x5f')][_0x4aa6('0x60')]({'where':{'id':_['map'](_0x5f3a62,'UserId'),'role':_0x4aa6('0x61')},'attributes':['id',_0x4aa6('0x30'),'smsPause',_0x4aa6('0x62'),'createdAt']});}})[_0x4aa6('0x2e')](function(_0x5223f1){if(_0x5223f1){return{'count':_0x5223f1[_0x4aa6('0x24')],'rows':_[_0x4aa6('0x32')](_0x5223f1['rows'],function(_0x398e07){return{'membername':_0x398e07[_0x4aa6('0x30')],'UserId':_0x398e07['id'],'queue_name':_0x4b41ec[_0x4aa6('0x30')],'SmsQueueId':_0x4b41ec['id'],'interface':util[_0x4aa6('0x63')](_0x4aa6('0x64'),'SIP',_0x398e07['name']),'penalty':0x0,'paused':_0x398e07[_0x4aa6('0x65')],'createdAt':_0x398e07[_0x4aa6('0x66')],'updatedAt':_0x398e07[_0x4aa6('0x62')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x4aa6('0x2e')](respondWithFilteredResult(_0x17b8ea,_0x51bf39))[_0x4aa6('0x58')](handleError(_0x17b8ea,null));};exports[_0x4aa6('0x67')]=function(_0xb6b7ba,_0x139aab,_0x30a155){var _0x26a145={};var _0x57342e={};var _0x22966b;var _0x4b9932;return db[_0x4aa6('0x45')][_0x4aa6('0x5b')]({'where':{'id':_0xb6b7ba[_0x4aa6('0x49')]['id']}})[_0x4aa6('0x2e')](handleEntityNotFound(_0x139aab,null))['then'](function(_0xc5eb6a){if(_0xc5eb6a){_0x22966b=_0xc5eb6a;_0x57342e[_0x4aa6('0x39')]=_['keys'](db[_0x4aa6('0x68')][_0x4aa6('0x4a')]);_0x57342e[_0x4aa6('0x35')]=_[_0x4aa6('0x36')](_0xb6b7ba[_0x4aa6('0x35')]);_0x57342e[_0x4aa6('0x37')]=_[_0x4aa6('0x38')](_0x57342e[_0x4aa6('0x39')],_0x57342e[_0x4aa6('0x35')]);_0x26a145[_0x4aa6('0x3a')]=_[_0x4aa6('0x38')](_0x57342e[_0x4aa6('0x39')],qs[_0x4aa6('0x3b')](_0xb6b7ba['query'][_0x4aa6('0x3b')]));_0x26a145[_0x4aa6('0x3a')]=_0x26a145[_0x4aa6('0x3a')][_0x4aa6('0x3c')]?_0x26a145['attributes']:_0x57342e[_0x4aa6('0x39')];_0x26a145[_0x4aa6('0x5d')]=qs[_0x4aa6('0x3f')](_0xb6b7ba['query'][_0x4aa6('0x3f')]);_0x26a145[_0x4aa6('0x40')]=qs[_0x4aa6('0x37')](_[_0x4aa6('0x41')](_0xb6b7ba['query'],_0x57342e[_0x4aa6('0x37')]));if(_0xb6b7ba[_0x4aa6('0x35')][_0x4aa6('0x42')]){_0x26a145[_0x4aa6('0x40')]=_[_0x4aa6('0x43')](_0x26a145['where'],{'$or':_['map'](_0x26a145['attributes'],function(_0x15c931){var _0x19c417={};_0x19c417[_0x15c931]={'$like':'%'+_0xb6b7ba['query']['filter']+'%'};return _0x19c417;})});}_0x26a145=_[_0x4aa6('0x43')]({},_0x26a145,_0xb6b7ba[_0x4aa6('0x4c')]);return _0x22966b['getTeams'](_0x26a145);}})['then'](function(_0x4933f2){if(_0x4933f2){_0x4b9932=_0x4933f2['length'];if(!_0xb6b7ba[_0x4aa6('0x35')]['hasOwnProperty'](_0x4aa6('0x3e'))){_0x26a145[_0x4aa6('0x23')]=qs[_0x4aa6('0x23')](_0xb6b7ba[_0x4aa6('0x35')]['limit']);_0x26a145['offset']=qs[_0x4aa6('0x21')](_0xb6b7ba[_0x4aa6('0x35')][_0x4aa6('0x21')]);}return _0x22966b[_0x4aa6('0x67')](_0x26a145);}})[_0x4aa6('0x2e')](function(_0x571134){if(_0x571134){return _0x571134?{'count':_0x4b9932,'rows':_0x571134}:null;}})[_0x4aa6('0x2e')](respondWithResult(_0x139aab,null))[_0x4aa6('0x58')](handleError(_0x139aab,null));};exports[_0x4aa6('0x69')]=function(_0x385c92,_0xe614fe,_0x2c0dbd){var _0x514400=_0x385c92[_0x4aa6('0x4f')][_0x4aa6('0x6a')];return db[_0x4aa6('0x68')][_0x4aa6('0x46')]({'where':{'id':_0x514400},'attributes':['id'],'include':[{'model':db[_0x4aa6('0x5f')],'as':_0x4aa6('0x6b'),'attributes':['id',_0x4aa6('0x30'),_0x4aa6('0x6c'),_0x4aa6('0x6d'),'interface'],'raw':!![]}]})['then'](function(_0x278fb3){if(_0x278fb3){var _0x34da8f=_[_0x4aa6('0x6e')](_0x278fb3,function(_0x1c953d){var _0x142286=_0x1c953d[_0x4aa6('0x2b')]({'plain':!![]});return _0x142286[_0x4aa6('0x6b')];});return db[_0x4aa6('0x45')][_0x4aa6('0x4d')]({'where':{'id':_0x385c92['params']['id']}})['then'](function(_0x56a18a){return db['sequelize'][_0x4aa6('0x6f')](function(_0x2bdd39){return _0x56a18a[_0x4aa6('0x69')](_0x514400,{'transaction':_0x2bdd39})[_0x4aa6('0x2e')](function(){return BPromise['each'](_0x34da8f,function(_0x1cdfed){return db[_0x4aa6('0x5c')][_0x4aa6('0x70')]({'where':{'UserId':_0x1cdfed['id'],'SmsQueueId':_0x385c92[_0x4aa6('0x49')]['id']},'transaction':_0x2bdd39});});})[_0x4aa6('0x2e')](function(){_0x34da8f[_0x4aa6('0x71')](function(_0x46b01e){socket[_0x4aa6('0x72')](_0x4aa6('0x73'),{'UserId':_0x46b01e['id'],'SmsQueueId':_0x56a18a['id']});});});});});}})[_0x4aa6('0x2e')](respondWithStatusCode(_0xe614fe,null))['catch'](handleError(_0xe614fe,null));};exports[_0x4aa6('0x74')]=function(_0x4d1cc5,_0x1b2d3a,_0xf4e55d){return db[_0x4aa6('0x68')][_0x4aa6('0x46')]({'where':{'id':_0x4d1cc5[_0x4aa6('0x35')][_0x4aa6('0x6a')]},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x4aa6('0x2e')](handleEntityNotFound(_0x1b2d3a,null))[_0x4aa6('0x2e')](function(_0x29f70c){var _0x36db6f=_[_0x4aa6('0x32')](_0x29f70c,'id');var _0x15f05c=[];var _0x3b670b=[];var _0x19c68e=squel['select']();_0x19c68e[_0x4aa6('0x75')](_0x4aa6('0x76'))[_0x4aa6('0x77')](_0x4aa6('0x78'),'tq')['join']('user_has_teams','ut',_0x4aa6('0x79'))['where'](_0x4aa6('0x7a'),_0x4d1cc5[_0x4aa6('0x49')]['id']);for(var _0xdbfa56=0x0;_0xdbfa56<_0x29f70c[_0x4aa6('0x3c')];_0xdbfa56+=0x1){let _0x2bcede=_0x29f70c[_0xdbfa56];for(var _0x11190c=0x0;_0x11190c<_0x2bcede['Agents'][_0x4aa6('0x3c')];_0x11190c+=0x1){let _0x508a37=_0x2bcede[_0x4aa6('0x6b')][_0x11190c];var _0xe3930a=_0x19c68e[_0x4aa6('0x7b')]();_0xe3930a[_0x4aa6('0x40')](_0x4aa6('0x7c'),_0x508a37['id']);_0x3b670b['push'](db[_0x4aa6('0x7d')][_0x4aa6('0x35')](_0xe3930a['toString'](),{'type':db[_0x4aa6('0x7d')][_0x4aa6('0x7e')][_0x4aa6('0x7f')]})['then'](function(_0x5deed1){if(_0x5deed1['length']===0x1){return _0x508a37['id'];}else{var _0x3bef31=_[_0x4aa6('0x80')](_[_0x4aa6('0x32')](_0x5deed1,_0x4aa6('0x81')),function(_0x1ee583){return _[_0x4aa6('0x82')](_0x36db6f,_0x1ee583);});if(_0x3bef31){return _0x508a37['id'];}}}));}}return BPromise[_0x4aa6('0x83')](_0x3b670b)[_0x4aa6('0x2e')](function(_0x42fda7){_0x15f05c=_(_0x15f05c)[_0x4aa6('0x84')](_0x42fda7)[_0x4aa6('0x85')]()['value']();return db[_0x4aa6('0x45')][_0x4aa6('0x4d')]({'where':{'id':_0x4d1cc5[_0x4aa6('0x49')]['id']}})[_0x4aa6('0x2e')](function(_0x1eb92c){return db[_0x4aa6('0x7d')][_0x4aa6('0x6f')](function(_0x56552b){return _0x1eb92c[_0x4aa6('0x74')](_0x4d1cc5[_0x4aa6('0x35')][_0x4aa6('0x6a')],{'transaction':_0x56552b})[_0x4aa6('0x2e')](function(){if(!_[_0x4aa6('0x86')](_0x15f05c)){return _0x1eb92c[_0x4aa6('0x87')](_0x15f05c,{'transaction':_0x56552b});}})[_0x4aa6('0x2e')](function(){_0x15f05c[_0x4aa6('0x71')](function(_0x57b142){socket[_0x4aa6('0x72')](_0x4aa6('0x88'),{'UserId':_0x57b142,'SmsQueueId':_0x1eb92c['id']});});});});});});})[_0x4aa6('0x2e')](respondWithStatusCode(_0x1b2d3a,null))[_0x4aa6('0x58')](handleError(_0x1b2d3a,null));};exports[_0x4aa6('0x89')]=function(_0x3b2ea4,_0x8f8f36,_0x2e4f00){return db[_0x4aa6('0x45')][_0x4aa6('0x4d')]({'where':{'id':_0x3b2ea4['params']['id']}})[_0x4aa6('0x2e')](handleEntityNotFound(_0x8f8f36,null))[_0x4aa6('0x2e')](function(_0x3d296c){if(_0x3d296c){return _0x3d296c[_0x4aa6('0x89')](_0x3b2ea4[_0x4aa6('0x4f')][_0x4aa6('0x6a')],_['omit'](_0x3b2ea4[_0x4aa6('0x4f')],[_0x4aa6('0x6a'),'id'])||{})[_0x4aa6('0x8a')](function(_0x297624){for(var _0x5e45c3=0x0;_0x5e45c3<_0x3b2ea4[_0x4aa6('0x4f')][_0x4aa6('0x6a')][_0x4aa6('0x3c')];_0x5e45c3+=0x1){socket['emit'](_0x4aa6('0x73'),{'UserId':Number(_0x3b2ea4[_0x4aa6('0x4f')]['ids'][_0x5e45c3]),'SmsQueueId':Number(_0x3b2ea4[_0x4aa6('0x49')]['id'])});}return _0x297624;});}})[_0x4aa6('0x2e')](respondWithResult(_0x8f8f36,null))[_0x4aa6('0x58')](handleError(_0x8f8f36,null));};exports[_0x4aa6('0x87')]=function(_0x3ff9bf,_0x27f005,_0x5dca7a){return db[_0x4aa6('0x45')][_0x4aa6('0x4d')]({'where':{'id':_0x3ff9bf['params']['id']}})[_0x4aa6('0x2e')](handleEntityNotFound(_0x27f005,null))['then'](function(_0x3d4cbe){if(_0x3d4cbe){return _0x3d4cbe['removeAgents'](_0x3ff9bf[_0x4aa6('0x35')][_0x4aa6('0x6a')])[_0x4aa6('0x2e')](function(){if(_['isArray'](_0x3ff9bf['query']['ids'])){for(var _0x51eccb=0x0;_0x51eccb<_0x3ff9bf[_0x4aa6('0x35')][_0x4aa6('0x6a')][_0x4aa6('0x3c')];_0x51eccb+=0x1){socket[_0x4aa6('0x72')](_0x4aa6('0x88'),{'UserId':Number(_0x3ff9bf[_0x4aa6('0x35')][_0x4aa6('0x6a')][_0x51eccb]),'SmsQueueId':Number(_0x3ff9bf['params']['id'])});}}else{socket[_0x4aa6('0x72')](_0x4aa6('0x88'),{'UserId':Number(_0x3ff9bf[_0x4aa6('0x35')][_0x4aa6('0x6a')]),'SmsQueueId':Number(_0x3ff9bf[_0x4aa6('0x49')]['id'])});}});}})[_0x4aa6('0x2e')](respondWithStatusCode(_0x27f005,null))[_0x4aa6('0x58')](handleError(_0x27f005,null));};exports[_0x4aa6('0x8b')]=function(_0xf3391b,_0x3bb370,_0x23b3f1){var _0x1835f3={};var _0x41f3e5={};var _0x781f3e;var _0x4dbc20;return db[_0x4aa6('0x45')][_0x4aa6('0x5b')]({'where':{'id':_0xf3391b[_0x4aa6('0x49')]['id']}})[_0x4aa6('0x2e')](handleEntityNotFound(_0x3bb370,null))[_0x4aa6('0x2e')](function(_0x84536a){if(_0x84536a){_0x781f3e=_0x84536a;_0x41f3e5['model']=_[_0x4aa6('0x36')](db[_0x4aa6('0x5f')][_0x4aa6('0x4a')]);_0x41f3e5[_0x4aa6('0x35')]=_[_0x4aa6('0x36')](_0xf3391b['query']);_0x41f3e5['filters']=_[_0x4aa6('0x38')](_0x41f3e5[_0x4aa6('0x39')],_0x41f3e5[_0x4aa6('0x35')]);_0x1835f3[_0x4aa6('0x3a')]=_[_0x4aa6('0x38')](_0x41f3e5[_0x4aa6('0x39')],qs[_0x4aa6('0x3b')](_0xf3391b[_0x4aa6('0x35')][_0x4aa6('0x3b')]));_0x1835f3[_0x4aa6('0x3a')]=_0x1835f3[_0x4aa6('0x3a')][_0x4aa6('0x3c')]?_0x1835f3[_0x4aa6('0x3a')]:_0x41f3e5[_0x4aa6('0x39')];_0x1835f3['order']=qs[_0x4aa6('0x3f')](_0xf3391b[_0x4aa6('0x35')][_0x4aa6('0x3f')]);_0x1835f3[_0x4aa6('0x40')]=qs['filters'](_[_0x4aa6('0x41')](_0xf3391b['query'],_0x41f3e5[_0x4aa6('0x37')]));if(_0xf3391b[_0x4aa6('0x35')][_0x4aa6('0x42')]){_0x1835f3['where']=_['merge'](_0x1835f3[_0x4aa6('0x40')],{'$or':_[_0x4aa6('0x32')](_0x1835f3['attributes'],function(_0xa397d5){var _0x2334f8={};_0x2334f8[_0xa397d5]={'$like':'%'+_0xf3391b[_0x4aa6('0x35')][_0x4aa6('0x42')]+'%'};return _0x2334f8;})});}_0x1835f3=_[_0x4aa6('0x43')]({},_0x1835f3,_0xf3391b[_0x4aa6('0x4c')]);return _0x781f3e['getAgents'](_0x1835f3);}})['then'](function(_0x564621){if(_0x564621){_0x4dbc20=_0x564621[_0x4aa6('0x3c')];if(!_0xf3391b['query']['hasOwnProperty'](_0x4aa6('0x3e'))){_0x1835f3[_0x4aa6('0x23')]=qs[_0x4aa6('0x23')](_0xf3391b['query'][_0x4aa6('0x23')]);_0x1835f3[_0x4aa6('0x21')]=qs[_0x4aa6('0x21')](_0xf3391b['query'][_0x4aa6('0x21')]);}return _0x781f3e['getAgents'](_0x1835f3);}})[_0x4aa6('0x2e')](function(_0x32ad05){if(_0x32ad05){return _0x32ad05?{'count':_0x4dbc20,'rows':_0x32ad05}:null;}})['then'](respondWithResult(_0x3bb370,null))[_0x4aa6('0x58')](handleError(_0x3bb370,null));};
\ No newline at end of file
+var _0x71d8=['findOrCreate','forEach','userSmsQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_sms_queues','join','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','sequelize','QueryTypes','SELECT','every','TeamId','includes','all','compact','value','removeAgents','emit','userSmsQueue:remove','addAgents','omit','spread','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','register','sendStatus','status','end','offset','undefined','count','set','json','apply','save','update','destroy','get','SmsQueues','UserProfileResource','then','stack','name','index','map','SmsQueue','rawAttributes','fieldName','key','query','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filters','merge','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','keys','includeAll','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','error','body','describe','getMembers','findOne','UserSmsQueue','pick','SmsQueueId','User','findAndCountAll','UserId','agent','smsPause','createdAt','format','SIP','updatedAt','getTeams','Team','addTeams','ids','Agents','online','voicePause','interface','flatMap'];(function(_0x6004da,_0x19df50){var _0x4af1dc=function(_0x5122da){while(--_0x5122da){_0x6004da['push'](_0x6004da['shift']());}};_0x4af1dc(++_0x19df50);}(_0x71d8,0xb0));var _0x871d=function(_0x8ff4bc,_0x36bf13){_0x8ff4bc=_0x8ff4bc-0x0;var _0x3630e6=_0x71d8[_0x8ff4bc];return _0x3630e6;};'use strict';var emlformat=require(_0x871d('0x0'));var rimraf=require(_0x871d('0x1'));var zipdir=require(_0x871d('0x2'));var jsonpatch=require(_0x871d('0x3'));var rp=require(_0x871d('0x4'));var moment=require(_0x871d('0x5'));var BPromise=require(_0x871d('0x6'));var Mustache=require(_0x871d('0x7'));var util=require(_0x871d('0x8'));var path=require(_0x871d('0x9'));var sox=require(_0x871d('0xa'));var csv=require('to-csv');var ejs=require(_0x871d('0xb'));var fs=require('fs');var fs_extra=require(_0x871d('0xc'));var _=require(_0x871d('0xd'));var squel=require(_0x871d('0xe'));var crypto=require(_0x871d('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x871d('0x10'));var toCsv=require(_0x871d('0x11'));var querystring=require(_0x871d('0x12'));var Papa=require(_0x871d('0x13'));var Redis=require(_0x871d('0x14'));var authService=require(_0x871d('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0x871d('0x16'));var hardwareService=require(_0x871d('0x17'));var logger=require(_0x871d('0x18'))(_0x871d('0x19'));var utils=require(_0x871d('0x1a'));var config=require(_0x871d('0x1b'));var licenseUtil=require(_0x871d('0x1c'));var db=require(_0x871d('0x1d'))['db'];config[_0x871d('0x1e')]=_[_0x871d('0x1f')](config['redis'],{'host':_0x871d('0x20'),'port':0x18eb});var socket=require(_0x871d('0x21'))(new Redis(config['redis']));require(_0x871d('0x22'))[_0x871d('0x23')](socket);function respondWithStatusCode(_0x882bf1,_0x5a1ce1){_0x5a1ce1=_0x5a1ce1||0xcc;return function(_0x36d422){if(_0x36d422){return _0x882bf1[_0x871d('0x24')](_0x5a1ce1);}return _0x882bf1[_0x871d('0x25')](_0x5a1ce1)[_0x871d('0x26')]();};}function respondWithResult(_0x41a98d,_0x136f2a){_0x136f2a=_0x136f2a||0xc8;return function(_0x53c444){if(_0x53c444){return _0x41a98d[_0x871d('0x25')](_0x136f2a)['json'](_0x53c444);}};}function respondWithFilteredResult(_0x229a99,_0x37f0ca){return function(_0x1eeb7f){if(_0x1eeb7f){var _0x12068d=typeof _0x37f0ca[_0x871d('0x27')]===_0x871d('0x28')&&typeof _0x37f0ca['limit']===_0x871d('0x28');var _0x47f288=_0x1eeb7f[_0x871d('0x29')];var _0x322945=_0x12068d?0x0:_0x37f0ca[_0x871d('0x27')];var _0x33b6dc=_0x12068d?_0x1eeb7f[_0x871d('0x29')]:_0x37f0ca[_0x871d('0x27')]+_0x37f0ca['limit'];var _0x588b83;if(_0x33b6dc>=_0x47f288){_0x33b6dc=_0x47f288;_0x588b83=0xc8;}else{_0x588b83=0xce;}_0x229a99[_0x871d('0x25')](_0x588b83);return _0x229a99[_0x871d('0x2a')]('Content-Range',_0x322945+'-'+_0x33b6dc+'/'+_0x47f288)[_0x871d('0x2b')](_0x1eeb7f);}return null;};}function patchUpdates(_0x2ff62d){return function(_0x474a27){try{jsonpatch[_0x871d('0x2c')](_0x474a27,_0x2ff62d,!![]);}catch(_0x15798d){return BPromise['reject'](_0x15798d);}return _0x474a27[_0x871d('0x2d')]();};}function saveUpdates(_0x17598d,_0x5822d1){return function(_0x30b815){if(_0x30b815){return _0x30b815[_0x871d('0x2e')](_0x17598d)['then'](function(_0x45cd50){return _0x45cd50;});}return null;};}function removeEntity(_0x2225c0,_0x4bc990){return function(_0x5ac3bd){if(_0x5ac3bd){return _0x5ac3bd[_0x871d('0x2f')]()['then'](function(){var _0x1ca670=_0x5ac3bd[_0x871d('0x30')]({'plain':!![]});var _0x325f09=_0x871d('0x31');return db[_0x871d('0x32')]['destroy']({'where':{'type':_0x325f09,'resourceId':_0x1ca670['id']}})[_0x871d('0x33')](function(){return _0x5ac3bd;});})[_0x871d('0x33')](function(){_0x2225c0['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x6e303e,_0xd47e01){return function(_0x18ceae){if(!_0x18ceae){_0x6e303e[_0x871d('0x24')](0x194);}return _0x18ceae;};}function handleError(_0x458682,_0x110400){_0x110400=_0x110400||0x1f4;return function(_0x344f76){logger['error'](_0x344f76[_0x871d('0x34')]);if(_0x344f76[_0x871d('0x35')]){delete _0x344f76[_0x871d('0x35')];}_0x458682[_0x871d('0x25')](_0x110400)['send'](_0x344f76);};}exports[_0x871d('0x36')]=function(_0x2b8cef,_0x2317dd){var _0x3f4b6c={},_0x2cf194={},_0x468ef1={'count':0x0,'rows':[]};var _0x3a6bea=_[_0x871d('0x37')](db[_0x871d('0x38')][_0x871d('0x39')],function(_0xa6c86a){return{'name':_0xa6c86a[_0x871d('0x3a')],'type':_0xa6c86a['type'][_0x871d('0x3b')]};});_0x2cf194['model']=_['map'](_0x3a6bea,'name');_0x2cf194['query']=_['keys'](_0x2b8cef[_0x871d('0x3c')]);_0x2cf194['filters']=_[_0x871d('0x3d')](_0x2cf194['model'],_0x2cf194[_0x871d('0x3c')]);_0x3f4b6c[_0x871d('0x3e')]=_[_0x871d('0x3d')](_0x2cf194[_0x871d('0x3f')],qs[_0x871d('0x40')](_0x2b8cef['query']['fields']));_0x3f4b6c['attributes']=_0x3f4b6c['attributes'][_0x871d('0x41')]?_0x3f4b6c[_0x871d('0x3e')]:_0x2cf194[_0x871d('0x3f')];if(!_0x2b8cef[_0x871d('0x3c')][_0x871d('0x42')](_0x871d('0x43'))){_0x3f4b6c[_0x871d('0x44')]=qs[_0x871d('0x44')](_0x2b8cef[_0x871d('0x3c')][_0x871d('0x44')]);_0x3f4b6c[_0x871d('0x27')]=qs[_0x871d('0x27')](_0x2b8cef['query'][_0x871d('0x27')]);}_0x3f4b6c[_0x871d('0x45')]=qs[_0x871d('0x46')](_0x2b8cef[_0x871d('0x3c')][_0x871d('0x46')]);_0x3f4b6c[_0x871d('0x47')]=qs[_0x871d('0x48')](_['pick'](_0x2b8cef['query'],_0x2cf194['filters']),_0x3a6bea);if(_0x2b8cef['query']['filter']){_0x3f4b6c[_0x871d('0x47')]=_[_0x871d('0x49')](_0x3f4b6c[_0x871d('0x47')],{'$or':_['map'](_0x3a6bea,function(_0xe28984){if(_0xe28984['type']!==_0x871d('0x4a')){var _0x225994={};_0x225994[_0xe28984['name']]={'$like':'%'+_0x2b8cef[_0x871d('0x3c')][_0x871d('0x4b')]+'%'};return _0x225994;}})});}_0x3f4b6c=_['merge']({},_0x3f4b6c,_0x2b8cef[_0x871d('0x4c')]);var _0x194e94={'where':_0x3f4b6c[_0x871d('0x47')]};return db[_0x871d('0x38')]['count'](_0x194e94)[_0x871d('0x33')](function(_0x443514){_0x468ef1['count']=_0x443514;if(_0x2b8cef[_0x871d('0x3c')]['includeAll']){_0x3f4b6c[_0x871d('0x4d')]=[{'all':!![]}];}return db[_0x871d('0x38')][_0x871d('0x4e')](_0x3f4b6c);})[_0x871d('0x33')](function(_0x14f685){_0x468ef1[_0x871d('0x4f')]=_0x14f685;return _0x468ef1;})[_0x871d('0x33')](respondWithFilteredResult(_0x2317dd,_0x3f4b6c))[_0x871d('0x50')](handleError(_0x2317dd,null));};exports[_0x871d('0x51')]=function(_0x275fd2,_0x305675){var _0x9c0e34={'raw':!![],'where':{'id':_0x275fd2[_0x871d('0x52')]['id']}},_0x35d10d={};_0x35d10d['model']=_[_0x871d('0x53')](db[_0x871d('0x38')][_0x871d('0x39')]);_0x35d10d[_0x871d('0x3c')]=_['keys'](_0x275fd2['query']);_0x35d10d[_0x871d('0x48')]=_[_0x871d('0x3d')](_0x35d10d['model'],_0x35d10d[_0x871d('0x3c')]);_0x9c0e34[_0x871d('0x3e')]=_[_0x871d('0x3d')](_0x35d10d[_0x871d('0x3f')],qs[_0x871d('0x40')](_0x275fd2[_0x871d('0x3c')]['fields']));_0x9c0e34[_0x871d('0x3e')]=_0x9c0e34[_0x871d('0x3e')][_0x871d('0x41')]?_0x9c0e34[_0x871d('0x3e')]:_0x35d10d['model'];if(_0x275fd2[_0x871d('0x3c')][_0x871d('0x54')]){_0x9c0e34[_0x871d('0x4d')]=[{'all':!![]}];}_0x9c0e34=_[_0x871d('0x49')]({},_0x9c0e34,_0x275fd2['options']);return db['SmsQueue'][_0x871d('0x55')](_0x9c0e34)[_0x871d('0x33')](handleEntityNotFound(_0x305675,null))[_0x871d('0x33')](respondWithResult(_0x305675,null))[_0x871d('0x50')](handleError(_0x305675,null));};exports[_0x871d('0x56')]=function(_0x407013,_0xf0abc7){return db[_0x871d('0x38')][_0x871d('0x56')](_0x407013['body'],{})[_0x871d('0x33')](function(_0x8ce5ce){var _0x52f4c0=_0x407013[_0x871d('0x57')][_0x871d('0x30')]({'plain':!![]});if(!_0x52f4c0)throw new Error(_0x871d('0x58'));if(_0x52f4c0[_0x871d('0x59')]==='user'){var _0xfe0d1=_0x8ce5ce[_0x871d('0x30')]({'plain':!![]});var _0x4d8032=_0x871d('0x31');return db[_0x871d('0x5a')][_0x871d('0x55')]({'where':{'name':_0x4d8032,'userProfileId':_0x52f4c0[_0x871d('0x5b')]},'raw':!![]})[_0x871d('0x33')](function(_0x59a68f){if(_0x59a68f&&_0x59a68f['autoAssociation']===0x0){return db[_0x871d('0x32')][_0x871d('0x56')]({'name':_0xfe0d1['name'],'resourceId':_0xfe0d1['id'],'type':_0x59a68f[_0x871d('0x35')],'sectionId':_0x59a68f['id']},{})['then'](function(){return _0x8ce5ce;});}else{return _0x8ce5ce;}})['catch'](function(_0x289287){logger[_0x871d('0x5c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x289287);throw _0x289287;});}return _0x8ce5ce;})['then'](respondWithResult(_0xf0abc7,0xc9))[_0x871d('0x50')](handleError(_0xf0abc7,null));};exports[_0x871d('0x2e')]=function(_0x3c3f8d,_0x3ea3ce){if(_0x3c3f8d['body']['id']){delete _0x3c3f8d[_0x871d('0x5d')]['id'];}return db[_0x871d('0x38')][_0x871d('0x55')]({'where':{'id':_0x3c3f8d['params']['id']}})[_0x871d('0x33')](handleEntityNotFound(_0x3ea3ce,null))[_0x871d('0x33')](saveUpdates(_0x3c3f8d[_0x871d('0x5d')],null))[_0x871d('0x33')](respondWithResult(_0x3ea3ce,null))['catch'](handleError(_0x3ea3ce,null));};exports[_0x871d('0x2f')]=function(_0x1f3a9a,_0x571221){return db[_0x871d('0x38')]['find']({'where':{'id':_0x1f3a9a[_0x871d('0x52')]['id']}})[_0x871d('0x33')](handleEntityNotFound(_0x571221,null))[_0x871d('0x33')](removeEntity(_0x571221,null))[_0x871d('0x50')](handleError(_0x571221,null));};exports['describe']=function(_0x4047d3,_0x5f4912){return db[_0x871d('0x38')][_0x871d('0x5e')]()[_0x871d('0x33')](respondWithResult(_0x5f4912,null))[_0x871d('0x50')](handleError(_0x5f4912,null));};exports[_0x871d('0x5f')]=function(_0x51ee23,_0xb5b6dd,_0x1008ba){var _0x5533a1={'raw':!![],'where':{}},_0x491b1c={},_0x5a393f;return db['SmsQueue'][_0x871d('0x60')]({'where':{'id':_0x51ee23[_0x871d('0x52')]['id']}})[_0x871d('0x33')](handleEntityNotFound(_0xb5b6dd,null))['then'](function(_0x29a519){if(_0x29a519){_0x5a393f=_0x29a519[_0x871d('0x30')]({'plain':!![]});_0x491b1c['model']=_[_0x871d('0x53')](db[_0x871d('0x61')]['rawAttributes']);_0x491b1c['query']=_[_0x871d('0x53')](_0x51ee23[_0x871d('0x3c')]);_0x491b1c[_0x871d('0x48')]=_['intersection'](_0x491b1c[_0x871d('0x3f')],_0x491b1c[_0x871d('0x3c')]);_0x5533a1[_0x871d('0x3e')]=_[_0x871d('0x3d')](_0x491b1c['model'],qs[_0x871d('0x40')](_0x51ee23[_0x871d('0x3c')][_0x871d('0x40')]));_0x5533a1['attributes']=_0x5533a1['attributes']['length']?_0x5533a1[_0x871d('0x3e')]:_0x491b1c[_0x871d('0x3f')];if(!_0x51ee23[_0x871d('0x3c')]['hasOwnProperty'](_0x871d('0x43'))){_0x5533a1['limit']=qs[_0x871d('0x44')](_0x51ee23[_0x871d('0x3c')]['limit']);_0x5533a1[_0x871d('0x27')]=qs['offset'](_0x51ee23[_0x871d('0x3c')][_0x871d('0x27')]);}_0x5533a1['order']=qs['sort'](_0x51ee23[_0x871d('0x3c')][_0x871d('0x46')]);_0x5533a1['where']=qs['filters'](_[_0x871d('0x62')](_0x51ee23[_0x871d('0x3c')],_0x491b1c[_0x871d('0x48')]));_0x5533a1[_0x871d('0x47')][_0x871d('0x63')]=_0x29a519['id'];if(_0x51ee23[_0x871d('0x3c')][_0x871d('0x4b')]){_0x5533a1['where']=_[_0x871d('0x49')](_0x5533a1[_0x871d('0x47')],{'$or':_[_0x871d('0x37')](_0x5533a1[_0x871d('0x3e')],function(_0x4372e3){var _0x3bcda4={};_0x3bcda4[_0x4372e3]={'$like':'%'+_0x51ee23[_0x871d('0x3c')][_0x871d('0x4b')]+'%'};return _0x3bcda4;})});}_0x5533a1=_[_0x871d('0x49')]({},_0x5533a1,_0x51ee23[_0x871d('0x4c')]);return db[_0x871d('0x61')]['findAll'](_0x5533a1);}})[_0x871d('0x33')](function(_0x285efa){if(_0x285efa){return db[_0x871d('0x64')][_0x871d('0x65')]({'where':{'id':_[_0x871d('0x37')](_0x285efa,_0x871d('0x66')),'role':_0x871d('0x67')},'attributes':['id','name',_0x871d('0x68'),'updatedAt',_0x871d('0x69')]});}})[_0x871d('0x33')](function(_0x402999){if(_0x402999){return{'count':_0x402999[_0x871d('0x29')],'rows':_[_0x871d('0x37')](_0x402999[_0x871d('0x4f')],function(_0x51552a){return{'membername':_0x51552a[_0x871d('0x35')],'UserId':_0x51552a['id'],'queue_name':_0x5a393f['name'],'SmsQueueId':_0x5a393f['id'],'interface':util[_0x871d('0x6a')]('%s/%s',_0x871d('0x6b'),_0x51552a[_0x871d('0x35')]),'penalty':0x0,'paused':_0x51552a['smsPause'],'createdAt':_0x51552a[_0x871d('0x69')],'updatedAt':_0x51552a[_0x871d('0x6c')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x871d('0x33')](respondWithFilteredResult(_0xb5b6dd,_0x5533a1))[_0x871d('0x50')](handleError(_0xb5b6dd,null));};exports[_0x871d('0x6d')]=function(_0x38c8fc,_0x2a00b2,_0x3f23ff){var _0xa57906={};var _0x521a11={};var _0xa788b6;var _0x4ecf57;return db['SmsQueue'][_0x871d('0x60')]({'where':{'id':_0x38c8fc[_0x871d('0x52')]['id']}})['then'](handleEntityNotFound(_0x2a00b2,null))[_0x871d('0x33')](function(_0x309f4f){if(_0x309f4f){_0xa788b6=_0x309f4f;_0x521a11[_0x871d('0x3f')]=_[_0x871d('0x53')](db[_0x871d('0x6e')][_0x871d('0x39')]);_0x521a11[_0x871d('0x3c')]=_[_0x871d('0x53')](_0x38c8fc[_0x871d('0x3c')]);_0x521a11['filters']=_['intersection'](_0x521a11[_0x871d('0x3f')],_0x521a11[_0x871d('0x3c')]);_0xa57906[_0x871d('0x3e')]=_[_0x871d('0x3d')](_0x521a11[_0x871d('0x3f')],qs[_0x871d('0x40')](_0x38c8fc[_0x871d('0x3c')][_0x871d('0x40')]));_0xa57906['attributes']=_0xa57906[_0x871d('0x3e')][_0x871d('0x41')]?_0xa57906[_0x871d('0x3e')]:_0x521a11[_0x871d('0x3f')];_0xa57906['order']=qs[_0x871d('0x46')](_0x38c8fc[_0x871d('0x3c')][_0x871d('0x46')]);_0xa57906[_0x871d('0x47')]=qs[_0x871d('0x48')](_[_0x871d('0x62')](_0x38c8fc[_0x871d('0x3c')],_0x521a11['filters']));if(_0x38c8fc[_0x871d('0x3c')][_0x871d('0x4b')]){_0xa57906[_0x871d('0x47')]=_[_0x871d('0x49')](_0xa57906[_0x871d('0x47')],{'$or':_['map'](_0xa57906[_0x871d('0x3e')],function(_0x4d8e3b){var _0x16f255={};_0x16f255[_0x4d8e3b]={'$like':'%'+_0x38c8fc[_0x871d('0x3c')][_0x871d('0x4b')]+'%'};return _0x16f255;})});}_0xa57906=_[_0x871d('0x49')]({},_0xa57906,_0x38c8fc[_0x871d('0x4c')]);return _0xa788b6[_0x871d('0x6d')](_0xa57906);}})[_0x871d('0x33')](function(_0x149b19){if(_0x149b19){_0x4ecf57=_0x149b19['length'];if(!_0x38c8fc[_0x871d('0x3c')][_0x871d('0x42')](_0x871d('0x43'))){_0xa57906[_0x871d('0x44')]=qs[_0x871d('0x44')](_0x38c8fc['query']['limit']);_0xa57906[_0x871d('0x27')]=qs[_0x871d('0x27')](_0x38c8fc[_0x871d('0x3c')]['offset']);}return _0xa788b6[_0x871d('0x6d')](_0xa57906);}})[_0x871d('0x33')](function(_0x5a0060){if(_0x5a0060){return _0x5a0060?{'count':_0x4ecf57,'rows':_0x5a0060}:null;}})['then'](respondWithResult(_0x2a00b2,null))[_0x871d('0x50')](handleError(_0x2a00b2,null));};exports[_0x871d('0x6f')]=function(_0x3ad9f3,_0xdf3ef4,_0x1afbc1){var _0x1e548a=_0x3ad9f3[_0x871d('0x5d')][_0x871d('0x70')];return db[_0x871d('0x6e')][_0x871d('0x4e')]({'where':{'id':_0x1e548a},'attributes':['id'],'include':[{'model':db['User'],'as':_0x871d('0x71'),'attributes':['id','name',_0x871d('0x72'),_0x871d('0x73'),_0x871d('0x74')],'raw':!![]}]})[_0x871d('0x33')](function(_0x4cbf7d){if(_0x4cbf7d){var _0x115ee8=_[_0x871d('0x75')](_0x4cbf7d,function(_0x24d0c0){var _0x14ad9e=_0x24d0c0[_0x871d('0x30')]({'plain':!![]});return _0x14ad9e[_0x871d('0x71')];});return db[_0x871d('0x38')]['find']({'where':{'id':_0x3ad9f3[_0x871d('0x52')]['id']}})[_0x871d('0x33')](function(_0x2b0730){return db['sequelize']['transaction'](function(_0x23bf0d){return _0x2b0730[_0x871d('0x6f')](_0x1e548a,{'transaction':_0x23bf0d})[_0x871d('0x33')](function(){return BPromise['each'](_0x115ee8,function(_0xafcfa4){return db[_0x871d('0x61')][_0x871d('0x76')]({'where':{'UserId':_0xafcfa4['id'],'SmsQueueId':_0x3ad9f3[_0x871d('0x52')]['id']},'transaction':_0x23bf0d});});})[_0x871d('0x33')](function(){_0x115ee8[_0x871d('0x77')](function(_0x39ac57){socket['emit'](_0x871d('0x78'),{'UserId':_0x39ac57['id'],'SmsQueueId':_0x2b0730['id']});});});});});}})[_0x871d('0x33')](respondWithStatusCode(_0xdf3ef4,null))[_0x871d('0x50')](handleError(_0xdf3ef4,null));};exports[_0x871d('0x79')]=function(_0x314ce2,_0x2f40b7,_0x1885cc){return db[_0x871d('0x6e')][_0x871d('0x4e')]({'where':{'id':_0x314ce2[_0x871d('0x3c')]['ids']},'attributes':['id'],'include':[{'model':db[_0x871d('0x64')],'as':_0x871d('0x71'),'attributes':['id'],'raw':!![]}]})[_0x871d('0x33')](handleEntityNotFound(_0x2f40b7,null))[_0x871d('0x33')](function(_0x2ce3e3){var _0x3df27f=_[_0x871d('0x37')](_0x2ce3e3,'id');var _0x404da2=[];var _0x111b1b=[];var _0x3ddadc=squel[_0x871d('0x7a')]();_0x3ddadc[_0x871d('0x7b')](_0x871d('0x7c'))[_0x871d('0x7d')](_0x871d('0x7e'),'tq')[_0x871d('0x7f')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0x871d('0x47')](_0x871d('0x80'),_0x314ce2['params']['id']);for(var _0x4e1fac=0x0;_0x4e1fac<_0x2ce3e3[_0x871d('0x41')];_0x4e1fac+=0x1){let _0x58f036=_0x2ce3e3[_0x4e1fac];for(var _0x128b3f=0x0;_0x128b3f<_0x58f036['Agents'][_0x871d('0x41')];_0x128b3f+=0x1){let _0x107927=_0x58f036[_0x871d('0x71')][_0x128b3f];var _0xc17008=_0x3ddadc[_0x871d('0x81')]();_0xc17008[_0x871d('0x47')](_0x871d('0x82'),_0x107927['id']);_0x111b1b['push'](db[_0x871d('0x83')][_0x871d('0x3c')](_0xc17008['toString'](),{'type':db['sequelize'][_0x871d('0x84')][_0x871d('0x85')]})[_0x871d('0x33')](function(_0xc658af){if(_0xc658af[_0x871d('0x41')]===0x1){return _0x107927['id'];}else{var _0x593835=_[_0x871d('0x86')](_[_0x871d('0x37')](_0xc658af,_0x871d('0x87')),function(_0x2d3dd7){return _[_0x871d('0x88')](_0x3df27f,_0x2d3dd7);});if(_0x593835){return _0x107927['id'];}}}));}}return BPromise[_0x871d('0x89')](_0x111b1b)['then'](function(_0x3633e7){_0x404da2=_(_0x404da2)['union'](_0x3633e7)[_0x871d('0x8a')]()[_0x871d('0x8b')]();return db[_0x871d('0x38')][_0x871d('0x55')]({'where':{'id':_0x314ce2[_0x871d('0x52')]['id']}})[_0x871d('0x33')](function(_0x24b926){return db['sequelize']['transaction'](function(_0x470637){return _0x24b926[_0x871d('0x79')](_0x314ce2[_0x871d('0x3c')][_0x871d('0x70')],{'transaction':_0x470637})[_0x871d('0x33')](function(){if(!_['isEmpty'](_0x404da2)){return _0x24b926[_0x871d('0x8c')](_0x404da2,{'transaction':_0x470637});}})[_0x871d('0x33')](function(){_0x404da2[_0x871d('0x77')](function(_0x1c4866){socket[_0x871d('0x8d')](_0x871d('0x8e'),{'UserId':_0x1c4866,'SmsQueueId':_0x24b926['id']});});});});});});})[_0x871d('0x33')](respondWithStatusCode(_0x2f40b7,null))[_0x871d('0x50')](handleError(_0x2f40b7,null));};exports[_0x871d('0x8f')]=function(_0x2e7d12,_0x1ed97a,_0xbc264d){return db['SmsQueue'][_0x871d('0x55')]({'where':{'id':_0x2e7d12[_0x871d('0x52')]['id']}})[_0x871d('0x33')](handleEntityNotFound(_0x1ed97a,null))['then'](function(_0x21e7f2){if(_0x21e7f2){return _0x21e7f2['addAgents'](_0x2e7d12[_0x871d('0x5d')]['ids'],_[_0x871d('0x90')](_0x2e7d12['body'],[_0x871d('0x70'),'id'])||{})[_0x871d('0x91')](function(_0x2440ed){for(var _0x5bc881=0x0;_0x5bc881<_0x2e7d12[_0x871d('0x5d')][_0x871d('0x70')][_0x871d('0x41')];_0x5bc881+=0x1){socket[_0x871d('0x8d')]('userSmsQueue:save',{'UserId':Number(_0x2e7d12[_0x871d('0x5d')][_0x871d('0x70')][_0x5bc881]),'SmsQueueId':Number(_0x2e7d12[_0x871d('0x52')]['id'])});}return _0x2440ed;});}})[_0x871d('0x33')](respondWithResult(_0x1ed97a,null))[_0x871d('0x50')](handleError(_0x1ed97a,null));};exports['removeAgents']=function(_0x2bede8,_0x27444d,_0x2f966f){return db[_0x871d('0x38')]['find']({'where':{'id':_0x2bede8[_0x871d('0x52')]['id']}})['then'](handleEntityNotFound(_0x27444d,null))['then'](function(_0x574d41){if(_0x574d41){return _0x574d41[_0x871d('0x8c')](_0x2bede8[_0x871d('0x3c')][_0x871d('0x70')])[_0x871d('0x33')](function(){if(_['isArray'](_0x2bede8[_0x871d('0x3c')][_0x871d('0x70')])){for(var _0x45c316=0x0;_0x45c316<_0x2bede8['query'][_0x871d('0x70')][_0x871d('0x41')];_0x45c316+=0x1){socket[_0x871d('0x8d')]('userSmsQueue:remove',{'UserId':Number(_0x2bede8['query'][_0x871d('0x70')][_0x45c316]),'SmsQueueId':Number(_0x2bede8[_0x871d('0x52')]['id'])});}}else{socket[_0x871d('0x8d')](_0x871d('0x8e'),{'UserId':Number(_0x2bede8['query'][_0x871d('0x70')]),'SmsQueueId':Number(_0x2bede8['params']['id'])});}});}})[_0x871d('0x33')](respondWithStatusCode(_0x27444d,null))['catch'](handleError(_0x27444d,null));};exports['getAgents']=function(_0x193471,_0x10db9b,_0x5184c8){var _0x1ecbdb={};var _0x2d3ea5={};var _0x1941e7;var _0x556541;return db[_0x871d('0x38')][_0x871d('0x60')]({'where':{'id':_0x193471[_0x871d('0x52')]['id']}})[_0x871d('0x33')](handleEntityNotFound(_0x10db9b,null))[_0x871d('0x33')](function(_0x2dbdfc){if(_0x2dbdfc){_0x1941e7=_0x2dbdfc;_0x2d3ea5['model']=_[_0x871d('0x53')](db[_0x871d('0x64')][_0x871d('0x39')]);_0x2d3ea5[_0x871d('0x3c')]=_['keys'](_0x193471['query']);_0x2d3ea5[_0x871d('0x48')]=_['intersection'](_0x2d3ea5[_0x871d('0x3f')],_0x2d3ea5[_0x871d('0x3c')]);_0x1ecbdb['attributes']=_[_0x871d('0x3d')](_0x2d3ea5[_0x871d('0x3f')],qs[_0x871d('0x40')](_0x193471[_0x871d('0x3c')][_0x871d('0x40')]));_0x1ecbdb[_0x871d('0x3e')]=_0x1ecbdb[_0x871d('0x3e')][_0x871d('0x41')]?_0x1ecbdb[_0x871d('0x3e')]:_0x2d3ea5[_0x871d('0x3f')];_0x1ecbdb[_0x871d('0x45')]=qs[_0x871d('0x46')](_0x193471[_0x871d('0x3c')][_0x871d('0x46')]);_0x1ecbdb['where']=qs[_0x871d('0x48')](_[_0x871d('0x62')](_0x193471[_0x871d('0x3c')],_0x2d3ea5[_0x871d('0x48')]));if(_0x193471['query'][_0x871d('0x4b')]){_0x1ecbdb[_0x871d('0x47')]=_[_0x871d('0x49')](_0x1ecbdb[_0x871d('0x47')],{'$or':_['map'](_0x1ecbdb['attributes'],function(_0x522ff5){var _0x5e7e9b={};_0x5e7e9b[_0x522ff5]={'$like':'%'+_0x193471[_0x871d('0x3c')][_0x871d('0x4b')]+'%'};return _0x5e7e9b;})});}_0x1ecbdb=_['merge']({},_0x1ecbdb,_0x193471[_0x871d('0x4c')]);return _0x1941e7[_0x871d('0x92')](_0x1ecbdb);}})[_0x871d('0x33')](function(_0x3b606c){if(_0x3b606c){_0x556541=_0x3b606c[_0x871d('0x41')];if(!_0x193471[_0x871d('0x3c')][_0x871d('0x42')](_0x871d('0x43'))){_0x1ecbdb[_0x871d('0x44')]=qs[_0x871d('0x44')](_0x193471['query']['limit']);_0x1ecbdb['offset']=qs[_0x871d('0x27')](_0x193471[_0x871d('0x3c')][_0x871d('0x27')]);}return _0x1941e7[_0x871d('0x92')](_0x1ecbdb);}})[_0x871d('0x33')](function(_0x12822d){if(_0x12822d){return _0x12822d?{'count':_0x556541,'rows':_0x12822d}:null;}})[_0x871d('0x33')](respondWithResult(_0x10db9b,null))[_0x871d('0x50')](handleError(_0x10db9b,null));};
\ No newline at end of file
index fc4e546..9176b7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ae8=['setMaxListeners','save','emit','hook','../../mysqldb'];(function(_0x5677ab,_0x402c40){var _0x57dd29=function(_0x5af7e6){while(--_0x5af7e6){_0x5677ab['push'](_0x5677ab['shift']());}};_0x57dd29(++_0x402c40);}(_0x7ae8,0x1f3));var _0x87ae=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x7ae8[_0x14add3];return _0x4a174f;};'use strict';var EventEmitter=require('events');var SmsQueue=require(_0x87ae('0x0'))['db']['SmsQueue'];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x87ae('0x1')](0x0);var events={'afterCreate':_0x87ae('0x2'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x3bed92){return function(_0x2779be,_0x11ca72,_0x216c84){SmsQueueEvents[_0x87ae('0x3')](_0x3bed92+':'+_0x2779be['id'],_0x2779be);SmsQueueEvents[_0x87ae('0x3')](_0x3bed92,_0x2779be);_0x216c84(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsQueue[_0x87ae('0x4')](e,emitEvent(event));}}module['exports']=SmsQueueEvents;
\ No newline at end of file
+var _0xca2f=['emit','hasOwnProperty','hook','exports','events','SmsQueue','setMaxListeners','save','remove'];(function(_0x401ccd,_0x140815){var _0x5a57ad=function(_0x8ad698){while(--_0x8ad698){_0x401ccd['push'](_0x401ccd['shift']());}};_0x5a57ad(++_0x140815);}(_0xca2f,0x67));var _0xfca2=function(_0x37676d,_0x55fb68){_0x37676d=_0x37676d-0x0;var _0x329144=_0xca2f[_0x37676d];return _0x329144;};'use strict';var EventEmitter=require(_0xfca2('0x0'));var SmsQueue=require('../../mysqldb')['db'][_0xfca2('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0xfca2('0x2')](0x0);var events={'afterCreate':_0xfca2('0x3'),'afterUpdate':'update','afterDestroy':_0xfca2('0x4')};function emitEvent(_0x2efc60){return function(_0x529d60,_0x5cfb1a,_0x9b83be){SmsQueueEvents[_0xfca2('0x5')](_0x2efc60+':'+_0x529d60['id'],_0x529d60);SmsQueueEvents[_0xfca2('0x5')](_0x2efc60,_0x529d60);_0x9b83be(null);};}for(var e in events){if(events[_0xfca2('0x6')](e)){var event=events[e];SmsQueue[_0xfca2('0x7')](e,emitEvent(event));}}module[_0xfca2('0x8')]=SmsQueueEvents;
\ No newline at end of file
index 14f3dd2..21602ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7017=['sms_queues','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./smsQueue.attributes','define','SmsQueue'];(function(_0x214936,_0x185199){var _0x624641=function(_0x4e754e){while(--_0x4e754e){_0x214936['push'](_0x214936['shift']());}};_0x624641(++_0x185199);}(_0x7017,0x1ae));var _0x7701=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x7017[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x7701('0x0'));var util=require(_0x7701('0x1'));var logger=require(_0x7701('0x2'))(_0x7701('0x3'));var moment=require('moment');var BPromise=require(_0x7701('0x4'));var rp=require(_0x7701('0x5'));var fs=require('fs');var path=require(_0x7701('0x6'));var rimraf=require(_0x7701('0x7'));var config=require(_0x7701('0x8'));var attributes=require(_0x7701('0x9'));module['exports']=function(_0x48a012,_0x4dd21f){return _0x48a012[_0x7701('0xa')](_0x7701('0xb'),attributes,{'tableName':_0x7701('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2162=['api','bluebird','request-promise','path','rimraf','../../config/environment','./smsQueue.attributes','define','SmsQueue','sms_queues','lodash','util','../../config/logger'];(function(_0x1e5310,_0x1aab3b){var _0x413b87=function(_0xe8dcaa){while(--_0xe8dcaa){_0x1e5310['push'](_0x1e5310['shift']());}};_0x413b87(++_0x1aab3b);}(_0x2162,0x1b7));var _0x2216=function(_0x2892da,_0x191a40){_0x2892da=_0x2892da-0x0;var _0x28cff2=_0x2162[_0x2892da];return _0x28cff2;};'use strict';var _=require(_0x2216('0x0'));var util=require(_0x2216('0x1'));var logger=require(_0x2216('0x2'))(_0x2216('0x3'));var moment=require('moment');var BPromise=require(_0x2216('0x4'));var rp=require(_0x2216('0x5'));var fs=require('fs');var path=require(_0x2216('0x6'));var rimraf=require(_0x2216('0x7'));var config=require(_0x2216('0x8'));var attributes=require(_0x2216('0x9'));module['exports']=function(_0x5d0359,_0x6082e3){return _0x5d0359[_0x2216('0xa')](_0x2216('0xb'),attributes,{'tableName':_0x2216('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 296c88c..572b8af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61af=['./smsQueue.socket','register','request','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','error','code','message','result','SmsQueue','findAll','options','where','attributes','limit','include','map','model','GetSmsQueue','debug','stringify','catch','ShowSmsQueue','find','raw','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter'];(function(_0x2f3d89,_0x44670a){var _0x37efbc=function(_0x3c637e){while(--_0x3c637e){_0x2f3d89['push'](_0x2f3d89['shift']());}};_0x37efbc(++_0x44670a);}(_0x61af,0x1de));var _0xf61a=function(_0x7560e,_0x594062){_0x7560e=_0x7560e-0x0;var _0x4975a1=_0x61af[_0x7560e];return _0x4975a1;};'use strict';var _=require(_0xf61a('0x0'));var util=require('util');var moment=require(_0xf61a('0x1'));var BPromise=require(_0xf61a('0x2'));var rs=require(_0xf61a('0x3'));var fs=require('fs');var Redis=require(_0xf61a('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xf61a('0x5'));var logger=require(_0xf61a('0x6'))('rpc');var config=require(_0xf61a('0x7'));var jayson=require(_0xf61a('0x8'));var client=jayson[_0xf61a('0x9')]['http']({'port':0x232a});config[_0xf61a('0xa')]=_[_0xf61a('0xb')](config[_0xf61a('0xa')],{'host':_0xf61a('0xc'),'port':0x18eb});var socket=require(_0xf61a('0xd'))(new Redis(config['redis']));require(_0xf61a('0xe'))[_0xf61a('0xf')](socket);function respondWithRpcPromise(_0x14efa7,_0x3c15a9,_0x320ff0){return new BPromise(function(_0x3549f0,_0x338e29){return client[_0xf61a('0x10')](_0x14efa7,_0x320ff0)[_0xf61a('0x11')](function(_0xbb0dfb){logger[_0xf61a('0x12')](_0xf61a('0x13'),_0x3c15a9,_0xf61a('0x14'));logger['debug']('SmsQueue,\x20%s,\x20%s,\x20%s',_0x3c15a9,_0xf61a('0x14'),JSON['stringify'](_0xbb0dfb));if(_0xbb0dfb['error']){if(_0xbb0dfb[_0xf61a('0x15')][_0xf61a('0x16')]===0x1f4){logger[_0xf61a('0x15')]('SmsQueue,\x20%s,\x20%s',_0x3c15a9,_0xbb0dfb[_0xf61a('0x15')][_0xf61a('0x17')]);return _0x338e29(_0xbb0dfb[_0xf61a('0x15')][_0xf61a('0x17')]);}logger[_0xf61a('0x15')](_0xf61a('0x13'),_0x3c15a9,_0xbb0dfb[_0xf61a('0x15')][_0xf61a('0x17')]);return _0x3549f0(_0xbb0dfb[_0xf61a('0x15')][_0xf61a('0x17')]);}else{logger[_0xf61a('0x12')](_0xf61a('0x13'),_0x3c15a9,_0xf61a('0x14'));_0x3549f0(_0xbb0dfb[_0xf61a('0x18')][_0xf61a('0x17')]);}})['catch'](function(_0x4d408a){logger[_0xf61a('0x15')](_0xf61a('0x13'),_0x3c15a9,_0x4d408a);_0x338e29(_0x4d408a);});});}exports['GetSmsQueue']=function(_0x4aa40a){var _0x713857=this;return new Promise(function(_0x34e899,_0x242c6c){return db[_0xf61a('0x19')][_0xf61a('0x1a')]({'raw':_0x4aa40a[_0xf61a('0x1b')]?_0x4aa40a[_0xf61a('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x4aa40a['options']?_0x4aa40a[_0xf61a('0x1b')][_0xf61a('0x1c')]||null:null,'attributes':_0x4aa40a['options']?_0x4aa40a[_0xf61a('0x1b')][_0xf61a('0x1d')]||null:null,'limit':_0x4aa40a['options']?_0x4aa40a[_0xf61a('0x1b')][_0xf61a('0x1e')]||null:null,'include':_0x4aa40a[_0xf61a('0x1b')]?_0x4aa40a[_0xf61a('0x1b')][_0xf61a('0x1f')]?_[_0xf61a('0x20')](_0x4aa40a[_0xf61a('0x1b')]['include'],function(_0x2f0596){return{'model':db[_0x2f0596[_0xf61a('0x21')]],'as':_0x2f0596['as'],'attributes':_0x2f0596['attributes'],'include':_0x2f0596[_0xf61a('0x1f')]?_[_0xf61a('0x20')](_0x2f0596[_0xf61a('0x1f')],function(_0x190fd7){return{'model':db[_0x190fd7[_0xf61a('0x21')]],'as':_0x190fd7['as'],'attributes':_0x190fd7[_0xf61a('0x1d')],'include':_0x190fd7[_0xf61a('0x1f')]?_[_0xf61a('0x20')](_0x190fd7[_0xf61a('0x1f')],function(_0x4bada4){return{'model':db[_0x4bada4[_0xf61a('0x21')]],'as':_0x4bada4['as'],'attributes':_0x4bada4[_0xf61a('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xf61a('0x11')](function(_0x54f169){logger[_0xf61a('0x12')](_0xf61a('0x22'),_0x4aa40a);logger[_0xf61a('0x23')](_0xf61a('0x22'),_0x4aa40a,JSON[_0xf61a('0x24')](_0x54f169));_0x34e899(_0x54f169);})[_0xf61a('0x25')](function(_0x283202){logger[_0xf61a('0x15')]('GetSmsQueue',_0x283202['message'],_0x4aa40a);_0x242c6c(_0x713857['error'](0x1f4,_0x283202[_0xf61a('0x17')]));});});};exports[_0xf61a('0x26')]=function(_0x1e7753){var _0x527d57=this;return new Promise(function(_0x1cd0e7,_0x483b7b){return db['SmsQueue'][_0xf61a('0x27')]({'raw':_0x1e7753['options']?_0x1e7753[_0xf61a('0x1b')][_0xf61a('0x28')]===undefined?!![]:![]:!![],'where':_0x1e7753[_0xf61a('0x1b')]?_0x1e7753[_0xf61a('0x1b')][_0xf61a('0x1c')]||null:null,'attributes':_0x1e7753[_0xf61a('0x1b')]?_0x1e7753[_0xf61a('0x1b')]['attributes']||null:null,'include':_0x1e7753['options']?_0x1e7753['options']['include']?_[_0xf61a('0x20')](_0x1e7753['options'][_0xf61a('0x1f')],function(_0x9f3c8b){return{'model':db[_0x9f3c8b[_0xf61a('0x21')]],'as':_0x9f3c8b['as'],'attributes':_0x9f3c8b[_0xf61a('0x1d')],'include':_0x9f3c8b['include']?_[_0xf61a('0x20')](_0x9f3c8b['include'],function(_0x529f94){return{'model':db[_0x529f94[_0xf61a('0x21')]],'as':_0x529f94['as'],'attributes':_0x529f94['attributes'],'include':_0x529f94[_0xf61a('0x1f')]?_[_0xf61a('0x20')](_0x529f94[_0xf61a('0x1f')],function(_0x52dea2){return{'model':db[_0x52dea2['model']],'as':_0x52dea2['as'],'attributes':_0x52dea2['attributes']};}):[]};}):[]};}):[]:[]})[_0xf61a('0x11')](function(_0x5d1538){logger[_0xf61a('0x12')]('ShowSmsQueue',_0x1e7753);logger[_0xf61a('0x23')]('ShowSmsQueue',_0x1e7753,JSON[_0xf61a('0x24')](_0x5d1538));_0x1cd0e7(_0x5d1538);})[_0xf61a('0x25')](function(_0x8b3199){logger[_0xf61a('0x15')](_0xf61a('0x26'),_0x8b3199[_0xf61a('0x17')],_0x1e7753);_0x483b7b(_0x527d57[_0xf61a('0x15')](0x1f4,_0x8b3199[_0xf61a('0x17')]));});});};
\ No newline at end of file
+var _0xd795=['limit','include','map','model','ShowSmsQueue','SmsQueue','find','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./smsQueue.socket','register','then','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','GetSmsQueue','findAll','options','raw','where','attributes'];(function(_0x911aa,_0x5cb8b5){var _0x327202=function(_0x52308e){while(--_0x52308e){_0x911aa['push'](_0x911aa['shift']());}};_0x327202(++_0x5cb8b5);}(_0xd795,0xab));var _0x5d79=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0xd795[_0x465a0c];return _0x1e202e;};'use strict';var _=require('lodash');var util=require(_0x5d79('0x0'));var moment=require(_0x5d79('0x1'));var BPromise=require(_0x5d79('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5d79('0x3'))['db'];var utils=require(_0x5d79('0x4'));var logger=require(_0x5d79('0x5'))(_0x5d79('0x6'));var config=require(_0x5d79('0x7'));var jayson=require(_0x5d79('0x8'));var client=jayson[_0x5d79('0x9')][_0x5d79('0xa')]({'port':0x232a});config['redis']=_[_0x5d79('0xb')](config[_0x5d79('0xc')],{'host':_0x5d79('0xd'),'port':0x18eb});var socket=require(_0x5d79('0xe'))(new Redis(config[_0x5d79('0xc')]));require(_0x5d79('0xf'))[_0x5d79('0x10')](socket);function respondWithRpcPromise(_0x4f0172,_0x4ca959,_0x2cd78d){return new BPromise(function(_0x2d55ce,_0x5de0ab){return client['request'](_0x4f0172,_0x2cd78d)[_0x5d79('0x11')](function(_0x69694d){logger['info'](_0x5d79('0x12'),_0x4ca959,_0x5d79('0x13'));logger[_0x5d79('0x14')]('SmsQueue,\x20%s,\x20%s,\x20%s',_0x4ca959,_0x5d79('0x13'),JSON[_0x5d79('0x15')](_0x69694d));if(_0x69694d[_0x5d79('0x16')]){if(_0x69694d[_0x5d79('0x16')][_0x5d79('0x17')]===0x1f4){logger[_0x5d79('0x16')](_0x5d79('0x12'),_0x4ca959,_0x69694d[_0x5d79('0x16')][_0x5d79('0x18')]);return _0x5de0ab(_0x69694d[_0x5d79('0x16')][_0x5d79('0x18')]);}logger[_0x5d79('0x16')](_0x5d79('0x12'),_0x4ca959,_0x69694d[_0x5d79('0x16')][_0x5d79('0x18')]);return _0x2d55ce(_0x69694d[_0x5d79('0x16')][_0x5d79('0x18')]);}else{logger[_0x5d79('0x19')]('SmsQueue,\x20%s,\x20%s',_0x4ca959,_0x5d79('0x13'));_0x2d55ce(_0x69694d[_0x5d79('0x1a')][_0x5d79('0x18')]);}})[_0x5d79('0x1b')](function(_0x4a4eb6){logger[_0x5d79('0x16')](_0x5d79('0x12'),_0x4ca959,_0x4a4eb6);_0x5de0ab(_0x4a4eb6);});});}exports[_0x5d79('0x1c')]=function(_0x3a8a75){var _0x34c297=this;return new Promise(function(_0x4bd647,_0x225a36){return db['SmsQueue'][_0x5d79('0x1d')]({'raw':_0x3a8a75[_0x5d79('0x1e')]?_0x3a8a75['options'][_0x5d79('0x1f')]===undefined?!![]:![]:!![],'where':_0x3a8a75[_0x5d79('0x1e')]?_0x3a8a75[_0x5d79('0x1e')][_0x5d79('0x20')]||null:null,'attributes':_0x3a8a75['options']?_0x3a8a75[_0x5d79('0x1e')][_0x5d79('0x21')]||null:null,'limit':_0x3a8a75['options']?_0x3a8a75[_0x5d79('0x1e')][_0x5d79('0x22')]||null:null,'include':_0x3a8a75[_0x5d79('0x1e')]?_0x3a8a75[_0x5d79('0x1e')][_0x5d79('0x23')]?_[_0x5d79('0x24')](_0x3a8a75[_0x5d79('0x1e')][_0x5d79('0x23')],function(_0x208d28){return{'model':db[_0x208d28[_0x5d79('0x25')]],'as':_0x208d28['as'],'attributes':_0x208d28[_0x5d79('0x21')],'include':_0x208d28[_0x5d79('0x23')]?_[_0x5d79('0x24')](_0x208d28[_0x5d79('0x23')],function(_0x180f07){return{'model':db[_0x180f07[_0x5d79('0x25')]],'as':_0x180f07['as'],'attributes':_0x180f07['attributes'],'include':_0x180f07[_0x5d79('0x23')]?_[_0x5d79('0x24')](_0x180f07[_0x5d79('0x23')],function(_0x3312f6){return{'model':db[_0x3312f6['model']],'as':_0x3312f6['as'],'attributes':_0x3312f6[_0x5d79('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x40ffe9){logger[_0x5d79('0x19')](_0x5d79('0x1c'),_0x3a8a75);logger[_0x5d79('0x14')](_0x5d79('0x1c'),_0x3a8a75,JSON[_0x5d79('0x15')](_0x40ffe9));_0x4bd647(_0x40ffe9);})[_0x5d79('0x1b')](function(_0xa35903){logger['error']('GetSmsQueue',_0xa35903[_0x5d79('0x18')],_0x3a8a75);_0x225a36(_0x34c297['error'](0x1f4,_0xa35903[_0x5d79('0x18')]));});});};exports[_0x5d79('0x26')]=function(_0x263613){var _0xf52ea0=this;return new Promise(function(_0x4eef55,_0x35edf8){return db[_0x5d79('0x27')][_0x5d79('0x28')]({'raw':_0x263613[_0x5d79('0x1e')]?_0x263613[_0x5d79('0x1e')][_0x5d79('0x1f')]===undefined?!![]:![]:!![],'where':_0x263613[_0x5d79('0x1e')]?_0x263613[_0x5d79('0x1e')][_0x5d79('0x20')]||null:null,'attributes':_0x263613[_0x5d79('0x1e')]?_0x263613['options']['attributes']||null:null,'include':_0x263613[_0x5d79('0x1e')]?_0x263613['options'][_0x5d79('0x23')]?_['map'](_0x263613[_0x5d79('0x1e')][_0x5d79('0x23')],function(_0x1ea8f3){return{'model':db[_0x1ea8f3[_0x5d79('0x25')]],'as':_0x1ea8f3['as'],'attributes':_0x1ea8f3[_0x5d79('0x21')],'include':_0x1ea8f3[_0x5d79('0x23')]?_['map'](_0x1ea8f3[_0x5d79('0x23')],function(_0x46c50f){return{'model':db[_0x46c50f[_0x5d79('0x25')]],'as':_0x46c50f['as'],'attributes':_0x46c50f['attributes'],'include':_0x46c50f[_0x5d79('0x23')]?_['map'](_0x46c50f[_0x5d79('0x23')],function(_0x3428ac){return{'model':db[_0x3428ac['model']],'as':_0x3428ac['as'],'attributes':_0x3428ac[_0x5d79('0x21')]};}):[]};}):[]};}):[]:[]})[_0x5d79('0x11')](function(_0x240576){logger['info'](_0x5d79('0x26'),_0x263613);logger['debug']('ShowSmsQueue',_0x263613,JSON[_0x5d79('0x15')](_0x240576));_0x4eef55(_0x240576);})['catch'](function(_0x273894){logger[_0x5d79('0x16')](_0x5d79('0x26'),_0x273894[_0x5d79('0x18')],_0x263613);_0x35edf8(_0xf52ea0[_0x5d79('0x16')](0x1f4,_0x273894['message']));});});};
\ No newline at end of file
index e1e3dc4..112dc18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe556=['./smsQueue.events','save','remove','update','emit','removeListener','register','length','smsQueue:'];(function(_0x367041,_0x258002){var _0x4b2e76=function(_0x438af9){while(--_0x438af9){_0x367041['push'](_0x367041['shift']());}};_0x4b2e76(++_0x258002);}(_0xe556,0xe1));var _0x6e55=function(_0x5ae38c,_0x716e57){_0x5ae38c=_0x5ae38c-0x0;var _0x343bdf=_0xe556[_0x5ae38c];return _0x343bdf;};'use strict';var SmsQueueEvents=require(_0x6e55('0x0'));var events=[_0x6e55('0x1'),_0x6e55('0x2'),_0x6e55('0x3')];function createListener(_0x1d343d,_0x2fac9e){return function(_0x258ea6){_0x2fac9e[_0x6e55('0x4')](_0x1d343d,_0x258ea6);};}function removeListener(_0x1e3f3e,_0x477722){return function(){SmsQueueEvents[_0x6e55('0x5')](_0x1e3f3e,_0x477722);};}exports[_0x6e55('0x6')]=function(_0x15ffeb){for(var _0x4dc91b=0x0,_0x28ad4e=events[_0x6e55('0x7')];_0x4dc91b<_0x28ad4e;_0x4dc91b++){var _0x3cffc6=events[_0x4dc91b];var _0x326b3f=createListener(_0x6e55('0x8')+_0x3cffc6,_0x15ffeb);SmsQueueEvents['on'](_0x3cffc6,_0x326b3f);}};
\ No newline at end of file
+var _0xbe0d=['./smsQueue.events','save','remove','update','emit','register','length','smsQueue:'];(function(_0x1df0f8,_0x419080){var _0x52b311=function(_0x442f28){while(--_0x442f28){_0x1df0f8['push'](_0x1df0f8['shift']());}};_0x52b311(++_0x419080);}(_0xbe0d,0x140));var _0xdbe0=function(_0x30dea6,_0x45559f){_0x30dea6=_0x30dea6-0x0;var _0x1a70bd=_0xbe0d[_0x30dea6];return _0x1a70bd;};'use strict';var SmsQueueEvents=require(_0xdbe0('0x0'));var events=[_0xdbe0('0x1'),_0xdbe0('0x2'),_0xdbe0('0x3')];function createListener(_0x529e2d,_0x214446){return function(_0x33c6ca){_0x214446[_0xdbe0('0x4')](_0x529e2d,_0x33c6ca);};}function removeListener(_0x2e834b,_0x443f9b){return function(){SmsQueueEvents['removeListener'](_0x2e834b,_0x443f9b);};}exports[_0xdbe0('0x5')]=function(_0x35f1f6){for(var _0x24e38a=0x0,_0xf82872=events[_0xdbe0('0x6')];_0x24e38a<_0xf82872;_0x24e38a++){var _0x26bb9a=events[_0x24e38a];var _0x135506=createListener(_0xdbe0('0x7')+_0x26bb9a,_0x35f1f6);SmsQueueEvents['on'](_0x26bb9a,_0x135506);}};
\ No newline at end of file
index 85668e2..cadd334 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7b9=['multer','util','path','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x3c0dcc,_0x18c419){var _0x1a224c=function(_0x238ae7){while(--_0x238ae7){_0x3c0dcc['push'](_0x3c0dcc['shift']());}};_0x1a224c(++_0x18c419);}(_0xc7b9,0xa8));var _0x9c7b=function(_0x371835,_0x398007){_0x371835=_0x371835-0x0;var _0x4b6b18=_0xc7b9[_0x371835];return _0x4b6b18;};'use strict';var multer=require(_0x9c7b('0x0'));var util=require(_0x9c7b('0x1'));var path=require(_0x9c7b('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x9c7b('0x3')]();var fs_extra=require(_0x9c7b('0x4'));var auth=require(_0x9c7b('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x9c7b('0x6'));var controller=require('./smsQueueReport.controller');router[_0x9c7b('0x7')]('/',auth[_0x9c7b('0x8')](),controller[_0x9c7b('0x9')]);router[_0x9c7b('0x7')](_0x9c7b('0xa'),auth['isAuthenticated'](),controller[_0x9c7b('0xb')]);router[_0x9c7b('0x7')](_0x9c7b('0xc'),auth[_0x9c7b('0x8')](),controller[_0x9c7b('0xd')]);router[_0x9c7b('0xe')]('/',auth[_0x9c7b('0x8')](),controller[_0x9c7b('0xf')]);router[_0x9c7b('0x10')]('/:id',auth[_0x9c7b('0x8')](),controller[_0x9c7b('0x11')]);router[_0x9c7b('0x12')]('/:id',auth[_0x9c7b('0x8')](),controller[_0x9c7b('0x13')]);module[_0x9c7b('0x14')]=router;
\ No newline at end of file
+var _0xeb1c=['index','get','/describe','describe','show','post','put','/:id','update','delete','destroy','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','isAuthenticated'];(function(_0x5f3f88,_0x562baf){var _0xd08119=function(_0x42dbf7){while(--_0x42dbf7){_0x5f3f88['push'](_0x5f3f88['shift']());}};_0xd08119(++_0x562baf);}(_0xeb1c,0x185));var _0xceb1=function(_0x4e4848,_0x5c7271){_0x4e4848=_0x4e4848-0x0;var _0xa69a7=_0xeb1c[_0x4e4848];return _0xa69a7;};'use strict';var multer=require(_0xceb1('0x0'));var util=require(_0xceb1('0x1'));var path=require(_0xceb1('0x2'));var timeout=require('connect-timeout');var express=require(_0xceb1('0x3'));var router=express['Router']();var fs_extra=require(_0xceb1('0x4'));var auth=require(_0xceb1('0x5'));var interaction=require(_0xceb1('0x6'));var config=require(_0xceb1('0x7'));var controller=require(_0xceb1('0x8'));router['get']('/',auth[_0xceb1('0x9')](),controller[_0xceb1('0xa')]);router[_0xceb1('0xb')](_0xceb1('0xc'),auth[_0xceb1('0x9')](),controller[_0xceb1('0xd')]);router[_0xceb1('0xb')]('/:id',auth[_0xceb1('0x9')](),controller[_0xceb1('0xe')]);router[_0xceb1('0xf')]('/',auth[_0xceb1('0x9')](),controller['create']);router[_0xceb1('0x10')](_0xceb1('0x11'),auth[_0xceb1('0x9')](),controller[_0xceb1('0x12')]);router[_0xceb1('0x13')](_0xceb1('0x11'),auth[_0xceb1('0x9')](),controller[_0xceb1('0x14')]);module['exports']=router;
\ No newline at end of file
index ca2c7f2..5edfcf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x926e=['moment','sequelize','exports','STRING','DATE'];(function(_0x5bd7d0,_0x535f62){var _0x4dfccb=function(_0x218147){while(--_0x218147){_0x5bd7d0['push'](_0x5bd7d0['shift']());}};_0x4dfccb(++_0x535f62);}(_0x926e,0x1e5));var _0xe926=function(_0xb5de7b,_0x10e0ba){_0xb5de7b=_0xb5de7b-0x0;var _0x371606=_0x926e[_0xb5de7b];return _0x371606;};'use strict';var moment=require(_0xe926('0x0'));var Sequelize=require(_0xe926('0x1'));module[_0xe926('0x2')]={'uniqueid':{'type':Sequelize[_0xe926('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xe926('0x3')]},'joinAt':{'type':Sequelize[_0xe926('0x4')]},'leaveAt':{'type':Sequelize[_0xe926('0x4')]},'acceptAt':{'type':Sequelize[_0xe926('0x4')]},'exitAt':{'type':Sequelize[_0xe926('0x4')]},'reason':{'type':Sequelize[_0xe926('0x3')]}};
\ No newline at end of file
+var _0xc68e=['moment','sequelize','STRING','DATE'];(function(_0x40b61c,_0x13015c){var _0x29ea9b=function(_0xfcadb6){while(--_0xfcadb6){_0x40b61c['push'](_0x40b61c['shift']());}};_0x29ea9b(++_0x13015c);}(_0xc68e,0x1e4));var _0xec68=function(_0x30f3bc,_0x4418da){_0x30f3bc=_0x30f3bc-0x0;var _0x21000f=_0xc68e[_0x30f3bc];return _0x21000f;};'use strict';var moment=require(_0xec68('0x0'));var Sequelize=require(_0xec68('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xec68('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xec68('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xec68('0x3')]},'acceptAt':{'type':Sequelize[_0xec68('0x3')]},'exitAt':{'type':Sequelize[_0xec68('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 4a3e5da..0ae2189 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f7e=['options','create','body','find','describe','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','then','destroy','sendStatus','error','stack','name','send','index','map','SmsQueueReport','fieldName','type','key','keys','filters','intersection','query','fields','attributes','length','model','nolimit','limit','order','sort','where','pick','filter','merge','includeAll','findAll','rows','catch','show','params'];(function(_0x34089c,_0xb8c692){var _0x420dc7=function(_0x46c703){while(--_0x46c703){_0x34089c['push'](_0x34089c['shift']());}};_0x420dc7(++_0xb8c692);}(_0x2f7e,0x181));var _0xe2f7=function(_0x3766cd,_0x161935){_0x3766cd=_0x3766cd-0x0;var _0x328037=_0x2f7e[_0x3766cd];return _0x328037;};'use strict';var emlformat=require(_0xe2f7('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xe2f7('0x1'));var rp=require(_0xe2f7('0x2'));var moment=require(_0xe2f7('0x3'));var BPromise=require(_0xe2f7('0x4'));var Mustache=require(_0xe2f7('0x5'));var util=require(_0xe2f7('0x6'));var path=require(_0xe2f7('0x7'));var sox=require(_0xe2f7('0x8'));var csv=require(_0xe2f7('0x9'));var ejs=require(_0xe2f7('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe2f7('0xb'));var squel=require(_0xe2f7('0xc'));var crypto=require(_0xe2f7('0xd'));var jsforce=require(_0xe2f7('0xe'));var deskjs=require(_0xe2f7('0xf'));var toCsv=require(_0xe2f7('0x9'));var querystring=require('querystring');var Papa=require(_0xe2f7('0x10'));var Redis=require(_0xe2f7('0x11'));var authService=require(_0xe2f7('0x12'));var qs=require(_0xe2f7('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xe2f7('0x14'))(_0xe2f7('0x15'));var utils=require(_0xe2f7('0x16'));var config=require(_0xe2f7('0x17'));var licenseUtil=require(_0xe2f7('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x194ea3,_0x5a7ce3){_0x5a7ce3=_0x5a7ce3||0xcc;return function(_0x50df34){if(_0x50df34){return _0x194ea3['sendStatus'](_0x5a7ce3);}return _0x194ea3[_0xe2f7('0x19')](_0x5a7ce3)[_0xe2f7('0x1a')]();};}function respondWithResult(_0x5a453b,_0x58a443){_0x58a443=_0x58a443||0xc8;return function(_0x270e95){if(_0x270e95){return _0x5a453b[_0xe2f7('0x19')](_0x58a443)[_0xe2f7('0x1b')](_0x270e95);}};}function respondWithFilteredResult(_0xd8e5e9,_0x3a8507){return function(_0x4a067b){if(_0x4a067b){var _0x5836fa=typeof _0x3a8507[_0xe2f7('0x1c')]===_0xe2f7('0x1d')&&typeof _0x3a8507['limit']===_0xe2f7('0x1d');var _0x4f5a85=_0x4a067b[_0xe2f7('0x1e')];var _0x1071c6=_0x5836fa?0x0:_0x3a8507[_0xe2f7('0x1c')];var _0x20df43=_0x5836fa?_0x4a067b[_0xe2f7('0x1e')]:_0x3a8507[_0xe2f7('0x1c')]+_0x3a8507['limit'];var _0x14814c;if(_0x20df43>=_0x4f5a85){_0x20df43=_0x4f5a85;_0x14814c=0xc8;}else{_0x14814c=0xce;}_0xd8e5e9[_0xe2f7('0x19')](_0x14814c);return _0xd8e5e9[_0xe2f7('0x1f')](_0xe2f7('0x20'),_0x1071c6+'-'+_0x20df43+'/'+_0x4f5a85)['json'](_0x4a067b);}return null;};}function patchUpdates(_0x2bb469){return function(_0xc9cf52){try{jsonpatch[_0xe2f7('0x21')](_0xc9cf52,_0x2bb469,!![]);}catch(_0x3b03e0){return BPromise[_0xe2f7('0x22')](_0x3b03e0);}return _0xc9cf52[_0xe2f7('0x23')]();};}function saveUpdates(_0x2ba0de,_0x514646){return function(_0x34f75e){if(_0x34f75e){return _0x34f75e['update'](_0x2ba0de)[_0xe2f7('0x24')](function(_0x5a1557){return _0x5a1557;});}return null;};}function removeEntity(_0x252362,_0x5d737a){return function(_0x22713b){if(_0x22713b){return _0x22713b[_0xe2f7('0x25')]()['then'](function(){_0x252362[_0xe2f7('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x25d4c4,_0x11b3df){return function(_0x3864d8){if(!_0x3864d8){_0x25d4c4[_0xe2f7('0x26')](0x194);}return _0x3864d8;};}function handleError(_0x53a9cd,_0x56ce23){_0x56ce23=_0x56ce23||0x1f4;return function(_0x446a5a){logger[_0xe2f7('0x27')](_0x446a5a[_0xe2f7('0x28')]);if(_0x446a5a[_0xe2f7('0x29')]){delete _0x446a5a[_0xe2f7('0x29')];}_0x53a9cd['status'](_0x56ce23)[_0xe2f7('0x2a')](_0x446a5a);};}exports[_0xe2f7('0x2b')]=function(_0x1003dd,_0x4ea835){var _0x51a368={},_0x172a52={},_0x4d73ee={'count':0x0,'rows':[]};var _0x2f5405=_[_0xe2f7('0x2c')](db[_0xe2f7('0x2d')]['rawAttributes'],function(_0x296eaa){return{'name':_0x296eaa[_0xe2f7('0x2e')],'type':_0x296eaa[_0xe2f7('0x2f')][_0xe2f7('0x30')]};});_0x172a52['model']=_['map'](_0x2f5405,'name');_0x172a52['query']=_[_0xe2f7('0x31')](_0x1003dd['query']);_0x172a52[_0xe2f7('0x32')]=_[_0xe2f7('0x33')](_0x172a52['model'],_0x172a52[_0xe2f7('0x34')]);_0x51a368['attributes']=_[_0xe2f7('0x33')](_0x172a52['model'],qs['fields'](_0x1003dd['query'][_0xe2f7('0x35')]));_0x51a368['attributes']=_0x51a368[_0xe2f7('0x36')][_0xe2f7('0x37')]?_0x51a368['attributes']:_0x172a52[_0xe2f7('0x38')];if(!_0x1003dd[_0xe2f7('0x34')]['hasOwnProperty'](_0xe2f7('0x39'))){_0x51a368[_0xe2f7('0x3a')]=qs[_0xe2f7('0x3a')](_0x1003dd[_0xe2f7('0x34')]['limit']);_0x51a368[_0xe2f7('0x1c')]=qs[_0xe2f7('0x1c')](_0x1003dd[_0xe2f7('0x34')]['offset']);}_0x51a368[_0xe2f7('0x3b')]=qs[_0xe2f7('0x3c')](_0x1003dd[_0xe2f7('0x34')]['sort']);_0x51a368[_0xe2f7('0x3d')]=qs[_0xe2f7('0x32')](_[_0xe2f7('0x3e')](_0x1003dd[_0xe2f7('0x34')],_0x172a52[_0xe2f7('0x32')]),_0x2f5405);if(_0x1003dd['query'][_0xe2f7('0x3f')]){_0x51a368[_0xe2f7('0x3d')]=_[_0xe2f7('0x40')](_0x51a368['where'],{'$or':_[_0xe2f7('0x2c')](_0x2f5405,function(_0x254130){if(_0x254130['type']!=='VIRTUAL'){var _0x240dce={};_0x240dce[_0x254130[_0xe2f7('0x29')]]={'$like':'%'+_0x1003dd['query']['filter']+'%'};return _0x240dce;}})});}_0x51a368=_[_0xe2f7('0x40')]({},_0x51a368,_0x1003dd['options']);var _0x4c2a72={'where':_0x51a368[_0xe2f7('0x3d')]};return db[_0xe2f7('0x2d')]['count'](_0x4c2a72)[_0xe2f7('0x24')](function(_0x3fb3e9){_0x4d73ee[_0xe2f7('0x1e')]=_0x3fb3e9;if(_0x1003dd['query'][_0xe2f7('0x41')]){_0x51a368['include']=[{'all':!![]}];}return db[_0xe2f7('0x2d')][_0xe2f7('0x42')](_0x51a368);})[_0xe2f7('0x24')](function(_0x4ed449){_0x4d73ee[_0xe2f7('0x43')]=_0x4ed449;return _0x4d73ee;})[_0xe2f7('0x24')](respondWithFilteredResult(_0x4ea835,_0x51a368))[_0xe2f7('0x44')](handleError(_0x4ea835,null));};exports[_0xe2f7('0x45')]=function(_0x176b6b,_0x58fb4d){var _0x6684da={'raw':!![],'where':{'id':_0x176b6b[_0xe2f7('0x46')]['id']}},_0x4b58fe={};_0x4b58fe[_0xe2f7('0x38')]=_['keys'](db[_0xe2f7('0x2d')]['rawAttributes']);_0x4b58fe[_0xe2f7('0x34')]=_[_0xe2f7('0x31')](_0x176b6b[_0xe2f7('0x34')]);_0x4b58fe['filters']=_[_0xe2f7('0x33')](_0x4b58fe[_0xe2f7('0x38')],_0x4b58fe[_0xe2f7('0x34')]);_0x6684da[_0xe2f7('0x36')]=_[_0xe2f7('0x33')](_0x4b58fe[_0xe2f7('0x38')],qs[_0xe2f7('0x35')](_0x176b6b['query'][_0xe2f7('0x35')]));_0x6684da[_0xe2f7('0x36')]=_0x6684da[_0xe2f7('0x36')][_0xe2f7('0x37')]?_0x6684da[_0xe2f7('0x36')]:_0x4b58fe[_0xe2f7('0x38')];if(_0x176b6b[_0xe2f7('0x34')]['includeAll']){_0x6684da['include']=[{'all':!![]}];}_0x6684da=_['merge']({},_0x6684da,_0x176b6b[_0xe2f7('0x47')]);return db['SmsQueueReport']['find'](_0x6684da)[_0xe2f7('0x24')](handleEntityNotFound(_0x58fb4d,null))['then'](respondWithResult(_0x58fb4d,null))[_0xe2f7('0x44')](handleError(_0x58fb4d,null));};exports[_0xe2f7('0x48')]=function(_0x585d97,_0x592d26){return db['SmsQueueReport'][_0xe2f7('0x48')](_0x585d97['body'],{})['then'](respondWithResult(_0x592d26,0xc9))[_0xe2f7('0x44')](handleError(_0x592d26,null));};exports['update']=function(_0x177f99,_0x1140b7){if(_0x177f99[_0xe2f7('0x49')]['id']){delete _0x177f99[_0xe2f7('0x49')]['id'];}return db[_0xe2f7('0x2d')][_0xe2f7('0x4a')]({'where':{'id':_0x177f99[_0xe2f7('0x46')]['id']}})[_0xe2f7('0x24')](handleEntityNotFound(_0x1140b7,null))['then'](saveUpdates(_0x177f99[_0xe2f7('0x49')],null))['then'](respondWithResult(_0x1140b7,null))[_0xe2f7('0x44')](handleError(_0x1140b7,null));};exports[_0xe2f7('0x25')]=function(_0xc69635,_0x15da97){return db[_0xe2f7('0x2d')][_0xe2f7('0x4a')]({'where':{'id':_0xc69635[_0xe2f7('0x46')]['id']}})[_0xe2f7('0x24')](handleEntityNotFound(_0x15da97,null))['then'](removeEntity(_0x15da97,null))[_0xe2f7('0x44')](handleError(_0x15da97,null));};exports[_0xe2f7('0x4b')]=function(_0x9609d5,_0x15e78a){return db[_0xe2f7('0x2d')]['describe']()[_0xe2f7('0x24')](respondWithResult(_0x15e78a,null))[_0xe2f7('0x44')](handleError(_0x15e78a,null));};
\ No newline at end of file
+var _0xf728=['sendStatus','status','end','undefined','limit','count','offset','set','json','save','update','destroy','then','error','stack','name','send','index','map','rawAttributes','type','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','SmsQueueReport','includeAll','include','findAll','rows','show','params','find','catch','create','body','describe','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x5082a4,_0x4baab9){var _0x344ace=function(_0x29e30b){while(--_0x29e30b){_0x5082a4['push'](_0x5082a4['shift']());}};_0x344ace(++_0x4baab9);}(_0xf728,0x1e2));var _0x8f72=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xf728[_0xf71120];return _0xbe2fd3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8f72('0x0'));var zipdir=require(_0x8f72('0x1'));var jsonpatch=require(_0x8f72('0x2'));var rp=require('request-promise');var moment=require(_0x8f72('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x8f72('0x4'));var util=require(_0x8f72('0x5'));var path=require(_0x8f72('0x6'));var sox=require(_0x8f72('0x7'));var csv=require(_0x8f72('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8f72('0x9'));var _=require(_0x8f72('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x8f72('0xb'));var Papa=require(_0x8f72('0xc'));var Redis=require(_0x8f72('0xd'));var authService=require(_0x8f72('0xe'));var qs=require(_0x8f72('0xf'));var as=require(_0x8f72('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8f72('0x11'))(_0x8f72('0x12'));var utils=require(_0x8f72('0x13'));var config=require(_0x8f72('0x14'));var licenseUtil=require(_0x8f72('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x548317,_0x20d989){_0x20d989=_0x20d989||0xcc;return function(_0x304cce){if(_0x304cce){return _0x548317[_0x8f72('0x16')](_0x20d989);}return _0x548317[_0x8f72('0x17')](_0x20d989)[_0x8f72('0x18')]();};}function respondWithResult(_0x174c7a,_0x2ab074){_0x2ab074=_0x2ab074||0xc8;return function(_0x7b3e6a){if(_0x7b3e6a){return _0x174c7a[_0x8f72('0x17')](_0x2ab074)['json'](_0x7b3e6a);}};}function respondWithFilteredResult(_0x373990,_0x1556e1){return function(_0x5603b3){if(_0x5603b3){var _0x5a436b=typeof _0x1556e1['offset']===_0x8f72('0x19')&&typeof _0x1556e1[_0x8f72('0x1a')]===_0x8f72('0x19');var _0x19da24=_0x5603b3[_0x8f72('0x1b')];var _0x58cf5c=_0x5a436b?0x0:_0x1556e1[_0x8f72('0x1c')];var _0x1c6609=_0x5a436b?_0x5603b3[_0x8f72('0x1b')]:_0x1556e1[_0x8f72('0x1c')]+_0x1556e1[_0x8f72('0x1a')];var _0x50eee5;if(_0x1c6609>=_0x19da24){_0x1c6609=_0x19da24;_0x50eee5=0xc8;}else{_0x50eee5=0xce;}_0x373990[_0x8f72('0x17')](_0x50eee5);return _0x373990[_0x8f72('0x1d')]('Content-Range',_0x58cf5c+'-'+_0x1c6609+'/'+_0x19da24)[_0x8f72('0x1e')](_0x5603b3);}return null;};}function patchUpdates(_0x4bae60){return function(_0x26b534){try{jsonpatch['apply'](_0x26b534,_0x4bae60,!![]);}catch(_0x22e41f){return BPromise['reject'](_0x22e41f);}return _0x26b534[_0x8f72('0x1f')]();};}function saveUpdates(_0x4d0472,_0x394017){return function(_0x351434){if(_0x351434){return _0x351434[_0x8f72('0x20')](_0x4d0472)['then'](function(_0x117141){return _0x117141;});}return null;};}function removeEntity(_0x22eed8,_0x9cffd6){return function(_0x4fce07){if(_0x4fce07){return _0x4fce07[_0x8f72('0x21')]()[_0x8f72('0x22')](function(){_0x22eed8[_0x8f72('0x17')](0xcc)[_0x8f72('0x18')]();});}};}function handleEntityNotFound(_0xde9757,_0x561ede){return function(_0x49c6c6){if(!_0x49c6c6){_0xde9757['sendStatus'](0x194);}return _0x49c6c6;};}function handleError(_0x2f2ec3,_0x3ec24d){_0x3ec24d=_0x3ec24d||0x1f4;return function(_0x510b13){logger[_0x8f72('0x23')](_0x510b13[_0x8f72('0x24')]);if(_0x510b13[_0x8f72('0x25')]){delete _0x510b13[_0x8f72('0x25')];}_0x2f2ec3[_0x8f72('0x17')](_0x3ec24d)[_0x8f72('0x26')](_0x510b13);};}exports[_0x8f72('0x27')]=function(_0x3789f7,_0x3a92a8){var _0x196a81={},_0x2da897={},_0x36eb61={'count':0x0,'rows':[]};var _0x5727ac=_[_0x8f72('0x28')](db['SmsQueueReport'][_0x8f72('0x29')],function(_0x2b2e4c){return{'name':_0x2b2e4c['fieldName'],'type':_0x2b2e4c[_0x8f72('0x2a')][_0x8f72('0x2b')]};});_0x2da897['model']=_[_0x8f72('0x28')](_0x5727ac,_0x8f72('0x25'));_0x2da897[_0x8f72('0x2c')]=_[_0x8f72('0x2d')](_0x3789f7[_0x8f72('0x2c')]);_0x2da897[_0x8f72('0x2e')]=_['intersection'](_0x2da897[_0x8f72('0x2f')],_0x2da897[_0x8f72('0x2c')]);_0x196a81[_0x8f72('0x30')]=_[_0x8f72('0x31')](_0x2da897['model'],qs[_0x8f72('0x32')](_0x3789f7[_0x8f72('0x2c')]['fields']));_0x196a81[_0x8f72('0x30')]=_0x196a81[_0x8f72('0x30')][_0x8f72('0x33')]?_0x196a81[_0x8f72('0x30')]:_0x2da897[_0x8f72('0x2f')];if(!_0x3789f7['query'][_0x8f72('0x34')](_0x8f72('0x35'))){_0x196a81[_0x8f72('0x1a')]=qs[_0x8f72('0x1a')](_0x3789f7[_0x8f72('0x2c')][_0x8f72('0x1a')]);_0x196a81[_0x8f72('0x1c')]=qs[_0x8f72('0x1c')](_0x3789f7['query'][_0x8f72('0x1c')]);}_0x196a81[_0x8f72('0x36')]=qs[_0x8f72('0x37')](_0x3789f7['query']['sort']);_0x196a81[_0x8f72('0x38')]=qs[_0x8f72('0x2e')](_[_0x8f72('0x39')](_0x3789f7['query'],_0x2da897[_0x8f72('0x2e')]),_0x5727ac);if(_0x3789f7[_0x8f72('0x2c')]['filter']){_0x196a81[_0x8f72('0x38')]=_['merge'](_0x196a81[_0x8f72('0x38')],{'$or':_[_0x8f72('0x28')](_0x5727ac,function(_0x59c2ec){if(_0x59c2ec[_0x8f72('0x2a')]!=='VIRTUAL'){var _0x1204cc={};_0x1204cc[_0x59c2ec[_0x8f72('0x25')]]={'$like':'%'+_0x3789f7[_0x8f72('0x2c')][_0x8f72('0x3a')]+'%'};return _0x1204cc;}})});}_0x196a81=_[_0x8f72('0x3b')]({},_0x196a81,_0x3789f7['options']);var _0x49c3c4={'where':_0x196a81[_0x8f72('0x38')]};return db[_0x8f72('0x3c')][_0x8f72('0x1b')](_0x49c3c4)[_0x8f72('0x22')](function(_0x57e809){_0x36eb61[_0x8f72('0x1b')]=_0x57e809;if(_0x3789f7[_0x8f72('0x2c')][_0x8f72('0x3d')]){_0x196a81[_0x8f72('0x3e')]=[{'all':!![]}];}return db[_0x8f72('0x3c')][_0x8f72('0x3f')](_0x196a81);})[_0x8f72('0x22')](function(_0x5ec13f){_0x36eb61[_0x8f72('0x40')]=_0x5ec13f;return _0x36eb61;})[_0x8f72('0x22')](respondWithFilteredResult(_0x3a92a8,_0x196a81))['catch'](handleError(_0x3a92a8,null));};exports[_0x8f72('0x41')]=function(_0x3d05cc,_0x42454d){var _0x95abcb={'raw':!![],'where':{'id':_0x3d05cc[_0x8f72('0x42')]['id']}},_0x5acd55={};_0x5acd55['model']=_[_0x8f72('0x2d')](db[_0x8f72('0x3c')][_0x8f72('0x29')]);_0x5acd55[_0x8f72('0x2c')]=_[_0x8f72('0x2d')](_0x3d05cc['query']);_0x5acd55[_0x8f72('0x2e')]=_[_0x8f72('0x31')](_0x5acd55[_0x8f72('0x2f')],_0x5acd55[_0x8f72('0x2c')]);_0x95abcb[_0x8f72('0x30')]=_['intersection'](_0x5acd55[_0x8f72('0x2f')],qs[_0x8f72('0x32')](_0x3d05cc[_0x8f72('0x2c')][_0x8f72('0x32')]));_0x95abcb[_0x8f72('0x30')]=_0x95abcb[_0x8f72('0x30')][_0x8f72('0x33')]?_0x95abcb[_0x8f72('0x30')]:_0x5acd55[_0x8f72('0x2f')];if(_0x3d05cc[_0x8f72('0x2c')][_0x8f72('0x3d')]){_0x95abcb[_0x8f72('0x3e')]=[{'all':!![]}];}_0x95abcb=_['merge']({},_0x95abcb,_0x3d05cc['options']);return db[_0x8f72('0x3c')][_0x8f72('0x43')](_0x95abcb)[_0x8f72('0x22')](handleEntityNotFound(_0x42454d,null))[_0x8f72('0x22')](respondWithResult(_0x42454d,null))[_0x8f72('0x44')](handleError(_0x42454d,null));};exports[_0x8f72('0x45')]=function(_0x9dcbf3,_0xd09de5){return db['SmsQueueReport']['create'](_0x9dcbf3[_0x8f72('0x46')],{})[_0x8f72('0x22')](respondWithResult(_0xd09de5,0xc9))[_0x8f72('0x44')](handleError(_0xd09de5,null));};exports[_0x8f72('0x20')]=function(_0x2fe9ff,_0x5c8f65){if(_0x2fe9ff['body']['id']){delete _0x2fe9ff[_0x8f72('0x46')]['id'];}return db[_0x8f72('0x3c')][_0x8f72('0x43')]({'where':{'id':_0x2fe9ff['params']['id']}})[_0x8f72('0x22')](handleEntityNotFound(_0x5c8f65,null))[_0x8f72('0x22')](saveUpdates(_0x2fe9ff[_0x8f72('0x46')],null))[_0x8f72('0x22')](respondWithResult(_0x5c8f65,null))[_0x8f72('0x44')](handleError(_0x5c8f65,null));};exports[_0x8f72('0x21')]=function(_0x17ee19,_0x3ad7cd){return db[_0x8f72('0x3c')][_0x8f72('0x43')]({'where':{'id':_0x17ee19['params']['id']}})[_0x8f72('0x22')](handleEntityNotFound(_0x3ad7cd,null))[_0x8f72('0x22')](removeEntity(_0x3ad7cd,null))['catch'](handleError(_0x3ad7cd,null));};exports[_0x8f72('0x47')]=function(_0x1c9813,_0x933604){return db[_0x8f72('0x3c')][_0x8f72('0x47')]()[_0x8f72('0x22')](respondWithResult(_0x933604,null))[_0x8f72('0x44')](handleError(_0x933604,null));};
\ No newline at end of file
index 90252b2..3122901 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','exports','define','SmsQueueReport','report_sms_queue','uniqueid'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3071('0x0'))(_0x3071('0x1'));var moment=require(_0x3071('0x2'));var BPromise=require(_0x3071('0x3'));var rp=require(_0x3071('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));var attributes=require(_0x3071('0x7'));module[_0x3071('0x8')]=function(_0xabd7b6,_0x41cf76){return _0xabd7b6[_0x3071('0x9')](_0x3071('0xa'),attributes,{'tableName':_0x3071('0xb'),'paranoid':![],'indexes':[{'name':_0x3071('0xc'),'fields':[_0x3071('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsQueueReport.attributes','exports','define','SmsQueueReport','report_sms_queue','uniqueid','lodash','util'];(function(_0x236ac8,_0xa798d6){var _0x1ff538=function(_0x35c99e){while(--_0x35c99e){_0x236ac8['push'](_0x236ac8['shift']());}};_0x1ff538(++_0xa798d6);}(_0xe706,0xa3));var _0x6e70=function(_0x7dfb21,_0x54cbb5){_0x7dfb21=_0x7dfb21-0x0;var _0x544f45=_0xe706[_0x7dfb21];return _0x544f45;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('api');var moment=require(_0x6e70('0x3'));var BPromise=require(_0x6e70('0x4'));var rp=require(_0x6e70('0x5'));var fs=require('fs');var path=require(_0x6e70('0x6'));var rimraf=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var attributes=require(_0x6e70('0x9'));module[_0x6e70('0xa')]=function(_0x1b0389,_0x4381d1){return _0x1b0389[_0x6e70('0xb')](_0x6e70('0xc'),attributes,{'tableName':_0x6e70('0xd'),'paranoid':![],'indexes':[{'name':_0x6e70('0xe'),'fields':[_0x6e70('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 9a14818..cd43f31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b23=['create','options','raw','then','UpdateSmsQueueReport','update','body','attributes','limit','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsQueueReport,\x20%s,\x20%s','message','catch','CreateSmsQueueReport'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x7b23,0x1a1));var _0x37b2=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x7b23[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x37b2('0x0'));var util=require(_0x37b2('0x1'));var moment=require(_0x37b2('0x2'));var BPromise=require(_0x37b2('0x3'));var rs=require(_0x37b2('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x37b2('0x5'))['db'];var utils=require(_0x37b2('0x6'));var logger=require(_0x37b2('0x7'))(_0x37b2('0x8'));var config=require(_0x37b2('0x9'));var jayson=require(_0x37b2('0xa'));var client=jayson[_0x37b2('0xb')][_0x37b2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x61ee27,_0x35cdd2,_0x540cf6){return new BPromise(function(_0x3c5ce6,_0x15a53a){return client[_0x37b2('0xd')](_0x61ee27,_0x540cf6)['then'](function(_0x36cc57){logger[_0x37b2('0xe')]('SmsQueueReport,\x20%s,\x20%s',_0x35cdd2,_0x37b2('0xf'));logger[_0x37b2('0x10')](_0x37b2('0x11'),_0x35cdd2,_0x37b2('0xf'),JSON[_0x37b2('0x12')](_0x36cc57));if(_0x36cc57[_0x37b2('0x13')]){if(_0x36cc57[_0x37b2('0x13')][_0x37b2('0x14')]===0x1f4){logger[_0x37b2('0x13')](_0x37b2('0x15'),_0x35cdd2,_0x36cc57[_0x37b2('0x13')][_0x37b2('0x16')]);return _0x15a53a(_0x36cc57[_0x37b2('0x13')][_0x37b2('0x16')]);}logger[_0x37b2('0x13')]('SmsQueueReport,\x20%s,\x20%s',_0x35cdd2,_0x36cc57[_0x37b2('0x13')][_0x37b2('0x16')]);return _0x3c5ce6(_0x36cc57[_0x37b2('0x13')][_0x37b2('0x16')]);}else{logger[_0x37b2('0xe')](_0x37b2('0x15'),_0x35cdd2,_0x37b2('0xf'));_0x3c5ce6(_0x36cc57['result'][_0x37b2('0x16')]);}})[_0x37b2('0x17')](function(_0x13ce16){logger[_0x37b2('0x13')]('SmsQueueReport,\x20%s,\x20%s',_0x35cdd2,_0x13ce16);_0x15a53a(_0x13ce16);});});}exports[_0x37b2('0x18')]=function(_0x168f23){var _0x42d6d6=this;return new Promise(function(_0x21d405,_0x4ab66e){return db['SmsQueueReport'][_0x37b2('0x19')](_0x168f23['body'],{'raw':_0x168f23['options']?_0x168f23[_0x37b2('0x1a')][_0x37b2('0x1b')]===undefined?!![]:![]:!![]})[_0x37b2('0x1c')](function(_0x57e4f3){logger[_0x37b2('0xe')](_0x37b2('0x18'),_0x168f23);logger[_0x37b2('0x10')](_0x37b2('0x18'),_0x168f23,JSON[_0x37b2('0x12')](_0x57e4f3));_0x21d405(_0x57e4f3);})[_0x37b2('0x17')](function(_0x4e1616){logger[_0x37b2('0x13')](_0x37b2('0x18'),_0x4e1616[_0x37b2('0x16')],_0x168f23);_0x4ab66e(_0x42d6d6[_0x37b2('0x13')](0x1f4,_0x4e1616['message']));});});};exports[_0x37b2('0x1d')]=function(_0x487bfe){var _0x2ce3ea=this;return new Promise(function(_0x58d6ed,_0x5802e2){return db['SmsQueueReport'][_0x37b2('0x1e')](_0x487bfe[_0x37b2('0x1f')],{'raw':_0x487bfe[_0x37b2('0x1a')]?_0x487bfe[_0x37b2('0x1a')][_0x37b2('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x487bfe[_0x37b2('0x1a')]?_0x487bfe[_0x37b2('0x1a')]['where']||null:null,'attributes':_0x487bfe[_0x37b2('0x1a')]?_0x487bfe[_0x37b2('0x1a')][_0x37b2('0x20')]||null:null,'limit':_0x487bfe[_0x37b2('0x1a')]?_0x487bfe[_0x37b2('0x1a')][_0x37b2('0x21')]||null:null})[_0x37b2('0x1c')](function(_0xc9afeb){logger[_0x37b2('0xe')](_0x37b2('0x1d'),_0x487bfe);logger[_0x37b2('0x10')](_0x37b2('0x1d'),_0x487bfe,JSON[_0x37b2('0x12')](_0xc9afeb));_0x58d6ed(_0xc9afeb);})['catch'](function(_0x2c23de){logger[_0x37b2('0x13')](_0x37b2('0x1d'),_0x2c23de[_0x37b2('0x16')],_0x487bfe);_0x5802e2(_0x2ce3ea[_0x37b2('0x13')](0x1f4,_0x2c23de[_0x37b2('0x16')]));});});};
\ No newline at end of file
+var _0xab96=['UpdateSmsQueueReport','update','where','attributes','limit','moment','bluebird','ioredis','../../mysqldb','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','message','SmsQueueReport,\x20%s,\x20%s','result','catch','CreateSmsQueueReport','SmsQueueReport','body','options','raw'];(function(_0x5ec454,_0xfcd77e){var _0x5ebf50=function(_0x29de85){while(--_0x29de85){_0x5ec454['push'](_0x5ec454['shift']());}};_0x5ebf50(++_0xfcd77e);}(_0xab96,0x144));var _0x6ab9=function(_0x40270d,_0xed9a9c){_0x40270d=_0x40270d-0x0;var _0x45f9d6=_0xab96[_0x40270d];return _0x45f9d6;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6ab9('0x0'));var BPromise=require(_0x6ab9('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6ab9('0x2'));var db=require(_0x6ab9('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x6ab9('0x4'));var config=require('../../config/environment');var jayson=require(_0x6ab9('0x5'));var client=jayson[_0x6ab9('0x6')][_0x6ab9('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x53b951,_0x10b3c6,_0x5a5045){return new BPromise(function(_0x56547c,_0x3777ef){return client[_0x6ab9('0x8')](_0x53b951,_0x5a5045)[_0x6ab9('0x9')](function(_0x3592ab){logger[_0x6ab9('0xa')]('SmsQueueReport,\x20%s,\x20%s',_0x10b3c6,_0x6ab9('0xb'));logger[_0x6ab9('0xc')]('SmsQueueReport,\x20%s,\x20%s,\x20%s',_0x10b3c6,'request\x20sent',JSON[_0x6ab9('0xd')](_0x3592ab));if(_0x3592ab[_0x6ab9('0xe')]){if(_0x3592ab[_0x6ab9('0xe')]['code']===0x1f4){logger['error']('SmsQueueReport,\x20%s,\x20%s',_0x10b3c6,_0x3592ab[_0x6ab9('0xe')][_0x6ab9('0xf')]);return _0x3777ef(_0x3592ab[_0x6ab9('0xe')][_0x6ab9('0xf')]);}logger['error'](_0x6ab9('0x10'),_0x10b3c6,_0x3592ab[_0x6ab9('0xe')][_0x6ab9('0xf')]);return _0x56547c(_0x3592ab['error'][_0x6ab9('0xf')]);}else{logger[_0x6ab9('0xa')](_0x6ab9('0x10'),_0x10b3c6,'request\x20sent');_0x56547c(_0x3592ab[_0x6ab9('0x11')][_0x6ab9('0xf')]);}})[_0x6ab9('0x12')](function(_0xa4a0bc){logger[_0x6ab9('0xe')](_0x6ab9('0x10'),_0x10b3c6,_0xa4a0bc);_0x3777ef(_0xa4a0bc);});});}exports[_0x6ab9('0x13')]=function(_0x5d4861){var _0x2d0fd1=this;return new Promise(function(_0x35e8ff,_0x3757b5){return db[_0x6ab9('0x14')]['create'](_0x5d4861[_0x6ab9('0x15')],{'raw':_0x5d4861[_0x6ab9('0x16')]?_0x5d4861[_0x6ab9('0x16')][_0x6ab9('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x198df2){logger[_0x6ab9('0xa')]('CreateSmsQueueReport',_0x5d4861);logger[_0x6ab9('0xc')](_0x6ab9('0x13'),_0x5d4861,JSON[_0x6ab9('0xd')](_0x198df2));_0x35e8ff(_0x198df2);})[_0x6ab9('0x12')](function(_0x36eee7){logger['error'](_0x6ab9('0x13'),_0x36eee7[_0x6ab9('0xf')],_0x5d4861);_0x3757b5(_0x2d0fd1['error'](0x1f4,_0x36eee7[_0x6ab9('0xf')]));});});};exports[_0x6ab9('0x18')]=function(_0x1e6f75){var _0x356344=this;return new Promise(function(_0x9ddab2,_0x5f486e){return db[_0x6ab9('0x14')][_0x6ab9('0x19')](_0x1e6f75[_0x6ab9('0x15')],{'raw':_0x1e6f75[_0x6ab9('0x16')]?_0x1e6f75[_0x6ab9('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1e6f75[_0x6ab9('0x16')]?_0x1e6f75['options'][_0x6ab9('0x1a')]||null:null,'attributes':_0x1e6f75[_0x6ab9('0x16')]?_0x1e6f75['options'][_0x6ab9('0x1b')]||null:null,'limit':_0x1e6f75[_0x6ab9('0x16')]?_0x1e6f75[_0x6ab9('0x16')][_0x6ab9('0x1c')]||null:null})[_0x6ab9('0x9')](function(_0x24be18){logger['info'](_0x6ab9('0x18'),_0x1e6f75);logger[_0x6ab9('0xc')]('UpdateSmsQueueReport',_0x1e6f75,JSON[_0x6ab9('0xd')](_0x24be18));_0x9ddab2(_0x24be18);})['catch'](function(_0x5d6ce5){logger[_0x6ab9('0xe')](_0x6ab9('0x18'),_0x5d6ce5['message'],_0x1e6f75);_0x5f486e(_0x356344[_0x6ab9('0xe')](0x1f4,_0x5d6ce5[_0x6ab9('0xf')]));});});};
\ No newline at end of file
index 638a968..956d2a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23f4=['exports','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','get','isAuthenticated','/describe','describe','/:id','put','update','destroy'];(function(_0x4ef1e3,_0x14d5c8){var _0x80c55=function(_0x4f6bf6){while(--_0x4f6bf6){_0x4ef1e3['push'](_0x4ef1e3['shift']());}};_0x80c55(++_0x14d5c8);}(_0x23f4,0x1ee));var _0x423f=function(_0x1678a8,_0x156dad){_0x1678a8=_0x1678a8-0x0;var _0x201a82=_0x23f4[_0x1678a8];return _0x201a82;};'use strict';var multer=require('multer');var util=require(_0x423f('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x423f('0x1'));var router=express[_0x423f('0x2')]();var fs_extra=require(_0x423f('0x3'));var auth=require(_0x423f('0x4'));var interaction=require(_0x423f('0x5'));var config=require(_0x423f('0x6'));var controller=require(_0x423f('0x7'));router[_0x423f('0x8')]('/',auth[_0x423f('0x9')](),controller['index']);router[_0x423f('0x8')](_0x423f('0xa'),auth['isAuthenticated'](),controller[_0x423f('0xb')]);router[_0x423f('0x8')](_0x423f('0xc'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x423f('0x9')](),controller['create']);router[_0x423f('0xd')](_0x423f('0xc'),auth[_0x423f('0x9')](),controller[_0x423f('0xe')]);router['delete'](_0x423f('0xc'),auth[_0x423f('0x9')](),controller[_0x423f('0xf')]);module[_0x423f('0x10')]=router;
\ No newline at end of file
+var _0x5fc3=['/:id','show','post','create','put','update','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./smsTransferReport.controller','get','isAuthenticated','describe'];(function(_0x5ee8d0,_0xb64cdb){var _0x4a92a7=function(_0x38ac49){while(--_0x38ac49){_0x5ee8d0['push'](_0x5ee8d0['shift']());}};_0x4a92a7(++_0xb64cdb);}(_0x5fc3,0xa8));var _0x35fc=function(_0x4d1ee9,_0x394a78){_0x4d1ee9=_0x4d1ee9-0x0;var _0x9a5456=_0x5fc3[_0x4d1ee9];return _0x9a5456;};'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('0xe')]('/',auth['isAuthenticated'](),controller[_0x35fc('0xf')]);router[_0x35fc('0x10')]('/:id',auth[_0x35fc('0xa')](),controller[_0x35fc('0x11')]);router['delete'](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index bac2fff..f1495e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x4bfea6,_0x9be8f){var _0x455557=function(_0x4123f6){while(--_0x4123f6){_0x4bfea6['push'](_0x4bfea6['shift']());}};_0x455557(++_0x9be8f);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x3b4b1d,_0x15029e){_0x3b4b1d=_0x3b4b1d-0x0;var _0x488c36=_0xcb91[_0x3b4b1d];return _0x488c36;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x1cb9('0x0')]={'uniqueid':{'type':Sequelize[_0x1cb9('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x1cb9('0x2')](_0x1cb9('0x3'),'agent',_0x1cb9('0x4')),'allowNull':![],'defaultValue':_0x1cb9('0x4')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x1cb9('0x5')]}};
\ No newline at end of file
+var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x249594,_0x40840b){var _0xe8148a=function(_0x1b95b0){while(--_0x1b95b0){_0x249594['push'](_0x249594['shift']());}};_0xe8148a(++_0x40840b);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x40911a,_0x55ec99){_0x40911a=_0x40911a-0x0;var _0x27e8e3=_0xcb91[_0x40911a];return _0x27e8e3;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x1cb9('0x0')]={'uniqueid':{'type':Sequelize[_0x1cb9('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x1cb9('0x2')](_0x1cb9('0x3'),'agent',_0x1cb9('0x4')),'allowNull':![],'defaultValue':_0x1cb9('0x4')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x1cb9('0x5')]}};
\ No newline at end of file
index 72ac0a3..0e90c1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd46=['send','index','map','SmsTransferReport','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','includeAll','show','params','include','find','catch','create','body','update','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','path','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','save','then','error','stack','name'];(function(_0x31d370,_0x8aa847){var _0x2c6e73=function(_0x377b7d){while(--_0x377b7d){_0x31d370['push'](_0x31d370['shift']());}};_0x2c6e73(++_0x8aa847);}(_0xbd46,0x67));var _0x6bd4=function(_0xa3463d,_0x32f8da){_0xa3463d=_0xa3463d-0x0;var _0x50fd67=_0xbd46[_0xa3463d];return _0x50fd67;};'use strict';var emlformat=require(_0x6bd4('0x0'));var rimraf=require(_0x6bd4('0x1'));var zipdir=require(_0x6bd4('0x2'));var jsonpatch=require(_0x6bd4('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x6bd4('0x4'));var util=require(_0x6bd4('0x5'));var path=require(_0x6bd4('0x6'));var sox=require(_0x6bd4('0x7'));var csv=require('to-csv');var ejs=require(_0x6bd4('0x8'));var fs=require('fs');var fs_extra=require(_0x6bd4('0x9'));var _=require('lodash');var squel=require(_0x6bd4('0xa'));var crypto=require(_0x6bd4('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x6bd4('0xc'));var toCsv=require(_0x6bd4('0xd'));var querystring=require('querystring');var Papa=require(_0x6bd4('0xe'));var Redis=require(_0x6bd4('0xf'));var authService=require(_0x6bd4('0x10'));var qs=require(_0x6bd4('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6bd4('0x12'));var logger=require(_0x6bd4('0x13'))(_0x6bd4('0x14'));var utils=require(_0x6bd4('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x6bd4('0x16'));var db=require(_0x6bd4('0x17'))['db'];function respondWithStatusCode(_0x2f4982,_0x1b5863){_0x1b5863=_0x1b5863||0xcc;return function(_0x30a16f){if(_0x30a16f){return _0x2f4982[_0x6bd4('0x18')](_0x1b5863);}return _0x2f4982['status'](_0x1b5863)[_0x6bd4('0x19')]();};}function respondWithResult(_0x48d116,_0x5e78a6){_0x5e78a6=_0x5e78a6||0xc8;return function(_0xe33d5f){if(_0xe33d5f){return _0x48d116[_0x6bd4('0x1a')](_0x5e78a6)[_0x6bd4('0x1b')](_0xe33d5f);}};}function respondWithFilteredResult(_0x2c91de,_0x22d58a){return function(_0x1137a5){if(_0x1137a5){var _0x4eb170=typeof _0x22d58a[_0x6bd4('0x1c')]===_0x6bd4('0x1d')&&typeof _0x22d58a[_0x6bd4('0x1e')]===_0x6bd4('0x1d');var _0x26e079=_0x1137a5[_0x6bd4('0x1f')];var _0x1fcb7c=_0x4eb170?0x0:_0x22d58a['offset'];var _0x455bf7=_0x4eb170?_0x1137a5[_0x6bd4('0x1f')]:_0x22d58a['offset']+_0x22d58a[_0x6bd4('0x1e')];var _0x447732;if(_0x455bf7>=_0x26e079){_0x455bf7=_0x26e079;_0x447732=0xc8;}else{_0x447732=0xce;}_0x2c91de[_0x6bd4('0x1a')](_0x447732);return _0x2c91de['set'](_0x6bd4('0x20'),_0x1fcb7c+'-'+_0x455bf7+'/'+_0x26e079)['json'](_0x1137a5);}return null;};}function patchUpdates(_0x583e45){return function(_0x6fc21d){try{jsonpatch[_0x6bd4('0x21')](_0x6fc21d,_0x583e45,!![]);}catch(_0x5b2198){return BPromise['reject'](_0x5b2198);}return _0x6fc21d[_0x6bd4('0x22')]();};}function saveUpdates(_0x5b8539,_0x40157c){return function(_0xad4183){if(_0xad4183){return _0xad4183['update'](_0x5b8539)['then'](function(_0x187672){return _0x187672;});}return null;};}function removeEntity(_0x22fabb,_0x24e809){return function(_0x1b7eb8){if(_0x1b7eb8){return _0x1b7eb8['destroy']()[_0x6bd4('0x23')](function(){_0x22fabb[_0x6bd4('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1d7ba1,_0x247056){return function(_0x499486){if(!_0x499486){_0x1d7ba1[_0x6bd4('0x18')](0x194);}return _0x499486;};}function handleError(_0x2283c8,_0x57b25a){_0x57b25a=_0x57b25a||0x1f4;return function(_0x35a0d0){logger[_0x6bd4('0x24')](_0x35a0d0[_0x6bd4('0x25')]);if(_0x35a0d0[_0x6bd4('0x26')]){delete _0x35a0d0['name'];}_0x2283c8['status'](_0x57b25a)[_0x6bd4('0x27')](_0x35a0d0);};}exports[_0x6bd4('0x28')]=function(_0x3c6e8c,_0x288e1b){var _0x2b1674={},_0x37965f={},_0x38c0fb={'count':0x0,'rows':[]};var _0x4bfbc5=_[_0x6bd4('0x29')](db[_0x6bd4('0x2a')][_0x6bd4('0x2b')],function(_0xb1f544){return{'name':_0xb1f544['fieldName'],'type':_0xb1f544[_0x6bd4('0x2c')][_0x6bd4('0x2d')]};});_0x37965f['model']=_['map'](_0x4bfbc5,_0x6bd4('0x26'));_0x37965f[_0x6bd4('0x2e')]=_[_0x6bd4('0x2f')](_0x3c6e8c[_0x6bd4('0x2e')]);_0x37965f[_0x6bd4('0x30')]=_[_0x6bd4('0x31')](_0x37965f[_0x6bd4('0x32')],_0x37965f[_0x6bd4('0x2e')]);_0x2b1674[_0x6bd4('0x33')]=_[_0x6bd4('0x31')](_0x37965f[_0x6bd4('0x32')],qs[_0x6bd4('0x34')](_0x3c6e8c[_0x6bd4('0x2e')][_0x6bd4('0x34')]));_0x2b1674[_0x6bd4('0x33')]=_0x2b1674['attributes'][_0x6bd4('0x35')]?_0x2b1674['attributes']:_0x37965f[_0x6bd4('0x32')];if(!_0x3c6e8c[_0x6bd4('0x2e')][_0x6bd4('0x36')](_0x6bd4('0x37'))){_0x2b1674[_0x6bd4('0x1e')]=qs[_0x6bd4('0x1e')](_0x3c6e8c[_0x6bd4('0x2e')][_0x6bd4('0x1e')]);_0x2b1674[_0x6bd4('0x1c')]=qs['offset'](_0x3c6e8c['query'][_0x6bd4('0x1c')]);}_0x2b1674['order']=qs['sort'](_0x3c6e8c[_0x6bd4('0x2e')][_0x6bd4('0x38')]);_0x2b1674[_0x6bd4('0x39')]=qs['filters'](_['pick'](_0x3c6e8c[_0x6bd4('0x2e')],_0x37965f['filters']),_0x4bfbc5);if(_0x3c6e8c[_0x6bd4('0x2e')][_0x6bd4('0x3a')]){_0x2b1674['where']=_[_0x6bd4('0x3b')](_0x2b1674[_0x6bd4('0x39')],{'$or':_[_0x6bd4('0x29')](_0x4bfbc5,function(_0x435095){if(_0x435095[_0x6bd4('0x2c')]!=='VIRTUAL'){var _0x3d7588={};_0x3d7588[_0x435095[_0x6bd4('0x26')]]={'$like':'%'+_0x3c6e8c[_0x6bd4('0x2e')][_0x6bd4('0x3a')]+'%'};return _0x3d7588;}})});}_0x2b1674=_['merge']({},_0x2b1674,_0x3c6e8c['options']);var _0x7eb9bb={'where':_0x2b1674[_0x6bd4('0x39')]};return db['SmsTransferReport'][_0x6bd4('0x1f')](_0x7eb9bb)[_0x6bd4('0x23')](function(_0x19e978){_0x38c0fb[_0x6bd4('0x1f')]=_0x19e978;if(_0x3c6e8c[_0x6bd4('0x2e')][_0x6bd4('0x3c')]){_0x2b1674['include']=[{'all':!![]}];}return db['SmsTransferReport']['findAll'](_0x2b1674);})[_0x6bd4('0x23')](function(_0x44d13c){_0x38c0fb['rows']=_0x44d13c;return _0x38c0fb;})[_0x6bd4('0x23')](respondWithFilteredResult(_0x288e1b,_0x2b1674))['catch'](handleError(_0x288e1b,null));};exports[_0x6bd4('0x3d')]=function(_0x1c79e7,_0x44aef9){var _0x497b70={'raw':!![],'where':{'id':_0x1c79e7[_0x6bd4('0x3e')]['id']}},_0x5a5e8a={};_0x5a5e8a[_0x6bd4('0x32')]=_[_0x6bd4('0x2f')](db[_0x6bd4('0x2a')]['rawAttributes']);_0x5a5e8a[_0x6bd4('0x2e')]=_['keys'](_0x1c79e7['query']);_0x5a5e8a['filters']=_[_0x6bd4('0x31')](_0x5a5e8a['model'],_0x5a5e8a['query']);_0x497b70[_0x6bd4('0x33')]=_[_0x6bd4('0x31')](_0x5a5e8a[_0x6bd4('0x32')],qs[_0x6bd4('0x34')](_0x1c79e7[_0x6bd4('0x2e')]['fields']));_0x497b70[_0x6bd4('0x33')]=_0x497b70[_0x6bd4('0x33')][_0x6bd4('0x35')]?_0x497b70['attributes']:_0x5a5e8a[_0x6bd4('0x32')];if(_0x1c79e7[_0x6bd4('0x2e')][_0x6bd4('0x3c')]){_0x497b70[_0x6bd4('0x3f')]=[{'all':!![]}];}_0x497b70=_[_0x6bd4('0x3b')]({},_0x497b70,_0x1c79e7['options']);return db[_0x6bd4('0x2a')][_0x6bd4('0x40')](_0x497b70)[_0x6bd4('0x23')](handleEntityNotFound(_0x44aef9,null))[_0x6bd4('0x23')](respondWithResult(_0x44aef9,null))[_0x6bd4('0x41')](handleError(_0x44aef9,null));};exports[_0x6bd4('0x42')]=function(_0x23902a,_0x292b7d){return db[_0x6bd4('0x2a')][_0x6bd4('0x42')](_0x23902a[_0x6bd4('0x43')],{})[_0x6bd4('0x23')](respondWithResult(_0x292b7d,0xc9))[_0x6bd4('0x41')](handleError(_0x292b7d,null));};exports[_0x6bd4('0x44')]=function(_0x14c157,_0x23ce90){if(_0x14c157[_0x6bd4('0x43')]['id']){delete _0x14c157[_0x6bd4('0x43')]['id'];}return db[_0x6bd4('0x2a')]['find']({'where':{'id':_0x14c157[_0x6bd4('0x3e')]['id']}})[_0x6bd4('0x23')](handleEntityNotFound(_0x23ce90,null))[_0x6bd4('0x23')](saveUpdates(_0x14c157[_0x6bd4('0x43')],null))[_0x6bd4('0x23')](respondWithResult(_0x23ce90,null))[_0x6bd4('0x41')](handleError(_0x23ce90,null));};exports[_0x6bd4('0x45')]=function(_0x56656f,_0x10ddaf){return db[_0x6bd4('0x2a')][_0x6bd4('0x40')]({'where':{'id':_0x56656f[_0x6bd4('0x3e')]['id']}})[_0x6bd4('0x23')](handleEntityNotFound(_0x10ddaf,null))[_0x6bd4('0x23')](removeEntity(_0x10ddaf,null))['catch'](handleError(_0x10ddaf,null));};exports['describe']=function(_0x3ded81,_0x582344){return db[_0x6bd4('0x2a')][_0x6bd4('0x46')]()[_0x6bd4('0x23')](respondWithResult(_0x582344,null))[_0x6bd4('0x41')](handleError(_0x582344,null));};
\ No newline at end of file
+var _0x9861=['type','options','then','includeAll','findAll','rows','catch','show','params','include','find','create','body','describe','eml-format','rimraf','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','sendStatus','status','json','undefined','limit','count','Content-Range','apply','reject','update','destroy','error','name','index','map','SmsTransferReport','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','merge'];(function(_0x414297,_0x18578e){var _0x51ea47=function(_0x4a7b22){while(--_0x4a7b22){_0x414297['push'](_0x414297['shift']());}};_0x51ea47(++_0x18578e);}(_0x9861,0x1f1));var _0x1986=function(_0x1cc43b,_0x8ecaff){_0x1cc43b=_0x1cc43b-0x0;var _0x531976=_0x9861[_0x1cc43b];return _0x531976;};'use strict';var emlformat=require(_0x1986('0x0'));var rimraf=require(_0x1986('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x1986('0x2'));var BPromise=require(_0x1986('0x3'));var Mustache=require(_0x1986('0x4'));var util=require(_0x1986('0x5'));var path=require(_0x1986('0x6'));var sox=require(_0x1986('0x7'));var csv=require(_0x1986('0x8'));var ejs=require(_0x1986('0x9'));var fs=require('fs');var fs_extra=require(_0x1986('0xa'));var _=require(_0x1986('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x1986('0xc'));var toCsv=require(_0x1986('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1986('0xd'));var authService=require(_0x1986('0xe'));var qs=require(_0x1986('0xf'));var as=require(_0x1986('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1986('0x11'))(_0x1986('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x1986('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x295ea5,_0x447045){_0x447045=_0x447045||0xcc;return function(_0x44c427){if(_0x44c427){return _0x295ea5[_0x1986('0x14')](_0x447045);}return _0x295ea5[_0x1986('0x15')](_0x447045)['end']();};}function respondWithResult(_0x6fc47c,_0x4e3f03){_0x4e3f03=_0x4e3f03||0xc8;return function(_0x527b89){if(_0x527b89){return _0x6fc47c[_0x1986('0x15')](_0x4e3f03)[_0x1986('0x16')](_0x527b89);}};}function respondWithFilteredResult(_0x414123,_0xf34830){return function(_0x4e456a){if(_0x4e456a){var _0x45d8ff=typeof _0xf34830['offset']===_0x1986('0x17')&&typeof _0xf34830[_0x1986('0x18')]===_0x1986('0x17');var _0x2c7768=_0x4e456a[_0x1986('0x19')];var _0x985894=_0x45d8ff?0x0:_0xf34830['offset'];var _0x192824=_0x45d8ff?_0x4e456a['count']:_0xf34830['offset']+_0xf34830['limit'];var _0x2a42a5;if(_0x192824>=_0x2c7768){_0x192824=_0x2c7768;_0x2a42a5=0xc8;}else{_0x2a42a5=0xce;}_0x414123[_0x1986('0x15')](_0x2a42a5);return _0x414123['set'](_0x1986('0x1a'),_0x985894+'-'+_0x192824+'/'+_0x2c7768)[_0x1986('0x16')](_0x4e456a);}return null;};}function patchUpdates(_0x3d1b6f){return function(_0x23e214){try{jsonpatch[_0x1986('0x1b')](_0x23e214,_0x3d1b6f,!![]);}catch(_0x2fdddb){return BPromise[_0x1986('0x1c')](_0x2fdddb);}return _0x23e214['save']();};}function saveUpdates(_0x574d5c,_0x4e0f6b){return function(_0x109555){if(_0x109555){return _0x109555[_0x1986('0x1d')](_0x574d5c)['then'](function(_0x1512ec){return _0x1512ec;});}return null;};}function removeEntity(_0x3ef318,_0x32ab60){return function(_0x2065ca){if(_0x2065ca){return _0x2065ca[_0x1986('0x1e')]()['then'](function(){_0x3ef318['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x530bf4,_0x137247){return function(_0x41173d){if(!_0x41173d){_0x530bf4['sendStatus'](0x194);}return _0x41173d;};}function handleError(_0x113458,_0x352a2c){_0x352a2c=_0x352a2c||0x1f4;return function(_0xbaa56e){logger[_0x1986('0x1f')](_0xbaa56e['stack']);if(_0xbaa56e['name']){delete _0xbaa56e[_0x1986('0x20')];}_0x113458[_0x1986('0x15')](_0x352a2c)['send'](_0xbaa56e);};}exports[_0x1986('0x21')]=function(_0x13e302,_0x490619){var _0x31dca5={},_0x223c5d={},_0x4b3740={'count':0x0,'rows':[]};var _0x286071=_[_0x1986('0x22')](db[_0x1986('0x23')]['rawAttributes'],function(_0x150c5b){return{'name':_0x150c5b[_0x1986('0x24')],'type':_0x150c5b['type'][_0x1986('0x25')]};});_0x223c5d[_0x1986('0x26')]=_[_0x1986('0x22')](_0x286071,_0x1986('0x20'));_0x223c5d[_0x1986('0x27')]=_[_0x1986('0x28')](_0x13e302[_0x1986('0x27')]);_0x223c5d[_0x1986('0x29')]=_[_0x1986('0x2a')](_0x223c5d[_0x1986('0x26')],_0x223c5d['query']);_0x31dca5[_0x1986('0x2b')]=_['intersection'](_0x223c5d[_0x1986('0x26')],qs[_0x1986('0x2c')](_0x13e302[_0x1986('0x27')][_0x1986('0x2c')]));_0x31dca5['attributes']=_0x31dca5[_0x1986('0x2b')][_0x1986('0x2d')]?_0x31dca5['attributes']:_0x223c5d['model'];if(!_0x13e302[_0x1986('0x27')][_0x1986('0x2e')](_0x1986('0x2f'))){_0x31dca5[_0x1986('0x18')]=qs[_0x1986('0x18')](_0x13e302[_0x1986('0x27')]['limit']);_0x31dca5[_0x1986('0x30')]=qs[_0x1986('0x30')](_0x13e302[_0x1986('0x27')]['offset']);}_0x31dca5[_0x1986('0x31')]=qs[_0x1986('0x32')](_0x13e302[_0x1986('0x27')][_0x1986('0x32')]);_0x31dca5[_0x1986('0x33')]=qs[_0x1986('0x29')](_[_0x1986('0x34')](_0x13e302[_0x1986('0x27')],_0x223c5d[_0x1986('0x29')]),_0x286071);if(_0x13e302[_0x1986('0x27')][_0x1986('0x35')]){_0x31dca5[_0x1986('0x33')]=_[_0x1986('0x36')](_0x31dca5['where'],{'$or':_[_0x1986('0x22')](_0x286071,function(_0x3b18aa){if(_0x3b18aa[_0x1986('0x37')]!=='VIRTUAL'){var _0x3e499d={};_0x3e499d[_0x3b18aa['name']]={'$like':'%'+_0x13e302[_0x1986('0x27')][_0x1986('0x35')]+'%'};return _0x3e499d;}})});}_0x31dca5=_[_0x1986('0x36')]({},_0x31dca5,_0x13e302[_0x1986('0x38')]);var _0x4e4a41={'where':_0x31dca5[_0x1986('0x33')]};return db[_0x1986('0x23')]['count'](_0x4e4a41)[_0x1986('0x39')](function(_0x5c877a){_0x4b3740[_0x1986('0x19')]=_0x5c877a;if(_0x13e302['query'][_0x1986('0x3a')]){_0x31dca5['include']=[{'all':!![]}];}return db[_0x1986('0x23')][_0x1986('0x3b')](_0x31dca5);})[_0x1986('0x39')](function(_0x4d0e41){_0x4b3740[_0x1986('0x3c')]=_0x4d0e41;return _0x4b3740;})['then'](respondWithFilteredResult(_0x490619,_0x31dca5))[_0x1986('0x3d')](handleError(_0x490619,null));};exports[_0x1986('0x3e')]=function(_0x506f90,_0xbf079f){var _0x5137dd={'raw':!![],'where':{'id':_0x506f90[_0x1986('0x3f')]['id']}},_0x3b09d8={};_0x3b09d8[_0x1986('0x26')]=_[_0x1986('0x28')](db[_0x1986('0x23')]['rawAttributes']);_0x3b09d8[_0x1986('0x27')]=_[_0x1986('0x28')](_0x506f90['query']);_0x3b09d8[_0x1986('0x29')]=_[_0x1986('0x2a')](_0x3b09d8[_0x1986('0x26')],_0x3b09d8[_0x1986('0x27')]);_0x5137dd[_0x1986('0x2b')]=_['intersection'](_0x3b09d8[_0x1986('0x26')],qs[_0x1986('0x2c')](_0x506f90[_0x1986('0x27')]['fields']));_0x5137dd[_0x1986('0x2b')]=_0x5137dd[_0x1986('0x2b')]['length']?_0x5137dd[_0x1986('0x2b')]:_0x3b09d8[_0x1986('0x26')];if(_0x506f90['query'][_0x1986('0x3a')]){_0x5137dd[_0x1986('0x40')]=[{'all':!![]}];}_0x5137dd=_[_0x1986('0x36')]({},_0x5137dd,_0x506f90[_0x1986('0x38')]);return db[_0x1986('0x23')][_0x1986('0x41')](_0x5137dd)['then'](handleEntityNotFound(_0xbf079f,null))[_0x1986('0x39')](respondWithResult(_0xbf079f,null))[_0x1986('0x3d')](handleError(_0xbf079f,null));};exports[_0x1986('0x42')]=function(_0x540e30,_0x87314a){return db['SmsTransferReport'][_0x1986('0x42')](_0x540e30[_0x1986('0x43')],{})['then'](respondWithResult(_0x87314a,0xc9))['catch'](handleError(_0x87314a,null));};exports[_0x1986('0x1d')]=function(_0x461073,_0x14881a){if(_0x461073['body']['id']){delete _0x461073[_0x1986('0x43')]['id'];}return db[_0x1986('0x23')][_0x1986('0x41')]({'where':{'id':_0x461073[_0x1986('0x3f')]['id']}})[_0x1986('0x39')](handleEntityNotFound(_0x14881a,null))[_0x1986('0x39')](saveUpdates(_0x461073['body'],null))['then'](respondWithResult(_0x14881a,null))[_0x1986('0x3d')](handleError(_0x14881a,null));};exports[_0x1986('0x1e')]=function(_0x23745e,_0x3b451d){return db[_0x1986('0x23')][_0x1986('0x41')]({'where':{'id':_0x23745e[_0x1986('0x3f')]['id']}})[_0x1986('0x39')](handleEntityNotFound(_0x3b451d,null))['then'](removeEntity(_0x3b451d,null))['catch'](handleError(_0x3b451d,null));};exports['describe']=function(_0x2ddc05,_0x4a8536){return db[_0x1986('0x23')][_0x1986('0x44')]()[_0x1986('0x39')](respondWithResult(_0x4a8536,null))[_0x1986('0x3d')](handleError(_0x4a8536,null));};
\ No newline at end of file
index d0ddfe4..814cfaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b7f=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsTransferReport.attributes','exports','define','SmsTransferReport','report_sms_transfer','uniqueid','lodash','util','../../config/logger','api'];(function(_0xe2f4d0,_0x4e63df){var _0x22a756=function(_0xf42ab0){while(--_0xf42ab0){_0xe2f4d0['push'](_0xe2f4d0['shift']());}};_0x22a756(++_0x4e63df);}(_0x5b7f,0x8c));var _0xf5b7=function(_0xbb3f6f,_0x332b47){_0xbb3f6f=_0xbb3f6f-0x0;var _0x32f10c=_0x5b7f[_0xbb3f6f];return _0x32f10c;};'use strict';var _=require(_0xf5b7('0x0'));var util=require(_0xf5b7('0x1'));var logger=require(_0xf5b7('0x2'))(_0xf5b7('0x3'));var moment=require(_0xf5b7('0x4'));var BPromise=require(_0xf5b7('0x5'));var rp=require(_0xf5b7('0x6'));var fs=require('fs');var path=require(_0xf5b7('0x7'));var rimraf=require(_0xf5b7('0x8'));var config=require(_0xf5b7('0x9'));var attributes=require(_0xf5b7('0xa'));module[_0xf5b7('0xb')]=function(_0x1e67ac,_0x984337){return _0x1e67ac[_0xf5b7('0xc')](_0xf5b7('0xd'),attributes,{'tableName':_0xf5b7('0xe'),'paranoid':![],'indexes':[{'name':_0xf5b7('0xf'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xea4e=['path','../../config/environment','exports','define','SmsTransferReport','uniqueid','util','../../config/logger','api','moment','request-promise'];(function(_0x2d7a73,_0x33105f){var _0x1aabe0=function(_0x54d2f8){while(--_0x54d2f8){_0x2d7a73['push'](_0x2d7a73['shift']());}};_0x1aabe0(++_0x33105f);}(_0xea4e,0x7f));var _0xeea4=function(_0x6cf5ec,_0x194d2e){_0x6cf5ec=_0x6cf5ec-0x0;var _0x271c4f=_0xea4e[_0x6cf5ec];return _0x271c4f;};'use strict';var _=require('lodash');var util=require(_0xeea4('0x0'));var logger=require(_0xeea4('0x1'))(_0xeea4('0x2'));var moment=require(_0xeea4('0x3'));var BPromise=require('bluebird');var rp=require(_0xeea4('0x4'));var fs=require('fs');var path=require(_0xeea4('0x5'));var rimraf=require('rimraf');var config=require(_0xeea4('0x6'));var attributes=require('./smsTransferReport.attributes');module[_0xeea4('0x7')]=function(_0xd68494,_0x23d8d6){return _0xd68494[_0xeea4('0x8')](_0xeea4('0x9'),attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0xeea4('0xa'),'fields':[_0xeea4('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 37ec8dc..ad639f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x394e=['error','code','message','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0xce4987,_0x2dc96b){var _0x34ae8d=function(_0x409a36){while(--_0x409a36){_0xce4987['push'](_0xce4987['shift']());}};_0x34ae8d(++_0x2dc96b);}(_0x394e,0x88));var _0xe394=function(_0x4ccb31,_0x15cef9){_0x4ccb31=_0x4ccb31-0x0;var _0x4bce35=_0x394e[_0x4ccb31];return _0x4bce35;};'use strict';var _=require(_0xe394('0x0'));var util=require(_0xe394('0x1'));var moment=require('moment');var BPromise=require(_0xe394('0x2'));var rs=require(_0xe394('0x3'));var fs=require('fs');var Redis=require(_0xe394('0x4'));var db=require(_0xe394('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe394('0x6'))(_0xe394('0x7'));var config=require(_0xe394('0x8'));var jayson=require(_0xe394('0x9'));var client=jayson[_0xe394('0xa')][_0xe394('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x337bff,_0x169910,_0xad826e){return new BPromise(function(_0x267d68,_0x1220a2){return client['request'](_0x337bff,_0xad826e)['then'](function(_0x5962d2){logger[_0xe394('0xc')](_0xe394('0xd'),_0x169910,_0xe394('0xe'));logger[_0xe394('0xf')](_0xe394('0x10'),_0x169910,_0xe394('0xe'),JSON[_0xe394('0x11')](_0x5962d2));if(_0x5962d2[_0xe394('0x12')]){if(_0x5962d2[_0xe394('0x12')][_0xe394('0x13')]===0x1f4){logger[_0xe394('0x12')](_0xe394('0xd'),_0x169910,_0x5962d2['error']['message']);return _0x1220a2(_0x5962d2['error'][_0xe394('0x14')]);}logger[_0xe394('0x12')]('SmsTransferReport,\x20%s,\x20%s',_0x169910,_0x5962d2[_0xe394('0x12')][_0xe394('0x14')]);return _0x267d68(_0x5962d2[_0xe394('0x12')][_0xe394('0x14')]);}else{logger[_0xe394('0xc')](_0xe394('0xd'),_0x169910,'request\x20sent');_0x267d68(_0x5962d2['result'][_0xe394('0x14')]);}})[_0xe394('0x15')](function(_0x3f11e7){logger[_0xe394('0x12')]('SmsTransferReport,\x20%s,\x20%s',_0x169910,_0x3f11e7);_0x1220a2(_0x3f11e7);});});}
\ No newline at end of file
+var _0x59c3=['ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x27c00a,_0x5c3f23){var _0x1ad46d=function(_0x4aac9a){while(--_0x4aac9a){_0x27c00a['push'](_0x27c00a['shift']());}};_0x1ad46d(++_0x5c3f23);}(_0x59c3,0x133));var _0x359c=function(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0x59c3[_0x32d457];return _0x338386;};'use strict';var _=require(_0x359c('0x0'));var util=require(_0x359c('0x1'));var moment=require(_0x359c('0x2'));var BPromise=require(_0x359c('0x3'));var rs=require(_0x359c('0x4'));var fs=require('fs');var Redis=require(_0x359c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x359c('0x6'));var logger=require(_0x359c('0x7'))(_0x359c('0x8'));var config=require(_0x359c('0x9'));var jayson=require(_0x359c('0xa'));var client=jayson[_0x359c('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x9c107b,_0x58b390,_0x3a7d8e){return new BPromise(function(_0x335963,_0x44ae3a){return client[_0x359c('0xc')](_0x9c107b,_0x3a7d8e)['then'](function(_0x1fb4c8){logger['info'](_0x359c('0xd'),_0x58b390,_0x359c('0xe'));logger[_0x359c('0xf')](_0x359c('0x10'),_0x58b390,_0x359c('0xe'),JSON[_0x359c('0x11')](_0x1fb4c8));if(_0x1fb4c8['error']){if(_0x1fb4c8[_0x359c('0x12')][_0x359c('0x13')]===0x1f4){logger[_0x359c('0x12')](_0x359c('0xd'),_0x58b390,_0x1fb4c8[_0x359c('0x12')][_0x359c('0x14')]);return _0x44ae3a(_0x1fb4c8[_0x359c('0x12')][_0x359c('0x14')]);}logger[_0x359c('0x12')](_0x359c('0xd'),_0x58b390,_0x1fb4c8[_0x359c('0x12')][_0x359c('0x14')]);return _0x335963(_0x1fb4c8['error'][_0x359c('0x14')]);}else{logger[_0x359c('0x15')]('SmsTransferReport,\x20%s,\x20%s',_0x58b390,_0x359c('0xe'));_0x335963(_0x1fb4c8[_0x359c('0x16')][_0x359c('0x14')]);}})[_0x359c('0x17')](function(_0x421bab){logger[_0x359c('0x12')](_0x359c('0xd'),_0x58b390,_0x421bab);_0x44ae3a(_0x421bab);});});}
\ No newline at end of file
index 3b54701..4605926 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed2c=['create','put','update','delete','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./sound.controller','isAuthenticated','index','get','/:id','show','download','join','server/files/sounds/original/','originalname','format','%s-%s%s','extname','post','single','file'];(function(_0x1598ca,_0x5ec9ed){var _0x3d857e=function(_0x587d24){while(--_0x587d24){_0x1598ca['push'](_0x1598ca['shift']());}};_0x3d857e(++_0x5ec9ed);}(_0xed2c,0x19b));var _0xced2=function(_0x5a0e32,_0x347ae2){_0x5a0e32=_0x5a0e32-0x0;var _0xea8f24=_0xed2c[_0x5a0e32];return _0xea8f24;};'use strict';var multer=require(_0xced2('0x0'));var util=require(_0xced2('0x1'));var path=require(_0xced2('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xced2('0x3')]();var fs_extra=require(_0xced2('0x4'));var auth=require(_0xced2('0x5'));var interaction=require(_0xced2('0x6'));var config=require(_0xced2('0x7'));var controller=require(_0xced2('0x8'));router['get']('/',auth[_0xced2('0x9')](),controller[_0xced2('0xa')]);router[_0xced2('0xb')](_0xced2('0xc'),auth[_0xced2('0x9')](),controller[_0xced2('0xd')]);router[_0xced2('0xb')]('/:id/download',auth[_0xced2('0x9')](),controller[_0xced2('0xe')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x33ff27,_0x4eeb61,_0x4b4cf1){_0x4b4cf1(null,path[_0xced2('0xf')](config['root'],_0xced2('0x10')));},'filename':function(_0xbf429a,_0x448762,_0xc929b2){_0x448762[_0xced2('0x11')]=_0x448762[_0xced2('0x11')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0xc929b2(null,util[_0xced2('0x12')](_0xced2('0x13'),path['basename'](_0x448762[_0xced2('0x11')],path[_0xced2('0x14')](_0x448762[_0xced2('0x11')])),Date['now'](),path[_0xced2('0x14')](_0x448762['originalname'])));}})});router[_0xced2('0x15')]('/',upload[_0xced2('0x16')](_0xced2('0x17')),controller[_0xced2('0x18')]);router[_0xced2('0x19')]('/:id',auth[_0xced2('0x9')](),controller[_0xced2('0x1a')]);router['delete'](_0xced2('0xc'),auth[_0xced2('0x9')](),controller[_0xced2('0x1b')]);module[_0xced2('0x1c')]=router;
\ No newline at end of file
+var _0x9db3=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./sound.controller','get','index','/:id','isAuthenticated','show','/:id/download','download','diskStorage','join','server/files/sounds/original/','originalname','%s-%s%s','basename','extname','now','single','file','create','put','update','delete','exports','multer','util','path'];(function(_0x5016c9,_0x57cdf0){var _0x5371ee=function(_0x494af9){while(--_0x494af9){_0x5016c9['push'](_0x5016c9['shift']());}};_0x5371ee(++_0x57cdf0);}(_0x9db3,0xd6));var _0x39db=function(_0x4a53d,_0x58a95e){_0x4a53d=_0x4a53d-0x0;var _0x27410e=_0x9db3[_0x4a53d];return _0x27410e;};'use strict';var multer=require(_0x39db('0x0'));var util=require(_0x39db('0x1'));var path=require(_0x39db('0x2'));var timeout=require(_0x39db('0x3'));var express=require('express');var router=express[_0x39db('0x4')]();var fs_extra=require(_0x39db('0x5'));var auth=require(_0x39db('0x6'));var interaction=require(_0x39db('0x7'));var config=require('../../config/environment');var controller=require(_0x39db('0x8'));router[_0x39db('0x9')]('/',auth['isAuthenticated'](),controller[_0x39db('0xa')]);router[_0x39db('0x9')](_0x39db('0xb'),auth[_0x39db('0xc')](),controller[_0x39db('0xd')]);router[_0x39db('0x9')](_0x39db('0xe'),auth[_0x39db('0xc')](),controller[_0x39db('0xf')]);var upload=multer({'storage':multer[_0x39db('0x10')]({'destination':function(_0xccfc5d,_0x272d1b,_0x2b0471){_0x2b0471(null,path[_0x39db('0x11')](config['root'],_0x39db('0x12')));},'filename':function(_0x5f0b7d,_0x10b59a,_0x3ce7d0){_0x10b59a['originalname']=_0x10b59a[_0x39db('0x13')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x3ce7d0(null,util['format'](_0x39db('0x14'),path[_0x39db('0x15')](_0x10b59a['originalname'],path[_0x39db('0x16')](_0x10b59a['originalname'])),Date[_0x39db('0x17')](),path[_0x39db('0x16')](_0x10b59a[_0x39db('0x13')])));}})});router['post']('/',upload[_0x39db('0x18')](_0x39db('0x19')),controller[_0x39db('0x1a')]);router[_0x39db('0x1b')](_0x39db('0xb'),auth[_0x39db('0xc')](),controller[_0x39db('0x1c')]);router[_0x39db('0x1d')](_0x39db('0xb'),auth[_0x39db('0xc')](),controller[_0x39db('0x1d')]);module[_0x39db('0x1e')]=router;
\ No newline at end of file
index d4afcf1..bf1f0d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27e8=['BIGINT','INTEGER','sequelize','exports','STRING','name','FLOAT'];(function(_0x5a71f1,_0x51fbb3){var _0x1d2485=function(_0x50c488){while(--_0x50c488){_0x5a71f1['push'](_0x5a71f1['shift']());}};_0x1d2485(++_0x51fbb3);}(_0x27e8,0x1d0));var _0x827e=function(_0x555817,_0x241bc6){_0x555817=_0x555817-0x0;var _0x190efe=_0x27e8[_0x555817];return _0x190efe;};'use strict';var Sequelize=require(_0x827e('0x0'));module[_0x827e('0x1')]={'name':{'type':Sequelize[_0x827e('0x2')],'unique':_0x827e('0x3'),'allowNull':![]},'save_name':{'type':Sequelize[_0x827e('0x2')]},'display_name':{'type':Sequelize[_0x827e('0x2')],'defaultValue':''},'description':{'type':Sequelize['STRING']},'original_format':{'type':Sequelize[_0x827e('0x2')]},'original_duration':{'type':Sequelize[_0x827e('0x4')]},'original_sampleCount':{'type':Sequelize[_0x827e('0x5')]},'original_channelCount':{'type':Sequelize[_0x827e('0x6')]},'original_bitRate':{'type':Sequelize[_0x827e('0x5')]},'original_sampleRate':{'type':Sequelize[_0x827e('0x6')]},'converted_format':{'type':Sequelize[_0x827e('0x2')]},'converted_duration':{'type':Sequelize[_0x827e('0x4')]},'converted_sampleCount':{'type':Sequelize[_0x827e('0x5')]},'converted_channelCount':{'type':Sequelize['INTEGER']},'converted_bitRate':{'type':Sequelize['BIGINT']},'converted_sampleRate':{'type':Sequelize[_0x827e('0x6')]}};
\ No newline at end of file
+var _0xb289=['sequelize','STRING','name','FLOAT','INTEGER','BIGINT'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb289,0xba));var _0x9b28=function(_0x50923f,_0x35d6b7){_0x50923f=_0x50923f-0x0;var _0xacc11e=_0xb289[_0x50923f];return _0xacc11e;};'use strict';var Sequelize=require(_0x9b28('0x0'));module['exports']={'name':{'type':Sequelize[_0x9b28('0x1')],'unique':_0x9b28('0x2'),'allowNull':![]},'save_name':{'type':Sequelize['STRING']},'display_name':{'type':Sequelize['STRING'],'defaultValue':''},'description':{'type':Sequelize['STRING']},'original_format':{'type':Sequelize[_0x9b28('0x1')]},'original_duration':{'type':Sequelize[_0x9b28('0x3')]},'original_sampleCount':{'type':Sequelize['BIGINT']},'original_channelCount':{'type':Sequelize[_0x9b28('0x4')]},'original_bitRate':{'type':Sequelize[_0x9b28('0x5')]},'original_sampleRate':{'type':Sequelize[_0x9b28('0x4')]},'converted_format':{'type':Sequelize[_0x9b28('0x1')]},'converted_duration':{'type':Sequelize[_0x9b28('0x3')]},'converted_sampleCount':{'type':Sequelize['BIGINT']},'converted_channelCount':{'type':Sequelize['INTEGER']},'converted_bitRate':{'type':Sequelize[_0x9b28('0x5')]},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 1ee45fb..f1214db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ffe=['rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','show','find','params','converted_format','existsSync','root','server/files/sounds/converted','save_name','Sequelize','ValidationError','download','format','%s.%s','catch','create','basename','originalname','file','filename','extname','substring','wav','join','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','transcode','unlinkSync','original_duration','duration','sampleCount','original_channelCount','bitRate','sampleRate','dest','converted_sampleCount','converted_channelCount','channelCount','converted_sampleRate','0777','body','role','get','UserProfileSection','userProfileId','send','description','delete','original_format','eml-format','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','destroy','Sounds','UserProfileResource','error','stack','name','index','map','Sound'];(function(_0x57b389,_0x4efa8d){var _0x531588=function(_0x1162f3){while(--_0x1162f3){_0x57b389['push'](_0x57b389['shift']());}};_0x531588(++_0x4efa8d);}(_0x5ffe,0x1b5));var _0xe5ff=function(_0x4236a2,_0x5a7dbb){_0x4236a2=_0x4236a2-0x0;var _0x24f8eb=_0x5ffe[_0x4236a2];return _0x24f8eb;};'use strict';var emlformat=require(_0xe5ff('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xe5ff('0x1'));var moment=require(_0xe5ff('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xe5ff('0x3'));var util=require(_0xe5ff('0x4'));var path=require(_0xe5ff('0x5'));var sox=require(_0xe5ff('0x6'));var csv=require('to-csv');var ejs=require(_0xe5ff('0x7'));var fs=require('fs');var fs_extra=require(_0xe5ff('0x8'));var _=require(_0xe5ff('0x9'));var squel=require(_0xe5ff('0xa'));var crypto=require('crypto');var jsforce=require(_0xe5ff('0xb'));var deskjs=require(_0xe5ff('0xc'));var toCsv=require(_0xe5ff('0xd'));var querystring=require('querystring');var Papa=require(_0xe5ff('0xe'));var Redis=require('ioredis');var authService=require(_0xe5ff('0xf'));var qs=require(_0xe5ff('0x10'));var as=require(_0xe5ff('0x11'));var hardwareService=require(_0xe5ff('0x12'));var logger=require(_0xe5ff('0x13'))('api');var utils=require(_0xe5ff('0x14'));var config=require(_0xe5ff('0x15'));var licenseUtil=require(_0xe5ff('0x16'));var db=require(_0xe5ff('0x17'))['db'];function respondWithStatusCode(_0x588830,_0x3240c6){_0x3240c6=_0x3240c6||0xcc;return function(_0x438808){if(_0x438808){return _0x588830[_0xe5ff('0x18')](_0x3240c6);}return _0x588830[_0xe5ff('0x19')](_0x3240c6)[_0xe5ff('0x1a')]();};}function respondWithResult(_0x2a7490,_0x1fa989){_0x1fa989=_0x1fa989||0xc8;return function(_0x44df0a){if(_0x44df0a){return _0x2a7490[_0xe5ff('0x19')](_0x1fa989)[_0xe5ff('0x1b')](_0x44df0a);}};}function respondWithFilteredResult(_0x3026b4,_0x3f104b){return function(_0x3982a3){if(_0x3982a3){var _0x4a6164=typeof _0x3f104b[_0xe5ff('0x1c')]===_0xe5ff('0x1d')&&typeof _0x3f104b['limit']===_0xe5ff('0x1d');var _0x455a07=_0x3982a3[_0xe5ff('0x1e')];var _0x21b661=_0x4a6164?0x0:_0x3f104b[_0xe5ff('0x1c')];var _0x13717a=_0x4a6164?_0x3982a3[_0xe5ff('0x1e')]:_0x3f104b['offset']+_0x3f104b[_0xe5ff('0x1f')];var _0x2b38df;if(_0x13717a>=_0x455a07){_0x13717a=_0x455a07;_0x2b38df=0xc8;}else{_0x2b38df=0xce;}_0x3026b4['status'](_0x2b38df);return _0x3026b4['set'](_0xe5ff('0x20'),_0x21b661+'-'+_0x13717a+'/'+_0x455a07)['json'](_0x3982a3);}return null;};}function patchUpdates(_0xf97651){return function(_0x5e78bc){try{jsonpatch[_0xe5ff('0x21')](_0x5e78bc,_0xf97651,!![]);}catch(_0x28ae6f){return BPromise[_0xe5ff('0x22')](_0x28ae6f);}return _0x5e78bc[_0xe5ff('0x23')]();};}function saveUpdates(_0x188a0e,_0x23498a){return function(_0x1b2d6d){if(_0x1b2d6d){return _0x1b2d6d[_0xe5ff('0x24')](_0x188a0e)[_0xe5ff('0x25')](function(_0x43624a){return _0x43624a;});}return null;};}function removeEntity(_0x127a37,_0x546f79){return function(_0xa356f5){if(_0xa356f5){return _0xa356f5[_0xe5ff('0x26')]()['then'](function(){var _0x3016ff=_0xa356f5['get']({'plain':!![]});var _0x1717f5=_0xe5ff('0x27');return db[_0xe5ff('0x28')][_0xe5ff('0x26')]({'where':{'type':_0x1717f5,'resourceId':_0x3016ff['id']}})['then'](function(){return _0xa356f5;});})[_0xe5ff('0x25')](function(){_0x127a37['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1791c5,_0x131c74){return function(_0x52fc67){if(!_0x52fc67){_0x1791c5['sendStatus'](0x194);}return _0x52fc67;};}function handleError(_0xf5ba4d,_0x53bcb4){_0x53bcb4=_0x53bcb4||0x1f4;return function(_0x3e8c41){logger[_0xe5ff('0x29')](_0x3e8c41[_0xe5ff('0x2a')]);if(_0x3e8c41[_0xe5ff('0x2b')]){delete _0x3e8c41[_0xe5ff('0x2b')];}_0xf5ba4d[_0xe5ff('0x19')](_0x53bcb4)['send'](_0x3e8c41);};}exports[_0xe5ff('0x2c')]=function(_0x5cceca,_0x275c7d){var _0x3b91ff={},_0x196208={},_0x3d23ed={'count':0x0,'rows':[]};var _0x15be76=_[_0xe5ff('0x2d')](db[_0xe5ff('0x2e')][_0xe5ff('0x2f')],function(_0x35dd67){return{'name':_0x35dd67[_0xe5ff('0x30')],'type':_0x35dd67[_0xe5ff('0x31')][_0xe5ff('0x32')]};});_0x196208[_0xe5ff('0x33')]=_[_0xe5ff('0x2d')](_0x15be76,_0xe5ff('0x2b'));_0x196208[_0xe5ff('0x34')]=_[_0xe5ff('0x35')](_0x5cceca[_0xe5ff('0x34')]);_0x196208[_0xe5ff('0x36')]=_[_0xe5ff('0x37')](_0x196208['model'],_0x196208[_0xe5ff('0x34')]);_0x3b91ff['attributes']=_[_0xe5ff('0x37')](_0x196208['model'],qs[_0xe5ff('0x38')](_0x5cceca[_0xe5ff('0x34')]['fields']));_0x3b91ff[_0xe5ff('0x39')]=_0x3b91ff['attributes'][_0xe5ff('0x3a')]?_0x3b91ff[_0xe5ff('0x39')]:_0x196208[_0xe5ff('0x33')];if(!_0x5cceca['query'][_0xe5ff('0x3b')](_0xe5ff('0x3c'))){_0x3b91ff[_0xe5ff('0x1f')]=qs[_0xe5ff('0x1f')](_0x5cceca[_0xe5ff('0x34')][_0xe5ff('0x1f')]);_0x3b91ff[_0xe5ff('0x1c')]=qs[_0xe5ff('0x1c')](_0x5cceca[_0xe5ff('0x34')][_0xe5ff('0x1c')]);}_0x3b91ff[_0xe5ff('0x3d')]=qs['sort'](_0x5cceca[_0xe5ff('0x34')][_0xe5ff('0x3e')]);_0x3b91ff[_0xe5ff('0x3f')]=qs[_0xe5ff('0x36')](_[_0xe5ff('0x40')](_0x5cceca[_0xe5ff('0x34')],_0x196208['filters']),_0x15be76);if(_0x5cceca[_0xe5ff('0x34')]['filter']){_0x3b91ff[_0xe5ff('0x3f')]=_[_0xe5ff('0x41')](_0x3b91ff[_0xe5ff('0x3f')],{'$or':_['map'](_0x15be76,function(_0x32ad99){if(_0x32ad99[_0xe5ff('0x31')]!==_0xe5ff('0x42')){var _0x48e855={};_0x48e855[_0x32ad99['name']]={'$like':'%'+_0x5cceca['query'][_0xe5ff('0x43')]+'%'};return _0x48e855;}})});}_0x3b91ff=_[_0xe5ff('0x41')]({},_0x3b91ff,_0x5cceca[_0xe5ff('0x44')]);var _0x2707cc={'where':_0x3b91ff['where']};return db[_0xe5ff('0x2e')]['count'](_0x2707cc)[_0xe5ff('0x25')](function(_0x3bf6fa){_0x3d23ed[_0xe5ff('0x1e')]=_0x3bf6fa;if(_0x5cceca[_0xe5ff('0x34')][_0xe5ff('0x45')]){_0x3b91ff[_0xe5ff('0x46')]=[{'all':!![]}];}return db['Sound'][_0xe5ff('0x47')](_0x3b91ff);})[_0xe5ff('0x25')](function(_0x5a1878){_0x3d23ed['rows']=_0x5a1878;return _0x3d23ed;})[_0xe5ff('0x25')](respondWithFilteredResult(_0x275c7d,_0x3b91ff))['catch'](handleError(_0x275c7d,null));};exports[_0xe5ff('0x48')]=function(_0x2c6ff7,_0x6d9d5b){var _0x424e0b={'raw':!![],'where':{'id':_0x2c6ff7['params']['id']}},_0x5f52c8={};_0x5f52c8[_0xe5ff('0x33')]=_[_0xe5ff('0x35')](db[_0xe5ff('0x2e')]['rawAttributes']);_0x5f52c8['query']=_['keys'](_0x2c6ff7[_0xe5ff('0x34')]);_0x5f52c8['filters']=_[_0xe5ff('0x37')](_0x5f52c8[_0xe5ff('0x33')],_0x5f52c8['query']);_0x424e0b['attributes']=_[_0xe5ff('0x37')](_0x5f52c8[_0xe5ff('0x33')],qs['fields'](_0x2c6ff7[_0xe5ff('0x34')][_0xe5ff('0x38')]));_0x424e0b[_0xe5ff('0x39')]=_0x424e0b[_0xe5ff('0x39')][_0xe5ff('0x3a')]?_0x424e0b['attributes']:_0x5f52c8['model'];if(_0x2c6ff7['query'][_0xe5ff('0x45')]){_0x424e0b[_0xe5ff('0x46')]=[{'all':!![]}];}_0x424e0b=_['merge']({},_0x424e0b,_0x2c6ff7[_0xe5ff('0x44')]);return db['Sound'][_0xe5ff('0x49')](_0x424e0b)[_0xe5ff('0x25')](handleEntityNotFound(_0x6d9d5b,null))[_0xe5ff('0x25')](respondWithResult(_0x6d9d5b,null))['catch'](handleError(_0x6d9d5b,null));};exports['download']=function(_0x25227f,_0x39d346,_0x472992){return db['Sound'][_0xe5ff('0x49')]({'where':{'id':_0x25227f[_0xe5ff('0x4a')]['id']},'attributes':[_0xe5ff('0x2b'),'save_name',_0xe5ff('0x4b')],'raw':!![]})['then'](handleEntityNotFound(_0x39d346,null))[_0xe5ff('0x25')](function(_0x58a80c){if(_0x58a80c){if(!fs[_0xe5ff('0x4c')](path['join'](config[_0xe5ff('0x4d')],_0xe5ff('0x4e'),_0x58a80c[_0xe5ff('0x4f')]+'.'+_0x58a80c[_0xe5ff('0x4b')]))){throw new db[(_0xe5ff('0x50'))][(_0xe5ff('0x51'))]('Sound\x20not\x20found');}return _0x39d346[_0xe5ff('0x52')](path['join'](config[_0xe5ff('0x4d')],_0xe5ff('0x4e'),util[_0xe5ff('0x53')](_0xe5ff('0x54'),_0x58a80c['save_name'],_0x58a80c['converted_format'])),util[_0xe5ff('0x53')](_0xe5ff('0x54'),_0x58a80c[_0xe5ff('0x2b')],_0x58a80c[_0xe5ff('0x4b')]));}return null;})[_0xe5ff('0x55')](handleError(_0x39d346,null));};exports[_0xe5ff('0x56')]=function(_0x3adfb9,_0xaae102,_0x5d397b){var _0x4315d6={'name':path[_0xe5ff('0x57')](_0x3adfb9['file'][_0xe5ff('0x58')],path['extname'](_0x3adfb9[_0xe5ff('0x59')][_0xe5ff('0x58')])),'save_name':path['basename'](_0x3adfb9['file'][_0xe5ff('0x5a')],path['extname'](_0x3adfb9[_0xe5ff('0x59')]['filename'])),'original_format':path[_0xe5ff('0x5b')](_0x3adfb9[_0xe5ff('0x59')][_0xe5ff('0x58')])[_0xe5ff('0x5c')](0x1),'converted_format':_0xe5ff('0x5d')};var _0x4c97b5=path[_0xe5ff('0x5e')](config[_0xe5ff('0x4d')],_0xe5ff('0x5f'),_0x3adfb9[_0xe5ff('0x59')][_0xe5ff('0x5a')]);var _0x46b4a9=path[_0xe5ff('0x5e')](config[_0xe5ff('0x4d')],_0xe5ff('0x4e'),util[_0xe5ff('0x53')](_0xe5ff('0x54'),path[_0xe5ff('0x57')](_0x3adfb9['file'][_0xe5ff('0x5a')],path[_0xe5ff('0x5b')](_0x3adfb9[_0xe5ff('0x59')]['filename'])),_0x4315d6['converted_format']));logger[_0xe5ff('0x60')](_0xe5ff('0x61'),_0x4c97b5);logger[_0xe5ff('0x60')]('Sound\x20upload\x20destination:\x20%s',_0x46b4a9);try{fs['chmodSync'](_0x4c97b5,parseInt('0777',0x8));var _0x42edac=sox[_0xe5ff('0x62')](_0x4c97b5,_0x46b4a9,{'sampleRate':0x1f40,'format':_0xe5ff('0x5d'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x42edac['on']('error',function(_0x39cabc){fs[_0xe5ff('0x63')](_0x4c97b5);_0xaae102[_0xe5ff('0x19')](0x1f4)['send'](_0x39cabc);});_0x42edac['on']('src',function(_0x2c6048){_0x4315d6[_0xe5ff('0x64')]=isNaN(_0x2c6048[_0xe5ff('0x65')])?null:_0x2c6048['duration']*0x3e8;_0x4315d6['original_sampleCount']=isNaN(_0x2c6048[_0xe5ff('0x66')])?null:_0x2c6048[_0xe5ff('0x66')];_0x4315d6[_0xe5ff('0x67')]=isNaN(_0x2c6048['channelCount'])?null:_0x2c6048['channelCount'];_0x4315d6['original_bitRate']=isNaN(_0x2c6048[_0xe5ff('0x68')])?null:_0x2c6048[_0xe5ff('0x68')];_0x4315d6['original_sampleRate']=isNaN(_0x2c6048['sampleRate'])?null:_0x2c6048[_0xe5ff('0x69')];});_0x42edac['on'](_0xe5ff('0x6a'),function(_0x9cc92){_0x4315d6['converted_duration']=isNaN(_0x9cc92[_0xe5ff('0x65')])?null:_0x9cc92['duration']*0x3e8;_0x4315d6[_0xe5ff('0x6b')]=isNaN(_0x9cc92[_0xe5ff('0x66')])?null:_0x9cc92[_0xe5ff('0x66')];_0x4315d6[_0xe5ff('0x6c')]=isNaN(_0x9cc92[_0xe5ff('0x6d')])?null:_0x9cc92[_0xe5ff('0x6d')];_0x4315d6['converted_bitRate']=isNaN(_0x9cc92[_0xe5ff('0x68')])?null:_0x9cc92['bitRate'];_0x4315d6[_0xe5ff('0x6e')]=isNaN(_0x9cc92['sampleRate'])?null:_0x9cc92[_0xe5ff('0x69')];});_0x42edac['on']('end',function(){fs['chmodSync'](_0x46b4a9,parseInt(_0xe5ff('0x6f'),0x8));return db['Sound'][_0xe5ff('0x56')](_0x4315d6)[_0xe5ff('0x25')](function(_0x2940be){var _0x2767bf={'role':_0x3adfb9[_0xe5ff('0x70')][_0xe5ff('0x71')],'userProfileId':_0x3adfb9['body']['userProfileId']};if(!_0x2767bf)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2767bf[_0xe5ff('0x71')]==='user'){var _0x3801ce=_0x2940be[_0xe5ff('0x72')]({'plain':!![]});return db[_0xe5ff('0x73')][_0xe5ff('0x49')]({'where':{'name':_0xe5ff('0x27'),'userProfileId':_0x2767bf[_0xe5ff('0x74')]},'raw':!![]})[_0xe5ff('0x25')](function(_0x1f7c0c){if(_0x1f7c0c&&_0x1f7c0c['autoAssociation']===0x0){return db[_0xe5ff('0x28')][_0xe5ff('0x56')]({'name':_0x3801ce[_0xe5ff('0x2b')],'resourceId':_0x3801ce['id'],'type':_0x1f7c0c[_0xe5ff('0x2b')],'sectionId':_0x1f7c0c['id']},{})['then'](function(){return _0x2940be;});}else{return _0x2940be;}})[_0xe5ff('0x55')](function(_0x131dbd){logger[_0xe5ff('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x131dbd);throw _0x131dbd;});}return _0x2940be;})[_0xe5ff('0x25')](respondWithResult(_0xaae102,null))['catch'](handleError(_0xaae102,null));});_0x42edac['start']();}catch(_0x3febf5){_0xaae102[_0xe5ff('0x19')](0x1f4)[_0xe5ff('0x75')](_0x3febf5);}};exports['update']=function(_0x1f7ae2,_0x30d4a6,_0x4b0e48){return db['Sound'][_0xe5ff('0x49')]({'where':{'id':_0x1f7ae2[_0xe5ff('0x4a')]['id']}})[_0xe5ff('0x25')](handleEntityNotFound(_0x30d4a6,null))['then'](saveUpdates(_['pick'](_0x1f7ae2[_0xe5ff('0x70')],[_0xe5ff('0x2b'),_0xe5ff('0x76')]),null))[_0xe5ff('0x25')](respondWithResult(_0x30d4a6,null))['catch'](handleError(_0x30d4a6,null));};exports[_0xe5ff('0x77')]=function(_0x48502d,_0x101515,_0x54d7d0){return db[_0xe5ff('0x2e')][_0xe5ff('0x49')]({'where':{'id':_0x48502d[_0xe5ff('0x4a')]['id']}})['then'](function(_0x12fc20){if(_0x12fc20){return _0x12fc20[_0xe5ff('0x26')]();}})[_0xe5ff('0x25')](function(_0x30ea61){var _0x4e7942=path[_0xe5ff('0x5e')](config[_0xe5ff('0x4d')],_0xe5ff('0x5f'),util[_0xe5ff('0x53')]('%s.%s',_0x30ea61[_0xe5ff('0x4f')],_0x30ea61[_0xe5ff('0x78')]));var _0x44aac5=path[_0xe5ff('0x5e')](config[_0xe5ff('0x4d')],'server/files/sounds/converted',util[_0xe5ff('0x53')](_0xe5ff('0x54'),_0x30ea61[_0xe5ff('0x4f')],_0x30ea61['converted_format']));fs[_0xe5ff('0x63')](_0x4e7942);fs['unlinkSync'](_0x44aac5);return _0x30ea61;})[_0xe5ff('0x25')](function(_0x3affdb){if(_0x3affdb){return _0x101515[_0xe5ff('0x19')](0xcc)[_0xe5ff('0x1a')]();}})[_0xe5ff('0x25')](handleEntityNotFound(_0x101515,null))['catch'](handleError(_0x101515,null));};
\ No newline at end of file
+var _0xfe71=['sendStatus','error','name','send','index','Sound','fieldName','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','map','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','length','find','download','params','converted_format','join','root','save_name','Sound\x20not\x20found','server/files/sounds/converted','format','%s.%s','create','basename','extname','file','filename','originalname','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','chmodSync','0777','transcode','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','bitRate','original_sampleRate','sampleRate','dest','converted_duration','channelCount','converted_bitRate','converted_sampleRate','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','start','original_format','unlinkSync','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','then','destroy','get','Sounds','UserProfileResource'];(function(_0x17d871,_0x253a91){var _0x4a3e2a=function(_0x36bb0c){while(--_0x36bb0c){_0x17d871['push'](_0x17d871['shift']());}};_0x4a3e2a(++_0x253a91);}(_0xfe71,0x1bf));var _0x1fe7=function(_0x406680,_0x2bd836){_0x406680=_0x406680-0x0;var _0x438811=_0xfe71[_0x406680];return _0x438811;};'use strict';var emlformat=require(_0x1fe7('0x0'));var rimraf=require(_0x1fe7('0x1'));var zipdir=require(_0x1fe7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x1fe7('0x3'));var BPromise=require(_0x1fe7('0x4'));var Mustache=require(_0x1fe7('0x5'));var util=require(_0x1fe7('0x6'));var path=require(_0x1fe7('0x7'));var sox=require(_0x1fe7('0x8'));var csv=require(_0x1fe7('0x9'));var ejs=require(_0x1fe7('0xa'));var fs=require('fs');var fs_extra=require(_0x1fe7('0xb'));var _=require(_0x1fe7('0xc'));var squel=require(_0x1fe7('0xd'));var crypto=require(_0x1fe7('0xe'));var jsforce=require(_0x1fe7('0xf'));var deskjs=require(_0x1fe7('0x10'));var toCsv=require(_0x1fe7('0x9'));var querystring=require(_0x1fe7('0x11'));var Papa=require(_0x1fe7('0x12'));var Redis=require(_0x1fe7('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x1fe7('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1fe7('0x15'));var logger=require(_0x1fe7('0x16'))(_0x1fe7('0x17'));var utils=require('../../config/utils');var config=require(_0x1fe7('0x18'));var licenseUtil=require(_0x1fe7('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x466751,_0x1552ab){_0x1552ab=_0x1552ab||0xcc;return function(_0x19f2be){if(_0x19f2be){return _0x466751['sendStatus'](_0x1552ab);}return _0x466751[_0x1fe7('0x1a')](_0x1552ab)[_0x1fe7('0x1b')]();};}function respondWithResult(_0x3f15a7,_0x594376){_0x594376=_0x594376||0xc8;return function(_0x2a8cd2){if(_0x2a8cd2){return _0x3f15a7[_0x1fe7('0x1a')](_0x594376)[_0x1fe7('0x1c')](_0x2a8cd2);}};}function respondWithFilteredResult(_0x547a33,_0x396af3){return function(_0x558cf0){if(_0x558cf0){var _0x2c4063=typeof _0x396af3[_0x1fe7('0x1d')]===_0x1fe7('0x1e')&&typeof _0x396af3['limit']===_0x1fe7('0x1e');var _0x207015=_0x558cf0[_0x1fe7('0x1f')];var _0x2edfac=_0x2c4063?0x0:_0x396af3['offset'];var _0x310ac1=_0x2c4063?_0x558cf0[_0x1fe7('0x1f')]:_0x396af3['offset']+_0x396af3[_0x1fe7('0x20')];var _0x415021;if(_0x310ac1>=_0x207015){_0x310ac1=_0x207015;_0x415021=0xc8;}else{_0x415021=0xce;}_0x547a33[_0x1fe7('0x1a')](_0x415021);return _0x547a33['set'](_0x1fe7('0x21'),_0x2edfac+'-'+_0x310ac1+'/'+_0x207015)['json'](_0x558cf0);}return null;};}function patchUpdates(_0x3c8f7a){return function(_0x544d4b){try{jsonpatch[_0x1fe7('0x22')](_0x544d4b,_0x3c8f7a,!![]);}catch(_0x22c334){return BPromise[_0x1fe7('0x23')](_0x22c334);}return _0x544d4b['save']();};}function saveUpdates(_0x4dfe72,_0x391260){return function(_0x338874){if(_0x338874){return _0x338874['update'](_0x4dfe72)[_0x1fe7('0x24')](function(_0x12c7ad){return _0x12c7ad;});}return null;};}function removeEntity(_0x1e3242,_0x4b295d){return function(_0x5b99cc){if(_0x5b99cc){return _0x5b99cc[_0x1fe7('0x25')]()[_0x1fe7('0x24')](function(){var _0x4856e0=_0x5b99cc[_0x1fe7('0x26')]({'plain':!![]});var _0x251e47=_0x1fe7('0x27');return db[_0x1fe7('0x28')][_0x1fe7('0x25')]({'where':{'type':_0x251e47,'resourceId':_0x4856e0['id']}})[_0x1fe7('0x24')](function(){return _0x5b99cc;});})[_0x1fe7('0x24')](function(){_0x1e3242[_0x1fe7('0x1a')](0xcc)[_0x1fe7('0x1b')]();});}};}function handleEntityNotFound(_0x2bd3ef,_0x86e79){return function(_0x50c43c){if(!_0x50c43c){_0x2bd3ef[_0x1fe7('0x29')](0x194);}return _0x50c43c;};}function handleError(_0x3ebc11,_0xb755a8){_0xb755a8=_0xb755a8||0x1f4;return function(_0x413d9c){logger[_0x1fe7('0x2a')](_0x413d9c['stack']);if(_0x413d9c['name']){delete _0x413d9c[_0x1fe7('0x2b')];}_0x3ebc11[_0x1fe7('0x1a')](_0xb755a8)[_0x1fe7('0x2c')](_0x413d9c);};}exports[_0x1fe7('0x2d')]=function(_0x3a59fc,_0x5b433c){var _0x5933aa={},_0xdc0a1c={},_0x2183cf={'count':0x0,'rows':[]};var _0xd1d014=_['map'](db[_0x1fe7('0x2e')]['rawAttributes'],function(_0x366f39){return{'name':_0x366f39[_0x1fe7('0x2f')],'type':_0x366f39['type'][_0x1fe7('0x30')]};});_0xdc0a1c['model']=_['map'](_0xd1d014,_0x1fe7('0x2b'));_0xdc0a1c[_0x1fe7('0x31')]=_[_0x1fe7('0x32')](_0x3a59fc[_0x1fe7('0x31')]);_0xdc0a1c[_0x1fe7('0x33')]=_[_0x1fe7('0x34')](_0xdc0a1c[_0x1fe7('0x35')],_0xdc0a1c[_0x1fe7('0x31')]);_0x5933aa[_0x1fe7('0x36')]=_['intersection'](_0xdc0a1c['model'],qs[_0x1fe7('0x37')](_0x3a59fc[_0x1fe7('0x31')]['fields']));_0x5933aa['attributes']=_0x5933aa['attributes']['length']?_0x5933aa[_0x1fe7('0x36')]:_0xdc0a1c['model'];if(!_0x3a59fc['query'][_0x1fe7('0x38')](_0x1fe7('0x39'))){_0x5933aa[_0x1fe7('0x20')]=qs[_0x1fe7('0x20')](_0x3a59fc[_0x1fe7('0x31')][_0x1fe7('0x20')]);_0x5933aa[_0x1fe7('0x1d')]=qs[_0x1fe7('0x1d')](_0x3a59fc[_0x1fe7('0x31')][_0x1fe7('0x1d')]);}_0x5933aa[_0x1fe7('0x3a')]=qs['sort'](_0x3a59fc[_0x1fe7('0x31')][_0x1fe7('0x3b')]);_0x5933aa[_0x1fe7('0x3c')]=qs[_0x1fe7('0x33')](_[_0x1fe7('0x3d')](_0x3a59fc['query'],_0xdc0a1c['filters']),_0xd1d014);if(_0x3a59fc['query'][_0x1fe7('0x3e')]){_0x5933aa['where']=_['merge'](_0x5933aa['where'],{'$or':_[_0x1fe7('0x3f')](_0xd1d014,function(_0x281348){if(_0x281348[_0x1fe7('0x40')]!==_0x1fe7('0x41')){var _0x1a301f={};_0x1a301f[_0x281348['name']]={'$like':'%'+_0x3a59fc[_0x1fe7('0x31')][_0x1fe7('0x3e')]+'%'};return _0x1a301f;}})});}_0x5933aa=_[_0x1fe7('0x42')]({},_0x5933aa,_0x3a59fc[_0x1fe7('0x43')]);var _0x46f976={'where':_0x5933aa[_0x1fe7('0x3c')]};return db[_0x1fe7('0x2e')]['count'](_0x46f976)[_0x1fe7('0x24')](function(_0x15caf8){_0x2183cf[_0x1fe7('0x1f')]=_0x15caf8;if(_0x3a59fc['query'][_0x1fe7('0x44')]){_0x5933aa[_0x1fe7('0x45')]=[{'all':!![]}];}return db[_0x1fe7('0x2e')][_0x1fe7('0x46')](_0x5933aa);})['then'](function(_0x574b7b){_0x2183cf[_0x1fe7('0x47')]=_0x574b7b;return _0x2183cf;})['then'](respondWithFilteredResult(_0x5b433c,_0x5933aa))[_0x1fe7('0x48')](handleError(_0x5b433c,null));};exports[_0x1fe7('0x49')]=function(_0x27af02,_0x4f84dc){var _0x1d9dbe={'raw':!![],'where':{'id':_0x27af02['params']['id']}},_0x35f42b={};_0x35f42b[_0x1fe7('0x35')]=_[_0x1fe7('0x32')](db[_0x1fe7('0x2e')]['rawAttributes']);_0x35f42b[_0x1fe7('0x31')]=_[_0x1fe7('0x32')](_0x27af02[_0x1fe7('0x31')]);_0x35f42b[_0x1fe7('0x33')]=_[_0x1fe7('0x34')](_0x35f42b[_0x1fe7('0x35')],_0x35f42b[_0x1fe7('0x31')]);_0x1d9dbe[_0x1fe7('0x36')]=_[_0x1fe7('0x34')](_0x35f42b['model'],qs[_0x1fe7('0x37')](_0x27af02[_0x1fe7('0x31')][_0x1fe7('0x37')]));_0x1d9dbe['attributes']=_0x1d9dbe[_0x1fe7('0x36')][_0x1fe7('0x4a')]?_0x1d9dbe[_0x1fe7('0x36')]:_0x35f42b['model'];if(_0x27af02[_0x1fe7('0x31')][_0x1fe7('0x44')]){_0x1d9dbe['include']=[{'all':!![]}];}_0x1d9dbe=_[_0x1fe7('0x42')]({},_0x1d9dbe,_0x27af02['options']);return db[_0x1fe7('0x2e')][_0x1fe7('0x4b')](_0x1d9dbe)['then'](handleEntityNotFound(_0x4f84dc,null))[_0x1fe7('0x24')](respondWithResult(_0x4f84dc,null))[_0x1fe7('0x48')](handleError(_0x4f84dc,null));};exports[_0x1fe7('0x4c')]=function(_0x59b5d0,_0xc69a19,_0x486d92){return db['Sound'][_0x1fe7('0x4b')]({'where':{'id':_0x59b5d0[_0x1fe7('0x4d')]['id']},'attributes':[_0x1fe7('0x2b'),'save_name',_0x1fe7('0x4e')],'raw':!![]})[_0x1fe7('0x24')](handleEntityNotFound(_0xc69a19,null))[_0x1fe7('0x24')](function(_0x173b0c){if(_0x173b0c){if(!fs['existsSync'](path[_0x1fe7('0x4f')](config[_0x1fe7('0x50')],'server/files/sounds/converted',_0x173b0c[_0x1fe7('0x51')]+'.'+_0x173b0c[_0x1fe7('0x4e')]))){throw new db['Sequelize']['ValidationError'](_0x1fe7('0x52'));}return _0xc69a19[_0x1fe7('0x4c')](path[_0x1fe7('0x4f')](config[_0x1fe7('0x50')],_0x1fe7('0x53'),util[_0x1fe7('0x54')](_0x1fe7('0x55'),_0x173b0c[_0x1fe7('0x51')],_0x173b0c[_0x1fe7('0x4e')])),util[_0x1fe7('0x54')](_0x1fe7('0x55'),_0x173b0c[_0x1fe7('0x2b')],_0x173b0c[_0x1fe7('0x4e')]));}return null;})[_0x1fe7('0x48')](handleError(_0xc69a19,null));};exports[_0x1fe7('0x56')]=function(_0x5903d7,_0x33e795,_0x5f2ace){var _0x241daf={'name':path[_0x1fe7('0x57')](_0x5903d7['file']['originalname'],path[_0x1fe7('0x58')](_0x5903d7[_0x1fe7('0x59')]['originalname'])),'save_name':path['basename'](_0x5903d7['file'][_0x1fe7('0x5a')],path['extname'](_0x5903d7[_0x1fe7('0x59')][_0x1fe7('0x5a')])),'original_format':path[_0x1fe7('0x58')](_0x5903d7[_0x1fe7('0x59')][_0x1fe7('0x5b')])[_0x1fe7('0x5c')](0x1),'converted_format':_0x1fe7('0x5d')};var _0x356293=path[_0x1fe7('0x4f')](config[_0x1fe7('0x50')],_0x1fe7('0x5e'),_0x5903d7[_0x1fe7('0x59')][_0x1fe7('0x5a')]);var _0x213414=path['join'](config[_0x1fe7('0x50')],_0x1fe7('0x53'),util[_0x1fe7('0x54')](_0x1fe7('0x55'),path[_0x1fe7('0x57')](_0x5903d7[_0x1fe7('0x59')][_0x1fe7('0x5a')],path['extname'](_0x5903d7[_0x1fe7('0x59')][_0x1fe7('0x5a')])),_0x241daf['converted_format']));logger[_0x1fe7('0x5f')](_0x1fe7('0x60'),_0x356293);logger['info']('Sound\x20upload\x20destination:\x20%s',_0x213414);try{fs[_0x1fe7('0x61')](_0x356293,parseInt(_0x1fe7('0x62'),0x8));var _0x1d8e9d=sox[_0x1fe7('0x63')](_0x356293,_0x213414,{'sampleRate':0x1f40,'format':_0x1fe7('0x5d'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1d8e9d['on'](_0x1fe7('0x2a'),function(_0x2f7051){fs['unlinkSync'](_0x356293);_0x33e795['status'](0x1f4)[_0x1fe7('0x2c')](_0x2f7051);});_0x1d8e9d['on'](_0x1fe7('0x64'),function(_0x2ed9c1){_0x241daf[_0x1fe7('0x65')]=isNaN(_0x2ed9c1[_0x1fe7('0x66')])?null:_0x2ed9c1[_0x1fe7('0x66')]*0x3e8;_0x241daf[_0x1fe7('0x67')]=isNaN(_0x2ed9c1['sampleCount'])?null:_0x2ed9c1[_0x1fe7('0x68')];_0x241daf[_0x1fe7('0x69')]=isNaN(_0x2ed9c1['channelCount'])?null:_0x2ed9c1['channelCount'];_0x241daf['original_bitRate']=isNaN(_0x2ed9c1[_0x1fe7('0x6a')])?null:_0x2ed9c1['bitRate'];_0x241daf[_0x1fe7('0x6b')]=isNaN(_0x2ed9c1[_0x1fe7('0x6c')])?null:_0x2ed9c1[_0x1fe7('0x6c')];});_0x1d8e9d['on'](_0x1fe7('0x6d'),function(_0x52decb){_0x241daf[_0x1fe7('0x6e')]=isNaN(_0x52decb[_0x1fe7('0x66')])?null:_0x52decb[_0x1fe7('0x66')]*0x3e8;_0x241daf['converted_sampleCount']=isNaN(_0x52decb[_0x1fe7('0x68')])?null:_0x52decb[_0x1fe7('0x68')];_0x241daf['converted_channelCount']=isNaN(_0x52decb[_0x1fe7('0x6f')])?null:_0x52decb[_0x1fe7('0x6f')];_0x241daf[_0x1fe7('0x70')]=isNaN(_0x52decb['bitRate'])?null:_0x52decb[_0x1fe7('0x6a')];_0x241daf[_0x1fe7('0x71')]=isNaN(_0x52decb['sampleRate'])?null:_0x52decb['sampleRate'];});_0x1d8e9d['on']('end',function(){fs[_0x1fe7('0x61')](_0x213414,parseInt(_0x1fe7('0x62'),0x8));return db[_0x1fe7('0x2e')][_0x1fe7('0x56')](_0x241daf)[_0x1fe7('0x24')](function(_0x5b5a7b){var _0xe4addb={'role':_0x5903d7[_0x1fe7('0x72')]['role'],'userProfileId':_0x5903d7[_0x1fe7('0x72')][_0x1fe7('0x73')]};if(!_0xe4addb)throw new Error(_0x1fe7('0x74'));if(_0xe4addb[_0x1fe7('0x75')]==='user'){var _0x3d5ec2=_0x5b5a7b['get']({'plain':!![]});return db['UserProfileSection'][_0x1fe7('0x4b')]({'where':{'name':_0x1fe7('0x27'),'userProfileId':_0xe4addb[_0x1fe7('0x73')]},'raw':!![]})[_0x1fe7('0x24')](function(_0x67cc34){if(_0x67cc34&&_0x67cc34[_0x1fe7('0x76')]===0x0){return db['UserProfileResource'][_0x1fe7('0x56')]({'name':_0x3d5ec2['name'],'resourceId':_0x3d5ec2['id'],'type':_0x67cc34[_0x1fe7('0x2b')],'sectionId':_0x67cc34['id']},{})[_0x1fe7('0x24')](function(){return _0x5b5a7b;});}else{return _0x5b5a7b;}})['catch'](function(_0x557e47){logger[_0x1fe7('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x557e47);throw _0x557e47;});}return _0x5b5a7b;})[_0x1fe7('0x24')](respondWithResult(_0x33e795,null))[_0x1fe7('0x48')](handleError(_0x33e795,null));});_0x1d8e9d[_0x1fe7('0x77')]();}catch(_0x164bfb){_0x33e795[_0x1fe7('0x1a')](0x1f4)['send'](_0x164bfb);}};exports['update']=function(_0x5c92f9,_0xd1e84c,_0x1ceff1){return db[_0x1fe7('0x2e')]['find']({'where':{'id':_0x5c92f9[_0x1fe7('0x4d')]['id']}})['then'](handleEntityNotFound(_0xd1e84c,null))[_0x1fe7('0x24')](saveUpdates(_[_0x1fe7('0x3d')](_0x5c92f9[_0x1fe7('0x72')],[_0x1fe7('0x2b'),'description']),null))[_0x1fe7('0x24')](respondWithResult(_0xd1e84c,null))[_0x1fe7('0x48')](handleError(_0xd1e84c,null));};exports['delete']=function(_0x326a08,_0x102cd0,_0x17553a){return db[_0x1fe7('0x2e')][_0x1fe7('0x4b')]({'where':{'id':_0x326a08[_0x1fe7('0x4d')]['id']}})[_0x1fe7('0x24')](function(_0x3fdedd){if(_0x3fdedd){return _0x3fdedd[_0x1fe7('0x25')]();}})[_0x1fe7('0x24')](function(_0x33285d){var _0xfb40df=path[_0x1fe7('0x4f')](config[_0x1fe7('0x50')],_0x1fe7('0x5e'),util[_0x1fe7('0x54')](_0x1fe7('0x55'),_0x33285d[_0x1fe7('0x51')],_0x33285d[_0x1fe7('0x78')]));var _0x1bf667=path[_0x1fe7('0x4f')](config['root'],_0x1fe7('0x53'),util[_0x1fe7('0x54')](_0x1fe7('0x55'),_0x33285d['save_name'],_0x33285d[_0x1fe7('0x4e')]));fs[_0x1fe7('0x79')](_0xfb40df);fs[_0x1fe7('0x79')](_0x1bf667);return _0x33285d;})['then'](function(_0x429d59){if(_0x429d59){return _0x102cd0['status'](0xcc)[_0x1fe7('0x1b')]();}})[_0x1fe7('0x24')](handleEntityNotFound(_0x102cd0,null))[_0x1fe7('0x48')](handleError(_0x102cd0,null));};
\ No newline at end of file
index 30fa3e5..33ef5e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00dd=['exports','tools_sounds','util','../../config/logger','api','bluebird','rimraf','../../config/environment','./sound.attributes'];(function(_0x1526e1,_0x5ed5a5){var _0x249a1e=function(_0x4a7c12){while(--_0x4a7c12){_0x1526e1['push'](_0x1526e1['shift']());}};_0x249a1e(++_0x5ed5a5);}(_0x00dd,0x89));var _0xd00d=function(_0x3d6f7c,_0x47226d){_0x3d6f7c=_0x3d6f7c-0x0;var _0x58d789=_0x00dd[_0x3d6f7c];return _0x58d789;};'use strict';var _=require('lodash');var util=require(_0xd00d('0x0'));var logger=require(_0xd00d('0x1'))(_0xd00d('0x2'));var moment=require('moment');var BPromise=require(_0xd00d('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xd00d('0x4'));var config=require(_0xd00d('0x5'));var attributes=require(_0xd00d('0x6'));module[_0xd00d('0x7')]=function(_0x2c35f1,_0x2f45e8){return _0x2c35f1['define']('Sound',attributes,{'tableName':_0xd00d('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7d93=['tools_sounds','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./sound.attributes','exports','define','Sound'];(function(_0x22b82b,_0x4407cd){var _0x220523=function(_0x4f062e){while(--_0x4f062e){_0x22b82b['push'](_0x22b82b['shift']());}};_0x220523(++_0x4407cd);}(_0x7d93,0x17b));var _0x37d9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7d93[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x37d9('0x0'));var util=require(_0x37d9('0x1'));var logger=require(_0x37d9('0x2'))(_0x37d9('0x3'));var moment=require(_0x37d9('0x4'));var BPromise=require(_0x37d9('0x5'));var rp=require(_0x37d9('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x37d9('0x7'));var config=require(_0x37d9('0x8'));var attributes=require(_0x37d9('0x9'));module[_0x37d9('0xa')]=function(_0x10cada,_0x2b181f){return _0x10cada[_0x37d9('0xb')](_0x37d9('0xc'),attributes,{'tableName':_0x37d9('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 34bee5a..9dad4cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79b0=['ShowSound','Sound','find','options','raw','where','attributes','map','include','model','stringify','lodash','moment','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http','request','then','info','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','error','code','message','Sound,\x20%s,\x20%s','result','catch'];(function(_0x1f3ef4,_0x13b690){var _0x596057=function(_0x5b8b3e){while(--_0x5b8b3e){_0x1f3ef4['push'](_0x1f3ef4['shift']());}};_0x596057(++_0x13b690);}(_0x79b0,0xa6));var _0x079b=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x79b0[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0x079b('0x0'));var util=require('util');var moment=require(_0x079b('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x079b('0x2'));var db=require(_0x079b('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x079b('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0x079b('0x5'));var client=jayson[_0x079b('0x6')][_0x079b('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2b7bcc,_0x4919a7,_0x13ba16){return new BPromise(function(_0x4862b4,_0x1b532d){return client[_0x079b('0x8')](_0x2b7bcc,_0x13ba16)[_0x079b('0x9')](function(_0x44ebee){logger[_0x079b('0xa')]('Sound,\x20%s,\x20%s',_0x4919a7,_0x079b('0xb'));logger[_0x079b('0xc')](_0x079b('0xd'),_0x4919a7,'request\x20sent',JSON['stringify'](_0x44ebee));if(_0x44ebee[_0x079b('0xe')]){if(_0x44ebee[_0x079b('0xe')][_0x079b('0xf')]===0x1f4){logger[_0x079b('0xe')]('Sound,\x20%s,\x20%s',_0x4919a7,_0x44ebee['error']['message']);return _0x1b532d(_0x44ebee[_0x079b('0xe')][_0x079b('0x10')]);}logger[_0x079b('0xe')](_0x079b('0x11'),_0x4919a7,_0x44ebee[_0x079b('0xe')][_0x079b('0x10')]);return _0x4862b4(_0x44ebee[_0x079b('0xe')]['message']);}else{logger['info']('Sound,\x20%s,\x20%s',_0x4919a7,_0x079b('0xb'));_0x4862b4(_0x44ebee[_0x079b('0x12')][_0x079b('0x10')]);}})[_0x079b('0x13')](function(_0x203810){logger[_0x079b('0xe')](_0x079b('0x11'),_0x4919a7,_0x203810);_0x1b532d(_0x203810);});});}exports[_0x079b('0x14')]=function(_0x4661ce){var _0x11ce3c=this;return new Promise(function(_0xf48095,_0x39d7cf){return db[_0x079b('0x15')][_0x079b('0x16')]({'raw':_0x4661ce['options']?_0x4661ce[_0x079b('0x17')][_0x079b('0x18')]===undefined?!![]:![]:!![],'where':_0x4661ce[_0x079b('0x17')]?_0x4661ce[_0x079b('0x17')][_0x079b('0x19')]||null:null,'attributes':_0x4661ce['options']?_0x4661ce[_0x079b('0x17')][_0x079b('0x1a')]||null:null,'include':_0x4661ce[_0x079b('0x17')]?_0x4661ce[_0x079b('0x17')]['include']?_[_0x079b('0x1b')](_0x4661ce[_0x079b('0x17')][_0x079b('0x1c')],function(_0x42a9b0){return{'model':db[_0x42a9b0[_0x079b('0x1d')]],'as':_0x42a9b0['as'],'attributes':_0x42a9b0[_0x079b('0x1a')],'include':_0x42a9b0[_0x079b('0x1c')]?_['map'](_0x42a9b0[_0x079b('0x1c')],function(_0x3417a4){return{'model':db[_0x3417a4[_0x079b('0x1d')]],'as':_0x3417a4['as'],'attributes':_0x3417a4[_0x079b('0x1a')],'include':_0x3417a4[_0x079b('0x1c')]?_[_0x079b('0x1b')](_0x3417a4[_0x079b('0x1c')],function(_0x2292ae){return{'model':db[_0x2292ae[_0x079b('0x1d')]],'as':_0x2292ae['as'],'attributes':_0x2292ae['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x4ce3a6){logger[_0x079b('0xa')](_0x079b('0x14'),_0x4661ce);logger['debug']('ShowSound',_0x4661ce,JSON[_0x079b('0x1e')](_0x4ce3a6));_0xf48095(_0x4ce3a6);})[_0x079b('0x13')](function(_0x32dd96){logger[_0x079b('0xe')](_0x079b('0x14'),_0x32dd96[_0x079b('0x10')],_0x4661ce);_0x39d7cf(_0x11ce3c[_0x079b('0xe')](0x1f4,_0x32dd96['message']));});});};
\ No newline at end of file
+var _0xc526=['Sound,\x20%s,\x20%s,\x20%s','error','message','result','catch','Sound','raw','options','where','attributes','include','map','model','ShowSound','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','Sound,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x4c8a8f,_0x997ef){var _0x404500=function(_0x1c6072){while(--_0x1c6072){_0x4c8a8f['push'](_0x4c8a8f['shift']());}};_0x404500(++_0x997ef);}(_0xc526,0x1ee));var _0x6c52=function(_0x5c7999,_0x25b0fb){_0x5c7999=_0x5c7999-0x0;var _0x33651f=_0xc526[_0x5c7999];return _0x33651f;};'use strict';var _=require(_0x6c52('0x0'));var util=require(_0x6c52('0x1'));var moment=require(_0x6c52('0x2'));var BPromise=require(_0x6c52('0x3'));var rs=require(_0x6c52('0x4'));var fs=require('fs');var Redis=require(_0x6c52('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x6c52('0x6'));var logger=require(_0x6c52('0x7'))('rpc');var config=require(_0x6c52('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x6c52('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1d9f00,_0x5ad8e5,_0x268f55){return new BPromise(function(_0x3afefd,_0x285b07){return client[_0x6c52('0xa')](_0x1d9f00,_0x268f55)[_0x6c52('0xb')](function(_0x3f5679){logger[_0x6c52('0xc')](_0x6c52('0xd'),_0x5ad8e5,_0x6c52('0xe'));logger[_0x6c52('0xf')](_0x6c52('0x10'),_0x5ad8e5,'request\x20sent',JSON['stringify'](_0x3f5679));if(_0x3f5679[_0x6c52('0x11')]){if(_0x3f5679[_0x6c52('0x11')]['code']===0x1f4){logger[_0x6c52('0x11')](_0x6c52('0xd'),_0x5ad8e5,_0x3f5679[_0x6c52('0x11')]['message']);return _0x285b07(_0x3f5679[_0x6c52('0x11')][_0x6c52('0x12')]);}logger[_0x6c52('0x11')](_0x6c52('0xd'),_0x5ad8e5,_0x3f5679[_0x6c52('0x11')][_0x6c52('0x12')]);return _0x3afefd(_0x3f5679[_0x6c52('0x11')][_0x6c52('0x12')]);}else{logger[_0x6c52('0xc')](_0x6c52('0xd'),_0x5ad8e5,_0x6c52('0xe'));_0x3afefd(_0x3f5679[_0x6c52('0x13')]['message']);}})[_0x6c52('0x14')](function(_0x442f7d){logger[_0x6c52('0x11')]('Sound,\x20%s,\x20%s',_0x5ad8e5,_0x442f7d);_0x285b07(_0x442f7d);});});}exports['ShowSound']=function(_0xefc8e7){var _0x3e13db=this;return new Promise(function(_0x4cc0ac,_0x4337ba){return db[_0x6c52('0x15')]['find']({'raw':_0xefc8e7['options']?_0xefc8e7['options'][_0x6c52('0x16')]===undefined?!![]:![]:!![],'where':_0xefc8e7[_0x6c52('0x17')]?_0xefc8e7[_0x6c52('0x17')][_0x6c52('0x18')]||null:null,'attributes':_0xefc8e7['options']?_0xefc8e7[_0x6c52('0x17')][_0x6c52('0x19')]||null:null,'include':_0xefc8e7[_0x6c52('0x17')]?_0xefc8e7[_0x6c52('0x17')][_0x6c52('0x1a')]?_[_0x6c52('0x1b')](_0xefc8e7[_0x6c52('0x17')][_0x6c52('0x1a')],function(_0x2ff862){return{'model':db[_0x2ff862[_0x6c52('0x1c')]],'as':_0x2ff862['as'],'attributes':_0x2ff862[_0x6c52('0x19')],'include':_0x2ff862[_0x6c52('0x1a')]?_[_0x6c52('0x1b')](_0x2ff862[_0x6c52('0x1a')],function(_0x55a246){return{'model':db[_0x55a246[_0x6c52('0x1c')]],'as':_0x55a246['as'],'attributes':_0x55a246['attributes'],'include':_0x55a246['include']?_[_0x6c52('0x1b')](_0x55a246[_0x6c52('0x1a')],function(_0x26fa46){return{'model':db[_0x26fa46[_0x6c52('0x1c')]],'as':_0x26fa46['as'],'attributes':_0x26fa46[_0x6c52('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4c6127){logger[_0x6c52('0xc')](_0x6c52('0x1d'),_0xefc8e7);logger[_0x6c52('0xf')](_0x6c52('0x1d'),_0xefc8e7,JSON['stringify'](_0x4c6127));_0x4cc0ac(_0x4c6127);})[_0x6c52('0x14')](function(_0xea4bba){logger[_0x6c52('0x11')](_0x6c52('0x1d'),_0xea4bba[_0x6c52('0x12')],_0xefc8e7);_0x4337ba(_0x3e13db[_0x6c52('0x11')](0x1f4,_0xea4bba['message']));});});};
\ No newline at end of file
index 10465b2..6e2943b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['update','delete','destroy','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','show','create','put','/:id'];(function(_0x30b79f,_0x955433){var _0x39de0e=function(_0x1bc668){while(--_0x1bc668){_0x30b79f['push'](_0x30b79f['shift']());}};_0x39de0e(++_0x955433);}(_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('./squareMessage.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/:id',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['post']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xb')]);router[_0x0d8b('0xc')](_0x0d8b('0xd'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xd'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xd8b0=['update','delete','destroy','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','show','create','put','/:id'];(function(_0x2e5521,_0x119b54){var _0x87a890=function(_0x288b67){while(--_0x288b67){_0x2e5521['push'](_0x2e5521['shift']());}};_0x87a890(++_0x119b54);}(_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('./squareMessage.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/:id',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['post']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xb')]);router[_0x0d8b('0xc')](_0x0d8b('0xd'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xd'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);module['exports']=router;
\ No newline at end of file
index 9c18897..922f31d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb699=['out','sequelize','STRING','TEXT','medium','ENUM'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xb699,0x1ed));var _0x9b69=function(_0x4e9ecf,_0x366568){_0x4e9ecf=_0x4e9ecf-0x0;var _0x2ff90d=_0xb699[_0x4e9ecf];return _0x2ff90d;};'use strict';var Sequelize=require(_0x9b69('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x9b69('0x1')]},'body':{'type':Sequelize[_0x9b69('0x2')](_0x9b69('0x3')),'allowNull':![]},'direction':{'type':Sequelize[_0x9b69('0x4')]('in',_0x9b69('0x5')),'defaultValue':_0x9b69('0x5'),'allowNull':![]},'providerName':{'type':Sequelize[_0x9b69('0x1')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x3299=['out','sequelize','exports','STRING','TEXT','medium'];(function(_0x7486a3,_0x13e613){var _0x2ab9a2=function(_0x445e08){while(--_0x445e08){_0x7486a3['push'](_0x7486a3['shift']());}};_0x2ab9a2(++_0x13e613);}(_0x3299,0x175));var _0x9329=function(_0x467cc5,_0x28fb1c){_0x467cc5=_0x467cc5-0x0;var _0x11133a=_0x3299[_0x467cc5];return _0x11133a;};'use strict';var Sequelize=require(_0x9329('0x0'));module[_0x9329('0x1')]={'uniqueid':{'type':Sequelize[_0x9329('0x2')]},'body':{'type':Sequelize[_0x9329('0x3')](_0x9329('0x4')),'allowNull':![]},'direction':{'type':Sequelize['ENUM']('in',_0x9329('0x5')),'defaultValue':_0x9329('0x5'),'allowNull':![]},'providerName':{'type':Sequelize[_0x9329('0x2')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index cf9b346..180fb01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00f0=['crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','then','destroy','end','error','stack','name','send','index','map','SquareMessage','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','rows','catch','params','find','create','body','update','eml-format','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','lodash','squel'];(function(_0x58d5ac,_0x11c4bc){var _0x37985c=function(_0x419671){while(--_0x419671){_0x58d5ac['push'](_0x58d5ac['shift']());}};_0x37985c(++_0x11c4bc);}(_0x00f0,0x111));var _0x000f=function(_0x18caeb,_0x21035e){_0x18caeb=_0x18caeb-0x0;var _0x526fe8=_0x00f0[_0x18caeb];return _0x526fe8;};'use strict';var emlformat=require(_0x000f('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x000f('0x1'));var rp=require(_0x000f('0x2'));var moment=require(_0x000f('0x3'));var BPromise=require(_0x000f('0x4'));var Mustache=require('mustache');var util=require(_0x000f('0x5'));var path=require(_0x000f('0x6'));var sox=require(_0x000f('0x7'));var csv=require('to-csv');var ejs=require(_0x000f('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x000f('0x9'));var squel=require(_0x000f('0xa'));var crypto=require(_0x000f('0xb'));var jsforce=require(_0x000f('0xc'));var deskjs=require(_0x000f('0xd'));var toCsv=require(_0x000f('0xe'));var querystring=require('querystring');var Papa=require(_0x000f('0xf'));var Redis=require(_0x000f('0x10'));var authService=require(_0x000f('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x000f('0x12'));var hardwareService=require(_0x000f('0x13'));var logger=require(_0x000f('0x14'))(_0x000f('0x15'));var utils=require(_0x000f('0x16'));var config=require(_0x000f('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x594c02,_0xf1d9d0){_0xf1d9d0=_0xf1d9d0||0xcc;return function(_0x3fe074){if(_0x3fe074){return _0x594c02[_0x000f('0x18')](_0xf1d9d0);}return _0x594c02[_0x000f('0x19')](_0xf1d9d0)['end']();};}function respondWithResult(_0x131079,_0x2db396){_0x2db396=_0x2db396||0xc8;return function(_0x47e8d8){if(_0x47e8d8){return _0x131079[_0x000f('0x19')](_0x2db396)['json'](_0x47e8d8);}};}function respondWithFilteredResult(_0x7daf43,_0x5e3500){return function(_0x8184f2){if(_0x8184f2){var _0x5e9f6a=typeof _0x5e3500[_0x000f('0x1a')]===_0x000f('0x1b')&&typeof _0x5e3500[_0x000f('0x1c')]===_0x000f('0x1b');var _0x57bcfd=_0x8184f2[_0x000f('0x1d')];var _0x1b310f=_0x5e9f6a?0x0:_0x5e3500[_0x000f('0x1a')];var _0x750f3d=_0x5e9f6a?_0x8184f2[_0x000f('0x1d')]:_0x5e3500['offset']+_0x5e3500[_0x000f('0x1c')];var _0x588b5b;if(_0x750f3d>=_0x57bcfd){_0x750f3d=_0x57bcfd;_0x588b5b=0xc8;}else{_0x588b5b=0xce;}_0x7daf43[_0x000f('0x19')](_0x588b5b);return _0x7daf43[_0x000f('0x1e')](_0x000f('0x1f'),_0x1b310f+'-'+_0x750f3d+'/'+_0x57bcfd)[_0x000f('0x20')](_0x8184f2);}return null;};}function patchUpdates(_0x1de9ab){return function(_0x267576){try{jsonpatch['apply'](_0x267576,_0x1de9ab,!![]);}catch(_0x488d50){return BPromise['reject'](_0x488d50);}return _0x267576['save']();};}function saveUpdates(_0x11a5d0,_0x3f24ba){return function(_0x1ef568){if(_0x1ef568){return _0x1ef568['update'](_0x11a5d0)[_0x000f('0x21')](function(_0x5cc3d4){return _0x5cc3d4;});}return null;};}function removeEntity(_0x4d11ca,_0xc83bf6){return function(_0x46fd1a){if(_0x46fd1a){return _0x46fd1a[_0x000f('0x22')]()['then'](function(){_0x4d11ca['status'](0xcc)[_0x000f('0x23')]();});}};}function handleEntityNotFound(_0x2d4a01,_0x270597){return function(_0x25e8d2){if(!_0x25e8d2){_0x2d4a01[_0x000f('0x18')](0x194);}return _0x25e8d2;};}function handleError(_0x2d182d,_0x44b342){_0x44b342=_0x44b342||0x1f4;return function(_0x5048e6){logger[_0x000f('0x24')](_0x5048e6[_0x000f('0x25')]);if(_0x5048e6[_0x000f('0x26')]){delete _0x5048e6['name'];}_0x2d182d['status'](_0x44b342)[_0x000f('0x27')](_0x5048e6);};}exports[_0x000f('0x28')]=function(_0x52bed4,_0x572caa){var _0x59cba0={},_0x49695c={},_0x2fdd95={'count':0x0,'rows':[]};var _0x459fa7=_[_0x000f('0x29')](db[_0x000f('0x2a')][_0x000f('0x2b')],function(_0xbc65a8){return{'name':_0xbc65a8[_0x000f('0x2c')],'type':_0xbc65a8['type']['key']};});_0x49695c[_0x000f('0x2d')]=_[_0x000f('0x29')](_0x459fa7,_0x000f('0x26'));_0x49695c[_0x000f('0x2e')]=_[_0x000f('0x2f')](_0x52bed4[_0x000f('0x2e')]);_0x49695c[_0x000f('0x30')]=_[_0x000f('0x31')](_0x49695c[_0x000f('0x2d')],_0x49695c[_0x000f('0x2e')]);_0x59cba0[_0x000f('0x32')]=_[_0x000f('0x31')](_0x49695c[_0x000f('0x2d')],qs['fields'](_0x52bed4[_0x000f('0x2e')][_0x000f('0x33')]));_0x59cba0[_0x000f('0x32')]=_0x59cba0[_0x000f('0x32')][_0x000f('0x34')]?_0x59cba0[_0x000f('0x32')]:_0x49695c['model'];if(!_0x52bed4[_0x000f('0x2e')][_0x000f('0x35')](_0x000f('0x36'))){_0x59cba0[_0x000f('0x1c')]=qs[_0x000f('0x1c')](_0x52bed4[_0x000f('0x2e')][_0x000f('0x1c')]);_0x59cba0['offset']=qs['offset'](_0x52bed4[_0x000f('0x2e')][_0x000f('0x1a')]);}_0x59cba0['order']=qs[_0x000f('0x37')](_0x52bed4[_0x000f('0x2e')]['sort']);_0x59cba0[_0x000f('0x38')]=qs['filters'](_['pick'](_0x52bed4[_0x000f('0x2e')],_0x49695c[_0x000f('0x30')]),_0x459fa7);if(_0x52bed4[_0x000f('0x2e')][_0x000f('0x39')]){_0x59cba0['where']=_[_0x000f('0x3a')](_0x59cba0['where'],{'$or':_[_0x000f('0x29')](_0x459fa7,function(_0xef967e){if(_0xef967e[_0x000f('0x3b')]!==_0x000f('0x3c')){var _0x42d8b4={};_0x42d8b4[_0xef967e[_0x000f('0x26')]]={'$like':'%'+_0x52bed4['query']['filter']+'%'};return _0x42d8b4;}})});}_0x59cba0=_['merge']({},_0x59cba0,_0x52bed4[_0x000f('0x3d')]);var _0x34aa1f={'where':_0x59cba0['where']};return db[_0x000f('0x2a')][_0x000f('0x1d')](_0x34aa1f)[_0x000f('0x21')](function(_0x1db0fe){_0x2fdd95[_0x000f('0x1d')]=_0x1db0fe;if(_0x52bed4[_0x000f('0x2e')][_0x000f('0x3e')]){_0x59cba0[_0x000f('0x3f')]=[{'all':!![]}];}return db[_0x000f('0x2a')]['findAll'](_0x59cba0);})[_0x000f('0x21')](function(_0x2f1e1d){_0x2fdd95[_0x000f('0x40')]=_0x2f1e1d;return _0x2fdd95;})['then'](respondWithFilteredResult(_0x572caa,_0x59cba0))[_0x000f('0x41')](handleError(_0x572caa,null));};exports['show']=function(_0x31b909,_0x16a008){var _0x3fcd03={'raw':!![],'where':{'id':_0x31b909[_0x000f('0x42')]['id']}},_0x135795={};_0x135795['model']=_[_0x000f('0x2f')](db[_0x000f('0x2a')]['rawAttributes']);_0x135795['query']=_['keys'](_0x31b909[_0x000f('0x2e')]);_0x135795['filters']=_['intersection'](_0x135795[_0x000f('0x2d')],_0x135795['query']);_0x3fcd03[_0x000f('0x32')]=_[_0x000f('0x31')](_0x135795[_0x000f('0x2d')],qs['fields'](_0x31b909[_0x000f('0x2e')][_0x000f('0x33')]));_0x3fcd03[_0x000f('0x32')]=_0x3fcd03[_0x000f('0x32')][_0x000f('0x34')]?_0x3fcd03[_0x000f('0x32')]:_0x135795[_0x000f('0x2d')];if(_0x31b909[_0x000f('0x2e')]['includeAll']){_0x3fcd03[_0x000f('0x3f')]=[{'all':!![]}];}_0x3fcd03=_[_0x000f('0x3a')]({},_0x3fcd03,_0x31b909['options']);return db[_0x000f('0x2a')][_0x000f('0x43')](_0x3fcd03)[_0x000f('0x21')](handleEntityNotFound(_0x16a008,null))[_0x000f('0x21')](respondWithResult(_0x16a008,null))['catch'](handleError(_0x16a008,null));};exports[_0x000f('0x44')]=function(_0x241731,_0x4f9030){return db[_0x000f('0x2a')][_0x000f('0x44')](_0x241731[_0x000f('0x45')],{})[_0x000f('0x21')](respondWithResult(_0x4f9030,0xc9))[_0x000f('0x41')](handleError(_0x4f9030,null));};exports[_0x000f('0x46')]=function(_0x3b2aa3,_0x4ed8c0){if(_0x3b2aa3[_0x000f('0x45')]['id']){delete _0x3b2aa3[_0x000f('0x45')]['id'];}return db[_0x000f('0x2a')]['find']({'where':{'id':_0x3b2aa3[_0x000f('0x42')]['id']}})[_0x000f('0x21')](handleEntityNotFound(_0x4ed8c0,null))[_0x000f('0x21')](saveUpdates(_0x3b2aa3[_0x000f('0x45')],null))[_0x000f('0x21')](respondWithResult(_0x4ed8c0,null))[_0x000f('0x41')](handleError(_0x4ed8c0,null));};exports[_0x000f('0x22')]=function(_0x1f9887,_0x445d65){return db['SquareMessage'][_0x000f('0x43')]({'where':{'id':_0x1f9887['params']['id']}})[_0x000f('0x21')](handleEntityNotFound(_0x445d65,null))[_0x000f('0x21')](removeEntity(_0x445d65,null))['catch'](handleError(_0x445d65,null));};
\ No newline at end of file
+var _0xb01c=['index','SquareMessage','rawAttributes','fieldName','key','model','map','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','catch','params','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','send'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0xb01c,0xbe));var _0xcb01=function(_0x484e40,_0x1c0308){_0x484e40=_0x484e40-0x0;var _0x480f6c=_0xb01c[_0x484e40];return _0x480f6c;};'use strict';var emlformat=require(_0xcb01('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xcb01('0x1'));var jsonpatch=require(_0xcb01('0x2'));var rp=require(_0xcb01('0x3'));var moment=require(_0xcb01('0x4'));var BPromise=require(_0xcb01('0x5'));var Mustache=require(_0xcb01('0x6'));var util=require(_0xcb01('0x7'));var path=require('path');var sox=require(_0xcb01('0x8'));var csv=require(_0xcb01('0x9'));var ejs=require(_0xcb01('0xa'));var fs=require('fs');var fs_extra=require(_0xcb01('0xb'));var _=require(_0xcb01('0xc'));var squel=require(_0xcb01('0xd'));var crypto=require(_0xcb01('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xcb01('0xf'));var toCsv=require(_0xcb01('0x9'));var querystring=require(_0xcb01('0x10'));var Papa=require(_0xcb01('0x11'));var Redis=require('ioredis');var authService=require(_0xcb01('0x12'));var qs=require(_0xcb01('0x13'));var as=require(_0xcb01('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xcb01('0x15'))(_0xcb01('0x16'));var utils=require(_0xcb01('0x17'));var config=require(_0xcb01('0x18'));var licenseUtil=require(_0xcb01('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x24e760,_0x3c6540){_0x3c6540=_0x3c6540||0xcc;return function(_0x1bce5e){if(_0x1bce5e){return _0x24e760[_0xcb01('0x1a')](_0x3c6540);}return _0x24e760[_0xcb01('0x1b')](_0x3c6540)[_0xcb01('0x1c')]();};}function respondWithResult(_0x351451,_0x12c597){_0x12c597=_0x12c597||0xc8;return function(_0x4660fa){if(_0x4660fa){return _0x351451[_0xcb01('0x1b')](_0x12c597)[_0xcb01('0x1d')](_0x4660fa);}};}function respondWithFilteredResult(_0xe0b0ba,_0x58eb23){return function(_0x4a572d){if(_0x4a572d){var _0x4a1864=typeof _0x58eb23[_0xcb01('0x1e')]===_0xcb01('0x1f')&&typeof _0x58eb23['limit']==='undefined';var _0x3e271f=_0x4a572d[_0xcb01('0x20')];var _0x34ee4d=_0x4a1864?0x0:_0x58eb23[_0xcb01('0x1e')];var _0x4cf752=_0x4a1864?_0x4a572d[_0xcb01('0x20')]:_0x58eb23[_0xcb01('0x1e')]+_0x58eb23['limit'];var _0x42f8e2;if(_0x4cf752>=_0x3e271f){_0x4cf752=_0x3e271f;_0x42f8e2=0xc8;}else{_0x42f8e2=0xce;}_0xe0b0ba[_0xcb01('0x1b')](_0x42f8e2);return _0xe0b0ba[_0xcb01('0x21')](_0xcb01('0x22'),_0x34ee4d+'-'+_0x4cf752+'/'+_0x3e271f)['json'](_0x4a572d);}return null;};}function patchUpdates(_0x453fe3){return function(_0x20df19){try{jsonpatch[_0xcb01('0x23')](_0x20df19,_0x453fe3,!![]);}catch(_0x4cbdfa){return BPromise[_0xcb01('0x24')](_0x4cbdfa);}return _0x20df19[_0xcb01('0x25')]();};}function saveUpdates(_0x33168b,_0x4032b8){return function(_0x260ccc){if(_0x260ccc){return _0x260ccc[_0xcb01('0x26')](_0x33168b)[_0xcb01('0x27')](function(_0x1a29b7){return _0x1a29b7;});}return null;};}function removeEntity(_0x48ef5b,_0x1a08f8){return function(_0x18eb52){if(_0x18eb52){return _0x18eb52[_0xcb01('0x28')]()[_0xcb01('0x27')](function(){_0x48ef5b[_0xcb01('0x1b')](0xcc)[_0xcb01('0x1c')]();});}};}function handleEntityNotFound(_0x611228,_0xe46ccb){return function(_0x5e9976){if(!_0x5e9976){_0x611228[_0xcb01('0x1a')](0x194);}return _0x5e9976;};}function handleError(_0x6f0ee3,_0x12cc71){_0x12cc71=_0x12cc71||0x1f4;return function(_0x4cba75){logger[_0xcb01('0x29')](_0x4cba75[_0xcb01('0x2a')]);if(_0x4cba75['name']){delete _0x4cba75['name'];}_0x6f0ee3['status'](_0x12cc71)[_0xcb01('0x2b')](_0x4cba75);};}exports[_0xcb01('0x2c')]=function(_0x49eeb4,_0x3938b0){var _0x35a522={},_0x54ae1d={},_0x527d37={'count':0x0,'rows':[]};var _0x35fe0a=_['map'](db[_0xcb01('0x2d')][_0xcb01('0x2e')],function(_0x46102b){return{'name':_0x46102b[_0xcb01('0x2f')],'type':_0x46102b['type'][_0xcb01('0x30')]};});_0x54ae1d[_0xcb01('0x31')]=_[_0xcb01('0x32')](_0x35fe0a,_0xcb01('0x33'));_0x54ae1d[_0xcb01('0x34')]=_[_0xcb01('0x35')](_0x49eeb4['query']);_0x54ae1d[_0xcb01('0x36')]=_[_0xcb01('0x37')](_0x54ae1d[_0xcb01('0x31')],_0x54ae1d[_0xcb01('0x34')]);_0x35a522[_0xcb01('0x38')]=_[_0xcb01('0x37')](_0x54ae1d[_0xcb01('0x31')],qs[_0xcb01('0x39')](_0x49eeb4[_0xcb01('0x34')][_0xcb01('0x39')]));_0x35a522[_0xcb01('0x38')]=_0x35a522[_0xcb01('0x38')][_0xcb01('0x3a')]?_0x35a522[_0xcb01('0x38')]:_0x54ae1d[_0xcb01('0x31')];if(!_0x49eeb4[_0xcb01('0x34')][_0xcb01('0x3b')](_0xcb01('0x3c'))){_0x35a522['limit']=qs['limit'](_0x49eeb4[_0xcb01('0x34')][_0xcb01('0x3d')]);_0x35a522[_0xcb01('0x1e')]=qs[_0xcb01('0x1e')](_0x49eeb4['query']['offset']);}_0x35a522[_0xcb01('0x3e')]=qs[_0xcb01('0x3f')](_0x49eeb4['query'][_0xcb01('0x3f')]);_0x35a522['where']=qs['filters'](_[_0xcb01('0x40')](_0x49eeb4[_0xcb01('0x34')],_0x54ae1d[_0xcb01('0x36')]),_0x35fe0a);if(_0x49eeb4[_0xcb01('0x34')][_0xcb01('0x41')]){_0x35a522['where']=_[_0xcb01('0x42')](_0x35a522[_0xcb01('0x43')],{'$or':_['map'](_0x35fe0a,function(_0x46c8b5){if(_0x46c8b5['type']!==_0xcb01('0x44')){var _0x2d7dba={};_0x2d7dba[_0x46c8b5[_0xcb01('0x33')]]={'$like':'%'+_0x49eeb4[_0xcb01('0x34')][_0xcb01('0x41')]+'%'};return _0x2d7dba;}})});}_0x35a522=_['merge']({},_0x35a522,_0x49eeb4[_0xcb01('0x45')]);var _0x18f181={'where':_0x35a522[_0xcb01('0x43')]};return db[_0xcb01('0x2d')][_0xcb01('0x20')](_0x18f181)[_0xcb01('0x27')](function(_0x562151){_0x527d37[_0xcb01('0x20')]=_0x562151;if(_0x49eeb4[_0xcb01('0x34')][_0xcb01('0x46')]){_0x35a522[_0xcb01('0x47')]=[{'all':!![]}];}return db[_0xcb01('0x2d')][_0xcb01('0x48')](_0x35a522);})['then'](function(_0x486bea){_0x527d37['rows']=_0x486bea;return _0x527d37;})[_0xcb01('0x27')](respondWithFilteredResult(_0x3938b0,_0x35a522))[_0xcb01('0x49')](handleError(_0x3938b0,null));};exports['show']=function(_0x312947,_0x5be2fa){var _0x27f24d={'raw':!![],'where':{'id':_0x312947[_0xcb01('0x4a')]['id']}},_0x3f5990={};_0x3f5990['model']=_[_0xcb01('0x35')](db[_0xcb01('0x2d')]['rawAttributes']);_0x3f5990[_0xcb01('0x34')]=_[_0xcb01('0x35')](_0x312947[_0xcb01('0x34')]);_0x3f5990[_0xcb01('0x36')]=_[_0xcb01('0x37')](_0x3f5990['model'],_0x3f5990['query']);_0x27f24d[_0xcb01('0x38')]=_[_0xcb01('0x37')](_0x3f5990['model'],qs[_0xcb01('0x39')](_0x312947['query'][_0xcb01('0x39')]));_0x27f24d[_0xcb01('0x38')]=_0x27f24d['attributes']['length']?_0x27f24d[_0xcb01('0x38')]:_0x3f5990[_0xcb01('0x31')];if(_0x312947[_0xcb01('0x34')][_0xcb01('0x46')]){_0x27f24d[_0xcb01('0x47')]=[{'all':!![]}];}_0x27f24d=_[_0xcb01('0x42')]({},_0x27f24d,_0x312947[_0xcb01('0x45')]);return db[_0xcb01('0x2d')][_0xcb01('0x4b')](_0x27f24d)[_0xcb01('0x27')](handleEntityNotFound(_0x5be2fa,null))[_0xcb01('0x27')](respondWithResult(_0x5be2fa,null))[_0xcb01('0x49')](handleError(_0x5be2fa,null));};exports[_0xcb01('0x4c')]=function(_0x8b4f86,_0x439ae9){return db[_0xcb01('0x2d')][_0xcb01('0x4c')](_0x8b4f86[_0xcb01('0x4d')],{})[_0xcb01('0x27')](respondWithResult(_0x439ae9,0xc9))[_0xcb01('0x49')](handleError(_0x439ae9,null));};exports[_0xcb01('0x26')]=function(_0x2441f5,_0x5b4ca0){if(_0x2441f5['body']['id']){delete _0x2441f5[_0xcb01('0x4d')]['id'];}return db['SquareMessage'][_0xcb01('0x4b')]({'where':{'id':_0x2441f5[_0xcb01('0x4a')]['id']}})[_0xcb01('0x27')](handleEntityNotFound(_0x5b4ca0,null))[_0xcb01('0x27')](saveUpdates(_0x2441f5[_0xcb01('0x4d')],null))['then'](respondWithResult(_0x5b4ca0,null))['catch'](handleError(_0x5b4ca0,null));};exports[_0xcb01('0x28')]=function(_0x228c77,_0xd46a43){return db[_0xcb01('0x2d')][_0xcb01('0x4b')]({'where':{'id':_0x228c77[_0xcb01('0x4a')]['id']}})['then'](handleEntityNotFound(_0xd46a43,null))[_0xcb01('0x27')](removeEntity(_0xd46a43,null))[_0xcb01('0x49')](handleError(_0xd46a43,null));};
\ No newline at end of file
index 527dbfd..2a5113d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd534=['lodash','util','api','moment','bluebird','rimraf','../../config/environment','./squareMessage.attributes','SquareMessage','square_messages'];(function(_0x310d10,_0x3fe887){var _0x1fb8af=function(_0x42965b){while(--_0x42965b){_0x310d10['push'](_0x310d10['shift']());}};_0x1fb8af(++_0x3fe887);}(_0xd534,0xdc));var _0x4d53=function(_0x13b02f,_0x462a53){_0x13b02f=_0x13b02f-0x0;var _0x12e9a6=_0xd534[_0x13b02f];return _0x12e9a6;};'use strict';var _=require(_0x4d53('0x0'));var util=require(_0x4d53('0x1'));var logger=require('../../config/logger')(_0x4d53('0x2'));var moment=require(_0x4d53('0x3'));var BPromise=require(_0x4d53('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4d53('0x5'));var config=require(_0x4d53('0x6'));var attributes=require(_0x4d53('0x7'));module['exports']=function(_0x412758,_0x4fa50e){return _0x412758['define'](_0x4d53('0x8'),attributes,{'tableName':_0x4d53('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xecdc=['./squareMessage.attributes','exports','define','square_messages','lodash','../../config/logger','api','request-promise','path','rimraf','../../config/environment'];(function(_0x563fa5,_0x6e8b70){var _0x39991d=function(_0x51e638){while(--_0x51e638){_0x563fa5['push'](_0x563fa5['shift']());}};_0x39991d(++_0x6e8b70);}(_0xecdc,0x88));var _0xcecd=function(_0x4cedc7,_0x116b4f){_0x4cedc7=_0x4cedc7-0x0;var _0x2cc4c2=_0xecdc[_0x4cedc7];return _0x2cc4c2;};'use strict';var _=require(_0xcecd('0x0'));var util=require('util');var logger=require(_0xcecd('0x1'))(_0xcecd('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xcecd('0x3'));var fs=require('fs');var path=require(_0xcecd('0x4'));var rimraf=require(_0xcecd('0x5'));var config=require(_0xcecd('0x6'));var attributes=require(_0xcecd('0x7'));module[_0xcecd('0x8')]=function(_0x1b4185,_0x384e8a){return _0x1b4185[_0xcecd('0x9')]('SquareMessage',attributes,{'tableName':_0xcecd('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 402b2ac..3734ef0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x685e=['raw','CreateSquareMessage','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','SquareMessage,\x20%s,\x20%s','debug','SquareMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','SquareMessage','create','options'];(function(_0x2f35a2,_0x9c1ac){var _0x503004=function(_0x41186f){while(--_0x41186f){_0x2f35a2['push'](_0x2f35a2['shift']());}};_0x503004(++_0x9c1ac);}(_0x685e,0x1ce));var _0xe685=function(_0x4b2863,_0x494899){_0x4b2863=_0x4b2863-0x0;var _0x567d67=_0x685e[_0x4b2863];return _0x567d67;};'use strict';var _=require(_0xe685('0x0'));var util=require(_0xe685('0x1'));var moment=require('moment');var BPromise=require(_0xe685('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe685('0x3'));var db=require(_0xe685('0x4'))['db'];var utils=require(_0xe685('0x5'));var logger=require(_0xe685('0x6'))('rpc');var config=require(_0xe685('0x7'));var jayson=require(_0xe685('0x8'));var client=jayson['client'][_0xe685('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1ba445,_0x3c90ad,_0x48fc52){return new BPromise(function(_0x436759,_0xed1bf2){return client[_0xe685('0xa')](_0x1ba445,_0x48fc52)[_0xe685('0xb')](function(_0x49697b){logger[_0xe685('0xc')](_0xe685('0xd'),_0x3c90ad,'request\x20sent');logger[_0xe685('0xe')](_0xe685('0xf'),_0x3c90ad,_0xe685('0x10'),JSON[_0xe685('0x11')](_0x49697b));if(_0x49697b[_0xe685('0x12')]){if(_0x49697b['error'][_0xe685('0x13')]===0x1f4){logger[_0xe685('0x12')](_0xe685('0xd'),_0x3c90ad,_0x49697b['error'][_0xe685('0x14')]);return _0xed1bf2(_0x49697b['error'][_0xe685('0x14')]);}logger[_0xe685('0x12')](_0xe685('0xd'),_0x3c90ad,_0x49697b[_0xe685('0x12')][_0xe685('0x14')]);return _0x436759(_0x49697b[_0xe685('0x12')][_0xe685('0x14')]);}else{logger[_0xe685('0xc')](_0xe685('0xd'),_0x3c90ad,_0xe685('0x10'));_0x436759(_0x49697b['result'][_0xe685('0x14')]);}})['catch'](function(_0x43271a){logger[_0xe685('0x12')](_0xe685('0xd'),_0x3c90ad,_0x43271a);_0xed1bf2(_0x43271a);});});}exports['CreateSquareMessage']=function(_0x1965e4){var _0x3e0fe7=this;return new Promise(function(_0x16776c,_0x1ddd16){return db[_0xe685('0x15')][_0xe685('0x16')](_0x1965e4['body'],{'raw':_0x1965e4[_0xe685('0x17')]?_0x1965e4[_0xe685('0x17')][_0xe685('0x18')]===undefined?!![]:![]:!![]})[_0xe685('0xb')](function(_0x43c0f0){logger[_0xe685('0xc')](_0xe685('0x19'),_0x1965e4);logger[_0xe685('0xe')](_0xe685('0x19'),_0x1965e4,JSON['stringify'](_0x43c0f0));_0x16776c(_0x43c0f0);})[_0xe685('0x1a')](function(_0x465339){logger[_0xe685('0x12')](_0xe685('0x19'),_0x465339[_0xe685('0x14')],_0x1965e4);_0x1ddd16(_0x3e0fe7['error'](0x1f4,_0x465339[_0xe685('0x14')]));});});};
\ No newline at end of file
+var _0x4d90=['rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','SquareMessage,\x20%s,\x20%s','message','result','SquareMessage','create','body','options','raw','info','CreateSquareMessage','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x491249,_0x3acad4){var _0xc507ce=function(_0x274cec){while(--_0x274cec){_0x491249['push'](_0x491249['shift']());}};_0xc507ce(++_0x3acad4);}(_0x4d90,0x8a));var _0x04d9=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0x4d90[_0x5447fd];return _0x15b28a;};'use strict';var _=require('lodash');var util=require(_0x04d9('0x0'));var moment=require(_0x04d9('0x1'));var BPromise=require(_0x04d9('0x2'));var rs=require(_0x04d9('0x3'));var fs=require('fs');var Redis=require(_0x04d9('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x04d9('0x5'));var logger=require(_0x04d9('0x6'))(_0x04d9('0x7'));var config=require(_0x04d9('0x8'));var jayson=require(_0x04d9('0x9'));var client=jayson[_0x04d9('0xa')][_0x04d9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x37d22a,_0x508b12,_0x44a589){return new BPromise(function(_0x12deac,_0x4022a4){return client[_0x04d9('0xc')](_0x37d22a,_0x44a589)[_0x04d9('0xd')](function(_0x55891f){logger['info']('SquareMessage,\x20%s,\x20%s',_0x508b12,_0x04d9('0xe'));logger[_0x04d9('0xf')](_0x04d9('0x10'),_0x508b12,_0x04d9('0xe'),JSON[_0x04d9('0x11')](_0x55891f));if(_0x55891f['error']){if(_0x55891f[_0x04d9('0x12')]['code']===0x1f4){logger['error'](_0x04d9('0x13'),_0x508b12,_0x55891f['error'][_0x04d9('0x14')]);return _0x4022a4(_0x55891f[_0x04d9('0x12')][_0x04d9('0x14')]);}logger[_0x04d9('0x12')](_0x04d9('0x13'),_0x508b12,_0x55891f['error'][_0x04d9('0x14')]);return _0x12deac(_0x55891f['error'][_0x04d9('0x14')]);}else{logger['info'](_0x04d9('0x13'),_0x508b12,_0x04d9('0xe'));_0x12deac(_0x55891f[_0x04d9('0x15')]['message']);}})['catch'](function(_0xb958d){logger[_0x04d9('0x12')](_0x04d9('0x13'),_0x508b12,_0xb958d);_0x4022a4(_0xb958d);});});}exports['CreateSquareMessage']=function(_0x4d5209){var _0x3eacba=this;return new Promise(function(_0x374f11,_0x4b4d55){return db[_0x04d9('0x16')][_0x04d9('0x17')](_0x4d5209[_0x04d9('0x18')],{'raw':_0x4d5209[_0x04d9('0x19')]?_0x4d5209[_0x04d9('0x19')][_0x04d9('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x1fc963){logger[_0x04d9('0x1b')](_0x04d9('0x1c'),_0x4d5209);logger[_0x04d9('0xf')](_0x04d9('0x1c'),_0x4d5209,JSON[_0x04d9('0x11')](_0x1fc963));_0x374f11(_0x1fc963);})['catch'](function(_0x26cf21){logger[_0x04d9('0x12')](_0x04d9('0x1c'),_0x26cf21[_0x04d9('0x14')],_0x4d5209);_0x4b4d55(_0x3eacba[_0x04d9('0x12')](0x1f4,_0x26cf21[_0x04d9('0x14')]));});});};
\ No newline at end of file
index 53fdd3e..224c640 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97a7=['delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','/:id/test','test','post','create','/:id','update'];(function(_0x1e20f4,_0x103413){var _0x7d34cd=function(_0x51f50f){while(--_0x51f50f){_0x1e20f4['push'](_0x1e20f4['shift']());}};_0x7d34cd(++_0x103413);}(_0x97a7,0x1bb));var _0x797a=function(_0x27392c,_0x24bb3e){_0x27392c=_0x27392c-0x0;var _0x239754=_0x97a7[_0x27392c];return _0x239754;};'use strict';var multer=require(_0x797a('0x0'));var util=require(_0x797a('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x797a('0x2'));var router=express[_0x797a('0x3')]();var fs_extra=require(_0x797a('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x797a('0x5'));var config=require(_0x797a('0x6'));var controller=require('./squareOdbc.controller');router[_0x797a('0x7')]('/',auth[_0x797a('0x8')](),controller[_0x797a('0x9')]);router[_0x797a('0x7')]('/:id',auth[_0x797a('0x8')](),controller[_0x797a('0xa')]);router['get'](_0x797a('0xb'),auth[_0x797a('0x8')](),timeout('15s'),controller[_0x797a('0xc')]);router[_0x797a('0xd')]('/',auth[_0x797a('0x8')](),controller[_0x797a('0xe')]);router['put'](_0x797a('0xf'),auth['isAuthenticated'](),controller[_0x797a('0x10')]);router[_0x797a('0x11')](_0x797a('0xf'),auth[_0x797a('0x8')](),controller[_0x797a('0x12')]);module[_0x797a('0x13')]=router;
\ No newline at end of file
+var _0x2b37=['exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','get','/:id','show','/:id/test','15s','create','put','update','delete','destroy'];(function(_0x1d3264,_0x58afe9){var _0x36960b=function(_0x503acd){while(--_0x503acd){_0x1d3264['push'](_0x1d3264['shift']());}};_0x36960b(++_0x58afe9);}(_0x2b37,0x131));var _0x72b3=function(_0xb9923d,_0x36ce6c){_0xb9923d=_0xb9923d-0x0;var _0x239ce1=_0x2b37[_0xb9923d];return _0x239ce1;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x72b3('0x0'));var timeout=require(_0x72b3('0x1'));var express=require('express');var router=express[_0x72b3('0x2')]();var fs_extra=require(_0x72b3('0x3'));var auth=require(_0x72b3('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x72b3('0x5'));var controller=require('./squareOdbc.controller');router['get']('/',auth[_0x72b3('0x6')](),controller[_0x72b3('0x7')]);router[_0x72b3('0x8')](_0x72b3('0x9'),auth['isAuthenticated'](),controller[_0x72b3('0xa')]);router[_0x72b3('0x8')](_0x72b3('0xb'),auth['isAuthenticated'](),timeout(_0x72b3('0xc')),controller['test']);router['post']('/',auth[_0x72b3('0x6')](),controller[_0x72b3('0xd')]);router[_0x72b3('0xe')](_0x72b3('0x9'),auth[_0x72b3('0x6')](),controller[_0x72b3('0xf')]);router[_0x72b3('0x10')](_0x72b3('0x9'),auth[_0x72b3('0x6')](),controller[_0x72b3('0x11')]);module[_0x72b3('0x12')]=router;
\ No newline at end of file
index 0cbb860..c29be72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f75=['sequelize','exports','STRING'];(function(_0x27d42a,_0xa10c62){var _0x89bfbd=function(_0x2d9a4f){while(--_0x2d9a4f){_0x27d42a['push'](_0x27d42a['shift']());}};_0x89bfbd(++_0xa10c62);}(_0x4f75,0x108));var _0x54f7=function(_0x4e4427,_0x4fdff0){_0x4e4427=_0x4e4427-0x0;var _0x56bfeb=_0x4f75[_0x4e4427];return _0x56bfeb;};'use strict';var Sequelize=require(_0x54f7('0x0'));module[_0x54f7('0x1')]={'name':{'type':Sequelize[_0x54f7('0x2')],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize[_0x54f7('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xaac7=['name','sequelize','STRING'];(function(_0x5d96ec,_0x39248f){var _0x350f30=function(_0x8f623f){while(--_0x8f623f){_0x5d96ec['push'](_0x5d96ec['shift']());}};_0x350f30(++_0x39248f);}(_0xaac7,0xd6));var _0x7aac=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0xaac7[_0x164eca];return _0x2ce562;};'use strict';var Sequelize=require(_0x7aac('0x0'));module['exports']={'name':{'type':Sequelize[_0x7aac('0x1')],'unique':_0x7aac('0x2'),'allowNull':![]},'dsn':{'type':Sequelize[_0x7aac('0x1')]},'description':{'type':Sequelize[_0x7aac('0x1')]}};
\ No newline at end of file
index c5f5720..fc6b564 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf18e=['filters','query','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','include','rows','catch','show','params','rawAttributes','intersection','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','test','dsn','odbc','openSync','closeSync','eml-format','rimraf','zip-dir','moment','bluebird','path','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','ODBC','UserProfileResource','error','stack','name','send','index','map','SquareOdbc','type','key','model','keys'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf18e,0x76));var _0xef18=function(_0x3f460e,_0x50f58b){_0x3f460e=_0x3f460e-0x0;var _0x34327f=_0xf18e[_0x3f460e];return _0x34327f;};'use strict';var emlformat=require(_0xef18('0x0'));var rimraf=require(_0xef18('0x1'));var zipdir=require(_0xef18('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xef18('0x3'));var BPromise=require(_0xef18('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xef18('0x5'));var sox=require('sox');var csv=require(_0xef18('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xef18('0x7'));var squel=require(_0xef18('0x8'));var crypto=require(_0xef18('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xef18('0xa'));var toCsv=require(_0xef18('0x6'));var querystring=require(_0xef18('0xb'));var Papa=require(_0xef18('0xc'));var Redis=require(_0xef18('0xd'));var authService=require(_0xef18('0xe'));var qs=require(_0xef18('0xf'));var as=require(_0xef18('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xef18('0x11'))(_0xef18('0x12'));var utils=require(_0xef18('0x13'));var config=require(_0xef18('0x14'));var licenseUtil=require(_0xef18('0x15'));var db=require(_0xef18('0x16'))['db'];function respondWithStatusCode(_0x402b7e,_0x5112b3){_0x5112b3=_0x5112b3||0xcc;return function(_0x5da7d5){if(_0x5da7d5){return _0x402b7e['sendStatus'](_0x5112b3);}return _0x402b7e[_0xef18('0x17')](_0x5112b3)[_0xef18('0x18')]();};}function respondWithResult(_0x4bcbd5,_0x443fa0){_0x443fa0=_0x443fa0||0xc8;return function(_0x5c78cf){if(_0x5c78cf){return _0x4bcbd5[_0xef18('0x17')](_0x443fa0)[_0xef18('0x19')](_0x5c78cf);}};}function respondWithFilteredResult(_0x2bfa0e,_0x1621fe){return function(_0x5e3f66){if(_0x5e3f66){var _0x7f2350=typeof _0x1621fe[_0xef18('0x1a')]===_0xef18('0x1b')&&typeof _0x1621fe[_0xef18('0x1c')]===_0xef18('0x1b');var _0x2ab586=_0x5e3f66[_0xef18('0x1d')];var _0x387d31=_0x7f2350?0x0:_0x1621fe[_0xef18('0x1a')];var _0x30ac8f=_0x7f2350?_0x5e3f66['count']:_0x1621fe[_0xef18('0x1a')]+_0x1621fe['limit'];var _0x2b714d;if(_0x30ac8f>=_0x2ab586){_0x30ac8f=_0x2ab586;_0x2b714d=0xc8;}else{_0x2b714d=0xce;}_0x2bfa0e[_0xef18('0x17')](_0x2b714d);return _0x2bfa0e[_0xef18('0x1e')](_0xef18('0x1f'),_0x387d31+'-'+_0x30ac8f+'/'+_0x2ab586)[_0xef18('0x19')](_0x5e3f66);}return null;};}function patchUpdates(_0x1e95b1){return function(_0x557c54){try{jsonpatch[_0xef18('0x20')](_0x557c54,_0x1e95b1,!![]);}catch(_0x121613){return BPromise[_0xef18('0x21')](_0x121613);}return _0x557c54[_0xef18('0x22')]();};}function saveUpdates(_0x31e655,_0xfd7518){return function(_0x173d4a){if(_0x173d4a){return _0x173d4a[_0xef18('0x23')](_0x31e655)[_0xef18('0x24')](function(_0x49e9f6){return _0x49e9f6;});}return null;};}function removeEntity(_0x1a5033,_0x183d92){return function(_0x570f13){if(_0x570f13){return _0x570f13[_0xef18('0x25')]()[_0xef18('0x24')](function(){var _0xbda485=_0x570f13[_0xef18('0x26')]({'plain':!![]});var _0x31fcfb=_0xef18('0x27');return db[_0xef18('0x28')][_0xef18('0x25')]({'where':{'type':_0x31fcfb,'resourceId':_0xbda485['id']}})[_0xef18('0x24')](function(){return _0x570f13;});})[_0xef18('0x24')](function(){_0x1a5033[_0xef18('0x17')](0xcc)[_0xef18('0x18')]();});}};}function handleEntityNotFound(_0x36fb8f,_0x2fa4d2){return function(_0x5e270b){if(!_0x5e270b){_0x36fb8f['sendStatus'](0x194);}return _0x5e270b;};}function handleError(_0x28cc7b,_0x316385){_0x316385=_0x316385||0x1f4;return function(_0x13b4b5){logger[_0xef18('0x29')](_0x13b4b5[_0xef18('0x2a')]);if(_0x13b4b5[_0xef18('0x2b')]){delete _0x13b4b5['name'];}_0x28cc7b[_0xef18('0x17')](_0x316385)[_0xef18('0x2c')](_0x13b4b5);};}exports[_0xef18('0x2d')]=function(_0x154aff,_0x382315){var _0x2e9790={},_0x2bfe94={},_0x4af33e={'count':0x0,'rows':[]};var _0x318b71=_[_0xef18('0x2e')](db[_0xef18('0x2f')]['rawAttributes'],function(_0x1ab588){return{'name':_0x1ab588['fieldName'],'type':_0x1ab588[_0xef18('0x30')][_0xef18('0x31')]};});_0x2bfe94[_0xef18('0x32')]=_[_0xef18('0x2e')](_0x318b71,_0xef18('0x2b'));_0x2bfe94['query']=_[_0xef18('0x33')](_0x154aff['query']);_0x2bfe94[_0xef18('0x34')]=_['intersection'](_0x2bfe94[_0xef18('0x32')],_0x2bfe94[_0xef18('0x35')]);_0x2e9790[_0xef18('0x36')]=_['intersection'](_0x2bfe94['model'],qs[_0xef18('0x37')](_0x154aff[_0xef18('0x35')]['fields']));_0x2e9790[_0xef18('0x36')]=_0x2e9790[_0xef18('0x36')][_0xef18('0x38')]?_0x2e9790[_0xef18('0x36')]:_0x2bfe94[_0xef18('0x32')];if(!_0x154aff[_0xef18('0x35')]['hasOwnProperty'](_0xef18('0x39'))){_0x2e9790['limit']=qs['limit'](_0x154aff['query'][_0xef18('0x1c')]);_0x2e9790[_0xef18('0x1a')]=qs['offset'](_0x154aff['query'][_0xef18('0x1a')]);}_0x2e9790[_0xef18('0x3a')]=qs[_0xef18('0x3b')](_0x154aff[_0xef18('0x35')][_0xef18('0x3b')]);_0x2e9790[_0xef18('0x3c')]=qs['filters'](_['pick'](_0x154aff[_0xef18('0x35')],_0x2bfe94[_0xef18('0x34')]),_0x318b71);if(_0x154aff['query'][_0xef18('0x3d')]){_0x2e9790[_0xef18('0x3c')]=_[_0xef18('0x3e')](_0x2e9790['where'],{'$or':_[_0xef18('0x2e')](_0x318b71,function(_0x310759){if(_0x310759[_0xef18('0x30')]!==_0xef18('0x3f')){var _0x3680c0={};_0x3680c0[_0x310759[_0xef18('0x2b')]]={'$like':'%'+_0x154aff['query'][_0xef18('0x3d')]+'%'};return _0x3680c0;}})});}_0x2e9790=_[_0xef18('0x3e')]({},_0x2e9790,_0x154aff[_0xef18('0x40')]);var _0x2611f2={'where':_0x2e9790['where']};return db[_0xef18('0x2f')][_0xef18('0x1d')](_0x2611f2)[_0xef18('0x24')](function(_0x5b1ae6){_0x4af33e[_0xef18('0x1d')]=_0x5b1ae6;if(_0x154aff[_0xef18('0x35')]['includeAll']){_0x2e9790[_0xef18('0x41')]=[{'all':!![]}];}return db[_0xef18('0x2f')]['findAll'](_0x2e9790);})['then'](function(_0x321c43){_0x4af33e[_0xef18('0x42')]=_0x321c43;return _0x4af33e;})[_0xef18('0x24')](respondWithFilteredResult(_0x382315,_0x2e9790))[_0xef18('0x43')](handleError(_0x382315,null));};exports[_0xef18('0x44')]=function(_0xdb912d,_0x1e2832){var _0x3041b1={'raw':!![],'where':{'id':_0xdb912d[_0xef18('0x45')]['id']}},_0x2aa827={};_0x2aa827[_0xef18('0x32')]=_[_0xef18('0x33')](db[_0xef18('0x2f')][_0xef18('0x46')]);_0x2aa827[_0xef18('0x35')]=_[_0xef18('0x33')](_0xdb912d[_0xef18('0x35')]);_0x2aa827['filters']=_[_0xef18('0x47')](_0x2aa827[_0xef18('0x32')],_0x2aa827[_0xef18('0x35')]);_0x3041b1[_0xef18('0x36')]=_[_0xef18('0x47')](_0x2aa827[_0xef18('0x32')],qs[_0xef18('0x37')](_0xdb912d[_0xef18('0x35')]['fields']));_0x3041b1[_0xef18('0x36')]=_0x3041b1[_0xef18('0x36')][_0xef18('0x38')]?_0x3041b1[_0xef18('0x36')]:_0x2aa827[_0xef18('0x32')];if(_0xdb912d['query'][_0xef18('0x48')]){_0x3041b1[_0xef18('0x41')]=[{'all':!![]}];}_0x3041b1=_[_0xef18('0x3e')]({},_0x3041b1,_0xdb912d[_0xef18('0x40')]);return db[_0xef18('0x2f')][_0xef18('0x49')](_0x3041b1)[_0xef18('0x24')](handleEntityNotFound(_0x1e2832,null))[_0xef18('0x24')](respondWithResult(_0x1e2832,null))[_0xef18('0x43')](handleError(_0x1e2832,null));};exports[_0xef18('0x4a')]=function(_0x2f8144,_0x5ca1db){return db[_0xef18('0x2f')][_0xef18('0x4a')](_0x2f8144[_0xef18('0x4b')],{})[_0xef18('0x24')](function(_0x12102c){var _0x2ed4f5=_0x2f8144[_0xef18('0x4c')][_0xef18('0x26')]({'plain':!![]});if(!_0x2ed4f5)throw new Error(_0xef18('0x4d'));if(_0x2ed4f5['role']===_0xef18('0x4c')){var _0x435b2c=_0x12102c[_0xef18('0x26')]({'plain':!![]});var _0x25e469=_0xef18('0x27');return db[_0xef18('0x4e')][_0xef18('0x49')]({'where':{'name':_0x25e469,'userProfileId':_0x2ed4f5[_0xef18('0x4f')]},'raw':!![]})[_0xef18('0x24')](function(_0x27af46){if(_0x27af46&&_0x27af46['autoAssociation']===0x0){return db[_0xef18('0x28')]['create']({'name':_0x435b2c['name'],'resourceId':_0x435b2c['id'],'type':_0x27af46[_0xef18('0x2b')],'sectionId':_0x27af46['id']},{})[_0xef18('0x24')](function(){return _0x12102c;});}else{return _0x12102c;}})[_0xef18('0x43')](function(_0x6fcf55){logger[_0xef18('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x6fcf55);throw _0x6fcf55;});}return _0x12102c;})[_0xef18('0x24')](respondWithResult(_0x5ca1db,0xc9))[_0xef18('0x43')](handleError(_0x5ca1db,null));};exports['update']=function(_0x17a230,_0x59e948){if(_0x17a230['body']['id']){delete _0x17a230['body']['id'];}return db[_0xef18('0x2f')]['find']({'where':{'id':_0x17a230[_0xef18('0x45')]['id']}})[_0xef18('0x24')](handleEntityNotFound(_0x59e948,null))[_0xef18('0x24')](saveUpdates(_0x17a230[_0xef18('0x4b')],null))['then'](respondWithResult(_0x59e948,null))['catch'](handleError(_0x59e948,null));};exports[_0xef18('0x25')]=function(_0x144597,_0x12a151){return db['SquareOdbc'][_0xef18('0x49')]({'where':{'id':_0x144597[_0xef18('0x45')]['id']}})[_0xef18('0x24')](handleEntityNotFound(_0x12a151,null))[_0xef18('0x24')](removeEntity(_0x12a151,null))[_0xef18('0x43')](handleError(_0x12a151,null));};exports[_0xef18('0x50')]=function(_0xf01b36,_0x221789,_0x461f8d){var _0x3f2e00;return db[_0xef18('0x2f')][_0xef18('0x49')]({'where':{'id':_0xf01b36[_0xef18('0x45')]['id']},'attributes':['id',_0xef18('0x51')]})[_0xef18('0x24')](handleEntityNotFound(_0x221789,null))['then'](function(_0x319b6c){if(_0x319b6c){var _0x532e85=require(_0xef18('0x52'))();_0x532e85[_0xef18('0x53')](_0x319b6c[_0xef18('0x51')]);_0x532e85[_0xef18('0x54')]();return _0x319b6c;}})[_0xef18('0x24')](respondWithResult(_0x221789,null))[_0xef18('0x43')](handleError(_0x221789,null));};
\ No newline at end of file
+var _0xe529=['fieldName','type','key','query','keys','filters','model','attributes','fields','length','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','intersection','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','create','find','test','dsn','odbc','openSync','closeSync','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','update','then','destroy','get','ODBC','UserProfileResource','sendStatus','error','stack','name','index','map','SquareOdbc','rawAttributes'];(function(_0x5b7788,_0x309ae5){var _0x573871=function(_0x5c79fd){while(--_0x5c79fd){_0x5b7788['push'](_0x5b7788['shift']());}};_0x573871(++_0x309ae5);}(_0xe529,0xda));var _0x9e52=function(_0x267750,_0x54f315){_0x267750=_0x267750-0x0;var _0x12f0dd=_0xe529[_0x267750];return _0x12f0dd;};'use strict';var emlformat=require(_0x9e52('0x0'));var rimraf=require(_0x9e52('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9e52('0x2'));var rp=require(_0x9e52('0x3'));var moment=require(_0x9e52('0x4'));var BPromise=require(_0x9e52('0x5'));var Mustache=require(_0x9e52('0x6'));var util=require(_0x9e52('0x7'));var path=require(_0x9e52('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9e52('0x9'));var _=require(_0x9e52('0xa'));var squel=require(_0x9e52('0xb'));var crypto=require(_0x9e52('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x9e52('0xd'));var toCsv=require(_0x9e52('0xe'));var querystring=require(_0x9e52('0xf'));var Papa=require(_0x9e52('0x10'));var Redis=require(_0x9e52('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x9e52('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9e52('0x13'));var logger=require(_0x9e52('0x14'))(_0x9e52('0x15'));var utils=require(_0x9e52('0x16'));var config=require(_0x9e52('0x17'));var licenseUtil=require(_0x9e52('0x18'));var db=require(_0x9e52('0x19'))['db'];function respondWithStatusCode(_0x85f1e5,_0x392ef2){_0x392ef2=_0x392ef2||0xcc;return function(_0x164622){if(_0x164622){return _0x85f1e5['sendStatus'](_0x392ef2);}return _0x85f1e5[_0x9e52('0x1a')](_0x392ef2)[_0x9e52('0x1b')]();};}function respondWithResult(_0x376709,_0x1c5cd5){_0x1c5cd5=_0x1c5cd5||0xc8;return function(_0x17e523){if(_0x17e523){return _0x376709[_0x9e52('0x1a')](_0x1c5cd5)[_0x9e52('0x1c')](_0x17e523);}};}function respondWithFilteredResult(_0x109b24,_0x2ab28c){return function(_0x4e88c0){if(_0x4e88c0){var _0x2e3c9e=typeof _0x2ab28c[_0x9e52('0x1d')]===_0x9e52('0x1e')&&typeof _0x2ab28c[_0x9e52('0x1f')]==='undefined';var _0x414dec=_0x4e88c0['count'];var _0x7dc64=_0x2e3c9e?0x0:_0x2ab28c['offset'];var _0x473ce3=_0x2e3c9e?_0x4e88c0[_0x9e52('0x20')]:_0x2ab28c['offset']+_0x2ab28c[_0x9e52('0x1f')];var _0x2a0023;if(_0x473ce3>=_0x414dec){_0x473ce3=_0x414dec;_0x2a0023=0xc8;}else{_0x2a0023=0xce;}_0x109b24[_0x9e52('0x1a')](_0x2a0023);return _0x109b24['set'](_0x9e52('0x21'),_0x7dc64+'-'+_0x473ce3+'/'+_0x414dec)[_0x9e52('0x1c')](_0x4e88c0);}return null;};}function patchUpdates(_0x48fb81){return function(_0xc085d0){try{jsonpatch[_0x9e52('0x22')](_0xc085d0,_0x48fb81,!![]);}catch(_0x2a5127){return BPromise['reject'](_0x2a5127);}return _0xc085d0['save']();};}function saveUpdates(_0x5ca71f,_0x3d6cc9){return function(_0x5bc56a){if(_0x5bc56a){return _0x5bc56a[_0x9e52('0x23')](_0x5ca71f)[_0x9e52('0x24')](function(_0x5bd4dd){return _0x5bd4dd;});}return null;};}function removeEntity(_0x5fa9a3,_0x125179){return function(_0x5f0913){if(_0x5f0913){return _0x5f0913[_0x9e52('0x25')]()[_0x9e52('0x24')](function(){var _0x2a02f6=_0x5f0913[_0x9e52('0x26')]({'plain':!![]});var _0x3a2d83=_0x9e52('0x27');return db[_0x9e52('0x28')]['destroy']({'where':{'type':_0x3a2d83,'resourceId':_0x2a02f6['id']}})[_0x9e52('0x24')](function(){return _0x5f0913;});})[_0x9e52('0x24')](function(){_0x5fa9a3[_0x9e52('0x1a')](0xcc)[_0x9e52('0x1b')]();});}};}function handleEntityNotFound(_0x2cf7ac,_0x33b333){return function(_0x1a26dd){if(!_0x1a26dd){_0x2cf7ac[_0x9e52('0x29')](0x194);}return _0x1a26dd;};}function handleError(_0x387728,_0x574e1d){_0x574e1d=_0x574e1d||0x1f4;return function(_0x5e6200){logger[_0x9e52('0x2a')](_0x5e6200[_0x9e52('0x2b')]);if(_0x5e6200['name']){delete _0x5e6200[_0x9e52('0x2c')];}_0x387728['status'](_0x574e1d)['send'](_0x5e6200);};}exports[_0x9e52('0x2d')]=function(_0x644af9,_0x93f8e0){var _0x440db6={},_0x35b7a8={},_0x18c686={'count':0x0,'rows':[]};var _0xc366c4=_[_0x9e52('0x2e')](db[_0x9e52('0x2f')][_0x9e52('0x30')],function(_0x191181){return{'name':_0x191181[_0x9e52('0x31')],'type':_0x191181[_0x9e52('0x32')][_0x9e52('0x33')]};});_0x35b7a8['model']=_[_0x9e52('0x2e')](_0xc366c4,_0x9e52('0x2c'));_0x35b7a8[_0x9e52('0x34')]=_[_0x9e52('0x35')](_0x644af9[_0x9e52('0x34')]);_0x35b7a8[_0x9e52('0x36')]=_['intersection'](_0x35b7a8[_0x9e52('0x37')],_0x35b7a8['query']);_0x440db6[_0x9e52('0x38')]=_['intersection'](_0x35b7a8[_0x9e52('0x37')],qs[_0x9e52('0x39')](_0x644af9['query'][_0x9e52('0x39')]));_0x440db6[_0x9e52('0x38')]=_0x440db6['attributes'][_0x9e52('0x3a')]?_0x440db6['attributes']:_0x35b7a8['model'];if(!_0x644af9['query']['hasOwnProperty']('nolimit')){_0x440db6['limit']=qs['limit'](_0x644af9[_0x9e52('0x34')]['limit']);_0x440db6[_0x9e52('0x1d')]=qs[_0x9e52('0x1d')](_0x644af9[_0x9e52('0x34')][_0x9e52('0x1d')]);}_0x440db6[_0x9e52('0x3b')]=qs[_0x9e52('0x3c')](_0x644af9[_0x9e52('0x34')]['sort']);_0x440db6[_0x9e52('0x3d')]=qs['filters'](_[_0x9e52('0x3e')](_0x644af9[_0x9e52('0x34')],_0x35b7a8[_0x9e52('0x36')]),_0xc366c4);if(_0x644af9[_0x9e52('0x34')]['filter']){_0x440db6['where']=_[_0x9e52('0x3f')](_0x440db6[_0x9e52('0x3d')],{'$or':_['map'](_0xc366c4,function(_0x1299e3){if(_0x1299e3['type']!==_0x9e52('0x40')){var _0x31fbec={};_0x31fbec[_0x1299e3[_0x9e52('0x2c')]]={'$like':'%'+_0x644af9[_0x9e52('0x34')][_0x9e52('0x41')]+'%'};return _0x31fbec;}})});}_0x440db6=_['merge']({},_0x440db6,_0x644af9[_0x9e52('0x42')]);var _0x9c354b={'where':_0x440db6['where']};return db[_0x9e52('0x2f')][_0x9e52('0x20')](_0x9c354b)[_0x9e52('0x24')](function(_0x14112f){_0x18c686[_0x9e52('0x20')]=_0x14112f;if(_0x644af9[_0x9e52('0x34')][_0x9e52('0x43')]){_0x440db6[_0x9e52('0x44')]=[{'all':!![]}];}return db[_0x9e52('0x2f')][_0x9e52('0x45')](_0x440db6);})['then'](function(_0xff4102){_0x18c686[_0x9e52('0x46')]=_0xff4102;return _0x18c686;})['then'](respondWithFilteredResult(_0x93f8e0,_0x440db6))[_0x9e52('0x47')](handleError(_0x93f8e0,null));};exports[_0x9e52('0x48')]=function(_0x59c149,_0x3fc735){var _0x383a3c={'raw':!![],'where':{'id':_0x59c149[_0x9e52('0x49')]['id']}},_0x144ff0={};_0x144ff0[_0x9e52('0x37')]=_[_0x9e52('0x35')](db['SquareOdbc'][_0x9e52('0x30')]);_0x144ff0[_0x9e52('0x34')]=_[_0x9e52('0x35')](_0x59c149['query']);_0x144ff0[_0x9e52('0x36')]=_[_0x9e52('0x4a')](_0x144ff0[_0x9e52('0x37')],_0x144ff0[_0x9e52('0x34')]);_0x383a3c['attributes']=_['intersection'](_0x144ff0[_0x9e52('0x37')],qs[_0x9e52('0x39')](_0x59c149[_0x9e52('0x34')][_0x9e52('0x39')]));_0x383a3c[_0x9e52('0x38')]=_0x383a3c[_0x9e52('0x38')][_0x9e52('0x3a')]?_0x383a3c[_0x9e52('0x38')]:_0x144ff0[_0x9e52('0x37')];if(_0x59c149[_0x9e52('0x34')][_0x9e52('0x43')]){_0x383a3c[_0x9e52('0x44')]=[{'all':!![]}];}_0x383a3c=_[_0x9e52('0x3f')]({},_0x383a3c,_0x59c149[_0x9e52('0x42')]);return db['SquareOdbc']['find'](_0x383a3c)['then'](handleEntityNotFound(_0x3fc735,null))[_0x9e52('0x24')](respondWithResult(_0x3fc735,null))[_0x9e52('0x47')](handleError(_0x3fc735,null));};exports['create']=function(_0x4eae29,_0x37e262){return db[_0x9e52('0x2f')]['create'](_0x4eae29[_0x9e52('0x4b')],{})[_0x9e52('0x24')](function(_0xf28f40){var _0x3e0d73=_0x4eae29[_0x9e52('0x4c')]['get']({'plain':!![]});if(!_0x3e0d73)throw new Error(_0x9e52('0x4d'));if(_0x3e0d73[_0x9e52('0x4e')]===_0x9e52('0x4c')){var _0x533689=_0xf28f40['get']({'plain':!![]});var _0x4cc719='ODBC';return db[_0x9e52('0x4f')]['find']({'where':{'name':_0x4cc719,'userProfileId':_0x3e0d73[_0x9e52('0x50')]},'raw':!![]})['then'](function(_0x1f9347){if(_0x1f9347&&_0x1f9347[_0x9e52('0x51')]===0x0){return db[_0x9e52('0x28')][_0x9e52('0x52')]({'name':_0x533689[_0x9e52('0x2c')],'resourceId':_0x533689['id'],'type':_0x1f9347['name'],'sectionId':_0x1f9347['id']},{})[_0x9e52('0x24')](function(){return _0xf28f40;});}else{return _0xf28f40;}})['catch'](function(_0x1a9623){logger[_0x9e52('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1a9623);throw _0x1a9623;});}return _0xf28f40;})[_0x9e52('0x24')](respondWithResult(_0x37e262,0xc9))[_0x9e52('0x47')](handleError(_0x37e262,null));};exports[_0x9e52('0x23')]=function(_0x36ef09,_0x25faa1){if(_0x36ef09[_0x9e52('0x4b')]['id']){delete _0x36ef09[_0x9e52('0x4b')]['id'];}return db[_0x9e52('0x2f')][_0x9e52('0x53')]({'where':{'id':_0x36ef09[_0x9e52('0x49')]['id']}})['then'](handleEntityNotFound(_0x25faa1,null))[_0x9e52('0x24')](saveUpdates(_0x36ef09[_0x9e52('0x4b')],null))[_0x9e52('0x24')](respondWithResult(_0x25faa1,null))[_0x9e52('0x47')](handleError(_0x25faa1,null));};exports[_0x9e52('0x25')]=function(_0x5471a1,_0x95ef2d){return db['SquareOdbc'][_0x9e52('0x53')]({'where':{'id':_0x5471a1[_0x9e52('0x49')]['id']}})[_0x9e52('0x24')](handleEntityNotFound(_0x95ef2d,null))['then'](removeEntity(_0x95ef2d,null))['catch'](handleError(_0x95ef2d,null));};exports[_0x9e52('0x54')]=function(_0x2d7faf,_0x28e17e,_0x407b36){var _0x1f345f;return db[_0x9e52('0x2f')][_0x9e52('0x53')]({'where':{'id':_0x2d7faf[_0x9e52('0x49')]['id']},'attributes':['id',_0x9e52('0x55')]})[_0x9e52('0x24')](handleEntityNotFound(_0x28e17e,null))[_0x9e52('0x24')](function(_0x39e7f5){if(_0x39e7f5){var _0x37b81f=require(_0x9e52('0x56'))();_0x37b81f[_0x9e52('0x57')](_0x39e7f5[_0x9e52('0x55')]);_0x37b81f[_0x9e52('0x58')]();return _0x39e7f5;}})[_0x9e52('0x24')](respondWithResult(_0x28e17e,null))[_0x9e52('0x47')](handleError(_0x28e17e,null));};
\ No newline at end of file
index 311feab..4f3e116 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cda=['./squareOdbc.attributes','exports','define','square_odbc','lodash','../../config/logger','api','rimraf','../../config/environment'];(function(_0x430c28,_0x5e3cdb){var _0xdc5aa=function(_0x221d3a){while(--_0x221d3a){_0x430c28['push'](_0x430c28['shift']());}};_0xdc5aa(++_0x5e3cdb);}(_0x2cda,0x151));var _0xa2cd=function(_0x27031c,_0x55fb8a){_0x27031c=_0x27031c-0x0;var _0x2cea39=_0x2cda[_0x27031c];return _0x2cea39;};'use strict';var _=require(_0xa2cd('0x0'));var util=require('util');var logger=require(_0xa2cd('0x1'))(_0xa2cd('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(_0xa2cd('0x3'));var config=require(_0xa2cd('0x4'));var attributes=require(_0xa2cd('0x5'));module[_0xa2cd('0x6')]=function(_0x101ebb,_0x26883e){return _0x101ebb[_0xa2cd('0x7')]('SquareOdbc',attributes,{'tableName':_0xa2cd('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbccb=['rimraf','../../config/environment','exports','SquareOdbc','square_odbc','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x17e426,_0x5c4c9c){var _0x10b895=function(_0x3b4d84){while(--_0x3b4d84){_0x17e426['push'](_0x17e426['shift']());}};_0x10b895(++_0x5c4c9c);}(_0xbccb,0x1de));var _0xbbcc=function(_0x5491e5,_0x37a869){_0x5491e5=_0x5491e5-0x0;var _0x214eb5=_0xbccb[_0x5491e5];return _0x214eb5;};'use strict';var _=require('lodash');var util=require(_0xbbcc('0x0'));var logger=require(_0xbbcc('0x1'))(_0xbbcc('0x2'));var moment=require(_0xbbcc('0x3'));var BPromise=require(_0xbbcc('0x4'));var rp=require(_0xbbcc('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xbbcc('0x6'));var config=require(_0xbbcc('0x7'));var attributes=require('./squareOdbc.attributes');module[_0xbbcc('0x8')]=function(_0x2e4ccb,_0x3f25d0){return _0x2e4ccb['define'](_0xbbcc('0x9'),attributes,{'tableName':_0xbbcc('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2b4c2d2..95a6df8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd951=['catch','SquareOdbc','options','raw','include','map','model','attributes','ShowSquareOdbc','lodash','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','request','then','info','SquareOdbc,\x20%s,\x20%s','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result'];(function(_0x2f4521,_0x318c2b){var _0x3785ab=function(_0x4ae194){while(--_0x4ae194){_0x2f4521['push'](_0x2f4521['shift']());}};_0x3785ab(++_0x318c2b);}(_0xd951,0xd9));var _0x1d95=function(_0x12aafe,_0x48a8a8){_0x12aafe=_0x12aafe-0x0;var _0x1709d2=_0xd951[_0x12aafe];return _0x1709d2;};'use strict';var _=require(_0x1d95('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1d95('0x1'))['db'];var utils=require(_0x1d95('0x2'));var logger=require('../../config/logger')('rpc');var config=require(_0x1d95('0x3'));var jayson=require(_0x1d95('0x4'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x504691,_0x21c59b,_0x48ec68){return new BPromise(function(_0x307375,_0x4f02b3){return client[_0x1d95('0x5')](_0x504691,_0x48ec68)[_0x1d95('0x6')](function(_0x4c2de4){logger[_0x1d95('0x7')](_0x1d95('0x8'),_0x21c59b,'request\x20sent');logger[_0x1d95('0x9')](_0x1d95('0xa'),_0x21c59b,_0x1d95('0xb'),JSON[_0x1d95('0xc')](_0x4c2de4));if(_0x4c2de4['error']){if(_0x4c2de4['error'][_0x1d95('0xd')]===0x1f4){logger[_0x1d95('0xe')](_0x1d95('0x8'),_0x21c59b,_0x4c2de4[_0x1d95('0xe')]['message']);return _0x4f02b3(_0x4c2de4[_0x1d95('0xe')][_0x1d95('0xf')]);}logger[_0x1d95('0xe')](_0x1d95('0x8'),_0x21c59b,_0x4c2de4['error']['message']);return _0x307375(_0x4c2de4[_0x1d95('0xe')][_0x1d95('0xf')]);}else{logger[_0x1d95('0x7')](_0x1d95('0x8'),_0x21c59b,_0x1d95('0xb'));_0x307375(_0x4c2de4[_0x1d95('0x10')]['message']);}})[_0x1d95('0x11')](function(_0x25bb79){logger['error'](_0x1d95('0x8'),_0x21c59b,_0x25bb79);_0x4f02b3(_0x25bb79);});});}exports['ShowSquareOdbc']=function(_0x5b5b45){var _0x46f8d5=this;return new Promise(function(_0x4089c2,_0x54c9a6){return db[_0x1d95('0x12')]['find']({'raw':_0x5b5b45['options']?_0x5b5b45[_0x1d95('0x13')][_0x1d95('0x14')]===undefined?!![]:![]:!![],'where':_0x5b5b45[_0x1d95('0x13')]?_0x5b5b45[_0x1d95('0x13')]['where']||null:null,'attributes':_0x5b5b45['options']?_0x5b5b45[_0x1d95('0x13')]['attributes']||null:null,'include':_0x5b5b45['options']?_0x5b5b45[_0x1d95('0x13')][_0x1d95('0x15')]?_[_0x1d95('0x16')](_0x5b5b45[_0x1d95('0x13')]['include'],function(_0x51a9d0){return{'model':db[_0x51a9d0['model']],'as':_0x51a9d0['as'],'attributes':_0x51a9d0['attributes'],'include':_0x51a9d0[_0x1d95('0x15')]?_[_0x1d95('0x16')](_0x51a9d0[_0x1d95('0x15')],function(_0x168882){return{'model':db[_0x168882[_0x1d95('0x17')]],'as':_0x168882['as'],'attributes':_0x168882[_0x1d95('0x18')],'include':_0x168882[_0x1d95('0x15')]?_[_0x1d95('0x16')](_0x168882['include'],function(_0x91861b){return{'model':db[_0x91861b[_0x1d95('0x17')]],'as':_0x91861b['as'],'attributes':_0x91861b[_0x1d95('0x18')]};}):[]};}):[]};}):[]:[]})[_0x1d95('0x6')](function(_0x2262cc){logger['info'](_0x1d95('0x19'),_0x5b5b45);logger[_0x1d95('0x9')](_0x1d95('0x19'),_0x5b5b45,JSON[_0x1d95('0xc')](_0x2262cc));_0x4089c2(_0x2262cc);})[_0x1d95('0x11')](function(_0xbfd673){logger[_0x1d95('0xe')]('ShowSquareOdbc',_0xbfd673[_0x1d95('0xf')],_0x5b5b45);_0x54c9a6(_0x46f8d5['error'](0x1f4,_0xbfd673['message']));});});};
\ No newline at end of file
+var _0x9457=['info','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','ShowSquareOdbc','SquareOdbc','options','raw','where','map','include','model','attributes','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','request','then'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x9457,0xd3));var _0x7945=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9457[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7945('0x0'));var util=require(_0x7945('0x1'));var moment=require(_0x7945('0x2'));var BPromise=require(_0x7945('0x3'));var rs=require(_0x7945('0x4'));var fs=require('fs');var Redis=require(_0x7945('0x5'));var db=require(_0x7945('0x6'))['db'];var utils=require(_0x7945('0x7'));var logger=require(_0x7945('0x8'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x7945('0x9')][_0x7945('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x31befc,_0x2ed689,_0x27d7b8){return new BPromise(function(_0x26a57d,_0x328895){return client[_0x7945('0xb')](_0x31befc,_0x27d7b8)[_0x7945('0xc')](function(_0x58af67){logger[_0x7945('0xd')](_0x7945('0xe'),_0x2ed689,_0x7945('0xf'));logger[_0x7945('0x10')](_0x7945('0x11'),_0x2ed689,'request\x20sent',JSON[_0x7945('0x12')](_0x58af67));if(_0x58af67[_0x7945('0x13')]){if(_0x58af67[_0x7945('0x13')]['code']===0x1f4){logger[_0x7945('0x13')](_0x7945('0xe'),_0x2ed689,_0x58af67[_0x7945('0x13')][_0x7945('0x14')]);return _0x328895(_0x58af67['error'][_0x7945('0x14')]);}logger[_0x7945('0x13')]('SquareOdbc,\x20%s,\x20%s',_0x2ed689,_0x58af67[_0x7945('0x13')][_0x7945('0x14')]);return _0x26a57d(_0x58af67[_0x7945('0x13')][_0x7945('0x14')]);}else{logger['info'](_0x7945('0xe'),_0x2ed689,_0x7945('0xf'));_0x26a57d(_0x58af67[_0x7945('0x15')][_0x7945('0x14')]);}})[_0x7945('0x16')](function(_0x3e52c3){logger[_0x7945('0x13')](_0x7945('0xe'),_0x2ed689,_0x3e52c3);_0x328895(_0x3e52c3);});});}exports[_0x7945('0x17')]=function(_0x10f168){var _0x5a007f=this;return new Promise(function(_0x3d1638,_0x4dac39){return db[_0x7945('0x18')]['find']({'raw':_0x10f168[_0x7945('0x19')]?_0x10f168[_0x7945('0x19')][_0x7945('0x1a')]===undefined?!![]:![]:!![],'where':_0x10f168['options']?_0x10f168[_0x7945('0x19')][_0x7945('0x1b')]||null:null,'attributes':_0x10f168[_0x7945('0x19')]?_0x10f168[_0x7945('0x19')]['attributes']||null:null,'include':_0x10f168[_0x7945('0x19')]?_0x10f168['options']['include']?_[_0x7945('0x1c')](_0x10f168[_0x7945('0x19')][_0x7945('0x1d')],function(_0x2e638e){return{'model':db[_0x2e638e[_0x7945('0x1e')]],'as':_0x2e638e['as'],'attributes':_0x2e638e[_0x7945('0x1f')],'include':_0x2e638e[_0x7945('0x1d')]?_[_0x7945('0x1c')](_0x2e638e[_0x7945('0x1d')],function(_0x40ad0d){return{'model':db[_0x40ad0d[_0x7945('0x1e')]],'as':_0x40ad0d['as'],'attributes':_0x40ad0d[_0x7945('0x1f')],'include':_0x40ad0d[_0x7945('0x1d')]?_[_0x7945('0x1c')](_0x40ad0d[_0x7945('0x1d')],function(_0x25c873){return{'model':db[_0x25c873['model']],'as':_0x25c873['as'],'attributes':_0x25c873[_0x7945('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x7945('0xc')](function(_0x11fed7){logger[_0x7945('0xd')](_0x7945('0x17'),_0x10f168);logger[_0x7945('0x10')](_0x7945('0x17'),_0x10f168,JSON[_0x7945('0x12')](_0x11fed7));_0x3d1638(_0x11fed7);})['catch'](function(_0x160b20){logger['error'](_0x7945('0x17'),_0x160b20['message'],_0x10f168);_0x4dac39(_0x5a007f[_0x7945('0x13')](0x1f4,_0x160b20[_0x7945('0x14')]));});});};
\ No newline at end of file
index afd1aa2..3cc8696 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86c0=['getUsers','create','post','addUsers','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','isAuthenticated','index','get','/:id','show','/:id/users'];(function(_0x53955c,_0x1400fd){var _0x591b50=function(_0x4af6be){while(--_0x4af6be){_0x53955c['push'](_0x53955c['shift']());}};_0x591b50(++_0x1400fd);}(_0x86c0,0x133));var _0x086c=function(_0x3df87c,_0x37d311){_0x3df87c=_0x3df87c-0x0;var _0x56b9b8=_0x86c0[_0x3df87c];return _0x56b9b8;};'use strict';var multer=require(_0x086c('0x0'));var util=require('util');var path=require(_0x086c('0x1'));var timeout=require(_0x086c('0x2'));var express=require(_0x086c('0x3'));var router=express[_0x086c('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x086c('0x5'));var interaction=require(_0x086c('0x6'));var config=require(_0x086c('0x7'));var controller=require(_0x086c('0x8'));router['get']('/',auth[_0x086c('0x9')](),controller[_0x086c('0xa')]);router[_0x086c('0xb')](_0x086c('0xc'),auth[_0x086c('0x9')](),controller[_0x086c('0xd')]);router['get'](_0x086c('0xe'),auth[_0x086c('0x9')](),controller[_0x086c('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x086c('0x10')]);router[_0x086c('0x11')](_0x086c('0xe'),auth[_0x086c('0x9')](),controller[_0x086c('0x12')]);router['put'](_0x086c('0xc'),auth[_0x086c('0x9')](),controller[_0x086c('0x13')]);router[_0x086c('0x14')]('/:id',auth['isAuthenticated'](),controller[_0x086c('0x15')]);router['delete'](_0x086c('0xe'),auth[_0x086c('0x9')](),controller['removeUsers']);module[_0x086c('0x16')]=router;
\ No newline at end of file
+var _0x2250=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareProject.controller','get','isAuthenticated','index','/:id','show','getUsers','post','create','/:id/users','addUsers','put','delete','destroy','removeUsers'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x2250,0x178));var _0x0225=function(_0x13062b,_0x285d7d){_0x13062b=_0x13062b-0x0;var _0x564586=_0x2250[_0x13062b];return _0x564586;};'use strict';var multer=require(_0x0225('0x0'));var util=require(_0x0225('0x1'));var path=require(_0x0225('0x2'));var timeout=require(_0x0225('0x3'));var express=require(_0x0225('0x4'));var router=express[_0x0225('0x5')]();var fs_extra=require(_0x0225('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x0225('0x7'));var config=require(_0x0225('0x8'));var controller=require(_0x0225('0x9'));router[_0x0225('0xa')]('/',auth[_0x0225('0xb')](),controller[_0x0225('0xc')]);router[_0x0225('0xa')](_0x0225('0xd'),auth['isAuthenticated'](),controller[_0x0225('0xe')]);router['get']('/:id/users',auth[_0x0225('0xb')](),controller[_0x0225('0xf')]);router[_0x0225('0x10')]('/',auth[_0x0225('0xb')](),controller[_0x0225('0x11')]);router['post'](_0x0225('0x12'),auth[_0x0225('0xb')](),controller[_0x0225('0x13')]);router[_0x0225('0x14')]('/:id',auth[_0x0225('0xb')](),controller['update']);router[_0x0225('0x15')](_0x0225('0xd'),auth['isAuthenticated'](),controller[_0x0225('0x16')]);router[_0x0225('0x15')](_0x0225('0x12'),auth[_0x0225('0xb')](),controller[_0x0225('0x17')]);module[_0x0225('0x18')]=router;
\ No newline at end of file
index fa71fc3..f15bce8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cd6=['name','TEXT','long','getDataValue','preproduction','toString','utf8','BLOB','production','DATE','exports','STRING'];(function(_0x1f331e,_0x47d5cb){var _0x1a020c=function(_0x4e9a03){while(--_0x4e9a03){_0x1f331e['push'](_0x1f331e['shift']());}};_0x1a020c(++_0x47d5cb);}(_0x5cd6,0xfa));var _0x65cd=function(_0x754ab4,_0x56daa7){_0x754ab4=_0x754ab4-0x0;var _0x34079a=_0x5cd6[_0x754ab4];return _0x34079a;};'use strict';var Sequelize=require('sequelize');module[_0x65cd('0x0')]={'name':{'type':Sequelize[_0x65cd('0x1')],'unique':_0x65cd('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x65cd('0x1')]},'notes':{'type':Sequelize[_0x65cd('0x3')]},'preproduction':{'type':Sequelize['BLOB'](_0x65cd('0x4')),'get':function(){if(this[_0x65cd('0x5')](_0x65cd('0x6'))){return this[_0x65cd('0x5')](_0x65cd('0x6'))[_0x65cd('0x7')](_0x65cd('0x8'));}}},'production':{'type':Sequelize[_0x65cd('0x9')](_0x65cd('0x4')),'get':function(){if(this[_0x65cd('0x5')](_0x65cd('0xa'))){return this[_0x65cd('0x5')]('production')[_0x65cd('0x7')](_0x65cd('0x8'));}}},'savedAt':{'type':Sequelize[_0x65cd('0xb')]},'publishedAt':{'type':Sequelize[_0x65cd('0xb')]}};
\ No newline at end of file
+var _0x2ebe=['long','getDataValue','preproduction','toString','utf8','production','DATE','sequelize','exports','STRING','TEXT'];(function(_0x40f7b8,_0x15ea21){var _0x1fe337=function(_0x4a81ea){while(--_0x4a81ea){_0x40f7b8['push'](_0x40f7b8['shift']());}};_0x1fe337(++_0x15ea21);}(_0x2ebe,0x125));var _0xe2eb=function(_0x2afe05,_0xd10763){_0x2afe05=_0x2afe05-0x0;var _0x593048=_0x2ebe[_0x2afe05];return _0x593048;};'use strict';var Sequelize=require(_0xe2eb('0x0'));module[_0xe2eb('0x1')]={'name':{'type':Sequelize[_0xe2eb('0x2')],'unique':'name','allowNull':![]},'description':{'type':Sequelize['STRING']},'notes':{'type':Sequelize[_0xe2eb('0x3')]},'preproduction':{'type':Sequelize['BLOB'](_0xe2eb('0x4')),'get':function(){if(this[_0xe2eb('0x5')](_0xe2eb('0x6'))){return this[_0xe2eb('0x5')](_0xe2eb('0x6'))[_0xe2eb('0x7')](_0xe2eb('0x8'));}}},'production':{'type':Sequelize['BLOB']('long'),'get':function(){if(this['getDataValue'](_0xe2eb('0x9'))){return this[_0xe2eb('0x5')](_0xe2eb('0x9'))[_0xe2eb('0x7')](_0xe2eb('0x8'));}}},'savedAt':{'type':Sequelize[_0xe2eb('0xa')]},'publishedAt':{'type':Sequelize[_0xe2eb('0xa')]}};
\ No newline at end of file
index 4c6f7b3..dd9b9eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x862c=['isArray','emit','userSquareProject:remove','getUsers','findOne','User','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','./squareProject.socket','register','sendStatus','status','json','undefined','limit','count','offset','set','reject','then','get','SquareProjects','UserProfileResource','end','error','stack','name','send','map','SquareProject','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','merge','where','VIRTUAL','filter','includeAll','include','rows','show','params','options','find','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','destroy','addUsers','ids','omit','removeUsers'];(function(_0x43b5a2,_0x4c9137){var _0x36e30b=function(_0x456587){while(--_0x456587){_0x43b5a2['push'](_0x43b5a2['shift']());}};_0x36e30b(++_0x4c9137);}(_0x862c,0x196));var _0xc862=function(_0x4d176d,_0x39b7ca){_0x4d176d=_0x4d176d-0x0;var _0x12bcdb=_0x862c[_0x4d176d];return _0x12bcdb;};'use strict';var emlformat=require(_0xc862('0x0'));var rimraf=require(_0xc862('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc862('0x2'));var rp=require(_0xc862('0x3'));var moment=require(_0xc862('0x4'));var BPromise=require(_0xc862('0x5'));var Mustache=require('mustache');var util=require(_0xc862('0x6'));var path=require(_0xc862('0x7'));var sox=require(_0xc862('0x8'));var csv=require(_0xc862('0x9'));var ejs=require(_0xc862('0xa'));var fs=require('fs');var fs_extra=require(_0xc862('0xb'));var _=require(_0xc862('0xc'));var squel=require(_0xc862('0xd'));var crypto=require('crypto');var jsforce=require(_0xc862('0xe'));var deskjs=require(_0xc862('0xf'));var toCsv=require(_0xc862('0x9'));var querystring=require(_0xc862('0x10'));var Papa=require(_0xc862('0x11'));var Redis=require(_0xc862('0x12'));var authService=require(_0xc862('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xc862('0x14'));var hardwareService=require(_0xc862('0x15'));var logger=require(_0xc862('0x16'))(_0xc862('0x17'));var utils=require(_0xc862('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xc862('0x19'));var db=require(_0xc862('0x1a'))['db'];config[_0xc862('0x1b')]=_[_0xc862('0x1c')](config[_0xc862('0x1b')],{'host':_0xc862('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc862('0x1b')]));require(_0xc862('0x1e'))[_0xc862('0x1f')](socket);function respondWithStatusCode(_0x30fd48,_0x24c73a){_0x24c73a=_0x24c73a||0xcc;return function(_0x5b42f9){if(_0x5b42f9){return _0x30fd48[_0xc862('0x20')](_0x24c73a);}return _0x30fd48[_0xc862('0x21')](_0x24c73a)['end']();};}function respondWithResult(_0x1861e6,_0x1c863c){_0x1c863c=_0x1c863c||0xc8;return function(_0x368a04){if(_0x368a04){return _0x1861e6[_0xc862('0x21')](_0x1c863c)[_0xc862('0x22')](_0x368a04);}};}function respondWithFilteredResult(_0x10e379,_0x162d7e){return function(_0xf34a86){if(_0xf34a86){var _0x424991=typeof _0x162d7e['offset']===_0xc862('0x23')&&typeof _0x162d7e[_0xc862('0x24')]===_0xc862('0x23');var _0x232849=_0xf34a86[_0xc862('0x25')];var _0x38e7a6=_0x424991?0x0:_0x162d7e[_0xc862('0x26')];var _0x12bdc4=_0x424991?_0xf34a86[_0xc862('0x25')]:_0x162d7e['offset']+_0x162d7e[_0xc862('0x24')];var _0x1e2719;if(_0x12bdc4>=_0x232849){_0x12bdc4=_0x232849;_0x1e2719=0xc8;}else{_0x1e2719=0xce;}_0x10e379[_0xc862('0x21')](_0x1e2719);return _0x10e379[_0xc862('0x27')]('Content-Range',_0x38e7a6+'-'+_0x12bdc4+'/'+_0x232849)['json'](_0xf34a86);}return null;};}function patchUpdates(_0x51fb02){return function(_0x577ffe){try{jsonpatch['apply'](_0x577ffe,_0x51fb02,!![]);}catch(_0x5232da){return BPromise[_0xc862('0x28')](_0x5232da);}return _0x577ffe['save']();};}function saveUpdates(_0x4611c1,_0x44595d){return function(_0x212d64){if(_0x212d64){return _0x212d64['update'](_0x4611c1)['then'](function(_0x31a050){return _0x31a050;});}return null;};}function removeEntity(_0x4db6b4,_0x41cab8){return function(_0x1a7c2e){if(_0x1a7c2e){return _0x1a7c2e['destroy']()[_0xc862('0x29')](function(){var _0x3d771f=_0x1a7c2e[_0xc862('0x2a')]({'plain':!![]});var _0x28ba6c=_0xc862('0x2b');return db[_0xc862('0x2c')]['destroy']({'where':{'type':_0x28ba6c,'resourceId':_0x3d771f['id']}})[_0xc862('0x29')](function(){return _0x1a7c2e;});})[_0xc862('0x29')](function(){_0x4db6b4['status'](0xcc)[_0xc862('0x2d')]();});}};}function handleEntityNotFound(_0x1ac3d9,_0x542957){return function(_0x1c9a92){if(!_0x1c9a92){_0x1ac3d9[_0xc862('0x20')](0x194);}return _0x1c9a92;};}function handleError(_0x1afa27,_0x22542a){_0x22542a=_0x22542a||0x1f4;return function(_0xa3aa67){logger[_0xc862('0x2e')](_0xa3aa67[_0xc862('0x2f')]);if(_0xa3aa67['name']){delete _0xa3aa67[_0xc862('0x30')];}_0x1afa27[_0xc862('0x21')](_0x22542a)[_0xc862('0x31')](_0xa3aa67);};}exports['index']=function(_0x2ca45f,_0x22dd65){var _0x32d5c4={},_0x2aba97={},_0x2a7516={'count':0x0,'rows':[]};var _0x39d6ad=_[_0xc862('0x32')](db[_0xc862('0x33')]['rawAttributes'],function(_0x4e1508){return{'name':_0x4e1508[_0xc862('0x34')],'type':_0x4e1508[_0xc862('0x35')][_0xc862('0x36')]};});_0x2aba97[_0xc862('0x37')]=_[_0xc862('0x32')](_0x39d6ad,_0xc862('0x30'));_0x2aba97[_0xc862('0x38')]=_[_0xc862('0x39')](_0x2ca45f['query']);_0x2aba97[_0xc862('0x3a')]=_['intersection'](_0x2aba97['model'],_0x2aba97[_0xc862('0x38')]);_0x32d5c4[_0xc862('0x3b')]=_[_0xc862('0x3c')](_0x2aba97[_0xc862('0x37')],qs[_0xc862('0x3d')](_0x2ca45f[_0xc862('0x38')]['fields']));_0x32d5c4[_0xc862('0x3b')]=_0x32d5c4[_0xc862('0x3b')][_0xc862('0x3e')]?_0x32d5c4[_0xc862('0x3b')]:_0x2aba97[_0xc862('0x37')];if(!_0x2ca45f[_0xc862('0x38')][_0xc862('0x3f')](_0xc862('0x40'))){_0x32d5c4[_0xc862('0x24')]=qs[_0xc862('0x24')](_0x2ca45f[_0xc862('0x38')][_0xc862('0x24')]);_0x32d5c4[_0xc862('0x26')]=qs['offset'](_0x2ca45f[_0xc862('0x38')][_0xc862('0x26')]);}_0x32d5c4[_0xc862('0x41')]=qs['sort'](_0x2ca45f[_0xc862('0x38')][_0xc862('0x42')]);_0x32d5c4['where']=qs[_0xc862('0x3a')](_[_0xc862('0x43')](_0x2ca45f[_0xc862('0x38')],_0x2aba97[_0xc862('0x3a')]),_0x39d6ad);if(_0x2ca45f['query']['filter']){_0x32d5c4['where']=_[_0xc862('0x44')](_0x32d5c4[_0xc862('0x45')],{'$or':_[_0xc862('0x32')](_0x39d6ad,function(_0xedeaa2){if(_0xedeaa2[_0xc862('0x35')]!==_0xc862('0x46')){var _0x19e5c3={};_0x19e5c3[_0xedeaa2['name']]={'$like':'%'+_0x2ca45f[_0xc862('0x38')][_0xc862('0x47')]+'%'};return _0x19e5c3;}})});}_0x32d5c4=_[_0xc862('0x44')]({},_0x32d5c4,_0x2ca45f['options']);var _0x2c68cb={'where':_0x32d5c4['where']};return db[_0xc862('0x33')]['count'](_0x2c68cb)[_0xc862('0x29')](function(_0x5af87f){_0x2a7516[_0xc862('0x25')]=_0x5af87f;if(_0x2ca45f[_0xc862('0x38')][_0xc862('0x48')]){_0x32d5c4[_0xc862('0x49')]=[{'all':!![]}];}return db[_0xc862('0x33')]['findAll'](_0x32d5c4);})[_0xc862('0x29')](function(_0x2cb99b){_0x2a7516[_0xc862('0x4a')]=_0x2cb99b;return _0x2a7516;})[_0xc862('0x29')](respondWithFilteredResult(_0x22dd65,_0x32d5c4))['catch'](handleError(_0x22dd65,null));};exports[_0xc862('0x4b')]=function(_0x39a003,_0x29b31f){var _0x51c5cc={'raw':![],'where':{'id':_0x39a003[_0xc862('0x4c')]['id']}},_0x8260={};_0x8260['model']=_[_0xc862('0x39')](db[_0xc862('0x33')]['rawAttributes']);_0x8260[_0xc862('0x38')]=_[_0xc862('0x39')](_0x39a003[_0xc862('0x38')]);_0x8260[_0xc862('0x3a')]=_[_0xc862('0x3c')](_0x8260[_0xc862('0x37')],_0x8260[_0xc862('0x38')]);_0x51c5cc[_0xc862('0x3b')]=_[_0xc862('0x3c')](_0x8260[_0xc862('0x37')],qs[_0xc862('0x3d')](_0x39a003['query'][_0xc862('0x3d')]));_0x51c5cc[_0xc862('0x3b')]=_0x51c5cc[_0xc862('0x3b')][_0xc862('0x3e')]?_0x51c5cc[_0xc862('0x3b')]:_0x8260[_0xc862('0x37')];if(_0x39a003[_0xc862('0x38')]['includeAll']){_0x51c5cc[_0xc862('0x49')]=[{'all':!![]}];}_0x51c5cc=_[_0xc862('0x44')]({},_0x51c5cc,_0x39a003[_0xc862('0x4d')]);return db['SquareProject'][_0xc862('0x4e')](_0x51c5cc)[_0xc862('0x29')](handleEntityNotFound(_0x29b31f,null))[_0xc862('0x29')](respondWithResult(_0x29b31f,null))[_0xc862('0x4f')](handleError(_0x29b31f,null));};exports[_0xc862('0x50')]=function(_0x13f6ce,_0x466ace){return db[_0xc862('0x33')][_0xc862('0x50')](_0x13f6ce[_0xc862('0x51')],{})['then'](function(_0x37d22d){var _0x46603b=_0x13f6ce['user'][_0xc862('0x2a')]({'plain':!![]});if(!_0x46603b)throw new Error(_0xc862('0x52'));if(_0x46603b['role']===_0xc862('0x53')){var _0x54c62b=_0x37d22d[_0xc862('0x2a')]({'plain':!![]});var _0x5e6ac5='SquareProjects';return db[_0xc862('0x54')]['find']({'where':{'name':_0x5e6ac5,'userProfileId':_0x46603b[_0xc862('0x55')]},'raw':!![]})['then'](function(_0x363599){if(_0x363599&&_0x363599[_0xc862('0x56')]===0x0){return db[_0xc862('0x2c')]['create']({'name':_0x54c62b[_0xc862('0x30')],'resourceId':_0x54c62b['id'],'type':_0x363599[_0xc862('0x30')],'sectionId':_0x363599['id']},{})[_0xc862('0x29')](function(){return _0x37d22d;});}else{return _0x37d22d;}})[_0xc862('0x4f')](function(_0x2908c5){logger[_0xc862('0x2e')](_0xc862('0x57'),_0x2908c5);throw _0x2908c5;});}return _0x37d22d;})[_0xc862('0x29')](respondWithResult(_0x466ace,0xc9))[_0xc862('0x4f')](handleError(_0x466ace,null));};exports[_0xc862('0x58')]=function(_0x56c029,_0x51feae){if(_0x56c029[_0xc862('0x51')]['id']){delete _0x56c029[_0xc862('0x51')]['id'];}return db[_0xc862('0x33')][_0xc862('0x4e')]({'where':{'id':_0x56c029[_0xc862('0x4c')]['id']}})[_0xc862('0x29')](handleEntityNotFound(_0x51feae,null))[_0xc862('0x29')](saveUpdates(_0x56c029[_0xc862('0x51')],null))[_0xc862('0x29')](respondWithResult(_0x51feae,null))[_0xc862('0x4f')](handleError(_0x51feae,null));};exports[_0xc862('0x59')]=function(_0x9b8562,_0x6fd8bd){return db[_0xc862('0x33')]['find']({'where':{'id':_0x9b8562[_0xc862('0x4c')]['id']}})[_0xc862('0x29')](handleEntityNotFound(_0x6fd8bd,null))[_0xc862('0x29')](removeEntity(_0x6fd8bd,null))['catch'](handleError(_0x6fd8bd,null));};exports[_0xc862('0x5a')]=function(_0x2b5ddc,_0x1cef10,_0x3f178c){return db[_0xc862('0x33')][_0xc862('0x4e')]({'where':{'id':_0x2b5ddc[_0xc862('0x4c')]['id']}})[_0xc862('0x29')](handleEntityNotFound(_0x1cef10,null))[_0xc862('0x29')](function(_0x2e1da2){if(_0x2e1da2){return _0x2e1da2[_0xc862('0x5a')](_0x2b5ddc[_0xc862('0x51')][_0xc862('0x5b')],_[_0xc862('0x5c')](_0x2b5ddc['body'],[_0xc862('0x5b'),'id'])||{});}})[_0xc862('0x29')](respondWithResult(_0x1cef10,null))[_0xc862('0x4f')](handleError(_0x1cef10,null));};exports[_0xc862('0x5d')]=function(_0x4edafa,_0x1a2ca6,_0x460637){return db[_0xc862('0x33')][_0xc862('0x4e')]({'where':{'id':_0x4edafa['params']['id']}})[_0xc862('0x29')](handleEntityNotFound(_0x1a2ca6,null))[_0xc862('0x29')](function(_0x4efa4c){if(_0x4efa4c){return _0x4efa4c[_0xc862('0x5d')](_0x4edafa['query']['ids'])[_0xc862('0x29')](function(){if(_[_0xc862('0x5e')](_0x4edafa[_0xc862('0x38')][_0xc862('0x5b')])){for(var _0x4d6d13=0x0;_0x4d6d13<_0x4edafa[_0xc862('0x38')][_0xc862('0x5b')]['length'];_0x4d6d13+=0x1){socket[_0xc862('0x5f')](_0xc862('0x60'),{'UserId':Number(_0x4edafa[_0xc862('0x38')][_0xc862('0x5b')][_0x4d6d13]),'SquareProjectId':Number(_0x4edafa[_0xc862('0x4c')]['id'])});}}else{socket[_0xc862('0x5f')](_0xc862('0x60'),{'UserId':Number(_0x4edafa[_0xc862('0x38')][_0xc862('0x5b')]),'SquareProjectId':Number(_0x4edafa['params']['id'])});}});}})[_0xc862('0x29')](respondWithStatusCode(_0x1a2ca6,null))['catch'](handleError(_0x1a2ca6,null));};exports[_0xc862('0x61')]=function(_0x38a09d,_0x47d06b,_0x2a5119){var _0xc9633={};var _0x3e4356={};var _0x36130d;var _0x21cb4b;return db[_0xc862('0x33')][_0xc862('0x62')]({'where':{'id':_0x38a09d[_0xc862('0x4c')]['id']}})[_0xc862('0x29')](handleEntityNotFound(_0x47d06b,null))[_0xc862('0x29')](function(_0x251f3b){if(_0x251f3b){_0x36130d=_0x251f3b;_0x3e4356[_0xc862('0x37')]=_[_0xc862('0x39')](db[_0xc862('0x63')]['rawAttributes']);_0x3e4356[_0xc862('0x38')]=_[_0xc862('0x39')](_0x38a09d['query']);_0x3e4356['filters']=_[_0xc862('0x3c')](_0x3e4356[_0xc862('0x37')],_0x3e4356['query']);_0xc9633[_0xc862('0x3b')]=_[_0xc862('0x3c')](_0x3e4356['model'],qs[_0xc862('0x3d')](_0x38a09d[_0xc862('0x38')]['fields']));_0xc9633[_0xc862('0x3b')]=_0xc9633['attributes'][_0xc862('0x3e')]?_0xc9633[_0xc862('0x3b')]:_0x3e4356[_0xc862('0x37')];_0xc9633[_0xc862('0x41')]=qs['sort'](_0x38a09d[_0xc862('0x38')][_0xc862('0x42')]);_0xc9633[_0xc862('0x45')]=qs[_0xc862('0x3a')](_[_0xc862('0x43')](_0x38a09d[_0xc862('0x38')],_0x3e4356[_0xc862('0x3a')]));if(_0x38a09d[_0xc862('0x38')][_0xc862('0x47')]){_0xc9633['where']=_[_0xc862('0x44')](_0xc9633[_0xc862('0x45')],{'$or':_[_0xc862('0x32')](_0xc9633[_0xc862('0x3b')],function(_0x2fe51a){var _0x1eb49c={};_0x1eb49c[_0x2fe51a]={'$like':'%'+_0x38a09d[_0xc862('0x38')][_0xc862('0x47')]+'%'};return _0x1eb49c;})});}_0xc9633=_[_0xc862('0x44')]({},_0xc9633,_0x38a09d[_0xc862('0x4d')]);return _0x36130d[_0xc862('0x61')](_0xc9633);}})[_0xc862('0x29')](function(_0x2aa7fc){if(_0x2aa7fc){_0x21cb4b=_0x2aa7fc[_0xc862('0x3e')];if(!_0x38a09d[_0xc862('0x38')][_0xc862('0x3f')](_0xc862('0x40'))){_0xc9633[_0xc862('0x24')]=qs['limit'](_0x38a09d[_0xc862('0x38')]['limit']);_0xc9633['offset']=qs['offset'](_0x38a09d[_0xc862('0x38')][_0xc862('0x26')]);}return _0x36130d[_0xc862('0x61')](_0xc9633);}})[_0xc862('0x29')](function(_0x285d8f){if(_0x285d8f){return _0x285d8f?{'count':_0x21cb4b,'rows':_0x285d8f}:null;}})[_0xc862('0x29')](respondWithResult(_0x47d06b,null))[_0xc862('0x4f')](handleError(_0x47d06b,null));};
\ No newline at end of file
+var _0x9497=['attributes','fields','nolimit','sort','pick','filters','where','VIRTUAL','filter','merge','options','includeAll','findAll','rows','catch','show','params','length','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','SquareProjects','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','addUsers','omit','removeUsers','ids','isArray','emit','userSquareProject:remove','getUsers','User','order','hasOwnProperty','eml-format','rimraf','request-promise','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./squareProject.socket','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','get','UserProfileResource','error','stack','name','send','map','SquareProject','rawAttributes','key','model','query','keys','intersection'];(function(_0x58836f,_0x5351e2){var _0x28f9b1=function(_0x30a6cc){while(--_0x30a6cc){_0x58836f['push'](_0x58836f['shift']());}};_0x28f9b1(++_0x5351e2);}(_0x9497,0x1a8));var _0x7949=function(_0x933c43,_0xe484db){_0x933c43=_0x933c43-0x0;var _0x1f251e=_0x9497[_0x933c43];return _0x1f251e;};'use strict';var emlformat=require(_0x7949('0x0'));var rimraf=require(_0x7949('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x7949('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x7949('0x3'));var util=require(_0x7949('0x4'));var path=require(_0x7949('0x5'));var sox=require(_0x7949('0x6'));var csv=require('to-csv');var ejs=require(_0x7949('0x7'));var fs=require('fs');var fs_extra=require(_0x7949('0x8'));var _=require(_0x7949('0x9'));var squel=require('squel');var crypto=require(_0x7949('0xa'));var jsforce=require(_0x7949('0xb'));var deskjs=require(_0x7949('0xc'));var toCsv=require(_0x7949('0xd'));var querystring=require(_0x7949('0xe'));var Papa=require('papaparse');var Redis=require(_0x7949('0xf'));var authService=require(_0x7949('0x10'));var qs=require(_0x7949('0x11'));var as=require(_0x7949('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x7949('0x13'));var utils=require('../../config/utils');var config=require(_0x7949('0x14'));var licenseUtil=require(_0x7949('0x15'));var db=require(_0x7949('0x16'))['db'];config[_0x7949('0x17')]=_['defaults'](config[_0x7949('0x17')],{'host':_0x7949('0x18'),'port':0x18eb});var socket=require(_0x7949('0x19'))(new Redis(config[_0x7949('0x17')]));require(_0x7949('0x1a'))['register'](socket);function respondWithStatusCode(_0x89387f,_0x427a52){_0x427a52=_0x427a52||0xcc;return function(_0x28f41a){if(_0x28f41a){return _0x89387f[_0x7949('0x1b')](_0x427a52);}return _0x89387f[_0x7949('0x1c')](_0x427a52)[_0x7949('0x1d')]();};}function respondWithResult(_0x36a3cf,_0x283bc7){_0x283bc7=_0x283bc7||0xc8;return function(_0xdca612){if(_0xdca612){return _0x36a3cf[_0x7949('0x1c')](_0x283bc7)[_0x7949('0x1e')](_0xdca612);}};}function respondWithFilteredResult(_0x5dc1b9,_0xaaee61){return function(_0x45fefb){if(_0x45fefb){var _0x802331=typeof _0xaaee61['offset']===_0x7949('0x1f')&&typeof _0xaaee61['limit']===_0x7949('0x1f');var _0x4c46c1=_0x45fefb[_0x7949('0x20')];var _0xe2f6f7=_0x802331?0x0:_0xaaee61[_0x7949('0x21')];var _0x387ce3=_0x802331?_0x45fefb[_0x7949('0x20')]:_0xaaee61[_0x7949('0x21')]+_0xaaee61[_0x7949('0x22')];var _0x17583d;if(_0x387ce3>=_0x4c46c1){_0x387ce3=_0x4c46c1;_0x17583d=0xc8;}else{_0x17583d=0xce;}_0x5dc1b9[_0x7949('0x1c')](_0x17583d);return _0x5dc1b9[_0x7949('0x23')](_0x7949('0x24'),_0xe2f6f7+'-'+_0x387ce3+'/'+_0x4c46c1)[_0x7949('0x1e')](_0x45fefb);}return null;};}function patchUpdates(_0x2b4634){return function(_0x33e119){try{jsonpatch[_0x7949('0x25')](_0x33e119,_0x2b4634,!![]);}catch(_0x2f637c){return BPromise[_0x7949('0x26')](_0x2f637c);}return _0x33e119[_0x7949('0x27')]();};}function saveUpdates(_0x148b47,_0x281bc6){return function(_0x4143be){if(_0x4143be){return _0x4143be['update'](_0x148b47)[_0x7949('0x28')](function(_0xce32cb){return _0xce32cb;});}return null;};}function removeEntity(_0x2db9b9,_0x3a2711){return function(_0x4cec49){if(_0x4cec49){return _0x4cec49[_0x7949('0x29')]()['then'](function(){var _0x9acd68=_0x4cec49[_0x7949('0x2a')]({'plain':!![]});var _0x4cdfe9='SquareProjects';return db[_0x7949('0x2b')][_0x7949('0x29')]({'where':{'type':_0x4cdfe9,'resourceId':_0x9acd68['id']}})[_0x7949('0x28')](function(){return _0x4cec49;});})['then'](function(){_0x2db9b9[_0x7949('0x1c')](0xcc)[_0x7949('0x1d')]();});}};}function handleEntityNotFound(_0x2d3c5a,_0xba2dc7){return function(_0x5ee984){if(!_0x5ee984){_0x2d3c5a[_0x7949('0x1b')](0x194);}return _0x5ee984;};}function handleError(_0x12fbbc,_0x32a743){_0x32a743=_0x32a743||0x1f4;return function(_0x4a60a6){logger[_0x7949('0x2c')](_0x4a60a6[_0x7949('0x2d')]);if(_0x4a60a6[_0x7949('0x2e')]){delete _0x4a60a6[_0x7949('0x2e')];}_0x12fbbc[_0x7949('0x1c')](_0x32a743)[_0x7949('0x2f')](_0x4a60a6);};}exports['index']=function(_0x4b9bdc,_0x24fa57){var _0x1ce77b={},_0x51d4da={},_0x39bea2={'count':0x0,'rows':[]};var _0x568ef1=_[_0x7949('0x30')](db[_0x7949('0x31')][_0x7949('0x32')],function(_0x2b68a0){return{'name':_0x2b68a0['fieldName'],'type':_0x2b68a0['type'][_0x7949('0x33')]};});_0x51d4da[_0x7949('0x34')]=_[_0x7949('0x30')](_0x568ef1,_0x7949('0x2e'));_0x51d4da[_0x7949('0x35')]=_[_0x7949('0x36')](_0x4b9bdc[_0x7949('0x35')]);_0x51d4da['filters']=_[_0x7949('0x37')](_0x51d4da[_0x7949('0x34')],_0x51d4da[_0x7949('0x35')]);_0x1ce77b[_0x7949('0x38')]=_[_0x7949('0x37')](_0x51d4da[_0x7949('0x34')],qs['fields'](_0x4b9bdc[_0x7949('0x35')][_0x7949('0x39')]));_0x1ce77b[_0x7949('0x38')]=_0x1ce77b['attributes']['length']?_0x1ce77b[_0x7949('0x38')]:_0x51d4da[_0x7949('0x34')];if(!_0x4b9bdc[_0x7949('0x35')]['hasOwnProperty'](_0x7949('0x3a'))){_0x1ce77b[_0x7949('0x22')]=qs[_0x7949('0x22')](_0x4b9bdc[_0x7949('0x35')]['limit']);_0x1ce77b[_0x7949('0x21')]=qs['offset'](_0x4b9bdc[_0x7949('0x35')]['offset']);}_0x1ce77b['order']=qs[_0x7949('0x3b')](_0x4b9bdc[_0x7949('0x35')][_0x7949('0x3b')]);_0x1ce77b['where']=qs['filters'](_[_0x7949('0x3c')](_0x4b9bdc['query'],_0x51d4da[_0x7949('0x3d')]),_0x568ef1);if(_0x4b9bdc[_0x7949('0x35')]['filter']){_0x1ce77b[_0x7949('0x3e')]=_['merge'](_0x1ce77b[_0x7949('0x3e')],{'$or':_[_0x7949('0x30')](_0x568ef1,function(_0x1a3a2e){if(_0x1a3a2e['type']!==_0x7949('0x3f')){var _0x593f1f={};_0x593f1f[_0x1a3a2e['name']]={'$like':'%'+_0x4b9bdc[_0x7949('0x35')][_0x7949('0x40')]+'%'};return _0x593f1f;}})});}_0x1ce77b=_[_0x7949('0x41')]({},_0x1ce77b,_0x4b9bdc[_0x7949('0x42')]);var _0x270997={'where':_0x1ce77b[_0x7949('0x3e')]};return db['SquareProject'][_0x7949('0x20')](_0x270997)['then'](function(_0xccd0f8){_0x39bea2[_0x7949('0x20')]=_0xccd0f8;if(_0x4b9bdc[_0x7949('0x35')][_0x7949('0x43')]){_0x1ce77b['include']=[{'all':!![]}];}return db[_0x7949('0x31')][_0x7949('0x44')](_0x1ce77b);})['then'](function(_0x2564f6){_0x39bea2[_0x7949('0x45')]=_0x2564f6;return _0x39bea2;})[_0x7949('0x28')](respondWithFilteredResult(_0x24fa57,_0x1ce77b))[_0x7949('0x46')](handleError(_0x24fa57,null));};exports[_0x7949('0x47')]=function(_0x496076,_0x1e31fb){var _0x229e93={'raw':![],'where':{'id':_0x496076[_0x7949('0x48')]['id']}},_0x6da2ec={};_0x6da2ec[_0x7949('0x34')]=_[_0x7949('0x36')](db[_0x7949('0x31')][_0x7949('0x32')]);_0x6da2ec['query']=_[_0x7949('0x36')](_0x496076[_0x7949('0x35')]);_0x6da2ec['filters']=_[_0x7949('0x37')](_0x6da2ec['model'],_0x6da2ec[_0x7949('0x35')]);_0x229e93['attributes']=_[_0x7949('0x37')](_0x6da2ec[_0x7949('0x34')],qs[_0x7949('0x39')](_0x496076[_0x7949('0x35')]['fields']));_0x229e93[_0x7949('0x38')]=_0x229e93[_0x7949('0x38')][_0x7949('0x49')]?_0x229e93[_0x7949('0x38')]:_0x6da2ec[_0x7949('0x34')];if(_0x496076[_0x7949('0x35')][_0x7949('0x43')]){_0x229e93[_0x7949('0x4a')]=[{'all':!![]}];}_0x229e93=_['merge']({},_0x229e93,_0x496076[_0x7949('0x42')]);return db[_0x7949('0x31')][_0x7949('0x4b')](_0x229e93)[_0x7949('0x28')](handleEntityNotFound(_0x1e31fb,null))[_0x7949('0x28')](respondWithResult(_0x1e31fb,null))[_0x7949('0x46')](handleError(_0x1e31fb,null));};exports[_0x7949('0x4c')]=function(_0x5f42be,_0x18ce3a){return db[_0x7949('0x31')][_0x7949('0x4c')](_0x5f42be[_0x7949('0x4d')],{})[_0x7949('0x28')](function(_0x644538){var _0x17a62e=_0x5f42be[_0x7949('0x4e')]['get']({'plain':!![]});if(!_0x17a62e)throw new Error(_0x7949('0x4f'));if(_0x17a62e['role']===_0x7949('0x4e')){var _0x5ac787=_0x644538['get']({'plain':!![]});var _0x2c642c=_0x7949('0x50');return db[_0x7949('0x51')][_0x7949('0x4b')]({'where':{'name':_0x2c642c,'userProfileId':_0x17a62e['userProfileId']},'raw':!![]})['then'](function(_0x11af27){if(_0x11af27&&_0x11af27[_0x7949('0x52')]===0x0){return db['UserProfileResource'][_0x7949('0x4c')]({'name':_0x5ac787[_0x7949('0x2e')],'resourceId':_0x5ac787['id'],'type':_0x11af27[_0x7949('0x2e')],'sectionId':_0x11af27['id']},{})[_0x7949('0x28')](function(){return _0x644538;});}else{return _0x644538;}})[_0x7949('0x46')](function(_0x509623){logger['error'](_0x7949('0x53'),_0x509623);throw _0x509623;});}return _0x644538;})[_0x7949('0x28')](respondWithResult(_0x18ce3a,0xc9))[_0x7949('0x46')](handleError(_0x18ce3a,null));};exports[_0x7949('0x54')]=function(_0x2dbb4e,_0x44b8f2){if(_0x2dbb4e['body']['id']){delete _0x2dbb4e[_0x7949('0x4d')]['id'];}return db['SquareProject'][_0x7949('0x4b')]({'where':{'id':_0x2dbb4e[_0x7949('0x48')]['id']}})[_0x7949('0x28')](handleEntityNotFound(_0x44b8f2,null))[_0x7949('0x28')](saveUpdates(_0x2dbb4e['body'],null))[_0x7949('0x28')](respondWithResult(_0x44b8f2,null))[_0x7949('0x46')](handleError(_0x44b8f2,null));};exports[_0x7949('0x29')]=function(_0x10d0b6,_0x225c8d){return db[_0x7949('0x31')][_0x7949('0x4b')]({'where':{'id':_0x10d0b6[_0x7949('0x48')]['id']}})[_0x7949('0x28')](handleEntityNotFound(_0x225c8d,null))[_0x7949('0x28')](removeEntity(_0x225c8d,null))[_0x7949('0x46')](handleError(_0x225c8d,null));};exports[_0x7949('0x55')]=function(_0x428121,_0x4b8bdc,_0x16d5e4){return db['SquareProject'][_0x7949('0x4b')]({'where':{'id':_0x428121[_0x7949('0x48')]['id']}})[_0x7949('0x28')](handleEntityNotFound(_0x4b8bdc,null))[_0x7949('0x28')](function(_0xad4de3){if(_0xad4de3){return _0xad4de3[_0x7949('0x55')](_0x428121[_0x7949('0x4d')]['ids'],_[_0x7949('0x56')](_0x428121['body'],['ids','id'])||{});}})[_0x7949('0x28')](respondWithResult(_0x4b8bdc,null))[_0x7949('0x46')](handleError(_0x4b8bdc,null));};exports['removeUsers']=function(_0x2cc312,_0x591672,_0x1689b2){return db[_0x7949('0x31')]['find']({'where':{'id':_0x2cc312[_0x7949('0x48')]['id']}})[_0x7949('0x28')](handleEntityNotFound(_0x591672,null))[_0x7949('0x28')](function(_0x5934ee){if(_0x5934ee){return _0x5934ee[_0x7949('0x57')](_0x2cc312[_0x7949('0x35')][_0x7949('0x58')])[_0x7949('0x28')](function(){if(_[_0x7949('0x59')](_0x2cc312[_0x7949('0x35')][_0x7949('0x58')])){for(var _0x589952=0x0;_0x589952<_0x2cc312[_0x7949('0x35')][_0x7949('0x58')][_0x7949('0x49')];_0x589952+=0x1){socket[_0x7949('0x5a')](_0x7949('0x5b'),{'UserId':Number(_0x2cc312['query'][_0x7949('0x58')][_0x589952]),'SquareProjectId':Number(_0x2cc312[_0x7949('0x48')]['id'])});}}else{socket['emit']('userSquareProject:remove',{'UserId':Number(_0x2cc312[_0x7949('0x35')][_0x7949('0x58')]),'SquareProjectId':Number(_0x2cc312['params']['id'])});}});}})[_0x7949('0x28')](respondWithStatusCode(_0x591672,null))['catch'](handleError(_0x591672,null));};exports[_0x7949('0x5c')]=function(_0x35e63d,_0x33105,_0x453388){var _0x18eedd={};var _0x33a24b={};var _0x255dac;var _0x3ad93b;return db[_0x7949('0x31')]['findOne']({'where':{'id':_0x35e63d[_0x7949('0x48')]['id']}})[_0x7949('0x28')](handleEntityNotFound(_0x33105,null))[_0x7949('0x28')](function(_0x4561cb){if(_0x4561cb){_0x255dac=_0x4561cb;_0x33a24b[_0x7949('0x34')]=_[_0x7949('0x36')](db[_0x7949('0x5d')][_0x7949('0x32')]);_0x33a24b['query']=_[_0x7949('0x36')](_0x35e63d[_0x7949('0x35')]);_0x33a24b[_0x7949('0x3d')]=_[_0x7949('0x37')](_0x33a24b['model'],_0x33a24b[_0x7949('0x35')]);_0x18eedd[_0x7949('0x38')]=_[_0x7949('0x37')](_0x33a24b['model'],qs['fields'](_0x35e63d[_0x7949('0x35')][_0x7949('0x39')]));_0x18eedd[_0x7949('0x38')]=_0x18eedd[_0x7949('0x38')][_0x7949('0x49')]?_0x18eedd[_0x7949('0x38')]:_0x33a24b[_0x7949('0x34')];_0x18eedd[_0x7949('0x5e')]=qs[_0x7949('0x3b')](_0x35e63d[_0x7949('0x35')][_0x7949('0x3b')]);_0x18eedd[_0x7949('0x3e')]=qs[_0x7949('0x3d')](_['pick'](_0x35e63d[_0x7949('0x35')],_0x33a24b[_0x7949('0x3d')]));if(_0x35e63d[_0x7949('0x35')][_0x7949('0x40')]){_0x18eedd[_0x7949('0x3e')]=_[_0x7949('0x41')](_0x18eedd['where'],{'$or':_['map'](_0x18eedd[_0x7949('0x38')],function(_0xe5b90f){var _0x3a52d7={};_0x3a52d7[_0xe5b90f]={'$like':'%'+_0x35e63d[_0x7949('0x35')][_0x7949('0x40')]+'%'};return _0x3a52d7;})});}_0x18eedd=_[_0x7949('0x41')]({},_0x18eedd,_0x35e63d['options']);return _0x255dac[_0x7949('0x5c')](_0x18eedd);}})[_0x7949('0x28')](function(_0x5cda6c){if(_0x5cda6c){_0x3ad93b=_0x5cda6c[_0x7949('0x49')];if(!_0x35e63d[_0x7949('0x35')][_0x7949('0x5f')](_0x7949('0x3a'))){_0x18eedd[_0x7949('0x22')]=qs[_0x7949('0x22')](_0x35e63d[_0x7949('0x35')][_0x7949('0x22')]);_0x18eedd[_0x7949('0x21')]=qs['offset'](_0x35e63d['query'][_0x7949('0x21')]);}return _0x255dac[_0x7949('0x5c')](_0x18eedd);}})[_0x7949('0x28')](function(_0x4e33c8){if(_0x4e33c8){return _0x4e33c8?{'count':_0x3ad93b,'rows':_0x4e33c8}:null;}})[_0x7949('0x28')](respondWithResult(_0x33105,null))[_0x7949('0x46')](handleError(_0x33105,null));};
\ No newline at end of file
index 42fe70f..d107cab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5422=['save','emit','hook','exports','events','../../mysqldb','setMaxListeners'];(function(_0x2c94b5,_0x521bd1){var _0x31249e=function(_0x393b58){while(--_0x393b58){_0x2c94b5['push'](_0x2c94b5['shift']());}};_0x31249e(++_0x521bd1);}(_0x5422,0x19a));var _0x2542=function(_0x197127,_0x48bbfd){_0x197127=_0x197127-0x0;var _0x558ca6=_0x5422[_0x197127];return _0x558ca6;};'use strict';var EventEmitter=require(_0x2542('0x0'));var SquareProject=require(_0x2542('0x1'))['db']['SquareProject'];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x2542('0x2')](0x0);var events={'afterCreate':_0x2542('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x38b7c4){return function(_0x5f2f1f,_0x32dafc,_0x3f5156){SquareProjectEvents['emit'](_0x38b7c4+':'+_0x5f2f1f['id'],_0x5f2f1f);SquareProjectEvents[_0x2542('0x4')](_0x38b7c4,_0x5f2f1f);_0x3f5156(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SquareProject[_0x2542('0x5')](e,emitEvent(event));}}module[_0x2542('0x6')]=SquareProjectEvents;
\ No newline at end of file
+var _0xe1c6=['events','SquareProject','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x65817b,_0x41c477){var _0x35e3b1=function(_0x51550b){while(--_0x51550b){_0x65817b['push'](_0x65817b['shift']());}};_0x35e3b1(++_0x41c477);}(_0xe1c6,0x154));var _0x6e1c=function(_0x3506aa,_0x4e70f5){_0x3506aa=_0x3506aa-0x0;var _0x3aaf43=_0xe1c6[_0x3506aa];return _0x3aaf43;};'use strict';var EventEmitter=require(_0x6e1c('0x0'));var SquareProject=require('../../mysqldb')['db'][_0x6e1c('0x1')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x6e1c('0x2')](0x0);var events={'afterCreate':_0x6e1c('0x3'),'afterUpdate':_0x6e1c('0x4'),'afterDestroy':_0x6e1c('0x5')};function emitEvent(_0x2e4750){return function(_0x1bfab8,_0x17eb16,_0x231aa6){SquareProjectEvents[_0x6e1c('0x6')](_0x2e4750+':'+_0x1bfab8['id'],_0x1bfab8);SquareProjectEvents[_0x6e1c('0x6')](_0x2e4750,_0x1bfab8);_0x231aa6(null);};}for(var e in events){if(events[_0x6e1c('0x7')](e)){var event=events[e];SquareProject[_0x6e1c('0x8')](e,emitEvent(event));}}module[_0x6e1c('0x9')]=SquareProjectEvents;
\ No newline at end of file
index d09a94e..db31845 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0f4=['path','rimraf','../../config/environment','exports','SquareProject','square_projects','changed','preproduction','savedAt','format','production','publishedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','api','moment'];(function(_0x134c2e,_0x3573c4){var _0x2825db=function(_0x2a574d){while(--_0x2a574d){_0x134c2e['push'](_0x134c2e['shift']());}};_0x2825db(++_0x3573c4);}(_0xc0f4,0x84));var _0x4c0f=function(_0x540caa,_0x2cd77e){_0x540caa=_0x540caa-0x0;var _0x574e0a=_0xc0f4[_0x540caa];return _0x574e0a;};'use strict';var _=require(_0x4c0f('0x0'));var util=require(_0x4c0f('0x1'));var logger=require('../../config/logger')(_0x4c0f('0x2'));var moment=require(_0x4c0f('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x4c0f('0x4'));var rimraf=require(_0x4c0f('0x5'));var config=require(_0x4c0f('0x6'));var attributes=require('./squareProject.attributes');module[_0x4c0f('0x7')]=function(_0x16cac9,_0x51e2e5){return _0x16cac9['define'](_0x4c0f('0x8'),attributes,{'tableName':_0x4c0f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0xded3c,_0x1f82b8,_0xe1799c){if(_0xded3c[_0x4c0f('0xa')](_0x4c0f('0xb'))){_0xded3c[_0x4c0f('0xc')]=moment()[_0x4c0f('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0xded3c[_0x4c0f('0xa')](_0x4c0f('0xe'))){_0xded3c[_0x4c0f('0xf')]=moment()['format'](_0x4c0f('0x10'));}_0xe1799c(null,_0xded3c);}}});};
\ No newline at end of file
+var _0x2c0f=['moment','bluebird','request-promise','path','../../config/environment','./squareProject.attributes','define','SquareProject','preproduction','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','changed','lodash','util','../../config/logger','api'];(function(_0x52fb16,_0x18014f){var _0x258fb7=function(_0x535a4f){while(--_0x535a4f){_0x52fb16['push'](_0x52fb16['shift']());}};_0x258fb7(++_0x18014f);}(_0x2c0f,0xd9));var _0xf2c0=function(_0x5e42a7,_0x3eba35){_0x5e42a7=_0x5e42a7-0x0;var _0x36d21b=_0x2c0f[_0x5e42a7];return _0x36d21b;};'use strict';var _=require(_0xf2c0('0x0'));var util=require(_0xf2c0('0x1'));var logger=require(_0xf2c0('0x2'))(_0xf2c0('0x3'));var moment=require(_0xf2c0('0x4'));var BPromise=require(_0xf2c0('0x5'));var rp=require(_0xf2c0('0x6'));var fs=require('fs');var path=require(_0xf2c0('0x7'));var rimraf=require('rimraf');var config=require(_0xf2c0('0x8'));var attributes=require(_0xf2c0('0x9'));module['exports']=function(_0x37bc21,_0x2fcf43){return _0x37bc21[_0xf2c0('0xa')](_0xf2c0('0xb'),attributes,{'tableName':'square_projects','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1fb174,_0x57f905,_0x15056e){if(_0x1fb174['changed'](_0xf2c0('0xc'))){_0x1fb174[_0xf2c0('0xd')]=moment()[_0xf2c0('0xe')](_0xf2c0('0xf'));}if(_0x1fb174[_0xf2c0('0x10')]('production')){_0x1fb174['publishedAt']=moment()[_0xf2c0('0xe')](_0xf2c0('0xf'));}_0x15056e(null,_0x1fb174);}}});};
\ No newline at end of file
index b90fc2f..a6abd78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb24=['error','code','SquareProject,\x20%s,\x20%s','message','catch','ShowSquareProject','SquareProject','options','where','attributes','include','map','model','info','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis','localhost','./squareProject.socket','register','request','then','debug','SquareProject,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x31288d,_0x5bbb62){var _0x5ccf71=function(_0x226c5e){while(--_0x226c5e){_0x31288d['push'](_0x31288d['shift']());}};_0x5ccf71(++_0x5bbb62);}(_0xcb24,0x1a5));var _0x4cb2=function(_0x1ef668,_0x5638e3){_0x1ef668=_0x1ef668-0x0;var _0x34fe15=_0xcb24[_0x1ef668];return _0x34fe15;};'use strict';var _=require(_0x4cb2('0x0'));var util=require(_0x4cb2('0x1'));var moment=require(_0x4cb2('0x2'));var BPromise=require(_0x4cb2('0x3'));var rs=require(_0x4cb2('0x4'));var fs=require('fs');var Redis=require(_0x4cb2('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x4cb2('0x6'));var logger=require(_0x4cb2('0x7'))(_0x4cb2('0x8'));var config=require(_0x4cb2('0x9'));var jayson=require(_0x4cb2('0xa'));var client=jayson['client'][_0x4cb2('0xb')]({'port':0x232a});config['redis']=_[_0x4cb2('0xc')](config[_0x4cb2('0xd')],{'host':_0x4cb2('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4cb2('0xd')]));require(_0x4cb2('0xf'))[_0x4cb2('0x10')](socket);function respondWithRpcPromise(_0xb1613d,_0x237380,_0x88c42b){return new BPromise(function(_0xa42760,_0x494120){return client[_0x4cb2('0x11')](_0xb1613d,_0x88c42b)[_0x4cb2('0x12')](function(_0x272cdd){logger['info']('SquareProject,\x20%s,\x20%s',_0x237380,'request\x20sent');logger[_0x4cb2('0x13')](_0x4cb2('0x14'),_0x237380,_0x4cb2('0x15'),JSON[_0x4cb2('0x16')](_0x272cdd));if(_0x272cdd[_0x4cb2('0x17')]){if(_0x272cdd[_0x4cb2('0x17')][_0x4cb2('0x18')]===0x1f4){logger['error'](_0x4cb2('0x19'),_0x237380,_0x272cdd['error'][_0x4cb2('0x1a')]);return _0x494120(_0x272cdd[_0x4cb2('0x17')]['message']);}logger[_0x4cb2('0x17')](_0x4cb2('0x19'),_0x237380,_0x272cdd[_0x4cb2('0x17')][_0x4cb2('0x1a')]);return _0xa42760(_0x272cdd[_0x4cb2('0x17')][_0x4cb2('0x1a')]);}else{logger['info']('SquareProject,\x20%s,\x20%s',_0x237380,_0x4cb2('0x15'));_0xa42760(_0x272cdd['result'][_0x4cb2('0x1a')]);}})[_0x4cb2('0x1b')](function(_0x4ddda3){logger[_0x4cb2('0x17')]('SquareProject,\x20%s,\x20%s',_0x237380,_0x4ddda3);_0x494120(_0x4ddda3);});});}exports[_0x4cb2('0x1c')]=function(_0x13d944){var _0x425ba8=this;return new Promise(function(_0x58a912,_0x2be780){return db[_0x4cb2('0x1d')]['find']({'raw':_0x13d944[_0x4cb2('0x1e')]?_0x13d944['options']['raw']===undefined?!![]:![]:!![],'where':_0x13d944[_0x4cb2('0x1e')]?_0x13d944[_0x4cb2('0x1e')][_0x4cb2('0x1f')]||null:null,'attributes':_0x13d944['options']?_0x13d944[_0x4cb2('0x1e')][_0x4cb2('0x20')]||null:null,'include':_0x13d944['options']?_0x13d944[_0x4cb2('0x1e')][_0x4cb2('0x21')]?_[_0x4cb2('0x22')](_0x13d944[_0x4cb2('0x1e')][_0x4cb2('0x21')],function(_0x577319){return{'model':db[_0x577319['model']],'as':_0x577319['as'],'attributes':_0x577319['attributes'],'include':_0x577319[_0x4cb2('0x21')]?_[_0x4cb2('0x22')](_0x577319['include'],function(_0xfdb12f){return{'model':db[_0xfdb12f[_0x4cb2('0x23')]],'as':_0xfdb12f['as'],'attributes':_0xfdb12f[_0x4cb2('0x20')],'include':_0xfdb12f['include']?_[_0x4cb2('0x22')](_0xfdb12f[_0x4cb2('0x21')],function(_0x15ddb3){return{'model':db[_0x15ddb3[_0x4cb2('0x23')]],'as':_0x15ddb3['as'],'attributes':_0x15ddb3[_0x4cb2('0x20')]};}):[]};}):[]};}):[]:[]})[_0x4cb2('0x12')](function(_0x455a54){logger[_0x4cb2('0x24')](_0x4cb2('0x1c'),_0x13d944);logger[_0x4cb2('0x13')]('ShowSquareProject',_0x13d944,JSON[_0x4cb2('0x16')](_0x455a54));_0x58a912(_0x455a54);})[_0x4cb2('0x1b')](function(_0x3953e5){logger['error'](_0x4cb2('0x1c'),_0x3953e5[_0x4cb2('0x1a')],_0x13d944);_0x2be780(_0x425ba8[_0x4cb2('0x17')](0x1f4,_0x3953e5[_0x4cb2('0x1a')]));});});};
\ No newline at end of file
+var _0x76df=['model','attributes','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','http','defaults','redis','localhost','./squareProject.socket','request','info','SquareProject,\x20%s,\x20%s','request\x20sent','debug','SquareProject,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','ShowSquareProject','SquareProject','options','where','include','map'];(function(_0x4718d8,_0x2610e6){var _0x115468=function(_0x5aa59f){while(--_0x5aa59f){_0x4718d8['push'](_0x4718d8['shift']());}};_0x115468(++_0x2610e6);}(_0x76df,0x142));var _0xf76d=function(_0x9686e3,_0x205f24){_0x9686e3=_0x9686e3-0x0;var _0x4d6220=_0x76df[_0x9686e3];return _0x4d6220;};'use strict';var _=require('lodash');var util=require(_0xf76d('0x0'));var moment=require(_0xf76d('0x1'));var BPromise=require(_0xf76d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf76d('0x3'));var db=require(_0xf76d('0x4'))['db'];var utils=require(_0xf76d('0x5'));var logger=require(_0xf76d('0x6'))(_0xf76d('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xf76d('0x8')]({'port':0x232a});config['redis']=_[_0xf76d('0x9')](config[_0xf76d('0xa')],{'host':_0xf76d('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf76d('0xa')]));require(_0xf76d('0xc'))['register'](socket);function respondWithRpcPromise(_0x1ed1a3,_0x4327b1,_0x5ecd5a){return new BPromise(function(_0x273556,_0x2e0a50){return client[_0xf76d('0xd')](_0x1ed1a3,_0x5ecd5a)['then'](function(_0xbd5dac){logger[_0xf76d('0xe')](_0xf76d('0xf'),_0x4327b1,_0xf76d('0x10'));logger[_0xf76d('0x11')](_0xf76d('0x12'),_0x4327b1,_0xf76d('0x10'),JSON[_0xf76d('0x13')](_0xbd5dac));if(_0xbd5dac[_0xf76d('0x14')]){if(_0xbd5dac['error']['code']===0x1f4){logger[_0xf76d('0x14')](_0xf76d('0xf'),_0x4327b1,_0xbd5dac['error']['message']);return _0x2e0a50(_0xbd5dac[_0xf76d('0x14')]['message']);}logger[_0xf76d('0x14')](_0xf76d('0xf'),_0x4327b1,_0xbd5dac[_0xf76d('0x14')][_0xf76d('0x15')]);return _0x273556(_0xbd5dac[_0xf76d('0x14')][_0xf76d('0x15')]);}else{logger[_0xf76d('0xe')]('SquareProject,\x20%s,\x20%s',_0x4327b1,_0xf76d('0x10'));_0x273556(_0xbd5dac[_0xf76d('0x16')][_0xf76d('0x15')]);}})[_0xf76d('0x17')](function(_0x577b74){logger[_0xf76d('0x14')](_0xf76d('0xf'),_0x4327b1,_0x577b74);_0x2e0a50(_0x577b74);});});}exports[_0xf76d('0x18')]=function(_0x2713bf){var _0x47cb17=this;return new Promise(function(_0x5ea42e,_0x6ec6a7){return db[_0xf76d('0x19')]['find']({'raw':_0x2713bf['options']?_0x2713bf[_0xf76d('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x2713bf[_0xf76d('0x1a')]?_0x2713bf[_0xf76d('0x1a')][_0xf76d('0x1b')]||null:null,'attributes':_0x2713bf['options']?_0x2713bf[_0xf76d('0x1a')]['attributes']||null:null,'include':_0x2713bf['options']?_0x2713bf['options'][_0xf76d('0x1c')]?_[_0xf76d('0x1d')](_0x2713bf['options'][_0xf76d('0x1c')],function(_0x2d6e4f){return{'model':db[_0x2d6e4f[_0xf76d('0x1e')]],'as':_0x2d6e4f['as'],'attributes':_0x2d6e4f[_0xf76d('0x1f')],'include':_0x2d6e4f[_0xf76d('0x1c')]?_['map'](_0x2d6e4f[_0xf76d('0x1c')],function(_0x1968c1){return{'model':db[_0x1968c1['model']],'as':_0x1968c1['as'],'attributes':_0x1968c1[_0xf76d('0x1f')],'include':_0x1968c1[_0xf76d('0x1c')]?_[_0xf76d('0x1d')](_0x1968c1[_0xf76d('0x1c')],function(_0x1e5c3c){return{'model':db[_0x1e5c3c[_0xf76d('0x1e')]],'as':_0x1e5c3c['as'],'attributes':_0x1e5c3c[_0xf76d('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4e9af6){logger[_0xf76d('0xe')](_0xf76d('0x18'),_0x2713bf);logger['debug'](_0xf76d('0x18'),_0x2713bf,JSON[_0xf76d('0x13')](_0x4e9af6));_0x5ea42e(_0x4e9af6);})[_0xf76d('0x17')](function(_0x190939){logger[_0xf76d('0x14')](_0xf76d('0x18'),_0x190939[_0xf76d('0x15')],_0x2713bf);_0x6ec6a7(_0x47cb17['error'](0x1f4,_0x190939[_0xf76d('0x15')]));});});};
\ No newline at end of file
index 3278a00..4335c76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x288f=['emit','removeListener','register','length','./squareProject.events','remove'];(function(_0x1c4aa,_0x1ba0aa){var _0x559e18=function(_0x3c46bb){while(--_0x3c46bb){_0x1c4aa['push'](_0x1c4aa['shift']());}};_0x559e18(++_0x1ba0aa);}(_0x288f,0x136));var _0xf288=function(_0x1db831,_0x42b7b5){_0x1db831=_0x1db831-0x0;var _0x39ba56=_0x288f[_0x1db831];return _0x39ba56;};'use strict';var SquareProjectEvents=require(_0xf288('0x0'));var events=['save',_0xf288('0x1'),'update'];function createListener(_0x31ef0c,_0x30a8e7){return function(_0x362dd7){_0x30a8e7[_0xf288('0x2')](_0x31ef0c,_0x362dd7);};}function removeListener(_0x17c599,_0xaa5d7a){return function(){SquareProjectEvents[_0xf288('0x3')](_0x17c599,_0xaa5d7a);};}exports[_0xf288('0x4')]=function(_0x59cafd){for(var _0x6874b0=0x0,_0x39cb64=events[_0xf288('0x5')];_0x6874b0<_0x39cb64;_0x6874b0++){var _0x58845f=events[_0x6874b0];var _0x19496b=createListener('squareProject:'+_0x58845f,_0x59cafd);SquareProjectEvents['on'](_0x58845f,_0x19496b);}};
\ No newline at end of file
+var _0xe10b=['emit','removeListener','register','length','squareProject:','save','remove','update'];(function(_0x1ebfc7,_0x2797db){var _0x1627b8=function(_0x59ceee){while(--_0x59ceee){_0x1ebfc7['push'](_0x1ebfc7['shift']());}};_0x1627b8(++_0x2797db);}(_0xe10b,0x12d));var _0xbe10=function(_0x3fa41e,_0x1fad37){_0x3fa41e=_0x3fa41e-0x0;var _0x143cd5=_0xe10b[_0x3fa41e];return _0x143cd5;};'use strict';var SquareProjectEvents=require('./squareProject.events');var events=[_0xbe10('0x0'),_0xbe10('0x1'),_0xbe10('0x2')];function createListener(_0x3296a4,_0x5f2c78){return function(_0x76773f){_0x5f2c78[_0xbe10('0x3')](_0x3296a4,_0x76773f);};}function removeListener(_0x18bbfb,_0x122a4b){return function(){SquareProjectEvents[_0xbe10('0x4')](_0x18bbfb,_0x122a4b);};}exports[_0xbe10('0x5')]=function(_0x4a9fd4){for(var _0x4eb597=0x0,_0x45e2e2=events[_0xbe10('0x6')];_0x4eb597<_0x45e2e2;_0x4eb597++){var _0x2a61f5=events[_0x4eb597];var _0x43c19d=createListener(_0xbe10('0x7')+_0x2a61f5,_0x4a9fd4);SquareProjectEvents['on'](_0x2a61f5,_0x43c19d);}};
\ No newline at end of file
index 01dc25e..da69303 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['Router','../../components/auth/service','./squareRecording.controller','get','isAuthenticated','index','/:id','download','post','delete','destroy','exports','multer','util','express'];(function(_0x576499,_0x1f9811){var _0x1332e2=function(_0x58605c){while(--_0x58605c){_0x576499['push'](_0x576499['shift']());}};_0x1332e2(++_0x1f9811);}(_0xe14b,0x93));var _0xbe14=function(_0x5799c0,_0x779690){_0x5799c0=_0x5799c0-0x0;var _0x43da36=_0xe14b[_0x5799c0];return _0x43da36;};'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['show']);router['get']('/:id/download',auth[_0xbe14('0x7')](),controller[_0xbe14('0xa')]);router[_0xbe14('0xb')]('/',auth[_0xbe14('0x7')](),controller['create']);router['put'](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['update']);router[_0xbe14('0xc')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller[_0xbe14('0xd')]);module[_0xbe14('0xe')]=router;
\ No newline at end of file
+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(_0xe20c98,_0x56c150){var _0x5c0db9=function(_0x1e94ee){while(--_0x1e94ee){_0xe20c98['push'](_0xe20c98['shift']());}};_0x5c0db9(++_0x56c150);}(_0x5fab,0x177));var _0xb5fa=function(_0x327dbd,_0x2bd34d){_0x327dbd=_0x327dbd-0x0;var _0x58775e=_0x5fab[_0x327dbd];return _0x58775e;};'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
index 163dde5..3de862b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5075=['savePath','sequelize','exports','STRING','VIRTUAL','getDataValue'];(function(_0x13c70c,_0x546b34){var _0x50f0f2=function(_0x2a2991){while(--_0x2a2991){_0x13c70c['push'](_0x13c70c['shift']());}};_0x50f0f2(++_0x546b34);}(_0x5075,0x73));var _0x5507=function(_0x1dc0b9,_0x43ffca){_0x1dc0b9=_0x1dc0b9-0x0;var _0x20013a=_0x5075[_0x1dc0b9];return _0x20013a;};'use strict';var Sequelize=require(_0x5507('0x0'));module[_0x5507('0x1')]={'uniqueid':{'type':Sequelize[_0x5507('0x2')]},'callerid':{'type':Sequelize[_0x5507('0x2')]},'calleridname':{'type':Sequelize[_0x5507('0x2')]},'context':{'type':Sequelize[_0x5507('0x2')]},'extension':{'type':Sequelize[_0x5507('0x2')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x5507('0x2')]},'dnid':{'type':Sequelize[_0x5507('0x2')]},'projectName':{'type':Sequelize[_0x5507('0x2')]},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize['STRING']},'savePath':{'type':Sequelize[_0x5507('0x2')]},'format':{'type':Sequelize[_0x5507('0x3')],'get':function(){var _0x4c2d6d='';var _0x42c232=this[_0x5507('0x4')](_0x5507('0x5'));if(_0x42c232){_0x4c2d6d=_0x42c232['substring'](_0x42c232['lastIndexOf']('.'));}return _0x4c2d6d;}}};
\ No newline at end of file
+var _0x8ef6=['VIRTUAL','savePath','substring','lastIndexOf','sequelize','exports','STRING'];(function(_0x41cfd4,_0x1ed2cc){var _0x190f48=function(_0x4b5b1a){while(--_0x4b5b1a){_0x41cfd4['push'](_0x41cfd4['shift']());}};_0x190f48(++_0x1ed2cc);}(_0x8ef6,0xf2));var _0x68ef=function(_0x4b8823,_0x322260){_0x4b8823=_0x4b8823-0x0;var _0x4b8263=_0x8ef6[_0x4b8823];return _0x4b8263;};'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
index 8a3e181..944b4ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c52=['params','filename','format','secrets','recording','savePath','Sequelize','ValidationError','SquareRecording\x20not\x20found','extname','unlink','message','send','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','existsSync','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','rimraf','request-promise','moment','util','path','sox','to-csv','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','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','name','index','map','SquareRecording','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','options','include','rows','show','rawAttributes','includeAll','merge','find','catch','create','body','download','../../components/encryptor','uniqueid'];(function(_0x1c09a9,_0x4672c3){var _0x22a214=function(_0x455df7){while(--_0x455df7){_0x1c09a9['push'](_0x1c09a9['shift']());}};_0x22a214(++_0x4672c3);}(_0x6c52,0x12f));var _0x26c5=function(_0x1f415e,_0x294353){_0x1f415e=_0x1f415e-0x0;var _0x95d18e=_0x6c52[_0x1f415e];return _0x95d18e;};'use strict';var emlformat=require(_0x26c5('0x0'));var rimraf=require(_0x26c5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x26c5('0x2'));var moment=require(_0x26c5('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x26c5('0x4'));var path=require(_0x26c5('0x5'));var sox=require(_0x26c5('0x6'));var csv=require(_0x26c5('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(_0x26c5('0x8'));var jsforce=require(_0x26c5('0x9'));var deskjs=require(_0x26c5('0xa'));var toCsv=require(_0x26c5('0x7'));var querystring=require(_0x26c5('0xb'));var Papa=require(_0x26c5('0xc'));var Redis=require(_0x26c5('0xd'));var authService=require(_0x26c5('0xe'));var qs=require(_0x26c5('0xf'));var as=require(_0x26c5('0x10'));var hardwareService=require(_0x26c5('0x11'));var logger=require(_0x26c5('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x26c5('0x13'));var licenseUtil=require(_0x26c5('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3e3144,_0x47f72a){_0x47f72a=_0x47f72a||0xcc;return function(_0x2ae53c){if(_0x2ae53c){return _0x3e3144[_0x26c5('0x15')](_0x47f72a);}return _0x3e3144[_0x26c5('0x16')](_0x47f72a)[_0x26c5('0x17')]();};}function respondWithResult(_0x213622,_0x1d5d36){_0x1d5d36=_0x1d5d36||0xc8;return function(_0x1594f5){if(_0x1594f5){return _0x213622[_0x26c5('0x16')](_0x1d5d36)[_0x26c5('0x18')](_0x1594f5);}};}function respondWithFilteredResult(_0xa342c5,_0x48b66e){return function(_0x44ff9c){if(_0x44ff9c){var _0xf6c3d2=typeof _0x48b66e[_0x26c5('0x19')]===_0x26c5('0x1a')&&typeof _0x48b66e[_0x26c5('0x1b')]===_0x26c5('0x1a');var _0x2ae835=_0x44ff9c[_0x26c5('0x1c')];var _0x2a517c=_0xf6c3d2?0x0:_0x48b66e[_0x26c5('0x19')];var _0x1861a9=_0xf6c3d2?_0x44ff9c['count']:_0x48b66e['offset']+_0x48b66e[_0x26c5('0x1b')];var _0x6810a5;if(_0x1861a9>=_0x2ae835){_0x1861a9=_0x2ae835;_0x6810a5=0xc8;}else{_0x6810a5=0xce;}_0xa342c5['status'](_0x6810a5);return _0xa342c5[_0x26c5('0x1d')](_0x26c5('0x1e'),_0x2a517c+'-'+_0x1861a9+'/'+_0x2ae835)[_0x26c5('0x18')](_0x44ff9c);}return null;};}function patchUpdates(_0x1d9037){return function(_0x3d01f5){try{jsonpatch[_0x26c5('0x1f')](_0x3d01f5,_0x1d9037,!![]);}catch(_0x12fa68){return BPromise[_0x26c5('0x20')](_0x12fa68);}return _0x3d01f5[_0x26c5('0x21')]();};}function saveUpdates(_0x37a3e6,_0x47d6eb){return function(_0x5c35db){if(_0x5c35db){return _0x5c35db[_0x26c5('0x22')](_0x37a3e6)[_0x26c5('0x23')](function(_0x2e809c){return _0x2e809c;});}return null;};}function removeEntity(_0x4e1876,_0x38199d){return function(_0x2c6799){if(_0x2c6799){return _0x2c6799[_0x26c5('0x24')]()[_0x26c5('0x23')](function(){_0x4e1876['status'](0xcc)[_0x26c5('0x17')]();});}};}function handleEntityNotFound(_0xec099,_0x26b56c){return function(_0x717096){if(!_0x717096){_0xec099[_0x26c5('0x15')](0x194);}return _0x717096;};}function handleError(_0x30b382,_0x1000bd){_0x1000bd=_0x1000bd||0x1f4;return function(_0x166018){logger['error'](_0x166018['stack']);if(_0x166018[_0x26c5('0x25')]){delete _0x166018[_0x26c5('0x25')];}_0x30b382[_0x26c5('0x16')](_0x1000bd)['send'](_0x166018);};}exports[_0x26c5('0x26')]=function(_0x2331c4,_0x304331){var _0x5a71b8={},_0x573081={},_0x93e2d8={'count':0x0,'rows':[]};var _0x3f19bb=_[_0x26c5('0x27')](db[_0x26c5('0x28')]['rawAttributes'],function(_0x380d66){return{'name':_0x380d66[_0x26c5('0x29')],'type':_0x380d66[_0x26c5('0x2a')][_0x26c5('0x2b')]};});_0x573081[_0x26c5('0x2c')]=_[_0x26c5('0x27')](_0x3f19bb,_0x26c5('0x25'));_0x573081[_0x26c5('0x2d')]=_[_0x26c5('0x2e')](_0x2331c4[_0x26c5('0x2d')]);_0x573081[_0x26c5('0x2f')]=_[_0x26c5('0x30')](_0x573081[_0x26c5('0x2c')],_0x573081[_0x26c5('0x2d')]);_0x5a71b8[_0x26c5('0x31')]=_['intersection'](_0x573081[_0x26c5('0x2c')],qs[_0x26c5('0x32')](_0x2331c4[_0x26c5('0x2d')][_0x26c5('0x32')]));_0x5a71b8[_0x26c5('0x31')]=_0x5a71b8[_0x26c5('0x31')][_0x26c5('0x33')]?_0x5a71b8[_0x26c5('0x31')]:_0x573081['model'];if(!_0x2331c4['query'][_0x26c5('0x34')](_0x26c5('0x35'))){_0x5a71b8[_0x26c5('0x1b')]=qs['limit'](_0x2331c4[_0x26c5('0x2d')][_0x26c5('0x1b')]);_0x5a71b8[_0x26c5('0x19')]=qs[_0x26c5('0x19')](_0x2331c4[_0x26c5('0x2d')]['offset']);}_0x5a71b8[_0x26c5('0x36')]=qs[_0x26c5('0x37')](_0x2331c4['query'][_0x26c5('0x37')]);_0x5a71b8[_0x26c5('0x38')]=qs['filters'](_[_0x26c5('0x39')](_0x2331c4[_0x26c5('0x2d')],_0x573081[_0x26c5('0x2f')]),_0x3f19bb);if(_0x2331c4['query']['filter']){_0x5a71b8[_0x26c5('0x38')]=_['merge'](_0x5a71b8['where'],{'$or':_[_0x26c5('0x27')](_0x3f19bb,function(_0x52ea31){if(_0x52ea31[_0x26c5('0x2a')]!==_0x26c5('0x3a')){var _0x8f09d2={};_0x8f09d2[_0x52ea31['name']]={'$like':'%'+_0x2331c4[_0x26c5('0x2d')]['filter']+'%'};return _0x8f09d2;}})});}_0x5a71b8=_['merge']({},_0x5a71b8,_0x2331c4[_0x26c5('0x3b')]);var _0x427fb2={'where':_0x5a71b8['where']};return db[_0x26c5('0x28')][_0x26c5('0x1c')](_0x427fb2)[_0x26c5('0x23')](function(_0x4bbf79){_0x93e2d8[_0x26c5('0x1c')]=_0x4bbf79;if(_0x2331c4[_0x26c5('0x2d')]['includeAll']){_0x5a71b8[_0x26c5('0x3c')]=[{'all':!![]}];}return db[_0x26c5('0x28')]['findAll'](_0x5a71b8);})[_0x26c5('0x23')](function(_0x328269){_0x93e2d8[_0x26c5('0x3d')]=_0x328269;return _0x93e2d8;})[_0x26c5('0x23')](respondWithFilteredResult(_0x304331,_0x5a71b8))['catch'](handleError(_0x304331,null));};exports[_0x26c5('0x3e')]=function(_0x166e4b,_0x11a8eb){var _0x2440a8={'raw':!![],'where':{'id':_0x166e4b['params']['id']}},_0x333cb8={};_0x333cb8['model']=_[_0x26c5('0x2e')](db[_0x26c5('0x28')][_0x26c5('0x3f')]);_0x333cb8[_0x26c5('0x2d')]=_[_0x26c5('0x2e')](_0x166e4b['query']);_0x333cb8['filters']=_[_0x26c5('0x30')](_0x333cb8['model'],_0x333cb8['query']);_0x2440a8[_0x26c5('0x31')]=_[_0x26c5('0x30')](_0x333cb8[_0x26c5('0x2c')],qs['fields'](_0x166e4b[_0x26c5('0x2d')][_0x26c5('0x32')]));_0x2440a8[_0x26c5('0x31')]=_0x2440a8[_0x26c5('0x31')][_0x26c5('0x33')]?_0x2440a8[_0x26c5('0x31')]:_0x333cb8['model'];if(_0x166e4b['query'][_0x26c5('0x40')]){_0x2440a8['include']=[{'all':!![]}];}_0x2440a8=_[_0x26c5('0x41')]({},_0x2440a8,_0x166e4b[_0x26c5('0x3b')]);return db[_0x26c5('0x28')][_0x26c5('0x42')](_0x2440a8)[_0x26c5('0x23')](handleEntityNotFound(_0x11a8eb,null))[_0x26c5('0x23')](respondWithResult(_0x11a8eb,null))[_0x26c5('0x43')](handleError(_0x11a8eb,null));};exports[_0x26c5('0x44')]=function(_0x1bc391,_0x55dbe4){return db['SquareRecording'][_0x26c5('0x44')](_0x1bc391[_0x26c5('0x45')],{})['then'](respondWithResult(_0x55dbe4,0xc9))[_0x26c5('0x43')](handleError(_0x55dbe4,null));};exports[_0x26c5('0x22')]=function(_0xcf1f78,_0x45dbfb){if(_0xcf1f78[_0x26c5('0x45')]['id']){delete _0xcf1f78[_0x26c5('0x45')]['id'];}return db[_0x26c5('0x28')][_0x26c5('0x42')]({'where':{'id':_0xcf1f78['params']['id']}})[_0x26c5('0x23')](handleEntityNotFound(_0x45dbfb,null))[_0x26c5('0x23')](saveUpdates(_0xcf1f78[_0x26c5('0x45')],null))[_0x26c5('0x23')](respondWithResult(_0x45dbfb,null))[_0x26c5('0x43')](handleError(_0x45dbfb,null));};exports[_0x26c5('0x46')]=function(_0x5a4e58,_0x24c954,_0x3364ab){var _0x4cfc44=require(_0x26c5('0x47'));var _0x48dcc9=![];var _0x2f81c2={};if(_0x5a4e58[_0x26c5('0x2d')][_0x26c5('0x2a')]&&_0x5a4e58[_0x26c5('0x2d')][_0x26c5('0x2a')]===_0x26c5('0x48')){_0x2f81c2[_0x26c5('0x48')]=_0x5a4e58['params']['id'];}else{_0x2f81c2['id']=_0x5a4e58[_0x26c5('0x49')]['id'];}return db['SquareRecording'][_0x26c5('0x42')]({'where':_0x2f81c2,'attributes':['id','savePath',_0x26c5('0x4a')],'raw':!![]})[_0x26c5('0x23')](handleEntityNotFound(_0x24c954,null))['then'](function(_0x35c124){if(_0x35c124){var _0x403b24=_0x35c124['savePath'];var _0x3e6791=util[_0x26c5('0x4b')]('%s.cypher',_0x403b24);if(fs['existsSync'](_0x3e6791)){_0x48dcc9=!![];return _0x4cfc44['decryptFile'](_0x3e6791,_0x403b24,config[_0x26c5('0x4c')][_0x26c5('0x4d')])['then'](function(){return _0x35c124;});}return _0x35c124;}})['then'](function(_0xef007b){if(_0xef007b){var _0x5e5928=_0xef007b[_0x26c5('0x4e')];if(!fs['existsSync'](_0x5e5928)){throw new db[(_0x26c5('0x4f'))][(_0x26c5('0x50'))](_0x26c5('0x51'));}if(_0xef007b['filename']){return _0x24c954[_0x26c5('0x46')](_0x5e5928,_0xef007b[_0x26c5('0x4a')]+path[_0x26c5('0x52')](_0x5e5928),function(){if(_0x48dcc9){fs['unlink'](_0x5e5928);}});}else{return _0x24c954[_0x26c5('0x46')](_0x5e5928,function(_0x4d642b){if(_0x48dcc9){fs[_0x26c5('0x53')](_0x5e5928);}});}}})[_0x26c5('0x43')](function(_0x1af461){if(_0x1af461[_0x26c5('0x54')]===_0x26c5('0x51')){_0x24c954['status'](0x194)[_0x26c5('0x55')]('Not\x20found');}else{return handleError(_0x24c954,null);}});};exports[_0x26c5('0x24')]=function(_0xe9ef1e,_0x51d533){return db[_0x26c5('0x28')]['find']({'where':{'id':_0xe9ef1e[_0x26c5('0x49')]['id']}})[_0x26c5('0x23')](function(_0x4f71c2){if(_[_0x26c5('0x56')](_0x4f71c2)){throw new ReferenceError(_0x26c5('0x57'));}return _0x4f71c2;})['then'](function(_0x5484be){var _0x1afd46=_0x5484be['savePath'];logger[_0x26c5('0x58')](_0x26c5('0x59'),_0x1afd46);if(!_[_0x26c5('0x56')](_0x5484be[_0x26c5('0x4e')])&&fs[_0x26c5('0x5a')](_0x1afd46)){logger[_0x26c5('0x58')](_0x26c5('0x5b')+_0x1afd46+_0x26c5('0x5c'));fs[_0x26c5('0x5d')](_0x1afd46);}_0x1afd46=_0x1afd46+'.cypher';if(!_[_0x26c5('0x56')](_0x5484be['savePath'])&&fs[_0x26c5('0x5a')](_0x1afd46)){logger[_0x26c5('0x58')](_0x26c5('0x5b')+_0x1afd46+_0x26c5('0x5c'));fs['unlinkSync'](_0x1afd46);}return _0x5484be;})[_0x26c5('0x23')](function(_0x19cd99){if(!_0x19cd99)throw new InternalError();return _0x19cd99[_0x26c5('0x24')]();})[_0x26c5('0x23')](function(){_0x51d533[_0x26c5('0x16')](0xcc)[_0x26c5('0x17')]();})[_0x26c5('0x43')](handleError(_0x51d533,null));};
\ No newline at end of file
+var _0x0d15=['ValidationError','SquareRecording\x20not\x20found','filename','unlink','Not\x20found','isNil','info','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','File:\x20\x22','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','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/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','reject','save','then','destroy','error','name','send','index','map','SquareRecording','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','findAll','catch','keys','length','include','find','body','update','params','download','../../components/encryptor','type','uniqueid','savePath','format','%s.cypher','decryptFile','secrets','recording','existsSync','Sequelize'];(function(_0x2af9ed,_0x4a6014){var _0x47a1ce=function(_0xe0b7df){while(--_0xe0b7df){_0x2af9ed['push'](_0x2af9ed['shift']());}};_0x47a1ce(++_0x4a6014);}(_0x0d15,0x192));var _0x50d1=function(_0x2d88ca,_0x3a0ddc){_0x2d88ca=_0x2d88ca-0x0;var _0x33df12=_0x0d15[_0x2d88ca];return _0x33df12;};'use strict';var emlformat=require(_0x50d1('0x0'));var rimraf=require(_0x50d1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x50d1('0x2'));var rp=require(_0x50d1('0x3'));var moment=require(_0x50d1('0x4'));var BPromise=require(_0x50d1('0x5'));var Mustache=require(_0x50d1('0x6'));var util=require(_0x50d1('0x7'));var path=require('path');var sox=require(_0x50d1('0x8'));var csv=require(_0x50d1('0x9'));var ejs=require(_0x50d1('0xa'));var fs=require('fs');var fs_extra=require(_0x50d1('0xb'));var _=require(_0x50d1('0xc'));var squel=require(_0x50d1('0xd'));var crypto=require(_0x50d1('0xe'));var jsforce=require(_0x50d1('0xf'));var deskjs=require(_0x50d1('0x10'));var toCsv=require('to-csv');var querystring=require(_0x50d1('0x11'));var Papa=require(_0x50d1('0x12'));var Redis=require(_0x50d1('0x13'));var authService=require(_0x50d1('0x14'));var qs=require(_0x50d1('0x15'));var as=require(_0x50d1('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x50d1('0x17'))(_0x50d1('0x18'));var utils=require(_0x50d1('0x19'));var config=require(_0x50d1('0x1a'));var licenseUtil=require(_0x50d1('0x1b'));var db=require(_0x50d1('0x1c'))['db'];function respondWithStatusCode(_0x46b68d,_0x1d2a20){_0x1d2a20=_0x1d2a20||0xcc;return function(_0x4b1356){if(_0x4b1356){return _0x46b68d[_0x50d1('0x1d')](_0x1d2a20);}return _0x46b68d[_0x50d1('0x1e')](_0x1d2a20)[_0x50d1('0x1f')]();};}function respondWithResult(_0x52f2a5,_0x318d90){_0x318d90=_0x318d90||0xc8;return function(_0x3fa29f){if(_0x3fa29f){return _0x52f2a5[_0x50d1('0x1e')](_0x318d90)[_0x50d1('0x20')](_0x3fa29f);}};}function respondWithFilteredResult(_0x15725e,_0x53db7d){return function(_0x17d64c){if(_0x17d64c){var _0x3b70e1=typeof _0x53db7d[_0x50d1('0x21')]==='undefined'&&typeof _0x53db7d[_0x50d1('0x22')]===_0x50d1('0x23');var _0x3406a4=_0x17d64c[_0x50d1('0x24')];var _0x1d75f0=_0x3b70e1?0x0:_0x53db7d[_0x50d1('0x21')];var _0x44da2e=_0x3b70e1?_0x17d64c[_0x50d1('0x24')]:_0x53db7d[_0x50d1('0x21')]+_0x53db7d[_0x50d1('0x22')];var _0x30bc49;if(_0x44da2e>=_0x3406a4){_0x44da2e=_0x3406a4;_0x30bc49=0xc8;}else{_0x30bc49=0xce;}_0x15725e[_0x50d1('0x1e')](_0x30bc49);return _0x15725e[_0x50d1('0x25')]('Content-Range',_0x1d75f0+'-'+_0x44da2e+'/'+_0x3406a4)[_0x50d1('0x20')](_0x17d64c);}return null;};}function patchUpdates(_0x376f41){return function(_0x1cebef){try{jsonpatch['apply'](_0x1cebef,_0x376f41,!![]);}catch(_0x30be0c){return BPromise[_0x50d1('0x26')](_0x30be0c);}return _0x1cebef[_0x50d1('0x27')]();};}function saveUpdates(_0x493c59,_0x1854b8){return function(_0x4cb1fd){if(_0x4cb1fd){return _0x4cb1fd['update'](_0x493c59)[_0x50d1('0x28')](function(_0x501424){return _0x501424;});}return null;};}function removeEntity(_0x10a4bd,_0x1ecdbc){return function(_0x236475){if(_0x236475){return _0x236475[_0x50d1('0x29')]()[_0x50d1('0x28')](function(){_0x10a4bd[_0x50d1('0x1e')](0xcc)[_0x50d1('0x1f')]();});}};}function handleEntityNotFound(_0x51e480,_0x3baa89){return function(_0x421279){if(!_0x421279){_0x51e480[_0x50d1('0x1d')](0x194);}return _0x421279;};}function handleError(_0x4d174c,_0x59caef){_0x59caef=_0x59caef||0x1f4;return function(_0x3ed20b){logger[_0x50d1('0x2a')](_0x3ed20b['stack']);if(_0x3ed20b[_0x50d1('0x2b')]){delete _0x3ed20b[_0x50d1('0x2b')];}_0x4d174c['status'](_0x59caef)[_0x50d1('0x2c')](_0x3ed20b);};}exports[_0x50d1('0x2d')]=function(_0x183585,_0x5e43fb){var _0x541717={},_0x443092={},_0x28cc52={'count':0x0,'rows':[]};var _0x346266=_[_0x50d1('0x2e')](db[_0x50d1('0x2f')][_0x50d1('0x30')],function(_0x7a71ef){return{'name':_0x7a71ef[_0x50d1('0x31')],'type':_0x7a71ef['type'][_0x50d1('0x32')]};});_0x443092[_0x50d1('0x33')]=_[_0x50d1('0x2e')](_0x346266,_0x50d1('0x2b'));_0x443092[_0x50d1('0x34')]=_['keys'](_0x183585[_0x50d1('0x34')]);_0x443092[_0x50d1('0x35')]=_[_0x50d1('0x36')](_0x443092[_0x50d1('0x33')],_0x443092[_0x50d1('0x34')]);_0x541717[_0x50d1('0x37')]=_[_0x50d1('0x36')](_0x443092[_0x50d1('0x33')],qs['fields'](_0x183585[_0x50d1('0x34')][_0x50d1('0x38')]));_0x541717[_0x50d1('0x37')]=_0x541717[_0x50d1('0x37')]['length']?_0x541717[_0x50d1('0x37')]:_0x443092[_0x50d1('0x33')];if(!_0x183585[_0x50d1('0x34')][_0x50d1('0x39')](_0x50d1('0x3a'))){_0x541717[_0x50d1('0x22')]=qs[_0x50d1('0x22')](_0x183585[_0x50d1('0x34')][_0x50d1('0x22')]);_0x541717[_0x50d1('0x21')]=qs['offset'](_0x183585[_0x50d1('0x34')][_0x50d1('0x21')]);}_0x541717[_0x50d1('0x3b')]=qs['sort'](_0x183585[_0x50d1('0x34')][_0x50d1('0x3c')]);_0x541717[_0x50d1('0x3d')]=qs[_0x50d1('0x35')](_['pick'](_0x183585[_0x50d1('0x34')],_0x443092['filters']),_0x346266);if(_0x183585['query'][_0x50d1('0x3e')]){_0x541717[_0x50d1('0x3d')]=_[_0x50d1('0x3f')](_0x541717[_0x50d1('0x3d')],{'$or':_[_0x50d1('0x2e')](_0x346266,function(_0x3b1a72){if(_0x3b1a72['type']!==_0x50d1('0x40')){var _0x5d20d4={};_0x5d20d4[_0x3b1a72[_0x50d1('0x2b')]]={'$like':'%'+_0x183585[_0x50d1('0x34')]['filter']+'%'};return _0x5d20d4;}})});}_0x541717=_[_0x50d1('0x3f')]({},_0x541717,_0x183585[_0x50d1('0x41')]);var _0x5a7c0={'where':_0x541717[_0x50d1('0x3d')]};return db[_0x50d1('0x2f')]['count'](_0x5a7c0)[_0x50d1('0x28')](function(_0x15716e){_0x28cc52[_0x50d1('0x24')]=_0x15716e;if(_0x183585['query'][_0x50d1('0x42')]){_0x541717['include']=[{'all':!![]}];}return db[_0x50d1('0x2f')][_0x50d1('0x43')](_0x541717);})[_0x50d1('0x28')](function(_0xb77c1f){_0x28cc52['rows']=_0xb77c1f;return _0x28cc52;})['then'](respondWithFilteredResult(_0x5e43fb,_0x541717))[_0x50d1('0x44')](handleError(_0x5e43fb,null));};exports['show']=function(_0x17fbc5,_0x3bb6a6){var _0x2832ff={'raw':!![],'where':{'id':_0x17fbc5['params']['id']}},_0x459ef9={};_0x459ef9[_0x50d1('0x33')]=_['keys'](db['SquareRecording'][_0x50d1('0x30')]);_0x459ef9['query']=_[_0x50d1('0x45')](_0x17fbc5[_0x50d1('0x34')]);_0x459ef9['filters']=_[_0x50d1('0x36')](_0x459ef9['model'],_0x459ef9['query']);_0x2832ff['attributes']=_[_0x50d1('0x36')](_0x459ef9[_0x50d1('0x33')],qs['fields'](_0x17fbc5[_0x50d1('0x34')][_0x50d1('0x38')]));_0x2832ff['attributes']=_0x2832ff[_0x50d1('0x37')][_0x50d1('0x46')]?_0x2832ff[_0x50d1('0x37')]:_0x459ef9['model'];if(_0x17fbc5[_0x50d1('0x34')][_0x50d1('0x42')]){_0x2832ff[_0x50d1('0x47')]=[{'all':!![]}];}_0x2832ff=_[_0x50d1('0x3f')]({},_0x2832ff,_0x17fbc5['options']);return db[_0x50d1('0x2f')][_0x50d1('0x48')](_0x2832ff)[_0x50d1('0x28')](handleEntityNotFound(_0x3bb6a6,null))['then'](respondWithResult(_0x3bb6a6,null))[_0x50d1('0x44')](handleError(_0x3bb6a6,null));};exports['create']=function(_0xa758f3,_0x23ec8b){return db[_0x50d1('0x2f')]['create'](_0xa758f3[_0x50d1('0x49')],{})[_0x50d1('0x28')](respondWithResult(_0x23ec8b,0xc9))[_0x50d1('0x44')](handleError(_0x23ec8b,null));};exports[_0x50d1('0x4a')]=function(_0x5ee532,_0x97422e){if(_0x5ee532['body']['id']){delete _0x5ee532['body']['id'];}return db[_0x50d1('0x2f')][_0x50d1('0x48')]({'where':{'id':_0x5ee532[_0x50d1('0x4b')]['id']}})['then'](handleEntityNotFound(_0x97422e,null))['then'](saveUpdates(_0x5ee532[_0x50d1('0x49')],null))['then'](respondWithResult(_0x97422e,null))[_0x50d1('0x44')](handleError(_0x97422e,null));};exports[_0x50d1('0x4c')]=function(_0x9429ff,_0x18a2e3,_0x4e0fa3){var _0xf51c9e=require(_0x50d1('0x4d'));var _0x3e3805=![];var _0x44309b={};if(_0x9429ff[_0x50d1('0x34')][_0x50d1('0x4e')]&&_0x9429ff[_0x50d1('0x34')]['type']===_0x50d1('0x4f')){_0x44309b[_0x50d1('0x4f')]=_0x9429ff[_0x50d1('0x4b')]['id'];}else{_0x44309b['id']=_0x9429ff[_0x50d1('0x4b')]['id'];}return db['SquareRecording'][_0x50d1('0x48')]({'where':_0x44309b,'attributes':['id',_0x50d1('0x50'),'filename'],'raw':!![]})[_0x50d1('0x28')](handleEntityNotFound(_0x18a2e3,null))[_0x50d1('0x28')](function(_0x126f79){if(_0x126f79){var _0x26ab31=_0x126f79[_0x50d1('0x50')];var _0x5be3a1=util[_0x50d1('0x51')](_0x50d1('0x52'),_0x26ab31);if(fs['existsSync'](_0x5be3a1)){_0x3e3805=!![];return _0xf51c9e[_0x50d1('0x53')](_0x5be3a1,_0x26ab31,config[_0x50d1('0x54')][_0x50d1('0x55')])[_0x50d1('0x28')](function(){return _0x126f79;});}return _0x126f79;}})[_0x50d1('0x28')](function(_0x1a2e3c){if(_0x1a2e3c){var _0xbcd38a=_0x1a2e3c[_0x50d1('0x50')];if(!fs[_0x50d1('0x56')](_0xbcd38a)){throw new db[(_0x50d1('0x57'))][(_0x50d1('0x58'))](_0x50d1('0x59'));}if(_0x1a2e3c[_0x50d1('0x5a')]){return _0x18a2e3[_0x50d1('0x4c')](_0xbcd38a,_0x1a2e3c[_0x50d1('0x5a')]+path['extname'](_0xbcd38a),function(){if(_0x3e3805){fs[_0x50d1('0x5b')](_0xbcd38a);}});}else{return _0x18a2e3['download'](_0xbcd38a,function(_0x97f150){if(_0x3e3805){fs[_0x50d1('0x5b')](_0xbcd38a);}});}}})[_0x50d1('0x44')](function(_0x59b5b6){if(_0x59b5b6['message']===_0x50d1('0x59')){_0x18a2e3[_0x50d1('0x1e')](0x194)[_0x50d1('0x2c')](_0x50d1('0x5c'));}else{return handleError(_0x18a2e3,null);}});};exports[_0x50d1('0x29')]=function(_0x2b7136,_0x5b13fc){return db['SquareRecording'][_0x50d1('0x48')]({'where':{'id':_0x2b7136[_0x50d1('0x4b')]['id']}})[_0x50d1('0x28')](function(_0x1c19ac){if(_[_0x50d1('0x5d')](_0x1c19ac)){throw new ReferenceError('Entity\x20not\x20found');}return _0x1c19ac;})['then'](function(_0x176d55){var _0x1b1fe5=_0x176d55['savePath'];logger[_0x50d1('0x5e')]('cancellazione\x20fisica\x20documento\x20%s',_0x1b1fe5);if(!_[_0x50d1('0x5d')](_0x176d55[_0x50d1('0x50')])&&fs[_0x50d1('0x56')](_0x1b1fe5)){logger[_0x50d1('0x5e')]('File:\x20\x22'+_0x1b1fe5+_0x50d1('0x5f'));fs[_0x50d1('0x60')](_0x1b1fe5);}_0x1b1fe5=_0x1b1fe5+'.cypher';if(!_['isNil'](_0x176d55['savePath'])&&fs['existsSync'](_0x1b1fe5)){logger[_0x50d1('0x5e')](_0x50d1('0x61')+_0x1b1fe5+_0x50d1('0x5f'));fs[_0x50d1('0x60')](_0x1b1fe5);}return _0x176d55;})[_0x50d1('0x28')](function(_0x14fdf2){if(!_0x14fdf2)throw new InternalError();return _0x14fdf2[_0x50d1('0x29')]();})['then'](function(){_0x5b13fc[_0x50d1('0x1e')](0xcc)['end']();})[_0x50d1('0x44')](handleError(_0x5b13fc,null));};
\ No newline at end of file
index 6037d1f..f5b036b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc21c=['api','moment','bluebird','request-promise','rimraf','../../config/environment','./squareRecording.attributes','exports','define','square_recordings','lodash','util'];(function(_0x14c35b,_0x58f004){var _0x1141d7=function(_0x10b769){while(--_0x10b769){_0x14c35b['push'](_0x14c35b['shift']());}};_0x1141d7(++_0x58f004);}(_0xc21c,0x166));var _0xcc21=function(_0x1f6bc2,_0x3ecca5){_0x1f6bc2=_0x1f6bc2-0x0;var _0xd53f33=_0xc21c[_0x1f6bc2];return _0xd53f33;};'use strict';var _=require(_0xcc21('0x0'));var util=require(_0xcc21('0x1'));var logger=require('../../config/logger')(_0xcc21('0x2'));var moment=require(_0xcc21('0x3'));var BPromise=require(_0xcc21('0x4'));var rp=require(_0xcc21('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcc21('0x6'));var config=require(_0xcc21('0x7'));var attributes=require(_0xcc21('0x8'));module[_0xcc21('0x9')]=function(_0x1ff108,_0x2409e5){return _0x1ff108[_0xcc21('0xa')]('SquareRecording',attributes,{'tableName':_0xcc21('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdeb3=['./squareRecording.attributes','define','square_recordings','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment'];(function(_0x3c6741,_0x24c6f0){var _0x5d3310=function(_0x504ffb){while(--_0x504ffb){_0x3c6741['push'](_0x3c6741['shift']());}};_0x5d3310(++_0x24c6f0);}(_0xdeb3,0xb7));var _0x3deb=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xdeb3[_0x42cae2];return _0x5f256f;};'use strict';var _=require('lodash');var util=require(_0x3deb('0x0'));var logger=require(_0x3deb('0x1'))(_0x3deb('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3deb('0x3'));var fs=require('fs');var path=require(_0x3deb('0x4'));var rimraf=require(_0x3deb('0x5'));var config=require(_0x3deb('0x6'));var attributes=require(_0x3deb('0x7'));module['exports']=function(_0x193700,_0x47d2d4){return _0x193700[_0x3deb('0x8')]('SquareRecording',attributes,{'tableName':_0x3deb('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 68920f6..44da5d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9ee=['SquareRecording','body','options','raw','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','http','request','then','info','SquareRecording,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SquareRecording,\x20%s,\x20%s','message','result','catch','CreateSquareRecording'];(function(_0x5c8047,_0xb2238){var _0x356c70=function(_0x28a559){while(--_0x28a559){_0x5c8047['push'](_0x5c8047['shift']());}};_0x356c70(++_0xb2238);}(_0xc9ee,0x75));var _0xec9e=function(_0x585ee5,_0x1c9dba){_0x585ee5=_0x585ee5-0x0;var _0x470808=_0xc9ee[_0x585ee5];return _0x470808;};'use strict';var _=require(_0xec9e('0x0'));var util=require(_0xec9e('0x1'));var moment=require(_0xec9e('0x2'));var BPromise=require(_0xec9e('0x3'));var rs=require(_0xec9e('0x4'));var fs=require('fs');var Redis=require(_0xec9e('0x5'));var db=require(_0xec9e('0x6'))['db'];var utils=require(_0xec9e('0x7'));var logger=require(_0xec9e('0x8'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xec9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1c9d3f,_0x335a2b,_0x52d869){return new BPromise(function(_0xd237ad,_0x41debf){return client[_0xec9e('0xa')](_0x1c9d3f,_0x52d869)[_0xec9e('0xb')](function(_0x4bdaa1){logger[_0xec9e('0xc')]('SquareRecording,\x20%s,\x20%s',_0x335a2b,'request\x20sent');logger['debug'](_0xec9e('0xd'),_0x335a2b,_0xec9e('0xe'),JSON[_0xec9e('0xf')](_0x4bdaa1));if(_0x4bdaa1[_0xec9e('0x10')]){if(_0x4bdaa1[_0xec9e('0x10')][_0xec9e('0x11')]===0x1f4){logger[_0xec9e('0x10')](_0xec9e('0x12'),_0x335a2b,_0x4bdaa1[_0xec9e('0x10')]['message']);return _0x41debf(_0x4bdaa1['error'][_0xec9e('0x13')]);}logger['error']('SquareRecording,\x20%s,\x20%s',_0x335a2b,_0x4bdaa1[_0xec9e('0x10')][_0xec9e('0x13')]);return _0xd237ad(_0x4bdaa1[_0xec9e('0x10')][_0xec9e('0x13')]);}else{logger[_0xec9e('0xc')](_0xec9e('0x12'),_0x335a2b,_0xec9e('0xe'));_0xd237ad(_0x4bdaa1[_0xec9e('0x14')][_0xec9e('0x13')]);}})[_0xec9e('0x15')](function(_0x278e19){logger[_0xec9e('0x10')]('SquareRecording,\x20%s,\x20%s',_0x335a2b,_0x278e19);_0x41debf(_0x278e19);});});}exports[_0xec9e('0x16')]=function(_0x2abbe2){var _0x1c2c9e=this;return new Promise(function(_0x525560,_0x2339a){return db[_0xec9e('0x17')]['create'](_0x2abbe2[_0xec9e('0x18')],{'raw':_0x2abbe2[_0xec9e('0x19')]?_0x2abbe2[_0xec9e('0x19')][_0xec9e('0x1a')]===undefined?!![]:![]:!![]})[_0xec9e('0xb')](function(_0x1c3247){logger[_0xec9e('0xc')](_0xec9e('0x16'),_0x2abbe2);logger[_0xec9e('0x1b')]('CreateSquareRecording',_0x2abbe2,JSON[_0xec9e('0xf')](_0x1c3247));_0x525560(_0x1c3247);})[_0xec9e('0x15')](function(_0x5d9b7f){logger[_0xec9e('0x10')](_0xec9e('0x16'),_0x5d9b7f[_0xec9e('0x13')],_0x2abbe2);_0x2339a(_0x1c2c9e['error'](0x1f4,_0x5d9b7f['message']));});});};
\ No newline at end of file
+var _0x8d76=['message','result','catch','CreateSquareRecording','SquareRecording','create','body','options','raw','stringify','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','debug','SquareRecording,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x31619f,_0x3f3df6){var _0x252118=function(_0x5b952b){while(--_0x5b952b){_0x31619f['push'](_0x31619f['shift']());}};_0x252118(++_0x3f3df6);}(_0x8d76,0x86));var _0x68d7=function(_0x39f6d3,_0x1e2317){_0x39f6d3=_0x39f6d3-0x0;var _0xd9dafd=_0x8d76[_0x39f6d3];return _0xd9dafd;};'use strict';var _=require(_0x68d7('0x0'));var util=require('util');var moment=require(_0x68d7('0x1'));var BPromise=require(_0x68d7('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x68d7('0x3'));var db=require(_0x68d7('0x4'))['db'];var utils=require(_0x68d7('0x5'));var logger=require(_0x68d7('0x6'))(_0x68d7('0x7'));var config=require(_0x68d7('0x8'));var jayson=require(_0x68d7('0x9'));var client=jayson[_0x68d7('0xa')][_0x68d7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5e36f7,_0x483d55,_0x256050){return new BPromise(function(_0x14b8d8,_0x361a61){return client[_0x68d7('0xc')](_0x5e36f7,_0x256050)[_0x68d7('0xd')](function(_0x20d986){logger[_0x68d7('0xe')](_0x68d7('0xf'),_0x483d55,_0x68d7('0x10'));logger[_0x68d7('0x11')](_0x68d7('0x12'),_0x483d55,_0x68d7('0x10'),JSON['stringify'](_0x20d986));if(_0x20d986[_0x68d7('0x13')]){if(_0x20d986[_0x68d7('0x13')][_0x68d7('0x14')]===0x1f4){logger[_0x68d7('0x13')]('SquareRecording,\x20%s,\x20%s',_0x483d55,_0x20d986[_0x68d7('0x13')][_0x68d7('0x15')]);return _0x361a61(_0x20d986[_0x68d7('0x13')][_0x68d7('0x15')]);}logger[_0x68d7('0x13')](_0x68d7('0xf'),_0x483d55,_0x20d986[_0x68d7('0x13')][_0x68d7('0x15')]);return _0x14b8d8(_0x20d986[_0x68d7('0x13')][_0x68d7('0x15')]);}else{logger[_0x68d7('0xe')]('SquareRecording,\x20%s,\x20%s',_0x483d55,'request\x20sent');_0x14b8d8(_0x20d986[_0x68d7('0x16')]['message']);}})[_0x68d7('0x17')](function(_0x196f9a){logger[_0x68d7('0x13')](_0x68d7('0xf'),_0x483d55,_0x196f9a);_0x361a61(_0x196f9a);});});}exports[_0x68d7('0x18')]=function(_0x44cca2){var _0x4c81b9=this;return new Promise(function(_0x28517c,_0x20dd97){return db[_0x68d7('0x19')][_0x68d7('0x1a')](_0x44cca2[_0x68d7('0x1b')],{'raw':_0x44cca2[_0x68d7('0x1c')]?_0x44cca2[_0x68d7('0x1c')][_0x68d7('0x1d')]===undefined?!![]:![]:!![]})[_0x68d7('0xd')](function(_0x17ad00){logger['info'](_0x68d7('0x18'),_0x44cca2);logger[_0x68d7('0x11')]('CreateSquareRecording',_0x44cca2,JSON[_0x68d7('0x1e')](_0x17ad00));_0x28517c(_0x17ad00);})['catch'](function(_0x2374c6){logger[_0x68d7('0x13')](_0x68d7('0x18'),_0x2374c6[_0x68d7('0x15')],_0x44cca2);_0x20dd97(_0x4c81b9[_0x68d7('0x13')](0x1f4,_0x2374c6[_0x68d7('0x15')]));});});};
\ No newline at end of file
index 389fc8b..7f943b2 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(_0x3d571f,_0x19a5cb){var _0x4660a4=function(_0xcb7dcc){while(--_0xcb7dcc){_0x3d571f['push'](_0x3d571f['shift']());}};_0x4660a4(++_0x19a5cb);}(_0xbaf0,0x12a));var _0x0baf=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xbaf0[_0x2b4411];return _0x8e41ef;};'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 _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(_0x1e6651,_0x4366fc){var _0x656bab=function(_0x327688){while(--_0x327688){_0x1e6651['push'](_0x1e6651['shift']());}};_0x656bab(++_0x4366fc);}(_0xbaf0,0x12a));var _0x0baf=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xbaf0[_0x6c993a];return _0x27f547;};'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
index 6c97568..25febba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9726=['BOOLEAN','sequelize','STRING','DATE'];(function(_0x58dd3d,_0x47473f){var _0x40e375=function(_0x28cf4c){while(--_0x28cf4c){_0x58dd3d['push'](_0x58dd3d['shift']());}};_0x40e375(++_0x47473f);}(_0x9726,0xe5));var _0x6972=function(_0x1101b4,_0x43d648){_0x1101b4=_0x1101b4-0x0;var _0x15556c=_0x9726[_0x1101b4];return _0x15556c;};'use strict';var Sequelize=require(_0x6972('0x0'));module['exports']={'network':{'type':Sequelize['STRING']},'network_script':{'type':Sequelize[_0x6972('0x1')]},'request':{'type':Sequelize[_0x6972('0x1')]},'channel':{'type':Sequelize[_0x6972('0x1')]},'language':{'type':Sequelize[_0x6972('0x1')]},'type':{'type':Sequelize[_0x6972('0x1')]},'uniqueid':{'type':Sequelize['STRING']},'version':{'type':Sequelize[_0x6972('0x1')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'callingpres':{'type':Sequelize[_0x6972('0x1')]},'callingani2':{'type':Sequelize[_0x6972('0x1')]},'callington':{'type':Sequelize[_0x6972('0x1')]},'callingtns':{'type':Sequelize[_0x6972('0x1')]},'dnid':{'type':Sequelize[_0x6972('0x1')]},'rdnis':{'type':Sequelize[_0x6972('0x1')]},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x6972('0x1')]},'priority':{'type':Sequelize[_0x6972('0x1')]},'enhanced':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'threadid':{'type':Sequelize[_0x6972('0x1')]},'project_name':{'type':Sequelize[_0x6972('0x1')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x6972('0x2')]},'bot':{'type':Sequelize[_0x6972('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xc5b2=['sequelize','exports','STRING','DATE'];(function(_0x50f230,_0x56036d){var _0x45d4b9=function(_0x12f4b7){while(--_0x12f4b7){_0x50f230['push'](_0x50f230['shift']());}};_0x45d4b9(++_0x56036d);}(_0xc5b2,0x170));var _0x2c5b=function(_0x1a2859,_0x5b49b6){_0x1a2859=_0x1a2859-0x0;var _0x1702d9=_0xc5b2[_0x1a2859];return _0x1702d9;};'use strict';var Sequelize=require(_0x2c5b('0x0'));module[_0x2c5b('0x1')]={'network':{'type':Sequelize[_0x2c5b('0x2')]},'network_script':{'type':Sequelize[_0x2c5b('0x2')]},'request':{'type':Sequelize[_0x2c5b('0x2')]},'channel':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x2c5b('0x2')]},'type':{'type':Sequelize[_0x2c5b('0x2')]},'uniqueid':{'type':Sequelize[_0x2c5b('0x2')]},'version':{'type':Sequelize[_0x2c5b('0x2')]},'callerid':{'type':Sequelize[_0x2c5b('0x2')]},'calleridname':{'type':Sequelize[_0x2c5b('0x2')]},'callingpres':{'type':Sequelize['STRING']},'callingani2':{'type':Sequelize[_0x2c5b('0x2')]},'callington':{'type':Sequelize['STRING']},'callingtns':{'type':Sequelize[_0x2c5b('0x2')]},'dnid':{'type':Sequelize[_0x2c5b('0x2')]},'rdnis':{'type':Sequelize[_0x2c5b('0x2')]},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x2c5b('0x2')]},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize[_0x2c5b('0x2')]},'accountcode':{'type':Sequelize[_0x2c5b('0x2')]},'threadid':{'type':Sequelize[_0x2c5b('0x2')]},'project_name':{'type':Sequelize[_0x2c5b('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x2c5b('0x3')]},'bot':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 5df5cd6..9870344 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa08a=['update','then','sendStatus','error','stack','name','send','index','map','SquareReport','fieldName','type','key','model','query','keys','filters','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','rows','catch','show','params','rawAttributes','intersection','options','find','create','body','destroy','describe','eml-format','zip-dir','request-promise','moment','mustache','path','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','Content-Range','reject','save'];(function(_0x12309b,_0x59dd8c){var _0x482e4d=function(_0x308407){while(--_0x308407){_0x12309b['push'](_0x12309b['shift']());}};_0x482e4d(++_0x59dd8c);}(_0xa08a,0x1a0));var _0xaa08=function(_0x33ad1f,_0xfc2fc8){_0x33ad1f=_0x33ad1f-0x0;var _0x26ef22=_0xa08a[_0x33ad1f];return _0x26ef22;};'use strict';var emlformat=require(_0xaa08('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xaa08('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xaa08('0x2'));var moment=require(_0xaa08('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xaa08('0x4'));var util=require('util');var path=require(_0xaa08('0x5'));var sox=require('sox');var csv=require(_0xaa08('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xaa08('0x7'));var _=require(_0xaa08('0x8'));var squel=require(_0xaa08('0x9'));var crypto=require(_0xaa08('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xaa08('0xb'));var toCsv=require(_0xaa08('0x6'));var querystring=require(_0xaa08('0xc'));var Papa=require(_0xaa08('0xd'));var Redis=require(_0xaa08('0xe'));var authService=require(_0xaa08('0xf'));var qs=require(_0xaa08('0x10'));var as=require(_0xaa08('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xaa08('0x12'))(_0xaa08('0x13'));var utils=require(_0xaa08('0x14'));var config=require(_0xaa08('0x15'));var licenseUtil=require(_0xaa08('0x16'));var db=require(_0xaa08('0x17'))['db'];function respondWithStatusCode(_0x5a69ab,_0x5f49ae){_0x5f49ae=_0x5f49ae||0xcc;return function(_0x1d81ef){if(_0x1d81ef){return _0x5a69ab['sendStatus'](_0x5f49ae);}return _0x5a69ab[_0xaa08('0x18')](_0x5f49ae)[_0xaa08('0x19')]();};}function respondWithResult(_0x58b865,_0x401a73){_0x401a73=_0x401a73||0xc8;return function(_0x4854e6){if(_0x4854e6){return _0x58b865['status'](_0x401a73)[_0xaa08('0x1a')](_0x4854e6);}};}function respondWithFilteredResult(_0xfa36dc,_0x492fc1){return function(_0x26057b){if(_0x26057b){var _0x2b3c75=typeof _0x492fc1['offset']===_0xaa08('0x1b')&&typeof _0x492fc1[_0xaa08('0x1c')]===_0xaa08('0x1b');var _0x32791c=_0x26057b[_0xaa08('0x1d')];var _0x1f7908=_0x2b3c75?0x0:_0x492fc1[_0xaa08('0x1e')];var _0x1c2410=_0x2b3c75?_0x26057b[_0xaa08('0x1d')]:_0x492fc1[_0xaa08('0x1e')]+_0x492fc1[_0xaa08('0x1c')];var _0x2c569b;if(_0x1c2410>=_0x32791c){_0x1c2410=_0x32791c;_0x2c569b=0xc8;}else{_0x2c569b=0xce;}_0xfa36dc['status'](_0x2c569b);return _0xfa36dc['set'](_0xaa08('0x1f'),_0x1f7908+'-'+_0x1c2410+'/'+_0x32791c)[_0xaa08('0x1a')](_0x26057b);}return null;};}function patchUpdates(_0x5dd4cf){return function(_0x2f877a){try{jsonpatch['apply'](_0x2f877a,_0x5dd4cf,!![]);}catch(_0x3c7bca){return BPromise[_0xaa08('0x20')](_0x3c7bca);}return _0x2f877a[_0xaa08('0x21')]();};}function saveUpdates(_0x468c9c,_0x449754){return function(_0x5a70cf){if(_0x5a70cf){return _0x5a70cf[_0xaa08('0x22')](_0x468c9c)[_0xaa08('0x23')](function(_0xe7d28a){return _0xe7d28a;});}return null;};}function removeEntity(_0x591429,_0x435854){return function(_0x5de367){if(_0x5de367){return _0x5de367['destroy']()[_0xaa08('0x23')](function(){_0x591429[_0xaa08('0x18')](0xcc)[_0xaa08('0x19')]();});}};}function handleEntityNotFound(_0x305cee,_0x2b665a){return function(_0x52fce6){if(!_0x52fce6){_0x305cee[_0xaa08('0x24')](0x194);}return _0x52fce6;};}function handleError(_0xd25ccc,_0x1ab331){_0x1ab331=_0x1ab331||0x1f4;return function(_0x46c210){logger[_0xaa08('0x25')](_0x46c210[_0xaa08('0x26')]);if(_0x46c210[_0xaa08('0x27')]){delete _0x46c210[_0xaa08('0x27')];}_0xd25ccc[_0xaa08('0x18')](_0x1ab331)[_0xaa08('0x28')](_0x46c210);};}exports[_0xaa08('0x29')]=function(_0x31d170,_0x3276e3){var _0x4967fa={},_0x4347de={},_0x64ecb={'count':0x0,'rows':[]};var _0x5ba775=_[_0xaa08('0x2a')](db[_0xaa08('0x2b')]['rawAttributes'],function(_0x1c0156){return{'name':_0x1c0156[_0xaa08('0x2c')],'type':_0x1c0156[_0xaa08('0x2d')][_0xaa08('0x2e')]};});_0x4347de[_0xaa08('0x2f')]=_['map'](_0x5ba775,_0xaa08('0x27'));_0x4347de[_0xaa08('0x30')]=_[_0xaa08('0x31')](_0x31d170[_0xaa08('0x30')]);_0x4347de[_0xaa08('0x32')]=_['intersection'](_0x4347de[_0xaa08('0x2f')],_0x4347de[_0xaa08('0x30')]);_0x4967fa['attributes']=_['intersection'](_0x4347de[_0xaa08('0x2f')],qs['fields'](_0x31d170['query'][_0xaa08('0x33')]));_0x4967fa[_0xaa08('0x34')]=_0x4967fa['attributes'][_0xaa08('0x35')]?_0x4967fa['attributes']:_0x4347de[_0xaa08('0x2f')];if(!_0x31d170['query']['hasOwnProperty'](_0xaa08('0x36'))){_0x4967fa[_0xaa08('0x1c')]=qs['limit'](_0x31d170[_0xaa08('0x30')][_0xaa08('0x1c')]);_0x4967fa[_0xaa08('0x1e')]=qs[_0xaa08('0x1e')](_0x31d170[_0xaa08('0x30')][_0xaa08('0x1e')]);}_0x4967fa[_0xaa08('0x37')]=qs[_0xaa08('0x38')](_0x31d170[_0xaa08('0x30')]['sort']);_0x4967fa[_0xaa08('0x39')]=qs[_0xaa08('0x32')](_[_0xaa08('0x3a')](_0x31d170['query'],_0x4347de[_0xaa08('0x32')]),_0x5ba775);if(_0x31d170[_0xaa08('0x30')][_0xaa08('0x3b')]){_0x4967fa[_0xaa08('0x39')]=_[_0xaa08('0x3c')](_0x4967fa[_0xaa08('0x39')],{'$or':_[_0xaa08('0x2a')](_0x5ba775,function(_0xc61fac){if(_0xc61fac[_0xaa08('0x2d')]!==_0xaa08('0x3d')){var _0x390f82={};_0x390f82[_0xc61fac[_0xaa08('0x27')]]={'$like':'%'+_0x31d170[_0xaa08('0x30')][_0xaa08('0x3b')]+'%'};return _0x390f82;}})});}_0x4967fa=_[_0xaa08('0x3c')]({},_0x4967fa,_0x31d170['options']);var _0x5c91e2={'where':_0x4967fa[_0xaa08('0x39')]};return db[_0xaa08('0x2b')][_0xaa08('0x1d')](_0x5c91e2)[_0xaa08('0x23')](function(_0x319083){_0x64ecb[_0xaa08('0x1d')]=_0x319083;if(_0x31d170['query'][_0xaa08('0x3e')]){_0x4967fa['include']=[{'all':!![]}];}return db['SquareReport']['findAll'](_0x4967fa);})[_0xaa08('0x23')](function(_0x13b624){_0x64ecb[_0xaa08('0x3f')]=_0x13b624;return _0x64ecb;})[_0xaa08('0x23')](respondWithFilteredResult(_0x3276e3,_0x4967fa))[_0xaa08('0x40')](handleError(_0x3276e3,null));};exports[_0xaa08('0x41')]=function(_0x191571,_0x51659c){var _0x529e40={'raw':!![],'where':{'id':_0x191571[_0xaa08('0x42')]['id']}},_0x4eb922={};_0x4eb922[_0xaa08('0x2f')]=_[_0xaa08('0x31')](db[_0xaa08('0x2b')][_0xaa08('0x43')]);_0x4eb922['query']=_[_0xaa08('0x31')](_0x191571[_0xaa08('0x30')]);_0x4eb922['filters']=_[_0xaa08('0x44')](_0x4eb922[_0xaa08('0x2f')],_0x4eb922[_0xaa08('0x30')]);_0x529e40[_0xaa08('0x34')]=_[_0xaa08('0x44')](_0x4eb922[_0xaa08('0x2f')],qs['fields'](_0x191571['query'][_0xaa08('0x33')]));_0x529e40[_0xaa08('0x34')]=_0x529e40['attributes']['length']?_0x529e40[_0xaa08('0x34')]:_0x4eb922[_0xaa08('0x2f')];if(_0x191571['query'][_0xaa08('0x3e')]){_0x529e40['include']=[{'all':!![]}];}_0x529e40=_[_0xaa08('0x3c')]({},_0x529e40,_0x191571[_0xaa08('0x45')]);return db[_0xaa08('0x2b')][_0xaa08('0x46')](_0x529e40)[_0xaa08('0x23')](handleEntityNotFound(_0x51659c,null))['then'](respondWithResult(_0x51659c,null))[_0xaa08('0x40')](handleError(_0x51659c,null));};exports[_0xaa08('0x47')]=function(_0x2735f9,_0x25dad5){return db[_0xaa08('0x2b')][_0xaa08('0x47')](_0x2735f9['body'],{})['then'](respondWithResult(_0x25dad5,0xc9))[_0xaa08('0x40')](handleError(_0x25dad5,null));};exports[_0xaa08('0x22')]=function(_0x40170c,_0x38f001){if(_0x40170c['body']['id']){delete _0x40170c[_0xaa08('0x48')]['id'];}return db['SquareReport']['find']({'where':{'id':_0x40170c[_0xaa08('0x42')]['id']}})['then'](handleEntityNotFound(_0x38f001,null))[_0xaa08('0x23')](saveUpdates(_0x40170c[_0xaa08('0x48')],null))[_0xaa08('0x23')](respondWithResult(_0x38f001,null))[_0xaa08('0x40')](handleError(_0x38f001,null));};exports[_0xaa08('0x49')]=function(_0x2c0239,_0x42190b){return db['SquareReport']['find']({'where':{'id':_0x2c0239[_0xaa08('0x42')]['id']}})[_0xaa08('0x23')](handleEntityNotFound(_0x42190b,null))[_0xaa08('0x23')](removeEntity(_0x42190b,null))[_0xaa08('0x40')](handleError(_0x42190b,null));};exports[_0xaa08('0x4a')]=function(_0x3cbcbb,_0x32bea4){return db['SquareReport'][_0xaa08('0x4a')]()[_0xaa08('0x23')](respondWithResult(_0x32bea4,null))[_0xaa08('0x40')](handleError(_0x32bea4,null));};
\ No newline at end of file
+var _0x034c=['intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','catch','params','options','find','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','reject','save','then','destroy','stack','name','send','map','SquareReport','rawAttributes','type','model','query','keys','filters'];(function(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0x034c,0xa9));var _0xc034=function(_0x2d7654,_0x485742){_0x2d7654=_0x2d7654-0x0;var _0x13fa44=_0x034c[_0x2d7654];return _0x13fa44;};'use strict';var emlformat=require(_0xc034('0x0'));var rimraf=require(_0xc034('0x1'));var zipdir=require(_0xc034('0x2'));var jsonpatch=require(_0xc034('0x3'));var rp=require(_0xc034('0x4'));var moment=require(_0xc034('0x5'));var BPromise=require(_0xc034('0x6'));var Mustache=require('mustache');var util=require(_0xc034('0x7'));var path=require(_0xc034('0x8'));var sox=require(_0xc034('0x9'));var csv=require(_0xc034('0xa'));var ejs=require(_0xc034('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc034('0xc'));var squel=require(_0xc034('0xd'));var crypto=require(_0xc034('0xe'));var jsforce=require(_0xc034('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xc034('0xa'));var querystring=require(_0xc034('0x10'));var Papa=require(_0xc034('0x11'));var Redis=require('ioredis');var authService=require(_0xc034('0x12'));var qs=require(_0xc034('0x13'));var as=require(_0xc034('0x14'));var hardwareService=require(_0xc034('0x15'));var logger=require('../../config/logger')(_0xc034('0x16'));var utils=require(_0xc034('0x17'));var config=require(_0xc034('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xc034('0x19'))['db'];function respondWithStatusCode(_0xa7f737,_0x15053f){_0x15053f=_0x15053f||0xcc;return function(_0x5cc594){if(_0x5cc594){return _0xa7f737[_0xc034('0x1a')](_0x15053f);}return _0xa7f737['status'](_0x15053f)[_0xc034('0x1b')]();};}function respondWithResult(_0x58d7a9,_0x4afdb3){_0x4afdb3=_0x4afdb3||0xc8;return function(_0x3cdeed){if(_0x3cdeed){return _0x58d7a9[_0xc034('0x1c')](_0x4afdb3)[_0xc034('0x1d')](_0x3cdeed);}};}function respondWithFilteredResult(_0x33d019,_0x4e5db2){return function(_0x350a62){if(_0x350a62){var _0x4ec3c4=typeof _0x4e5db2[_0xc034('0x1e')]==='undefined'&&typeof _0x4e5db2[_0xc034('0x1f')]===_0xc034('0x20');var _0x531f94=_0x350a62[_0xc034('0x21')];var _0x5057a8=_0x4ec3c4?0x0:_0x4e5db2[_0xc034('0x1e')];var _0x717d33=_0x4ec3c4?_0x350a62[_0xc034('0x21')]:_0x4e5db2[_0xc034('0x1e')]+_0x4e5db2['limit'];var _0x3fda25;if(_0x717d33>=_0x531f94){_0x717d33=_0x531f94;_0x3fda25=0xc8;}else{_0x3fda25=0xce;}_0x33d019[_0xc034('0x1c')](_0x3fda25);return _0x33d019[_0xc034('0x22')]('Content-Range',_0x5057a8+'-'+_0x717d33+'/'+_0x531f94)[_0xc034('0x1d')](_0x350a62);}return null;};}function patchUpdates(_0x1cfbb1){return function(_0x55a860){try{jsonpatch['apply'](_0x55a860,_0x1cfbb1,!![]);}catch(_0x290557){return BPromise[_0xc034('0x23')](_0x290557);}return _0x55a860[_0xc034('0x24')]();};}function saveUpdates(_0x3a8f4b,_0x445e25){return function(_0x502371){if(_0x502371){return _0x502371['update'](_0x3a8f4b)[_0xc034('0x25')](function(_0x36f60b){return _0x36f60b;});}return null;};}function removeEntity(_0x5302b3,_0x49d330){return function(_0x1374d1){if(_0x1374d1){return _0x1374d1[_0xc034('0x26')]()[_0xc034('0x25')](function(){_0x5302b3[_0xc034('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2a35db,_0x3553ba){return function(_0x964379){if(!_0x964379){_0x2a35db[_0xc034('0x1a')](0x194);}return _0x964379;};}function handleError(_0x17eaa0,_0x1f1fec){_0x1f1fec=_0x1f1fec||0x1f4;return function(_0x1f9fd4){logger['error'](_0x1f9fd4[_0xc034('0x27')]);if(_0x1f9fd4['name']){delete _0x1f9fd4[_0xc034('0x28')];}_0x17eaa0['status'](_0x1f1fec)[_0xc034('0x29')](_0x1f9fd4);};}exports['index']=function(_0x5c4129,_0x2569c7){var _0x53f1b0={},_0x299639={},_0x2f599e={'count':0x0,'rows':[]};var _0x25397d=_[_0xc034('0x2a')](db[_0xc034('0x2b')][_0xc034('0x2c')],function(_0x480ce9){return{'name':_0x480ce9['fieldName'],'type':_0x480ce9[_0xc034('0x2d')]['key']};});_0x299639[_0xc034('0x2e')]=_[_0xc034('0x2a')](_0x25397d,_0xc034('0x28'));_0x299639[_0xc034('0x2f')]=_[_0xc034('0x30')](_0x5c4129[_0xc034('0x2f')]);_0x299639[_0xc034('0x31')]=_[_0xc034('0x32')](_0x299639['model'],_0x299639[_0xc034('0x2f')]);_0x53f1b0[_0xc034('0x33')]=_[_0xc034('0x32')](_0x299639[_0xc034('0x2e')],qs[_0xc034('0x34')](_0x5c4129[_0xc034('0x2f')]['fields']));_0x53f1b0[_0xc034('0x33')]=_0x53f1b0[_0xc034('0x33')][_0xc034('0x35')]?_0x53f1b0[_0xc034('0x33')]:_0x299639[_0xc034('0x2e')];if(!_0x5c4129[_0xc034('0x2f')][_0xc034('0x36')]('nolimit')){_0x53f1b0['limit']=qs['limit'](_0x5c4129[_0xc034('0x2f')]['limit']);_0x53f1b0['offset']=qs[_0xc034('0x1e')](_0x5c4129[_0xc034('0x2f')][_0xc034('0x1e')]);}_0x53f1b0[_0xc034('0x37')]=qs[_0xc034('0x38')](_0x5c4129[_0xc034('0x2f')]['sort']);_0x53f1b0['where']=qs[_0xc034('0x31')](_[_0xc034('0x39')](_0x5c4129[_0xc034('0x2f')],_0x299639[_0xc034('0x31')]),_0x25397d);if(_0x5c4129[_0xc034('0x2f')][_0xc034('0x3a')]){_0x53f1b0[_0xc034('0x3b')]=_[_0xc034('0x3c')](_0x53f1b0[_0xc034('0x3b')],{'$or':_['map'](_0x25397d,function(_0x101bab){if(_0x101bab['type']!==_0xc034('0x3d')){var _0x4a0229={};_0x4a0229[_0x101bab['name']]={'$like':'%'+_0x5c4129[_0xc034('0x2f')][_0xc034('0x3a')]+'%'};return _0x4a0229;}})});}_0x53f1b0=_[_0xc034('0x3c')]({},_0x53f1b0,_0x5c4129['options']);var _0x15b4ad={'where':_0x53f1b0[_0xc034('0x3b')]};return db[_0xc034('0x2b')][_0xc034('0x21')](_0x15b4ad)[_0xc034('0x25')](function(_0x43a080){_0x2f599e['count']=_0x43a080;if(_0x5c4129['query'][_0xc034('0x3e')]){_0x53f1b0[_0xc034('0x3f')]=[{'all':!![]}];}return db[_0xc034('0x2b')][_0xc034('0x40')](_0x53f1b0);})[_0xc034('0x25')](function(_0x4e0d3f){_0x2f599e['rows']=_0x4e0d3f;return _0x2f599e;})['then'](respondWithFilteredResult(_0x2569c7,_0x53f1b0))[_0xc034('0x41')](handleError(_0x2569c7,null));};exports['show']=function(_0x4597ed,_0x537ec0){var _0x3ce722={'raw':!![],'where':{'id':_0x4597ed[_0xc034('0x42')]['id']}},_0x334bac={};_0x334bac['model']=_[_0xc034('0x30')](db[_0xc034('0x2b')][_0xc034('0x2c')]);_0x334bac['query']=_[_0xc034('0x30')](_0x4597ed['query']);_0x334bac[_0xc034('0x31')]=_['intersection'](_0x334bac[_0xc034('0x2e')],_0x334bac[_0xc034('0x2f')]);_0x3ce722[_0xc034('0x33')]=_[_0xc034('0x32')](_0x334bac[_0xc034('0x2e')],qs[_0xc034('0x34')](_0x4597ed['query'][_0xc034('0x34')]));_0x3ce722['attributes']=_0x3ce722[_0xc034('0x33')]['length']?_0x3ce722[_0xc034('0x33')]:_0x334bac[_0xc034('0x2e')];if(_0x4597ed['query'][_0xc034('0x3e')]){_0x3ce722['include']=[{'all':!![]}];}_0x3ce722=_[_0xc034('0x3c')]({},_0x3ce722,_0x4597ed[_0xc034('0x43')]);return db[_0xc034('0x2b')][_0xc034('0x44')](_0x3ce722)[_0xc034('0x25')](handleEntityNotFound(_0x537ec0,null))[_0xc034('0x25')](respondWithResult(_0x537ec0,null))['catch'](handleError(_0x537ec0,null));};exports['create']=function(_0x15de61,_0x1061a3){return db[_0xc034('0x2b')][_0xc034('0x45')](_0x15de61[_0xc034('0x46')],{})['then'](respondWithResult(_0x1061a3,0xc9))[_0xc034('0x41')](handleError(_0x1061a3,null));};exports[_0xc034('0x47')]=function(_0x18ce03,_0x162f43){if(_0x18ce03[_0xc034('0x46')]['id']){delete _0x18ce03[_0xc034('0x46')]['id'];}return db[_0xc034('0x2b')][_0xc034('0x44')]({'where':{'id':_0x18ce03[_0xc034('0x42')]['id']}})[_0xc034('0x25')](handleEntityNotFound(_0x162f43,null))[_0xc034('0x25')](saveUpdates(_0x18ce03[_0xc034('0x46')],null))[_0xc034('0x25')](respondWithResult(_0x162f43,null))['catch'](handleError(_0x162f43,null));};exports[_0xc034('0x26')]=function(_0x2b0e42,_0x27d6fd){return db['SquareReport'][_0xc034('0x44')]({'where':{'id':_0x2b0e42[_0xc034('0x42')]['id']}})[_0xc034('0x25')](handleEntityNotFound(_0x27d6fd,null))[_0xc034('0x25')](removeEntity(_0x27d6fd,null))['catch'](handleError(_0x27d6fd,null));};exports['describe']=function(_0xb0531b,_0x3f024f){return db[_0xc034('0x2b')][_0xc034('0x48')]()[_0xc034('0x25')](respondWithResult(_0x3f024f,null))[_0xc034('0x41')](handleError(_0x3f024f,null));};
\ No newline at end of file
index 70a0497..17039a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3b7=['moment','request-promise','path','rimraf','../../config/environment','./squareReport.attributes','exports','define','SquareReport','uid_pname','uniqueid','project_name','leaveAt','lodash','api'];(function(_0x2b57cc,_0x556a66){var _0x21e589=function(_0x202ff7){while(--_0x202ff7){_0x2b57cc['push'](_0x2b57cc['shift']());}};_0x21e589(++_0x556a66);}(_0xa3b7,0x175));var _0x7a3b=function(_0x438fe1,_0x3308d5){_0x438fe1=_0x438fe1-0x0;var _0x3c8e1b=_0xa3b7[_0x438fe1];return _0x3c8e1b;};'use strict';var _=require(_0x7a3b('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x7a3b('0x1'));var moment=require(_0x7a3b('0x2'));var BPromise=require('bluebird');var rp=require(_0x7a3b('0x3'));var fs=require('fs');var path=require(_0x7a3b('0x4'));var rimraf=require(_0x7a3b('0x5'));var config=require(_0x7a3b('0x6'));var attributes=require(_0x7a3b('0x7'));module[_0x7a3b('0x8')]=function(_0xf9ab16,_0x3ac8ea){return _0xf9ab16[_0x7a3b('0x9')](_0x7a3b('0xa'),attributes,{'tableName':'report_square','paranoid':![],'indexes':[{'name':_0x7a3b('0xb'),'fields':[_0x7a3b('0xc'),_0x7a3b('0xd')]},{'name':_0x7a3b('0xe'),'fields':[_0x7a3b('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0f10=['SquareReport','uid_pname','project_name','leaveAt','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareReport.attributes','define'];(function(_0x3e9aca,_0x2ce960){var _0x182544=function(_0x4aaa99){while(--_0x4aaa99){_0x3e9aca['push'](_0x3e9aca['shift']());}};_0x182544(++_0x2ce960);}(_0x0f10,0x1b7));var _0x00f1=function(_0x1ac792,_0x4cdb6b){_0x1ac792=_0x1ac792-0x0;var _0xfe92a9=_0x0f10[_0x1ac792];return _0xfe92a9;};'use strict';var _=require(_0x00f1('0x0'));var util=require('util');var logger=require(_0x00f1('0x1'))(_0x00f1('0x2'));var moment=require(_0x00f1('0x3'));var BPromise=require(_0x00f1('0x4'));var rp=require(_0x00f1('0x5'));var fs=require('fs');var path=require(_0x00f1('0x6'));var rimraf=require(_0x00f1('0x7'));var config=require(_0x00f1('0x8'));var attributes=require(_0x00f1('0x9'));module['exports']=function(_0x58c452,_0x1ecc10){return _0x58c452[_0x00f1('0xa')](_0x00f1('0xb'),attributes,{'tableName':'report_square','paranoid':![],'indexes':[{'name':_0x00f1('0xc'),'fields':['uniqueid',_0x00f1('0xd')]},{'name':'leaveAt','fields':[_0x00f1('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 141650b..b185990 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa77e=['lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','http','then','info','request\x20sent','debug','stringify','error','code','SquareReport,\x20%s,\x20%s','message','result','catch','CreateSquareReport','SquareReport','create','body','raw','UpdateSquareReport','update','options','attributes','limit'];(function(_0x485ca4,_0x11635c){var _0x4b447a=function(_0x449d4a){while(--_0x449d4a){_0x485ca4['push'](_0x485ca4['shift']());}};_0x4b447a(++_0x11635c);}(_0xa77e,0x174));var _0xea77=function(_0x29009d,_0x55016a){_0x29009d=_0x29009d-0x0;var _0x4c254d=_0xa77e[_0x29009d];return _0x4c254d;};'use strict';var _=require(_0xea77('0x0'));var util=require(_0xea77('0x1'));var moment=require('moment');var BPromise=require(_0xea77('0x2'));var rs=require(_0xea77('0x3'));var fs=require('fs');var Redis=require(_0xea77('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xea77('0x5'));var logger=require(_0xea77('0x6'))(_0xea77('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xea77('0x8')][_0xea77('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1d09f9,_0x6803a3,_0x4642ee){return new BPromise(function(_0x410c14,_0x54c7fa){return client['request'](_0x1d09f9,_0x4642ee)[_0xea77('0xa')](function(_0x335105){logger[_0xea77('0xb')]('SquareReport,\x20%s,\x20%s',_0x6803a3,_0xea77('0xc'));logger[_0xea77('0xd')]('SquareReport,\x20%s,\x20%s,\x20%s',_0x6803a3,_0xea77('0xc'),JSON[_0xea77('0xe')](_0x335105));if(_0x335105['error']){if(_0x335105[_0xea77('0xf')][_0xea77('0x10')]===0x1f4){logger[_0xea77('0xf')](_0xea77('0x11'),_0x6803a3,_0x335105[_0xea77('0xf')][_0xea77('0x12')]);return _0x54c7fa(_0x335105['error']['message']);}logger['error'](_0xea77('0x11'),_0x6803a3,_0x335105[_0xea77('0xf')][_0xea77('0x12')]);return _0x410c14(_0x335105[_0xea77('0xf')][_0xea77('0x12')]);}else{logger[_0xea77('0xb')](_0xea77('0x11'),_0x6803a3,_0xea77('0xc'));_0x410c14(_0x335105[_0xea77('0x13')]['message']);}})[_0xea77('0x14')](function(_0x2b19d2){logger[_0xea77('0xf')](_0xea77('0x11'),_0x6803a3,_0x2b19d2);_0x54c7fa(_0x2b19d2);});});}exports[_0xea77('0x15')]=function(_0x5a8b73){var _0x5b6c82=this;return new Promise(function(_0x358430,_0x287922){return db[_0xea77('0x16')][_0xea77('0x17')](_0x5a8b73[_0xea77('0x18')],{'raw':_0x5a8b73['options']?_0x5a8b73['options'][_0xea77('0x19')]===undefined?!![]:![]:!![]})[_0xea77('0xa')](function(_0x3f34a8){logger[_0xea77('0xb')](_0xea77('0x15'),_0x5a8b73);logger[_0xea77('0xd')](_0xea77('0x15'),_0x5a8b73,JSON[_0xea77('0xe')](_0x3f34a8));_0x358430(_0x3f34a8);})['catch'](function(_0x41084a){logger[_0xea77('0xf')]('CreateSquareReport',_0x41084a[_0xea77('0x12')],_0x5a8b73);_0x287922(_0x5b6c82['error'](0x1f4,_0x41084a[_0xea77('0x12')]));});});};exports[_0xea77('0x1a')]=function(_0x2c5808){var _0x29b915=this;return new Promise(function(_0x53becb,_0x1958b4){return db[_0xea77('0x16')][_0xea77('0x1b')](_0x2c5808[_0xea77('0x18')],{'raw':_0x2c5808[_0xea77('0x1c')]?_0x2c5808[_0xea77('0x1c')][_0xea77('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2c5808[_0xea77('0x1c')]?_0x2c5808[_0xea77('0x1c')]['where']||null:null,'attributes':_0x2c5808[_0xea77('0x1c')]?_0x2c5808['options'][_0xea77('0x1d')]||null:null,'limit':_0x2c5808[_0xea77('0x1c')]?_0x2c5808['options'][_0xea77('0x1e')]||null:null})[_0xea77('0xa')](function(_0x19b978){logger['info']('UpdateSquareReport',_0x2c5808);logger['debug'](_0xea77('0x1a'),_0x2c5808,JSON[_0xea77('0xe')](_0x19b978));_0x53becb(_0x19b978);})[_0xea77('0x14')](function(_0x9dbd5e){logger[_0xea77('0xf')]('UpdateSquareReport',_0x9dbd5e[_0xea77('0x12')],_0x2c5808);_0x1958b4(_0x29b915[_0xea77('0xf')](0x1f4,_0x9dbd5e[_0xea77('0x12')]));});});};
\ No newline at end of file
+var _0x0963=['SquareReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','CreateSquareReport','create','body','options','raw','stringify','UpdateSquareReport','update','where','limit','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then'];(function(_0x2d34d6,_0x397ff9){var _0x1d3d12=function(_0x558800){while(--_0x558800){_0x2d34d6['push'](_0x2d34d6['shift']());}};_0x1d3d12(++_0x397ff9);}(_0x0963,0xe4));var _0x3096=function(_0xcfeda9,_0xd418ae){_0xcfeda9=_0xcfeda9-0x0;var _0x4826c7=_0x0963[_0xcfeda9];return _0x4826c7;};'use strict';var _=require('lodash');var util=require(_0x3096('0x0'));var moment=require(_0x3096('0x1'));var BPromise=require('bluebird');var rs=require(_0x3096('0x2'));var fs=require('fs');var Redis=require(_0x3096('0x3'));var db=require(_0x3096('0x4'))['db'];var utils=require(_0x3096('0x5'));var logger=require(_0x3096('0x6'))('rpc');var config=require(_0x3096('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x3096('0x8')][_0x3096('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x43e562,_0x5041fa,_0x5179a9){return new BPromise(function(_0x151808,_0x483c26){return client[_0x3096('0xa')](_0x43e562,_0x5179a9)[_0x3096('0xb')](function(_0x3b673c){logger['info'](_0x3096('0xc'),_0x5041fa,_0x3096('0xd'));logger[_0x3096('0xe')]('SquareReport,\x20%s,\x20%s,\x20%s',_0x5041fa,_0x3096('0xd'),JSON['stringify'](_0x3b673c));if(_0x3b673c[_0x3096('0xf')]){if(_0x3b673c[_0x3096('0xf')][_0x3096('0x10')]===0x1f4){logger[_0x3096('0xf')]('SquareReport,\x20%s,\x20%s',_0x5041fa,_0x3b673c['error'][_0x3096('0x11')]);return _0x483c26(_0x3b673c[_0x3096('0xf')][_0x3096('0x11')]);}logger[_0x3096('0xf')](_0x3096('0xc'),_0x5041fa,_0x3b673c['error']['message']);return _0x151808(_0x3b673c[_0x3096('0xf')][_0x3096('0x11')]);}else{logger[_0x3096('0x12')](_0x3096('0xc'),_0x5041fa,_0x3096('0xd'));_0x151808(_0x3b673c['result']['message']);}})[_0x3096('0x13')](function(_0x43f616){logger['error']('SquareReport,\x20%s,\x20%s',_0x5041fa,_0x43f616);_0x483c26(_0x43f616);});});}exports[_0x3096('0x14')]=function(_0x470309){var _0x1542e2=this;return new Promise(function(_0x6c8077,_0x54e83d){return db['SquareReport'][_0x3096('0x15')](_0x470309[_0x3096('0x16')],{'raw':_0x470309[_0x3096('0x17')]?_0x470309[_0x3096('0x17')][_0x3096('0x18')]===undefined?!![]:![]:!![]})[_0x3096('0xb')](function(_0x35b0d9){logger['info']('CreateSquareReport',_0x470309);logger['debug'](_0x3096('0x14'),_0x470309,JSON[_0x3096('0x19')](_0x35b0d9));_0x6c8077(_0x35b0d9);})[_0x3096('0x13')](function(_0x547d92){logger[_0x3096('0xf')]('CreateSquareReport',_0x547d92[_0x3096('0x11')],_0x470309);_0x54e83d(_0x1542e2[_0x3096('0xf')](0x1f4,_0x547d92[_0x3096('0x11')]));});});};exports[_0x3096('0x1a')]=function(_0x4cf8e4){var _0x417e10=this;return new Promise(function(_0x23d5c2,_0x390da9){return db['SquareReport'][_0x3096('0x1b')](_0x4cf8e4[_0x3096('0x16')],{'raw':_0x4cf8e4[_0x3096('0x17')]?_0x4cf8e4[_0x3096('0x17')][_0x3096('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4cf8e4[_0x3096('0x17')]?_0x4cf8e4[_0x3096('0x17')][_0x3096('0x1c')]||null:null,'attributes':_0x4cf8e4[_0x3096('0x17')]?_0x4cf8e4[_0x3096('0x17')]['attributes']||null:null,'limit':_0x4cf8e4[_0x3096('0x17')]?_0x4cf8e4[_0x3096('0x17')][_0x3096('0x1d')]||null:null})[_0x3096('0xb')](function(_0x4be1c3){logger[_0x3096('0x12')](_0x3096('0x1a'),_0x4cf8e4);logger[_0x3096('0xe')](_0x3096('0x1a'),_0x4cf8e4,JSON['stringify'](_0x4be1c3));_0x23d5c2(_0x4be1c3);})[_0x3096('0x13')](function(_0x3db151){logger['error'](_0x3096('0x1a'),_0x3db151[_0x3096('0x11')],_0x4cf8e4);_0x390da9(_0x417e10[_0x3096('0xf')](0x1f4,_0x3db151[_0x3096('0x11')]));});});};
\ No newline at end of file
index 2d312be..6a8b0a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd970=['Router','fs-extra','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','update','delete','exports','multer','util','path','connect-timeout','express'];(function(_0x344f62,_0x4bd138){var _0x191372=function(_0xcc8a0d){while(--_0xcc8a0d){_0x344f62['push'](_0x344f62['shift']());}};_0x191372(++_0x4bd138);}(_0xd970,0xd7));var _0x0d97=function(_0x323d8f,_0x23fc93){_0x323d8f=_0x323d8f-0x0;var _0xfa0a61=_0xd970[_0x323d8f];return _0xfa0a61;};'use strict';var multer=require(_0x0d97('0x0'));var util=require(_0x0d97('0x1'));var path=require(_0x0d97('0x2'));var timeout=require(_0x0d97('0x3'));var express=require(_0x0d97('0x4'));var router=express[_0x0d97('0x5')]();var fs_extra=require(_0x0d97('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x0d97('0x7'));var config=require(_0x0d97('0x8'));var controller=require(_0x0d97('0x9'));router[_0x0d97('0xa')]('/',auth[_0x0d97('0xb')](),controller['index']);router[_0x0d97('0xa')](_0x0d97('0xc'),auth[_0x0d97('0xb')](),controller[_0x0d97('0xd')]);router[_0x0d97('0xa')](_0x0d97('0xe'),auth[_0x0d97('0xb')](),controller[_0x0d97('0xf')]);router[_0x0d97('0x10')]('/',auth[_0x0d97('0xb')](),controller[_0x0d97('0x11')]);router[_0x0d97('0x12')](_0x0d97('0xe'),auth['isAuthenticated'](),controller[_0x0d97('0x13')]);router[_0x0d97('0x14')]('/:id',auth[_0x0d97('0xb')](),controller['destroy']);module[_0x0d97('0x15')]=router;
\ No newline at end of file
+var _0x241b=['exports','util','path','connect-timeout','express','Router','../../components/auth/service','./squareReportDetail.controller','isAuthenticated','index','get','/:id','show','post','update','destroy'];(function(_0x2dab23,_0x11db5f){var _0x509868=function(_0x3d477f){while(--_0x3d477f){_0x2dab23['push'](_0x2dab23['shift']());}};_0x509868(++_0x11db5f);}(_0x241b,0x1c1));var _0xb241=function(_0x570ef3,_0xde14c8){_0x570ef3=_0x570ef3-0x0;var _0x26ea61=_0x241b[_0x570ef3];return _0x26ea61;};'use strict';var multer=require('multer');var util=require(_0xb241('0x0'));var path=require(_0xb241('0x1'));var timeout=require(_0xb241('0x2'));var express=require(_0xb241('0x3'));var router=express[_0xb241('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xb241('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xb241('0x6'));router['get']('/',auth[_0xb241('0x7')](),controller[_0xb241('0x8')]);router[_0xb241('0x9')]('/describe',auth[_0xb241('0x7')](),controller['describe']);router['get'](_0xb241('0xa'),auth[_0xb241('0x7')](),controller[_0xb241('0xb')]);router[_0xb241('0xc')]('/',auth[_0xb241('0x7')](),controller['create']);router['put'](_0xb241('0xa'),auth[_0xb241('0x7')](),controller[_0xb241('0xd')]);router['delete'](_0xb241('0xa'),auth['isAuthenticated'](),controller[_0xb241('0xe')]);module[_0xb241('0xf')]=router;
\ No newline at end of file
index 2f9d7f7..e4e8190 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3093=['sequelize','exports','STRING','TEXT'];(function(_0x5d806a,_0xff0045){var _0x45e601=function(_0x149231){while(--_0x149231){_0x5d806a['push'](_0x5d806a['shift']());}};_0x45e601(++_0xff0045);}(_0x3093,0x1c0));var _0x3309=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0x3093[_0x1cfa0d];return _0xe33279;};'use strict';var Sequelize=require(_0x3309('0x0'));module[_0x3309('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'node':{'type':Sequelize[_0x3309('0x2')]},'application':{'type':Sequelize[_0x3309('0x2')]},'data':{'type':Sequelize[_0x3309('0x3')]},'project_name':{'type':Sequelize[_0x3309('0x2')]},'callerid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xbbde=['exports','STRING','TEXT','sequelize'];(function(_0x535956,_0x411673){var _0x5b21ab=function(_0x428d54){while(--_0x428d54){_0x535956['push'](_0x535956['shift']());}};_0x5b21ab(++_0x411673);}(_0xbbde,0x107));var _0xebbd=function(_0x510c60,_0x50247e){_0x510c60=_0x510c60-0x0;var _0x49c4aa=_0xbbde[_0x510c60];return _0x49c4aa;};'use strict';var Sequelize=require(_0xebbd('0x0'));module[_0xebbd('0x1')]={'uniqueid':{'type':Sequelize[_0xebbd('0x2')]},'node':{'type':Sequelize[_0xebbd('0x2')]},'application':{'type':Sequelize[_0xebbd('0x2')]},'data':{'type':Sequelize[_0xebbd('0x3')]},'project_name':{'type':Sequelize[_0xebbd('0x2')]},'callerid':{'type':Sequelize[_0xebbd('0x2')]}};
\ No newline at end of file
index 745ff42..8e0f050 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05e1=['ejs','lodash','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','then','sendStatus','error','stack','name','index','map','SquareDetailsReport','rawAttributes','type','key','model','query','keys','attributes','intersection','length','hasOwnProperty','nolimit','sort','where','filters','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','fields','options','create','body','params','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox'];(function(_0x136ffb,_0xa2091a){var _0x37a85e=function(_0x133b84){while(--_0x133b84){_0x136ffb['push'](_0x136ffb['shift']());}};_0x37a85e(++_0xa2091a);}(_0x05e1,0x1d3));var _0x105e=function(_0x592ef3,_0x74ccac){_0x592ef3=_0x592ef3-0x0;var _0x3404d5=_0x05e1[_0x592ef3];return _0x3404d5;};'use strict';var emlformat=require(_0x105e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x105e('0x1'));var jsonpatch=require(_0x105e('0x2'));var rp=require(_0x105e('0x3'));var moment=require('moment');var BPromise=require(_0x105e('0x4'));var Mustache=require(_0x105e('0x5'));var util=require(_0x105e('0x6'));var path=require(_0x105e('0x7'));var sox=require(_0x105e('0x8'));var csv=require('to-csv');var ejs=require(_0x105e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x105e('0xa'));var squel=require('squel');var crypto=require(_0x105e('0xb'));var jsforce=require(_0x105e('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x105e('0xd'));var querystring=require(_0x105e('0xe'));var Papa=require(_0x105e('0xf'));var Redis=require(_0x105e('0x10'));var authService=require(_0x105e('0x11'));var qs=require(_0x105e('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x105e('0x13'));var logger=require('../../config/logger')(_0x105e('0x14'));var utils=require('../../config/utils');var config=require(_0x105e('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x105e('0x16'))['db'];function respondWithStatusCode(_0x597aa1,_0x3d9736){_0x3d9736=_0x3d9736||0xcc;return function(_0x53c391){if(_0x53c391){return _0x597aa1['sendStatus'](_0x3d9736);}return _0x597aa1[_0x105e('0x17')](_0x3d9736)[_0x105e('0x18')]();};}function respondWithResult(_0x47b80c,_0x4e8226){_0x4e8226=_0x4e8226||0xc8;return function(_0x3b4dfc){if(_0x3b4dfc){return _0x47b80c[_0x105e('0x17')](_0x4e8226)[_0x105e('0x19')](_0x3b4dfc);}};}function respondWithFilteredResult(_0x3d3889,_0x283121){return function(_0x2ce37c){if(_0x2ce37c){var _0x4db9e7=typeof _0x283121[_0x105e('0x1a')]===_0x105e('0x1b')&&typeof _0x283121['limit']==='undefined';var _0x1c0dce=_0x2ce37c[_0x105e('0x1c')];var _0xf49c3f=_0x4db9e7?0x0:_0x283121[_0x105e('0x1a')];var _0x5bce69=_0x4db9e7?_0x2ce37c[_0x105e('0x1c')]:_0x283121['offset']+_0x283121[_0x105e('0x1d')];var _0x2cdb5f;if(_0x5bce69>=_0x1c0dce){_0x5bce69=_0x1c0dce;_0x2cdb5f=0xc8;}else{_0x2cdb5f=0xce;}_0x3d3889[_0x105e('0x17')](_0x2cdb5f);return _0x3d3889[_0x105e('0x1e')](_0x105e('0x1f'),_0xf49c3f+'-'+_0x5bce69+'/'+_0x1c0dce)[_0x105e('0x19')](_0x2ce37c);}return null;};}function patchUpdates(_0x2b8c5b){return function(_0x47baa2){try{jsonpatch['apply'](_0x47baa2,_0x2b8c5b,!![]);}catch(_0x53cbd0){return BPromise['reject'](_0x53cbd0);}return _0x47baa2['save']();};}function saveUpdates(_0x533f04,_0x3b54a3){return function(_0x2e00de){if(_0x2e00de){return _0x2e00de['update'](_0x533f04)[_0x105e('0x20')](function(_0x3cd14a){return _0x3cd14a;});}return null;};}function removeEntity(_0x40855a,_0x1b8a92){return function(_0x38f24e){if(_0x38f24e){return _0x38f24e['destroy']()[_0x105e('0x20')](function(){_0x40855a[_0x105e('0x17')](0xcc)[_0x105e('0x18')]();});}};}function handleEntityNotFound(_0x217191,_0x1aa3df){return function(_0x31eebb){if(!_0x31eebb){_0x217191[_0x105e('0x21')](0x194);}return _0x31eebb;};}function handleError(_0x4f014b,_0x468acc){_0x468acc=_0x468acc||0x1f4;return function(_0x12ee60){logger[_0x105e('0x22')](_0x12ee60[_0x105e('0x23')]);if(_0x12ee60[_0x105e('0x24')]){delete _0x12ee60['name'];}_0x4f014b[_0x105e('0x17')](_0x468acc)['send'](_0x12ee60);};}exports[_0x105e('0x25')]=function(_0x18adf5,_0x5e8098){var _0x22c189={},_0x532488={},_0xc1d166={'count':0x0,'rows':[]};var _0x4199e7=_[_0x105e('0x26')](db[_0x105e('0x27')][_0x105e('0x28')],function(_0x1287a1){return{'name':_0x1287a1['fieldName'],'type':_0x1287a1[_0x105e('0x29')][_0x105e('0x2a')]};});_0x532488[_0x105e('0x2b')]=_[_0x105e('0x26')](_0x4199e7,_0x105e('0x24'));_0x532488[_0x105e('0x2c')]=_[_0x105e('0x2d')](_0x18adf5[_0x105e('0x2c')]);_0x532488['filters']=_['intersection'](_0x532488[_0x105e('0x2b')],_0x532488[_0x105e('0x2c')]);_0x22c189[_0x105e('0x2e')]=_[_0x105e('0x2f')](_0x532488[_0x105e('0x2b')],qs['fields'](_0x18adf5[_0x105e('0x2c')]['fields']));_0x22c189[_0x105e('0x2e')]=_0x22c189['attributes'][_0x105e('0x30')]?_0x22c189[_0x105e('0x2e')]:_0x532488[_0x105e('0x2b')];if(!_0x18adf5[_0x105e('0x2c')][_0x105e('0x31')](_0x105e('0x32'))){_0x22c189['limit']=qs[_0x105e('0x1d')](_0x18adf5['query']['limit']);_0x22c189[_0x105e('0x1a')]=qs[_0x105e('0x1a')](_0x18adf5[_0x105e('0x2c')][_0x105e('0x1a')]);}_0x22c189['order']=qs[_0x105e('0x33')](_0x18adf5[_0x105e('0x2c')][_0x105e('0x33')]);_0x22c189[_0x105e('0x34')]=qs[_0x105e('0x35')](_['pick'](_0x18adf5[_0x105e('0x2c')],_0x532488[_0x105e('0x35')]),_0x4199e7);if(_0x18adf5[_0x105e('0x2c')][_0x105e('0x36')]){_0x22c189['where']=_[_0x105e('0x37')](_0x22c189[_0x105e('0x34')],{'$or':_['map'](_0x4199e7,function(_0x1d517a){if(_0x1d517a[_0x105e('0x29')]!==_0x105e('0x38')){var _0x285a43={};_0x285a43[_0x1d517a[_0x105e('0x24')]]={'$like':'%'+_0x18adf5['query'][_0x105e('0x36')]+'%'};return _0x285a43;}})});}_0x22c189=_[_0x105e('0x37')]({},_0x22c189,_0x18adf5['options']);var _0x5648a7={'where':_0x22c189[_0x105e('0x34')]};return db['SquareDetailsReport'][_0x105e('0x1c')](_0x5648a7)[_0x105e('0x20')](function(_0x9d0586){_0xc1d166[_0x105e('0x1c')]=_0x9d0586;if(_0x18adf5['query'][_0x105e('0x39')]){_0x22c189[_0x105e('0x3a')]=[{'all':!![]}];}return db[_0x105e('0x27')][_0x105e('0x3b')](_0x22c189);})['then'](function(_0x1dc5cb){_0xc1d166[_0x105e('0x3c')]=_0x1dc5cb;return _0xc1d166;})[_0x105e('0x20')](respondWithFilteredResult(_0x5e8098,_0x22c189))[_0x105e('0x3d')](handleError(_0x5e8098,null));};exports['show']=function(_0x3176c6,_0x2a1324){var _0x15eb20={'raw':!![],'where':{'id':_0x3176c6['params']['id']}},_0x31aa54={};_0x31aa54[_0x105e('0x2b')]=_[_0x105e('0x2d')](db[_0x105e('0x27')][_0x105e('0x28')]);_0x31aa54[_0x105e('0x2c')]=_[_0x105e('0x2d')](_0x3176c6[_0x105e('0x2c')]);_0x31aa54['filters']=_[_0x105e('0x2f')](_0x31aa54[_0x105e('0x2b')],_0x31aa54[_0x105e('0x2c')]);_0x15eb20['attributes']=_[_0x105e('0x2f')](_0x31aa54[_0x105e('0x2b')],qs[_0x105e('0x3e')](_0x3176c6[_0x105e('0x2c')][_0x105e('0x3e')]));_0x15eb20[_0x105e('0x2e')]=_0x15eb20[_0x105e('0x2e')]['length']?_0x15eb20[_0x105e('0x2e')]:_0x31aa54[_0x105e('0x2b')];if(_0x3176c6[_0x105e('0x2c')][_0x105e('0x39')]){_0x15eb20[_0x105e('0x3a')]=[{'all':!![]}];}_0x15eb20=_['merge']({},_0x15eb20,_0x3176c6[_0x105e('0x3f')]);return db[_0x105e('0x27')]['find'](_0x15eb20)[_0x105e('0x20')](handleEntityNotFound(_0x2a1324,null))['then'](respondWithResult(_0x2a1324,null))[_0x105e('0x3d')](handleError(_0x2a1324,null));};exports[_0x105e('0x40')]=function(_0x33ee53,_0x50fd47){return db[_0x105e('0x27')][_0x105e('0x40')](_0x33ee53['body'],{})[_0x105e('0x20')](respondWithResult(_0x50fd47,0xc9))[_0x105e('0x3d')](handleError(_0x50fd47,null));};exports['update']=function(_0x499aa7,_0x3ad513){if(_0x499aa7[_0x105e('0x41')]['id']){delete _0x499aa7[_0x105e('0x41')]['id'];}return db['SquareDetailsReport']['find']({'where':{'id':_0x499aa7[_0x105e('0x42')]['id']}})[_0x105e('0x20')](handleEntityNotFound(_0x3ad513,null))[_0x105e('0x20')](saveUpdates(_0x499aa7[_0x105e('0x41')],null))[_0x105e('0x20')](respondWithResult(_0x3ad513,null))[_0x105e('0x3d')](handleError(_0x3ad513,null));};exports['destroy']=function(_0x47838e,_0x40e70a){return db[_0x105e('0x27')]['find']({'where':{'id':_0x47838e[_0x105e('0x42')]['id']}})['then'](handleEntityNotFound(_0x40e70a,null))[_0x105e('0x20')](removeEntity(_0x40e70a,null))[_0x105e('0x3d')](handleError(_0x40e70a,null));};exports[_0x105e('0x43')]=function(_0x478c66,_0x33b9e4){return db['SquareDetailsReport'][_0x105e('0x43')]()[_0x105e('0x20')](respondWithResult(_0x33b9e4,null))[_0x105e('0x3d')](handleError(_0x33b9e4,null));};
\ No newline at end of file
+var _0x6841=['fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','sendStatus','json','undefined','limit','offset','count','status','Content-Range','apply','destroy','then','end','error','stack','name','send','index','SquareDetailsReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','filter','where','merge','map','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','eml-format','rimraf'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6841,0xd3));var _0x1684=function(_0x4d8ed9,_0x2ae284){_0x4d8ed9=_0x4d8ed9-0x0;var _0x1e2140=_0x6841[_0x4d8ed9];return _0x1e2140;};'use strict';var emlformat=require(_0x1684('0x0'));var rimraf=require(_0x1684('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1684('0x2'));var rp=require(_0x1684('0x3'));var moment=require(_0x1684('0x4'));var BPromise=require(_0x1684('0x5'));var Mustache=require(_0x1684('0x6'));var util=require(_0x1684('0x7'));var path=require(_0x1684('0x8'));var sox=require(_0x1684('0x9'));var csv=require(_0x1684('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1684('0xb'));var _=require(_0x1684('0xc'));var squel=require(_0x1684('0xd'));var crypto=require(_0x1684('0xe'));var jsforce=require(_0x1684('0xf'));var deskjs=require(_0x1684('0x10'));var toCsv=require(_0x1684('0xa'));var querystring=require(_0x1684('0x11'));var Papa=require('papaparse');var Redis=require(_0x1684('0x12'));var authService=require(_0x1684('0x13'));var qs=require(_0x1684('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1684('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x1684('0x16'));var config=require(_0x1684('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4a9c1b,_0x4ca1c9){_0x4ca1c9=_0x4ca1c9||0xcc;return function(_0x56666c){if(_0x56666c){return _0x4a9c1b[_0x1684('0x18')](_0x4ca1c9);}return _0x4a9c1b['status'](_0x4ca1c9)['end']();};}function respondWithResult(_0x596820,_0xdc893a){_0xdc893a=_0xdc893a||0xc8;return function(_0x4d6050){if(_0x4d6050){return _0x596820['status'](_0xdc893a)[_0x1684('0x19')](_0x4d6050);}};}function respondWithFilteredResult(_0x492415,_0x2f308e){return function(_0x4f8779){if(_0x4f8779){var _0x52fe92=typeof _0x2f308e['offset']===_0x1684('0x1a')&&typeof _0x2f308e[_0x1684('0x1b')]===_0x1684('0x1a');var _0x4e0358=_0x4f8779['count'];var _0x47dd8e=_0x52fe92?0x0:_0x2f308e[_0x1684('0x1c')];var _0x40e2ba=_0x52fe92?_0x4f8779[_0x1684('0x1d')]:_0x2f308e[_0x1684('0x1c')]+_0x2f308e['limit'];var _0x18cc66;if(_0x40e2ba>=_0x4e0358){_0x40e2ba=_0x4e0358;_0x18cc66=0xc8;}else{_0x18cc66=0xce;}_0x492415[_0x1684('0x1e')](_0x18cc66);return _0x492415['set'](_0x1684('0x1f'),_0x47dd8e+'-'+_0x40e2ba+'/'+_0x4e0358)[_0x1684('0x19')](_0x4f8779);}return null;};}function patchUpdates(_0x34e871){return function(_0x4eb91a){try{jsonpatch[_0x1684('0x20')](_0x4eb91a,_0x34e871,!![]);}catch(_0x1722d9){return BPromise['reject'](_0x1722d9);}return _0x4eb91a['save']();};}function saveUpdates(_0x293bf4,_0x3eb6d6){return function(_0x211fc2){if(_0x211fc2){return _0x211fc2['update'](_0x293bf4)['then'](function(_0x4959a2){return _0x4959a2;});}return null;};}function removeEntity(_0x38eaac,_0x2a25f1){return function(_0x176acf){if(_0x176acf){return _0x176acf[_0x1684('0x21')]()[_0x1684('0x22')](function(){_0x38eaac[_0x1684('0x1e')](0xcc)[_0x1684('0x23')]();});}};}function handleEntityNotFound(_0x14a343,_0xbf6f9d){return function(_0x429cba){if(!_0x429cba){_0x14a343[_0x1684('0x18')](0x194);}return _0x429cba;};}function handleError(_0x327de3,_0x33d0a2){_0x33d0a2=_0x33d0a2||0x1f4;return function(_0x24a38f){logger[_0x1684('0x24')](_0x24a38f[_0x1684('0x25')]);if(_0x24a38f[_0x1684('0x26')]){delete _0x24a38f['name'];}_0x327de3[_0x1684('0x1e')](_0x33d0a2)[_0x1684('0x27')](_0x24a38f);};}exports[_0x1684('0x28')]=function(_0x98f18e,_0xef9e94){var _0x35050d={},_0x578d1a={},_0x166d54={'count':0x0,'rows':[]};var _0x363d75=_['map'](db[_0x1684('0x29')][_0x1684('0x2a')],function(_0x471792){return{'name':_0x471792[_0x1684('0x2b')],'type':_0x471792[_0x1684('0x2c')][_0x1684('0x2d')]};});_0x578d1a[_0x1684('0x2e')]=_['map'](_0x363d75,_0x1684('0x26'));_0x578d1a[_0x1684('0x2f')]=_[_0x1684('0x30')](_0x98f18e[_0x1684('0x2f')]);_0x578d1a[_0x1684('0x31')]=_[_0x1684('0x32')](_0x578d1a[_0x1684('0x2e')],_0x578d1a[_0x1684('0x2f')]);_0x35050d[_0x1684('0x33')]=_[_0x1684('0x32')](_0x578d1a[_0x1684('0x2e')],qs[_0x1684('0x34')](_0x98f18e[_0x1684('0x2f')][_0x1684('0x34')]));_0x35050d[_0x1684('0x33')]=_0x35050d[_0x1684('0x33')][_0x1684('0x35')]?_0x35050d[_0x1684('0x33')]:_0x578d1a[_0x1684('0x2e')];if(!_0x98f18e[_0x1684('0x2f')]['hasOwnProperty']('nolimit')){_0x35050d[_0x1684('0x1b')]=qs[_0x1684('0x1b')](_0x98f18e['query'][_0x1684('0x1b')]);_0x35050d[_0x1684('0x1c')]=qs[_0x1684('0x1c')](_0x98f18e[_0x1684('0x2f')][_0x1684('0x1c')]);}_0x35050d[_0x1684('0x36')]=qs[_0x1684('0x37')](_0x98f18e['query'][_0x1684('0x37')]);_0x35050d['where']=qs[_0x1684('0x31')](_['pick'](_0x98f18e[_0x1684('0x2f')],_0x578d1a[_0x1684('0x31')]),_0x363d75);if(_0x98f18e[_0x1684('0x2f')][_0x1684('0x38')]){_0x35050d[_0x1684('0x39')]=_[_0x1684('0x3a')](_0x35050d[_0x1684('0x39')],{'$or':_[_0x1684('0x3b')](_0x363d75,function(_0x20ca4d){if(_0x20ca4d[_0x1684('0x2c')]!=='VIRTUAL'){var _0x3d6e25={};_0x3d6e25[_0x20ca4d[_0x1684('0x26')]]={'$like':'%'+_0x98f18e[_0x1684('0x2f')][_0x1684('0x38')]+'%'};return _0x3d6e25;}})});}_0x35050d=_['merge']({},_0x35050d,_0x98f18e['options']);var _0x5bad03={'where':_0x35050d['where']};return db[_0x1684('0x29')]['count'](_0x5bad03)['then'](function(_0x461d4e){_0x166d54[_0x1684('0x1d')]=_0x461d4e;if(_0x98f18e['query'][_0x1684('0x3c')]){_0x35050d[_0x1684('0x3d')]=[{'all':!![]}];}return db[_0x1684('0x29')][_0x1684('0x3e')](_0x35050d);})['then'](function(_0x3416c3){_0x166d54[_0x1684('0x3f')]=_0x3416c3;return _0x166d54;})[_0x1684('0x22')](respondWithFilteredResult(_0xef9e94,_0x35050d))[_0x1684('0x40')](handleError(_0xef9e94,null));};exports[_0x1684('0x41')]=function(_0x22d052,_0x1427d6){var _0x2dae6a={'raw':!![],'where':{'id':_0x22d052[_0x1684('0x42')]['id']}},_0x210ea6={};_0x210ea6[_0x1684('0x2e')]=_[_0x1684('0x30')](db[_0x1684('0x29')][_0x1684('0x2a')]);_0x210ea6[_0x1684('0x2f')]=_[_0x1684('0x30')](_0x22d052[_0x1684('0x2f')]);_0x210ea6[_0x1684('0x31')]=_[_0x1684('0x32')](_0x210ea6[_0x1684('0x2e')],_0x210ea6[_0x1684('0x2f')]);_0x2dae6a[_0x1684('0x33')]=_[_0x1684('0x32')](_0x210ea6[_0x1684('0x2e')],qs[_0x1684('0x34')](_0x22d052[_0x1684('0x2f')][_0x1684('0x34')]));_0x2dae6a[_0x1684('0x33')]=_0x2dae6a[_0x1684('0x33')][_0x1684('0x35')]?_0x2dae6a['attributes']:_0x210ea6[_0x1684('0x2e')];if(_0x22d052[_0x1684('0x2f')][_0x1684('0x3c')]){_0x2dae6a['include']=[{'all':!![]}];}_0x2dae6a=_['merge']({},_0x2dae6a,_0x22d052[_0x1684('0x43')]);return db[_0x1684('0x29')][_0x1684('0x44')](_0x2dae6a)[_0x1684('0x22')](handleEntityNotFound(_0x1427d6,null))[_0x1684('0x22')](respondWithResult(_0x1427d6,null))['catch'](handleError(_0x1427d6,null));};exports[_0x1684('0x45')]=function(_0xa771f4,_0x6a9e64){return db[_0x1684('0x29')][_0x1684('0x45')](_0xa771f4[_0x1684('0x46')],{})[_0x1684('0x22')](respondWithResult(_0x6a9e64,0xc9))[_0x1684('0x40')](handleError(_0x6a9e64,null));};exports['update']=function(_0x14470f,_0x3249cf){if(_0x14470f[_0x1684('0x46')]['id']){delete _0x14470f['body']['id'];}return db[_0x1684('0x29')][_0x1684('0x44')]({'where':{'id':_0x14470f[_0x1684('0x42')]['id']}})[_0x1684('0x22')](handleEntityNotFound(_0x3249cf,null))[_0x1684('0x22')](saveUpdates(_0x14470f[_0x1684('0x46')],null))['then'](respondWithResult(_0x3249cf,null))[_0x1684('0x40')](handleError(_0x3249cf,null));};exports[_0x1684('0x21')]=function(_0x5d649c,_0x206e21){return db[_0x1684('0x29')][_0x1684('0x44')]({'where':{'id':_0x5d649c[_0x1684('0x42')]['id']}})['then'](handleEntityNotFound(_0x206e21,null))[_0x1684('0x22')](removeEntity(_0x206e21,null))[_0x1684('0x40')](handleError(_0x206e21,null));};exports['describe']=function(_0xb13551,_0x209dab){return db[_0x1684('0x29')]['describe']()[_0x1684('0x22')](respondWithResult(_0x209dab,null))['catch'](handleError(_0x209dab,null));};
\ No newline at end of file
index 038e8c2..3d3c1bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e39=['path','rimraf','../../config/environment','./squareReportDetail.attributes','exports','define','report_square_details','util','../../config/logger','api','moment','request-promise'];(function(_0x5f8fe8,_0x381db2){var _0x40247d=function(_0x5579c6){while(--_0x5579c6){_0x5f8fe8['push'](_0x5f8fe8['shift']());}};_0x40247d(++_0x381db2);}(_0x1e39,0x13f));var _0x91e3=function(_0x9a3e0f,_0x2f796d){_0x9a3e0f=_0x9a3e0f-0x0;var _0x3d2a9a=_0x1e39[_0x9a3e0f];return _0x3d2a9a;};'use strict';var _=require('lodash');var util=require(_0x91e3('0x0'));var logger=require(_0x91e3('0x1'))(_0x91e3('0x2'));var moment=require(_0x91e3('0x3'));var BPromise=require('bluebird');var rp=require(_0x91e3('0x4'));var fs=require('fs');var path=require(_0x91e3('0x5'));var rimraf=require(_0x91e3('0x6'));var config=require(_0x91e3('0x7'));var attributes=require(_0x91e3('0x8'));module[_0x91e3('0x9')]=function(_0xaffb6a,_0x219321){return _0xaffb6a[_0x91e3('0xa')]('SquareDetailsReport',attributes,{'tableName':_0x91e3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8046=['./squareReportDetail.attributes','exports','define','SquareDetailsReport','report_square_details','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x36f47c,_0x38ef4d){var _0x296c55=function(_0x403eec){while(--_0x403eec){_0x36f47c['push'](_0x36f47c['shift']());}};_0x296c55(++_0x38ef4d);}(_0x8046,0x1c5));var _0x6804=function(_0x39d544,_0x35c14f){_0x39d544=_0x39d544-0x0;var _0x5a5ff2=_0x8046[_0x39d544];return _0x5a5ff2;};'use strict';var _=require(_0x6804('0x0'));var util=require(_0x6804('0x1'));var logger=require(_0x6804('0x2'))(_0x6804('0x3'));var moment=require(_0x6804('0x4'));var BPromise=require('bluebird');var rp=require(_0x6804('0x5'));var fs=require('fs');var path=require(_0x6804('0x6'));var rimraf=require(_0x6804('0x7'));var config=require(_0x6804('0x8'));var attributes=require(_0x6804('0x9'));module[_0x6804('0xa')]=function(_0x5d9810,_0x1cff95){return _0x5d9810[_0x6804('0xb')](_0x6804('0xc'),attributes,{'tableName':_0x6804('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7c416fb..f12b946 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32b6=['request','then','debug','request\x20sent','stringify','error','code','SquareDetailsReport,\x20%s,\x20%s','message','info','CreateSquareDetailsReport','SquareDetailsReport','create','body','options','raw','catch','lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x32b6,0x1d1));var _0x632b=function(_0x425366,_0x4817a1){_0x425366=_0x425366-0x0;var _0x3c0cfd=_0x32b6[_0x425366];return _0x3c0cfd;};'use strict';var _=require(_0x632b('0x0'));var util=require(_0x632b('0x1'));var moment=require('moment');var BPromise=require(_0x632b('0x2'));var rs=require(_0x632b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x632b('0x4'));var logger=require(_0x632b('0x5'))(_0x632b('0x6'));var config=require(_0x632b('0x7'));var jayson=require(_0x632b('0x8'));var client=jayson[_0x632b('0x9')][_0x632b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x10458a,_0x3bbf43,_0x43d6c7){return new BPromise(function(_0x5128f5,_0x33d711){return client[_0x632b('0xb')](_0x10458a,_0x43d6c7)[_0x632b('0xc')](function(_0x174201){logger['info']('SquareDetailsReport,\x20%s,\x20%s',_0x3bbf43,'request\x20sent');logger[_0x632b('0xd')]('SquareDetailsReport,\x20%s,\x20%s,\x20%s',_0x3bbf43,_0x632b('0xe'),JSON[_0x632b('0xf')](_0x174201));if(_0x174201[_0x632b('0x10')]){if(_0x174201[_0x632b('0x10')][_0x632b('0x11')]===0x1f4){logger[_0x632b('0x10')](_0x632b('0x12'),_0x3bbf43,_0x174201[_0x632b('0x10')][_0x632b('0x13')]);return _0x33d711(_0x174201['error'][_0x632b('0x13')]);}logger[_0x632b('0x10')](_0x632b('0x12'),_0x3bbf43,_0x174201['error'][_0x632b('0x13')]);return _0x5128f5(_0x174201[_0x632b('0x10')][_0x632b('0x13')]);}else{logger[_0x632b('0x14')](_0x632b('0x12'),_0x3bbf43,_0x632b('0xe'));_0x5128f5(_0x174201['result'][_0x632b('0x13')]);}})['catch'](function(_0x4fdef2){logger[_0x632b('0x10')]('SquareDetailsReport,\x20%s,\x20%s',_0x3bbf43,_0x4fdef2);_0x33d711(_0x4fdef2);});});}exports[_0x632b('0x15')]=function(_0x3bb27f){var _0x28c472=this;return new Promise(function(_0x51c894,_0x2f3e88){return db[_0x632b('0x16')][_0x632b('0x17')](_0x3bb27f[_0x632b('0x18')],{'raw':_0x3bb27f['options']?_0x3bb27f[_0x632b('0x19')][_0x632b('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x116f62){logger['info']('CreateSquareDetailsReport',_0x3bb27f);logger[_0x632b('0xd')]('CreateSquareDetailsReport',_0x3bb27f,JSON[_0x632b('0xf')](_0x116f62));_0x51c894(_0x116f62);})[_0x632b('0x1b')](function(_0x2a6833){logger['error'](_0x632b('0x15'),_0x2a6833[_0x632b('0x13')],_0x3bb27f);_0x2f3e88(_0x28c472['error'](0x1f4,_0x2a6833[_0x632b('0x13')]));});});};
\ No newline at end of file
+var _0x1c9a=['catch','CreateSquareDetailsReport','SquareDetailsReport','create','body','options','raw','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareDetailsReport,\x20%s,\x20%s','message','result'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x1c9a,0x98));var _0xa1c9=function(_0x39d6b9,_0x4d4bd7){_0x39d6b9=_0x39d6b9-0x0;var _0x82cdd9=_0x1c9a[_0x39d6b9];return _0x82cdd9;};'use strict';var _=require(_0xa1c9('0x0'));var util=require('util');var moment=require(_0xa1c9('0x1'));var BPromise=require('bluebird');var rs=require(_0xa1c9('0x2'));var fs=require('fs');var Redis=require(_0xa1c9('0x3'));var db=require(_0xa1c9('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xa1c9('0x5'))(_0xa1c9('0x6'));var config=require(_0xa1c9('0x7'));var jayson=require(_0xa1c9('0x8'));var client=jayson['client'][_0xa1c9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5448f2,_0x222624,_0x463c9c){return new BPromise(function(_0x3f07c2,_0x5059df){return client[_0xa1c9('0xa')](_0x5448f2,_0x463c9c)[_0xa1c9('0xb')](function(_0x24136d){logger[_0xa1c9('0xc')]('SquareDetailsReport,\x20%s,\x20%s',_0x222624,_0xa1c9('0xd'));logger[_0xa1c9('0xe')](_0xa1c9('0xf'),_0x222624,_0xa1c9('0xd'),JSON[_0xa1c9('0x10')](_0x24136d));if(_0x24136d[_0xa1c9('0x11')]){if(_0x24136d[_0xa1c9('0x11')][_0xa1c9('0x12')]===0x1f4){logger[_0xa1c9('0x11')](_0xa1c9('0x13'),_0x222624,_0x24136d['error'][_0xa1c9('0x14')]);return _0x5059df(_0x24136d[_0xa1c9('0x11')][_0xa1c9('0x14')]);}logger[_0xa1c9('0x11')](_0xa1c9('0x13'),_0x222624,_0x24136d['error'][_0xa1c9('0x14')]);return _0x3f07c2(_0x24136d[_0xa1c9('0x11')][_0xa1c9('0x14')]);}else{logger[_0xa1c9('0xc')](_0xa1c9('0x13'),_0x222624,_0xa1c9('0xd'));_0x3f07c2(_0x24136d[_0xa1c9('0x15')][_0xa1c9('0x14')]);}})[_0xa1c9('0x16')](function(_0x373f5d){logger['error'](_0xa1c9('0x13'),_0x222624,_0x373f5d);_0x5059df(_0x373f5d);});});}exports[_0xa1c9('0x17')]=function(_0x224ae4){var _0x50db9b=this;return new Promise(function(_0x2fb81e,_0x5ab911){return db[_0xa1c9('0x18')][_0xa1c9('0x19')](_0x224ae4[_0xa1c9('0x1a')],{'raw':_0x224ae4['options']?_0x224ae4[_0xa1c9('0x1b')][_0xa1c9('0x1c')]===undefined?!![]:![]:!![]})[_0xa1c9('0xb')](function(_0x4edf37){logger[_0xa1c9('0xc')](_0xa1c9('0x17'),_0x224ae4);logger['debug'](_0xa1c9('0x17'),_0x224ae4,JSON[_0xa1c9('0x10')](_0x4edf37));_0x2fb81e(_0x4edf37);})[_0xa1c9('0x16')](function(_0x4d05d0){logger[_0xa1c9('0x11')](_0xa1c9('0x17'),_0x4d05d0[_0xa1c9('0x14')],_0x224ae4);_0x5ab911(_0x50db9b[_0xa1c9('0x11')](0x1f4,_0x4d05d0[_0xa1c9('0x14')]));});});};
\ No newline at end of file
index d0b5686..31c7085 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x839f=['Router','get','isAuthenticated','index','/process/:pid/kill','killProcess','exports','express'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x839f,0x1df));var _0xf839=function(_0x38276a,_0x5f35d2){_0x38276a=_0x38276a-0x0;var _0x114e42=_0x839f[_0x38276a];return _0x114e42;};'use strict';var express=require(_0xf839('0x0'));var router=express[_0xf839('0x1')]();var auth=require('../../components/auth/service');var controller=require('./system.controller');router[_0xf839('0x2')]('/',auth[_0xf839('0x3')](),controller[_0xf839('0x4')]);router[_0xf839('0x2')](_0xf839('0x5'),auth[_0xf839('0x3')](),controller[_0xf839('0x6')]);module[_0xf839('0x7')]=router;
\ No newline at end of file
+var _0x7bd6=['express','Router','../../components/auth/service','./system.controller','isAuthenticated','index','get','/process/:pid/kill','killProcess','exports'];(function(_0x22f8ab,_0x15d8ff){var _0x2a70e5=function(_0x5e6895){while(--_0x5e6895){_0x22f8ab['push'](_0x22f8ab['shift']());}};_0x2a70e5(++_0x15d8ff);}(_0x7bd6,0x96));var _0x67bd=function(_0xb2e670,_0x436e56){_0xb2e670=_0xb2e670-0x0;var _0x598b6b=_0x7bd6[_0xb2e670];return _0x598b6b;};'use strict';var express=require(_0x67bd('0x0'));var router=express[_0x67bd('0x1')]();var auth=require(_0x67bd('0x2'));var controller=require(_0x67bd('0x3'));router['get']('/',auth[_0x67bd('0x4')](),controller[_0x67bd('0x5')]);router[_0x67bd('0x6')](_0x67bd('0x7'),auth['isAuthenticated'](),controller[_0x67bd('0x8')]);module[_0x67bd('0x9')]=router;
\ No newline at end of file
index 681a5f5..c77e288 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4c5=['send','index','getAllData','then','json','status','killProcess','components/import/cm','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','split','length','indexOf','format','kill','SIGINT','pid','catch','child_process','exec','../../config/logger','api','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','name'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xb4c5,0x162));var _0x5b4c=function(_0x36c749,_0x519d19){_0x36c749=_0x36c749-0x0;var _0x760282=_0xb4c5[_0x36c749];return _0x760282;};'use strict';var info=require('systeminformation');var exec=require(_0x5b4c('0x0'))[_0x5b4c('0x1')];var logger=require(_0x5b4c('0x2'))(_0x5b4c('0x3'));var util=require('util');var BPromise=require('bluebird');var _=require('lodash');function handleError(_0x4a8820,_0x2e5363,_0x446e7d){_0x2e5363=_0x2e5363||0x1f4;return function(_0x2510ea){logger['error'](_0x5b4c('0x4'),_0x446e7d,_0x2e5363,util['inspect'](_0x2510ea,{'showHidden':![],'depth':null}));delete _0x2510ea[_0x5b4c('0x5')];_0x4a8820['status'](_0x2e5363)[_0x5b4c('0x6')](_0x2510ea);};}exports[_0x5b4c('0x7')]=function(_0x13fffd,_0xc79cd0){return info[_0x5b4c('0x8')]()[_0x5b4c('0x9')](function(_0xd2919f){return _0xc79cd0['status'](0xc8)[_0x5b4c('0xa')](_0xd2919f);})['catch'](function(_0x1d4de2){return _0xc79cd0[_0x5b4c('0xb')](0x1f4)[_0x5b4c('0xa')](_0x1d4de2);});};exports[_0x5b4c('0xc')]=function(_0x5f0d7c,_0x165569){var _0xbf2d9f=[_0x5b4c('0xd')];return new BPromise(function(_0x23436c,_0x43c2d3){return exec(util['format'](_0x5b4c('0xe'),_0x5f0d7c[_0x5b4c('0xf')]['pid']),function(_0x2cf854,_0x3977f9,_0x4d68f4){if(_0x2cf854){return _0x43c2d3(_0x2cf854);}return _0x23436c(_0x3977f9);});})['then'](function(_0x3fc43e){var _0x33134a=![];var _0x1a6f63=_0x3fc43e[_0x5b4c('0x10')](/\n/);for(var _0x438e7b=0x0,_0x5ae652=_0xbf2d9f[_0x5b4c('0x11')];_0x438e7b<_0x5ae652,_0x33134a===![];_0x438e7b+=0x1){if(_0x3fc43e[_0x5b4c('0x12')](_0xbf2d9f[_0x438e7b])>=0x0){_0x33134a=!![];}}if(!_0x33134a){throw new Error(util[_0x5b4c('0x13')]('Process\x20with\x20pid\x20%s\x20not\x20found!',_0x5f0d7c[_0x5b4c('0xf')]['pid']));}process[_0x5b4c('0x14')](_0x5f0d7c[_0x5b4c('0xf')]['pid'],_0x5b4c('0x15'));return _0x165569[_0x5b4c('0xb')](0xc8)[_0x5b4c('0xa')]({'message':util[_0x5b4c('0x13')]('Process\x20with\x20pid\x20%s\x20killed\x20correctly',_0x5f0d7c['params'][_0x5b4c('0x16')])});})[_0x5b4c('0x17')](handleError(_0x165569,null,'killProcess'));};
\ No newline at end of file
+var _0x998e=['child_process','../../config/logger','api','util','bluebird','lodash','error','inspect','send','getAllData','catch','status','killProcess','components/import/cm','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','then','split','length','indexOf','pid','kill','SIGINT','json','Process\x20with\x20pid\x20%s\x20killed\x20correctly'];(function(_0x268047,_0x565f46){var _0x5dac57=function(_0x4a9ad7){while(--_0x4a9ad7){_0x268047['push'](_0x268047['shift']());}};_0x5dac57(++_0x565f46);}(_0x998e,0xc8));var _0xe998=function(_0x2fe1e3,_0x4c7077){_0x2fe1e3=_0x2fe1e3-0x0;var _0x261f0c=_0x998e[_0x2fe1e3];return _0x261f0c;};'use strict';var info=require('systeminformation');var exec=require(_0xe998('0x0'))['exec'];var logger=require(_0xe998('0x1'))(_0xe998('0x2'));var util=require(_0xe998('0x3'));var BPromise=require(_0xe998('0x4'));var _=require(_0xe998('0x5'));function handleError(_0x10f1dd,_0x587acf,_0x3129de){_0x587acf=_0x587acf||0x1f4;return function(_0x5b7c25){logger[_0xe998('0x6')]('<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s',_0x3129de,_0x587acf,util[_0xe998('0x7')](_0x5b7c25,{'showHidden':![],'depth':null}));delete _0x5b7c25['name'];_0x10f1dd['status'](_0x587acf)[_0xe998('0x8')](_0x5b7c25);};}exports['index']=function(_0x262d22,_0xdac780){return info[_0xe998('0x9')]()['then'](function(_0x130b77){return _0xdac780['status'](0xc8)['json'](_0x130b77);})[_0xe998('0xa')](function(_0x316016){return _0xdac780[_0xe998('0xb')](0x1f4)['json'](_0x316016);});};exports[_0xe998('0xc')]=function(_0x4dc81d,_0x266489){var _0x42579f=[_0xe998('0xd')];return new BPromise(function(_0x1840ed,_0xf2c9c0){return exec(util['format'](_0xe998('0xe'),_0x4dc81d[_0xe998('0xf')]['pid']),function(_0x20b362,_0x509671,_0x59e1c1){if(_0x20b362){return _0xf2c9c0(_0x20b362);}return _0x1840ed(_0x509671);});})[_0xe998('0x10')](function(_0x4065bf){var _0xe7e36e=![];var _0x5b73de=_0x4065bf[_0xe998('0x11')](/\n/);for(var _0xc05cf0=0x0,_0x1bd49d=_0x42579f[_0xe998('0x12')];_0xc05cf0<_0x1bd49d,_0xe7e36e===![];_0xc05cf0+=0x1){if(_0x4065bf[_0xe998('0x13')](_0x42579f[_0xc05cf0])>=0x0){_0xe7e36e=!![];}}if(!_0xe7e36e){throw new Error(util['format']('Process\x20with\x20pid\x20%s\x20not\x20found!',_0x4dc81d[_0xe998('0xf')][_0xe998('0x14')]));}process[_0xe998('0x15')](_0x4dc81d['params'][_0xe998('0x14')],_0xe998('0x16'));return _0x266489[_0xe998('0xb')](0xc8)[_0xe998('0x17')]({'message':util['format'](_0xe998('0x18'),_0x4dc81d['params'][_0xe998('0x14')])});})[_0xe998('0xa')](handleError(_0x266489,null,_0xe998('0xc')));};
\ No newline at end of file
index 51a78bf..4a1d8f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0dd=['update','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/:id','post','create'];(function(_0x53273a,_0x5ed978){var _0x3c41db=function(_0x491a57){while(--_0x491a57){_0x53273a['push'](_0x53273a['shift']());}};_0x3c41db(++_0x5ed978);}(_0xe0dd,0x163));var _0xde0d=function(_0x333798,_0x9f6561){_0x333798=_0x333798-0x0;var _0x389f4e=_0xe0dd[_0x333798];return _0x389f4e;};'use strict';var multer=require(_0xde0d('0x0'));var util=require(_0xde0d('0x1'));var path=require('path');var timeout=require(_0xde0d('0x2'));var express=require(_0xde0d('0x3'));var router=express[_0xde0d('0x4')]();var fs_extra=require(_0xde0d('0x5'));var auth=require(_0xde0d('0x6'));var interaction=require(_0xde0d('0x7'));var config=require('../../config/environment');var controller=require('./tag.controller');router[_0xde0d('0x8')]('/',auth[_0xde0d('0x9')](),controller['index']);router[_0xde0d('0x8')](_0xde0d('0xa'),auth[_0xde0d('0x9')](),controller['show']);router[_0xde0d('0xb')]('/',auth['isAuthenticated'](),controller[_0xde0d('0xc')]);router['put'](_0xde0d('0xa'),auth[_0xde0d('0x9')](),controller[_0xde0d('0xd')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xde0d('0xe')]);module[_0xde0d('0xf')]=router;
\ No newline at end of file
+var _0x1658=['delete','destroy','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show','create','put'];(function(_0x471273,_0x216ce4){var _0x4a318c=function(_0x61d51b){while(--_0x61d51b){_0x471273['push'](_0x471273['shift']());}};_0x4a318c(++_0x216ce4);}(_0x1658,0x163));var _0x8165=function(_0x1caeb7,_0x39f829){_0x1caeb7=_0x1caeb7-0x0;var _0x54ff04=_0x1658[_0x1caeb7];return _0x54ff04;};'use strict';var multer=require(_0x8165('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x8165('0x1'));var express=require('express');var router=express[_0x8165('0x2')]();var fs_extra=require(_0x8165('0x3'));var auth=require(_0x8165('0x4'));var interaction=require(_0x8165('0x5'));var config=require('../../config/environment');var controller=require('./tag.controller');router[_0x8165('0x6')]('/',auth[_0x8165('0x7')](),controller[_0x8165('0x8')]);router[_0x8165('0x6')](_0x8165('0x9'),auth[_0x8165('0x7')](),controller[_0x8165('0xa')]);router['post']('/',auth[_0x8165('0x7')](),controller[_0x8165('0xb')]);router[_0x8165('0xc')](_0x8165('0x9'),auth[_0x8165('0x7')](),controller['update']);router[_0x8165('0xd')](_0x8165('0x9'),auth[_0x8165('0x7')](),controller[_0x8165('0xe')]);module[_0x8165('0xf')]=router;
\ No newline at end of file
index 5fa167a..620594e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5523=['name','#0091EA','STRING'];(function(_0x49249e,_0x3095c6){var _0x183b51=function(_0xc973f4){while(--_0xc973f4){_0x49249e['push'](_0x49249e['shift']());}};_0x183b51(++_0x3095c6);}(_0x5523,0x137));var _0x3552=function(_0x4ee22c,_0x470b30){_0x4ee22c=_0x4ee22c-0x0;var _0x40ed7d=_0x5523[_0x4ee22c];return _0x40ed7d;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x3552('0x0')],'unique':_0x3552('0x1'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x3552('0x0')],'defaultValue':_0x3552('0x2')},'description':{'type':Sequelize[_0x3552('0x0')]}};
\ No newline at end of file
+var _0xa45c=['STRING','sequelize','exports'];(function(_0x1e0ce6,_0x193cdc){var _0x12f74d=function(_0x5656fb){while(--_0x5656fb){_0x1e0ce6['push'](_0x1e0ce6['shift']());}};_0x12f74d(++_0x193cdc);}(_0xa45c,0x6d));var _0xca45=function(_0x4e8682,_0xa2c8bf){_0x4e8682=_0x4e8682-0x0;var _0x31e1a2=_0xa45c[_0x4e8682];return _0x31e1a2;};'use strict';var Sequelize=require(_0xca45('0x0'));module[_0xca45('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xca45('0x2')],'defaultValue':'#0091EA'},'description':{'type':Sequelize[_0xca45('0x2')]}};
\ No newline at end of file
index d9b77dc..eda27fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x668b=['papaparse','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','count','limit','set','Content-Range','apply','update','destroy','then','get','Tags','UserProfileResource','error','stack','name','send','index','Tag','rawAttributes','fieldName','type','key','model','map','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filter','VIRTUAL','merge','options','includeAll','include','rows','params','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring'];(function(_0x317137,_0x4a0509){var _0x2a1e48=function(_0x56abba){while(--_0x56abba){_0x317137['push'](_0x317137['shift']());}};_0x2a1e48(++_0x4a0509);}(_0x668b,0x140));var _0xb668=function(_0x25b4a4,_0x2e081b){_0x25b4a4=_0x25b4a4-0x0;var _0x707267=_0x668b[_0x25b4a4];return _0x707267;};'use strict';var emlformat=require(_0xb668('0x0'));var rimraf=require(_0xb668('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb668('0x2'));var rp=require(_0xb668('0x3'));var moment=require('moment');var BPromise=require(_0xb668('0x4'));var Mustache=require('mustache');var util=require(_0xb668('0x5'));var path=require(_0xb668('0x6'));var sox=require(_0xb668('0x7'));var csv=require('to-csv');var ejs=require(_0xb668('0x8'));var fs=require('fs');var fs_extra=require(_0xb668('0x9'));var _=require(_0xb668('0xa'));var squel=require(_0xb668('0xb'));var crypto=require(_0xb668('0xc'));var jsforce=require(_0xb668('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xb668('0xe'));var querystring=require(_0xb668('0xf'));var Papa=require(_0xb668('0x10'));var Redis=require(_0xb668('0x11'));var authService=require(_0xb668('0x12'));var qs=require(_0xb668('0x13'));var as=require(_0xb668('0x14'));var hardwareService=require(_0xb668('0x15'));var logger=require('../../config/logger')(_0xb668('0x16'));var utils=require(_0xb668('0x17'));var config=require(_0xb668('0x18'));var licenseUtil=require(_0xb668('0x19'));var db=require(_0xb668('0x1a'))['db'];function respondWithStatusCode(_0x167057,_0x1d111a){_0x1d111a=_0x1d111a||0xcc;return function(_0x10ed24){if(_0x10ed24){return _0x167057[_0xb668('0x1b')](_0x1d111a);}return _0x167057[_0xb668('0x1c')](_0x1d111a)[_0xb668('0x1d')]();};}function respondWithResult(_0x3b7556,_0x3aed25){_0x3aed25=_0x3aed25||0xc8;return function(_0xd0450f){if(_0xd0450f){return _0x3b7556[_0xb668('0x1c')](_0x3aed25)[_0xb668('0x1e')](_0xd0450f);}};}function respondWithFilteredResult(_0x1ca6e7,_0x222cad){return function(_0x4fa32a){if(_0x4fa32a){var _0x4a755b=typeof _0x222cad[_0xb668('0x1f')]===_0xb668('0x20')&&typeof _0x222cad['limit']===_0xb668('0x20');var _0x567ad7=_0x4fa32a[_0xb668('0x21')];var _0x89fe72=_0x4a755b?0x0:_0x222cad['offset'];var _0x38595d=_0x4a755b?_0x4fa32a[_0xb668('0x21')]:_0x222cad['offset']+_0x222cad[_0xb668('0x22')];var _0x5b31ab;if(_0x38595d>=_0x567ad7){_0x38595d=_0x567ad7;_0x5b31ab=0xc8;}else{_0x5b31ab=0xce;}_0x1ca6e7[_0xb668('0x1c')](_0x5b31ab);return _0x1ca6e7[_0xb668('0x23')](_0xb668('0x24'),_0x89fe72+'-'+_0x38595d+'/'+_0x567ad7)[_0xb668('0x1e')](_0x4fa32a);}return null;};}function patchUpdates(_0x5d33ae){return function(_0x2b7f96){try{jsonpatch[_0xb668('0x25')](_0x2b7f96,_0x5d33ae,!![]);}catch(_0x25e5be){return BPromise['reject'](_0x25e5be);}return _0x2b7f96['save']();};}function saveUpdates(_0x43a70b,_0x1e5620){return function(_0x517eee){if(_0x517eee){return _0x517eee[_0xb668('0x26')](_0x43a70b)['then'](function(_0x2f1394){return _0x2f1394;});}return null;};}function removeEntity(_0x4bd365,_0x3f4745){return function(_0x1e1c94){if(_0x1e1c94){return _0x1e1c94[_0xb668('0x27')]()[_0xb668('0x28')](function(){var _0x2a5b3d=_0x1e1c94[_0xb668('0x29')]({'plain':!![]});var _0x4d4bf8=_0xb668('0x2a');return db[_0xb668('0x2b')][_0xb668('0x27')]({'where':{'type':_0x4d4bf8,'resourceId':_0x2a5b3d['id']}})['then'](function(){return _0x1e1c94;});})['then'](function(){_0x4bd365[_0xb668('0x1c')](0xcc)[_0xb668('0x1d')]();});}};}function handleEntityNotFound(_0x30b965,_0x5a67e9){return function(_0x3a2543){if(!_0x3a2543){_0x30b965[_0xb668('0x1b')](0x194);}return _0x3a2543;};}function handleError(_0x1616e5,_0x4c78a0){_0x4c78a0=_0x4c78a0||0x1f4;return function(_0x5709e2){logger[_0xb668('0x2c')](_0x5709e2[_0xb668('0x2d')]);if(_0x5709e2['name']){delete _0x5709e2[_0xb668('0x2e')];}_0x1616e5[_0xb668('0x1c')](_0x4c78a0)[_0xb668('0x2f')](_0x5709e2);};}exports[_0xb668('0x30')]=function(_0x256a8,_0x5f36b5){var _0x138ee5={},_0x3bd27c={},_0x5dfa2c={'count':0x0,'rows':[]};var _0x28bcdd=_['map'](db[_0xb668('0x31')][_0xb668('0x32')],function(_0x467fea){return{'name':_0x467fea[_0xb668('0x33')],'type':_0x467fea[_0xb668('0x34')][_0xb668('0x35')]};});_0x3bd27c[_0xb668('0x36')]=_[_0xb668('0x37')](_0x28bcdd,_0xb668('0x2e'));_0x3bd27c['query']=_[_0xb668('0x38')](_0x256a8[_0xb668('0x39')]);_0x3bd27c[_0xb668('0x3a')]=_['intersection'](_0x3bd27c[_0xb668('0x36')],_0x3bd27c[_0xb668('0x39')]);_0x138ee5[_0xb668('0x3b')]=_[_0xb668('0x3c')](_0x3bd27c['model'],qs[_0xb668('0x3d')](_0x256a8[_0xb668('0x39')][_0xb668('0x3d')]));_0x138ee5[_0xb668('0x3b')]=_0x138ee5[_0xb668('0x3b')][_0xb668('0x3e')]?_0x138ee5[_0xb668('0x3b')]:_0x3bd27c['model'];if(!_0x256a8[_0xb668('0x39')][_0xb668('0x3f')]('nolimit')){_0x138ee5[_0xb668('0x22')]=qs['limit'](_0x256a8['query'][_0xb668('0x22')]);_0x138ee5[_0xb668('0x1f')]=qs['offset'](_0x256a8[_0xb668('0x39')]['offset']);}_0x138ee5[_0xb668('0x40')]=qs['sort'](_0x256a8['query'][_0xb668('0x41')]);_0x138ee5[_0xb668('0x42')]=qs['filters'](_['pick'](_0x256a8[_0xb668('0x39')],_0x3bd27c[_0xb668('0x3a')]),_0x28bcdd);if(_0x256a8[_0xb668('0x39')][_0xb668('0x43')]){_0x138ee5[_0xb668('0x42')]=_['merge'](_0x138ee5['where'],{'$or':_[_0xb668('0x37')](_0x28bcdd,function(_0x43e98c){if(_0x43e98c[_0xb668('0x34')]!==_0xb668('0x44')){var _0x41aeca={};_0x41aeca[_0x43e98c[_0xb668('0x2e')]]={'$like':'%'+_0x256a8['query']['filter']+'%'};return _0x41aeca;}})});}_0x138ee5=_[_0xb668('0x45')]({},_0x138ee5,_0x256a8[_0xb668('0x46')]);var _0x89956d={'where':_0x138ee5[_0xb668('0x42')]};return db[_0xb668('0x31')]['count'](_0x89956d)[_0xb668('0x28')](function(_0x429b14){_0x5dfa2c['count']=_0x429b14;if(_0x256a8[_0xb668('0x39')][_0xb668('0x47')]){_0x138ee5[_0xb668('0x48')]=[{'all':!![]}];}return db[_0xb668('0x31')]['findAll'](_0x138ee5);})['then'](function(_0x4b7192){_0x5dfa2c[_0xb668('0x49')]=_0x4b7192;return _0x5dfa2c;})['then'](respondWithFilteredResult(_0x5f36b5,_0x138ee5))['catch'](handleError(_0x5f36b5,null));};exports['show']=function(_0x50ffe0,_0x467ac9){var _0x4874a8={'raw':!![],'where':{'id':_0x50ffe0[_0xb668('0x4a')]['id']}},_0x14b269={};_0x14b269[_0xb668('0x36')]=_[_0xb668('0x38')](db[_0xb668('0x31')]['rawAttributes']);_0x14b269[_0xb668('0x39')]=_[_0xb668('0x38')](_0x50ffe0[_0xb668('0x39')]);_0x14b269[_0xb668('0x3a')]=_[_0xb668('0x3c')](_0x14b269[_0xb668('0x36')],_0x14b269[_0xb668('0x39')]);_0x4874a8[_0xb668('0x3b')]=_[_0xb668('0x3c')](_0x14b269[_0xb668('0x36')],qs[_0xb668('0x3d')](_0x50ffe0['query'][_0xb668('0x3d')]));_0x4874a8[_0xb668('0x3b')]=_0x4874a8[_0xb668('0x3b')]['length']?_0x4874a8['attributes']:_0x14b269[_0xb668('0x36')];if(_0x50ffe0['query'][_0xb668('0x47')]){_0x4874a8['include']=[{'all':!![]}];}_0x4874a8=_['merge']({},_0x4874a8,_0x50ffe0['options']);return db[_0xb668('0x31')][_0xb668('0x4b')](_0x4874a8)['then'](handleEntityNotFound(_0x467ac9,null))[_0xb668('0x28')](respondWithResult(_0x467ac9,null))[_0xb668('0x4c')](handleError(_0x467ac9,null));};exports[_0xb668('0x4d')]=function(_0x1b649f,_0x16d06f){return db[_0xb668('0x31')][_0xb668('0x4d')](_0x1b649f[_0xb668('0x4e')],{})[_0xb668('0x28')](function(_0x4065f7){var _0x4e0628=_0x1b649f[_0xb668('0x4f')][_0xb668('0x29')]({'plain':!![]});if(!_0x4e0628)throw new Error(_0xb668('0x50'));if(_0x4e0628[_0xb668('0x51')]===_0xb668('0x4f')){var _0x3da9ba=_0x4065f7[_0xb668('0x29')]({'plain':!![]});var _0x1bff79=_0xb668('0x2a');return db['UserProfileSection'][_0xb668('0x4b')]({'where':{'name':_0x1bff79,'userProfileId':_0x4e0628[_0xb668('0x52')]},'raw':!![]})[_0xb668('0x28')](function(_0x4c9eab){if(_0x4c9eab&&_0x4c9eab['autoAssociation']===0x0){return db[_0xb668('0x2b')][_0xb668('0x4d')]({'name':_0x3da9ba[_0xb668('0x2e')],'resourceId':_0x3da9ba['id'],'type':_0x4c9eab['name'],'sectionId':_0x4c9eab['id']},{})[_0xb668('0x28')](function(){return _0x4065f7;});}else{return _0x4065f7;}})['catch'](function(_0x51a5d3){logger[_0xb668('0x2c')](_0xb668('0x53'),_0x51a5d3);throw _0x51a5d3;});}return _0x4065f7;})[_0xb668('0x28')](respondWithResult(_0x16d06f,0xc9))[_0xb668('0x4c')](handleError(_0x16d06f,null));};exports[_0xb668('0x26')]=function(_0x42b306,_0x40f9a0){if(_0x42b306[_0xb668('0x4e')]['id']){delete _0x42b306[_0xb668('0x4e')]['id'];}return db[_0xb668('0x31')][_0xb668('0x4b')]({'where':{'id':_0x42b306[_0xb668('0x4a')]['id']}})[_0xb668('0x28')](handleEntityNotFound(_0x40f9a0,null))[_0xb668('0x28')](saveUpdates(_0x42b306[_0xb668('0x4e')],null))[_0xb668('0x28')](respondWithResult(_0x40f9a0,null))[_0xb668('0x4c')](handleError(_0x40f9a0,null));};exports[_0xb668('0x27')]=function(_0x414660,_0x3b4fd5){return db[_0xb668('0x31')][_0xb668('0x4b')]({'where':{'id':_0x414660[_0xb668('0x4a')]['id']}})[_0xb668('0x28')](handleEntityNotFound(_0x3b4fd5,null))[_0xb668('0x28')](removeEntity(_0x3b4fd5,null))[_0xb668('0x4c')](handleError(_0x3b4fd5,null));};
\ No newline at end of file
+var _0xa75b=['rawAttributes','fieldName','type','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','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','get','Tags','UserProfileResource','end','sendStatus','error','stack','name','send','index','map','Tag'];(function(_0x2fbd38,_0x10738f){var _0x16d43a=function(_0x469ebe){while(--_0x469ebe){_0x2fbd38['push'](_0x2fbd38['shift']());}};_0x16d43a(++_0x10738f);}(_0xa75b,0x170));var _0xba75=function(_0x5c49ac,_0x3c5224){_0x5c49ac=_0x5c49ac-0x0;var _0x349876=_0xa75b[_0x5c49ac];return _0x349876;};'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(){var _0x246c48=_0x14c54b[_0xba75('0x23')]({'plain':!![]});var _0xe579fb=_0xba75('0x24');return db[_0xba75('0x25')][_0xba75('0x22')]({'where':{'type':_0xe579fb,'resourceId':_0x246c48['id']}})[_0xba75('0x21')](function(){return _0x14c54b;});})[_0xba75('0x21')](function(){_0x139fa4[_0xba75('0x1a')](0xcc)[_0xba75('0x26')]();});}};}function handleEntityNotFound(_0x47ddff,_0x4c8d02){return function(_0x4e1987){if(!_0x4e1987){_0x47ddff[_0xba75('0x27')](0x194);}return _0x4e1987;};}function handleError(_0x4856be,_0x42cefb){_0x42cefb=_0x42cefb||0x1f4;return function(_0x58ea2d){logger[_0xba75('0x28')](_0x58ea2d[_0xba75('0x29')]);if(_0x58ea2d[_0xba75('0x2a')]){delete _0x58ea2d['name'];}_0x4856be[_0xba75('0x1a')](_0x42cefb)[_0xba75('0x2b')](_0x58ea2d);};}exports[_0xba75('0x2c')]=function(_0x2808f0,_0x5d9f78){var _0x4791a5={},_0x200715={},_0x481a04={'count':0x0,'rows':[]};var _0x5a85ee=_[_0xba75('0x2d')](db[_0xba75('0x2e')][_0xba75('0x2f')],function(_0x4b4d69){return{'name':_0x4b4d69[_0xba75('0x30')],'type':_0x4b4d69[_0xba75('0x31')]['key']};});_0x200715[_0xba75('0x32')]=_[_0xba75('0x2d')](_0x5a85ee,_0xba75('0x2a'));_0x200715[_0xba75('0x33')]=_['keys'](_0x2808f0[_0xba75('0x33')]);_0x200715[_0xba75('0x34')]=_['intersection'](_0x200715[_0xba75('0x32')],_0x200715[_0xba75('0x33')]);_0x4791a5[_0xba75('0x35')]=_['intersection'](_0x200715[_0xba75('0x32')],qs[_0xba75('0x36')](_0x2808f0[_0xba75('0x33')][_0xba75('0x36')]));_0x4791a5[_0xba75('0x35')]=_0x4791a5[_0xba75('0x35')][_0xba75('0x37')]?_0x4791a5['attributes']:_0x200715['model'];if(!_0x2808f0[_0xba75('0x33')][_0xba75('0x38')](_0xba75('0x39'))){_0x4791a5['limit']=qs[_0xba75('0x1c')](_0x2808f0[_0xba75('0x33')]['limit']);_0x4791a5['offset']=qs[_0xba75('0x1b')](_0x2808f0[_0xba75('0x33')][_0xba75('0x1b')]);}_0x4791a5[_0xba75('0x3a')]=qs[_0xba75('0x3b')](_0x2808f0['query']['sort']);_0x4791a5[_0xba75('0x3c')]=qs[_0xba75('0x34')](_[_0xba75('0x3d')](_0x2808f0[_0xba75('0x33')],_0x200715[_0xba75('0x34')]),_0x5a85ee);if(_0x2808f0[_0xba75('0x33')][_0xba75('0x3e')]){_0x4791a5['where']=_[_0xba75('0x3f')](_0x4791a5[_0xba75('0x3c')],{'$or':_['map'](_0x5a85ee,function(_0x1f28e8){if(_0x1f28e8[_0xba75('0x31')]!==_0xba75('0x40')){var _0x45d8cd={};_0x45d8cd[_0x1f28e8[_0xba75('0x2a')]]={'$like':'%'+_0x2808f0[_0xba75('0x33')][_0xba75('0x3e')]+'%'};return _0x45d8cd;}})});}_0x4791a5=_['merge']({},_0x4791a5,_0x2808f0[_0xba75('0x41')]);var _0x59d005={'where':_0x4791a5[_0xba75('0x3c')]};return db['Tag'][_0xba75('0x1e')](_0x59d005)[_0xba75('0x21')](function(_0x9c32ad){_0x481a04[_0xba75('0x1e')]=_0x9c32ad;if(_0x2808f0[_0xba75('0x33')][_0xba75('0x42')]){_0x4791a5[_0xba75('0x43')]=[{'all':!![]}];}return db[_0xba75('0x2e')][_0xba75('0x44')](_0x4791a5);})['then'](function(_0x30b5f0){_0x481a04[_0xba75('0x45')]=_0x30b5f0;return _0x481a04;})['then'](respondWithFilteredResult(_0x5d9f78,_0x4791a5))[_0xba75('0x46')](handleError(_0x5d9f78,null));};exports[_0xba75('0x47')]=function(_0x1130ac,_0x5bf935){var _0x5043a5={'raw':!![],'where':{'id':_0x1130ac['params']['id']}},_0x5c6491={};_0x5c6491[_0xba75('0x32')]=_['keys'](db[_0xba75('0x2e')][_0xba75('0x2f')]);_0x5c6491[_0xba75('0x33')]=_[_0xba75('0x48')](_0x1130ac[_0xba75('0x33')]);_0x5c6491['filters']=_['intersection'](_0x5c6491[_0xba75('0x32')],_0x5c6491['query']);_0x5043a5[_0xba75('0x35')]=_['intersection'](_0x5c6491[_0xba75('0x32')],qs[_0xba75('0x36')](_0x1130ac[_0xba75('0x33')][_0xba75('0x36')]));_0x5043a5['attributes']=_0x5043a5[_0xba75('0x35')][_0xba75('0x37')]?_0x5043a5[_0xba75('0x35')]:_0x5c6491[_0xba75('0x32')];if(_0x1130ac[_0xba75('0x33')][_0xba75('0x42')]){_0x5043a5[_0xba75('0x43')]=[{'all':!![]}];}_0x5043a5=_[_0xba75('0x3f')]({},_0x5043a5,_0x1130ac['options']);return db[_0xba75('0x2e')][_0xba75('0x49')](_0x5043a5)[_0xba75('0x21')](handleEntityNotFound(_0x5bf935,null))[_0xba75('0x21')](respondWithResult(_0x5bf935,null))[_0xba75('0x46')](handleError(_0x5bf935,null));};exports['create']=function(_0x2a1f84,_0x25ae33){return db[_0xba75('0x2e')][_0xba75('0x4a')](_0x2a1f84[_0xba75('0x4b')],{})[_0xba75('0x21')](function(_0x2c9085){var _0x5dc5f8=_0x2a1f84[_0xba75('0x4c')][_0xba75('0x23')]({'plain':!![]});if(!_0x5dc5f8)throw new Error(_0xba75('0x4d'));if(_0x5dc5f8['role']===_0xba75('0x4c')){var _0x29b4fc=_0x2c9085['get']({'plain':!![]});var _0x4d7e7e=_0xba75('0x24');return db['UserProfileSection']['find']({'where':{'name':_0x4d7e7e,'userProfileId':_0x5dc5f8[_0xba75('0x4e')]},'raw':!![]})['then'](function(_0xbb87b9){if(_0xbb87b9&&_0xbb87b9[_0xba75('0x4f')]===0x0){return db[_0xba75('0x25')][_0xba75('0x4a')]({'name':_0x29b4fc[_0xba75('0x2a')],'resourceId':_0x29b4fc['id'],'type':_0xbb87b9['name'],'sectionId':_0xbb87b9['id']},{})[_0xba75('0x21')](function(){return _0x2c9085;});}else{return _0x2c9085;}})[_0xba75('0x46')](function(_0x57aaa6){logger[_0xba75('0x28')](_0xba75('0x50'),_0x57aaa6);throw _0x57aaa6;});}return _0x2c9085;})[_0xba75('0x21')](respondWithResult(_0x25ae33,0xc9))[_0xba75('0x46')](handleError(_0x25ae33,null));};exports[_0xba75('0x51')]=function(_0x52b2c9,_0x43f4b7){if(_0x52b2c9[_0xba75('0x4b')]['id']){delete _0x52b2c9['body']['id'];}return db[_0xba75('0x2e')][_0xba75('0x49')]({'where':{'id':_0x52b2c9[_0xba75('0x52')]['id']}})[_0xba75('0x21')](handleEntityNotFound(_0x43f4b7,null))[_0xba75('0x21')](saveUpdates(_0x52b2c9[_0xba75('0x4b')],null))['then'](respondWithResult(_0x43f4b7,null))[_0xba75('0x46')](handleError(_0x43f4b7,null));};exports[_0xba75('0x22')]=function(_0x361efb,_0x429e26){return db[_0xba75('0x2e')][_0xba75('0x49')]({'where':{'id':_0x361efb['params']['id']}})['then'](handleEntityNotFound(_0x429e26,null))['then'](removeEntity(_0x429e26,null))['catch'](handleError(_0x429e26,null));};
\ No newline at end of file
index 4d43b81..a8e6494 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7a5=['lodash','api','bluebird','request-promise','../../config/environment','./tag.attributes','exports','define','Tag','tools_tags'];(function(_0x455a2b,_0x426b18){var _0x2a6b34=function(_0x15187c){while(--_0x15187c){_0x455a2b['push'](_0x455a2b['shift']());}};_0x2a6b34(++_0x426b18);}(_0xd7a5,0xb4));var _0x5d7a=function(_0x47b15f,_0x103e93){_0x47b15f=_0x47b15f-0x0;var _0x55bf25=_0xd7a5[_0x47b15f];return _0x55bf25;};'use strict';var _=require(_0x5d7a('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x5d7a('0x1'));var moment=require('moment');var BPromise=require(_0x5d7a('0x2'));var rp=require(_0x5d7a('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5d7a('0x4'));var attributes=require(_0x5d7a('0x5'));module[_0x5d7a('0x6')]=function(_0x533617,_0x35ac26){return _0x533617[_0x5d7a('0x7')](_0x5d7a('0x8'),attributes,{'tableName':_0x5d7a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf462=['api','bluebird','path','rimraf','../../config/environment','./tag.attributes','define','Tag','tools_tags','lodash','../../config/logger'];(function(_0x45cf5d,_0x51bdb6){var _0x207ed3=function(_0x1ecf53){while(--_0x1ecf53){_0x45cf5d['push'](_0x45cf5d['shift']());}};_0x207ed3(++_0x51bdb6);}(_0xf462,0xb9));var _0x2f46=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xf462[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0x2f46('0x0'));var util=require('util');var logger=require(_0x2f46('0x1'))(_0x2f46('0x2'));var moment=require('moment');var BPromise=require(_0x2f46('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2f46('0x4'));var rimraf=require(_0x2f46('0x5'));var config=require(_0x2f46('0x6'));var attributes=require(_0x2f46('0x7'));module['exports']=function(_0x2f31b2,_0x11a386){return _0x2f31b2[_0x2f46('0x8')](_0x2f46('0x9'),attributes,{'tableName':_0x2f46('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ba73a19..0ecd972 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe107=['then','Tag,\x20%s,\x20%s','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s','error','code','message','info','lodash','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise'];(function(_0xd5425d,_0x2dfeec){var _0x3e0147=function(_0x270ead){while(--_0x270ead){_0xd5425d['push'](_0xd5425d['shift']());}};_0x3e0147(++_0x2dfeec);}(_0xe107,0xb3));var _0x7e10=function(_0x10c759,_0x14b7d9){_0x10c759=_0x10c759-0x0;var _0x3c16c9=_0xe107[_0x10c759];return _0x3c16c9;};'use strict';var _=require(_0x7e10('0x0'));var util=require('util');var moment=require(_0x7e10('0x1'));var BPromise=require(_0x7e10('0x2'));var rs=require(_0x7e10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7e10('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7e10('0x5'));var config=require(_0x7e10('0x6'));var jayson=require(_0x7e10('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1dd3de,_0x7378b3,_0x156c56){return new BPromise(function(_0x3413f7,_0x493958){return client['request'](_0x1dd3de,_0x156c56)[_0x7e10('0x8')](function(_0x490a7a){logger['info'](_0x7e10('0x9'),_0x7378b3,_0x7e10('0xa'));logger[_0x7e10('0xb')](_0x7e10('0xc'),_0x7378b3,_0x7e10('0xa'),JSON['stringify'](_0x490a7a));if(_0x490a7a[_0x7e10('0xd')]){if(_0x490a7a['error'][_0x7e10('0xe')]===0x1f4){logger[_0x7e10('0xd')](_0x7e10('0x9'),_0x7378b3,_0x490a7a['error'][_0x7e10('0xf')]);return _0x493958(_0x490a7a[_0x7e10('0xd')][_0x7e10('0xf')]);}logger[_0x7e10('0xd')](_0x7e10('0x9'),_0x7378b3,_0x490a7a[_0x7e10('0xd')][_0x7e10('0xf')]);return _0x3413f7(_0x490a7a[_0x7e10('0xd')]['message']);}else{logger[_0x7e10('0x10')](_0x7e10('0x9'),_0x7378b3,'request\x20sent');_0x3413f7(_0x490a7a['result'][_0x7e10('0xf')]);}})['catch'](function(_0xe1abd2){logger[_0x7e10('0xd')](_0x7e10('0x9'),_0x7378b3,_0xe1abd2);_0x493958(_0xe1abd2);});});}
\ No newline at end of file
+var _0xb7c8=['error','Tag,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify'];(function(_0x17c649,_0x4907e0){var _0x31a7fb=function(_0x43b049){while(--_0x43b049){_0x17c649['push'](_0x17c649['shift']());}};_0x31a7fb(++_0x4907e0);}(_0xb7c8,0x119));var _0x8b7c=function(_0x1a61a8,_0x2d263f){_0x1a61a8=_0x1a61a8-0x0;var _0x2387b6=_0xb7c8[_0x1a61a8];return _0x2387b6;};'use strict';var _=require('lodash');var util=require(_0x8b7c('0x0'));var moment=require(_0x8b7c('0x1'));var BPromise=require(_0x8b7c('0x2'));var rs=require(_0x8b7c('0x3'));var fs=require('fs');var Redis=require(_0x8b7c('0x4'));var db=require(_0x8b7c('0x5'))['db'];var utils=require(_0x8b7c('0x6'));var logger=require('../../config/logger')(_0x8b7c('0x7'));var config=require(_0x8b7c('0x8'));var jayson=require(_0x8b7c('0x9'));var client=jayson[_0x8b7c('0xa')][_0x8b7c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x12665c,_0x7a3850,_0x3c8fd6){return new BPromise(function(_0x6afb55,_0x30a924){return client[_0x8b7c('0xc')](_0x12665c,_0x3c8fd6)[_0x8b7c('0xd')](function(_0x48370e){logger[_0x8b7c('0xe')]('Tag,\x20%s,\x20%s',_0x7a3850,_0x8b7c('0xf'));logger[_0x8b7c('0x10')]('Tag,\x20%s,\x20%s,\x20%s',_0x7a3850,_0x8b7c('0xf'),JSON[_0x8b7c('0x11')](_0x48370e));if(_0x48370e[_0x8b7c('0x12')]){if(_0x48370e['error']['code']===0x1f4){logger[_0x8b7c('0x12')](_0x8b7c('0x13'),_0x7a3850,_0x48370e[_0x8b7c('0x12')][_0x8b7c('0x14')]);return _0x30a924(_0x48370e[_0x8b7c('0x12')][_0x8b7c('0x14')]);}logger[_0x8b7c('0x12')]('Tag,\x20%s,\x20%s',_0x7a3850,_0x48370e[_0x8b7c('0x12')][_0x8b7c('0x14')]);return _0x6afb55(_0x48370e[_0x8b7c('0x12')]['message']);}else{logger[_0x8b7c('0xe')](_0x8b7c('0x13'),_0x7a3850,'request\x20sent');_0x6afb55(_0x48370e[_0x8b7c('0x15')][_0x8b7c('0x14')]);}})[_0x8b7c('0x16')](function(_0x1682fd){logger[_0x8b7c('0x12')]('Tag,\x20%s,\x20%s',_0x7a3850,_0x1682fd);_0x30a924(_0x1682fd);});});}
\ No newline at end of file
index 19f39a7..92d8cf9 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(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xa9e0[_0x1c546c];return _0x2cc384;};'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(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0xa9e0[_0x5b561d];return _0x431060;};'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 64f160b..bb2ff84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['exports','STRING'];(function(_0xc79d10,_0x455f52){var _0x24a9f6=function(_0x1ad473){while(--_0x1ad473){_0xc79d10['push'](_0xc79d10['shift']());}};_0x24a9f6(++_0x455f52);}(_0x757a,0xde));var _0xa757=function(_0x5a2495,_0x22b34b){_0x5a2495=_0x5a2495-0x0;var _0x67451d=_0x757a[_0x5a2495];return _0x67451d;};'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 _0xe706=['STRING','sequelize','exports'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xe706,0xa3));var _0x6e70=function(_0x1fe809,_0x433222){_0x1fe809=_0x1fe809-0x0;var _0x59c58c=_0xe706[_0x1fe809];return _0x59c58c;};'use strict';var Sequelize=require(_0x6e70('0x0'));module[_0x6e70('0x1')]={'name':{'type':Sequelize[_0x6e70('0x2')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize[_0x6e70('0x2')]}};
\ No newline at end of file
index d068d7e..6599ae2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e31=['keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','Team','includeAll','findAll','rows','catch','show','include','options','create','body','get','role','user','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','getQueues','findOne','channel','Sequelize','toLowerCase','Queue','pick','capitalize','Queues','addQueues','isValidChannel','ValidationError','add','removeQueues','remove','ids','addAgents','Voice','Chat','Mail','Sms','Fax','Openchannel','Whatsapp','sequelize','transaction','penalty','QueueId','TeamVoiceQueue','voicePause','interface','UserVoiceQueueRt','upsert','isNil','SIP/%s','all','spread','parse','emit','Queue:remove','removeAgents','User','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','destroy','then','Teams','end','stack','name','send','index','map','rawAttributes','fieldName','type','model','query'];(function(_0x1cfa0d,_0x4391f2){var _0xe33279=function(_0x3ce7c1){while(--_0x3ce7c1){_0x1cfa0d['push'](_0x1cfa0d['shift']());}};_0xe33279(++_0x4391f2);}(_0x3e31,0x156));var _0x13e3=function(_0x2895c7,_0x55deb3){_0x2895c7=_0x2895c7-0x0;var _0x1cafe9=_0x3e31[_0x2895c7];return _0x1cafe9;};'use strict';var emlformat=require(_0x13e3('0x0'));var rimraf=require(_0x13e3('0x1'));var zipdir=require(_0x13e3('0x2'));var jsonpatch=require(_0x13e3('0x3'));var rp=require('request-promise');var moment=require(_0x13e3('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x13e3('0x5'));var util=require(_0x13e3('0x6'));var path=require('path');var sox=require(_0x13e3('0x7'));var csv=require(_0x13e3('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x13e3('0x9'));var _=require(_0x13e3('0xa'));var squel=require(_0x13e3('0xb'));var crypto=require(_0x13e3('0xc'));var jsforce=require(_0x13e3('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x13e3('0x8'));var querystring=require('querystring');var Papa=require(_0x13e3('0xe'));var Redis=require(_0x13e3('0xf'));var authService=require(_0x13e3('0x10'));var qs=require(_0x13e3('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x13e3('0x12'));var logger=require(_0x13e3('0x13'))('api');var utils=require(_0x13e3('0x14'));var config=require(_0x13e3('0x15'));var licenseUtil=require(_0x13e3('0x16'));var db=require(_0x13e3('0x17'))['db'];config['redis']=_[_0x13e3('0x18')](config[_0x13e3('0x19')],{'host':_0x13e3('0x1a'),'port':0x18eb});var socket=require(_0x13e3('0x1b'))(new Redis(config['redis']));require('./team.socket')[_0x13e3('0x1c')](socket);function respondWithStatusCode(_0x1dc7b3,_0x1a1870){_0x1a1870=_0x1a1870||0xcc;return function(_0x17385d){if(_0x17385d){return _0x1dc7b3[_0x13e3('0x1d')](_0x1a1870);}return _0x1dc7b3[_0x13e3('0x1e')](_0x1a1870)['end']();};}function respondWithResult(_0x43a083,_0x1961fa){_0x1961fa=_0x1961fa||0xc8;return function(_0x2e974a){if(_0x2e974a){return _0x43a083[_0x13e3('0x1e')](_0x1961fa)[_0x13e3('0x1f')](_0x2e974a);}};}function respondWithFilteredResult(_0x53366e,_0x2c26e9){return function(_0x14a9fb){if(_0x14a9fb){var _0x5b743d=typeof _0x2c26e9[_0x13e3('0x20')]===_0x13e3('0x21')&&typeof _0x2c26e9[_0x13e3('0x22')]===_0x13e3('0x21');var _0x31c5ae=_0x14a9fb[_0x13e3('0x23')];var _0x10f7eb=_0x5b743d?0x0:_0x2c26e9[_0x13e3('0x20')];var _0x3f1957=_0x5b743d?_0x14a9fb[_0x13e3('0x23')]:_0x2c26e9[_0x13e3('0x20')]+_0x2c26e9[_0x13e3('0x22')];var _0x3a8514;if(_0x3f1957>=_0x31c5ae){_0x3f1957=_0x31c5ae;_0x3a8514=0xc8;}else{_0x3a8514=0xce;}_0x53366e[_0x13e3('0x1e')](_0x3a8514);return _0x53366e['set'](_0x13e3('0x24'),_0x10f7eb+'-'+_0x3f1957+'/'+_0x31c5ae)[_0x13e3('0x1f')](_0x14a9fb);}return null;};}function patchUpdates(_0x5832c7){return function(_0x3df3b0){try{jsonpatch[_0x13e3('0x25')](_0x3df3b0,_0x5832c7,!![]);}catch(_0x1b0c01){return BPromise['reject'](_0x1b0c01);}return _0x3df3b0[_0x13e3('0x26')]();};}function saveUpdates(_0x5e42f0,_0x2b906c){return function(_0x393026){if(_0x393026){return _0x393026[_0x13e3('0x27')](_0x5e42f0)['then'](function(_0x47a8dd){return _0x47a8dd;});}return null;};}function removeEntity(_0x3c0a0e,_0x230378){return function(_0x2455a7){if(_0x2455a7){return _0x2455a7[_0x13e3('0x28')]()[_0x13e3('0x29')](function(){var _0x56251e=_0x2455a7['get']({'plain':!![]});var _0x2ca71c=_0x13e3('0x2a');return db['UserProfileResource'][_0x13e3('0x28')]({'where':{'type':_0x2ca71c,'resourceId':_0x56251e['id']}})[_0x13e3('0x29')](function(){return _0x2455a7;});})['then'](function(){_0x3c0a0e[_0x13e3('0x1e')](0xcc)[_0x13e3('0x2b')]();});}};}function handleEntityNotFound(_0x22d215,_0x2a5479){return function(_0x322e04){if(!_0x322e04){_0x22d215['sendStatus'](0x194);}return _0x322e04;};}function handleError(_0x65721,_0xef29b6){_0xef29b6=_0xef29b6||0x1f4;return function(_0x59aea2){logger['error'](_0x59aea2[_0x13e3('0x2c')]);if(_0x59aea2['name']){delete _0x59aea2[_0x13e3('0x2d')];}_0x65721[_0x13e3('0x1e')](_0xef29b6)[_0x13e3('0x2e')](_0x59aea2);};}exports[_0x13e3('0x2f')]=function(_0x4f074e,_0x3f678e){var _0x458a8c={},_0x77381f={},_0x565ab9={'count':0x0,'rows':[]};var _0x1c93ae=_[_0x13e3('0x30')](db['Team'][_0x13e3('0x31')],function(_0x2da6f5){return{'name':_0x2da6f5[_0x13e3('0x32')],'type':_0x2da6f5[_0x13e3('0x33')]['key']};});_0x77381f[_0x13e3('0x34')]=_[_0x13e3('0x30')](_0x1c93ae,_0x13e3('0x2d'));_0x77381f[_0x13e3('0x35')]=_[_0x13e3('0x36')](_0x4f074e[_0x13e3('0x35')]);_0x77381f[_0x13e3('0x37')]=_[_0x13e3('0x38')](_0x77381f[_0x13e3('0x34')],_0x77381f[_0x13e3('0x35')]);_0x458a8c[_0x13e3('0x39')]=_['intersection'](_0x77381f[_0x13e3('0x34')],qs[_0x13e3('0x3a')](_0x4f074e[_0x13e3('0x35')][_0x13e3('0x3a')]));_0x458a8c['attributes']=_0x458a8c[_0x13e3('0x39')][_0x13e3('0x3b')]?_0x458a8c[_0x13e3('0x39')]:_0x77381f[_0x13e3('0x34')];if(!_0x4f074e[_0x13e3('0x35')][_0x13e3('0x3c')](_0x13e3('0x3d'))){_0x458a8c[_0x13e3('0x22')]=qs['limit'](_0x4f074e[_0x13e3('0x35')][_0x13e3('0x22')]);_0x458a8c[_0x13e3('0x20')]=qs['offset'](_0x4f074e[_0x13e3('0x35')]['offset']);}_0x458a8c[_0x13e3('0x3e')]=qs[_0x13e3('0x3f')](_0x4f074e[_0x13e3('0x35')][_0x13e3('0x3f')]);_0x458a8c[_0x13e3('0x40')]=qs[_0x13e3('0x37')](_['pick'](_0x4f074e[_0x13e3('0x35')],_0x77381f[_0x13e3('0x37')]),_0x1c93ae);if(_0x4f074e[_0x13e3('0x35')][_0x13e3('0x41')]){_0x458a8c[_0x13e3('0x40')]=_[_0x13e3('0x42')](_0x458a8c[_0x13e3('0x40')],{'$or':_[_0x13e3('0x30')](_0x1c93ae,function(_0xd5595b){if(_0xd5595b[_0x13e3('0x33')]!==_0x13e3('0x43')){var _0x2a9db0={};_0x2a9db0[_0xd5595b[_0x13e3('0x2d')]]={'$like':'%'+_0x4f074e[_0x13e3('0x35')][_0x13e3('0x41')]+'%'};return _0x2a9db0;}})});}_0x458a8c=_[_0x13e3('0x42')]({},_0x458a8c,_0x4f074e['options']);var _0x191529={'where':_0x458a8c[_0x13e3('0x40')]};return db[_0x13e3('0x44')][_0x13e3('0x23')](_0x191529)[_0x13e3('0x29')](function(_0x3910d2){_0x565ab9['count']=_0x3910d2;if(_0x4f074e['query'][_0x13e3('0x45')]){_0x458a8c['include']=[{'all':!![]}];}return db[_0x13e3('0x44')][_0x13e3('0x46')](_0x458a8c);})[_0x13e3('0x29')](function(_0x151898){_0x565ab9[_0x13e3('0x47')]=_0x151898;return _0x565ab9;})[_0x13e3('0x29')](respondWithFilteredResult(_0x3f678e,_0x458a8c))[_0x13e3('0x48')](handleError(_0x3f678e,null));};exports[_0x13e3('0x49')]=function(_0x59f929,_0x538078){var _0x359389={'raw':![],'where':{'id':_0x59f929['params']['id']}},_0x4cc30e={};_0x4cc30e['model']=_[_0x13e3('0x36')](db[_0x13e3('0x44')]['rawAttributes']);_0x4cc30e[_0x13e3('0x35')]=_['keys'](_0x59f929[_0x13e3('0x35')]);_0x4cc30e['filters']=_[_0x13e3('0x38')](_0x4cc30e[_0x13e3('0x34')],_0x4cc30e[_0x13e3('0x35')]);_0x359389['attributes']=_[_0x13e3('0x38')](_0x4cc30e[_0x13e3('0x34')],qs[_0x13e3('0x3a')](_0x59f929[_0x13e3('0x35')][_0x13e3('0x3a')]));_0x359389['attributes']=_0x359389[_0x13e3('0x39')][_0x13e3('0x3b')]?_0x359389[_0x13e3('0x39')]:_0x4cc30e[_0x13e3('0x34')];if(_0x59f929[_0x13e3('0x35')][_0x13e3('0x45')]){_0x359389[_0x13e3('0x4a')]=[{'all':!![]}];}_0x359389=_[_0x13e3('0x42')]({},_0x359389,_0x59f929[_0x13e3('0x4b')]);return db[_0x13e3('0x44')]['find'](_0x359389)[_0x13e3('0x29')](handleEntityNotFound(_0x538078,null))[_0x13e3('0x29')](respondWithResult(_0x538078,null))[_0x13e3('0x48')](handleError(_0x538078,null));};exports[_0x13e3('0x4c')]=function(_0xfde200,_0xd11148){return db['Team']['create'](_0xfde200[_0x13e3('0x4d')],{})[_0x13e3('0x29')](function(_0x398802){var _0x3e076e=_0xfde200['user'][_0x13e3('0x4e')]({'plain':!![]});if(!_0x3e076e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3e076e[_0x13e3('0x4f')]===_0x13e3('0x50')){var _0x15fe56=_0x398802[_0x13e3('0x4e')]({'plain':!![]});var _0xb1bdd7=_0x13e3('0x2a');return db[_0x13e3('0x51')][_0x13e3('0x52')]({'where':{'name':_0xb1bdd7,'userProfileId':_0x3e076e[_0x13e3('0x53')]},'raw':!![]})[_0x13e3('0x29')](function(_0x1ccd94){if(_0x1ccd94&&_0x1ccd94[_0x13e3('0x54')]===0x0){return db[_0x13e3('0x55')][_0x13e3('0x4c')]({'name':_0x15fe56[_0x13e3('0x2d')],'resourceId':_0x15fe56['id'],'type':_0x1ccd94[_0x13e3('0x2d')],'sectionId':_0x1ccd94['id']},{})[_0x13e3('0x29')](function(){return _0x398802;});}else{return _0x398802;}})[_0x13e3('0x48')](function(_0x5c33ee){logger[_0x13e3('0x56')](_0x13e3('0x57'),_0x5c33ee);throw _0x5c33ee;});}return _0x398802;})['then'](respondWithResult(_0xd11148,0xc9))[_0x13e3('0x48')](handleError(_0xd11148,null));};exports['update']=function(_0x30015a,_0x49262e){if(_0x30015a['body']['id']){delete _0x30015a[_0x13e3('0x4d')]['id'];}return db[_0x13e3('0x44')][_0x13e3('0x52')]({'where':{'id':_0x30015a[_0x13e3('0x58')]['id']}})['then'](handleEntityNotFound(_0x49262e,null))[_0x13e3('0x29')](saveUpdates(_0x30015a['body'],null))[_0x13e3('0x29')](respondWithResult(_0x49262e,null))[_0x13e3('0x48')](handleError(_0x49262e,null));};exports['destroy']=function(_0x288d0d,_0x516179){return db[_0x13e3('0x44')][_0x13e3('0x52')]({'where':{'id':_0x288d0d['params']['id']}})[_0x13e3('0x29')](handleEntityNotFound(_0x516179,null))[_0x13e3('0x29')](removeEntity(_0x516179,null))[_0x13e3('0x48')](handleError(_0x516179,null));};exports[_0x13e3('0x59')]=function(_0x2f0a90,_0x46e191,_0x3c7745){return db[_0x13e3('0x44')][_0x13e3('0x5a')]({'where':{'id':_0x2f0a90[_0x13e3('0x58')]['id']}})['then'](handleEntityNotFound(_0x46e191,null))[_0x13e3('0x29')](function(_0x51b154){if(!_0x2f0a90[_0x13e3('0x35')]['channel']||!utils['isValidChannel'](_0x2f0a90['query'][_0x13e3('0x5b')])){throw new db[(_0x13e3('0x5c'))]['ValidationError']('Unknown\x20channel');}var _0x1ef554={};var _0x2b846a={};_0x2b846a[_0x13e3('0x34')]=_['keys'](db[_['capitalize'](_0x2f0a90[_0x13e3('0x35')]['channel'][_0x13e3('0x5d')]())+_0x13e3('0x5e')][_0x13e3('0x31')]);_0x2b846a[_0x13e3('0x35')]=_[_0x13e3('0x36')](_0x2f0a90[_0x13e3('0x35')]);_0x2b846a['filters']=_[_0x13e3('0x38')](_0x2b846a[_0x13e3('0x34')],_0x2b846a[_0x13e3('0x35')]);_0x1ef554['attributes']=_['intersection'](_0x2b846a[_0x13e3('0x34')],qs[_0x13e3('0x3a')](_0x2f0a90[_0x13e3('0x35')][_0x13e3('0x3a')]));_0x1ef554[_0x13e3('0x39')]=_0x1ef554[_0x13e3('0x39')][_0x13e3('0x3b')]?_0x1ef554[_0x13e3('0x39')]:_0x2b846a[_0x13e3('0x34')];_0x1ef554[_0x13e3('0x22')]=qs['limit'](_0x2f0a90['query'][_0x13e3('0x22')]);_0x1ef554[_0x13e3('0x20')]=qs[_0x13e3('0x20')](_0x2f0a90[_0x13e3('0x35')]['offset']);_0x1ef554['order']=qs['sort'](_0x2f0a90[_0x13e3('0x35')][_0x13e3('0x3f')]);_0x1ef554[_0x13e3('0x40')]=qs[_0x13e3('0x37')](_[_0x13e3('0x5f')](_0x2f0a90['query'],_0x2b846a[_0x13e3('0x37')]));_0x1ef554=_['merge']({},_0x1ef554,_0x2f0a90[_0x13e3('0x4b')]);return _0x51b154[_0x13e3('0x4e')+_[_0x13e3('0x60')](_0x2f0a90[_0x13e3('0x35')][_0x13e3('0x5b')][_0x13e3('0x5d')]())+_0x13e3('0x61')](_0x1ef554);})[_0x13e3('0x29')](respondWithResult(_0x46e191,null))[_0x13e3('0x48')](handleError(_0x46e191,null));};exports[_0x13e3('0x62')]=function(_0x5c74bd,_0x33cbc4,_0x5c3a88){return db[_0x13e3('0x44')][_0x13e3('0x5a')]({'where':{'id':_0x5c74bd[_0x13e3('0x58')]['id']}})['then'](function(_0x42796d){if(_0x42796d){if(!_0x5c74bd['body']['channel']||!utils[_0x13e3('0x63')](_0x5c74bd[_0x13e3('0x4d')][_0x13e3('0x5b')])){throw new db[(_0x13e3('0x5c'))][(_0x13e3('0x64'))]('Unknown\x20channel');}return _0x42796d[_0x13e3('0x65')+_[_0x13e3('0x60')](_0x5c74bd[_0x13e3('0x4d')][_0x13e3('0x5b')][_0x13e3('0x5d')]())+_0x13e3('0x61')](_0x5c74bd[_0x13e3('0x4d')]['ids']);}return null;})['then'](handleEntityNotFound(_0x33cbc4,null))[_0x13e3('0x29')](respondWithStatusCode(_0x33cbc4,null))['catch'](handleError(_0x33cbc4,null));};exports[_0x13e3('0x66')]=function(_0x381f5d,_0x487747,_0x52ddb7){return db[_0x13e3('0x44')]['findOne']({'where':{'id':_0x381f5d[_0x13e3('0x58')]['id']}})['then'](function(_0x4831d7){if(_0x4831d7){if(!_0x381f5d[_0x13e3('0x35')][_0x13e3('0x5b')]||!utils[_0x13e3('0x63')](_0x381f5d['query'][_0x13e3('0x5b')])){throw new db[(_0x13e3('0x5c'))]['ValidationError']('Unknown\x20channel');}return _0x4831d7[_0x13e3('0x67')+_[_0x13e3('0x60')](_0x381f5d[_0x13e3('0x35')][_0x13e3('0x5b')][_0x13e3('0x5d')]())+_0x13e3('0x61')](_0x381f5d['query'][_0x13e3('0x68')]);}return null;})[_0x13e3('0x29')](handleEntityNotFound(_0x487747,null))[_0x13e3('0x29')](respondWithStatusCode(_0x487747,null))['catch'](handleError(_0x487747,null));};exports[_0x13e3('0x69')]=function(_0x27a1f0,_0x1399a6){return db['Team'][_0x13e3('0x52')]({'where':{'id':_0x27a1f0['params']['id']}})['then'](handleEntityNotFound(_0x1399a6,null))[_0x13e3('0x29')](function(_0x1bd199){if(_0x1bd199){var _0x4719de=[_0x13e3('0x6a'),_0x13e3('0x6b'),_0x13e3('0x6c'),_0x13e3('0x6d'),_0x13e3('0x6e'),_0x13e3('0x6f'),_0x13e3('0x70')];return db[_0x13e3('0x71')][_0x13e3('0x72')](function(_0x4e2c13){var _0x5ce3a5=_['map'](_0x4719de,function(_0x297b9e){var _0x53dc60={'attributes':['id',_0x13e3('0x2d')]};if(_0x297b9e===_0x13e3('0x6a')){_0x53dc60['through']={'attributes':[_0x13e3('0x73')]};}return _0x1bd199[_0x13e3('0x4e')+_0x297b9e+_0x13e3('0x61')](_0x53dc60)['then'](function(_0x45cf45){var _0x2943dc=_[_0x13e3('0x30')](_0x45cf45,function(_0x566806){var _0x426252=_[_0x13e3('0x30')](_0x27a1f0[_0x13e3('0x4d')][_0x13e3('0x68')],function(_0x557425){var _0x44b34f={'where':{'UserId':_0x557425,[_0x297b9e+_0x13e3('0x74')]:_0x566806['id']},'transaction':_0x4e2c13};if(_0x297b9e==='Voice'){_0x44b34f[_0x13e3('0x18')]={'penalty':_0x566806[_0x13e3('0x75')][_0x13e3('0x73')]};}return db['User'+_0x297b9e+_0x13e3('0x5e')]['findOrCreate'](_0x44b34f)[_0x13e3('0x29')](function(){socket['emit']('user'+_0x297b9e+'Queue:save',{'UserId':_0x557425,[_0x297b9e+_0x13e3('0x74')]:_0x566806['id']});if(_0x297b9e!==_0x13e3('0x6a'))return;return db['User']['findAll']({'where':{'id':_0x27a1f0[_0x13e3('0x4d')]['ids'],'online':0x1},'attributes':['id','name','online',_0x13e3('0x76'),_0x13e3('0x77')],'raw':!![]})['then'](function(_0xaf20ef){var _0x4458d5=_['map'](_0xaf20ef,function(_0x73e83d){return db[_0x13e3('0x78')][_0x13e3('0x79')]({'membername':_0x73e83d[_0x13e3('0x2d')],'UserId':_0x73e83d['id'],'queue_name':_0x566806[_0x13e3('0x2d')],'VoiceQueueId':_0x566806['id'],'interface':_[_0x13e3('0x7a')](_0x73e83d[_0x13e3('0x77')])?util['format'](_0x13e3('0x7b'),_0x73e83d['name']):_0x73e83d['interface'],'paused':_0x73e83d[_0x13e3('0x76')]||![],'penalty':_0x566806[_0x13e3('0x75')][_0x13e3('0x73')]},{'transaction':_0x4e2c13});});return Promise['all'](_0x4458d5);});});});return Promise[_0x13e3('0x7c')](_0x426252);});return Promise['all'](_0x2943dc);});});return Promise[_0x13e3('0x7c')](_0x5ce3a5)[_0x13e3('0x29')](function(){return _0x1bd199[_0x13e3('0x69')](_0x27a1f0[_0x13e3('0x4d')][_0x13e3('0x68')],{'transaction':_0x4e2c13})[_0x13e3('0x7d')](function(_0x3c7c59){return _0x3c7c59;});});});}})[_0x13e3('0x29')](respondWithResult(_0x1399a6,null))[_0x13e3('0x48')](handleError(_0x1399a6,null));};exports['removeAgents']=function(_0x365e46,_0x214fc6){return db['Team']['find']({'where':{'id':_0x365e46[_0x13e3('0x58')]['id']}})[_0x13e3('0x29')](handleEntityNotFound(_0x214fc6,null))[_0x13e3('0x29')](function(_0x36ceba){if(_0x36ceba){var _0x1098a4=[_0x13e3('0x6a'),_0x13e3('0x6b'),'Mail','Sms',_0x13e3('0x6e'),_0x13e3('0x6f'),'Whatsapp'];return db['sequelize'][_0x13e3('0x72')](function(_0x43e798){var _0xd402b0=_[_0x13e3('0x30')](_0x1098a4,function(_0x361559){var _0x23a3e4={'attributes':['id',_0x13e3('0x2d')]};return _0x36ceba[_0x13e3('0x4e')+_0x361559+_0x13e3('0x61')](_0x23a3e4)['then'](function(_0x3fcee4){var _0x1e9e7a=_[_0x13e3('0x30')](_0x3fcee4,function(_0x284b47){return _0x284b47['removeAgents'](_0x365e46[_0x13e3('0x35')][_0x13e3('0x68')],{'transaction':_0x43e798})['then'](function(){var _0x590c55=JSON[_0x13e3('0x7e')]('['+_0x365e46[_0x13e3('0x35')][_0x13e3('0x68')]+']');var _0x1aaf77=_[_0x13e3('0x30')](_0x590c55,function(_0x2dce9c){socket[_0x13e3('0x7f')](_0x13e3('0x50')+_0x361559+_0x13e3('0x80'),{'UserId':Number(_0x2dce9c),[_0x361559+'QueueId']:_0x284b47['id']});if(_0x361559!==_0x13e3('0x6a'))return;return db[_0x13e3('0x78')]['destroy']({'where':{'VoiceQueueId':_0x284b47['id'],'UserId':_0x2dce9c},'transaction':_0x43e798});});return Promise[_0x13e3('0x7c')](_0x1aaf77);});});return Promise[_0x13e3('0x7c')](_0x1e9e7a);});});return Promise[_0x13e3('0x7c')](_0xd402b0)['then'](function(){return _0x36ceba[_0x13e3('0x81')](_0x365e46[_0x13e3('0x35')]['ids'],{'transaction':_0x43e798});});});}})[_0x13e3('0x29')](respondWithStatusCode(_0x214fc6,null))[_0x13e3('0x48')](handleError(_0x214fc6,null));};exports['getAgents']=function(_0x298d6a,_0x3451dc,_0x3aff32){var _0xceb4f8={};var _0x12a2da={};var _0x17a7ee;var _0x2151fa;return db[_0x13e3('0x44')][_0x13e3('0x5a')]({'where':{'id':_0x298d6a[_0x13e3('0x58')]['id']}})[_0x13e3('0x29')](handleEntityNotFound(_0x3451dc,null))[_0x13e3('0x29')](function(_0x805f4a){if(_0x805f4a){_0x17a7ee=_0x805f4a;_0x12a2da[_0x13e3('0x34')]=_[_0x13e3('0x36')](db[_0x13e3('0x82')][_0x13e3('0x31')]);_0x12a2da[_0x13e3('0x35')]=_[_0x13e3('0x36')](_0x298d6a[_0x13e3('0x35')]);_0x12a2da['filters']=_['intersection'](_0x12a2da[_0x13e3('0x34')],_0x12a2da[_0x13e3('0x35')]);_0xceb4f8[_0x13e3('0x39')]=_[_0x13e3('0x38')](_0x12a2da[_0x13e3('0x34')],qs[_0x13e3('0x3a')](_0x298d6a[_0x13e3('0x35')][_0x13e3('0x3a')]));_0xceb4f8[_0x13e3('0x39')]=_0xceb4f8['attributes']['length']?_0xceb4f8[_0x13e3('0x39')]:_0x12a2da[_0x13e3('0x34')];_0xceb4f8[_0x13e3('0x3e')]=qs[_0x13e3('0x3f')](_0x298d6a[_0x13e3('0x35')][_0x13e3('0x3f')]);_0xceb4f8[_0x13e3('0x40')]=qs[_0x13e3('0x37')](_['pick'](_0x298d6a[_0x13e3('0x35')],_0x12a2da[_0x13e3('0x37')]));if(_0x298d6a[_0x13e3('0x35')][_0x13e3('0x41')]){_0xceb4f8[_0x13e3('0x40')]=_[_0x13e3('0x42')](_0xceb4f8[_0x13e3('0x40')],{'$or':_['map'](_0xceb4f8[_0x13e3('0x39')],function(_0x59711d){var _0x29ea2f={};_0x29ea2f[_0x59711d]={'$like':'%'+_0x298d6a['query'][_0x13e3('0x41')]+'%'};return _0x29ea2f;})});}_0xceb4f8=_[_0x13e3('0x42')]({},_0xceb4f8,_0x298d6a['options']);return _0x17a7ee[_0x13e3('0x83')](_0xceb4f8);}})['then'](function(_0x46f26d){if(_0x46f26d){_0x2151fa=_0x46f26d[_0x13e3('0x3b')];if(!_0x298d6a[_0x13e3('0x35')][_0x13e3('0x3c')](_0x13e3('0x3d'))){_0xceb4f8['limit']=qs['limit'](_0x298d6a[_0x13e3('0x35')][_0x13e3('0x22')]);_0xceb4f8['offset']=qs['offset'](_0x298d6a[_0x13e3('0x35')]['offset']);}return _0x17a7ee[_0x13e3('0x83')](_0xceb4f8);}})[_0x13e3('0x29')](function(_0xe6edd4){if(_0xe6edd4){return _0xe6edd4?{'count':_0x2151fa,'rows':_0xe6edd4}:null;}})['then'](respondWithResult(_0x3451dc,null))[_0x13e3('0x48')](handleError(_0x3451dc,null));};
\ No newline at end of file
+var _0xa745=['role','user','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getQueues','findOne','channel','isValidChannel','ValidationError','Unknown\x20channel','toLowerCase','Queue','capitalize','Queues','addQueues','Sequelize','add','removeQueues','remove','ids','addAgents','Voice','Mail','Sms','Fax','Openchannel','Whatsapp','sequelize','transaction','through','penalty','QueueId','TeamVoiceQueue','User','findOrCreate','emit','Queue:save','findAll','online','voicePause','upsert','isNil','format','SIP/%s','interface','all','Chat','removeAgents','parse','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','socket.io-emitter','./team.socket','register','status','end','json','offset','undefined','count','apply','reject','save','update','then','destroy','get','Teams','sendStatus','stack','name','send','index','map','Team','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','rows','catch','params','includeAll','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user'];(function(_0x5ca3ae,_0x1d8e4c){var _0x374bef=function(_0x53cb3b){while(--_0x53cb3b){_0x5ca3ae['push'](_0x5ca3ae['shift']());}};_0x374bef(++_0x1d8e4c);}(_0xa745,0x1b9));var _0x5a74=function(_0x46a174,_0x807c8){_0x46a174=_0x46a174-0x0;var _0xbae100=_0xa745[_0x46a174];return _0xbae100;};'use strict';var emlformat=require(_0x5a74('0x0'));var rimraf=require(_0x5a74('0x1'));var zipdir=require(_0x5a74('0x2'));var jsonpatch=require(_0x5a74('0x3'));var rp=require('request-promise');var moment=require(_0x5a74('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x5a74('0x5'));var util=require(_0x5a74('0x6'));var path=require('path');var sox=require(_0x5a74('0x7'));var csv=require(_0x5a74('0x8'));var ejs=require(_0x5a74('0x9'));var fs=require('fs');var fs_extra=require(_0x5a74('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x5a74('0xb'));var jsforce=require(_0x5a74('0xc'));var deskjs=require(_0x5a74('0xd'));var toCsv=require('to-csv');var querystring=require(_0x5a74('0xe'));var Papa=require(_0x5a74('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x5a74('0x10'));var as=require(_0x5a74('0x11'));var hardwareService=require(_0x5a74('0x12'));var logger=require(_0x5a74('0x13'))('api');var utils=require(_0x5a74('0x14'));var config=require(_0x5a74('0x15'));var licenseUtil=require(_0x5a74('0x16'));var db=require('../../mysqldb')['db'];config[_0x5a74('0x17')]=_['defaults'](config[_0x5a74('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x5a74('0x18'))(new Redis(config[_0x5a74('0x17')]));require(_0x5a74('0x19'))[_0x5a74('0x1a')](socket);function respondWithStatusCode(_0x5bd294,_0x178a88){_0x178a88=_0x178a88||0xcc;return function(_0x53d971){if(_0x53d971){return _0x5bd294['sendStatus'](_0x178a88);}return _0x5bd294[_0x5a74('0x1b')](_0x178a88)[_0x5a74('0x1c')]();};}function respondWithResult(_0x430c54,_0x52957f){_0x52957f=_0x52957f||0xc8;return function(_0x21de3f){if(_0x21de3f){return _0x430c54[_0x5a74('0x1b')](_0x52957f)[_0x5a74('0x1d')](_0x21de3f);}};}function respondWithFilteredResult(_0xd14596,_0x2d2147){return function(_0x104b3c){if(_0x104b3c){var _0x1b9178=typeof _0x2d2147[_0x5a74('0x1e')]===_0x5a74('0x1f')&&typeof _0x2d2147['limit']==='undefined';var _0x4349f7=_0x104b3c['count'];var _0x321e36=_0x1b9178?0x0:_0x2d2147['offset'];var _0xb935cc=_0x1b9178?_0x104b3c[_0x5a74('0x20')]:_0x2d2147['offset']+_0x2d2147['limit'];var _0x3fea73;if(_0xb935cc>=_0x4349f7){_0xb935cc=_0x4349f7;_0x3fea73=0xc8;}else{_0x3fea73=0xce;}_0xd14596[_0x5a74('0x1b')](_0x3fea73);return _0xd14596['set']('Content-Range',_0x321e36+'-'+_0xb935cc+'/'+_0x4349f7)['json'](_0x104b3c);}return null;};}function patchUpdates(_0x11a8a4){return function(_0x508d2d){try{jsonpatch[_0x5a74('0x21')](_0x508d2d,_0x11a8a4,!![]);}catch(_0x3708e3){return BPromise[_0x5a74('0x22')](_0x3708e3);}return _0x508d2d[_0x5a74('0x23')]();};}function saveUpdates(_0xba9ab1,_0x31102e){return function(_0x4bf2ee){if(_0x4bf2ee){return _0x4bf2ee[_0x5a74('0x24')](_0xba9ab1)[_0x5a74('0x25')](function(_0x4299e9){return _0x4299e9;});}return null;};}function removeEntity(_0x169abe,_0xf60e06){return function(_0x9710be){if(_0x9710be){return _0x9710be[_0x5a74('0x26')]()[_0x5a74('0x25')](function(){var _0x1f14f2=_0x9710be[_0x5a74('0x27')]({'plain':!![]});var _0x16f471=_0x5a74('0x28');return db['UserProfileResource']['destroy']({'where':{'type':_0x16f471,'resourceId':_0x1f14f2['id']}})[_0x5a74('0x25')](function(){return _0x9710be;});})['then'](function(){_0x169abe[_0x5a74('0x1b')](0xcc)[_0x5a74('0x1c')]();});}};}function handleEntityNotFound(_0x340bd0,_0x493f7c){return function(_0xfb3c25){if(!_0xfb3c25){_0x340bd0[_0x5a74('0x29')](0x194);}return _0xfb3c25;};}function handleError(_0x2758d4,_0x4a9572){_0x4a9572=_0x4a9572||0x1f4;return function(_0x54fdcf){logger['error'](_0x54fdcf[_0x5a74('0x2a')]);if(_0x54fdcf[_0x5a74('0x2b')]){delete _0x54fdcf[_0x5a74('0x2b')];}_0x2758d4[_0x5a74('0x1b')](_0x4a9572)[_0x5a74('0x2c')](_0x54fdcf);};}exports[_0x5a74('0x2d')]=function(_0x5698ff,_0xdd4f92){var _0x42adb5={},_0xfa8bf9={},_0x59cee7={'count':0x0,'rows':[]};var _0x16ffe0=_[_0x5a74('0x2e')](db[_0x5a74('0x2f')][_0x5a74('0x30')],function(_0x4148dd){return{'name':_0x4148dd['fieldName'],'type':_0x4148dd[_0x5a74('0x31')][_0x5a74('0x32')]};});_0xfa8bf9[_0x5a74('0x33')]=_[_0x5a74('0x2e')](_0x16ffe0,_0x5a74('0x2b'));_0xfa8bf9[_0x5a74('0x34')]=_[_0x5a74('0x35')](_0x5698ff[_0x5a74('0x34')]);_0xfa8bf9[_0x5a74('0x36')]=_[_0x5a74('0x37')](_0xfa8bf9[_0x5a74('0x33')],_0xfa8bf9[_0x5a74('0x34')]);_0x42adb5[_0x5a74('0x38')]=_[_0x5a74('0x37')](_0xfa8bf9[_0x5a74('0x33')],qs[_0x5a74('0x39')](_0x5698ff[_0x5a74('0x34')][_0x5a74('0x39')]));_0x42adb5['attributes']=_0x42adb5[_0x5a74('0x38')][_0x5a74('0x3a')]?_0x42adb5[_0x5a74('0x38')]:_0xfa8bf9[_0x5a74('0x33')];if(!_0x5698ff[_0x5a74('0x34')][_0x5a74('0x3b')](_0x5a74('0x3c'))){_0x42adb5[_0x5a74('0x3d')]=qs[_0x5a74('0x3d')](_0x5698ff[_0x5a74('0x34')]['limit']);_0x42adb5['offset']=qs[_0x5a74('0x1e')](_0x5698ff['query'][_0x5a74('0x1e')]);}_0x42adb5[_0x5a74('0x3e')]=qs[_0x5a74('0x3f')](_0x5698ff[_0x5a74('0x34')]['sort']);_0x42adb5[_0x5a74('0x40')]=qs[_0x5a74('0x36')](_[_0x5a74('0x41')](_0x5698ff[_0x5a74('0x34')],_0xfa8bf9[_0x5a74('0x36')]),_0x16ffe0);if(_0x5698ff[_0x5a74('0x34')][_0x5a74('0x42')]){_0x42adb5[_0x5a74('0x40')]=_['merge'](_0x42adb5['where'],{'$or':_[_0x5a74('0x2e')](_0x16ffe0,function(_0x51970c){if(_0x51970c[_0x5a74('0x31')]!==_0x5a74('0x43')){var _0xa32698={};_0xa32698[_0x51970c[_0x5a74('0x2b')]]={'$like':'%'+_0x5698ff[_0x5a74('0x34')][_0x5a74('0x42')]+'%'};return _0xa32698;}})});}_0x42adb5=_[_0x5a74('0x44')]({},_0x42adb5,_0x5698ff[_0x5a74('0x45')]);var _0x139d70={'where':_0x42adb5[_0x5a74('0x40')]};return db[_0x5a74('0x2f')][_0x5a74('0x20')](_0x139d70)[_0x5a74('0x25')](function(_0x2c22c4){_0x59cee7[_0x5a74('0x20')]=_0x2c22c4;if(_0x5698ff['query']['includeAll']){_0x42adb5[_0x5a74('0x46')]=[{'all':!![]}];}return db[_0x5a74('0x2f')]['findAll'](_0x42adb5);})[_0x5a74('0x25')](function(_0x3a6812){_0x59cee7[_0x5a74('0x47')]=_0x3a6812;return _0x59cee7;})[_0x5a74('0x25')](respondWithFilteredResult(_0xdd4f92,_0x42adb5))[_0x5a74('0x48')](handleError(_0xdd4f92,null));};exports['show']=function(_0xfad3f,_0x2c4e20){var _0x557009={'raw':![],'where':{'id':_0xfad3f[_0x5a74('0x49')]['id']}},_0x63d366={};_0x63d366['model']=_[_0x5a74('0x35')](db[_0x5a74('0x2f')][_0x5a74('0x30')]);_0x63d366[_0x5a74('0x34')]=_[_0x5a74('0x35')](_0xfad3f['query']);_0x63d366['filters']=_[_0x5a74('0x37')](_0x63d366['model'],_0x63d366['query']);_0x557009[_0x5a74('0x38')]=_[_0x5a74('0x37')](_0x63d366[_0x5a74('0x33')],qs['fields'](_0xfad3f[_0x5a74('0x34')]['fields']));_0x557009['attributes']=_0x557009[_0x5a74('0x38')][_0x5a74('0x3a')]?_0x557009['attributes']:_0x63d366[_0x5a74('0x33')];if(_0xfad3f[_0x5a74('0x34')][_0x5a74('0x4a')]){_0x557009[_0x5a74('0x46')]=[{'all':!![]}];}_0x557009=_[_0x5a74('0x44')]({},_0x557009,_0xfad3f[_0x5a74('0x45')]);return db['Team'][_0x5a74('0x4b')](_0x557009)[_0x5a74('0x25')](handleEntityNotFound(_0x2c4e20,null))[_0x5a74('0x25')](respondWithResult(_0x2c4e20,null))[_0x5a74('0x48')](handleError(_0x2c4e20,null));};exports[_0x5a74('0x4c')]=function(_0x4e4543,_0x2a49d8){return db[_0x5a74('0x2f')][_0x5a74('0x4c')](_0x4e4543[_0x5a74('0x4d')],{})[_0x5a74('0x25')](function(_0x762359){var _0x12164e=_0x4e4543['user'][_0x5a74('0x27')]({'plain':!![]});if(!_0x12164e)throw new Error(_0x5a74('0x4e'));if(_0x12164e[_0x5a74('0x4f')]===_0x5a74('0x50')){var _0x29ec2e=_0x762359['get']({'plain':!![]});var _0x1c6da4=_0x5a74('0x28');return db['UserProfileSection'][_0x5a74('0x4b')]({'where':{'name':_0x1c6da4,'userProfileId':_0x12164e[_0x5a74('0x51')]},'raw':!![]})[_0x5a74('0x25')](function(_0x15397d){if(_0x15397d&&_0x15397d['autoAssociation']===0x0){return db['UserProfileResource'][_0x5a74('0x4c')]({'name':_0x29ec2e[_0x5a74('0x2b')],'resourceId':_0x29ec2e['id'],'type':_0x15397d[_0x5a74('0x2b')],'sectionId':_0x15397d['id']},{})[_0x5a74('0x25')](function(){return _0x762359;});}else{return _0x762359;}})[_0x5a74('0x48')](function(_0x164933){logger[_0x5a74('0x52')](_0x5a74('0x53'),_0x164933);throw _0x164933;});}return _0x762359;})['then'](respondWithResult(_0x2a49d8,0xc9))['catch'](handleError(_0x2a49d8,null));};exports[_0x5a74('0x24')]=function(_0x103325,_0xfc0572){if(_0x103325[_0x5a74('0x4d')]['id']){delete _0x103325[_0x5a74('0x4d')]['id'];}return db[_0x5a74('0x2f')]['find']({'where':{'id':_0x103325[_0x5a74('0x49')]['id']}})[_0x5a74('0x25')](handleEntityNotFound(_0xfc0572,null))['then'](saveUpdates(_0x103325[_0x5a74('0x4d')],null))[_0x5a74('0x25')](respondWithResult(_0xfc0572,null))['catch'](handleError(_0xfc0572,null));};exports['destroy']=function(_0x20ed5a,_0x3a51ae){return db['Team'][_0x5a74('0x4b')]({'where':{'id':_0x20ed5a['params']['id']}})[_0x5a74('0x25')](handleEntityNotFound(_0x3a51ae,null))[_0x5a74('0x25')](removeEntity(_0x3a51ae,null))['catch'](handleError(_0x3a51ae,null));};exports[_0x5a74('0x54')]=function(_0x5573b8,_0x3b0804,_0x12d3d3){return db[_0x5a74('0x2f')][_0x5a74('0x55')]({'where':{'id':_0x5573b8['params']['id']}})[_0x5a74('0x25')](handleEntityNotFound(_0x3b0804,null))[_0x5a74('0x25')](function(_0x2649b0){if(!_0x5573b8['query'][_0x5a74('0x56')]||!utils[_0x5a74('0x57')](_0x5573b8['query'][_0x5a74('0x56')])){throw new db['Sequelize'][(_0x5a74('0x58'))](_0x5a74('0x59'));}var _0x164264={};var _0x31f701={};_0x31f701['model']=_[_0x5a74('0x35')](db[_['capitalize'](_0x5573b8['query']['channel'][_0x5a74('0x5a')]())+_0x5a74('0x5b')]['rawAttributes']);_0x31f701['query']=_[_0x5a74('0x35')](_0x5573b8[_0x5a74('0x34')]);_0x31f701[_0x5a74('0x36')]=_[_0x5a74('0x37')](_0x31f701[_0x5a74('0x33')],_0x31f701[_0x5a74('0x34')]);_0x164264[_0x5a74('0x38')]=_['intersection'](_0x31f701[_0x5a74('0x33')],qs[_0x5a74('0x39')](_0x5573b8[_0x5a74('0x34')][_0x5a74('0x39')]));_0x164264['attributes']=_0x164264['attributes'][_0x5a74('0x3a')]?_0x164264['attributes']:_0x31f701[_0x5a74('0x33')];_0x164264[_0x5a74('0x3d')]=qs['limit'](_0x5573b8[_0x5a74('0x34')]['limit']);_0x164264[_0x5a74('0x1e')]=qs['offset'](_0x5573b8[_0x5a74('0x34')][_0x5a74('0x1e')]);_0x164264[_0x5a74('0x3e')]=qs['sort'](_0x5573b8[_0x5a74('0x34')][_0x5a74('0x3f')]);_0x164264['where']=qs[_0x5a74('0x36')](_[_0x5a74('0x41')](_0x5573b8[_0x5a74('0x34')],_0x31f701[_0x5a74('0x36')]));_0x164264=_['merge']({},_0x164264,_0x5573b8[_0x5a74('0x45')]);return _0x2649b0[_0x5a74('0x27')+_[_0x5a74('0x5c')](_0x5573b8['query']['channel'][_0x5a74('0x5a')]())+_0x5a74('0x5d')](_0x164264);})[_0x5a74('0x25')](respondWithResult(_0x3b0804,null))[_0x5a74('0x48')](handleError(_0x3b0804,null));};exports[_0x5a74('0x5e')]=function(_0x4fe690,_0x55f0b4,_0x31cf59){return db[_0x5a74('0x2f')][_0x5a74('0x55')]({'where':{'id':_0x4fe690[_0x5a74('0x49')]['id']}})['then'](function(_0x10d786){if(_0x10d786){if(!_0x4fe690[_0x5a74('0x4d')][_0x5a74('0x56')]||!utils[_0x5a74('0x57')](_0x4fe690[_0x5a74('0x4d')][_0x5a74('0x56')])){throw new db[(_0x5a74('0x5f'))]['ValidationError'](_0x5a74('0x59'));}return _0x10d786[_0x5a74('0x60')+_[_0x5a74('0x5c')](_0x4fe690[_0x5a74('0x4d')][_0x5a74('0x56')][_0x5a74('0x5a')]())+_0x5a74('0x5d')](_0x4fe690[_0x5a74('0x4d')]['ids']);}return null;})[_0x5a74('0x25')](handleEntityNotFound(_0x55f0b4,null))[_0x5a74('0x25')](respondWithStatusCode(_0x55f0b4,null))[_0x5a74('0x48')](handleError(_0x55f0b4,null));};exports[_0x5a74('0x61')]=function(_0x3419ec,_0x198e7d,_0x260790){return db['Team'][_0x5a74('0x55')]({'where':{'id':_0x3419ec[_0x5a74('0x49')]['id']}})[_0x5a74('0x25')](function(_0x5e873f){if(_0x5e873f){if(!_0x3419ec[_0x5a74('0x34')][_0x5a74('0x56')]||!utils['isValidChannel'](_0x3419ec['query'][_0x5a74('0x56')])){throw new db[(_0x5a74('0x5f'))][(_0x5a74('0x58'))](_0x5a74('0x59'));}return _0x5e873f[_0x5a74('0x62')+_[_0x5a74('0x5c')](_0x3419ec[_0x5a74('0x34')][_0x5a74('0x56')][_0x5a74('0x5a')]())+'Queues'](_0x3419ec['query'][_0x5a74('0x63')]);}return null;})['then'](handleEntityNotFound(_0x198e7d,null))[_0x5a74('0x25')](respondWithStatusCode(_0x198e7d,null))['catch'](handleError(_0x198e7d,null));};exports[_0x5a74('0x64')]=function(_0x2d1da1,_0x3b473c){return db[_0x5a74('0x2f')][_0x5a74('0x4b')]({'where':{'id':_0x2d1da1[_0x5a74('0x49')]['id']}})['then'](handleEntityNotFound(_0x3b473c,null))[_0x5a74('0x25')](function(_0x465408){if(_0x465408){var _0x16f13c=[_0x5a74('0x65'),'Chat',_0x5a74('0x66'),_0x5a74('0x67'),_0x5a74('0x68'),_0x5a74('0x69'),_0x5a74('0x6a')];return db[_0x5a74('0x6b')][_0x5a74('0x6c')](function(_0x1322ee){var _0x10fd51=_[_0x5a74('0x2e')](_0x16f13c,function(_0x519f11){var _0xd03a29={'attributes':['id',_0x5a74('0x2b')]};if(_0x519f11===_0x5a74('0x65')){_0xd03a29[_0x5a74('0x6d')]={'attributes':[_0x5a74('0x6e')]};}return _0x465408['get'+_0x519f11+'Queues'](_0xd03a29)[_0x5a74('0x25')](function(_0x7eac9d){var _0x133e87=_['map'](_0x7eac9d,function(_0x2531bc){var _0x3d3df4=_[_0x5a74('0x2e')](_0x2d1da1['body']['ids'],function(_0x43c916){var _0x49bb84={'where':{'UserId':_0x43c916,[_0x519f11+_0x5a74('0x6f')]:_0x2531bc['id']},'transaction':_0x1322ee};if(_0x519f11===_0x5a74('0x65')){_0x49bb84['defaults']={'penalty':_0x2531bc[_0x5a74('0x70')][_0x5a74('0x6e')]};}return db[_0x5a74('0x71')+_0x519f11+_0x5a74('0x5b')][_0x5a74('0x72')](_0x49bb84)[_0x5a74('0x25')](function(){socket[_0x5a74('0x73')](_0x5a74('0x50')+_0x519f11+_0x5a74('0x74'),{'UserId':_0x43c916,[_0x519f11+_0x5a74('0x6f')]:_0x2531bc['id']});if(_0x519f11!=='Voice')return;return db[_0x5a74('0x71')][_0x5a74('0x75')]({'where':{'id':_0x2d1da1[_0x5a74('0x4d')][_0x5a74('0x63')],'online':0x1},'attributes':['id','name',_0x5a74('0x76'),_0x5a74('0x77'),'interface'],'raw':!![]})[_0x5a74('0x25')](function(_0xac9aee){var _0x51f3bc=_[_0x5a74('0x2e')](_0xac9aee,function(_0x42faa1){return db['UserVoiceQueueRt'][_0x5a74('0x78')]({'membername':_0x42faa1[_0x5a74('0x2b')],'UserId':_0x42faa1['id'],'queue_name':_0x2531bc[_0x5a74('0x2b')],'VoiceQueueId':_0x2531bc['id'],'interface':_[_0x5a74('0x79')](_0x42faa1['interface'])?util[_0x5a74('0x7a')](_0x5a74('0x7b'),_0x42faa1[_0x5a74('0x2b')]):_0x42faa1[_0x5a74('0x7c')],'paused':_0x42faa1[_0x5a74('0x77')]||![],'penalty':_0x2531bc[_0x5a74('0x70')][_0x5a74('0x6e')]},{'transaction':_0x1322ee});});return Promise['all'](_0x51f3bc);});});});return Promise['all'](_0x3d3df4);});return Promise[_0x5a74('0x7d')](_0x133e87);});});return Promise[_0x5a74('0x7d')](_0x10fd51)[_0x5a74('0x25')](function(){return _0x465408[_0x5a74('0x64')](_0x2d1da1[_0x5a74('0x4d')][_0x5a74('0x63')],{'transaction':_0x1322ee})['spread'](function(_0x1ae329){return _0x1ae329;});});});}})[_0x5a74('0x25')](respondWithResult(_0x3b473c,null))[_0x5a74('0x48')](handleError(_0x3b473c,null));};exports['removeAgents']=function(_0x154897,_0x1eb5f2){return db['Team'][_0x5a74('0x4b')]({'where':{'id':_0x154897[_0x5a74('0x49')]['id']}})[_0x5a74('0x25')](handleEntityNotFound(_0x1eb5f2,null))[_0x5a74('0x25')](function(_0x4dfb9b){if(_0x4dfb9b){var _0x361541=[_0x5a74('0x65'),_0x5a74('0x7e'),_0x5a74('0x66'),_0x5a74('0x67'),_0x5a74('0x68'),'Openchannel','Whatsapp'];return db[_0x5a74('0x6b')][_0x5a74('0x6c')](function(_0xcb0cf4){var _0x5d05d2=_[_0x5a74('0x2e')](_0x361541,function(_0x168697){var _0x3d1166={'attributes':['id',_0x5a74('0x2b')]};return _0x4dfb9b['get'+_0x168697+'Queues'](_0x3d1166)['then'](function(_0x3854ec){var _0xd4423e=_['map'](_0x3854ec,function(_0x16d710){return _0x16d710[_0x5a74('0x7f')](_0x154897[_0x5a74('0x34')][_0x5a74('0x63')],{'transaction':_0xcb0cf4})[_0x5a74('0x25')](function(){var _0x3cc480=JSON[_0x5a74('0x80')]('['+_0x154897[_0x5a74('0x34')][_0x5a74('0x63')]+']');var _0x400868=_[_0x5a74('0x2e')](_0x3cc480,function(_0x3a11a9){socket[_0x5a74('0x73')](_0x5a74('0x50')+_0x168697+'Queue:remove',{'UserId':Number(_0x3a11a9),[_0x168697+_0x5a74('0x6f')]:_0x16d710['id']});if(_0x168697!==_0x5a74('0x65'))return;return db['UserVoiceQueueRt'][_0x5a74('0x26')]({'where':{'VoiceQueueId':_0x16d710['id'],'UserId':_0x3a11a9},'transaction':_0xcb0cf4});});return Promise['all'](_0x400868);});});return Promise['all'](_0xd4423e);});});return Promise['all'](_0x5d05d2)['then'](function(){return _0x4dfb9b[_0x5a74('0x7f')](_0x154897[_0x5a74('0x34')][_0x5a74('0x63')],{'transaction':_0xcb0cf4});});});}})['then'](respondWithStatusCode(_0x1eb5f2,null))['catch'](handleError(_0x1eb5f2,null));};exports['getAgents']=function(_0x3001b3,_0x1c34ce,_0x442c55){var _0x43c105={};var _0x5664f4={};var _0x34ccd8;var _0x14caef;return db['Team'][_0x5a74('0x55')]({'where':{'id':_0x3001b3[_0x5a74('0x49')]['id']}})['then'](handleEntityNotFound(_0x1c34ce,null))[_0x5a74('0x25')](function(_0xcc22bb){if(_0xcc22bb){_0x34ccd8=_0xcc22bb;_0x5664f4[_0x5a74('0x33')]=_[_0x5a74('0x35')](db[_0x5a74('0x71')][_0x5a74('0x30')]);_0x5664f4[_0x5a74('0x34')]=_[_0x5a74('0x35')](_0x3001b3[_0x5a74('0x34')]);_0x5664f4['filters']=_[_0x5a74('0x37')](_0x5664f4['model'],_0x5664f4[_0x5a74('0x34')]);_0x43c105[_0x5a74('0x38')]=_['intersection'](_0x5664f4[_0x5a74('0x33')],qs[_0x5a74('0x39')](_0x3001b3['query']['fields']));_0x43c105['attributes']=_0x43c105[_0x5a74('0x38')]['length']?_0x43c105[_0x5a74('0x38')]:_0x5664f4['model'];_0x43c105[_0x5a74('0x3e')]=qs[_0x5a74('0x3f')](_0x3001b3[_0x5a74('0x34')]['sort']);_0x43c105['where']=qs[_0x5a74('0x36')](_[_0x5a74('0x41')](_0x3001b3[_0x5a74('0x34')],_0x5664f4[_0x5a74('0x36')]));if(_0x3001b3[_0x5a74('0x34')][_0x5a74('0x42')]){_0x43c105[_0x5a74('0x40')]=_[_0x5a74('0x44')](_0x43c105[_0x5a74('0x40')],{'$or':_[_0x5a74('0x2e')](_0x43c105[_0x5a74('0x38')],function(_0x5e6fc1){var _0x2cf814={};_0x2cf814[_0x5e6fc1]={'$like':'%'+_0x3001b3[_0x5a74('0x34')]['filter']+'%'};return _0x2cf814;})});}_0x43c105=_[_0x5a74('0x44')]({},_0x43c105,_0x3001b3[_0x5a74('0x45')]);return _0x34ccd8[_0x5a74('0x81')](_0x43c105);}})[_0x5a74('0x25')](function(_0x25fc89){if(_0x25fc89){_0x14caef=_0x25fc89[_0x5a74('0x3a')];if(!_0x3001b3[_0x5a74('0x34')][_0x5a74('0x3b')](_0x5a74('0x3c'))){_0x43c105[_0x5a74('0x3d')]=qs[_0x5a74('0x3d')](_0x3001b3['query']['limit']);_0x43c105[_0x5a74('0x1e')]=qs['offset'](_0x3001b3['query'][_0x5a74('0x1e')]);}return _0x34ccd8['getAgents'](_0x43c105);}})[_0x5a74('0x25')](function(_0x570eea){if(_0x570eea){return _0x570eea?{'count':_0x14caef,'rows':_0x570eea}:null;}})['then'](respondWithResult(_0x1c34ce,null))[_0x5a74('0x48')](handleError(_0x1c34ce,null));};
\ No newline at end of file
index fb65ee1..9a4a219 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2097=['update','remove','emit','hook','exports','events','../../mysqldb','Team','setMaxListeners'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x2097,0x68));var _0x7209=function(_0x55d648,_0xc573bd){_0x55d648=_0x55d648-0x0;var _0x2dfc83=_0x2097[_0x55d648];return _0x2dfc83;};'use strict';var EventEmitter=require(_0x7209('0x0'));var Team=require(_0x7209('0x1'))['db'][_0x7209('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0x7209('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x7209('0x4'),'afterDestroy':_0x7209('0x5')};function emitEvent(_0x591333){return function(_0x258e7c,_0x3dfaf8,_0x225b91){TeamEvents['emit'](_0x591333+':'+_0x258e7c['id'],_0x258e7c);TeamEvents[_0x7209('0x6')](_0x591333,_0x258e7c);_0x225b91(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Team[_0x7209('0x7')](e,emitEvent(event));}}module[_0x7209('0x8')]=TeamEvents;
\ No newline at end of file
+var _0xd5ab=['hasOwnProperty','events','Team','save','update','remove','emit'];(function(_0x121b1a,_0x42fdb7){var _0x2d89a6=function(_0x1b6027){while(--_0x1b6027){_0x121b1a['push'](_0x121b1a['shift']());}};_0x2d89a6(++_0x42fdb7);}(_0xd5ab,0x1e4));var _0xbd5a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xd5ab[_0x14add3];return _0x4a174f;};'use strict';var EventEmitter=require(_0xbd5a('0x0'));var Team=require('../../mysqldb')['db'][_0xbd5a('0x1')];var TeamEvents=new EventEmitter();TeamEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xbd5a('0x2'),'afterUpdate':_0xbd5a('0x3'),'afterDestroy':_0xbd5a('0x4')};function emitEvent(_0x46dfa8){return function(_0xfde0c1,_0x270b2a,_0xfc4ddc){TeamEvents[_0xbd5a('0x5')](_0x46dfa8+':'+_0xfde0c1['id'],_0xfde0c1);TeamEvents[_0xbd5a('0x5')](_0x46dfa8,_0xfde0c1);_0xfc4ddc(null);};}for(var e in events){if(events[_0xbd5a('0x6')](e)){var event=events[e];Team['hook'](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
index 37683b2..d19ff7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5354=['util','../../config/logger','api','rimraf','../../config/environment','./team.attributes','exports','define','Team','teams','lodash'];(function(_0x36a4ae,_0x2487b6){var _0x1411b3=function(_0x3148b7){while(--_0x3148b7){_0x36a4ae['push'](_0x36a4ae['shift']());}};_0x1411b3(++_0x2487b6);}(_0x5354,0x18b));var _0x4535=function(_0x274ee6,_0x5768cd){_0x274ee6=_0x274ee6-0x0;var _0x2c51bc=_0x5354[_0x274ee6];return _0x2c51bc;};'use strict';var _=require(_0x4535('0x0'));var util=require(_0x4535('0x1'));var logger=require(_0x4535('0x2'))(_0x4535('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4535('0x4'));var config=require(_0x4535('0x5'));var attributes=require(_0x4535('0x6'));module[_0x4535('0x7')]=function(_0x3fc439,_0xfe2418){return _0x3fc439[_0x4535('0x8')](_0x4535('0x9'),attributes,{'tableName':_0x4535('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdc18=['./team.attributes','exports','define','Team','teams','lodash','api','moment','bluebird','path','../../config/environment'];(function(_0x5bff15,_0x19bb55){var _0xfaa34f=function(_0x5e82a4){while(--_0x5e82a4){_0x5bff15['push'](_0x5bff15['shift']());}};_0xfaa34f(++_0x19bb55);}(_0xdc18,0x12e));var _0x8dc1=function(_0x58e450,_0x3e21da){_0x58e450=_0x58e450-0x0;var _0x26193d=_0xdc18[_0x58e450];return _0x26193d;};'use strict';var _=require(_0x8dc1('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x8dc1('0x1'));var moment=require(_0x8dc1('0x2'));var BPromise=require(_0x8dc1('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8dc1('0x4'));var rimraf=require('rimraf');var config=require(_0x8dc1('0x5'));var attributes=require(_0x8dc1('0x6'));module[_0x8dc1('0x7')]=function(_0xdfa900,_0xf924f4){return _0xdfa900[_0x8dc1('0x8')](_0x8dc1('0x9'),attributes,{'tableName':_0x8dc1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ca4fc3e..9bf396b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeec3=['result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./team.socket','register','request','then','info','Team,\x20%s,\x20%s','request\x20sent','debug','error','message'];(function(_0x326a69,_0x1e284e){var _0x545520=function(_0x2677e6){while(--_0x2677e6){_0x326a69['push'](_0x326a69['shift']());}};_0x545520(++_0x1e284e);}(_0xeec3,0x135));var _0x3eec=function(_0x1b5258,_0x227596){_0x1b5258=_0x1b5258-0x0;var _0x4c74e7=_0xeec3[_0x1b5258];return _0x4c74e7;};'use strict';var _=require(_0x3eec('0x0'));var util=require(_0x3eec('0x1'));var moment=require(_0x3eec('0x2'));var BPromise=require(_0x3eec('0x3'));var rs=require(_0x3eec('0x4'));var fs=require('fs');var Redis=require(_0x3eec('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x3eec('0x6'));var logger=require(_0x3eec('0x7'))(_0x3eec('0x8'));var config=require(_0x3eec('0x9'));var jayson=require(_0x3eec('0xa'));var client=jayson[_0x3eec('0xb')][_0x3eec('0xc')]({'port':0x232a});config['redis']=_[_0x3eec('0xd')](config[_0x3eec('0xe')],{'host':_0x3eec('0xf'),'port':0x18eb});var socket=require(_0x3eec('0x10'))(new Redis(config[_0x3eec('0xe')]));require(_0x3eec('0x11'))[_0x3eec('0x12')](socket);function respondWithRpcPromise(_0x13f4e,_0xd845e0,_0x495e66){return new BPromise(function(_0x51bbe0,_0x3ec21b){return client[_0x3eec('0x13')](_0x13f4e,_0x495e66)[_0x3eec('0x14')](function(_0xae3ddf){logger[_0x3eec('0x15')](_0x3eec('0x16'),_0xd845e0,_0x3eec('0x17'));logger[_0x3eec('0x18')]('Team,\x20%s,\x20%s,\x20%s',_0xd845e0,_0x3eec('0x17'),JSON['stringify'](_0xae3ddf));if(_0xae3ddf['error']){if(_0xae3ddf[_0x3eec('0x19')]['code']===0x1f4){logger[_0x3eec('0x19')](_0x3eec('0x16'),_0xd845e0,_0xae3ddf[_0x3eec('0x19')][_0x3eec('0x1a')]);return _0x3ec21b(_0xae3ddf[_0x3eec('0x19')][_0x3eec('0x1a')]);}logger['error']('Team,\x20%s,\x20%s',_0xd845e0,_0xae3ddf['error'][_0x3eec('0x1a')]);return _0x51bbe0(_0xae3ddf[_0x3eec('0x19')][_0x3eec('0x1a')]);}else{logger[_0x3eec('0x15')](_0x3eec('0x16'),_0xd845e0,_0x3eec('0x17'));_0x51bbe0(_0xae3ddf[_0x3eec('0x1b')][_0x3eec('0x1a')]);}})['catch'](function(_0x3b16d8){logger[_0x3eec('0x19')](_0x3eec('0x16'),_0xd845e0,_0x3b16d8);_0x3ec21b(_0x3b16d8);});});}
\ No newline at end of file
+var _0x37b1=['Team,\x20%s,\x20%s','debug','Team,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./team.socket','register','request','then','info'];(function(_0x22e9fe,_0x3d019f){var _0x47cd19=function(_0x8fd5fc){while(--_0x8fd5fc){_0x22e9fe['push'](_0x22e9fe['shift']());}};_0x47cd19(++_0x3d019f);}(_0x37b1,0x9f));var _0x137b=function(_0x3e929b,_0x5ee20e){_0x3e929b=_0x3e929b-0x0;var _0x4ff3e8=_0x37b1[_0x3e929b];return _0x4ff3e8;};'use strict';var _=require(_0x137b('0x0'));var util=require(_0x137b('0x1'));var moment=require(_0x137b('0x2'));var BPromise=require(_0x137b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x137b('0x4'));var db=require(_0x137b('0x5'))['db'];var utils=require(_0x137b('0x6'));var logger=require(_0x137b('0x7'))(_0x137b('0x8'));var config=require(_0x137b('0x9'));var jayson=require(_0x137b('0xa'));var client=jayson[_0x137b('0xb')][_0x137b('0xc')]({'port':0x232a});config[_0x137b('0xd')]=_[_0x137b('0xe')](config[_0x137b('0xd')],{'host':_0x137b('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x137b('0xd')]));require(_0x137b('0x10'))[_0x137b('0x11')](socket);function respondWithRpcPromise(_0x5b4ee8,_0x3d99fa,_0x46f42f){return new BPromise(function(_0x59d82d,_0x3cc453){return client[_0x137b('0x12')](_0x5b4ee8,_0x46f42f)[_0x137b('0x13')](function(_0x442a29){logger[_0x137b('0x14')](_0x137b('0x15'),_0x3d99fa,'request\x20sent');logger[_0x137b('0x16')](_0x137b('0x17'),_0x3d99fa,_0x137b('0x18'),JSON['stringify'](_0x442a29));if(_0x442a29[_0x137b('0x19')]){if(_0x442a29[_0x137b('0x19')][_0x137b('0x1a')]===0x1f4){logger[_0x137b('0x19')]('Team,\x20%s,\x20%s',_0x3d99fa,_0x442a29[_0x137b('0x19')][_0x137b('0x1b')]);return _0x3cc453(_0x442a29['error'][_0x137b('0x1b')]);}logger[_0x137b('0x19')](_0x137b('0x15'),_0x3d99fa,_0x442a29[_0x137b('0x19')][_0x137b('0x1b')]);return _0x59d82d(_0x442a29['error'][_0x137b('0x1b')]);}else{logger['info'](_0x137b('0x15'),_0x3d99fa,_0x137b('0x18'));_0x59d82d(_0x442a29[_0x137b('0x1c')][_0x137b('0x1b')]);}})[_0x137b('0x1d')](function(_0x5879bc){logger[_0x137b('0x19')]('Team,\x20%s,\x20%s',_0x3d99fa,_0x5879bc);_0x3cc453(_0x5879bc);});});}
\ No newline at end of file
index d584770..5daa9c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaaa2=['update','emit','removeListener','register','./team.events','save','remove'];(function(_0xd8d6a6,_0x3dd730){var _0x1ddc64=function(_0x508729){while(--_0x508729){_0xd8d6a6['push'](_0xd8d6a6['shift']());}};_0x1ddc64(++_0x3dd730);}(_0xaaa2,0xac));var _0x2aaa=function(_0x419b27,_0x21d9f6){_0x419b27=_0x419b27-0x0;var _0x5600a8=_0xaaa2[_0x419b27];return _0x5600a8;};'use strict';var TeamEvents=require(_0x2aaa('0x0'));var events=[_0x2aaa('0x1'),_0x2aaa('0x2'),_0x2aaa('0x3')];function createListener(_0x30815a,_0x10a7bf){return function(_0x49eef3){_0x10a7bf[_0x2aaa('0x4')](_0x30815a,_0x49eef3);};}function removeListener(_0x482489,_0x35b5c8){return function(){TeamEvents[_0x2aaa('0x5')](_0x482489,_0x35b5c8);};}exports[_0x2aaa('0x6')]=function(_0x25cb1d){for(var _0x1ef101=0x0,_0x106af9=events['length'];_0x1ef101<_0x106af9;_0x1ef101++){var _0x2f16d7=events[_0x1ef101];var _0x514c32=createListener('team:'+_0x2f16d7,_0x25cb1d);TeamEvents['on'](_0x2f16d7,_0x514c32);}};
\ No newline at end of file
+var _0x6e6c=['save','update','emit','register','length','team:','./team.events'];(function(_0xa785e1,_0x4671f1){var _0x6185f1=function(_0x308a27){while(--_0x308a27){_0xa785e1['push'](_0xa785e1['shift']());}};_0x6185f1(++_0x4671f1);}(_0x6e6c,0xc3));var _0xc6e6=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x6e6c[_0x397e5f];return _0x5302b8;};'use strict';var TeamEvents=require(_0xc6e6('0x0'));var events=[_0xc6e6('0x1'),'remove',_0xc6e6('0x2')];function createListener(_0x1b63fe,_0x58f303){return function(_0x550e47){_0x58f303[_0xc6e6('0x3')](_0x1b63fe,_0x550e47);};}function removeListener(_0x5a9e2b,_0x40b7e1){return function(){TeamEvents['removeListener'](_0x5a9e2b,_0x40b7e1);};}exports[_0xc6e6('0x4')]=function(_0x1182c7){for(var _0x4bf906=0x0,_0x301f55=events[_0xc6e6('0x5')];_0x4bf906<_0x301f55;_0x4bf906++){var _0x4da7bd=events[_0x4bf906];var _0x324706=createListener(_0xc6e6('0x6')+_0x4da7bd,_0x1182c7);TeamEvents['on'](_0x4da7bd,_0x324706);}};
\ No newline at end of file
index 1947d41..4af9d0a 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(_0x15f22a,_0x447960){var _0x45360a=function(_0x469eb8){while(--_0x469eb8){_0x15f22a['push'](_0x15f22a['shift']());}};_0x45360a(++_0x447960);}(_0xa9e0,0x123));var _0x0a9e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa9e0[_0x14add3];return _0x4a174f;};'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(_0x47e934,_0x11d22f){var _0x2088eb=function(_0x5e3386){while(--_0x5e3386){_0x47e934['push'](_0x47e934['shift']());}};_0x2088eb(++_0x11d22f);}(_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'));module['exports']=router;
\ No newline at end of file
index f4a7ac6..dfdb8b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85da=['sequelize','INTEGER'];(function(_0x470f4b,_0x563ba2){var _0x359ae6=function(_0x4bb442){while(--_0x4bb442){_0x470f4b['push'](_0x470f4b['shift']());}};_0x359ae6(++_0x563ba2);}(_0x85da,0x1ae));var _0xa85d=function(_0x4a747d,_0x3b747f){_0x4a747d=_0x4a747d-0x0;var _0x3a5b5c=_0x85da[_0x4a747d];return _0x3a5b5c;};'use strict';var Sequelize=require(_0xa85d('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xa85d('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xf596=['INTEGER','sequelize','exports'];(function(_0x632bc8,_0x2edb19){var _0x389439=function(_0x192d70){while(--_0x192d70){_0x632bc8['push'](_0x632bc8['shift']());}};_0x389439(++_0x2edb19);}(_0xf596,0xd3));var _0x6f59=function(_0x56bdcb,_0x411f51){_0x56bdcb=_0x56bdcb-0x0;var _0xdb8f70=_0xf596[_0x56bdcb];return _0xdb8f70;};'use strict';var Sequelize=require(_0x6f59('0x0'));module[_0x6f59('0x1')]={'penalty':{'type':Sequelize[_0x6f59('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 34b8918..6f88abf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea03=['define','team_has_voice_queues','lodash','../../config/logger','api','moment','bluebird','request-promise','./teamVoiceQueue.attributes','exports'];(function(_0x2bbaaa,_0x14c86b){var _0x6b2475=function(_0x3bdc09){while(--_0x3bdc09){_0x2bbaaa['push'](_0x2bbaaa['shift']());}};_0x6b2475(++_0x14c86b);}(_0xea03,0x1ba));var _0x3ea0=function(_0x35c718,_0x33a696){_0x35c718=_0x35c718-0x0;var _0x5c3099=_0xea03[_0x35c718];return _0x5c3099;};'use strict';var _=require(_0x3ea0('0x0'));var util=require('util');var logger=require(_0x3ea0('0x1'))(_0x3ea0('0x2'));var moment=require(_0x3ea0('0x3'));var BPromise=require(_0x3ea0('0x4'));var rp=require(_0x3ea0('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x3ea0('0x6'));module[_0x3ea0('0x7')]=function(_0x266966,_0xed8a4b){return _0x266966[_0x3ea0('0x8')]('TeamVoiceQueue',attributes,{'tableName':_0x3ea0('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0eec=['exports','define','TeamVoiceQueue','team_has_voice_queues','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x49c997,_0x381aca){var _0x14407e=function(_0x172920){while(--_0x172920){_0x49c997['push'](_0x49c997['shift']());}};_0x14407e(++_0x381aca);}(_0x0eec,0xac));var _0xc0ee=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0eec[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xc0ee('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xc0ee('0x1'));var moment=require(_0xc0ee('0x2'));var BPromise=require(_0xc0ee('0x3'));var rp=require(_0xc0ee('0x4'));var fs=require('fs');var path=require(_0xc0ee('0x5'));var rimraf=require(_0xc0ee('0x6'));var config=require(_0xc0ee('0x7'));var attributes=require('./teamVoiceQueue.attributes');module[_0xc0ee('0x8')]=function(_0x4db3d6,_0x218797){return _0x4db3d6[_0xc0ee('0x9')](_0xc0ee('0xa'),attributes,{'tableName':_0xc0ee('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 539220f..faa385d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20bc=['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','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x3b4652,_0x4579f4){var _0x7e740c=function(_0x21f314){while(--_0x21f314){_0x3b4652['push'](_0x3b4652['shift']());}};_0x7e740c(++_0x4579f4);}(_0x20bc,0xb5));var _0xc20b=function(_0x114c1c,_0x5bfd6d){_0x114c1c=_0x114c1c-0x0;var _0x50a0a6=_0x20bc[_0x114c1c];return _0x50a0a6;};'use strict';var _=require(_0xc20b('0x0'));var util=require(_0xc20b('0x1'));var moment=require('moment');var BPromise=require(_0xc20b('0x2'));var rs=require(_0xc20b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc20b('0x4'))['db'];var utils=require(_0xc20b('0x5'));var logger=require(_0xc20b('0x6'))(_0xc20b('0x7'));var config=require(_0xc20b('0x8'));var jayson=require(_0xc20b('0x9'));var client=jayson[_0xc20b('0xa')][_0xc20b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3c171b,_0x16db57,_0x30d929){return new BPromise(function(_0x15a272,_0x65d1f8){return client['request'](_0x3c171b,_0x30d929)[_0xc20b('0xc')](function(_0x974295){logger['info'](_0xc20b('0xd'),_0x16db57,_0xc20b('0xe'));logger[_0xc20b('0xf')](_0xc20b('0x10'),_0x16db57,'request\x20sent',JSON[_0xc20b('0x11')](_0x974295));if(_0x974295[_0xc20b('0x12')]){if(_0x974295['error'][_0xc20b('0x13')]===0x1f4){logger[_0xc20b('0x12')](_0xc20b('0xd'),_0x16db57,_0x974295[_0xc20b('0x12')][_0xc20b('0x14')]);return _0x65d1f8(_0x974295[_0xc20b('0x12')]['message']);}logger[_0xc20b('0x12')](_0xc20b('0xd'),_0x16db57,_0x974295[_0xc20b('0x12')][_0xc20b('0x14')]);return _0x15a272(_0x974295['error']['message']);}else{logger[_0xc20b('0x15')](_0xc20b('0xd'),_0x16db57,_0xc20b('0xe'));_0x15a272(_0x974295[_0xc20b('0x16')]['message']);}})[_0xc20b('0x17')](function(_0x37c42f){logger[_0xc20b('0x12')](_0xc20b('0xd'),_0x16db57,_0x37c42f);_0x65d1f8(_0x37c42f);});});}
\ No newline at end of file
+var _0xa273=['request\x20sent','debug','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','then','TeamVoiceQueue,\x20%s,\x20%s'];(function(_0x4dd7cf,_0x48cad2){var _0x4c5233=function(_0x2b01c2){while(--_0x2b01c2){_0x4dd7cf['push'](_0x4dd7cf['shift']());}};_0x4c5233(++_0x48cad2);}(_0xa273,0x1d5));var _0x3a27=function(_0x46f67f,_0x229637){_0x46f67f=_0x46f67f-0x0;var _0x49ec47=_0xa273[_0x46f67f];return _0x49ec47;};'use strict';var _=require(_0x3a27('0x0'));var util=require(_0x3a27('0x1'));var moment=require(_0x3a27('0x2'));var BPromise=require(_0x3a27('0x3'));var rs=require(_0x3a27('0x4'));var fs=require('fs');var Redis=require(_0x3a27('0x5'));var db=require(_0x3a27('0x6'))['db'];var utils=require(_0x3a27('0x7'));var logger=require(_0x3a27('0x8'))(_0x3a27('0x9'));var config=require('../../config/environment');var jayson=require(_0x3a27('0xa'));var client=jayson[_0x3a27('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x43aa5b,_0x6240d4,_0x3c1afb){return new BPromise(function(_0x486981,_0x45b3c8){return client['request'](_0x43aa5b,_0x3c1afb)[_0x3a27('0xc')](function(_0x237f38){logger['info'](_0x3a27('0xd'),_0x6240d4,_0x3a27('0xe'));logger[_0x3a27('0xf')]('TeamVoiceQueue,\x20%s,\x20%s,\x20%s',_0x6240d4,_0x3a27('0xe'),JSON[_0x3a27('0x10')](_0x237f38));if(_0x237f38[_0x3a27('0x11')]){if(_0x237f38[_0x3a27('0x11')][_0x3a27('0x12')]===0x1f4){logger[_0x3a27('0x11')](_0x3a27('0xd'),_0x6240d4,_0x237f38[_0x3a27('0x11')]['message']);return _0x45b3c8(_0x237f38[_0x3a27('0x11')][_0x3a27('0x13')]);}logger['error'](_0x3a27('0xd'),_0x6240d4,_0x237f38[_0x3a27('0x11')][_0x3a27('0x13')]);return _0x486981(_0x237f38['error'][_0x3a27('0x13')]);}else{logger[_0x3a27('0x14')](_0x3a27('0xd'),_0x6240d4,'request\x20sent');_0x486981(_0x237f38[_0x3a27('0x15')][_0x3a27('0x13')]);}})[_0x3a27('0x16')](function(_0x421161){logger[_0x3a27('0x11')](_0x3a27('0xd'),_0x6240d4,_0x421161);_0x45b3c8(_0x421161);});});}
\ No newline at end of file
index 37bad46..4f4d687 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fea=['get','isAuthenticated','index','/:id','show','post','put','update','exports','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x2e54cb,_0x268ff3){var _0x2aedfc=function(_0x3a05e3){while(--_0x3a05e3){_0x2e54cb['push'](_0x2e54cb['shift']());}};_0x2aedfc(++_0x268ff3);}(_0x7fea,0x149));var _0xa7fe=function(_0x25f192,_0x8af4e4){_0x25f192=_0x25f192-0x0;var _0xadffb5=_0x7fea[_0x25f192];return _0xadffb5;};'use strict';var multer=require('multer');var util=require(_0xa7fe('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa7fe('0x1'));var router=express[_0xa7fe('0x2')]();var fs_extra=require(_0xa7fe('0x3'));var auth=require(_0xa7fe('0x4'));var interaction=require(_0xa7fe('0x5'));var config=require(_0xa7fe('0x6'));var controller=require('./template.controller');router[_0xa7fe('0x7')]('/',auth[_0xa7fe('0x8')](),controller[_0xa7fe('0x9')]);router[_0xa7fe('0x7')](_0xa7fe('0xa'),auth[_0xa7fe('0x8')](),controller[_0xa7fe('0xb')]);router[_0xa7fe('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0xa7fe('0xd')](_0xa7fe('0xa'),auth[_0xa7fe('0x8')](),controller[_0xa7fe('0xe')]);router['delete'](_0xa7fe('0xa'),auth[_0xa7fe('0x8')](),controller['destroy']);module[_0xa7fe('0xf')]=router;
\ No newline at end of file
+var _0x9f0e=['../../config/environment','./template.controller','get','/:id','isAuthenticated','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x9f0e,0x116));var _0xe9f0=function(_0x3752ae,_0x142f7b){_0x3752ae=_0x3752ae-0x0;var _0x1ce3b2=_0x9f0e[_0x3752ae];return _0x1ce3b2;};'use strict';var multer=require(_0xe9f0('0x0'));var util=require(_0xe9f0('0x1'));var path=require(_0xe9f0('0x2'));var timeout=require(_0xe9f0('0x3'));var express=require(_0xe9f0('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xe9f0('0x5'));var interaction=require(_0xe9f0('0x6'));var config=require(_0xe9f0('0x7'));var controller=require(_0xe9f0('0x8'));router[_0xe9f0('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xe9f0('0x9')](_0xe9f0('0xa'),auth[_0xe9f0('0xb')](),controller['show']);router[_0xe9f0('0xc')]('/',auth[_0xe9f0('0xb')](),controller[_0xe9f0('0xd')]);router[_0xe9f0('0xe')](_0xe9f0('0xa'),auth[_0xe9f0('0xb')](),controller[_0xe9f0('0xf')]);router[_0xe9f0('0x10')](_0xe9f0('0xa'),auth['isAuthenticated'](),controller[_0xe9f0('0x11')]);module[_0xe9f0('0x12')]=router;
\ No newline at end of file
index 917a73d..79115f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5ff=['exports','STRING','sequelize'];(function(_0x275cef,_0x2901dc){var _0x3ae400=function(_0x2c5334){while(--_0x2c5334){_0x275cef['push'](_0x275cef['shift']());}};_0x3ae400(++_0x2901dc);}(_0xc5ff,0xd1));var _0xfc5f=function(_0x147a09,_0x23c22a){_0x147a09=_0x147a09-0x0;var _0x3558a0=_0xc5ff[_0x147a09];return _0x3558a0;};'use strict';var Sequelize=require(_0xfc5f('0x0'));module[_0xfc5f('0x1')]={'name':{'type':Sequelize[_0xfc5f('0x2')]},'description':{'type':Sequelize[_0xfc5f('0x2')]},'html':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x893a=['sequelize','exports','STRING'];(function(_0x686b0c,_0x5774db){var _0x52a1e9=function(_0x30c800){while(--_0x30c800){_0x686b0c['push'](_0x686b0c['shift']());}};_0x52a1e9(++_0x5774db);}(_0x893a,0xed));var _0xa893=function(_0x3735a0,_0x4749e0){_0x3735a0=_0x3735a0-0x0;var _0x40d32e=_0x893a[_0x3735a0];return _0x40d32e;};'use strict';var Sequelize=require(_0xa893('0x0'));module[_0xa893('0x1')]={'name':{'type':Sequelize[_0xa893('0x2')]},'description':{'type':Sequelize['STRING']},'html':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 272c582..34c7a71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd3a=['name','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','map','options','include','findAll','rows','catch','show','params','Template','length','includeAll','create','body','user','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','limit','undefined','count','status','Content-Range','apply','reject','save','update','then','destroy','get','Templates','UserProfileResource','stack','send','index','fieldName','type','key','model'];(function(_0x45afab,_0x869772){var _0x434ada=function(_0x4bc15f){while(--_0x4bc15f){_0x45afab['push'](_0x45afab['shift']());}};_0x434ada(++_0x869772);}(_0xbd3a,0xc7));var _0xabd3=function(_0x13484c,_0x137c72){_0x13484c=_0x13484c-0x0;var _0x1b559c=_0xbd3a[_0x13484c];return _0x1b559c;};'use strict';var emlformat=require(_0xabd3('0x0'));var rimraf=require(_0xabd3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xabd3('0x2'));var rp=require('request-promise');var moment=require(_0xabd3('0x3'));var BPromise=require(_0xabd3('0x4'));var Mustache=require(_0xabd3('0x5'));var util=require('util');var path=require(_0xabd3('0x6'));var sox=require('sox');var csv=require(_0xabd3('0x7'));var ejs=require(_0xabd3('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xabd3('0x9'));var squel=require(_0xabd3('0xa'));var crypto=require(_0xabd3('0xb'));var jsforce=require(_0xabd3('0xc'));var deskjs=require(_0xabd3('0xd'));var toCsv=require(_0xabd3('0x7'));var querystring=require(_0xabd3('0xe'));var Papa=require(_0xabd3('0xf'));var Redis=require('ioredis');var authService=require(_0xabd3('0x10'));var qs=require(_0xabd3('0x11'));var as=require(_0xabd3('0x12'));var hardwareService=require(_0xabd3('0x13'));var logger=require(_0xabd3('0x14'))(_0xabd3('0x15'));var utils=require('../../config/utils');var config=require(_0xabd3('0x16'));var licenseUtil=require(_0xabd3('0x17'));var db=require(_0xabd3('0x18'))['db'];function respondWithStatusCode(_0x2389ef,_0x51b756){_0x51b756=_0x51b756||0xcc;return function(_0x47bf07){if(_0x47bf07){return _0x2389ef[_0xabd3('0x19')](_0x51b756);}return _0x2389ef['status'](_0x51b756)[_0xabd3('0x1a')]();};}function respondWithResult(_0x3a2f2f,_0x9e5a10){_0x9e5a10=_0x9e5a10||0xc8;return function(_0x5e9dc7){if(_0x5e9dc7){return _0x3a2f2f['status'](_0x9e5a10)[_0xabd3('0x1b')](_0x5e9dc7);}};}function respondWithFilteredResult(_0x5d6db7,_0x15cadf){return function(_0x569284){if(_0x569284){var _0x4705a5=typeof _0x15cadf[_0xabd3('0x1c')]==='undefined'&&typeof _0x15cadf[_0xabd3('0x1d')]===_0xabd3('0x1e');var _0x3c549b=_0x569284[_0xabd3('0x1f')];var _0x4fb1b0=_0x4705a5?0x0:_0x15cadf[_0xabd3('0x1c')];var _0x19b33e=_0x4705a5?_0x569284['count']:_0x15cadf[_0xabd3('0x1c')]+_0x15cadf['limit'];var _0x30019c;if(_0x19b33e>=_0x3c549b){_0x19b33e=_0x3c549b;_0x30019c=0xc8;}else{_0x30019c=0xce;}_0x5d6db7[_0xabd3('0x20')](_0x30019c);return _0x5d6db7['set'](_0xabd3('0x21'),_0x4fb1b0+'-'+_0x19b33e+'/'+_0x3c549b)['json'](_0x569284);}return null;};}function patchUpdates(_0x3ebbdd){return function(_0x11d067){try{jsonpatch[_0xabd3('0x22')](_0x11d067,_0x3ebbdd,!![]);}catch(_0xcf77e5){return BPromise[_0xabd3('0x23')](_0xcf77e5);}return _0x11d067[_0xabd3('0x24')]();};}function saveUpdates(_0xa50767,_0x5738f1){return function(_0x2d8d53){if(_0x2d8d53){return _0x2d8d53[_0xabd3('0x25')](_0xa50767)[_0xabd3('0x26')](function(_0x20beb4){return _0x20beb4;});}return null;};}function removeEntity(_0x3e063d,_0x3855e8){return function(_0x41d855){if(_0x41d855){return _0x41d855[_0xabd3('0x27')]()[_0xabd3('0x26')](function(){var _0x345d9f=_0x41d855[_0xabd3('0x28')]({'plain':!![]});var _0x6ddfa1=_0xabd3('0x29');return db[_0xabd3('0x2a')]['destroy']({'where':{'type':_0x6ddfa1,'resourceId':_0x345d9f['id']}})[_0xabd3('0x26')](function(){return _0x41d855;});})[_0xabd3('0x26')](function(){_0x3e063d[_0xabd3('0x20')](0xcc)[_0xabd3('0x1a')]();});}};}function handleEntityNotFound(_0x4ad123,_0x4d0cb8){return function(_0x3e5c9e){if(!_0x3e5c9e){_0x4ad123[_0xabd3('0x19')](0x194);}return _0x3e5c9e;};}function handleError(_0x150a62,_0x51a008){_0x51a008=_0x51a008||0x1f4;return function(_0x2d9c29){logger['error'](_0x2d9c29[_0xabd3('0x2b')]);if(_0x2d9c29['name']){delete _0x2d9c29['name'];}_0x150a62[_0xabd3('0x20')](_0x51a008)[_0xabd3('0x2c')](_0x2d9c29);};}exports[_0xabd3('0x2d')]=function(_0xf76f23,_0x489f9b){var _0x466df8={},_0x389dff={},_0x459195={'count':0x0,'rows':[]};var _0x36e611=_['map'](db['Template']['rawAttributes'],function(_0x51061a){return{'name':_0x51061a[_0xabd3('0x2e')],'type':_0x51061a[_0xabd3('0x2f')][_0xabd3('0x30')]};});_0x389dff[_0xabd3('0x31')]=_['map'](_0x36e611,_0xabd3('0x32'));_0x389dff[_0xabd3('0x33')]=_[_0xabd3('0x34')](_0xf76f23[_0xabd3('0x33')]);_0x389dff['filters']=_['intersection'](_0x389dff[_0xabd3('0x31')],_0x389dff[_0xabd3('0x33')]);_0x466df8['attributes']=_[_0xabd3('0x35')](_0x389dff[_0xabd3('0x31')],qs[_0xabd3('0x36')](_0xf76f23['query'][_0xabd3('0x36')]));_0x466df8[_0xabd3('0x37')]=_0x466df8[_0xabd3('0x37')]['length']?_0x466df8['attributes']:_0x389dff['model'];if(!_0xf76f23[_0xabd3('0x33')][_0xabd3('0x38')](_0xabd3('0x39'))){_0x466df8[_0xabd3('0x1d')]=qs[_0xabd3('0x1d')](_0xf76f23[_0xabd3('0x33')][_0xabd3('0x1d')]);_0x466df8['offset']=qs[_0xabd3('0x1c')](_0xf76f23[_0xabd3('0x33')][_0xabd3('0x1c')]);}_0x466df8[_0xabd3('0x3a')]=qs[_0xabd3('0x3b')](_0xf76f23[_0xabd3('0x33')][_0xabd3('0x3b')]);_0x466df8[_0xabd3('0x3c')]=qs[_0xabd3('0x3d')](_[_0xabd3('0x3e')](_0xf76f23[_0xabd3('0x33')],_0x389dff[_0xabd3('0x3d')]),_0x36e611);if(_0xf76f23[_0xabd3('0x33')][_0xabd3('0x3f')]){_0x466df8[_0xabd3('0x3c')]=_[_0xabd3('0x40')](_0x466df8[_0xabd3('0x3c')],{'$or':_[_0xabd3('0x41')](_0x36e611,function(_0x1f996d){if(_0x1f996d[_0xabd3('0x2f')]!=='VIRTUAL'){var _0x7bfc0e={};_0x7bfc0e[_0x1f996d['name']]={'$like':'%'+_0xf76f23[_0xabd3('0x33')][_0xabd3('0x3f')]+'%'};return _0x7bfc0e;}})});}_0x466df8=_[_0xabd3('0x40')]({},_0x466df8,_0xf76f23[_0xabd3('0x42')]);var _0xed6688={'where':_0x466df8[_0xabd3('0x3c')]};return db['Template']['count'](_0xed6688)[_0xabd3('0x26')](function(_0x30b6da){_0x459195[_0xabd3('0x1f')]=_0x30b6da;if(_0xf76f23[_0xabd3('0x33')]['includeAll']){_0x466df8[_0xabd3('0x43')]=[{'all':!![]}];}return db['Template'][_0xabd3('0x44')](_0x466df8);})[_0xabd3('0x26')](function(_0x3c0618){_0x459195[_0xabd3('0x45')]=_0x3c0618;return _0x459195;})[_0xabd3('0x26')](respondWithFilteredResult(_0x489f9b,_0x466df8))[_0xabd3('0x46')](handleError(_0x489f9b,null));};exports[_0xabd3('0x47')]=function(_0x520511,_0x5cd5c7){var _0x30a32f={'raw':!![],'where':{'id':_0x520511[_0xabd3('0x48')]['id']}},_0x4c51a4={};_0x4c51a4['model']=_['keys'](db[_0xabd3('0x49')]['rawAttributes']);_0x4c51a4[_0xabd3('0x33')]=_[_0xabd3('0x34')](_0x520511[_0xabd3('0x33')]);_0x4c51a4['filters']=_[_0xabd3('0x35')](_0x4c51a4[_0xabd3('0x31')],_0x4c51a4[_0xabd3('0x33')]);_0x30a32f['attributes']=_['intersection'](_0x4c51a4[_0xabd3('0x31')],qs[_0xabd3('0x36')](_0x520511[_0xabd3('0x33')][_0xabd3('0x36')]));_0x30a32f[_0xabd3('0x37')]=_0x30a32f[_0xabd3('0x37')][_0xabd3('0x4a')]?_0x30a32f[_0xabd3('0x37')]:_0x4c51a4[_0xabd3('0x31')];if(_0x520511['query'][_0xabd3('0x4b')]){_0x30a32f[_0xabd3('0x43')]=[{'all':!![]}];}_0x30a32f=_['merge']({},_0x30a32f,_0x520511[_0xabd3('0x42')]);return db[_0xabd3('0x49')]['find'](_0x30a32f)['then'](handleEntityNotFound(_0x5cd5c7,null))[_0xabd3('0x26')](respondWithResult(_0x5cd5c7,null))['catch'](handleError(_0x5cd5c7,null));};exports['create']=function(_0x385c9b,_0x3ec703){return db[_0xabd3('0x49')][_0xabd3('0x4c')](_0x385c9b[_0xabd3('0x4d')],{})[_0xabd3('0x26')](function(_0x5119cc){var _0x1f81a8=_0x385c9b[_0xabd3('0x4e')][_0xabd3('0x28')]({'plain':!![]});if(!_0x1f81a8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1f81a8['role']==='user'){var _0x32ba2a=_0x5119cc[_0xabd3('0x28')]({'plain':!![]});var _0x124b04=_0xabd3('0x29');return db[_0xabd3('0x4f')][_0xabd3('0x50')]({'where':{'name':_0x124b04,'userProfileId':_0x1f81a8[_0xabd3('0x51')]},'raw':!![]})[_0xabd3('0x26')](function(_0x3c16e5){if(_0x3c16e5&&_0x3c16e5['autoAssociation']===0x0){return db[_0xabd3('0x2a')]['create']({'name':_0x32ba2a['name'],'resourceId':_0x32ba2a['id'],'type':_0x3c16e5['name'],'sectionId':_0x3c16e5['id']},{})['then'](function(){return _0x5119cc;});}else{return _0x5119cc;}})[_0xabd3('0x46')](function(_0x2745a3){logger['error'](_0xabd3('0x52'),_0x2745a3);throw _0x2745a3;});}return _0x5119cc;})[_0xabd3('0x26')](respondWithResult(_0x3ec703,0xc9))[_0xabd3('0x46')](handleError(_0x3ec703,null));};exports[_0xabd3('0x25')]=function(_0x2eecb2,_0x34caff){if(_0x2eecb2[_0xabd3('0x4d')]['id']){delete _0x2eecb2[_0xabd3('0x4d')]['id'];}return db['Template'][_0xabd3('0x50')]({'where':{'id':_0x2eecb2['params']['id']}})['then'](handleEntityNotFound(_0x34caff,null))[_0xabd3('0x26')](saveUpdates(_0x2eecb2[_0xabd3('0x4d')],null))[_0xabd3('0x26')](respondWithResult(_0x34caff,null))[_0xabd3('0x46')](handleError(_0x34caff,null));};exports[_0xabd3('0x27')]=function(_0x5a8dd0,_0x34a885){return db[_0xabd3('0x49')][_0xabd3('0x50')]({'where':{'id':_0x5a8dd0[_0xabd3('0x48')]['id']}})['then'](handleEntityNotFound(_0x34a885,null))[_0xabd3('0x26')](removeEntity(_0x34a885,null))[_0xabd3('0x46')](handleError(_0x34a885,null));};
\ No newline at end of file
+var _0xb4ae=['send','index','map','Template','rawAttributes','type','query','filters','intersection','attributes','model','fields','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','params','keys','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','fs-extra','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','status','json','offset','limit','undefined','count','set','Content-Range','apply','save','then','destroy','get','Templates','UserProfileResource','sendStatus','error','stack','name'];(function(_0x5130e0,_0x425334){var _0x4dfadd=function(_0x2801ba){while(--_0x2801ba){_0x5130e0['push'](_0x5130e0['shift']());}};_0x4dfadd(++_0x425334);}(_0xb4ae,0x1c2));var _0xeb4a=function(_0x5b4a91,_0x55634b){_0x5b4a91=_0x5b4a91-0x0;var _0x1e0d05=_0xb4ae[_0x5b4a91];return _0x1e0d05;};'use strict';var emlformat=require(_0xeb4a('0x0'));var rimraf=require(_0xeb4a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xeb4a('0x2'));var rp=require(_0xeb4a('0x3'));var moment=require(_0xeb4a('0x4'));var BPromise=require(_0xeb4a('0x5'));var Mustache=require(_0xeb4a('0x6'));var util=require('util');var path=require('path');var sox=require(_0xeb4a('0x7'));var csv=require(_0xeb4a('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xeb4a('0x9'));var _=require('lodash');var squel=require(_0xeb4a('0xa'));var crypto=require(_0xeb4a('0xb'));var jsforce=require(_0xeb4a('0xc'));var deskjs=require(_0xeb4a('0xd'));var toCsv=require('to-csv');var querystring=require(_0xeb4a('0xe'));var Papa=require(_0xeb4a('0xf'));var Redis=require('ioredis');var authService=require(_0xeb4a('0x10'));var qs=require(_0xeb4a('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xeb4a('0x12'));var logger=require(_0xeb4a('0x13'))('api');var utils=require(_0xeb4a('0x14'));var config=require(_0xeb4a('0x15'));var licenseUtil=require(_0xeb4a('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x422a5a,_0xc3ed0b){_0xc3ed0b=_0xc3ed0b||0xcc;return function(_0x40bbd0){if(_0x40bbd0){return _0x422a5a['sendStatus'](_0xc3ed0b);}return _0x422a5a[_0xeb4a('0x17')](_0xc3ed0b)['end']();};}function respondWithResult(_0xfff477,_0x46effe){_0x46effe=_0x46effe||0xc8;return function(_0x294719){if(_0x294719){return _0xfff477['status'](_0x46effe)[_0xeb4a('0x18')](_0x294719);}};}function respondWithFilteredResult(_0x52b2d3,_0x16e480){return function(_0x10eb59){if(_0x10eb59){var _0x1aafee=typeof _0x16e480[_0xeb4a('0x19')]==='undefined'&&typeof _0x16e480[_0xeb4a('0x1a')]===_0xeb4a('0x1b');var _0x67d75e=_0x10eb59[_0xeb4a('0x1c')];var _0x472116=_0x1aafee?0x0:_0x16e480[_0xeb4a('0x19')];var _0x3fe6a0=_0x1aafee?_0x10eb59[_0xeb4a('0x1c')]:_0x16e480[_0xeb4a('0x19')]+_0x16e480[_0xeb4a('0x1a')];var _0x177da1;if(_0x3fe6a0>=_0x67d75e){_0x3fe6a0=_0x67d75e;_0x177da1=0xc8;}else{_0x177da1=0xce;}_0x52b2d3['status'](_0x177da1);return _0x52b2d3[_0xeb4a('0x1d')](_0xeb4a('0x1e'),_0x472116+'-'+_0x3fe6a0+'/'+_0x67d75e)[_0xeb4a('0x18')](_0x10eb59);}return null;};}function patchUpdates(_0x1c5728){return function(_0x40b140){try{jsonpatch[_0xeb4a('0x1f')](_0x40b140,_0x1c5728,!![]);}catch(_0x124934){return BPromise['reject'](_0x124934);}return _0x40b140[_0xeb4a('0x20')]();};}function saveUpdates(_0xaf4c7f,_0x292a1a){return function(_0xa3f221){if(_0xa3f221){return _0xa3f221['update'](_0xaf4c7f)[_0xeb4a('0x21')](function(_0xdde73c){return _0xdde73c;});}return null;};}function removeEntity(_0x3db6e3,_0x3504ea){return function(_0x18e52a){if(_0x18e52a){return _0x18e52a[_0xeb4a('0x22')]()[_0xeb4a('0x21')](function(){var _0x1dd286=_0x18e52a[_0xeb4a('0x23')]({'plain':!![]});var _0x2fafc4=_0xeb4a('0x24');return db[_0xeb4a('0x25')]['destroy']({'where':{'type':_0x2fafc4,'resourceId':_0x1dd286['id']}})[_0xeb4a('0x21')](function(){return _0x18e52a;});})[_0xeb4a('0x21')](function(){_0x3db6e3[_0xeb4a('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x56b856,_0x48c239){return function(_0x53256a){if(!_0x53256a){_0x56b856[_0xeb4a('0x26')](0x194);}return _0x53256a;};}function handleError(_0x5bb3a2,_0x5c8f4f){_0x5c8f4f=_0x5c8f4f||0x1f4;return function(_0x57039b){logger[_0xeb4a('0x27')](_0x57039b[_0xeb4a('0x28')]);if(_0x57039b['name']){delete _0x57039b[_0xeb4a('0x29')];}_0x5bb3a2[_0xeb4a('0x17')](_0x5c8f4f)[_0xeb4a('0x2a')](_0x57039b);};}exports[_0xeb4a('0x2b')]=function(_0x5d258b,_0x1246cc){var _0x2dbc43={},_0x3cf751={},_0x585cb2={'count':0x0,'rows':[]};var _0x137b00=_[_0xeb4a('0x2c')](db[_0xeb4a('0x2d')][_0xeb4a('0x2e')],function(_0xf0d507){return{'name':_0xf0d507['fieldName'],'type':_0xf0d507[_0xeb4a('0x2f')]['key']};});_0x3cf751['model']=_['map'](_0x137b00,'name');_0x3cf751[_0xeb4a('0x30')]=_['keys'](_0x5d258b[_0xeb4a('0x30')]);_0x3cf751[_0xeb4a('0x31')]=_[_0xeb4a('0x32')](_0x3cf751['model'],_0x3cf751['query']);_0x2dbc43[_0xeb4a('0x33')]=_[_0xeb4a('0x32')](_0x3cf751[_0xeb4a('0x34')],qs[_0xeb4a('0x35')](_0x5d258b['query']['fields']));_0x2dbc43['attributes']=_0x2dbc43[_0xeb4a('0x33')]['length']?_0x2dbc43['attributes']:_0x3cf751['model'];if(!_0x5d258b['query'][_0xeb4a('0x36')]('nolimit')){_0x2dbc43[_0xeb4a('0x1a')]=qs[_0xeb4a('0x1a')](_0x5d258b[_0xeb4a('0x30')][_0xeb4a('0x1a')]);_0x2dbc43[_0xeb4a('0x19')]=qs[_0xeb4a('0x19')](_0x5d258b[_0xeb4a('0x30')][_0xeb4a('0x19')]);}_0x2dbc43[_0xeb4a('0x37')]=qs[_0xeb4a('0x38')](_0x5d258b[_0xeb4a('0x30')][_0xeb4a('0x38')]);_0x2dbc43[_0xeb4a('0x39')]=qs[_0xeb4a('0x31')](_[_0xeb4a('0x3a')](_0x5d258b['query'],_0x3cf751[_0xeb4a('0x31')]),_0x137b00);if(_0x5d258b['query'][_0xeb4a('0x3b')]){_0x2dbc43[_0xeb4a('0x39')]=_['merge'](_0x2dbc43['where'],{'$or':_['map'](_0x137b00,function(_0x2db76c){if(_0x2db76c[_0xeb4a('0x2f')]!==_0xeb4a('0x3c')){var _0x4afe0d={};_0x4afe0d[_0x2db76c[_0xeb4a('0x29')]]={'$like':'%'+_0x5d258b[_0xeb4a('0x30')][_0xeb4a('0x3b')]+'%'};return _0x4afe0d;}})});}_0x2dbc43=_[_0xeb4a('0x3d')]({},_0x2dbc43,_0x5d258b[_0xeb4a('0x3e')]);var _0x346710={'where':_0x2dbc43[_0xeb4a('0x39')]};return db[_0xeb4a('0x2d')][_0xeb4a('0x1c')](_0x346710)['then'](function(_0x35260a){_0x585cb2['count']=_0x35260a;if(_0x5d258b[_0xeb4a('0x30')][_0xeb4a('0x3f')]){_0x2dbc43[_0xeb4a('0x40')]=[{'all':!![]}];}return db[_0xeb4a('0x2d')][_0xeb4a('0x41')](_0x2dbc43);})[_0xeb4a('0x21')](function(_0x2df9ad){_0x585cb2['rows']=_0x2df9ad;return _0x585cb2;})['then'](respondWithFilteredResult(_0x1246cc,_0x2dbc43))[_0xeb4a('0x42')](handleError(_0x1246cc,null));};exports[_0xeb4a('0x43')]=function(_0x3aa454,_0x3b6aa7){var _0x572d95={'raw':!![],'where':{'id':_0x3aa454[_0xeb4a('0x44')]['id']}},_0xcb2177={};_0xcb2177['model']=_[_0xeb4a('0x45')](db[_0xeb4a('0x2d')][_0xeb4a('0x2e')]);_0xcb2177['query']=_[_0xeb4a('0x45')](_0x3aa454[_0xeb4a('0x30')]);_0xcb2177[_0xeb4a('0x31')]=_[_0xeb4a('0x32')](_0xcb2177[_0xeb4a('0x34')],_0xcb2177[_0xeb4a('0x30')]);_0x572d95['attributes']=_[_0xeb4a('0x32')](_0xcb2177[_0xeb4a('0x34')],qs['fields'](_0x3aa454[_0xeb4a('0x30')][_0xeb4a('0x35')]));_0x572d95[_0xeb4a('0x33')]=_0x572d95[_0xeb4a('0x33')][_0xeb4a('0x46')]?_0x572d95[_0xeb4a('0x33')]:_0xcb2177[_0xeb4a('0x34')];if(_0x3aa454[_0xeb4a('0x30')][_0xeb4a('0x3f')]){_0x572d95['include']=[{'all':!![]}];}_0x572d95=_[_0xeb4a('0x3d')]({},_0x572d95,_0x3aa454[_0xeb4a('0x3e')]);return db[_0xeb4a('0x2d')][_0xeb4a('0x47')](_0x572d95)[_0xeb4a('0x21')](handleEntityNotFound(_0x3b6aa7,null))[_0xeb4a('0x21')](respondWithResult(_0x3b6aa7,null))[_0xeb4a('0x42')](handleError(_0x3b6aa7,null));};exports[_0xeb4a('0x48')]=function(_0x23490c,_0x4c5c0a){return db[_0xeb4a('0x2d')][_0xeb4a('0x48')](_0x23490c['body'],{})[_0xeb4a('0x21')](function(_0x1d746a){var _0x384772=_0x23490c[_0xeb4a('0x49')][_0xeb4a('0x23')]({'plain':!![]});if(!_0x384772)throw new Error(_0xeb4a('0x4a'));if(_0x384772[_0xeb4a('0x4b')]===_0xeb4a('0x49')){var _0x4fe8d7=_0x1d746a[_0xeb4a('0x23')]({'plain':!![]});var _0x3876c9=_0xeb4a('0x24');return db[_0xeb4a('0x4c')][_0xeb4a('0x47')]({'where':{'name':_0x3876c9,'userProfileId':_0x384772[_0xeb4a('0x4d')]},'raw':!![]})[_0xeb4a('0x21')](function(_0x4a53ec){if(_0x4a53ec&&_0x4a53ec[_0xeb4a('0x4e')]===0x0){return db[_0xeb4a('0x25')][_0xeb4a('0x48')]({'name':_0x4fe8d7[_0xeb4a('0x29')],'resourceId':_0x4fe8d7['id'],'type':_0x4a53ec[_0xeb4a('0x29')],'sectionId':_0x4a53ec['id']},{})[_0xeb4a('0x21')](function(){return _0x1d746a;});}else{return _0x1d746a;}})['catch'](function(_0xd4be66){logger[_0xeb4a('0x27')](_0xeb4a('0x4f'),_0xd4be66);throw _0xd4be66;});}return _0x1d746a;})[_0xeb4a('0x21')](respondWithResult(_0x4c5c0a,0xc9))[_0xeb4a('0x42')](handleError(_0x4c5c0a,null));};exports[_0xeb4a('0x50')]=function(_0x3a171a,_0x41f7df){if(_0x3a171a[_0xeb4a('0x51')]['id']){delete _0x3a171a[_0xeb4a('0x51')]['id'];}return db[_0xeb4a('0x2d')][_0xeb4a('0x47')]({'where':{'id':_0x3a171a[_0xeb4a('0x44')]['id']}})[_0xeb4a('0x21')](handleEntityNotFound(_0x41f7df,null))[_0xeb4a('0x21')](saveUpdates(_0x3a171a['body'],null))[_0xeb4a('0x21')](respondWithResult(_0x41f7df,null))[_0xeb4a('0x42')](handleError(_0x41f7df,null));};exports[_0xeb4a('0x22')]=function(_0x4aee31,_0x49d297){return db['Template'][_0xeb4a('0x47')]({'where':{'id':_0x4aee31[_0xeb4a('0x44')]['id']}})['then'](handleEntityNotFound(_0x49d297,null))[_0xeb4a('0x21')](removeEntity(_0x49d297,null))[_0xeb4a('0x42')](handleError(_0x49d297,null));};
\ No newline at end of file
index 297ce0c..72e5aab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb9d=['util','../../config/logger','moment','bluebird','../../config/environment','./template.attributes','define','Template','tools_templates','lodash'];(function(_0x3fb9dd,_0x174fff){var _0x20136a=function(_0x480081){while(--_0x480081){_0x3fb9dd['push'](_0x3fb9dd['shift']());}};_0x20136a(++_0x174fff);}(_0xeb9d,0xbd));var _0xdeb9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xeb9d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xdeb9('0x0'));var util=require(_0xdeb9('0x1'));var logger=require(_0xdeb9('0x2'))('api');var moment=require(_0xdeb9('0x3'));var BPromise=require(_0xdeb9('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xdeb9('0x5'));var attributes=require(_0xdeb9('0x6'));module['exports']=function(_0x2a8c16,_0x510dd5){return _0x2a8c16[_0xdeb9('0x7')](_0xdeb9('0x8'),attributes,{'tableName':_0xdeb9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe442=['Template','util','api','moment','request-promise','../../config/environment','./template.attributes','exports'];(function(_0x47bc4f,_0x3c20a4){var _0xfee090=function(_0xd24881){while(--_0xd24881){_0x47bc4f['push'](_0x47bc4f['shift']());}};_0xfee090(++_0x3c20a4);}(_0xe442,0x181));var _0x2e44=function(_0x2c7618,_0x26be9c){_0x2c7618=_0x2c7618-0x0;var _0x5ce3f0=_0xe442[_0x2c7618];return _0x5ce3f0;};'use strict';var _=require('lodash');var util=require(_0x2e44('0x0'));var logger=require('../../config/logger')(_0x2e44('0x1'));var moment=require(_0x2e44('0x2'));var BPromise=require('bluebird');var rp=require(_0x2e44('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x2e44('0x4'));var attributes=require(_0x2e44('0x5'));module[_0x2e44('0x6')]=function(_0x5e4c8f,_0x1be4c8){return _0x5e4c8f['define'](_0x2e44('0x7'),attributes,{'tableName':'tools_templates','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7547e03..7875e0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5689=['../../config/logger','../../config/environment','jayson/promise','http','request','then','Template,\x20%s,\x20%s','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','GetTemplate','Template','options','raw','attributes','limit','include','map','model','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x3c12c6,_0x6b0c92){var _0x150494=function(_0x1bec69){while(--_0x1bec69){_0x3c12c6['push'](_0x3c12c6['shift']());}};_0x150494(++_0x6b0c92);}(_0x5689,0x100));var _0x9568=function(_0x54b4e7,_0x4f0b1e){_0x54b4e7=_0x54b4e7-0x0;var _0xea74f0=_0x5689[_0x54b4e7];return _0xea74f0;};'use strict';var _=require(_0x9568('0x0'));var util=require(_0x9568('0x1'));var moment=require(_0x9568('0x2'));var BPromise=require(_0x9568('0x3'));var rs=require(_0x9568('0x4'));var fs=require('fs');var Redis=require(_0x9568('0x5'));var db=require(_0x9568('0x6'))['db'];var utils=require(_0x9568('0x7'));var logger=require(_0x9568('0x8'))('rpc');var config=require(_0x9568('0x9'));var jayson=require(_0x9568('0xa'));var client=jayson['client'][_0x9568('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4c0f34,_0x5c26b7,_0x511f40){return new BPromise(function(_0xcc8e95,_0x4d863d){return client[_0x9568('0xc')](_0x4c0f34,_0x511f40)[_0x9568('0xd')](function(_0x48f403){logger['info'](_0x9568('0xe'),_0x5c26b7,_0x9568('0xf'));logger[_0x9568('0x10')](_0x9568('0x11'),_0x5c26b7,'request\x20sent',JSON[_0x9568('0x12')](_0x48f403));if(_0x48f403[_0x9568('0x13')]){if(_0x48f403[_0x9568('0x13')]['code']===0x1f4){logger[_0x9568('0x13')]('Template,\x20%s,\x20%s',_0x5c26b7,_0x48f403[_0x9568('0x13')][_0x9568('0x14')]);return _0x4d863d(_0x48f403[_0x9568('0x13')][_0x9568('0x14')]);}logger[_0x9568('0x13')](_0x9568('0xe'),_0x5c26b7,_0x48f403[_0x9568('0x13')]['message']);return _0xcc8e95(_0x48f403[_0x9568('0x13')][_0x9568('0x14')]);}else{logger[_0x9568('0x15')]('Template,\x20%s,\x20%s',_0x5c26b7,'request\x20sent');_0xcc8e95(_0x48f403[_0x9568('0x16')][_0x9568('0x14')]);}})[_0x9568('0x17')](function(_0x333c1a){logger[_0x9568('0x13')](_0x9568('0xe'),_0x5c26b7,_0x333c1a);_0x4d863d(_0x333c1a);});});}exports[_0x9568('0x18')]=function(_0x11d6f1){var _0x54af94=this;return new Promise(function(_0x15130d,_0x36fca6){return db[_0x9568('0x19')]['findAll']({'raw':_0x11d6f1[_0x9568('0x1a')]?_0x11d6f1[_0x9568('0x1a')][_0x9568('0x1b')]===undefined?!![]:![]:!![],'where':_0x11d6f1[_0x9568('0x1a')]?_0x11d6f1[_0x9568('0x1a')]['where']||null:null,'attributes':_0x11d6f1[_0x9568('0x1a')]?_0x11d6f1[_0x9568('0x1a')][_0x9568('0x1c')]||null:null,'limit':_0x11d6f1[_0x9568('0x1a')]?_0x11d6f1[_0x9568('0x1a')][_0x9568('0x1d')]||null:null,'include':_0x11d6f1[_0x9568('0x1a')]?_0x11d6f1[_0x9568('0x1a')][_0x9568('0x1e')]?_[_0x9568('0x1f')](_0x11d6f1[_0x9568('0x1a')][_0x9568('0x1e')],function(_0x433be5){return{'model':db[_0x433be5[_0x9568('0x20')]],'as':_0x433be5['as'],'attributes':_0x433be5[_0x9568('0x1c')],'include':_0x433be5['include']?_[_0x9568('0x1f')](_0x433be5[_0x9568('0x1e')],function(_0x366311){return{'model':db[_0x366311[_0x9568('0x20')]],'as':_0x366311['as'],'attributes':_0x366311[_0x9568('0x1c')],'include':_0x366311[_0x9568('0x1e')]?_['map'](_0x366311[_0x9568('0x1e')],function(_0x1b27b3){return{'model':db[_0x1b27b3[_0x9568('0x20')]],'as':_0x1b27b3['as'],'attributes':_0x1b27b3[_0x9568('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1994ba){logger[_0x9568('0x15')]('GetTemplate',_0x11d6f1);logger[_0x9568('0x10')](_0x9568('0x18'),_0x11d6f1,JSON[_0x9568('0x12')](_0x1994ba));_0x15130d(_0x1994ba);})[_0x9568('0x17')](function(_0x146933){logger[_0x9568('0x13')]('GetTemplate',_0x146933[_0x9568('0x14')],_0x11d6f1);_0x36fca6(_0x54af94[_0x9568('0x13')](0x1f4,_0x146933['message']));});});};
\ No newline at end of file
+var _0x8b49=['options','where','limit','include','map','model','attributes','GetTemplate','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','debug','request\x20sent','stringify','error','code','Template,\x20%s,\x20%s','message','catch','Template','raw'];(function(_0x3d73ba,_0x356e23){var _0x47e406=function(_0x90df31){while(--_0x90df31){_0x3d73ba['push'](_0x3d73ba['shift']());}};_0x47e406(++_0x356e23);}(_0x8b49,0xb2));var _0x98b4=function(_0x328fe8,_0x3959b4){_0x328fe8=_0x328fe8-0x0;var _0x28eab1=_0x8b49[_0x328fe8];return _0x28eab1;};'use strict';var _=require(_0x98b4('0x0'));var util=require(_0x98b4('0x1'));var moment=require(_0x98b4('0x2'));var BPromise=require(_0x98b4('0x3'));var rs=require(_0x98b4('0x4'));var fs=require('fs');var Redis=require(_0x98b4('0x5'));var db=require(_0x98b4('0x6'))['db'];var utils=require(_0x98b4('0x7'));var logger=require(_0x98b4('0x8'))(_0x98b4('0x9'));var config=require(_0x98b4('0xa'));var jayson=require(_0x98b4('0xb'));var client=jayson[_0x98b4('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x39d3ac,_0x109207,_0x10a466){return new BPromise(function(_0x4ce75a,_0x1a99ac){return client[_0x98b4('0xd')](_0x39d3ac,_0x10a466)[_0x98b4('0xe')](function(_0x4c5771){logger[_0x98b4('0xf')]('Template,\x20%s,\x20%s',_0x109207,'request\x20sent');logger[_0x98b4('0x10')]('Template,\x20%s,\x20%s,\x20%s',_0x109207,_0x98b4('0x11'),JSON[_0x98b4('0x12')](_0x4c5771));if(_0x4c5771[_0x98b4('0x13')]){if(_0x4c5771['error'][_0x98b4('0x14')]===0x1f4){logger['error'](_0x98b4('0x15'),_0x109207,_0x4c5771[_0x98b4('0x13')]['message']);return _0x1a99ac(_0x4c5771[_0x98b4('0x13')][_0x98b4('0x16')]);}logger['error']('Template,\x20%s,\x20%s',_0x109207,_0x4c5771['error'][_0x98b4('0x16')]);return _0x4ce75a(_0x4c5771[_0x98b4('0x13')][_0x98b4('0x16')]);}else{logger[_0x98b4('0xf')](_0x98b4('0x15'),_0x109207,'request\x20sent');_0x4ce75a(_0x4c5771['result']['message']);}})[_0x98b4('0x17')](function(_0x1b82d2){logger[_0x98b4('0x13')](_0x98b4('0x15'),_0x109207,_0x1b82d2);_0x1a99ac(_0x1b82d2);});});}exports['GetTemplate']=function(_0x4ca741){var _0xe8cf06=this;return new Promise(function(_0x1b2afc,_0x3f49a0){return db[_0x98b4('0x18')]['findAll']({'raw':_0x4ca741['options']?_0x4ca741['options'][_0x98b4('0x19')]===undefined?!![]:![]:!![],'where':_0x4ca741[_0x98b4('0x1a')]?_0x4ca741[_0x98b4('0x1a')][_0x98b4('0x1b')]||null:null,'attributes':_0x4ca741[_0x98b4('0x1a')]?_0x4ca741[_0x98b4('0x1a')]['attributes']||null:null,'limit':_0x4ca741[_0x98b4('0x1a')]?_0x4ca741[_0x98b4('0x1a')][_0x98b4('0x1c')]||null:null,'include':_0x4ca741['options']?_0x4ca741[_0x98b4('0x1a')][_0x98b4('0x1d')]?_[_0x98b4('0x1e')](_0x4ca741[_0x98b4('0x1a')]['include'],function(_0x2ef243){return{'model':db[_0x2ef243[_0x98b4('0x1f')]],'as':_0x2ef243['as'],'attributes':_0x2ef243[_0x98b4('0x20')],'include':_0x2ef243[_0x98b4('0x1d')]?_[_0x98b4('0x1e')](_0x2ef243['include'],function(_0x760f35){return{'model':db[_0x760f35[_0x98b4('0x1f')]],'as':_0x760f35['as'],'attributes':_0x760f35[_0x98b4('0x20')],'include':_0x760f35[_0x98b4('0x1d')]?_[_0x98b4('0x1e')](_0x760f35['include'],function(_0x98c2b4){return{'model':db[_0x98c2b4[_0x98b4('0x1f')]],'as':_0x98c2b4['as'],'attributes':_0x98c2b4[_0x98b4('0x20')]};}):[]};}):[]};}):[]:[]})[_0x98b4('0xe')](function(_0x4ba255){logger[_0x98b4('0xf')]('GetTemplate',_0x4ca741);logger['debug'](_0x98b4('0x21'),_0x4ca741,JSON[_0x98b4('0x12')](_0x4ba255));_0x1b2afc(_0x4ba255);})[_0x98b4('0x17')](function(_0x5070e1){logger[_0x98b4('0x13')](_0x98b4('0x21'),_0x5070e1[_0x98b4('0x16')],_0x4ca741);_0x3f49a0(_0xe8cf06[_0x98b4('0x13')](0x1f4,_0x5070e1[_0x98b4('0x16')]));});});};
\ No newline at end of file
index 45cb294..b64f10a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x304a=['addAnyCondition','addAction','put','update','delete','destroy','exports','multer','util','path','connect-timeout','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','/:id/actions','getActions','post','create','addAllCondition'];(function(_0xbc86fc,_0x1bb24d){var _0x549976=function(_0x530436){while(--_0x530436){_0xbc86fc['push'](_0xbc86fc['shift']());}};_0x549976(++_0x1bb24d);}(_0x304a,0x19a));var _0xa304=function(_0x42c4af,_0x1fe8e2){_0x42c4af=_0x42c4af-0x0;var _0x325046=_0x304a[_0x42c4af];return _0x325046;};'use strict';var multer=require(_0xa304('0x0'));var util=require(_0xa304('0x1'));var path=require(_0xa304('0x2'));var timeout=require(_0xa304('0x3'));var express=require(_0xa304('0x4'));var router=express[_0xa304('0x5')]();var fs_extra=require(_0xa304('0x6'));var auth=require(_0xa304('0x7'));var interaction=require(_0xa304('0x8'));var config=require(_0xa304('0x9'));var controller=require(_0xa304('0xa'));router['get']('/',auth[_0xa304('0xb')](),controller[_0xa304('0xc')]);router[_0xa304('0xd')](_0xa304('0xe'),auth[_0xa304('0xb')](),controller[_0xa304('0xf')]);router[_0xa304('0xd')](_0xa304('0x10'),auth['isAuthenticated'](),controller[_0xa304('0x11')]);router[_0xa304('0xd')](_0xa304('0x12'),auth[_0xa304('0xb')](),controller['getAnyConditions']);router['get'](_0xa304('0x13'),auth['isAuthenticated'](),controller[_0xa304('0x14')]);router[_0xa304('0x15')]('/',auth[_0xa304('0xb')](),controller[_0xa304('0x16')]);router[_0xa304('0x15')](_0xa304('0x10'),auth[_0xa304('0xb')](),controller[_0xa304('0x17')]);router['post'](_0xa304('0x12'),auth['isAuthenticated'](),controller[_0xa304('0x18')]);router[_0xa304('0x15')](_0xa304('0x13'),auth['isAuthenticated'](),controller[_0xa304('0x19')]);router[_0xa304('0x1a')](_0xa304('0xe'),auth[_0xa304('0xb')](),controller[_0xa304('0x1b')]);router[_0xa304('0x1c')](_0xa304('0xe'),auth[_0xa304('0xb')](),controller[_0xa304('0x1d')]);module[_0xa304('0x1e')]=router;
\ No newline at end of file
+var _0xc12e=['getActions','addAllCondition','post','addAnyCondition','addAction','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./trigger.controller','get','isAuthenticated','/:id/all_conditions','getAllConditions','/:id/any_conditions','getAnyConditions','/:id/actions'];(function(_0x2c03d9,_0x3ada63){var _0x3a5873=function(_0x23bf11){while(--_0x23bf11){_0x2c03d9['push'](_0x2c03d9['shift']());}};_0x3a5873(++_0x3ada63);}(_0xc12e,0x13f));var _0xec12=function(_0x460666,_0x24bfa0){_0x460666=_0x460666-0x0;var _0x555cbf=_0xc12e[_0x460666];return _0x555cbf;};'use strict';var multer=require(_0xec12('0x0'));var util=require(_0xec12('0x1'));var path=require(_0xec12('0x2'));var timeout=require(_0xec12('0x3'));var express=require('express');var router=express[_0xec12('0x4')]();var fs_extra=require(_0xec12('0x5'));var auth=require(_0xec12('0x6'));var interaction=require(_0xec12('0x7'));var config=require(_0xec12('0x8'));var controller=require(_0xec12('0x9'));router[_0xec12('0xa')]('/',auth[_0xec12('0xb')](),controller['index']);router['get']('/:id',auth[_0xec12('0xb')](),controller['show']);router['get'](_0xec12('0xc'),auth[_0xec12('0xb')](),controller[_0xec12('0xd')]);router[_0xec12('0xa')](_0xec12('0xe'),auth[_0xec12('0xb')](),controller[_0xec12('0xf')]);router[_0xec12('0xa')](_0xec12('0x10'),auth[_0xec12('0xb')](),controller[_0xec12('0x11')]);router['post']('/',auth[_0xec12('0xb')](),controller['create']);router['post'](_0xec12('0xc'),auth['isAuthenticated'](),controller[_0xec12('0x12')]);router[_0xec12('0x13')](_0xec12('0xe'),auth['isAuthenticated'](),controller[_0xec12('0x14')]);router[_0xec12('0x13')]('/:id/actions',auth[_0xec12('0xb')](),controller[_0xec12('0x15')]);router[_0xec12('0x16')](_0xec12('0x17'),auth['isAuthenticated'](),controller[_0xec12('0x18')]);router[_0xec12('0x19')](_0xec12('0x17'),auth[_0xec12('0xb')](),controller[_0xec12('0x1a')]);module[_0xec12('0x1b')]=router;
\ No newline at end of file
index f82c241..754de33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a6e=['STRING','BOOLEAN','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0a6e,0xfb));var _0xe0a6=function(_0x1542e0,_0x2b3aba){_0x1542e0=_0x1542e0-0x0;var _0x43a467=_0x0a6e[_0x1542e0];return _0x43a467;};'use strict';var Sequelize=require(_0xe0a6('0x0'));module['exports']={'name':{'type':Sequelize[_0xe0a6('0x1')]},'channel':{'type':Sequelize[_0xe0a6('0x1')]},'description':{'type':Sequelize[_0xe0a6('0x1')]},'status':{'type':Sequelize[_0xe0a6('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x99ed=['sequelize','exports','STRING','BOOLEAN'];(function(_0x4ac320,_0x288cfc){var _0x22e691=function(_0x353ebf){while(--_0x353ebf){_0x4ac320['push'](_0x4ac320['shift']());}};_0x22e691(++_0x288cfc);}(_0x99ed,0x90));var _0xd99e=function(_0x16569d,_0x1d26e0){_0x16569d=_0x16569d-0x0;var _0x504b4b=_0x99ed[_0x16569d];return _0x504b4b;};'use strict';var Sequelize=require(_0xd99e('0x0'));module[_0xd99e('0x1')]={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xd99e('0x2')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize[_0xd99e('0x3')],'defaultValue':![]}};
\ No newline at end of file
index bfe5d39..6246882 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed8f=['intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Triggers','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','TriggerAllId','Condition','getAllConditions','nolimit','getAnyConditions','findOne','addAction','TriggerId','Action','getActions','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','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/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','reject','save','update','then','get','UserProfileResource','destroy','error','stack','name','index','map','Trigger','rawAttributes','fieldName','type','key','model','keys','query'];(function(_0x176dce,_0x16ca5c){var _0x3444b2=function(_0x614571){while(--_0x614571){_0x176dce['push'](_0x176dce['shift']());}};_0x3444b2(++_0x16ca5c);}(_0xed8f,0x8c));var _0xfed8=function(_0x25b738,_0x5c3de6){_0x25b738=_0x25b738-0x0;var _0x2c1051=_0xed8f[_0x25b738];return _0x2c1051;};'use strict';var emlformat=require(_0xfed8('0x0'));var rimraf=require(_0xfed8('0x1'));var zipdir=require(_0xfed8('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfed8('0x3'));var moment=require(_0xfed8('0x4'));var BPromise=require(_0xfed8('0x5'));var Mustache=require(_0xfed8('0x6'));var util=require(_0xfed8('0x7'));var path=require(_0xfed8('0x8'));var sox=require(_0xfed8('0x9'));var csv=require(_0xfed8('0xa'));var ejs=require(_0xfed8('0xb'));var fs=require('fs');var fs_extra=require(_0xfed8('0xc'));var _=require(_0xfed8('0xd'));var squel=require('squel');var crypto=require(_0xfed8('0xe'));var jsforce=require(_0xfed8('0xf'));var deskjs=require(_0xfed8('0x10'));var toCsv=require(_0xfed8('0xa'));var querystring=require(_0xfed8('0x11'));var Papa=require(_0xfed8('0x12'));var Redis=require(_0xfed8('0x13'));var authService=require(_0xfed8('0x14'));var qs=require(_0xfed8('0x15'));var as=require(_0xfed8('0x16'));var hardwareService=require(_0xfed8('0x17'));var logger=require(_0xfed8('0x18'))(_0xfed8('0x19'));var utils=require('../../config/utils');var config=require(_0xfed8('0x1a'));var licenseUtil=require(_0xfed8('0x1b'));var db=require(_0xfed8('0x1c'))['db'];function respondWithStatusCode(_0x421e75,_0x4e346c){_0x4e346c=_0x4e346c||0xcc;return function(_0x5ebb06){if(_0x5ebb06){return _0x421e75[_0xfed8('0x1d')](_0x4e346c);}return _0x421e75['status'](_0x4e346c)[_0xfed8('0x1e')]();};}function respondWithResult(_0x31d437,_0x47b56f){_0x47b56f=_0x47b56f||0xc8;return function(_0x49889e){if(_0x49889e){return _0x31d437['status'](_0x47b56f)[_0xfed8('0x1f')](_0x49889e);}};}function respondWithFilteredResult(_0x5941f5,_0x23a7ad){return function(_0x571511){if(_0x571511){var _0x31030e=typeof _0x23a7ad[_0xfed8('0x20')]===_0xfed8('0x21')&&typeof _0x23a7ad[_0xfed8('0x22')]==='undefined';var _0x4a5c85=_0x571511[_0xfed8('0x23')];var _0x34e228=_0x31030e?0x0:_0x23a7ad[_0xfed8('0x20')];var _0x246d10=_0x31030e?_0x571511['count']:_0x23a7ad[_0xfed8('0x20')]+_0x23a7ad[_0xfed8('0x22')];var _0x60d35f;if(_0x246d10>=_0x4a5c85){_0x246d10=_0x4a5c85;_0x60d35f=0xc8;}else{_0x60d35f=0xce;}_0x5941f5[_0xfed8('0x24')](_0x60d35f);return _0x5941f5[_0xfed8('0x25')]('Content-Range',_0x34e228+'-'+_0x246d10+'/'+_0x4a5c85)[_0xfed8('0x1f')](_0x571511);}return null;};}function patchUpdates(_0xcf342a){return function(_0x468d69){try{jsonpatch['apply'](_0x468d69,_0xcf342a,!![]);}catch(_0x44cff7){return BPromise[_0xfed8('0x26')](_0x44cff7);}return _0x468d69[_0xfed8('0x27')]();};}function saveUpdates(_0x5669f6,_0x158ad0){return function(_0x497aee){if(_0x497aee){return _0x497aee[_0xfed8('0x28')](_0x5669f6)[_0xfed8('0x29')](function(_0x890c7c){return _0x890c7c;});}return null;};}function removeEntity(_0x1cd7cf,_0x316249){return function(_0x344e4e){if(_0x344e4e){return _0x344e4e['destroy']()['then'](function(){var _0x1babf1=_0x344e4e[_0xfed8('0x2a')]({'plain':!![]});var _0x45f069='Triggers';return db[_0xfed8('0x2b')][_0xfed8('0x2c')]({'where':{'type':_0x45f069,'resourceId':_0x1babf1['id']}})[_0xfed8('0x29')](function(){return _0x344e4e;});})['then'](function(){_0x1cd7cf[_0xfed8('0x24')](0xcc)[_0xfed8('0x1e')]();});}};}function handleEntityNotFound(_0x5a9d6a,_0x104a11){return function(_0x1aed90){if(!_0x1aed90){_0x5a9d6a['sendStatus'](0x194);}return _0x1aed90;};}function handleError(_0x44b05d,_0x237beb){_0x237beb=_0x237beb||0x1f4;return function(_0xf69889){logger[_0xfed8('0x2d')](_0xf69889[_0xfed8('0x2e')]);if(_0xf69889[_0xfed8('0x2f')]){delete _0xf69889['name'];}_0x44b05d[_0xfed8('0x24')](_0x237beb)['send'](_0xf69889);};}exports[_0xfed8('0x30')]=function(_0x31761e,_0x134886){var _0x36a850={},_0x1cb256={},_0x19c2d6={'count':0x0,'rows':[]};var _0x3ddaa6=_[_0xfed8('0x31')](db[_0xfed8('0x32')][_0xfed8('0x33')],function(_0x2c7e43){return{'name':_0x2c7e43[_0xfed8('0x34')],'type':_0x2c7e43[_0xfed8('0x35')][_0xfed8('0x36')]};});_0x1cb256[_0xfed8('0x37')]=_[_0xfed8('0x31')](_0x3ddaa6,_0xfed8('0x2f'));_0x1cb256['query']=_[_0xfed8('0x38')](_0x31761e[_0xfed8('0x39')]);_0x1cb256['filters']=_[_0xfed8('0x3a')](_0x1cb256['model'],_0x1cb256[_0xfed8('0x39')]);_0x36a850['attributes']=_[_0xfed8('0x3a')](_0x1cb256['model'],qs[_0xfed8('0x3b')](_0x31761e[_0xfed8('0x39')][_0xfed8('0x3b')]));_0x36a850[_0xfed8('0x3c')]=_0x36a850['attributes'][_0xfed8('0x3d')]?_0x36a850['attributes']:_0x1cb256['model'];if(!_0x31761e[_0xfed8('0x39')][_0xfed8('0x3e')]('nolimit')){_0x36a850[_0xfed8('0x22')]=qs['limit'](_0x31761e['query'][_0xfed8('0x22')]);_0x36a850[_0xfed8('0x20')]=qs['offset'](_0x31761e['query'][_0xfed8('0x20')]);}_0x36a850[_0xfed8('0x3f')]=qs[_0xfed8('0x40')](_0x31761e['query']['sort']);_0x36a850[_0xfed8('0x41')]=qs[_0xfed8('0x42')](_[_0xfed8('0x43')](_0x31761e[_0xfed8('0x39')],_0x1cb256[_0xfed8('0x42')]),_0x3ddaa6);if(_0x31761e['query'][_0xfed8('0x44')]){_0x36a850['where']=_[_0xfed8('0x45')](_0x36a850[_0xfed8('0x41')],{'$or':_[_0xfed8('0x31')](_0x3ddaa6,function(_0x315abc){if(_0x315abc[_0xfed8('0x35')]!==_0xfed8('0x46')){var _0x2fc27d={};_0x2fc27d[_0x315abc[_0xfed8('0x2f')]]={'$like':'%'+_0x31761e[_0xfed8('0x39')]['filter']+'%'};return _0x2fc27d;}})});}_0x36a850=_[_0xfed8('0x45')]({},_0x36a850,_0x31761e[_0xfed8('0x47')]);var _0x8a258a={'where':_0x36a850[_0xfed8('0x41')]};return db[_0xfed8('0x32')][_0xfed8('0x23')](_0x8a258a)[_0xfed8('0x29')](function(_0xac21f0){_0x19c2d6[_0xfed8('0x23')]=_0xac21f0;if(_0x31761e[_0xfed8('0x39')][_0xfed8('0x48')]){_0x36a850[_0xfed8('0x49')]=[{'all':!![]}];}return db[_0xfed8('0x32')][_0xfed8('0x4a')](_0x36a850);})[_0xfed8('0x29')](function(_0x22d174){_0x19c2d6[_0xfed8('0x4b')]=_0x22d174;return _0x19c2d6;})[_0xfed8('0x29')](respondWithFilteredResult(_0x134886,_0x36a850))[_0xfed8('0x4c')](handleError(_0x134886,null));};exports['show']=function(_0x3fa47d,_0x13e1e7){var _0x593a78={'raw':![],'where':{'id':_0x3fa47d[_0xfed8('0x4d')]['id']}},_0x29e4b2={};_0x29e4b2[_0xfed8('0x37')]=_[_0xfed8('0x38')](db[_0xfed8('0x32')]['rawAttributes']);_0x29e4b2['query']=_[_0xfed8('0x38')](_0x3fa47d[_0xfed8('0x39')]);_0x29e4b2[_0xfed8('0x42')]=_[_0xfed8('0x3a')](_0x29e4b2[_0xfed8('0x37')],_0x29e4b2[_0xfed8('0x39')]);_0x593a78[_0xfed8('0x3c')]=_['intersection'](_0x29e4b2[_0xfed8('0x37')],qs[_0xfed8('0x3b')](_0x3fa47d[_0xfed8('0x39')][_0xfed8('0x3b')]));_0x593a78[_0xfed8('0x3c')]=_0x593a78[_0xfed8('0x3c')][_0xfed8('0x3d')]?_0x593a78[_0xfed8('0x3c')]:_0x29e4b2[_0xfed8('0x37')];if(_0x3fa47d[_0xfed8('0x39')][_0xfed8('0x48')]){_0x593a78[_0xfed8('0x49')]=[{'all':!![]}];}_0x593a78=_[_0xfed8('0x45')]({},_0x593a78,_0x3fa47d[_0xfed8('0x47')]);return db['Trigger'][_0xfed8('0x4e')](_0x593a78)['then'](handleEntityNotFound(_0x13e1e7,null))[_0xfed8('0x29')](respondWithResult(_0x13e1e7,null))[_0xfed8('0x4c')](handleError(_0x13e1e7,null));};exports['create']=function(_0x38a7d9,_0x4eab21){return db['Trigger'][_0xfed8('0x4f')](_0x38a7d9[_0xfed8('0x50')],{})['then'](function(_0x2f7862){var _0x498342=_0x38a7d9[_0xfed8('0x51')][_0xfed8('0x2a')]({'plain':!![]});if(!_0x498342)throw new Error(_0xfed8('0x52'));if(_0x498342[_0xfed8('0x53')]===_0xfed8('0x51')){var _0x4da71a=_0x2f7862[_0xfed8('0x2a')]({'plain':!![]});var _0x228fbe=_0xfed8('0x54');return db['UserProfileSection']['find']({'where':{'name':_0x228fbe,'userProfileId':_0x498342[_0xfed8('0x55')]},'raw':!![]})[_0xfed8('0x29')](function(_0x3c9b30){if(_0x3c9b30&&_0x3c9b30[_0xfed8('0x56')]===0x0){return db['UserProfileResource'][_0xfed8('0x4f')]({'name':_0x4da71a['name'],'resourceId':_0x4da71a['id'],'type':_0x3c9b30['name'],'sectionId':_0x3c9b30['id']},{})[_0xfed8('0x29')](function(){return _0x2f7862;});}else{return _0x2f7862;}})[_0xfed8('0x4c')](function(_0x182e4d){logger[_0xfed8('0x2d')](_0xfed8('0x57'),_0x182e4d);throw _0x182e4d;});}return _0x2f7862;})[_0xfed8('0x29')](respondWithResult(_0x4eab21,0xc9))['catch'](handleError(_0x4eab21,null));};exports['update']=function(_0x4e9393,_0x535f26){if(_0x4e9393['body']['id']){delete _0x4e9393[_0xfed8('0x50')]['id'];}return db[_0xfed8('0x32')][_0xfed8('0x4e')]({'where':{'id':_0x4e9393[_0xfed8('0x4d')]['id']}})[_0xfed8('0x29')](handleEntityNotFound(_0x535f26,null))[_0xfed8('0x29')](saveUpdates(_0x4e9393[_0xfed8('0x50')],null))[_0xfed8('0x29')](respondWithResult(_0x535f26,null))[_0xfed8('0x4c')](handleError(_0x535f26,null));};exports[_0xfed8('0x2c')]=function(_0x2f6d69,_0x3ca7b1){return db[_0xfed8('0x32')][_0xfed8('0x4e')]({'where':{'id':_0x2f6d69[_0xfed8('0x4d')]['id']}})[_0xfed8('0x29')](handleEntityNotFound(_0x3ca7b1,null))[_0xfed8('0x29')](removeEntity(_0x3ca7b1,null))[_0xfed8('0x4c')](handleError(_0x3ca7b1,null));};exports[_0xfed8('0x58')]=function(_0x1c8f76,_0x3004ee,_0x2d685d){if(_0x1c8f76[_0xfed8('0x50')]['id']){delete _0x1c8f76['body']['id'];}return db[_0xfed8('0x32')][_0xfed8('0x4e')]({'where':{'id':_0x1c8f76[_0xfed8('0x4d')]['id']}})[_0xfed8('0x29')](handleEntityNotFound(_0x3004ee,null))[_0xfed8('0x29')](function(_0x4bc0c1){if(_0x4bc0c1){_0x1c8f76[_0xfed8('0x50')][_0xfed8('0x59')]=_0x4bc0c1['id'];return db[_0xfed8('0x5a')][_0xfed8('0x4f')](_0x1c8f76[_0xfed8('0x50')]);}})['then'](respondWithResult(_0x3004ee,null))[_0xfed8('0x4c')](handleError(_0x3004ee,null));};exports['addAnyCondition']=function(_0x5187b0,_0x46c71c,_0x49058e){if(_0x5187b0[_0xfed8('0x50')]['id']){delete _0x5187b0[_0xfed8('0x50')]['id'];}return db[_0xfed8('0x32')][_0xfed8('0x4e')]({'where':{'id':_0x5187b0['params']['id']}})[_0xfed8('0x29')](handleEntityNotFound(_0x46c71c,null))[_0xfed8('0x29')](function(_0x26dd8a){if(_0x26dd8a){_0x5187b0['body']['TriggerAnyId']=_0x26dd8a['id'];return db['Condition']['create'](_0x5187b0['body']);}})['then'](respondWithResult(_0x46c71c,null))[_0xfed8('0x4c')](handleError(_0x46c71c,null));};exports[_0xfed8('0x5b')]=function(_0xb08726,_0x5e4127,_0x1a72a0){var _0xb6db98={};var _0x470de8={};var _0x126485;var _0xffb98;return db['Trigger']['findOne']({'where':{'id':_0xb08726[_0xfed8('0x4d')]['id']}})['then'](handleEntityNotFound(_0x5e4127,null))[_0xfed8('0x29')](function(_0x5aca92){if(_0x5aca92){_0x126485=_0x5aca92;_0x470de8['model']=_[_0xfed8('0x38')](db[_0xfed8('0x5a')][_0xfed8('0x33')]);_0x470de8[_0xfed8('0x39')]=_['keys'](_0xb08726[_0xfed8('0x39')]);_0x470de8[_0xfed8('0x42')]=_['intersection'](_0x470de8[_0xfed8('0x37')],_0x470de8[_0xfed8('0x39')]);_0xb6db98['attributes']=_[_0xfed8('0x3a')](_0x470de8[_0xfed8('0x37')],qs['fields'](_0xb08726[_0xfed8('0x39')][_0xfed8('0x3b')]));_0xb6db98[_0xfed8('0x3c')]=_0xb6db98['attributes'][_0xfed8('0x3d')]?_0xb6db98[_0xfed8('0x3c')]:_0x470de8[_0xfed8('0x37')];_0xb6db98[_0xfed8('0x3f')]=qs[_0xfed8('0x40')](_0xb08726[_0xfed8('0x39')]['sort']);_0xb6db98[_0xfed8('0x41')]=qs[_0xfed8('0x42')](_[_0xfed8('0x43')](_0xb08726[_0xfed8('0x39')],_0x470de8['filters']));if(_0xb08726[_0xfed8('0x39')][_0xfed8('0x44')]){_0xb6db98[_0xfed8('0x41')]=_[_0xfed8('0x45')](_0xb6db98[_0xfed8('0x41')],{'$or':_[_0xfed8('0x31')](_0xb6db98['attributes'],function(_0x545bd5){var _0x18637f={};_0x18637f[_0x545bd5]={'$like':'%'+_0xb08726[_0xfed8('0x39')]['filter']+'%'};return _0x18637f;})});}_0xb6db98=_['merge']({},_0xb6db98,_0xb08726[_0xfed8('0x47')]);return _0x126485['getAllConditions'](_0xb6db98);}})['then'](function(_0x4fe0c5){if(_0x4fe0c5){_0xffb98=_0x4fe0c5['length'];if(!_0xb08726['query'][_0xfed8('0x3e')](_0xfed8('0x5c'))){_0xb6db98['limit']=qs[_0xfed8('0x22')](_0xb08726[_0xfed8('0x39')]['limit']);_0xb6db98[_0xfed8('0x20')]=qs[_0xfed8('0x20')](_0xb08726[_0xfed8('0x39')][_0xfed8('0x20')]);}return _0x126485['getAllConditions'](_0xb6db98);}})[_0xfed8('0x29')](function(_0x13b27d){if(_0x13b27d){return _0x13b27d?{'count':_0xffb98,'rows':_0x13b27d}:null;}})[_0xfed8('0x29')](respondWithResult(_0x5e4127,null))['catch'](handleError(_0x5e4127,null));};exports[_0xfed8('0x5d')]=function(_0x11e58e,_0x23f2de,_0x163d9a){var _0x34e623={};var _0x3540f8={};var _0x1e049b;var _0x377330;return db[_0xfed8('0x32')][_0xfed8('0x5e')]({'where':{'id':_0x11e58e[_0xfed8('0x4d')]['id']}})[_0xfed8('0x29')](handleEntityNotFound(_0x23f2de,null))[_0xfed8('0x29')](function(_0x656137){if(_0x656137){_0x1e049b=_0x656137;_0x3540f8[_0xfed8('0x37')]=_[_0xfed8('0x38')](db['Condition'][_0xfed8('0x33')]);_0x3540f8[_0xfed8('0x39')]=_[_0xfed8('0x38')](_0x11e58e[_0xfed8('0x39')]);_0x3540f8[_0xfed8('0x42')]=_['intersection'](_0x3540f8[_0xfed8('0x37')],_0x3540f8[_0xfed8('0x39')]);_0x34e623[_0xfed8('0x3c')]=_[_0xfed8('0x3a')](_0x3540f8[_0xfed8('0x37')],qs[_0xfed8('0x3b')](_0x11e58e[_0xfed8('0x39')]['fields']));_0x34e623['attributes']=_0x34e623[_0xfed8('0x3c')]['length']?_0x34e623['attributes']:_0x3540f8['model'];_0x34e623['order']=qs[_0xfed8('0x40')](_0x11e58e[_0xfed8('0x39')][_0xfed8('0x40')]);_0x34e623[_0xfed8('0x41')]=qs[_0xfed8('0x42')](_[_0xfed8('0x43')](_0x11e58e['query'],_0x3540f8[_0xfed8('0x42')]));if(_0x11e58e[_0xfed8('0x39')][_0xfed8('0x44')]){_0x34e623['where']=_[_0xfed8('0x45')](_0x34e623[_0xfed8('0x41')],{'$or':_[_0xfed8('0x31')](_0x34e623['attributes'],function(_0x45a386){var _0x2ee151={};_0x2ee151[_0x45a386]={'$like':'%'+_0x11e58e[_0xfed8('0x39')][_0xfed8('0x44')]+'%'};return _0x2ee151;})});}_0x34e623=_[_0xfed8('0x45')]({},_0x34e623,_0x11e58e[_0xfed8('0x47')]);return _0x1e049b['getAnyConditions'](_0x34e623);}})[_0xfed8('0x29')](function(_0x4cbb73){if(_0x4cbb73){_0x377330=_0x4cbb73[_0xfed8('0x3d')];if(!_0x11e58e[_0xfed8('0x39')][_0xfed8('0x3e')]('nolimit')){_0x34e623[_0xfed8('0x22')]=qs[_0xfed8('0x22')](_0x11e58e['query']['limit']);_0x34e623[_0xfed8('0x20')]=qs[_0xfed8('0x20')](_0x11e58e[_0xfed8('0x39')][_0xfed8('0x20')]);}return _0x1e049b[_0xfed8('0x5d')](_0x34e623);}})[_0xfed8('0x29')](function(_0x1df64c){if(_0x1df64c){return _0x1df64c?{'count':_0x377330,'rows':_0x1df64c}:null;}})['then'](respondWithResult(_0x23f2de,null))[_0xfed8('0x4c')](handleError(_0x23f2de,null));};exports[_0xfed8('0x5f')]=function(_0x21a0ee,_0x152902,_0x1a5563){if(_0x21a0ee[_0xfed8('0x50')]['id']){delete _0x21a0ee[_0xfed8('0x50')]['id'];}return db['Trigger']['find']({'where':{'id':_0x21a0ee['params']['id']}})[_0xfed8('0x29')](handleEntityNotFound(_0x152902,null))[_0xfed8('0x29')](function(_0x5a51fc){if(_0x5a51fc){_0x21a0ee[_0xfed8('0x50')][_0xfed8('0x60')]=_0x5a51fc['id'];return db[_0xfed8('0x61')][_0xfed8('0x4f')](_0x21a0ee[_0xfed8('0x50')]);}})[_0xfed8('0x29')](respondWithResult(_0x152902,null))[_0xfed8('0x4c')](handleError(_0x152902,null));};exports[_0xfed8('0x62')]=function(_0x4af246,_0x434b97,_0x1412fc){var _0x4adb01={};var _0x1258d2={};var _0x228500;var _0x4f6fd9;return db[_0xfed8('0x32')][_0xfed8('0x5e')]({'where':{'id':_0x4af246[_0xfed8('0x4d')]['id']}})[_0xfed8('0x29')](handleEntityNotFound(_0x434b97,null))[_0xfed8('0x29')](function(_0x64523f){if(_0x64523f){_0x228500=_0x64523f;_0x1258d2[_0xfed8('0x37')]=_[_0xfed8('0x38')](db[_0xfed8('0x61')]['rawAttributes']);_0x1258d2[_0xfed8('0x39')]=_[_0xfed8('0x38')](_0x4af246[_0xfed8('0x39')]);_0x1258d2['filters']=_[_0xfed8('0x3a')](_0x1258d2[_0xfed8('0x37')],_0x1258d2[_0xfed8('0x39')]);_0x4adb01[_0xfed8('0x3c')]=_[_0xfed8('0x3a')](_0x1258d2[_0xfed8('0x37')],qs[_0xfed8('0x3b')](_0x4af246[_0xfed8('0x39')][_0xfed8('0x3b')]));_0x4adb01[_0xfed8('0x3c')]=_0x4adb01[_0xfed8('0x3c')]['length']?_0x4adb01[_0xfed8('0x3c')]:_0x1258d2['model'];_0x4adb01[_0xfed8('0x3f')]=qs[_0xfed8('0x40')](_0x4af246[_0xfed8('0x39')][_0xfed8('0x40')]);_0x4adb01[_0xfed8('0x41')]=qs[_0xfed8('0x42')](_[_0xfed8('0x43')](_0x4af246[_0xfed8('0x39')],_0x1258d2[_0xfed8('0x42')]));if(_0x4af246['query'][_0xfed8('0x44')]){_0x4adb01[_0xfed8('0x41')]=_[_0xfed8('0x45')](_0x4adb01[_0xfed8('0x41')],{'$or':_[_0xfed8('0x31')](_0x4adb01[_0xfed8('0x3c')],function(_0x3fc1f8){var _0x30f51f={};_0x30f51f[_0x3fc1f8]={'$like':'%'+_0x4af246[_0xfed8('0x39')][_0xfed8('0x44')]+'%'};return _0x30f51f;})});}_0x4adb01=_[_0xfed8('0x45')]({},_0x4adb01,_0x4af246[_0xfed8('0x47')]);return _0x228500['getActions'](_0x4adb01);}})['then'](function(_0x35989){if(_0x35989){_0x4f6fd9=_0x35989[_0xfed8('0x3d')];if(!_0x4af246[_0xfed8('0x39')]['hasOwnProperty'](_0xfed8('0x5c'))){_0x4adb01[_0xfed8('0x22')]=qs['limit'](_0x4af246[_0xfed8('0x39')][_0xfed8('0x22')]);_0x4adb01[_0xfed8('0x20')]=qs['offset'](_0x4af246[_0xfed8('0x39')][_0xfed8('0x20')]);}return _0x228500[_0xfed8('0x62')](_0x4adb01);}})['then'](function(_0xa111dd){if(_0xa111dd){return _0xa111dd?{'count':_0x4f6fd9,'rows':_0xa111dd}:null;}})[_0xfed8('0x29')](respondWithResult(_0x434b97,null))[_0xfed8('0x4c')](handleError(_0x434b97,null));};
\ No newline at end of file
+var _0x92a4=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','Triggers','UserProfileResource','destroy','name','send','index','type','key','model','query','filters','attributes','intersection','fields','length','nolimit','sort','where','pick','filter','map','VIRTUAL','merge','options','Trigger','include','catch','params','keys','includeAll','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','find','addAllCondition','TriggerAllId','Condition','getAllConditions','findOne','rawAttributes','order','hasOwnProperty','getAnyConditions','addAction','TriggerId','Action','getActions','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x3d85be,_0x53c96c){var _0x41242c=function(_0x4b87fd){while(--_0x4b87fd){_0x3d85be['push'](_0x3d85be['shift']());}};_0x41242c(++_0x53c96c);}(_0x92a4,0x101));var _0x492a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x92a4[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x492a('0x0'));var jsonpatch=require(_0x492a('0x1'));var rp=require(_0x492a('0x2'));var moment=require(_0x492a('0x3'));var BPromise=require(_0x492a('0x4'));var Mustache=require('mustache');var util=require(_0x492a('0x5'));var path=require(_0x492a('0x6'));var sox=require(_0x492a('0x7'));var csv=require('to-csv');var ejs=require(_0x492a('0x8'));var fs=require('fs');var fs_extra=require(_0x492a('0x9'));var _=require(_0x492a('0xa'));var squel=require(_0x492a('0xb'));var crypto=require(_0x492a('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x492a('0xd'));var toCsv=require(_0x492a('0xe'));var querystring=require(_0x492a('0xf'));var Papa=require(_0x492a('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x492a('0x11'));var hardwareService=require(_0x492a('0x12'));var logger=require(_0x492a('0x13'))(_0x492a('0x14'));var utils=require(_0x492a('0x15'));var config=require(_0x492a('0x16'));var licenseUtil=require(_0x492a('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x46068e,_0x5e4596){_0x5e4596=_0x5e4596||0xcc;return function(_0xa7b0ae){if(_0xa7b0ae){return _0x46068e[_0x492a('0x18')](_0x5e4596);}return _0x46068e[_0x492a('0x19')](_0x5e4596)[_0x492a('0x1a')]();};}function respondWithResult(_0x272634,_0x5f18d8){_0x5f18d8=_0x5f18d8||0xc8;return function(_0x32cc46){if(_0x32cc46){return _0x272634['status'](_0x5f18d8)[_0x492a('0x1b')](_0x32cc46);}};}function respondWithFilteredResult(_0x5c2fd1,_0x1bcf20){return function(_0x4d3583){if(_0x4d3583){var _0x8ef598=typeof _0x1bcf20[_0x492a('0x1c')]===_0x492a('0x1d')&&typeof _0x1bcf20[_0x492a('0x1e')]===_0x492a('0x1d');var _0x2eb1be=_0x4d3583[_0x492a('0x1f')];var _0xe04356=_0x8ef598?0x0:_0x1bcf20[_0x492a('0x1c')];var _0x17c464=_0x8ef598?_0x4d3583['count']:_0x1bcf20[_0x492a('0x1c')]+_0x1bcf20['limit'];var _0x4a3e72;if(_0x17c464>=_0x2eb1be){_0x17c464=_0x2eb1be;_0x4a3e72=0xc8;}else{_0x4a3e72=0xce;}_0x5c2fd1[_0x492a('0x19')](_0x4a3e72);return _0x5c2fd1[_0x492a('0x20')](_0x492a('0x21'),_0xe04356+'-'+_0x17c464+'/'+_0x2eb1be)['json'](_0x4d3583);}return null;};}function patchUpdates(_0x2f672f){return function(_0x2ab1bd){try{jsonpatch[_0x492a('0x22')](_0x2ab1bd,_0x2f672f,!![]);}catch(_0x44c932){return BPromise[_0x492a('0x23')](_0x44c932);}return _0x2ab1bd[_0x492a('0x24')]();};}function saveUpdates(_0x2f8ba6,_0x59fe4f){return function(_0x378282){if(_0x378282){return _0x378282[_0x492a('0x25')](_0x2f8ba6)['then'](function(_0x172d22){return _0x172d22;});}return null;};}function removeEntity(_0x213d36,_0x48e00a){return function(_0x4d440c){if(_0x4d440c){return _0x4d440c['destroy']()[_0x492a('0x26')](function(){var _0x3bd1d2=_0x4d440c[_0x492a('0x27')]({'plain':!![]});var _0x5ec3a7=_0x492a('0x28');return db[_0x492a('0x29')][_0x492a('0x2a')]({'where':{'type':_0x5ec3a7,'resourceId':_0x3bd1d2['id']}})[_0x492a('0x26')](function(){return _0x4d440c;});})['then'](function(){_0x213d36[_0x492a('0x19')](0xcc)[_0x492a('0x1a')]();});}};}function handleEntityNotFound(_0x58155e,_0x563865){return function(_0x807bd9){if(!_0x807bd9){_0x58155e[_0x492a('0x18')](0x194);}return _0x807bd9;};}function handleError(_0x52f77f,_0x16984e){_0x16984e=_0x16984e||0x1f4;return function(_0x4876f4){logger['error'](_0x4876f4['stack']);if(_0x4876f4[_0x492a('0x2b')]){delete _0x4876f4['name'];}_0x52f77f[_0x492a('0x19')](_0x16984e)[_0x492a('0x2c')](_0x4876f4);};}exports[_0x492a('0x2d')]=function(_0x5ae075,_0x227199){var _0x1e9cc0={},_0x24dc46={},_0x2652ae={'count':0x0,'rows':[]};var _0x45b294=_['map'](db['Trigger']['rawAttributes'],function(_0x294b2d){return{'name':_0x294b2d['fieldName'],'type':_0x294b2d[_0x492a('0x2e')][_0x492a('0x2f')]};});_0x24dc46[_0x492a('0x30')]=_['map'](_0x45b294,_0x492a('0x2b'));_0x24dc46[_0x492a('0x31')]=_['keys'](_0x5ae075[_0x492a('0x31')]);_0x24dc46[_0x492a('0x32')]=_['intersection'](_0x24dc46['model'],_0x24dc46['query']);_0x1e9cc0[_0x492a('0x33')]=_[_0x492a('0x34')](_0x24dc46[_0x492a('0x30')],qs[_0x492a('0x35')](_0x5ae075['query']['fields']));_0x1e9cc0[_0x492a('0x33')]=_0x1e9cc0[_0x492a('0x33')][_0x492a('0x36')]?_0x1e9cc0[_0x492a('0x33')]:_0x24dc46['model'];if(!_0x5ae075[_0x492a('0x31')]['hasOwnProperty'](_0x492a('0x37'))){_0x1e9cc0[_0x492a('0x1e')]=qs[_0x492a('0x1e')](_0x5ae075[_0x492a('0x31')][_0x492a('0x1e')]);_0x1e9cc0['offset']=qs['offset'](_0x5ae075[_0x492a('0x31')][_0x492a('0x1c')]);}_0x1e9cc0['order']=qs[_0x492a('0x38')](_0x5ae075[_0x492a('0x31')][_0x492a('0x38')]);_0x1e9cc0[_0x492a('0x39')]=qs[_0x492a('0x32')](_[_0x492a('0x3a')](_0x5ae075[_0x492a('0x31')],_0x24dc46['filters']),_0x45b294);if(_0x5ae075['query'][_0x492a('0x3b')]){_0x1e9cc0[_0x492a('0x39')]=_['merge'](_0x1e9cc0[_0x492a('0x39')],{'$or':_[_0x492a('0x3c')](_0x45b294,function(_0x160dc6){if(_0x160dc6['type']!==_0x492a('0x3d')){var _0x4a88e5={};_0x4a88e5[_0x160dc6[_0x492a('0x2b')]]={'$like':'%'+_0x5ae075[_0x492a('0x31')]['filter']+'%'};return _0x4a88e5;}})});}_0x1e9cc0=_[_0x492a('0x3e')]({},_0x1e9cc0,_0x5ae075[_0x492a('0x3f')]);var _0x51586e={'where':_0x1e9cc0[_0x492a('0x39')]};return db[_0x492a('0x40')][_0x492a('0x1f')](_0x51586e)[_0x492a('0x26')](function(_0x4df745){_0x2652ae['count']=_0x4df745;if(_0x5ae075[_0x492a('0x31')]['includeAll']){_0x1e9cc0[_0x492a('0x41')]=[{'all':!![]}];}return db[_0x492a('0x40')]['findAll'](_0x1e9cc0);})[_0x492a('0x26')](function(_0x47d365){_0x2652ae['rows']=_0x47d365;return _0x2652ae;})[_0x492a('0x26')](respondWithFilteredResult(_0x227199,_0x1e9cc0))[_0x492a('0x42')](handleError(_0x227199,null));};exports['show']=function(_0x24fe8a,_0x15babb){var _0x147835={'raw':![],'where':{'id':_0x24fe8a[_0x492a('0x43')]['id']}},_0x25cdc3={};_0x25cdc3[_0x492a('0x30')]=_['keys'](db[_0x492a('0x40')]['rawAttributes']);_0x25cdc3[_0x492a('0x31')]=_[_0x492a('0x44')](_0x24fe8a[_0x492a('0x31')]);_0x25cdc3['filters']=_[_0x492a('0x34')](_0x25cdc3['model'],_0x25cdc3[_0x492a('0x31')]);_0x147835['attributes']=_[_0x492a('0x34')](_0x25cdc3['model'],qs[_0x492a('0x35')](_0x24fe8a['query']['fields']));_0x147835['attributes']=_0x147835[_0x492a('0x33')][_0x492a('0x36')]?_0x147835[_0x492a('0x33')]:_0x25cdc3['model'];if(_0x24fe8a[_0x492a('0x31')][_0x492a('0x45')]){_0x147835[_0x492a('0x41')]=[{'all':!![]}];}_0x147835=_[_0x492a('0x3e')]({},_0x147835,_0x24fe8a['options']);return db[_0x492a('0x40')]['find'](_0x147835)[_0x492a('0x26')](handleEntityNotFound(_0x15babb,null))[_0x492a('0x26')](respondWithResult(_0x15babb,null))[_0x492a('0x42')](handleError(_0x15babb,null));};exports[_0x492a('0x46')]=function(_0x303321,_0x295b29){return db['Trigger'][_0x492a('0x46')](_0x303321[_0x492a('0x47')],{})['then'](function(_0x41c8a8){var _0x38ec30=_0x303321['user'][_0x492a('0x27')]({'plain':!![]});if(!_0x38ec30)throw new Error(_0x492a('0x48'));if(_0x38ec30[_0x492a('0x49')]===_0x492a('0x4a')){var _0x54d41d=_0x41c8a8[_0x492a('0x27')]({'plain':!![]});var _0x50a390=_0x492a('0x28');return db[_0x492a('0x4b')]['find']({'where':{'name':_0x50a390,'userProfileId':_0x38ec30[_0x492a('0x4c')]},'raw':!![]})['then'](function(_0x44df2a){if(_0x44df2a&&_0x44df2a[_0x492a('0x4d')]===0x0){return db['UserProfileResource'][_0x492a('0x46')]({'name':_0x54d41d[_0x492a('0x2b')],'resourceId':_0x54d41d['id'],'type':_0x44df2a[_0x492a('0x2b')],'sectionId':_0x44df2a['id']},{})['then'](function(){return _0x41c8a8;});}else{return _0x41c8a8;}})[_0x492a('0x42')](function(_0x3f1a1f){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3f1a1f);throw _0x3f1a1f;});}return _0x41c8a8;})[_0x492a('0x26')](respondWithResult(_0x295b29,0xc9))['catch'](handleError(_0x295b29,null));};exports[_0x492a('0x25')]=function(_0x4468ca,_0x569286){if(_0x4468ca[_0x492a('0x47')]['id']){delete _0x4468ca['body']['id'];}return db[_0x492a('0x40')][_0x492a('0x4e')]({'where':{'id':_0x4468ca[_0x492a('0x43')]['id']}})[_0x492a('0x26')](handleEntityNotFound(_0x569286,null))['then'](saveUpdates(_0x4468ca[_0x492a('0x47')],null))[_0x492a('0x26')](respondWithResult(_0x569286,null))[_0x492a('0x42')](handleError(_0x569286,null));};exports[_0x492a('0x2a')]=function(_0x3c4865,_0x43d52b){return db[_0x492a('0x40')][_0x492a('0x4e')]({'where':{'id':_0x3c4865[_0x492a('0x43')]['id']}})[_0x492a('0x26')](handleEntityNotFound(_0x43d52b,null))[_0x492a('0x26')](removeEntity(_0x43d52b,null))['catch'](handleError(_0x43d52b,null));};exports[_0x492a('0x4f')]=function(_0x4201e3,_0x1276a8,_0x428a8d){if(_0x4201e3[_0x492a('0x47')]['id']){delete _0x4201e3[_0x492a('0x47')]['id'];}return db['Trigger'][_0x492a('0x4e')]({'where':{'id':_0x4201e3[_0x492a('0x43')]['id']}})[_0x492a('0x26')](handleEntityNotFound(_0x1276a8,null))[_0x492a('0x26')](function(_0x3bd268){if(_0x3bd268){_0x4201e3[_0x492a('0x47')][_0x492a('0x50')]=_0x3bd268['id'];return db[_0x492a('0x51')][_0x492a('0x46')](_0x4201e3[_0x492a('0x47')]);}})[_0x492a('0x26')](respondWithResult(_0x1276a8,null))[_0x492a('0x42')](handleError(_0x1276a8,null));};exports['addAnyCondition']=function(_0x55ef99,_0x523bd9,_0x39bd71){if(_0x55ef99['body']['id']){delete _0x55ef99['body']['id'];}return db[_0x492a('0x40')][_0x492a('0x4e')]({'where':{'id':_0x55ef99[_0x492a('0x43')]['id']}})[_0x492a('0x26')](handleEntityNotFound(_0x523bd9,null))['then'](function(_0x1c13bb){if(_0x1c13bb){_0x55ef99[_0x492a('0x47')]['TriggerAnyId']=_0x1c13bb['id'];return db['Condition'][_0x492a('0x46')](_0x55ef99[_0x492a('0x47')]);}})[_0x492a('0x26')](respondWithResult(_0x523bd9,null))['catch'](handleError(_0x523bd9,null));};exports[_0x492a('0x52')]=function(_0x400596,_0x264971,_0x59964b){var _0x4cf626={};var _0x40e9c5={};var _0x431e8c;var _0x4a71c1;return db[_0x492a('0x40')][_0x492a('0x53')]({'where':{'id':_0x400596['params']['id']}})[_0x492a('0x26')](handleEntityNotFound(_0x264971,null))[_0x492a('0x26')](function(_0x3cdbdd){if(_0x3cdbdd){_0x431e8c=_0x3cdbdd;_0x40e9c5[_0x492a('0x30')]=_[_0x492a('0x44')](db[_0x492a('0x51')][_0x492a('0x54')]);_0x40e9c5[_0x492a('0x31')]=_[_0x492a('0x44')](_0x400596[_0x492a('0x31')]);_0x40e9c5[_0x492a('0x32')]=_['intersection'](_0x40e9c5[_0x492a('0x30')],_0x40e9c5['query']);_0x4cf626[_0x492a('0x33')]=_['intersection'](_0x40e9c5['model'],qs[_0x492a('0x35')](_0x400596[_0x492a('0x31')]['fields']));_0x4cf626['attributes']=_0x4cf626[_0x492a('0x33')][_0x492a('0x36')]?_0x4cf626[_0x492a('0x33')]:_0x40e9c5['model'];_0x4cf626[_0x492a('0x55')]=qs[_0x492a('0x38')](_0x400596[_0x492a('0x31')]['sort']);_0x4cf626[_0x492a('0x39')]=qs[_0x492a('0x32')](_['pick'](_0x400596[_0x492a('0x31')],_0x40e9c5[_0x492a('0x32')]));if(_0x400596[_0x492a('0x31')][_0x492a('0x3b')]){_0x4cf626[_0x492a('0x39')]=_[_0x492a('0x3e')](_0x4cf626['where'],{'$or':_['map'](_0x4cf626[_0x492a('0x33')],function(_0x202391){var _0x401841={};_0x401841[_0x202391]={'$like':'%'+_0x400596[_0x492a('0x31')]['filter']+'%'};return _0x401841;})});}_0x4cf626=_[_0x492a('0x3e')]({},_0x4cf626,_0x400596[_0x492a('0x3f')]);return _0x431e8c[_0x492a('0x52')](_0x4cf626);}})[_0x492a('0x26')](function(_0x52398f){if(_0x52398f){_0x4a71c1=_0x52398f[_0x492a('0x36')];if(!_0x400596['query'][_0x492a('0x56')](_0x492a('0x37'))){_0x4cf626[_0x492a('0x1e')]=qs[_0x492a('0x1e')](_0x400596[_0x492a('0x31')][_0x492a('0x1e')]);_0x4cf626[_0x492a('0x1c')]=qs['offset'](_0x400596[_0x492a('0x31')]['offset']);}return _0x431e8c[_0x492a('0x52')](_0x4cf626);}})[_0x492a('0x26')](function(_0x3f6501){if(_0x3f6501){return _0x3f6501?{'count':_0x4a71c1,'rows':_0x3f6501}:null;}})[_0x492a('0x26')](respondWithResult(_0x264971,null))[_0x492a('0x42')](handleError(_0x264971,null));};exports[_0x492a('0x57')]=function(_0x5993d1,_0x468dec,_0x58e678){var _0x23686a={};var _0x13fb7f={};var _0x1a8185;var _0x2fc2dc;return db['Trigger'][_0x492a('0x53')]({'where':{'id':_0x5993d1[_0x492a('0x43')]['id']}})['then'](handleEntityNotFound(_0x468dec,null))[_0x492a('0x26')](function(_0x17836c){if(_0x17836c){_0x1a8185=_0x17836c;_0x13fb7f['model']=_[_0x492a('0x44')](db[_0x492a('0x51')][_0x492a('0x54')]);_0x13fb7f['query']=_[_0x492a('0x44')](_0x5993d1[_0x492a('0x31')]);_0x13fb7f['filters']=_[_0x492a('0x34')](_0x13fb7f[_0x492a('0x30')],_0x13fb7f[_0x492a('0x31')]);_0x23686a['attributes']=_[_0x492a('0x34')](_0x13fb7f['model'],qs[_0x492a('0x35')](_0x5993d1[_0x492a('0x31')][_0x492a('0x35')]));_0x23686a['attributes']=_0x23686a[_0x492a('0x33')][_0x492a('0x36')]?_0x23686a[_0x492a('0x33')]:_0x13fb7f[_0x492a('0x30')];_0x23686a[_0x492a('0x55')]=qs[_0x492a('0x38')](_0x5993d1[_0x492a('0x31')][_0x492a('0x38')]);_0x23686a[_0x492a('0x39')]=qs[_0x492a('0x32')](_[_0x492a('0x3a')](_0x5993d1['query'],_0x13fb7f[_0x492a('0x32')]));if(_0x5993d1['query']['filter']){_0x23686a[_0x492a('0x39')]=_[_0x492a('0x3e')](_0x23686a[_0x492a('0x39')],{'$or':_[_0x492a('0x3c')](_0x23686a['attributes'],function(_0x481267){var _0xe78c83={};_0xe78c83[_0x481267]={'$like':'%'+_0x5993d1[_0x492a('0x31')][_0x492a('0x3b')]+'%'};return _0xe78c83;})});}_0x23686a=_['merge']({},_0x23686a,_0x5993d1['options']);return _0x1a8185['getAnyConditions'](_0x23686a);}})[_0x492a('0x26')](function(_0xb155aa){if(_0xb155aa){_0x2fc2dc=_0xb155aa[_0x492a('0x36')];if(!_0x5993d1['query'][_0x492a('0x56')](_0x492a('0x37'))){_0x23686a['limit']=qs[_0x492a('0x1e')](_0x5993d1[_0x492a('0x31')]['limit']);_0x23686a[_0x492a('0x1c')]=qs['offset'](_0x5993d1[_0x492a('0x31')][_0x492a('0x1c')]);}return _0x1a8185[_0x492a('0x57')](_0x23686a);}})[_0x492a('0x26')](function(_0x2a06c7){if(_0x2a06c7){return _0x2a06c7?{'count':_0x2fc2dc,'rows':_0x2a06c7}:null;}})[_0x492a('0x26')](respondWithResult(_0x468dec,null))[_0x492a('0x42')](handleError(_0x468dec,null));};exports[_0x492a('0x58')]=function(_0x4bcc39,_0x5d2fc1,_0xebacd5){if(_0x4bcc39[_0x492a('0x47')]['id']){delete _0x4bcc39['body']['id'];}return db[_0x492a('0x40')][_0x492a('0x4e')]({'where':{'id':_0x4bcc39['params']['id']}})[_0x492a('0x26')](handleEntityNotFound(_0x5d2fc1,null))[_0x492a('0x26')](function(_0xc7c8dd){if(_0xc7c8dd){_0x4bcc39[_0x492a('0x47')][_0x492a('0x59')]=_0xc7c8dd['id'];return db[_0x492a('0x5a')][_0x492a('0x46')](_0x4bcc39[_0x492a('0x47')]);}})['then'](respondWithResult(_0x5d2fc1,null))[_0x492a('0x42')](handleError(_0x5d2fc1,null));};exports['getActions']=function(_0x4c5311,_0x4c909c,_0x5c6eb7){var _0x3e360c={};var _0x2f5057={};var _0x3dbdcc;var _0xc33a98;return db['Trigger'][_0x492a('0x53')]({'where':{'id':_0x4c5311[_0x492a('0x43')]['id']}})[_0x492a('0x26')](handleEntityNotFound(_0x4c909c,null))['then'](function(_0x229d43){if(_0x229d43){_0x3dbdcc=_0x229d43;_0x2f5057[_0x492a('0x30')]=_['keys'](db[_0x492a('0x5a')]['rawAttributes']);_0x2f5057[_0x492a('0x31')]=_[_0x492a('0x44')](_0x4c5311[_0x492a('0x31')]);_0x2f5057[_0x492a('0x32')]=_[_0x492a('0x34')](_0x2f5057['model'],_0x2f5057['query']);_0x3e360c[_0x492a('0x33')]=_['intersection'](_0x2f5057[_0x492a('0x30')],qs[_0x492a('0x35')](_0x4c5311['query'][_0x492a('0x35')]));_0x3e360c[_0x492a('0x33')]=_0x3e360c[_0x492a('0x33')][_0x492a('0x36')]?_0x3e360c[_0x492a('0x33')]:_0x2f5057[_0x492a('0x30')];_0x3e360c[_0x492a('0x55')]=qs[_0x492a('0x38')](_0x4c5311[_0x492a('0x31')][_0x492a('0x38')]);_0x3e360c[_0x492a('0x39')]=qs[_0x492a('0x32')](_['pick'](_0x4c5311['query'],_0x2f5057[_0x492a('0x32')]));if(_0x4c5311[_0x492a('0x31')][_0x492a('0x3b')]){_0x3e360c[_0x492a('0x39')]=_[_0x492a('0x3e')](_0x3e360c['where'],{'$or':_[_0x492a('0x3c')](_0x3e360c['attributes'],function(_0x5742a3){var _0x574a7f={};_0x574a7f[_0x5742a3]={'$like':'%'+_0x4c5311[_0x492a('0x31')][_0x492a('0x3b')]+'%'};return _0x574a7f;})});}_0x3e360c=_[_0x492a('0x3e')]({},_0x3e360c,_0x4c5311[_0x492a('0x3f')]);return _0x3dbdcc[_0x492a('0x5b')](_0x3e360c);}})['then'](function(_0x185d6f){if(_0x185d6f){_0xc33a98=_0x185d6f[_0x492a('0x36')];if(!_0x4c5311[_0x492a('0x31')]['hasOwnProperty'](_0x492a('0x37'))){_0x3e360c[_0x492a('0x1e')]=qs[_0x492a('0x1e')](_0x4c5311[_0x492a('0x31')][_0x492a('0x1e')]);_0x3e360c[_0x492a('0x1c')]=qs[_0x492a('0x1c')](_0x4c5311[_0x492a('0x31')][_0x492a('0x1c')]);}return _0x3dbdcc[_0x492a('0x5b')](_0x3e360c);}})[_0x492a('0x26')](function(_0x34016c){if(_0x34016c){return _0x34016c?{'count':_0xc33a98,'rows':_0x34016c}:null;}})[_0x492a('0x26')](respondWithResult(_0x4c909c,null))[_0x492a('0x42')](handleError(_0x4c909c,null));};
\ No newline at end of file
index 5bf7eec..fbf2dc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefbf=['./trigger.attributes','define','Trigger','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x19aea2,_0x4957c8){var _0x1a33d3=function(_0x13fd80){while(--_0x13fd80){_0x19aea2['push'](_0x19aea2['shift']());}};_0x1a33d3(++_0x4957c8);}(_0xefbf,0xa3));var _0xfefb=function(_0x4c917e,_0x3165eb){_0x4c917e=_0x4c917e-0x0;var _0x1a95cb=_0xefbf[_0x4c917e];return _0x1a95cb;};'use strict';var _=require(_0xfefb('0x0'));var util=require(_0xfefb('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xfefb('0x2'));var rp=require(_0xfefb('0x3'));var fs=require('fs');var path=require(_0xfefb('0x4'));var rimraf=require(_0xfefb('0x5'));var config=require(_0xfefb('0x6'));var attributes=require(_0xfefb('0x7'));module['exports']=function(_0xaac208,_0x58c767){return _0xaac208[_0xfefb('0x8')](_0xfefb('0x9'),attributes,{'tableName':'tools_triggers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x04f1=['Trigger','tools_triggers','lodash','util','../../config/logger','bluebird','request-promise','path','define'];(function(_0x202a06,_0x3a346b){var _0x578aaf=function(_0x30532b){while(--_0x30532b){_0x202a06['push'](_0x202a06['shift']());}};_0x578aaf(++_0x3a346b);}(_0x04f1,0x92));var _0x104f=function(_0x4fd154,_0x4cd69c){_0x4fd154=_0x4fd154-0x0;var _0x1adcad=_0x04f1[_0x4fd154];return _0x1adcad;};'use strict';var _=require(_0x104f('0x0'));var util=require(_0x104f('0x1'));var logger=require(_0x104f('0x2'))('api');var moment=require('moment');var BPromise=require(_0x104f('0x3'));var rp=require(_0x104f('0x4'));var fs=require('fs');var path=require(_0x104f('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./trigger.attributes');module['exports']=function(_0x4e767b,_0x20a746){return _0x4e767b[_0x104f('0x6')](_0x104f('0x7'),attributes,{'tableName':_0x104f('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e4e1fb2..2f90ae5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d18=['lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info','Trigger,\x20%s,\x20%s','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetTrigger','Trigger','findAll','options','raw','attributes','limit','include','map','model','ShowTrigger','find'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x4d18,0x6c));var _0x84d1=function(_0x23c2cd,_0x440539){_0x23c2cd=_0x23c2cd-0x0;var _0x3c7401=_0x4d18[_0x23c2cd];return _0x3c7401;};'use strict';var _=require(_0x84d1('0x0'));var util=require('util');var moment=require(_0x84d1('0x1'));var BPromise=require(_0x84d1('0x2'));var rs=require(_0x84d1('0x3'));var fs=require('fs');var Redis=require(_0x84d1('0x4'));var db=require(_0x84d1('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x84d1('0x6'))(_0x84d1('0x7'));var config=require(_0x84d1('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x84d1('0x9')][_0x84d1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3749d7,_0x57afa6,_0x172404){return new BPromise(function(_0x5d2a14,_0x1cf3d9){return client[_0x84d1('0xb')](_0x3749d7,_0x172404)[_0x84d1('0xc')](function(_0x1584b2){logger[_0x84d1('0xd')](_0x84d1('0xe'),_0x57afa6,_0x84d1('0xf'));logger[_0x84d1('0x10')](_0x84d1('0x11'),_0x57afa6,_0x84d1('0xf'),JSON[_0x84d1('0x12')](_0x1584b2));if(_0x1584b2[_0x84d1('0x13')]){if(_0x1584b2[_0x84d1('0x13')][_0x84d1('0x14')]===0x1f4){logger[_0x84d1('0x13')]('Trigger,\x20%s,\x20%s',_0x57afa6,_0x1584b2[_0x84d1('0x13')][_0x84d1('0x15')]);return _0x1cf3d9(_0x1584b2[_0x84d1('0x13')][_0x84d1('0x15')]);}logger['error']('Trigger,\x20%s,\x20%s',_0x57afa6,_0x1584b2[_0x84d1('0x13')][_0x84d1('0x15')]);return _0x5d2a14(_0x1584b2[_0x84d1('0x13')]['message']);}else{logger[_0x84d1('0xd')]('Trigger,\x20%s,\x20%s',_0x57afa6,_0x84d1('0xf'));_0x5d2a14(_0x1584b2[_0x84d1('0x16')][_0x84d1('0x15')]);}})[_0x84d1('0x17')](function(_0x156085){logger[_0x84d1('0x13')](_0x84d1('0xe'),_0x57afa6,_0x156085);_0x1cf3d9(_0x156085);});});}exports[_0x84d1('0x18')]=function(_0x2d7463){var _0x25c71b=this;return new Promise(function(_0x2f2cbb,_0x325c72){return db[_0x84d1('0x19')][_0x84d1('0x1a')]({'raw':_0x2d7463['options']?_0x2d7463[_0x84d1('0x1b')][_0x84d1('0x1c')]===undefined?!![]:![]:!![],'where':_0x2d7463[_0x84d1('0x1b')]?_0x2d7463[_0x84d1('0x1b')]['where']||null:null,'attributes':_0x2d7463['options']?_0x2d7463[_0x84d1('0x1b')][_0x84d1('0x1d')]||null:null,'limit':_0x2d7463[_0x84d1('0x1b')]?_0x2d7463[_0x84d1('0x1b')][_0x84d1('0x1e')]||null:null,'include':_0x2d7463[_0x84d1('0x1b')]?_0x2d7463[_0x84d1('0x1b')][_0x84d1('0x1f')]?_[_0x84d1('0x20')](_0x2d7463[_0x84d1('0x1b')]['include'],function(_0x18aa1c){return{'model':db[_0x18aa1c[_0x84d1('0x21')]],'as':_0x18aa1c['as'],'attributes':_0x18aa1c[_0x84d1('0x1d')],'include':_0x18aa1c[_0x84d1('0x1f')]?_['map'](_0x18aa1c['include'],function(_0x3b7d10){return{'model':db[_0x3b7d10[_0x84d1('0x21')]],'as':_0x3b7d10['as'],'attributes':_0x3b7d10[_0x84d1('0x1d')],'include':_0x3b7d10[_0x84d1('0x1f')]?_[_0x84d1('0x20')](_0x3b7d10[_0x84d1('0x1f')],function(_0x328210){return{'model':db[_0x328210['model']],'as':_0x328210['as'],'attributes':_0x328210[_0x84d1('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x84d1('0xc')](function(_0xa4e408){logger[_0x84d1('0xd')](_0x84d1('0x18'),_0x2d7463);logger['debug'](_0x84d1('0x18'),_0x2d7463,JSON['stringify'](_0xa4e408));_0x2f2cbb(_0xa4e408);})[_0x84d1('0x17')](function(_0x42a387){logger[_0x84d1('0x13')]('GetTrigger',_0x42a387[_0x84d1('0x15')],_0x2d7463);_0x325c72(_0x25c71b[_0x84d1('0x13')](0x1f4,_0x42a387['message']));});});};exports[_0x84d1('0x22')]=function(_0x123825){var _0x50f1da=this;return new Promise(function(_0x3455df,_0x319c3b){return db[_0x84d1('0x19')][_0x84d1('0x23')]({'raw':_0x123825['options']?_0x123825[_0x84d1('0x1b')][_0x84d1('0x1c')]===undefined?!![]:![]:!![],'where':_0x123825[_0x84d1('0x1b')]?_0x123825[_0x84d1('0x1b')]['where']||null:null,'attributes':_0x123825['options']?_0x123825[_0x84d1('0x1b')]['attributes']||null:null,'include':_0x123825[_0x84d1('0x1b')]?_0x123825[_0x84d1('0x1b')][_0x84d1('0x1f')]?_[_0x84d1('0x20')](_0x123825[_0x84d1('0x1b')][_0x84d1('0x1f')],function(_0x1fdb8a){return{'model':db[_0x1fdb8a[_0x84d1('0x21')]],'as':_0x1fdb8a['as'],'attributes':_0x1fdb8a[_0x84d1('0x1d')],'include':_0x1fdb8a['include']?_[_0x84d1('0x20')](_0x1fdb8a[_0x84d1('0x1f')],function(_0x394746){return{'model':db[_0x394746[_0x84d1('0x21')]],'as':_0x394746['as'],'attributes':_0x394746['attributes'],'include':_0x394746[_0x84d1('0x1f')]?_[_0x84d1('0x20')](_0x394746[_0x84d1('0x1f')],function(_0x378156){return{'model':db[_0x378156['model']],'as':_0x378156['as'],'attributes':_0x378156[_0x84d1('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4874d2){logger['info'](_0x84d1('0x22'),_0x123825);logger[_0x84d1('0x10')](_0x84d1('0x22'),_0x123825,JSON[_0x84d1('0x12')](_0x4874d2));_0x3455df(_0x4874d2);})[_0x84d1('0x17')](function(_0x7a884a){logger[_0x84d1('0x13')]('ShowTrigger',_0x7a884a['message'],_0x123825);_0x319c3b(_0x50f1da[_0x84d1('0x13')](0x1f4,_0x7a884a[_0x84d1('0x15')]));});});};
\ No newline at end of file
+var _0x49e5=['attributes','include','map','then','GetTrigger','ShowTrigger','find','model','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','info','Trigger,\x20%s,\x20%s','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','Trigger','findAll','options','raw','where'];(function(_0x51e3db,_0x483e38){var _0x3f3a11=function(_0x1109e2){while(--_0x1109e2){_0x51e3db['push'](_0x51e3db['shift']());}};_0x3f3a11(++_0x483e38);}(_0x49e5,0x71));var _0x549e=function(_0x261cf2,_0x2cdd20){_0x261cf2=_0x261cf2-0x0;var _0x25bfdd=_0x49e5[_0x261cf2];return _0x25bfdd;};'use strict';var _=require(_0x549e('0x0'));var util=require(_0x549e('0x1'));var moment=require(_0x549e('0x2'));var BPromise=require(_0x549e('0x3'));var rs=require(_0x549e('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x549e('0x5'))['db'];var utils=require(_0x549e('0x6'));var logger=require(_0x549e('0x7'))(_0x549e('0x8'));var config=require(_0x549e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x549e('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5677b2,_0x44b1e3,_0x2d83f2){return new BPromise(function(_0x158392,_0x5e3c38){return client['request'](_0x5677b2,_0x2d83f2)['then'](function(_0x230ae5){logger[_0x549e('0xb')](_0x549e('0xc'),_0x44b1e3,_0x549e('0xd'));logger[_0x549e('0xe')](_0x549e('0xf'),_0x44b1e3,'request\x20sent',JSON[_0x549e('0x10')](_0x230ae5));if(_0x230ae5['error']){if(_0x230ae5[_0x549e('0x11')][_0x549e('0x12')]===0x1f4){logger[_0x549e('0x11')]('Trigger,\x20%s,\x20%s',_0x44b1e3,_0x230ae5[_0x549e('0x11')][_0x549e('0x13')]);return _0x5e3c38(_0x230ae5[_0x549e('0x11')]['message']);}logger[_0x549e('0x11')](_0x549e('0xc'),_0x44b1e3,_0x230ae5[_0x549e('0x11')][_0x549e('0x13')]);return _0x158392(_0x230ae5[_0x549e('0x11')][_0x549e('0x13')]);}else{logger[_0x549e('0xb')](_0x549e('0xc'),_0x44b1e3,_0x549e('0xd'));_0x158392(_0x230ae5[_0x549e('0x14')][_0x549e('0x13')]);}})[_0x549e('0x15')](function(_0x402c51){logger[_0x549e('0x11')](_0x549e('0xc'),_0x44b1e3,_0x402c51);_0x5e3c38(_0x402c51);});});}exports['GetTrigger']=function(_0x294cb3){var _0x233a69=this;return new Promise(function(_0x48f639,_0x7da4f2){return db[_0x549e('0x16')][_0x549e('0x17')]({'raw':_0x294cb3[_0x549e('0x18')]?_0x294cb3[_0x549e('0x18')][_0x549e('0x19')]===undefined?!![]:![]:!![],'where':_0x294cb3[_0x549e('0x18')]?_0x294cb3[_0x549e('0x18')][_0x549e('0x1a')]||null:null,'attributes':_0x294cb3[_0x549e('0x18')]?_0x294cb3[_0x549e('0x18')][_0x549e('0x1b')]||null:null,'limit':_0x294cb3[_0x549e('0x18')]?_0x294cb3['options']['limit']||null:null,'include':_0x294cb3['options']?_0x294cb3[_0x549e('0x18')][_0x549e('0x1c')]?_[_0x549e('0x1d')](_0x294cb3['options']['include'],function(_0x1a7f15){return{'model':db[_0x1a7f15['model']],'as':_0x1a7f15['as'],'attributes':_0x1a7f15[_0x549e('0x1b')],'include':_0x1a7f15[_0x549e('0x1c')]?_[_0x549e('0x1d')](_0x1a7f15[_0x549e('0x1c')],function(_0xabf2dc){return{'model':db[_0xabf2dc['model']],'as':_0xabf2dc['as'],'attributes':_0xabf2dc['attributes'],'include':_0xabf2dc[_0x549e('0x1c')]?_[_0x549e('0x1d')](_0xabf2dc[_0x549e('0x1c')],function(_0x425f53){return{'model':db[_0x425f53['model']],'as':_0x425f53['as'],'attributes':_0x425f53['attributes']};}):[]};}):[]};}):[]:[]})[_0x549e('0x1e')](function(_0x337123){logger[_0x549e('0xb')](_0x549e('0x1f'),_0x294cb3);logger[_0x549e('0xe')]('GetTrigger',_0x294cb3,JSON[_0x549e('0x10')](_0x337123));_0x48f639(_0x337123);})[_0x549e('0x15')](function(_0x3abda5){logger['error']('GetTrigger',_0x3abda5[_0x549e('0x13')],_0x294cb3);_0x7da4f2(_0x233a69[_0x549e('0x11')](0x1f4,_0x3abda5[_0x549e('0x13')]));});});};exports[_0x549e('0x20')]=function(_0x467e2d){var _0x13b293=this;return new Promise(function(_0x40785c,_0x2d1d41){return db[_0x549e('0x16')][_0x549e('0x21')]({'raw':_0x467e2d['options']?_0x467e2d[_0x549e('0x18')][_0x549e('0x19')]===undefined?!![]:![]:!![],'where':_0x467e2d[_0x549e('0x18')]?_0x467e2d[_0x549e('0x18')][_0x549e('0x1a')]||null:null,'attributes':_0x467e2d[_0x549e('0x18')]?_0x467e2d['options'][_0x549e('0x1b')]||null:null,'include':_0x467e2d['options']?_0x467e2d['options'][_0x549e('0x1c')]?_[_0x549e('0x1d')](_0x467e2d[_0x549e('0x18')]['include'],function(_0x2b2ee1){return{'model':db[_0x2b2ee1[_0x549e('0x22')]],'as':_0x2b2ee1['as'],'attributes':_0x2b2ee1[_0x549e('0x1b')],'include':_0x2b2ee1[_0x549e('0x1c')]?_[_0x549e('0x1d')](_0x2b2ee1['include'],function(_0x18740d){return{'model':db[_0x18740d[_0x549e('0x22')]],'as':_0x18740d['as'],'attributes':_0x18740d[_0x549e('0x1b')],'include':_0x18740d[_0x549e('0x1c')]?_['map'](_0x18740d[_0x549e('0x1c')],function(_0x141391){return{'model':db[_0x141391['model']],'as':_0x141391['as'],'attributes':_0x141391[_0x549e('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x549e('0x1e')](function(_0x2e0a0b){logger[_0x549e('0xb')](_0x549e('0x20'),_0x467e2d);logger[_0x549e('0xe')](_0x549e('0x20'),_0x467e2d,JSON[_0x549e('0x10')](_0x2e0a0b));_0x40785c(_0x2e0a0b);})['catch'](function(_0x3aa382){logger[_0x549e('0x11')](_0x549e('0x20'),_0x3aa382['message'],_0x467e2d);_0x2d1d41(_0x13b293[_0x549e('0x11')](0x1f4,_0x3aa382[_0x549e('0x13')]));});});};
\ No newline at end of file
index e5f398a..4d156ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff63=['create','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./trunk.controller','isAuthenticated','index','/:id','show','post','/:id/clone','clone'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xff63,0xd7));var _0x3ff6=function(_0x561c28,_0x30934b){_0x561c28=_0x561c28-0x0;var _0x3997b3=_0xff63[_0x561c28];return _0x3997b3;};'use strict';var multer=require(_0x3ff6('0x0'));var util=require(_0x3ff6('0x1'));var path=require(_0x3ff6('0x2'));var timeout=require('connect-timeout');var express=require(_0x3ff6('0x3'));var router=express[_0x3ff6('0x4')]();var fs_extra=require(_0x3ff6('0x5'));var auth=require(_0x3ff6('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x3ff6('0x7'));var controller=require(_0x3ff6('0x8'));router['get']('/',auth[_0x3ff6('0x9')](),controller[_0x3ff6('0xa')]);router['get'](_0x3ff6('0xb'),auth[_0x3ff6('0x9')](),controller[_0x3ff6('0xc')]);router[_0x3ff6('0xd')](_0x3ff6('0xe'),auth[_0x3ff6('0x9')](),controller[_0x3ff6('0xf')]);router[_0x3ff6('0xd')]('/',auth[_0x3ff6('0x9')](),controller[_0x3ff6('0x10')]);router['put'](_0x3ff6('0xb'),auth[_0x3ff6('0x9')](),controller[_0x3ff6('0x11')]);router[_0x3ff6('0x12')](_0x3ff6('0xb'),auth[_0x3ff6('0x9')](),controller[_0x3ff6('0x13')]);module[_0x3ff6('0x14')]=router;
\ No newline at end of file
+var _0x1bd8=['update','destroy','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./trunk.controller','isAuthenticated','index','get','/:id','show','clone','post','put'];(function(_0x2942ab,_0x3be3ee){var _0x1b6576=function(_0x73f63b){while(--_0x73f63b){_0x2942ab['push'](_0x2942ab['shift']());}};_0x1b6576(++_0x3be3ee);}(_0x1bd8,0x191));var _0x81bd=function(_0x44e49b,_0x5d5ecf){_0x44e49b=_0x44e49b-0x0;var _0x192631=_0x1bd8[_0x44e49b];return _0x192631;};'use strict';var multer=require(_0x81bd('0x0'));var util=require('util');var path=require(_0x81bd('0x1'));var timeout=require(_0x81bd('0x2'));var express=require('express');var router=express[_0x81bd('0x3')]();var fs_extra=require(_0x81bd('0x4'));var auth=require(_0x81bd('0x5'));var interaction=require(_0x81bd('0x6'));var config=require(_0x81bd('0x7'));var controller=require(_0x81bd('0x8'));router['get']('/',auth[_0x81bd('0x9')](),controller[_0x81bd('0xa')]);router[_0x81bd('0xb')](_0x81bd('0xc'),auth[_0x81bd('0x9')](),controller[_0x81bd('0xd')]);router['post']('/:id/clone',auth[_0x81bd('0x9')](),controller[_0x81bd('0xe')]);router[_0x81bd('0xf')]('/',auth[_0x81bd('0x9')](),controller['create']);router[_0x81bd('0x10')]('/:id',auth[_0x81bd('0x9')](),controller[_0x81bd('0x11')]);router['delete'](_0x81bd('0xc'),auth[_0x81bd('0x9')](),controller[_0x81bd('0x12')]);module['exports']=router;
\ No newline at end of file
index fbe9128..aeb4742 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cd9=['auto','rfc2833','yes','update','outgoing','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','insecure','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','INTEGER','always','accept','refuse','uac','uas','pai','fingerprint','dynamic','nonat','update,nonat','BOOLEAN','sequelize','exports','STRING','ENUM','friend','user','peer','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB','udp','setDataValue','transport','join','getDataValue','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','shortinfo','inband'];(function(_0x4eb82f,_0x41c5b3){var _0x293e61=function(_0x2d4edb){while(--_0x2d4edb){_0x4eb82f['push'](_0x4eb82f['shift']());}};_0x293e61(++_0x41c5b3);}(_0x3cd9,0x121));var _0x93cd=function(_0x10dc60,_0x2fcce1){_0x10dc60=_0x10dc60-0x0;var _0x47dec5=_0x3cd9[_0x10dc60];return _0x47dec5;};'use strict';var Sequelize=require(_0x93cd('0x0'));module[_0x93cd('0x1')]={'name':{'type':Sequelize[_0x93cd('0x2')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x93cd('0x3')](_0x93cd('0x4'),_0x93cd('0x5'),_0x93cd('0x6')),'allowNull':![],'defaultValue':_0x93cd('0x4')},'context':{'type':Sequelize[_0x93cd('0x2')],'allowNull':![],'defaultValue':_0x93cd('0x7')},'callingpres':{'type':Sequelize['ENUM'](_0x93cd('0x8'),_0x93cd('0x9'),_0x93cd('0xa'),_0x93cd('0xb'),_0x93cd('0xc'),_0x93cd('0xd'),'PROHIB_FAILED_SCREEN',_0x93cd('0xe'))},'deny':{'type':Sequelize[_0x93cd('0x2')]},'permit':{'type':Sequelize[_0x93cd('0x2')]},'secret':{'type':Sequelize[_0x93cd('0x2')]},'md5secret':{'type':Sequelize[_0x93cd('0x2')]},'remotesecret':{'type':Sequelize[_0x93cd('0x2')]},'transport':{'type':Sequelize[_0x93cd('0x2')],'defaultValue':_0x93cd('0xf'),'set':function(_0xaeaea4){this[_0x93cd('0x10')](_0x93cd('0x11'),_0xaeaea4?_0xaeaea4[_0x93cd('0x12')](','):null);},'get':function(){return this[_0x93cd('0x13')](_0x93cd('0x11'))?this[_0x93cd('0x13')](_0x93cd('0x11'))['split'](','):null;},'comment':_0x93cd('0x14')},'dtmfmode':{'type':Sequelize['ENUM']('rfc2833','info',_0x93cd('0x15'),_0x93cd('0x16'),_0x93cd('0x17')),'defaultValue':_0x93cd('0x18')},'directmedia':{'type':Sequelize[_0x93cd('0x3')](_0x93cd('0x19'),'no','nonat',_0x93cd('0x1a'),_0x93cd('0x1b')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x93cd('0x3')](_0x93cd('0x19'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING']},'directmediadeny':{'type':Sequelize[_0x93cd('0x2')]},'nat':{'type':Sequelize['STRING'],'defaultValue':_0x93cd('0x1c'),'set':function(_0x36efac){this[_0x93cd('0x10')]('nat',_0x36efac?_0x36efac[_0x93cd('0x12')](','):null);},'get':function(){return this['getDataValue']('nat')?this['getDataValue'](_0x93cd('0x1d'))['split'](','):null;},'comment':_0x93cd('0x1e')},'callgroup':{'type':Sequelize[_0x93cd('0x2')]},'namedcallgroup':{'type':Sequelize[_0x93cd('0x2')]},'pickupgroup':{'type':Sequelize[_0x93cd('0x2')]},'namedpickupgroup':{'type':Sequelize[_0x93cd('0x2')]},'language':{'type':Sequelize[_0x93cd('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x93cd('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize['STRING'],'defaultValue':_0x93cd('0x1f')},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x93cd('0x20'),'set':function(_0x2745ba){this['setDataValue']('allow',_0x2745ba?_0x2745ba[_0x93cd('0x12')](';'):_0x93cd('0x20'));},'get':function(){return this[_0x93cd('0x13')]('allow')?this['getDataValue'](_0x93cd('0x21'))['split'](';'):null;},'comment':_0x93cd('0x22')},'autoframing':{'type':Sequelize[_0x93cd('0x3')](_0x93cd('0x19'),'no')},'insecure':{'type':Sequelize[_0x93cd('0x2')],'defaultValue':'port,invite','set':function(_0x1c0891){this['setDataValue'](_0x93cd('0x23'),_0x1c0891?_0x1c0891[_0x93cd('0x12')](','):null);},'get':function(){return this['getDataValue'](_0x93cd('0x23'))?this['getDataValue'](_0x93cd('0x23'))[_0x93cd('0x24')](','):null;},'comment':_0x93cd('0x25')},'trustrpid':{'type':Sequelize['ENUM'](_0x93cd('0x19'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x93cd('0x3')](_0x93cd('0x19'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x93cd('0x3')](_0x93cd('0x19'),'no',_0x93cd('0x26'))},'promiscredir':{'type':Sequelize['ENUM']('yes','no')},'useclientcode':{'type':Sequelize[_0x93cd('0x3')]('yes','no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize[_0x93cd('0x2')]},'callerid':{'type':Sequelize[_0x93cd('0x2')],'defaultValue':_0x93cd('0x27')},'amaflags':{'type':Sequelize[_0x93cd('0x2')]},'callcounter':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0x93cd('0x19')},'busylevel':{'type':Sequelize[_0x93cd('0x28')](0xb)},'allowoverlap':{'type':Sequelize[_0x93cd('0x3')](_0x93cd('0x19'),'no')},'allowsubscribe':{'type':Sequelize[_0x93cd('0x3')](_0x93cd('0x19'),'no')},'allowtransfer':{'type':Sequelize[_0x93cd('0x3')]('yes','no')},'ignoresdpversion':{'type':Sequelize['ENUM'](_0x93cd('0x19'),'no')},'subscribecontext':{'type':Sequelize['STRING']},'template':{'type':Sequelize[_0x93cd('0x2')]},'videosupport':{'type':Sequelize[_0x93cd('0x3')](_0x93cd('0x19'),'no',_0x93cd('0x29')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x93cd('0x19'),'no')},'mailbox':{'type':Sequelize[_0x93cd('0x2')]},'session_timers':{'type':Sequelize[_0x93cd('0x3')](_0x93cd('0x2a'),_0x93cd('0x2b'),'originate')},'session_expires':{'type':Sequelize[_0x93cd('0x28')](0xb)},'session_minse':{'type':Sequelize[_0x93cd('0x28')](0xb)},'session_refresher':{'type':Sequelize[_0x93cd('0x3')](_0x93cd('0x2c'),_0x93cd('0x2d')),'defaultValue':_0x93cd('0x2d')},'t38pt_usertpsource':{'type':Sequelize[_0x93cd('0x2')]},'regexten':{'type':Sequelize[_0x93cd('0x2')]},'fromdomain':{'type':Sequelize[_0x93cd('0x2')]},'fromuser':{'type':Sequelize[_0x93cd('0x2')]},'port':{'type':Sequelize['INTEGER'](0x5)},'qualify':{'type':Sequelize[_0x93cd('0x3')](_0x93cd('0x19'),'no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x93cd('0x28')](0xb)},'defaultip':{'type':Sequelize[_0x93cd('0x2')]},'defaultuser':{'type':Sequelize[_0x93cd('0x2')]},'rtptimeout':{'type':Sequelize[_0x93cd('0x28')](0xb)},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpkeepalive':{'type':Sequelize[_0x93cd('0x28')](0xb)},'sendrpid':{'type':Sequelize['ENUM'](_0x93cd('0x19'),'no',_0x93cd('0x2e')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x93cd('0x2')]},'callbackextension':{'type':Sequelize[_0x93cd('0x2')]},'timert1':{'type':Sequelize[_0x93cd('0x28')](0xb)},'timerb':{'type':Sequelize[_0x93cd('0x28')](0xb)},'qualifyfreq':{'type':Sequelize[_0x93cd('0x28')](0xb)},'contactpermit':{'type':Sequelize['STRING']},'contactdeny':{'type':Sequelize[_0x93cd('0x2')]},'contactacl':{'type':Sequelize['STRING']},'unsolicited_mailbox':{'type':Sequelize[_0x93cd('0x2')]},'use_q850_reason':{'type':Sequelize[_0x93cd('0x2')]},'maxforwards':{'type':Sequelize[_0x93cd('0x28')](0xb)},'encryption':{'type':Sequelize[_0x93cd('0x3')](_0x93cd('0x19'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x93cd('0x3')](_0x93cd('0x19'),'no')},'force_avp':{'type':Sequelize['ENUM'](_0x93cd('0x19'),'no')},'icesupport':{'type':Sequelize[_0x93cd('0x3')](_0x93cd('0x19'),'no')},'dtlsenable':{'type':Sequelize[_0x93cd('0x3')](_0x93cd('0x19'),'no')},'dtlsverify':{'type':Sequelize['ENUM'](_0x93cd('0x19'),'no',_0x93cd('0x2f'),'certificate')},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb)},'dtlscertfile':{'type':Sequelize[_0x93cd('0x2')]},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize[_0x93cd('0x2')]},'dtlscafile':{'type':Sequelize[_0x93cd('0x2')]},'dtlscapath':{'type':Sequelize[_0x93cd('0x2')]},'dtlssetup':{'type':Sequelize['ENUM']('active','passive','actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x93cd('0x2')]},'usereqphone':{'type':Sequelize[_0x93cd('0x3')](_0x93cd('0x19'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x93cd('0x2')]},'recordofffeature':{'type':Sequelize[_0x93cd('0x2')]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize['ENUM'](_0x93cd('0x19'),'no')},'subscribemwi':{'type':Sequelize[_0x93cd('0x3')](_0x93cd('0x19'),'no')},'vmexten':{'type':Sequelize[_0x93cd('0x2')]},'mohinterpret':{'type':Sequelize[_0x93cd('0x2')]},'mohsuggest':{'type':Sequelize[_0x93cd('0x2')]},'parkinglot':{'type':Sequelize[_0x93cd('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x93cd('0x2')],'defaultValue':_0x93cd('0x30')},'canreinvite':{'type':Sequelize['ENUM'](_0x93cd('0x19'),'no',_0x93cd('0x31'),_0x93cd('0x1a'),_0x93cd('0x32')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0x93cd('0x2')]},'active':{'type':Sequelize[_0x93cd('0x33')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize['STRING'],'defaultValue':'no'}};
\ No newline at end of file
+var _0x5559=['\x22\x22\x20<>','always','refuse','originate','uac','uas','pai','fingerprint','certificate','active','passive','actpass','update','update,nonat','BOOLEAN','sequelize','exports','STRING','user','friend','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','udp','getDataValue','transport','ENUM','rfc2833','info','shortinfo','inband','auto','yes','nonat','force_rport,comedia','nat','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','allow','ulaw;alaw;gsm','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER'];(function(_0x457808,_0x4c22fc){var _0x122088=function(_0x587176){while(--_0x587176){_0x457808['push'](_0x457808['shift']());}};_0x122088(++_0x4c22fc);}(_0x5559,0x19f));var _0x9555=function(_0x50c2dd,_0x4d7751){_0x50c2dd=_0x50c2dd-0x0;var _0x57671=_0x5559[_0x50c2dd];return _0x57671;};'use strict';var Sequelize=require(_0x9555('0x0'));module[_0x9555('0x1')]={'name':{'type':Sequelize[_0x9555('0x2')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM']('friend',_0x9555('0x3'),'peer'),'allowNull':![],'defaultValue':_0x9555('0x4')},'context':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9555('0x5')},'callingpres':{'type':Sequelize['ENUM'](_0x9555('0x6'),_0x9555('0x7'),_0x9555('0x8'),_0x9555('0x9'),'PROHIB_NOT_SCREENED',_0x9555('0xa'),_0x9555('0xb'),'PROHIB')},'deny':{'type':Sequelize[_0x9555('0x2')]},'permit':{'type':Sequelize[_0x9555('0x2')]},'secret':{'type':Sequelize[_0x9555('0x2')]},'md5secret':{'type':Sequelize[_0x9555('0x2')]},'remotesecret':{'type':Sequelize[_0x9555('0x2')]},'transport':{'type':Sequelize[_0x9555('0x2')],'defaultValue':_0x9555('0xc'),'set':function(_0x56c34e){this['setDataValue']('transport',_0x56c34e?_0x56c34e['join'](','):null);},'get':function(){return this[_0x9555('0xd')](_0x9555('0xe'))?this[_0x9555('0xd')](_0x9555('0xe'))['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0x9555('0xf')](_0x9555('0x10'),_0x9555('0x11'),_0x9555('0x12'),_0x9555('0x13'),_0x9555('0x14')),'defaultValue':_0x9555('0x10')},'directmedia':{'type':Sequelize[_0x9555('0xf')](_0x9555('0x15'),'no',_0x9555('0x16'),'update','outgoing'),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x9555('0xf')]('yes','no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x9555('0x2')]},'directmediadeny':{'type':Sequelize[_0x9555('0x2')]},'nat':{'type':Sequelize[_0x9555('0x2')],'defaultValue':_0x9555('0x17'),'set':function(_0xcd6d3e){this['setDataValue'](_0x9555('0x18'),_0xcd6d3e?_0xcd6d3e[_0x9555('0x19')](','):null);},'get':function(){return this[_0x9555('0xd')](_0x9555('0x18'))?this[_0x9555('0xd')](_0x9555('0x18'))[_0x9555('0x1a')](','):null;},'comment':_0x9555('0x1b')},'callgroup':{'type':Sequelize[_0x9555('0x2')]},'namedcallgroup':{'type':Sequelize[_0x9555('0x2')]},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0x9555('0x2')]},'language':{'type':Sequelize[_0x9555('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x9555('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x9555('0x2')],'defaultValue':'all'},'allow':{'type':Sequelize[_0x9555('0x2')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x5abf20){this['setDataValue'](_0x9555('0x1c'),_0x5abf20?_0x5abf20[_0x9555('0x19')](';'):_0x9555('0x1d'));},'get':function(){return this['getDataValue'](_0x9555('0x1c'))?this[_0x9555('0xd')](_0x9555('0x1c'))[_0x9555('0x1a')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]'},'autoframing':{'type':Sequelize[_0x9555('0xf')](_0x9555('0x15'),'no')},'insecure':{'type':Sequelize['STRING'],'defaultValue':_0x9555('0x1e'),'set':function(_0x299da0){this['setDataValue'](_0x9555('0x1f'),_0x299da0?_0x299da0[_0x9555('0x19')](','):null);},'get':function(){return this[_0x9555('0xd')](_0x9555('0x1f'))?this[_0x9555('0xd')]('insecure')['split'](','):null;},'comment':_0x9555('0x20')},'trustrpid':{'type':Sequelize[_0x9555('0xf')](_0x9555('0x15'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x9555('0xf')](_0x9555('0x15'),'no',_0x9555('0x21'))},'promiscredir':{'type':Sequelize['ENUM'](_0x9555('0x15'),'no')},'useclientcode':{'type':Sequelize[_0x9555('0xf')]('yes','no')},'accountcode':{'type':Sequelize[_0x9555('0x22')](0xb)},'setvar':{'type':Sequelize[_0x9555('0x2')]},'callerid':{'type':Sequelize['STRING'],'defaultValue':_0x9555('0x23')},'amaflags':{'type':Sequelize['STRING']},'callcounter':{'type':Sequelize[_0x9555('0xf')](_0x9555('0x15'),'no'),'defaultValue':_0x9555('0x15')},'busylevel':{'type':Sequelize[_0x9555('0x22')](0xb)},'allowoverlap':{'type':Sequelize['ENUM'](_0x9555('0x15'),'no')},'allowsubscribe':{'type':Sequelize[_0x9555('0xf')](_0x9555('0x15'),'no')},'allowtransfer':{'type':Sequelize[_0x9555('0xf')](_0x9555('0x15'),'no')},'ignoresdpversion':{'type':Sequelize['ENUM'](_0x9555('0x15'),'no')},'subscribecontext':{'type':Sequelize[_0x9555('0x2')]},'template':{'type':Sequelize[_0x9555('0x2')]},'videosupport':{'type':Sequelize['ENUM'](_0x9555('0x15'),'no',_0x9555('0x24')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x9555('0x22')](0xb)},'rfc2833compensate':{'type':Sequelize[_0x9555('0xf')]('yes','no')},'mailbox':{'type':Sequelize['STRING']},'session_timers':{'type':Sequelize[_0x9555('0xf')]('accept',_0x9555('0x25'),_0x9555('0x26'))},'session_expires':{'type':Sequelize[_0x9555('0x22')](0xb)},'session_minse':{'type':Sequelize['INTEGER'](0xb)},'session_refresher':{'type':Sequelize[_0x9555('0xf')](_0x9555('0x27'),_0x9555('0x28')),'defaultValue':_0x9555('0x28')},'t38pt_usertpsource':{'type':Sequelize[_0x9555('0x2')]},'regexten':{'type':Sequelize[_0x9555('0x2')]},'fromdomain':{'type':Sequelize['STRING']},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x9555('0x22')](0x5)},'qualify':{'type':Sequelize['ENUM'](_0x9555('0x15'),'no'),'defaultValue':_0x9555('0x15')},'keepalive':{'type':Sequelize[_0x9555('0x22')](0xb)},'defaultip':{'type':Sequelize[_0x9555('0x2')]},'defaultuser':{'type':Sequelize[_0x9555('0x2')]},'rtptimeout':{'type':Sequelize[_0x9555('0x22')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x9555('0x22')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x9555('0x22')](0xb)},'sendrpid':{'type':Sequelize[_0x9555('0xf')](_0x9555('0x15'),'no',_0x9555('0x29')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x9555('0x2')]},'callbackextension':{'type':Sequelize[_0x9555('0x2')]},'timert1':{'type':Sequelize[_0x9555('0x22')](0xb)},'timerb':{'type':Sequelize[_0x9555('0x22')](0xb)},'qualifyfreq':{'type':Sequelize[_0x9555('0x22')](0xb)},'contactpermit':{'type':Sequelize[_0x9555('0x2')]},'contactdeny':{'type':Sequelize['STRING']},'contactacl':{'type':Sequelize['STRING']},'unsolicited_mailbox':{'type':Sequelize[_0x9555('0x2')]},'use_q850_reason':{'type':Sequelize['STRING']},'maxforwards':{'type':Sequelize['INTEGER'](0xb)},'encryption':{'type':Sequelize[_0x9555('0xf')]('yes','no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x9555('0xf')](_0x9555('0x15'),'no')},'force_avp':{'type':Sequelize['ENUM'](_0x9555('0x15'),'no')},'icesupport':{'type':Sequelize[_0x9555('0xf')](_0x9555('0x15'),'no')},'dtlsenable':{'type':Sequelize[_0x9555('0xf')](_0x9555('0x15'),'no')},'dtlsverify':{'type':Sequelize[_0x9555('0xf')](_0x9555('0x15'),'no',_0x9555('0x2a'),_0x9555('0x2b'))},'dtlsrekey':{'type':Sequelize[_0x9555('0x22')](0xb)},'dtlscertfile':{'type':Sequelize['STRING']},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize[_0x9555('0x2')]},'dtlscafile':{'type':Sequelize[_0x9555('0x2')]},'dtlscapath':{'type':Sequelize[_0x9555('0x2')]},'dtlssetup':{'type':Sequelize[_0x9555('0xf')](_0x9555('0x2c'),_0x9555('0x2d'),_0x9555('0x2e')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING']},'usereqphone':{'type':Sequelize[_0x9555('0xf')](_0x9555('0x15'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x9555('0x2')]},'recordofffeature':{'type':Sequelize[_0x9555('0x2')]},'call_limit':{'type':Sequelize[_0x9555('0x22')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x9555('0xf')]('yes','no')},'subscribemwi':{'type':Sequelize['ENUM'](_0x9555('0x15'),'no')},'vmexten':{'type':Sequelize[_0x9555('0x2')]},'mohinterpret':{'type':Sequelize['STRING']},'mohsuggest':{'type':Sequelize[_0x9555('0x2')]},'parkinglot':{'type':Sequelize[_0x9555('0x2')]},'description':{'type':Sequelize[_0x9555('0x2')]},'host':{'type':Sequelize[_0x9555('0x2')],'defaultValue':'dynamic'},'canreinvite':{'type':Sequelize[_0x9555('0xf')](_0x9555('0x15'),'no',_0x9555('0x16'),_0x9555('0x2f'),_0x9555('0x30')),'defaultValue':'no'},'registry':{'type':Sequelize[_0x9555('0x2')]},'otherFields':{'type':Sequelize[_0x9555('0x2')]},'active':{'type':Sequelize[_0x9555('0x31')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x9555('0x2')],'defaultValue':'no'}};
\ No newline at end of file
index 0ad79ee..e276bab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x425d=['readFileSync','root','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','UserProfileSection','userProfileId','/etc/asterisk/sip_xcally_trunks.conf','destroy','eml-format','zip-dir','fast-json-patch','request-promise','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','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','info','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','error','code','message','Trunk,\x20%s,\x20%s','result','catch','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','get','Trunks','UserProfileResource','stack','name','send','index','map','Trunk','rawAttributes','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','where','pick','filters','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','show','params','clone','find','omit','updatedAt','body','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','server/files/templates/trunk.ejs','utf8'];(function(_0x159d8a,_0x8f0119){var _0x1073b3=function(_0x396b37){while(--_0x396b37){_0x159d8a['push'](_0x159d8a['shift']());}};_0x1073b3(++_0x8f0119);}(_0x425d,0x1e0));var _0xd425=function(_0x61c7ca,_0x7d345e){_0x61c7ca=_0x61c7ca-0x0;var _0xc75428=_0x425d[_0x61c7ca];return _0xc75428;};'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'];var jayson=require(_0xd425('0x1d'));var client=jayson[_0xd425('0x1e')][_0xd425('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x18eafb,_0x51263f,_0x27318c,_0x17a498){return new BPromise(function(_0x336dc3,_0x5d3d60){var _0x309263=_0x17a498||client;return _0x309263[_0xd425('0x20')](_0x18eafb,_0x27318c)[_0xd425('0x21')](function(_0x41f34d){logger[_0xd425('0x22')]('Trunk,\x20%s,\x20%s',_0x51263f,_0xd425('0x23'));logger[_0xd425('0x24')](_0xd425('0x25'),_0x51263f,_0xd425('0x23'),JSON['stringify'](_0x41f34d));if(_0x41f34d[_0xd425('0x26')]){if(_0x41f34d[_0xd425('0x26')][_0xd425('0x27')]===0x1f4){logger[_0xd425('0x26')]('Trunk,\x20%s,\x20%s',_0x51263f,_0x41f34d['error']['message']);return _0x5d3d60(_0x41f34d['error'][_0xd425('0x28')]);}logger[_0xd425('0x26')](_0xd425('0x29'),_0x51263f,_0x41f34d['error'][_0xd425('0x28')]);return _0x336dc3(_0x41f34d[_0xd425('0x26')]['message']);}else{logger[_0xd425('0x22')](_0xd425('0x29'),_0x51263f,_0xd425('0x23'));_0x336dc3(_0x41f34d[_0xd425('0x2a')][_0xd425('0x28')]);}})[_0xd425('0x2b')](function(_0x2480a0){logger[_0xd425('0x26')](_0xd425('0x29'),_0x51263f,_0x2480a0);_0x5d3d60(_0x2480a0);});});}function respondWithStatusCode(_0x2b030b,_0x151ad9){_0x151ad9=_0x151ad9||0xcc;return function(_0x40e84b){if(_0x40e84b){return _0x2b030b['sendStatus'](_0x151ad9);}return _0x2b030b[_0xd425('0x2c')](_0x151ad9)[_0xd425('0x2d')]();};}function respondWithResult(_0x398985,_0x1908a5){_0x1908a5=_0x1908a5||0xc8;return function(_0x2afcdb){if(_0x2afcdb){return _0x398985[_0xd425('0x2c')](_0x1908a5)[_0xd425('0x2e')](_0x2afcdb);}};}function respondWithFilteredResult(_0x577e4b,_0x12f951){return function(_0x177de2){if(_0x177de2){var _0x1d8861=typeof _0x12f951['offset']===_0xd425('0x2f')&&typeof _0x12f951[_0xd425('0x30')]===_0xd425('0x2f');var _0x999fb9=_0x177de2[_0xd425('0x31')];var _0x185d7e=_0x1d8861?0x0:_0x12f951[_0xd425('0x32')];var _0x37b63c=_0x1d8861?_0x177de2[_0xd425('0x31')]:_0x12f951[_0xd425('0x32')]+_0x12f951['limit'];var _0x471e3e;if(_0x37b63c>=_0x999fb9){_0x37b63c=_0x999fb9;_0x471e3e=0xc8;}else{_0x471e3e=0xce;}_0x577e4b[_0xd425('0x2c')](_0x471e3e);return _0x577e4b[_0xd425('0x33')](_0xd425('0x34'),_0x185d7e+'-'+_0x37b63c+'/'+_0x999fb9)[_0xd425('0x2e')](_0x177de2);}return null;};}function patchUpdates(_0x1abf33){return function(_0x47405f){try{jsonpatch[_0xd425('0x35')](_0x47405f,_0x1abf33,!![]);}catch(_0x3ec51b){return BPromise[_0xd425('0x36')](_0x3ec51b);}return _0x47405f[_0xd425('0x37')]();};}function saveUpdates(_0x5f3dab,_0x316493){return function(_0x2a2a9b){if(_0x2a2a9b){return _0x2a2a9b[_0xd425('0x38')](_0x5f3dab)[_0xd425('0x21')](function(_0x28870f){return _0x28870f;});}return null;};}function removeEntity(_0x4eddbc,_0x4aa168){return function(_0x3badcc){if(_0x3badcc){return _0x3badcc['destroy']()['then'](function(){var _0x51669d=_0x3badcc[_0xd425('0x39')]({'plain':!![]});var _0xfb0c8=_0xd425('0x3a');return db[_0xd425('0x3b')]['destroy']({'where':{'type':_0xfb0c8,'resourceId':_0x51669d['id']}})[_0xd425('0x21')](function(){return _0x3badcc;});})[_0xd425('0x21')](function(){_0x4eddbc[_0xd425('0x2c')](0xcc)[_0xd425('0x2d')]();});}};}function handleEntityNotFound(_0x27b9e2,_0x1e12f2){return function(_0x35bbec){if(!_0x35bbec){_0x27b9e2['sendStatus'](0x194);}return _0x35bbec;};}function handleError(_0x363fb0,_0x59b3d3){_0x59b3d3=_0x59b3d3||0x1f4;return function(_0x22df81){logger[_0xd425('0x26')](_0x22df81[_0xd425('0x3c')]);if(_0x22df81['name']){delete _0x22df81[_0xd425('0x3d')];}_0x363fb0[_0xd425('0x2c')](_0x59b3d3)[_0xd425('0x3e')](_0x22df81);};}exports[_0xd425('0x3f')]=function(_0x58f36d,_0x1d38fa){var _0x3cf540={},_0x59e326={},_0x5d310e={'count':0x0,'rows':[]};var _0x48fc85=_[_0xd425('0x40')](db[_0xd425('0x41')][_0xd425('0x42')],function(_0x588688){return{'name':_0x588688['fieldName'],'type':_0x588688['type'][_0xd425('0x43')]};});_0x59e326[_0xd425('0x44')]=_[_0xd425('0x40')](_0x48fc85,_0xd425('0x3d'));_0x59e326[_0xd425('0x45')]=_[_0xd425('0x46')](_0x58f36d[_0xd425('0x45')]);_0x59e326['filters']=_[_0xd425('0x47')](_0x59e326[_0xd425('0x44')],_0x59e326[_0xd425('0x45')]);_0x3cf540['attributes']=_[_0xd425('0x47')](_0x59e326[_0xd425('0x44')],qs[_0xd425('0x48')](_0x58f36d['query'][_0xd425('0x48')]));_0x3cf540[_0xd425('0x49')]=_0x3cf540[_0xd425('0x49')][_0xd425('0x4a')]?_0x3cf540['attributes']:_0x59e326[_0xd425('0x44')];if(!_0x58f36d[_0xd425('0x45')][_0xd425('0x4b')](_0xd425('0x4c'))){_0x3cf540[_0xd425('0x30')]=qs[_0xd425('0x30')](_0x58f36d[_0xd425('0x45')]['limit']);_0x3cf540[_0xd425('0x32')]=qs[_0xd425('0x32')](_0x58f36d['query'][_0xd425('0x32')]);}_0x3cf540['order']=qs['sort'](_0x58f36d[_0xd425('0x45')]['sort']);_0x3cf540[_0xd425('0x4d')]=qs['filters'](_[_0xd425('0x4e')](_0x58f36d[_0xd425('0x45')],_0x59e326[_0xd425('0x4f')]),_0x48fc85);if(_0x58f36d[_0xd425('0x45')][_0xd425('0x50')]){_0x3cf540['where']=_[_0xd425('0x51')](_0x3cf540['where'],{'$or':_[_0xd425('0x40')](_0x48fc85,function(_0x55a15d){if(_0x55a15d[_0xd425('0x52')]!==_0xd425('0x53')){var _0x3fd2ce={};_0x3fd2ce[_0x55a15d[_0xd425('0x3d')]]={'$like':'%'+_0x58f36d[_0xd425('0x45')]['filter']+'%'};return _0x3fd2ce;}})});}_0x3cf540=_[_0xd425('0x51')]({},_0x3cf540,_0x58f36d[_0xd425('0x54')]);var _0x35e77b={'where':_0x3cf540[_0xd425('0x4d')]};return db[_0xd425('0x41')]['count'](_0x35e77b)[_0xd425('0x21')](function(_0x177704){_0x5d310e[_0xd425('0x31')]=_0x177704;if(_0x58f36d[_0xd425('0x45')][_0xd425('0x55')]){_0x3cf540[_0xd425('0x56')]=[{'all':!![]}];}return db['Trunk'][_0xd425('0x57')](_0x3cf540);})[_0xd425('0x21')](function(_0x5bfac6){_0x5d310e[_0xd425('0x58')]=_0x5bfac6;return _0x5d310e;})[_0xd425('0x21')](respondWithFilteredResult(_0x1d38fa,_0x3cf540))[_0xd425('0x2b')](handleError(_0x1d38fa,null));};exports[_0xd425('0x59')]=function(_0x5c0219,_0x54f1d){var _0x2b8882={'raw':![],'where':{'id':_0x5c0219[_0xd425('0x5a')]['id']}},_0x4552cd={};_0x4552cd[_0xd425('0x44')]=_['keys'](db['Trunk'][_0xd425('0x42')]);_0x4552cd['query']=_[_0xd425('0x46')](_0x5c0219[_0xd425('0x45')]);_0x4552cd['filters']=_[_0xd425('0x47')](_0x4552cd['model'],_0x4552cd['query']);_0x2b8882[_0xd425('0x49')]=_[_0xd425('0x47')](_0x4552cd[_0xd425('0x44')],qs[_0xd425('0x48')](_0x5c0219[_0xd425('0x45')][_0xd425('0x48')]));_0x2b8882[_0xd425('0x49')]=_0x2b8882[_0xd425('0x49')]['length']?_0x2b8882[_0xd425('0x49')]:_0x4552cd[_0xd425('0x44')];if(_0x5c0219[_0xd425('0x45')][_0xd425('0x55')]){_0x2b8882[_0xd425('0x56')]=[{'all':!![]}];}_0x2b8882=_[_0xd425('0x51')]({},_0x2b8882,_0x5c0219[_0xd425('0x54')]);return db[_0xd425('0x41')]['find'](_0x2b8882)['then'](handleEntityNotFound(_0x54f1d,null))['then'](respondWithResult(_0x54f1d,null))[_0xd425('0x2b')](handleError(_0x54f1d,null));};exports[_0xd425('0x5b')]=function(_0x3dec61,_0x3c6b49){var _0x59c286={'where':{'id':_0x3dec61['params']['id']}},_0x4fedc0={};_0x4fedc0['model']=_[_0xd425('0x46')](db[_0xd425('0x41')]['rawAttributes']);_0x59c286[_0xd425('0x49')]=_[_0xd425('0x47')](_0x4fedc0[_0xd425('0x44')],qs['fields'](_0x3dec61['query'][_0xd425('0x48')]));_0x59c286['attributes']=_0x59c286['attributes']['length']?_0x59c286[_0xd425('0x49')]:_0x4fedc0[_0xd425('0x44')];if(_0x3dec61[_0xd425('0x45')]['includeAll']){_0x59c286[_0xd425('0x56')]=[{'all':!![]}];}_0x59c286=_['merge']({},_0x59c286,_0x3dec61[_0xd425('0x54')]);return db[_0xd425('0x41')][_0xd425('0x5c')](_0x59c286)[_0xd425('0x21')](handleEntityNotFound(_0x3c6b49,null))[_0xd425('0x21')](function(_0xd261a){if(_0xd261a){var _0xa21f7c=_0xd261a[_0xd425('0x39')]({'plain':!![]});_0xa21f7c=qs[_0xd425('0x5d')](_0xa21f7c,['id','createdAt',_0xd425('0x5e')]);_0x3dec61[_0xd425('0x5f')]=_[_0xd425('0x5d')](_0x3dec61[_0xd425('0x5f')],['id','createdAt','updatedAt']);return db[_0xd425('0x41')][_0xd425('0x60')](_[_0xd425('0x51')](_0xa21f7c,_0x3dec61[_0xd425('0x5f')]),{'include':_0x3dec61[_0xd425('0x45')][_0xd425('0x55')]?[{'all':!![]}]:undefined})[_0xd425('0x21')](function(_0x44782a){var _0x1fcde4=_0x3dec61[_0xd425('0x61')][_0xd425('0x39')]({'plain':!![]});if(!_0x1fcde4)throw new Error(_0xd425('0x62'));if(_0x1fcde4[_0xd425('0x63')]===_0xd425('0x61')){var _0x5e72db=_0x44782a[_0xd425('0x39')]({'plain':!![]});var _0x343cc1=_0xd425('0x3a');return db['UserProfileSection']['find']({'where':{'name':_0x343cc1,'userProfileId':_0x1fcde4['userProfileId']},'raw':!![]})[_0xd425('0x21')](function(_0x34d065){if(_0x34d065&&_0x34d065[_0xd425('0x64')]===0x0){return db['UserProfileResource'][_0xd425('0x60')]({'name':_0x5e72db['name'],'resourceId':_0x5e72db['id'],'type':_0x34d065[_0xd425('0x3d')],'sectionId':_0x34d065['id']},{})[_0xd425('0x21')](function(){return _0x44782a;});}else{return _0x44782a;}})[_0xd425('0x2b')](function(_0x5113fc){logger[_0xd425('0x26')](_0xd425('0x65'),_0x5113fc);throw _0x5113fc;});}return _0x44782a;});}})[_0xd425('0x21')](respondWithResult(_0x3c6b49,0xc9))[_0xd425('0x2b')](handleError(_0x3c6b49,null));};exports[_0xd425('0x60')]=function(_0x43b1a9,_0x38a762,_0x44db7f){var _0xcb1a64;return db[_0xd425('0x41')][_0xd425('0x60')](_0x43b1a9[_0xd425('0x5f')],{'raw':!![]})[_0xd425('0x21')](function(_0x285d54){_0xcb1a64=_0x285d54;return db[_0xd425('0x41')][_0xd425('0x57')]({'raw':!![]});})[_0xd425('0x21')](function(_0x25cae6){var _0x541218=fs['readFileSync'](path[_0xd425('0x66')](config['root'],_0xd425('0x67')),_0xd425('0x68'));var _0xb407bb=fs[_0xd425('0x69')](path['join'](config[_0xd425('0x6a')],_0xd425('0x6b')),_0xd425('0x68'));var _0x689332=ejs[_0xd425('0x6c')](_0x541218,{'trunks':_0x25cae6||[]});fs[_0xd425('0x6d')]('/etc/asterisk/sip_xcally_trunks.conf',_0x689332);if(_0xcb1a64['registry']){var _0x3ccffe=ejs[_0xd425('0x6c')](_0xb407bb,{'trunks':_0x25cae6||[]});fs['writeFileSync'](_0xd425('0x6e'),_0x3ccffe);}})['then'](function(){return respondWithRpcPromise(_0xd425('0x6f'),_0xd425('0x60'),{'module':_0xd425('0x70')});})[_0xd425('0x21')](function(){var _0x376134=_0x43b1a9[_0xd425('0x61')][_0xd425('0x39')]({'plain':!![]});if(!_0x376134)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x376134[_0xd425('0x63')]===_0xd425('0x61')){var _0x24af3=_0xcb1a64[_0xd425('0x39')]({'plain':!![]});return db[_0xd425('0x71')]['find']({'where':{'name':_0xd425('0x3a'),'userProfileId':_0x376134[_0xd425('0x72')]},'raw':!![]})['then'](function(_0x2bb36f){if(_0x2bb36f&&_0x2bb36f[_0xd425('0x64')]===0x0){return db['UserProfileResource'][_0xd425('0x60')]({'name':_0x24af3[_0xd425('0x3d')],'resourceId':_0x24af3['id'],'type':_0x2bb36f[_0xd425('0x3d')],'sectionId':_0x2bb36f['id']},{})[_0xd425('0x21')](function(){return _0xcb1a64;});}else{return _0xcb1a64;}})[_0xd425('0x2b')](function(_0x572f23){logger[_0xd425('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x572f23);throw _0x572f23;});}return _0xcb1a64;})[_0xd425('0x21')](respondWithResult(_0x38a762,0xc9))[_0xd425('0x2b')](handleError(_0x38a762,null));};exports['update']=function(_0x2bf8e6,_0xcf7b51,_0x66d87b){var _0x1fc64d;return db['Trunk']['find']({'where':{'id':_0x2bf8e6[_0xd425('0x5a')]['id']}})[_0xd425('0x21')](handleEntityNotFound(_0xcf7b51,null))[_0xd425('0x21')](saveUpdates(_0x2bf8e6['body'],null))[_0xd425('0x21')](function(_0xb1479e){if(_0xb1479e){_0x1fc64d=_0xb1479e;return db['Trunk'][_0xd425('0x57')]({'raw':!![]});}})['then'](function(_0x998ad1){if(_0x998ad1){var _0x46346c=fs[_0xd425('0x69')](path[_0xd425('0x66')](config['root'],'server/files/templates/trunk.ejs'),_0xd425('0x68'));var _0x413a65=fs['readFileSync'](path[_0xd425('0x66')](config[_0xd425('0x6a')],'server/files/templates/registry.ejs'),_0xd425('0x68'));var _0x369f8b=ejs[_0xd425('0x6c')](_0x46346c,{'trunks':_0x998ad1||[]});fs[_0xd425('0x6d')](_0xd425('0x73'),_0x369f8b);var _0xf251e6=ejs[_0xd425('0x6c')](_0x413a65,{'trunks':_0x998ad1||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_registers.conf',_0xf251e6);return respondWithRpcPromise(_0xd425('0x6f'),'update',{'module':_0xd425('0x70')});}return null;})[_0xd425('0x21')](function(_0x58cad5){if(_0x58cad5){return _0x1fc64d;}})[_0xd425('0x21')](respondWithResult(_0xcf7b51,null))[_0xd425('0x2b')](handleError(_0xcf7b51,null));};exports['destroy']=function(_0x592c40,_0x750685,_0x242ed8){var _0x16eac6;return db[_0xd425('0x41')][_0xd425('0x5c')]({'where':{'id':_0x592c40[_0xd425('0x5a')]['id']}})[_0xd425('0x21')](handleEntityNotFound(_0x750685,null))[_0xd425('0x21')](removeEntity(_0x750685,null))['then'](function(){return db[_0xd425('0x41')][_0xd425('0x57')]({'raw':!![]});})['then'](function(_0x2bbcf3){var _0x1d386c=fs[_0xd425('0x69')](path[_0xd425('0x66')](config[_0xd425('0x6a')],_0xd425('0x67')),_0xd425('0x68'));var _0x2c3995=fs[_0xd425('0x69')](path[_0xd425('0x66')](config[_0xd425('0x6a')],'server/files/templates/registry.ejs'),_0xd425('0x68'));var _0x498e81=ejs['render'](_0x1d386c,{'trunks':_0x2bbcf3});var _0x2c8d63=ejs['render'](_0x2c3995,{'trunks':_0x2bbcf3});fs[_0xd425('0x6d')](_0xd425('0x73'),_0x498e81);fs[_0xd425('0x6d')](_0xd425('0x6e'),_0x2c8d63);return respondWithRpcPromise(_0xd425('0x6f'),_0xd425('0x74'),{'module':_0xd425('0x70')});})['catch'](handleError(_0x750685,null));};
\ No newline at end of file
+var _0x008c=['update','destroy','get','Trunks','UserProfileResource','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','Trunk','findAll','show','params','includeAll','include','options','clone','find','omit','createdAt','updatedAt','body','create','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','root','utf8','server/files/templates/registry.ejs','render','/etc/asterisk/sip_xcally_trunks.conf','registry','writeFileSync','Reload','chan_sip.so','server/files/templates/trunk.ejs','join','/etc/asterisk/sip_xcally_registers.conf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','error','Trunk,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','count','offset','limit','set','apply','reject','save'];(function(_0x1f20d6,_0x1b4431){var _0x2a7f7f=function(_0x3d4642){while(--_0x3d4642){_0x1f20d6['push'](_0x1f20d6['shift']());}};_0x2a7f7f(++_0x1b4431);}(_0x008c,0x188));var _0xc008=function(_0x3d6eb1,_0x1f99b1){_0x3d6eb1=_0x3d6eb1-0x0;var _0x4e5356=_0x008c[_0x3d6eb1];return _0x4e5356;};'use strict';var emlformat=require(_0xc008('0x0'));var rimraf=require(_0xc008('0x1'));var zipdir=require(_0xc008('0x2'));var jsonpatch=require(_0xc008('0x3'));var rp=require(_0xc008('0x4'));var moment=require('moment');var BPromise=require(_0xc008('0x5'));var Mustache=require(_0xc008('0x6'));var util=require(_0xc008('0x7'));var path=require(_0xc008('0x8'));var sox=require(_0xc008('0x9'));var csv=require(_0xc008('0xa'));var ejs=require(_0xc008('0xb'));var fs=require('fs');var fs_extra=require(_0xc008('0xc'));var _=require(_0xc008('0xd'));var squel=require('squel');var crypto=require(_0xc008('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xc008('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc008('0x10'));var Redis=require(_0xc008('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc008('0x12'));var logger=require(_0xc008('0x13'))('api');var utils=require(_0xc008('0x14'));var config=require(_0xc008('0x15'));var licenseUtil=require(_0xc008('0x16'));var db=require(_0xc008('0x17'))['db'];var jayson=require(_0xc008('0x18'));var client=jayson[_0xc008('0x19')][_0xc008('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x593f7a,_0x560e28,_0x33f44c,_0x50c1ab){return new BPromise(function(_0x25e13f,_0x4584e1){var _0x2073ef=_0x50c1ab||client;return _0x2073ef[_0xc008('0x1b')](_0x593f7a,_0x33f44c)[_0xc008('0x1c')](function(_0x5ee00b){logger['info']('Trunk,\x20%s,\x20%s',_0x560e28,_0xc008('0x1d'));logger[_0xc008('0x1e')](_0xc008('0x1f'),_0x560e28,_0xc008('0x1d'),JSON['stringify'](_0x5ee00b));if(_0x5ee00b['error']){if(_0x5ee00b['error']['code']===0x1f4){logger[_0xc008('0x20')](_0xc008('0x21'),_0x560e28,_0x5ee00b['error'][_0xc008('0x22')]);return _0x4584e1(_0x5ee00b['error']['message']);}logger['error']('Trunk,\x20%s,\x20%s',_0x560e28,_0x5ee00b[_0xc008('0x20')]['message']);return _0x25e13f(_0x5ee00b['error']['message']);}else{logger['info']('Trunk,\x20%s,\x20%s',_0x560e28,_0xc008('0x1d'));_0x25e13f(_0x5ee00b[_0xc008('0x23')][_0xc008('0x22')]);}})[_0xc008('0x24')](function(_0x11cc75){logger[_0xc008('0x20')]('Trunk,\x20%s,\x20%s',_0x560e28,_0x11cc75);_0x4584e1(_0x11cc75);});});}function respondWithStatusCode(_0x459fd9,_0x5c85f2){_0x5c85f2=_0x5c85f2||0xcc;return function(_0x58a6ea){if(_0x58a6ea){return _0x459fd9[_0xc008('0x25')](_0x5c85f2);}return _0x459fd9[_0xc008('0x26')](_0x5c85f2)[_0xc008('0x27')]();};}function respondWithResult(_0x3cb28c,_0x5410f5){_0x5410f5=_0x5410f5||0xc8;return function(_0x48582b){if(_0x48582b){return _0x3cb28c['status'](_0x5410f5)[_0xc008('0x28')](_0x48582b);}};}function respondWithFilteredResult(_0x15dade,_0x92c582){return function(_0x2e31c2){if(_0x2e31c2){var _0x5bebd9=typeof _0x92c582['offset']==='undefined'&&typeof _0x92c582['limit']==='undefined';var _0x3865c0=_0x2e31c2[_0xc008('0x29')];var _0x25eae4=_0x5bebd9?0x0:_0x92c582['offset'];var _0x24c14c=_0x5bebd9?_0x2e31c2[_0xc008('0x29')]:_0x92c582[_0xc008('0x2a')]+_0x92c582[_0xc008('0x2b')];var _0x4c5dec;if(_0x24c14c>=_0x3865c0){_0x24c14c=_0x3865c0;_0x4c5dec=0xc8;}else{_0x4c5dec=0xce;}_0x15dade[_0xc008('0x26')](_0x4c5dec);return _0x15dade[_0xc008('0x2c')]('Content-Range',_0x25eae4+'-'+_0x24c14c+'/'+_0x3865c0)['json'](_0x2e31c2);}return null;};}function patchUpdates(_0x539766){return function(_0x1032b2){try{jsonpatch[_0xc008('0x2d')](_0x1032b2,_0x539766,!![]);}catch(_0xf831f2){return BPromise[_0xc008('0x2e')](_0xf831f2);}return _0x1032b2[_0xc008('0x2f')]();};}function saveUpdates(_0xceebc3,_0x294f97){return function(_0x22d8e8){if(_0x22d8e8){return _0x22d8e8[_0xc008('0x30')](_0xceebc3)[_0xc008('0x1c')](function(_0x2f4b6b){return _0x2f4b6b;});}return null;};}function removeEntity(_0x1ac7c8,_0x596ee8){return function(_0x334a09){if(_0x334a09){return _0x334a09[_0xc008('0x31')]()['then'](function(){var _0xaf4b84=_0x334a09[_0xc008('0x32')]({'plain':!![]});var _0x383be7=_0xc008('0x33');return db[_0xc008('0x34')][_0xc008('0x31')]({'where':{'type':_0x383be7,'resourceId':_0xaf4b84['id']}})[_0xc008('0x1c')](function(){return _0x334a09;});})[_0xc008('0x1c')](function(){_0x1ac7c8[_0xc008('0x26')](0xcc)['end']();});}};}function handleEntityNotFound(_0x415b87,_0x389a40){return function(_0x459df4){if(!_0x459df4){_0x415b87[_0xc008('0x25')](0x194);}return _0x459df4;};}function handleError(_0x40002f,_0x315562){_0x315562=_0x315562||0x1f4;return function(_0x1667a0){logger['error'](_0x1667a0[_0xc008('0x35')]);if(_0x1667a0[_0xc008('0x36')]){delete _0x1667a0['name'];}_0x40002f[_0xc008('0x26')](_0x315562)[_0xc008('0x37')](_0x1667a0);};}exports['index']=function(_0x263473,_0x2e4ae1){var _0x280e9b={},_0x55ff48={},_0x53b353={'count':0x0,'rows':[]};var _0x478810=_[_0xc008('0x38')](db['Trunk'][_0xc008('0x39')],function(_0x3884dd){return{'name':_0x3884dd[_0xc008('0x3a')],'type':_0x3884dd[_0xc008('0x3b')][_0xc008('0x3c')]};});_0x55ff48[_0xc008('0x3d')]=_[_0xc008('0x38')](_0x478810,_0xc008('0x36'));_0x55ff48[_0xc008('0x3e')]=_[_0xc008('0x3f')](_0x263473[_0xc008('0x3e')]);_0x55ff48[_0xc008('0x40')]=_[_0xc008('0x41')](_0x55ff48[_0xc008('0x3d')],_0x55ff48['query']);_0x280e9b[_0xc008('0x42')]=_[_0xc008('0x41')](_0x55ff48[_0xc008('0x3d')],qs[_0xc008('0x43')](_0x263473['query'][_0xc008('0x43')]));_0x280e9b[_0xc008('0x42')]=_0x280e9b[_0xc008('0x42')][_0xc008('0x44')]?_0x280e9b[_0xc008('0x42')]:_0x55ff48['model'];if(!_0x263473[_0xc008('0x3e')][_0xc008('0x45')](_0xc008('0x46'))){_0x280e9b[_0xc008('0x2b')]=qs[_0xc008('0x2b')](_0x263473['query'][_0xc008('0x2b')]);_0x280e9b[_0xc008('0x2a')]=qs[_0xc008('0x2a')](_0x263473[_0xc008('0x3e')]['offset']);}_0x280e9b[_0xc008('0x47')]=qs[_0xc008('0x48')](_0x263473[_0xc008('0x3e')]['sort']);_0x280e9b[_0xc008('0x49')]=qs['filters'](_[_0xc008('0x4a')](_0x263473['query'],_0x55ff48[_0xc008('0x40')]),_0x478810);if(_0x263473[_0xc008('0x3e')]['filter']){_0x280e9b[_0xc008('0x49')]=_[_0xc008('0x4b')](_0x280e9b[_0xc008('0x49')],{'$or':_['map'](_0x478810,function(_0x1cec64){if(_0x1cec64[_0xc008('0x3b')]!==_0xc008('0x4c')){var _0x44fc5d={};_0x44fc5d[_0x1cec64[_0xc008('0x36')]]={'$like':'%'+_0x263473[_0xc008('0x3e')]['filter']+'%'};return _0x44fc5d;}})});}_0x280e9b=_['merge']({},_0x280e9b,_0x263473['options']);var _0x4552ed={'where':_0x280e9b[_0xc008('0x49')]};return db[_0xc008('0x4d')][_0xc008('0x29')](_0x4552ed)[_0xc008('0x1c')](function(_0x24f6a4){_0x53b353[_0xc008('0x29')]=_0x24f6a4;if(_0x263473[_0xc008('0x3e')]['includeAll']){_0x280e9b['include']=[{'all':!![]}];}return db['Trunk'][_0xc008('0x4e')](_0x280e9b);})[_0xc008('0x1c')](function(_0x158eae){_0x53b353['rows']=_0x158eae;return _0x53b353;})[_0xc008('0x1c')](respondWithFilteredResult(_0x2e4ae1,_0x280e9b))[_0xc008('0x24')](handleError(_0x2e4ae1,null));};exports[_0xc008('0x4f')]=function(_0x1c2c50,_0x4981b4){var _0x56e4ac={'raw':![],'where':{'id':_0x1c2c50[_0xc008('0x50')]['id']}},_0x17ec90={};_0x17ec90[_0xc008('0x3d')]=_[_0xc008('0x3f')](db['Trunk']['rawAttributes']);_0x17ec90[_0xc008('0x3e')]=_['keys'](_0x1c2c50[_0xc008('0x3e')]);_0x17ec90[_0xc008('0x40')]=_[_0xc008('0x41')](_0x17ec90['model'],_0x17ec90[_0xc008('0x3e')]);_0x56e4ac[_0xc008('0x42')]=_[_0xc008('0x41')](_0x17ec90[_0xc008('0x3d')],qs[_0xc008('0x43')](_0x1c2c50['query'][_0xc008('0x43')]));_0x56e4ac[_0xc008('0x42')]=_0x56e4ac['attributes'][_0xc008('0x44')]?_0x56e4ac[_0xc008('0x42')]:_0x17ec90['model'];if(_0x1c2c50['query'][_0xc008('0x51')]){_0x56e4ac[_0xc008('0x52')]=[{'all':!![]}];}_0x56e4ac=_[_0xc008('0x4b')]({},_0x56e4ac,_0x1c2c50[_0xc008('0x53')]);return db[_0xc008('0x4d')]['find'](_0x56e4ac)['then'](handleEntityNotFound(_0x4981b4,null))[_0xc008('0x1c')](respondWithResult(_0x4981b4,null))['catch'](handleError(_0x4981b4,null));};exports[_0xc008('0x54')]=function(_0x25d351,_0xf94fcb){var _0x2f1105={'where':{'id':_0x25d351[_0xc008('0x50')]['id']}},_0x44f42d={};_0x44f42d['model']=_[_0xc008('0x3f')](db[_0xc008('0x4d')][_0xc008('0x39')]);_0x2f1105[_0xc008('0x42')]=_[_0xc008('0x41')](_0x44f42d['model'],qs[_0xc008('0x43')](_0x25d351['query']['fields']));_0x2f1105['attributes']=_0x2f1105[_0xc008('0x42')][_0xc008('0x44')]?_0x2f1105[_0xc008('0x42')]:_0x44f42d['model'];if(_0x25d351[_0xc008('0x3e')][_0xc008('0x51')]){_0x2f1105[_0xc008('0x52')]=[{'all':!![]}];}_0x2f1105=_['merge']({},_0x2f1105,_0x25d351[_0xc008('0x53')]);return db[_0xc008('0x4d')][_0xc008('0x55')](_0x2f1105)[_0xc008('0x1c')](handleEntityNotFound(_0xf94fcb,null))['then'](function(_0x4022dd){if(_0x4022dd){var _0x4eaa6d=_0x4022dd[_0xc008('0x32')]({'plain':!![]});_0x4eaa6d=qs[_0xc008('0x56')](_0x4eaa6d,['id',_0xc008('0x57'),_0xc008('0x58')]);_0x25d351[_0xc008('0x59')]=_[_0xc008('0x56')](_0x25d351['body'],['id',_0xc008('0x57'),'updatedAt']);return db['Trunk'][_0xc008('0x5a')](_[_0xc008('0x4b')](_0x4eaa6d,_0x25d351['body']),{'include':_0x25d351[_0xc008('0x3e')][_0xc008('0x51')]?[{'all':!![]}]:undefined})[_0xc008('0x1c')](function(_0x4517c0){var _0x21ee6d=_0x25d351[_0xc008('0x5b')][_0xc008('0x32')]({'plain':!![]});if(!_0x21ee6d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x21ee6d[_0xc008('0x5c')]===_0xc008('0x5b')){var _0x3bfb15=_0x4517c0[_0xc008('0x32')]({'plain':!![]});var _0xb3ca0f=_0xc008('0x33');return db[_0xc008('0x5d')][_0xc008('0x55')]({'where':{'name':_0xb3ca0f,'userProfileId':_0x21ee6d[_0xc008('0x5e')]},'raw':!![]})[_0xc008('0x1c')](function(_0x1bef66){if(_0x1bef66&&_0x1bef66[_0xc008('0x5f')]===0x0){return db[_0xc008('0x34')][_0xc008('0x5a')]({'name':_0x3bfb15['name'],'resourceId':_0x3bfb15['id'],'type':_0x1bef66[_0xc008('0x36')],'sectionId':_0x1bef66['id']},{})[_0xc008('0x1c')](function(){return _0x4517c0;});}else{return _0x4517c0;}})[_0xc008('0x24')](function(_0x566dea){logger[_0xc008('0x20')](_0xc008('0x60'),_0x566dea);throw _0x566dea;});}return _0x4517c0;});}})['then'](respondWithResult(_0xf94fcb,0xc9))['catch'](handleError(_0xf94fcb,null));};exports[_0xc008('0x5a')]=function(_0x2a4c2b,_0x7bad14,_0x39083c){var _0x1a2ce7;return db[_0xc008('0x4d')][_0xc008('0x5a')](_0x2a4c2b[_0xc008('0x59')],{'raw':!![]})[_0xc008('0x1c')](function(_0x1b059b){_0x1a2ce7=_0x1b059b;return db[_0xc008('0x4d')]['findAll']({'raw':!![]});})[_0xc008('0x1c')](function(_0x25a52b){var _0xfdb5e3=fs[_0xc008('0x61')](path['join'](config[_0xc008('0x62')],'server/files/templates/trunk.ejs'),_0xc008('0x63'));var _0x46fa7b=fs[_0xc008('0x61')](path['join'](config[_0xc008('0x62')],_0xc008('0x64')),_0xc008('0x63'));var _0x553f5c=ejs[_0xc008('0x65')](_0xfdb5e3,{'trunks':_0x25a52b||[]});fs['writeFileSync'](_0xc008('0x66'),_0x553f5c);if(_0x1a2ce7[_0xc008('0x67')]){var _0x23012c=ejs[_0xc008('0x65')](_0x46fa7b,{'trunks':_0x25a52b||[]});fs[_0xc008('0x68')]('/etc/asterisk/sip_xcally_registers.conf',_0x23012c);}})[_0xc008('0x1c')](function(){return respondWithRpcPromise(_0xc008('0x69'),'create',{'module':_0xc008('0x6a')});})['then'](function(){var _0x278cbe=_0x2a4c2b['user'][_0xc008('0x32')]({'plain':!![]});if(!_0x278cbe)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x278cbe[_0xc008('0x5c')]===_0xc008('0x5b')){var _0x33d8e4=_0x1a2ce7[_0xc008('0x32')]({'plain':!![]});return db['UserProfileSection'][_0xc008('0x55')]({'where':{'name':_0xc008('0x33'),'userProfileId':_0x278cbe[_0xc008('0x5e')]},'raw':!![]})[_0xc008('0x1c')](function(_0x321500){if(_0x321500&&_0x321500[_0xc008('0x5f')]===0x0){return db[_0xc008('0x34')][_0xc008('0x5a')]({'name':_0x33d8e4['name'],'resourceId':_0x33d8e4['id'],'type':_0x321500[_0xc008('0x36')],'sectionId':_0x321500['id']},{})['then'](function(){return _0x1a2ce7;});}else{return _0x1a2ce7;}})['catch'](function(_0x4c84da){logger[_0xc008('0x20')](_0xc008('0x60'),_0x4c84da);throw _0x4c84da;});}return _0x1a2ce7;})[_0xc008('0x1c')](respondWithResult(_0x7bad14,0xc9))[_0xc008('0x24')](handleError(_0x7bad14,null));};exports[_0xc008('0x30')]=function(_0x2e9646,_0x23ef42,_0x519328){var _0x127bdf;return db['Trunk'][_0xc008('0x55')]({'where':{'id':_0x2e9646[_0xc008('0x50')]['id']}})[_0xc008('0x1c')](handleEntityNotFound(_0x23ef42,null))[_0xc008('0x1c')](saveUpdates(_0x2e9646[_0xc008('0x59')],null))[_0xc008('0x1c')](function(_0x23d4ff){if(_0x23d4ff){_0x127bdf=_0x23d4ff;return db[_0xc008('0x4d')][_0xc008('0x4e')]({'raw':!![]});}})[_0xc008('0x1c')](function(_0x334ed8){if(_0x334ed8){var _0x1dd9fe=fs['readFileSync'](path['join'](config[_0xc008('0x62')],_0xc008('0x6b')),_0xc008('0x63'));var _0x572d93=fs[_0xc008('0x61')](path[_0xc008('0x6c')](config['root'],'server/files/templates/registry.ejs'),'utf8');var _0x3fc44f=ejs[_0xc008('0x65')](_0x1dd9fe,{'trunks':_0x334ed8||[]});fs[_0xc008('0x68')](_0xc008('0x66'),_0x3fc44f);var _0x1101b8=ejs[_0xc008('0x65')](_0x572d93,{'trunks':_0x334ed8||[]});fs[_0xc008('0x68')](_0xc008('0x6d'),_0x1101b8);return respondWithRpcPromise(_0xc008('0x69'),_0xc008('0x30'),{'module':'chan_sip.so'});}return null;})['then'](function(_0xc644fe){if(_0xc644fe){return _0x127bdf;}})[_0xc008('0x1c')](respondWithResult(_0x23ef42,null))[_0xc008('0x24')](handleError(_0x23ef42,null));};exports[_0xc008('0x31')]=function(_0x2b94b2,_0x37fc2c,_0x4b434f){var _0x5794fe;return db[_0xc008('0x4d')][_0xc008('0x55')]({'where':{'id':_0x2b94b2[_0xc008('0x50')]['id']}})['then'](handleEntityNotFound(_0x37fc2c,null))['then'](removeEntity(_0x37fc2c,null))['then'](function(){return db['Trunk']['findAll']({'raw':!![]});})['then'](function(_0x276de2){var _0x52bf60=fs[_0xc008('0x61')](path['join'](config[_0xc008('0x62')],_0xc008('0x6b')),_0xc008('0x63'));var _0x5bc8b0=fs['readFileSync'](path[_0xc008('0x6c')](config['root'],_0xc008('0x64')),_0xc008('0x63'));var _0x544519=ejs[_0xc008('0x65')](_0x52bf60,{'trunks':_0x276de2});var _0x4db90b=ejs['render'](_0x5bc8b0,{'trunks':_0x276de2});fs[_0xc008('0x68')](_0xc008('0x66'),_0x544519);fs['writeFileSync'](_0xc008('0x6d'),_0x4db90b);return respondWithRpcPromise(_0xc008('0x69'),_0xc008('0x31'),{'module':'chan_sip.so'});})[_0xc008('0x24')](handleError(_0x37fc2c,null));};
\ No newline at end of file
index 23a8316..e74072b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9992=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./trunk.attributes','exports','define','Trunk','tools_trunks','lodash','util'];(function(_0x7dbd65,_0x18da49){var _0x33d551=function(_0x7ce789){while(--_0x7ce789){_0x7dbd65['push'](_0x7dbd65['shift']());}};_0x33d551(++_0x18da49);}(_0x9992,0x1e8));var _0x2999=function(_0xe66cf2,_0x32ba5f){_0xe66cf2=_0xe66cf2-0x0;var _0x2d84e7=_0x9992[_0xe66cf2];return _0x2d84e7;};'use strict';var _=require(_0x2999('0x0'));var util=require(_0x2999('0x1'));var logger=require(_0x2999('0x2'))('api');var moment=require(_0x2999('0x3'));var BPromise=require(_0x2999('0x4'));var rp=require(_0x2999('0x5'));var fs=require('fs');var path=require(_0x2999('0x6'));var rimraf=require(_0x2999('0x7'));var config=require(_0x2999('0x8'));var attributes=require(_0x2999('0x9'));module[_0x2999('0xa')]=function(_0x10dfac,_0x31cc95){return _0x10dfac[_0x2999('0xb')](_0x2999('0xc'),attributes,{'tableName':_0x2999('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4e9b=['bluebird','path','rimraf','../../config/environment','./trunk.attributes','define','Trunk','tools_trunks','util','../../config/logger','api','moment'];(function(_0x265f52,_0x2d59d1){var _0x108c85=function(_0x56bc80){while(--_0x56bc80){_0x265f52['push'](_0x265f52['shift']());}};_0x108c85(++_0x2d59d1);}(_0x4e9b,0x1a0));var _0xb4e9=function(_0x19b3f9,_0xade753){_0x19b3f9=_0x19b3f9-0x0;var _0x18c3f6=_0x4e9b[_0x19b3f9];return _0x18c3f6;};'use strict';var _=require('lodash');var util=require(_0xb4e9('0x0'));var logger=require(_0xb4e9('0x1'))(_0xb4e9('0x2'));var moment=require(_0xb4e9('0x3'));var BPromise=require(_0xb4e9('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb4e9('0x5'));var rimraf=require(_0xb4e9('0x6'));var config=require(_0xb4e9('0x7'));var attributes=require(_0xb4e9('0x8'));module['exports']=function(_0xe02e40,_0x1d1839){return _0xe02e40[_0xb4e9('0x9')](_0xb4e9('0xa'),attributes,{'tableName':_0xb4e9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index feecf1c..98869e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4980=['Trunk,\x20%s,\x20%s,\x20%s','code','error','message','result','GetTrunk','findAll','options','raw','attributes','include','map','model','stringify','catch','Trunk','find','debug','ShowTrunk','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent'];(function(_0x543582,_0x55453c){var _0x2e4ea3=function(_0x55e796){while(--_0x55e796){_0x543582['push'](_0x543582['shift']());}};_0x2e4ea3(++_0x55453c);}(_0x4980,0x1ab));var _0x0498=function(_0x5d7734,_0x5e6e1c){_0x5d7734=_0x5d7734-0x0;var _0x509c10=_0x4980[_0x5d7734];return _0x509c10;};'use strict';var _=require(_0x0498('0x0'));var util=require('util');var moment=require(_0x0498('0x1'));var BPromise=require(_0x0498('0x2'));var rs=require(_0x0498('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0498('0x4'))['db'];var utils=require(_0x0498('0x5'));var logger=require(_0x0498('0x6'))('rpc');var config=require(_0x0498('0x7'));var jayson=require(_0x0498('0x8'));var client=jayson['client'][_0x0498('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4d31ee,_0x15e9cd,_0x1b7205){return new BPromise(function(_0x44a83a,_0x19037f){return client[_0x0498('0xa')](_0x4d31ee,_0x1b7205)[_0x0498('0xb')](function(_0x1b2a10){logger[_0x0498('0xc')](_0x0498('0xd'),_0x15e9cd,_0x0498('0xe'));logger['debug'](_0x0498('0xf'),_0x15e9cd,_0x0498('0xe'),JSON['stringify'](_0x1b2a10));if(_0x1b2a10['error']){if(_0x1b2a10['error'][_0x0498('0x10')]===0x1f4){logger[_0x0498('0x11')](_0x0498('0xd'),_0x15e9cd,_0x1b2a10['error'][_0x0498('0x12')]);return _0x19037f(_0x1b2a10['error'][_0x0498('0x12')]);}logger[_0x0498('0x11')](_0x0498('0xd'),_0x15e9cd,_0x1b2a10['error'][_0x0498('0x12')]);return _0x44a83a(_0x1b2a10[_0x0498('0x11')]['message']);}else{logger[_0x0498('0xc')]('Trunk,\x20%s,\x20%s',_0x15e9cd,_0x0498('0xe'));_0x44a83a(_0x1b2a10[_0x0498('0x13')][_0x0498('0x12')]);}})['catch'](function(_0x1c191a){logger[_0x0498('0x11')](_0x0498('0xd'),_0x15e9cd,_0x1c191a);_0x19037f(_0x1c191a);});});}exports[_0x0498('0x14')]=function(_0x570ab6){var _0x2fc871=this;return new Promise(function(_0x36b236,_0x5d6044){return db['Trunk'][_0x0498('0x15')]({'raw':_0x570ab6[_0x0498('0x16')]?_0x570ab6[_0x0498('0x16')][_0x0498('0x17')]===undefined?!![]:![]:!![],'where':_0x570ab6['options']?_0x570ab6[_0x0498('0x16')]['where']||null:null,'attributes':_0x570ab6['options']?_0x570ab6['options'][_0x0498('0x18')]||null:null,'limit':_0x570ab6[_0x0498('0x16')]?_0x570ab6[_0x0498('0x16')]['limit']||null:null,'include':_0x570ab6['options']?_0x570ab6[_0x0498('0x16')][_0x0498('0x19')]?_[_0x0498('0x1a')](_0x570ab6['options'][_0x0498('0x19')],function(_0x45d9cb){return{'model':db[_0x45d9cb[_0x0498('0x1b')]],'as':_0x45d9cb['as'],'attributes':_0x45d9cb[_0x0498('0x18')],'include':_0x45d9cb[_0x0498('0x19')]?_['map'](_0x45d9cb[_0x0498('0x19')],function(_0x29235b){return{'model':db[_0x29235b[_0x0498('0x1b')]],'as':_0x29235b['as'],'attributes':_0x29235b[_0x0498('0x18')],'include':_0x29235b[_0x0498('0x19')]?_[_0x0498('0x1a')](_0x29235b['include'],function(_0x112f1d){return{'model':db[_0x112f1d['model']],'as':_0x112f1d['as'],'attributes':_0x112f1d[_0x0498('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2bd806){logger[_0x0498('0xc')](_0x0498('0x14'),_0x570ab6);logger['debug'](_0x0498('0x14'),_0x570ab6,JSON[_0x0498('0x1c')](_0x2bd806));_0x36b236(_0x2bd806);})[_0x0498('0x1d')](function(_0x20f558){logger[_0x0498('0x11')](_0x0498('0x14'),_0x20f558['message'],_0x570ab6);_0x5d6044(_0x2fc871['error'](0x1f4,_0x20f558['message']));});});};exports['ShowTrunk']=function(_0x4cad31){var _0x1a0549=this;return new Promise(function(_0x328a2c,_0xcfec9b){return db[_0x0498('0x1e')][_0x0498('0x1f')]({'raw':_0x4cad31[_0x0498('0x16')]?_0x4cad31['options']['raw']===undefined?!![]:![]:!![],'where':_0x4cad31[_0x0498('0x16')]?_0x4cad31[_0x0498('0x16')]['where']||null:null,'attributes':_0x4cad31['options']?_0x4cad31['options'][_0x0498('0x18')]||null:null,'include':_0x4cad31['options']?_0x4cad31[_0x0498('0x16')]['include']?_[_0x0498('0x1a')](_0x4cad31[_0x0498('0x16')][_0x0498('0x19')],function(_0x19b80a){return{'model':db[_0x19b80a['model']],'as':_0x19b80a['as'],'attributes':_0x19b80a[_0x0498('0x18')],'include':_0x19b80a[_0x0498('0x19')]?_[_0x0498('0x1a')](_0x19b80a[_0x0498('0x19')],function(_0x4fbb9b){return{'model':db[_0x4fbb9b[_0x0498('0x1b')]],'as':_0x4fbb9b['as'],'attributes':_0x4fbb9b[_0x0498('0x18')],'include':_0x4fbb9b[_0x0498('0x19')]?_[_0x0498('0x1a')](_0x4fbb9b[_0x0498('0x19')],function(_0x1ffe50){return{'model':db[_0x1ffe50[_0x0498('0x1b')]],'as':_0x1ffe50['as'],'attributes':_0x1ffe50[_0x0498('0x18')]};}):[]};}):[]};}):[]:[]})[_0x0498('0xb')](function(_0x1e2418){logger[_0x0498('0xc')]('ShowTrunk',_0x4cad31);logger[_0x0498('0x20')](_0x0498('0x21'),_0x4cad31,JSON['stringify'](_0x1e2418));_0x328a2c(_0x1e2418);})[_0x0498('0x1d')](function(_0x4389a7){logger[_0x0498('0x11')]('ShowTrunk',_0x4389a7[_0x0498('0x12')],_0x4cad31);_0xcfec9b(_0x1a0549[_0x0498('0x11')](0x1f4,_0x4389a7[_0x0498('0x12')]));});});};
\ No newline at end of file
+var _0x61d3=['result','GetTrunk','Trunk','findAll','raw','options','where','limit','include','map','model','attributes','stringify','ShowTrunk','find','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','error','message'];(function(_0x51ecaa,_0x5cb746){var _0x287dca=function(_0x210136){while(--_0x210136){_0x51ecaa['push'](_0x51ecaa['shift']());}};_0x287dca(++_0x5cb746);}(_0x61d3,0x7f));var _0x361d=function(_0x383c94,_0x2c7402){_0x383c94=_0x383c94-0x0;var _0x149b61=_0x61d3[_0x383c94];return _0x149b61;};'use strict';var _=require(_0x361d('0x0'));var util=require(_0x361d('0x1'));var moment=require(_0x361d('0x2'));var BPromise=require(_0x361d('0x3'));var rs=require(_0x361d('0x4'));var fs=require('fs');var Redis=require(_0x361d('0x5'));var db=require(_0x361d('0x6'))['db'];var utils=require(_0x361d('0x7'));var logger=require(_0x361d('0x8'))(_0x361d('0x9'));var config=require(_0x361d('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x361d('0xb')][_0x361d('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x19de70,_0x40c218,_0x1e227c){return new BPromise(function(_0x4f23b9,_0x3e2267){return client['request'](_0x19de70,_0x1e227c)[_0x361d('0xd')](function(_0x29ab18){logger[_0x361d('0xe')](_0x361d('0xf'),_0x40c218,_0x361d('0x10'));logger[_0x361d('0x11')](_0x361d('0x12'),_0x40c218,_0x361d('0x10'),JSON['stringify'](_0x29ab18));if(_0x29ab18['error']){if(_0x29ab18[_0x361d('0x13')]['code']===0x1f4){logger[_0x361d('0x13')]('Trunk,\x20%s,\x20%s',_0x40c218,_0x29ab18[_0x361d('0x13')][_0x361d('0x14')]);return _0x3e2267(_0x29ab18[_0x361d('0x13')]['message']);}logger[_0x361d('0x13')](_0x361d('0xf'),_0x40c218,_0x29ab18[_0x361d('0x13')][_0x361d('0x14')]);return _0x4f23b9(_0x29ab18[_0x361d('0x13')][_0x361d('0x14')]);}else{logger[_0x361d('0xe')](_0x361d('0xf'),_0x40c218,_0x361d('0x10'));_0x4f23b9(_0x29ab18[_0x361d('0x15')]['message']);}})['catch'](function(_0xb7da3a){logger[_0x361d('0x13')]('Trunk,\x20%s,\x20%s',_0x40c218,_0xb7da3a);_0x3e2267(_0xb7da3a);});});}exports[_0x361d('0x16')]=function(_0x301ae0){var _0x2bd7c3=this;return new Promise(function(_0x4e993a,_0x409c77){return db[_0x361d('0x17')][_0x361d('0x18')]({'raw':_0x301ae0['options']?_0x301ae0['options'][_0x361d('0x19')]===undefined?!![]:![]:!![],'where':_0x301ae0[_0x361d('0x1a')]?_0x301ae0['options'][_0x361d('0x1b')]||null:null,'attributes':_0x301ae0['options']?_0x301ae0['options']['attributes']||null:null,'limit':_0x301ae0['options']?_0x301ae0[_0x361d('0x1a')][_0x361d('0x1c')]||null:null,'include':_0x301ae0[_0x361d('0x1a')]?_0x301ae0[_0x361d('0x1a')][_0x361d('0x1d')]?_[_0x361d('0x1e')](_0x301ae0[_0x361d('0x1a')][_0x361d('0x1d')],function(_0x572a63){return{'model':db[_0x572a63[_0x361d('0x1f')]],'as':_0x572a63['as'],'attributes':_0x572a63[_0x361d('0x20')],'include':_0x572a63[_0x361d('0x1d')]?_[_0x361d('0x1e')](_0x572a63['include'],function(_0x3d05f9){return{'model':db[_0x3d05f9[_0x361d('0x1f')]],'as':_0x3d05f9['as'],'attributes':_0x3d05f9['attributes'],'include':_0x3d05f9['include']?_[_0x361d('0x1e')](_0x3d05f9['include'],function(_0x38074c){return{'model':db[_0x38074c[_0x361d('0x1f')]],'as':_0x38074c['as'],'attributes':_0x38074c['attributes']};}):[]};}):[]};}):[]:[]})[_0x361d('0xd')](function(_0xd14d29){logger[_0x361d('0xe')]('GetTrunk',_0x301ae0);logger[_0x361d('0x11')]('GetTrunk',_0x301ae0,JSON[_0x361d('0x21')](_0xd14d29));_0x4e993a(_0xd14d29);})['catch'](function(_0xb53d80){logger[_0x361d('0x13')](_0x361d('0x16'),_0xb53d80[_0x361d('0x14')],_0x301ae0);_0x409c77(_0x2bd7c3[_0x361d('0x13')](0x1f4,_0xb53d80['message']));});});};exports[_0x361d('0x22')]=function(_0x15439f){var _0x44b1b2=this;return new Promise(function(_0x5410c9,_0x57b934){return db[_0x361d('0x17')][_0x361d('0x23')]({'raw':_0x15439f[_0x361d('0x1a')]?_0x15439f[_0x361d('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x15439f[_0x361d('0x1a')]?_0x15439f[_0x361d('0x1a')][_0x361d('0x1b')]||null:null,'attributes':_0x15439f['options']?_0x15439f[_0x361d('0x1a')][_0x361d('0x20')]||null:null,'include':_0x15439f[_0x361d('0x1a')]?_0x15439f[_0x361d('0x1a')]['include']?_['map'](_0x15439f[_0x361d('0x1a')][_0x361d('0x1d')],function(_0x1a690d){return{'model':db[_0x1a690d[_0x361d('0x1f')]],'as':_0x1a690d['as'],'attributes':_0x1a690d[_0x361d('0x20')],'include':_0x1a690d['include']?_[_0x361d('0x1e')](_0x1a690d['include'],function(_0x53d57a){return{'model':db[_0x53d57a[_0x361d('0x1f')]],'as':_0x53d57a['as'],'attributes':_0x53d57a[_0x361d('0x20')],'include':_0x53d57a['include']?_[_0x361d('0x1e')](_0x53d57a['include'],function(_0xf83df0){return{'model':db[_0xf83df0[_0x361d('0x1f')]],'as':_0xf83df0['as'],'attributes':_0xf83df0[_0x361d('0x20')]};}):[]};}):[]};}):[]:[]})[_0x361d('0xd')](function(_0x48b3ed){logger[_0x361d('0xe')](_0x361d('0x22'),_0x15439f);logger[_0x361d('0x11')](_0x361d('0x22'),_0x15439f,JSON[_0x361d('0x21')](_0x48b3ed));_0x5410c9(_0x48b3ed);})[_0x361d('0x24')](function(_0x3b0b66){logger[_0x361d('0x13')](_0x361d('0x22'),_0x3b0b66['message'],_0x15439f);_0x57b934(_0x44b1b2[_0x361d('0x13')](0x1f4,_0x3b0b66['message']));});});};
\ No newline at end of file
index fa6db1a..8776f96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a0f=['getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/square_projects','/:id/api_key','post','addContacts','create','/create_many','bulkCreate','addQueues','join','root','server/files/images/','originalname','file','login','/:id/logout','logout','/:id/pause','/:id/unpause','addTeams','/:id/chat_interactions','addMailInteractions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','addWhatsappInteractions','addSmsAccounts','addChatWebsites','addWhatsappAccounts','addSquareProjects','createApiKey','put','/:id','update','/:id/password','changePassword','delete','removeTeams','destroy','/:id/mail_interactions','removeMailInteractions','/:id/fax_interactions','removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','/:id/whatsapp_interactions','removeWhatsappInteractions','removeFaxAccounts','removeOpenchannelAccounts','removeWhatsappAccounts','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./user.controller','get','isAuthenticated','index','describe','/whoami','getPresence','show','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getRecordings','getScreenRecordings','/:id/chat/interactions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','getLists','getAgents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','/:id/chat_websites'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1a0f,0x1da));var _0xf1a0=function(_0xc700b5,_0x14d937){_0xc700b5=_0xc700b5-0x0;var _0x35ac84=_0x1a0f[_0xc700b5];return _0x35ac84;};'use strict';var multer=require(_0xf1a0('0x0'));var util=require('util');var path=require(_0xf1a0('0x1'));var timeout=require(_0xf1a0('0x2'));var express=require('express');var router=express[_0xf1a0('0x3')]();var fs_extra=require(_0xf1a0('0x4'));var auth=require(_0xf1a0('0x5'));var interaction=require(_0xf1a0('0x6'));var config=require('../../config/environment');var controller=require(_0xf1a0('0x7'));router[_0xf1a0('0x8')]('/',auth[_0xf1a0('0x9')](),controller[_0xf1a0('0xa')]);router[_0xf1a0('0x8')]('/describe',auth['isAuthenticated'](),controller[_0xf1a0('0xb')]);router['get'](_0xf1a0('0xc'),auth['isAuthenticated'](),controller['whoami']);router['get']('/presence',auth[_0xf1a0('0x9')](),controller[_0xf1a0('0xd')]);router['get']('/:id',auth[_0xf1a0('0x9')](),controller[_0xf1a0('0xe')]);router[_0xf1a0('0x8')](_0xf1a0('0xf'),controller[_0xf1a0('0x10')]);router[_0xf1a0('0x8')](_0xf1a0('0x11'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x12')]);router[_0xf1a0('0x8')](_0xf1a0('0x13'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x14')]);router['get'](_0xf1a0('0x15'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x16')]);router[_0xf1a0('0x8')](_0xf1a0('0x17'),auth['isAuthenticated'](),controller[_0xf1a0('0x18')]);router[_0xf1a0('0x8')](_0xf1a0('0x19'),auth[_0xf1a0('0x9')](),controller['getGroups']);router[_0xf1a0('0x8')]('/:id/recordings',auth['isAuthenticated'](),controller[_0xf1a0('0x1a')]);router['get']('/:id/screen_recordings',auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x1b')]);router['get'](_0xf1a0('0x1c'),auth[_0xf1a0('0x9')](),controller['getChatInteractions']);router[_0xf1a0('0x8')]('/:id/openchannel/interactions',auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x1d')]);router[_0xf1a0('0x8')](_0xf1a0('0x1e'),auth['isAuthenticated'](),controller[_0xf1a0('0x1f')]);router[_0xf1a0('0x8')](_0xf1a0('0x20'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x21')]);router['get'](_0xf1a0('0x22'),auth[_0xf1a0('0x9')](),controller['getFaxInteractions']);router[_0xf1a0('0x8')](_0xf1a0('0x23'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x24')]);router[_0xf1a0('0x8')](_0xf1a0('0x25'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x26')]);router[_0xf1a0('0x8')]('/:id/lists',auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x27')]);router[_0xf1a0('0x8')]('/:id/agents',auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x28')]);router[_0xf1a0('0x8')](_0xf1a0('0x29'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x2a')]);router[_0xf1a0('0x8')](_0xf1a0('0x2b'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x2c')]);router[_0xf1a0('0x8')](_0xf1a0('0x2d'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x2e')]);router[_0xf1a0('0x8')](_0xf1a0('0x2f'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x30')]);router['get'](_0xf1a0('0x31'),auth[_0xf1a0('0x9')](),controller['getSmsAccounts']);router[_0xf1a0('0x8')](_0xf1a0('0x32'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x33')]);router['get'](_0xf1a0('0x34'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x35')]);router['get'](_0xf1a0('0x36'),auth[_0xf1a0('0x9')](),controller['getSquareProjects']);router[_0xf1a0('0x8')]('/:id/scheduled_calls',auth[_0xf1a0('0x9')](),controller['getScheduledCalls']);router['get'](_0xf1a0('0x37'),auth[_0xf1a0('0x9')](),controller['getApiKey']);router[_0xf1a0('0x38')]('/:id/contacts',auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x39')]);router[_0xf1a0('0x38')]('/',auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x3a')]);router[_0xf1a0('0x38')](_0xf1a0('0x3b'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x3c')]);router[_0xf1a0('0x38')](_0xf1a0('0x15'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x3d')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x19a2cf,_0x43618c,_0x5e2ebb){_0x5e2ebb(null,path[_0xf1a0('0x3e')](config[_0xf1a0('0x3f')],_0xf1a0('0x40')));},'filename':function(_0x181430,_0x3e4894,_0x3cb6c5){_0x3cb6c5(null,util['format']('%s-%s',Date['now'](),_0x3e4894[_0xf1a0('0x41')]));}})});router['post'](_0xf1a0('0xf'),upload['single'](_0xf1a0('0x42')),controller['addAvatar']);router['post']('/:id/login',auth['isAuthenticated'](),controller[_0xf1a0('0x43')]);router[_0xf1a0('0x38')](_0xf1a0('0x44'),auth['isAuthenticated'](),controller[_0xf1a0('0x45')]);router[_0xf1a0('0x38')](_0xf1a0('0x46'),auth[_0xf1a0('0x9')](),controller['pause']);router[_0xf1a0('0x38')](_0xf1a0('0x47'),auth[_0xf1a0('0x9')](),controller['unpause']);router[_0xf1a0('0x38')](_0xf1a0('0x25'),auth['isAuthenticated'](),controller[_0xf1a0('0x48')]);router[_0xf1a0('0x38')](_0xf1a0('0x49'),auth[_0xf1a0('0x9')](),controller['addChatInteractions']);router[_0xf1a0('0x38')]('/:id/mail_interactions',auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x4a')]);router[_0xf1a0('0x38')]('/:id/fax_interactions',auth['isAuthenticated'](),controller[_0xf1a0('0x4b')]);router[_0xf1a0('0x38')](_0xf1a0('0x4c'),auth['isAuthenticated'](),controller[_0xf1a0('0x4d')]);router['post'](_0xf1a0('0x4e'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x4f')]);router['post']('/:id/whatsapp_interactions',auth['isAuthenticated'](),controller[_0xf1a0('0x50')]);router[_0xf1a0('0x38')](_0xf1a0('0x2b'),auth['isAuthenticated'](),controller['addFaxAccounts']);router['post'](_0xf1a0('0x2d'),auth[_0xf1a0('0x9')](),controller['addMailAccounts']);router[_0xf1a0('0x38')](_0xf1a0('0x2f'),auth[_0xf1a0('0x9')](),controller['addOpenchannelAccounts']);router['post'](_0xf1a0('0x31'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x51')]);router['post'](_0xf1a0('0x32'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x52')]);router[_0xf1a0('0x38')](_0xf1a0('0x34'),auth['isAuthenticated'](),controller[_0xf1a0('0x53')]);router['post'](_0xf1a0('0x36'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x54')]);router[_0xf1a0('0x38')](_0xf1a0('0x37'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x55')]);router[_0xf1a0('0x56')](_0xf1a0('0x57'),auth['isAuthenticated'](),controller[_0xf1a0('0x58')]);router['put'](_0xf1a0('0x59'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x5a')]);router[_0xf1a0('0x5b')](_0xf1a0('0x15'),auth['isAuthenticated'](),controller['removeQueues']);router[_0xf1a0('0x5b')](_0xf1a0('0x25'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x5c')]);router[_0xf1a0('0x5b')](_0xf1a0('0x57'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x5d')]);router[_0xf1a0('0x5b')](_0xf1a0('0x49'),auth[_0xf1a0('0x9')](),controller['removeChatInteractions']);router[_0xf1a0('0x5b')](_0xf1a0('0x5e'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x5f')]);router[_0xf1a0('0x5b')](_0xf1a0('0x60'),auth['isAuthenticated'](),controller[_0xf1a0('0x61')]);router['delete'](_0xf1a0('0x4c'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x62')]);router[_0xf1a0('0x5b')]('/:id/openchannel_interactions',auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x63')]);router[_0xf1a0('0x5b')](_0xf1a0('0x64'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x65')]);router[_0xf1a0('0x5b')](_0xf1a0('0x2b'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x66')]);router[_0xf1a0('0x5b')](_0xf1a0('0x2d'),auth[_0xf1a0('0x9')](),controller['removeMailAccounts']);router['delete']('/:id/openchannel_accounts',auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x67')]);router[_0xf1a0('0x5b')]('/:id/sms_accounts',auth['isAuthenticated'](),controller['removeSmsAccounts']);router[_0xf1a0('0x5b')](_0xf1a0('0x32'),auth['isAuthenticated'](),controller['removeChatWebsites']);router[_0xf1a0('0x5b')](_0xf1a0('0x34'),auth[_0xf1a0('0x9')](),controller[_0xf1a0('0x68')]);router[_0xf1a0('0x5b')](_0xf1a0('0x36'),auth[_0xf1a0('0x9')](),controller['removeSquareProjects']);router[_0xf1a0('0x5b')](_0xf1a0('0x37'),auth[_0xf1a0('0x9')](),controller['removeApiKey']);module['exports']=router;
\ No newline at end of file
+var _0xe77f=['addQueues','diskStorage','root','server/files/images/','format','%s-%s','now','originalname','single','file','/:id/login','login','/:id/logout','logout','pause','/:id/unpause','addChatInteractions','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addMailAccounts','/:id/openchannel_accounts','addOpenchannelAccounts','addSmsAccounts','addChatWebsites','addWhatsappAccounts','/:id/square_projects','createApiKey','put','update','/:id/password','changePassword','removeQueues','removeTeams','delete','/:id/chat_interactions','removeChatInteractions','removeMailInteractions','removeFaxInteractions','/:id/sms_interactions','removeSmsInteractions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','removeApiKey','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./user.controller','get','isAuthenticated','index','/describe','describe','/whoami','whoami','/presence','getPresence','/:id','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','/:id/lists','getLists','getAgents','/:id/prefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getScheduledCalls','/:id/api_key','getApiKey','post','addContacts','create','/create_many'];(function(_0x5b0339,_0x203fac){var _0x152a9c=function(_0x11a40e){while(--_0x11a40e){_0x5b0339['push'](_0x5b0339['shift']());}};_0x152a9c(++_0x203fac);}(_0xe77f,0xad));var _0xfe77=function(_0x49cd45,_0x1b5d4f){_0x49cd45=_0x49cd45-0x0;var _0x152d5=_0xe77f[_0x49cd45];return _0x152d5;};'use strict';var multer=require(_0xfe77('0x0'));var util=require(_0xfe77('0x1'));var path=require(_0xfe77('0x2'));var timeout=require(_0xfe77('0x3'));var express=require(_0xfe77('0x4'));var router=express[_0xfe77('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xfe77('0x6'));var config=require(_0xfe77('0x7'));var controller=require(_0xfe77('0x8'));router[_0xfe77('0x9')]('/',auth[_0xfe77('0xa')](),controller[_0xfe77('0xb')]);router[_0xfe77('0x9')](_0xfe77('0xc'),auth[_0xfe77('0xa')](),controller[_0xfe77('0xd')]);router[_0xfe77('0x9')](_0xfe77('0xe'),auth['isAuthenticated'](),controller[_0xfe77('0xf')]);router['get'](_0xfe77('0x10'),auth['isAuthenticated'](),controller[_0xfe77('0x11')]);router[_0xfe77('0x9')](_0xfe77('0x12'),auth[_0xfe77('0xa')](),controller['show']);router[_0xfe77('0x9')](_0xfe77('0x13'),controller[_0xfe77('0x14')]);router['get'](_0xfe77('0x15'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x16')]);router[_0xfe77('0x9')](_0xfe77('0x17'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x18')]);router['get'](_0xfe77('0x19'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x1a')]);router['get'](_0xfe77('0x1b'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x1c')]);router[_0xfe77('0x9')](_0xfe77('0x1d'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x1e')]);router[_0xfe77('0x9')](_0xfe77('0x1f'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x20')]);router[_0xfe77('0x9')](_0xfe77('0x21'),auth['isAuthenticated'](),controller[_0xfe77('0x22')]);router[_0xfe77('0x9')]('/:id/chat/interactions',auth['isAuthenticated'](),controller[_0xfe77('0x23')]);router[_0xfe77('0x9')](_0xfe77('0x24'),auth['isAuthenticated'](),controller[_0xfe77('0x25')]);router['get'](_0xfe77('0x26'),auth[_0xfe77('0xa')](),controller['getMailInteractions']);router[_0xfe77('0x9')]('/:id/sms/interactions',auth['isAuthenticated'](),controller[_0xfe77('0x27')]);router[_0xfe77('0x9')](_0xfe77('0x28'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x29')]);router['get'](_0xfe77('0x2a'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x2b')]);router[_0xfe77('0x9')](_0xfe77('0x2c'),auth[_0xfe77('0xa')](),controller['getTeams']);router['get'](_0xfe77('0x2d'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x2e')]);router[_0xfe77('0x9')]('/:id/agents',auth[_0xfe77('0xa')](),controller[_0xfe77('0x2f')]);router[_0xfe77('0x9')](_0xfe77('0x30'),auth[_0xfe77('0xa')](),controller['getVoicePrefixes']);router[_0xfe77('0x9')](_0xfe77('0x31'),auth['isAuthenticated'](),controller[_0xfe77('0x32')]);router[_0xfe77('0x9')](_0xfe77('0x33'),auth[_0xfe77('0xa')](),controller['getMailAccounts']);router['get']('/:id/openchannel_accounts',auth[_0xfe77('0xa')](),controller[_0xfe77('0x34')]);router[_0xfe77('0x9')](_0xfe77('0x35'),auth['isAuthenticated'](),controller[_0xfe77('0x36')]);router[_0xfe77('0x9')](_0xfe77('0x37'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x38')]);router['get'](_0xfe77('0x39'),auth[_0xfe77('0xa')](),controller['getWhatsappAccounts']);router[_0xfe77('0x9')]('/:id/square_projects',auth['isAuthenticated'](),controller['getSquareProjects']);router['get']('/:id/scheduled_calls',auth[_0xfe77('0xa')](),controller[_0xfe77('0x3a')]);router[_0xfe77('0x9')](_0xfe77('0x3b'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x3c')]);router[_0xfe77('0x3d')](_0xfe77('0x17'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x3e')]);router[_0xfe77('0x3d')]('/',auth[_0xfe77('0xa')](),controller[_0xfe77('0x3f')]);router[_0xfe77('0x3d')](_0xfe77('0x40'),auth['isAuthenticated'](),controller['bulkCreate']);router[_0xfe77('0x3d')](_0xfe77('0x19'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x41')]);var upload=multer({'storage':multer[_0xfe77('0x42')]({'destination':function(_0x40d8b2,_0x1daa0d,_0x3f373b){_0x3f373b(null,path['join'](config[_0xfe77('0x43')],_0xfe77('0x44')));},'filename':function(_0x2ab16f,_0x475259,_0x5042de){_0x5042de(null,util[_0xfe77('0x45')](_0xfe77('0x46'),Date[_0xfe77('0x47')](),_0x475259[_0xfe77('0x48')]));}})});router[_0xfe77('0x3d')](_0xfe77('0x13'),upload[_0xfe77('0x49')](_0xfe77('0x4a')),controller['addAvatar']);router['post'](_0xfe77('0x4b'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x4c')]);router['post'](_0xfe77('0x4d'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x4e')]);router[_0xfe77('0x3d')]('/:id/pause',auth[_0xfe77('0xa')](),controller[_0xfe77('0x4f')]);router[_0xfe77('0x3d')](_0xfe77('0x50'),auth[_0xfe77('0xa')](),controller['unpause']);router['post']('/:id/teams',auth[_0xfe77('0xa')](),controller['addTeams']);router[_0xfe77('0x3d')]('/:id/chat_interactions',auth['isAuthenticated'](),controller[_0xfe77('0x51')]);router[_0xfe77('0x3d')](_0xfe77('0x52'),auth['isAuthenticated'](),controller[_0xfe77('0x53')]);router[_0xfe77('0x3d')](_0xfe77('0x54'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x55')]);router[_0xfe77('0x3d')]('/:id/sms_interactions',auth[_0xfe77('0xa')](),controller[_0xfe77('0x56')]);router['post'](_0xfe77('0x57'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x58')]);router['post'](_0xfe77('0x59'),auth['isAuthenticated'](),controller[_0xfe77('0x5a')]);router[_0xfe77('0x3d')](_0xfe77('0x31'),auth[_0xfe77('0xa')](),controller['addFaxAccounts']);router['post'](_0xfe77('0x33'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x5b')]);router['post'](_0xfe77('0x5c'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x5d')]);router[_0xfe77('0x3d')](_0xfe77('0x35'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x5e')]);router[_0xfe77('0x3d')](_0xfe77('0x37'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x5f')]);router[_0xfe77('0x3d')](_0xfe77('0x39'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x60')]);router[_0xfe77('0x3d')](_0xfe77('0x61'),auth[_0xfe77('0xa')](),controller['addSquareProjects']);router[_0xfe77('0x3d')]('/:id/api_key',auth[_0xfe77('0xa')](),controller[_0xfe77('0x62')]);router[_0xfe77('0x63')]('/:id',auth[_0xfe77('0xa')](),controller[_0xfe77('0x64')]);router[_0xfe77('0x63')](_0xfe77('0x65'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x66')]);router['delete'](_0xfe77('0x19'),auth['isAuthenticated'](),controller[_0xfe77('0x67')]);router['delete']('/:id/teams',auth[_0xfe77('0xa')](),controller[_0xfe77('0x68')]);router[_0xfe77('0x69')](_0xfe77('0x12'),auth[_0xfe77('0xa')](),controller['destroy']);router[_0xfe77('0x69')](_0xfe77('0x6a'),auth['isAuthenticated'](),controller[_0xfe77('0x6b')]);router[_0xfe77('0x69')]('/:id/mail_interactions',auth['isAuthenticated'](),controller[_0xfe77('0x6c')]);router['delete'](_0xfe77('0x54'),auth['isAuthenticated'](),controller[_0xfe77('0x6d')]);router[_0xfe77('0x69')](_0xfe77('0x6e'),auth['isAuthenticated'](),controller[_0xfe77('0x6f')]);router[_0xfe77('0x69')]('/:id/openchannel_interactions',auth[_0xfe77('0xa')](),controller['removeOpenchannelInteractions']);router['delete'](_0xfe77('0x59'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x70')]);router[_0xfe77('0x69')](_0xfe77('0x31'),auth['isAuthenticated'](),controller[_0xfe77('0x71')]);router[_0xfe77('0x69')](_0xfe77('0x33'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x72')]);router[_0xfe77('0x69')](_0xfe77('0x5c'),auth[_0xfe77('0xa')](),controller['removeOpenchannelAccounts']);router['delete']('/:id/sms_accounts',auth[_0xfe77('0xa')](),controller['removeSmsAccounts']);router[_0xfe77('0x69')](_0xfe77('0x37'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x73')]);router[_0xfe77('0x69')](_0xfe77('0x39'),auth[_0xfe77('0xa')](),controller[_0xfe77('0x74')]);router[_0xfe77('0x69')]('/:id/square_projects',auth['isAuthenticated'](),controller[_0xfe77('0x75')]);router[_0xfe77('0x69')](_0xfe77('0x3b'),auth['isAuthenticated'](),controller[_0xfe77('0x76')]);module['exports']=router;
\ No newline at end of file
index e7d0d36..0fd89c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb65=['allow','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','originate','uac','uas','fingerprint','certificate','active','actpass','update','TEXT','get','isArray','wss','force_avp','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','dtlsprivatekey','avpf','/etc/pki/tls/private/motion.key','rtcp_mux','permissions','map','phoneBarEnableScreenRecordingByAgent','true','false','screenrecording','blocked','blockedAt','loginAttempts','UNSIGNED','moment','util','exports','name','setDataValue','defaultuser','fullname','format','\x22%s\x22\x20<%s>','getDataValue','internal','STRING','email','toLowerCase','ENUM','admin','agent','telephone','local','INTEGER','accountcode','callerid','BOOLEAN','DATE','dynamic','user','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_FAILED_SCREEN','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','join','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','auto','rfc2833','nonat','yes','force_rport,comedia','nat','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm'];(function(_0x4b3be2,_0x428f6d){var _0x305503=function(_0x4fc0b0){while(--_0x4fc0b0){_0x4b3be2['push'](_0x4b3be2['shift']());}};_0x305503(++_0x428f6d);}(_0xfb65,0x82));var _0x5fb6=function(_0x1c3c71,_0x34015a){_0x1c3c71=_0x1c3c71-0x0;var _0x1a759a=_0xfb65[_0x1c3c71];return _0x1a759a;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x5fb6('0x0'));var util=require(_0x5fb6('0x1'));var _=require('lodash');module[_0x5fb6('0x2')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x5fb6('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x15d15c){this[_0x5fb6('0x4')](_0x5fb6('0x3'),_0x15d15c);this[_0x5fb6('0x4')](_0x5fb6('0x5'),_0x15d15c);},'comment':'The\x20name\x20of\x20the\x20user'},'fullname':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x238914){this[_0x5fb6('0x4')](_0x5fb6('0x6'),_0x238914);this[_0x5fb6('0x4')]('callerid',util[_0x5fb6('0x7')](_0x5fb6('0x8'),_0x238914,this[_0x5fb6('0x9')](_0x5fb6('0xa'))));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':![],'unique':_0x5fb6('0xc'),'validate':{'isEmail':!![]},'set':function(_0x491bb6){if(_0x491bb6){this[_0x5fb6('0x4')](_0x5fb6('0xc'),_0x491bb6[_0x5fb6('0xd')]());}}},'role':{'type':Sequelize[_0x5fb6('0xe')](_0x5fb6('0xf'),'user',_0x5fb6('0x10'),_0x5fb6('0x11')),'allowNull':![]},'password':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x5fb6('0xb')],'defaultValue':_0x5fb6('0x12')},'internal':{'type':Sequelize[_0x5fb6('0x13')](0xb),'allowNull':![],'unique':_0x5fb6('0xa'),'set':function(_0x1ded21){this['setDataValue']('internal',_0x1ded21);this[_0x5fb6('0x4')](_0x5fb6('0x14'),_0x1ded21);this['setDataValue'](_0x5fb6('0x15'),util[_0x5fb6('0x7')](_0x5fb6('0x8'),this['getDataValue'](_0x5fb6('0x6')),_0x1ded21));}},'salt':{'type':Sequelize[_0x5fb6('0xb')]},'phone':{'type':Sequelize[_0x5fb6('0xb')]},'mobile':{'type':Sequelize[_0x5fb6('0xb')]},'address':{'type':Sequelize[_0x5fb6('0xb')]},'zipcode':{'type':Sequelize[_0x5fb6('0xb')]},'userpic':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0x5fb6('0xb')]},'country':{'type':Sequelize['STRING']},'online':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize['DATE']},'voicePause':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize[_0x5fb6('0x17')]},'chatCapacity':{'type':Sequelize[_0x5fb6('0x13')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x5fb6('0x13')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x5fb6('0x13')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x5fb6('0x13')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x5fb6('0x13')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x5fb6('0x13')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x5fb6('0x13')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x5fb6('0x13')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'host':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![],'defaultValue':_0x5fb6('0x18')},'ipaddr':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'port':{'type':Sequelize[_0x5fb6('0x13')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x5fb6('0x13')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x5fb6('0x13')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x5fb6('0xe')]('friend',_0x5fb6('0x19'),_0x5fb6('0x1a')),'allowNull':!![],'defaultValue':'friend'},'context':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![],'defaultValue':_0x5fb6('0x1b')},'callingpres':{'type':Sequelize['ENUM'](_0x5fb6('0x1c'),'ALLOWED_PASSED_SCREEN',_0x5fb6('0x1d'),'ALLOWED','PROHIB_NOT_SCREENED',_0x5fb6('0x1e'),_0x5fb6('0x1f'),_0x5fb6('0x20')),'allowNull':!![]},'deny':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'permit':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'secret':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'md5secret':{'type':Sequelize['STRING'],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'transport':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![],'defaultValue':_0x5fb6('0x21'),'set':function(_0x295e93){this[_0x5fb6('0x4')](_0x5fb6('0x22'),_0x295e93?_0x295e93[_0x5fb6('0x23')](','):null);},'get':function(){return this[_0x5fb6('0x9')](_0x5fb6('0x22'))?this[_0x5fb6('0x9')](_0x5fb6('0x22'))['split'](','):null;},'comment':_0x5fb6('0x24')},'dtmfmode':{'type':Sequelize[_0x5fb6('0xe')]('rfc2833',_0x5fb6('0x25'),'shortinfo','inband',_0x5fb6('0x26')),'allowNull':!![],'defaultValue':_0x5fb6('0x27')},'directmedia':{'type':Sequelize[_0x5fb6('0xe')]('yes','no',_0x5fb6('0x28'),'update','outgoing'),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x5fb6('0xe')](_0x5fb6('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'nat':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![],'defaultValue':_0x5fb6('0x2a'),'set':function(_0x3a6f88){this[_0x5fb6('0x4')](_0x5fb6('0x2b'),_0x3a6f88?_0x3a6f88[_0x5fb6('0x23')](','):null);},'get':function(){return this[_0x5fb6('0x9')](_0x5fb6('0x2b'))?this['getDataValue'](_0x5fb6('0x2b'))[_0x5fb6('0x2c')](','):null;},'comment':_0x5fb6('0x2d')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0x5fb6('0xb')]},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0x5fb6('0xb')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x5fb6('0xb')]},'disallow':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':![],'defaultValue':_0x5fb6('0x2e')},'allow':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':![],'defaultValue':_0x5fb6('0x2f'),'set':function(_0x59875a){this[_0x5fb6('0x4')](_0x5fb6('0x30'),_0x59875a?_0x59875a[_0x5fb6('0x23')](';'):_0x5fb6('0x2f'));},'get':function(){return this['getDataValue'](_0x5fb6('0x30'))?this[_0x5fb6('0x9')](_0x5fb6('0x30'))[_0x5fb6('0x2c')](';'):null;},'comment':_0x5fb6('0x31')},'autoframing':{'type':Sequelize[_0x5fb6('0xe')]('yes','no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![],'set':function(_0x18c88c){this[_0x5fb6('0x4')](_0x5fb6('0x32'),_0x18c88c?_0x18c88c[_0x5fb6('0x23')](','):null);},'get':function(){return this[_0x5fb6('0x9')](_0x5fb6('0x32'))?this[_0x5fb6('0x9')](_0x5fb6('0x32'))[_0x5fb6('0x2c')](','):null;},'comment':_0x5fb6('0x33')},'trustrpid':{'type':Sequelize['ENUM'](_0x5fb6('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0x5fb6('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x5fb6('0xe')]('yes','no',_0x5fb6('0x34')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x5fb6('0xe')](_0x5fb6('0x29'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x5fb6('0x13')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![],'defaultValue':_0x5fb6('0x35')},'amaflags':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x5fb6('0xe')](_0x5fb6('0x29'),'no'),'allowNull':!![],'defaultValue':_0x5fb6('0x29')},'busylevel':{'type':Sequelize[_0x5fb6('0x13')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x5fb6('0xe')](_0x5fb6('0x29'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM'](_0x5fb6('0x29'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x5fb6('0xe')](_0x5fb6('0x29'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'template':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x5fb6('0xe')](_0x5fb6('0x29'),'no',_0x5fb6('0x36')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x5fb6('0xe')](_0x5fb6('0x29'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x5fb6('0xe')](_0x5fb6('0x37'),_0x5fb6('0x38'),_0x5fb6('0x39')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x5fb6('0x13')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x5fb6('0x13')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x5fb6('0xe')](_0x5fb6('0x3a'),'uas'),'allowNull':!![],'defaultValue':_0x5fb6('0x3b')},'t38pt_usertpsource':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'regexten':{'type':Sequelize['STRING'],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x5fb6('0xe')](_0x5fb6('0x29'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x5fb6('0x13')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x5fb6('0x13')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM'](_0x5fb6('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING'],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x5fb6('0x13')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x5fb6('0x13')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x5fb6('0x13')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x5fb6('0xe')](_0x5fb6('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x5fb6('0xe')](_0x5fb6('0x29'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x5fb6('0xe')]('yes','no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x5fb6('0xe')]('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x5fb6('0xe')](_0x5fb6('0x29'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x5fb6('0xe')](_0x5fb6('0x29'),'no',_0x5fb6('0x3c'),_0x5fb6('0x3d')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscipher':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x5fb6('0xe')](_0x5fb6('0x3e'),'passive',_0x5fb6('0x3f')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'usereqphone':{'type':Sequelize['ENUM'](_0x5fb6('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING'],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x5fb6('0x13')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize['ENUM'](_0x5fb6('0x29'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x5fb6('0xe')](_0x5fb6('0x29'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x5fb6('0xe')](_0x5fb6('0x29'),'no',_0x5fb6('0x28'),_0x5fb6('0x40'),'update,nonat'),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x5fb6('0xb')]},'resetPasswordExpires':{'type':Sequelize[_0x5fb6('0x17')]},'passwordResetAt':{'type':Sequelize[_0x5fb6('0x17')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x5fb6('0x41')]},'showWebBar':{'type':Sequelize[_0x5fb6('0x13')],'defaultValue':0x0,'set':function(_0x53d30a){this[_0x5fb6('0x4')]('showWebBar',_0x53d30a);var _0x40bdcf=this[_0x5fb6('0x42')]({'plain':!![]});switch(_0x53d30a){case 0x0:case 0x1:var _0x2c5c89=_0x40bdcf[_0x5fb6('0x22')]?_[_0x5fb6('0x43')](_0x40bdcf[_0x5fb6('0x22')])?_0x40bdcf[_0x5fb6('0x22')][_0x5fb6('0x23')]():_0x40bdcf['transport']:'udp';if(_0x2c5c89===_0x5fb6('0x44')){_0x2c5c89=_0x5fb6('0x21');}this[_0x5fb6('0x4')](_0x5fb6('0x22'),_0x2c5c89);this['setDataValue']('encryption','no');this[_0x5fb6('0x4')]('avpf',null);this['setDataValue'](_0x5fb6('0x45'),null);this[_0x5fb6('0x4')](_0x5fb6('0x46'),null);this[_0x5fb6('0x4')](_0x5fb6('0x47'),null);this['setDataValue'](_0x5fb6('0x48'),null);this['setDataValue'](_0x5fb6('0x49'),null);this[_0x5fb6('0x4')](_0x5fb6('0x4a'),null);this[_0x5fb6('0x4')](_0x5fb6('0x4b'),null);this[_0x5fb6('0x4')]('rtcp_mux','no');break;case 0x2:this[_0x5fb6('0x4')](_0x5fb6('0x22'),_0x5fb6('0x44'));this['setDataValue']('encryption','yes');this[_0x5fb6('0x4')](_0x5fb6('0x4c'),_0x5fb6('0x29'));this[_0x5fb6('0x4')](_0x5fb6('0x45'),_0x5fb6('0x29'));this[_0x5fb6('0x4')]('icesupport',_0x5fb6('0x29'));this[_0x5fb6('0x4')](_0x5fb6('0x47'),_0x5fb6('0x29'));this[_0x5fb6('0x4')]('dtlsverify','no');this['setDataValue'](_0x5fb6('0x49'),'actpass');this['setDataValue'](_0x5fb6('0x4a'),_0x40bdcf['dtlscertfile']||'/etc/pki/tls/certs/motion.crt');this['setDataValue'](_0x5fb6('0x4b'),_0x40bdcf[_0x5fb6('0x4b')]||_0x5fb6('0x4d'));this[_0x5fb6('0x4')](_0x5fb6('0x4e'),_0x5fb6('0x29'));break;default:}}},'permissions':{'type':Sequelize[_0x5fb6('0x41')],'set':function(_0x266e7c){this[_0x5fb6('0x4')](_0x5fb6('0x4f'),_0x266e7c?_0x266e7c[_0x5fb6('0x23')](','):[]);},'get':function(){return this[_0x5fb6('0x9')](_0x5fb6('0x4f'))?_[_0x5fb6('0x50')](this[_0x5fb6('0x9')](_0x5fb6('0x4f'))[_0x5fb6('0x2c')](','),function(_0x333976){return parseInt(_0x333976,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize['STRING']},'phoneBarNoReplyNumber':{'type':Sequelize['STRING']},'phoneBarBusyNumber':{'type':Sequelize[_0x5fb6('0xb')]},'phoneBarUnconditional':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x5fb6('0x13')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x5fb6('0xb')],'defaultValue':''},'crudPermissions':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x5fb6('0xe')](_0x5fb6('0x29'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x5fb6('0xb')]},'phoneBarEnableJaws':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this['getDataValue'](_0x5fb6('0x51'))?this[_0x5fb6('0x9')](_0x5fb6('0x51')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':![]},'interface':{'type':Sequelize[_0x5fb6('0xb')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x5fb6('0xb')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':![],'set':function(_0x502646){if(typeof _0x502646==='string'){var _0x4af45b=_0x502646==='1'?!![]:_0x502646==='0'?![]:_0x502646===_0x5fb6('0x52')?!![]:_0x502646===_0x5fb6('0x53')?![]:![];this[_0x5fb6('0x4')](_0x5fb6('0x54'),_0x4af45b);}else{this[_0x5fb6('0x4')]('screenrecording',_0x502646);}}},'blocked':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':![],'set':function(_0x519101){this[_0x5fb6('0x4')](_0x5fb6('0x55'),_0x519101);if(_0x519101===!![]){this['setDataValue'](_0x5fb6('0x56'),moment());this['setDataValue'](_0x5fb6('0x57'),0x0);}else{this[_0x5fb6('0x4')](_0x5fb6('0x56'),null);}}},'blockedAt':{'type':Sequelize[_0x5fb6('0x17')],'defaultValue':null},'loginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x5fb6('0x13')](0x5)[_0x5fb6('0x58')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x5fb6('0x16')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x5785=['loginAttempts','UNSIGNED','sequelize','moment','util','lodash','exports','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','STRING','callerid','format','getDataValue','email','ENUM','admin','user','agent','telephone','local','INTEGER','internal','accountcode','\x22%s\x22\x20<%s>','fullname','BOOLEAN','DATE','DEFAULT\x20PAUSE','dynamic','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','udp','transport','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','shortinfo','inband','yes','nonat','outgoing','force_rport,comedia','join','nat','all','ulaw;alaw;gsm','allow','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<>','accept','originate','uas','fingerprint','certificate','active','passive','actpass','update','update,nonat','showWebBar','wss','encryption','avpf','force_avp','dtlsverify','dtlssetup','dtlsprivatekey','rtcp_mux','dtlscertfile','/etc/pki/tls/certs/motion.crt','TEXT','permissions','map','split','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blocked','blockedAt'];(function(_0x87b0ff,_0x314389){var _0x3bc0b2=function(_0x41682b){while(--_0x41682b){_0x87b0ff['push'](_0x87b0ff['shift']());}};_0x3bc0b2(++_0x314389);}(_0x5785,0x119));var _0x5578=function(_0x4a53d,_0x58a95e){_0x4a53d=_0x4a53d-0x0;var _0x27410e=_0x5785[_0x4a53d];return _0x27410e;};'use strict';var Sequelize=require(_0x5578('0x0'));var moment=require(_0x5578('0x1'));var util=require(_0x5578('0x2'));var _=require(_0x5578('0x3'));module[_0x5578('0x4')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x5578('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x2a3b8a){this[_0x5578('0x6')](_0x5578('0x5'),_0x2a3b8a);this[_0x5578('0x6')](_0x5578('0x7'),_0x2a3b8a);},'comment':_0x5578('0x8')},'fullname':{'type':Sequelize[_0x5578('0x9')],'allowNull':![],'set':function(_0x464ab2){this[_0x5578('0x6')]('fullname',_0x464ab2);this[_0x5578('0x6')](_0x5578('0xa'),util[_0x5578('0xb')]('\x22%s\x22\x20<%s>',_0x464ab2,this[_0x5578('0xc')]('internal')));}},'alias':{'type':Sequelize[_0x5578('0x9')]},'email':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x5578('0xd'),'validate':{'isEmail':!![]},'set':function(_0x3fcf85){if(_0x3fcf85){this[_0x5578('0x6')]('email',_0x3fcf85['toLowerCase']());}}},'role':{'type':Sequelize[_0x5578('0xe')](_0x5578('0xf'),_0x5578('0x10'),_0x5578('0x11'),_0x5578('0x12')),'allowNull':![]},'password':{'type':Sequelize[_0x5578('0x9')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x5578('0x9')],'defaultValue':_0x5578('0x13')},'internal':{'type':Sequelize[_0x5578('0x14')](0xb),'allowNull':![],'unique':_0x5578('0x15'),'set':function(_0x4f6d2a){this[_0x5578('0x6')](_0x5578('0x15'),_0x4f6d2a);this[_0x5578('0x6')](_0x5578('0x16'),_0x4f6d2a);this[_0x5578('0x6')](_0x5578('0xa'),util[_0x5578('0xb')](_0x5578('0x17'),this[_0x5578('0xc')](_0x5578('0x18')),_0x4f6d2a));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x5578('0x9')]},'mobile':{'type':Sequelize[_0x5578('0x9')]},'address':{'type':Sequelize['STRING']},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize[_0x5578('0x9')]},'city':{'type':Sequelize[_0x5578('0x9')]},'country':{'type':Sequelize['STRING']},'online':{'type':Sequelize[_0x5578('0x19')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x5578('0x1a')]},'voicePause':{'type':Sequelize[_0x5578('0x19')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x5578('0x19')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x5578('0x19')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x5578('0x19')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x5578('0x19')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x5578('0x19')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x5578('0x19')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x5578('0x9')],'defaultValue':_0x5578('0x1b')},'lastPauseAt':{'type':Sequelize[_0x5578('0x1a')]},'chatCapacity':{'type':Sequelize[_0x5578('0x14')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x5578('0x14')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x5578('0x14')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x5578('0x14')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x5578('0x19')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x5578('0x19')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x5578('0x14')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x5578('0x14')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x5578('0x19')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x5578('0x19')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'host':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x5578('0x1c')},'ipaddr':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'port':{'type':Sequelize[_0x5578('0x14')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'useragent':{'type':Sequelize['STRING'],'allowNull':!![]},'lastms':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x5578('0xe')](_0x5578('0x1d'),_0x5578('0x10'),_0x5578('0x1e')),'allowNull':!![],'defaultValue':_0x5578('0x1d')},'context':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x5578('0x1f')},'callingpres':{'type':Sequelize[_0x5578('0xe')](_0x5578('0x20'),_0x5578('0x21'),_0x5578('0x22'),_0x5578('0x23'),_0x5578('0x24'),_0x5578('0x25'),'PROHIB_FAILED_SCREEN','PROHIB'),'allowNull':!![]},'deny':{'type':Sequelize['STRING'],'allowNull':!![]},'permit':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'secret':{'type':Sequelize['STRING'],'allowNull':!![]},'md5secret':{'type':Sequelize['STRING'],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'transport':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x5578('0x26'),'set':function(_0x30af8a){this[_0x5578('0x6')](_0x5578('0x27'),_0x30af8a?_0x30af8a['join'](','):null);},'get':function(){return this[_0x5578('0xc')](_0x5578('0x27'))?this[_0x5578('0xc')](_0x5578('0x27'))['split'](','):null;},'comment':_0x5578('0x28')},'dtmfmode':{'type':Sequelize[_0x5578('0xe')](_0x5578('0x29'),'info',_0x5578('0x2a'),_0x5578('0x2b'),'auto'),'allowNull':!![],'defaultValue':_0x5578('0x29')},'directmedia':{'type':Sequelize['ENUM'](_0x5578('0x2c'),'no',_0x5578('0x2d'),'update',_0x5578('0x2e')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x5578('0xe')](_0x5578('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'directmediadeny':{'type':Sequelize['STRING'],'allowNull':!![]},'nat':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![],'defaultValue':_0x5578('0x2f'),'set':function(_0x4772ff){this[_0x5578('0x6')]('nat',_0x4772ff?_0x4772ff[_0x5578('0x30')](','):null);},'get':function(){return this[_0x5578('0xc')](_0x5578('0x31'))?this['getDataValue'](_0x5578('0x31'))['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0x5578('0x9')]},'namedcallgroup':{'type':Sequelize[_0x5578('0x9')]},'pickupgroup':{'type':Sequelize[_0x5578('0x9')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x5578('0x9')]},'disallow':{'type':Sequelize[_0x5578('0x9')],'allowNull':![],'defaultValue':_0x5578('0x32')},'allow':{'type':Sequelize[_0x5578('0x9')],'allowNull':![],'defaultValue':_0x5578('0x33'),'set':function(_0x5a3c64){this['setDataValue'](_0x5578('0x34'),_0x5a3c64?_0x5a3c64['join'](';'):'ulaw;alaw;gsm');},'get':function(){return this[_0x5578('0xc')](_0x5578('0x34'))?this[_0x5578('0xc')](_0x5578('0x34'))['split'](';'):null;},'comment':_0x5578('0x35')},'autoframing':{'type':Sequelize[_0x5578('0xe')](_0x5578('0x2c'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![],'set':function(_0x264bf8){this['setDataValue'](_0x5578('0x36'),_0x264bf8?_0x264bf8[_0x5578('0x30')](','):null);},'get':function(){return this['getDataValue'](_0x5578('0x36'))?this[_0x5578('0xc')](_0x5578('0x36'))['split'](','):null;},'comment':_0x5578('0x37')},'trustrpid':{'type':Sequelize[_0x5578('0xe')](_0x5578('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x5578('0xe')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x5578('0xe')](_0x5578('0x2c'),'no',_0x5578('0x38')),'allowNull':!![]},'promiscredir':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x5578('0xe')](_0x5578('0x2c'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![],'defaultValue':_0x5578('0x39')},'amaflags':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x5578('0xe')](_0x5578('0x2c'),'no'),'allowNull':!![],'defaultValue':_0x5578('0x2c')},'busylevel':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize['ENUM'](_0x5578('0x2c'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x5578('0xe')]('yes','no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM'](_0x5578('0x2c'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x5578('0xe')](_0x5578('0x2c'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'template':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x5578('0xe')]('yes','no','always'),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x5578('0x14')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x5578('0xe')](_0x5578('0x2c'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x5578('0xe')](_0x5578('0x3a'),'refuse',_0x5578('0x3b')),'allowNull':!![]},'session_expires':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x5578('0x14')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize['ENUM']('uac',_0x5578('0x3c')),'allowNull':!![],'defaultValue':_0x5578('0x3c')},'t38pt_usertpsource':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'regexten':{'type':Sequelize['STRING'],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x5578('0xe')](_0x5578('0x2c'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x5578('0x14')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x5578('0x14')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x5578('0x14')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x5578('0xe')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x5578('0x14')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x5578('0x14')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x5578('0x14')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x5578('0x14')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x5578('0xe')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0x5578('0x2c'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x5578('0xe')](_0x5578('0x2c'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x5578('0xe')](_0x5578('0x2c'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x5578('0xe')](_0x5578('0x2c'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x5578('0xe')]('yes','no',_0x5578('0x3d'),_0x5578('0x3e')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x5578('0x14')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'dtlscafile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x5578('0xe')](_0x5578('0x3f'),_0x5578('0x40'),_0x5578('0x41')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING'],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x5578('0xe')](_0x5578('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING'],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x5578('0x14')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x5578('0xe')](_0x5578('0x2c'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize['STRING'],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'canreinvite':{'type':Sequelize['ENUM'](_0x5578('0x2c'),'no',_0x5578('0x2d'),_0x5578('0x42'),_0x5578('0x43')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x5578('0x19')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x5578('0x9')]},'resetPasswordExpires':{'type':Sequelize['DATE']},'passwordResetAt':{'type':Sequelize[_0x5578('0x1a')],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize[_0x5578('0x14')],'defaultValue':0x0,'set':function(_0x43aa25){this[_0x5578('0x6')](_0x5578('0x44'),_0x43aa25);var _0xd69f9=this['get']({'plain':!![]});switch(_0x43aa25){case 0x0:case 0x1:var _0x3a3137=_0xd69f9['transport']?_['isArray'](_0xd69f9[_0x5578('0x27')])?_0xd69f9[_0x5578('0x27')][_0x5578('0x30')]():_0xd69f9['transport']:_0x5578('0x26');if(_0x3a3137===_0x5578('0x45')){_0x3a3137=_0x5578('0x26');}this[_0x5578('0x6')]('transport',_0x3a3137);this['setDataValue'](_0x5578('0x46'),'no');this[_0x5578('0x6')](_0x5578('0x47'),null);this['setDataValue'](_0x5578('0x48'),null);this[_0x5578('0x6')]('icesupport',null);this[_0x5578('0x6')]('dtlsenable',null);this[_0x5578('0x6')](_0x5578('0x49'),null);this[_0x5578('0x6')](_0x5578('0x4a'),null);this[_0x5578('0x6')]('dtlscertfile',null);this[_0x5578('0x6')](_0x5578('0x4b'),null);this[_0x5578('0x6')](_0x5578('0x4c'),'no');break;case 0x2:this['setDataValue'](_0x5578('0x27'),_0x5578('0x45'));this['setDataValue'](_0x5578('0x46'),_0x5578('0x2c'));this[_0x5578('0x6')]('avpf',_0x5578('0x2c'));this[_0x5578('0x6')](_0x5578('0x48'),_0x5578('0x2c'));this[_0x5578('0x6')]('icesupport',_0x5578('0x2c'));this[_0x5578('0x6')]('dtlsenable','yes');this[_0x5578('0x6')](_0x5578('0x49'),'no');this[_0x5578('0x6')](_0x5578('0x4a'),_0x5578('0x41'));this[_0x5578('0x6')]('dtlscertfile',_0xd69f9[_0x5578('0x4d')]||_0x5578('0x4e'));this[_0x5578('0x6')]('dtlsprivatekey',_0xd69f9['dtlsprivatekey']||'/etc/pki/tls/private/motion.key');this[_0x5578('0x6')](_0x5578('0x4c'),_0x5578('0x2c'));break;default:}}},'permissions':{'type':Sequelize[_0x5578('0x4f')],'set':function(_0x2eafb4){this[_0x5578('0x6')](_0x5578('0x50'),_0x2eafb4?_0x2eafb4[_0x5578('0x30')](','):[]);},'get':function(){return this[_0x5578('0xc')](_0x5578('0x50'))?_[_0x5578('0x51')](this[_0x5578('0xc')]('permissions')[_0x5578('0x52')](','),function(_0x1b53c6){return parseInt(_0x1b53c6,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x5578('0x9')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x5578('0x9')]},'phoneBarBusyNumber':{'type':Sequelize[_0x5578('0x9')]},'phoneBarUnconditional':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x5578('0x19')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x5578('0x19')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x5578('0x19')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x5578('0x19')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x5578('0x14')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x5578('0x9')],'defaultValue':''},'crudPermissions':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize['ENUM'](_0x5578('0x2c'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x5578('0x19')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize['STRING']},'phoneBarEnableJaws':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x5578('0x19')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x5578('0x53')],'get':function(){return this[_0x5578('0xc')](_0x5578('0x54'))?this[_0x5578('0xc')](_0x5578('0x54')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x5578('0x19')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x5578('0x19')],'defaultValue':![]},'interface':{'type':Sequelize[_0x5578('0x9')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x5578('0x19')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x5578('0x9')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x5578('0x19')],'defaultValue':![],'set':function(_0x39a500){if(typeof _0x39a500===_0x5578('0x55')){var _0x2c0c9e=_0x39a500==='1'?!![]:_0x39a500==='0'?![]:_0x39a500===_0x5578('0x56')?!![]:_0x39a500===_0x5578('0x57')?![]:![];this['setDataValue'](_0x5578('0x58'),_0x2c0c9e);}else{this['setDataValue'](_0x5578('0x58'),_0x39a500);}}},'blocked':{'type':Sequelize[_0x5578('0x19')],'defaultValue':![],'set':function(_0x4661ec){this[_0x5578('0x6')](_0x5578('0x59'),_0x4661ec);if(_0x4661ec===!![]){this['setDataValue'](_0x5578('0x5a'),moment());this[_0x5578('0x6')](_0x5578('0x5b'),0x0);}else{this['setDataValue'](_0x5578('0x5a'),null);}}},'blockedAt':{'type':Sequelize[_0x5578('0x1a')],'defaultValue':null},'loginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x5578('0x19')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x5578('0x19')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x5578('0x14')](0x5)[_0x5578('0x5c')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x5578('0x19')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x5578('0x19')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x5578('0x19')],'defaultValue':!![]}};
\ No newline at end of file
index cf6ad39..e2b1a70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f4c=['checkUserLimits','settingsEnabled','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','each','create','isEmpty','compact','changePassword','oldPassword','Sequelize','ValidationError','Wrong\x20credentials','newPassword','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','previousPasswords','passwordHistoryLimit','addQueues','channel','loginInPause','voicePause','interface','isValidChannel','Unknown\x20channel','add','toLowerCase','Queues','ids','penalty','spread','capitalize','QueueId','emit','voice','VoiceQueue','get','online','format','SIP/%s','remove','isArray','Queue:remove','filename','join','root','server/files/images/logos/default_profile.png','userpic','download','server/files/images/','fax','mail','ChatOpenTabs','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','CmContact','order','sort','pick','merge','getContacts','hasOwnProperty','CmList','List','Tag','tag','nolimit','getQueues','findAll','Unknown\x20role','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','UserId','VoiceRecording','getScreenRecordings','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','FaxInteraction','getWhatsappInteractions','phone','intrf','user:%s','user:forcelogout','x-forwarded-for','connection','remoteAddress','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','UserVoiceQueueRt','upsert','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','PAUSE','concat','update','LOGININPAUSE','isMiddleware','resolve','logout','pause','QueuePause','updateAttributes','DEFAULT\x20PAUSE','unpause','mailPause','faxPause','openchannelPause','smsPause','whatsapppause','pauseType','lastPauseAt','manual','Pause','getTeams','addTeams','omit','Team','setDataValue','Voice','getChatQueues','Chat','getMailQueues','getSmsQueues','Sms','getWhatsappQueues','Whatsapp','getFaxQueues','flatten','transaction','addAgent','getDataValue','Queue:save','Mail','Fax','Openchannel','removeAgent','getLists','values','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','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','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','OpenchannelAccount','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','getScheduledCalls','$and','$or','$gte','$lt','$lte','$eq','$not','$between','$notBetween','$in','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$any','CmHopper','Contact','dialActive','Queue','getApiKey','retrieveApiKey','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','iat','token','removeApiKey','apiKeyIat','API\x20key\x20not\x20available','whoami','getPresence','queues','teams','inbound','getAgents','col','asc','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','unavailable','voiceStatus','slice','charAt','QueryTypes','select','field','InteractionId','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','toString','OpenTabs','moment','bluebird','util','path','lodash','squel','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../mysqldb','redis','./user.socket','register','defaults','localhost','client','http','request','then','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','destroy','admin','Users','user','Agents','agent','Telephones','telephone','filter','ignore','map','value','includes','find','name','UserProfileResource','stack','send','index','User','rawAttributes','fieldName','type','key','password','salt','getOptions','where','query','includeAll','include','attributes','push','rows','openTabs','true','length','chat','dataValues','openchannel','whatsapp','params','model','differenceBy','keys','filters','intersection','fields','options','sms','all','body','role','describe','addContacts','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','SELECT','from','voicemail','VoiceMail','fullname','email','permissions','101','103','113','110','104','107','109','111','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x8f4c,0x113));var _0xc8f4=function(_0x599648,_0x47dd38){_0x599648=_0x599648-0x0;var _0x5cb893=_0x8f4c[_0x599648];return _0x5cb893;};'use strict';var moment=require(_0xc8f4('0x0'));var BPromise=require(_0xc8f4('0x1'));var util=require(_0xc8f4('0x2'));var path=require(_0xc8f4('0x3'));var fs=require('fs');var _=require(_0xc8f4('0x4'));var squel=require(_0xc8f4('0x5'));var jayson=require('jayson/promise');var Redis=require(_0xc8f4('0x6'));var authService=require(_0xc8f4('0x7'));var qs=require(_0xc8f4('0x8'));var logger=require('../../config/logger')(_0xc8f4('0x9'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xc8f4('0xa'))['db'];var socket=require('socket.io-emitter')(new Redis(config[_0xc8f4('0xb')]));require(_0xc8f4('0xc'))[_0xc8f4('0xd')](socket);config[_0xc8f4('0xb')]=_[_0xc8f4('0xe')](config['redis'],{'host':_0xc8f4('0xf'),'port':0x18eb});var client=jayson[_0xc8f4('0x10')][_0xc8f4('0x11')]({'port':0x232a});var values;function respondWithRpcPromise(_0x3a2f8a,_0x4fd453,_0x26f83,_0x52c699){return new BPromise(function(_0x430009,_0xf07a92){var _0x45ed6b=_0x52c699||client;return _0x45ed6b[_0xc8f4('0x12')](_0x3a2f8a,_0x26f83)[_0xc8f4('0x13')](function(_0x4e31cf){logger[_0xc8f4('0x14')](_0xc8f4('0x15'),_0x4fd453,_0xc8f4('0x16'));logger[_0xc8f4('0x17')](_0xc8f4('0x18'),_0x4fd453,_0xc8f4('0x16'),JSON['stringify'](_0x4e31cf));if(_0x4e31cf[_0xc8f4('0x19')]){if(_0x4e31cf[_0xc8f4('0x19')][_0xc8f4('0x1a')]===0x1f4){logger[_0xc8f4('0x19')](_0xc8f4('0x15'),_0x4fd453,_0x4e31cf['error'][_0xc8f4('0x1b')]);return _0xf07a92(_0x4e31cf['error']['message']);}logger[_0xc8f4('0x19')](_0xc8f4('0x15'),_0x4fd453,_0x4e31cf[_0xc8f4('0x19')][_0xc8f4('0x1b')]);return _0x430009(_0x4e31cf[_0xc8f4('0x19')][_0xc8f4('0x1b')]);}else{logger[_0xc8f4('0x14')](_0xc8f4('0x15'),_0x4fd453,_0xc8f4('0x16'));_0x430009(_0x4e31cf[_0xc8f4('0x1c')][_0xc8f4('0x1b')]);}})[_0xc8f4('0x1d')](function(_0x22236c){logger['error'](_0xc8f4('0x15'),_0x4fd453,_0x22236c);_0xf07a92(_0x22236c);});});}function respondWithStatusCode(_0x5c520,_0x29e52d){_0x29e52d=_0x29e52d||0xcc;return function(_0x208bcb){if(_0x208bcb){return _0x5c520[_0xc8f4('0x1e')](_0x29e52d);}return _0x5c520[_0xc8f4('0x1f')](_0x29e52d)[_0xc8f4('0x20')]();};}function respondWithResult(_0x43eb57,_0x5e62aa){_0x5e62aa=_0x5e62aa||0xc8;return function(_0x4463aa){if(_0x4463aa){return _0x43eb57[_0xc8f4('0x1f')](_0x5e62aa)[_0xc8f4('0x21')](_0x4463aa);}};}function respondWithFilteredResult(_0x1d159e,_0x5d54a9){return function(_0x39174f){if(_0x39174f){var _0x4a44e0=typeof _0x5d54a9[_0xc8f4('0x22')]==='undefined'&&typeof _0x5d54a9[_0xc8f4('0x23')]===_0xc8f4('0x24');var _0x5c94c6=_0x39174f[_0xc8f4('0x25')];var _0x21062f=_0x4a44e0?0x0:_0x5d54a9[_0xc8f4('0x22')];var _0x2fa052=_0x4a44e0?_0x39174f['count']:_0x5d54a9[_0xc8f4('0x22')]+_0x5d54a9[_0xc8f4('0x23')];var _0x5db666;if(_0x2fa052>=_0x5c94c6){_0x2fa052=_0x5c94c6;_0x5db666=0xc8;}else{_0x5db666=0xce;}_0x1d159e[_0xc8f4('0x1f')](_0x5db666);return _0x1d159e[_0xc8f4('0x26')](_0xc8f4('0x27'),_0x21062f+'-'+_0x2fa052+'/'+_0x5c94c6)[_0xc8f4('0x21')](_0x39174f);}return null;};}function saveUpdates(_0x24bef0){return function(_0x385e41){if(_0x385e41){return _0x385e41['update'](_0x24bef0)[_0xc8f4('0x13')](function(_0x24bb78){return _0x24bb78;});}return null;};}function removeEntity(_0x1ea3d9){return function(_0x4dcd8f){if(_0x4dcd8f){return _0x4dcd8f[_0xc8f4('0x28')]()[_0xc8f4('0x13')](function(){var _0x5ab6cb=_0x4dcd8f['get']({'plain':!![]});if(_0x5ab6cb['role']===_0xc8f4('0x29'))return;var _0x323432=[{'name':_0xc8f4('0x2a'),'value':_0xc8f4('0x2b'),'ignore':!![]},{'name':_0xc8f4('0x2c'),'value':_0xc8f4('0x2d'),'ignore':![]},{'name':_0xc8f4('0x2e'),'value':_0xc8f4('0x2f'),'ignore':![]}];var _0x4b4203=_(_0x323432)[_0xc8f4('0x30')](_0xc8f4('0x31'))[_0xc8f4('0x32')]('value')[_0xc8f4('0x33')]();if(_[_0xc8f4('0x34')](_0x4b4203,_0x5ab6cb['role'])){return;}var _0x1295b0=_[_0xc8f4('0x35')](_0x323432,[_0xc8f4('0x33'),_0x5ab6cb['role']])[_0xc8f4('0x36')];return db[_0xc8f4('0x37')][_0xc8f4('0x28')]({'where':{'type':_0x1295b0,'resourceId':_0x5ab6cb['id']}})['then'](function(){return _0x4dcd8f;});})[_0xc8f4('0x13')](function(){_0x1ea3d9[_0xc8f4('0x1f')](0xcc)[_0xc8f4('0x20')]();});}};}function handleEntityNotFound(_0x1f8ef6){return function(_0x215203){if(!_0x215203){_0x1f8ef6[_0xc8f4('0x1e')](0x194);}return _0x215203;};}function handleError(_0xeacb80,_0x287ece){_0x287ece=_0x287ece||0x1f4;return function(_0x2da6ab){logger[_0xc8f4('0x19')](_0x2da6ab[_0xc8f4('0x38')]);if(_0x2da6ab[_0xc8f4('0x36')]){delete _0x2da6ab[_0xc8f4('0x36')];}_0xeacb80[_0xc8f4('0x1f')](_0x287ece)[_0xc8f4('0x39')](_0x2da6ab);};}exports[_0xc8f4('0x3a')]=function(_0x520c16,_0x3a8cac){var _0x5424cc={},_0x7d06d3={'count':0x0,'rows':[]};var _0x51bfe6=_(db[_0xc8f4('0x3b')][_0xc8f4('0x3c')])[_0xc8f4('0x32')](function(_0x19db80){return{'name':_0x19db80[_0xc8f4('0x3d')],'type':_0x19db80[_0xc8f4('0x3e')][_0xc8f4('0x3f')]};})['filter'](function(_0x3a3cdc){return!_[_0xc8f4('0x34')]([_0xc8f4('0x40'),_0xc8f4('0x41')],_0x3a3cdc['name']);})[_0xc8f4('0x33')]();_0x5424cc=qs[_0xc8f4('0x42')](_0x51bfe6,_0x520c16);var _0x2a72a9={'where':_0x5424cc[_0xc8f4('0x43')]};return db[_0xc8f4('0x3b')][_0xc8f4('0x25')](_0x2a72a9)[_0xc8f4('0x13')](function(_0x330a08){_0x7d06d3[_0xc8f4('0x25')]=_0x330a08;if(_0x520c16[_0xc8f4('0x44')][_0xc8f4('0x45')]){_0x5424cc[_0xc8f4('0x46')]=[{'all':!![]}];}if(!_['includes'](_0x5424cc[_0xc8f4('0x47')],'id')){_0x5424cc[_0xc8f4('0x47')][_0xc8f4('0x48')]('id');}return db[_0xc8f4('0x3b')]['findAll'](_0x5424cc);})['then'](function(_0x413a55){_0x7d06d3[_0xc8f4('0x49')]=_0x413a55;if(_0x520c16['query'][_0xc8f4('0x4a')]===_0xc8f4('0x4b')){var _0x530b69=[];for(var _0x5a85bb=0x0;_0x5a85bb<_0x7d06d3[_0xc8f4('0x49')][_0xc8f4('0x4c')];_0x5a85bb++){_0x530b69[_0xc8f4('0x48')](get_open_tabs(_0xc8f4('0x4d'),_0x7d06d3[_0xc8f4('0x49')][_0x5a85bb][_0xc8f4('0x4e')]));_0x530b69['push'](get_open_tabs('sms',_0x7d06d3[_0xc8f4('0x49')][_0x5a85bb][_0xc8f4('0x4e')]));_0x530b69[_0xc8f4('0x48')](get_open_tabs('fax',_0x7d06d3['rows'][_0x5a85bb]['dataValues']));_0x530b69['push'](get_open_tabs('mail',_0x7d06d3[_0xc8f4('0x49')][_0x5a85bb][_0xc8f4('0x4e')]));_0x530b69[_0xc8f4('0x48')](get_open_tabs(_0xc8f4('0x4f'),_0x7d06d3[_0xc8f4('0x49')][_0x5a85bb][_0xc8f4('0x4e')]));_0x530b69['push'](get_open_tabs(_0xc8f4('0x50'),_0x7d06d3[_0xc8f4('0x49')][_0x5a85bb]['dataValues']));}return BPromise['all'](_0x530b69)[_0xc8f4('0x13')](function(_0x82a5e){return _0x7d06d3;});}else{return _0x7d06d3;}})[_0xc8f4('0x13')](respondWithFilteredResult(_0x3a8cac,_0x5424cc))[_0xc8f4('0x1d')](handleError(_0x3a8cac,null));};exports['show']=function(_0x4e164e,_0xe1dd97){var _0x15881f={'raw':![],'where':{'id':_0x4e164e[_0xc8f4('0x51')]['id']}},_0x162316={};_0x162316[_0xc8f4('0x52')]=_[_0xc8f4('0x53')](_['keys'](db['User'][_0xc8f4('0x3c')]),[_0xc8f4('0x40'),_0xc8f4('0x41')]);_0x162316[_0xc8f4('0x44')]=_[_0xc8f4('0x54')](_0x4e164e[_0xc8f4('0x44')]);_0x162316[_0xc8f4('0x55')]=_[_0xc8f4('0x56')](_0x162316[_0xc8f4('0x52')],_0x162316['query']);_0x15881f['attributes']=_[_0xc8f4('0x56')](_0x162316[_0xc8f4('0x52')],qs[_0xc8f4('0x57')](_0x4e164e[_0xc8f4('0x44')][_0xc8f4('0x57')]));_0x15881f[_0xc8f4('0x47')]=_0x15881f[_0xc8f4('0x47')][_0xc8f4('0x4c')]?_0x15881f[_0xc8f4('0x47')]:_0x162316[_0xc8f4('0x52')];if(_0x4e164e[_0xc8f4('0x44')][_0xc8f4('0x45')]){_0x15881f[_0xc8f4('0x46')]=[{'all':!![]}];}_0x15881f=_['merge']({},_0x15881f,_0x4e164e[_0xc8f4('0x58')]);if(!_[_0xc8f4('0x34')](_0x15881f[_0xc8f4('0x47')],'id')){_0x15881f[_0xc8f4('0x47')]['push']('id');}return db[_0xc8f4('0x3b')][_0xc8f4('0x35')](_0x15881f)['then'](handleEntityNotFound(_0xe1dd97,null))['then'](function(_0x405391){var _0x5cc52d=[];values=_0x405391;if(_0x4e164e[_0xc8f4('0x44')][_0xc8f4('0x4a')]===_0xc8f4('0x4b')){_0x5cc52d[_0xc8f4('0x48')](get_open_tabs(_0xc8f4('0x4d'),_0x405391[_0xc8f4('0x4e')]));_0x5cc52d[_0xc8f4('0x48')](get_open_tabs(_0xc8f4('0x59'),_0x405391[_0xc8f4('0x4e')]));_0x5cc52d[_0xc8f4('0x48')](get_open_tabs(_0xc8f4('0x4f'),_0x405391['dataValues']));_0x5cc52d[_0xc8f4('0x48')](get_open_tabs(_0xc8f4('0x50'),_0x405391[_0xc8f4('0x4e')]));_0x5cc52d[_0xc8f4('0x48')](get_open_tabs('fax',_0x405391[_0xc8f4('0x4e')]));_0x5cc52d['push'](get_open_tabs('mail',_0x405391[_0xc8f4('0x4e')]));return BPromise[_0xc8f4('0x5a')](_0x5cc52d);}else{return values;}})[_0xc8f4('0x13')](function(_0x39cb77){return values;})[_0xc8f4('0x13')](respondWithResult(_0xe1dd97,null))[_0xc8f4('0x1d')](handleError(_0xe1dd97,null));};exports['update']=function(_0x562e89,_0x45fb1a){if(_0x562e89[_0xc8f4('0x5b')]['id']){delete _0x562e89[_0xc8f4('0x5b')]['id'];}delete _0x562e89[_0xc8f4('0x5b')][_0xc8f4('0x5c')];return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x562e89['params']['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x45fb1a,null))[_0xc8f4('0x13')](saveUpdates(_0x562e89['body'],null))[_0xc8f4('0x13')](respondWithResult(_0x45fb1a,null))[_0xc8f4('0x1d')](handleError(_0x45fb1a,null));};exports[_0xc8f4('0x5d')]=function(_0x5b8bf4,_0x368798){return db[_0xc8f4('0x3b')][_0xc8f4('0x5d')]()['then'](respondWithResult(_0x368798,null))[_0xc8f4('0x1d')](handleError(_0x368798,null));};exports[_0xc8f4('0x5e')]=function(_0x4d0aaf,_0x52e295){return db[_0xc8f4('0x3b')]['find']({'where':{'id':_0x4d0aaf[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x52e295,null))['then'](function(_0x5f2781){if(_0x5f2781){return _0x5f2781['addContacts'](_0x4d0aaf['body']['ids'],_['omit'](_0x4d0aaf[_0xc8f4('0x5b')],['ids','id'])||{});}})[_0xc8f4('0x13')](respondWithResult(_0x52e295,null))[_0xc8f4('0x1d')](handleError(_0x52e295,null));};function validateUser(_0x16a3cc){return new BPromise(function(_0x29231d,_0x5ea840){if(_0x16a3cc[_0xc8f4('0x5f')])return _0x29231d(_0x16a3cc);return db[_0xc8f4('0x60')][_0xc8f4('0x61')](0x1)[_0xc8f4('0x13')](function(_0x4ae72e){if(_0x4ae72e[_0xc8f4('0x62')])authService[_0xc8f4('0x63')](_0x16a3cc[_0xc8f4('0x40')]);db[_0xc8f4('0x3b')]['max'](_0xc8f4('0x5f'))[_0xc8f4('0x13')](function(_0x4f2bf9){if(_[_0xc8f4('0x64')](_0x4f2bf9)){_0x16a3cc[_0xc8f4('0x5f')]=_0x4ae72e[_0xc8f4('0x65')]||0x1;return;}if(_[_0xc8f4('0x64')](_0x4ae72e[_0xc8f4('0x65')])||_0x4ae72e[_0xc8f4('0x65')]===_0x4f2bf9){_0x16a3cc['internal']=_0x4f2bf9+0x1;return;}if(_0x4ae72e[_0xc8f4('0x65')]>_0x4f2bf9){_0x16a3cc[_0xc8f4('0x5f')]=_0x4ae72e[_0xc8f4('0x65')];return;}return db['sequelize'][_0xc8f4('0x44')](_0xc8f4('0x66'),{'type':db[_0xc8f4('0x67')]['QueryTypes'][_0xc8f4('0x68')]})[_0xc8f4('0x13')](function(_0x482cfd){if(_0x482cfd&&_0x482cfd[_0xc8f4('0x4c')]){for(var _0x5bf089=0x0,_0x8c8e43=_0x482cfd[_0xc8f4('0x4c')];_0x5bf089<_0x8c8e43&&_['isNil'](_0x16a3cc[_0xc8f4('0x5f')]);_0x5bf089++){if(_0x4ae72e[_0xc8f4('0x65')]<=_0x482cfd[_0x5bf089]['from']){_0x16a3cc[_0xc8f4('0x5f')]=_0x482cfd[_0x5bf089][_0xc8f4('0x69')];}else if(_0x4ae72e[_0xc8f4('0x65')]>_0x482cfd[_0x5bf089][_0xc8f4('0x69')]&&_0x4ae72e[_0xc8f4('0x65')]<=_0x482cfd[_0x5bf089]['to']){_0x16a3cc[_0xc8f4('0x5f')]=_0x4ae72e[_0xc8f4('0x65')];}}}if(_[_0xc8f4('0x64')](_0x16a3cc['internal'])){_0x16a3cc[_0xc8f4('0x5f')]=_0x4f2bf9+0x1;}return _0x29231d(_0x16a3cc);});});})[_0xc8f4('0x1d')](function(_0x39e94e){_0x5ea840(_0x39e94e);});});}function updateUser(_0xd85d11){return new BPromise(function(_0xdc64f3,_0x4ad77a){try{if(_0xd85d11[_0xc8f4('0x6a')]){_0xd85d11['mailbox']=_0xd85d11[_0xc8f4('0x5f')];_0xd85d11[_0xc8f4('0x6b')]={'mailbox':_0xd85d11[_0xc8f4('0x5f')],'password':_0xd85d11[_0xc8f4('0x40')],'fullname':_0xd85d11[_0xc8f4('0x6c')],'email':_0xd85d11[_0xc8f4('0x6d')]};}if(_0xd85d11[_0xc8f4('0x5c')]===_0xc8f4('0x2d')){if(!_0xd85d11[_0xc8f4('0x6e')])_0xd85d11[_0xc8f4('0x6e')]=[_0xc8f4('0x6f'),'102',_0xc8f4('0x70'),_0xc8f4('0x71'),_0xc8f4('0x72'),_0xc8f4('0x73'),'105','106',_0xc8f4('0x74'),'108',_0xc8f4('0x75'),'100',_0xc8f4('0x76'),'114','115'];}_0xdc64f3(_0xd85d11);}catch(_0x4a1cac){_0x4ad77a(_0x4a1cac);}});}exports['create']=function(_0x5eab20,_0x47eff5){if(_0x5eab20[_0xc8f4('0x2b')]['role']===_0xc8f4('0x2d'))throw new Error(_0xc8f4('0x77'));if(_0x5eab20[_0xc8f4('0x5b')][_0xc8f4('0x5c')]===_0xc8f4('0x2b')&&_0x5eab20['user'][_0xc8f4('0x5c')]!==_0xc8f4('0x29')){throw new Error(_0xc8f4('0x78'));}if(_0x5eab20['body'][_0xc8f4('0x5c')]===_0xc8f4('0x29')&&_0x5eab20[_0xc8f4('0x2b')][_0xc8f4('0x5c')]!==_0xc8f4('0x29')){throw new Error(_0xc8f4('0x79'));}return licenseUtil[_0xc8f4('0x7a')]([_0x5eab20[_0xc8f4('0x5b')]])['then'](function(){return validateUser(_0x5eab20[_0xc8f4('0x5b')]);})[_0xc8f4('0x13')](function(_0x1f419d){return updateUser(_0x1f419d)[_0xc8f4('0x13')](function(_0xf2a4d7){if(_0xf2a4d7[_0xc8f4('0x5c')]===_0xc8f4('0x29')){_0xf2a4d7[_0xc8f4('0x7b')]=_0x5eab20[_0xc8f4('0x2b')][_0xc8f4('0x7b')];delete _0xf2a4d7[_0xc8f4('0x7c')];}return _0xf2a4d7;});})['then'](function(_0x14bdd9){return db[_0xc8f4('0x3b')]['create'](_0x14bdd9,{'include':[{'model':db[_0xc8f4('0x6b')],'as':_0xc8f4('0x6b')}]});})['then'](function(_0x16ea62){if(_0x5eab20[_0xc8f4('0x5b')]['role']==='user')return _0x16ea62;if(_0x5eab20[_0xc8f4('0x2b')][_0xc8f4('0x5c')]!==_0xc8f4('0x2b'))return _0x16ea62;return db['UserProfileSection'][_0xc8f4('0x35')]({'where':{'name':_0x16ea62[_0xc8f4('0x5c')]==='agent'?'Agents':_0xc8f4('0x2e'),'userProfileId':_0x5eab20[_0xc8f4('0x2b')][_0xc8f4('0x7c')]},'raw':!![]})['then'](function(_0x83ddd4){if(!_0x83ddd4||_0x83ddd4[_0xc8f4('0x7d')]!=0x0)return _0x16ea62;return db[_0xc8f4('0x37')]['create']({'name':_0x16ea62[_0xc8f4('0x36')],'resourceId':_0x16ea62['id'],'type':_0x83ddd4[_0xc8f4('0x36')],'sectionId':_0x83ddd4['id']},{})[_0xc8f4('0x13')](function(){return _0x16ea62;});})[_0xc8f4('0x1d')](function(_0x4e77b4){logger[_0xc8f4('0x19')](_0xc8f4('0x7e'),_0x4e77b4);throw _0x4e77b4;});})[_0xc8f4('0x13')](respondWithResult(_0x47eff5,0xc9))[_0xc8f4('0x1d')](handleError(_0x47eff5,null));};exports[_0xc8f4('0x7f')]=function(_0x855de2,_0x51aacd){var _0x7ae79=_0x855de2['body'];var _0x398b7b=[];if(_0x855de2[_0xc8f4('0x2b')][_0xc8f4('0x5c')]===_0xc8f4('0x2d'))throw new Error(_0xc8f4('0x77'));if(_[_0xc8f4('0x80')](_0x7ae79,[_0xc8f4('0x5c'),_0xc8f4('0x2b')])&&_0x855de2['user'][_0xc8f4('0x5c')]!=='admin'){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_[_0xc8f4('0x80')](_0x7ae79,[_0xc8f4('0x5c'),_0xc8f4('0x29')])&&_0x855de2['user']['role']!==_0xc8f4('0x29')){throw new Error(_0xc8f4('0x81'));}return licenseUtil[_0xc8f4('0x7a')](_0x7ae79)['then'](function(){return validateUser(_0x7ae79[0x0]);})[_0xc8f4('0x13')](function(){for(var _0x5ce8eb=0x1;_0x5ce8eb<_0x7ae79[_0xc8f4('0x4c')];_0x5ce8eb++){var _0x2ae399=_0x7ae79[_0x5ce8eb-0x1][_0xc8f4('0x5f')];if(!_0x7ae79[_0x5ce8eb][_0xc8f4('0x5f')])_0x7ae79[_0x5ce8eb][_0xc8f4('0x5f')]=_0x2ae399+0x1;_0x398b7b['push'](validateUser(_0x7ae79[_0x5ce8eb]));}return BPromise[_0xc8f4('0x5a')](_0x398b7b);})['then'](function(){_0x398b7b=[];for(var _0x31aa69=0x0;_0x31aa69<_0x7ae79[_0xc8f4('0x4c')];_0x31aa69++){_0x398b7b[_0xc8f4('0x48')](updateUser(_0x7ae79[_0x31aa69]));}return BPromise[_0xc8f4('0x5a')](_0x398b7b);})[_0xc8f4('0x13')](function(){return BPromise[_0xc8f4('0x82')](_0x7ae79,function(_0x3f1852){return db[_0xc8f4('0x3b')][_0xc8f4('0x83')](_0x3f1852,{'include':[{'model':db[_0xc8f4('0x6b')],'as':_0xc8f4('0x6b')}]})['then'](function(_0x526010){_0x3f1852['id']=_0x526010['id'];return _0x3f1852;});});})[_0xc8f4('0x13')](function(_0x20c759){if(_0x855de2[_0xc8f4('0x5b')][_0xc8f4('0x5c')]===_0xc8f4('0x2b'))return _0x20c759;if(_0x855de2[_0xc8f4('0x2b')][_0xc8f4('0x5c')]!==_0xc8f4('0x2b'))return _0x20c759;var _0xa6af22=_[_0xc8f4('0x80')](_0x20c759,function(_0x7e6407){return _0x7e6407[_0xc8f4('0x5c')]==='agent'||_0x7e6407['role']===_0xc8f4('0x2f');});if(!_0xa6af22)return _0x20c759;return db['UserProfileSection']['findAll']({'where':{'name':{'$or':[_0xc8f4('0x2c'),'Telephones']},'userProfileId':_0x855de2['user']['userProfileId']},'raw':!![]})['then'](function(_0x4ef593){if(_[_0xc8f4('0x84')](_0x4ef593)||!_[_0xc8f4('0x80')](_0x4ef593,[_0xc8f4('0x7d'),0x0]))return _0x20c759;_0x398b7b=[];var _0x3afcb4=_(_0x4ef593)[_0xc8f4('0x32')](function(_0x12ff14){if(_0x12ff14[_0xc8f4('0x7d')]===0x1)return;return _0x12ff14[_0xc8f4('0x36')]===_0xc8f4('0x2c')?_0xc8f4('0x2d'):_0xc8f4('0x2f');})[_0xc8f4('0x85')]()[_0xc8f4('0x33')]();for(var _0x1d4e89=0x0;_0x1d4e89<_0x20c759[_0xc8f4('0x4c')];_0x1d4e89++){if(!_[_0xc8f4('0x34')](_0x3afcb4,_0x20c759[_0x1d4e89][_0xc8f4('0x5c')]))return;var _0x20ea4d=_0x20c759[_0x1d4e89][_0xc8f4('0x5c')]===_0xc8f4('0x2d')?_0xc8f4('0x2c'):_0xc8f4('0x2e');_0x398b7b[_0xc8f4('0x48')](db['UserProfileResource']['create']({'name':_0x20c759[_0x1d4e89][_0xc8f4('0x36')],'resourceId':_0x20c759[_0x1d4e89]['id'],'type':_0x20ea4d,'sectionId':_[_0xc8f4('0x35')](_0x4ef593,[_0xc8f4('0x36'),_0x20ea4d])['id']},{}));}return BPromise[_0xc8f4('0x5a')](_0x398b7b);});})[_0xc8f4('0x13')](respondWithResult(_0x51aacd,0xc9))[_0xc8f4('0x1d')](handleError(_0x51aacd,null));};exports[_0xc8f4('0x86')]=function(_0x3ecacf,_0xe9d619){if(_0x3ecacf[_0xc8f4('0x5b')]['id']){delete _0x3ecacf[_0xc8f4('0x5b')]['id'];}return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x3ecacf[_0xc8f4('0x51')]['id']}})['then'](function(_0x23af28){if(!_0x23af28)return null;if(_0x23af28['id']===_0x3ecacf[_0xc8f4('0x2b')]['id']){if(!_0x3ecacf[_0xc8f4('0x5b')][_0xc8f4('0x87')]||!_0x3ecacf[_0xc8f4('0x5b')]['newPassword']){throw new db[(_0xc8f4('0x88'))][(_0xc8f4('0x89'))]('Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword');}if(!_0x23af28['authenticate'](_0x3ecacf[_0xc8f4('0x5b')][_0xc8f4('0x87')])){throw new db[(_0xc8f4('0x88'))][(_0xc8f4('0x89'))](_0xc8f4('0x8a'));}if(_0x3ecacf['body']['oldPassword']===_0x3ecacf[_0xc8f4('0x5b')][_0xc8f4('0x8b')]){throw new db['Sequelize'][(_0xc8f4('0x89'))](_0xc8f4('0x8c'));}}else if(_0x3ecacf[_0xc8f4('0x2b')][_0xc8f4('0x5c')]===_0xc8f4('0x29')){if(!_0x3ecacf[_0xc8f4('0x5b')][_0xc8f4('0x8b')]){throw new db[(_0xc8f4('0x88'))]['ValidationError'](_0xc8f4('0x8d'));}}else if(_0x3ecacf[_0xc8f4('0x2b')][_0xc8f4('0x5c')]==='user'){if(!_0x3ecacf[_0xc8f4('0x5b')]['newPassword']){throw new db[(_0xc8f4('0x88'))][(_0xc8f4('0x89'))](_0xc8f4('0x8d'));}if(_0x23af28['role']!==_0xc8f4('0x2d')){throw new db['Sequelize'][(_0xc8f4('0x89'))](_0xc8f4('0x77'));}}else{throw new db[(_0xc8f4('0x88'))]['ValidationError'](_0xc8f4('0x77'));}return _0x23af28;})[_0xc8f4('0x13')](handleEntityNotFound(_0xe9d619,null))[_0xc8f4('0x13')](function(_0x12709e){return db['Setting'][_0xc8f4('0x8e')]({'attributes':['id','securePassword',_0xc8f4('0x8f'),'passwordHistoryLimit']})[_0xc8f4('0x13')](function(_0x4019cf){if(_0x4019cf['securePassword'])authService[_0xc8f4('0x63')](_0x3ecacf[_0xc8f4('0x5b')][_0xc8f4('0x8b')]);if(!_0x4019cf[_0xc8f4('0x8f')]||!_0x12709e[_0xc8f4('0x90')])return _0x12709e;authService['validatePasswordHistory'](_0x3ecacf[_0xc8f4('0x5b')][_0xc8f4('0x8b')],_0x12709e[_0xc8f4('0x90')],_0x4019cf[_0xc8f4('0x91')]);return _0x12709e;})['then'](saveUpdates({'password':_0x3ecacf[_0xc8f4('0x5b')][_0xc8f4('0x8b')],'passwordResetAt':_0x3ecacf[_0xc8f4('0x2b')]['id']==_0x3ecacf[_0xc8f4('0x51')]['id']?moment():null,'previousPasswords':authService['updatePasswordsHistory'](_0x3ecacf[_0xc8f4('0x5b')][_0xc8f4('0x8b')],_0x12709e[_0xc8f4('0x90')])},null));})[_0xc8f4('0x13')](respondWithResult(_0xe9d619,null))[_0xc8f4('0x1d')](handleError(_0xe9d619,null));};exports[_0xc8f4('0x92')]=function(_0x5b723a,_0x9c5a78){var _0x919ea9=_0x5b723a['body'][_0xc8f4('0x93')];return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x5b723a[_0xc8f4('0x51')]['id']},'attributes':['id','name',_0xc8f4('0x5c'),'online',_0xc8f4('0x94'),_0xc8f4('0x95'),_0xc8f4('0x96')]})['then'](handleEntityNotFound(_0x9c5a78,null))[_0xc8f4('0x13')](function(_0x103c24){if(_0x103c24){if(!utils[_0xc8f4('0x97')](_0x919ea9)){throw new db[(_0xc8f4('0x88'))][(_0xc8f4('0x89'))](_0xc8f4('0x98'));}return _0x103c24[_0xc8f4('0x99')+_['capitalize'](_0x919ea9[_0xc8f4('0x9a')]())+_0xc8f4('0x9b')](_0x5b723a[_0xc8f4('0x5b')][_0xc8f4('0x9c')],{'penalty':_0x5b723a[_0xc8f4('0x5b')][_0xc8f4('0x9d')]||0x0})[_0xc8f4('0x9e')](function(_0x4571bf){for(var _0xfb0403=0x0;_0xfb0403<_0x5b723a[_0xc8f4('0x5b')][_0xc8f4('0x9c')][_0xc8f4('0x4c')];_0xfb0403+=0x1){var _0x10cc75={'UserId':Number(_0x5b723a[_0xc8f4('0x51')]['id'])};_0x10cc75[_[_0xc8f4('0x9f')](_0x919ea9[_0xc8f4('0x9a')]())+_0xc8f4('0xa0')]=Number(_0x5b723a[_0xc8f4('0x5b')][_0xc8f4('0x9c')][_0xfb0403]);socket[_0xc8f4('0xa1')]('user'+_['capitalize'](_0x919ea9[_0xc8f4('0x9a')]())+'Queue:save',_0x10cc75);}return _0x4571bf;})['then'](function(){if(_0x919ea9===_0xc8f4('0xa2')){return db[_0xc8f4('0xa3')]['findAll']({'where':{'id':_0x5b723a['body']['ids']||[]},'raw':!![],'attributes':['id','name']});}})[_0xc8f4('0x13')](function(_0x5a20c2){var _0x50b3cb=_0x103c24[_0xc8f4('0xa4')]({'plain':!![]});var _0x108eb0=[];if(_0x919ea9===_0xc8f4('0xa2')&&_0x50b3cb[_0xc8f4('0x5c')]===_0xc8f4('0x2d')&&_0x50b3cb[_0xc8f4('0xa5')]){for(var _0x34a545=0x0;_0x34a545<_0x5a20c2[_0xc8f4('0x4c')];_0x34a545+=0x1){_0x108eb0[_0xc8f4('0x48')]({'membername':_0x50b3cb[_0xc8f4('0x36')],'UserId':_0x50b3cb['id'],'queue_name':_0x5a20c2[_0x34a545]['name'],'VoiceQueueId':_0x5a20c2[_0x34a545]['id'],'interface':_[_0xc8f4('0x64')](_0x50b3cb[_0xc8f4('0x96')])?util[_0xc8f4('0xa6')](_0xc8f4('0xa7'),_0x50b3cb[_0xc8f4('0x36')]):_0x50b3cb['interface'],'paused':_0x50b3cb['voicePause']||![],'penalty':_0x5b723a[_0xc8f4('0x5b')][_0xc8f4('0x9d')]||0x0});}return BPromise[_0xc8f4('0x82')](_0x108eb0,function(_0x2edf2a){return db['UserVoiceQueueRt']['upsert'](_0x2edf2a);});}return _0x103c24;});}})[_0xc8f4('0x13')](respondWithStatusCode(_0x9c5a78,null))[_0xc8f4('0x1d')](handleError(_0x9c5a78,null));};exports['removeQueues']=function(_0x411087,_0x591e1f){var _0x12dc3a;return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x411087['params']['id']},'attributes':['id',_0xc8f4('0x36'),'role']})['then'](handleEntityNotFound(_0x591e1f,null))[_0xc8f4('0x13')](function(_0x15b42d){if(_0x15b42d){_0x12dc3a=_0x15b42d;if(!_0x411087[_0xc8f4('0x44')][_0xc8f4('0x93')]||!utils[_0xc8f4('0x97')](_0x411087[_0xc8f4('0x44')]['channel'])){throw new db[(_0xc8f4('0x88'))][(_0xc8f4('0x89'))](_0xc8f4('0x98'));}return _0x15b42d[_0xc8f4('0xa8')+_[_0xc8f4('0x9f')](_0x411087['query'][_0xc8f4('0x93')][_0xc8f4('0x9a')]())+_0xc8f4('0x9b')](_0x411087[_0xc8f4('0x44')][_0xc8f4('0x9c')]);}})[_0xc8f4('0x13')](function(_0x461e71){if(_[_0xc8f4('0xa9')](_0x411087['query'][_0xc8f4('0x9c')])){for(var _0x165106=0x0;_0x165106<_0x411087[_0xc8f4('0x44')][_0xc8f4('0x9c')][_0xc8f4('0x4c')];_0x165106+=0x1){var _0x34f296={'UserId':Number(_0x411087[_0xc8f4('0x51')]['id'])};_0x34f296[_[_0xc8f4('0x9f')](_0x411087['query']['channel'][_0xc8f4('0x9a')]())+_0xc8f4('0xa0')]=Number(_0x411087[_0xc8f4('0x44')][_0xc8f4('0x9c')][_0x165106]);socket[_0xc8f4('0xa1')]('user'+_['capitalize'](_0x411087['query'][_0xc8f4('0x93')][_0xc8f4('0x9a')]())+_0xc8f4('0xaa'),_0x34f296);}}else{var _0x34f296={'UserId':Number(_0x411087[_0xc8f4('0x51')]['id'])};_0x34f296[_[_0xc8f4('0x9f')](_0x411087[_0xc8f4('0x44')][_0xc8f4('0x93')][_0xc8f4('0x9a')]())+_0xc8f4('0xa0')]=Number(_0x411087[_0xc8f4('0x44')][_0xc8f4('0x9c')]);socket['emit'](_0xc8f4('0x2b')+_[_0xc8f4('0x9f')](_0x411087['query'][_0xc8f4('0x93')]['toLowerCase']())+'Queue:remove',_0x34f296);}return _0x461e71;})[_0xc8f4('0x13')](function(){if(_0x411087['query'][_0xc8f4('0x93')]==='voice'){return db['UserVoiceQueueRt'][_0xc8f4('0x28')]({'where':{'UserId':_0x411087[_0xc8f4('0x51')]['id'],'VoiceQueueId':_0x411087[_0xc8f4('0x44')][_0xc8f4('0x9c')]},'individualHooks':!![]})[_0xc8f4('0x13')](function(){return _0x12dc3a;});}return _0x12dc3a;})['then'](respondWithStatusCode(_0x591e1f,null))['catch'](handleError(_0x591e1f,null));};exports['addAvatar']=function(_0x5eda68,_0x455c7b){_0x5eda68[_0xc8f4('0x5b')]['userpic']=_0x5eda68['file'][_0xc8f4('0xab')];return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x5eda68[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x455c7b,null))[_0xc8f4('0x13')](saveUpdates(_0x5eda68['body'],null))[_0xc8f4('0x13')](respondWithResult(_0x455c7b,null))[_0xc8f4('0x1d')](handleError(_0x455c7b,null));};exports['getAvatar']=function(_0x1bb1dd,_0x2c08e3){var _0xdc8ac7=path[_0xc8f4('0xac')](config[_0xc8f4('0xad')],_0xc8f4('0xae'));return db['User']['find']({'where':{'id':_0x1bb1dd[_0xc8f4('0x51')]['id']},'attributes':['id','userpic'],'raw':!![]})[_0xc8f4('0x13')](handleEntityNotFound(_0x2c08e3,null))[_0xc8f4('0x13')](function(_0x1762aa){if(_0x1762aa){if(_['isNil'](_0x1762aa[_0xc8f4('0xaf')])){return _0x2c08e3[_0xc8f4('0xb0')](_0xdc8ac7);}else{if(!fs['existsSync'](path['join'](config[_0xc8f4('0xad')],_0xc8f4('0xb1'),_0x1762aa[_0xc8f4('0xaf')]))){return _0x2c08e3[_0xc8f4('0xb0')](_0xdc8ac7);}return _0x2c08e3['download'](path[_0xc8f4('0xac')](config[_0xc8f4('0xad')],_0xc8f4('0xb1'),_0x1762aa[_0xc8f4('0xaf')]));}}})[_0xc8f4('0x1d')](handleError(_0x2c08e3,null));};exports['getOpenTabs']=function(_0x19a3e7,_0x269df9){return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x19a3e7[_0xc8f4('0x51')]['id']},'attributes':['id']})[_0xc8f4('0x13')](handleEntityNotFound(_0x269df9,null))[_0xc8f4('0x13')](function(_0x11cba9){var _0x194fc3=[];values=_0x11cba9[_0xc8f4('0x4e')];_0x194fc3[_0xc8f4('0x48')](get_open_tabs(_0xc8f4('0x4d'),_0x11cba9[_0xc8f4('0x4e')]));_0x194fc3['push'](get_open_tabs(_0xc8f4('0x59'),_0x11cba9[_0xc8f4('0x4e')]));_0x194fc3[_0xc8f4('0x48')](get_open_tabs(_0xc8f4('0x4f'),_0x11cba9[_0xc8f4('0x4e')]));_0x194fc3[_0xc8f4('0x48')](get_open_tabs(_0xc8f4('0x50'),_0x11cba9[_0xc8f4('0x4e')]));_0x194fc3['push'](get_open_tabs(_0xc8f4('0xb2'),_0x11cba9[_0xc8f4('0x4e')]));_0x194fc3[_0xc8f4('0x48')](get_open_tabs(_0xc8f4('0xb3'),_0x11cba9[_0xc8f4('0x4e')]));return BPromise[_0xc8f4('0x5a')](_0x194fc3);})[_0xc8f4('0x13')](function(_0xc8ae19){var _0x1e333d=[];if(_0xc8ae19){for(var _0x5c99ae=0x0;_0x5c99ae<values[_0xc8f4('0xb4')][_0xc8f4('0x4c')];_0x5c99ae++){var _0x35037f=values[_0xc8f4('0xb4')][_0x5c99ae];_0x1e333d[_0xc8f4('0x48')]({'channel':'CHAT','id':_0x35037f['id'],'createdAt':_0x35037f[_0xc8f4('0xb5')]});}for(var _0x5c99ae=0x0;_0x5c99ae<values['FaxOpenTabs']['length'];_0x5c99ae++){var _0x35037f=values[_0xc8f4('0xb6')][_0x5c99ae];_0x1e333d['push']({'channel':_0xc8f4('0xb7'),'id':_0x35037f['id'],'createdAt':_0x35037f['createdAt']});}for(var _0x5c99ae=0x0;_0x5c99ae<values[_0xc8f4('0xb8')]['length'];_0x5c99ae++){var _0x35037f=values[_0xc8f4('0xb8')][_0x5c99ae];_0x1e333d[_0xc8f4('0x48')]({'channel':_0xc8f4('0xb9'),'id':_0x35037f['id'],'createdAt':_0x35037f['createdAt']});}for(var _0x5c99ae=0x0;_0x5c99ae<values['MailOpenTabs'][_0xc8f4('0x4c')];_0x5c99ae++){var _0x35037f=values['MailOpenTabs'][_0x5c99ae];_0x1e333d[_0xc8f4('0x48')]({'channel':_0xc8f4('0xba'),'id':_0x35037f['id'],'createdAt':_0x35037f['createdAt']});}for(var _0x5c99ae=0x0;_0x5c99ae<values[_0xc8f4('0xbb')][_0xc8f4('0x4c')];_0x5c99ae++){var _0x35037f=values['SmsOpenTabs'][_0x5c99ae];_0x1e333d[_0xc8f4('0x48')]({'channel':_0xc8f4('0xbc'),'id':_0x35037f['id'],'createdAt':_0x35037f[_0xc8f4('0xb5')]});}for(var _0x5c99ae=0x0;_0x5c99ae<values[_0xc8f4('0xbd')][_0xc8f4('0x4c')];_0x5c99ae++){var _0x35037f=values[_0xc8f4('0xbd')][_0x5c99ae];_0x1e333d[_0xc8f4('0x48')]({'channel':_0xc8f4('0xbe'),'id':_0x35037f['id'],'createdAt':_0x35037f[_0xc8f4('0xb5')]});}var _0x1220c4={'count':_0x1e333d[_0xc8f4('0x4c')],'rows':_0x1e333d};return _0x1220c4;}else return null;})[_0xc8f4('0x13')](respondWithResult(_0x269df9,null))[_0xc8f4('0x1d')](handleError(_0x269df9,null));};exports['getContacts']=function(_0xcda2bf,_0x172d23){var _0x35f205={};var _0x4249b1={};var _0x2d2c7b;var _0x210829;return db[_0xc8f4('0x3b')][_0xc8f4('0x8e')]({'where':{'id':_0xcda2bf[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x172d23,null))['then'](function(_0x20576d){if(_0x20576d){_0x2d2c7b=_0x20576d;_0x4249b1[_0xc8f4('0x52')]=_[_0xc8f4('0x54')](db[_0xc8f4('0xbf')][_0xc8f4('0x3c')]);_0x4249b1['query']=_[_0xc8f4('0x54')](_0xcda2bf['query']);_0x4249b1['filters']=_['intersection'](_0x4249b1[_0xc8f4('0x52')],_0x4249b1[_0xc8f4('0x44')]);_0x35f205[_0xc8f4('0x47')]=_[_0xc8f4('0x56')](_0x4249b1['model'],qs['fields'](_0xcda2bf['query'][_0xc8f4('0x57')]));_0x35f205[_0xc8f4('0x47')]=_0x35f205[_0xc8f4('0x47')][_0xc8f4('0x4c')]?_0x35f205[_0xc8f4('0x47')]:_0x4249b1['model'];_0x35f205[_0xc8f4('0xc0')]=qs['sort'](_0xcda2bf[_0xc8f4('0x44')][_0xc8f4('0xc1')]);_0x35f205['where']=qs['filters'](_[_0xc8f4('0xc2')](_0xcda2bf['query'],_0x4249b1['filters']));if(_0xcda2bf[_0xc8f4('0x44')][_0xc8f4('0x30')]){_0x35f205['where']=_[_0xc8f4('0xc3')](_0x35f205['where'],{'$or':_['map'](_0x35f205[_0xc8f4('0x47')],function(_0x127f56){var _0x556c09={};_0x556c09[_0x127f56]={'$like':'%'+_0xcda2bf['query'][_0xc8f4('0x30')]+'%'};return _0x556c09;})});}_0x35f205=_[_0xc8f4('0xc3')]({},_0x35f205,_0xcda2bf[_0xc8f4('0x58')]);return _0x2d2c7b[_0xc8f4('0xc4')](_0x35f205);}})[_0xc8f4('0x13')](function(_0x28a0ff){if(_0x28a0ff){_0x210829=_0x28a0ff['length'];if(_0xcda2bf[_0xc8f4('0x44')][_0xc8f4('0xc5')](_0xc8f4('0x45'))){_0x35f205['include']=[{'model':db[_0xc8f4('0xc6')],'as':_0xc8f4('0xc7'),'required':![]},{'model':db[_0xc8f4('0xc8')],'as':'Tags','attributes':['id',_0xc8f4('0x36'),'color'],'where':_0xcda2bf[_0xc8f4('0x44')][_0xc8f4('0xc9')]?{'id':_0xcda2bf['query'][_0xc8f4('0xc9')]}:undefined,'required':_0xcda2bf['query'][_0xc8f4('0xc9')]?!![]:![]}];}if(!_0xcda2bf[_0xc8f4('0x44')]['hasOwnProperty'](_0xc8f4('0xca'))){_0x35f205[_0xc8f4('0x23')]=qs['limit'](_0xcda2bf[_0xc8f4('0x44')]['limit']);_0x35f205[_0xc8f4('0x22')]=qs[_0xc8f4('0x22')](_0xcda2bf['query'][_0xc8f4('0x22')]);}return _0x2d2c7b[_0xc8f4('0xc4')](_0x35f205);}})['then'](function(_0x10d918){if(_0x10d918){return _0x10d918?{'count':_0x210829,'rows':_0x10d918}:null;}})[_0xc8f4('0x13')](respondWithResult(_0x172d23,null))['catch'](handleError(_0x172d23,null));};exports[_0xc8f4('0xcb')]=function(_0x11184e,_0x462457){var _0x112655;var _0x4f69cf;var _0xbc5e30={};var _0x4085fa;return db['User']['findOne']({'where':{'id':_0x11184e[_0xc8f4('0x51')]['id']},'attributes':['id',_0xc8f4('0x36'),_0xc8f4('0x5c')]})[_0xc8f4('0x13')](handleEntityNotFound(_0x462457,null))[_0xc8f4('0x13')](function(_0x48d8c1){if(!utils['isValidChannel'](_0x11184e[_0xc8f4('0x44')]['channel'])){throw new db[(_0xc8f4('0x88'))][(_0xc8f4('0x89'))](_0xc8f4('0x98'));}_0x112655=_0x48d8c1;var _0x583c4b={};_0x583c4b['model']=_[_0xc8f4('0x54')](db[_['capitalize'](_0x11184e[_0xc8f4('0x44')][_0xc8f4('0x93')])+'Queue'][_0xc8f4('0x3c')]);_0x583c4b['query']=_['keys'](_0x11184e[_0xc8f4('0x44')]);_0x583c4b[_0xc8f4('0x55')]=_[_0xc8f4('0x56')](_0x583c4b[_0xc8f4('0x52')],_0x583c4b[_0xc8f4('0x44')]);_0xbc5e30[_0xc8f4('0x47')]=_[_0xc8f4('0x56')](_0x583c4b['model'],qs[_0xc8f4('0x57')](_0x11184e[_0xc8f4('0x44')][_0xc8f4('0x57')]));_0xbc5e30[_0xc8f4('0x47')]=_0xbc5e30['attributes'][_0xc8f4('0x4c')]?_0xbc5e30[_0xc8f4('0x47')]:_0x583c4b['model'];_0xbc5e30['order']=qs[_0xc8f4('0xc1')](_0x11184e['query'][_0xc8f4('0xc1')]);_0xbc5e30[_0xc8f4('0x43')]=qs[_0xc8f4('0x55')](_[_0xc8f4('0xc2')](_0x11184e[_0xc8f4('0x44')],_0x583c4b['filters']));if(_0x11184e[_0xc8f4('0x44')][_0xc8f4('0x30')]){_0xbc5e30['where']=_[_0xc8f4('0xc3')](_0xbc5e30[_0xc8f4('0x43')],{'$or':_[_0xc8f4('0x32')](_0xbc5e30[_0xc8f4('0x47')],function(_0x3a5093){var _0xa7ea12={};_0xa7ea12[_0x3a5093]={'$like':'%'+_0x11184e[_0xc8f4('0x44')][_0xc8f4('0x30')]+'%'};return _0xa7ea12;})});}_0xbc5e30=_[_0xc8f4('0xc3')]({},_0xbc5e30,_0x11184e['options']);switch(_0x112655[_0xc8f4('0x5c')]){case _0xc8f4('0x29'):return db[_['capitalize'](_0x11184e[_0xc8f4('0x44')][_0xc8f4('0x93')])+'Queue'][_0xc8f4('0xcc')](_0xbc5e30);case _0xc8f4('0x2b'):case _0xc8f4('0x2d'):return _0x112655['get'+_[_0xc8f4('0x9f')](_0x11184e[_0xc8f4('0x44')][_0xc8f4('0x93')])+_0xc8f4('0x9b')](_0xbc5e30);default:throw new db[(_0xc8f4('0x88'))][(_0xc8f4('0x89'))](_0xc8f4('0xcd'));}})['then'](function(_0x45119d){_0x4085fa=_0x45119d[_0xc8f4('0x4c')];if(!_0x11184e[_0xc8f4('0x44')][_0xc8f4('0xc5')](_0xc8f4('0xca'))){_0xbc5e30['limit']=qs[_0xc8f4('0x23')](_0x11184e[_0xc8f4('0x44')][_0xc8f4('0x23')]);_0xbc5e30[_0xc8f4('0x22')]=qs[_0xc8f4('0x22')](_0x11184e[_0xc8f4('0x44')]['offset']);}switch(_0x112655[_0xc8f4('0x5c')]){case'admin':return db[_['capitalize'](_0x11184e['query'][_0xc8f4('0x93')])+'Queue'][_0xc8f4('0xcc')](_0xbc5e30);case'user':case'agent':return _0x112655[_0xc8f4('0xa4')+_[_0xc8f4('0x9f')](_0x11184e['query'][_0xc8f4('0x93')])+_0xc8f4('0x9b')](_0xbc5e30);}})[_0xc8f4('0x13')](function(_0x29da37){return{'count':_0x4085fa,'rows':_0x29da37};})[_0xc8f4('0x13')](respondWithResult(_0x462457,null))[_0xc8f4('0x1d')](handleError(_0x462457,null));};exports['getVoiceQueuesRt']=function(_0x2edde9,_0xb52330){var _0x2ece68={};var _0x43b83c={};var _0x50fbc0;var _0x34e443;return db[_0xc8f4('0x3b')][_0xc8f4('0x8e')]({'where':{'id':_0x2edde9[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0xb52330,null))[_0xc8f4('0x13')](function(_0xf68917){if(_0xf68917){_0x50fbc0=_0xf68917;_0x43b83c[_0xc8f4('0x52')]=_[_0xc8f4('0x54')](db['UserVoiceQueueRt']['rawAttributes']);_0x43b83c[_0xc8f4('0x44')]=_[_0xc8f4('0x54')](_0x2edde9[_0xc8f4('0x44')]);_0x43b83c[_0xc8f4('0x55')]=_[_0xc8f4('0x56')](_0x43b83c[_0xc8f4('0x52')],_0x43b83c['query']);_0x2ece68['attributes']=_[_0xc8f4('0x56')](_0x43b83c[_0xc8f4('0x52')],qs['fields'](_0x2edde9[_0xc8f4('0x44')][_0xc8f4('0x57')]));_0x2ece68[_0xc8f4('0x47')]=_0x2ece68[_0xc8f4('0x47')][_0xc8f4('0x4c')]?_0x2ece68[_0xc8f4('0x47')]:_0x43b83c[_0xc8f4('0x52')];_0x2ece68[_0xc8f4('0xc0')]=qs[_0xc8f4('0xc1')](_0x2edde9[_0xc8f4('0x44')][_0xc8f4('0xc1')]);_0x2ece68[_0xc8f4('0x43')]=qs[_0xc8f4('0x55')](_[_0xc8f4('0xc2')](_0x2edde9[_0xc8f4('0x44')],_0x43b83c['filters']));if(_0x2edde9[_0xc8f4('0x44')][_0xc8f4('0x30')]){_0x2ece68[_0xc8f4('0x43')]=_[_0xc8f4('0xc3')](_0x2ece68[_0xc8f4('0x43')],{'$or':_[_0xc8f4('0x32')](_0x2ece68[_0xc8f4('0x47')],function(_0x2049a2){var _0x5c8904={};_0x5c8904[_0x2049a2]={'$like':'%'+_0x2edde9[_0xc8f4('0x44')]['filter']+'%'};return _0x5c8904;})});}_0x2ece68=_[_0xc8f4('0xc3')]({},_0x2ece68,_0x2edde9[_0xc8f4('0x58')]);return _0x50fbc0[_0xc8f4('0xce')](_0x2ece68);}})[_0xc8f4('0x13')](function(_0x50b3bb){if(_0x50b3bb){_0x34e443=_0x50b3bb[_0xc8f4('0x4c')];if(!_0x2edde9['query']['hasOwnProperty']('nolimit')){_0x2ece68[_0xc8f4('0x23')]=qs[_0xc8f4('0x23')](_0x2edde9[_0xc8f4('0x44')][_0xc8f4('0x23')]);_0x2ece68[_0xc8f4('0x22')]=qs[_0xc8f4('0x22')](_0x2edde9[_0xc8f4('0x44')][_0xc8f4('0x22')]);}return _0x50fbc0[_0xc8f4('0xce')](_0x2ece68);}})[_0xc8f4('0x13')](function(_0x57f13e){if(_0x57f13e){return _0x57f13e?{'count':_0x34e443,'rows':_0x57f13e}:null;}})[_0xc8f4('0x13')](respondWithResult(_0xb52330,null))[_0xc8f4('0x1d')](handleError(_0xb52330,null));};exports[_0xc8f4('0xcf')]=function(_0x3c0628,_0x1192f2){var _0x5460cc={};var _0x1d9651={};var _0x308cb2;var _0x50f953;return db[_0xc8f4('0x3b')][_0xc8f4('0x8e')]({'where':{'id':_0x3c0628[_0xc8f4('0x51')]['id']}})['then'](handleEntityNotFound(_0x1192f2,null))['then'](function(_0x1a635d){if(_0x1a635d){_0x308cb2=_0x1a635d;_0x1d9651['model']=_[_0xc8f4('0x54')](db[_0xc8f4('0xd0')][_0xc8f4('0x3c')]);_0x1d9651[_0xc8f4('0x44')]=_['keys'](_0x3c0628[_0xc8f4('0x44')]);_0x1d9651['filters']=_['intersection'](_0x1d9651[_0xc8f4('0x52')],_0x1d9651[_0xc8f4('0x44')]);_0x5460cc[_0xc8f4('0x47')]=_['intersection'](_0x1d9651[_0xc8f4('0x52')],qs[_0xc8f4('0x57')](_0x3c0628[_0xc8f4('0x44')][_0xc8f4('0x57')]));_0x5460cc[_0xc8f4('0x47')]=_0x5460cc[_0xc8f4('0x47')][_0xc8f4('0x4c')]?_0x5460cc['attributes']:_0x1d9651[_0xc8f4('0x52')];_0x5460cc[_0xc8f4('0xc0')]=qs[_0xc8f4('0xc1')](_0x3c0628[_0xc8f4('0x44')][_0xc8f4('0xc1')]);_0x5460cc[_0xc8f4('0x43')]=qs[_0xc8f4('0x55')](_[_0xc8f4('0xc2')](_0x3c0628[_0xc8f4('0x44')],_0x1d9651[_0xc8f4('0x55')]));if(_0x3c0628[_0xc8f4('0x44')]['filter']){_0x5460cc[_0xc8f4('0x43')]=_[_0xc8f4('0xc3')](_0x5460cc[_0xc8f4('0x43')],{'$or':_[_0xc8f4('0x32')](_0x5460cc[_0xc8f4('0x47')],function(_0xe5256d){var _0x494d27={};_0x494d27[_0xe5256d]={'$like':'%'+_0x3c0628[_0xc8f4('0x44')][_0xc8f4('0x30')]+'%'};return _0x494d27;})});}_0x5460cc=_['merge']({},_0x5460cc,_0x3c0628[_0xc8f4('0x58')]);return _0x308cb2[_0xc8f4('0xcf')](_0x5460cc);}})[_0xc8f4('0x13')](function(_0x1fda60){if(_0x1fda60){_0x50f953=_0x1fda60[_0xc8f4('0x4c')];if(!_0x3c0628[_0xc8f4('0x44')]['hasOwnProperty'](_0xc8f4('0xca'))){_0x5460cc[_0xc8f4('0x23')]=qs[_0xc8f4('0x23')](_0x3c0628[_0xc8f4('0x44')]['limit']);_0x5460cc[_0xc8f4('0x22')]=qs[_0xc8f4('0x22')](_0x3c0628['query'][_0xc8f4('0x22')]);}return _0x308cb2[_0xc8f4('0xcf')](_0x5460cc);}})[_0xc8f4('0x13')](function(_0x5367b3){if(_0x5367b3){return _0x5367b3?{'count':_0x50f953,'rows':_0x5367b3}:null;}})[_0xc8f4('0x13')](respondWithResult(_0x1192f2,null))[_0xc8f4('0x1d')](handleError(_0x1192f2,null));};exports[_0xc8f4('0xd1')]=function(_0x46e8df,_0x245f73){var _0x5f2784={'raw':!![],'where':{}};var _0x585c62={};var _0xab395f={'count':0x0,'rows':[]};return db[_0xc8f4('0x3b')][_0xc8f4('0x8e')]({'where':{'id':_0x46e8df['params']['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x245f73,null))[_0xc8f4('0x13')](function(_0x5998e7){if(_0x5998e7){_0x585c62[_0xc8f4('0x52')]=_[_0xc8f4('0x54')](db['VoiceRecording'][_0xc8f4('0x3c')]);_0x585c62[_0xc8f4('0x44')]=_[_0xc8f4('0x54')](_0x46e8df[_0xc8f4('0x44')]);_0x585c62[_0xc8f4('0x55')]=_[_0xc8f4('0x56')](_0x585c62[_0xc8f4('0x52')],_0x585c62['query']);_0x5f2784['attributes']=_[_0xc8f4('0x56')](_0x585c62[_0xc8f4('0x52')],qs['fields'](_0x46e8df[_0xc8f4('0x44')][_0xc8f4('0x57')]));_0x5f2784[_0xc8f4('0x47')]=_0x5f2784[_0xc8f4('0x47')][_0xc8f4('0x4c')]?_0x5f2784[_0xc8f4('0x47')]:_0x585c62[_0xc8f4('0x52')];if(!_0x46e8df['query'][_0xc8f4('0xc5')](_0xc8f4('0xca'))){_0x5f2784[_0xc8f4('0x23')]=qs[_0xc8f4('0x23')](_0x46e8df[_0xc8f4('0x44')][_0xc8f4('0x23')]);_0x5f2784[_0xc8f4('0x22')]=qs[_0xc8f4('0x22')](_0x46e8df[_0xc8f4('0x44')][_0xc8f4('0x22')]);}_0x5f2784[_0xc8f4('0xc0')]=qs[_0xc8f4('0xc1')](_0x46e8df[_0xc8f4('0x44')][_0xc8f4('0xc1')]);_0x5f2784['where']=qs[_0xc8f4('0x55')](_[_0xc8f4('0xc2')](_0x46e8df[_0xc8f4('0x44')],_0x585c62[_0xc8f4('0x55')]));_0x5f2784[_0xc8f4('0x43')][_0xc8f4('0xd2')]=_0x5998e7['id'];if(_0x46e8df[_0xc8f4('0x44')][_0xc8f4('0x30')]){_0x5f2784[_0xc8f4('0x43')]=_[_0xc8f4('0xc3')](_0x5f2784[_0xc8f4('0x43')],{'$or':_[_0xc8f4('0x32')](_0x5f2784[_0xc8f4('0x47')],function(_0x5b0f67){var _0x283244={};_0x283244[_0x5b0f67]={'$like':'%'+_0x46e8df['query'][_0xc8f4('0x30')]+'%'};return _0x283244;})});}_0x5f2784=_[_0xc8f4('0xc3')]({},_0x5f2784,_0x46e8df[_0xc8f4('0x58')]);return db[_0xc8f4('0xd3')]['count']({'where':_0x5f2784['where']})[_0xc8f4('0x13')](function(_0x5074b7){_0xab395f[_0xc8f4('0x25')]=_0x5074b7;if(_0x46e8df['query'][_0xc8f4('0x45')]){_0x5f2784[_0xc8f4('0x46')]=[{'all':!![]}];}return db[_0xc8f4('0xd3')][_0xc8f4('0xcc')](_0x5f2784);})[_0xc8f4('0x13')](function(_0x31aee1){_0xab395f[_0xc8f4('0x49')]=_0x31aee1;return _0xab395f;});}})[_0xc8f4('0x13')](respondWithFilteredResult(_0x245f73,_0x5f2784))[_0xc8f4('0x1d')](handleError(_0x245f73,null));};exports[_0xc8f4('0xd4')]=function(_0x26cbb0,_0x37a570){var _0x22d2ce={'raw':!![],'where':{}};var _0x15c349={};var _0x4dc76f={'count':0x0,'rows':[]};return db[_0xc8f4('0x3b')][_0xc8f4('0x8e')]({'where':{'id':_0x26cbb0[_0xc8f4('0x51')]['id']}})['then'](handleEntityNotFound(_0x37a570,null))[_0xc8f4('0x13')](function(_0x1cb88d){if(_0x1cb88d){_0x15c349[_0xc8f4('0x52')]=_[_0xc8f4('0x54')](db[_0xc8f4('0xd5')][_0xc8f4('0x3c')]);_0x15c349[_0xc8f4('0x44')]=_[_0xc8f4('0x54')](_0x26cbb0[_0xc8f4('0x44')]);_0x15c349[_0xc8f4('0x55')]=_['intersection'](_0x15c349[_0xc8f4('0x52')],_0x15c349[_0xc8f4('0x44')]);_0x22d2ce['attributes']=_[_0xc8f4('0x56')](_0x15c349[_0xc8f4('0x52')],qs[_0xc8f4('0x57')](_0x26cbb0[_0xc8f4('0x44')][_0xc8f4('0x57')]));_0x22d2ce[_0xc8f4('0x47')]=_0x22d2ce[_0xc8f4('0x47')][_0xc8f4('0x4c')]?_0x22d2ce[_0xc8f4('0x47')]:_0x15c349[_0xc8f4('0x52')];if(!_0x26cbb0['query']['hasOwnProperty'](_0xc8f4('0xca'))){_0x22d2ce[_0xc8f4('0x23')]=qs[_0xc8f4('0x23')](_0x26cbb0[_0xc8f4('0x44')]['limit']);_0x22d2ce[_0xc8f4('0x22')]=qs[_0xc8f4('0x22')](_0x26cbb0[_0xc8f4('0x44')][_0xc8f4('0x22')]);}_0x22d2ce['order']=qs['sort'](_0x26cbb0[_0xc8f4('0x44')][_0xc8f4('0xc1')]);_0x22d2ce[_0xc8f4('0x43')]=qs[_0xc8f4('0x55')](_['pick'](_0x26cbb0[_0xc8f4('0x44')],_0x15c349['filters']));_0x22d2ce[_0xc8f4('0x43')][_0xc8f4('0xd2')]=_0x1cb88d['id'];if(_0x26cbb0[_0xc8f4('0x44')][_0xc8f4('0x30')]){_0x22d2ce['where']=_[_0xc8f4('0xc3')](_0x22d2ce[_0xc8f4('0x43')],{'$or':_[_0xc8f4('0x32')](_0x22d2ce['attributes'],function(_0x44514b){var _0x33c16e={};_0x33c16e[_0x44514b]={'$like':'%'+_0x26cbb0[_0xc8f4('0x44')][_0xc8f4('0x30')]+'%'};return _0x33c16e;})});}_0x22d2ce=_['merge']({},_0x22d2ce,_0x26cbb0[_0xc8f4('0x58')]);return db[_0xc8f4('0xd5')][_0xc8f4('0x25')]({'where':_0x22d2ce[_0xc8f4('0x43')]})['then'](function(_0x58c37e){_0x4dc76f[_0xc8f4('0x25')]=_0x58c37e;if(_0x26cbb0[_0xc8f4('0x44')][_0xc8f4('0x45')]){_0x22d2ce[_0xc8f4('0x46')]=[{'all':!![]}];}return db[_0xc8f4('0xd5')]['findAll'](_0x22d2ce);})['then'](function(_0x5c4e0a){_0x4dc76f[_0xc8f4('0x49')]=_0x5c4e0a;return _0x4dc76f;});}})[_0xc8f4('0x13')](respondWithFilteredResult(_0x37a570,_0x22d2ce))[_0xc8f4('0x1d')](handleError(_0x37a570,null));};exports[_0xc8f4('0xd6')]=function(_0xf69595,_0x31dd8a){var _0xb1564f={};var _0x315039={};var _0x55d93f;var _0x47b575;return db[_0xc8f4('0x3b')][_0xc8f4('0x8e')]({'where':{'id':_0xf69595[_0xc8f4('0x51')]['id']}})['then'](handleEntityNotFound(_0x31dd8a,null))[_0xc8f4('0x13')](function(_0x4e347c){if(_0x4e347c){_0x55d93f=_0x4e347c;_0x315039[_0xc8f4('0x52')]=_[_0xc8f4('0x54')](db[_0xc8f4('0xd7')][_0xc8f4('0x3c')]);_0x315039[_0xc8f4('0x44')]=_[_0xc8f4('0x54')](_0xf69595[_0xc8f4('0x44')]);_0x315039[_0xc8f4('0x55')]=_[_0xc8f4('0x56')](_0x315039[_0xc8f4('0x52')],_0x315039[_0xc8f4('0x44')]);_0xb1564f[_0xc8f4('0x47')]=_[_0xc8f4('0x56')](_0x315039['model'],qs['fields'](_0xf69595[_0xc8f4('0x44')][_0xc8f4('0x57')]));_0xb1564f['attributes']=_0xb1564f['attributes'][_0xc8f4('0x4c')]?_0xb1564f[_0xc8f4('0x47')]:_0x315039[_0xc8f4('0x52')];_0xb1564f[_0xc8f4('0xc0')]=qs[_0xc8f4('0xc1')](_0xf69595[_0xc8f4('0x44')]['sort']);_0xb1564f['where']=qs[_0xc8f4('0x55')](_[_0xc8f4('0xc2')](_0xf69595[_0xc8f4('0x44')],_0x315039['filters']));if(_0xf69595[_0xc8f4('0x44')]['filter']){_0xb1564f[_0xc8f4('0x43')]=_[_0xc8f4('0xc3')](_0xb1564f[_0xc8f4('0x43')],{'$or':_[_0xc8f4('0x32')](_0xb1564f['attributes'],function(_0x29f4dd){var _0x4bc044={};_0x4bc044[_0x29f4dd]={'$like':'%'+_0xf69595['query']['filter']+'%'};return _0x4bc044;})});}_0xb1564f=_[_0xc8f4('0xc3')]({},_0xb1564f,_0xf69595['options']);return _0x55d93f[_0xc8f4('0xd6')](_0xb1564f);}})[_0xc8f4('0x13')](function(_0xa504d6){if(_0xa504d6){_0x47b575=_0xa504d6[_0xc8f4('0x4c')];if(!_0xf69595[_0xc8f4('0x44')][_0xc8f4('0xc5')](_0xc8f4('0xca'))){_0xb1564f[_0xc8f4('0x23')]=qs[_0xc8f4('0x23')](_0xf69595[_0xc8f4('0x44')][_0xc8f4('0x23')]);_0xb1564f['offset']=qs[_0xc8f4('0x22')](_0xf69595[_0xc8f4('0x44')][_0xc8f4('0x22')]);}return _0x55d93f[_0xc8f4('0xd6')](_0xb1564f);}})[_0xc8f4('0x13')](function(_0x42b2f0){if(_0x42b2f0){return _0x42b2f0?{'count':_0x47b575,'rows':_0x42b2f0}:null;}})[_0xc8f4('0x13')](respondWithResult(_0x31dd8a,null))[_0xc8f4('0x1d')](handleError(_0x31dd8a,null));};exports[_0xc8f4('0xd8')]=function(_0xc86d32,_0x54f2d7){var _0x46768c={};var _0x539c8a={};var _0x4947d1;var _0x1261a9;return db[_0xc8f4('0x3b')][_0xc8f4('0x8e')]({'where':{'id':_0xc86d32['params']['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x54f2d7,null))[_0xc8f4('0x13')](function(_0x45f146){if(_0x45f146){_0x4947d1=_0x45f146;_0x539c8a[_0xc8f4('0x52')]=_['keys'](db[_0xc8f4('0xd9')][_0xc8f4('0x3c')]);_0x539c8a['query']=_[_0xc8f4('0x54')](_0xc86d32[_0xc8f4('0x44')]);_0x539c8a[_0xc8f4('0x55')]=_[_0xc8f4('0x56')](_0x539c8a['model'],_0x539c8a[_0xc8f4('0x44')]);_0x46768c['attributes']=_[_0xc8f4('0x56')](_0x539c8a[_0xc8f4('0x52')],qs[_0xc8f4('0x57')](_0xc86d32[_0xc8f4('0x44')][_0xc8f4('0x57')]));_0x46768c[_0xc8f4('0x47')]=_0x46768c['attributes']['length']?_0x46768c[_0xc8f4('0x47')]:_0x539c8a[_0xc8f4('0x52')];_0x46768c['order']=qs[_0xc8f4('0xc1')](_0xc86d32['query'][_0xc8f4('0xc1')]);_0x46768c[_0xc8f4('0x43')]=qs[_0xc8f4('0x55')](_[_0xc8f4('0xc2')](_0xc86d32[_0xc8f4('0x44')],_0x539c8a[_0xc8f4('0x55')]));if(_0xc86d32[_0xc8f4('0x44')][_0xc8f4('0x30')]){_0x46768c[_0xc8f4('0x43')]=_[_0xc8f4('0xc3')](_0x46768c['where'],{'$or':_['map'](_0x46768c[_0xc8f4('0x47')],function(_0x4e2454){var _0x5b9f43={};_0x5b9f43[_0x4e2454]={'$like':'%'+_0xc86d32[_0xc8f4('0x44')][_0xc8f4('0x30')]+'%'};return _0x5b9f43;})});}_0x46768c=_[_0xc8f4('0xc3')]({},_0x46768c,_0xc86d32['options']);return _0x4947d1[_0xc8f4('0xd8')](_0x46768c);}})[_0xc8f4('0x13')](function(_0xe9da8a){if(_0xe9da8a){_0x1261a9=_0xe9da8a['length'];if(!_0xc86d32[_0xc8f4('0x44')]['hasOwnProperty'](_0xc8f4('0xca'))){_0x46768c[_0xc8f4('0x23')]=qs[_0xc8f4('0x23')](_0xc86d32[_0xc8f4('0x44')][_0xc8f4('0x23')]);_0x46768c[_0xc8f4('0x22')]=qs['offset'](_0xc86d32[_0xc8f4('0x44')][_0xc8f4('0x22')]);}return _0x4947d1[_0xc8f4('0xd8')](_0x46768c);}})[_0xc8f4('0x13')](function(_0x3b32bb){if(_0x3b32bb){return _0x3b32bb?{'count':_0x1261a9,'rows':_0x3b32bb}:null;}})['then'](respondWithResult(_0x54f2d7,null))[_0xc8f4('0x1d')](handleError(_0x54f2d7,null));};exports[_0xc8f4('0xda')]=function(_0x39acae,_0x1d3c5c){var _0x3e920d={'raw':!![],'where':{}};var _0x7f2fd0={};var _0x24d75a={'count':0x0,'rows':[]};return db[_0xc8f4('0x3b')][_0xc8f4('0x8e')]({'where':{'id':_0x39acae[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x1d3c5c,null))[_0xc8f4('0x13')](function(_0x4c5ba5){if(_0x4c5ba5){_0x7f2fd0[_0xc8f4('0x52')]=_[_0xc8f4('0x54')](db[_0xc8f4('0xdb')]['rawAttributes']);_0x7f2fd0[_0xc8f4('0x44')]=_['keys'](_0x39acae['query']);_0x7f2fd0[_0xc8f4('0x55')]=_[_0xc8f4('0x56')](_0x7f2fd0[_0xc8f4('0x52')],_0x7f2fd0[_0xc8f4('0x44')]);_0x3e920d[_0xc8f4('0x47')]=_[_0xc8f4('0x56')](_0x7f2fd0[_0xc8f4('0x52')],qs[_0xc8f4('0x57')](_0x39acae[_0xc8f4('0x44')]['fields']));_0x3e920d['attributes']=_0x3e920d['attributes']['length']?_0x3e920d[_0xc8f4('0x47')]:_0x7f2fd0[_0xc8f4('0x52')];if(!_0x39acae[_0xc8f4('0x44')][_0xc8f4('0xc5')](_0xc8f4('0xca'))){_0x3e920d['limit']=qs[_0xc8f4('0x23')](_0x39acae[_0xc8f4('0x44')][_0xc8f4('0x23')]);_0x3e920d[_0xc8f4('0x22')]=qs[_0xc8f4('0x22')](_0x39acae[_0xc8f4('0x44')][_0xc8f4('0x22')]);}_0x3e920d[_0xc8f4('0xc0')]=qs[_0xc8f4('0xc1')](_0x39acae[_0xc8f4('0x44')][_0xc8f4('0xc1')]);_0x3e920d['where']=qs[_0xc8f4('0x55')](_[_0xc8f4('0xc2')](_0x39acae[_0xc8f4('0x44')],_0x7f2fd0[_0xc8f4('0x55')]));_0x3e920d[_0xc8f4('0x43')]['UserId']=_0x4c5ba5['id'];if(_0x39acae[_0xc8f4('0x44')][_0xc8f4('0x30')]){_0x3e920d[_0xc8f4('0x43')]=_['merge'](_0x3e920d[_0xc8f4('0x43')],{'$or':_[_0xc8f4('0x32')](_0x3e920d[_0xc8f4('0x47')],function(_0x14cb22){var _0x545c63={};_0x545c63[_0x14cb22]={'$like':'%'+_0x39acae[_0xc8f4('0x44')][_0xc8f4('0x30')]+'%'};return _0x545c63;})});}_0x3e920d=_[_0xc8f4('0xc3')]({},_0x3e920d,_0x39acae[_0xc8f4('0x58')]);return db[_0xc8f4('0xdb')][_0xc8f4('0x25')]({'where':_0x3e920d[_0xc8f4('0x43')]})[_0xc8f4('0x13')](function(_0x4db57c){_0x24d75a[_0xc8f4('0x25')]=_0x4db57c;if(_0x39acae[_0xc8f4('0x44')][_0xc8f4('0x45')]){_0x3e920d[_0xc8f4('0x46')]=[{'all':!![]}];}return db[_0xc8f4('0xdb')]['findAll'](_0x3e920d);})[_0xc8f4('0x13')](function(_0x3a908d){_0x24d75a[_0xc8f4('0x49')]=_0x3a908d;return _0x24d75a;});}})[_0xc8f4('0x13')](respondWithFilteredResult(_0x1d3c5c,_0x3e920d))[_0xc8f4('0x1d')](handleError(_0x1d3c5c,null));};exports[_0xc8f4('0xdc')]=function(_0x503dde,_0x3be423){var _0x51fd76={};var _0x562c10={};var _0xb30ece;var _0x12d0c8;return db[_0xc8f4('0x3b')][_0xc8f4('0x8e')]({'where':{'id':_0x503dde['params']['id']}})['then'](handleEntityNotFound(_0x3be423,null))['then'](function(_0x5d84b){if(_0x5d84b){_0xb30ece=_0x5d84b;_0x562c10[_0xc8f4('0x52')]=_[_0xc8f4('0x54')](db[_0xc8f4('0xdd')]['rawAttributes']);_0x562c10[_0xc8f4('0x44')]=_['keys'](_0x503dde[_0xc8f4('0x44')]);_0x562c10[_0xc8f4('0x55')]=_[_0xc8f4('0x56')](_0x562c10['model'],_0x562c10[_0xc8f4('0x44')]);_0x51fd76[_0xc8f4('0x47')]=_[_0xc8f4('0x56')](_0x562c10['model'],qs[_0xc8f4('0x57')](_0x503dde[_0xc8f4('0x44')][_0xc8f4('0x57')]));_0x51fd76[_0xc8f4('0x47')]=_0x51fd76[_0xc8f4('0x47')][_0xc8f4('0x4c')]?_0x51fd76[_0xc8f4('0x47')]:_0x562c10[_0xc8f4('0x52')];_0x51fd76[_0xc8f4('0xc0')]=qs[_0xc8f4('0xc1')](_0x503dde['query'][_0xc8f4('0xc1')]);_0x51fd76['where']=qs[_0xc8f4('0x55')](_[_0xc8f4('0xc2')](_0x503dde[_0xc8f4('0x44')],_0x562c10['filters']));if(_0x503dde['query']['filter']){_0x51fd76[_0xc8f4('0x43')]=_['merge'](_0x51fd76[_0xc8f4('0x43')],{'$or':_[_0xc8f4('0x32')](_0x51fd76['attributes'],function(_0x5735da){var _0x4e2e10={};_0x4e2e10[_0x5735da]={'$like':'%'+_0x503dde[_0xc8f4('0x44')][_0xc8f4('0x30')]+'%'};return _0x4e2e10;})});}_0x51fd76=_['merge']({},_0x51fd76,_0x503dde[_0xc8f4('0x58')]);return _0xb30ece[_0xc8f4('0xdc')](_0x51fd76);}})[_0xc8f4('0x13')](function(_0x4d9e36){if(_0x4d9e36){_0x12d0c8=_0x4d9e36['length'];if(!_0x503dde[_0xc8f4('0x44')]['hasOwnProperty'](_0xc8f4('0xca'))){_0x51fd76[_0xc8f4('0x23')]=qs['limit'](_0x503dde[_0xc8f4('0x44')][_0xc8f4('0x23')]);_0x51fd76[_0xc8f4('0x22')]=qs[_0xc8f4('0x22')](_0x503dde[_0xc8f4('0x44')][_0xc8f4('0x22')]);}return _0xb30ece[_0xc8f4('0xdc')](_0x51fd76);}})[_0xc8f4('0x13')](function(_0x4adb04){if(_0x4adb04){return _0x4adb04?{'count':_0x12d0c8,'rows':_0x4adb04}:null;}})[_0xc8f4('0x13')](respondWithResult(_0x3be423,null))[_0xc8f4('0x1d')](handleError(_0x3be423,null));};exports[_0xc8f4('0xde')]=function(_0x5d13d1,_0x4aaa9f){var _0x22a8bc={};var _0x3a2582={};var _0x2043f;var _0x3b2c18;return db[_0xc8f4('0x3b')][_0xc8f4('0x8e')]({'where':{'id':_0x5d13d1['params']['id']}})['then'](handleEntityNotFound(_0x4aaa9f,null))[_0xc8f4('0x13')](function(_0x5ad4fe){if(_0x5ad4fe){_0x2043f=_0x5ad4fe;_0x3a2582[_0xc8f4('0x52')]=_[_0xc8f4('0x54')](db[_0xc8f4('0xdf')]['rawAttributes']);_0x3a2582[_0xc8f4('0x44')]=_[_0xc8f4('0x54')](_0x5d13d1[_0xc8f4('0x44')]);_0x3a2582[_0xc8f4('0x55')]=_[_0xc8f4('0x56')](_0x3a2582['model'],_0x3a2582['query']);_0x22a8bc[_0xc8f4('0x47')]=_[_0xc8f4('0x56')](_0x3a2582[_0xc8f4('0x52')],qs[_0xc8f4('0x57')](_0x5d13d1[_0xc8f4('0x44')][_0xc8f4('0x57')]));_0x22a8bc[_0xc8f4('0x47')]=_0x22a8bc[_0xc8f4('0x47')][_0xc8f4('0x4c')]?_0x22a8bc[_0xc8f4('0x47')]:_0x3a2582[_0xc8f4('0x52')];_0x22a8bc[_0xc8f4('0xc0')]=qs['sort'](_0x5d13d1[_0xc8f4('0x44')]['sort']);_0x22a8bc['where']=qs[_0xc8f4('0x55')](_['pick'](_0x5d13d1[_0xc8f4('0x44')],_0x3a2582[_0xc8f4('0x55')]));if(_0x5d13d1[_0xc8f4('0x44')][_0xc8f4('0x30')]){_0x22a8bc['where']=_['merge'](_0x22a8bc[_0xc8f4('0x43')],{'$or':_[_0xc8f4('0x32')](_0x22a8bc[_0xc8f4('0x47')],function(_0x2d07c5){var _0x4459f9={};_0x4459f9[_0x2d07c5]={'$like':'%'+_0x5d13d1['query'][_0xc8f4('0x30')]+'%'};return _0x4459f9;})});}_0x22a8bc=_[_0xc8f4('0xc3')]({},_0x22a8bc,_0x5d13d1['options']);return _0x2043f['getFaxInteractions'](_0x22a8bc);}})[_0xc8f4('0x13')](function(_0x41d88a){if(_0x41d88a){_0x3b2c18=_0x41d88a[_0xc8f4('0x4c')];if(!_0x5d13d1['query'][_0xc8f4('0xc5')](_0xc8f4('0xca'))){_0x22a8bc[_0xc8f4('0x23')]=qs[_0xc8f4('0x23')](_0x5d13d1[_0xc8f4('0x44')][_0xc8f4('0x23')]);_0x22a8bc[_0xc8f4('0x22')]=qs[_0xc8f4('0x22')](_0x5d13d1[_0xc8f4('0x44')][_0xc8f4('0x22')]);}return _0x2043f[_0xc8f4('0xde')](_0x22a8bc);}})['then'](function(_0x203a6f){if(_0x203a6f){return _0x203a6f?{'count':_0x3b2c18,'rows':_0x203a6f}:null;}})[_0xc8f4('0x13')](respondWithResult(_0x4aaa9f,null))[_0xc8f4('0x1d')](handleError(_0x4aaa9f,null));};exports[_0xc8f4('0xe0')]=function(_0xcc82c0,_0x4b1498){var _0x36432d={};var _0xd918c4={};var _0x464fd0;var _0x4acd1b;return db['User']['findOne']({'where':{'id':_0xcc82c0[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x4b1498,null))[_0xc8f4('0x13')](function(_0xd55812){if(_0xd55812){_0x464fd0=_0xd55812;_0xd918c4[_0xc8f4('0x52')]=_[_0xc8f4('0x54')](db['WhatsappInteraction']['rawAttributes']);_0xd918c4['query']=_[_0xc8f4('0x54')](_0xcc82c0[_0xc8f4('0x44')]);_0xd918c4['filters']=_['intersection'](_0xd918c4[_0xc8f4('0x52')],_0xd918c4[_0xc8f4('0x44')]);_0x36432d['attributes']=_[_0xc8f4('0x56')](_0xd918c4[_0xc8f4('0x52')],qs[_0xc8f4('0x57')](_0xcc82c0[_0xc8f4('0x44')][_0xc8f4('0x57')]));_0x36432d['attributes']=_0x36432d[_0xc8f4('0x47')]['length']?_0x36432d[_0xc8f4('0x47')]:_0xd918c4['model'];_0x36432d[_0xc8f4('0xc0')]=qs[_0xc8f4('0xc1')](_0xcc82c0[_0xc8f4('0x44')][_0xc8f4('0xc1')]);_0x36432d[_0xc8f4('0x43')]=qs[_0xc8f4('0x55')](_[_0xc8f4('0xc2')](_0xcc82c0[_0xc8f4('0x44')],_0xd918c4['filters']));if(_0xcc82c0['query'][_0xc8f4('0x30')]){_0x36432d[_0xc8f4('0x43')]=_[_0xc8f4('0xc3')](_0x36432d[_0xc8f4('0x43')],{'$or':_['map'](_0x36432d[_0xc8f4('0x47')],function(_0x250f86){var _0x354783={};_0x354783[_0x250f86]={'$like':'%'+_0xcc82c0['query']['filter']+'%'};return _0x354783;})});}_0x36432d=_[_0xc8f4('0xc3')]({},_0x36432d,_0xcc82c0[_0xc8f4('0x58')]);return _0x464fd0[_0xc8f4('0xe0')](_0x36432d);}})[_0xc8f4('0x13')](function(_0x299112){if(_0x299112){_0x4acd1b=_0x299112[_0xc8f4('0x4c')];if(!_0xcc82c0[_0xc8f4('0x44')][_0xc8f4('0xc5')]('nolimit')){_0x36432d[_0xc8f4('0x23')]=qs[_0xc8f4('0x23')](_0xcc82c0[_0xc8f4('0x44')][_0xc8f4('0x23')]);_0x36432d['offset']=qs[_0xc8f4('0x22')](_0xcc82c0['query']['offset']);}return _0x464fd0[_0xc8f4('0xe0')](_0x36432d);}})['then'](function(_0x306370){if(_0x306370){return _0x306370?{'count':_0x4acd1b,'rows':_0x306370}:null;}})['then'](respondWithResult(_0x4b1498,null))['catch'](handleError(_0x4b1498,null));};exports['login']=function(_0x4ba113,_0xcfbea0,_0x3d1212){var _0x1c7e41;var _0x470afc;var _0x110785;var _0xf9379c=!_[_0xc8f4('0x64')](_0x4ba113['params']['id'])?_0x4ba113[_0xc8f4('0x51')]['id']:!_[_0xc8f4('0x64')](_0x4ba113[_0xc8f4('0x2b')]['id'])?_0x4ba113['user']['id']:null;return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0xf9379c,'role':{'$or':[_0xc8f4('0x29'),_0xc8f4('0x2b'),_0xc8f4('0x2d')]}},'attributes':['id',_0xc8f4('0x36'),_0xc8f4('0xe1'),'mobile',_0xc8f4('0x5c'),'internal','loginInPause']})['then'](function(_0x2a4e18){if(_0x2a4e18){if(_0x2a4e18[_0xc8f4('0x5c')]===_0xc8f4('0x2d')){_0x1c7e41=_0x2a4e18;if(_0x4ba113[_0xc8f4('0x5b')]['interface']){_0x110785=util['format']('LOCAL/%s@from-sip/n',_0x1c7e41[_0x4ba113['body']['interface']]);}else if(_0x4ba113[_0xc8f4('0x5b')][_0xc8f4('0xe2')]){_0x110785=util['format'](_0xc8f4('0xa7'),_0x4ba113[_0xc8f4('0x5b')][_0xc8f4('0xe2')]);}else{_0x110785=util[_0xc8f4('0xa6')](_0xc8f4('0xa7'),_0x1c7e41[_0xc8f4('0x36')]);}socket['to'](util[_0xc8f4('0xa6')](_0xc8f4('0xe3'),_0x1c7e41[_0xc8f4('0x36')]))[_0xc8f4('0xa1')](_0xc8f4('0xe4'),{'user':{'id':_0x1c7e41['id'],'name':_0x1c7e41[_0xc8f4('0x36')]},'ip':_0x4ba113['headers'][_0xc8f4('0xe5')]||_0x4ba113[_0xc8f4('0xe6')][_0xc8f4('0xe7')]||_0x4ba113['socket'][_0xc8f4('0xe7')]||_0x4ba113[_0xc8f4('0xe6')]['socket']['remoteAddress']});return db['UserVoiceQueueRt'][_0xc8f4('0x28')]({'where':{'membername':_0x1c7e41[_0xc8f4('0x36')]},'individualHooks':!![]});}}else{throw new db['Sequelize']['ValidationError'](_0xc8f4('0xe8'));}})[_0xc8f4('0x13')](function(){if(_0x1c7e41){return _0x1c7e41[_0xc8f4('0xe9')]({'raw':!![]});}})['then'](function(_0xcc99e7){if(_0x1c7e41){var _0x30178f=[];if(_0xcc99e7){_0x470afc=_0xcc99e7;if(_0x470afc[_0xc8f4('0x4c')]){for(var _0x1927de=0x0;_0x1927de<_0x470afc[_0xc8f4('0x4c')];_0x1927de++){_0x30178f[_0xc8f4('0x48')]({'membername':_0x1c7e41[_0xc8f4('0x36')],'UserId':_0x1c7e41['id'],'queue_name':_0x470afc[_0x1927de][_0xc8f4('0x36')],'VoiceQueueId':_0x470afc[_0x1927de]['id'],'interface':_0x110785,'paused':_0x1c7e41[_0xc8f4('0x94')]||![],'penalty':_0x470afc[_0x1927de][_0xc8f4('0xea')]||0x0});}return BPromise[_0xc8f4('0x82')](_0x30178f,function(_0x4bb914){return db[_0xc8f4('0xeb')][_0xc8f4('0xec')](_0x4bb914);});}}}})['then'](function(){if(_0x1c7e41){return db[_0xc8f4('0xed')]['findAll']({'where':{'membername':_0x1c7e41[_0xc8f4('0x36')],'exitAt':null}});}})[_0xc8f4('0x13')](function(_0x4afcdc){if(_0x1c7e41){var _0x2e00bc=[];_0x4afcdc[_0xc8f4('0xee')](function(_0x585464){_0x2e00bc[_0xc8f4('0x48')](_0x585464['update']({'exitAt':moment()[_0xc8f4('0xa6')](_0xc8f4('0xef'))}));});return BPromise[_0xc8f4('0x5a')](_0x2e00bc);}})[_0xc8f4('0x13')](function(){if(_0x1c7e41){var _0x223b8d=[];var _0x384254=[];var _0x425641=utils[_0xc8f4('0xf0')]();var _0x4f5046={'membername':_0x1c7e41[_0xc8f4('0x36')],'interface':_0x110785,'enterAt':moment()[_0xc8f4('0xa6')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x1c7e41[_0xc8f4('0x5c')],'internal':_0x1c7e41[_0xc8f4('0x5f')]};_0x425641['forEach'](function(_0x47cede){_0x223b8d[_0xc8f4('0x48')](_['merge']({'channel':_0x47cede,'type':_0xc8f4('0xf1'),'data1':_0x4ba113[_0xc8f4('0x5b')]['device'],'data2':_0x110785},_0x4f5046));if(_0x1c7e41[_0xc8f4('0x94')]){_0x384254['push'](_[_0xc8f4('0xc3')]({'channel':_0x47cede,'type':_0xc8f4('0xf2'),'data1':'LOGININPAUSE'},_0x4f5046));}});return db['MemberReport'][_0xc8f4('0x7f')](_0x223b8d[_0xc8f4('0xf3')](_0x384254),{'individualHooks':!![]});}})[_0xc8f4('0x13')](function(){if(_0x1c7e41){return _0x1c7e41[_0xc8f4('0xf4')]({'online':!![],'lastLoginAt':moment()[_0xc8f4('0xa6')](_0xc8f4('0xef')),'voicePause':_0x1c7e41[_0xc8f4('0x94')]||![],'mailPause':_0x1c7e41[_0xc8f4('0x94')]||![],'chatPause':_0x1c7e41[_0xc8f4('0x94')]||![],'faxPause':_0x1c7e41[_0xc8f4('0x94')]||![],'smsPause':_0x1c7e41[_0xc8f4('0x94')]||![],'openchannelPause':_0x1c7e41['loginInPause']||![],'whatsappPause':_0x1c7e41['loginInPause']||![],'pauseType':_0x1c7e41[_0xc8f4('0x94')]?_0xc8f4('0xf5'):null,'interface':_0x110785,'lastPauseAt':moment()[_0xc8f4('0xa6')]('YYYY-MM-DD\x20HH:mm:ss')});}})[_0xc8f4('0x13')](function(_0x3508a9){if(_0x4ba113[_0xc8f4('0xf6')]){return _0x3d1212();}else{return BPromise[_0xc8f4('0xf7')](_0x3508a9)[_0xc8f4('0x13')](respondWithResult(_0xcfbea0,null));}})['catch'](handleError(_0xcfbea0,null));};exports[_0xc8f4('0xf8')]=function(_0x4e4840,_0x359fe2){var _0xf8ef72;return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x4e4840['params']['id'],'role':_0xc8f4('0x2d')},'attributes':['id','name',_0xc8f4('0x5c')]})['then'](handleEntityNotFound(_0x359fe2,null))[_0xc8f4('0x13')](function(_0x12b9d7){if(_0x12b9d7){_0xf8ef72=_0x12b9d7;return db[_0xc8f4('0xeb')][_0xc8f4('0x28')]({'where':{'membername':_0xf8ef72[_0xc8f4('0x36')]},'individualHooks':!![]});}})[_0xc8f4('0x13')](function(){return db[_0xc8f4('0xed')]['findAll']({'where':{'membername':_0xf8ef72['name'],'exitAt':null}});})[_0xc8f4('0x13')](function(_0x1530c3){var _0x2aa90b=[];_0x1530c3[_0xc8f4('0xee')](function(_0x216cf0){_0x2aa90b[_0xc8f4('0x48')](_0x216cf0[_0xc8f4('0xf4')]({'exitAt':moment()[_0xc8f4('0xa6')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise['all'](_0x2aa90b);})[_0xc8f4('0x13')](function(){return _0xf8ef72[_0xc8f4('0xf4')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xc8f4('0x13')](respondWithResult(_0x359fe2,null))[_0xc8f4('0x1d')](handleError(_0x359fe2,null));};exports[_0xc8f4('0xf9')]=function(_0x2963f7,_0x404f79){var _0x1f87cd;return db['UserVoiceQueueRt'][_0xc8f4('0xf4')]({'paused':0x1},{'where':{'UserId':_0x2963f7[_0xc8f4('0x51')]['id']},'individualHooks':!![]})[_0xc8f4('0x13')](function(){return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x2963f7[_0xc8f4('0x51')]['id'],'role':_0xc8f4('0x2d')},'attributes':['id','name',_0xc8f4('0x5c'),_0xc8f4('0x5f'),_0xc8f4('0x96')]});})[_0xc8f4('0x13')](handleEntityNotFound(_0x404f79,null))[_0xc8f4('0x13')](function(_0x67ded8){if(_0x67ded8){_0x1f87cd=_0x67ded8;return respondWithRpcPromise(_0xc8f4('0xfa'),_0xc8f4('0xf9'),{'id':_0x1f87cd['id'],'name':_0x1f87cd[_0xc8f4('0x36')],'pause':!![]});}})[_0xc8f4('0x13')](function(){if(_0x1f87cd){return db[_0xc8f4('0xed')][_0xc8f4('0xcc')]({'where':{'membername':_0x1f87cd[_0xc8f4('0x36')],'type':_0xc8f4('0xf2'),'exitAt':null}});}})['then'](function(_0x4d290c){if(_0x4d290c['length']){var _0x18687d=moment()['format'](_0xc8f4('0xef'));for(var _0x4461a5=0x0,_0x45ff0e=_0x4d290c[_0xc8f4('0x4c')];_0x4461a5<_0x45ff0e;_0x4461a5++){_0x4d290c[_0x4461a5][_0xc8f4('0xfb')]({'exitAt':_0x18687d});}}})[_0xc8f4('0x13')](function(){var _0x41d3a8=[];var _0x36750e=utils[_0xc8f4('0xf0')]();_0x36750e[_0xc8f4('0xee')](function(_0x1a17e6){_0x41d3a8[_0xc8f4('0x48')]({'channel':_0x1a17e6,'membername':_0x1f87cd[_0xc8f4('0x36')],'interface':_[_0xc8f4('0x64')](_0x1f87cd[_0xc8f4('0x96')])?util[_0xc8f4('0xa6')]('SIP/%s',_0x1f87cd[_0xc8f4('0x36')]):_0x1f87cd['interface'],'type':_0xc8f4('0xf2'),'enterAt':moment()[_0xc8f4('0xa6')](_0xc8f4('0xef')),'data1':_0x2963f7[_0xc8f4('0x5b')][_0xc8f4('0x3e')]||_0xc8f4('0xfc'),'role':_0x1f87cd[_0xc8f4('0x5c')],'internal':_0x1f87cd['internal']});});return db[_0xc8f4('0xed')][_0xc8f4('0x7f')](_0x41d3a8,{'individualHooks':!![]});})[_0xc8f4('0x13')](function(){return _0x1f87cd['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x2963f7[_0xc8f4('0x5b')][_0xc8f4('0x3e')]||_0xc8f4('0xfc'),'lastPauseAt':moment()[_0xc8f4('0xa6')](_0xc8f4('0xef'))});})['then'](respondWithResult(_0x404f79,null))[_0xc8f4('0x1d')](handleError(_0x404f79,null));};exports[_0xc8f4('0xfd')]=function(_0x12cff9,_0x6fa587){var _0x55daa3;return db[_0xc8f4('0x3b')]['find']({'where':{'id':_0x12cff9[_0xc8f4('0x51')]['id']},'attributes':['id','name',_0xc8f4('0x5c'),_0xc8f4('0x95'),_0xc8f4('0xfe'),'chatPause',_0xc8f4('0xff'),_0xc8f4('0x100'),_0xc8f4('0x101'),_0xc8f4('0x102'),_0xc8f4('0x103'),_0xc8f4('0x104')]})[_0xc8f4('0x13')](handleEntityNotFound(_0x6fa587,null))[_0xc8f4('0x13')](function(_0x29bb24){if(_0x29bb24){_0x55daa3=_0x29bb24;if(_0x12cff9[_0xc8f4('0x5b')]['channel']&&!utils[_0xc8f4('0x97')](_0x12cff9[_0xc8f4('0x5b')][_0xc8f4('0x93')])){throw new db['Sequelize'][(_0xc8f4('0x89'))]('Unknown\x20channel');}switch(_0x12cff9['body'][_0xc8f4('0x93')]){case _0xc8f4('0xa2'):return respondWithRpcPromise('QueuePause',_0xc8f4('0xfd'),{'id':_0x55daa3['id'],'name':_0x55daa3['name'],'pause':![]})[_0xc8f4('0x13')](function(){return db[_0xc8f4('0xeb')]['update']({'paused':0x0},{'where':{'UserId':_0x55daa3['id']},'individualHooks':!![]});})['then'](function(){return db['MemberReport'][_0xc8f4('0x35')]({'where':{'channel':_0x12cff9['body'][_0xc8f4('0x93')],'membername':_0x55daa3[_0xc8f4('0x36')],'type':_0xc8f4('0xf2'),'exitAt':null}});})[_0xc8f4('0x13')](function(_0x315fa6){if(_0x315fa6){return _0x315fa6[_0xc8f4('0xf4')]({'exitAt':moment()[_0xc8f4('0xa6')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xc8f4('0x105')},{'individualHooks':!![]});}return null;})[_0xc8f4('0x13')](function(){return _0x55daa3['update']({'voicePause':![]});});case _0xc8f4('0xb3'):case _0xc8f4('0x4d'):case _0xc8f4('0xb2'):case _0xc8f4('0x59'):case _0xc8f4('0x50'):case'openchannel':return db[_0xc8f4('0xed')][_0xc8f4('0x35')]({'where':{'channel':_0x12cff9[_0xc8f4('0x5b')][_0xc8f4('0x93')],'membername':_0x55daa3[_0xc8f4('0x36')],'type':_0xc8f4('0xf2'),'exitAt':null}})['then'](function(_0x2c54f9){if(_0x2c54f9){return _0x2c54f9['update']({'exitAt':moment()['format'](_0xc8f4('0xef')),'data2':'manual'},{'individualHooks':!![]});}return null;})[_0xc8f4('0x13')](function(){var _0x2a5bbf={};_['set'](_0x2a5bbf,util[_0xc8f4('0xa6')]('%s%s',_0x12cff9[_0xc8f4('0x5b')]['channel'],_0xc8f4('0x106')),![]);return _0x55daa3[_0xc8f4('0xf4')](_0x2a5bbf);});default:return respondWithRpcPromise('QueuePause',_0xc8f4('0xfd'),{'id':_0x55daa3['id'],'name':_0x55daa3[_0xc8f4('0x36')],'pause':![]})[_0xc8f4('0x13')](function(){return db[_0xc8f4('0xeb')][_0xc8f4('0xf4')]({'paused':0x0},{'where':{'UserId':_0x55daa3['id']}});})[_0xc8f4('0x13')](function(){return db['MemberReport'][_0xc8f4('0xcc')]({'where':{'membername':_0x55daa3[_0xc8f4('0x36')],'type':_0xc8f4('0xf2'),'exitAt':null}});})[_0xc8f4('0x13')](function(_0x3fb8eb){var _0x182670=[];_0x3fb8eb[_0xc8f4('0xee')](function(_0xeecb6f){_0x182670[_0xc8f4('0x48')](_0xeecb6f[_0xc8f4('0xf4')]({'exitAt':moment()[_0xc8f4('0xa6')](_0xc8f4('0xef')),'data2':_0xc8f4('0x105')}));});return BPromise[_0xc8f4('0x5a')](_0x182670);})[_0xc8f4('0x13')](function(){return _0x55daa3[_0xc8f4('0xf4')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0xc8f4('0x13')](respondWithResult(_0x6fa587,null))[_0xc8f4('0x1d')](handleError(_0x6fa587,null));};exports[_0xc8f4('0x107')]=function(_0x31c760,_0x9de256){var _0x2f5feb={};var _0x1013f4={};var _0x14d1bc;var _0xb6a10c;return db['User'][_0xc8f4('0x8e')]({'where':{'id':_0x31c760[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x9de256,null))[_0xc8f4('0x13')](function(_0x17b935){if(_0x17b935){_0x14d1bc=_0x17b935;_0x1013f4[_0xc8f4('0x52')]=_[_0xc8f4('0x54')](db['Team']['rawAttributes']);_0x1013f4[_0xc8f4('0x44')]=_[_0xc8f4('0x54')](_0x31c760[_0xc8f4('0x44')]);_0x1013f4[_0xc8f4('0x55')]=_[_0xc8f4('0x56')](_0x1013f4[_0xc8f4('0x52')],_0x1013f4[_0xc8f4('0x44')]);_0x2f5feb['attributes']=_[_0xc8f4('0x56')](_0x1013f4['model'],qs[_0xc8f4('0x57')](_0x31c760['query'][_0xc8f4('0x57')]));_0x2f5feb[_0xc8f4('0x47')]=_0x2f5feb[_0xc8f4('0x47')][_0xc8f4('0x4c')]?_0x2f5feb['attributes']:_0x1013f4[_0xc8f4('0x52')];_0x2f5feb[_0xc8f4('0xc0')]=qs[_0xc8f4('0xc1')](_0x31c760['query']['sort']);_0x2f5feb['where']=qs[_0xc8f4('0x55')](_[_0xc8f4('0xc2')](_0x31c760['query'],_0x1013f4[_0xc8f4('0x55')]));if(_0x31c760['query'][_0xc8f4('0x30')]){_0x2f5feb[_0xc8f4('0x43')]=_['merge'](_0x2f5feb[_0xc8f4('0x43')],{'$or':_[_0xc8f4('0x32')](_0x2f5feb[_0xc8f4('0x47')],function(_0x442fdb){var _0x5dc144={};_0x5dc144[_0x442fdb]={'$like':'%'+_0x31c760[_0xc8f4('0x44')][_0xc8f4('0x30')]+'%'};return _0x5dc144;})});}_0x2f5feb=_[_0xc8f4('0xc3')]({},_0x2f5feb,_0x31c760[_0xc8f4('0x58')]);return _0x14d1bc[_0xc8f4('0x107')](_0x2f5feb);}})[_0xc8f4('0x13')](function(_0x68e506){if(_0x68e506){_0xb6a10c=_0x68e506[_0xc8f4('0x4c')];if(!_0x31c760[_0xc8f4('0x44')]['hasOwnProperty'](_0xc8f4('0xca'))){_0x2f5feb[_0xc8f4('0x23')]=qs[_0xc8f4('0x23')](_0x31c760[_0xc8f4('0x44')][_0xc8f4('0x23')]);_0x2f5feb[_0xc8f4('0x22')]=qs[_0xc8f4('0x22')](_0x31c760[_0xc8f4('0x44')][_0xc8f4('0x22')]);}return _0x14d1bc[_0xc8f4('0x107')](_0x2f5feb);}})['then'](function(_0x16f853){if(_0x16f853){return _0x16f853?{'count':_0xb6a10c,'rows':_0x16f853}:null;}})[_0xc8f4('0x13')](respondWithResult(_0x9de256,null))[_0xc8f4('0x1d')](handleError(_0x9de256,null));};exports[_0xc8f4('0x108')]=function(_0xfcd85,_0x5ac6f0){return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0xfcd85[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x5ac6f0,null))[_0xc8f4('0x13')](function(_0x3f79a8){if(_0x3f79a8){var _0x27e011=_0x3f79a8[_0xc8f4('0xa4')]({'plain':!![]});return _0x3f79a8[_0xc8f4('0x108')](_0xfcd85[_0xc8f4('0x5b')][_0xc8f4('0x9c')],_[_0xc8f4('0x109')](_0xfcd85[_0xc8f4('0x5b')],[_0xc8f4('0x9c'),'id'])||{})[_0xc8f4('0x13')](function(){for(var _0x21d92f=0x0;_0x21d92f<_0xfcd85[_0xc8f4('0x5b')][_0xc8f4('0x9c')][_0xc8f4('0x4c')];_0x21d92f++){var _0x2510e4=[];db[_0xc8f4('0x10a')][_0xc8f4('0x8e')]({'where':{'id':_0xfcd85['body'][_0xc8f4('0x9c')][_0x21d92f]}})['then'](function(_0x280059){_0x2510e4[_0xc8f4('0x48')](_0x280059[_0xc8f4('0xe9')]()[_0xc8f4('0x13')](function(_0x3f8c18){for(var _0x3ca535=0x0;_0x3ca535<_0x3f8c18['length'];_0x3ca535++){_0x3f8c18[_0x3ca535][_0xc8f4('0x10b')](_0xc8f4('0x93'),_0xc8f4('0x10c'));}return _0x3f8c18;}));_0x2510e4[_0xc8f4('0x48')](_0x280059[_0xc8f4('0x10d')]()[_0xc8f4('0x13')](function(_0x5f4c2d){for(var _0x5a9a7e=0x0;_0x5a9a7e<_0x5f4c2d[_0xc8f4('0x4c')];_0x5a9a7e++){_0x5f4c2d[_0x5a9a7e][_0xc8f4('0x10b')](_0xc8f4('0x93'),_0xc8f4('0x10e'));}return _0x5f4c2d;}));_0x2510e4[_0xc8f4('0x48')](_0x280059[_0xc8f4('0x10f')]()[_0xc8f4('0x13')](function(_0x10f959){for(var _0x431841=0x0;_0x431841<_0x10f959['length'];_0x431841++){_0x10f959[_0x431841]['setDataValue'](_0xc8f4('0x93'),'Mail');}return _0x10f959;}));_0x2510e4[_0xc8f4('0x48')](_0x280059[_0xc8f4('0x110')]()['then'](function(_0x31c02e){for(var _0x27fd0a=0x0;_0x27fd0a<_0x31c02e[_0xc8f4('0x4c')];_0x27fd0a++){_0x31c02e[_0x27fd0a][_0xc8f4('0x10b')](_0xc8f4('0x93'),_0xc8f4('0x111'));}return _0x31c02e;}));_0x2510e4[_0xc8f4('0x48')](_0x280059[_0xc8f4('0x112')]()[_0xc8f4('0x13')](function(_0x1ca2d1){for(var _0x341103=0x0;_0x341103<_0x1ca2d1['length'];_0x341103++){_0x1ca2d1[_0x341103][_0xc8f4('0x10b')](_0xc8f4('0x93'),_0xc8f4('0x113'));}return _0x1ca2d1;}));_0x2510e4[_0xc8f4('0x48')](_0x280059[_0xc8f4('0x114')]()['then'](function(_0x3a6fc0){for(var _0x46a1d0=0x0;_0x46a1d0<_0x3a6fc0[_0xc8f4('0x4c')];_0x46a1d0++){_0x3a6fc0[_0x46a1d0]['setDataValue'](_0xc8f4('0x93'),'Fax');}return _0x3a6fc0;}));_0x2510e4['push'](_0x280059['getOpenchannelQueues']()[_0xc8f4('0x13')](function(_0x55fd5b){for(var _0x2468dd=0x0;_0x2468dd<_0x55fd5b[_0xc8f4('0x4c')];_0x2468dd++){_0x55fd5b[_0x2468dd][_0xc8f4('0x10b')](_0xc8f4('0x93'),'Openchannel');}return _0x55fd5b;}));return BPromise[_0xc8f4('0x5a')](_0x2510e4);})[_0xc8f4('0x13')](function(_0x49f078){var _0x1245a6=_[_0xc8f4('0x115')](_0x49f078);_0x2510e4=[];return db['sequelize'][_0xc8f4('0x116')](function(_0x2e2565){for(var _0x2059f9=0x0;_0x2059f9<_0x1245a6[_0xc8f4('0x4c')];_0x2059f9++){_0x2510e4[_0xc8f4('0x48')](_0x1245a6[_0x2059f9][_0xc8f4('0x117')](_0x27e011['id']),{'transaction':_0x2e2565});}return BPromise[_0xc8f4('0x5a')](_0x2510e4)['then'](function(){if(_0x27e011[_0xc8f4('0xa5')]){return BPromise[_0xc8f4('0x82')](_['filter'](_0x1245a6,function(_0x38ce91){return _0x38ce91[_0xc8f4('0x118')](_0xc8f4('0x93'))===_0xc8f4('0x10c');}),function(_0x4713a6){return db['UserVoiceQueueRt'][_0xc8f4('0xec')]({'membername':_0x27e011[_0xc8f4('0x36')],'UserId':_0x27e011['id'],'queue_name':_0x4713a6[_0xc8f4('0x36')],'VoiceQueueId':_0x4713a6['id'],'interface':_[_0xc8f4('0x64')](_0x27e011[_0xc8f4('0x96')])?util[_0xc8f4('0xa6')]('SIP/%s',_0x27e011[_0xc8f4('0x36')]):_0x27e011[_0xc8f4('0x96')],'paused':_0x27e011[_0xc8f4('0x95')]||![],'penalty':_0x27e011[_0xc8f4('0x9d')]},{'transaction':_0x2e2565});});}else{return;}})['then'](function(){for(var _0x2e84d0=0x0;_0x2e84d0<_0x1245a6[_0xc8f4('0x4c')];_0x2e84d0++){var _0xc7280a=_0x1245a6[_0x2e84d0][_0xc8f4('0x118')](_0xc8f4('0x93'));var _0x11eb8a=_0xc7280a+_0xc8f4('0xa0');socket[_0xc8f4('0xa1')](_0xc8f4('0x2b')+_0xc7280a+_0xc8f4('0x119'),{'UserId':_0x27e011['id'],['queueField']:_0x1245a6[_0x2e84d0]['id']});}});});});}});}})[_0xc8f4('0x13')](respondWithStatusCode(_0x5ac6f0,null))[_0xc8f4('0x1d')](handleError(_0x5ac6f0,null));};exports['removeTeams']=function(_0x59955c,_0x53bbab){return db[_0xc8f4('0x3b')][_0xc8f4('0x8e')]({'where':{'id':_0x59955c[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x53bbab,null))[_0xc8f4('0x13')](function(_0x8847cd){if(_0x8847cd){var _0x5d61c6=_0x8847cd[_0xc8f4('0xa4')]({'plain':!![]});var _0x2a0ad4=_0x59955c[_0xc8f4('0x44')][_0xc8f4('0x9c')];return _0x8847cd['removeTeams'](_0x2a0ad4)['then'](function(){for(var _0x56229f=0x0;_0x56229f<_0x2a0ad4[_0xc8f4('0x4c')];_0x56229f++){var _0x3fd4fc=[];db[_0xc8f4('0x10a')]['findOne']({'where':{'id':_0x2a0ad4[_0x56229f]}})[_0xc8f4('0x13')](function(_0x29ab14){_0x3fd4fc[_0xc8f4('0x48')](_0x29ab14[_0xc8f4('0xe9')]()['then'](function(_0x362386){for(var _0x23bda5=0x0;_0x23bda5<_0x362386[_0xc8f4('0x4c')];_0x23bda5++){_0x362386[_0x23bda5]['setDataValue'](_0xc8f4('0x93'),'Voice');}return _0x362386;}));_0x3fd4fc[_0xc8f4('0x48')](_0x29ab14[_0xc8f4('0x10d')]()[_0xc8f4('0x13')](function(_0x421467){for(var _0x1324ef=0x0;_0x1324ef<_0x421467[_0xc8f4('0x4c')];_0x1324ef++){_0x421467[_0x1324ef][_0xc8f4('0x10b')](_0xc8f4('0x93'),_0xc8f4('0x10e'));}return _0x421467;}));_0x3fd4fc[_0xc8f4('0x48')](_0x29ab14[_0xc8f4('0x10f')]()[_0xc8f4('0x13')](function(_0x1f7d09){for(var _0x475ebc=0x0;_0x475ebc<_0x1f7d09[_0xc8f4('0x4c')];_0x475ebc++){_0x1f7d09[_0x475ebc][_0xc8f4('0x10b')](_0xc8f4('0x93'),_0xc8f4('0x11a'));}return _0x1f7d09;}));_0x3fd4fc[_0xc8f4('0x48')](_0x29ab14[_0xc8f4('0x110')]()[_0xc8f4('0x13')](function(_0x3de3d9){for(var _0x43f984=0x0;_0x43f984<_0x3de3d9[_0xc8f4('0x4c')];_0x43f984++){_0x3de3d9[_0x43f984][_0xc8f4('0x10b')]('channel',_0xc8f4('0x111'));}return _0x3de3d9;}));_0x3fd4fc['push'](_0x29ab14['getWhatsappQueues']()[_0xc8f4('0x13')](function(_0x55bd65){for(var _0x13c51c=0x0;_0x13c51c<_0x55bd65[_0xc8f4('0x4c')];_0x13c51c++){_0x55bd65[_0x13c51c][_0xc8f4('0x10b')](_0xc8f4('0x93'),'Whatsapp');}return _0x55bd65;}));_0x3fd4fc['push'](_0x29ab14[_0xc8f4('0x114')]()[_0xc8f4('0x13')](function(_0x53d188){for(var _0xd2ce7=0x0;_0xd2ce7<_0x53d188[_0xc8f4('0x4c')];_0xd2ce7++){_0x53d188[_0xd2ce7]['setDataValue']('channel',_0xc8f4('0x11b'));}return _0x53d188;}));_0x3fd4fc['push'](_0x29ab14['getOpenchannelQueues']()[_0xc8f4('0x13')](function(_0x59d09e){for(var _0x35b83e=0x0;_0x35b83e<_0x59d09e[_0xc8f4('0x4c')];_0x35b83e++){_0x59d09e[_0x35b83e][_0xc8f4('0x10b')](_0xc8f4('0x93'),_0xc8f4('0x11c'));}return _0x59d09e;}));return BPromise[_0xc8f4('0x5a')](_0x3fd4fc);})[_0xc8f4('0x13')](function(_0x36c706){var _0x4ee063=_[_0xc8f4('0x115')](_0x36c706);_0x3fd4fc=[];return db['sequelize'][_0xc8f4('0x116')](function(_0x5baa97){for(var _0x2252eb=0x0;_0x2252eb<_0x4ee063['length'];_0x2252eb++){_0x3fd4fc['push'](_0x4ee063[_0x2252eb][_0xc8f4('0x11d')](_0x5d61c6['id']),{'transaction':_0x5baa97});}return BPromise[_0xc8f4('0x5a')](_0x3fd4fc)['then'](function(){if(_0x5d61c6[_0xc8f4('0xa5')]){return BPromise['each'](_[_0xc8f4('0x30')](_0x4ee063,function(_0x5b7f3d){return _0x5b7f3d[_0xc8f4('0x118')](_0xc8f4('0x93'))==='Voice';}),function(_0xcff8a5){return db['UserVoiceQueueRt'][_0xc8f4('0x28')]({'where':{'VoiceQueueId':_0xcff8a5['id'],'UserId':_0x5d61c6['id']},'transaction':_0x5baa97});});}else{return;}})[_0xc8f4('0x13')](function(){for(var _0x2b13df=0x0;_0x2b13df<_0x4ee063['length'];_0x2b13df++){var _0x16eb0b=_0x4ee063[_0x2b13df][_0xc8f4('0x118')](_0xc8f4('0x93'));var _0x32ea47=_0x16eb0b+_0xc8f4('0xa0');socket['emit'](_0xc8f4('0x2b')+_0x16eb0b+_0xc8f4('0xaa'),{'UserId':_0x5d61c6['id'],['queueField']:_0x4ee063[_0x2b13df]['id']});}});});});}});}})[_0xc8f4('0x13')](respondWithStatusCode(_0x53bbab,null))[_0xc8f4('0x1d')](handleError(_0x53bbab,null));};exports[_0xc8f4('0x11e')]=function(_0x2e081f,_0x2a4ca4){var _0x2c6cb3={};var _0x58f960={};var _0x13f341;var _0x58d921;return db[_0xc8f4('0x3b')][_0xc8f4('0x8e')]({'where':{'id':_0x2e081f[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x2a4ca4,null))[_0xc8f4('0x13')](function(_0x1925d9){if(_0x1925d9){_0x13f341=_0x1925d9;_0x58f960[_0xc8f4('0x52')]=_[_0xc8f4('0x54')](db['CmList'][_0xc8f4('0x3c')]);_0x58f960[_0xc8f4('0x44')]=_[_0xc8f4('0x54')](_0x2e081f[_0xc8f4('0x44')]);_0x58f960[_0xc8f4('0x55')]=_[_0xc8f4('0x56')](_0x58f960[_0xc8f4('0x52')],_0x58f960[_0xc8f4('0x44')]);_0x2c6cb3[_0xc8f4('0x47')]=_[_0xc8f4('0x56')](_0x58f960[_0xc8f4('0x52')],qs[_0xc8f4('0x57')](_0x2e081f['query'][_0xc8f4('0x57')]));_0x2c6cb3[_0xc8f4('0x47')]=_0x2c6cb3[_0xc8f4('0x47')][_0xc8f4('0x4c')]?_0x2c6cb3[_0xc8f4('0x47')]:_0x58f960[_0xc8f4('0x52')];_0x2c6cb3[_0xc8f4('0xc0')]=qs[_0xc8f4('0xc1')](_0x2e081f[_0xc8f4('0x44')][_0xc8f4('0xc1')]);_0x2c6cb3['where']=qs[_0xc8f4('0x55')](_[_0xc8f4('0xc2')](_0x2e081f[_0xc8f4('0x44')],_0x58f960['filters']));if(_0x2e081f['query'][_0xc8f4('0x30')]){_0x2c6cb3[_0xc8f4('0x43')]=_['merge'](_0x2c6cb3[_0xc8f4('0x43')],{'$or':_[_0xc8f4('0x32')](_0x2c6cb3[_0xc8f4('0x47')],function(_0x26f922){var _0x4af487={};_0x4af487[_0x26f922]={'$like':'%'+_0x2e081f[_0xc8f4('0x44')][_0xc8f4('0x30')]+'%'};return _0x4af487;})});}_0x2c6cb3=_[_0xc8f4('0xc3')]({},_0x2c6cb3,_0x2e081f[_0xc8f4('0x58')]);return _0x13f341[_0xc8f4('0x11e')](_0x2c6cb3);}})['then'](function(_0x32aeda){if(_0x32aeda){_0x58d921=_0x32aeda[_0xc8f4('0x4c')];if(!_0x2e081f[_0xc8f4('0x44')][_0xc8f4('0xc5')](_0xc8f4('0xca'))){_0x2c6cb3[_0xc8f4('0x23')]=qs['limit'](_0x2e081f[_0xc8f4('0x44')]['limit']);_0x2c6cb3[_0xc8f4('0x22')]=qs['offset'](_0x2e081f['query']['offset']);}return _0x13f341[_0xc8f4('0x11e')](_0x2c6cb3);}})[_0xc8f4('0x13')](function(_0x5b6c1){if(_0x5b6c1){return _0x5b6c1?{'count':_0x58d921,'rows':_0x5b6c1}:null;}})[_0xc8f4('0x13')](respondWithResult(_0x2a4ca4,null))[_0xc8f4('0x1d')](handleError(_0x2a4ca4,null));};exports['getAgents']=function(_0x1a6eec,_0x340604){var _0x42e3bf={};var _0x1047d9={};var _0x148ea6;var _0x18845c;return db[_0xc8f4('0x3b')][_0xc8f4('0x8e')]({'where':{'id':_0x1a6eec[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x340604,null))[_0xc8f4('0x13')](function(_0x559d28){if(_0x559d28){_0x148ea6=_0x559d28;_0x1047d9[_0xc8f4('0x52')]=_[_0xc8f4('0x54')](db[_0xc8f4('0x3b')][_0xc8f4('0x3c')]);_0x1047d9['query']=_['keys'](_0x1a6eec['query']);_0x1047d9[_0xc8f4('0x55')]=_['intersection'](_0x1047d9[_0xc8f4('0x52')],_0x1047d9[_0xc8f4('0x44')]);_0x42e3bf[_0xc8f4('0x47')]=_[_0xc8f4('0x56')](_0x1047d9[_0xc8f4('0x52')],qs[_0xc8f4('0x57')](_0x1a6eec['query'][_0xc8f4('0x57')]));_0x42e3bf[_0xc8f4('0x47')]=_0x42e3bf[_0xc8f4('0x47')][_0xc8f4('0x4c')]?_0x42e3bf[_0xc8f4('0x47')]:_0x1047d9[_0xc8f4('0x52')];_0x42e3bf[_0xc8f4('0xc0')]=qs[_0xc8f4('0xc1')](_0x1a6eec[_0xc8f4('0x44')][_0xc8f4('0xc1')]);_0x42e3bf[_0xc8f4('0x43')]=qs[_0xc8f4('0x55')](_[_0xc8f4('0xc2')](_0x1a6eec[_0xc8f4('0x44')],_0x1047d9['filters']));if(_0x1a6eec['query'][_0xc8f4('0x30')]){_0x42e3bf[_0xc8f4('0x43')]=_['merge'](_0x42e3bf['where'],{'$or':_[_0xc8f4('0x32')](_0x42e3bf[_0xc8f4('0x47')],function(_0xdeef25){var _0xca548={};_0xca548[_0xdeef25]={'$like':'%'+_0x1a6eec[_0xc8f4('0x44')]['filter']+'%'};return _0xca548;})});}_0x42e3bf['model']=db[_0xc8f4('0x3b')];_0x42e3bf['as']=_0xc8f4('0x2c');_0x42e3bf=_[_0xc8f4('0xc3')]({},_0x42e3bf,_0x1a6eec[_0xc8f4('0x58')]);return _0x148ea6[_0xc8f4('0xe9')]({'include':[_0x42e3bf]});}})[_0xc8f4('0x13')](function(_0x4ee8a4){if(_0x4ee8a4){var _0x1db09f={},_0x17fe0c=[],_0x520ab1=0x0;for(var _0x1d90bb=0x0;_0x1d90bb<_0x4ee8a4[_0xc8f4('0x4c')];_0x1d90bb+=0x1){for(var _0x3df656=0x0,_0x3256d8;_0x3df656<_0x4ee8a4[_0x1d90bb][_0xc8f4('0x2c')][_0xc8f4('0x4c')];_0x3df656+=0x1){_0x3256d8=_0x4ee8a4[_0x1d90bb][_0xc8f4('0x2c')][_0x3df656][_0xc8f4('0xa4')]({'plain':!![]});_0x1db09f[_0x3256d8['id']]=_0x3256d8;}}_0x1db09f=_[_0xc8f4('0x11f')](_0x1db09f);for(var _0x4e9a00=qs[_0xc8f4('0x22')](_0x1a6eec[_0xc8f4('0x44')]['offset']);_0x4e9a00<_0x1db09f[_0xc8f4('0x4c')]&&_0x17fe0c[_0xc8f4('0x4c')]<qs[_0xc8f4('0x23')](_0x1a6eec['query'][_0xc8f4('0x23')]);_0x4e9a00+=0x1){if(_0x1db09f[_0x4e9a00]){_0x17fe0c[_0xc8f4('0x48')](_0x1db09f[_0x4e9a00]);}}return{'count':_0x1db09f['length'],'rows':_0x17fe0c};}})['then'](respondWithResult(_0x340604,null))[_0xc8f4('0x1d')](handleError(_0x340604,null));};exports[_0xc8f4('0x28')]=function(_0x3e72d7,_0x492076){if(_0x3e72d7[_0xc8f4('0x2b')]['id']==_0x3e72d7['params']['id']){return _0x492076[_0xc8f4('0x1f')](0x1f4)[_0xc8f4('0x39')]({'message':_0xc8f4('0x120')});}return db[_0xc8f4('0x3b')]['find']({'where':{'id':_0x3e72d7[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x492076,null))[_0xc8f4('0x13')](removeEntity(_0x492076,null))[_0xc8f4('0x1d')](handleError(_0x492076,null));};exports['addChatInteractions']=function(_0x3e9586,_0x4bf523){return db[_0xc8f4('0x3b')]['find']({'where':{'id':_0x3e9586[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x4bf523,null))['then'](function(_0x50da10){if(_0x50da10){return _0x50da10[_0xc8f4('0x121')](_0x3e9586['body'][_0xc8f4('0x9c')],_[_0xc8f4('0x109')](_0x3e9586['body'],[_0xc8f4('0x9c'),'id'])||{})[_0xc8f4('0x9e')](function(){for(var _0x5ef77f=0x0;_0x5ef77f<_0x3e9586['body']['ids'][_0xc8f4('0x4c')];_0x5ef77f+=0x1){socket[_0xc8f4('0xa1')](_0xc8f4('0x122'),{'ChatInteractionId':Number(_0x3e9586[_0xc8f4('0x5b')][_0xc8f4('0x9c')][_0x5ef77f]),'UserId':Number(_0x3e9586[_0xc8f4('0x51')]['id'])});}return _0x3e9586[_0xc8f4('0x5b')][_0xc8f4('0x9c')];});}})[_0xc8f4('0x13')](respondWithResult(_0x4bf523,null))[_0xc8f4('0x1d')](handleError(_0x4bf523,null));};exports[_0xc8f4('0x123')]=function(_0x37e956,_0x116d9b){return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x37e956['params']['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x116d9b,null))[_0xc8f4('0x13')](function(_0x3636ba){if(_0x3636ba){return _0x3636ba['removeChatInteractions'](_0x37e956[_0xc8f4('0x44')]['ids'])['then'](function(){if(_[_0xc8f4('0xa9')](_0x37e956[_0xc8f4('0x44')]['ids'])){for(var _0x4d460b=0x0;_0x4d460b<_0x37e956[_0xc8f4('0x44')]['ids'][_0xc8f4('0x4c')];_0x4d460b+=0x1){socket[_0xc8f4('0xa1')](_0xc8f4('0x124'),{'ChatInteractionId':Number(_0x37e956[_0xc8f4('0x44')][_0xc8f4('0x9c')][_0x4d460b]),'UserId':Number(_0x37e956[_0xc8f4('0x51')]['id'])});}}else{socket[_0xc8f4('0xa1')](_0xc8f4('0x124'),{'ChatInteractionId':Number(_0x37e956[_0xc8f4('0x44')][_0xc8f4('0x9c')]),'UserId':Number(_0x37e956[_0xc8f4('0x51')]['id'])});}});}})[_0xc8f4('0x13')](respondWithStatusCode(_0x116d9b,null))[_0xc8f4('0x1d')](handleError(_0x116d9b,null));};exports['addMailInteractions']=function(_0x232a36,_0x4ea6b5){return db[_0xc8f4('0x3b')]['find']({'where':{'id':_0x232a36[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x4ea6b5,null))[_0xc8f4('0x13')](function(_0x267bda){if(_0x267bda){return _0x267bda[_0xc8f4('0x125')](_0x232a36[_0xc8f4('0x5b')][_0xc8f4('0x9c')],_[_0xc8f4('0x109')](_0x232a36[_0xc8f4('0x5b')],['ids','id'])||{})[_0xc8f4('0x9e')](function(){for(var _0x4c42f5=0x0;_0x4c42f5<_0x232a36[_0xc8f4('0x5b')][_0xc8f4('0x9c')][_0xc8f4('0x4c')];_0x4c42f5+=0x1){socket[_0xc8f4('0xa1')](_0xc8f4('0x126'),{'MailInteractionId':Number(_0x232a36['body'][_0xc8f4('0x9c')][_0x4c42f5]),'UserId':Number(_0x232a36[_0xc8f4('0x51')]['id'])});}return _0x232a36[_0xc8f4('0x5b')][_0xc8f4('0x9c')];});}})['then'](respondWithResult(_0x4ea6b5,null))[_0xc8f4('0x1d')](handleError(_0x4ea6b5,null));};exports[_0xc8f4('0x127')]=function(_0x5ea7f4,_0x526207){return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x5ea7f4[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x526207,null))[_0xc8f4('0x13')](function(_0x5e7baa){if(_0x5e7baa){return _0x5e7baa[_0xc8f4('0x127')](_0x5ea7f4['query'][_0xc8f4('0x9c')])['then'](function(){if(_['isArray'](_0x5ea7f4[_0xc8f4('0x44')][_0xc8f4('0x9c')])){for(var _0x1cf2bc=0x0;_0x1cf2bc<_0x5ea7f4[_0xc8f4('0x44')]['ids']['length'];_0x1cf2bc+=0x1){socket['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x5ea7f4[_0xc8f4('0x44')]['ids'][_0x1cf2bc]),'UserId':Number(_0x5ea7f4[_0xc8f4('0x51')]['id'])});}}else{socket[_0xc8f4('0xa1')](_0xc8f4('0x128'),{'MailInteractionId':Number(_0x5ea7f4[_0xc8f4('0x44')][_0xc8f4('0x9c')]),'UserId':Number(_0x5ea7f4[_0xc8f4('0x51')]['id'])});}});}})[_0xc8f4('0x13')](respondWithStatusCode(_0x526207,null))[_0xc8f4('0x1d')](handleError(_0x526207,null));};exports[_0xc8f4('0x129')]=function(_0x43a336,_0x30843b){return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x43a336[_0xc8f4('0x51')]['id']}})['then'](handleEntityNotFound(_0x30843b,null))['then'](function(_0x1a1c38){if(_0x1a1c38){return _0x1a1c38[_0xc8f4('0x129')](_0x43a336[_0xc8f4('0x5b')]['ids'],_[_0xc8f4('0x109')](_0x43a336['body'],['ids','id'])||{})[_0xc8f4('0x9e')](function(){for(var _0x3da055=0x0;_0x3da055<_0x43a336['body'][_0xc8f4('0x9c')][_0xc8f4('0x4c')];_0x3da055+=0x1){socket[_0xc8f4('0xa1')](_0xc8f4('0x12a'),{'FaxInteractionId':Number(_0x43a336['body'][_0xc8f4('0x9c')][_0x3da055]),'UserId':Number(_0x43a336[_0xc8f4('0x51')]['id'])});}return _0x43a336[_0xc8f4('0x5b')][_0xc8f4('0x9c')];});}})[_0xc8f4('0x13')](respondWithResult(_0x30843b,null))[_0xc8f4('0x1d')](handleError(_0x30843b,null));};exports[_0xc8f4('0x12b')]=function(_0x12fe15,_0x4bc94c){return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x12fe15[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x4bc94c,null))[_0xc8f4('0x13')](function(_0x2f5778){if(_0x2f5778){return _0x2f5778[_0xc8f4('0x12b')](_0x12fe15[_0xc8f4('0x44')][_0xc8f4('0x9c')])[_0xc8f4('0x13')](function(){if(_[_0xc8f4('0xa9')](_0x12fe15[_0xc8f4('0x44')][_0xc8f4('0x9c')])){for(var _0x5bf093=0x0;_0x5bf093<_0x12fe15['query']['ids'][_0xc8f4('0x4c')];_0x5bf093+=0x1){socket[_0xc8f4('0xa1')](_0xc8f4('0x12c'),{'FaxInteractionId':Number(_0x12fe15['query'][_0xc8f4('0x9c')][_0x5bf093]),'UserId':Number(_0x12fe15[_0xc8f4('0x51')]['id'])});}}else{socket[_0xc8f4('0xa1')](_0xc8f4('0x12c'),{'FaxInteractionId':Number(_0x12fe15[_0xc8f4('0x44')][_0xc8f4('0x9c')]),'UserId':Number(_0x12fe15[_0xc8f4('0x51')]['id'])});}});}})[_0xc8f4('0x13')](respondWithStatusCode(_0x4bc94c,null))[_0xc8f4('0x1d')](handleError(_0x4bc94c,null));};exports[_0xc8f4('0x12d')]=function(_0x455826,_0x1906e0){return db[_0xc8f4('0x3b')]['find']({'where':{'id':_0x455826[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x1906e0,null))[_0xc8f4('0x13')](function(_0x2c23a5){if(_0x2c23a5){return _0x2c23a5[_0xc8f4('0x12d')](_0x455826[_0xc8f4('0x5b')][_0xc8f4('0x9c')],_[_0xc8f4('0x109')](_0x455826['body'],[_0xc8f4('0x9c'),'id'])||{})[_0xc8f4('0x9e')](function(){for(var _0x298d28=0x0;_0x298d28<_0x455826[_0xc8f4('0x5b')][_0xc8f4('0x9c')][_0xc8f4('0x4c')];_0x298d28+=0x1){socket[_0xc8f4('0xa1')](_0xc8f4('0x12e'),{'SmsInteractionId':Number(_0x455826['body']['ids'][_0x298d28]),'UserId':Number(_0x455826[_0xc8f4('0x51')]['id'])});}return _0x455826[_0xc8f4('0x5b')][_0xc8f4('0x9c')];});}})['then'](respondWithResult(_0x1906e0,null))[_0xc8f4('0x1d')](handleError(_0x1906e0,null));};exports[_0xc8f4('0x12f')]=function(_0x2b71cc,_0x2ec848){return db['User'][_0xc8f4('0x35')]({'where':{'id':_0x2b71cc[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x2ec848,null))[_0xc8f4('0x13')](function(_0x5f337f){if(_0x5f337f){return _0x5f337f[_0xc8f4('0x12f')](_0x2b71cc[_0xc8f4('0x44')]['ids'])[_0xc8f4('0x13')](function(){if(_[_0xc8f4('0xa9')](_0x2b71cc[_0xc8f4('0x44')][_0xc8f4('0x9c')])){for(var _0x36ae27=0x0;_0x36ae27<_0x2b71cc['query'][_0xc8f4('0x9c')][_0xc8f4('0x4c')];_0x36ae27+=0x1){socket[_0xc8f4('0xa1')](_0xc8f4('0x130'),{'SmsInteractionId':Number(_0x2b71cc[_0xc8f4('0x44')]['ids'][_0x36ae27]),'UserId':Number(_0x2b71cc[_0xc8f4('0x51')]['id'])});}}else{socket[_0xc8f4('0xa1')](_0xc8f4('0x130'),{'SmsInteractionId':Number(_0x2b71cc[_0xc8f4('0x44')]['ids']),'UserId':Number(_0x2b71cc[_0xc8f4('0x51')]['id'])});}});}})[_0xc8f4('0x13')](respondWithStatusCode(_0x2ec848,null))['catch'](handleError(_0x2ec848,null));};exports[_0xc8f4('0x131')]=function(_0x3402a2,_0x45d5c2){return db['User'][_0xc8f4('0x35')]({'where':{'id':_0x3402a2[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x45d5c2,null))[_0xc8f4('0x13')](function(_0xe108d){if(_0xe108d){return _0xe108d[_0xc8f4('0x131')](_0x3402a2['body'][_0xc8f4('0x9c')],_[_0xc8f4('0x109')](_0x3402a2[_0xc8f4('0x5b')],[_0xc8f4('0x9c'),'id'])||{})['spread'](function(){for(var _0x2dd11e=0x0;_0x2dd11e<_0x3402a2[_0xc8f4('0x5b')][_0xc8f4('0x9c')][_0xc8f4('0x4c')];_0x2dd11e+=0x1){socket['emit'](_0xc8f4('0x132'),{'OpenchannelInteractionId':Number(_0x3402a2['body'][_0xc8f4('0x9c')][_0x2dd11e]),'UserId':Number(_0x3402a2[_0xc8f4('0x51')]['id'])});}return _0x3402a2[_0xc8f4('0x5b')]['ids'];});}})[_0xc8f4('0x13')](respondWithResult(_0x45d5c2,null))['catch'](handleError(_0x45d5c2,null));};exports[_0xc8f4('0x133')]=function(_0x1655a7,_0xc4512d){return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x1655a7[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0xc4512d,null))[_0xc8f4('0x13')](function(_0x53da3a){if(_0x53da3a){return _0x53da3a['removeOpenchannelInteractions'](_0x1655a7[_0xc8f4('0x44')][_0xc8f4('0x9c')])['then'](function(){if(_[_0xc8f4('0xa9')](_0x1655a7[_0xc8f4('0x44')][_0xc8f4('0x9c')])){for(var _0xc339cb=0x0;_0xc339cb<_0x1655a7[_0xc8f4('0x44')][_0xc8f4('0x9c')][_0xc8f4('0x4c')];_0xc339cb+=0x1){socket[_0xc8f4('0xa1')](_0xc8f4('0x134'),{'OpenchannelInteractionId':Number(_0x1655a7[_0xc8f4('0x44')]['ids'][_0xc339cb]),'UserId':Number(_0x1655a7[_0xc8f4('0x51')]['id'])});}}else{socket[_0xc8f4('0xa1')](_0xc8f4('0x134'),{'OpenchannelInteractionId':Number(_0x1655a7['query'][_0xc8f4('0x9c')]),'UserId':Number(_0x1655a7[_0xc8f4('0x51')]['id'])});}});}})['then'](respondWithStatusCode(_0xc4512d,null))[_0xc8f4('0x1d')](handleError(_0xc4512d,null));};exports[_0xc8f4('0x135')]=function(_0x1dc79c,_0x3aa1ce){return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x1dc79c[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x3aa1ce,null))[_0xc8f4('0x13')](function(_0x29c1ea){if(_0x29c1ea){return _0x29c1ea['addWhatsappInteractions'](_0x1dc79c['body'][_0xc8f4('0x9c')],_[_0xc8f4('0x109')](_0x1dc79c[_0xc8f4('0x5b')],[_0xc8f4('0x9c'),'id'])||{})['spread'](function(){for(var _0x440e75=0x0;_0x440e75<_0x1dc79c[_0xc8f4('0x5b')][_0xc8f4('0x9c')][_0xc8f4('0x4c')];_0x440e75+=0x1){socket[_0xc8f4('0xa1')](_0xc8f4('0x136'),{'WhatsappInteractionId':Number(_0x1dc79c['body'][_0xc8f4('0x9c')][_0x440e75]),'UserId':Number(_0x1dc79c['params']['id'])});}return _0x1dc79c[_0xc8f4('0x5b')]['ids'];});}})[_0xc8f4('0x13')](respondWithResult(_0x3aa1ce,null))['catch'](handleError(_0x3aa1ce,null));};exports[_0xc8f4('0x137')]=function(_0x20c488,_0x500d0f){return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x20c488[_0xc8f4('0x51')]['id']}})['then'](handleEntityNotFound(_0x500d0f,null))[_0xc8f4('0x13')](function(_0x2417b5){if(_0x2417b5){return _0x2417b5[_0xc8f4('0x137')](_0x20c488[_0xc8f4('0x44')][_0xc8f4('0x9c')]);}})[_0xc8f4('0x13')](respondWithStatusCode(_0x500d0f,null))['catch'](handleError(_0x500d0f,null));};exports[_0xc8f4('0x138')]=function(_0x310675,_0x161b4f){var _0x5bf685={};var _0x57fddb={};var _0x1dd988;var _0x1163a0;return db[_0xc8f4('0x3b')][_0xc8f4('0x8e')]({'where':{'id':_0x310675['params']['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x161b4f,null))[_0xc8f4('0x13')](function(_0x195a2a){if(_0x195a2a){_0x1dd988=_0x195a2a;_0x57fddb['model']=_['keys'](db[_0xc8f4('0x139')][_0xc8f4('0x3c')]);_0x57fddb[_0xc8f4('0x44')]=_[_0xc8f4('0x54')](_0x310675[_0xc8f4('0x44')]);_0x57fddb[_0xc8f4('0x55')]=_['intersection'](_0x57fddb[_0xc8f4('0x52')],_0x57fddb[_0xc8f4('0x44')]);_0x5bf685['attributes']=_['intersection'](_0x57fddb[_0xc8f4('0x52')],qs['fields'](_0x310675['query'][_0xc8f4('0x57')]));_0x5bf685[_0xc8f4('0x47')]=_0x5bf685[_0xc8f4('0x47')][_0xc8f4('0x4c')]?_0x5bf685[_0xc8f4('0x47')]:_0x57fddb[_0xc8f4('0x52')];_0x5bf685[_0xc8f4('0xc0')]=qs[_0xc8f4('0xc1')](_0x310675[_0xc8f4('0x44')][_0xc8f4('0xc1')]);_0x5bf685[_0xc8f4('0x43')]=qs['filters'](_[_0xc8f4('0xc2')](_0x310675['query'],_0x57fddb[_0xc8f4('0x55')]));if(_0x310675['query'][_0xc8f4('0x30')]){_0x5bf685['where']=_[_0xc8f4('0xc3')](_0x5bf685[_0xc8f4('0x43')],{'$or':_[_0xc8f4('0x32')](_0x5bf685[_0xc8f4('0x47')],function(_0x313772){var _0x1cb8b0={};_0x1cb8b0[_0x313772]={'$like':'%'+_0x310675[_0xc8f4('0x44')]['filter']+'%'};return _0x1cb8b0;})});}_0x5bf685=_[_0xc8f4('0xc3')]({},_0x5bf685,_0x310675[_0xc8f4('0x58')]);return _0x1dd988['getVoicePrefixes'](_0x5bf685);}})[_0xc8f4('0x13')](function(_0x9463c9){if(_0x9463c9){_0x1163a0=_0x9463c9[_0xc8f4('0x4c')];if(!_0x310675[_0xc8f4('0x44')]['hasOwnProperty'](_0xc8f4('0xca'))){_0x5bf685[_0xc8f4('0x23')]=qs[_0xc8f4('0x23')](_0x310675[_0xc8f4('0x44')][_0xc8f4('0x23')]);_0x5bf685[_0xc8f4('0x22')]=qs[_0xc8f4('0x22')](_0x310675[_0xc8f4('0x44')]['offset']);}return _0x1dd988[_0xc8f4('0x138')](_0x5bf685);}})[_0xc8f4('0x13')](function(_0x37ba4d){if(_0x37ba4d){return _0x37ba4d?{'count':_0x1163a0,'rows':_0x37ba4d}:null;}})['then'](respondWithResult(_0x161b4f,null))[_0xc8f4('0x1d')](handleError(_0x161b4f,null));};exports[_0xc8f4('0x13a')]=function(_0x5ba0b9,_0x4fa577){var _0xcfc74c={};var _0x4276b1={};var _0x46d542;var _0x2b686d;return db[_0xc8f4('0x3b')][_0xc8f4('0x8e')]({'where':{'id':_0x5ba0b9[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x4fa577,null))[_0xc8f4('0x13')](function(_0x26ebaa){if(_0x26ebaa){_0x46d542=_0x26ebaa;_0x4276b1[_0xc8f4('0x52')]=_[_0xc8f4('0x54')](db[_0xc8f4('0x13b')][_0xc8f4('0x3c')]);_0x4276b1[_0xc8f4('0x44')]=_[_0xc8f4('0x54')](_0x5ba0b9['query']);_0x4276b1[_0xc8f4('0x55')]=_[_0xc8f4('0x56')](_0x4276b1[_0xc8f4('0x52')],_0x4276b1[_0xc8f4('0x44')]);_0xcfc74c['attributes']=_[_0xc8f4('0x56')](_0x4276b1[_0xc8f4('0x52')],qs[_0xc8f4('0x57')](_0x5ba0b9['query'][_0xc8f4('0x57')]));_0xcfc74c[_0xc8f4('0x47')]=_0xcfc74c[_0xc8f4('0x47')]['length']?_0xcfc74c[_0xc8f4('0x47')]:_0x4276b1[_0xc8f4('0x52')];_0xcfc74c['order']=qs[_0xc8f4('0xc1')](_0x5ba0b9[_0xc8f4('0x44')][_0xc8f4('0xc1')]);_0xcfc74c['where']=qs[_0xc8f4('0x55')](_[_0xc8f4('0xc2')](_0x5ba0b9[_0xc8f4('0x44')],_0x4276b1[_0xc8f4('0x55')]));if(_0x5ba0b9['query'][_0xc8f4('0x30')]){_0xcfc74c[_0xc8f4('0x43')]=_['merge'](_0xcfc74c[_0xc8f4('0x43')],{'$or':_[_0xc8f4('0x32')](_0xcfc74c[_0xc8f4('0x47')],function(_0xaab8e){var _0x564a06={};_0x564a06[_0xaab8e]={'$like':'%'+_0x5ba0b9[_0xc8f4('0x44')]['filter']+'%'};return _0x564a06;})});}_0xcfc74c=_[_0xc8f4('0xc3')]({},_0xcfc74c,_0x5ba0b9[_0xc8f4('0x58')]);return _0x46d542[_0xc8f4('0x13a')](_0xcfc74c);}})['then'](function(_0x22d3f4){if(_0x22d3f4){_0x2b686d=_0x22d3f4['length'];if(!_0x5ba0b9[_0xc8f4('0x44')][_0xc8f4('0xc5')](_0xc8f4('0xca'))){_0xcfc74c[_0xc8f4('0x23')]=qs[_0xc8f4('0x23')](_0x5ba0b9['query'][_0xc8f4('0x23')]);_0xcfc74c[_0xc8f4('0x22')]=qs[_0xc8f4('0x22')](_0x5ba0b9[_0xc8f4('0x44')][_0xc8f4('0x22')]);}return _0x46d542[_0xc8f4('0x13a')](_0xcfc74c);}})[_0xc8f4('0x13')](function(_0xcaabc7){if(_0xcaabc7){return _0xcaabc7?{'count':_0x2b686d,'rows':_0xcaabc7}:null;}})[_0xc8f4('0x13')](respondWithResult(_0x4fa577,null))[_0xc8f4('0x1d')](handleError(_0x4fa577,null));};exports['addFaxAccounts']=function(_0x2a1e1d,_0x22710e){return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x2a1e1d[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x22710e,null))[_0xc8f4('0x13')](function(_0x591520){if(_0x591520){return _0x591520[_0xc8f4('0x13c')](_0x2a1e1d[_0xc8f4('0x5b')]['ids'],_[_0xc8f4('0x109')](_0x2a1e1d[_0xc8f4('0x5b')],[_0xc8f4('0x9c'),'id'])||{});}})[_0xc8f4('0x13')](respondWithResult(_0x22710e,null))[_0xc8f4('0x1d')](handleError(_0x22710e,null));};exports['removeFaxAccounts']=function(_0x4df133,_0x221cba){return db[_0xc8f4('0x3b')]['find']({'where':{'id':_0x4df133[_0xc8f4('0x51')]['id']}})['then'](handleEntityNotFound(_0x221cba,null))[_0xc8f4('0x13')](function(_0x752e56){if(_0x752e56){return _0x752e56[_0xc8f4('0x13d')](_0x4df133[_0xc8f4('0x44')]['ids']);}})[_0xc8f4('0x13')](respondWithStatusCode(_0x221cba,null))[_0xc8f4('0x1d')](handleError(_0x221cba,null));};exports[_0xc8f4('0x13e')]=function(_0x3edd0a,_0xd62c21){var _0x1fdb77={};var _0x369317={};var _0x23f562;var _0x19a17c;return db[_0xc8f4('0x3b')][_0xc8f4('0x8e')]({'where':{'id':_0x3edd0a[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0xd62c21,null))[_0xc8f4('0x13')](function(_0x5dc0be){if(_0x5dc0be){_0x23f562=_0x5dc0be;_0x369317[_0xc8f4('0x52')]=_[_0xc8f4('0x54')](db[_0xc8f4('0x13f')][_0xc8f4('0x3c')]);_0x369317[_0xc8f4('0x44')]=_[_0xc8f4('0x54')](_0x3edd0a['query']);_0x369317[_0xc8f4('0x55')]=_[_0xc8f4('0x56')](_0x369317['model'],_0x369317[_0xc8f4('0x44')]);_0x1fdb77[_0xc8f4('0x47')]=_[_0xc8f4('0x56')](_0x369317[_0xc8f4('0x52')],qs[_0xc8f4('0x57')](_0x3edd0a['query']['fields']));_0x1fdb77['attributes']=_0x1fdb77[_0xc8f4('0x47')][_0xc8f4('0x4c')]?_0x1fdb77[_0xc8f4('0x47')]:_0x369317[_0xc8f4('0x52')];_0x1fdb77[_0xc8f4('0xc0')]=qs[_0xc8f4('0xc1')](_0x3edd0a[_0xc8f4('0x44')]['sort']);_0x1fdb77[_0xc8f4('0x43')]=qs[_0xc8f4('0x55')](_[_0xc8f4('0xc2')](_0x3edd0a[_0xc8f4('0x44')],_0x369317[_0xc8f4('0x55')]));if(_0x3edd0a[_0xc8f4('0x44')]['filter']){_0x1fdb77[_0xc8f4('0x43')]=_[_0xc8f4('0xc3')](_0x1fdb77['where'],{'$or':_[_0xc8f4('0x32')](_0x1fdb77[_0xc8f4('0x47')],function(_0x32ec26){var _0xc110b2={};_0xc110b2[_0x32ec26]={'$like':'%'+_0x3edd0a['query'][_0xc8f4('0x30')]+'%'};return _0xc110b2;})});}_0x1fdb77=_[_0xc8f4('0xc3')]({},_0x1fdb77,_0x3edd0a[_0xc8f4('0x58')]);return _0x23f562[_0xc8f4('0x13e')](_0x1fdb77);}})[_0xc8f4('0x13')](function(_0x2c2044){if(_0x2c2044){_0x19a17c=_0x2c2044[_0xc8f4('0x4c')];if(!_0x3edd0a[_0xc8f4('0x44')][_0xc8f4('0xc5')](_0xc8f4('0xca'))){_0x1fdb77[_0xc8f4('0x23')]=qs[_0xc8f4('0x23')](_0x3edd0a[_0xc8f4('0x44')]['limit']);_0x1fdb77[_0xc8f4('0x22')]=qs[_0xc8f4('0x22')](_0x3edd0a['query'][_0xc8f4('0x22')]);}return _0x23f562[_0xc8f4('0x13e')](_0x1fdb77);}})[_0xc8f4('0x13')](function(_0xfd7428){if(_0xfd7428){return _0xfd7428?{'count':_0x19a17c,'rows':_0xfd7428}:null;}})['then'](respondWithResult(_0xd62c21,null))[_0xc8f4('0x1d')](handleError(_0xd62c21,null));};exports[_0xc8f4('0x140')]=function(_0x2e8745,_0x85b214){return db['User']['find']({'where':{'id':_0x2e8745[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x85b214,null))['then'](function(_0x23a2e8){if(_0x23a2e8){return _0x23a2e8['addMailAccounts'](_0x2e8745[_0xc8f4('0x5b')][_0xc8f4('0x9c')],_[_0xc8f4('0x109')](_0x2e8745[_0xc8f4('0x5b')],[_0xc8f4('0x9c'),'id'])||{});}})[_0xc8f4('0x13')](respondWithResult(_0x85b214,null))[_0xc8f4('0x1d')](handleError(_0x85b214,null));};exports[_0xc8f4('0x141')]=function(_0x483212,_0x58c393){return db['User'][_0xc8f4('0x35')]({'where':{'id':_0x483212['params']['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x58c393,null))[_0xc8f4('0x13')](function(_0x2612b3){if(_0x2612b3){return _0x2612b3['removeMailAccounts'](_0x483212[_0xc8f4('0x44')]['ids']);}})[_0xc8f4('0x13')](respondWithStatusCode(_0x58c393,null))[_0xc8f4('0x1d')](handleError(_0x58c393,null));};exports['getOpenchannelAccounts']=function(_0x1c65cc,_0x691805){var _0x2cf326={};var _0x12cf01={};var _0x5e5db0;var _0x4e38c1;return db[_0xc8f4('0x3b')]['findOne']({'where':{'id':_0x1c65cc[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x691805,null))[_0xc8f4('0x13')](function(_0x67671b){if(_0x67671b){_0x5e5db0=_0x67671b;_0x12cf01[_0xc8f4('0x52')]=_[_0xc8f4('0x54')](db[_0xc8f4('0x142')][_0xc8f4('0x3c')]);_0x12cf01['query']=_['keys'](_0x1c65cc[_0xc8f4('0x44')]);_0x12cf01['filters']=_['intersection'](_0x12cf01[_0xc8f4('0x52')],_0x12cf01['query']);_0x2cf326[_0xc8f4('0x47')]=_[_0xc8f4('0x56')](_0x12cf01[_0xc8f4('0x52')],qs[_0xc8f4('0x57')](_0x1c65cc[_0xc8f4('0x44')][_0xc8f4('0x57')]));_0x2cf326['attributes']=_0x2cf326[_0xc8f4('0x47')]['length']?_0x2cf326[_0xc8f4('0x47')]:_0x12cf01[_0xc8f4('0x52')];_0x2cf326[_0xc8f4('0xc0')]=qs[_0xc8f4('0xc1')](_0x1c65cc[_0xc8f4('0x44')]['sort']);_0x2cf326[_0xc8f4('0x43')]=qs['filters'](_['pick'](_0x1c65cc[_0xc8f4('0x44')],_0x12cf01[_0xc8f4('0x55')]));if(_0x1c65cc[_0xc8f4('0x44')][_0xc8f4('0x30')]){_0x2cf326[_0xc8f4('0x43')]=_[_0xc8f4('0xc3')](_0x2cf326[_0xc8f4('0x43')],{'$or':_['map'](_0x2cf326[_0xc8f4('0x47')],function(_0x18615f){var _0x3e655b={};_0x3e655b[_0x18615f]={'$like':'%'+_0x1c65cc[_0xc8f4('0x44')][_0xc8f4('0x30')]+'%'};return _0x3e655b;})});}_0x2cf326=_[_0xc8f4('0xc3')]({},_0x2cf326,_0x1c65cc[_0xc8f4('0x58')]);return _0x5e5db0['getOpenchannelAccounts'](_0x2cf326);}})[_0xc8f4('0x13')](function(_0x1430df){if(_0x1430df){_0x4e38c1=_0x1430df['length'];if(!_0x1c65cc[_0xc8f4('0x44')]['hasOwnProperty']('nolimit')){_0x2cf326[_0xc8f4('0x23')]=qs[_0xc8f4('0x23')](_0x1c65cc['query']['limit']);_0x2cf326[_0xc8f4('0x22')]=qs[_0xc8f4('0x22')](_0x1c65cc['query'][_0xc8f4('0x22')]);}return _0x5e5db0[_0xc8f4('0x143')](_0x2cf326);}})[_0xc8f4('0x13')](function(_0x2522f5){if(_0x2522f5){return _0x2522f5?{'count':_0x4e38c1,'rows':_0x2522f5}:null;}})[_0xc8f4('0x13')](respondWithResult(_0x691805,null))[_0xc8f4('0x1d')](handleError(_0x691805,null));};exports[_0xc8f4('0x144')]=function(_0x2d032a,_0x117020){return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x2d032a[_0xc8f4('0x51')]['id']}})['then'](handleEntityNotFound(_0x117020,null))[_0xc8f4('0x13')](function(_0x55bc8b){if(_0x55bc8b){return _0x55bc8b[_0xc8f4('0x144')](_0x2d032a[_0xc8f4('0x5b')][_0xc8f4('0x9c')],_[_0xc8f4('0x109')](_0x2d032a[_0xc8f4('0x5b')],[_0xc8f4('0x9c'),'id'])||{});}})[_0xc8f4('0x13')](respondWithResult(_0x117020,null))[_0xc8f4('0x1d')](handleError(_0x117020,null));};exports[_0xc8f4('0x145')]=function(_0x933820,_0x5641b2){return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x933820[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x5641b2,null))[_0xc8f4('0x13')](function(_0x367874){if(_0x367874){return _0x367874['removeOpenchannelAccounts'](_0x933820['query'][_0xc8f4('0x9c')]);}})['then'](respondWithStatusCode(_0x5641b2,null))['catch'](handleError(_0x5641b2,null));};exports[_0xc8f4('0x146')]=function(_0x57e4af,_0x569a98){var _0x4dfe14={};var _0x148ff3={};var _0x166dcb;var _0x5e2da0;return db[_0xc8f4('0x3b')]['findOne']({'where':{'id':_0x57e4af['params']['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x569a98,null))[_0xc8f4('0x13')](function(_0x230fa5){if(_0x230fa5){_0x166dcb=_0x230fa5;_0x148ff3[_0xc8f4('0x52')]=_['keys'](db['SmsAccount']['rawAttributes']);_0x148ff3[_0xc8f4('0x44')]=_[_0xc8f4('0x54')](_0x57e4af['query']);_0x148ff3[_0xc8f4('0x55')]=_[_0xc8f4('0x56')](_0x148ff3[_0xc8f4('0x52')],_0x148ff3[_0xc8f4('0x44')]);_0x4dfe14[_0xc8f4('0x47')]=_[_0xc8f4('0x56')](_0x148ff3['model'],qs[_0xc8f4('0x57')](_0x57e4af['query']['fields']));_0x4dfe14[_0xc8f4('0x47')]=_0x4dfe14['attributes']['length']?_0x4dfe14['attributes']:_0x148ff3['model'];_0x4dfe14['order']=qs[_0xc8f4('0xc1')](_0x57e4af['query'][_0xc8f4('0xc1')]);_0x4dfe14[_0xc8f4('0x43')]=qs['filters'](_[_0xc8f4('0xc2')](_0x57e4af[_0xc8f4('0x44')],_0x148ff3[_0xc8f4('0x55')]));if(_0x57e4af[_0xc8f4('0x44')][_0xc8f4('0x30')]){_0x4dfe14['where']=_[_0xc8f4('0xc3')](_0x4dfe14['where'],{'$or':_[_0xc8f4('0x32')](_0x4dfe14[_0xc8f4('0x47')],function(_0x4616ce){var _0x23d092={};_0x23d092[_0x4616ce]={'$like':'%'+_0x57e4af[_0xc8f4('0x44')]['filter']+'%'};return _0x23d092;})});}_0x4dfe14=_[_0xc8f4('0xc3')]({},_0x4dfe14,_0x57e4af[_0xc8f4('0x58')]);return _0x166dcb[_0xc8f4('0x146')](_0x4dfe14);}})['then'](function(_0x2711cd){if(_0x2711cd){_0x5e2da0=_0x2711cd[_0xc8f4('0x4c')];if(!_0x57e4af['query'][_0xc8f4('0xc5')](_0xc8f4('0xca'))){_0x4dfe14[_0xc8f4('0x23')]=qs[_0xc8f4('0x23')](_0x57e4af['query'][_0xc8f4('0x23')]);_0x4dfe14['offset']=qs[_0xc8f4('0x22')](_0x57e4af[_0xc8f4('0x44')][_0xc8f4('0x22')]);}return _0x166dcb['getSmsAccounts'](_0x4dfe14);}})['then'](function(_0x24e491){if(_0x24e491){return _0x24e491?{'count':_0x5e2da0,'rows':_0x24e491}:null;}})[_0xc8f4('0x13')](respondWithResult(_0x569a98,null))[_0xc8f4('0x1d')](handleError(_0x569a98,null));};exports[_0xc8f4('0x147')]=function(_0x140d97,_0x43313c){return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x140d97[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x43313c,null))[_0xc8f4('0x13')](function(_0x3dc2ab){if(_0x3dc2ab){return _0x3dc2ab['addSmsAccounts'](_0x140d97[_0xc8f4('0x5b')]['ids'],_[_0xc8f4('0x109')](_0x140d97[_0xc8f4('0x5b')],['ids','id'])||{});}})[_0xc8f4('0x13')](respondWithResult(_0x43313c,null))[_0xc8f4('0x1d')](handleError(_0x43313c,null));};exports[_0xc8f4('0x148')]=function(_0x104985,_0x62ee37){return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x104985['params']['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x62ee37,null))[_0xc8f4('0x13')](function(_0x561a28){if(_0x561a28){return _0x561a28[_0xc8f4('0x148')](_0x104985[_0xc8f4('0x44')][_0xc8f4('0x9c')]);}})[_0xc8f4('0x13')](respondWithStatusCode(_0x62ee37,null))[_0xc8f4('0x1d')](handleError(_0x62ee37,null));};exports[_0xc8f4('0x149')]=function(_0x22df45,_0x26a9d0){var _0x599ef6={};var _0x40ad86={};var _0x5416ee;var _0x5e4213;return db[_0xc8f4('0x3b')][_0xc8f4('0x8e')]({'where':{'id':_0x22df45[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x26a9d0,null))[_0xc8f4('0x13')](function(_0x1a6ad3){if(_0x1a6ad3){_0x5416ee=_0x1a6ad3;_0x40ad86['model']=_[_0xc8f4('0x54')](db[_0xc8f4('0x14a')][_0xc8f4('0x3c')]);_0x40ad86['query']=_['keys'](_0x22df45[_0xc8f4('0x44')]);_0x40ad86['filters']=_[_0xc8f4('0x56')](_0x40ad86[_0xc8f4('0x52')],_0x40ad86['query']);_0x599ef6[_0xc8f4('0x47')]=_[_0xc8f4('0x56')](_0x40ad86[_0xc8f4('0x52')],qs[_0xc8f4('0x57')](_0x22df45[_0xc8f4('0x44')][_0xc8f4('0x57')]));_0x599ef6[_0xc8f4('0x47')]=_0x599ef6['attributes'][_0xc8f4('0x4c')]?_0x599ef6['attributes']:_0x40ad86[_0xc8f4('0x52')];_0x599ef6[_0xc8f4('0xc0')]=qs[_0xc8f4('0xc1')](_0x22df45[_0xc8f4('0x44')][_0xc8f4('0xc1')]);_0x599ef6[_0xc8f4('0x43')]=qs[_0xc8f4('0x55')](_[_0xc8f4('0xc2')](_0x22df45[_0xc8f4('0x44')],_0x40ad86[_0xc8f4('0x55')]));if(_0x22df45['query'][_0xc8f4('0x30')]){_0x599ef6['where']=_[_0xc8f4('0xc3')](_0x599ef6['where'],{'$or':_[_0xc8f4('0x32')](_0x599ef6[_0xc8f4('0x47')],function(_0x433ac7){var _0x49a1c6={};_0x49a1c6[_0x433ac7]={'$like':'%'+_0x22df45[_0xc8f4('0x44')]['filter']+'%'};return _0x49a1c6;})});}_0x599ef6=_[_0xc8f4('0xc3')]({},_0x599ef6,_0x22df45[_0xc8f4('0x58')]);return _0x5416ee[_0xc8f4('0x149')](_0x599ef6);}})[_0xc8f4('0x13')](function(_0x2a3103){if(_0x2a3103){_0x5e4213=_0x2a3103['length'];if(!_0x22df45['query'][_0xc8f4('0xc5')](_0xc8f4('0xca'))){_0x599ef6[_0xc8f4('0x23')]=qs[_0xc8f4('0x23')](_0x22df45[_0xc8f4('0x44')]['limit']);_0x599ef6[_0xc8f4('0x22')]=qs[_0xc8f4('0x22')](_0x22df45[_0xc8f4('0x44')][_0xc8f4('0x22')]);}return _0x5416ee[_0xc8f4('0x149')](_0x599ef6);}})['then'](function(_0x34cfea){if(_0x34cfea){return _0x34cfea?{'count':_0x5e4213,'rows':_0x34cfea}:null;}})[_0xc8f4('0x13')](respondWithResult(_0x26a9d0,null))[_0xc8f4('0x1d')](handleError(_0x26a9d0,null));};exports[_0xc8f4('0x14b')]=function(_0x3ef038,_0x4cfebf){return db['User']['find']({'where':{'id':_0x3ef038['params']['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x4cfebf,null))[_0xc8f4('0x13')](function(_0x1fcca9){if(_0x1fcca9){return _0x1fcca9['addChatWebsites'](_0x3ef038[_0xc8f4('0x5b')]['ids'],_[_0xc8f4('0x109')](_0x3ef038[_0xc8f4('0x5b')],[_0xc8f4('0x9c'),'id'])||{});}})['then'](respondWithResult(_0x4cfebf,null))[_0xc8f4('0x1d')](handleError(_0x4cfebf,null));};exports[_0xc8f4('0x14c')]=function(_0x3253eb,_0x1738c5){return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x3253eb[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x1738c5,null))[_0xc8f4('0x13')](function(_0x3f6743){if(_0x3f6743){return _0x3f6743[_0xc8f4('0x14c')](_0x3253eb[_0xc8f4('0x44')][_0xc8f4('0x9c')]);}})[_0xc8f4('0x13')](respondWithStatusCode(_0x1738c5,null))[_0xc8f4('0x1d')](handleError(_0x1738c5,null));};exports[_0xc8f4('0x14d')]=function(_0x3a64cf,_0x495221){var _0x560858={};var _0x39ce56={};var _0xc9aaae;var _0x45e3ea;return db['User'][_0xc8f4('0x8e')]({'where':{'id':_0x3a64cf[_0xc8f4('0x51')]['id']}})['then'](handleEntityNotFound(_0x495221,null))['then'](function(_0x213f79){if(_0x213f79){_0xc9aaae=_0x213f79;_0x39ce56[_0xc8f4('0x52')]=_[_0xc8f4('0x54')](db[_0xc8f4('0x14e')][_0xc8f4('0x3c')]);_0x39ce56[_0xc8f4('0x44')]=_[_0xc8f4('0x54')](_0x3a64cf[_0xc8f4('0x44')]);_0x39ce56['filters']=_[_0xc8f4('0x56')](_0x39ce56['model'],_0x39ce56[_0xc8f4('0x44')]);_0x560858['attributes']=_[_0xc8f4('0x56')](_0x39ce56[_0xc8f4('0x52')],qs['fields'](_0x3a64cf[_0xc8f4('0x44')]['fields']));_0x560858[_0xc8f4('0x47')]=_0x560858[_0xc8f4('0x47')]['length']?_0x560858[_0xc8f4('0x47')]:_0x39ce56['model'];_0x560858[_0xc8f4('0xc0')]=qs[_0xc8f4('0xc1')](_0x3a64cf[_0xc8f4('0x44')][_0xc8f4('0xc1')]);_0x560858[_0xc8f4('0x43')]=qs[_0xc8f4('0x55')](_['pick'](_0x3a64cf['query'],_0x39ce56[_0xc8f4('0x55')]));if(_0x3a64cf[_0xc8f4('0x44')][_0xc8f4('0x30')]){_0x560858[_0xc8f4('0x43')]=_[_0xc8f4('0xc3')](_0x560858[_0xc8f4('0x43')],{'$or':_[_0xc8f4('0x32')](_0x560858[_0xc8f4('0x47')],function(_0x935fc0){var _0x4b6757={};_0x4b6757[_0x935fc0]={'$like':'%'+_0x3a64cf[_0xc8f4('0x44')]['filter']+'%'};return _0x4b6757;})});}_0x560858=_[_0xc8f4('0xc3')]({},_0x560858,_0x3a64cf[_0xc8f4('0x58')]);return _0xc9aaae[_0xc8f4('0x14d')](_0x560858);}})[_0xc8f4('0x13')](function(_0x9f3b2f){if(_0x9f3b2f){_0x45e3ea=_0x9f3b2f[_0xc8f4('0x4c')];if(!_0x3a64cf[_0xc8f4('0x44')]['hasOwnProperty']('nolimit')){_0x560858[_0xc8f4('0x23')]=qs[_0xc8f4('0x23')](_0x3a64cf['query'][_0xc8f4('0x23')]);_0x560858['offset']=qs[_0xc8f4('0x22')](_0x3a64cf[_0xc8f4('0x44')][_0xc8f4('0x22')]);}return _0xc9aaae[_0xc8f4('0x14d')](_0x560858);}})['then'](function(_0x58a3e7){if(_0x58a3e7){return _0x58a3e7?{'count':_0x45e3ea,'rows':_0x58a3e7}:null;}})[_0xc8f4('0x13')](respondWithResult(_0x495221,null))[_0xc8f4('0x1d')](handleError(_0x495221,null));};exports[_0xc8f4('0x14f')]=function(_0x4f654a,_0x141585){return db[_0xc8f4('0x3b')]['find']({'where':{'id':_0x4f654a[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x141585,null))[_0xc8f4('0x13')](function(_0x1d0e7b){if(_0x1d0e7b){return _0x1d0e7b[_0xc8f4('0x14f')](_0x4f654a[_0xc8f4('0x5b')][_0xc8f4('0x9c')],_[_0xc8f4('0x109')](_0x4f654a[_0xc8f4('0x5b')],[_0xc8f4('0x9c'),'id'])||{});}})[_0xc8f4('0x13')](respondWithResult(_0x141585,null))[_0xc8f4('0x1d')](handleError(_0x141585,null));};exports[_0xc8f4('0x150')]=function(_0x21c5ba,_0x1ba1a3){return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x21c5ba['params']['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x1ba1a3,null))[_0xc8f4('0x13')](function(_0x20b2c9){if(_0x20b2c9){return _0x20b2c9['removeWhatsappAccounts'](_0x21c5ba[_0xc8f4('0x44')]['ids']);}})[_0xc8f4('0x13')](respondWithStatusCode(_0x1ba1a3,null))[_0xc8f4('0x1d')](handleError(_0x1ba1a3,null));};exports[_0xc8f4('0x151')]=function(_0x467803,_0x3e404f){var _0x514907={};var _0x44b09c={};var _0x175113;var _0x12569e;return db[_0xc8f4('0x3b')][_0xc8f4('0x8e')]({'where':{'id':_0x467803['params']['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x3e404f,null))[_0xc8f4('0x13')](function(_0x30f7ae){if(_0x30f7ae){_0x175113=_0x30f7ae;_0x44b09c[_0xc8f4('0x52')]=_[_0xc8f4('0x54')](db[_0xc8f4('0x152')][_0xc8f4('0x3c')]);_0x44b09c[_0xc8f4('0x44')]=_['keys'](_0x467803['query']);_0x44b09c['filters']=_[_0xc8f4('0x56')](_0x44b09c[_0xc8f4('0x52')],_0x44b09c[_0xc8f4('0x44')]);_0x514907[_0xc8f4('0x47')]=_['intersection'](_0x44b09c[_0xc8f4('0x52')],qs['fields'](_0x467803[_0xc8f4('0x44')][_0xc8f4('0x57')]));_0x514907[_0xc8f4('0x47')]=_0x514907[_0xc8f4('0x47')]['length']?_0x514907[_0xc8f4('0x47')]:_0x44b09c[_0xc8f4('0x52')];_0x514907[_0xc8f4('0xc0')]=qs[_0xc8f4('0xc1')](_0x467803['query'][_0xc8f4('0xc1')]);_0x514907[_0xc8f4('0x43')]=qs[_0xc8f4('0x55')](_[_0xc8f4('0xc2')](_0x467803[_0xc8f4('0x44')],_0x44b09c[_0xc8f4('0x55')]));if(_0x467803['query'][_0xc8f4('0x30')]){_0x514907[_0xc8f4('0x43')]=_[_0xc8f4('0xc3')](_0x514907[_0xc8f4('0x43')],{'$or':_[_0xc8f4('0x32')](_0x514907[_0xc8f4('0x47')],function(_0x157a48){var _0x2ad6d5={};_0x2ad6d5[_0x157a48]={'$like':'%'+_0x467803[_0xc8f4('0x44')][_0xc8f4('0x30')]+'%'};return _0x2ad6d5;})});}_0x514907=_['merge']({},_0x514907,_0x467803['options']);return _0x175113[_0xc8f4('0x151')](_0x514907);}})[_0xc8f4('0x13')](function(_0x42bb85){if(_0x42bb85){_0x12569e=_0x42bb85[_0xc8f4('0x4c')];if(!_0x467803[_0xc8f4('0x44')][_0xc8f4('0xc5')](_0xc8f4('0xca'))){_0x514907[_0xc8f4('0x23')]=qs[_0xc8f4('0x23')](_0x467803[_0xc8f4('0x44')][_0xc8f4('0x23')]);_0x514907[_0xc8f4('0x22')]=qs['offset'](_0x467803['query'][_0xc8f4('0x22')]);}return _0x175113[_0xc8f4('0x151')](_0x514907);}})[_0xc8f4('0x13')](function(_0x2aa475){if(_0x2aa475){return _0x2aa475?{'count':_0x12569e,'rows':_0x2aa475}:null;}})[_0xc8f4('0x13')](respondWithResult(_0x3e404f,null))['catch'](handleError(_0x3e404f,null));};exports['addSquareProjects']=function(_0x2e0c39,_0x11ac0c){return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x2e0c39[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x11ac0c,null))[_0xc8f4('0x13')](function(_0x2bffc7){if(_0x2bffc7){return _0x2bffc7[_0xc8f4('0x153')](_0x2e0c39['body'][_0xc8f4('0x9c')],_[_0xc8f4('0x109')](_0x2e0c39[_0xc8f4('0x5b')],[_0xc8f4('0x9c'),'id'])||{});}})[_0xc8f4('0x13')](respondWithResult(_0x11ac0c,null))[_0xc8f4('0x1d')](handleError(_0x11ac0c,null));};exports[_0xc8f4('0x154')]=function(_0x10dca9,_0x464275){return db[_0xc8f4('0x3b')][_0xc8f4('0x35')]({'where':{'id':_0x10dca9[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x464275,null))[_0xc8f4('0x13')](function(_0x208257){if(_0x208257){return _0x208257['removeSquareProjects'](_0x10dca9[_0xc8f4('0x44')][_0xc8f4('0x9c')]);}})[_0xc8f4('0x13')](respondWithStatusCode(_0x464275,null))[_0xc8f4('0x1d')](handleError(_0x464275,null));};exports[_0xc8f4('0x155')]=function(_0x545bb6,_0x3143a8){var _0x3a6730={},_0x1e6410={},_0x35031d={'count':0x0,'rows':[]};var _0x3bfc37=db['CmHopper'][_0xc8f4('0x3c')];_0x1e6410[_0xc8f4('0x52')]=_[_0xc8f4('0x54')](_0x3bfc37);_0x1e6410['query']=_[_0xc8f4('0x54')](_0x545bb6[_0xc8f4('0x44')]);_0x1e6410[_0xc8f4('0x55')]=_['intersection'](_0x1e6410[_0xc8f4('0x52')],_0x1e6410[_0xc8f4('0x44')]);_0x1e6410[_0xc8f4('0x55')]=_[_0xc8f4('0xf3')](_0x1e6410[_0xc8f4('0x55')],[_0xc8f4('0x156'),_0xc8f4('0x157'),'$gt',_0xc8f4('0x158'),_0xc8f4('0x159'),_0xc8f4('0x15a'),'$ne',_0xc8f4('0x15b'),_0xc8f4('0x15c'),_0xc8f4('0x15d'),_0xc8f4('0x15e'),_0xc8f4('0x15f'),_0xc8f4('0x160'),_0xc8f4('0x161'),_0xc8f4('0x162'),_0xc8f4('0x163'),_0xc8f4('0x164'),'$like',_0xc8f4('0x165'),'$contains','$contained',_0xc8f4('0x166')]);_0x3a6730['attributes']=_[_0xc8f4('0x56')](_0x1e6410[_0xc8f4('0x52')],qs[_0xc8f4('0x57')](_0x545bb6['query'][_0xc8f4('0x57')]));_0x3a6730[_0xc8f4('0x47')]=_0x3a6730['attributes'][_0xc8f4('0x4c')]?_0x3a6730['attributes']:_0x1e6410['model'];if(!_0x545bb6[_0xc8f4('0x44')][_0xc8f4('0xc5')](_0xc8f4('0xca'))){_0x3a6730[_0xc8f4('0x23')]=qs[_0xc8f4('0x23')](_0x545bb6[_0xc8f4('0x44')][_0xc8f4('0x23')]);_0x3a6730[_0xc8f4('0x22')]=qs[_0xc8f4('0x22')](_0x545bb6[_0xc8f4('0x44')][_0xc8f4('0x22')]);}_0x3a6730[_0xc8f4('0xc0')]=qs['sort'](_0x545bb6[_0xc8f4('0x44')][_0xc8f4('0xc1')]);_0x3a6730[_0xc8f4('0x43')]=qs[_0xc8f4('0x55')](_[_0xc8f4('0xc2')](_0x545bb6[_0xc8f4('0x44')],_0x1e6410['filters']));if(_0x545bb6['query'][_0xc8f4('0x30')]){_0x3a6730['where']=_[_0xc8f4('0xc3')](_0x3a6730[_0xc8f4('0x43')],{'$or':_[_0xc8f4('0x32')](_0x3a6730[_0xc8f4('0x47')],function(_0x240939){var _0x5f519a={};_0x5f519a[_0x240939]={'$like':'%'+_0x545bb6[_0xc8f4('0x44')][_0xc8f4('0x30')]+'%'};return _0x5f519a;})});}_0x3a6730[_0xc8f4('0x43')]={'$and':[_0x3a6730[_0xc8f4('0x43')],{'$or':[{'UserId':_0x545bb6[_0xc8f4('0x51')]['id']},{'OwnerId':_0x545bb6[_0xc8f4('0x51')]['id']}]}]};_0x3a6730=_[_0xc8f4('0xc3')]({},_0x3a6730,_0x545bb6[_0xc8f4('0x58')]);var _0x70944d={'where':_0x3a6730[_0xc8f4('0x43')]};return db[_0xc8f4('0x167')]['count'](_0x70944d)['then'](function(_0x1c3c5a){_0x35031d[_0xc8f4('0x25')]=_0x1c3c5a;if(_0x545bb6[_0xc8f4('0x44')]['includeAll']){_0x3a6730[_0xc8f4('0x46')]=[{'attributes':['id','firstName','lastName',_0xc8f4('0xe1')],'model':db[_0xc8f4('0xbf')],'as':_0xc8f4('0x168')},{'attributes':['id',_0xc8f4('0x36'),_0xc8f4('0x169')],'model':db['VoiceQueue'],'as':_0xc8f4('0x16a')}];}return db[_0xc8f4('0x167')][_0xc8f4('0xcc')](_0x3a6730);})[_0xc8f4('0x13')](function(_0x3d354f){_0x35031d[_0xc8f4('0x49')]=_0x3d354f;return _0x35031d;})['then'](respondWithFilteredResult(_0x3143a8,_0x3a6730))[_0xc8f4('0x1d')](handleError(_0x3143a8,null));};exports[_0xc8f4('0x16b')]=function(_0x17d53a,_0x3ab258){if(!_[_0xc8f4('0x64')](_0x17d53a[_0xc8f4('0x2b')]['id'])&&(_0x17d53a[_0xc8f4('0x2b')]['role']==_0xc8f4('0x29')||_0x17d53a[_0xc8f4('0x2b')][_0xc8f4('0x5c')]==_0xc8f4('0x2b'))){return db[_0xc8f4('0x3b')][_0xc8f4('0x8e')]({'where':{'id':_0x17d53a[_0xc8f4('0x51')]['id']},'raw':!![]})['then'](function(_0xc9cff8){return authService[_0xc8f4('0x16c')](_0xc9cff8);})['then'](function(_0x7f814c){if(_0x7f814c){return _0x3ab258[_0xc8f4('0x1f')](0xc8)[_0xc8f4('0x21')]({'api_key':_0x7f814c['token']});}else{return _0x3ab258[_0xc8f4('0x1f')](0xcc)['json']({'message':_0xc8f4('0x16d')});}})[_0xc8f4('0x1d')](handleError(_0x3ab258,0x193));}else{return _0x3ab258[_0xc8f4('0x1f')](0x191)[_0xc8f4('0x21')]({'message':_0xc8f4('0x16e')});}};exports[_0xc8f4('0x16f')]=function(_0x485484,_0x416cf2){if(!_['isNil'](_0x485484['user']['id'])&&(_0x485484[_0xc8f4('0x2b')][_0xc8f4('0x5c')]==_0xc8f4('0x29')||_0x485484['user']['role']==_0xc8f4('0x2b'))){return db['User'][_0xc8f4('0x35')]({'where':{'id':_0x485484[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](function(_0x283405){return authService['generateApiKey'](_0x283405);})[_0xc8f4('0x13')](function(_0x215e94){return db[_0xc8f4('0x3b')]['update']({'apiKeyIat':_0x215e94[_0xc8f4('0x170')],'apiKeyNonce':_0x215e94['nonce']},{'where':{'id':_0x485484[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](function(){return _0x416cf2['status'](0xc8)[_0xc8f4('0x21')]({'api_key':_0x215e94[_0xc8f4('0x171')]});});})[_0xc8f4('0x1d')](handleError(_0x416cf2,0x193));}else{return _0x416cf2[_0xc8f4('0x1f')](0x191)[_0xc8f4('0x21')]({'message':_0xc8f4('0x16e')});}};exports[_0xc8f4('0x172')]=function(_0x26cbad,_0x261db5){if(!_['isNil'](_0x26cbad[_0xc8f4('0x2b')]['id'])&&(_0x26cbad['user']['role']==_0xc8f4('0x29')||_0x26cbad['user'][_0xc8f4('0x5c')]==_0xc8f4('0x2b'))){return db['User'][_0xc8f4('0x35')]({'where':{'id':_0x26cbad[_0xc8f4('0x51')]['id']}})[_0xc8f4('0x13')](handleEntityNotFound(_0x261db5,null))[_0xc8f4('0x13')](function(_0x3303fd){if(_0x3303fd&&_0x3303fd['apiKeyNonce']&&_0x3303fd[_0xc8f4('0x173')])return _0x3303fd;else throw{'message':_0xc8f4('0x174')};})[_0xc8f4('0x13')](function(_0x898e1d){return db['User'][_0xc8f4('0xf4')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x26cbad[_0xc8f4('0x51')]['id']}});})['then'](respondWithStatusCode(_0x261db5,0xc8))['catch'](handleError(_0x261db5,0x193));}else{return _0x261db5['status'](0x191)['json']({'message':_0xc8f4('0x16e')});}};exports[_0xc8f4('0x175')]=function(_0x3d19bf,_0x29ef97){var _0x3e98a3=_0x3d19bf[_0xc8f4('0x2b')][_0xc8f4('0xa4')]({'plain':!![]});if(!_0x3e98a3){return _0x29ef97['status'](0x191)['send']('Unable\x20to\x20retrieve\x20the\x20current\x20user');}else{return _0x29ef97[_0xc8f4('0x1f')](0xc8)[_0xc8f4('0x21')](_0x3e98a3);}};exports[_0xc8f4('0x176')]=function(_0x3e7bc0,_0x5598e7){var _0x46140f={'offset':0x0},_0x4ba5d4={'count':0x0,'rows':[]};Promise[_0xc8f4('0xf7')]()[_0xc8f4('0x13')](function(){if(!_0x3e7bc0[_0xc8f4('0x44')][_0xc8f4('0x30')]&&!_0x3e7bc0['query']['teams']&&!_0x3e7bc0['query'][_0xc8f4('0x177')])return[];return Promise[_0xc8f4('0xf7')]()['then'](function(){var _0x2c79ab=[];if(!_[_0xc8f4('0x84')](_0x3e7bc0[_0xc8f4('0x44')][_0xc8f4('0x178')])){_0x2c79ab[_0xc8f4('0x48')](db[_0xc8f4('0x10a')][_0xc8f4('0xcc')]({'attributes':['id',_0xc8f4('0x36')],'where':{'id':_0x3e7bc0[_0xc8f4('0x44')]['teams']}}));}if(!_[_0xc8f4('0x84')](_0x3e7bc0[_0xc8f4('0x44')]['queues'])){_0x2c79ab[_0xc8f4('0x48')](db[_0xc8f4('0xa3')][_0xc8f4('0xcc')]({'attributes':['id',_0xc8f4('0x36')],'type':_0xc8f4('0x179'),'where':{'id':_0x3e7bc0[_0xc8f4('0x44')]['queues']}}));}return Promise['all'](_0x2c79ab);})[_0xc8f4('0x13')](function(_0x5af8a5){var _0x32570f=_[_0xc8f4('0x115')](_0x5af8a5)[_0xc8f4('0x32')](function(_0x47cec4){return _0x47cec4[_0xc8f4('0x17a')]({'attributes':['id',_0xc8f4('0x36'),_0xc8f4('0x5f'),_0xc8f4('0xa5')],'raw':!![]});});return Promise['all'](_0x32570f);})['then'](function(_0x162cfa){var _0x46bd2e=_[_0xc8f4('0x115')](_0x162cfa);if(!_0x3e7bc0['query'][_0xc8f4('0x30')])return _0x46bd2e;if(_[_0xc8f4('0x84')](_0x46bd2e)){return db['User']['findAll']({'attributes':['id',_0xc8f4('0x36'),_0xc8f4('0x5f'),_0xc8f4('0xa5')],'where':{'role':_0xc8f4('0x2d'),'$or':[db[_0xc8f4('0x67')][_0xc8f4('0x43')](db[_0xc8f4('0x67')]['fn']('lower',db[_0xc8f4('0x67')][_0xc8f4('0x17b')](_0xc8f4('0x36'))),{'$like':'%'+_0x3e7bc0[_0xc8f4('0x44')]['filter'][_0xc8f4('0x9a')]()+'%'}),{'internal':{'$like':'%'+_0x3e7bc0[_0xc8f4('0x44')][_0xc8f4('0x30')]+'%'}}]},'raw':!![]});}else{return _(_0x46bd2e)[_0xc8f4('0x115')]()['filter'](function(_0x4f9fa7){return _0x4f9fa7[_0xc8f4('0x36')][_0xc8f4('0x9a')]()[_0xc8f4('0x34')](_0x3e7bc0[_0xc8f4('0x44')][_0xc8f4('0x30')][_0xc8f4('0x9a')]())||_0x4f9fa7[_0xc8f4('0x5f')]['toString']()[_0xc8f4('0x34')](_0x3e7bc0[_0xc8f4('0x44')][_0xc8f4('0x30')]);})['value']();}})['then'](function(_0x307c5b){var _0x447065=_0xc8f4('0x36');var _0x7a43a5='asc';if(_0x3e7bc0[_0xc8f4('0x44')]['sort']){var _0x7a43a5=_0x3e7bc0[_0xc8f4('0x44')][_0xc8f4('0xc1')][0x0]==='-'?'desc':_0xc8f4('0x17c');var _0x447065=_0x7a43a5===_0xc8f4('0x17c')?_0x3e7bc0[_0xc8f4('0x44')][_0xc8f4('0xc1')]:_0x3e7bc0[_0xc8f4('0x44')][_0xc8f4('0xc1')]['substring'](0x1);}return _(_0x307c5b)['uniqBy']('id')[_0xc8f4('0x17d')]([function(_0x19788f){return _0x447065===_0xc8f4('0x36')?_0x19788f[_0x447065]['toLowerCase']():_0x19788f[_0x447065];}],[_0x7a43a5])[_0xc8f4('0x32')](function(_0x2229c3){return _[_0xc8f4('0xc2')](_0x2229c3,['id','name','internal',_0xc8f4('0xa5')]);})[_0xc8f4('0x33')]();})['then'](function(_0x10d03d){return client[_0xc8f4('0x12')]('Agents',_0x3e7bc0)[_0xc8f4('0x13')](function(_0x59aca9){if(_0x59aca9['error'])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x51adee=_0x59aca9[_0xc8f4('0x1c')];var _0xa62054=jayson[_0xc8f4('0x10')][_0xc8f4('0x11')]({'port':0x232c});return _0xa62054['request'](_0xc8f4('0x2c'),_0x3e7bc0)['then'](function(_0x16b25b){if(_0x16b25b['error'])throw new Error(_0xc8f4('0x17e'));var _0x1a16ed=_0x16b25b[_0xc8f4('0x1c')];return _[_0xc8f4('0xc3')]({},_0x1a16ed,_0x51adee);});})[_0xc8f4('0x13')](function(_0x461d37){return _[_0xc8f4('0x32')](_0x10d03d,function(_0x460271){var _0x40fbaa=_[_0xc8f4('0x35')](_0x461d37[_0xc8f4('0x49')],['id',_0x460271['id']]);if(!_0x40fbaa||!_0x460271[_0xc8f4('0xa5')]){_0x460271[_0xc8f4('0x1f')]='offline';}else if(_0x40fbaa[_0xc8f4('0x95')]){_0x460271['status']=_0xc8f4('0xf9');}else{_0x460271[_0xc8f4('0x1f')]=_[_0xc8f4('0x34')](['idle','unknown',_0xc8f4('0x17f'),'ringing',null,undefined],_0x40fbaa[_0xc8f4('0x180')])?_0xc8f4('0xa5'):'busy';}return _0x460271;});});});})[_0xc8f4('0x13')](function(_0x3581bc){if(!_0x3e7bc0[_0xc8f4('0x44')]['hasOwnProperty']('nolimit')){_0x46140f['limit']=qs[_0xc8f4('0x23')](_0x3e7bc0[_0xc8f4('0x44')][_0xc8f4('0x23')]||0xa);_0x46140f[_0xc8f4('0x22')]=qs[_0xc8f4('0x22')](_0x3e7bc0[_0xc8f4('0x44')][_0xc8f4('0x22')]);}_0x4ba5d4['count']=_0x3581bc[_0xc8f4('0x4c')];_0x4ba5d4['rows']=_0x46140f[_0xc8f4('0x23')]?_0x3581bc[_0xc8f4('0x181')](_0x46140f[_0xc8f4('0x22')],_0x46140f[_0xc8f4('0x22')]+_0x46140f['limit']):_0x3581bc;return _0x4ba5d4;})[_0xc8f4('0x13')](respondWithFilteredResult(_0x5598e7,_0x46140f))['catch'](handleError(_0x5598e7,null));};function get_open_tabs(_0x2f1d9d,_0x33ff42){var _0x3014fc=_0x2f1d9d[_0xc8f4('0x182')](0x0)['toUpperCase']()+_0x2f1d9d[_0xc8f4('0x181')](0x1);var _0xbd9ff3={'type':db[_0xc8f4('0x88')][_0xc8f4('0x183')][_0xc8f4('0x68')],'raw':!![]};return new BPromise(function(_0x25ca7a,_0x42888){var _0x1dd2d6=squel[_0xc8f4('0x184')]()[_0xc8f4('0x185')]('ui.'+_0x3014fc+_0xc8f4('0x186'),'id')[_0xc8f4('0x185')](_0xc8f4('0x187'))[_0xc8f4('0x69')](_0xc8f4('0x188')+_0x2f1d9d+_0xc8f4('0x189'),'ui')[_0xc8f4('0x43')](_0xc8f4('0x18a'),_0x33ff42['id']);return db[_0xc8f4('0x67')][_0xc8f4('0x44')](_0x1dd2d6[_0xc8f4('0x18b')](),_0xbd9ff3)[_0xc8f4('0x13')](function(_0x4cb280){_0x33ff42[_0x3014fc+_0xc8f4('0x18c')]=_0x4cb280;_0x25ca7a(_0x4cb280);})['catch'](function(_0x30f14d){_0x42888(_0x30f14d);});});};
\ No newline at end of file
+var _0xee4e=['107','108','109','100','111','114','115','create','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','some','each','telephone','isEmpty','compact','changePassword','oldPassword','newPassword','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','Sequelize','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','validatePasswordHistory','updatePasswordsHistory','addQueues','channel','online','interface','isValidChannel','add','capitalize','toLowerCase','Queues','penalty','spread','QueueId','emit','Queue:save','VoiceQueue','get','voice','format','SIP/%s','voicePause','upsert','removeQueues','remove','isArray','Queue:remove','UserVoiceQueueRt','addAvatar','file','filename','getAvatar','join','root','server/files/images/logos/default_profile.png','userpic','download','server/files/images/','getOpenTabs','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','SmsOpenTabs','SMS','WhatsappOpenTabs','getContacts','CmContact','order','sort','pick','CmList','Tag','Tags','color','tag','hasOwnProperty','nolimit','getQueues','Queue','getVoiceQueuesRt','getGroups','getRecordings','VoiceRecording','UserId','getScreenRecordings','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','getMailInteractions','MailInteraction','SmsInteraction','getSmsInteractions','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','login','phone','mobile','loginInPause','LOCAL/%s@from-sip/n','user:forcelogout','headers','x-forwarded-for','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','UserVoiceQueue.penalty','MemberReport','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','device','PAUSE','concat','update','LOGININPAUSE','isMiddleware','pause','updateAttributes','forEach','DEFAULT\x20PAUSE','unpause','mailPause','chatPause','openchannelPause','smsPause','whatsapppause','pauseType','lastPauseAt','manual','set','%s%s','Pause','QueuePause','getTeams','Team','addTeams','getVoiceQueues','Voice','getChatQueues','setDataValue','Sms','getWhatsappQueues','Fax','Openchannel','flatten','transaction','getDataValue','removeTeams','Chat','getMailQueues','Mail','Whatsapp','getFaxQueues','removeAgent','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','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','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','getSquareProjects','addSquareProjects','removeSquareProjects','getScheduledCalls','$and','$or','$gte','$lt','$lte','$ne','$eq','$not','$notBetween','$in','$notIn','$notILike','$like','$contains','$contained','$any','CmHopper','firstName','lastName','Contact','dialActive','getApiKey','token','No\x20API\x20access\x20key\x20found!','generateApiKey','nonce','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','removeApiKey','apiKeyIat','API\x20key\x20not\x20available','whoami','getPresence','resolve','queues','teams','inbound','lower','col','toString','asc','desc','substring','uniqBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unknown','unavailable','ringing','voiceStatus','slice','charAt','toUpperCase','select','ui.','field','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','moment','bluebird','util','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','http','request','then','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','status','end','json','offset','limit','count','destroy','role','admin','Users','user','Agents','agent','Telephones','ignore','value','includes','find','name','UserProfileResource','sendStatus','stack','send','index','User','rawAttributes','map','fieldName','type','key','filter','salt','where','query','includeAll','include','attributes','push','findAll','openTabs','true','chat','rows','sms','dataValues','fax','mail','openchannel','whatsapp','all','model','keys','password','filters','intersection','fields','length','merge','options','body','params','describe','addContacts','ids','omit','internal','Setting','findById','securePassword','validatePasswordPattern','max','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','SELECT','from','voicemail','mailbox','VoiceMail','fullname','email','permissions','101','103','113','110','104','105'];(function(_0x4b1e6b,_0x4a42e8){var _0x515d94=function(_0x218e98){while(--_0x218e98){_0x4b1e6b['push'](_0x4b1e6b['shift']());}};_0x515d94(++_0x4a42e8);}(_0xee4e,0x122));var _0xeee4=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0xee4e[_0x16d10f];return _0x50c823;};'use strict';var moment=require(_0xeee4('0x0'));var BPromise=require(_0xeee4('0x1'));var util=require(_0xeee4('0x2'));var path=require('path');var fs=require('fs');var _=require(_0xeee4('0x3'));var squel=require(_0xeee4('0x4'));var jayson=require(_0xeee4('0x5'));var Redis=require(_0xeee4('0x6'));var authService=require(_0xeee4('0x7'));var qs=require(_0xeee4('0x8'));var logger=require(_0xeee4('0x9'))(_0xeee4('0xa'));var utils=require('../../config/utils');var config=require(_0xeee4('0xb'));var licenseUtil=require(_0xeee4('0xc'));var db=require(_0xeee4('0xd'))['db'];var socket=require('socket.io-emitter')(new Redis(config[_0xeee4('0xe')]));require(_0xeee4('0xf'))[_0xeee4('0x10')](socket);config['redis']=_[_0xeee4('0x11')](config[_0xeee4('0xe')],{'host':_0xeee4('0x12'),'port':0x18eb});var client=jayson['client'][_0xeee4('0x13')]({'port':0x232a});var values;function respondWithRpcPromise(_0x50d6f8,_0x1b1931,_0x2b25da,_0xd54ff2){return new BPromise(function(_0x51cf42,_0x203074){var _0xab281b=_0xd54ff2||client;return _0xab281b[_0xeee4('0x14')](_0x50d6f8,_0x2b25da)[_0xeee4('0x15')](function(_0x59921c){logger['info'](_0xeee4('0x16'),_0x1b1931,_0xeee4('0x17'));logger[_0xeee4('0x18')](_0xeee4('0x19'),_0x1b1931,_0xeee4('0x17'),JSON['stringify'](_0x59921c));if(_0x59921c['error']){if(_0x59921c[_0xeee4('0x1a')][_0xeee4('0x1b')]===0x1f4){logger[_0xeee4('0x1a')](_0xeee4('0x16'),_0x1b1931,_0x59921c[_0xeee4('0x1a')][_0xeee4('0x1c')]);return _0x203074(_0x59921c['error'][_0xeee4('0x1c')]);}logger['error'](_0xeee4('0x16'),_0x1b1931,_0x59921c['error'][_0xeee4('0x1c')]);return _0x51cf42(_0x59921c[_0xeee4('0x1a')][_0xeee4('0x1c')]);}else{logger['info'](_0xeee4('0x16'),_0x1b1931,_0xeee4('0x17'));_0x51cf42(_0x59921c[_0xeee4('0x1d')]['message']);}})[_0xeee4('0x1e')](function(_0x33765d){logger[_0xeee4('0x1a')](_0xeee4('0x16'),_0x1b1931,_0x33765d);_0x203074(_0x33765d);});});}function respondWithStatusCode(_0x5e4ac6,_0x378f92){_0x378f92=_0x378f92||0xcc;return function(_0x1e470d){if(_0x1e470d){return _0x5e4ac6['sendStatus'](_0x378f92);}return _0x5e4ac6[_0xeee4('0x1f')](_0x378f92)[_0xeee4('0x20')]();};}function respondWithResult(_0x24accf,_0x19af78){_0x19af78=_0x19af78||0xc8;return function(_0x4f457a){if(_0x4f457a){return _0x24accf[_0xeee4('0x1f')](_0x19af78)[_0xeee4('0x21')](_0x4f457a);}};}function respondWithFilteredResult(_0x28276e,_0x5623e6){return function(_0x497833){if(_0x497833){var _0x2c27e0=typeof _0x5623e6[_0xeee4('0x22')]==='undefined'&&typeof _0x5623e6[_0xeee4('0x23')]==='undefined';var _0x46a6e1=_0x497833[_0xeee4('0x24')];var _0x1e2b5b=_0x2c27e0?0x0:_0x5623e6[_0xeee4('0x22')];var _0x1f9e12=_0x2c27e0?_0x497833[_0xeee4('0x24')]:_0x5623e6[_0xeee4('0x22')]+_0x5623e6[_0xeee4('0x23')];var _0x2cdee7;if(_0x1f9e12>=_0x46a6e1){_0x1f9e12=_0x46a6e1;_0x2cdee7=0xc8;}else{_0x2cdee7=0xce;}_0x28276e[_0xeee4('0x1f')](_0x2cdee7);return _0x28276e['set']('Content-Range',_0x1e2b5b+'-'+_0x1f9e12+'/'+_0x46a6e1)[_0xeee4('0x21')](_0x497833);}return null;};}function saveUpdates(_0x249667){return function(_0x4f0873){if(_0x4f0873){return _0x4f0873['update'](_0x249667)[_0xeee4('0x15')](function(_0x348a72){return _0x348a72;});}return null;};}function removeEntity(_0x4b546e){return function(_0x463344){if(_0x463344){return _0x463344[_0xeee4('0x25')]()['then'](function(){var _0x5e5374=_0x463344['get']({'plain':!![]});if(_0x5e5374[_0xeee4('0x26')]===_0xeee4('0x27'))return;var _0x36f60e=[{'name':_0xeee4('0x28'),'value':_0xeee4('0x29'),'ignore':!![]},{'name':_0xeee4('0x2a'),'value':_0xeee4('0x2b'),'ignore':![]},{'name':_0xeee4('0x2c'),'value':'telephone','ignore':![]}];var _0x51971e=_(_0x36f60e)['filter'](_0xeee4('0x2d'))['map'](_0xeee4('0x2e'))[_0xeee4('0x2e')]();if(_[_0xeee4('0x2f')](_0x51971e,_0x5e5374[_0xeee4('0x26')])){return;}var _0x2366d9=_[_0xeee4('0x30')](_0x36f60e,[_0xeee4('0x2e'),_0x5e5374['role']])[_0xeee4('0x31')];return db[_0xeee4('0x32')]['destroy']({'where':{'type':_0x2366d9,'resourceId':_0x5e5374['id']}})['then'](function(){return _0x463344;});})[_0xeee4('0x15')](function(){_0x4b546e['status'](0xcc)[_0xeee4('0x20')]();});}};}function handleEntityNotFound(_0x307fe3){return function(_0x2f00a2){if(!_0x2f00a2){_0x307fe3[_0xeee4('0x33')](0x194);}return _0x2f00a2;};}function handleError(_0x565790,_0x567e71){_0x567e71=_0x567e71||0x1f4;return function(_0x136189){logger['error'](_0x136189[_0xeee4('0x34')]);if(_0x136189[_0xeee4('0x31')]){delete _0x136189[_0xeee4('0x31')];}_0x565790[_0xeee4('0x1f')](_0x567e71)[_0xeee4('0x35')](_0x136189);};}exports[_0xeee4('0x36')]=function(_0x5aa50e,_0x4567db){var _0x91f224={},_0x1f65c3={'count':0x0,'rows':[]};var _0x105ba8=_(db[_0xeee4('0x37')][_0xeee4('0x38')])[_0xeee4('0x39')](function(_0x5ceb9a){return{'name':_0x5ceb9a[_0xeee4('0x3a')],'type':_0x5ceb9a[_0xeee4('0x3b')][_0xeee4('0x3c')]};})[_0xeee4('0x3d')](function(_0x232831){return!_[_0xeee4('0x2f')](['password',_0xeee4('0x3e')],_0x232831['name']);})['value']();_0x91f224=qs['getOptions'](_0x105ba8,_0x5aa50e);var _0x17112f={'where':_0x91f224[_0xeee4('0x3f')]};return db['User'][_0xeee4('0x24')](_0x17112f)[_0xeee4('0x15')](function(_0x2b004a){_0x1f65c3[_0xeee4('0x24')]=_0x2b004a;if(_0x5aa50e[_0xeee4('0x40')][_0xeee4('0x41')]){_0x91f224[_0xeee4('0x42')]=[{'all':!![]}];}if(!_[_0xeee4('0x2f')](_0x91f224[_0xeee4('0x43')],'id')){_0x91f224[_0xeee4('0x43')][_0xeee4('0x44')]('id');}return db[_0xeee4('0x37')][_0xeee4('0x45')](_0x91f224);})[_0xeee4('0x15')](function(_0x3c8f84){_0x1f65c3['rows']=_0x3c8f84;if(_0x5aa50e['query'][_0xeee4('0x46')]===_0xeee4('0x47')){var _0x470c0f=[];for(var _0x37b06c=0x0;_0x37b06c<_0x1f65c3['rows']['length'];_0x37b06c++){_0x470c0f[_0xeee4('0x44')](get_open_tabs(_0xeee4('0x48'),_0x1f65c3[_0xeee4('0x49')][_0x37b06c]['dataValues']));_0x470c0f['push'](get_open_tabs(_0xeee4('0x4a'),_0x1f65c3[_0xeee4('0x49')][_0x37b06c][_0xeee4('0x4b')]));_0x470c0f[_0xeee4('0x44')](get_open_tabs(_0xeee4('0x4c'),_0x1f65c3[_0xeee4('0x49')][_0x37b06c][_0xeee4('0x4b')]));_0x470c0f[_0xeee4('0x44')](get_open_tabs(_0xeee4('0x4d'),_0x1f65c3[_0xeee4('0x49')][_0x37b06c][_0xeee4('0x4b')]));_0x470c0f[_0xeee4('0x44')](get_open_tabs(_0xeee4('0x4e'),_0x1f65c3[_0xeee4('0x49')][_0x37b06c][_0xeee4('0x4b')]));_0x470c0f[_0xeee4('0x44')](get_open_tabs(_0xeee4('0x4f'),_0x1f65c3[_0xeee4('0x49')][_0x37b06c][_0xeee4('0x4b')]));}return BPromise[_0xeee4('0x50')](_0x470c0f)['then'](function(_0xbd9f8a){return _0x1f65c3;});}else{return _0x1f65c3;}})['then'](respondWithFilteredResult(_0x4567db,_0x91f224))['catch'](handleError(_0x4567db,null));};exports['show']=function(_0x2e21ea,_0x44f746){var _0x54fcda={'raw':![],'where':{'id':_0x2e21ea['params']['id']}},_0x40ef92={};_0x40ef92[_0xeee4('0x51')]=_['differenceBy'](_[_0xeee4('0x52')](db[_0xeee4('0x37')][_0xeee4('0x38')]),[_0xeee4('0x53'),_0xeee4('0x3e')]);_0x40ef92[_0xeee4('0x40')]=_['keys'](_0x2e21ea[_0xeee4('0x40')]);_0x40ef92[_0xeee4('0x54')]=_[_0xeee4('0x55')](_0x40ef92[_0xeee4('0x51')],_0x40ef92[_0xeee4('0x40')]);_0x54fcda[_0xeee4('0x43')]=_['intersection'](_0x40ef92[_0xeee4('0x51')],qs[_0xeee4('0x56')](_0x2e21ea['query'][_0xeee4('0x56')]));_0x54fcda[_0xeee4('0x43')]=_0x54fcda[_0xeee4('0x43')][_0xeee4('0x57')]?_0x54fcda['attributes']:_0x40ef92[_0xeee4('0x51')];if(_0x2e21ea[_0xeee4('0x40')][_0xeee4('0x41')]){_0x54fcda['include']=[{'all':!![]}];}_0x54fcda=_[_0xeee4('0x58')]({},_0x54fcda,_0x2e21ea[_0xeee4('0x59')]);if(!_[_0xeee4('0x2f')](_0x54fcda['attributes'],'id')){_0x54fcda[_0xeee4('0x43')][_0xeee4('0x44')]('id');}return db[_0xeee4('0x37')][_0xeee4('0x30')](_0x54fcda)[_0xeee4('0x15')](handleEntityNotFound(_0x44f746,null))[_0xeee4('0x15')](function(_0x86fbc3){var _0x5b3a13=[];values=_0x86fbc3;if(_0x2e21ea[_0xeee4('0x40')]['openTabs']===_0xeee4('0x47')){_0x5b3a13[_0xeee4('0x44')](get_open_tabs('chat',_0x86fbc3[_0xeee4('0x4b')]));_0x5b3a13['push'](get_open_tabs(_0xeee4('0x4a'),_0x86fbc3[_0xeee4('0x4b')]));_0x5b3a13['push'](get_open_tabs(_0xeee4('0x4e'),_0x86fbc3[_0xeee4('0x4b')]));_0x5b3a13[_0xeee4('0x44')](get_open_tabs(_0xeee4('0x4f'),_0x86fbc3[_0xeee4('0x4b')]));_0x5b3a13[_0xeee4('0x44')](get_open_tabs('fax',_0x86fbc3[_0xeee4('0x4b')]));_0x5b3a13[_0xeee4('0x44')](get_open_tabs('mail',_0x86fbc3['dataValues']));return BPromise['all'](_0x5b3a13);}else{return values;}})['then'](function(_0x227d00){return values;})[_0xeee4('0x15')](respondWithResult(_0x44f746,null))[_0xeee4('0x1e')](handleError(_0x44f746,null));};exports['update']=function(_0x4910eb,_0x26b3f0){if(_0x4910eb[_0xeee4('0x5a')]['id']){delete _0x4910eb[_0xeee4('0x5a')]['id'];}delete _0x4910eb[_0xeee4('0x5a')]['role'];return db[_0xeee4('0x37')]['find']({'where':{'id':_0x4910eb[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x26b3f0,null))[_0xeee4('0x15')](saveUpdates(_0x4910eb[_0xeee4('0x5a')],null))[_0xeee4('0x15')](respondWithResult(_0x26b3f0,null))[_0xeee4('0x1e')](handleError(_0x26b3f0,null));};exports[_0xeee4('0x5c')]=function(_0x370034,_0x17265a){return db[_0xeee4('0x37')][_0xeee4('0x5c')]()['then'](respondWithResult(_0x17265a,null))[_0xeee4('0x1e')](handleError(_0x17265a,null));};exports[_0xeee4('0x5d')]=function(_0x457b2a,_0x7d09b6){return db[_0xeee4('0x37')][_0xeee4('0x30')]({'where':{'id':_0x457b2a[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x7d09b6,null))[_0xeee4('0x15')](function(_0x5af749){if(_0x5af749){return _0x5af749[_0xeee4('0x5d')](_0x457b2a[_0xeee4('0x5a')][_0xeee4('0x5e')],_[_0xeee4('0x5f')](_0x457b2a[_0xeee4('0x5a')],[_0xeee4('0x5e'),'id'])||{});}})[_0xeee4('0x15')](respondWithResult(_0x7d09b6,null))[_0xeee4('0x1e')](handleError(_0x7d09b6,null));};function validateUser(_0x5c562d){return new BPromise(function(_0x10e28e,_0x33ce03){if(_0x5c562d[_0xeee4('0x60')])return _0x10e28e(_0x5c562d);return db[_0xeee4('0x61')][_0xeee4('0x62')](0x1)[_0xeee4('0x15')](function(_0x73374d){if(_0x73374d[_0xeee4('0x63')])authService[_0xeee4('0x64')](_0x5c562d[_0xeee4('0x53')]);db[_0xeee4('0x37')][_0xeee4('0x65')](_0xeee4('0x60'))[_0xeee4('0x15')](function(_0x2f05a5){if(_[_0xeee4('0x66')](_0x2f05a5)){_0x5c562d[_0xeee4('0x60')]=_0x73374d['min_internal']||0x1;return;}if(_[_0xeee4('0x66')](_0x73374d['min_internal'])||_0x73374d[_0xeee4('0x67')]===_0x2f05a5){_0x5c562d[_0xeee4('0x60')]=_0x2f05a5+0x1;return;}if(_0x73374d[_0xeee4('0x67')]>_0x2f05a5){_0x5c562d['internal']=_0x73374d[_0xeee4('0x67')];return;}return db['sequelize']['query'](_0xeee4('0x68'),{'type':db[_0xeee4('0x69')][_0xeee4('0x6a')][_0xeee4('0x6b')]})[_0xeee4('0x15')](function(_0x4d4584){if(_0x4d4584&&_0x4d4584['length']){for(var _0x122fdd=0x0,_0x163b3e=_0x4d4584['length'];_0x122fdd<_0x163b3e&&_[_0xeee4('0x66')](_0x5c562d['internal']);_0x122fdd++){if(_0x73374d[_0xeee4('0x67')]<=_0x4d4584[_0x122fdd]['from']){_0x5c562d[_0xeee4('0x60')]=_0x4d4584[_0x122fdd][_0xeee4('0x6c')];}else if(_0x73374d[_0xeee4('0x67')]>_0x4d4584[_0x122fdd][_0xeee4('0x6c')]&&_0x73374d[_0xeee4('0x67')]<=_0x4d4584[_0x122fdd]['to']){_0x5c562d['internal']=_0x73374d['min_internal'];}}}if(_[_0xeee4('0x66')](_0x5c562d[_0xeee4('0x60')])){_0x5c562d[_0xeee4('0x60')]=_0x2f05a5+0x1;}return _0x10e28e(_0x5c562d);});});})[_0xeee4('0x1e')](function(_0x1f65a6){_0x33ce03(_0x1f65a6);});});}function updateUser(_0x486523){return new BPromise(function(_0x4887ca,_0x44d34e){try{if(_0x486523[_0xeee4('0x6d')]){_0x486523[_0xeee4('0x6e')]=_0x486523[_0xeee4('0x60')];_0x486523[_0xeee4('0x6f')]={'mailbox':_0x486523['internal'],'password':_0x486523[_0xeee4('0x53')],'fullname':_0x486523[_0xeee4('0x70')],'email':_0x486523[_0xeee4('0x71')]};}if(_0x486523[_0xeee4('0x26')]===_0xeee4('0x2b')){if(!_0x486523[_0xeee4('0x72')])_0x486523[_0xeee4('0x72')]=[_0xeee4('0x73'),'102',_0xeee4('0x74'),_0xeee4('0x75'),_0xeee4('0x76'),_0xeee4('0x77'),_0xeee4('0x78'),'106',_0xeee4('0x79'),_0xeee4('0x7a'),_0xeee4('0x7b'),_0xeee4('0x7c'),_0xeee4('0x7d'),_0xeee4('0x7e'),_0xeee4('0x7f')];}_0x4887ca(_0x486523);}catch(_0x41dfd5){_0x44d34e(_0x41dfd5);}});}exports[_0xeee4('0x80')]=function(_0x505c99,_0x380c59){if(_0x505c99[_0xeee4('0x29')]['role']==='agent')throw new Error(_0xeee4('0x81'));if(_0x505c99[_0xeee4('0x5a')][_0xeee4('0x26')]===_0xeee4('0x29')&&_0x505c99[_0xeee4('0x29')][_0xeee4('0x26')]!=='admin'){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0x505c99['body']['role']===_0xeee4('0x27')&&_0x505c99[_0xeee4('0x29')][_0xeee4('0x26')]!==_0xeee4('0x27')){throw new Error(_0xeee4('0x82'));}return licenseUtil[_0xeee4('0x83')]([_0x505c99[_0xeee4('0x5a')]])[_0xeee4('0x15')](function(){return validateUser(_0x505c99[_0xeee4('0x5a')]);})[_0xeee4('0x15')](function(_0x54dd2a){return updateUser(_0x54dd2a)[_0xeee4('0x15')](function(_0x317f1e){if(_0x317f1e[_0xeee4('0x26')]===_0xeee4('0x27')){_0x317f1e[_0xeee4('0x84')]=_0x505c99[_0xeee4('0x29')][_0xeee4('0x84')];delete _0x317f1e[_0xeee4('0x85')];}return _0x317f1e;});})[_0xeee4('0x15')](function(_0xdceb50){return db[_0xeee4('0x37')][_0xeee4('0x80')](_0xdceb50,{'include':[{'model':db[_0xeee4('0x6f')],'as':_0xeee4('0x6f')}]});})[_0xeee4('0x15')](function(_0x2de089){if(_0x505c99[_0xeee4('0x5a')][_0xeee4('0x26')]===_0xeee4('0x29'))return _0x2de089;if(_0x505c99[_0xeee4('0x29')][_0xeee4('0x26')]!==_0xeee4('0x29'))return _0x2de089;return db['UserProfileSection']['find']({'where':{'name':_0x2de089[_0xeee4('0x26')]===_0xeee4('0x2b')?_0xeee4('0x2a'):_0xeee4('0x2c'),'userProfileId':_0x505c99[_0xeee4('0x29')][_0xeee4('0x85')]},'raw':!![]})[_0xeee4('0x15')](function(_0x4f6a55){if(!_0x4f6a55||_0x4f6a55[_0xeee4('0x86')]!=0x0)return _0x2de089;return db[_0xeee4('0x32')][_0xeee4('0x80')]({'name':_0x2de089[_0xeee4('0x31')],'resourceId':_0x2de089['id'],'type':_0x4f6a55['name'],'sectionId':_0x4f6a55['id']},{})[_0xeee4('0x15')](function(){return _0x2de089;});})[_0xeee4('0x1e')](function(_0xe1202){logger['error'](_0xeee4('0x87'),_0xe1202);throw _0xe1202;});})[_0xeee4('0x15')](respondWithResult(_0x380c59,0xc9))[_0xeee4('0x1e')](handleError(_0x380c59,null));};exports[_0xeee4('0x88')]=function(_0x3c3d37,_0x348293){var _0x586a12=_0x3c3d37[_0xeee4('0x5a')];var _0x33915a=[];if(_0x3c3d37[_0xeee4('0x29')][_0xeee4('0x26')]===_0xeee4('0x2b'))throw new Error(_0xeee4('0x81'));if(_['some'](_0x586a12,['role',_0xeee4('0x29')])&&_0x3c3d37[_0xeee4('0x29')][_0xeee4('0x26')]!==_0xeee4('0x27')){throw new Error(_0xeee4('0x89'));}if(_[_0xeee4('0x8a')](_0x586a12,[_0xeee4('0x26'),_0xeee4('0x27')])&&_0x3c3d37[_0xeee4('0x29')][_0xeee4('0x26')]!==_0xeee4('0x27')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil[_0xeee4('0x83')](_0x586a12)[_0xeee4('0x15')](function(){return validateUser(_0x586a12[0x0]);})[_0xeee4('0x15')](function(){for(var _0x61ad3f=0x1;_0x61ad3f<_0x586a12[_0xeee4('0x57')];_0x61ad3f++){var _0xe3591c=_0x586a12[_0x61ad3f-0x1][_0xeee4('0x60')];if(!_0x586a12[_0x61ad3f][_0xeee4('0x60')])_0x586a12[_0x61ad3f][_0xeee4('0x60')]=_0xe3591c+0x1;_0x33915a['push'](validateUser(_0x586a12[_0x61ad3f]));}return BPromise['all'](_0x33915a);})[_0xeee4('0x15')](function(){_0x33915a=[];for(var _0x276d29=0x0;_0x276d29<_0x586a12[_0xeee4('0x57')];_0x276d29++){_0x33915a['push'](updateUser(_0x586a12[_0x276d29]));}return BPromise[_0xeee4('0x50')](_0x33915a);})[_0xeee4('0x15')](function(){return BPromise[_0xeee4('0x8b')](_0x586a12,function(_0x1a7b03){return db[_0xeee4('0x37')][_0xeee4('0x80')](_0x1a7b03,{'include':[{'model':db[_0xeee4('0x6f')],'as':_0xeee4('0x6f')}]})[_0xeee4('0x15')](function(_0x1c78c1){_0x1a7b03['id']=_0x1c78c1['id'];return _0x1a7b03;});});})[_0xeee4('0x15')](function(_0x1b5bb7){if(_0x3c3d37['body'][_0xeee4('0x26')]===_0xeee4('0x29'))return _0x1b5bb7;if(_0x3c3d37[_0xeee4('0x29')][_0xeee4('0x26')]!==_0xeee4('0x29'))return _0x1b5bb7;var _0x3fc549=_[_0xeee4('0x8a')](_0x1b5bb7,function(_0x465f8d){return _0x465f8d[_0xeee4('0x26')]===_0xeee4('0x2b')||_0x465f8d[_0xeee4('0x26')]===_0xeee4('0x8c');});if(!_0x3fc549)return _0x1b5bb7;return db['UserProfileSection'][_0xeee4('0x45')]({'where':{'name':{'$or':['Agents',_0xeee4('0x2c')]},'userProfileId':_0x3c3d37[_0xeee4('0x29')]['userProfileId']},'raw':!![]})[_0xeee4('0x15')](function(_0x1bcb86){if(_[_0xeee4('0x8d')](_0x1bcb86)||!_[_0xeee4('0x8a')](_0x1bcb86,[_0xeee4('0x86'),0x0]))return _0x1b5bb7;_0x33915a=[];var _0xaf8284=_(_0x1bcb86)[_0xeee4('0x39')](function(_0x243d05){if(_0x243d05[_0xeee4('0x86')]===0x1)return;return _0x243d05['name']==='Agents'?_0xeee4('0x2b'):_0xeee4('0x8c');})[_0xeee4('0x8e')]()[_0xeee4('0x2e')]();for(var _0x20ac0c=0x0;_0x20ac0c<_0x1b5bb7[_0xeee4('0x57')];_0x20ac0c++){if(!_['includes'](_0xaf8284,_0x1b5bb7[_0x20ac0c][_0xeee4('0x26')]))return;var _0xe41464=_0x1b5bb7[_0x20ac0c]['role']===_0xeee4('0x2b')?_0xeee4('0x2a'):_0xeee4('0x2c');_0x33915a[_0xeee4('0x44')](db[_0xeee4('0x32')]['create']({'name':_0x1b5bb7[_0x20ac0c][_0xeee4('0x31')],'resourceId':_0x1b5bb7[_0x20ac0c]['id'],'type':_0xe41464,'sectionId':_[_0xeee4('0x30')](_0x1bcb86,[_0xeee4('0x31'),_0xe41464])['id']},{}));}return BPromise['all'](_0x33915a);});})[_0xeee4('0x15')](respondWithResult(_0x348293,0xc9))[_0xeee4('0x1e')](handleError(_0x348293,null));};exports[_0xeee4('0x8f')]=function(_0x24fba9,_0x3fbbbd){if(_0x24fba9['body']['id']){delete _0x24fba9[_0xeee4('0x5a')]['id'];}return db[_0xeee4('0x37')]['find']({'where':{'id':_0x24fba9[_0xeee4('0x5b')]['id']}})['then'](function(_0x52848e){if(!_0x52848e)return null;if(_0x52848e['id']===_0x24fba9['user']['id']){if(!_0x24fba9['body'][_0xeee4('0x90')]||!_0x24fba9[_0xeee4('0x5a')][_0xeee4('0x91')]){throw new db['Sequelize'][(_0xeee4('0x92'))](_0xeee4('0x93'));}if(!_0x52848e[_0xeee4('0x94')](_0x24fba9['body'][_0xeee4('0x90')])){throw new db[(_0xeee4('0x95'))][(_0xeee4('0x92'))]('Wrong\x20credentials');}if(_0x24fba9['body'][_0xeee4('0x90')]===_0x24fba9[_0xeee4('0x5a')][_0xeee4('0x91')]){throw new db[(_0xeee4('0x95'))][(_0xeee4('0x92'))](_0xeee4('0x96'));}}else if(_0x24fba9[_0xeee4('0x29')][_0xeee4('0x26')]===_0xeee4('0x27')){if(!_0x24fba9['body'][_0xeee4('0x91')]){throw new db[(_0xeee4('0x95'))][(_0xeee4('0x92'))](_0xeee4('0x97'));}}else if(_0x24fba9['user'][_0xeee4('0x26')]===_0xeee4('0x29')){if(!_0x24fba9['body']['newPassword']){throw new db[(_0xeee4('0x95'))][(_0xeee4('0x92'))](_0xeee4('0x97'));}if(_0x52848e['role']!==_0xeee4('0x2b')){throw new db['Sequelize'][(_0xeee4('0x92'))](_0xeee4('0x81'));}}else{throw new db[(_0xeee4('0x95'))][(_0xeee4('0x92'))](_0xeee4('0x81'));}return _0x52848e;})[_0xeee4('0x15')](handleEntityNotFound(_0x3fbbbd,null))[_0xeee4('0x15')](function(_0x4f5fce){return db[_0xeee4('0x61')][_0xeee4('0x98')]({'attributes':['id',_0xeee4('0x63'),_0xeee4('0x99'),_0xeee4('0x9a')]})[_0xeee4('0x15')](function(_0x11706c){if(_0x11706c['securePassword'])authService['validatePasswordPattern'](_0x24fba9[_0xeee4('0x5a')]['newPassword']);if(!_0x11706c[_0xeee4('0x99')]||!_0x4f5fce[_0xeee4('0x9b')])return _0x4f5fce;authService[_0xeee4('0x9c')](_0x24fba9['body'][_0xeee4('0x91')],_0x4f5fce['previousPasswords'],_0x11706c[_0xeee4('0x9a')]);return _0x4f5fce;})[_0xeee4('0x15')](saveUpdates({'password':_0x24fba9['body'][_0xeee4('0x91')],'passwordResetAt':_0x24fba9['user']['id']==_0x24fba9[_0xeee4('0x5b')]['id']?moment():null,'previousPasswords':authService[_0xeee4('0x9d')](_0x24fba9[_0xeee4('0x5a')]['newPassword'],_0x4f5fce[_0xeee4('0x9b')])},null));})[_0xeee4('0x15')](respondWithResult(_0x3fbbbd,null))[_0xeee4('0x1e')](handleError(_0x3fbbbd,null));};exports[_0xeee4('0x9e')]=function(_0x18eba9,_0x3e760f){var _0x4c1fff=_0x18eba9[_0xeee4('0x5a')][_0xeee4('0x9f')];return db[_0xeee4('0x37')]['find']({'where':{'id':_0x18eba9[_0xeee4('0x5b')]['id']},'attributes':['id','name','role',_0xeee4('0xa0'),'loginInPause','voicePause',_0xeee4('0xa1')]})[_0xeee4('0x15')](handleEntityNotFound(_0x3e760f,null))['then'](function(_0x2b93a9){if(_0x2b93a9){if(!utils[_0xeee4('0xa2')](_0x4c1fff)){throw new db[(_0xeee4('0x95'))][(_0xeee4('0x92'))]('Unknown\x20channel');}return _0x2b93a9[_0xeee4('0xa3')+_[_0xeee4('0xa4')](_0x4c1fff[_0xeee4('0xa5')]())+_0xeee4('0xa6')](_0x18eba9['body'][_0xeee4('0x5e')],{'penalty':_0x18eba9[_0xeee4('0x5a')][_0xeee4('0xa7')]||0x0})[_0xeee4('0xa8')](function(_0x2e6f60){for(var _0x1e14e5=0x0;_0x1e14e5<_0x18eba9[_0xeee4('0x5a')][_0xeee4('0x5e')]['length'];_0x1e14e5+=0x1){var _0x5f5a98={'UserId':Number(_0x18eba9[_0xeee4('0x5b')]['id'])};_0x5f5a98[_['capitalize'](_0x4c1fff[_0xeee4('0xa5')]())+_0xeee4('0xa9')]=Number(_0x18eba9[_0xeee4('0x5a')][_0xeee4('0x5e')][_0x1e14e5]);socket[_0xeee4('0xaa')]('user'+_[_0xeee4('0xa4')](_0x4c1fff[_0xeee4('0xa5')]())+_0xeee4('0xab'),_0x5f5a98);}return _0x2e6f60;})[_0xeee4('0x15')](function(){if(_0x4c1fff==='voice'){return db[_0xeee4('0xac')]['findAll']({'where':{'id':_0x18eba9[_0xeee4('0x5a')][_0xeee4('0x5e')]||[]},'raw':!![],'attributes':['id',_0xeee4('0x31')]});}})['then'](function(_0x1a4c90){var _0x55aa4e=_0x2b93a9[_0xeee4('0xad')]({'plain':!![]});var _0x28cb56=[];if(_0x4c1fff===_0xeee4('0xae')&&_0x55aa4e['role']===_0xeee4('0x2b')&&_0x55aa4e[_0xeee4('0xa0')]){for(var _0x4f8d4c=0x0;_0x4f8d4c<_0x1a4c90[_0xeee4('0x57')];_0x4f8d4c+=0x1){_0x28cb56[_0xeee4('0x44')]({'membername':_0x55aa4e['name'],'UserId':_0x55aa4e['id'],'queue_name':_0x1a4c90[_0x4f8d4c][_0xeee4('0x31')],'VoiceQueueId':_0x1a4c90[_0x4f8d4c]['id'],'interface':_['isNil'](_0x55aa4e['interface'])?util[_0xeee4('0xaf')](_0xeee4('0xb0'),_0x55aa4e['name']):_0x55aa4e[_0xeee4('0xa1')],'paused':_0x55aa4e[_0xeee4('0xb1')]||![],'penalty':_0x18eba9[_0xeee4('0x5a')][_0xeee4('0xa7')]||0x0});}return BPromise[_0xeee4('0x8b')](_0x28cb56,function(_0x139320){return db['UserVoiceQueueRt'][_0xeee4('0xb2')](_0x139320);});}return _0x2b93a9;});}})['then'](respondWithStatusCode(_0x3e760f,null))[_0xeee4('0x1e')](handleError(_0x3e760f,null));};exports[_0xeee4('0xb3')]=function(_0x4ba1da,_0x5a3260){var _0xd88c5b;return db[_0xeee4('0x37')]['find']({'where':{'id':_0x4ba1da[_0xeee4('0x5b')]['id']},'attributes':['id',_0xeee4('0x31'),'role']})['then'](handleEntityNotFound(_0x5a3260,null))[_0xeee4('0x15')](function(_0x230e2f){if(_0x230e2f){_0xd88c5b=_0x230e2f;if(!_0x4ba1da[_0xeee4('0x40')][_0xeee4('0x9f')]||!utils[_0xeee4('0xa2')](_0x4ba1da[_0xeee4('0x40')]['channel'])){throw new db['Sequelize'][(_0xeee4('0x92'))]('Unknown\x20channel');}return _0x230e2f[_0xeee4('0xb4')+_['capitalize'](_0x4ba1da['query'][_0xeee4('0x9f')][_0xeee4('0xa5')]())+_0xeee4('0xa6')](_0x4ba1da[_0xeee4('0x40')][_0xeee4('0x5e')]);}})[_0xeee4('0x15')](function(_0x15150e){if(_[_0xeee4('0xb5')](_0x4ba1da['query'][_0xeee4('0x5e')])){for(var _0x12bacd=0x0;_0x12bacd<_0x4ba1da[_0xeee4('0x40')][_0xeee4('0x5e')][_0xeee4('0x57')];_0x12bacd+=0x1){var _0x4aad96={'UserId':Number(_0x4ba1da[_0xeee4('0x5b')]['id'])};_0x4aad96[_[_0xeee4('0xa4')](_0x4ba1da['query']['channel'][_0xeee4('0xa5')]())+_0xeee4('0xa9')]=Number(_0x4ba1da[_0xeee4('0x40')][_0xeee4('0x5e')][_0x12bacd]);socket['emit']('user'+_[_0xeee4('0xa4')](_0x4ba1da[_0xeee4('0x40')]['channel']['toLowerCase']())+'Queue:remove',_0x4aad96);}}else{var _0x4aad96={'UserId':Number(_0x4ba1da[_0xeee4('0x5b')]['id'])};_0x4aad96[_[_0xeee4('0xa4')](_0x4ba1da[_0xeee4('0x40')][_0xeee4('0x9f')][_0xeee4('0xa5')]())+_0xeee4('0xa9')]=Number(_0x4ba1da[_0xeee4('0x40')]['ids']);socket[_0xeee4('0xaa')](_0xeee4('0x29')+_[_0xeee4('0xa4')](_0x4ba1da['query']['channel'][_0xeee4('0xa5')]())+_0xeee4('0xb6'),_0x4aad96);}return _0x15150e;})[_0xeee4('0x15')](function(){if(_0x4ba1da[_0xeee4('0x40')][_0xeee4('0x9f')]===_0xeee4('0xae')){return db[_0xeee4('0xb7')][_0xeee4('0x25')]({'where':{'UserId':_0x4ba1da[_0xeee4('0x5b')]['id'],'VoiceQueueId':_0x4ba1da[_0xeee4('0x40')][_0xeee4('0x5e')]},'individualHooks':!![]})[_0xeee4('0x15')](function(){return _0xd88c5b;});}return _0xd88c5b;})['then'](respondWithStatusCode(_0x5a3260,null))['catch'](handleError(_0x5a3260,null));};exports[_0xeee4('0xb8')]=function(_0xd22ac5,_0x1e75c7){_0xd22ac5['body']['userpic']=_0xd22ac5[_0xeee4('0xb9')][_0xeee4('0xba')];return db[_0xeee4('0x37')][_0xeee4('0x30')]({'where':{'id':_0xd22ac5[_0xeee4('0x5b')]['id']}})['then'](handleEntityNotFound(_0x1e75c7,null))[_0xeee4('0x15')](saveUpdates(_0xd22ac5[_0xeee4('0x5a')],null))[_0xeee4('0x15')](respondWithResult(_0x1e75c7,null))[_0xeee4('0x1e')](handleError(_0x1e75c7,null));};exports[_0xeee4('0xbb')]=function(_0x1fa74a,_0x25092c){var _0x3e0e7d=path[_0xeee4('0xbc')](config[_0xeee4('0xbd')],_0xeee4('0xbe'));return db[_0xeee4('0x37')]['find']({'where':{'id':_0x1fa74a['params']['id']},'attributes':['id',_0xeee4('0xbf')],'raw':!![]})[_0xeee4('0x15')](handleEntityNotFound(_0x25092c,null))['then'](function(_0x2169ca){if(_0x2169ca){if(_['isNil'](_0x2169ca['userpic'])){return _0x25092c[_0xeee4('0xc0')](_0x3e0e7d);}else{if(!fs['existsSync'](path[_0xeee4('0xbc')](config[_0xeee4('0xbd')],_0xeee4('0xc1'),_0x2169ca['userpic']))){return _0x25092c[_0xeee4('0xc0')](_0x3e0e7d);}return _0x25092c[_0xeee4('0xc0')](path[_0xeee4('0xbc')](config[_0xeee4('0xbd')],'server/files/images/',_0x2169ca[_0xeee4('0xbf')]));}}})[_0xeee4('0x1e')](handleError(_0x25092c,null));};exports[_0xeee4('0xc2')]=function(_0x22fe3f,_0x571648){return db['User'][_0xeee4('0x30')]({'where':{'id':_0x22fe3f[_0xeee4('0x5b')]['id']},'attributes':['id']})['then'](handleEntityNotFound(_0x571648,null))[_0xeee4('0x15')](function(_0x87a08c){var _0x54c604=[];values=_0x87a08c[_0xeee4('0x4b')];_0x54c604[_0xeee4('0x44')](get_open_tabs(_0xeee4('0x48'),_0x87a08c[_0xeee4('0x4b')]));_0x54c604['push'](get_open_tabs(_0xeee4('0x4a'),_0x87a08c[_0xeee4('0x4b')]));_0x54c604[_0xeee4('0x44')](get_open_tabs(_0xeee4('0x4e'),_0x87a08c[_0xeee4('0x4b')]));_0x54c604[_0xeee4('0x44')](get_open_tabs(_0xeee4('0x4f'),_0x87a08c[_0xeee4('0x4b')]));_0x54c604[_0xeee4('0x44')](get_open_tabs(_0xeee4('0x4c'),_0x87a08c[_0xeee4('0x4b')]));_0x54c604[_0xeee4('0x44')](get_open_tabs(_0xeee4('0x4d'),_0x87a08c[_0xeee4('0x4b')]));return BPromise[_0xeee4('0x50')](_0x54c604);})['then'](function(_0x3e4db8){var _0x126779=[];if(_0x3e4db8){for(var _0x3efa39=0x0;_0x3efa39<values[_0xeee4('0xc3')][_0xeee4('0x57')];_0x3efa39++){var _0xbf1ee5=values[_0xeee4('0xc3')][_0x3efa39];_0x126779['push']({'channel':_0xeee4('0xc4'),'id':_0xbf1ee5['id'],'createdAt':_0xbf1ee5[_0xeee4('0xc5')]});}for(var _0x3efa39=0x0;_0x3efa39<values['FaxOpenTabs'][_0xeee4('0x57')];_0x3efa39++){var _0xbf1ee5=values[_0xeee4('0xc6')][_0x3efa39];_0x126779[_0xeee4('0x44')]({'channel':_0xeee4('0xc7'),'id':_0xbf1ee5['id'],'createdAt':_0xbf1ee5[_0xeee4('0xc5')]});}for(var _0x3efa39=0x0;_0x3efa39<values[_0xeee4('0xc8')][_0xeee4('0x57')];_0x3efa39++){var _0xbf1ee5=values[_0xeee4('0xc8')][_0x3efa39];_0x126779[_0xeee4('0x44')]({'channel':_0xeee4('0xc9'),'id':_0xbf1ee5['id'],'createdAt':_0xbf1ee5[_0xeee4('0xc5')]});}for(var _0x3efa39=0x0;_0x3efa39<values[_0xeee4('0xca')][_0xeee4('0x57')];_0x3efa39++){var _0xbf1ee5=values[_0xeee4('0xca')][_0x3efa39];_0x126779[_0xeee4('0x44')]({'channel':'MAIL','id':_0xbf1ee5['id'],'createdAt':_0xbf1ee5[_0xeee4('0xc5')]});}for(var _0x3efa39=0x0;_0x3efa39<values[_0xeee4('0xcb')][_0xeee4('0x57')];_0x3efa39++){var _0xbf1ee5=values[_0xeee4('0xcb')][_0x3efa39];_0x126779[_0xeee4('0x44')]({'channel':_0xeee4('0xcc'),'id':_0xbf1ee5['id'],'createdAt':_0xbf1ee5[_0xeee4('0xc5')]});}for(var _0x3efa39=0x0;_0x3efa39<values[_0xeee4('0xcd')][_0xeee4('0x57')];_0x3efa39++){var _0xbf1ee5=values[_0xeee4('0xcd')][_0x3efa39];_0x126779['push']({'channel':'WHATSAPP','id':_0xbf1ee5['id'],'createdAt':_0xbf1ee5[_0xeee4('0xc5')]});}var _0x50bb5b={'count':_0x126779['length'],'rows':_0x126779};return _0x50bb5b;}else return null;})[_0xeee4('0x15')](respondWithResult(_0x571648,null))[_0xeee4('0x1e')](handleError(_0x571648,null));};exports[_0xeee4('0xce')]=function(_0x4b0fd1,_0x3f059c){var _0x21ae7e={};var _0x365a15={};var _0x2e562b;var _0x50c289;return db[_0xeee4('0x37')][_0xeee4('0x98')]({'where':{'id':_0x4b0fd1['params']['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x3f059c,null))['then'](function(_0x59645f){if(_0x59645f){_0x2e562b=_0x59645f;_0x365a15[_0xeee4('0x51')]=_[_0xeee4('0x52')](db[_0xeee4('0xcf')]['rawAttributes']);_0x365a15[_0xeee4('0x40')]=_['keys'](_0x4b0fd1[_0xeee4('0x40')]);_0x365a15[_0xeee4('0x54')]=_[_0xeee4('0x55')](_0x365a15[_0xeee4('0x51')],_0x365a15[_0xeee4('0x40')]);_0x21ae7e[_0xeee4('0x43')]=_[_0xeee4('0x55')](_0x365a15['model'],qs[_0xeee4('0x56')](_0x4b0fd1[_0xeee4('0x40')][_0xeee4('0x56')]));_0x21ae7e[_0xeee4('0x43')]=_0x21ae7e[_0xeee4('0x43')][_0xeee4('0x57')]?_0x21ae7e[_0xeee4('0x43')]:_0x365a15[_0xeee4('0x51')];_0x21ae7e[_0xeee4('0xd0')]=qs[_0xeee4('0xd1')](_0x4b0fd1[_0xeee4('0x40')][_0xeee4('0xd1')]);_0x21ae7e[_0xeee4('0x3f')]=qs['filters'](_[_0xeee4('0xd2')](_0x4b0fd1[_0xeee4('0x40')],_0x365a15[_0xeee4('0x54')]));if(_0x4b0fd1[_0xeee4('0x40')][_0xeee4('0x3d')]){_0x21ae7e[_0xeee4('0x3f')]=_[_0xeee4('0x58')](_0x21ae7e[_0xeee4('0x3f')],{'$or':_[_0xeee4('0x39')](_0x21ae7e[_0xeee4('0x43')],function(_0x3d57c0){var _0x4010f8={};_0x4010f8[_0x3d57c0]={'$like':'%'+_0x4b0fd1[_0xeee4('0x40')]['filter']+'%'};return _0x4010f8;})});}_0x21ae7e=_['merge']({},_0x21ae7e,_0x4b0fd1[_0xeee4('0x59')]);return _0x2e562b[_0xeee4('0xce')](_0x21ae7e);}})[_0xeee4('0x15')](function(_0x53567d){if(_0x53567d){_0x50c289=_0x53567d[_0xeee4('0x57')];if(_0x4b0fd1['query']['hasOwnProperty'](_0xeee4('0x41'))){_0x21ae7e[_0xeee4('0x42')]=[{'model':db[_0xeee4('0xd3')],'as':'List','required':![]},{'model':db[_0xeee4('0xd4')],'as':_0xeee4('0xd5'),'attributes':['id',_0xeee4('0x31'),_0xeee4('0xd6')],'where':_0x4b0fd1[_0xeee4('0x40')]['tag']?{'id':_0x4b0fd1[_0xeee4('0x40')][_0xeee4('0xd7')]}:undefined,'required':_0x4b0fd1[_0xeee4('0x40')][_0xeee4('0xd7')]?!![]:![]}];}if(!_0x4b0fd1[_0xeee4('0x40')][_0xeee4('0xd8')](_0xeee4('0xd9'))){_0x21ae7e[_0xeee4('0x23')]=qs[_0xeee4('0x23')](_0x4b0fd1['query'][_0xeee4('0x23')]);_0x21ae7e[_0xeee4('0x22')]=qs['offset'](_0x4b0fd1[_0xeee4('0x40')][_0xeee4('0x22')]);}return _0x2e562b[_0xeee4('0xce')](_0x21ae7e);}})[_0xeee4('0x15')](function(_0x1e155c){if(_0x1e155c){return _0x1e155c?{'count':_0x50c289,'rows':_0x1e155c}:null;}})[_0xeee4('0x15')](respondWithResult(_0x3f059c,null))[_0xeee4('0x1e')](handleError(_0x3f059c,null));};exports[_0xeee4('0xda')]=function(_0x348859,_0x2bb8cb){var _0xbb94a8;var _0x3747d3;var _0x3d8fda={};var _0x15c7f5;return db[_0xeee4('0x37')][_0xeee4('0x98')]({'where':{'id':_0x348859[_0xeee4('0x5b')]['id']},'attributes':['id','name','role']})['then'](handleEntityNotFound(_0x2bb8cb,null))['then'](function(_0x3be710){if(!utils[_0xeee4('0xa2')](_0x348859[_0xeee4('0x40')][_0xeee4('0x9f')])){throw new db[(_0xeee4('0x95'))][(_0xeee4('0x92'))]('Unknown\x20channel');}_0xbb94a8=_0x3be710;var _0x56f4ed={};_0x56f4ed['model']=_['keys'](db[_['capitalize'](_0x348859['query'][_0xeee4('0x9f')])+'Queue']['rawAttributes']);_0x56f4ed[_0xeee4('0x40')]=_[_0xeee4('0x52')](_0x348859[_0xeee4('0x40')]);_0x56f4ed[_0xeee4('0x54')]=_[_0xeee4('0x55')](_0x56f4ed[_0xeee4('0x51')],_0x56f4ed['query']);_0x3d8fda['attributes']=_[_0xeee4('0x55')](_0x56f4ed[_0xeee4('0x51')],qs[_0xeee4('0x56')](_0x348859['query'][_0xeee4('0x56')]));_0x3d8fda[_0xeee4('0x43')]=_0x3d8fda[_0xeee4('0x43')][_0xeee4('0x57')]?_0x3d8fda[_0xeee4('0x43')]:_0x56f4ed[_0xeee4('0x51')];_0x3d8fda[_0xeee4('0xd0')]=qs[_0xeee4('0xd1')](_0x348859[_0xeee4('0x40')][_0xeee4('0xd1')]);_0x3d8fda[_0xeee4('0x3f')]=qs[_0xeee4('0x54')](_['pick'](_0x348859[_0xeee4('0x40')],_0x56f4ed['filters']));if(_0x348859[_0xeee4('0x40')][_0xeee4('0x3d')]){_0x3d8fda[_0xeee4('0x3f')]=_[_0xeee4('0x58')](_0x3d8fda[_0xeee4('0x3f')],{'$or':_[_0xeee4('0x39')](_0x3d8fda[_0xeee4('0x43')],function(_0x5101ac){var _0x245cec={};_0x245cec[_0x5101ac]={'$like':'%'+_0x348859[_0xeee4('0x40')][_0xeee4('0x3d')]+'%'};return _0x245cec;})});}_0x3d8fda=_[_0xeee4('0x58')]({},_0x3d8fda,_0x348859[_0xeee4('0x59')]);switch(_0xbb94a8[_0xeee4('0x26')]){case'admin':return db[_[_0xeee4('0xa4')](_0x348859['query'][_0xeee4('0x9f')])+'Queue'][_0xeee4('0x45')](_0x3d8fda);case _0xeee4('0x29'):case'agent':return _0xbb94a8[_0xeee4('0xad')+_[_0xeee4('0xa4')](_0x348859['query'][_0xeee4('0x9f')])+_0xeee4('0xa6')](_0x3d8fda);default:throw new db[(_0xeee4('0x95'))][(_0xeee4('0x92'))]('Unknown\x20role');}})[_0xeee4('0x15')](function(_0xc2dd4c){_0x15c7f5=_0xc2dd4c[_0xeee4('0x57')];if(!_0x348859[_0xeee4('0x40')][_0xeee4('0xd8')](_0xeee4('0xd9'))){_0x3d8fda[_0xeee4('0x23')]=qs['limit'](_0x348859[_0xeee4('0x40')]['limit']);_0x3d8fda[_0xeee4('0x22')]=qs[_0xeee4('0x22')](_0x348859[_0xeee4('0x40')][_0xeee4('0x22')]);}switch(_0xbb94a8['role']){case _0xeee4('0x27'):return db[_[_0xeee4('0xa4')](_0x348859[_0xeee4('0x40')][_0xeee4('0x9f')])+_0xeee4('0xdb')][_0xeee4('0x45')](_0x3d8fda);case _0xeee4('0x29'):case _0xeee4('0x2b'):return _0xbb94a8[_0xeee4('0xad')+_[_0xeee4('0xa4')](_0x348859[_0xeee4('0x40')][_0xeee4('0x9f')])+_0xeee4('0xa6')](_0x3d8fda);}})[_0xeee4('0x15')](function(_0x5ec3b1){return{'count':_0x15c7f5,'rows':_0x5ec3b1};})['then'](respondWithResult(_0x2bb8cb,null))['catch'](handleError(_0x2bb8cb,null));};exports[_0xeee4('0xdc')]=function(_0x548e9c,_0x45cc44){var _0x292c34={};var _0x57bab8={};var _0x1d68b2;var _0x1f1ab8;return db['User'][_0xeee4('0x98')]({'where':{'id':_0x548e9c[_0xeee4('0x5b')]['id']}})['then'](handleEntityNotFound(_0x45cc44,null))[_0xeee4('0x15')](function(_0x2c1f70){if(_0x2c1f70){_0x1d68b2=_0x2c1f70;_0x57bab8[_0xeee4('0x51')]=_[_0xeee4('0x52')](db[_0xeee4('0xb7')][_0xeee4('0x38')]);_0x57bab8[_0xeee4('0x40')]=_[_0xeee4('0x52')](_0x548e9c[_0xeee4('0x40')]);_0x57bab8['filters']=_[_0xeee4('0x55')](_0x57bab8['model'],_0x57bab8[_0xeee4('0x40')]);_0x292c34[_0xeee4('0x43')]=_['intersection'](_0x57bab8[_0xeee4('0x51')],qs[_0xeee4('0x56')](_0x548e9c[_0xeee4('0x40')][_0xeee4('0x56')]));_0x292c34['attributes']=_0x292c34[_0xeee4('0x43')][_0xeee4('0x57')]?_0x292c34['attributes']:_0x57bab8[_0xeee4('0x51')];_0x292c34['order']=qs['sort'](_0x548e9c[_0xeee4('0x40')][_0xeee4('0xd1')]);_0x292c34['where']=qs[_0xeee4('0x54')](_['pick'](_0x548e9c[_0xeee4('0x40')],_0x57bab8[_0xeee4('0x54')]));if(_0x548e9c[_0xeee4('0x40')][_0xeee4('0x3d')]){_0x292c34[_0xeee4('0x3f')]=_[_0xeee4('0x58')](_0x292c34['where'],{'$or':_[_0xeee4('0x39')](_0x292c34[_0xeee4('0x43')],function(_0x1cae0e){var _0x51d489={};_0x51d489[_0x1cae0e]={'$like':'%'+_0x548e9c[_0xeee4('0x40')][_0xeee4('0x3d')]+'%'};return _0x51d489;})});}_0x292c34=_[_0xeee4('0x58')]({},_0x292c34,_0x548e9c[_0xeee4('0x59')]);return _0x1d68b2[_0xeee4('0xdc')](_0x292c34);}})['then'](function(_0x56e33e){if(_0x56e33e){_0x1f1ab8=_0x56e33e[_0xeee4('0x57')];if(!_0x548e9c[_0xeee4('0x40')]['hasOwnProperty']('nolimit')){_0x292c34[_0xeee4('0x23')]=qs[_0xeee4('0x23')](_0x548e9c['query'][_0xeee4('0x23')]);_0x292c34[_0xeee4('0x22')]=qs[_0xeee4('0x22')](_0x548e9c[_0xeee4('0x40')][_0xeee4('0x22')]);}return _0x1d68b2[_0xeee4('0xdc')](_0x292c34);}})['then'](function(_0x5c0fc0){if(_0x5c0fc0){return _0x5c0fc0?{'count':_0x1f1ab8,'rows':_0x5c0fc0}:null;}})[_0xeee4('0x15')](respondWithResult(_0x45cc44,null))[_0xeee4('0x1e')](handleError(_0x45cc44,null));};exports['getGroups']=function(_0xa156e2,_0x45cad1){var _0x18f850={};var _0x83ceff={};var _0x2f7421;var _0x1b427b;return db[_0xeee4('0x37')][_0xeee4('0x98')]({'where':{'id':_0xa156e2['params']['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x45cad1,null))[_0xeee4('0x15')](function(_0x48d87f){if(_0x48d87f){_0x2f7421=_0x48d87f;_0x83ceff['model']=_[_0xeee4('0x52')](db['ChatGroup'][_0xeee4('0x38')]);_0x83ceff[_0xeee4('0x40')]=_[_0xeee4('0x52')](_0xa156e2[_0xeee4('0x40')]);_0x83ceff[_0xeee4('0x54')]=_[_0xeee4('0x55')](_0x83ceff['model'],_0x83ceff[_0xeee4('0x40')]);_0x18f850[_0xeee4('0x43')]=_[_0xeee4('0x55')](_0x83ceff[_0xeee4('0x51')],qs[_0xeee4('0x56')](_0xa156e2[_0xeee4('0x40')]['fields']));_0x18f850[_0xeee4('0x43')]=_0x18f850[_0xeee4('0x43')][_0xeee4('0x57')]?_0x18f850['attributes']:_0x83ceff[_0xeee4('0x51')];_0x18f850[_0xeee4('0xd0')]=qs[_0xeee4('0xd1')](_0xa156e2[_0xeee4('0x40')][_0xeee4('0xd1')]);_0x18f850[_0xeee4('0x3f')]=qs[_0xeee4('0x54')](_[_0xeee4('0xd2')](_0xa156e2[_0xeee4('0x40')],_0x83ceff[_0xeee4('0x54')]));if(_0xa156e2[_0xeee4('0x40')][_0xeee4('0x3d')]){_0x18f850[_0xeee4('0x3f')]=_['merge'](_0x18f850[_0xeee4('0x3f')],{'$or':_['map'](_0x18f850[_0xeee4('0x43')],function(_0x4ff211){var _0x37c6b0={};_0x37c6b0[_0x4ff211]={'$like':'%'+_0xa156e2['query'][_0xeee4('0x3d')]+'%'};return _0x37c6b0;})});}_0x18f850=_[_0xeee4('0x58')]({},_0x18f850,_0xa156e2['options']);return _0x2f7421[_0xeee4('0xdd')](_0x18f850);}})[_0xeee4('0x15')](function(_0x252572){if(_0x252572){_0x1b427b=_0x252572[_0xeee4('0x57')];if(!_0xa156e2[_0xeee4('0x40')]['hasOwnProperty']('nolimit')){_0x18f850[_0xeee4('0x23')]=qs[_0xeee4('0x23')](_0xa156e2[_0xeee4('0x40')][_0xeee4('0x23')]);_0x18f850[_0xeee4('0x22')]=qs[_0xeee4('0x22')](_0xa156e2[_0xeee4('0x40')]['offset']);}return _0x2f7421[_0xeee4('0xdd')](_0x18f850);}})[_0xeee4('0x15')](function(_0x29c764){if(_0x29c764){return _0x29c764?{'count':_0x1b427b,'rows':_0x29c764}:null;}})[_0xeee4('0x15')](respondWithResult(_0x45cad1,null))['catch'](handleError(_0x45cad1,null));};exports[_0xeee4('0xde')]=function(_0x5d1d15,_0x359d10){var _0xbe8605={'raw':!![],'where':{}};var _0x271c26={};var _0x27b9f4={'count':0x0,'rows':[]};return db['User'][_0xeee4('0x98')]({'where':{'id':_0x5d1d15[_0xeee4('0x5b')]['id']}})['then'](handleEntityNotFound(_0x359d10,null))[_0xeee4('0x15')](function(_0x165e8d){if(_0x165e8d){_0x271c26['model']=_[_0xeee4('0x52')](db[_0xeee4('0xdf')]['rawAttributes']);_0x271c26[_0xeee4('0x40')]=_['keys'](_0x5d1d15[_0xeee4('0x40')]);_0x271c26[_0xeee4('0x54')]=_[_0xeee4('0x55')](_0x271c26[_0xeee4('0x51')],_0x271c26['query']);_0xbe8605[_0xeee4('0x43')]=_[_0xeee4('0x55')](_0x271c26['model'],qs['fields'](_0x5d1d15[_0xeee4('0x40')][_0xeee4('0x56')]));_0xbe8605['attributes']=_0xbe8605[_0xeee4('0x43')][_0xeee4('0x57')]?_0xbe8605[_0xeee4('0x43')]:_0x271c26['model'];if(!_0x5d1d15['query']['hasOwnProperty'](_0xeee4('0xd9'))){_0xbe8605[_0xeee4('0x23')]=qs[_0xeee4('0x23')](_0x5d1d15['query'][_0xeee4('0x23')]);_0xbe8605['offset']=qs[_0xeee4('0x22')](_0x5d1d15[_0xeee4('0x40')]['offset']);}_0xbe8605[_0xeee4('0xd0')]=qs['sort'](_0x5d1d15['query'][_0xeee4('0xd1')]);_0xbe8605[_0xeee4('0x3f')]=qs[_0xeee4('0x54')](_[_0xeee4('0xd2')](_0x5d1d15[_0xeee4('0x40')],_0x271c26[_0xeee4('0x54')]));_0xbe8605[_0xeee4('0x3f')][_0xeee4('0xe0')]=_0x165e8d['id'];if(_0x5d1d15['query'][_0xeee4('0x3d')]){_0xbe8605['where']=_[_0xeee4('0x58')](_0xbe8605[_0xeee4('0x3f')],{'$or':_[_0xeee4('0x39')](_0xbe8605[_0xeee4('0x43')],function(_0x747e18){var _0x5ed2b7={};_0x5ed2b7[_0x747e18]={'$like':'%'+_0x5d1d15['query'][_0xeee4('0x3d')]+'%'};return _0x5ed2b7;})});}_0xbe8605=_[_0xeee4('0x58')]({},_0xbe8605,_0x5d1d15['options']);return db[_0xeee4('0xdf')][_0xeee4('0x24')]({'where':_0xbe8605[_0xeee4('0x3f')]})[_0xeee4('0x15')](function(_0x53dfaa){_0x27b9f4[_0xeee4('0x24')]=_0x53dfaa;if(_0x5d1d15[_0xeee4('0x40')][_0xeee4('0x41')]){_0xbe8605[_0xeee4('0x42')]=[{'all':!![]}];}return db[_0xeee4('0xdf')][_0xeee4('0x45')](_0xbe8605);})[_0xeee4('0x15')](function(_0x2e9db7){_0x27b9f4[_0xeee4('0x49')]=_0x2e9db7;return _0x27b9f4;});}})['then'](respondWithFilteredResult(_0x359d10,_0xbe8605))[_0xeee4('0x1e')](handleError(_0x359d10,null));};exports[_0xeee4('0xe1')]=function(_0x3db41b,_0x560c86){var _0x474b15={'raw':!![],'where':{}};var _0x961164={};var _0xbb943c={'count':0x0,'rows':[]};return db[_0xeee4('0x37')][_0xeee4('0x98')]({'where':{'id':_0x3db41b['params']['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x560c86,null))['then'](function(_0x18a1b7){if(_0x18a1b7){_0x961164['model']=_['keys'](db[_0xeee4('0xe2')]['rawAttributes']);_0x961164[_0xeee4('0x40')]=_[_0xeee4('0x52')](_0x3db41b[_0xeee4('0x40')]);_0x961164[_0xeee4('0x54')]=_['intersection'](_0x961164['model'],_0x961164[_0xeee4('0x40')]);_0x474b15[_0xeee4('0x43')]=_['intersection'](_0x961164[_0xeee4('0x51')],qs['fields'](_0x3db41b['query'][_0xeee4('0x56')]));_0x474b15[_0xeee4('0x43')]=_0x474b15['attributes']['length']?_0x474b15[_0xeee4('0x43')]:_0x961164[_0xeee4('0x51')];if(!_0x3db41b[_0xeee4('0x40')][_0xeee4('0xd8')]('nolimit')){_0x474b15[_0xeee4('0x23')]=qs[_0xeee4('0x23')](_0x3db41b[_0xeee4('0x40')]['limit']);_0x474b15[_0xeee4('0x22')]=qs[_0xeee4('0x22')](_0x3db41b['query']['offset']);}_0x474b15[_0xeee4('0xd0')]=qs['sort'](_0x3db41b[_0xeee4('0x40')][_0xeee4('0xd1')]);_0x474b15['where']=qs['filters'](_[_0xeee4('0xd2')](_0x3db41b['query'],_0x961164[_0xeee4('0x54')]));_0x474b15['where']['UserId']=_0x18a1b7['id'];if(_0x3db41b[_0xeee4('0x40')][_0xeee4('0x3d')]){_0x474b15[_0xeee4('0x3f')]=_[_0xeee4('0x58')](_0x474b15['where'],{'$or':_['map'](_0x474b15[_0xeee4('0x43')],function(_0x11de29){var _0x526dfe={};_0x526dfe[_0x11de29]={'$like':'%'+_0x3db41b[_0xeee4('0x40')][_0xeee4('0x3d')]+'%'};return _0x526dfe;})});}_0x474b15=_[_0xeee4('0x58')]({},_0x474b15,_0x3db41b[_0xeee4('0x59')]);return db['ScreenRecording'][_0xeee4('0x24')]({'where':_0x474b15[_0xeee4('0x3f')]})[_0xeee4('0x15')](function(_0x77411f){_0xbb943c['count']=_0x77411f;if(_0x3db41b[_0xeee4('0x40')]['includeAll']){_0x474b15[_0xeee4('0x42')]=[{'all':!![]}];}return db[_0xeee4('0xe2')][_0xeee4('0x45')](_0x474b15);})[_0xeee4('0x15')](function(_0x41a9f5){_0xbb943c[_0xeee4('0x49')]=_0x41a9f5;return _0xbb943c;});}})[_0xeee4('0x15')](respondWithFilteredResult(_0x560c86,_0x474b15))[_0xeee4('0x1e')](handleError(_0x560c86,null));};exports[_0xeee4('0xe3')]=function(_0x1c7f24,_0x1431dc){var _0x1ffe3a={};var _0x1e0183={};var _0x2f981a;var _0x1bb8cd;return db[_0xeee4('0x37')]['findOne']({'where':{'id':_0x1c7f24[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x1431dc,null))[_0xeee4('0x15')](function(_0x14a6ef){if(_0x14a6ef){_0x2f981a=_0x14a6ef;_0x1e0183[_0xeee4('0x51')]=_[_0xeee4('0x52')](db[_0xeee4('0xe4')][_0xeee4('0x38')]);_0x1e0183['query']=_[_0xeee4('0x52')](_0x1c7f24[_0xeee4('0x40')]);_0x1e0183['filters']=_[_0xeee4('0x55')](_0x1e0183[_0xeee4('0x51')],_0x1e0183['query']);_0x1ffe3a[_0xeee4('0x43')]=_[_0xeee4('0x55')](_0x1e0183[_0xeee4('0x51')],qs[_0xeee4('0x56')](_0x1c7f24[_0xeee4('0x40')][_0xeee4('0x56')]));_0x1ffe3a[_0xeee4('0x43')]=_0x1ffe3a['attributes'][_0xeee4('0x57')]?_0x1ffe3a[_0xeee4('0x43')]:_0x1e0183[_0xeee4('0x51')];_0x1ffe3a[_0xeee4('0xd0')]=qs['sort'](_0x1c7f24[_0xeee4('0x40')][_0xeee4('0xd1')]);_0x1ffe3a[_0xeee4('0x3f')]=qs[_0xeee4('0x54')](_[_0xeee4('0xd2')](_0x1c7f24[_0xeee4('0x40')],_0x1e0183[_0xeee4('0x54')]));if(_0x1c7f24[_0xeee4('0x40')][_0xeee4('0x3d')]){_0x1ffe3a['where']=_[_0xeee4('0x58')](_0x1ffe3a[_0xeee4('0x3f')],{'$or':_[_0xeee4('0x39')](_0x1ffe3a[_0xeee4('0x43')],function(_0x567df2){var _0x19013a={};_0x19013a[_0x567df2]={'$like':'%'+_0x1c7f24[_0xeee4('0x40')]['filter']+'%'};return _0x19013a;})});}_0x1ffe3a=_[_0xeee4('0x58')]({},_0x1ffe3a,_0x1c7f24[_0xeee4('0x59')]);return _0x2f981a[_0xeee4('0xe3')](_0x1ffe3a);}})[_0xeee4('0x15')](function(_0x37bf17){if(_0x37bf17){_0x1bb8cd=_0x37bf17['length'];if(!_0x1c7f24['query']['hasOwnProperty'](_0xeee4('0xd9'))){_0x1ffe3a[_0xeee4('0x23')]=qs[_0xeee4('0x23')](_0x1c7f24[_0xeee4('0x40')][_0xeee4('0x23')]);_0x1ffe3a[_0xeee4('0x22')]=qs[_0xeee4('0x22')](_0x1c7f24['query'][_0xeee4('0x22')]);}return _0x2f981a['getChatInteractions'](_0x1ffe3a);}})[_0xeee4('0x15')](function(_0x4fc174){if(_0x4fc174){return _0x4fc174?{'count':_0x1bb8cd,'rows':_0x4fc174}:null;}})[_0xeee4('0x15')](respondWithResult(_0x1431dc,null))[_0xeee4('0x1e')](handleError(_0x1431dc,null));};exports['getOpenchannelInteractions']=function(_0x147953,_0x557873){var _0x3ba517={};var _0x2ca9f3={};var _0x36d490;var _0x6f8d26;return db[_0xeee4('0x37')]['findOne']({'where':{'id':_0x147953[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x557873,null))[_0xeee4('0x15')](function(_0x29c99a){if(_0x29c99a){_0x36d490=_0x29c99a;_0x2ca9f3[_0xeee4('0x51')]=_[_0xeee4('0x52')](db['OpenchannelInteraction'][_0xeee4('0x38')]);_0x2ca9f3[_0xeee4('0x40')]=_['keys'](_0x147953[_0xeee4('0x40')]);_0x2ca9f3['filters']=_[_0xeee4('0x55')](_0x2ca9f3[_0xeee4('0x51')],_0x2ca9f3[_0xeee4('0x40')]);_0x3ba517['attributes']=_[_0xeee4('0x55')](_0x2ca9f3[_0xeee4('0x51')],qs[_0xeee4('0x56')](_0x147953[_0xeee4('0x40')][_0xeee4('0x56')]));_0x3ba517['attributes']=_0x3ba517[_0xeee4('0x43')][_0xeee4('0x57')]?_0x3ba517[_0xeee4('0x43')]:_0x2ca9f3[_0xeee4('0x51')];_0x3ba517[_0xeee4('0xd0')]=qs[_0xeee4('0xd1')](_0x147953[_0xeee4('0x40')][_0xeee4('0xd1')]);_0x3ba517[_0xeee4('0x3f')]=qs[_0xeee4('0x54')](_[_0xeee4('0xd2')](_0x147953[_0xeee4('0x40')],_0x2ca9f3[_0xeee4('0x54')]));if(_0x147953[_0xeee4('0x40')][_0xeee4('0x3d')]){_0x3ba517[_0xeee4('0x3f')]=_['merge'](_0x3ba517[_0xeee4('0x3f')],{'$or':_[_0xeee4('0x39')](_0x3ba517[_0xeee4('0x43')],function(_0x2c1846){var _0x414937={};_0x414937[_0x2c1846]={'$like':'%'+_0x147953['query'][_0xeee4('0x3d')]+'%'};return _0x414937;})});}_0x3ba517=_[_0xeee4('0x58')]({},_0x3ba517,_0x147953['options']);return _0x36d490[_0xeee4('0xe5')](_0x3ba517);}})[_0xeee4('0x15')](function(_0x2b4906){if(_0x2b4906){_0x6f8d26=_0x2b4906['length'];if(!_0x147953[_0xeee4('0x40')][_0xeee4('0xd8')](_0xeee4('0xd9'))){_0x3ba517[_0xeee4('0x23')]=qs[_0xeee4('0x23')](_0x147953['query'][_0xeee4('0x23')]);_0x3ba517[_0xeee4('0x22')]=qs['offset'](_0x147953[_0xeee4('0x40')][_0xeee4('0x22')]);}return _0x36d490[_0xeee4('0xe5')](_0x3ba517);}})[_0xeee4('0x15')](function(_0x165b64){if(_0x165b64){return _0x165b64?{'count':_0x6f8d26,'rows':_0x165b64}:null;}})[_0xeee4('0x15')](respondWithResult(_0x557873,null))[_0xeee4('0x1e')](handleError(_0x557873,null));};exports[_0xeee4('0xe6')]=function(_0x13f5a4,_0x30d405){var _0x45f921={'raw':!![],'where':{}};var _0x2318fc={};var _0xf1b27b={'count':0x0,'rows':[]};return db[_0xeee4('0x37')][_0xeee4('0x98')]({'where':{'id':_0x13f5a4['params']['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x30d405,null))[_0xeee4('0x15')](function(_0x18d117){if(_0x18d117){_0x2318fc[_0xeee4('0x51')]=_[_0xeee4('0x52')](db['MailInteraction'][_0xeee4('0x38')]);_0x2318fc[_0xeee4('0x40')]=_[_0xeee4('0x52')](_0x13f5a4[_0xeee4('0x40')]);_0x2318fc[_0xeee4('0x54')]=_[_0xeee4('0x55')](_0x2318fc[_0xeee4('0x51')],_0x2318fc[_0xeee4('0x40')]);_0x45f921[_0xeee4('0x43')]=_[_0xeee4('0x55')](_0x2318fc['model'],qs[_0xeee4('0x56')](_0x13f5a4['query']['fields']));_0x45f921['attributes']=_0x45f921[_0xeee4('0x43')][_0xeee4('0x57')]?_0x45f921['attributes']:_0x2318fc[_0xeee4('0x51')];if(!_0x13f5a4[_0xeee4('0x40')][_0xeee4('0xd8')]('nolimit')){_0x45f921['limit']=qs[_0xeee4('0x23')](_0x13f5a4['query']['limit']);_0x45f921[_0xeee4('0x22')]=qs[_0xeee4('0x22')](_0x13f5a4[_0xeee4('0x40')]['offset']);}_0x45f921[_0xeee4('0xd0')]=qs[_0xeee4('0xd1')](_0x13f5a4[_0xeee4('0x40')][_0xeee4('0xd1')]);_0x45f921[_0xeee4('0x3f')]=qs[_0xeee4('0x54')](_[_0xeee4('0xd2')](_0x13f5a4[_0xeee4('0x40')],_0x2318fc[_0xeee4('0x54')]));_0x45f921['where'][_0xeee4('0xe0')]=_0x18d117['id'];if(_0x13f5a4[_0xeee4('0x40')]['filter']){_0x45f921[_0xeee4('0x3f')]=_[_0xeee4('0x58')](_0x45f921[_0xeee4('0x3f')],{'$or':_[_0xeee4('0x39')](_0x45f921[_0xeee4('0x43')],function(_0x50e751){var _0x57972b={};_0x57972b[_0x50e751]={'$like':'%'+_0x13f5a4[_0xeee4('0x40')][_0xeee4('0x3d')]+'%'};return _0x57972b;})});}_0x45f921=_[_0xeee4('0x58')]({},_0x45f921,_0x13f5a4[_0xeee4('0x59')]);return db[_0xeee4('0xe7')]['count']({'where':_0x45f921['where']})['then'](function(_0x38ff91){_0xf1b27b[_0xeee4('0x24')]=_0x38ff91;if(_0x13f5a4[_0xeee4('0x40')][_0xeee4('0x41')]){_0x45f921['include']=[{'all':!![]}];}return db[_0xeee4('0xe7')][_0xeee4('0x45')](_0x45f921);})[_0xeee4('0x15')](function(_0x1c523f){_0xf1b27b[_0xeee4('0x49')]=_0x1c523f;return _0xf1b27b;});}})[_0xeee4('0x15')](respondWithFilteredResult(_0x30d405,_0x45f921))['catch'](handleError(_0x30d405,null));};exports['getSmsInteractions']=function(_0x3c7114,_0x297d53){var _0x13c5b7={};var _0x2a1d25={};var _0x1eb8fb;var _0x123ebf;return db[_0xeee4('0x37')][_0xeee4('0x98')]({'where':{'id':_0x3c7114[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x297d53,null))['then'](function(_0x1003c7){if(_0x1003c7){_0x1eb8fb=_0x1003c7;_0x2a1d25['model']=_[_0xeee4('0x52')](db[_0xeee4('0xe8')][_0xeee4('0x38')]);_0x2a1d25[_0xeee4('0x40')]=_[_0xeee4('0x52')](_0x3c7114[_0xeee4('0x40')]);_0x2a1d25['filters']=_[_0xeee4('0x55')](_0x2a1d25[_0xeee4('0x51')],_0x2a1d25['query']);_0x13c5b7[_0xeee4('0x43')]=_[_0xeee4('0x55')](_0x2a1d25[_0xeee4('0x51')],qs[_0xeee4('0x56')](_0x3c7114['query'][_0xeee4('0x56')]));_0x13c5b7[_0xeee4('0x43')]=_0x13c5b7['attributes'][_0xeee4('0x57')]?_0x13c5b7[_0xeee4('0x43')]:_0x2a1d25[_0xeee4('0x51')];_0x13c5b7[_0xeee4('0xd0')]=qs[_0xeee4('0xd1')](_0x3c7114['query'][_0xeee4('0xd1')]);_0x13c5b7[_0xeee4('0x3f')]=qs['filters'](_[_0xeee4('0xd2')](_0x3c7114[_0xeee4('0x40')],_0x2a1d25['filters']));if(_0x3c7114['query'][_0xeee4('0x3d')]){_0x13c5b7[_0xeee4('0x3f')]=_[_0xeee4('0x58')](_0x13c5b7[_0xeee4('0x3f')],{'$or':_['map'](_0x13c5b7['attributes'],function(_0x5b8e26){var _0x43138b={};_0x43138b[_0x5b8e26]={'$like':'%'+_0x3c7114[_0xeee4('0x40')]['filter']+'%'};return _0x43138b;})});}_0x13c5b7=_['merge']({},_0x13c5b7,_0x3c7114[_0xeee4('0x59')]);return _0x1eb8fb[_0xeee4('0xe9')](_0x13c5b7);}})['then'](function(_0x2e1c68){if(_0x2e1c68){_0x123ebf=_0x2e1c68['length'];if(!_0x3c7114[_0xeee4('0x40')][_0xeee4('0xd8')](_0xeee4('0xd9'))){_0x13c5b7[_0xeee4('0x23')]=qs[_0xeee4('0x23')](_0x3c7114[_0xeee4('0x40')][_0xeee4('0x23')]);_0x13c5b7[_0xeee4('0x22')]=qs['offset'](_0x3c7114['query'][_0xeee4('0x22')]);}return _0x1eb8fb['getSmsInteractions'](_0x13c5b7);}})[_0xeee4('0x15')](function(_0x4b8358){if(_0x4b8358){return _0x4b8358?{'count':_0x123ebf,'rows':_0x4b8358}:null;}})[_0xeee4('0x15')](respondWithResult(_0x297d53,null))[_0xeee4('0x1e')](handleError(_0x297d53,null));};exports[_0xeee4('0xea')]=function(_0x343a11,_0xe2e529){var _0x391fa9={};var _0x39dde6={};var _0x539ba9;var _0x2a8f64;return db[_0xeee4('0x37')][_0xeee4('0x98')]({'where':{'id':_0x343a11[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0xe2e529,null))[_0xeee4('0x15')](function(_0x451b56){if(_0x451b56){_0x539ba9=_0x451b56;_0x39dde6['model']=_['keys'](db[_0xeee4('0xeb')][_0xeee4('0x38')]);_0x39dde6[_0xeee4('0x40')]=_[_0xeee4('0x52')](_0x343a11['query']);_0x39dde6['filters']=_[_0xeee4('0x55')](_0x39dde6[_0xeee4('0x51')],_0x39dde6[_0xeee4('0x40')]);_0x391fa9[_0xeee4('0x43')]=_['intersection'](_0x39dde6[_0xeee4('0x51')],qs[_0xeee4('0x56')](_0x343a11[_0xeee4('0x40')][_0xeee4('0x56')]));_0x391fa9[_0xeee4('0x43')]=_0x391fa9[_0xeee4('0x43')][_0xeee4('0x57')]?_0x391fa9[_0xeee4('0x43')]:_0x39dde6['model'];_0x391fa9[_0xeee4('0xd0')]=qs['sort'](_0x343a11[_0xeee4('0x40')][_0xeee4('0xd1')]);_0x391fa9[_0xeee4('0x3f')]=qs[_0xeee4('0x54')](_[_0xeee4('0xd2')](_0x343a11[_0xeee4('0x40')],_0x39dde6[_0xeee4('0x54')]));if(_0x343a11[_0xeee4('0x40')][_0xeee4('0x3d')]){_0x391fa9[_0xeee4('0x3f')]=_['merge'](_0x391fa9['where'],{'$or':_[_0xeee4('0x39')](_0x391fa9[_0xeee4('0x43')],function(_0x47ca7d){var _0x3e11a9={};_0x3e11a9[_0x47ca7d]={'$like':'%'+_0x343a11[_0xeee4('0x40')][_0xeee4('0x3d')]+'%'};return _0x3e11a9;})});}_0x391fa9=_[_0xeee4('0x58')]({},_0x391fa9,_0x343a11[_0xeee4('0x59')]);return _0x539ba9[_0xeee4('0xea')](_0x391fa9);}})[_0xeee4('0x15')](function(_0x59c734){if(_0x59c734){_0x2a8f64=_0x59c734['length'];if(!_0x343a11[_0xeee4('0x40')][_0xeee4('0xd8')](_0xeee4('0xd9'))){_0x391fa9['limit']=qs[_0xeee4('0x23')](_0x343a11[_0xeee4('0x40')][_0xeee4('0x23')]);_0x391fa9[_0xeee4('0x22')]=qs[_0xeee4('0x22')](_0x343a11[_0xeee4('0x40')]['offset']);}return _0x539ba9[_0xeee4('0xea')](_0x391fa9);}})[_0xeee4('0x15')](function(_0x1eff1e){if(_0x1eff1e){return _0x1eff1e?{'count':_0x2a8f64,'rows':_0x1eff1e}:null;}})['then'](respondWithResult(_0xe2e529,null))[_0xeee4('0x1e')](handleError(_0xe2e529,null));};exports[_0xeee4('0xec')]=function(_0x5483df,_0x42b729){var _0x4c93c6={};var _0x4d3439={};var _0x504dc0;var _0x4d07c9;return db[_0xeee4('0x37')][_0xeee4('0x98')]({'where':{'id':_0x5483df[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x42b729,null))[_0xeee4('0x15')](function(_0x438c58){if(_0x438c58){_0x504dc0=_0x438c58;_0x4d3439[_0xeee4('0x51')]=_[_0xeee4('0x52')](db[_0xeee4('0xed')]['rawAttributes']);_0x4d3439['query']=_[_0xeee4('0x52')](_0x5483df['query']);_0x4d3439[_0xeee4('0x54')]=_['intersection'](_0x4d3439['model'],_0x4d3439['query']);_0x4c93c6[_0xeee4('0x43')]=_[_0xeee4('0x55')](_0x4d3439[_0xeee4('0x51')],qs[_0xeee4('0x56')](_0x5483df[_0xeee4('0x40')][_0xeee4('0x56')]));_0x4c93c6[_0xeee4('0x43')]=_0x4c93c6['attributes'][_0xeee4('0x57')]?_0x4c93c6[_0xeee4('0x43')]:_0x4d3439[_0xeee4('0x51')];_0x4c93c6[_0xeee4('0xd0')]=qs[_0xeee4('0xd1')](_0x5483df[_0xeee4('0x40')][_0xeee4('0xd1')]);_0x4c93c6[_0xeee4('0x3f')]=qs['filters'](_[_0xeee4('0xd2')](_0x5483df[_0xeee4('0x40')],_0x4d3439[_0xeee4('0x54')]));if(_0x5483df[_0xeee4('0x40')][_0xeee4('0x3d')]){_0x4c93c6[_0xeee4('0x3f')]=_['merge'](_0x4c93c6[_0xeee4('0x3f')],{'$or':_['map'](_0x4c93c6[_0xeee4('0x43')],function(_0x143a48){var _0x11b39a={};_0x11b39a[_0x143a48]={'$like':'%'+_0x5483df[_0xeee4('0x40')][_0xeee4('0x3d')]+'%'};return _0x11b39a;})});}_0x4c93c6=_[_0xeee4('0x58')]({},_0x4c93c6,_0x5483df['options']);return _0x504dc0[_0xeee4('0xec')](_0x4c93c6);}})[_0xeee4('0x15')](function(_0xe85c2f){if(_0xe85c2f){_0x4d07c9=_0xe85c2f[_0xeee4('0x57')];if(!_0x5483df[_0xeee4('0x40')][_0xeee4('0xd8')]('nolimit')){_0x4c93c6[_0xeee4('0x23')]=qs[_0xeee4('0x23')](_0x5483df[_0xeee4('0x40')][_0xeee4('0x23')]);_0x4c93c6[_0xeee4('0x22')]=qs[_0xeee4('0x22')](_0x5483df['query'][_0xeee4('0x22')]);}return _0x504dc0[_0xeee4('0xec')](_0x4c93c6);}})[_0xeee4('0x15')](function(_0x119d7b){if(_0x119d7b){return _0x119d7b?{'count':_0x4d07c9,'rows':_0x119d7b}:null;}})[_0xeee4('0x15')](respondWithResult(_0x42b729,null))['catch'](handleError(_0x42b729,null));};exports[_0xeee4('0xee')]=function(_0x3496f9,_0x273f2b,_0x54be4f){var _0x3fd6b3;var _0x164ab6;var _0x42b029;var _0x1ae200=!_[_0xeee4('0x66')](_0x3496f9[_0xeee4('0x5b')]['id'])?_0x3496f9['params']['id']:!_['isNil'](_0x3496f9[_0xeee4('0x29')]['id'])?_0x3496f9[_0xeee4('0x29')]['id']:null;return db[_0xeee4('0x37')][_0xeee4('0x30')]({'where':{'id':_0x1ae200,'role':{'$or':[_0xeee4('0x27'),_0xeee4('0x29'),_0xeee4('0x2b')]}},'attributes':['id','name',_0xeee4('0xef'),_0xeee4('0xf0'),_0xeee4('0x26'),_0xeee4('0x60'),_0xeee4('0xf1')]})['then'](function(_0x34199b){if(_0x34199b){if(_0x34199b[_0xeee4('0x26')]===_0xeee4('0x2b')){_0x3fd6b3=_0x34199b;if(_0x3496f9[_0xeee4('0x5a')][_0xeee4('0xa1')]){_0x42b029=util['format'](_0xeee4('0xf2'),_0x3fd6b3[_0x3496f9[_0xeee4('0x5a')]['interface']]);}else if(_0x3496f9[_0xeee4('0x5a')]['intrf']){_0x42b029=util[_0xeee4('0xaf')](_0xeee4('0xb0'),_0x3496f9[_0xeee4('0x5a')]['intrf']);}else{_0x42b029=util[_0xeee4('0xaf')](_0xeee4('0xb0'),_0x3fd6b3['name']);}socket['to'](util[_0xeee4('0xaf')]('user:%s',_0x3fd6b3['name']))['emit'](_0xeee4('0xf3'),{'user':{'id':_0x3fd6b3['id'],'name':_0x3fd6b3[_0xeee4('0x31')]},'ip':_0x3496f9[_0xeee4('0xf4')][_0xeee4('0xf5')]||_0x3496f9[_0xeee4('0xf6')][_0xeee4('0xf7')]||_0x3496f9['socket'][_0xeee4('0xf7')]||_0x3496f9[_0xeee4('0xf6')][_0xeee4('0xf8')][_0xeee4('0xf7')]});return db[_0xeee4('0xb7')]['destroy']({'where':{'membername':_0x3fd6b3[_0xeee4('0x31')]},'individualHooks':!![]});}}else{throw new db[(_0xeee4('0x95'))]['ValidationError'](_0xeee4('0xf9'));}})[_0xeee4('0x15')](function(){if(_0x3fd6b3){return _0x3fd6b3['getVoiceQueues']({'raw':!![]});}})[_0xeee4('0x15')](function(_0x5b6821){if(_0x3fd6b3){var _0x14fe5f=[];if(_0x5b6821){_0x164ab6=_0x5b6821;if(_0x164ab6[_0xeee4('0x57')]){for(var _0x54000f=0x0;_0x54000f<_0x164ab6['length'];_0x54000f++){_0x14fe5f[_0xeee4('0x44')]({'membername':_0x3fd6b3[_0xeee4('0x31')],'UserId':_0x3fd6b3['id'],'queue_name':_0x164ab6[_0x54000f]['name'],'VoiceQueueId':_0x164ab6[_0x54000f]['id'],'interface':_0x42b029,'paused':_0x3fd6b3[_0xeee4('0xf1')]||![],'penalty':_0x164ab6[_0x54000f][_0xeee4('0xfa')]||0x0});}return BPromise[_0xeee4('0x8b')](_0x14fe5f,function(_0x52eab7){return db[_0xeee4('0xb7')][_0xeee4('0xb2')](_0x52eab7);});}}}})['then'](function(){if(_0x3fd6b3){return db[_0xeee4('0xfb')][_0xeee4('0x45')]({'where':{'membername':_0x3fd6b3['name'],'exitAt':null}});}})[_0xeee4('0x15')](function(_0x405c6e){if(_0x3fd6b3){var _0x1f1c7e=[];_0x405c6e['forEach'](function(_0x163894){_0x1f1c7e[_0xeee4('0x44')](_0x163894['update']({'exitAt':moment()[_0xeee4('0xaf')](_0xeee4('0xfc'))}));});return BPromise[_0xeee4('0x50')](_0x1f1c7e);}})[_0xeee4('0x15')](function(){if(_0x3fd6b3){var _0x4f59d2=[];var _0x41bf84=[];var _0x855fa7=utils[_0xeee4('0xfd')]();var _0x17d9eb={'membername':_0x3fd6b3[_0xeee4('0x31')],'interface':_0x42b029,'enterAt':moment()['format'](_0xeee4('0xfc')),'role':_0x3fd6b3[_0xeee4('0x26')],'internal':_0x3fd6b3[_0xeee4('0x60')]};_0x855fa7['forEach'](function(_0x428eec){_0x4f59d2['push'](_['merge']({'channel':_0x428eec,'type':_0xeee4('0xfe'),'data1':_0x3496f9[_0xeee4('0x5a')][_0xeee4('0xff')],'data2':_0x42b029},_0x17d9eb));if(_0x3fd6b3['loginInPause']){_0x41bf84[_0xeee4('0x44')](_[_0xeee4('0x58')]({'channel':_0x428eec,'type':_0xeee4('0x100'),'data1':'LOGININPAUSE'},_0x17d9eb));}});return db[_0xeee4('0xfb')][_0xeee4('0x88')](_0x4f59d2[_0xeee4('0x101')](_0x41bf84),{'individualHooks':!![]});}})[_0xeee4('0x15')](function(){if(_0x3fd6b3){return _0x3fd6b3[_0xeee4('0x102')]({'online':!![],'lastLoginAt':moment()[_0xeee4('0xaf')](_0xeee4('0xfc')),'voicePause':_0x3fd6b3['loginInPause']||![],'mailPause':_0x3fd6b3[_0xeee4('0xf1')]||![],'chatPause':_0x3fd6b3[_0xeee4('0xf1')]||![],'faxPause':_0x3fd6b3['loginInPause']||![],'smsPause':_0x3fd6b3['loginInPause']||![],'openchannelPause':_0x3fd6b3[_0xeee4('0xf1')]||![],'whatsappPause':_0x3fd6b3[_0xeee4('0xf1')]||![],'pauseType':_0x3fd6b3[_0xeee4('0xf1')]?_0xeee4('0x103'):null,'interface':_0x42b029,'lastPauseAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')});}})['then'](function(_0x5c2e00){if(_0x3496f9[_0xeee4('0x104')]){return _0x54be4f();}else{return BPromise['resolve'](_0x5c2e00)[_0xeee4('0x15')](respondWithResult(_0x273f2b,null));}})[_0xeee4('0x1e')](handleError(_0x273f2b,null));};exports['logout']=function(_0x4cac6d,_0x4c867b){var _0x15947d;return db[_0xeee4('0x37')]['find']({'where':{'id':_0x4cac6d['params']['id'],'role':_0xeee4('0x2b')},'attributes':['id',_0xeee4('0x31'),_0xeee4('0x26')]})[_0xeee4('0x15')](handleEntityNotFound(_0x4c867b,null))[_0xeee4('0x15')](function(_0x48c104){if(_0x48c104){_0x15947d=_0x48c104;return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x15947d[_0xeee4('0x31')]},'individualHooks':!![]});}})['then'](function(){return db[_0xeee4('0xfb')][_0xeee4('0x45')]({'where':{'membername':_0x15947d[_0xeee4('0x31')],'exitAt':null}});})[_0xeee4('0x15')](function(_0xadd318){var _0x3d59e0=[];_0xadd318['forEach'](function(_0x442d8c){_0x3d59e0[_0xeee4('0x44')](_0x442d8c[_0xeee4('0x102')]({'exitAt':moment()['format'](_0xeee4('0xfc'))}));});return BPromise['all'](_0x3d59e0);})[_0xeee4('0x15')](function(){return _0x15947d['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xeee4('0x15')](respondWithResult(_0x4c867b,null))[_0xeee4('0x1e')](handleError(_0x4c867b,null));};exports[_0xeee4('0x105')]=function(_0x5e16ea,_0x1953ce){var _0x3dcaec;return db['UserVoiceQueueRt'][_0xeee4('0x102')]({'paused':0x1},{'where':{'UserId':_0x5e16ea[_0xeee4('0x5b')]['id']},'individualHooks':!![]})[_0xeee4('0x15')](function(){return db[_0xeee4('0x37')][_0xeee4('0x30')]({'where':{'id':_0x5e16ea[_0xeee4('0x5b')]['id'],'role':'agent'},'attributes':['id',_0xeee4('0x31'),_0xeee4('0x26'),_0xeee4('0x60'),_0xeee4('0xa1')]});})[_0xeee4('0x15')](handleEntityNotFound(_0x1953ce,null))['then'](function(_0xf47811){if(_0xf47811){_0x3dcaec=_0xf47811;return respondWithRpcPromise('QueuePause',_0xeee4('0x105'),{'id':_0x3dcaec['id'],'name':_0x3dcaec['name'],'pause':!![]});}})[_0xeee4('0x15')](function(){if(_0x3dcaec){return db[_0xeee4('0xfb')][_0xeee4('0x45')]({'where':{'membername':_0x3dcaec[_0xeee4('0x31')],'type':_0xeee4('0x100'),'exitAt':null}});}})[_0xeee4('0x15')](function(_0x54964e){if(_0x54964e[_0xeee4('0x57')]){var _0x3fa20b=moment()[_0xeee4('0xaf')](_0xeee4('0xfc'));for(var _0x3cba20=0x0,_0x4462cd=_0x54964e[_0xeee4('0x57')];_0x3cba20<_0x4462cd;_0x3cba20++){_0x54964e[_0x3cba20][_0xeee4('0x106')]({'exitAt':_0x3fa20b});}}})['then'](function(){var _0x18e3b0=[];var _0x4fcdd9=utils[_0xeee4('0xfd')]();_0x4fcdd9[_0xeee4('0x107')](function(_0x103cb5){_0x18e3b0[_0xeee4('0x44')]({'channel':_0x103cb5,'membername':_0x3dcaec[_0xeee4('0x31')],'interface':_[_0xeee4('0x66')](_0x3dcaec[_0xeee4('0xa1')])?util[_0xeee4('0xaf')](_0xeee4('0xb0'),_0x3dcaec[_0xeee4('0x31')]):_0x3dcaec[_0xeee4('0xa1')],'type':_0xeee4('0x100'),'enterAt':moment()[_0xeee4('0xaf')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x5e16ea[_0xeee4('0x5a')]['type']||_0xeee4('0x108'),'role':_0x3dcaec[_0xeee4('0x26')],'internal':_0x3dcaec['internal']});});return db[_0xeee4('0xfb')][_0xeee4('0x88')](_0x18e3b0,{'individualHooks':!![]});})['then'](function(){return _0x3dcaec[_0xeee4('0x102')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x5e16ea[_0xeee4('0x5a')][_0xeee4('0x3b')]||_0xeee4('0x108'),'lastPauseAt':moment()[_0xeee4('0xaf')]('YYYY-MM-DD\x20HH:mm:ss')});})[_0xeee4('0x15')](respondWithResult(_0x1953ce,null))['catch'](handleError(_0x1953ce,null));};exports[_0xeee4('0x109')]=function(_0x2f837e,_0x4879a9){var _0x43c0aa;return db['User'][_0xeee4('0x30')]({'where':{'id':_0x2f837e[_0xeee4('0x5b')]['id']},'attributes':['id',_0xeee4('0x31'),_0xeee4('0x26'),_0xeee4('0xb1'),_0xeee4('0x10a'),_0xeee4('0x10b'),'faxPause',_0xeee4('0x10c'),_0xeee4('0x10d'),_0xeee4('0x10e'),_0xeee4('0x10f'),_0xeee4('0x110')]})[_0xeee4('0x15')](handleEntityNotFound(_0x4879a9,null))['then'](function(_0x4394c4){if(_0x4394c4){_0x43c0aa=_0x4394c4;if(_0x2f837e['body'][_0xeee4('0x9f')]&&!utils['isValidChannel'](_0x2f837e[_0xeee4('0x5a')][_0xeee4('0x9f')])){throw new db[(_0xeee4('0x95'))][(_0xeee4('0x92'))]('Unknown\x20channel');}switch(_0x2f837e['body'][_0xeee4('0x9f')]){case _0xeee4('0xae'):return respondWithRpcPromise('QueuePause',_0xeee4('0x109'),{'id':_0x43c0aa['id'],'name':_0x43c0aa['name'],'pause':![]})[_0xeee4('0x15')](function(){return db[_0xeee4('0xb7')][_0xeee4('0x102')]({'paused':0x0},{'where':{'UserId':_0x43c0aa['id']},'individualHooks':!![]});})[_0xeee4('0x15')](function(){return db['MemberReport']['find']({'where':{'channel':_0x2f837e[_0xeee4('0x5a')][_0xeee4('0x9f')],'membername':_0x43c0aa[_0xeee4('0x31')],'type':_0xeee4('0x100'),'exitAt':null}});})[_0xeee4('0x15')](function(_0x35ff15){if(_0x35ff15){return _0x35ff15[_0xeee4('0x102')]({'exitAt':moment()[_0xeee4('0xaf')](_0xeee4('0xfc')),'data2':_0xeee4('0x111')},{'individualHooks':!![]});}return null;})[_0xeee4('0x15')](function(){return _0x43c0aa[_0xeee4('0x102')]({'voicePause':![]});});case _0xeee4('0x4d'):case _0xeee4('0x48'):case _0xeee4('0x4c'):case _0xeee4('0x4a'):case _0xeee4('0x4f'):case _0xeee4('0x4e'):return db[_0xeee4('0xfb')][_0xeee4('0x30')]({'where':{'channel':_0x2f837e[_0xeee4('0x5a')][_0xeee4('0x9f')],'membername':_0x43c0aa[_0xeee4('0x31')],'type':_0xeee4('0x100'),'exitAt':null}})['then'](function(_0x1e7144){if(_0x1e7144){return _0x1e7144[_0xeee4('0x102')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xeee4('0x111')},{'individualHooks':!![]});}return null;})['then'](function(){var _0x995af4={};_[_0xeee4('0x112')](_0x995af4,util[_0xeee4('0xaf')](_0xeee4('0x113'),_0x2f837e[_0xeee4('0x5a')][_0xeee4('0x9f')],_0xeee4('0x114')),![]);return _0x43c0aa['update'](_0x995af4);});default:return respondWithRpcPromise(_0xeee4('0x115'),_0xeee4('0x109'),{'id':_0x43c0aa['id'],'name':_0x43c0aa[_0xeee4('0x31')],'pause':![]})[_0xeee4('0x15')](function(){return db['UserVoiceQueueRt'][_0xeee4('0x102')]({'paused':0x0},{'where':{'UserId':_0x43c0aa['id']}});})[_0xeee4('0x15')](function(){return db[_0xeee4('0xfb')][_0xeee4('0x45')]({'where':{'membername':_0x43c0aa[_0xeee4('0x31')],'type':'PAUSE','exitAt':null}});})[_0xeee4('0x15')](function(_0xd7af40){var _0x4fcba=[];_0xd7af40[_0xeee4('0x107')](function(_0x4af34a){_0x4fcba['push'](_0x4af34a['update']({'exitAt':moment()[_0xeee4('0xaf')](_0xeee4('0xfc')),'data2':_0xeee4('0x111')}));});return BPromise[_0xeee4('0x50')](_0x4fcba);})[_0xeee4('0x15')](function(){return _0x43c0aa[_0xeee4('0x102')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0xeee4('0x15')](respondWithResult(_0x4879a9,null))[_0xeee4('0x1e')](handleError(_0x4879a9,null));};exports[_0xeee4('0x116')]=function(_0x4cb60a,_0xf7424d){var _0x49824b={};var _0x45fca1={};var _0x1a9dc5;var _0x3a2db4;return db[_0xeee4('0x37')]['findOne']({'where':{'id':_0x4cb60a[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0xf7424d,null))['then'](function(_0xe5226a){if(_0xe5226a){_0x1a9dc5=_0xe5226a;_0x45fca1['model']=_[_0xeee4('0x52')](db[_0xeee4('0x117')]['rawAttributes']);_0x45fca1[_0xeee4('0x40')]=_[_0xeee4('0x52')](_0x4cb60a[_0xeee4('0x40')]);_0x45fca1[_0xeee4('0x54')]=_[_0xeee4('0x55')](_0x45fca1[_0xeee4('0x51')],_0x45fca1['query']);_0x49824b['attributes']=_['intersection'](_0x45fca1[_0xeee4('0x51')],qs[_0xeee4('0x56')](_0x4cb60a[_0xeee4('0x40')][_0xeee4('0x56')]));_0x49824b[_0xeee4('0x43')]=_0x49824b[_0xeee4('0x43')][_0xeee4('0x57')]?_0x49824b[_0xeee4('0x43')]:_0x45fca1['model'];_0x49824b[_0xeee4('0xd0')]=qs[_0xeee4('0xd1')](_0x4cb60a['query'][_0xeee4('0xd1')]);_0x49824b['where']=qs['filters'](_[_0xeee4('0xd2')](_0x4cb60a[_0xeee4('0x40')],_0x45fca1[_0xeee4('0x54')]));if(_0x4cb60a[_0xeee4('0x40')][_0xeee4('0x3d')]){_0x49824b[_0xeee4('0x3f')]=_['merge'](_0x49824b[_0xeee4('0x3f')],{'$or':_['map'](_0x49824b[_0xeee4('0x43')],function(_0x40492e){var _0x4a7edb={};_0x4a7edb[_0x40492e]={'$like':'%'+_0x4cb60a[_0xeee4('0x40')][_0xeee4('0x3d')]+'%'};return _0x4a7edb;})});}_0x49824b=_[_0xeee4('0x58')]({},_0x49824b,_0x4cb60a[_0xeee4('0x59')]);return _0x1a9dc5[_0xeee4('0x116')](_0x49824b);}})[_0xeee4('0x15')](function(_0x244e08){if(_0x244e08){_0x3a2db4=_0x244e08[_0xeee4('0x57')];if(!_0x4cb60a[_0xeee4('0x40')][_0xeee4('0xd8')]('nolimit')){_0x49824b[_0xeee4('0x23')]=qs[_0xeee4('0x23')](_0x4cb60a[_0xeee4('0x40')]['limit']);_0x49824b[_0xeee4('0x22')]=qs['offset'](_0x4cb60a[_0xeee4('0x40')][_0xeee4('0x22')]);}return _0x1a9dc5[_0xeee4('0x116')](_0x49824b);}})[_0xeee4('0x15')](function(_0x2b081d){if(_0x2b081d){return _0x2b081d?{'count':_0x3a2db4,'rows':_0x2b081d}:null;}})[_0xeee4('0x15')](respondWithResult(_0xf7424d,null))[_0xeee4('0x1e')](handleError(_0xf7424d,null));};exports[_0xeee4('0x118')]=function(_0x37387c,_0x101264){return db['User'][_0xeee4('0x30')]({'where':{'id':_0x37387c['params']['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x101264,null))[_0xeee4('0x15')](function(_0xad5699){if(_0xad5699){var _0x13e8e9=_0xad5699[_0xeee4('0xad')]({'plain':!![]});return _0xad5699[_0xeee4('0x118')](_0x37387c[_0xeee4('0x5a')][_0xeee4('0x5e')],_['omit'](_0x37387c['body'],[_0xeee4('0x5e'),'id'])||{})[_0xeee4('0x15')](function(){for(var _0x26b380=0x0;_0x26b380<_0x37387c['body']['ids'][_0xeee4('0x57')];_0x26b380++){var _0x5db895=[];db[_0xeee4('0x117')][_0xeee4('0x98')]({'where':{'id':_0x37387c[_0xeee4('0x5a')][_0xeee4('0x5e')][_0x26b380]}})[_0xeee4('0x15')](function(_0x3d0173){_0x5db895[_0xeee4('0x44')](_0x3d0173[_0xeee4('0x119')]()[_0xeee4('0x15')](function(_0x3708b0){for(var _0x58a6d9=0x0;_0x58a6d9<_0x3708b0[_0xeee4('0x57')];_0x58a6d9++){_0x3708b0[_0x58a6d9]['setDataValue'](_0xeee4('0x9f'),_0xeee4('0x11a'));}return _0x3708b0;}));_0x5db895['push'](_0x3d0173[_0xeee4('0x11b')]()['then'](function(_0x1b6d7f){for(var _0x55700a=0x0;_0x55700a<_0x1b6d7f[_0xeee4('0x57')];_0x55700a++){_0x1b6d7f[_0x55700a][_0xeee4('0x11c')](_0xeee4('0x9f'),'Chat');}return _0x1b6d7f;}));_0x5db895[_0xeee4('0x44')](_0x3d0173['getMailQueues']()['then'](function(_0x57fa72){for(var _0x59c04e=0x0;_0x59c04e<_0x57fa72[_0xeee4('0x57')];_0x59c04e++){_0x57fa72[_0x59c04e][_0xeee4('0x11c')]('channel','Mail');}return _0x57fa72;}));_0x5db895['push'](_0x3d0173['getSmsQueues']()['then'](function(_0x599bdb){for(var _0x5b1783=0x0;_0x5b1783<_0x599bdb[_0xeee4('0x57')];_0x5b1783++){_0x599bdb[_0x5b1783][_0xeee4('0x11c')](_0xeee4('0x9f'),_0xeee4('0x11d'));}return _0x599bdb;}));_0x5db895['push'](_0x3d0173[_0xeee4('0x11e')]()[_0xeee4('0x15')](function(_0x1ab63c){for(var _0x2fbb0e=0x0;_0x2fbb0e<_0x1ab63c['length'];_0x2fbb0e++){_0x1ab63c[_0x2fbb0e][_0xeee4('0x11c')]('channel','Whatsapp');}return _0x1ab63c;}));_0x5db895['push'](_0x3d0173['getFaxQueues']()[_0xeee4('0x15')](function(_0x1c98c0){for(var _0x3d6df5=0x0;_0x3d6df5<_0x1c98c0[_0xeee4('0x57')];_0x3d6df5++){_0x1c98c0[_0x3d6df5][_0xeee4('0x11c')](_0xeee4('0x9f'),_0xeee4('0x11f'));}return _0x1c98c0;}));_0x5db895['push'](_0x3d0173['getOpenchannelQueues']()[_0xeee4('0x15')](function(_0x2cd1cd){for(var _0x1a4772=0x0;_0x1a4772<_0x2cd1cd[_0xeee4('0x57')];_0x1a4772++){_0x2cd1cd[_0x1a4772][_0xeee4('0x11c')]('channel',_0xeee4('0x120'));}return _0x2cd1cd;}));return BPromise['all'](_0x5db895);})[_0xeee4('0x15')](function(_0x3b3de9){var _0x1a54ac=_[_0xeee4('0x121')](_0x3b3de9);_0x5db895=[];return db['sequelize'][_0xeee4('0x122')](function(_0x5443ff){for(var _0xf31ecd=0x0;_0xf31ecd<_0x1a54ac[_0xeee4('0x57')];_0xf31ecd++){_0x5db895[_0xeee4('0x44')](_0x1a54ac[_0xf31ecd]['addAgent'](_0x13e8e9['id']),{'transaction':_0x5443ff});}return BPromise[_0xeee4('0x50')](_0x5db895)['then'](function(){if(_0x13e8e9[_0xeee4('0xa0')]){return BPromise[_0xeee4('0x8b')](_[_0xeee4('0x3d')](_0x1a54ac,function(_0x154a24){return _0x154a24[_0xeee4('0x123')](_0xeee4('0x9f'))===_0xeee4('0x11a');}),function(_0x3619bd){return db[_0xeee4('0xb7')][_0xeee4('0xb2')]({'membername':_0x13e8e9[_0xeee4('0x31')],'UserId':_0x13e8e9['id'],'queue_name':_0x3619bd['name'],'VoiceQueueId':_0x3619bd['id'],'interface':_[_0xeee4('0x66')](_0x13e8e9[_0xeee4('0xa1')])?util[_0xeee4('0xaf')](_0xeee4('0xb0'),_0x13e8e9['name']):_0x13e8e9[_0xeee4('0xa1')],'paused':_0x13e8e9[_0xeee4('0xb1')]||![],'penalty':_0x13e8e9[_0xeee4('0xa7')]},{'transaction':_0x5443ff});});}else{return;}})[_0xeee4('0x15')](function(){for(var _0x239163=0x0;_0x239163<_0x1a54ac[_0xeee4('0x57')];_0x239163++){var _0x1a8b2d=_0x1a54ac[_0x239163][_0xeee4('0x123')](_0xeee4('0x9f'));var _0x3ef54a=_0x1a8b2d+_0xeee4('0xa9');socket[_0xeee4('0xaa')](_0xeee4('0x29')+_0x1a8b2d+_0xeee4('0xab'),{'UserId':_0x13e8e9['id'],['queueField']:_0x1a54ac[_0x239163]['id']});}});});});}});}})['then'](respondWithStatusCode(_0x101264,null))[_0xeee4('0x1e')](handleError(_0x101264,null));};exports[_0xeee4('0x124')]=function(_0x204652,_0x1a6bb6){return db[_0xeee4('0x37')][_0xeee4('0x98')]({'where':{'id':_0x204652[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x1a6bb6,null))[_0xeee4('0x15')](function(_0x1e5061){if(_0x1e5061){var _0x53c282=_0x1e5061['get']({'plain':!![]});var _0x28b41b=_0x204652[_0xeee4('0x40')]['ids'];return _0x1e5061[_0xeee4('0x124')](_0x28b41b)[_0xeee4('0x15')](function(){for(var _0xc55152=0x0;_0xc55152<_0x28b41b[_0xeee4('0x57')];_0xc55152++){var _0x3e3963=[];db['Team']['findOne']({'where':{'id':_0x28b41b[_0xc55152]}})[_0xeee4('0x15')](function(_0x3eb27b){_0x3e3963[_0xeee4('0x44')](_0x3eb27b[_0xeee4('0x119')]()[_0xeee4('0x15')](function(_0x596367){for(var _0x486887=0x0;_0x486887<_0x596367[_0xeee4('0x57')];_0x486887++){_0x596367[_0x486887][_0xeee4('0x11c')](_0xeee4('0x9f'),_0xeee4('0x11a'));}return _0x596367;}));_0x3e3963[_0xeee4('0x44')](_0x3eb27b[_0xeee4('0x11b')]()[_0xeee4('0x15')](function(_0x1ff8c6){for(var _0x330fdb=0x0;_0x330fdb<_0x1ff8c6[_0xeee4('0x57')];_0x330fdb++){_0x1ff8c6[_0x330fdb][_0xeee4('0x11c')]('channel',_0xeee4('0x125'));}return _0x1ff8c6;}));_0x3e3963[_0xeee4('0x44')](_0x3eb27b[_0xeee4('0x126')]()['then'](function(_0x606bbe){for(var _0x25cf82=0x0;_0x25cf82<_0x606bbe['length'];_0x25cf82++){_0x606bbe[_0x25cf82][_0xeee4('0x11c')]('channel',_0xeee4('0x127'));}return _0x606bbe;}));_0x3e3963[_0xeee4('0x44')](_0x3eb27b['getSmsQueues']()['then'](function(_0x3cce85){for(var _0x54c339=0x0;_0x54c339<_0x3cce85[_0xeee4('0x57')];_0x54c339++){_0x3cce85[_0x54c339][_0xeee4('0x11c')]('channel',_0xeee4('0x11d'));}return _0x3cce85;}));_0x3e3963[_0xeee4('0x44')](_0x3eb27b['getWhatsappQueues']()['then'](function(_0x4b6062){for(var _0x282a22=0x0;_0x282a22<_0x4b6062[_0xeee4('0x57')];_0x282a22++){_0x4b6062[_0x282a22][_0xeee4('0x11c')](_0xeee4('0x9f'),_0xeee4('0x128'));}return _0x4b6062;}));_0x3e3963[_0xeee4('0x44')](_0x3eb27b[_0xeee4('0x129')]()['then'](function(_0x178f36){for(var _0x36e3cf=0x0;_0x36e3cf<_0x178f36[_0xeee4('0x57')];_0x36e3cf++){_0x178f36[_0x36e3cf][_0xeee4('0x11c')](_0xeee4('0x9f'),_0xeee4('0x11f'));}return _0x178f36;}));_0x3e3963[_0xeee4('0x44')](_0x3eb27b['getOpenchannelQueues']()[_0xeee4('0x15')](function(_0x32dadc){for(var _0x5c765a=0x0;_0x5c765a<_0x32dadc['length'];_0x5c765a++){_0x32dadc[_0x5c765a]['setDataValue'](_0xeee4('0x9f'),_0xeee4('0x120'));}return _0x32dadc;}));return BPromise['all'](_0x3e3963);})[_0xeee4('0x15')](function(_0x2cff00){var _0x23aedc=_[_0xeee4('0x121')](_0x2cff00);_0x3e3963=[];return db[_0xeee4('0x69')]['transaction'](function(_0x3681e7){for(var _0x122170=0x0;_0x122170<_0x23aedc['length'];_0x122170++){_0x3e3963['push'](_0x23aedc[_0x122170][_0xeee4('0x12a')](_0x53c282['id']),{'transaction':_0x3681e7});}return BPromise['all'](_0x3e3963)[_0xeee4('0x15')](function(){if(_0x53c282[_0xeee4('0xa0')]){return BPromise['each'](_['filter'](_0x23aedc,function(_0x3b2759){return _0x3b2759[_0xeee4('0x123')]('channel')===_0xeee4('0x11a');}),function(_0x17beb0){return db[_0xeee4('0xb7')]['destroy']({'where':{'VoiceQueueId':_0x17beb0['id'],'UserId':_0x53c282['id']},'transaction':_0x3681e7});});}else{return;}})[_0xeee4('0x15')](function(){for(var _0x3df1c2=0x0;_0x3df1c2<_0x23aedc[_0xeee4('0x57')];_0x3df1c2++){var _0x54f99e=_0x23aedc[_0x3df1c2]['getDataValue'](_0xeee4('0x9f'));var _0x112665=_0x54f99e+'QueueId';socket[_0xeee4('0xaa')](_0xeee4('0x29')+_0x54f99e+_0xeee4('0xb6'),{'UserId':_0x53c282['id'],['queueField']:_0x23aedc[_0x3df1c2]['id']});}});});});}});}})['then'](respondWithStatusCode(_0x1a6bb6,null))[_0xeee4('0x1e')](handleError(_0x1a6bb6,null));};exports[_0xeee4('0x12b')]=function(_0x2ad8b6,_0x1b6a90){var _0x5881d0={};var _0x2a59db={};var _0x5df856;var _0x38790f;return db['User'][_0xeee4('0x98')]({'where':{'id':_0x2ad8b6[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x1b6a90,null))[_0xeee4('0x15')](function(_0xf964a8){if(_0xf964a8){_0x5df856=_0xf964a8;_0x2a59db[_0xeee4('0x51')]=_[_0xeee4('0x52')](db[_0xeee4('0xd3')][_0xeee4('0x38')]);_0x2a59db['query']=_[_0xeee4('0x52')](_0x2ad8b6[_0xeee4('0x40')]);_0x2a59db[_0xeee4('0x54')]=_[_0xeee4('0x55')](_0x2a59db[_0xeee4('0x51')],_0x2a59db[_0xeee4('0x40')]);_0x5881d0[_0xeee4('0x43')]=_[_0xeee4('0x55')](_0x2a59db['model'],qs['fields'](_0x2ad8b6[_0xeee4('0x40')][_0xeee4('0x56')]));_0x5881d0[_0xeee4('0x43')]=_0x5881d0[_0xeee4('0x43')]['length']?_0x5881d0[_0xeee4('0x43')]:_0x2a59db[_0xeee4('0x51')];_0x5881d0['order']=qs[_0xeee4('0xd1')](_0x2ad8b6['query'][_0xeee4('0xd1')]);_0x5881d0[_0xeee4('0x3f')]=qs[_0xeee4('0x54')](_[_0xeee4('0xd2')](_0x2ad8b6[_0xeee4('0x40')],_0x2a59db['filters']));if(_0x2ad8b6['query'][_0xeee4('0x3d')]){_0x5881d0['where']=_[_0xeee4('0x58')](_0x5881d0['where'],{'$or':_[_0xeee4('0x39')](_0x5881d0[_0xeee4('0x43')],function(_0x12be8b){var _0x3a9bf1={};_0x3a9bf1[_0x12be8b]={'$like':'%'+_0x2ad8b6[_0xeee4('0x40')][_0xeee4('0x3d')]+'%'};return _0x3a9bf1;})});}_0x5881d0=_[_0xeee4('0x58')]({},_0x5881d0,_0x2ad8b6['options']);return _0x5df856[_0xeee4('0x12b')](_0x5881d0);}})[_0xeee4('0x15')](function(_0x1ff980){if(_0x1ff980){_0x38790f=_0x1ff980[_0xeee4('0x57')];if(!_0x2ad8b6[_0xeee4('0x40')][_0xeee4('0xd8')]('nolimit')){_0x5881d0['limit']=qs[_0xeee4('0x23')](_0x2ad8b6[_0xeee4('0x40')][_0xeee4('0x23')]);_0x5881d0[_0xeee4('0x22')]=qs[_0xeee4('0x22')](_0x2ad8b6[_0xeee4('0x40')]['offset']);}return _0x5df856[_0xeee4('0x12b')](_0x5881d0);}})[_0xeee4('0x15')](function(_0x503eef){if(_0x503eef){return _0x503eef?{'count':_0x38790f,'rows':_0x503eef}:null;}})[_0xeee4('0x15')](respondWithResult(_0x1b6a90,null))[_0xeee4('0x1e')](handleError(_0x1b6a90,null));};exports[_0xeee4('0x12c')]=function(_0x228950,_0x256e1b){var _0x2d484a={};var _0x198a9a={};var _0x38e15d;var _0x5d9585;return db[_0xeee4('0x37')][_0xeee4('0x98')]({'where':{'id':_0x228950['params']['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x256e1b,null))[_0xeee4('0x15')](function(_0x9150f5){if(_0x9150f5){_0x38e15d=_0x9150f5;_0x198a9a[_0xeee4('0x51')]=_['keys'](db[_0xeee4('0x37')][_0xeee4('0x38')]);_0x198a9a[_0xeee4('0x40')]=_[_0xeee4('0x52')](_0x228950[_0xeee4('0x40')]);_0x198a9a[_0xeee4('0x54')]=_[_0xeee4('0x55')](_0x198a9a[_0xeee4('0x51')],_0x198a9a[_0xeee4('0x40')]);_0x2d484a[_0xeee4('0x43')]=_[_0xeee4('0x55')](_0x198a9a[_0xeee4('0x51')],qs[_0xeee4('0x56')](_0x228950[_0xeee4('0x40')][_0xeee4('0x56')]));_0x2d484a[_0xeee4('0x43')]=_0x2d484a[_0xeee4('0x43')]['length']?_0x2d484a[_0xeee4('0x43')]:_0x198a9a[_0xeee4('0x51')];_0x2d484a['order']=qs[_0xeee4('0xd1')](_0x228950['query']['sort']);_0x2d484a['where']=qs[_0xeee4('0x54')](_[_0xeee4('0xd2')](_0x228950[_0xeee4('0x40')],_0x198a9a[_0xeee4('0x54')]));if(_0x228950[_0xeee4('0x40')][_0xeee4('0x3d')]){_0x2d484a[_0xeee4('0x3f')]=_[_0xeee4('0x58')](_0x2d484a['where'],{'$or':_[_0xeee4('0x39')](_0x2d484a[_0xeee4('0x43')],function(_0x3ce0c8){var _0x2b3f69={};_0x2b3f69[_0x3ce0c8]={'$like':'%'+_0x228950[_0xeee4('0x40')][_0xeee4('0x3d')]+'%'};return _0x2b3f69;})});}_0x2d484a[_0xeee4('0x51')]=db[_0xeee4('0x37')];_0x2d484a['as']=_0xeee4('0x2a');_0x2d484a=_[_0xeee4('0x58')]({},_0x2d484a,_0x228950[_0xeee4('0x59')]);return _0x38e15d[_0xeee4('0x119')]({'include':[_0x2d484a]});}})[_0xeee4('0x15')](function(_0x3fa515){if(_0x3fa515){var _0x4c35d0={},_0x178d90=[],_0x537705=0x0;for(var _0x1167ca=0x0;_0x1167ca<_0x3fa515['length'];_0x1167ca+=0x1){for(var _0x7bdac6=0x0,_0x34a8f5;_0x7bdac6<_0x3fa515[_0x1167ca][_0xeee4('0x2a')][_0xeee4('0x57')];_0x7bdac6+=0x1){_0x34a8f5=_0x3fa515[_0x1167ca][_0xeee4('0x2a')][_0x7bdac6][_0xeee4('0xad')]({'plain':!![]});_0x4c35d0[_0x34a8f5['id']]=_0x34a8f5;}}_0x4c35d0=_[_0xeee4('0x12d')](_0x4c35d0);for(var _0x205408=qs[_0xeee4('0x22')](_0x228950[_0xeee4('0x40')][_0xeee4('0x22')]);_0x205408<_0x4c35d0[_0xeee4('0x57')]&&_0x178d90['length']<qs[_0xeee4('0x23')](_0x228950['query'][_0xeee4('0x23')]);_0x205408+=0x1){if(_0x4c35d0[_0x205408]){_0x178d90[_0xeee4('0x44')](_0x4c35d0[_0x205408]);}}return{'count':_0x4c35d0['length'],'rows':_0x178d90};}})[_0xeee4('0x15')](respondWithResult(_0x256e1b,null))[_0xeee4('0x1e')](handleError(_0x256e1b,null));};exports[_0xeee4('0x25')]=function(_0x49cd91,_0x1c544c){if(_0x49cd91[_0xeee4('0x29')]['id']==_0x49cd91['params']['id']){return _0x1c544c[_0xeee4('0x1f')](0x1f4)[_0xeee4('0x35')]({'message':_0xeee4('0x12e')});}return db[_0xeee4('0x37')][_0xeee4('0x30')]({'where':{'id':_0x49cd91['params']['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x1c544c,null))[_0xeee4('0x15')](removeEntity(_0x1c544c,null))[_0xeee4('0x1e')](handleError(_0x1c544c,null));};exports[_0xeee4('0x12f')]=function(_0x380186,_0x27675e){return db[_0xeee4('0x37')]['find']({'where':{'id':_0x380186[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x27675e,null))[_0xeee4('0x15')](function(_0x3f0772){if(_0x3f0772){return _0x3f0772[_0xeee4('0x12f')](_0x380186[_0xeee4('0x5a')][_0xeee4('0x5e')],_[_0xeee4('0x5f')](_0x380186[_0xeee4('0x5a')],[_0xeee4('0x5e'),'id'])||{})['spread'](function(){for(var _0x1c17ce=0x0;_0x1c17ce<_0x380186[_0xeee4('0x5a')][_0xeee4('0x5e')]['length'];_0x1c17ce+=0x1){socket[_0xeee4('0xaa')](_0xeee4('0x130'),{'ChatInteractionId':Number(_0x380186[_0xeee4('0x5a')]['ids'][_0x1c17ce]),'UserId':Number(_0x380186[_0xeee4('0x5b')]['id'])});}return _0x380186[_0xeee4('0x5a')][_0xeee4('0x5e')];});}})[_0xeee4('0x15')](respondWithResult(_0x27675e,null))[_0xeee4('0x1e')](handleError(_0x27675e,null));};exports['removeChatInteractions']=function(_0xf7baec,_0x1b4ce8){return db['User']['find']({'where':{'id':_0xf7baec[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x1b4ce8,null))['then'](function(_0x4cc55b){if(_0x4cc55b){return _0x4cc55b['removeChatInteractions'](_0xf7baec[_0xeee4('0x40')]['ids'])['then'](function(){if(_['isArray'](_0xf7baec[_0xeee4('0x40')]['ids'])){for(var _0x5337f9=0x0;_0x5337f9<_0xf7baec[_0xeee4('0x40')][_0xeee4('0x5e')][_0xeee4('0x57')];_0x5337f9+=0x1){socket['emit'](_0xeee4('0x131'),{'ChatInteractionId':Number(_0xf7baec[_0xeee4('0x40')]['ids'][_0x5337f9]),'UserId':Number(_0xf7baec[_0xeee4('0x5b')]['id'])});}}else{socket[_0xeee4('0xaa')](_0xeee4('0x131'),{'ChatInteractionId':Number(_0xf7baec[_0xeee4('0x40')][_0xeee4('0x5e')]),'UserId':Number(_0xf7baec[_0xeee4('0x5b')]['id'])});}});}})[_0xeee4('0x15')](respondWithStatusCode(_0x1b4ce8,null))[_0xeee4('0x1e')](handleError(_0x1b4ce8,null));};exports[_0xeee4('0x132')]=function(_0x45eda7,_0x1ab83d){return db['User'][_0xeee4('0x30')]({'where':{'id':_0x45eda7[_0xeee4('0x5b')]['id']}})['then'](handleEntityNotFound(_0x1ab83d,null))[_0xeee4('0x15')](function(_0x31b3ff){if(_0x31b3ff){return _0x31b3ff['addMailInteractions'](_0x45eda7[_0xeee4('0x5a')][_0xeee4('0x5e')],_[_0xeee4('0x5f')](_0x45eda7[_0xeee4('0x5a')],[_0xeee4('0x5e'),'id'])||{})[_0xeee4('0xa8')](function(){for(var _0x189766=0x0;_0x189766<_0x45eda7['body'][_0xeee4('0x5e')][_0xeee4('0x57')];_0x189766+=0x1){socket[_0xeee4('0xaa')](_0xeee4('0x133'),{'MailInteractionId':Number(_0x45eda7['body']['ids'][_0x189766]),'UserId':Number(_0x45eda7[_0xeee4('0x5b')]['id'])});}return _0x45eda7[_0xeee4('0x5a')][_0xeee4('0x5e')];});}})['then'](respondWithResult(_0x1ab83d,null))['catch'](handleError(_0x1ab83d,null));};exports[_0xeee4('0x134')]=function(_0x81093,_0x32d507){return db[_0xeee4('0x37')][_0xeee4('0x30')]({'where':{'id':_0x81093[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x32d507,null))['then'](function(_0x180b18){if(_0x180b18){return _0x180b18['removeMailInteractions'](_0x81093[_0xeee4('0x40')]['ids'])[_0xeee4('0x15')](function(){if(_[_0xeee4('0xb5')](_0x81093[_0xeee4('0x40')][_0xeee4('0x5e')])){for(var _0x59313b=0x0;_0x59313b<_0x81093[_0xeee4('0x40')]['ids'][_0xeee4('0x57')];_0x59313b+=0x1){socket[_0xeee4('0xaa')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x81093[_0xeee4('0x40')][_0xeee4('0x5e')][_0x59313b]),'UserId':Number(_0x81093[_0xeee4('0x5b')]['id'])});}}else{socket[_0xeee4('0xaa')](_0xeee4('0x135'),{'MailInteractionId':Number(_0x81093[_0xeee4('0x40')][_0xeee4('0x5e')]),'UserId':Number(_0x81093[_0xeee4('0x5b')]['id'])});}});}})[_0xeee4('0x15')](respondWithStatusCode(_0x32d507,null))['catch'](handleError(_0x32d507,null));};exports[_0xeee4('0x136')]=function(_0x1314da,_0x186053){return db[_0xeee4('0x37')][_0xeee4('0x30')]({'where':{'id':_0x1314da[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x186053,null))[_0xeee4('0x15')](function(_0x51dde4){if(_0x51dde4){return _0x51dde4[_0xeee4('0x136')](_0x1314da[_0xeee4('0x5a')][_0xeee4('0x5e')],_[_0xeee4('0x5f')](_0x1314da[_0xeee4('0x5a')],['ids','id'])||{})['spread'](function(){for(var _0x521aa9=0x0;_0x521aa9<_0x1314da[_0xeee4('0x5a')][_0xeee4('0x5e')][_0xeee4('0x57')];_0x521aa9+=0x1){socket[_0xeee4('0xaa')](_0xeee4('0x137'),{'FaxInteractionId':Number(_0x1314da[_0xeee4('0x5a')][_0xeee4('0x5e')][_0x521aa9]),'UserId':Number(_0x1314da[_0xeee4('0x5b')]['id'])});}return _0x1314da[_0xeee4('0x5a')][_0xeee4('0x5e')];});}})[_0xeee4('0x15')](respondWithResult(_0x186053,null))[_0xeee4('0x1e')](handleError(_0x186053,null));};exports[_0xeee4('0x138')]=function(_0x349bb7,_0x4b9e33){return db[_0xeee4('0x37')]['find']({'where':{'id':_0x349bb7[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x4b9e33,null))['then'](function(_0x111d76){if(_0x111d76){return _0x111d76['removeFaxInteractions'](_0x349bb7['query'][_0xeee4('0x5e')])[_0xeee4('0x15')](function(){if(_[_0xeee4('0xb5')](_0x349bb7[_0xeee4('0x40')]['ids'])){for(var _0x380beb=0x0;_0x380beb<_0x349bb7['query'][_0xeee4('0x5e')][_0xeee4('0x57')];_0x380beb+=0x1){socket['emit'](_0xeee4('0x139'),{'FaxInteractionId':Number(_0x349bb7[_0xeee4('0x40')][_0xeee4('0x5e')][_0x380beb]),'UserId':Number(_0x349bb7['params']['id'])});}}else{socket[_0xeee4('0xaa')](_0xeee4('0x139'),{'FaxInteractionId':Number(_0x349bb7[_0xeee4('0x40')]['ids']),'UserId':Number(_0x349bb7[_0xeee4('0x5b')]['id'])});}});}})[_0xeee4('0x15')](respondWithStatusCode(_0x4b9e33,null))[_0xeee4('0x1e')](handleError(_0x4b9e33,null));};exports[_0xeee4('0x13a')]=function(_0x45e99e,_0x2f396c){return db['User'][_0xeee4('0x30')]({'where':{'id':_0x45e99e[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x2f396c,null))[_0xeee4('0x15')](function(_0x473940){if(_0x473940){return _0x473940[_0xeee4('0x13a')](_0x45e99e[_0xeee4('0x5a')]['ids'],_[_0xeee4('0x5f')](_0x45e99e[_0xeee4('0x5a')],[_0xeee4('0x5e'),'id'])||{})[_0xeee4('0xa8')](function(){for(var _0x2c5ac2=0x0;_0x2c5ac2<_0x45e99e[_0xeee4('0x5a')][_0xeee4('0x5e')][_0xeee4('0x57')];_0x2c5ac2+=0x1){socket[_0xeee4('0xaa')](_0xeee4('0x13b'),{'SmsInteractionId':Number(_0x45e99e['body'][_0xeee4('0x5e')][_0x2c5ac2]),'UserId':Number(_0x45e99e[_0xeee4('0x5b')]['id'])});}return _0x45e99e[_0xeee4('0x5a')][_0xeee4('0x5e')];});}})[_0xeee4('0x15')](respondWithResult(_0x2f396c,null))[_0xeee4('0x1e')](handleError(_0x2f396c,null));};exports[_0xeee4('0x13c')]=function(_0x2f3804,_0x528021){return db[_0xeee4('0x37')][_0xeee4('0x30')]({'where':{'id':_0x2f3804[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x528021,null))['then'](function(_0x35c133){if(_0x35c133){return _0x35c133[_0xeee4('0x13c')](_0x2f3804[_0xeee4('0x40')][_0xeee4('0x5e')])['then'](function(){if(_[_0xeee4('0xb5')](_0x2f3804[_0xeee4('0x40')]['ids'])){for(var _0x106846=0x0;_0x106846<_0x2f3804[_0xeee4('0x40')][_0xeee4('0x5e')][_0xeee4('0x57')];_0x106846+=0x1){socket['emit'](_0xeee4('0x13d'),{'SmsInteractionId':Number(_0x2f3804[_0xeee4('0x40')]['ids'][_0x106846]),'UserId':Number(_0x2f3804['params']['id'])});}}else{socket[_0xeee4('0xaa')](_0xeee4('0x13d'),{'SmsInteractionId':Number(_0x2f3804[_0xeee4('0x40')][_0xeee4('0x5e')]),'UserId':Number(_0x2f3804[_0xeee4('0x5b')]['id'])});}});}})[_0xeee4('0x15')](respondWithStatusCode(_0x528021,null))[_0xeee4('0x1e')](handleError(_0x528021,null));};exports[_0xeee4('0x13e')]=function(_0x52fb07,_0x3e817e){return db[_0xeee4('0x37')][_0xeee4('0x30')]({'where':{'id':_0x52fb07[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x3e817e,null))[_0xeee4('0x15')](function(_0x33078f){if(_0x33078f){return _0x33078f[_0xeee4('0x13e')](_0x52fb07['body'][_0xeee4('0x5e')],_[_0xeee4('0x5f')](_0x52fb07['body'],[_0xeee4('0x5e'),'id'])||{})['spread'](function(){for(var _0x1dfc5d=0x0;_0x1dfc5d<_0x52fb07[_0xeee4('0x5a')][_0xeee4('0x5e')]['length'];_0x1dfc5d+=0x1){socket['emit'](_0xeee4('0x13f'),{'OpenchannelInteractionId':Number(_0x52fb07[_0xeee4('0x5a')][_0xeee4('0x5e')][_0x1dfc5d]),'UserId':Number(_0x52fb07[_0xeee4('0x5b')]['id'])});}return _0x52fb07[_0xeee4('0x5a')]['ids'];});}})[_0xeee4('0x15')](respondWithResult(_0x3e817e,null))['catch'](handleError(_0x3e817e,null));};exports['removeOpenchannelInteractions']=function(_0x397215,_0x74c294){return db['User']['find']({'where':{'id':_0x397215[_0xeee4('0x5b')]['id']}})['then'](handleEntityNotFound(_0x74c294,null))[_0xeee4('0x15')](function(_0x44f194){if(_0x44f194){return _0x44f194[_0xeee4('0x140')](_0x397215[_0xeee4('0x40')][_0xeee4('0x5e')])[_0xeee4('0x15')](function(){if(_[_0xeee4('0xb5')](_0x397215[_0xeee4('0x40')][_0xeee4('0x5e')])){for(var _0xe1c9c6=0x0;_0xe1c9c6<_0x397215[_0xeee4('0x40')][_0xeee4('0x5e')]['length'];_0xe1c9c6+=0x1){socket[_0xeee4('0xaa')](_0xeee4('0x141'),{'OpenchannelInteractionId':Number(_0x397215[_0xeee4('0x40')][_0xeee4('0x5e')][_0xe1c9c6]),'UserId':Number(_0x397215['params']['id'])});}}else{socket[_0xeee4('0xaa')](_0xeee4('0x141'),{'OpenchannelInteractionId':Number(_0x397215[_0xeee4('0x40')][_0xeee4('0x5e')]),'UserId':Number(_0x397215[_0xeee4('0x5b')]['id'])});}});}})[_0xeee4('0x15')](respondWithStatusCode(_0x74c294,null))[_0xeee4('0x1e')](handleError(_0x74c294,null));};exports[_0xeee4('0x142')]=function(_0x21e7d1,_0x156b12){return db[_0xeee4('0x37')][_0xeee4('0x30')]({'where':{'id':_0x21e7d1[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x156b12,null))[_0xeee4('0x15')](function(_0x5b017c){if(_0x5b017c){return _0x5b017c['addWhatsappInteractions'](_0x21e7d1[_0xeee4('0x5a')][_0xeee4('0x5e')],_[_0xeee4('0x5f')](_0x21e7d1[_0xeee4('0x5a')],['ids','id'])||{})[_0xeee4('0xa8')](function(){for(var _0x2a3636=0x0;_0x2a3636<_0x21e7d1[_0xeee4('0x5a')][_0xeee4('0x5e')]['length'];_0x2a3636+=0x1){socket[_0xeee4('0xaa')](_0xeee4('0x143'),{'WhatsappInteractionId':Number(_0x21e7d1[_0xeee4('0x5a')][_0xeee4('0x5e')][_0x2a3636]),'UserId':Number(_0x21e7d1[_0xeee4('0x5b')]['id'])});}return _0x21e7d1[_0xeee4('0x5a')][_0xeee4('0x5e')];});}})[_0xeee4('0x15')](respondWithResult(_0x156b12,null))['catch'](handleError(_0x156b12,null));};exports[_0xeee4('0x144')]=function(_0x29f537,_0x101946){return db[_0xeee4('0x37')]['find']({'where':{'id':_0x29f537[_0xeee4('0x5b')]['id']}})['then'](handleEntityNotFound(_0x101946,null))[_0xeee4('0x15')](function(_0x2835d7){if(_0x2835d7){return _0x2835d7[_0xeee4('0x144')](_0x29f537[_0xeee4('0x40')]['ids']);}})[_0xeee4('0x15')](respondWithStatusCode(_0x101946,null))['catch'](handleError(_0x101946,null));};exports[_0xeee4('0x145')]=function(_0xb3dedb,_0x5007ff){var _0x10e4f5={};var _0x4ed266={};var _0x12bea6;var _0x4675dd;return db['User'][_0xeee4('0x98')]({'where':{'id':_0xb3dedb['params']['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x5007ff,null))[_0xeee4('0x15')](function(_0x691ae4){if(_0x691ae4){_0x12bea6=_0x691ae4;_0x4ed266[_0xeee4('0x51')]=_[_0xeee4('0x52')](db[_0xeee4('0x146')]['rawAttributes']);_0x4ed266['query']=_[_0xeee4('0x52')](_0xb3dedb[_0xeee4('0x40')]);_0x4ed266[_0xeee4('0x54')]=_['intersection'](_0x4ed266[_0xeee4('0x51')],_0x4ed266[_0xeee4('0x40')]);_0x10e4f5['attributes']=_[_0xeee4('0x55')](_0x4ed266[_0xeee4('0x51')],qs['fields'](_0xb3dedb['query'][_0xeee4('0x56')]));_0x10e4f5[_0xeee4('0x43')]=_0x10e4f5[_0xeee4('0x43')][_0xeee4('0x57')]?_0x10e4f5[_0xeee4('0x43')]:_0x4ed266['model'];_0x10e4f5['order']=qs['sort'](_0xb3dedb['query']['sort']);_0x10e4f5[_0xeee4('0x3f')]=qs[_0xeee4('0x54')](_[_0xeee4('0xd2')](_0xb3dedb[_0xeee4('0x40')],_0x4ed266['filters']));if(_0xb3dedb[_0xeee4('0x40')][_0xeee4('0x3d')]){_0x10e4f5['where']=_['merge'](_0x10e4f5[_0xeee4('0x3f')],{'$or':_['map'](_0x10e4f5[_0xeee4('0x43')],function(_0x4c7c49){var _0x509f31={};_0x509f31[_0x4c7c49]={'$like':'%'+_0xb3dedb[_0xeee4('0x40')][_0xeee4('0x3d')]+'%'};return _0x509f31;})});}_0x10e4f5=_[_0xeee4('0x58')]({},_0x10e4f5,_0xb3dedb[_0xeee4('0x59')]);return _0x12bea6[_0xeee4('0x145')](_0x10e4f5);}})[_0xeee4('0x15')](function(_0x550b0a){if(_0x550b0a){_0x4675dd=_0x550b0a['length'];if(!_0xb3dedb[_0xeee4('0x40')][_0xeee4('0xd8')](_0xeee4('0xd9'))){_0x10e4f5[_0xeee4('0x23')]=qs[_0xeee4('0x23')](_0xb3dedb[_0xeee4('0x40')][_0xeee4('0x23')]);_0x10e4f5[_0xeee4('0x22')]=qs['offset'](_0xb3dedb[_0xeee4('0x40')][_0xeee4('0x22')]);}return _0x12bea6[_0xeee4('0x145')](_0x10e4f5);}})[_0xeee4('0x15')](function(_0xe4bc9e){if(_0xe4bc9e){return _0xe4bc9e?{'count':_0x4675dd,'rows':_0xe4bc9e}:null;}})[_0xeee4('0x15')](respondWithResult(_0x5007ff,null))[_0xeee4('0x1e')](handleError(_0x5007ff,null));};exports[_0xeee4('0x147')]=function(_0x3b9fb3,_0x5e43e8){var _0x39c575={};var _0x5ec65d={};var _0x185f08;var _0x2178b9;return db[_0xeee4('0x37')][_0xeee4('0x98')]({'where':{'id':_0x3b9fb3[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x5e43e8,null))[_0xeee4('0x15')](function(_0x4e076c){if(_0x4e076c){_0x185f08=_0x4e076c;_0x5ec65d[_0xeee4('0x51')]=_[_0xeee4('0x52')](db[_0xeee4('0x148')][_0xeee4('0x38')]);_0x5ec65d[_0xeee4('0x40')]=_[_0xeee4('0x52')](_0x3b9fb3[_0xeee4('0x40')]);_0x5ec65d[_0xeee4('0x54')]=_[_0xeee4('0x55')](_0x5ec65d[_0xeee4('0x51')],_0x5ec65d['query']);_0x39c575[_0xeee4('0x43')]=_[_0xeee4('0x55')](_0x5ec65d[_0xeee4('0x51')],qs[_0xeee4('0x56')](_0x3b9fb3[_0xeee4('0x40')][_0xeee4('0x56')]));_0x39c575[_0xeee4('0x43')]=_0x39c575[_0xeee4('0x43')][_0xeee4('0x57')]?_0x39c575[_0xeee4('0x43')]:_0x5ec65d['model'];_0x39c575[_0xeee4('0xd0')]=qs[_0xeee4('0xd1')](_0x3b9fb3[_0xeee4('0x40')][_0xeee4('0xd1')]);_0x39c575[_0xeee4('0x3f')]=qs[_0xeee4('0x54')](_[_0xeee4('0xd2')](_0x3b9fb3[_0xeee4('0x40')],_0x5ec65d[_0xeee4('0x54')]));if(_0x3b9fb3[_0xeee4('0x40')]['filter']){_0x39c575['where']=_['merge'](_0x39c575['where'],{'$or':_['map'](_0x39c575[_0xeee4('0x43')],function(_0x468584){var _0x5f319b={};_0x5f319b[_0x468584]={'$like':'%'+_0x3b9fb3[_0xeee4('0x40')][_0xeee4('0x3d')]+'%'};return _0x5f319b;})});}_0x39c575=_[_0xeee4('0x58')]({},_0x39c575,_0x3b9fb3['options']);return _0x185f08['getFaxAccounts'](_0x39c575);}})[_0xeee4('0x15')](function(_0x2c6ba7){if(_0x2c6ba7){_0x2178b9=_0x2c6ba7['length'];if(!_0x3b9fb3['query'][_0xeee4('0xd8')](_0xeee4('0xd9'))){_0x39c575[_0xeee4('0x23')]=qs[_0xeee4('0x23')](_0x3b9fb3['query'][_0xeee4('0x23')]);_0x39c575[_0xeee4('0x22')]=qs[_0xeee4('0x22')](_0x3b9fb3[_0xeee4('0x40')][_0xeee4('0x22')]);}return _0x185f08['getFaxAccounts'](_0x39c575);}})[_0xeee4('0x15')](function(_0x16c296){if(_0x16c296){return _0x16c296?{'count':_0x2178b9,'rows':_0x16c296}:null;}})['then'](respondWithResult(_0x5e43e8,null))[_0xeee4('0x1e')](handleError(_0x5e43e8,null));};exports[_0xeee4('0x149')]=function(_0x35c9c6,_0x1d670f){return db[_0xeee4('0x37')]['find']({'where':{'id':_0x35c9c6['params']['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x1d670f,null))[_0xeee4('0x15')](function(_0x2e59ba){if(_0x2e59ba){return _0x2e59ba[_0xeee4('0x149')](_0x35c9c6[_0xeee4('0x5a')][_0xeee4('0x5e')],_[_0xeee4('0x5f')](_0x35c9c6[_0xeee4('0x5a')],['ids','id'])||{});}})[_0xeee4('0x15')](respondWithResult(_0x1d670f,null))[_0xeee4('0x1e')](handleError(_0x1d670f,null));};exports[_0xeee4('0x14a')]=function(_0x18380c,_0x1eece0){return db[_0xeee4('0x37')][_0xeee4('0x30')]({'where':{'id':_0x18380c[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x1eece0,null))[_0xeee4('0x15')](function(_0x26e443){if(_0x26e443){return _0x26e443[_0xeee4('0x14a')](_0x18380c[_0xeee4('0x40')][_0xeee4('0x5e')]);}})[_0xeee4('0x15')](respondWithStatusCode(_0x1eece0,null))[_0xeee4('0x1e')](handleError(_0x1eece0,null));};exports[_0xeee4('0x14b')]=function(_0x54ea87,_0x27c5e9){var _0x2ebe01={};var _0x5e73d6={};var _0x8eeb5a;var _0x50440d;return db[_0xeee4('0x37')][_0xeee4('0x98')]({'where':{'id':_0x54ea87[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x27c5e9,null))['then'](function(_0x510d0b){if(_0x510d0b){_0x8eeb5a=_0x510d0b;_0x5e73d6['model']=_['keys'](db['MailAccount'][_0xeee4('0x38')]);_0x5e73d6['query']=_[_0xeee4('0x52')](_0x54ea87[_0xeee4('0x40')]);_0x5e73d6[_0xeee4('0x54')]=_[_0xeee4('0x55')](_0x5e73d6[_0xeee4('0x51')],_0x5e73d6['query']);_0x2ebe01[_0xeee4('0x43')]=_[_0xeee4('0x55')](_0x5e73d6['model'],qs['fields'](_0x54ea87['query'][_0xeee4('0x56')]));_0x2ebe01['attributes']=_0x2ebe01[_0xeee4('0x43')][_0xeee4('0x57')]?_0x2ebe01[_0xeee4('0x43')]:_0x5e73d6['model'];_0x2ebe01[_0xeee4('0xd0')]=qs[_0xeee4('0xd1')](_0x54ea87[_0xeee4('0x40')][_0xeee4('0xd1')]);_0x2ebe01[_0xeee4('0x3f')]=qs[_0xeee4('0x54')](_[_0xeee4('0xd2')](_0x54ea87[_0xeee4('0x40')],_0x5e73d6[_0xeee4('0x54')]));if(_0x54ea87[_0xeee4('0x40')][_0xeee4('0x3d')]){_0x2ebe01[_0xeee4('0x3f')]=_['merge'](_0x2ebe01[_0xeee4('0x3f')],{'$or':_[_0xeee4('0x39')](_0x2ebe01[_0xeee4('0x43')],function(_0x2fa5ad){var _0x3248f1={};_0x3248f1[_0x2fa5ad]={'$like':'%'+_0x54ea87[_0xeee4('0x40')][_0xeee4('0x3d')]+'%'};return _0x3248f1;})});}_0x2ebe01=_[_0xeee4('0x58')]({},_0x2ebe01,_0x54ea87[_0xeee4('0x59')]);return _0x8eeb5a[_0xeee4('0x14b')](_0x2ebe01);}})[_0xeee4('0x15')](function(_0x125a70){if(_0x125a70){_0x50440d=_0x125a70[_0xeee4('0x57')];if(!_0x54ea87[_0xeee4('0x40')][_0xeee4('0xd8')]('nolimit')){_0x2ebe01[_0xeee4('0x23')]=qs[_0xeee4('0x23')](_0x54ea87[_0xeee4('0x40')][_0xeee4('0x23')]);_0x2ebe01['offset']=qs[_0xeee4('0x22')](_0x54ea87[_0xeee4('0x40')]['offset']);}return _0x8eeb5a[_0xeee4('0x14b')](_0x2ebe01);}})[_0xeee4('0x15')](function(_0x237119){if(_0x237119){return _0x237119?{'count':_0x50440d,'rows':_0x237119}:null;}})[_0xeee4('0x15')](respondWithResult(_0x27c5e9,null))[_0xeee4('0x1e')](handleError(_0x27c5e9,null));};exports[_0xeee4('0x14c')]=function(_0x116472,_0x15cff1){return db[_0xeee4('0x37')][_0xeee4('0x30')]({'where':{'id':_0x116472[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x15cff1,null))['then'](function(_0x3f505b){if(_0x3f505b){return _0x3f505b[_0xeee4('0x14c')](_0x116472[_0xeee4('0x5a')]['ids'],_[_0xeee4('0x5f')](_0x116472[_0xeee4('0x5a')],[_0xeee4('0x5e'),'id'])||{});}})['then'](respondWithResult(_0x15cff1,null))['catch'](handleError(_0x15cff1,null));};exports['removeMailAccounts']=function(_0x102d2d,_0x36d2e2){return db[_0xeee4('0x37')][_0xeee4('0x30')]({'where':{'id':_0x102d2d[_0xeee4('0x5b')]['id']}})['then'](handleEntityNotFound(_0x36d2e2,null))[_0xeee4('0x15')](function(_0x2fcbe3){if(_0x2fcbe3){return _0x2fcbe3['removeMailAccounts'](_0x102d2d[_0xeee4('0x40')][_0xeee4('0x5e')]);}})[_0xeee4('0x15')](respondWithStatusCode(_0x36d2e2,null))['catch'](handleError(_0x36d2e2,null));};exports[_0xeee4('0x14d')]=function(_0x41cf6c,_0xcc7cc4){var _0x33b40a={};var _0x353b5={};var _0x2eb651;var _0x3c2850;return db[_0xeee4('0x37')][_0xeee4('0x98')]({'where':{'id':_0x41cf6c[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0xcc7cc4,null))[_0xeee4('0x15')](function(_0x13cfe9){if(_0x13cfe9){_0x2eb651=_0x13cfe9;_0x353b5[_0xeee4('0x51')]=_[_0xeee4('0x52')](db[_0xeee4('0x14e')][_0xeee4('0x38')]);_0x353b5[_0xeee4('0x40')]=_[_0xeee4('0x52')](_0x41cf6c['query']);_0x353b5[_0xeee4('0x54')]=_[_0xeee4('0x55')](_0x353b5[_0xeee4('0x51')],_0x353b5[_0xeee4('0x40')]);_0x33b40a['attributes']=_[_0xeee4('0x55')](_0x353b5[_0xeee4('0x51')],qs[_0xeee4('0x56')](_0x41cf6c[_0xeee4('0x40')][_0xeee4('0x56')]));_0x33b40a['attributes']=_0x33b40a[_0xeee4('0x43')]['length']?_0x33b40a[_0xeee4('0x43')]:_0x353b5[_0xeee4('0x51')];_0x33b40a[_0xeee4('0xd0')]=qs[_0xeee4('0xd1')](_0x41cf6c[_0xeee4('0x40')][_0xeee4('0xd1')]);_0x33b40a[_0xeee4('0x3f')]=qs[_0xeee4('0x54')](_[_0xeee4('0xd2')](_0x41cf6c[_0xeee4('0x40')],_0x353b5['filters']));if(_0x41cf6c[_0xeee4('0x40')][_0xeee4('0x3d')]){_0x33b40a[_0xeee4('0x3f')]=_[_0xeee4('0x58')](_0x33b40a[_0xeee4('0x3f')],{'$or':_[_0xeee4('0x39')](_0x33b40a[_0xeee4('0x43')],function(_0x330332){var _0x32a0d0={};_0x32a0d0[_0x330332]={'$like':'%'+_0x41cf6c['query']['filter']+'%'};return _0x32a0d0;})});}_0x33b40a=_[_0xeee4('0x58')]({},_0x33b40a,_0x41cf6c['options']);return _0x2eb651[_0xeee4('0x14d')](_0x33b40a);}})['then'](function(_0x4a52ef){if(_0x4a52ef){_0x3c2850=_0x4a52ef[_0xeee4('0x57')];if(!_0x41cf6c[_0xeee4('0x40')][_0xeee4('0xd8')](_0xeee4('0xd9'))){_0x33b40a['limit']=qs[_0xeee4('0x23')](_0x41cf6c[_0xeee4('0x40')]['limit']);_0x33b40a[_0xeee4('0x22')]=qs['offset'](_0x41cf6c[_0xeee4('0x40')][_0xeee4('0x22')]);}return _0x2eb651[_0xeee4('0x14d')](_0x33b40a);}})['then'](function(_0x4ac007){if(_0x4ac007){return _0x4ac007?{'count':_0x3c2850,'rows':_0x4ac007}:null;}})[_0xeee4('0x15')](respondWithResult(_0xcc7cc4,null))[_0xeee4('0x1e')](handleError(_0xcc7cc4,null));};exports[_0xeee4('0x14f')]=function(_0x456801,_0x3eb7a0){return db[_0xeee4('0x37')][_0xeee4('0x30')]({'where':{'id':_0x456801[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x3eb7a0,null))[_0xeee4('0x15')](function(_0x246cf8){if(_0x246cf8){return _0x246cf8[_0xeee4('0x14f')](_0x456801[_0xeee4('0x5a')][_0xeee4('0x5e')],_[_0xeee4('0x5f')](_0x456801[_0xeee4('0x5a')],[_0xeee4('0x5e'),'id'])||{});}})[_0xeee4('0x15')](respondWithResult(_0x3eb7a0,null))[_0xeee4('0x1e')](handleError(_0x3eb7a0,null));};exports[_0xeee4('0x150')]=function(_0x5e7583,_0x566d01){return db[_0xeee4('0x37')][_0xeee4('0x30')]({'where':{'id':_0x5e7583['params']['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x566d01,null))['then'](function(_0x5e7cd9){if(_0x5e7cd9){return _0x5e7cd9[_0xeee4('0x150')](_0x5e7583['query'][_0xeee4('0x5e')]);}})[_0xeee4('0x15')](respondWithStatusCode(_0x566d01,null))['catch'](handleError(_0x566d01,null));};exports[_0xeee4('0x151')]=function(_0x4a204b,_0x3a940f){var _0x42cf9f={};var _0x4dc24e={};var _0xfe9672;var _0x373e15;return db['User'][_0xeee4('0x98')]({'where':{'id':_0x4a204b['params']['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x3a940f,null))[_0xeee4('0x15')](function(_0x26fafa){if(_0x26fafa){_0xfe9672=_0x26fafa;_0x4dc24e[_0xeee4('0x51')]=_[_0xeee4('0x52')](db[_0xeee4('0x152')][_0xeee4('0x38')]);_0x4dc24e[_0xeee4('0x40')]=_[_0xeee4('0x52')](_0x4a204b[_0xeee4('0x40')]);_0x4dc24e[_0xeee4('0x54')]=_['intersection'](_0x4dc24e['model'],_0x4dc24e[_0xeee4('0x40')]);_0x42cf9f[_0xeee4('0x43')]=_[_0xeee4('0x55')](_0x4dc24e[_0xeee4('0x51')],qs[_0xeee4('0x56')](_0x4a204b[_0xeee4('0x40')][_0xeee4('0x56')]));_0x42cf9f['attributes']=_0x42cf9f[_0xeee4('0x43')][_0xeee4('0x57')]?_0x42cf9f[_0xeee4('0x43')]:_0x4dc24e[_0xeee4('0x51')];_0x42cf9f['order']=qs[_0xeee4('0xd1')](_0x4a204b[_0xeee4('0x40')][_0xeee4('0xd1')]);_0x42cf9f[_0xeee4('0x3f')]=qs[_0xeee4('0x54')](_[_0xeee4('0xd2')](_0x4a204b[_0xeee4('0x40')],_0x4dc24e[_0xeee4('0x54')]));if(_0x4a204b[_0xeee4('0x40')][_0xeee4('0x3d')]){_0x42cf9f[_0xeee4('0x3f')]=_[_0xeee4('0x58')](_0x42cf9f[_0xeee4('0x3f')],{'$or':_[_0xeee4('0x39')](_0x42cf9f['attributes'],function(_0x58f212){var _0x372d10={};_0x372d10[_0x58f212]={'$like':'%'+_0x4a204b[_0xeee4('0x40')][_0xeee4('0x3d')]+'%'};return _0x372d10;})});}_0x42cf9f=_[_0xeee4('0x58')]({},_0x42cf9f,_0x4a204b[_0xeee4('0x59')]);return _0xfe9672['getSmsAccounts'](_0x42cf9f);}})[_0xeee4('0x15')](function(_0x1deac8){if(_0x1deac8){_0x373e15=_0x1deac8[_0xeee4('0x57')];if(!_0x4a204b['query']['hasOwnProperty'](_0xeee4('0xd9'))){_0x42cf9f[_0xeee4('0x23')]=qs[_0xeee4('0x23')](_0x4a204b[_0xeee4('0x40')][_0xeee4('0x23')]);_0x42cf9f[_0xeee4('0x22')]=qs[_0xeee4('0x22')](_0x4a204b[_0xeee4('0x40')]['offset']);}return _0xfe9672['getSmsAccounts'](_0x42cf9f);}})['then'](function(_0x365dab){if(_0x365dab){return _0x365dab?{'count':_0x373e15,'rows':_0x365dab}:null;}})[_0xeee4('0x15')](respondWithResult(_0x3a940f,null))['catch'](handleError(_0x3a940f,null));};exports[_0xeee4('0x153')]=function(_0x51f0e8,_0x6f057e){return db[_0xeee4('0x37')][_0xeee4('0x30')]({'where':{'id':_0x51f0e8[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x6f057e,null))[_0xeee4('0x15')](function(_0x3e9a08){if(_0x3e9a08){return _0x3e9a08['addSmsAccounts'](_0x51f0e8[_0xeee4('0x5a')][_0xeee4('0x5e')],_[_0xeee4('0x5f')](_0x51f0e8[_0xeee4('0x5a')],[_0xeee4('0x5e'),'id'])||{});}})[_0xeee4('0x15')](respondWithResult(_0x6f057e,null))[_0xeee4('0x1e')](handleError(_0x6f057e,null));};exports['removeSmsAccounts']=function(_0x1930a1,_0x593908){return db[_0xeee4('0x37')][_0xeee4('0x30')]({'where':{'id':_0x1930a1['params']['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x593908,null))[_0xeee4('0x15')](function(_0x2bac67){if(_0x2bac67){return _0x2bac67['removeSmsAccounts'](_0x1930a1[_0xeee4('0x40')][_0xeee4('0x5e')]);}})[_0xeee4('0x15')](respondWithStatusCode(_0x593908,null))[_0xeee4('0x1e')](handleError(_0x593908,null));};exports[_0xeee4('0x154')]=function(_0x40b11d,_0x5845a8){var _0x40709d={};var _0x823d79={};var _0x454622;var _0x6850c8;return db[_0xeee4('0x37')]['findOne']({'where':{'id':_0x40b11d[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x5845a8,null))['then'](function(_0x3bf3a6){if(_0x3bf3a6){_0x454622=_0x3bf3a6;_0x823d79[_0xeee4('0x51')]=_[_0xeee4('0x52')](db[_0xeee4('0x155')]['rawAttributes']);_0x823d79[_0xeee4('0x40')]=_[_0xeee4('0x52')](_0x40b11d[_0xeee4('0x40')]);_0x823d79['filters']=_['intersection'](_0x823d79[_0xeee4('0x51')],_0x823d79['query']);_0x40709d[_0xeee4('0x43')]=_[_0xeee4('0x55')](_0x823d79['model'],qs['fields'](_0x40b11d[_0xeee4('0x40')][_0xeee4('0x56')]));_0x40709d[_0xeee4('0x43')]=_0x40709d[_0xeee4('0x43')][_0xeee4('0x57')]?_0x40709d[_0xeee4('0x43')]:_0x823d79[_0xeee4('0x51')];_0x40709d[_0xeee4('0xd0')]=qs[_0xeee4('0xd1')](_0x40b11d['query']['sort']);_0x40709d[_0xeee4('0x3f')]=qs[_0xeee4('0x54')](_[_0xeee4('0xd2')](_0x40b11d[_0xeee4('0x40')],_0x823d79[_0xeee4('0x54')]));if(_0x40b11d[_0xeee4('0x40')][_0xeee4('0x3d')]){_0x40709d['where']=_[_0xeee4('0x58')](_0x40709d[_0xeee4('0x3f')],{'$or':_[_0xeee4('0x39')](_0x40709d['attributes'],function(_0x394482){var _0x4e1c78={};_0x4e1c78[_0x394482]={'$like':'%'+_0x40b11d[_0xeee4('0x40')][_0xeee4('0x3d')]+'%'};return _0x4e1c78;})});}_0x40709d=_[_0xeee4('0x58')]({},_0x40709d,_0x40b11d['options']);return _0x454622[_0xeee4('0x154')](_0x40709d);}})[_0xeee4('0x15')](function(_0x16fcd7){if(_0x16fcd7){_0x6850c8=_0x16fcd7[_0xeee4('0x57')];if(!_0x40b11d['query'][_0xeee4('0xd8')]('nolimit')){_0x40709d[_0xeee4('0x23')]=qs['limit'](_0x40b11d[_0xeee4('0x40')][_0xeee4('0x23')]);_0x40709d[_0xeee4('0x22')]=qs[_0xeee4('0x22')](_0x40b11d[_0xeee4('0x40')][_0xeee4('0x22')]);}return _0x454622['getChatWebsites'](_0x40709d);}})[_0xeee4('0x15')](function(_0x261415){if(_0x261415){return _0x261415?{'count':_0x6850c8,'rows':_0x261415}:null;}})[_0xeee4('0x15')](respondWithResult(_0x5845a8,null))['catch'](handleError(_0x5845a8,null));};exports[_0xeee4('0x156')]=function(_0x4e2d7b,_0x11059e){return db[_0xeee4('0x37')][_0xeee4('0x30')]({'where':{'id':_0x4e2d7b['params']['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x11059e,null))[_0xeee4('0x15')](function(_0x44c397){if(_0x44c397){return _0x44c397[_0xeee4('0x156')](_0x4e2d7b['body']['ids'],_['omit'](_0x4e2d7b['body'],['ids','id'])||{});}})['then'](respondWithResult(_0x11059e,null))[_0xeee4('0x1e')](handleError(_0x11059e,null));};exports[_0xeee4('0x157')]=function(_0x2bf78b,_0x392445){return db[_0xeee4('0x37')][_0xeee4('0x30')]({'where':{'id':_0x2bf78b[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x392445,null))['then'](function(_0x2733fa){if(_0x2733fa){return _0x2733fa[_0xeee4('0x157')](_0x2bf78b[_0xeee4('0x40')][_0xeee4('0x5e')]);}})[_0xeee4('0x15')](respondWithStatusCode(_0x392445,null))[_0xeee4('0x1e')](handleError(_0x392445,null));};exports[_0xeee4('0x158')]=function(_0x42cb1a,_0x414e65){var _0x53b9ba={};var _0x4d91b7={};var _0x3e9f63;var _0x3d245e;return db[_0xeee4('0x37')]['findOne']({'where':{'id':_0x42cb1a['params']['id']}})['then'](handleEntityNotFound(_0x414e65,null))['then'](function(_0x3545b8){if(_0x3545b8){_0x3e9f63=_0x3545b8;_0x4d91b7[_0xeee4('0x51')]=_[_0xeee4('0x52')](db[_0xeee4('0x159')][_0xeee4('0x38')]);_0x4d91b7[_0xeee4('0x40')]=_['keys'](_0x42cb1a[_0xeee4('0x40')]);_0x4d91b7[_0xeee4('0x54')]=_[_0xeee4('0x55')](_0x4d91b7[_0xeee4('0x51')],_0x4d91b7[_0xeee4('0x40')]);_0x53b9ba[_0xeee4('0x43')]=_[_0xeee4('0x55')](_0x4d91b7[_0xeee4('0x51')],qs['fields'](_0x42cb1a['query'][_0xeee4('0x56')]));_0x53b9ba[_0xeee4('0x43')]=_0x53b9ba[_0xeee4('0x43')]['length']?_0x53b9ba[_0xeee4('0x43')]:_0x4d91b7[_0xeee4('0x51')];_0x53b9ba[_0xeee4('0xd0')]=qs['sort'](_0x42cb1a['query'][_0xeee4('0xd1')]);_0x53b9ba[_0xeee4('0x3f')]=qs[_0xeee4('0x54')](_[_0xeee4('0xd2')](_0x42cb1a[_0xeee4('0x40')],_0x4d91b7[_0xeee4('0x54')]));if(_0x42cb1a[_0xeee4('0x40')][_0xeee4('0x3d')]){_0x53b9ba[_0xeee4('0x3f')]=_['merge'](_0x53b9ba[_0xeee4('0x3f')],{'$or':_[_0xeee4('0x39')](_0x53b9ba[_0xeee4('0x43')],function(_0xd8f6b3){var _0x4b9045={};_0x4b9045[_0xd8f6b3]={'$like':'%'+_0x42cb1a['query'][_0xeee4('0x3d')]+'%'};return _0x4b9045;})});}_0x53b9ba=_[_0xeee4('0x58')]({},_0x53b9ba,_0x42cb1a['options']);return _0x3e9f63[_0xeee4('0x158')](_0x53b9ba);}})[_0xeee4('0x15')](function(_0x443cfc){if(_0x443cfc){_0x3d245e=_0x443cfc[_0xeee4('0x57')];if(!_0x42cb1a[_0xeee4('0x40')][_0xeee4('0xd8')](_0xeee4('0xd9'))){_0x53b9ba[_0xeee4('0x23')]=qs[_0xeee4('0x23')](_0x42cb1a[_0xeee4('0x40')][_0xeee4('0x23')]);_0x53b9ba['offset']=qs['offset'](_0x42cb1a['query']['offset']);}return _0x3e9f63[_0xeee4('0x158')](_0x53b9ba);}})['then'](function(_0x382d19){if(_0x382d19){return _0x382d19?{'count':_0x3d245e,'rows':_0x382d19}:null;}})[_0xeee4('0x15')](respondWithResult(_0x414e65,null))[_0xeee4('0x1e')](handleError(_0x414e65,null));};exports[_0xeee4('0x15a')]=function(_0x5f48fd,_0x2bb9c4){return db[_0xeee4('0x37')][_0xeee4('0x30')]({'where':{'id':_0x5f48fd[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x2bb9c4,null))[_0xeee4('0x15')](function(_0x1f327d){if(_0x1f327d){return _0x1f327d['addWhatsappAccounts'](_0x5f48fd[_0xeee4('0x5a')][_0xeee4('0x5e')],_[_0xeee4('0x5f')](_0x5f48fd[_0xeee4('0x5a')],['ids','id'])||{});}})[_0xeee4('0x15')](respondWithResult(_0x2bb9c4,null))[_0xeee4('0x1e')](handleError(_0x2bb9c4,null));};exports['removeWhatsappAccounts']=function(_0x597b87,_0x438c64){return db[_0xeee4('0x37')][_0xeee4('0x30')]({'where':{'id':_0x597b87[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x438c64,null))[_0xeee4('0x15')](function(_0x348b40){if(_0x348b40){return _0x348b40['removeWhatsappAccounts'](_0x597b87[_0xeee4('0x40')][_0xeee4('0x5e')]);}})[_0xeee4('0x15')](respondWithStatusCode(_0x438c64,null))[_0xeee4('0x1e')](handleError(_0x438c64,null));};exports['getSquareProjects']=function(_0x321a28,_0x33e395){var _0xba0df5={};var _0x5bc550={};var _0x503d0a;var _0x222472;return db[_0xeee4('0x37')][_0xeee4('0x98')]({'where':{'id':_0x321a28[_0xeee4('0x5b')]['id']}})['then'](handleEntityNotFound(_0x33e395,null))[_0xeee4('0x15')](function(_0x191299){if(_0x191299){_0x503d0a=_0x191299;_0x5bc550[_0xeee4('0x51')]=_[_0xeee4('0x52')](db['SquareProject'][_0xeee4('0x38')]);_0x5bc550[_0xeee4('0x40')]=_['keys'](_0x321a28['query']);_0x5bc550['filters']=_['intersection'](_0x5bc550[_0xeee4('0x51')],_0x5bc550[_0xeee4('0x40')]);_0xba0df5[_0xeee4('0x43')]=_[_0xeee4('0x55')](_0x5bc550['model'],qs[_0xeee4('0x56')](_0x321a28['query'][_0xeee4('0x56')]));_0xba0df5['attributes']=_0xba0df5[_0xeee4('0x43')][_0xeee4('0x57')]?_0xba0df5[_0xeee4('0x43')]:_0x5bc550[_0xeee4('0x51')];_0xba0df5['order']=qs[_0xeee4('0xd1')](_0x321a28['query']['sort']);_0xba0df5['where']=qs['filters'](_['pick'](_0x321a28[_0xeee4('0x40')],_0x5bc550[_0xeee4('0x54')]));if(_0x321a28['query'][_0xeee4('0x3d')]){_0xba0df5[_0xeee4('0x3f')]=_[_0xeee4('0x58')](_0xba0df5[_0xeee4('0x3f')],{'$or':_[_0xeee4('0x39')](_0xba0df5['attributes'],function(_0x2ae055){var _0x1aad11={};_0x1aad11[_0x2ae055]={'$like':'%'+_0x321a28[_0xeee4('0x40')][_0xeee4('0x3d')]+'%'};return _0x1aad11;})});}_0xba0df5=_[_0xeee4('0x58')]({},_0xba0df5,_0x321a28[_0xeee4('0x59')]);return _0x503d0a[_0xeee4('0x15b')](_0xba0df5);}})[_0xeee4('0x15')](function(_0x46df0f){if(_0x46df0f){_0x222472=_0x46df0f['length'];if(!_0x321a28[_0xeee4('0x40')][_0xeee4('0xd8')]('nolimit')){_0xba0df5['limit']=qs[_0xeee4('0x23')](_0x321a28[_0xeee4('0x40')][_0xeee4('0x23')]);_0xba0df5[_0xeee4('0x22')]=qs[_0xeee4('0x22')](_0x321a28[_0xeee4('0x40')][_0xeee4('0x22')]);}return _0x503d0a['getSquareProjects'](_0xba0df5);}})[_0xeee4('0x15')](function(_0x38f890){if(_0x38f890){return _0x38f890?{'count':_0x222472,'rows':_0x38f890}:null;}})[_0xeee4('0x15')](respondWithResult(_0x33e395,null))[_0xeee4('0x1e')](handleError(_0x33e395,null));};exports[_0xeee4('0x15c')]=function(_0x30cc18,_0x4ba64f){return db[_0xeee4('0x37')]['find']({'where':{'id':_0x30cc18[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x4ba64f,null))[_0xeee4('0x15')](function(_0x4e6bf3){if(_0x4e6bf3){return _0x4e6bf3[_0xeee4('0x15c')](_0x30cc18[_0xeee4('0x5a')][_0xeee4('0x5e')],_[_0xeee4('0x5f')](_0x30cc18[_0xeee4('0x5a')],[_0xeee4('0x5e'),'id'])||{});}})[_0xeee4('0x15')](respondWithResult(_0x4ba64f,null))[_0xeee4('0x1e')](handleError(_0x4ba64f,null));};exports[_0xeee4('0x15d')]=function(_0x1705f4,_0x447790){return db[_0xeee4('0x37')]['find']({'where':{'id':_0x1705f4[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](handleEntityNotFound(_0x447790,null))[_0xeee4('0x15')](function(_0x406d38){if(_0x406d38){return _0x406d38[_0xeee4('0x15d')](_0x1705f4[_0xeee4('0x40')]['ids']);}})['then'](respondWithStatusCode(_0x447790,null))[_0xeee4('0x1e')](handleError(_0x447790,null));};exports[_0xeee4('0x15e')]=function(_0x3193e6,_0x50792e){var _0x383029={},_0x54a8ae={},_0x54075e={'count':0x0,'rows':[]};var _0xe5a1ff=db['CmHopper'][_0xeee4('0x38')];_0x54a8ae[_0xeee4('0x51')]=_[_0xeee4('0x52')](_0xe5a1ff);_0x54a8ae[_0xeee4('0x40')]=_[_0xeee4('0x52')](_0x3193e6[_0xeee4('0x40')]);_0x54a8ae[_0xeee4('0x54')]=_[_0xeee4('0x55')](_0x54a8ae[_0xeee4('0x51')],_0x54a8ae[_0xeee4('0x40')]);_0x54a8ae[_0xeee4('0x54')]=_[_0xeee4('0x101')](_0x54a8ae[_0xeee4('0x54')],[_0xeee4('0x15f'),_0xeee4('0x160'),'$gt',_0xeee4('0x161'),_0xeee4('0x162'),_0xeee4('0x163'),_0xeee4('0x164'),_0xeee4('0x165'),_0xeee4('0x166'),'$between',_0xeee4('0x167'),_0xeee4('0x168'),_0xeee4('0x169'),'$like','$notLike','$iLike',_0xeee4('0x16a'),_0xeee4('0x16b'),'$overlap',_0xeee4('0x16c'),_0xeee4('0x16d'),_0xeee4('0x16e')]);_0x383029['attributes']=_[_0xeee4('0x55')](_0x54a8ae[_0xeee4('0x51')],qs[_0xeee4('0x56')](_0x3193e6[_0xeee4('0x40')][_0xeee4('0x56')]));_0x383029[_0xeee4('0x43')]=_0x383029[_0xeee4('0x43')][_0xeee4('0x57')]?_0x383029[_0xeee4('0x43')]:_0x54a8ae[_0xeee4('0x51')];if(!_0x3193e6[_0xeee4('0x40')]['hasOwnProperty'](_0xeee4('0xd9'))){_0x383029[_0xeee4('0x23')]=qs['limit'](_0x3193e6[_0xeee4('0x40')][_0xeee4('0x23')]);_0x383029[_0xeee4('0x22')]=qs[_0xeee4('0x22')](_0x3193e6['query']['offset']);}_0x383029[_0xeee4('0xd0')]=qs[_0xeee4('0xd1')](_0x3193e6[_0xeee4('0x40')][_0xeee4('0xd1')]);_0x383029[_0xeee4('0x3f')]=qs[_0xeee4('0x54')](_['pick'](_0x3193e6[_0xeee4('0x40')],_0x54a8ae['filters']));if(_0x3193e6[_0xeee4('0x40')][_0xeee4('0x3d')]){_0x383029['where']=_[_0xeee4('0x58')](_0x383029[_0xeee4('0x3f')],{'$or':_[_0xeee4('0x39')](_0x383029[_0xeee4('0x43')],function(_0x5ed745){var _0x91c7e4={};_0x91c7e4[_0x5ed745]={'$like':'%'+_0x3193e6[_0xeee4('0x40')][_0xeee4('0x3d')]+'%'};return _0x91c7e4;})});}_0x383029[_0xeee4('0x3f')]={'$and':[_0x383029[_0xeee4('0x3f')],{'$or':[{'UserId':_0x3193e6[_0xeee4('0x5b')]['id']},{'OwnerId':_0x3193e6[_0xeee4('0x5b')]['id']}]}]};_0x383029=_['merge']({},_0x383029,_0x3193e6[_0xeee4('0x59')]);var _0x564cb8={'where':_0x383029[_0xeee4('0x3f')]};return db[_0xeee4('0x16f')][_0xeee4('0x24')](_0x564cb8)[_0xeee4('0x15')](function(_0x5e7a5c){_0x54075e[_0xeee4('0x24')]=_0x5e7a5c;if(_0x3193e6[_0xeee4('0x40')][_0xeee4('0x41')]){_0x383029['include']=[{'attributes':['id',_0xeee4('0x170'),_0xeee4('0x171'),_0xeee4('0xef')],'model':db[_0xeee4('0xcf')],'as':_0xeee4('0x172')},{'attributes':['id','name',_0xeee4('0x173')],'model':db[_0xeee4('0xac')],'as':_0xeee4('0xdb')}];}return db[_0xeee4('0x16f')]['findAll'](_0x383029);})[_0xeee4('0x15')](function(_0x5a563a){_0x54075e[_0xeee4('0x49')]=_0x5a563a;return _0x54075e;})[_0xeee4('0x15')](respondWithFilteredResult(_0x50792e,_0x383029))[_0xeee4('0x1e')](handleError(_0x50792e,null));};exports[_0xeee4('0x174')]=function(_0x8422f8,_0x1b70b1){if(!_[_0xeee4('0x66')](_0x8422f8[_0xeee4('0x29')]['id'])&&(_0x8422f8['user'][_0xeee4('0x26')]==_0xeee4('0x27')||_0x8422f8[_0xeee4('0x29')][_0xeee4('0x26')]==_0xeee4('0x29'))){return db[_0xeee4('0x37')][_0xeee4('0x98')]({'where':{'id':_0x8422f8[_0xeee4('0x5b')]['id']},'raw':!![]})[_0xeee4('0x15')](function(_0xe74e0){return authService['retrieveApiKey'](_0xe74e0);})['then'](function(_0xe60d5b){if(_0xe60d5b){return _0x1b70b1['status'](0xc8)[_0xeee4('0x21')]({'api_key':_0xe60d5b[_0xeee4('0x175')]});}else{return _0x1b70b1[_0xeee4('0x1f')](0xcc)[_0xeee4('0x21')]({'message':_0xeee4('0x176')});}})[_0xeee4('0x1e')](handleError(_0x1b70b1,0x193));}else{return _0x1b70b1[_0xeee4('0x1f')](0x191)['json']({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports['createApiKey']=function(_0xf2a5eb,_0x1209f4){if(!_[_0xeee4('0x66')](_0xf2a5eb[_0xeee4('0x29')]['id'])&&(_0xf2a5eb[_0xeee4('0x29')][_0xeee4('0x26')]=='admin'||_0xf2a5eb[_0xeee4('0x29')][_0xeee4('0x26')]==_0xeee4('0x29'))){return db['User']['find']({'where':{'id':_0xf2a5eb['params']['id']}})[_0xeee4('0x15')](function(_0x18f9e3){return authService[_0xeee4('0x177')](_0x18f9e3);})[_0xeee4('0x15')](function(_0x59f955){return db[_0xeee4('0x37')][_0xeee4('0x102')]({'apiKeyIat':_0x59f955['iat'],'apiKeyNonce':_0x59f955[_0xeee4('0x178')]},{'where':{'id':_0xf2a5eb[_0xeee4('0x5b')]['id']}})[_0xeee4('0x15')](function(){return _0x1209f4[_0xeee4('0x1f')](0xc8)[_0xeee4('0x21')]({'api_key':_0x59f955[_0xeee4('0x175')]});});})['catch'](handleError(_0x1209f4,0x193));}else{return _0x1209f4[_0xeee4('0x1f')](0x191)['json']({'message':_0xeee4('0x179')});}};exports[_0xeee4('0x17a')]=function(_0x3a73b4,_0x5aec48){if(!_[_0xeee4('0x66')](_0x3a73b4[_0xeee4('0x29')]['id'])&&(_0x3a73b4['user']['role']==_0xeee4('0x27')||_0x3a73b4['user']['role']==_0xeee4('0x29'))){return db[_0xeee4('0x37')][_0xeee4('0x30')]({'where':{'id':_0x3a73b4['params']['id']}})['then'](handleEntityNotFound(_0x5aec48,null))['then'](function(_0x2532ca){if(_0x2532ca&&_0x2532ca['apiKeyNonce']&&_0x2532ca[_0xeee4('0x17b')])return _0x2532ca;else throw{'message':_0xeee4('0x17c')};})[_0xeee4('0x15')](function(_0x5bab19){return db[_0xeee4('0x37')][_0xeee4('0x102')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x3a73b4[_0xeee4('0x5b')]['id']}});})[_0xeee4('0x15')](respondWithStatusCode(_0x5aec48,0xc8))[_0xeee4('0x1e')](handleError(_0x5aec48,0x193));}else{return _0x5aec48[_0xeee4('0x1f')](0x191)['json']({'message':_0xeee4('0x179')});}};exports[_0xeee4('0x17d')]=function(_0x32887a,_0x27dfd6){var _0x127c58=_0x32887a[_0xeee4('0x29')][_0xeee4('0xad')]({'plain':!![]});if(!_0x127c58){return _0x27dfd6[_0xeee4('0x1f')](0x191)[_0xeee4('0x35')]('Unable\x20to\x20retrieve\x20the\x20current\x20user');}else{return _0x27dfd6['status'](0xc8)[_0xeee4('0x21')](_0x127c58);}};exports[_0xeee4('0x17e')]=function(_0x1dd94c,_0x2fcdad){var _0x2272ec={'offset':0x0},_0x155c9a={'count':0x0,'rows':[]};Promise[_0xeee4('0x17f')]()['then'](function(){if(!_0x1dd94c[_0xeee4('0x40')][_0xeee4('0x3d')]&&!_0x1dd94c[_0xeee4('0x40')]['teams']&&!_0x1dd94c['query'][_0xeee4('0x180')])return[];return Promise['resolve']()[_0xeee4('0x15')](function(){var _0x4bde06=[];if(!_[_0xeee4('0x8d')](_0x1dd94c[_0xeee4('0x40')][_0xeee4('0x181')])){_0x4bde06[_0xeee4('0x44')](db[_0xeee4('0x117')][_0xeee4('0x45')]({'attributes':['id',_0xeee4('0x31')],'where':{'id':_0x1dd94c[_0xeee4('0x40')][_0xeee4('0x181')]}}));}if(!_[_0xeee4('0x8d')](_0x1dd94c[_0xeee4('0x40')][_0xeee4('0x180')])){_0x4bde06['push'](db['VoiceQueue'][_0xeee4('0x45')]({'attributes':['id',_0xeee4('0x31')],'type':_0xeee4('0x182'),'where':{'id':_0x1dd94c[_0xeee4('0x40')]['queues']}}));}return Promise[_0xeee4('0x50')](_0x4bde06);})[_0xeee4('0x15')](function(_0x3cf148){var _0xd33861=_[_0xeee4('0x121')](_0x3cf148)[_0xeee4('0x39')](function(_0x2805fb){return _0x2805fb[_0xeee4('0x12c')]({'attributes':['id',_0xeee4('0x31'),_0xeee4('0x60'),'online'],'raw':!![]});});return Promise[_0xeee4('0x50')](_0xd33861);})[_0xeee4('0x15')](function(_0x5dc535){var _0x328750=_[_0xeee4('0x121')](_0x5dc535);if(!_0x1dd94c['query'][_0xeee4('0x3d')])return _0x328750;if(_[_0xeee4('0x8d')](_0x328750)){return db[_0xeee4('0x37')][_0xeee4('0x45')]({'attributes':['id',_0xeee4('0x31'),_0xeee4('0x60'),_0xeee4('0xa0')],'where':{'role':'agent','$or':[db['sequelize'][_0xeee4('0x3f')](db[_0xeee4('0x69')]['fn'](_0xeee4('0x183'),db[_0xeee4('0x69')][_0xeee4('0x184')](_0xeee4('0x31'))),{'$like':'%'+_0x1dd94c[_0xeee4('0x40')][_0xeee4('0x3d')][_0xeee4('0xa5')]()+'%'}),{'internal':{'$like':'%'+_0x1dd94c['query'][_0xeee4('0x3d')]+'%'}}]},'raw':!![]});}else{return _(_0x328750)['flatten']()['filter'](function(_0x37ed28){return _0x37ed28[_0xeee4('0x31')][_0xeee4('0xa5')]()['includes'](_0x1dd94c['query']['filter'][_0xeee4('0xa5')]())||_0x37ed28['internal'][_0xeee4('0x185')]()['includes'](_0x1dd94c[_0xeee4('0x40')][_0xeee4('0x3d')]);})[_0xeee4('0x2e')]();}})[_0xeee4('0x15')](function(_0x41af7f){var _0xf0ef5f=_0xeee4('0x31');var _0x4bc21d=_0xeee4('0x186');if(_0x1dd94c[_0xeee4('0x40')][_0xeee4('0xd1')]){var _0x4bc21d=_0x1dd94c['query'][_0xeee4('0xd1')][0x0]==='-'?_0xeee4('0x187'):'asc';var _0xf0ef5f=_0x4bc21d===_0xeee4('0x186')?_0x1dd94c[_0xeee4('0x40')][_0xeee4('0xd1')]:_0x1dd94c[_0xeee4('0x40')][_0xeee4('0xd1')][_0xeee4('0x188')](0x1);}return _(_0x41af7f)[_0xeee4('0x189')]('id')['orderBy']([function(_0x770768){return _0xf0ef5f===_0xeee4('0x31')?_0x770768[_0xf0ef5f][_0xeee4('0xa5')]():_0x770768[_0xf0ef5f];}],[_0x4bc21d])[_0xeee4('0x39')](function(_0x15d4a0){return _['pick'](_0x15d4a0,['id','name',_0xeee4('0x60'),'online']);})[_0xeee4('0x2e')]();})[_0xeee4('0x15')](function(_0x163841){return client['request'](_0xeee4('0x2a'),_0x1dd94c)[_0xeee4('0x15')](function(_0x150026){if(_0x150026[_0xeee4('0x1a')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x397f24=_0x150026[_0xeee4('0x1d')];var _0x565380=jayson['client'][_0xeee4('0x13')]({'port':0x232c});return _0x565380['request']('Agents',_0x1dd94c)['then'](function(_0x212bc8){if(_0x212bc8['error'])throw new Error(_0xeee4('0x18a'));var _0x4e74ad=_0x212bc8[_0xeee4('0x1d')];return _[_0xeee4('0x58')]({},_0x4e74ad,_0x397f24);});})[_0xeee4('0x15')](function(_0xcaad1d){return _[_0xeee4('0x39')](_0x163841,function(_0x934c2b){var _0x10404f=_[_0xeee4('0x30')](_0xcaad1d[_0xeee4('0x49')],['id',_0x934c2b['id']]);if(!_0x10404f||!_0x934c2b[_0xeee4('0xa0')]){_0x934c2b[_0xeee4('0x1f')]=_0xeee4('0x18b');}else if(_0x10404f[_0xeee4('0xb1')]){_0x934c2b[_0xeee4('0x1f')]=_0xeee4('0x105');}else{_0x934c2b[_0xeee4('0x1f')]=_['includes']([_0xeee4('0x18c'),_0xeee4('0x18d'),_0xeee4('0x18e'),_0xeee4('0x18f'),null,undefined],_0x10404f[_0xeee4('0x190')])?'online':'busy';}return _0x934c2b;});});});})[_0xeee4('0x15')](function(_0x5a3df4){if(!_0x1dd94c[_0xeee4('0x40')][_0xeee4('0xd8')](_0xeee4('0xd9'))){_0x2272ec[_0xeee4('0x23')]=qs['limit'](_0x1dd94c[_0xeee4('0x40')][_0xeee4('0x23')]||0xa);_0x2272ec['offset']=qs[_0xeee4('0x22')](_0x1dd94c[_0xeee4('0x40')][_0xeee4('0x22')]);}_0x155c9a[_0xeee4('0x24')]=_0x5a3df4['length'];_0x155c9a[_0xeee4('0x49')]=_0x2272ec['limit']?_0x5a3df4[_0xeee4('0x191')](_0x2272ec[_0xeee4('0x22')],_0x2272ec[_0xeee4('0x22')]+_0x2272ec[_0xeee4('0x23')]):_0x5a3df4;return _0x155c9a;})[_0xeee4('0x15')](respondWithFilteredResult(_0x2fcdad,_0x2272ec))['catch'](handleError(_0x2fcdad,null));};function get_open_tabs(_0x366f9a,_0x3a6065){var _0x446c9f=_0x366f9a[_0xeee4('0x192')](0x0)[_0xeee4('0x193')]()+_0x366f9a[_0xeee4('0x191')](0x1);var _0x3c0ff7={'type':db['Sequelize'][_0xeee4('0x6a')]['SELECT'],'raw':!![]};return new BPromise(function(_0x5a7100,_0xae6935){var _0x3c0cf6=squel[_0xeee4('0x194')]()['field'](_0xeee4('0x195')+_0x446c9f+'InteractionId','id')[_0xeee4('0x196')](_0xeee4('0x197'))['from'](_0xeee4('0x198')+_0x366f9a+_0xeee4('0x199'),'ui')[_0xeee4('0x3f')](_0xeee4('0x19a'),_0x3a6065['id']);return db['sequelize'][_0xeee4('0x40')](_0x3c0cf6['toString'](),_0x3c0ff7)['then'](function(_0x267d4c){_0x3a6065[_0x446c9f+'OpenTabs']=_0x267d4c;_0x5a7100(_0x267d4c);})[_0xeee4('0x1e')](function(_0x178d01){_0xae6935(_0x178d01);});});};
\ No newline at end of file
index c304ebe..6cfda1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe23d=['hook','exports','events','../../mysqldb','User','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xe23d,0xc0));var _0xde23=function(_0x23a096,_0x3ccee2){_0x23a096=_0x23a096-0x0;var _0x4eb21f=_0xe23d[_0x23a096];return _0x4eb21f;};'use strict';var EventEmitter=require(_0xde23('0x0'));var User=require(_0xde23('0x1'))['db'][_0xde23('0x2')];var UserEvents=new EventEmitter();UserEvents[_0xde23('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xde23('0x4'),'afterDestroy':_0xde23('0x5')};function emitEvent(_0x3cc974){return function(_0x4d132d,_0x56dd5f,_0xcf6ff2){UserEvents['emit'](_0x3cc974+':'+_0x4d132d['id'],_0x4d132d);UserEvents[_0xde23('0x6')](_0x3cc974,_0x4d132d);_0xcf6ff2(null);};}for(var e in events){if(events[_0xde23('0x7')](e)){var event=events[e];User[_0xde23('0x8')](e,emitEvent(event));}}module[_0xde23('0x9')]=UserEvents;
\ No newline at end of file
+var _0xf7e2=['hasOwnProperty','hook','events','User','setMaxListeners','save','update','remove','emit'];(function(_0x30e33c,_0x2db57e){var _0x1ca401=function(_0x331fc5){while(--_0x331fc5){_0x30e33c['push'](_0x30e33c['shift']());}};_0x1ca401(++_0x2db57e);}(_0xf7e2,0xb6));var _0x2f7e=function(_0x2da1ef,_0x4c0fbd){_0x2da1ef=_0x2da1ef-0x0;var _0x5900a4=_0xf7e2[_0x2da1ef];return _0x5900a4;};'use strict';var EventEmitter=require(_0x2f7e('0x0'));var User=require('../../mysqldb')['db'][_0x2f7e('0x1')];var UserEvents=new EventEmitter();UserEvents[_0x2f7e('0x2')](0x0);var events={'afterCreate':_0x2f7e('0x3'),'afterUpdate':_0x2f7e('0x4'),'afterDestroy':_0x2f7e('0x5')};function emitEvent(_0x3440de){return function(_0x151bea,_0x442700,_0x582ff9){UserEvents[_0x2f7e('0x6')](_0x3440de+':'+_0x151bea['id'],_0x151bea);UserEvents[_0x2f7e('0x6')](_0x3440de,_0x151bea);_0x582ff9(null);};}for(var e in events){if(events[_0x2f7e('0x7')](e)){var event=events[e];User[_0x2f7e('0x8')](e,emitEvent(event));}}module['exports']=UserEvents;
\ No newline at end of file
index 11e7a40..b884964 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc82f=['base64','salt','sha1','toString','pbkdf2','makeSalt','md5secret',':asterisk:','util','lodash','./user.attributes','length','system','format','%s%s','prefix','merge','Set','CDR(type)=%s','chanspy','record','push','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','StopMixMonitor','wav','WAV','gsm','from-sip','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','VoiceChanSpy','findAll','then','internal','concat','catch','exports','models','define','users','utf8','userProfileId','resolve','UserProfile','privacyEnabled','updateMd5Password','changed','find','updatePassword','VoiceExtension','bulkCreate','destroy','context','encryptPassword','function','Missing\x20Callback','randomBytes'];(function(_0x1c5937,_0x2bbd17){var _0x3e53eb=function(_0x4e7c98){while(--_0x4e7c98){_0x1c5937['push'](_0x1c5937['shift']());}};_0x3e53eb(++_0x2bbd17);}(_0xc82f,0x170));var _0xfc82=function(_0x32fac4,_0x279b98){_0x32fac4=_0x32fac4-0x0;var _0x29920=_0xc82f[_0x32fac4];return _0x29920;};'use strict';var BPromise=require('bluebird');var crypto=require('crypto');var util=require(_0xfc82('0x0'));var md5=require('md5');var _=require(_0xfc82('0x1'));var attributes=require(_0xfc82('0x2'));var authTypes=['google'];var validatePresenceOf=function(_0x286fd8){return _0x286fd8&&_0x286fd8[_0xfc82('0x3')];};var getChanSpyApplications=function(_0x4cdfed,_0x32e688,_0x336093){var _0x474a3c={'context':_0x4cdfed['context']||'from-sip','type':_0xfc82('0x4'),'isApp':![],'UserId':_0x4cdfed['id']};var _0x5f14a6=[];for(var _0x3cc207=0x0,_0x43d8d7=0x1;_0x3cc207<_0x336093[_0xfc82('0x3')];_0x3cc207++,_0x43d8d7=0x1){var _0x2e7d90={'exten':util[_0xfc82('0x5')](_0xfc82('0x6'),_0x336093[_0x3cc207][_0xfc82('0x7')],_0x32e688),'ChanSpyId':_0x336093[_0x3cc207]['id']};_0x5f14a6['push'](_[_0xfc82('0x8')]({'app':_0xfc82('0x9'),'appdata':util['format'](_0xfc82('0xa'),_0xfc82('0xb')),'priority':_0x43d8d7++},_0x474a3c,_0x2e7d90));if(_0x336093[_0x3cc207][_0xfc82('0xc')]){_0x5f14a6[_0xfc82('0xd')](_['merge']({'app':_0xfc82('0xe'),'appdata':util['format'](_0xfc82('0xf'),_0x336093[_0x3cc207][_0xfc82('0x10')]),'priority':_0x43d8d7++},_0x474a3c,_0x2e7d90));}if(_0x336093[_0x3cc207][_0xfc82('0x11')]){_0x5f14a6[_0xfc82('0xd')](_[_0xfc82('0x8')]({'app':_0xfc82('0x12'),'appdata':_0x336093[_0x3cc207][_0xfc82('0x13')],'priority':_0x43d8d7++},_0x474a3c,_0x2e7d90));}_0x5f14a6[_0xfc82('0xd')](_[_0xfc82('0x8')]({'app':_0xfc82('0x14'),'appdata':util['format'](_0xfc82('0x15'),_0x4cdfed[_0xfc82('0x16')],_0x336093[_0x3cc207][_0xfc82('0x17')]?_0x336093[_0x3cc207][_0xfc82('0x17')]['join'](''):''),'priority':_0x43d8d7++},_0x474a3c,_0x2e7d90));if(_0x336093[_0x3cc207][_0xfc82('0xc')]){_0x5f14a6['push'](_[_0xfc82('0x8')]({'app':_0xfc82('0x18'),'priority':_0x43d8d7++},_0x474a3c,_0x2e7d90));}}return _0x5f14a6;};var getUserApplications=function(_0x31ef16,_0x1f920d){var _0x1745ba=[_0xfc82('0x19'),_0xfc82('0x1a'),_0xfc82('0x1b')];var _0x545bbb={'context':_0x31ef16['context']||_0xfc82('0x1c'),'exten':_0x1f920d,'type':_0xfc82('0x4'),'isApp':![],'UserId':_0x31ef16['id']};var _0x4c7933=[{'app':_0xfc82('0x9'),'appdata':_0xfc82('0x1d')}];if(_0x31ef16[_0xfc82('0x1e')]&&_['includes'](_0x1745ba,_0x31ef16[_0xfc82('0x1e')])){_0x4c7933['push']({'app':_0xfc82('0x9'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x4c7933[_0xfc82('0xd')]({'app':'Set','appdata':util[_0xfc82('0x5')](_0xfc82('0x1f'),_0x31ef16['extensionMonitor'])});_0x4c7933['push']({'app':_0xfc82('0x20'),'appdata':util[_0xfc82('0x5')](_0xfc82('0x21'),_0x31ef16[_0xfc82('0x16')])});}else{_0x4c7933['push']({'app':_0xfc82('0x20'),'appdata':util[_0xfc82('0x5')](_0xfc82('0x22'),_0x31ef16[_0xfc82('0x16')])});}_0x4c7933['push']({'app':_0xfc82('0x23')});for(var _0x376ee9=0x0;_0x376ee9<_0x4c7933['length'];_0x376ee9++){_0x4c7933[_0x376ee9][_0xfc82('0x24')]=_0x376ee9+0x1;_0x4c7933[_0x376ee9]=_['defaults'](_0x4c7933[_0x376ee9],_0x545bbb);}return _0x4c7933;};var getChanSpyPromise=function(_0x3fb00c,_0xb5e6a7){return new BPromise(function(_0x4b2a63,_0x5849d1){return _0x3fb00c[_0xfc82('0x25')][_0xfc82('0x26')]()[_0xfc82('0x27')](function(_0x3ae8a8){if(_0x3ae8a8){var _0x40b394=getChanSpyApplications(_0xb5e6a7,_0xb5e6a7[_0xfc82('0x28')],_0x3ae8a8);if(_0xb5e6a7[_0xfc82('0x28')]!=_0xb5e6a7[_0xfc82('0x16')]){_0x40b394=_0x40b394[_0xfc82('0x29')](getChanSpyApplications(_0xb5e6a7,_0xb5e6a7[_0xfc82('0x16')],_0x3ae8a8));}return _0x4b2a63(_0x40b394);}return _0x4b2a63([]);})[_0xfc82('0x2a')](function(_0x31dcbe){_0x5849d1(_0x31dcbe);});});};module[_0xfc82('0x2b')]=function(_0x48c558,_0xdf9ded){var _0x2f4128=_0x48c558[_0xfc82('0x2c')];return _0x48c558[_0xfc82('0x2d')]('User',attributes,{'tableName':_0xfc82('0x2e'),'charset':_0xfc82('0x2f'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0xf0f3da,_0x387329,_0x52a501){var _0x9740b7=typeof _0xf0f3da[_0xfc82('0x30')]==='undefined'?BPromise[_0xfc82('0x31')](null):_0x2f4128[_0xfc82('0x32')]['find']({'where':{'id':_0xf0f3da[_0xfc82('0x30')]}});_0x9740b7['then'](function(_0x25d40c){if(_0x25d40c){_0xf0f3da[_0xfc82('0x33')]=_0x25d40c[_0xfc82('0x33')];}})[_0xfc82('0x27')](function(){_0xf0f3da[_0xfc82('0x34')]();_0xf0f3da['updatePassword'](_0x52a501);})['catch'](function(_0x16538f){_0x52a501(_0x16538f);});},'beforeUpdate':function(_0x3936d1,_0x414770,_0x1f574e){Promise[_0xfc82('0x31')]()[_0xfc82('0x27')](function(){if(_0x3936d1[_0xfc82('0x35')](_0xfc82('0x30'))===![])return;return _0x2f4128['UserProfile'][_0xfc82('0x36')]({'where':{'id':_0x3936d1[_0xfc82('0x30')]}})[_0xfc82('0x27')](function(_0x40cac3){if(_0x40cac3)_0x3936d1['privacyEnabled']=_0x40cac3[_0xfc82('0x33')];return;});})[_0xfc82('0x27')](function(){if(_0x3936d1['changed']('password')){_0x3936d1[_0xfc82('0x34')]();return _0x3936d1[_0xfc82('0x37')](_0x1f574e);}_0x1f574e();})[_0xfc82('0x2a')](function(_0x7895f7){_0x1f574e(_0x7895f7);});},'afterCreate':function(_0x27e843,_0x49aa4d,_0x2ee131){var _0x27b847=getUserApplications(_0x27e843,_0x27e843[_0xfc82('0x28')]);if(_0x27e843[_0xfc82('0x28')]!=_0x27e843[_0xfc82('0x16')]){_0x27b847=_0x27b847[_0xfc82('0x29')](getUserApplications(_0x27e843,_0x27e843[_0xfc82('0x16')]));}return _0x2f4128[_0xfc82('0x38')][_0xfc82('0x39')](_0x27b847)[_0xfc82('0x27')](function(){if(_0x27e843[_0xfc82('0xb')]){return getChanSpyPromise(_0x2f4128,_0x27e843);}})['then'](function(_0x59f3bd){if(_0x59f3bd&&_0x59f3bd[_0xfc82('0x3')]){return _0x2f4128['VoiceExtension'][_0xfc82('0x39')](_0x59f3bd);}})[_0xfc82('0x27')](function(){_0x2ee131();})[_0xfc82('0x2a')](function(_0x874f5e){_0x2ee131(_0x874f5e);});},'afterUpdate':function(_0x64f4f1,_0x3aba5e,_0x22298d){return BPromise[_0xfc82('0x31')]()[_0xfc82('0x27')](function(){if(_0x64f4f1[_0xfc82('0x35')](_0xfc82('0xb'))||_0x64f4f1[_0xfc82('0x35')]('context')){return _0x2f4128[_0xfc82('0x38')][_0xfc82('0x3a')]({'where':{'UserId':_0x64f4f1['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0xfc82('0x27')](function(){if(_0x64f4f1[_0xfc82('0xb')]){return getChanSpyPromise(_0x2f4128,_0x64f4f1)[_0xfc82('0x27')](function(_0x926134){if(_0x926134&&_0x926134['length']){return _0x2f4128[_0xfc82('0x38')][_0xfc82('0x39')](_0x926134);}});}});}})[_0xfc82('0x27')](function(){if(_0x64f4f1[_0xfc82('0x35')](_0xfc82('0x1e'))||_0x64f4f1[_0xfc82('0x35')](_0xfc82('0x3b'))){return _0x2f4128[_0xfc82('0x38')]['destroy']({'where':{'UserId':_0x64f4f1['id'],'type':_0xfc82('0x4'),'ChanSpyId':null}})[_0xfc82('0x27')](function(){var _0x25b580=getUserApplications(_0x64f4f1,_0x64f4f1[_0xfc82('0x28')]);if(_0x64f4f1[_0xfc82('0x28')]!=_0x64f4f1[_0xfc82('0x16')]){_0x25b580=_0x25b580[_0xfc82('0x29')](getUserApplications(_0x64f4f1,_0x64f4f1[_0xfc82('0x16')]));}return _0x2f4128[_0xfc82('0x38')][_0xfc82('0x39')](_0x25b580);});}})[_0xfc82('0x27')](function(){_0x22298d();})[_0xfc82('0x2a')](function(_0xe88e9c){_0x22298d(_0xe88e9c);});},'afterDestroy':function(_0x2af6a9,_0x235c72){return _0x2f4128['VoiceExtension']['destroy']({'where':{'UserId':_0x2af6a9['id'],'type':_0xfc82('0x4')}});}},'instanceMethods':{'authenticate':function(_0x369d28,_0x5e42bc){if(!_0x5e42bc){return this[_0xfc82('0x13')]===this[_0xfc82('0x3c')](_0x369d28);}var _0x25f1b7=this;this[_0xfc82('0x3c')](_0x369d28,function(_0x595938,_0x2905fb){if(_0x595938){_0x5e42bc(_0x595938);}if(_0x25f1b7['password']===_0x2905fb){_0x5e42bc(null,!![]);}else{_0x5e42bc(null,![]);}});},'makeSalt':function(_0x2eae0d,_0x1430fb){var _0x25b119=0x10;if(typeof arguments[0x0]===_0xfc82('0x3d')){_0x1430fb=arguments[0x0];_0x2eae0d=_0x25b119;}else if(typeof arguments[0x1]==='function'){_0x1430fb=arguments[0x1];}else{throw new Error(_0xfc82('0x3e'));}if(!_0x2eae0d){_0x2eae0d=_0x25b119;}return crypto[_0xfc82('0x3f')](_0x2eae0d,function(_0x59f55d,_0x29f051){if(_0x59f55d){_0x1430fb(_0x59f55d);}return _0x1430fb(null,_0x29f051['toString'](_0xfc82('0x40')));});},'encryptPassword':function(_0x277720,_0x231b88){if(!_0x277720||!this['salt']){return _0x231b88?_0x231b88(null):null;}var _0x384084=0x2710;var _0x23b8fa=0x40;var _0xd95860=new Buffer(this[_0xfc82('0x41')],'base64');if(!_0x231b88){return crypto['pbkdf2Sync'](_0x277720,_0xd95860,_0x384084,_0x23b8fa,_0xfc82('0x42'))[_0xfc82('0x43')](_0xfc82('0x40'));}return crypto[_0xfc82('0x44')](_0x277720,_0xd95860,_0x384084,_0x23b8fa,_0xfc82('0x42'),function(_0x3a6d87,_0x261f46){if(_0x3a6d87){_0x231b88(_0x3a6d87);}return _0x231b88(null,_0x261f46[_0xfc82('0x43')]('base64'));});},'updatePassword':function(_0x96d5e0){if(!this['password']){return _0x96d5e0(null);}if(!validatePresenceOf(this['password'])&&authTypes['indexOf'](this['provider'])===-0x1){_0x96d5e0(new Error('Invalid\x20password'));}var _0xd3dd05=this;this[_0xfc82('0x45')](function(_0x5803d,_0x29bb38){if(_0x5803d){return _0x96d5e0(_0x5803d);}_0xd3dd05['salt']=_0x29bb38;_0xd3dd05['encryptPassword'](_0xd3dd05[_0xfc82('0x13')],function(_0x46c1c7,_0x49c6ce){if(_0x46c1c7){_0x96d5e0(_0x46c1c7);}_0xd3dd05[_0xfc82('0x13')]=_0x49c6ce;_0x96d5e0(null);});});},'updateMd5Password':function(){this[_0xfc82('0x46')]=md5(this[_0xfc82('0x16')]+_0xfc82('0x47')+this['password']);return this[_0xfc82('0x46')];}}});};
\ No newline at end of file
+var _0x0293=['Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2','sha1','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','bluebird','crypto','util','lodash','./user.attributes','context','from-sip','system','length','format','%s%s','push','Set','record','merge','MixMonitor','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','options','join','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name','Dial','SIP/%s,,tTxX','priority','defaults','findAll','then','internal','models','define','utf8','utf8_bin','userProfileId','undefined','resolve','UserProfile','find','privacyEnabled','updateMd5Password','changed','updatePassword','catch','concat','VoiceExtension','chanspy','destroy','bulkCreate','encryptPassword','function'];(function(_0x47edc1,_0x382cc4){var _0x4534c9=function(_0x19e449){while(--_0x19e449){_0x47edc1['push'](_0x47edc1['shift']());}};_0x4534c9(++_0x382cc4);}(_0x0293,0xa2));var _0x3029=function(_0x135f56,_0xd16754){_0x135f56=_0x135f56-0x0;var _0x2f073b=_0x0293[_0x135f56];return _0x2f073b;};'use strict';var BPromise=require(_0x3029('0x0'));var crypto=require(_0x3029('0x1'));var util=require(_0x3029('0x2'));var md5=require('md5');var _=require(_0x3029('0x3'));var attributes=require(_0x3029('0x4'));var authTypes=['google'];var validatePresenceOf=function(_0x4068fd){return _0x4068fd&&_0x4068fd['length'];};var getChanSpyApplications=function(_0x2921dd,_0x409423,_0x449249){var _0x5c1f79={'context':_0x2921dd[_0x3029('0x5')]||_0x3029('0x6'),'type':_0x3029('0x7'),'isApp':![],'UserId':_0x2921dd['id']};var _0x4238c8=[];for(var _0x462998=0x0,_0x24aba6=0x1;_0x462998<_0x449249[_0x3029('0x8')];_0x462998++,_0x24aba6=0x1){var _0x1f5d4b={'exten':util[_0x3029('0x9')](_0x3029('0xa'),_0x449249[_0x462998]['prefix'],_0x409423),'ChanSpyId':_0x449249[_0x462998]['id']};_0x4238c8[_0x3029('0xb')](_['merge']({'app':_0x3029('0xc'),'appdata':util[_0x3029('0x9')]('CDR(type)=%s','chanspy'),'priority':_0x24aba6++},_0x5c1f79,_0x1f5d4b));if(_0x449249[_0x462998][_0x3029('0xd')]){_0x4238c8[_0x3029('0xb')](_[_0x3029('0xe')]({'app':_0x3029('0xf'),'appdata':util['format']('${UNIQUEID}.%s,a',_0x449249[_0x462998][_0x3029('0x10')]),'priority':_0x24aba6++},_0x5c1f79,_0x1f5d4b));}if(_0x449249[_0x462998][_0x3029('0x11')]){_0x4238c8[_0x3029('0xb')](_['merge']({'app':_0x3029('0x12'),'appdata':_0x449249[_0x462998][_0x3029('0x13')],'priority':_0x24aba6++},_0x5c1f79,_0x1f5d4b));}_0x4238c8[_0x3029('0xb')](_[_0x3029('0xe')]({'app':_0x3029('0x14'),'appdata':util['format'](_0x3029('0x15'),_0x2921dd['name'],_0x449249[_0x462998][_0x3029('0x16')]?_0x449249[_0x462998][_0x3029('0x16')][_0x3029('0x17')](''):''),'priority':_0x24aba6++},_0x5c1f79,_0x1f5d4b));if(_0x449249[_0x462998]['record']){_0x4238c8[_0x3029('0xb')](_['merge']({'app':_0x3029('0x18'),'priority':_0x24aba6++},_0x5c1f79,_0x1f5d4b));}}return _0x4238c8;};var getUserApplications=function(_0x104549,_0x1feade){var _0x474ce8=[_0x3029('0x19'),_0x3029('0x1a'),_0x3029('0x1b')];var _0x402679={'context':_0x104549['context']||_0x3029('0x6'),'exten':_0x1feade,'type':'system','isApp':![],'UserId':_0x104549['id']};var _0x2237b3=[{'app':_0x3029('0xc'),'appdata':_0x3029('0x1c')}];if(_0x104549[_0x3029('0x1d')]&&_[_0x3029('0x1e')](_0x474ce8,_0x104549[_0x3029('0x1d')])){_0x2237b3['push']({'app':'Set','appdata':_0x3029('0x1f')});_0x2237b3[_0x3029('0xb')]({'app':_0x3029('0xc'),'appdata':util[_0x3029('0x9')](_0x3029('0x20'),_0x104549['extensionMonitor'])});_0x2237b3[_0x3029('0xb')]({'app':'Dial','appdata':util[_0x3029('0x9')](_0x3029('0x21'),_0x104549[_0x3029('0x22')])});}else{_0x2237b3[_0x3029('0xb')]({'app':_0x3029('0x23'),'appdata':util['format'](_0x3029('0x24'),_0x104549['name'])});}_0x2237b3[_0x3029('0xb')]({'app':'Hangup'});for(var _0x21ea98=0x0;_0x21ea98<_0x2237b3[_0x3029('0x8')];_0x21ea98++){_0x2237b3[_0x21ea98][_0x3029('0x25')]=_0x21ea98+0x1;_0x2237b3[_0x21ea98]=_[_0x3029('0x26')](_0x2237b3[_0x21ea98],_0x402679);}return _0x2237b3;};var getChanSpyPromise=function(_0x23df03,_0x2eff2a){return new BPromise(function(_0x3ed4af,_0x4cbe56){return _0x23df03['VoiceChanSpy'][_0x3029('0x27')]()[_0x3029('0x28')](function(_0x9dc978){if(_0x9dc978){var _0x22d8af=getChanSpyApplications(_0x2eff2a,_0x2eff2a[_0x3029('0x29')],_0x9dc978);if(_0x2eff2a[_0x3029('0x29')]!=_0x2eff2a['name']){_0x22d8af=_0x22d8af['concat'](getChanSpyApplications(_0x2eff2a,_0x2eff2a[_0x3029('0x22')],_0x9dc978));}return _0x3ed4af(_0x22d8af);}return _0x3ed4af([]);})['catch'](function(_0x5353cb){_0x4cbe56(_0x5353cb);});});};module['exports']=function(_0x2a2a57,_0x1de91c){var _0x28174b=_0x2a2a57[_0x3029('0x2a')];return _0x2a2a57[_0x3029('0x2b')]('User',attributes,{'tableName':'users','charset':_0x3029('0x2c'),'collate':_0x3029('0x2d'),'hooks':{'beforeCreate':function(_0x2122e1,_0x39bf8c,_0x99e495){var _0x535dd7=typeof _0x2122e1[_0x3029('0x2e')]===_0x3029('0x2f')?BPromise[_0x3029('0x30')](null):_0x28174b[_0x3029('0x31')][_0x3029('0x32')]({'where':{'id':_0x2122e1[_0x3029('0x2e')]}});_0x535dd7[_0x3029('0x28')](function(_0x25c754){if(_0x25c754){_0x2122e1['privacyEnabled']=_0x25c754[_0x3029('0x33')];}})['then'](function(){_0x2122e1[_0x3029('0x34')]();_0x2122e1['updatePassword'](_0x99e495);})['catch'](function(_0x40a5ec){_0x99e495(_0x40a5ec);});},'beforeUpdate':function(_0x13261f,_0x3006fd,_0x3d0566){Promise[_0x3029('0x30')]()['then'](function(){if(_0x13261f[_0x3029('0x35')](_0x3029('0x2e'))===![])return;return _0x28174b['UserProfile'][_0x3029('0x32')]({'where':{'id':_0x13261f[_0x3029('0x2e')]}})['then'](function(_0x290a7a){if(_0x290a7a)_0x13261f[_0x3029('0x33')]=_0x290a7a[_0x3029('0x33')];return;});})[_0x3029('0x28')](function(){if(_0x13261f[_0x3029('0x35')](_0x3029('0x13'))){_0x13261f['updateMd5Password']();return _0x13261f[_0x3029('0x36')](_0x3d0566);}_0x3d0566();})[_0x3029('0x37')](function(_0x44621a){_0x3d0566(_0x44621a);});},'afterCreate':function(_0x5b3630,_0x3c0fa0,_0xa3ffeb){var _0x44bde2=getUserApplications(_0x5b3630,_0x5b3630[_0x3029('0x29')]);if(_0x5b3630[_0x3029('0x29')]!=_0x5b3630[_0x3029('0x22')]){_0x44bde2=_0x44bde2[_0x3029('0x38')](getUserApplications(_0x5b3630,_0x5b3630['name']));}return _0x28174b[_0x3029('0x39')]['bulkCreate'](_0x44bde2)[_0x3029('0x28')](function(){if(_0x5b3630['chanspy']){return getChanSpyPromise(_0x28174b,_0x5b3630);}})[_0x3029('0x28')](function(_0x1a4a53){if(_0x1a4a53&&_0x1a4a53[_0x3029('0x8')]){return _0x28174b[_0x3029('0x39')]['bulkCreate'](_0x1a4a53);}})[_0x3029('0x28')](function(){_0xa3ffeb();})['catch'](function(_0xae6412){_0xa3ffeb(_0xae6412);});},'afterUpdate':function(_0x5149cc,_0x2df51f,_0x2df4e0){return BPromise['resolve']()['then'](function(){if(_0x5149cc['changed'](_0x3029('0x3a'))||_0x5149cc[_0x3029('0x35')](_0x3029('0x5'))){return _0x28174b[_0x3029('0x39')][_0x3029('0x3b')]({'where':{'UserId':_0x5149cc['id'],'type':_0x3029('0x7'),'ChanSpyId':{'$ne':null}}})[_0x3029('0x28')](function(){if(_0x5149cc[_0x3029('0x3a')]){return getChanSpyPromise(_0x28174b,_0x5149cc)[_0x3029('0x28')](function(_0x15564c){if(_0x15564c&&_0x15564c[_0x3029('0x8')]){return _0x28174b[_0x3029('0x39')][_0x3029('0x3c')](_0x15564c);}});}});}})[_0x3029('0x28')](function(){if(_0x5149cc[_0x3029('0x35')](_0x3029('0x1d'))||_0x5149cc[_0x3029('0x35')](_0x3029('0x5'))){return _0x28174b[_0x3029('0x39')][_0x3029('0x3b')]({'where':{'UserId':_0x5149cc['id'],'type':_0x3029('0x7'),'ChanSpyId':null}})[_0x3029('0x28')](function(){var _0x52b311=getUserApplications(_0x5149cc,_0x5149cc[_0x3029('0x29')]);if(_0x5149cc[_0x3029('0x29')]!=_0x5149cc['name']){_0x52b311=_0x52b311['concat'](getUserApplications(_0x5149cc,_0x5149cc[_0x3029('0x22')]));}return _0x28174b['VoiceExtension']['bulkCreate'](_0x52b311);});}})[_0x3029('0x28')](function(){_0x2df4e0();})[_0x3029('0x37')](function(_0x1cfd28){_0x2df4e0(_0x1cfd28);});},'afterDestroy':function(_0x2bc47b,_0x66234b){return _0x28174b[_0x3029('0x39')][_0x3029('0x3b')]({'where':{'UserId':_0x2bc47b['id'],'type':_0x3029('0x7')}});}},'instanceMethods':{'authenticate':function(_0x5759ee,_0x511640){if(!_0x511640){return this[_0x3029('0x13')]===this[_0x3029('0x3d')](_0x5759ee);}var _0x4b3613=this;this['encryptPassword'](_0x5759ee,function(_0x18d1e5,_0x194cba){if(_0x18d1e5){_0x511640(_0x18d1e5);}if(_0x4b3613[_0x3029('0x13')]===_0x194cba){_0x511640(null,!![]);}else{_0x511640(null,![]);}});},'makeSalt':function(_0x1bc3a5,_0x1c6338){var _0x34ad03=0x10;if(typeof arguments[0x0]===_0x3029('0x3e')){_0x1c6338=arguments[0x0];_0x1bc3a5=_0x34ad03;}else if(typeof arguments[0x1]==='function'){_0x1c6338=arguments[0x1];}else{throw new Error(_0x3029('0x3f'));}if(!_0x1bc3a5){_0x1bc3a5=_0x34ad03;}return crypto[_0x3029('0x40')](_0x1bc3a5,function(_0x5d3117,_0x29c683){if(_0x5d3117){_0x1c6338(_0x5d3117);}return _0x1c6338(null,_0x29c683[_0x3029('0x41')](_0x3029('0x42')));});},'encryptPassword':function(_0xe8f181,_0x271468){if(!_0xe8f181||!this[_0x3029('0x43')]){return _0x271468?_0x271468(null):null;}var _0x5635be=0x2710;var _0x442203=0x40;var _0x4087eb=new Buffer(this[_0x3029('0x43')],_0x3029('0x42'));if(!_0x271468){return crypto['pbkdf2Sync'](_0xe8f181,_0x4087eb,_0x5635be,_0x442203,'sha1')['toString']('base64');}return crypto[_0x3029('0x44')](_0xe8f181,_0x4087eb,_0x5635be,_0x442203,_0x3029('0x45'),function(_0x4aff10,_0x4dc787){if(_0x4aff10){_0x271468(_0x4aff10);}return _0x271468(null,_0x4dc787[_0x3029('0x41')]('base64'));});},'updatePassword':function(_0x2d03de){if(!this['password']){return _0x2d03de(null);}if(!validatePresenceOf(this[_0x3029('0x13')])&&authTypes['indexOf'](this[_0x3029('0x46')])===-0x1){_0x2d03de(new Error(_0x3029('0x47')));}var _0x4f3b95=this;this[_0x3029('0x48')](function(_0x51f6e3,_0x4d3574){if(_0x51f6e3){return _0x2d03de(_0x51f6e3);}_0x4f3b95[_0x3029('0x43')]=_0x4d3574;_0x4f3b95[_0x3029('0x3d')](_0x4f3b95['password'],function(_0x4f0204,_0x5e6b45){if(_0x4f0204){_0x2d03de(_0x4f0204);}_0x4f3b95[_0x3029('0x13')]=_0x5e6b45;_0x2d03de(null);});});},'updateMd5Password':function(){this[_0x3029('0x49')]=md5(this[_0x3029('0x22')]+_0x3029('0x4a')+this['password']);return this['md5secret'];}}});};
\ No newline at end of file
index 84540dd..ef322a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c34=['upsert','UserVoiceQueue.penalty','merge','LOGIN','LOGININPAUSE','concat','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./user.socket','register','then','info','User,\x20%s,\x20%s','debug','User,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','User','findAll','options','raw','attributes','limit','include','model','map','GetUser','catch','find','ShowUser','PauseUser','where','name','role','internal','interface','MemberReport','PAUSE','length','format','updateAttributes','getChannels','forEach','push','SIP/%s','YYYY-MM-DD\x20HH:mm:ss','type','DEFAULT\x20PAUSE','body','bulkCreate','update','UnpauseUser','findOne','isValidChannel','channel','Unknown\x20channel','system','mail','chat','sms','Pause','UserVoiceQueueRt','LogoutUser','destroy','all','LoginUser','mobile','loginInPause','count','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues'];(function(_0x51ec61,_0xf9d1e3){var _0x223200=function(_0x3bd510){while(--_0x3bd510){_0x51ec61['push'](_0x51ec61['shift']());}};_0x223200(++_0xf9d1e3);}(_0x1c34,0x111));var _0x41c3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1c34[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x41c3('0x0'));var moment=require(_0x41c3('0x1'));var BPromise=require(_0x41c3('0x2'));var rs=require(_0x41c3('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x41c3('0x4'))['db'];var utils=require(_0x41c3('0x5'));var logger=require(_0x41c3('0x6'))(_0x41c3('0x7'));var config=require(_0x41c3('0x8'));var jayson=require(_0x41c3('0x9'));var client=jayson['client'][_0x41c3('0xa')]({'port':0x232a});config[_0x41c3('0xb')]=_[_0x41c3('0xc')](config[_0x41c3('0xb')],{'host':_0x41c3('0xd'),'port':0x18eb});var socket=require(_0x41c3('0xe'))(new Redis(config[_0x41c3('0xb')]));require(_0x41c3('0xf'))[_0x41c3('0x10')](socket);function respondWithRpcPromise(_0x255abd,_0x348dd2,_0x396d31){return new BPromise(function(_0x4832fe,_0x5cbfac){return client['request'](_0x255abd,_0x396d31)[_0x41c3('0x11')](function(_0x313c25){logger[_0x41c3('0x12')](_0x41c3('0x13'),_0x348dd2,'request\x20sent');logger[_0x41c3('0x14')](_0x41c3('0x15'),_0x348dd2,_0x41c3('0x16'),JSON[_0x41c3('0x17')](_0x313c25));if(_0x313c25[_0x41c3('0x18')]){if(_0x313c25[_0x41c3('0x18')]['code']===0x1f4){logger[_0x41c3('0x18')]('User,\x20%s,\x20%s',_0x348dd2,_0x313c25[_0x41c3('0x18')]['message']);return _0x5cbfac(_0x313c25[_0x41c3('0x18')][_0x41c3('0x19')]);}logger[_0x41c3('0x18')](_0x41c3('0x13'),_0x348dd2,_0x313c25['error'][_0x41c3('0x19')]);return _0x4832fe(_0x313c25['error'][_0x41c3('0x19')]);}else{logger[_0x41c3('0x12')](_0x41c3('0x13'),_0x348dd2,_0x41c3('0x16'));_0x4832fe(_0x313c25[_0x41c3('0x1a')][_0x41c3('0x19')]);}})['catch'](function(_0xc5816){logger[_0x41c3('0x18')](_0x41c3('0x13'),_0x348dd2,_0xc5816);_0x5cbfac(_0xc5816);});});}exports['GetUser']=function(_0x3a235d){var _0x1b087b=this;return new Promise(function(_0x3e04bf,_0x17e3cb){return db[_0x41c3('0x1b')][_0x41c3('0x1c')]({'raw':_0x3a235d['options']?_0x3a235d[_0x41c3('0x1d')][_0x41c3('0x1e')]===undefined?!![]:![]:!![],'where':_0x3a235d['options']?_0x3a235d[_0x41c3('0x1d')]['where']||null:null,'attributes':_0x3a235d[_0x41c3('0x1d')]?_0x3a235d['options'][_0x41c3('0x1f')]||null:null,'limit':_0x3a235d[_0x41c3('0x1d')]?_0x3a235d['options'][_0x41c3('0x20')]||null:null,'include':_0x3a235d['options']?_0x3a235d[_0x41c3('0x1d')][_0x41c3('0x21')]?_['map'](_0x3a235d[_0x41c3('0x1d')][_0x41c3('0x21')],function(_0x1c5816){return{'model':db[_0x1c5816[_0x41c3('0x22')]],'as':_0x1c5816['as'],'attributes':_0x1c5816[_0x41c3('0x1f')],'include':_0x1c5816[_0x41c3('0x21')]?_[_0x41c3('0x23')](_0x1c5816[_0x41c3('0x21')],function(_0x484a78){return{'model':db[_0x484a78[_0x41c3('0x22')]],'as':_0x484a78['as'],'attributes':_0x484a78[_0x41c3('0x1f')],'include':_0x484a78[_0x41c3('0x21')]?_[_0x41c3('0x23')](_0x484a78['include'],function(_0x460216){return{'model':db[_0x460216[_0x41c3('0x22')]],'as':_0x460216['as'],'attributes':_0x460216[_0x41c3('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x41c3('0x11')](function(_0x459830){logger[_0x41c3('0x12')](_0x41c3('0x24'),_0x3a235d);logger[_0x41c3('0x14')](_0x41c3('0x24'),_0x3a235d,JSON['stringify'](_0x459830));_0x3e04bf(_0x459830);})[_0x41c3('0x25')](function(_0x2f08c5){logger[_0x41c3('0x18')]('GetUser',_0x2f08c5[_0x41c3('0x19')],_0x3a235d);_0x17e3cb(_0x1b087b[_0x41c3('0x18')](0x1f4,_0x2f08c5['message']));});});};exports['ShowUser']=function(_0x535fec){var _0x470d7f=this;return new Promise(function(_0x2c18a7,_0xf72ad3){return db[_0x41c3('0x1b')][_0x41c3('0x26')]({'raw':_0x535fec[_0x41c3('0x1d')]?_0x535fec[_0x41c3('0x1d')][_0x41c3('0x1e')]===undefined?!![]:![]:!![],'where':_0x535fec[_0x41c3('0x1d')]?_0x535fec[_0x41c3('0x1d')]['where']||null:null,'attributes':_0x535fec[_0x41c3('0x1d')]?_0x535fec[_0x41c3('0x1d')][_0x41c3('0x1f')]||null:null,'include':_0x535fec[_0x41c3('0x1d')]?_0x535fec[_0x41c3('0x1d')][_0x41c3('0x21')]?_[_0x41c3('0x23')](_0x535fec[_0x41c3('0x1d')][_0x41c3('0x21')],function(_0x4a1315){return{'model':db[_0x4a1315[_0x41c3('0x22')]],'as':_0x4a1315['as'],'attributes':_0x4a1315['attributes'],'include':_0x4a1315[_0x41c3('0x21')]?_[_0x41c3('0x23')](_0x4a1315[_0x41c3('0x21')],function(_0x5b86ea){return{'model':db[_0x5b86ea[_0x41c3('0x22')]],'as':_0x5b86ea['as'],'attributes':_0x5b86ea['attributes'],'include':_0x5b86ea[_0x41c3('0x21')]?_['map'](_0x5b86ea[_0x41c3('0x21')],function(_0x289f9d){return{'model':db[_0x289f9d[_0x41c3('0x22')]],'as':_0x289f9d['as'],'attributes':_0x289f9d[_0x41c3('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xaebb62){logger[_0x41c3('0x12')](_0x41c3('0x27'),_0x535fec);logger['debug'](_0x41c3('0x27'),_0x535fec,JSON[_0x41c3('0x17')](_0xaebb62));_0x2c18a7(_0xaebb62);})[_0x41c3('0x25')](function(_0x4289ea){logger[_0x41c3('0x18')](_0x41c3('0x27'),_0x4289ea[_0x41c3('0x19')],_0x535fec);_0xf72ad3(_0x470d7f[_0x41c3('0x18')](0x1f4,_0x4289ea[_0x41c3('0x19')]));});});};exports[_0x41c3('0x28')]=function(_0x49dcba){var _0x14b66e=this;return new Promise(function(_0x1429a0,_0x58d1fd){var _0x1b7c0d;return db['User']['find']({'where':_0x49dcba[_0x41c3('0x1d')][_0x41c3('0x29')]||{},'attributes':['id',_0x41c3('0x2a'),_0x41c3('0x2b'),_0x41c3('0x2c'),_0x41c3('0x2d')]})[_0x41c3('0x11')](function(_0x1a79d8){if(_0x1a79d8){_0x1b7c0d=_0x1a79d8;return db['UserVoiceQueueRt']['update']({'paused':0x1},{'where':{'UserId':_0x1b7c0d['id']},'individualHooks':!![]});}})[_0x41c3('0x11')](function(){if(_0x1b7c0d){return db[_0x41c3('0x2e')]['findAll']({'where':{'membername':_0x1b7c0d[_0x41c3('0x2a')],'type':_0x41c3('0x2f'),'exitAt':null}});}})[_0x41c3('0x11')](function(_0x1632e1){if(_0x1b7c0d){if(_0x1632e1&&_0x1632e1[_0x41c3('0x30')]){var _0x291a5b=moment()[_0x41c3('0x31')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x16169c=0x0,_0x3edcec=_0x1632e1[_0x41c3('0x30')];_0x16169c<_0x3edcec;_0x16169c++){_0x1632e1[_0x16169c][_0x41c3('0x32')]({'exitAt':_0x291a5b});}}}})[_0x41c3('0x11')](function(){if(_0x1b7c0d){var _0x3d17f8=[];var _0x92386f=utils[_0x41c3('0x33')]();_0x92386f[_0x41c3('0x34')](function(_0x5bfca5){_0x3d17f8[_0x41c3('0x35')]({'channel':_0x5bfca5,'membername':_0x1b7c0d[_0x41c3('0x2a')],'interface':_['isNil'](_0x1b7c0d[_0x41c3('0x2d')])?util['format'](_0x41c3('0x36'),_0x1b7c0d[_0x41c3('0x2a')]):_0x1b7c0d[_0x41c3('0x2d')],'type':_0x41c3('0x2f'),'enterAt':moment()['format'](_0x41c3('0x37')),'data1':_0x49dcba['body'][_0x41c3('0x38')]||_0x41c3('0x39'),'role':_0x1b7c0d[_0x41c3('0x2b')],'internal':_0x1b7c0d[_0x41c3('0x2c')],'uniqueid':_0x49dcba[_0x41c3('0x3a')]['uniqueid']||null});});return db[_0x41c3('0x2e')][_0x41c3('0x3b')](_0x3d17f8,{'individualHooks':!![]});}})[_0x41c3('0x11')](function(){if(_0x1b7c0d){return _0x1b7c0d[_0x41c3('0x3c')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x49dcba[_0x41c3('0x3a')][_0x41c3('0x38')]||_0x41c3('0x39'),'lastPauseAt':moment()[_0x41c3('0x31')](_0x41c3('0x37'))});}})[_0x41c3('0x11')](function(_0x1e3d04){_0x1429a0(_0x1e3d04);})[_0x41c3('0x25')](function(_0x229b75){_0x58d1fd(_0x14b66e[_0x41c3('0x18')](0x1f4,_0x229b75['message']));});});};exports[_0x41c3('0x3d')]=function(_0x17de2d){var _0x50aff7=this;return new Promise(function(_0x28f4c5,_0x52ccde){var _0x1484e9;return db[_0x41c3('0x1b')][_0x41c3('0x3e')]({'where':_0x17de2d[_0x41c3('0x1d')][_0x41c3('0x29')]||{},'attributes':['id','name']})[_0x41c3('0x11')](function(_0x449d47){if(_0x449d47){_0x1484e9=_0x449d47;if(_0x17de2d[_0x41c3('0x3a')]['channel']&&!utils[_0x41c3('0x3f')](_0x17de2d['body'][_0x41c3('0x40')])){throw new Error(_0x41c3('0x41'));}switch(_0x17de2d['body'][_0x41c3('0x40')]){case'voice':return db['UserVoiceQueueRt'][_0x41c3('0x3c')]({'paused':0x0},{'where':{'UserId':_0x1484e9['id']}})[_0x41c3('0x11')](function(){return db['MemberReport'][_0x41c3('0x26')]({'where':{'channel':_0x17de2d[_0x41c3('0x3a')]['channel'],'membername':_0x1484e9['name'],'type':'PAUSE','exitAt':null}});})['then'](function(_0x4a0601){if(_0x4a0601){return _0x4a0601[_0x41c3('0x3c')]({'exitAt':moment()[_0x41c3('0x31')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x41c3('0x42')},{'individualHooks':!![]});}return null;})[_0x41c3('0x11')](function(){return _0x1484e9[_0x41c3('0x3c')]({'voicePause':![]});});case _0x41c3('0x43'):case _0x41c3('0x44'):case'fax':case _0x41c3('0x45'):case'openchannel':case'whatsapp':return db['MemberReport']['find']({'where':{'channel':_0x17de2d[_0x41c3('0x3a')]['channel'],'membername':_0x1484e9[_0x41c3('0x2a')],'type':_0x41c3('0x2f'),'exitAt':null}})[_0x41c3('0x11')](function(_0x4c1422){return _0x4c1422['update']({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':'system'},{'individualHooks':!![]});})['then'](function(){var _0x22aaa3={};_['set'](_0x22aaa3,util['format']('%s%s',_0x17de2d[_0x41c3('0x3a')][_0x41c3('0x40')],_0x41c3('0x46')),![]);return _0x1484e9[_0x41c3('0x3c')](_0x22aaa3);});default:return db[_0x41c3('0x47')][_0x41c3('0x3c')]({'paused':0x0},{'where':{'UserId':_0x1484e9['id']}})[_0x41c3('0x11')](function(){return db[_0x41c3('0x2e')][_0x41c3('0x1c')]({'where':{'membername':_0x1484e9[_0x41c3('0x2a')],'type':_0x41c3('0x2f'),'exitAt':null}});})['then'](function(_0xe141a7){var _0x17130e=[];_0xe141a7[_0x41c3('0x34')](function(_0x1b74df){_0x17130e[_0x41c3('0x35')](_0x1b74df[_0x41c3('0x3c')]({'exitAt':moment()[_0x41c3('0x31')](_0x41c3('0x37')),'data2':_0x41c3('0x42')}));});return BPromise['all'](_0x17130e);})[_0x41c3('0x11')](function(){return _0x1484e9[_0x41c3('0x3c')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0x41c3('0x11')](function(_0x5c1caf){_0x28f4c5(_0x5c1caf);})['catch'](function(_0x4dabac){_0x52ccde(_0x50aff7[_0x41c3('0x18')](0x1f4,_0x4dabac['message']));});});};exports[_0x41c3('0x48')]=function(_0x14c1e4){var _0x260a8d=this;return new Promise(function(_0xa2ab43,_0x6c936e){var _0x1a1efd;return db[_0x41c3('0x1b')][_0x41c3('0x3e')]({'where':_0x14c1e4['options'][_0x41c3('0x29')]||{},'attributes':['id','name']})[_0x41c3('0x11')](function(_0x2d76e6){if(_0x2d76e6){_0x1a1efd=_0x2d76e6;return db[_0x41c3('0x47')][_0x41c3('0x49')]({'where':{'membername':_0x1a1efd[_0x41c3('0x2a')]},'individualHooks':!![]});}})[_0x41c3('0x11')](function(){if(_0x1a1efd){return db[_0x41c3('0x2e')]['findAll']({'where':{'membername':_0x1a1efd[_0x41c3('0x2a')],'exitAt':null}});}})[_0x41c3('0x11')](function(_0x5c4b78){if(_0x1a1efd){if(_0x5c4b78&&_0x5c4b78[_0x41c3('0x30')]){var _0x56de77=[];_0x5c4b78['forEach'](function(_0x41a895){_0x56de77[_0x41c3('0x35')](_0x41a895[_0x41c3('0x3c')]({'exitAt':moment()[_0x41c3('0x31')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x41c3('0x4a')](_0x56de77);}}})['then'](function(){if(_0x1a1efd){return _0x1a1efd['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x41c3('0x11')](function(_0x5b138a){_0xa2ab43(_0x5b138a);})[_0x41c3('0x25')](function(_0x5c2411){_0x6c936e(_0x260a8d[_0x41c3('0x18')](0x1f4,_0x5c2411[_0x41c3('0x19')]));});});};exports[_0x41c3('0x4b')]=function(_0x167137){var _0x51f3eb=this;return new Promise(function(_0x4c91df,_0x574133){var _0x1fe09f;var _0x5da3a2;var _0x52e2ea;var _0x12ec33;return db[_0x41c3('0x1b')]['findOne']({'where':_0x167137['options'][_0x41c3('0x29')]||{},'attributes':['id',_0x41c3('0x2a'),'role',_0x41c3('0x4c'),'phone',_0x41c3('0x2c'),_0x41c3('0x4d'),_0x41c3('0x2d')]})[_0x41c3('0x11')](function(_0x23cca5){if(_0x23cca5){_0x1fe09f=_0x23cca5;_0x12ec33=_0x167137[_0x41c3('0x3a')][_0x41c3('0x2d')]?_0x167137[_0x41c3('0x3a')]['interface']:util[_0x41c3('0x31')](_0x41c3('0x36'),_0x1fe09f[_0x41c3('0x2a')]);return db[_0x41c3('0x1b')][_0x41c3('0x4e')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x1fe09f['id']}}});}})[_0x41c3('0x11')](function(_0x18b870){if(_0x18b870){_0x52e2ea=_0x18b870;return require('../../config/license/util')[_0x41c3('0x4f')]();}})[_0x41c3('0x11')](function(_0x26b79f){if(_0x26b79f&&_0x26b79f[_0x41c3('0x50')]&&_0x52e2ea>=_0x26b79f['agents']){throw new Error(_0x41c3('0x51'));}})['then'](function(){if(_0x1fe09f){return db[_0x41c3('0x47')][_0x41c3('0x49')]({'where':{'membername':_0x1fe09f[_0x41c3('0x2a')]},'individualHooks':!![]});}})['then'](function(){if(_0x1fe09f){return _0x1fe09f[_0x41c3('0x52')]({'raw':!![]});}})[_0x41c3('0x11')](function(_0x4b76bf){if(_0x1fe09f){if(_0x4b76bf){var _0x158f41=[];_0x5da3a2=_0x4b76bf;if(_0x5da3a2[_0x41c3('0x30')]){for(var _0x49111c=0x0;_0x49111c<_0x5da3a2[_0x41c3('0x30')];_0x49111c++){_0x158f41[_0x41c3('0x35')](db[_0x41c3('0x47')][_0x41c3('0x53')]({'membername':_0x1fe09f[_0x41c3('0x2a')],'UserId':_0x1fe09f['id'],'queue_name':_0x5da3a2[_0x49111c]['name'],'VoiceQueueId':_0x5da3a2[_0x49111c]['id'],'interface':_0x12ec33,'paused':_0x1fe09f[_0x41c3('0x4d')]||![],'penalty':_0x5da3a2[_0x49111c][_0x41c3('0x54')]||0x0}));}return BPromise['all'](_0x158f41);}}}})[_0x41c3('0x11')](function(){if(_0x1fe09f){return db[_0x41c3('0x2e')][_0x41c3('0x1c')]({'where':{'membername':_0x1fe09f[_0x41c3('0x2a')],'exitAt':null}});}})[_0x41c3('0x11')](function(_0x3f7a9b){if(_0x1fe09f){if(_0x3f7a9b&&_0x3f7a9b[_0x41c3('0x30')]){var _0x4e4cb5=[];_0x3f7a9b[_0x41c3('0x34')](function(_0x1a095a){_0x4e4cb5[_0x41c3('0x35')](_0x1a095a['update']({'exitAt':moment()[_0x41c3('0x31')](_0x41c3('0x37'))}));});return BPromise[_0x41c3('0x4a')](_0x4e4cb5);}}})[_0x41c3('0x11')](function(_0x5bc5f0){if(_0x1fe09f){var _0x5ed176=[];var _0x1075e4=[];var _0x1670a4=utils[_0x41c3('0x33')]();var _0x5df856={'membername':_0x1fe09f['name'],'interface':_0x12ec33,'enterAt':moment()[_0x41c3('0x31')](_0x41c3('0x37')),'role':_0x1fe09f[_0x41c3('0x2b')],'internal':_0x1fe09f['internal']};_0x1670a4[_0x41c3('0x34')](function(_0x134d4a){_0x5ed176[_0x41c3('0x35')](_[_0x41c3('0x55')]({'channel':_0x134d4a,'type':_0x41c3('0x56'),'data1':'callysquare','data2':_0x12ec33},_0x5df856));if(_0x1fe09f[_0x41c3('0x4d')]){_0x1075e4[_0x41c3('0x35')](_[_0x41c3('0x55')]({'channel':_0x134d4a,'type':_0x41c3('0x2f'),'data1':_0x41c3('0x57')},_0x5df856));}});return db[_0x41c3('0x2e')][_0x41c3('0x3b')](_0x5ed176[_0x41c3('0x58')](_0x1075e4),{'individualHooks':!![]});}})[_0x41c3('0x11')](function(){if(_0x1fe09f){return _0x1fe09f[_0x41c3('0x3c')]({'online':!![],'lastLoginAt':moment()[_0x41c3('0x31')](_0x41c3('0x37')),'voicePause':_0x1fe09f[_0x41c3('0x4d')]||![],'mailPause':_0x1fe09f[_0x41c3('0x4d')]||![],'chatPause':_0x1fe09f[_0x41c3('0x4d')]||![],'faxPause':_0x1fe09f[_0x41c3('0x4d')]||![],'smsPause':_0x1fe09f[_0x41c3('0x4d')]||![],'openchannelPause':_0x1fe09f[_0x41c3('0x4d')]||![],'pauseType':_0x1fe09f[_0x41c3('0x4d')]?_0x41c3('0x57'):null,'lastPauseAt':moment()[_0x41c3('0x31')]('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x12ec33});}})[_0x41c3('0x11')](function(_0x4cf4c8){_0x4c91df(_0x4cf4c8);})[_0x41c3('0x25')](function(_0xc26efd){_0x574133(_0x51f3eb[_0x41c3('0x18')](0x1f4,_0xc26efd['message']));});});};
\ No newline at end of file
+var _0xe671=['phone','loginInPause','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','UserVoiceQueue.penalty','getChannels','merge','callysquare','LOGININPAUSE','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','client','http','redis','localhost','socket.io-emitter','register','request','then','User,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','GetUser','User','findAll','options','raw','where','attributes','include','map','model','debug','ShowUser','find','PauseUser','name','role','interface','UserVoiceQueueRt','update','MemberReport','PAUSE','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','forEach','push','isNil','SIP/%s','body','internal','uniqueid','bulkCreate','type','DEFAULT\x20PAUSE','UnpauseUser','channel','isValidChannel','Unknown\x20channel','voice','system','chat','sms','openchannel','whatsapp','set','%s%s','Pause','all','LogoutUser','destroy','mobile'];(function(_0x5e89ea,_0x32a1b3){var _0x436346=function(_0x2147de){while(--_0x2147de){_0x5e89ea['push'](_0x5e89ea['shift']());}};_0x436346(++_0x32a1b3);}(_0xe671,0xc2));var _0x1e67=function(_0x498572,_0x15e239){_0x498572=_0x498572-0x0;var _0x355386=_0xe671[_0x498572];return _0x355386;};'use strict';var _=require(_0x1e67('0x0'));var util=require(_0x1e67('0x1'));var moment=require(_0x1e67('0x2'));var BPromise=require(_0x1e67('0x3'));var rs=require(_0x1e67('0x4'));var fs=require('fs');var Redis=require(_0x1e67('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x1e67('0x6'));var logger=require('../../config/logger')(_0x1e67('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x1e67('0x8')][_0x1e67('0x9')]({'port':0x232a});config[_0x1e67('0xa')]=_['defaults'](config[_0x1e67('0xa')],{'host':_0x1e67('0xb'),'port':0x18eb});var socket=require(_0x1e67('0xc'))(new Redis(config[_0x1e67('0xa')]));require('./user.socket')[_0x1e67('0xd')](socket);function respondWithRpcPromise(_0x26dfa6,_0x866fa6,_0x44fe6b){return new BPromise(function(_0x47d224,_0x48e2c7){return client[_0x1e67('0xe')](_0x26dfa6,_0x44fe6b)[_0x1e67('0xf')](function(_0x102bce){logger['info'](_0x1e67('0x10'),_0x866fa6,_0x1e67('0x11'));logger['debug']('User,\x20%s,\x20%s,\x20%s',_0x866fa6,_0x1e67('0x11'),JSON[_0x1e67('0x12')](_0x102bce));if(_0x102bce[_0x1e67('0x13')]){if(_0x102bce[_0x1e67('0x13')][_0x1e67('0x14')]===0x1f4){logger[_0x1e67('0x13')]('User,\x20%s,\x20%s',_0x866fa6,_0x102bce[_0x1e67('0x13')][_0x1e67('0x15')]);return _0x48e2c7(_0x102bce[_0x1e67('0x13')][_0x1e67('0x15')]);}logger['error'](_0x1e67('0x10'),_0x866fa6,_0x102bce[_0x1e67('0x13')][_0x1e67('0x15')]);return _0x47d224(_0x102bce[_0x1e67('0x13')]['message']);}else{logger[_0x1e67('0x16')](_0x1e67('0x10'),_0x866fa6,'request\x20sent');_0x47d224(_0x102bce['result'][_0x1e67('0x15')]);}})[_0x1e67('0x17')](function(_0x4753da){logger[_0x1e67('0x13')](_0x1e67('0x10'),_0x866fa6,_0x4753da);_0x48e2c7(_0x4753da);});});}exports[_0x1e67('0x18')]=function(_0x54f592){var _0x1112c2=this;return new Promise(function(_0x1c9176,_0x1e2c07){return db[_0x1e67('0x19')][_0x1e67('0x1a')]({'raw':_0x54f592[_0x1e67('0x1b')]?_0x54f592[_0x1e67('0x1b')][_0x1e67('0x1c')]===undefined?!![]:![]:!![],'where':_0x54f592['options']?_0x54f592['options'][_0x1e67('0x1d')]||null:null,'attributes':_0x54f592[_0x1e67('0x1b')]?_0x54f592['options'][_0x1e67('0x1e')]||null:null,'limit':_0x54f592[_0x1e67('0x1b')]?_0x54f592['options']['limit']||null:null,'include':_0x54f592[_0x1e67('0x1b')]?_0x54f592['options'][_0x1e67('0x1f')]?_[_0x1e67('0x20')](_0x54f592['options'][_0x1e67('0x1f')],function(_0x3f7d78){return{'model':db[_0x3f7d78['model']],'as':_0x3f7d78['as'],'attributes':_0x3f7d78['attributes'],'include':_0x3f7d78['include']?_[_0x1e67('0x20')](_0x3f7d78[_0x1e67('0x1f')],function(_0x4a00cc){return{'model':db[_0x4a00cc[_0x1e67('0x21')]],'as':_0x4a00cc['as'],'attributes':_0x4a00cc['attributes'],'include':_0x4a00cc[_0x1e67('0x1f')]?_[_0x1e67('0x20')](_0x4a00cc['include'],function(_0x33ff95){return{'model':db[_0x33ff95[_0x1e67('0x21')]],'as':_0x33ff95['as'],'attributes':_0x33ff95[_0x1e67('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x1e67('0xf')](function(_0x19be09){logger[_0x1e67('0x16')](_0x1e67('0x18'),_0x54f592);logger[_0x1e67('0x22')]('GetUser',_0x54f592,JSON[_0x1e67('0x12')](_0x19be09));_0x1c9176(_0x19be09);})[_0x1e67('0x17')](function(_0x341058){logger['error'](_0x1e67('0x18'),_0x341058[_0x1e67('0x15')],_0x54f592);_0x1e2c07(_0x1112c2[_0x1e67('0x13')](0x1f4,_0x341058[_0x1e67('0x15')]));});});};exports[_0x1e67('0x23')]=function(_0xe2d058){var _0x174cc1=this;return new Promise(function(_0x47193c,_0x310648){return db['User'][_0x1e67('0x24')]({'raw':_0xe2d058[_0x1e67('0x1b')]?_0xe2d058[_0x1e67('0x1b')][_0x1e67('0x1c')]===undefined?!![]:![]:!![],'where':_0xe2d058['options']?_0xe2d058[_0x1e67('0x1b')]['where']||null:null,'attributes':_0xe2d058[_0x1e67('0x1b')]?_0xe2d058[_0x1e67('0x1b')][_0x1e67('0x1e')]||null:null,'include':_0xe2d058['options']?_0xe2d058[_0x1e67('0x1b')]['include']?_[_0x1e67('0x20')](_0xe2d058[_0x1e67('0x1b')][_0x1e67('0x1f')],function(_0x4b6b2e){return{'model':db[_0x4b6b2e[_0x1e67('0x21')]],'as':_0x4b6b2e['as'],'attributes':_0x4b6b2e[_0x1e67('0x1e')],'include':_0x4b6b2e['include']?_[_0x1e67('0x20')](_0x4b6b2e[_0x1e67('0x1f')],function(_0x1ab27c){return{'model':db[_0x1ab27c[_0x1e67('0x21')]],'as':_0x1ab27c['as'],'attributes':_0x1ab27c['attributes'],'include':_0x1ab27c[_0x1e67('0x1f')]?_[_0x1e67('0x20')](_0x1ab27c[_0x1e67('0x1f')],function(_0x8a0caa){return{'model':db[_0x8a0caa['model']],'as':_0x8a0caa['as'],'attributes':_0x8a0caa['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2f322e){logger['info']('ShowUser',_0xe2d058);logger[_0x1e67('0x22')](_0x1e67('0x23'),_0xe2d058,JSON['stringify'](_0x2f322e));_0x47193c(_0x2f322e);})[_0x1e67('0x17')](function(_0x1bdb68){logger[_0x1e67('0x13')](_0x1e67('0x23'),_0x1bdb68[_0x1e67('0x15')],_0xe2d058);_0x310648(_0x174cc1[_0x1e67('0x13')](0x1f4,_0x1bdb68['message']));});});};exports[_0x1e67('0x25')]=function(_0x2c7f29){var _0x1bf9f8=this;return new Promise(function(_0x27dc4d,_0x366d66){var _0x1477e4;return db[_0x1e67('0x19')]['find']({'where':_0x2c7f29[_0x1e67('0x1b')][_0x1e67('0x1d')]||{},'attributes':['id',_0x1e67('0x26'),_0x1e67('0x27'),'internal',_0x1e67('0x28')]})[_0x1e67('0xf')](function(_0x4b8740){if(_0x4b8740){_0x1477e4=_0x4b8740;return db[_0x1e67('0x29')][_0x1e67('0x2a')]({'paused':0x1},{'where':{'UserId':_0x1477e4['id']},'individualHooks':!![]});}})[_0x1e67('0xf')](function(){if(_0x1477e4){return db[_0x1e67('0x2b')][_0x1e67('0x1a')]({'where':{'membername':_0x1477e4['name'],'type':_0x1e67('0x2c'),'exitAt':null}});}})[_0x1e67('0xf')](function(_0x25f0e2){if(_0x1477e4){if(_0x25f0e2&&_0x25f0e2[_0x1e67('0x2d')]){var _0x216219=moment()[_0x1e67('0x2e')](_0x1e67('0x2f'));for(var _0x2e4bd4=0x0,_0x986a73=_0x25f0e2[_0x1e67('0x2d')];_0x2e4bd4<_0x986a73;_0x2e4bd4++){_0x25f0e2[_0x2e4bd4][_0x1e67('0x30')]({'exitAt':_0x216219});}}}})[_0x1e67('0xf')](function(){if(_0x1477e4){var _0x3dd580=[];var _0x41d9fd=utils['getChannels']();_0x41d9fd[_0x1e67('0x31')](function(_0x5b9982){_0x3dd580[_0x1e67('0x32')]({'channel':_0x5b9982,'membername':_0x1477e4[_0x1e67('0x26')],'interface':_[_0x1e67('0x33')](_0x1477e4[_0x1e67('0x28')])?util[_0x1e67('0x2e')](_0x1e67('0x34'),_0x1477e4['name']):_0x1477e4[_0x1e67('0x28')],'type':_0x1e67('0x2c'),'enterAt':moment()[_0x1e67('0x2e')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x2c7f29[_0x1e67('0x35')]['type']||'DEFAULT\x20PAUSE','role':_0x1477e4['role'],'internal':_0x1477e4[_0x1e67('0x36')],'uniqueid':_0x2c7f29[_0x1e67('0x35')][_0x1e67('0x37')]||null});});return db[_0x1e67('0x2b')][_0x1e67('0x38')](_0x3dd580,{'individualHooks':!![]});}})[_0x1e67('0xf')](function(){if(_0x1477e4){return _0x1477e4[_0x1e67('0x2a')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x2c7f29[_0x1e67('0x35')][_0x1e67('0x39')]||_0x1e67('0x3a'),'lastPauseAt':moment()[_0x1e67('0x2e')](_0x1e67('0x2f'))});}})[_0x1e67('0xf')](function(_0x2a4bee){_0x27dc4d(_0x2a4bee);})[_0x1e67('0x17')](function(_0x4f1d4d){_0x366d66(_0x1bf9f8[_0x1e67('0x13')](0x1f4,_0x4f1d4d[_0x1e67('0x15')]));});});};exports[_0x1e67('0x3b')]=function(_0x17de18){var _0x1dbdce=this;return new Promise(function(_0x335d27,_0x34fea7){var _0x46cac8;return db[_0x1e67('0x19')]['findOne']({'where':_0x17de18[_0x1e67('0x1b')][_0x1e67('0x1d')]||{},'attributes':['id',_0x1e67('0x26')]})[_0x1e67('0xf')](function(_0x37d6fc){if(_0x37d6fc){_0x46cac8=_0x37d6fc;if(_0x17de18[_0x1e67('0x35')][_0x1e67('0x3c')]&&!utils[_0x1e67('0x3d')](_0x17de18[_0x1e67('0x35')][_0x1e67('0x3c')])){throw new Error(_0x1e67('0x3e'));}switch(_0x17de18['body'][_0x1e67('0x3c')]){case _0x1e67('0x3f'):return db[_0x1e67('0x29')]['update']({'paused':0x0},{'where':{'UserId':_0x46cac8['id']}})['then'](function(){return db['MemberReport'][_0x1e67('0x24')]({'where':{'channel':_0x17de18[_0x1e67('0x35')][_0x1e67('0x3c')],'membername':_0x46cac8[_0x1e67('0x26')],'type':_0x1e67('0x2c'),'exitAt':null}});})[_0x1e67('0xf')](function(_0x53b451){if(_0x53b451){return _0x53b451[_0x1e67('0x2a')]({'exitAt':moment()[_0x1e67('0x2e')](_0x1e67('0x2f')),'data2':_0x1e67('0x40')},{'individualHooks':!![]});}return null;})[_0x1e67('0xf')](function(){return _0x46cac8[_0x1e67('0x2a')]({'voicePause':![]});});case'mail':case _0x1e67('0x41'):case'fax':case _0x1e67('0x42'):case _0x1e67('0x43'):case _0x1e67('0x44'):return db['MemberReport'][_0x1e67('0x24')]({'where':{'channel':_0x17de18['body'][_0x1e67('0x3c')],'membername':_0x46cac8[_0x1e67('0x26')],'type':_0x1e67('0x2c'),'exitAt':null}})['then'](function(_0x56770b){return _0x56770b[_0x1e67('0x2a')]({'exitAt':moment()[_0x1e67('0x2e')](_0x1e67('0x2f')),'data2':_0x1e67('0x40')},{'individualHooks':!![]});})[_0x1e67('0xf')](function(){var _0x44994e={};_[_0x1e67('0x45')](_0x44994e,util[_0x1e67('0x2e')](_0x1e67('0x46'),_0x17de18['body'][_0x1e67('0x3c')],_0x1e67('0x47')),![]);return _0x46cac8[_0x1e67('0x2a')](_0x44994e);});default:return db[_0x1e67('0x29')][_0x1e67('0x2a')]({'paused':0x0},{'where':{'UserId':_0x46cac8['id']}})[_0x1e67('0xf')](function(){return db[_0x1e67('0x2b')]['findAll']({'where':{'membername':_0x46cac8[_0x1e67('0x26')],'type':_0x1e67('0x2c'),'exitAt':null}});})[_0x1e67('0xf')](function(_0x47ba5e){var _0x15c4d9=[];_0x47ba5e[_0x1e67('0x31')](function(_0x225929){_0x15c4d9[_0x1e67('0x32')](_0x225929[_0x1e67('0x2a')]({'exitAt':moment()[_0x1e67('0x2e')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x1e67('0x40')}));});return BPromise[_0x1e67('0x48')](_0x15c4d9);})[_0x1e67('0xf')](function(){return _0x46cac8['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0x1e67('0xf')](function(_0x3e44b2){_0x335d27(_0x3e44b2);})[_0x1e67('0x17')](function(_0x1d1a1a){_0x34fea7(_0x1dbdce['error'](0x1f4,_0x1d1a1a[_0x1e67('0x15')]));});});};exports[_0x1e67('0x49')]=function(_0x130527){var _0x205b67=this;return new Promise(function(_0x246e61,_0x55e8f8){var _0x4b196c;return db[_0x1e67('0x19')]['findOne']({'where':_0x130527[_0x1e67('0x1b')][_0x1e67('0x1d')]||{},'attributes':['id',_0x1e67('0x26')]})[_0x1e67('0xf')](function(_0x1b145d){if(_0x1b145d){_0x4b196c=_0x1b145d;return db[_0x1e67('0x29')][_0x1e67('0x4a')]({'where':{'membername':_0x4b196c[_0x1e67('0x26')]},'individualHooks':!![]});}})[_0x1e67('0xf')](function(){if(_0x4b196c){return db[_0x1e67('0x2b')][_0x1e67('0x1a')]({'where':{'membername':_0x4b196c[_0x1e67('0x26')],'exitAt':null}});}})[_0x1e67('0xf')](function(_0x542289){if(_0x4b196c){if(_0x542289&&_0x542289['length']){var _0x1831d8=[];_0x542289['forEach'](function(_0x1b9c2d){_0x1831d8['push'](_0x1b9c2d[_0x1e67('0x2a')]({'exitAt':moment()['format'](_0x1e67('0x2f'))}));});return BPromise[_0x1e67('0x48')](_0x1831d8);}}})[_0x1e67('0xf')](function(){if(_0x4b196c){return _0x4b196c[_0x1e67('0x2a')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x1e67('0xf')](function(_0x469706){_0x246e61(_0x469706);})[_0x1e67('0x17')](function(_0x1ed990){_0x55e8f8(_0x205b67['error'](0x1f4,_0x1ed990[_0x1e67('0x15')]));});});};exports['LoginUser']=function(_0x2de80a){var _0x18435c=this;return new Promise(function(_0x3c2e93,_0x5b1125){var _0x8c6dd0;var _0x1af026;var _0x5eebe2;var _0x104b9a;return db[_0x1e67('0x19')]['findOne']({'where':_0x2de80a[_0x1e67('0x1b')][_0x1e67('0x1d')]||{},'attributes':['id','name',_0x1e67('0x27'),_0x1e67('0x4b'),_0x1e67('0x4c'),_0x1e67('0x36'),_0x1e67('0x4d'),'interface']})[_0x1e67('0xf')](function(_0x31d98e){if(_0x31d98e){_0x8c6dd0=_0x31d98e;_0x104b9a=_0x2de80a[_0x1e67('0x35')][_0x1e67('0x28')]?_0x2de80a[_0x1e67('0x35')]['interface']:util[_0x1e67('0x2e')](_0x1e67('0x34'),_0x8c6dd0['name']);return db[_0x1e67('0x19')]['count']({'where':{'role':_0x1e67('0x4e'),'online':!![],'id':{'$ne':_0x8c6dd0['id']}}});}})[_0x1e67('0xf')](function(_0x56fc2f){if(_0x56fc2f){_0x5eebe2=_0x56fc2f;return require(_0x1e67('0x4f'))[_0x1e67('0x50')]();}})[_0x1e67('0xf')](function(_0x3b83b0){if(_0x3b83b0&&_0x3b83b0[_0x1e67('0x51')]&&_0x5eebe2>=_0x3b83b0[_0x1e67('0x51')]){throw new Error(_0x1e67('0x52'));}})[_0x1e67('0xf')](function(){if(_0x8c6dd0){return db['UserVoiceQueueRt'][_0x1e67('0x4a')]({'where':{'membername':_0x8c6dd0[_0x1e67('0x26')]},'individualHooks':!![]});}})[_0x1e67('0xf')](function(){if(_0x8c6dd0){return _0x8c6dd0[_0x1e67('0x53')]({'raw':!![]});}})[_0x1e67('0xf')](function(_0x12fc35){if(_0x8c6dd0){if(_0x12fc35){var _0x3d0850=[];_0x1af026=_0x12fc35;if(_0x1af026[_0x1e67('0x2d')]){for(var _0x2d2476=0x0;_0x2d2476<_0x1af026[_0x1e67('0x2d')];_0x2d2476++){_0x3d0850[_0x1e67('0x32')](db[_0x1e67('0x29')][_0x1e67('0x54')]({'membername':_0x8c6dd0[_0x1e67('0x26')],'UserId':_0x8c6dd0['id'],'queue_name':_0x1af026[_0x2d2476]['name'],'VoiceQueueId':_0x1af026[_0x2d2476]['id'],'interface':_0x104b9a,'paused':_0x8c6dd0[_0x1e67('0x4d')]||![],'penalty':_0x1af026[_0x2d2476][_0x1e67('0x55')]||0x0}));}return BPromise[_0x1e67('0x48')](_0x3d0850);}}}})[_0x1e67('0xf')](function(){if(_0x8c6dd0){return db[_0x1e67('0x2b')][_0x1e67('0x1a')]({'where':{'membername':_0x8c6dd0[_0x1e67('0x26')],'exitAt':null}});}})[_0x1e67('0xf')](function(_0x274492){if(_0x8c6dd0){if(_0x274492&&_0x274492[_0x1e67('0x2d')]){var _0x308a3f=[];_0x274492[_0x1e67('0x31')](function(_0x25e28d){_0x308a3f[_0x1e67('0x32')](_0x25e28d[_0x1e67('0x2a')]({'exitAt':moment()[_0x1e67('0x2e')](_0x1e67('0x2f'))}));});return BPromise['all'](_0x308a3f);}}})[_0x1e67('0xf')](function(_0x1ac9e1){if(_0x8c6dd0){var _0x5b76e6=[];var _0x2a7793=[];var _0x15acbf=utils[_0x1e67('0x56')]();var _0x1ac6b0={'membername':_0x8c6dd0['name'],'interface':_0x104b9a,'enterAt':moment()[_0x1e67('0x2e')](_0x1e67('0x2f')),'role':_0x8c6dd0[_0x1e67('0x27')],'internal':_0x8c6dd0[_0x1e67('0x36')]};_0x15acbf[_0x1e67('0x31')](function(_0x501565){_0x5b76e6['push'](_[_0x1e67('0x57')]({'channel':_0x501565,'type':'LOGIN','data1':_0x1e67('0x58'),'data2':_0x104b9a},_0x1ac6b0));if(_0x8c6dd0[_0x1e67('0x4d')]){_0x2a7793['push'](_[_0x1e67('0x57')]({'channel':_0x501565,'type':_0x1e67('0x2c'),'data1':_0x1e67('0x59')},_0x1ac6b0));}});return db[_0x1e67('0x2b')][_0x1e67('0x38')](_0x5b76e6['concat'](_0x2a7793),{'individualHooks':!![]});}})[_0x1e67('0xf')](function(){if(_0x8c6dd0){return _0x8c6dd0[_0x1e67('0x2a')]({'online':!![],'lastLoginAt':moment()[_0x1e67('0x2e')](_0x1e67('0x2f')),'voicePause':_0x8c6dd0[_0x1e67('0x4d')]||![],'mailPause':_0x8c6dd0['loginInPause']||![],'chatPause':_0x8c6dd0[_0x1e67('0x4d')]||![],'faxPause':_0x8c6dd0[_0x1e67('0x4d')]||![],'smsPause':_0x8c6dd0[_0x1e67('0x4d')]||![],'openchannelPause':_0x8c6dd0['loginInPause']||![],'pauseType':_0x8c6dd0[_0x1e67('0x4d')]?_0x1e67('0x59'):null,'lastPauseAt':moment()[_0x1e67('0x2e')](_0x1e67('0x2f')),'interface':_0x104b9a});}})['then'](function(_0x33063a){_0x3c2e93(_0x33063a);})[_0x1e67('0x17')](function(_0x99dcf2){_0x5b1125(_0x18435c[_0x1e67('0x13')](0x1f4,_0x99dcf2[_0x1e67('0x15')]));});});};
\ No newline at end of file
index 93f6477..01ff2e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ad3=['update','emit','removeListener','length','./user.events','save','remove'];(function(_0x58b339,_0x6ff331){var _0x4c409a=function(_0x126cf1){while(--_0x126cf1){_0x58b339['push'](_0x58b339['shift']());}};_0x4c409a(++_0x6ff331);}(_0x8ad3,0x185));var _0x38ad=function(_0x16d73f,_0x22a2cd){_0x16d73f=_0x16d73f-0x0;var _0x3118e8=_0x8ad3[_0x16d73f];return _0x3118e8;};'use strict';var UserEvents=require(_0x38ad('0x0'));var events=[_0x38ad('0x1'),_0x38ad('0x2'),_0x38ad('0x3')];function createListener(_0x148b1a,_0x235abe){return function(_0x32b439){_0x235abe[_0x38ad('0x4')](_0x148b1a,_0x32b439);};}function removeListener(_0x3138a2,_0x86848a){return function(){UserEvents[_0x38ad('0x5')](_0x3138a2,_0x86848a);};}exports['register']=function(_0x2f777a){for(var _0x28ffe8=0x0,_0x6eb1cd=events[_0x38ad('0x6')];_0x28ffe8<_0x6eb1cd;_0x28ffe8++){var _0x2548b9=events[_0x28ffe8];var _0x5247f8=createListener('user:'+_0x2548b9,_0x2f777a);UserEvents['on'](_0x2548b9,_0x5247f8);}};
\ No newline at end of file
+var _0x156e=['removeListener','register','length','user:','./user.events','save','remove','update','emit'];(function(_0x2976de,_0x4c546d){var _0xecbf51=function(_0x234025){while(--_0x234025){_0x2976de['push'](_0x2976de['shift']());}};_0xecbf51(++_0x4c546d);}(_0x156e,0xdc));var _0xe156=function(_0x537ef8,_0x4c806f){_0x537ef8=_0x537ef8-0x0;var _0x29f523=_0x156e[_0x537ef8];return _0x29f523;};'use strict';var UserEvents=require(_0xe156('0x0'));var events=[_0xe156('0x1'),_0xe156('0x2'),_0xe156('0x3')];function createListener(_0x1aa89e,_0x4f335d){return function(_0x2735eb){_0x4f335d[_0xe156('0x4')](_0x1aa89e,_0x2735eb);};}function removeListener(_0x4f51cd,_0x2a6e66){return function(){UserEvents[_0xe156('0x5')](_0x4f51cd,_0x2a6e66);};}exports[_0xe156('0x6')]=function(_0x3593a4){for(var _0x4a300f=0x0,_0x757bfb=events[_0xe156('0x7')];_0x4a300f<_0x757bfb;_0x4a300f++){var _0x4f8f3a=events[_0x4a300f];var _0x156487=createListener(_0xe156('0x8')+_0x4f8f3a,_0x3593a4);UserEvents['on'](_0x4f8f3a,_0x156487);}};
\ No newline at end of file
index fd62925..e402bce 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(_0x33ae42,_0xd48ed4){var _0x223489=function(_0x29d395){while(--_0x29d395){_0x33ae42['push'](_0x33ae42['shift']());}};_0x223489(++_0xd48ed4);}(_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 _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0xbfc389,_0x5aad2e){var _0x31583a=function(_0x3fddcd){while(--_0x3fddcd){_0xbfc389['push'](_0xbfc389['shift']());}};_0x31583a(++_0x5aad2e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa9e0[_0x14add3];return _0x4a174f;};'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 cbef02f..4beace9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b31=['exports','INTEGER','sequelize'];(function(_0x5d82f6,_0x41a79){var _0xd0135c=function(_0x245407){while(--_0x245407){_0x5d82f6['push'](_0x5d82f6['shift']());}};_0xd0135c(++_0x41a79);}(_0x4b31,0x1c4));var _0x14b3=function(_0x4b634f,_0x4c0372){_0x4b634f=_0x4b634f-0x0;var _0x302e3c=_0x4b31[_0x4b634f];return _0x302e3c;};'use strict';var Sequelize=require(_0x14b3('0x0'));module[_0x14b3('0x1')]={'penalty':{'type':Sequelize[_0x14b3('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x0185=['INTEGER'];(function(_0x3f465d,_0xbd2037){var _0x121ad1=function(_0x5b13d6){while(--_0x5b13d6){_0x3f465d['push'](_0x3f465d['shift']());}};_0x121ad1(++_0xbd2037);}(_0x0185,0x1ac));var _0x5018=function(_0x3b150c,_0x2f93f8){_0x3b150c=_0x3b150c-0x0;var _0x5cd414=_0x0185[_0x3b150c];return _0x5cd414;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0x5018('0x0')],'defaultValue':0x0}};
\ No newline at end of file
index af8eb22..a06cf3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x763d=['rimraf','../../config/environment','./userChatQueue.attributes','exports','define','UserChatQueue','user_has_chat_queues','lodash','util','../../config/logger','api','moment','bluebird','path'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x763d,0xaf));var _0xd763=function(_0x25eee0,_0x40cba7){_0x25eee0=_0x25eee0-0x0;var _0x1d62b8=_0x763d[_0x25eee0];return _0x1d62b8;};'use strict';var _=require(_0xd763('0x0'));var util=require(_0xd763('0x1'));var logger=require(_0xd763('0x2'))(_0xd763('0x3'));var moment=require(_0xd763('0x4'));var BPromise=require(_0xd763('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd763('0x6'));var rimraf=require(_0xd763('0x7'));var config=require(_0xd763('0x8'));var attributes=require(_0xd763('0x9'));module[_0xd763('0xa')]=function(_0x54e7e0,_0x423344){return _0x54e7e0[_0xd763('0xb')](_0xd763('0xc'),attributes,{'tableName':_0xd763('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9d05=['request-promise','path','rimraf','../../config/environment','./userChatQueue.attributes','exports','UserChatQueue','user_has_chat_queues','util'];(function(_0x2ed94b,_0x2f0c86){var _0x422d21=function(_0x22d304){while(--_0x22d304){_0x2ed94b['push'](_0x2ed94b['shift']());}};_0x422d21(++_0x2f0c86);}(_0x9d05,0x19d));var _0x59d0=function(_0x3fb46e,_0xe29c0b){_0x3fb46e=_0x3fb46e-0x0;var _0x251c96=_0x9d05[_0x3fb46e];return _0x251c96;};'use strict';var _=require('lodash');var util=require(_0x59d0('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x59d0('0x1'));var fs=require('fs');var path=require(_0x59d0('0x2'));var rimraf=require(_0x59d0('0x3'));var config=require(_0x59d0('0x4'));var attributes=require(_0x59d0('0x5'));module[_0x59d0('0x6')]=function(_0x369e41,_0x8fbcdd){return _0x369e41['define'](_0x59d0('0x7'),attributes,{'tableName':_0x59d0('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5a6030e..1c71419 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x233f=['catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','request','then','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','UserChatQueue,\x20%s,\x20%s','message','info','result'];(function(_0x23bb07,_0x2d8a9b){var _0x3577df=function(_0x33cf6c){while(--_0x33cf6c){_0x23bb07['push'](_0x23bb07['shift']());}};_0x3577df(++_0x2d8a9b);}(_0x233f,0xf3));var _0xf233=function(_0x3279ed,_0x2231b2){_0x3279ed=_0x3279ed-0x0;var _0x24deb2=_0x233f[_0x3279ed];return _0x24deb2;};'use strict';var _=require(_0xf233('0x0'));var util=require('util');var moment=require(_0xf233('0x1'));var BPromise=require(_0xf233('0x2'));var rs=require(_0xf233('0x3'));var fs=require('fs');var Redis=require(_0xf233('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xf233('0x5'));var logger=require(_0xf233('0x6'))(_0xf233('0x7'));var config=require(_0xf233('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1fcd78,_0x736092,_0x418ee2){return new BPromise(function(_0x5803e0,_0x154d04){return client[_0xf233('0x9')](_0x1fcd78,_0x418ee2)[_0xf233('0xa')](function(_0x4cca9c){logger['info']('UserChatQueue,\x20%s,\x20%s',_0x736092,_0xf233('0xb'));logger[_0xf233('0xc')](_0xf233('0xd'),_0x736092,_0xf233('0xb'),JSON[_0xf233('0xe')](_0x4cca9c));if(_0x4cca9c['error']){if(_0x4cca9c[_0xf233('0xf')][_0xf233('0x10')]===0x1f4){logger['error'](_0xf233('0x11'),_0x736092,_0x4cca9c['error'][_0xf233('0x12')]);return _0x154d04(_0x4cca9c['error'][_0xf233('0x12')]);}logger[_0xf233('0xf')](_0xf233('0x11'),_0x736092,_0x4cca9c['error'][_0xf233('0x12')]);return _0x5803e0(_0x4cca9c[_0xf233('0xf')][_0xf233('0x12')]);}else{logger[_0xf233('0x13')]('UserChatQueue,\x20%s,\x20%s',_0x736092,_0xf233('0xb'));_0x5803e0(_0x4cca9c[_0xf233('0x14')][_0xf233('0x12')]);}})[_0xf233('0x15')](function(_0x562568){logger[_0xf233('0xf')](_0xf233('0x11'),_0x736092,_0x562568);_0x154d04(_0x562568);});});}
\ No newline at end of file
+var _0x27f1=['message','catch','util','moment','bluebird','randomstring','../../config/logger','rpc','jayson/promise','client','http','then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x5e7514,_0x30c2e1){var _0x12f472=function(_0x33ddb6){while(--_0x33ddb6){_0x5e7514['push'](_0x5e7514['shift']());}};_0x12f472(++_0x30c2e1);}(_0x27f1,0xda));var _0x127f=function(_0x5e28c2,_0x1e48ab){_0x5e28c2=_0x5e28c2-0x0;var _0x1a8cc6=_0x27f1[_0x5e28c2];return _0x1a8cc6;};'use strict';var _=require('lodash');var util=require(_0x127f('0x0'));var moment=require(_0x127f('0x1'));var BPromise=require(_0x127f('0x2'));var rs=require(_0x127f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x127f('0x4'))(_0x127f('0x5'));var config=require('../../config/environment');var jayson=require(_0x127f('0x6'));var client=jayson[_0x127f('0x7')][_0x127f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x107f7c,_0x91347d,_0x2b490f){return new BPromise(function(_0x5b7f37,_0x477c62){return client['request'](_0x107f7c,_0x2b490f)[_0x127f('0x9')](function(_0x17c9bc){logger[_0x127f('0xa')](_0x127f('0xb'),_0x91347d,_0x127f('0xc'));logger['debug']('UserChatQueue,\x20%s,\x20%s,\x20%s',_0x91347d,'request\x20sent',JSON[_0x127f('0xd')](_0x17c9bc));if(_0x17c9bc['error']){if(_0x17c9bc[_0x127f('0xe')][_0x127f('0xf')]===0x1f4){logger['error']('UserChatQueue,\x20%s,\x20%s',_0x91347d,_0x17c9bc[_0x127f('0xe')][_0x127f('0x10')]);return _0x477c62(_0x17c9bc['error'][_0x127f('0x10')]);}logger[_0x127f('0xe')](_0x127f('0xb'),_0x91347d,_0x17c9bc[_0x127f('0xe')][_0x127f('0x10')]);return _0x5b7f37(_0x17c9bc[_0x127f('0xe')]['message']);}else{logger['info'](_0x127f('0xb'),_0x91347d,'request\x20sent');_0x5b7f37(_0x17c9bc['result'][_0x127f('0x10')]);}})[_0x127f('0x11')](function(_0x211e6a){logger[_0x127f('0xe')]('UserChatQueue,\x20%s,\x20%s',_0x91347d,_0x211e6a);_0x477c62(_0x211e6a);});});}
\ No newline at end of file
index 211379a..15622c8 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(_0x3933b3,_0x3d6b90){var _0x241a71=function(_0x33bda0){while(--_0x33bda0){_0x3933b3['push'](_0x3933b3['shift']());}};_0x241a71(++_0x3d6b90);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0xa9e0[_0x47a7d0];return _0xb9bd08;};'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(_0x24e88b,_0x443671){var _0x346d24=function(_0x3e8e4f){while(--_0x3e8e4f){_0x24e88b['push'](_0x24e88b['shift']());}};_0x346d24(++_0x443671);}(_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 7abd7a3..cdedde5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5dec=['sequelize','INTEGER','STRING'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x5dec,0xf3));var _0xc5de=function(_0x451217,_0x2bb4fe){_0x451217=_0x451217-0x0;var _0x5cb0f2=_0x5dec[_0x451217];return _0x5cb0f2;};'use strict';var Sequelize=require(_0xc5de('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xc5de('0x1')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xc5de('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize[_0xc5de('0x2')]}};
\ No newline at end of file
+var _0x5fef=['STRING','sequelize','INTEGER'];(function(_0xff0163,_0x38d580){var _0x170bf5=function(_0x5384fc){while(--_0x5384fc){_0xff0163['push'](_0xff0163['shift']());}};_0x170bf5(++_0x38d580);}(_0x5fef,0x124));var _0xf5fe=function(_0x2c6007,_0x3d8be8){_0x2c6007=_0x2c6007-0x0;var _0x59cd24=_0x5fef[_0x2c6007];return _0x59cd24;};'use strict';var Sequelize=require(_0xf5fe('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xf5fe('0x1')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xf5fe('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize[_0xf5fe('0x2')]}};
\ No newline at end of file
index 5c82ffc..404ef98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe73f=['request-promise','path','rimraf','../../config/environment','exports','define','lodash','../../config/logger','api','moment'];(function(_0x53e198,_0x4e0e84){var _0x3fae6f=function(_0x8e3943){while(--_0x8e3943){_0x53e198['push'](_0x53e198['shift']());}};_0x3fae6f(++_0x4e0e84);}(_0xe73f,0xba));var _0xfe73=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xe73f[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0xfe73('0x0'));var util=require('util');var logger=require(_0xfe73('0x1'))(_0xfe73('0x2'));var moment=require(_0xfe73('0x3'));var BPromise=require('bluebird');var rp=require(_0xfe73('0x4'));var fs=require('fs');var path=require(_0xfe73('0x5'));var rimraf=require(_0xfe73('0x6'));var config=require(_0xfe73('0x7'));var attributes=require('./userFaxQueue.attributes');module[_0xfe73('0x8')]=function(_0x4ffb20,_0x56f047){return _0x4ffb20[_0xfe73('0x9')]('UserFaxQueue',attributes,{'tableName':'user_has_fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2649=['./userFaxQueue.attributes','exports','define','UserFaxQueue','user_has_fax_queues','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x5eec60,_0x1d91ee){var _0x331e64=function(_0x3cdec3){while(--_0x3cdec3){_0x5eec60['push'](_0x5eec60['shift']());}};_0x331e64(++_0x1d91ee);}(_0x2649,0x1d3));var _0x9264=function(_0x2b91c5,_0x3b6db5){_0x2b91c5=_0x2b91c5-0x0;var _0xbd5531=_0x2649[_0x2b91c5];return _0xbd5531;};'use strict';var _=require(_0x9264('0x0'));var util=require(_0x9264('0x1'));var logger=require(_0x9264('0x2'))(_0x9264('0x3'));var moment=require('moment');var BPromise=require(_0x9264('0x4'));var rp=require(_0x9264('0x5'));var fs=require('fs');var path=require(_0x9264('0x6'));var rimraf=require(_0x9264('0x7'));var config=require(_0x9264('0x8'));var attributes=require(_0x9264('0x9'));module[_0x9264('0xa')]=function(_0x4be598,_0x1d0d82){return _0x4be598[_0x9264('0xb')](_0x9264('0xc'),attributes,{'tableName':_0x9264('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d6f5b11..7703bef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf484=['util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash'];(function(_0x23eb30,_0x57715d){var _0x5ae14b=function(_0x45ec3a){while(--_0x45ec3a){_0x23eb30['push'](_0x23eb30['shift']());}};_0x5ae14b(++_0x57715d);}(_0xf484,0x141));var _0x4f48=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xf484[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x4f48('0x0'));var util=require(_0x4f48('0x1'));var moment=require(_0x4f48('0x2'));var BPromise=require('bluebird');var rs=require(_0x4f48('0x3'));var fs=require('fs');var Redis=require(_0x4f48('0x4'));var db=require(_0x4f48('0x5'))['db'];var utils=require(_0x4f48('0x6'));var logger=require('../../config/logger')(_0x4f48('0x7'));var config=require(_0x4f48('0x8'));var jayson=require(_0x4f48('0x9'));var client=jayson[_0x4f48('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2dcdc1,_0x2217bf,_0x37127a){return new BPromise(function(_0x2b7b5e,_0x31a0f7){return client[_0x4f48('0xb')](_0x2dcdc1,_0x37127a)[_0x4f48('0xc')](function(_0xc99e88){logger[_0x4f48('0xd')](_0x4f48('0xe'),_0x2217bf,_0x4f48('0xf'));logger[_0x4f48('0x10')]('UserFaxQueue,\x20%s,\x20%s,\x20%s',_0x2217bf,_0x4f48('0xf'),JSON[_0x4f48('0x11')](_0xc99e88));if(_0xc99e88['error']){if(_0xc99e88[_0x4f48('0x12')][_0x4f48('0x13')]===0x1f4){logger[_0x4f48('0x12')](_0x4f48('0xe'),_0x2217bf,_0xc99e88[_0x4f48('0x12')]['message']);return _0x31a0f7(_0xc99e88[_0x4f48('0x12')]['message']);}logger[_0x4f48('0x12')](_0x4f48('0xe'),_0x2217bf,_0xc99e88[_0x4f48('0x12')][_0x4f48('0x14')]);return _0x2b7b5e(_0xc99e88[_0x4f48('0x12')][_0x4f48('0x14')]);}else{logger[_0x4f48('0xd')]('UserFaxQueue,\x20%s,\x20%s',_0x2217bf,_0x4f48('0xf'));_0x2b7b5e(_0xc99e88[_0x4f48('0x15')]['message']);}})[_0x4f48('0x16')](function(_0x29372c){logger[_0x4f48('0x12')]('UserFaxQueue,\x20%s,\x20%s',_0x2217bf,_0x29372c);_0x31a0f7(_0x29372c);});});}
\ No newline at end of file
+var _0xb894=['request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','UserFaxQueue,\x20%s,\x20%s'];(function(_0x4587dd,_0x53de60){var _0x3b03ce=function(_0x764900){while(--_0x764900){_0x4587dd['push'](_0x4587dd['shift']());}};_0x3b03ce(++_0x53de60);}(_0xb894,0x82));var _0x4b89=function(_0x4ff297,_0xfaa0b){_0x4ff297=_0x4ff297-0x0;var _0x24cdef=_0xb894[_0x4ff297];return _0x24cdef;};'use strict';var _=require('lodash');var util=require(_0x4b89('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x4b89('0x1'));var fs=require('fs');var Redis=require(_0x4b89('0x2'));var db=require(_0x4b89('0x3'))['db'];var utils=require(_0x4b89('0x4'));var logger=require(_0x4b89('0x5'))(_0x4b89('0x6'));var config=require(_0x4b89('0x7'));var jayson=require(_0x4b89('0x8'));var client=jayson[_0x4b89('0x9')][_0x4b89('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1c6c06,_0x53140a,_0x3014f9){return new BPromise(function(_0x2a3d91,_0x5a7077){return client[_0x4b89('0xb')](_0x1c6c06,_0x3014f9)[_0x4b89('0xc')](function(_0xbea13a){logger['info'](_0x4b89('0xd'),_0x53140a,_0x4b89('0xe'));logger[_0x4b89('0xf')](_0x4b89('0x10'),_0x53140a,_0x4b89('0xe'),JSON[_0x4b89('0x11')](_0xbea13a));if(_0xbea13a[_0x4b89('0x12')]){if(_0xbea13a['error'][_0x4b89('0x13')]===0x1f4){logger[_0x4b89('0x12')]('UserFaxQueue,\x20%s,\x20%s',_0x53140a,_0xbea13a[_0x4b89('0x12')]['message']);return _0x5a7077(_0xbea13a[_0x4b89('0x12')][_0x4b89('0x14')]);}logger[_0x4b89('0x12')](_0x4b89('0xd'),_0x53140a,_0xbea13a[_0x4b89('0x12')][_0x4b89('0x14')]);return _0x2a3d91(_0xbea13a[_0x4b89('0x12')]['message']);}else{logger[_0x4b89('0x15')](_0x4b89('0xd'),_0x53140a,_0x4b89('0xe'));_0x2a3d91(_0xbea13a[_0x4b89('0x16')][_0x4b89('0x14')]);}})[_0x4b89('0x17')](function(_0x4cfd2e){logger[_0x4b89('0x12')](_0x4b89('0xd'),_0x53140a,_0x4cfd2e);_0x5a7077(_0x4cfd2e);});});}
\ No newline at end of file
index 15d2404..a30e805 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(_0x37a902,_0x50579a){var _0x566d4f=function(_0x44a02e){while(--_0x44a02e){_0x37a902['push'](_0x37a902['shift']());}};_0x566d4f(++_0x50579a);}(_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'));module['exports']=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x240ba8,_0x335246){var _0x2e0885=function(_0x342e1d){while(--_0x342e1d){_0x240ba8['push'](_0x240ba8['shift']());}};_0x2e0885(++_0x335246);}(_0x70e0,0x17b));var _0x070e=function(_0x1dd8f5,_0x54322a){_0x1dd8f5=_0x1dd8f5-0x0;var _0x4ac9cd=_0x70e0[_0x1dd8f5];return _0x4ac9cd;};'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 7db3f96..3ef8c7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fbc=['sequelize','exports','INTEGER'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0x0fbc,0xc0));var _0xc0fb=function(_0x4699a5,_0x2011c4){_0x4699a5=_0x4699a5-0x0;var _0x270b6d=_0x0fbc[_0x4699a5];return _0x270b6d;};'use strict';var Sequelize=require(_0xc0fb('0x0'));module[_0xc0fb('0x1')]={'penalty':{'type':Sequelize[_0xc0fb('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xcc20=['sequelize','exports'];(function(_0x5c5cc4,_0x3743fa){var _0x302608=function(_0x258182){while(--_0x258182){_0x5c5cc4['push'](_0x5c5cc4['shift']());}};_0x302608(++_0x3743fa);}(_0xcc20,0x108));var _0x0cc2=function(_0x43b01d,_0x170c3e){_0x43b01d=_0x43b01d-0x0;var _0x94ce73=_0xcc20[_0x43b01d];return _0x94ce73;};'use strict';var Sequelize=require(_0x0cc2('0x0'));module[_0x0cc2('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index d0db0ef..d6bcea1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb898=['define','user_has_mail_queues','lodash','util','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x545c44,_0x15ae40){var _0x3d0007=function(_0x2021de){while(--_0x2021de){_0x545c44['push'](_0x545c44['shift']());}};_0x3d0007(++_0x15ae40);}(_0xb898,0xfc));var _0x8b89=function(_0x3d27a,_0x31311d){_0x3d27a=_0x3d27a-0x0;var _0x314fd7=_0xb898[_0x3d27a];return _0x314fd7;};'use strict';var _=require(_0x8b89('0x0'));var util=require(_0x8b89('0x1'));var logger=require('../../config/logger')(_0x8b89('0x2'));var moment=require(_0x8b89('0x3'));var BPromise=require('bluebird');var rp=require(_0x8b89('0x4'));var fs=require('fs');var path=require(_0x8b89('0x5'));var rimraf=require(_0x8b89('0x6'));var config=require(_0x8b89('0x7'));var attributes=require('./userMailQueue.attributes');module['exports']=function(_0xaff6a9,_0x243246){return _0xaff6a9[_0x8b89('0x8')]('UserMailQueue',attributes,{'tableName':_0x8b89('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x49d7=['api','moment','path','rimraf','user_has_mail_queues','lodash','util','../../config/logger'];(function(_0x1fc376,_0x4fbfea){var _0x28073a=function(_0x593ff8){while(--_0x593ff8){_0x1fc376['push'](_0x1fc376['shift']());}};_0x28073a(++_0x4fbfea);}(_0x49d7,0x1b5));var _0x749d=function(_0x166742,_0x55520c){_0x166742=_0x166742-0x0;var _0xb7814a=_0x49d7[_0x166742];return _0xb7814a;};'use strict';var _=require(_0x749d('0x0'));var util=require(_0x749d('0x1'));var logger=require(_0x749d('0x2'))(_0x749d('0x3'));var moment=require(_0x749d('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x749d('0x5'));var rimraf=require(_0x749d('0x6'));var config=require('../../config/environment');var attributes=require('./userMailQueue.attributes');module['exports']=function(_0x5bde49,_0xfc7c56){return _0x5bde49['define']('UserMailQueue',attributes,{'tableName':_0x749d('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cb82eba..0c3f57d 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(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x008c,0x188));var _0xc008=function(_0x52a08b,_0x12388d){_0x52a08b=_0x52a08b-0x0;var _0x2c6670=_0x008c[_0x52a08b];return _0x2c6670;};'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 _0x6aa7=['result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','request','then','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x11f6f2,_0x56d8b6){var _0x225500=function(_0x56eddc){while(--_0x56eddc){_0x11f6f2['push'](_0x11f6f2['shift']());}};_0x225500(++_0x56d8b6);}(_0x6aa7,0x178));var _0x76aa=function(_0x174f43,_0x563c3e){_0x174f43=_0x174f43-0x0;var _0x363687=_0x6aa7[_0x174f43];return _0x363687;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var moment=require(_0x76aa('0x1'));var BPromise=require(_0x76aa('0x2'));var rs=require(_0x76aa('0x3'));var fs=require('fs');var Redis=require(_0x76aa('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x76aa('0x5'));var logger=require(_0x76aa('0x6'))(_0x76aa('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x76aa('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32dee5,_0x36d12b,_0xa9b695){return new BPromise(function(_0x56d6bc,_0x3dae33){return client[_0x76aa('0x9')](_0x32dee5,_0xa9b695)[_0x76aa('0xa')](function(_0x557d69){logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,_0x76aa('0xd'));logger[_0x76aa('0xe')](_0x76aa('0xf'),_0x36d12b,_0x76aa('0xd'),JSON[_0x76aa('0x10')](_0x557d69));if(_0x557d69[_0x76aa('0x11')]){if(_0x557d69[_0x76aa('0x11')][_0x76aa('0x12')]===0x1f4){logger['error'](_0x76aa('0xc'),_0x36d12b,_0x557d69['error'][_0x76aa('0x13')]);return _0x3dae33(_0x557d69[_0x76aa('0x11')][_0x76aa('0x13')]);}logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x557d69['error']['message']);return _0x56d6bc(_0x557d69[_0x76aa('0x11')]['message']);}else{logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,'request\x20sent');_0x56d6bc(_0x557d69[_0x76aa('0x14')]['message']);}})[_0x76aa('0x15')](function(_0x5181d2){logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x5181d2);_0x3dae33(_0x5181d2);});});}
\ No newline at end of file
index e5e114c..9689a9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x944e=['exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./userNotification.controller','post','isAuthenticated'];(function(_0x53dac4,_0x436fac){var _0x589366=function(_0x1648e7){while(--_0x1648e7){_0x53dac4['push'](_0x53dac4['shift']());}};_0x589366(++_0x436fac);}(_0x944e,0x18d));var _0xe944=function(_0x55258a,_0x3af508){_0x55258a=_0x55258a-0x0;var _0x2150e5=_0x944e[_0x55258a];return _0x2150e5;};'use strict';var multer=require(_0xe944('0x0'));var util=require(_0xe944('0x1'));var path=require(_0xe944('0x2'));var timeout=require(_0xe944('0x3'));var express=require('express');var router=express[_0xe944('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe944('0x5'));var interaction=require(_0xe944('0x6'));var config=require('../../config/environment');var controller=require(_0xe944('0x7'));router[_0xe944('0x8')]('/',auth[_0xe944('0x9')](),controller['sendUserNotification']);module[_0xe944('0xa')]=router;
\ No newline at end of file
+var _0x8a68=['exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','./userNotification.controller','post','isAuthenticated','sendUserNotification'];(function(_0x51f4fc,_0x1fe3ef){var _0x4d96fc=function(_0xddc9){while(--_0xddc9){_0x51f4fc['push'](_0x51f4fc['shift']());}};_0x4d96fc(++_0x1fe3ef);}(_0x8a68,0x199));var _0x88a6=function(_0x1b0b38,_0x488f2f){_0x1b0b38=_0x1b0b38-0x0;var _0xe07f0e=_0x8a68[_0x1b0b38];return _0xe07f0e;};'use strict';var multer=require(_0x88a6('0x0'));var util=require(_0x88a6('0x1'));var path=require(_0x88a6('0x2'));var timeout=require('connect-timeout');var express=require(_0x88a6('0x3'));var router=express[_0x88a6('0x4')]();var fs_extra=require(_0x88a6('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x88a6('0x6'));var config=require('../../config/environment');var controller=require(_0x88a6('0x7'));router[_0x88a6('0x8')]('/',auth[_0x88a6('0x9')](),controller[_0x88a6('0xa')]);module[_0x88a6('0xb')]=router;
\ No newline at end of file
index 40b33ce..02d99d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d59=['BOOLEAN','exports','TEXT','STRING'];(function(_0x2a5e0e,_0x4d7b6b){var _0x1bae4a=function(_0x2a6c7f){while(--_0x2a6c7f){_0x2a5e0e['push'](_0x2a5e0e['shift']());}};_0x1bae4a(++_0x4d7b6b);}(_0x1d59,0x13d));var _0x91d5=function(_0x54d449,_0x20db78){_0x54d449=_0x54d449-0x0;var _0xa7261=_0x1d59[_0x54d449];return _0xa7261;};'use strict';var Sequelize=require('sequelize');module[_0x91d5('0x0')]={'body':{'type':Sequelize[_0x91d5('0x1')]},'senderName':{'type':Sequelize[_0x91d5('0x2')]},'recipientsId':{'type':Sequelize[_0x91d5('0x1')]},'recipientsDescription':{'type':Sequelize['STRING']},'beep':{'type':Sequelize[_0x91d5('0x3')]}};
\ No newline at end of file
+var _0x0a4e=['STRING','sequelize','exports','TEXT'];(function(_0x2e3d84,_0x2bc62d){var _0x1fedb6=function(_0x37caae){while(--_0x37caae){_0x2e3d84['push'](_0x2e3d84['shift']());}};_0x1fedb6(++_0x2bc62d);}(_0x0a4e,0x139));var _0xe0a4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0a4e[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xe0a4('0x0'));module[_0xe0a4('0x1')]={'body':{'type':Sequelize[_0xe0a4('0x2')]},'senderName':{'type':Sequelize[_0xe0a4('0x3')]},'recipientsId':{'type':Sequelize[_0xe0a4('0x2')]},'recipientsDescription':{'type':Sequelize['STRING']},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
index aca2305..65d7b8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9f4=['flatten','findOne','getAgents','map','eml-format','rimraf','zip-dir','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./userNotification.socket','register','sendStatus','end','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','then','error','stack','name','send','sendUserNotification','hasOwnProperty','text','TemplateId','Sequelize','ValidationError','body','view','Missing\x20\x27view\x27\x20parameter','recipients','parse','Invalid\x20\x27recipients\x27\x20object','faxqueue','mailqueue','openchannelqueue','smsqueue','voicequeue','whatsappqueue','team','user','some','includes','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','isEmpty','recipientsDescription','beep','SenderId','recipientsId','join','sequelize','transaction','UserNotification','forEach','emit','userNotification:send','catch','Template','html','render','startCase','User','union','ids','queue'];(function(_0x2d9f30,_0x258111){var _0x243932=function(_0x2eca4a){while(--_0x2eca4a){_0x2d9f30['push'](_0x2d9f30['shift']());}};_0x243932(++_0x258111);}(_0xc9f4,0x124));var _0x4c9f=function(_0x85a683,_0x25bbb1){_0x85a683=_0x85a683-0x0;var _0xb23540=_0xc9f4[_0x85a683];return _0xb23540;};'use strict';var emlformat=require(_0x4c9f('0x0'));var rimraf=require(_0x4c9f('0x1'));var zipdir=require(_0x4c9f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4c9f('0x3'));var BPromise=require(_0x4c9f('0x4'));var Mustache=require('mustache');var util=require(_0x4c9f('0x5'));var path=require(_0x4c9f('0x6'));var sox=require(_0x4c9f('0x7'));var csv=require(_0x4c9f('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4c9f('0x9'));var _=require(_0x4c9f('0xa'));var squel=require('squel');var crypto=require(_0x4c9f('0xb'));var jsforce=require(_0x4c9f('0xc'));var deskjs=require(_0x4c9f('0xd'));var toCsv=require('to-csv');var querystring=require(_0x4c9f('0xe'));var Papa=require(_0x4c9f('0xf'));var Redis=require(_0x4c9f('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x4c9f('0x11'));var as=require(_0x4c9f('0x12'));var hardwareService=require(_0x4c9f('0x13'));var logger=require(_0x4c9f('0x14'))(_0x4c9f('0x15'));var utils=require('../../config/utils');var config=require(_0x4c9f('0x16'));var licenseUtil=require(_0x4c9f('0x17'));var db=require(_0x4c9f('0x18'))['db'];config[_0x4c9f('0x19')]=_['defaults'](config[_0x4c9f('0x19')],{'host':_0x4c9f('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4c9f('0x19')]));require(_0x4c9f('0x1b'))[_0x4c9f('0x1c')](socket);function respondWithStatusCode(_0x29deda,_0x315e9e){_0x315e9e=_0x315e9e||0xcc;return function(_0x5ea1b7){if(_0x5ea1b7){return _0x29deda[_0x4c9f('0x1d')](_0x315e9e);}return _0x29deda['status'](_0x315e9e)[_0x4c9f('0x1e')]();};}function respondWithResult(_0x1f9ba8,_0x43c4e0){_0x43c4e0=_0x43c4e0||0xc8;return function(_0x15cfa3){if(_0x15cfa3){return _0x1f9ba8[_0x4c9f('0x1f')](_0x43c4e0)[_0x4c9f('0x20')](_0x15cfa3);}};}function respondWithFilteredResult(_0x5bf452,_0x5d4f96){return function(_0x1e6bc7){if(_0x1e6bc7){var _0x414a55=typeof _0x5d4f96['offset']==='undefined'&&typeof _0x5d4f96[_0x4c9f('0x21')]===_0x4c9f('0x22');var _0x5f3461=_0x1e6bc7[_0x4c9f('0x23')];var _0x313a77=_0x414a55?0x0:_0x5d4f96[_0x4c9f('0x24')];var _0x2c3274=_0x414a55?_0x1e6bc7[_0x4c9f('0x23')]:_0x5d4f96[_0x4c9f('0x24')]+_0x5d4f96[_0x4c9f('0x21')];var _0x465208;if(_0x2c3274>=_0x5f3461){_0x2c3274=_0x5f3461;_0x465208=0xc8;}else{_0x465208=0xce;}_0x5bf452[_0x4c9f('0x1f')](_0x465208);return _0x5bf452[_0x4c9f('0x25')](_0x4c9f('0x26'),_0x313a77+'-'+_0x2c3274+'/'+_0x5f3461)[_0x4c9f('0x20')](_0x1e6bc7);}return null;};}function patchUpdates(_0x1f52a0){return function(_0x23092e){try{jsonpatch[_0x4c9f('0x27')](_0x23092e,_0x1f52a0,!![]);}catch(_0xe08644){return BPromise[_0x4c9f('0x28')](_0xe08644);}return _0x23092e[_0x4c9f('0x29')]();};}function saveUpdates(_0x5532cf,_0x5123d0){return function(_0x55cc59){if(_0x55cc59){return _0x55cc59['update'](_0x5532cf)[_0x4c9f('0x2a')](function(_0x513c80){return _0x513c80;});}return null;};}function removeEntity(_0x14f123,_0x4e0405){return function(_0x37b586){if(_0x37b586){return _0x37b586['destroy']()[_0x4c9f('0x2a')](function(){_0x14f123[_0x4c9f('0x1f')](0xcc)[_0x4c9f('0x1e')]();});}};}function handleEntityNotFound(_0x1f6bfb,_0x294c61){return function(_0x167826){if(!_0x167826){_0x1f6bfb[_0x4c9f('0x1d')](0x194);}return _0x167826;};}function handleError(_0x46052a,_0x3a57fd){_0x3a57fd=_0x3a57fd||0x1f4;return function(_0x31113a){logger[_0x4c9f('0x2b')](_0x31113a[_0x4c9f('0x2c')]);if(_0x31113a[_0x4c9f('0x2d')]){delete _0x31113a[_0x4c9f('0x2d')];}_0x46052a[_0x4c9f('0x1f')](_0x3a57fd)[_0x4c9f('0x2e')](_0x31113a);};}exports[_0x4c9f('0x2f')]=function(_0x419a95,_0x15c1c0,_0x31d4f8){if(!_0x419a95['body'][_0x4c9f('0x30')](_0x4c9f('0x31'))&&!_0x419a95['body'][_0x4c9f('0x30')](_0x4c9f('0x32'))){throw new db[(_0x4c9f('0x33'))][(_0x4c9f('0x34'))]('Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27');}else{if(_0x419a95[_0x4c9f('0x35')][_0x4c9f('0x30')](_0x4c9f('0x32'))&&!_0x419a95[_0x4c9f('0x35')][_0x4c9f('0x30')](_0x4c9f('0x36'))){throw new db[(_0x4c9f('0x33'))][(_0x4c9f('0x34'))](_0x4c9f('0x37'));}if(!_0x419a95[_0x4c9f('0x35')]['hasOwnProperty'](_0x4c9f('0x38'))){throw new db[(_0x4c9f('0x33'))][(_0x4c9f('0x34'))]('Missing\x20\x27recipients\x27\x20parameter');}else{try{var _0x55e417=JSON[_0x4c9f('0x39')](_0x419a95['body'][_0x4c9f('0x38')]);}catch(_0x28b11f){logger[_0x4c9f('0x2b')](_0x28b11f);throw new db['Sequelize'][(_0x4c9f('0x34'))](_0x4c9f('0x3a'));}var _0x29947a=['chatqueue',_0x4c9f('0x3b'),_0x4c9f('0x3c'),_0x4c9f('0x3d'),_0x4c9f('0x3e'),_0x4c9f('0x3f'),_0x4c9f('0x40'),_0x4c9f('0x41'),_0x4c9f('0x42')];if(_[_0x4c9f('0x43')](_0x55e417,function(_0x1fd1cb){return!_[_0x4c9f('0x44')](_0x29947a,_0x1fd1cb['model']['toLowerCase']());})){throw new db['Sequelize']['ValidationError'](_0x4c9f('0x45'));}}}var _0x36a5a6={};_0x36a5a6[_0x4c9f('0x46')]=_0x419a95[_0x4c9f('0x35')][_0x4c9f('0x30')](_0x4c9f('0x46'))?_0x419a95['body']['senderName']:_0x419a95['user']['fullname'];_0x36a5a6['recipientsDescription']=_[_0x4c9f('0x47')](_0x419a95[_0x4c9f('0x35')][_0x4c9f('0x48')])?null:_0x419a95[_0x4c9f('0x35')]['recipientsDescription'];_0x36a5a6[_0x4c9f('0x49')]=_0x419a95[_0x4c9f('0x35')][_0x4c9f('0x49')]||![];_0x36a5a6[_0x4c9f('0x4a')]=_0x419a95[_0x4c9f('0x42')]['id'];return getContent(_0x419a95['body'])[_0x4c9f('0x2a')](function(_0x260d83){_0x36a5a6['body']=_0x260d83;return getRecipients(_0x55e417);})[_0x4c9f('0x2a')](function(_0x16ca56){_0x36a5a6[_0x4c9f('0x4b')]=_['sortBy'](_0x16ca56)[_0x4c9f('0x4c')](',');return db[_0x4c9f('0x4d')][_0x4c9f('0x4e')](function(_0x1a6a28){return db[_0x4c9f('0x4f')]['create'](_0x36a5a6,{'raw':!![],'transaction':_0x1a6a28})[_0x4c9f('0x2a')](function(_0xe924c1){var _0x5671c1={'sender':_0x36a5a6['senderName'],'description':_0x36a5a6[_0x4c9f('0x48')],'content':_0x36a5a6['body'],'beep':_0x36a5a6['beep']};_0x16ca56[_0x4c9f('0x50')](function(_0x54919d){_0x5671c1['recipient']=_0x54919d;socket[_0x4c9f('0x51')](_0x4c9f('0x52'),_0x5671c1);});return _0xe924c1;});});})[_0x4c9f('0x2a')](respondWithResult(_0x15c1c0,0xc9))[_0x4c9f('0x53')](handleError(_0x15c1c0,null));};function getContent(_0x16b87e){return new BPromise(function(_0x2eaa26,_0x55109c){if(_0x16b87e[_0x4c9f('0x31')]){_0x2eaa26(_0x16b87e[_0x4c9f('0x31')]);return;}return db[_0x4c9f('0x54')]['findOne']({'attributes':[_0x4c9f('0x55')],'where':{'id':_0x16b87e[_0x4c9f('0x32')]},'raw':!![]})[_0x4c9f('0x2a')](function(_0xdaae46){if(!_0xdaae46)throw new db[(_0x4c9f('0x33'))][(_0x4c9f('0x34'))]('Invalid\x20\x27TemplateId\x27\x20parameter');var _0x204787=Mustache[_0x4c9f('0x56')](_0xdaae46[_0x4c9f('0x55')],_0x16b87e[_0x4c9f('0x36')]);_0x2eaa26(_0x204787);})['catch'](function(_0x39d217){_0x55109c(_0x39d217);});});}function getRecipients(_0x16131a){return new BPromise(function(_0x555a40,_0x2b2aec){var _0x6825bd=[];var _0x16f6da=[];_0x16131a[_0x4c9f('0x50')](function(_0x6a5ef7){var _0x39f26f=_[_0x4c9f('0x57')](_0x6a5ef7['model']['toLowerCase']());if(_0x39f26f===_0x4c9f('0x58')){_0x6825bd=_[_0x4c9f('0x59')](_0x6825bd,_0x6a5ef7[_0x4c9f('0x5a')]);}else{if(_[_0x4c9f('0x44')](_0x39f26f,_0x4c9f('0x5b')))_0x39f26f=_0x39f26f['replace'](_0x4c9f('0x5b'),'Queue');_0x6a5ef7['ids'][_0x4c9f('0x50')](function(_0x541da9){_0x16f6da['push'](getAgents(_0x39f26f,_0x541da9));});}});return BPromise['all'](_0x16f6da)[_0x4c9f('0x2a')](function(_0x157ebd){_0x6825bd=_[_0x4c9f('0x59')](_0x6825bd,_[_0x4c9f('0x5c')](_0x157ebd));_0x555a40(_0x6825bd);})['catch'](function(_0x524c87){_0x2b2aec(_0x524c87);});});}function getAgents(_0xcb7c38,_0x5c114d){return new BPromise(function(_0x5c5484,_0x1910fc){return db[_0xcb7c38][_0x4c9f('0x5d')]({'where':{'id':_0x5c114d}})['then'](function(_0x5e862f){return _0x5e862f[_0x4c9f('0x5e')]({'attributes':['id'],'raw':!![]})[_0x4c9f('0x2a')](function(_0xe5fa16){var _0xeec17c=_[_0x4c9f('0x5f')](_0xe5fa16,'id');_0x5c5484(_0xeec17c);});})['catch'](function(_0x747154){_0x1910fc(_0x747154);});});}
\ No newline at end of file
+var _0xb504=['stack','name','status','send','sendUserNotification','body','hasOwnProperty','text','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','TemplateId','view','Missing\x20\x27view\x27\x20parameter','recipients','Sequelize','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','faxqueue','mailqueue','openchannelqueue','smsqueue','voicequeue','team','user','some','includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','isEmpty','recipientsDescription','beep','SenderId','recipientsId','sequelize','forEach','recipient','emit','userNotification:send','catch','html','Invalid\x20\x27TemplateId\x27\x20parameter','startCase','union','ids','replace','Queue','push','all','flatten','findOne','map','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','path','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','./userNotification.socket','register','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error'];(function(_0x2fdf43,_0x36b869){var _0x2b3305=function(_0x5dfbc5){while(--_0x5dfbc5){_0x2fdf43['push'](_0x2fdf43['shift']());}};_0x2b3305(++_0x36b869);}(_0xb504,0x9a));var _0x4b50=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xb504[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x4b50('0x0'));var rimraf=require(_0x4b50('0x1'));var zipdir=require(_0x4b50('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4b50('0x3'));var moment=require(_0x4b50('0x4'));var BPromise=require(_0x4b50('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x4b50('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x4b50('0x7'));var fs=require('fs');var fs_extra=require(_0x4b50('0x8'));var _=require(_0x4b50('0x9'));var squel=require(_0x4b50('0xa'));var crypto=require(_0x4b50('0xb'));var jsforce=require(_0x4b50('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x4b50('0xd'));var querystring=require(_0x4b50('0xe'));var Papa=require(_0x4b50('0xf'));var Redis=require(_0x4b50('0x10'));var authService=require(_0x4b50('0x11'));var qs=require(_0x4b50('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4b50('0x13'));var logger=require(_0x4b50('0x14'))('api');var utils=require(_0x4b50('0x15'));var config=require(_0x4b50('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x4b50('0x17'))['db'];config[_0x4b50('0x18')]=_[_0x4b50('0x19')](config[_0x4b50('0x18')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x4b50('0x1a'))[_0x4b50('0x1b')](socket);function respondWithStatusCode(_0x4c5c77,_0x1c3ab8){_0x1c3ab8=_0x1c3ab8||0xcc;return function(_0x36ea72){if(_0x36ea72){return _0x4c5c77['sendStatus'](_0x1c3ab8);}return _0x4c5c77['status'](_0x1c3ab8)[_0x4b50('0x1c')]();};}function respondWithResult(_0x70dd8f,_0x1fd118){_0x1fd118=_0x1fd118||0xc8;return function(_0x343763){if(_0x343763){return _0x70dd8f['status'](_0x1fd118)[_0x4b50('0x1d')](_0x343763);}};}function respondWithFilteredResult(_0x4a0f28,_0x366fb2){return function(_0x35ba81){if(_0x35ba81){var _0x1f02cc=typeof _0x366fb2[_0x4b50('0x1e')]===_0x4b50('0x1f')&&typeof _0x366fb2[_0x4b50('0x20')]===_0x4b50('0x1f');var _0xbf0eee=_0x35ba81[_0x4b50('0x21')];var _0x6e5e93=_0x1f02cc?0x0:_0x366fb2[_0x4b50('0x1e')];var _0x1cd7da=_0x1f02cc?_0x35ba81['count']:_0x366fb2[_0x4b50('0x1e')]+_0x366fb2[_0x4b50('0x20')];var _0x4a99f9;if(_0x1cd7da>=_0xbf0eee){_0x1cd7da=_0xbf0eee;_0x4a99f9=0xc8;}else{_0x4a99f9=0xce;}_0x4a0f28['status'](_0x4a99f9);return _0x4a0f28[_0x4b50('0x22')](_0x4b50('0x23'),_0x6e5e93+'-'+_0x1cd7da+'/'+_0xbf0eee)['json'](_0x35ba81);}return null;};}function patchUpdates(_0x4b3936){return function(_0x5e00aa){try{jsonpatch[_0x4b50('0x24')](_0x5e00aa,_0x4b3936,!![]);}catch(_0x1a3a06){return BPromise[_0x4b50('0x25')](_0x1a3a06);}return _0x5e00aa[_0x4b50('0x26')]();};}function saveUpdates(_0x51c6db,_0x18b9fd){return function(_0x59f6e0){if(_0x59f6e0){return _0x59f6e0[_0x4b50('0x27')](_0x51c6db)[_0x4b50('0x28')](function(_0x13dd6d){return _0x13dd6d;});}return null;};}function removeEntity(_0x411d35,_0x5c61f3){return function(_0x536ae7){if(_0x536ae7){return _0x536ae7[_0x4b50('0x29')]()[_0x4b50('0x28')](function(){_0x411d35['status'](0xcc)[_0x4b50('0x1c')]();});}};}function handleEntityNotFound(_0x309c9c,_0x5d3fc8){return function(_0x541477){if(!_0x541477){_0x309c9c[_0x4b50('0x2a')](0x194);}return _0x541477;};}function handleError(_0xeb02ba,_0x58a465){_0x58a465=_0x58a465||0x1f4;return function(_0x25d326){logger[_0x4b50('0x2b')](_0x25d326[_0x4b50('0x2c')]);if(_0x25d326[_0x4b50('0x2d')]){delete _0x25d326[_0x4b50('0x2d')];}_0xeb02ba[_0x4b50('0x2e')](_0x58a465)[_0x4b50('0x2f')](_0x25d326);};}exports[_0x4b50('0x30')]=function(_0x5d2814,_0x1a82b1,_0xbbc797){if(!_0x5d2814[_0x4b50('0x31')][_0x4b50('0x32')](_0x4b50('0x33'))&&!_0x5d2814[_0x4b50('0x31')][_0x4b50('0x32')]('TemplateId')){throw new db['Sequelize'][(_0x4b50('0x34'))](_0x4b50('0x35'));}else{if(_0x5d2814[_0x4b50('0x31')]['hasOwnProperty'](_0x4b50('0x36'))&&!_0x5d2814[_0x4b50('0x31')]['hasOwnProperty'](_0x4b50('0x37'))){throw new db['Sequelize']['ValidationError'](_0x4b50('0x38'));}if(!_0x5d2814[_0x4b50('0x31')][_0x4b50('0x32')](_0x4b50('0x39'))){throw new db[(_0x4b50('0x3a'))][(_0x4b50('0x34'))](_0x4b50('0x3b'));}else{try{var _0x341ad0=JSON[_0x4b50('0x3c')](_0x5d2814['body'][_0x4b50('0x39')]);}catch(_0x5a5dda){logger[_0x4b50('0x2b')](_0x5a5dda);throw new db[(_0x4b50('0x3a'))][(_0x4b50('0x34'))](_0x4b50('0x3d'));}var _0x572ecb=['chatqueue',_0x4b50('0x3e'),_0x4b50('0x3f'),_0x4b50('0x40'),_0x4b50('0x41'),_0x4b50('0x42'),'whatsappqueue',_0x4b50('0x43'),_0x4b50('0x44')];if(_[_0x4b50('0x45')](_0x341ad0,function(_0x25d176){return!_[_0x4b50('0x46')](_0x572ecb,_0x25d176[_0x4b50('0x47')][_0x4b50('0x48')]());})){throw new db[(_0x4b50('0x3a'))]['ValidationError'](_0x4b50('0x49'));}}}var _0xf1b4d8={};_0xf1b4d8[_0x4b50('0x4a')]=_0x5d2814[_0x4b50('0x31')][_0x4b50('0x32')](_0x4b50('0x4a'))?_0x5d2814['body']['senderName']:_0x5d2814[_0x4b50('0x44')][_0x4b50('0x4b')];_0xf1b4d8['recipientsDescription']=_[_0x4b50('0x4c')](_0x5d2814[_0x4b50('0x31')][_0x4b50('0x4d')])?null:_0x5d2814[_0x4b50('0x31')][_0x4b50('0x4d')];_0xf1b4d8[_0x4b50('0x4e')]=_0x5d2814[_0x4b50('0x31')][_0x4b50('0x4e')]||![];_0xf1b4d8[_0x4b50('0x4f')]=_0x5d2814['user']['id'];return getContent(_0x5d2814[_0x4b50('0x31')])[_0x4b50('0x28')](function(_0x2a8b90){_0xf1b4d8['body']=_0x2a8b90;return getRecipients(_0x341ad0);})[_0x4b50('0x28')](function(_0x315b0f){_0xf1b4d8[_0x4b50('0x50')]=_['sortBy'](_0x315b0f)['join'](',');return db[_0x4b50('0x51')]['transaction'](function(_0x55c5f4){return db['UserNotification']['create'](_0xf1b4d8,{'raw':!![],'transaction':_0x55c5f4})['then'](function(_0x2ba571){var _0x5b72e0={'sender':_0xf1b4d8[_0x4b50('0x4a')],'description':_0xf1b4d8[_0x4b50('0x4d')],'content':_0xf1b4d8['body'],'beep':_0xf1b4d8[_0x4b50('0x4e')]};_0x315b0f[_0x4b50('0x52')](function(_0x563a53){_0x5b72e0[_0x4b50('0x53')]=_0x563a53;socket[_0x4b50('0x54')](_0x4b50('0x55'),_0x5b72e0);});return _0x2ba571;});});})[_0x4b50('0x28')](respondWithResult(_0x1a82b1,0xc9))[_0x4b50('0x56')](handleError(_0x1a82b1,null));};function getContent(_0x4328a9){return new BPromise(function(_0x1176af,_0x502b3d){if(_0x4328a9[_0x4b50('0x33')]){_0x1176af(_0x4328a9['text']);return;}return db['Template']['findOne']({'attributes':[_0x4b50('0x57')],'where':{'id':_0x4328a9[_0x4b50('0x36')]},'raw':!![]})['then'](function(_0x378247){if(!_0x378247)throw new db[(_0x4b50('0x3a'))][(_0x4b50('0x34'))](_0x4b50('0x58'));var _0x369fc1=Mustache['render'](_0x378247[_0x4b50('0x57')],_0x4328a9[_0x4b50('0x37')]);_0x1176af(_0x369fc1);})[_0x4b50('0x56')](function(_0x17c569){_0x502b3d(_0x17c569);});});}function getRecipients(_0x521da9){return new BPromise(function(_0x1df4dc,_0x5efa1e){var _0x3a8570=[];var _0x529a37=[];_0x521da9[_0x4b50('0x52')](function(_0x4e4c61){var _0x2a7e9f=_[_0x4b50('0x59')](_0x4e4c61[_0x4b50('0x47')][_0x4b50('0x48')]());if(_0x2a7e9f==='User'){_0x3a8570=_[_0x4b50('0x5a')](_0x3a8570,_0x4e4c61[_0x4b50('0x5b')]);}else{if(_[_0x4b50('0x46')](_0x2a7e9f,'queue'))_0x2a7e9f=_0x2a7e9f[_0x4b50('0x5c')]('queue',_0x4b50('0x5d'));_0x4e4c61[_0x4b50('0x5b')][_0x4b50('0x52')](function(_0xd0f9fe){_0x529a37[_0x4b50('0x5e')](getAgents(_0x2a7e9f,_0xd0f9fe));});}});return BPromise[_0x4b50('0x5f')](_0x529a37)[_0x4b50('0x28')](function(_0x28baab){_0x3a8570=_[_0x4b50('0x5a')](_0x3a8570,_[_0x4b50('0x60')](_0x28baab));_0x1df4dc(_0x3a8570);})[_0x4b50('0x56')](function(_0x45571a){_0x5efa1e(_0x45571a);});});}function getAgents(_0x310608,_0x1baf33){return new BPromise(function(_0x50bdd7,_0x1233b2){return db[_0x310608][_0x4b50('0x61')]({'where':{'id':_0x1baf33}})[_0x4b50('0x28')](function(_0x3f4716){return _0x3f4716['getAgents']({'attributes':['id'],'raw':!![]})[_0x4b50('0x28')](function(_0x2cdce7){var _0x11fed3=_[_0x4b50('0x62')](_0x2cdce7,'id');_0x50bdd7(_0x11fed3);});})['catch'](function(_0x50c30b){_0x1233b2(_0x50c30b);});});}
\ No newline at end of file
index ddac337..3fa2b0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93c5=['emit','hasOwnProperty','hook','../../mysqldb','UserNotification','setMaxListeners','update','remove'];(function(_0x5b6fd3,_0x4af8d4){var _0x75ef1e=function(_0x3ff3e2){while(--_0x3ff3e2){_0x5b6fd3['push'](_0x5b6fd3['shift']());}};_0x75ef1e(++_0x4af8d4);}(_0x93c5,0xfb));var _0x593c=function(_0xc4001c,_0x1bf8f0){_0xc4001c=_0xc4001c-0x0;var _0x49f7bc=_0x93c5[_0xc4001c];return _0x49f7bc;};'use strict';var EventEmitter=require('events');var UserNotification=require(_0x593c('0x0'))['db'][_0x593c('0x1')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x593c('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x593c('0x3'),'afterDestroy':_0x593c('0x4')};function emitEvent(_0x3b0e8a){return function(_0x26b3a8,_0x523682,_0x500336){UserNotificationEvents[_0x593c('0x5')](_0x3b0e8a+':'+_0x26b3a8['id'],_0x26b3a8);UserNotificationEvents[_0x593c('0x5')](_0x3b0e8a,_0x26b3a8);_0x500336(null);};}for(var e in events){if(events[_0x593c('0x6')](e)){var event=events[e];UserNotification[_0x593c('0x7')](e,emitEvent(event));}}module['exports']=UserNotificationEvents;
\ No newline at end of file
+var _0xe310=['exports','events','../../mysqldb','UserNotification','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe310,0xd2));var _0x0e31=function(_0x53ea4e,_0x437db6){_0x53ea4e=_0x53ea4e-0x0;var _0x1f54dc=_0xe310[_0x53ea4e];return _0x1f54dc;};'use strict';var EventEmitter=require(_0x0e31('0x0'));var UserNotification=require(_0x0e31('0x1'))['db'][_0x0e31('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x0e31('0x3')](0x0);var events={'afterCreate':_0x0e31('0x4'),'afterUpdate':_0x0e31('0x5'),'afterDestroy':_0x0e31('0x6')};function emitEvent(_0x55729b){return function(_0x5cb3d4,_0x49a2e4,_0x53a475){UserNotificationEvents[_0x0e31('0x7')](_0x55729b+':'+_0x5cb3d4['id'],_0x5cb3d4);UserNotificationEvents[_0x0e31('0x7')](_0x55729b,_0x5cb3d4);_0x53a475(null);};}for(var e in events){if(events[_0x0e31('0x8')](e)){var event=events[e];UserNotification[_0x0e31('0x9')](e,emitEvent(event));}}module[_0x0e31('0xa')]=UserNotificationEvents;
\ No newline at end of file
index a776a98..8a9d7df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x158a=['../../config/environment','./userNotification.attributes','define','UserNotification','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','request-promise','rimraf'];(function(_0x17a0c1,_0x2f9964){var _0x20baab=function(_0x1fdfb9){while(--_0x1fdfb9){_0x17a0c1['push'](_0x17a0c1['shift']());}};_0x20baab(++_0x2f9964);}(_0x158a,0x10d));var _0xa158=function(_0x2c3498,_0xebd6f6){_0x2c3498=_0x2c3498-0x0;var _0x293ec9=_0x158a[_0x2c3498];return _0x293ec9;};'use strict';var _=require(_0xa158('0x0'));var util=require('util');var logger=require(_0xa158('0x1'))(_0xa158('0x2'));var moment=require(_0xa158('0x3'));var BPromise=require('bluebird');var rp=require(_0xa158('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa158('0x5'));var config=require(_0xa158('0x6'));var attributes=require(_0xa158('0x7'));module['exports']=function(_0x6bde0a,_0x1150c0){return _0x6bde0a[_0xa158('0x8')](_0xa158('0x9'),attributes,{'tableName':'userNotifications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xa158('0xa')});};
\ No newline at end of file
+var _0x7107=['userNotifications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','path','../../config/environment','./userNotification.attributes','exports'];(function(_0xa961c5,_0xdd9ef0){var _0x33e6bf=function(_0x55f981){while(--_0x55f981){_0xa961c5['push'](_0xa961c5['shift']());}};_0x33e6bf(++_0xdd9ef0);}(_0x7107,0x7b));var _0x7710=function(_0x423b51,_0xfda98e){_0x423b51=_0x423b51-0x0;var _0x403d01=_0x7107[_0x423b51];return _0x403d01;};'use strict';var _=require(_0x7710('0x0'));var util=require(_0x7710('0x1'));var logger=require(_0x7710('0x2'))(_0x7710('0x3'));var moment=require(_0x7710('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x7710('0x5'));var rimraf=require('rimraf');var config=require(_0x7710('0x6'));var attributes=require(_0x7710('0x7'));module[_0x7710('0x8')]=function(_0x48772e,_0x43425a){return _0x48772e['define']('UserNotification',attributes,{'tableName':_0x7710('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7710('0xa'),'collate':_0x7710('0xb')});};
\ No newline at end of file
index ceb0b2f..dc4277d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x901d=['redis','register','request','then','UserNotification,\x20%s,\x20%s','debug','UserNotification,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','defaults','localhost','socket.io-emitter'];(function(_0x14f639,_0xa6d4cf){var _0x4114cf=function(_0x4e26ff){while(--_0x4e26ff){_0x14f639['push'](_0x14f639['shift']());}};_0x4114cf(++_0xa6d4cf);}(_0x901d,0xc4));var _0xd901=function(_0x5e86e6,_0x3c6b6a){_0x5e86e6=_0x5e86e6-0x0;var _0x52bb53=_0x901d[_0x5e86e6];return _0x52bb53;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xd901('0x0'));var BPromise=require('bluebird');var rs=require(_0xd901('0x1'));var fs=require('fs');var Redis=require(_0xd901('0x2'));var db=require(_0xd901('0x3'))['db'];var utils=require(_0xd901('0x4'));var logger=require(_0xd901('0x5'))(_0xd901('0x6'));var config=require(_0xd901('0x7'));var jayson=require(_0xd901('0x8'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0xd901('0x9')](config['redis'],{'host':_0xd901('0xa'),'port':0x18eb});var socket=require(_0xd901('0xb'))(new Redis(config[_0xd901('0xc')]));require('./userNotification.socket')[_0xd901('0xd')](socket);function respondWithRpcPromise(_0x44dbea,_0x3f77cf,_0x55efa1){return new BPromise(function(_0x5d3a32,_0x59b9e4){return client[_0xd901('0xe')](_0x44dbea,_0x55efa1)[_0xd901('0xf')](function(_0x1d6bee){logger['info'](_0xd901('0x10'),_0x3f77cf,'request\x20sent');logger[_0xd901('0x11')](_0xd901('0x12'),_0x3f77cf,_0xd901('0x13'),JSON[_0xd901('0x14')](_0x1d6bee));if(_0x1d6bee['error']){if(_0x1d6bee[_0xd901('0x15')][_0xd901('0x16')]===0x1f4){logger[_0xd901('0x15')](_0xd901('0x10'),_0x3f77cf,_0x1d6bee[_0xd901('0x15')][_0xd901('0x17')]);return _0x59b9e4(_0x1d6bee[_0xd901('0x15')][_0xd901('0x17')]);}logger[_0xd901('0x15')](_0xd901('0x10'),_0x3f77cf,_0x1d6bee[_0xd901('0x15')][_0xd901('0x17')]);return _0x5d3a32(_0x1d6bee[_0xd901('0x15')][_0xd901('0x17')]);}else{logger['info'](_0xd901('0x10'),_0x3f77cf,_0xd901('0x13'));_0x5d3a32(_0x1d6bee[_0xd901('0x18')][_0xd901('0x17')]);}})[_0xd901('0x19')](function(_0x1ba1fa){logger[_0xd901('0x15')](_0xd901('0x10'),_0x3f77cf,_0x1ba1fa);_0x59b9e4(_0x1ba1fa);});});}
\ No newline at end of file
+var _0xd2b0=['jayson/promise','client','redis','defaults','./userNotification.socket','then','UserNotification,\x20%s,\x20%s','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','error','message','info','result','lodash','util','moment','bluebird','randomstring','rpc','../../config/environment'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xd2b0,0x188));var _0x0d2b=function(_0x1dfa63,_0x362bd4){_0x1dfa63=_0x1dfa63-0x0;var _0x26f2a9=_0xd2b0[_0x1dfa63];return _0x26f2a9;};'use strict';var _=require(_0x0d2b('0x0'));var util=require(_0x0d2b('0x1'));var moment=require(_0x0d2b('0x2'));var BPromise=require(_0x0d2b('0x3'));var rs=require(_0x0d2b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x0d2b('0x5'));var config=require(_0x0d2b('0x6'));var jayson=require(_0x0d2b('0x7'));var client=jayson[_0x0d2b('0x8')]['http']({'port':0x232a});config[_0x0d2b('0x9')]=_[_0x0d2b('0xa')](config[_0x0d2b('0x9')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0d2b('0x9')]));require(_0x0d2b('0xb'))['register'](socket);function respondWithRpcPromise(_0x330c33,_0x998d4d,_0x4701b3){return new BPromise(function(_0x1cff4b,_0x5a74ae){return client['request'](_0x330c33,_0x4701b3)[_0x0d2b('0xc')](function(_0x59ea20){logger['info'](_0x0d2b('0xd'),_0x998d4d,_0x0d2b('0xe'));logger[_0x0d2b('0xf')](_0x0d2b('0x10'),_0x998d4d,_0x0d2b('0xe'),JSON['stringify'](_0x59ea20));if(_0x59ea20[_0x0d2b('0x11')]){if(_0x59ea20[_0x0d2b('0x11')]['code']===0x1f4){logger[_0x0d2b('0x11')]('UserNotification,\x20%s,\x20%s',_0x998d4d,_0x59ea20['error'][_0x0d2b('0x12')]);return _0x5a74ae(_0x59ea20[_0x0d2b('0x11')][_0x0d2b('0x12')]);}logger[_0x0d2b('0x11')](_0x0d2b('0xd'),_0x998d4d,_0x59ea20[_0x0d2b('0x11')]['message']);return _0x1cff4b(_0x59ea20[_0x0d2b('0x11')][_0x0d2b('0x12')]);}else{logger[_0x0d2b('0x13')]('UserNotification,\x20%s,\x20%s',_0x998d4d,'request\x20sent');_0x1cff4b(_0x59ea20[_0x0d2b('0x14')][_0x0d2b('0x12')]);}})['catch'](function(_0x319570){logger['error']('UserNotification,\x20%s,\x20%s',_0x998d4d,_0x319570);_0x5a74ae(_0x319570);});});}
\ No newline at end of file
index 90bd967..d49d766 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2768=['register','length','userNotification:','save','remove','emit','removeListener'];(function(_0x5df41b,_0x3470ce){var _0x592b62=function(_0x2eaf96){while(--_0x2eaf96){_0x5df41b['push'](_0x5df41b['shift']());}};_0x592b62(++_0x3470ce);}(_0x2768,0x161));var _0x8276=function(_0x3e123e,_0x255375){_0x3e123e=_0x3e123e-0x0;var _0x3d9bfa=_0x2768[_0x3e123e];return _0x3d9bfa;};'use strict';var UserNotificationEvents=require('./userNotification.events');var events=[_0x8276('0x0'),_0x8276('0x1'),'update'];function createListener(_0x2b3526,_0x532d0b){return function(_0x1b4099){_0x532d0b[_0x8276('0x2')](_0x2b3526,_0x1b4099);};}function removeListener(_0x5025bc,_0x1ed8fe){return function(){UserNotificationEvents[_0x8276('0x3')](_0x5025bc,_0x1ed8fe);};}exports[_0x8276('0x4')]=function(_0x10973b){for(var _0xca2237=0x0,_0x5fd79b=events[_0x8276('0x5')];_0xca2237<_0x5fd79b;_0xca2237++){var _0x2e92f4=events[_0xca2237];var _0x5eb641=createListener(_0x8276('0x6')+_0x2e92f4,_0x10973b);UserNotificationEvents['on'](_0x2e92f4,_0x5eb641);}};
\ No newline at end of file
+var _0x0442=['./userNotification.events','save','update','emit','register'];(function(_0x92d1ff,_0xa9cb8c){var _0x2490d7=function(_0x2dba61){while(--_0x2dba61){_0x92d1ff['push'](_0x92d1ff['shift']());}};_0x2490d7(++_0xa9cb8c);}(_0x0442,0xd2));var _0x2044=function(_0x4b2863,_0x494899){_0x4b2863=_0x4b2863-0x0;var _0x567d67=_0x0442[_0x4b2863];return _0x567d67;};'use strict';var UserNotificationEvents=require(_0x2044('0x0'));var events=[_0x2044('0x1'),'remove',_0x2044('0x2')];function createListener(_0x2286cb,_0x33fd79){return function(_0x26e85f){_0x33fd79[_0x2044('0x3')](_0x2286cb,_0x26e85f);};}function removeListener(_0x16bcf1,_0x520ad9){return function(){UserNotificationEvents['removeListener'](_0x16bcf1,_0x520ad9);};}exports[_0x2044('0x4')]=function(_0x237450){for(var _0x16e94c=0x0,_0x36475a=events['length'];_0x16e94c<_0x36475a;_0x16e94c++){var _0x5e23da=events[_0x16e94c];var _0xf8bda6=createListener('userNotification:'+_0x5e23da,_0x237450);UserNotificationEvents['on'](_0x5e23da,_0xf8bda6);}};
\ No newline at end of file
index 74aa047..5f14e65 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(_0x4ddad1,_0x40ef92){var _0x594a50=function(_0x675ff3){while(--_0x675ff3){_0x4ddad1['push'](_0x4ddad1['shift']());}};_0x594a50(++_0x40ef92);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x1d426f,_0x37e919){_0x1d426f=_0x1d426f-0x0;var _0x17f71a=_0xcb91[_0x1d426f];return _0x17f71a;};'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 _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x132e98,_0x27a554){var _0x323218=function(_0x2bdaaf){while(--_0x2bdaaf){_0x132e98['push'](_0x132e98['shift']());}};_0x323218(++_0x27a554);}(_0xe706,0xa3));var _0x6e70=function(_0x252550,_0x1ffe4d){_0x252550=_0x252550-0x0;var _0x352629=_0xe706[_0x252550];return _0x352629;};'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 7c9feeb..4a4f078 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9d7=['exports','sequelize'];(function(_0xfb2fc6,_0x1c33ed){var _0x44f1fc=function(_0x63624d){while(--_0x63624d){_0xfb2fc6['push'](_0xfb2fc6['shift']());}};_0x44f1fc(++_0x1c33ed);}(_0xf9d7,0x12f));var _0x7f9d=function(_0x566816,_0x73fea5){_0x566816=_0x566816-0x0;var _0x36719c=_0xf9d7[_0x566816];return _0x36719c;};'use strict';var Sequelize=require(_0x7f9d('0x0'));module[_0x7f9d('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe75e=['INTEGER','sequelize','exports'];(function(_0x65c50e,_0x1aa926){var _0x4573e7=function(_0x5bc049){while(--_0x5bc049){_0x65c50e['push'](_0x65c50e['shift']());}};_0x4573e7(++_0x1aa926);}(_0xe75e,0x7f));var _0xee75=function(_0x4a93bb,_0x495404){_0x4a93bb=_0x4a93bb-0x0;var _0x208468=_0xe75e[_0x4a93bb];return _0x208468;};'use strict';var Sequelize=require(_0xee75('0x0'));module[_0xee75('0x1')]={'penalty':{'type':Sequelize[_0xee75('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 667b401..59d3b63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebac=['./userOpenchannelQueue.attributes','exports','UserOpenchannelQueue','user_has_openchannel_queues','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x117a7b,_0x1f833b){var _0x5be65f=function(_0x5f094a){while(--_0x5f094a){_0x117a7b['push'](_0x117a7b['shift']());}};_0x5be65f(++_0x1f833b);}(_0xebac,0x160));var _0xceba=function(_0x5144e6,_0x561398){_0x5144e6=_0x5144e6-0x0;var _0x5c1472=_0xebac[_0x5144e6];return _0x5c1472;};'use strict';var _=require('lodash');var util=require(_0xceba('0x0'));var logger=require(_0xceba('0x1'))(_0xceba('0x2'));var moment=require('moment');var BPromise=require(_0xceba('0x3'));var rp=require(_0xceba('0x4'));var fs=require('fs');var path=require(_0xceba('0x5'));var rimraf=require(_0xceba('0x6'));var config=require(_0xceba('0x7'));var attributes=require(_0xceba('0x8'));module[_0xceba('0x9')]=function(_0x24d37e,_0x3d1d94){return _0x24d37e['define'](_0xceba('0xa'),attributes,{'tableName':_0xceba('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3fce=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','exports','define','UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','../../config/logger'];(function(_0x570535,_0x395710){var _0x3503e1=function(_0x2be680){while(--_0x2be680){_0x570535['push'](_0x570535['shift']());}};_0x3503e1(++_0x395710);}(_0x3fce,0x1ce));var _0xe3fc=function(_0x6f3151,_0x406745){_0x6f3151=_0x6f3151-0x0;var _0x305fb8=_0x3fce[_0x6f3151];return _0x305fb8;};'use strict';var _=require(_0xe3fc('0x0'));var util=require(_0xe3fc('0x1'));var logger=require(_0xe3fc('0x2'))(_0xe3fc('0x3'));var moment=require(_0xe3fc('0x4'));var BPromise=require(_0xe3fc('0x5'));var rp=require(_0xe3fc('0x6'));var fs=require('fs');var path=require(_0xe3fc('0x7'));var rimraf=require(_0xe3fc('0x8'));var config=require(_0xe3fc('0x9'));var attributes=require(_0xe3fc('0xa'));module[_0xe3fc('0xb')]=function(_0x4a7a2f,_0x25a7da){return _0x4a7a2f[_0xe3fc('0xc')](_0xe3fc('0xd'),attributes,{'tableName':_0xe3fc('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 97ff099..b06f4a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4b6=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','UserOpenchannelQueue,\x20%s,\x20%s','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','lodash','moment'];(function(_0x3d5db9,_0x2dbe0a){var _0x3c114c=function(_0x3e0239){while(--_0x3e0239){_0x3d5db9['push'](_0x3d5db9['shift']());}};_0x3c114c(++_0x2dbe0a);}(_0xa4b6,0xfa));var _0x6a4b=function(_0x46aa24,_0x29338f){_0x46aa24=_0x46aa24-0x0;var _0x2686c4=_0xa4b6[_0x46aa24];return _0x2686c4;};'use strict';var _=require(_0x6a4b('0x0'));var util=require('util');var moment=require(_0x6a4b('0x1'));var BPromise=require('bluebird');var rs=require(_0x6a4b('0x2'));var fs=require('fs');var Redis=require(_0x6a4b('0x3'));var db=require(_0x6a4b('0x4'))['db'];var utils=require(_0x6a4b('0x5'));var logger=require(_0x6a4b('0x6'))('rpc');var config=require(_0x6a4b('0x7'));var jayson=require(_0x6a4b('0x8'));var client=jayson[_0x6a4b('0x9')][_0x6a4b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5ee7ba,_0x52cd22,_0x236249){return new BPromise(function(_0x573f65,_0x54d41b){return client[_0x6a4b('0xb')](_0x5ee7ba,_0x236249)[_0x6a4b('0xc')](function(_0x3cb432){logger[_0x6a4b('0xd')](_0x6a4b('0xe'),_0x52cd22,'request\x20sent');logger[_0x6a4b('0xf')](_0x6a4b('0x10'),_0x52cd22,_0x6a4b('0x11'),JSON['stringify'](_0x3cb432));if(_0x3cb432[_0x6a4b('0x12')]){if(_0x3cb432['error']['code']===0x1f4){logger[_0x6a4b('0x12')](_0x6a4b('0xe'),_0x52cd22,_0x3cb432['error']['message']);return _0x54d41b(_0x3cb432[_0x6a4b('0x12')][_0x6a4b('0x13')]);}logger['error'](_0x6a4b('0xe'),_0x52cd22,_0x3cb432['error'][_0x6a4b('0x13')]);return _0x573f65(_0x3cb432[_0x6a4b('0x12')][_0x6a4b('0x13')]);}else{logger[_0x6a4b('0xd')](_0x6a4b('0xe'),_0x52cd22,_0x6a4b('0x11'));_0x573f65(_0x3cb432[_0x6a4b('0x14')][_0x6a4b('0x13')]);}})['catch'](function(_0x423b64){logger[_0x6a4b('0x12')](_0x6a4b('0xe'),_0x52cd22,_0x423b64);_0x54d41b(_0x423b64);});});}
\ No newline at end of file
+var _0x9407=['info','request\x20sent','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','error','UserOpenchannelQueue,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x30deae,_0x2c5cef){var _0x1a704d=function(_0x2c0a8e){while(--_0x2c0a8e){_0x30deae['push'](_0x30deae['shift']());}};_0x1a704d(++_0x2c5cef);}(_0x9407,0xda));var _0x7940=function(_0x3f8b2e,_0x371cb7){_0x3f8b2e=_0x3f8b2e-0x0;var _0x13292f=_0x9407[_0x3f8b2e];return _0x13292f;};'use strict';var _=require(_0x7940('0x0'));var util=require(_0x7940('0x1'));var moment=require(_0x7940('0x2'));var BPromise=require(_0x7940('0x3'));var rs=require(_0x7940('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7940('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x7940('0x6'))('rpc');var config=require(_0x7940('0x7'));var jayson=require(_0x7940('0x8'));var client=jayson[_0x7940('0x9')][_0x7940('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x629d06,_0x37de0c,_0x2ff146){return new BPromise(function(_0x41ef1a,_0x1566ed){return client[_0x7940('0xb')](_0x629d06,_0x2ff146)[_0x7940('0xc')](function(_0x53e2c7){logger[_0x7940('0xd')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x37de0c,_0x7940('0xe'));logger['debug'](_0x7940('0xf'),_0x37de0c,_0x7940('0xe'),JSON['stringify'](_0x53e2c7));if(_0x53e2c7[_0x7940('0x10')]){if(_0x53e2c7[_0x7940('0x10')]['code']===0x1f4){logger[_0x7940('0x10')](_0x7940('0x11'),_0x37de0c,_0x53e2c7[_0x7940('0x10')][_0x7940('0x12')]);return _0x1566ed(_0x53e2c7[_0x7940('0x10')][_0x7940('0x12')]);}logger[_0x7940('0x10')](_0x7940('0x11'),_0x37de0c,_0x53e2c7[_0x7940('0x10')][_0x7940('0x12')]);return _0x41ef1a(_0x53e2c7[_0x7940('0x10')][_0x7940('0x12')]);}else{logger['info'](_0x7940('0x11'),_0x37de0c,_0x7940('0xe'));_0x41ef1a(_0x53e2c7[_0x7940('0x13')]['message']);}})[_0x7940('0x14')](function(_0xd28a9e){logger[_0x7940('0x10')](_0x7940('0x11'),_0x37de0c,_0xd28a9e);_0x1566ed(_0xd28a9e);});});}
\ No newline at end of file
index 654b4f0..8915db9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8be7=['getResources','post','create','clone','addSections','addResources','put','update','delete','destroy','removeSections','removeResources','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./userProfile.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/sections','/:id/resources'];(function(_0x53f504,_0x9e7dfb){var _0x14777e=function(_0x49fc9f){while(--_0x49fc9f){_0x53f504['push'](_0x53f504['shift']());}};_0x14777e(++_0x9e7dfb);}(_0x8be7,0x98));var _0x78be=function(_0x15329c,_0x44a0a2){_0x15329c=_0x15329c-0x0;var _0x566604=_0x8be7[_0x15329c];return _0x566604;};'use strict';var multer=require('multer');var util=require(_0x78be('0x0'));var path=require('path');var timeout=require(_0x78be('0x1'));var express=require(_0x78be('0x2'));var router=express[_0x78be('0x3')]();var fs_extra=require(_0x78be('0x4'));var auth=require(_0x78be('0x5'));var interaction=require(_0x78be('0x6'));var config=require('../../config/environment');var controller=require(_0x78be('0x7'));router[_0x78be('0x8')]('/',auth[_0x78be('0x9')](),controller[_0x78be('0xa')]);router['get'](_0x78be('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0x78be('0x8')](_0x78be('0xc'),auth['isAuthenticated'](),controller[_0x78be('0xd')]);router['get'](_0x78be('0xe'),auth[_0x78be('0x9')](),controller['getSections']);router['get'](_0x78be('0xf'),auth[_0x78be('0x9')](),controller[_0x78be('0x10')]);router[_0x78be('0x11')]('/',auth[_0x78be('0x9')](),controller[_0x78be('0x12')]);router[_0x78be('0x11')]('/:id/clone',auth['isAuthenticated'](),controller[_0x78be('0x13')]);router[_0x78be('0x11')](_0x78be('0xe'),auth[_0x78be('0x9')](),controller[_0x78be('0x14')]);router[_0x78be('0x11')](_0x78be('0xf'),auth[_0x78be('0x9')](),controller[_0x78be('0x15')]);router[_0x78be('0x16')](_0x78be('0xc'),auth['isAuthenticated'](),controller[_0x78be('0x17')]);router[_0x78be('0x18')]('/:id',auth[_0x78be('0x9')](),controller[_0x78be('0x19')]);router[_0x78be('0x18')](_0x78be('0xe'),auth[_0x78be('0x9')](),controller[_0x78be('0x1a')]);router['delete']('/:id/resources',auth['isAuthenticated'](),controller[_0x78be('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0xb7a6=['isAuthenticated','index','/describe','describe','/:id','/:id/sections','getSections','/:id/resources','getResources','create','post','/:id/clone','clone','addResources','put','update','delete','destroy','removeSections','removeResources','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0xec1efc,_0x1ff145){var _0x39f347=function(_0x40b8ad){while(--_0x40b8ad){_0xec1efc['push'](_0xec1efc['shift']());}};_0x39f347(++_0x1ff145);}(_0xb7a6,0x189));var _0x6b7a=function(_0x1ee00e,_0x298c64){_0x1ee00e=_0x1ee00e-0x0;var _0x46d572=_0xb7a6[_0x1ee00e];return _0x46d572;};'use strict';var multer=require('multer');var util=require(_0x6b7a('0x0'));var path=require(_0x6b7a('0x1'));var timeout=require(_0x6b7a('0x2'));var express=require(_0x6b7a('0x3'));var router=express[_0x6b7a('0x4')]();var fs_extra=require(_0x6b7a('0x5'));var auth=require(_0x6b7a('0x6'));var interaction=require(_0x6b7a('0x7'));var config=require(_0x6b7a('0x8'));var controller=require('./userProfile.controller');router[_0x6b7a('0x9')]('/',auth[_0x6b7a('0xa')](),controller[_0x6b7a('0xb')]);router['get'](_0x6b7a('0xc'),auth['isAuthenticated'](),controller[_0x6b7a('0xd')]);router[_0x6b7a('0x9')](_0x6b7a('0xe'),auth[_0x6b7a('0xa')](),controller['show']);router[_0x6b7a('0x9')](_0x6b7a('0xf'),auth[_0x6b7a('0xa')](),controller[_0x6b7a('0x10')]);router[_0x6b7a('0x9')](_0x6b7a('0x11'),auth[_0x6b7a('0xa')](),controller[_0x6b7a('0x12')]);router['post']('/',auth[_0x6b7a('0xa')](),controller[_0x6b7a('0x13')]);router[_0x6b7a('0x14')](_0x6b7a('0x15'),auth[_0x6b7a('0xa')](),controller[_0x6b7a('0x16')]);router[_0x6b7a('0x14')]('/:id/sections',auth[_0x6b7a('0xa')](),controller['addSections']);router['post'](_0x6b7a('0x11'),auth[_0x6b7a('0xa')](),controller[_0x6b7a('0x17')]);router[_0x6b7a('0x18')]('/:id',auth[_0x6b7a('0xa')](),controller[_0x6b7a('0x19')]);router[_0x6b7a('0x1a')](_0x6b7a('0xe'),auth[_0x6b7a('0xa')](),controller[_0x6b7a('0x1b')]);router['delete'](_0x6b7a('0xf'),auth[_0x6b7a('0xa')](),controller[_0x6b7a('0x1c')]);router[_0x6b7a('0x1a')](_0x6b7a('0x11'),auth['isAuthenticated'](),controller[_0x6b7a('0x1d')]);module[_0x6b7a('0x1e')]=router;
\ No newline at end of file
index 00881ed..fd91e28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe657=['sequelize','STRING','crudPermissions','join','getDataValue','split','BOOLEAN'];(function(_0x330397,_0x534e8b){var _0x45c164=function(_0x3b8d27){while(--_0x3b8d27){_0x330397['push'](_0x330397['shift']());}};_0x45c164(++_0x534e8b);}(_0xe657,0x16c));var _0x7e65=function(_0x2d96f1,_0xa647e4){_0x2d96f1=_0x2d96f1-0x0;var _0x41a5b0=_0xe657[_0x2d96f1];return _0x41a5b0;};'use strict';var Sequelize=require(_0x7e65('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'crudPermissions':{'type':Sequelize[_0x7e65('0x1')],'set':function(_0x3ecf30){this['setDataValue'](_0x7e65('0x2'),_0x3ecf30?_0x3ecf30[_0x7e65('0x3')](''):[]);},'get':function(){return this['getDataValue'](_0x7e65('0x2'))?this[_0x7e65('0x4')](_0x7e65('0x2'))[_0x7e65('0x5')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x7e65('0x1')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x7e65('0x6')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x7e65('0x6')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x7e65('0x6')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x7e65('0x6')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x7e65('0x6')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x7e65('0x6')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x7e65('0x6')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x7e65('0x6')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x1233=['join','getDataValue','BOOLEAN','sequelize','exports','STRING','name','setDataValue','crudPermissions'];(function(_0x166976,_0x5c38c9){var _0x2b4dad=function(_0x2a3d96){while(--_0x2a3d96){_0x166976['push'](_0x166976['shift']());}};_0x2b4dad(++_0x5c38c9);}(_0x1233,0x18f));var _0x3123=function(_0x146a85,_0x529b52){_0x146a85=_0x146a85-0x0;var _0x1b59bf=_0x1233[_0x146a85];return _0x1b59bf;};'use strict';var Sequelize=require(_0x3123('0x0'));module[_0x3123('0x1')]={'name':{'type':Sequelize[_0x3123('0x2')],'allowNull':![],'unique':_0x3123('0x3')},'crudPermissions':{'type':Sequelize[_0x3123('0x2')],'set':function(_0x35417c){this[_0x3123('0x4')](_0x3123('0x5'),_0x35417c?_0x35417c[_0x3123('0x6')](''):[]);},'get':function(){return this[_0x3123('0x7')](_0x3123('0x5'))?this[_0x3123('0x7')](_0x3123('0x5'))['split'](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x3123('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x3123('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x3123('0x8')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x3123('0x8')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x3123('0x8')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x3123('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x3123('0x8')],'defaultValue':!![]}};
\ No newline at end of file
index 88108bf..05b7e49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a18=['attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','create','body','clone','get','omit','createdAt','updatedAt','crudPermissions','transaction','UserProfileSection','findAll','each','autoAssociation','Resources','find','describe','addSections','sequelize','userProfileId','UserProfileResource','removeSections','ids','enabled','isEmpty','includes','sectionId','subsections','push','findOne','forEach','resourceId','bulkCreate','removeResources','getResources','Missing\x20section\x20parameter','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','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/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','status','end','offset','limit','undefined','count','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','index','UserProfile','rawAttributes','type','key','model','map','query','keys','filters','intersection'];(function(_0x127ad3,_0x500b22){var _0x31a776=function(_0x171d69){while(--_0x171d69){_0x127ad3['push'](_0x127ad3['shift']());}};_0x31a776(++_0x500b22);}(_0x9a18,0x187));var _0x89a1=function(_0x129d33,_0x5906a9){_0x129d33=_0x129d33-0x0;var _0x451545=_0x9a18[_0x129d33];return _0x451545;};'use strict';var emlformat=require(_0x89a1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x89a1('0x1'));var jsonpatch=require(_0x89a1('0x2'));var rp=require(_0x89a1('0x3'));var moment=require(_0x89a1('0x4'));var BPromise=require(_0x89a1('0x5'));var Mustache=require('mustache');var util=require(_0x89a1('0x6'));var path=require(_0x89a1('0x7'));var sox=require(_0x89a1('0x8'));var csv=require(_0x89a1('0x9'));var ejs=require(_0x89a1('0xa'));var fs=require('fs');var fs_extra=require(_0x89a1('0xb'));var _=require(_0x89a1('0xc'));var squel=require(_0x89a1('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x89a1('0xe'));var toCsv=require('to-csv');var querystring=require(_0x89a1('0xf'));var Papa=require(_0x89a1('0x10'));var Redis=require(_0x89a1('0x11'));var authService=require(_0x89a1('0x12'));var qs=require(_0x89a1('0x13'));var as=require(_0x89a1('0x14'));var hardwareService=require(_0x89a1('0x15'));var logger=require(_0x89a1('0x16'))(_0x89a1('0x17'));var utils=require(_0x89a1('0x18'));var config=require(_0x89a1('0x19'));var licenseUtil=require(_0x89a1('0x1a'));var db=require(_0x89a1('0x1b'))['db'];config['redis']=_['defaults'](config[_0x89a1('0x1c')],{'host':_0x89a1('0x1d'),'port':0x18eb});var socket=require(_0x89a1('0x1e'))(new Redis(config[_0x89a1('0x1c')]));require('./userProfile.socket')[_0x89a1('0x1f')](socket);function respondWithStatusCode(_0x2bae4a,_0x57287b){_0x57287b=_0x57287b||0xcc;return function(_0x24643a){if(_0x24643a){return _0x2bae4a[_0x89a1('0x20')](_0x57287b);}return _0x2bae4a[_0x89a1('0x21')](_0x57287b)[_0x89a1('0x22')]();};}function respondWithResult(_0x1f130e,_0x69dbd3){_0x69dbd3=_0x69dbd3||0xc8;return function(_0x7a1409){if(_0x7a1409){return _0x1f130e[_0x89a1('0x21')](_0x69dbd3)['json'](_0x7a1409);}};}function respondWithFilteredResult(_0x342f23,_0x976551){return function(_0x1dbb4a){if(_0x1dbb4a){var _0xa6a057=typeof _0x976551[_0x89a1('0x23')]==='undefined'&&typeof _0x976551[_0x89a1('0x24')]===_0x89a1('0x25');var _0x3aff36=_0x1dbb4a['count'];var _0x387465=_0xa6a057?0x0:_0x976551[_0x89a1('0x23')];var _0x1a3868=_0xa6a057?_0x1dbb4a[_0x89a1('0x26')]:_0x976551[_0x89a1('0x23')]+_0x976551[_0x89a1('0x24')];var _0x4cd448;if(_0x1a3868>=_0x3aff36){_0x1a3868=_0x3aff36;_0x4cd448=0xc8;}else{_0x4cd448=0xce;}_0x342f23[_0x89a1('0x21')](_0x4cd448);return _0x342f23['set'](_0x89a1('0x27'),_0x387465+'-'+_0x1a3868+'/'+_0x3aff36)[_0x89a1('0x28')](_0x1dbb4a);}return null;};}function patchUpdates(_0x16ff11){return function(_0x51c5f3){try{jsonpatch[_0x89a1('0x29')](_0x51c5f3,_0x16ff11,!![]);}catch(_0x4705b1){return BPromise[_0x89a1('0x2a')](_0x4705b1);}return _0x51c5f3[_0x89a1('0x2b')]();};}function saveUpdates(_0x393e23,_0x31f91d){return function(_0x39898e){if(_0x39898e){return _0x39898e[_0x89a1('0x2c')](_0x393e23)[_0x89a1('0x2d')](function(_0x581493){return _0x581493;});}return null;};}function removeEntity(_0x583324,_0x1d895e){return function(_0x1adefa){if(_0x1adefa){return _0x1adefa[_0x89a1('0x2e')]()[_0x89a1('0x2d')](function(){_0x583324[_0x89a1('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1330a6,_0x513ead){return function(_0x550333){if(!_0x550333){_0x1330a6[_0x89a1('0x20')](0x194);}return _0x550333;};}function handleError(_0xf0f1d5,_0x1d346a){_0x1d346a=_0x1d346a||0x1f4;return function(_0x86c90d){logger[_0x89a1('0x2f')](_0x86c90d[_0x89a1('0x30')]);if(_0x86c90d[_0x89a1('0x31')]){delete _0x86c90d[_0x89a1('0x31')];}_0xf0f1d5[_0x89a1('0x21')](_0x1d346a)['send'](_0x86c90d);};}exports[_0x89a1('0x32')]=function(_0x20a312,_0x30e173){var _0x4515ea={},_0x2b1ece={},_0x27de6d={'count':0x0,'rows':[]};var _0x4495a0=_['map'](db[_0x89a1('0x33')][_0x89a1('0x34')],function(_0x3ce269){return{'name':_0x3ce269['fieldName'],'type':_0x3ce269[_0x89a1('0x35')][_0x89a1('0x36')]};});_0x2b1ece[_0x89a1('0x37')]=_[_0x89a1('0x38')](_0x4495a0,_0x89a1('0x31'));_0x2b1ece[_0x89a1('0x39')]=_[_0x89a1('0x3a')](_0x20a312[_0x89a1('0x39')]);_0x2b1ece[_0x89a1('0x3b')]=_[_0x89a1('0x3c')](_0x2b1ece[_0x89a1('0x37')],_0x2b1ece[_0x89a1('0x39')]);_0x4515ea[_0x89a1('0x3d')]=_[_0x89a1('0x3c')](_0x2b1ece[_0x89a1('0x37')],qs[_0x89a1('0x3e')](_0x20a312[_0x89a1('0x39')][_0x89a1('0x3e')]));_0x4515ea['attributes']=_0x4515ea[_0x89a1('0x3d')][_0x89a1('0x3f')]?_0x4515ea[_0x89a1('0x3d')]:_0x2b1ece[_0x89a1('0x37')];if(!_0x20a312[_0x89a1('0x39')][_0x89a1('0x40')]('nolimit')){_0x4515ea[_0x89a1('0x24')]=qs[_0x89a1('0x24')](_0x20a312['query'][_0x89a1('0x24')]);_0x4515ea['offset']=qs[_0x89a1('0x23')](_0x20a312[_0x89a1('0x39')][_0x89a1('0x23')]);}_0x4515ea[_0x89a1('0x41')]=qs[_0x89a1('0x42')](_0x20a312['query'][_0x89a1('0x42')]);_0x4515ea[_0x89a1('0x43')]=qs[_0x89a1('0x3b')](_['pick'](_0x20a312[_0x89a1('0x39')],_0x2b1ece[_0x89a1('0x3b')]),_0x4495a0);if(_0x20a312[_0x89a1('0x39')][_0x89a1('0x44')]){_0x4515ea[_0x89a1('0x43')]=_[_0x89a1('0x45')](_0x4515ea[_0x89a1('0x43')],{'$or':_[_0x89a1('0x38')](_0x4495a0,function(_0x565831){if(_0x565831['type']!==_0x89a1('0x46')){var _0x40e8ad={};_0x40e8ad[_0x565831[_0x89a1('0x31')]]={'$like':'%'+_0x20a312['query'][_0x89a1('0x44')]+'%'};return _0x40e8ad;}})});}_0x4515ea=_[_0x89a1('0x45')]({},_0x4515ea,_0x20a312[_0x89a1('0x47')]);var _0x357dee={'where':_0x4515ea['where']};return db[_0x89a1('0x33')][_0x89a1('0x26')](_0x357dee)[_0x89a1('0x2d')](function(_0x4a4e90){_0x27de6d['count']=_0x4a4e90;if(_0x20a312[_0x89a1('0x39')][_0x89a1('0x48')]){_0x4515ea[_0x89a1('0x49')]=[{'all':!![]}];}return db[_0x89a1('0x33')]['findAll'](_0x4515ea);})['then'](function(_0x17669a){_0x27de6d[_0x89a1('0x4a')]=_0x17669a;return _0x27de6d;})[_0x89a1('0x2d')](respondWithFilteredResult(_0x30e173,_0x4515ea))[_0x89a1('0x4b')](handleError(_0x30e173,null));};exports[_0x89a1('0x4c')]=function(_0x14cbaa,_0x5bc510){var _0x3ba121={'raw':![],'where':{'id':_0x14cbaa[_0x89a1('0x4d')]['id']}},_0x18f314={};_0x18f314[_0x89a1('0x37')]=_[_0x89a1('0x3a')](db['UserProfile'][_0x89a1('0x34')]);_0x18f314[_0x89a1('0x39')]=_[_0x89a1('0x3a')](_0x14cbaa[_0x89a1('0x39')]);_0x18f314['filters']=_[_0x89a1('0x3c')](_0x18f314[_0x89a1('0x37')],_0x18f314[_0x89a1('0x39')]);_0x3ba121['attributes']=_[_0x89a1('0x3c')](_0x18f314[_0x89a1('0x37')],qs[_0x89a1('0x3e')](_0x14cbaa[_0x89a1('0x39')][_0x89a1('0x3e')]));_0x3ba121['attributes']=_0x3ba121[_0x89a1('0x3d')][_0x89a1('0x3f')]?_0x3ba121[_0x89a1('0x3d')]:_0x18f314['model'];if(_0x14cbaa[_0x89a1('0x39')]['includeAll']){_0x3ba121[_0x89a1('0x49')]=[{'all':!![]}];}_0x3ba121=_['merge']({},_0x3ba121,_0x14cbaa[_0x89a1('0x47')]);return db[_0x89a1('0x33')]['find'](_0x3ba121)[_0x89a1('0x2d')](handleEntityNotFound(_0x5bc510,null))[_0x89a1('0x2d')](respondWithResult(_0x5bc510,null))[_0x89a1('0x4b')](handleError(_0x5bc510,null));};exports[_0x89a1('0x4e')]=function(_0x184eee,_0x281961){return db[_0x89a1('0x33')][_0x89a1('0x4e')](_0x184eee[_0x89a1('0x4f')],{})[_0x89a1('0x2d')](respondWithResult(_0x281961,0xc9))[_0x89a1('0x4b')](handleError(_0x281961,null));};exports[_0x89a1('0x50')]=function(_0x4c89cb,_0x2cff9c){var _0x8296d5={'where':{'id':_0x4c89cb[_0x89a1('0x4d')]['id']}},_0xe742a3={};_0xe742a3[_0x89a1('0x37')]=_[_0x89a1('0x3a')](db[_0x89a1('0x33')]['rawAttributes']);_0x8296d5[_0x89a1('0x3d')]=_[_0x89a1('0x3c')](_0xe742a3[_0x89a1('0x37')],qs[_0x89a1('0x3e')](_0x4c89cb[_0x89a1('0x39')][_0x89a1('0x3e')]));_0x8296d5[_0x89a1('0x3d')]=_0x8296d5['attributes'][_0x89a1('0x3f')]?_0x8296d5[_0x89a1('0x3d')]:_0xe742a3['model'];if(_0x4c89cb[_0x89a1('0x39')]['includeAll']){_0x8296d5[_0x89a1('0x49')]=[{'all':!![]}];}_0x8296d5=_[_0x89a1('0x45')]({},_0x8296d5,_0x4c89cb[_0x89a1('0x47')]);return db['UserProfile']['find'](_0x8296d5)['then'](handleEntityNotFound(_0x2cff9c,null))['then'](function(_0x109349){if(_0x109349){var _0x21e4dd=_0x109349[_0x89a1('0x51')]({'plain':!![]});_0x21e4dd=qs[_0x89a1('0x52')](_0x21e4dd,['id',_0x89a1('0x53'),_0x89a1('0x54'),_0x89a1('0x55')]);_0x4c89cb[_0x89a1('0x4f')]=_[_0x89a1('0x52')](_0x4c89cb[_0x89a1('0x4f')],['id','createdAt',_0x89a1('0x54')]);return db['sequelize'][_0x89a1('0x56')](function(_0x3d74b1){return db['UserProfile'][_0x89a1('0x4e')](_[_0x89a1('0x45')](_0x21e4dd,_0x4c89cb[_0x89a1('0x4f')]),{'include':_0x4c89cb[_0x89a1('0x39')][_0x89a1('0x48')]?[{'all':!![]}]:undefined,'transaction':_0x3d74b1})['then'](function(_0x1cfb52){var _0x2c6248=_0x1cfb52[_0x89a1('0x51')]({'plain':!![]});return db[_0x89a1('0x57')][_0x89a1('0x58')]({'where':{'userProfileId':_0x4c89cb['params']['id']},'raw':!![]})[_0x89a1('0x2d')](function(_0x1f7610){if(_0x1f7610){return BPromise[_0x89a1('0x59')](_0x1f7610,function(_0x487e9e){return new BPromise(function(_0x2a5441,_0x86ce3d){if(_0x487e9e['autoAssociation']===null||_0x487e9e[_0x89a1('0x5a')]===0x1)_0x2a5441(null);return db['UserProfileResource']['findAll']({'where':{'sectionId':_0x487e9e['id']},'raw':!![]})[_0x89a1('0x2d')](function(_0x44fde9){var _0x164380=_[_0x89a1('0x38')](_0x44fde9,function(_0x695226){return qs[_0x89a1('0x52')](_0x695226,['id','createdAt',_0x89a1('0x54'),'sectionId']);});_0x2a5441(_0x164380);})['catch'](function(_0x4c3b00){_0x86ce3d(_0x4c3b00);});})[_0x89a1('0x2d')](function(_0x241a04){var _0x354448=qs[_0x89a1('0x52')](_0x487e9e,['id',_0x89a1('0x53'),_0x89a1('0x54')]);_0x354448['userProfileId']=_0x2c6248['id'];if(_0x241a04)_0x354448[_0x89a1('0x5b')]=_0x241a04;return _0x354448;})['then'](function(_0x2ea7b0){return db[_0x89a1('0x57')]['create'](_0x2ea7b0,{'include':[{'model':db['UserProfileResource'],'as':'Resources'}],'raw':!![],'transaction':_0x3d74b1});});})['then'](function(){return _0x2c6248;});}});});});}})[_0x89a1('0x2d')](respondWithResult(_0x2cff9c,0xc9))[_0x89a1('0x4b')](handleError(_0x2cff9c,null));};exports[_0x89a1('0x2c')]=function(_0x339b3d,_0x35f9c0){if(_0x339b3d[_0x89a1('0x4f')]['id']){delete _0x339b3d[_0x89a1('0x4f')]['id'];}return db[_0x89a1('0x33')]['find']({'where':{'id':_0x339b3d[_0x89a1('0x4d')]['id']}})[_0x89a1('0x2d')](handleEntityNotFound(_0x35f9c0,null))[_0x89a1('0x2d')](saveUpdates(_0x339b3d[_0x89a1('0x4f')],null))[_0x89a1('0x2d')](respondWithResult(_0x35f9c0,null))[_0x89a1('0x4b')](handleError(_0x35f9c0,null));};exports[_0x89a1('0x2e')]=function(_0x5e897c,_0x58fde6){return db[_0x89a1('0x33')][_0x89a1('0x5c')]({'where':{'id':_0x5e897c['params']['id']}})[_0x89a1('0x2d')](handleEntityNotFound(_0x58fde6,null))[_0x89a1('0x2d')](removeEntity(_0x58fde6,null))[_0x89a1('0x4b')](handleError(_0x58fde6,null));};exports['describe']=function(_0x39ea81,_0x301768){return db[_0x89a1('0x33')][_0x89a1('0x5d')]()[_0x89a1('0x2d')](respondWithResult(_0x301768,null))[_0x89a1('0x4b')](handleError(_0x301768,null));};exports[_0x89a1('0x5e')]=function(_0x63260d,_0x35fbfd){var _0x10e7fe=_0x63260d[_0x89a1('0x4f')];return db['UserProfile']['find']({'where':{'id':_0x63260d[_0x89a1('0x4d')]['id']}})[_0x89a1('0x2d')](handleEntityNotFound(_0x35fbfd,null))[_0x89a1('0x2d')](function(_0x5190d8){if(_0x5190d8){return db[_0x89a1('0x5f')][_0x89a1('0x56')](function(_0x26d552){return db[_0x89a1('0x57')][_0x89a1('0x2e')]({'where':{'userProfileId':_0x63260d[_0x89a1('0x4d')]['id'],'sectionId':_[_0x89a1('0x38')](_0x10e7fe,function(_0xa09ff1){return _0xa09ff1['sectionId'];})},'transaction':_0x26d552})[_0x89a1('0x2d')](function(){var _0x57973d=_[_0x89a1('0x38')](_0x10e7fe,function(_0x340a85){_0x340a85[_0x89a1('0x60')]=_0x63260d[_0x89a1('0x4d')]['id'];return _0x340a85;});var _0x1639f6=[];return BPromise[_0x89a1('0x59')](_0x57973d,function(_0x587854){return db[_0x89a1('0x57')][_0x89a1('0x4e')](_0x587854,{'include':[{'model':db[_0x89a1('0x61')],'as':_0x89a1('0x5b')}],'raw':!![],'transaction':_0x26d552})[_0x89a1('0x2d')](function(_0x48c4a2){_0x1639f6['push'](_0x48c4a2[_0x89a1('0x51')]({'plain':!![]}));});})['then'](function(){return _0x1639f6;});});});}})[_0x89a1('0x2d')](function(_0x1bdca6){return _0x1bdca6;})[_0x89a1('0x2d')](respondWithResult(_0x35fbfd,null))['catch'](handleError(_0x35fbfd,null));};exports[_0x89a1('0x62')]=function(_0x5c79b9,_0x48a171){var _0x167f64;return db[_0x89a1('0x33')][_0x89a1('0x5c')]({'where':{'id':_0x5c79b9['params']['id']},'attributes':['id','name']})['then'](handleEntityNotFound(_0x48a171,null))['then'](function(_0x2228e3){if(_0x2228e3){_0x167f64=_0x2228e3;return db[_0x89a1('0x57')][_0x89a1('0x2e')]({'where':{'userProfileId':_0x5c79b9[_0x89a1('0x4d')]['id'],'sectionId':_0x5c79b9[_0x89a1('0x39')][_0x89a1('0x63')]}});}})['then'](function(){return _0x167f64;})[_0x89a1('0x2d')](respondWithStatusCode(_0x48a171,null))['catch'](handleError(_0x48a171,null));};exports['getSections']=function(_0x10d842,_0x599414){var _0x2ad76e=[];var _0x438eb1=[];return db['UserProfileSection'][_0x89a1('0x58')]({'where':{'userProfileId':_0x10d842['params']['id']},'raw':!![]})[_0x89a1('0x2d')](function(_0x35cf31){_0x2ad76e=_['filter'](_0x35cf31,function(_0x17c4dc){return _0x17c4dc[_0x89a1('0x64')]===0x1||_['includes']([0x3eb,0x709],_0x17c4dc['sectionId']);});if(!_[_0x89a1('0x65')](_0x2ad76e)){return _['map'](_0x2ad76e,function(_0x418c12){return _0x418c12['sectionId'];});}else{return;}})[_0x89a1('0x2d')](function(_0x238f4c){if(_0x238f4c)_0x438eb1=_0x238f4c;if(_[_0x89a1('0x66')](_0x438eb1,0x64)){var _0x42f6b8=_['find'](_0x2ad76e,{'sectionId':0x64});return hasDefaultDashboard(_0x42f6b8)[_0x89a1('0x2d')](function(_0x5ec242){return _[_0x89a1('0x38')](_0x2ad76e,function(_0xe4e56c){if(_0xe4e56c[_0x89a1('0x67')]===0x64){_0xe4e56c['subsections']=_0x5ec242;}return _0xe4e56c;});});}else{return;}})[_0x89a1('0x2d')](function(_0x7cef9e){if(_0x7cef9e)_0x2ad76e=_0x7cef9e;if(_['includes'](_0x438eb1,0x3eb)){var _0x3932db=_['find'](_0x2ad76e,{'sectionId':0x3eb});return getCustomDashboards(_0x3932db)['then'](function(_0x24e4fb){return _[_0x89a1('0x38')](_0x2ad76e,function(_0x3fbaac){if(_0x3932db[_0x89a1('0x64')]){if(_0x3fbaac['sectionId']===0x3eb){_0x3fbaac[_0x89a1('0x68')]=_0x24e4fb;}}else{if(_0x3fbaac['sectionId']===0x64){_0x3fbaac[_0x89a1('0x68')]=_0x24e4fb;}}return _0x3fbaac;});});}else{return;}})[_0x89a1('0x2d')](function(_0x3aea97){if(_0x3aea97)_0x2ad76e=_0x3aea97;if(_[_0x89a1('0x66')](_0x438eb1,0x709)){var _0x6f2479=_['find'](_0x2ad76e,{'sectionId':0x709});return getPlugins(_0x6f2479)[_0x89a1('0x2d')](function(_0x250bf9){if(_0x6f2479['enabled']){return _['map'](_0x2ad76e,function(_0x53820c){if(_0x53820c['sectionId']===0x709){_0x53820c['subsections']=_0x250bf9;}return _0x53820c;});}else{var _0xa78f57={'sectionId':0x76c,'enabled':0x1,'subsections':_0x250bf9};var _0x257ab4=_[_0x89a1('0x38')](_0x2ad76e);_0x257ab4[_0x89a1('0x69')](_0xa78f57);return _0x257ab4;}});}else{return;}})[_0x89a1('0x2d')](function(_0xf7f73a){if(_0xf7f73a)_0x2ad76e=_0xf7f73a;return _[_0x89a1('0x44')](_0x2ad76e,[_0x89a1('0x64'),0x1]);})[_0x89a1('0x2d')](respondWithResult(_0x599414,null))[_0x89a1('0x4b')](handleError(_0x599414,null));};function hasDefaultDashboard(_0x2dedb4){var _0x557e7e=[0x65];return new BPromise(function(_0x115691,_0x1d316e){try{if(_0x2dedb4['autoAssociation']){_0x115691(_0x557e7e);}else{return db['UserProfileResource'][_0x89a1('0x6a')]({'where':{'sectionId':_0x2dedb4['id']},'raw':!![]})['then'](function(_0x5c233f){_0x5c233f?_0x115691(_0x557e7e):_0x115691();});}}catch(_0x33c511){_0x1d316e(_0x33c511);}});}function getCustomDashboards(_0x328d62){var _0x4358f4=[];return new BPromise(function(_0x40e8a7,_0x1bcb57){try{if(_0x328d62[_0x89a1('0x5a')]){return db['Dashboard']['findAll']({'raw':!![]})[_0x89a1('0x2d')](function(_0xcfaeac){_0xcfaeac[_0x89a1('0x6b')](function(_0x133fe0){_0x4358f4[_0x89a1('0x69')](_0x133fe0['id']+0x1869f);});_0x40e8a7(_0x4358f4);});}else{return db['UserProfileResource'][_0x89a1('0x58')]({'where':{'sectionId':_0x328d62['id']},'raw':!![]})['then'](function(_0x1daa22){_0x1daa22[_0x89a1('0x6b')](function(_0x5d5b5c){_0x4358f4[_0x89a1('0x69')](_0x5d5b5c[_0x89a1('0x6c')]+0x1869f);});_0x40e8a7(_0x4358f4);});}}catch(_0x9a7c07){_0x1bcb57(_0x9a7c07);}});}function getPlugins(_0x4b2030){var _0x3bd01b=[];return new BPromise(function(_0x2b19fc,_0x2ab4fb){try{if(_0x4b2030[_0x89a1('0x5a')]){return db['Plugin'][_0x89a1('0x58')]({'raw':!![]})[_0x89a1('0x2d')](function(_0x79179a){_0x79179a[_0x89a1('0x6b')](function(_0x3a8bd7){_0x3bd01b[_0x89a1('0x69')](_0x3a8bd7['id']+0x15b38);});_0x2b19fc(_0x3bd01b);});}else{return db[_0x89a1('0x61')]['findAll']({'where':{'sectionId':_0x4b2030['id']},'raw':!![]})['then'](function(_0x2d7651){_0x2d7651[_0x89a1('0x6b')](function(_0x327cd4){_0x3bd01b[_0x89a1('0x69')](_0x327cd4[_0x89a1('0x6c')]+0x15b38);});_0x2b19fc(_0x3bd01b);});}}catch(_0x555d0b){_0x2ab4fb(_0x555d0b);}});}exports['addResources']=function(_0x524df4,_0x69c7a3){return db[_0x89a1('0x33')]['find']({'where':{'id':_0x524df4[_0x89a1('0x4d')]['id']}})[_0x89a1('0x2d')](handleEntityNotFound(_0x69c7a3,null))[_0x89a1('0x2d')](function(_0x548b86){if(_0x548b86){return db[_0x89a1('0x5f')]['transaction'](function(_0x3c45f3){return db[_0x89a1('0x57')][_0x89a1('0x58')]({'where':{'userProfileId':_0x524df4[_0x89a1('0x4d')]['id']},'attributes':['id'],'raw':!![]})[_0x89a1('0x2d')](function(_0x54d54a){if(_0x54d54a){return db['UserProfileSection'][_0x89a1('0x2e')]({'where':{'userProfileId':_0x524df4['params']['id'],'id':_[_0x89a1('0x38')](_0x54d54a,function(_0x23a2aa){return _0x23a2aa['id'];})},'transaction':_0x3c45f3});}})[_0x89a1('0x2d')](function(_0x57ee2f){var _0x160194=_[_0x89a1('0x38')](_0x524df4[_0x89a1('0x4f')],function(_0x234037){_0x234037['userProfileId']=_0x524df4[_0x89a1('0x4d')]['id'];return _0x234037;});return db[_0x89a1('0x57')][_0x89a1('0x6d')](_0x160194,{'raw':!![],'transaction':_0x3c45f3});})[_0x89a1('0x2d')](function(_0x340496){var _0x332c8a=_[_0x89a1('0x44')](_['map'](_0x340496,function(_0x5147eb){return _0x5147eb[_0x89a1('0x51')]({'plain':!![]});}),{'includeAll':![]});if(_0x332c8a){return db[_0x89a1('0x57')][_0x89a1('0x58')]({'where':{'userProfileId':_0x524df4['params']['id'],'sectionId':_[_0x89a1('0x38')](_0x332c8a,function(_0x54ce6b){return _0x54ce6b[_0x89a1('0x67')];})},'attributes':['id',_0x89a1('0x67')],'raw':!![]})[_0x89a1('0x2d')](function(_0x1088d2){var _0x42a5a3=_[_0x89a1('0x38')](_0x524df4[_0x89a1('0x4f')],function(_0x282598){_0x282598['userProfileId']=_0x524df4[_0x89a1('0x4d')]['id'];return _0x282598;});return db[_0x89a1('0x61')]['bulkCreate'](_0x42a5a3,{'raw':!![],'transaction':_0x3c45f3});});}})[_0x89a1('0x4b')](handleError(_0x69c7a3,null));});}})[_0x89a1('0x2d')](function(_0x44ab0e){var _0x36661a=_[_0x89a1('0x38')](_0x44ab0e,function(_0x626029){return _0x626029[_0x89a1('0x51')]({'plain':!![]});});})[_0x89a1('0x2d')](respondWithResult(_0x69c7a3,null))[_0x89a1('0x4b')](handleError(_0x69c7a3,null));};exports[_0x89a1('0x6e')]=function(_0x4b95bb,_0x50e620,_0x308cf2){return db[_0x89a1('0x33')][_0x89a1('0x5c')]({'where':{'id':_0x4b95bb[_0x89a1('0x4d')]['id']}})[_0x89a1('0x2d')](handleEntityNotFound(_0x50e620,null))[_0x89a1('0x2d')](function(_0x4aa6ed){if(_0x4aa6ed){return _0x4aa6ed['removeResources'](_0x4b95bb[_0x89a1('0x39')][_0x89a1('0x63')]);}})['then'](respondWithStatusCode(_0x50e620,null))[_0x89a1('0x4b')](handleError(_0x50e620,null));};exports[_0x89a1('0x6f')]=function(_0x132d51,_0x71c928){var _0x59f1f9={};if(!_0x132d51['query']['section'])throw new Error(_0x89a1('0x70'));if(!_0x132d51[_0x89a1('0x39')]['hasOwnProperty']('nolimit')){_0x59f1f9[_0x89a1('0x24')]=qs[_0x89a1('0x24')](_0x132d51[_0x89a1('0x39')][_0x89a1('0x24')]);_0x59f1f9[_0x89a1('0x23')]=qs[_0x89a1('0x23')](_0x132d51['query']['offset']);}return db[_0x89a1('0x33')][_0x89a1('0x5c')]({'where':{'id':_0x132d51[_0x89a1('0x4d')]['id']}})[_0x89a1('0x2d')](function(_0x1ca2f8){if(!_0x1ca2f8)throw new Error('No\x20User\x20Profile\x20found\x20for\x20id\x20'+_0x132d51[_0x89a1('0x4d')]['id']);return db['UserProfile'][_0x89a1('0x6f')](_0x132d51);})[_0x89a1('0x2d')](respondWithFilteredResult(_0x71c928,_0x59f1f9))['catch'](handleError(_0x71c928,null));};
\ No newline at end of file
+var _0x3d04=['count','set','Content-Range','apply','reject','update','destroy','error','stack','name','send','map','UserProfile','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','then','includeAll','include','rows','show','params','rawAttributes','merge','find','catch','create','body','clone','get','omit','createdAt','updatedAt','sequelize','transaction','UserProfileSection','findAll','each','sectionId','userProfileId','Resources','UserProfileResource','describe','addSections','push','removeSections','ids','getSections','enabled','includes','subsections','autoAssociation','findOne','forEach','resourceId','Plugin','bulkCreate','removeResources','getResources','section','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./userProfile.socket','register','sendStatus','status','end','json','offset','undefined','limit'];(function(_0x1e6bf3,_0x4133b2){var _0x21ea62=function(_0x2e9f58){while(--_0x2e9f58){_0x1e6bf3['push'](_0x1e6bf3['shift']());}};_0x21ea62(++_0x4133b2);}(_0x3d04,0xbe));var _0x43d0=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x3d04[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require(_0x43d0('0x0'));var rimraf=require(_0x43d0('0x1'));var zipdir=require(_0x43d0('0x2'));var jsonpatch=require(_0x43d0('0x3'));var rp=require(_0x43d0('0x4'));var moment=require(_0x43d0('0x5'));var BPromise=require(_0x43d0('0x6'));var Mustache=require(_0x43d0('0x7'));var util=require('util');var path=require(_0x43d0('0x8'));var sox=require(_0x43d0('0x9'));var csv=require(_0x43d0('0xa'));var ejs=require(_0x43d0('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x43d0('0xc'));var deskjs=require(_0x43d0('0xd'));var toCsv=require(_0x43d0('0xa'));var querystring=require(_0x43d0('0xe'));var Papa=require(_0x43d0('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x43d0('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x43d0('0x11'))(_0x43d0('0x12'));var utils=require(_0x43d0('0x13'));var config=require(_0x43d0('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x43d0('0x15'))['db'];config[_0x43d0('0x16')]=_['defaults'](config[_0x43d0('0x16')],{'host':_0x43d0('0x17'),'port':0x18eb});var socket=require(_0x43d0('0x18'))(new Redis(config['redis']));require(_0x43d0('0x19'))[_0x43d0('0x1a')](socket);function respondWithStatusCode(_0x436130,_0x47f3c6){_0x47f3c6=_0x47f3c6||0xcc;return function(_0x257510){if(_0x257510){return _0x436130[_0x43d0('0x1b')](_0x47f3c6);}return _0x436130[_0x43d0('0x1c')](_0x47f3c6)[_0x43d0('0x1d')]();};}function respondWithResult(_0x91b4a1,_0x4aa32a){_0x4aa32a=_0x4aa32a||0xc8;return function(_0x5d4fc4){if(_0x5d4fc4){return _0x91b4a1[_0x43d0('0x1c')](_0x4aa32a)[_0x43d0('0x1e')](_0x5d4fc4);}};}function respondWithFilteredResult(_0x35decf,_0x56a27b){return function(_0x2c641e){if(_0x2c641e){var _0x532402=typeof _0x56a27b[_0x43d0('0x1f')]===_0x43d0('0x20')&&typeof _0x56a27b[_0x43d0('0x21')]==='undefined';var _0x3d7dcc=_0x2c641e[_0x43d0('0x22')];var _0x4d9146=_0x532402?0x0:_0x56a27b[_0x43d0('0x1f')];var _0x135126=_0x532402?_0x2c641e[_0x43d0('0x22')]:_0x56a27b[_0x43d0('0x1f')]+_0x56a27b[_0x43d0('0x21')];var _0x28381b;if(_0x135126>=_0x3d7dcc){_0x135126=_0x3d7dcc;_0x28381b=0xc8;}else{_0x28381b=0xce;}_0x35decf[_0x43d0('0x1c')](_0x28381b);return _0x35decf[_0x43d0('0x23')](_0x43d0('0x24'),_0x4d9146+'-'+_0x135126+'/'+_0x3d7dcc)[_0x43d0('0x1e')](_0x2c641e);}return null;};}function patchUpdates(_0xec5f07){return function(_0x19d2ff){try{jsonpatch[_0x43d0('0x25')](_0x19d2ff,_0xec5f07,!![]);}catch(_0xbc72e6){return BPromise[_0x43d0('0x26')](_0xbc72e6);}return _0x19d2ff['save']();};}function saveUpdates(_0x2c7b24,_0x1bf6ae){return function(_0x509041){if(_0x509041){return _0x509041[_0x43d0('0x27')](_0x2c7b24)['then'](function(_0x29c111){return _0x29c111;});}return null;};}function removeEntity(_0x44497b,_0x5dd310){return function(_0x3e38e4){if(_0x3e38e4){return _0x3e38e4[_0x43d0('0x28')]()['then'](function(){_0x44497b[_0x43d0('0x1c')](0xcc)[_0x43d0('0x1d')]();});}};}function handleEntityNotFound(_0x22ae3c,_0x5f16ac){return function(_0x447725){if(!_0x447725){_0x22ae3c[_0x43d0('0x1b')](0x194);}return _0x447725;};}function handleError(_0x2c4f3f,_0x1eb771){_0x1eb771=_0x1eb771||0x1f4;return function(_0x37d78f){logger[_0x43d0('0x29')](_0x37d78f[_0x43d0('0x2a')]);if(_0x37d78f['name']){delete _0x37d78f[_0x43d0('0x2b')];}_0x2c4f3f[_0x43d0('0x1c')](_0x1eb771)[_0x43d0('0x2c')](_0x37d78f);};}exports['index']=function(_0x4bfce9,_0x52c37b){var _0x3c1ea3={},_0x2db9dc={},_0x10086b={'count':0x0,'rows':[]};var _0x13e3c9=_[_0x43d0('0x2d')](db[_0x43d0('0x2e')]['rawAttributes'],function(_0x77654d){return{'name':_0x77654d[_0x43d0('0x2f')],'type':_0x77654d[_0x43d0('0x30')][_0x43d0('0x31')]};});_0x2db9dc[_0x43d0('0x32')]=_[_0x43d0('0x2d')](_0x13e3c9,_0x43d0('0x2b'));_0x2db9dc[_0x43d0('0x33')]=_[_0x43d0('0x34')](_0x4bfce9[_0x43d0('0x33')]);_0x2db9dc[_0x43d0('0x35')]=_['intersection'](_0x2db9dc[_0x43d0('0x32')],_0x2db9dc[_0x43d0('0x33')]);_0x3c1ea3[_0x43d0('0x36')]=_[_0x43d0('0x37')](_0x2db9dc['model'],qs[_0x43d0('0x38')](_0x4bfce9['query'][_0x43d0('0x38')]));_0x3c1ea3[_0x43d0('0x36')]=_0x3c1ea3['attributes'][_0x43d0('0x39')]?_0x3c1ea3[_0x43d0('0x36')]:_0x2db9dc[_0x43d0('0x32')];if(!_0x4bfce9[_0x43d0('0x33')][_0x43d0('0x3a')](_0x43d0('0x3b'))){_0x3c1ea3[_0x43d0('0x21')]=qs[_0x43d0('0x21')](_0x4bfce9[_0x43d0('0x33')][_0x43d0('0x21')]);_0x3c1ea3[_0x43d0('0x1f')]=qs['offset'](_0x4bfce9[_0x43d0('0x33')][_0x43d0('0x1f')]);}_0x3c1ea3[_0x43d0('0x3c')]=qs[_0x43d0('0x3d')](_0x4bfce9[_0x43d0('0x33')][_0x43d0('0x3d')]);_0x3c1ea3[_0x43d0('0x3e')]=qs[_0x43d0('0x35')](_[_0x43d0('0x3f')](_0x4bfce9[_0x43d0('0x33')],_0x2db9dc[_0x43d0('0x35')]),_0x13e3c9);if(_0x4bfce9[_0x43d0('0x33')][_0x43d0('0x40')]){_0x3c1ea3[_0x43d0('0x3e')]=_['merge'](_0x3c1ea3[_0x43d0('0x3e')],{'$or':_[_0x43d0('0x2d')](_0x13e3c9,function(_0x38f330){if(_0x38f330[_0x43d0('0x30')]!==_0x43d0('0x41')){var _0x1e6c8b={};_0x1e6c8b[_0x38f330[_0x43d0('0x2b')]]={'$like':'%'+_0x4bfce9[_0x43d0('0x33')]['filter']+'%'};return _0x1e6c8b;}})});}_0x3c1ea3=_['merge']({},_0x3c1ea3,_0x4bfce9[_0x43d0('0x42')]);var _0x5ad2d0={'where':_0x3c1ea3['where']};return db[_0x43d0('0x2e')]['count'](_0x5ad2d0)[_0x43d0('0x43')](function(_0x5027d0){_0x10086b[_0x43d0('0x22')]=_0x5027d0;if(_0x4bfce9['query'][_0x43d0('0x44')]){_0x3c1ea3[_0x43d0('0x45')]=[{'all':!![]}];}return db[_0x43d0('0x2e')]['findAll'](_0x3c1ea3);})[_0x43d0('0x43')](function(_0x520406){_0x10086b[_0x43d0('0x46')]=_0x520406;return _0x10086b;})['then'](respondWithFilteredResult(_0x52c37b,_0x3c1ea3))['catch'](handleError(_0x52c37b,null));};exports[_0x43d0('0x47')]=function(_0xcb5a02,_0x4d539f){var _0x2f2ac9={'raw':![],'where':{'id':_0xcb5a02[_0x43d0('0x48')]['id']}},_0x1c87bc={};_0x1c87bc[_0x43d0('0x32')]=_[_0x43d0('0x34')](db['UserProfile'][_0x43d0('0x49')]);_0x1c87bc[_0x43d0('0x33')]=_[_0x43d0('0x34')](_0xcb5a02[_0x43d0('0x33')]);_0x1c87bc['filters']=_[_0x43d0('0x37')](_0x1c87bc[_0x43d0('0x32')],_0x1c87bc[_0x43d0('0x33')]);_0x2f2ac9[_0x43d0('0x36')]=_[_0x43d0('0x37')](_0x1c87bc['model'],qs[_0x43d0('0x38')](_0xcb5a02[_0x43d0('0x33')]['fields']));_0x2f2ac9[_0x43d0('0x36')]=_0x2f2ac9[_0x43d0('0x36')][_0x43d0('0x39')]?_0x2f2ac9['attributes']:_0x1c87bc[_0x43d0('0x32')];if(_0xcb5a02['query'][_0x43d0('0x44')]){_0x2f2ac9['include']=[{'all':!![]}];}_0x2f2ac9=_[_0x43d0('0x4a')]({},_0x2f2ac9,_0xcb5a02[_0x43d0('0x42')]);return db[_0x43d0('0x2e')][_0x43d0('0x4b')](_0x2f2ac9)[_0x43d0('0x43')](handleEntityNotFound(_0x4d539f,null))['then'](respondWithResult(_0x4d539f,null))[_0x43d0('0x4c')](handleError(_0x4d539f,null));};exports['create']=function(_0x5a6364,_0x3e7392){return db[_0x43d0('0x2e')][_0x43d0('0x4d')](_0x5a6364[_0x43d0('0x4e')],{})[_0x43d0('0x43')](respondWithResult(_0x3e7392,0xc9))[_0x43d0('0x4c')](handleError(_0x3e7392,null));};exports[_0x43d0('0x4f')]=function(_0x347ec2,_0x313c3e){var _0x27affd={'where':{'id':_0x347ec2['params']['id']}},_0x22b1f9={};_0x22b1f9[_0x43d0('0x32')]=_[_0x43d0('0x34')](db[_0x43d0('0x2e')]['rawAttributes']);_0x27affd[_0x43d0('0x36')]=_['intersection'](_0x22b1f9['model'],qs[_0x43d0('0x38')](_0x347ec2[_0x43d0('0x33')][_0x43d0('0x38')]));_0x27affd[_0x43d0('0x36')]=_0x27affd[_0x43d0('0x36')]['length']?_0x27affd['attributes']:_0x22b1f9[_0x43d0('0x32')];if(_0x347ec2['query'][_0x43d0('0x44')]){_0x27affd[_0x43d0('0x45')]=[{'all':!![]}];}_0x27affd=_['merge']({},_0x27affd,_0x347ec2['options']);return db['UserProfile'][_0x43d0('0x4b')](_0x27affd)[_0x43d0('0x43')](handleEntityNotFound(_0x313c3e,null))[_0x43d0('0x43')](function(_0x38ed47){if(_0x38ed47){var _0xeb7c28=_0x38ed47[_0x43d0('0x50')]({'plain':!![]});_0xeb7c28=qs[_0x43d0('0x51')](_0xeb7c28,['id',_0x43d0('0x52'),_0x43d0('0x53'),'crudPermissions']);_0x347ec2[_0x43d0('0x4e')]=_[_0x43d0('0x51')](_0x347ec2[_0x43d0('0x4e')],['id',_0x43d0('0x52'),_0x43d0('0x53')]);return db[_0x43d0('0x54')][_0x43d0('0x55')](function(_0x27ee58){return db[_0x43d0('0x2e')][_0x43d0('0x4d')](_['merge'](_0xeb7c28,_0x347ec2['body']),{'include':_0x347ec2[_0x43d0('0x33')][_0x43d0('0x44')]?[{'all':!![]}]:undefined,'transaction':_0x27ee58})[_0x43d0('0x43')](function(_0x2e57b5){var _0x23b441=_0x2e57b5[_0x43d0('0x50')]({'plain':!![]});return db[_0x43d0('0x56')][_0x43d0('0x57')]({'where':{'userProfileId':_0x347ec2[_0x43d0('0x48')]['id']},'raw':!![]})[_0x43d0('0x43')](function(_0xe4f09d){if(_0xe4f09d){return BPromise[_0x43d0('0x58')](_0xe4f09d,function(_0x155ea8){return new BPromise(function(_0x1043bf,_0x40798f){if(_0x155ea8['autoAssociation']===null||_0x155ea8['autoAssociation']===0x1)_0x1043bf(null);return db['UserProfileResource'][_0x43d0('0x57')]({'where':{'sectionId':_0x155ea8['id']},'raw':!![]})[_0x43d0('0x43')](function(_0x14884e){var _0x4f15a3=_['map'](_0x14884e,function(_0x5dcd89){return qs[_0x43d0('0x51')](_0x5dcd89,['id','createdAt',_0x43d0('0x53'),_0x43d0('0x59')]);});_0x1043bf(_0x4f15a3);})[_0x43d0('0x4c')](function(_0x5519c1){_0x40798f(_0x5519c1);});})[_0x43d0('0x43')](function(_0x47668e){var _0x35a743=qs[_0x43d0('0x51')](_0x155ea8,['id',_0x43d0('0x52'),_0x43d0('0x53')]);_0x35a743[_0x43d0('0x5a')]=_0x23b441['id'];if(_0x47668e)_0x35a743[_0x43d0('0x5b')]=_0x47668e;return _0x35a743;})[_0x43d0('0x43')](function(_0x16a2d8){return db['UserProfileSection'][_0x43d0('0x4d')](_0x16a2d8,{'include':[{'model':db[_0x43d0('0x5c')],'as':_0x43d0('0x5b')}],'raw':!![],'transaction':_0x27ee58});});})[_0x43d0('0x43')](function(){return _0x23b441;});}});});});}})[_0x43d0('0x43')](respondWithResult(_0x313c3e,0xc9))[_0x43d0('0x4c')](handleError(_0x313c3e,null));};exports['update']=function(_0x3951e4,_0x17886d){if(_0x3951e4[_0x43d0('0x4e')]['id']){delete _0x3951e4[_0x43d0('0x4e')]['id'];}return db[_0x43d0('0x2e')][_0x43d0('0x4b')]({'where':{'id':_0x3951e4['params']['id']}})[_0x43d0('0x43')](handleEntityNotFound(_0x17886d,null))[_0x43d0('0x43')](saveUpdates(_0x3951e4[_0x43d0('0x4e')],null))[_0x43d0('0x43')](respondWithResult(_0x17886d,null))['catch'](handleError(_0x17886d,null));};exports[_0x43d0('0x28')]=function(_0x44333,_0x2c9b0d){return db['UserProfile']['find']({'where':{'id':_0x44333[_0x43d0('0x48')]['id']}})[_0x43d0('0x43')](handleEntityNotFound(_0x2c9b0d,null))['then'](removeEntity(_0x2c9b0d,null))['catch'](handleError(_0x2c9b0d,null));};exports[_0x43d0('0x5d')]=function(_0x178f97,_0x274c92){return db[_0x43d0('0x2e')][_0x43d0('0x5d')]()[_0x43d0('0x43')](respondWithResult(_0x274c92,null))[_0x43d0('0x4c')](handleError(_0x274c92,null));};exports[_0x43d0('0x5e')]=function(_0x554919,_0x44fd10){var _0x471912=_0x554919['body'];return db['UserProfile']['find']({'where':{'id':_0x554919[_0x43d0('0x48')]['id']}})[_0x43d0('0x43')](handleEntityNotFound(_0x44fd10,null))[_0x43d0('0x43')](function(_0x505946){if(_0x505946){return db[_0x43d0('0x54')][_0x43d0('0x55')](function(_0x551dae){return db[_0x43d0('0x56')][_0x43d0('0x28')]({'where':{'userProfileId':_0x554919['params']['id'],'sectionId':_[_0x43d0('0x2d')](_0x471912,function(_0x4e5c9f){return _0x4e5c9f[_0x43d0('0x59')];})},'transaction':_0x551dae})[_0x43d0('0x43')](function(){var _0x4a947b=_['map'](_0x471912,function(_0x1a68db){_0x1a68db[_0x43d0('0x5a')]=_0x554919[_0x43d0('0x48')]['id'];return _0x1a68db;});var _0x4dca6e=[];return BPromise['each'](_0x4a947b,function(_0x441d46){return db[_0x43d0('0x56')]['create'](_0x441d46,{'include':[{'model':db[_0x43d0('0x5c')],'as':'Resources'}],'raw':!![],'transaction':_0x551dae})['then'](function(_0x27a2c7){_0x4dca6e[_0x43d0('0x5f')](_0x27a2c7[_0x43d0('0x50')]({'plain':!![]}));});})[_0x43d0('0x43')](function(){return _0x4dca6e;});});});}})[_0x43d0('0x43')](function(_0x3f5c9b){return _0x3f5c9b;})[_0x43d0('0x43')](respondWithResult(_0x44fd10,null))[_0x43d0('0x4c')](handleError(_0x44fd10,null));};exports[_0x43d0('0x60')]=function(_0x29ac7e,_0x3b488c){var _0x5b97bc;return db[_0x43d0('0x2e')]['find']({'where':{'id':_0x29ac7e['params']['id']},'attributes':['id',_0x43d0('0x2b')]})[_0x43d0('0x43')](handleEntityNotFound(_0x3b488c,null))['then'](function(_0x2b8b92){if(_0x2b8b92){_0x5b97bc=_0x2b8b92;return db[_0x43d0('0x56')][_0x43d0('0x28')]({'where':{'userProfileId':_0x29ac7e[_0x43d0('0x48')]['id'],'sectionId':_0x29ac7e[_0x43d0('0x33')][_0x43d0('0x61')]}});}})[_0x43d0('0x43')](function(){return _0x5b97bc;})[_0x43d0('0x43')](respondWithStatusCode(_0x3b488c,null))[_0x43d0('0x4c')](handleError(_0x3b488c,null));};exports[_0x43d0('0x62')]=function(_0x81485b,_0x1aa37f){var _0x241c6e=[];var _0x2945ad=[];return db[_0x43d0('0x56')]['findAll']({'where':{'userProfileId':_0x81485b[_0x43d0('0x48')]['id']},'raw':!![]})[_0x43d0('0x43')](function(_0x228f4e){_0x241c6e=_[_0x43d0('0x40')](_0x228f4e,function(_0x44c085){return _0x44c085[_0x43d0('0x63')]===0x1||_['includes']([0x3eb,0x709],_0x44c085[_0x43d0('0x59')]);});if(!_['isEmpty'](_0x241c6e)){return _[_0x43d0('0x2d')](_0x241c6e,function(_0x948a6a){return _0x948a6a[_0x43d0('0x59')];});}else{return;}})[_0x43d0('0x43')](function(_0x26573a){if(_0x26573a)_0x2945ad=_0x26573a;if(_[_0x43d0('0x64')](_0x2945ad,0x64)){var _0x219d70=_['find'](_0x241c6e,{'sectionId':0x64});return hasDefaultDashboard(_0x219d70)['then'](function(_0xaa6b5a){return _[_0x43d0('0x2d')](_0x241c6e,function(_0x38299a){if(_0x38299a[_0x43d0('0x59')]===0x64){_0x38299a[_0x43d0('0x65')]=_0xaa6b5a;}return _0x38299a;});});}else{return;}})[_0x43d0('0x43')](function(_0x4c8b48){if(_0x4c8b48)_0x241c6e=_0x4c8b48;if(_['includes'](_0x2945ad,0x3eb)){var _0x2cef12=_['find'](_0x241c6e,{'sectionId':0x3eb});return getCustomDashboards(_0x2cef12)[_0x43d0('0x43')](function(_0x2cc15b){return _[_0x43d0('0x2d')](_0x241c6e,function(_0x4523e6){if(_0x2cef12[_0x43d0('0x63')]){if(_0x4523e6[_0x43d0('0x59')]===0x3eb){_0x4523e6[_0x43d0('0x65')]=_0x2cc15b;}}else{if(_0x4523e6['sectionId']===0x64){_0x4523e6[_0x43d0('0x65')]=_0x2cc15b;}}return _0x4523e6;});});}else{return;}})[_0x43d0('0x43')](function(_0x343954){if(_0x343954)_0x241c6e=_0x343954;if(_[_0x43d0('0x64')](_0x2945ad,0x709)){var _0x23422e=_[_0x43d0('0x4b')](_0x241c6e,{'sectionId':0x709});return getPlugins(_0x23422e)[_0x43d0('0x43')](function(_0x2b1454){if(_0x23422e[_0x43d0('0x63')]){return _[_0x43d0('0x2d')](_0x241c6e,function(_0x35e659){if(_0x35e659[_0x43d0('0x59')]===0x709){_0x35e659[_0x43d0('0x65')]=_0x2b1454;}return _0x35e659;});}else{var _0x11a9bc={'sectionId':0x76c,'enabled':0x1,'subsections':_0x2b1454};var _0x4fa0de=_['map'](_0x241c6e);_0x4fa0de['push'](_0x11a9bc);return _0x4fa0de;}});}else{return;}})[_0x43d0('0x43')](function(_0x4387ab){if(_0x4387ab)_0x241c6e=_0x4387ab;return _[_0x43d0('0x40')](_0x241c6e,[_0x43d0('0x63'),0x1]);})['then'](respondWithResult(_0x1aa37f,null))[_0x43d0('0x4c')](handleError(_0x1aa37f,null));};function hasDefaultDashboard(_0x4a3266){var _0x24924a=[0x65];return new BPromise(function(_0x28f523,_0x754cd4){try{if(_0x4a3266[_0x43d0('0x66')]){_0x28f523(_0x24924a);}else{return db[_0x43d0('0x5c')][_0x43d0('0x67')]({'where':{'sectionId':_0x4a3266['id']},'raw':!![]})[_0x43d0('0x43')](function(_0x531ba2){_0x531ba2?_0x28f523(_0x24924a):_0x28f523();});}}catch(_0x36e5c0){_0x754cd4(_0x36e5c0);}});}function getCustomDashboards(_0x162fb0){var _0x4645d3=[];return new BPromise(function(_0xcc08ce,_0x4948f2){try{if(_0x162fb0[_0x43d0('0x66')]){return db['Dashboard'][_0x43d0('0x57')]({'raw':!![]})['then'](function(_0x3a5421){_0x3a5421[_0x43d0('0x68')](function(_0x3fdf44){_0x4645d3['push'](_0x3fdf44['id']+0x1869f);});_0xcc08ce(_0x4645d3);});}else{return db[_0x43d0('0x5c')][_0x43d0('0x57')]({'where':{'sectionId':_0x162fb0['id']},'raw':!![]})[_0x43d0('0x43')](function(_0x43baea){_0x43baea['forEach'](function(_0x3c19f7){_0x4645d3[_0x43d0('0x5f')](_0x3c19f7[_0x43d0('0x69')]+0x1869f);});_0xcc08ce(_0x4645d3);});}}catch(_0x6ed83d){_0x4948f2(_0x6ed83d);}});}function getPlugins(_0x3dba5b){var _0x43eba2=[];return new BPromise(function(_0x3aad81,_0x44d85e){try{if(_0x3dba5b['autoAssociation']){return db[_0x43d0('0x6a')]['findAll']({'raw':!![]})[_0x43d0('0x43')](function(_0x39de5f){_0x39de5f['forEach'](function(_0x2e085a){_0x43eba2[_0x43d0('0x5f')](_0x2e085a['id']+0x15b38);});_0x3aad81(_0x43eba2);});}else{return db[_0x43d0('0x5c')][_0x43d0('0x57')]({'where':{'sectionId':_0x3dba5b['id']},'raw':!![]})[_0x43d0('0x43')](function(_0x591118){_0x591118[_0x43d0('0x68')](function(_0x56cac9){_0x43eba2[_0x43d0('0x5f')](_0x56cac9['resourceId']+0x15b38);});_0x3aad81(_0x43eba2);});}}catch(_0x2f768b){_0x44d85e(_0x2f768b);}});}exports['addResources']=function(_0xed3a6e,_0x5ababd){return db['UserProfile'][_0x43d0('0x4b')]({'where':{'id':_0xed3a6e[_0x43d0('0x48')]['id']}})[_0x43d0('0x43')](handleEntityNotFound(_0x5ababd,null))[_0x43d0('0x43')](function(_0x2f9ef9){if(_0x2f9ef9){return db[_0x43d0('0x54')][_0x43d0('0x55')](function(_0xebf7f9){return db[_0x43d0('0x56')][_0x43d0('0x57')]({'where':{'userProfileId':_0xed3a6e[_0x43d0('0x48')]['id']},'attributes':['id'],'raw':!![]})[_0x43d0('0x43')](function(_0xc0af78){if(_0xc0af78){return db['UserProfileSection'][_0x43d0('0x28')]({'where':{'userProfileId':_0xed3a6e[_0x43d0('0x48')]['id'],'id':_[_0x43d0('0x2d')](_0xc0af78,function(_0x4600b1){return _0x4600b1['id'];})},'transaction':_0xebf7f9});}})[_0x43d0('0x43')](function(_0x53ff2b){var _0x44e2a9=_[_0x43d0('0x2d')](_0xed3a6e[_0x43d0('0x4e')],function(_0x45c8f0){_0x45c8f0[_0x43d0('0x5a')]=_0xed3a6e[_0x43d0('0x48')]['id'];return _0x45c8f0;});return db['UserProfileSection'][_0x43d0('0x6b')](_0x44e2a9,{'raw':!![],'transaction':_0xebf7f9});})[_0x43d0('0x43')](function(_0x399a8a){var _0x5ceafb=_[_0x43d0('0x40')](_[_0x43d0('0x2d')](_0x399a8a,function(_0x53c4b1){return _0x53c4b1['get']({'plain':!![]});}),{'includeAll':![]});if(_0x5ceafb){return db[_0x43d0('0x56')][_0x43d0('0x57')]({'where':{'userProfileId':_0xed3a6e[_0x43d0('0x48')]['id'],'sectionId':_[_0x43d0('0x2d')](_0x5ceafb,function(_0x5a1538){return _0x5a1538[_0x43d0('0x59')];})},'attributes':['id',_0x43d0('0x59')],'raw':!![]})['then'](function(_0x5171f8){var _0x36d7b7=_['map'](_0xed3a6e[_0x43d0('0x4e')],function(_0x2afd7b){_0x2afd7b[_0x43d0('0x5a')]=_0xed3a6e[_0x43d0('0x48')]['id'];return _0x2afd7b;});return db[_0x43d0('0x5c')][_0x43d0('0x6b')](_0x36d7b7,{'raw':!![],'transaction':_0xebf7f9});});}})[_0x43d0('0x4c')](handleError(_0x5ababd,null));});}})[_0x43d0('0x43')](function(_0x1ab7fb){var _0x55c834=_['map'](_0x1ab7fb,function(_0x3646d3){return _0x3646d3[_0x43d0('0x50')]({'plain':!![]});});})[_0x43d0('0x43')](respondWithResult(_0x5ababd,null))[_0x43d0('0x4c')](handleError(_0x5ababd,null));};exports['removeResources']=function(_0x5f1062,_0x45b90b,_0x3088b3){return db[_0x43d0('0x2e')][_0x43d0('0x4b')]({'where':{'id':_0x5f1062[_0x43d0('0x48')]['id']}})['then'](handleEntityNotFound(_0x45b90b,null))[_0x43d0('0x43')](function(_0x45cc44){if(_0x45cc44){return _0x45cc44[_0x43d0('0x6c')](_0x5f1062[_0x43d0('0x33')][_0x43d0('0x61')]);}})[_0x43d0('0x43')](respondWithStatusCode(_0x45b90b,null))['catch'](handleError(_0x45b90b,null));};exports[_0x43d0('0x6d')]=function(_0x4e1751,_0x41884a){var _0x442545={};if(!_0x4e1751[_0x43d0('0x33')][_0x43d0('0x6e')])throw new Error('Missing\x20section\x20parameter');if(!_0x4e1751[_0x43d0('0x33')]['hasOwnProperty'](_0x43d0('0x3b'))){_0x442545[_0x43d0('0x21')]=qs[_0x43d0('0x21')](_0x4e1751[_0x43d0('0x33')][_0x43d0('0x21')]);_0x442545[_0x43d0('0x1f')]=qs[_0x43d0('0x1f')](_0x4e1751[_0x43d0('0x33')][_0x43d0('0x1f')]);}return db[_0x43d0('0x2e')][_0x43d0('0x4b')]({'where':{'id':_0x4e1751[_0x43d0('0x48')]['id']}})['then'](function(_0x394984){if(!_0x394984)throw new Error(_0x43d0('0x6f')+_0x4e1751[_0x43d0('0x48')]['id']);return db[_0x43d0('0x2e')][_0x43d0('0x6d')](_0x4e1751);})[_0x43d0('0x43')](respondWithFilteredResult(_0x41884a,_0x442545))[_0x43d0('0x4c')](handleError(_0x41884a,null));};
\ No newline at end of file
index d8562c2..7d22f99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa899=['exports','events','../../mysqldb','UserProfile','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x2cdd88,_0x20cf12){var _0x133efd=function(_0x30e84b){while(--_0x30e84b){_0x2cdd88['push'](_0x2cdd88['shift']());}};_0x133efd(++_0x20cf12);}(_0xa899,0x155));var _0x9a89=function(_0x20b29c,_0xe22528){_0x20b29c=_0x20b29c-0x0;var _0x20d81b=_0xa899[_0x20b29c];return _0x20d81b;};'use strict';var EventEmitter=require(_0x9a89('0x0'));var UserProfile=require(_0x9a89('0x1'))['db'][_0x9a89('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x9a89('0x3'),'afterUpdate':_0x9a89('0x4'),'afterDestroy':_0x9a89('0x5')};function emitEvent(_0x45233c){return function(_0x405c47,_0x15c431,_0x105758){UserProfileEvents[_0x9a89('0x6')](_0x45233c+':'+_0x405c47['id'],_0x405c47);UserProfileEvents[_0x9a89('0x6')](_0x45233c,_0x405c47);_0x105758(null);};}for(var e in events){if(events[_0x9a89('0x7')](e)){var event=events[e];UserProfile[_0x9a89('0x8')](e,emitEvent(event));}}module[_0x9a89('0x9')]=UserProfileEvents;
\ No newline at end of file
+var _0x8a9a=['UserProfile','setMaxListeners','save','update','remove','emit','hook','../../mysqldb'];(function(_0x17f4eb,_0x34cc64){var _0x1904c6=function(_0x5f5172){while(--_0x5f5172){_0x17f4eb['push'](_0x17f4eb['shift']());}};_0x1904c6(++_0x34cc64);}(_0x8a9a,0x17f));var _0xa8a9=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0x8a9a[_0xb0f7c3];return _0x28ea68;};'use strict';var EventEmitter=require('events');var UserProfile=require(_0xa8a9('0x0'))['db'][_0xa8a9('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0xa8a9('0x2')](0x0);var events={'afterCreate':_0xa8a9('0x3'),'afterUpdate':_0xa8a9('0x4'),'afterDestroy':_0xa8a9('0x5')};function emitEvent(_0x2d782d){return function(_0x9570dc,_0x3fcb8c,_0xe5e64b){UserProfileEvents[_0xa8a9('0x6')](_0x2d782d+':'+_0x9570dc['id'],_0x9570dc);UserProfileEvents[_0xa8a9('0x6')](_0x2d782d,_0x9570dc);_0xe5e64b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserProfile[_0xa8a9('0x7')](e,emitEvent(event));}}module['exports']=UserProfileEvents;
\ No newline at end of file
index 3d52421..2d1c963 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb11=['select','ui.','InteractionId','ui.createdAt','user_has_','_interactions','where','ui.UserId\x20=\x20?','sequelize','query','OpenTabs','UserProfile','user_profiles','section','mergeResources','length','push','UserProfileSection','find','params','ignore','isEmpty','autoAssociation','rawAttributes','keys','filters','intersection','attributes','fields','limit','offset','sort','pick','key','VIRTUAL','foreignKey','merge','options','includeAll','include','forEach','reportType','default','reportId','CustomReports','count','Tags','color','tag','ThroughTags','openTabs','true','rows','chat','dataValues','fax','mail','openchannel','whatsapp','lodash','../../components/parsers/qs','squel','models','filter','field','value','findAll','then','associatedResources','map','catch','model','name','UserProfileResource','type','resourceId','toLowerCase','squareprojects','childModel','SquareProject','odbc','SquareOdbc','SquareRecording','parentSections','SquareProjects','projectName','projects','JscriptyProject','contacts','CmContact','Lists','ListId','CmList','companies','globalcustomfields','chatqueues','chatwebsites','faxqueues','FaxQueue','faxaccounts','inboundroutes','internalroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','voicemails','VoiceMail','membername','User','role','agent','telephone','VoiceQueues','queue','VoiceQueue','inbound','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','voiceprefixes','VoicePrefix','ivrcampaigns','Campaign','mailqueues','MailQueue','MailAccount','mailsubstatuses','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','SmsQueue','smsaccounts','whatsappqueues','whatsappaccounts','WhatsappAccount','teams','voicequeues','queuecampaigns','QueueCampaigns','users','agents','Users','admin','user','Agents','Telephones','ZendeskAccount','salesforceaccounts','SalesforceAccount','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','cannedanswers','CannedAnswer','dispositions','Dashboard','intervals','scheduler','Schedule','Sound','tags','Tag','Template','triggers','trunks','Trunk','variables','Variable','Plugin','extractedreports','AnalyticExtractedReport','Reports','metrics','AnalyticMetric','toUpperCase','slice','Sequelize','QueryTypes','SELECT'];(function(_0x42f009,_0x5e27b1){var _0x22a1e0=function(_0x297993){while(--_0x297993){_0x42f009['push'](_0x42f009['shift']());}};_0x22a1e0(++_0x5e27b1);}(_0xfb11,0x1ad));var _0x1fb1=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xfb11[_0x25bea7];return _0x175952;};'use strict';var _=require(_0x1fb1('0x0'));var attributes=require('./userProfile.attributes');var qs=require(_0x1fb1('0x1'));var squel=require(_0x1fb1('0x2'));module['exports']=function(_0x1461ad){var _0x5af9cc=_0x1461ad[_0x1fb1('0x3')];function _0x5a830e(_0x190f74,_0x2ae20f){return new Promise(function(_0x5af469,_0x25d44f){if(!_0x2ae20f)return _0x5af469(null);var _0x133727=_0x2ae20f['filter']?{[_0x2ae20f[_0x1fb1('0x4')][_0x1fb1('0x5')]]:_0x2ae20f[_0x1fb1('0x4')][_0x1fb1('0x6')]}:undefined;return _0x5af9cc[_0x190f74][_0x1fb1('0x7')]({'where':_0x133727,'raw':!![]})[_0x1fb1('0x8')](function(_0x438d15){_0x2ae20f[_0x1fb1('0x9')]=_[_0x1fb1('0xa')](_0x438d15,'id');_0x5af469(_0x2ae20f);})[_0x1fb1('0xb')](function(_0x5bb066){_0x25d44f(_0x5bb066);});});}function _0x232036(_0x53f30e,_0x28f04d){return new Promise(function(_0x58b66e,_0xa977b1){var _0x11c3a9=_0x53f30e[_0x1fb1('0x4')]?{[_0x53f30e[_0x1fb1('0x4')][_0x1fb1('0x5')]]:_0x53f30e[_0x1fb1('0x4')]['value']}:undefined;return _0x5af9cc[_0x53f30e[_0x1fb1('0xc')]][_0x1fb1('0x7')]({'where':_0x11c3a9,'raw':!![]})[_0x1fb1('0x8')](function(_0x44f24c){_0x28f04d[_0x1fb1('0x9')]=_[_0x1fb1('0xa')](_0x44f24c,function(_0x151152){return _0x151152[_0x1fb1('0xd')];});_0x58b66e(_0x28f04d);})[_0x1fb1('0xb')](function(_0x4cbe42){_0xa977b1(_0x4cbe42);});});}function _0x5c8d23(_0x34045e,_0x113988,_0x3924ab){if(!_0x113988)return Promise['resolve'](null);return new Promise(function(_0x161ca3,_0x23f1f5){return _0x5af9cc[_0x1fb1('0xe')][_0x1fb1('0x7')]({'where':{'sectionId':_0x113988['id']},'raw':!![]})[_0x1fb1('0x8')](function(_0x27d71f){if(_0x34045e[_0x1fb1('0x5')]&&_0x34045e[_0x1fb1('0x5')]!=='id'){_0x113988[_0x1fb1('0x9')]=_['map'](_0x27d71f,function(_0xa6d7b8){return _0xa6d7b8[_0x34045e['field']];});}else{if(_0x3924ab==='AnalyticExtractedReport'){_0x113988[_0x1fb1('0x9')]=_[_0x1fb1('0xa')](_0x27d71f,function(_0x1eaf9e){return{'id':_0x1eaf9e['resourceId'],'type':_0x1eaf9e[_0x1fb1('0xf')]};});}else{_0x113988['associatedResources']=_['map'](_0x27d71f,function(_0x532c63){return _0x532c63[_0x1fb1('0x10')];});}}_0x161ca3(_0x113988);})[_0x1fb1('0xb')](function(_0x12c1d0){_0x23f1f5(_0x12c1d0);});});}function _0x10924f(_0x303a06,_0x53b8af){var _0x4272c7={'parentSections':[]};switch(_0x303a06[_0x1fb1('0x11')]()){case _0x1fb1('0x12'):_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x14');break;case _0x1fb1('0x15'):_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x16');break;case'squarerecordings':_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x17');_0x4272c7[_0x1fb1('0x18')]=[{'name':_0x1fb1('0x19'),'field':_0x1fb1('0xd'),'foreignKey':_0x1fb1('0x1a')}];break;case _0x1fb1('0x1b'):_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x1c');break;case _0x1fb1('0x1d'):_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x1e');_0x4272c7[_0x1fb1('0x18')]=[{'name':_0x1fb1('0x1f'),'field':'id','foreignKey':_0x1fb1('0x20')}];break;case'lists':_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x21');break;case _0x1fb1('0x22'):_0x4272c7[_0x1fb1('0x13')]='CmCompany';break;case _0x1fb1('0x23'):_0x4272c7[_0x1fb1('0x13')]='CmCustomField';break;case _0x1fb1('0x24'):_0x4272c7['childModel']='ChatQueue';break;case _0x1fb1('0x25'):_0x4272c7[_0x1fb1('0x13')]='ChatWebsite';break;case _0x1fb1('0x26'):_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x27');break;case _0x1fb1('0x28'):_0x4272c7[_0x1fb1('0x13')]='FaxAccount';break;case _0x1fb1('0x29'):case _0x1fb1('0x2a'):case _0x1fb1('0x2b'):_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x2c');break;case _0x1fb1('0x2d'):_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x2e');break;case _0x1fb1('0x2f'):_0x4272c7['childModel']=_0x1fb1('0x30');break;case'voicerecordings':_0x4272c7[_0x1fb1('0x13')]='VoiceRecording';_0x4272c7[_0x1fb1('0x18')]=[{'name':'Agents','field':'name','foreignKey':_0x1fb1('0x31'),'model':_0x1fb1('0x32'),'filter':{'field':_0x1fb1('0x33'),'value':[_0x1fb1('0x34')]}},{'name':'Telephones','field':_0x1fb1('0xd'),'foreignKey':_0x1fb1('0x31'),'model':_0x1fb1('0x32'),'filter':{'field':'role','value':[_0x1fb1('0x35')]}},{'name':_0x1fb1('0x36'),'field':_0x1fb1('0xd'),'foreignKey':_0x1fb1('0x37'),'model':_0x1fb1('0x38'),'filter':{'field':_0x1fb1('0xf'),'value':[_0x1fb1('0x39')]}},{'name':'QueueCampaigns','field':_0x1fb1('0xd'),'foreignKey':_0x1fb1('0x37'),'model':'VoiceQueue','filter':{'field':_0x1fb1('0xf'),'value':['outbound']}}];break;case _0x1fb1('0x3a'):_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x3b');break;case _0x1fb1('0x3c'):_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x3d');break;case _0x1fb1('0x3e'):_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x3f');break;case _0x1fb1('0x40'):_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x41');break;case _0x1fb1('0x42'):_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x43');break;case'mailaccounts':_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x44');break;case _0x1fb1('0x45'):_0x4272c7[_0x1fb1('0x13')]='MailSubstatus';break;case'openchannelqueues':_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x46');break;case _0x1fb1('0x47'):_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x48');break;case _0x1fb1('0x49'):_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x4a');break;case _0x1fb1('0x4b'):_0x4272c7[_0x1fb1('0x13')]='SmsAccount';break;case _0x1fb1('0x4c'):_0x4272c7['childModel']='WhatsappQueue';break;case _0x1fb1('0x4d'):_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x4e');break;case _0x1fb1('0x4f'):_0x4272c7['childModel']='Team';break;case _0x1fb1('0x50'):case _0x1fb1('0x51'):_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x38');if(_0x53b8af){_0x4272c7[_0x1fb1('0x18')]=[{'name':_0x1fb1('0x36')},{'name':_0x1fb1('0x52')}];}break;case _0x1fb1('0x53'):case _0x1fb1('0x54'):case'telephones':_0x4272c7['childModel']=_0x1fb1('0x32');if(_0x53b8af){_0x4272c7['parentSections']=[{'name':_0x1fb1('0x55'),'filter':{'field':_0x1fb1('0x33'),'value':[_0x1fb1('0x56'),_0x1fb1('0x57')]},'ignore':!![]},{'name':_0x1fb1('0x58')},{'name':_0x1fb1('0x59')}];}break;case'zendeskaccounts':_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x5a');break;case _0x1fb1('0x5b'):_0x4272c7['childModel']=_0x1fb1('0x5c');break;case'freshdeskaccounts':_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x5d');break;case _0x1fb1('0x5e'):_0x4272c7['childModel']=_0x1fb1('0x5f');break;case _0x1fb1('0x60'):_0x4272c7['childModel']=_0x1fb1('0x61');break;case _0x1fb1('0x62'):_0x4272c7[_0x1fb1('0x13')]='ZohoAccount';break;case'vtigeraccounts':_0x4272c7['childModel']=_0x1fb1('0x32');break;case _0x1fb1('0x63'):_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x64');break;case _0x1fb1('0x65'):_0x4272c7[_0x1fb1('0x13')]='Disposition';break;case'customdashboards':_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x66');break;case _0x1fb1('0x67'):_0x4272c7[_0x1fb1('0x13')]='Interval';break;case'pauses':_0x4272c7[_0x1fb1('0x13')]='Pause';break;case _0x1fb1('0x68'):_0x4272c7['childModel']=_0x1fb1('0x69');break;case'sounds':_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x6a');break;case _0x1fb1('0x6b'):_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x6c');break;case'templates':_0x4272c7['childModel']=_0x1fb1('0x6d');break;case _0x1fb1('0x6e'):_0x4272c7['childModel']='Trigger';break;case _0x1fb1('0x6f'):_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x70');break;case _0x1fb1('0x71'):_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x72');break;case'plugins':_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x73');break;case _0x1fb1('0x74'):_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x75');_0x4272c7[_0x1fb1('0x18')]=[{'name':_0x1fb1('0x76'),'field':'id','foreignKey':'reportId'}];break;case _0x1fb1('0x77'):_0x4272c7[_0x1fb1('0x13')]=_0x1fb1('0x78');break;}return _0x4272c7;}function _0x4e67f7(_0x2ccc4f,_0x435855){var _0xeeb8ce=_0x2ccc4f['charAt'](0x0)[_0x1fb1('0x79')]()+_0x2ccc4f[_0x1fb1('0x7a')](0x1);var _0x101921={'type':_0x5af9cc[_0x1fb1('0x7b')][_0x1fb1('0x7c')][_0x1fb1('0x7d')],'raw':!![]};return new Promise(function(_0x58fb7a,_0x59fe71){var _0x12c066=squel[_0x1fb1('0x7e')]()[_0x1fb1('0x5')](_0x1fb1('0x7f')+_0xeeb8ce+_0x1fb1('0x80'),'id')[_0x1fb1('0x5')](_0x1fb1('0x81'))['from'](_0x1fb1('0x82')+_0x2ccc4f+_0x1fb1('0x83'),'ui')[_0x1fb1('0x84')](_0x1fb1('0x85'),_0x435855['id']);return _0x5af9cc[_0x1fb1('0x86')][_0x1fb1('0x87')](_0x12c066['toString'](),_0x101921)[_0x1fb1('0x8')](function(_0x417c9e){_0x435855[_0xeeb8ce+_0x1fb1('0x88')]=_0x417c9e;_0x58fb7a(_0x417c9e);})[_0x1fb1('0xb')](function(_0x3d3bfa){_0x59fe71(_0x3d3bfa);});});}return _0x1461ad['define'](_0x1fb1('0x89'),attributes,{'tableName':_0x1fb1('0x8a'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x5806a6){var _0x2ea602={'raw':![],'where':{}};var _0x56f951={};var _0x4f08bb={'count':0x0,'rows':[]};var _0x29afbe=_0x5806a6[_0x1fb1('0x87')][_0x1fb1('0x8b')];var _0x5b7d81=_0x5806a6[_0x1fb1('0x87')][_0x1fb1('0x8c')]||![];var _0x352182=_0x10924f(_0x29afbe,_0x5b7d81);if(!_0x352182[_0x1fb1('0x13')])throw new Error('Invalid\x20section\x20\x27'+_0x29afbe+'\x27');var _0x41b82b=[{'name':_0x29afbe}];if(!_['isEmpty'](_0x352182[_0x1fb1('0x18')]))_0x41b82b=_0x352182[_0x1fb1('0x18')];var _0x4ff125=[];for(var _0x3df5fa=0x0;_0x3df5fa<_0x41b82b[_0x1fb1('0x8d')];_0x3df5fa++){_0x4ff125[_0x1fb1('0x8e')](_0x5af9cc[_0x1fb1('0x8f')][_0x1fb1('0x90')]({'where':{'userProfileId':_0x5806a6[_0x1fb1('0x91')]['id'],'name':_0x41b82b[_0x3df5fa][_0x1fb1('0xd')]},'raw':!![]}));}return Promise['all'](_0x4ff125)[_0x1fb1('0x8')](function(_0x20f512){var _0x5c2332=_['filter'](_0x20f512,function(_0x2f2c49){return _0x2f2c49?_0x2f2c49:undefined;});var _0x91c1bc=_[_0x1fb1('0x4')](_0x41b82b,[_0x1fb1('0x92'),!![]]);var _0x3800da=_[_0x1fb1('0x93')](_0x5c2332)&&_[_0x1fb1('0x93')](_0x91c1bc)?null:_['union'](_0x91c1bc,_0x5c2332);if(!_0x3800da)return null;var _0x2d4bde=[];for(var _0x2f175d=0x0;_0x2f175d<_0x3800da[_0x1fb1('0x8d')];_0x2f175d++){var _0x7155bd=_[_0x1fb1('0x90')](_0x41b82b,function(_0x29c42d){return _0x3800da[_0x2f175d]?_0x29c42d[_0x1fb1('0xd')]===_0x3800da[_0x2f175d][_0x1fb1('0xd')]:null;});if(_0x7155bd){if(_0x3800da[_0x2f175d][_0x1fb1('0x92')]){_0x2d4bde['push'](_0x5a830e(_0x352182[_0x1fb1('0x13')],_0x3800da[_0x2f175d]));}else{if(!_0x3800da[_0x2f175d][_0x1fb1('0x94')]){_0x2d4bde['push'](_0x5c8d23(_0x7155bd,_0x3800da[_0x2f175d],_0x352182[_0x1fb1('0x13')]));}else{if(_0x7155bd[_0x1fb1('0xc')]){_0x2d4bde[_0x1fb1('0x8e')](_0x232036(_0x7155bd,_0x3800da[_0x2f175d]));}}}}}return Promise['all'](_0x2d4bde);})[_0x1fb1('0x8')](function(_0xd2b214){var _0x1d9dc0=_0xd2b214;var _0x2e0568=null;if(_0x1d9dc0){_0x2e0568=_0x1d9dc0[_0x1fb1('0x8d')]===0x1?_0x1d9dc0[0x0]:null;}if(!_0x2e0568&&!_0x1d9dc0)return _0x4f08bb;var _0x2c4775=_0x5af9cc[_0x352182[_0x1fb1('0x13')]][_0x1fb1('0x95')];_0x56f951[_0x1fb1('0xc')]=_[_0x1fb1('0x96')](_0x2c4775);_0x56f951[_0x1fb1('0x87')]=_[_0x1fb1('0x96')](_0x5806a6[_0x1fb1('0x87')]);_0x56f951[_0x1fb1('0x97')]=_[_0x1fb1('0x98')](_0x56f951[_0x1fb1('0xc')],_0x56f951[_0x1fb1('0x87')]);_0x2ea602[_0x1fb1('0x99')]=_[_0x1fb1('0x98')](_0x56f951[_0x1fb1('0xc')],qs[_0x1fb1('0x9a')](_0x5806a6['query']['fields']));_0x2ea602[_0x1fb1('0x99')]=_0x2ea602['attributes'][_0x1fb1('0x8d')]?_0x2ea602[_0x1fb1('0x99')]:_0x56f951['model'];if(!_0x5806a6['query']['hasOwnProperty']('nolimit')){_0x2ea602[_0x1fb1('0x9b')]=qs[_0x1fb1('0x9b')](_0x5806a6[_0x1fb1('0x87')][_0x1fb1('0x9b')]);_0x2ea602[_0x1fb1('0x9c')]=qs[_0x1fb1('0x9c')](_0x5806a6[_0x1fb1('0x87')][_0x1fb1('0x9c')]);}_0x2ea602['order']=qs['sort'](_0x5806a6[_0x1fb1('0x87')][_0x1fb1('0x9d')]);_0x2ea602[_0x1fb1('0x84')]=qs[_0x1fb1('0x97')](_[_0x1fb1('0x9e')](_0x5806a6[_0x1fb1('0x87')],_0x56f951[_0x1fb1('0x97')]));if(_0x5806a6[_0x1fb1('0x87')][_0x1fb1('0x4')]){_0x2ea602[_0x1fb1('0x84')]=_['merge'](_0x2ea602[_0x1fb1('0x84')],{'$or':_[_0x1fb1('0xa')](_0x2c4775,function(_0x57b1ab){if(_0x57b1ab[_0x1fb1('0xf')][_0x1fb1('0x9f')]!==_0x1fb1('0xa0')){var _0x1761e0={};_0x1761e0[_0x57b1ab[_0x1fb1('0x5')]]={'$like':'%'+_0x5806a6[_0x1fb1('0x87')][_0x1fb1('0x4')]+'%'};return _0x1761e0;}})});}var _0x50c22f=[];var _0x3cbbf4=null;var _0x29a918={};if(_0x2e0568){_0x3cbbf4=_['find'](_0x41b82b,[_0x1fb1('0xd'),_0x2e0568['name']]);if(_0x3cbbf4['field']){_0x29a918={};if(_0x352182[_0x1fb1('0x13')]===_0x1fb1('0x75')){_0x29a918[_0x3cbbf4[_0x1fb1('0xa1')]]=_[_0x1fb1('0xa')](_0x2e0568[_0x1fb1('0x9')],'id');}else{_0x29a918[_0x3cbbf4[_0x1fb1('0xa1')]]=_0x2e0568['associatedResources'];}_0x50c22f[_0x1fb1('0x8e')](_0x29a918);}else{_0x2ea602[_0x1fb1('0x84')]['id']=_0x2e0568[_0x1fb1('0x9')];}}else{for(var _0x39562b=0x0;_0x39562b<_0x1d9dc0['length'];_0x39562b++){_0x3cbbf4=_[_0x1fb1('0x90')](_0x41b82b,[_0x1fb1('0xd'),_0x1d9dc0[_0x39562b]['name']]);if(_0x3cbbf4['field']){_0x29a918={};_0x29a918[_0x3cbbf4[_0x1fb1('0xa1')]]=_0x1d9dc0[_0x39562b][_0x1fb1('0x9')];_0x50c22f[_0x1fb1('0x8e')](_0x29a918);}else{if(!_0x2ea602[_0x1fb1('0x84')]['id'])_0x2ea602['where']['id']=[];_0x1d9dc0[_0x39562b][_0x1fb1('0x9')]['forEach'](function(_0x53dd03){_0x2ea602['where']['id']['push'](_0x53dd03);});}}}if(!_[_0x1fb1('0x93')](_0x50c22f)){_0x2ea602[_0x1fb1('0x84')]=_[_0x1fb1('0xa2')](_0x2ea602[_0x1fb1('0x84')],{'$and':{'$or':_0x50c22f}});}_0x2ea602=_[_0x1fb1('0xa2')]({},_0x2ea602,_0x5806a6[_0x1fb1('0xa3')]);if(_0x2e0568&&!_0x2e0568['autoAssociation']&&_0x352182[_0x1fb1('0x13')]===_0x1fb1('0x75')){if(_0x5806a6[_0x1fb1('0x87')][_0x1fb1('0xa4')]){_0x2ea602[_0x1fb1('0xa5')]=[{'all':!![]}];}return _0x5af9cc[_0x352182[_0x1fb1('0x13')]]['findAll'](_0x2ea602)[_0x1fb1('0x8')](function(_0x1d2113){var _0x10bf5f=[];_0x1d2113[_0x1fb1('0xa6')](function(_0x2ef05a){var _0x4abfb7;switch(_0x2ef05a[_0x1fb1('0xa7')]){case _0x1fb1('0xa8'):_0x4abfb7=_[_0x1fb1('0x90')](_0x2e0568[_0x1fb1('0x9')],function(_0x115f1d){return _0x115f1d['id']===_0x2ef05a[_0x1fb1('0xa9')]&&_0x115f1d['type']==='DefaultReports';});break;case'custom':_0x4abfb7=_[_0x1fb1('0x90')](_0x2e0568['associatedResources'],function(_0x4860e0){return _0x4860e0['id']===_0x2ef05a[_0x1fb1('0xa9')]&&_0x4860e0[_0x1fb1('0xf')]===_0x1fb1('0xaa');});break;}if(_0x4abfb7)_0x10bf5f[_0x1fb1('0x8e')](_0x2ef05a);});_0x4f08bb[_0x1fb1('0xab')]=_0x10bf5f[_0x1fb1('0x8d')];_0x4f08bb['rows']=_0x10bf5f;return _0x4f08bb;});}else{return _0x5af9cc[_0x352182[_0x1fb1('0x13')]][_0x1fb1('0xab')]({'where':_0x2ea602[_0x1fb1('0x84')]})[_0x1fb1('0x8')](function(_0x364f00){_0x4f08bb[_0x1fb1('0xab')]=_0x364f00;if(_0x5806a6[_0x1fb1('0x87')][_0x1fb1('0xa4')]){if(_0x352182[_0x1fb1('0x13')]==='CmContact'){_0x2ea602[_0x1fb1('0xa5')]=[{'model':_0x5af9cc[_0x1fb1('0x6c')],'as':_0x1fb1('0xac'),'attributes':['id',_0x1fb1('0xd'),_0x1fb1('0xad')],'required':_0x5806a6['query'][_0x1fb1('0xae')]?!![]:![]},{'model':_0x5af9cc['Tag'],'as':_0x1fb1('0xaf'),'attributes':['id','name','color'],'through':_0x5806a6[_0x1fb1('0x87')]['tag']?{'attributes':[],'where':{'TagId':_0x5806a6['query']['tag']||undefined}}:{},'required':_0x5806a6[_0x1fb1('0x87')]['tag']?!![]:![]}];}else{_0x2ea602[_0x1fb1('0xa5')]=[{'all':!![]}];}}return _0x5af9cc[_0x352182[_0x1fb1('0x13')]][_0x1fb1('0x7')](_0x2ea602);})[_0x1fb1('0x8')](function(_0x10c6fc){_0x4f08bb['rows']=_0x10c6fc;if(_0x29afbe===_0x1fb1('0x58')&&_0x5806a6[_0x1fb1('0x87')][_0x1fb1('0xb0')]===_0x1fb1('0xb1')){var _0x391ae1=[];for(var _0x5429a9=0x0;_0x5429a9<_0x4f08bb[_0x1fb1('0xb2')][_0x1fb1('0x8d')];_0x5429a9++){_0x391ae1[_0x1fb1('0x8e')](_0x4e67f7(_0x1fb1('0xb3'),_0x4f08bb[_0x1fb1('0xb2')][_0x5429a9][_0x1fb1('0xb4')]));_0x391ae1['push'](_0x4e67f7('sms',_0x4f08bb[_0x1fb1('0xb2')][_0x5429a9][_0x1fb1('0xb4')]));_0x391ae1[_0x1fb1('0x8e')](_0x4e67f7(_0x1fb1('0xb5'),_0x4f08bb['rows'][_0x5429a9][_0x1fb1('0xb4')]));_0x391ae1[_0x1fb1('0x8e')](_0x4e67f7(_0x1fb1('0xb6'),_0x4f08bb[_0x1fb1('0xb2')][_0x5429a9][_0x1fb1('0xb4')]));_0x391ae1['push'](_0x4e67f7(_0x1fb1('0xb7'),_0x4f08bb[_0x1fb1('0xb2')][_0x5429a9][_0x1fb1('0xb4')]));_0x391ae1[_0x1fb1('0x8e')](_0x4e67f7(_0x1fb1('0xb8'),_0x4f08bb['rows'][_0x5429a9][_0x1fb1('0xb4')]));}return Promise['all'](_0x391ae1)[_0x1fb1('0x8')](function(){return _0x4f08bb;});}return _0x4f08bb;});}});}}});};
\ No newline at end of file
+var _0x741c=['length','find','all','ignore','autoAssociation','push','keys','intersection','fields','attributes','nolimit','limit','offset','order','sort','pick','filters','merge','key','foreignKey','forEach','options','includeAll','include','reportType','default','DefaultReports','custom','CustomReports','count','rows','CmContact','color','ThroughTags','tag','openTabs','true','chat','sms','dataValues','fax','mail','openchannel','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','squel','exports','filter','field','value','findAll','catch','model','associatedResources','name','then','map','AnalyticExtractedReport','resourceId','toLowerCase','squareprojects','childModel','SquareOdbc','squarerecordings','SquareRecording','parentSections','projectName','projects','JscriptyProject','contacts','Lists','lists','CmList','companies','CmCompany','globalcustomfields','CmCustomField','chatwebsites','faxqueues','FaxQueue','FaxAccount','inboundroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','voicemails','voicerecordings','VoiceRecording','Agents','User','role','Telephones','membername','telephone','VoiceQueues','queue','VoiceQueue','type','QueueCampaigns','outbound','musiconholds','chanspies','VoiceChanSpy','voiceprefixes','VoicePrefix','Campaign','mailqueues','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','SmsQueue','smsaccounts','whatsappqueues','WhatsappQueue','WhatsappAccount','Team','queuecampaigns','users','telephones','admin','user','zendeskaccounts','ZendeskAccount','salesforceaccounts','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition','customdashboards','intervals','Interval','pauses','Pause','scheduler','Schedule','tags','Tag','templates','Template','trunks','Trunk','variables','extractedreports','Reports','reportId','metrics','AnalyticMetric','toUpperCase','slice','SELECT','select','ui.','ui.createdAt','from','_interactions','where','ui.UserId\x20=\x20?','sequelize','query','UserProfile','user_profiles','section','mergeResources','isEmpty'];(function(_0x559579,_0x2c5605){var _0x57ca1c=function(_0x46453e){while(--_0x46453e){_0x559579['push'](_0x559579['shift']());}};_0x57ca1c(++_0x2c5605);}(_0x741c,0x196));var _0xc741=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x741c[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0xc741('0x0'));var attributes=require(_0xc741('0x1'));var qs=require(_0xc741('0x2'));var squel=require(_0xc741('0x3'));module[_0xc741('0x4')]=function(_0x31de60){var _0x5c8d3b=_0x31de60['models'];function _0x4089bf(_0x4ccc27,_0xc80e99){return new Promise(function(_0x1935b4,_0x3708ae){if(!_0xc80e99)return _0x1935b4(null);var _0x133bc4=_0xc80e99[_0xc741('0x5')]?{[_0xc80e99[_0xc741('0x5')][_0xc741('0x6')]]:_0xc80e99['filter'][_0xc741('0x7')]}:undefined;return _0x5c8d3b[_0x4ccc27][_0xc741('0x8')]({'where':_0x133bc4,'raw':!![]})['then'](function(_0xc6555){_0xc80e99['associatedResources']=_['map'](_0xc6555,'id');_0x1935b4(_0xc80e99);})[_0xc741('0x9')](function(_0x264cb9){_0x3708ae(_0x264cb9);});});}function _0x40639b(_0x47501c,_0xa1abb1){return new Promise(function(_0x29920b,_0x312684){var _0x506b51=_0x47501c['filter']?{[_0x47501c['filter'][_0xc741('0x6')]]:_0x47501c[_0xc741('0x5')][_0xc741('0x7')]}:undefined;return _0x5c8d3b[_0x47501c[_0xc741('0xa')]][_0xc741('0x8')]({'where':_0x506b51,'raw':!![]})['then'](function(_0xde1da){_0xa1abb1[_0xc741('0xb')]=_['map'](_0xde1da,function(_0xc0383){return _0xc0383[_0xc741('0xc')];});_0x29920b(_0xa1abb1);})[_0xc741('0x9')](function(_0x450179){_0x312684(_0x450179);});});}function _0x21514e(_0x5bbe86,_0x4dcf16,_0x341f54){if(!_0x4dcf16)return Promise['resolve'](null);return new Promise(function(_0x1c4f3a,_0x3903c6){return _0x5c8d3b['UserProfileResource']['findAll']({'where':{'sectionId':_0x4dcf16['id']},'raw':!![]})[_0xc741('0xd')](function(_0x477cc2){if(_0x5bbe86[_0xc741('0x6')]&&_0x5bbe86['field']!=='id'){_0x4dcf16[_0xc741('0xb')]=_[_0xc741('0xe')](_0x477cc2,function(_0x475348){return _0x475348[_0x5bbe86[_0xc741('0x6')]];});}else{if(_0x341f54===_0xc741('0xf')){_0x4dcf16[_0xc741('0xb')]=_[_0xc741('0xe')](_0x477cc2,function(_0x30b7ea){return{'id':_0x30b7ea[_0xc741('0x10')],'type':_0x30b7ea['type']};});}else{_0x4dcf16[_0xc741('0xb')]=_['map'](_0x477cc2,function(_0x212c67){return _0x212c67['resourceId'];});}}_0x1c4f3a(_0x4dcf16);})[_0xc741('0x9')](function(_0x3c3497){_0x3903c6(_0x3c3497);});});}function _0x38e752(_0x5ca96f,_0x71c786){var _0x5a89bd={'parentSections':[]};switch(_0x5ca96f[_0xc741('0x11')]()){case _0xc741('0x12'):_0x5a89bd[_0xc741('0x13')]='SquareProject';break;case'odbc':_0x5a89bd['childModel']=_0xc741('0x14');break;case _0xc741('0x15'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x16');_0x5a89bd[_0xc741('0x17')]=[{'name':'SquareProjects','field':'name','foreignKey':_0xc741('0x18')}];break;case _0xc741('0x19'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x1a');break;case _0xc741('0x1b'):_0x5a89bd[_0xc741('0x13')]='CmContact';_0x5a89bd[_0xc741('0x17')]=[{'name':_0xc741('0x1c'),'field':'id','foreignKey':'ListId'}];break;case _0xc741('0x1d'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x1e');break;case _0xc741('0x1f'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x20');break;case _0xc741('0x21'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x22');break;case'chatqueues':_0x5a89bd[_0xc741('0x13')]='ChatQueue';break;case _0xc741('0x23'):_0x5a89bd['childModel']='ChatWebsite';break;case _0xc741('0x24'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x25');break;case'faxaccounts':_0x5a89bd[_0xc741('0x13')]=_0xc741('0x26');break;case _0xc741('0x27'):case'internalroutes':case _0xc741('0x28'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x29');break;case _0xc741('0x2a'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x2b');break;case _0xc741('0x2c'):_0x5a89bd['childModel']='VoiceMail';break;case _0xc741('0x2d'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x2e');_0x5a89bd[_0xc741('0x17')]=[{'name':_0xc741('0x2f'),'field':_0xc741('0xc'),'foreignKey':'membername','model':_0xc741('0x30'),'filter':{'field':_0xc741('0x31'),'value':['agent']}},{'name':_0xc741('0x32'),'field':_0xc741('0xc'),'foreignKey':_0xc741('0x33'),'model':'User','filter':{'field':_0xc741('0x31'),'value':[_0xc741('0x34')]}},{'name':_0xc741('0x35'),'field':_0xc741('0xc'),'foreignKey':_0xc741('0x36'),'model':_0xc741('0x37'),'filter':{'field':_0xc741('0x38'),'value':['inbound']}},{'name':_0xc741('0x39'),'field':_0xc741('0xc'),'foreignKey':_0xc741('0x36'),'model':_0xc741('0x37'),'filter':{'field':_0xc741('0x38'),'value':[_0xc741('0x3a')]}}];break;case _0xc741('0x3b'):_0x5a89bd[_0xc741('0x13')]='VoiceMusicOnHold';break;case _0xc741('0x3c'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x3d');break;case _0xc741('0x3e'):_0x5a89bd['childModel']=_0xc741('0x3f');break;case'ivrcampaigns':_0x5a89bd[_0xc741('0x13')]=_0xc741('0x40');break;case _0xc741('0x41'):_0x5a89bd['childModel']='MailQueue';break;case _0xc741('0x42'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x43');break;case _0xc741('0x44'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x45');break;case _0xc741('0x46'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x47');break;case _0xc741('0x48'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x49');break;case _0xc741('0x4a'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x4b');break;case _0xc741('0x4c'):_0x5a89bd[_0xc741('0x13')]='SmsAccount';break;case _0xc741('0x4d'):_0x5a89bd['childModel']=_0xc741('0x4e');break;case'whatsappaccounts':_0x5a89bd[_0xc741('0x13')]=_0xc741('0x4f');break;case'teams':_0x5a89bd[_0xc741('0x13')]=_0xc741('0x50');break;case'voicequeues':case _0xc741('0x51'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x37');if(_0x71c786){_0x5a89bd[_0xc741('0x17')]=[{'name':_0xc741('0x35')},{'name':_0xc741('0x39')}];}break;case _0xc741('0x52'):case'agents':case _0xc741('0x53'):_0x5a89bd['childModel']='User';if(_0x71c786){_0x5a89bd[_0xc741('0x17')]=[{'name':'Users','filter':{'field':_0xc741('0x31'),'value':[_0xc741('0x54'),_0xc741('0x55')]},'ignore':!![]},{'name':_0xc741('0x2f')},{'name':_0xc741('0x32')}];}break;case _0xc741('0x56'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x57');break;case _0xc741('0x58'):_0x5a89bd['childModel']='SalesforceAccount';break;case _0xc741('0x59'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x5a');break;case _0xc741('0x5b'):_0x5a89bd['childModel']=_0xc741('0x5c');break;case'deskaccounts':_0x5a89bd[_0xc741('0x13')]=_0xc741('0x5d');break;case _0xc741('0x5e'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x5f');break;case _0xc741('0x60'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x30');break;case _0xc741('0x61'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x62');break;case _0xc741('0x63'):_0x5a89bd['childModel']=_0xc741('0x64');break;case _0xc741('0x65'):_0x5a89bd[_0xc741('0x13')]='Dashboard';break;case _0xc741('0x66'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x67');break;case _0xc741('0x68'):_0x5a89bd['childModel']=_0xc741('0x69');break;case _0xc741('0x6a'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x6b');break;case'sounds':_0x5a89bd[_0xc741('0x13')]='Sound';break;case _0xc741('0x6c'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x6d');break;case _0xc741('0x6e'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x6f');break;case'triggers':_0x5a89bd[_0xc741('0x13')]='Trigger';break;case _0xc741('0x70'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x71');break;case _0xc741('0x72'):_0x5a89bd[_0xc741('0x13')]='Variable';break;case'plugins':_0x5a89bd[_0xc741('0x13')]='Plugin';break;case _0xc741('0x73'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0xf');_0x5a89bd[_0xc741('0x17')]=[{'name':_0xc741('0x74'),'field':'id','foreignKey':_0xc741('0x75')}];break;case _0xc741('0x76'):_0x5a89bd[_0xc741('0x13')]=_0xc741('0x77');break;}return _0x5a89bd;}function _0x335eb6(_0xc1c742,_0x1e31bb){var _0x4f386b=_0xc1c742['charAt'](0x0)[_0xc741('0x78')]()+_0xc1c742[_0xc741('0x79')](0x1);var _0xe0b6d8={'type':_0x5c8d3b['Sequelize']['QueryTypes'][_0xc741('0x7a')],'raw':!![]};return new Promise(function(_0x5a4f5b,_0x394be8){var _0x3523a2=squel[_0xc741('0x7b')]()[_0xc741('0x6')](_0xc741('0x7c')+_0x4f386b+'InteractionId','id')['field'](_0xc741('0x7d'))[_0xc741('0x7e')]('user_has_'+_0xc1c742+_0xc741('0x7f'),'ui')[_0xc741('0x80')](_0xc741('0x81'),_0x1e31bb['id']);return _0x5c8d3b[_0xc741('0x82')][_0xc741('0x83')](_0x3523a2['toString'](),_0xe0b6d8)['then'](function(_0x2802a7){_0x1e31bb[_0x4f386b+'OpenTabs']=_0x2802a7;_0x5a4f5b(_0x2802a7);})[_0xc741('0x9')](function(_0x43471d){_0x394be8(_0x43471d);});});}return _0x31de60['define'](_0xc741('0x84'),attributes,{'tableName':_0xc741('0x85'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0xf47dfd){var _0x1aecb3={'raw':![],'where':{}};var _0x1c5c67={};var _0x9027d1={'count':0x0,'rows':[]};var _0xd0575b=_0xf47dfd['query'][_0xc741('0x86')];var _0x28390d=_0xf47dfd['query'][_0xc741('0x87')]||![];var _0x2d9a96=_0x38e752(_0xd0575b,_0x28390d);if(!_0x2d9a96[_0xc741('0x13')])throw new Error('Invalid\x20section\x20\x27'+_0xd0575b+'\x27');var _0xe0f852=[{'name':_0xd0575b}];if(!_[_0xc741('0x88')](_0x2d9a96['parentSections']))_0xe0f852=_0x2d9a96[_0xc741('0x17')];var _0x3768ef=[];for(var _0xfa0e86=0x0;_0xfa0e86<_0xe0f852[_0xc741('0x89')];_0xfa0e86++){_0x3768ef['push'](_0x5c8d3b['UserProfileSection'][_0xc741('0x8a')]({'where':{'userProfileId':_0xf47dfd['params']['id'],'name':_0xe0f852[_0xfa0e86][_0xc741('0xc')]},'raw':!![]}));}return Promise[_0xc741('0x8b')](_0x3768ef)[_0xc741('0xd')](function(_0x1d0401){var _0x438997=_[_0xc741('0x5')](_0x1d0401,function(_0x5eab1a){return _0x5eab1a?_0x5eab1a:undefined;});var _0x40cfe0=_['filter'](_0xe0f852,[_0xc741('0x8c'),!![]]);var _0x1931e2=_[_0xc741('0x88')](_0x438997)&&_[_0xc741('0x88')](_0x40cfe0)?null:_['union'](_0x40cfe0,_0x438997);if(!_0x1931e2)return null;var _0x31c533=[];for(var _0x19b48a=0x0;_0x19b48a<_0x1931e2[_0xc741('0x89')];_0x19b48a++){var _0x164525=_[_0xc741('0x8a')](_0xe0f852,function(_0x240865){return _0x1931e2[_0x19b48a]?_0x240865[_0xc741('0xc')]===_0x1931e2[_0x19b48a][_0xc741('0xc')]:null;});if(_0x164525){if(_0x1931e2[_0x19b48a][_0xc741('0x8c')]){_0x31c533['push'](_0x4089bf(_0x2d9a96['childModel'],_0x1931e2[_0x19b48a]));}else{if(!_0x1931e2[_0x19b48a][_0xc741('0x8d')]){_0x31c533[_0xc741('0x8e')](_0x21514e(_0x164525,_0x1931e2[_0x19b48a],_0x2d9a96[_0xc741('0x13')]));}else{if(_0x164525[_0xc741('0xa')]){_0x31c533['push'](_0x40639b(_0x164525,_0x1931e2[_0x19b48a]));}}}}}return Promise[_0xc741('0x8b')](_0x31c533);})[_0xc741('0xd')](function(_0x22982b){var _0x3f3b84=_0x22982b;var _0x31c314=null;if(_0x3f3b84){_0x31c314=_0x3f3b84[_0xc741('0x89')]===0x1?_0x3f3b84[0x0]:null;}if(!_0x31c314&&!_0x3f3b84)return _0x9027d1;var _0x2cb099=_0x5c8d3b[_0x2d9a96[_0xc741('0x13')]]['rawAttributes'];_0x1c5c67[_0xc741('0xa')]=_['keys'](_0x2cb099);_0x1c5c67['query']=_[_0xc741('0x8f')](_0xf47dfd[_0xc741('0x83')]);_0x1c5c67['filters']=_[_0xc741('0x90')](_0x1c5c67[_0xc741('0xa')],_0x1c5c67['query']);_0x1aecb3['attributes']=_[_0xc741('0x90')](_0x1c5c67[_0xc741('0xa')],qs['fields'](_0xf47dfd[_0xc741('0x83')][_0xc741('0x91')]));_0x1aecb3[_0xc741('0x92')]=_0x1aecb3[_0xc741('0x92')][_0xc741('0x89')]?_0x1aecb3[_0xc741('0x92')]:_0x1c5c67[_0xc741('0xa')];if(!_0xf47dfd[_0xc741('0x83')]['hasOwnProperty'](_0xc741('0x93'))){_0x1aecb3[_0xc741('0x94')]=qs[_0xc741('0x94')](_0xf47dfd[_0xc741('0x83')]['limit']);_0x1aecb3[_0xc741('0x95')]=qs[_0xc741('0x95')](_0xf47dfd['query'][_0xc741('0x95')]);}_0x1aecb3[_0xc741('0x96')]=qs[_0xc741('0x97')](_0xf47dfd[_0xc741('0x83')]['sort']);_0x1aecb3['where']=qs['filters'](_[_0xc741('0x98')](_0xf47dfd[_0xc741('0x83')],_0x1c5c67[_0xc741('0x99')]));if(_0xf47dfd[_0xc741('0x83')]['filter']){_0x1aecb3[_0xc741('0x80')]=_[_0xc741('0x9a')](_0x1aecb3['where'],{'$or':_['map'](_0x2cb099,function(_0x110cac){if(_0x110cac[_0xc741('0x38')][_0xc741('0x9b')]!=='VIRTUAL'){var _0x3922e1={};_0x3922e1[_0x110cac[_0xc741('0x6')]]={'$like':'%'+_0xf47dfd[_0xc741('0x83')]['filter']+'%'};return _0x3922e1;}})});}var _0x4a3c3a=[];var _0x58b414=null;var _0x2e7cfa={};if(_0x31c314){_0x58b414=_[_0xc741('0x8a')](_0xe0f852,['name',_0x31c314['name']]);if(_0x58b414[_0xc741('0x6')]){_0x2e7cfa={};if(_0x2d9a96[_0xc741('0x13')]==='AnalyticExtractedReport'){_0x2e7cfa[_0x58b414[_0xc741('0x9c')]]=_['map'](_0x31c314['associatedResources'],'id');}else{_0x2e7cfa[_0x58b414['foreignKey']]=_0x31c314[_0xc741('0xb')];}_0x4a3c3a[_0xc741('0x8e')](_0x2e7cfa);}else{_0x1aecb3[_0xc741('0x80')]['id']=_0x31c314[_0xc741('0xb')];}}else{for(var _0x59822a=0x0;_0x59822a<_0x3f3b84[_0xc741('0x89')];_0x59822a++){_0x58b414=_['find'](_0xe0f852,[_0xc741('0xc'),_0x3f3b84[_0x59822a]['name']]);if(_0x58b414['field']){_0x2e7cfa={};_0x2e7cfa[_0x58b414[_0xc741('0x9c')]]=_0x3f3b84[_0x59822a][_0xc741('0xb')];_0x4a3c3a['push'](_0x2e7cfa);}else{if(!_0x1aecb3[_0xc741('0x80')]['id'])_0x1aecb3[_0xc741('0x80')]['id']=[];_0x3f3b84[_0x59822a][_0xc741('0xb')][_0xc741('0x9d')](function(_0x3103bd){_0x1aecb3[_0xc741('0x80')]['id']['push'](_0x3103bd);});}}}if(!_[_0xc741('0x88')](_0x4a3c3a)){_0x1aecb3[_0xc741('0x80')]=_[_0xc741('0x9a')](_0x1aecb3[_0xc741('0x80')],{'$and':{'$or':_0x4a3c3a}});}_0x1aecb3=_[_0xc741('0x9a')]({},_0x1aecb3,_0xf47dfd[_0xc741('0x9e')]);if(_0x31c314&&!_0x31c314[_0xc741('0x8d')]&&_0x2d9a96[_0xc741('0x13')]===_0xc741('0xf')){if(_0xf47dfd[_0xc741('0x83')][_0xc741('0x9f')]){_0x1aecb3[_0xc741('0xa0')]=[{'all':!![]}];}return _0x5c8d3b[_0x2d9a96['childModel']]['findAll'](_0x1aecb3)['then'](function(_0x4c78dc){var _0x1a693a=[];_0x4c78dc[_0xc741('0x9d')](function(_0xb83d6e){var _0x2e1962;switch(_0xb83d6e[_0xc741('0xa1')]){case _0xc741('0xa2'):_0x2e1962=_[_0xc741('0x8a')](_0x31c314[_0xc741('0xb')],function(_0x252e16){return _0x252e16['id']===_0xb83d6e[_0xc741('0x75')]&&_0x252e16[_0xc741('0x38')]===_0xc741('0xa3');});break;case _0xc741('0xa4'):_0x2e1962=_['find'](_0x31c314[_0xc741('0xb')],function(_0x211cee){return _0x211cee['id']===_0xb83d6e[_0xc741('0x75')]&&_0x211cee[_0xc741('0x38')]===_0xc741('0xa5');});break;}if(_0x2e1962)_0x1a693a[_0xc741('0x8e')](_0xb83d6e);});_0x9027d1[_0xc741('0xa6')]=_0x1a693a[_0xc741('0x89')];_0x9027d1[_0xc741('0xa7')]=_0x1a693a;return _0x9027d1;});}else{return _0x5c8d3b[_0x2d9a96[_0xc741('0x13')]][_0xc741('0xa6')]({'where':_0x1aecb3[_0xc741('0x80')]})['then'](function(_0x3d755c){_0x9027d1[_0xc741('0xa6')]=_0x3d755c;if(_0xf47dfd[_0xc741('0x83')]['includeAll']){if(_0x2d9a96[_0xc741('0x13')]===_0xc741('0xa8')){_0x1aecb3['include']=[{'model':_0x5c8d3b[_0xc741('0x6d')],'as':'Tags','attributes':['id',_0xc741('0xc'),_0xc741('0xa9')],'required':_0xf47dfd[_0xc741('0x83')]['tag']?!![]:![]},{'model':_0x5c8d3b[_0xc741('0x6d')],'as':_0xc741('0xaa'),'attributes':['id','name','color'],'through':_0xf47dfd[_0xc741('0x83')][_0xc741('0xab')]?{'attributes':[],'where':{'TagId':_0xf47dfd[_0xc741('0x83')][_0xc741('0xab')]||undefined}}:{},'required':_0xf47dfd['query'][_0xc741('0xab')]?!![]:![]}];}else{_0x1aecb3[_0xc741('0xa0')]=[{'all':!![]}];}}return _0x5c8d3b[_0x2d9a96[_0xc741('0x13')]][_0xc741('0x8')](_0x1aecb3);})[_0xc741('0xd')](function(_0x4045cc){_0x9027d1[_0xc741('0xa7')]=_0x4045cc;if(_0xd0575b==='Agents'&&_0xf47dfd[_0xc741('0x83')][_0xc741('0xac')]===_0xc741('0xad')){var _0x62d071=[];for(var _0x193414=0x0;_0x193414<_0x9027d1[_0xc741('0xa7')]['length'];_0x193414++){_0x62d071[_0xc741('0x8e')](_0x335eb6(_0xc741('0xae'),_0x9027d1['rows'][_0x193414]['dataValues']));_0x62d071[_0xc741('0x8e')](_0x335eb6(_0xc741('0xaf'),_0x9027d1['rows'][_0x193414][_0xc741('0xb0')]));_0x62d071[_0xc741('0x8e')](_0x335eb6(_0xc741('0xb1'),_0x9027d1[_0xc741('0xa7')][_0x193414][_0xc741('0xb0')]));_0x62d071[_0xc741('0x8e')](_0x335eb6(_0xc741('0xb2'),_0x9027d1[_0xc741('0xa7')][_0x193414][_0xc741('0xb0')]));_0x62d071[_0xc741('0x8e')](_0x335eb6(_0xc741('0xb3'),_0x9027d1['rows'][_0x193414]['dataValues']));_0x62d071[_0xc741('0x8e')](_0x335eb6(_0xc741('0xb4'),_0x9027d1[_0xc741('0xa7')][_0x193414]['dataValues']));}return Promise[_0xc741('0x8b')](_0x62d071)['then'](function(){return _0x9027d1;});}return _0x9027d1;});}});}}});};
\ No newline at end of file
index 6a63b3f..59f9b6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5324=['UserProfile,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./userProfile.socket','register','request','info','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x2965d6,_0x4f3c54){var _0x122ef7=function(_0x3f31a6){while(--_0x3f31a6){_0x2965d6['push'](_0x2965d6['shift']());}};_0x122ef7(++_0x4f3c54);}(_0x5324,0x154));var _0x4532=function(_0x491296,_0x26fef2){_0x491296=_0x491296-0x0;var _0x1b0f2b=_0x5324[_0x491296];return _0x1b0f2b;};'use strict';var _=require(_0x4532('0x0'));var util=require(_0x4532('0x1'));var moment=require(_0x4532('0x2'));var BPromise=require(_0x4532('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4532('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x4532('0x5'));var logger=require(_0x4532('0x6'))(_0x4532('0x7'));var config=require(_0x4532('0x8'));var jayson=require(_0x4532('0x9'));var client=jayson[_0x4532('0xa')][_0x4532('0xb')]({'port':0x232a});config[_0x4532('0xc')]=_['defaults'](config[_0x4532('0xc')],{'host':_0x4532('0xd'),'port':0x18eb});var socket=require(_0x4532('0xe'))(new Redis(config[_0x4532('0xc')]));require(_0x4532('0xf'))[_0x4532('0x10')](socket);function respondWithRpcPromise(_0x342da6,_0x2f1b8c,_0x23ad90){return new BPromise(function(_0x3f9647,_0x314e97){return client[_0x4532('0x11')](_0x342da6,_0x23ad90)['then'](function(_0x511ac6){logger[_0x4532('0x12')]('UserProfile,\x20%s,\x20%s',_0x2f1b8c,_0x4532('0x13'));logger[_0x4532('0x14')](_0x4532('0x15'),_0x2f1b8c,_0x4532('0x13'),JSON['stringify'](_0x511ac6));if(_0x511ac6[_0x4532('0x16')]){if(_0x511ac6[_0x4532('0x16')][_0x4532('0x17')]===0x1f4){logger[_0x4532('0x16')](_0x4532('0x18'),_0x2f1b8c,_0x511ac6['error']['message']);return _0x314e97(_0x511ac6['error'][_0x4532('0x19')]);}logger[_0x4532('0x16')](_0x4532('0x18'),_0x2f1b8c,_0x511ac6[_0x4532('0x16')][_0x4532('0x19')]);return _0x3f9647(_0x511ac6[_0x4532('0x16')][_0x4532('0x19')]);}else{logger[_0x4532('0x12')](_0x4532('0x18'),_0x2f1b8c,'request\x20sent');_0x3f9647(_0x511ac6[_0x4532('0x1a')][_0x4532('0x19')]);}})[_0x4532('0x1b')](function(_0x530ce0){logger[_0x4532('0x16')](_0x4532('0x18'),_0x2f1b8c,_0x530ce0);_0x314e97(_0x530ce0);});});}
\ No newline at end of file
+var _0x0324=['debug','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','code','UserProfile,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','./userProfile.socket','request','then','request\x20sent'];(function(_0x38b6cb,_0xb27e9){var _0x1d31f5=function(_0x35f7c1){while(--_0x35f7c1){_0x38b6cb['push'](_0x38b6cb['shift']());}};_0x1d31f5(++_0xb27e9);}(_0x0324,0x90));var _0x4032=function(_0x5cd1cb,_0x3b46ee){_0x5cd1cb=_0x5cd1cb-0x0;var _0x3dd311=_0x0324[_0x5cd1cb];return _0x3dd311;};'use strict';var _=require('lodash');var util=require(_0x4032('0x0'));var moment=require(_0x4032('0x1'));var BPromise=require(_0x4032('0x2'));var rs=require(_0x4032('0x3'));var fs=require('fs');var Redis=require(_0x4032('0x4'));var db=require(_0x4032('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x4032('0x6'))(_0x4032('0x7'));var config=require(_0x4032('0x8'));var jayson=require(_0x4032('0x9'));var client=jayson[_0x4032('0xa')][_0x4032('0xb')]({'port':0x232a});config['redis']=_[_0x4032('0xc')](config[_0x4032('0xd')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4032('0xd')]));require(_0x4032('0xe'))['register'](socket);function respondWithRpcPromise(_0x35d7fd,_0x2940da,_0x3bc38e){return new BPromise(function(_0x3d38aa,_0x561064){return client[_0x4032('0xf')](_0x35d7fd,_0x3bc38e)[_0x4032('0x10')](function(_0x5e9430){logger['info']('UserProfile,\x20%s,\x20%s',_0x2940da,_0x4032('0x11'));logger[_0x4032('0x12')](_0x4032('0x13'),_0x2940da,_0x4032('0x11'),JSON[_0x4032('0x14')](_0x5e9430));if(_0x5e9430[_0x4032('0x15')]){if(_0x5e9430[_0x4032('0x15')][_0x4032('0x16')]===0x1f4){logger[_0x4032('0x15')](_0x4032('0x17'),_0x2940da,_0x5e9430['error']['message']);return _0x561064(_0x5e9430[_0x4032('0x15')][_0x4032('0x18')]);}logger[_0x4032('0x15')](_0x4032('0x17'),_0x2940da,_0x5e9430[_0x4032('0x15')][_0x4032('0x18')]);return _0x3d38aa(_0x5e9430['error'][_0x4032('0x18')]);}else{logger['info']('UserProfile,\x20%s,\x20%s',_0x2940da,_0x4032('0x11'));_0x3d38aa(_0x5e9430[_0x4032('0x19')][_0x4032('0x18')]);}})[_0x4032('0x1a')](function(_0x194abb){logger[_0x4032('0x15')]('UserProfile,\x20%s,\x20%s',_0x2940da,_0x194abb);_0x561064(_0x194abb);});});}
\ No newline at end of file
index 5446113..161e32f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5668=['removeListener','register','userProfile:','./userProfile.events','save','remove','update','emit'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x5668,0xdb));var _0x8566=function(_0x2f1710,_0x26f535){_0x2f1710=_0x2f1710-0x0;var _0x2b28a6=_0x5668[_0x2f1710];return _0x2b28a6;};'use strict';var UserProfileEvents=require(_0x8566('0x0'));var events=[_0x8566('0x1'),_0x8566('0x2'),_0x8566('0x3')];function createListener(_0x4b2f4d,_0x2541ea){return function(_0x5c17f4){_0x2541ea[_0x8566('0x4')](_0x4b2f4d,_0x5c17f4);};}function removeListener(_0x1e0673,_0x471331){return function(){UserProfileEvents[_0x8566('0x5')](_0x1e0673,_0x471331);};}exports[_0x8566('0x6')]=function(_0x31bf10){for(var _0x59ea2d=0x0,_0x44af51=events['length'];_0x59ea2d<_0x44af51;_0x59ea2d++){var _0x50fc07=events[_0x59ea2d];var _0x430d96=createListener(_0x8566('0x7')+_0x50fc07,_0x31bf10);UserProfileEvents['on'](_0x50fc07,_0x430d96);}};
\ No newline at end of file
+var _0xbee8=['register','length','userProfile:','./userProfile.events','save','remove','update','removeListener'];(function(_0x53f852,_0x18ab08){var _0x2640c2=function(_0x35ce2a){while(--_0x35ce2a){_0x53f852['push'](_0x53f852['shift']());}};_0x2640c2(++_0x18ab08);}(_0xbee8,0x18b));var _0x8bee=function(_0x3df871,_0xda2e11){_0x3df871=_0x3df871-0x0;var _0x570f7b=_0xbee8[_0x3df871];return _0x570f7b;};'use strict';var UserProfileEvents=require(_0x8bee('0x0'));var events=[_0x8bee('0x1'),_0x8bee('0x2'),_0x8bee('0x3')];function createListener(_0x315bfd,_0xaa6925){return function(_0x2996af){_0xaa6925['emit'](_0x315bfd,_0x2996af);};}function removeListener(_0x2e6301,_0x19926a){return function(){UserProfileEvents[_0x8bee('0x4')](_0x2e6301,_0x19926a);};}exports[_0x8bee('0x5')]=function(_0x1183c3){for(var _0x5cfecc=0x0,_0x5015a1=events[_0x8bee('0x6')];_0x5cfecc<_0x5015a1;_0x5cfecc++){var _0x3aec6a=events[_0x5cfecc];var _0x100971=createListener(_0x8bee('0x7')+_0x3aec6a,_0x1183c3);UserProfileEvents['on'](_0x3aec6a,_0x100971);}};
\ No newline at end of file
index 3b5a3c0..16ec342 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x213d=['express','../../components/auth/service','../../config/environment','./userProfileResource.controller','get','isAuthenticated','index','/describe','describe','show','put','/:id','update','delete','destroy','exports','multer','util','connect-timeout'];(function(_0x2405bc,_0x2f28a1){var _0x5272d4=function(_0x225294){while(--_0x225294){_0x2405bc['push'](_0x2405bc['shift']());}};_0x5272d4(++_0x2f28a1);}(_0x213d,0x153));var _0xd213=function(_0x6cf19c,_0x2f3f02){_0x6cf19c=_0x6cf19c-0x0;var _0xce14f3=_0x213d[_0x6cf19c];return _0xce14f3;};'use strict';var multer=require(_0xd213('0x0'));var util=require(_0xd213('0x1'));var path=require('path');var timeout=require(_0xd213('0x2'));var express=require(_0xd213('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xd213('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xd213('0x5'));var controller=require(_0xd213('0x6'));router[_0xd213('0x7')]('/',auth[_0xd213('0x8')](),controller[_0xd213('0x9')]);router[_0xd213('0x7')](_0xd213('0xa'),auth[_0xd213('0x8')](),controller[_0xd213('0xb')]);router[_0xd213('0x7')]('/:id',auth[_0xd213('0x8')](),controller[_0xd213('0xc')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xd213('0xd')](_0xd213('0xe'),auth[_0xd213('0x8')](),controller[_0xd213('0xf')]);router[_0xd213('0x10')]('/:id',auth[_0xd213('0x8')](),controller[_0xd213('0x11')]);module[_0xd213('0x12')]=router;
\ No newline at end of file
+var _0xe39a=['Router','../../components/interaction/service','../../config/environment','./userProfileResource.controller','get','isAuthenticated','index','/describe','describe','/:id','post','create','put','delete','destroy','multer','util','path','express'];(function(_0x57140b,_0xec482d){var _0x31cf97=function(_0x199ac1){while(--_0x199ac1){_0x57140b['push'](_0x57140b['shift']());}};_0x31cf97(++_0xec482d);}(_0xe39a,0x106));var _0xae39=function(_0x13d682,_0x3c4a27){_0x13d682=_0x13d682-0x0;var _0x3adac3=_0xe39a[_0x13d682];return _0x3adac3;};'use strict';var multer=require(_0xae39('0x0'));var util=require(_0xae39('0x1'));var path=require(_0xae39('0x2'));var timeout=require('connect-timeout');var express=require(_0xae39('0x3'));var router=express[_0xae39('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xae39('0x5'));var config=require(_0xae39('0x6'));var controller=require(_0xae39('0x7'));router[_0xae39('0x8')]('/',auth[_0xae39('0x9')](),controller[_0xae39('0xa')]);router[_0xae39('0x8')](_0xae39('0xb'),auth[_0xae39('0x9')](),controller[_0xae39('0xc')]);router[_0xae39('0x8')](_0xae39('0xd'),auth[_0xae39('0x9')](),controller['show']);router[_0xae39('0xe')]('/',auth['isAuthenticated'](),controller[_0xae39('0xf')]);router[_0xae39('0x10')]('/:id',auth[_0xae39('0x9')](),controller['update']);router[_0xae39('0x11')](_0xae39('0xd'),auth[_0xae39('0x9')](),controller[_0xae39('0x12')]);module['exports']=router;
\ No newline at end of file
index c81113a..1a1012e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5378=['INTEGER','sequelize','exports','STRING'];(function(_0x406481,_0x55f0e9){var _0x9b888e=function(_0x4ad05d){while(--_0x4ad05d){_0x406481['push'](_0x406481['shift']());}};_0x9b888e(++_0x55f0e9);}(_0x5378,0x1f1));var _0x8537=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x5378[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require(_0x8537('0x0'));module[_0x8537('0x1')]={'name':{'type':Sequelize[_0x8537('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x8537('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x8537('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x8147=['INTEGER','exports','STRING'];(function(_0x18e875,_0x54fff7){var _0x1643c6=function(_0x5f09ff){while(--_0x5f09ff){_0x18e875['push'](_0x18e875['shift']());}};_0x1643c6(++_0x54fff7);}(_0x8147,0x178));var _0x7814=function(_0x4be55f,_0x2919b3){_0x4be55f=_0x4be55f-0x0;var _0x5e9a3a=_0x8147[_0x4be55f];return _0x5e9a3a;};'use strict';var Sequelize=require('sequelize');module[_0x7814('0x0')]={'name':{'type':Sequelize[_0x7814('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x7814('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x7814('0x1')],'allowNull':![]}};
\ No newline at end of file
index d4b4d08..3141a09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x4bc4c8,_0x3139d3){var _0x3bb121=function(_0x95ad12){while(--_0x95ad12){_0x4bc4c8['push'](_0x4bc4c8['shift']());}};_0x3bb121(++_0x3139d3);}(_0x430c,0x1a1));var _0xc430=function(_0x4cc492,_0x162c85){_0x4cc492=_0x4cc492-0x0;var _0x1f36b9=_0x430c[_0x4cc492];return _0x1f36b9;};'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
+var _0x8952=['filter','VIRTUAL','merge','options','findAll','rows','show','params','keys','includeAll','include','catch','create','body','destroy','find','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','end','stack','name','map','UserProfileResource','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x8952,0x17e));var _0x2895=function(_0x846319,_0x5d38e9){_0x846319=_0x846319-0x0;var _0x994e4d=_0x8952[_0x846319];return _0x994e4d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2895('0x0'));var zipdir=require(_0x2895('0x1'));var jsonpatch=require(_0x2895('0x2'));var rp=require(_0x2895('0x3'));var moment=require(_0x2895('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2895('0x5'));var util=require(_0x2895('0x6'));var path=require(_0x2895('0x7'));var sox=require('sox');var csv=require(_0x2895('0x8'));var ejs=require(_0x2895('0x9'));var fs=require('fs');var fs_extra=require(_0x2895('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x2895('0xb'));var jsforce=require(_0x2895('0xc'));var deskjs=require(_0x2895('0xd'));var toCsv=require(_0x2895('0x8'));var querystring=require(_0x2895('0xe'));var Papa=require('papaparse');var Redis=require(_0x2895('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x2895('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x2895('0x11'));var utils=require(_0x2895('0x12'));var config=require(_0x2895('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x2895('0x14'))['db'];function respondWithStatusCode(_0x3924be,_0x4b1342){_0x4b1342=_0x4b1342||0xcc;return function(_0x32574c){if(_0x32574c){return _0x3924be[_0x2895('0x15')](_0x4b1342);}return _0x3924be['status'](_0x4b1342)['end']();};}function respondWithResult(_0x1d1493,_0x2ca2ac){_0x2ca2ac=_0x2ca2ac||0xc8;return function(_0x5777a0){if(_0x5777a0){return _0x1d1493[_0x2895('0x16')](_0x2ca2ac)[_0x2895('0x17')](_0x5777a0);}};}function respondWithFilteredResult(_0x27b50e,_0x1ae013){return function(_0x1d3659){if(_0x1d3659){var _0x2627e6=typeof _0x1ae013[_0x2895('0x18')]===_0x2895('0x19')&&typeof _0x1ae013[_0x2895('0x1a')]===_0x2895('0x19');var _0x10a1bf=_0x1d3659[_0x2895('0x1b')];var _0xbf8b63=_0x2627e6?0x0:_0x1ae013[_0x2895('0x18')];var _0x155124=_0x2627e6?_0x1d3659[_0x2895('0x1b')]:_0x1ae013[_0x2895('0x18')]+_0x1ae013[_0x2895('0x1a')];var _0x5a8eab;if(_0x155124>=_0x10a1bf){_0x155124=_0x10a1bf;_0x5a8eab=0xc8;}else{_0x5a8eab=0xce;}_0x27b50e['status'](_0x5a8eab);return _0x27b50e['set'](_0x2895('0x1c'),_0xbf8b63+'-'+_0x155124+'/'+_0x10a1bf)[_0x2895('0x17')](_0x1d3659);}return null;};}function patchUpdates(_0x3ec4da){return function(_0x593e47){try{jsonpatch[_0x2895('0x1d')](_0x593e47,_0x3ec4da,!![]);}catch(_0x190b79){return BPromise[_0x2895('0x1e')](_0x190b79);}return _0x593e47[_0x2895('0x1f')]();};}function saveUpdates(_0x8b75e0,_0x5dbbfe){return function(_0x30c6c3){if(_0x30c6c3){return _0x30c6c3[_0x2895('0x20')](_0x8b75e0)['then'](function(_0x142e58){return _0x142e58;});}return null;};}function removeEntity(_0x384357,_0x6f8ad4){return function(_0x511286){if(_0x511286){return _0x511286['destroy']()[_0x2895('0x21')](function(){_0x384357[_0x2895('0x16')](0xcc)[_0x2895('0x22')]();});}};}function handleEntityNotFound(_0x4a21cf,_0x3d3320){return function(_0x3690ce){if(!_0x3690ce){_0x4a21cf['sendStatus'](0x194);}return _0x3690ce;};}function handleError(_0x293ad3,_0x127540){_0x127540=_0x127540||0x1f4;return function(_0x2cd4df){logger['error'](_0x2cd4df[_0x2895('0x23')]);if(_0x2cd4df[_0x2895('0x24')]){delete _0x2cd4df['name'];}_0x293ad3[_0x2895('0x16')](_0x127540)['send'](_0x2cd4df);};}exports['index']=function(_0x18a935,_0x4ee2cc){var _0xfa4f85={},_0x381538={},_0x4fdd94={'count':0x0,'rows':[]};var _0x5574bf=_[_0x2895('0x25')](db[_0x2895('0x26')][_0x2895('0x27')],function(_0x14e343){return{'name':_0x14e343[_0x2895('0x28')],'type':_0x14e343[_0x2895('0x29')][_0x2895('0x2a')]};});_0x381538['model']=_[_0x2895('0x25')](_0x5574bf,_0x2895('0x24'));_0x381538[_0x2895('0x2b')]=_['keys'](_0x18a935[_0x2895('0x2b')]);_0x381538[_0x2895('0x2c')]=_[_0x2895('0x2d')](_0x381538[_0x2895('0x2e')],_0x381538['query']);_0xfa4f85[_0x2895('0x2f')]=_[_0x2895('0x2d')](_0x381538[_0x2895('0x2e')],qs[_0x2895('0x30')](_0x18a935[_0x2895('0x2b')]['fields']));_0xfa4f85['attributes']=_0xfa4f85[_0x2895('0x2f')][_0x2895('0x31')]?_0xfa4f85['attributes']:_0x381538[_0x2895('0x2e')];if(!_0x18a935['query'][_0x2895('0x32')](_0x2895('0x33'))){_0xfa4f85['limit']=qs[_0x2895('0x1a')](_0x18a935['query'][_0x2895('0x1a')]);_0xfa4f85['offset']=qs['offset'](_0x18a935[_0x2895('0x2b')][_0x2895('0x18')]);}_0xfa4f85[_0x2895('0x34')]=qs['sort'](_0x18a935[_0x2895('0x2b')][_0x2895('0x35')]);_0xfa4f85[_0x2895('0x36')]=qs[_0x2895('0x2c')](_[_0x2895('0x37')](_0x18a935[_0x2895('0x2b')],_0x381538[_0x2895('0x2c')]),_0x5574bf);if(_0x18a935[_0x2895('0x2b')][_0x2895('0x38')]){_0xfa4f85[_0x2895('0x36')]=_['merge'](_0xfa4f85[_0x2895('0x36')],{'$or':_[_0x2895('0x25')](_0x5574bf,function(_0x47413d){if(_0x47413d[_0x2895('0x29')]!==_0x2895('0x39')){var _0x12d7d8={};_0x12d7d8[_0x47413d[_0x2895('0x24')]]={'$like':'%'+_0x18a935['query']['filter']+'%'};return _0x12d7d8;}})});}_0xfa4f85=_[_0x2895('0x3a')]({},_0xfa4f85,_0x18a935[_0x2895('0x3b')]);var _0x24b9e0={'where':_0xfa4f85[_0x2895('0x36')]};return db[_0x2895('0x26')][_0x2895('0x1b')](_0x24b9e0)['then'](function(_0x5d18ef){_0x4fdd94[_0x2895('0x1b')]=_0x5d18ef;if(_0x18a935[_0x2895('0x2b')]['includeAll']){_0xfa4f85['include']=[{'all':!![]}];}return db[_0x2895('0x26')][_0x2895('0x3c')](_0xfa4f85);})[_0x2895('0x21')](function(_0x28967f){_0x4fdd94[_0x2895('0x3d')]=_0x28967f;return _0x4fdd94;})[_0x2895('0x21')](respondWithFilteredResult(_0x4ee2cc,_0xfa4f85))['catch'](handleError(_0x4ee2cc,null));};exports[_0x2895('0x3e')]=function(_0x2cfb24,_0x18ca24){var _0x1537fd={'raw':![],'where':{'id':_0x2cfb24[_0x2895('0x3f')]['id']}},_0x4af6d6={};_0x4af6d6[_0x2895('0x2e')]=_[_0x2895('0x40')](db[_0x2895('0x26')]['rawAttributes']);_0x4af6d6['query']=_[_0x2895('0x40')](_0x2cfb24[_0x2895('0x2b')]);_0x4af6d6[_0x2895('0x2c')]=_[_0x2895('0x2d')](_0x4af6d6[_0x2895('0x2e')],_0x4af6d6['query']);_0x1537fd['attributes']=_[_0x2895('0x2d')](_0x4af6d6[_0x2895('0x2e')],qs[_0x2895('0x30')](_0x2cfb24[_0x2895('0x2b')][_0x2895('0x30')]));_0x1537fd[_0x2895('0x2f')]=_0x1537fd[_0x2895('0x2f')]['length']?_0x1537fd[_0x2895('0x2f')]:_0x4af6d6[_0x2895('0x2e')];if(_0x2cfb24[_0x2895('0x2b')][_0x2895('0x41')]){_0x1537fd[_0x2895('0x42')]=[{'all':!![]}];}_0x1537fd=_[_0x2895('0x3a')]({},_0x1537fd,_0x2cfb24[_0x2895('0x3b')]);return db[_0x2895('0x26')]['find'](_0x1537fd)[_0x2895('0x21')](handleEntityNotFound(_0x18ca24,null))[_0x2895('0x21')](respondWithResult(_0x18ca24,null))[_0x2895('0x43')](handleError(_0x18ca24,null));};exports['create']=function(_0xc85aa1,_0x5307a9){return db['UserProfileResource'][_0x2895('0x44')](_0xc85aa1[_0x2895('0x45')],{})[_0x2895('0x21')](respondWithResult(_0x5307a9,0xc9))[_0x2895('0x43')](handleError(_0x5307a9,null));};exports[_0x2895('0x20')]=function(_0x3cc331,_0x11e53a){if(_0x3cc331['body']['id']){delete _0x3cc331[_0x2895('0x45')]['id'];}return db[_0x2895('0x26')]['find']({'where':{'id':_0x3cc331['params']['id']}})['then'](handleEntityNotFound(_0x11e53a,null))[_0x2895('0x21')](saveUpdates(_0x3cc331[_0x2895('0x45')],null))[_0x2895('0x21')](respondWithResult(_0x11e53a,null))[_0x2895('0x43')](handleError(_0x11e53a,null));};exports[_0x2895('0x46')]=function(_0x3c5261,_0xaca46c){return db[_0x2895('0x26')][_0x2895('0x47')]({'where':{'id':_0x3c5261[_0x2895('0x3f')]['id']}})[_0x2895('0x21')](handleEntityNotFound(_0xaca46c,null))[_0x2895('0x21')](removeEntity(_0xaca46c,null))[_0x2895('0x43')](handleError(_0xaca46c,null));};exports[_0x2895('0x48')]=function(_0x356d35,_0x3c1135){return db[_0x2895('0x26')][_0x2895('0x48')]()[_0x2895('0x21')](respondWithResult(_0x3c1135,null))[_0x2895('0x43')](handleError(_0x3c1135,null));};
\ No newline at end of file
index 64e89f1..826a023 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7be7=['compositeIndex','resourceId','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','exports','UserProfileResource'];(function(_0x420f45,_0x82ba43){var _0x115f02=function(_0x1f2638){while(--_0x1f2638){_0x420f45['push'](_0x420f45['shift']());}};_0x115f02(++_0x82ba43);}(_0x7be7,0x1be));var _0x77be=function(_0x49404a,_0x2fe0aa){_0x49404a=_0x49404a-0x0;var _0x75a077=_0x7be7[_0x49404a];return _0x75a077;};'use strict';var _=require(_0x77be('0x0'));var util=require(_0x77be('0x1'));var logger=require(_0x77be('0x2'))(_0x77be('0x3'));var moment=require('moment');var BPromise=require(_0x77be('0x4'));var rp=require(_0x77be('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x77be('0x6'));var config=require(_0x77be('0x7'));var attributes=require('./userProfileResource.attributes');module[_0x77be('0x8')]=function(_0x15f380,_0x4627a0){return _0x15f380['define'](_0x77be('0x9'),attributes,{'tableName':'user_profile_has_resources','paranoid':![],'indexes':[{'name':_0x77be('0xa'),'fields':[_0x77be('0xb'),'sectionId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3a78=['../../config/environment','./userProfileResource.attributes','define','UserProfileResource','user_profile_has_resources','compositeIndex','resourceId','sectionId','util','api','moment','bluebird','rimraf'];(function(_0x1789f8,_0x52d0fc){var _0x338750=function(_0x34b1e7){while(--_0x34b1e7){_0x1789f8['push'](_0x1789f8['shift']());}};_0x338750(++_0x52d0fc);}(_0x3a78,0x1dc));var _0x83a7=function(_0x1c34e7,_0x33f9a8){_0x1c34e7=_0x1c34e7-0x0;var _0x378cb1=_0x3a78[_0x1c34e7];return _0x378cb1;};'use strict';var _=require('lodash');var util=require(_0x83a7('0x0'));var logger=require('../../config/logger')(_0x83a7('0x1'));var moment=require(_0x83a7('0x2'));var BPromise=require(_0x83a7('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x83a7('0x4'));var config=require(_0x83a7('0x5'));var attributes=require(_0x83a7('0x6'));module['exports']=function(_0x48250f,_0x19ab68){return _0x48250f[_0x83a7('0x7')](_0x83a7('0x8'),attributes,{'tableName':_0x83a7('0x9'),'paranoid':![],'indexes':[{'name':_0x83a7('0xa'),'fields':[_0x83a7('0xb'),_0x83a7('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index c6725d8..8e6d12f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf29=['lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','error','UserProfileResource,\x20%s,\x20%s','message','result'];(function(_0x509a13,_0x5f0dc1){var _0x34117f=function(_0x225bd3){while(--_0x225bd3){_0x509a13['push'](_0x509a13['shift']());}};_0x34117f(++_0x5f0dc1);}(_0xdf29,0xab));var _0x9df2=function(_0x169fd6,_0x3bbeff){_0x169fd6=_0x169fd6-0x0;var _0x3b0349=_0xdf29[_0x169fd6];return _0x3b0349;};'use strict';var _=require(_0x9df2('0x0'));var util=require(_0x9df2('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x9df2('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9df2('0x3'))['db'];var utils=require(_0x9df2('0x4'));var logger=require(_0x9df2('0x5'))(_0x9df2('0x6'));var config=require('../../config/environment');var jayson=require(_0x9df2('0x7'));var client=jayson['client'][_0x9df2('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x17086d,_0x1c91a7,_0x5e744c){return new BPromise(function(_0x3e6764,_0x271f14){return client[_0x9df2('0x9')](_0x17086d,_0x5e744c)[_0x9df2('0xa')](function(_0x244df7){logger[_0x9df2('0xb')]('UserProfileResource,\x20%s,\x20%s',_0x1c91a7,_0x9df2('0xc'));logger[_0x9df2('0xd')](_0x9df2('0xe'),_0x1c91a7,'request\x20sent',JSON['stringify'](_0x244df7));if(_0x244df7[_0x9df2('0xf')]){if(_0x244df7[_0x9df2('0xf')]['code']===0x1f4){logger['error'](_0x9df2('0x10'),_0x1c91a7,_0x244df7[_0x9df2('0xf')][_0x9df2('0x11')]);return _0x271f14(_0x244df7[_0x9df2('0xf')][_0x9df2('0x11')]);}logger[_0x9df2('0xf')]('UserProfileResource,\x20%s,\x20%s',_0x1c91a7,_0x244df7['error'][_0x9df2('0x11')]);return _0x3e6764(_0x244df7[_0x9df2('0xf')]['message']);}else{logger[_0x9df2('0xb')](_0x9df2('0x10'),_0x1c91a7,'request\x20sent');_0x3e6764(_0x244df7[_0x9df2('0x12')][_0x9df2('0x11')]);}})['catch'](function(_0x179d0b){logger[_0x9df2('0xf')](_0x9df2('0x10'),_0x1c91a7,_0x179d0b);_0x271f14(_0x179d0b);});});}
\ No newline at end of file
+var _0x5eb9=['util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','info','UserProfileResource,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','lodash'];(function(_0x132663,_0x4de2ac){var _0x4fe27f=function(_0x1dfec6){while(--_0x1dfec6){_0x132663['push'](_0x132663['shift']());}};_0x4fe27f(++_0x4de2ac);}(_0x5eb9,0x8b));var _0x95eb=function(_0x30dfa4,_0x1a6275){_0x30dfa4=_0x30dfa4-0x0;var _0x185b37=_0x5eb9[_0x30dfa4];return _0x185b37;};'use strict';var _=require(_0x95eb('0x0'));var util=require(_0x95eb('0x1'));var moment=require(_0x95eb('0x2'));var BPromise=require('bluebird');var rs=require(_0x95eb('0x3'));var fs=require('fs');var Redis=require(_0x95eb('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x95eb('0x5'));var logger=require(_0x95eb('0x6'))(_0x95eb('0x7'));var config=require(_0x95eb('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x95eb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xabbd3,_0x44d61e,_0x177601){return new BPromise(function(_0x43185f,_0x1310dd){return client[_0x95eb('0xa')](_0xabbd3,_0x177601)['then'](function(_0x277714){logger[_0x95eb('0xb')](_0x95eb('0xc'),_0x44d61e,'request\x20sent');logger[_0x95eb('0xd')]('UserProfileResource,\x20%s,\x20%s,\x20%s',_0x44d61e,_0x95eb('0xe'),JSON[_0x95eb('0xf')](_0x277714));if(_0x277714[_0x95eb('0x10')]){if(_0x277714[_0x95eb('0x10')][_0x95eb('0x11')]===0x1f4){logger[_0x95eb('0x10')](_0x95eb('0xc'),_0x44d61e,_0x277714[_0x95eb('0x10')][_0x95eb('0x12')]);return _0x1310dd(_0x277714['error']['message']);}logger['error'](_0x95eb('0xc'),_0x44d61e,_0x277714[_0x95eb('0x10')][_0x95eb('0x12')]);return _0x43185f(_0x277714[_0x95eb('0x10')][_0x95eb('0x12')]);}else{logger[_0x95eb('0xb')]('UserProfileResource,\x20%s,\x20%s',_0x44d61e,'request\x20sent');_0x43185f(_0x277714[_0x95eb('0x13')]['message']);}})['catch'](function(_0x7547e7){logger[_0x95eb('0x10')]('UserProfileResource,\x20%s,\x20%s',_0x44d61e,_0x7547e7);_0x1310dd(_0x7547e7);});});}
\ No newline at end of file
index c7ce5de..e373da2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa760=['delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileSection.controller','isAuthenticated','get','/describe','describe','/:id','show','post','create','put','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa760,0xb3));var _0x0a76=function(_0x2b48ac,_0x29442a){_0x2b48ac=_0x2b48ac-0x0;var _0x20ab20=_0xa760[_0x2b48ac];return _0x20ab20;};'use strict';var multer=require(_0x0a76('0x0'));var util=require(_0x0a76('0x1'));var path=require(_0x0a76('0x2'));var timeout=require(_0x0a76('0x3'));var express=require(_0x0a76('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x0a76('0x5'));var interaction=require(_0x0a76('0x6'));var config=require(_0x0a76('0x7'));var controller=require(_0x0a76('0x8'));router['get']('/',auth[_0x0a76('0x9')](),controller['index']);router[_0x0a76('0xa')](_0x0a76('0xb'),auth[_0x0a76('0x9')](),controller[_0x0a76('0xc')]);router[_0x0a76('0xa')](_0x0a76('0xd'),auth[_0x0a76('0x9')](),controller[_0x0a76('0xe')]);router[_0x0a76('0xf')]('/',auth[_0x0a76('0x9')](),controller[_0x0a76('0x10')]);router[_0x0a76('0x11')](_0x0a76('0xd'),auth[_0x0a76('0x9')](),controller[_0x0a76('0x12')]);router[_0x0a76('0x13')](_0x0a76('0xd'),auth[_0x0a76('0x9')](),controller[_0x0a76('0x14')]);module[_0x0a76('0x15')]=router;
\ No newline at end of file
+var _0x7351=['get','/describe','isAuthenticated','describe','/:id','post','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./userProfileSection.controller','index'];(function(_0x4637d2,_0x1cb4a9){var _0x5b2683=function(_0x1a59ca){while(--_0x1a59ca){_0x4637d2['push'](_0x4637d2['shift']());}};_0x5b2683(++_0x1cb4a9);}(_0x7351,0x11b));var _0x1735=function(_0xe3114b,_0x2fd647){_0xe3114b=_0xe3114b-0x0;var _0x42eb9e=_0x7351[_0xe3114b];return _0x42eb9e;};'use strict';var multer=require(_0x1735('0x0'));var util=require(_0x1735('0x1'));var path=require(_0x1735('0x2'));var timeout=require(_0x1735('0x3'));var express=require(_0x1735('0x4'));var router=express[_0x1735('0x5')]();var fs_extra=require(_0x1735('0x6'));var auth=require(_0x1735('0x7'));var interaction=require(_0x1735('0x8'));var config=require('../../config/environment');var controller=require(_0x1735('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x1735('0xa')]);router[_0x1735('0xb')](_0x1735('0xc'),auth[_0x1735('0xd')](),controller[_0x1735('0xe')]);router[_0x1735('0xb')](_0x1735('0xf'),auth['isAuthenticated'](),controller['show']);router[_0x1735('0x10')]('/',auth[_0x1735('0xd')](),controller['create']);router[_0x1735('0x11')]('/:id',auth[_0x1735('0xd')](),controller[_0x1735('0x12')]);router[_0x1735('0x13')]('/:id',auth[_0x1735('0xd')](),controller[_0x1735('0x14')]);module['exports']=router;
\ No newline at end of file
index f29aefa..c843a82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28f2=['join','getDataValue','split','sequelize','exports','STRING','INTEGER','BOOLEAN','setDataValue','crudPermissions'];(function(_0x4d4ce6,_0x401262){var _0x55734c=function(_0x156440){while(--_0x156440){_0x4d4ce6['push'](_0x4d4ce6['shift']());}};_0x55734c(++_0x401262);}(_0x28f2,0x193));var _0x228f=function(_0x3fc1a2,_0x46e10b){_0x3fc1a2=_0x3fc1a2-0x0;var _0x48212d=_0x28f2[_0x3fc1a2];return _0x48212d;};'use strict';var Sequelize=require(_0x228f('0x0'));module[_0x228f('0x1')]={'name':{'type':Sequelize[_0x228f('0x2')],'allowNull':![]},'category':{'type':Sequelize[_0x228f('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x228f('0x3')],'allowNull':![]},'enabled':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x228f('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x228f('0x2')],'set':function(_0x79ed5f){this[_0x228f('0x5')](_0x228f('0x6'),_0x79ed5f?_0x79ed5f[_0x228f('0x7')](''):[]);},'get':function(){return this[_0x228f('0x8')]('crudPermissions')?this[_0x228f('0x8')]('crudPermissions')[_0x228f('0x9')](''):[];}}};
\ No newline at end of file
+var _0x14a0=['INTEGER','BOOLEAN','crudPermissions','join','getDataValue','split','exports','STRING'];(function(_0x1d0c98,_0x18d8a6){var _0x494266=function(_0xb50a2f){while(--_0xb50a2f){_0x1d0c98['push'](_0x1d0c98['shift']());}};_0x494266(++_0x18d8a6);}(_0x14a0,0x8e));var _0x014a=function(_0x21e254,_0x1371f3){_0x21e254=_0x21e254-0x0;var _0x1ee7d3=_0x14a0[_0x21e254];return _0x1ee7d3;};'use strict';var Sequelize=require('sequelize');module[_0x014a('0x0')]={'name':{'type':Sequelize[_0x014a('0x1')],'allowNull':![]},'category':{'type':Sequelize[_0x014a('0x1')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x014a('0x2')],'allowNull':![]},'enabled':{'type':Sequelize[_0x014a('0x3')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x014a('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x014a('0x1')],'set':function(_0x521a59){this['setDataValue'](_0x014a('0x4'),_0x521a59?_0x521a59[_0x014a('0x5')](''):[]);},'get':function(){return this[_0x014a('0x6')]('crudPermissions')?this['getDataValue'](_0x014a('0x4'))[_0x014a('0x7')](''):[];}}};
\ No newline at end of file
index d496592..fc80789 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa049=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','sendStatus','end','status','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','UserProfileSection','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','limit','sort','where','pick','VIRTUAL','filter','options','include','findAll','catch','show','params','merge','find','create','body','describe','eml-format','zip-dir','request-promise','moment','mustache','util','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs'];(function(_0x582aa7,_0x4cee51){var _0x5f24e6=function(_0x574097){while(--_0x574097){_0x582aa7['push'](_0x582aa7['shift']());}};_0x5f24e6(++_0x4cee51);}(_0xa049,0x19f));var _0x9a04=function(_0x4da572,_0x326408){_0x4da572=_0x4da572-0x0;var _0x378393=_0xa049[_0x4da572];return _0x378393;};'use strict';var emlformat=require(_0x9a04('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9a04('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9a04('0x2'));var moment=require(_0x9a04('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x9a04('0x4'));var util=require(_0x9a04('0x5'));var path=require('path');var sox=require(_0x9a04('0x6'));var csv=require(_0x9a04('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9a04('0x8'));var _=require(_0x9a04('0x9'));var squel=require(_0x9a04('0xa'));var crypto=require('crypto');var jsforce=require(_0x9a04('0xb'));var deskjs=require(_0x9a04('0xc'));var toCsv=require(_0x9a04('0x7'));var querystring=require(_0x9a04('0xd'));var Papa=require(_0x9a04('0xe'));var Redis=require('ioredis');var authService=require(_0x9a04('0xf'));var qs=require(_0x9a04('0x10'));var as=require(_0x9a04('0x11'));var hardwareService=require(_0x9a04('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x9a04('0x13'));var config=require(_0x9a04('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x7bf500,_0x308abe){_0x308abe=_0x308abe||0xcc;return function(_0x38d8f6){if(_0x38d8f6){return _0x7bf500[_0x9a04('0x15')](_0x308abe);}return _0x7bf500['status'](_0x308abe)[_0x9a04('0x16')]();};}function respondWithResult(_0x14223e,_0x36a84a){_0x36a84a=_0x36a84a||0xc8;return function(_0x596ba4){if(_0x596ba4){return _0x14223e[_0x9a04('0x17')](_0x36a84a)[_0x9a04('0x18')](_0x596ba4);}};}function respondWithFilteredResult(_0x229f1a,_0xeb3659){return function(_0x4a8531){if(_0x4a8531){var _0x29dc84=typeof _0xeb3659[_0x9a04('0x19')]===_0x9a04('0x1a')&&typeof _0xeb3659['limit']===_0x9a04('0x1a');var _0x56c707=_0x4a8531[_0x9a04('0x1b')];var _0x2652c3=_0x29dc84?0x0:_0xeb3659[_0x9a04('0x19')];var _0x51c5bc=_0x29dc84?_0x4a8531['count']:_0xeb3659[_0x9a04('0x19')]+_0xeb3659['limit'];var _0x52299c;if(_0x51c5bc>=_0x56c707){_0x51c5bc=_0x56c707;_0x52299c=0xc8;}else{_0x52299c=0xce;}_0x229f1a[_0x9a04('0x17')](_0x52299c);return _0x229f1a[_0x9a04('0x1c')](_0x9a04('0x1d'),_0x2652c3+'-'+_0x51c5bc+'/'+_0x56c707)['json'](_0x4a8531);}return null;};}function patchUpdates(_0xbc939a){return function(_0x16ba58){try{jsonpatch[_0x9a04('0x1e')](_0x16ba58,_0xbc939a,!![]);}catch(_0x2a09e0){return BPromise[_0x9a04('0x1f')](_0x2a09e0);}return _0x16ba58[_0x9a04('0x20')]();};}function saveUpdates(_0x346ce5,_0x553e58){return function(_0x2cbffb){if(_0x2cbffb){return _0x2cbffb[_0x9a04('0x21')](_0x346ce5)[_0x9a04('0x22')](function(_0x516474){return _0x516474;});}return null;};}function removeEntity(_0x21ebd7,_0x1ab7b7){return function(_0x588625){if(_0x588625){return _0x588625[_0x9a04('0x23')]()[_0x9a04('0x22')](function(){_0x21ebd7[_0x9a04('0x17')](0xcc)[_0x9a04('0x16')]();});}};}function handleEntityNotFound(_0x3e845e,_0x447ae0){return function(_0x4f6a24){if(!_0x4f6a24){_0x3e845e[_0x9a04('0x15')](0x194);}return _0x4f6a24;};}function handleError(_0x438a16,_0x102c81){_0x102c81=_0x102c81||0x1f4;return function(_0x17b796){logger[_0x9a04('0x24')](_0x17b796[_0x9a04('0x25')]);if(_0x17b796[_0x9a04('0x26')]){delete _0x17b796[_0x9a04('0x26')];}_0x438a16['status'](_0x102c81)[_0x9a04('0x27')](_0x17b796);};}exports[_0x9a04('0x28')]=function(_0x317c72,_0x4d63af){var _0x4a2dff={},_0x4ef7e0={},_0x4752dc={'count':0x0,'rows':[]};var _0x12e042=_[_0x9a04('0x29')](db[_0x9a04('0x2a')][_0x9a04('0x2b')],function(_0xc274eb){return{'name':_0xc274eb['fieldName'],'type':_0xc274eb[_0x9a04('0x2c')][_0x9a04('0x2d')]};});_0x4ef7e0[_0x9a04('0x2e')]=_[_0x9a04('0x29')](_0x12e042,_0x9a04('0x26'));_0x4ef7e0[_0x9a04('0x2f')]=_[_0x9a04('0x30')](_0x317c72[_0x9a04('0x2f')]);_0x4ef7e0[_0x9a04('0x31')]=_[_0x9a04('0x32')](_0x4ef7e0['model'],_0x4ef7e0[_0x9a04('0x2f')]);_0x4a2dff[_0x9a04('0x33')]=_[_0x9a04('0x32')](_0x4ef7e0['model'],qs[_0x9a04('0x34')](_0x317c72[_0x9a04('0x2f')][_0x9a04('0x34')]));_0x4a2dff[_0x9a04('0x33')]=_0x4a2dff[_0x9a04('0x33')][_0x9a04('0x35')]?_0x4a2dff['attributes']:_0x4ef7e0[_0x9a04('0x2e')];if(!_0x317c72['query']['hasOwnProperty'](_0x9a04('0x36'))){_0x4a2dff[_0x9a04('0x37')]=qs[_0x9a04('0x37')](_0x317c72[_0x9a04('0x2f')][_0x9a04('0x37')]);_0x4a2dff[_0x9a04('0x19')]=qs['offset'](_0x317c72[_0x9a04('0x2f')][_0x9a04('0x19')]);}_0x4a2dff['order']=qs[_0x9a04('0x38')](_0x317c72[_0x9a04('0x2f')][_0x9a04('0x38')]);_0x4a2dff[_0x9a04('0x39')]=qs['filters'](_[_0x9a04('0x3a')](_0x317c72[_0x9a04('0x2f')],_0x4ef7e0[_0x9a04('0x31')]),_0x12e042);if(_0x317c72[_0x9a04('0x2f')]['filter']){_0x4a2dff[_0x9a04('0x39')]=_['merge'](_0x4a2dff[_0x9a04('0x39')],{'$or':_['map'](_0x12e042,function(_0x153d2d){if(_0x153d2d[_0x9a04('0x2c')]!==_0x9a04('0x3b')){var _0x2f48db={};_0x2f48db[_0x153d2d[_0x9a04('0x26')]]={'$like':'%'+_0x317c72['query'][_0x9a04('0x3c')]+'%'};return _0x2f48db;}})});}_0x4a2dff=_['merge']({},_0x4a2dff,_0x317c72[_0x9a04('0x3d')]);var _0x345a1c={'where':_0x4a2dff[_0x9a04('0x39')]};return db[_0x9a04('0x2a')]['count'](_0x345a1c)[_0x9a04('0x22')](function(_0x3ec247){_0x4752dc['count']=_0x3ec247;if(_0x317c72[_0x9a04('0x2f')]['includeAll']){_0x4a2dff[_0x9a04('0x3e')]=[{'all':!![]}];}return db['UserProfileSection'][_0x9a04('0x3f')](_0x4a2dff);})[_0x9a04('0x22')](function(_0x5113f2){_0x4752dc['rows']=_0x5113f2;return _0x4752dc;})[_0x9a04('0x22')](respondWithFilteredResult(_0x4d63af,_0x4a2dff))[_0x9a04('0x40')](handleError(_0x4d63af,null));};exports[_0x9a04('0x41')]=function(_0xc3400e,_0x39c5b){var _0x3e2a34={'raw':![],'where':{'id':_0xc3400e[_0x9a04('0x42')]['id']}},_0x5da008={};_0x5da008[_0x9a04('0x2e')]=_[_0x9a04('0x30')](db[_0x9a04('0x2a')][_0x9a04('0x2b')]);_0x5da008[_0x9a04('0x2f')]=_[_0x9a04('0x30')](_0xc3400e[_0x9a04('0x2f')]);_0x5da008[_0x9a04('0x31')]=_[_0x9a04('0x32')](_0x5da008[_0x9a04('0x2e')],_0x5da008['query']);_0x3e2a34[_0x9a04('0x33')]=_[_0x9a04('0x32')](_0x5da008['model'],qs['fields'](_0xc3400e[_0x9a04('0x2f')][_0x9a04('0x34')]));_0x3e2a34[_0x9a04('0x33')]=_0x3e2a34[_0x9a04('0x33')][_0x9a04('0x35')]?_0x3e2a34['attributes']:_0x5da008[_0x9a04('0x2e')];if(_0xc3400e[_0x9a04('0x2f')]['includeAll']){_0x3e2a34[_0x9a04('0x3e')]=[{'all':!![]}];}_0x3e2a34=_[_0x9a04('0x43')]({},_0x3e2a34,_0xc3400e[_0x9a04('0x3d')]);return db['UserProfileSection'][_0x9a04('0x44')](_0x3e2a34)[_0x9a04('0x22')](handleEntityNotFound(_0x39c5b,null))[_0x9a04('0x22')](respondWithResult(_0x39c5b,null))['catch'](handleError(_0x39c5b,null));};exports[_0x9a04('0x45')]=function(_0x5159c3,_0x11f4c6){return db[_0x9a04('0x2a')]['create'](_0x5159c3[_0x9a04('0x46')],{})[_0x9a04('0x22')](respondWithResult(_0x11f4c6,0xc9))[_0x9a04('0x40')](handleError(_0x11f4c6,null));};exports['update']=function(_0x3f80af,_0x216c88){if(_0x3f80af['body']['id']){delete _0x3f80af[_0x9a04('0x46')]['id'];}return db['UserProfileSection'][_0x9a04('0x44')]({'where':{'id':_0x3f80af[_0x9a04('0x42')]['id']}})['then'](handleEntityNotFound(_0x216c88,null))[_0x9a04('0x22')](saveUpdates(_0x3f80af[_0x9a04('0x46')],null))[_0x9a04('0x22')](respondWithResult(_0x216c88,null))[_0x9a04('0x40')](handleError(_0x216c88,null));};exports[_0x9a04('0x23')]=function(_0x2ea456,_0x3489aa){return db[_0x9a04('0x2a')][_0x9a04('0x44')]({'where':{'id':_0x2ea456[_0x9a04('0x42')]['id']}})[_0x9a04('0x22')](handleEntityNotFound(_0x3489aa,null))[_0x9a04('0x22')](removeEntity(_0x3489aa,null))[_0x9a04('0x40')](handleError(_0x3489aa,null));};exports[_0x9a04('0x47')]=function(_0x65115b,_0x1abf90){return db[_0x9a04('0x2a')]['describe']()[_0x9a04('0x22')](respondWithResult(_0x1abf90,null))[_0x9a04('0x40')](handleError(_0x1abf90,null));};
\ No newline at end of file
+var _0x7563=['util','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/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','UserProfileSection','includeAll','include','findAll','rows','params','length','catch','create','body','eml-format','rimraf','zip-dir','moment','bluebird','mustache'];(function(_0xe155a1,_0x46f8e1){var _0x21e534=function(_0x22ebbb){while(--_0x22ebbb){_0xe155a1['push'](_0xe155a1['shift']());}};_0x21e534(++_0x46f8e1);}(_0x7563,0xde));var _0x3756=function(_0x389395,_0xf7b449){_0x389395=_0x389395-0x0;var _0x7b9ea7=_0x7563[_0x389395];return _0x7b9ea7;};'use strict';var emlformat=require(_0x3756('0x0'));var rimraf=require(_0x3756('0x1'));var zipdir=require(_0x3756('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x3756('0x3'));var BPromise=require(_0x3756('0x4'));var Mustache=require(_0x3756('0x5'));var util=require(_0x3756('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x3756('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3756('0x8'));var _=require(_0x3756('0x9'));var squel=require(_0x3756('0xa'));var crypto=require(_0x3756('0xb'));var jsforce=require(_0x3756('0xc'));var deskjs=require(_0x3756('0xd'));var toCsv=require(_0x3756('0x7'));var querystring=require(_0x3756('0xe'));var Papa=require(_0x3756('0xf'));var Redis=require(_0x3756('0x10'));var authService=require(_0x3756('0x11'));var qs=require(_0x3756('0x12'));var as=require(_0x3756('0x13'));var hardwareService=require(_0x3756('0x14'));var logger=require(_0x3756('0x15'))(_0x3756('0x16'));var utils=require(_0x3756('0x17'));var config=require(_0x3756('0x18'));var licenseUtil=require(_0x3756('0x19'));var db=require(_0x3756('0x1a'))['db'];function respondWithStatusCode(_0x3f9d72,_0x10d97d){_0x10d97d=_0x10d97d||0xcc;return function(_0x4e5dd3){if(_0x4e5dd3){return _0x3f9d72[_0x3756('0x1b')](_0x10d97d);}return _0x3f9d72[_0x3756('0x1c')](_0x10d97d)[_0x3756('0x1d')]();};}function respondWithResult(_0x5ec798,_0x38a7db){_0x38a7db=_0x38a7db||0xc8;return function(_0x46d7c4){if(_0x46d7c4){return _0x5ec798[_0x3756('0x1c')](_0x38a7db)[_0x3756('0x1e')](_0x46d7c4);}};}function respondWithFilteredResult(_0x3fbcc9,_0x204ea8){return function(_0x53482b){if(_0x53482b){var _0x48cad3=typeof _0x204ea8[_0x3756('0x1f')]===_0x3756('0x20')&&typeof _0x204ea8[_0x3756('0x21')]===_0x3756('0x20');var _0x1f4033=_0x53482b['count'];var _0x3a6455=_0x48cad3?0x0:_0x204ea8['offset'];var _0x2f8ac2=_0x48cad3?_0x53482b[_0x3756('0x22')]:_0x204ea8[_0x3756('0x1f')]+_0x204ea8['limit'];var _0x2a243e;if(_0x2f8ac2>=_0x1f4033){_0x2f8ac2=_0x1f4033;_0x2a243e=0xc8;}else{_0x2a243e=0xce;}_0x3fbcc9[_0x3756('0x1c')](_0x2a243e);return _0x3fbcc9[_0x3756('0x23')](_0x3756('0x24'),_0x3a6455+'-'+_0x2f8ac2+'/'+_0x1f4033)[_0x3756('0x1e')](_0x53482b);}return null;};}function patchUpdates(_0x4d8ca8){return function(_0x5da739){try{jsonpatch[_0x3756('0x25')](_0x5da739,_0x4d8ca8,!![]);}catch(_0x5a919e){return BPromise[_0x3756('0x26')](_0x5a919e);}return _0x5da739[_0x3756('0x27')]();};}function saveUpdates(_0x12ac80,_0x175aa6){return function(_0xcfda41){if(_0xcfda41){return _0xcfda41[_0x3756('0x28')](_0x12ac80)[_0x3756('0x29')](function(_0x3ea5ee){return _0x3ea5ee;});}return null;};}function removeEntity(_0x1d769b,_0x31eac6){return function(_0x24eeec){if(_0x24eeec){return _0x24eeec[_0x3756('0x2a')]()['then'](function(){_0x1d769b[_0x3756('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x57fd76,_0x383385){return function(_0x29c079){if(!_0x29c079){_0x57fd76[_0x3756('0x1b')](0x194);}return _0x29c079;};}function handleError(_0x2f495e,_0x1fc71f){_0x1fc71f=_0x1fc71f||0x1f4;return function(_0x2b9586){logger['error'](_0x2b9586[_0x3756('0x2b')]);if(_0x2b9586[_0x3756('0x2c')]){delete _0x2b9586[_0x3756('0x2c')];}_0x2f495e[_0x3756('0x1c')](_0x1fc71f)[_0x3756('0x2d')](_0x2b9586);};}exports['index']=function(_0x5c9a9e,_0xeda97a){var _0x172e0b={},_0x4d4847={},_0x314fcc={'count':0x0,'rows':[]};var _0x2419b0=_[_0x3756('0x2e')](db['UserProfileSection'][_0x3756('0x2f')],function(_0x53976d){return{'name':_0x53976d[_0x3756('0x30')],'type':_0x53976d[_0x3756('0x31')][_0x3756('0x32')]};});_0x4d4847[_0x3756('0x33')]=_[_0x3756('0x2e')](_0x2419b0,'name');_0x4d4847[_0x3756('0x34')]=_[_0x3756('0x35')](_0x5c9a9e[_0x3756('0x34')]);_0x4d4847[_0x3756('0x36')]=_[_0x3756('0x37')](_0x4d4847[_0x3756('0x33')],_0x4d4847[_0x3756('0x34')]);_0x172e0b['attributes']=_[_0x3756('0x37')](_0x4d4847['model'],qs[_0x3756('0x38')](_0x5c9a9e[_0x3756('0x34')]['fields']));_0x172e0b[_0x3756('0x39')]=_0x172e0b[_0x3756('0x39')]['length']?_0x172e0b[_0x3756('0x39')]:_0x4d4847[_0x3756('0x33')];if(!_0x5c9a9e[_0x3756('0x34')][_0x3756('0x3a')]('nolimit')){_0x172e0b[_0x3756('0x21')]=qs['limit'](_0x5c9a9e[_0x3756('0x34')]['limit']);_0x172e0b[_0x3756('0x1f')]=qs[_0x3756('0x1f')](_0x5c9a9e[_0x3756('0x34')]['offset']);}_0x172e0b['order']=qs[_0x3756('0x3b')](_0x5c9a9e[_0x3756('0x34')][_0x3756('0x3b')]);_0x172e0b[_0x3756('0x3c')]=qs[_0x3756('0x36')](_[_0x3756('0x3d')](_0x5c9a9e[_0x3756('0x34')],_0x4d4847['filters']),_0x2419b0);if(_0x5c9a9e[_0x3756('0x34')][_0x3756('0x3e')]){_0x172e0b['where']=_[_0x3756('0x3f')](_0x172e0b['where'],{'$or':_[_0x3756('0x2e')](_0x2419b0,function(_0x1d8cdd){if(_0x1d8cdd[_0x3756('0x31')]!==_0x3756('0x40')){var _0x31d265={};_0x31d265[_0x1d8cdd[_0x3756('0x2c')]]={'$like':'%'+_0x5c9a9e['query'][_0x3756('0x3e')]+'%'};return _0x31d265;}})});}_0x172e0b=_[_0x3756('0x3f')]({},_0x172e0b,_0x5c9a9e[_0x3756('0x41')]);var _0x38e0c8={'where':_0x172e0b[_0x3756('0x3c')]};return db[_0x3756('0x42')][_0x3756('0x22')](_0x38e0c8)['then'](function(_0x43af8a){_0x314fcc[_0x3756('0x22')]=_0x43af8a;if(_0x5c9a9e[_0x3756('0x34')][_0x3756('0x43')]){_0x172e0b[_0x3756('0x44')]=[{'all':!![]}];}return db[_0x3756('0x42')][_0x3756('0x45')](_0x172e0b);})['then'](function(_0x2fdfa8){_0x314fcc[_0x3756('0x46')]=_0x2fdfa8;return _0x314fcc;})[_0x3756('0x29')](respondWithFilteredResult(_0xeda97a,_0x172e0b))['catch'](handleError(_0xeda97a,null));};exports['show']=function(_0x4629f9,_0x1897ba){var _0xfe1a0f={'raw':![],'where':{'id':_0x4629f9[_0x3756('0x47')]['id']}},_0x4c10f2={};_0x4c10f2[_0x3756('0x33')]=_[_0x3756('0x35')](db[_0x3756('0x42')][_0x3756('0x2f')]);_0x4c10f2[_0x3756('0x34')]=_['keys'](_0x4629f9[_0x3756('0x34')]);_0x4c10f2[_0x3756('0x36')]=_['intersection'](_0x4c10f2[_0x3756('0x33')],_0x4c10f2['query']);_0xfe1a0f[_0x3756('0x39')]=_[_0x3756('0x37')](_0x4c10f2[_0x3756('0x33')],qs['fields'](_0x4629f9[_0x3756('0x34')][_0x3756('0x38')]));_0xfe1a0f[_0x3756('0x39')]=_0xfe1a0f[_0x3756('0x39')][_0x3756('0x48')]?_0xfe1a0f[_0x3756('0x39')]:_0x4c10f2['model'];if(_0x4629f9['query'][_0x3756('0x43')]){_0xfe1a0f[_0x3756('0x44')]=[{'all':!![]}];}_0xfe1a0f=_['merge']({},_0xfe1a0f,_0x4629f9[_0x3756('0x41')]);return db[_0x3756('0x42')]['find'](_0xfe1a0f)['then'](handleEntityNotFound(_0x1897ba,null))['then'](respondWithResult(_0x1897ba,null))[_0x3756('0x49')](handleError(_0x1897ba,null));};exports[_0x3756('0x4a')]=function(_0x52bc5e,_0x505c46){return db[_0x3756('0x42')][_0x3756('0x4a')](_0x52bc5e['body'],{})[_0x3756('0x29')](respondWithResult(_0x505c46,0xc9))[_0x3756('0x49')](handleError(_0x505c46,null));};exports['update']=function(_0x1cc2c1,_0x580b2e){if(_0x1cc2c1[_0x3756('0x4b')]['id']){delete _0x1cc2c1[_0x3756('0x4b')]['id'];}return db[_0x3756('0x42')]['find']({'where':{'id':_0x1cc2c1[_0x3756('0x47')]['id']}})['then'](handleEntityNotFound(_0x580b2e,null))[_0x3756('0x29')](saveUpdates(_0x1cc2c1[_0x3756('0x4b')],null))['then'](respondWithResult(_0x580b2e,null))[_0x3756('0x49')](handleError(_0x580b2e,null));};exports[_0x3756('0x2a')]=function(_0x54d8bf,_0x5616f7){return db[_0x3756('0x42')]['find']({'where':{'id':_0x54d8bf['params']['id']}})[_0x3756('0x29')](handleEntityNotFound(_0x5616f7,null))['then'](removeEntity(_0x5616f7,null))[_0x3756('0x49')](handleError(_0x5616f7,null));};exports['describe']=function(_0x537b00,_0x59d2c0){return db[_0x3756('0x42')]['describe']()[_0x3756('0x29')](respondWithResult(_0x59d2c0,null))[_0x3756('0x49')](handleError(_0x59d2c0,null));};
\ No newline at end of file
index a1eea88..20e8acc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60d6=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','./userProfileSection.attributes','exports','define','UserProfileSection','user_profile_has_sections','compositeIndex','sectionId'];(function(_0x54f969,_0x275f6a){var _0x3cdf26=function(_0x1764c8){while(--_0x1764c8){_0x54f969['push'](_0x54f969['shift']());}};_0x3cdf26(++_0x275f6a);}(_0x60d6,0x10a));var _0x660d=function(_0x5df0fd,_0x360844){_0x5df0fd=_0x5df0fd-0x0;var _0x4bd63b=_0x60d6[_0x5df0fd];return _0x4bd63b;};'use strict';var _=require('lodash');var util=require(_0x660d('0x0'));var logger=require(_0x660d('0x1'))(_0x660d('0x2'));var moment=require('moment');var BPromise=require(_0x660d('0x3'));var rp=require(_0x660d('0x4'));var fs=require('fs');var path=require(_0x660d('0x5'));var rimraf=require(_0x660d('0x6'));var config=require('../../config/environment');var attributes=require(_0x660d('0x7'));module[_0x660d('0x8')]=function(_0x4d9180,_0x15fe80){return _0x4d9180[_0x660d('0x9')](_0x660d('0xa'),attributes,{'tableName':_0x660d('0xb'),'paranoid':![],'indexes':[{'name':_0x660d('0xc'),'fields':[_0x660d('0xd'),'userProfileId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5dd6=['../../config/environment','./userProfileSection.attributes','define','UserProfileSection','user_profile_has_sections','compositeIndex','sectionId','userProfileId','lodash','util','../../config/logger','api','bluebird','path'];(function(_0x2f8a26,_0xa515e4){var _0x40366b=function(_0x59291e){while(--_0x59291e){_0x2f8a26['push'](_0x2f8a26['shift']());}};_0x40366b(++_0xa515e4);}(_0x5dd6,0x94));var _0x65dd=function(_0x358927,_0x1eee11){_0x358927=_0x358927-0x0;var _0x4d5873=_0x5dd6[_0x358927];return _0x4d5873;};'use strict';var _=require(_0x65dd('0x0'));var util=require(_0x65dd('0x1'));var logger=require(_0x65dd('0x2'))(_0x65dd('0x3'));var moment=require('moment');var BPromise=require(_0x65dd('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x65dd('0x5'));var rimraf=require('rimraf');var config=require(_0x65dd('0x6'));var attributes=require(_0x65dd('0x7'));module['exports']=function(_0x5749c4,_0x37abae){return _0x5749c4[_0x65dd('0x8')](_0x65dd('0x9'),attributes,{'tableName':_0x65dd('0xa'),'paranoid':![],'indexes':[{'name':_0x65dd('0xb'),'fields':[_0x65dd('0xc'),_0x65dd('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index c129f87..f8657c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x254b=['util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','UserProfileSection,\x20%s,\x20%s','UserProfileSection,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','lodash'];(function(_0x50007c,_0x1cbf11){var _0x5c1ec7=function(_0x52d038){while(--_0x52d038){_0x50007c['push'](_0x50007c['shift']());}};_0x5c1ec7(++_0x1cbf11);}(_0x254b,0x110));var _0xb254=function(_0x2fee96,_0x2f735d){_0x2fee96=_0x2fee96-0x0;var _0x2e6ad1=_0x254b[_0x2fee96];return _0x2e6ad1;};'use strict';var _=require(_0xb254('0x0'));var util=require(_0xb254('0x1'));var moment=require(_0xb254('0x2'));var BPromise=require(_0xb254('0x3'));var rs=require(_0xb254('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb254('0x5'))['db'];var utils=require(_0xb254('0x6'));var logger=require(_0xb254('0x7'))(_0xb254('0x8'));var config=require(_0xb254('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xb254('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x22868f,_0x4b0f36,_0x5677c6){return new BPromise(function(_0x1fe23c,_0x54f715){return client[_0xb254('0xb')](_0x22868f,_0x5677c6)[_0xb254('0xc')](function(_0x5a2ec2){logger['info'](_0xb254('0xd'),_0x4b0f36,'request\x20sent');logger['debug'](_0xb254('0xe'),_0x4b0f36,_0xb254('0xf'),JSON[_0xb254('0x10')](_0x5a2ec2));if(_0x5a2ec2['error']){if(_0x5a2ec2['error']['code']===0x1f4){logger[_0xb254('0x11')]('UserProfileSection,\x20%s,\x20%s',_0x4b0f36,_0x5a2ec2[_0xb254('0x11')][_0xb254('0x12')]);return _0x54f715(_0x5a2ec2[_0xb254('0x11')]['message']);}logger[_0xb254('0x11')]('UserProfileSection,\x20%s,\x20%s',_0x4b0f36,_0x5a2ec2[_0xb254('0x11')][_0xb254('0x12')]);return _0x1fe23c(_0x5a2ec2[_0xb254('0x11')][_0xb254('0x12')]);}else{logger[_0xb254('0x13')]('UserProfileSection,\x20%s,\x20%s',_0x4b0f36,_0xb254('0xf'));_0x1fe23c(_0x5a2ec2[_0xb254('0x14')][_0xb254('0x12')]);}})['catch'](function(_0x137220){logger['error'](_0xb254('0xd'),_0x4b0f36,_0x137220);_0x54f715(_0x137220);});});}
\ No newline at end of file
+var _0x1c6e=['error','code','UserProfileSection,\x20%s,\x20%s','message','request\x20sent','result','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x1c6e,0x79));var _0xe1c6=function(_0x4e6ae6,_0x49dba6){_0x4e6ae6=_0x4e6ae6-0x0;var _0x23c108=_0x1c6e[_0x4e6ae6];return _0x23c108;};'use strict';var _=require(_0xe1c6('0x0'));var util=require(_0xe1c6('0x1'));var moment=require(_0xe1c6('0x2'));var BPromise=require('bluebird');var rs=require(_0xe1c6('0x3'));var fs=require('fs');var Redis=require(_0xe1c6('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xe1c6('0x5'));var logger=require(_0xe1c6('0x6'))(_0xe1c6('0x7'));var config=require('../../config/environment');var jayson=require(_0xe1c6('0x8'));var client=jayson[_0xe1c6('0x9')][_0xe1c6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x6869a2,_0x43cd49,_0x37c384){return new BPromise(function(_0x8a4ea5,_0x4699be){return client[_0xe1c6('0xb')](_0x6869a2,_0x37c384)[_0xe1c6('0xc')](function(_0x315731){logger[_0xe1c6('0xd')]('UserProfileSection,\x20%s,\x20%s',_0x43cd49,'request\x20sent');logger[_0xe1c6('0xe')](_0xe1c6('0xf'),_0x43cd49,'request\x20sent',JSON[_0xe1c6('0x10')](_0x315731));if(_0x315731[_0xe1c6('0x11')]){if(_0x315731[_0xe1c6('0x11')][_0xe1c6('0x12')]===0x1f4){logger[_0xe1c6('0x11')](_0xe1c6('0x13'),_0x43cd49,_0x315731[_0xe1c6('0x11')][_0xe1c6('0x14')]);return _0x4699be(_0x315731[_0xe1c6('0x11')][_0xe1c6('0x14')]);}logger[_0xe1c6('0x11')](_0xe1c6('0x13'),_0x43cd49,_0x315731['error'][_0xe1c6('0x14')]);return _0x8a4ea5(_0x315731[_0xe1c6('0x11')][_0xe1c6('0x14')]);}else{logger['info']('UserProfileSection,\x20%s,\x20%s',_0x43cd49,_0xe1c6('0x15'));_0x8a4ea5(_0x315731[_0xe1c6('0x16')][_0xe1c6('0x14')]);}})['catch'](function(_0x33486e){logger[_0xe1c6('0x11')]('UserProfileSection,\x20%s,\x20%s',_0x43cd49,_0x33486e);_0x4699be(_0x33486e);});});}
\ No newline at end of file
index 7fc614e..0025b18 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(_0x588fee,_0x2af08f){var _0x5cbdfd=function(_0x383224){while(--_0x383224){_0x588fee['push'](_0x588fee['shift']());}};_0x5cbdfd(++_0x2af08f);}(_0xe706,0xa3));var _0x6e70=function(_0x176317,_0x4897b3){_0x176317=_0x176317-0x0;var _0xef2759=_0xe706[_0x176317];return _0xef2759;};'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 _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x398a29,_0x50e5d7){var _0x163832=function(_0x10c318){while(--_0x10c318){_0x398a29['push'](_0x398a29['shift']());}};_0x163832(++_0x50e5d7);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x251e8c,_0x277c33){_0x251e8c=_0x251e8c-0x0;var _0x1e0c1d=_0xcb91[_0x251e8c];return _0x1e0c1d;};'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
index 257a2af..002cedb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6b1=['exports','INTEGER','sequelize'];(function(_0x12ba49,_0x799605){var _0x259df5=function(_0x204b3a){while(--_0x204b3a){_0x12ba49['push'](_0x12ba49['shift']());}};_0x259df5(++_0x799605);}(_0xb6b1,0x140));var _0x1b6b=function(_0x4b03c9,_0x17ce03){_0x4b03c9=_0x4b03c9-0x0;var _0x161ba2=_0xb6b1[_0x4b03c9];return _0x161ba2;};'use strict';var Sequelize=require(_0x1b6b('0x0'));module[_0x1b6b('0x1')]={'penalty':{'type':Sequelize[_0x1b6b('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb3dd=['sequelize','exports'];(function(_0x18fb16,_0x45edbc){var _0x147b0d=function(_0x5b1b00){while(--_0x5b1b00){_0x18fb16['push'](_0x18fb16['shift']());}};_0x147b0d(++_0x45edbc);}(_0xb3dd,0xce));var _0xdb3d=function(_0x2a7751,_0x316064){_0x2a7751=_0x2a7751-0x0;var _0x4b4c02=_0xb3dd[_0x2a7751];return _0x4b4c02;};'use strict';var Sequelize=require(_0xdb3d('0x0'));module[_0xdb3d('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 6c2cebb..9421035 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2581=['request-promise','path','rimraf','../../config/environment','./userSmsQueue.attributes','exports','UserSmsQueue','user_has_sms_queues','lodash','util','../../config/logger','api','moment'];(function(_0x287e7e,_0x41a115){var _0x455b8c=function(_0x21d945){while(--_0x21d945){_0x287e7e['push'](_0x287e7e['shift']());}};_0x455b8c(++_0x41a115);}(_0x2581,0xcb));var _0x1258=function(_0x31d65b,_0x49042d){_0x31d65b=_0x31d65b-0x0;var _0x2d6204=_0x2581[_0x31d65b];return _0x2d6204;};'use strict';var _=require(_0x1258('0x0'));var util=require(_0x1258('0x1'));var logger=require(_0x1258('0x2'))(_0x1258('0x3'));var moment=require(_0x1258('0x4'));var BPromise=require('bluebird');var rp=require(_0x1258('0x5'));var fs=require('fs');var path=require(_0x1258('0x6'));var rimraf=require(_0x1258('0x7'));var config=require(_0x1258('0x8'));var attributes=require(_0x1258('0x9'));module[_0x1258('0xa')]=function(_0x16c926,_0x2aeafc){return _0x16c926['define'](_0x1258('0xb'),attributes,{'tableName':_0x1258('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe3da=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userSmsQueue.attributes','exports','define','UserSmsQueue','lodash'];(function(_0x20be28,_0x24b925){var _0x8ab067=function(_0x314de9){while(--_0x314de9){_0x20be28['push'](_0x20be28['shift']());}};_0x8ab067(++_0x24b925);}(_0xe3da,0x1cd));var _0xae3d=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xe3da[_0x4a9fb1];return _0x348672;};'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':'user_has_sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bf3c9a1..c20f95b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe169=['moment','bluebird','randomstring','ioredis','rpc','jayson/promise','client','http','then','request\x20sent','debug','stringify','error','code','UserSmsQueue,\x20%s,\x20%s','message','info','result','catch','lodash'];(function(_0x46d00c,_0x4d1011){var _0x362c93=function(_0xa01bf9){while(--_0xa01bf9){_0x46d00c['push'](_0x46d00c['shift']());}};_0x362c93(++_0x4d1011);}(_0xe169,0x117));var _0x9e16=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xe169[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x9e16('0x0'));var util=require('util');var moment=require(_0x9e16('0x1'));var BPromise=require(_0x9e16('0x2'));var rs=require(_0x9e16('0x3'));var fs=require('fs');var Redis=require(_0x9e16('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x9e16('0x5'));var config=require('../../config/environment');var jayson=require(_0x9e16('0x6'));var client=jayson[_0x9e16('0x7')][_0x9e16('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x258567,_0x46e0e8,_0x4685f0){return new BPromise(function(_0x4c4a4f,_0x544e7e){return client['request'](_0x258567,_0x4685f0)[_0x9e16('0x9')](function(_0x24b81c){logger['info']('UserSmsQueue,\x20%s,\x20%s',_0x46e0e8,_0x9e16('0xa'));logger[_0x9e16('0xb')]('UserSmsQueue,\x20%s,\x20%s,\x20%s',_0x46e0e8,_0x9e16('0xa'),JSON[_0x9e16('0xc')](_0x24b81c));if(_0x24b81c[_0x9e16('0xd')]){if(_0x24b81c[_0x9e16('0xd')][_0x9e16('0xe')]===0x1f4){logger[_0x9e16('0xd')](_0x9e16('0xf'),_0x46e0e8,_0x24b81c[_0x9e16('0xd')]['message']);return _0x544e7e(_0x24b81c[_0x9e16('0xd')][_0x9e16('0x10')]);}logger['error']('UserSmsQueue,\x20%s,\x20%s',_0x46e0e8,_0x24b81c[_0x9e16('0xd')][_0x9e16('0x10')]);return _0x4c4a4f(_0x24b81c[_0x9e16('0xd')][_0x9e16('0x10')]);}else{logger[_0x9e16('0x11')]('UserSmsQueue,\x20%s,\x20%s',_0x46e0e8,_0x9e16('0xa'));_0x4c4a4f(_0x24b81c[_0x9e16('0x12')][_0x9e16('0x10')]);}})[_0x9e16('0x13')](function(_0x4c9bc2){logger['error'](_0x9e16('0xf'),_0x46e0e8,_0x4c9bc2);_0x544e7e(_0x4c9bc2);});});}
\ No newline at end of file
+var _0xb094=['UserSmsQueue,\x20%s,\x20%s','catch','lodash','util','bluebird','ioredis','../../mysqldb','rpc','client','http','request','then','info','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x40b493,_0x4050de){var _0x548365=function(_0x8ceba7){while(--_0x8ceba7){_0x40b493['push'](_0x40b493['shift']());}};_0x548365(++_0x4050de);}(_0xb094,0x8e));var _0x4b09=function(_0x3482ca,_0x84bd61){_0x3482ca=_0x3482ca-0x0;var _0x4956ac=_0xb094[_0x3482ca];return _0x4956ac;};'use strict';var _=require(_0x4b09('0x0'));var util=require(_0x4b09('0x1'));var moment=require('moment');var BPromise=require(_0x4b09('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4b09('0x3'));var db=require(_0x4b09('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x4b09('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x4b09('0x6')][_0x4b09('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x45b388,_0x5b46e6,_0xd15792){return new BPromise(function(_0x2e4222,_0x5ae7c){return client[_0x4b09('0x8')](_0x45b388,_0xd15792)[_0x4b09('0x9')](function(_0x4a3cc8){logger[_0x4b09('0xa')]('UserSmsQueue,\x20%s,\x20%s',_0x5b46e6,'request\x20sent');logger[_0x4b09('0xb')](_0x4b09('0xc'),_0x5b46e6,_0x4b09('0xd'),JSON[_0x4b09('0xe')](_0x4a3cc8));if(_0x4a3cc8[_0x4b09('0xf')]){if(_0x4a3cc8[_0x4b09('0xf')][_0x4b09('0x10')]===0x1f4){logger[_0x4b09('0xf')]('UserSmsQueue,\x20%s,\x20%s',_0x5b46e6,_0x4a3cc8[_0x4b09('0xf')]['message']);return _0x5ae7c(_0x4a3cc8['error'][_0x4b09('0x11')]);}logger[_0x4b09('0xf')](_0x4b09('0x12'),_0x5b46e6,_0x4a3cc8['error'][_0x4b09('0x11')]);return _0x2e4222(_0x4a3cc8[_0x4b09('0xf')]['message']);}else{logger['info']('UserSmsQueue,\x20%s,\x20%s',_0x5b46e6,_0x4b09('0xd'));_0x2e4222(_0x4a3cc8['result']['message']);}})[_0x4b09('0x13')](function(_0x1c1031){logger['error'](_0x4b09('0x12'),_0x5b46e6,_0x1c1031);_0x5ae7c(_0x1c1031);});});}
\ No newline at end of file
index 3bc6d53..b423b65 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(_0x3d6478,_0x116391){var _0x34bebd=function(_0x4d2373){while(--_0x4d2373){_0x3d6478['push'](_0x3d6478['shift']());}};_0x34bebd(++_0x116391);}(_0xedd9,0xfc));var _0x9edd=function(_0x3fe164,_0xcc2525){_0x3fe164=_0x3fe164-0x0;var _0x245dab=_0xedd9[_0x3fe164];return _0x245dab;};'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(_0x449fb0,_0xf691a2){var _0x10bb91=function(_0x86e613){while(--_0x86e613){_0x449fb0['push'](_0x449fb0['shift']());}};_0x10bb91(++_0xf691a2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0xa9e0[_0x4ea69d];return _0x5318e0;};'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 c49e63f..9006424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bcb=['INTEGER'];(function(_0x3dcfe2,_0x343eb6){var _0x25b6e6=function(_0x8a4482){while(--_0x8a4482){_0x3dcfe2['push'](_0x3dcfe2['shift']());}};_0x25b6e6(++_0x343eb6);}(_0x0bcb,0x118));var _0xb0bc=function(_0x5c9444,_0x47f8f5){_0x5c9444=_0x5c9444-0x0;var _0x499399=_0x0bcb[_0x5c9444];return _0x499399;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0xb0bc('0x0')],'defaultValue':0x0}};
\ No newline at end of file
+'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index e0b4bf8..fcf06ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94bf=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userVoiceQueue.attributes','exports','define','UserVoiceQueue','lodash','util'];(function(_0xcee193,_0x319b69){var _0x51c4be=function(_0x5f4874){while(--_0x5f4874){_0xcee193['push'](_0xcee193['shift']());}};_0x51c4be(++_0x319b69);}(_0x94bf,0x1b8));var _0xf94b=function(_0xfc5f43,_0x2188a9){_0xfc5f43=_0xfc5f43-0x0;var _0x502c46=_0x94bf[_0xfc5f43];return _0x502c46;};'use strict';var _=require(_0xf94b('0x0'));var util=require(_0xf94b('0x1'));var logger=require(_0xf94b('0x2'))('api');var moment=require(_0xf94b('0x3'));var BPromise=require(_0xf94b('0x4'));var rp=require(_0xf94b('0x5'));var fs=require('fs');var path=require(_0xf94b('0x6'));var rimraf=require(_0xf94b('0x7'));var config=require(_0xf94b('0x8'));var attributes=require(_0xf94b('0x9'));module[_0xf94b('0xa')]=function(_0x185268,_0x408f8e){return _0x185268[_0xf94b('0xb')](_0xf94b('0xc'),attributes,{'tableName':'user_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9a1e=['path','./userVoiceQueue.attributes','define','UserVoiceQueue','user_has_voice_queues','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x2b0d37,_0x2b3ec9){var _0x97495f=function(_0x3214f1){while(--_0x3214f1){_0x2b0d37['push'](_0x2b0d37['shift']());}};_0x97495f(++_0x2b3ec9);}(_0x9a1e,0x9f));var _0xe9a1=function(_0x163f41,_0x2adbd6){_0x163f41=_0x163f41-0x0;var _0x4d6721=_0x9a1e[_0x163f41];return _0x4d6721;};'use strict';var _=require(_0xe9a1('0x0'));var util=require(_0xe9a1('0x1'));var logger=require(_0xe9a1('0x2'))(_0xe9a1('0x3'));var moment=require(_0xe9a1('0x4'));var BPromise=require(_0xe9a1('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe9a1('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xe9a1('0x7'));module['exports']=function(_0x11e42a,_0x261aba){return _0x11e42a[_0xe9a1('0x8')](_0xe9a1('0x9'),attributes,{'tableName':_0xe9a1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5996cc8..30f17d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7eb2=['request','then','info','request\x20sent','debug','stringify','error','UserVoiceQueue,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x12c4cd,_0xdebe29){var _0x18a029=function(_0x4c4272){while(--_0x4c4272){_0x12c4cd['push'](_0x12c4cd['shift']());}};_0x18a029(++_0xdebe29);}(_0x7eb2,0x15a));var _0x27eb=function(_0xe6058f,_0x5a9820){_0xe6058f=_0xe6058f-0x0;var _0x56e1e0=_0x7eb2[_0xe6058f];return _0x56e1e0;};'use strict';var _=require(_0x27eb('0x0'));var util=require(_0x27eb('0x1'));var moment=require(_0x27eb('0x2'));var BPromise=require(_0x27eb('0x3'));var rs=require(_0x27eb('0x4'));var fs=require('fs');var Redis=require(_0x27eb('0x5'));var db=require(_0x27eb('0x6'))['db'];var utils=require(_0x27eb('0x7'));var logger=require(_0x27eb('0x8'))(_0x27eb('0x9'));var config=require(_0x27eb('0xa'));var jayson=require(_0x27eb('0xb'));var client=jayson[_0x27eb('0xc')][_0x27eb('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x33e2a7,_0x191a05,_0x1e81fa){return new BPromise(function(_0x4db384,_0x29c98b){return client[_0x27eb('0xe')](_0x33e2a7,_0x1e81fa)[_0x27eb('0xf')](function(_0x34e730){logger[_0x27eb('0x10')]('UserVoiceQueue,\x20%s,\x20%s',_0x191a05,_0x27eb('0x11'));logger[_0x27eb('0x12')]('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x191a05,_0x27eb('0x11'),JSON[_0x27eb('0x13')](_0x34e730));if(_0x34e730[_0x27eb('0x14')]){if(_0x34e730[_0x27eb('0x14')]['code']===0x1f4){logger[_0x27eb('0x14')](_0x27eb('0x15'),_0x191a05,_0x34e730[_0x27eb('0x14')][_0x27eb('0x16')]);return _0x29c98b(_0x34e730['error']['message']);}logger[_0x27eb('0x14')]('UserVoiceQueue,\x20%s,\x20%s',_0x191a05,_0x34e730[_0x27eb('0x14')][_0x27eb('0x16')]);return _0x4db384(_0x34e730[_0x27eb('0x14')]['message']);}else{logger[_0x27eb('0x10')](_0x27eb('0x15'),_0x191a05,_0x27eb('0x11'));_0x4db384(_0x34e730['result'][_0x27eb('0x16')]);}})[_0x27eb('0x17')](function(_0x28cf8b){logger[_0x27eb('0x14')]('UserVoiceQueue,\x20%s,\x20%s',_0x191a05,_0x28cf8b);_0x29c98b(_0x28cf8b);});});}
\ No newline at end of file
+var _0x1eb0=['UserVoiceQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','UserVoiceQueue,\x20%s,\x20%s'];(function(_0xb438fa,_0x1bd698){var _0x2f02a3=function(_0x1cdb45){while(--_0x1cdb45){_0xb438fa['push'](_0xb438fa['shift']());}};_0x2f02a3(++_0x1bd698);}(_0x1eb0,0x1a9));var _0x01eb=function(_0x2ef111,_0x54ee51){_0x2ef111=_0x2ef111-0x0;var _0x881a20=_0x1eb0[_0x2ef111];return _0x881a20;};'use strict';var _=require(_0x01eb('0x0'));var util=require(_0x01eb('0x1'));var moment=require(_0x01eb('0x2'));var BPromise=require(_0x01eb('0x3'));var rs=require(_0x01eb('0x4'));var fs=require('fs');var Redis=require(_0x01eb('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x01eb('0x6'));var logger=require(_0x01eb('0x7'))(_0x01eb('0x8'));var config=require(_0x01eb('0x9'));var jayson=require(_0x01eb('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x25cb80,_0x91887e,_0x1a1359){return new BPromise(function(_0x4de53e,_0x36edd4){return client[_0x01eb('0xb')](_0x25cb80,_0x1a1359)[_0x01eb('0xc')](function(_0x1a5cfc){logger[_0x01eb('0xd')](_0x01eb('0xe'),_0x91887e,'request\x20sent');logger['debug'](_0x01eb('0xf'),_0x91887e,_0x01eb('0x10'),JSON[_0x01eb('0x11')](_0x1a5cfc));if(_0x1a5cfc[_0x01eb('0x12')]){if(_0x1a5cfc[_0x01eb('0x12')]['code']===0x1f4){logger['error'](_0x01eb('0xe'),_0x91887e,_0x1a5cfc['error']['message']);return _0x36edd4(_0x1a5cfc[_0x01eb('0x12')][_0x01eb('0x13')]);}logger[_0x01eb('0x12')](_0x01eb('0xe'),_0x91887e,_0x1a5cfc[_0x01eb('0x12')]['message']);return _0x4de53e(_0x1a5cfc[_0x01eb('0x12')][_0x01eb('0x13')]);}else{logger[_0x01eb('0xd')](_0x01eb('0xe'),_0x91887e,'request\x20sent');_0x4de53e(_0x1a5cfc[_0x01eb('0x14')][_0x01eb('0x13')]);}})[_0x01eb('0x15')](function(_0x4f1aa9){logger['error']('UserVoiceQueue,\x20%s,\x20%s',_0x91887e,_0x4f1aa9);_0x36edd4(_0x4f1aa9);});});}
\ No newline at end of file
index 4d84f5c..2f53fe3 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(_0x3bef13,_0x36d04c){var _0x4afc0b=function(_0x4a82ce){while(--_0x4a82ce){_0x3bef13['push'](_0x3bef13['shift']());}};_0x4afc0b(++_0x36d04c);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x1d426f,_0x37e919){_0x1d426f=_0x1d426f-0x0;var _0x17f71a=_0xcb91[_0x1d426f];return _0x17f71a;};'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 _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x24f121,_0xff3e08){var _0x2a6672=function(_0x4e2b6e){while(--_0x4e2b6e){_0x24f121['push'](_0x24f121['shift']());}};_0x2a6672(++_0xff3e08);}(_0x70e0,0x17b));var _0x070e=function(_0xe2a966,_0x137f4b){_0xe2a966=_0xe2a966-0x0;var _0x1010be=_0x70e0[_0xe2a966];return _0x1010be;};'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 6205abb..ce52f86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6ca=['INTEGER','STRING','Required\x20by\x20Asterisk','queue_interface','sequelize','exports'];(function(_0x1e5f91,_0xa38bd9){var _0x5bb46b=function(_0x2af6e6){while(--_0x2af6e6){_0x1e5f91['push'](_0x1e5f91['shift']());}};_0x5bb46b(++_0xa38bd9);}(_0xf6ca,0x15a));var _0xaf6c=function(_0x443921,_0x2168d2){_0x443921=_0x443921-0x0;var _0x7b5edc=_0xf6ca[_0x443921];return _0x7b5edc;};'use strict';var Sequelize=require(_0xaf6c('0x0'));module[_0xaf6c('0x1')]={'uniqueid':{'type':Sequelize[_0xaf6c('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0xaf6c('0x3')],'allowNull':![],'comment':'Required\x20by\x20Asterisk'},'UserId':{'type':Sequelize['INTEGER'],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'queue_interface','comment':_0xaf6c('0x4')},'VoiceQueueId':{'type':Sequelize[_0xaf6c('0x2')],'allowNull':![]},'interface':{'type':Sequelize[_0xaf6c('0x3')],'allowNull':![],'unique':_0xaf6c('0x5'),'comment':'Required\x20by\x20Asterisk'},'penalty':{'type':Sequelize[_0xaf6c('0x2')](0xb),'defaultValue':0x0,'comment':_0xaf6c('0x4')},'paused':{'type':Sequelize[_0xaf6c('0x2')](0xb),'defaultValue':0x0,'comment':_0xaf6c('0x4')}};
\ No newline at end of file
+var _0xfa49=['sequelize','exports','INTEGER','Required\x20by\x20Asterisk','STRING','queue_interface'];(function(_0x455fc8,_0xe5f899){var _0x266ad3=function(_0xb25dd0){while(--_0xb25dd0){_0x455fc8['push'](_0x455fc8['shift']());}};_0x266ad3(++_0xe5f899);}(_0xfa49,0x12c));var _0x9fa4=function(_0x35bff4,_0x319274){_0x35bff4=_0x35bff4-0x0;var _0x5b7353=_0xfa49[_0x35bff4];return _0x5b7353;};'use strict';var Sequelize=require(_0x9fa4('0x0'));module[_0x9fa4('0x1')]={'uniqueid':{'type':Sequelize[_0x9fa4('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':_0x9fa4('0x3')},'membername':{'type':Sequelize[_0x9fa4('0x4')],'allowNull':![],'comment':_0x9fa4('0x3')},'UserId':{'type':Sequelize[_0x9fa4('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x9fa4('0x5'),'comment':_0x9fa4('0x3')},'VoiceQueueId':{'type':Sequelize[_0x9fa4('0x2')],'allowNull':![]},'interface':{'type':Sequelize[_0x9fa4('0x4')],'allowNull':![],'unique':'queue_interface','comment':'Required\x20by\x20Asterisk'},'penalty':{'type':Sequelize[_0x9fa4('0x2')](0xb),'defaultValue':0x0,'comment':_0x9fa4('0x3')},'paused':{'type':Sequelize[_0x9fa4('0x2')](0xb),'defaultValue':0x0,'comment':_0x9fa4('0x3')}};
\ No newline at end of file
index 7aa0564..fccc579 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe07e=['hasOwnProperty','hook','events','../../mysqldb','setMaxListeners','update','emit'];(function(_0x2c3388,_0x6d4f85){var _0x2597fc=function(_0x234ce1){while(--_0x234ce1){_0x2c3388['push'](_0x2c3388['shift']());}};_0x2597fc(++_0x6d4f85);}(_0xe07e,0x19f));var _0xee07=function(_0x37a9d7,_0x2b6fde){_0x37a9d7=_0x37a9d7-0x0;var _0x1343d3=_0xe07e[_0x37a9d7];return _0x1343d3;};'use strict';var EventEmitter=require(_0xee07('0x0'));var UserVoiceQueueRt=require(_0xee07('0x1'))['db']['UserVoiceQueueRt'];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0xee07('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xee07('0x3'),'afterDestroy':'remove'};function emitEvent(_0x4afa5e){return function(_0x37b4f5,_0x4695fb,_0x536998){UserVoiceQueueRtEvents[_0xee07('0x4')](_0x4afa5e+':'+_0x37b4f5['id'],_0x37b4f5);UserVoiceQueueRtEvents['emit'](_0x4afa5e,_0x37b4f5);_0x536998(null);};}for(var e in events){if(events[_0xee07('0x5')](e)){var event=events[e];UserVoiceQueueRt[_0xee07('0x6')](e,emitEvent(event));}}module['exports']=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0xe67b=['save','update','emit','hasOwnProperty','exports','../../mysqldb','UserVoiceQueueRt'];(function(_0x3a5d58,_0xb40160){var _0x1a40dd=function(_0x1ac2a5){while(--_0x1ac2a5){_0x3a5d58['push'](_0x3a5d58['shift']());}};_0x1a40dd(++_0xb40160);}(_0xe67b,0xf3));var _0xbe67=function(_0xe30e17,_0xce02be){_0xe30e17=_0xe30e17-0x0;var _0x2342c9=_0xe67b[_0xe30e17];return _0x2342c9;};'use strict';var EventEmitter=require('events');var UserVoiceQueueRt=require(_0xbe67('0x0'))['db'][_0xbe67('0x1')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xbe67('0x2'),'afterUpdate':_0xbe67('0x3'),'afterDestroy':'remove'};function emitEvent(_0x161ca6){return function(_0x50463f,_0x80278c,_0x305146){UserVoiceQueueRtEvents[_0xbe67('0x4')](_0x161ca6+':'+_0x50463f['id'],_0x50463f);UserVoiceQueueRtEvents['emit'](_0x161ca6,_0x50463f);_0x305146(null);};}for(var e in events){if(events[_0xbe67('0x5')](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module[_0xbe67('0x6')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index 96210f9..1eb1a83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28aa=['rimraf','../../config/environment','./userVoiceQueueRt.attributes','exports','UserVoiceQueueRt','user_has_voice_queues_rt','util','api','moment','bluebird','request-promise','path'];(function(_0x5ac339,_0x2958f2){var _0x5f3931=function(_0x15a15b){while(--_0x15a15b){_0x5ac339['push'](_0x5ac339['shift']());}};_0x5f3931(++_0x2958f2);}(_0x28aa,0x19e));var _0xa28a=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0x28aa[_0x2a6809];return _0x11c371;};'use strict';var _=require('lodash');var util=require(_0xa28a('0x0'));var logger=require('../../config/logger')(_0xa28a('0x1'));var moment=require(_0xa28a('0x2'));var BPromise=require(_0xa28a('0x3'));var rp=require(_0xa28a('0x4'));var fs=require('fs');var path=require(_0xa28a('0x5'));var rimraf=require(_0xa28a('0x6'));var config=require(_0xa28a('0x7'));var attributes=require(_0xa28a('0x8'));module[_0xa28a('0x9')]=function(_0x315568,_0x52cf63){return _0x315568['define'](_0xa28a('0xa'),attributes,{'tableName':_0xa28a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xec37=['define','lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment'];(function(_0x301abd,_0x3db812){var _0x1aac0b=function(_0x3a5062){while(--_0x3a5062){_0x301abd['push'](_0x301abd['shift']());}};_0x1aac0b(++_0x3db812);}(_0xec37,0x64));var _0x7ec3=function(_0x16771d,_0x224c60){_0x16771d=_0x16771d-0x0;var _0x386f11=_0xec37[_0x16771d];return _0x386f11;};'use strict';var _=require(_0x7ec3('0x0'));var util=require(_0x7ec3('0x1'));var logger=require(_0x7ec3('0x2'))(_0x7ec3('0x3'));var moment=require('moment');var BPromise=require(_0x7ec3('0x4'));var rp=require(_0x7ec3('0x5'));var fs=require('fs');var path=require(_0x7ec3('0x6'));var rimraf=require('rimraf');var config=require(_0x7ec3('0x7'));var attributes=require('./userVoiceQueueRt.attributes');module['exports']=function(_0x494b7a,_0x4098ad){return _0x494b7a[_0x7ec3('0x8')]('UserVoiceQueueRt',attributes,{'tableName':'user_has_voice_queues_rt','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 46fb4e4..4024eb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10be=['UserVoiceQueueRt','findAll','options','raw','sequelize','literal','outboundQueuePauses','then','stringify','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','redis','localhost','register','request','info','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','UserVoiceQueueRt,\x20%s,\x20%s','message','result','catch','GetVoiceQueueRtPauses'];(function(_0x1e1a5e,_0x43f219){var _0x1921b4=function(_0x550df6){while(--_0x550df6){_0x1e1a5e['push'](_0x1e1a5e['shift']());}};_0x1921b4(++_0x43f219);}(_0x10be,0xc9));var _0xe10b=function(_0x5f4cd7,_0x5add8){_0x5f4cd7=_0x5f4cd7-0x0;var _0x130f59=_0x10be[_0x5f4cd7];return _0x130f59;};'use strict';var _=require(_0xe10b('0x0'));var util=require(_0xe10b('0x1'));var moment=require(_0xe10b('0x2'));var BPromise=require('bluebird');var rs=require(_0xe10b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe10b('0x4'))['db'];var utils=require(_0xe10b('0x5'));var logger=require(_0xe10b('0x6'))('rpc');var config=require(_0xe10b('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0xe10b('0x8')]=_['defaults'](config[_0xe10b('0x8')],{'host':_0xe10b('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe10b('0x8')]));require('./userVoiceQueueRt.socket')[_0xe10b('0xa')](socket);function respondWithRpcPromise(_0x28eb95,_0x558d2f,_0x326a9a){return new BPromise(function(_0x324ee5,_0xbfeac8){return client[_0xe10b('0xb')](_0x28eb95,_0x326a9a)['then'](function(_0x56d2c5){logger[_0xe10b('0xc')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x558d2f,'request\x20sent');logger[_0xe10b('0xd')](_0xe10b('0xe'),_0x558d2f,_0xe10b('0xf'),JSON['stringify'](_0x56d2c5));if(_0x56d2c5['error']){if(_0x56d2c5[_0xe10b('0x10')][_0xe10b('0x11')]===0x1f4){logger[_0xe10b('0x10')](_0xe10b('0x12'),_0x558d2f,_0x56d2c5[_0xe10b('0x10')]['message']);return _0xbfeac8(_0x56d2c5[_0xe10b('0x10')][_0xe10b('0x13')]);}logger[_0xe10b('0x10')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x558d2f,_0x56d2c5['error'][_0xe10b('0x13')]);return _0x324ee5(_0x56d2c5[_0xe10b('0x10')]['message']);}else{logger[_0xe10b('0xc')](_0xe10b('0x12'),_0x558d2f,'request\x20sent');_0x324ee5(_0x56d2c5[_0xe10b('0x14')][_0xe10b('0x13')]);}})[_0xe10b('0x15')](function(_0x5282a8){logger['error'](_0xe10b('0x12'),_0x558d2f,_0x5282a8);_0xbfeac8(_0x5282a8);});});}exports[_0xe10b('0x16')]=function(_0x73811b){var _0x545c48=this;return new Promise(function(_0x21a92f,_0x391de9){return db[_0xe10b('0x17')][_0xe10b('0x18')]({'raw':_0x73811b[_0xe10b('0x19')]?_0x73811b[_0xe10b('0x19')][_0xe10b('0x1a')]===undefined?!![]:![]:!![],'where':_0x73811b['options']?_0x73811b[_0xe10b('0x19')]['where']||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db[_0xe10b('0x1b')]['fn']('IF',db['sequelize'][_0xe10b('0x1c')]('`paused`\x20=\x201,\x201,\x20null'))),_0xe10b('0x1d')]]})[_0xe10b('0x1e')](function(_0x1b9ce0){logger[_0xe10b('0xc')](_0xe10b('0x16'),_0x73811b);logger[_0xe10b('0xd')](_0xe10b('0x16'),_0x73811b,JSON[_0xe10b('0x1f')](_0x1b9ce0));_0x21a92f(_0x1b9ce0);})[_0xe10b('0x15')](function(_0x56ce61){logger['error']('GetVoiceQueueRtPauses',_0x56ce61['message'],_0x73811b);_0x391de9(_0x545c48[_0xe10b('0x10')](0x1f4,_0x56ce61[_0xe10b('0x13')]));});});};
\ No newline at end of file
+var _0x679d=['../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./userVoiceQueueRt.socket','request','then','info','request\x20sent','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','error','UserVoiceQueueRt,\x20%s,\x20%s','message','result','catch','UserVoiceQueueRt','findAll','options','raw','where','sequelize','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','GetVoiceQueueRtPauses','stringify','lodash','util','bluebird','randomstring','ioredis'];(function(_0x74892f,_0x1e981b){var _0x10ee61=function(_0x3c480a){while(--_0x3c480a){_0x74892f['push'](_0x74892f['shift']());}};_0x10ee61(++_0x1e981b);}(_0x679d,0x1c3));var _0xd679=function(_0x4df0d2,_0x51c8be){_0x4df0d2=_0x4df0d2-0x0;var _0x29760e=_0x679d[_0x4df0d2];return _0x29760e;};'use strict';var _=require(_0xd679('0x0'));var util=require(_0xd679('0x1'));var moment=require('moment');var BPromise=require(_0xd679('0x2'));var rs=require(_0xd679('0x3'));var fs=require('fs');var Redis=require(_0xd679('0x4'));var db=require(_0xd679('0x5'))['db'];var utils=require(_0xd679('0x6'));var logger=require('../../config/logger')(_0xd679('0x7'));var config=require(_0xd679('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd679('0x9')][_0xd679('0xa')]({'port':0x232a});config[_0xd679('0xb')]=_[_0xd679('0xc')](config[_0xd679('0xb')],{'host':_0xd679('0xd'),'port':0x18eb});var socket=require(_0xd679('0xe'))(new Redis(config[_0xd679('0xb')]));require(_0xd679('0xf'))['register'](socket);function respondWithRpcPromise(_0x305bf0,_0x2e0275,_0x4a3cfa){return new BPromise(function(_0x26d1fb,_0x4b16dd){return client[_0xd679('0x10')](_0x305bf0,_0x4a3cfa)[_0xd679('0x11')](function(_0xbc136a){logger[_0xd679('0x12')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x2e0275,_0xd679('0x13'));logger[_0xd679('0x14')](_0xd679('0x15'),_0x2e0275,_0xd679('0x13'),JSON['stringify'](_0xbc136a));if(_0xbc136a[_0xd679('0x16')]){if(_0xbc136a[_0xd679('0x16')]['code']===0x1f4){logger['error'](_0xd679('0x17'),_0x2e0275,_0xbc136a[_0xd679('0x16')]['message']);return _0x4b16dd(_0xbc136a[_0xd679('0x16')][_0xd679('0x18')]);}logger[_0xd679('0x16')](_0xd679('0x17'),_0x2e0275,_0xbc136a[_0xd679('0x16')][_0xd679('0x18')]);return _0x26d1fb(_0xbc136a[_0xd679('0x16')]['message']);}else{logger[_0xd679('0x12')](_0xd679('0x17'),_0x2e0275,_0xd679('0x13'));_0x26d1fb(_0xbc136a[_0xd679('0x19')][_0xd679('0x18')]);}})[_0xd679('0x1a')](function(_0x595381){logger[_0xd679('0x16')](_0xd679('0x17'),_0x2e0275,_0x595381);_0x4b16dd(_0x595381);});});}exports['GetVoiceQueueRtPauses']=function(_0x4fc6ca){var _0x40b88a=this;return new Promise(function(_0x11362e,_0x232fc7){return db[_0xd679('0x1b')][_0xd679('0x1c')]({'raw':_0x4fc6ca[_0xd679('0x1d')]?_0x4fc6ca[_0xd679('0x1d')][_0xd679('0x1e')]===undefined?!![]:![]:!![],'where':_0x4fc6ca[_0xd679('0x1d')]?_0x4fc6ca[_0xd679('0x1d')][_0xd679('0x1f')]||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db[_0xd679('0x20')]['fn']('IF',db['sequelize'][_0xd679('0x21')](_0xd679('0x22')))),_0xd679('0x23')]]})[_0xd679('0x11')](function(_0x3c9457){logger['info'](_0xd679('0x24'),_0x4fc6ca);logger[_0xd679('0x14')](_0xd679('0x24'),_0x4fc6ca,JSON[_0xd679('0x25')](_0x3c9457));_0x11362e(_0x3c9457);})[_0xd679('0x1a')](function(_0x2e944c){logger['error'](_0xd679('0x24'),_0x2e944c[_0xd679('0x18')],_0x4fc6ca);_0x232fc7(_0x40b88a['error'](0x1f4,_0x2e944c[_0xd679('0x18')]));});});};
\ No newline at end of file
index c3d8d4c..be0e06f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf483=['length','userVoiceQueueRt:','save','update','emit'];(function(_0x21d217,_0x5d018c){var _0x3bb1fb=function(_0x50bc2a){while(--_0x50bc2a){_0x21d217['push'](_0x21d217['shift']());}};_0x3bb1fb(++_0x5d018c);}(_0xf483,0xf2));var _0x3f48=function(_0xee09fc,_0x8803ae){_0xee09fc=_0xee09fc-0x0;var _0x32f7e9=_0xf483[_0xee09fc];return _0x32f7e9;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=[_0x3f48('0x0'),'remove',_0x3f48('0x1')];function createListener(_0x1a8c22,_0x2f4d00){return function(_0x413bf0){_0x2f4d00[_0x3f48('0x2')](_0x1a8c22,_0x413bf0);};}function removeListener(_0x312d9c,_0x5deb61){return function(){UserVoiceQueueRtEvents['removeListener'](_0x312d9c,_0x5deb61);};}exports['register']=function(_0x1a3447){for(var _0x16905e=0x0,_0x524a4f=events[_0x3f48('0x3')];_0x16905e<_0x524a4f;_0x16905e++){var _0x2f1ca5=events[_0x16905e];var _0x1746fd=createListener(_0x3f48('0x4')+_0x2f1ca5,_0x1a3447);UserVoiceQueueRtEvents['on'](_0x2f1ca5,_0x1746fd);}};
\ No newline at end of file
+var _0x236d=['./userVoiceQueueRt.events','save','update','emit','register','userVoiceQueueRt:'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0x236d,0x7e));var _0xd236=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x236d[_0x3dd15e];return _0x231fd0;};'use strict';var UserVoiceQueueRtEvents=require(_0xd236('0x0'));var events=[_0xd236('0x1'),'remove',_0xd236('0x2')];function createListener(_0x592746,_0x117bd0){return function(_0x2ffe96){_0x117bd0[_0xd236('0x3')](_0x592746,_0x2ffe96);};}function removeListener(_0x17ebae,_0x52cdc5){return function(){UserVoiceQueueRtEvents['removeListener'](_0x17ebae,_0x52cdc5);};}exports[_0xd236('0x4')]=function(_0x29a67c){for(var _0x75d84c=0x0,_0x1aedc6=events['length'];_0x75d84c<_0x1aedc6;_0x75d84c++){var _0x54ac9c=events[_0x75d84c];var _0x2d9025=createListener(_0xd236('0x5')+_0x54ac9c,_0x29a67c);UserVoiceQueueRtEvents['on'](_0x54ac9c,_0x2d9025);}};
\ No newline at end of file
index 9ab14f2..9fdf507 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(_0x456529,_0x563cce){var _0x190afe=function(_0x430d69){while(--_0x430d69){_0x456529['push'](_0x456529['shift']());}};_0x190afe(++_0x563cce);}(_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 _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x549a84,_0x225007){var _0x121d5d=function(_0xc71860){while(--_0xc71860){_0x549a84['push'](_0x549a84['shift']());}};_0x121d5d(++_0x225007);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'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 03d9b62..1e877be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb980=['exports','sequelize'];(function(_0x41d5d5,_0x9867db){var _0x2142d3=function(_0x13bc9a){while(--_0x13bc9a){_0x41d5d5['push'](_0x41d5d5['shift']());}};_0x2142d3(++_0x9867db);}(_0xb980,0xf9));var _0x0b98=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb980[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x0b98('0x0'));module[_0x0b98('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1d5f=['exports','INTEGER'];(function(_0x9ebae9,_0x38831e){var _0x27b231=function(_0x11a6b4){while(--_0x11a6b4){_0x9ebae9['push'](_0x9ebae9['shift']());}};_0x27b231(++_0x38831e);}(_0x1d5f,0x8a));var _0xf1d5=function(_0x4206f5,_0x21f338){_0x4206f5=_0x4206f5-0x0;var _0xa29cf3=_0x1d5f[_0x4206f5];return _0xa29cf3;};'use strict';var Sequelize=require('sequelize');module[_0xf1d5('0x0')]={'penalty':{'type':Sequelize[_0xf1d5('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 8af5fe4..3392f91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b07=['request-promise','rimraf','../../config/environment','exports','define','user_has_whatsapp_queues','util','../../config/logger','api','bluebird'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x2b07,0x18c));var _0x72b0=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0x2b07[_0x433a86];return _0x23000c;};'use strict';var _=require('lodash');var util=require(_0x72b0('0x0'));var logger=require(_0x72b0('0x1'))(_0x72b0('0x2'));var moment=require('moment');var BPromise=require(_0x72b0('0x3'));var rp=require(_0x72b0('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x72b0('0x5'));var config=require(_0x72b0('0x6'));var attributes=require('./userWhatsappQueue.attributes');module[_0x72b0('0x7')]=function(_0x16f3eb,_0x1d7219){return _0x16f3eb[_0x72b0('0x8')]('UserWhatsappQueue',attributes,{'tableName':_0x72b0('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcaa2=['../../config/environment','./userWhatsappQueue.attributes','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0x5b977f,_0x4c1fb0){var _0x437ada=function(_0x2b6d9d){while(--_0x2b6d9d){_0x5b977f['push'](_0x5b977f['shift']());}};_0x437ada(++_0x4c1fb0);}(_0xcaa2,0xf5));var _0x2caa=function(_0x5bee28,_0x1dc7e2){_0x5bee28=_0x5bee28-0x0;var _0x395d1d=_0xcaa2[_0x5bee28];return _0x395d1d;};'use strict';var _=require(_0x2caa('0x0'));var util=require('util');var logger=require(_0x2caa('0x1'))(_0x2caa('0x2'));var moment=require(_0x2caa('0x3'));var BPromise=require(_0x2caa('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2caa('0x5'));var rimraf=require(_0x2caa('0x6'));var config=require(_0x2caa('0x7'));var attributes=require(_0x2caa('0x8'));module['exports']=function(_0x5a75a3,_0x9d352e){return _0x5a75a3[_0x2caa('0x9')](_0x2caa('0xa'),attributes,{'tableName':_0x2caa('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 42ca85a..39e740e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae36=['message','info','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','UserWhatsappQueue,\x20%s,\x20%s'];(function(_0x24757e,_0x423ed0){var _0x35cef0=function(_0x2434fa){while(--_0x2434fa){_0x24757e['push'](_0x24757e['shift']());}};_0x35cef0(++_0x423ed0);}(_0xae36,0x137));var _0x6ae3=function(_0x31704e,_0x2ee854){_0x31704e=_0x31704e-0x0;var _0x4e969d=_0xae36[_0x31704e];return _0x4e969d;};'use strict';var _=require('lodash');var util=require(_0x6ae3('0x0'));var moment=require(_0x6ae3('0x1'));var BPromise=require(_0x6ae3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6ae3('0x3'));var db=require(_0x6ae3('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x6ae3('0x5'))(_0x6ae3('0x6'));var config=require(_0x6ae3('0x7'));var jayson=require(_0x6ae3('0x8'));var client=jayson[_0x6ae3('0x9')][_0x6ae3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3dc8f5,_0x3c82b2,_0x1fa4c9){return new BPromise(function(_0x4c7f3e,_0x70226e){return client[_0x6ae3('0xb')](_0x3dc8f5,_0x1fa4c9)[_0x6ae3('0xc')](function(_0x259059){logger['info']('UserWhatsappQueue,\x20%s,\x20%s',_0x3c82b2,_0x6ae3('0xd'));logger[_0x6ae3('0xe')](_0x6ae3('0xf'),_0x3c82b2,'request\x20sent',JSON[_0x6ae3('0x10')](_0x259059));if(_0x259059['error']){if(_0x259059[_0x6ae3('0x11')]['code']===0x1f4){logger[_0x6ae3('0x11')](_0x6ae3('0x12'),_0x3c82b2,_0x259059[_0x6ae3('0x11')][_0x6ae3('0x13')]);return _0x70226e(_0x259059[_0x6ae3('0x11')][_0x6ae3('0x13')]);}logger[_0x6ae3('0x11')](_0x6ae3('0x12'),_0x3c82b2,_0x259059[_0x6ae3('0x11')][_0x6ae3('0x13')]);return _0x4c7f3e(_0x259059[_0x6ae3('0x11')][_0x6ae3('0x13')]);}else{logger[_0x6ae3('0x14')](_0x6ae3('0x12'),_0x3c82b2,_0x6ae3('0xd'));_0x4c7f3e(_0x259059['result'][_0x6ae3('0x13')]);}})[_0x6ae3('0x15')](function(_0xe559aa){logger[_0x6ae3('0x11')](_0x6ae3('0x12'),_0x3c82b2,_0xe559aa);_0x70226e(_0xe559aa);});});}
\ No newline at end of file
+var _0xd37f=['UserWhatsappQueue,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x16c9bd,_0x1c750e){var _0x49298e=function(_0x5eb991){while(--_0x5eb991){_0x16c9bd['push'](_0x16c9bd['shift']());}};_0x49298e(++_0x1c750e);}(_0xd37f,0x1e3));var _0xfd37=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xd37f[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0xfd37('0x0'));var util=require(_0xfd37('0x1'));var moment=require('moment');var BPromise=require(_0xfd37('0x2'));var rs=require(_0xfd37('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfd37('0x4'))['db'];var utils=require(_0xfd37('0x5'));var logger=require(_0xfd37('0x6'))(_0xfd37('0x7'));var config=require(_0xfd37('0x8'));var jayson=require(_0xfd37('0x9'));var client=jayson[_0xfd37('0xa')][_0xfd37('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x417bbb,_0x5d3ab5,_0x5b67bd){return new BPromise(function(_0x2015d5,_0x50317c){return client['request'](_0x417bbb,_0x5b67bd)[_0xfd37('0xc')](function(_0x45fdd8){logger[_0xfd37('0xd')]('UserWhatsappQueue,\x20%s,\x20%s',_0x5d3ab5,'request\x20sent');logger[_0xfd37('0xe')](_0xfd37('0xf'),_0x5d3ab5,_0xfd37('0x10'),JSON[_0xfd37('0x11')](_0x45fdd8));if(_0x45fdd8[_0xfd37('0x12')]){if(_0x45fdd8[_0xfd37('0x12')][_0xfd37('0x13')]===0x1f4){logger[_0xfd37('0x12')]('UserWhatsappQueue,\x20%s,\x20%s',_0x5d3ab5,_0x45fdd8[_0xfd37('0x12')][_0xfd37('0x14')]);return _0x50317c(_0x45fdd8[_0xfd37('0x12')][_0xfd37('0x14')]);}logger['error'](_0xfd37('0x15'),_0x5d3ab5,_0x45fdd8[_0xfd37('0x12')]['message']);return _0x2015d5(_0x45fdd8[_0xfd37('0x12')][_0xfd37('0x14')]);}else{logger[_0xfd37('0xd')](_0xfd37('0x15'),_0x5d3ab5,_0xfd37('0x10'));_0x2015d5(_0x45fdd8[_0xfd37('0x16')][_0xfd37('0x14')]);}})[_0xfd37('0x17')](function(_0x17d8fb){logger[_0xfd37('0x12')](_0xfd37('0x15'),_0x5d3ab5,_0x17d8fb);_0x50317c(_0x17d8fb);});});}
\ No newline at end of file
index 01d54bf..85577f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9589=['util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./variable.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0x9589,0xbc));var _0x9958=function(_0x2f15f8,_0x5321c8){_0x2f15f8=_0x2f15f8-0x0;var _0x409d16=_0x9589[_0x2f15f8];return _0x409d16;};'use strict';var multer=require(_0x9958('0x0'));var util=require(_0x9958('0x1'));var path=require(_0x9958('0x2'));var timeout=require(_0x9958('0x3'));var express=require(_0x9958('0x4'));var router=express['Router']();var fs_extra=require(_0x9958('0x5'));var auth=require(_0x9958('0x6'));var interaction=require(_0x9958('0x7'));var config=require('../../config/environment');var controller=require(_0x9958('0x8'));router[_0x9958('0x9')]('/',auth[_0x9958('0xa')](),controller[_0x9958('0xb')]);router[_0x9958('0x9')](_0x9958('0xc'),auth['isAuthenticated'](),controller[_0x9958('0xd')]);router[_0x9958('0xe')]('/',auth[_0x9958('0xa')](),controller[_0x9958('0xf')]);router[_0x9958('0x10')](_0x9958('0xc'),auth[_0x9958('0xa')](),controller[_0x9958('0x11')]);router[_0x9958('0x12')](_0x9958('0xc'),auth[_0x9958('0xa')](),controller[_0x9958('0x13')]);module[_0x9958('0x14')]=router;
\ No newline at end of file
+var _0xdeb3=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/:id','create','put','update','delete','multer','util','path'];(function(_0x52620f,_0x505daa){var _0xe1f23a=function(_0x354d4b){while(--_0x354d4b){_0x52620f['push'](_0x52620f['shift']());}};_0xe1f23a(++_0x505daa);}(_0xdeb3,0xeb));var _0x3deb=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xdeb3[_0x2641f9];return _0x585741;};'use strict';var multer=require(_0x3deb('0x0'));var util=require(_0x3deb('0x1'));var path=require(_0x3deb('0x2'));var timeout=require(_0x3deb('0x3'));var express=require(_0x3deb('0x4'));var router=express[_0x3deb('0x5')]();var fs_extra=require(_0x3deb('0x6'));var auth=require(_0x3deb('0x7'));var interaction=require(_0x3deb('0x8'));var config=require('../../config/environment');var controller=require('./variable.controller');router['get']('/',auth[_0x3deb('0x9')](),controller[_0x3deb('0xa')]);router[_0x3deb('0xb')](_0x3deb('0xc'),auth[_0x3deb('0x9')](),controller['show']);router['post']('/',auth[_0x3deb('0x9')](),controller[_0x3deb('0xd')]);router[_0x3deb('0xe')](_0x3deb('0xc'),auth[_0x3deb('0x9')](),controller[_0x3deb('0xf')]);router[_0x3deb('0x10')](_0x3deb('0xc'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index a9da092..dd220a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27e6=['name','sequelize','exports','STRING'];(function(_0x27b91e,_0x4b9a1d){var _0x15316d=function(_0x3ae1b8){while(--_0x3ae1b8){_0x27b91e['push'](_0x27b91e['shift']());}};_0x15316d(++_0x4b9a1d);}(_0x27e6,0x121));var _0x627e=function(_0x4498d6,_0x207240){_0x4498d6=_0x4498d6-0x0;var _0x48aa4f=_0x27e6[_0x4498d6];return _0x48aa4f;};'use strict';var Sequelize=require(_0x627e('0x0'));module[_0x627e('0x1')]={'name':{'type':Sequelize[_0x627e('0x2')],'unique':_0x627e('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x627e('0x2')]}};
\ No newline at end of file
+var _0xaffe=['exports','STRING','sequelize'];(function(_0x25c1bd,_0x2b9085){var _0x1eea5f=function(_0x3b720c){while(--_0x3b720c){_0x25c1bd['push'](_0x25c1bd['shift']());}};_0x1eea5f(++_0x2b9085);}(_0xaffe,0x158));var _0xeaff=function(_0x129334,_0x5e5324){_0x129334=_0x129334-0x0;var _0x2b9e3f=_0xaffe[_0x129334];return _0x2b9e3f;};'use strict';var Sequelize=require(_0xeaff('0x0'));module[_0xeaff('0x1')]={'name':{'type':Sequelize[_0xeaff('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xeaff('0x2')]}};
\ No newline at end of file
index 82d7a1e..8171367 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89de=['sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','save','then','destroy','get','Variables','UserProfileResource','stack','send','map','Variable','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','name','filter','options','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x89de,0x148));var _0xe89d=function(_0x533490,_0x9b48e4){_0x533490=_0x533490-0x0;var _0xb59c02=_0x89de[_0x533490];return _0xb59c02;};'use strict';var emlformat=require(_0xe89d('0x0'));var rimraf=require(_0xe89d('0x1'));var zipdir=require(_0xe89d('0x2'));var jsonpatch=require(_0xe89d('0x3'));var rp=require(_0xe89d('0x4'));var moment=require(_0xe89d('0x5'));var BPromise=require(_0xe89d('0x6'));var Mustache=require(_0xe89d('0x7'));var util=require('util');var path=require('path');var sox=require(_0xe89d('0x8'));var csv=require(_0xe89d('0x9'));var ejs=require(_0xe89d('0xa'));var fs=require('fs');var fs_extra=require(_0xe89d('0xb'));var _=require(_0xe89d('0xc'));var squel=require('squel');var crypto=require(_0xe89d('0xd'));var jsforce=require(_0xe89d('0xe'));var deskjs=require(_0xe89d('0xf'));var toCsv=require('to-csv');var querystring=require(_0xe89d('0x10'));var Papa=require(_0xe89d('0x11'));var Redis=require(_0xe89d('0x12'));var authService=require(_0xe89d('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe89d('0x14'));var logger=require(_0xe89d('0x15'))('api');var utils=require(_0xe89d('0x16'));var config=require(_0xe89d('0x17'));var licenseUtil=require(_0xe89d('0x18'));var db=require(_0xe89d('0x19'))['db'];function respondWithStatusCode(_0x618cc3,_0x43214f){_0x43214f=_0x43214f||0xcc;return function(_0x367705){if(_0x367705){return _0x618cc3[_0xe89d('0x1a')](_0x43214f);}return _0x618cc3[_0xe89d('0x1b')](_0x43214f)[_0xe89d('0x1c')]();};}function respondWithResult(_0x2aac60,_0x3c5ebb){_0x3c5ebb=_0x3c5ebb||0xc8;return function(_0x286667){if(_0x286667){return _0x2aac60[_0xe89d('0x1b')](_0x3c5ebb)['json'](_0x286667);}};}function respondWithFilteredResult(_0x38603d,_0x50f9b9){return function(_0x172813){if(_0x172813){var _0x20966d=typeof _0x50f9b9[_0xe89d('0x1d')]==='undefined'&&typeof _0x50f9b9['limit']===_0xe89d('0x1e');var _0x29bc7b=_0x172813[_0xe89d('0x1f')];var _0x3374e6=_0x20966d?0x0:_0x50f9b9[_0xe89d('0x1d')];var _0x28b5ae=_0x20966d?_0x172813[_0xe89d('0x1f')]:_0x50f9b9[_0xe89d('0x1d')]+_0x50f9b9[_0xe89d('0x20')];var _0x4107de;if(_0x28b5ae>=_0x29bc7b){_0x28b5ae=_0x29bc7b;_0x4107de=0xc8;}else{_0x4107de=0xce;}_0x38603d[_0xe89d('0x1b')](_0x4107de);return _0x38603d[_0xe89d('0x21')](_0xe89d('0x22'),_0x3374e6+'-'+_0x28b5ae+'/'+_0x29bc7b)[_0xe89d('0x23')](_0x172813);}return null;};}function patchUpdates(_0x14ddb1){return function(_0x4af846){try{jsonpatch['apply'](_0x4af846,_0x14ddb1,!![]);}catch(_0x19cceb){return BPromise['reject'](_0x19cceb);}return _0x4af846[_0xe89d('0x24')]();};}function saveUpdates(_0x166ed4,_0x34c7ef){return function(_0x5c2ce1){if(_0x5c2ce1){return _0x5c2ce1['update'](_0x166ed4)[_0xe89d('0x25')](function(_0x46d8b5){return _0x46d8b5;});}return null;};}function removeEntity(_0x4cc703,_0x358772){return function(_0x5f352b){if(_0x5f352b){return _0x5f352b[_0xe89d('0x26')]()['then'](function(){var _0x2ef282=_0x5f352b[_0xe89d('0x27')]({'plain':!![]});var _0x5f3499=_0xe89d('0x28');return db[_0xe89d('0x29')]['destroy']({'where':{'type':_0x5f3499,'resourceId':_0x2ef282['id']}})[_0xe89d('0x25')](function(){return _0x5f352b;});})[_0xe89d('0x25')](function(){_0x4cc703[_0xe89d('0x1b')](0xcc)[_0xe89d('0x1c')]();});}};}function handleEntityNotFound(_0x4b0d7d,_0x406d38){return function(_0x2ba4c8){if(!_0x2ba4c8){_0x4b0d7d[_0xe89d('0x1a')](0x194);}return _0x2ba4c8;};}function handleError(_0x25532f,_0x5e181d){_0x5e181d=_0x5e181d||0x1f4;return function(_0x46a300){logger['error'](_0x46a300[_0xe89d('0x2a')]);if(_0x46a300['name']){delete _0x46a300['name'];}_0x25532f[_0xe89d('0x1b')](_0x5e181d)[_0xe89d('0x2b')](_0x46a300);};}exports['index']=function(_0x4d31ec,_0x55d341){var _0x51c8b3={},_0x44a5f4={},_0x5cdd40={'count':0x0,'rows':[]};var _0x42c207=_[_0xe89d('0x2c')](db[_0xe89d('0x2d')][_0xe89d('0x2e')],function(_0x333fe7){return{'name':_0x333fe7[_0xe89d('0x2f')],'type':_0x333fe7['type'][_0xe89d('0x30')]};});_0x44a5f4[_0xe89d('0x31')]=_['map'](_0x42c207,'name');_0x44a5f4[_0xe89d('0x32')]=_[_0xe89d('0x33')](_0x4d31ec[_0xe89d('0x32')]);_0x44a5f4[_0xe89d('0x34')]=_[_0xe89d('0x35')](_0x44a5f4[_0xe89d('0x31')],_0x44a5f4[_0xe89d('0x32')]);_0x51c8b3[_0xe89d('0x36')]=_[_0xe89d('0x35')](_0x44a5f4[_0xe89d('0x31')],qs[_0xe89d('0x37')](_0x4d31ec[_0xe89d('0x32')][_0xe89d('0x37')]));_0x51c8b3[_0xe89d('0x36')]=_0x51c8b3[_0xe89d('0x36')][_0xe89d('0x38')]?_0x51c8b3[_0xe89d('0x36')]:_0x44a5f4[_0xe89d('0x31')];if(!_0x4d31ec[_0xe89d('0x32')][_0xe89d('0x39')](_0xe89d('0x3a'))){_0x51c8b3['limit']=qs[_0xe89d('0x20')](_0x4d31ec[_0xe89d('0x32')][_0xe89d('0x20')]);_0x51c8b3[_0xe89d('0x1d')]=qs['offset'](_0x4d31ec[_0xe89d('0x32')]['offset']);}_0x51c8b3[_0xe89d('0x3b')]=qs[_0xe89d('0x3c')](_0x4d31ec[_0xe89d('0x32')][_0xe89d('0x3c')]);_0x51c8b3[_0xe89d('0x3d')]=qs[_0xe89d('0x34')](_[_0xe89d('0x3e')](_0x4d31ec[_0xe89d('0x32')],_0x44a5f4[_0xe89d('0x34')]),_0x42c207);if(_0x4d31ec[_0xe89d('0x32')]['filter']){_0x51c8b3[_0xe89d('0x3d')]=_[_0xe89d('0x3f')](_0x51c8b3[_0xe89d('0x3d')],{'$or':_[_0xe89d('0x2c')](_0x42c207,function(_0x14770e){if(_0x14770e[_0xe89d('0x40')]!==_0xe89d('0x41')){var _0x2e4403={};_0x2e4403[_0x14770e[_0xe89d('0x42')]]={'$like':'%'+_0x4d31ec['query'][_0xe89d('0x43')]+'%'};return _0x2e4403;}})});}_0x51c8b3=_['merge']({},_0x51c8b3,_0x4d31ec[_0xe89d('0x44')]);var _0x13e74a={'where':_0x51c8b3['where']};return db[_0xe89d('0x2d')]['count'](_0x13e74a)['then'](function(_0x1e1f1d){_0x5cdd40[_0xe89d('0x1f')]=_0x1e1f1d;if(_0x4d31ec[_0xe89d('0x32')]['includeAll']){_0x51c8b3[_0xe89d('0x45')]=[{'all':!![]}];}return db[_0xe89d('0x2d')][_0xe89d('0x46')](_0x51c8b3);})[_0xe89d('0x25')](function(_0x5155ce){_0x5cdd40[_0xe89d('0x47')]=_0x5155ce;return _0x5cdd40;})[_0xe89d('0x25')](respondWithFilteredResult(_0x55d341,_0x51c8b3))[_0xe89d('0x48')](handleError(_0x55d341,null));};exports[_0xe89d('0x49')]=function(_0x199ec0,_0x2de3dc){var _0x3b2ffd={'raw':!![],'where':{'id':_0x199ec0[_0xe89d('0x4a')]['id']}},_0x2b1ca0={};_0x2b1ca0[_0xe89d('0x31')]=_['keys'](db[_0xe89d('0x2d')][_0xe89d('0x2e')]);_0x2b1ca0['query']=_[_0xe89d('0x33')](_0x199ec0[_0xe89d('0x32')]);_0x2b1ca0[_0xe89d('0x34')]=_[_0xe89d('0x35')](_0x2b1ca0[_0xe89d('0x31')],_0x2b1ca0[_0xe89d('0x32')]);_0x3b2ffd[_0xe89d('0x36')]=_['intersection'](_0x2b1ca0[_0xe89d('0x31')],qs[_0xe89d('0x37')](_0x199ec0[_0xe89d('0x32')]['fields']));_0x3b2ffd[_0xe89d('0x36')]=_0x3b2ffd[_0xe89d('0x36')]['length']?_0x3b2ffd[_0xe89d('0x36')]:_0x2b1ca0[_0xe89d('0x31')];if(_0x199ec0['query']['includeAll']){_0x3b2ffd[_0xe89d('0x45')]=[{'all':!![]}];}_0x3b2ffd=_[_0xe89d('0x3f')]({},_0x3b2ffd,_0x199ec0['options']);return db[_0xe89d('0x2d')][_0xe89d('0x4b')](_0x3b2ffd)[_0xe89d('0x25')](handleEntityNotFound(_0x2de3dc,null))[_0xe89d('0x25')](respondWithResult(_0x2de3dc,null))[_0xe89d('0x48')](handleError(_0x2de3dc,null));};exports[_0xe89d('0x4c')]=function(_0x131b47,_0x2aa53d){return db['Variable'][_0xe89d('0x4c')](_0x131b47[_0xe89d('0x4d')],{})[_0xe89d('0x25')](function(_0x295dda){var _0x40606f=_0x131b47[_0xe89d('0x4e')][_0xe89d('0x27')]({'plain':!![]});if(!_0x40606f)throw new Error(_0xe89d('0x4f'));if(_0x40606f['role']===_0xe89d('0x4e')){var _0x22698f=_0x295dda[_0xe89d('0x27')]({'plain':!![]});var _0x4a8a2a='Variables';return db[_0xe89d('0x50')][_0xe89d('0x4b')]({'where':{'name':_0x4a8a2a,'userProfileId':_0x40606f[_0xe89d('0x51')]},'raw':!![]})['then'](function(_0x1dac31){if(_0x1dac31&&_0x1dac31[_0xe89d('0x52')]===0x0){return db['UserProfileResource'][_0xe89d('0x4c')]({'name':_0x22698f[_0xe89d('0x42')],'resourceId':_0x22698f['id'],'type':_0x1dac31[_0xe89d('0x42')],'sectionId':_0x1dac31['id']},{})['then'](function(){return _0x295dda;});}else{return _0x295dda;}})[_0xe89d('0x48')](function(_0x579d85){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x579d85);throw _0x579d85;});}return _0x295dda;})[_0xe89d('0x25')](respondWithResult(_0x2aa53d,0xc9))[_0xe89d('0x48')](handleError(_0x2aa53d,null));};exports[_0xe89d('0x53')]=function(_0x53058e,_0x504420){if(_0x53058e[_0xe89d('0x4d')]['id']){delete _0x53058e['body']['id'];}return db[_0xe89d('0x2d')][_0xe89d('0x4b')]({'where':{'id':_0x53058e[_0xe89d('0x4a')]['id']}})['then'](handleEntityNotFound(_0x504420,null))[_0xe89d('0x25')](saveUpdates(_0x53058e[_0xe89d('0x4d')],null))[_0xe89d('0x25')](respondWithResult(_0x504420,null))[_0xe89d('0x48')](handleError(_0x504420,null));};exports[_0xe89d('0x26')]=function(_0x29562b,_0x1695de){return db[_0xe89d('0x2d')][_0xe89d('0x4b')]({'where':{'id':_0x29562b['params']['id']}})[_0xe89d('0x25')](handleEntityNotFound(_0x1695de,null))[_0xe89d('0x25')](removeEntity(_0x1695de,null))['catch'](handleError(_0x1695de,null));};
\ No newline at end of file
+var _0x5dfb=['Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','sendStatus','status','undefined','count','offset','limit','set','json','apply','save','destroy','then','get','UserProfileResource','end','error','stack','name','send','index','map','Variable','rawAttributes','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Variables','UserProfileSection'];(function(_0x765c93,_0x3a755b){var _0x36debc=function(_0x4bbfe7){while(--_0x4bbfe7){_0x765c93['push'](_0x765c93['shift']());}};_0x36debc(++_0x3a755b);}(_0x5dfb,0x192));var _0xb5df=function(_0x3a7e01,_0x51204c){_0x3a7e01=_0x3a7e01-0x0;var _0x5b8398=_0x5dfb[_0x3a7e01];return _0x5b8398;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb5df('0x0'));var zipdir=require(_0xb5df('0x1'));var jsonpatch=require(_0xb5df('0x2'));var rp=require(_0xb5df('0x3'));var moment=require(_0xb5df('0x4'));var BPromise=require(_0xb5df('0x5'));var Mustache=require(_0xb5df('0x6'));var util=require('util');var path=require(_0xb5df('0x7'));var sox=require(_0xb5df('0x8'));var csv=require(_0xb5df('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb5df('0xa'));var _=require('lodash');var squel=require(_0xb5df('0xb'));var crypto=require('crypto');var jsforce=require(_0xb5df('0xc'));var deskjs=require(_0xb5df('0xd'));var toCsv=require('to-csv');var querystring=require(_0xb5df('0xe'));var Papa=require(_0xb5df('0xf'));var Redis=require(_0xb5df('0x10'));var authService=require(_0xb5df('0x11'));var qs=require(_0xb5df('0x12'));var as=require(_0xb5df('0x13'));var hardwareService=require(_0xb5df('0x14'));var logger=require('../../config/logger')(_0xb5df('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb5df('0x16'));var db=require(_0xb5df('0x17'))['db'];function respondWithStatusCode(_0x598249,_0x33792f){_0x33792f=_0x33792f||0xcc;return function(_0x5b86ae){if(_0x5b86ae){return _0x598249[_0xb5df('0x18')](_0x33792f);}return _0x598249['status'](_0x33792f)['end']();};}function respondWithResult(_0x4b360b,_0x453c13){_0x453c13=_0x453c13||0xc8;return function(_0x3644bc){if(_0x3644bc){return _0x4b360b[_0xb5df('0x19')](_0x453c13)['json'](_0x3644bc);}};}function respondWithFilteredResult(_0x14dee8,_0x514e93){return function(_0x31bf71){if(_0x31bf71){var _0x51015f=typeof _0x514e93['offset']==='undefined'&&typeof _0x514e93['limit']===_0xb5df('0x1a');var _0x3d8262=_0x31bf71[_0xb5df('0x1b')];var _0x1781bd=_0x51015f?0x0:_0x514e93[_0xb5df('0x1c')];var _0x4d82f2=_0x51015f?_0x31bf71['count']:_0x514e93[_0xb5df('0x1c')]+_0x514e93[_0xb5df('0x1d')];var _0x50f5f2;if(_0x4d82f2>=_0x3d8262){_0x4d82f2=_0x3d8262;_0x50f5f2=0xc8;}else{_0x50f5f2=0xce;}_0x14dee8['status'](_0x50f5f2);return _0x14dee8[_0xb5df('0x1e')]('Content-Range',_0x1781bd+'-'+_0x4d82f2+'/'+_0x3d8262)[_0xb5df('0x1f')](_0x31bf71);}return null;};}function patchUpdates(_0x4a8db1){return function(_0x6eed5a){try{jsonpatch[_0xb5df('0x20')](_0x6eed5a,_0x4a8db1,!![]);}catch(_0x1bd343){return BPromise['reject'](_0x1bd343);}return _0x6eed5a[_0xb5df('0x21')]();};}function saveUpdates(_0x5b4764,_0x226fbf){return function(_0x4afeb2){if(_0x4afeb2){return _0x4afeb2['update'](_0x5b4764)['then'](function(_0x389df4){return _0x389df4;});}return null;};}function removeEntity(_0x3f6cb7,_0x376a1b){return function(_0x3b9503){if(_0x3b9503){return _0x3b9503[_0xb5df('0x22')]()[_0xb5df('0x23')](function(){var _0xb71c=_0x3b9503[_0xb5df('0x24')]({'plain':!![]});var _0x50bebd='Variables';return db[_0xb5df('0x25')][_0xb5df('0x22')]({'where':{'type':_0x50bebd,'resourceId':_0xb71c['id']}})['then'](function(){return _0x3b9503;});})[_0xb5df('0x23')](function(){_0x3f6cb7['status'](0xcc)[_0xb5df('0x26')]();});}};}function handleEntityNotFound(_0x2086dd,_0x4cddbc){return function(_0x171c8d){if(!_0x171c8d){_0x2086dd[_0xb5df('0x18')](0x194);}return _0x171c8d;};}function handleError(_0x37ff34,_0x5e520e){_0x5e520e=_0x5e520e||0x1f4;return function(_0x57c6be){logger[_0xb5df('0x27')](_0x57c6be[_0xb5df('0x28')]);if(_0x57c6be[_0xb5df('0x29')]){delete _0x57c6be[_0xb5df('0x29')];}_0x37ff34[_0xb5df('0x19')](_0x5e520e)[_0xb5df('0x2a')](_0x57c6be);};}exports[_0xb5df('0x2b')]=function(_0x4c3f8a,_0x40437c){var _0x5e57a6={},_0x2ae2fd={},_0x2a7641={'count':0x0,'rows':[]};var _0x599f7c=_[_0xb5df('0x2c')](db[_0xb5df('0x2d')][_0xb5df('0x2e')],function(_0xbbce6a){return{'name':_0xbbce6a['fieldName'],'type':_0xbbce6a[_0xb5df('0x2f')][_0xb5df('0x30')]};});_0x2ae2fd[_0xb5df('0x31')]=_['map'](_0x599f7c,_0xb5df('0x29'));_0x2ae2fd[_0xb5df('0x32')]=_['keys'](_0x4c3f8a[_0xb5df('0x32')]);_0x2ae2fd[_0xb5df('0x33')]=_[_0xb5df('0x34')](_0x2ae2fd['model'],_0x2ae2fd[_0xb5df('0x32')]);_0x5e57a6['attributes']=_[_0xb5df('0x34')](_0x2ae2fd[_0xb5df('0x31')],qs[_0xb5df('0x35')](_0x4c3f8a[_0xb5df('0x32')][_0xb5df('0x35')]));_0x5e57a6[_0xb5df('0x36')]=_0x5e57a6['attributes'][_0xb5df('0x37')]?_0x5e57a6[_0xb5df('0x36')]:_0x2ae2fd['model'];if(!_0x4c3f8a[_0xb5df('0x32')][_0xb5df('0x38')]('nolimit')){_0x5e57a6[_0xb5df('0x1d')]=qs['limit'](_0x4c3f8a[_0xb5df('0x32')][_0xb5df('0x1d')]);_0x5e57a6['offset']=qs[_0xb5df('0x1c')](_0x4c3f8a[_0xb5df('0x32')][_0xb5df('0x1c')]);}_0x5e57a6[_0xb5df('0x39')]=qs['sort'](_0x4c3f8a['query']['sort']);_0x5e57a6['where']=qs['filters'](_['pick'](_0x4c3f8a[_0xb5df('0x32')],_0x2ae2fd[_0xb5df('0x33')]),_0x599f7c);if(_0x4c3f8a[_0xb5df('0x32')][_0xb5df('0x3a')]){_0x5e57a6[_0xb5df('0x3b')]=_[_0xb5df('0x3c')](_0x5e57a6[_0xb5df('0x3b')],{'$or':_[_0xb5df('0x2c')](_0x599f7c,function(_0x3fdfe8){if(_0x3fdfe8[_0xb5df('0x2f')]!==_0xb5df('0x3d')){var _0x3c5293={};_0x3c5293[_0x3fdfe8[_0xb5df('0x29')]]={'$like':'%'+_0x4c3f8a[_0xb5df('0x32')]['filter']+'%'};return _0x3c5293;}})});}_0x5e57a6=_['merge']({},_0x5e57a6,_0x4c3f8a[_0xb5df('0x3e')]);var _0x136973={'where':_0x5e57a6[_0xb5df('0x3b')]};return db['Variable'][_0xb5df('0x1b')](_0x136973)['then'](function(_0x36a069){_0x2a7641['count']=_0x36a069;if(_0x4c3f8a[_0xb5df('0x32')][_0xb5df('0x3f')]){_0x5e57a6[_0xb5df('0x40')]=[{'all':!![]}];}return db[_0xb5df('0x2d')][_0xb5df('0x41')](_0x5e57a6);})[_0xb5df('0x23')](function(_0x1b089f){_0x2a7641['rows']=_0x1b089f;return _0x2a7641;})['then'](respondWithFilteredResult(_0x40437c,_0x5e57a6))[_0xb5df('0x42')](handleError(_0x40437c,null));};exports[_0xb5df('0x43')]=function(_0x361303,_0x18f87f){var _0x27bc09={'raw':!![],'where':{'id':_0x361303[_0xb5df('0x44')]['id']}},_0x2f28e8={};_0x2f28e8[_0xb5df('0x31')]=_['keys'](db[_0xb5df('0x2d')][_0xb5df('0x2e')]);_0x2f28e8['query']=_[_0xb5df('0x45')](_0x361303[_0xb5df('0x32')]);_0x2f28e8[_0xb5df('0x33')]=_[_0xb5df('0x34')](_0x2f28e8[_0xb5df('0x31')],_0x2f28e8[_0xb5df('0x32')]);_0x27bc09['attributes']=_[_0xb5df('0x34')](_0x2f28e8[_0xb5df('0x31')],qs['fields'](_0x361303[_0xb5df('0x32')][_0xb5df('0x35')]));_0x27bc09[_0xb5df('0x36')]=_0x27bc09[_0xb5df('0x36')][_0xb5df('0x37')]?_0x27bc09[_0xb5df('0x36')]:_0x2f28e8[_0xb5df('0x31')];if(_0x361303[_0xb5df('0x32')][_0xb5df('0x3f')]){_0x27bc09[_0xb5df('0x40')]=[{'all':!![]}];}_0x27bc09=_[_0xb5df('0x3c')]({},_0x27bc09,_0x361303[_0xb5df('0x3e')]);return db['Variable'][_0xb5df('0x46')](_0x27bc09)[_0xb5df('0x23')](handleEntityNotFound(_0x18f87f,null))[_0xb5df('0x23')](respondWithResult(_0x18f87f,null))[_0xb5df('0x42')](handleError(_0x18f87f,null));};exports['create']=function(_0x2ada5c,_0x5f07fd){return db[_0xb5df('0x2d')][_0xb5df('0x47')](_0x2ada5c[_0xb5df('0x48')],{})[_0xb5df('0x23')](function(_0x5f1baa){var _0x51063c=_0x2ada5c[_0xb5df('0x49')][_0xb5df('0x24')]({'plain':!![]});if(!_0x51063c)throw new Error(_0xb5df('0x4a'));if(_0x51063c[_0xb5df('0x4b')]==='user'){var _0x1e5781=_0x5f1baa[_0xb5df('0x24')]({'plain':!![]});var _0x21da25=_0xb5df('0x4c');return db[_0xb5df('0x4d')]['find']({'where':{'name':_0x21da25,'userProfileId':_0x51063c['userProfileId']},'raw':!![]})[_0xb5df('0x23')](function(_0x4bb3e3){if(_0x4bb3e3&&_0x4bb3e3['autoAssociation']===0x0){return db[_0xb5df('0x25')][_0xb5df('0x47')]({'name':_0x1e5781['name'],'resourceId':_0x1e5781['id'],'type':_0x4bb3e3[_0xb5df('0x29')],'sectionId':_0x4bb3e3['id']},{})['then'](function(){return _0x5f1baa;});}else{return _0x5f1baa;}})[_0xb5df('0x42')](function(_0x2eb41d){logger[_0xb5df('0x27')](_0xb5df('0x4e'),_0x2eb41d);throw _0x2eb41d;});}return _0x5f1baa;})[_0xb5df('0x23')](respondWithResult(_0x5f07fd,0xc9))[_0xb5df('0x42')](handleError(_0x5f07fd,null));};exports[_0xb5df('0x4f')]=function(_0x8f5c5b,_0x19a5c8){if(_0x8f5c5b[_0xb5df('0x48')]['id']){delete _0x8f5c5b[_0xb5df('0x48')]['id'];}return db[_0xb5df('0x2d')][_0xb5df('0x46')]({'where':{'id':_0x8f5c5b[_0xb5df('0x44')]['id']}})[_0xb5df('0x23')](handleEntityNotFound(_0x19a5c8,null))[_0xb5df('0x23')](saveUpdates(_0x8f5c5b[_0xb5df('0x48')],null))[_0xb5df('0x23')](respondWithResult(_0x19a5c8,null))[_0xb5df('0x42')](handleError(_0x19a5c8,null));};exports[_0xb5df('0x22')]=function(_0x318591,_0x53e08b){return db[_0xb5df('0x2d')]['find']({'where':{'id':_0x318591['params']['id']}})[_0xb5df('0x23')](handleEntityNotFound(_0x53e08b,null))[_0xb5df('0x23')](removeEntity(_0x53e08b,null))[_0xb5df('0x42')](handleError(_0x53e08b,null));};
\ No newline at end of file
index 49fa33b..b75c125 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x260b=['request-promise','rimraf','exports','define','Variable','tools_variables','lodash','api','moment','bluebird'];(function(_0x21b43b,_0x31c9d2){var _0x17fb42=function(_0x152c53){while(--_0x152c53){_0x21b43b['push'](_0x21b43b['shift']());}};_0x17fb42(++_0x31c9d2);}(_0x260b,0xa6));var _0xb260=function(_0x48511f,_0x3aa048){_0x48511f=_0x48511f-0x0;var _0x2f2488=_0x260b[_0x48511f];return _0x2f2488;};'use strict';var _=require(_0xb260('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xb260('0x1'));var moment=require(_0xb260('0x2'));var BPromise=require(_0xb260('0x3'));var rp=require(_0xb260('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb260('0x5'));var config=require('../../config/environment');var attributes=require('./variable.attributes');module[_0xb260('0x6')]=function(_0xd6a800,_0x15ae1a){return _0xd6a800[_0xb260('0x7')](_0xb260('0x8'),attributes,{'tableName':_0xb260('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x82d0=['define','Variable','lodash','util','moment','bluebird','request-promise','path','rimraf','./variable.attributes','exports'];(function(_0x581837,_0x49d49){var _0x136b5e=function(_0x28449b){while(--_0x28449b){_0x581837['push'](_0x581837['shift']());}};_0x136b5e(++_0x49d49);}(_0x82d0,0xbd));var _0x082d=function(_0x110cbb,_0x186ee7){_0x110cbb=_0x110cbb-0x0;var _0x145f91=_0x82d0[_0x110cbb];return _0x145f91;};'use strict';var _=require(_0x082d('0x0'));var util=require(_0x082d('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x082d('0x2'));var BPromise=require(_0x082d('0x3'));var rp=require(_0x082d('0x4'));var fs=require('fs');var path=require(_0x082d('0x5'));var rimraf=require(_0x082d('0x6'));var config=require('../../config/environment');var attributes=require(_0x082d('0x7'));module[_0x082d('0x8')]=function(_0x3dc210,_0x4c04d2){return _0x3dc210[_0x082d('0x9')](_0x082d('0xa'),attributes,{'tableName':'tools_variables','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8b7e5af..a87979e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['stringify','error','code','message','result','catch','ShowVariable','find','raw','options','where','attributes','include','map','model','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s'];(function(_0x4c1cce,_0x2e8cf3){var _0x23b451=function(_0x110199){while(--_0x110199){_0x4c1cce['push'](_0x4c1cce['shift']());}};_0x23b451(++_0x2e8cf3);}(_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']('Variable,\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);});});}exports[_0x7995('0x18')]=function(_0x291317){var _0x1e1415=this;return new Promise(function(_0x37a7d4,_0x4faa60){return db['Variable'][_0x7995('0x19')]({'raw':_0x291317['options']?_0x291317['options'][_0x7995('0x1a')]===undefined?!![]:![]:!![],'where':_0x291317[_0x7995('0x1b')]?_0x291317['options'][_0x7995('0x1c')]||null:null,'attributes':_0x291317['options']?_0x291317['options'][_0x7995('0x1d')]||null:null,'include':_0x291317[_0x7995('0x1b')]?_0x291317[_0x7995('0x1b')][_0x7995('0x1e')]?_[_0x7995('0x1f')](_0x291317[_0x7995('0x1b')]['include'],function(_0x32a09a){return{'model':db[_0x32a09a[_0x7995('0x20')]],'as':_0x32a09a['as'],'attributes':_0x32a09a[_0x7995('0x1d')],'include':_0x32a09a[_0x7995('0x1e')]?_[_0x7995('0x1f')](_0x32a09a[_0x7995('0x1e')],function(_0x475351){return{'model':db[_0x475351[_0x7995('0x20')]],'as':_0x475351['as'],'attributes':_0x475351['attributes'],'include':_0x475351[_0x7995('0x1e')]?_[_0x7995('0x1f')](_0x475351[_0x7995('0x1e')],function(_0x268ce7){return{'model':db[_0x268ce7[_0x7995('0x20')]],'as':_0x268ce7['as'],'attributes':_0x268ce7[_0x7995('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x47625f){logger['info'](_0x7995('0x18'),_0x291317);logger[_0x7995('0x10')](_0x7995('0x18'),_0x291317,JSON[_0x7995('0x12')](_0x47625f));_0x37a7d4(_0x47625f);})[_0x7995('0x17')](function(_0x4b6f99){logger[_0x7995('0x13')]('ShowVariable',_0x4b6f99[_0x7995('0x15')],_0x291317);_0x4faa60(_0x1e1415[_0x7995('0x13')](0x1f4,_0x4b6f99[_0x7995('0x15')]));});});};
\ No newline at end of file
+var _0x6aa7=['include','model','attributes','map','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','request','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowVariable','find','options','raw','where'];(function(_0x3d3a66,_0x5669ee){var _0x30c7d7=function(_0x20df6b){while(--_0x20df6b){_0x3d3a66['push'](_0x3d3a66['shift']());}};_0x30c7d7(++_0x5669ee);}(_0x6aa7,0x178));var _0x76aa=function(_0x409c51,_0x5f4941){_0x409c51=_0x409c51-0x0;var _0x320504=_0x6aa7[_0x409c51];return _0x320504;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var moment=require(_0x76aa('0x1'));var BPromise=require(_0x76aa('0x2'));var rs=require(_0x76aa('0x3'));var fs=require('fs');var Redis=require(_0x76aa('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x76aa('0x5'));var logger=require(_0x76aa('0x6'))(_0x76aa('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x76aa('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32dee5,_0x36d12b,_0xa9b695){return new BPromise(function(_0x56d6bc,_0x3dae33){return client[_0x76aa('0x9')](_0x32dee5,_0xa9b695)[_0x76aa('0xa')](function(_0x557d69){logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,_0x76aa('0xd'));logger[_0x76aa('0xe')](_0x76aa('0xf'),_0x36d12b,_0x76aa('0xd'),JSON[_0x76aa('0x10')](_0x557d69));if(_0x557d69[_0x76aa('0x11')]){if(_0x557d69[_0x76aa('0x11')][_0x76aa('0x12')]===0x1f4){logger['error'](_0x76aa('0xc'),_0x36d12b,_0x557d69['error'][_0x76aa('0x13')]);return _0x3dae33(_0x557d69[_0x76aa('0x11')][_0x76aa('0x13')]);}logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x557d69['error']['message']);return _0x56d6bc(_0x557d69[_0x76aa('0x11')]['message']);}else{logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,'request\x20sent');_0x56d6bc(_0x557d69[_0x76aa('0x14')]['message']);}})[_0x76aa('0x15')](function(_0x5181d2){logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x5181d2);_0x3dae33(_0x5181d2);});});}exports[_0x76aa('0x16')]=function(_0x21c16d){var _0xa1bc7=this;return new Promise(function(_0x3ead3f,_0x496902){return db['Variable'][_0x76aa('0x17')]({'raw':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')][_0x76aa('0x19')]===undefined?!![]:![]:!![],'where':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')][_0x76aa('0x1a')]||null:null,'attributes':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')]['attributes']||null:null,'include':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')][_0x76aa('0x1b')]?_['map'](_0x21c16d[_0x76aa('0x18')][_0x76aa('0x1b')],function(_0x31252f){return{'model':db[_0x31252f[_0x76aa('0x1c')]],'as':_0x31252f['as'],'attributes':_0x31252f[_0x76aa('0x1d')],'include':_0x31252f[_0x76aa('0x1b')]?_[_0x76aa('0x1e')](_0x31252f[_0x76aa('0x1b')],function(_0x32bf9f){return{'model':db[_0x32bf9f[_0x76aa('0x1c')]],'as':_0x32bf9f['as'],'attributes':_0x32bf9f[_0x76aa('0x1d')],'include':_0x32bf9f[_0x76aa('0x1b')]?_[_0x76aa('0x1e')](_0x32bf9f['include'],function(_0xb5e8a9){return{'model':db[_0xb5e8a9[_0x76aa('0x1c')]],'as':_0xb5e8a9['as'],'attributes':_0xb5e8a9[_0x76aa('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x76aa('0xa')](function(_0xa1e6){logger[_0x76aa('0xb')](_0x76aa('0x16'),_0x21c16d);logger[_0x76aa('0xe')](_0x76aa('0x16'),_0x21c16d,JSON[_0x76aa('0x10')](_0xa1e6));_0x3ead3f(_0xa1e6);})['catch'](function(_0x3fcb7f){logger['error'](_0x76aa('0x16'),_0x3fcb7f[_0x76aa('0x13')],_0x21c16d);_0x496902(_0xa1bc7[_0x76aa('0x11')](0x1f4,_0x3fcb7f[_0x76aa('0x13')]));});});};
\ No newline at end of file
index 902d507..a31911d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6195=['exports','express','../../components/auth/service','./version.controller','/fetch','fetch','get','/reset','reset','/pull','isAuthenticated','canUpdate','pull','restart','/migrations'];(function(_0x45e8c7,_0xab4652){var _0x3994a=function(_0xd5ee47){while(--_0xd5ee47){_0x45e8c7['push'](_0x45e8c7['shift']());}};_0x3994a(++_0xab4652);}(_0x6195,0x12d));var _0x5619=function(_0x362519,_0x5d067b){_0x362519=_0x362519-0x0;var _0x134ba4=_0x6195[_0x362519];return _0x134ba4;};'use strict';var express=require(_0x5619('0x0'));var router=express['Router']();var auth=require(_0x5619('0x1'));var controller=require(_0x5619('0x2'));router['get']('/',controller['index']);router['get'](_0x5619('0x3'),auth['isAuthenticated'](),auth['canUpdate'](),controller[_0x5619('0x4')]);router[_0x5619('0x5')](_0x5619('0x6'),auth['isAuthenticated'](),auth['canUpdate'](),controller[_0x5619('0x7')]);router[_0x5619('0x5')](_0x5619('0x8'),auth[_0x5619('0x9')](),auth[_0x5619('0xa')](),controller[_0x5619('0xb')]);router[_0x5619('0x5')]('/restart',auth[_0x5619('0x9')](),controller[_0x5619('0xc')]);router[_0x5619('0x5')](_0x5619('0xd'),controller['migrations']);module[_0x5619('0xe')]=router;
\ No newline at end of file
+var _0x25cd=['pull','restart','/migrations','migrations','Router','../../components/auth/service','get','index','isAuthenticated','/reset','reset','/pull'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x25cd,0x1c0));var _0xd25c=function(_0x2689d1,_0x50661a){_0x2689d1=_0x2689d1-0x0;var _0x283069=_0x25cd[_0x2689d1];return _0x283069;};'use strict';var express=require('express');var router=express[_0xd25c('0x0')]();var auth=require(_0xd25c('0x1'));var controller=require('./version.controller');router[_0xd25c('0x2')]('/',controller[_0xd25c('0x3')]);router[_0xd25c('0x2')]('/fetch',auth[_0xd25c('0x4')](),auth['canUpdate'](),controller['fetch']);router['get'](_0xd25c('0x5'),auth['isAuthenticated'](),auth['canUpdate'](),controller[_0xd25c('0x6')]);router[_0xd25c('0x2')](_0xd25c('0x7'),auth['isAuthenticated'](),auth['canUpdate'](),controller[_0xd25c('0x8')]);router[_0xd25c('0x2')]('/restart',auth[_0xd25c('0x4')](),controller[_0xd25c('0x9')]);router[_0xd25c('0x2')](_0xd25c('0xa'),controller[_0xd25c('0xb')]);module['exports']=router;
\ No newline at end of file
index 3749b8e..bc90251 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa182=['replace','push','sort','sequelize','Migration','getQueryInterface','constructor','server','map','then','Database\x20migrated\x20successfully\x20from\x20version\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','compare-versions','exec','../../mysqldb','../../config/logger','update','exports','version','query','latest','fetch','tags','2.0.0','status','json','origin','master','error','info','git\x20fetch','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','npm\x20install\x20--production','restart','motion2','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','join','root','migrations','length'];(function(_0x14fad0,_0x278d75){var _0x5c665f=function(_0xe43a83){while(--_0xe43a83){_0x14fad0['push'](_0x14fad0['shift']());}};_0x5c665f(++_0x278d75);}(_0xa182,0x70));var _0x2a18=function(_0x5cf172,_0x241f6c){_0x5cf172=_0x5cf172-0x0;var _0x1e67f3=_0xa182[_0x5cf172];return _0x1e67f3;};'use strict';var Umzug=require(_0x2a18('0x0'));var path=require(_0x2a18('0x1'));var fs=require('fs');var _=require('lodash');var pkginfo=require('pkginfo')(module,'version');var compareVersions=require(_0x2a18('0x2'));var exec=require('child_process')[_0x2a18('0x3')];var db=require(_0x2a18('0x4'))['db'];var config=require('../../config/environment');var pm2=require('../../config/pm2');var logger=require(_0x2a18('0x5'))(_0x2a18('0x6'));var git=require('simple-git')(config['root']);exports['index']=function(_0x268ece,_0x58fac3){var _0xc1b03f={'current':module[_0x2a18('0x7')][_0x2a18('0x8')],'phonebar':0x2};if(_0x268ece[_0x2a18('0x9')]&&_0x268ece['query'][_0x2a18('0xa')]){return git[_0x2a18('0xb')]()[_0x2a18('0xc')](function(_0x4f23ec,_0x146bd8){_0xc1b03f[_0x2a18('0xa')]=(_0x4f23ec?module['exports'][_0x2a18('0x8')]:_0x146bd8['latest'])||_0x2a18('0xd');return _0x58fac3[_0x2a18('0xe')](0xc8)['json'](_0xc1b03f);});}else{return _0x58fac3[_0x2a18('0xe')](0xc8)[_0x2a18('0xf')](_0xc1b03f);}};exports[_0x2a18('0xb')]=function(_0x2e175b,_0x2e61a0){return git[_0x2a18('0xb')]([_0x2a18('0x10'),_0x2a18('0x11')],function(_0x12bf07){if(_0x12bf07){logger[_0x2a18('0x12')](_0x12bf07);return _0x2e61a0[_0x2a18('0xe')](0x1f4)['json'](_0x12bf07);}logger[_0x2a18('0x13')](_0x2a18('0x14'));return _0x2e61a0[_0x2a18('0xe')](0xc8)['json']({'output':'git\x20fetch\x20origin\x20master'});});};exports['reset']=function(_0x18d0c6,_0x7cffbe){return git[_0x2a18('0x15')]([_0x2a18('0x16'),_0x2a18('0x17')],function(_0xa051ce){if(_0xa051ce){logger[_0x2a18('0x12')](_0xa051ce);return _0x7cffbe[_0x2a18('0xe')](0x1f4)[_0x2a18('0xf')](_0xa051ce);}logger[_0x2a18('0x13')](_0x2a18('0x18'));return _0x7cffbe[_0x2a18('0xe')](0xc8)[_0x2a18('0xf')]({'output':'git\x20reset\x20--hard'});});};exports['pull']=function(_0x3c68f2,_0x35f511){exec(_0x2a18('0x19'),function(_0x71e75d,_0x1af63a,_0x5b4bd6){logger[_0x2a18('0x13')](_0x1af63a);logger[_0x2a18('0x13')](_0x5b4bd6);if(_0x71e75d){logger[_0x2a18('0x12')](_0x71e75d);return _0x35f511[_0x2a18('0xe')](0x1f4)[_0x2a18('0xf')](_0x71e75d);}return _0x35f511[_0x2a18('0xe')](0xc8)['json']({'output':_0x1af63a});});};exports[_0x2a18('0x1a')]=function(_0x34670b,_0x5963b4){return pm2[_0x2a18('0x1a')](_0x2a18('0x1b'))['then'](function(_0x53de61){logger[_0x2a18('0x13')](_0x2a18('0x1c'),_0x53de61);return _0x5963b4['status'](0xc8)[_0x2a18('0xf')]({'output':_0x2a18('0x1d')});})[_0x2a18('0x1e')](function(_0xbc0a25){logger[_0x2a18('0x12')](_0xbc0a25);return _0x5963b4[_0x2a18('0xe')](0x1f4)[_0x2a18('0xf')](_0xbc0a25);});};exports['migrations']=function(_0x44728a,_0x25e536){var _0x39ddec=fs['readdirSync'](path[_0x2a18('0x1f')](config[_0x2a18('0x20')],'server',_0x2a18('0x21')));var _0x313290=[];for(var _0x414b6b=0x0;_0x414b6b<_0x39ddec[_0x2a18('0x22')];_0x414b6b++){var _0x1720cd=_0x39ddec[_0x414b6b][_0x2a18('0x23')]('.js','');if(compareVersions(module['exports'][_0x2a18('0x8')],_0x1720cd)===-0x1){_0x313290[_0x2a18('0x24')](_0x1720cd);}}if(_0x313290[_0x2a18('0x22')]){var _0x294213=_0x313290[_0x2a18('0x25')](compareVersions);var _0x4455f9=new Umzug({'storage':_0x2a18('0x26'),'storageOptions':{'model':db[_0x2a18('0x27')],'modelName':_0x2a18('0x27'),'columnName':_0x2a18('0x8')},'migrations':{'params':[db['sequelize'][_0x2a18('0x28')](),db[_0x2a18('0x26')][_0x2a18('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[_0x2a18('0x1f')](config[_0x2a18('0x20')],_0x2a18('0x2a'),_0x2a18('0x21')),'pattern':/\.js$/}});_0x4455f9['up']({'migrations':_[_0x2a18('0x2b')](_0x294213,function(_0x771621){return _0x771621+'.js';})})[_0x2a18('0x2c')](function(){return _0x25e536[_0x2a18('0xe')](0xc8)[_0x2a18('0xf')]({'output':_0x2a18('0x2d')+module['exports']['version']+'\x20to\x20'+_[_0x2a18('0x2e')](_0x294213),'migrations':_[_0x2a18('0x1f')](_0x294213)});})[_0x2a18('0x1e')](function(_0x23622c){if(_0x23622c instanceof db['sequelize'][_0x2a18('0x2f')]){return _0x25e536[_0x2a18('0xe')](0xc8)[_0x2a18('0xf')]({'output':_0x2a18('0x30')});}else{return _0x25e536[_0x2a18('0xe')](0x1f4)[_0x2a18('0xf')](_0x23622c);}});}else{return _0x25e536[_0x2a18('0xe')](0xc8)['json']({'output':_0x2a18('0x30')});}};
\ No newline at end of file
+var _0xcaad=['path','lodash','version','compare-versions','../../config/environment','../../config/pm2','../../config/logger','update','root','index','exports','query','latest','fetch','tags','2.0.0','status','json','origin','master','error','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','npm\x20install\x20--production','restart','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','readdirSync','join','server','length','replace','.js','push','sort','sequelize','Migration','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','map','then','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','UniqueConstraintError','Database\x20already\x20up-to-date','umzug'];(function(_0x351d41,_0x591817){var _0x2dce86=function(_0x22233b){while(--_0x22233b){_0x351d41['push'](_0x351d41['shift']());}};_0x2dce86(++_0x591817);}(_0xcaad,0x1dc));var _0xdcaa=function(_0x467280,_0x2d4f5f){_0x467280=_0x467280-0x0;var _0x47fb02=_0xcaad[_0x467280];return _0x47fb02;};'use strict';var Umzug=require(_0xdcaa('0x0'));var path=require(_0xdcaa('0x1'));var fs=require('fs');var _=require(_0xdcaa('0x2'));var pkginfo=require('pkginfo')(module,_0xdcaa('0x3'));var compareVersions=require(_0xdcaa('0x4'));var exec=require('child_process')['exec'];var db=require('../../mysqldb')['db'];var config=require(_0xdcaa('0x5'));var pm2=require(_0xdcaa('0x6'));var logger=require(_0xdcaa('0x7'))(_0xdcaa('0x8'));var git=require('simple-git')(config[_0xdcaa('0x9')]);exports[_0xdcaa('0xa')]=function(_0x380447,_0x2d3f6f){var _0x2d1660={'current':module[_0xdcaa('0xb')][_0xdcaa('0x3')],'phonebar':0x2};if(_0x380447[_0xdcaa('0xc')]&&_0x380447[_0xdcaa('0xc')][_0xdcaa('0xd')]){return git[_0xdcaa('0xe')]()[_0xdcaa('0xf')](function(_0x17154d,_0x4c54ee){_0x2d1660['latest']=(_0x17154d?module[_0xdcaa('0xb')][_0xdcaa('0x3')]:_0x4c54ee[_0xdcaa('0xd')])||_0xdcaa('0x10');return _0x2d3f6f[_0xdcaa('0x11')](0xc8)['json'](_0x2d1660);});}else{return _0x2d3f6f[_0xdcaa('0x11')](0xc8)[_0xdcaa('0x12')](_0x2d1660);}};exports[_0xdcaa('0xe')]=function(_0x3126aa,_0x41b6d2){return git[_0xdcaa('0xe')]([_0xdcaa('0x13'),_0xdcaa('0x14')],function(_0x4d6727){if(_0x4d6727){logger[_0xdcaa('0x15')](_0x4d6727);return _0x41b6d2[_0xdcaa('0x11')](0x1f4)['json'](_0x4d6727);}logger[_0xdcaa('0x16')](_0xdcaa('0x17'));return _0x41b6d2[_0xdcaa('0x11')](0xc8)['json']({'output':_0xdcaa('0x18')});});};exports[_0xdcaa('0x19')]=function(_0x353cb4,_0x5a53c1){return git[_0xdcaa('0x19')]([_0xdcaa('0x1a'),_0xdcaa('0x1b')],function(_0x23fc9f){if(_0x23fc9f){logger['error'](_0x23fc9f);return _0x5a53c1['status'](0x1f4)[_0xdcaa('0x12')](_0x23fc9f);}logger[_0xdcaa('0x16')](_0xdcaa('0x1c'));return _0x5a53c1[_0xdcaa('0x11')](0xc8)[_0xdcaa('0x12')]({'output':_0xdcaa('0x1d')});});};exports['pull']=function(_0x230410,_0x2e2b5e){exec(_0xdcaa('0x1e'),function(_0x57800e,_0x467218,_0x100046){logger[_0xdcaa('0x16')](_0x467218);logger['info'](_0x100046);if(_0x57800e){logger['error'](_0x57800e);return _0x2e2b5e[_0xdcaa('0x11')](0x1f4)['json'](_0x57800e);}return _0x2e2b5e['status'](0xc8)[_0xdcaa('0x12')]({'output':_0x467218});});};exports[_0xdcaa('0x1f')]=function(_0x1103c3,_0x62e190){return pm2[_0xdcaa('0x1f')]('motion2')['then'](function(_0x1eb2f5){logger[_0xdcaa('0x16')]('pm2\x20restart\x20motion\x20%s',_0x1eb2f5);return _0x62e190[_0xdcaa('0x11')](0xc8)[_0xdcaa('0x12')]({'output':_0xdcaa('0x20')});})[_0xdcaa('0x21')](function(_0xf68449){logger[_0xdcaa('0x15')](_0xf68449);return _0x62e190['status'](0x1f4)[_0xdcaa('0x12')](_0xf68449);});};exports[_0xdcaa('0x22')]=function(_0x3c4390,_0x15d003){var _0x27662a=fs[_0xdcaa('0x23')](path[_0xdcaa('0x24')](config[_0xdcaa('0x9')],_0xdcaa('0x25'),_0xdcaa('0x22')));var _0x5691b2=[];for(var _0x272616=0x0;_0x272616<_0x27662a[_0xdcaa('0x26')];_0x272616++){var _0x325504=_0x27662a[_0x272616][_0xdcaa('0x27')](_0xdcaa('0x28'),'');if(compareVersions(module[_0xdcaa('0xb')]['version'],_0x325504)===-0x1){_0x5691b2[_0xdcaa('0x29')](_0x325504);}}if(_0x5691b2['length']){var _0x531c86=_0x5691b2[_0xdcaa('0x2a')](compareVersions);var _0x17ff13=new Umzug({'storage':_0xdcaa('0x2b'),'storageOptions':{'model':db[_0xdcaa('0x2c')],'modelName':_0xdcaa('0x2c'),'columnName':'version'},'migrations':{'params':[db[_0xdcaa('0x2b')]['getQueryInterface'](),db['sequelize'][_0xdcaa('0x2d')],function(){throw new Error(_0xdcaa('0x2e'));}],'path':path[_0xdcaa('0x24')](config[_0xdcaa('0x9')],_0xdcaa('0x25'),_0xdcaa('0x22')),'pattern':/\.js$/}});_0x17ff13['up']({'migrations':_[_0xdcaa('0x2f')](_0x531c86,function(_0x1fb03d){return _0x1fb03d+'.js';})})[_0xdcaa('0x30')](function(){return _0x15d003['status'](0xc8)[_0xdcaa('0x12')]({'output':_0xdcaa('0x31')+module['exports'][_0xdcaa('0x3')]+_0xdcaa('0x32')+_['last'](_0x531c86),'migrations':_[_0xdcaa('0x24')](_0x531c86)});})['catch'](function(_0x40fcfe){if(_0x40fcfe instanceof db['sequelize'][_0xdcaa('0x33')]){return _0x15d003['status'](0xc8)[_0xdcaa('0x12')]({'output':'Database\x20already\x20up-to-date'});}else{return _0x15d003[_0xdcaa('0x11')](0x1f4)[_0xdcaa('0x12')](_0x40fcfe);}});}else{return _0x15d003[_0xdcaa('0x11')](0xc8)[_0xdcaa('0x12')]({'output':_0xdcaa('0x34')});}};
\ No newline at end of file
index 51d352b..1d90c3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e00=['create','put','update','exports','multer','util','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post'];(function(_0x3076ed,_0x23db8a){var _0x25a6a9=function(_0x24f0a3){while(--_0x24f0a3){_0x3076ed['push'](_0x3076ed['shift']());}};_0x25a6a9(++_0x23db8a);}(_0x8e00,0xfb));var _0x08e0=function(_0x25f75a,_0x1c34cf){_0x25f75a=_0x25f75a-0x0;var _0x4ae1b3=_0x8e00[_0x25f75a];return _0x4ae1b3;};'use strict';var multer=require(_0x08e0('0x0'));var util=require(_0x08e0('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x08e0('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x08e0('0x3'));var interaction=require(_0x08e0('0x4'));var config=require(_0x08e0('0x5'));var controller=require(_0x08e0('0x6'));router[_0x08e0('0x7')]('/',auth[_0x08e0('0x8')](),controller[_0x08e0('0x9')]);router[_0x08e0('0x7')](_0x08e0('0xa'),auth[_0x08e0('0x8')](),controller[_0x08e0('0xb')]);router[_0x08e0('0x7')](_0x08e0('0xc'),auth[_0x08e0('0x8')](),controller[_0x08e0('0xd')]);router[_0x08e0('0xe')]('/',auth[_0x08e0('0x8')](),controller[_0x08e0('0xf')]);router[_0x08e0('0x10')](_0x08e0('0xc'),auth[_0x08e0('0x8')](),controller[_0x08e0('0x11')]);router['delete'](_0x08e0('0xc'),auth[_0x08e0('0x8')](),controller['destroy']);module[_0x08e0('0x12')]=router;
\ No newline at end of file
+var _0x163e=['update','delete','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put'];(function(_0x555b2f,_0x43b622){var _0x81c0a6=function(_0x4629e6){while(--_0x4629e6){_0x555b2f['push'](_0x555b2f['shift']());}};_0x81c0a6(++_0x43b622);}(_0x163e,0x137));var _0xe163=function(_0x1faaa1,_0x1568dd){_0x1faaa1=_0x1faaa1-0x0;var _0x994ec=_0x163e[_0x1faaa1];return _0x994ec;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe163('0x0'));var timeout=require(_0xe163('0x1'));var express=require(_0xe163('0x2'));var router=express[_0xe163('0x3')]();var fs_extra=require(_0xe163('0x4'));var auth=require(_0xe163('0x5'));var interaction=require(_0xe163('0x6'));var config=require(_0xe163('0x7'));var controller=require(_0xe163('0x8'));router[_0xe163('0x9')]('/',auth[_0xe163('0xa')](),controller[_0xe163('0xb')]);router[_0xe163('0x9')](_0xe163('0xc'),auth[_0xe163('0xa')](),controller[_0xe163('0xd')]);router[_0xe163('0x9')](_0xe163('0xe'),auth[_0xe163('0xa')](),controller[_0xe163('0xf')]);router[_0xe163('0x10')]('/',auth[_0xe163('0xa')](),controller[_0xe163('0x11')]);router[_0xe163('0x12')](_0xe163('0xe'),auth[_0xe163('0xa')](),controller[_0xe163('0x13')]);router[_0xe163('0x14')]('/:id',auth[_0xe163('0xa')](),controller['destroy']);module[_0xe163('0x15')]=router;
\ No newline at end of file
index 49e7e38..ce12a40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c91=['FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports','STRING','DATE','INTEGER','BOOLEAN'];(function(_0x15bc81,_0x4d4f77){var _0x59440e=function(_0x1b60f2){while(--_0x1b60f2){_0x15bc81['push'](_0x15bc81['shift']());}};_0x59440e(++_0x4d4f77);}(_0x2c91,0x158));var _0x12c9=function(_0x54b528,_0x5c52d7){_0x54b528=_0x54b528-0x0;var _0x2684c6=_0x2c91[_0x54b528];return _0x2684c6;};'use strict';var Sequelize=require(_0x12c9('0x0'));module[_0x12c9('0x1')]={'type':{'type':Sequelize[_0x12c9('0x2')]},'uniqueid':{'type':Sequelize[_0x12c9('0x2')]},'calleridnum':{'type':Sequelize[_0x12c9('0x2')]},'calleridname':{'type':Sequelize[_0x12c9('0x2')]},'queue':{'type':Sequelize[_0x12c9('0x2')]},'interface':{'type':Sequelize[_0x12c9('0x2')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0x12c9('0x3')]},'agentconnectAt':{'type':Sequelize[_0x12c9('0x3')]},'agentcompleteAt':{'type':Sequelize[_0x12c9('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0x12c9('0x3')]},'agentdumpAt':{'type':Sequelize[_0x12c9('0x3')]},'holdtime':{'type':Sequelize[_0x12c9('0x4')]},'agentcomplete':{'type':Sequelize[_0x12c9('0x5')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x12c9('0x5')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x12c9('0x4')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x12c9('0x4')]},'reason':{'type':Sequelize[_0x12c9('0x2')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x12c9('0x2')]},'channelstate':{'type':Sequelize[_0x12c9('0x4')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x12c9('0x2')]},'connectedlinename':{'type':Sequelize[_0x12c9('0x2')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x12c9('0x2')]},'context':{'type':Sequelize[_0x12c9('0x2')]},'exten':{'type':Sequelize[_0x12c9('0x2')]},'priority':{'type':Sequelize[_0x12c9('0x2')]},'destchannel':{'type':Sequelize[_0x12c9('0x2')]},'destchannelstate':{'type':Sequelize[_0x12c9('0x4')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x12c9('0x2')]},'destcalleridname':{'type':Sequelize[_0x12c9('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x12c9('0x2')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x12c9('0x2')]},'destuniqueid':{'type':Sequelize['STRING']},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x12c9('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0x12c9('0x2')]},'transfer':{'type':Sequelize[_0x12c9('0x5')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x12c9('0x2')],'comment':_0x12c9('0x6')},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize[_0x12c9('0x2')]},'agententerreason':{'type':Sequelize[_0x12c9('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9158=['BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports','STRING','DATE','INTEGER'];(function(_0xb85d6f,_0x2a6d08){var _0x20bac9=function(_0x19f4f2){while(--_0x19f4f2){_0xb85d6f['push'](_0xb85d6f['shift']());}};_0x20bac9(++_0x2a6d08);}(_0x9158,0x16e));var _0x8915=function(_0x3953fe,_0x5d0a7d){_0x3953fe=_0x3953fe-0x0;var _0x272cba=_0x9158[_0x3953fe];return _0x272cba;};'use strict';var Sequelize=require(_0x8915('0x0'));module[_0x8915('0x1')]={'type':{'type':Sequelize[_0x8915('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x8915('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x8915('0x2')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0x8915('0x3')]},'agentconnectAt':{'type':Sequelize[_0x8915('0x3')]},'agentcompleteAt':{'type':Sequelize[_0x8915('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0x8915('0x3')]},'agentdumpAt':{'type':Sequelize[_0x8915('0x3')]},'holdtime':{'type':Sequelize[_0x8915('0x4')]},'agentcomplete':{'type':Sequelize[_0x8915('0x5')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x8915('0x5')],'defaultValue':![]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'talktime':{'type':Sequelize[_0x8915('0x4')]},'agentacw':{'type':Sequelize[_0x8915('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x8915('0x4')]},'reason':{'type':Sequelize[_0x8915('0x2')]},'lastevent':{'type':Sequelize[_0x8915('0x2')]},'channel':{'type':Sequelize[_0x8915('0x2')]},'channelstate':{'type':Sequelize[_0x8915('0x4')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x8915('0x2')]},'language':{'type':Sequelize[_0x8915('0x2')]},'accountcode':{'type':Sequelize[_0x8915('0x2')]},'context':{'type':Sequelize[_0x8915('0x2')]},'exten':{'type':Sequelize[_0x8915('0x2')]},'priority':{'type':Sequelize[_0x8915('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x8915('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0x8915('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0x8915('0x2')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x8915('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0x8915('0x2')]},'destcontext':{'type':Sequelize[_0x8915('0x2')]},'destexten':{'type':Sequelize[_0x8915('0x2')]},'destpriority':{'type':Sequelize[_0x8915('0x2')]},'destuniqueid':{'type':Sequelize[_0x8915('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x8915('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0x8915('0x2')]},'transfer':{'type':Sequelize[_0x8915('0x5')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x8915('0x2')],'comment':_0x8915('0x6')},'transferexten':{'type':Sequelize[_0x8915('0x2')]},'transferuniqueid':{'type':Sequelize['STRING']},'agententerreason':{'type':Sequelize[_0x8915('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 8a8047b..93c338b 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(_0x9c2427,_0x17c865){var _0x51984f=function(_0x177af6){while(--_0x177af6){_0x9c2427['push'](_0x9c2427['shift']());}};_0x51984f(++_0x17c865);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xa9e0[_0x6c993a];return _0x27f547;};'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(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xa9e0[_0x2763f2];return _0x3ef471;};'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 bad8e5f..4b73e09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce50=['report_agent','uniqueid','util','../../config/logger','api','moment','bluebird','rimraf','exports','define'];(function(_0xc3330c,_0x43581c){var _0x4bc9fc=function(_0x1bb616){while(--_0x1bb616){_0xc3330c['push'](_0xc3330c['shift']());}};_0x4bc9fc(++_0x43581c);}(_0xce50,0x1d8));var _0x0ce5=function(_0x1ccdf7,_0x215d5a){_0x1ccdf7=_0x1ccdf7-0x0;var _0x52a0ae=_0xce50[_0x1ccdf7];return _0x52a0ae;};'use strict';var _=require('lodash');var util=require(_0x0ce5('0x0'));var logger=require(_0x0ce5('0x1'))(_0x0ce5('0x2'));var moment=require(_0x0ce5('0x3'));var BPromise=require(_0x0ce5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x0ce5('0x5'));var config=require('../../config/environment');var attributes=require('./voiceAgentReport.attributes');module[_0x0ce5('0x6')]=function(_0x42fadd,_0x69892c){return _0x42fadd[_0x0ce5('0x7')]('VoiceAgentReport',attributes,{'tableName':_0x0ce5('0x8'),'paranoid':![],'indexes':[{'fields':[_0x0ce5('0x9'),'destuniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x39d9=['path','../../config/environment','./voiceAgentReport.attributes','exports','VoiceAgentReport','report_agent','uniqueid','destuniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x184b30,_0x87f8ea){var _0x4655be=function(_0x532a42){while(--_0x532a42){_0x184b30['push'](_0x184b30['shift']());}};_0x4655be(++_0x87f8ea);}(_0x39d9,0x17f));var _0x939d=function(_0x193285,_0x2b4c2e){_0x193285=_0x193285-0x0;var _0x41ddf9=_0x39d9[_0x193285];return _0x41ddf9;};'use strict';var _=require(_0x939d('0x0'));var util=require(_0x939d('0x1'));var logger=require(_0x939d('0x2'))(_0x939d('0x3'));var moment=require(_0x939d('0x4'));var BPromise=require(_0x939d('0x5'));var rp=require(_0x939d('0x6'));var fs=require('fs');var path=require(_0x939d('0x7'));var rimraf=require('rimraf');var config=require(_0x939d('0x8'));var attributes=require(_0x939d('0x9'));module[_0x939d('0xa')]=function(_0x48b22f,_0x41c89f){return _0x48b22f['define'](_0x939d('0xb'),attributes,{'tableName':_0x939d('0xc'),'paranoid':![],'indexes':[{'fields':[_0x939d('0xd'),_0x939d('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index b453ce5..26e6bb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ecd=['catch','CreateVoiceAgentReport','VoiceAgentReport','create','body','options','raw','debug','UpdateVoiceAgentReport','where','attributes','limit','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceAgentReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','VoiceAgentReport,\x20%s,\x20%s','message','result'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0x0ecd,0x11c));var _0xd0ec=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0ecd[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xd0ec('0x0'));var util=require(_0xd0ec('0x1'));var moment=require('moment');var BPromise=require(_0xd0ec('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd0ec('0x3'))['db'];var utils=require(_0xd0ec('0x4'));var logger=require(_0xd0ec('0x5'))(_0xd0ec('0x6'));var config=require(_0xd0ec('0x7'));var jayson=require(_0xd0ec('0x8'));var client=jayson[_0xd0ec('0x9')][_0xd0ec('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x113b70,_0x1c767f,_0xb22f79){return new BPromise(function(_0x55545d,_0x403392){return client[_0xd0ec('0xb')](_0x113b70,_0xb22f79)[_0xd0ec('0xc')](function(_0x4e5f28){logger[_0xd0ec('0xd')]('VoiceAgentReport,\x20%s,\x20%s',_0x1c767f,'request\x20sent');logger['debug'](_0xd0ec('0xe'),_0x1c767f,_0xd0ec('0xf'),JSON[_0xd0ec('0x10')](_0x4e5f28));if(_0x4e5f28['error']){if(_0x4e5f28[_0xd0ec('0x11')][_0xd0ec('0x12')]===0x1f4){logger[_0xd0ec('0x11')](_0xd0ec('0x13'),_0x1c767f,_0x4e5f28[_0xd0ec('0x11')]['message']);return _0x403392(_0x4e5f28['error']['message']);}logger[_0xd0ec('0x11')](_0xd0ec('0x13'),_0x1c767f,_0x4e5f28['error'][_0xd0ec('0x14')]);return _0x55545d(_0x4e5f28[_0xd0ec('0x11')][_0xd0ec('0x14')]);}else{logger[_0xd0ec('0xd')](_0xd0ec('0x13'),_0x1c767f,'request\x20sent');_0x55545d(_0x4e5f28[_0xd0ec('0x15')][_0xd0ec('0x14')]);}})[_0xd0ec('0x16')](function(_0x4d876e){logger[_0xd0ec('0x11')](_0xd0ec('0x13'),_0x1c767f,_0x4d876e);_0x403392(_0x4d876e);});});}exports[_0xd0ec('0x17')]=function(_0x52576c){var _0x794f6a=this;return new Promise(function(_0x34f518,_0x553052){return db[_0xd0ec('0x18')][_0xd0ec('0x19')](_0x52576c[_0xd0ec('0x1a')],{'raw':_0x52576c['options']?_0x52576c[_0xd0ec('0x1b')][_0xd0ec('0x1c')]===undefined?!![]:![]:!![]})[_0xd0ec('0xc')](function(_0x35cc35){logger['info'](_0xd0ec('0x17'),_0x52576c);logger[_0xd0ec('0x1d')](_0xd0ec('0x17'),_0x52576c,JSON[_0xd0ec('0x10')](_0x35cc35));_0x34f518(_0x35cc35);})[_0xd0ec('0x16')](function(_0x22a018){logger[_0xd0ec('0x11')]('CreateVoiceAgentReport',_0x22a018[_0xd0ec('0x14')],_0x52576c);_0x553052(_0x794f6a[_0xd0ec('0x11')](0x1f4,_0x22a018[_0xd0ec('0x14')]));});});};exports[_0xd0ec('0x1e')]=function(_0x26e16b){var _0x5e2e97=this;return new Promise(function(_0x2d5a86,_0x36df58){return db[_0xd0ec('0x18')]['update'](_0x26e16b[_0xd0ec('0x1a')],{'raw':_0x26e16b[_0xd0ec('0x1b')]?_0x26e16b[_0xd0ec('0x1b')][_0xd0ec('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x26e16b[_0xd0ec('0x1b')]?_0x26e16b[_0xd0ec('0x1b')][_0xd0ec('0x1f')]||null:null,'attributes':_0x26e16b['options']?_0x26e16b[_0xd0ec('0x1b')][_0xd0ec('0x20')]||null:null,'limit':_0x26e16b[_0xd0ec('0x1b')]?_0x26e16b[_0xd0ec('0x1b')][_0xd0ec('0x21')]||null:null})[_0xd0ec('0xc')](function(_0x41a85b){logger[_0xd0ec('0xd')](_0xd0ec('0x1e'),_0x26e16b);logger[_0xd0ec('0x1d')](_0xd0ec('0x1e'),_0x26e16b,JSON[_0xd0ec('0x10')](_0x41a85b));_0x2d5a86(_0x41a85b);})[_0xd0ec('0x16')](function(_0x370077){logger[_0xd0ec('0x11')](_0xd0ec('0x1e'),_0x370077[_0xd0ec('0x14')],_0x26e16b);_0x36df58(_0x5e2e97[_0xd0ec('0x11')](0x1f4,_0x370077[_0xd0ec('0x14')]));});});};
\ No newline at end of file
+var _0x7f03=['VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateVoiceAgentReport','VoiceAgentReport','create','body','raw','update','options','where','attributes','limit','UpdateVoiceAgentReport','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','http','then','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x6a0266,_0x1552d6){var _0x309e00=function(_0x17c1d1){while(--_0x17c1d1){_0x6a0266['push'](_0x6a0266['shift']());}};_0x309e00(++_0x1552d6);}(_0x7f03,0x191));var _0x37f0=function(_0x2d09cb,_0x534602){_0x2d09cb=_0x2d09cb-0x0;var _0x3ac390=_0x7f03[_0x2d09cb];return _0x3ac390;};'use strict';var _=require(_0x37f0('0x0'));var util=require(_0x37f0('0x1'));var moment=require(_0x37f0('0x2'));var BPromise=require('bluebird');var rs=require(_0x37f0('0x3'));var fs=require('fs');var Redis=require(_0x37f0('0x4'));var db=require(_0x37f0('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x37f0('0x6'))(_0x37f0('0x7'));var config=require('../../config/environment');var jayson=require(_0x37f0('0x8'));var client=jayson['client'][_0x37f0('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2605c6,_0x3355cc,_0x57e48c){return new BPromise(function(_0x2bf68c,_0x593143){return client['request'](_0x2605c6,_0x57e48c)[_0x37f0('0xa')](function(_0x253475){logger[_0x37f0('0xb')](_0x37f0('0xc'),_0x3355cc,_0x37f0('0xd'));logger[_0x37f0('0xe')](_0x37f0('0xf'),_0x3355cc,'request\x20sent',JSON[_0x37f0('0x10')](_0x253475));if(_0x253475[_0x37f0('0x11')]){if(_0x253475[_0x37f0('0x11')]['code']===0x1f4){logger[_0x37f0('0x11')]('VoiceAgentReport,\x20%s,\x20%s',_0x3355cc,_0x253475[_0x37f0('0x11')][_0x37f0('0x12')]);return _0x593143(_0x253475['error'][_0x37f0('0x12')]);}logger[_0x37f0('0x11')](_0x37f0('0xc'),_0x3355cc,_0x253475[_0x37f0('0x11')][_0x37f0('0x12')]);return _0x2bf68c(_0x253475[_0x37f0('0x11')]['message']);}else{logger['info'](_0x37f0('0xc'),_0x3355cc,_0x37f0('0xd'));_0x2bf68c(_0x253475[_0x37f0('0x13')][_0x37f0('0x12')]);}})[_0x37f0('0x14')](function(_0xac64df){logger[_0x37f0('0x11')](_0x37f0('0xc'),_0x3355cc,_0xac64df);_0x593143(_0xac64df);});});}exports[_0x37f0('0x15')]=function(_0x3d14e9){var _0x3045d7=this;return new Promise(function(_0x32e246,_0x37fbc0){return db[_0x37f0('0x16')][_0x37f0('0x17')](_0x3d14e9[_0x37f0('0x18')],{'raw':_0x3d14e9['options']?_0x3d14e9['options'][_0x37f0('0x19')]===undefined?!![]:![]:!![]})[_0x37f0('0xa')](function(_0xe7db48){logger[_0x37f0('0xb')]('CreateVoiceAgentReport',_0x3d14e9);logger['debug'](_0x37f0('0x15'),_0x3d14e9,JSON[_0x37f0('0x10')](_0xe7db48));_0x32e246(_0xe7db48);})[_0x37f0('0x14')](function(_0x23819a){logger[_0x37f0('0x11')](_0x37f0('0x15'),_0x23819a[_0x37f0('0x12')],_0x3d14e9);_0x37fbc0(_0x3045d7[_0x37f0('0x11')](0x1f4,_0x23819a['message']));});});};exports['UpdateVoiceAgentReport']=function(_0x27fd38){var _0x34a05a=this;return new Promise(function(_0xdc5849,_0x3d725f){return db[_0x37f0('0x16')][_0x37f0('0x1a')](_0x27fd38[_0x37f0('0x18')],{'raw':_0x27fd38[_0x37f0('0x1b')]?_0x27fd38[_0x37f0('0x1b')][_0x37f0('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x27fd38[_0x37f0('0x1b')]?_0x27fd38[_0x37f0('0x1b')][_0x37f0('0x1c')]||null:null,'attributes':_0x27fd38[_0x37f0('0x1b')]?_0x27fd38[_0x37f0('0x1b')][_0x37f0('0x1d')]||null:null,'limit':_0x27fd38['options']?_0x27fd38[_0x37f0('0x1b')][_0x37f0('0x1e')]||null:null})['then'](function(_0x50d926){logger['info'](_0x37f0('0x1f'),_0x27fd38);logger[_0x37f0('0xe')]('UpdateVoiceAgentReport',_0x27fd38,JSON[_0x37f0('0x10')](_0x50d926));_0xdc5849(_0x50d926);})[_0x37f0('0x14')](function(_0x1fc0ed){logger[_0x37f0('0x11')]('UpdateVoiceAgentReport',_0x1fc0ed[_0x37f0('0x12')],_0x27fd38);_0x3d725f(_0x34a05a[_0x37f0('0x11')](0x1f4,_0x1fc0ed[_0x37f0('0x12')]));});});};
\ No newline at end of file
index d38897d..c331197 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fda=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','delete','destroy','multer','path','connect-timeout','express'];(function(_0x43b563,_0x5edacc){var _0x5e5569=function(_0x483ab8){while(--_0x483ab8){_0x43b563['push'](_0x43b563['shift']());}};_0x5e5569(++_0x5edacc);}(_0x0fda,0x1a0));var _0xa0fd=function(_0x449e23,_0x53cf4b){_0x449e23=_0x449e23-0x0;var _0x4f44a8=_0x0fda[_0x449e23];return _0x4f44a8;};'use strict';var multer=require(_0xa0fd('0x0'));var util=require('util');var path=require(_0xa0fd('0x1'));var timeout=require(_0xa0fd('0x2'));var express=require(_0xa0fd('0x3'));var router=express[_0xa0fd('0x4')]();var fs_extra=require(_0xa0fd('0x5'));var auth=require(_0xa0fd('0x6'));var interaction=require(_0xa0fd('0x7'));var config=require('../../config/environment');var controller=require('./voiceCallReport.controller');router[_0xa0fd('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xa0fd('0x8')](_0xa0fd('0x9'),auth[_0xa0fd('0xa')](),controller[_0xa0fd('0xb')]);router['get'](_0xa0fd('0xc'),auth[_0xa0fd('0xa')](),controller[_0xa0fd('0xd')]);router[_0xa0fd('0xe')]('/',auth['isAuthenticated'](),controller[_0xa0fd('0xf')]);router[_0xa0fd('0x10')](_0xa0fd('0xc'),auth['isAuthenticated'](),controller[_0xa0fd('0x11')]);router[_0xa0fd('0x12')](_0xa0fd('0xc'),auth[_0xa0fd('0xa')](),controller[_0xa0fd('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x0309=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','index','get','isAuthenticated','/:id','post','create','update','delete','destroy','multer','path','express'];(function(_0x300522,_0x4562b4){var _0x536ff5=function(_0x3158b4){while(--_0x3158b4){_0x300522['push'](_0x300522['shift']());}};_0x536ff5(++_0x4562b4);}(_0x0309,0x165));var _0x9030=function(_0x497621,_0x406008){_0x497621=_0x497621-0x0;var _0x4a3d26=_0x0309[_0x497621];return _0x4a3d26;};'use strict';var multer=require(_0x9030('0x0'));var util=require('util');var path=require(_0x9030('0x1'));var timeout=require('connect-timeout');var express=require(_0x9030('0x2'));var router=express[_0x9030('0x3')]();var fs_extra=require(_0x9030('0x4'));var auth=require(_0x9030('0x5'));var interaction=require(_0x9030('0x6'));var config=require(_0x9030('0x7'));var controller=require(_0x9030('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x9030('0x9')]);router[_0x9030('0xa')]('/describe',auth[_0x9030('0xb')](),controller['describe']);router[_0x9030('0xa')](_0x9030('0xc'),auth[_0x9030('0xb')](),controller['show']);router[_0x9030('0xd')]('/',auth[_0x9030('0xb')](),controller[_0x9030('0xe')]);router['put'](_0x9030('0xc'),auth[_0x9030('0xb')](),controller[_0x9030('0xf')]);router[_0x9030('0x10')](_0x9030('0xc'),auth[_0x9030('0xb')](),controller[_0x9030('0x11')]);module['exports']=router;
\ No newline at end of file
index 5b47645..dae02b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1117=['DATE','INTEGER','sequelize','STRING','inbound','internal','outbound','inbound-fax','outbound-fax','dialer','TEXT'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x1117,0x18e));var _0x7111=function(_0x1f530d,_0x18a19e){_0x1f530d=_0x1f530d-0x0;var _0x22103f=_0x1117[_0x1f530d];return _0x22103f;};'use strict';var Sequelize=require(_0x7111('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x7111('0x1')]},'type':{'type':Sequelize['ENUM'](_0x7111('0x2'),_0x7111('0x3'),_0x7111('0x4'),_0x7111('0x5'),_0x7111('0x6'),_0x7111('0x7'))},'tag':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x7111('0x1')]},'source':{'type':Sequelize[_0x7111('0x1')]},'destination':{'type':Sequelize[_0x7111('0x1')]},'destinationcontext':{'type':Sequelize[_0x7111('0x1')]},'callerid':{'type':Sequelize[_0x7111('0x1')]},'channel':{'type':Sequelize[_0x7111('0x1')]},'destinationchannel':{'type':Sequelize['STRING']},'lastapplication':{'type':Sequelize[_0x7111('0x1')]},'lastdata':{'type':Sequelize[_0x7111('0x8')]},'starttime':{'type':Sequelize[_0x7111('0x9')]},'systemanswertime':{'type':Sequelize[_0x7111('0x9')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize['DATE']},'duration':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize[_0x7111('0xa')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0x7111('0x1')]},'userfield':{'type':Sequelize[_0x7111('0x1')]},'userDisposition':{'type':Sequelize[_0x7111('0x1')]},'userSecondDisposition':{'type':Sequelize[_0x7111('0x1')]},'userThirdDisposition':{'type':Sequelize[_0x7111('0x1')]},'note':{'type':Sequelize[_0x7111('0x1')]},'prefix':{'type':Sequelize['STRING']},'routeid':{'type':Sequelize[_0x7111('0xa')]},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x1a76=['ENUM','inbound','internal','inbound-fax','dialer','DATE','INTEGER','exports','STRING'];(function(_0x39336c,_0x5e008d){var _0x3b93b4=function(_0x25c218){while(--_0x25c218){_0x39336c['push'](_0x39336c['shift']());}};_0x3b93b4(++_0x5e008d);}(_0x1a76,0xf1));var _0x61a7=function(_0x2d8434,_0x43d781){_0x2d8434=_0x2d8434-0x0;var _0x26b9e4=_0x1a76[_0x2d8434];return _0x26b9e4;};'use strict';var Sequelize=require('sequelize');module[_0x61a7('0x0')]={'uniqueid':{'type':Sequelize[_0x61a7('0x1')]},'type':{'type':Sequelize[_0x61a7('0x2')](_0x61a7('0x3'),_0x61a7('0x4'),'outbound',_0x61a7('0x5'),'outbound-fax',_0x61a7('0x6'))},'tag':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x61a7('0x1')]},'source':{'type':Sequelize['STRING']},'destination':{'type':Sequelize[_0x61a7('0x1')]},'destinationcontext':{'type':Sequelize[_0x61a7('0x1')]},'callerid':{'type':Sequelize[_0x61a7('0x1')]},'channel':{'type':Sequelize['STRING']},'destinationchannel':{'type':Sequelize[_0x61a7('0x1')]},'lastapplication':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize[_0x61a7('0x7')]},'systemanswertime':{'type':Sequelize[_0x61a7('0x7')]},'answertime':{'type':Sequelize[_0x61a7('0x7')]},'endtime':{'type':Sequelize[_0x61a7('0x7')]},'duration':{'type':Sequelize[_0x61a7('0x8')]},'billableseconds':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x61a7('0x8')],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0x61a7('0x1')]},'userfield':{'type':Sequelize[_0x61a7('0x1')]},'userDisposition':{'type':Sequelize[_0x61a7('0x1')]},'userSecondDisposition':{'type':Sequelize[_0x61a7('0x1')]},'userThirdDisposition':{'type':Sequelize[_0x61a7('0x1')]},'note':{'type':Sequelize[_0x61a7('0x1')]},'prefix':{'type':Sequelize[_0x61a7('0x1')]},'routeid':{'type':Sequelize['INTEGER']},'sipcallid':{'type':Sequelize[_0x61a7('0x1')]}};
\ No newline at end of file
index c16829c..6c3c79d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['filter','VIRTUAL','merge','options','includeAll','include','fullname','User','findAll','rows','show','rawAttributes','length','find','catch','body','params','describe','uniqueid','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','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','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','stack','name','send','index','map','VoiceCallReport','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters'];(function(_0x1dd532,_0x36e81c){var _0x3732aa=function(_0x19d50a){while(--_0x19d50a){_0x1dd532['push'](_0x1dd532['shift']());}};_0x3732aa(++_0x36e81c);}(_0xadb5,0xad));var _0x5adb=function(_0x56c9aa,_0x452b3b){_0x56c9aa=_0x56c9aa-0x0;var _0x34c4d8=_0xadb5[_0x56c9aa];return _0x34c4d8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5adb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5adb('0x1'));var rp=require(_0x5adb('0x2'));var moment=require(_0x5adb('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5adb('0x4'));var util=require(_0x5adb('0x5'));var path=require(_0x5adb('0x6'));var sox=require('sox');var csv=require(_0x5adb('0x7'));var ejs=require(_0x5adb('0x8'));var fs=require('fs');var fs_extra=require(_0x5adb('0x9'));var _=require(_0x5adb('0xa'));var squel=require(_0x5adb('0xb'));var crypto=require(_0x5adb('0xc'));var jsforce=require(_0x5adb('0xd'));var deskjs=require(_0x5adb('0xe'));var toCsv=require(_0x5adb('0x7'));var querystring=require(_0x5adb('0xf'));var Papa=require(_0x5adb('0x10'));var Redis=require(_0x5adb('0x11'));var authService=require(_0x5adb('0x12'));var qs=require(_0x5adb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5adb('0x14'))(_0x5adb('0x15'));var utils=require(_0x5adb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x5adb('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a0b70,_0x5433bf){_0x5433bf=_0x5433bf||0xcc;return function(_0x8cfcc6){if(_0x8cfcc6){return _0x2a0b70[_0x5adb('0x18')](_0x5433bf);}return _0x2a0b70[_0x5adb('0x19')](_0x5433bf)['end']();};}function respondWithResult(_0x2a545b,_0x34af2c){_0x34af2c=_0x34af2c||0xc8;return function(_0xf82f72){if(_0xf82f72){return _0x2a545b['status'](_0x34af2c)[_0x5adb('0x1a')](_0xf82f72);}};}function respondWithFilteredResult(_0x518823,_0x367d82){return function(_0x42a482){if(_0x42a482){var _0x30614e=typeof _0x367d82[_0x5adb('0x1b')]===_0x5adb('0x1c')&&typeof _0x367d82[_0x5adb('0x1d')]===_0x5adb('0x1c');var _0x42f4c6=_0x42a482[_0x5adb('0x1e')];var _0x529b65=_0x30614e?0x0:_0x367d82[_0x5adb('0x1b')];var _0x5de028=_0x30614e?_0x42a482[_0x5adb('0x1e')]:_0x367d82['offset']+_0x367d82[_0x5adb('0x1d')];var _0x50e84f;if(_0x5de028>=_0x42f4c6){_0x5de028=_0x42f4c6;_0x50e84f=0xc8;}else{_0x50e84f=0xce;}_0x518823['status'](_0x50e84f);return _0x518823[_0x5adb('0x1f')](_0x5adb('0x20'),_0x529b65+'-'+_0x5de028+'/'+_0x42f4c6)[_0x5adb('0x1a')](_0x42a482);}return null;};}function patchUpdates(_0x1fd4a7){return function(_0x99bc6c){try{jsonpatch['apply'](_0x99bc6c,_0x1fd4a7,!![]);}catch(_0x3255b3){return BPromise['reject'](_0x3255b3);}return _0x99bc6c['save']();};}function saveUpdates(_0x3754cc,_0x379b33){return function(_0x1a38d3){if(_0x1a38d3){return _0x1a38d3[_0x5adb('0x21')](_0x3754cc)[_0x5adb('0x22')](function(_0x413911){return _0x413911;});}return null;};}function removeEntity(_0xfd9bb9,_0x4ca150){return function(_0x4b1957){if(_0x4b1957){return _0x4b1957[_0x5adb('0x23')]()[_0x5adb('0x22')](function(){_0xfd9bb9[_0x5adb('0x19')](0xcc)[_0x5adb('0x24')]();});}};}function handleEntityNotFound(_0x49f203,_0x2fee18){return function(_0x2e1e63){if(!_0x2e1e63){_0x49f203['sendStatus'](0x194);}return _0x2e1e63;};}function handleError(_0x1feecf,_0x1ded9f){_0x1ded9f=_0x1ded9f||0x1f4;return function(_0x1a0acd){logger['error'](_0x1a0acd[_0x5adb('0x25')]);if(_0x1a0acd[_0x5adb('0x26')]){delete _0x1a0acd[_0x5adb('0x26')];}_0x1feecf[_0x5adb('0x19')](_0x1ded9f)[_0x5adb('0x27')](_0x1a0acd);};}exports[_0x5adb('0x28')]=function(_0x4a5d46,_0x49992e){var _0x5d457e={},_0x39bddd={},_0x1eac55={'count':0x0,'rows':[]};var _0x60a672=_[_0x5adb('0x29')](db[_0x5adb('0x2a')]['rawAttributes'],function(_0x11ec2a){return{'name':_0x11ec2a[_0x5adb('0x2b')],'type':_0x11ec2a[_0x5adb('0x2c')][_0x5adb('0x2d')]};});_0x39bddd[_0x5adb('0x2e')]=_[_0x5adb('0x29')](_0x60a672,_0x5adb('0x26'));_0x39bddd[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x4a5d46[_0x5adb('0x2f')]);_0x39bddd['filters']=_[_0x5adb('0x31')](_0x39bddd['model'],_0x39bddd[_0x5adb('0x2f')]);_0x5d457e[_0x5adb('0x32')]=_['intersection'](_0x39bddd[_0x5adb('0x2e')],qs[_0x5adb('0x33')](_0x4a5d46[_0x5adb('0x2f')]['fields']));_0x5d457e[_0x5adb('0x32')]=_0x5d457e[_0x5adb('0x32')]['length']?_0x5d457e['attributes']:_0x39bddd[_0x5adb('0x2e')];if(!_0x4a5d46['query'][_0x5adb('0x34')](_0x5adb('0x35'))){_0x5d457e[_0x5adb('0x1d')]=qs[_0x5adb('0x1d')](_0x4a5d46[_0x5adb('0x2f')]['limit']);_0x5d457e[_0x5adb('0x1b')]=qs[_0x5adb('0x1b')](_0x4a5d46[_0x5adb('0x2f')]['offset']);}_0x5d457e['order']=qs[_0x5adb('0x36')](_0x4a5d46[_0x5adb('0x2f')]['sort']);_0x5d457e[_0x5adb('0x37')]=qs['filters'](_[_0x5adb('0x38')](_0x4a5d46['query'],_0x39bddd[_0x5adb('0x39')]),_0x60a672);if(_0x4a5d46['query'][_0x5adb('0x3a')]){_0x5d457e[_0x5adb('0x37')]=_['merge'](_0x5d457e[_0x5adb('0x37')],{'$or':_['map'](_0x60a672,function(_0xadbe37){if(_0xadbe37[_0x5adb('0x2c')]!==_0x5adb('0x3b')){var _0x50edd1={};_0x50edd1[_0xadbe37[_0x5adb('0x26')]]={'$like':'%'+_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3a')]+'%'};return _0x50edd1;}})});}_0x5d457e=_[_0x5adb('0x3c')]({},_0x5d457e,_0x4a5d46[_0x5adb('0x3d')]);var _0x52d74f={'where':_0x5d457e['where']};return db['VoiceCallReport']['count'](_0x52d74f)[_0x5adb('0x22')](function(_0x2fbe14){_0x1eac55[_0x5adb('0x1e')]=_0x2fbe14;if(_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0x5d457e[_0x5adb('0x3f')]=[{'attributes':['id',_0x5adb('0x26'),_0x5adb('0x40'),'alias'],'model':db['User'],'as':_0x5adb('0x41')}];}return db['VoiceCallReport'][_0x5adb('0x42')](_0x5d457e);})[_0x5adb('0x22')](function(_0x299746){_0x1eac55[_0x5adb('0x43')]=_0x299746;return _0x1eac55;})[_0x5adb('0x22')](respondWithFilteredResult(_0x49992e,_0x5d457e))['catch'](handleError(_0x49992e,null));};exports[_0x5adb('0x44')]=function(_0x565b03,_0x508690){var _0x4160ad={'raw':!![],'where':{'id':_0x565b03['params']['id']}},_0x1a256c={};_0x1a256c[_0x5adb('0x2e')]=_[_0x5adb('0x30')](db[_0x5adb('0x2a')][_0x5adb('0x45')]);_0x1a256c[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x565b03[_0x5adb('0x2f')]);_0x1a256c['filters']=_['intersection'](_0x1a256c[_0x5adb('0x2e')],_0x1a256c[_0x5adb('0x2f')]);_0x4160ad[_0x5adb('0x32')]=_[_0x5adb('0x31')](_0x1a256c['model'],qs['fields'](_0x565b03[_0x5adb('0x2f')][_0x5adb('0x33')]));_0x4160ad[_0x5adb('0x32')]=_0x4160ad[_0x5adb('0x32')][_0x5adb('0x46')]?_0x4160ad['attributes']:_0x1a256c[_0x5adb('0x2e')];if(_0x565b03[_0x5adb('0x2f')]['includeAll']){_0x4160ad[_0x5adb('0x3f')]=[{'all':!![]}];}_0x4160ad=_[_0x5adb('0x3c')]({},_0x4160ad,_0x565b03[_0x5adb('0x3d')]);return db[_0x5adb('0x2a')][_0x5adb('0x47')](_0x4160ad)[_0x5adb('0x22')](handleEntityNotFound(_0x508690,null))[_0x5adb('0x22')](respondWithResult(_0x508690,null))[_0x5adb('0x48')](handleError(_0x508690,null));};exports['create']=function(_0x3a925b,_0x57dc8b){return db['VoiceCallReport']['create'](_0x3a925b[_0x5adb('0x49')],{})[_0x5adb('0x22')](respondWithResult(_0x57dc8b,0xc9))[_0x5adb('0x48')](handleError(_0x57dc8b,null));};exports['destroy']=function(_0x2ad69d,_0x5cbab5){return db[_0x5adb('0x2a')][_0x5adb('0x47')]({'where':{'id':_0x2ad69d[_0x5adb('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5cbab5,null))[_0x5adb('0x22')](removeEntity(_0x5cbab5,null))['catch'](handleError(_0x5cbab5,null));};exports[_0x5adb('0x4b')]=function(_0x6dc067,_0x55c535){return db[_0x5adb('0x2a')][_0x5adb('0x4b')]()[_0x5adb('0x22')](respondWithResult(_0x55c535,null))[_0x5adb('0x48')](handleError(_0x55c535,null));};exports[_0x5adb('0x21')]=function(_0x4cb36c,_0x36b847){if(_0x4cb36c[_0x5adb('0x49')][_0x5adb('0x4c')]){delete _0x4cb36c[_0x5adb('0x49')]['uniqueid'];}return db[_0x5adb('0x2a')][_0x5adb('0x47')]({'where':{'uniqueid':_0x4cb36c[_0x5adb('0x4a')]['id'],'UserId':{'$or':[null,_0x4cb36c['user']['id']]}}})[_0x5adb('0x22')](handleEntityNotFound(_0x36b847,null))[_0x5adb('0x22')](saveUpdates(_0x4cb36c[_0x5adb('0x49')],null))[_0x5adb('0x22')](respondWithResult(_0x36b847,null))['catch'](handleError(_0x36b847,null));};
\ No newline at end of file
+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(_0x1d633f,_0xbc2fda){_0x1d633f=_0x1d633f-0x0;var _0xf24c8a=_0x2032[_0x1d633f];return _0xf24c8a;};'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
index e102f25..3392257 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31ff=['VoiceCallReport','report_call','uniqueid','lodash','util','../../config/logger','api','request-promise','path','rimraf','./voiceCallReport.attributes','exports','define'];(function(_0x20bc10,_0x35bed9){var _0x3bd5ce=function(_0x8d1e4c){while(--_0x8d1e4c){_0x20bc10['push'](_0x20bc10['shift']());}};_0x3bd5ce(++_0x35bed9);}(_0x31ff,0xd3));var _0xf31f=function(_0x596944,_0x30c792){_0x596944=_0x596944-0x0;var _0x4a32b2=_0x31ff[_0x596944];return _0x4a32b2;};'use strict';var _=require(_0xf31f('0x0'));var util=require(_0xf31f('0x1'));var logger=require(_0xf31f('0x2'))(_0xf31f('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xf31f('0x4'));var fs=require('fs');var path=require(_0xf31f('0x5'));var rimraf=require(_0xf31f('0x6'));var config=require('../../config/environment');var attributes=require(_0xf31f('0x7'));module[_0xf31f('0x8')]=function(_0x35b9a5,_0x432c1b){return _0x35b9a5[_0xf31f('0x9')](_0xf31f('0xa'),attributes,{'tableName':_0xf31f('0xb'),'paranoid':![],'indexes':[{'fields':[_0xf31f('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x12ee=['api','bluebird','request-promise','path','rimraf','exports','define','report_call','uniqueid','../../config/logger'];(function(_0x236572,_0x5eec3f){var _0x479a92=function(_0x3401d8){while(--_0x3401d8){_0x236572['push'](_0x236572['shift']());}};_0x479a92(++_0x5eec3f);}(_0x12ee,0x1a3));var _0xe12e=function(_0x343a5a,_0x55f1a1){_0x343a5a=_0x343a5a-0x0;var _0x323b5f=_0x12ee[_0x343a5a];return _0x323b5f;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe12e('0x0'))(_0xe12e('0x1'));var moment=require('moment');var BPromise=require(_0xe12e('0x2'));var rp=require(_0xe12e('0x3'));var fs=require('fs');var path=require(_0xe12e('0x4'));var rimraf=require(_0xe12e('0x5'));var config=require('../../config/environment');var attributes=require('./voiceCallReport.attributes');module[_0xe12e('0x6')]=function(_0x416f79,_0xf7140a){return _0x416f79[_0xe12e('0x7')]('VoiceCallReport',attributes,{'tableName':_0xe12e('0x8'),'paranoid':![],'indexes':[{'fields':[_0xe12e('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 625b7c6..2a02896 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ff5=['stringify','error','code','VoiceCallReport,\x20%s,\x20%s','message','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','raw','options','where','limit','include','model','attributes','map','create','body','CreateVoiceCallReport','UpdateVoiceCallReport','util','moment','bluebird','ioredis','../../config/logger','../../config/environment','jayson/promise','http','then','info','request\x20sent','debug'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1ff5,0xe2));var _0x51ff=function(_0x389631,_0x5dc8a8){_0x389631=_0x389631-0x0;var _0x11c3e5=_0x1ff5[_0x389631];return _0x11c3e5;};'use strict';var _=require('lodash');var util=require(_0x51ff('0x0'));var moment=require(_0x51ff('0x1'));var BPromise=require(_0x51ff('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x51ff('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x51ff('0x4'))('rpc');var config=require(_0x51ff('0x5'));var jayson=require(_0x51ff('0x6'));var client=jayson['client'][_0x51ff('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x3fa177,_0x59276c,_0x1acd25){return new BPromise(function(_0x218b3d,_0x323e54){return client['request'](_0x3fa177,_0x1acd25)[_0x51ff('0x8')](function(_0x1b880a){logger[_0x51ff('0x9')]('VoiceCallReport,\x20%s,\x20%s',_0x59276c,_0x51ff('0xa'));logger[_0x51ff('0xb')]('VoiceCallReport,\x20%s,\x20%s,\x20%s',_0x59276c,_0x51ff('0xa'),JSON[_0x51ff('0xc')](_0x1b880a));if(_0x1b880a[_0x51ff('0xd')]){if(_0x1b880a[_0x51ff('0xd')][_0x51ff('0xe')]===0x1f4){logger[_0x51ff('0xd')](_0x51ff('0xf'),_0x59276c,_0x1b880a['error'][_0x51ff('0x10')]);return _0x323e54(_0x1b880a[_0x51ff('0xd')][_0x51ff('0x10')]);}logger[_0x51ff('0xd')]('VoiceCallReport,\x20%s,\x20%s',_0x59276c,_0x1b880a[_0x51ff('0xd')][_0x51ff('0x10')]);return _0x218b3d(_0x1b880a['error'][_0x51ff('0x10')]);}else{logger[_0x51ff('0x9')](_0x51ff('0xf'),_0x59276c,_0x51ff('0xa'));_0x218b3d(_0x1b880a[_0x51ff('0x11')][_0x51ff('0x10')]);}})[_0x51ff('0x12')](function(_0x49c0f1){logger[_0x51ff('0xd')](_0x51ff('0xf'),_0x59276c,_0x49c0f1);_0x323e54(_0x49c0f1);});});}exports[_0x51ff('0x13')]=function(_0x1ac6d5){var _0x436366=this;return new Promise(function(_0x51626a,_0xf8897d){return db[_0x51ff('0x14')][_0x51ff('0x15')]({'raw':_0x1ac6d5['options']?_0x1ac6d5['options'][_0x51ff('0x16')]===undefined?!![]:![]:!![],'where':_0x1ac6d5[_0x51ff('0x17')]?_0x1ac6d5[_0x51ff('0x17')][_0x51ff('0x18')]||null:null,'attributes':_0x1ac6d5['options']?_0x1ac6d5[_0x51ff('0x17')]['attributes']||null:null,'limit':_0x1ac6d5[_0x51ff('0x17')]?_0x1ac6d5[_0x51ff('0x17')][_0x51ff('0x19')]||null:null,'include':_0x1ac6d5[_0x51ff('0x17')]?_0x1ac6d5[_0x51ff('0x17')][_0x51ff('0x1a')]?_['map'](_0x1ac6d5[_0x51ff('0x17')][_0x51ff('0x1a')],function(_0x33c880){return{'model':db[_0x33c880[_0x51ff('0x1b')]],'as':_0x33c880['as'],'attributes':_0x33c880[_0x51ff('0x1c')],'include':_0x33c880[_0x51ff('0x1a')]?_['map'](_0x33c880[_0x51ff('0x1a')],function(_0x49b8d7){return{'model':db[_0x49b8d7['model']],'as':_0x49b8d7['as'],'attributes':_0x49b8d7['attributes'],'include':_0x49b8d7['include']?_[_0x51ff('0x1d')](_0x49b8d7[_0x51ff('0x1a')],function(_0x1a5ca2){return{'model':db[_0x1a5ca2[_0x51ff('0x1b')]],'as':_0x1a5ca2['as'],'attributes':_0x1a5ca2[_0x51ff('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x51ff('0x8')](function(_0x1c0ba5){logger[_0x51ff('0x9')](_0x51ff('0x13'),_0x1ac6d5);logger[_0x51ff('0xb')](_0x51ff('0x13'),_0x1ac6d5,JSON[_0x51ff('0xc')](_0x1c0ba5));_0x51626a(_0x1c0ba5);})['catch'](function(_0x4a2ff1){logger[_0x51ff('0xd')](_0x51ff('0x13'),_0x4a2ff1['message'],_0x1ac6d5);_0xf8897d(_0x436366[_0x51ff('0xd')](0x1f4,_0x4a2ff1[_0x51ff('0x10')]));});});};exports['CreateVoiceCallReport']=function(_0x1bb3f8){var _0x154738=this;return new Promise(function(_0x5d37ea,_0x2d0452){return db[_0x51ff('0x14')][_0x51ff('0x1e')](_0x1bb3f8[_0x51ff('0x1f')],{'raw':_0x1bb3f8[_0x51ff('0x17')]?_0x1bb3f8[_0x51ff('0x17')][_0x51ff('0x16')]===undefined?!![]:![]:!![]})[_0x51ff('0x8')](function(_0x1fb9f9){logger[_0x51ff('0x9')](_0x51ff('0x20'),_0x1bb3f8);logger[_0x51ff('0xb')](_0x51ff('0x20'),_0x1bb3f8,JSON['stringify'](_0x1fb9f9));_0x5d37ea(_0x1fb9f9);})['catch'](function(_0x371635){logger[_0x51ff('0xd')](_0x51ff('0x20'),_0x371635[_0x51ff('0x10')],_0x1bb3f8);_0x2d0452(_0x154738['error'](0x1f4,_0x371635[_0x51ff('0x10')]));});});};exports['UpdateVoiceCallReport']=function(_0x54777d){var _0x2eb933=this;return new Promise(function(_0x126655,_0x50021d){return db[_0x51ff('0x14')]['update'](_0x54777d['body'],{'raw':_0x54777d['options']?_0x54777d['options'][_0x51ff('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x54777d['options']?_0x54777d[_0x51ff('0x17')][_0x51ff('0x18')]||null:null,'attributes':_0x54777d[_0x51ff('0x17')]?_0x54777d['options'][_0x51ff('0x1c')]||null:null,'limit':_0x54777d[_0x51ff('0x17')]?_0x54777d[_0x51ff('0x17')][_0x51ff('0x19')]||null:null})[_0x51ff('0x8')](function(_0x589da8){logger[_0x51ff('0x9')](_0x51ff('0x21'),_0x54777d);logger['debug']('UpdateVoiceCallReport',_0x54777d,JSON[_0x51ff('0xc')](_0x589da8));_0x126655(_0x589da8);})['catch'](function(_0xa7b8a6){logger['error']('UpdateVoiceCallReport',_0xa7b8a6[_0x51ff('0x10')],_0x54777d);_0x50021d(_0x2eb933[_0x51ff('0xd')](0x1f4,_0xa7b8a6[_0x51ff('0x10')]));});});};
\ No newline at end of file
+var _0x9728=['stringify','error','code','message','result','GetVoiceCallReport','options','raw','where','attributes','limit','include','map','model','catch','CreateVoiceCallReport','VoiceCallReport','body','UpdateVoiceCallReport','update','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s'];(function(_0x4997e6,_0x49fb00){var _0x4fa7d8=function(_0x3a8c05){while(--_0x3a8c05){_0x4997e6['push'](_0x4997e6['shift']());}};_0x4fa7d8(++_0x49fb00);}(_0x9728,0x13c));var _0x8972=function(_0x3645a3,_0x18f645){_0x3645a3=_0x3645a3-0x0;var _0xbf0d07=_0x9728[_0x3645a3];return _0xbf0d07;};'use strict';var _=require(_0x8972('0x0'));var util=require(_0x8972('0x1'));var moment=require('moment');var BPromise=require(_0x8972('0x2'));var rs=require(_0x8972('0x3'));var fs=require('fs');var Redis=require(_0x8972('0x4'));var db=require(_0x8972('0x5'))['db'];var utils=require(_0x8972('0x6'));var logger=require(_0x8972('0x7'))('rpc');var config=require(_0x8972('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x8972('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2089bc,_0x3d8703,_0x54780f){return new BPromise(function(_0x24197f,_0x1d80ce){return client[_0x8972('0xa')](_0x2089bc,_0x54780f)[_0x8972('0xb')](function(_0x22a668){logger[_0x8972('0xc')](_0x8972('0xd'),_0x3d8703,_0x8972('0xe'));logger[_0x8972('0xf')](_0x8972('0x10'),_0x3d8703,'request\x20sent',JSON[_0x8972('0x11')](_0x22a668));if(_0x22a668[_0x8972('0x12')]){if(_0x22a668['error'][_0x8972('0x13')]===0x1f4){logger[_0x8972('0x12')](_0x8972('0xd'),_0x3d8703,_0x22a668[_0x8972('0x12')][_0x8972('0x14')]);return _0x1d80ce(_0x22a668[_0x8972('0x12')]['message']);}logger[_0x8972('0x12')](_0x8972('0xd'),_0x3d8703,_0x22a668[_0x8972('0x12')][_0x8972('0x14')]);return _0x24197f(_0x22a668[_0x8972('0x12')]['message']);}else{logger[_0x8972('0xc')](_0x8972('0xd'),_0x3d8703,_0x8972('0xe'));_0x24197f(_0x22a668[_0x8972('0x15')][_0x8972('0x14')]);}})['catch'](function(_0x475304){logger[_0x8972('0x12')]('VoiceCallReport,\x20%s,\x20%s',_0x3d8703,_0x475304);_0x1d80ce(_0x475304);});});}exports[_0x8972('0x16')]=function(_0x2d6099){var _0x25018b=this;return new Promise(function(_0x6b8890,_0x3635bb){return db['VoiceCallReport']['findAll']({'raw':_0x2d6099[_0x8972('0x17')]?_0x2d6099['options'][_0x8972('0x18')]===undefined?!![]:![]:!![],'where':_0x2d6099[_0x8972('0x17')]?_0x2d6099[_0x8972('0x17')][_0x8972('0x19')]||null:null,'attributes':_0x2d6099['options']?_0x2d6099[_0x8972('0x17')][_0x8972('0x1a')]||null:null,'limit':_0x2d6099['options']?_0x2d6099['options'][_0x8972('0x1b')]||null:null,'include':_0x2d6099[_0x8972('0x17')]?_0x2d6099[_0x8972('0x17')][_0x8972('0x1c')]?_[_0x8972('0x1d')](_0x2d6099[_0x8972('0x17')][_0x8972('0x1c')],function(_0x2a7750){return{'model':db[_0x2a7750['model']],'as':_0x2a7750['as'],'attributes':_0x2a7750[_0x8972('0x1a')],'include':_0x2a7750[_0x8972('0x1c')]?_['map'](_0x2a7750[_0x8972('0x1c')],function(_0x354fd5){return{'model':db[_0x354fd5[_0x8972('0x1e')]],'as':_0x354fd5['as'],'attributes':_0x354fd5['attributes'],'include':_0x354fd5['include']?_[_0x8972('0x1d')](_0x354fd5[_0x8972('0x1c')],function(_0x1fe668){return{'model':db[_0x1fe668[_0x8972('0x1e')]],'as':_0x1fe668['as'],'attributes':_0x1fe668[_0x8972('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x8972('0xb')](function(_0x13d84d){logger['info'](_0x8972('0x16'),_0x2d6099);logger[_0x8972('0xf')](_0x8972('0x16'),_0x2d6099,JSON[_0x8972('0x11')](_0x13d84d));_0x6b8890(_0x13d84d);})[_0x8972('0x1f')](function(_0x16a949){logger[_0x8972('0x12')](_0x8972('0x16'),_0x16a949[_0x8972('0x14')],_0x2d6099);_0x3635bb(_0x25018b[_0x8972('0x12')](0x1f4,_0x16a949[_0x8972('0x14')]));});});};exports[_0x8972('0x20')]=function(_0x7a0174){var _0x12606a=this;return new Promise(function(_0x53d313,_0x50ecc2){return db[_0x8972('0x21')]['create'](_0x7a0174[_0x8972('0x22')],{'raw':_0x7a0174[_0x8972('0x17')]?_0x7a0174['options'][_0x8972('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x35da09){logger[_0x8972('0xc')](_0x8972('0x20'),_0x7a0174);logger[_0x8972('0xf')](_0x8972('0x20'),_0x7a0174,JSON[_0x8972('0x11')](_0x35da09));_0x53d313(_0x35da09);})[_0x8972('0x1f')](function(_0x182da5){logger[_0x8972('0x12')](_0x8972('0x20'),_0x182da5[_0x8972('0x14')],_0x7a0174);_0x50ecc2(_0x12606a[_0x8972('0x12')](0x1f4,_0x182da5[_0x8972('0x14')]));});});};exports[_0x8972('0x23')]=function(_0x24d1c9){var _0x49098c=this;return new Promise(function(_0x25cd1b,_0x3c3a6e){return db[_0x8972('0x21')][_0x8972('0x24')](_0x24d1c9['body'],{'raw':_0x24d1c9[_0x8972('0x17')]?_0x24d1c9[_0x8972('0x17')][_0x8972('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x24d1c9[_0x8972('0x17')]?_0x24d1c9[_0x8972('0x17')][_0x8972('0x19')]||null:null,'attributes':_0x24d1c9[_0x8972('0x17')]?_0x24d1c9[_0x8972('0x17')]['attributes']||null:null,'limit':_0x24d1c9[_0x8972('0x17')]?_0x24d1c9[_0x8972('0x17')][_0x8972('0x1b')]||null:null})['then'](function(_0x27b6be){logger[_0x8972('0xc')]('UpdateVoiceCallReport',_0x24d1c9);logger[_0x8972('0xf')](_0x8972('0x23'),_0x24d1c9,JSON[_0x8972('0x11')](_0x27b6be));_0x25cd1b(_0x27b6be);})['catch'](function(_0x6f31e5){logger[_0x8972('0x12')](_0x8972('0x23'),_0x6f31e5[_0x8972('0x14')],_0x24d1c9);_0x3c3a6e(_0x49098c[_0x8972('0x12')](0x1f4,_0x6f31e5['message']));});});};
\ No newline at end of file
index 6c1027f..6fb4112 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe440=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','index','get','/:id','isAuthenticated','show','create','put','update','delete','destroy','exports','path','express','Router'];(function(_0x403c20,_0x4a7b99){var _0x2b271a=function(_0x106ecb){while(--_0x106ecb){_0x403c20['push'](_0x403c20['shift']());}};_0x2b271a(++_0x4a7b99);}(_0xe440,0xbb));var _0x0e44=function(_0x109fc7,_0x576247){_0x109fc7=_0x109fc7-0x0;var _0x5a1f0d=_0xe440[_0x109fc7];return _0x5a1f0d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x0e44('0x0'));var timeout=require('connect-timeout');var express=require(_0x0e44('0x1'));var router=express[_0x0e44('0x2')]();var fs_extra=require(_0x0e44('0x3'));var auth=require(_0x0e44('0x4'));var interaction=require(_0x0e44('0x5'));var config=require(_0x0e44('0x6'));var controller=require(_0x0e44('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x0e44('0x8')]);router[_0x0e44('0x9')](_0x0e44('0xa'),auth[_0x0e44('0xb')](),controller[_0x0e44('0xc')]);router['post']('/',auth[_0x0e44('0xb')](),controller[_0x0e44('0xd')]);router[_0x0e44('0xe')](_0x0e44('0xa'),auth[_0x0e44('0xb')](),controller[_0x0e44('0xf')]);router[_0x0e44('0x10')](_0x0e44('0xa'),auth[_0x0e44('0xb')](),controller[_0x0e44('0x11')]);module[_0x0e44('0x12')]=router;
\ No newline at end of file
+var _0x14cc=['delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','get','isAuthenticated','index','post','create','put','/:id','update'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x14cc,0xdf));var _0xc14c=function(_0x1ac6ec,_0x1f81fc){_0x1ac6ec=_0x1ac6ec-0x0;var _0x48a489=_0x14cc[_0x1ac6ec];return _0x48a489;};'use strict';var multer=require(_0xc14c('0x0'));var util=require(_0xc14c('0x1'));var path=require('path');var timeout=require(_0xc14c('0x2'));var express=require(_0xc14c('0x3'));var router=express[_0xc14c('0x4')]();var fs_extra=require(_0xc14c('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xc14c('0x6'));var config=require(_0xc14c('0x7'));var controller=require(_0xc14c('0x8'));router[_0xc14c('0x9')]('/',auth[_0xc14c('0xa')](),controller[_0xc14c('0xb')]);router['get']('/:id',auth[_0xc14c('0xa')](),controller['show']);router[_0xc14c('0xc')]('/',auth[_0xc14c('0xa')](),controller[_0xc14c('0xd')]);router[_0xc14c('0xe')](_0xc14c('0xf'),auth['isAuthenticated'](),controller[_0xc14c('0x10')]);router[_0xc14c('0x11')](_0xc14c('0xf'),auth['isAuthenticated'](),controller[_0xc14c('0x12')]);module[_0xc14c('0x13')]=router;
\ No newline at end of file
index b507891..9d9a939 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc884=['getDataValue','split','BOOLEAN','sequelize','exports','STRING','name','options','join'];(function(_0x5dd09c,_0x45d0e1){var _0x10b3e2=function(_0x4fecd1){while(--_0x4fecd1){_0x5dd09c['push'](_0x5dd09c['shift']());}};_0x10b3e2(++_0x45d0e1);}(_0xc884,0x11a));var _0x4c88=function(_0x1144cd,_0x3e8ca0){_0x1144cd=_0x1144cd-0x0;var _0x4eb8a8=_0xc884[_0x1144cd];return _0x4eb8a8;};'use strict';var Sequelize=require(_0x4c88('0x0'));module[_0x4c88('0x1')]={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x4c88('0x2')],'unique':_0x4c88('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0x4c88('0x2')],'set':function(_0x152cc4){this['setDataValue'](_0x4c88('0x4'),_0x152cc4?_0x152cc4[_0x4c88('0x5')](''):[]);},'get':function(){return this[_0x4c88('0x6')](_0x4c88('0x4'))?this['getDataValue'](_0x4c88('0x4'))[_0x4c88('0x7')](''):[];}},'auth':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'password':{'type':Sequelize[_0x4c88('0x2')]},'record':{'type':Sequelize[_0x4c88('0x8')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x4c88('0x2')]},'description':{'type':Sequelize[_0x4c88('0x2')]}};
\ No newline at end of file
+var _0x1ea0=['join','getDataValue','split','BOOLEAN','sequelize','exports','STRING','name','options'];(function(_0x5031c1,_0x310436){var _0x418bb6=function(_0x401842){while(--_0x401842){_0x5031c1['push'](_0x5031c1['shift']());}};_0x418bb6(++_0x310436);}(_0x1ea0,0x148));var _0x01ea=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x1ea0[_0x21a9d9];return _0x46adce;};'use strict';var Sequelize=require(_0x01ea('0x0'));module[_0x01ea('0x1')]={'name':{'type':Sequelize[_0x01ea('0x2')]},'prefix':{'type':Sequelize[_0x01ea('0x2')],'unique':_0x01ea('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0x01ea('0x2')],'set':function(_0x532dbb){this['setDataValue'](_0x01ea('0x4'),_0x532dbb?_0x532dbb[_0x01ea('0x5')](''):[]);},'get':function(){return this[_0x01ea('0x6')](_0x01ea('0x4'))?this[_0x01ea('0x6')](_0x01ea('0x4'))[_0x01ea('0x7')](''):[];}},'auth':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'password':{'type':Sequelize[_0x01ea('0x2')]},'record':{'type':Sequelize[_0x01ea('0x8')],'defaultValue':![]},'recordingFormat':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x01ea('0x2')]}};
\ No newline at end of file
index 52f6d87..d9e4534 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeea4=['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','limit','undefined','count','set','Content-Range','apply','reject','save','destroy','UserProfileResource','then','error','stack','send','map','rawAttributes','fieldName','model','query','keys','filters','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','name','options','includeAll','findAll','rows','catch','show','params','VoiceChanSpy','intersection','find','create','body','get','role','user','ChanSpies','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','crypto','jsforce','to-csv'];(function(_0x18b191,_0x4e0684){var _0x43e146=function(_0x4b464e){while(--_0x4b464e){_0x18b191['push'](_0x18b191['shift']());}};_0x43e146(++_0x4e0684);}(_0xeea4,0x19e));var _0x4eea=function(_0x1e568b,_0x5874c2){_0x1e568b=_0x1e568b-0x0;var _0x38243c=_0xeea4[_0x1e568b];return _0x38243c;};'use strict';var emlformat=require(_0x4eea('0x0'));var rimraf=require(_0x4eea('0x1'));var zipdir=require(_0x4eea('0x2'));var jsonpatch=require(_0x4eea('0x3'));var rp=require(_0x4eea('0x4'));var moment=require(_0x4eea('0x5'));var BPromise=require(_0x4eea('0x6'));var Mustache=require(_0x4eea('0x7'));var util=require(_0x4eea('0x8'));var path=require('path');var sox=require(_0x4eea('0x9'));var csv=require('to-csv');var ejs=require(_0x4eea('0xa'));var fs=require('fs');var fs_extra=require(_0x4eea('0xb'));var _=require(_0x4eea('0xc'));var squel=require('squel');var crypto=require(_0x4eea('0xd'));var jsforce=require(_0x4eea('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x4eea('0xf'));var querystring=require(_0x4eea('0x10'));var Papa=require(_0x4eea('0x11'));var Redis=require(_0x4eea('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x4eea('0x13'));var as=require(_0x4eea('0x14'));var hardwareService=require(_0x4eea('0x15'));var logger=require(_0x4eea('0x16'))(_0x4eea('0x17'));var utils=require(_0x4eea('0x18'));var config=require(_0x4eea('0x19'));var licenseUtil=require(_0x4eea('0x1a'));var db=require(_0x4eea('0x1b'))['db'];function respondWithStatusCode(_0x130507,_0x47b971){_0x47b971=_0x47b971||0xcc;return function(_0x54fa8c){if(_0x54fa8c){return _0x130507[_0x4eea('0x1c')](_0x47b971);}return _0x130507[_0x4eea('0x1d')](_0x47b971)[_0x4eea('0x1e')]();};}function respondWithResult(_0x238405,_0x3327e0){_0x3327e0=_0x3327e0||0xc8;return function(_0x328275){if(_0x328275){return _0x238405[_0x4eea('0x1d')](_0x3327e0)[_0x4eea('0x1f')](_0x328275);}};}function respondWithFilteredResult(_0x5828e0,_0x1654c0){return function(_0x34ce09){if(_0x34ce09){var _0x150d60=typeof _0x1654c0[_0x4eea('0x20')]==='undefined'&&typeof _0x1654c0[_0x4eea('0x21')]===_0x4eea('0x22');var _0x3fbe8b=_0x34ce09[_0x4eea('0x23')];var _0x27a227=_0x150d60?0x0:_0x1654c0['offset'];var _0x1571f3=_0x150d60?_0x34ce09[_0x4eea('0x23')]:_0x1654c0['offset']+_0x1654c0[_0x4eea('0x21')];var _0x325185;if(_0x1571f3>=_0x3fbe8b){_0x1571f3=_0x3fbe8b;_0x325185=0xc8;}else{_0x325185=0xce;}_0x5828e0[_0x4eea('0x1d')](_0x325185);return _0x5828e0[_0x4eea('0x24')](_0x4eea('0x25'),_0x27a227+'-'+_0x1571f3+'/'+_0x3fbe8b)[_0x4eea('0x1f')](_0x34ce09);}return null;};}function patchUpdates(_0x56fefc){return function(_0xf054a7){try{jsonpatch[_0x4eea('0x26')](_0xf054a7,_0x56fefc,!![]);}catch(_0x24f371){return BPromise[_0x4eea('0x27')](_0x24f371);}return _0xf054a7[_0x4eea('0x28')]();};}function saveUpdates(_0x496ab6,_0x4898e8){return function(_0x3b7513){if(_0x3b7513){return _0x3b7513['update'](_0x496ab6)['then'](function(_0x5a2722){return _0x5a2722;});}return null;};}function removeEntity(_0x37f024,_0x3be3f3){return function(_0x505e50){if(_0x505e50){return _0x505e50[_0x4eea('0x29')]()['then'](function(){var _0x3f0a2c=_0x505e50['get']({'plain':!![]});var _0x111e65='ChanSpies';return db[_0x4eea('0x2a')][_0x4eea('0x29')]({'where':{'type':_0x111e65,'resourceId':_0x3f0a2c['id']}})[_0x4eea('0x2b')](function(){return _0x505e50;});})[_0x4eea('0x2b')](function(){_0x37f024[_0x4eea('0x1d')](0xcc)[_0x4eea('0x1e')]();});}};}function handleEntityNotFound(_0x16f6ac,_0x22939b){return function(_0x368688){if(!_0x368688){_0x16f6ac[_0x4eea('0x1c')](0x194);}return _0x368688;};}function handleError(_0x117079,_0x5ecb81){_0x5ecb81=_0x5ecb81||0x1f4;return function(_0x58c0df){logger[_0x4eea('0x2c')](_0x58c0df[_0x4eea('0x2d')]);if(_0x58c0df['name']){delete _0x58c0df['name'];}_0x117079['status'](_0x5ecb81)[_0x4eea('0x2e')](_0x58c0df);};}exports['index']=function(_0x31d9be,_0x299cf7){var _0x247d4b={},_0x4dd13b={},_0x34277b={'count':0x0,'rows':[]};var _0x14721f=_[_0x4eea('0x2f')](db['VoiceChanSpy'][_0x4eea('0x30')],function(_0x27c2ee){return{'name':_0x27c2ee[_0x4eea('0x31')],'type':_0x27c2ee['type']['key']};});_0x4dd13b[_0x4eea('0x32')]=_[_0x4eea('0x2f')](_0x14721f,'name');_0x4dd13b[_0x4eea('0x33')]=_[_0x4eea('0x34')](_0x31d9be[_0x4eea('0x33')]);_0x4dd13b[_0x4eea('0x35')]=_['intersection'](_0x4dd13b[_0x4eea('0x32')],_0x4dd13b['query']);_0x247d4b[_0x4eea('0x36')]=_['intersection'](_0x4dd13b[_0x4eea('0x32')],qs[_0x4eea('0x37')](_0x31d9be['query'][_0x4eea('0x37')]));_0x247d4b['attributes']=_0x247d4b[_0x4eea('0x36')][_0x4eea('0x38')]?_0x247d4b['attributes']:_0x4dd13b[_0x4eea('0x32')];if(!_0x31d9be[_0x4eea('0x33')][_0x4eea('0x39')]('nolimit')){_0x247d4b[_0x4eea('0x21')]=qs['limit'](_0x31d9be['query'][_0x4eea('0x21')]);_0x247d4b[_0x4eea('0x20')]=qs[_0x4eea('0x20')](_0x31d9be['query']['offset']);}_0x247d4b[_0x4eea('0x3a')]=qs[_0x4eea('0x3b')](_0x31d9be[_0x4eea('0x33')][_0x4eea('0x3b')]);_0x247d4b[_0x4eea('0x3c')]=qs['filters'](_[_0x4eea('0x3d')](_0x31d9be[_0x4eea('0x33')],_0x4dd13b[_0x4eea('0x35')]),_0x14721f);if(_0x31d9be[_0x4eea('0x33')][_0x4eea('0x3e')]){_0x247d4b[_0x4eea('0x3c')]=_[_0x4eea('0x3f')](_0x247d4b[_0x4eea('0x3c')],{'$or':_[_0x4eea('0x2f')](_0x14721f,function(_0x1acecf){if(_0x1acecf['type']!==_0x4eea('0x40')){var _0x368796={};_0x368796[_0x1acecf[_0x4eea('0x41')]]={'$like':'%'+_0x31d9be[_0x4eea('0x33')]['filter']+'%'};return _0x368796;}})});}_0x247d4b=_['merge']({},_0x247d4b,_0x31d9be[_0x4eea('0x42')]);var _0x560101={'where':_0x247d4b[_0x4eea('0x3c')]};return db['VoiceChanSpy'][_0x4eea('0x23')](_0x560101)[_0x4eea('0x2b')](function(_0x2eb27e){_0x34277b[_0x4eea('0x23')]=_0x2eb27e;if(_0x31d9be[_0x4eea('0x33')][_0x4eea('0x43')]){_0x247d4b['include']=[{'all':!![]}];}return db['VoiceChanSpy'][_0x4eea('0x44')](_0x247d4b);})[_0x4eea('0x2b')](function(_0x835ff3){_0x34277b[_0x4eea('0x45')]=_0x835ff3;return _0x34277b;})[_0x4eea('0x2b')](respondWithFilteredResult(_0x299cf7,_0x247d4b))[_0x4eea('0x46')](handleError(_0x299cf7,null));};exports[_0x4eea('0x47')]=function(_0x36299f,_0xcf7466){var _0xf50514={'raw':![],'where':{'id':_0x36299f[_0x4eea('0x48')]['id']}},_0x99e57={};_0x99e57[_0x4eea('0x32')]=_['keys'](db[_0x4eea('0x49')][_0x4eea('0x30')]);_0x99e57[_0x4eea('0x33')]=_[_0x4eea('0x34')](_0x36299f[_0x4eea('0x33')]);_0x99e57[_0x4eea('0x35')]=_[_0x4eea('0x4a')](_0x99e57[_0x4eea('0x32')],_0x99e57[_0x4eea('0x33')]);_0xf50514[_0x4eea('0x36')]=_['intersection'](_0x99e57['model'],qs[_0x4eea('0x37')](_0x36299f[_0x4eea('0x33')]['fields']));_0xf50514[_0x4eea('0x36')]=_0xf50514[_0x4eea('0x36')][_0x4eea('0x38')]?_0xf50514[_0x4eea('0x36')]:_0x99e57['model'];if(_0x36299f[_0x4eea('0x33')][_0x4eea('0x43')]){_0xf50514['include']=[{'all':!![]}];}_0xf50514=_['merge']({},_0xf50514,_0x36299f[_0x4eea('0x42')]);return db[_0x4eea('0x49')][_0x4eea('0x4b')](_0xf50514)['then'](handleEntityNotFound(_0xcf7466,null))['then'](respondWithResult(_0xcf7466,null))[_0x4eea('0x46')](handleError(_0xcf7466,null));};exports[_0x4eea('0x4c')]=function(_0xf9473c,_0x49b789){return db[_0x4eea('0x49')][_0x4eea('0x4c')](_0xf9473c[_0x4eea('0x4d')],{})['then'](function(_0x173863){var _0x3cef45=_0xf9473c['user'][_0x4eea('0x4e')]({'plain':!![]});if(!_0x3cef45)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3cef45[_0x4eea('0x4f')]===_0x4eea('0x50')){var _0x771590=_0x173863[_0x4eea('0x4e')]({'plain':!![]});var _0x4f2a6f=_0x4eea('0x51');return db[_0x4eea('0x52')][_0x4eea('0x4b')]({'where':{'name':_0x4f2a6f,'userProfileId':_0x3cef45[_0x4eea('0x53')]},'raw':!![]})[_0x4eea('0x2b')](function(_0x2a4030){if(_0x2a4030&&_0x2a4030['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x771590[_0x4eea('0x41')],'resourceId':_0x771590['id'],'type':_0x2a4030[_0x4eea('0x41')],'sectionId':_0x2a4030['id']},{})[_0x4eea('0x2b')](function(){return _0x173863;});}else{return _0x173863;}})[_0x4eea('0x46')](function(_0x47ab65){logger['error'](_0x4eea('0x54'),_0x47ab65);throw _0x47ab65;});}return _0x173863;})[_0x4eea('0x2b')](respondWithResult(_0x49b789,0xc9))[_0x4eea('0x46')](handleError(_0x49b789,null));};exports[_0x4eea('0x55')]=function(_0x1efaad,_0x2c014f){if(_0x1efaad[_0x4eea('0x4d')]['id']){delete _0x1efaad[_0x4eea('0x4d')]['id'];}return db[_0x4eea('0x49')][_0x4eea('0x4b')]({'where':{'id':_0x1efaad[_0x4eea('0x48')]['id']}})[_0x4eea('0x2b')](handleEntityNotFound(_0x2c014f,null))[_0x4eea('0x2b')](saveUpdates(_0x1efaad[_0x4eea('0x4d')],null))[_0x4eea('0x2b')](respondWithResult(_0x2c014f,null))[_0x4eea('0x46')](handleError(_0x2c014f,null));};exports[_0x4eea('0x29')]=function(_0x1fac45,_0x4d0f21){return db[_0x4eea('0x49')][_0x4eea('0x4b')]({'where':{'id':_0x1fac45['params']['id']}})[_0x4eea('0x2b')](handleEntityNotFound(_0x4d0f21,null))[_0x4eea('0x2b')](removeEntity(_0x4d0f21,null))[_0x4eea('0x46')](handleError(_0x4d0f21,null));};
\ No newline at end of file
+var _0xad13=['update','then','get','ChanSpies','UserProfileResource','error','stack','name','send','map','VoiceChanSpy','rawAttributes','fieldName','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','filters','filter','where','type','options','includeAll','include','rows','catch','show','params','find','create','user','role','autoAssociation','body','destroy','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject'];(function(_0x2851f2,_0x3d6113){var _0x4984db=function(_0x5c354f){while(--_0x5c354f){_0x2851f2['push'](_0x2851f2['shift']());}};_0x4984db(++_0x3d6113);}(_0xad13,0x79));var _0x3ad1=function(_0x48451e,_0x1cf56b){_0x48451e=_0x48451e-0x0;var _0x5888af=_0xad13[_0x48451e];return _0x5888af;};'use strict';var emlformat=require(_0x3ad1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3ad1('0x1'));var jsonpatch=require(_0x3ad1('0x2'));var rp=require(_0x3ad1('0x3'));var moment=require(_0x3ad1('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x3ad1('0x5'));var util=require(_0x3ad1('0x6'));var path=require(_0x3ad1('0x7'));var sox=require(_0x3ad1('0x8'));var csv=require(_0x3ad1('0x9'));var ejs=require(_0x3ad1('0xa'));var fs=require('fs');var fs_extra=require(_0x3ad1('0xb'));var _=require(_0x3ad1('0xc'));var squel=require(_0x3ad1('0xd'));var crypto=require(_0x3ad1('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x3ad1('0xf'));var toCsv=require(_0x3ad1('0x9'));var querystring=require(_0x3ad1('0x10'));var Papa=require('papaparse');var Redis=require(_0x3ad1('0x11'));var authService=require(_0x3ad1('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x3ad1('0x13'));var hardwareService=require(_0x3ad1('0x14'));var logger=require(_0x3ad1('0x15'))(_0x3ad1('0x16'));var utils=require(_0x3ad1('0x17'));var config=require(_0x3ad1('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x142957,_0x42f6a0){_0x42f6a0=_0x42f6a0||0xcc;return function(_0x4544c0){if(_0x4544c0){return _0x142957[_0x3ad1('0x19')](_0x42f6a0);}return _0x142957['status'](_0x42f6a0)[_0x3ad1('0x1a')]();};}function respondWithResult(_0x4bf44f,_0x19b1db){_0x19b1db=_0x19b1db||0xc8;return function(_0x3b68de){if(_0x3b68de){return _0x4bf44f[_0x3ad1('0x1b')](_0x19b1db)[_0x3ad1('0x1c')](_0x3b68de);}};}function respondWithFilteredResult(_0x5448a1,_0x4104aa){return function(_0xce229){if(_0xce229){var _0x384ed5=typeof _0x4104aa[_0x3ad1('0x1d')]===_0x3ad1('0x1e')&&typeof _0x4104aa[_0x3ad1('0x1f')]===_0x3ad1('0x1e');var _0x5cf66b=_0xce229[_0x3ad1('0x20')];var _0x30e53f=_0x384ed5?0x0:_0x4104aa[_0x3ad1('0x1d')];var _0xd43203=_0x384ed5?_0xce229[_0x3ad1('0x20')]:_0x4104aa['offset']+_0x4104aa[_0x3ad1('0x1f')];var _0x3de9a2;if(_0xd43203>=_0x5cf66b){_0xd43203=_0x5cf66b;_0x3de9a2=0xc8;}else{_0x3de9a2=0xce;}_0x5448a1['status'](_0x3de9a2);return _0x5448a1[_0x3ad1('0x21')](_0x3ad1('0x22'),_0x30e53f+'-'+_0xd43203+'/'+_0x5cf66b)[_0x3ad1('0x1c')](_0xce229);}return null;};}function patchUpdates(_0x46649d){return function(_0x1f65ff){try{jsonpatch[_0x3ad1('0x23')](_0x1f65ff,_0x46649d,!![]);}catch(_0x5aa568){return BPromise[_0x3ad1('0x24')](_0x5aa568);}return _0x1f65ff['save']();};}function saveUpdates(_0xc78309,_0x5f1031){return function(_0x21ed3b){if(_0x21ed3b){return _0x21ed3b[_0x3ad1('0x25')](_0xc78309)[_0x3ad1('0x26')](function(_0x3e9c1f){return _0x3e9c1f;});}return null;};}function removeEntity(_0x2365f3,_0x3a0166){return function(_0x2fd5e6){if(_0x2fd5e6){return _0x2fd5e6['destroy']()[_0x3ad1('0x26')](function(){var _0x466d91=_0x2fd5e6[_0x3ad1('0x27')]({'plain':!![]});var _0x2ee2e8=_0x3ad1('0x28');return db[_0x3ad1('0x29')]['destroy']({'where':{'type':_0x2ee2e8,'resourceId':_0x466d91['id']}})['then'](function(){return _0x2fd5e6;});})[_0x3ad1('0x26')](function(){_0x2365f3['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x322a9a,_0x2408d5){return function(_0xf5d14c){if(!_0xf5d14c){_0x322a9a[_0x3ad1('0x19')](0x194);}return _0xf5d14c;};}function handleError(_0x5b200c,_0x5b7461){_0x5b7461=_0x5b7461||0x1f4;return function(_0xc56f8a){logger[_0x3ad1('0x2a')](_0xc56f8a[_0x3ad1('0x2b')]);if(_0xc56f8a[_0x3ad1('0x2c')]){delete _0xc56f8a['name'];}_0x5b200c['status'](_0x5b7461)[_0x3ad1('0x2d')](_0xc56f8a);};}exports['index']=function(_0x7def7b,_0x1d28d6){var _0x266d0d={},_0x255924={},_0x1f5887={'count':0x0,'rows':[]};var _0x7c001=_[_0x3ad1('0x2e')](db[_0x3ad1('0x2f')][_0x3ad1('0x30')],function(_0x567e85){return{'name':_0x567e85[_0x3ad1('0x31')],'type':_0x567e85['type'][_0x3ad1('0x32')]};});_0x255924[_0x3ad1('0x33')]=_[_0x3ad1('0x2e')](_0x7c001,_0x3ad1('0x2c'));_0x255924[_0x3ad1('0x34')]=_[_0x3ad1('0x35')](_0x7def7b[_0x3ad1('0x34')]);_0x255924['filters']=_[_0x3ad1('0x36')](_0x255924['model'],_0x255924['query']);_0x266d0d['attributes']=_[_0x3ad1('0x36')](_0x255924[_0x3ad1('0x33')],qs[_0x3ad1('0x37')](_0x7def7b[_0x3ad1('0x34')][_0x3ad1('0x37')]));_0x266d0d[_0x3ad1('0x38')]=_0x266d0d['attributes']['length']?_0x266d0d[_0x3ad1('0x38')]:_0x255924[_0x3ad1('0x33')];if(!_0x7def7b[_0x3ad1('0x34')][_0x3ad1('0x39')](_0x3ad1('0x3a'))){_0x266d0d['limit']=qs['limit'](_0x7def7b['query']['limit']);_0x266d0d[_0x3ad1('0x1d')]=qs['offset'](_0x7def7b[_0x3ad1('0x34')][_0x3ad1('0x1d')]);}_0x266d0d[_0x3ad1('0x3b')]=qs['sort'](_0x7def7b[_0x3ad1('0x34')][_0x3ad1('0x3c')]);_0x266d0d['where']=qs[_0x3ad1('0x3d')](_['pick'](_0x7def7b[_0x3ad1('0x34')],_0x255924[_0x3ad1('0x3d')]),_0x7c001);if(_0x7def7b[_0x3ad1('0x34')][_0x3ad1('0x3e')]){_0x266d0d['where']=_['merge'](_0x266d0d[_0x3ad1('0x3f')],{'$or':_[_0x3ad1('0x2e')](_0x7c001,function(_0xd38d0){if(_0xd38d0[_0x3ad1('0x40')]!=='VIRTUAL'){var _0x10f027={};_0x10f027[_0xd38d0[_0x3ad1('0x2c')]]={'$like':'%'+_0x7def7b[_0x3ad1('0x34')][_0x3ad1('0x3e')]+'%'};return _0x10f027;}})});}_0x266d0d=_['merge']({},_0x266d0d,_0x7def7b[_0x3ad1('0x41')]);var _0x4fd158={'where':_0x266d0d['where']};return db[_0x3ad1('0x2f')]['count'](_0x4fd158)['then'](function(_0x534b5d){_0x1f5887[_0x3ad1('0x20')]=_0x534b5d;if(_0x7def7b[_0x3ad1('0x34')][_0x3ad1('0x42')]){_0x266d0d[_0x3ad1('0x43')]=[{'all':!![]}];}return db[_0x3ad1('0x2f')]['findAll'](_0x266d0d);})['then'](function(_0xf267d0){_0x1f5887[_0x3ad1('0x44')]=_0xf267d0;return _0x1f5887;})['then'](respondWithFilteredResult(_0x1d28d6,_0x266d0d))[_0x3ad1('0x45')](handleError(_0x1d28d6,null));};exports[_0x3ad1('0x46')]=function(_0x48532c,_0x235189){var _0x347dee={'raw':![],'where':{'id':_0x48532c[_0x3ad1('0x47')]['id']}},_0x4cf9bb={};_0x4cf9bb['model']=_[_0x3ad1('0x35')](db[_0x3ad1('0x2f')][_0x3ad1('0x30')]);_0x4cf9bb[_0x3ad1('0x34')]=_[_0x3ad1('0x35')](_0x48532c[_0x3ad1('0x34')]);_0x4cf9bb[_0x3ad1('0x3d')]=_['intersection'](_0x4cf9bb['model'],_0x4cf9bb[_0x3ad1('0x34')]);_0x347dee[_0x3ad1('0x38')]=_[_0x3ad1('0x36')](_0x4cf9bb[_0x3ad1('0x33')],qs['fields'](_0x48532c['query'][_0x3ad1('0x37')]));_0x347dee['attributes']=_0x347dee[_0x3ad1('0x38')]['length']?_0x347dee[_0x3ad1('0x38')]:_0x4cf9bb['model'];if(_0x48532c[_0x3ad1('0x34')][_0x3ad1('0x42')]){_0x347dee[_0x3ad1('0x43')]=[{'all':!![]}];}_0x347dee=_['merge']({},_0x347dee,_0x48532c[_0x3ad1('0x41')]);return db[_0x3ad1('0x2f')][_0x3ad1('0x48')](_0x347dee)[_0x3ad1('0x26')](handleEntityNotFound(_0x235189,null))['then'](respondWithResult(_0x235189,null))[_0x3ad1('0x45')](handleError(_0x235189,null));};exports[_0x3ad1('0x49')]=function(_0x21bda3,_0x456e31){return db[_0x3ad1('0x2f')][_0x3ad1('0x49')](_0x21bda3['body'],{})['then'](function(_0x4c40ee){var _0x994136=_0x21bda3[_0x3ad1('0x4a')]['get']({'plain':!![]});if(!_0x994136)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x994136[_0x3ad1('0x4b')]===_0x3ad1('0x4a')){var _0x16add6=_0x4c40ee[_0x3ad1('0x27')]({'plain':!![]});var _0x516a3d=_0x3ad1('0x28');return db['UserProfileSection']['find']({'where':{'name':_0x516a3d,'userProfileId':_0x994136['userProfileId']},'raw':!![]})[_0x3ad1('0x26')](function(_0x46b25b){if(_0x46b25b&&_0x46b25b[_0x3ad1('0x4c')]===0x0){return db[_0x3ad1('0x29')][_0x3ad1('0x49')]({'name':_0x16add6['name'],'resourceId':_0x16add6['id'],'type':_0x46b25b[_0x3ad1('0x2c')],'sectionId':_0x46b25b['id']},{})[_0x3ad1('0x26')](function(){return _0x4c40ee;});}else{return _0x4c40ee;}})[_0x3ad1('0x45')](function(_0x4081d4){logger[_0x3ad1('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4081d4);throw _0x4081d4;});}return _0x4c40ee;})[_0x3ad1('0x26')](respondWithResult(_0x456e31,0xc9))[_0x3ad1('0x45')](handleError(_0x456e31,null));};exports[_0x3ad1('0x25')]=function(_0x300faf,_0x350d40){if(_0x300faf[_0x3ad1('0x4d')]['id']){delete _0x300faf[_0x3ad1('0x4d')]['id'];}return db[_0x3ad1('0x2f')][_0x3ad1('0x48')]({'where':{'id':_0x300faf[_0x3ad1('0x47')]['id']}})['then'](handleEntityNotFound(_0x350d40,null))['then'](saveUpdates(_0x300faf[_0x3ad1('0x4d')],null))['then'](respondWithResult(_0x350d40,null))[_0x3ad1('0x45')](handleError(_0x350d40,null));};exports[_0x3ad1('0x4e')]=function(_0x28864d,_0x590b70){return db[_0x3ad1('0x2f')]['find']({'where':{'id':_0x28864d[_0x3ad1('0x47')]['id']}})['then'](handleEntityNotFound(_0x590b70,null))[_0x3ad1('0x26')](removeEntity(_0x590b70,null))[_0x3ad1('0x45')](handleError(_0x590b70,null));};
\ No newline at end of file
index 8aa75ab..5de5ef7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3aa=['User','findAll','internal','agent','then','catch','exports','define','VoiceChanSpy','voice_chanspy','bulkCreate','VoiceExtension','destroy','length','lodash','bluebird','./voiceChanSpy.attributes','context','format','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor'];(function(_0x27db33,_0x358b84){var _0x2baf30=function(_0x542e31){while(--_0x542e31){_0x27db33['push'](_0x27db33['shift']());}};_0x2baf30(++_0x358b84);}(_0xa3aa,0x176));var _0xaa3a=function(_0x555508,_0x49b662){_0x555508=_0x555508-0x0;var _0x38ba7b=_0xa3aa[_0x555508];return _0x38ba7b;};'use strict';var _=require(_0xaa3a('0x0'));var util=require('util');var BPromise=require(_0xaa3a('0x1'));var attributes=require(_0xaa3a('0x2'));var getUserApplications=function(_0x3d4be8,_0x40c6a6,_0x4e49ec){var _0x104023=0x1;var _0x1a312e=[];var _0x31fa60={'context':_0x40c6a6[_0xaa3a('0x3')]||'from-sip','exten':util[_0xaa3a('0x4')]('%s%s',_0x3d4be8['prefix'],_0x4e49ec),'type':'system','isApp':![],'ChanSpyId':_0x3d4be8['id'],'UserId':_0x40c6a6['id']};_0x1a312e[_0xaa3a('0x5')](_[_0xaa3a('0x6')]({'app':_0xaa3a('0x7'),'appdata':util[_0xaa3a('0x4')](_0xaa3a('0x8'),_0xaa3a('0x9')),'priority':_0x104023++},_0x31fa60));if(_0x3d4be8[_0xaa3a('0xa')]){_0x1a312e['push'](_['merge']({'app':_0xaa3a('0xb'),'appdata':util[_0xaa3a('0x4')](_0xaa3a('0xc'),_0x3d4be8[_0xaa3a('0xd')]),'priority':_0x104023++},_0x31fa60));}if(_0x3d4be8[_0xaa3a('0xe')]){_0x1a312e[_0xaa3a('0x5')](_[_0xaa3a('0x6')]({'app':_0xaa3a('0xf'),'appdata':_0x3d4be8['password'],'priority':_0x104023++},_0x31fa60));}_0x1a312e[_0xaa3a('0x5')](_[_0xaa3a('0x6')]({'app':_0xaa3a('0x10'),'appdata':util['format'](_0xaa3a('0x11'),_0x40c6a6[_0xaa3a('0x12')],_0x3d4be8[_0xaa3a('0x13')]?_0x3d4be8[_0xaa3a('0x13')][_0xaa3a('0x14')](''):''),'priority':_0x104023++},_0x31fa60));if(_0x3d4be8['record']){_0x1a312e[_0xaa3a('0x5')](_[_0xaa3a('0x6')]({'app':_0xaa3a('0x15'),'priority':_0x104023++},_0x31fa60));}return _0x1a312e;};var getChanSpyApplications=function(_0x308971,_0x1a5b17){var _0xc09324=[];for(var _0x57fde4=0x0,_0xa302e3=0x1;_0x57fde4<_0x1a5b17['length'];_0x57fde4++,_0xa302e3=0x1){_0xc09324=_0xc09324['concat'](getUserApplications(_0x308971,_0x1a5b17[_0x57fde4],_0x1a5b17[_0x57fde4]['internal']));if(_0x1a5b17[_0x57fde4]['internal']!=_0x1a5b17[_0x57fde4][_0xaa3a('0x12')]){_0xc09324=_0xc09324['concat'](getUserApplications(_0x308971,_0x1a5b17[_0x57fde4],_0x1a5b17[_0x57fde4][_0xaa3a('0x12')]));}}return _0xc09324;};var getChanSpyPromise=function(_0x7f0ad9,_0x188855){return new BPromise(function(_0x10da7d,_0xc27706){return _0x7f0ad9[_0xaa3a('0x16')][_0xaa3a('0x17')]({'attributes':['id',_0xaa3a('0x12'),_0xaa3a('0x18')],'where':{'role':_0xaa3a('0x19'),'chanspy':!![]},'raw':!![]})[_0xaa3a('0x1a')](function(_0x3569ed){if(_0x3569ed){return _0x10da7d(getChanSpyApplications(_0x188855,_0x3569ed));}return _0x10da7d([]);})[_0xaa3a('0x1b')](function(_0x1e0d08){_0xc27706(_0x1e0d08);});});};module[_0xaa3a('0x1c')]=function(_0x3bffcf,_0x40587b){var _0x23eecc=_0x3bffcf['models'];return _0x3bffcf[_0xaa3a('0x1d')](_0xaa3a('0x1e'),attributes,{'tableName':_0xaa3a('0x1f'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x49730c,_0x36cb31,_0x4a3f7c){return getChanSpyPromise(_0x23eecc,_0x49730c)[_0xaa3a('0x1a')](function(_0x5e6b35){if(_0x5e6b35&&_0x5e6b35['length']){return _0x23eecc['VoiceExtension'][_0xaa3a('0x20')](_0x5e6b35);}})[_0xaa3a('0x1a')](function(){_0x4a3f7c();})[_0xaa3a('0x1b')](function(_0x199cd4){_0x4a3f7c(_0x199cd4);});},'afterUpdate':function(_0x3f01d4,_0x2133c5,_0x443936){return _0x23eecc[_0xaa3a('0x21')][_0xaa3a('0x22')]({'where':{'ChanSpyId':_0x3f01d4['id']}})[_0xaa3a('0x1a')](function(){return getChanSpyPromise(_0x23eecc,_0x3f01d4);})[_0xaa3a('0x1a')](function(_0x1530ac){if(_0x1530ac&&_0x1530ac[_0xaa3a('0x23')]){return _0x23eecc['VoiceExtension'][_0xaa3a('0x20')](_0x1530ac);}})[_0xaa3a('0x1a')](function(){_0x443936();})[_0xaa3a('0x1b')](function(_0x5e1407){_0x443936(_0x5e1407);});},'afterDestroy':function(_0x30bdf5,_0xcceb9c,_0x83fe43){return _0x23eecc[_0xaa3a('0x21')][_0xaa3a('0x22')]({'where':{'ChanSpyId':_0x30bdf5['id']}})['then'](function(){_0x83fe43();})[_0xaa3a('0x1b')](function(_0x374fa6){_0x83fe43(_0x374fa6);});}}});};
\ No newline at end of file
+var _0x3f9f=['bluebird','./voiceChanSpy.attributes','from-sip','format','prefix','system','push','merge','Set','record','MixMonitor','recordingFormat','auth','Authenticate','password','ChanSpy','name','options','join','StopMixMonitor','concat','internal','User','findAll','agent','catch','exports','define','VoiceChanSpy','voice_chanspy','then','length','VoiceExtension','bulkCreate','destroy','lodash','util'];(function(_0x1012ab,_0xfb2018){var _0x4ebbe3=function(_0x32cb49){while(--_0x32cb49){_0x1012ab['push'](_0x1012ab['shift']());}};_0x4ebbe3(++_0xfb2018);}(_0x3f9f,0x1df));var _0xf3f9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3f9f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xf3f9('0x0'));var util=require(_0xf3f9('0x1'));var BPromise=require(_0xf3f9('0x2'));var attributes=require(_0xf3f9('0x3'));var getUserApplications=function(_0x4b6fa5,_0x538f0d,_0x7f7d87){var _0x20dd6c=0x1;var _0x4972f0=[];var _0x12956d={'context':_0x538f0d['context']||_0xf3f9('0x4'),'exten':util[_0xf3f9('0x5')]('%s%s',_0x4b6fa5[_0xf3f9('0x6')],_0x7f7d87),'type':_0xf3f9('0x7'),'isApp':![],'ChanSpyId':_0x4b6fa5['id'],'UserId':_0x538f0d['id']};_0x4972f0[_0xf3f9('0x8')](_[_0xf3f9('0x9')]({'app':_0xf3f9('0xa'),'appdata':util['format']('CDR(type)=%s','chanspy'),'priority':_0x20dd6c++},_0x12956d));if(_0x4b6fa5[_0xf3f9('0xb')]){_0x4972f0[_0xf3f9('0x8')](_[_0xf3f9('0x9')]({'app':_0xf3f9('0xc'),'appdata':util[_0xf3f9('0x5')]('${UNIQUEID}.%s,a',_0x4b6fa5[_0xf3f9('0xd')]),'priority':_0x20dd6c++},_0x12956d));}if(_0x4b6fa5[_0xf3f9('0xe')]){_0x4972f0['push'](_[_0xf3f9('0x9')]({'app':_0xf3f9('0xf'),'appdata':_0x4b6fa5[_0xf3f9('0x10')],'priority':_0x20dd6c++},_0x12956d));}_0x4972f0[_0xf3f9('0x8')](_['merge']({'app':_0xf3f9('0x11'),'appdata':util[_0xf3f9('0x5')]('SIP/%s,%s',_0x538f0d[_0xf3f9('0x12')],_0x4b6fa5[_0xf3f9('0x13')]?_0x4b6fa5[_0xf3f9('0x13')][_0xf3f9('0x14')](''):''),'priority':_0x20dd6c++},_0x12956d));if(_0x4b6fa5['record']){_0x4972f0[_0xf3f9('0x8')](_[_0xf3f9('0x9')]({'app':_0xf3f9('0x15'),'priority':_0x20dd6c++},_0x12956d));}return _0x4972f0;};var getChanSpyApplications=function(_0x4ea889,_0x243d05){var _0x8eee04=[];for(var _0x378d62=0x0,_0x4bdbb7=0x1;_0x378d62<_0x243d05['length'];_0x378d62++,_0x4bdbb7=0x1){_0x8eee04=_0x8eee04[_0xf3f9('0x16')](getUserApplications(_0x4ea889,_0x243d05[_0x378d62],_0x243d05[_0x378d62][_0xf3f9('0x17')]));if(_0x243d05[_0x378d62][_0xf3f9('0x17')]!=_0x243d05[_0x378d62]['name']){_0x8eee04=_0x8eee04[_0xf3f9('0x16')](getUserApplications(_0x4ea889,_0x243d05[_0x378d62],_0x243d05[_0x378d62][_0xf3f9('0x12')]));}}return _0x8eee04;};var getChanSpyPromise=function(_0xdae451,_0x450b4b){return new BPromise(function(_0x3b761e,_0x525af2){return _0xdae451[_0xf3f9('0x18')][_0xf3f9('0x19')]({'attributes':['id',_0xf3f9('0x12'),_0xf3f9('0x17')],'where':{'role':_0xf3f9('0x1a'),'chanspy':!![]},'raw':!![]})['then'](function(_0x346c55){if(_0x346c55){return _0x3b761e(getChanSpyApplications(_0x450b4b,_0x346c55));}return _0x3b761e([]);})[_0xf3f9('0x1b')](function(_0x207b41){_0x525af2(_0x207b41);});});};module[_0xf3f9('0x1c')]=function(_0x3bdbdb,_0x10243b){var _0x2dc945=_0x3bdbdb['models'];return _0x3bdbdb[_0xf3f9('0x1d')](_0xf3f9('0x1e'),attributes,{'tableName':_0xf3f9('0x1f'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x16be9c,_0x4fd4e0,_0x27b706){return getChanSpyPromise(_0x2dc945,_0x16be9c)[_0xf3f9('0x20')](function(_0x3b0f75){if(_0x3b0f75&&_0x3b0f75[_0xf3f9('0x21')]){return _0x2dc945[_0xf3f9('0x22')][_0xf3f9('0x23')](_0x3b0f75);}})[_0xf3f9('0x20')](function(){_0x27b706();})[_0xf3f9('0x1b')](function(_0x22ef7f){_0x27b706(_0x22ef7f);});},'afterUpdate':function(_0x3433ec,_0x305e08,_0xf0d26a){return _0x2dc945[_0xf3f9('0x22')][_0xf3f9('0x24')]({'where':{'ChanSpyId':_0x3433ec['id']}})[_0xf3f9('0x20')](function(){return getChanSpyPromise(_0x2dc945,_0x3433ec);})[_0xf3f9('0x20')](function(_0x32be79){if(_0x32be79&&_0x32be79['length']){return _0x2dc945['VoiceExtension'][_0xf3f9('0x23')](_0x32be79);}})['then'](function(){_0xf0d26a();})[_0xf3f9('0x1b')](function(_0x5f2b9e){_0xf0d26a(_0x5f2b9e);});},'afterDestroy':function(_0x19bc30,_0xd3fa23,_0x1cf489){return _0x2dc945[_0xf3f9('0x22')][_0xf3f9('0x24')]({'where':{'ChanSpyId':_0x19bc30['id']}})[_0xf3f9('0x20')](function(){_0x1cf489();})[_0xf3f9('0x1b')](function(_0x4dfb67){_0x1cf489(_0x4dfb67);});}}});};
\ No newline at end of file
index e13ce61..ac0ac8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x422f=['bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','VoiceChanSpy,\x20%s,\x20%s','result','catch','util'];(function(_0x187718,_0x427383){var _0x29ddf4=function(_0x2ec62a){while(--_0x2ec62a){_0x187718['push'](_0x187718['shift']());}};_0x29ddf4(++_0x427383);}(_0x422f,0x1c7));var _0xf422=function(_0x2410cc,_0x3f10a4){_0x2410cc=_0x2410cc-0x0;var _0x12903c=_0x422f[_0x2410cc];return _0x12903c;};'use strict';var _=require('lodash');var util=require(_0xf422('0x0'));var moment=require('moment');var BPromise=require(_0xf422('0x1'));var rs=require(_0xf422('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf422('0x3'))['db'];var utils=require(_0xf422('0x4'));var logger=require(_0xf422('0x5'))(_0xf422('0x6'));var config=require(_0xf422('0x7'));var jayson=require(_0xf422('0x8'));var client=jayson[_0xf422('0x9')][_0xf422('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x350b2d,_0x583283,_0x3f4801){return new BPromise(function(_0x1037fa,_0xc2c9f5){return client[_0xf422('0xb')](_0x350b2d,_0x3f4801)[_0xf422('0xc')](function(_0x5f02da){logger[_0xf422('0xd')]('VoiceChanSpy,\x20%s,\x20%s',_0x583283,'request\x20sent');logger[_0xf422('0xe')](_0xf422('0xf'),_0x583283,_0xf422('0x10'),JSON[_0xf422('0x11')](_0x5f02da));if(_0x5f02da[_0xf422('0x12')]){if(_0x5f02da['error'][_0xf422('0x13')]===0x1f4){logger[_0xf422('0x12')]('VoiceChanSpy,\x20%s,\x20%s',_0x583283,_0x5f02da[_0xf422('0x12')][_0xf422('0x14')]);return _0xc2c9f5(_0x5f02da[_0xf422('0x12')][_0xf422('0x14')]);}logger[_0xf422('0x12')](_0xf422('0x15'),_0x583283,_0x5f02da[_0xf422('0x12')][_0xf422('0x14')]);return _0x1037fa(_0x5f02da[_0xf422('0x12')]['message']);}else{logger['info']('VoiceChanSpy,\x20%s,\x20%s',_0x583283,_0xf422('0x10'));_0x1037fa(_0x5f02da[_0xf422('0x16')][_0xf422('0x14')]);}})[_0xf422('0x17')](function(_0x5f3de5){logger[_0xf422('0x12')](_0xf422('0x15'),_0x583283,_0x5f3de5);_0xc2c9f5(_0x5f3de5);});});}
\ No newline at end of file
+var _0x6324=['client','http','then','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceChanSpy,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','rpc','jayson/promise'];(function(_0x5ed009,_0x56e34a){var _0x17d522=function(_0x4b8389){while(--_0x4b8389){_0x5ed009['push'](_0x5ed009['shift']());}};_0x17d522(++_0x56e34a);}(_0x6324,0x142));var _0x4632=function(_0x355e2b,_0x1e99eb){_0x355e2b=_0x355e2b-0x0;var _0x2b59bb=_0x6324[_0x355e2b];return _0x2b59bb;};'use strict';var _=require(_0x4632('0x0'));var util=require(_0x4632('0x1'));var moment=require(_0x4632('0x2'));var BPromise=require(_0x4632('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4632('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x4632('0x5'));var logger=require('../../config/logger')(_0x4632('0x6'));var config=require('../../config/environment');var jayson=require(_0x4632('0x7'));var client=jayson[_0x4632('0x8')][_0x4632('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x126e9a,_0x4a15b2,_0x17e860){return new BPromise(function(_0x44dd6d,_0x390a46){return client['request'](_0x126e9a,_0x17e860)[_0x4632('0xa')](function(_0x47824c){logger['info']('VoiceChanSpy,\x20%s,\x20%s',_0x4a15b2,_0x4632('0xb'));logger[_0x4632('0xc')](_0x4632('0xd'),_0x4a15b2,_0x4632('0xb'),JSON[_0x4632('0xe')](_0x47824c));if(_0x47824c[_0x4632('0xf')]){if(_0x47824c[_0x4632('0xf')][_0x4632('0x10')]===0x1f4){logger['error'](_0x4632('0x11'),_0x4a15b2,_0x47824c['error'][_0x4632('0x12')]);return _0x390a46(_0x47824c[_0x4632('0xf')][_0x4632('0x12')]);}logger[_0x4632('0xf')]('VoiceChanSpy,\x20%s,\x20%s',_0x4a15b2,_0x47824c[_0x4632('0xf')][_0x4632('0x12')]);return _0x44dd6d(_0x47824c[_0x4632('0xf')][_0x4632('0x12')]);}else{logger[_0x4632('0x13')]('VoiceChanSpy,\x20%s,\x20%s',_0x4a15b2,'request\x20sent');_0x44dd6d(_0x47824c[_0x4632('0x14')][_0x4632('0x12')]);}})[_0x4632('0x15')](function(_0x125eb9){logger['error'](_0x4632('0x11'),_0x4a15b2,_0x125eb9);_0x390a46(_0x125eb9);});});}
\ No newline at end of file
index 5f4bf0e..e292ac2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaa7=['show','post','create','put','update','delete','destroy','multer','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./voiceContext.controller','get','isAuthenticated','index','/:id'];(function(_0x3eb4a9,_0x359d73){var _0x48dbad=function(_0x3a3ca6){while(--_0x3a3ca6){_0x3eb4a9['push'](_0x3eb4a9['shift']());}};_0x48dbad(++_0x359d73);}(_0xcaa7,0x15d));var _0x7caa=function(_0x4452a2,_0x32fb2e){_0x4452a2=_0x4452a2-0x0;var _0x143eb7=_0xcaa7[_0x4452a2];return _0x143eb7;};'use strict';var multer=require(_0x7caa('0x0'));var util=require('util');var path=require(_0x7caa('0x1'));var timeout=require(_0x7caa('0x2'));var express=require(_0x7caa('0x3'));var router=express[_0x7caa('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x7caa('0x5'));var config=require(_0x7caa('0x6'));var controller=require(_0x7caa('0x7'));router[_0x7caa('0x8')]('/',auth[_0x7caa('0x9')](),controller[_0x7caa('0xa')]);router[_0x7caa('0x8')](_0x7caa('0xb'),auth[_0x7caa('0x9')](),controller[_0x7caa('0xc')]);router[_0x7caa('0xd')]('/',auth[_0x7caa('0x9')](),controller[_0x7caa('0xe')]);router[_0x7caa('0xf')]('/:id',auth[_0x7caa('0x9')](),controller[_0x7caa('0x10')]);router[_0x7caa('0x11')](_0x7caa('0xb'),auth['isAuthenticated'](),controller[_0x7caa('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x5213=['get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','./voiceContext.controller'];(function(_0x45fb72,_0x5b1500){var _0xa7d333=function(_0x30925f){while(--_0x30925f){_0x45fb72['push'](_0x45fb72['shift']());}};_0xa7d333(++_0x5b1500);}(_0x5213,0xb6));var _0x3521=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0x5213[_0x243b59];return _0x3e1676;};'use strict';var multer=require(_0x3521('0x0'));var util=require(_0x3521('0x1'));var path=require(_0x3521('0x2'));var timeout=require(_0x3521('0x3'));var express=require(_0x3521('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x3521('0x5'));var interaction=require(_0x3521('0x6'));var config=require('../../config/environment');var controller=require(_0x3521('0x7'));router[_0x3521('0x8')]('/',auth[_0x3521('0x9')](),controller[_0x3521('0xa')]);router['get'](_0x3521('0xb'),auth[_0x3521('0x9')](),controller[_0x3521('0xc')]);router[_0x3521('0xd')]('/',auth[_0x3521('0x9')](),controller[_0x3521('0xe')]);router[_0x3521('0xf')](_0x3521('0xb'),auth[_0x3521('0x9')](),controller['update']);router[_0x3521('0x10')](_0x3521('0xb'),auth[_0x3521('0x9')](),controller[_0x3521('0x11')]);module[_0x3521('0x12')]=router;
\ No newline at end of file
index a24c539..3d226f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb72=['STRING','name','sequelize','exports'];(function(_0x18d6ac,_0x4dbaad){var _0x33833a=function(_0x529be5){while(--_0x529be5){_0x18d6ac['push'](_0x18d6ac['shift']());}};_0x33833a(++_0x4dbaad);}(_0xdb72,0x6e));var _0x2db7=function(_0x4ab99,_0x219ed2){_0x4ab99=_0x4ab99-0x0;var _0x29e39c=_0xdb72[_0x4ab99];return _0x29e39c;};'use strict';var Sequelize=require(_0x2db7('0x0'));module[_0x2db7('0x1')]={'name':{'type':Sequelize[_0x2db7('0x2')],'unique':_0x2db7('0x3')},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x3733=['sequelize','STRING','name','BOOLEAN'];(function(_0x54defc,_0x627178){var _0x1955d3=function(_0x299afe){while(--_0x299afe){_0x54defc['push'](_0x54defc['shift']());}};_0x1955d3(++_0x627178);}(_0x3733,0xb0));var _0x3373=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3733[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x3373('0x0'));module['exports']={'name':{'type':Sequelize[_0x3373('0x1')],'unique':_0x3373('0x2')},'description':{'type':Sequelize[_0x3373('0x1')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x3373('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index d453db1..67f4f70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87a9=['count','limit','apply','reject','update','then','destroy','get','UserProfileResource','stack','name','send','rawAttributes','fieldName','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','where','filter','type','VIRTUAL','merge','options','includeAll','include','VoiceContext','rows','show','params','keys','find','create','body','findAll','readFileSync','join','root','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','server/files/templates/context.ejs','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','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','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','http','VoiceContext,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','sendStatus','status','json','offset','undefined'];(function(_0x51266e,_0x192a61){var _0x574263=function(_0x5b2adc){while(--_0x5b2adc){_0x51266e['push'](_0x51266e['shift']());}};_0x574263(++_0x192a61);}(_0x87a9,0xf7));var _0x987a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x87a9[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x987a('0x0'));var rimraf=require(_0x987a('0x1'));var zipdir=require(_0x987a('0x2'));var jsonpatch=require(_0x987a('0x3'));var rp=require(_0x987a('0x4'));var moment=require(_0x987a('0x5'));var BPromise=require(_0x987a('0x6'));var Mustache=require(_0x987a('0x7'));var util=require(_0x987a('0x8'));var path=require(_0x987a('0x9'));var sox=require(_0x987a('0xa'));var csv=require(_0x987a('0xb'));var ejs=require(_0x987a('0xc'));var fs=require('fs');var fs_extra=require(_0x987a('0xd'));var _=require(_0x987a('0xe'));var squel=require('squel');var crypto=require(_0x987a('0xf'));var jsforce=require(_0x987a('0x10'));var deskjs=require(_0x987a('0x11'));var toCsv=require(_0x987a('0xb'));var querystring=require(_0x987a('0x12'));var Papa=require(_0x987a('0x13'));var Redis=require(_0x987a('0x14'));var authService=require(_0x987a('0x15'));var qs=require(_0x987a('0x16'));var as=require(_0x987a('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x987a('0x18'));var utils=require(_0x987a('0x19'));var config=require(_0x987a('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x987a('0x1b'))['db'];var jayson=require(_0x987a('0x1c'));var client=jayson['client'][_0x987a('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x3c104e,_0x598585,_0x54f69b,_0xb032be){return new BPromise(function(_0x37e75e,_0x411363){var _0x5c3d0b=_0xb032be||client;return _0x5c3d0b['request'](_0x3c104e,_0x54f69b)['then'](function(_0x87547){logger['info'](_0x987a('0x1e'),_0x598585,_0x987a('0x1f'));logger['debug']('VoiceContext,\x20%s,\x20%s,\x20%s',_0x598585,_0x987a('0x1f'),JSON[_0x987a('0x20')](_0x87547));if(_0x87547[_0x987a('0x21')]){if(_0x87547[_0x987a('0x21')]['code']===0x1f4){logger[_0x987a('0x21')](_0x987a('0x1e'),_0x598585,_0x87547['error'][_0x987a('0x22')]);return _0x411363(_0x87547[_0x987a('0x21')][_0x987a('0x22')]);}logger[_0x987a('0x21')]('VoiceContext,\x20%s,\x20%s',_0x598585,_0x87547[_0x987a('0x21')][_0x987a('0x22')]);return _0x37e75e(_0x87547[_0x987a('0x21')]['message']);}else{logger['info'](_0x987a('0x1e'),_0x598585,'request\x20sent');_0x37e75e(_0x87547['result'][_0x987a('0x22')]);}})[_0x987a('0x23')](function(_0x4b041d){logger[_0x987a('0x21')](_0x987a('0x1e'),_0x598585,_0x4b041d);_0x411363(_0x4b041d);});});}function respondWithStatusCode(_0x1c2298,_0x4c8b85){_0x4c8b85=_0x4c8b85||0xcc;return function(_0x479a1c){if(_0x479a1c){return _0x1c2298[_0x987a('0x24')](_0x4c8b85);}return _0x1c2298[_0x987a('0x25')](_0x4c8b85)['end']();};}function respondWithResult(_0x2862fd,_0xbd2cb6){_0xbd2cb6=_0xbd2cb6||0xc8;return function(_0x16327c){if(_0x16327c){return _0x2862fd[_0x987a('0x25')](_0xbd2cb6)[_0x987a('0x26')](_0x16327c);}};}function respondWithFilteredResult(_0x1796d7,_0x166b63){return function(_0x3be2f0){if(_0x3be2f0){var _0xd82851=typeof _0x166b63[_0x987a('0x27')]===_0x987a('0x28')&&typeof _0x166b63['limit']===_0x987a('0x28');var _0x4fa65a=_0x3be2f0[_0x987a('0x29')];var _0x3a23db=_0xd82851?0x0:_0x166b63[_0x987a('0x27')];var _0x2cb910=_0xd82851?_0x3be2f0['count']:_0x166b63[_0x987a('0x27')]+_0x166b63[_0x987a('0x2a')];var _0x344604;if(_0x2cb910>=_0x4fa65a){_0x2cb910=_0x4fa65a;_0x344604=0xc8;}else{_0x344604=0xce;}_0x1796d7[_0x987a('0x25')](_0x344604);return _0x1796d7['set']('Content-Range',_0x3a23db+'-'+_0x2cb910+'/'+_0x4fa65a)[_0x987a('0x26')](_0x3be2f0);}return null;};}function patchUpdates(_0x21bbfb){return function(_0x57afac){try{jsonpatch[_0x987a('0x2b')](_0x57afac,_0x21bbfb,!![]);}catch(_0x1010c1){return BPromise[_0x987a('0x2c')](_0x1010c1);}return _0x57afac['save']();};}function saveUpdates(_0x3eeb72,_0x390824){return function(_0x11f186){if(_0x11f186){return _0x11f186[_0x987a('0x2d')](_0x3eeb72)[_0x987a('0x2e')](function(_0x2e362d){return _0x2e362d;});}return null;};}function removeEntity(_0x1a9a9b,_0x2c1104){return function(_0x1cb86f){if(_0x1cb86f){return _0x1cb86f[_0x987a('0x2f')]()['then'](function(){var _0x1e22ba=_0x1cb86f[_0x987a('0x30')]({'plain':!![]});var _0x43d0ce='Contexts';return db[_0x987a('0x31')][_0x987a('0x2f')]({'where':{'type':_0x43d0ce,'resourceId':_0x1e22ba['id']}})['then'](function(){return _0x1cb86f;});})[_0x987a('0x2e')](function(){_0x1a9a9b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x556d26,_0x351ef4){return function(_0x13a5e7){if(!_0x13a5e7){_0x556d26[_0x987a('0x24')](0x194);}return _0x13a5e7;};}function handleError(_0x13592c,_0x1783dc){_0x1783dc=_0x1783dc||0x1f4;return function(_0x21326a){logger[_0x987a('0x21')](_0x21326a[_0x987a('0x32')]);if(_0x21326a[_0x987a('0x33')]){delete _0x21326a[_0x987a('0x33')];}_0x13592c[_0x987a('0x25')](_0x1783dc)[_0x987a('0x34')](_0x21326a);};}exports['index']=function(_0x2d7db1,_0x160404){var _0x4b3278={},_0x4c5cba={},_0xa92f2f={'count':0x0,'rows':[]};var _0x1649ff=_['map'](db['VoiceContext'][_0x987a('0x35')],function(_0x19aec7){return{'name':_0x19aec7[_0x987a('0x36')],'type':_0x19aec7['type'][_0x987a('0x37')]};});_0x4c5cba[_0x987a('0x38')]=_['map'](_0x1649ff,_0x987a('0x33'));_0x4c5cba[_0x987a('0x39')]=_['keys'](_0x2d7db1[_0x987a('0x39')]);_0x4c5cba['filters']=_[_0x987a('0x3a')](_0x4c5cba['model'],_0x4c5cba[_0x987a('0x39')]);_0x4b3278[_0x987a('0x3b')]=_[_0x987a('0x3a')](_0x4c5cba[_0x987a('0x38')],qs['fields'](_0x2d7db1[_0x987a('0x39')][_0x987a('0x3c')]));_0x4b3278['attributes']=_0x4b3278[_0x987a('0x3b')][_0x987a('0x3d')]?_0x4b3278[_0x987a('0x3b')]:_0x4c5cba['model'];if(!_0x2d7db1[_0x987a('0x39')][_0x987a('0x3e')](_0x987a('0x3f'))){_0x4b3278['limit']=qs[_0x987a('0x2a')](_0x2d7db1['query'][_0x987a('0x2a')]);_0x4b3278['offset']=qs[_0x987a('0x27')](_0x2d7db1['query'][_0x987a('0x27')]);}_0x4b3278['order']=qs['sort'](_0x2d7db1[_0x987a('0x39')]['sort']);_0x4b3278[_0x987a('0x40')]=qs['filters'](_['pick'](_0x2d7db1['query'],_0x4c5cba['filters']),_0x1649ff);if(_0x2d7db1['query'][_0x987a('0x41')]){_0x4b3278[_0x987a('0x40')]=_['merge'](_0x4b3278[_0x987a('0x40')],{'$or':_['map'](_0x1649ff,function(_0x33fce3){if(_0x33fce3[_0x987a('0x42')]!==_0x987a('0x43')){var _0x983ffe={};_0x983ffe[_0x33fce3[_0x987a('0x33')]]={'$like':'%'+_0x2d7db1[_0x987a('0x39')][_0x987a('0x41')]+'%'};return _0x983ffe;}})});}_0x4b3278=_[_0x987a('0x44')]({},_0x4b3278,_0x2d7db1[_0x987a('0x45')]);var _0x35b654={'where':_0x4b3278[_0x987a('0x40')]};return db['VoiceContext'][_0x987a('0x29')](_0x35b654)['then'](function(_0x2c087e){_0xa92f2f['count']=_0x2c087e;if(_0x2d7db1['query'][_0x987a('0x46')]){_0x4b3278[_0x987a('0x47')]=[{'all':!![]}];}return db[_0x987a('0x48')]['findAll'](_0x4b3278);})[_0x987a('0x2e')](function(_0x26d878){_0xa92f2f[_0x987a('0x49')]=_0x26d878;return _0xa92f2f;})['then'](respondWithFilteredResult(_0x160404,_0x4b3278))['catch'](handleError(_0x160404,null));};exports[_0x987a('0x4a')]=function(_0x2ff284,_0x3e8831){var _0x3c05d7={'raw':![],'where':{'id':_0x2ff284[_0x987a('0x4b')]['id']}},_0x3ebf1a={};_0x3ebf1a[_0x987a('0x38')]=_['keys'](db[_0x987a('0x48')][_0x987a('0x35')]);_0x3ebf1a[_0x987a('0x39')]=_[_0x987a('0x4c')](_0x2ff284[_0x987a('0x39')]);_0x3ebf1a['filters']=_['intersection'](_0x3ebf1a[_0x987a('0x38')],_0x3ebf1a['query']);_0x3c05d7[_0x987a('0x3b')]=_[_0x987a('0x3a')](_0x3ebf1a['model'],qs[_0x987a('0x3c')](_0x2ff284[_0x987a('0x39')]['fields']));_0x3c05d7[_0x987a('0x3b')]=_0x3c05d7[_0x987a('0x3b')][_0x987a('0x3d')]?_0x3c05d7[_0x987a('0x3b')]:_0x3ebf1a['model'];if(_0x2ff284[_0x987a('0x39')][_0x987a('0x46')]){_0x3c05d7[_0x987a('0x47')]=[{'all':!![]}];}_0x3c05d7=_[_0x987a('0x44')]({},_0x3c05d7,_0x2ff284['options']);return db['VoiceContext'][_0x987a('0x4d')](_0x3c05d7)['then'](handleEntityNotFound(_0x3e8831,null))[_0x987a('0x2e')](respondWithResult(_0x3e8831,null))['catch'](handleError(_0x3e8831,null));};exports[_0x987a('0x4e')]=function(_0x25ceb2,_0x1215f2,_0x42fd50){var _0xac0ed7;return db[_0x987a('0x48')]['create'](_0x25ceb2[_0x987a('0x4f')],{'raw':!![]})[_0x987a('0x2e')](function(_0x249746){_0xac0ed7=_0x249746;return db['VoiceContext'][_0x987a('0x50')]({'raw':!![]});})[_0x987a('0x2e')](function(_0x2fa2ce){var _0x261009=fs[_0x987a('0x51')](path[_0x987a('0x52')](config[_0x987a('0x53')],'server/files/templates/context.ejs'),_0x987a('0x54'));var _0x533c29=ejs[_0x987a('0x55')](_0x261009,{'contexts':_0x2fa2ce||[]});fs[_0x987a('0x56')](_0x987a('0x57'),_0x533c29);})['then'](function(){return respondWithRpcPromise(_0x987a('0x58'),'create',{'module':_0x987a('0x59')});})[_0x987a('0x2e')](function(){var _0x3f2c6b=_0x25ceb2['user'][_0x987a('0x30')]({'plain':!![]});if(!_0x3f2c6b)throw new Error(_0x987a('0x5a'));if(_0x3f2c6b['role']==='user'){var _0x19199a=_0xac0ed7[_0x987a('0x30')]({'plain':!![]});return db[_0x987a('0x5b')]['find']({'where':{'name':'Contexts','userProfileId':_0x3f2c6b[_0x987a('0x5c')]},'raw':!![]})[_0x987a('0x2e')](function(_0x1f7a05){if(_0x1f7a05&&_0x1f7a05[_0x987a('0x5d')]===0x0){return db['UserProfileResource'][_0x987a('0x4e')]({'name':_0x19199a[_0x987a('0x33')],'resourceId':_0x19199a['id'],'type':_0x1f7a05[_0x987a('0x33')],'sectionId':_0x1f7a05['id']},{})[_0x987a('0x2e')](function(){return _0xac0ed7;});}else{return _0xac0ed7;}})['catch'](function(_0x25847c){logger[_0x987a('0x21')](_0x987a('0x5e'),_0x25847c);throw _0x25847c;});}return _0xac0ed7;})[_0x987a('0x2e')](respondWithResult(_0x1215f2,0xc9))[_0x987a('0x23')](handleError(_0x1215f2,null));};exports[_0x987a('0x2d')]=function(_0x8c2b5b,_0x194a6a,_0x1999ce){var _0x31909b;return db[_0x987a('0x48')][_0x987a('0x4d')]({'where':{'id':_0x8c2b5b['params']['id']}})[_0x987a('0x2e')](handleEntityNotFound(_0x194a6a,null))['then'](saveUpdates(_0x8c2b5b[_0x987a('0x4f')],null))[_0x987a('0x2e')](function(_0x59d5f9){if(_0x59d5f9){_0x31909b=_0x59d5f9;return db[_0x987a('0x48')]['findAll']({'raw':!![]});}})[_0x987a('0x2e')](function(_0x2f0bdf){var _0x13c57c=fs[_0x987a('0x51')](path[_0x987a('0x52')](config[_0x987a('0x53')],_0x987a('0x5f')),_0x987a('0x54'));var _0x3f589e=ejs['render'](_0x13c57c,{'contexts':_0x2f0bdf||[]});fs[_0x987a('0x56')](_0x987a('0x57'),_0x3f589e);})[_0x987a('0x2e')](function(){return respondWithRpcPromise('Reload','update',{'module':_0x987a('0x59')});})['then'](function(){return _0x31909b;})[_0x987a('0x2e')](respondWithResult(_0x194a6a,null))[_0x987a('0x23')](handleError(_0x194a6a,null));};exports[_0x987a('0x2f')]=function(_0x5a6303,_0x5e603b,_0x234af3){var _0x3b9b04;return db[_0x987a('0x48')][_0x987a('0x4d')]({'where':{'id':_0x5a6303[_0x987a('0x4b')]['id']}})['then'](handleEntityNotFound(_0x5e603b,null))[_0x987a('0x2e')](removeEntity(_0x5e603b,null))[_0x987a('0x2e')](function(){return db[_0x987a('0x48')]['findAll']({'raw':!![]});})['then'](function(_0x26bfc0){var _0x239aa0=fs[_0x987a('0x51')](path[_0x987a('0x52')](config[_0x987a('0x53')],_0x987a('0x5f')),_0x987a('0x54'));var _0x3a8991=ejs[_0x987a('0x55')](_0x239aa0,{'contexts':_0x26bfc0});fs[_0x987a('0x56')](_0x987a('0x57'),_0x3a8991);return respondWithRpcPromise(_0x987a('0x58'),'destroy',{'module':_0x987a('0x59')});})[_0x987a('0x23')](handleError(_0x5e603b,null));};
\ No newline at end of file
+var _0x9a34=['moment','bluebird','mustache','util','path','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','request','then','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','VoiceContext,\x20%s,\x20%s','catch','sendStatus','status','end','json','offset','count','limit','Content-Range','apply','reject','save','update','destroy','get','UserProfileResource','name','send','index','map','VoiceContext','rawAttributes','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','params','keys','create','body','join','server/files/templates/context.ejs','utf8','render','/etc/asterisk/extensions_xcally_contexts.conf','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','Contexts','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','root','writeFileSync','Reload','rimraf','zip-dir','fast-json-patch'];(function(_0x49fa47,_0x445242){var _0x17d038=function(_0x36b4fb){while(--_0x36b4fb){_0x49fa47['push'](_0x49fa47['shift']());}};_0x17d038(++_0x445242);}(_0x9a34,0x12f));var _0x49a3=function(_0x338d20,_0x2f9b16){_0x338d20=_0x338d20-0x0;var _0x558026=_0x9a34[_0x338d20];return _0x558026;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x49a3('0x0'));var zipdir=require(_0x49a3('0x1'));var jsonpatch=require(_0x49a3('0x2'));var rp=require('request-promise');var moment=require(_0x49a3('0x3'));var BPromise=require(_0x49a3('0x4'));var Mustache=require(_0x49a3('0x5'));var util=require(_0x49a3('0x6'));var path=require(_0x49a3('0x7'));var sox=require(_0x49a3('0x8'));var csv=require('to-csv');var ejs=require(_0x49a3('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x49a3('0xa'));var squel=require('squel');var crypto=require(_0x49a3('0xb'));var jsforce=require(_0x49a3('0xc'));var deskjs=require(_0x49a3('0xd'));var toCsv=require(_0x49a3('0xe'));var querystring=require(_0x49a3('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x49a3('0x10'));var as=require(_0x49a3('0x11'));var hardwareService=require(_0x49a3('0x12'));var logger=require('../../config/logger')(_0x49a3('0x13'));var utils=require(_0x49a3('0x14'));var config=require(_0x49a3('0x15'));var licenseUtil=require(_0x49a3('0x16'));var db=require(_0x49a3('0x17'))['db'];var jayson=require(_0x49a3('0x18'));var client=jayson[_0x49a3('0x19')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1b3780,_0x400a3d,_0xe440b7,_0x589b10){return new BPromise(function(_0x21e98d,_0x48e23a){var _0x2f8075=_0x589b10||client;return _0x2f8075[_0x49a3('0x1a')](_0x1b3780,_0xe440b7)[_0x49a3('0x1b')](function(_0x3dc6c2){logger['info']('VoiceContext,\x20%s,\x20%s',_0x400a3d,'request\x20sent');logger['debug'](_0x49a3('0x1c'),_0x400a3d,_0x49a3('0x1d'),JSON[_0x49a3('0x1e')](_0x3dc6c2));if(_0x3dc6c2['error']){if(_0x3dc6c2['error'][_0x49a3('0x1f')]===0x1f4){logger[_0x49a3('0x20')]('VoiceContext,\x20%s,\x20%s',_0x400a3d,_0x3dc6c2['error'][_0x49a3('0x21')]);return _0x48e23a(_0x3dc6c2[_0x49a3('0x20')][_0x49a3('0x21')]);}logger['error'](_0x49a3('0x22'),_0x400a3d,_0x3dc6c2[_0x49a3('0x20')][_0x49a3('0x21')]);return _0x21e98d(_0x3dc6c2[_0x49a3('0x20')][_0x49a3('0x21')]);}else{logger['info'](_0x49a3('0x22'),_0x400a3d,'request\x20sent');_0x21e98d(_0x3dc6c2['result']['message']);}})[_0x49a3('0x23')](function(_0x172330){logger['error'](_0x49a3('0x22'),_0x400a3d,_0x172330);_0x48e23a(_0x172330);});});}function respondWithStatusCode(_0xbd5711,_0x21621e){_0x21621e=_0x21621e||0xcc;return function(_0x2c0dfb){if(_0x2c0dfb){return _0xbd5711[_0x49a3('0x24')](_0x21621e);}return _0xbd5711[_0x49a3('0x25')](_0x21621e)[_0x49a3('0x26')]();};}function respondWithResult(_0x2e884c,_0x4a7f58){_0x4a7f58=_0x4a7f58||0xc8;return function(_0x142d1a){if(_0x142d1a){return _0x2e884c[_0x49a3('0x25')](_0x4a7f58)[_0x49a3('0x27')](_0x142d1a);}};}function respondWithFilteredResult(_0x1c95e9,_0x2b6539){return function(_0x596a22){if(_0x596a22){var _0x586823=typeof _0x2b6539[_0x49a3('0x28')]==='undefined'&&typeof _0x2b6539['limit']==='undefined';var _0x3989dc=_0x596a22['count'];var _0x42d146=_0x586823?0x0:_0x2b6539[_0x49a3('0x28')];var _0x4ef14b=_0x586823?_0x596a22[_0x49a3('0x29')]:_0x2b6539[_0x49a3('0x28')]+_0x2b6539[_0x49a3('0x2a')];var _0xdf39ff;if(_0x4ef14b>=_0x3989dc){_0x4ef14b=_0x3989dc;_0xdf39ff=0xc8;}else{_0xdf39ff=0xce;}_0x1c95e9['status'](_0xdf39ff);return _0x1c95e9['set'](_0x49a3('0x2b'),_0x42d146+'-'+_0x4ef14b+'/'+_0x3989dc)[_0x49a3('0x27')](_0x596a22);}return null;};}function patchUpdates(_0x466393){return function(_0x108475){try{jsonpatch[_0x49a3('0x2c')](_0x108475,_0x466393,!![]);}catch(_0x30cb77){return BPromise[_0x49a3('0x2d')](_0x30cb77);}return _0x108475[_0x49a3('0x2e')]();};}function saveUpdates(_0x535098,_0x16c2e5){return function(_0x19fd80){if(_0x19fd80){return _0x19fd80[_0x49a3('0x2f')](_0x535098)[_0x49a3('0x1b')](function(_0x9193b){return _0x9193b;});}return null;};}function removeEntity(_0x396b31,_0x535530){return function(_0x3776fd){if(_0x3776fd){return _0x3776fd[_0x49a3('0x30')]()['then'](function(){var _0x4c3046=_0x3776fd[_0x49a3('0x31')]({'plain':!![]});var _0x37c32c='Contexts';return db[_0x49a3('0x32')][_0x49a3('0x30')]({'where':{'type':_0x37c32c,'resourceId':_0x4c3046['id']}})[_0x49a3('0x1b')](function(){return _0x3776fd;});})[_0x49a3('0x1b')](function(){_0x396b31[_0x49a3('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x68b62c,_0x54ed11){return function(_0xb31b21){if(!_0xb31b21){_0x68b62c[_0x49a3('0x24')](0x194);}return _0xb31b21;};}function handleError(_0xade7b0,_0x550be9){_0x550be9=_0x550be9||0x1f4;return function(_0x557fe9){logger[_0x49a3('0x20')](_0x557fe9['stack']);if(_0x557fe9[_0x49a3('0x33')]){delete _0x557fe9['name'];}_0xade7b0[_0x49a3('0x25')](_0x550be9)[_0x49a3('0x34')](_0x557fe9);};}exports[_0x49a3('0x35')]=function(_0x385cfa,_0x2b6924){var _0x20f2dc={},_0x1b9b00={},_0x4a8908={'count':0x0,'rows':[]};var _0x4aa58d=_[_0x49a3('0x36')](db[_0x49a3('0x37')][_0x49a3('0x38')],function(_0x33b977){return{'name':_0x33b977['fieldName'],'type':_0x33b977['type'][_0x49a3('0x39')]};});_0x1b9b00[_0x49a3('0x3a')]=_[_0x49a3('0x36')](_0x4aa58d,_0x49a3('0x33'));_0x1b9b00[_0x49a3('0x3b')]=_['keys'](_0x385cfa[_0x49a3('0x3b')]);_0x1b9b00['filters']=_[_0x49a3('0x3c')](_0x1b9b00[_0x49a3('0x3a')],_0x1b9b00[_0x49a3('0x3b')]);_0x20f2dc[_0x49a3('0x3d')]=_[_0x49a3('0x3c')](_0x1b9b00[_0x49a3('0x3a')],qs[_0x49a3('0x3e')](_0x385cfa['query'][_0x49a3('0x3e')]));_0x20f2dc['attributes']=_0x20f2dc[_0x49a3('0x3d')][_0x49a3('0x3f')]?_0x20f2dc[_0x49a3('0x3d')]:_0x1b9b00[_0x49a3('0x3a')];if(!_0x385cfa['query'][_0x49a3('0x40')](_0x49a3('0x41'))){_0x20f2dc['limit']=qs[_0x49a3('0x2a')](_0x385cfa[_0x49a3('0x3b')][_0x49a3('0x2a')]);_0x20f2dc[_0x49a3('0x28')]=qs['offset'](_0x385cfa[_0x49a3('0x3b')][_0x49a3('0x28')]);}_0x20f2dc[_0x49a3('0x42')]=qs[_0x49a3('0x43')](_0x385cfa[_0x49a3('0x3b')][_0x49a3('0x43')]);_0x20f2dc[_0x49a3('0x44')]=qs[_0x49a3('0x45')](_[_0x49a3('0x46')](_0x385cfa[_0x49a3('0x3b')],_0x1b9b00[_0x49a3('0x45')]),_0x4aa58d);if(_0x385cfa[_0x49a3('0x3b')][_0x49a3('0x47')]){_0x20f2dc[_0x49a3('0x44')]=_[_0x49a3('0x48')](_0x20f2dc[_0x49a3('0x44')],{'$or':_[_0x49a3('0x36')](_0x4aa58d,function(_0x5496a9){if(_0x5496a9[_0x49a3('0x49')]!==_0x49a3('0x4a')){var _0x36cea1={};_0x36cea1[_0x5496a9[_0x49a3('0x33')]]={'$like':'%'+_0x385cfa[_0x49a3('0x3b')][_0x49a3('0x47')]+'%'};return _0x36cea1;}})});}_0x20f2dc=_[_0x49a3('0x48')]({},_0x20f2dc,_0x385cfa[_0x49a3('0x4b')]);var _0x40bd5b={'where':_0x20f2dc[_0x49a3('0x44')]};return db[_0x49a3('0x37')][_0x49a3('0x29')](_0x40bd5b)[_0x49a3('0x1b')](function(_0x40d689){_0x4a8908[_0x49a3('0x29')]=_0x40d689;if(_0x385cfa[_0x49a3('0x3b')][_0x49a3('0x4c')]){_0x20f2dc[_0x49a3('0x4d')]=[{'all':!![]}];}return db['VoiceContext'][_0x49a3('0x4e')](_0x20f2dc);})['then'](function(_0x4f75e3){_0x4a8908[_0x49a3('0x4f')]=_0x4f75e3;return _0x4a8908;})[_0x49a3('0x1b')](respondWithFilteredResult(_0x2b6924,_0x20f2dc))[_0x49a3('0x23')](handleError(_0x2b6924,null));};exports['show']=function(_0x6740bc,_0xb32705){var _0x51aa7f={'raw':![],'where':{'id':_0x6740bc[_0x49a3('0x50')]['id']}},_0x3694f7={};_0x3694f7[_0x49a3('0x3a')]=_[_0x49a3('0x51')](db[_0x49a3('0x37')]['rawAttributes']);_0x3694f7[_0x49a3('0x3b')]=_['keys'](_0x6740bc[_0x49a3('0x3b')]);_0x3694f7[_0x49a3('0x45')]=_[_0x49a3('0x3c')](_0x3694f7[_0x49a3('0x3a')],_0x3694f7[_0x49a3('0x3b')]);_0x51aa7f[_0x49a3('0x3d')]=_[_0x49a3('0x3c')](_0x3694f7[_0x49a3('0x3a')],qs[_0x49a3('0x3e')](_0x6740bc[_0x49a3('0x3b')][_0x49a3('0x3e')]));_0x51aa7f['attributes']=_0x51aa7f[_0x49a3('0x3d')][_0x49a3('0x3f')]?_0x51aa7f[_0x49a3('0x3d')]:_0x3694f7[_0x49a3('0x3a')];if(_0x6740bc[_0x49a3('0x3b')]['includeAll']){_0x51aa7f[_0x49a3('0x4d')]=[{'all':!![]}];}_0x51aa7f=_['merge']({},_0x51aa7f,_0x6740bc['options']);return db[_0x49a3('0x37')]['find'](_0x51aa7f)[_0x49a3('0x1b')](handleEntityNotFound(_0xb32705,null))[_0x49a3('0x1b')](respondWithResult(_0xb32705,null))[_0x49a3('0x23')](handleError(_0xb32705,null));};exports['create']=function(_0x34be30,_0x29d4ce,_0x43c631){var _0x17dec8;return db[_0x49a3('0x37')][_0x49a3('0x52')](_0x34be30[_0x49a3('0x53')],{'raw':!![]})[_0x49a3('0x1b')](function(_0x27ea03){_0x17dec8=_0x27ea03;return db[_0x49a3('0x37')][_0x49a3('0x4e')]({'raw':!![]});})[_0x49a3('0x1b')](function(_0x1dbf20){var _0x3d8f18=fs['readFileSync'](path[_0x49a3('0x54')](config['root'],_0x49a3('0x55')),_0x49a3('0x56'));var _0x2efae2=ejs[_0x49a3('0x57')](_0x3d8f18,{'contexts':_0x1dbf20||[]});fs['writeFileSync'](_0x49a3('0x58'),_0x2efae2);})[_0x49a3('0x1b')](function(){return respondWithRpcPromise('Reload',_0x49a3('0x52'),{'module':_0x49a3('0x59')});})[_0x49a3('0x1b')](function(){var _0x4807b6=_0x34be30['user'][_0x49a3('0x31')]({'plain':!![]});if(!_0x4807b6)throw new Error(_0x49a3('0x5a'));if(_0x4807b6[_0x49a3('0x5b')]==='user'){var _0x54d631=_0x17dec8[_0x49a3('0x31')]({'plain':!![]});return db[_0x49a3('0x5c')][_0x49a3('0x5d')]({'where':{'name':_0x49a3('0x5e'),'userProfileId':_0x4807b6[_0x49a3('0x5f')]},'raw':!![]})[_0x49a3('0x1b')](function(_0x4ba30e){if(_0x4ba30e&&_0x4ba30e[_0x49a3('0x60')]===0x0){return db[_0x49a3('0x32')][_0x49a3('0x52')]({'name':_0x54d631[_0x49a3('0x33')],'resourceId':_0x54d631['id'],'type':_0x4ba30e['name'],'sectionId':_0x4ba30e['id']},{})[_0x49a3('0x1b')](function(){return _0x17dec8;});}else{return _0x17dec8;}})[_0x49a3('0x23')](function(_0x1aeee1){logger[_0x49a3('0x20')](_0x49a3('0x61'),_0x1aeee1);throw _0x1aeee1;});}return _0x17dec8;})[_0x49a3('0x1b')](respondWithResult(_0x29d4ce,0xc9))['catch'](handleError(_0x29d4ce,null));};exports[_0x49a3('0x2f')]=function(_0xa8c570,_0x5361e0,_0x5ced33){var _0x27b7ed;return db[_0x49a3('0x37')][_0x49a3('0x5d')]({'where':{'id':_0xa8c570[_0x49a3('0x50')]['id']}})[_0x49a3('0x1b')](handleEntityNotFound(_0x5361e0,null))[_0x49a3('0x1b')](saveUpdates(_0xa8c570[_0x49a3('0x53')],null))[_0x49a3('0x1b')](function(_0x13f0dc){if(_0x13f0dc){_0x27b7ed=_0x13f0dc;return db[_0x49a3('0x37')]['findAll']({'raw':!![]});}})[_0x49a3('0x1b')](function(_0x3b7da9){var _0x194b7b=fs[_0x49a3('0x62')](path[_0x49a3('0x54')](config[_0x49a3('0x63')],_0x49a3('0x55')),_0x49a3('0x56'));var _0x499343=ejs['render'](_0x194b7b,{'contexts':_0x3b7da9||[]});fs[_0x49a3('0x64')](_0x49a3('0x58'),_0x499343);})[_0x49a3('0x1b')](function(){return respondWithRpcPromise(_0x49a3('0x65'),'update',{'module':'chan_sip.so'});})[_0x49a3('0x1b')](function(){return _0x27b7ed;})[_0x49a3('0x1b')](respondWithResult(_0x5361e0,null))['catch'](handleError(_0x5361e0,null));};exports[_0x49a3('0x30')]=function(_0x28ef7b,_0x2b3dba,_0x389ed0){var _0x59745b;return db[_0x49a3('0x37')][_0x49a3('0x5d')]({'where':{'id':_0x28ef7b[_0x49a3('0x50')]['id']}})[_0x49a3('0x1b')](handleEntityNotFound(_0x2b3dba,null))[_0x49a3('0x1b')](removeEntity(_0x2b3dba,null))[_0x49a3('0x1b')](function(){return db[_0x49a3('0x37')][_0x49a3('0x4e')]({'raw':!![]});})[_0x49a3('0x1b')](function(_0x54da83){var _0x573367=fs[_0x49a3('0x62')](path[_0x49a3('0x54')](config[_0x49a3('0x63')],'server/files/templates/context.ejs'),_0x49a3('0x56'));var _0xb28e97=ejs['render'](_0x573367,{'contexts':_0x54da83});fs[_0x49a3('0x64')](_0x49a3('0x58'),_0xb28e97);return respondWithRpcPromise('Reload',_0x49a3('0x30'),{'module':_0x49a3('0x59')});})[_0x49a3('0x23')](handleError(_0x2b3dba,null));};
\ No newline at end of file
index cf51aad..1c21dd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4430=['define','VoiceContext','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceContext.attributes','exports'];(function(_0x599355,_0x162f11){var _0x2b3ae5=function(_0x55fa8e){while(--_0x55fa8e){_0x599355['push'](_0x599355['shift']());}};_0x2b3ae5(++_0x162f11);}(_0x4430,0x106));var _0x0443=function(_0x37ec27,_0x51cfeb){_0x37ec27=_0x37ec27-0x0;var _0x26f0c2=_0x4430[_0x37ec27];return _0x26f0c2;};'use strict';var _=require(_0x0443('0x0'));var util=require(_0x0443('0x1'));var logger=require(_0x0443('0x2'))(_0x0443('0x3'));var moment=require(_0x0443('0x4'));var BPromise=require('bluebird');var rp=require(_0x0443('0x5'));var fs=require('fs');var path=require(_0x0443('0x6'));var rimraf=require(_0x0443('0x7'));var config=require(_0x0443('0x8'));var attributes=require(_0x0443('0x9'));module[_0x0443('0xa')]=function(_0xd5f205,_0x6cfbb6){return _0xd5f205[_0x0443('0xb')](_0x0443('0xc'),attributes,{'tableName':'voice_contexts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb35e=['./voiceContext.attributes','exports','define','VoiceContext','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xb35e,0x190));var _0xeb35=function(_0x42240a,_0x33dd2a){_0x42240a=_0x42240a-0x0;var _0xbed48b=_0xb35e[_0x42240a];return _0xbed48b;};'use strict';var _=require(_0xeb35('0x0'));var util=require('util');var logger=require(_0xeb35('0x1'))(_0xeb35('0x2'));var moment=require('moment');var BPromise=require(_0xeb35('0x3'));var rp=require(_0xeb35('0x4'));var fs=require('fs');var path=require(_0xeb35('0x5'));var rimraf=require(_0xeb35('0x6'));var config=require(_0xeb35('0x7'));var attributes=require(_0xeb35('0x8'));module[_0xeb35('0x9')]=function(_0x11b0bb,_0x182420){return _0x11b0bb[_0xeb35('0xa')](_0xeb35('0xb'),attributes,{'tableName':'voice_contexts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e48ee8b..6deea1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60a5=['then','VoiceContext,\x20%s,\x20%s','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request'];(function(_0x2d64fc,_0x42b2a7){var _0x2c8556=function(_0x4b29da){while(--_0x4b29da){_0x2d64fc['push'](_0x2d64fc['shift']());}};_0x2c8556(++_0x42b2a7);}(_0x60a5,0x83));var _0x560a=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0x60a5[_0x56482c];return _0x5aae7a;};'use strict';var _=require(_0x560a('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x560a('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x560a('0x2'))['db'];var utils=require(_0x560a('0x3'));var logger=require(_0x560a('0x4'))('rpc');var config=require(_0x560a('0x5'));var jayson=require(_0x560a('0x6'));var client=jayson[_0x560a('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x52fa23,_0x55eb57,_0x53a664){return new BPromise(function(_0x3ac39e,_0x1891ea){return client[_0x560a('0x8')](_0x52fa23,_0x53a664)[_0x560a('0x9')](function(_0x52c52e){logger['info'](_0x560a('0xa'),_0x55eb57,'request\x20sent');logger[_0x560a('0xb')](_0x560a('0xc'),_0x55eb57,'request\x20sent',JSON[_0x560a('0xd')](_0x52c52e));if(_0x52c52e[_0x560a('0xe')]){if(_0x52c52e[_0x560a('0xe')][_0x560a('0xf')]===0x1f4){logger[_0x560a('0xe')](_0x560a('0xa'),_0x55eb57,_0x52c52e[_0x560a('0xe')][_0x560a('0x10')]);return _0x1891ea(_0x52c52e[_0x560a('0xe')]['message']);}logger[_0x560a('0xe')](_0x560a('0xa'),_0x55eb57,_0x52c52e[_0x560a('0xe')]['message']);return _0x3ac39e(_0x52c52e[_0x560a('0xe')][_0x560a('0x10')]);}else{logger[_0x560a('0x11')](_0x560a('0xa'),_0x55eb57,'request\x20sent');_0x3ac39e(_0x52c52e[_0x560a('0x12')][_0x560a('0x10')]);}})[_0x560a('0x13')](function(_0x3f9f15){logger['error']('VoiceContext,\x20%s,\x20%s',_0x55eb57,_0x3f9f15);_0x1891ea(_0x3f9f15);});});}
\ No newline at end of file
+var _0x4dd3=['message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x55ec71,_0x53e227){var _0x419323=function(_0x4acbdb){while(--_0x4acbdb){_0x55ec71['push'](_0x55ec71['shift']());}};_0x419323(++_0x53e227);}(_0x4dd3,0xf5));var _0x34dd=function(_0x29a29f,_0x155ce7){_0x29a29f=_0x29a29f-0x0;var _0x443ea3=_0x4dd3[_0x29a29f];return _0x443ea3;};'use strict';var _=require(_0x34dd('0x0'));var util=require(_0x34dd('0x1'));var moment=require(_0x34dd('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x34dd('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x34dd('0x4'));var logger=require(_0x34dd('0x5'))(_0x34dd('0x6'));var config=require('../../config/environment');var jayson=require(_0x34dd('0x7'));var client=jayson[_0x34dd('0x8')][_0x34dd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x365482,_0x3a3429,_0x5e8911){return new BPromise(function(_0x4cb036,_0xc0c516){return client[_0x34dd('0xa')](_0x365482,_0x5e8911)[_0x34dd('0xb')](function(_0x4e1bc8){logger[_0x34dd('0xc')](_0x34dd('0xd'),_0x3a3429,_0x34dd('0xe'));logger[_0x34dd('0xf')](_0x34dd('0x10'),_0x3a3429,_0x34dd('0xe'),JSON['stringify'](_0x4e1bc8));if(_0x4e1bc8[_0x34dd('0x11')]){if(_0x4e1bc8[_0x34dd('0x11')][_0x34dd('0x12')]===0x1f4){logger[_0x34dd('0x11')](_0x34dd('0xd'),_0x3a3429,_0x4e1bc8['error']['message']);return _0xc0c516(_0x4e1bc8[_0x34dd('0x11')][_0x34dd('0x13')]);}logger[_0x34dd('0x11')]('VoiceContext,\x20%s,\x20%s',_0x3a3429,_0x4e1bc8[_0x34dd('0x11')]['message']);return _0x4cb036(_0x4e1bc8[_0x34dd('0x11')][_0x34dd('0x13')]);}else{logger[_0x34dd('0xc')](_0x34dd('0xd'),_0x3a3429,_0x34dd('0xe'));_0x4cb036(_0x4e1bc8[_0x34dd('0x14')]['message']);}})[_0x34dd('0x15')](function(_0x46d9f5){logger[_0x34dd('0x11')](_0x34dd('0xd'),_0x3a3429,_0x46d9f5);_0xc0c516(_0x46d9f5);});});}
\ No newline at end of file
index eed9df7..4c0d812 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd31c=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceDialReport.controller','isAuthenticated','index','/describe','describe','/:id','post','create','put','update','delete'];(function(_0x5112c2,_0xaffba){var _0xbc3a91=function(_0x3fc363){while(--_0x3fc363){_0x5112c2['push'](_0x5112c2['shift']());}};_0xbc3a91(++_0xaffba);}(_0xd31c,0xe8));var _0xcd31=function(_0x1cdcab,_0x17a516){_0x1cdcab=_0x1cdcab-0x0;var _0x4393d0=_0xd31c[_0x1cdcab];return _0x4393d0;};'use strict';var multer=require(_0xcd31('0x0'));var util=require(_0xcd31('0x1'));var path=require(_0xcd31('0x2'));var timeout=require(_0xcd31('0x3'));var express=require(_0xcd31('0x4'));var router=express[_0xcd31('0x5')]();var fs_extra=require(_0xcd31('0x6'));var auth=require(_0xcd31('0x7'));var interaction=require(_0xcd31('0x8'));var config=require(_0xcd31('0x9'));var controller=require(_0xcd31('0xa'));router['get']('/',auth[_0xcd31('0xb')](),controller[_0xcd31('0xc')]);router['get'](_0xcd31('0xd'),auth[_0xcd31('0xb')](),controller[_0xcd31('0xe')]);router['get'](_0xcd31('0xf'),auth[_0xcd31('0xb')](),controller['show']);router[_0xcd31('0x10')]('/',auth[_0xcd31('0xb')](),controller[_0xcd31('0x11')]);router[_0xcd31('0x12')](_0xcd31('0xf'),auth[_0xcd31('0xb')](),controller[_0xcd31('0x13')]);router[_0xcd31('0x14')]('/:id',auth['isAuthenticated'](),controller[_0xcd31('0x15')]);module[_0xcd31('0x16')]=router;
\ No newline at end of file
+var _0xfc73=['isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../config/environment','./voiceDialReport.controller','get'];(function(_0x81fef0,_0x1f4f54){var _0xf9c3c2=function(_0x717b24){while(--_0x717b24){_0x81fef0['push'](_0x81fef0['shift']());}};_0xf9c3c2(++_0x1f4f54);}(_0xfc73,0x1e5));var _0x3fc7=function(_0x2aec52,_0x59d962){_0x2aec52=_0x2aec52-0x0;var _0x3b8835=_0xfc73[_0x2aec52];return _0x3b8835;};'use strict';var multer=require(_0x3fc7('0x0'));var util=require(_0x3fc7('0x1'));var path=require('path');var timeout=require(_0x3fc7('0x2'));var express=require(_0x3fc7('0x3'));var router=express[_0x3fc7('0x4')]();var fs_extra=require(_0x3fc7('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x3fc7('0x6'));var controller=require(_0x3fc7('0x7'));router[_0x3fc7('0x8')]('/',auth[_0x3fc7('0x9')](),controller[_0x3fc7('0xa')]);router[_0x3fc7('0x8')]('/describe',auth[_0x3fc7('0x9')](),controller['describe']);router[_0x3fc7('0x8')](_0x3fc7('0xb'),auth[_0x3fc7('0x9')](),controller[_0x3fc7('0xc')]);router[_0x3fc7('0xd')]('/',auth[_0x3fc7('0x9')](),controller[_0x3fc7('0xe')]);router[_0x3fc7('0xf')]('/:id',auth[_0x3fc7('0x9')](),controller['update']);router[_0x3fc7('0x10')]('/:id',auth[_0x3fc7('0x9')](),controller[_0x3fc7('0x11')]);module[_0x3fc7('0x12')]=router;
\ No newline at end of file
index 9ce162c..85c25e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdace=['DATE','called,connect,complete','sequelize','STRING','INTEGER'];(function(_0x401089,_0x469a19){var _0x128e7c=function(_0x286ffa){while(--_0x286ffa){_0x401089['push'](_0x401089['shift']());}};_0x128e7c(++_0x469a19);}(_0xdace,0xc5));var _0xedac=function(_0x178668,_0x1ec300){_0x178668=_0x178668-0x0;var _0x26107d=_0xdace[_0x178668];return _0x26107d;};'use strict';var Sequelize=require(_0xedac('0x0'));module['exports']={'privilege':{'type':Sequelize[_0xedac('0x1')]},'channel':{'type':Sequelize[_0xedac('0x1')]},'channelstate':{'type':Sequelize[_0xedac('0x2')]},'channelstatedesc':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xedac('0x1')]},'calleridname':{'type':Sequelize[_0xedac('0x1')]},'connectedlinenum':{'type':Sequelize[_0xedac('0x1')]},'connectedlinename':{'type':Sequelize[_0xedac('0x1')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xedac('0x1')]},'context':{'type':Sequelize[_0xedac('0x1')]},'exten':{'type':Sequelize[_0xedac('0x1')]},'priority':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize[_0xedac('0x1')]},'linkedid':{'type':Sequelize[_0xedac('0x1')]},'destchannel':{'type':Sequelize[_0xedac('0x1')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0xedac('0x1')]},'destcalleridnum':{'type':Sequelize[_0xedac('0x1')]},'destcalleridname':{'type':Sequelize[_0xedac('0x1')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0xedac('0x1')]},'destaccountcode':{'type':Sequelize[_0xedac('0x1')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0xedac('0x2')]},'destuniqueid':{'type':Sequelize[_0xedac('0x1')]},'destlinkedid':{'type':Sequelize['STRING']},'dialstring':{'type':Sequelize[_0xedac('0x1')]},'dialstatus':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0xedac('0x3')]},'answertime':{'type':Sequelize[_0xedac('0x3')]},'endtime':{'type':Sequelize[_0xedac('0x3')]},'lastevent':{'type':Sequelize[_0xedac('0x1')],'comment':_0xedac('0x4')},'routeId':{'type':Sequelize[_0xedac('0x2')]},'duration':{'type':Sequelize[_0xedac('0x2')]},'holdtime':{'type':Sequelize[_0xedac('0x2')]},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x9a19=['sequelize','exports','STRING','INTEGER','DATE','called,connect,complete'];(function(_0x53f4e3,_0x62f760){var _0x25c1ef=function(_0x4e4e95){while(--_0x4e4e95){_0x53f4e3['push'](_0x53f4e3['shift']());}};_0x25c1ef(++_0x62f760);}(_0x9a19,0x114));var _0x99a1=function(_0x54edc9,_0x345f01){_0x54edc9=_0x54edc9-0x0;var _0x2ae7a9=_0x9a19[_0x54edc9];return _0x2ae7a9;};'use strict';var Sequelize=require(_0x99a1('0x0'));module[_0x99a1('0x1')]={'privilege':{'type':Sequelize[_0x99a1('0x2')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0x99a1('0x3')]},'channelstatedesc':{'type':Sequelize[_0x99a1('0x2')]},'calleridnum':{'type':Sequelize[_0x99a1('0x2')]},'calleridname':{'type':Sequelize[_0x99a1('0x2')]},'connectedlinenum':{'type':Sequelize[_0x99a1('0x2')]},'connectedlinename':{'type':Sequelize[_0x99a1('0x2')]},'language':{'type':Sequelize[_0x99a1('0x2')]},'accountcode':{'type':Sequelize[_0x99a1('0x2')]},'context':{'type':Sequelize[_0x99a1('0x2')]},'exten':{'type':Sequelize[_0x99a1('0x2')]},'priority':{'type':Sequelize[_0x99a1('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x99a1('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x99a1('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x99a1('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x99a1('0x2')]},'destlanguage':{'type':Sequelize[_0x99a1('0x2')]},'destaccountcode':{'type':Sequelize[_0x99a1('0x2')]},'destcontext':{'type':Sequelize[_0x99a1('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x99a1('0x3')]},'destuniqueid':{'type':Sequelize[_0x99a1('0x2')]},'destlinkedid':{'type':Sequelize[_0x99a1('0x2')]},'dialstring':{'type':Sequelize[_0x99a1('0x2')]},'dialstatus':{'type':Sequelize[_0x99a1('0x2')]},'starttime':{'type':Sequelize[_0x99a1('0x4')]},'answertime':{'type':Sequelize[_0x99a1('0x4')]},'endtime':{'type':Sequelize[_0x99a1('0x4')]},'lastevent':{'type':Sequelize[_0x99a1('0x2')],'comment':_0x99a1('0x5')},'routeId':{'type':Sequelize[_0x99a1('0x3')]},'duration':{'type':Sequelize[_0x99a1('0x3')]},'holdtime':{'type':Sequelize[_0x99a1('0x3')]},'billableseconds':{'type':Sequelize[_0x99a1('0x3')]}};
\ No newline at end of file
index 75d2f06..6d71703 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa994=['catch','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','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/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','save','update','then','destroy','error','stack','name','index','map','fieldName','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','type','VIRTUAL','filter','merge','VoiceDialReport','includeAll','include','findAll','rows','show','keys','options','find','create','body','params'];(function(_0x28d18d,_0x55896b){var _0x470640=function(_0x57e78b){while(--_0x57e78b){_0x28d18d['push'](_0x28d18d['shift']());}};_0x470640(++_0x55896b);}(_0xa994,0x1d0));var _0x4a99=function(_0x403904,_0x403d93){_0x403904=_0x403904-0x0;var _0x405348=_0xa994[_0x403904];return _0x405348;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4a99('0x0'));var zipdir=require(_0x4a99('0x1'));var jsonpatch=require(_0x4a99('0x2'));var rp=require(_0x4a99('0x3'));var moment=require(_0x4a99('0x4'));var BPromise=require(_0x4a99('0x5'));var Mustache=require(_0x4a99('0x6'));var util=require('util');var path=require(_0x4a99('0x7'));var sox=require(_0x4a99('0x8'));var csv=require(_0x4a99('0x9'));var ejs=require(_0x4a99('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4a99('0xb'));var squel=require('squel');var crypto=require(_0x4a99('0xc'));var jsforce=require(_0x4a99('0xd'));var deskjs=require(_0x4a99('0xe'));var toCsv=require(_0x4a99('0x9'));var querystring=require(_0x4a99('0xf'));var Papa=require(_0x4a99('0x10'));var Redis=require(_0x4a99('0x11'));var authService=require(_0x4a99('0x12'));var qs=require(_0x4a99('0x13'));var as=require(_0x4a99('0x14'));var hardwareService=require(_0x4a99('0x15'));var logger=require(_0x4a99('0x16'))(_0x4a99('0x17'));var utils=require(_0x4a99('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x4a99('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1f4a48,_0x2d4122){_0x2d4122=_0x2d4122||0xcc;return function(_0x4bd74e){if(_0x4bd74e){return _0x1f4a48[_0x4a99('0x1a')](_0x2d4122);}return _0x1f4a48[_0x4a99('0x1b')](_0x2d4122)[_0x4a99('0x1c')]();};}function respondWithResult(_0x21d1e3,_0x5aa9ea){_0x5aa9ea=_0x5aa9ea||0xc8;return function(_0x377af1){if(_0x377af1){return _0x21d1e3[_0x4a99('0x1b')](_0x5aa9ea)[_0x4a99('0x1d')](_0x377af1);}};}function respondWithFilteredResult(_0x515ab2,_0x3ba35a){return function(_0x21ebf7){if(_0x21ebf7){var _0x53baaf=typeof _0x3ba35a[_0x4a99('0x1e')]==='undefined'&&typeof _0x3ba35a[_0x4a99('0x1f')]===_0x4a99('0x20');var _0xbfa99a=_0x21ebf7[_0x4a99('0x21')];var _0x33bd31=_0x53baaf?0x0:_0x3ba35a[_0x4a99('0x1e')];var _0x2fa747=_0x53baaf?_0x21ebf7[_0x4a99('0x21')]:_0x3ba35a[_0x4a99('0x1e')]+_0x3ba35a['limit'];var _0x70f9b8;if(_0x2fa747>=_0xbfa99a){_0x2fa747=_0xbfa99a;_0x70f9b8=0xc8;}else{_0x70f9b8=0xce;}_0x515ab2[_0x4a99('0x1b')](_0x70f9b8);return _0x515ab2[_0x4a99('0x22')]('Content-Range',_0x33bd31+'-'+_0x2fa747+'/'+_0xbfa99a)['json'](_0x21ebf7);}return null;};}function patchUpdates(_0x5c8245){return function(_0xc6d426){try{jsonpatch[_0x4a99('0x23')](_0xc6d426,_0x5c8245,!![]);}catch(_0x359c73){return BPromise[_0x4a99('0x24')](_0x359c73);}return _0xc6d426[_0x4a99('0x25')]();};}function saveUpdates(_0x3dcfc6,_0x4605e4){return function(_0x5ce794){if(_0x5ce794){return _0x5ce794[_0x4a99('0x26')](_0x3dcfc6)[_0x4a99('0x27')](function(_0x4d2e4d){return _0x4d2e4d;});}return null;};}function removeEntity(_0x1665af,_0x429a9c){return function(_0x15846c){if(_0x15846c){return _0x15846c[_0x4a99('0x28')]()['then'](function(){_0x1665af['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4009e3,_0x59b76c){return function(_0x43f68b){if(!_0x43f68b){_0x4009e3['sendStatus'](0x194);}return _0x43f68b;};}function handleError(_0x41b384,_0x21d83e){_0x21d83e=_0x21d83e||0x1f4;return function(_0x18296e){logger[_0x4a99('0x29')](_0x18296e[_0x4a99('0x2a')]);if(_0x18296e[_0x4a99('0x2b')]){delete _0x18296e[_0x4a99('0x2b')];}_0x41b384['status'](_0x21d83e)['send'](_0x18296e);};}exports[_0x4a99('0x2c')]=function(_0x4d95c0,_0x24f3f4){var _0x2eabc0={},_0x480423={},_0x1f8288={'count':0x0,'rows':[]};var _0x432405=_[_0x4a99('0x2d')](db['VoiceDialReport']['rawAttributes'],function(_0x2f82e3){return{'name':_0x2f82e3[_0x4a99('0x2e')],'type':_0x2f82e3['type'][_0x4a99('0x2f')]};});_0x480423[_0x4a99('0x30')]=_['map'](_0x432405,_0x4a99('0x2b'));_0x480423[_0x4a99('0x31')]=_['keys'](_0x4d95c0[_0x4a99('0x31')]);_0x480423[_0x4a99('0x32')]=_['intersection'](_0x480423[_0x4a99('0x30')],_0x480423[_0x4a99('0x31')]);_0x2eabc0['attributes']=_[_0x4a99('0x33')](_0x480423[_0x4a99('0x30')],qs[_0x4a99('0x34')](_0x4d95c0[_0x4a99('0x31')][_0x4a99('0x34')]));_0x2eabc0[_0x4a99('0x35')]=_0x2eabc0[_0x4a99('0x35')]['length']?_0x2eabc0[_0x4a99('0x35')]:_0x480423[_0x4a99('0x30')];if(!_0x4d95c0[_0x4a99('0x31')][_0x4a99('0x36')](_0x4a99('0x37'))){_0x2eabc0[_0x4a99('0x1f')]=qs['limit'](_0x4d95c0[_0x4a99('0x31')][_0x4a99('0x1f')]);_0x2eabc0['offset']=qs[_0x4a99('0x1e')](_0x4d95c0[_0x4a99('0x31')][_0x4a99('0x1e')]);}_0x2eabc0[_0x4a99('0x38')]=qs[_0x4a99('0x39')](_0x4d95c0[_0x4a99('0x31')]['sort']);_0x2eabc0[_0x4a99('0x3a')]=qs[_0x4a99('0x32')](_['pick'](_0x4d95c0['query'],_0x480423[_0x4a99('0x32')]),_0x432405);if(_0x4d95c0[_0x4a99('0x31')]['filter']){_0x2eabc0['where']=_['merge'](_0x2eabc0[_0x4a99('0x3a')],{'$or':_['map'](_0x432405,function(_0xf4a476){if(_0xf4a476[_0x4a99('0x3b')]!==_0x4a99('0x3c')){var _0x1701f6={};_0x1701f6[_0xf4a476['name']]={'$like':'%'+_0x4d95c0[_0x4a99('0x31')][_0x4a99('0x3d')]+'%'};return _0x1701f6;}})});}_0x2eabc0=_[_0x4a99('0x3e')]({},_0x2eabc0,_0x4d95c0['options']);var _0x2dcb44={'where':_0x2eabc0[_0x4a99('0x3a')]};return db[_0x4a99('0x3f')][_0x4a99('0x21')](_0x2dcb44)[_0x4a99('0x27')](function(_0x4c90ad){_0x1f8288[_0x4a99('0x21')]=_0x4c90ad;if(_0x4d95c0['query'][_0x4a99('0x40')]){_0x2eabc0[_0x4a99('0x41')]=[{'all':!![]}];}return db[_0x4a99('0x3f')][_0x4a99('0x42')](_0x2eabc0);})[_0x4a99('0x27')](function(_0x4a5549){_0x1f8288[_0x4a99('0x43')]=_0x4a5549;return _0x1f8288;})[_0x4a99('0x27')](respondWithFilteredResult(_0x24f3f4,_0x2eabc0))['catch'](handleError(_0x24f3f4,null));};exports[_0x4a99('0x44')]=function(_0x1783de,_0x50f9fe){var _0x6af54a={'raw':!![],'where':{'id':_0x1783de['params']['id']}},_0x4c6031={};_0x4c6031[_0x4a99('0x30')]=_[_0x4a99('0x45')](db[_0x4a99('0x3f')]['rawAttributes']);_0x4c6031['query']=_[_0x4a99('0x45')](_0x1783de['query']);_0x4c6031[_0x4a99('0x32')]=_[_0x4a99('0x33')](_0x4c6031[_0x4a99('0x30')],_0x4c6031[_0x4a99('0x31')]);_0x6af54a[_0x4a99('0x35')]=_['intersection'](_0x4c6031['model'],qs[_0x4a99('0x34')](_0x1783de[_0x4a99('0x31')][_0x4a99('0x34')]));_0x6af54a[_0x4a99('0x35')]=_0x6af54a[_0x4a99('0x35')]['length']?_0x6af54a['attributes']:_0x4c6031[_0x4a99('0x30')];if(_0x1783de[_0x4a99('0x31')][_0x4a99('0x40')]){_0x6af54a[_0x4a99('0x41')]=[{'all':!![]}];}_0x6af54a=_[_0x4a99('0x3e')]({},_0x6af54a,_0x1783de[_0x4a99('0x46')]);return db['VoiceDialReport'][_0x4a99('0x47')](_0x6af54a)[_0x4a99('0x27')](handleEntityNotFound(_0x50f9fe,null))['then'](respondWithResult(_0x50f9fe,null))['catch'](handleError(_0x50f9fe,null));};exports[_0x4a99('0x48')]=function(_0x504c5f,_0x21cff2){return db['VoiceDialReport'][_0x4a99('0x48')](_0x504c5f[_0x4a99('0x49')],{})[_0x4a99('0x27')](respondWithResult(_0x21cff2,0xc9))['catch'](handleError(_0x21cff2,null));};exports[_0x4a99('0x26')]=function(_0x2cd206,_0xd065d5){if(_0x2cd206[_0x4a99('0x49')]['id']){delete _0x2cd206[_0x4a99('0x49')]['id'];}return db[_0x4a99('0x3f')][_0x4a99('0x47')]({'where':{'id':_0x2cd206[_0x4a99('0x4a')]['id']}})['then'](handleEntityNotFound(_0xd065d5,null))[_0x4a99('0x27')](saveUpdates(_0x2cd206['body'],null))[_0x4a99('0x27')](respondWithResult(_0xd065d5,null))[_0x4a99('0x4b')](handleError(_0xd065d5,null));};exports[_0x4a99('0x28')]=function(_0x3f4397,_0x5a0e2c){return db[_0x4a99('0x3f')][_0x4a99('0x47')]({'where':{'id':_0x3f4397[_0x4a99('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5a0e2c,null))[_0x4a99('0x27')](removeEntity(_0x5a0e2c,null))[_0x4a99('0x4b')](handleError(_0x5a0e2c,null));};exports[_0x4a99('0x4c')]=function(_0x280575,_0x53a8d0){return db[_0x4a99('0x3f')][_0x4a99('0x4c')]()[_0x4a99('0x27')](respondWithResult(_0x53a8d0,null))['catch'](handleError(_0x53a8d0,null));};
\ No newline at end of file
+var _0x2ffb=['params','rawAttributes','includeAll','include','options','find','catch','create','body','destroy','describe','fast-json-patch','request-promise','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','../../components/parsers/advancedSearch','../../config/logger','api','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','apply','save','update','then','end','error','stack','name','send','index','map','VoiceDialReport','fieldName','type','model','keys','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','findAll','rows','show'];(function(_0x19ac6e,_0x435862){var _0x1cdcf3=function(_0x23151c){while(--_0x23151c){_0x19ac6e['push'](_0x19ac6e['shift']());}};_0x1cdcf3(++_0x435862);}(_0x2ffb,0x1e7));var _0xb2ff=function(_0x5d8cd3,_0x1638dd){_0x5d8cd3=_0x5d8cd3-0x0;var _0x804d64=_0x2ffb[_0x5d8cd3];return _0x804d64;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xb2ff('0x0'));var rp=require(_0xb2ff('0x1'));var moment=require('moment');var BPromise=require(_0xb2ff('0x2'));var Mustache=require(_0xb2ff('0x3'));var util=require('util');var path=require(_0xb2ff('0x4'));var sox=require(_0xb2ff('0x5'));var csv=require('to-csv');var ejs=require(_0xb2ff('0x6'));var fs=require('fs');var fs_extra=require(_0xb2ff('0x7'));var _=require(_0xb2ff('0x8'));var squel=require(_0xb2ff('0x9'));var crypto=require(_0xb2ff('0xa'));var jsforce=require(_0xb2ff('0xb'));var deskjs=require(_0xb2ff('0xc'));var toCsv=require(_0xb2ff('0xd'));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(_0xb2ff('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb2ff('0xf'))(_0xb2ff('0x10'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb2ff('0x11'))['db'];function respondWithStatusCode(_0x5529a6,_0x39943e){_0x39943e=_0x39943e||0xcc;return function(_0x41a363){if(_0x41a363){return _0x5529a6[_0xb2ff('0x12')](_0x39943e);}return _0x5529a6[_0xb2ff('0x13')](_0x39943e)['end']();};}function respondWithResult(_0x3876d8,_0x232ad9){_0x232ad9=_0x232ad9||0xc8;return function(_0x3f2e54){if(_0x3f2e54){return _0x3876d8['status'](_0x232ad9)[_0xb2ff('0x14')](_0x3f2e54);}};}function respondWithFilteredResult(_0x59b573,_0x4120f1){return function(_0xf2da06){if(_0xf2da06){var _0x2b2a51=typeof _0x4120f1[_0xb2ff('0x15')]===_0xb2ff('0x16')&&typeof _0x4120f1['limit']===_0xb2ff('0x16');var _0x4dc86c=_0xf2da06[_0xb2ff('0x17')];var _0x5ed923=_0x2b2a51?0x0:_0x4120f1[_0xb2ff('0x15')];var _0x354440=_0x2b2a51?_0xf2da06['count']:_0x4120f1[_0xb2ff('0x15')]+_0x4120f1[_0xb2ff('0x18')];var _0x3f3b2a;if(_0x354440>=_0x4dc86c){_0x354440=_0x4dc86c;_0x3f3b2a=0xc8;}else{_0x3f3b2a=0xce;}_0x59b573[_0xb2ff('0x13')](_0x3f3b2a);return _0x59b573[_0xb2ff('0x19')]('Content-Range',_0x5ed923+'-'+_0x354440+'/'+_0x4dc86c)['json'](_0xf2da06);}return null;};}function patchUpdates(_0x4791b5){return function(_0x426fdd){try{jsonpatch[_0xb2ff('0x1a')](_0x426fdd,_0x4791b5,!![]);}catch(_0x28a0ee){return BPromise['reject'](_0x28a0ee);}return _0x426fdd[_0xb2ff('0x1b')]();};}function saveUpdates(_0x2c057d,_0x284968){return function(_0xfd5d8d){if(_0xfd5d8d){return _0xfd5d8d[_0xb2ff('0x1c')](_0x2c057d)[_0xb2ff('0x1d')](function(_0x1ee510){return _0x1ee510;});}return null;};}function removeEntity(_0x3d13a7,_0x4bffd7){return function(_0x348035){if(_0x348035){return _0x348035['destroy']()[_0xb2ff('0x1d')](function(){_0x3d13a7[_0xb2ff('0x13')](0xcc)[_0xb2ff('0x1e')]();});}};}function handleEntityNotFound(_0x4547de,_0x3e5d82){return function(_0x5c6913){if(!_0x5c6913){_0x4547de[_0xb2ff('0x12')](0x194);}return _0x5c6913;};}function handleError(_0x551c0c,_0x26e2e0){_0x26e2e0=_0x26e2e0||0x1f4;return function(_0x331487){logger[_0xb2ff('0x1f')](_0x331487[_0xb2ff('0x20')]);if(_0x331487[_0xb2ff('0x21')]){delete _0x331487[_0xb2ff('0x21')];}_0x551c0c['status'](_0x26e2e0)[_0xb2ff('0x22')](_0x331487);};}exports[_0xb2ff('0x23')]=function(_0x1a025d,_0x15ad28){var _0x27651f={},_0x457d7b={},_0x143bde={'count':0x0,'rows':[]};var _0xf9c70f=_[_0xb2ff('0x24')](db[_0xb2ff('0x25')]['rawAttributes'],function(_0x498d1e){return{'name':_0x498d1e[_0xb2ff('0x26')],'type':_0x498d1e[_0xb2ff('0x27')]['key']};});_0x457d7b[_0xb2ff('0x28')]=_[_0xb2ff('0x24')](_0xf9c70f,'name');_0x457d7b['query']=_[_0xb2ff('0x29')](_0x1a025d[_0xb2ff('0x2a')]);_0x457d7b[_0xb2ff('0x2b')]=_[_0xb2ff('0x2c')](_0x457d7b[_0xb2ff('0x28')],_0x457d7b[_0xb2ff('0x2a')]);_0x27651f['attributes']=_[_0xb2ff('0x2c')](_0x457d7b['model'],qs[_0xb2ff('0x2d')](_0x1a025d[_0xb2ff('0x2a')][_0xb2ff('0x2d')]));_0x27651f[_0xb2ff('0x2e')]=_0x27651f[_0xb2ff('0x2e')][_0xb2ff('0x2f')]?_0x27651f[_0xb2ff('0x2e')]:_0x457d7b[_0xb2ff('0x28')];if(!_0x1a025d[_0xb2ff('0x2a')]['hasOwnProperty'](_0xb2ff('0x30'))){_0x27651f[_0xb2ff('0x18')]=qs[_0xb2ff('0x18')](_0x1a025d['query'][_0xb2ff('0x18')]);_0x27651f[_0xb2ff('0x15')]=qs[_0xb2ff('0x15')](_0x1a025d[_0xb2ff('0x2a')][_0xb2ff('0x15')]);}_0x27651f[_0xb2ff('0x31')]=qs[_0xb2ff('0x32')](_0x1a025d['query']['sort']);_0x27651f[_0xb2ff('0x33')]=qs[_0xb2ff('0x2b')](_[_0xb2ff('0x34')](_0x1a025d[_0xb2ff('0x2a')],_0x457d7b[_0xb2ff('0x2b')]),_0xf9c70f);if(_0x1a025d[_0xb2ff('0x2a')]['filter']){_0x27651f[_0xb2ff('0x33')]=_['merge'](_0x27651f['where'],{'$or':_[_0xb2ff('0x24')](_0xf9c70f,function(_0x101c4e){if(_0x101c4e[_0xb2ff('0x27')]!=='VIRTUAL'){var _0x479b14={};_0x479b14[_0x101c4e[_0xb2ff('0x21')]]={'$like':'%'+_0x1a025d[_0xb2ff('0x2a')]['filter']+'%'};return _0x479b14;}})});}_0x27651f=_[_0xb2ff('0x35')]({},_0x27651f,_0x1a025d['options']);var _0x889967={'where':_0x27651f[_0xb2ff('0x33')]};return db['VoiceDialReport'][_0xb2ff('0x17')](_0x889967)[_0xb2ff('0x1d')](function(_0x4e0812){_0x143bde[_0xb2ff('0x17')]=_0x4e0812;if(_0x1a025d[_0xb2ff('0x2a')]['includeAll']){_0x27651f['include']=[{'all':!![]}];}return db[_0xb2ff('0x25')][_0xb2ff('0x36')](_0x27651f);})[_0xb2ff('0x1d')](function(_0x41ff64){_0x143bde[_0xb2ff('0x37')]=_0x41ff64;return _0x143bde;})['then'](respondWithFilteredResult(_0x15ad28,_0x27651f))['catch'](handleError(_0x15ad28,null));};exports[_0xb2ff('0x38')]=function(_0x462d19,_0x4c6067){var _0x5442a5={'raw':!![],'where':{'id':_0x462d19[_0xb2ff('0x39')]['id']}},_0x224c4f={};_0x224c4f[_0xb2ff('0x28')]=_['keys'](db['VoiceDialReport'][_0xb2ff('0x3a')]);_0x224c4f[_0xb2ff('0x2a')]=_[_0xb2ff('0x29')](_0x462d19['query']);_0x224c4f['filters']=_[_0xb2ff('0x2c')](_0x224c4f['model'],_0x224c4f['query']);_0x5442a5[_0xb2ff('0x2e')]=_[_0xb2ff('0x2c')](_0x224c4f[_0xb2ff('0x28')],qs[_0xb2ff('0x2d')](_0x462d19[_0xb2ff('0x2a')]['fields']));_0x5442a5['attributes']=_0x5442a5[_0xb2ff('0x2e')][_0xb2ff('0x2f')]?_0x5442a5[_0xb2ff('0x2e')]:_0x224c4f[_0xb2ff('0x28')];if(_0x462d19[_0xb2ff('0x2a')][_0xb2ff('0x3b')]){_0x5442a5[_0xb2ff('0x3c')]=[{'all':!![]}];}_0x5442a5=_[_0xb2ff('0x35')]({},_0x5442a5,_0x462d19[_0xb2ff('0x3d')]);return db[_0xb2ff('0x25')][_0xb2ff('0x3e')](_0x5442a5)['then'](handleEntityNotFound(_0x4c6067,null))[_0xb2ff('0x1d')](respondWithResult(_0x4c6067,null))[_0xb2ff('0x3f')](handleError(_0x4c6067,null));};exports[_0xb2ff('0x40')]=function(_0x19554e,_0x5473da){return db[_0xb2ff('0x25')]['create'](_0x19554e[_0xb2ff('0x41')],{})[_0xb2ff('0x1d')](respondWithResult(_0x5473da,0xc9))['catch'](handleError(_0x5473da,null));};exports[_0xb2ff('0x1c')]=function(_0xf38200,_0x155b97){if(_0xf38200['body']['id']){delete _0xf38200[_0xb2ff('0x41')]['id'];}return db['VoiceDialReport'][_0xb2ff('0x3e')]({'where':{'id':_0xf38200[_0xb2ff('0x39')]['id']}})[_0xb2ff('0x1d')](handleEntityNotFound(_0x155b97,null))[_0xb2ff('0x1d')](saveUpdates(_0xf38200[_0xb2ff('0x41')],null))[_0xb2ff('0x1d')](respondWithResult(_0x155b97,null))[_0xb2ff('0x3f')](handleError(_0x155b97,null));};exports[_0xb2ff('0x42')]=function(_0x240f57,_0x116dc7){return db[_0xb2ff('0x25')][_0xb2ff('0x3e')]({'where':{'id':_0x240f57['params']['id']}})[_0xb2ff('0x1d')](handleEntityNotFound(_0x116dc7,null))[_0xb2ff('0x1d')](removeEntity(_0x116dc7,null))[_0xb2ff('0x3f')](handleError(_0x116dc7,null));};exports[_0xb2ff('0x43')]=function(_0x177f7b,_0x5a48c8){return db[_0xb2ff('0x25')][_0xb2ff('0x43')]()['then'](respondWithResult(_0x5a48c8,null))['catch'](handleError(_0x5a48c8,null));};
\ No newline at end of file
index 0c873fa..30220dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ca8=['define','VoiceDialReport','report_dial','util','api','moment','bluebird','request-promise','path','../../config/environment','./voiceDialReport.attributes','exports'];(function(_0x58e21c,_0x474818){var _0x3472f1=function(_0x20cffa){while(--_0x20cffa){_0x58e21c['push'](_0x58e21c['shift']());}};_0x3472f1(++_0x474818);}(_0x9ca8,0x123));var _0x89ca=function(_0x207811,_0x3420a6){_0x207811=_0x207811-0x0;var _0x170d56=_0x9ca8[_0x207811];return _0x170d56;};'use strict';var _=require('lodash');var util=require(_0x89ca('0x0'));var logger=require('../../config/logger')(_0x89ca('0x1'));var moment=require(_0x89ca('0x2'));var BPromise=require(_0x89ca('0x3'));var rp=require(_0x89ca('0x4'));var fs=require('fs');var path=require(_0x89ca('0x5'));var rimraf=require('rimraf');var config=require(_0x89ca('0x6'));var attributes=require(_0x89ca('0x7'));module[_0x89ca('0x8')]=function(_0x1464be,_0x348f76){return _0x1464be[_0x89ca('0x9')](_0x89ca('0xa'),attributes,{'tableName':_0x89ca('0xb'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x98a8=['report_dial','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./voiceDialReport.attributes','exports','define'];(function(_0x153663,_0x3ef313){var _0xfcdd26=function(_0x5b4cc7){while(--_0x5b4cc7){_0x153663['push'](_0x153663['shift']());}};_0xfcdd26(++_0x3ef313);}(_0x98a8,0x12c));var _0x898a=function(_0xa63aa1,_0x54f32e){_0xa63aa1=_0xa63aa1-0x0;var _0x279e0f=_0x98a8[_0xa63aa1];return _0x279e0f;};'use strict';var _=require(_0x898a('0x0'));var util=require(_0x898a('0x1'));var logger=require(_0x898a('0x2'))(_0x898a('0x3'));var moment=require(_0x898a('0x4'));var BPromise=require(_0x898a('0x5'));var rp=require(_0x898a('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x898a('0x7'));var config=require(_0x898a('0x8'));var attributes=require(_0x898a('0x9'));module[_0x898a('0xa')]=function(_0x3e7ddd,_0x5d7e59){return _0x3e7ddd[_0x898a('0xb')]('VoiceDialReport',attributes,{'tableName':_0x898a('0xc'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 6178508..627416c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8c6=['client','then','VoiceDialReport,\x20%s,\x20%s','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','CreateVoiceDialReport','VoiceDialReport','create','body','options','raw','where','limit','UpdateVoiceDialReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise'];(function(_0x59cf8e,_0x280536){var _0x34dc7d=function(_0x411480){while(--_0x411480){_0x59cf8e['push'](_0x59cf8e['shift']());}};_0x34dc7d(++_0x280536);}(_0xd8c6,0x1b6));var _0x6d8c=function(_0x33f36e,_0x163451){_0x33f36e=_0x33f36e-0x0;var _0x39abbb=_0xd8c6[_0x33f36e];return _0x39abbb;};'use strict';var _=require(_0x6d8c('0x0'));var util=require(_0x6d8c('0x1'));var moment=require(_0x6d8c('0x2'));var BPromise=require(_0x6d8c('0x3'));var rs=require(_0x6d8c('0x4'));var fs=require('fs');var Redis=require(_0x6d8c('0x5'));var db=require(_0x6d8c('0x6'))['db'];var utils=require(_0x6d8c('0x7'));var logger=require(_0x6d8c('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6d8c('0x9'));var client=jayson[_0x6d8c('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1f8863,_0x25a7b0,_0x2514a7){return new BPromise(function(_0x3067eb,_0xa1e4e8){return client['request'](_0x1f8863,_0x2514a7)[_0x6d8c('0xb')](function(_0x2cfb5b){logger['info'](_0x6d8c('0xc'),_0x25a7b0,'request\x20sent');logger[_0x6d8c('0xd')](_0x6d8c('0xe'),_0x25a7b0,_0x6d8c('0xf'),JSON[_0x6d8c('0x10')](_0x2cfb5b));if(_0x2cfb5b[_0x6d8c('0x11')]){if(_0x2cfb5b[_0x6d8c('0x11')][_0x6d8c('0x12')]===0x1f4){logger[_0x6d8c('0x11')](_0x6d8c('0xc'),_0x25a7b0,_0x2cfb5b[_0x6d8c('0x11')][_0x6d8c('0x13')]);return _0xa1e4e8(_0x2cfb5b['error']['message']);}logger['error']('VoiceDialReport,\x20%s,\x20%s',_0x25a7b0,_0x2cfb5b[_0x6d8c('0x11')]['message']);return _0x3067eb(_0x2cfb5b[_0x6d8c('0x11')][_0x6d8c('0x13')]);}else{logger[_0x6d8c('0x14')](_0x6d8c('0xc'),_0x25a7b0,_0x6d8c('0xf'));_0x3067eb(_0x2cfb5b[_0x6d8c('0x15')][_0x6d8c('0x13')]);}})[_0x6d8c('0x16')](function(_0x287e48){logger[_0x6d8c('0x11')](_0x6d8c('0xc'),_0x25a7b0,_0x287e48);_0xa1e4e8(_0x287e48);});});}exports[_0x6d8c('0x17')]=function(_0x50288b){var _0x190a01=this;return new Promise(function(_0x23fe29,_0x128f7c){return db[_0x6d8c('0x18')][_0x6d8c('0x19')](_0x50288b[_0x6d8c('0x1a')],{'raw':_0x50288b[_0x6d8c('0x1b')]?_0x50288b[_0x6d8c('0x1b')][_0x6d8c('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x3ef98d){logger[_0x6d8c('0x14')](_0x6d8c('0x17'),_0x50288b);logger[_0x6d8c('0xd')](_0x6d8c('0x17'),_0x50288b,JSON['stringify'](_0x3ef98d));_0x23fe29(_0x3ef98d);})[_0x6d8c('0x16')](function(_0x3e5fb6){logger[_0x6d8c('0x11')]('CreateVoiceDialReport',_0x3e5fb6[_0x6d8c('0x13')],_0x50288b);_0x128f7c(_0x190a01['error'](0x1f4,_0x3e5fb6[_0x6d8c('0x13')]));});});};exports['UpdateVoiceDialReport']=function(_0x57b3b7){var _0x4742b1=this;return new Promise(function(_0xc21337,_0xce5b5b){return db[_0x6d8c('0x18')]['update'](_0x57b3b7['body'],{'raw':_0x57b3b7[_0x6d8c('0x1b')]?_0x57b3b7[_0x6d8c('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x57b3b7[_0x6d8c('0x1b')]?_0x57b3b7['options'][_0x6d8c('0x1d')]||null:null,'attributes':_0x57b3b7[_0x6d8c('0x1b')]?_0x57b3b7[_0x6d8c('0x1b')]['attributes']||null:null,'limit':_0x57b3b7[_0x6d8c('0x1b')]?_0x57b3b7[_0x6d8c('0x1b')][_0x6d8c('0x1e')]||null:null})[_0x6d8c('0xb')](function(_0x49bf1a){logger[_0x6d8c('0x14')](_0x6d8c('0x1f'),_0x57b3b7);logger['debug'](_0x6d8c('0x1f'),_0x57b3b7,JSON[_0x6d8c('0x10')](_0x49bf1a));_0xc21337(_0x49bf1a);})[_0x6d8c('0x16')](function(_0x4564f8){logger['error'](_0x6d8c('0x1f'),_0x4564f8['message'],_0x57b3b7);_0xce5b5b(_0x4742b1[_0x6d8c('0x11')](0x1f4,_0x4564f8[_0x6d8c('0x13')]));});});};
\ No newline at end of file
+var _0x06a3=['VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','request\x20sent','result','CreateVoiceDialReport','VoiceDialReport','create','options','raw','then','where','attributes','limit','UpdateVoiceDialReport','catch','util','moment','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','VoiceDialReport,\x20%s,\x20%s','debug'];(function(_0x155d1c,_0x3e4579){var _0x38c310=function(_0x272d76){while(--_0x272d76){_0x155d1c['push'](_0x155d1c['shift']());}};_0x38c310(++_0x3e4579);}(_0x06a3,0x103));var _0x306a=function(_0x4fadb8,_0x11b539){_0x4fadb8=_0x4fadb8-0x0;var _0x3c9e20=_0x06a3[_0x4fadb8];return _0x3c9e20;};'use strict';var _=require('lodash');var util=require(_0x306a('0x0'));var moment=require(_0x306a('0x1'));var BPromise=require('bluebird');var rs=require(_0x306a('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x306a('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x306a('0x4'))('rpc');var config=require(_0x306a('0x5'));var jayson=require(_0x306a('0x6'));var client=jayson[_0x306a('0x7')][_0x306a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2f3afb,_0x116f16,_0x11299c){return new BPromise(function(_0x5ab419,_0x271558){return client['request'](_0x2f3afb,_0x11299c)['then'](function(_0xb5c4b3){logger['info'](_0x306a('0x9'),_0x116f16,'request\x20sent');logger[_0x306a('0xa')](_0x306a('0xb'),_0x116f16,'request\x20sent',JSON[_0x306a('0xc')](_0xb5c4b3));if(_0xb5c4b3['error']){if(_0xb5c4b3['error'][_0x306a('0xd')]===0x1f4){logger[_0x306a('0xe')]('VoiceDialReport,\x20%s,\x20%s',_0x116f16,_0xb5c4b3[_0x306a('0xe')][_0x306a('0xf')]);return _0x271558(_0xb5c4b3[_0x306a('0xe')]['message']);}logger['error']('VoiceDialReport,\x20%s,\x20%s',_0x116f16,_0xb5c4b3[_0x306a('0xe')][_0x306a('0xf')]);return _0x5ab419(_0xb5c4b3[_0x306a('0xe')]['message']);}else{logger[_0x306a('0x10')](_0x306a('0x9'),_0x116f16,_0x306a('0x11'));_0x5ab419(_0xb5c4b3[_0x306a('0x12')]['message']);}})['catch'](function(_0x358c82){logger[_0x306a('0xe')](_0x306a('0x9'),_0x116f16,_0x358c82);_0x271558(_0x358c82);});});}exports[_0x306a('0x13')]=function(_0x303bac){var _0x4b02b0=this;return new Promise(function(_0x277872,_0x2079a3){return db[_0x306a('0x14')][_0x306a('0x15')](_0x303bac['body'],{'raw':_0x303bac[_0x306a('0x16')]?_0x303bac[_0x306a('0x16')][_0x306a('0x17')]===undefined?!![]:![]:!![]})[_0x306a('0x18')](function(_0x20e627){logger[_0x306a('0x10')](_0x306a('0x13'),_0x303bac);logger['debug'](_0x306a('0x13'),_0x303bac,JSON[_0x306a('0xc')](_0x20e627));_0x277872(_0x20e627);})['catch'](function(_0x2c5948){logger[_0x306a('0xe')](_0x306a('0x13'),_0x2c5948['message'],_0x303bac);_0x2079a3(_0x4b02b0[_0x306a('0xe')](0x1f4,_0x2c5948[_0x306a('0xf')]));});});};exports['UpdateVoiceDialReport']=function(_0x48a9d3){var _0x4f6f86=this;return new Promise(function(_0x1001e8,_0x22985f){return db['VoiceDialReport']['update'](_0x48a9d3['body'],{'raw':_0x48a9d3[_0x306a('0x16')]?_0x48a9d3[_0x306a('0x16')][_0x306a('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x48a9d3[_0x306a('0x16')]?_0x48a9d3[_0x306a('0x16')][_0x306a('0x19')]||null:null,'attributes':_0x48a9d3[_0x306a('0x16')]?_0x48a9d3[_0x306a('0x16')][_0x306a('0x1a')]||null:null,'limit':_0x48a9d3['options']?_0x48a9d3['options'][_0x306a('0x1b')]||null:null})[_0x306a('0x18')](function(_0x21cb6b){logger[_0x306a('0x10')]('UpdateVoiceDialReport',_0x48a9d3);logger[_0x306a('0xa')](_0x306a('0x1c'),_0x48a9d3,JSON[_0x306a('0xc')](_0x21cb6b));_0x1001e8(_0x21cb6b);})[_0x306a('0x1d')](function(_0x36fd36){logger[_0x306a('0xe')](_0x306a('0x1c'),_0x36fd36['message'],_0x48a9d3);_0x22985f(_0x4f6f86[_0x306a('0xe')](0x1f4,_0x36fd36['message']));});});};
\ No newline at end of file
index c3b1277..c2779df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf89e=['addApplications','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','post','create'];(function(_0x565c49,_0x54acd0){var _0x20ca34=function(_0x42f7e1){while(--_0x42f7e1){_0x565c49['push'](_0x565c49['shift']());}};_0x20ca34(++_0x54acd0);}(_0xf89e,0x91));var _0xef89=function(_0x1eeb2e,_0x2f182f){_0x1eeb2e=_0x1eeb2e-0x0;var _0x5bf748=_0xf89e[_0x1eeb2e];return _0x5bf748;};'use strict';var multer=require(_0xef89('0x0'));var util=require(_0xef89('0x1'));var path=require(_0xef89('0x2'));var timeout=require(_0xef89('0x3'));var express=require('express');var router=express[_0xef89('0x4')]();var fs_extra=require(_0xef89('0x5'));var auth=require(_0xef89('0x6'));var interaction=require(_0xef89('0x7'));var config=require(_0xef89('0x8'));var controller=require('./voiceExtension.controller');router[_0xef89('0x9')]('/',auth[_0xef89('0xa')](),controller['index']);router[_0xef89('0x9')](_0xef89('0xb'),auth[_0xef89('0xa')](),controller[_0xef89('0xc')]);router[_0xef89('0xd')]('/',auth[_0xef89('0xa')](),controller[_0xef89('0xe')]);router['post']('/:id/applications',auth[_0xef89('0xa')](),controller[_0xef89('0xf')]);router[_0xef89('0x10')](_0xef89('0xb'),auth[_0xef89('0xa')](),controller[_0xef89('0x11')]);router[_0xef89('0x12')](_0xef89('0xb'),auth[_0xef89('0xa')](),controller['destroy']);module[_0xef89('0x13')]=router;
\ No newline at end of file
+var _0x7ed1=['create','addApplications','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceExtension.controller','get','isAuthenticated','index','/:id','show','post'];(function(_0x147aa3,_0x493b62){var _0x10a82b=function(_0xec7379){while(--_0xec7379){_0x147aa3['push'](_0x147aa3['shift']());}};_0x10a82b(++_0x493b62);}(_0x7ed1,0x195));var _0x17ed=function(_0x556bb1,_0x34830d){_0x556bb1=_0x556bb1-0x0;var _0x45455f=_0x7ed1[_0x556bb1];return _0x45455f;};'use strict';var multer=require(_0x17ed('0x0'));var util=require(_0x17ed('0x1'));var path=require(_0x17ed('0x2'));var timeout=require(_0x17ed('0x3'));var express=require('express');var router=express[_0x17ed('0x4')]();var fs_extra=require(_0x17ed('0x5'));var auth=require(_0x17ed('0x6'));var interaction=require(_0x17ed('0x7'));var config=require('../../config/environment');var controller=require(_0x17ed('0x8'));router[_0x17ed('0x9')]('/',auth[_0x17ed('0xa')](),controller[_0x17ed('0xb')]);router['get'](_0x17ed('0xc'),auth[_0x17ed('0xa')](),controller[_0x17ed('0xd')]);router[_0x17ed('0xe')]('/',auth['isAuthenticated'](),controller[_0x17ed('0xf')]);router[_0x17ed('0xe')]('/:id/applications',auth[_0x17ed('0xa')](),controller[_0x17ed('0x10')]);router['put'](_0x17ed('0xc'),auth[_0x17ed('0xa')](),controller[_0x17ed('0x11')]);router[_0x17ed('0x12')](_0x17ed('0xc'),auth[_0x17ed('0xa')](),controller['destroy']);module[_0x17ed('0x13')]=router;
\ No newline at end of file
index 2fbac66..ca04e66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x943f=['VIRTUAL','getDataValue','exten','sequelize','STRING','compositeIndex','inbound','inbound-fax','outbound-fax','system','any','INTEGER','wav','BOOLEAN'];(function(_0x2f4e5d,_0x8bb302){var _0x1fc36d=function(_0x33be4){while(--_0x33be4){_0x2f4e5d['push'](_0x2f4e5d['shift']());}};_0x1fc36d(++_0x8bb302);}(_0x943f,0xd5));var _0xf943=function(_0x1dd4f7,_0x333a0c){_0x1dd4f7=_0x1dd4f7-0x0;var _0x25093b=_0x943f[_0x1dd4f7];return _0x25093b;};'use strict';var Sequelize=require(_0xf943('0x0'));module['exports']={'context':{'type':Sequelize[_0xf943('0x1')],'allowNull':![],'unique':_0xf943('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize['STRING'],'allowNull':![],'unique':'compositeIndex'},'priority':{'type':Sequelize[_0xf943('0x1')],'allowNull':![],'defaultValue':'1','unique':_0xf943('0x2')},'tag':{'type':Sequelize[_0xf943('0x1')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize[_0xf943('0x1')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize['ENUM'](_0xf943('0x3'),'outbound','internal',_0xf943('0x4'),_0xf943('0x5'),_0xf943('0x6'),_0xf943('0x7')),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xf943('0x1')],'allowNull':![],'defaultValue':'*,*,*,*'},'IntervalId':{'type':Sequelize[_0xf943('0x8')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize['STRING'],'defaultValue':null},'callerID':{'type':Sequelize[_0xf943('0x1')],'allowNull':!![]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xf943('0x8')]},'recordingFormat':{'type':Sequelize[_0xf943('0x1')],'defaultValue':_0xf943('0x9')},'answer':{'type':Sequelize[_0xf943('0xa')],'defaultValue':!![]},'name':{'type':Sequelize[_0xf943('0xb')],'get':function(_0x268715){return this[_0xf943('0xc')](_0xf943('0xd'));}},'alias':{'type':Sequelize[_0xf943('0x1')],'allowNull':!![]}};
\ No newline at end of file
+var _0x60d7=['internal','system','BOOLEAN','VIRTUAL','getDataValue','exten','sequelize','STRING','compositeIndex','ENUM','inbound','outbound'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x60d7,0x10e));var _0x760d=function(_0x440997,_0x4061d1){_0x440997=_0x440997-0x0;var _0x3eb82d=_0x60d7[_0x440997];return _0x3eb82d;};'use strict';var Sequelize=require(_0x760d('0x0'));module['exports']={'context':{'type':Sequelize[_0x760d('0x1')],'allowNull':![],'unique':_0x760d('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x760d('0x1')],'allowNull':![],'unique':'compositeIndex'},'priority':{'type':Sequelize[_0x760d('0x1')],'allowNull':![],'defaultValue':'1','unique':'compositeIndex'},'tag':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x760d('0x1')],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize[_0x760d('0x1')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x760d('0x3')](_0x760d('0x4'),_0x760d('0x5'),_0x760d('0x6'),'inbound-fax','outbound-fax',_0x760d('0x7'),'any'),'allowNull':![]},'description':{'type':Sequelize[_0x760d('0x1')]},'interval':{'type':Sequelize[_0x760d('0x1')],'allowNull':![],'defaultValue':'*,*,*,*'},'IntervalId':{'type':Sequelize['INTEGER']},'isApp':{'type':Sequelize[_0x760d('0x8')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize['STRING'],'defaultValue':null},'callerID':{'type':Sequelize[_0x760d('0x1')],'allowNull':!![]},'record':{'type':Sequelize[_0x760d('0x8')],'defaultValue':![]},'cutdigits':{'type':Sequelize['INTEGER']},'recordingFormat':{'type':Sequelize[_0x760d('0x1')],'defaultValue':'wav'},'answer':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'name':{'type':Sequelize[_0x760d('0x9')],'get':function(_0x17749b){return this[_0x760d('0xa')](_0x760d('0xb'));}},'alias':{'type':Sequelize[_0x760d('0x1')],'allowNull':!![]}};
\ No newline at end of file
index 35ed522..33de7db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80b5=['Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','description','recordingFormat','addApplications','sequelize','transaction','VoiceExtensionId','isApp','rewriteDial','true','createRouting','bulkCreate','findAndCountAll','eml-format','rimraf','fast-json-patch','mustache','util','path','sox','to-csv','ejs','lodash','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','status','end','offset','limit','undefined','count','json','reject','save','update','then','get','InboundRoutes','inbound','OutboundRoutes','outbound','InternalRoutes','internal','filter','ignore','map','value','includes','type','find','name','UserProfileResource','destroy','sendStatus','error','stack','send','index','key','model','query','keys','intersection','attributes','fields','length','nolimit','sort','where','filters','pick','merge','VIRTUAL','options','VoiceExtension','includeAll','include','rows','catch','show','params','rawAttributes','create','startsWith','body','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId'];(function(_0xdb24f0,_0x5c24c3){var _0x2b44c6=function(_0x396bc5){while(--_0x396bc5){_0xdb24f0['push'](_0xdb24f0['shift']());}};_0x2b44c6(++_0x5c24c3);}(_0x80b5,0xd9));var _0x580b=function(_0x47e309,_0x1e771a){_0x47e309=_0x47e309-0x0;var _0x2e1900=_0x80b5[_0x47e309];return _0x2e1900;};'use strict';var emlformat=require(_0x580b('0x0'));var rimraf=require(_0x580b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x580b('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x580b('0x3'));var util=require(_0x580b('0x4'));var path=require(_0x580b('0x5'));var sox=require(_0x580b('0x6'));var csv=require(_0x580b('0x7'));var ejs=require(_0x580b('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x580b('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x580b('0xa'));var toCsv=require(_0x580b('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x580b('0xb'));var authService=require(_0x580b('0xc'));var qs=require(_0x580b('0xd'));var as=require(_0x580b('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x580b('0xf'))('api');var utils=require(_0x580b('0x10'));var config=require('../../config/environment');var licenseUtil=require(_0x580b('0x11'));var db=require(_0x580b('0x12'))['db'];config[_0x580b('0x13')]=_['defaults'](config['redis'],{'host':_0x580b('0x14'),'port':0x18eb});var socket=require(_0x580b('0x15'))(new Redis(config[_0x580b('0x13')]));require('./voiceExtension.socket')[_0x580b('0x16')](socket);function respondWithStatusCode(_0x355821,_0x1c30ac){_0x1c30ac=_0x1c30ac||0xcc;return function(_0x2733d0){if(_0x2733d0){return _0x355821['sendStatus'](_0x1c30ac);}return _0x355821[_0x580b('0x17')](_0x1c30ac)[_0x580b('0x18')]();};}function respondWithResult(_0x22421a,_0x39fee4){_0x39fee4=_0x39fee4||0xc8;return function(_0x185a15){if(_0x185a15){return _0x22421a[_0x580b('0x17')](_0x39fee4)['json'](_0x185a15);}};}function respondWithFilteredResult(_0x23fea1,_0x43d267){return function(_0x34b80f){if(_0x34b80f){var _0x3cddec=typeof _0x43d267[_0x580b('0x19')]==='undefined'&&typeof _0x43d267[_0x580b('0x1a')]===_0x580b('0x1b');var _0x3f809a=_0x34b80f['count'];var _0x22f6e=_0x3cddec?0x0:_0x43d267[_0x580b('0x19')];var _0x4ca7ae=_0x3cddec?_0x34b80f[_0x580b('0x1c')]:_0x43d267[_0x580b('0x19')]+_0x43d267[_0x580b('0x1a')];var _0x3a7934;if(_0x4ca7ae>=_0x3f809a){_0x4ca7ae=_0x3f809a;_0x3a7934=0xc8;}else{_0x3a7934=0xce;}_0x23fea1[_0x580b('0x17')](_0x3a7934);return _0x23fea1['set']('Content-Range',_0x22f6e+'-'+_0x4ca7ae+'/'+_0x3f809a)[_0x580b('0x1d')](_0x34b80f);}return null;};}function patchUpdates(_0x2a32a0){return function(_0x4066ad){try{jsonpatch['apply'](_0x4066ad,_0x2a32a0,!![]);}catch(_0x201ca9){return BPromise[_0x580b('0x1e')](_0x201ca9);}return _0x4066ad[_0x580b('0x1f')]();};}function saveUpdates(_0x72565d,_0x393480){return function(_0x3d9546){if(_0x3d9546){return _0x3d9546[_0x580b('0x20')](_0x72565d)['then'](function(_0xbb8a49){return _0xbb8a49;});}return null;};}function removeEntity(_0x3544ee,_0xa7d13c){return function(_0x137ffc){if(_0x137ffc){return _0x137ffc['destroy']()[_0x580b('0x21')](function(){var _0x56ddec=_0x137ffc[_0x580b('0x22')]({'plain':!![]});var _0x9e1ce=[{'name':_0x580b('0x23'),'value':_0x580b('0x24'),'ignore':![]},{'name':_0x580b('0x25'),'value':_0x580b('0x26'),'ignore':![]},{'name':_0x580b('0x27'),'value':_0x580b('0x28'),'ignore':![]}];var _0x211d0=_(_0x9e1ce)[_0x580b('0x29')](_0x580b('0x2a'))[_0x580b('0x2b')](_0x580b('0x2c'))[_0x580b('0x2c')]();if(_[_0x580b('0x2d')](_0x211d0,_0x56ddec[_0x580b('0x2e')])){return;}var _0x449a23=_[_0x580b('0x2f')](_0x9e1ce,[_0x580b('0x2c'),_0x56ddec[_0x580b('0x2e')]])[_0x580b('0x30')];return db[_0x580b('0x31')][_0x580b('0x32')]({'where':{'type':_0x449a23,'resourceId':_0x56ddec['id']}})[_0x580b('0x21')](function(){return _0x137ffc;});})[_0x580b('0x21')](function(){_0x3544ee['status'](0xcc)[_0x580b('0x18')]();});}};}function handleEntityNotFound(_0xce74f4,_0xfcba3f){return function(_0x1a43bf){if(!_0x1a43bf){_0xce74f4[_0x580b('0x33')](0x194);}return _0x1a43bf;};}function handleError(_0x5c573d,_0xd5528b){_0xd5528b=_0xd5528b||0x1f4;return function(_0x3107d5){logger[_0x580b('0x34')](_0x3107d5[_0x580b('0x35')]);if(_0x3107d5['name']){delete _0x3107d5[_0x580b('0x30')];}_0x5c573d[_0x580b('0x17')](_0xd5528b)[_0x580b('0x36')](_0x3107d5);};}exports[_0x580b('0x37')]=function(_0x269084,_0x56dded){var _0x1e6bc7={},_0x48ebf3={},_0x4b5744={'count':0x0,'rows':[]};var _0x72f52e=_[_0x580b('0x2b')](db['VoiceExtension']['rawAttributes'],function(_0x26a35b){return{'name':_0x26a35b['fieldName'],'type':_0x26a35b[_0x580b('0x2e')][_0x580b('0x38')]};});_0x48ebf3[_0x580b('0x39')]=_[_0x580b('0x2b')](_0x72f52e,_0x580b('0x30'));_0x48ebf3[_0x580b('0x3a')]=_[_0x580b('0x3b')](_0x269084[_0x580b('0x3a')]);_0x48ebf3['filters']=_[_0x580b('0x3c')](_0x48ebf3[_0x580b('0x39')],_0x48ebf3[_0x580b('0x3a')]);_0x1e6bc7[_0x580b('0x3d')]=_[_0x580b('0x3c')](_0x48ebf3[_0x580b('0x39')],qs[_0x580b('0x3e')](_0x269084['query']['fields']));_0x1e6bc7[_0x580b('0x3d')]=_0x1e6bc7[_0x580b('0x3d')][_0x580b('0x3f')]?_0x1e6bc7[_0x580b('0x3d')]:_0x48ebf3[_0x580b('0x39')];if(!_0x269084['query']['hasOwnProperty'](_0x580b('0x40'))){_0x1e6bc7[_0x580b('0x1a')]=qs['limit'](_0x269084[_0x580b('0x3a')]['limit']);_0x1e6bc7['offset']=qs['offset'](_0x269084[_0x580b('0x3a')][_0x580b('0x19')]);}_0x1e6bc7['order']=qs[_0x580b('0x41')](_0x269084[_0x580b('0x3a')][_0x580b('0x41')]);_0x1e6bc7[_0x580b('0x42')]=qs[_0x580b('0x43')](_[_0x580b('0x44')](_0x269084[_0x580b('0x3a')],_0x48ebf3[_0x580b('0x43')]),_0x72f52e);if(_0x269084[_0x580b('0x3a')][_0x580b('0x29')]){_0x1e6bc7[_0x580b('0x42')]=_[_0x580b('0x45')](_0x1e6bc7['where'],{'$or':_[_0x580b('0x2b')](_0x72f52e,function(_0x31b0c0){if(_0x31b0c0[_0x580b('0x2e')]!==_0x580b('0x46')){var _0x1bd2b5={};_0x1bd2b5[_0x31b0c0[_0x580b('0x30')]]={'$like':'%'+_0x269084[_0x580b('0x3a')][_0x580b('0x29')]+'%'};return _0x1bd2b5;}})});}_0x1e6bc7=_[_0x580b('0x45')]({},_0x1e6bc7,_0x269084[_0x580b('0x47')]);var _0x354c7e={'where':_0x1e6bc7[_0x580b('0x42')]};return db[_0x580b('0x48')][_0x580b('0x1c')](_0x354c7e)[_0x580b('0x21')](function(_0x589363){_0x4b5744['count']=_0x589363;if(_0x269084[_0x580b('0x3a')][_0x580b('0x49')]){_0x1e6bc7[_0x580b('0x4a')]=[{'all':!![]}];}return db[_0x580b('0x48')]['findAll'](_0x1e6bc7);})[_0x580b('0x21')](function(_0x39e7d8){_0x4b5744[_0x580b('0x4b')]=_0x39e7d8;return _0x4b5744;})[_0x580b('0x21')](respondWithFilteredResult(_0x56dded,_0x1e6bc7))[_0x580b('0x4c')](handleError(_0x56dded,null));};exports[_0x580b('0x4d')]=function(_0x1decae,_0x13d029){var _0x23d30a={'raw':![],'where':{'id':_0x1decae[_0x580b('0x4e')]['id']}},_0x15c11e={};_0x15c11e[_0x580b('0x39')]=_['keys'](db['VoiceExtension'][_0x580b('0x4f')]);_0x15c11e[_0x580b('0x3a')]=_[_0x580b('0x3b')](_0x1decae[_0x580b('0x3a')]);_0x15c11e[_0x580b('0x43')]=_[_0x580b('0x3c')](_0x15c11e['model'],_0x15c11e[_0x580b('0x3a')]);_0x23d30a[_0x580b('0x3d')]=_[_0x580b('0x3c')](_0x15c11e[_0x580b('0x39')],qs[_0x580b('0x3e')](_0x1decae[_0x580b('0x3a')][_0x580b('0x3e')]));_0x23d30a[_0x580b('0x3d')]=_0x23d30a[_0x580b('0x3d')][_0x580b('0x3f')]?_0x23d30a[_0x580b('0x3d')]:_0x15c11e[_0x580b('0x39')];if(_0x1decae[_0x580b('0x3a')][_0x580b('0x49')]){_0x23d30a[_0x580b('0x4a')]=[{'all':!![]}];}_0x23d30a=_['merge']({},_0x23d30a,_0x1decae[_0x580b('0x47')]);return db['VoiceExtension'][_0x580b('0x2f')](_0x23d30a)[_0x580b('0x21')](handleEntityNotFound(_0x13d029,null))['then'](respondWithResult(_0x13d029,null))[_0x580b('0x4c')](handleError(_0x13d029,null));};exports['destroy']=function(_0x287e46,_0x1f9190){return db[_0x580b('0x48')][_0x580b('0x2f')]({'where':{'id':_0x287e46[_0x580b('0x4e')]['id']}})[_0x580b('0x21')](handleEntityNotFound(_0x1f9190,null))['then'](removeEntity(_0x1f9190,null))[_0x580b('0x4c')](handleError(_0x1f9190,null));};exports[_0x580b('0x50')]=function(_0x1ff2e7,_0x1e80bb){if(_0x1ff2e7['body'][_0x580b('0x2e')]===_0x580b('0x26')&&!_[_0x580b('0x51')](_0x1ff2e7[_0x580b('0x52')]['exten'],'_')){_0x1ff2e7[_0x580b('0x52')][_0x580b('0x53')]='_'[_0x580b('0x54')](_0x1ff2e7['body']['exten']);}return db[_0x580b('0x48')][_0x580b('0x50')](_0x1ff2e7[_0x580b('0x52')],{'raw':![]})[_0x580b('0x21')](function(_0x342589){var _0x5b57c0=_0x1ff2e7[_0x580b('0x55')][_0x580b('0x22')]({'plain':!![]});if(!_0x5b57c0)throw new Error(_0x580b('0x56'));if(_0x5b57c0[_0x580b('0x57')]==='user'){var _0x150e74=_0x342589[_0x580b('0x22')]({'plain':!![]});var _0x5e29e9=[{'name':_0x580b('0x23'),'value':_0x580b('0x24')},{'name':_0x580b('0x25'),'value':_0x580b('0x26')},{'name':'InternalRoutes','value':'internal'}];var _0x51ba00=_[_0x580b('0x2f')](_0x5e29e9,[_0x580b('0x2c'),_0x150e74[_0x580b('0x2e')]])['name'];return db['UserProfileSection'][_0x580b('0x2f')]({'where':{'name':_0x51ba00,'userProfileId':_0x5b57c0[_0x580b('0x58')]},'raw':!![]})['then'](function(_0x3741af){if(_0x3741af&&_0x3741af['autoAssociation']===0x0){return db[_0x580b('0x31')][_0x580b('0x50')]({'name':_0x150e74[_0x580b('0x30')],'resourceId':_0x150e74['id'],'type':_0x3741af[_0x580b('0x30')],'sectionId':_0x3741af['id']},{})['then'](function(){return _0x342589;});}else{return _0x342589;}})[_0x580b('0x4c')](function(_0xfbefc0){logger[_0x580b('0x34')](_0x580b('0x59'),_0xfbefc0);throw _0xfbefc0;});}return _0x342589;})[_0x580b('0x21')](respondWithResult(_0x1e80bb,0xc9))[_0x580b('0x4c')](handleError(_0x1e80bb,null));};exports[_0x580b('0x20')]=function(_0x40e4ba,_0x1b80eb){if(_0x40e4ba[_0x580b('0x52')]['id']){delete _0x40e4ba[_0x580b('0x52')]['id'];}return db[_0x580b('0x48')][_0x580b('0x2f')]({'where':{'id':_0x40e4ba[_0x580b('0x4e')]['id']}})[_0x580b('0x21')](handleEntityNotFound(_0x1b80eb,null))[_0x580b('0x21')](function(_0x56381){if(_0x56381){return db['VoiceExtension']['update'](_['pick'](_0x40e4ba['body'],[_0x580b('0x53'),'context',_0x580b('0x5a'),_0x580b('0x5b'),'cutdigits','mandatoryDisposition','alias']),{'where':{'context':_0x56381['context'],'exten':_0x56381[_0x580b('0x53')]},'individualHooks':!![]})[_0x580b('0x21')](function(_0x344913){return _0x344913;});}return null;})[_0x580b('0x21')](respondWithStatusCode(_0x1b80eb,null))[_0x580b('0x4c')](handleError(_0x1b80eb,null));};exports[_0x580b('0x5c')]=function(_0x3207a6,_0x93ad48){return db[_0x580b('0x48')]['findOne']({'where':{'id':_0x3207a6[_0x580b('0x4e')]['id']}})[_0x580b('0x21')](function(_0x4a49e1){if(_0x4a49e1){return db[_0x580b('0x5d')][_0x580b('0x5e')](function(_0x192800){return db['VoiceExtension']['destroy']({'where':{'VoiceExtensionId':_0x3207a6[_0x580b('0x4e')]['id']},'transaction':_0x192800})[_0x580b('0x21')](function(){var _0x1577b2=_['map'](_0x3207a6['body'],function(_0x5185f3){_0x5185f3[_0x580b('0x5f')]=_0x3207a6['params']['id'];_0x5185f3[_0x580b('0x60')]=!![];return _0x5185f3;});var _0x50dc41=_0x3207a6['query'][_0x580b('0x61')]&&_0x3207a6[_0x580b('0x3a')][_0x580b('0x61')]['toLowerCase']()===_0x580b('0x62')?!![]:![];return _0x4a49e1[_0x580b('0x63')](_0x1577b2,_0x50dc41);})['then'](function(_0x4abfd4){return db[_0x580b('0x48')][_0x580b('0x64')](_0x4abfd4,{'transaction':_0x192800});});})['then'](function(){return db[_0x580b('0x48')][_0x580b('0x65')]({'where':{'isApp':!![],'VoiceExtensionId':_0x3207a6[_0x580b('0x4e')]['id']},'order':'cast(priority\x20as\x20unsigned)'});});}})['then'](respondWithResult(_0x93ad48,null))[_0x580b('0x4c')](handleError(_0x93ad48,null));};
\ No newline at end of file
+var _0xbb58=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./voiceExtension.socket','register','sendStatus','status','json','offset','undefined','count','limit','apply','reject','then','InboundRoutes','inbound','OutboundRoutes','outbound','InternalRoutes','internal','filter','ignore','map','value','type','find','name','end','error','stack','VoiceExtension','rawAttributes','key','model','keys','query','filters','intersection','attributes','fields','length','order','sort','where','pick','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','include','destroy','create','body','startsWith','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','description','recordingFormat','cutdigits','mandatoryDisposition','alias','addApplications','sequelize','VoiceExtensionId','isApp','rewriteDial','toLowerCase','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger'];(function(_0x223e44,_0x4aba64){var _0xde2a8a=function(_0x3ec43b){while(--_0x3ec43b){_0x223e44['push'](_0x223e44['shift']());}};_0xde2a8a(++_0x4aba64);}(_0xbb58,0xc1));var _0x8bb5=function(_0x31e586,_0x4d0e31){_0x31e586=_0x31e586-0x0;var _0x362482=_0xbb58[_0x31e586];return _0x362482;};'use strict';var emlformat=require(_0x8bb5('0x0'));var rimraf=require(_0x8bb5('0x1'));var zipdir=require(_0x8bb5('0x2'));var jsonpatch=require(_0x8bb5('0x3'));var rp=require(_0x8bb5('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x8bb5('0x5'));var sox=require('sox');var csv=require(_0x8bb5('0x6'));var ejs=require(_0x8bb5('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8bb5('0x8'));var squel=require(_0x8bb5('0x9'));var crypto=require(_0x8bb5('0xa'));var jsforce=require(_0x8bb5('0xb'));var deskjs=require(_0x8bb5('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x8bb5('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x8bb5('0xe'));var as=require(_0x8bb5('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8bb5('0x10'))('api');var utils=require(_0x8bb5('0x11'));var config=require(_0x8bb5('0x12'));var licenseUtil=require(_0x8bb5('0x13'));var db=require(_0x8bb5('0x14'))['db'];config[_0x8bb5('0x15')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x8bb5('0x16'))(new Redis(config['redis']));require(_0x8bb5('0x17'))[_0x8bb5('0x18')](socket);function respondWithStatusCode(_0x517a97,_0x30967f){_0x30967f=_0x30967f||0xcc;return function(_0x2cb2c2){if(_0x2cb2c2){return _0x517a97[_0x8bb5('0x19')](_0x30967f);}return _0x517a97[_0x8bb5('0x1a')](_0x30967f)['end']();};}function respondWithResult(_0x142d01,_0x19f976){_0x19f976=_0x19f976||0xc8;return function(_0x88ab3){if(_0x88ab3){return _0x142d01['status'](_0x19f976)[_0x8bb5('0x1b')](_0x88ab3);}};}function respondWithFilteredResult(_0x433c65,_0x49a3fd){return function(_0x37bf40){if(_0x37bf40){var _0x317282=typeof _0x49a3fd[_0x8bb5('0x1c')]===_0x8bb5('0x1d')&&typeof _0x49a3fd['limit']==='undefined';var _0x594335=_0x37bf40[_0x8bb5('0x1e')];var _0x1fa260=_0x317282?0x0:_0x49a3fd[_0x8bb5('0x1c')];var _0x5790bb=_0x317282?_0x37bf40[_0x8bb5('0x1e')]:_0x49a3fd[_0x8bb5('0x1c')]+_0x49a3fd[_0x8bb5('0x1f')];var _0x4cc267;if(_0x5790bb>=_0x594335){_0x5790bb=_0x594335;_0x4cc267=0xc8;}else{_0x4cc267=0xce;}_0x433c65['status'](_0x4cc267);return _0x433c65['set']('Content-Range',_0x1fa260+'-'+_0x5790bb+'/'+_0x594335)[_0x8bb5('0x1b')](_0x37bf40);}return null;};}function patchUpdates(_0x3025fd){return function(_0x1ba4e1){try{jsonpatch[_0x8bb5('0x20')](_0x1ba4e1,_0x3025fd,!![]);}catch(_0x4386af){return BPromise[_0x8bb5('0x21')](_0x4386af);}return _0x1ba4e1['save']();};}function saveUpdates(_0x4a6b57,_0x555883){return function(_0x2aad8c){if(_0x2aad8c){return _0x2aad8c['update'](_0x4a6b57)[_0x8bb5('0x22')](function(_0x4627d6){return _0x4627d6;});}return null;};}function removeEntity(_0x5c6a8b,_0x545a6a){return function(_0x235bbf){if(_0x235bbf){return _0x235bbf['destroy']()[_0x8bb5('0x22')](function(){var _0x1ab8ff=_0x235bbf['get']({'plain':!![]});var _0x30eaca=[{'name':_0x8bb5('0x23'),'value':_0x8bb5('0x24'),'ignore':![]},{'name':_0x8bb5('0x25'),'value':_0x8bb5('0x26'),'ignore':![]},{'name':_0x8bb5('0x27'),'value':_0x8bb5('0x28'),'ignore':![]}];var _0x11a8e8=_(_0x30eaca)[_0x8bb5('0x29')](_0x8bb5('0x2a'))[_0x8bb5('0x2b')]('value')[_0x8bb5('0x2c')]();if(_['includes'](_0x11a8e8,_0x1ab8ff[_0x8bb5('0x2d')])){return;}var _0xf3bed=_[_0x8bb5('0x2e')](_0x30eaca,[_0x8bb5('0x2c'),_0x1ab8ff[_0x8bb5('0x2d')]])[_0x8bb5('0x2f')];return db['UserProfileResource']['destroy']({'where':{'type':_0xf3bed,'resourceId':_0x1ab8ff['id']}})[_0x8bb5('0x22')](function(){return _0x235bbf;});})[_0x8bb5('0x22')](function(){_0x5c6a8b[_0x8bb5('0x1a')](0xcc)[_0x8bb5('0x30')]();});}};}function handleEntityNotFound(_0x6bafae,_0x5df11c){return function(_0x41c038){if(!_0x41c038){_0x6bafae[_0x8bb5('0x19')](0x194);}return _0x41c038;};}function handleError(_0x35abbf,_0x1b2704){_0x1b2704=_0x1b2704||0x1f4;return function(_0x126b7e){logger[_0x8bb5('0x31')](_0x126b7e[_0x8bb5('0x32')]);if(_0x126b7e[_0x8bb5('0x2f')]){delete _0x126b7e[_0x8bb5('0x2f')];}_0x35abbf[_0x8bb5('0x1a')](_0x1b2704)['send'](_0x126b7e);};}exports['index']=function(_0x45def6,_0x2ba63d){var _0x35ba35={},_0x12edea={},_0x5b1a71={'count':0x0,'rows':[]};var _0x1d4a0f=_[_0x8bb5('0x2b')](db[_0x8bb5('0x33')][_0x8bb5('0x34')],function(_0x1644b5){return{'name':_0x1644b5['fieldName'],'type':_0x1644b5[_0x8bb5('0x2d')][_0x8bb5('0x35')]};});_0x12edea[_0x8bb5('0x36')]=_['map'](_0x1d4a0f,'name');_0x12edea['query']=_[_0x8bb5('0x37')](_0x45def6[_0x8bb5('0x38')]);_0x12edea[_0x8bb5('0x39')]=_[_0x8bb5('0x3a')](_0x12edea[_0x8bb5('0x36')],_0x12edea[_0x8bb5('0x38')]);_0x35ba35[_0x8bb5('0x3b')]=_[_0x8bb5('0x3a')](_0x12edea['model'],qs[_0x8bb5('0x3c')](_0x45def6[_0x8bb5('0x38')][_0x8bb5('0x3c')]));_0x35ba35['attributes']=_0x35ba35[_0x8bb5('0x3b')][_0x8bb5('0x3d')]?_0x35ba35[_0x8bb5('0x3b')]:_0x12edea[_0x8bb5('0x36')];if(!_0x45def6[_0x8bb5('0x38')]['hasOwnProperty']('nolimit')){_0x35ba35[_0x8bb5('0x1f')]=qs['limit'](_0x45def6[_0x8bb5('0x38')][_0x8bb5('0x1f')]);_0x35ba35[_0x8bb5('0x1c')]=qs['offset'](_0x45def6[_0x8bb5('0x38')][_0x8bb5('0x1c')]);}_0x35ba35[_0x8bb5('0x3e')]=qs[_0x8bb5('0x3f')](_0x45def6[_0x8bb5('0x38')][_0x8bb5('0x3f')]);_0x35ba35[_0x8bb5('0x40')]=qs[_0x8bb5('0x39')](_[_0x8bb5('0x41')](_0x45def6[_0x8bb5('0x38')],_0x12edea['filters']),_0x1d4a0f);if(_0x45def6[_0x8bb5('0x38')]['filter']){_0x35ba35[_0x8bb5('0x40')]=_['merge'](_0x35ba35[_0x8bb5('0x40')],{'$or':_['map'](_0x1d4a0f,function(_0x341604){if(_0x341604['type']!==_0x8bb5('0x42')){var _0x2f917a={};_0x2f917a[_0x341604[_0x8bb5('0x2f')]]={'$like':'%'+_0x45def6[_0x8bb5('0x38')][_0x8bb5('0x29')]+'%'};return _0x2f917a;}})});}_0x35ba35=_[_0x8bb5('0x43')]({},_0x35ba35,_0x45def6[_0x8bb5('0x44')]);var _0x5ace0f={'where':_0x35ba35[_0x8bb5('0x40')]};return db['VoiceExtension'][_0x8bb5('0x1e')](_0x5ace0f)['then'](function(_0x58ca7d){_0x5b1a71[_0x8bb5('0x1e')]=_0x58ca7d;if(_0x45def6['query'][_0x8bb5('0x45')]){_0x35ba35['include']=[{'all':!![]}];}return db[_0x8bb5('0x33')][_0x8bb5('0x46')](_0x35ba35);})[_0x8bb5('0x22')](function(_0x451320){_0x5b1a71[_0x8bb5('0x47')]=_0x451320;return _0x5b1a71;})['then'](respondWithFilteredResult(_0x2ba63d,_0x35ba35))[_0x8bb5('0x48')](handleError(_0x2ba63d,null));};exports[_0x8bb5('0x49')]=function(_0x139a01,_0x589cb6){var _0x5e834d={'raw':![],'where':{'id':_0x139a01[_0x8bb5('0x4a')]['id']}},_0x118b1d={};_0x118b1d['model']=_[_0x8bb5('0x37')](db[_0x8bb5('0x33')][_0x8bb5('0x34')]);_0x118b1d[_0x8bb5('0x38')]=_[_0x8bb5('0x37')](_0x139a01[_0x8bb5('0x38')]);_0x118b1d[_0x8bb5('0x39')]=_[_0x8bb5('0x3a')](_0x118b1d[_0x8bb5('0x36')],_0x118b1d[_0x8bb5('0x38')]);_0x5e834d[_0x8bb5('0x3b')]=_[_0x8bb5('0x3a')](_0x118b1d[_0x8bb5('0x36')],qs[_0x8bb5('0x3c')](_0x139a01[_0x8bb5('0x38')][_0x8bb5('0x3c')]));_0x5e834d[_0x8bb5('0x3b')]=_0x5e834d[_0x8bb5('0x3b')][_0x8bb5('0x3d')]?_0x5e834d[_0x8bb5('0x3b')]:_0x118b1d[_0x8bb5('0x36')];if(_0x139a01[_0x8bb5('0x38')][_0x8bb5('0x45')]){_0x5e834d[_0x8bb5('0x4b')]=[{'all':!![]}];}_0x5e834d=_['merge']({},_0x5e834d,_0x139a01[_0x8bb5('0x44')]);return db[_0x8bb5('0x33')][_0x8bb5('0x2e')](_0x5e834d)[_0x8bb5('0x22')](handleEntityNotFound(_0x589cb6,null))['then'](respondWithResult(_0x589cb6,null))[_0x8bb5('0x48')](handleError(_0x589cb6,null));};exports[_0x8bb5('0x4c')]=function(_0x5416c2,_0x53552d){return db[_0x8bb5('0x33')][_0x8bb5('0x2e')]({'where':{'id':_0x5416c2[_0x8bb5('0x4a')]['id']}})[_0x8bb5('0x22')](handleEntityNotFound(_0x53552d,null))[_0x8bb5('0x22')](removeEntity(_0x53552d,null))[_0x8bb5('0x48')](handleError(_0x53552d,null));};exports[_0x8bb5('0x4d')]=function(_0xafa837,_0x23339d){if(_0xafa837[_0x8bb5('0x4e')][_0x8bb5('0x2d')]===_0x8bb5('0x26')&&!_[_0x8bb5('0x4f')](_0xafa837[_0x8bb5('0x4e')][_0x8bb5('0x50')],'_')){_0xafa837[_0x8bb5('0x4e')][_0x8bb5('0x50')]='_'[_0x8bb5('0x51')](_0xafa837['body'][_0x8bb5('0x50')]);}return db[_0x8bb5('0x33')][_0x8bb5('0x4d')](_0xafa837[_0x8bb5('0x4e')],{'raw':![]})[_0x8bb5('0x22')](function(_0x22f748){var _0x597c74=_0xafa837[_0x8bb5('0x52')]['get']({'plain':!![]});if(!_0x597c74)throw new Error(_0x8bb5('0x53'));if(_0x597c74[_0x8bb5('0x54')]===_0x8bb5('0x52')){var _0x125922=_0x22f748['get']({'plain':!![]});var _0x4e165c=[{'name':_0x8bb5('0x23'),'value':'inbound'},{'name':'OutboundRoutes','value':_0x8bb5('0x26')},{'name':_0x8bb5('0x27'),'value':'internal'}];var _0x419445=_[_0x8bb5('0x2e')](_0x4e165c,[_0x8bb5('0x2c'),_0x125922[_0x8bb5('0x2d')]])['name'];return db[_0x8bb5('0x55')][_0x8bb5('0x2e')]({'where':{'name':_0x419445,'userProfileId':_0x597c74[_0x8bb5('0x56')]},'raw':!![]})['then'](function(_0x3f964e){if(_0x3f964e&&_0x3f964e[_0x8bb5('0x57')]===0x0){return db['UserProfileResource'][_0x8bb5('0x4d')]({'name':_0x125922[_0x8bb5('0x2f')],'resourceId':_0x125922['id'],'type':_0x3f964e[_0x8bb5('0x2f')],'sectionId':_0x3f964e['id']},{})[_0x8bb5('0x22')](function(){return _0x22f748;});}else{return _0x22f748;}})[_0x8bb5('0x48')](function(_0x3eacf7){logger[_0x8bb5('0x31')](_0x8bb5('0x58'),_0x3eacf7);throw _0x3eacf7;});}return _0x22f748;})[_0x8bb5('0x22')](respondWithResult(_0x23339d,0xc9))[_0x8bb5('0x48')](handleError(_0x23339d,null));};exports['update']=function(_0x14edd1,_0x13d30c){if(_0x14edd1[_0x8bb5('0x4e')]['id']){delete _0x14edd1[_0x8bb5('0x4e')]['id'];}return db[_0x8bb5('0x33')]['find']({'where':{'id':_0x14edd1[_0x8bb5('0x4a')]['id']}})['then'](handleEntityNotFound(_0x13d30c,null))[_0x8bb5('0x22')](function(_0x169fda){if(_0x169fda){return db[_0x8bb5('0x33')][_0x8bb5('0x59')](_[_0x8bb5('0x41')](_0x14edd1['body'],[_0x8bb5('0x50'),'context',_0x8bb5('0x5a'),_0x8bb5('0x5b'),_0x8bb5('0x5c'),_0x8bb5('0x5d'),_0x8bb5('0x5e')]),{'where':{'context':_0x169fda['context'],'exten':_0x169fda['exten']},'individualHooks':!![]})['then'](function(_0x4cf2dd){return _0x4cf2dd;});}return null;})[_0x8bb5('0x22')](respondWithStatusCode(_0x13d30c,null))[_0x8bb5('0x48')](handleError(_0x13d30c,null));};exports[_0x8bb5('0x5f')]=function(_0x3cb62e,_0x855e96){return db[_0x8bb5('0x33')]['findOne']({'where':{'id':_0x3cb62e[_0x8bb5('0x4a')]['id']}})[_0x8bb5('0x22')](function(_0x263ec4){if(_0x263ec4){return db[_0x8bb5('0x60')]['transaction'](function(_0xe832cd){return db[_0x8bb5('0x33')][_0x8bb5('0x4c')]({'where':{'VoiceExtensionId':_0x3cb62e['params']['id']},'transaction':_0xe832cd})[_0x8bb5('0x22')](function(){var _0x49cf71=_[_0x8bb5('0x2b')](_0x3cb62e[_0x8bb5('0x4e')],function(_0x3bdb93){_0x3bdb93[_0x8bb5('0x61')]=_0x3cb62e[_0x8bb5('0x4a')]['id'];_0x3bdb93[_0x8bb5('0x62')]=!![];return _0x3bdb93;});var _0xe72cee=_0x3cb62e[_0x8bb5('0x38')][_0x8bb5('0x63')]&&_0x3cb62e[_0x8bb5('0x38')][_0x8bb5('0x63')][_0x8bb5('0x64')]()==='true'?!![]:![];return _0x263ec4[_0x8bb5('0x65')](_0x49cf71,_0xe72cee);})[_0x8bb5('0x22')](function(_0x4b994f){return db['VoiceExtension'][_0x8bb5('0x66')](_0x4b994f,{'transaction':_0xe832cd});});})[_0x8bb5('0x22')](function(){return db['VoiceExtension'][_0x8bb5('0x67')]({'where':{'isApp':!![],'VoiceExtensionId':_0x3cb62e[_0x8bb5('0x4a')]['id']},'order':_0x8bb5('0x68')});});}})[_0x8bb5('0x22')](respondWithResult(_0x855e96,null))[_0x8bb5('0x48')](handleError(_0x855e96,null));};
\ No newline at end of file
index 159cfab..d88b983 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b20=['emit','hook','events','VoiceExtension','save','update','remove'];(function(_0x3fd635,_0x4d6d06){var _0xfa2c37=function(_0x4ded5e){while(--_0x4ded5e){_0x3fd635['push'](_0x3fd635['shift']());}};_0xfa2c37(++_0x4d6d06);}(_0x0b20,0xb8));var _0x00b2=function(_0x101e79,_0x53f47e){_0x101e79=_0x101e79-0x0;var _0x5b5ef0=_0x0b20[_0x101e79];return _0x5b5ef0;};'use strict';var EventEmitter=require(_0x00b2('0x0'));var VoiceExtension=require('../../mysqldb')['db'][_0x00b2('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x00b2('0x2'),'afterUpdate':_0x00b2('0x3'),'afterDestroy':_0x00b2('0x4')};function emitEvent(_0x3618d4){return function(_0x257233,_0x5260bb,_0x17ea0b){VoiceExtensionEvents[_0x00b2('0x5')](_0x3618d4+':'+_0x257233['id'],_0x257233);VoiceExtensionEvents[_0x00b2('0x5')](_0x3618d4,_0x257233);_0x17ea0b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension[_0x00b2('0x6')](e,emitEvent(event));}}module['exports']=VoiceExtensionEvents;
\ No newline at end of file
+var _0x1ca5=['update','remove','emit','hasOwnProperty','exports','../../mysqldb','VoiceExtension','save'];(function(_0x3ef5ec,_0x213115){var _0x57a088=function(_0x199b1d){while(--_0x199b1d){_0x3ef5ec['push'](_0x3ef5ec['shift']());}};_0x57a088(++_0x213115);}(_0x1ca5,0x75));var _0x51ca=function(_0x19fe31,_0x4664eb){_0x19fe31=_0x19fe31-0x0;var _0x1ed7d0=_0x1ca5[_0x19fe31];return _0x1ed7d0;};'use strict';var EventEmitter=require('events');var VoiceExtension=require(_0x51ca('0x0'))['db'][_0x51ca('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x51ca('0x2'),'afterUpdate':_0x51ca('0x3'),'afterDestroy':_0x51ca('0x4')};function emitEvent(_0x54d4db){return function(_0x1b3180,_0xf40968,_0x3c4670){VoiceExtensionEvents['emit'](_0x54d4db+':'+_0x1b3180['id'],_0x1b3180);VoiceExtensionEvents[_0x51ca('0x5')](_0x54d4db,_0x1b3180);_0x3c4670(null);};}for(var e in events){if(events[_0x51ca('0x6')](e)){var event=events[e];VoiceExtension['hook'](e,emitEvent(event));}}module[_0x51ca('0x7')]=VoiceExtensionEvents;
\ No newline at end of file
index c14c0d0..3f68eef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e01=['indexOf','U(xcally-mixmonitor-context)','replace','isEmpty','Interval','findAll','interval','IntervalId','intervals','map','filter','toLowerCase','tag','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','playback','includes','appType','custom','answer','$[${XCALLY-MOTION-ANSWER}=0]?Answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','GotoIfTime',',${EXTEN},','appdata','priority','last','catch','define','VoiceExtension','voice_extensions','Hangup','util','lodash','models','type','Set','CDR(type)=','context','exten','alias','CDR(routeAlias)=','No\x20alias\x20set','inbound','push','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','NoOp','${EXTEN:','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','options','split','length','name','param','phone','prefix','${EXTEN}','SIP','join'];(function(_0x27378d,_0x1e9d82){var _0x103b2b=function(_0x5af1b0){while(--_0x5af1b0){_0x27378d['push'](_0x27378d['shift']());}};_0x103b2b(++_0x1e9d82);}(_0x3e01,0x163));var _0x13e0=function(_0x110738,_0x3c88c3){_0x110738=_0x110738-0x0;var _0x599789=_0x3e01[_0x110738];return _0x599789;};'use strict';var util=require(_0x13e0('0x0'));var _=require(_0x13e0('0x1'));var attributes=require('./voiceExtension.attributes');module['exports']=function(_0x9f89d5){var _0x5ccc1f=_0x9f89d5[_0x13e0('0x2')];function _0x244b80(_0xed983c){var _0x1fb94c=0x2;var _0x47f0b7=[{'type':_0xed983c[_0x13e0('0x3')],'app':_0x13e0('0x4'),'appdata':_0x13e0('0x5')+_0xed983c['type'],'context':_0xed983c[_0x13e0('0x6')],'exten':_0xed983c[_0x13e0('0x7')],'priority':_0x1fb94c++,'VoiceExtensionId':_0xed983c['id']},{'type':_0xed983c[_0x13e0('0x3')],'app':_0xed983c[_0x13e0('0x8')]?_0x13e0('0x4'):'NoOp','appdata':_0xed983c[_0x13e0('0x8')]?_0x13e0('0x9')+_0xed983c[_0x13e0('0x8')]:_0x13e0('0xa'),'context':_0xed983c[_0x13e0('0x6')],'exten':_0xed983c[_0x13e0('0x7')],'priority':_0x1fb94c++,'VoiceExtensionId':_0xed983c['id']}];if(_0xed983c[_0x13e0('0x3')]===_0x13e0('0xb')){_0x47f0b7[_0x13e0('0xc')]({'type':_0x13e0('0xb'),'app':_0x13e0('0x4'),'appdata':_0x13e0('0xd')+_0xed983c['id'],'context':_0xed983c[_0x13e0('0x6')],'exten':_0xed983c[_0x13e0('0x7')],'priority':_0x1fb94c++,'VoiceExtensionId':_0xed983c['id']});}_0x47f0b7['push']({'type':_0xed983c[_0x13e0('0x3')],'app':_0x13e0('0x4'),'appdata':_0x13e0('0xe'),'context':_0xed983c[_0x13e0('0x6')],'exten':_0xed983c[_0x13e0('0x7')],'priority':_0x1fb94c++,'VoiceExtensionId':_0xed983c['id']},{'type':_0xed983c['type'],'app':_0x13e0('0x4'),'appdata':_0x13e0('0xf'),'context':_0xed983c[_0x13e0('0x6')],'exten':_0xed983c[_0x13e0('0x7')],'priority':_0x1fb94c++,'VoiceExtensionId':_0xed983c['id']},{'type':_0xed983c[_0x13e0('0x3')],'app':_0x13e0('0x4'),'appdata':_0x13e0('0x10'),'context':_0xed983c['context'],'exten':_0xed983c['exten'],'priority':_0x1fb94c++,'VoiceExtensionId':_0xed983c['id']});return _0x47f0b7;}function _0x219a0c(_0x501dce){var _0x3d1715=0x2;var _0xd4d6fc=[{'type':_0x13e0('0x11'),'app':_0x13e0('0x4'),'appdata':_0x13e0('0x12'),'context':_0x501dce[_0x13e0('0x6')],'exten':_0x501dce[_0x13e0('0x7')],'priority':_0x3d1715++,'VoiceExtensionId':_0x501dce['id']},{'type':_0x13e0('0x11'),'app':_0x501dce[_0x13e0('0x8')]?_0x13e0('0x4'):_0x13e0('0x13'),'appdata':_0x501dce[_0x13e0('0x8')]?'CDR(routeAlias)='+_0x501dce[_0x13e0('0x8')]:_0x13e0('0xa'),'context':_0x501dce[_0x13e0('0x6')],'exten':_0x501dce[_0x13e0('0x7')],'priority':_0x3d1715++,'VoiceExtensionId':_0x501dce['id']},{'type':_0x13e0('0x11'),'app':'Set','appdata':'CDR(destination)='+(_0x501dce['cutdigits']?_0x13e0('0x14')+_0x501dce['cutdigits']+'}':'${EXTEN}'),'context':_0x501dce['context'],'exten':_0x501dce[_0x13e0('0x7')],'priority':_0x3d1715++,'VoiceExtensionId':_0x501dce['id']},{'type':_0x13e0('0x11'),'app':'Set','appdata':_0x13e0('0xd')+_0x501dce['id'],'context':_0x501dce[_0x13e0('0x6')],'exten':_0x501dce['exten'],'priority':_0x3d1715++,'VoiceExtensionId':_0x501dce['id']},{'type':_0x13e0('0x11'),'app':_0x13e0('0x15'),'appdata':_0x13e0('0x16')+(_0x3d1715+0x2)+_0x13e0('0x17')+(_0x3d1715+0x1)+')','context':_0x501dce[_0x13e0('0x6')],'exten':_0x501dce[_0x13e0('0x7')],'priority':_0x3d1715++,'VoiceExtensionId':_0x501dce['id']},{'type':_0x13e0('0x11'),'app':_0x13e0('0x4'),'appdata':_0x501dce['cutdigits']?_0x13e0('0x18')+_0x501dce['cutdigits']+'}':_0x13e0('0x19'),'context':_0x501dce[_0x13e0('0x6')],'exten':_0x501dce[_0x13e0('0x7')],'priority':_0x3d1715++,'VoiceExtensionId':_0x501dce['id']},{'type':_0x13e0('0x11'),'app':_0x13e0('0x4'),'appdata':_0x13e0('0xe'),'context':_0x501dce['context'],'exten':_0x501dce[_0x13e0('0x7')],'priority':_0x3d1715++,'VoiceExtensionId':_0x501dce['id']},{'type':_0x13e0('0x11'),'app':_0x13e0('0x4'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x501dce['context'],'exten':_0x501dce[_0x13e0('0x7')],'priority':_0x3d1715++,'VoiceExtensionId':_0x501dce['id']},{'type':_0x13e0('0x11'),'app':_0x13e0('0x4'),'appdata':_0x13e0('0x10'),'context':_0x501dce[_0x13e0('0x6')],'exten':_0x501dce['exten'],'priority':_0x3d1715++,'VoiceExtensionId':_0x501dce['id']},{'type':'outbound','app':_0x13e0('0x4'),'appdata':_0x13e0('0x1a')+_0x501dce['id'],'context':_0x501dce[_0x13e0('0x6')],'exten':_0x501dce[_0x13e0('0x7')],'priority':_0x3d1715++,'VoiceExtensionId':_0x501dce['id']}];if(_0x501dce[_0x13e0('0x1b')](_0x13e0('0x1c'))&&_0x501dce[_0x13e0('0x1c')]!==_0x13e0('0x1d')){_0xd4d6fc[_0x13e0('0xc')]({'type':_0x13e0('0x11'),'app':'Set','appdata':_0x13e0('0x1e'),'context':_0x501dce[_0x13e0('0x6')],'exten':_0x501dce[_0x13e0('0x7')],'priority':_0x3d1715++,'VoiceExtensionId':_0x501dce['id']},{'type':_0x13e0('0x11'),'app':'Set','appdata':_0x13e0('0x1f')+_0x501dce[_0x13e0('0x1c')]||_0x13e0('0x20'),'context':_0x501dce[_0x13e0('0x6')],'exten':_0x501dce[_0x13e0('0x7')],'priority':_0x3d1715++,'VoiceExtensionId':_0x501dce['id']});}return _0xd4d6fc;}function _0x424063(_0x51f801){var _0x2074c1=[{'name':_0x13e0('0x21'),'param':0x0},{'name':_0x13e0('0x22'),'param':0x1},{'name':_0x13e0('0x23'),'param':0x2},{'name':'url','param':0x3}];var _0xfb624d={};var _0x2ed43c=_0x51f801[_0x13e0('0x24')](',');var _0x25d04a=[];for(var _0x11e59f=0x0;_0x11e59f<_0x2074c1[_0x13e0('0x25')];_0x11e59f++){switch(_0x2074c1[_0x11e59f][_0x13e0('0x26')]){case'trunk':_0xfb624d['trunk']=_0x2ed43c[_0x2074c1[_0x11e59f][_0x13e0('0x27')]]['split']('/')[0x1];_0xfb624d[_0x13e0('0x28')]=_0x2ed43c[_0x2074c1[_0x11e59f][_0x13e0('0x27')]]['split']('/')[0x2];_0xfb624d[_0x13e0('0x29')]=_0xfb624d[_0x13e0('0x28')]?_0xfb624d[_0x13e0('0x28')][_0x13e0('0x24')]('$')[0x0]:undefined;_0xfb624d[_0x13e0('0x28')]=route['cutdigits']?(_0xfb624d[_0x13e0('0x29')]||'')+'${EXTEN:'+route['cutdigits']+'}':(_0xfb624d[_0x13e0('0x29')]||'')+_0x13e0('0x2a');_0x25d04a[_0x2074c1[_0x11e59f][_0x13e0('0x27')]]=[_0x13e0('0x2b'),_0xfb624d[_0x13e0('0x21')],_0xfb624d['phone']][_0x13e0('0x2c')]('/');break;case _0x13e0('0x23'):_0xfb624d[_0x13e0('0x23')]=_0x2ed43c[_0x2074c1[_0x11e59f][_0x13e0('0x27')]];if(route['recordingFormat']!==_0x13e0('0x1d')){if(_0xfb624d[_0x13e0('0x23')][_0x13e0('0x2d')](_0x13e0('0x2e'))<0x0){_0xfb624d[_0x13e0('0x23')]+=_0x13e0('0x2e');}}else{_0xfb624d[_0x13e0('0x23')]=_0xfb624d[_0x13e0('0x23')][_0x13e0('0x2f')]('U(xcally-mixmonitor-context)','');}_0x25d04a[_0x2074c1[_0x11e59f]['param']]=_0xfb624d[_0x13e0('0x23')];break;default:_0x25d04a[_0x2074c1[_0x11e59f]['param']]=_0x2ed43c[_0x2074c1[_0x11e59f]['param']];}}return _0x25d04a[_0x13e0('0x2c')](',');}function _0x3b2aec(_0xc33cc9,_0xc5a177,_0xaf3ce5,_0x43896b){return new Promise(function(_0x38a0d3,_0x5adee){var _0x138c5a=[];if(_[_0x13e0('0x30')](_0xc5a177))return _0x38a0d3(_0x138c5a);_0x5ccc1f[_0x13e0('0x31')][_0x13e0('0x32')]({'attributes':['id',_0x13e0('0x33'),_0x13e0('0x34')],'raw':!![]})['then'](function(_0x286b87){for(var _0x3f46a5=0x0,_0x102ef7=0x0;_0x3f46a5<_0xc5a177[_0x13e0('0x25')];_0x3f46a5++,_0x102ef7=0x0){var _0x16409b=_0xc5a177[_0x3f46a5];var _0x439cd4=[];var _0x242f97=[];if(_0x16409b[_0x13e0('0x33')]!=='*,*,*,*'){_0x16409b[_0x13e0('0x35')]=[_0x16409b[_0x13e0('0x33')]];}else{_0x16409b[_0x13e0('0x35')]=_0x16409b['IntervalId']?_[_0x13e0('0x36')](_[_0x13e0('0x37')](_0x286b87,{'IntervalId':_0x16409b[_0x13e0('0x34')]}),'interval'):[];}_0x16409b[_0x13e0('0x6')]=_0xc33cc9['context'];_0x16409b['exten']=_0xc33cc9[_0x13e0('0x7')];if(_0x16409b['type'])_0x16409b[_0x13e0('0x3')]=_0x16409b[_0x13e0('0x3')][_0x13e0('0x38')]();if(_0xc33cc9[_0x13e0('0x3')]===_0x13e0('0x11')){if(_0x16409b[_0x13e0('0x1b')](_0x13e0('0x39'))&&_0x16409b[_0x13e0('0x39')]&&_0x16409b[_0x13e0('0x39')]!=='--'){_0x439cd4[_0x13e0('0xc')]({'type':_0x16409b[_0x13e0('0x3')]['toLowerCase'](),'app':'Set','appdata':'CDR(tag)='+_0x16409b[_0x13e0('0x39')],'context':_0xc33cc9[_0x13e0('0x6')],'exten':_0xc33cc9[_0x13e0('0x7')],'priority':_0x16409b['intervals']['length']+_0xaf3ce5+_0x102ef7++,'VoiceExtensionId':_0xc33cc9['id']});}_0x439cd4[_0x13e0('0xc')]({'type':_0x16409b[_0x13e0('0x3')]['toLowerCase'](),'app':_0x13e0('0x15'),'appdata':_0x13e0('0x3a')+(_0x16409b[_0x13e0('0x3b')]?_0x13e0('0x3c')+_0x16409b[_0x13e0('0x3b')]+')':_0x13e0('0x3d')),'context':_0xc33cc9[_0x13e0('0x6')],'exten':_0xc33cc9[_0x13e0('0x7')],'priority':_0x16409b[_0x13e0('0x35')][_0x13e0('0x25')]+_0xaf3ce5+_0x102ef7++,'VoiceExtensionId':_0xc33cc9['id']});}else{if(_0x16409b['hasOwnProperty']('answer')){if(['queue',_0x13e0('0x3e')][_0x13e0('0x3f')](_0x16409b['app'][_0x13e0('0x38')]())&&_0x16409b[_0x13e0('0x40')]!==_0x13e0('0x41')){if(_0x16409b[_0x13e0('0x42')]){_0x439cd4[_0x13e0('0xc')]({'type':_0x16409b[_0x13e0('0x3')][_0x13e0('0x38')](),'app':'ExecIf','appdata':_0x13e0('0x43'),'context':_0xc33cc9[_0x13e0('0x6')],'exten':_0xc33cc9[_0x13e0('0x7')],'priority':_0x16409b[_0x13e0('0x35')][_0x13e0('0x25')]+_0xaf3ce5+_0x102ef7++,'VoiceExtensionId':_0xc33cc9['id']});_0x439cd4[_0x13e0('0xc')]({'type':_0x16409b[_0x13e0('0x3')][_0x13e0('0x38')](),'app':_0x13e0('0x4'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0xc33cc9[_0x13e0('0x6')],'exten':_0xc33cc9[_0x13e0('0x7')],'priority':_0x16409b['intervals'][_0x13e0('0x25')]+_0xaf3ce5+_0x102ef7++,'VoiceExtensionId':_0xc33cc9['id']});}else{_0x439cd4[_0x13e0('0xc')]({'type':_0x16409b[_0x13e0('0x3')]['toLowerCase'](),'app':_0x13e0('0x15'),'appdata':_0x13e0('0x44'),'context':_0xc33cc9['context'],'exten':_0xc33cc9[_0x13e0('0x7')],'priority':_0x16409b[_0x13e0('0x35')][_0x13e0('0x25')]+_0xaf3ce5+_0x102ef7++,'VoiceExtensionId':_0xc33cc9['id']});_0x439cd4[_0x13e0('0xc')]({'type':_0x16409b['type'][_0x13e0('0x38')](),'app':_0x13e0('0x4'),'appdata':_0x13e0('0x45'),'context':_0xc33cc9[_0x13e0('0x6')],'exten':_0xc33cc9[_0x13e0('0x7')],'priority':_0x16409b[_0x13e0('0x35')]['length']+_0xaf3ce5+_0x102ef7++,'VoiceExtensionId':_0xc33cc9['id']});}}}}for(var _0x42c4d5=0x0;_0x42c4d5<_0x16409b[_0x13e0('0x35')][_0x13e0('0x25')];_0x42c4d5++){var _0x50fcbb=_0xaf3ce5+_0x16409b[_0x13e0('0x35')][_0x13e0('0x25')];var _0x514fb3=_0x42c4d5===_0x16409b['intervals'][_0x13e0('0x25')]-0x1?_0xaf3ce5+_0x439cd4[_0x13e0('0x25')]+_0x242f97[_0x13e0('0x25')]+0x2:_0xaf3ce5+_0x42c4d5+0x1;_0x439cd4['splice'](_0x42c4d5,0x0,{'type':_0xc33cc9[_0x13e0('0x3')],'app':_0x13e0('0x46'),'appdata':_0x16409b[_0x13e0('0x35')][_0x42c4d5]+'?'+_0xc33cc9[_0x13e0('0x6')]+_0x13e0('0x47')+_0x50fcbb+':'+_0xc33cc9[_0x13e0('0x6')]+_0x13e0('0x47')+_0x514fb3,'exten':_0xc33cc9[_0x13e0('0x7')],'context':_0xc33cc9[_0x13e0('0x6')],'priority':_0xaf3ce5+_0x42c4d5,'VoiceExtensionId':_0xc33cc9['id']});}if(_0x43896b&&_0x16409b['appType']==='outboundDial')_0x16409b[_0x13e0('0x48')]=_0x424063(_0x16409b['appdata']);_0x16409b[_0x13e0('0x49')]=_0x439cd4['length']?_[_0x13e0('0x4a')](_0x439cd4)[_0x13e0('0x49')]+0x1:_0xaf3ce5;_0x138c5a=_['concat'](_0x138c5a,_0x439cd4,[_0x16409b],_0x242f97);_0xaf3ce5=_[_0x13e0('0x4a')](_0x138c5a)[_0x13e0('0x49')]+0x1;}return _0x38a0d3(_0x138c5a);})[_0x13e0('0x4b')](function(_0x310fc5){_0x5adee(_0x310fc5);});});}return _0x9f89d5[_0x13e0('0x4c')](_0x13e0('0x4d'),attributes,{'tableName':_0x13e0('0x4e'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x2576cb,_0x585dbc){var _0x10e72a=this;var _0x51de3b=_0x10e72a[_0x13e0('0x3')]===_0x13e0('0x11')?_0x219a0c(_0x10e72a):_0x244b80(_0x10e72a);return _0x3b2aec(_0x10e72a,_0x2576cb,_[_0x13e0('0x4a')](_0x51de3b)[_0x13e0('0x49')]+0x1,_0x585dbc)['then'](function(_0x58dfde){var _0x4f1104=_['concat'](_0x51de3b,_0x58dfde);_0x4f1104[_0x13e0('0xc')]({'type':_0x10e72a[_0x13e0('0x3')],'app':_0x13e0('0x4f'),'exten':_0x10e72a['exten'],'context':_0x10e72a[_0x13e0('0x6')],'priority':_[_0x13e0('0x4a')](_0x4f1104)[_0x13e0('0x49')]+0x1,'VoiceExtensionId':_0x10e72a['id']});return _0x4f1104;});}}});};
\ No newline at end of file
+var _0xfcdc=['inbound','push','CDR(routeid)=','Set','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(destination)=','cutdigits','${EXTEN:','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','outboundrouteid=','hasOwnProperty','recordingFormat','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','options','url','split','param','phone','prefix','${EXTEN}','SIP','join','none','indexOf','U(xcally-mixmonitor-context)','isEmpty','Interval','findAll','interval','IntervalId','then','length','*,*,*,*','intervals','filter','tag','toLowerCase','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer','queue','playback','includes','app','appType','custom','XCALLY-MOTION-ANSWER=1','XCALLY-MOTION-PROGRESS=1',',${EXTEN},','appdata','priority','last','concat','define','VoiceExtension','voice_extensions','Hangup','util','lodash','./voiceExtension.attributes','models','type','CDR(type)=','exten','NoOp','alias','CDR(routeAlias)=','No\x20alias\x20set','context'];(function(_0x173f9e,_0x41e4da){var _0x2ce401=function(_0x2fe56b){while(--_0x2fe56b){_0x173f9e['push'](_0x173f9e['shift']());}};_0x2ce401(++_0x41e4da);}(_0xfcdc,0x12c));var _0xcfcd=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xfcdc[_0x59ee6f];return _0x4c0979;};'use strict';var util=require(_0xcfcd('0x0'));var _=require(_0xcfcd('0x1'));var attributes=require(_0xcfcd('0x2'));module['exports']=function(_0x8a8650){var _0xf7ba00=_0x8a8650[_0xcfcd('0x3')];function _0x337550(_0x3f0c14){var _0xbfed3e=0x2;var _0x3a511c=[{'type':_0x3f0c14[_0xcfcd('0x4')],'app':'Set','appdata':_0xcfcd('0x5')+_0x3f0c14[_0xcfcd('0x4')],'context':_0x3f0c14['context'],'exten':_0x3f0c14[_0xcfcd('0x6')],'priority':_0xbfed3e++,'VoiceExtensionId':_0x3f0c14['id']},{'type':_0x3f0c14[_0xcfcd('0x4')],'app':_0x3f0c14['alias']?'Set':_0xcfcd('0x7'),'appdata':_0x3f0c14[_0xcfcd('0x8')]?_0xcfcd('0x9')+_0x3f0c14[_0xcfcd('0x8')]:_0xcfcd('0xa'),'context':_0x3f0c14[_0xcfcd('0xb')],'exten':_0x3f0c14[_0xcfcd('0x6')],'priority':_0xbfed3e++,'VoiceExtensionId':_0x3f0c14['id']}];if(_0x3f0c14[_0xcfcd('0x4')]===_0xcfcd('0xc')){_0x3a511c[_0xcfcd('0xd')]({'type':_0xcfcd('0xc'),'app':'Set','appdata':_0xcfcd('0xe')+_0x3f0c14['id'],'context':_0x3f0c14[_0xcfcd('0xb')],'exten':_0x3f0c14[_0xcfcd('0x6')],'priority':_0xbfed3e++,'VoiceExtensionId':_0x3f0c14['id']});}_0x3a511c[_0xcfcd('0xd')]({'type':_0x3f0c14[_0xcfcd('0x4')],'app':_0xcfcd('0xf'),'appdata':_0xcfcd('0x10'),'context':_0x3f0c14[_0xcfcd('0xb')],'exten':_0x3f0c14[_0xcfcd('0x6')],'priority':_0xbfed3e++,'VoiceExtensionId':_0x3f0c14['id']},{'type':_0x3f0c14[_0xcfcd('0x4')],'app':_0xcfcd('0xf'),'appdata':_0xcfcd('0x11'),'context':_0x3f0c14['context'],'exten':_0x3f0c14[_0xcfcd('0x6')],'priority':_0xbfed3e++,'VoiceExtensionId':_0x3f0c14['id']},{'type':_0x3f0c14[_0xcfcd('0x4')],'app':_0xcfcd('0xf'),'appdata':_0xcfcd('0x12'),'context':_0x3f0c14['context'],'exten':_0x3f0c14['exten'],'priority':_0xbfed3e++,'VoiceExtensionId':_0x3f0c14['id']});return _0x3a511c;}function _0x2dafc6(_0x2c5bee){var _0x2974a5=0x2;var _0x45c154=[{'type':_0xcfcd('0x13'),'app':_0xcfcd('0xf'),'appdata':'CDR(type)=outbound','context':_0x2c5bee[_0xcfcd('0xb')],'exten':_0x2c5bee['exten'],'priority':_0x2974a5++,'VoiceExtensionId':_0x2c5bee['id']},{'type':_0xcfcd('0x13'),'app':_0x2c5bee[_0xcfcd('0x8')]?_0xcfcd('0xf'):'NoOp','appdata':_0x2c5bee[_0xcfcd('0x8')]?'CDR(routeAlias)='+_0x2c5bee['alias']:_0xcfcd('0xa'),'context':_0x2c5bee[_0xcfcd('0xb')],'exten':_0x2c5bee[_0xcfcd('0x6')],'priority':_0x2974a5++,'VoiceExtensionId':_0x2c5bee['id']},{'type':_0xcfcd('0x13'),'app':_0xcfcd('0xf'),'appdata':_0xcfcd('0x14')+(_0x2c5bee[_0xcfcd('0x15')]?_0xcfcd('0x16')+_0x2c5bee[_0xcfcd('0x15')]+'}':'${EXTEN}'),'context':_0x2c5bee['context'],'exten':_0x2c5bee['exten'],'priority':_0x2974a5++,'VoiceExtensionId':_0x2c5bee['id']},{'type':_0xcfcd('0x13'),'app':'Set','appdata':_0xcfcd('0xe')+_0x2c5bee['id'],'context':_0x2c5bee[_0xcfcd('0xb')],'exten':_0x2c5bee[_0xcfcd('0x6')],'priority':_0x2974a5++,'VoiceExtensionId':_0x2c5bee['id']},{'type':_0xcfcd('0x13'),'app':_0xcfcd('0x17'),'appdata':_0xcfcd('0x18')+(_0x2974a5+0x2)+'):Goto('+(_0x2974a5+0x1)+')','context':_0x2c5bee['context'],'exten':_0x2c5bee[_0xcfcd('0x6')],'priority':_0x2974a5++,'VoiceExtensionId':_0x2c5bee['id']},{'type':_0xcfcd('0x13'),'app':_0xcfcd('0xf'),'appdata':_0x2c5bee['cutdigits']?'CDR(prefix)=${EXTEN:0:'+_0x2c5bee['cutdigits']+'}':'CDR(prefix)=noprefix','context':_0x2c5bee[_0xcfcd('0xb')],'exten':_0x2c5bee[_0xcfcd('0x6')],'priority':_0x2974a5++,'VoiceExtensionId':_0x2c5bee['id']},{'type':_0xcfcd('0x13'),'app':'Set','appdata':_0xcfcd('0x10'),'context':_0x2c5bee[_0xcfcd('0xb')],'exten':_0x2c5bee['exten'],'priority':_0x2974a5++,'VoiceExtensionId':_0x2c5bee['id']},{'type':_0xcfcd('0x13'),'app':_0xcfcd('0xf'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x2c5bee[_0xcfcd('0xb')],'exten':_0x2c5bee[_0xcfcd('0x6')],'priority':_0x2974a5++,'VoiceExtensionId':_0x2c5bee['id']},{'type':'outbound','app':_0xcfcd('0xf'),'appdata':_0xcfcd('0x12'),'context':_0x2c5bee[_0xcfcd('0xb')],'exten':_0x2c5bee[_0xcfcd('0x6')],'priority':_0x2974a5++,'VoiceExtensionId':_0x2c5bee['id']},{'type':_0xcfcd('0x13'),'app':_0xcfcd('0xf'),'appdata':_0xcfcd('0x19')+_0x2c5bee['id'],'context':_0x2c5bee['context'],'exten':_0x2c5bee[_0xcfcd('0x6')],'priority':_0x2974a5++,'VoiceExtensionId':_0x2c5bee['id']}];if(_0x2c5bee[_0xcfcd('0x1a')](_0xcfcd('0x1b'))&&_0x2c5bee['recordingFormat']!=='none'){_0x45c154[_0xcfcd('0xd')]({'type':'outbound','app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x2c5bee[_0xcfcd('0xb')],'exten':_0x2c5bee[_0xcfcd('0x6')],'priority':_0x2974a5++,'VoiceExtensionId':_0x2c5bee['id']},{'type':_0xcfcd('0x13'),'app':'Set','appdata':_0xcfcd('0x1c')+_0x2c5bee['recordingFormat']||_0xcfcd('0x1d'),'context':_0x2c5bee['context'],'exten':_0x2c5bee[_0xcfcd('0x6')],'priority':_0x2974a5++,'VoiceExtensionId':_0x2c5bee['id']});}return _0x45c154;}function _0xba8dd9(_0x1fd4d3){var _0x29a957=[{'name':_0xcfcd('0x1e'),'param':0x0},{'name':_0xcfcd('0x1f'),'param':0x1},{'name':_0xcfcd('0x20'),'param':0x2},{'name':_0xcfcd('0x21'),'param':0x3}];var _0x3dba8d={};var _0x512211=_0x1fd4d3[_0xcfcd('0x22')](',');var _0x178ace=[];for(var _0x436879=0x0;_0x436879<_0x29a957['length'];_0x436879++){switch(_0x29a957[_0x436879]['name']){case _0xcfcd('0x1e'):_0x3dba8d[_0xcfcd('0x1e')]=_0x512211[_0x29a957[_0x436879][_0xcfcd('0x23')]][_0xcfcd('0x22')]('/')[0x1];_0x3dba8d[_0xcfcd('0x24')]=_0x512211[_0x29a957[_0x436879][_0xcfcd('0x23')]][_0xcfcd('0x22')]('/')[0x2];_0x3dba8d[_0xcfcd('0x25')]=_0x3dba8d[_0xcfcd('0x24')]?_0x3dba8d[_0xcfcd('0x24')]['split']('$')[0x0]:undefined;_0x3dba8d['phone']=route[_0xcfcd('0x15')]?(_0x3dba8d[_0xcfcd('0x25')]||'')+_0xcfcd('0x16')+route[_0xcfcd('0x15')]+'}':(_0x3dba8d[_0xcfcd('0x25')]||'')+_0xcfcd('0x26');_0x178ace[_0x29a957[_0x436879][_0xcfcd('0x23')]]=[_0xcfcd('0x27'),_0x3dba8d[_0xcfcd('0x1e')],_0x3dba8d[_0xcfcd('0x24')]][_0xcfcd('0x28')]('/');break;case _0xcfcd('0x20'):_0x3dba8d[_0xcfcd('0x20')]=_0x512211[_0x29a957[_0x436879][_0xcfcd('0x23')]];if(route[_0xcfcd('0x1b')]!==_0xcfcd('0x29')){if(_0x3dba8d[_0xcfcd('0x20')][_0xcfcd('0x2a')](_0xcfcd('0x2b'))<0x0){_0x3dba8d[_0xcfcd('0x20')]+=_0xcfcd('0x2b');}}else{_0x3dba8d[_0xcfcd('0x20')]=_0x3dba8d[_0xcfcd('0x20')]['replace'](_0xcfcd('0x2b'),'');}_0x178ace[_0x29a957[_0x436879][_0xcfcd('0x23')]]=_0x3dba8d[_0xcfcd('0x20')];break;default:_0x178ace[_0x29a957[_0x436879][_0xcfcd('0x23')]]=_0x512211[_0x29a957[_0x436879][_0xcfcd('0x23')]];}}return _0x178ace[_0xcfcd('0x28')](',');}function _0x2324c2(_0x320934,_0x3a8679,_0x2c2628,_0x14b028){return new Promise(function(_0x2200d7,_0x3b336e){var _0x4bde15=[];if(_[_0xcfcd('0x2c')](_0x3a8679))return _0x2200d7(_0x4bde15);_0xf7ba00[_0xcfcd('0x2d')][_0xcfcd('0x2e')]({'attributes':['id',_0xcfcd('0x2f'),_0xcfcd('0x30')],'raw':!![]})[_0xcfcd('0x31')](function(_0x3f668e){for(var _0x582e4d=0x0,_0x18d151=0x0;_0x582e4d<_0x3a8679[_0xcfcd('0x32')];_0x582e4d++,_0x18d151=0x0){var _0x55cf04=_0x3a8679[_0x582e4d];var _0xc3d19b=[];var _0x4d657a=[];if(_0x55cf04[_0xcfcd('0x2f')]!==_0xcfcd('0x33')){_0x55cf04[_0xcfcd('0x34')]=[_0x55cf04[_0xcfcd('0x2f')]];}else{_0x55cf04['intervals']=_0x55cf04[_0xcfcd('0x30')]?_['map'](_[_0xcfcd('0x35')](_0x3f668e,{'IntervalId':_0x55cf04[_0xcfcd('0x30')]}),_0xcfcd('0x2f')):[];}_0x55cf04[_0xcfcd('0xb')]=_0x320934[_0xcfcd('0xb')];_0x55cf04[_0xcfcd('0x6')]=_0x320934[_0xcfcd('0x6')];if(_0x55cf04[_0xcfcd('0x4')])_0x55cf04[_0xcfcd('0x4')]=_0x55cf04[_0xcfcd('0x4')]['toLowerCase']();if(_0x320934[_0xcfcd('0x4')]===_0xcfcd('0x13')){if(_0x55cf04['hasOwnProperty'](_0xcfcd('0x36'))&&_0x55cf04[_0xcfcd('0x36')]&&_0x55cf04[_0xcfcd('0x36')]!=='--'){_0xc3d19b[_0xcfcd('0xd')]({'type':_0x55cf04[_0xcfcd('0x4')]['toLowerCase'](),'app':_0xcfcd('0xf'),'appdata':'CDR(tag)='+_0x55cf04['tag'],'context':_0x320934['context'],'exten':_0x320934[_0xcfcd('0x6')],'priority':_0x55cf04[_0xcfcd('0x34')][_0xcfcd('0x32')]+_0x2c2628+_0x18d151++,'VoiceExtensionId':_0x320934['id']});}_0xc3d19b[_0xcfcd('0xd')]({'type':_0x55cf04[_0xcfcd('0x4')][_0xcfcd('0x37')](),'app':_0xcfcd('0x17'),'appdata':_0xcfcd('0x38')+(_0x55cf04[_0xcfcd('0x39')]?_0xcfcd('0x3a')+_0x55cf04[_0xcfcd('0x39')]+')':_0xcfcd('0x3b')),'context':_0x320934[_0xcfcd('0xb')],'exten':_0x320934[_0xcfcd('0x6')],'priority':_0x55cf04[_0xcfcd('0x34')]['length']+_0x2c2628+_0x18d151++,'VoiceExtensionId':_0x320934['id']});}else{if(_0x55cf04[_0xcfcd('0x1a')](_0xcfcd('0x3c'))){if([_0xcfcd('0x3d'),_0xcfcd('0x3e')][_0xcfcd('0x3f')](_0x55cf04[_0xcfcd('0x40')]['toLowerCase']())&&_0x55cf04[_0xcfcd('0x41')]!==_0xcfcd('0x42')){if(_0x55cf04[_0xcfcd('0x3c')]){_0xc3d19b[_0xcfcd('0xd')]({'type':_0x55cf04['type'][_0xcfcd('0x37')](),'app':_0xcfcd('0x17'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x320934[_0xcfcd('0xb')],'exten':_0x320934[_0xcfcd('0x6')],'priority':_0x55cf04['intervals']['length']+_0x2c2628+_0x18d151++,'VoiceExtensionId':_0x320934['id']});_0xc3d19b[_0xcfcd('0xd')]({'type':_0x55cf04[_0xcfcd('0x4')][_0xcfcd('0x37')](),'app':_0xcfcd('0xf'),'appdata':_0xcfcd('0x43'),'context':_0x320934[_0xcfcd('0xb')],'exten':_0x320934[_0xcfcd('0x6')],'priority':_0x55cf04[_0xcfcd('0x34')][_0xcfcd('0x32')]+_0x2c2628+_0x18d151++,'VoiceExtensionId':_0x320934['id']});}else{_0xc3d19b[_0xcfcd('0xd')]({'type':_0x55cf04['type'][_0xcfcd('0x37')](),'app':_0xcfcd('0x17'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x320934['context'],'exten':_0x320934[_0xcfcd('0x6')],'priority':_0x55cf04[_0xcfcd('0x34')][_0xcfcd('0x32')]+_0x2c2628+_0x18d151++,'VoiceExtensionId':_0x320934['id']});_0xc3d19b['push']({'type':_0x55cf04[_0xcfcd('0x4')][_0xcfcd('0x37')](),'app':_0xcfcd('0xf'),'appdata':_0xcfcd('0x44'),'context':_0x320934[_0xcfcd('0xb')],'exten':_0x320934[_0xcfcd('0x6')],'priority':_0x55cf04['intervals']['length']+_0x2c2628+_0x18d151++,'VoiceExtensionId':_0x320934['id']});}}}}for(var _0x4276ff=0x0;_0x4276ff<_0x55cf04[_0xcfcd('0x34')][_0xcfcd('0x32')];_0x4276ff++){var _0x3a1a9c=_0x2c2628+_0x55cf04['intervals'][_0xcfcd('0x32')];var _0x6223d6=_0x4276ff===_0x55cf04[_0xcfcd('0x34')]['length']-0x1?_0x2c2628+_0xc3d19b[_0xcfcd('0x32')]+_0x4d657a['length']+0x2:_0x2c2628+_0x4276ff+0x1;_0xc3d19b['splice'](_0x4276ff,0x0,{'type':_0x320934['type'],'app':'GotoIfTime','appdata':_0x55cf04[_0xcfcd('0x34')][_0x4276ff]+'?'+_0x320934[_0xcfcd('0xb')]+',${EXTEN},'+_0x3a1a9c+':'+_0x320934[_0xcfcd('0xb')]+_0xcfcd('0x45')+_0x6223d6,'exten':_0x320934[_0xcfcd('0x6')],'context':_0x320934[_0xcfcd('0xb')],'priority':_0x2c2628+_0x4276ff,'VoiceExtensionId':_0x320934['id']});}if(_0x14b028&&_0x55cf04['appType']==='outboundDial')_0x55cf04[_0xcfcd('0x46')]=_0xba8dd9(_0x55cf04[_0xcfcd('0x46')]);_0x55cf04[_0xcfcd('0x47')]=_0xc3d19b['length']?_[_0xcfcd('0x48')](_0xc3d19b)[_0xcfcd('0x47')]+0x1:_0x2c2628;_0x4bde15=_[_0xcfcd('0x49')](_0x4bde15,_0xc3d19b,[_0x55cf04],_0x4d657a);_0x2c2628=_[_0xcfcd('0x48')](_0x4bde15)[_0xcfcd('0x47')]+0x1;}return _0x2200d7(_0x4bde15);})['catch'](function(_0x5c5510){_0x3b336e(_0x5c5510);});});}return _0x8a8650[_0xcfcd('0x4a')](_0xcfcd('0x4b'),attributes,{'tableName':_0xcfcd('0x4c'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x67f4c3,_0x4c13de){var _0x1eae76=this;var _0x3b3e76=_0x1eae76['type']===_0xcfcd('0x13')?_0x2dafc6(_0x1eae76):_0x337550(_0x1eae76);return _0x2324c2(_0x1eae76,_0x67f4c3,_['last'](_0x3b3e76)['priority']+0x1,_0x4c13de)[_0xcfcd('0x31')](function(_0x5120ca){var _0x435ba9=_[_0xcfcd('0x49')](_0x3b3e76,_0x5120ca);_0x435ba9['push']({'type':_0x1eae76[_0xcfcd('0x4')],'app':_0xcfcd('0x4d'),'exten':_0x1eae76[_0xcfcd('0x6')],'context':_0x1eae76[_0xcfcd('0xb')],'priority':_[_0xcfcd('0x48')](_0x435ba9)['priority']+0x1,'VoiceExtensionId':_0x1eae76['id']});return _0x435ba9;});}}});};
\ No newline at end of file
index 55825ab..32c0d36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9efe=['stringify','error','code','message','result','catch','VoiceExtension','findAll','options','raw','where','attributes','limit','map','model','include','GetVoiceExtension','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','localhost','socket.io-emitter','redis','then','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x9d3940,_0x3e5bc5){var _0x9c7f8b=function(_0x36180f){while(--_0x36180f){_0x9d3940['push'](_0x9d3940['shift']());}};_0x9c7f8b(++_0x3e5bc5);}(_0x9efe,0xca));var _0xe9ef=function(_0x4abfcd,_0x346eb7){_0x4abfcd=_0x4abfcd-0x0;var _0xb01833=_0x9efe[_0x4abfcd];return _0xb01833;};'use strict';var _=require('lodash');var util=require(_0xe9ef('0x0'));var moment=require(_0xe9ef('0x1'));var BPromise=require(_0xe9ef('0x2'));var rs=require(_0xe9ef('0x3'));var fs=require('fs');var Redis=require(_0xe9ef('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xe9ef('0x5'));var logger=require(_0xe9ef('0x6'))(_0xe9ef('0x7'));var config=require(_0xe9ef('0x8'));var jayson=require(_0xe9ef('0x9'));var client=jayson[_0xe9ef('0xa')][_0xe9ef('0xb')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0xe9ef('0xc'),'port':0x18eb});var socket=require(_0xe9ef('0xd'))(new Redis(config[_0xe9ef('0xe')]));require('./voiceExtension.socket')['register'](socket);function respondWithRpcPromise(_0x55d349,_0x4f4122,_0x341d45){return new BPromise(function(_0xab041e,_0xda2b2){return client['request'](_0x55d349,_0x341d45)[_0xe9ef('0xf')](function(_0x354233){logger[_0xe9ef('0x10')](_0xe9ef('0x11'),_0x4f4122,_0xe9ef('0x12'));logger[_0xe9ef('0x13')]('VoiceExtension,\x20%s,\x20%s,\x20%s',_0x4f4122,_0xe9ef('0x12'),JSON[_0xe9ef('0x14')](_0x354233));if(_0x354233[_0xe9ef('0x15')]){if(_0x354233[_0xe9ef('0x15')][_0xe9ef('0x16')]===0x1f4){logger['error'](_0xe9ef('0x11'),_0x4f4122,_0x354233[_0xe9ef('0x15')][_0xe9ef('0x17')]);return _0xda2b2(_0x354233[_0xe9ef('0x15')][_0xe9ef('0x17')]);}logger['error']('VoiceExtension,\x20%s,\x20%s',_0x4f4122,_0x354233[_0xe9ef('0x15')]['message']);return _0xab041e(_0x354233[_0xe9ef('0x15')][_0xe9ef('0x17')]);}else{logger[_0xe9ef('0x10')]('VoiceExtension,\x20%s,\x20%s',_0x4f4122,_0xe9ef('0x12'));_0xab041e(_0x354233[_0xe9ef('0x18')][_0xe9ef('0x17')]);}})[_0xe9ef('0x19')](function(_0x517c7d){logger[_0xe9ef('0x15')]('VoiceExtension,\x20%s,\x20%s',_0x4f4122,_0x517c7d);_0xda2b2(_0x517c7d);});});}exports['GetVoiceExtension']=function(_0x17a46b){var _0x446728=this;return new Promise(function(_0x5dd1c1,_0x3d4780){return db[_0xe9ef('0x1a')][_0xe9ef('0x1b')]({'raw':_0x17a46b['options']?_0x17a46b[_0xe9ef('0x1c')][_0xe9ef('0x1d')]===undefined?!![]:![]:!![],'where':_0x17a46b[_0xe9ef('0x1c')]?_0x17a46b[_0xe9ef('0x1c')][_0xe9ef('0x1e')]||null:null,'attributes':_0x17a46b['options']?_0x17a46b[_0xe9ef('0x1c')][_0xe9ef('0x1f')]||null:null,'limit':_0x17a46b[_0xe9ef('0x1c')]?_0x17a46b[_0xe9ef('0x1c')][_0xe9ef('0x20')]||null:null,'include':_0x17a46b[_0xe9ef('0x1c')]?_0x17a46b[_0xe9ef('0x1c')]['include']?_[_0xe9ef('0x21')](_0x17a46b['options']['include'],function(_0x60890b){return{'model':db[_0x60890b[_0xe9ef('0x22')]],'as':_0x60890b['as'],'attributes':_0x60890b[_0xe9ef('0x1f')],'include':_0x60890b[_0xe9ef('0x23')]?_[_0xe9ef('0x21')](_0x60890b['include'],function(_0x5d90e0){return{'model':db[_0x5d90e0[_0xe9ef('0x22')]],'as':_0x5d90e0['as'],'attributes':_0x5d90e0[_0xe9ef('0x1f')],'include':_0x5d90e0[_0xe9ef('0x23')]?_[_0xe9ef('0x21')](_0x5d90e0[_0xe9ef('0x23')],function(_0x3866c){return{'model':db[_0x3866c[_0xe9ef('0x22')]],'as':_0x3866c['as'],'attributes':_0x3866c[_0xe9ef('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xe9ef('0xf')](function(_0x1e659f){logger[_0xe9ef('0x10')]('GetVoiceExtension',_0x17a46b);logger[_0xe9ef('0x13')](_0xe9ef('0x24'),_0x17a46b,JSON[_0xe9ef('0x14')](_0x1e659f));_0x5dd1c1(_0x1e659f);})[_0xe9ef('0x19')](function(_0x1a2d2e){logger[_0xe9ef('0x15')](_0xe9ef('0x24'),_0x1a2d2e[_0xe9ef('0x17')],_0x17a46b);_0x3d4780(_0x446728[_0xe9ef('0x15')](0x1f4,_0x1a2d2e[_0xe9ef('0x17')]));});});};
\ No newline at end of file
+var _0xaee6=['result','GetVoiceExtension','VoiceExtension','options','raw','where','attributes','include','model','map','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','./voiceExtension.socket','request','then','VoiceExtension,\x20%s,\x20%s','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info'];(function(_0x5d8631,_0x44944b){var _0x34c15e=function(_0x4448f8){while(--_0x4448f8){_0x5d8631['push'](_0x5d8631['shift']());}};_0x34c15e(++_0x44944b);}(_0xaee6,0x187));var _0x6aee=function(_0x15c32b,_0x3559dc){_0x15c32b=_0x15c32b-0x0;var _0x16bd65=_0xaee6[_0x15c32b];return _0x16bd65;};'use strict';var _=require(_0x6aee('0x0'));var util=require(_0x6aee('0x1'));var moment=require(_0x6aee('0x2'));var BPromise=require(_0x6aee('0x3'));var rs=require(_0x6aee('0x4'));var fs=require('fs');var Redis=require(_0x6aee('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x6aee('0x6'));var logger=require(_0x6aee('0x7'))(_0x6aee('0x8'));var config=require('../../config/environment');var jayson=require(_0x6aee('0x9'));var client=jayson[_0x6aee('0xa')][_0x6aee('0xb')]({'port':0x232a});config[_0x6aee('0xc')]=_[_0x6aee('0xd')](config[_0x6aee('0xc')],{'host':_0x6aee('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x6aee('0xf'))['register'](socket);function respondWithRpcPromise(_0x27a179,_0x2552ec,_0x1f81fa){return new BPromise(function(_0x57e596,_0xd99e94){return client[_0x6aee('0x10')](_0x27a179,_0x1f81fa)[_0x6aee('0x11')](function(_0x1092d9){logger['info'](_0x6aee('0x12'),_0x2552ec,'request\x20sent');logger[_0x6aee('0x13')](_0x6aee('0x14'),_0x2552ec,_0x6aee('0x15'),JSON[_0x6aee('0x16')](_0x1092d9));if(_0x1092d9[_0x6aee('0x17')]){if(_0x1092d9['error'][_0x6aee('0x18')]===0x1f4){logger[_0x6aee('0x17')]('VoiceExtension,\x20%s,\x20%s',_0x2552ec,_0x1092d9['error'][_0x6aee('0x19')]);return _0xd99e94(_0x1092d9[_0x6aee('0x17')][_0x6aee('0x19')]);}logger[_0x6aee('0x17')](_0x6aee('0x12'),_0x2552ec,_0x1092d9[_0x6aee('0x17')][_0x6aee('0x19')]);return _0x57e596(_0x1092d9[_0x6aee('0x17')]['message']);}else{logger[_0x6aee('0x1a')](_0x6aee('0x12'),_0x2552ec,'request\x20sent');_0x57e596(_0x1092d9[_0x6aee('0x1b')][_0x6aee('0x19')]);}})['catch'](function(_0x1848a9){logger[_0x6aee('0x17')](_0x6aee('0x12'),_0x2552ec,_0x1848a9);_0xd99e94(_0x1848a9);});});}exports[_0x6aee('0x1c')]=function(_0x340eae){var _0x26aab4=this;return new Promise(function(_0xf94d0d,_0x5969b2){return db[_0x6aee('0x1d')]['findAll']({'raw':_0x340eae['options']?_0x340eae[_0x6aee('0x1e')][_0x6aee('0x1f')]===undefined?!![]:![]:!![],'where':_0x340eae[_0x6aee('0x1e')]?_0x340eae[_0x6aee('0x1e')][_0x6aee('0x20')]||null:null,'attributes':_0x340eae[_0x6aee('0x1e')]?_0x340eae[_0x6aee('0x1e')][_0x6aee('0x21')]||null:null,'limit':_0x340eae['options']?_0x340eae[_0x6aee('0x1e')]['limit']||null:null,'include':_0x340eae['options']?_0x340eae[_0x6aee('0x1e')][_0x6aee('0x22')]?_['map'](_0x340eae[_0x6aee('0x1e')][_0x6aee('0x22')],function(_0x56716f){return{'model':db[_0x56716f[_0x6aee('0x23')]],'as':_0x56716f['as'],'attributes':_0x56716f[_0x6aee('0x21')],'include':_0x56716f[_0x6aee('0x22')]?_[_0x6aee('0x24')](_0x56716f[_0x6aee('0x22')],function(_0x321c55){return{'model':db[_0x321c55[_0x6aee('0x23')]],'as':_0x321c55['as'],'attributes':_0x321c55[_0x6aee('0x21')],'include':_0x321c55[_0x6aee('0x22')]?_[_0x6aee('0x24')](_0x321c55[_0x6aee('0x22')],function(_0x3376d1){return{'model':db[_0x3376d1[_0x6aee('0x23')]],'as':_0x3376d1['as'],'attributes':_0x3376d1[_0x6aee('0x21')]};}):[]};}):[]};}):[]:[]})[_0x6aee('0x11')](function(_0x2fc285){logger['info']('GetVoiceExtension',_0x340eae);logger[_0x6aee('0x13')](_0x6aee('0x1c'),_0x340eae,JSON[_0x6aee('0x16')](_0x2fc285));_0xf94d0d(_0x2fc285);})[_0x6aee('0x25')](function(_0x4a2c8f){logger[_0x6aee('0x17')]('GetVoiceExtension',_0x4a2c8f[_0x6aee('0x19')],_0x340eae);_0x5969b2(_0x26aab4[_0x6aee('0x17')](0x1f4,_0x4a2c8f[_0x6aee('0x19')]));});});};
\ No newline at end of file
index 46d154a..1f74669 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['./voiceExtension.events','save','update','emit','removeListener','register','voiceExtension:'];(function(_0x4fa438,_0x1f15a7){var _0x4e3958=function(_0x28f510){while(--_0x28f510){_0x4fa438['push'](_0x4fa438['shift']());}};_0x4e3958(++_0x1f15a7);}(_0x5fc3,0xa8));var _0x35fc=function(_0xbc4560,_0x4020b8){_0xbc4560=_0xbc4560-0x0;var _0x298cfb=_0x5fc3[_0xbc4560];return _0x298cfb;};'use strict';var VoiceExtensionEvents=require(_0x35fc('0x0'));var events=[_0x35fc('0x1'),'remove',_0x35fc('0x2')];function createListener(_0x2ac6da,_0x196bc2){return function(_0x91d024){_0x196bc2[_0x35fc('0x3')](_0x2ac6da,_0x91d024);};}function removeListener(_0x5e75e6,_0x2d1404){return function(){VoiceExtensionEvents[_0x35fc('0x4')](_0x5e75e6,_0x2d1404);};}exports[_0x35fc('0x5')]=function(_0x5b85ad){for(var _0x5754be=0x0,_0x19a0d1=events['length'];_0x5754be<_0x19a0d1;_0x5754be++){var _0x16e153=events[_0x5754be];var _0x27524f=createListener(_0x35fc('0x6')+_0x16e153,_0x5b85ad);VoiceExtensionEvents['on'](_0x16e153,_0x27524f);}};
\ No newline at end of file
+var _0x5fc3=['./voiceExtension.events','save','update','emit','removeListener','register','voiceExtension:'];(function(_0x2a93da,_0x273a4a){var _0x55240e=function(_0x57bc4f){while(--_0x57bc4f){_0x2a93da['push'](_0x2a93da['shift']());}};_0x55240e(++_0x273a4a);}(_0x5fc3,0xa8));var _0x35fc=function(_0x3e25c1,_0x1d15f9){_0x3e25c1=_0x3e25c1-0x0;var _0x52e7f2=_0x5fc3[_0x3e25c1];return _0x52e7f2;};'use strict';var VoiceExtensionEvents=require(_0x35fc('0x0'));var events=[_0x35fc('0x1'),'remove',_0x35fc('0x2')];function createListener(_0x2ac6da,_0x196bc2){return function(_0x91d024){_0x196bc2[_0x35fc('0x3')](_0x2ac6da,_0x91d024);};}function removeListener(_0x5e75e6,_0x2d1404){return function(){VoiceExtensionEvents[_0x35fc('0x4')](_0x5e75e6,_0x2d1404);};}exports[_0x35fc('0x5')]=function(_0x5b85ad){for(var _0x5754be=0x0,_0x19a0d1=events['length'];_0x5754be<_0x19a0d1;_0x5754be++){var _0x16e153=events[_0x5754be];var _0x27524f=createListener(_0x35fc('0x6')+_0x16e153,_0x5b85ad);VoiceExtensionEvents['on'](_0x16e153,_0x27524f);}};
\ No newline at end of file
index 42dc923..a5ecfce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb016=['get','isAuthenticated','index','show','getMessages','post','create','update','delete','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4a09a8,_0x4ed12d){var _0x7d30a9=function(_0x459184){while(--_0x459184){_0x4a09a8['push'](_0x4a09a8['shift']());}};_0x7d30a9(++_0x4ed12d);}(_0xb016,0x159));var _0x6b01=function(_0x4e732b,_0x599d12){_0x4e732b=_0x4e732b-0x0;var _0x1590b7=_0xb016[_0x4e732b];return _0x1590b7;};'use strict';var multer=require(_0x6b01('0x0'));var util=require(_0x6b01('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x6b01('0x2'));var router=express['Router']();var fs_extra=require(_0x6b01('0x3'));var auth=require(_0x6b01('0x4'));var interaction=require(_0x6b01('0x5'));var config=require(_0x6b01('0x6'));var controller=require('./voiceMail.controller');router[_0x6b01('0x7')]('/',auth[_0x6b01('0x8')](),controller[_0x6b01('0x9')]);router['get']('/:id',auth[_0x6b01('0x8')](),controller[_0x6b01('0xa')]);router['get']('/:id/messages',auth[_0x6b01('0x8')](),controller[_0x6b01('0xb')]);router[_0x6b01('0xc')]('/',auth[_0x6b01('0x8')](),controller[_0x6b01('0xd')]);router['put']('/:id',auth[_0x6b01('0x8')](),controller[_0x6b01('0xe')]);router[_0x6b01('0xf')]('/:id',auth[_0x6b01('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xe3da=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMail.controller','get','isAuthenticated','index','/:id','show','getMessages','post','create','put','update','destroy'];(function(_0x554129,_0x2c3d20){var _0x4de573=function(_0x4d1b9b){while(--_0x4d1b9b){_0x554129['push'](_0x554129['shift']());}};_0x4de573(++_0x2c3d20);}(_0xe3da,0x1cd));var _0xae3d=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xe3da[_0x40a045];return _0x1a687c;};'use strict';var multer=require(_0xae3d('0x0'));var util=require(_0xae3d('0x1'));var path=require(_0xae3d('0x2'));var timeout=require(_0xae3d('0x3'));var express=require(_0xae3d('0x4'));var router=express[_0xae3d('0x5')]();var fs_extra=require(_0xae3d('0x6'));var auth=require(_0xae3d('0x7'));var interaction=require(_0xae3d('0x8'));var config=require(_0xae3d('0x9'));var controller=require(_0xae3d('0xa'));router[_0xae3d('0xb')]('/',auth[_0xae3d('0xc')](),controller[_0xae3d('0xd')]);router[_0xae3d('0xb')](_0xae3d('0xe'),auth['isAuthenticated'](),controller[_0xae3d('0xf')]);router[_0xae3d('0xb')]('/:id/messages',auth['isAuthenticated'](),controller[_0xae3d('0x10')]);router[_0xae3d('0x11')]('/',auth[_0xae3d('0xc')](),controller[_0xae3d('0x12')]);router[_0xae3d('0x13')](_0xae3d('0xe'),auth['isAuthenticated'](),controller[_0xae3d('0x14')]);router['delete'](_0xae3d('0xe'),auth[_0xae3d('0xc')](),controller[_0xae3d('0x15')]);module[_0xae3d('0x16')]=router;
\ No newline at end of file
index 5636c7e..9b7c23d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd209=['fullname','\x20-\x20','mailbox','sequelize','exports','STRING','contest_mailbox','email','trim','central','ENUM','yes','TINYINT(4)','TIMESTAMP','INTEGER','VIRTUAL'];(function(_0x500fca,_0x37b213){var _0x2fe37b=function(_0x2c84bb){while(--_0x2c84bb){_0x500fca['push'](_0x500fca['shift']());}};_0x2fe37b(++_0x37b213);}(_0xd209,0x173));var _0x9d20=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xd209[_0x411add];return _0x238242;};'use strict';var Sequelize=require(_0x9d20('0x0'));module[_0x9d20('0x1')]={'customer_id':{'type':Sequelize[_0x9d20('0x2')]},'context':{'type':Sequelize[_0x9d20('0x2')],'defaultValue':'from-voicemail','unique':'contest_mailbox'},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'','allowNull':![],'unique':_0x9d20('0x3')},'password':{'type':Sequelize[_0x9d20('0x2')]},'fullname':{'type':Sequelize[_0x9d20('0x2')]},'email':{'type':Sequelize[_0x9d20('0x2')],'validate':{'isEmail':!![]},'set':function(_0x9f1ede){this['setDataValue'](_0x9d20('0x4'),typeof _0x9f1ede==='string'&&_0x9f1ede['trim']()?_0x9f1ede[_0x9d20('0x5')]():null);}},'pager':{'type':Sequelize['STRING']},'tz':{'type':Sequelize['STRING'],'defaultValue':_0x9d20('0x6')},'attach':{'type':Sequelize[_0x9d20('0x7')](_0x9d20('0x8'),'no'),'defaultValue':'yes','allowNull':![]},'saycid':{'type':Sequelize[_0x9d20('0x7')](_0x9d20('0x8'),'no'),'defaultValue':'yes','allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize[_0x9d20('0x2')]},'review':{'type':Sequelize['ENUM'](_0x9d20('0x8'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x9d20('0x7')]('yes','no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize['ENUM'](_0x9d20('0x8'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x9d20('0x7')](_0x9d20('0x8'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x9d20('0x9'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize['ENUM'](_0x9d20('0x8'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x9d20('0x7')](_0x9d20('0x8'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x9d20('0x7')](_0x9d20('0x8'),'no'),'defaultValue':'yes','allowNull':![]},'forcename':{'type':Sequelize[_0x9d20('0x7')](_0x9d20('0x8'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM'](_0x9d20('0x8'),'no'),'defaultValue':'yes','allowNull':![]},'stamp':{'type':_0x9d20('0xa')},'emailsubject':{'type':Sequelize[_0x9d20('0x2')]},'emailbody':{'type':Sequelize[_0x9d20('0x2')]},'maxsecs':{'type':Sequelize[_0x9d20('0xb')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x9d20('0xb')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x9d20('0xc')],'get':function(){return this['getDataValue'](_0x9d20('0xd'))+_0x9d20('0xe')+this['getDataValue'](_0x9d20('0xf'));}}};
\ No newline at end of file
+var _0x8cdc=['INTEGER','getDataValue','\x20-\x20','mailbox','sequelize','STRING','contest_mailbox','string','trim','yes','ENUM','TINYINT(4)','TIMESTAMP'];(function(_0x3ca064,_0x505cfe){var _0x404382=function(_0x1223e2){while(--_0x1223e2){_0x3ca064['push'](_0x3ca064['shift']());}};_0x404382(++_0x505cfe);}(_0x8cdc,0x93));var _0xc8cd=function(_0x32f12e,_0x2439a8){_0x32f12e=_0x32f12e-0x0;var _0x517bac=_0x8cdc[_0x32f12e];return _0x517bac;};'use strict';var Sequelize=require(_0xc8cd('0x0'));module['exports']={'customer_id':{'type':Sequelize[_0xc8cd('0x1')]},'context':{'type':Sequelize[_0xc8cd('0x1')],'defaultValue':'from-voicemail','unique':_0xc8cd('0x2')},'mailbox':{'type':Sequelize[_0xc8cd('0x1')],'defaultValue':'','allowNull':![],'unique':_0xc8cd('0x2')},'password':{'type':Sequelize[_0xc8cd('0x1')]},'fullname':{'type':Sequelize[_0xc8cd('0x1')]},'email':{'type':Sequelize[_0xc8cd('0x1')],'validate':{'isEmail':!![]},'set':function(_0x3ff6ed){this['setDataValue']('email',typeof _0x3ff6ed===_0xc8cd('0x3')&&_0x3ff6ed[_0xc8cd('0x4')]()?_0x3ff6ed[_0xc8cd('0x4')]():null);}},'pager':{'type':Sequelize[_0xc8cd('0x1')]},'tz':{'type':Sequelize[_0xc8cd('0x1')],'defaultValue':'central'},'attach':{'type':Sequelize['ENUM'](_0xc8cd('0x5'),'no'),'defaultValue':_0xc8cd('0x5'),'allowNull':![]},'saycid':{'type':Sequelize[_0xc8cd('0x6')](_0xc8cd('0x5'),'no'),'defaultValue':'yes','allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize['STRING']},'review':{'type':Sequelize[_0xc8cd('0x6')]('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0xc8cd('0x6')](_0xc8cd('0x5'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0xc8cd('0x6')](_0xc8cd('0x5'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0xc8cd('0x6')]('yes','no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0xc8cd('0x7'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize['ENUM'](_0xc8cd('0x5'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize['ENUM'](_0xc8cd('0x5'),'no'),'defaultValue':_0xc8cd('0x5'),'allowNull':![]},'forcename':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0xc8cd('0x6')](_0xc8cd('0x5'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM'](_0xc8cd('0x5'),'no'),'defaultValue':_0xc8cd('0x5'),'allowNull':![]},'stamp':{'type':_0xc8cd('0x8')},'emailsubject':{'type':Sequelize[_0xc8cd('0x1')]},'emailbody':{'type':Sequelize[_0xc8cd('0x1')]},'maxsecs':{'type':Sequelize[_0xc8cd('0x9')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0xc8cd('0x9')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xc8cd('0xa')]('fullname')+_0xc8cd('0xb')+this[_0xc8cd('0xa')](_0xc8cd('0xc'));}}};
\ No newline at end of file
index ab210aa..98adbd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeffd=['create','body','user','get','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getMessages','findOne','VoiceMailMessage','nolimit','order','pick','mailbox','findAndCountAll','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','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','offset','undefined','limit','set','Content-Range','json','reject','update','then','destroy','Voicemails','UserProfileResource','error','stack','name','send','index','map','VoiceMail','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','filter','type','merge','count','includeAll','include','findAll','catch','show','params','rawAttributes','options','find'];(function(_0x1d6edb,_0x210ea3){var _0x5f1be8=function(_0x53bfac){while(--_0x53bfac){_0x1d6edb['push'](_0x1d6edb['shift']());}};_0x5f1be8(++_0x210ea3);}(_0xeffd,0x6b));var _0xdeff=function(_0x2ec509,_0x11ee6a){_0x2ec509=_0x2ec509-0x0;var _0x4349bc=_0xeffd[_0x2ec509];return _0x4349bc;};'use strict';var emlformat=require(_0xdeff('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdeff('0x1'));var jsonpatch=require(_0xdeff('0x2'));var rp=require(_0xdeff('0x3'));var moment=require(_0xdeff('0x4'));var BPromise=require(_0xdeff('0x5'));var Mustache=require(_0xdeff('0x6'));var util=require(_0xdeff('0x7'));var path=require(_0xdeff('0x8'));var sox=require(_0xdeff('0x9'));var csv=require(_0xdeff('0xa'));var ejs=require(_0xdeff('0xb'));var fs=require('fs');var fs_extra=require(_0xdeff('0xc'));var _=require(_0xdeff('0xd'));var squel=require(_0xdeff('0xe'));var crypto=require(_0xdeff('0xf'));var jsforce=require(_0xdeff('0x10'));var deskjs=require(_0xdeff('0x11'));var toCsv=require('to-csv');var querystring=require(_0xdeff('0x12'));var Papa=require(_0xdeff('0x13'));var Redis=require(_0xdeff('0x14'));var authService=require('../../components/auth/service');var qs=require(_0xdeff('0x15'));var as=require(_0xdeff('0x16'));var hardwareService=require(_0xdeff('0x17'));var logger=require(_0xdeff('0x18'))(_0xdeff('0x19'));var utils=require(_0xdeff('0x1a'));var config=require(_0xdeff('0x1b'));var licenseUtil=require(_0xdeff('0x1c'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x461699,_0x116bf9){_0x116bf9=_0x116bf9||0xcc;return function(_0x4952f2){if(_0x4952f2){return _0x461699[_0xdeff('0x1d')](_0x116bf9);}return _0x461699['status'](_0x116bf9)['end']();};}function respondWithResult(_0x3e56a1,_0x47410f){_0x47410f=_0x47410f||0xc8;return function(_0x1585e8){if(_0x1585e8){return _0x3e56a1[_0xdeff('0x1e')](_0x47410f)['json'](_0x1585e8);}};}function respondWithFilteredResult(_0x826132,_0x314ded){return function(_0xea6c4){if(_0xea6c4){var _0x391633=typeof _0x314ded[_0xdeff('0x1f')]===_0xdeff('0x20')&&typeof _0x314ded['limit']==='undefined';var _0x7440af=_0xea6c4['count'];var _0x5c9837=_0x391633?0x0:_0x314ded[_0xdeff('0x1f')];var _0x369e13=_0x391633?_0xea6c4['count']:_0x314ded[_0xdeff('0x1f')]+_0x314ded[_0xdeff('0x21')];var _0x1ab1fa;if(_0x369e13>=_0x7440af){_0x369e13=_0x7440af;_0x1ab1fa=0xc8;}else{_0x1ab1fa=0xce;}_0x826132[_0xdeff('0x1e')](_0x1ab1fa);return _0x826132[_0xdeff('0x22')](_0xdeff('0x23'),_0x5c9837+'-'+_0x369e13+'/'+_0x7440af)[_0xdeff('0x24')](_0xea6c4);}return null;};}function patchUpdates(_0x919c93){return function(_0x488faa){try{jsonpatch['apply'](_0x488faa,_0x919c93,!![]);}catch(_0x56cb84){return BPromise[_0xdeff('0x25')](_0x56cb84);}return _0x488faa['save']();};}function saveUpdates(_0x189627,_0x91c0b4){return function(_0x543653){if(_0x543653){return _0x543653[_0xdeff('0x26')](_0x189627)[_0xdeff('0x27')](function(_0x4eb2a8){return _0x4eb2a8;});}return null;};}function removeEntity(_0x5dbe96,_0x3b2554){return function(_0x15c425){if(_0x15c425){return _0x15c425[_0xdeff('0x28')]()[_0xdeff('0x27')](function(){var _0x32add9=_0x15c425['get']({'plain':!![]});var _0xb08f19=_0xdeff('0x29');return db[_0xdeff('0x2a')][_0xdeff('0x28')]({'where':{'type':_0xb08f19,'resourceId':_0x32add9['id']}})[_0xdeff('0x27')](function(){return _0x15c425;});})[_0xdeff('0x27')](function(){_0x5dbe96[_0xdeff('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x31bb72,_0x1a546c){return function(_0x53b168){if(!_0x53b168){_0x31bb72['sendStatus'](0x194);}return _0x53b168;};}function handleError(_0x830be4,_0x2ea8e9){_0x2ea8e9=_0x2ea8e9||0x1f4;return function(_0x16b2d0){logger[_0xdeff('0x2b')](_0x16b2d0[_0xdeff('0x2c')]);if(_0x16b2d0[_0xdeff('0x2d')]){delete _0x16b2d0[_0xdeff('0x2d')];}_0x830be4['status'](_0x2ea8e9)[_0xdeff('0x2e')](_0x16b2d0);};}exports[_0xdeff('0x2f')]=function(_0x34e258,_0x5045b8){var _0x59f7a0={},_0x346743={},_0x505e3f={'count':0x0,'rows':[]};var _0x69842a=_[_0xdeff('0x30')](db[_0xdeff('0x31')]['rawAttributes'],function(_0x189a51){return{'name':_0x189a51['fieldName'],'type':_0x189a51['type'][_0xdeff('0x32')]};});_0x346743[_0xdeff('0x33')]=_[_0xdeff('0x30')](_0x69842a,_0xdeff('0x2d'));_0x346743['query']=_[_0xdeff('0x34')](_0x34e258[_0xdeff('0x35')]);_0x346743[_0xdeff('0x36')]=_[_0xdeff('0x37')](_0x346743[_0xdeff('0x33')],_0x346743[_0xdeff('0x35')]);_0x59f7a0[_0xdeff('0x38')]=_['intersection'](_0x346743[_0xdeff('0x33')],qs['fields'](_0x34e258[_0xdeff('0x35')][_0xdeff('0x39')]));_0x59f7a0[_0xdeff('0x38')]=_0x59f7a0[_0xdeff('0x38')][_0xdeff('0x3a')]?_0x59f7a0[_0xdeff('0x38')]:_0x346743['model'];if(!_0x34e258[_0xdeff('0x35')][_0xdeff('0x3b')]('nolimit')){_0x59f7a0[_0xdeff('0x21')]=qs[_0xdeff('0x21')](_0x34e258[_0xdeff('0x35')][_0xdeff('0x21')]);_0x59f7a0[_0xdeff('0x1f')]=qs[_0xdeff('0x1f')](_0x34e258[_0xdeff('0x35')][_0xdeff('0x1f')]);}_0x59f7a0['order']=qs[_0xdeff('0x3c')](_0x34e258['query'][_0xdeff('0x3c')]);_0x59f7a0[_0xdeff('0x3d')]=qs[_0xdeff('0x36')](_['pick'](_0x34e258[_0xdeff('0x35')],_0x346743[_0xdeff('0x36')]),_0x69842a);if(_0x34e258[_0xdeff('0x35')][_0xdeff('0x3e')]){_0x59f7a0[_0xdeff('0x3d')]=_['merge'](_0x59f7a0[_0xdeff('0x3d')],{'$or':_['map'](_0x69842a,function(_0x393d75){if(_0x393d75[_0xdeff('0x3f')]!=='VIRTUAL'){var _0x30609b={};_0x30609b[_0x393d75[_0xdeff('0x2d')]]={'$like':'%'+_0x34e258[_0xdeff('0x35')][_0xdeff('0x3e')]+'%'};return _0x30609b;}})});}_0x59f7a0=_[_0xdeff('0x40')]({},_0x59f7a0,_0x34e258['options']);var _0x3d8a33={'where':_0x59f7a0[_0xdeff('0x3d')]};return db[_0xdeff('0x31')][_0xdeff('0x41')](_0x3d8a33)[_0xdeff('0x27')](function(_0x5dfbb3){_0x505e3f['count']=_0x5dfbb3;if(_0x34e258[_0xdeff('0x35')][_0xdeff('0x42')]){_0x59f7a0[_0xdeff('0x43')]=[{'all':!![]}];}return db[_0xdeff('0x31')][_0xdeff('0x44')](_0x59f7a0);})[_0xdeff('0x27')](function(_0x2cd68a){_0x505e3f['rows']=_0x2cd68a;return _0x505e3f;})[_0xdeff('0x27')](respondWithFilteredResult(_0x5045b8,_0x59f7a0))[_0xdeff('0x45')](handleError(_0x5045b8,null));};exports[_0xdeff('0x46')]=function(_0x54fa5b,_0x1c3532){var _0x2c5eee={'raw':!![],'where':{'id':_0x54fa5b[_0xdeff('0x47')]['id']}},_0x14dc7b={};_0x14dc7b['model']=_[_0xdeff('0x34')](db[_0xdeff('0x31')][_0xdeff('0x48')]);_0x14dc7b[_0xdeff('0x35')]=_[_0xdeff('0x34')](_0x54fa5b[_0xdeff('0x35')]);_0x14dc7b[_0xdeff('0x36')]=_[_0xdeff('0x37')](_0x14dc7b['model'],_0x14dc7b[_0xdeff('0x35')]);_0x2c5eee[_0xdeff('0x38')]=_[_0xdeff('0x37')](_0x14dc7b[_0xdeff('0x33')],qs[_0xdeff('0x39')](_0x54fa5b['query'][_0xdeff('0x39')]));_0x2c5eee[_0xdeff('0x38')]=_0x2c5eee[_0xdeff('0x38')][_0xdeff('0x3a')]?_0x2c5eee[_0xdeff('0x38')]:_0x14dc7b['model'];if(_0x54fa5b[_0xdeff('0x35')]['includeAll']){_0x2c5eee[_0xdeff('0x43')]=[{'all':!![]}];}_0x2c5eee=_[_0xdeff('0x40')]({},_0x2c5eee,_0x54fa5b[_0xdeff('0x49')]);return db[_0xdeff('0x31')][_0xdeff('0x4a')](_0x2c5eee)[_0xdeff('0x27')](handleEntityNotFound(_0x1c3532,null))['then'](respondWithResult(_0x1c3532,null))['catch'](handleError(_0x1c3532,null));};exports[_0xdeff('0x4b')]=function(_0xf91a72,_0x3dc206){return db['VoiceMail']['create'](_0xf91a72[_0xdeff('0x4c')],{})[_0xdeff('0x27')](function(_0x497d9f){var _0x23f17d=_0xf91a72[_0xdeff('0x4d')][_0xdeff('0x4e')]({'plain':!![]});if(!_0x23f17d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x23f17d[_0xdeff('0x4f')]===_0xdeff('0x4d')){var _0x1ca376=_0x497d9f['get']({'plain':!![]});var _0xce8379=_0xdeff('0x29');return db[_0xdeff('0x50')][_0xdeff('0x4a')]({'where':{'name':_0xce8379,'userProfileId':_0x23f17d[_0xdeff('0x51')]},'raw':!![]})[_0xdeff('0x27')](function(_0x2c7fa4){if(_0x2c7fa4&&_0x2c7fa4['autoAssociation']===0x0){return db[_0xdeff('0x2a')][_0xdeff('0x4b')]({'name':_0x1ca376['name'],'resourceId':_0x1ca376['id'],'type':_0x2c7fa4[_0xdeff('0x2d')],'sectionId':_0x2c7fa4['id']},{})[_0xdeff('0x27')](function(){return _0x497d9f;});}else{return _0x497d9f;}})[_0xdeff('0x45')](function(_0x33482b){logger[_0xdeff('0x2b')](_0xdeff('0x52'),_0x33482b);throw _0x33482b;});}return _0x497d9f;})[_0xdeff('0x27')](respondWithResult(_0x3dc206,0xc9))[_0xdeff('0x45')](handleError(_0x3dc206,null));};exports['update']=function(_0x1b7eb3,_0x3a518d){if(_0x1b7eb3[_0xdeff('0x4c')]['id']){delete _0x1b7eb3['body']['id'];}return db['VoiceMail'][_0xdeff('0x4a')]({'where':{'id':_0x1b7eb3[_0xdeff('0x47')]['id']}})[_0xdeff('0x27')](handleEntityNotFound(_0x3a518d,null))[_0xdeff('0x27')](saveUpdates(_0x1b7eb3[_0xdeff('0x4c')],null))[_0xdeff('0x27')](respondWithResult(_0x3a518d,null))['catch'](handleError(_0x3a518d,null));};exports['destroy']=function(_0x38338b,_0x1cc2c1){return db['VoiceMail']['find']({'where':{'id':_0x38338b[_0xdeff('0x47')]['id']}})[_0xdeff('0x27')](handleEntityNotFound(_0x1cc2c1,null))['then'](removeEntity(_0x1cc2c1,null))[_0xdeff('0x45')](handleError(_0x1cc2c1,null));};exports[_0xdeff('0x53')]=function(_0x577fa8,_0x14fa7f,_0xe731d8){return db['VoiceMail'][_0xdeff('0x54')]({'where':{'id':_0x577fa8[_0xdeff('0x47')]['id']}})['then'](handleEntityNotFound(_0x14fa7f,null))[_0xdeff('0x27')](function(_0x152187){var _0x2a83ac;var _0x592ea6={},_0x47e86d={};_0x47e86d[_0xdeff('0x33')]=_['keys'](db[_0xdeff('0x55')][_0xdeff('0x48')]);_0x47e86d[_0xdeff('0x35')]=_[_0xdeff('0x34')](_0x577fa8[_0xdeff('0x35')]);_0x47e86d['filters']=_['intersection'](_0x47e86d[_0xdeff('0x33')],_0x47e86d[_0xdeff('0x35')]);_0x592ea6[_0xdeff('0x38')]=_[_0xdeff('0x37')](_0x47e86d[_0xdeff('0x33')],qs[_0xdeff('0x39')](_0x577fa8['query'][_0xdeff('0x39')]));_0x592ea6['attributes']=_0x592ea6[_0xdeff('0x38')][_0xdeff('0x3a')]?_0x592ea6[_0xdeff('0x38')]:_0x47e86d[_0xdeff('0x33')];if(!_0x577fa8[_0xdeff('0x35')][_0xdeff('0x3b')](_0xdeff('0x56'))){_0x592ea6[_0xdeff('0x21')]=qs[_0xdeff('0x21')](_0x577fa8['query'][_0xdeff('0x21')]);_0x592ea6['offset']=qs[_0xdeff('0x1f')](_0x577fa8[_0xdeff('0x35')]['offset']);}_0x592ea6[_0xdeff('0x57')]=qs['sort'](_0x577fa8[_0xdeff('0x35')]['sort']);_0x592ea6['where']=qs[_0xdeff('0x36')](_[_0xdeff('0x58')](_0x577fa8['query'],_0x47e86d[_0xdeff('0x36')]));if(_0x577fa8[_0xdeff('0x35')][_0xdeff('0x3e')]){_0x592ea6[_0xdeff('0x3d')]=_[_0xdeff('0x40')](_0x592ea6[_0xdeff('0x3d')],{'$or':_[_0xdeff('0x30')](_0x592ea6[_0xdeff('0x38')],function(_0x46046a){var _0x517ca7={};_0x517ca7[_0x46046a]={'$like':'%'+_0x577fa8[_0xdeff('0x35')][_0xdeff('0x3e')]+'%'};return _0x517ca7;})});}_0x592ea6['where']=_['merge'](_0x592ea6[_0xdeff('0x3d')],{'mailboxuser':_0x152187[_0xdeff('0x59')]});_0x592ea6=_['merge']({},_0x592ea6,_0x577fa8[_0xdeff('0x49')]);return db[_0xdeff('0x55')][_0xdeff('0x5a')](_0x592ea6)[_0xdeff('0x27')](respondWithFilteredResult(_0x14fa7f,_0x592ea6));})[_0xdeff('0x45')](handleError(_0x14fa7f,null));};
\ No newline at end of file
+var _0x4ded=['findAll','rows','catch','show','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','getMessages','findOne','VoiceMailMessage','order','sort','findAndCountAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','Content-Range','reject','save','update','then','destroy','get','Voicemails','UserProfileResource','error','name','index','map','VoiceMail','rawAttributes','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','where','pick','VIRTUAL','filter','merge','options','includeAll','include'];(function(_0x3d0035,_0x4cd00a){var _0x188361=function(_0x59891b){while(--_0x59891b){_0x3d0035['push'](_0x3d0035['shift']());}};_0x188361(++_0x4cd00a);}(_0x4ded,0x116));var _0xd4de=function(_0x9719d9,_0x46dfab){_0x9719d9=_0x9719d9-0x0;var _0x21dff4=_0x4ded[_0x9719d9];return _0x21dff4;};'use strict';var emlformat=require(_0xd4de('0x0'));var rimraf=require(_0xd4de('0x1'));var zipdir=require(_0xd4de('0x2'));var jsonpatch=require(_0xd4de('0x3'));var rp=require(_0xd4de('0x4'));var moment=require(_0xd4de('0x5'));var BPromise=require(_0xd4de('0x6'));var Mustache=require(_0xd4de('0x7'));var util=require(_0xd4de('0x8'));var path=require(_0xd4de('0x9'));var sox=require(_0xd4de('0xa'));var csv=require(_0xd4de('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd4de('0xc'));var _=require(_0xd4de('0xd'));var squel=require(_0xd4de('0xe'));var crypto=require(_0xd4de('0xf'));var jsforce=require(_0xd4de('0x10'));var deskjs=require(_0xd4de('0x11'));var toCsv=require('to-csv');var querystring=require(_0xd4de('0x12'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xd4de('0x13'));var as=require(_0xd4de('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xd4de('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xd4de('0x16'));var db=require(_0xd4de('0x17'))['db'];function respondWithStatusCode(_0x104dad,_0x2aa09d){_0x2aa09d=_0x2aa09d||0xcc;return function(_0x3ffc72){if(_0x3ffc72){return _0x104dad[_0xd4de('0x18')](_0x2aa09d);}return _0x104dad[_0xd4de('0x19')](_0x2aa09d)[_0xd4de('0x1a')]();};}function respondWithResult(_0x3e3735,_0x37cb9f){_0x37cb9f=_0x37cb9f||0xc8;return function(_0x691ba9){if(_0x691ba9){return _0x3e3735[_0xd4de('0x19')](_0x37cb9f)[_0xd4de('0x1b')](_0x691ba9);}};}function respondWithFilteredResult(_0xbb4f7e,_0x102e5b){return function(_0xa7c18b){if(_0xa7c18b){var _0x325fba=typeof _0x102e5b['offset']==='undefined'&&typeof _0x102e5b[_0xd4de('0x1c')]===_0xd4de('0x1d');var _0x17b377=_0xa7c18b[_0xd4de('0x1e')];var _0x5b1d1c=_0x325fba?0x0:_0x102e5b['offset'];var _0x1e91d5=_0x325fba?_0xa7c18b['count']:_0x102e5b[_0xd4de('0x1f')]+_0x102e5b[_0xd4de('0x1c')];var _0x50b9e3;if(_0x1e91d5>=_0x17b377){_0x1e91d5=_0x17b377;_0x50b9e3=0xc8;}else{_0x50b9e3=0xce;}_0xbb4f7e[_0xd4de('0x19')](_0x50b9e3);return _0xbb4f7e['set'](_0xd4de('0x20'),_0x5b1d1c+'-'+_0x1e91d5+'/'+_0x17b377)[_0xd4de('0x1b')](_0xa7c18b);}return null;};}function patchUpdates(_0x2bad14){return function(_0x8e8712){try{jsonpatch['apply'](_0x8e8712,_0x2bad14,!![]);}catch(_0x318658){return BPromise[_0xd4de('0x21')](_0x318658);}return _0x8e8712[_0xd4de('0x22')]();};}function saveUpdates(_0xdb3fc,_0x1c631a){return function(_0x2d092a){if(_0x2d092a){return _0x2d092a[_0xd4de('0x23')](_0xdb3fc)[_0xd4de('0x24')](function(_0x2f9de6){return _0x2f9de6;});}return null;};}function removeEntity(_0x413f68,_0x534b37){return function(_0xad333f){if(_0xad333f){return _0xad333f[_0xd4de('0x25')]()[_0xd4de('0x24')](function(){var _0x22970c=_0xad333f[_0xd4de('0x26')]({'plain':!![]});var _0x984904=_0xd4de('0x27');return db[_0xd4de('0x28')][_0xd4de('0x25')]({'where':{'type':_0x984904,'resourceId':_0x22970c['id']}})[_0xd4de('0x24')](function(){return _0xad333f;});})[_0xd4de('0x24')](function(){_0x413f68[_0xd4de('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe64e4e,_0x35e2fc){return function(_0x5005b0){if(!_0x5005b0){_0xe64e4e[_0xd4de('0x18')](0x194);}return _0x5005b0;};}function handleError(_0x59b3c5,_0x44b710){_0x44b710=_0x44b710||0x1f4;return function(_0x32e407){logger[_0xd4de('0x29')](_0x32e407['stack']);if(_0x32e407[_0xd4de('0x2a')]){delete _0x32e407[_0xd4de('0x2a')];}_0x59b3c5[_0xd4de('0x19')](_0x44b710)['send'](_0x32e407);};}exports[_0xd4de('0x2b')]=function(_0x1804c7,_0x55f9f9){var _0x5103b5={},_0x5706fe={},_0x3f6491={'count':0x0,'rows':[]};var _0x496795=_[_0xd4de('0x2c')](db[_0xd4de('0x2d')][_0xd4de('0x2e')],function(_0x2e08eb){return{'name':_0x2e08eb['fieldName'],'type':_0x2e08eb[_0xd4de('0x2f')][_0xd4de('0x30')]};});_0x5706fe['model']=_[_0xd4de('0x2c')](_0x496795,_0xd4de('0x2a'));_0x5706fe['query']=_['keys'](_0x1804c7[_0xd4de('0x31')]);_0x5706fe[_0xd4de('0x32')]=_[_0xd4de('0x33')](_0x5706fe[_0xd4de('0x34')],_0x5706fe['query']);_0x5103b5[_0xd4de('0x35')]=_[_0xd4de('0x33')](_0x5706fe['model'],qs[_0xd4de('0x36')](_0x1804c7[_0xd4de('0x31')][_0xd4de('0x36')]));_0x5103b5[_0xd4de('0x35')]=_0x5103b5[_0xd4de('0x35')][_0xd4de('0x37')]?_0x5103b5['attributes']:_0x5706fe['model'];if(!_0x1804c7[_0xd4de('0x31')][_0xd4de('0x38')](_0xd4de('0x39'))){_0x5103b5['limit']=qs[_0xd4de('0x1c')](_0x1804c7[_0xd4de('0x31')]['limit']);_0x5103b5[_0xd4de('0x1f')]=qs[_0xd4de('0x1f')](_0x1804c7[_0xd4de('0x31')][_0xd4de('0x1f')]);}_0x5103b5['order']=qs['sort'](_0x1804c7[_0xd4de('0x31')]['sort']);_0x5103b5[_0xd4de('0x3a')]=qs['filters'](_[_0xd4de('0x3b')](_0x1804c7[_0xd4de('0x31')],_0x5706fe[_0xd4de('0x32')]),_0x496795);if(_0x1804c7[_0xd4de('0x31')]['filter']){_0x5103b5[_0xd4de('0x3a')]=_['merge'](_0x5103b5[_0xd4de('0x3a')],{'$or':_[_0xd4de('0x2c')](_0x496795,function(_0x7f17b9){if(_0x7f17b9[_0xd4de('0x2f')]!==_0xd4de('0x3c')){var _0x13c256={};_0x13c256[_0x7f17b9[_0xd4de('0x2a')]]={'$like':'%'+_0x1804c7['query'][_0xd4de('0x3d')]+'%'};return _0x13c256;}})});}_0x5103b5=_[_0xd4de('0x3e')]({},_0x5103b5,_0x1804c7[_0xd4de('0x3f')]);var _0x2ec1fa={'where':_0x5103b5[_0xd4de('0x3a')]};return db['VoiceMail'][_0xd4de('0x1e')](_0x2ec1fa)[_0xd4de('0x24')](function(_0x2294e2){_0x3f6491['count']=_0x2294e2;if(_0x1804c7[_0xd4de('0x31')][_0xd4de('0x40')]){_0x5103b5[_0xd4de('0x41')]=[{'all':!![]}];}return db['VoiceMail'][_0xd4de('0x42')](_0x5103b5);})[_0xd4de('0x24')](function(_0x419c49){_0x3f6491[_0xd4de('0x43')]=_0x419c49;return _0x3f6491;})[_0xd4de('0x24')](respondWithFilteredResult(_0x55f9f9,_0x5103b5))[_0xd4de('0x44')](handleError(_0x55f9f9,null));};exports[_0xd4de('0x45')]=function(_0x5ecbbd,_0x43b542){var _0x164bde={'raw':!![],'where':{'id':_0x5ecbbd['params']['id']}},_0x58082a={};_0x58082a[_0xd4de('0x34')]=_[_0xd4de('0x46')](db[_0xd4de('0x2d')]['rawAttributes']);_0x58082a['query']=_[_0xd4de('0x46')](_0x5ecbbd[_0xd4de('0x31')]);_0x58082a['filters']=_[_0xd4de('0x33')](_0x58082a[_0xd4de('0x34')],_0x58082a[_0xd4de('0x31')]);_0x164bde[_0xd4de('0x35')]=_['intersection'](_0x58082a[_0xd4de('0x34')],qs[_0xd4de('0x36')](_0x5ecbbd[_0xd4de('0x31')][_0xd4de('0x36')]));_0x164bde[_0xd4de('0x35')]=_0x164bde[_0xd4de('0x35')]['length']?_0x164bde[_0xd4de('0x35')]:_0x58082a[_0xd4de('0x34')];if(_0x5ecbbd[_0xd4de('0x31')][_0xd4de('0x40')]){_0x164bde[_0xd4de('0x41')]=[{'all':!![]}];}_0x164bde=_[_0xd4de('0x3e')]({},_0x164bde,_0x5ecbbd[_0xd4de('0x3f')]);return db[_0xd4de('0x2d')][_0xd4de('0x47')](_0x164bde)[_0xd4de('0x24')](handleEntityNotFound(_0x43b542,null))['then'](respondWithResult(_0x43b542,null))[_0xd4de('0x44')](handleError(_0x43b542,null));};exports[_0xd4de('0x48')]=function(_0x178daf,_0x518bfe){return db[_0xd4de('0x2d')][_0xd4de('0x48')](_0x178daf[_0xd4de('0x49')],{})[_0xd4de('0x24')](function(_0x42e58e){var _0xa24bb7=_0x178daf[_0xd4de('0x4a')][_0xd4de('0x26')]({'plain':!![]});if(!_0xa24bb7)throw new Error(_0xd4de('0x4b'));if(_0xa24bb7[_0xd4de('0x4c')]==='user'){var _0x3e4c7f=_0x42e58e[_0xd4de('0x26')]({'plain':!![]});var _0x215f85=_0xd4de('0x27');return db[_0xd4de('0x4d')]['find']({'where':{'name':_0x215f85,'userProfileId':_0xa24bb7['userProfileId']},'raw':!![]})[_0xd4de('0x24')](function(_0x2deedb){if(_0x2deedb&&_0x2deedb['autoAssociation']===0x0){return db['UserProfileResource'][_0xd4de('0x48')]({'name':_0x3e4c7f[_0xd4de('0x2a')],'resourceId':_0x3e4c7f['id'],'type':_0x2deedb[_0xd4de('0x2a')],'sectionId':_0x2deedb['id']},{})[_0xd4de('0x24')](function(){return _0x42e58e;});}else{return _0x42e58e;}})[_0xd4de('0x44')](function(_0x15c8cd){logger[_0xd4de('0x29')](_0xd4de('0x4e'),_0x15c8cd);throw _0x15c8cd;});}return _0x42e58e;})[_0xd4de('0x24')](respondWithResult(_0x518bfe,0xc9))[_0xd4de('0x44')](handleError(_0x518bfe,null));};exports[_0xd4de('0x23')]=function(_0x2e1780,_0x56c13e){if(_0x2e1780[_0xd4de('0x49')]['id']){delete _0x2e1780[_0xd4de('0x49')]['id'];}return db[_0xd4de('0x2d')][_0xd4de('0x47')]({'where':{'id':_0x2e1780[_0xd4de('0x4f')]['id']}})[_0xd4de('0x24')](handleEntityNotFound(_0x56c13e,null))['then'](saveUpdates(_0x2e1780[_0xd4de('0x49')],null))['then'](respondWithResult(_0x56c13e,null))['catch'](handleError(_0x56c13e,null));};exports[_0xd4de('0x25')]=function(_0xd79781,_0x2d1e45){return db[_0xd4de('0x2d')]['find']({'where':{'id':_0xd79781[_0xd4de('0x4f')]['id']}})[_0xd4de('0x24')](handleEntityNotFound(_0x2d1e45,null))[_0xd4de('0x24')](removeEntity(_0x2d1e45,null))[_0xd4de('0x44')](handleError(_0x2d1e45,null));};exports[_0xd4de('0x50')]=function(_0x4bb7df,_0x5496f7,_0x4b55cc){return db[_0xd4de('0x2d')][_0xd4de('0x51')]({'where':{'id':_0x4bb7df[_0xd4de('0x4f')]['id']}})[_0xd4de('0x24')](handleEntityNotFound(_0x5496f7,null))['then'](function(_0x35ba6f){var _0x146eaa;var _0x2e0d76={},_0x17047a={};_0x17047a['model']=_[_0xd4de('0x46')](db[_0xd4de('0x52')][_0xd4de('0x2e')]);_0x17047a[_0xd4de('0x31')]=_['keys'](_0x4bb7df['query']);_0x17047a['filters']=_[_0xd4de('0x33')](_0x17047a[_0xd4de('0x34')],_0x17047a[_0xd4de('0x31')]);_0x2e0d76['attributes']=_[_0xd4de('0x33')](_0x17047a[_0xd4de('0x34')],qs[_0xd4de('0x36')](_0x4bb7df['query'][_0xd4de('0x36')]));_0x2e0d76['attributes']=_0x2e0d76[_0xd4de('0x35')][_0xd4de('0x37')]?_0x2e0d76[_0xd4de('0x35')]:_0x17047a[_0xd4de('0x34')];if(!_0x4bb7df[_0xd4de('0x31')][_0xd4de('0x38')](_0xd4de('0x39'))){_0x2e0d76[_0xd4de('0x1c')]=qs['limit'](_0x4bb7df[_0xd4de('0x31')]['limit']);_0x2e0d76[_0xd4de('0x1f')]=qs[_0xd4de('0x1f')](_0x4bb7df['query'][_0xd4de('0x1f')]);}_0x2e0d76[_0xd4de('0x53')]=qs[_0xd4de('0x54')](_0x4bb7df[_0xd4de('0x31')][_0xd4de('0x54')]);_0x2e0d76[_0xd4de('0x3a')]=qs[_0xd4de('0x32')](_[_0xd4de('0x3b')](_0x4bb7df[_0xd4de('0x31')],_0x17047a[_0xd4de('0x32')]));if(_0x4bb7df[_0xd4de('0x31')][_0xd4de('0x3d')]){_0x2e0d76[_0xd4de('0x3a')]=_['merge'](_0x2e0d76[_0xd4de('0x3a')],{'$or':_[_0xd4de('0x2c')](_0x2e0d76[_0xd4de('0x35')],function(_0x331f08){var _0x25628e={};_0x25628e[_0x331f08]={'$like':'%'+_0x4bb7df[_0xd4de('0x31')][_0xd4de('0x3d')]+'%'};return _0x25628e;})});}_0x2e0d76[_0xd4de('0x3a')]=_['merge'](_0x2e0d76[_0xd4de('0x3a')],{'mailboxuser':_0x35ba6f['mailbox']});_0x2e0d76=_['merge']({},_0x2e0d76,_0x4bb7df['options']);return db[_0xd4de('0x52')][_0xd4de('0x55')](_0x2e0d76)['then'](respondWithFilteredResult(_0x5496f7,_0x2e0d76));})['catch'](handleError(_0x5496f7,null));};
\ No newline at end of file
index 4e29ef1..18d9133 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00c2=['../../config/environment','./voiceMail.attributes','exports','define','mailbox_context','mailbox','lodash','api','moment','request-promise','path','rimraf'];(function(_0x1dd284,_0x1e199a){var _0x195579=function(_0x3028bd){while(--_0x3028bd){_0x1dd284['push'](_0x1dd284['shift']());}};_0x195579(++_0x1e199a);}(_0x00c2,0x10e));var _0x200c=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x00c2[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x200c('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x200c('0x1'));var moment=require(_0x200c('0x2'));var BPromise=require('bluebird');var rp=require(_0x200c('0x3'));var fs=require('fs');var path=require(_0x200c('0x4'));var rimraf=require(_0x200c('0x5'));var config=require(_0x200c('0x6'));var attributes=require(_0x200c('0x7'));module[_0x200c('0x8')]=function(_0x52111b,_0x50a48d){return _0x52111b[_0x200c('0x9')]('VoiceMail',attributes,{'tableName':'voice_voicemail','paranoid':![],'indexes':[{'name':_0x200c('0xa'),'fields':[_0x200c('0xb'),'context']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5272=['./voiceMail.attributes','exports','define','VoiceMail','voice_voicemail','mailbox_context','context','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment'];(function(_0x4043a9,_0x254d81){var _0x41995c=function(_0x35eeec){while(--_0x35eeec){_0x4043a9['push'](_0x4043a9['shift']());}};_0x41995c(++_0x254d81);}(_0x5272,0x16f));var _0x2527=function(_0x2b6f29,_0x194be0){_0x2b6f29=_0x2b6f29-0x0;var _0x5f59dc=_0x5272[_0x2b6f29];return _0x5f59dc;};'use strict';var _=require(_0x2527('0x0'));var util=require(_0x2527('0x1'));var logger=require(_0x2527('0x2'))(_0x2527('0x3'));var moment=require(_0x2527('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2527('0x5'));var rimraf=require(_0x2527('0x6'));var config=require(_0x2527('0x7'));var attributes=require(_0x2527('0x8'));module[_0x2527('0x9')]=function(_0x514f0d,_0x195780){return _0x514f0d[_0x2527('0xa')](_0x2527('0xb'),attributes,{'tableName':_0x2527('0xc'),'paranoid':![],'indexes':[{'name':_0x2527('0xd'),'fields':['mailbox',_0x2527('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index a077616..58058aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1267=['error','code','VoiceMail,\x20%s,\x20%s','message','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','debug','VoiceMail,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x1267,0x119));var _0x7126=function(_0x3f8b49,_0xabf189){_0x3f8b49=_0x3f8b49-0x0;var _0x3495dd=_0x1267[_0x3f8b49];return _0x3495dd;};'use strict';var _=require(_0x7126('0x0'));var util=require('util');var moment=require(_0x7126('0x1'));var BPromise=require('bluebird');var rs=require(_0x7126('0x2'));var fs=require('fs');var Redis=require(_0x7126('0x3'));var db=require(_0x7126('0x4'))['db'];var utils=require(_0x7126('0x5'));var logger=require(_0x7126('0x6'))(_0x7126('0x7'));var config=require('../../config/environment');var jayson=require(_0x7126('0x8'));var client=jayson[_0x7126('0x9')][_0x7126('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x25c78b,_0x2f2713,_0x54d41b){return new BPromise(function(_0x22eb2b,_0x283432){return client[_0x7126('0xb')](_0x25c78b,_0x54d41b)[_0x7126('0xc')](function(_0x556504){logger[_0x7126('0xd')]('VoiceMail,\x20%s,\x20%s',_0x2f2713,'request\x20sent');logger[_0x7126('0xe')](_0x7126('0xf'),_0x2f2713,_0x7126('0x10'),JSON[_0x7126('0x11')](_0x556504));if(_0x556504[_0x7126('0x12')]){if(_0x556504[_0x7126('0x12')][_0x7126('0x13')]===0x1f4){logger[_0x7126('0x12')](_0x7126('0x14'),_0x2f2713,_0x556504[_0x7126('0x12')]['message']);return _0x283432(_0x556504['error'][_0x7126('0x15')]);}logger[_0x7126('0x12')](_0x7126('0x14'),_0x2f2713,_0x556504[_0x7126('0x12')][_0x7126('0x15')]);return _0x22eb2b(_0x556504[_0x7126('0x12')]['message']);}else{logger[_0x7126('0xd')](_0x7126('0x14'),_0x2f2713,'request\x20sent');_0x22eb2b(_0x556504['result'][_0x7126('0x15')]);}})[_0x7126('0x16')](function(_0xe631e1){logger[_0x7126('0x12')](_0x7126('0x14'),_0x2f2713,_0xe631e1);_0x283432(_0xe631e1);});});}
\ No newline at end of file
+var _0x2061=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash'];(function(_0x48f969,_0x5522df){var _0x1d3716=function(_0x5ac95d){while(--_0x5ac95d){_0x48f969['push'](_0x48f969['shift']());}};_0x1d3716(++_0x5522df);}(_0x2061,0xa7));var _0x1206=function(_0x54f0d3,_0x504769){_0x54f0d3=_0x54f0d3-0x0;var _0x4063ac=_0x2061[_0x54f0d3];return _0x4063ac;};'use strict';var _=require(_0x1206('0x0'));var util=require(_0x1206('0x1'));var moment=require(_0x1206('0x2'));var BPromise=require(_0x1206('0x3'));var rs=require(_0x1206('0x4'));var fs=require('fs');var Redis=require(_0x1206('0x5'));var db=require(_0x1206('0x6'))['db'];var utils=require(_0x1206('0x7'));var logger=require(_0x1206('0x8'))(_0x1206('0x9'));var config=require(_0x1206('0xa'));var jayson=require(_0x1206('0xb'));var client=jayson[_0x1206('0xc')][_0x1206('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x56f08a,_0x103ef7,_0x6d8db9){return new BPromise(function(_0xfa615a,_0x47d5d2){return client[_0x1206('0xe')](_0x56f08a,_0x6d8db9)['then'](function(_0xe6714){logger[_0x1206('0xf')](_0x1206('0x10'),_0x103ef7,_0x1206('0x11'));logger[_0x1206('0x12')]('VoiceMail,\x20%s,\x20%s,\x20%s',_0x103ef7,_0x1206('0x11'),JSON[_0x1206('0x13')](_0xe6714));if(_0xe6714[_0x1206('0x14')]){if(_0xe6714[_0x1206('0x14')][_0x1206('0x15')]===0x1f4){logger['error'](_0x1206('0x10'),_0x103ef7,_0xe6714[_0x1206('0x14')][_0x1206('0x16')]);return _0x47d5d2(_0xe6714[_0x1206('0x14')][_0x1206('0x16')]);}logger[_0x1206('0x14')](_0x1206('0x10'),_0x103ef7,_0xe6714[_0x1206('0x14')][_0x1206('0x16')]);return _0xfa615a(_0xe6714[_0x1206('0x14')][_0x1206('0x16')]);}else{logger[_0x1206('0xf')](_0x1206('0x10'),_0x103ef7,_0x1206('0x11'));_0xfa615a(_0xe6714['result'][_0x1206('0x16')]);}})[_0x1206('0x17')](function(_0x478a3f){logger['error'](_0x1206('0x10'),_0x103ef7,_0x478a3f);_0x47d5d2(_0x478a3f);});});}
\ No newline at end of file
index 9e29789..d44a03f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6eb=['multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','index','/:id','show','download','post','update','destroy','exports'];(function(_0x50c7ac,_0x457b58){var _0x15dffc=function(_0x2b37bd){while(--_0x2b37bd){_0x50c7ac['push'](_0x50c7ac['shift']());}};_0x15dffc(++_0x457b58);}(_0xc6eb,0x120));var _0xbc6e=function(_0x237418,_0x56e144){_0x237418=_0x237418-0x0;var _0x22393e=_0xc6eb[_0x237418];return _0x22393e;};'use strict';var multer=require(_0xbc6e('0x0'));var util=require(_0xbc6e('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xbc6e('0x2')]();var fs_extra=require(_0xbc6e('0x3'));var auth=require(_0xbc6e('0x4'));var interaction=require(_0xbc6e('0x5'));var config=require(_0xbc6e('0x6'));var controller=require(_0xbc6e('0x7'));router[_0xbc6e('0x8')]('/',auth[_0xbc6e('0x9')](),controller[_0xbc6e('0xa')]);router[_0xbc6e('0x8')](_0xbc6e('0xb'),auth[_0xbc6e('0x9')](),controller[_0xbc6e('0xc')]);router[_0xbc6e('0x8')]('/:id/download',auth[_0xbc6e('0x9')](),controller[_0xbc6e('0xd')]);router[_0xbc6e('0xe')]('/',auth[_0xbc6e('0x9')](),controller['create']);router['put'](_0xbc6e('0xb'),auth[_0xbc6e('0x9')](),controller[_0xbc6e('0xf')]);router['delete'](_0xbc6e('0xb'),auth[_0xbc6e('0x9')](),controller[_0xbc6e('0x10')]);module[_0xbc6e('0x11')]=router;
\ No newline at end of file
+var _0xdbb9=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','download','post','create','update','delete','destroy','exports','multer','path','connect-timeout'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdbb9,0xe4));var _0x9dbb=function(_0x3237bd,_0x21ad0d){_0x3237bd=_0x3237bd-0x0;var _0x1d5987=_0xdbb9[_0x3237bd];return _0x1d5987;};'use strict';var multer=require(_0x9dbb('0x0'));var util=require('util');var path=require(_0x9dbb('0x1'));var timeout=require(_0x9dbb('0x2'));var express=require(_0x9dbb('0x3'));var router=express[_0x9dbb('0x4')]();var fs_extra=require(_0x9dbb('0x5'));var auth=require(_0x9dbb('0x6'));var interaction=require(_0x9dbb('0x7'));var config=require(_0x9dbb('0x8'));var controller=require('./voiceMailMessage.controller');router[_0x9dbb('0x9')]('/',auth['isAuthenticated'](),controller[_0x9dbb('0xa')]);router[_0x9dbb('0x9')](_0x9dbb('0xb'),auth[_0x9dbb('0xc')](),controller[_0x9dbb('0xd')]);router[_0x9dbb('0x9')]('/:id/download',auth['isAuthenticated'](),controller[_0x9dbb('0xe')]);router[_0x9dbb('0xf')]('/',auth[_0x9dbb('0xc')](),controller[_0x9dbb('0x10')]);router['put'](_0x9dbb('0xb'),auth['isAuthenticated'](),controller[_0x9dbb('0x11')]);router[_0x9dbb('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x9dbb('0x13')]);module[_0x9dbb('0x14')]=router;
\ No newline at end of file
index fcf7ed2..930f161 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cf7=['getDataValue','INTEGER','STRING','BLOB','long','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','VIRTUAL'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1cf7,0x19c));var _0x71cf=function(_0xbd7302,_0x41c4f6){_0xbd7302=_0xbd7302-0x0;var _0x174e80=_0x1cf7[_0xbd7302];return _0x174e80;};'use strict';var Sequelize=require(_0x71cf('0x0'));module['exports']={'name':{'type':Sequelize[_0x71cf('0x1')],'get':function(_0x2792a8){return this[_0x71cf('0x2')]('id');}},'msgnum':{'type':Sequelize[_0x71cf('0x3')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x71cf('0x4')],'defaultValue':''},'context':{'type':Sequelize[_0x71cf('0x4')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x71cf('0x4')],'defaultValue':''},'callerid':{'type':Sequelize[_0x71cf('0x4')],'defaultValue':''},'origtime':{'type':Sequelize[_0x71cf('0x4')],'defaultValue':''},'duration':{'type':Sequelize[_0x71cf('0x4')],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x71cf('0x4')],'defaultValue':''},'recording':{'type':Sequelize[_0x71cf('0x5')](_0x71cf('0x6')),'defaultValue':null},'flag':{'type':Sequelize['STRING'],'defaultValue':''},'msg_id':{'type':Sequelize[_0x71cf('0x4')],'defaultValue':''},'stamp':{'type':'TIMESTAMP','defaultValue':Sequelize[_0x71cf('0x7')](_0x71cf('0x8'))}};
\ No newline at end of file
+var _0x2923=['BLOB','long','TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','VIRTUAL','getDataValue','INTEGER','STRING'];(function(_0x33a90a,_0x343214){var _0x1165ec=function(_0x1587f3){while(--_0x1587f3){_0x33a90a['push'](_0x33a90a['shift']());}};_0x1165ec(++_0x343214);}(_0x2923,0x1b3));var _0x3292=function(_0x287cff,_0x2eb9d7){_0x287cff=_0x287cff-0x0;var _0x2c6136=_0x2923[_0x287cff];return _0x2c6136;};'use strict';var Sequelize=require(_0x3292('0x0'));module['exports']={'name':{'type':Sequelize[_0x3292('0x1')],'get':function(_0x1b653d){return this[_0x3292('0x2')]('id');}},'msgnum':{'type':Sequelize[_0x3292('0x3')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x3292('0x4')],'defaultValue':''},'context':{'type':Sequelize[_0x3292('0x4')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x3292('0x4')],'defaultValue':''},'callerid':{'type':Sequelize[_0x3292('0x4')],'defaultValue':''},'origtime':{'type':Sequelize[_0x3292('0x4')],'defaultValue':''},'duration':{'type':Sequelize[_0x3292('0x4')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x3292('0x4')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x3292('0x4')],'defaultValue':''},'recording':{'type':Sequelize[_0x3292('0x5')](_0x3292('0x6')),'defaultValue':null},'flag':{'type':Sequelize[_0x3292('0x4')],'defaultValue':''},'msg_id':{'type':Sequelize['STRING'],'defaultValue':''},'stamp':{'type':_0x3292('0x7'),'defaultValue':Sequelize[_0x3292('0x8')](_0x3292('0x9'))}};
\ No newline at end of file
index a0e6a49..901f7c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd12f=['api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','map','VoiceMailMessage','rawAttributes','fieldName','type','key','differenceBy','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','catch','show','params','find','create','body','download','recording','Sequelize','VoiceMailMessage\x20not\x20found','attachment','msg_id','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','eml-format','rimraf','zip-dir','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger'];(function(_0x1a243c,_0x455768){var _0x147800=function(_0x4346f5){while(--_0x4346f5){_0x1a243c['push'](_0x1a243c['shift']());}};_0x147800(++_0x455768);}(_0xd12f,0x1e4));var _0xfd12=function(_0x323430,_0x3d2b6d){_0x323430=_0x323430-0x0;var _0x9eecd1=_0xd12f[_0x323430];return _0x9eecd1;};'use strict';var emlformat=require(_0xfd12('0x0'));var rimraf=require(_0xfd12('0x1'));var zipdir=require(_0xfd12('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xfd12('0x3'));var BPromise=require(_0xfd12('0x4'));var Mustache=require(_0xfd12('0x5'));var util=require('util');var path=require(_0xfd12('0x6'));var sox=require('sox');var csv=require(_0xfd12('0x7'));var ejs=require(_0xfd12('0x8'));var fs=require('fs');var fs_extra=require(_0xfd12('0x9'));var _=require('lodash');var squel=require(_0xfd12('0xa'));var crypto=require(_0xfd12('0xb'));var jsforce=require(_0xfd12('0xc'));var deskjs=require(_0xfd12('0xd'));var toCsv=require(_0xfd12('0x7'));var querystring=require(_0xfd12('0xe'));var Papa=require('papaparse');var Redis=require(_0xfd12('0xf'));var authService=require(_0xfd12('0x10'));var qs=require(_0xfd12('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfd12('0x12'));var logger=require(_0xfd12('0x13'))(_0xfd12('0x14'));var utils=require(_0xfd12('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xfd12('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4145f0,_0xd76c9a){_0xd76c9a=_0xd76c9a||0xcc;return function(_0x3ed605){if(_0x3ed605){return _0x4145f0[_0xfd12('0x17')](_0xd76c9a);}return _0x4145f0[_0xfd12('0x18')](_0xd76c9a)['end']();};}function respondWithResult(_0x168b5c,_0x4caa97){_0x4caa97=_0x4caa97||0xc8;return function(_0x230aa2){if(_0x230aa2){return _0x168b5c[_0xfd12('0x18')](_0x4caa97)[_0xfd12('0x19')](_0x230aa2);}};}function respondWithFilteredResult(_0x2a93a0,_0x27ebe2){return function(_0x112499){if(_0x112499){var _0x4d6a61=typeof _0x27ebe2[_0xfd12('0x1a')]===_0xfd12('0x1b')&&typeof _0x27ebe2[_0xfd12('0x1c')]===_0xfd12('0x1b');var _0x2b19a2=_0x112499[_0xfd12('0x1d')];var _0x3dc30c=_0x4d6a61?0x0:_0x27ebe2[_0xfd12('0x1a')];var _0x458eda=_0x4d6a61?_0x112499[_0xfd12('0x1d')]:_0x27ebe2[_0xfd12('0x1a')]+_0x27ebe2[_0xfd12('0x1c')];var _0x317616;if(_0x458eda>=_0x2b19a2){_0x458eda=_0x2b19a2;_0x317616=0xc8;}else{_0x317616=0xce;}_0x2a93a0[_0xfd12('0x18')](_0x317616);return _0x2a93a0[_0xfd12('0x1e')](_0xfd12('0x1f'),_0x3dc30c+'-'+_0x458eda+'/'+_0x2b19a2)[_0xfd12('0x19')](_0x112499);}return null;};}function patchUpdates(_0x2c9638){return function(_0x325f7f){try{jsonpatch[_0xfd12('0x20')](_0x325f7f,_0x2c9638,!![]);}catch(_0x2fa1fc){return BPromise[_0xfd12('0x21')](_0x2fa1fc);}return _0x325f7f[_0xfd12('0x22')]();};}function saveUpdates(_0x5f1f4a,_0x755692){return function(_0x5c8c1e){if(_0x5c8c1e){return _0x5c8c1e[_0xfd12('0x23')](_0x5f1f4a)[_0xfd12('0x24')](function(_0x217243){return _0x217243;});}return null;};}function removeEntity(_0x1c9240,_0x2b5549){return function(_0x4a93d5){if(_0x4a93d5){return _0x4a93d5[_0xfd12('0x25')]()[_0xfd12('0x24')](function(){_0x1c9240['status'](0xcc)[_0xfd12('0x26')]();});}};}function handleEntityNotFound(_0x4777a2,_0x8541c1){return function(_0xb68634){if(!_0xb68634){_0x4777a2[_0xfd12('0x17')](0x194);}return _0xb68634;};}function handleError(_0x10d8ca,_0x5b52c2){_0x5b52c2=_0x5b52c2||0x1f4;return function(_0xadebe1){logger[_0xfd12('0x27')](_0xadebe1[_0xfd12('0x28')]);if(_0xadebe1[_0xfd12('0x29')]){delete _0xadebe1[_0xfd12('0x29')];}_0x10d8ca[_0xfd12('0x18')](_0x5b52c2)['send'](_0xadebe1);};}exports['index']=function(_0x15284d,_0x2ef901){var _0x58b7d6={},_0x11e543={},_0x189ea1={'count':0x0,'rows':[]};var _0x1f702f=_[_0xfd12('0x2a')](db[_0xfd12('0x2b')][_0xfd12('0x2c')],function(_0x256404){return{'name':_0x256404[_0xfd12('0x2d')],'type':_0x256404[_0xfd12('0x2e')][_0xfd12('0x2f')]};});_0x11e543['model']=_[_0xfd12('0x30')](_[_0xfd12('0x2a')](_0x1f702f,_0xfd12('0x29')),[_0xfd12('0x29')]);_0x11e543['query']=_[_0xfd12('0x31')](_0x15284d[_0xfd12('0x32')]);_0x11e543[_0xfd12('0x33')]=_[_0xfd12('0x34')](_0x11e543[_0xfd12('0x35')],_0x11e543[_0xfd12('0x32')]);_0x58b7d6[_0xfd12('0x36')]=_[_0xfd12('0x34')](_0x11e543[_0xfd12('0x35')],qs[_0xfd12('0x37')](_0x15284d[_0xfd12('0x32')]['fields']));_0x58b7d6['attributes']=_0x58b7d6[_0xfd12('0x36')][_0xfd12('0x38')]?_0x58b7d6['attributes']:_0x11e543[_0xfd12('0x35')];if(!_0x15284d['query'][_0xfd12('0x39')](_0xfd12('0x3a'))){_0x58b7d6[_0xfd12('0x1c')]=qs['limit'](_0x15284d[_0xfd12('0x32')]['limit']);_0x58b7d6[_0xfd12('0x1a')]=qs[_0xfd12('0x1a')](_0x15284d[_0xfd12('0x32')]['offset']);}_0x58b7d6[_0xfd12('0x3b')]=qs[_0xfd12('0x3c')](_0x15284d[_0xfd12('0x32')]['sort']);_0x58b7d6[_0xfd12('0x3d')]=qs[_0xfd12('0x33')](_[_0xfd12('0x3e')](_0x15284d['query'],_0x11e543['filters']),_0x1f702f);if(_0x15284d[_0xfd12('0x32')][_0xfd12('0x3f')]){_0x58b7d6[_0xfd12('0x3d')]=_[_0xfd12('0x40')](_0x58b7d6[_0xfd12('0x3d')],{'$or':_[_0xfd12('0x2a')](_0x1f702f,function(_0x251438){if(_0x251438['type']!=='VIRTUAL'){var _0x4fa451={};_0x4fa451[_0x251438['name']]={'$like':'%'+_0x15284d['query'][_0xfd12('0x3f')]+'%'};return _0x4fa451;}})});}_0x58b7d6=_[_0xfd12('0x40')]({},_0x58b7d6,_0x15284d[_0xfd12('0x41')]);var _0x5f5107={'where':_0x58b7d6[_0xfd12('0x3d')]};return db[_0xfd12('0x2b')][_0xfd12('0x1d')](_0x5f5107)[_0xfd12('0x24')](function(_0x377432){_0x189ea1[_0xfd12('0x1d')]=_0x377432;if(_0x15284d[_0xfd12('0x32')][_0xfd12('0x42')]){_0x58b7d6[_0xfd12('0x43')]=[{'all':!![]}];}return db[_0xfd12('0x2b')][_0xfd12('0x44')](_0x58b7d6);})['then'](function(_0x3f2b96){_0x189ea1['rows']=_0x3f2b96;return _0x189ea1;})['then'](respondWithFilteredResult(_0x2ef901,_0x58b7d6))[_0xfd12('0x45')](handleError(_0x2ef901,null));};exports[_0xfd12('0x46')]=function(_0x2f88bb,_0x378ec0){var _0x1d9fd6={'raw':!![],'where':{'id':_0x2f88bb[_0xfd12('0x47')]['id']}},_0x916406={};_0x916406[_0xfd12('0x35')]=_[_0xfd12('0x31')](db['VoiceMailMessage'][_0xfd12('0x2c')]);_0x916406[_0xfd12('0x32')]=_[_0xfd12('0x31')](_0x2f88bb[_0xfd12('0x32')]);_0x916406[_0xfd12('0x33')]=_[_0xfd12('0x34')](_0x916406[_0xfd12('0x35')],_0x916406[_0xfd12('0x32')]);_0x1d9fd6[_0xfd12('0x36')]=_[_0xfd12('0x34')](_0x916406[_0xfd12('0x35')],qs['fields'](_0x2f88bb[_0xfd12('0x32')][_0xfd12('0x37')]));_0x1d9fd6[_0xfd12('0x36')]=_0x1d9fd6[_0xfd12('0x36')][_0xfd12('0x38')]?_0x1d9fd6[_0xfd12('0x36')]:_0x916406[_0xfd12('0x35')];if(_0x2f88bb[_0xfd12('0x32')][_0xfd12('0x42')]){_0x1d9fd6['include']=[{'all':!![]}];}_0x1d9fd6=_[_0xfd12('0x40')]({},_0x1d9fd6,_0x2f88bb[_0xfd12('0x41')]);return db[_0xfd12('0x2b')][_0xfd12('0x48')](_0x1d9fd6)[_0xfd12('0x24')](handleEntityNotFound(_0x378ec0,null))[_0xfd12('0x24')](respondWithResult(_0x378ec0,null))[_0xfd12('0x45')](handleError(_0x378ec0,null));};exports['create']=function(_0x4f1aae,_0x2725d5){return db[_0xfd12('0x2b')][_0xfd12('0x49')](_0x4f1aae['body'],{})[_0xfd12('0x24')](respondWithResult(_0x2725d5,0xc9))[_0xfd12('0x45')](handleError(_0x2725d5,null));};exports[_0xfd12('0x23')]=function(_0x518dbf,_0x2e62e4){if(_0x518dbf[_0xfd12('0x4a')]['id']){delete _0x518dbf[_0xfd12('0x4a')]['id'];}return db[_0xfd12('0x2b')][_0xfd12('0x48')]({'where':{'id':_0x518dbf[_0xfd12('0x47')]['id']}})[_0xfd12('0x24')](handleEntityNotFound(_0x2e62e4,null))[_0xfd12('0x24')](saveUpdates(_0x518dbf[_0xfd12('0x4a')],null))['then'](respondWithResult(_0x2e62e4,null))[_0xfd12('0x45')](handleError(_0x2e62e4,null));};exports[_0xfd12('0x25')]=function(_0x8f07d,_0x4b4db3){return db['VoiceMailMessage'][_0xfd12('0x48')]({'where':{'id':_0x8f07d[_0xfd12('0x47')]['id']}})[_0xfd12('0x24')](handleEntityNotFound(_0x4b4db3,null))[_0xfd12('0x24')](removeEntity(_0x4b4db3,null))[_0xfd12('0x45')](handleError(_0x4b4db3,null));};exports[_0xfd12('0x4b')]=function(_0x3a5c89,_0x7afd9a,_0x368856){return db[_0xfd12('0x2b')][_0xfd12('0x48')]({'where':{'id':_0x3a5c89[_0xfd12('0x47')]['id']},'attributes':['id',_0xfd12('0x4c'),'msg_id']})['then'](handleEntityNotFound(_0x7afd9a,null))['then'](function(_0x3b1d02){if(_0x3b1d02){if(!_0x3b1d02['recording']){throw new db[(_0xfd12('0x4d'))]['ValidationError'](_0xfd12('0x4e'));}var _0x29a67e={'Content-Type':'audio/wav','Content-Disposition':_0xfd12('0x4f')};if(_0x3b1d02[_0xfd12('0x50')]){_0x29a67e[_0xfd12('0x51')]=_0xfd12('0x52')+_0x3b1d02[_0xfd12('0x50')]+_0xfd12('0x53');}_0x7afd9a['set'](_0x29a67e);return _0x7afd9a['send'](new Buffer(_0x3b1d02[_0xfd12('0x4c')]));}})[_0xfd12('0x45')](handleError(_0x7afd9a,null));};
\ No newline at end of file
+var _0xcd15=['mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','VoiceMailMessage','fieldName','type','key','model','differenceBy','keys','query','filters','attributes','intersection','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','rawAttributes','fields','length','include','create','body','find','destroy','download','recording','msg_id','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','set','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x547af,_0x17abff){var _0x22f7f4=function(_0x5f0384){while(--_0x5f0384){_0x547af['push'](_0x547af['shift']());}};_0x22f7f4(++_0x17abff);}(_0xcd15,0x1b7));var _0x5cd1=function(_0x5575cd,_0x73ab7a){_0x5575cd=_0x5575cd-0x0;var _0x4979a0=_0xcd15[_0x5575cd];return _0x4979a0;};'use strict';var emlformat=require(_0x5cd1('0x0'));var rimraf=require(_0x5cd1('0x1'));var zipdir=require(_0x5cd1('0x2'));var jsonpatch=require(_0x5cd1('0x3'));var rp=require(_0x5cd1('0x4'));var moment=require(_0x5cd1('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x5cd1('0x6'));var util=require(_0x5cd1('0x7'));var path=require(_0x5cd1('0x8'));var sox=require(_0x5cd1('0x9'));var csv=require(_0x5cd1('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5cd1('0xb'));var _=require(_0x5cd1('0xc'));var squel=require(_0x5cd1('0xd'));var crypto=require('crypto');var jsforce=require(_0x5cd1('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x5cd1('0xf'));var Papa=require('papaparse');var Redis=require(_0x5cd1('0x10'));var authService=require(_0x5cd1('0x11'));var qs=require(_0x5cd1('0x12'));var as=require(_0x5cd1('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5cd1('0x14'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x5cd1('0x15'))['db'];function respondWithStatusCode(_0x5d466c,_0x307d23){_0x307d23=_0x307d23||0xcc;return function(_0x3a5a4b){if(_0x3a5a4b){return _0x5d466c[_0x5cd1('0x16')](_0x307d23);}return _0x5d466c[_0x5cd1('0x17')](_0x307d23)[_0x5cd1('0x18')]();};}function respondWithResult(_0xc22301,_0x4be323){_0x4be323=_0x4be323||0xc8;return function(_0x53269e){if(_0x53269e){return _0xc22301[_0x5cd1('0x17')](_0x4be323)[_0x5cd1('0x19')](_0x53269e);}};}function respondWithFilteredResult(_0x295a94,_0x1fe815){return function(_0x2c5fdf){if(_0x2c5fdf){var _0x1fc344=typeof _0x1fe815[_0x5cd1('0x1a')]===_0x5cd1('0x1b')&&typeof _0x1fe815[_0x5cd1('0x1c')]==='undefined';var _0x4dec02=_0x2c5fdf['count'];var _0x853a93=_0x1fc344?0x0:_0x1fe815['offset'];var _0x467ff7=_0x1fc344?_0x2c5fdf[_0x5cd1('0x1d')]:_0x1fe815[_0x5cd1('0x1a')]+_0x1fe815[_0x5cd1('0x1c')];var _0x421d8a;if(_0x467ff7>=_0x4dec02){_0x467ff7=_0x4dec02;_0x421d8a=0xc8;}else{_0x421d8a=0xce;}_0x295a94[_0x5cd1('0x17')](_0x421d8a);return _0x295a94['set'](_0x5cd1('0x1e'),_0x853a93+'-'+_0x467ff7+'/'+_0x4dec02)[_0x5cd1('0x19')](_0x2c5fdf);}return null;};}function patchUpdates(_0x3a2405){return function(_0x1e80fc){try{jsonpatch[_0x5cd1('0x1f')](_0x1e80fc,_0x3a2405,!![]);}catch(_0x398c37){return BPromise[_0x5cd1('0x20')](_0x398c37);}return _0x1e80fc[_0x5cd1('0x21')]();};}function saveUpdates(_0xc708ac,_0x42b3bf){return function(_0x4ee32d){if(_0x4ee32d){return _0x4ee32d[_0x5cd1('0x22')](_0xc708ac)[_0x5cd1('0x23')](function(_0x17620a){return _0x17620a;});}return null;};}function removeEntity(_0x6da693,_0x346c0f){return function(_0x331cd8){if(_0x331cd8){return _0x331cd8['destroy']()[_0x5cd1('0x23')](function(){_0x6da693['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x54c4b9,_0x3387ba){return function(_0x4d0aee){if(!_0x4d0aee){_0x54c4b9[_0x5cd1('0x16')](0x194);}return _0x4d0aee;};}function handleError(_0xb76243,_0x5f5609){_0x5f5609=_0x5f5609||0x1f4;return function(_0x264615){logger[_0x5cd1('0x24')](_0x264615[_0x5cd1('0x25')]);if(_0x264615[_0x5cd1('0x26')]){delete _0x264615[_0x5cd1('0x26')];}_0xb76243[_0x5cd1('0x17')](_0x5f5609)[_0x5cd1('0x27')](_0x264615);};}exports[_0x5cd1('0x28')]=function(_0x3a983d,_0x26d962){var _0x35ab91={},_0x35cd14={},_0x220a9f={'count':0x0,'rows':[]};var _0x1ee602=_[_0x5cd1('0x29')](db[_0x5cd1('0x2a')]['rawAttributes'],function(_0x2aef06){return{'name':_0x2aef06[_0x5cd1('0x2b')],'type':_0x2aef06[_0x5cd1('0x2c')][_0x5cd1('0x2d')]};});_0x35cd14[_0x5cd1('0x2e')]=_[_0x5cd1('0x2f')](_[_0x5cd1('0x29')](_0x1ee602,_0x5cd1('0x26')),[_0x5cd1('0x26')]);_0x35cd14['query']=_[_0x5cd1('0x30')](_0x3a983d[_0x5cd1('0x31')]);_0x35cd14[_0x5cd1('0x32')]=_['intersection'](_0x35cd14['model'],_0x35cd14[_0x5cd1('0x31')]);_0x35ab91[_0x5cd1('0x33')]=_[_0x5cd1('0x34')](_0x35cd14[_0x5cd1('0x2e')],qs['fields'](_0x3a983d[_0x5cd1('0x31')]['fields']));_0x35ab91['attributes']=_0x35ab91['attributes']['length']?_0x35ab91[_0x5cd1('0x33')]:_0x35cd14[_0x5cd1('0x2e')];if(!_0x3a983d[_0x5cd1('0x31')][_0x5cd1('0x35')](_0x5cd1('0x36'))){_0x35ab91[_0x5cd1('0x1c')]=qs[_0x5cd1('0x1c')](_0x3a983d[_0x5cd1('0x31')][_0x5cd1('0x1c')]);_0x35ab91[_0x5cd1('0x1a')]=qs[_0x5cd1('0x1a')](_0x3a983d[_0x5cd1('0x31')]['offset']);}_0x35ab91[_0x5cd1('0x37')]=qs['sort'](_0x3a983d[_0x5cd1('0x31')][_0x5cd1('0x38')]);_0x35ab91['where']=qs[_0x5cd1('0x32')](_[_0x5cd1('0x39')](_0x3a983d[_0x5cd1('0x31')],_0x35cd14['filters']),_0x1ee602);if(_0x3a983d[_0x5cd1('0x31')][_0x5cd1('0x3a')]){_0x35ab91[_0x5cd1('0x3b')]=_[_0x5cd1('0x3c')](_0x35ab91[_0x5cd1('0x3b')],{'$or':_['map'](_0x1ee602,function(_0x481f73){if(_0x481f73[_0x5cd1('0x2c')]!==_0x5cd1('0x3d')){var _0x5bebf6={};_0x5bebf6[_0x481f73['name']]={'$like':'%'+_0x3a983d[_0x5cd1('0x31')]['filter']+'%'};return _0x5bebf6;}})});}_0x35ab91=_['merge']({},_0x35ab91,_0x3a983d[_0x5cd1('0x3e')]);var _0x2067f0={'where':_0x35ab91[_0x5cd1('0x3b')]};return db[_0x5cd1('0x2a')][_0x5cd1('0x1d')](_0x2067f0)['then'](function(_0x331084){_0x220a9f[_0x5cd1('0x1d')]=_0x331084;if(_0x3a983d[_0x5cd1('0x31')][_0x5cd1('0x3f')]){_0x35ab91['include']=[{'all':!![]}];}return db[_0x5cd1('0x2a')][_0x5cd1('0x40')](_0x35ab91);})[_0x5cd1('0x23')](function(_0x1a527c){_0x220a9f[_0x5cd1('0x41')]=_0x1a527c;return _0x220a9f;})['then'](respondWithFilteredResult(_0x26d962,_0x35ab91))[_0x5cd1('0x42')](handleError(_0x26d962,null));};exports[_0x5cd1('0x43')]=function(_0x34883f,_0x26ae39){var _0x424eb8={'raw':!![],'where':{'id':_0x34883f[_0x5cd1('0x44')]['id']}},_0x3bcec7={};_0x3bcec7[_0x5cd1('0x2e')]=_[_0x5cd1('0x30')](db[_0x5cd1('0x2a')][_0x5cd1('0x45')]);_0x3bcec7[_0x5cd1('0x31')]=_[_0x5cd1('0x30')](_0x34883f['query']);_0x3bcec7[_0x5cd1('0x32')]=_[_0x5cd1('0x34')](_0x3bcec7[_0x5cd1('0x2e')],_0x3bcec7[_0x5cd1('0x31')]);_0x424eb8[_0x5cd1('0x33')]=_[_0x5cd1('0x34')](_0x3bcec7[_0x5cd1('0x2e')],qs[_0x5cd1('0x46')](_0x34883f[_0x5cd1('0x31')][_0x5cd1('0x46')]));_0x424eb8[_0x5cd1('0x33')]=_0x424eb8[_0x5cd1('0x33')][_0x5cd1('0x47')]?_0x424eb8[_0x5cd1('0x33')]:_0x3bcec7['model'];if(_0x34883f[_0x5cd1('0x31')][_0x5cd1('0x3f')]){_0x424eb8[_0x5cd1('0x48')]=[{'all':!![]}];}_0x424eb8=_[_0x5cd1('0x3c')]({},_0x424eb8,_0x34883f[_0x5cd1('0x3e')]);return db[_0x5cd1('0x2a')]['find'](_0x424eb8)['then'](handleEntityNotFound(_0x26ae39,null))[_0x5cd1('0x23')](respondWithResult(_0x26ae39,null))[_0x5cd1('0x42')](handleError(_0x26ae39,null));};exports[_0x5cd1('0x49')]=function(_0xdfcd9,_0x55093b){return db[_0x5cd1('0x2a')]['create'](_0xdfcd9['body'],{})[_0x5cd1('0x23')](respondWithResult(_0x55093b,0xc9))[_0x5cd1('0x42')](handleError(_0x55093b,null));};exports['update']=function(_0x9d7883,_0x524913){if(_0x9d7883[_0x5cd1('0x4a')]['id']){delete _0x9d7883[_0x5cd1('0x4a')]['id'];}return db[_0x5cd1('0x2a')][_0x5cd1('0x4b')]({'where':{'id':_0x9d7883[_0x5cd1('0x44')]['id']}})[_0x5cd1('0x23')](handleEntityNotFound(_0x524913,null))['then'](saveUpdates(_0x9d7883[_0x5cd1('0x4a')],null))[_0x5cd1('0x23')](respondWithResult(_0x524913,null))[_0x5cd1('0x42')](handleError(_0x524913,null));};exports[_0x5cd1('0x4c')]=function(_0x2ef79d,_0x2b5a0e){return db['VoiceMailMessage'][_0x5cd1('0x4b')]({'where':{'id':_0x2ef79d[_0x5cd1('0x44')]['id']}})[_0x5cd1('0x23')](handleEntityNotFound(_0x2b5a0e,null))[_0x5cd1('0x23')](removeEntity(_0x2b5a0e,null))['catch'](handleError(_0x2b5a0e,null));};exports[_0x5cd1('0x4d')]=function(_0x5827c5,_0x4ec229,_0x3a8d27){return db[_0x5cd1('0x2a')]['find']({'where':{'id':_0x5827c5[_0x5cd1('0x44')]['id']},'attributes':['id',_0x5cd1('0x4e'),_0x5cd1('0x4f')]})[_0x5cd1('0x23')](handleEntityNotFound(_0x4ec229,null))[_0x5cd1('0x23')](function(_0x26975a){if(_0x26975a){if(!_0x26975a[_0x5cd1('0x4e')]){throw new db[(_0x5cd1('0x50'))][(_0x5cd1('0x51'))](_0x5cd1('0x52'));}var _0x321f12={'Content-Type':_0x5cd1('0x53'),'Content-Disposition':_0x5cd1('0x54')};if(_0x26975a[_0x5cd1('0x4f')]){_0x321f12[_0x5cd1('0x55')]=_0x5cd1('0x56')+_0x26975a['msg_id']+_0x5cd1('0x57');}_0x4ec229[_0x5cd1('0x58')](_0x321f12);return _0x4ec229[_0x5cd1('0x27')](new Buffer(_0x26975a['recording']));}})[_0x5cd1('0x42')](handleError(_0x4ec229,null));};
\ No newline at end of file
index cd3d31b..af797dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f09=['api','moment','bluebird','rimraf','../../config/environment','exports','define','voice_voicemail_messages','dir','lodash','util'];(function(_0x248cc0,_0x1f7813){var _0x2ce672=function(_0x384f5e){while(--_0x384f5e){_0x248cc0['push'](_0x248cc0['shift']());}};_0x2ce672(++_0x1f7813);}(_0x7f09,0x1a0));var _0x97f0=function(_0x2c2d46,_0x36f195){_0x2c2d46=_0x2c2d46-0x0;var _0x3a31da=_0x7f09[_0x2c2d46];return _0x3a31da;};'use strict';var _=require(_0x97f0('0x0'));var util=require(_0x97f0('0x1'));var logger=require('../../config/logger')(_0x97f0('0x2'));var moment=require(_0x97f0('0x3'));var BPromise=require(_0x97f0('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x97f0('0x5'));var config=require(_0x97f0('0x6'));var attributes=require('./voiceMailMessage.attributes');module[_0x97f0('0x7')]=function(_0x17fa60,_0x5649b6){return _0x17fa60[_0x97f0('0x8')]('VoiceMailMessage',attributes,{'tableName':_0x97f0('0x9'),'paranoid':![],'indexes':[{'name':_0x97f0('0xa'),'fields':[_0x97f0('0xa')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x0138=['../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./voiceMailMessage.attributes','exports','define','dir','util'];(function(_0x33e309,_0x3a0efb){var _0x326f94=function(_0x9d2546){while(--_0x9d2546){_0x33e309['push'](_0x33e309['shift']());}};_0x326f94(++_0x3a0efb);}(_0x0138,0x16a));var _0x8013=function(_0x1d9333,_0x2a9349){_0x1d9333=_0x1d9333-0x0;var _0x2ac128=_0x0138[_0x1d9333];return _0x2ac128;};'use strict';var _=require('lodash');var util=require(_0x8013('0x0'));var logger=require(_0x8013('0x1'))(_0x8013('0x2'));var moment=require('moment');var BPromise=require(_0x8013('0x3'));var rp=require(_0x8013('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8013('0x5'));var config=require(_0x8013('0x6'));var attributes=require(_0x8013('0x7'));module[_0x8013('0x8')]=function(_0x494980,_0x4d2545){return _0x494980[_0x8013('0x9')]('VoiceMailMessage',attributes,{'tableName':'voice_voicemail_messages','paranoid':![],'indexes':[{'name':_0x8013('0xa'),'fields':[_0x8013('0xa')]}],'timestamps':![]});};
\ No newline at end of file
index 94084dc..cb4a298 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6016=['../../config/environment','client','http','request','then','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','VoiceMailMessage,\x20%s,\x20%s,\x20%s','error','message','lodash','util','moment','bluebird','ioredis','../../config/utils','rpc'];(function(_0x404652,_0x254f1c){var _0x451241=function(_0x9defb4){while(--_0x9defb4){_0x404652['push'](_0x404652['shift']());}};_0x451241(++_0x254f1c);}(_0x6016,0x89));var _0x6601=function(_0x3a6e4b,_0x118cd9){_0x3a6e4b=_0x3a6e4b-0x0;var _0x36572d=_0x6016[_0x3a6e4b];return _0x36572d;};'use strict';var _=require(_0x6601('0x0'));var util=require(_0x6601('0x1'));var moment=require(_0x6601('0x2'));var BPromise=require(_0x6601('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6601('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6601('0x5'));var logger=require('../../config/logger')(_0x6601('0x6'));var config=require(_0x6601('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x6601('0x8')][_0x6601('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x186b31,_0x247c0b,_0x3379f4){return new BPromise(function(_0x229572,_0x20ccac){return client[_0x6601('0xa')](_0x186b31,_0x3379f4)[_0x6601('0xb')](function(_0x42ceab){logger[_0x6601('0xc')](_0x6601('0xd'),_0x247c0b,_0x6601('0xe'));logger['debug'](_0x6601('0xf'),_0x247c0b,_0x6601('0xe'),JSON['stringify'](_0x42ceab));if(_0x42ceab['error']){if(_0x42ceab[_0x6601('0x10')]['code']===0x1f4){logger['error'](_0x6601('0xd'),_0x247c0b,_0x42ceab[_0x6601('0x10')]['message']);return _0x20ccac(_0x42ceab['error'][_0x6601('0x11')]);}logger['error'](_0x6601('0xd'),_0x247c0b,_0x42ceab['error'][_0x6601('0x11')]);return _0x229572(_0x42ceab['error']['message']);}else{logger[_0x6601('0xc')](_0x6601('0xd'),_0x247c0b,'request\x20sent');_0x229572(_0x42ceab['result'][_0x6601('0x11')]);}})['catch'](function(_0x5aa153){logger['error']('VoiceMailMessage,\x20%s,\x20%s',_0x247c0b,_0x5aa153);_0x20ccac(_0x5aa153);});});}
\ No newline at end of file
+var _0xd7b5=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util'];(function(_0xd129ce,_0x3faef0){var _0x2c5e6e=function(_0x4c52fb){while(--_0x4c52fb){_0xd129ce['push'](_0xd129ce['shift']());}};_0x2c5e6e(++_0x3faef0);}(_0xd7b5,0x17e));var _0x5d7b=function(_0x4ea36c,_0x3807d1){_0x4ea36c=_0x4ea36c-0x0;var _0x1f9007=_0xd7b5[_0x4ea36c];return _0x1f9007;};'use strict';var _=require(_0x5d7b('0x0'));var util=require(_0x5d7b('0x1'));var moment=require(_0x5d7b('0x2'));var BPromise=require(_0x5d7b('0x3'));var rs=require(_0x5d7b('0x4'));var fs=require('fs');var Redis=require(_0x5d7b('0x5'));var db=require(_0x5d7b('0x6'))['db'];var utils=require(_0x5d7b('0x7'));var logger=require(_0x5d7b('0x8'))(_0x5d7b('0x9'));var config=require(_0x5d7b('0xa'));var jayson=require(_0x5d7b('0xb'));var client=jayson[_0x5d7b('0xc')][_0x5d7b('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x35125,_0x3cc012,_0x3cfe81){return new BPromise(function(_0x12d706,_0x23f6cd){return client['request'](_0x35125,_0x3cfe81)['then'](function(_0x5153f5){logger[_0x5d7b('0xe')](_0x5d7b('0xf'),_0x3cc012,_0x5d7b('0x10'));logger[_0x5d7b('0x11')](_0x5d7b('0x12'),_0x3cc012,'request\x20sent',JSON[_0x5d7b('0x13')](_0x5153f5));if(_0x5153f5[_0x5d7b('0x14')]){if(_0x5153f5[_0x5d7b('0x14')]['code']===0x1f4){logger[_0x5d7b('0x14')](_0x5d7b('0xf'),_0x3cc012,_0x5153f5[_0x5d7b('0x14')]['message']);return _0x23f6cd(_0x5153f5[_0x5d7b('0x14')][_0x5d7b('0x15')]);}logger[_0x5d7b('0x14')](_0x5d7b('0xf'),_0x3cc012,_0x5153f5[_0x5d7b('0x14')][_0x5d7b('0x15')]);return _0x12d706(_0x5153f5[_0x5d7b('0x14')][_0x5d7b('0x15')]);}else{logger[_0x5d7b('0xe')](_0x5d7b('0xf'),_0x3cc012,_0x5d7b('0x10'));_0x12d706(_0x5153f5[_0x5d7b('0x16')][_0x5d7b('0x15')]);}})[_0x5d7b('0x17')](function(_0x445808){logger[_0x5d7b('0x14')](_0x5d7b('0xf'),_0x3cc012,_0x445808);_0x23f6cd(_0x445808);});});}
\ No newline at end of file
index a3d92ca..299ebf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1b2=['/:id/sounds','getSounds','post','create','put','delete','destroy','/:id/sounds/:id2','removeSound','exports','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','get','isAuthenticated','index','/:id'];(function(_0xf97d55,_0x1fb9f6){var _0x315a26=function(_0x4b1c72){while(--_0x4b1c72){_0xf97d55['push'](_0xf97d55['shift']());}};_0x315a26(++_0x1fb9f6);}(_0xa1b2,0x1d8));var _0x2a1b=function(_0x2e42fb,_0x3b5046){_0x2e42fb=_0x2e42fb-0x0;var _0x132ea0=_0xa1b2[_0x2e42fb];return _0x132ea0;};'use strict';var multer=require('multer');var util=require(_0x2a1b('0x0'));var path=require(_0x2a1b('0x1'));var timeout=require('connect-timeout');var express=require(_0x2a1b('0x2'));var router=express['Router']();var fs_extra=require(_0x2a1b('0x3'));var auth=require(_0x2a1b('0x4'));var interaction=require(_0x2a1b('0x5'));var config=require(_0x2a1b('0x6'));var controller=require(_0x2a1b('0x7'));router[_0x2a1b('0x8')]('/',auth[_0x2a1b('0x9')](),controller[_0x2a1b('0xa')]);router[_0x2a1b('0x8')](_0x2a1b('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x2a1b('0x8')](_0x2a1b('0xc'),auth[_0x2a1b('0x9')](),controller[_0x2a1b('0xd')]);router[_0x2a1b('0xe')]('/',auth[_0x2a1b('0x9')](),controller[_0x2a1b('0xf')]);router['post'](_0x2a1b('0xc'),auth[_0x2a1b('0x9')](),controller['addSound']);router[_0x2a1b('0x10')]('/:id',auth[_0x2a1b('0x9')](),controller['update']);router[_0x2a1b('0x11')](_0x2a1b('0xb'),auth[_0x2a1b('0x9')](),controller[_0x2a1b('0x12')]);router['delete'](_0x2a1b('0x13'),auth['isAuthenticated'](),controller[_0x2a1b('0x14')]);module[_0x2a1b('0x15')]=router;
\ No newline at end of file
+var _0x1113=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','/:id/sounds','getSounds','post','addSound','put','delete','destroy','/:id/sounds/:id2','removeSound','multer'];(function(_0x3cdcbe,_0x450f7b){var _0x5846a1=function(_0x5d2030){while(--_0x5d2030){_0x3cdcbe['push'](_0x3cdcbe['shift']());}};_0x5846a1(++_0x450f7b);}(_0x1113,0x149));var _0x3111=function(_0x3acb67,_0xbe0faa){_0x3acb67=_0x3acb67-0x0;var _0x534936=_0x1113[_0x3acb67];return _0x534936;};'use strict';var multer=require(_0x3111('0x0'));var util=require(_0x3111('0x1'));var path=require(_0x3111('0x2'));var timeout=require(_0x3111('0x3'));var express=require(_0x3111('0x4'));var router=express[_0x3111('0x5')]();var fs_extra=require(_0x3111('0x6'));var auth=require(_0x3111('0x7'));var interaction=require(_0x3111('0x8'));var config=require(_0x3111('0x9'));var controller=require('./voiceMusicOnHold.controller');router[_0x3111('0xa')]('/',auth[_0x3111('0xb')](),controller['index']);router[_0x3111('0xa')](_0x3111('0xc'),auth[_0x3111('0xb')](),controller['show']);router[_0x3111('0xa')](_0x3111('0xd'),auth[_0x3111('0xb')](),controller[_0x3111('0xe')]);router[_0x3111('0xf')]('/',auth[_0x3111('0xb')](),controller['create']);router[_0x3111('0xf')](_0x3111('0xd'),auth['isAuthenticated'](),controller[_0x3111('0x10')]);router[_0x3111('0x11')](_0x3111('0xc'),auth[_0x3111('0xb')](),controller['update']);router[_0x3111('0x12')]('/:id',auth[_0x3111('0xb')](),controller[_0x3111('0x13')]);router['delete'](_0x3111('0x14'),auth['isAuthenticated'](),controller[_0x3111('0x15')]);module['exports']=router;
\ No newline at end of file
index 27d5547..4810632 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56cf=['ENUM','custom','mp3nb','quietmp3','files','alpha','TIMESTAMP','BOOLEAN','sequelize','exports','STRING','name'];(function(_0x1b33d5,_0x37bfa){var _0x578d2a=function(_0x1a1683){while(--_0x1a1683){_0x1b33d5['push'](_0x1b33d5['shift']());}};_0x578d2a(++_0x37bfa);}(_0x56cf,0x1d0));var _0xf56c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x56cf[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xf56c('0x0'));module[_0xf56c('0x1')]={'name':{'type':Sequelize[_0xf56c('0x2')],'allowNull':![],'unique':_0xf56c('0x3')},'mode':{'type':Sequelize[_0xf56c('0x4')](_0xf56c('0x5'),'files',_0xf56c('0x6'),'quietmp3nb',_0xf56c('0x7'),'mp3'),'allowNull':!![],'defaultValue':_0xf56c('0x8')},'directory':{'type':Sequelize[_0xf56c('0x2')],'allowNull':!![]},'application':{'type':Sequelize[_0xf56c('0x2')],'allowNull':!![]},'digit':{'type':Sequelize[_0xf56c('0x2')],'allowNull':!![]},'sort':{'type':Sequelize[_0xf56c('0x2')],'allowNull':!![],'defaultValue':_0xf56c('0x9')},'format':{'type':Sequelize[_0xf56c('0x2')],'allowNull':!![]},'stamp':{'type':_0xf56c('0xa')},'defaultEntry':{'type':Sequelize[_0xf56c('0xb')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xaf9d=['BOOLEAN','exports','STRING','name','ENUM','custom','files','mp3nb','quietmp3','mp3','alpha'];(function(_0x58381c,_0x3b9374){var _0x1a7440=function(_0x2bc7f1){while(--_0x2bc7f1){_0x58381c['push'](_0x58381c['shift']());}};_0x1a7440(++_0x3b9374);}(_0xaf9d,0x64));var _0xdaf9=function(_0x58716f,_0x3be8ea){_0x58716f=_0x58716f-0x0;var _0x41325c=_0xaf9d[_0x58716f];return _0x41325c;};'use strict';var Sequelize=require('sequelize');module[_0xdaf9('0x0')]={'name':{'type':Sequelize[_0xdaf9('0x1')],'allowNull':![],'unique':_0xdaf9('0x2')},'mode':{'type':Sequelize[_0xdaf9('0x3')](_0xdaf9('0x4'),_0xdaf9('0x5'),_0xdaf9('0x6'),'quietmp3nb',_0xdaf9('0x7'),_0xdaf9('0x8')),'allowNull':!![],'defaultValue':_0xdaf9('0x5')},'directory':{'type':Sequelize[_0xdaf9('0x1')],'allowNull':!![]},'application':{'type':Sequelize[_0xdaf9('0x1')],'allowNull':!![]},'digit':{'type':Sequelize[_0xdaf9('0x1')],'allowNull':!![]},'sort':{'type':Sequelize[_0xdaf9('0x1')],'allowNull':!![],'defaultValue':_0xdaf9('0x9')},'format':{'type':Sequelize[_0xdaf9('0x1')],'allowNull':!![]},'stamp':{'type':'TIMESTAMP'},'defaultEntry':{'type':Sequelize[_0xdaf9('0xa')],'defaultValue':0x0}};
\ No newline at end of file
index 1455e07..3f3ce2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4f2=['bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../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','undefined','count','limit','set','Content-Range','apply','save','then','destroy','MusicOnHolds','UserProfileResource','error','name','index','map','VoiceMusicOnHold','fieldName','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','options','include','rows','catch','params','keys','length','includeAll','update','body','find','create','sequelize','mode','files','directory','root','server/files/moh','mkdirSync','0777','get','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','unlinkSync','join','rmdirSync','Sequelize','ValidationError','message','addSound','transaction','save_name','converted_format','createdAt','server/files/sounds/converted','format','%s.%s','basename','extname','removeSound','findOne','id2','getSounds','Sound','rawAttributes','nolimit','eml-format','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x7538c5,_0xa5d8ac){var _0x8b56be=function(_0x2036c0){while(--_0x2036c0){_0x7538c5['push'](_0x7538c5['shift']());}};_0x8b56be(++_0xa5d8ac);}(_0xd4f2,0x1bb));var _0x2d4f=function(_0x1e86c3,_0x121d0f){_0x1e86c3=_0x1e86c3-0x0;var _0x18ae8b=_0xd4f2[_0x1e86c3];return _0x18ae8b;};'use strict';var emlformat=require(_0x2d4f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2d4f('0x1'));var jsonpatch=require(_0x2d4f('0x2'));var rp=require(_0x2d4f('0x3'));var moment=require(_0x2d4f('0x4'));var BPromise=require(_0x2d4f('0x5'));var Mustache=require(_0x2d4f('0x6'));var util=require('util');var path=require(_0x2d4f('0x7'));var sox=require(_0x2d4f('0x8'));var csv=require(_0x2d4f('0x9'));var ejs=require(_0x2d4f('0xa'));var fs=require('fs');var fs_extra=require(_0x2d4f('0xb'));var _=require(_0x2d4f('0xc'));var squel=require(_0x2d4f('0xd'));var crypto=require(_0x2d4f('0xe'));var jsforce=require(_0x2d4f('0xf'));var deskjs=require(_0x2d4f('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2d4f('0x11'));var Redis=require('ioredis');var authService=require(_0x2d4f('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x2d4f('0x13'));var hardwareService=require(_0x2d4f('0x14'));var logger=require(_0x2d4f('0x15'))(_0x2d4f('0x16'));var utils=require(_0x2d4f('0x17'));var config=require(_0x2d4f('0x18'));var licenseUtil=require(_0x2d4f('0x19'));var db=require(_0x2d4f('0x1a'))['db'];function respondWithStatusCode(_0x150d08,_0x32abc1){_0x32abc1=_0x32abc1||0xcc;return function(_0x18676e){if(_0x18676e){return _0x150d08[_0x2d4f('0x1b')](_0x32abc1);}return _0x150d08[_0x2d4f('0x1c')](_0x32abc1)[_0x2d4f('0x1d')]();};}function respondWithResult(_0x465024,_0x3536c9){_0x3536c9=_0x3536c9||0xc8;return function(_0x31494e){if(_0x31494e){return _0x465024[_0x2d4f('0x1c')](_0x3536c9)[_0x2d4f('0x1e')](_0x31494e);}};}function respondWithFilteredResult(_0xf7ee02,_0x4df064){return function(_0x5352f8){if(_0x5352f8){var _0x2f5eef=typeof _0x4df064[_0x2d4f('0x1f')]===_0x2d4f('0x20')&&typeof _0x4df064['limit']===_0x2d4f('0x20');var _0xa4a600=_0x5352f8[_0x2d4f('0x21')];var _0x39c541=_0x2f5eef?0x0:_0x4df064[_0x2d4f('0x1f')];var _0x3a09c2=_0x2f5eef?_0x5352f8[_0x2d4f('0x21')]:_0x4df064[_0x2d4f('0x1f')]+_0x4df064[_0x2d4f('0x22')];var _0x76de1a;if(_0x3a09c2>=_0xa4a600){_0x3a09c2=_0xa4a600;_0x76de1a=0xc8;}else{_0x76de1a=0xce;}_0xf7ee02[_0x2d4f('0x1c')](_0x76de1a);return _0xf7ee02[_0x2d4f('0x23')](_0x2d4f('0x24'),_0x39c541+'-'+_0x3a09c2+'/'+_0xa4a600)[_0x2d4f('0x1e')](_0x5352f8);}return null;};}function patchUpdates(_0x27d29c){return function(_0x5adcde){try{jsonpatch[_0x2d4f('0x25')](_0x5adcde,_0x27d29c,!![]);}catch(_0x47c869){return BPromise['reject'](_0x47c869);}return _0x5adcde[_0x2d4f('0x26')]();};}function saveUpdates(_0x499a2f,_0x5b7187){return function(_0x3bbc8a){if(_0x3bbc8a){return _0x3bbc8a['update'](_0x499a2f)[_0x2d4f('0x27')](function(_0x2c0530){return _0x2c0530;});}return null;};}function removeEntity(_0x43f0a9,_0x451bd8){return function(_0x48c119){if(_0x48c119){return _0x48c119[_0x2d4f('0x28')]()[_0x2d4f('0x27')](function(){var _0x587c65=_0x48c119['get']({'plain':!![]});var _0x4e30b8=_0x2d4f('0x29');return db[_0x2d4f('0x2a')][_0x2d4f('0x28')]({'where':{'type':_0x4e30b8,'resourceId':_0x587c65['id']}})['then'](function(){return _0x48c119;});})[_0x2d4f('0x27')](function(){_0x43f0a9[_0x2d4f('0x1c')](0xcc)[_0x2d4f('0x1d')]();});}};}function handleEntityNotFound(_0x4ab1f9,_0x285ed1){return function(_0x548255){if(!_0x548255){_0x4ab1f9[_0x2d4f('0x1b')](0x194);}return _0x548255;};}function handleError(_0x515d74,_0x4a9310){_0x4a9310=_0x4a9310||0x1f4;return function(_0x24050e){logger[_0x2d4f('0x2b')](_0x24050e['stack']);if(_0x24050e[_0x2d4f('0x2c')]){delete _0x24050e[_0x2d4f('0x2c')];}_0x515d74[_0x2d4f('0x1c')](_0x4a9310)['send'](_0x24050e);};}exports[_0x2d4f('0x2d')]=function(_0x273e4f,_0x5f5503){var _0x119c21={},_0xc100b9={},_0x3cc518={'count':0x0,'rows':[]};var _0x54f82b=_[_0x2d4f('0x2e')](db[_0x2d4f('0x2f')]['rawAttributes'],function(_0x1560be){return{'name':_0x1560be[_0x2d4f('0x30')],'type':_0x1560be['type'][_0x2d4f('0x31')]};});_0xc100b9[_0x2d4f('0x32')]=_[_0x2d4f('0x2e')](_0x54f82b,_0x2d4f('0x2c'));_0xc100b9[_0x2d4f('0x33')]=_['keys'](_0x273e4f[_0x2d4f('0x33')]);_0xc100b9[_0x2d4f('0x34')]=_[_0x2d4f('0x35')](_0xc100b9[_0x2d4f('0x32')],_0xc100b9[_0x2d4f('0x33')]);_0x119c21[_0x2d4f('0x36')]=_[_0x2d4f('0x35')](_0xc100b9[_0x2d4f('0x32')],qs[_0x2d4f('0x37')](_0x273e4f['query']['fields']));_0x119c21[_0x2d4f('0x36')]=_0x119c21[_0x2d4f('0x36')]['length']?_0x119c21[_0x2d4f('0x36')]:_0xc100b9[_0x2d4f('0x32')];if(!_0x273e4f['query'][_0x2d4f('0x38')]('nolimit')){_0x119c21[_0x2d4f('0x22')]=qs[_0x2d4f('0x22')](_0x273e4f[_0x2d4f('0x33')][_0x2d4f('0x22')]);_0x119c21[_0x2d4f('0x1f')]=qs[_0x2d4f('0x1f')](_0x273e4f[_0x2d4f('0x33')][_0x2d4f('0x1f')]);}_0x119c21[_0x2d4f('0x39')]=qs[_0x2d4f('0x3a')](_0x273e4f['query'][_0x2d4f('0x3a')]);delete _0x273e4f[_0x2d4f('0x33')][_0x2d4f('0x3a')];_0x119c21[_0x2d4f('0x3b')]=qs[_0x2d4f('0x34')](_[_0x2d4f('0x3c')](_0x273e4f[_0x2d4f('0x33')],_0xc100b9[_0x2d4f('0x34')]),_0x54f82b);if(_0x273e4f[_0x2d4f('0x33')][_0x2d4f('0x3d')]){_0x119c21['where']=_[_0x2d4f('0x3e')](_0x119c21[_0x2d4f('0x3b')],{'$or':_[_0x2d4f('0x2e')](_0x54f82b,function(_0x16607f){if(_0x16607f[_0x2d4f('0x3f')]!==_0x2d4f('0x40')){var _0x4236f1={};_0x4236f1[_0x16607f[_0x2d4f('0x2c')]]={'$like':'%'+_0x273e4f[_0x2d4f('0x33')][_0x2d4f('0x3d')]+'%'};return _0x4236f1;}})});}_0x119c21=_[_0x2d4f('0x3e')]({},_0x119c21,_0x273e4f[_0x2d4f('0x41')]);var _0x1762cd={'where':_0x119c21[_0x2d4f('0x3b')]};return db['VoiceMusicOnHold'][_0x2d4f('0x21')](_0x1762cd)[_0x2d4f('0x27')](function(_0x1ce073){_0x3cc518[_0x2d4f('0x21')]=_0x1ce073;if(_0x273e4f[_0x2d4f('0x33')]['includeAll']){_0x119c21[_0x2d4f('0x42')]=[{'all':!![]}];}return db['VoiceMusicOnHold']['findAll'](_0x119c21);})['then'](function(_0x17dc68){_0x3cc518[_0x2d4f('0x43')]=_0x17dc68;return _0x3cc518;})[_0x2d4f('0x27')](respondWithFilteredResult(_0x5f5503,_0x119c21))[_0x2d4f('0x44')](handleError(_0x5f5503,null));};exports['show']=function(_0x5c4635,_0x135aae){var _0xf7397f={'raw':![],'where':{'id':_0x5c4635[_0x2d4f('0x45')]['id']}},_0x55c101={};_0x55c101[_0x2d4f('0x32')]=_[_0x2d4f('0x46')](db['VoiceMusicOnHold']['rawAttributes']);_0x55c101['query']=_[_0x2d4f('0x46')](_0x5c4635[_0x2d4f('0x33')]);_0x55c101['filters']=_['intersection'](_0x55c101[_0x2d4f('0x32')],_0x55c101[_0x2d4f('0x33')]);_0xf7397f[_0x2d4f('0x36')]=_['intersection'](_0x55c101['model'],qs['fields'](_0x5c4635[_0x2d4f('0x33')][_0x2d4f('0x37')]));_0xf7397f[_0x2d4f('0x36')]=_0xf7397f[_0x2d4f('0x36')][_0x2d4f('0x47')]?_0xf7397f[_0x2d4f('0x36')]:_0x55c101[_0x2d4f('0x32')];if(_0x5c4635[_0x2d4f('0x33')][_0x2d4f('0x48')]){_0xf7397f['include']=[{'all':!![]}];}_0xf7397f=_['merge']({},_0xf7397f,_0x5c4635['options']);return db[_0x2d4f('0x2f')]['find'](_0xf7397f)[_0x2d4f('0x27')](handleEntityNotFound(_0x135aae,null))[_0x2d4f('0x27')](respondWithResult(_0x135aae,null))['catch'](handleError(_0x135aae,null));};exports[_0x2d4f('0x49')]=function(_0x445fc0,_0x5ca556){if(_0x445fc0[_0x2d4f('0x4a')]['id']){delete _0x445fc0[_0x2d4f('0x4a')]['id'];}return db[_0x2d4f('0x2f')][_0x2d4f('0x4b')]({'where':{'id':_0x445fc0[_0x2d4f('0x45')]['id']}})['then'](handleEntityNotFound(_0x5ca556,null))['then'](saveUpdates(_0x445fc0[_0x2d4f('0x4a')],null))[_0x2d4f('0x27')](respondWithResult(_0x5ca556,null))['catch'](handleError(_0x5ca556,null));};exports[_0x2d4f('0x4c')]=function(_0x3d797d,_0x3d748a,_0x2abe4b){return db[_0x2d4f('0x4d')]['transaction'](function(_0x9d922){if(_0x3d797d[_0x2d4f('0x4a')][_0x2d4f('0x4e')]===_0x2d4f('0x4f')){_0x3d797d['body'][_0x2d4f('0x50')]=path['join'](config[_0x2d4f('0x51')],_0x2d4f('0x52'),_0x3d797d[_0x2d4f('0x4a')][_0x2d4f('0x2c')]);}return db['VoiceMusicOnHold'][_0x2d4f('0x4c')](_0x3d797d[_0x2d4f('0x4a')],{'transaction':_0x9d922})['then'](function(_0x344716){if(_0x3d797d[_0x2d4f('0x4a')][_0x2d4f('0x4e')]===_0x2d4f('0x4f')){fs[_0x2d4f('0x53')](_0x344716[_0x2d4f('0x50')],parseInt(_0x2d4f('0x54'),0x8));}var _0x2cdbc8=_0x3d797d['user'][_0x2d4f('0x55')]({'plain':!![]});if(!_0x2cdbc8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2cdbc8['role']==='user'){var _0x371879=_0x344716[_0x2d4f('0x55')]({'plain':!![]});return db[_0x2d4f('0x56')][_0x2d4f('0x4b')]({'where':{'name':_0x2d4f('0x29'),'userProfileId':_0x2cdbc8['userProfileId']},'raw':!![]})['then'](function(_0x39585f){if(_0x39585f&&_0x39585f[_0x2d4f('0x57')]===0x0){return db[_0x2d4f('0x2a')][_0x2d4f('0x4c')]({'name':_0x371879[_0x2d4f('0x2c')],'resourceId':_0x371879['id'],'type':_0x39585f['name'],'sectionId':_0x39585f['id']},{})[_0x2d4f('0x27')](function(){return _0x344716;});}else{return _0x344716;}})[_0x2d4f('0x44')](function(_0x24789d){logger['error'](_0x2d4f('0x58'),_0x24789d);});}return _0x344716;});})[_0x2d4f('0x27')](respondWithResult(_0x3d748a,0xc9))[_0x2d4f('0x44')](handleError(_0x3d748a,null));};exports[_0x2d4f('0x28')]=function(_0x5ced38,_0x2fd55f,_0x2b454d){var _0x1171ce;return db[_0x2d4f('0x2f')][_0x2d4f('0x4b')]({'where':{'id':_0x5ced38[_0x2d4f('0x45')]['id']}})[_0x2d4f('0x27')](function(_0x269dbe){if(_0x269dbe){return db[_0x2d4f('0x4d')]['transaction'](function(_0xf9c020){return _0x269dbe[_0x2d4f('0x28')]({'transaction':_0xf9c020,'raw':!![]})[_0x2d4f('0x27')](function(_0x177ad3){if(_0x177ad3[_0x2d4f('0x50')]){fs['readdirSync'](_0x177ad3['directory'])['forEach'](function(_0x50ebdf){fs[_0x2d4f('0x59')](path[_0x2d4f('0x5a')](_0x177ad3['directory'],_0x50ebdf));});fs[_0x2d4f('0x5b')](_0x177ad3['directory']);}return _0x177ad3;});})[_0x2d4f('0x44')](function(_0x27c28d){throw new db[(_0x2d4f('0x5c'))][(_0x2d4f('0x5d'))](_0x27c28d[_0x2d4f('0x5e')]);});}})[_0x2d4f('0x27')](handleEntityNotFound(_0x2fd55f,null))['then'](removeEntity(_0x2fd55f,null))[_0x2d4f('0x44')](handleError(_0x2fd55f,null));};exports[_0x2d4f('0x5f')]=function(_0x202923,_0x716077,_0xe8721b){return db['sequelize'][_0x2d4f('0x60')](function(_0x524575){var _0x3b51e6;return db[_0x2d4f('0x2f')][_0x2d4f('0x4b')]({'where':{'id':_0x202923[_0x2d4f('0x45')]['id']}})[_0x2d4f('0x27')](function(_0x35f60b){if(_0x35f60b){_0x3b51e6=_0x35f60b;return _0x35f60b['addSound'](_0x202923['body']['id'],{'transaction':_0x524575});}})[_0x2d4f('0x27')](function(_0x43546f){if(_0x43546f){return db['Sound']['findOne']({'where':{'id':_0x202923['body']['id']},'attributes':['id',_0x2d4f('0x2c'),_0x2d4f('0x61'),_0x2d4f('0x62'),_0x2d4f('0x63')],'raw':!![]});}})[_0x2d4f('0x27')](function(_0x317606){if(_0x317606){var _0x53bded=path[_0x2d4f('0x5a')](config['root'],_0x2d4f('0x64'),util[_0x2d4f('0x65')](_0x2d4f('0x66'),path[_0x2d4f('0x67')](_0x317606['save_name'],path[_0x2d4f('0x68')](_0x317606[_0x2d4f('0x61')])),_0x317606[_0x2d4f('0x62')]));var _0x1bced8=path['join'](config['root'],_0x2d4f('0x52'),_0x3b51e6[_0x2d4f('0x2c')],util[_0x2d4f('0x65')](_0x2d4f('0x66'),_0x317606[_0x2d4f('0x2c')],_0x317606['converted_format']));fs['symlinkSync'](_0x53bded,_0x1bced8);return _0x317606;}})[_0x2d4f('0x44')](function(_0x48f1fb){throw new db['Sequelize'][(_0x2d4f('0x5d'))](_0x48f1fb[_0x2d4f('0x5e')]);});})[_0x2d4f('0x27')](handleEntityNotFound(_0x716077,null))[_0x2d4f('0x27')](respondWithResult(_0x716077,0xc9))['catch'](handleError(_0x716077,null));};exports[_0x2d4f('0x69')]=function(_0x6d82c2,_0x482f48,_0x1b3406){return db[_0x2d4f('0x4d')][_0x2d4f('0x60')](function(_0x3b5ee4){var _0x2d313a;return db['VoiceMusicOnHold'][_0x2d4f('0x6a')]({'where':{'id':_0x6d82c2[_0x2d4f('0x45')]['id']}})[_0x2d4f('0x27')](handleEntityNotFound(_0x482f48,null))[_0x2d4f('0x27')](function(_0x360d48){if(_0x360d48){_0x2d313a=_0x360d48;return _0x360d48[_0x2d4f('0x69')](_0x6d82c2['params'][_0x2d4f('0x6b')]);}})[_0x2d4f('0x27')](function(_0x2043f3){if(_0x2043f3){return db['Sound'][_0x2d4f('0x6a')]({'where':{'id':_0x6d82c2[_0x2d4f('0x45')]['id2']},'attributes':['id',_0x2d4f('0x2c'),'save_name',_0x2d4f('0x62'),_0x2d4f('0x63')],'raw':!![]});}})['then'](function(_0x81d96){if(_0x81d96){fs['unlinkSync'](path[_0x2d4f('0x5a')](_0x2d313a[_0x2d4f('0x50')],util[_0x2d4f('0x65')](_0x2d4f('0x66'),_0x81d96[_0x2d4f('0x2c')],_0x81d96[_0x2d4f('0x62')])));return _0x81d96;}})[_0x2d4f('0x44')](function(_0x489cbd){throw new db[(_0x2d4f('0x5c'))]['ValidationError'](_0x489cbd[_0x2d4f('0x5e')]);});})[_0x2d4f('0x27')](handleEntityNotFound(_0x482f48,null))[_0x2d4f('0x27')](respondWithStatusCode(_0x482f48,0xcc))[_0x2d4f('0x44')](handleError(_0x482f48,null));};exports[_0x2d4f('0x6c')]=function(_0x314559,_0x28e9b2,_0x434e41){var _0xfce87d={};var _0x323397={};var _0xe0aedf;var _0x36218a;return db[_0x2d4f('0x2f')]['findOne']({'where':{'id':_0x314559[_0x2d4f('0x45')]['id']}})['then'](handleEntityNotFound(_0x28e9b2,null))['then'](function(_0x59ba44){if(_0x59ba44){_0xe0aedf=_0x59ba44;_0x323397['model']=_[_0x2d4f('0x46')](db[_0x2d4f('0x6d')][_0x2d4f('0x6e')]);_0x323397[_0x2d4f('0x33')]=_['keys'](_0x314559[_0x2d4f('0x33')]);_0x323397[_0x2d4f('0x34')]=_[_0x2d4f('0x35')](_0x323397['model'],_0x323397[_0x2d4f('0x33')]);_0xfce87d['attributes']=_[_0x2d4f('0x35')](_0x323397[_0x2d4f('0x32')],qs[_0x2d4f('0x37')](_0x314559['query']['fields']));_0xfce87d[_0x2d4f('0x36')]=_0xfce87d[_0x2d4f('0x36')]['length']?_0xfce87d[_0x2d4f('0x36')]:_0x323397['model'];_0xfce87d[_0x2d4f('0x39')]=qs[_0x2d4f('0x3a')](_0x314559[_0x2d4f('0x33')][_0x2d4f('0x3a')]);_0xfce87d['where']=qs[_0x2d4f('0x34')](_['pick'](_0x314559[_0x2d4f('0x33')],_0x323397[_0x2d4f('0x34')]));if(_0x314559['query'][_0x2d4f('0x3d')]){_0xfce87d[_0x2d4f('0x3b')]=_['merge'](_0xfce87d[_0x2d4f('0x3b')],{'$or':_['map'](_0xfce87d[_0x2d4f('0x36')],function(_0x1993ca){var _0x2ac021={};_0x2ac021[_0x1993ca]={'$like':'%'+_0x314559[_0x2d4f('0x33')][_0x2d4f('0x3d')]+'%'};return _0x2ac021;})});}_0xfce87d=_[_0x2d4f('0x3e')]({},_0xfce87d,_0x314559[_0x2d4f('0x41')]);return _0xe0aedf[_0x2d4f('0x6c')](_0xfce87d);}})[_0x2d4f('0x27')](function(_0x1ce5b1){if(_0x1ce5b1){_0x36218a=_0x1ce5b1[_0x2d4f('0x47')];if(!_0x314559[_0x2d4f('0x33')][_0x2d4f('0x38')](_0x2d4f('0x6f'))){_0xfce87d[_0x2d4f('0x22')]=qs[_0x2d4f('0x22')](_0x314559[_0x2d4f('0x33')][_0x2d4f('0x22')]);_0xfce87d[_0x2d4f('0x1f')]=qs[_0x2d4f('0x1f')](_0x314559[_0x2d4f('0x33')][_0x2d4f('0x1f')]);}return _0xe0aedf['getSounds'](_0xfce87d);}})['then'](function(_0x3a7fd8){if(_0x3a7fd8){return _0x3a7fd8?{'count':_0x36218a,'rows':_0x3a7fd8}:null;}})['then'](respondWithResult(_0x28e9b2,null))['catch'](handleError(_0x28e9b2,null));};
\ No newline at end of file
+var _0x9a92=['rows','catch','show','rawAttributes','includeAll','body','find','params','create','sequelize','transaction','mode','directory','files','mkdirSync','0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','forEach','unlinkSync','rmdirSync','Sequelize','ValidationError','message','addSound','findOne','save_name','converted_format','createdAt','join','root','server/files/sounds/converted','format','extname','server/files/moh','%s.%s','symlinkSync','removeSound','id2','getSounds','Sound','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','path','to-csv','lodash','squel','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','offset','set','Content-Range','save','then','get','MusicOnHolds','UserProfileResource','destroy','sendStatus','error','stack','name','map','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','count','include','VoiceMusicOnHold','findAll'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x9a92,0x1e2));var _0x29a9=function(_0x1254d9,_0x1860a3){_0x1254d9=_0x1254d9-0x0;var _0xd37e6f=_0x9a92[_0x1254d9];return _0xd37e6f;};'use strict';var emlformat=require(_0x29a9('0x0'));var rimraf=require(_0x29a9('0x1'));var zipdir=require(_0x29a9('0x2'));var jsonpatch=require(_0x29a9('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x29a9('0x4'));var util=require(_0x29a9('0x5'));var path=require(_0x29a9('0x6'));var sox=require('sox');var csv=require(_0x29a9('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x29a9('0x8'));var squel=require(_0x29a9('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x29a9('0xa'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x29a9('0xb'));var Redis=require(_0x29a9('0xc'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x29a9('0xd'));var hardwareService=require(_0x29a9('0xe'));var logger=require(_0x29a9('0xf'))(_0x29a9('0x10'));var utils=require(_0x29a9('0x11'));var config=require(_0x29a9('0x12'));var licenseUtil=require(_0x29a9('0x13'));var db=require(_0x29a9('0x14'))['db'];function respondWithStatusCode(_0x40aa64,_0x3ea1d8){_0x3ea1d8=_0x3ea1d8||0xcc;return function(_0x10ef0b){if(_0x10ef0b){return _0x40aa64['sendStatus'](_0x3ea1d8);}return _0x40aa64[_0x29a9('0x15')](_0x3ea1d8)[_0x29a9('0x16')]();};}function respondWithResult(_0x2bd291,_0x5280f0){_0x5280f0=_0x5280f0||0xc8;return function(_0x214c86){if(_0x214c86){return _0x2bd291[_0x29a9('0x15')](_0x5280f0)[_0x29a9('0x17')](_0x214c86);}};}function respondWithFilteredResult(_0x3d8be7,_0xc3c70c){return function(_0x41e9b9){if(_0x41e9b9){var _0x167a9f=typeof _0xc3c70c['offset']===_0x29a9('0x18')&&typeof _0xc3c70c[_0x29a9('0x19')]===_0x29a9('0x18');var _0x3e4375=_0x41e9b9['count'];var _0x1832e1=_0x167a9f?0x0:_0xc3c70c[_0x29a9('0x1a')];var _0x192ff0=_0x167a9f?_0x41e9b9['count']:_0xc3c70c[_0x29a9('0x1a')]+_0xc3c70c['limit'];var _0x459ed8;if(_0x192ff0>=_0x3e4375){_0x192ff0=_0x3e4375;_0x459ed8=0xc8;}else{_0x459ed8=0xce;}_0x3d8be7[_0x29a9('0x15')](_0x459ed8);return _0x3d8be7[_0x29a9('0x1b')](_0x29a9('0x1c'),_0x1832e1+'-'+_0x192ff0+'/'+_0x3e4375)[_0x29a9('0x17')](_0x41e9b9);}return null;};}function patchUpdates(_0xac7df0){return function(_0x166cf2){try{jsonpatch['apply'](_0x166cf2,_0xac7df0,!![]);}catch(_0x28b1aa){return BPromise['reject'](_0x28b1aa);}return _0x166cf2[_0x29a9('0x1d')]();};}function saveUpdates(_0x5db17c,_0x72c407){return function(_0x290613){if(_0x290613){return _0x290613['update'](_0x5db17c)['then'](function(_0x431a4b){return _0x431a4b;});}return null;};}function removeEntity(_0x4e3e1d,_0x395d8d){return function(_0x421f21){if(_0x421f21){return _0x421f21['destroy']()[_0x29a9('0x1e')](function(){var _0x1f2e4b=_0x421f21[_0x29a9('0x1f')]({'plain':!![]});var _0x4904c1=_0x29a9('0x20');return db[_0x29a9('0x21')][_0x29a9('0x22')]({'where':{'type':_0x4904c1,'resourceId':_0x1f2e4b['id']}})[_0x29a9('0x1e')](function(){return _0x421f21;});})['then'](function(){_0x4e3e1d[_0x29a9('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x53a965,_0x42c764){return function(_0x2a8a91){if(!_0x2a8a91){_0x53a965[_0x29a9('0x23')](0x194);}return _0x2a8a91;};}function handleError(_0x42364b,_0x1558d7){_0x1558d7=_0x1558d7||0x1f4;return function(_0x2e1053){logger[_0x29a9('0x24')](_0x2e1053[_0x29a9('0x25')]);if(_0x2e1053['name']){delete _0x2e1053[_0x29a9('0x26')];}_0x42364b['status'](_0x1558d7)['send'](_0x2e1053);};}exports['index']=function(_0x902f69,_0x454de6){var _0x31d970={},_0x1d4d00={},_0x59a184={'count':0x0,'rows':[]};var _0x56bdc4=_[_0x29a9('0x27')](db['VoiceMusicOnHold']['rawAttributes'],function(_0x4aa2b1){return{'name':_0x4aa2b1['fieldName'],'type':_0x4aa2b1[_0x29a9('0x28')][_0x29a9('0x29')]};});_0x1d4d00[_0x29a9('0x2a')]=_[_0x29a9('0x27')](_0x56bdc4,_0x29a9('0x26'));_0x1d4d00[_0x29a9('0x2b')]=_[_0x29a9('0x2c')](_0x902f69[_0x29a9('0x2b')]);_0x1d4d00['filters']=_['intersection'](_0x1d4d00[_0x29a9('0x2a')],_0x1d4d00['query']);_0x31d970['attributes']=_[_0x29a9('0x2d')](_0x1d4d00[_0x29a9('0x2a')],qs['fields'](_0x902f69['query'][_0x29a9('0x2e')]));_0x31d970[_0x29a9('0x2f')]=_0x31d970[_0x29a9('0x2f')][_0x29a9('0x30')]?_0x31d970[_0x29a9('0x2f')]:_0x1d4d00[_0x29a9('0x2a')];if(!_0x902f69[_0x29a9('0x2b')][_0x29a9('0x31')]('nolimit')){_0x31d970['limit']=qs[_0x29a9('0x19')](_0x902f69[_0x29a9('0x2b')][_0x29a9('0x19')]);_0x31d970[_0x29a9('0x1a')]=qs[_0x29a9('0x1a')](_0x902f69[_0x29a9('0x2b')][_0x29a9('0x1a')]);}_0x31d970[_0x29a9('0x32')]=qs[_0x29a9('0x33')](_0x902f69[_0x29a9('0x2b')][_0x29a9('0x33')]);delete _0x902f69[_0x29a9('0x2b')][_0x29a9('0x33')];_0x31d970[_0x29a9('0x34')]=qs[_0x29a9('0x35')](_[_0x29a9('0x36')](_0x902f69[_0x29a9('0x2b')],_0x1d4d00['filters']),_0x56bdc4);if(_0x902f69[_0x29a9('0x2b')][_0x29a9('0x37')]){_0x31d970['where']=_[_0x29a9('0x38')](_0x31d970[_0x29a9('0x34')],{'$or':_[_0x29a9('0x27')](_0x56bdc4,function(_0x102fb3){if(_0x102fb3[_0x29a9('0x28')]!==_0x29a9('0x39')){var _0x5ccd2c={};_0x5ccd2c[_0x102fb3[_0x29a9('0x26')]]={'$like':'%'+_0x902f69[_0x29a9('0x2b')][_0x29a9('0x37')]+'%'};return _0x5ccd2c;}})});}_0x31d970=_[_0x29a9('0x38')]({},_0x31d970,_0x902f69[_0x29a9('0x3a')]);var _0x4b9517={'where':_0x31d970['where']};return db['VoiceMusicOnHold'][_0x29a9('0x3b')](_0x4b9517)['then'](function(_0x4a3adb){_0x59a184[_0x29a9('0x3b')]=_0x4a3adb;if(_0x902f69['query']['includeAll']){_0x31d970[_0x29a9('0x3c')]=[{'all':!![]}];}return db[_0x29a9('0x3d')][_0x29a9('0x3e')](_0x31d970);})[_0x29a9('0x1e')](function(_0x132b49){_0x59a184[_0x29a9('0x3f')]=_0x132b49;return _0x59a184;})[_0x29a9('0x1e')](respondWithFilteredResult(_0x454de6,_0x31d970))[_0x29a9('0x40')](handleError(_0x454de6,null));};exports[_0x29a9('0x41')]=function(_0x4e380a,_0x42fa1b){var _0x8481cf={'raw':![],'where':{'id':_0x4e380a['params']['id']}},_0x56af72={};_0x56af72[_0x29a9('0x2a')]=_[_0x29a9('0x2c')](db['VoiceMusicOnHold'][_0x29a9('0x42')]);_0x56af72[_0x29a9('0x2b')]=_['keys'](_0x4e380a[_0x29a9('0x2b')]);_0x56af72[_0x29a9('0x35')]=_[_0x29a9('0x2d')](_0x56af72[_0x29a9('0x2a')],_0x56af72[_0x29a9('0x2b')]);_0x8481cf[_0x29a9('0x2f')]=_['intersection'](_0x56af72['model'],qs[_0x29a9('0x2e')](_0x4e380a['query'][_0x29a9('0x2e')]));_0x8481cf['attributes']=_0x8481cf[_0x29a9('0x2f')]['length']?_0x8481cf['attributes']:_0x56af72[_0x29a9('0x2a')];if(_0x4e380a['query'][_0x29a9('0x43')]){_0x8481cf[_0x29a9('0x3c')]=[{'all':!![]}];}_0x8481cf=_['merge']({},_0x8481cf,_0x4e380a[_0x29a9('0x3a')]);return db['VoiceMusicOnHold']['find'](_0x8481cf)['then'](handleEntityNotFound(_0x42fa1b,null))[_0x29a9('0x1e')](respondWithResult(_0x42fa1b,null))[_0x29a9('0x40')](handleError(_0x42fa1b,null));};exports['update']=function(_0x2b13a9,_0x3b7887){if(_0x2b13a9[_0x29a9('0x44')]['id']){delete _0x2b13a9[_0x29a9('0x44')]['id'];}return db[_0x29a9('0x3d')][_0x29a9('0x45')]({'where':{'id':_0x2b13a9[_0x29a9('0x46')]['id']}})['then'](handleEntityNotFound(_0x3b7887,null))[_0x29a9('0x1e')](saveUpdates(_0x2b13a9['body'],null))[_0x29a9('0x1e')](respondWithResult(_0x3b7887,null))[_0x29a9('0x40')](handleError(_0x3b7887,null));};exports[_0x29a9('0x47')]=function(_0x4543a,_0x1799b7,_0x153bf0){return db[_0x29a9('0x48')][_0x29a9('0x49')](function(_0x2cd609){if(_0x4543a[_0x29a9('0x44')][_0x29a9('0x4a')]==='files'){_0x4543a[_0x29a9('0x44')][_0x29a9('0x4b')]=path['join'](config['root'],'server/files/moh',_0x4543a['body']['name']);}return db[_0x29a9('0x3d')][_0x29a9('0x47')](_0x4543a[_0x29a9('0x44')],{'transaction':_0x2cd609})['then'](function(_0x28bf87){if(_0x4543a[_0x29a9('0x44')][_0x29a9('0x4a')]===_0x29a9('0x4c')){fs[_0x29a9('0x4d')](_0x28bf87[_0x29a9('0x4b')],parseInt(_0x29a9('0x4e'),0x8));}var _0x3461a7=_0x4543a[_0x29a9('0x4f')]['get']({'plain':!![]});if(!_0x3461a7)throw new Error(_0x29a9('0x50'));if(_0x3461a7[_0x29a9('0x51')]===_0x29a9('0x4f')){var _0x467818=_0x28bf87['get']({'plain':!![]});return db[_0x29a9('0x52')][_0x29a9('0x45')]({'where':{'name':_0x29a9('0x20'),'userProfileId':_0x3461a7[_0x29a9('0x53')]},'raw':!![]})[_0x29a9('0x1e')](function(_0x1617f7){if(_0x1617f7&&_0x1617f7[_0x29a9('0x54')]===0x0){return db['UserProfileResource'][_0x29a9('0x47')]({'name':_0x467818[_0x29a9('0x26')],'resourceId':_0x467818['id'],'type':_0x1617f7[_0x29a9('0x26')],'sectionId':_0x1617f7['id']},{})[_0x29a9('0x1e')](function(){return _0x28bf87;});}else{return _0x28bf87;}})['catch'](function(_0x505989){logger[_0x29a9('0x24')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x505989);});}return _0x28bf87;});})[_0x29a9('0x1e')](respondWithResult(_0x1799b7,0xc9))[_0x29a9('0x40')](handleError(_0x1799b7,null));};exports[_0x29a9('0x22')]=function(_0x15115d,_0x4e2251,_0x5e44df){var _0x253fd9;return db[_0x29a9('0x3d')][_0x29a9('0x45')]({'where':{'id':_0x15115d['params']['id']}})[_0x29a9('0x1e')](function(_0x5f3585){if(_0x5f3585){return db[_0x29a9('0x48')][_0x29a9('0x49')](function(_0x6136cd){return _0x5f3585[_0x29a9('0x22')]({'transaction':_0x6136cd,'raw':!![]})[_0x29a9('0x1e')](function(_0x3f6c4b){if(_0x3f6c4b[_0x29a9('0x4b')]){fs['readdirSync'](_0x3f6c4b[_0x29a9('0x4b')])[_0x29a9('0x55')](function(_0x5c9d7b){fs[_0x29a9('0x56')](path['join'](_0x3f6c4b[_0x29a9('0x4b')],_0x5c9d7b));});fs[_0x29a9('0x57')](_0x3f6c4b[_0x29a9('0x4b')]);}return _0x3f6c4b;});})[_0x29a9('0x40')](function(_0xc468ef){throw new db[(_0x29a9('0x58'))][(_0x29a9('0x59'))](_0xc468ef[_0x29a9('0x5a')]);});}})[_0x29a9('0x1e')](handleEntityNotFound(_0x4e2251,null))['then'](removeEntity(_0x4e2251,null))[_0x29a9('0x40')](handleError(_0x4e2251,null));};exports[_0x29a9('0x5b')]=function(_0x50491b,_0x55dd62,_0x26e673){return db['sequelize']['transaction'](function(_0x5e8a7e){var _0x5d87fb;return db[_0x29a9('0x3d')][_0x29a9('0x45')]({'where':{'id':_0x50491b[_0x29a9('0x46')]['id']}})[_0x29a9('0x1e')](function(_0x457372){if(_0x457372){_0x5d87fb=_0x457372;return _0x457372[_0x29a9('0x5b')](_0x50491b[_0x29a9('0x44')]['id'],{'transaction':_0x5e8a7e});}})[_0x29a9('0x1e')](function(_0x33636d){if(_0x33636d){return db['Sound'][_0x29a9('0x5c')]({'where':{'id':_0x50491b[_0x29a9('0x44')]['id']},'attributes':['id',_0x29a9('0x26'),_0x29a9('0x5d'),_0x29a9('0x5e'),_0x29a9('0x5f')],'raw':!![]});}})['then'](function(_0x4dd77f){if(_0x4dd77f){var _0x3105cd=path[_0x29a9('0x60')](config[_0x29a9('0x61')],_0x29a9('0x62'),util[_0x29a9('0x63')]('%s.%s',path['basename'](_0x4dd77f['save_name'],path[_0x29a9('0x64')](_0x4dd77f[_0x29a9('0x5d')])),_0x4dd77f[_0x29a9('0x5e')]));var _0x470a41=path[_0x29a9('0x60')](config[_0x29a9('0x61')],_0x29a9('0x65'),_0x5d87fb[_0x29a9('0x26')],util[_0x29a9('0x63')](_0x29a9('0x66'),_0x4dd77f[_0x29a9('0x26')],_0x4dd77f[_0x29a9('0x5e')]));fs[_0x29a9('0x67')](_0x3105cd,_0x470a41);return _0x4dd77f;}})[_0x29a9('0x40')](function(_0x1afc3b){throw new db[(_0x29a9('0x58'))][(_0x29a9('0x59'))](_0x1afc3b[_0x29a9('0x5a')]);});})[_0x29a9('0x1e')](handleEntityNotFound(_0x55dd62,null))[_0x29a9('0x1e')](respondWithResult(_0x55dd62,0xc9))['catch'](handleError(_0x55dd62,null));};exports[_0x29a9('0x68')]=function(_0x4f43a2,_0x2b7252,_0x7b23a9){return db[_0x29a9('0x48')][_0x29a9('0x49')](function(_0x23e3f3){var _0x3e3ce6;return db[_0x29a9('0x3d')][_0x29a9('0x5c')]({'where':{'id':_0x4f43a2[_0x29a9('0x46')]['id']}})[_0x29a9('0x1e')](handleEntityNotFound(_0x2b7252,null))[_0x29a9('0x1e')](function(_0x14eefa){if(_0x14eefa){_0x3e3ce6=_0x14eefa;return _0x14eefa[_0x29a9('0x68')](_0x4f43a2['params'][_0x29a9('0x69')]);}})[_0x29a9('0x1e')](function(_0x48b78b){if(_0x48b78b){return db['Sound'][_0x29a9('0x5c')]({'where':{'id':_0x4f43a2[_0x29a9('0x46')][_0x29a9('0x69')]},'attributes':['id',_0x29a9('0x26'),_0x29a9('0x5d'),_0x29a9('0x5e'),_0x29a9('0x5f')],'raw':!![]});}})[_0x29a9('0x1e')](function(_0x3032dc){if(_0x3032dc){fs[_0x29a9('0x56')](path['join'](_0x3e3ce6[_0x29a9('0x4b')],util[_0x29a9('0x63')](_0x29a9('0x66'),_0x3032dc[_0x29a9('0x26')],_0x3032dc[_0x29a9('0x5e')])));return _0x3032dc;}})['catch'](function(_0x29e583){throw new db[(_0x29a9('0x58'))]['ValidationError'](_0x29e583[_0x29a9('0x5a')]);});})[_0x29a9('0x1e')](handleEntityNotFound(_0x2b7252,null))[_0x29a9('0x1e')](respondWithStatusCode(_0x2b7252,0xcc))[_0x29a9('0x40')](handleError(_0x2b7252,null));};exports[_0x29a9('0x6a')]=function(_0x2a09b3,_0xa1ce07,_0x399650){var _0x5c2017={};var _0x45e5e0={};var _0x294bf6;var _0x352962;return db[_0x29a9('0x3d')][_0x29a9('0x5c')]({'where':{'id':_0x2a09b3[_0x29a9('0x46')]['id']}})[_0x29a9('0x1e')](handleEntityNotFound(_0xa1ce07,null))[_0x29a9('0x1e')](function(_0x488e2c){if(_0x488e2c){_0x294bf6=_0x488e2c;_0x45e5e0[_0x29a9('0x2a')]=_[_0x29a9('0x2c')](db[_0x29a9('0x6b')][_0x29a9('0x42')]);_0x45e5e0[_0x29a9('0x2b')]=_[_0x29a9('0x2c')](_0x2a09b3[_0x29a9('0x2b')]);_0x45e5e0[_0x29a9('0x35')]=_[_0x29a9('0x2d')](_0x45e5e0['model'],_0x45e5e0[_0x29a9('0x2b')]);_0x5c2017[_0x29a9('0x2f')]=_[_0x29a9('0x2d')](_0x45e5e0[_0x29a9('0x2a')],qs[_0x29a9('0x2e')](_0x2a09b3[_0x29a9('0x2b')][_0x29a9('0x2e')]));_0x5c2017[_0x29a9('0x2f')]=_0x5c2017[_0x29a9('0x2f')]['length']?_0x5c2017[_0x29a9('0x2f')]:_0x45e5e0[_0x29a9('0x2a')];_0x5c2017['order']=qs['sort'](_0x2a09b3[_0x29a9('0x2b')][_0x29a9('0x33')]);_0x5c2017[_0x29a9('0x34')]=qs['filters'](_['pick'](_0x2a09b3[_0x29a9('0x2b')],_0x45e5e0[_0x29a9('0x35')]));if(_0x2a09b3[_0x29a9('0x2b')][_0x29a9('0x37')]){_0x5c2017['where']=_[_0x29a9('0x38')](_0x5c2017[_0x29a9('0x34')],{'$or':_[_0x29a9('0x27')](_0x5c2017['attributes'],function(_0xc2bcfa){var _0x1d4ee7={};_0x1d4ee7[_0xc2bcfa]={'$like':'%'+_0x2a09b3[_0x29a9('0x2b')][_0x29a9('0x37')]+'%'};return _0x1d4ee7;})});}_0x5c2017=_[_0x29a9('0x38')]({},_0x5c2017,_0x2a09b3['options']);return _0x294bf6['getSounds'](_0x5c2017);}})[_0x29a9('0x1e')](function(_0x535f66){if(_0x535f66){_0x352962=_0x535f66[_0x29a9('0x30')];if(!_0x2a09b3[_0x29a9('0x2b')][_0x29a9('0x31')](_0x29a9('0x6c'))){_0x5c2017[_0x29a9('0x19')]=qs[_0x29a9('0x19')](_0x2a09b3['query']['limit']);_0x5c2017[_0x29a9('0x1a')]=qs['offset'](_0x2a09b3[_0x29a9('0x2b')][_0x29a9('0x1a')]);}return _0x294bf6['getSounds'](_0x5c2017);}})['then'](function(_0x5689e6){if(_0x5689e6){return _0x5689e6?{'count':_0x352962,'rows':_0x5689e6}:null;}})[_0x29a9('0x1e')](respondWithResult(_0xa1ce07,null))[_0x29a9('0x40')](handleError(_0xa1ce07,null));};
\ No newline at end of file
index 260f5de..de6164b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1f9=['util','api','moment','bluebird','request-promise','path','rimraf','exports','define','VoiceMusicOnHold'];(function(_0x86337d,_0x2b57c3){var _0x22b2c6=function(_0x180d16){while(--_0x180d16){_0x86337d['push'](_0x86337d['shift']());}};_0x22b2c6(++_0x2b57c3);}(_0xb1f9,0x1e0));var _0x9b1f=function(_0x56f7c2,_0x1cb923){_0x56f7c2=_0x56f7c2-0x0;var _0x2e923a=_0xb1f9[_0x56f7c2];return _0x2e923a;};'use strict';var _=require('lodash');var util=require(_0x9b1f('0x0'));var logger=require('../../config/logger')(_0x9b1f('0x1'));var moment=require(_0x9b1f('0x2'));var BPromise=require(_0x9b1f('0x3'));var rp=require(_0x9b1f('0x4'));var fs=require('fs');var path=require(_0x9b1f('0x5'));var rimraf=require(_0x9b1f('0x6'));var config=require('../../config/environment');var attributes=require('./voiceMusicOnHold.attributes');module[_0x9b1f('0x7')]=function(_0x5d06d5,_0x308e76){return _0x5d06d5[_0x9b1f('0x8')](_0x9b1f('0x9'),attributes,{'tableName':'voice_musiconhold','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7b86=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceMusicOnHold.attributes','VoiceMusicOnHold','voice_musiconhold','lodash','util','../../config/logger'];(function(_0x4ecf66,_0x9123fe){var _0x279cfc=function(_0x56f92e){while(--_0x56f92e){_0x4ecf66['push'](_0x4ecf66['shift']());}};_0x279cfc(++_0x9123fe);}(_0x7b86,0x7f));var _0x67b8=function(_0xbd97f4,_0x8b5779){_0xbd97f4=_0xbd97f4-0x0;var _0x11ee12=_0x7b86[_0xbd97f4];return _0x11ee12;};'use strict';var _=require(_0x67b8('0x0'));var util=require(_0x67b8('0x1'));var logger=require(_0x67b8('0x2'))(_0x67b8('0x3'));var moment=require(_0x67b8('0x4'));var BPromise=require(_0x67b8('0x5'));var rp=require(_0x67b8('0x6'));var fs=require('fs');var path=require(_0x67b8('0x7'));var rimraf=require(_0x67b8('0x8'));var config=require(_0x67b8('0x9'));var attributes=require(_0x67b8('0xa'));module['exports']=function(_0x4227f0,_0x1bea1f){return _0x4227f0['define'](_0x67b8('0xb'),attributes,{'tableName':_0x67b8('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c824d56..77f2310 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x21742c,_0x219504){var _0x57fcf6=function(_0x598c68){while(--_0x598c68){_0x21742c['push'](_0x21742c['shift']());}};_0x57fcf6(++_0x219504);}(_0x34e8,0x12c));var _0x834e=function(_0x388440,_0x599840){_0x388440=_0x388440-0x0;var _0xbb12b=_0x34e8[_0x388440];return _0xbb12b;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var moment=require(_0x834e('0x2'));var BPromise=require(_0x834e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x834e('0x4'));var db=require(_0x834e('0x5'))['db'];var utils=require(_0x834e('0x6'));var logger=require(_0x834e('0x7'))(_0x834e('0x8'));var config=require(_0x834e('0x9'));var jayson=require(_0x834e('0xa'));var client=jayson['client'][_0x834e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x52056d,_0x3e16d2,_0x3cc2e3){return new BPromise(function(_0x3a3ef6,_0x2e69e2){return client[_0x834e('0xc')](_0x52056d,_0x3cc2e3)[_0x834e('0xd')](function(_0x363786){logger[_0x834e('0xe')](_0x834e('0xf'),_0x3e16d2,_0x834e('0x10'));logger[_0x834e('0x11')](_0x834e('0x12'),_0x3e16d2,_0x834e('0x10'),JSON[_0x834e('0x13')](_0x363786));if(_0x363786[_0x834e('0x14')]){if(_0x363786[_0x834e('0x14')][_0x834e('0x15')]===0x1f4){logger['error'](_0x834e('0xf'),_0x3e16d2,_0x363786[_0x834e('0x14')]['message']);return _0x2e69e2(_0x363786[_0x834e('0x14')][_0x834e('0x16')]);}logger[_0x834e('0x14')](_0x834e('0xf'),_0x3e16d2,_0x363786['error'][_0x834e('0x16')]);return _0x3a3ef6(_0x363786[_0x834e('0x14')]['message']);}else{logger[_0x834e('0xe')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x3e16d2,_0x834e('0x10'));_0x3a3ef6(_0x363786[_0x834e('0x17')]['message']);}})[_0x834e('0x18')](function(_0x22106e){logger[_0x834e('0x14')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x3e16d2,_0x22106e);_0x2e69e2(_0x22106e);});});}
\ No newline at end of file
+var _0xcb91=['stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s'];(function(_0x586caf,_0x509775){var _0x346412=function(_0x559294){while(--_0x559294){_0x586caf['push'](_0x586caf['shift']());}};_0x346412(++_0x509775);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x30f5bb,_0x4db4bd){_0x30f5bb=_0x30f5bb-0x0;var _0x1cfc00=_0xcb91[_0x30f5bb];return _0x1cfc00;};'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')]('VoiceMusicOnHold,\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
index af1b364..ea02307 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad90=['/:id/users','getAgents','post','create','addAgents','put','/:id','update','delete','removeAgents','exports','multer','util','connect-timeout','express','Router','./voicePrefix.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x2ec3d1,_0x2d82b2){var _0x2551e2=function(_0x5a638b){while(--_0x5a638b){_0x2ec3d1['push'](_0x2ec3d1['shift']());}};_0x2551e2(++_0x2d82b2);}(_0xad90,0x8f));var _0x0ad9=function(_0x261e29,_0x10fffd){_0x261e29=_0x261e29-0x0;var _0x25ef43=_0xad90[_0x261e29];return _0x25ef43;};'use strict';var multer=require(_0x0ad9('0x0'));var util=require(_0x0ad9('0x1'));var path=require('path');var timeout=require(_0x0ad9('0x2'));var express=require(_0x0ad9('0x3'));var router=express[_0x0ad9('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(_0x0ad9('0x5'));router[_0x0ad9('0x6')]('/',auth[_0x0ad9('0x7')](),controller[_0x0ad9('0x8')]);router[_0x0ad9('0x6')](_0x0ad9('0x9'),auth[_0x0ad9('0x7')](),controller[_0x0ad9('0xa')]);router[_0x0ad9('0x6')]('/:id',auth[_0x0ad9('0x7')](),controller['show']);router['get'](_0x0ad9('0xb'),auth[_0x0ad9('0x7')](),controller[_0x0ad9('0xc')]);router[_0x0ad9('0xd')]('/',auth[_0x0ad9('0x7')](),controller[_0x0ad9('0xe')]);router['post']('/:id/users',auth[_0x0ad9('0x7')](),controller[_0x0ad9('0xf')]);router[_0x0ad9('0x10')](_0x0ad9('0x11'),auth[_0x0ad9('0x7')](),controller[_0x0ad9('0x12')]);router['delete'](_0x0ad9('0x11'),auth[_0x0ad9('0x7')](),controller['destroy']);router[_0x0ad9('0x13')](_0x0ad9('0xb'),auth[_0x0ad9('0x7')](),controller[_0x0ad9('0x14')]);module[_0x0ad9('0x15')]=router;
\ No newline at end of file
+var _0xdced=['delete','destroy','removeAgents','exports','multer','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','index','get','/describe','isAuthenticated','/:id','show','/:id/users','getAgents','post','create','put','update'];(function(_0x2fb3c9,_0x3adbe8){var _0x2f2819=function(_0x1a399b){while(--_0x1a399b){_0x2fb3c9['push'](_0x2fb3c9['shift']());}};_0x2f2819(++_0x3adbe8);}(_0xdced,0x12f));var _0xddce=function(_0x40b7ec,_0x307707){_0x40b7ec=_0x40b7ec-0x0;var _0x72b976=_0xdced[_0x40b7ec];return _0x72b976;};'use strict';var multer=require(_0xddce('0x0'));var util=require('util');var path=require(_0xddce('0x1'));var timeout=require(_0xddce('0x2'));var express=require('express');var router=express[_0xddce('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xddce('0x4'));var interaction=require(_0xddce('0x5'));var config=require(_0xddce('0x6'));var controller=require('./voicePrefix.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xddce('0x7')]);router[_0xddce('0x8')](_0xddce('0x9'),auth[_0xddce('0xa')](),controller['describe']);router['get'](_0xddce('0xb'),auth[_0xddce('0xa')](),controller[_0xddce('0xc')]);router['get'](_0xddce('0xd'),auth['isAuthenticated'](),controller[_0xddce('0xe')]);router[_0xddce('0xf')]('/',auth[_0xddce('0xa')](),controller[_0xddce('0x10')]);router[_0xddce('0xf')]('/:id/users',auth[_0xddce('0xa')](),controller['addAgents']);router[_0xddce('0x11')](_0xddce('0xb'),auth[_0xddce('0xa')](),controller[_0xddce('0x12')]);router[_0xddce('0x13')](_0xddce('0xb'),auth[_0xddce('0xa')](),controller[_0xddce('0x14')]);router[_0xddce('0x13')](_0xddce('0xd'),auth[_0xddce('0xa')](),controller[_0xddce('0x15')]);module[_0xddce('0x16')]=router;
\ No newline at end of file
index 791964b..d626f02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2a5=['getDataValue','INTEGER','sequelize','exports','STRING','name','VIRTUAL','system-'];(function(_0x4a35fe,_0x132b43){var _0xf6e0c6=function(_0x402636){while(--_0x402636){_0x4a35fe['push'](_0x4a35fe['shift']());}};_0xf6e0c6(++_0x132b43);}(_0xe2a5,0x1a2));var _0x5e2a=function(_0x1387d1,_0x8d55ac){_0x1387d1=_0x1387d1-0x0;var _0x3d8426=_0xe2a5[_0x1387d1];return _0x3d8426;};'use strict';var Sequelize=require(_0x5e2a('0x0'));module[_0x5e2a('0x1')]={'name':{'type':Sequelize[_0x5e2a('0x2')],'allowNull':![],'unique':_0x5e2a('0x3')},'prefix':{'type':Sequelize[_0x5e2a('0x4')],'get':function(_0xbf6832){return _0x5e2a('0x5')+this[_0x5e2a('0x6')]('name')+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize['STRING']},'VoiceExtensionId':{'type':Sequelize[_0x5e2a('0x7')]}};
\ No newline at end of file
+var _0x7d5e=['VIRTUAL','system-','sequelize','exports','STRING','name'];(function(_0x1d094c,_0x168326){var _0x1e6250=function(_0x148b77){while(--_0x148b77){_0x1d094c['push'](_0x1d094c['shift']());}};_0x1e6250(++_0x168326);}(_0x7d5e,0x1ca));var _0xe7d5=function(_0x366912,_0x80d720){_0x366912=_0x366912-0x0;var _0x3f7ed6=_0x7d5e[_0x366912];return _0x3f7ed6;};'use strict';var Sequelize=require(_0xe7d5('0x0'));module[_0xe7d5('0x1')]={'name':{'type':Sequelize[_0xe7d5('0x2')],'allowNull':![],'unique':_0xe7d5('0x3')},'prefix':{'type':Sequelize[_0xe7d5('0x4')],'get':function(_0x1833b5){return _0xe7d5('0x5')+this['getDataValue'](_0xe7d5('0x3'))+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize[_0xe7d5('0x2')]},'VoiceExtensionId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 714975b..718b9a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01f0=['VoiceExtensionId','VoicePrefixId','bulkCreate','Extensions\x20creation\x20failed','Set','CDR(prefix)=','callerIdAll','push','PREFIX-CALLERIDALL=','No\x20callerid\x20available','goto','${EXTEN:','charAt','system-','sequelize','findById','addAgents','omit','ids','spread','userVoicePrefix:save','removeAgents','isArray','emit','userVoicePrefix:remove','getAgents','findOne','hasOwnProperty','eml-format','zip-dir','moment','util','path','ejs','squel','crypto','jsforce','desk.js','to-csv','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./voicePrefix.socket','sendStatus','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','destroy','then','get','UserProfileResource','end','error','stack','name','index','VoicePrefix','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','sort','where','pick','filter','merge','map','VIRTUAL','options','includeAll','catch','params','find','describe','create','transaction','body','VoiceExtension','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','VoicePrefixes','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','exten','app','description','Voice\x20Prefix\x20Extension','priority','appdata','prefix','NoOp','Voice\x20Prefix'];(function(_0x336d00,_0x1afdbd){var _0x5013cb=function(_0xb4384b){while(--_0xb4384b){_0x336d00['push'](_0x336d00['shift']());}};_0x5013cb(++_0x1afdbd);}(_0x01f0,0x93));var _0x001f=function(_0x3df2b9,_0x44009e){_0x3df2b9=_0x3df2b9-0x0;var _0x1ec1df=_0x01f0[_0x3df2b9];return _0x1ec1df;};'use strict';var emlformat=require(_0x001f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x001f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x001f('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x001f('0x3'));var path=require(_0x001f('0x4'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x001f('0x5'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x001f('0x6'));var crypto=require(_0x001f('0x7'));var jsforce=require(_0x001f('0x8'));var deskjs=require(_0x001f('0x9'));var toCsv=require(_0x001f('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x001f('0xb'));var qs=require(_0x001f('0xc'));var as=require(_0x001f('0xd'));var hardwareService=require(_0x001f('0xe'));var logger=require(_0x001f('0xf'))(_0x001f('0x10'));var utils=require('../../config/utils');var config=require(_0x001f('0x11'));var licenseUtil=require(_0x001f('0x12'));var db=require(_0x001f('0x13'))['db'];config[_0x001f('0x14')]=_[_0x001f('0x15')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x001f('0x16'))['register'](socket);function respondWithStatusCode(_0x685867,_0x31e4cb){_0x31e4cb=_0x31e4cb||0xcc;return function(_0x104a8c){if(_0x104a8c){return _0x685867[_0x001f('0x17')](_0x31e4cb);}return _0x685867[_0x001f('0x18')](_0x31e4cb)['end']();};}function respondWithResult(_0x4a74b2,_0x5abd01){_0x5abd01=_0x5abd01||0xc8;return function(_0x3f66c){if(_0x3f66c){return _0x4a74b2['status'](_0x5abd01)[_0x001f('0x19')](_0x3f66c);}};}function respondWithFilteredResult(_0x22a752,_0x337b91){return function(_0x2f32e5){if(_0x2f32e5){var _0x4eb58e=typeof _0x337b91[_0x001f('0x1a')]===_0x001f('0x1b')&&typeof _0x337b91['limit']==='undefined';var _0x54adb4=_0x2f32e5[_0x001f('0x1c')];var _0x2f4ceb=_0x4eb58e?0x0:_0x337b91[_0x001f('0x1a')];var _0x55ae3d=_0x4eb58e?_0x2f32e5[_0x001f('0x1c')]:_0x337b91[_0x001f('0x1a')]+_0x337b91[_0x001f('0x1d')];var _0x124d79;if(_0x55ae3d>=_0x54adb4){_0x55ae3d=_0x54adb4;_0x124d79=0xc8;}else{_0x124d79=0xce;}_0x22a752[_0x001f('0x18')](_0x124d79);return _0x22a752['set'](_0x001f('0x1e'),_0x2f4ceb+'-'+_0x55ae3d+'/'+_0x54adb4)['json'](_0x2f32e5);}return null;};}function patchUpdates(_0x349c04){return function(_0x4f5087){try{jsonpatch[_0x001f('0x1f')](_0x4f5087,_0x349c04,!![]);}catch(_0x4d501d){return BPromise[_0x001f('0x20')](_0x4d501d);}return _0x4f5087[_0x001f('0x21')]();};}function saveUpdates(_0x2c2d7d,_0x54a66b){return function(_0x39b244){if(_0x39b244){return _0x39b244[_0x001f('0x22')](_0x2c2d7d)['then'](function(_0x1543e8){return _0x1543e8;});}return null;};}function removeEntity(_0x1cd07a,_0x70878e){return function(_0x5d99af){if(_0x5d99af){return _0x5d99af[_0x001f('0x23')]()[_0x001f('0x24')](function(){var _0x78e0a8=_0x5d99af[_0x001f('0x25')]({'plain':!![]});var _0x1234de='VoicePrefixes';return db[_0x001f('0x26')][_0x001f('0x23')]({'where':{'type':_0x1234de,'resourceId':_0x78e0a8['id']}})['then'](function(){return _0x5d99af;});})[_0x001f('0x24')](function(){_0x1cd07a[_0x001f('0x18')](0xcc)[_0x001f('0x27')]();});}};}function handleEntityNotFound(_0x117157,_0x315288){return function(_0x56b771){if(!_0x56b771){_0x117157[_0x001f('0x17')](0x194);}return _0x56b771;};}function handleError(_0x3b886b,_0x2159ff){_0x2159ff=_0x2159ff||0x1f4;return function(_0x55123e){logger[_0x001f('0x28')](_0x55123e[_0x001f('0x29')]);if(_0x55123e[_0x001f('0x2a')]){delete _0x55123e['name'];}_0x3b886b[_0x001f('0x18')](_0x2159ff)['send'](_0x55123e);};}exports[_0x001f('0x2b')]=function(_0x50151e,_0x47b140){var _0x166ee2={},_0x1270e9={},_0x29d6f6={'count':0x0,'rows':[]};var _0x451067=_['map'](db[_0x001f('0x2c')][_0x001f('0x2d')],function(_0x202a6c){return{'name':_0x202a6c[_0x001f('0x2e')],'type':_0x202a6c[_0x001f('0x2f')][_0x001f('0x30')]};});_0x1270e9[_0x001f('0x31')]=_['map'](_0x451067,_0x001f('0x2a'));_0x1270e9[_0x001f('0x32')]=_[_0x001f('0x33')](_0x50151e[_0x001f('0x32')]);_0x1270e9[_0x001f('0x34')]=_['intersection'](_0x1270e9['model'],_0x1270e9['query']);_0x166ee2[_0x001f('0x35')]=_[_0x001f('0x36')](_0x1270e9[_0x001f('0x31')],qs[_0x001f('0x37')](_0x50151e[_0x001f('0x32')][_0x001f('0x37')]));_0x166ee2[_0x001f('0x35')]=_0x166ee2[_0x001f('0x35')][_0x001f('0x38')]?_0x166ee2[_0x001f('0x35')]:_0x1270e9[_0x001f('0x31')];if(!_0x50151e[_0x001f('0x32')]['hasOwnProperty'](_0x001f('0x39'))){_0x166ee2[_0x001f('0x1d')]=qs[_0x001f('0x1d')](_0x50151e['query'][_0x001f('0x1d')]);_0x166ee2[_0x001f('0x1a')]=qs[_0x001f('0x1a')](_0x50151e[_0x001f('0x32')][_0x001f('0x1a')]);}_0x166ee2['order']=qs['sort'](_0x50151e[_0x001f('0x32')][_0x001f('0x3a')]);_0x166ee2[_0x001f('0x3b')]=qs[_0x001f('0x34')](_[_0x001f('0x3c')](_0x50151e['query'],_0x1270e9[_0x001f('0x34')]),_0x451067);if(_0x50151e[_0x001f('0x32')][_0x001f('0x3d')]){_0x166ee2['where']=_[_0x001f('0x3e')](_0x166ee2[_0x001f('0x3b')],{'$or':_[_0x001f('0x3f')](_0x451067,function(_0xefa4da){if(_0xefa4da[_0x001f('0x2f')]!==_0x001f('0x40')){var _0x2a33fa={};_0x2a33fa[_0xefa4da[_0x001f('0x2a')]]={'$like':'%'+_0x50151e['query'][_0x001f('0x3d')]+'%'};return _0x2a33fa;}})});}_0x166ee2=_[_0x001f('0x3e')]({},_0x166ee2,_0x50151e[_0x001f('0x41')]);var _0x4aaa62={'where':_0x166ee2['where']};return db['VoicePrefix']['count'](_0x4aaa62)[_0x001f('0x24')](function(_0x493bc5){_0x29d6f6[_0x001f('0x1c')]=_0x493bc5;if(_0x50151e[_0x001f('0x32')][_0x001f('0x42')]){_0x166ee2['include']=[{'all':!![]}];}return db[_0x001f('0x2c')]['findAll'](_0x166ee2);})[_0x001f('0x24')](function(_0x3fbe19){_0x29d6f6['rows']=_0x3fbe19;return _0x29d6f6;})[_0x001f('0x24')](respondWithFilteredResult(_0x47b140,_0x166ee2))[_0x001f('0x43')](handleError(_0x47b140,null));};exports['show']=function(_0x18e92e,_0x2d253c){var _0x1ee3dc={'raw':![],'where':{'id':_0x18e92e[_0x001f('0x44')]['id']}},_0x3643e3={};_0x3643e3[_0x001f('0x31')]=_[_0x001f('0x33')](db['VoicePrefix']['rawAttributes']);_0x3643e3['query']=_[_0x001f('0x33')](_0x18e92e[_0x001f('0x32')]);_0x3643e3[_0x001f('0x34')]=_[_0x001f('0x36')](_0x3643e3[_0x001f('0x31')],_0x3643e3[_0x001f('0x32')]);_0x1ee3dc['attributes']=_[_0x001f('0x36')](_0x3643e3[_0x001f('0x31')],qs[_0x001f('0x37')](_0x18e92e[_0x001f('0x32')][_0x001f('0x37')]));_0x1ee3dc[_0x001f('0x35')]=_0x1ee3dc[_0x001f('0x35')][_0x001f('0x38')]?_0x1ee3dc[_0x001f('0x35')]:_0x3643e3[_0x001f('0x31')];if(_0x18e92e[_0x001f('0x32')][_0x001f('0x42')]){_0x1ee3dc['include']=[{'all':!![]}];}_0x1ee3dc=_[_0x001f('0x3e')]({},_0x1ee3dc,_0x18e92e['options']);return db['VoicePrefix'][_0x001f('0x45')](_0x1ee3dc)[_0x001f('0x24')](handleEntityNotFound(_0x2d253c,null))[_0x001f('0x24')](respondWithResult(_0x2d253c,null))[_0x001f('0x43')](handleError(_0x2d253c,null));};exports[_0x001f('0x23')]=function(_0x13497a,_0x1c4c10){return db[_0x001f('0x2c')][_0x001f('0x45')]({'where':{'id':_0x13497a[_0x001f('0x44')]['id']}})[_0x001f('0x24')](handleEntityNotFound(_0x1c4c10,null))['then'](removeEntity(_0x1c4c10,null))[_0x001f('0x43')](handleError(_0x1c4c10,null));};exports[_0x001f('0x46')]=function(_0x127d91,_0x4264d9){return db[_0x001f('0x2c')][_0x001f('0x46')]()[_0x001f('0x24')](respondWithResult(_0x4264d9,null))['catch'](handleError(_0x4264d9,null));};exports[_0x001f('0x47')]=function(_0x43afbf,_0x7593e4){var _0x4e61e5;return db['sequelize'][_0x001f('0x48')](function(_0x5cea09){return db[_0x001f('0x2c')]['create'](_0x43afbf[_0x001f('0x49')],{'transaction':_0x5cea09})[_0x001f('0x24')](function(_0x30bfd5){_0x4e61e5=_0x30bfd5[_0x001f('0x25')]({'plain':!![]});return db[_0x001f('0x4a')][_0x001f('0x45')]({'where':{'id':_0x4e61e5['VoiceExtensionId']},'raw':!![]})[_0x001f('0x24')](function(_0x12e2f2){return createVoicePrefixExtensions(_0x4e61e5,_0x12e2f2,_0x5cea09);});});})['then'](function(){var _0x547913=_0x43afbf[_0x001f('0x4b')][_0x001f('0x25')]({'plain':!![]});if(!_0x547913)throw new Error(_0x001f('0x4c'));if(_0x547913['role']===_0x001f('0x4b')){var _0x4d7bd2=_0x4e61e5;return db['UserProfileSection']['find']({'where':{'name':_0x001f('0x4d'),'userProfileId':_0x547913['userProfileId']},'raw':!![]})[_0x001f('0x24')](function(_0x36935a){if(_0x36935a&&_0x36935a[_0x001f('0x4e')]===0x0){return db[_0x001f('0x26')]['create']({'name':_0x4d7bd2[_0x001f('0x2a')],'resourceId':_0x4d7bd2['id'],'type':_0x36935a[_0x001f('0x2a')],'sectionId':_0x36935a['id']},{})[_0x001f('0x24')](function(){return _0x4e61e5;});}else{return _0x4e61e5;}})['catch'](function(_0x4e486b){logger[_0x001f('0x28')](_0x001f('0x4f'),_0x4e486b);throw _0x4e486b;});}return _0x4e61e5;})[_0x001f('0x24')](respondWithResult(_0x7593e4,null))[_0x001f('0x43')](handleError(_0x7593e4,null));};function Extension(_0x19f5ab,_0x148039,_0x168523,_0x144693){this[_0x001f('0x50')]=_0x001f('0x51');this[_0x001f('0x52')]=_0x19f5ab;this[_0x001f('0x53')]=_0x168523;this[_0x001f('0x2f')]='system';this[_0x001f('0x54')]=_0x001f('0x55');this[_0x001f('0x56')]=_0x148039;this[_0x001f('0x57')]=_0x144693;}function createVoicePrefixExtensions(_0x3702eb,_0x349c62,_0x68fb1c){return new BPromise(function(_0xd95e0d,_0x226805){var _0x130edf=new Extension(formatPrefixName(_0x3702eb[_0x001f('0x58')]),0x1,_0x001f('0x59'),_0x001f('0x5a'));_0x130edf['VoicePrefixId']=_0x3702eb['id'];return db[_0x001f('0x4a')]['create'](_0x130edf,{'transaction':_0x68fb1c})['then'](function(_0x1a67d5){var _0x5225df=_0x1a67d5[_0x001f('0x25')]({'plain':!![]});var _0x50abf7=_[_0x001f('0x3f')](addVoicePrefixExtensions(_0x3702eb,_0x349c62),function(_0x1e15ea){_0x1e15ea[_0x001f('0x5b')]=_0x5225df['id'];_0x1e15ea[_0x001f('0x5c')]=_0x3702eb['id'];return _0x1e15ea;});return db['VoiceExtension'][_0x001f('0x5d')](_0x50abf7,{'transaction':_0x68fb1c})[_0x001f('0x24')](function(_0x3830e7){if(!_0x3830e7){return _0x226805(_0x001f('0x5e'));}else{return _0xd95e0d(_0x3830e7);}})[_0x001f('0x43')](function(_0x3e924f){return _0x226805(_0x3e924f);});});;});};function addVoicePrefixExtensions(_0x465d1f,_0x3f34ae){var _0x4db379=[];var _0x4c6644=formatPrefixName(_0x465d1f[_0x001f('0x58')]);_0x4db379['push'](new Extension(_0x4c6644,0x2,_0x001f('0x5f'),_0x001f('0x60')+_0x465d1f[_0x001f('0x2a')]));if(_0x465d1f[_0x001f('0x61')]){_0x4db379[_0x001f('0x62')](new Extension(_0x4c6644,0x3,_0x001f('0x5f'),_0x001f('0x63')+_0x465d1f[_0x001f('0x61')]));}else{_0x4db379[_0x001f('0x62')](new Extension(_0x4c6644,0x3,_0x001f('0x59'),_0x001f('0x64')));}_0x4db379[_0x001f('0x62')](new Extension(_0x4c6644,0x4,_0x001f('0x65'),_0x3f34ae[_0x001f('0x50')]+','+_0x001f('0x66')+(0x8+_0x465d1f[_0x001f('0x2a')][_0x001f('0x38')])+'}'+','+0x1));return _0x4db379;}function formatPrefixName(_0x131773){var _0x5b32be='_';for(var _0x40a4cc=0x0;_0x40a4cc<_0x131773[_0x001f('0x38')];_0x40a4cc++){if(_0x131773[_0x001f('0x67')](_0x40a4cc)=='-'){_0x5b32be+=_0x131773[_0x001f('0x67')](_0x40a4cc);}else{_0x5b32be+='['+_0x131773[_0x001f('0x67')](_0x40a4cc)+']';}}_0x5b32be+='.';return _0x5b32be;}exports[_0x001f('0x22')]=function(_0x3bfb1c,_0x7c5ee4,_0x530c8e){var _0x46c3be=_0x3bfb1c[_0x001f('0x49')];_0x46c3be['prefix']=_0x001f('0x68')+_0x46c3be[_0x001f('0x2a')]+'-';return db[_0x001f('0x69')]['transaction'](function(_0x2f18ce){return db[_0x001f('0x2c')][_0x001f('0x22')](_0x46c3be,{'where':{'id':_0x46c3be['id']},'transaction':_0x2f18ce})[_0x001f('0x24')](function(){return db[_0x001f('0x4a')][_0x001f('0x23')]({'where':{'VoicePrefixId':_0x46c3be['id']},'transaction':_0x2f18ce})[_0x001f('0x24')](function(){return db[_0x001f('0x4a')][_0x001f('0x45')]({'where':{'id':_0x46c3be[_0x001f('0x5b')]},'raw':!![]})[_0x001f('0x24')](function(_0x5be41b){return createVoicePrefixExtensions(_0x46c3be,_0x5be41b,_0x2f18ce);});});});})[_0x001f('0x24')](function(){return db['VoicePrefix'][_0x001f('0x6a')](_0x46c3be['id']);})[_0x001f('0x24')](respondWithResult(_0x7c5ee4,null))['catch'](handleError(_0x7c5ee4,null));};exports[_0x001f('0x6b')]=function(_0x3445b3,_0x200098,_0x589b2e){return db[_0x001f('0x2c')][_0x001f('0x45')]({'where':{'id':_0x3445b3['params']['id']}})['then'](handleEntityNotFound(_0x200098,null))[_0x001f('0x24')](function(_0x4e7858){if(_0x4e7858){return _0x4e7858[_0x001f('0x6b')](_0x3445b3[_0x001f('0x49')]['ids'],_[_0x001f('0x6c')](_0x3445b3[_0x001f('0x49')],[_0x001f('0x6d'),'id'])||{})[_0x001f('0x6e')](function(_0x60604d){for(var _0x485599=0x0;_0x485599<_0x3445b3[_0x001f('0x49')][_0x001f('0x6d')]['length'];_0x485599+=0x1){socket['emit'](_0x001f('0x6f'),{'UserId':Number(_0x3445b3[_0x001f('0x49')][_0x001f('0x6d')][_0x485599]),'VoicePrefixId':Number(_0x3445b3[_0x001f('0x44')]['id'])});}return _0x60604d;});}})[_0x001f('0x24')](respondWithResult(_0x200098,null))[_0x001f('0x43')](handleError(_0x200098,null));};exports[_0x001f('0x70')]=function(_0x5ee3b1,_0x16e6cb,_0x30a402){return db['VoicePrefix'][_0x001f('0x45')]({'where':{'id':_0x5ee3b1['params']['id']}})[_0x001f('0x24')](handleEntityNotFound(_0x16e6cb,null))[_0x001f('0x24')](function(_0x56d460){if(_0x56d460){return _0x56d460[_0x001f('0x70')](_0x5ee3b1[_0x001f('0x32')][_0x001f('0x6d')])[_0x001f('0x24')](function(){if(_[_0x001f('0x71')](_0x5ee3b1['query']['ids'])){for(var _0x152895=0x0;_0x152895<_0x5ee3b1['query']['ids']['length'];_0x152895+=0x1){socket[_0x001f('0x72')]('userVoicePrefix:remove',{'UserId':Number(_0x5ee3b1[_0x001f('0x32')]['ids'][_0x152895]),'VoicePrefixId':Number(_0x5ee3b1[_0x001f('0x44')]['id'])});}}else{socket['emit'](_0x001f('0x73'),{'UserId':Number(_0x5ee3b1[_0x001f('0x32')][_0x001f('0x6d')]),'VoicePrefixId':Number(_0x5ee3b1[_0x001f('0x44')]['id'])});}});}})[_0x001f('0x24')](respondWithStatusCode(_0x16e6cb,null))[_0x001f('0x43')](handleError(_0x16e6cb,null));};exports[_0x001f('0x74')]=function(_0x51dcfc,_0x3497e3,_0x3c00af){var _0x4971e1={};var _0x52ac3c={};var _0x3ecd5a;var _0xb93c7e;return db['VoicePrefix'][_0x001f('0x75')]({'where':{'id':_0x51dcfc[_0x001f('0x44')]['id']}})['then'](handleEntityNotFound(_0x3497e3,null))[_0x001f('0x24')](function(_0x1d2532){if(_0x1d2532){_0x3ecd5a=_0x1d2532;_0x52ac3c[_0x001f('0x31')]=_[_0x001f('0x33')](db['User'][_0x001f('0x2d')]);_0x52ac3c[_0x001f('0x32')]=_[_0x001f('0x33')](_0x51dcfc[_0x001f('0x32')]);_0x52ac3c[_0x001f('0x34')]=_['intersection'](_0x52ac3c[_0x001f('0x31')],_0x52ac3c[_0x001f('0x32')]);_0x4971e1['attributes']=_[_0x001f('0x36')](_0x52ac3c[_0x001f('0x31')],qs[_0x001f('0x37')](_0x51dcfc['query'][_0x001f('0x37')]));_0x4971e1[_0x001f('0x35')]=_0x4971e1[_0x001f('0x35')][_0x001f('0x38')]?_0x4971e1[_0x001f('0x35')]:_0x52ac3c[_0x001f('0x31')];_0x4971e1['order']=qs['sort'](_0x51dcfc[_0x001f('0x32')][_0x001f('0x3a')]);_0x4971e1[_0x001f('0x3b')]=qs[_0x001f('0x34')](_[_0x001f('0x3c')](_0x51dcfc[_0x001f('0x32')],_0x52ac3c[_0x001f('0x34')]));if(_0x51dcfc[_0x001f('0x32')][_0x001f('0x3d')]){_0x4971e1[_0x001f('0x3b')]=_[_0x001f('0x3e')](_0x4971e1[_0x001f('0x3b')],{'$or':_[_0x001f('0x3f')](_0x4971e1[_0x001f('0x35')],function(_0x1c6147){var _0x36b7be={};_0x36b7be[_0x1c6147]={'$like':'%'+_0x51dcfc[_0x001f('0x32')][_0x001f('0x3d')]+'%'};return _0x36b7be;})});}_0x4971e1=_['merge']({},_0x4971e1,_0x51dcfc[_0x001f('0x41')]);return _0x3ecd5a[_0x001f('0x74')](_0x4971e1);}})[_0x001f('0x24')](function(_0x15dd76){if(_0x15dd76){_0xb93c7e=_0x15dd76['length'];if(!_0x51dcfc[_0x001f('0x32')][_0x001f('0x76')](_0x001f('0x39'))){_0x4971e1['limit']=qs[_0x001f('0x1d')](_0x51dcfc[_0x001f('0x32')][_0x001f('0x1d')]);_0x4971e1['offset']=qs[_0x001f('0x1a')](_0x51dcfc[_0x001f('0x32')]['offset']);}return _0x3ecd5a[_0x001f('0x74')](_0x4971e1);}})[_0x001f('0x24')](function(_0x2d74c6){if(_0x2d74c6){return _0x2d74c6?{'count':_0xb93c7e,'rows':_0x2d74c6}:null;}})['then'](respondWithResult(_0x3497e3,null))[_0x001f('0x43')](handleError(_0x3497e3,null));};
\ No newline at end of file
+var _0x8201=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','localhost','redis','./voicePrefix.socket','register','sendStatus','status','end','undefined','limit','count','offset','json','apply','reject','save','then','get','error','name','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','VoicePrefix','includeAll','include','findAll','rows','catch','show','params','find','destroy','describe','create','sequelize','transaction','body','VoiceExtension','VoiceExtensionId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','VoicePrefixes','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','exten','system','Voice\x20Prefix\x20Extension','priority','appdata','prefix','Voice\x20Prefix','VoicePrefixId','bulkCreate','Extensions\x20creation\x20failed','push','Set','PREFIX-CALLERIDALL=','callerIdAll','NoOp','goto','length','charAt','system-','update','findById','addAgents','ids','omit','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','User','pick','eml-format','fast-json-patch','moment','mustache','util','sox','to-csv','ejs','lodash','squel','jsforce'];(function(_0x3cef02,_0x394686){var _0x10b8cc=function(_0x39684d){while(--_0x39684d){_0x3cef02['push'](_0x3cef02['shift']());}};_0x10b8cc(++_0x394686);}(_0x8201,0x71));var _0x1820=function(_0x59b2c1,_0x765d01){_0x59b2c1=_0x59b2c1-0x0;var _0x3b8f61=_0x8201[_0x59b2c1];return _0x3b8f61;};'use strict';var emlformat=require(_0x1820('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x1820('0x1'));var rp=require('request-promise');var moment=require(_0x1820('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x1820('0x3'));var util=require(_0x1820('0x4'));var path=require('path');var sox=require(_0x1820('0x5'));var csv=require(_0x1820('0x6'));var ejs=require(_0x1820('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1820('0x8'));var squel=require(_0x1820('0x9'));var crypto=require('crypto');var jsforce=require(_0x1820('0xa'));var deskjs=require(_0x1820('0xb'));var toCsv=require(_0x1820('0x6'));var querystring=require(_0x1820('0xc'));var Papa=require(_0x1820('0xd'));var Redis=require(_0x1820('0xe'));var authService=require(_0x1820('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1820('0x10'));var logger=require(_0x1820('0x11'))(_0x1820('0x12'));var utils=require(_0x1820('0x13'));var config=require(_0x1820('0x14'));var licenseUtil=require(_0x1820('0x15'));var db=require(_0x1820('0x16'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x1820('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1820('0x18')]));require(_0x1820('0x19'))[_0x1820('0x1a')](socket);function respondWithStatusCode(_0x5317cf,_0xc65d23){_0xc65d23=_0xc65d23||0xcc;return function(_0x516ece){if(_0x516ece){return _0x5317cf[_0x1820('0x1b')](_0xc65d23);}return _0x5317cf[_0x1820('0x1c')](_0xc65d23)[_0x1820('0x1d')]();};}function respondWithResult(_0x20eb5e,_0x5b3332){_0x5b3332=_0x5b3332||0xc8;return function(_0x416660){if(_0x416660){return _0x20eb5e[_0x1820('0x1c')](_0x5b3332)['json'](_0x416660);}};}function respondWithFilteredResult(_0xa2378e,_0x3c824c){return function(_0x2d12a4){if(_0x2d12a4){var _0x3cf990=typeof _0x3c824c['offset']===_0x1820('0x1e')&&typeof _0x3c824c[_0x1820('0x1f')]===_0x1820('0x1e');var _0x2f240f=_0x2d12a4[_0x1820('0x20')];var _0x343664=_0x3cf990?0x0:_0x3c824c[_0x1820('0x21')];var _0x2efe44=_0x3cf990?_0x2d12a4['count']:_0x3c824c[_0x1820('0x21')]+_0x3c824c[_0x1820('0x1f')];var _0x22ec43;if(_0x2efe44>=_0x2f240f){_0x2efe44=_0x2f240f;_0x22ec43=0xc8;}else{_0x22ec43=0xce;}_0xa2378e[_0x1820('0x1c')](_0x22ec43);return _0xa2378e['set']('Content-Range',_0x343664+'-'+_0x2efe44+'/'+_0x2f240f)[_0x1820('0x22')](_0x2d12a4);}return null;};}function patchUpdates(_0x3702ea){return function(_0x57e4c7){try{jsonpatch[_0x1820('0x23')](_0x57e4c7,_0x3702ea,!![]);}catch(_0x2840b4){return BPromise[_0x1820('0x24')](_0x2840b4);}return _0x57e4c7[_0x1820('0x25')]();};}function saveUpdates(_0x2d9074,_0x485c71){return function(_0x556319){if(_0x556319){return _0x556319['update'](_0x2d9074)[_0x1820('0x26')](function(_0x55badd){return _0x55badd;});}return null;};}function removeEntity(_0x58643f,_0x2af5f8){return function(_0x47ce0a){if(_0x47ce0a){return _0x47ce0a['destroy']()[_0x1820('0x26')](function(){var _0x3be5bf=_0x47ce0a[_0x1820('0x27')]({'plain':!![]});var _0x486b99='VoicePrefixes';return db['UserProfileResource']['destroy']({'where':{'type':_0x486b99,'resourceId':_0x3be5bf['id']}})[_0x1820('0x26')](function(){return _0x47ce0a;});})['then'](function(){_0x58643f[_0x1820('0x1c')](0xcc)[_0x1820('0x1d')]();});}};}function handleEntityNotFound(_0x3d535d,_0x12aa88){return function(_0x1b93f8){if(!_0x1b93f8){_0x3d535d[_0x1820('0x1b')](0x194);}return _0x1b93f8;};}function handleError(_0x4bce70,_0x3a9cd3){_0x3a9cd3=_0x3a9cd3||0x1f4;return function(_0x2b8209){logger[_0x1820('0x28')](_0x2b8209['stack']);if(_0x2b8209[_0x1820('0x29')]){delete _0x2b8209['name'];}_0x4bce70[_0x1820('0x1c')](_0x3a9cd3)['send'](_0x2b8209);};}exports[_0x1820('0x2a')]=function(_0x509159,_0x459a46){var _0x219d41={},_0x512d77={},_0x340297={'count':0x0,'rows':[]};var _0x4eb5c4=_[_0x1820('0x2b')](db['VoicePrefix'][_0x1820('0x2c')],function(_0x3ea77c){return{'name':_0x3ea77c[_0x1820('0x2d')],'type':_0x3ea77c[_0x1820('0x2e')]['key']};});_0x512d77[_0x1820('0x2f')]=_['map'](_0x4eb5c4,_0x1820('0x29'));_0x512d77[_0x1820('0x30')]=_[_0x1820('0x31')](_0x509159['query']);_0x512d77[_0x1820('0x32')]=_[_0x1820('0x33')](_0x512d77[_0x1820('0x2f')],_0x512d77['query']);_0x219d41[_0x1820('0x34')]=_[_0x1820('0x33')](_0x512d77['model'],qs['fields'](_0x509159[_0x1820('0x30')][_0x1820('0x35')]));_0x219d41[_0x1820('0x34')]=_0x219d41[_0x1820('0x34')]['length']?_0x219d41[_0x1820('0x34')]:_0x512d77[_0x1820('0x2f')];if(!_0x509159[_0x1820('0x30')][_0x1820('0x36')](_0x1820('0x37'))){_0x219d41[_0x1820('0x1f')]=qs[_0x1820('0x1f')](_0x509159['query'][_0x1820('0x1f')]);_0x219d41[_0x1820('0x21')]=qs[_0x1820('0x21')](_0x509159[_0x1820('0x30')]['offset']);}_0x219d41[_0x1820('0x38')]=qs[_0x1820('0x39')](_0x509159['query'][_0x1820('0x39')]);_0x219d41['where']=qs['filters'](_['pick'](_0x509159['query'],_0x512d77[_0x1820('0x32')]),_0x4eb5c4);if(_0x509159[_0x1820('0x30')]['filter']){_0x219d41[_0x1820('0x3a')]=_[_0x1820('0x3b')](_0x219d41[_0x1820('0x3a')],{'$or':_[_0x1820('0x2b')](_0x4eb5c4,function(_0x5381de){if(_0x5381de['type']!==_0x1820('0x3c')){var _0x90f6fb={};_0x90f6fb[_0x5381de[_0x1820('0x29')]]={'$like':'%'+_0x509159[_0x1820('0x30')][_0x1820('0x3d')]+'%'};return _0x90f6fb;}})});}_0x219d41=_[_0x1820('0x3b')]({},_0x219d41,_0x509159[_0x1820('0x3e')]);var _0x55d7c2={'where':_0x219d41[_0x1820('0x3a')]};return db[_0x1820('0x3f')][_0x1820('0x20')](_0x55d7c2)[_0x1820('0x26')](function(_0x5727ae){_0x340297[_0x1820('0x20')]=_0x5727ae;if(_0x509159[_0x1820('0x30')][_0x1820('0x40')]){_0x219d41[_0x1820('0x41')]=[{'all':!![]}];}return db[_0x1820('0x3f')][_0x1820('0x42')](_0x219d41);})[_0x1820('0x26')](function(_0x2db8ea){_0x340297[_0x1820('0x43')]=_0x2db8ea;return _0x340297;})['then'](respondWithFilteredResult(_0x459a46,_0x219d41))[_0x1820('0x44')](handleError(_0x459a46,null));};exports[_0x1820('0x45')]=function(_0x51c342,_0x35ea87){var _0x1fe272={'raw':![],'where':{'id':_0x51c342[_0x1820('0x46')]['id']}},_0x3037fa={};_0x3037fa[_0x1820('0x2f')]=_[_0x1820('0x31')](db[_0x1820('0x3f')][_0x1820('0x2c')]);_0x3037fa[_0x1820('0x30')]=_['keys'](_0x51c342[_0x1820('0x30')]);_0x3037fa[_0x1820('0x32')]=_[_0x1820('0x33')](_0x3037fa['model'],_0x3037fa[_0x1820('0x30')]);_0x1fe272[_0x1820('0x34')]=_[_0x1820('0x33')](_0x3037fa['model'],qs['fields'](_0x51c342[_0x1820('0x30')][_0x1820('0x35')]));_0x1fe272[_0x1820('0x34')]=_0x1fe272[_0x1820('0x34')]['length']?_0x1fe272['attributes']:_0x3037fa[_0x1820('0x2f')];if(_0x51c342['query'][_0x1820('0x40')]){_0x1fe272[_0x1820('0x41')]=[{'all':!![]}];}_0x1fe272=_[_0x1820('0x3b')]({},_0x1fe272,_0x51c342[_0x1820('0x3e')]);return db['VoicePrefix'][_0x1820('0x47')](_0x1fe272)[_0x1820('0x26')](handleEntityNotFound(_0x35ea87,null))[_0x1820('0x26')](respondWithResult(_0x35ea87,null))[_0x1820('0x44')](handleError(_0x35ea87,null));};exports[_0x1820('0x48')]=function(_0x24607e,_0x23b01c){return db[_0x1820('0x3f')][_0x1820('0x47')]({'where':{'id':_0x24607e[_0x1820('0x46')]['id']}})[_0x1820('0x26')](handleEntityNotFound(_0x23b01c,null))[_0x1820('0x26')](removeEntity(_0x23b01c,null))[_0x1820('0x44')](handleError(_0x23b01c,null));};exports['describe']=function(_0x4445dc,_0x5e3868){return db['VoicePrefix'][_0x1820('0x49')]()[_0x1820('0x26')](respondWithResult(_0x5e3868,null))[_0x1820('0x44')](handleError(_0x5e3868,null));};exports[_0x1820('0x4a')]=function(_0x27ff15,_0x353fea){var _0x24fbef;return db[_0x1820('0x4b')][_0x1820('0x4c')](function(_0x1f7521){return db[_0x1820('0x3f')]['create'](_0x27ff15[_0x1820('0x4d')],{'transaction':_0x1f7521})[_0x1820('0x26')](function(_0x1f5611){_0x24fbef=_0x1f5611[_0x1820('0x27')]({'plain':!![]});return db[_0x1820('0x4e')][_0x1820('0x47')]({'where':{'id':_0x24fbef[_0x1820('0x4f')]},'raw':!![]})['then'](function(_0x345330){return createVoicePrefixExtensions(_0x24fbef,_0x345330,_0x1f7521);});});})[_0x1820('0x26')](function(){var _0x372682=_0x27ff15[_0x1820('0x50')][_0x1820('0x27')]({'plain':!![]});if(!_0x372682)throw new Error(_0x1820('0x51'));if(_0x372682[_0x1820('0x52')]===_0x1820('0x50')){var _0x32b2e3=_0x24fbef;return db[_0x1820('0x53')][_0x1820('0x47')]({'where':{'name':_0x1820('0x54'),'userProfileId':_0x372682[_0x1820('0x55')]},'raw':!![]})['then'](function(_0x2ff401){if(_0x2ff401&&_0x2ff401[_0x1820('0x56')]===0x0){return db[_0x1820('0x57')][_0x1820('0x4a')]({'name':_0x32b2e3['name'],'resourceId':_0x32b2e3['id'],'type':_0x2ff401[_0x1820('0x29')],'sectionId':_0x2ff401['id']},{})['then'](function(){return _0x24fbef;});}else{return _0x24fbef;}})[_0x1820('0x44')](function(_0x11fe99){logger[_0x1820('0x28')](_0x1820('0x58'),_0x11fe99);throw _0x11fe99;});}return _0x24fbef;})['then'](respondWithResult(_0x353fea,null))[_0x1820('0x44')](handleError(_0x353fea,null));};function Extension(_0xf1ab90,_0x1c933c,_0x509cc2,_0x351f4a){this[_0x1820('0x59')]=_0x1820('0x5a');this[_0x1820('0x5b')]=_0xf1ab90;this['app']=_0x509cc2;this[_0x1820('0x2e')]=_0x1820('0x5c');this['description']=_0x1820('0x5d');this[_0x1820('0x5e')]=_0x1c933c;this[_0x1820('0x5f')]=_0x351f4a;}function createVoicePrefixExtensions(_0x4adcb1,_0x3d32d8,_0x5aa1d9){return new BPromise(function(_0x518961,_0x2001b2){var _0xfdd76b=new Extension(formatPrefixName(_0x4adcb1[_0x1820('0x60')]),0x1,'NoOp',_0x1820('0x61'));_0xfdd76b[_0x1820('0x62')]=_0x4adcb1['id'];return db['VoiceExtension']['create'](_0xfdd76b,{'transaction':_0x5aa1d9})[_0x1820('0x26')](function(_0x545b21){var _0x394b27=_0x545b21[_0x1820('0x27')]({'plain':!![]});var _0x4106ab=_[_0x1820('0x2b')](addVoicePrefixExtensions(_0x4adcb1,_0x3d32d8),function(_0x98f1d7){_0x98f1d7[_0x1820('0x4f')]=_0x394b27['id'];_0x98f1d7[_0x1820('0x62')]=_0x4adcb1['id'];return _0x98f1d7;});return db[_0x1820('0x4e')][_0x1820('0x63')](_0x4106ab,{'transaction':_0x5aa1d9})[_0x1820('0x26')](function(_0x48a651){if(!_0x48a651){return _0x2001b2(_0x1820('0x64'));}else{return _0x518961(_0x48a651);}})['catch'](function(_0x47fdfe){return _0x2001b2(_0x47fdfe);});});;});};function addVoicePrefixExtensions(_0x5b62e1,_0x44889f){var _0x4b76cd=[];var _0x1a3440=formatPrefixName(_0x5b62e1[_0x1820('0x60')]);_0x4b76cd[_0x1820('0x65')](new Extension(_0x1a3440,0x2,_0x1820('0x66'),'CDR(prefix)='+_0x5b62e1[_0x1820('0x29')]));if(_0x5b62e1['callerIdAll']){_0x4b76cd[_0x1820('0x65')](new Extension(_0x1a3440,0x3,_0x1820('0x66'),_0x1820('0x67')+_0x5b62e1[_0x1820('0x68')]));}else{_0x4b76cd['push'](new Extension(_0x1a3440,0x3,_0x1820('0x69'),'No\x20callerid\x20available'));}_0x4b76cd[_0x1820('0x65')](new Extension(_0x1a3440,0x4,_0x1820('0x6a'),_0x44889f[_0x1820('0x59')]+','+'${EXTEN:'+(0x8+_0x5b62e1['name']['length'])+'}'+','+0x1));return _0x4b76cd;}function formatPrefixName(_0x43dfb9){var _0x51502c='_';for(var _0x3f71c3=0x0;_0x3f71c3<_0x43dfb9[_0x1820('0x6b')];_0x3f71c3++){if(_0x43dfb9['charAt'](_0x3f71c3)=='-'){_0x51502c+=_0x43dfb9[_0x1820('0x6c')](_0x3f71c3);}else{_0x51502c+='['+_0x43dfb9[_0x1820('0x6c')](_0x3f71c3)+']';}}_0x51502c+='.';return _0x51502c;}exports['update']=function(_0x6e072c,_0x3bc5c2,_0x5129cf){var _0x18ea39=_0x6e072c[_0x1820('0x4d')];_0x18ea39[_0x1820('0x60')]=_0x1820('0x6d')+_0x18ea39['name']+'-';return db['sequelize']['transaction'](function(_0x3a3e66){return db[_0x1820('0x3f')][_0x1820('0x6e')](_0x18ea39,{'where':{'id':_0x18ea39['id']},'transaction':_0x3a3e66})['then'](function(){return db[_0x1820('0x4e')][_0x1820('0x48')]({'where':{'VoicePrefixId':_0x18ea39['id']},'transaction':_0x3a3e66})[_0x1820('0x26')](function(){return db[_0x1820('0x4e')][_0x1820('0x47')]({'where':{'id':_0x18ea39['VoiceExtensionId']},'raw':!![]})[_0x1820('0x26')](function(_0xf3bb6f){return createVoicePrefixExtensions(_0x18ea39,_0xf3bb6f,_0x3a3e66);});});});})[_0x1820('0x26')](function(){return db[_0x1820('0x3f')][_0x1820('0x6f')](_0x18ea39['id']);})[_0x1820('0x26')](respondWithResult(_0x3bc5c2,null))[_0x1820('0x44')](handleError(_0x3bc5c2,null));};exports[_0x1820('0x70')]=function(_0x50bb3a,_0x3e356b,_0x2e3547){return db[_0x1820('0x3f')][_0x1820('0x47')]({'where':{'id':_0x50bb3a[_0x1820('0x46')]['id']}})['then'](handleEntityNotFound(_0x3e356b,null))[_0x1820('0x26')](function(_0x3836fc){if(_0x3836fc){return _0x3836fc[_0x1820('0x70')](_0x50bb3a[_0x1820('0x4d')][_0x1820('0x71')],_[_0x1820('0x72')](_0x50bb3a[_0x1820('0x4d')],[_0x1820('0x71'),'id'])||{})[_0x1820('0x73')](function(_0x45148d){for(var _0x1453ed=0x0;_0x1453ed<_0x50bb3a[_0x1820('0x4d')]['ids'][_0x1820('0x6b')];_0x1453ed+=0x1){socket[_0x1820('0x74')](_0x1820('0x75'),{'UserId':Number(_0x50bb3a[_0x1820('0x4d')][_0x1820('0x71')][_0x1453ed]),'VoicePrefixId':Number(_0x50bb3a[_0x1820('0x46')]['id'])});}return _0x45148d;});}})[_0x1820('0x26')](respondWithResult(_0x3e356b,null))['catch'](handleError(_0x3e356b,null));};exports[_0x1820('0x76')]=function(_0x47492f,_0x1e3b08,_0x4a86ba){return db[_0x1820('0x3f')][_0x1820('0x47')]({'where':{'id':_0x47492f[_0x1820('0x46')]['id']}})['then'](handleEntityNotFound(_0x1e3b08,null))[_0x1820('0x26')](function(_0x563f00){if(_0x563f00){return _0x563f00[_0x1820('0x76')](_0x47492f[_0x1820('0x30')][_0x1820('0x71')])['then'](function(){if(_[_0x1820('0x77')](_0x47492f[_0x1820('0x30')][_0x1820('0x71')])){for(var _0x9d2b8a=0x0;_0x9d2b8a<_0x47492f[_0x1820('0x30')][_0x1820('0x71')][_0x1820('0x6b')];_0x9d2b8a+=0x1){socket[_0x1820('0x74')](_0x1820('0x78'),{'UserId':Number(_0x47492f[_0x1820('0x30')][_0x1820('0x71')][_0x9d2b8a]),'VoicePrefixId':Number(_0x47492f[_0x1820('0x46')]['id'])});}}else{socket[_0x1820('0x74')](_0x1820('0x78'),{'UserId':Number(_0x47492f[_0x1820('0x30')]['ids']),'VoicePrefixId':Number(_0x47492f['params']['id'])});}});}})['then'](respondWithStatusCode(_0x1e3b08,null))[_0x1820('0x44')](handleError(_0x1e3b08,null));};exports[_0x1820('0x79')]=function(_0x5ef58a,_0x33a974,_0x319c62){var _0x203f8f={};var _0x20bb2e={};var _0x1ab4a5;var _0x32e897;return db[_0x1820('0x3f')]['findOne']({'where':{'id':_0x5ef58a['params']['id']}})[_0x1820('0x26')](handleEntityNotFound(_0x33a974,null))[_0x1820('0x26')](function(_0x1bd2d4){if(_0x1bd2d4){_0x1ab4a5=_0x1bd2d4;_0x20bb2e['model']=_['keys'](db[_0x1820('0x7a')][_0x1820('0x2c')]);_0x20bb2e['query']=_[_0x1820('0x31')](_0x5ef58a[_0x1820('0x30')]);_0x20bb2e['filters']=_[_0x1820('0x33')](_0x20bb2e['model'],_0x20bb2e[_0x1820('0x30')]);_0x203f8f[_0x1820('0x34')]=_[_0x1820('0x33')](_0x20bb2e[_0x1820('0x2f')],qs['fields'](_0x5ef58a[_0x1820('0x30')]['fields']));_0x203f8f[_0x1820('0x34')]=_0x203f8f[_0x1820('0x34')][_0x1820('0x6b')]?_0x203f8f['attributes']:_0x20bb2e[_0x1820('0x2f')];_0x203f8f[_0x1820('0x38')]=qs[_0x1820('0x39')](_0x5ef58a[_0x1820('0x30')][_0x1820('0x39')]);_0x203f8f[_0x1820('0x3a')]=qs['filters'](_[_0x1820('0x7b')](_0x5ef58a['query'],_0x20bb2e[_0x1820('0x32')]));if(_0x5ef58a[_0x1820('0x30')]['filter']){_0x203f8f[_0x1820('0x3a')]=_['merge'](_0x203f8f[_0x1820('0x3a')],{'$or':_[_0x1820('0x2b')](_0x203f8f[_0x1820('0x34')],function(_0x444c03){var _0x28360d={};_0x28360d[_0x444c03]={'$like':'%'+_0x5ef58a[_0x1820('0x30')][_0x1820('0x3d')]+'%'};return _0x28360d;})});}_0x203f8f=_['merge']({},_0x203f8f,_0x5ef58a[_0x1820('0x3e')]);return _0x1ab4a5['getAgents'](_0x203f8f);}})[_0x1820('0x26')](function(_0x2a4b3e){if(_0x2a4b3e){_0x32e897=_0x2a4b3e[_0x1820('0x6b')];if(!_0x5ef58a['query'][_0x1820('0x36')]('nolimit')){_0x203f8f['limit']=qs[_0x1820('0x1f')](_0x5ef58a['query']['limit']);_0x203f8f[_0x1820('0x21')]=qs[_0x1820('0x21')](_0x5ef58a[_0x1820('0x30')][_0x1820('0x21')]);}return _0x1ab4a5['getAgents'](_0x203f8f);}})['then'](function(_0x196c40){if(_0x196c40){return _0x196c40?{'count':_0x32e897,'rows':_0x196c40}:null;}})[_0x1820('0x26')](respondWithResult(_0x33a974,null))[_0x1820('0x44')](handleError(_0x33a974,null));};
\ No newline at end of file
index 36a4683..0a84d4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7fc=['emit','hasOwnProperty','hook','events','../../mysqldb','setMaxListeners','save','update','remove'];(function(_0xdf1992,_0x241b90){var _0x20ee73=function(_0x33b35f){while(--_0x33b35f){_0xdf1992['push'](_0xdf1992['shift']());}};_0x20ee73(++_0x241b90);}(_0xc7fc,0x78));var _0xcc7f=function(_0x3cbef3,_0x538f91){_0x3cbef3=_0x3cbef3-0x0;var _0x23f26f=_0xc7fc[_0x3cbef3];return _0x23f26f;};'use strict';var EventEmitter=require(_0xcc7f('0x0'));var VoicePrefix=require(_0xcc7f('0x1'))['db']['VoicePrefix'];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0xcc7f('0x2')](0x0);var events={'afterCreate':_0xcc7f('0x3'),'afterUpdate':_0xcc7f('0x4'),'afterDestroy':_0xcc7f('0x5')};function emitEvent(_0x2a6e94){return function(_0x5e6796,_0xc83ce6,_0x5a95f6){VoicePrefixEvents[_0xcc7f('0x6')](_0x2a6e94+':'+_0x5e6796['id'],_0x5e6796);VoicePrefixEvents[_0xcc7f('0x6')](_0x2a6e94,_0x5e6796);_0x5a95f6(null);};}for(var e in events){if(events[_0xcc7f('0x7')](e)){var event=events[e];VoicePrefix[_0xcc7f('0x8')](e,emitEvent(event));}}module['exports']=VoicePrefixEvents;
\ No newline at end of file
+var _0x7307=['emit','hasOwnProperty','hook','exports','../../mysqldb','VoicePrefix','setMaxListeners','save','update','remove'];(function(_0x306159,_0x5caa33){var _0x242168=function(_0x1b580e){while(--_0x1b580e){_0x306159['push'](_0x306159['shift']());}};_0x242168(++_0x5caa33);}(_0x7307,0x176));var _0x7730=function(_0x46d0c9,_0x526bfa){_0x46d0c9=_0x46d0c9-0x0;var _0x174506=_0x7307[_0x46d0c9];return _0x174506;};'use strict';var EventEmitter=require('events');var VoicePrefix=require(_0x7730('0x0'))['db'][_0x7730('0x1')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x7730('0x2')](0x0);var events={'afterCreate':_0x7730('0x3'),'afterUpdate':_0x7730('0x4'),'afterDestroy':_0x7730('0x5')};function emitEvent(_0x24697b){return function(_0x2feeab,_0x394144,_0x15fd6d){VoicePrefixEvents[_0x7730('0x6')](_0x24697b+':'+_0x2feeab['id'],_0x2feeab);VoicePrefixEvents[_0x7730('0x6')](_0x24697b,_0x2feeab);_0x15fd6d(null);};}for(var e in events){if(events[_0x7730('0x7')](e)){var event=events[e];VoicePrefix[_0x7730('0x8')](e,emitEvent(event));}}module[_0x7730('0x9')]=VoicePrefixEvents;
\ No newline at end of file
index 7ebd804..a1f3a36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bf4=['../../config/environment','./voicePrefix.attributes','define','VoicePrefix','lodash','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x6bf4,0x1e4));var _0x46bf=function(_0x49ea18,_0x4b4bb4){_0x49ea18=_0x49ea18-0x0;var _0x4cc5d5=_0x6bf4[_0x49ea18];return _0x4cc5d5;};'use strict';var _=require(_0x46bf('0x0'));var util=require(_0x46bf('0x1'));var logger=require('../../config/logger')(_0x46bf('0x2'));var moment=require(_0x46bf('0x3'));var BPromise=require(_0x46bf('0x4'));var rp=require(_0x46bf('0x5'));var fs=require('fs');var path=require(_0x46bf('0x6'));var rimraf=require(_0x46bf('0x7'));var config=require(_0x46bf('0x8'));var attributes=require(_0x46bf('0x9'));module['exports']=function(_0x4d2e20,_0x358315){return _0x4d2e20[_0x46bf('0xa')](_0x46bf('0xb'),attributes,{'tableName':'voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5b19=['util','../../config/logger','moment','bluebird','path','../../config/environment','./voicePrefix.attributes','exports','VoicePrefix','voice_prefixes','lodash'];(function(_0x483094,_0x455752){var _0x27c52d=function(_0x59efce){while(--_0x59efce){_0x483094['push'](_0x483094['shift']());}};_0x27c52d(++_0x455752);}(_0x5b19,0x16a));var _0x95b1=function(_0x132f56,_0x1d7070){_0x132f56=_0x132f56-0x0;var _0x2e5305=_0x5b19[_0x132f56];return _0x2e5305;};'use strict';var _=require(_0x95b1('0x0'));var util=require(_0x95b1('0x1'));var logger=require(_0x95b1('0x2'))('api');var moment=require(_0x95b1('0x3'));var BPromise=require(_0x95b1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x95b1('0x5'));var rimraf=require('rimraf');var config=require(_0x95b1('0x6'));var attributes=require(_0x95b1('0x7'));module[_0x95b1('0x8')]=function(_0x3a19ec,_0x2c320a){return _0x3a19ec['define'](_0x95b1('0x9'),attributes,{'tableName':_0x95b1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0d6312a..5a50f61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83d0=['request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','then','VoicePrefix,\x20%s,\x20%s'];(function(_0x64a90e,_0x5f25af){var _0x50cf47=function(_0x55bc45){while(--_0x55bc45){_0x64a90e['push'](_0x64a90e['shift']());}};_0x50cf47(++_0x5f25af);}(_0x83d0,0xb7));var _0x083d=function(_0x383d6c,_0x4b5e1d){_0x383d6c=_0x383d6c-0x0;var _0x101bec=_0x83d0[_0x383d6c];return _0x101bec;};'use strict';var _=require(_0x083d('0x0'));var util=require(_0x083d('0x1'));var moment=require(_0x083d('0x2'));var BPromise=require(_0x083d('0x3'));var rs=require(_0x083d('0x4'));var fs=require('fs');var Redis=require(_0x083d('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x083d('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x083d('0x7'));var jayson=require(_0x083d('0x8'));var client=jayson[_0x083d('0x9')][_0x083d('0xa')]({'port':0x232a});config[_0x083d('0xb')]=_['defaults'](config['redis'],{'host':_0x083d('0xc'),'port':0x18eb});var socket=require(_0x083d('0xd'))(new Redis(config[_0x083d('0xb')]));require('./voicePrefix.socket')[_0x083d('0xe')](socket);function respondWithRpcPromise(_0x412ea9,_0x40f5ed,_0xcf2319){return new BPromise(function(_0x4c7ec1,_0x3473fa){return client['request'](_0x412ea9,_0xcf2319)[_0x083d('0xf')](function(_0x403441){logger['info'](_0x083d('0x10'),_0x40f5ed,_0x083d('0x11'));logger[_0x083d('0x12')](_0x083d('0x13'),_0x40f5ed,_0x083d('0x11'),JSON['stringify'](_0x403441));if(_0x403441[_0x083d('0x14')]){if(_0x403441[_0x083d('0x14')]['code']===0x1f4){logger[_0x083d('0x14')]('VoicePrefix,\x20%s,\x20%s',_0x40f5ed,_0x403441['error'][_0x083d('0x15')]);return _0x3473fa(_0x403441[_0x083d('0x14')][_0x083d('0x15')]);}logger[_0x083d('0x14')](_0x083d('0x10'),_0x40f5ed,_0x403441['error'][_0x083d('0x15')]);return _0x4c7ec1(_0x403441['error'][_0x083d('0x15')]);}else{logger[_0x083d('0x16')](_0x083d('0x10'),_0x40f5ed,_0x083d('0x11'));_0x4c7ec1(_0x403441[_0x083d('0x17')][_0x083d('0x15')]);}})[_0x083d('0x18')](function(_0x3a3dd3){logger[_0x083d('0x14')](_0x083d('0x10'),_0x40f5ed,_0x3a3dd3);_0x3473fa(_0x3a3dd3);});});}
\ No newline at end of file
+var _0x1921=['then','info','VoicePrefix,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./voicePrefix.socket','register','request'];(function(_0x4d07cc,_0x587613){var _0x42de3b=function(_0x201f78){while(--_0x201f78){_0x4d07cc['push'](_0x4d07cc['shift']());}};_0x42de3b(++_0x587613);}(_0x1921,0xf2));var _0x1192=function(_0x159d7e,_0x424488){_0x159d7e=_0x159d7e-0x0;var _0x9ad89=_0x1921[_0x159d7e];return _0x9ad89;};'use strict';var _=require(_0x1192('0x0'));var util=require('util');var moment=require(_0x1192('0x1'));var BPromise=require(_0x1192('0x2'));var rs=require(_0x1192('0x3'));var fs=require('fs');var Redis=require(_0x1192('0x4'));var db=require(_0x1192('0x5'))['db'];var utils=require(_0x1192('0x6'));var logger=require(_0x1192('0x7'))(_0x1192('0x8'));var config=require(_0x1192('0x9'));var jayson=require(_0x1192('0xa'));var client=jayson[_0x1192('0xb')]['http']({'port':0x232a});config['redis']=_[_0x1192('0xc')](config[_0x1192('0xd')],{'host':_0x1192('0xe'),'port':0x18eb});var socket=require(_0x1192('0xf'))(new Redis(config[_0x1192('0xd')]));require(_0x1192('0x10'))[_0x1192('0x11')](socket);function respondWithRpcPromise(_0x34002b,_0x50af83,_0x53a796){return new BPromise(function(_0x403518,_0x27b5b2){return client[_0x1192('0x12')](_0x34002b,_0x53a796)[_0x1192('0x13')](function(_0x46465c){logger[_0x1192('0x14')](_0x1192('0x15'),_0x50af83,'request\x20sent');logger[_0x1192('0x16')]('VoicePrefix,\x20%s,\x20%s,\x20%s',_0x50af83,_0x1192('0x17'),JSON[_0x1192('0x18')](_0x46465c));if(_0x46465c['error']){if(_0x46465c[_0x1192('0x19')][_0x1192('0x1a')]===0x1f4){logger[_0x1192('0x19')]('VoicePrefix,\x20%s,\x20%s',_0x50af83,_0x46465c[_0x1192('0x19')][_0x1192('0x1b')]);return _0x27b5b2(_0x46465c['error'][_0x1192('0x1b')]);}logger[_0x1192('0x19')](_0x1192('0x15'),_0x50af83,_0x46465c['error'][_0x1192('0x1b')]);return _0x403518(_0x46465c['error'][_0x1192('0x1b')]);}else{logger[_0x1192('0x14')](_0x1192('0x15'),_0x50af83,_0x1192('0x17'));_0x403518(_0x46465c[_0x1192('0x1c')][_0x1192('0x1b')]);}})['catch'](function(_0x4f72d7){logger[_0x1192('0x19')](_0x1192('0x15'),_0x50af83,_0x4f72d7);_0x27b5b2(_0x4f72d7);});});}
\ No newline at end of file
index 06f9afe..7bea5f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5b5=['length','voicePrefix:','./voicePrefix.events','save','remove','update','emit','removeListener','register'];(function(_0x18a79d,_0x57bd2c){var _0x4f8848=function(_0x28af80){while(--_0x28af80){_0x18a79d['push'](_0x18a79d['shift']());}};_0x4f8848(++_0x57bd2c);}(_0xe5b5,0x12b));var _0x5e5b=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xe5b5[_0x432682];return _0x463d05;};'use strict';var VoicePrefixEvents=require(_0x5e5b('0x0'));var events=[_0x5e5b('0x1'),_0x5e5b('0x2'),_0x5e5b('0x3')];function createListener(_0x208070,_0x4263e){return function(_0x33e813){_0x4263e[_0x5e5b('0x4')](_0x208070,_0x33e813);};}function removeListener(_0xf20c6a,_0x20a50c){return function(){VoicePrefixEvents[_0x5e5b('0x5')](_0xf20c6a,_0x20a50c);};}exports[_0x5e5b('0x6')]=function(_0xf1fbe2){for(var _0x11e0e0=0x0,_0x545eb3=events[_0x5e5b('0x7')];_0x11e0e0<_0x545eb3;_0x11e0e0++){var _0xe089b1=events[_0x11e0e0];var _0xcbd478=createListener(_0x5e5b('0x8')+_0xe089b1,_0xf1fbe2);VoicePrefixEvents['on'](_0xe089b1,_0xcbd478);}};
\ No newline at end of file
+var _0x3eec=['voicePrefix:','./voicePrefix.events','save','remove','update','emit','removeListener','length'];(function(_0xa6d4d5,_0x1f691e){var _0x51cb90=function(_0x2b17f2){while(--_0x2b17f2){_0xa6d4d5['push'](_0xa6d4d5['shift']());}};_0x51cb90(++_0x1f691e);}(_0x3eec,0x1e9));var _0xc3ee=function(_0x9250d6,_0x5030a7){_0x9250d6=_0x9250d6-0x0;var _0x2b636a=_0x3eec[_0x9250d6];return _0x2b636a;};'use strict';var VoicePrefixEvents=require(_0xc3ee('0x0'));var events=[_0xc3ee('0x1'),_0xc3ee('0x2'),_0xc3ee('0x3')];function createListener(_0x484ade,_0x223d08){return function(_0x280209){_0x223d08[_0xc3ee('0x4')](_0x484ade,_0x280209);};}function removeListener(_0x35b2fb,_0x25074b){return function(){VoicePrefixEvents[_0xc3ee('0x5')](_0x35b2fb,_0x25074b);};}exports['register']=function(_0x471de7){for(var _0xbd5b6=0x0,_0xea4318=events[_0xc3ee('0x6')];_0xbd5b6<_0xea4318;_0xbd5b6++){var _0x356374=events[_0xbd5b6];var _0x3d74c0=createListener(_0xc3ee('0x7')+_0x356374,_0x471de7);VoicePrefixEvents['on'](_0x356374,_0x3d74c0);}};
\ No newline at end of file
index 78d9bce..e974246 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3193=['create','/:id/clone','clone','addTeams','/:id/users','addLists','/:id','destroy','removeTeams','delete','removeBlackLists','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','show','/:id/hoppers','getHoppers','getHopperHistories','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/teams','getAgents','/:id/members','/:id/lists','/:id/blacklists','getBlackLists','post'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x3193,0xbf));var _0x3319=function(_0x53ba68,_0x39cda5){_0x53ba68=_0x53ba68-0x0;var _0x4089eb=_0x3193[_0x53ba68];return _0x4089eb;};'use strict';var multer=require('multer');var util=require(_0x3319('0x0'));var path=require(_0x3319('0x1'));var timeout=require(_0x3319('0x2'));var express=require(_0x3319('0x3'));var router=express[_0x3319('0x4')]();var fs_extra=require(_0x3319('0x5'));var auth=require(_0x3319('0x6'));var interaction=require(_0x3319('0x7'));var config=require(_0x3319('0x8'));var controller=require('./voiceQueue.controller');router['get']('/',auth[_0x3319('0x9')](),controller['index']);router[_0x3319('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x3319('0xb')]);router['get'](_0x3319('0xc'),auth[_0x3319('0x9')](),controller[_0x3319('0xd')]);router[_0x3319('0xa')]('/:id/hopper_histories',auth[_0x3319('0x9')](),controller[_0x3319('0xe')]);router[_0x3319('0xa')]('/:id/hopper_finals',auth[_0x3319('0x9')](),controller[_0x3319('0xf')]);router['get'](_0x3319('0x10'),auth[_0x3319('0x9')](),controller[_0x3319('0x11')]);router[_0x3319('0xa')](_0x3319('0x12'),auth[_0x3319('0x9')](),controller['getTeams']);router[_0x3319('0xa')]('/:id/users',auth[_0x3319('0x9')](),controller[_0x3319('0x13')]);router['get'](_0x3319('0x14'),auth[_0x3319('0x9')](),controller['getMembers']);router[_0x3319('0xa')](_0x3319('0x15'),auth['isAuthenticated'](),controller['getLists']);router['get'](_0x3319('0x16'),auth[_0x3319('0x9')](),controller[_0x3319('0x17')]);router[_0x3319('0x18')]('/',auth[_0x3319('0x9')](),controller[_0x3319('0x19')]);router[_0x3319('0x18')](_0x3319('0x1a'),auth['isAuthenticated'](),controller[_0x3319('0x1b')]);router['post'](_0x3319('0x12'),auth['isAuthenticated'](),controller[_0x3319('0x1c')]);router[_0x3319('0x18')](_0x3319('0x1d'),auth[_0x3319('0x9')](),controller['addAgents']);router[_0x3319('0x18')](_0x3319('0x15'),auth['isAuthenticated'](),controller[_0x3319('0x1e')]);router[_0x3319('0x18')](_0x3319('0x16'),auth[_0x3319('0x9')](),controller['addBlackLists']);router['put']('/:id',auth[_0x3319('0x9')](),controller['update']);router['delete'](_0x3319('0x1f'),auth['isAuthenticated'](),controller[_0x3319('0x20')]);router['delete'](_0x3319('0x12'),auth['isAuthenticated'](),controller[_0x3319('0x21')]);router[_0x3319('0x22')](_0x3319('0x1d'),auth['isAuthenticated'](),controller['removeAgents']);router['delete'](_0x3319('0x15'),auth['isAuthenticated'](),controller['removeLists']);router[_0x3319('0x22')](_0x3319('0x16'),auth[_0x3319('0x9')](),controller[_0x3319('0x23')]);module['exports']=router;
\ No newline at end of file
+var _0x23f4=['getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/teams','getTeams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone','addAgents','put','update','delete','removeTeams','removeAgents','removeBlackLists','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceQueue.controller','get','isAuthenticated','/:id','show'];(function(_0x5ad0e1,_0x2466be){var _0x355c7b=function(_0x303667){while(--_0x303667){_0x5ad0e1['push'](_0x5ad0e1['shift']());}};_0x355c7b(++_0x2466be);}(_0x23f4,0x6e));var _0x423f=function(_0x29e425,_0x379de6){_0x29e425=_0x29e425-0x0;var _0x56741d=_0x23f4[_0x29e425];return _0x56741d;};'use strict';var multer=require(_0x423f('0x0'));var util=require(_0x423f('0x1'));var path=require(_0x423f('0x2'));var timeout=require(_0x423f('0x3'));var express=require('express');var router=express[_0x423f('0x4')]();var fs_extra=require(_0x423f('0x5'));var auth=require(_0x423f('0x6'));var interaction=require(_0x423f('0x7'));var config=require('../../config/environment');var controller=require(_0x423f('0x8'));router[_0x423f('0x9')]('/',auth[_0x423f('0xa')](),controller['index']);router[_0x423f('0x9')](_0x423f('0xb'),auth[_0x423f('0xa')](),controller[_0x423f('0xc')]);router[_0x423f('0x9')]('/:id/hoppers',auth[_0x423f('0xa')](),controller[_0x423f('0xd')]);router['get'](_0x423f('0xe'),auth[_0x423f('0xa')](),controller[_0x423f('0xf')]);router['get'](_0x423f('0x10'),auth[_0x423f('0xa')](),controller[_0x423f('0x11')]);router[_0x423f('0x9')](_0x423f('0x12'),auth['isAuthenticated'](),controller[_0x423f('0x13')]);router['get'](_0x423f('0x14'),auth[_0x423f('0xa')](),controller[_0x423f('0x15')]);router[_0x423f('0x9')](_0x423f('0x16'),auth[_0x423f('0xa')](),controller[_0x423f('0x17')]);router[_0x423f('0x9')](_0x423f('0x18'),auth[_0x423f('0xa')](),controller[_0x423f('0x19')]);router['get'](_0x423f('0x1a'),auth['isAuthenticated'](),controller[_0x423f('0x1b')]);router[_0x423f('0x9')](_0x423f('0x1c'),auth[_0x423f('0xa')](),controller[_0x423f('0x1d')]);router[_0x423f('0x1e')]('/',auth[_0x423f('0xa')](),controller[_0x423f('0x1f')]);router[_0x423f('0x1e')](_0x423f('0x20'),auth[_0x423f('0xa')](),controller[_0x423f('0x21')]);router[_0x423f('0x1e')]('/:id/teams',auth[_0x423f('0xa')](),controller['addTeams']);router[_0x423f('0x1e')](_0x423f('0x16'),auth['isAuthenticated'](),controller[_0x423f('0x22')]);router[_0x423f('0x1e')](_0x423f('0x1a'),auth['isAuthenticated'](),controller['addLists']);router['post'](_0x423f('0x1c'),auth[_0x423f('0xa')](),controller['addBlackLists']);router[_0x423f('0x23')]('/:id',auth[_0x423f('0xa')](),controller[_0x423f('0x24')]);router[_0x423f('0x25')](_0x423f('0xb'),auth[_0x423f('0xa')](),controller['destroy']);router[_0x423f('0x25')](_0x423f('0x14'),auth[_0x423f('0xa')](),controller[_0x423f('0x26')]);router[_0x423f('0x25')](_0x423f('0x16'),auth[_0x423f('0xa')](),controller[_0x423f('0x27')]);router['delete'](_0x423f('0x1a'),auth[_0x423f('0xa')](),controller['removeLists']);router[_0x423f('0x25')](_0x423f('0x1c'),auth['isAuthenticated'](),controller[_0x423f('0x28')]);module['exports']=router;
\ No newline at end of file
index 0439fb6..62dd23b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x635c=['#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','mandatoryDispositionPauseId','exports','STRING','name','ENUM','outbound','inbound','default','ringall','fewestcalls','random','rrmemory','wrandom','rrordered','setDataValue','strategy','getDataValue','type','dialMethod','booked','progressive','predictive','power','INTEGER','yes','all','once','TEXT','periodic_announce','join','split','joinempty','leavewhenempty','BOOLEAN','acw','wrapuptime','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.','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','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>)','#Busy\x20Retry\x20(min:1,\x20max:999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','always','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)'];(function(_0x1785e8,_0x492aac){var _0x5e6021=function(_0x312e79){while(--_0x312e79){_0x1785e8['push'](_0x1785e8['shift']());}};_0x5e6021(++_0x492aac);}(_0x635c,0xa1));var _0xc635=function(_0x260b9d,_0x1b940f){_0x260b9d=_0x260b9d-0x0;var _0x262455=_0x635c[_0x260b9d];return _0x262455;};'use strict';var Sequelize=require('sequelize');module[_0xc635('0x0')]={'name':{'type':Sequelize[_0xc635('0x1')],'allowNull':![],'unique':_0xc635('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xc635('0x3')]('inbound',_0xc635('0x4')),'allowNull':![],'defaultValue':_0xc635('0x5')},'musiconhold':{'type':Sequelize[_0xc635('0x1')],'defaultValue':_0xc635('0x6')},'announce':{'type':Sequelize[_0xc635('0x1')],'defaultValue':''},'strategy':{'type':Sequelize[_0xc635('0x3')]('rr',_0xc635('0x7'),'leastrecent',_0xc635('0x8'),_0xc635('0x9'),_0xc635('0xa'),'linear',_0xc635('0xb'),_0xc635('0xc')),'allowNull':![],'defaultValue':_0xc635('0x7'),'set':function(_0x2907af){this[_0xc635('0xd')](_0xc635('0xe'),_0x2907af?_0x2907af:_0xc635('0xa'));},'get':function(){var _0x1bee53=this[_0xc635('0xf')](_0xc635('0x10'));var _0x58b269=this[_0xc635('0xf')](_0xc635('0x11'));var _0x248562=this[_0xc635('0xf')]('strategy');if(_0x1bee53===_0xc635('0x5')){return _0x248562;}if(_0x58b269===_0xc635('0x12')&&_0x248562===_0xc635('0xa')||_0x58b269==='booked'&&_0x248562==='roundrobin'){return _0x248562;}if(_0x58b269===_0xc635('0x13')||_0x58b269===_0xc635('0x14')||_0x58b269===_0xc635('0x15')){return _0x248562;}return null;}},'servicelevel':{'type':Sequelize[_0xc635('0x16')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xc635('0x1')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0xc635('0x16')](0xb)},'timeout':{'type':Sequelize[_0xc635('0x16')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xc635('0x16')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xc635('0x1')]},'weight':{'type':Sequelize[_0xc635('0x16')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xc635('0x3')](_0xc635('0x17'),'no'),'defaultValue':'yes'},'autopause':{'type':Sequelize[_0xc635('0x3')](_0xc635('0x17'),'no',_0xc635('0x18')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xc635('0x16')](0xb)},'autopausebusy':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xc635('0x3')](_0xc635('0x17'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xc635('0x16')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xc635('0x3')](_0xc635('0x17'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize['ENUM'](_0xc635('0x17'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xc635('0x3')]('yes','no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xc635('0x3')](_0xc635('0x17'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xc635('0x1')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xc635('0x1')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0xc635('0x16')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0xc635('0x16')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0xc635('0x3')]('yes','no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xc635('0x3')]('yes','no'),'defaultValue':_0xc635('0x17')},'announce_holdtime':{'type':Sequelize[_0xc635('0x3')](_0xc635('0x17'),'no',_0xc635('0x19')),'defaultValue':'no'},'announce_position':{'type':Sequelize['STRING'],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xc635('0x3')]('yes','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[_0xc635('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0xc635('0x1')]},'queue_youarenext':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xc635('0x1')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xc635('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xc635('0x1')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xc635('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize['STRING'],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xc635('0x1')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xc635('0x1')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xc635('0x1')]},'queue_quantity1':{'type':Sequelize['STRING']},'queue_quantity2':{'type':Sequelize[_0xc635('0x1')]},'queue_periodic_announce':{'type':Sequelize[_0xc635('0x1')]},'queue_less_than':{'type':Sequelize[_0xc635('0x1')]},'periodic_announce':{'type':Sequelize[_0xc635('0x1a')],'set':function(_0x20f7f1){this[_0xc635('0xd')](_0xc635('0x1b'),_0x20f7f1?_0x20f7f1[_0xc635('0x1c')](','):[]);},'get':function(){return this['getDataValue'](_0xc635('0x1b'))?this[_0xc635('0xf')](_0xc635('0x1b'))[_0xc635('0x1d')](','):[];}},'joinempty':{'type':Sequelize[_0xc635('0x1')],'defaultValue':'yes','set':function(_0x4b4156){this[_0xc635('0xd')]('joinempty',_0x4b4156?_0x4b4156[_0xc635('0x1c')](','):undefined);},'get':function(){return this[_0xc635('0xf')]('joinempty')?this[_0xc635('0xf')](_0xc635('0x1e'))['split'](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0xc635('0x1')],'defaultValue':'no','set':function(_0x581440){this[_0xc635('0xd')]('leavewhenempty',_0x581440?_0x581440['join'](','):undefined);},'get':function(){return this[_0xc635('0xf')](_0xc635('0x1f'))?this[_0xc635('0xf')](_0xc635('0x1f'))[_0xc635('0x1d')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0xc635('0x3')](_0xc635('0x17'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xc635('0x3')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0xc635('0x16')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xc635('0x3')](_0xc635('0x17'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xc635('0x1')]},'description':{'type':Sequelize[_0xc635('0x1')]},'acw':{'type':Sequelize[_0xc635('0x20')],'defaultValue':0x0,'set':function(_0x39fe9f){this[_0xc635('0xd')](_0xc635('0x21'),_0x39fe9f);if(_0x39fe9f){if(this[_0xc635('0xf')](_0xc635('0x22'))<0x2){this['setDataValue']('wrapuptime',0x2);}}}},'acwTimeout':{'type':Sequelize[_0xc635('0x16')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xc635('0x23')},'dialMethod':{'type':Sequelize[_0xc635('0x3')](_0xc635('0x24'),'progressive','power','predictive','booked'),'defaultValue':_0xc635('0x13'),'comment':_0xc635('0x25')},'dialLimitChannel':{'type':Sequelize['INTEGER'](0x4)[_0xc635('0x26')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xc635('0x27')},'dialLimitQueue':{'type':Sequelize['INTEGER'](0x4)[_0xc635('0x26')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xc635('0x28')},'dialPowerLevel':{'type':Sequelize[_0xc635('0x29')](0x2)['UNSIGNED'],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xc635('0x2a')},'dialPredictiveOptimization':{'type':Sequelize['ENUM'](_0xc635('0x2b'),_0xc635('0x2c')),'defaultValue':_0xc635('0x2c'),'comment':_0xc635('0x2d')},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)[_0xc635('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize[_0xc635('0x16')](0x3)[_0xc635('0x26')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xc635('0x2e')},'dialOriginateCallerIdName':{'type':Sequelize[_0xc635('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xc635('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0xc635('0x16')](0x3)[_0xc635('0x26')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueOptions':{'type':Sequelize[_0xc635('0x1')],'defaultValue':_0xc635('0x2f'),'comment':_0xc635('0x30')},'dialQueueTimeout':{'type':Sequelize[_0xc635('0x16')](0x3)[_0xc635('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc635('0x31')},'dialQueueProject':{'type':Sequelize['STRING'],'comment':_0xc635('0x32')},'dialCongestionMaxRetry':{'type':Sequelize[_0xc635('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0xc635('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc635('0x33')},'dialBusyRetryFrequency':{'type':Sequelize[_0xc635('0x16')](0x5)[_0xc635('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xc635('0x16')](0x3)[_0xc635('0x26')],'defaultValue':0x3,'comment':_0xc635('0x34')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xc635('0x16')](0x5)[_0xc635('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc635('0x35')},'dialGlobalMaxRetry':{'type':Sequelize[_0xc635('0x16')](0x3)[_0xc635('0x26')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xc635('0x36')},'dialTimezone':{'type':Sequelize[_0xc635('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xc635('0x1')],'defaultValue':'07:00-22:00,*,*,*'},'dialPrefix':{'type':Sequelize[_0xc635('0x1')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0xc635('0x3')](_0xc635('0x37'),'never','onlyIfOpen'),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0xc635('0x20')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0xc635('0x16')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xc635('0x38')},'dialAMDGreeting':{'type':Sequelize[_0xc635('0x16')](0x9)[_0xc635('0x26')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xc635('0x39')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xc635('0x16')](0x9)[_0xc635('0x26')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xc635('0x3a')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xc635('0x16')](0x9)[_0xc635('0x26')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xc635('0x3b')},'dialAMDMinWordLength':{'type':Sequelize[_0xc635('0x16')](0x9)[_0xc635('0x26')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xc635('0x3c')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0xc635('0x26')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xc635('0x3d')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xc635('0x3e')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xc635('0x16')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xc635('0x3f')},'dialRecallMeTimeout':{'type':Sequelize[_0xc635('0x16')](0x5)[_0xc635('0x26')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xc635('0x40')},'dialRecallInQueue':{'type':Sequelize[_0xc635('0x20')],'defaultValue':0x0,'comment':_0xc635('0x41')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0xc635('0x42'),_0xc635('0x43')),'defaultValue':_0xc635('0x42')},'dialQueueProject2':{'type':Sequelize['STRING'],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialAgiAfterHangupClient':{'type':Sequelize[_0xc635('0x20')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xc635('0x20')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xc635('0x16')](0x3)[_0xc635('0x26')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc635('0x44')},'dialCutDigit':{'type':Sequelize[_0xc635('0x16')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc635('0x45')},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xc635('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc635('0x46')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xc635('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize[_0xc635('0x16')](0x3)[_0xc635('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xc635('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc635('0x47')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xc635('0x16')](0x3)[_0xc635('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc635('0x48')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xc635('0x16')](0x5)[_0xc635('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc635('0x49')},'dialMachineMaxRetry':{'type':Sequelize[_0xc635('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0xc635('0x16')](0x5)[_0xc635('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc635('0x4a')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xc635('0x16')](0x3)[_0xc635('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc635('0x4b')},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xc635('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xc635('0x20')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x4edcb2){if(!_0x4edcb2)this[_0xc635('0xd')](_0xc635('0x4c'),null);this[_0xc635('0xd')]('mandatoryDisposition',_0x4edcb2);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize['INTEGER'](0x3)[_0xc635('0x26')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0xc635('0x16')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
+var _0x6a39=['#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)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDisposition','sequelize','exports','STRING','name','ENUM','inbound','default','ringall','leastrecent','fewestcalls','random','rrmemory','wrandom','rrordered','setDataValue','strategy','getDataValue','type','dialMethod','booked','progressive','predictive','power','INTEGER','yes','all','once','TEXT','periodic_announce','join','split','joinempty','leavewhenempty','acw','wrapuptime','BOOLEAN','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\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','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','07:00-22:00,*,*,*','never','onlyIfOpen','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','ASC','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'];(function(_0x1b9cb8,_0x47ba43){var _0x2db519=function(_0x3207f4){while(--_0x3207f4){_0x1b9cb8['push'](_0x1b9cb8['shift']());}};_0x2db519(++_0x47ba43);}(_0x6a39,0x140));var _0x96a3=function(_0x107844,_0x41926f){_0x107844=_0x107844-0x0;var _0x40c2b5=_0x6a39[_0x107844];return _0x40c2b5;};'use strict';var Sequelize=require(_0x96a3('0x0'));module[_0x96a3('0x1')]={'name':{'type':Sequelize[_0x96a3('0x2')],'allowNull':![],'unique':_0x96a3('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x96a3('0x4')](_0x96a3('0x5'),'outbound'),'allowNull':![],'defaultValue':_0x96a3('0x5')},'musiconhold':{'type':Sequelize[_0x96a3('0x2')],'defaultValue':_0x96a3('0x6')},'announce':{'type':Sequelize[_0x96a3('0x2')],'defaultValue':''},'strategy':{'type':Sequelize[_0x96a3('0x4')]('rr',_0x96a3('0x7'),_0x96a3('0x8'),_0x96a3('0x9'),_0x96a3('0xa'),_0x96a3('0xb'),'linear',_0x96a3('0xc'),_0x96a3('0xd')),'allowNull':![],'defaultValue':_0x96a3('0x7'),'set':function(_0x4fae13){this[_0x96a3('0xe')](_0x96a3('0xf'),_0x4fae13?_0x4fae13:_0x96a3('0xb'));},'get':function(){var _0x41ac35=this[_0x96a3('0x10')](_0x96a3('0x11'));var _0x3baa38=this[_0x96a3('0x10')](_0x96a3('0x12'));var _0x1312be=this['getDataValue'](_0x96a3('0xf'));if(_0x41ac35==='inbound'){return _0x1312be;}if(_0x3baa38===_0x96a3('0x13')&&_0x1312be==='rrmemory'||_0x3baa38===_0x96a3('0x13')&&_0x1312be==='roundrobin'){return _0x1312be;}if(_0x3baa38===_0x96a3('0x14')||_0x3baa38===_0x96a3('0x15')||_0x3baa38===_0x96a3('0x16')){return _0x1312be;}return null;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x96a3('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x96a3('0x17')](0xb)},'timeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xf},'retry':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x96a3('0x2')]},'weight':{'type':Sequelize[_0x96a3('0x17')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x96a3('0x17')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x96a3('0x4')]('yes','no'),'defaultValue':_0x96a3('0x18')},'autopause':{'type':Sequelize[_0x96a3('0x4')]('yes','no',_0x96a3('0x19')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x96a3('0x17')](0xb)},'autopausebusy':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize['ENUM'](_0x96a3('0x18'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x96a3('0x17')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x96a3('0x4')](_0x96a3('0x18'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize['ENUM'](_0x96a3('0x18'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x96a3('0x4')](_0x96a3('0x18'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize['ENUM'](_0x96a3('0x18'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x96a3('0x2')],'allowNull':!![]},'membergosub':{'type':Sequelize['STRING'],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x96a3('0x17')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x96a3('0x17')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x96a3('0x17')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x96a3('0x4')](_0x96a3('0x18'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize['ENUM'](_0x96a3('0x18'),'no'),'defaultValue':'yes'},'announce_holdtime':{'type':Sequelize[_0x96a3('0x4')](_0x96a3('0x18'),'no',_0x96a3('0x1a')),'defaultValue':'no'},'announce_position':{'type':Sequelize['STRING'],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x96a3('0x4')](_0x96a3('0x18'),'no')},'announce_position_limit':{'type':Sequelize[_0x96a3('0x17')](0xb)},'announce_round_seconds':{'type':Sequelize[_0x96a3('0x4')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x96a3('0x2')],'defaultValue':''},'monitor_type':{'type':Sequelize['STRING']},'queue_youarenext':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x96a3('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x96a3('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x96a3('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x96a3('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x96a3('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x96a3('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x96a3('0x2')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x96a3('0x2')]},'queue_quantity1':{'type':Sequelize[_0x96a3('0x2')]},'queue_quantity2':{'type':Sequelize[_0x96a3('0x2')]},'queue_periodic_announce':{'type':Sequelize[_0x96a3('0x2')]},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize[_0x96a3('0x1b')],'set':function(_0x30c1bb){this[_0x96a3('0xe')](_0x96a3('0x1c'),_0x30c1bb?_0x30c1bb[_0x96a3('0x1d')](','):[]);},'get':function(){return this[_0x96a3('0x10')](_0x96a3('0x1c'))?this[_0x96a3('0x10')](_0x96a3('0x1c'))[_0x96a3('0x1e')](','):[];}},'joinempty':{'type':Sequelize['STRING'],'defaultValue':_0x96a3('0x18'),'set':function(_0x47f749){this[_0x96a3('0xe')](_0x96a3('0x1f'),_0x47f749?_0x47f749['join'](','):undefined);},'get':function(){return this[_0x96a3('0x10')]('joinempty')?this['getDataValue'](_0x96a3('0x1f'))['split'](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x96a3('0x2')],'defaultValue':'no','set':function(_0x14c94b){this[_0x96a3('0xe')](_0x96a3('0x20'),_0x14c94b?_0x14c94b['join'](','):undefined);},'get':function(){return this[_0x96a3('0x10')](_0x96a3('0x20'))?this[_0x96a3('0x10')](_0x96a3('0x20'))[_0x96a3('0x1e')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x96a3('0x4')](_0x96a3('0x18'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize['ENUM'](_0x96a3('0x18'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x96a3('0x17')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x96a3('0x4')](_0x96a3('0x18'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x96a3('0x2')]},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x3a21e2){this[_0x96a3('0xe')](_0x96a3('0x21'),_0x3a21e2);if(_0x3a21e2){if(this[_0x96a3('0x10')](_0x96a3('0x22'))<0x2){this[_0x96a3('0xe')]('wrapuptime',0x2);}}}},'acwTimeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x96a3('0x23')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize[_0x96a3('0x4')]('preview',_0x96a3('0x14'),_0x96a3('0x16'),_0x96a3('0x15'),'booked'),'defaultValue':_0x96a3('0x14'),'comment':_0x96a3('0x24')},'dialLimitChannel':{'type':Sequelize[_0x96a3('0x17')](0x4)[_0x96a3('0x25')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x96a3('0x26')},'dialLimitQueue':{'type':Sequelize[_0x96a3('0x17')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.'},'dialPowerLevel':{'type':Sequelize[_0x96a3('0x27')](0x2)[_0x96a3('0x25')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x96a3('0x28')},'dialPredictiveOptimization':{'type':Sequelize[_0x96a3('0x4')](_0x96a3('0x29'),'dropRate'),'defaultValue':_0x96a3('0x2a'),'comment':_0x96a3('0x2b')},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)[_0x96a3('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x96a3('0x2c')},'dialPredictiveInterval':{'type':Sequelize[_0x96a3('0x17')](0x3)[_0x96a3('0x25')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x96a3('0x2d')},'dialOriginateCallerIdName':{'type':Sequelize[_0x96a3('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x96a3('0x2')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x96a3('0x25')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x96a3('0x2e')},'dialQueueOptions':{'type':Sequelize[_0x96a3('0x2')],'defaultValue':_0x96a3('0x2f'),'comment':_0x96a3('0x30')},'dialQueueTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x96a3('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize[_0x96a3('0x2')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialCongestionMaxRetry':{'type':Sequelize[_0x96a3('0x17')](0x3)[_0x96a3('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x96a3('0x31')},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x96a3('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x96a3('0x32')},'dialBusyMaxRetry':{'type':Sequelize[_0x96a3('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x96a3('0x33')},'dialBusyRetryFrequency':{'type':Sequelize[_0x96a3('0x17')](0x5)[_0x96a3('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x96a3('0x25')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x96a3('0x17')](0x5)[_0x96a3('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x96a3('0x34')},'dialGlobalMaxRetry':{'type':Sequelize[_0x96a3('0x17')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0x96a3('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x96a3('0x2')],'defaultValue':_0x96a3('0x35')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x96a3('0x4')]('always',_0x96a3('0x36'),_0x96a3('0x37')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0x96a3('0x23')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0x96a3('0x25')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0x96a3('0x25')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x96a3('0x38')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x96a3('0x17')](0x9)[_0x96a3('0x25')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x96a3('0x39')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x96a3('0x17')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x96a3('0x3a')},'dialAMDMinWordLength':{'type':Sequelize[_0x96a3('0x17')](0x9)[_0x96a3('0x25')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x96a3('0x3b')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0x96a3('0x25')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x96a3('0x3c')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x96a3('0x17')](0x9)[_0x96a3('0x25')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0x96a3('0x17')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize[_0x96a3('0x17')](0x9)[_0x96a3('0x25')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x96a3('0x3d')},'dialRecallMeTimeout':{'type':Sequelize[_0x96a3('0x17')](0x5)[_0x96a3('0x25')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x96a3('0x3e')},'dialRecallInQueue':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x96a3('0x3f')},'dialOrderByScheduledAt':{'type':Sequelize[_0x96a3('0x4')](_0x96a3('0x40'),_0x96a3('0x41')),'defaultValue':_0x96a3('0x40')},'dialQueueProject2':{'type':Sequelize['STRING'],'comment':_0x96a3('0x42')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x96a3('0x23')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x96a3('0x23')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x96a3('0x25')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x96a3('0x43')},'dialCutDigit':{'type':Sequelize[_0x96a3('0x17')](0x3)[_0x96a3('0x25')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x96a3('0x44')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x96a3('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x96a3('0x17')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x96a3('0x45')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x96a3('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x96a3('0x46')},'dialDropRetryFrequency':{'type':Sequelize[_0x96a3('0x17')](0x5)[_0x96a3('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x96a3('0x47')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x96a3('0x17')](0x3)[_0x96a3('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x96a3('0x48')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x96a3('0x17')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0x96a3('0x17')](0x3)[_0x96a3('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x96a3('0x49')},'dialMachineRetryFrequency':{'type':Sequelize[_0x96a3('0x17')](0x5)[_0x96a3('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x96a3('0x4a')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x96a3('0x17')](0x3)[_0x96a3('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x96a3('0x17')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'mandatoryDispositionPauseId':{'type':Sequelize[_0x96a3('0x17')],'allowNull':!![],'comment':_0x96a3('0x4b')},'mandatoryDisposition':{'type':Sequelize[_0x96a3('0x23')],'defaultValue':![],'comment':_0x96a3('0x4c'),'set':function(_0x62f027){if(!_0x62f027)this['setDataValue']('mandatoryDispositionPauseId',null);this[_0x96a3('0xe')](_0x96a3('0x4d'),_0x62f027);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x96a3('0x17')](0x3)[_0x96a3('0x25')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x96a3('0x17')](0x3)[_0x96a3('0x25')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
index b1ddcb7..1bd0aa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9ff=['fieldName','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','rawAttributes','includeAll','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','QueueCampaigns','outbound','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','body','VoiceQueues','getHoppers','findOne','CmHopper','order','VoiceQueueId','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','teams','User','Agents','online','voicePause','interface','forEach','penalty','sequelize','transaction','each','TeamVoiceQueue','upsert','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','isNil','SIP/%s','userVoiceQueue:save','removeTeams','ids','select','field','tq.TeamId','from','team_has_voice_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','QueryTypes','SELECT','every','TeamId','all','compact','removeAgents','userVoiceQueue:remove','addAgents','spread','emit','isEmpty','format','isArray','getAgents','getMembers','getLists','CmList','addLists','dialCheckDuplicateType','always','insert','into','cm_hopper','phone','ContactId','NOW()','scheduledAt','CmListId','toString','ListId','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','cm_hopper_final','VoiceQueueId\x20=\x20?','COALESCE(phone,\x27\x27)','onlyIfOpen','fromQuery','phone\x20IS\x20NOT\x20NULL','push','removeLists','getBlackLists','addBlackLists','removeBlackLists','eml-format','request-promise','moment','bluebird','mustache','path','sox','ejs','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','get','inbound','filter','ignore','map','value','type','name','UserProfileResource','index','VoiceQueue'];(function(_0x2fbb8c,_0x15bc93){var _0x1005b4=function(_0x1a3f97){while(--_0x1a3f97){_0x2fbb8c['push'](_0x2fbb8c['shift']());}};_0x1005b4(++_0x15bc93);}(_0xf9ff,0x1f2));var _0xff9f=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0xf9ff[_0x50a0c2];return _0x5ebadd;};'use strict';var emlformat=require(_0xff9f('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xff9f('0x1'));var moment=require(_0xff9f('0x2'));var BPromise=require(_0xff9f('0x3'));var Mustache=require(_0xff9f('0x4'));var util=require('util');var path=require(_0xff9f('0x5'));var sox=require(_0xff9f('0x6'));var csv=require('to-csv');var ejs=require(_0xff9f('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xff9f('0x8'));var crypto=require(_0xff9f('0x9'));var jsforce=require(_0xff9f('0xa'));var deskjs=require(_0xff9f('0xb'));var toCsv=require(_0xff9f('0xc'));var querystring=require('querystring');var Papa=require(_0xff9f('0xd'));var Redis=require(_0xff9f('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xff9f('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xff9f('0x10'));var logger=require(_0xff9f('0x11'))('api');var utils=require(_0xff9f('0x12'));var config=require(_0xff9f('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xff9f('0x14'))['db'];config[_0xff9f('0x15')]=_[_0xff9f('0x16')](config[_0xff9f('0x15')],{'host':_0xff9f('0x17'),'port':0x18eb});var socket=require(_0xff9f('0x18'))(new Redis(config[_0xff9f('0x15')]));require('./voiceQueue.socket')['register'](socket);function respondWithStatusCode(_0x29ed64,_0x5caee6){_0x5caee6=_0x5caee6||0xcc;return function(_0x3f5f0d){if(_0x3f5f0d){return _0x29ed64[_0xff9f('0x19')](_0x5caee6);}return _0x29ed64[_0xff9f('0x1a')](_0x5caee6)[_0xff9f('0x1b')]();};}function respondWithResult(_0x423789,_0x5026ad){_0x5026ad=_0x5026ad||0xc8;return function(_0xe38754){if(_0xe38754){return _0x423789['status'](_0x5026ad)[_0xff9f('0x1c')](_0xe38754);}};}function respondWithFilteredResult(_0x331536,_0xd73ddc){return function(_0x38189b){if(_0x38189b){var _0x4b45f4=typeof _0xd73ddc[_0xff9f('0x1d')]===_0xff9f('0x1e')&&typeof _0xd73ddc['limit']==='undefined';var _0xc2a2ff=_0x38189b[_0xff9f('0x1f')];var _0x312166=_0x4b45f4?0x0:_0xd73ddc['offset'];var _0x2d9abb=_0x4b45f4?_0x38189b[_0xff9f('0x1f')]:_0xd73ddc[_0xff9f('0x1d')]+_0xd73ddc[_0xff9f('0x20')];var _0x4b8019;if(_0x2d9abb>=_0xc2a2ff){_0x2d9abb=_0xc2a2ff;_0x4b8019=0xc8;}else{_0x4b8019=0xce;}_0x331536[_0xff9f('0x1a')](_0x4b8019);return _0x331536[_0xff9f('0x21')](_0xff9f('0x22'),_0x312166+'-'+_0x2d9abb+'/'+_0xc2a2ff)[_0xff9f('0x1c')](_0x38189b);}return null;};}function patchUpdates(_0x2f9020){return function(_0x3e132e){try{jsonpatch[_0xff9f('0x23')](_0x3e132e,_0x2f9020,!![]);}catch(_0x23ddeb){return BPromise[_0xff9f('0x24')](_0x23ddeb);}return _0x3e132e['save']();};}function saveUpdates(_0x17771d,_0xba5290){return function(_0x2332ad){if(_0x2332ad){return _0x2332ad[_0xff9f('0x25')](_0x17771d)[_0xff9f('0x26')](function(_0x3f6441){return _0x3f6441;});}return null;};}function removeEntity(_0x45f7a2,_0x25c8c2){return function(_0x5f40b7){if(_0x5f40b7){return _0x5f40b7[_0xff9f('0x27')]()[_0xff9f('0x26')](function(){var _0x119b74=_0x5f40b7[_0xff9f('0x28')]({'plain':!![]});var _0x54b980=[{'name':'VoiceQueues','value':_0xff9f('0x29'),'ignore':![]},{'name':'QueueCampaigns','value':'outbound','ignore':![]}];var _0x775c00=_(_0x54b980)[_0xff9f('0x2a')](_0xff9f('0x2b'))[_0xff9f('0x2c')](_0xff9f('0x2d'))['value']();if(_['includes'](_0x775c00,_0x119b74[_0xff9f('0x2e')])){return;}var _0x145f09=_['find'](_0x54b980,[_0xff9f('0x2d'),_0x119b74['type']])[_0xff9f('0x2f')];return db[_0xff9f('0x30')][_0xff9f('0x27')]({'where':{'type':_0x145f09,'resourceId':_0x119b74['id']}})['then'](function(){return _0x5f40b7;});})[_0xff9f('0x26')](function(){_0x45f7a2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x821ecc,_0x169e84){return function(_0x123923){if(!_0x123923){_0x821ecc[_0xff9f('0x19')](0x194);}return _0x123923;};}function handleError(_0x42ef99,_0x505cce){_0x505cce=_0x505cce||0x1f4;return function(_0x9577e9){logger['error'](_0x9577e9['stack']);if(_0x9577e9[_0xff9f('0x2f')]){delete _0x9577e9[_0xff9f('0x2f')];}_0x42ef99[_0xff9f('0x1a')](_0x505cce)['send'](_0x9577e9);};}exports[_0xff9f('0x31')]=function(_0xa8d2aa,_0x84c761){var _0x5f0500={},_0x2b8e1c={},_0x117086={'count':0x0,'rows':[]};var _0x3e8d87=_[_0xff9f('0x2c')](db[_0xff9f('0x32')]['rawAttributes'],function(_0x46c599){return{'name':_0x46c599[_0xff9f('0x33')],'type':_0x46c599[_0xff9f('0x2e')]['key']};});_0x2b8e1c[_0xff9f('0x34')]=_[_0xff9f('0x2c')](_0x3e8d87,_0xff9f('0x2f'));_0x2b8e1c[_0xff9f('0x35')]=_[_0xff9f('0x36')](_0xa8d2aa[_0xff9f('0x35')]);_0x2b8e1c[_0xff9f('0x37')]=_[_0xff9f('0x38')](_0x2b8e1c[_0xff9f('0x34')],_0x2b8e1c[_0xff9f('0x35')]);_0x5f0500['attributes']=_[_0xff9f('0x38')](_0x2b8e1c[_0xff9f('0x34')],qs[_0xff9f('0x39')](_0xa8d2aa['query']['fields']));_0x5f0500[_0xff9f('0x3a')]=_0x5f0500[_0xff9f('0x3a')][_0xff9f('0x3b')]?_0x5f0500['attributes']:_0x2b8e1c['model'];if(!_0xa8d2aa[_0xff9f('0x35')][_0xff9f('0x3c')](_0xff9f('0x3d'))){_0x5f0500[_0xff9f('0x20')]=qs[_0xff9f('0x20')](_0xa8d2aa[_0xff9f('0x35')][_0xff9f('0x20')]);_0x5f0500[_0xff9f('0x1d')]=qs[_0xff9f('0x1d')](_0xa8d2aa['query'][_0xff9f('0x1d')]);}_0x5f0500['order']=qs[_0xff9f('0x3e')](_0xa8d2aa[_0xff9f('0x35')][_0xff9f('0x3e')]);_0x5f0500[_0xff9f('0x3f')]=qs['filters'](_[_0xff9f('0x40')](_0xa8d2aa[_0xff9f('0x35')],_0x2b8e1c[_0xff9f('0x37')]),_0x3e8d87);if(_0xa8d2aa[_0xff9f('0x35')][_0xff9f('0x2a')]){_0x5f0500['where']=_[_0xff9f('0x41')](_0x5f0500['where'],{'$or':_[_0xff9f('0x2c')](_0x3e8d87,function(_0x303472){if(_0x303472[_0xff9f('0x2e')]!==_0xff9f('0x42')){var _0x36e8a2={};_0x36e8a2[_0x303472[_0xff9f('0x2f')]]={'$like':'%'+_0xa8d2aa['query'][_0xff9f('0x2a')]+'%'};return _0x36e8a2;}})});}_0x5f0500=_[_0xff9f('0x41')]({},_0x5f0500,_0xa8d2aa[_0xff9f('0x43')]);var _0x492e40={'where':_0x5f0500[_0xff9f('0x3f')]};return db[_0xff9f('0x32')]['count'](_0x492e40)[_0xff9f('0x26')](function(_0x456294){_0x117086[_0xff9f('0x1f')]=_0x456294;if(_0xa8d2aa[_0xff9f('0x35')]['includeAll']){_0x5f0500[_0xff9f('0x44')]=[{'all':!![]}];}return db[_0xff9f('0x32')][_0xff9f('0x45')](_0x5f0500);})[_0xff9f('0x26')](function(_0x53895e){_0x117086[_0xff9f('0x46')]=_0x53895e;return _0x117086;})[_0xff9f('0x26')](respondWithFilteredResult(_0x84c761,_0x5f0500))[_0xff9f('0x47')](handleError(_0x84c761,null));};exports[_0xff9f('0x48')]=function(_0x4a0408,_0x12a738){var _0x4b4aed={'raw':![],'where':{'id':_0x4a0408[_0xff9f('0x49')]['id']}},_0xf19524={};_0xf19524['model']=_['keys'](db[_0xff9f('0x32')][_0xff9f('0x4a')]);_0xf19524[_0xff9f('0x35')]=_[_0xff9f('0x36')](_0x4a0408[_0xff9f('0x35')]);_0xf19524[_0xff9f('0x37')]=_[_0xff9f('0x38')](_0xf19524[_0xff9f('0x34')],_0xf19524[_0xff9f('0x35')]);_0x4b4aed[_0xff9f('0x3a')]=_[_0xff9f('0x38')](_0xf19524[_0xff9f('0x34')],qs[_0xff9f('0x39')](_0x4a0408['query']['fields']));_0x4b4aed[_0xff9f('0x3a')]=_0x4b4aed[_0xff9f('0x3a')][_0xff9f('0x3b')]?_0x4b4aed['attributes']:_0xf19524[_0xff9f('0x34')];if(_0x4a0408['query'][_0xff9f('0x4b')]){_0x4b4aed['include']=[{'all':!![]}];}_0x4b4aed=_['merge']({},_0x4b4aed,_0x4a0408[_0xff9f('0x43')]);return db[_0xff9f('0x32')][_0xff9f('0x4c')](_0x4b4aed)['then'](handleEntityNotFound(_0x12a738,null))[_0xff9f('0x26')](respondWithResult(_0x12a738,null))[_0xff9f('0x47')](handleError(_0x12a738,null));};exports['create']=function(_0x13a51a,_0x3f9e8b){return db[_0xff9f('0x32')][_0xff9f('0x4d')](_0x13a51a['body'],{})[_0xff9f('0x26')](function(_0x4ae2d6){var _0x44571b=_0x13a51a['user']['get']({'plain':!![]});if(!_0x44571b)throw new Error(_0xff9f('0x4e'));if(_0x44571b[_0xff9f('0x4f')]===_0xff9f('0x50')){var _0x579ca6=_0x4ae2d6[_0xff9f('0x28')]({'plain':!![]});var _0x449de2=[{'name':'VoiceQueues','value':_0xff9f('0x29')},{'name':_0xff9f('0x51'),'value':_0xff9f('0x52')}];var _0x4a4907=_['find'](_0x449de2,['value',_0x579ca6[_0xff9f('0x2e')]])[_0xff9f('0x2f')];return db[_0xff9f('0x53')][_0xff9f('0x4c')]({'where':{'name':_0x4a4907,'userProfileId':_0x44571b[_0xff9f('0x54')]},'raw':!![]})['then'](function(_0xe9a7b){if(_0xe9a7b&&_0xe9a7b[_0xff9f('0x55')]===0x0){return db[_0xff9f('0x30')][_0xff9f('0x4d')]({'name':_0x579ca6[_0xff9f('0x2f')],'resourceId':_0x579ca6['id'],'type':_0xe9a7b[_0xff9f('0x2f')],'sectionId':_0xe9a7b['id']},{})[_0xff9f('0x26')](function(){return _0x4ae2d6;});}else{return _0x4ae2d6;}})[_0xff9f('0x47')](function(_0x62cf8a){logger[_0xff9f('0x56')](_0xff9f('0x57'),_0x62cf8a);throw _0x62cf8a;});}return _0x4ae2d6;})['then'](respondWithResult(_0x3f9e8b,0xc9))['catch'](handleError(_0x3f9e8b,null));};exports[_0xff9f('0x58')]=function(_0x22e0fd,_0x28f919){var _0x49a06b={'where':{'id':_0x22e0fd[_0xff9f('0x49')]['id']}},_0x157819={};_0x157819['model']=_[_0xff9f('0x36')](db[_0xff9f('0x32')][_0xff9f('0x4a')]);_0x49a06b[_0xff9f('0x3a')]=_[_0xff9f('0x38')](_0x157819['model'],qs[_0xff9f('0x39')](_0x22e0fd[_0xff9f('0x35')][_0xff9f('0x39')]));_0x49a06b[_0xff9f('0x3a')]=_0x49a06b[_0xff9f('0x3a')][_0xff9f('0x3b')]?_0x49a06b[_0xff9f('0x3a')]:_0x157819[_0xff9f('0x34')];if(_0x22e0fd['query'][_0xff9f('0x4b')]){_0x49a06b[_0xff9f('0x44')]=[{'all':!![]}];}_0x49a06b=_[_0xff9f('0x41')]({},_0x49a06b,_0x22e0fd[_0xff9f('0x43')]);return db[_0xff9f('0x32')][_0xff9f('0x4c')](_0x49a06b)['then'](handleEntityNotFound(_0x28f919,null))[_0xff9f('0x26')](function(_0x170024){if(_0x170024){var _0x3e326e=_0x170024[_0xff9f('0x28')]({'plain':!![]});_0x3e326e=qs[_0xff9f('0x59')](_0x3e326e,['id',_0xff9f('0x5a'),_0xff9f('0x5b')]);_0x22e0fd[_0xff9f('0x5c')]=_[_0xff9f('0x59')](_0x22e0fd[_0xff9f('0x5c')],['id',_0xff9f('0x5a'),_0xff9f('0x5b')]);return db[_0xff9f('0x32')][_0xff9f('0x4d')](_[_0xff9f('0x41')](_0x3e326e,_0x22e0fd[_0xff9f('0x5c')]),{'include':_0x22e0fd[_0xff9f('0x35')][_0xff9f('0x4b')]?[{'all':!![]}]:undefined})[_0xff9f('0x26')](function(_0x5155a9){var _0x34dc2c=_0x22e0fd[_0xff9f('0x50')][_0xff9f('0x28')]({'plain':!![]});if(!_0x34dc2c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x34dc2c['role']===_0xff9f('0x50')){var _0x57cd92=_0x5155a9[_0xff9f('0x28')]({'plain':!![]});var _0x2e8dc5=[{'name':_0xff9f('0x5d'),'value':_0xff9f('0x29')},{'name':_0xff9f('0x51'),'value':_0xff9f('0x52')}];var _0x38526e=_[_0xff9f('0x4c')](_0x2e8dc5,['value',_0x57cd92['type']])[_0xff9f('0x2f')];return db['UserProfileSection'][_0xff9f('0x4c')]({'where':{'name':_0x38526e,'userProfileId':_0x34dc2c[_0xff9f('0x54')]},'raw':!![]})['then'](function(_0x587ee1){if(_0x587ee1&&_0x587ee1[_0xff9f('0x55')]===0x0){return db['UserProfileResource']['create']({'name':_0x57cd92[_0xff9f('0x2f')],'resourceId':_0x57cd92['id'],'type':_0x587ee1[_0xff9f('0x2f')],'sectionId':_0x587ee1['id']},{})[_0xff9f('0x26')](function(){return _0x5155a9;});}else{return _0x5155a9;}})[_0xff9f('0x47')](function(_0x1fcdea){logger[_0xff9f('0x56')](_0xff9f('0x57'),_0x1fcdea);throw _0x1fcdea;});}return _0x5155a9;});}})['then'](respondWithResult(_0x28f919,0xc9))[_0xff9f('0x47')](handleError(_0x28f919,null));};exports[_0xff9f('0x25')]=function(_0x26507e,_0x27d296){if(_0x26507e[_0xff9f('0x5c')]['id']){delete _0x26507e[_0xff9f('0x5c')]['id'];}return db[_0xff9f('0x32')][_0xff9f('0x4c')]({'where':{'id':_0x26507e['params']['id']}})[_0xff9f('0x26')](handleEntityNotFound(_0x27d296,null))[_0xff9f('0x26')](saveUpdates(_0x26507e[_0xff9f('0x5c')],null))[_0xff9f('0x26')](respondWithResult(_0x27d296,null))[_0xff9f('0x47')](handleError(_0x27d296,null));};exports[_0xff9f('0x27')]=function(_0x4a6d78,_0x55db7b){return db[_0xff9f('0x32')][_0xff9f('0x4c')]({'where':{'id':_0x4a6d78[_0xff9f('0x49')]['id']}})[_0xff9f('0x26')](handleEntityNotFound(_0x55db7b,null))['then'](removeEntity(_0x55db7b,null))[_0xff9f('0x47')](handleError(_0x55db7b,null));};exports[_0xff9f('0x5e')]=function(_0x5345d4,_0x1a7ab8,_0x2a9a91){var _0x3f0c39={'raw':![],'where':{}};var _0x44fe90={};var _0x2e07c4={'count':0x0,'rows':[]};return db[_0xff9f('0x32')][_0xff9f('0x5f')]({'where':{'id':_0x5345d4[_0xff9f('0x49')]['id']}})['then'](handleEntityNotFound(_0x1a7ab8,null))[_0xff9f('0x26')](function(_0x3daf38){if(_0x3daf38){_0x44fe90[_0xff9f('0x34')]=_[_0xff9f('0x36')](db[_0xff9f('0x60')][_0xff9f('0x4a')]);_0x44fe90[_0xff9f('0x35')]=_['keys'](_0x5345d4[_0xff9f('0x35')]);_0x44fe90[_0xff9f('0x37')]=_[_0xff9f('0x38')](_0x44fe90[_0xff9f('0x34')],_0x44fe90[_0xff9f('0x35')]);_0x3f0c39[_0xff9f('0x3a')]=_['intersection'](_0x44fe90[_0xff9f('0x34')],qs[_0xff9f('0x39')](_0x5345d4[_0xff9f('0x35')][_0xff9f('0x39')]));_0x3f0c39[_0xff9f('0x3a')]=_0x3f0c39['attributes']['length']?_0x3f0c39[_0xff9f('0x3a')]:_0x44fe90[_0xff9f('0x34')];if(!_0x5345d4[_0xff9f('0x35')][_0xff9f('0x3c')]('nolimit')){_0x3f0c39['limit']=qs[_0xff9f('0x20')](_0x5345d4[_0xff9f('0x35')][_0xff9f('0x20')]);_0x3f0c39[_0xff9f('0x1d')]=qs[_0xff9f('0x1d')](_0x5345d4[_0xff9f('0x35')][_0xff9f('0x1d')]);}_0x3f0c39[_0xff9f('0x61')]=qs[_0xff9f('0x3e')](_0x5345d4[_0xff9f('0x35')][_0xff9f('0x3e')]);_0x3f0c39[_0xff9f('0x3f')]=qs[_0xff9f('0x37')](_[_0xff9f('0x40')](_0x5345d4[_0xff9f('0x35')],_0x44fe90[_0xff9f('0x37')]));_0x3f0c39[_0xff9f('0x3f')][_0xff9f('0x62')]=_0x3daf38['id'];if(_0x5345d4['query']['filter']){_0x3f0c39[_0xff9f('0x3f')]=_['merge'](_0x3f0c39[_0xff9f('0x3f')],{'$or':_[_0xff9f('0x2c')](_0x3f0c39[_0xff9f('0x3a')],function(_0x2fa6ff){var _0x2d3c13={};_0x2d3c13[_0x2fa6ff]={'$like':'%'+_0x5345d4['query'][_0xff9f('0x2a')]+'%'};return _0x2d3c13;})});}_0x3f0c39=_['merge']({},_0x3f0c39,_0x5345d4[_0xff9f('0x43')]);return db['CmHopper'][_0xff9f('0x1f')]({'where':_0x3f0c39[_0xff9f('0x3f')]})[_0xff9f('0x26')](function(_0x1884a5){_0x2e07c4[_0xff9f('0x1f')]=_0x1884a5;if(_0x5345d4['query'][_0xff9f('0x4b')]){_0x3f0c39[_0xff9f('0x44')]=[{'all':!![]}];}return db[_0xff9f('0x60')][_0xff9f('0x45')](_0x3f0c39);})[_0xff9f('0x26')](function(_0x546b79){_0x2e07c4[_0xff9f('0x46')]=_0x546b79;return _0x2e07c4;});}})[_0xff9f('0x26')](respondWithFilteredResult(_0x1a7ab8,_0x3f0c39))[_0xff9f('0x47')](handleError(_0x1a7ab8,null));};exports[_0xff9f('0x63')]=function(_0x2c455d,_0xd7f6fa,_0x4f9cb3){var _0x40fd92={'raw':!![],'where':{}};var _0x82a63f={};var _0x40a731={'count':0x0,'rows':[]};return db[_0xff9f('0x32')][_0xff9f('0x5f')]({'where':{'id':_0x2c455d['params']['id']}})[_0xff9f('0x26')](handleEntityNotFound(_0xd7f6fa,null))[_0xff9f('0x26')](function(_0x364c57){if(_0x364c57){_0x82a63f[_0xff9f('0x34')]=_['keys'](db[_0xff9f('0x64')]['rawAttributes']);_0x82a63f[_0xff9f('0x35')]=_['keys'](_0x2c455d[_0xff9f('0x35')]);_0x82a63f['filters']=_[_0xff9f('0x38')](_0x82a63f[_0xff9f('0x34')],_0x82a63f[_0xff9f('0x35')]);_0x40fd92['attributes']=_[_0xff9f('0x38')](_0x82a63f[_0xff9f('0x34')],qs[_0xff9f('0x39')](_0x2c455d[_0xff9f('0x35')][_0xff9f('0x39')]));_0x40fd92[_0xff9f('0x3a')]=_0x40fd92[_0xff9f('0x3a')][_0xff9f('0x3b')]?_0x40fd92[_0xff9f('0x3a')]:_0x82a63f[_0xff9f('0x34')];if(!_0x2c455d[_0xff9f('0x35')]['hasOwnProperty'](_0xff9f('0x3d'))){_0x40fd92[_0xff9f('0x20')]=qs[_0xff9f('0x20')](_0x2c455d[_0xff9f('0x35')][_0xff9f('0x20')]);_0x40fd92[_0xff9f('0x1d')]=qs[_0xff9f('0x1d')](_0x2c455d['query'][_0xff9f('0x1d')]);}_0x40fd92['order']=qs[_0xff9f('0x3e')](_0x2c455d[_0xff9f('0x35')][_0xff9f('0x3e')]);_0x40fd92[_0xff9f('0x3f')]=qs[_0xff9f('0x37')](_[_0xff9f('0x40')](_0x2c455d[_0xff9f('0x35')],_0x82a63f[_0xff9f('0x37')]));_0x40fd92[_0xff9f('0x3f')][_0xff9f('0x62')]=_0x364c57['id'];if(_0x2c455d['query']['filter']){_0x40fd92[_0xff9f('0x3f')]=_[_0xff9f('0x41')](_0x40fd92[_0xff9f('0x3f')],{'$or':_['map'](_0x40fd92[_0xff9f('0x3a')],function(_0x31b78c){var _0x373a0d={};_0x373a0d[_0x31b78c]={'$like':'%'+_0x2c455d[_0xff9f('0x35')][_0xff9f('0x2a')]+'%'};return _0x373a0d;})});}_0x40fd92=_[_0xff9f('0x41')]({},_0x40fd92,_0x2c455d['options']);return db[_0xff9f('0x64')][_0xff9f('0x1f')]({'where':_0x40fd92[_0xff9f('0x3f')]})[_0xff9f('0x26')](function(_0x138f21){_0x40a731[_0xff9f('0x1f')]=_0x138f21;if(_0x2c455d[_0xff9f('0x35')][_0xff9f('0x4b')]){_0x40fd92[_0xff9f('0x44')]=[{'all':!![]}];}return db[_0xff9f('0x64')][_0xff9f('0x45')](_0x40fd92);})[_0xff9f('0x26')](function(_0x14d78d){_0x40a731['rows']=_0x14d78d;return _0x40a731;});}})[_0xff9f('0x26')](respondWithFilteredResult(_0xd7f6fa,_0x40fd92))[_0xff9f('0x47')](handleError(_0xd7f6fa,null));};exports[_0xff9f('0x65')]=function(_0x2895fc,_0x752181,_0x254395){var _0x654a7a={'raw':!![],'where':{}};var _0x1ce0a6={};var _0x647274={'count':0x0,'rows':[]};return db[_0xff9f('0x32')][_0xff9f('0x5f')]({'where':{'id':_0x2895fc[_0xff9f('0x49')]['id']}})['then'](handleEntityNotFound(_0x752181,null))[_0xff9f('0x26')](function(_0x3b3dcd){if(_0x3b3dcd){_0x1ce0a6[_0xff9f('0x34')]=_[_0xff9f('0x36')](db[_0xff9f('0x66')][_0xff9f('0x4a')]);_0x1ce0a6['query']=_[_0xff9f('0x36')](_0x2895fc[_0xff9f('0x35')]);_0x1ce0a6['filters']=_['intersection'](_0x1ce0a6[_0xff9f('0x34')],_0x1ce0a6[_0xff9f('0x35')]);_0x654a7a[_0xff9f('0x3a')]=_[_0xff9f('0x38')](_0x1ce0a6['model'],qs['fields'](_0x2895fc[_0xff9f('0x35')][_0xff9f('0x39')]));_0x654a7a[_0xff9f('0x3a')]=_0x654a7a[_0xff9f('0x3a')][_0xff9f('0x3b')]?_0x654a7a[_0xff9f('0x3a')]:_0x1ce0a6[_0xff9f('0x34')];if(!_0x2895fc['query'][_0xff9f('0x3c')](_0xff9f('0x3d'))){_0x654a7a[_0xff9f('0x20')]=qs[_0xff9f('0x20')](_0x2895fc[_0xff9f('0x35')][_0xff9f('0x20')]);_0x654a7a[_0xff9f('0x1d')]=qs[_0xff9f('0x1d')](_0x2895fc[_0xff9f('0x35')][_0xff9f('0x1d')]);}_0x654a7a['order']=qs[_0xff9f('0x3e')](_0x2895fc[_0xff9f('0x35')]['sort']);_0x654a7a['where']=qs['filters'](_[_0xff9f('0x40')](_0x2895fc['query'],_0x1ce0a6[_0xff9f('0x37')]));_0x654a7a[_0xff9f('0x3f')][_0xff9f('0x62')]=_0x3b3dcd['id'];if(_0x2895fc[_0xff9f('0x35')][_0xff9f('0x2a')]){_0x654a7a[_0xff9f('0x3f')]=_['merge'](_0x654a7a[_0xff9f('0x3f')],{'$or':_[_0xff9f('0x2c')](_0x654a7a['attributes'],function(_0x23ebc8){var _0xc2875f={};_0xc2875f[_0x23ebc8]={'$like':'%'+_0x2895fc[_0xff9f('0x35')][_0xff9f('0x2a')]+'%'};return _0xc2875f;})});}_0x654a7a=_['merge']({},_0x654a7a,_0x2895fc['options']);return db[_0xff9f('0x66')]['count']({'where':_0x654a7a[_0xff9f('0x3f')]})['then'](function(_0x26a745){_0x647274[_0xff9f('0x1f')]=_0x26a745;if(_0x2895fc['query'][_0xff9f('0x4b')]){_0x654a7a[_0xff9f('0x44')]=[{'all':!![]}];}return db[_0xff9f('0x66')][_0xff9f('0x45')](_0x654a7a);})[_0xff9f('0x26')](function(_0x6064ce){_0x647274[_0xff9f('0x46')]=_0x6064ce;return _0x647274;});}})[_0xff9f('0x26')](respondWithFilteredResult(_0x752181,_0x654a7a))['catch'](handleError(_0x752181,null));};exports[_0xff9f('0x67')]=function(_0x58c685,_0x1f53f5,_0x293cc0){var _0x326fad={'raw':!![],'where':{}};var _0x22a5ba={};var _0x29481b={'count':0x0,'rows':[]};return db[_0xff9f('0x32')][_0xff9f('0x5f')]({'where':{'id':_0x58c685[_0xff9f('0x49')]['id']}})[_0xff9f('0x26')](handleEntityNotFound(_0x1f53f5,null))[_0xff9f('0x26')](function(_0x49d6fc){if(_0x49d6fc){_0x22a5ba[_0xff9f('0x34')]=_['keys'](db[_0xff9f('0x68')]['rawAttributes']);_0x22a5ba['query']=_['keys'](_0x58c685[_0xff9f('0x35')]);_0x22a5ba[_0xff9f('0x37')]=_[_0xff9f('0x38')](_0x22a5ba[_0xff9f('0x34')],_0x22a5ba[_0xff9f('0x35')]);_0x326fad[_0xff9f('0x3a')]=_['intersection'](_0x22a5ba[_0xff9f('0x34')],qs[_0xff9f('0x39')](_0x58c685[_0xff9f('0x35')][_0xff9f('0x39')]));_0x326fad[_0xff9f('0x3a')]=_0x326fad[_0xff9f('0x3a')]['length']?_0x326fad[_0xff9f('0x3a')]:_0x22a5ba[_0xff9f('0x34')];if(!_0x58c685['query'][_0xff9f('0x3c')](_0xff9f('0x3d'))){_0x326fad[_0xff9f('0x20')]=qs['limit'](_0x58c685[_0xff9f('0x35')][_0xff9f('0x20')]);_0x326fad[_0xff9f('0x1d')]=qs['offset'](_0x58c685[_0xff9f('0x35')]['offset']);}_0x326fad[_0xff9f('0x61')]=qs[_0xff9f('0x3e')](_0x58c685[_0xff9f('0x35')][_0xff9f('0x3e')]);_0x326fad[_0xff9f('0x3f')]=qs[_0xff9f('0x37')](_['pick'](_0x58c685[_0xff9f('0x35')],_0x22a5ba[_0xff9f('0x37')]));_0x326fad[_0xff9f('0x3f')]['VoiceQueueId']=_0x49d6fc['id'];if(_0x58c685[_0xff9f('0x35')][_0xff9f('0x2a')]){_0x326fad[_0xff9f('0x3f')]=_[_0xff9f('0x41')](_0x326fad[_0xff9f('0x3f')],{'$or':_[_0xff9f('0x2c')](_0x326fad[_0xff9f('0x3a')],function(_0x34f4d4){var _0x24ee2d={};_0x24ee2d[_0x34f4d4]={'$like':'%'+_0x58c685[_0xff9f('0x35')]['filter']+'%'};return _0x24ee2d;})});}_0x326fad=_[_0xff9f('0x41')]({},_0x326fad,_0x58c685[_0xff9f('0x43')]);return db[_0xff9f('0x68')][_0xff9f('0x1f')]({'where':_0x326fad['where']})[_0xff9f('0x26')](function(_0x443642){_0x29481b[_0xff9f('0x1f')]=_0x443642;if(_0x58c685[_0xff9f('0x35')]['includeAll']){_0x326fad[_0xff9f('0x44')]=[{'all':!![]}];}return db[_0xff9f('0x68')][_0xff9f('0x45')](_0x326fad);})[_0xff9f('0x26')](function(_0x7f57e){_0x29481b[_0xff9f('0x46')]=_0x7f57e;return _0x29481b;});}})[_0xff9f('0x26')](respondWithFilteredResult(_0x1f53f5,_0x326fad))[_0xff9f('0x47')](handleError(_0x1f53f5,null));};exports[_0xff9f('0x69')]=function(_0x366cd1,_0xb71909,_0x3c68e7){var _0x182b32={};var _0x572fc8={};var _0x40c05a;var _0x1b9021;return db[_0xff9f('0x32')][_0xff9f('0x5f')]({'where':{'id':_0x366cd1[_0xff9f('0x49')]['id']}})['then'](handleEntityNotFound(_0xb71909,null))[_0xff9f('0x26')](function(_0x3109a){if(_0x3109a){_0x40c05a=_0x3109a;_0x572fc8[_0xff9f('0x34')]=_[_0xff9f('0x36')](db[_0xff9f('0x6a')][_0xff9f('0x4a')]);_0x572fc8[_0xff9f('0x35')]=_[_0xff9f('0x36')](_0x366cd1[_0xff9f('0x35')]);_0x572fc8['filters']=_[_0xff9f('0x38')](_0x572fc8[_0xff9f('0x34')],_0x572fc8[_0xff9f('0x35')]);_0x182b32[_0xff9f('0x3a')]=_[_0xff9f('0x38')](_0x572fc8['model'],qs[_0xff9f('0x39')](_0x366cd1[_0xff9f('0x35')]['fields']));_0x182b32['attributes']=_0x182b32[_0xff9f('0x3a')]['length']?_0x182b32[_0xff9f('0x3a')]:_0x572fc8[_0xff9f('0x34')];_0x182b32[_0xff9f('0x61')]=qs['sort'](_0x366cd1[_0xff9f('0x35')][_0xff9f('0x3e')]);_0x182b32[_0xff9f('0x3f')]=qs[_0xff9f('0x37')](_[_0xff9f('0x40')](_0x366cd1[_0xff9f('0x35')],_0x572fc8[_0xff9f('0x37')]));if(_0x366cd1[_0xff9f('0x35')][_0xff9f('0x2a')]){_0x182b32[_0xff9f('0x3f')]=_['merge'](_0x182b32[_0xff9f('0x3f')],{'$or':_[_0xff9f('0x2c')](_0x182b32['attributes'],function(_0x47ca1b){var _0x2c990c={};_0x2c990c[_0x47ca1b]={'$like':'%'+_0x366cd1['query'][_0xff9f('0x2a')]+'%'};return _0x2c990c;})});}_0x182b32=_['merge']({},_0x182b32,_0x366cd1[_0xff9f('0x43')]);return _0x40c05a[_0xff9f('0x69')](_0x182b32);}})['then'](function(_0x51f9ea){if(_0x51f9ea){_0x1b9021=_0x51f9ea['length'];if(!_0x366cd1[_0xff9f('0x35')]['hasOwnProperty'](_0xff9f('0x3d'))){_0x182b32[_0xff9f('0x20')]=qs[_0xff9f('0x20')](_0x366cd1['query'][_0xff9f('0x20')]);_0x182b32[_0xff9f('0x1d')]=qs['offset'](_0x366cd1['query']['offset']);}return _0x40c05a[_0xff9f('0x69')](_0x182b32);}})[_0xff9f('0x26')](function(_0xa5fa5d){if(_0xa5fa5d){return _0xa5fa5d?{'count':_0x1b9021,'rows':_0xa5fa5d}:null;}})[_0xff9f('0x26')](respondWithResult(_0xb71909,null))[_0xff9f('0x47')](handleError(_0xb71909,null));};exports[_0xff9f('0x6b')]=function(_0x47981e,_0x360c73,_0x29bd79){var _0x48398b=_0x47981e[_0xff9f('0x5c')][_0xff9f('0x6c')];var _0x54f2e9=_['map'](_0x48398b,'id');return db[_0xff9f('0x6a')][_0xff9f('0x45')]({'where':{'id':_0x54f2e9},'attributes':['id'],'include':[{'model':db[_0xff9f('0x6d')],'as':_0xff9f('0x6e'),'attributes':['id',_0xff9f('0x2f'),_0xff9f('0x6f'),_0xff9f('0x70'),_0xff9f('0x71')],'raw':!![]}]})[_0xff9f('0x26')](function(_0x14a163){if(_0x14a163){var _0x27d754=_['flatMap'](_0x14a163,function(_0x259e07){var _0x127ceb=_0x259e07[_0xff9f('0x28')]({'plain':!![]});_0x127ceb[_0xff9f('0x6e')][_0xff9f('0x72')](function(_0x2be584){_0x2be584[_0xff9f('0x73')]=_[_0xff9f('0x4c')](_0x48398b,{'id':_0x127ceb['id']})[_0xff9f('0x73')];});return _0x127ceb[_0xff9f('0x6e')];});return db[_0xff9f('0x32')]['find']({'where':{'id':_0x47981e[_0xff9f('0x49')]['id']}})['then'](function(_0x45e175){return db[_0xff9f('0x74')][_0xff9f('0x75')](function(_0x48b16c){return _0x45e175['addTeams'](_0x54f2e9,{'transaction':_0x48b16c})['then'](function(){return BPromise[_0xff9f('0x76')](_0x48398b,function(_0x1c5aa4){return db[_0xff9f('0x77')][_0xff9f('0x78')]({'TeamId':_0x1c5aa4['id'],'VoiceQueueId':_0x47981e[_0xff9f('0x49')]['id'],'penalty':_0x1c5aa4[_0xff9f('0x73')]},{'transaction':_0x48b16c});});})[_0xff9f('0x26')](function(){return BPromise[_0xff9f('0x76')](_0x27d754,function(_0x2251a2){return db[_0xff9f('0x79')][_0xff9f('0x7a')]({'where':{'UserId':_0x2251a2['id'],'VoiceQueueId':_0x47981e['params']['id']},'defaults':{'penalty':_0x2251a2[_0xff9f('0x73')]},'transaction':_0x48b16c});});})[_0xff9f('0x26')](function(){return BPromise['each'](_[_0xff9f('0x2a')](_0x27d754,{'online':!![]}),function(_0xfdfab1){return db[_0xff9f('0x7b')]['upsert']({'membername':_0xfdfab1[_0xff9f('0x2f')],'UserId':_0xfdfab1['id'],'queue_name':_0x45e175['name'],'VoiceQueueId':_0x45e175['id'],'interface':_[_0xff9f('0x7c')](_0xfdfab1['interface'])?util['format'](_0xff9f('0x7d'),_0xfdfab1[_0xff9f('0x2f')]):_0xfdfab1[_0xff9f('0x71')],'paused':_0xfdfab1[_0xff9f('0x70')]||![],'penalty':_0xfdfab1[_0xff9f('0x73')]},{'transaction':_0x48b16c});});})[_0xff9f('0x26')](function(){_0x27d754[_0xff9f('0x72')](function(_0xbcd4a7){socket['emit'](_0xff9f('0x7e'),{'UserId':_0xbcd4a7['id'],'VoiceQueueId':_0x45e175['id']});});});});});}})[_0xff9f('0x26')](respondWithStatusCode(_0x360c73,null))[_0xff9f('0x47')](handleError(_0x360c73,null));};exports[_0xff9f('0x7f')]=function(_0x4200dd,_0x469bf1,_0x38611f){return db[_0xff9f('0x6a')][_0xff9f('0x45')]({'where':{'id':_0x4200dd[_0xff9f('0x35')][_0xff9f('0x80')]},'attributes':['id'],'include':[{'model':db[_0xff9f('0x6d')],'as':_0xff9f('0x6e'),'attributes':['id'],'raw':!![]}]})[_0xff9f('0x26')](handleEntityNotFound(_0x469bf1,null))[_0xff9f('0x26')](function(_0x5a9c01){var _0x485d29=_[_0xff9f('0x2c')](_0x5a9c01,'id');var _0x356216=[];var _0x5a3867=[];var _0x29e7b6=squel[_0xff9f('0x81')]();_0x29e7b6[_0xff9f('0x82')](_0xff9f('0x83'))[_0xff9f('0x84')](_0xff9f('0x85'),'tq')[_0xff9f('0x86')](_0xff9f('0x87'),'ut',_0xff9f('0x88'))['where']('VoiceQueueId\x20=\x20?',_0x4200dd[_0xff9f('0x49')]['id']);for(var _0x225870=0x0;_0x225870<_0x5a9c01[_0xff9f('0x3b')];_0x225870+=0x1){let _0x3e4107=_0x5a9c01[_0x225870];for(var _0x137676=0x0;_0x137676<_0x3e4107[_0xff9f('0x6e')][_0xff9f('0x3b')];_0x137676+=0x1){let _0xf886a2=_0x3e4107['Agents'][_0x137676];var _0x4c3ec7=_0x29e7b6[_0xff9f('0x58')]();_0x4c3ec7[_0xff9f('0x3f')]('ut.UserId\x20=\x20?',_0xf886a2['id']);_0x5a3867['push'](db[_0xff9f('0x74')][_0xff9f('0x35')](_0x4c3ec7['toString'](),{'type':db[_0xff9f('0x74')][_0xff9f('0x89')][_0xff9f('0x8a')]})['then'](function(_0x3dc17b){if(_0x3dc17b['length']===0x1){return _0xf886a2['id'];}else{var _0x3206e5=_[_0xff9f('0x8b')](_[_0xff9f('0x2c')](_0x3dc17b,_0xff9f('0x8c')),function(_0x34d75e){return _['includes'](_0x485d29,_0x34d75e);});if(_0x3206e5){return _0xf886a2['id'];}}}));}}return BPromise[_0xff9f('0x8d')](_0x5a3867)['then'](function(_0x19e865){_0x356216=_(_0x356216)['union'](_0x19e865)[_0xff9f('0x8e')]()['value']();return db[_0xff9f('0x32')][_0xff9f('0x4c')]({'where':{'id':_0x4200dd[_0xff9f('0x49')]['id']}})[_0xff9f('0x26')](function(_0x52dd5b){return db[_0xff9f('0x74')][_0xff9f('0x75')](function(_0x3a5fc4){return _0x52dd5b[_0xff9f('0x7f')](_0x4200dd[_0xff9f('0x35')][_0xff9f('0x80')],{'transaction':_0x3a5fc4})['then'](function(){if(!_['isEmpty'](_0x356216)){return _0x52dd5b[_0xff9f('0x8f')](_0x356216,{'transaction':_0x3a5fc4})[_0xff9f('0x26')](function(){return db[_0xff9f('0x7b')]['destroy']({'where':{'VoiceQueueId':_0x4200dd[_0xff9f('0x49')]['id'],'UserId':_0x356216},'transaction':_0x3a5fc4});});}})[_0xff9f('0x26')](function(){_0x356216['forEach'](function(_0x1d2b7e){socket['emit'](_0xff9f('0x90'),{'UserId':_0x1d2b7e,'VoiceQueueId':_0x52dd5b['id']});});});});});});})[_0xff9f('0x26')](respondWithStatusCode(_0x469bf1,null))[_0xff9f('0x47')](handleError(_0x469bf1,null));};exports[_0xff9f('0x91')]=function(_0x28e5da,_0x347465,_0xd92a4a){var _0x265ece,_0x1dcb4b;return db[_0xff9f('0x32')][_0xff9f('0x4c')]({'where':{'id':_0x28e5da[_0xff9f('0x49')]['id']}})[_0xff9f('0x26')](handleEntityNotFound(_0x347465,null))[_0xff9f('0x26')](function(_0x1ff31a){if(_0x1ff31a){_0x1dcb4b=_0x1ff31a;return _0x1ff31a[_0xff9f('0x91')](_0x28e5da['body'][_0xff9f('0x80')],_[_0xff9f('0x59')](_0x28e5da[_0xff9f('0x5c')],[_0xff9f('0x80'),'id'])||{})[_0xff9f('0x92')](function(_0x16e488){for(var _0x2fb1ec=0x0;_0x2fb1ec<_0x28e5da[_0xff9f('0x5c')][_0xff9f('0x80')][_0xff9f('0x3b')];_0x2fb1ec+=0x1){socket[_0xff9f('0x93')](_0xff9f('0x7e'),{'UserId':Number(_0x28e5da['body'][_0xff9f('0x80')][_0x2fb1ec]),'VoiceQueueId':Number(_0x28e5da[_0xff9f('0x49')]['id'])});}return _0x16e488;});}})['then'](function(_0x372f80){_0x265ece=_0x372f80||[];if(_0x1dcb4b){return db[_0xff9f('0x6d')][_0xff9f('0x45')]({'where':{'id':_0x28e5da[_0xff9f('0x5c')][_0xff9f('0x80')]},'attributes':['id',_0xff9f('0x2f'),_0xff9f('0x6f'),_0xff9f('0x70'),_0xff9f('0x71')],'raw':!![]});}})[_0xff9f('0x26')](function(_0x36138f){if(!_[_0xff9f('0x94')](_0x36138f)){var _0x2a58c9=[];for(var _0x56a9ca=0x0;_0x56a9ca<_0x36138f[_0xff9f('0x3b')];_0x56a9ca++){if(_0x36138f[_0x56a9ca][_0xff9f('0x6f')]){_0x2a58c9['push'](db[_0xff9f('0x7b')][_0xff9f('0x78')]({'membername':_0x36138f[_0x56a9ca]['name'],'UserId':_0x36138f[_0x56a9ca]['id'],'queue_name':_0x1dcb4b[_0xff9f('0x2f')],'VoiceQueueId':_0x1dcb4b['id'],'interface':_[_0xff9f('0x7c')](_0x36138f[_0x56a9ca][_0xff9f('0x71')])?util[_0xff9f('0x95')](_0xff9f('0x7d'),_0x36138f[_0x56a9ca][_0xff9f('0x2f')]):_0x36138f[_0x56a9ca][_0xff9f('0x71')],'paused':_0x36138f[_0x56a9ca][_0xff9f('0x70')]||![],'penalty':_0x28e5da[_0xff9f('0x5c')][_0xff9f('0x73')]||0x0}));}}return BPromise[_0xff9f('0x8d')](_0x2a58c9);}})[_0xff9f('0x26')](function(){return _0x265ece;})[_0xff9f('0x26')](respondWithResult(_0x347465,null))[_0xff9f('0x47')](handleError(_0x347465,null));};exports[_0xff9f('0x8f')]=function(_0x5dddf6,_0x22ad20,_0x23a855){return db[_0xff9f('0x32')][_0xff9f('0x4c')]({'where':{'id':_0x5dddf6[_0xff9f('0x49')]['id']}})[_0xff9f('0x26')](handleEntityNotFound(_0x22ad20,null))[_0xff9f('0x26')](function(_0x45792e){if(_0x45792e){return _0x45792e['removeAgents'](_0x5dddf6[_0xff9f('0x35')][_0xff9f('0x80')])[_0xff9f('0x26')](function(){if(_[_0xff9f('0x96')](_0x5dddf6[_0xff9f('0x35')][_0xff9f('0x80')])){for(var _0x5dee5b=0x0;_0x5dee5b<_0x5dddf6[_0xff9f('0x35')]['ids'][_0xff9f('0x3b')];_0x5dee5b+=0x1){socket[_0xff9f('0x93')](_0xff9f('0x90'),{'UserId':Number(_0x5dddf6[_0xff9f('0x35')][_0xff9f('0x80')][_0x5dee5b]),'VoiceQueueId':Number(_0x5dddf6['params']['id'])});}}else{socket[_0xff9f('0x93')](_0xff9f('0x90'),{'UserId':Number(_0x5dddf6[_0xff9f('0x35')][_0xff9f('0x80')]),'VoiceQueueId':Number(_0x5dddf6[_0xff9f('0x49')]['id'])});}});}})['then'](function(_0x5e0b6d){return db['UserVoiceQueueRt'][_0xff9f('0x27')]({'where':{'VoiceQueueId':_0x5dddf6[_0xff9f('0x49')]['id'],'UserId':_0x5dddf6[_0xff9f('0x35')]['ids']}})[_0xff9f('0x26')](function(){return _0x5e0b6d;});})['then'](respondWithStatusCode(_0x22ad20,null))[_0xff9f('0x47')](handleError(_0x22ad20,null));};exports[_0xff9f('0x97')]=function(_0x2ce758,_0x1a613d,_0xe80283){var _0x1fcf09={};var _0x3744cb={};var _0x27063d;var _0x1fcdaf;return db[_0xff9f('0x32')][_0xff9f('0x5f')]({'where':{'id':_0x2ce758[_0xff9f('0x49')]['id']}})['then'](handleEntityNotFound(_0x1a613d,null))[_0xff9f('0x26')](function(_0x1193a4){if(_0x1193a4){_0x27063d=_0x1193a4;_0x3744cb['model']=_[_0xff9f('0x36')](db[_0xff9f('0x6d')][_0xff9f('0x4a')]);_0x3744cb[_0xff9f('0x35')]=_[_0xff9f('0x36')](_0x2ce758[_0xff9f('0x35')]);_0x3744cb['filters']=_['intersection'](_0x3744cb[_0xff9f('0x34')],_0x3744cb[_0xff9f('0x35')]);_0x1fcf09[_0xff9f('0x3a')]=_['intersection'](_0x3744cb['model'],qs[_0xff9f('0x39')](_0x2ce758[_0xff9f('0x35')][_0xff9f('0x39')]));_0x1fcf09[_0xff9f('0x3a')]=_0x1fcf09['attributes'][_0xff9f('0x3b')]?_0x1fcf09[_0xff9f('0x3a')]:_0x3744cb[_0xff9f('0x34')];_0x1fcf09[_0xff9f('0x61')]=qs['sort'](_0x2ce758[_0xff9f('0x35')][_0xff9f('0x3e')]);_0x1fcf09['where']=qs[_0xff9f('0x37')](_[_0xff9f('0x40')](_0x2ce758['query'],_0x3744cb[_0xff9f('0x37')]));if(_0x2ce758[_0xff9f('0x35')][_0xff9f('0x2a')]){_0x1fcf09[_0xff9f('0x3f')]=_['merge'](_0x1fcf09['where'],{'$or':_['map'](_0x1fcf09['attributes'],function(_0x2795ff){var _0x45e5e5={};_0x45e5e5[_0x2795ff]={'$like':'%'+_0x2ce758[_0xff9f('0x35')][_0xff9f('0x2a')]+'%'};return _0x45e5e5;})});}_0x1fcf09=_['merge']({},_0x1fcf09,_0x2ce758[_0xff9f('0x43')]);return _0x27063d[_0xff9f('0x97')](_0x1fcf09);}})[_0xff9f('0x26')](function(_0x16a075){if(_0x16a075){_0x1fcdaf=_0x16a075['length'];if(!_0x2ce758[_0xff9f('0x35')][_0xff9f('0x3c')]('nolimit')){_0x1fcf09[_0xff9f('0x20')]=qs[_0xff9f('0x20')](_0x2ce758['query'][_0xff9f('0x20')]);_0x1fcf09[_0xff9f('0x1d')]=qs[_0xff9f('0x1d')](_0x2ce758[_0xff9f('0x35')]['offset']);}return _0x27063d['getAgents'](_0x1fcf09);}})[_0xff9f('0x26')](function(_0x4bf399){if(_0x4bf399){return _0x4bf399?{'count':_0x1fcdaf,'rows':_0x4bf399}:null;}})[_0xff9f('0x26')](respondWithResult(_0x1a613d,null))[_0xff9f('0x47')](handleError(_0x1a613d,null));};exports[_0xff9f('0x98')]=function(_0x29504e,_0x15d590,_0x312b4d){var _0x2d878f={};var _0x49c214={};var _0x3e4137;var _0x323986;return db[_0xff9f('0x32')][_0xff9f('0x5f')]({'where':{'id':_0x29504e[_0xff9f('0x49')]['id']}})[_0xff9f('0x26')](handleEntityNotFound(_0x15d590,null))['then'](function(_0x1ff4a8){if(_0x1ff4a8){_0x3e4137=_0x1ff4a8;_0x49c214[_0xff9f('0x34')]=_[_0xff9f('0x36')](db['UserVoiceQueueRt'][_0xff9f('0x4a')]);_0x49c214[_0xff9f('0x35')]=_['keys'](_0x29504e[_0xff9f('0x35')]);_0x49c214['filters']=_[_0xff9f('0x38')](_0x49c214[_0xff9f('0x34')],_0x49c214[_0xff9f('0x35')]);_0x2d878f[_0xff9f('0x3a')]=_[_0xff9f('0x38')](_0x49c214[_0xff9f('0x34')],qs[_0xff9f('0x39')](_0x29504e['query']['fields']));_0x2d878f[_0xff9f('0x3a')]=_0x2d878f[_0xff9f('0x3a')][_0xff9f('0x3b')]?_0x2d878f[_0xff9f('0x3a')]:_0x49c214[_0xff9f('0x34')];_0x2d878f[_0xff9f('0x61')]=qs[_0xff9f('0x3e')](_0x29504e['query'][_0xff9f('0x3e')]);_0x2d878f[_0xff9f('0x3f')]=qs[_0xff9f('0x37')](_[_0xff9f('0x40')](_0x29504e[_0xff9f('0x35')],_0x49c214[_0xff9f('0x37')]));if(_0x29504e[_0xff9f('0x35')][_0xff9f('0x2a')]){_0x2d878f[_0xff9f('0x3f')]=_[_0xff9f('0x41')](_0x2d878f[_0xff9f('0x3f')],{'$or':_[_0xff9f('0x2c')](_0x2d878f[_0xff9f('0x3a')],function(_0xb49543){var _0x3c2dc9={};_0x3c2dc9[_0xb49543]={'$like':'%'+_0x29504e[_0xff9f('0x35')]['filter']+'%'};return _0x3c2dc9;})});}_0x2d878f=_['merge']({},_0x2d878f,_0x29504e['options']);return _0x3e4137[_0xff9f('0x98')](_0x2d878f);}})['then'](function(_0x455219){if(_0x455219){_0x323986=_0x455219[_0xff9f('0x3b')];if(!_0x29504e[_0xff9f('0x35')][_0xff9f('0x3c')](_0xff9f('0x3d'))){_0x2d878f[_0xff9f('0x20')]=qs[_0xff9f('0x20')](_0x29504e[_0xff9f('0x35')][_0xff9f('0x20')]);_0x2d878f[_0xff9f('0x1d')]=qs[_0xff9f('0x1d')](_0x29504e[_0xff9f('0x35')][_0xff9f('0x1d')]);}return _0x3e4137[_0xff9f('0x98')](_0x2d878f);}})[_0xff9f('0x26')](function(_0x5051a6){return _0x5051a6?{'count':_0x323986,'rows':_0x5051a6}:null;})[_0xff9f('0x26')](respondWithResult(_0x15d590,null))[_0xff9f('0x47')](handleError(_0x15d590,null));};exports[_0xff9f('0x99')]=function(_0x40a8b2,_0x6363ea,_0x10af24){var _0x1145f4={};var _0x31d25f={};var _0xb5b3b8;var _0x44acb5;return db[_0xff9f('0x32')]['findOne']({'where':{'id':_0x40a8b2[_0xff9f('0x49')]['id']}})[_0xff9f('0x26')](handleEntityNotFound(_0x6363ea,null))[_0xff9f('0x26')](function(_0x13b25c){if(_0x13b25c){_0xb5b3b8=_0x13b25c;_0x31d25f[_0xff9f('0x34')]=_[_0xff9f('0x36')](db[_0xff9f('0x9a')][_0xff9f('0x4a')]);_0x31d25f[_0xff9f('0x35')]=_['keys'](_0x40a8b2[_0xff9f('0x35')]);_0x31d25f['filters']=_['intersection'](_0x31d25f[_0xff9f('0x34')],_0x31d25f[_0xff9f('0x35')]);_0x1145f4[_0xff9f('0x3a')]=_[_0xff9f('0x38')](_0x31d25f[_0xff9f('0x34')],qs[_0xff9f('0x39')](_0x40a8b2[_0xff9f('0x35')][_0xff9f('0x39')]));_0x1145f4['attributes']=_0x1145f4[_0xff9f('0x3a')][_0xff9f('0x3b')]?_0x1145f4['attributes']:_0x31d25f[_0xff9f('0x34')];_0x1145f4[_0xff9f('0x61')]=qs[_0xff9f('0x3e')](_0x40a8b2[_0xff9f('0x35')][_0xff9f('0x3e')]);_0x1145f4[_0xff9f('0x3f')]=qs[_0xff9f('0x37')](_[_0xff9f('0x40')](_0x40a8b2['query'],_0x31d25f[_0xff9f('0x37')]));if(_0x40a8b2['query'][_0xff9f('0x2a')]){_0x1145f4['where']=_[_0xff9f('0x41')](_0x1145f4['where'],{'$or':_['map'](_0x1145f4[_0xff9f('0x3a')],function(_0x247b3f){var _0x58cce8={};_0x58cce8[_0x247b3f]={'$like':'%'+_0x40a8b2['query'][_0xff9f('0x2a')]+'%'};return _0x58cce8;})});}_0x1145f4=_[_0xff9f('0x41')]({},_0x1145f4,_0x40a8b2[_0xff9f('0x43')]);return _0xb5b3b8[_0xff9f('0x99')](_0x1145f4);}})['then'](function(_0x495c33){if(_0x495c33){_0x44acb5=_0x495c33['length'];if(!_0x40a8b2[_0xff9f('0x35')][_0xff9f('0x3c')](_0xff9f('0x3d'))){_0x1145f4[_0xff9f('0x20')]=qs['limit'](_0x40a8b2[_0xff9f('0x35')]['limit']);_0x1145f4[_0xff9f('0x1d')]=qs[_0xff9f('0x1d')](_0x40a8b2['query'][_0xff9f('0x1d')]);}return _0xb5b3b8[_0xff9f('0x99')](_0x1145f4);}})['then'](function(_0x1454b3){if(_0x1454b3){return _0x1454b3?{'count':_0x44acb5,'rows':_0x1454b3}:null;}})[_0xff9f('0x26')](respondWithResult(_0x6363ea,null))[_0xff9f('0x47')](handleError(_0x6363ea,null));};exports[_0xff9f('0x9b')]=function(_0x4499ec,_0x582693,_0x401180){var _0x31e4db,_0x583a01;return db[_0xff9f('0x32')][_0xff9f('0x4c')]({'where':{'id':_0x4499ec[_0xff9f('0x49')]['id']}})[_0xff9f('0x26')](handleEntityNotFound(_0x582693,null))[_0xff9f('0x26')](function(_0x32933a){if(_0x32933a){_0x583a01=_0x32933a;return _0x32933a[_0xff9f('0x9b')](_0x4499ec[_0xff9f('0x5c')][_0xff9f('0x80')],_[_0xff9f('0x59')](_0x4499ec[_0xff9f('0x5c')],[_0xff9f('0x80'),'id'])||{});}return null;})[_0xff9f('0x92')](function(_0x1fc86c){var _0x1acb16;_0x31e4db=_0x1fc86c||[];var _0x56fef2=[];if(_0x1fc86c){for(var _0x42bdb6=0x0;_0x42bdb6<_0x1fc86c['length'];_0x42bdb6+=0x1){var _0x5da659=_0x1fc86c[_0x42bdb6][_0xff9f('0x28')]({'plain':!![]});_0x583a01[_0xff9f('0x9c')]=_0x4499ec[_0xff9f('0x5c')][_0xff9f('0x9c')]?_0x4499ec[_0xff9f('0x5c')][_0xff9f('0x9c')]:_0x583a01[_0xff9f('0x9c')];switch(_0x583a01['dialCheckDuplicateType']){case _0xff9f('0x9d'):_0x1acb16=squel[_0xff9f('0x9e')]()[_0xff9f('0x9f')](_0xff9f('0xa0'))['fromQuery']([_0xff9f('0xa1'),'scheduledAt',_0xff9f('0xa2'),'ListId','VoiceQueueId',_0xff9f('0x5a'),_0xff9f('0x5b')],squel['select']()['field']('phone',_0xff9f('0xa1'))['field'](_0xff9f('0xa3'),_0xff9f('0xa4'))[_0xff9f('0x82')]('id','ContactId')[_0xff9f('0x82')](_0x5da659[_0xff9f('0xa5')][_0xff9f('0xa6')](),_0xff9f('0xa7'))['field'](_0x4499ec[_0xff9f('0x49')]['id'][_0xff9f('0xa6')](),'VoiceQueueId')[_0xff9f('0x82')](_0xff9f('0xa3'),_0xff9f('0x5a'))[_0xff9f('0x82')](_0xff9f('0xa3'),_0xff9f('0x5b'))[_0xff9f('0x84')](_0xff9f('0xa8'))[_0xff9f('0x3f')](_0xff9f('0xa9'))[_0xff9f('0x3f')](_0xff9f('0xaa'),_0x5da659['CmListId'][_0xff9f('0xa6')]())[_0xff9f('0x3f')]('phone\x20IS\x20NOT\x20NULL')[_0xff9f('0x3f')](_0xff9f('0xab'),squel[_0xff9f('0x81')]()[_0xff9f('0x82')]('COALESCE(calleridnum,\x27\x27)')[_0xff9f('0x84')](_0xff9f('0xac'))[_0xff9f('0x3f')](_0xff9f('0xad'),_0x4499ec[_0xff9f('0x49')]['id']['toString']()))['where'](_0xff9f('0xab'),squel[_0xff9f('0x81')]()[_0xff9f('0x82')](_0xff9f('0xae'))['from'](_0xff9f('0xa0'))['where']('VoiceQueueId\x20=\x20?',_0x4499ec['params']['id'][_0xff9f('0xa6')]())))[_0xff9f('0xa6')]();break;case _0xff9f('0xaf'):_0x1acb16=squel[_0xff9f('0x9e')]()[_0xff9f('0x9f')]('cm_hopper')[_0xff9f('0xb0')]([_0xff9f('0xa1'),_0xff9f('0xa4'),'ContactId',_0xff9f('0xa7'),'VoiceQueueId',_0xff9f('0x5a'),'updatedAt'],squel[_0xff9f('0x81')]()[_0xff9f('0x82')](_0xff9f('0xa1'),_0xff9f('0xa1'))[_0xff9f('0x82')]('NOW()',_0xff9f('0xa4'))[_0xff9f('0x82')]('id',_0xff9f('0xa2'))[_0xff9f('0x82')](_0x5da659[_0xff9f('0xa5')][_0xff9f('0xa6')](),'ListId')[_0xff9f('0x82')](_0x4499ec[_0xff9f('0x49')]['id']['toString'](),'VoiceQueueId')[_0xff9f('0x82')](_0xff9f('0xa3'),_0xff9f('0x5a'))[_0xff9f('0x82')](_0xff9f('0xa3'),_0xff9f('0x5b'))[_0xff9f('0x84')](_0xff9f('0xa8'))['where'](_0xff9f('0xa9'))[_0xff9f('0x3f')](_0xff9f('0xaa'),_0x5da659['CmListId'][_0xff9f('0xa6')]())['where'](_0xff9f('0xb1'))[_0xff9f('0x3f')]('phone\x20NOT\x20IN\x20(?)',squel[_0xff9f('0x81')]()[_0xff9f('0x82')](_0xff9f('0xae'))[_0xff9f('0x84')](_0xff9f('0xa0'))[_0xff9f('0x3f')](_0xff9f('0xad'),_0x4499ec[_0xff9f('0x49')]['id']['toString']())))[_0xff9f('0xa6')]();break;default:_0x1acb16=squel[_0xff9f('0x9e')]()[_0xff9f('0x9f')](_0xff9f('0xa0'))[_0xff9f('0xb0')]([_0xff9f('0xa1'),_0xff9f('0xa4'),_0xff9f('0xa2'),_0xff9f('0xa7'),_0xff9f('0x62'),'createdAt',_0xff9f('0x5b')],squel[_0xff9f('0x81')]()['field'](_0xff9f('0xa1'),_0xff9f('0xa1'))[_0xff9f('0x82')](_0xff9f('0xa3'),_0xff9f('0xa4'))['field']('id','ContactId')[_0xff9f('0x82')](_0x5da659[_0xff9f('0xa5')]['toString'](),_0xff9f('0xa7'))['field'](_0x4499ec['params']['id']['toString'](),'VoiceQueueId')[_0xff9f('0x82')](_0xff9f('0xa3'),_0xff9f('0x5a'))[_0xff9f('0x82')](_0xff9f('0xa3'),_0xff9f('0x5b'))[_0xff9f('0x84')](_0xff9f('0xa8'))[_0xff9f('0x3f')](_0xff9f('0xa9'))[_0xff9f('0x3f')](_0xff9f('0xaa'),_0x5da659[_0xff9f('0xa5')]['toString']())['where'](_0xff9f('0xb1')))[_0xff9f('0xa6')]();}_0x56fef2[_0xff9f('0xb2')](db[_0xff9f('0x74')][_0xff9f('0x35')](_0x1acb16));}return BPromise[_0xff9f('0x8d')](_0x56fef2);}})[_0xff9f('0x26')](function(){return _0x31e4db;})['then'](respondWithResult(_0x582693,null))[_0xff9f('0x47')](handleError(_0x582693,null));};exports[_0xff9f('0xb3')]=function(_0x22c112,_0x28d584,_0x47efa5){return db[_0xff9f('0x32')][_0xff9f('0x4c')]({'where':{'id':_0x22c112['params']['id']}})['then'](handleEntityNotFound(_0x28d584,null))[_0xff9f('0x26')](function(_0x22638d){if(_0x22638d){return _0x22638d[_0xff9f('0xb3')](_0x22c112[_0xff9f('0x35')][_0xff9f('0x80')]);}})[_0xff9f('0x26')](function(_0x24be28){if(_0x24be28){return db[_0xff9f('0x60')][_0xff9f('0x27')]({'where':{'ListId':_0x22c112[_0xff9f('0x35')][_0xff9f('0x80')],'VoiceQueueId':_0x22c112['params']['id']}})['then'](function(){return _0x24be28;});}})[_0xff9f('0x26')](respondWithStatusCode(_0x28d584,null))[_0xff9f('0x47')](handleError(_0x28d584,null));};exports[_0xff9f('0xb4')]=function(_0x528675,_0x2b9cd6,_0x2dd8ca){var _0x2bf488={};var _0x1607c1={};var _0x4bda45;var _0x5532a2;return db['VoiceQueue'][_0xff9f('0x5f')]({'where':{'id':_0x528675[_0xff9f('0x49')]['id']}})[_0xff9f('0x26')](handleEntityNotFound(_0x2b9cd6,null))[_0xff9f('0x26')](function(_0x232857){if(_0x232857){_0x4bda45=_0x232857;_0x1607c1[_0xff9f('0x34')]=_[_0xff9f('0x36')](db[_0xff9f('0x9a')]['rawAttributes']);_0x1607c1['query']=_[_0xff9f('0x36')](_0x528675[_0xff9f('0x35')]);_0x1607c1[_0xff9f('0x37')]=_[_0xff9f('0x38')](_0x1607c1[_0xff9f('0x34')],_0x1607c1[_0xff9f('0x35')]);_0x2bf488[_0xff9f('0x3a')]=_[_0xff9f('0x38')](_0x1607c1['model'],qs[_0xff9f('0x39')](_0x528675['query'][_0xff9f('0x39')]));_0x2bf488['attributes']=_0x2bf488[_0xff9f('0x3a')][_0xff9f('0x3b')]?_0x2bf488[_0xff9f('0x3a')]:_0x1607c1[_0xff9f('0x34')];_0x2bf488[_0xff9f('0x61')]=qs['sort'](_0x528675[_0xff9f('0x35')][_0xff9f('0x3e')]);_0x2bf488[_0xff9f('0x3f')]=qs[_0xff9f('0x37')](_[_0xff9f('0x40')](_0x528675['query'],_0x1607c1[_0xff9f('0x37')]));if(_0x528675[_0xff9f('0x35')][_0xff9f('0x2a')]){_0x2bf488['where']=_[_0xff9f('0x41')](_0x2bf488['where'],{'$or':_[_0xff9f('0x2c')](_0x2bf488['attributes'],function(_0x1206e1){var _0x73b721={};_0x73b721[_0x1206e1]={'$like':'%'+_0x528675[_0xff9f('0x35')][_0xff9f('0x2a')]+'%'};return _0x73b721;})});}_0x2bf488=_[_0xff9f('0x41')]({},_0x2bf488,_0x528675['options']);return _0x4bda45[_0xff9f('0xb4')](_0x2bf488);}})['then'](function(_0x5aaff5){if(_0x5aaff5){_0x5532a2=_0x5aaff5[_0xff9f('0x3b')];if(!_0x528675['query']['hasOwnProperty'](_0xff9f('0x3d'))){_0x2bf488[_0xff9f('0x20')]=qs[_0xff9f('0x20')](_0x528675[_0xff9f('0x35')][_0xff9f('0x20')]);_0x2bf488[_0xff9f('0x1d')]=qs[_0xff9f('0x1d')](_0x528675[_0xff9f('0x35')][_0xff9f('0x1d')]);}return _0x4bda45['getBlackLists'](_0x2bf488);}})[_0xff9f('0x26')](function(_0x1163ca){if(_0x1163ca){return _0x1163ca?{'count':_0x5532a2,'rows':_0x1163ca}:null;}})[_0xff9f('0x26')](respondWithResult(_0x2b9cd6,null))[_0xff9f('0x47')](handleError(_0x2b9cd6,null));};exports['addBlackLists']=function(_0x58b360,_0x7b8929,_0x210545){var _0x3dcc72,_0x315cad;return db[_0xff9f('0x32')][_0xff9f('0x4c')]({'where':{'id':_0x58b360[_0xff9f('0x49')]['id']}})['then'](handleEntityNotFound(_0x7b8929,null))[_0xff9f('0x26')](function(_0xa36c26){if(_0xa36c26){_0x315cad=_0xa36c26;return _0xa36c26[_0xff9f('0xb5')](_0x58b360[_0xff9f('0x5c')][_0xff9f('0x80')],_[_0xff9f('0x59')](_0x58b360['body'],[_0xff9f('0x80'),'id'])||{});}return null;})[_0xff9f('0x92')](function(_0x5e5abf){var _0x4f22bb;_0x3dcc72=_0x5e5abf||[];var _0x32b1a8=[];if(_0x5e5abf){for(var _0x5000da=0x0;_0x5000da<_0x5e5abf[_0xff9f('0x3b')];_0x5000da+=0x1){var _0x3f2ea7=_0x5e5abf[_0x5000da]['get']({'plain':!![]});_0x4f22bb=squel[_0xff9f('0x9e')]()[_0xff9f('0x9f')]('cm_hopper_black')[_0xff9f('0xb0')]([_0xff9f('0xa1'),'ContactId',_0xff9f('0xa7'),_0xff9f('0x62'),_0xff9f('0x5a'),_0xff9f('0x5b')],squel[_0xff9f('0x81')]()[_0xff9f('0x82')](_0xff9f('0xa1'),_0xff9f('0xa1'))[_0xff9f('0x82')]('id',_0xff9f('0xa2'))[_0xff9f('0x82')](_0x3f2ea7[_0xff9f('0xa5')][_0xff9f('0xa6')](),_0xff9f('0xa7'))['field'](_0x58b360[_0xff9f('0x49')]['id']['toString'](),'VoiceQueueId')[_0xff9f('0x82')](_0xff9f('0xa3'),_0xff9f('0x5a'))[_0xff9f('0x82')](_0xff9f('0xa3'),'updatedAt')[_0xff9f('0x84')]('cm_contacts')['where']('deletedAt\x20IS\x20NULL')[_0xff9f('0x3f')]('ListId\x20=\x20?',_0x3f2ea7[_0xff9f('0xa5')]['toString']())[_0xff9f('0x3f')](_0xff9f('0xb1')))[_0xff9f('0xa6')]();_0x32b1a8[_0xff9f('0xb2')](db[_0xff9f('0x74')][_0xff9f('0x35')](_0x4f22bb));}return BPromise[_0xff9f('0x8d')](_0x32b1a8);}})[_0xff9f('0x26')](function(){return _0x3dcc72;})[_0xff9f('0x26')](respondWithResult(_0x7b8929,null))['catch'](handleError(_0x7b8929,null));};exports[_0xff9f('0xb6')]=function(_0x1a3ef0,_0x3cfc30,_0x309ced){return db['VoiceQueue'][_0xff9f('0x4c')]({'where':{'id':_0x1a3ef0[_0xff9f('0x49')]['id']}})['then'](handleEntityNotFound(_0x3cfc30,null))['then'](function(_0x2de12d){if(_0x2de12d){return _0x2de12d[_0xff9f('0xb6')](_0x1a3ef0[_0xff9f('0x35')][_0xff9f('0x80')]);}})[_0xff9f('0x26')](function(_0x554153){if(_0x554153){return db[_0xff9f('0x68')]['destroy']({'where':{'ListId':_0x1a3ef0[_0xff9f('0x35')][_0xff9f('0x80')],'VoiceQueueId':_0x1a3ef0['params']['id']}})[_0xff9f('0x26')](function(){return _0x554153;});}})[_0xff9f('0x26')](respondWithStatusCode(_0x3cfc30,null))[_0xff9f('0x47')](handleError(_0x3cfc30,null));};
\ No newline at end of file
+var _0x0c30=['spread','isArray','getAgents','getMembers','getLists','CmList','addLists','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','NOW()','CmListId','ListId','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','COALESCE(phone,\x27\x27)','onlyIfOpen','removeLists','getBlackLists','addBlackLists','removeBlackLists','eml-format','rimraf','bluebird','mustache','util','path','to-csv','fs-extra','squel','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','../../mysqldb','redis','socket.io-emitter','register','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','VoiceQueues','inbound','QueueCampaigns','outbound','ignore','map','value','includes','type','find','name','sendStatus','error','send','VoiceQueue','fieldName','key','model','query','keys','filters','intersection','attributes','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','fields','options','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','length','omit','createdAt','updatedAt','role','UserProfileSection','getHoppers','findOne','rawAttributes','nolimit','VoiceQueueId','CmHopper','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','Team','getTeams','addTeams','User','Agents','online','voicePause','interface','flatMap','forEach','penalty','sequelize','transaction','TeamVoiceQueue','upsert','each','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','isNil','format','SIP/%s','userVoiceQueue:save','removeTeams','ids','select','field','from','team_has_voice_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','all','isEmpty','removeAgents','emit','userVoiceQueue:remove','addAgents'];(function(_0x1d5759,_0x417e09){var _0x51ddcd=function(_0x4e3f43){while(--_0x4e3f43){_0x1d5759['push'](_0x1d5759['shift']());}};_0x51ddcd(++_0x417e09);}(_0x0c30,0xd7));var _0x00c3=function(_0x386c3e,_0x44a375){_0x386c3e=_0x386c3e-0x0;var _0x4b8e13=_0x0c30[_0x386c3e];return _0x4b8e13;};'use strict';var emlformat=require(_0x00c3('0x0'));var rimraf=require(_0x00c3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x00c3('0x2'));var Mustache=require(_0x00c3('0x3'));var util=require(_0x00c3('0x4'));var path=require(_0x00c3('0x5'));var sox=require('sox');var csv=require(_0x00c3('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x00c3('0x7'));var _=require('lodash');var squel=require(_0x00c3('0x8'));var crypto=require('crypto');var jsforce=require(_0x00c3('0x9'));var deskjs=require(_0x00c3('0xa'));var toCsv=require(_0x00c3('0x6'));var querystring=require(_0x00c3('0xb'));var Papa=require('papaparse');var Redis=require(_0x00c3('0xc'));var authService=require(_0x00c3('0xd'));var qs=require(_0x00c3('0xe'));var as=require(_0x00c3('0xf'));var hardwareService=require(_0x00c3('0x10'));var logger=require(_0x00c3('0x11'))(_0x00c3('0x12'));var utils=require(_0x00c3('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x00c3('0x14'));var db=require(_0x00c3('0x15'))['db'];config[_0x00c3('0x16')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x00c3('0x17'))(new Redis(config[_0x00c3('0x16')]));require('./voiceQueue.socket')[_0x00c3('0x18')](socket);function respondWithStatusCode(_0x19e406,_0x3b68ce){_0x3b68ce=_0x3b68ce||0xcc;return function(_0x5b5368){if(_0x5b5368){return _0x19e406['sendStatus'](_0x3b68ce);}return _0x19e406[_0x00c3('0x19')](_0x3b68ce)[_0x00c3('0x1a')]();};}function respondWithResult(_0x5ef0aa,_0x2abb03){_0x2abb03=_0x2abb03||0xc8;return function(_0x20f379){if(_0x20f379){return _0x5ef0aa[_0x00c3('0x19')](_0x2abb03)[_0x00c3('0x1b')](_0x20f379);}};}function respondWithFilteredResult(_0x2c6144,_0x23fc23){return function(_0x36a03){if(_0x36a03){var _0x18b754=typeof _0x23fc23[_0x00c3('0x1c')]==='undefined'&&typeof _0x23fc23[_0x00c3('0x1d')]===_0x00c3('0x1e');var _0x3ff324=_0x36a03[_0x00c3('0x1f')];var _0x412fd1=_0x18b754?0x0:_0x23fc23[_0x00c3('0x1c')];var _0x22118a=_0x18b754?_0x36a03[_0x00c3('0x1f')]:_0x23fc23['offset']+_0x23fc23[_0x00c3('0x1d')];var _0x2dbb6c;if(_0x22118a>=_0x3ff324){_0x22118a=_0x3ff324;_0x2dbb6c=0xc8;}else{_0x2dbb6c=0xce;}_0x2c6144[_0x00c3('0x19')](_0x2dbb6c);return _0x2c6144[_0x00c3('0x20')](_0x00c3('0x21'),_0x412fd1+'-'+_0x22118a+'/'+_0x3ff324)['json'](_0x36a03);}return null;};}function patchUpdates(_0x4ffd92){return function(_0x4411e0){try{jsonpatch[_0x00c3('0x22')](_0x4411e0,_0x4ffd92,!![]);}catch(_0x652c19){return BPromise[_0x00c3('0x23')](_0x652c19);}return _0x4411e0[_0x00c3('0x24')]();};}function saveUpdates(_0x41017c,_0x181ff4){return function(_0x47fb65){if(_0x47fb65){return _0x47fb65[_0x00c3('0x25')](_0x41017c)[_0x00c3('0x26')](function(_0x5a07ba){return _0x5a07ba;});}return null;};}function removeEntity(_0x4a0c9d,_0x5b7604){return function(_0x3db8c2){if(_0x3db8c2){return _0x3db8c2[_0x00c3('0x27')]()['then'](function(){var _0x2243e2=_0x3db8c2[_0x00c3('0x28')]({'plain':!![]});var _0x22fae3=[{'name':_0x00c3('0x29'),'value':_0x00c3('0x2a'),'ignore':![]},{'name':_0x00c3('0x2b'),'value':_0x00c3('0x2c'),'ignore':![]}];var _0x51442f=_(_0x22fae3)['filter'](_0x00c3('0x2d'))[_0x00c3('0x2e')](_0x00c3('0x2f'))[_0x00c3('0x2f')]();if(_[_0x00c3('0x30')](_0x51442f,_0x2243e2[_0x00c3('0x31')])){return;}var _0x2a50dc=_[_0x00c3('0x32')](_0x22fae3,['value',_0x2243e2[_0x00c3('0x31')]])[_0x00c3('0x33')];return db['UserProfileResource'][_0x00c3('0x27')]({'where':{'type':_0x2a50dc,'resourceId':_0x2243e2['id']}})[_0x00c3('0x26')](function(){return _0x3db8c2;});})['then'](function(){_0x4a0c9d['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ce048,_0x15edb4){return function(_0x5a9e2a){if(!_0x5a9e2a){_0x2ce048[_0x00c3('0x34')](0x194);}return _0x5a9e2a;};}function handleError(_0x555c0c,_0x13d929){_0x13d929=_0x13d929||0x1f4;return function(_0x164477){logger[_0x00c3('0x35')](_0x164477['stack']);if(_0x164477[_0x00c3('0x33')]){delete _0x164477['name'];}_0x555c0c[_0x00c3('0x19')](_0x13d929)[_0x00c3('0x36')](_0x164477);};}exports['index']=function(_0x2ce2f,_0x354e8c){var _0x4f0a24={},_0x273f87={},_0xe0cd2a={'count':0x0,'rows':[]};var _0x1f7f69=_[_0x00c3('0x2e')](db[_0x00c3('0x37')]['rawAttributes'],function(_0x6aa157){return{'name':_0x6aa157[_0x00c3('0x38')],'type':_0x6aa157[_0x00c3('0x31')][_0x00c3('0x39')]};});_0x273f87[_0x00c3('0x3a')]=_[_0x00c3('0x2e')](_0x1f7f69,_0x00c3('0x33'));_0x273f87[_0x00c3('0x3b')]=_[_0x00c3('0x3c')](_0x2ce2f[_0x00c3('0x3b')]);_0x273f87[_0x00c3('0x3d')]=_[_0x00c3('0x3e')](_0x273f87[_0x00c3('0x3a')],_0x273f87[_0x00c3('0x3b')]);_0x4f0a24[_0x00c3('0x3f')]=_[_0x00c3('0x3e')](_0x273f87[_0x00c3('0x3a')],qs['fields'](_0x2ce2f[_0x00c3('0x3b')]['fields']));_0x4f0a24[_0x00c3('0x3f')]=_0x4f0a24[_0x00c3('0x3f')]['length']?_0x4f0a24[_0x00c3('0x3f')]:_0x273f87[_0x00c3('0x3a')];if(!_0x2ce2f[_0x00c3('0x3b')][_0x00c3('0x40')]('nolimit')){_0x4f0a24[_0x00c3('0x1d')]=qs[_0x00c3('0x1d')](_0x2ce2f[_0x00c3('0x3b')][_0x00c3('0x1d')]);_0x4f0a24[_0x00c3('0x1c')]=qs[_0x00c3('0x1c')](_0x2ce2f['query'][_0x00c3('0x1c')]);}_0x4f0a24[_0x00c3('0x41')]=qs[_0x00c3('0x42')](_0x2ce2f[_0x00c3('0x3b')]['sort']);_0x4f0a24[_0x00c3('0x43')]=qs[_0x00c3('0x3d')](_[_0x00c3('0x44')](_0x2ce2f['query'],_0x273f87[_0x00c3('0x3d')]),_0x1f7f69);if(_0x2ce2f[_0x00c3('0x3b')][_0x00c3('0x45')]){_0x4f0a24['where']=_[_0x00c3('0x46')](_0x4f0a24[_0x00c3('0x43')],{'$or':_[_0x00c3('0x2e')](_0x1f7f69,function(_0x52bfcd){if(_0x52bfcd[_0x00c3('0x31')]!==_0x00c3('0x47')){var _0x439ed1={};_0x439ed1[_0x52bfcd['name']]={'$like':'%'+_0x2ce2f[_0x00c3('0x3b')][_0x00c3('0x45')]+'%'};return _0x439ed1;}})});}_0x4f0a24=_[_0x00c3('0x46')]({},_0x4f0a24,_0x2ce2f['options']);var _0x1b9cdf={'where':_0x4f0a24['where']};return db['VoiceQueue'][_0x00c3('0x1f')](_0x1b9cdf)[_0x00c3('0x26')](function(_0x2fcd86){_0xe0cd2a['count']=_0x2fcd86;if(_0x2ce2f['query'][_0x00c3('0x48')]){_0x4f0a24[_0x00c3('0x49')]=[{'all':!![]}];}return db[_0x00c3('0x37')][_0x00c3('0x4a')](_0x4f0a24);})['then'](function(_0x300e9e){_0xe0cd2a[_0x00c3('0x4b')]=_0x300e9e;return _0xe0cd2a;})[_0x00c3('0x26')](respondWithFilteredResult(_0x354e8c,_0x4f0a24))['catch'](handleError(_0x354e8c,null));};exports[_0x00c3('0x4c')]=function(_0x175147,_0x481273){var _0x1636f6={'raw':![],'where':{'id':_0x175147[_0x00c3('0x4d')]['id']}},_0x432af0={};_0x432af0[_0x00c3('0x3a')]=_['keys'](db[_0x00c3('0x37')]['rawAttributes']);_0x432af0[_0x00c3('0x3b')]=_[_0x00c3('0x3c')](_0x175147[_0x00c3('0x3b')]);_0x432af0['filters']=_[_0x00c3('0x3e')](_0x432af0[_0x00c3('0x3a')],_0x432af0[_0x00c3('0x3b')]);_0x1636f6[_0x00c3('0x3f')]=_[_0x00c3('0x3e')](_0x432af0[_0x00c3('0x3a')],qs[_0x00c3('0x4e')](_0x175147[_0x00c3('0x3b')][_0x00c3('0x4e')]));_0x1636f6[_0x00c3('0x3f')]=_0x1636f6['attributes']['length']?_0x1636f6[_0x00c3('0x3f')]:_0x432af0['model'];if(_0x175147[_0x00c3('0x3b')][_0x00c3('0x48')]){_0x1636f6['include']=[{'all':!![]}];}_0x1636f6=_[_0x00c3('0x46')]({},_0x1636f6,_0x175147[_0x00c3('0x4f')]);return db['VoiceQueue'][_0x00c3('0x32')](_0x1636f6)[_0x00c3('0x26')](handleEntityNotFound(_0x481273,null))[_0x00c3('0x26')](respondWithResult(_0x481273,null))[_0x00c3('0x50')](handleError(_0x481273,null));};exports[_0x00c3('0x51')]=function(_0x1c42bf,_0x46fe8c){return db[_0x00c3('0x37')][_0x00c3('0x51')](_0x1c42bf[_0x00c3('0x52')],{})[_0x00c3('0x26')](function(_0x12bd0f){var _0x4f56a6=_0x1c42bf[_0x00c3('0x53')][_0x00c3('0x28')]({'plain':!![]});if(!_0x4f56a6)throw new Error(_0x00c3('0x54'));if(_0x4f56a6['role']===_0x00c3('0x53')){var _0x2695f7=_0x12bd0f[_0x00c3('0x28')]({'plain':!![]});var _0x38a1ef=[{'name':_0x00c3('0x29'),'value':_0x00c3('0x2a')},{'name':_0x00c3('0x2b'),'value':'outbound'}];var _0x542d50=_[_0x00c3('0x32')](_0x38a1ef,['value',_0x2695f7['type']])[_0x00c3('0x33')];return db['UserProfileSection'][_0x00c3('0x32')]({'where':{'name':_0x542d50,'userProfileId':_0x4f56a6[_0x00c3('0x55')]},'raw':!![]})['then'](function(_0x3ef2af){if(_0x3ef2af&&_0x3ef2af[_0x00c3('0x56')]===0x0){return db[_0x00c3('0x57')]['create']({'name':_0x2695f7[_0x00c3('0x33')],'resourceId':_0x2695f7['id'],'type':_0x3ef2af[_0x00c3('0x33')],'sectionId':_0x3ef2af['id']},{})['then'](function(){return _0x12bd0f;});}else{return _0x12bd0f;}})[_0x00c3('0x50')](function(_0x141f52){logger['error'](_0x00c3('0x58'),_0x141f52);throw _0x141f52;});}return _0x12bd0f;})[_0x00c3('0x26')](respondWithResult(_0x46fe8c,0xc9))[_0x00c3('0x50')](handleError(_0x46fe8c,null));};exports[_0x00c3('0x59')]=function(_0x22139e,_0x2d93b4){var _0xba4569={'where':{'id':_0x22139e['params']['id']}},_0x5dcefa={};_0x5dcefa[_0x00c3('0x3a')]=_[_0x00c3('0x3c')](db[_0x00c3('0x37')]['rawAttributes']);_0xba4569[_0x00c3('0x3f')]=_['intersection'](_0x5dcefa['model'],qs[_0x00c3('0x4e')](_0x22139e[_0x00c3('0x3b')]['fields']));_0xba4569['attributes']=_0xba4569[_0x00c3('0x3f')][_0x00c3('0x5a')]?_0xba4569[_0x00c3('0x3f')]:_0x5dcefa[_0x00c3('0x3a')];if(_0x22139e[_0x00c3('0x3b')][_0x00c3('0x48')]){_0xba4569['include']=[{'all':!![]}];}_0xba4569=_['merge']({},_0xba4569,_0x22139e[_0x00c3('0x4f')]);return db[_0x00c3('0x37')]['find'](_0xba4569)[_0x00c3('0x26')](handleEntityNotFound(_0x2d93b4,null))[_0x00c3('0x26')](function(_0x3035fe){if(_0x3035fe){var _0x309a11=_0x3035fe[_0x00c3('0x28')]({'plain':!![]});_0x309a11=qs[_0x00c3('0x5b')](_0x309a11,['id',_0x00c3('0x5c'),_0x00c3('0x5d')]);_0x22139e[_0x00c3('0x52')]=_['omit'](_0x22139e[_0x00c3('0x52')],['id',_0x00c3('0x5c'),_0x00c3('0x5d')]);return db[_0x00c3('0x37')]['create'](_[_0x00c3('0x46')](_0x309a11,_0x22139e['body']),{'include':_0x22139e[_0x00c3('0x3b')][_0x00c3('0x48')]?[{'all':!![]}]:undefined})[_0x00c3('0x26')](function(_0x171f26){var _0x107045=_0x22139e['user'][_0x00c3('0x28')]({'plain':!![]});if(!_0x107045)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x107045[_0x00c3('0x5e')]===_0x00c3('0x53')){var _0x55264c=_0x171f26[_0x00c3('0x28')]({'plain':!![]});var _0x43616c=[{'name':_0x00c3('0x29'),'value':_0x00c3('0x2a')},{'name':_0x00c3('0x2b'),'value':_0x00c3('0x2c')}];var _0x3e7191=_[_0x00c3('0x32')](_0x43616c,[_0x00c3('0x2f'),_0x55264c[_0x00c3('0x31')]])[_0x00c3('0x33')];return db[_0x00c3('0x5f')][_0x00c3('0x32')]({'where':{'name':_0x3e7191,'userProfileId':_0x107045[_0x00c3('0x55')]},'raw':!![]})[_0x00c3('0x26')](function(_0x1b54a3){if(_0x1b54a3&&_0x1b54a3[_0x00c3('0x56')]===0x0){return db[_0x00c3('0x57')][_0x00c3('0x51')]({'name':_0x55264c[_0x00c3('0x33')],'resourceId':_0x55264c['id'],'type':_0x1b54a3['name'],'sectionId':_0x1b54a3['id']},{})[_0x00c3('0x26')](function(){return _0x171f26;});}else{return _0x171f26;}})[_0x00c3('0x50')](function(_0xeefe30){logger[_0x00c3('0x35')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xeefe30);throw _0xeefe30;});}return _0x171f26;});}})[_0x00c3('0x26')](respondWithResult(_0x2d93b4,0xc9))['catch'](handleError(_0x2d93b4,null));};exports[_0x00c3('0x25')]=function(_0x11ba79,_0x3db10b){if(_0x11ba79[_0x00c3('0x52')]['id']){delete _0x11ba79['body']['id'];}return db[_0x00c3('0x37')][_0x00c3('0x32')]({'where':{'id':_0x11ba79[_0x00c3('0x4d')]['id']}})[_0x00c3('0x26')](handleEntityNotFound(_0x3db10b,null))[_0x00c3('0x26')](saveUpdates(_0x11ba79[_0x00c3('0x52')],null))[_0x00c3('0x26')](respondWithResult(_0x3db10b,null))['catch'](handleError(_0x3db10b,null));};exports['destroy']=function(_0x27a480,_0x4424af){return db[_0x00c3('0x37')]['find']({'where':{'id':_0x27a480[_0x00c3('0x4d')]['id']}})[_0x00c3('0x26')](handleEntityNotFound(_0x4424af,null))['then'](removeEntity(_0x4424af,null))[_0x00c3('0x50')](handleError(_0x4424af,null));};exports[_0x00c3('0x60')]=function(_0x3a2f97,_0x2ddc53,_0x459688){var _0x493d84={'raw':![],'where':{}};var _0x4f43d3={};var _0x333ef5={'count':0x0,'rows':[]};return db[_0x00c3('0x37')][_0x00c3('0x61')]({'where':{'id':_0x3a2f97[_0x00c3('0x4d')]['id']}})[_0x00c3('0x26')](handleEntityNotFound(_0x2ddc53,null))[_0x00c3('0x26')](function(_0x3773b3){if(_0x3773b3){_0x4f43d3[_0x00c3('0x3a')]=_[_0x00c3('0x3c')](db['CmHopper'][_0x00c3('0x62')]);_0x4f43d3[_0x00c3('0x3b')]=_[_0x00c3('0x3c')](_0x3a2f97['query']);_0x4f43d3[_0x00c3('0x3d')]=_[_0x00c3('0x3e')](_0x4f43d3['model'],_0x4f43d3[_0x00c3('0x3b')]);_0x493d84[_0x00c3('0x3f')]=_[_0x00c3('0x3e')](_0x4f43d3[_0x00c3('0x3a')],qs[_0x00c3('0x4e')](_0x3a2f97['query'][_0x00c3('0x4e')]));_0x493d84[_0x00c3('0x3f')]=_0x493d84[_0x00c3('0x3f')][_0x00c3('0x5a')]?_0x493d84[_0x00c3('0x3f')]:_0x4f43d3[_0x00c3('0x3a')];if(!_0x3a2f97[_0x00c3('0x3b')][_0x00c3('0x40')](_0x00c3('0x63'))){_0x493d84['limit']=qs[_0x00c3('0x1d')](_0x3a2f97[_0x00c3('0x3b')][_0x00c3('0x1d')]);_0x493d84[_0x00c3('0x1c')]=qs['offset'](_0x3a2f97['query'][_0x00c3('0x1c')]);}_0x493d84['order']=qs['sort'](_0x3a2f97[_0x00c3('0x3b')][_0x00c3('0x42')]);_0x493d84['where']=qs[_0x00c3('0x3d')](_[_0x00c3('0x44')](_0x3a2f97[_0x00c3('0x3b')],_0x4f43d3[_0x00c3('0x3d')]));_0x493d84[_0x00c3('0x43')][_0x00c3('0x64')]=_0x3773b3['id'];if(_0x3a2f97['query']['filter']){_0x493d84['where']=_[_0x00c3('0x46')](_0x493d84[_0x00c3('0x43')],{'$or':_[_0x00c3('0x2e')](_0x493d84['attributes'],function(_0x2b5c4e){var _0x40f09c={};_0x40f09c[_0x2b5c4e]={'$like':'%'+_0x3a2f97[_0x00c3('0x3b')][_0x00c3('0x45')]+'%'};return _0x40f09c;})});}_0x493d84=_[_0x00c3('0x46')]({},_0x493d84,_0x3a2f97[_0x00c3('0x4f')]);return db[_0x00c3('0x65')][_0x00c3('0x1f')]({'where':_0x493d84['where']})[_0x00c3('0x26')](function(_0x405451){_0x333ef5[_0x00c3('0x1f')]=_0x405451;if(_0x3a2f97['query'][_0x00c3('0x48')]){_0x493d84[_0x00c3('0x49')]=[{'all':!![]}];}return db[_0x00c3('0x65')][_0x00c3('0x4a')](_0x493d84);})[_0x00c3('0x26')](function(_0x151297){_0x333ef5[_0x00c3('0x4b')]=_0x151297;return _0x333ef5;});}})[_0x00c3('0x26')](respondWithFilteredResult(_0x2ddc53,_0x493d84))['catch'](handleError(_0x2ddc53,null));};exports[_0x00c3('0x66')]=function(_0x1834fe,_0x2aaa00,_0x3781c3){var _0x17f557={'raw':!![],'where':{}};var _0x5d06f2={};var _0x204a41={'count':0x0,'rows':[]};return db[_0x00c3('0x37')][_0x00c3('0x61')]({'where':{'id':_0x1834fe['params']['id']}})[_0x00c3('0x26')](handleEntityNotFound(_0x2aaa00,null))[_0x00c3('0x26')](function(_0xa7b0d0){if(_0xa7b0d0){_0x5d06f2['model']=_[_0x00c3('0x3c')](db[_0x00c3('0x67')][_0x00c3('0x62')]);_0x5d06f2[_0x00c3('0x3b')]=_[_0x00c3('0x3c')](_0x1834fe['query']);_0x5d06f2[_0x00c3('0x3d')]=_[_0x00c3('0x3e')](_0x5d06f2[_0x00c3('0x3a')],_0x5d06f2[_0x00c3('0x3b')]);_0x17f557[_0x00c3('0x3f')]=_[_0x00c3('0x3e')](_0x5d06f2[_0x00c3('0x3a')],qs[_0x00c3('0x4e')](_0x1834fe[_0x00c3('0x3b')][_0x00c3('0x4e')]));_0x17f557[_0x00c3('0x3f')]=_0x17f557[_0x00c3('0x3f')][_0x00c3('0x5a')]?_0x17f557[_0x00c3('0x3f')]:_0x5d06f2[_0x00c3('0x3a')];if(!_0x1834fe[_0x00c3('0x3b')][_0x00c3('0x40')](_0x00c3('0x63'))){_0x17f557[_0x00c3('0x1d')]=qs[_0x00c3('0x1d')](_0x1834fe[_0x00c3('0x3b')][_0x00c3('0x1d')]);_0x17f557[_0x00c3('0x1c')]=qs[_0x00c3('0x1c')](_0x1834fe[_0x00c3('0x3b')][_0x00c3('0x1c')]);}_0x17f557[_0x00c3('0x41')]=qs[_0x00c3('0x42')](_0x1834fe[_0x00c3('0x3b')]['sort']);_0x17f557['where']=qs[_0x00c3('0x3d')](_[_0x00c3('0x44')](_0x1834fe['query'],_0x5d06f2[_0x00c3('0x3d')]));_0x17f557[_0x00c3('0x43')][_0x00c3('0x64')]=_0xa7b0d0['id'];if(_0x1834fe['query'][_0x00c3('0x45')]){_0x17f557[_0x00c3('0x43')]=_[_0x00c3('0x46')](_0x17f557[_0x00c3('0x43')],{'$or':_[_0x00c3('0x2e')](_0x17f557[_0x00c3('0x3f')],function(_0x14be3b){var _0x1188de={};_0x1188de[_0x14be3b]={'$like':'%'+_0x1834fe['query']['filter']+'%'};return _0x1188de;})});}_0x17f557=_['merge']({},_0x17f557,_0x1834fe[_0x00c3('0x4f')]);return db[_0x00c3('0x67')][_0x00c3('0x1f')]({'where':_0x17f557[_0x00c3('0x43')]})[_0x00c3('0x26')](function(_0x429977){_0x204a41[_0x00c3('0x1f')]=_0x429977;if(_0x1834fe[_0x00c3('0x3b')][_0x00c3('0x48')]){_0x17f557[_0x00c3('0x49')]=[{'all':!![]}];}return db[_0x00c3('0x67')][_0x00c3('0x4a')](_0x17f557);})[_0x00c3('0x26')](function(_0x185ec3){_0x204a41[_0x00c3('0x4b')]=_0x185ec3;return _0x204a41;});}})['then'](respondWithFilteredResult(_0x2aaa00,_0x17f557))['catch'](handleError(_0x2aaa00,null));};exports[_0x00c3('0x68')]=function(_0x3afb5e,_0xf1dd6c,_0x326f32){var _0x3ccb02={'raw':!![],'where':{}};var _0x1539e9={};var _0x2cdafc={'count':0x0,'rows':[]};return db[_0x00c3('0x37')][_0x00c3('0x61')]({'where':{'id':_0x3afb5e['params']['id']}})[_0x00c3('0x26')](handleEntityNotFound(_0xf1dd6c,null))['then'](function(_0x16e84d){if(_0x16e84d){_0x1539e9[_0x00c3('0x3a')]=_[_0x00c3('0x3c')](db[_0x00c3('0x69')][_0x00c3('0x62')]);_0x1539e9[_0x00c3('0x3b')]=_['keys'](_0x3afb5e[_0x00c3('0x3b')]);_0x1539e9[_0x00c3('0x3d')]=_[_0x00c3('0x3e')](_0x1539e9[_0x00c3('0x3a')],_0x1539e9['query']);_0x3ccb02[_0x00c3('0x3f')]=_[_0x00c3('0x3e')](_0x1539e9['model'],qs['fields'](_0x3afb5e[_0x00c3('0x3b')]['fields']));_0x3ccb02['attributes']=_0x3ccb02['attributes'][_0x00c3('0x5a')]?_0x3ccb02[_0x00c3('0x3f')]:_0x1539e9[_0x00c3('0x3a')];if(!_0x3afb5e[_0x00c3('0x3b')][_0x00c3('0x40')](_0x00c3('0x63'))){_0x3ccb02[_0x00c3('0x1d')]=qs[_0x00c3('0x1d')](_0x3afb5e[_0x00c3('0x3b')][_0x00c3('0x1d')]);_0x3ccb02[_0x00c3('0x1c')]=qs[_0x00c3('0x1c')](_0x3afb5e['query']['offset']);}_0x3ccb02[_0x00c3('0x41')]=qs['sort'](_0x3afb5e[_0x00c3('0x3b')][_0x00c3('0x42')]);_0x3ccb02[_0x00c3('0x43')]=qs[_0x00c3('0x3d')](_['pick'](_0x3afb5e[_0x00c3('0x3b')],_0x1539e9['filters']));_0x3ccb02[_0x00c3('0x43')][_0x00c3('0x64')]=_0x16e84d['id'];if(_0x3afb5e['query'][_0x00c3('0x45')]){_0x3ccb02[_0x00c3('0x43')]=_[_0x00c3('0x46')](_0x3ccb02[_0x00c3('0x43')],{'$or':_[_0x00c3('0x2e')](_0x3ccb02[_0x00c3('0x3f')],function(_0x29da00){var _0x540e3c={};_0x540e3c[_0x29da00]={'$like':'%'+_0x3afb5e['query']['filter']+'%'};return _0x540e3c;})});}_0x3ccb02=_['merge']({},_0x3ccb02,_0x3afb5e[_0x00c3('0x4f')]);return db['CmHopperFinal']['count']({'where':_0x3ccb02[_0x00c3('0x43')]})['then'](function(_0x1f498b){_0x2cdafc[_0x00c3('0x1f')]=_0x1f498b;if(_0x3afb5e['query']['includeAll']){_0x3ccb02[_0x00c3('0x49')]=[{'all':!![]}];}return db[_0x00c3('0x69')][_0x00c3('0x4a')](_0x3ccb02);})[_0x00c3('0x26')](function(_0x2011dd){_0x2cdafc['rows']=_0x2011dd;return _0x2cdafc;});}})[_0x00c3('0x26')](respondWithFilteredResult(_0xf1dd6c,_0x3ccb02))[_0x00c3('0x50')](handleError(_0xf1dd6c,null));};exports[_0x00c3('0x6a')]=function(_0x4cfec3,_0x109a48,_0x463303){var _0x157579={'raw':!![],'where':{}};var _0x3664b7={};var _0x46cb43={'count':0x0,'rows':[]};return db[_0x00c3('0x37')][_0x00c3('0x61')]({'where':{'id':_0x4cfec3['params']['id']}})[_0x00c3('0x26')](handleEntityNotFound(_0x109a48,null))['then'](function(_0x4782cc){if(_0x4782cc){_0x3664b7['model']=_['keys'](db[_0x00c3('0x6b')][_0x00c3('0x62')]);_0x3664b7[_0x00c3('0x3b')]=_[_0x00c3('0x3c')](_0x4cfec3[_0x00c3('0x3b')]);_0x3664b7['filters']=_[_0x00c3('0x3e')](_0x3664b7[_0x00c3('0x3a')],_0x3664b7[_0x00c3('0x3b')]);_0x157579['attributes']=_['intersection'](_0x3664b7[_0x00c3('0x3a')],qs[_0x00c3('0x4e')](_0x4cfec3[_0x00c3('0x3b')][_0x00c3('0x4e')]));_0x157579[_0x00c3('0x3f')]=_0x157579['attributes'][_0x00c3('0x5a')]?_0x157579[_0x00c3('0x3f')]:_0x3664b7[_0x00c3('0x3a')];if(!_0x4cfec3['query'][_0x00c3('0x40')]('nolimit')){_0x157579[_0x00c3('0x1d')]=qs['limit'](_0x4cfec3['query']['limit']);_0x157579[_0x00c3('0x1c')]=qs[_0x00c3('0x1c')](_0x4cfec3[_0x00c3('0x3b')][_0x00c3('0x1c')]);}_0x157579[_0x00c3('0x41')]=qs[_0x00c3('0x42')](_0x4cfec3[_0x00c3('0x3b')][_0x00c3('0x42')]);_0x157579[_0x00c3('0x43')]=qs['filters'](_[_0x00c3('0x44')](_0x4cfec3[_0x00c3('0x3b')],_0x3664b7['filters']));_0x157579['where'][_0x00c3('0x64')]=_0x4782cc['id'];if(_0x4cfec3[_0x00c3('0x3b')][_0x00c3('0x45')]){_0x157579['where']=_[_0x00c3('0x46')](_0x157579['where'],{'$or':_[_0x00c3('0x2e')](_0x157579[_0x00c3('0x3f')],function(_0x24b82b){var _0x243b2b={};_0x243b2b[_0x24b82b]={'$like':'%'+_0x4cfec3[_0x00c3('0x3b')]['filter']+'%'};return _0x243b2b;})});}_0x157579=_['merge']({},_0x157579,_0x4cfec3['options']);return db[_0x00c3('0x6b')][_0x00c3('0x1f')]({'where':_0x157579[_0x00c3('0x43')]})[_0x00c3('0x26')](function(_0x613eee){_0x46cb43['count']=_0x613eee;if(_0x4cfec3[_0x00c3('0x3b')][_0x00c3('0x48')]){_0x157579[_0x00c3('0x49')]=[{'all':!![]}];}return db[_0x00c3('0x6b')][_0x00c3('0x4a')](_0x157579);})['then'](function(_0x1540d0){_0x46cb43[_0x00c3('0x4b')]=_0x1540d0;return _0x46cb43;});}})[_0x00c3('0x26')](respondWithFilteredResult(_0x109a48,_0x157579))[_0x00c3('0x50')](handleError(_0x109a48,null));};exports['getTeams']=function(_0x1d1449,_0x21e09a,_0x17c7f3){var _0x3addab={};var _0x422fca={};var _0x33a747;var _0x413041;return db['VoiceQueue'][_0x00c3('0x61')]({'where':{'id':_0x1d1449[_0x00c3('0x4d')]['id']}})[_0x00c3('0x26')](handleEntityNotFound(_0x21e09a,null))['then'](function(_0x1c05a9){if(_0x1c05a9){_0x33a747=_0x1c05a9;_0x422fca[_0x00c3('0x3a')]=_[_0x00c3('0x3c')](db[_0x00c3('0x6c')]['rawAttributes']);_0x422fca[_0x00c3('0x3b')]=_[_0x00c3('0x3c')](_0x1d1449['query']);_0x422fca[_0x00c3('0x3d')]=_[_0x00c3('0x3e')](_0x422fca[_0x00c3('0x3a')],_0x422fca['query']);_0x3addab['attributes']=_['intersection'](_0x422fca[_0x00c3('0x3a')],qs[_0x00c3('0x4e')](_0x1d1449[_0x00c3('0x3b')]['fields']));_0x3addab['attributes']=_0x3addab['attributes']['length']?_0x3addab['attributes']:_0x422fca[_0x00c3('0x3a')];_0x3addab[_0x00c3('0x41')]=qs['sort'](_0x1d1449['query']['sort']);_0x3addab[_0x00c3('0x43')]=qs[_0x00c3('0x3d')](_[_0x00c3('0x44')](_0x1d1449[_0x00c3('0x3b')],_0x422fca[_0x00c3('0x3d')]));if(_0x1d1449[_0x00c3('0x3b')]['filter']){_0x3addab['where']=_['merge'](_0x3addab[_0x00c3('0x43')],{'$or':_['map'](_0x3addab[_0x00c3('0x3f')],function(_0x15803f){var _0xa87de0={};_0xa87de0[_0x15803f]={'$like':'%'+_0x1d1449[_0x00c3('0x3b')]['filter']+'%'};return _0xa87de0;})});}_0x3addab=_[_0x00c3('0x46')]({},_0x3addab,_0x1d1449['options']);return _0x33a747[_0x00c3('0x6d')](_0x3addab);}})[_0x00c3('0x26')](function(_0x7aea0a){if(_0x7aea0a){_0x413041=_0x7aea0a['length'];if(!_0x1d1449[_0x00c3('0x3b')][_0x00c3('0x40')](_0x00c3('0x63'))){_0x3addab[_0x00c3('0x1d')]=qs[_0x00c3('0x1d')](_0x1d1449[_0x00c3('0x3b')]['limit']);_0x3addab[_0x00c3('0x1c')]=qs[_0x00c3('0x1c')](_0x1d1449['query'][_0x00c3('0x1c')]);}return _0x33a747[_0x00c3('0x6d')](_0x3addab);}})['then'](function(_0x4c974f){if(_0x4c974f){return _0x4c974f?{'count':_0x413041,'rows':_0x4c974f}:null;}})['then'](respondWithResult(_0x21e09a,null))[_0x00c3('0x50')](handleError(_0x21e09a,null));};exports[_0x00c3('0x6e')]=function(_0x59a432,_0x1852fe,_0x38ade2){var _0x483c42=_0x59a432['body']['teams'];var _0x3631a2=_[_0x00c3('0x2e')](_0x483c42,'id');return db[_0x00c3('0x6c')][_0x00c3('0x4a')]({'where':{'id':_0x3631a2},'attributes':['id'],'include':[{'model':db[_0x00c3('0x6f')],'as':_0x00c3('0x70'),'attributes':['id',_0x00c3('0x33'),_0x00c3('0x71'),_0x00c3('0x72'),_0x00c3('0x73')],'raw':!![]}]})[_0x00c3('0x26')](function(_0x30aecd){if(_0x30aecd){var _0x17a005=_[_0x00c3('0x74')](_0x30aecd,function(_0x588461){var _0x532078=_0x588461['get']({'plain':!![]});_0x532078[_0x00c3('0x70')][_0x00c3('0x75')](function(_0x282576){_0x282576[_0x00c3('0x76')]=_[_0x00c3('0x32')](_0x483c42,{'id':_0x532078['id']})[_0x00c3('0x76')];});return _0x532078[_0x00c3('0x70')];});return db[_0x00c3('0x37')][_0x00c3('0x32')]({'where':{'id':_0x59a432['params']['id']}})[_0x00c3('0x26')](function(_0x459f34){return db[_0x00c3('0x77')][_0x00c3('0x78')](function(_0x7bd6ca){return _0x459f34['addTeams'](_0x3631a2,{'transaction':_0x7bd6ca})[_0x00c3('0x26')](function(){return BPromise['each'](_0x483c42,function(_0x264ddb){return db[_0x00c3('0x79')][_0x00c3('0x7a')]({'TeamId':_0x264ddb['id'],'VoiceQueueId':_0x59a432['params']['id'],'penalty':_0x264ddb['penalty']},{'transaction':_0x7bd6ca});});})[_0x00c3('0x26')](function(){return BPromise[_0x00c3('0x7b')](_0x17a005,function(_0x3143e8){return db[_0x00c3('0x7c')][_0x00c3('0x7d')]({'where':{'UserId':_0x3143e8['id'],'VoiceQueueId':_0x59a432[_0x00c3('0x4d')]['id']},'defaults':{'penalty':_0x3143e8['penalty']},'transaction':_0x7bd6ca});});})[_0x00c3('0x26')](function(){return BPromise[_0x00c3('0x7b')](_[_0x00c3('0x45')](_0x17a005,{'online':!![]}),function(_0x506e75){return db[_0x00c3('0x7e')]['upsert']({'membername':_0x506e75[_0x00c3('0x33')],'UserId':_0x506e75['id'],'queue_name':_0x459f34[_0x00c3('0x33')],'VoiceQueueId':_0x459f34['id'],'interface':_[_0x00c3('0x7f')](_0x506e75['interface'])?util[_0x00c3('0x80')](_0x00c3('0x81'),_0x506e75[_0x00c3('0x33')]):_0x506e75[_0x00c3('0x73')],'paused':_0x506e75[_0x00c3('0x72')]||![],'penalty':_0x506e75[_0x00c3('0x76')]},{'transaction':_0x7bd6ca});});})[_0x00c3('0x26')](function(){_0x17a005[_0x00c3('0x75')](function(_0xb69204){socket['emit'](_0x00c3('0x82'),{'UserId':_0xb69204['id'],'VoiceQueueId':_0x459f34['id']});});});});});}})[_0x00c3('0x26')](respondWithStatusCode(_0x1852fe,null))[_0x00c3('0x50')](handleError(_0x1852fe,null));};exports[_0x00c3('0x83')]=function(_0x4bf065,_0x4f6221,_0x395ab0){return db[_0x00c3('0x6c')][_0x00c3('0x4a')]({'where':{'id':_0x4bf065[_0x00c3('0x3b')][_0x00c3('0x84')]},'attributes':['id'],'include':[{'model':db[_0x00c3('0x6f')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x00c3('0x26')](handleEntityNotFound(_0x4f6221,null))[_0x00c3('0x26')](function(_0x33f0ea){var _0x4ffd7d=_[_0x00c3('0x2e')](_0x33f0ea,'id');var _0x442e61=[];var _0x4c10e0=[];var _0x5f5617=squel[_0x00c3('0x85')]();_0x5f5617[_0x00c3('0x86')]('tq.TeamId')[_0x00c3('0x87')](_0x00c3('0x88'),'tq')['join'](_0x00c3('0x89'),'ut',_0x00c3('0x8a'))[_0x00c3('0x43')](_0x00c3('0x8b'),_0x4bf065[_0x00c3('0x4d')]['id']);for(var _0x1befa2=0x0;_0x1befa2<_0x33f0ea['length'];_0x1befa2+=0x1){let _0x4de719=_0x33f0ea[_0x1befa2];for(var _0x290ebf=0x0;_0x290ebf<_0x4de719[_0x00c3('0x70')][_0x00c3('0x5a')];_0x290ebf+=0x1){let _0x2a1b91=_0x4de719[_0x00c3('0x70')][_0x290ebf];var _0x30ac03=_0x5f5617['clone']();_0x30ac03[_0x00c3('0x43')](_0x00c3('0x8c'),_0x2a1b91['id']);_0x4c10e0[_0x00c3('0x8d')](db[_0x00c3('0x77')][_0x00c3('0x3b')](_0x30ac03[_0x00c3('0x8e')](),{'type':db[_0x00c3('0x77')][_0x00c3('0x8f')][_0x00c3('0x90')]})['then'](function(_0x3ab20d){if(_0x3ab20d['length']===0x1){return _0x2a1b91['id'];}else{var _0x1e648f=_[_0x00c3('0x91')](_['map'](_0x3ab20d,_0x00c3('0x92')),function(_0x3eab3e){return _[_0x00c3('0x30')](_0x4ffd7d,_0x3eab3e);});if(_0x1e648f){return _0x2a1b91['id'];}}}));}}return BPromise[_0x00c3('0x93')](_0x4c10e0)['then'](function(_0x4280df){_0x442e61=_(_0x442e61)['union'](_0x4280df)['compact']()[_0x00c3('0x2f')]();return db[_0x00c3('0x37')][_0x00c3('0x32')]({'where':{'id':_0x4bf065['params']['id']}})[_0x00c3('0x26')](function(_0x33d7cc){return db[_0x00c3('0x77')][_0x00c3('0x78')](function(_0x5f26b9){return _0x33d7cc[_0x00c3('0x83')](_0x4bf065[_0x00c3('0x3b')][_0x00c3('0x84')],{'transaction':_0x5f26b9})[_0x00c3('0x26')](function(){if(!_[_0x00c3('0x94')](_0x442e61)){return _0x33d7cc[_0x00c3('0x95')](_0x442e61,{'transaction':_0x5f26b9})[_0x00c3('0x26')](function(){return db[_0x00c3('0x7e')]['destroy']({'where':{'VoiceQueueId':_0x4bf065[_0x00c3('0x4d')]['id'],'UserId':_0x442e61},'transaction':_0x5f26b9});});}})[_0x00c3('0x26')](function(){_0x442e61[_0x00c3('0x75')](function(_0x89ae0f){socket[_0x00c3('0x96')](_0x00c3('0x97'),{'UserId':_0x89ae0f,'VoiceQueueId':_0x33d7cc['id']});});});});});});})[_0x00c3('0x26')](respondWithStatusCode(_0x4f6221,null))[_0x00c3('0x50')](handleError(_0x4f6221,null));};exports['addAgents']=function(_0x21200f,_0x57f016,_0x448384){var _0x40630f,_0x2a268e;return db[_0x00c3('0x37')]['find']({'where':{'id':_0x21200f[_0x00c3('0x4d')]['id']}})[_0x00c3('0x26')](handleEntityNotFound(_0x57f016,null))[_0x00c3('0x26')](function(_0x3835c7){if(_0x3835c7){_0x2a268e=_0x3835c7;return _0x3835c7[_0x00c3('0x98')](_0x21200f[_0x00c3('0x52')]['ids'],_[_0x00c3('0x5b')](_0x21200f[_0x00c3('0x52')],[_0x00c3('0x84'),'id'])||{})[_0x00c3('0x99')](function(_0x522281){for(var _0x52a3ab=0x0;_0x52a3ab<_0x21200f[_0x00c3('0x52')][_0x00c3('0x84')]['length'];_0x52a3ab+=0x1){socket['emit'](_0x00c3('0x82'),{'UserId':Number(_0x21200f['body'][_0x00c3('0x84')][_0x52a3ab]),'VoiceQueueId':Number(_0x21200f[_0x00c3('0x4d')]['id'])});}return _0x522281;});}})[_0x00c3('0x26')](function(_0x19212c){_0x40630f=_0x19212c||[];if(_0x2a268e){return db['User'][_0x00c3('0x4a')]({'where':{'id':_0x21200f['body'][_0x00c3('0x84')]},'attributes':['id',_0x00c3('0x33'),_0x00c3('0x71'),_0x00c3('0x72'),_0x00c3('0x73')],'raw':!![]});}})[_0x00c3('0x26')](function(_0x5cbc3e){if(!_['isEmpty'](_0x5cbc3e)){var _0x2c894c=[];for(var _0x3a937e=0x0;_0x3a937e<_0x5cbc3e['length'];_0x3a937e++){if(_0x5cbc3e[_0x3a937e][_0x00c3('0x71')]){_0x2c894c[_0x00c3('0x8d')](db[_0x00c3('0x7e')]['upsert']({'membername':_0x5cbc3e[_0x3a937e][_0x00c3('0x33')],'UserId':_0x5cbc3e[_0x3a937e]['id'],'queue_name':_0x2a268e[_0x00c3('0x33')],'VoiceQueueId':_0x2a268e['id'],'interface':_[_0x00c3('0x7f')](_0x5cbc3e[_0x3a937e][_0x00c3('0x73')])?util[_0x00c3('0x80')](_0x00c3('0x81'),_0x5cbc3e[_0x3a937e][_0x00c3('0x33')]):_0x5cbc3e[_0x3a937e][_0x00c3('0x73')],'paused':_0x5cbc3e[_0x3a937e][_0x00c3('0x72')]||![],'penalty':_0x21200f['body'][_0x00c3('0x76')]||0x0}));}}return BPromise[_0x00c3('0x93')](_0x2c894c);}})[_0x00c3('0x26')](function(){return _0x40630f;})[_0x00c3('0x26')](respondWithResult(_0x57f016,null))[_0x00c3('0x50')](handleError(_0x57f016,null));};exports[_0x00c3('0x95')]=function(_0xed73dd,_0x18681a,_0x3bf941){return db[_0x00c3('0x37')][_0x00c3('0x32')]({'where':{'id':_0xed73dd[_0x00c3('0x4d')]['id']}})[_0x00c3('0x26')](handleEntityNotFound(_0x18681a,null))[_0x00c3('0x26')](function(_0x55d36c){if(_0x55d36c){return _0x55d36c[_0x00c3('0x95')](_0xed73dd[_0x00c3('0x3b')]['ids'])[_0x00c3('0x26')](function(){if(_[_0x00c3('0x9a')](_0xed73dd['query']['ids'])){for(var _0x13e485=0x0;_0x13e485<_0xed73dd['query'][_0x00c3('0x84')][_0x00c3('0x5a')];_0x13e485+=0x1){socket[_0x00c3('0x96')](_0x00c3('0x97'),{'UserId':Number(_0xed73dd['query'][_0x00c3('0x84')][_0x13e485]),'VoiceQueueId':Number(_0xed73dd[_0x00c3('0x4d')]['id'])});}}else{socket[_0x00c3('0x96')]('userVoiceQueue:remove',{'UserId':Number(_0xed73dd[_0x00c3('0x3b')][_0x00c3('0x84')]),'VoiceQueueId':Number(_0xed73dd['params']['id'])});}});}})[_0x00c3('0x26')](function(_0xe6312){return db['UserVoiceQueueRt'][_0x00c3('0x27')]({'where':{'VoiceQueueId':_0xed73dd[_0x00c3('0x4d')]['id'],'UserId':_0xed73dd[_0x00c3('0x3b')][_0x00c3('0x84')]}})[_0x00c3('0x26')](function(){return _0xe6312;});})[_0x00c3('0x26')](respondWithStatusCode(_0x18681a,null))['catch'](handleError(_0x18681a,null));};exports[_0x00c3('0x9b')]=function(_0x39e61d,_0x2da544,_0x2ca887){var _0x5a0a1e={};var _0x3208c0={};var _0x3575c4;var _0x36ad5c;return db['VoiceQueue']['findOne']({'where':{'id':_0x39e61d[_0x00c3('0x4d')]['id']}})['then'](handleEntityNotFound(_0x2da544,null))[_0x00c3('0x26')](function(_0x5794b3){if(_0x5794b3){_0x3575c4=_0x5794b3;_0x3208c0[_0x00c3('0x3a')]=_[_0x00c3('0x3c')](db[_0x00c3('0x6f')][_0x00c3('0x62')]);_0x3208c0[_0x00c3('0x3b')]=_['keys'](_0x39e61d['query']);_0x3208c0[_0x00c3('0x3d')]=_[_0x00c3('0x3e')](_0x3208c0[_0x00c3('0x3a')],_0x3208c0['query']);_0x5a0a1e[_0x00c3('0x3f')]=_[_0x00c3('0x3e')](_0x3208c0[_0x00c3('0x3a')],qs[_0x00c3('0x4e')](_0x39e61d[_0x00c3('0x3b')][_0x00c3('0x4e')]));_0x5a0a1e[_0x00c3('0x3f')]=_0x5a0a1e[_0x00c3('0x3f')]['length']?_0x5a0a1e['attributes']:_0x3208c0['model'];_0x5a0a1e[_0x00c3('0x41')]=qs[_0x00c3('0x42')](_0x39e61d['query']['sort']);_0x5a0a1e[_0x00c3('0x43')]=qs[_0x00c3('0x3d')](_[_0x00c3('0x44')](_0x39e61d['query'],_0x3208c0['filters']));if(_0x39e61d['query'][_0x00c3('0x45')]){_0x5a0a1e[_0x00c3('0x43')]=_[_0x00c3('0x46')](_0x5a0a1e[_0x00c3('0x43')],{'$or':_[_0x00c3('0x2e')](_0x5a0a1e['attributes'],function(_0x239eab){var _0x578636={};_0x578636[_0x239eab]={'$like':'%'+_0x39e61d['query']['filter']+'%'};return _0x578636;})});}_0x5a0a1e=_[_0x00c3('0x46')]({},_0x5a0a1e,_0x39e61d[_0x00c3('0x4f')]);return _0x3575c4[_0x00c3('0x9b')](_0x5a0a1e);}})['then'](function(_0x5bfae0){if(_0x5bfae0){_0x36ad5c=_0x5bfae0[_0x00c3('0x5a')];if(!_0x39e61d[_0x00c3('0x3b')][_0x00c3('0x40')](_0x00c3('0x63'))){_0x5a0a1e[_0x00c3('0x1d')]=qs[_0x00c3('0x1d')](_0x39e61d[_0x00c3('0x3b')][_0x00c3('0x1d')]);_0x5a0a1e[_0x00c3('0x1c')]=qs[_0x00c3('0x1c')](_0x39e61d[_0x00c3('0x3b')][_0x00c3('0x1c')]);}return _0x3575c4['getAgents'](_0x5a0a1e);}})['then'](function(_0x2974da){if(_0x2974da){return _0x2974da?{'count':_0x36ad5c,'rows':_0x2974da}:null;}})[_0x00c3('0x26')](respondWithResult(_0x2da544,null))['catch'](handleError(_0x2da544,null));};exports['getMembers']=function(_0xf4da28,_0x1258e5,_0x38040e){var _0x41a050={};var _0x51641f={};var _0x8c0bd2;var _0x904a70;return db[_0x00c3('0x37')][_0x00c3('0x61')]({'where':{'id':_0xf4da28[_0x00c3('0x4d')]['id']}})['then'](handleEntityNotFound(_0x1258e5,null))['then'](function(_0x57cc66){if(_0x57cc66){_0x8c0bd2=_0x57cc66;_0x51641f['model']=_[_0x00c3('0x3c')](db[_0x00c3('0x7e')][_0x00c3('0x62')]);_0x51641f[_0x00c3('0x3b')]=_[_0x00c3('0x3c')](_0xf4da28['query']);_0x51641f[_0x00c3('0x3d')]=_[_0x00c3('0x3e')](_0x51641f[_0x00c3('0x3a')],_0x51641f['query']);_0x41a050[_0x00c3('0x3f')]=_[_0x00c3('0x3e')](_0x51641f[_0x00c3('0x3a')],qs['fields'](_0xf4da28['query'][_0x00c3('0x4e')]));_0x41a050[_0x00c3('0x3f')]=_0x41a050[_0x00c3('0x3f')][_0x00c3('0x5a')]?_0x41a050[_0x00c3('0x3f')]:_0x51641f['model'];_0x41a050['order']=qs[_0x00c3('0x42')](_0xf4da28[_0x00c3('0x3b')][_0x00c3('0x42')]);_0x41a050[_0x00c3('0x43')]=qs[_0x00c3('0x3d')](_[_0x00c3('0x44')](_0xf4da28[_0x00c3('0x3b')],_0x51641f[_0x00c3('0x3d')]));if(_0xf4da28['query']['filter']){_0x41a050[_0x00c3('0x43')]=_[_0x00c3('0x46')](_0x41a050[_0x00c3('0x43')],{'$or':_[_0x00c3('0x2e')](_0x41a050['attributes'],function(_0x27e579){var _0x559dce={};_0x559dce[_0x27e579]={'$like':'%'+_0xf4da28[_0x00c3('0x3b')][_0x00c3('0x45')]+'%'};return _0x559dce;})});}_0x41a050=_[_0x00c3('0x46')]({},_0x41a050,_0xf4da28[_0x00c3('0x4f')]);return _0x8c0bd2[_0x00c3('0x9c')](_0x41a050);}})['then'](function(_0xb41dad){if(_0xb41dad){_0x904a70=_0xb41dad[_0x00c3('0x5a')];if(!_0xf4da28[_0x00c3('0x3b')][_0x00c3('0x40')](_0x00c3('0x63'))){_0x41a050[_0x00c3('0x1d')]=qs['limit'](_0xf4da28[_0x00c3('0x3b')][_0x00c3('0x1d')]);_0x41a050[_0x00c3('0x1c')]=qs['offset'](_0xf4da28[_0x00c3('0x3b')][_0x00c3('0x1c')]);}return _0x8c0bd2[_0x00c3('0x9c')](_0x41a050);}})[_0x00c3('0x26')](function(_0x2bc456){return _0x2bc456?{'count':_0x904a70,'rows':_0x2bc456}:null;})[_0x00c3('0x26')](respondWithResult(_0x1258e5,null))['catch'](handleError(_0x1258e5,null));};exports[_0x00c3('0x9d')]=function(_0x49129d,_0x390740,_0x2aadd1){var _0x555e7d={};var _0x47b409={};var _0x926434;var _0x166094;return db['VoiceQueue']['findOne']({'where':{'id':_0x49129d[_0x00c3('0x4d')]['id']}})[_0x00c3('0x26')](handleEntityNotFound(_0x390740,null))['then'](function(_0x4f835e){if(_0x4f835e){_0x926434=_0x4f835e;_0x47b409[_0x00c3('0x3a')]=_[_0x00c3('0x3c')](db[_0x00c3('0x9e')][_0x00c3('0x62')]);_0x47b409[_0x00c3('0x3b')]=_[_0x00c3('0x3c')](_0x49129d[_0x00c3('0x3b')]);_0x47b409[_0x00c3('0x3d')]=_[_0x00c3('0x3e')](_0x47b409[_0x00c3('0x3a')],_0x47b409[_0x00c3('0x3b')]);_0x555e7d[_0x00c3('0x3f')]=_[_0x00c3('0x3e')](_0x47b409[_0x00c3('0x3a')],qs[_0x00c3('0x4e')](_0x49129d[_0x00c3('0x3b')][_0x00c3('0x4e')]));_0x555e7d[_0x00c3('0x3f')]=_0x555e7d['attributes'][_0x00c3('0x5a')]?_0x555e7d[_0x00c3('0x3f')]:_0x47b409[_0x00c3('0x3a')];_0x555e7d[_0x00c3('0x41')]=qs[_0x00c3('0x42')](_0x49129d[_0x00c3('0x3b')][_0x00c3('0x42')]);_0x555e7d[_0x00c3('0x43')]=qs[_0x00c3('0x3d')](_['pick'](_0x49129d[_0x00c3('0x3b')],_0x47b409[_0x00c3('0x3d')]));if(_0x49129d['query'][_0x00c3('0x45')]){_0x555e7d[_0x00c3('0x43')]=_[_0x00c3('0x46')](_0x555e7d[_0x00c3('0x43')],{'$or':_[_0x00c3('0x2e')](_0x555e7d[_0x00c3('0x3f')],function(_0x208700){var _0x572b84={};_0x572b84[_0x208700]={'$like':'%'+_0x49129d['query'][_0x00c3('0x45')]+'%'};return _0x572b84;})});}_0x555e7d=_[_0x00c3('0x46')]({},_0x555e7d,_0x49129d['options']);return _0x926434[_0x00c3('0x9d')](_0x555e7d);}})[_0x00c3('0x26')](function(_0x425483){if(_0x425483){_0x166094=_0x425483['length'];if(!_0x49129d[_0x00c3('0x3b')][_0x00c3('0x40')](_0x00c3('0x63'))){_0x555e7d[_0x00c3('0x1d')]=qs[_0x00c3('0x1d')](_0x49129d[_0x00c3('0x3b')][_0x00c3('0x1d')]);_0x555e7d[_0x00c3('0x1c')]=qs[_0x00c3('0x1c')](_0x49129d[_0x00c3('0x3b')][_0x00c3('0x1c')]);}return _0x926434[_0x00c3('0x9d')](_0x555e7d);}})['then'](function(_0x2635ba){if(_0x2635ba){return _0x2635ba?{'count':_0x166094,'rows':_0x2635ba}:null;}})['then'](respondWithResult(_0x390740,null))['catch'](handleError(_0x390740,null));};exports[_0x00c3('0x9f')]=function(_0x58b4a4,_0x410abd,_0x35381f){var _0x1828fe,_0x1b82ee;return db[_0x00c3('0x37')][_0x00c3('0x32')]({'where':{'id':_0x58b4a4[_0x00c3('0x4d')]['id']}})[_0x00c3('0x26')](handleEntityNotFound(_0x410abd,null))[_0x00c3('0x26')](function(_0x89f970){if(_0x89f970){_0x1b82ee=_0x89f970;return _0x89f970[_0x00c3('0x9f')](_0x58b4a4[_0x00c3('0x52')][_0x00c3('0x84')],_[_0x00c3('0x5b')](_0x58b4a4[_0x00c3('0x52')],[_0x00c3('0x84'),'id'])||{});}return null;})[_0x00c3('0x99')](function(_0x41210c){var _0x174dec;_0x1828fe=_0x41210c||[];var _0x224189=[];if(_0x41210c){for(var _0x1cfa9f=0x0;_0x1cfa9f<_0x41210c[_0x00c3('0x5a')];_0x1cfa9f+=0x1){var _0x228ee5=_0x41210c[_0x1cfa9f][_0x00c3('0x28')]({'plain':!![]});_0x1b82ee[_0x00c3('0xa0')]=_0x58b4a4['body'][_0x00c3('0xa0')]?_0x58b4a4['body'][_0x00c3('0xa0')]:_0x1b82ee[_0x00c3('0xa0')];switch(_0x1b82ee['dialCheckDuplicateType']){case _0x00c3('0xa1'):_0x174dec=squel[_0x00c3('0xa2')]()[_0x00c3('0xa3')](_0x00c3('0xa4'))[_0x00c3('0xa5')]([_0x00c3('0xa6'),_0x00c3('0xa7'),_0x00c3('0xa8'),'ListId',_0x00c3('0x64'),'createdAt',_0x00c3('0x5d')],squel[_0x00c3('0x85')]()[_0x00c3('0x86')]('phone',_0x00c3('0xa6'))[_0x00c3('0x86')](_0x00c3('0xa9'),_0x00c3('0xa7'))[_0x00c3('0x86')]('id',_0x00c3('0xa8'))['field'](_0x228ee5[_0x00c3('0xaa')]['toString'](),_0x00c3('0xab'))[_0x00c3('0x86')](_0x58b4a4[_0x00c3('0x4d')]['id']['toString'](),_0x00c3('0x64'))[_0x00c3('0x86')](_0x00c3('0xa9'),_0x00c3('0x5c'))[_0x00c3('0x86')](_0x00c3('0xa9'),_0x00c3('0x5d'))[_0x00c3('0x87')](_0x00c3('0xac'))['where'](_0x00c3('0xad'))[_0x00c3('0x43')](_0x00c3('0xae'),_0x228ee5['CmListId']['toString']())['where'](_0x00c3('0xaf'))[_0x00c3('0x43')](_0x00c3('0xb0'),squel[_0x00c3('0x85')]()[_0x00c3('0x86')](_0x00c3('0xb1'))[_0x00c3('0x87')]('cm_hopper_final')['where'](_0x00c3('0x8b'),_0x58b4a4[_0x00c3('0x4d')]['id'][_0x00c3('0x8e')]()))[_0x00c3('0x43')]('phone\x20NOT\x20IN\x20(?)',squel[_0x00c3('0x85')]()['field'](_0x00c3('0xb2'))[_0x00c3('0x87')](_0x00c3('0xa4'))[_0x00c3('0x43')](_0x00c3('0x8b'),_0x58b4a4['params']['id'][_0x00c3('0x8e')]())))[_0x00c3('0x8e')]();break;case _0x00c3('0xb3'):_0x174dec=squel[_0x00c3('0xa2')]()[_0x00c3('0xa3')](_0x00c3('0xa4'))[_0x00c3('0xa5')]([_0x00c3('0xa6'),_0x00c3('0xa7'),_0x00c3('0xa8'),_0x00c3('0xab'),'VoiceQueueId',_0x00c3('0x5c'),_0x00c3('0x5d')],squel[_0x00c3('0x85')]()['field']('phone','phone')[_0x00c3('0x86')](_0x00c3('0xa9'),_0x00c3('0xa7'))[_0x00c3('0x86')]('id',_0x00c3('0xa8'))[_0x00c3('0x86')](_0x228ee5['CmListId'][_0x00c3('0x8e')](),_0x00c3('0xab'))[_0x00c3('0x86')](_0x58b4a4[_0x00c3('0x4d')]['id'][_0x00c3('0x8e')](),_0x00c3('0x64'))[_0x00c3('0x86')](_0x00c3('0xa9'),'createdAt')['field'](_0x00c3('0xa9'),_0x00c3('0x5d'))['from'](_0x00c3('0xac'))[_0x00c3('0x43')](_0x00c3('0xad'))[_0x00c3('0x43')](_0x00c3('0xae'),_0x228ee5[_0x00c3('0xaa')][_0x00c3('0x8e')]())['where'](_0x00c3('0xaf'))[_0x00c3('0x43')](_0x00c3('0xb0'),squel['select']()[_0x00c3('0x86')](_0x00c3('0xb2'))[_0x00c3('0x87')](_0x00c3('0xa4'))[_0x00c3('0x43')]('VoiceQueueId\x20=\x20?',_0x58b4a4['params']['id']['toString']())))[_0x00c3('0x8e')]();break;default:_0x174dec=squel[_0x00c3('0xa2')]()['into']('cm_hopper')[_0x00c3('0xa5')]([_0x00c3('0xa6'),'scheduledAt','ContactId',_0x00c3('0xab'),_0x00c3('0x64'),_0x00c3('0x5c'),'updatedAt'],squel[_0x00c3('0x85')]()[_0x00c3('0x86')]('phone',_0x00c3('0xa6'))['field'](_0x00c3('0xa9'),_0x00c3('0xa7'))[_0x00c3('0x86')]('id','ContactId')['field'](_0x228ee5['CmListId'][_0x00c3('0x8e')](),_0x00c3('0xab'))[_0x00c3('0x86')](_0x58b4a4[_0x00c3('0x4d')]['id']['toString'](),'VoiceQueueId')[_0x00c3('0x86')](_0x00c3('0xa9'),_0x00c3('0x5c'))[_0x00c3('0x86')](_0x00c3('0xa9'),_0x00c3('0x5d'))[_0x00c3('0x87')](_0x00c3('0xac'))['where'](_0x00c3('0xad'))['where']('ListId\x20=\x20?',_0x228ee5[_0x00c3('0xaa')][_0x00c3('0x8e')]())['where']('phone\x20IS\x20NOT\x20NULL'))['toString']();}_0x224189[_0x00c3('0x8d')](db[_0x00c3('0x77')][_0x00c3('0x3b')](_0x174dec));}return BPromise['all'](_0x224189);}})[_0x00c3('0x26')](function(){return _0x1828fe;})[_0x00c3('0x26')](respondWithResult(_0x410abd,null))[_0x00c3('0x50')](handleError(_0x410abd,null));};exports[_0x00c3('0xb4')]=function(_0x49143c,_0x3a4f5c,_0x2f0f78){return db[_0x00c3('0x37')][_0x00c3('0x32')]({'where':{'id':_0x49143c[_0x00c3('0x4d')]['id']}})[_0x00c3('0x26')](handleEntityNotFound(_0x3a4f5c,null))[_0x00c3('0x26')](function(_0x4b4925){if(_0x4b4925){return _0x4b4925[_0x00c3('0xb4')](_0x49143c[_0x00c3('0x3b')][_0x00c3('0x84')]);}})[_0x00c3('0x26')](function(_0x3b9591){if(_0x3b9591){return db[_0x00c3('0x65')][_0x00c3('0x27')]({'where':{'ListId':_0x49143c[_0x00c3('0x3b')][_0x00c3('0x84')],'VoiceQueueId':_0x49143c['params']['id']}})[_0x00c3('0x26')](function(){return _0x3b9591;});}})[_0x00c3('0x26')](respondWithStatusCode(_0x3a4f5c,null))[_0x00c3('0x50')](handleError(_0x3a4f5c,null));};exports[_0x00c3('0xb5')]=function(_0x45bd7a,_0x97616c,_0x4539cd){var _0xced94f={};var _0xda1cf4={};var _0x285f5a;var _0x559633;return db[_0x00c3('0x37')]['findOne']({'where':{'id':_0x45bd7a['params']['id']}})['then'](handleEntityNotFound(_0x97616c,null))[_0x00c3('0x26')](function(_0x4013f2){if(_0x4013f2){_0x285f5a=_0x4013f2;_0xda1cf4[_0x00c3('0x3a')]=_['keys'](db[_0x00c3('0x9e')][_0x00c3('0x62')]);_0xda1cf4['query']=_[_0x00c3('0x3c')](_0x45bd7a[_0x00c3('0x3b')]);_0xda1cf4['filters']=_[_0x00c3('0x3e')](_0xda1cf4[_0x00c3('0x3a')],_0xda1cf4['query']);_0xced94f[_0x00c3('0x3f')]=_[_0x00c3('0x3e')](_0xda1cf4[_0x00c3('0x3a')],qs[_0x00c3('0x4e')](_0x45bd7a[_0x00c3('0x3b')][_0x00c3('0x4e')]));_0xced94f['attributes']=_0xced94f[_0x00c3('0x3f')][_0x00c3('0x5a')]?_0xced94f[_0x00c3('0x3f')]:_0xda1cf4[_0x00c3('0x3a')];_0xced94f[_0x00c3('0x41')]=qs[_0x00c3('0x42')](_0x45bd7a[_0x00c3('0x3b')][_0x00c3('0x42')]);_0xced94f[_0x00c3('0x43')]=qs[_0x00c3('0x3d')](_['pick'](_0x45bd7a[_0x00c3('0x3b')],_0xda1cf4[_0x00c3('0x3d')]));if(_0x45bd7a[_0x00c3('0x3b')][_0x00c3('0x45')]){_0xced94f[_0x00c3('0x43')]=_[_0x00c3('0x46')](_0xced94f[_0x00c3('0x43')],{'$or':_[_0x00c3('0x2e')](_0xced94f['attributes'],function(_0x3f2847){var _0x2f4048={};_0x2f4048[_0x3f2847]={'$like':'%'+_0x45bd7a[_0x00c3('0x3b')][_0x00c3('0x45')]+'%'};return _0x2f4048;})});}_0xced94f=_[_0x00c3('0x46')]({},_0xced94f,_0x45bd7a[_0x00c3('0x4f')]);return _0x285f5a[_0x00c3('0xb5')](_0xced94f);}})[_0x00c3('0x26')](function(_0x3ab362){if(_0x3ab362){_0x559633=_0x3ab362[_0x00c3('0x5a')];if(!_0x45bd7a[_0x00c3('0x3b')]['hasOwnProperty']('nolimit')){_0xced94f[_0x00c3('0x1d')]=qs[_0x00c3('0x1d')](_0x45bd7a[_0x00c3('0x3b')][_0x00c3('0x1d')]);_0xced94f[_0x00c3('0x1c')]=qs[_0x00c3('0x1c')](_0x45bd7a[_0x00c3('0x3b')][_0x00c3('0x1c')]);}return _0x285f5a[_0x00c3('0xb5')](_0xced94f);}})[_0x00c3('0x26')](function(_0x5ed5c2){if(_0x5ed5c2){return _0x5ed5c2?{'count':_0x559633,'rows':_0x5ed5c2}:null;}})[_0x00c3('0x26')](respondWithResult(_0x97616c,null))[_0x00c3('0x50')](handleError(_0x97616c,null));};exports['addBlackLists']=function(_0x44d2ed,_0x434c40,_0x56df76){var _0x2a4bec,_0x4c779e;return db['VoiceQueue']['find']({'where':{'id':_0x44d2ed[_0x00c3('0x4d')]['id']}})[_0x00c3('0x26')](handleEntityNotFound(_0x434c40,null))[_0x00c3('0x26')](function(_0x21416e){if(_0x21416e){_0x4c779e=_0x21416e;return _0x21416e[_0x00c3('0xb6')](_0x44d2ed[_0x00c3('0x52')][_0x00c3('0x84')],_['omit'](_0x44d2ed[_0x00c3('0x52')],[_0x00c3('0x84'),'id'])||{});}return null;})[_0x00c3('0x99')](function(_0x47ac0b){var _0x1f3080;_0x2a4bec=_0x47ac0b||[];var _0x469b9d=[];if(_0x47ac0b){for(var _0x4bec3e=0x0;_0x4bec3e<_0x47ac0b[_0x00c3('0x5a')];_0x4bec3e+=0x1){var _0x2fbde2=_0x47ac0b[_0x4bec3e]['get']({'plain':!![]});_0x1f3080=squel[_0x00c3('0xa2')]()[_0x00c3('0xa3')]('cm_hopper_black')[_0x00c3('0xa5')](['phone','ContactId',_0x00c3('0xab'),_0x00c3('0x64'),'createdAt',_0x00c3('0x5d')],squel[_0x00c3('0x85')]()['field'](_0x00c3('0xa6'),_0x00c3('0xa6'))[_0x00c3('0x86')]('id',_0x00c3('0xa8'))[_0x00c3('0x86')](_0x2fbde2['CmListId'][_0x00c3('0x8e')](),_0x00c3('0xab'))['field'](_0x44d2ed['params']['id']['toString'](),_0x00c3('0x64'))[_0x00c3('0x86')](_0x00c3('0xa9'),_0x00c3('0x5c'))[_0x00c3('0x86')](_0x00c3('0xa9'),'updatedAt')['from'](_0x00c3('0xac'))[_0x00c3('0x43')](_0x00c3('0xad'))[_0x00c3('0x43')]('ListId\x20=\x20?',_0x2fbde2[_0x00c3('0xaa')]['toString']())['where'](_0x00c3('0xaf')))[_0x00c3('0x8e')]();_0x469b9d[_0x00c3('0x8d')](db[_0x00c3('0x77')]['query'](_0x1f3080));}return BPromise[_0x00c3('0x93')](_0x469b9d);}})['then'](function(){return _0x2a4bec;})[_0x00c3('0x26')](respondWithResult(_0x434c40,null))[_0x00c3('0x50')](handleError(_0x434c40,null));};exports['removeBlackLists']=function(_0x50a8d8,_0x39e9f0,_0x3187be){return db['VoiceQueue'][_0x00c3('0x32')]({'where':{'id':_0x50a8d8['params']['id']}})['then'](handleEntityNotFound(_0x39e9f0,null))['then'](function(_0x42f42a){if(_0x42f42a){return _0x42f42a[_0x00c3('0xb7')](_0x50a8d8['query'][_0x00c3('0x84')]);}})[_0x00c3('0x26')](function(_0x207d5e){if(_0x207d5e){return db[_0x00c3('0x6b')][_0x00c3('0x27')]({'where':{'ListId':_0x50a8d8[_0x00c3('0x3b')][_0x00c3('0x84')],'VoiceQueueId':_0x50a8d8[_0x00c3('0x4d')]['id']}})['then'](function(){return _0x207d5e;});}})[_0x00c3('0x26')](respondWithStatusCode(_0x39e9f0,null))['catch'](handleError(_0x39e9f0,null));};
\ No newline at end of file
index 9b77cf4..37c6110 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16d3=['hook','exports','events','VoiceQueue','setMaxListeners','save','remove','emit'];(function(_0x395416,_0x32f3bb){var _0x5338bd=function(_0x230189){while(--_0x230189){_0x395416['push'](_0x395416['shift']());}};_0x5338bd(++_0x32f3bb);}(_0x16d3,0x1c2));var _0x316d=function(_0x336df4,_0x52c1dc){_0x336df4=_0x336df4-0x0;var _0x580d8c=_0x16d3[_0x336df4];return _0x580d8c;};'use strict';var EventEmitter=require(_0x316d('0x0'));var VoiceQueue=require('../../mysqldb')['db'][_0x316d('0x1')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x316d('0x2')](0x0);var events={'afterCreate':_0x316d('0x3'),'afterUpdate':'update','afterDestroy':_0x316d('0x4')};function emitEvent(_0x385b90){return function(_0x516076,_0x2a096e,_0x51ef99){VoiceQueueEvents[_0x316d('0x5')](_0x385b90+':'+_0x516076['id'],_0x516076);VoiceQueueEvents[_0x316d('0x5')](_0x385b90,_0x516076);_0x51ef99(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueue[_0x316d('0x6')](e,emitEvent(event));}}module[_0x316d('0x7')]=VoiceQueueEvents;
\ No newline at end of file
+var _0x376d=['VoiceQueue','setMaxListeners','save','update','remove','emit','events'];(function(_0x20acdb,_0x210c8e){var _0x383b0d=function(_0x5d0919){while(--_0x5d0919){_0x20acdb['push'](_0x20acdb['shift']());}};_0x383b0d(++_0x210c8e);}(_0x376d,0x1d4));var _0xd376=function(_0x5c1bbd,_0x164495){_0x5c1bbd=_0x5c1bbd-0x0;var _0x105e4b=_0x376d[_0x5c1bbd];return _0x105e4b;};'use strict';var EventEmitter=require(_0xd376('0x0'));var VoiceQueue=require('../../mysqldb')['db'][_0xd376('0x1')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0xd376('0x2')](0x0);var events={'afterCreate':_0xd376('0x3'),'afterUpdate':_0xd376('0x4'),'afterDestroy':_0xd376('0x5')};function emitEvent(_0xbeb5aa){return function(_0x54c031,_0x57b7b6,_0x1ed81d){VoiceQueueEvents['emit'](_0xbeb5aa+':'+_0x54c031['id'],_0x54c031);VoiceQueueEvents[_0xd376('0x6')](_0xbeb5aa,_0x54c031);_0x1ed81d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module['exports']=VoiceQueueEvents;
\ No newline at end of file
index db9180d..06bad1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../config/environment','./voiceQueue.attributes','exports','define','VoiceQueue','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x234c5a,_0x5aaaa2){var _0x562a81=function(_0xe17d86){while(--_0xe17d86){_0x234c5a['push'](_0x234c5a['shift']());}};_0x562a81(++_0x5aaaa2);}(_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 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':'voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x34e8=['voice_queues','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports','VoiceQueue'];(function(_0x1879c0,_0x330937){var _0x49aafc=function(_0x5c42b3){while(--_0x5c42b3){_0x1879c0['push'](_0x1879c0['shift']());}};_0x49aafc(++_0x330937);}(_0x34e8,0x12c));var _0x834e=function(_0x3aeef5,_0x2b8424){_0x3aeef5=_0x3aeef5-0x0;var _0x42fddb=_0x34e8[_0x3aeef5];return _0x42fddb;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var logger=require(_0x834e('0x2'))(_0x834e('0x3'));var moment=require('moment');var BPromise=require(_0x834e('0x4'));var rp=require(_0x834e('0x5'));var fs=require('fs');var path=require(_0x834e('0x6'));var rimraf=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var attributes=require(_0x834e('0x9'));module[_0x834e('0xa')]=function(_0x4a2018,_0x858aa1){return _0x4a2018['define'](_0x834e('0xb'),attributes,{'tableName':_0x834e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d0cc9b9..d642df0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd825=['map','model','ShowVoiceQueue','find','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','./voiceQueue.socket','register','then','info','VoiceQueue,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','GetVoiceQueue','VoiceQueue','options','raw','where','attributes','limit','include'];(function(_0x17b0d4,_0x377add){var _0x2d02c7=function(_0x56e627){while(--_0x56e627){_0x17b0d4['push'](_0x17b0d4['shift']());}};_0x2d02c7(++_0x377add);}(_0xd825,0xa0));var _0x5d82=function(_0x122b42,_0x39bad3){_0x122b42=_0x122b42-0x0;var _0x2e6d31=_0xd825[_0x122b42];return _0x2e6d31;};'use strict';var _=require(_0x5d82('0x0'));var util=require(_0x5d82('0x1'));var moment=require('moment');var BPromise=require(_0x5d82('0x2'));var rs=require(_0x5d82('0x3'));var fs=require('fs');var Redis=require(_0x5d82('0x4'));var db=require(_0x5d82('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x5d82('0x6'))(_0x5d82('0x7'));var config=require(_0x5d82('0x8'));var jayson=require(_0x5d82('0x9'));var client=jayson[_0x5d82('0xa')][_0x5d82('0xb')]({'port':0x232a});config[_0x5d82('0xc')]=_['defaults'](config[_0x5d82('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x5d82('0xd'))(new Redis(config[_0x5d82('0xc')]));require(_0x5d82('0xe'))[_0x5d82('0xf')](socket);function respondWithRpcPromise(_0x52e74c,_0x18c673,_0x23deb4){return new BPromise(function(_0x31d836,_0x2b550d){return client['request'](_0x52e74c,_0x23deb4)[_0x5d82('0x10')](function(_0x43de19){logger[_0x5d82('0x11')](_0x5d82('0x12'),_0x18c673,'request\x20sent');logger[_0x5d82('0x13')]('VoiceQueue,\x20%s,\x20%s,\x20%s',_0x18c673,_0x5d82('0x14'),JSON[_0x5d82('0x15')](_0x43de19));if(_0x43de19['error']){if(_0x43de19[_0x5d82('0x16')][_0x5d82('0x17')]===0x1f4){logger['error'](_0x5d82('0x12'),_0x18c673,_0x43de19[_0x5d82('0x16')][_0x5d82('0x18')]);return _0x2b550d(_0x43de19[_0x5d82('0x16')][_0x5d82('0x18')]);}logger[_0x5d82('0x16')](_0x5d82('0x12'),_0x18c673,_0x43de19['error']['message']);return _0x31d836(_0x43de19[_0x5d82('0x16')][_0x5d82('0x18')]);}else{logger['info'](_0x5d82('0x12'),_0x18c673,_0x5d82('0x14'));_0x31d836(_0x43de19[_0x5d82('0x19')][_0x5d82('0x18')]);}})[_0x5d82('0x1a')](function(_0x2a8c09){logger[_0x5d82('0x16')](_0x5d82('0x12'),_0x18c673,_0x2a8c09);_0x2b550d(_0x2a8c09);});});}exports[_0x5d82('0x1b')]=function(_0x5dea61){var _0xfe6cb0=this;return new Promise(function(_0xf4a99d,_0x474527){return db[_0x5d82('0x1c')]['findAll']({'raw':_0x5dea61[_0x5d82('0x1d')]?_0x5dea61[_0x5d82('0x1d')][_0x5d82('0x1e')]===undefined?!![]:![]:!![],'where':_0x5dea61[_0x5d82('0x1d')]?_0x5dea61[_0x5d82('0x1d')][_0x5d82('0x1f')]||null:null,'attributes':_0x5dea61['options']?_0x5dea61[_0x5d82('0x1d')][_0x5d82('0x20')]||null:null,'limit':_0x5dea61['options']?_0x5dea61[_0x5d82('0x1d')][_0x5d82('0x21')]||null:null,'include':_0x5dea61[_0x5d82('0x1d')]?_0x5dea61[_0x5d82('0x1d')][_0x5d82('0x22')]?_['map'](_0x5dea61['options'][_0x5d82('0x22')],function(_0x1308d9){return{'model':db[_0x1308d9['model']],'as':_0x1308d9['as'],'attributes':_0x1308d9[_0x5d82('0x20')],'include':_0x1308d9[_0x5d82('0x22')]?_['map'](_0x1308d9[_0x5d82('0x22')],function(_0x1e1669){return{'model':db[_0x1e1669['model']],'as':_0x1e1669['as'],'attributes':_0x1e1669[_0x5d82('0x20')],'include':_0x1e1669[_0x5d82('0x22')]?_[_0x5d82('0x23')](_0x1e1669[_0x5d82('0x22')],function(_0x1e0c2a){return{'model':db[_0x1e0c2a[_0x5d82('0x24')]],'as':_0x1e0c2a['as'],'attributes':_0x1e0c2a[_0x5d82('0x20')]};}):[]};}):[]};}):[]:[]})[_0x5d82('0x10')](function(_0x50351e){logger['info'](_0x5d82('0x1b'),_0x5dea61);logger[_0x5d82('0x13')](_0x5d82('0x1b'),_0x5dea61,JSON['stringify'](_0x50351e));_0xf4a99d(_0x50351e);})[_0x5d82('0x1a')](function(_0x8a19c8){logger[_0x5d82('0x16')](_0x5d82('0x1b'),_0x8a19c8[_0x5d82('0x18')],_0x5dea61);_0x474527(_0xfe6cb0[_0x5d82('0x16')](0x1f4,_0x8a19c8[_0x5d82('0x18')]));});});};exports[_0x5d82('0x25')]=function(_0x5ef7e5){var _0x26632a=this;return new Promise(function(_0x4ed58b,_0x1b69fb){return db[_0x5d82('0x1c')][_0x5d82('0x26')]({'raw':_0x5ef7e5[_0x5d82('0x1d')]?_0x5ef7e5['options'][_0x5d82('0x1e')]===undefined?!![]:![]:!![],'where':_0x5ef7e5['options']?_0x5ef7e5[_0x5d82('0x1d')]['where']||null:null,'attributes':_0x5ef7e5[_0x5d82('0x1d')]?_0x5ef7e5[_0x5d82('0x1d')][_0x5d82('0x20')]||null:null,'include':_0x5ef7e5[_0x5d82('0x1d')]?_0x5ef7e5['options'][_0x5d82('0x22')]?_[_0x5d82('0x23')](_0x5ef7e5[_0x5d82('0x1d')][_0x5d82('0x22')],function(_0x397cda){return{'model':db[_0x397cda[_0x5d82('0x24')]],'as':_0x397cda['as'],'attributes':_0x397cda[_0x5d82('0x20')],'include':_0x397cda[_0x5d82('0x22')]?_[_0x5d82('0x23')](_0x397cda[_0x5d82('0x22')],function(_0x56c03b){return{'model':db[_0x56c03b[_0x5d82('0x24')]],'as':_0x56c03b['as'],'attributes':_0x56c03b[_0x5d82('0x20')],'include':_0x56c03b['include']?_[_0x5d82('0x23')](_0x56c03b['include'],function(_0x4a05ac){return{'model':db[_0x4a05ac['model']],'as':_0x4a05ac['as'],'attributes':_0x4a05ac[_0x5d82('0x20')]};}):[]};}):[]};}):[]:[]})[_0x5d82('0x10')](function(_0x306b73){logger[_0x5d82('0x11')](_0x5d82('0x25'),_0x5ef7e5);logger['debug'](_0x5d82('0x25'),_0x5ef7e5,JSON[_0x5d82('0x15')](_0x306b73));_0x4ed58b(_0x306b73);})['catch'](function(_0xb3fd0b){logger['error'](_0x5d82('0x25'),_0xb3fd0b[_0x5d82('0x18')],_0x5ef7e5);_0x1b69fb(_0x26632a['error'](0x1f4,_0xb3fd0b[_0x5d82('0x18')]));});});};
\ No newline at end of file
+var _0x916a=['ShowVoiceQueue','find','then','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./voiceQueue.socket','info','VoiceQueue,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','catch','GetVoiceQueue','VoiceQueue','findAll','options','raw','where','attributes','limit','include','model','map'];(function(_0x2f1114,_0x4561f1){var _0x2fe856=function(_0x8397f8){while(--_0x8397f8){_0x2f1114['push'](_0x2f1114['shift']());}};_0x2fe856(++_0x4561f1);}(_0x916a,0x17f));var _0xa916=function(_0x295314,_0x17b250){_0x295314=_0x295314-0x0;var _0x584b0c=_0x916a[_0x295314];return _0x584b0c;};'use strict';var _=require(_0xa916('0x0'));var util=require('util');var moment=require(_0xa916('0x1'));var BPromise=require(_0xa916('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa916('0x3'));var db=require(_0xa916('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xa916('0x5'))(_0xa916('0x6'));var config=require(_0xa916('0x7'));var jayson=require(_0xa916('0x8'));var client=jayson['client'][_0xa916('0x9')]({'port':0x232a});config[_0xa916('0xa')]=_[_0xa916('0xb')](config[_0xa916('0xa')],{'host':_0xa916('0xc'),'port':0x18eb});var socket=require(_0xa916('0xd'))(new Redis(config[_0xa916('0xa')]));require(_0xa916('0xe'))['register'](socket);function respondWithRpcPromise(_0x52ccd6,_0x5a3bfb,_0x2eb9e1){return new BPromise(function(_0x172a6d,_0x5d7efe){return client['request'](_0x52ccd6,_0x2eb9e1)['then'](function(_0x2e11fd){logger[_0xa916('0xf')](_0xa916('0x10'),_0x5a3bfb,'request\x20sent');logger[_0xa916('0x11')]('VoiceQueue,\x20%s,\x20%s,\x20%s',_0x5a3bfb,_0xa916('0x12'),JSON[_0xa916('0x13')](_0x2e11fd));if(_0x2e11fd[_0xa916('0x14')]){if(_0x2e11fd[_0xa916('0x14')]['code']===0x1f4){logger[_0xa916('0x14')](_0xa916('0x10'),_0x5a3bfb,_0x2e11fd[_0xa916('0x14')][_0xa916('0x15')]);return _0x5d7efe(_0x2e11fd['error'][_0xa916('0x15')]);}logger[_0xa916('0x14')](_0xa916('0x10'),_0x5a3bfb,_0x2e11fd['error'][_0xa916('0x15')]);return _0x172a6d(_0x2e11fd[_0xa916('0x14')][_0xa916('0x15')]);}else{logger[_0xa916('0xf')](_0xa916('0x10'),_0x5a3bfb,_0xa916('0x12'));_0x172a6d(_0x2e11fd[_0xa916('0x16')][_0xa916('0x15')]);}})[_0xa916('0x17')](function(_0x211627){logger[_0xa916('0x14')]('VoiceQueue,\x20%s,\x20%s',_0x5a3bfb,_0x211627);_0x5d7efe(_0x211627);});});}exports[_0xa916('0x18')]=function(_0x42b271){var _0xac78a8=this;return new Promise(function(_0x4312b5,_0x4332d3){return db[_0xa916('0x19')][_0xa916('0x1a')]({'raw':_0x42b271['options']?_0x42b271[_0xa916('0x1b')][_0xa916('0x1c')]===undefined?!![]:![]:!![],'where':_0x42b271[_0xa916('0x1b')]?_0x42b271[_0xa916('0x1b')][_0xa916('0x1d')]||null:null,'attributes':_0x42b271[_0xa916('0x1b')]?_0x42b271[_0xa916('0x1b')][_0xa916('0x1e')]||null:null,'limit':_0x42b271['options']?_0x42b271['options'][_0xa916('0x1f')]||null:null,'include':_0x42b271[_0xa916('0x1b')]?_0x42b271[_0xa916('0x1b')]['include']?_['map'](_0x42b271[_0xa916('0x1b')][_0xa916('0x20')],function(_0x311347){return{'model':db[_0x311347['model']],'as':_0x311347['as'],'attributes':_0x311347[_0xa916('0x1e')],'include':_0x311347[_0xa916('0x20')]?_['map'](_0x311347[_0xa916('0x20')],function(_0x21bc02){return{'model':db[_0x21bc02[_0xa916('0x21')]],'as':_0x21bc02['as'],'attributes':_0x21bc02[_0xa916('0x1e')],'include':_0x21bc02['include']?_[_0xa916('0x22')](_0x21bc02[_0xa916('0x20')],function(_0x6371b8){return{'model':db[_0x6371b8[_0xa916('0x21')]],'as':_0x6371b8['as'],'attributes':_0x6371b8[_0xa916('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x160935){logger['info'](_0xa916('0x18'),_0x42b271);logger[_0xa916('0x11')](_0xa916('0x18'),_0x42b271,JSON[_0xa916('0x13')](_0x160935));_0x4312b5(_0x160935);})[_0xa916('0x17')](function(_0x46f070){logger['error']('GetVoiceQueue',_0x46f070['message'],_0x42b271);_0x4332d3(_0xac78a8[_0xa916('0x14')](0x1f4,_0x46f070[_0xa916('0x15')]));});});};exports[_0xa916('0x23')]=function(_0x47117c){var _0x501c4b=this;return new Promise(function(_0x29c122,_0x17b792){return db['VoiceQueue'][_0xa916('0x24')]({'raw':_0x47117c[_0xa916('0x1b')]?_0x47117c[_0xa916('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x47117c[_0xa916('0x1b')]?_0x47117c[_0xa916('0x1b')][_0xa916('0x1d')]||null:null,'attributes':_0x47117c[_0xa916('0x1b')]?_0x47117c[_0xa916('0x1b')][_0xa916('0x1e')]||null:null,'include':_0x47117c[_0xa916('0x1b')]?_0x47117c[_0xa916('0x1b')][_0xa916('0x20')]?_['map'](_0x47117c['options'][_0xa916('0x20')],function(_0x193680){return{'model':db[_0x193680[_0xa916('0x21')]],'as':_0x193680['as'],'attributes':_0x193680['attributes'],'include':_0x193680[_0xa916('0x20')]?_[_0xa916('0x22')](_0x193680[_0xa916('0x20')],function(_0x913d98){return{'model':db[_0x913d98['model']],'as':_0x913d98['as'],'attributes':_0x913d98['attributes'],'include':_0x913d98['include']?_['map'](_0x913d98[_0xa916('0x20')],function(_0x840b02){return{'model':db[_0x840b02[_0xa916('0x21')]],'as':_0x840b02['as'],'attributes':_0x840b02[_0xa916('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xa916('0x25')](function(_0x4d75f3){logger[_0xa916('0xf')](_0xa916('0x23'),_0x47117c);logger[_0xa916('0x11')]('ShowVoiceQueue',_0x47117c,JSON[_0xa916('0x13')](_0x4d75f3));_0x29c122(_0x4d75f3);})[_0xa916('0x17')](function(_0x26b614){logger[_0xa916('0x14')](_0xa916('0x23'),_0x26b614['message'],_0x47117c);_0x17b792(_0x501c4b[_0xa916('0x14')](0x1f4,_0x26b614['message']));});});};
\ No newline at end of file
index c92d3a1..dd4b20d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8da=['removeListener','register','length','./voiceQueue.events','update'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xf8da,0x193));var _0xaf8d=function(_0x1295f3,_0x4b8c36){_0x1295f3=_0x1295f3-0x0;var _0x5bb57b=_0xf8da[_0x1295f3];return _0x5bb57b;};'use strict';var VoiceQueueEvents=require(_0xaf8d('0x0'));var events=['save','remove',_0xaf8d('0x1')];function createListener(_0x2dd78c,_0x24c9e2){return function(_0x3984d1){_0x24c9e2['emit'](_0x2dd78c,_0x3984d1);};}function removeListener(_0x1994a9,_0x1b2fba){return function(){VoiceQueueEvents[_0xaf8d('0x2')](_0x1994a9,_0x1b2fba);};}exports[_0xaf8d('0x3')]=function(_0x3b5d8b){for(var _0xe5895c=0x0,_0x5cc19e=events[_0xaf8d('0x4')];_0xe5895c<_0x5cc19e;_0xe5895c++){var _0x5c997d=events[_0xe5895c];var _0x22d5f4=createListener('voiceQueue:'+_0x5c997d,_0x3b5d8b);VoiceQueueEvents['on'](_0x5c997d,_0x22d5f4);}};
\ No newline at end of file
+var _0xae9e=['removeListener','register','length','voiceQueue:','./voiceQueue.events','remove','update','emit'];(function(_0x20aae1,_0x51efd4){var _0x510601=function(_0x20895f){while(--_0x20895f){_0x20aae1['push'](_0x20aae1['shift']());}};_0x510601(++_0x51efd4);}(_0xae9e,0xe4));var _0xeae9=function(_0x3fe912,_0x33cb27){_0x3fe912=_0x3fe912-0x0;var _0x43a18b=_0xae9e[_0x3fe912];return _0x43a18b;};'use strict';var VoiceQueueEvents=require(_0xeae9('0x0'));var events=['save',_0xeae9('0x1'),_0xeae9('0x2')];function createListener(_0x22b4a1,_0x2af9e8){return function(_0x68aa01){_0x2af9e8[_0xeae9('0x3')](_0x22b4a1,_0x68aa01);};}function removeListener(_0xd0bae9,_0x5c4716){return function(){VoiceQueueEvents[_0xeae9('0x4')](_0xd0bae9,_0x5c4716);};}exports[_0xeae9('0x5')]=function(_0x2b56a9){for(var _0x3cc75a=0x0,_0xf3feea=events[_0xeae9('0x6')];_0x3cc75a<_0xf3feea;_0x3cc75a++){var _0x2eb287=events[_0x3cc75a];var _0x3c5d24=createListener(_0xeae9('0x7')+_0x2eb287,_0x2b56a9);VoiceQueueEvents['on'](_0x2eb287,_0x3c5d24);}};
\ No newline at end of file
index dbd94b3..fa7e5dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2084=['path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','isAuthenticated','index','get','/describe','describe','/index','show','create','put','/:id','update','destroy','exports','util'];(function(_0x420f2a,_0x2cc58d){var _0x28f802=function(_0x3329cc){while(--_0x3329cc){_0x420f2a['push'](_0x420f2a['shift']());}};_0x28f802(++_0x2cc58d);}(_0x2084,0x14f));var _0x4208=function(_0x4eee4f,_0x436392){_0x4eee4f=_0x4eee4f-0x0;var _0x26d1b7=_0x2084[_0x4eee4f];return _0x26d1b7;};'use strict';var multer=require('multer');var util=require(_0x4208('0x0'));var path=require(_0x4208('0x1'));var timeout=require(_0x4208('0x2'));var express=require('express');var router=express[_0x4208('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x4208('0x4'));var interaction=require(_0x4208('0x5'));var config=require(_0x4208('0x6'));var controller=require(_0x4208('0x7'));router['get']('/',auth[_0x4208('0x8')](),controller[_0x4208('0x9')]);router[_0x4208('0xa')](_0x4208('0xb'),auth[_0x4208('0x8')](),controller[_0x4208('0xc')]);router['get'](_0x4208('0xd'),auth[_0x4208('0x8')](),controller['getVoiceQueuesReport']);router['get']('/:id',auth[_0x4208('0x8')](),controller[_0x4208('0xe')]);router['post']('/',auth[_0x4208('0x8')](),controller[_0x4208('0xf')]);router[_0x4208('0x10')](_0x4208('0x11'),auth[_0x4208('0x8')](),controller[_0x4208('0x12')]);router['delete'](_0x4208('0x11'),auth[_0x4208('0x8')](),controller[_0x4208('0x13')]);module[_0x4208('0x14')]=router;
\ No newline at end of file
+var _0x3a65=['../../config/environment','isAuthenticated','index','get','/describe','/index','getVoiceQueuesReport','/:id','show','post','put','update','delete','exports','multer','path','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x2e1cd7,_0x293ea1){var _0x515226=function(_0x816b94){while(--_0x816b94){_0x2e1cd7['push'](_0x2e1cd7['shift']());}};_0x515226(++_0x293ea1);}(_0x3a65,0x18a));var _0x53a6=function(_0x3631ec,_0x4eb193){_0x3631ec=_0x3631ec-0x0;var _0x2a403b=_0x3a65[_0x3631ec];return _0x2a403b;};'use strict';var multer=require(_0x53a6('0x0'));var util=require('util');var path=require(_0x53a6('0x1'));var timeout=require('connect-timeout');var express=require(_0x53a6('0x2'));var router=express['Router']();var fs_extra=require(_0x53a6('0x3'));var auth=require(_0x53a6('0x4'));var interaction=require(_0x53a6('0x5'));var config=require(_0x53a6('0x6'));var controller=require('./voiceQueueReport.controller');router['get']('/',auth[_0x53a6('0x7')](),controller[_0x53a6('0x8')]);router[_0x53a6('0x9')](_0x53a6('0xa'),auth[_0x53a6('0x7')](),controller['describe']);router[_0x53a6('0x9')](_0x53a6('0xb'),auth[_0x53a6('0x7')](),controller[_0x53a6('0xc')]);router['get'](_0x53a6('0xd'),auth[_0x53a6('0x7')](),controller[_0x53a6('0xe')]);router[_0x53a6('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0x53a6('0x10')](_0x53a6('0xd'),auth[_0x53a6('0x7')](),controller[_0x53a6('0x11')]);router[_0x53a6('0x12')](_0x53a6('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0x53a6('0x13')]=router;
\ No newline at end of file
index aaa8669..a9a7158 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70d1=['getDataValue','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','diff','seconds','setDataValue','queuecallerleaveAt','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','STRING','DATE'];(function(_0x2d982d,_0x121028){var _0x4f36b0=function(_0x11f3a9){while(--_0x11f3a9){_0x2d982d['push'](_0x2d982d['shift']());}};_0x4f36b0(++_0x121028);}(_0x70d1,0x13c));var _0x170d=function(_0xc36d01,_0x3bf1a6){_0xc36d01=_0xc36d01-0x0;var _0xecb231=_0x70d1[_0xc36d01];return _0xecb231;};'use strict';var Sequelize=require(_0x170d('0x0'));var moment=require(_0x170d('0x1'));module['exports']={'type':{'type':Sequelize[_0x170d('0x2')]},'uniqueid':{'type':Sequelize[_0x170d('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x170d('0x2')]},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize[_0x170d('0x3')]},'queuecallerleaveAt':{'type':Sequelize[_0x170d('0x3')],'set':function(_0x436d6f){var _0x325073=moment(_0x436d6f);var _0x30fa52=moment(this[_0x170d('0x4')](_0x170d('0x5')))['format'](_0x170d('0x6'));var _0xf676d4=_0x325073[_0x170d('0x7')](_0x30fa52,_0x170d('0x8'));this[_0x170d('0x9')](_0x170d('0xa'),_0x436d6f);this[_0x170d('0x9')](_0x170d('0xb'),_0xf676d4||null);}},'position':{'type':Sequelize['INTEGER']},'count':{'type':Sequelize[_0x170d('0xc')]},'queuecallerabandon':{'type':Sequelize[_0x170d('0xd')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x170d('0x3')]},'queuecallercomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x170d('0x3')]},'queuecallerexit':{'type':Sequelize[_0x170d('0xd')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x170d('0x3')]},'queuecallerexitreason':{'type':Sequelize[_0x170d('0x2')],'comment':_0x170d('0xe')},'originalposition':{'type':Sequelize[_0x170d('0xc')]},'channel':{'type':Sequelize[_0x170d('0x2')]},'connectedlinenum':{'type':Sequelize[_0x170d('0x2')]},'connectedlinename':{'type':Sequelize[_0x170d('0x2')]},'accountcode':{'type':Sequelize[_0x170d('0x2')]},'context':{'type':Sequelize[_0x170d('0x2')]},'exten':{'type':Sequelize[_0x170d('0x2')]},'priority':{'type':Sequelize[_0x170d('0x2')]},'holdtime':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x170d('0x2')]},'transfer':{'type':Sequelize[_0x170d('0xd')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x170d('0x2')],'comment':_0x170d('0xf')},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize[_0x170d('0x2')]},'disposition':{'type':Sequelize[_0x170d('0x2')]},'secondDisposition':{'type':Sequelize[_0x170d('0x2')]},'thirdDisposition':{'type':Sequelize['STRING']},'queuecallerenterreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xbc75=['diff','seconds','setDataValue','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','exports','STRING','DATE','getDataValue','queuecallerjoinAt','format'];(function(_0x536919,_0x2d0c68){var _0x3694d9=function(_0xf21223){while(--_0xf21223){_0x536919['push'](_0x536919['shift']());}};_0x3694d9(++_0x2d0c68);}(_0xbc75,0x7f));var _0x5bc7=function(_0xd7278d,_0x5b1f1d){_0xd7278d=_0xd7278d-0x0;var _0x2ec27a=_0xbc75[_0xd7278d];return _0x2ec27a;};'use strict';var Sequelize=require(_0x5bc7('0x0'));var moment=require(_0x5bc7('0x1'));module[_0x5bc7('0x2')]={'type':{'type':Sequelize[_0x5bc7('0x3')]},'uniqueid':{'type':Sequelize[_0x5bc7('0x3')]},'calleridnum':{'type':Sequelize[_0x5bc7('0x3')]},'calleridname':{'type':Sequelize[_0x5bc7('0x3')]},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize[_0x5bc7('0x4')]},'queuecallerleaveAt':{'type':Sequelize['DATE'],'set':function(_0x185fa6){var _0x723d54=moment(_0x185fa6);var _0xbad133=moment(this[_0x5bc7('0x5')](_0x5bc7('0x6')))[_0x5bc7('0x7')]('YYYY-MM-DD\x20HH:mm:ss');var _0x2802fa=_0x723d54[_0x5bc7('0x8')](_0xbad133,_0x5bc7('0x9'));this[_0x5bc7('0xa')]('queuecallerleaveAt',_0x185fa6);this['setDataValue']('holdtime',_0x2802fa||null);}},'position':{'type':Sequelize[_0x5bc7('0xb')]},'count':{'type':Sequelize[_0x5bc7('0xb')]},'queuecallerabandon':{'type':Sequelize[_0x5bc7('0xc')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x5bc7('0x4')]},'queuecallercomplete':{'type':Sequelize[_0x5bc7('0xc')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x5bc7('0x4')]},'queuecallerexit':{'type':Sequelize[_0x5bc7('0xc')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x5bc7('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0x5bc7('0x3')],'comment':_0x5bc7('0xd')},'originalposition':{'type':Sequelize[_0x5bc7('0xb')]},'channel':{'type':Sequelize[_0x5bc7('0x3')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x5bc7('0x3')]},'accountcode':{'type':Sequelize[_0x5bc7('0x3')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x5bc7('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x5bc7('0xb')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x5bc7('0xc')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x5bc7('0x3')]},'transfer':{'type':Sequelize[_0x5bc7('0xc')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x5bc7('0x3')],'comment':_0x5bc7('0xe')},'transferexten':{'type':Sequelize[_0x5bc7('0x3')]},'transferuniqueid':{'type':Sequelize[_0x5bc7('0x3')]},'disposition':{'type':Sequelize[_0x5bc7('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'queuecallerenterreason':{'type':Sequelize[_0x5bc7('0xb')],'defaultValue':0x0}};
\ No newline at end of file
index 30414e5..2755a70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4162=['path','sox','to-csv','ejs','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','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','sendStatus','status','json','undefined','limit','count','offset','set','reject','save','then','destroy','end','error','stack','name','send','map','VoiceQueueReport','rawAttributes','fieldName','type','model','keys','filters','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','rows','catch','params','include','find','create','body','update','getVoiceQueuesReport','includeAll','findAll','rimraf','zip-dir','request-promise','moment','mustache','util'];(function(_0x41cda5,_0x3d62e8){var _0x5890a1=function(_0x22f8e7){while(--_0x22f8e7){_0x41cda5['push'](_0x41cda5['shift']());}};_0x5890a1(++_0x3d62e8);}(_0x4162,0x1f2));var _0x2416=function(_0x3155f6,_0x127858){_0x3155f6=_0x3155f6-0x0;var _0xdb3876=_0x4162[_0x3155f6];return _0xdb3876;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2416('0x0'));var zipdir=require(_0x2416('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2416('0x2'));var moment=require(_0x2416('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x2416('0x4'));var util=require(_0x2416('0x5'));var path=require(_0x2416('0x6'));var sox=require(_0x2416('0x7'));var csv=require(_0x2416('0x8'));var ejs=require(_0x2416('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x2416('0xa'));var crypto=require(_0x2416('0xb'));var jsforce=require(_0x2416('0xc'));var deskjs=require(_0x2416('0xd'));var toCsv=require(_0x2416('0x8'));var querystring=require(_0x2416('0xe'));var Papa=require(_0x2416('0xf'));var Redis=require(_0x2416('0x10'));var authService=require(_0x2416('0x11'));var qs=require(_0x2416('0x12'));var as=require(_0x2416('0x13'));var hardwareService=require(_0x2416('0x14'));var logger=require(_0x2416('0x15'))(_0x2416('0x16'));var utils=require(_0x2416('0x17'));var config=require(_0x2416('0x18'));var licenseUtil=require(_0x2416('0x19'));var db=require(_0x2416('0x1a'))['db'];config[_0x2416('0x1b')]=_[_0x2416('0x1c')](config['redis'],{'host':_0x2416('0x1d'),'port':0x18eb});var socket=require(_0x2416('0x1e'))(new Redis(config['redis']));require(_0x2416('0x1f'))[_0x2416('0x20')](socket);function respondWithStatusCode(_0x20c0ee,_0x123e96){_0x123e96=_0x123e96||0xcc;return function(_0x1a11b6){if(_0x1a11b6){return _0x20c0ee[_0x2416('0x21')](_0x123e96);}return _0x20c0ee['status'](_0x123e96)['end']();};}function respondWithResult(_0xdc0492,_0x290252){_0x290252=_0x290252||0xc8;return function(_0x175c81){if(_0x175c81){return _0xdc0492[_0x2416('0x22')](_0x290252)[_0x2416('0x23')](_0x175c81);}};}function respondWithFilteredResult(_0x16c06c,_0x353058){return function(_0x17fd1f){if(_0x17fd1f){var _0xb3ff75=typeof _0x353058['offset']===_0x2416('0x24')&&typeof _0x353058[_0x2416('0x25')]===_0x2416('0x24');var _0x5d4545=_0x17fd1f[_0x2416('0x26')];var _0x41ec9a=_0xb3ff75?0x0:_0x353058[_0x2416('0x27')];var _0x5e7487=_0xb3ff75?_0x17fd1f[_0x2416('0x26')]:_0x353058[_0x2416('0x27')]+_0x353058['limit'];var _0x5edee1;if(_0x5e7487>=_0x5d4545){_0x5e7487=_0x5d4545;_0x5edee1=0xc8;}else{_0x5edee1=0xce;}_0x16c06c['status'](_0x5edee1);return _0x16c06c[_0x2416('0x28')]('Content-Range',_0x41ec9a+'-'+_0x5e7487+'/'+_0x5d4545)[_0x2416('0x23')](_0x17fd1f);}return null;};}function patchUpdates(_0x52172b){return function(_0x499cfc){try{jsonpatch['apply'](_0x499cfc,_0x52172b,!![]);}catch(_0x3e15ab){return BPromise[_0x2416('0x29')](_0x3e15ab);}return _0x499cfc[_0x2416('0x2a')]();};}function saveUpdates(_0x412686,_0xafe030){return function(_0x48488c){if(_0x48488c){return _0x48488c['update'](_0x412686)[_0x2416('0x2b')](function(_0x5ea5d5){return _0x5ea5d5;});}return null;};}function removeEntity(_0x3dc035,_0xdb67e6){return function(_0x502a9a){if(_0x502a9a){return _0x502a9a[_0x2416('0x2c')]()['then'](function(){_0x3dc035[_0x2416('0x22')](0xcc)[_0x2416('0x2d')]();});}};}function handleEntityNotFound(_0x19459c,_0x1c861f){return function(_0x28adff){if(!_0x28adff){_0x19459c[_0x2416('0x21')](0x194);}return _0x28adff;};}function handleError(_0x5adf88,_0x35db30){_0x35db30=_0x35db30||0x1f4;return function(_0x5b3042){logger[_0x2416('0x2e')](_0x5b3042[_0x2416('0x2f')]);if(_0x5b3042[_0x2416('0x30')]){delete _0x5b3042[_0x2416('0x30')];}_0x5adf88[_0x2416('0x22')](_0x35db30)[_0x2416('0x31')](_0x5b3042);};}exports['index']=function(_0x2826ec,_0x52f4cc){var _0x57f1ab={},_0xe2ff77={},_0x30ffb2={'count':0x0,'rows':[]};var _0x3c9feb=_[_0x2416('0x32')](db[_0x2416('0x33')][_0x2416('0x34')],function(_0x570a10){return{'name':_0x570a10[_0x2416('0x35')],'type':_0x570a10[_0x2416('0x36')]['key']};});_0xe2ff77[_0x2416('0x37')]=_[_0x2416('0x32')](_0x3c9feb,'name');_0xe2ff77['query']=_[_0x2416('0x38')](_0x2826ec['query']);_0xe2ff77[_0x2416('0x39')]=_['intersection'](_0xe2ff77['model'],_0xe2ff77[_0x2416('0x3a')]);_0x57f1ab[_0x2416('0x3b')]=_[_0x2416('0x3c')](_0xe2ff77[_0x2416('0x37')],qs['fields'](_0x2826ec[_0x2416('0x3a')][_0x2416('0x3d')]));_0x57f1ab['attributes']=_0x57f1ab[_0x2416('0x3b')][_0x2416('0x3e')]?_0x57f1ab['attributes']:_0xe2ff77[_0x2416('0x37')];if(!_0x2826ec['query'][_0x2416('0x3f')](_0x2416('0x40'))){_0x57f1ab[_0x2416('0x25')]=qs[_0x2416('0x25')](_0x2826ec[_0x2416('0x3a')][_0x2416('0x25')]);_0x57f1ab['offset']=qs[_0x2416('0x27')](_0x2826ec[_0x2416('0x3a')][_0x2416('0x27')]);}_0x57f1ab[_0x2416('0x41')]=qs[_0x2416('0x42')](_0x2826ec[_0x2416('0x3a')][_0x2416('0x42')]);_0x57f1ab[_0x2416('0x43')]=qs[_0x2416('0x39')](_[_0x2416('0x44')](_0x2826ec[_0x2416('0x3a')],_0xe2ff77['filters']),_0x3c9feb);if(_0x2826ec[_0x2416('0x3a')][_0x2416('0x45')]){_0x57f1ab[_0x2416('0x43')]=_[_0x2416('0x46')](_0x57f1ab['where'],{'$or':_[_0x2416('0x32')](_0x3c9feb,function(_0x510d21){if(_0x510d21['type']!==_0x2416('0x47')){var _0x5dc7c3={};_0x5dc7c3[_0x510d21[_0x2416('0x30')]]={'$like':'%'+_0x2826ec[_0x2416('0x3a')]['filter']+'%'};return _0x5dc7c3;}})});}_0x57f1ab=_[_0x2416('0x46')]({},_0x57f1ab,_0x2826ec[_0x2416('0x48')]);var _0x4b8069={'where':_0x57f1ab[_0x2416('0x43')]};return db['VoiceQueueReport']['count'](_0x4b8069)[_0x2416('0x2b')](function(_0x2b8048){_0x30ffb2[_0x2416('0x26')]=_0x2b8048;if(_0x2826ec[_0x2416('0x3a')]['includeAll']){_0x57f1ab['include']=[{'all':!![]}];}return db['VoiceQueueReport']['findAll'](_0x57f1ab);})['then'](function(_0x2ef503){_0x30ffb2[_0x2416('0x49')]=_0x2ef503;return _0x30ffb2;})[_0x2416('0x2b')](respondWithFilteredResult(_0x52f4cc,_0x57f1ab))[_0x2416('0x4a')](handleError(_0x52f4cc,null));};exports['show']=function(_0x1dac1c,_0x36fe2e){var _0x31dbe4={'raw':![],'where':{'id':_0x1dac1c[_0x2416('0x4b')]['id']}},_0x204f69={};_0x204f69[_0x2416('0x37')]=_[_0x2416('0x38')](db['VoiceQueueReport'][_0x2416('0x34')]);_0x204f69[_0x2416('0x3a')]=_['keys'](_0x1dac1c[_0x2416('0x3a')]);_0x204f69['filters']=_[_0x2416('0x3c')](_0x204f69[_0x2416('0x37')],_0x204f69[_0x2416('0x3a')]);_0x31dbe4[_0x2416('0x3b')]=_['intersection'](_0x204f69[_0x2416('0x37')],qs[_0x2416('0x3d')](_0x1dac1c['query'][_0x2416('0x3d')]));_0x31dbe4[_0x2416('0x3b')]=_0x31dbe4[_0x2416('0x3b')]['length']?_0x31dbe4[_0x2416('0x3b')]:_0x204f69['model'];if(_0x1dac1c[_0x2416('0x3a')]['includeAll']){_0x31dbe4[_0x2416('0x4c')]=[{'all':!![]}];}_0x31dbe4=_[_0x2416('0x46')]({},_0x31dbe4,_0x1dac1c[_0x2416('0x48')]);return db[_0x2416('0x33')][_0x2416('0x4d')](_0x31dbe4)['then'](handleEntityNotFound(_0x36fe2e,null))[_0x2416('0x2b')](respondWithResult(_0x36fe2e,null))[_0x2416('0x4a')](handleError(_0x36fe2e,null));};exports[_0x2416('0x4e')]=function(_0x51a034,_0x555e80){return db[_0x2416('0x33')][_0x2416('0x4e')](_0x51a034[_0x2416('0x4f')],{})[_0x2416('0x2b')](respondWithResult(_0x555e80,0xc9))['catch'](handleError(_0x555e80,null));};exports[_0x2416('0x50')]=function(_0x5bae3b,_0x521740){if(_0x5bae3b[_0x2416('0x4f')]['id']){delete _0x5bae3b[_0x2416('0x4f')]['id'];}return db['VoiceQueueReport'][_0x2416('0x4d')]({'where':{'id':_0x5bae3b[_0x2416('0x4b')]['id']}})[_0x2416('0x2b')](handleEntityNotFound(_0x521740,null))['then'](saveUpdates(_0x5bae3b[_0x2416('0x4f')],null))[_0x2416('0x2b')](respondWithResult(_0x521740,null))[_0x2416('0x4a')](handleError(_0x521740,null));};exports[_0x2416('0x2c')]=function(_0x3132c6,_0x45456e){return db[_0x2416('0x33')][_0x2416('0x4d')]({'where':{'id':_0x3132c6[_0x2416('0x4b')]['id']}})[_0x2416('0x2b')](handleEntityNotFound(_0x45456e,null))[_0x2416('0x2b')](removeEntity(_0x45456e,null))[_0x2416('0x4a')](handleError(_0x45456e,null));};exports['describe']=function(_0x4fb11e,_0x54456e){return db[_0x2416('0x33')]['describe']()[_0x2416('0x2b')](respondWithResult(_0x54456e,null))[_0x2416('0x4a')](handleError(_0x54456e,null));};exports[_0x2416('0x51')]=function(_0x5f24c1,_0x20cef5){var _0x5f577d={},_0x5e8740={},_0x43a3ea={'count':0x0,'rows':[]};_0x5e8740[_0x2416('0x37')]=_[_0x2416('0x38')](db['VoiceQueueReport'][_0x2416('0x34')]);_0x5e8740[_0x2416('0x3a')]=_[_0x2416('0x38')](_0x5f24c1[_0x2416('0x3a')]);_0x5e8740[_0x2416('0x39')]=_[_0x2416('0x3c')](_0x5e8740[_0x2416('0x37')],_0x5e8740[_0x2416('0x3a')]);_0x5f577d[_0x2416('0x3b')]=_['intersection'](_0x5e8740['model'],qs[_0x2416('0x3d')](_0x5f24c1[_0x2416('0x3a')][_0x2416('0x3d')]));_0x5f577d[_0x2416('0x3b')]=_0x5f577d[_0x2416('0x3b')][_0x2416('0x3e')]?_0x5f577d[_0x2416('0x3b')]:_0x5e8740[_0x2416('0x37')];if(!_0x5f24c1['query'][_0x2416('0x3f')](_0x2416('0x40'))){_0x5f577d[_0x2416('0x25')]=qs[_0x2416('0x25')](_0x5f24c1[_0x2416('0x3a')][_0x2416('0x25')]);_0x5f577d['offset']=qs['offset'](_0x5f24c1[_0x2416('0x3a')]['offset']);}_0x5f577d['order']=qs[_0x2416('0x42')](_0x5f24c1[_0x2416('0x3a')][_0x2416('0x42')]);_0x5f577d[_0x2416('0x43')]=qs['filters'](_[_0x2416('0x44')](_0x5f24c1[_0x2416('0x3a')],_0x5e8740['filters']));if(_0x5f24c1[_0x2416('0x3a')][_0x2416('0x45')]){_0x5f577d[_0x2416('0x43')]=_['merge'](_0x5f577d['where'],{'$or':_[_0x2416('0x32')](_0x5f577d[_0x2416('0x3b')],function(_0x5c09ac){var _0x4e0260={};_0x4e0260[_0x5c09ac]={'$like':'%'+_0x5f24c1[_0x2416('0x3a')][_0x2416('0x45')]+'%'};return _0x4e0260;})});}_0x5f577d=_[_0x2416('0x46')]({},_0x5f577d,_0x5f24c1[_0x2416('0x48')]);var _0x281770={'where':_0x5f577d['where']};return db[_0x2416('0x33')][_0x2416('0x26')](_0x281770)[_0x2416('0x2b')](function(_0x17177a){_0x43a3ea[_0x2416('0x26')]=_0x17177a;if(_0x5f24c1[_0x2416('0x3a')][_0x2416('0x52')]){_0x5f577d[_0x2416('0x4c')]=[{'all':!![]}];}return db[_0x2416('0x33')][_0x2416('0x53')](_0x5f577d);})['then'](function(_0x36e696){_0x43a3ea[_0x2416('0x49')]=_0x36e696;return _0x43a3ea;})[_0x2416('0x2b')](respondWithFilteredResult(_0x20cef5,_0x5f577d,'getVoiceQueuesReport'))[_0x2416('0x4a')](handleError(_0x20cef5,null,'getVoiceQueuesReport'));};
\ No newline at end of file
+var _0x6b68=['desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','defaults','localhost','./voiceQueueReport.socket','register','sendStatus','status','end','offset','undefined','count','set','json','apply','reject','save','update','then','destroy','stack','name','send','index','map','rawAttributes','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','filters','pick','filter','where','merge','type','VIRTUAL','VoiceQueueReport','include','findAll','rows','catch','show','params','keys','options','create','body','find','describe','getVoiceQueuesReport','includeAll','eml-format','rimraf','moment','mustache','util','path','to-csv','ejs','fs-extra','squel'];(function(_0x42269a,_0x1f339c){var _0x4c455e=function(_0x1c50b4){while(--_0x1c50b4){_0x42269a['push'](_0x42269a['shift']());}};_0x4c455e(++_0x1f339c);}(_0x6b68,0xe3));var _0x86b6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6b68[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x86b6('0x0'));var rimraf=require(_0x86b6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x86b6('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x86b6('0x3'));var util=require(_0x86b6('0x4'));var path=require(_0x86b6('0x5'));var sox=require('sox');var csv=require(_0x86b6('0x6'));var ejs=require(_0x86b6('0x7'));var fs=require('fs');var fs_extra=require(_0x86b6('0x8'));var _=require('lodash');var squel=require(_0x86b6('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x86b6('0xa'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x86b6('0xb'));var authService=require(_0x86b6('0xc'));var qs=require(_0x86b6('0xd'));var as=require(_0x86b6('0xe'));var hardwareService=require(_0x86b6('0xf'));var logger=require(_0x86b6('0x10'))(_0x86b6('0x11'));var utils=require(_0x86b6('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x86b6('0x13'));var db=require('../../mysqldb')['db'];config[_0x86b6('0x14')]=_[_0x86b6('0x15')](config[_0x86b6('0x14')],{'host':_0x86b6('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x86b6('0x14')]));require(_0x86b6('0x17'))[_0x86b6('0x18')](socket);function respondWithStatusCode(_0x4ff574,_0x292bba){_0x292bba=_0x292bba||0xcc;return function(_0x1bddbd){if(_0x1bddbd){return _0x4ff574[_0x86b6('0x19')](_0x292bba);}return _0x4ff574[_0x86b6('0x1a')](_0x292bba)[_0x86b6('0x1b')]();};}function respondWithResult(_0x50a72b,_0x204585){_0x204585=_0x204585||0xc8;return function(_0x3c1fc9){if(_0x3c1fc9){return _0x50a72b[_0x86b6('0x1a')](_0x204585)['json'](_0x3c1fc9);}};}function respondWithFilteredResult(_0x571788,_0x465065){return function(_0x1d728e){if(_0x1d728e){var _0x48e056=typeof _0x465065[_0x86b6('0x1c')]===_0x86b6('0x1d')&&typeof _0x465065['limit']===_0x86b6('0x1d');var _0x36f509=_0x1d728e[_0x86b6('0x1e')];var _0x449e41=_0x48e056?0x0:_0x465065[_0x86b6('0x1c')];var _0x2024f3=_0x48e056?_0x1d728e['count']:_0x465065[_0x86b6('0x1c')]+_0x465065['limit'];var _0x3cc72b;if(_0x2024f3>=_0x36f509){_0x2024f3=_0x36f509;_0x3cc72b=0xc8;}else{_0x3cc72b=0xce;}_0x571788[_0x86b6('0x1a')](_0x3cc72b);return _0x571788[_0x86b6('0x1f')]('Content-Range',_0x449e41+'-'+_0x2024f3+'/'+_0x36f509)[_0x86b6('0x20')](_0x1d728e);}return null;};}function patchUpdates(_0x1cdd30){return function(_0x42ce5f){try{jsonpatch[_0x86b6('0x21')](_0x42ce5f,_0x1cdd30,!![]);}catch(_0x41a104){return BPromise[_0x86b6('0x22')](_0x41a104);}return _0x42ce5f[_0x86b6('0x23')]();};}function saveUpdates(_0x19c12d,_0x58a022){return function(_0x4e8304){if(_0x4e8304){return _0x4e8304[_0x86b6('0x24')](_0x19c12d)[_0x86b6('0x25')](function(_0x494eb3){return _0x494eb3;});}return null;};}function removeEntity(_0x2a4e95,_0x4f2e6e){return function(_0x4de93b){if(_0x4de93b){return _0x4de93b[_0x86b6('0x26')]()[_0x86b6('0x25')](function(){_0x2a4e95[_0x86b6('0x1a')](0xcc)[_0x86b6('0x1b')]();});}};}function handleEntityNotFound(_0x8dd13d,_0x5590c6){return function(_0x53ae4d){if(!_0x53ae4d){_0x8dd13d['sendStatus'](0x194);}return _0x53ae4d;};}function handleError(_0x1948cd,_0x1e28b9){_0x1e28b9=_0x1e28b9||0x1f4;return function(_0x73d9c2){logger['error'](_0x73d9c2[_0x86b6('0x27')]);if(_0x73d9c2[_0x86b6('0x28')]){delete _0x73d9c2[_0x86b6('0x28')];}_0x1948cd['status'](_0x1e28b9)[_0x86b6('0x29')](_0x73d9c2);};}exports[_0x86b6('0x2a')]=function(_0x26edcf,_0x556253){var _0x575d9b={},_0x250cb7={},_0x5e2041={'count':0x0,'rows':[]};var _0x1aeeb3=_[_0x86b6('0x2b')](db['VoiceQueueReport'][_0x86b6('0x2c')],function(_0x234b49){return{'name':_0x234b49['fieldName'],'type':_0x234b49['type'][_0x86b6('0x2d')]};});_0x250cb7[_0x86b6('0x2e')]=_[_0x86b6('0x2b')](_0x1aeeb3,_0x86b6('0x28'));_0x250cb7[_0x86b6('0x2f')]=_['keys'](_0x26edcf[_0x86b6('0x2f')]);_0x250cb7['filters']=_[_0x86b6('0x30')](_0x250cb7['model'],_0x250cb7[_0x86b6('0x2f')]);_0x575d9b[_0x86b6('0x31')]=_[_0x86b6('0x30')](_0x250cb7['model'],qs[_0x86b6('0x32')](_0x26edcf[_0x86b6('0x2f')][_0x86b6('0x32')]));_0x575d9b[_0x86b6('0x31')]=_0x575d9b[_0x86b6('0x31')][_0x86b6('0x33')]?_0x575d9b[_0x86b6('0x31')]:_0x250cb7[_0x86b6('0x2e')];if(!_0x26edcf[_0x86b6('0x2f')][_0x86b6('0x34')](_0x86b6('0x35'))){_0x575d9b[_0x86b6('0x36')]=qs['limit'](_0x26edcf[_0x86b6('0x2f')][_0x86b6('0x36')]);_0x575d9b[_0x86b6('0x1c')]=qs[_0x86b6('0x1c')](_0x26edcf[_0x86b6('0x2f')]['offset']);}_0x575d9b[_0x86b6('0x37')]=qs[_0x86b6('0x38')](_0x26edcf[_0x86b6('0x2f')]['sort']);_0x575d9b['where']=qs[_0x86b6('0x39')](_[_0x86b6('0x3a')](_0x26edcf[_0x86b6('0x2f')],_0x250cb7[_0x86b6('0x39')]),_0x1aeeb3);if(_0x26edcf[_0x86b6('0x2f')][_0x86b6('0x3b')]){_0x575d9b[_0x86b6('0x3c')]=_[_0x86b6('0x3d')](_0x575d9b['where'],{'$or':_['map'](_0x1aeeb3,function(_0x4ca772){if(_0x4ca772[_0x86b6('0x3e')]!==_0x86b6('0x3f')){var _0x2b59d5={};_0x2b59d5[_0x4ca772[_0x86b6('0x28')]]={'$like':'%'+_0x26edcf[_0x86b6('0x2f')][_0x86b6('0x3b')]+'%'};return _0x2b59d5;}})});}_0x575d9b=_[_0x86b6('0x3d')]({},_0x575d9b,_0x26edcf['options']);var _0x193519={'where':_0x575d9b[_0x86b6('0x3c')]};return db[_0x86b6('0x40')][_0x86b6('0x1e')](_0x193519)['then'](function(_0x43b05c){_0x5e2041[_0x86b6('0x1e')]=_0x43b05c;if(_0x26edcf[_0x86b6('0x2f')]['includeAll']){_0x575d9b[_0x86b6('0x41')]=[{'all':!![]}];}return db[_0x86b6('0x40')][_0x86b6('0x42')](_0x575d9b);})[_0x86b6('0x25')](function(_0x37db97){_0x5e2041[_0x86b6('0x43')]=_0x37db97;return _0x5e2041;})['then'](respondWithFilteredResult(_0x556253,_0x575d9b))[_0x86b6('0x44')](handleError(_0x556253,null));};exports[_0x86b6('0x45')]=function(_0xe0c036,_0x39f899){var _0x23f33f={'raw':![],'where':{'id':_0xe0c036[_0x86b6('0x46')]['id']}},_0x91b109={};_0x91b109[_0x86b6('0x2e')]=_['keys'](db['VoiceQueueReport'][_0x86b6('0x2c')]);_0x91b109['query']=_[_0x86b6('0x47')](_0xe0c036[_0x86b6('0x2f')]);_0x91b109[_0x86b6('0x39')]=_[_0x86b6('0x30')](_0x91b109[_0x86b6('0x2e')],_0x91b109['query']);_0x23f33f[_0x86b6('0x31')]=_[_0x86b6('0x30')](_0x91b109[_0x86b6('0x2e')],qs[_0x86b6('0x32')](_0xe0c036[_0x86b6('0x2f')][_0x86b6('0x32')]));_0x23f33f[_0x86b6('0x31')]=_0x23f33f[_0x86b6('0x31')][_0x86b6('0x33')]?_0x23f33f[_0x86b6('0x31')]:_0x91b109[_0x86b6('0x2e')];if(_0xe0c036[_0x86b6('0x2f')]['includeAll']){_0x23f33f['include']=[{'all':!![]}];}_0x23f33f=_['merge']({},_0x23f33f,_0xe0c036[_0x86b6('0x48')]);return db[_0x86b6('0x40')]['find'](_0x23f33f)[_0x86b6('0x25')](handleEntityNotFound(_0x39f899,null))[_0x86b6('0x25')](respondWithResult(_0x39f899,null))[_0x86b6('0x44')](handleError(_0x39f899,null));};exports[_0x86b6('0x49')]=function(_0x84b932,_0x471c63){return db[_0x86b6('0x40')]['create'](_0x84b932[_0x86b6('0x4a')],{})[_0x86b6('0x25')](respondWithResult(_0x471c63,0xc9))[_0x86b6('0x44')](handleError(_0x471c63,null));};exports['update']=function(_0x3a9b6e,_0x2cb3f0){if(_0x3a9b6e[_0x86b6('0x4a')]['id']){delete _0x3a9b6e[_0x86b6('0x4a')]['id'];}return db['VoiceQueueReport']['find']({'where':{'id':_0x3a9b6e['params']['id']}})[_0x86b6('0x25')](handleEntityNotFound(_0x2cb3f0,null))[_0x86b6('0x25')](saveUpdates(_0x3a9b6e[_0x86b6('0x4a')],null))[_0x86b6('0x25')](respondWithResult(_0x2cb3f0,null))[_0x86b6('0x44')](handleError(_0x2cb3f0,null));};exports[_0x86b6('0x26')]=function(_0x4f60f7,_0x437ff0){return db[_0x86b6('0x40')][_0x86b6('0x4b')]({'where':{'id':_0x4f60f7['params']['id']}})['then'](handleEntityNotFound(_0x437ff0,null))[_0x86b6('0x25')](removeEntity(_0x437ff0,null))['catch'](handleError(_0x437ff0,null));};exports[_0x86b6('0x4c')]=function(_0x11552c,_0x5e40a3){return db[_0x86b6('0x40')][_0x86b6('0x4c')]()[_0x86b6('0x25')](respondWithResult(_0x5e40a3,null))[_0x86b6('0x44')](handleError(_0x5e40a3,null));};exports[_0x86b6('0x4d')]=function(_0x4b3d43,_0x4c6f07){var _0x479bf0={},_0xe56ba5={},_0x109fc8={'count':0x0,'rows':[]};_0xe56ba5[_0x86b6('0x2e')]=_[_0x86b6('0x47')](db['VoiceQueueReport'][_0x86b6('0x2c')]);_0xe56ba5['query']=_[_0x86b6('0x47')](_0x4b3d43[_0x86b6('0x2f')]);_0xe56ba5['filters']=_[_0x86b6('0x30')](_0xe56ba5[_0x86b6('0x2e')],_0xe56ba5[_0x86b6('0x2f')]);_0x479bf0[_0x86b6('0x31')]=_[_0x86b6('0x30')](_0xe56ba5[_0x86b6('0x2e')],qs[_0x86b6('0x32')](_0x4b3d43[_0x86b6('0x2f')][_0x86b6('0x32')]));_0x479bf0['attributes']=_0x479bf0[_0x86b6('0x31')][_0x86b6('0x33')]?_0x479bf0['attributes']:_0xe56ba5[_0x86b6('0x2e')];if(!_0x4b3d43[_0x86b6('0x2f')][_0x86b6('0x34')](_0x86b6('0x35'))){_0x479bf0[_0x86b6('0x36')]=qs['limit'](_0x4b3d43[_0x86b6('0x2f')][_0x86b6('0x36')]);_0x479bf0['offset']=qs[_0x86b6('0x1c')](_0x4b3d43[_0x86b6('0x2f')][_0x86b6('0x1c')]);}_0x479bf0[_0x86b6('0x37')]=qs[_0x86b6('0x38')](_0x4b3d43[_0x86b6('0x2f')]['sort']);_0x479bf0[_0x86b6('0x3c')]=qs[_0x86b6('0x39')](_[_0x86b6('0x3a')](_0x4b3d43[_0x86b6('0x2f')],_0xe56ba5[_0x86b6('0x39')]));if(_0x4b3d43[_0x86b6('0x2f')][_0x86b6('0x3b')]){_0x479bf0[_0x86b6('0x3c')]=_[_0x86b6('0x3d')](_0x479bf0[_0x86b6('0x3c')],{'$or':_[_0x86b6('0x2b')](_0x479bf0['attributes'],function(_0x3b9004){var _0x45a6b7={};_0x45a6b7[_0x3b9004]={'$like':'%'+_0x4b3d43['query']['filter']+'%'};return _0x45a6b7;})});}_0x479bf0=_[_0x86b6('0x3d')]({},_0x479bf0,_0x4b3d43[_0x86b6('0x48')]);var _0x48c71d={'where':_0x479bf0[_0x86b6('0x3c')]};return db[_0x86b6('0x40')]['count'](_0x48c71d)[_0x86b6('0x25')](function(_0x4d352c){_0x109fc8[_0x86b6('0x1e')]=_0x4d352c;if(_0x4b3d43[_0x86b6('0x2f')][_0x86b6('0x4e')]){_0x479bf0['include']=[{'all':!![]}];}return db[_0x86b6('0x40')][_0x86b6('0x42')](_0x479bf0);})[_0x86b6('0x25')](function(_0x54bc4f){_0x109fc8[_0x86b6('0x43')]=_0x54bc4f;return _0x109fc8;})[_0x86b6('0x25')](respondWithFilteredResult(_0x4c6f07,_0x479bf0,_0x86b6('0x4d')))['catch'](handleError(_0x4c6f07,null,'getVoiceQueuesReport'));};
\ No newline at end of file
index 21425ff..d56fd90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fd2=['events','../../mysqldb','setMaxListeners','save','update','remove','exports'];(function(_0x541620,_0x571e01){var _0xd1719=function(_0x3504b9){while(--_0x3504b9){_0x541620['push'](_0x541620['shift']());}};_0xd1719(++_0x571e01);}(_0x5fd2,0x173));var _0x25fd=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x5fd2[_0x8c43de];return _0xa6591b;};'use strict';var EventEmitter=require(_0x25fd('0x0'));var VoiceQueueReport=require(_0x25fd('0x1'))['db']['VoiceQueueReport'];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x25fd('0x2')](0x0);var events={'afterCreate':_0x25fd('0x3'),'afterUpdate':_0x25fd('0x4'),'afterDestroy':_0x25fd('0x5')};function emitEvent(_0x2dd07f){return function(_0x2688f5,_0x163bb3,_0x3ccc05){VoiceQueueReportEvents['emit'](_0x2dd07f+':'+_0x2688f5['id'],_0x2688f5);VoiceQueueReportEvents['emit'](_0x2dd07f,_0x2688f5);_0x3ccc05(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module[_0x25fd('0x6')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0x668f=['save','update','remove','emit','hasOwnProperty','exports','events','VoiceQueueReport','setMaxListeners'];(function(_0x4d4334,_0x159e02){var _0x594988=function(_0x10fe51){while(--_0x10fe51){_0x4d4334['push'](_0x4d4334['shift']());}};_0x594988(++_0x159e02);}(_0x668f,0x69));var _0xf668=function(_0x4de723,_0x5e9fcb){_0x4de723=_0x4de723-0x0;var _0x398a4d=_0x668f[_0x4de723];return _0x398a4d;};'use strict';var EventEmitter=require(_0xf668('0x0'));var VoiceQueueReport=require('../../mysqldb')['db'][_0xf668('0x1')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0xf668('0x2')](0x0);var events={'afterCreate':_0xf668('0x3'),'afterUpdate':_0xf668('0x4'),'afterDestroy':_0xf668('0x5')};function emitEvent(_0x1f38df){return function(_0x2b30e4,_0xc003f6,_0x417ebf){VoiceQueueReportEvents[_0xf668('0x6')](_0x1f38df+':'+_0x2b30e4['id'],_0x2b30e4);VoiceQueueReportEvents[_0xf668('0x6')](_0x1f38df,_0x2b30e4);_0x417ebf(null);};}for(var e in events){if(events[_0xf668('0x7')](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module[_0xf668('0x8')]=VoiceQueueReportEvents;
\ No newline at end of file
index c177dbc..de955ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x213a=['path','rimraf','exports','VoiceQueueReport','report_queue','uniqueid','calleridnum','lodash','util','api','bluebird','request-promise'];(function(_0x32ca01,_0x4dd2c5){var _0x1da5a4=function(_0x474f95){while(--_0x474f95){_0x32ca01['push'](_0x32ca01['shift']());}};_0x1da5a4(++_0x4dd2c5);}(_0x213a,0x13f));var _0xa213=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0x213a[_0x2dadb9];return _0x2f0097;};'use strict';var _=require(_0xa213('0x0'));var util=require(_0xa213('0x1'));var logger=require('../../config/logger')(_0xa213('0x2'));var moment=require('moment');var BPromise=require(_0xa213('0x3'));var rp=require(_0xa213('0x4'));var fs=require('fs');var path=require(_0xa213('0x5'));var rimraf=require(_0xa213('0x6'));var config=require('../../config/environment');var attributes=require('./voiceQueueReport.attributes');module[_0xa213('0x7')]=function(_0xd4fc71,_0x45d487){return _0xd4fc71['define'](_0xa213('0x8'),attributes,{'tableName':_0xa213('0x9'),'paranoid':![],'indexes':[{'fields':[_0xa213('0xa')]},{'fields':[_0xa213('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xeb8a=['moment','bluebird','path','rimraf','../../config/environment','exports','define','report_queue','uniqueid','calleridnum','lodash','util','api'];(function(_0x297b84,_0x302bb6){var _0x12c17d=function(_0x1419de){while(--_0x1419de){_0x297b84['push'](_0x297b84['shift']());}};_0x12c17d(++_0x302bb6);}(_0xeb8a,0x15c));var _0xaeb8=function(_0x42b48b,_0x42f13b){_0x42b48b=_0x42b48b-0x0;var _0x20794a=_0xeb8a[_0x42b48b];return _0x20794a;};'use strict';var _=require(_0xaeb8('0x0'));var util=require(_0xaeb8('0x1'));var logger=require('../../config/logger')(_0xaeb8('0x2'));var moment=require(_0xaeb8('0x3'));var BPromise=require(_0xaeb8('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xaeb8('0x5'));var rimraf=require(_0xaeb8('0x6'));var config=require(_0xaeb8('0x7'));var attributes=require('./voiceQueueReport.attributes');module[_0xaeb8('0x8')]=function(_0x10d87f,_0x2fde75){return _0x10d87f[_0xaeb8('0x9')]('VoiceQueueReport',attributes,{'tableName':_0xaeb8('0xa'),'paranoid':![],'indexes':[{'fields':[_0xaeb8('0xb')]},{'fields':[_0xaeb8('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 11bb276..11c48dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcc5=['socket.io-emitter','./voiceQueueReport.socket','register','request','then','request\x20sent','debug','stringify','error','code','VoiceQueueReport,\x20%s,\x20%s','message','result','catch','GetVoiceQueueReport','findAll','options','raw','attributes','limit','include','map','model','CreateVoiceQueueReport','VoiceQueueReport','create','body','info','update','where','UpdateVoiceQueueReport','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost'];(function(_0x1019ea,_0x1e66a5){var _0x4c206c=function(_0x5d543a){while(--_0x5d543a){_0x1019ea['push'](_0x1019ea['shift']());}};_0x4c206c(++_0x1e66a5);}(_0xbcc5,0x153));var _0x5bcc=function(_0x43b164,_0x55f369){_0x43b164=_0x43b164-0x0;var _0x3e0f54=_0xbcc5[_0x43b164];return _0x3e0f54;};'use strict';var _=require(_0x5bcc('0x0'));var util=require('util');var moment=require(_0x5bcc('0x1'));var BPromise=require(_0x5bcc('0x2'));var rs=require(_0x5bcc('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5bcc('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x5bcc('0x5'))(_0x5bcc('0x6'));var config=require(_0x5bcc('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x5bcc('0x8')][_0x5bcc('0x9')]({'port':0x232a});config[_0x5bcc('0xa')]=_[_0x5bcc('0xb')](config['redis'],{'host':_0x5bcc('0xc'),'port':0x18eb});var socket=require(_0x5bcc('0xd'))(new Redis(config[_0x5bcc('0xa')]));require(_0x5bcc('0xe'))[_0x5bcc('0xf')](socket);function respondWithRpcPromise(_0x3dbc52,_0x324e93,_0x3c3aee){return new BPromise(function(_0x108be8,_0x260cc9){return client[_0x5bcc('0x10')](_0x3dbc52,_0x3c3aee)[_0x5bcc('0x11')](function(_0xec6ed7){logger['info']('VoiceQueueReport,\x20%s,\x20%s',_0x324e93,_0x5bcc('0x12'));logger[_0x5bcc('0x13')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x324e93,_0x5bcc('0x12'),JSON[_0x5bcc('0x14')](_0xec6ed7));if(_0xec6ed7[_0x5bcc('0x15')]){if(_0xec6ed7[_0x5bcc('0x15')][_0x5bcc('0x16')]===0x1f4){logger[_0x5bcc('0x15')](_0x5bcc('0x17'),_0x324e93,_0xec6ed7[_0x5bcc('0x15')][_0x5bcc('0x18')]);return _0x260cc9(_0xec6ed7['error'][_0x5bcc('0x18')]);}logger[_0x5bcc('0x15')](_0x5bcc('0x17'),_0x324e93,_0xec6ed7[_0x5bcc('0x15')]['message']);return _0x108be8(_0xec6ed7['error'][_0x5bcc('0x18')]);}else{logger['info']('VoiceQueueReport,\x20%s,\x20%s',_0x324e93,_0x5bcc('0x12'));_0x108be8(_0xec6ed7[_0x5bcc('0x19')][_0x5bcc('0x18')]);}})[_0x5bcc('0x1a')](function(_0x3e6230){logger[_0x5bcc('0x15')](_0x5bcc('0x17'),_0x324e93,_0x3e6230);_0x260cc9(_0x3e6230);});});}exports[_0x5bcc('0x1b')]=function(_0x16966e){var _0x1a4cee=this;return new Promise(function(_0x196048,_0xd58d98){return db['VoiceQueueReport'][_0x5bcc('0x1c')]({'raw':_0x16966e[_0x5bcc('0x1d')]?_0x16966e[_0x5bcc('0x1d')][_0x5bcc('0x1e')]===undefined?!![]:![]:!![],'where':_0x16966e[_0x5bcc('0x1d')]?_0x16966e[_0x5bcc('0x1d')]['where']||null:null,'attributes':_0x16966e[_0x5bcc('0x1d')]?_0x16966e[_0x5bcc('0x1d')][_0x5bcc('0x1f')]||null:null,'limit':_0x16966e[_0x5bcc('0x1d')]?_0x16966e['options'][_0x5bcc('0x20')]||null:null,'include':_0x16966e[_0x5bcc('0x1d')]?_0x16966e[_0x5bcc('0x1d')][_0x5bcc('0x21')]?_[_0x5bcc('0x22')](_0x16966e[_0x5bcc('0x1d')][_0x5bcc('0x21')],function(_0x3da9da){return{'model':db[_0x3da9da[_0x5bcc('0x23')]],'as':_0x3da9da['as'],'attributes':_0x3da9da[_0x5bcc('0x1f')],'include':_0x3da9da['include']?_[_0x5bcc('0x22')](_0x3da9da[_0x5bcc('0x21')],function(_0x16f0b5){return{'model':db[_0x16f0b5[_0x5bcc('0x23')]],'as':_0x16f0b5['as'],'attributes':_0x16f0b5[_0x5bcc('0x1f')],'include':_0x16f0b5[_0x5bcc('0x21')]?_['map'](_0x16f0b5['include'],function(_0x3cd23e){return{'model':db[_0x3cd23e[_0x5bcc('0x23')]],'as':_0x3cd23e['as'],'attributes':_0x3cd23e[_0x5bcc('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4be1dc){logger['info'](_0x5bcc('0x1b'),_0x16966e);logger[_0x5bcc('0x13')](_0x5bcc('0x1b'),_0x16966e,JSON[_0x5bcc('0x14')](_0x4be1dc));_0x196048(_0x4be1dc);})[_0x5bcc('0x1a')](function(_0x529a24){logger[_0x5bcc('0x15')](_0x5bcc('0x1b'),_0x529a24['message'],_0x16966e);_0xd58d98(_0x1a4cee['error'](0x1f4,_0x529a24[_0x5bcc('0x18')]));});});};exports[_0x5bcc('0x24')]=function(_0x39bfa9){var _0x2d21d3=this;return new Promise(function(_0x34861c,_0x1dc357){return db[_0x5bcc('0x25')][_0x5bcc('0x26')](_0x39bfa9[_0x5bcc('0x27')],{'raw':_0x39bfa9[_0x5bcc('0x1d')]?_0x39bfa9[_0x5bcc('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x5bcc('0x11')](function(_0x4acfe5){logger[_0x5bcc('0x28')](_0x5bcc('0x24'),_0x39bfa9);logger[_0x5bcc('0x13')](_0x5bcc('0x24'),_0x39bfa9,JSON[_0x5bcc('0x14')](_0x4acfe5));_0x34861c(_0x4acfe5);})['catch'](function(_0x329452){logger[_0x5bcc('0x15')](_0x5bcc('0x24'),_0x329452['message'],_0x39bfa9);_0x1dc357(_0x2d21d3[_0x5bcc('0x15')](0x1f4,_0x329452[_0x5bcc('0x18')]));});});};exports['UpdateVoiceQueueReport']=function(_0x440e01){var _0x30e64d=this;return new Promise(function(_0x1c1d03,_0x23aed1){return db[_0x5bcc('0x25')][_0x5bcc('0x29')](_0x440e01[_0x5bcc('0x27')],{'raw':_0x440e01[_0x5bcc('0x1d')]?_0x440e01[_0x5bcc('0x1d')][_0x5bcc('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x440e01['options']?_0x440e01[_0x5bcc('0x1d')][_0x5bcc('0x2a')]||null:null,'attributes':_0x440e01['options']?_0x440e01[_0x5bcc('0x1d')]['attributes']||null:null,'limit':_0x440e01[_0x5bcc('0x1d')]?_0x440e01[_0x5bcc('0x1d')][_0x5bcc('0x20')]||null:null})[_0x5bcc('0x11')](function(_0x490fa3){logger[_0x5bcc('0x28')](_0x5bcc('0x2b'),_0x440e01);logger[_0x5bcc('0x13')](_0x5bcc('0x2b'),_0x440e01,JSON[_0x5bcc('0x14')](_0x490fa3));_0x1c1d03(_0x490fa3);})[_0x5bcc('0x1a')](function(_0x3ca674){logger['error'](_0x5bcc('0x2b'),_0x3ca674[_0x5bcc('0x18')],_0x440e01);_0x23aed1(_0x30e64d[_0x5bcc('0x15')](0x1f4,_0x3ca674[_0x5bcc('0x18')]));});});};
\ No newline at end of file
+var _0x23ee=['catch','UpdateVoiceQueueReport','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','request','then','info','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceQueueReport,\x20%s,\x20%s','message','result','GetVoiceQueueReport','VoiceQueueReport','options','raw','where','attributes','limit','include','model','map','create','body','CreateVoiceQueueReport'];(function(_0x5f3f88,_0x562baf){var _0xd08119=function(_0x42dbf7){while(--_0x42dbf7){_0x5f3f88['push'](_0x5f3f88['shift']());}};_0xd08119(++_0x562baf);}(_0x23ee,0x1e6));var _0xe23e=function(_0x59616b,_0x38e534){_0x59616b=_0x59616b-0x0;var _0x5c4523=_0x23ee[_0x59616b];return _0x5c4523;};'use strict';var _=require(_0xe23e('0x0'));var util=require(_0xe23e('0x1'));var moment=require(_0xe23e('0x2'));var BPromise=require('bluebird');var rs=require(_0xe23e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe23e('0x4'))['db'];var utils=require(_0xe23e('0x5'));var logger=require(_0xe23e('0x6'))(_0xe23e('0x7'));var config=require(_0xe23e('0x8'));var jayson=require(_0xe23e('0x9'));var client=jayson[_0xe23e('0xa')][_0xe23e('0xb')]({'port':0x232a});config[_0xe23e('0xc')]=_[_0xe23e('0xd')](config[_0xe23e('0xc')],{'host':_0xe23e('0xe'),'port':0x18eb});var socket=require(_0xe23e('0xf'))(new Redis(config[_0xe23e('0xc')]));require(_0xe23e('0x10'))['register'](socket);function respondWithRpcPromise(_0x9f7b69,_0x4fb288,_0x197382){return new BPromise(function(_0x2b787d,_0x1f5f58){return client[_0xe23e('0x11')](_0x9f7b69,_0x197382)[_0xe23e('0x12')](function(_0x9b0a67){logger[_0xe23e('0x13')]('VoiceQueueReport,\x20%s,\x20%s',_0x4fb288,_0xe23e('0x14'));logger[_0xe23e('0x15')](_0xe23e('0x16'),_0x4fb288,_0xe23e('0x14'),JSON[_0xe23e('0x17')](_0x9b0a67));if(_0x9b0a67[_0xe23e('0x18')]){if(_0x9b0a67[_0xe23e('0x18')][_0xe23e('0x19')]===0x1f4){logger[_0xe23e('0x18')](_0xe23e('0x1a'),_0x4fb288,_0x9b0a67[_0xe23e('0x18')]['message']);return _0x1f5f58(_0x9b0a67[_0xe23e('0x18')][_0xe23e('0x1b')]);}logger[_0xe23e('0x18')]('VoiceQueueReport,\x20%s,\x20%s',_0x4fb288,_0x9b0a67[_0xe23e('0x18')][_0xe23e('0x1b')]);return _0x2b787d(_0x9b0a67[_0xe23e('0x18')][_0xe23e('0x1b')]);}else{logger[_0xe23e('0x13')](_0xe23e('0x1a'),_0x4fb288,_0xe23e('0x14'));_0x2b787d(_0x9b0a67[_0xe23e('0x1c')][_0xe23e('0x1b')]);}})['catch'](function(_0x21d3b8){logger[_0xe23e('0x18')](_0xe23e('0x1a'),_0x4fb288,_0x21d3b8);_0x1f5f58(_0x21d3b8);});});}exports[_0xe23e('0x1d')]=function(_0x425de0){var _0x28f89e=this;return new Promise(function(_0x2ea343,_0x30379f){return db[_0xe23e('0x1e')]['findAll']({'raw':_0x425de0[_0xe23e('0x1f')]?_0x425de0[_0xe23e('0x1f')][_0xe23e('0x20')]===undefined?!![]:![]:!![],'where':_0x425de0['options']?_0x425de0['options'][_0xe23e('0x21')]||null:null,'attributes':_0x425de0['options']?_0x425de0[_0xe23e('0x1f')][_0xe23e('0x22')]||null:null,'limit':_0x425de0['options']?_0x425de0[_0xe23e('0x1f')][_0xe23e('0x23')]||null:null,'include':_0x425de0[_0xe23e('0x1f')]?_0x425de0[_0xe23e('0x1f')][_0xe23e('0x24')]?_['map'](_0x425de0[_0xe23e('0x1f')][_0xe23e('0x24')],function(_0x47c14f){return{'model':db[_0x47c14f[_0xe23e('0x25')]],'as':_0x47c14f['as'],'attributes':_0x47c14f['attributes'],'include':_0x47c14f[_0xe23e('0x24')]?_[_0xe23e('0x26')](_0x47c14f[_0xe23e('0x24')],function(_0xbdd72a){return{'model':db[_0xbdd72a[_0xe23e('0x25')]],'as':_0xbdd72a['as'],'attributes':_0xbdd72a[_0xe23e('0x22')],'include':_0xbdd72a['include']?_[_0xe23e('0x26')](_0xbdd72a[_0xe23e('0x24')],function(_0xff6e10){return{'model':db[_0xff6e10[_0xe23e('0x25')]],'as':_0xff6e10['as'],'attributes':_0xff6e10[_0xe23e('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x172b9a){logger['info'](_0xe23e('0x1d'),_0x425de0);logger['debug'](_0xe23e('0x1d'),_0x425de0,JSON[_0xe23e('0x17')](_0x172b9a));_0x2ea343(_0x172b9a);})['catch'](function(_0x56d7d2){logger[_0xe23e('0x18')](_0xe23e('0x1d'),_0x56d7d2[_0xe23e('0x1b')],_0x425de0);_0x30379f(_0x28f89e[_0xe23e('0x18')](0x1f4,_0x56d7d2[_0xe23e('0x1b')]));});});};exports['CreateVoiceQueueReport']=function(_0x2dd29a){var _0x5927df=this;return new Promise(function(_0x394093,_0x4b4b46){return db[_0xe23e('0x1e')][_0xe23e('0x27')](_0x2dd29a[_0xe23e('0x28')],{'raw':_0x2dd29a[_0xe23e('0x1f')]?_0x2dd29a[_0xe23e('0x1f')]['raw']===undefined?!![]:![]:!![]})[_0xe23e('0x12')](function(_0x1eaae4){logger[_0xe23e('0x13')](_0xe23e('0x29'),_0x2dd29a);logger[_0xe23e('0x15')](_0xe23e('0x29'),_0x2dd29a,JSON[_0xe23e('0x17')](_0x1eaae4));_0x394093(_0x1eaae4);})[_0xe23e('0x2a')](function(_0x4667f3){logger[_0xe23e('0x18')](_0xe23e('0x29'),_0x4667f3[_0xe23e('0x1b')],_0x2dd29a);_0x4b4b46(_0x5927df[_0xe23e('0x18')](0x1f4,_0x4667f3[_0xe23e('0x1b')]));});});};exports[_0xe23e('0x2b')]=function(_0x246e21){var _0x2192e3=this;return new Promise(function(_0x4d4a52,_0x21a0ff){return db[_0xe23e('0x1e')]['update'](_0x246e21[_0xe23e('0x28')],{'raw':_0x246e21['options']?_0x246e21[_0xe23e('0x1f')][_0xe23e('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x246e21['options']?_0x246e21[_0xe23e('0x1f')][_0xe23e('0x21')]||null:null,'attributes':_0x246e21['options']?_0x246e21[_0xe23e('0x1f')]['attributes']||null:null,'limit':_0x246e21[_0xe23e('0x1f')]?_0x246e21[_0xe23e('0x1f')][_0xe23e('0x23')]||null:null})['then'](function(_0x2c20a5){logger[_0xe23e('0x13')](_0xe23e('0x2b'),_0x246e21);logger[_0xe23e('0x15')]('UpdateVoiceQueueReport',_0x246e21,JSON[_0xe23e('0x17')](_0x2c20a5));_0x4d4a52(_0x2c20a5);})['catch'](function(_0x2ab1c4){logger[_0xe23e('0x18')]('UpdateVoiceQueueReport',_0x2ab1c4[_0xe23e('0x1b')],_0x246e21);_0x21a0ff(_0x2192e3[_0xe23e('0x18')](0x1f4,_0x2ab1c4[_0xe23e('0x1b')]));});});};
\ No newline at end of file
index 4b0f4c1..1574b1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4dc=['register','voiceQueueReport:','./voiceQueueReport.events','save','emit','removeListener'];(function(_0x5a734f,_0xe8f138){var _0x2343cc=function(_0x46eccb){while(--_0x46eccb){_0x5a734f['push'](_0x5a734f['shift']());}};_0x2343cc(++_0xe8f138);}(_0xa4dc,0x16a));var _0xca4d=function(_0x1b6c6d,_0x2983b0){_0x1b6c6d=_0x1b6c6d-0x0;var _0x290d9d=_0xa4dc[_0x1b6c6d];return _0x290d9d;};'use strict';var VoiceQueueReportEvents=require(_0xca4d('0x0'));var events=[_0xca4d('0x1'),'remove','update'];function createListener(_0x3e9b62,_0x3e51a4){return function(_0xf35655){_0x3e51a4[_0xca4d('0x2')](_0x3e9b62,_0xf35655);};}function removeListener(_0x22d0cf,_0x504f4a){return function(){VoiceQueueReportEvents[_0xca4d('0x3')](_0x22d0cf,_0x504f4a);};}exports[_0xca4d('0x4')]=function(_0x1b60f4){for(var _0x51470b=0x0,_0x299f58=events['length'];_0x51470b<_0x299f58;_0x51470b++){var _0x35b21a=events[_0x51470b];var _0x2fa52a=createListener(_0xca4d('0x5')+_0x35b21a,_0x1b60f4);VoiceQueueReportEvents['on'](_0x35b21a,_0x2fa52a);}};
\ No newline at end of file
+var _0x31c2=['removeListener','register','length','voiceQueueReport:','./voiceQueueReport.events','save','remove','update','emit'];(function(_0x20ecae,_0x14c0aa){var _0x2b9caf=function(_0x4bad11){while(--_0x4bad11){_0x20ecae['push'](_0x20ecae['shift']());}};_0x2b9caf(++_0x14c0aa);}(_0x31c2,0x1e1));var _0x231c=function(_0x26ecdc,_0x5c1f52){_0x26ecdc=_0x26ecdc-0x0;var _0x8b09c3=_0x31c2[_0x26ecdc];return _0x8b09c3;};'use strict';var VoiceQueueReportEvents=require(_0x231c('0x0'));var events=[_0x231c('0x1'),_0x231c('0x2'),_0x231c('0x3')];function createListener(_0x1c57c9,_0x7e36a0){return function(_0xa1faa4){_0x7e36a0[_0x231c('0x4')](_0x1c57c9,_0xa1faa4);};}function removeListener(_0x5b0b0a,_0x59f232){return function(){VoiceQueueReportEvents[_0x231c('0x5')](_0x5b0b0a,_0x59f232);};}exports[_0x231c('0x6')]=function(_0x1f3f7d){for(var _0x219c3f=0x0,_0x48bfb2=events[_0x231c('0x7')];_0x219c3f<_0x48bfb2;_0x219c3f++){var _0x49ff9e=events[_0x219c3f];var _0x439df8=createListener(_0x231c('0x8')+_0x49ff9e,_0x1f3f7d);VoiceQueueReportEvents['on'](_0x49ff9e,_0x439df8);}};
\ No newline at end of file
index 6bb2c8a..b2f5938 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf5a=['update','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller','isAuthenticated','get','/:id','show','post','create','put'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xaf5a,0x144));var _0xaaf5=function(_0xfc7019,_0x277c9e){_0xfc7019=_0xfc7019-0x0;var _0x2af8f4=_0xaf5a[_0xfc7019];return _0x2af8f4;};'use strict';var multer=require('multer');var util=require(_0xaaf5('0x0'));var path=require('path');var timeout=require(_0xaaf5('0x1'));var express=require(_0xaaf5('0x2'));var router=express[_0xaaf5('0x3')]();var fs_extra=require(_0xaaf5('0x4'));var auth=require(_0xaaf5('0x5'));var interaction=require(_0xaaf5('0x6'));var config=require(_0xaaf5('0x7'));var controller=require(_0xaaf5('0x8'));router['get']('/',auth[_0xaaf5('0x9')](),controller['index']);router[_0xaaf5('0xa')](_0xaaf5('0xb'),auth[_0xaaf5('0x9')](),controller[_0xaaf5('0xc')]);router[_0xaaf5('0xd')]('/',auth['isAuthenticated'](),controller[_0xaaf5('0xe')]);router[_0xaaf5('0xf')](_0xaaf5('0xb'),auth['isAuthenticated'](),controller[_0xaaf5('0x10')]);router[_0xaaf5('0x11')](_0xaaf5('0xb'),auth[_0xaaf5('0x9')](),controller[_0xaaf5('0x12')]);module[_0xaaf5('0x13')]=router;
\ No newline at end of file
+var _0x5e40=['create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../config/environment','./voiceQueuesLog.controller','isAuthenticated','index','show','post'];(function(_0x430503,_0x2757c1){var _0x4c20a0=function(_0xc91d22){while(--_0xc91d22){_0x430503['push'](_0x430503['shift']());}};_0x4c20a0(++_0x2757c1);}(_0x5e40,0x1a4));var _0x05e4=function(_0x576c1e,_0x49c1d6){_0x576c1e=_0x576c1e-0x0;var _0x33a3c3=_0x5e40[_0x576c1e];return _0x33a3c3;};'use strict';var multer=require(_0x05e4('0x0'));var util=require(_0x05e4('0x1'));var path=require('path');var timeout=require(_0x05e4('0x2'));var express=require(_0x05e4('0x3'));var router=express[_0x05e4('0x4')]();var fs_extra=require(_0x05e4('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x05e4('0x6'));var controller=require(_0x05e4('0x7'));router['get']('/',auth[_0x05e4('0x8')](),controller[_0x05e4('0x9')]);router['get']('/:id',auth[_0x05e4('0x8')](),controller[_0x05e4('0xa')]);router[_0x05e4('0xb')]('/',auth[_0x05e4('0x8')](),controller[_0x05e4('0xc')]);router[_0x05e4('0xd')]('/:id',auth[_0x05e4('0x8')](),controller[_0x05e4('0xe')]);router[_0x05e4('0xf')]('/:id',auth[_0x05e4('0x8')](),controller[_0x05e4('0x10')]);module[_0x05e4('0x11')]=router;
\ No newline at end of file
index 84b09de..99205ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa24b=['STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','sequelize','moment','exports'];(function(_0x5db65f,_0xf89cc8){var _0x34fb4b=function(_0x7c641){while(--_0x7c641){_0x5db65f['push'](_0x5db65f['shift']());}};_0x34fb4b(++_0xf89cc8);}(_0xa24b,0x1cb));var _0xba24=function(_0x2989a4,_0x4b47de){_0x2989a4=_0x2989a4-0x0;var _0x230835=_0xa24b[_0x2989a4];return _0x230835;};'use strict';var Sequelize=require(_0xba24('0x0'));var moment=require(_0xba24('0x1'));module[_0xba24('0x2')]={'time':{'type':Sequelize[_0xba24('0x3')]},'callid':{'type':Sequelize[_0xba24('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0xba24('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xba24('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xba24('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0xba24('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xba24('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xba24('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xba24('0x4')],'allowNull':![],'defaultValue':moment()[_0xba24('0x5')](_0xba24('0x6'))}};
\ No newline at end of file
+var _0x6bf6=['STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','sequelize','moment','exports'];(function(_0x4bc39e,_0xba18dd){var _0x1a75d9=function(_0x1b63df){while(--_0x1b63df){_0x4bc39e['push'](_0x4bc39e['shift']());}};_0x1a75d9(++_0xba18dd);}(_0x6bf6,0x11c));var _0x66bf=function(_0x59befa,_0x4af99b){_0x59befa=_0x59befa-0x0;var _0x1dd63d=_0x6bf6[_0x59befa];return _0x1dd63d;};'use strict';var Sequelize=require(_0x66bf('0x0'));var moment=require(_0x66bf('0x1'));module[_0x66bf('0x2')]={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize[_0x66bf('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x66bf('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x66bf('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x66bf('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x66bf('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x66bf('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x66bf('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x66bf('0x4')],'allowNull':![],'defaultValue':moment()[_0x66bf('0x5')](_0x66bf('0x6'))}};
\ No newline at end of file
index 7b36efc..5ae35f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa943=['path','sox','to-csv','fs-extra','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','then','destroy','end','error','stack','name','send','map','VoiceQueuesLog','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','params','rawAttributes','includeAll','find','create','body','catch','update','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util'];(function(_0x19e9dc,_0x4f691d){var _0x2874ff=function(_0x7fea03){while(--_0x7fea03){_0x19e9dc['push'](_0x19e9dc['shift']());}};_0x2874ff(++_0x4f691d);}(_0xa943,0x121));var _0x3a94=function(_0xc512f5,_0x1439d5){_0xc512f5=_0xc512f5-0x0;var _0x138117=_0xa943[_0xc512f5];return _0x138117;};'use strict';var emlformat=require(_0x3a94('0x0'));var rimraf=require(_0x3a94('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3a94('0x2'));var rp=require('request-promise');var moment=require(_0x3a94('0x3'));var BPromise=require(_0x3a94('0x4'));var Mustache=require(_0x3a94('0x5'));var util=require(_0x3a94('0x6'));var path=require(_0x3a94('0x7'));var sox=require(_0x3a94('0x8'));var csv=require(_0x3a94('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3a94('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x3a94('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x3a94('0x9'));var querystring=require(_0x3a94('0xc'));var Papa=require(_0x3a94('0xd'));var Redis=require(_0x3a94('0xe'));var authService=require(_0x3a94('0xf'));var qs=require(_0x3a94('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3a94('0x11'));var logger=require(_0x3a94('0x12'))(_0x3a94('0x13'));var utils=require('../../config/utils');var config=require(_0x3a94('0x14'));var licenseUtil=require(_0x3a94('0x15'));var db=require(_0x3a94('0x16'))['db'];function respondWithStatusCode(_0x1bfac8,_0x5adea1){_0x5adea1=_0x5adea1||0xcc;return function(_0x533f5b){if(_0x533f5b){return _0x1bfac8[_0x3a94('0x17')](_0x5adea1);}return _0x1bfac8['status'](_0x5adea1)['end']();};}function respondWithResult(_0x28e11e,_0x3b0f5a){_0x3b0f5a=_0x3b0f5a||0xc8;return function(_0x17b0b9){if(_0x17b0b9){return _0x28e11e[_0x3a94('0x18')](_0x3b0f5a)[_0x3a94('0x19')](_0x17b0b9);}};}function respondWithFilteredResult(_0x543eff,_0x27e096){return function(_0x4758fa){if(_0x4758fa){var _0x208956=typeof _0x27e096[_0x3a94('0x1a')]===_0x3a94('0x1b')&&typeof _0x27e096['limit']===_0x3a94('0x1b');var _0x3d5abf=_0x4758fa['count'];var _0x50d3a2=_0x208956?0x0:_0x27e096[_0x3a94('0x1a')];var _0x475347=_0x208956?_0x4758fa[_0x3a94('0x1c')]:_0x27e096['offset']+_0x27e096[_0x3a94('0x1d')];var _0x166d33;if(_0x475347>=_0x3d5abf){_0x475347=_0x3d5abf;_0x166d33=0xc8;}else{_0x166d33=0xce;}_0x543eff[_0x3a94('0x18')](_0x166d33);return _0x543eff[_0x3a94('0x1e')](_0x3a94('0x1f'),_0x50d3a2+'-'+_0x475347+'/'+_0x3d5abf)[_0x3a94('0x19')](_0x4758fa);}return null;};}function patchUpdates(_0x52b7f8){return function(_0x535a08){try{jsonpatch[_0x3a94('0x20')](_0x535a08,_0x52b7f8,!![]);}catch(_0x42456c){return BPromise[_0x3a94('0x21')](_0x42456c);}return _0x535a08['save']();};}function saveUpdates(_0x27524a,_0xc19118){return function(_0x26eee9){if(_0x26eee9){return _0x26eee9['update'](_0x27524a)[_0x3a94('0x22')](function(_0x44a7b6){return _0x44a7b6;});}return null;};}function removeEntity(_0x5c8030,_0x25b59d){return function(_0x56ac3c){if(_0x56ac3c){return _0x56ac3c[_0x3a94('0x23')]()['then'](function(){_0x5c8030[_0x3a94('0x18')](0xcc)[_0x3a94('0x24')]();});}};}function handleEntityNotFound(_0x2a59e7,_0x2286f5){return function(_0x2ba720){if(!_0x2ba720){_0x2a59e7[_0x3a94('0x17')](0x194);}return _0x2ba720;};}function handleError(_0x33c265,_0x322c08){_0x322c08=_0x322c08||0x1f4;return function(_0x12ffaf){logger[_0x3a94('0x25')](_0x12ffaf[_0x3a94('0x26')]);if(_0x12ffaf[_0x3a94('0x27')]){delete _0x12ffaf[_0x3a94('0x27')];}_0x33c265[_0x3a94('0x18')](_0x322c08)[_0x3a94('0x28')](_0x12ffaf);};}exports['index']=function(_0x11c9f9,_0x556342){var _0x2f4a19={},_0x4d159c={},_0x2395b4={'count':0x0,'rows':[]};var _0x213be6=_[_0x3a94('0x29')](db[_0x3a94('0x2a')]['rawAttributes'],function(_0x2e03ab){return{'name':_0x2e03ab[_0x3a94('0x2b')],'type':_0x2e03ab[_0x3a94('0x2c')][_0x3a94('0x2d')]};});_0x4d159c[_0x3a94('0x2e')]=_['map'](_0x213be6,_0x3a94('0x27'));_0x4d159c['query']=_[_0x3a94('0x2f')](_0x11c9f9[_0x3a94('0x30')]);_0x4d159c[_0x3a94('0x31')]=_['intersection'](_0x4d159c[_0x3a94('0x2e')],_0x4d159c[_0x3a94('0x30')]);_0x2f4a19[_0x3a94('0x32')]=_[_0x3a94('0x33')](_0x4d159c[_0x3a94('0x2e')],qs[_0x3a94('0x34')](_0x11c9f9[_0x3a94('0x30')][_0x3a94('0x34')]));_0x2f4a19[_0x3a94('0x32')]=_0x2f4a19[_0x3a94('0x32')][_0x3a94('0x35')]?_0x2f4a19['attributes']:_0x4d159c[_0x3a94('0x2e')];if(!_0x11c9f9['query'][_0x3a94('0x36')](_0x3a94('0x37'))){_0x2f4a19['limit']=qs[_0x3a94('0x1d')](_0x11c9f9[_0x3a94('0x30')][_0x3a94('0x1d')]);_0x2f4a19[_0x3a94('0x1a')]=qs[_0x3a94('0x1a')](_0x11c9f9['query']['offset']);}_0x2f4a19[_0x3a94('0x38')]=qs[_0x3a94('0x39')](_0x11c9f9[_0x3a94('0x30')][_0x3a94('0x39')]);_0x2f4a19[_0x3a94('0x3a')]=qs[_0x3a94('0x31')](_[_0x3a94('0x3b')](_0x11c9f9['query'],_0x4d159c[_0x3a94('0x31')]),_0x213be6);if(_0x11c9f9['query'][_0x3a94('0x3c')]){_0x2f4a19[_0x3a94('0x3a')]=_[_0x3a94('0x3d')](_0x2f4a19[_0x3a94('0x3a')],{'$or':_[_0x3a94('0x29')](_0x213be6,function(_0x39f978){if(_0x39f978[_0x3a94('0x2c')]!==_0x3a94('0x3e')){var _0x1a49e1={};_0x1a49e1[_0x39f978['name']]={'$like':'%'+_0x11c9f9[_0x3a94('0x30')]['filter']+'%'};return _0x1a49e1;}})});}_0x2f4a19=_[_0x3a94('0x3d')]({},_0x2f4a19,_0x11c9f9[_0x3a94('0x3f')]);var _0x4e4b42={'where':_0x2f4a19[_0x3a94('0x3a')]};return db['VoiceQueuesLog'][_0x3a94('0x1c')](_0x4e4b42)[_0x3a94('0x22')](function(_0x33fb81){_0x2395b4[_0x3a94('0x1c')]=_0x33fb81;if(_0x11c9f9[_0x3a94('0x30')]['includeAll']){_0x2f4a19[_0x3a94('0x40')]=[{'all':!![]}];}return db[_0x3a94('0x2a')][_0x3a94('0x41')](_0x2f4a19);})[_0x3a94('0x22')](function(_0x567a98){_0x2395b4['rows']=_0x567a98;return _0x2395b4;})['then'](respondWithFilteredResult(_0x556342,_0x2f4a19))['catch'](handleError(_0x556342,null));};exports['show']=function(_0x497fc5,_0x2dffb7){var _0x3b47e0={'raw':!![],'where':{'id':_0x497fc5[_0x3a94('0x42')]['id']}},_0x390f36={};_0x390f36[_0x3a94('0x2e')]=_[_0x3a94('0x2f')](db['VoiceQueuesLog'][_0x3a94('0x43')]);_0x390f36[_0x3a94('0x30')]=_['keys'](_0x497fc5[_0x3a94('0x30')]);_0x390f36['filters']=_['intersection'](_0x390f36[_0x3a94('0x2e')],_0x390f36[_0x3a94('0x30')]);_0x3b47e0[_0x3a94('0x32')]=_[_0x3a94('0x33')](_0x390f36[_0x3a94('0x2e')],qs[_0x3a94('0x34')](_0x497fc5[_0x3a94('0x30')][_0x3a94('0x34')]));_0x3b47e0['attributes']=_0x3b47e0[_0x3a94('0x32')][_0x3a94('0x35')]?_0x3b47e0[_0x3a94('0x32')]:_0x390f36[_0x3a94('0x2e')];if(_0x497fc5[_0x3a94('0x30')][_0x3a94('0x44')]){_0x3b47e0[_0x3a94('0x40')]=[{'all':!![]}];}_0x3b47e0=_[_0x3a94('0x3d')]({},_0x3b47e0,_0x497fc5[_0x3a94('0x3f')]);return db[_0x3a94('0x2a')][_0x3a94('0x45')](_0x3b47e0)[_0x3a94('0x22')](handleEntityNotFound(_0x2dffb7,null))[_0x3a94('0x22')](respondWithResult(_0x2dffb7,null))['catch'](handleError(_0x2dffb7,null));};exports[_0x3a94('0x46')]=function(_0x42ff3b,_0xb7a774){return db['VoiceQueuesLog'][_0x3a94('0x46')](_0x42ff3b[_0x3a94('0x47')],{})[_0x3a94('0x22')](respondWithResult(_0xb7a774,0xc9))[_0x3a94('0x48')](handleError(_0xb7a774,null));};exports[_0x3a94('0x49')]=function(_0x522601,_0x82ad41){if(_0x522601[_0x3a94('0x47')]['id']){delete _0x522601['body']['id'];}return db['VoiceQueuesLog']['find']({'where':{'id':_0x522601[_0x3a94('0x42')]['id']}})[_0x3a94('0x22')](handleEntityNotFound(_0x82ad41,null))[_0x3a94('0x22')](saveUpdates(_0x522601[_0x3a94('0x47')],null))[_0x3a94('0x22')](respondWithResult(_0x82ad41,null))['catch'](handleError(_0x82ad41,null));};exports[_0x3a94('0x23')]=function(_0x50e0a0,_0x16a1b1){return db[_0x3a94('0x2a')][_0x3a94('0x45')]({'where':{'id':_0x50e0a0[_0x3a94('0x42')]['id']}})['then'](handleEntityNotFound(_0x16a1b1,null))[_0x3a94('0x22')](removeEntity(_0x16a1b1,null))[_0x3a94('0x48')](handleError(_0x16a1b1,null));};
\ No newline at end of file
+var _0xb86d=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','Content-Range','reject','save','then','destroy','end','sendStatus','error','name','send','index','map','VoiceQueuesLog','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','count','includeAll','findAll','rows','catch','show','keys','find','create','body','params','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','../../components/auth/service'];(function(_0x1bccb3,_0x5400d9){var _0x5079fa=function(_0x31fcb0){while(--_0x31fcb0){_0x1bccb3['push'](_0x1bccb3['shift']());}};_0x5079fa(++_0x5400d9);}(_0xb86d,0x158));var _0xdb86=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xb86d[_0x21a9d9];return _0x46adce;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdb86('0x0'));var zipdir=require(_0xdb86('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xdb86('0x2'));var moment=require('moment');var BPromise=require(_0xdb86('0x3'));var Mustache=require(_0xdb86('0x4'));var util=require(_0xdb86('0x5'));var path=require(_0xdb86('0x6'));var sox=require(_0xdb86('0x7'));var csv=require(_0xdb86('0x8'));var ejs=require(_0xdb86('0x9'));var fs=require('fs');var fs_extra=require(_0xdb86('0xa'));var _=require(_0xdb86('0xb'));var squel=require(_0xdb86('0xc'));var crypto=require(_0xdb86('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xdb86('0x8'));var querystring=require('querystring');var Papa=require(_0xdb86('0xe'));var Redis=require('ioredis');var authService=require(_0xdb86('0xf'));var qs=require(_0xdb86('0x10'));var as=require(_0xdb86('0x11'));var hardwareService=require(_0xdb86('0x12'));var logger=require(_0xdb86('0x13'))(_0xdb86('0x14'));var utils=require(_0xdb86('0x15'));var config=require(_0xdb86('0x16'));var licenseUtil=require(_0xdb86('0x17'));var db=require(_0xdb86('0x18'))['db'];function respondWithStatusCode(_0x4999b5,_0x55c6ec){_0x55c6ec=_0x55c6ec||0xcc;return function(_0x33edf6){if(_0x33edf6){return _0x4999b5['sendStatus'](_0x55c6ec);}return _0x4999b5[_0xdb86('0x19')](_0x55c6ec)['end']();};}function respondWithResult(_0x5f2caf,_0x129def){_0x129def=_0x129def||0xc8;return function(_0x4f8221){if(_0x4f8221){return _0x5f2caf[_0xdb86('0x19')](_0x129def)[_0xdb86('0x1a')](_0x4f8221);}};}function respondWithFilteredResult(_0x3996de,_0x2192a4){return function(_0x47cd56){if(_0x47cd56){var _0x5875da=typeof _0x2192a4[_0xdb86('0x1b')]==='undefined'&&typeof _0x2192a4['limit']===_0xdb86('0x1c');var _0x3489e1=_0x47cd56['count'];var _0x58f790=_0x5875da?0x0:_0x2192a4['offset'];var _0x39d39d=_0x5875da?_0x47cd56['count']:_0x2192a4[_0xdb86('0x1b')]+_0x2192a4[_0xdb86('0x1d')];var _0x2cc454;if(_0x39d39d>=_0x3489e1){_0x39d39d=_0x3489e1;_0x2cc454=0xc8;}else{_0x2cc454=0xce;}_0x3996de[_0xdb86('0x19')](_0x2cc454);return _0x3996de['set'](_0xdb86('0x1e'),_0x58f790+'-'+_0x39d39d+'/'+_0x3489e1)[_0xdb86('0x1a')](_0x47cd56);}return null;};}function patchUpdates(_0x142476){return function(_0x4dd5ba){try{jsonpatch['apply'](_0x4dd5ba,_0x142476,!![]);}catch(_0x7b5e0b){return BPromise[_0xdb86('0x1f')](_0x7b5e0b);}return _0x4dd5ba[_0xdb86('0x20')]();};}function saveUpdates(_0x2bd63a,_0x1f1284){return function(_0x54109a){if(_0x54109a){return _0x54109a['update'](_0x2bd63a)[_0xdb86('0x21')](function(_0x8c2eb7){return _0x8c2eb7;});}return null;};}function removeEntity(_0x479671,_0x92e918){return function(_0x279e0e){if(_0x279e0e){return _0x279e0e[_0xdb86('0x22')]()[_0xdb86('0x21')](function(){_0x479671[_0xdb86('0x19')](0xcc)[_0xdb86('0x23')]();});}};}function handleEntityNotFound(_0x3dfed8,_0x54d1b3){return function(_0x28f9be){if(!_0x28f9be){_0x3dfed8[_0xdb86('0x24')](0x194);}return _0x28f9be;};}function handleError(_0x1da0ad,_0x1b2e8a){_0x1b2e8a=_0x1b2e8a||0x1f4;return function(_0x2e06aa){logger[_0xdb86('0x25')](_0x2e06aa['stack']);if(_0x2e06aa['name']){delete _0x2e06aa[_0xdb86('0x26')];}_0x1da0ad[_0xdb86('0x19')](_0x1b2e8a)[_0xdb86('0x27')](_0x2e06aa);};}exports[_0xdb86('0x28')]=function(_0x53abff,_0x1b74eb){var _0x5a449c={},_0x578062={},_0x42a1c4={'count':0x0,'rows':[]};var _0xd6ad9e=_[_0xdb86('0x29')](db[_0xdb86('0x2a')][_0xdb86('0x2b')],function(_0x4320d6){return{'name':_0x4320d6[_0xdb86('0x2c')],'type':_0x4320d6[_0xdb86('0x2d')]['key']};});_0x578062[_0xdb86('0x2e')]=_['map'](_0xd6ad9e,_0xdb86('0x26'));_0x578062[_0xdb86('0x2f')]=_['keys'](_0x53abff['query']);_0x578062[_0xdb86('0x30')]=_[_0xdb86('0x31')](_0x578062[_0xdb86('0x2e')],_0x578062['query']);_0x5a449c[_0xdb86('0x32')]=_[_0xdb86('0x31')](_0x578062[_0xdb86('0x2e')],qs[_0xdb86('0x33')](_0x53abff[_0xdb86('0x2f')][_0xdb86('0x33')]));_0x5a449c[_0xdb86('0x32')]=_0x5a449c[_0xdb86('0x32')][_0xdb86('0x34')]?_0x5a449c[_0xdb86('0x32')]:_0x578062[_0xdb86('0x2e')];if(!_0x53abff[_0xdb86('0x2f')][_0xdb86('0x35')](_0xdb86('0x36'))){_0x5a449c['limit']=qs[_0xdb86('0x1d')](_0x53abff[_0xdb86('0x2f')][_0xdb86('0x1d')]);_0x5a449c[_0xdb86('0x1b')]=qs['offset'](_0x53abff[_0xdb86('0x2f')][_0xdb86('0x1b')]);}_0x5a449c['order']=qs[_0xdb86('0x37')](_0x53abff['query']['sort']);_0x5a449c[_0xdb86('0x38')]=qs[_0xdb86('0x30')](_[_0xdb86('0x39')](_0x53abff[_0xdb86('0x2f')],_0x578062['filters']),_0xd6ad9e);if(_0x53abff[_0xdb86('0x2f')][_0xdb86('0x3a')]){_0x5a449c[_0xdb86('0x38')]=_['merge'](_0x5a449c[_0xdb86('0x38')],{'$or':_[_0xdb86('0x29')](_0xd6ad9e,function(_0x5e0b27){if(_0x5e0b27[_0xdb86('0x2d')]!==_0xdb86('0x3b')){var _0x4466ec={};_0x4466ec[_0x5e0b27[_0xdb86('0x26')]]={'$like':'%'+_0x53abff['query'][_0xdb86('0x3a')]+'%'};return _0x4466ec;}})});}_0x5a449c=_[_0xdb86('0x3c')]({},_0x5a449c,_0x53abff['options']);var _0xd27a11={'where':_0x5a449c['where']};return db[_0xdb86('0x2a')][_0xdb86('0x3d')](_0xd27a11)['then'](function(_0x4b105b){_0x42a1c4[_0xdb86('0x3d')]=_0x4b105b;if(_0x53abff[_0xdb86('0x2f')][_0xdb86('0x3e')]){_0x5a449c['include']=[{'all':!![]}];}return db[_0xdb86('0x2a')][_0xdb86('0x3f')](_0x5a449c);})[_0xdb86('0x21')](function(_0x1afd89){_0x42a1c4[_0xdb86('0x40')]=_0x1afd89;return _0x42a1c4;})['then'](respondWithFilteredResult(_0x1b74eb,_0x5a449c))[_0xdb86('0x41')](handleError(_0x1b74eb,null));};exports[_0xdb86('0x42')]=function(_0x2dd165,_0x55af1f){var _0x5bc4b5={'raw':!![],'where':{'id':_0x2dd165['params']['id']}},_0x3ec063={};_0x3ec063[_0xdb86('0x2e')]=_[_0xdb86('0x43')](db[_0xdb86('0x2a')]['rawAttributes']);_0x3ec063[_0xdb86('0x2f')]=_[_0xdb86('0x43')](_0x2dd165['query']);_0x3ec063[_0xdb86('0x30')]=_[_0xdb86('0x31')](_0x3ec063[_0xdb86('0x2e')],_0x3ec063[_0xdb86('0x2f')]);_0x5bc4b5[_0xdb86('0x32')]=_[_0xdb86('0x31')](_0x3ec063['model'],qs[_0xdb86('0x33')](_0x2dd165[_0xdb86('0x2f')][_0xdb86('0x33')]));_0x5bc4b5[_0xdb86('0x32')]=_0x5bc4b5[_0xdb86('0x32')][_0xdb86('0x34')]?_0x5bc4b5[_0xdb86('0x32')]:_0x3ec063['model'];if(_0x2dd165[_0xdb86('0x2f')][_0xdb86('0x3e')]){_0x5bc4b5['include']=[{'all':!![]}];}_0x5bc4b5=_['merge']({},_0x5bc4b5,_0x2dd165['options']);return db['VoiceQueuesLog'][_0xdb86('0x44')](_0x5bc4b5)[_0xdb86('0x21')](handleEntityNotFound(_0x55af1f,null))[_0xdb86('0x21')](respondWithResult(_0x55af1f,null))[_0xdb86('0x41')](handleError(_0x55af1f,null));};exports['create']=function(_0x1ba6dc,_0x155f62){return db[_0xdb86('0x2a')][_0xdb86('0x45')](_0x1ba6dc[_0xdb86('0x46')],{})[_0xdb86('0x21')](respondWithResult(_0x155f62,0xc9))[_0xdb86('0x41')](handleError(_0x155f62,null));};exports['update']=function(_0x58216b,_0x10eee7){if(_0x58216b[_0xdb86('0x46')]['id']){delete _0x58216b[_0xdb86('0x46')]['id'];}return db['VoiceQueuesLog'][_0xdb86('0x44')]({'where':{'id':_0x58216b[_0xdb86('0x47')]['id']}})[_0xdb86('0x21')](handleEntityNotFound(_0x10eee7,null))['then'](saveUpdates(_0x58216b['body'],null))['then'](respondWithResult(_0x10eee7,null))['catch'](handleError(_0x10eee7,null));};exports['destroy']=function(_0x8d97a3,_0x2119be){return db[_0xdb86('0x2a')]['find']({'where':{'id':_0x8d97a3[_0xdb86('0x47')]['id']}})[_0xdb86('0x21')](handleEntityNotFound(_0x2119be,null))[_0xdb86('0x21')](removeEntity(_0x2119be,null))[_0xdb86('0x41')](handleError(_0x2119be,null));};
\ No newline at end of file
index 0ac1672..e3defd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab94=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./voiceQueuesLog.attributes','define','event_dtm','event','dtm','lodash'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0xab94,0x109));var _0x4ab9=function(_0x49a997,_0x2ec1dc){_0x49a997=_0x49a997-0x0;var _0x574f3=_0xab94[_0x49a997];return _0x574f3;};'use strict';var _=require(_0x4ab9('0x0'));var util=require(_0x4ab9('0x1'));var logger=require(_0x4ab9('0x2'))(_0x4ab9('0x3'));var moment=require(_0x4ab9('0x4'));var BPromise=require(_0x4ab9('0x5'));var rp=require(_0x4ab9('0x6'));var fs=require('fs');var path=require(_0x4ab9('0x7'));var rimraf=require(_0x4ab9('0x8'));var config=require('../../config/environment');var attributes=require(_0x4ab9('0x9'));module['exports']=function(_0x31d6f2,_0x58569c){return _0x31d6f2[_0x4ab9('0xa')]('VoiceQueuesLog',attributes,{'tableName':'voice_queues_log','paranoid':![],'indexes':[{'name':_0x4ab9('0xb'),'fields':[_0x4ab9('0xc'),_0x4ab9('0xd')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x8134=['api','moment','bluebird','request-promise','path','../../config/environment','exports','define','VoiceQueuesLog','voice_queues_log','event_dtm','event','../../config/logger'];(function(_0x1b4cbf,_0x1984ad){var _0xb225fd=function(_0x35020f){while(--_0x35020f){_0x1b4cbf['push'](_0x1b4cbf['shift']());}};_0xb225fd(++_0x1984ad);}(_0x8134,0xf6));var _0x4813=function(_0x32311a,_0x492faf){_0x32311a=_0x32311a-0x0;var _0x3cb609=_0x8134[_0x32311a];return _0x3cb609;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4813('0x0'))(_0x4813('0x1'));var moment=require(_0x4813('0x2'));var BPromise=require(_0x4813('0x3'));var rp=require(_0x4813('0x4'));var fs=require('fs');var path=require(_0x4813('0x5'));var rimraf=require('rimraf');var config=require(_0x4813('0x6'));var attributes=require('./voiceQueuesLog.attributes');module[_0x4813('0x7')]=function(_0x4d9c31,_0x22499e){return _0x4d9c31[_0x4813('0x8')](_0x4813('0x9'),attributes,{'tableName':_0x4813('0xa'),'paranoid':![],'indexes':[{'name':_0x4813('0xb'),'fields':[_0x4813('0xc'),'dtm']}],'timestamps':![]});};
\ No newline at end of file
index 045dcb5..2ddb4b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6324=['client','http','then','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceQueuesLog,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','rpc','jayson/promise'];(function(_0x13ae6e,_0x325acf){var _0x15450d=function(_0x42b1bc){while(--_0x42b1bc){_0x13ae6e['push'](_0x13ae6e['shift']());}};_0x15450d(++_0x325acf);}(_0x6324,0x142));var _0x4632=function(_0x51cf44,_0x2b04e1){_0x51cf44=_0x51cf44-0x0;var _0xb4dbd6=_0x6324[_0x51cf44];return _0xb4dbd6;};'use strict';var _=require(_0x4632('0x0'));var util=require(_0x4632('0x1'));var moment=require(_0x4632('0x2'));var BPromise=require(_0x4632('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4632('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x4632('0x5'));var logger=require('../../config/logger')(_0x4632('0x6'));var config=require('../../config/environment');var jayson=require(_0x4632('0x7'));var client=jayson[_0x4632('0x8')][_0x4632('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x126e9a,_0x4a15b2,_0x17e860){return new BPromise(function(_0x44dd6d,_0x390a46){return client['request'](_0x126e9a,_0x17e860)[_0x4632('0xa')](function(_0x47824c){logger['info']('VoiceQueuesLog,\x20%s,\x20%s',_0x4a15b2,_0x4632('0xb'));logger[_0x4632('0xc')](_0x4632('0xd'),_0x4a15b2,_0x4632('0xb'),JSON[_0x4632('0xe')](_0x47824c));if(_0x47824c[_0x4632('0xf')]){if(_0x47824c[_0x4632('0xf')][_0x4632('0x10')]===0x1f4){logger['error'](_0x4632('0x11'),_0x4a15b2,_0x47824c['error'][_0x4632('0x12')]);return _0x390a46(_0x47824c[_0x4632('0xf')][_0x4632('0x12')]);}logger[_0x4632('0xf')]('VoiceQueuesLog,\x20%s,\x20%s',_0x4a15b2,_0x47824c[_0x4632('0xf')][_0x4632('0x12')]);return _0x44dd6d(_0x47824c[_0x4632('0xf')][_0x4632('0x12')]);}else{logger[_0x4632('0x13')]('VoiceQueuesLog,\x20%s,\x20%s',_0x4a15b2,'request\x20sent');_0x44dd6d(_0x47824c[_0x4632('0x14')][_0x4632('0x12')]);}})[_0x4632('0x15')](function(_0x125eb9){logger['error'](_0x4632('0x11'),_0x4a15b2,_0x125eb9);_0x390a46(_0x125eb9);});});}
\ No newline at end of file
+var _0xb9fc=['then','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http'];(function(_0x2884e5,_0x270700){var _0x97078e=function(_0x1e3bd3){while(--_0x1e3bd3){_0x2884e5['push'](_0x2884e5['shift']());}};_0x97078e(++_0x270700);}(_0xb9fc,0x6e));var _0xcb9f=function(_0x4c1aba,_0x526395){_0x4c1aba=_0x4c1aba-0x0;var _0x4126bc=_0xb9fc[_0x4c1aba];return _0x4126bc;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xcb9f('0x0'));var BPromise=require(_0xcb9f('0x1'));var rs=require(_0xcb9f('0x2'));var fs=require('fs');var Redis=require(_0xcb9f('0x3'));var db=require(_0xcb9f('0x4'))['db'];var utils=require(_0xcb9f('0x5'));var logger=require(_0xcb9f('0x6'))(_0xcb9f('0x7'));var config=require('../../config/environment');var jayson=require(_0xcb9f('0x8'));var client=jayson['client'][_0xcb9f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3420a3,_0x1f47fd,_0x1513d2){return new BPromise(function(_0x20a28f,_0x1e71e8){return client['request'](_0x3420a3,_0x1513d2)[_0xcb9f('0xa')](function(_0x4e10da){logger[_0xcb9f('0xb')](_0xcb9f('0xc'),_0x1f47fd,_0xcb9f('0xd'));logger['debug']('VoiceQueuesLog,\x20%s,\x20%s,\x20%s',_0x1f47fd,_0xcb9f('0xd'),JSON[_0xcb9f('0xe')](_0x4e10da));if(_0x4e10da[_0xcb9f('0xf')]){if(_0x4e10da[_0xcb9f('0xf')][_0xcb9f('0x10')]===0x1f4){logger[_0xcb9f('0xf')](_0xcb9f('0xc'),_0x1f47fd,_0x4e10da['error'][_0xcb9f('0x11')]);return _0x1e71e8(_0x4e10da[_0xcb9f('0xf')][_0xcb9f('0x11')]);}logger['error'](_0xcb9f('0xc'),_0x1f47fd,_0x4e10da['error']['message']);return _0x20a28f(_0x4e10da[_0xcb9f('0xf')][_0xcb9f('0x11')]);}else{logger[_0xcb9f('0xb')](_0xcb9f('0xc'),_0x1f47fd,_0xcb9f('0xd'));_0x20a28f(_0x4e10da[_0xcb9f('0x12')][_0xcb9f('0x11')]);}})[_0xcb9f('0x13')](function(_0x3ceaf5){logger[_0xcb9f('0xf')](_0xcb9f('0xc'),_0x1f47fd,_0x3ceaf5);_0x1e71e8(_0x3ceaf5);});});}
\ No newline at end of file
index 9ad934f..d51b8db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b33=['download','downloads','downloadTranscribe','post','/:id/transcribe','runTranscribe','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','show','/:id/download'];(function(_0x2e0443,_0x7e5974){var _0x52d450=function(_0x3a9985){while(--_0x3a9985){_0x2e0443['push'](_0x2e0443['shift']());}};_0x52d450(++_0x7e5974);}(_0x1b33,0x191));var _0x31b3=function(_0x4bf8b6,_0x2baec7){_0x4bf8b6=_0x4bf8b6-0x0;var _0x4e7375=_0x1b33[_0x4bf8b6];return _0x4e7375;};'use strict';var multer=require(_0x31b3('0x0'));var util=require(_0x31b3('0x1'));var path=require(_0x31b3('0x2'));var timeout=require(_0x31b3('0x3'));var express=require(_0x31b3('0x4'));var router=express[_0x31b3('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x31b3('0x6'));var interaction=require(_0x31b3('0x7'));var config=require(_0x31b3('0x8'));var controller=require('./voiceRecording.controller');router[_0x31b3('0x9')]('/',auth[_0x31b3('0xa')](),controller[_0x31b3('0xb')]);router[_0x31b3('0x9')]('/describe',auth[_0x31b3('0xa')](),controller[_0x31b3('0xc')]);router[_0x31b3('0x9')]('/:id',auth[_0x31b3('0xa')](),controller[_0x31b3('0xd')]);router[_0x31b3('0x9')](_0x31b3('0xe'),auth[_0x31b3('0xa')](),controller[_0x31b3('0xf')]);router[_0x31b3('0x9')]('/:id/downloads',controller[_0x31b3('0x10')]);router[_0x31b3('0x9')]('/:id/transcribe',auth[_0x31b3('0xa')](),controller[_0x31b3('0x11')]);router[_0x31b3('0x12')]('/',auth[_0x31b3('0xa')](),controller['create']);router['post'](_0x31b3('0x13'),auth['isAuthenticated'](),controller[_0x31b3('0x14')]);router[_0x31b3('0x15')](_0x31b3('0x16'),auth[_0x31b3('0xa')](),controller[_0x31b3('0x17')]);router['delete'](_0x31b3('0x16'),auth['isAuthenticated'](),controller[_0x31b3('0x18')]);module[_0x31b3('0x19')]=router;
\ No newline at end of file
+var _0xaec3=['../../components/auth/service','./voiceRecording.controller','get','isAuthenticated','index','/describe','describe','/:id/download','/:id/downloads','downloads','/:id/transcribe','post','create','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x4bdab6,_0xe86f11){var _0x5e1c1a=function(_0x5dedbd){while(--_0x5dedbd){_0x4bdab6['push'](_0x4bdab6['shift']());}};_0x5e1c1a(++_0xe86f11);}(_0xaec3,0xba));var _0x3aec=function(_0x42700a,_0x3fa82f){_0x42700a=_0x42700a-0x0;var _0x12bc09=_0xaec3[_0x42700a];return _0x12bc09;};'use strict';var multer=require(_0x3aec('0x0'));var util=require('util');var path=require(_0x3aec('0x1'));var timeout=require(_0x3aec('0x2'));var express=require(_0x3aec('0x3'));var router=express[_0x3aec('0x4')]();var fs_extra=require(_0x3aec('0x5'));var auth=require(_0x3aec('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x3aec('0x7'));router[_0x3aec('0x8')]('/',auth[_0x3aec('0x9')](),controller[_0x3aec('0xa')]);router['get'](_0x3aec('0xb'),auth[_0x3aec('0x9')](),controller[_0x3aec('0xc')]);router['get']('/:id',auth[_0x3aec('0x9')](),controller['show']);router['get'](_0x3aec('0xd'),auth[_0x3aec('0x9')](),controller['download']);router[_0x3aec('0x8')](_0x3aec('0xe'),controller[_0x3aec('0xf')]);router['get'](_0x3aec('0x10'),auth[_0x3aec('0x9')](),controller['downloadTranscribe']);router[_0x3aec('0x11')]('/',auth[_0x3aec('0x9')](),controller[_0x3aec('0x12')]);router[_0x3aec('0x11')](_0x3aec('0x10'),auth[_0x3aec('0x9')](),controller['runTranscribe']);router['put'](_0x3aec('0x13'),auth[_0x3aec('0x9')](),controller[_0x3aec('0x14')]);router[_0x3aec('0x15')]('/:id',auth[_0x3aec('0x9')](),controller[_0x3aec('0x16')]);module[_0x3aec('0x17')]=router;
\ No newline at end of file
index c37c8c5..4be44d7 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(_0x525c7b,_0x488fcc){var _0x27b33e=function(_0x56d43b){while(--_0x56d43b){_0x525c7b['push'](_0x525c7b['shift']());}};_0x27b33e(++_0x488fcc);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0xa9e0[_0xbb091];return _0x467a04;};'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(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'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 9253c42..1101723 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4992=['destroy','error','stack','name','index','map','VoiceRecording','rawAttributes','fieldName','differenceBy','format','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','includeAll','include','findAll','catch','show','options','create','body','update','find','params','describe','download','uniqueid','%s.cypher','existsSync','decryptFile','secrets','value','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','extname','unlink','message','send','Not\x20found','../../components/encryptor','sequelize','MD5','$and','push','recording','Entity\x20not\x20found','info','isNil','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','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)','Location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeName','runTranscribe','findOne','transcribe','transcribeRegion','bucket','Transcribe\x20not\x20configured','runSentiment','sentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','transcribeAccountId','data2','data1','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','language','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','updateAttributes','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','.txt','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','aws-sdk','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','then'];(function(_0x31696f,_0x271dc2){var _0x168402=function(_0xe99198){while(--_0xe99198){_0x31696f['push'](_0x31696f['shift']());}};_0x168402(++_0x271dc2);}(_0x4992,0x19c));var _0x2499=function(_0x1f9f37,_0x18776e){_0x1f9f37=_0x1f9f37-0x0;var _0x21c080=_0x4992[_0x1f9f37];return _0x21c080;};'use strict';var emlformat=require(_0x2499('0x0'));var rimraf=require(_0x2499('0x1'));var zipdir=require(_0x2499('0x2'));var jsonpatch=require(_0x2499('0x3'));var rp=require(_0x2499('0x4'));var moment=require(_0x2499('0x5'));var BPromise=require(_0x2499('0x6'));var Mustache=require(_0x2499('0x7'));var util=require(_0x2499('0x8'));var path=require(_0x2499('0x9'));var sox=require(_0x2499('0xa'));var csv=require(_0x2499('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2499('0xc'));var _=require(_0x2499('0xd'));var squel=require(_0x2499('0xe'));var crypto=require(_0x2499('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x2499('0x10'));var toCsv=require('to-csv');var querystring=require(_0x2499('0x11'));var Papa=require(_0x2499('0x12'));var AWS=require(_0x2499('0x13'));var uuidv4=require('uuid/v4');var Redis=require(_0x2499('0x14'));var authService=require(_0x2499('0x15'));var qs=require(_0x2499('0x16'));var as=require(_0x2499('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2499('0x18'))(_0x2499('0x19'));var utils=require(_0x2499('0x1a'));var config=require(_0x2499('0x1b'));var licenseUtil=require('../../config/license/util');var db=require(_0x2499('0x1c'))['db'];function respondWithStatusCode(_0x99ae53,_0x4b5929){_0x4b5929=_0x4b5929||0xcc;return function(_0x40f5f1){if(_0x40f5f1){return _0x99ae53[_0x2499('0x1d')](_0x4b5929);}return _0x99ae53['status'](_0x4b5929)[_0x2499('0x1e')]();};}function respondWithResult(_0x1128f8,_0x24b4e9){_0x24b4e9=_0x24b4e9||0xc8;return function(_0x5e519d){if(_0x5e519d){return _0x1128f8[_0x2499('0x1f')](_0x24b4e9)[_0x2499('0x20')](_0x5e519d);}};}function respondWithFilteredResult(_0x4458f3,_0x3f89f1){return function(_0x2c3934){if(_0x2c3934){var _0x2b6a02=typeof _0x3f89f1[_0x2499('0x21')]===_0x2499('0x22')&&typeof _0x3f89f1[_0x2499('0x23')]===_0x2499('0x22');var _0x35b114=_0x2c3934[_0x2499('0x24')];var _0x4f3111=_0x2b6a02?0x0:_0x3f89f1['offset'];var _0x272aa3=_0x2b6a02?_0x2c3934[_0x2499('0x24')]:_0x3f89f1[_0x2499('0x21')]+_0x3f89f1[_0x2499('0x23')];var _0xdf9186;if(_0x272aa3>=_0x35b114){_0x272aa3=_0x35b114;_0xdf9186=0xc8;}else{_0xdf9186=0xce;}_0x4458f3[_0x2499('0x1f')](_0xdf9186);return _0x4458f3[_0x2499('0x25')](_0x2499('0x26'),_0x4f3111+'-'+_0x272aa3+'/'+_0x35b114)[_0x2499('0x20')](_0x2c3934);}return null;};}function patchUpdates(_0x5a95aa){return function(_0x349e81){try{jsonpatch['apply'](_0x349e81,_0x5a95aa,!![]);}catch(_0x9e7bd4){return BPromise[_0x2499('0x27')](_0x9e7bd4);}return _0x349e81['save']();};}function saveUpdates(_0xae20d4,_0x1ac74e){return function(_0x4bec3c){if(_0x4bec3c){return _0x4bec3c['update'](_0xae20d4)[_0x2499('0x28')](function(_0xdfd982){return _0xdfd982;});}return null;};}function removeEntity(_0x4882a3,_0x249f1a){return function(_0x497198){if(_0x497198){return _0x497198[_0x2499('0x29')]()[_0x2499('0x28')](function(){_0x4882a3[_0x2499('0x1f')](0xcc)[_0x2499('0x1e')]();});}};}function handleEntityNotFound(_0x268cac,_0x44296d){return function(_0x462ac3){if(!_0x462ac3){_0x268cac['sendStatus'](0x194);}return _0x462ac3;};}function handleError(_0x3fa966,_0x700046){_0x700046=_0x700046||0x1f4;return function(_0x3ef419){logger[_0x2499('0x2a')](_0x3ef419[_0x2499('0x2b')]);if(_0x3ef419[_0x2499('0x2c')]){delete _0x3ef419[_0x2499('0x2c')];}_0x3fa966[_0x2499('0x1f')](_0x700046)['send'](_0x3ef419);};}exports[_0x2499('0x2d')]=function(_0x3fad12,_0x1dc3cc){var _0x355445={},_0x5eae62={},_0x197a60={'count':0x0,'rows':[]};var _0x5bca17=_[_0x2499('0x2e')](db[_0x2499('0x2f')][_0x2499('0x30')],function(_0x12b923){return{'name':_0x12b923[_0x2499('0x31')],'type':_0x12b923['type']['key']};});_0x5eae62['model']=_[_0x2499('0x32')](_[_0x2499('0x2e')](_0x5bca17,_0x2499('0x2c')),[_0x2499('0x33')]);_0x5eae62[_0x2499('0x34')]=_[_0x2499('0x35')](_0x3fad12[_0x2499('0x34')]);_0x5eae62[_0x2499('0x36')]=_['intersection'](_0x5eae62[_0x2499('0x37')],_0x5eae62[_0x2499('0x34')]);_0x355445[_0x2499('0x38')]=_[_0x2499('0x39')](_0x5eae62[_0x2499('0x37')],qs[_0x2499('0x3a')](_0x3fad12[_0x2499('0x34')][_0x2499('0x3a')]));_0x355445[_0x2499('0x38')]=_0x355445[_0x2499('0x38')][_0x2499('0x3b')]?_0x355445[_0x2499('0x38')]:_0x5eae62[_0x2499('0x37')];if(!_0x3fad12[_0x2499('0x34')][_0x2499('0x3c')](_0x2499('0x3d'))){_0x355445[_0x2499('0x23')]=qs[_0x2499('0x23')](_0x3fad12[_0x2499('0x34')][_0x2499('0x23')]);_0x355445[_0x2499('0x21')]=qs[_0x2499('0x21')](_0x3fad12[_0x2499('0x34')][_0x2499('0x21')]);}_0x355445[_0x2499('0x3e')]=qs[_0x2499('0x3f')](_0x3fad12['query'][_0x2499('0x3f')]);_0x355445[_0x2499('0x40')]=qs[_0x2499('0x36')](_[_0x2499('0x41')](_0x3fad12[_0x2499('0x34')],_0x5eae62[_0x2499('0x36')]),_0x5bca17);if(_0x3fad12[_0x2499('0x34')][_0x2499('0x42')]){_0x355445[_0x2499('0x40')]=_[_0x2499('0x43')](_0x355445[_0x2499('0x40')],{'$or':_[_0x2499('0x2e')](_0x5bca17,function(_0x4f9b53){if(_0x4f9b53[_0x2499('0x44')]!=='VIRTUAL'){var _0x82c1ce={};_0x82c1ce[_0x4f9b53[_0x2499('0x2c')]]={'$like':'%'+_0x3fad12['query']['filter']+'%'};return _0x82c1ce;}})});}_0x355445=_[_0x2499('0x43')]({},_0x355445,_0x3fad12['options']);var _0x156a42={'where':_0x355445[_0x2499('0x40')]};return db[_0x2499('0x2f')]['count'](_0x156a42)[_0x2499('0x28')](function(_0x347e59){_0x197a60[_0x2499('0x24')]=_0x347e59;if(_0x3fad12[_0x2499('0x34')][_0x2499('0x45')]){_0x355445[_0x2499('0x46')]=[{'all':!![]}];}return db[_0x2499('0x2f')][_0x2499('0x47')](_0x355445);})[_0x2499('0x28')](function(_0x1f84b5){_0x197a60['rows']=_0x1f84b5;return _0x197a60;})[_0x2499('0x28')](respondWithFilteredResult(_0x1dc3cc,_0x355445))[_0x2499('0x48')](handleError(_0x1dc3cc,null));};exports[_0x2499('0x49')]=function(_0x1ebdec,_0x444225){var _0x4e2754={'raw':![],'where':{'id':_0x1ebdec['params']['id']}},_0x11d491={};_0x11d491['model']=_['keys'](db[_0x2499('0x2f')][_0x2499('0x30')]);_0x11d491[_0x2499('0x34')]=_[_0x2499('0x35')](_0x1ebdec[_0x2499('0x34')]);_0x11d491[_0x2499('0x36')]=_[_0x2499('0x39')](_0x11d491[_0x2499('0x37')],_0x11d491[_0x2499('0x34')]);_0x4e2754[_0x2499('0x38')]=_[_0x2499('0x39')](_0x11d491[_0x2499('0x37')],qs[_0x2499('0x3a')](_0x1ebdec[_0x2499('0x34')][_0x2499('0x3a')]));_0x4e2754['attributes']=_0x4e2754[_0x2499('0x38')]['length']?_0x4e2754[_0x2499('0x38')]:_0x11d491[_0x2499('0x37')];if(_0x1ebdec[_0x2499('0x34')][_0x2499('0x45')]){_0x4e2754[_0x2499('0x46')]=[{'all':!![]}];}_0x4e2754=_[_0x2499('0x43')]({},_0x4e2754,_0x1ebdec[_0x2499('0x4a')]);return db[_0x2499('0x2f')]['find'](_0x4e2754)[_0x2499('0x28')](handleEntityNotFound(_0x444225,null))['then'](respondWithResult(_0x444225,null))['catch'](handleError(_0x444225,null));};exports[_0x2499('0x4b')]=function(_0x5915fa,_0x2f0da0){return db[_0x2499('0x2f')]['create'](_0x5915fa[_0x2499('0x4c')],{})[_0x2499('0x28')](respondWithResult(_0x2f0da0,0xc9))[_0x2499('0x48')](handleError(_0x2f0da0,null));};exports[_0x2499('0x4d')]=function(_0x5798e7,_0x332ba3){if(_0x5798e7['body']['id']){delete _0x5798e7[_0x2499('0x4c')]['id'];}return db[_0x2499('0x2f')][_0x2499('0x4e')]({'where':{'id':_0x5798e7[_0x2499('0x4f')]['id']}})['then'](handleEntityNotFound(_0x332ba3,null))[_0x2499('0x28')](saveUpdates(_0x5798e7[_0x2499('0x4c')],null))[_0x2499('0x28')](respondWithResult(_0x332ba3,null))['catch'](handleError(_0x332ba3,null));};exports[_0x2499('0x50')]=function(_0x324d0b,_0x107ae2){return db[_0x2499('0x2f')]['describe']()[_0x2499('0x28')](respondWithResult(_0x107ae2,null))[_0x2499('0x48')](handleError(_0x107ae2,null));};exports[_0x2499('0x51')]=function(_0x2ca495,_0x3d601b,_0x2d7634){var _0x167574=require('../../components/encryptor');var _0x456d4a=![];var _0xb7ccd1={};if(_0x2ca495['query'][_0x2499('0x44')]&&_0x2ca495[_0x2499('0x34')][_0x2499('0x44')]===_0x2499('0x52')){_0xb7ccd1[_0x2499('0x52')]=_0x2ca495[_0x2499('0x4f')]['id'];}else{_0xb7ccd1['id']=_0x2ca495[_0x2499('0x4f')]['id'];}return db[_0x2499('0x2f')][_0x2499('0x4e')]({'where':_0xb7ccd1,'attributes':['id','value'],'raw':!![]})[_0x2499('0x28')](handleEntityNotFound(_0x3d601b,null))['then'](function(_0x3c1c9b){if(_0x3c1c9b){var _0x33b3b4=_0x3c1c9b['value'];var _0x4158c3=util[_0x2499('0x33')](_0x2499('0x53'),_0x33b3b4);if(fs[_0x2499('0x54')](_0x4158c3)){_0x456d4a=!![];return _0x167574[_0x2499('0x55')](_0x4158c3,_0x33b3b4,config[_0x2499('0x56')]['recording'])[_0x2499('0x28')](function(){return _0x3c1c9b;});}return _0x3c1c9b;}})['then'](function(_0x5b77a8){if(_0x5b77a8){var _0xb21f98=_0x5b77a8[_0x2499('0x57')];if(!fs[_0x2499('0x54')](_0xb21f98)){throw new db[(_0x2499('0x58'))][(_0x2499('0x59'))](_0x2499('0x5a'));}if(_0x5b77a8['filename']){return _0x3d601b[_0x2499('0x51')](_0xb21f98,_0x5b77a8[_0x2499('0x5b')]+path[_0x2499('0x5c')](_0xb21f98),function(){if(_0x456d4a){fs[_0x2499('0x5d')](_0xb21f98);}});}else{return _0x3d601b[_0x2499('0x51')](_0xb21f98,function(_0x5dd390){if(_0x456d4a){fs[_0x2499('0x5d')](_0xb21f98);}});}}})[_0x2499('0x48')](function(_0x501d11){if(_0x501d11[_0x2499('0x5e')]===_0x2499('0x5a')){_0x3d601b['status'](0x194)[_0x2499('0x5f')](_0x2499('0x60'));}else{return handleError(_0x3d601b,null);}});};exports['downloads']=function(_0x53a0d3,_0x2b5c46,_0x4b7e0b){var _0x1d7966=require(_0x2499('0x61'));var _0x4f37f8=![];var _0x46a93c={'$and':[db[_0x2499('0x62')][_0x2499('0x40')](db[_0x2499('0x62')]['fn'](_0x2499('0x63'),db[_0x2499('0x62')]['col'](_0x2499('0x52'))),_0x53a0d3[_0x2499('0x34')]['token'])]};if(_0x53a0d3['query'][_0x2499('0x44')]&&_0x53a0d3[_0x2499('0x34')]['type']==='uniqueid'){_0x46a93c[_0x2499('0x64')][_0x2499('0x65')]({'uniqueid':_0x53a0d3[_0x2499('0x4f')]['id']});}else{_0x46a93c[_0x2499('0x64')][_0x2499('0x65')]({'id':_0x53a0d3[_0x2499('0x4f')]['id']});}return db[_0x2499('0x2f')][_0x2499('0x4e')]({'where':_0x46a93c,'attributes':['id','value'],'raw':!![]})[_0x2499('0x28')](handleEntityNotFound(_0x2b5c46,null))[_0x2499('0x28')](function(_0x273b0a){if(_0x273b0a){var _0x549365=util['format']('%s.cypher',_0x273b0a[_0x2499('0x57')]);if(fs[_0x2499('0x54')](_0x549365)){_0x4f37f8=!![];return _0x1d7966[_0x2499('0x55')](_0x549365,_0x273b0a[_0x2499('0x57')],config[_0x2499('0x56')][_0x2499('0x66')])[_0x2499('0x28')](function(){return _0x273b0a;});}return _0x273b0a;}})[_0x2499('0x28')](function(_0x24d043){if(_0x24d043){if(!fs['existsSync'](_0x24d043[_0x2499('0x57')])){throw new db[(_0x2499('0x58'))]['ValidationError'](_0x2499('0x5a'));}if(_0x24d043[_0x2499('0x5b')]){return _0x2b5c46[_0x2499('0x51')](_0x24d043['value'],_0x24d043['filename']+path[_0x2499('0x5c')](_0x24d043[_0x2499('0x57')]),function(){if(_0x4f37f8){fs[_0x2499('0x5d')](_0x24d043[_0x2499('0x57')]);}});}else{return _0x2b5c46['download'](_0x24d043['value'],function(_0xf2bb89){if(_0x4f37f8){fs[_0x2499('0x5d')](_0x24d043['value']);}});}}})['catch'](handleError(_0x2b5c46,null));};exports['destroy']=function(_0x5c2cb9,_0x90b27c){return db[_0x2499('0x2f')]['find']({'where':{'id':_0x5c2cb9[_0x2499('0x4f')]['id']}})[_0x2499('0x28')](function(_0x477350){if(_['isNil'](_0x477350)){throw new ReferenceError(_0x2499('0x67'));}return _0x477350;})[_0x2499('0x28')](function(_0xeaeb20){var _0xaad997=_0xeaeb20[_0x2499('0x57')];logger[_0x2499('0x68')]('cancellazione\x20fisica\x20documento\x20%s',_0xaad997);if(!_[_0x2499('0x69')](_0xeaeb20[_0x2499('0x57')])&&fs['existsSync'](_0xaad997)){logger[_0x2499('0x68')]('File:\x20\x22'+_0xaad997+_0x2499('0x6a'));fs[_0x2499('0x6b')](_0xaad997);}_0xaad997=_0xaad997+_0x2499('0x6c');if(!_[_0x2499('0x69')](_0xeaeb20[_0x2499('0x57')])&&fs[_0x2499('0x54')](_0xaad997)){logger[_0x2499('0x68')]('File:\x20\x22'+_0xaad997+_0x2499('0x6a'));fs['unlinkSync'](_0xaad997);}return _0xeaeb20;})[_0x2499('0x28')](function(_0x345a7c){if(!_0x345a7c)throw new InternalError();return _0x345a7c[_0x2499('0x29')]();})[_0x2499('0x28')](function(){_0x90b27c[_0x2499('0x1f')](0xcc)[_0x2499('0x1e')]();})[_0x2499('0x48')](handleError(_0x90b27c,null));};function getBucketslist(_0x4648ec,_0x3a2b40,_0x134c65){return new Promise(function(_0x685713,_0x5e0015){var _0x31aa65=new AWS['S3']({'accessKeyId':_0x3a2b40,'secretAccessKey':_0x4648ec,'region':_0x134c65});_0x31aa65['listBuckets']({},function(_0x26e0ce,_0x56a6bb){if(_0x26e0ce){return _0x5e0015(_0x26e0ce);}else{return _0x685713(_0x56a6bb);}});});}function createBucket(_0x3125e5,_0x27eda7,_0x35dff8,_0x487cad){return new Promise(function(_0x1c4f01,_0xf1f005){var _0x5950e9=new AWS['S3']({'accessKeyId':_0x27eda7,'secretAccessKey':_0x3125e5,'region':_0x35dff8});_0x5950e9[_0x2499('0x6d')]({'Bucket':_0x487cad},function(_0x1c2044,_0x59a625){if(_0x1c2044){return _0xf1f005(_0x1c2044);}else{return _0x1c4f01(_0x59a625);}});});}function uploadFile(_0x3cc527,_0x31b1b8,_0x390bce,_0x3fc6e6,_0x1f66ed,_0x148cb0){return new Promise(function(_0x3582e0,_0x7ac879){var _0x2555c4=new AWS['S3']({'accessKeyId':_0x31b1b8,'secretAccessKey':_0x3cc527,'region':_0x390bce});_0x2555c4[_0x2499('0x6e')]({'Bucket':_0x3fc6e6,'Key':_0x1f66ed,'Body':_0x148cb0},function(_0x14ded9,_0x40b7de){if(_0x14ded9){return _0x7ac879(_0x14ded9);}else{return _0x3582e0(_0x40b7de);}});});}function startTranscribe(_0x26bd4b,_0x153b9d,_0xb711dc,_0x309a60,_0x45f400,_0x2e3a84){return new Promise(function(_0x2e38ee,_0x30d5b3){var _0xc54bdc=new AWS[(_0x2499('0x6f'))]({'accessKeyId':_0x153b9d,'secretAccessKey':_0x26bd4b,'region':_0xb711dc});_0xc54bdc[_0x2499('0x70')]({'TranscriptionJobName':_0x309a60,'LanguageCode':_0x45f400,'Media':{'MediaFileUri':_0x2e3a84}},function(_0x185b15,_0x525691){if(_0x185b15){return _0x30d5b3(_0x185b15);}else{return _0x2e38ee(_0x525691);}});});}function transcribe(_0x189dca,_0x3c8b75,_0x5a85fe,_0x2a59e1,_0x345d5b,_0x130c33,_0x4456b5){return new Promise(function(_0x16ed49,_0x86263){var _0x41635d={};logger[_0x2499('0x68')](util[_0x2499('0x33')](_0x2499('0x71'),_0x189dca,_0x345d5b));return uploadFile(_0x3c8b75,_0x5a85fe,_0x2a59e1,_0x345d5b,path[_0x2499('0x72')](_0x130c33),fs[_0x2499('0x73')](_0x130c33))[_0x2499('0x28')](function(_0x1f797d){logger[_0x2499('0x68')](util['format'](_0x2499('0x74'),_0x189dca,_0x345d5b,_0x1f797d[_0x2499('0x75')]));_0x41635d['bucket']=_0x1f797d['Bucket'];_0x41635d['location']=_0x1f797d[_0x2499('0x75')];logger[_0x2499('0x68')](util[_0x2499('0x33')](_0x2499('0x76'),_0x189dca));return startTranscribe(_0x3c8b75,_0x5a85fe,_0x2a59e1,uuidv4(),_0x4456b5,_0x1f797d['Location']);})[_0x2499('0x28')](function(_0x5460eb){logger['info'](util['format'](_0x2499('0x77'),_0x189dca,_0x5460eb[_0x2499('0x78')][_0x2499('0x79')]));_0x41635d[_0x2499('0x7a')]=_0x5460eb[_0x2499('0x78')][_0x2499('0x79')];_0x41635d['transcribeStatus']=_0x5460eb[_0x2499('0x78')]['TranscriptionJobStatus'];return _0x16ed49(_0x41635d);})[_0x2499('0x48')](function(_0x464178){return _0x86263(_0x464178);});});}exports[_0x2499('0x7b')]=function(_0x5ee933,_0x5b814d,_0x2b7513){var _0x4ad30f;var _0x15682d;var _0x2de25b;var _0x144bb0=require(_0x2499('0x61'));return db[_0x2499('0x2f')][_0x2499('0x7c')]({'where':{'id':_0x5ee933[_0x2499('0x4f')]['id']}})['then'](function(_0x4aeaac){if(_0x4aeaac){var _0x14ab21=util[_0x2499('0x33')](_0x2499('0x53'),_0x4aeaac[_0x2499('0x57')]);if(fs[_0x2499('0x54')](_0x14ab21)){cypher=!![];return _0x144bb0[_0x2499('0x55')](_0x14ab21,_0x4aeaac[_0x2499('0x57')],config[_0x2499('0x56')][_0x2499('0x66')])['then'](function(){return _0x4aeaac;});}return _0x4aeaac;}})[_0x2499('0x28')](function(_0x54697b){if(!_0x54697b){throw new db['Sequelize']['ValidationError']('Voice\x20Recording\x20not\x20found');}_0x15682d=_0x54697b;return db['Setting'][_0x2499('0x7c')]({'where':{'id':0x1}});})[_0x2499('0x28')](handleEntityNotFound(_0x5b814d,null))[_0x2499('0x28')](function(_0x412ea5){if(_0x412ea5){_0x4ad30f=_0x412ea5;if(!_0x4ad30f[_0x2499('0x7d')]||!_0x4ad30f['transcribeAccountId']||!_0x4ad30f[_0x2499('0x7e')]||!_0x4ad30f['language']||!_0x4ad30f[_0x2499('0x7f')]){throw new db[(_0x2499('0x58'))]['ValidationError'](_0x2499('0x80'));}if(_0x5ee933[_0x2499('0x4c')][_0x2499('0x81')]&&(!_0x4ad30f[_0x2499('0x82')]||!_0x4ad30f[_0x2499('0x83')]||!_0x4ad30f[_0x2499('0x84')]||!_0x4ad30f['language']||!_0x4ad30f['bucket'])){throw new db[(_0x2499('0x58'))][(_0x2499('0x59'))](_0x2499('0x85'));}return db[_0x2499('0x86')]['findOne']({'where':{'id':_0x4ad30f[_0x2499('0x87')]}});}})[_0x2499('0x28')](function(_0x345076){if(!_0x345076){throw new db[(_0x2499('0x58'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x345076['data1']||!_0x345076[_0x2499('0x88')]){throw new db[(_0x2499('0x58'))][(_0x2499('0x59'))]('Cloud\x20Provider\x20not\x20configured');}_0x2de25b=_0x345076;return getBucketslist(_0x2de25b[_0x2499('0x89')],_0x2de25b['data2'],_0x4ad30f[_0x2499('0x7e')]);})[_0x2499('0x28')](function(_0x17498f){if(_0x17498f&&_0x17498f[_0x2499('0x8a')]){var _0x408f5f=_[_0x2499('0x4e')](_0x17498f['Buckets'],function(_0x1a80a4){return _0x1a80a4[_0x2499('0x8b')]===_0x4ad30f[_0x2499('0x7f')];});if(!_0x408f5f){logger['info'](util[_0x2499('0x33')](_0x2499('0x8c'),_0x5ee933[_0x2499('0x4f')]['id'],_0x4ad30f['bucket']));return createBucket(_0x2de25b[_0x2499('0x89')],_0x2de25b[_0x2499('0x88')],_0x4ad30f[_0x2499('0x7e')],_0x4ad30f['bucket']);}logger[_0x2499('0x68')](util[_0x2499('0x33')](_0x2499('0x8d'),_0x5ee933[_0x2499('0x4f')]['id'],_0x4ad30f[_0x2499('0x7f')]));return;}})[_0x2499('0x28')](function(_0x22a1d9){if(_0x15682d['transcribeStatus']==='NEW'){return transcribe(_0x5ee933[_0x2499('0x4f')]['id'],_0x2de25b[_0x2499('0x89')],_0x2de25b[_0x2499('0x88')],_0x4ad30f[_0x2499('0x7e')],_0x4ad30f[_0x2499('0x7f')],_0x15682d['value'],_0x4ad30f[_0x2499('0x8e')]);}else{logger['info'](util[_0x2499('0x33')](_0x2499('0x8f'),_0x5ee933[_0x2499('0x4f')]['id']));return{'transcribeStatus':_0x2499('0x90')};}})['then'](function(_0x31a1c5){if(_0x31a1c5){_0x31a1c5['tempSentiment']=_0x5ee933['body'][_0x2499('0x81')];return _0x15682d[_0x2499('0x91')](_0x31a1c5);}})[_0x2499('0x28')](respondWithResult(_0x5b814d,null))['catch'](handleError(_0x5b814d,null));};function writeFile(_0x3b359a,_0x43f82b){return new Promise(function(_0x3c0b5e,_0x52e69c){fs['writeFile'](_0x43f82b,_0x3b359a,function(_0x1931fd,_0x5dc9fb){if(_0x1931fd){return _0x52e69c(_0x1931fd);}else{return _0x3c0b5e(_0x5dc9fb);}});});}exports[_0x2499('0x92')]=function(_0x4a205b,_0x257c81,_0x32d919){return db[_0x2499('0x2f')][_0x2499('0x7c')]({'where':{'id':_0x4a205b[_0x2499('0x4f')]['id']}})[_0x2499('0x28')](handleEntityNotFound(_0x257c81))[_0x2499('0x28')](function(_0x4cbf9b){if(_0x4cbf9b&&_0x4cbf9b[_0x2499('0x93')]){var _0x14afdf=_0x4cbf9b[_0x2499('0x93')];var _0x11e7ca=config[_0x2499('0x94')]+_0x2499('0x95')+_0x4cbf9b['id']+_0x2499('0x96');if(fs[_0x2499('0x54')](_0x11e7ca)){return _0x11e7ca;}return writeFile(_0x14afdf,_0x11e7ca)[_0x2499('0x28')](function(){return _0x11e7ca;});}else{throw new db[(_0x2499('0x58'))][(_0x2499('0x59'))]('Transcript\x20not\x20available');}})[_0x2499('0x28')](function(_0x1d4ccc){return _0x257c81[_0x2499('0x51')](_0x1d4ccc);})[_0x2499('0x48')](handleError(_0x257c81));};
\ No newline at end of file
+var _0x965f=['request-promise','moment','mustache','path','sox','to-csv','fs-extra','lodash','querystring','papaparse','aws-sdk','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','map','rawAttributes','fieldName','type','key','model','differenceBy','format','keys','query','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','VoiceRecording','includeAll','findAll','rows','catch','show','params','include','find','create','body','describe','download','../../components/encryptor','uniqueid','value','%s.cypher','decryptFile','secrets','recording','existsSync','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','extname','unlink','Not\x20found','downloads','sequelize','token','$and','push','info','cancellazione\x20fisica\x20documento\x20%s','isNil','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','listBuckets','createBucket','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','TranscriptionJob','TranscriptionJobName','transcribeStatus','TranscriptionJobStatus','runTranscribe','findOne','Voice\x20Recording\x20not\x20found','Setting','transcribeAccountId','transcribeRegion','language','runSentiment','CloudProvider','Cloud\x20Provider\x20not\x20available','data1','data2','Cloud\x20Provider\x20not\x20configured','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','root','Transcript\x20not\x20available','rimraf','zip-dir','fast-json-patch'];(function(_0x5f1974,_0x42d53c){var _0x121355=function(_0xf27715){while(--_0xf27715){_0x5f1974['push'](_0x5f1974['shift']());}};_0x121355(++_0x42d53c);}(_0x965f,0x93));var _0xf965=function(_0x1bb441,_0xe2195a){_0x1bb441=_0x1bb441-0x0;var _0x1a5f20=_0x965f[_0x1bb441];return _0x1a5f20;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf965('0x0'));var zipdir=require(_0xf965('0x1'));var jsonpatch=require(_0xf965('0x2'));var rp=require(_0xf965('0x3'));var moment=require(_0xf965('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xf965('0x5'));var util=require('util');var path=require(_0xf965('0x6'));var sox=require(_0xf965('0x7'));var csv=require(_0xf965('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf965('0x9'));var _=require(_0xf965('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xf965('0xb'));var Papa=require(_0xf965('0xc'));var AWS=require(_0xf965('0xd'));var uuidv4=require('uuid/v4');var Redis=require(_0xf965('0xe'));var authService=require(_0xf965('0xf'));var qs=require(_0xf965('0x10'));var as=require(_0xf965('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf965('0x12'))(_0xf965('0x13'));var utils=require(_0xf965('0x14'));var config=require(_0xf965('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xf965('0x16'))['db'];function respondWithStatusCode(_0x1c40bc,_0x1ab86f){_0x1ab86f=_0x1ab86f||0xcc;return function(_0x3052a6){if(_0x3052a6){return _0x1c40bc[_0xf965('0x17')](_0x1ab86f);}return _0x1c40bc[_0xf965('0x18')](_0x1ab86f)[_0xf965('0x19')]();};}function respondWithResult(_0x14e3b6,_0x8868ea){_0x8868ea=_0x8868ea||0xc8;return function(_0x12141d){if(_0x12141d){return _0x14e3b6['status'](_0x8868ea)[_0xf965('0x1a')](_0x12141d);}};}function respondWithFilteredResult(_0x291af8,_0x351f1f){return function(_0x4d2125){if(_0x4d2125){var _0x39c8d2=typeof _0x351f1f[_0xf965('0x1b')]===_0xf965('0x1c')&&typeof _0x351f1f['limit']===_0xf965('0x1c');var _0xa4ae32=_0x4d2125[_0xf965('0x1d')];var _0x3c9fd6=_0x39c8d2?0x0:_0x351f1f[_0xf965('0x1b')];var _0x3adf84=_0x39c8d2?_0x4d2125[_0xf965('0x1d')]:_0x351f1f[_0xf965('0x1b')]+_0x351f1f[_0xf965('0x1e')];var _0x410d87;if(_0x3adf84>=_0xa4ae32){_0x3adf84=_0xa4ae32;_0x410d87=0xc8;}else{_0x410d87=0xce;}_0x291af8[_0xf965('0x18')](_0x410d87);return _0x291af8[_0xf965('0x1f')](_0xf965('0x20'),_0x3c9fd6+'-'+_0x3adf84+'/'+_0xa4ae32)[_0xf965('0x1a')](_0x4d2125);}return null;};}function patchUpdates(_0x4aa53b){return function(_0x76c01a){try{jsonpatch[_0xf965('0x21')](_0x76c01a,_0x4aa53b,!![]);}catch(_0x11bfda){return BPromise[_0xf965('0x22')](_0x11bfda);}return _0x76c01a[_0xf965('0x23')]();};}function saveUpdates(_0x282ac5,_0x114270){return function(_0x4313d2){if(_0x4313d2){return _0x4313d2[_0xf965('0x24')](_0x282ac5)[_0xf965('0x25')](function(_0x36c81d){return _0x36c81d;});}return null;};}function removeEntity(_0x55750d,_0x196c50){return function(_0x5cec94){if(_0x5cec94){return _0x5cec94[_0xf965('0x26')]()[_0xf965('0x25')](function(){_0x55750d['status'](0xcc)[_0xf965('0x19')]();});}};}function handleEntityNotFound(_0x364196,_0x5365b8){return function(_0x41b6d0){if(!_0x41b6d0){_0x364196[_0xf965('0x17')](0x194);}return _0x41b6d0;};}function handleError(_0x56af6c,_0x1957c3){_0x1957c3=_0x1957c3||0x1f4;return function(_0x1f4230){logger[_0xf965('0x27')](_0x1f4230['stack']);if(_0x1f4230[_0xf965('0x28')]){delete _0x1f4230[_0xf965('0x28')];}_0x56af6c[_0xf965('0x18')](_0x1957c3)[_0xf965('0x29')](_0x1f4230);};}exports[_0xf965('0x2a')]=function(_0x1e52fe,_0x295e7f){var _0x27c723={},_0x4ccce8={},_0x585369={'count':0x0,'rows':[]};var _0x3c0874=_[_0xf965('0x2b')](db['VoiceRecording'][_0xf965('0x2c')],function(_0xdef73d){return{'name':_0xdef73d[_0xf965('0x2d')],'type':_0xdef73d[_0xf965('0x2e')][_0xf965('0x2f')]};});_0x4ccce8[_0xf965('0x30')]=_[_0xf965('0x31')](_['map'](_0x3c0874,'name'),[_0xf965('0x32')]);_0x4ccce8['query']=_[_0xf965('0x33')](_0x1e52fe[_0xf965('0x34')]);_0x4ccce8[_0xf965('0x35')]=_['intersection'](_0x4ccce8[_0xf965('0x30')],_0x4ccce8['query']);_0x27c723[_0xf965('0x36')]=_[_0xf965('0x37')](_0x4ccce8['model'],qs[_0xf965('0x38')](_0x1e52fe[_0xf965('0x34')][_0xf965('0x38')]));_0x27c723[_0xf965('0x36')]=_0x27c723[_0xf965('0x36')][_0xf965('0x39')]?_0x27c723[_0xf965('0x36')]:_0x4ccce8[_0xf965('0x30')];if(!_0x1e52fe[_0xf965('0x34')]['hasOwnProperty'](_0xf965('0x3a'))){_0x27c723['limit']=qs[_0xf965('0x1e')](_0x1e52fe['query']['limit']);_0x27c723['offset']=qs[_0xf965('0x1b')](_0x1e52fe[_0xf965('0x34')][_0xf965('0x1b')]);}_0x27c723[_0xf965('0x3b')]=qs[_0xf965('0x3c')](_0x1e52fe['query'][_0xf965('0x3c')]);_0x27c723[_0xf965('0x3d')]=qs[_0xf965('0x35')](_[_0xf965('0x3e')](_0x1e52fe['query'],_0x4ccce8[_0xf965('0x35')]),_0x3c0874);if(_0x1e52fe[_0xf965('0x34')]['filter']){_0x27c723[_0xf965('0x3d')]=_[_0xf965('0x3f')](_0x27c723['where'],{'$or':_[_0xf965('0x2b')](_0x3c0874,function(_0x50fa25){if(_0x50fa25[_0xf965('0x2e')]!==_0xf965('0x40')){var _0x287af8={};_0x287af8[_0x50fa25[_0xf965('0x28')]]={'$like':'%'+_0x1e52fe[_0xf965('0x34')][_0xf965('0x41')]+'%'};return _0x287af8;}})});}_0x27c723=_['merge']({},_0x27c723,_0x1e52fe[_0xf965('0x42')]);var _0x3c9d8b={'where':_0x27c723[_0xf965('0x3d')]};return db[_0xf965('0x43')][_0xf965('0x1d')](_0x3c9d8b)[_0xf965('0x25')](function(_0x29ec01){_0x585369[_0xf965('0x1d')]=_0x29ec01;if(_0x1e52fe[_0xf965('0x34')][_0xf965('0x44')]){_0x27c723['include']=[{'all':!![]}];}return db[_0xf965('0x43')][_0xf965('0x45')](_0x27c723);})[_0xf965('0x25')](function(_0x34330f){_0x585369[_0xf965('0x46')]=_0x34330f;return _0x585369;})['then'](respondWithFilteredResult(_0x295e7f,_0x27c723))[_0xf965('0x47')](handleError(_0x295e7f,null));};exports[_0xf965('0x48')]=function(_0x3b81b4,_0x200117){var _0x22ad38={'raw':![],'where':{'id':_0x3b81b4[_0xf965('0x49')]['id']}},_0x1d14b6={};_0x1d14b6['model']=_[_0xf965('0x33')](db[_0xf965('0x43')][_0xf965('0x2c')]);_0x1d14b6[_0xf965('0x34')]=_[_0xf965('0x33')](_0x3b81b4[_0xf965('0x34')]);_0x1d14b6[_0xf965('0x35')]=_[_0xf965('0x37')](_0x1d14b6['model'],_0x1d14b6[_0xf965('0x34')]);_0x22ad38[_0xf965('0x36')]=_[_0xf965('0x37')](_0x1d14b6[_0xf965('0x30')],qs[_0xf965('0x38')](_0x3b81b4['query'][_0xf965('0x38')]));_0x22ad38['attributes']=_0x22ad38[_0xf965('0x36')][_0xf965('0x39')]?_0x22ad38['attributes']:_0x1d14b6[_0xf965('0x30')];if(_0x3b81b4[_0xf965('0x34')][_0xf965('0x44')]){_0x22ad38[_0xf965('0x4a')]=[{'all':!![]}];}_0x22ad38=_[_0xf965('0x3f')]({},_0x22ad38,_0x3b81b4['options']);return db['VoiceRecording'][_0xf965('0x4b')](_0x22ad38)[_0xf965('0x25')](handleEntityNotFound(_0x200117,null))['then'](respondWithResult(_0x200117,null))[_0xf965('0x47')](handleError(_0x200117,null));};exports[_0xf965('0x4c')]=function(_0x18e8ad,_0x2e6a9e){return db[_0xf965('0x43')][_0xf965('0x4c')](_0x18e8ad[_0xf965('0x4d')],{})['then'](respondWithResult(_0x2e6a9e,0xc9))[_0xf965('0x47')](handleError(_0x2e6a9e,null));};exports[_0xf965('0x24')]=function(_0x3aba87,_0x52bdc8){if(_0x3aba87[_0xf965('0x4d')]['id']){delete _0x3aba87[_0xf965('0x4d')]['id'];}return db[_0xf965('0x43')][_0xf965('0x4b')]({'where':{'id':_0x3aba87[_0xf965('0x49')]['id']}})[_0xf965('0x25')](handleEntityNotFound(_0x52bdc8,null))[_0xf965('0x25')](saveUpdates(_0x3aba87['body'],null))['then'](respondWithResult(_0x52bdc8,null))[_0xf965('0x47')](handleError(_0x52bdc8,null));};exports[_0xf965('0x4e')]=function(_0x1feba9,_0x85466){return db[_0xf965('0x43')]['describe']()['then'](respondWithResult(_0x85466,null))['catch'](handleError(_0x85466,null));};exports[_0xf965('0x4f')]=function(_0x39fc86,_0x32cb4f,_0x3e61aa){var _0x2fd34c=require(_0xf965('0x50'));var _0x11f697=![];var _0x35be20={};if(_0x39fc86[_0xf965('0x34')][_0xf965('0x2e')]&&_0x39fc86[_0xf965('0x34')][_0xf965('0x2e')]==='uniqueid'){_0x35be20[_0xf965('0x51')]=_0x39fc86[_0xf965('0x49')]['id'];}else{_0x35be20['id']=_0x39fc86['params']['id'];}return db[_0xf965('0x43')][_0xf965('0x4b')]({'where':_0x35be20,'attributes':['id',_0xf965('0x52')],'raw':!![]})[_0xf965('0x25')](handleEntityNotFound(_0x32cb4f,null))[_0xf965('0x25')](function(_0x3fc39d){if(_0x3fc39d){var _0x2048a3=_0x3fc39d[_0xf965('0x52')];var _0x3eb1f1=util[_0xf965('0x32')](_0xf965('0x53'),_0x2048a3);if(fs['existsSync'](_0x3eb1f1)){_0x11f697=!![];return _0x2fd34c[_0xf965('0x54')](_0x3eb1f1,_0x2048a3,config[_0xf965('0x55')][_0xf965('0x56')])['then'](function(){return _0x3fc39d;});}return _0x3fc39d;}})[_0xf965('0x25')](function(_0x1dfe22){if(_0x1dfe22){var _0x1ff2b8=_0x1dfe22[_0xf965('0x52')];if(!fs[_0xf965('0x57')](_0x1ff2b8)){throw new db[(_0xf965('0x58'))][(_0xf965('0x59'))](_0xf965('0x5a'));}if(_0x1dfe22[_0xf965('0x5b')]){return _0x32cb4f[_0xf965('0x4f')](_0x1ff2b8,_0x1dfe22[_0xf965('0x5b')]+path[_0xf965('0x5c')](_0x1ff2b8),function(){if(_0x11f697){fs[_0xf965('0x5d')](_0x1ff2b8);}});}else{return _0x32cb4f[_0xf965('0x4f')](_0x1ff2b8,function(_0x36a46e){if(_0x11f697){fs[_0xf965('0x5d')](_0x1ff2b8);}});}}})[_0xf965('0x47')](function(_0x37d2df){if(_0x37d2df['message']===_0xf965('0x5a')){_0x32cb4f['status'](0x194)[_0xf965('0x29')](_0xf965('0x5e'));}else{return handleError(_0x32cb4f,null);}});};exports[_0xf965('0x5f')]=function(_0x46691a,_0x4a338f,_0x13c68e){var _0x30cf62=require(_0xf965('0x50'));var _0x3d9441=![];var _0x2bdda3={'$and':[db[_0xf965('0x60')][_0xf965('0x3d')](db[_0xf965('0x60')]['fn']('MD5',db['sequelize']['col'](_0xf965('0x51'))),_0x46691a['query'][_0xf965('0x61')])]};if(_0x46691a['query'][_0xf965('0x2e')]&&_0x46691a[_0xf965('0x34')][_0xf965('0x2e')]===_0xf965('0x51')){_0x2bdda3[_0xf965('0x62')][_0xf965('0x63')]({'uniqueid':_0x46691a[_0xf965('0x49')]['id']});}else{_0x2bdda3[_0xf965('0x62')]['push']({'id':_0x46691a[_0xf965('0x49')]['id']});}return db[_0xf965('0x43')][_0xf965('0x4b')]({'where':_0x2bdda3,'attributes':['id','value'],'raw':!![]})[_0xf965('0x25')](handleEntityNotFound(_0x4a338f,null))['then'](function(_0x25eab7){if(_0x25eab7){var _0x3214ce=util[_0xf965('0x32')](_0xf965('0x53'),_0x25eab7[_0xf965('0x52')]);if(fs['existsSync'](_0x3214ce)){_0x3d9441=!![];return _0x30cf62['decryptFile'](_0x3214ce,_0x25eab7[_0xf965('0x52')],config['secrets'][_0xf965('0x56')])['then'](function(){return _0x25eab7;});}return _0x25eab7;}})[_0xf965('0x25')](function(_0x7ee581){if(_0x7ee581){if(!fs[_0xf965('0x57')](_0x7ee581[_0xf965('0x52')])){throw new db['Sequelize'][(_0xf965('0x59'))](_0xf965('0x5a'));}if(_0x7ee581['filename']){return _0x4a338f['download'](_0x7ee581[_0xf965('0x52')],_0x7ee581['filename']+path[_0xf965('0x5c')](_0x7ee581[_0xf965('0x52')]),function(){if(_0x3d9441){fs[_0xf965('0x5d')](_0x7ee581[_0xf965('0x52')]);}});}else{return _0x4a338f[_0xf965('0x4f')](_0x7ee581[_0xf965('0x52')],function(_0x393916){if(_0x3d9441){fs[_0xf965('0x5d')](_0x7ee581[_0xf965('0x52')]);}});}}})['catch'](handleError(_0x4a338f,null));};exports[_0xf965('0x26')]=function(_0x3ca038,_0x4fe083){return db[_0xf965('0x43')][_0xf965('0x4b')]({'where':{'id':_0x3ca038[_0xf965('0x49')]['id']}})[_0xf965('0x25')](function(_0x330f4a){if(_['isNil'](_0x330f4a)){throw new ReferenceError('Entity\x20not\x20found');}return _0x330f4a;})[_0xf965('0x25')](function(_0x3944ad){var _0x4fbb42=_0x3944ad[_0xf965('0x52')];logger[_0xf965('0x64')](_0xf965('0x65'),_0x4fbb42);if(!_[_0xf965('0x66')](_0x3944ad[_0xf965('0x52')])&&fs['existsSync'](_0x4fbb42)){logger[_0xf965('0x64')](_0xf965('0x67')+_0x4fbb42+_0xf965('0x68'));fs[_0xf965('0x69')](_0x4fbb42);}_0x4fbb42=_0x4fbb42+_0xf965('0x6a');if(!_['isNil'](_0x3944ad[_0xf965('0x52')])&&fs[_0xf965('0x57')](_0x4fbb42)){logger[_0xf965('0x64')](_0xf965('0x67')+_0x4fbb42+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x4fbb42);}return _0x3944ad;})[_0xf965('0x25')](function(_0x339108){if(!_0x339108)throw new InternalError();return _0x339108[_0xf965('0x26')]();})[_0xf965('0x25')](function(){_0x4fe083['status'](0xcc)[_0xf965('0x19')]();})[_0xf965('0x47')](handleError(_0x4fe083,null));};function getBucketslist(_0x7c1ef6,_0xdfa405,_0x1c6878){return new Promise(function(_0x521a6b,_0x4a7942){var _0x345ee6=new AWS['S3']({'accessKeyId':_0xdfa405,'secretAccessKey':_0x7c1ef6,'region':_0x1c6878});_0x345ee6[_0xf965('0x6b')]({},function(_0x344d35,_0x47ad38){if(_0x344d35){return _0x4a7942(_0x344d35);}else{return _0x521a6b(_0x47ad38);}});});}function createBucket(_0x477946,_0x72da26,_0x39cadd,_0x4d1e8f){return new Promise(function(_0x357dc2,_0x229c78){var _0x480d0d=new AWS['S3']({'accessKeyId':_0x72da26,'secretAccessKey':_0x477946,'region':_0x39cadd});_0x480d0d[_0xf965('0x6c')]({'Bucket':_0x4d1e8f},function(_0x4f0b10,_0xa5270b){if(_0x4f0b10){return _0x229c78(_0x4f0b10);}else{return _0x357dc2(_0xa5270b);}});});}function uploadFile(_0x5abc0f,_0x4af01f,_0x5ba3dd,_0x413e35,_0x25d019,_0x43cc21){return new Promise(function(_0x2be0fa,_0x1bdc01){var _0x4c8f5c=new AWS['S3']({'accessKeyId':_0x4af01f,'secretAccessKey':_0x5abc0f,'region':_0x5ba3dd});_0x4c8f5c['upload']({'Bucket':_0x413e35,'Key':_0x25d019,'Body':_0x43cc21},function(_0x33fc35,_0x587c79){if(_0x33fc35){return _0x1bdc01(_0x33fc35);}else{return _0x2be0fa(_0x587c79);}});});}function startTranscribe(_0x5a1cf7,_0x28ce5b,_0x2a11b0,_0x145376,_0x532aef,_0x365c6e){return new Promise(function(_0x3be947,_0x28ffda){var _0x3de930=new AWS[(_0xf965('0x6d'))]({'accessKeyId':_0x28ce5b,'secretAccessKey':_0x5a1cf7,'region':_0x2a11b0});_0x3de930['startTranscriptionJob']({'TranscriptionJobName':_0x145376,'LanguageCode':_0x532aef,'Media':{'MediaFileUri':_0x365c6e}},function(_0x265ec0,_0x2555f3){if(_0x265ec0){return _0x28ffda(_0x265ec0);}else{return _0x3be947(_0x2555f3);}});});}function transcribe(_0x5548b5,_0x11186a,_0x3ae860,_0x18bf9c,_0x531af2,_0x1f9281,_0x2afcc4){return new Promise(function(_0x16fd85,_0x2fdfb6){var _0x43c838={};logger['info'](util[_0xf965('0x32')](_0xf965('0x6e'),_0x5548b5,_0x531af2));return uploadFile(_0x11186a,_0x3ae860,_0x18bf9c,_0x531af2,path[_0xf965('0x6f')](_0x1f9281),fs[_0xf965('0x70')](_0x1f9281))[_0xf965('0x25')](function(_0xa892b0){logger[_0xf965('0x64')](util[_0xf965('0x32')](_0xf965('0x71'),_0x5548b5,_0x531af2,_0xa892b0['Location']));_0x43c838[_0xf965('0x72')]=_0xa892b0[_0xf965('0x73')];_0x43c838[_0xf965('0x74')]=_0xa892b0[_0xf965('0x75')];logger['info'](util[_0xf965('0x32')](_0xf965('0x76'),_0x5548b5));return startTranscribe(_0x11186a,_0x3ae860,_0x18bf9c,uuidv4(),_0x2afcc4,_0xa892b0['Location']);})[_0xf965('0x25')](function(_0x1d6c6d){logger[_0xf965('0x64')](util[_0xf965('0x32')]('[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created',_0x5548b5,_0x1d6c6d[_0xf965('0x77')][_0xf965('0x78')]));_0x43c838['transcribeName']=_0x1d6c6d[_0xf965('0x77')][_0xf965('0x78')];_0x43c838[_0xf965('0x79')]=_0x1d6c6d[_0xf965('0x77')][_0xf965('0x7a')];return _0x16fd85(_0x43c838);})[_0xf965('0x47')](function(_0x1100a3){return _0x2fdfb6(_0x1100a3);});});}exports[_0xf965('0x7b')]=function(_0x538bd9,_0x57c131,_0x341be3){var _0x729668;var _0x5557bd;var _0xd9bfdd;var _0x4370b6=require(_0xf965('0x50'));return db[_0xf965('0x43')][_0xf965('0x7c')]({'where':{'id':_0x538bd9[_0xf965('0x49')]['id']}})[_0xf965('0x25')](function(_0x1cd1d3){if(_0x1cd1d3){var _0x4a490c=util[_0xf965('0x32')](_0xf965('0x53'),_0x1cd1d3[_0xf965('0x52')]);if(fs['existsSync'](_0x4a490c)){cypher=!![];return _0x4370b6['decryptFile'](_0x4a490c,_0x1cd1d3['value'],config[_0xf965('0x55')]['recording'])['then'](function(){return _0x1cd1d3;});}return _0x1cd1d3;}})[_0xf965('0x25')](function(_0x9a49a){if(!_0x9a49a){throw new db[(_0xf965('0x58'))][(_0xf965('0x59'))](_0xf965('0x7d'));}_0x5557bd=_0x9a49a;return db[_0xf965('0x7e')][_0xf965('0x7c')]({'where':{'id':0x1}});})[_0xf965('0x25')](handleEntityNotFound(_0x57c131,null))['then'](function(_0x7d8097){if(_0x7d8097){_0x729668=_0x7d8097;if(!_0x729668['transcribe']||!_0x729668[_0xf965('0x7f')]||!_0x729668[_0xf965('0x80')]||!_0x729668[_0xf965('0x81')]||!_0x729668['bucket']){throw new db['Sequelize']['ValidationError']('Transcribe\x20not\x20configured');}if(_0x538bd9[_0xf965('0x4d')][_0xf965('0x82')]&&(!_0x729668['sentiment']||!_0x729668['sentimentAccountId']||!_0x729668['sentimentRegion']||!_0x729668[_0xf965('0x81')]||!_0x729668[_0xf965('0x72')])){throw new db[(_0xf965('0x58'))][(_0xf965('0x59'))]('Sentiment\x20Analysis\x20not\x20configured');}return db[_0xf965('0x83')][_0xf965('0x7c')]({'where':{'id':_0x729668[_0xf965('0x7f')]}});}})[_0xf965('0x25')](function(_0x53b789){if(!_0x53b789){throw new db['Sequelize']['ValidationError'](_0xf965('0x84'));}if(!_0x53b789[_0xf965('0x85')]||!_0x53b789[_0xf965('0x86')]){throw new db[(_0xf965('0x58'))][(_0xf965('0x59'))](_0xf965('0x87'));}_0xd9bfdd=_0x53b789;return getBucketslist(_0xd9bfdd[_0xf965('0x85')],_0xd9bfdd['data2'],_0x729668[_0xf965('0x80')]);})['then'](function(_0xeddd5a){if(_0xeddd5a&&_0xeddd5a['Buckets']){var _0x56a625=_['find'](_0xeddd5a[_0xf965('0x88')],function(_0x4f39fd){return _0x4f39fd[_0xf965('0x89')]===_0x729668[_0xf965('0x72')];});if(!_0x56a625){logger[_0xf965('0x64')](util[_0xf965('0x32')](_0xf965('0x8a'),_0x538bd9[_0xf965('0x49')]['id'],_0x729668[_0xf965('0x72')]));return createBucket(_0xd9bfdd[_0xf965('0x85')],_0xd9bfdd[_0xf965('0x86')],_0x729668[_0xf965('0x80')],_0x729668['bucket']);}logger[_0xf965('0x64')](util[_0xf965('0x32')](_0xf965('0x8b'),_0x538bd9[_0xf965('0x49')]['id'],_0x729668[_0xf965('0x72')]));return;}})[_0xf965('0x25')](function(_0x50c479){if(_0x5557bd[_0xf965('0x79')]===_0xf965('0x8c')){return transcribe(_0x538bd9[_0xf965('0x49')]['id'],_0xd9bfdd[_0xf965('0x85')],_0xd9bfdd[_0xf965('0x86')],_0x729668[_0xf965('0x80')],_0x729668[_0xf965('0x72')],_0x5557bd[_0xf965('0x52')],_0x729668[_0xf965('0x81')]);}else{logger[_0xf965('0x64')](util['format'](_0xf965('0x8d'),_0x538bd9['params']['id']));return{'transcribeStatus':_0xf965('0x8e')};}})['then'](function(_0x2492bf){if(_0x2492bf){_0x2492bf[_0xf965('0x8f')]=_0x538bd9[_0xf965('0x4d')][_0xf965('0x82')];return _0x5557bd[_0xf965('0x90')](_0x2492bf);}})['then'](respondWithResult(_0x57c131,null))[_0xf965('0x47')](handleError(_0x57c131,null));};function writeFile(_0x3a474e,_0xd4fe71){return new Promise(function(_0x2190c3,_0x4fb20c){fs[_0xf965('0x91')](_0xd4fe71,_0x3a474e,function(_0x2fdfd6,_0x5e0dab){if(_0x2fdfd6){return _0x4fb20c(_0x2fdfd6);}else{return _0x2190c3(_0x5e0dab);}});});}exports[_0xf965('0x92')]=function(_0x3bbe9d,_0x23bd1a,_0x3bbd16){return db[_0xf965('0x43')][_0xf965('0x7c')]({'where':{'id':_0x3bbe9d['params']['id']}})[_0xf965('0x25')](handleEntityNotFound(_0x23bd1a))[_0xf965('0x25')](function(_0x4a5c88){if(_0x4a5c88&&_0x4a5c88[_0xf965('0x93')]){var _0x72573b=_0x4a5c88[_0xf965('0x93')];var _0x3c14a7=config[_0xf965('0x94')]+'/server/files/transcribes/transcribe_'+_0x4a5c88['id']+'.txt';if(fs[_0xf965('0x57')](_0x3c14a7)){return _0x3c14a7;}return writeFile(_0x72573b,_0x3c14a7)[_0xf965('0x25')](function(){return _0x3c14a7;});}else{throw new db[(_0xf965('0x58'))][(_0xf965('0x59'))](_0xf965('0x95'));}})[_0xf965('0x25')](function(_0x11976f){return _0x23bd1a['download'](_0x11976f);})[_0xf965('0x47')](handleError(_0x23bd1a));};
\ No newline at end of file
index 4d6ebc7..dd8714b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ca7=['util','../../config/logger','moment','bluebird','rimraf','./voiceRecording.attributes','exports','VoiceRecording','voice_recordings','uniqueid','lodash'];(function(_0x1532e2,_0x485f90){var _0x365cf1=function(_0xfc80f1){while(--_0xfc80f1){_0x1532e2['push'](_0x1532e2['shift']());}};_0x365cf1(++_0x485f90);}(_0x4ca7,0x1e3));var _0x74ca=function(_0x2c42d1,_0x5c9158){_0x2c42d1=_0x2c42d1-0x0;var _0x53122b=_0x4ca7[_0x2c42d1];return _0x53122b;};'use strict';var _=require(_0x74ca('0x0'));var util=require(_0x74ca('0x1'));var logger=require(_0x74ca('0x2'))('api');var moment=require(_0x74ca('0x3'));var BPromise=require(_0x74ca('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x74ca('0x5'));var config=require('../../config/environment');var attributes=require(_0x74ca('0x6'));module[_0x74ca('0x7')]=function(_0x4bccc5,_0x352e08){return _0x4bccc5['define'](_0x74ca('0x8'),attributes,{'tableName':_0x74ca('0x9'),'paranoid':![],'indexes':[{'name':_0x74ca('0xa'),'fields':[_0x74ca('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7ff5=['request-promise','path','../../config/environment','exports','define','voice_recordings','uniqueid','util','../../config/logger','api','bluebird'];(function(_0x511beb,_0x237d2a){var _0x240851=function(_0xa0d75b){while(--_0xa0d75b){_0x511beb['push'](_0x511beb['shift']());}};_0x240851(++_0x237d2a);}(_0x7ff5,0xcd));var _0x57ff=function(_0x488382,_0x2d1a4e){_0x488382=_0x488382-0x0;var _0x4f329b=_0x7ff5[_0x488382];return _0x4f329b;};'use strict';var _=require('lodash');var util=require(_0x57ff('0x0'));var logger=require(_0x57ff('0x1'))(_0x57ff('0x2'));var moment=require('moment');var BPromise=require(_0x57ff('0x3'));var rp=require(_0x57ff('0x4'));var fs=require('fs');var path=require(_0x57ff('0x5'));var rimraf=require('rimraf');var config=require(_0x57ff('0x6'));var attributes=require('./voiceRecording.attributes');module[_0x57ff('0x7')]=function(_0x364fb3,_0x40948b){return _0x364fb3[_0x57ff('0x8')]('VoiceRecording',attributes,{'tableName':_0x57ff('0x9'),'paranoid':![],'indexes':[{'name':_0x57ff('0xa'),'fields':[_0x57ff('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 6129351..070fd6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7708=['code','message','UpdateVoiceRecording','VoiceRecording','update','body','options','where','limit','then','catch','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','existsSync','value','%s.cypher','encryptFile','recording','CreateVoiceRecording\x20file\x20encrypted','lodash','util','bluebird','../../config/logger','rpc','jayson/promise','http','request','info','VoiceRecording,\x20%s,\x20%s','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x24cada,_0x454d0b){var _0x13e47a=function(_0x49457f){while(--_0x49457f){_0x24cada['push'](_0x24cada['shift']());}};_0x13e47a(++_0x454d0b);}(_0x7708,0x188));var _0x8770=function(_0x10df18,_0x13338c){_0x10df18=_0x10df18-0x0;var _0x1f9a1d=_0x7708[_0x10df18];return _0x1f9a1d;};'use strict';var _=require(_0x8770('0x0'));var util=require(_0x8770('0x1'));var moment=require('moment');var BPromise=require(_0x8770('0x2'));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(_0x8770('0x3'))(_0x8770('0x4'));var config=require('../../config/environment');var jayson=require(_0x8770('0x5'));var client=jayson['client'][_0x8770('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x42d305,_0x2b0295,_0x20e293){return new BPromise(function(_0x212b12,_0x3e1113){return client[_0x8770('0x7')](_0x42d305,_0x20e293)['then'](function(_0x396322){logger[_0x8770('0x8')](_0x8770('0x9'),_0x2b0295,'request\x20sent');logger[_0x8770('0xa')](_0x8770('0xb'),_0x2b0295,_0x8770('0xc'),JSON[_0x8770('0xd')](_0x396322));if(_0x396322['error']){if(_0x396322[_0x8770('0xe')][_0x8770('0xf')]===0x1f4){logger[_0x8770('0xe')]('VoiceRecording,\x20%s,\x20%s',_0x2b0295,_0x396322[_0x8770('0xe')][_0x8770('0x10')]);return _0x3e1113(_0x396322[_0x8770('0xe')][_0x8770('0x10')]);}logger[_0x8770('0xe')](_0x8770('0x9'),_0x2b0295,_0x396322[_0x8770('0xe')][_0x8770('0x10')]);return _0x212b12(_0x396322['error'][_0x8770('0x10')]);}else{logger[_0x8770('0x8')]('VoiceRecording,\x20%s,\x20%s',_0x2b0295,_0x8770('0xc'));_0x212b12(_0x396322['result'][_0x8770('0x10')]);}})['catch'](function(_0x5b4716){logger['error'](_0x8770('0x9'),_0x2b0295,_0x5b4716);_0x3e1113(_0x5b4716);});});}exports[_0x8770('0x11')]=function(_0x17b634){var _0xe0d611=this;return new Promise(function(_0x4b0691,_0x550be9){return db[_0x8770('0x12')][_0x8770('0x13')](_0x17b634[_0x8770('0x14')],{'raw':_0x17b634[_0x8770('0x15')]?_0x17b634[_0x8770('0x15')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x17b634[_0x8770('0x15')]?_0x17b634[_0x8770('0x15')][_0x8770('0x16')]||null:null,'attributes':_0x17b634[_0x8770('0x15')]?_0x17b634['options']['attributes']||null:null,'limit':_0x17b634[_0x8770('0x15')]?_0x17b634[_0x8770('0x15')][_0x8770('0x17')]||null:null})[_0x8770('0x18')](function(_0x2760b2){logger[_0x8770('0x8')]('UpdateVoiceRecording',_0x17b634);logger[_0x8770('0xa')](_0x8770('0x11'),_0x17b634,JSON[_0x8770('0xd')](_0x2760b2));_0x4b0691(_0x2760b2);})[_0x8770('0x19')](function(_0x51cdb5){logger[_0x8770('0xe')]('UpdateVoiceRecording',_0x51cdb5[_0x8770('0x10')],_0x17b634);_0x550be9(_0xe0d611[_0x8770('0xe')](0x1f4,_0x51cdb5[_0x8770('0x10')]));});});};exports[_0x8770('0x1a')]=function(_0x1538b2){var _0x2cd084=this;return new Promise(function(_0x293f53,_0x367564){var _0xb3f4aa=require(_0x8770('0x1b'));var _0x5f4973;return db[_0x8770('0x1c')][_0x8770('0x1d')]({'attributes':['id',_0x8770('0x1e')],'where':{'id':0x1},'raw':!![]})[_0x8770('0x18')](function(_0x246128){_0x5f4973=_0x246128;return db[_0x8770('0x12')]['create'](_0x1538b2['body']);})[_0x8770('0x18')](function(_0x11de6e){if(_0x5f4973[_0x8770('0x1e')]&&fs[_0x8770('0x1f')](_0x11de6e[_0x8770('0x20')])){var _0x4bc072=util['format'](_0x8770('0x21'),_0x11de6e[_0x8770('0x20')]);return _0xb3f4aa[_0x8770('0x22')](_0x11de6e[_0x8770('0x20')],_0x4bc072,config['secrets'][_0x8770('0x23')])['then'](function(){fs['unlink'](_0x11de6e[_0x8770('0x20')]);logger['info'](_0x8770('0x24'));return _0x11de6e;});}return _0x11de6e;})[_0x8770('0x18')](function(_0x1f3af6){logger[_0x8770('0x8')](_0x8770('0x1a'),_0x1538b2);logger[_0x8770('0xa')](_0x8770('0x1a'),_0x1538b2,JSON[_0x8770('0xd')](_0x1f3af6));_0x293f53(_0x1f3af6);})[_0x8770('0x19')](function(_0x53197e){logger[_0x8770('0xe')](_0x8770('0x1a'),_0x53197e[_0x8770('0x10')],_0x1538b2);_0x367564(_0x2cd084['error'](0x1f4,_0x53197e['message']));});});};
\ No newline at end of file
+var _0xe3da=['CreateVoiceRecording\x20file\x20encrypted','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','VoiceRecording','update','body','options','where','attributes','limit','then','UpdateVoiceRecording','catch','CreateVoiceRecording','../../components/encryptor','findOne','callRecordingEncryption','existsSync','value','format','%s.cypher','secrets','recording','unlink'];(function(_0x4b4ee0,_0x1243f){var _0x2c2de8=function(_0x47736f){while(--_0x47736f){_0x4b4ee0['push'](_0x4b4ee0['shift']());}};_0x2c2de8(++_0x1243f);}(_0xe3da,0x1cd));var _0xae3d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe3da[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xae3d('0x0'));var util=require(_0xae3d('0x1'));var moment=require(_0xae3d('0x2'));var BPromise=require(_0xae3d('0x3'));var rs=require(_0xae3d('0x4'));var fs=require('fs');var Redis=require(_0xae3d('0x5'));var db=require(_0xae3d('0x6'))['db'];var utils=require(_0xae3d('0x7'));var logger=require(_0xae3d('0x8'))(_0xae3d('0x9'));var config=require(_0xae3d('0xa'));var jayson=require(_0xae3d('0xb'));var client=jayson[_0xae3d('0xc')][_0xae3d('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x476579,_0x33c089,_0x583b98){return new BPromise(function(_0x2a5c45,_0x3d6650){return client['request'](_0x476579,_0x583b98)['then'](function(_0x459592){logger[_0xae3d('0xe')](_0xae3d('0xf'),_0x33c089,_0xae3d('0x10'));logger[_0xae3d('0x11')](_0xae3d('0x12'),_0x33c089,'request\x20sent',JSON[_0xae3d('0x13')](_0x459592));if(_0x459592['error']){if(_0x459592[_0xae3d('0x14')][_0xae3d('0x15')]===0x1f4){logger[_0xae3d('0x14')](_0xae3d('0xf'),_0x33c089,_0x459592['error'][_0xae3d('0x16')]);return _0x3d6650(_0x459592[_0xae3d('0x14')][_0xae3d('0x16')]);}logger[_0xae3d('0x14')](_0xae3d('0xf'),_0x33c089,_0x459592[_0xae3d('0x14')][_0xae3d('0x16')]);return _0x2a5c45(_0x459592['error'][_0xae3d('0x16')]);}else{logger[_0xae3d('0xe')](_0xae3d('0xf'),_0x33c089,_0xae3d('0x10'));_0x2a5c45(_0x459592[_0xae3d('0x17')][_0xae3d('0x16')]);}})['catch'](function(_0xe925fd){logger[_0xae3d('0x14')](_0xae3d('0xf'),_0x33c089,_0xe925fd);_0x3d6650(_0xe925fd);});});}exports['UpdateVoiceRecording']=function(_0x3f8cf9){var _0x4cbe4e=this;return new Promise(function(_0x558e42,_0x4d931d){return db[_0xae3d('0x18')][_0xae3d('0x19')](_0x3f8cf9[_0xae3d('0x1a')],{'raw':_0x3f8cf9[_0xae3d('0x1b')]?_0x3f8cf9[_0xae3d('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3f8cf9[_0xae3d('0x1b')]?_0x3f8cf9['options'][_0xae3d('0x1c')]||null:null,'attributes':_0x3f8cf9[_0xae3d('0x1b')]?_0x3f8cf9[_0xae3d('0x1b')][_0xae3d('0x1d')]||null:null,'limit':_0x3f8cf9[_0xae3d('0x1b')]?_0x3f8cf9[_0xae3d('0x1b')][_0xae3d('0x1e')]||null:null})[_0xae3d('0x1f')](function(_0x3224ff){logger[_0xae3d('0xe')](_0xae3d('0x20'),_0x3f8cf9);logger[_0xae3d('0x11')](_0xae3d('0x20'),_0x3f8cf9,JSON[_0xae3d('0x13')](_0x3224ff));_0x558e42(_0x3224ff);})[_0xae3d('0x21')](function(_0x1fe90f){logger[_0xae3d('0x14')](_0xae3d('0x20'),_0x1fe90f[_0xae3d('0x16')],_0x3f8cf9);_0x4d931d(_0x4cbe4e[_0xae3d('0x14')](0x1f4,_0x1fe90f['message']));});});};exports[_0xae3d('0x22')]=function(_0x185e71){var _0xb5940=this;return new Promise(function(_0x52df0f,_0x256bd0){var _0x4391db=require(_0xae3d('0x23'));var _0x54c1e1;return db['Setting'][_0xae3d('0x24')]({'attributes':['id',_0xae3d('0x25')],'where':{'id':0x1},'raw':!![]})[_0xae3d('0x1f')](function(_0x3114f9){_0x54c1e1=_0x3114f9;return db[_0xae3d('0x18')]['create'](_0x185e71[_0xae3d('0x1a')]);})[_0xae3d('0x1f')](function(_0x5a39c5){if(_0x54c1e1[_0xae3d('0x25')]&&fs[_0xae3d('0x26')](_0x5a39c5[_0xae3d('0x27')])){var _0x46f484=util[_0xae3d('0x28')](_0xae3d('0x29'),_0x5a39c5['value']);return _0x4391db['encryptFile'](_0x5a39c5['value'],_0x46f484,config[_0xae3d('0x2a')][_0xae3d('0x2b')])[_0xae3d('0x1f')](function(){fs[_0xae3d('0x2c')](_0x5a39c5['value']);logger[_0xae3d('0xe')](_0xae3d('0x2d'));return _0x5a39c5;});}return _0x5a39c5;})[_0xae3d('0x1f')](function(_0x3748d2){logger[_0xae3d('0xe')](_0xae3d('0x22'),_0x185e71);logger[_0xae3d('0x11')]('CreateVoiceRecording',_0x185e71,JSON[_0xae3d('0x13')](_0x3748d2));_0x52df0f(_0x3748d2);})['catch'](function(_0x55aae4){logger[_0xae3d('0x14')]('CreateVoiceRecording',_0x55aae4[_0xae3d('0x16')],_0x185e71);_0x256bd0(_0xb5940['error'](0x1f4,_0x55aae4['message']));});});};
\ No newline at end of file
index 89f14cb..4bc8403 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33a1=['post','put','delete','destroy','multer','util','express','Router','get','/describe','describe','/:id','isAuthenticated'];(function(_0x2e611f,_0x5f03a1){var _0xfcd6b6=function(_0x49b9be){while(--_0x49b9be){_0x2e611f['push'](_0x2e611f['shift']());}};_0xfcd6b6(++_0x5f03a1);}(_0x33a1,0x1f2));var _0x133a=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x33a1[_0x59ee6f];return _0x4c0979;};'use strict';var multer=require(_0x133a('0x0'));var util=require(_0x133a('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x133a('0x2'));var router=express[_0x133a('0x3')]();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('./voiceTransferReport.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x133a('0x4')](_0x133a('0x5'),auth['isAuthenticated'](),controller[_0x133a('0x6')]);router[_0x133a('0x4')](_0x133a('0x7'),auth[_0x133a('0x8')](),controller['show']);router[_0x133a('0x9')]('/',auth[_0x133a('0x8')](),controller['create']);router[_0x133a('0xa')]('/:id',auth[_0x133a('0x8')](),controller['update']);router[_0x133a('0xb')](_0x133a('0x7'),auth[_0x133a('0x8')](),controller[_0x133a('0xc')]);module['exports']=router;
\ No newline at end of file
+var _0x374f=['isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','exports','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./voiceTransferReport.controller','get'];(function(_0x4476cb,_0x1d71b6){var _0x343cf4=function(_0x2bc6ee){while(--_0x2bc6ee){_0x4476cb['push'](_0x4476cb['shift']());}};_0x343cf4(++_0x1d71b6);}(_0x374f,0x110));var _0xf374=function(_0x3ec26c,_0x46d1ff){_0x3ec26c=_0x3ec26c-0x0;var _0x20d798=_0x374f[_0x3ec26c];return _0x20d798;};'use strict';var multer=require(_0xf374('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xf374('0x1'));var express=require(_0xf374('0x2'));var router=express['Router']();var fs_extra=require(_0xf374('0x3'));var auth=require(_0xf374('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xf374('0x5'));var controller=require(_0xf374('0x6'));router[_0xf374('0x7')]('/',auth[_0xf374('0x8')](),controller[_0xf374('0x9')]);router['get'](_0xf374('0xa'),auth[_0xf374('0x8')](),controller[_0xf374('0xb')]);router[_0xf374('0x7')](_0xf374('0xc'),auth['isAuthenticated'](),controller[_0xf374('0xd')]);router[_0xf374('0xe')]('/',auth['isAuthenticated'](),controller[_0xf374('0xf')]);router[_0xf374('0x10')](_0xf374('0xc'),auth[_0xf374('0x8')](),controller[_0xf374('0x11')]);router[_0xf374('0x12')](_0xf374('0xc'),auth[_0xf374('0x8')](),controller['destroy']);module[_0xf374('0x13')]=router;
\ No newline at end of file
index 9eeb5e3..a287efc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf9f=['exports','ENUM','blind','attended','STRING','Yes','moment'];(function(_0x4a6b8b,_0x4fa6d6){var _0x4fa484=function(_0xec61ce){while(--_0xec61ce){_0x4a6b8b['push'](_0x4a6b8b['shift']());}};_0x4fa484(++_0x4fa6d6);}(_0xdf9f,0xe6));var _0xfdf9=function(_0x991a2b,_0x2da13c){_0x991a2b=_0x991a2b-0x0;var _0x32d6fd=_0xdf9f[_0x991a2b];return _0x32d6fd;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xfdf9('0x0'));module[_0xfdf9('0x1')]={'type':{'type':Sequelize[_0xfdf9('0x2')](_0xfdf9('0x3'),_0xfdf9('0x4'))},'result':{'type':Sequelize[_0xfdf9('0x5')]},'transfererchannel':{'type':Sequelize[_0xfdf9('0x5')]},'transferercalleridnum':{'type':Sequelize[_0xfdf9('0x5')]},'transferercalleridname':{'type':Sequelize[_0xfdf9('0x5')]},'transfererconnectedlinenum':{'type':Sequelize['STRING']},'transfererconnectedlinename':{'type':Sequelize[_0xfdf9('0x5')]},'transfereraccountcode':{'type':Sequelize[_0xfdf9('0x5')]},'transferercontext':{'type':Sequelize[_0xfdf9('0x5')]},'transfererexten':{'type':Sequelize[_0xfdf9('0x5')]},'transfererlinkedid':{'type':Sequelize[_0xfdf9('0x5')]},'transfereechannel':{'type':Sequelize[_0xfdf9('0x5')]},'transfereecalleridnum':{'type':Sequelize[_0xfdf9('0x5')]},'transfereecalleridname':{'type':Sequelize[_0xfdf9('0x5')]},'transfereeconnectedlinenum':{'type':Sequelize[_0xfdf9('0x5')]},'transfereeconnectedlinename':{'type':Sequelize[_0xfdf9('0x5')]},'transfereeaccountcode':{'type':Sequelize['STRING']},'transfereecontext':{'type':Sequelize['STRING']},'transfereeexten':{'type':Sequelize[_0xfdf9('0x5')]},'transfereelinkedid':{'type':Sequelize[_0xfdf9('0x5')]},'isexternal':{'type':Sequelize[_0xfdf9('0x2')](_0xfdf9('0x6'),'No')},'context':{'type':Sequelize[_0xfdf9('0x5')]},'extension':{'type':Sequelize[_0xfdf9('0x5')]}};
\ No newline at end of file
+var _0x76f8=['Yes','sequelize','moment','exports','ENUM','attended','STRING'];(function(_0x2892da,_0x191a40){var _0x28cff2=function(_0x57023d){while(--_0x57023d){_0x2892da['push'](_0x2892da['shift']());}};_0x28cff2(++_0x191a40);}(_0x76f8,0x10b));var _0x876f=function(_0x17ccf0,_0x42d147){_0x17ccf0=_0x17ccf0-0x0;var _0x5a0651=_0x76f8[_0x17ccf0];return _0x5a0651;};'use strict';var Sequelize=require(_0x876f('0x0'));var moment=require(_0x876f('0x1'));module[_0x876f('0x2')]={'type':{'type':Sequelize[_0x876f('0x3')]('blind',_0x876f('0x4'))},'result':{'type':Sequelize['STRING']},'transfererchannel':{'type':Sequelize[_0x876f('0x5')]},'transferercalleridnum':{'type':Sequelize[_0x876f('0x5')]},'transferercalleridname':{'type':Sequelize[_0x876f('0x5')]},'transfererconnectedlinenum':{'type':Sequelize[_0x876f('0x5')]},'transfererconnectedlinename':{'type':Sequelize[_0x876f('0x5')]},'transfereraccountcode':{'type':Sequelize[_0x876f('0x5')]},'transferercontext':{'type':Sequelize['STRING']},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize[_0x876f('0x5')]},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize[_0x876f('0x5')]},'transfereecalleridname':{'type':Sequelize[_0x876f('0x5')]},'transfereeconnectedlinenum':{'type':Sequelize['STRING']},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize[_0x876f('0x5')]},'transfereecontext':{'type':Sequelize['STRING']},'transfereeexten':{'type':Sequelize[_0x876f('0x5')]},'transfereelinkedid':{'type':Sequelize[_0x876f('0x5')]},'isexternal':{'type':Sequelize[_0x876f('0x3')](_0x876f('0x6'),'No')},'context':{'type':Sequelize[_0x876f('0x5')]},'extension':{'type':Sequelize[_0x876f('0x5')]}};
\ No newline at end of file
index e306bea..a16299b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5090=['type','query','keys','filters','intersection','model','fields','attributes','length','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','params','rawAttributes','find','create','body','describe','eml-format','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','lodash','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','json','offset','undefined','count','limit','status','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','VoiceTransferReport','fieldName'];(function(_0x38c3ab,_0xb58563){var _0x177178=function(_0x2437ce){while(--_0x2437ce){_0x38c3ab['push'](_0x38c3ab['shift']());}};_0x177178(++_0xb58563);}(_0x5090,0x144));var _0x0509=function(_0xf28084,_0x4e0c8b){_0xf28084=_0xf28084-0x0;var _0x457042=_0x5090[_0xf28084];return _0x457042;};'use strict';var emlformat=require(_0x0509('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x0509('0x1'));var rp=require(_0x0509('0x2'));var moment=require('moment');var BPromise=require(_0x0509('0x3'));var Mustache=require(_0x0509('0x4'));var util=require(_0x0509('0x5'));var path=require(_0x0509('0x6'));var sox=require('sox');var csv=require(_0x0509('0x7'));var ejs=require(_0x0509('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0509('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x0509('0x7'));var querystring=require(_0x0509('0xa'));var Papa=require(_0x0509('0xb'));var Redis=require(_0x0509('0xc'));var authService=require(_0x0509('0xd'));var qs=require(_0x0509('0xe'));var as=require(_0x0509('0xf'));var hardwareService=require(_0x0509('0x10'));var logger=require(_0x0509('0x11'))(_0x0509('0x12'));var utils=require(_0x0509('0x13'));var config=require(_0x0509('0x14'));var licenseUtil=require(_0x0509('0x15'));var db=require(_0x0509('0x16'))['db'];function respondWithStatusCode(_0x4d8e13,_0x157553){_0x157553=_0x157553||0xcc;return function(_0x32b5c3){if(_0x32b5c3){return _0x4d8e13[_0x0509('0x17')](_0x157553);}return _0x4d8e13['status'](_0x157553)[_0x0509('0x18')]();};}function respondWithResult(_0x2b63e1,_0xb39903){_0xb39903=_0xb39903||0xc8;return function(_0x2b50dd){if(_0x2b50dd){return _0x2b63e1['status'](_0xb39903)[_0x0509('0x19')](_0x2b50dd);}};}function respondWithFilteredResult(_0x319f0f,_0x17bbc1){return function(_0x26f5c6){if(_0x26f5c6){var _0x537363=typeof _0x17bbc1[_0x0509('0x1a')]===_0x0509('0x1b')&&typeof _0x17bbc1['limit']==='undefined';var _0x531d70=_0x26f5c6['count'];var _0x21c65b=_0x537363?0x0:_0x17bbc1[_0x0509('0x1a')];var _0x555225=_0x537363?_0x26f5c6[_0x0509('0x1c')]:_0x17bbc1[_0x0509('0x1a')]+_0x17bbc1[_0x0509('0x1d')];var _0xf37dc5;if(_0x555225>=_0x531d70){_0x555225=_0x531d70;_0xf37dc5=0xc8;}else{_0xf37dc5=0xce;}_0x319f0f[_0x0509('0x1e')](_0xf37dc5);return _0x319f0f[_0x0509('0x1f')](_0x0509('0x20'),_0x21c65b+'-'+_0x555225+'/'+_0x531d70)[_0x0509('0x19')](_0x26f5c6);}return null;};}function patchUpdates(_0x252117){return function(_0x2c4698){try{jsonpatch[_0x0509('0x21')](_0x2c4698,_0x252117,!![]);}catch(_0xd10149){return BPromise[_0x0509('0x22')](_0xd10149);}return _0x2c4698[_0x0509('0x23')]();};}function saveUpdates(_0x194567,_0x4ebf49){return function(_0x69eb){if(_0x69eb){return _0x69eb[_0x0509('0x24')](_0x194567)[_0x0509('0x25')](function(_0x180675){return _0x180675;});}return null;};}function removeEntity(_0x3dc25c,_0x506374){return function(_0x1128b1){if(_0x1128b1){return _0x1128b1[_0x0509('0x26')]()[_0x0509('0x25')](function(){_0x3dc25c[_0x0509('0x1e')](0xcc)[_0x0509('0x18')]();});}};}function handleEntityNotFound(_0x1b8920,_0x240715){return function(_0x3ef756){if(!_0x3ef756){_0x1b8920[_0x0509('0x17')](0x194);}return _0x3ef756;};}function handleError(_0x5472bc,_0x28aafd){_0x28aafd=_0x28aafd||0x1f4;return function(_0x5987b7){logger[_0x0509('0x27')](_0x5987b7[_0x0509('0x28')]);if(_0x5987b7[_0x0509('0x29')]){delete _0x5987b7['name'];}_0x5472bc['status'](_0x28aafd)[_0x0509('0x2a')](_0x5987b7);};}exports['index']=function(_0x5b6560,_0x5eaa53){var _0x329fd6={},_0xc6f0f0={},_0x4d5c04={'count':0x0,'rows':[]};var _0x2ddc5d=_[_0x0509('0x2b')](db[_0x0509('0x2c')]['rawAttributes'],function(_0x43e1cc){return{'name':_0x43e1cc[_0x0509('0x2d')],'type':_0x43e1cc[_0x0509('0x2e')]['key']};});_0xc6f0f0['model']=_[_0x0509('0x2b')](_0x2ddc5d,_0x0509('0x29'));_0xc6f0f0[_0x0509('0x2f')]=_[_0x0509('0x30')](_0x5b6560[_0x0509('0x2f')]);_0xc6f0f0[_0x0509('0x31')]=_[_0x0509('0x32')](_0xc6f0f0[_0x0509('0x33')],_0xc6f0f0[_0x0509('0x2f')]);_0x329fd6['attributes']=_[_0x0509('0x32')](_0xc6f0f0[_0x0509('0x33')],qs['fields'](_0x5b6560[_0x0509('0x2f')][_0x0509('0x34')]));_0x329fd6[_0x0509('0x35')]=_0x329fd6[_0x0509('0x35')][_0x0509('0x36')]?_0x329fd6[_0x0509('0x35')]:_0xc6f0f0[_0x0509('0x33')];if(!_0x5b6560[_0x0509('0x2f')]['hasOwnProperty'](_0x0509('0x37'))){_0x329fd6[_0x0509('0x1d')]=qs[_0x0509('0x1d')](_0x5b6560[_0x0509('0x2f')]['limit']);_0x329fd6[_0x0509('0x1a')]=qs[_0x0509('0x1a')](_0x5b6560[_0x0509('0x2f')][_0x0509('0x1a')]);}_0x329fd6['order']=qs['sort'](_0x5b6560[_0x0509('0x2f')][_0x0509('0x38')]);_0x329fd6[_0x0509('0x39')]=qs[_0x0509('0x31')](_[_0x0509('0x3a')](_0x5b6560[_0x0509('0x2f')],_0xc6f0f0[_0x0509('0x31')]),_0x2ddc5d);if(_0x5b6560[_0x0509('0x2f')]['filter']){_0x329fd6[_0x0509('0x39')]=_[_0x0509('0x3b')](_0x329fd6[_0x0509('0x39')],{'$or':_[_0x0509('0x2b')](_0x2ddc5d,function(_0x4fd71c){if(_0x4fd71c['type']!==_0x0509('0x3c')){var _0x37df59={};_0x37df59[_0x4fd71c['name']]={'$like':'%'+_0x5b6560['query'][_0x0509('0x3d')]+'%'};return _0x37df59;}})});}_0x329fd6=_[_0x0509('0x3b')]({},_0x329fd6,_0x5b6560[_0x0509('0x3e')]);var _0x37c46d={'where':_0x329fd6['where']};return db['VoiceTransferReport'][_0x0509('0x1c')](_0x37c46d)[_0x0509('0x25')](function(_0x4da9d9){_0x4d5c04[_0x0509('0x1c')]=_0x4da9d9;if(_0x5b6560[_0x0509('0x2f')][_0x0509('0x3f')]){_0x329fd6[_0x0509('0x40')]=[{'all':!![]}];}return db[_0x0509('0x2c')][_0x0509('0x41')](_0x329fd6);})[_0x0509('0x25')](function(_0x220128){_0x4d5c04['rows']=_0x220128;return _0x4d5c04;})[_0x0509('0x25')](respondWithFilteredResult(_0x5eaa53,_0x329fd6))[_0x0509('0x42')](handleError(_0x5eaa53,null));};exports[_0x0509('0x43')]=function(_0x1298e7,_0x54f468){var _0x464073={'raw':!![],'where':{'id':_0x1298e7[_0x0509('0x44')]['id']}},_0x3e1e5c={};_0x3e1e5c[_0x0509('0x33')]=_[_0x0509('0x30')](db[_0x0509('0x2c')][_0x0509('0x45')]);_0x3e1e5c[_0x0509('0x2f')]=_[_0x0509('0x30')](_0x1298e7[_0x0509('0x2f')]);_0x3e1e5c[_0x0509('0x31')]=_[_0x0509('0x32')](_0x3e1e5c['model'],_0x3e1e5c[_0x0509('0x2f')]);_0x464073[_0x0509('0x35')]=_['intersection'](_0x3e1e5c[_0x0509('0x33')],qs[_0x0509('0x34')](_0x1298e7[_0x0509('0x2f')][_0x0509('0x34')]));_0x464073[_0x0509('0x35')]=_0x464073[_0x0509('0x35')]['length']?_0x464073['attributes']:_0x3e1e5c[_0x0509('0x33')];if(_0x1298e7[_0x0509('0x2f')]['includeAll']){_0x464073[_0x0509('0x40')]=[{'all':!![]}];}_0x464073=_['merge']({},_0x464073,_0x1298e7[_0x0509('0x3e')]);return db[_0x0509('0x2c')][_0x0509('0x46')](_0x464073)[_0x0509('0x25')](handleEntityNotFound(_0x54f468,null))['then'](respondWithResult(_0x54f468,null))[_0x0509('0x42')](handleError(_0x54f468,null));};exports[_0x0509('0x47')]=function(_0x216089,_0x5b8e41){return db['VoiceTransferReport'][_0x0509('0x47')](_0x216089[_0x0509('0x48')],{})['then'](respondWithResult(_0x5b8e41,0xc9))['catch'](handleError(_0x5b8e41,null));};exports['update']=function(_0x2bfb8e,_0x4c1de2){if(_0x2bfb8e[_0x0509('0x48')]['id']){delete _0x2bfb8e['body']['id'];}return db['VoiceTransferReport'][_0x0509('0x46')]({'where':{'id':_0x2bfb8e[_0x0509('0x44')]['id']}})[_0x0509('0x25')](handleEntityNotFound(_0x4c1de2,null))[_0x0509('0x25')](saveUpdates(_0x2bfb8e['body'],null))[_0x0509('0x25')](respondWithResult(_0x4c1de2,null))[_0x0509('0x42')](handleError(_0x4c1de2,null));};exports[_0x0509('0x26')]=function(_0x8b1b1e,_0x5f14bb){return db[_0x0509('0x2c')]['find']({'where':{'id':_0x8b1b1e['params']['id']}})[_0x0509('0x25')](handleEntityNotFound(_0x5f14bb,null))[_0x0509('0x25')](removeEntity(_0x5f14bb,null))[_0x0509('0x42')](handleError(_0x5f14bb,null));};exports[_0x0509('0x49')]=function(_0x2cc1d5,_0x1b36d3){return db[_0x0509('0x2c')][_0x0509('0x49')]()[_0x0509('0x25')](respondWithResult(_0x1b36d3,null))['catch'](handleError(_0x1b36d3,null));};
\ No newline at end of file
+var _0xb87b=['VoiceTransferReport','fieldName','type','key','query','filters','intersection','model','attributes','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','keys','rawAttributes','fields','length','find','create','body','params','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','update','then','destroy','error','stack','name','send','index','map'];(function(_0x3e0191,_0x1d4b20){var _0xf2ae83=function(_0x277210){while(--_0x277210){_0x3e0191['push'](_0x3e0191['shift']());}};_0xf2ae83(++_0x1d4b20);}(_0xb87b,0x107));var _0xbb87=function(_0x3b0e87,_0x47ec1c){_0x3b0e87=_0x3b0e87-0x0;var _0x456b12=_0xb87b[_0x3b0e87];return _0x456b12;};'use strict';var emlformat=require(_0xbb87('0x0'));var rimraf=require(_0xbb87('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbb87('0x2'));var rp=require(_0xbb87('0x3'));var moment=require(_0xbb87('0x4'));var BPromise=require(_0xbb87('0x5'));var Mustache=require('mustache');var util=require(_0xbb87('0x6'));var path=require(_0xbb87('0x7'));var sox=require(_0xbb87('0x8'));var csv=require('to-csv');var ejs=require(_0xbb87('0x9'));var fs=require('fs');var fs_extra=require(_0xbb87('0xa'));var _=require(_0xbb87('0xb'));var squel=require('squel');var crypto=require(_0xbb87('0xc'));var jsforce=require(_0xbb87('0xd'));var deskjs=require(_0xbb87('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xbb87('0xf'));var Redis=require(_0xbb87('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xbb87('0x11'));var as=require(_0xbb87('0x12'));var hardwareService=require(_0xbb87('0x13'));var logger=require(_0xbb87('0x14'))('api');var utils=require(_0xbb87('0x15'));var config=require(_0xbb87('0x16'));var licenseUtil=require(_0xbb87('0x17'));var db=require(_0xbb87('0x18'))['db'];function respondWithStatusCode(_0x5d1178,_0x1a6412){_0x1a6412=_0x1a6412||0xcc;return function(_0x2537bc){if(_0x2537bc){return _0x5d1178[_0xbb87('0x19')](_0x1a6412);}return _0x5d1178[_0xbb87('0x1a')](_0x1a6412)[_0xbb87('0x1b')]();};}function respondWithResult(_0x1b5d55,_0x55b6a7){_0x55b6a7=_0x55b6a7||0xc8;return function(_0x3c5bf5){if(_0x3c5bf5){return _0x1b5d55[_0xbb87('0x1a')](_0x55b6a7)[_0xbb87('0x1c')](_0x3c5bf5);}};}function respondWithFilteredResult(_0xff7ab5,_0x4f433b){return function(_0x58dd28){if(_0x58dd28){var _0x4ed31f=typeof _0x4f433b[_0xbb87('0x1d')]===_0xbb87('0x1e')&&typeof _0x4f433b[_0xbb87('0x1f')]===_0xbb87('0x1e');var _0x736a1c=_0x58dd28['count'];var _0x55d556=_0x4ed31f?0x0:_0x4f433b[_0xbb87('0x1d')];var _0x1a6554=_0x4ed31f?_0x58dd28[_0xbb87('0x20')]:_0x4f433b['offset']+_0x4f433b[_0xbb87('0x1f')];var _0xdf98d;if(_0x1a6554>=_0x736a1c){_0x1a6554=_0x736a1c;_0xdf98d=0xc8;}else{_0xdf98d=0xce;}_0xff7ab5[_0xbb87('0x1a')](_0xdf98d);return _0xff7ab5[_0xbb87('0x21')]('Content-Range',_0x55d556+'-'+_0x1a6554+'/'+_0x736a1c)[_0xbb87('0x1c')](_0x58dd28);}return null;};}function patchUpdates(_0x27cb4e){return function(_0x390b79){try{jsonpatch['apply'](_0x390b79,_0x27cb4e,!![]);}catch(_0x3cf89d){return BPromise[_0xbb87('0x22')](_0x3cf89d);}return _0x390b79[_0xbb87('0x23')]();};}function saveUpdates(_0x34c454,_0x8151f7){return function(_0x2ff507){if(_0x2ff507){return _0x2ff507[_0xbb87('0x24')](_0x34c454)[_0xbb87('0x25')](function(_0x517796){return _0x517796;});}return null;};}function removeEntity(_0x571aa6,_0x516ad8){return function(_0x3cc805){if(_0x3cc805){return _0x3cc805[_0xbb87('0x26')]()[_0xbb87('0x25')](function(){_0x571aa6[_0xbb87('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1f93e0,_0x508f7f){return function(_0x1f66d4){if(!_0x1f66d4){_0x1f93e0['sendStatus'](0x194);}return _0x1f66d4;};}function handleError(_0x4aab9d,_0x5a4ca1){_0x5a4ca1=_0x5a4ca1||0x1f4;return function(_0x6a92a9){logger[_0xbb87('0x27')](_0x6a92a9[_0xbb87('0x28')]);if(_0x6a92a9[_0xbb87('0x29')]){delete _0x6a92a9[_0xbb87('0x29')];}_0x4aab9d[_0xbb87('0x1a')](_0x5a4ca1)[_0xbb87('0x2a')](_0x6a92a9);};}exports[_0xbb87('0x2b')]=function(_0x1ad101,_0x4897f0){var _0x342966={},_0x4d43b7={},_0x43611c={'count':0x0,'rows':[]};var _0x44bcac=_[_0xbb87('0x2c')](db[_0xbb87('0x2d')]['rawAttributes'],function(_0x2db6b8){return{'name':_0x2db6b8[_0xbb87('0x2e')],'type':_0x2db6b8[_0xbb87('0x2f')][_0xbb87('0x30')]};});_0x4d43b7['model']=_[_0xbb87('0x2c')](_0x44bcac,_0xbb87('0x29'));_0x4d43b7[_0xbb87('0x31')]=_['keys'](_0x1ad101['query']);_0x4d43b7[_0xbb87('0x32')]=_[_0xbb87('0x33')](_0x4d43b7[_0xbb87('0x34')],_0x4d43b7[_0xbb87('0x31')]);_0x342966[_0xbb87('0x35')]=_[_0xbb87('0x33')](_0x4d43b7[_0xbb87('0x34')],qs['fields'](_0x1ad101['query']['fields']));_0x342966[_0xbb87('0x35')]=_0x342966['attributes']['length']?_0x342966['attributes']:_0x4d43b7['model'];if(!_0x1ad101[_0xbb87('0x31')][_0xbb87('0x36')](_0xbb87('0x37'))){_0x342966[_0xbb87('0x1f')]=qs[_0xbb87('0x1f')](_0x1ad101['query'][_0xbb87('0x1f')]);_0x342966[_0xbb87('0x1d')]=qs['offset'](_0x1ad101[_0xbb87('0x31')][_0xbb87('0x1d')]);}_0x342966[_0xbb87('0x38')]=qs['sort'](_0x1ad101['query']['sort']);_0x342966[_0xbb87('0x39')]=qs['filters'](_[_0xbb87('0x3a')](_0x1ad101[_0xbb87('0x31')],_0x4d43b7[_0xbb87('0x32')]),_0x44bcac);if(_0x1ad101[_0xbb87('0x31')][_0xbb87('0x3b')]){_0x342966[_0xbb87('0x39')]=_[_0xbb87('0x3c')](_0x342966[_0xbb87('0x39')],{'$or':_[_0xbb87('0x2c')](_0x44bcac,function(_0x6ca5d3){if(_0x6ca5d3[_0xbb87('0x2f')]!==_0xbb87('0x3d')){var _0x2c514b={};_0x2c514b[_0x6ca5d3[_0xbb87('0x29')]]={'$like':'%'+_0x1ad101[_0xbb87('0x31')]['filter']+'%'};return _0x2c514b;}})});}_0x342966=_[_0xbb87('0x3c')]({},_0x342966,_0x1ad101[_0xbb87('0x3e')]);var _0x2da7e9={'where':_0x342966[_0xbb87('0x39')]};return db[_0xbb87('0x2d')][_0xbb87('0x20')](_0x2da7e9)['then'](function(_0x2ae436){_0x43611c[_0xbb87('0x20')]=_0x2ae436;if(_0x1ad101['query'][_0xbb87('0x3f')]){_0x342966[_0xbb87('0x40')]=[{'all':!![]}];}return db[_0xbb87('0x2d')]['findAll'](_0x342966);})[_0xbb87('0x25')](function(_0x323a39){_0x43611c[_0xbb87('0x41')]=_0x323a39;return _0x43611c;})[_0xbb87('0x25')](respondWithFilteredResult(_0x4897f0,_0x342966))[_0xbb87('0x42')](handleError(_0x4897f0,null));};exports[_0xbb87('0x43')]=function(_0x2c5453,_0x4219d9){var _0x3752c7={'raw':!![],'where':{'id':_0x2c5453['params']['id']}},_0x98542={};_0x98542['model']=_[_0xbb87('0x44')](db[_0xbb87('0x2d')][_0xbb87('0x45')]);_0x98542[_0xbb87('0x31')]=_[_0xbb87('0x44')](_0x2c5453[_0xbb87('0x31')]);_0x98542[_0xbb87('0x32')]=_[_0xbb87('0x33')](_0x98542[_0xbb87('0x34')],_0x98542[_0xbb87('0x31')]);_0x3752c7[_0xbb87('0x35')]=_[_0xbb87('0x33')](_0x98542[_0xbb87('0x34')],qs[_0xbb87('0x46')](_0x2c5453['query'][_0xbb87('0x46')]));_0x3752c7[_0xbb87('0x35')]=_0x3752c7['attributes'][_0xbb87('0x47')]?_0x3752c7[_0xbb87('0x35')]:_0x98542[_0xbb87('0x34')];if(_0x2c5453[_0xbb87('0x31')][_0xbb87('0x3f')]){_0x3752c7[_0xbb87('0x40')]=[{'all':!![]}];}_0x3752c7=_[_0xbb87('0x3c')]({},_0x3752c7,_0x2c5453[_0xbb87('0x3e')]);return db[_0xbb87('0x2d')][_0xbb87('0x48')](_0x3752c7)[_0xbb87('0x25')](handleEntityNotFound(_0x4219d9,null))['then'](respondWithResult(_0x4219d9,null))[_0xbb87('0x42')](handleError(_0x4219d9,null));};exports[_0xbb87('0x49')]=function(_0x37b9a0,_0x5218cd){return db[_0xbb87('0x2d')][_0xbb87('0x49')](_0x37b9a0[_0xbb87('0x4a')],{})[_0xbb87('0x25')](respondWithResult(_0x5218cd,0xc9))[_0xbb87('0x42')](handleError(_0x5218cd,null));};exports[_0xbb87('0x24')]=function(_0x47de10,_0x50b454){if(_0x47de10[_0xbb87('0x4a')]['id']){delete _0x47de10[_0xbb87('0x4a')]['id'];}return db[_0xbb87('0x2d')][_0xbb87('0x48')]({'where':{'id':_0x47de10[_0xbb87('0x4b')]['id']}})[_0xbb87('0x25')](handleEntityNotFound(_0x50b454,null))['then'](saveUpdates(_0x47de10[_0xbb87('0x4a')],null))['then'](respondWithResult(_0x50b454,null))['catch'](handleError(_0x50b454,null));};exports[_0xbb87('0x26')]=function(_0x355208,_0x2a7513){return db['VoiceTransferReport'][_0xbb87('0x48')]({'where':{'id':_0x355208[_0xbb87('0x4b')]['id']}})[_0xbb87('0x25')](handleEntityNotFound(_0x2a7513,null))['then'](removeEntity(_0x2a7513,null))['catch'](handleError(_0x2a7513,null));};exports[_0xbb87('0x4c')]=function(_0x526361,_0x2b05bb){return db[_0xbb87('0x2d')]['describe']()[_0xbb87('0x25')](respondWithResult(_0x2b05bb,null))[_0xbb87('0x42')](handleError(_0x2b05bb,null));};
\ No newline at end of file
index bd27921..d2c9a37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3838=['VoiceTransferReport','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./voiceTransferReport.attributes','define'];(function(_0x14449f,_0x4059d6){var _0x44a6f1=function(_0xd48396){while(--_0xd48396){_0x14449f['push'](_0x14449f['shift']());}};_0x44a6f1(++_0x4059d6);}(_0x3838,0x156));var _0x8383=function(_0x34549c,_0x4ccdd3){_0x34549c=_0x34549c-0x0;var _0x34bf70=_0x3838[_0x34549c];return _0x34bf70;};'use strict';var _=require(_0x8383('0x0'));var util=require(_0x8383('0x1'));var logger=require('../../config/logger')(_0x8383('0x2'));var moment=require(_0x8383('0x3'));var BPromise=require(_0x8383('0x4'));var rp=require(_0x8383('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8383('0x6'));var config=require(_0x8383('0x7'));var attributes=require(_0x8383('0x8'));module['exports']=function(_0x3a479c,_0x661b09){return _0x3a479c[_0x8383('0x9')](_0x8383('0xa'),attributes,{'tableName':'report_call_transfer','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3dd5=['./voiceTransferReport.attributes','exports','report_call_transfer','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x29d9c4,_0x478de8){var _0x33b987=function(_0x2b21f1){while(--_0x2b21f1){_0x29d9c4['push'](_0x29d9c4['shift']());}};_0x33b987(++_0x478de8);}(_0x3dd5,0xc9));var _0x53dd=function(_0x2d46a1,_0x279f75){_0x2d46a1=_0x2d46a1-0x0;var _0x424301=_0x3dd5[_0x2d46a1];return _0x424301;};'use strict';var _=require(_0x53dd('0x0'));var util=require(_0x53dd('0x1'));var logger=require(_0x53dd('0x2'))(_0x53dd('0x3'));var moment=require(_0x53dd('0x4'));var BPromise=require(_0x53dd('0x5'));var rp=require(_0x53dd('0x6'));var fs=require('fs');var path=require(_0x53dd('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x53dd('0x8'));module[_0x53dd('0x9')]=function(_0x4c1c00,_0x3dd08d){return _0x4c1c00['define']('VoiceTransferReport',attributes,{'tableName':_0x53dd('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3fc3a83..f74206e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9d0=['http','request','info','VoiceTransferReport,\x20%s,\x20%s','VoiceTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','raw','then','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0x54d4a8,_0x585a59){var _0x3b321b=function(_0x245c6a){while(--_0x245c6a){_0x54d4a8['push'](_0x54d4a8['shift']());}};_0x3b321b(++_0x585a59);}(_0xc9d0,0xe5));var _0x0c9d=function(_0x1101e0,_0x46c607){_0x1101e0=_0x1101e0-0x0;var _0x452226=_0xc9d0[_0x1101e0];return _0x452226;};'use strict';var _=require(_0x0c9d('0x0'));var util=require(_0x0c9d('0x1'));var moment=require('moment');var BPromise=require(_0x0c9d('0x2'));var rs=require(_0x0c9d('0x3'));var fs=require('fs');var Redis=require(_0x0c9d('0x4'));var db=require(_0x0c9d('0x5'))['db'];var utils=require(_0x0c9d('0x6'));var logger=require(_0x0c9d('0x7'))(_0x0c9d('0x8'));var config=require('../../config/environment');var jayson=require(_0x0c9d('0x9'));var client=jayson[_0x0c9d('0xa')][_0x0c9d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x46b069,_0x14469e,_0x203b8a){return new BPromise(function(_0x5714ff,_0x100049){return client[_0x0c9d('0xc')](_0x46b069,_0x203b8a)['then'](function(_0x2e1c9a){logger[_0x0c9d('0xd')](_0x0c9d('0xe'),_0x14469e,'request\x20sent');logger['debug'](_0x0c9d('0xf'),_0x14469e,_0x0c9d('0x10'),JSON['stringify'](_0x2e1c9a));if(_0x2e1c9a[_0x0c9d('0x11')]){if(_0x2e1c9a[_0x0c9d('0x11')][_0x0c9d('0x12')]===0x1f4){logger[_0x0c9d('0x11')](_0x0c9d('0xe'),_0x14469e,_0x2e1c9a[_0x0c9d('0x11')]['message']);return _0x100049(_0x2e1c9a['error'][_0x0c9d('0x13')]);}logger[_0x0c9d('0x11')]('VoiceTransferReport,\x20%s,\x20%s',_0x14469e,_0x2e1c9a[_0x0c9d('0x11')][_0x0c9d('0x13')]);return _0x5714ff(_0x2e1c9a[_0x0c9d('0x11')][_0x0c9d('0x13')]);}else{logger[_0x0c9d('0xd')](_0x0c9d('0xe'),_0x14469e,_0x0c9d('0x10'));_0x5714ff(_0x2e1c9a[_0x0c9d('0x14')]['message']);}})[_0x0c9d('0x15')](function(_0x4394c7){logger[_0x0c9d('0x11')]('VoiceTransferReport,\x20%s,\x20%s',_0x14469e,_0x4394c7);_0x100049(_0x4394c7);});});}exports[_0x0c9d('0x16')]=function(_0x587cb4){var _0x69644c=this;return new Promise(function(_0x2836ca,_0x4668e6){return db[_0x0c9d('0x17')][_0x0c9d('0x18')](_0x587cb4[_0x0c9d('0x19')],{'raw':_0x587cb4[_0x0c9d('0x1a')]?_0x587cb4[_0x0c9d('0x1a')][_0x0c9d('0x1b')]===undefined?!![]:![]:!![]})[_0x0c9d('0x1c')](function(_0x39bccf){logger[_0x0c9d('0xd')](_0x0c9d('0x16'),_0x587cb4);logger['debug'](_0x0c9d('0x16'),_0x587cb4,JSON[_0x0c9d('0x1d')](_0x39bccf));_0x2836ca(_0x39bccf);})[_0x0c9d('0x15')](function(_0x251501){logger[_0x0c9d('0x11')]('CreateVoiceTransferReport',_0x251501['message'],_0x587cb4);_0x4668e6(_0x69644c[_0x0c9d('0x11')](0x1f4,_0x251501['message']));});});};
\ No newline at end of file
+var _0xdab3=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','then','info','request\x20sent','debug','stringify','error','code','message','VoiceTransferReport,\x20%s,\x20%s','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','lodash','moment'];(function(_0x5e6c33,_0x4f157a){var _0x142bc9=function(_0x2d2415){while(--_0x2d2415){_0x5e6c33['push'](_0x5e6c33['shift']());}};_0x142bc9(++_0x4f157a);}(_0xdab3,0x127));var _0x3dab=function(_0x4f141b,_0x415feb){_0x4f141b=_0x4f141b-0x0;var _0x23cb3d=_0xdab3[_0x4f141b];return _0x23cb3d;};'use strict';var _=require(_0x3dab('0x0'));var util=require('util');var moment=require(_0x3dab('0x1'));var BPromise=require(_0x3dab('0x2'));var rs=require(_0x3dab('0x3'));var fs=require('fs');var Redis=require(_0x3dab('0x4'));var db=require(_0x3dab('0x5'))['db'];var utils=require(_0x3dab('0x6'));var logger=require(_0x3dab('0x7'))('rpc');var config=require(_0x3dab('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x3dab('0x9')][_0x3dab('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5d9ca4,_0x21ef7f,_0x3c6f81){return new BPromise(function(_0x391de1,_0x13fd46){return client['request'](_0x5d9ca4,_0x3c6f81)[_0x3dab('0xb')](function(_0xb3ab17){logger[_0x3dab('0xc')]('VoiceTransferReport,\x20%s,\x20%s',_0x21ef7f,_0x3dab('0xd'));logger[_0x3dab('0xe')]('VoiceTransferReport,\x20%s,\x20%s,\x20%s',_0x21ef7f,_0x3dab('0xd'),JSON[_0x3dab('0xf')](_0xb3ab17));if(_0xb3ab17[_0x3dab('0x10')]){if(_0xb3ab17[_0x3dab('0x10')][_0x3dab('0x11')]===0x1f4){logger[_0x3dab('0x10')]('VoiceTransferReport,\x20%s,\x20%s',_0x21ef7f,_0xb3ab17['error'][_0x3dab('0x12')]);return _0x13fd46(_0xb3ab17[_0x3dab('0x10')]['message']);}logger[_0x3dab('0x10')](_0x3dab('0x13'),_0x21ef7f,_0xb3ab17[_0x3dab('0x10')]['message']);return _0x391de1(_0xb3ab17[_0x3dab('0x10')][_0x3dab('0x12')]);}else{logger[_0x3dab('0xc')](_0x3dab('0x13'),_0x21ef7f,_0x3dab('0xd'));_0x391de1(_0xb3ab17[_0x3dab('0x14')][_0x3dab('0x12')]);}})[_0x3dab('0x15')](function(_0x55ade7){logger[_0x3dab('0x10')](_0x3dab('0x13'),_0x21ef7f,_0x55ade7);_0x13fd46(_0x55ade7);});});}exports[_0x3dab('0x16')]=function(_0x1ad2b5){var _0x56a81d=this;return new Promise(function(_0x29adce,_0x173377){return db[_0x3dab('0x17')][_0x3dab('0x18')](_0x1ad2b5[_0x3dab('0x19')],{'raw':_0x1ad2b5[_0x3dab('0x1a')]?_0x1ad2b5[_0x3dab('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0x3dab('0xb')](function(_0x3d09d4){logger[_0x3dab('0xc')](_0x3dab('0x16'),_0x1ad2b5);logger['debug']('CreateVoiceTransferReport',_0x1ad2b5,JSON[_0x3dab('0xf')](_0x3d09d4));_0x29adce(_0x3d09d4);})['catch'](function(_0x5485f5){logger[_0x3dab('0x10')](_0x3dab('0x16'),_0x5485f5[_0x3dab('0x12')],_0x1ad2b5);_0x173377(_0x56a81d[_0x3dab('0x10')](0x1f4,_0x5485f5['message']));});});};
\ No newline at end of file
index b037fb1..5ad76c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf16b=['transfer','exports','express','./webbar.controller','post','/originate','isAuthenticated','canUpdate','/hangup','/answer','/hold','hold','unhold','/calls','calls','/transfer'];(function(_0x3519a2,_0x16e3b3){var _0x48537a=function(_0x380d5e){while(--_0x380d5e){_0x3519a2['push'](_0x3519a2['shift']());}};_0x48537a(++_0x16e3b3);}(_0xf16b,0x122));var _0xbf16=function(_0x52bba6,_0x42243e){_0x52bba6=_0x52bba6-0x0;var _0x152b70=_0xf16b[_0x52bba6];return _0x152b70;};'use strict';var express=require(_0xbf16('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var controller=require(_0xbf16('0x1'));router[_0xbf16('0x2')](_0xbf16('0x3'),auth[_0xbf16('0x4')](),auth[_0xbf16('0x5')](),controller['originate']);router[_0xbf16('0x2')](_0xbf16('0x6'),auth[_0xbf16('0x4')](),auth[_0xbf16('0x5')](),controller['hangup']);router['post'](_0xbf16('0x7'),auth[_0xbf16('0x4')](),auth['canUpdate'](),controller['answer']);router['post'](_0xbf16('0x8'),auth['isAuthenticated'](),auth['canUpdate'](),controller[_0xbf16('0x9')]);router['post']('/unhold',auth[_0xbf16('0x4')](),auth[_0xbf16('0x5')](),controller[_0xbf16('0xa')]);router['post'](_0xbf16('0xb'),auth[_0xbf16('0x4')](),auth[_0xbf16('0x5')](),controller[_0xbf16('0xc')]);router['post'](_0xbf16('0xd'),auth[_0xbf16('0x4')](),auth[_0xbf16('0x5')](),controller[_0xbf16('0xe')]);module[_0xbf16('0xf')]=router;
\ No newline at end of file
+var _0x7c62=['/transfer','transfer','express','Router','./webbar.controller','post','/originate','isAuthenticated','canUpdate','originate','/hold','hold','/unhold','unhold','calls'];(function(_0x211058,_0xe1d3d7){var _0x1ff375=function(_0x1463ac){while(--_0x1463ac){_0x211058['push'](_0x211058['shift']());}};_0x1ff375(++_0xe1d3d7);}(_0x7c62,0x89));var _0x27c6=function(_0x4b2449,_0x5b6251){_0x4b2449=_0x4b2449-0x0;var _0x1f85be=_0x7c62[_0x4b2449];return _0x1f85be;};'use strict';var express=require(_0x27c6('0x0'));var router=express[_0x27c6('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0x27c6('0x2'));router[_0x27c6('0x3')](_0x27c6('0x4'),auth[_0x27c6('0x5')](),auth[_0x27c6('0x6')](),controller[_0x27c6('0x7')]);router[_0x27c6('0x3')]('/hangup',auth[_0x27c6('0x5')](),auth['canUpdate'](),controller['hangup']);router['post']('/answer',auth[_0x27c6('0x5')](),auth[_0x27c6('0x6')](),controller['answer']);router['post'](_0x27c6('0x8'),auth['isAuthenticated'](),auth[_0x27c6('0x6')](),controller[_0x27c6('0x9')]);router['post'](_0x27c6('0xa'),auth[_0x27c6('0x5')](),auth[_0x27c6('0x6')](),controller[_0x27c6('0xb')]);router[_0x27c6('0x3')]('/calls',auth[_0x27c6('0x5')](),auth[_0x27c6('0x6')](),controller[_0x27c6('0xc')]);router[_0x27c6('0x3')](_0x27c6('0xd'),auth[_0x27c6('0x5')](),auth[_0x27c6('0x6')](),controller[_0x27c6('0xe')]);module['exports']=router;
\ No newline at end of file
index 21b6a57..cbbd3c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01fe=['webbar:hangup','hangup\x20executed!','answer','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','calls','calls\x20fired:','VoiceChannels','all','conference','conference\x20executed!','transfer','transferNumber','webbar:transfer','path','../../mysqldb','../../config/environment','jayson/promise','client','http','../../config/logger','ioredis','defaults','redis','localhost','socket.io-emitter','number','userId\x20is\x20required','callNumber\x20is\x20required','string','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','log','handleError:','error','name','status','send','NotFound','request','then','code','message','result','catch','findOne','agent','filter','rows','UserId','length','\x20not\x20found!','originate','originate\x20fired:','validate','body','userId','callNumber','callerId','callbackUrl','entityFound:','format','webbar:originate','originate\x20executed!','hangup','hangup\x20fired:','json','sessionId','user:%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x01fe,0x102));var _0xe01f=function(_0x7f6ec,_0x3e0e0e){_0x7f6ec=_0x7f6ec-0x0;var _0x59ea86=_0x01fe[_0x7f6ec];return _0x59ea86;};'use strict';var path=require(_0xe01f('0x0'));var fs=require('fs');var _=require('lodash');var db=require(_0xe01f('0x1'))['db'];var config=require(_0xe01f('0x2'));var util=require('util');var BPromise=require('bluebird');var jayson=require(_0xe01f('0x3'));var amiClient=jayson[_0xe01f('0x4')][_0xe01f('0x5')]({'port':0x232a});var logger=require(_0xe01f('0x6'))('webbarapi');var Redis=require(_0xe01f('0x7'));config['redis']=_[_0xe01f('0x8')](config[_0xe01f('0x9')],{'host':_0xe01f('0xa'),'port':0x18eb});var io=require(_0xe01f('0xb'))(new Redis(config[_0xe01f('0x9')]));var Schema=require('validate');var originateValidation=new Schema({'userId':{'type':_0xe01f('0xc'),'required':[!![],_0xe01f('0xd')]},'callNumber':{'type':'string','required':[!![],_0xe01f('0xe')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0xe01f('0xf')}});var hangupValidation=new Schema({'userId':{'type':_0xe01f('0xc'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xe01f('0xf'),'required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0xe01f('0xd')]},'sessionId':{'type':_0xe01f('0xf'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xe01f('0xc'),'required':[!![],_0xe01f('0xd')]},'sessionId':{'type':_0xe01f('0xf'),'required':[!![],_0xe01f('0x10')]},'transferNumber':{'type':_0xe01f('0xf'),'required':[!![],_0xe01f('0x11')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0xe01f('0xd')]},'sessionId':{'type':_0xe01f('0xf'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xe01f('0xc'),'required':[!![],_0xe01f('0xd')]},'sessionId':{'type':_0xe01f('0xf'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xe01f('0xc'),'required':[!![],_0xe01f('0xd')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']}});function emit(_0x5e3877,_0x12540b,_0x14b05d){logger[_0xe01f('0x12')](_0x5e3877,_0x12540b,JSON[_0xe01f('0x13')](_0x14b05d));io['to'](_0x5e3877)[_0xe01f('0x14')](_0x12540b,_0x14b05d);}function handleError(_0x3fad9a){return function(_0x144eef){console[_0xe01f('0x15')](_0xe01f('0x16'),_0x144eef,_0x144eef instanceof RangeError);logger[_0xe01f('0x17')](_0x144eef['stack']);if(_0x144eef instanceof RangeError){if(_0x144eef[_0xe01f('0x18')]){delete _0x144eef['name'];}_0x3fad9a[_0xe01f('0x19')](0x194)[_0xe01f('0x1a')](_0x144eef);}else{if(_0x144eef[_0xe01f('0x18')]){delete _0x144eef[_0xe01f('0x18')];}_0x3fad9a['status'](0x1f4)[_0xe01f('0x1a')](_0x144eef);}};}function checkError(){return function(_0xb9343e){if(!_0xb9343e){throw new RangeError(_0xe01f('0x1b'));}return _0xb9343e;};}function respondWithRpcPromise(_0x1f0cfd,_0x369b7e){return new BPromise(function(_0x3c34fa,_0x570d48){var _0x1faeb8=amiClient;return _0x1faeb8[_0xe01f('0x1c')](_0x1f0cfd,_0x369b7e)[_0xe01f('0x1d')](function(_0xa6da95){if(_0xa6da95[_0xe01f('0x17')]){if(_0xa6da95[_0xe01f('0x17')][_0xe01f('0x1e')]===0x1f4){return _0x570d48(_0xa6da95[_0xe01f('0x17')][_0xe01f('0x1f')]);}return _0x3c34fa(_0xa6da95['error']['message']);}else{_0x3c34fa(_0xa6da95[_0xe01f('0x20')]);}})[_0xe01f('0x21')](function(_0x3f92ca){_0x570d48(_0x3f92ca);});});}function getAgent(_0x3ec80a){return db['User'][_0xe01f('0x22')]({'where':{'id':_0x3ec80a,'role':_0xe01f('0x23')}})['then'](checkError());}function getAgentCheckSession(_0x378c93,_0x5b9c5e){return new BPromise(function(_0x1b77c8,_0x387044){var _0x13dcd4=respondWithRpcPromise('VoiceChannels');var _0x940cb6=getAgent(_0x378c93);Promise['all']([_0x13dcd4,_0x940cb6])[_0xe01f('0x1d')](function(_0x232ad1){var _0x2e4568=_0x232ad1[0x0];var _0x2dbc94=_0x232ad1[0x1];var _0x35bd53=_[_0xe01f('0x24')](_0x2e4568[_0xe01f('0x25')],function(_0x41d13d){return _0x41d13d[_0xe01f('0x26')]==_0x2dbc94['id']&&_0x41d13d['sessionId']==_0x5b9c5e;});if(_0x35bd53[_0xe01f('0x27')]==0x1){_0x1b77c8(_0x2dbc94);}else{_0x387044(new RangeError('sessionId\x20'+_0x5b9c5e+_0xe01f('0x28')));}});});}exports[_0xe01f('0x29')]=function(_0x51fe9b,_0x15f98f){logger[_0xe01f('0x12')](_0xe01f('0x2a'),_0x51fe9b['body']);var _0x2e417b=originateValidation[_0xe01f('0x2b')](_0x51fe9b[_0xe01f('0x2c')]);if(_0x2e417b[_0xe01f('0x27')]>0x0){return _0x15f98f[_0xe01f('0x19')](0x190)['json'](_0x2e417b);}var _0x57aed0=_0x51fe9b['body'][_0xe01f('0x2d')];var _0x4c9f2e=_0x51fe9b[_0xe01f('0x2c')][_0xe01f('0x2e')];var _0x463687=_0x51fe9b[_0xe01f('0x2c')][_0xe01f('0x2f')];var _0x83c32=_0x51fe9b[_0xe01f('0x2c')][_0xe01f('0x30')];return getAgent(_0x57aed0)['then'](function(_0x53c309){logger[_0xe01f('0x12')](_0xe01f('0x31'),_0x53c309[_0xe01f('0x18')]);emit(util[_0xe01f('0x32')]('user:%s',_0x53c309[_0xe01f('0x18')]),_0xe01f('0x33'),{'callNumber':_0x4c9f2e,'callerId':_0x463687,'callbackUrl':_0x83c32});return _0x15f98f[_0xe01f('0x19')](0xc8)['json']({'error':![],'message':_0xe01f('0x34')});})[_0xe01f('0x21')](handleError(_0x15f98f));};exports[_0xe01f('0x35')]=function(_0x2fcc0c,_0xddb14b){logger[_0xe01f('0x12')](_0xe01f('0x36'),_0x2fcc0c[_0xe01f('0x2c')]);var _0x29c47f=hangupValidation[_0xe01f('0x2b')](_0x2fcc0c[_0xe01f('0x2c')]);if(_0x29c47f[_0xe01f('0x27')]>0x0){return _0xddb14b[_0xe01f('0x19')](0x190)[_0xe01f('0x37')](_0x29c47f);}var _0x16ab3c=_0x2fcc0c['body'][_0xe01f('0x2d')];var _0x1643a4=_0x2fcc0c[_0xe01f('0x2c')][_0xe01f('0x38')];return getAgent(_0x16ab3c)['then'](function(_0x36783f){logger[_0xe01f('0x12')](_0xe01f('0x31'),_0x36783f[_0xe01f('0x18')]);emit(util[_0xe01f('0x32')](_0xe01f('0x39'),_0x36783f['name']),_0xe01f('0x3a'),{'sessionId':_0x1643a4});return _0xddb14b[_0xe01f('0x19')](0xc8)[_0xe01f('0x37')]({'error':![],'message':_0xe01f('0x3b')});})[_0xe01f('0x21')](handleError(_0xddb14b));};exports[_0xe01f('0x3c')]=function(_0x861971,_0x305659){logger[_0xe01f('0x12')]('answer\x20fired:',_0x861971['body']);var _0x3dd453=answerValidation[_0xe01f('0x2b')](_0x861971['body']);if(_0x3dd453[_0xe01f('0x27')]>0x0){return _0x305659[_0xe01f('0x19')](0x190)[_0xe01f('0x37')](_0x3dd453);}var _0x5625d8=_0x861971[_0xe01f('0x2c')][_0xe01f('0x2d')];var _0x56785b=_0x861971['body']['sessionId'];return getAgent(_0x5625d8)[_0xe01f('0x1d')](function(_0x53c81b){logger[_0xe01f('0x12')]('entityFound:',_0x53c81b[_0xe01f('0x18')]);emit(util[_0xe01f('0x32')](_0xe01f('0x39'),_0x53c81b[_0xe01f('0x18')]),_0xe01f('0x3d'),{'sessionId':_0x56785b});return _0x305659[_0xe01f('0x19')](0xc8)[_0xe01f('0x37')]({'error':![],'message':_0xe01f('0x3e')});})[_0xe01f('0x21')](handleError(_0x305659));};exports[_0xe01f('0x3f')]=function(_0x18bb53,_0x580df5){logger[_0xe01f('0x12')](_0xe01f('0x40'),_0x18bb53[_0xe01f('0x2c')]);var _0x3c3d64=holdValidation[_0xe01f('0x2b')](_0x18bb53['body']);if(_0x3c3d64[_0xe01f('0x27')]>0x0){return _0x580df5['status'](0x190)['json'](_0x3c3d64);}var _0x25437f=_0x18bb53[_0xe01f('0x2c')][_0xe01f('0x2d')];var _0x1d8614=_0x18bb53[_0xe01f('0x2c')]['sessionId'];return getAgent(_0x25437f)[_0xe01f('0x1d')](function(_0x337c5d){logger[_0xe01f('0x12')](_0xe01f('0x31'),_0x337c5d[_0xe01f('0x18')]);emit(util[_0xe01f('0x32')](_0xe01f('0x39'),_0x337c5d['name']),_0xe01f('0x41'),{'sessionId':_0x1d8614});return _0x580df5['status'](0xc8)[_0xe01f('0x37')]({'error':![],'message':_0xe01f('0x42')});})['catch'](handleError(_0x580df5));};exports[_0xe01f('0x43')]=function(_0x100742,_0x457bb0){logger[_0xe01f('0x12')](_0xe01f('0x44'),_0x100742[_0xe01f('0x2c')]);var _0x5b04b5=unholdValidation['validate'](_0x100742[_0xe01f('0x2c')]);if(_0x5b04b5[_0xe01f('0x27')]>0x0){return _0x457bb0['status'](0x190)[_0xe01f('0x37')](_0x5b04b5);}var _0x38c8ef=_0x100742[_0xe01f('0x2c')][_0xe01f('0x2d')];var _0x56d558=_0x100742[_0xe01f('0x2c')]['sessionId'];return getAgent(_0x38c8ef)[_0xe01f('0x1d')](function(_0xfbce52){logger['info'](_0xe01f('0x31'),_0xfbce52[_0xe01f('0x18')]);emit(util[_0xe01f('0x32')](_0xe01f('0x39'),_0xfbce52[_0xe01f('0x18')]),_0xe01f('0x45'),{'sessionId':_0x56d558});return _0x457bb0['status'](0xc8)[_0xe01f('0x37')]({'error':![],'message':'unhold\x20executed!'});})['catch'](handleError(_0x457bb0));};exports[_0xe01f('0x46')]=function(_0x2d53cb,_0x2161b4){logger[_0xe01f('0x12')](_0xe01f('0x47'),_0x2161b4[_0xe01f('0x2c')]);var _0x3949e1=callsValidation[_0xe01f('0x2b')](_0x2d53cb['body']);if(_0x3949e1['length']>0x0){return _0x2161b4[_0xe01f('0x19')](0x190)['json'](_0x3949e1);}var _0x3ee275=_0x2d53cb[_0xe01f('0x2c')][_0xe01f('0x2d')];var _0x33a11b=respondWithRpcPromise(_0xe01f('0x48'));var _0x4dfb61=getAgent(_0x3ee275);return Promise[_0xe01f('0x49')]([_0x33a11b,_0x4dfb61])[_0xe01f('0x1d')](function(_0x4c6d3f){var _0x3bda53=_0x4c6d3f[0x0];var _0x4dd65c=_0x4c6d3f[0x1];var _0xfb20c6=_['filter'](_0x3bda53[_0xe01f('0x25')],function(_0xe1e5df){return _0xe1e5df[_0xe01f('0x26')]==_0x4dd65c['id'];});return _0x2161b4[_0xe01f('0x19')](0xc8)[_0xe01f('0x37')]({'count':_0xfb20c6[_0xe01f('0x27')],'rows':_0xfb20c6});})[_0xe01f('0x21')](handleError(_0x2161b4));};exports[_0xe01f('0x4a')]=function(_0x5d51e5,_0x1be0f4){logger[_0xe01f('0x12')]('conference\x20fired:',_0x5d51e5[_0xe01f('0x2c')]);var _0x5ca10d=conferenceValidation[_0xe01f('0x2b')](_0x5d51e5[_0xe01f('0x2c')]);if(_0x5ca10d['length']>0x0){return _0x1be0f4[_0xe01f('0x19')](0x190)['json'](_0x5ca10d);}var _0x41c750=_0x5d51e5['body'][_0xe01f('0x2d')];return getAgent(_0x41c750)[_0xe01f('0x1d')](function(_0x141140){logger[_0xe01f('0x12')](_0xe01f('0x31'),_0x141140[_0xe01f('0x18')]);emit(util['format']('user:%s',_0x141140[_0xe01f('0x18')]),'webbar:conference');return _0x1be0f4[_0xe01f('0x19')](0xc8)['json']({'error':![],'message':_0xe01f('0x4b')});})[_0xe01f('0x21')](handleError(_0x1be0f4));};exports[_0xe01f('0x4c')]=function(_0x5a28cc,_0x5e26cb){logger[_0xe01f('0x12')]('transfer\x20fired:',_0x5a28cc['body']);var _0x1a03c6=transferValidation[_0xe01f('0x2b')](_0x5a28cc[_0xe01f('0x2c')]);if(_0x1a03c6[_0xe01f('0x27')]>0x0){return _0x5e26cb[_0xe01f('0x19')](0x190)[_0xe01f('0x37')](_0x1a03c6);}var _0x19b448=_0x5a28cc[_0xe01f('0x2c')][_0xe01f('0x2d')];var _0x526d0a=_0x5a28cc['body']['sessionId'];var _0x47c632=_0x5a28cc[_0xe01f('0x2c')][_0xe01f('0x4d')];return getAgent(_0x19b448)[_0xe01f('0x1d')](function(_0x3e5cb2){logger[_0xe01f('0x12')]('entityFound:',_0x3e5cb2[_0xe01f('0x18')]);emit(util['format'](_0xe01f('0x39'),_0x3e5cb2[_0xe01f('0x18')]),_0xe01f('0x4e'),{'sessionId':_0x526d0a,'transferNumber':_0x47c632});return _0x5e26cb[_0xe01f('0x19')](0xc8)['json']({'error':![],'message':'transfer\x20executed!'});})[_0xe01f('0x21')](handleError(_0x5e26cb));};
\ No newline at end of file
+var _0xf3cd=['webbar:hangup','hangup\x20executed!','answer','webbar:answer','answer\x20executed!','hold\x20fired:','webbar:hold','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','VoiceChannels','conference','webbar:conference','conference\x20executed!','transfer','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','bluebird','client','http','../../config/logger','ioredis','redis','defaults','localhost','socket.io-emitter','validate','string','callNumber\x20is\x20required','number','userId\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','log','handleError:','error','stack','name','status','send','NotFound','request','then','code','message','result','catch','User','findOne','all','filter','UserId','sessionId','length','\x20not\x20found!','originate','originate\x20fired:','body','userId','callNumber','callbackUrl','entityFound:','format','user:%s','originate\x20executed!','hangup','hangup\x20fired:','json'];(function(_0x20263b,_0xb0109b){var _0xe357b3=function(_0x11662a){while(--_0x11662a){_0x20263b['push'](_0x20263b['shift']());}};_0xe357b3(++_0xb0109b);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x5814ca,_0x3b6713){_0x5814ca=_0x5814ca-0x0;var _0xeb1833=_0xf3cd[_0x5814ca];return _0xeb1833;};'use strict';var path=require(_0xdf3c('0x0'));var fs=require('fs');var _=require(_0xdf3c('0x1'));var db=require(_0xdf3c('0x2'))['db'];var config=require(_0xdf3c('0x3'));var util=require(_0xdf3c('0x4'));var BPromise=require(_0xdf3c('0x5'));var jayson=require('jayson/promise');var amiClient=jayson[_0xdf3c('0x6')][_0xdf3c('0x7')]({'port':0x232a});var logger=require(_0xdf3c('0x8'))('webbarapi');var Redis=require(_0xdf3c('0x9'));config[_0xdf3c('0xa')]=_[_0xdf3c('0xb')](config[_0xdf3c('0xa')],{'host':_0xdf3c('0xc'),'port':0x18eb});var io=require(_0xdf3c('0xd'))(new Redis(config['redis']));var Schema=require(_0xdf3c('0xe'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'callNumber':{'type':_0xdf3c('0xf'),'required':[!![],_0xdf3c('0x10')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0xdf3c('0xf')}});var hangupValidation=new Schema({'userId':{'type':_0xdf3c('0x11'),'required':[!![],_0xdf3c('0x12')]},'sessionId':{'type':_0xdf3c('0xf'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xdf3c('0x11'),'required':[!![],_0xdf3c('0x12')]},'sessionId':{'type':_0xdf3c('0xf'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xdf3c('0x11'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xdf3c('0xf'),'required':[!![],_0xdf3c('0x13')]},'transferNumber':{'type':_0xdf3c('0xf'),'required':[!![],_0xdf3c('0x14')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0xdf3c('0x12')]},'sessionId':{'type':_0xdf3c('0xf'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xdf3c('0x11'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xdf3c('0xf'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xdf3c('0x11'),'required':[!![],_0xdf3c('0x12')]}});var conferenceValidation=new Schema({'userId':{'type':_0xdf3c('0x11'),'required':[!![],_0xdf3c('0x12')]}});function emit(_0x1a7a5a,_0x305ea5,_0x92008b){logger[_0xdf3c('0x15')](_0x1a7a5a,_0x305ea5,JSON[_0xdf3c('0x16')](_0x92008b));io['to'](_0x1a7a5a)['emit'](_0x305ea5,_0x92008b);}function handleError(_0x13b0e6){return function(_0x465e7d){console[_0xdf3c('0x17')](_0xdf3c('0x18'),_0x465e7d,_0x465e7d instanceof RangeError);logger[_0xdf3c('0x19')](_0x465e7d[_0xdf3c('0x1a')]);if(_0x465e7d instanceof RangeError){if(_0x465e7d[_0xdf3c('0x1b')]){delete _0x465e7d[_0xdf3c('0x1b')];}_0x13b0e6[_0xdf3c('0x1c')](0x194)[_0xdf3c('0x1d')](_0x465e7d);}else{if(_0x465e7d[_0xdf3c('0x1b')]){delete _0x465e7d[_0xdf3c('0x1b')];}_0x13b0e6[_0xdf3c('0x1c')](0x1f4)['send'](_0x465e7d);}};}function checkError(){return function(_0x4d620f){if(!_0x4d620f){throw new RangeError(_0xdf3c('0x1e'));}return _0x4d620f;};}function respondWithRpcPromise(_0x583ce4,_0x15776c){return new BPromise(function(_0x40e7ec,_0x36552e){var _0x38b319=amiClient;return _0x38b319[_0xdf3c('0x1f')](_0x583ce4,_0x15776c)[_0xdf3c('0x20')](function(_0x50d8ca){if(_0x50d8ca[_0xdf3c('0x19')]){if(_0x50d8ca[_0xdf3c('0x19')][_0xdf3c('0x21')]===0x1f4){return _0x36552e(_0x50d8ca[_0xdf3c('0x19')][_0xdf3c('0x22')]);}return _0x40e7ec(_0x50d8ca[_0xdf3c('0x19')][_0xdf3c('0x22')]);}else{_0x40e7ec(_0x50d8ca[_0xdf3c('0x23')]);}})[_0xdf3c('0x24')](function(_0x1adee4){_0x36552e(_0x1adee4);});});}function getAgent(_0x4c076c){return db[_0xdf3c('0x25')][_0xdf3c('0x26')]({'where':{'id':_0x4c076c,'role':'agent'}})[_0xdf3c('0x20')](checkError());}function getAgentCheckSession(_0x59659e,_0x4eaced){return new BPromise(function(_0x508be9,_0x14aac9){var _0x186bba=respondWithRpcPromise('VoiceChannels');var _0x5c3b5a=getAgent(_0x59659e);Promise[_0xdf3c('0x27')]([_0x186bba,_0x5c3b5a])[_0xdf3c('0x20')](function(_0xd3cfcb){var _0x1ccdd4=_0xd3cfcb[0x0];var _0x5c98a2=_0xd3cfcb[0x1];var _0x43ce06=_[_0xdf3c('0x28')](_0x1ccdd4['rows'],function(_0x51e0a4){return _0x51e0a4[_0xdf3c('0x29')]==_0x5c98a2['id']&&_0x51e0a4[_0xdf3c('0x2a')]==_0x4eaced;});if(_0x43ce06[_0xdf3c('0x2b')]==0x1){_0x508be9(_0x5c98a2);}else{_0x14aac9(new RangeError('sessionId\x20'+_0x4eaced+_0xdf3c('0x2c')));}});});}exports[_0xdf3c('0x2d')]=function(_0x21e7b8,_0x10099e){logger['info'](_0xdf3c('0x2e'),_0x21e7b8[_0xdf3c('0x2f')]);var _0x522e5f=originateValidation[_0xdf3c('0xe')](_0x21e7b8[_0xdf3c('0x2f')]);if(_0x522e5f[_0xdf3c('0x2b')]>0x0){return _0x10099e[_0xdf3c('0x1c')](0x190)['json'](_0x522e5f);}var _0x33632f=_0x21e7b8[_0xdf3c('0x2f')][_0xdf3c('0x30')];var _0x3b9ce8=_0x21e7b8['body'][_0xdf3c('0x31')];var _0x3e7a4b=_0x21e7b8['body']['callerId'];var _0x12cc19=_0x21e7b8['body'][_0xdf3c('0x32')];return getAgent(_0x33632f)['then'](function(_0x57faba){logger['info'](_0xdf3c('0x33'),_0x57faba[_0xdf3c('0x1b')]);emit(util[_0xdf3c('0x34')](_0xdf3c('0x35'),_0x57faba['name']),'webbar:originate',{'callNumber':_0x3b9ce8,'callerId':_0x3e7a4b,'callbackUrl':_0x12cc19});return _0x10099e[_0xdf3c('0x1c')](0xc8)['json']({'error':![],'message':_0xdf3c('0x36')});})[_0xdf3c('0x24')](handleError(_0x10099e));};exports[_0xdf3c('0x37')]=function(_0xcdd731,_0x1004e9){logger[_0xdf3c('0x15')](_0xdf3c('0x38'),_0xcdd731[_0xdf3c('0x2f')]);var _0x398c76=hangupValidation['validate'](_0xcdd731[_0xdf3c('0x2f')]);if(_0x398c76['length']>0x0){return _0x1004e9['status'](0x190)[_0xdf3c('0x39')](_0x398c76);}var _0x47f760=_0xcdd731[_0xdf3c('0x2f')]['userId'];var _0x2a94c3=_0xcdd731[_0xdf3c('0x2f')][_0xdf3c('0x2a')];return getAgent(_0x47f760)[_0xdf3c('0x20')](function(_0x3098cb){logger[_0xdf3c('0x15')](_0xdf3c('0x33'),_0x3098cb[_0xdf3c('0x1b')]);emit(util[_0xdf3c('0x34')](_0xdf3c('0x35'),_0x3098cb[_0xdf3c('0x1b')]),_0xdf3c('0x3a'),{'sessionId':_0x2a94c3});return _0x1004e9['status'](0xc8)['json']({'error':![],'message':_0xdf3c('0x3b')});})['catch'](handleError(_0x1004e9));};exports[_0xdf3c('0x3c')]=function(_0x14d8e1,_0x46194d){logger[_0xdf3c('0x15')]('answer\x20fired:',_0x14d8e1['body']);var _0x335c1b=answerValidation[_0xdf3c('0xe')](_0x14d8e1[_0xdf3c('0x2f')]);if(_0x335c1b['length']>0x0){return _0x46194d[_0xdf3c('0x1c')](0x190)[_0xdf3c('0x39')](_0x335c1b);}var _0x6fc3b6=_0x14d8e1[_0xdf3c('0x2f')]['userId'];var _0x127685=_0x14d8e1[_0xdf3c('0x2f')][_0xdf3c('0x2a')];return getAgent(_0x6fc3b6)[_0xdf3c('0x20')](function(_0x2f52c5){logger['info'](_0xdf3c('0x33'),_0x2f52c5[_0xdf3c('0x1b')]);emit(util[_0xdf3c('0x34')](_0xdf3c('0x35'),_0x2f52c5[_0xdf3c('0x1b')]),_0xdf3c('0x3d'),{'sessionId':_0x127685});return _0x46194d['status'](0xc8)['json']({'error':![],'message':_0xdf3c('0x3e')});})[_0xdf3c('0x24')](handleError(_0x46194d));};exports['hold']=function(_0x5c9885,_0x269723){logger[_0xdf3c('0x15')](_0xdf3c('0x3f'),_0x5c9885[_0xdf3c('0x2f')]);var _0xaae4bc=holdValidation[_0xdf3c('0xe')](_0x5c9885[_0xdf3c('0x2f')]);if(_0xaae4bc[_0xdf3c('0x2b')]>0x0){return _0x269723[_0xdf3c('0x1c')](0x190)['json'](_0xaae4bc);}var _0x129c2a=_0x5c9885[_0xdf3c('0x2f')][_0xdf3c('0x30')];var _0xe760dd=_0x5c9885[_0xdf3c('0x2f')][_0xdf3c('0x2a')];return getAgent(_0x129c2a)[_0xdf3c('0x20')](function(_0x553f70){logger[_0xdf3c('0x15')]('entityFound:',_0x553f70[_0xdf3c('0x1b')]);emit(util['format'](_0xdf3c('0x35'),_0x553f70[_0xdf3c('0x1b')]),_0xdf3c('0x40'),{'sessionId':_0xe760dd});return _0x269723[_0xdf3c('0x1c')](0xc8)['json']({'error':![],'message':'hold\x20executed!'});})['catch'](handleError(_0x269723));};exports[_0xdf3c('0x41')]=function(_0x5f5726,_0x31c600){logger[_0xdf3c('0x15')](_0xdf3c('0x42'),_0x5f5726[_0xdf3c('0x2f')]);var _0x3b17d9=unholdValidation['validate'](_0x5f5726['body']);if(_0x3b17d9[_0xdf3c('0x2b')]>0x0){return _0x31c600[_0xdf3c('0x1c')](0x190)['json'](_0x3b17d9);}var _0x3b215d=_0x5f5726[_0xdf3c('0x2f')][_0xdf3c('0x30')];var _0x3fda0a=_0x5f5726[_0xdf3c('0x2f')][_0xdf3c('0x2a')];return getAgent(_0x3b215d)[_0xdf3c('0x20')](function(_0x492396){logger['info'](_0xdf3c('0x33'),_0x492396[_0xdf3c('0x1b')]);emit(util[_0xdf3c('0x34')](_0xdf3c('0x35'),_0x492396[_0xdf3c('0x1b')]),_0xdf3c('0x43'),{'sessionId':_0x3fda0a});return _0x31c600[_0xdf3c('0x1c')](0xc8)[_0xdf3c('0x39')]({'error':![],'message':_0xdf3c('0x44')});})[_0xdf3c('0x24')](handleError(_0x31c600));};exports[_0xdf3c('0x45')]=function(_0x4cb28f,_0x1eebcf){logger['info']('calls\x20fired:',_0x1eebcf['body']);var _0x58fcbf=callsValidation['validate'](_0x4cb28f[_0xdf3c('0x2f')]);if(_0x58fcbf[_0xdf3c('0x2b')]>0x0){return _0x1eebcf['status'](0x190)[_0xdf3c('0x39')](_0x58fcbf);}var _0x32427e=_0x4cb28f['body'][_0xdf3c('0x30')];var _0x28f935=respondWithRpcPromise(_0xdf3c('0x46'));var _0x1389e0=getAgent(_0x32427e);return Promise[_0xdf3c('0x27')]([_0x28f935,_0x1389e0])[_0xdf3c('0x20')](function(_0xb54629){var _0xdc859=_0xb54629[0x0];var _0x42efa2=_0xb54629[0x1];var _0xa05518=_[_0xdf3c('0x28')](_0xdc859['rows'],function(_0x1ed898){return _0x1ed898[_0xdf3c('0x29')]==_0x42efa2['id'];});return _0x1eebcf[_0xdf3c('0x1c')](0xc8)['json']({'count':_0xa05518[_0xdf3c('0x2b')],'rows':_0xa05518});})[_0xdf3c('0x24')](handleError(_0x1eebcf));};exports[_0xdf3c('0x47')]=function(_0x552264,_0x1effdb){logger[_0xdf3c('0x15')]('conference\x20fired:',_0x552264[_0xdf3c('0x2f')]);var _0x4f8fd6=conferenceValidation[_0xdf3c('0xe')](_0x552264[_0xdf3c('0x2f')]);if(_0x4f8fd6[_0xdf3c('0x2b')]>0x0){return _0x1effdb[_0xdf3c('0x1c')](0x190)[_0xdf3c('0x39')](_0x4f8fd6);}var _0x30e6e1=_0x552264[_0xdf3c('0x2f')][_0xdf3c('0x30')];return getAgent(_0x30e6e1)[_0xdf3c('0x20')](function(_0x330730){logger[_0xdf3c('0x15')](_0xdf3c('0x33'),_0x330730[_0xdf3c('0x1b')]);emit(util[_0xdf3c('0x34')](_0xdf3c('0x35'),_0x330730[_0xdf3c('0x1b')]),_0xdf3c('0x48'));return _0x1effdb['status'](0xc8)['json']({'error':![],'message':_0xdf3c('0x49')});})[_0xdf3c('0x24')](handleError(_0x1effdb));};exports[_0xdf3c('0x4a')]=function(_0x596282,_0x164e0a){logger['info']('transfer\x20fired:',_0x596282[_0xdf3c('0x2f')]);var _0x399db6=transferValidation[_0xdf3c('0xe')](_0x596282[_0xdf3c('0x2f')]);if(_0x399db6[_0xdf3c('0x2b')]>0x0){return _0x164e0a[_0xdf3c('0x1c')](0x190)[_0xdf3c('0x39')](_0x399db6);}var _0x3ec03a=_0x596282[_0xdf3c('0x2f')][_0xdf3c('0x30')];var _0x1cce9a=_0x596282[_0xdf3c('0x2f')][_0xdf3c('0x2a')];var _0x4be79a=_0x596282[_0xdf3c('0x2f')][_0xdf3c('0x4b')];return getAgent(_0x3ec03a)[_0xdf3c('0x20')](function(_0x16d6ea){logger[_0xdf3c('0x15')]('entityFound:',_0x16d6ea[_0xdf3c('0x1b')]);emit(util[_0xdf3c('0x34')](_0xdf3c('0x35'),_0x16d6ea[_0xdf3c('0x1b')]),_0xdf3c('0x4c'),{'sessionId':_0x1cce9a,'transferNumber':_0x4be79a});return _0x164e0a[_0xdf3c('0x1c')](0xc8)[_0xdf3c('0x39')]({'error':![],'message':_0xdf3c('0x4d')});})[_0xdf3c('0x24')](handleError(_0x164e0a));};
\ No newline at end of file
index 201a3d3..eff73c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3da=['/:id/send','put','update','delete','/:id','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappAccount.controller','get','isAuthenticated','index','/describe','describe','show','/:id/dispositions','getDispositions','/:id/users','getAgents','/:id/applications','getApplications','post','create','addDisposition','/:id/canned_answers','addAnswer','addAgents','/:id/notify','notify'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe3da,0x1cd));var _0xae3d=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xe3da[_0x2641f9];return _0x585741;};'use strict';var multer=require(_0xae3d('0x0'));var util=require(_0xae3d('0x1'));var path=require(_0xae3d('0x2'));var timeout=require(_0xae3d('0x3'));var express=require(_0xae3d('0x4'));var router=express[_0xae3d('0x5')]();var fs_extra=require(_0xae3d('0x6'));var auth=require(_0xae3d('0x7'));var interaction=require(_0xae3d('0x8'));var config=require(_0xae3d('0x9'));var controller=require(_0xae3d('0xa'));router[_0xae3d('0xb')]('/',auth[_0xae3d('0xc')](),controller[_0xae3d('0xd')]);router[_0xae3d('0xb')](_0xae3d('0xe'),auth['isAuthenticated'](),controller[_0xae3d('0xf')]);router[_0xae3d('0xb')]('/:id',auth['isAuthenticated'](),controller[_0xae3d('0x10')]);router[_0xae3d('0xb')](_0xae3d('0x11'),auth[_0xae3d('0xc')](),controller[_0xae3d('0x12')]);router[_0xae3d('0xb')]('/:id/canned_answers',auth[_0xae3d('0xc')](),controller['getAnswers']);router[_0xae3d('0xb')](_0xae3d('0x13'),auth[_0xae3d('0xc')](),controller[_0xae3d('0x14')]);router['get'](_0xae3d('0x15'),auth[_0xae3d('0xc')](),controller[_0xae3d('0x16')]);router[_0xae3d('0x17')]('/',auth[_0xae3d('0xc')](),controller[_0xae3d('0x18')]);router[_0xae3d('0x17')]('/:id/dispositions',auth[_0xae3d('0xc')](),controller[_0xae3d('0x19')]);router[_0xae3d('0x17')](_0xae3d('0x1a'),auth[_0xae3d('0xc')](),controller[_0xae3d('0x1b')]);router['post'](_0xae3d('0x13'),auth[_0xae3d('0xc')](),controller[_0xae3d('0x1c')]);router['post'](_0xae3d('0x15'),auth[_0xae3d('0xc')](),controller['addApplications']);router['post'](_0xae3d('0x1d'),controller[_0xae3d('0x1e')]);router[_0xae3d('0x17')](_0xae3d('0x1f'),auth[_0xae3d('0xc')](),controller['send']);router[_0xae3d('0x20')]('/:id',auth[_0xae3d('0xc')](),controller[_0xae3d('0x21')]);router[_0xae3d('0x22')](_0xae3d('0x23'),auth[_0xae3d('0xc')](),controller[_0xae3d('0x24')]);router[_0xae3d('0x22')](_0xae3d('0x11'),auth[_0xae3d('0xc')](),controller[_0xae3d('0x25')]);router[_0xae3d('0x22')](_0xae3d('0x1a'),auth[_0xae3d('0xc')](),controller[_0xae3d('0x26')]);router[_0xae3d('0x22')](_0xae3d('0x13'),auth[_0xae3d('0xc')](),controller[_0xae3d('0x27')]);module[_0xae3d('0x28')]=router;
\ No newline at end of file
+var _0x2a07=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','/:id/canned_answers','getAnswers','getAgents','/:id/applications','getApplications','post','addDisposition','addAnswer','/:id/users','addAgents','addApplications','/:id/notify','notify','/:id/send','send','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout'];(function(_0x56d412,_0xb69e5b){var _0x43ac13=function(_0x45a523){while(--_0x45a523){_0x56d412['push'](_0x56d412['shift']());}};_0x43ac13(++_0xb69e5b);}(_0x2a07,0x74));var _0x72a0=function(_0x17882c,_0x4b964b){_0x17882c=_0x17882c-0x0;var _0x355a59=_0x2a07[_0x17882c];return _0x355a59;};'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['get'](_0x72a0('0x11'),auth[_0x72a0('0xb')](),controller['getDispositions']);router[_0x72a0('0xa')](_0x72a0('0x12'),auth[_0x72a0('0xb')](),controller[_0x72a0('0x13')]);router[_0x72a0('0xa')]('/:id/users',auth[_0x72a0('0xb')](),controller[_0x72a0('0x14')]);router[_0x72a0('0xa')](_0x72a0('0x15'),auth[_0x72a0('0xb')](),controller[_0x72a0('0x16')]);router[_0x72a0('0x17')]('/',auth['isAuthenticated'](),controller['create']);router[_0x72a0('0x17')](_0x72a0('0x11'),auth[_0x72a0('0xb')](),controller[_0x72a0('0x18')]);router[_0x72a0('0x17')](_0x72a0('0x12'),auth['isAuthenticated'](),controller[_0x72a0('0x19')]);router[_0x72a0('0x17')](_0x72a0('0x1a'),auth[_0x72a0('0xb')](),controller[_0x72a0('0x1b')]);router['post'](_0x72a0('0x15'),auth[_0x72a0('0xb')](),controller[_0x72a0('0x1c')]);router['post'](_0x72a0('0x1d'),controller[_0x72a0('0x1e')]);router[_0x72a0('0x17')](_0x72a0('0x1f'),auth['isAuthenticated'](),controller[_0x72a0('0x20')]);router['put'](_0x72a0('0xf'),auth[_0x72a0('0xb')](),controller[_0x72a0('0x21')]);router['delete'](_0x72a0('0xf'),auth[_0x72a0('0xb')](),controller[_0x72a0('0x22')]);router[_0x72a0('0x23')]('/:id/dispositions',auth[_0x72a0('0xb')](),controller[_0x72a0('0x24')]);router[_0x72a0('0x23')](_0x72a0('0x12'),auth[_0x72a0('0xb')](),controller[_0x72a0('0x25')]);router['delete']('/:id/users',auth[_0x72a0('0xb')](),controller[_0x72a0('0x26')]);module[_0x72a0('0x27')]=router;
\ No newline at end of file
index 261f83d..adbb327 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c50=['sequelize','randomstring','exports','STRING','name','generate','ENUM','twilio','TEXT','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8c50,0x168));var _0x08c5=function(_0x5a8c38,_0xbd60c0){_0x5a8c38=_0x5a8c38-0x0;var _0x18be3f=_0x8c50[_0x5a8c38];return _0x18be3f;};'use strict';var Sequelize=require(_0x08c5('0x0'));var rs=require(_0x08c5('0x1'));module[_0x08c5('0x2')]={'name':{'type':Sequelize[_0x08c5('0x3')],'unique':_0x08c5('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0x08c5('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x08c5('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x08c5('0x3')],'defaultValue':function(){return rs[_0x08c5('0x5')]();}},'phone':{'type':Sequelize[_0x08c5('0x3')]},'type':{'type':Sequelize[_0x08c5('0x6')](_0x08c5('0x7'))},'accountSid':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x08c5('0x3')]},'notificationTemplate':{'type':Sequelize[_0x08c5('0x8')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x08c5('0x9')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x08c5('0x9')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x08c5('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x08c5('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x08c5('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x08c5('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x08c5('0xa')],'comment':_0x08c5('0xb')},'mandatoryDisposition':{'type':Sequelize[_0x08c5('0x9')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x5d5f8e){if(!_0x5d5f8e){this['setDataValue']('mandatoryDispositionPauseId',null);}this['setDataValue']('mandatoryDisposition',_0x5d5f8e);}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x92e0=['Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','randomstring','exports','STRING','name','generate','ENUM','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER'];(function(_0x45c247,_0xbc6a5c){var _0x387f3f=function(_0x5ea91a){while(--_0x5ea91a){_0x45c247['push'](_0x45c247['shift']());}};_0x387f3f(++_0xbc6a5c);}(_0x92e0,0x104));var _0x092e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x92e0[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x092e('0x0'));module[_0x092e('0x1')]={'name':{'type':Sequelize[_0x092e('0x2')],'unique':_0x092e('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x092e('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0x092e('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x092e('0x2')],'defaultValue':function(){return rs[_0x092e('0x4')]();}},'phone':{'type':Sequelize[_0x092e('0x2')]},'type':{'type':Sequelize[_0x092e('0x5')]('twilio')},'accountSid':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x092e('0x2')]},'notificationTemplate':{'type':Sequelize[_0x092e('0x6')],'defaultValue':function(){return _0x092e('0x7');}},'notificationSound':{'type':Sequelize[_0x092e('0x8')],'defaultValue':![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x092e('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x092e('0x9')],'comment':_0x092e('0xa')},'mandatoryDisposition':{'type':Sequelize[_0x092e('0x8')],'defaultValue':![],'comment':_0x092e('0xb'),'set':function(_0x29355b){if(!_0x29355b){this[_0x092e('0xc')](_0x092e('0xd'),null);}this[_0x092e('0xc')](_0x092e('0xe'),_0x29355b);}},'description':{'type':Sequelize[_0x092e('0x2')]}};
\ No newline at end of file
index 2fe0714..211a865 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e4a=['redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','request\x20sent','error','WhatsappAccount,\x20%s,\x20%s','message','result','catch','sendStatus','end','status','offset','limit','undefined','count','Content-Range','json','apply','reject','save','update','destroy','get','WhatsappAccounts','stack','name','send','index','Pause','mandatoryDispositionPause','map','WhatsappAccount','fieldName','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','where','pick','filter','type','merge','options','includeAll','include','findAll','rows','show','params','keys','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','WhatsappAccountId','findOne','Disposition','rawAttributes','order','sort','removeDispositions','ids','addAnswer','CannedAnswer','removeAnswers','addAgents','emit','removeAgents','isArray','userWhatsappAccount:remove','getAgents','addApplications','sequelize','transaction','WhatsappApplication','bulkCreate','findAndCountAll','priority','getApplications','notify','Applications','account','applications','orderBy','asc','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','from','From','replace','whatsapp:','Body','messageId','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','CmContact','DESC','list','omit','Contacts','contact','WhatsappInteraction','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','ContactId','AttachmentId','UserId','unshift','agent','receiveMessage','WhatsappAccount,\x20%s,\x20%s,\x20%s','debug','entity\x20found','stringify','set','Content-Type','text/xml','to\x20is\x20mandatory','List','out','WhatsappMessage','spread','dataValues','Messages','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','squel','crypto','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x45d1fd,_0x463212){var _0xd0e542=function(_0x23ebc9){while(--_0x23ebc9){_0x45d1fd['push'](_0x45d1fd['shift']());}};_0xd0e542(++_0x463212);}(_0x6e4a,0xa3));var _0xa6e4=function(_0x14ac23,_0x605aa3){_0x14ac23=_0x14ac23-0x0;var _0x27a819=_0x6e4a[_0x14ac23];return _0x27a819;};'use strict';var emlformat=require(_0xa6e4('0x0'));var rimraf=require(_0xa6e4('0x1'));var zipdir=require(_0xa6e4('0x2'));var jsonpatch=require(_0xa6e4('0x3'));var rp=require(_0xa6e4('0x4'));var moment=require(_0xa6e4('0x5'));var BPromise=require(_0xa6e4('0x6'));var Mustache=require(_0xa6e4('0x7'));var util=require('util');var path=require(_0xa6e4('0x8'));var sox=require(_0xa6e4('0x9'));var csv=require('to-csv');var ejs=require(_0xa6e4('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa6e4('0xb'));var squel=require(_0xa6e4('0xc'));var crypto=require(_0xa6e4('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa6e4('0xe'));var querystring=require(_0xa6e4('0xf'));var Papa=require('papaparse');var Redis=require(_0xa6e4('0x10'));var authService=require(_0xa6e4('0x11'));var qs=require(_0xa6e4('0x12'));var as=require(_0xa6e4('0x13'));var hardwareService=require(_0xa6e4('0x14'));var logger=require('../../config/logger')(_0xa6e4('0x15'));var utils=require(_0xa6e4('0x16'));var config=require(_0xa6e4('0x17'));var licenseUtil=require(_0xa6e4('0x18'));var db=require(_0xa6e4('0x19'))['db'];config[_0xa6e4('0x1a')]=_[_0xa6e4('0x1b')](config[_0xa6e4('0x1a')],{'host':_0xa6e4('0x1c'),'port':0x18eb});var socket=require(_0xa6e4('0x1d'))(new Redis(config[_0xa6e4('0x1a')]));require('./whatsappAccount.socket')[_0xa6e4('0x1e')](socket);var jayson=require(_0xa6e4('0x1f'));var client=jayson[_0xa6e4('0x20')][_0xa6e4('0x21')]({'port':0x232c});function respondWithRpcPromise(_0x129ae0,_0x32a609,_0x1f7cf7,_0x3bb073){return new BPromise(function(_0x1d6a83,_0x1ff1da){var _0x3c83ea=_0x3bb073||client;return _0x3c83ea[_0xa6e4('0x22')](_0x129ae0,_0x1f7cf7)[_0xa6e4('0x23')](function(_0x454c66){logger['info']('WhatsappAccount,\x20%s,\x20%s',_0x32a609,_0xa6e4('0x24'));logger['debug']('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x32a609,'request\x20sent',JSON['stringify'](_0x454c66));if(_0x454c66['error']){if(_0x454c66[_0xa6e4('0x25')]['code']===0x1f4){logger[_0xa6e4('0x25')](_0xa6e4('0x26'),_0x32a609,_0x454c66[_0xa6e4('0x25')][_0xa6e4('0x27')]);return _0x1ff1da(_0x454c66[_0xa6e4('0x25')][_0xa6e4('0x27')]);}logger[_0xa6e4('0x25')](_0xa6e4('0x26'),_0x32a609,_0x454c66[_0xa6e4('0x25')][_0xa6e4('0x27')]);return _0x1d6a83(_0x454c66[_0xa6e4('0x25')]['message']);}else{logger['info'](_0xa6e4('0x26'),_0x32a609,_0xa6e4('0x24'));_0x1d6a83(_0x454c66[_0xa6e4('0x28')][_0xa6e4('0x27')]);}})[_0xa6e4('0x29')](function(_0x1cf757){logger[_0xa6e4('0x25')]('WhatsappAccount,\x20%s,\x20%s',_0x32a609,_0x1cf757);_0x1ff1da(_0x1cf757);});});}function respondWithStatusCode(_0x363af1,_0x547f51){_0x547f51=_0x547f51||0xcc;return function(_0x3be609){if(_0x3be609){return _0x363af1[_0xa6e4('0x2a')](_0x547f51);}return _0x363af1['status'](_0x547f51)[_0xa6e4('0x2b')]();};}function respondWithResult(_0x3f94e4,_0x245d73){_0x245d73=_0x245d73||0xc8;return function(_0x47cb1a){if(_0x47cb1a){return _0x3f94e4[_0xa6e4('0x2c')](_0x245d73)['json'](_0x47cb1a);}};}function respondWithFilteredResult(_0x507e98,_0x49dc68){return function(_0x5cbb84){if(_0x5cbb84){var _0x556a9f=typeof _0x49dc68[_0xa6e4('0x2d')]==='undefined'&&typeof _0x49dc68[_0xa6e4('0x2e')]===_0xa6e4('0x2f');var _0x3c09f1=_0x5cbb84[_0xa6e4('0x30')];var _0x4a846b=_0x556a9f?0x0:_0x49dc68[_0xa6e4('0x2d')];var _0x5de607=_0x556a9f?_0x5cbb84[_0xa6e4('0x30')]:_0x49dc68[_0xa6e4('0x2d')]+_0x49dc68['limit'];var _0x56e88b;if(_0x5de607>=_0x3c09f1){_0x5de607=_0x3c09f1;_0x56e88b=0xc8;}else{_0x56e88b=0xce;}_0x507e98[_0xa6e4('0x2c')](_0x56e88b);return _0x507e98['set'](_0xa6e4('0x31'),_0x4a846b+'-'+_0x5de607+'/'+_0x3c09f1)[_0xa6e4('0x32')](_0x5cbb84);}return null;};}function patchUpdates(_0x4715f4){return function(_0x51869b){try{jsonpatch[_0xa6e4('0x33')](_0x51869b,_0x4715f4,!![]);}catch(_0x31c2e6){return BPromise[_0xa6e4('0x34')](_0x31c2e6);}return _0x51869b[_0xa6e4('0x35')]();};}function saveUpdates(_0x566e72,_0x18f0d7){return function(_0x2636ae){if(_0x2636ae){return _0x2636ae[_0xa6e4('0x36')](_0x566e72)[_0xa6e4('0x23')](function(_0x58b2d2){return _0x58b2d2;});}return null;};}function removeEntity(_0x15f2c0,_0x3b23ff){return function(_0x50d11e){if(_0x50d11e){return _0x50d11e[_0xa6e4('0x37')]()['then'](function(){var _0x4c07a2=_0x50d11e[_0xa6e4('0x38')]({'plain':!![]});var _0x27ca13=_0xa6e4('0x39');return db['UserProfileResource'][_0xa6e4('0x37')]({'where':{'type':_0x27ca13,'resourceId':_0x4c07a2['id']}})['then'](function(){return _0x50d11e;});})[_0xa6e4('0x23')](function(){_0x15f2c0[_0xa6e4('0x2c')](0xcc)[_0xa6e4('0x2b')]();});}};}function handleEntityNotFound(_0x40dc2f,_0xfa5846){return function(_0x407a45){if(!_0x407a45){_0x40dc2f['sendStatus'](0x194);}return _0x407a45;};}function handleError(_0x50ff37,_0x3ff8fc){_0x3ff8fc=_0x3ff8fc||0x1f4;return function(_0x14b45d){logger['error'](_0x14b45d[_0xa6e4('0x3a')]);if(_0x14b45d[_0xa6e4('0x3b')]){delete _0x14b45d['name'];}_0x50ff37['status'](_0x3ff8fc)[_0xa6e4('0x3c')](_0x14b45d);};}exports[_0xa6e4('0x3d')]=function(_0x41df26,_0x2cf892){var _0xc9431f={'include':[{'model':db[_0xa6e4('0x3e')],'as':_0xa6e4('0x3f')}]},_0x1aa181={},_0x3413a4={'count':0x0,'rows':[]};var _0x4c7c1e=_[_0xa6e4('0x40')](db[_0xa6e4('0x41')]['rawAttributes'],function(_0x357096){return{'name':_0x357096[_0xa6e4('0x42')],'type':_0x357096['type']['key']};});_0x1aa181['model']=_['map'](_0x4c7c1e,_0xa6e4('0x3b'));_0x1aa181[_0xa6e4('0x43')]=_['keys'](_0x41df26[_0xa6e4('0x43')]);_0x1aa181[_0xa6e4('0x44')]=_[_0xa6e4('0x45')](_0x1aa181[_0xa6e4('0x46')],_0x1aa181['query']);_0xc9431f[_0xa6e4('0x47')]=_[_0xa6e4('0x45')](_0x1aa181[_0xa6e4('0x46')],qs[_0xa6e4('0x48')](_0x41df26[_0xa6e4('0x43')][_0xa6e4('0x48')]));_0xc9431f[_0xa6e4('0x47')]=_0xc9431f[_0xa6e4('0x47')][_0xa6e4('0x49')]?_0xc9431f[_0xa6e4('0x47')]:_0x1aa181[_0xa6e4('0x46')];if(!_0x41df26[_0xa6e4('0x43')][_0xa6e4('0x4a')](_0xa6e4('0x4b'))){_0xc9431f[_0xa6e4('0x2e')]=qs['limit'](_0x41df26[_0xa6e4('0x43')][_0xa6e4('0x2e')]);_0xc9431f[_0xa6e4('0x2d')]=qs[_0xa6e4('0x2d')](_0x41df26['query']['offset']);}_0xc9431f['order']=qs['sort'](_0x41df26[_0xa6e4('0x43')]['sort']);_0xc9431f[_0xa6e4('0x4c')]=qs[_0xa6e4('0x44')](_[_0xa6e4('0x4d')](_0x41df26[_0xa6e4('0x43')],_0x1aa181[_0xa6e4('0x44')]),_0x4c7c1e);if(_0x41df26[_0xa6e4('0x43')][_0xa6e4('0x4e')]){_0xc9431f[_0xa6e4('0x4c')]=_['merge'](_0xc9431f[_0xa6e4('0x4c')],{'$or':_[_0xa6e4('0x40')](_0x4c7c1e,function(_0x3e63ba){if(_0x3e63ba[_0xa6e4('0x4f')]!=='VIRTUAL'){var _0x58df2a={};_0x58df2a[_0x3e63ba[_0xa6e4('0x3b')]]={'$like':'%'+_0x41df26[_0xa6e4('0x43')][_0xa6e4('0x4e')]+'%'};return _0x58df2a;}})});}_0xc9431f=_[_0xa6e4('0x50')]({},_0xc9431f,_0x41df26[_0xa6e4('0x51')]);var _0x2fa903={'where':_0xc9431f[_0xa6e4('0x4c')]};return db[_0xa6e4('0x41')]['count'](_0x2fa903)[_0xa6e4('0x23')](function(_0x582a6c){_0x3413a4[_0xa6e4('0x30')]=_0x582a6c;if(_0x41df26[_0xa6e4('0x43')][_0xa6e4('0x52')]){_0xc9431f[_0xa6e4('0x53')]=[{'all':!![]}];}return db[_0xa6e4('0x41')][_0xa6e4('0x54')](_0xc9431f);})[_0xa6e4('0x23')](function(_0x27475e){_0x3413a4[_0xa6e4('0x55')]=_0x27475e;return _0x3413a4;})[_0xa6e4('0x23')](respondWithFilteredResult(_0x2cf892,_0xc9431f))[_0xa6e4('0x29')](handleError(_0x2cf892,null));};exports[_0xa6e4('0x56')]=function(_0x1ed557,_0x24ccc5){var _0x2c1996={'raw':![],'where':{'id':_0x1ed557[_0xa6e4('0x57')]['id']},'include':[{'model':db['Pause'],'as':_0xa6e4('0x3f')}]},_0x2ed42f={};_0x2ed42f[_0xa6e4('0x46')]=_[_0xa6e4('0x58')](db[_0xa6e4('0x41')]['rawAttributes']);_0x2ed42f[_0xa6e4('0x43')]=_[_0xa6e4('0x58')](_0x1ed557['query']);_0x2ed42f[_0xa6e4('0x44')]=_['intersection'](_0x2ed42f[_0xa6e4('0x46')],_0x2ed42f[_0xa6e4('0x43')]);_0x2c1996[_0xa6e4('0x47')]=_[_0xa6e4('0x45')](_0x2ed42f[_0xa6e4('0x46')],qs[_0xa6e4('0x48')](_0x1ed557[_0xa6e4('0x43')][_0xa6e4('0x48')]));_0x2c1996[_0xa6e4('0x47')]=_0x2c1996[_0xa6e4('0x47')][_0xa6e4('0x49')]?_0x2c1996[_0xa6e4('0x47')]:_0x2ed42f[_0xa6e4('0x46')];if(_0x1ed557[_0xa6e4('0x43')]['includeAll']){_0x2c1996[_0xa6e4('0x53')]=[{'all':!![]}];}_0x2c1996=_['merge']({},_0x2c1996,_0x1ed557[_0xa6e4('0x51')]);return db[_0xa6e4('0x41')][_0xa6e4('0x59')](_0x2c1996)['then'](handleEntityNotFound(_0x24ccc5,null))[_0xa6e4('0x23')](respondWithResult(_0x24ccc5,null))['catch'](handleError(_0x24ccc5,null));};exports[_0xa6e4('0x5a')]=function(_0x43f408,_0x451370){return db[_0xa6e4('0x41')][_0xa6e4('0x5a')](_0x43f408[_0xa6e4('0x5b')],{})['then'](function(_0x4b81b4){var _0x578463=_0x43f408[_0xa6e4('0x5c')][_0xa6e4('0x38')]({'plain':!![]});if(!_0x578463)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x578463[_0xa6e4('0x5d')]==='user'){var _0x4a52dc=_0x4b81b4[_0xa6e4('0x38')]({'plain':!![]});var _0x190f8f=_0xa6e4('0x39');return db[_0xa6e4('0x5e')][_0xa6e4('0x59')]({'where':{'name':_0x190f8f,'userProfileId':_0x578463[_0xa6e4('0x5f')]},'raw':!![]})[_0xa6e4('0x23')](function(_0x53dede){if(_0x53dede&&_0x53dede[_0xa6e4('0x60')]===0x0){return db[_0xa6e4('0x61')]['create']({'name':_0x4a52dc[_0xa6e4('0x3b')],'resourceId':_0x4a52dc['id'],'type':_0x53dede[_0xa6e4('0x3b')],'sectionId':_0x53dede['id']},{})[_0xa6e4('0x23')](function(){return _0x4b81b4;});}else{return _0x4b81b4;}})[_0xa6e4('0x29')](function(_0x232169){logger['error'](_0xa6e4('0x62'),_0x232169);throw _0x232169;});}return _0x4b81b4;})[_0xa6e4('0x23')](respondWithResult(_0x451370,0xc9))[_0xa6e4('0x29')](handleError(_0x451370,null));};exports[_0xa6e4('0x36')]=function(_0x1b504a,_0x370a78){if(_0x1b504a[_0xa6e4('0x5b')]['id']){delete _0x1b504a[_0xa6e4('0x5b')]['id'];}return db[_0xa6e4('0x41')][_0xa6e4('0x59')]({'where':{'id':_0x1b504a[_0xa6e4('0x57')]['id']},'include':[{'model':db[_0xa6e4('0x3e')],'as':_0xa6e4('0x3f')}]})['then'](handleEntityNotFound(_0x370a78,null))[_0xa6e4('0x23')](saveUpdates(_0x1b504a[_0xa6e4('0x5b')],null))[_0xa6e4('0x23')](respondWithResult(_0x370a78,null))[_0xa6e4('0x29')](handleError(_0x370a78,null));};exports[_0xa6e4('0x37')]=function(_0x2bfe82,_0x5dc193){return db[_0xa6e4('0x41')][_0xa6e4('0x59')]({'where':{'id':_0x2bfe82[_0xa6e4('0x57')]['id']}})[_0xa6e4('0x23')](handleEntityNotFound(_0x5dc193,null))[_0xa6e4('0x23')](removeEntity(_0x5dc193,null))['catch'](handleError(_0x5dc193,null));};exports[_0xa6e4('0x63')]=function(_0x5c06ef,_0x329a91){return db[_0xa6e4('0x41')]['describe']()['then'](respondWithResult(_0x329a91,null))[_0xa6e4('0x29')](handleError(_0x329a91,null));};exports['addDisposition']=function(_0x45aa42,_0x402b3d,_0x2baad4){if(_0x45aa42[_0xa6e4('0x5b')]['id']){delete _0x45aa42['body']['id'];}return db['WhatsappAccount'][_0xa6e4('0x59')]({'where':{'id':_0x45aa42['params']['id']}})[_0xa6e4('0x23')](handleEntityNotFound(_0x402b3d,null))[_0xa6e4('0x23')](function(_0x339138){if(_0x339138){_0x45aa42[_0xa6e4('0x5b')][_0xa6e4('0x64')]=_0x339138['id'];return db['Disposition']['create'](_0x45aa42[_0xa6e4('0x5b')]);}})[_0xa6e4('0x23')](respondWithResult(_0x402b3d,null))['catch'](handleError(_0x402b3d,null));};exports['getDispositions']=function(_0x5b01da,_0x1c721a,_0x5bb9e1){var _0x319ce8={'raw':![],'where':{}};var _0x18f883={};var _0x2e4fc5={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0xa6e4('0x65')]({'where':{'id':_0x5b01da['params']['id']}})[_0xa6e4('0x23')](handleEntityNotFound(_0x1c721a,null))['then'](function(_0xab5d50){if(_0xab5d50){_0x18f883[_0xa6e4('0x46')]=_['keys'](db[_0xa6e4('0x66')][_0xa6e4('0x67')]);_0x18f883[_0xa6e4('0x43')]=_['keys'](_0x5b01da[_0xa6e4('0x43')]);_0x18f883[_0xa6e4('0x44')]=_[_0xa6e4('0x45')](_0x18f883[_0xa6e4('0x46')],_0x18f883['query']);_0x319ce8[_0xa6e4('0x47')]=_[_0xa6e4('0x45')](_0x18f883[_0xa6e4('0x46')],qs[_0xa6e4('0x48')](_0x5b01da[_0xa6e4('0x43')][_0xa6e4('0x48')]));_0x319ce8[_0xa6e4('0x47')]=_0x319ce8[_0xa6e4('0x47')][_0xa6e4('0x49')]?_0x319ce8['attributes']:_0x18f883[_0xa6e4('0x46')];if(!_0x5b01da[_0xa6e4('0x43')][_0xa6e4('0x4a')](_0xa6e4('0x4b'))){_0x319ce8[_0xa6e4('0x2e')]=qs[_0xa6e4('0x2e')](_0x5b01da['query']['limit']);_0x319ce8[_0xa6e4('0x2d')]=qs[_0xa6e4('0x2d')](_0x5b01da[_0xa6e4('0x43')][_0xa6e4('0x2d')]);}_0x319ce8[_0xa6e4('0x68')]=qs[_0xa6e4('0x69')](_0x5b01da[_0xa6e4('0x43')][_0xa6e4('0x69')]);_0x319ce8['where']=qs[_0xa6e4('0x44')](_[_0xa6e4('0x4d')](_0x5b01da[_0xa6e4('0x43')],_0x18f883[_0xa6e4('0x44')]));_0x319ce8[_0xa6e4('0x4c')]['WhatsappAccountId']=_0xab5d50['id'];if(_0x5b01da[_0xa6e4('0x43')][_0xa6e4('0x4e')]){_0x319ce8[_0xa6e4('0x4c')]=_[_0xa6e4('0x50')](_0x319ce8[_0xa6e4('0x4c')],{'$or':_['map'](_0x319ce8[_0xa6e4('0x47')],function(_0x7b1741){var _0x28be30={};_0x28be30[_0x7b1741]={'$like':'%'+_0x5b01da[_0xa6e4('0x43')][_0xa6e4('0x4e')]+'%'};return _0x28be30;})});}_0x319ce8=_[_0xa6e4('0x50')]({},_0x319ce8,_0x5b01da['options']);return db['Disposition'][_0xa6e4('0x30')]({'where':_0x319ce8[_0xa6e4('0x4c')]})[_0xa6e4('0x23')](function(_0x5d4a1a){_0x2e4fc5[_0xa6e4('0x30')]=_0x5d4a1a;if(_0x5b01da['query'][_0xa6e4('0x52')]){_0x319ce8['include']=[{'all':!![]}];}return db[_0xa6e4('0x66')][_0xa6e4('0x54')](_0x319ce8);})[_0xa6e4('0x23')](function(_0x2c6bb9){_0x2e4fc5[_0xa6e4('0x55')]=_0x2c6bb9;return _0x2e4fc5;});}})['then'](respondWithFilteredResult(_0x1c721a,_0x319ce8))['catch'](handleError(_0x1c721a,null));};exports[_0xa6e4('0x6a')]=function(_0x466639,_0x49e587,_0x546e48){return db[_0xa6e4('0x41')][_0xa6e4('0x59')]({'where':{'id':_0x466639[_0xa6e4('0x57')]['id']}})[_0xa6e4('0x23')](handleEntityNotFound(_0x49e587,null))[_0xa6e4('0x23')](function(_0x2d428b){if(_0x2d428b){return _0x2d428b[_0xa6e4('0x6a')](_0x466639['query'][_0xa6e4('0x6b')]);}})['then'](respondWithStatusCode(_0x49e587,null))['catch'](handleError(_0x49e587,null));};exports[_0xa6e4('0x6c')]=function(_0x49c419,_0x250832,_0xc843e2){if(_0x49c419[_0xa6e4('0x5b')]['id']){delete _0x49c419[_0xa6e4('0x5b')]['id'];}return db[_0xa6e4('0x41')][_0xa6e4('0x59')]({'where':{'id':_0x49c419['params']['id']}})[_0xa6e4('0x23')](handleEntityNotFound(_0x250832,null))[_0xa6e4('0x23')](function(_0xabe700){if(_0xabe700){_0x49c419['body'][_0xa6e4('0x64')]=_0xabe700['id'];return db[_0xa6e4('0x6d')][_0xa6e4('0x5a')](_0x49c419[_0xa6e4('0x5b')]);}})[_0xa6e4('0x23')](respondWithResult(_0x250832,null))['catch'](handleError(_0x250832,null));};exports['getAnswers']=function(_0x2dc03d,_0x31c58b,_0x428170){var _0x88c1bf={'raw':![],'where':{}};var _0x497e44={};var _0x58c613={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0xa6e4('0x65')]({'where':{'id':_0x2dc03d[_0xa6e4('0x57')]['id']}})[_0xa6e4('0x23')](handleEntityNotFound(_0x31c58b,null))[_0xa6e4('0x23')](function(_0x486add){if(_0x486add){_0x497e44[_0xa6e4('0x46')]=_[_0xa6e4('0x58')](db['CannedAnswer'][_0xa6e4('0x67')]);_0x497e44[_0xa6e4('0x43')]=_[_0xa6e4('0x58')](_0x2dc03d[_0xa6e4('0x43')]);_0x497e44['filters']=_[_0xa6e4('0x45')](_0x497e44[_0xa6e4('0x46')],_0x497e44['query']);_0x88c1bf['attributes']=_[_0xa6e4('0x45')](_0x497e44[_0xa6e4('0x46')],qs['fields'](_0x2dc03d['query']['fields']));_0x88c1bf['attributes']=_0x88c1bf[_0xa6e4('0x47')][_0xa6e4('0x49')]?_0x88c1bf[_0xa6e4('0x47')]:_0x497e44['model'];if(!_0x2dc03d['query']['hasOwnProperty'](_0xa6e4('0x4b'))){_0x88c1bf['limit']=qs[_0xa6e4('0x2e')](_0x2dc03d[_0xa6e4('0x43')][_0xa6e4('0x2e')]);_0x88c1bf[_0xa6e4('0x2d')]=qs['offset'](_0x2dc03d[_0xa6e4('0x43')][_0xa6e4('0x2d')]);}_0x88c1bf[_0xa6e4('0x68')]=qs['sort'](_0x2dc03d['query'][_0xa6e4('0x69')]);_0x88c1bf[_0xa6e4('0x4c')]=qs[_0xa6e4('0x44')](_[_0xa6e4('0x4d')](_0x2dc03d[_0xa6e4('0x43')],_0x497e44[_0xa6e4('0x44')]));_0x88c1bf[_0xa6e4('0x4c')][_0xa6e4('0x64')]=_0x486add['id'];if(_0x2dc03d[_0xa6e4('0x43')][_0xa6e4('0x4e')]){_0x88c1bf[_0xa6e4('0x4c')]=_[_0xa6e4('0x50')](_0x88c1bf['where'],{'$or':_[_0xa6e4('0x40')](_0x88c1bf[_0xa6e4('0x47')],function(_0x4e87bb){var _0x5df883={};_0x5df883[_0x4e87bb]={'$like':'%'+_0x2dc03d[_0xa6e4('0x43')]['filter']+'%'};return _0x5df883;})});}_0x88c1bf=_[_0xa6e4('0x50')]({},_0x88c1bf,_0x2dc03d[_0xa6e4('0x51')]);return db[_0xa6e4('0x6d')][_0xa6e4('0x30')]({'where':_0x88c1bf[_0xa6e4('0x4c')]})[_0xa6e4('0x23')](function(_0x570216){_0x58c613[_0xa6e4('0x30')]=_0x570216;if(_0x2dc03d[_0xa6e4('0x43')]['includeAll']){_0x88c1bf[_0xa6e4('0x53')]=[{'all':!![]}];}return db[_0xa6e4('0x6d')][_0xa6e4('0x54')](_0x88c1bf);})[_0xa6e4('0x23')](function(_0x2af5c0){_0x58c613['rows']=_0x2af5c0;return _0x58c613;});}})[_0xa6e4('0x23')](respondWithFilteredResult(_0x31c58b,_0x88c1bf))[_0xa6e4('0x29')](handleError(_0x31c58b,null));};exports[_0xa6e4('0x6e')]=function(_0x1fd65e,_0x285222,_0x330bf8){return db[_0xa6e4('0x41')]['find']({'where':{'id':_0x1fd65e['params']['id']}})[_0xa6e4('0x23')](handleEntityNotFound(_0x285222,null))[_0xa6e4('0x23')](function(_0x12c61c){if(_0x12c61c){return _0x12c61c[_0xa6e4('0x6e')](_0x1fd65e['query'][_0xa6e4('0x6b')]);}})[_0xa6e4('0x23')](respondWithStatusCode(_0x285222,null))['catch'](handleError(_0x285222,null));};exports[_0xa6e4('0x6f')]=function(_0xa6979a,_0xf8770f,_0x4c0ac2){return db[_0xa6e4('0x41')][_0xa6e4('0x59')]({'where':{'id':_0xa6979a[_0xa6e4('0x57')]['id']}})[_0xa6e4('0x23')](handleEntityNotFound(_0xf8770f,null))[_0xa6e4('0x23')](function(_0x573205){if(_0x573205){return _0x573205[_0xa6e4('0x6f')](_0xa6979a[_0xa6e4('0x5b')]['ids'],_['omit'](_0xa6979a[_0xa6e4('0x5b')],[_0xa6e4('0x6b'),'id'])||{})['spread'](function(_0x1f443e){for(var _0x9ef7be=0x0;_0x9ef7be<_0xa6979a[_0xa6e4('0x5b')][_0xa6e4('0x6b')][_0xa6e4('0x49')];_0x9ef7be+=0x1){socket[_0xa6e4('0x70')]('userWhatsappAccount:save',{'UserId':Number(_0xa6979a['body'][_0xa6e4('0x6b')][_0x9ef7be]),'WhatsappAccountId':Number(_0xa6979a['params']['id'])});}return _0x1f443e;});}})[_0xa6e4('0x23')](respondWithResult(_0xf8770f,null))[_0xa6e4('0x29')](handleError(_0xf8770f,null));};exports[_0xa6e4('0x71')]=function(_0x1de66f,_0x519590,_0x5c0d5e){return db['WhatsappAccount'][_0xa6e4('0x59')]({'where':{'id':_0x1de66f[_0xa6e4('0x57')]['id']}})[_0xa6e4('0x23')](handleEntityNotFound(_0x519590,null))[_0xa6e4('0x23')](function(_0x5b7bf5){if(_0x5b7bf5){return _0x5b7bf5[_0xa6e4('0x71')](_0x1de66f[_0xa6e4('0x43')]['ids'])[_0xa6e4('0x23')](function(){if(_[_0xa6e4('0x72')](_0x1de66f[_0xa6e4('0x43')][_0xa6e4('0x6b')])){for(var _0x163ca1=0x0;_0x163ca1<_0x1de66f[_0xa6e4('0x43')]['ids'][_0xa6e4('0x49')];_0x163ca1+=0x1){socket[_0xa6e4('0x70')](_0xa6e4('0x73'),{'UserId':Number(_0x1de66f[_0xa6e4('0x43')][_0xa6e4('0x6b')][_0x163ca1]),'WhatsappAccountId':Number(_0x1de66f[_0xa6e4('0x57')]['id'])});}}else{socket[_0xa6e4('0x70')](_0xa6e4('0x73'),{'UserId':Number(_0x1de66f[_0xa6e4('0x43')][_0xa6e4('0x6b')]),'WhatsappAccountId':Number(_0x1de66f['params']['id'])});}});}})['then'](respondWithStatusCode(_0x519590,null))[_0xa6e4('0x29')](handleError(_0x519590,null));};exports[_0xa6e4('0x74')]=function(_0x9cb2d,_0x30f594,_0x27ea24){var _0x16c59b={};var _0x4c8714={};var _0x14c888;var _0xaac9bb;return db[_0xa6e4('0x41')]['findOne']({'where':{'id':_0x9cb2d[_0xa6e4('0x57')]['id']}})[_0xa6e4('0x23')](handleEntityNotFound(_0x30f594,null))[_0xa6e4('0x23')](function(_0x40ebf2){if(_0x40ebf2){_0x14c888=_0x40ebf2;_0x4c8714[_0xa6e4('0x46')]=_[_0xa6e4('0x58')](db['User'][_0xa6e4('0x67')]);_0x4c8714[_0xa6e4('0x43')]=_[_0xa6e4('0x58')](_0x9cb2d[_0xa6e4('0x43')]);_0x4c8714[_0xa6e4('0x44')]=_[_0xa6e4('0x45')](_0x4c8714[_0xa6e4('0x46')],_0x4c8714[_0xa6e4('0x43')]);_0x16c59b['attributes']=_[_0xa6e4('0x45')](_0x4c8714[_0xa6e4('0x46')],qs[_0xa6e4('0x48')](_0x9cb2d[_0xa6e4('0x43')][_0xa6e4('0x48')]));_0x16c59b[_0xa6e4('0x47')]=_0x16c59b[_0xa6e4('0x47')][_0xa6e4('0x49')]?_0x16c59b[_0xa6e4('0x47')]:_0x4c8714[_0xa6e4('0x46')];_0x16c59b[_0xa6e4('0x68')]=qs[_0xa6e4('0x69')](_0x9cb2d[_0xa6e4('0x43')][_0xa6e4('0x69')]);_0x16c59b[_0xa6e4('0x4c')]=qs[_0xa6e4('0x44')](_[_0xa6e4('0x4d')](_0x9cb2d[_0xa6e4('0x43')],_0x4c8714[_0xa6e4('0x44')]));if(_0x9cb2d[_0xa6e4('0x43')][_0xa6e4('0x4e')]){_0x16c59b[_0xa6e4('0x4c')]=_[_0xa6e4('0x50')](_0x16c59b[_0xa6e4('0x4c')],{'$or':_[_0xa6e4('0x40')](_0x16c59b['attributes'],function(_0x53b13f){var _0x217ae3={};_0x217ae3[_0x53b13f]={'$like':'%'+_0x9cb2d[_0xa6e4('0x43')][_0xa6e4('0x4e')]+'%'};return _0x217ae3;})});}_0x16c59b=_[_0xa6e4('0x50')]({},_0x16c59b,_0x9cb2d[_0xa6e4('0x51')]);return _0x14c888[_0xa6e4('0x74')](_0x16c59b);}})[_0xa6e4('0x23')](function(_0x2a00b6){if(_0x2a00b6){_0xaac9bb=_0x2a00b6['length'];if(!_0x9cb2d[_0xa6e4('0x43')][_0xa6e4('0x4a')](_0xa6e4('0x4b'))){_0x16c59b['limit']=qs[_0xa6e4('0x2e')](_0x9cb2d['query'][_0xa6e4('0x2e')]);_0x16c59b[_0xa6e4('0x2d')]=qs[_0xa6e4('0x2d')](_0x9cb2d[_0xa6e4('0x43')]['offset']);}return _0x14c888[_0xa6e4('0x74')](_0x16c59b);}})[_0xa6e4('0x23')](function(_0x23574c){if(_0x23574c){return _0x23574c?{'count':_0xaac9bb,'rows':_0x23574c}:null;}})[_0xa6e4('0x23')](respondWithResult(_0x30f594,null))[_0xa6e4('0x29')](handleError(_0x30f594,null));};exports[_0xa6e4('0x75')]=function(_0x7be4cb,_0x2f0f0d,_0x46e826){return db[_0xa6e4('0x41')][_0xa6e4('0x65')]({'where':{'id':_0x7be4cb[_0xa6e4('0x57')]['id']}})[_0xa6e4('0x23')](handleEntityNotFound(_0x2f0f0d,null))[_0xa6e4('0x23')](function(_0x39e62c){if(_0x39e62c){return db[_0xa6e4('0x76')][_0xa6e4('0x77')](function(_0x275304){return db[_0xa6e4('0x78')][_0xa6e4('0x37')]({'where':{'WhatsappAccountId':_0x7be4cb['params']['id']},'transaction':_0x275304})['then'](function(_0x307a6e){var _0x31649a=_['map'](_0x7be4cb[_0xa6e4('0x5b')],function(_0x516f2f){_0x516f2f['WhatsappAccountId']=_0x7be4cb['params']['id'];return _0x516f2f;});return db['WhatsappApplication'][_0xa6e4('0x79')](_0x31649a,{'transaction':_0x275304});});})[_0xa6e4('0x23')](function(){return db[_0xa6e4('0x78')][_0xa6e4('0x7a')]({'where':{'WhatsappAccountId':_0x7be4cb['params']['id']},'order':_0xa6e4('0x7b')});});}})[_0xa6e4('0x23')](respondWithResult(_0x2f0f0d,null))[_0xa6e4('0x29')](handleError(_0x2f0f0d,null));};exports[_0xa6e4('0x7c')]=function(_0x59d43e,_0x5606a1,_0xd8faa1){var _0x403a83={};var _0x587ef0={};var _0x5e384f;var _0x4c5111;return db[_0xa6e4('0x41')][_0xa6e4('0x65')]({'where':{'id':_0x59d43e['params']['id']}})[_0xa6e4('0x23')](handleEntityNotFound(_0x5606a1,null))[_0xa6e4('0x23')](function(_0x4a79fe){if(_0x4a79fe){_0x5e384f=_0x4a79fe;_0x587ef0[_0xa6e4('0x46')]=_[_0xa6e4('0x58')](db['WhatsappApplication'][_0xa6e4('0x67')]);_0x587ef0[_0xa6e4('0x43')]=_[_0xa6e4('0x58')](_0x59d43e[_0xa6e4('0x43')]);_0x587ef0['filters']=_[_0xa6e4('0x45')](_0x587ef0[_0xa6e4('0x46')],_0x587ef0[_0xa6e4('0x43')]);_0x403a83[_0xa6e4('0x47')]=_['intersection'](_0x587ef0[_0xa6e4('0x46')],qs[_0xa6e4('0x48')](_0x59d43e['query'][_0xa6e4('0x48')]));_0x403a83[_0xa6e4('0x47')]=_0x403a83['attributes'][_0xa6e4('0x49')]?_0x403a83[_0xa6e4('0x47')]:_0x587ef0[_0xa6e4('0x46')];_0x403a83[_0xa6e4('0x68')]=qs[_0xa6e4('0x69')](_0x59d43e[_0xa6e4('0x43')]['sort']);_0x403a83[_0xa6e4('0x4c')]=qs[_0xa6e4('0x44')](_[_0xa6e4('0x4d')](_0x59d43e[_0xa6e4('0x43')],_0x587ef0[_0xa6e4('0x44')]));if(_0x59d43e['query'][_0xa6e4('0x4e')]){_0x403a83['where']=_[_0xa6e4('0x50')](_0x403a83['where'],{'$or':_[_0xa6e4('0x40')](_0x403a83[_0xa6e4('0x47')],function(_0x375a68){var _0xdada92={};_0xdada92[_0x375a68]={'$like':'%'+_0x59d43e[_0xa6e4('0x43')][_0xa6e4('0x4e')]+'%'};return _0xdada92;})});}_0x403a83=_[_0xa6e4('0x50')]({},_0x403a83,_0x59d43e['options']);return _0x5e384f[_0xa6e4('0x7c')](_0x403a83);}})['then'](function(_0x3181c2){if(_0x3181c2){_0x4c5111=_0x3181c2[_0xa6e4('0x49')];if(!_0x59d43e['query'][_0xa6e4('0x4a')]('nolimit')){_0x403a83[_0xa6e4('0x2e')]=qs[_0xa6e4('0x2e')](_0x59d43e[_0xa6e4('0x43')][_0xa6e4('0x2e')]);_0x403a83[_0xa6e4('0x2d')]=qs['offset'](_0x59d43e[_0xa6e4('0x43')]['offset']);}return _0x5e384f[_0xa6e4('0x7c')](_0x403a83);}})[_0xa6e4('0x23')](function(_0x355f6f){if(_0x355f6f){return _0x355f6f?{'count':_0x4c5111,'rows':_0x355f6f}:null;}})['then'](respondWithResult(_0x5606a1,null))[_0xa6e4('0x29')](handleError(_0x5606a1,null));};exports[_0xa6e4('0x7d')]=function(_0x1ac836,_0x5b19d6,_0xb41ae4){var _0xe81383={'channel':'whatsapp'};var _0x5b24c0=[];var _0x321488=[];var _0x35de8c={};return db[_0xa6e4('0x41')]['find']({'where':{'id':_0x1ac836['params']['id']},'include':[{'model':db['WhatsappApplication'],'as':_0xa6e4('0x7e')}]})[_0xa6e4('0x23')](handleEntityNotFound(_0x5b19d6,null))[_0xa6e4('0x23')](function(_0x2eb35e){_0xe81383[_0xa6e4('0x7f')]=_0x2eb35e;_0xe81383[_0xa6e4('0x80')]=_[_0xa6e4('0x81')](_0x2eb35e[_0xa6e4('0x7e')],['priority'],[_0xa6e4('0x82')]);if(_0xe81383[_0xa6e4('0x7f')][_0xa6e4('0x7e')]){delete _0xe81383[_0xa6e4('0x7f')][_0xa6e4('0x7e')];}return db['CmContact']['describe']();})['then'](function(_0x2e0898){if(!_0x2e0898){throw new db[(_0xa6e4('0x83'))][(_0xa6e4('0x84'))](_0xa6e4('0x85'));}_0x5b24c0=_[_0xa6e4('0x86')](_[_0xa6e4('0x58')](_0x2e0898),[_0xa6e4('0x87'),_0xa6e4('0x88')]);_0x321488=_[_0xa6e4('0x86')](_['keys'](_0x2e0898),[_0xa6e4('0x87'),_0xa6e4('0x88'),_0xa6e4('0x89'),_0xa6e4('0x8a')]);_0xe81383[_0xa6e4('0x5b')]={'mapKey':_0xa6e4('0x8b')};if(_0xe81383['account']['type']&&_0xe81383['account'][_0xa6e4('0x4f')]===_0xa6e4('0x8c')){_0xe81383[_0xa6e4('0x5b')][_0xa6e4('0x8d')]=_0x1ac836[_0xa6e4('0x5b')][_0xa6e4('0x8e')][_0xa6e4('0x8f')](_0xa6e4('0x90'),'');_0xe81383['body'][_0xa6e4('0x5b')]=_0x1ac836[_0xa6e4('0x5b')][_0xa6e4('0x91')];_0xe81383['body'][_0xa6e4('0x92')]=_0x1ac836[_0xa6e4('0x5b')]['MessageSid'];}if(_0xe81383['body']['id']){delete _0xe81383[_0xa6e4('0x5b')]['id'];}if(_[_0xa6e4('0x93')](_0xe81383[_0xa6e4('0x5b')]['from'])){throw new db[(_0xa6e4('0x83'))]['ValidationError'](_0xa6e4('0x94'));}if(_[_0xa6e4('0x93')](_0xe81383[_0xa6e4('0x5b')]['body'])||_0xe81383[_0xa6e4('0x5b')][_0xa6e4('0x5b')]===''){throw new db[(_0xa6e4('0x83'))][(_0xa6e4('0x84'))](_0xa6e4('0x95'));}if(_[_0xa6e4('0x93')](_0xe81383[_0xa6e4('0x5b')]['mapKey'])){throw new db[(_0xa6e4('0x83'))][(_0xa6e4('0x84'))](_0xa6e4('0x96')+_0x321488);}if(!_[_0xa6e4('0x97')](_0x321488,_0xe81383[_0xa6e4('0x5b')][_0xa6e4('0x98')])){throw new db[(_0xa6e4('0x83'))][(_0xa6e4('0x84'))](_0xa6e4('0x99')+_0x321488);}_0x35de8c[_0xe81383[_0xa6e4('0x5b')][_0xa6e4('0x98')]]=_0xe81383[_0xa6e4('0x5b')][_0xa6e4('0x8d')];return db[_0xa6e4('0x9a')][_0xa6e4('0x59')]({'where':{'id':_0xe81383['account'][_0xa6e4('0x8a')]},'include':[{'model':db[_0xa6e4('0x9b')],'as':'Contacts','where':_0x35de8c,'limit':0x1,'order':[[_0xa6e4('0x88'),_0xa6e4('0x9c')]]}]});})['then'](handleEntityNotFound(_0x5b19d6,null))[_0xa6e4('0x23')](function(_0x2f1d65){if(_0x2f1d65){_0xe81383[_0xa6e4('0x9d')]=_[_0xa6e4('0x9e')](_0x2f1d65,[_0xa6e4('0x9f')]);if(_0x2f1d65[_0xa6e4('0x9f')][_0xa6e4('0x49')]){return _0x2f1d65[_0xa6e4('0x9f')][0x0];}var _0x8135fe=_[_0xa6e4('0x1b')](_0xe81383[_0xa6e4('0x5b')],{'firstName':_0xe81383[_0xa6e4('0x5b')]['from'],'ListId':_0x2f1d65['id']});_0x8135fe[_0xe81383['body'][_0xa6e4('0x98')]]=_0xe81383[_0xa6e4('0x5b')]['from'];return db[_0xa6e4('0x9b')][_0xa6e4('0x5a')](_0x8135fe,{'fields':_0x5b24c0,'raw':!![]});}})['then'](handleEntityNotFound(_0x5b19d6,null))[_0xa6e4('0x23')](function(_0x54cff0){if(_0x54cff0){_0xe81383[_0xa6e4('0xa0')]=_0x54cff0;var _0xa65dd9={'ContactId':_0x54cff0['id'],'phone':_0xe81383[_0xa6e4('0x5b')][_0xa6e4('0x8d')],'WhatsappAccountId':_0x1ac836[_0xa6e4('0x57')]['id']};var _0x5c060b={'ContactId':_0x54cff0['id'],'WhatsappAccountId':_0x1ac836[_0xa6e4('0x57')]['id'],'closed':![]};return db[_0xa6e4('0xa1')]['find']({'where':_0x5c060b})['then'](function(_0x87eac7){if(_0x87eac7){return[_0x87eac7,![]];}return db[_0xa6e4('0xa1')][_0xa6e4('0x5a')](_0xa65dd9)[_0xa6e4('0x23')](function(_0x6582bd){return[_0x6582bd,!![]];});});}})['spread'](function(_0x1bea99,_0x1d211d){_0xe81383[_0xa6e4('0xa2')]=_0x1bea99[_0xa6e4('0x38')]({'plain':!![]});_0xe81383[_0xa6e4('0xa2')][_0xa6e4('0xa3')]=![];if(_0x1d211d){if(_0xe81383[_0xa6e4('0x7f')][_0xa6e4('0xa4')]){_0xe81383[_0xa6e4('0x80')][_0xa6e4('0xa5')]({'id':0x0,'priority':_0xe81383['applications'][_0xa6e4('0x49')]+0x1,'app':_0xa6e4('0xa6'),'appdata':_0xa6e4('0xa7'),'interval':_0xa6e4('0xa8')});}_0xe81383[_0xa6e4('0xa2')]['created']=!![];}return db['WhatsappMessage']['create']({'phone':_0xe81383['body'][_0xa6e4('0x8d')],'messageId':_0xe81383['body'][_0xa6e4('0x92')],'body':_0xe81383[_0xa6e4('0x5b')][_0xa6e4('0x5b')],'WhatsappAccountId':_0x1ac836['params']['id'],'WhatsappInteractionId':_0x1bea99['id'],'direction':'in','ContactId':_0x1bea99[_0xa6e4('0xa9')],'AttachmentId':_0xe81383['body'][_0xa6e4('0xaa')]});})[_0xa6e4('0x23')](function(_0x9ef2b0){_0xe81383[_0xa6e4('0x27')]=_0x9ef2b0;if(_0xe81383['interaction'][_0xa6e4('0xab')]){return db['User'][_0xa6e4('0x59')]({'attributes':['id',_0xa6e4('0x3b')],'where':{'id':_0xe81383['interaction'][_0xa6e4('0xab')]}})[_0xa6e4('0x23')](function(_0x3b8a42){if(_0x3b8a42){_0xe81383[_0xa6e4('0x80')][_0xa6e4('0xac')]({'id':0x0,'priority':0x0,'app':_0xa6e4('0xad'),'appdata':_0x3b8a42[_0xa6e4('0x3b')]+','+(_0xe81383['account']['waitForTheAssignedAgent']||0xa),'interval':_0xa6e4('0xa8')});}return respondWithRpcPromise('Start','startRouting',_0xe81383);});}return respondWithRpcPromise('Start','startRouting',_0xe81383);})[_0xa6e4('0x23')](function(_0x3fb3ac){if(_0x3fb3ac){var _0x31efa2=0xc8;var _0x4d84a0=_0xa6e4('0xae');logger['info'](_0xa6e4('0xaf'),_0x4d84a0,_0x31efa2,'entity\x20found');logger[_0xa6e4('0xb0')]('WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x4d84a0,_0x31efa2,_0xa6e4('0xb1'),JSON[_0xa6e4('0xb2')](_0x3fb3ac));if(_0xe81383[_0xa6e4('0x7f')][_0xa6e4('0x4f')]===_0xa6e4('0x8c')){return _0x5b19d6[_0xa6e4('0x2c')](_0x31efa2)[_0xa6e4('0xb3')](_0xa6e4('0xb4'),_0xa6e4('0xb5'))[_0xa6e4('0x3c')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x5b19d6[_0xa6e4('0x2c')](_0x31efa2)['json'](_0x3fb3ac);}}})[_0xa6e4('0x29')](handleError(_0x5b19d6,null));};exports['send']=function(_0xa1a393,_0x447bf8,_0xf3208a){var _0x41e116,_0x2bc24a,_0x2dfef2;if(_[_0xa6e4('0x93')](_0xa1a393[_0xa6e4('0x5b')][_0xa6e4('0x5b')])||_0xa1a393[_0xa6e4('0x5b')][_0xa6e4('0x5b')]===''){throw new db['Sequelize'][(_0xa6e4('0x84'))](_0xa6e4('0x95'));}if(_[_0xa6e4('0x93')](_0xa1a393[_0xa6e4('0x5b')]['to'])){throw new db[(_0xa6e4('0x83'))][(_0xa6e4('0x84'))](_0xa6e4('0xb6'));}_0x41e116=_0xa1a393['body']['to'];return db[_0xa6e4('0x41')]['find']({'where':{'id':_0xa1a393[_0xa6e4('0x57')]['id']},'include':[{'model':db[_0xa6e4('0x9a')],'as':'List','include':[{'model':db[_0xa6e4('0x9b')],'as':_0xa6e4('0x9f'),'where':{'mobile':_0x41e116},'limit':0x1,'order':[['updatedAt',_0xa6e4('0x9c')]]}]}]})[_0xa6e4('0x23')](handleEntityNotFound(_0x447bf8,null))[_0xa6e4('0x23')](function(_0x2b2fa6){if(_0x2b2fa6&&_0x2b2fa6['List']){_0x2bc24a=_0x2b2fa6[_0xa6e4('0x38')]({'plain':!![]});if(_0x2bc24a['List']&&_0x2bc24a[_0xa6e4('0xb7')][_0xa6e4('0x9f')][_0xa6e4('0x49')]){return _0x2bc24a['List'][_0xa6e4('0x9f')][0x0];}return db['CmContact']['create'](_['defaults'](_0xa1a393[_0xa6e4('0x5b')],{'firstName':_0x41e116,'mobile':_0x41e116,'phone':_0x41e116,'ListId':_0x2bc24a[_0xa6e4('0x8a')]}));}})[_0xa6e4('0x23')](handleEntityNotFound(_0x447bf8,null))[_0xa6e4('0x23')](function(_0x24e288){if(_0x24e288){_0x2dfef2=_0x24e288;return db[_0xa6e4('0xa1')][_0xa6e4('0x59')]({'where':{'ContactId':_0x2dfef2['id'],'closed':![],'WhatsappAccountId':_0x2bc24a['id']}})[_0xa6e4('0x23')](function(_0x39a624){if(_0x39a624){return[_0x39a624,![]];}return db[_0xa6e4('0xa1')][_0xa6e4('0x5a')]({'UserId':_0xa1a393[_0xa6e4('0x5c')]['id'],'ContactId':_0x2dfef2['id'],'WhatsappAccountId':_0x2bc24a['id'],'phone':_0x41e116,'firstMsgDirection':_0xa6e4('0xb8'),'Messages':[_[_0xa6e4('0x50')](_0xa1a393['body'],{'read':![],'body':_0xa1a393['body'][_0xa6e4('0x5b')],'phone':_0x41e116,'WhatsappAccountId':_0x2bc24a['id'],'UserId':_0xa1a393[_0xa6e4('0x5c')]['id'],'ContactId':_0x2dfef2['id']})]},{'include':[{'model':db[_0xa6e4('0xb9')],'as':'Messages'}]})[_0xa6e4('0x23')](function(_0x3ca340){return[_0x3ca340,!![]];});});}})[_0xa6e4('0xba')](function(_0x4c858a,_0x4107fc){if(_0x4107fc){return _0x4c858a;}return db[_0xa6e4('0xb9')][_0xa6e4('0x5a')](_[_0xa6e4('0x50')](_0xa1a393[_0xa6e4('0x5b')],{'read':![],'body':_0xa1a393[_0xa6e4('0x5b')]['body'],'phone':_0x41e116,'WhatsappAccountId':_0x2bc24a['id'],'WhatsappInteractionId':_0x4c858a['id'],'UserId':_0xa1a393[_0xa6e4('0x5c')]['id'],'ContactId':_0x2dfef2['id']}))[_0xa6e4('0x23')](function(_0x527ad0){_0x4c858a[_0xa6e4('0xbb')][_0xa6e4('0xbc')]=[];_0x4c858a[_0xa6e4('0xbb')][_0xa6e4('0xbc')][_0xa6e4('0xa5')](_0x527ad0[_0xa6e4('0xbb')]);return _0x4c858a;});})['then'](respondWithResult(_0x447bf8,null))[_0xa6e4('0x29')](handleError(_0x447bf8,null));};
\ No newline at end of file
+var _0x1c45=['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','CmList','CmContact','Contacts','list','contact','interaction','created','autoclose','push','close','unmanaged','messageId','ContactId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','Content-Type','text/xml','to\x20is\x20mandatory','List','DESC','ListId','WhatsappInteraction','out','WhatsappMessage','Messages','dataValues','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','jayson/promise','client','http','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','get','WhatsappAccounts','UserProfileResource','stack','name','send','Pause','map','WhatsappAccount','rawAttributes','type','key','query','filters','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','includeAll','include','findAll','rows','catch','show','params','mandatoryDispositionPause','keys','intersection','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','WhatsappAccountId','getDispositions','findOne','Disposition','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addAgents','omit','spread','emit','removeAgents','isArray','userWhatsappAccount:remove','getAgents','User','transaction','WhatsappApplication','findAndCountAll','priority','getApplications','Applications','applications','orderBy','asc','Sequelize','ValidationError','updatedAt','createdAt','CompanyId','mobile','account','twilio','from','From','whatsapp:','Body','MessageSid','isNil'];(function(_0x264f26,_0xad3f53){var _0x482eff=function(_0x319385){while(--_0x319385){_0x264f26['push'](_0x264f26['shift']());}};_0x482eff(++_0xad3f53);}(_0x1c45,0xe1));var _0x51c4=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x1c45[_0x432682];return _0x463d05;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x51c4('0x0'));var zipdir=require(_0x51c4('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x51c4('0x2'));var moment=require(_0x51c4('0x3'));var BPromise=require(_0x51c4('0x4'));var Mustache=require(_0x51c4('0x5'));var util=require(_0x51c4('0x6'));var path=require('path');var sox=require(_0x51c4('0x7'));var csv=require(_0x51c4('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x51c4('0x9'));var _=require(_0x51c4('0xa'));var squel=require(_0x51c4('0xb'));var crypto=require(_0x51c4('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x51c4('0x8'));var querystring=require(_0x51c4('0xd'));var Papa=require(_0x51c4('0xe'));var Redis=require(_0x51c4('0xf'));var authService=require(_0x51c4('0x10'));var qs=require(_0x51c4('0x11'));var as=require(_0x51c4('0x12'));var hardwareService=require(_0x51c4('0x13'));var logger=require('../../config/logger')(_0x51c4('0x14'));var utils=require(_0x51c4('0x15'));var config=require(_0x51c4('0x16'));var licenseUtil=require(_0x51c4('0x17'));var db=require('../../mysqldb')['db'];config[_0x51c4('0x18')]=_[_0x51c4('0x19')](config[_0x51c4('0x18')],{'host':_0x51c4('0x1a'),'port':0x18eb});var socket=require(_0x51c4('0x1b'))(new Redis(config[_0x51c4('0x18')]));require(_0x51c4('0x1c'))[_0x51c4('0x1d')](socket);var jayson=require(_0x51c4('0x1e'));var client=jayson[_0x51c4('0x1f')][_0x51c4('0x20')]({'port':0x232c});function respondWithRpcPromise(_0x45557a,_0x1b119a,_0x120a41,_0x45d058){return new BPromise(function(_0x3b691a,_0x2e4037){var _0x5256f1=_0x45d058||client;return _0x5256f1[_0x51c4('0x21')](_0x45557a,_0x120a41)[_0x51c4('0x22')](function(_0x3c78f7){logger[_0x51c4('0x23')](_0x51c4('0x24'),_0x1b119a,_0x51c4('0x25'));logger[_0x51c4('0x26')](_0x51c4('0x27'),_0x1b119a,_0x51c4('0x25'),JSON[_0x51c4('0x28')](_0x3c78f7));if(_0x3c78f7['error']){if(_0x3c78f7[_0x51c4('0x29')][_0x51c4('0x2a')]===0x1f4){logger[_0x51c4('0x29')](_0x51c4('0x24'),_0x1b119a,_0x3c78f7[_0x51c4('0x29')]['message']);return _0x2e4037(_0x3c78f7[_0x51c4('0x29')][_0x51c4('0x2b')]);}logger[_0x51c4('0x29')](_0x51c4('0x24'),_0x1b119a,_0x3c78f7[_0x51c4('0x29')][_0x51c4('0x2b')]);return _0x3b691a(_0x3c78f7[_0x51c4('0x29')][_0x51c4('0x2b')]);}else{logger['info'](_0x51c4('0x24'),_0x1b119a,_0x51c4('0x25'));_0x3b691a(_0x3c78f7[_0x51c4('0x2c')][_0x51c4('0x2b')]);}})['catch'](function(_0x4c619f){logger['error']('WhatsappAccount,\x20%s,\x20%s',_0x1b119a,_0x4c619f);_0x2e4037(_0x4c619f);});});}function respondWithStatusCode(_0x4df253,_0x2184e7){_0x2184e7=_0x2184e7||0xcc;return function(_0x58e586){if(_0x58e586){return _0x4df253[_0x51c4('0x2d')](_0x2184e7);}return _0x4df253[_0x51c4('0x2e')](_0x2184e7)[_0x51c4('0x2f')]();};}function respondWithResult(_0x173d9d,_0x15e9ba){_0x15e9ba=_0x15e9ba||0xc8;return function(_0x589e75){if(_0x589e75){return _0x173d9d[_0x51c4('0x2e')](_0x15e9ba)['json'](_0x589e75);}};}function respondWithFilteredResult(_0x42b053,_0x25dadc){return function(_0x49a810){if(_0x49a810){var _0x3b51f3=typeof _0x25dadc[_0x51c4('0x30')]===_0x51c4('0x31')&&typeof _0x25dadc[_0x51c4('0x32')]===_0x51c4('0x31');var _0x516f1d=_0x49a810[_0x51c4('0x33')];var _0x25e8b2=_0x3b51f3?0x0:_0x25dadc[_0x51c4('0x30')];var _0x25b2f4=_0x3b51f3?_0x49a810[_0x51c4('0x33')]:_0x25dadc[_0x51c4('0x30')]+_0x25dadc[_0x51c4('0x32')];var _0x1c7e66;if(_0x25b2f4>=_0x516f1d){_0x25b2f4=_0x516f1d;_0x1c7e66=0xc8;}else{_0x1c7e66=0xce;}_0x42b053[_0x51c4('0x2e')](_0x1c7e66);return _0x42b053[_0x51c4('0x34')](_0x51c4('0x35'),_0x25e8b2+'-'+_0x25b2f4+'/'+_0x516f1d)['json'](_0x49a810);}return null;};}function patchUpdates(_0xf9f772){return function(_0x315a07){try{jsonpatch['apply'](_0x315a07,_0xf9f772,!![]);}catch(_0x3f74dc){return BPromise[_0x51c4('0x36')](_0x3f74dc);}return _0x315a07[_0x51c4('0x37')]();};}function saveUpdates(_0x577fdd,_0xa0a1c){return function(_0x318c7d){if(_0x318c7d){return _0x318c7d[_0x51c4('0x38')](_0x577fdd)['then'](function(_0x4d6270){return _0x4d6270;});}return null;};}function removeEntity(_0x525d6d,_0x2ff066){return function(_0x2074f4){if(_0x2074f4){return _0x2074f4[_0x51c4('0x39')]()['then'](function(){var _0x79a024=_0x2074f4[_0x51c4('0x3a')]({'plain':!![]});var _0x3cff7f=_0x51c4('0x3b');return db[_0x51c4('0x3c')]['destroy']({'where':{'type':_0x3cff7f,'resourceId':_0x79a024['id']}})[_0x51c4('0x22')](function(){return _0x2074f4;});})[_0x51c4('0x22')](function(){_0x525d6d[_0x51c4('0x2e')](0xcc)[_0x51c4('0x2f')]();});}};}function handleEntityNotFound(_0x2ce7ea,_0x1672e3){return function(_0x1afdde){if(!_0x1afdde){_0x2ce7ea[_0x51c4('0x2d')](0x194);}return _0x1afdde;};}function handleError(_0x11efc4,_0x1fb8ba){_0x1fb8ba=_0x1fb8ba||0x1f4;return function(_0x3491c9){logger[_0x51c4('0x29')](_0x3491c9[_0x51c4('0x3d')]);if(_0x3491c9['name']){delete _0x3491c9[_0x51c4('0x3e')];}_0x11efc4[_0x51c4('0x2e')](_0x1fb8ba)[_0x51c4('0x3f')](_0x3491c9);};}exports['index']=function(_0x521f77,_0x3516f0){var _0x5a2d19={'include':[{'model':db[_0x51c4('0x40')],'as':'mandatoryDispositionPause'}]},_0x37226c={},_0x4ef079={'count':0x0,'rows':[]};var _0x50fbd1=_[_0x51c4('0x41')](db[_0x51c4('0x42')][_0x51c4('0x43')],function(_0x45909d){return{'name':_0x45909d['fieldName'],'type':_0x45909d[_0x51c4('0x44')][_0x51c4('0x45')]};});_0x37226c['model']=_[_0x51c4('0x41')](_0x50fbd1,'name');_0x37226c[_0x51c4('0x46')]=_['keys'](_0x521f77[_0x51c4('0x46')]);_0x37226c[_0x51c4('0x47')]=_['intersection'](_0x37226c[_0x51c4('0x48')],_0x37226c['query']);_0x5a2d19[_0x51c4('0x49')]=_['intersection'](_0x37226c[_0x51c4('0x48')],qs[_0x51c4('0x4a')](_0x521f77[_0x51c4('0x46')][_0x51c4('0x4a')]));_0x5a2d19['attributes']=_0x5a2d19[_0x51c4('0x49')][_0x51c4('0x4b')]?_0x5a2d19[_0x51c4('0x49')]:_0x37226c[_0x51c4('0x48')];if(!_0x521f77[_0x51c4('0x46')][_0x51c4('0x4c')](_0x51c4('0x4d'))){_0x5a2d19[_0x51c4('0x32')]=qs[_0x51c4('0x32')](_0x521f77['query'][_0x51c4('0x32')]);_0x5a2d19['offset']=qs[_0x51c4('0x30')](_0x521f77[_0x51c4('0x46')][_0x51c4('0x30')]);}_0x5a2d19[_0x51c4('0x4e')]=qs[_0x51c4('0x4f')](_0x521f77[_0x51c4('0x46')][_0x51c4('0x4f')]);_0x5a2d19[_0x51c4('0x50')]=qs['filters'](_[_0x51c4('0x51')](_0x521f77['query'],_0x37226c[_0x51c4('0x47')]),_0x50fbd1);if(_0x521f77['query']['filter']){_0x5a2d19['where']=_['merge'](_0x5a2d19[_0x51c4('0x50')],{'$or':_[_0x51c4('0x41')](_0x50fbd1,function(_0x43eba2){if(_0x43eba2[_0x51c4('0x44')]!==_0x51c4('0x52')){var _0x4e5458={};_0x4e5458[_0x43eba2[_0x51c4('0x3e')]]={'$like':'%'+_0x521f77['query'][_0x51c4('0x53')]+'%'};return _0x4e5458;}})});}_0x5a2d19=_[_0x51c4('0x54')]({},_0x5a2d19,_0x521f77['options']);var _0x19f806={'where':_0x5a2d19[_0x51c4('0x50')]};return db[_0x51c4('0x42')]['count'](_0x19f806)[_0x51c4('0x22')](function(_0xd11f3){_0x4ef079[_0x51c4('0x33')]=_0xd11f3;if(_0x521f77[_0x51c4('0x46')][_0x51c4('0x55')]){_0x5a2d19[_0x51c4('0x56')]=[{'all':!![]}];}return db[_0x51c4('0x42')][_0x51c4('0x57')](_0x5a2d19);})[_0x51c4('0x22')](function(_0x129f31){_0x4ef079[_0x51c4('0x58')]=_0x129f31;return _0x4ef079;})[_0x51c4('0x22')](respondWithFilteredResult(_0x3516f0,_0x5a2d19))[_0x51c4('0x59')](handleError(_0x3516f0,null));};exports[_0x51c4('0x5a')]=function(_0xf77206,_0x2db702){var _0x32e44a={'raw':![],'where':{'id':_0xf77206[_0x51c4('0x5b')]['id']},'include':[{'model':db[_0x51c4('0x40')],'as':_0x51c4('0x5c')}]},_0x10f8f9={};_0x10f8f9['model']=_['keys'](db[_0x51c4('0x42')][_0x51c4('0x43')]);_0x10f8f9[_0x51c4('0x46')]=_[_0x51c4('0x5d')](_0xf77206[_0x51c4('0x46')]);_0x10f8f9['filters']=_[_0x51c4('0x5e')](_0x10f8f9['model'],_0x10f8f9[_0x51c4('0x46')]);_0x32e44a[_0x51c4('0x49')]=_[_0x51c4('0x5e')](_0x10f8f9[_0x51c4('0x48')],qs[_0x51c4('0x4a')](_0xf77206[_0x51c4('0x46')][_0x51c4('0x4a')]));_0x32e44a[_0x51c4('0x49')]=_0x32e44a[_0x51c4('0x49')]['length']?_0x32e44a[_0x51c4('0x49')]:_0x10f8f9[_0x51c4('0x48')];if(_0xf77206['query'][_0x51c4('0x55')]){_0x32e44a[_0x51c4('0x56')]=[{'all':!![]}];}_0x32e44a=_[_0x51c4('0x54')]({},_0x32e44a,_0xf77206[_0x51c4('0x5f')]);return db[_0x51c4('0x42')][_0x51c4('0x60')](_0x32e44a)[_0x51c4('0x22')](handleEntityNotFound(_0x2db702,null))[_0x51c4('0x22')](respondWithResult(_0x2db702,null))['catch'](handleError(_0x2db702,null));};exports[_0x51c4('0x61')]=function(_0x5aecd3,_0x27ab3d){return db['WhatsappAccount'][_0x51c4('0x61')](_0x5aecd3[_0x51c4('0x62')],{})[_0x51c4('0x22')](function(_0x46cc61){var _0x40f4b6=_0x5aecd3[_0x51c4('0x63')][_0x51c4('0x3a')]({'plain':!![]});if(!_0x40f4b6)throw new Error(_0x51c4('0x64'));if(_0x40f4b6[_0x51c4('0x65')]===_0x51c4('0x63')){var _0x2474d1=_0x46cc61[_0x51c4('0x3a')]({'plain':!![]});var _0x45cc11=_0x51c4('0x3b');return db[_0x51c4('0x66')][_0x51c4('0x60')]({'where':{'name':_0x45cc11,'userProfileId':_0x40f4b6['userProfileId']},'raw':!![]})[_0x51c4('0x22')](function(_0x5b4d24){if(_0x5b4d24&&_0x5b4d24[_0x51c4('0x67')]===0x0){return db['UserProfileResource']['create']({'name':_0x2474d1[_0x51c4('0x3e')],'resourceId':_0x2474d1['id'],'type':_0x5b4d24['name'],'sectionId':_0x5b4d24['id']},{})['then'](function(){return _0x46cc61;});}else{return _0x46cc61;}})[_0x51c4('0x59')](function(_0x26770c){logger[_0x51c4('0x29')](_0x51c4('0x68'),_0x26770c);throw _0x26770c;});}return _0x46cc61;})[_0x51c4('0x22')](respondWithResult(_0x27ab3d,0xc9))[_0x51c4('0x59')](handleError(_0x27ab3d,null));};exports[_0x51c4('0x38')]=function(_0x1ab7a3,_0x5336b4){if(_0x1ab7a3[_0x51c4('0x62')]['id']){delete _0x1ab7a3[_0x51c4('0x62')]['id'];}return db['WhatsappAccount']['find']({'where':{'id':_0x1ab7a3['params']['id']},'include':[{'model':db[_0x51c4('0x40')],'as':_0x51c4('0x5c')}]})['then'](handleEntityNotFound(_0x5336b4,null))[_0x51c4('0x22')](saveUpdates(_0x1ab7a3['body'],null))[_0x51c4('0x22')](respondWithResult(_0x5336b4,null))[_0x51c4('0x59')](handleError(_0x5336b4,null));};exports['destroy']=function(_0x4d555b,_0x1db484){return db[_0x51c4('0x42')][_0x51c4('0x60')]({'where':{'id':_0x4d555b[_0x51c4('0x5b')]['id']}})[_0x51c4('0x22')](handleEntityNotFound(_0x1db484,null))[_0x51c4('0x22')](removeEntity(_0x1db484,null))[_0x51c4('0x59')](handleError(_0x1db484,null));};exports['describe']=function(_0x2bb238,_0x5d0e12){return db[_0x51c4('0x42')][_0x51c4('0x69')]()['then'](respondWithResult(_0x5d0e12,null))[_0x51c4('0x59')](handleError(_0x5d0e12,null));};exports[_0x51c4('0x6a')]=function(_0x2acc86,_0x485b3b,_0x157335){if(_0x2acc86[_0x51c4('0x62')]['id']){delete _0x2acc86['body']['id'];}return db[_0x51c4('0x42')][_0x51c4('0x60')]({'where':{'id':_0x2acc86[_0x51c4('0x5b')]['id']}})[_0x51c4('0x22')](handleEntityNotFound(_0x485b3b,null))[_0x51c4('0x22')](function(_0x138728){if(_0x138728){_0x2acc86[_0x51c4('0x62')][_0x51c4('0x6b')]=_0x138728['id'];return db['Disposition'][_0x51c4('0x61')](_0x2acc86[_0x51c4('0x62')]);}})[_0x51c4('0x22')](respondWithResult(_0x485b3b,null))[_0x51c4('0x59')](handleError(_0x485b3b,null));};exports[_0x51c4('0x6c')]=function(_0x105e65,_0x328f29,_0x26dcd0){var _0x196d3c={'raw':![],'where':{}};var _0x173252={};var _0x3e52be={'count':0x0,'rows':[]};return db[_0x51c4('0x42')][_0x51c4('0x6d')]({'where':{'id':_0x105e65[_0x51c4('0x5b')]['id']}})[_0x51c4('0x22')](handleEntityNotFound(_0x328f29,null))[_0x51c4('0x22')](function(_0x330164){if(_0x330164){_0x173252['model']=_[_0x51c4('0x5d')](db[_0x51c4('0x6e')][_0x51c4('0x43')]);_0x173252[_0x51c4('0x46')]=_[_0x51c4('0x5d')](_0x105e65[_0x51c4('0x46')]);_0x173252['filters']=_[_0x51c4('0x5e')](_0x173252[_0x51c4('0x48')],_0x173252[_0x51c4('0x46')]);_0x196d3c[_0x51c4('0x49')]=_['intersection'](_0x173252[_0x51c4('0x48')],qs[_0x51c4('0x4a')](_0x105e65[_0x51c4('0x46')][_0x51c4('0x4a')]));_0x196d3c[_0x51c4('0x49')]=_0x196d3c[_0x51c4('0x49')][_0x51c4('0x4b')]?_0x196d3c[_0x51c4('0x49')]:_0x173252[_0x51c4('0x48')];if(!_0x105e65[_0x51c4('0x46')][_0x51c4('0x4c')](_0x51c4('0x4d'))){_0x196d3c[_0x51c4('0x32')]=qs[_0x51c4('0x32')](_0x105e65[_0x51c4('0x46')]['limit']);_0x196d3c[_0x51c4('0x30')]=qs[_0x51c4('0x30')](_0x105e65[_0x51c4('0x46')][_0x51c4('0x30')]);}_0x196d3c[_0x51c4('0x4e')]=qs[_0x51c4('0x4f')](_0x105e65[_0x51c4('0x46')]['sort']);_0x196d3c[_0x51c4('0x50')]=qs[_0x51c4('0x47')](_['pick'](_0x105e65[_0x51c4('0x46')],_0x173252['filters']));_0x196d3c['where'][_0x51c4('0x6b')]=_0x330164['id'];if(_0x105e65[_0x51c4('0x46')][_0x51c4('0x53')]){_0x196d3c[_0x51c4('0x50')]=_[_0x51c4('0x54')](_0x196d3c[_0x51c4('0x50')],{'$or':_['map'](_0x196d3c[_0x51c4('0x49')],function(_0x21454b){var _0x4af82d={};_0x4af82d[_0x21454b]={'$like':'%'+_0x105e65[_0x51c4('0x46')][_0x51c4('0x53')]+'%'};return _0x4af82d;})});}_0x196d3c=_[_0x51c4('0x54')]({},_0x196d3c,_0x105e65['options']);return db['Disposition'][_0x51c4('0x33')]({'where':_0x196d3c[_0x51c4('0x50')]})[_0x51c4('0x22')](function(_0x2ff4ae){_0x3e52be[_0x51c4('0x33')]=_0x2ff4ae;if(_0x105e65['query'][_0x51c4('0x55')]){_0x196d3c[_0x51c4('0x56')]=[{'all':!![]}];}return db[_0x51c4('0x6e')][_0x51c4('0x57')](_0x196d3c);})['then'](function(_0x3fe4b3){_0x3e52be['rows']=_0x3fe4b3;return _0x3e52be;});}})[_0x51c4('0x22')](respondWithFilteredResult(_0x328f29,_0x196d3c))[_0x51c4('0x59')](handleError(_0x328f29,null));};exports[_0x51c4('0x6f')]=function(_0x5c4d97,_0x57045b,_0x5dfe58){return db['WhatsappAccount'][_0x51c4('0x60')]({'where':{'id':_0x5c4d97['params']['id']}})[_0x51c4('0x22')](handleEntityNotFound(_0x57045b,null))[_0x51c4('0x22')](function(_0x243216){if(_0x243216){return _0x243216[_0x51c4('0x6f')](_0x5c4d97['query'][_0x51c4('0x70')]);}})[_0x51c4('0x22')](respondWithStatusCode(_0x57045b,null))[_0x51c4('0x59')](handleError(_0x57045b,null));};exports[_0x51c4('0x71')]=function(_0x310466,_0x284588,_0x20f7b7){if(_0x310466['body']['id']){delete _0x310466[_0x51c4('0x62')]['id'];}return db[_0x51c4('0x42')][_0x51c4('0x60')]({'where':{'id':_0x310466['params']['id']}})[_0x51c4('0x22')](handleEntityNotFound(_0x284588,null))[_0x51c4('0x22')](function(_0x2dbc60){if(_0x2dbc60){_0x310466['body'][_0x51c4('0x6b')]=_0x2dbc60['id'];return db[_0x51c4('0x72')][_0x51c4('0x61')](_0x310466['body']);}})['then'](respondWithResult(_0x284588,null))[_0x51c4('0x59')](handleError(_0x284588,null));};exports[_0x51c4('0x73')]=function(_0x37ef31,_0x2280e7,_0x34f4a5){var _0x46c56a={'raw':![],'where':{}};var _0x11911f={};var _0x3d4065={'count':0x0,'rows':[]};return db[_0x51c4('0x42')][_0x51c4('0x6d')]({'where':{'id':_0x37ef31[_0x51c4('0x5b')]['id']}})[_0x51c4('0x22')](handleEntityNotFound(_0x2280e7,null))[_0x51c4('0x22')](function(_0x34b4d1){if(_0x34b4d1){_0x11911f[_0x51c4('0x48')]=_[_0x51c4('0x5d')](db[_0x51c4('0x72')][_0x51c4('0x43')]);_0x11911f[_0x51c4('0x46')]=_['keys'](_0x37ef31[_0x51c4('0x46')]);_0x11911f[_0x51c4('0x47')]=_[_0x51c4('0x5e')](_0x11911f[_0x51c4('0x48')],_0x11911f[_0x51c4('0x46')]);_0x46c56a[_0x51c4('0x49')]=_[_0x51c4('0x5e')](_0x11911f['model'],qs[_0x51c4('0x4a')](_0x37ef31[_0x51c4('0x46')]['fields']));_0x46c56a[_0x51c4('0x49')]=_0x46c56a[_0x51c4('0x49')][_0x51c4('0x4b')]?_0x46c56a['attributes']:_0x11911f[_0x51c4('0x48')];if(!_0x37ef31[_0x51c4('0x46')][_0x51c4('0x4c')](_0x51c4('0x4d'))){_0x46c56a[_0x51c4('0x32')]=qs[_0x51c4('0x32')](_0x37ef31[_0x51c4('0x46')][_0x51c4('0x32')]);_0x46c56a['offset']=qs[_0x51c4('0x30')](_0x37ef31[_0x51c4('0x46')][_0x51c4('0x30')]);}_0x46c56a['order']=qs[_0x51c4('0x4f')](_0x37ef31[_0x51c4('0x46')][_0x51c4('0x4f')]);_0x46c56a['where']=qs[_0x51c4('0x47')](_[_0x51c4('0x51')](_0x37ef31[_0x51c4('0x46')],_0x11911f['filters']));_0x46c56a[_0x51c4('0x50')][_0x51c4('0x6b')]=_0x34b4d1['id'];if(_0x37ef31[_0x51c4('0x46')][_0x51c4('0x53')]){_0x46c56a['where']=_[_0x51c4('0x54')](_0x46c56a['where'],{'$or':_['map'](_0x46c56a[_0x51c4('0x49')],function(_0x12e3ef){var _0xccdb3f={};_0xccdb3f[_0x12e3ef]={'$like':'%'+_0x37ef31['query'][_0x51c4('0x53')]+'%'};return _0xccdb3f;})});}_0x46c56a=_['merge']({},_0x46c56a,_0x37ef31['options']);return db[_0x51c4('0x72')][_0x51c4('0x33')]({'where':_0x46c56a['where']})[_0x51c4('0x22')](function(_0x1144f9){_0x3d4065['count']=_0x1144f9;if(_0x37ef31[_0x51c4('0x46')][_0x51c4('0x55')]){_0x46c56a[_0x51c4('0x56')]=[{'all':!![]}];}return db['CannedAnswer'][_0x51c4('0x57')](_0x46c56a);})['then'](function(_0x44d93f){_0x3d4065[_0x51c4('0x58')]=_0x44d93f;return _0x3d4065;});}})[_0x51c4('0x22')](respondWithFilteredResult(_0x2280e7,_0x46c56a))[_0x51c4('0x59')](handleError(_0x2280e7,null));};exports[_0x51c4('0x74')]=function(_0x4c1b28,_0x4a440e,_0xb1b881){return db[_0x51c4('0x42')][_0x51c4('0x60')]({'where':{'id':_0x4c1b28[_0x51c4('0x5b')]['id']}})[_0x51c4('0x22')](handleEntityNotFound(_0x4a440e,null))[_0x51c4('0x22')](function(_0x30198a){if(_0x30198a){return _0x30198a[_0x51c4('0x74')](_0x4c1b28[_0x51c4('0x46')]['ids']);}})[_0x51c4('0x22')](respondWithStatusCode(_0x4a440e,null))['catch'](handleError(_0x4a440e,null));};exports[_0x51c4('0x75')]=function(_0x38449e,_0x3fc2b4,_0x17755b){return db[_0x51c4('0x42')]['find']({'where':{'id':_0x38449e[_0x51c4('0x5b')]['id']}})[_0x51c4('0x22')](handleEntityNotFound(_0x3fc2b4,null))[_0x51c4('0x22')](function(_0x4c2233){if(_0x4c2233){return _0x4c2233[_0x51c4('0x75')](_0x38449e[_0x51c4('0x62')][_0x51c4('0x70')],_[_0x51c4('0x76')](_0x38449e[_0x51c4('0x62')],[_0x51c4('0x70'),'id'])||{})[_0x51c4('0x77')](function(_0x122b3e){for(var _0x4aac5d=0x0;_0x4aac5d<_0x38449e['body'][_0x51c4('0x70')][_0x51c4('0x4b')];_0x4aac5d+=0x1){socket[_0x51c4('0x78')]('userWhatsappAccount:save',{'UserId':Number(_0x38449e['body'][_0x51c4('0x70')][_0x4aac5d]),'WhatsappAccountId':Number(_0x38449e[_0x51c4('0x5b')]['id'])});}return _0x122b3e;});}})[_0x51c4('0x22')](respondWithResult(_0x3fc2b4,null))[_0x51c4('0x59')](handleError(_0x3fc2b4,null));};exports[_0x51c4('0x79')]=function(_0x58606b,_0x31b101,_0x94f49){return db[_0x51c4('0x42')][_0x51c4('0x60')]({'where':{'id':_0x58606b[_0x51c4('0x5b')]['id']}})[_0x51c4('0x22')](handleEntityNotFound(_0x31b101,null))['then'](function(_0x36d56f){if(_0x36d56f){return _0x36d56f[_0x51c4('0x79')](_0x58606b['query']['ids'])['then'](function(){if(_[_0x51c4('0x7a')](_0x58606b[_0x51c4('0x46')][_0x51c4('0x70')])){for(var _0x3f6da9=0x0;_0x3f6da9<_0x58606b[_0x51c4('0x46')]['ids']['length'];_0x3f6da9+=0x1){socket['emit']('userWhatsappAccount:remove',{'UserId':Number(_0x58606b['query'][_0x51c4('0x70')][_0x3f6da9]),'WhatsappAccountId':Number(_0x58606b['params']['id'])});}}else{socket[_0x51c4('0x78')](_0x51c4('0x7b'),{'UserId':Number(_0x58606b[_0x51c4('0x46')][_0x51c4('0x70')]),'WhatsappAccountId':Number(_0x58606b['params']['id'])});}});}})[_0x51c4('0x22')](respondWithStatusCode(_0x31b101,null))[_0x51c4('0x59')](handleError(_0x31b101,null));};exports[_0x51c4('0x7c')]=function(_0x1e5fb8,_0x5ab043,_0x3ea821){var _0x19c431={};var _0x14824b={};var _0x3562e1;var _0x221d19;return db[_0x51c4('0x42')][_0x51c4('0x6d')]({'where':{'id':_0x1e5fb8[_0x51c4('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5ab043,null))['then'](function(_0xcf7204){if(_0xcf7204){_0x3562e1=_0xcf7204;_0x14824b['model']=_[_0x51c4('0x5d')](db[_0x51c4('0x7d')][_0x51c4('0x43')]);_0x14824b[_0x51c4('0x46')]=_[_0x51c4('0x5d')](_0x1e5fb8['query']);_0x14824b[_0x51c4('0x47')]=_['intersection'](_0x14824b[_0x51c4('0x48')],_0x14824b[_0x51c4('0x46')]);_0x19c431[_0x51c4('0x49')]=_['intersection'](_0x14824b[_0x51c4('0x48')],qs[_0x51c4('0x4a')](_0x1e5fb8[_0x51c4('0x46')][_0x51c4('0x4a')]));_0x19c431[_0x51c4('0x49')]=_0x19c431[_0x51c4('0x49')][_0x51c4('0x4b')]?_0x19c431[_0x51c4('0x49')]:_0x14824b[_0x51c4('0x48')];_0x19c431[_0x51c4('0x4e')]=qs[_0x51c4('0x4f')](_0x1e5fb8[_0x51c4('0x46')]['sort']);_0x19c431[_0x51c4('0x50')]=qs[_0x51c4('0x47')](_[_0x51c4('0x51')](_0x1e5fb8[_0x51c4('0x46')],_0x14824b['filters']));if(_0x1e5fb8[_0x51c4('0x46')]['filter']){_0x19c431[_0x51c4('0x50')]=_[_0x51c4('0x54')](_0x19c431[_0x51c4('0x50')],{'$or':_[_0x51c4('0x41')](_0x19c431['attributes'],function(_0x4d3d92){var _0x563c02={};_0x563c02[_0x4d3d92]={'$like':'%'+_0x1e5fb8[_0x51c4('0x46')][_0x51c4('0x53')]+'%'};return _0x563c02;})});}_0x19c431=_['merge']({},_0x19c431,_0x1e5fb8[_0x51c4('0x5f')]);return _0x3562e1[_0x51c4('0x7c')](_0x19c431);}})[_0x51c4('0x22')](function(_0x10ea86){if(_0x10ea86){_0x221d19=_0x10ea86[_0x51c4('0x4b')];if(!_0x1e5fb8['query'][_0x51c4('0x4c')](_0x51c4('0x4d'))){_0x19c431['limit']=qs[_0x51c4('0x32')](_0x1e5fb8['query'][_0x51c4('0x32')]);_0x19c431[_0x51c4('0x30')]=qs[_0x51c4('0x30')](_0x1e5fb8['query'][_0x51c4('0x30')]);}return _0x3562e1[_0x51c4('0x7c')](_0x19c431);}})[_0x51c4('0x22')](function(_0x1bb460){if(_0x1bb460){return _0x1bb460?{'count':_0x221d19,'rows':_0x1bb460}:null;}})[_0x51c4('0x22')](respondWithResult(_0x5ab043,null))[_0x51c4('0x59')](handleError(_0x5ab043,null));};exports['addApplications']=function(_0x37f063,_0x324391,_0x54eaf9){return db[_0x51c4('0x42')][_0x51c4('0x6d')]({'where':{'id':_0x37f063[_0x51c4('0x5b')]['id']}})['then'](handleEntityNotFound(_0x324391,null))[_0x51c4('0x22')](function(_0x35cf59){if(_0x35cf59){return db['sequelize'][_0x51c4('0x7e')](function(_0x4564de){return db[_0x51c4('0x7f')][_0x51c4('0x39')]({'where':{'WhatsappAccountId':_0x37f063[_0x51c4('0x5b')]['id']},'transaction':_0x4564de})['then'](function(_0x332ad8){var _0x535c43=_[_0x51c4('0x41')](_0x37f063[_0x51c4('0x62')],function(_0x21b55d){_0x21b55d[_0x51c4('0x6b')]=_0x37f063[_0x51c4('0x5b')]['id'];return _0x21b55d;});return db[_0x51c4('0x7f')]['bulkCreate'](_0x535c43,{'transaction':_0x4564de});});})['then'](function(){return db[_0x51c4('0x7f')][_0x51c4('0x80')]({'where':{'WhatsappAccountId':_0x37f063[_0x51c4('0x5b')]['id']},'order':_0x51c4('0x81')});});}})[_0x51c4('0x22')](respondWithResult(_0x324391,null))['catch'](handleError(_0x324391,null));};exports[_0x51c4('0x82')]=function(_0x28c667,_0x7e4001,_0x58670b){var _0x4ffbff={};var _0x30ea9c={};var _0x2db662;var _0x1446a8;return db[_0x51c4('0x42')][_0x51c4('0x6d')]({'where':{'id':_0x28c667[_0x51c4('0x5b')]['id']}})[_0x51c4('0x22')](handleEntityNotFound(_0x7e4001,null))[_0x51c4('0x22')](function(_0x1cc2cd){if(_0x1cc2cd){_0x2db662=_0x1cc2cd;_0x30ea9c['model']=_[_0x51c4('0x5d')](db[_0x51c4('0x7f')][_0x51c4('0x43')]);_0x30ea9c[_0x51c4('0x46')]=_[_0x51c4('0x5d')](_0x28c667[_0x51c4('0x46')]);_0x30ea9c['filters']=_['intersection'](_0x30ea9c[_0x51c4('0x48')],_0x30ea9c['query']);_0x4ffbff['attributes']=_[_0x51c4('0x5e')](_0x30ea9c[_0x51c4('0x48')],qs['fields'](_0x28c667[_0x51c4('0x46')]['fields']));_0x4ffbff[_0x51c4('0x49')]=_0x4ffbff[_0x51c4('0x49')][_0x51c4('0x4b')]?_0x4ffbff[_0x51c4('0x49')]:_0x30ea9c[_0x51c4('0x48')];_0x4ffbff[_0x51c4('0x4e')]=qs[_0x51c4('0x4f')](_0x28c667[_0x51c4('0x46')][_0x51c4('0x4f')]);_0x4ffbff[_0x51c4('0x50')]=qs[_0x51c4('0x47')](_[_0x51c4('0x51')](_0x28c667[_0x51c4('0x46')],_0x30ea9c[_0x51c4('0x47')]));if(_0x28c667['query'][_0x51c4('0x53')]){_0x4ffbff[_0x51c4('0x50')]=_[_0x51c4('0x54')](_0x4ffbff[_0x51c4('0x50')],{'$or':_['map'](_0x4ffbff[_0x51c4('0x49')],function(_0x35a527){var _0xba1e78={};_0xba1e78[_0x35a527]={'$like':'%'+_0x28c667[_0x51c4('0x46')][_0x51c4('0x53')]+'%'};return _0xba1e78;})});}_0x4ffbff=_[_0x51c4('0x54')]({},_0x4ffbff,_0x28c667[_0x51c4('0x5f')]);return _0x2db662[_0x51c4('0x82')](_0x4ffbff);}})[_0x51c4('0x22')](function(_0x274d28){if(_0x274d28){_0x1446a8=_0x274d28['length'];if(!_0x28c667[_0x51c4('0x46')][_0x51c4('0x4c')](_0x51c4('0x4d'))){_0x4ffbff[_0x51c4('0x32')]=qs['limit'](_0x28c667[_0x51c4('0x46')][_0x51c4('0x32')]);_0x4ffbff[_0x51c4('0x30')]=qs[_0x51c4('0x30')](_0x28c667['query'][_0x51c4('0x30')]);}return _0x2db662[_0x51c4('0x82')](_0x4ffbff);}})[_0x51c4('0x22')](function(_0x3368c4){if(_0x3368c4){return _0x3368c4?{'count':_0x1446a8,'rows':_0x3368c4}:null;}})[_0x51c4('0x22')](respondWithResult(_0x7e4001,null))[_0x51c4('0x59')](handleError(_0x7e4001,null));};exports['notify']=function(_0x47f075,_0x488f73,_0x35d1b1){var _0x2e31bf={'channel':'whatsapp'};var _0x195075=[];var _0x9542bc=[];var _0x308afd={};return db[_0x51c4('0x42')][_0x51c4('0x60')]({'where':{'id':_0x47f075[_0x51c4('0x5b')]['id']},'include':[{'model':db[_0x51c4('0x7f')],'as':_0x51c4('0x83')}]})[_0x51c4('0x22')](handleEntityNotFound(_0x488f73,null))[_0x51c4('0x22')](function(_0x27726d){_0x2e31bf['account']=_0x27726d;_0x2e31bf[_0x51c4('0x84')]=_[_0x51c4('0x85')](_0x27726d[_0x51c4('0x83')],['priority'],[_0x51c4('0x86')]);if(_0x2e31bf['account'][_0x51c4('0x83')]){delete _0x2e31bf['account'][_0x51c4('0x83')];}return db['CmContact']['describe']();})[_0x51c4('0x22')](function(_0x416419){if(!_0x416419){throw new db[(_0x51c4('0x87'))][(_0x51c4('0x88'))]('no\x20available\x20attributes');}_0x195075=_['difference'](_['keys'](_0x416419),['createdAt',_0x51c4('0x89')]);_0x9542bc=_['difference'](_[_0x51c4('0x5d')](_0x416419),[_0x51c4('0x8a'),'updatedAt',_0x51c4('0x8b'),'ListId']);_0x2e31bf[_0x51c4('0x62')]={'mapKey':_0x51c4('0x8c')};if(_0x2e31bf[_0x51c4('0x8d')]['type']&&_0x2e31bf['account'][_0x51c4('0x44')]===_0x51c4('0x8e')){_0x2e31bf[_0x51c4('0x62')][_0x51c4('0x8f')]=_0x47f075[_0x51c4('0x62')][_0x51c4('0x90')]['replace'](_0x51c4('0x91'),'');_0x2e31bf['body'][_0x51c4('0x62')]=_0x47f075[_0x51c4('0x62')][_0x51c4('0x92')];_0x2e31bf[_0x51c4('0x62')]['messageId']=_0x47f075[_0x51c4('0x62')][_0x51c4('0x93')];}if(_0x2e31bf[_0x51c4('0x62')]['id']){delete _0x2e31bf[_0x51c4('0x62')]['id'];}if(_[_0x51c4('0x94')](_0x2e31bf[_0x51c4('0x62')][_0x51c4('0x8f')])){throw new db[(_0x51c4('0x87'))][(_0x51c4('0x88'))](_0x51c4('0x95'));}if(_[_0x51c4('0x94')](_0x2e31bf[_0x51c4('0x62')]['body'])||_0x2e31bf[_0x51c4('0x62')][_0x51c4('0x62')]===''){throw new db[(_0x51c4('0x87'))][(_0x51c4('0x88'))](_0x51c4('0x96'));}if(_[_0x51c4('0x94')](_0x2e31bf[_0x51c4('0x62')][_0x51c4('0x97')])){throw new db[(_0x51c4('0x87'))][(_0x51c4('0x88'))](_0x51c4('0x98')+_0x9542bc);}if(!_[_0x51c4('0x99')](_0x9542bc,_0x2e31bf['body']['mapKey'])){throw new db[(_0x51c4('0x87'))]['ValidationError'](_0x51c4('0x9a')+_0x9542bc);}_0x308afd[_0x2e31bf[_0x51c4('0x62')]['mapKey']]=_0x2e31bf[_0x51c4('0x62')][_0x51c4('0x8f')];return db[_0x51c4('0x9b')][_0x51c4('0x60')]({'where':{'id':_0x2e31bf[_0x51c4('0x8d')]['ListId']},'include':[{'model':db[_0x51c4('0x9c')],'as':_0x51c4('0x9d'),'where':_0x308afd,'limit':0x1,'order':[[_0x51c4('0x89'),'DESC']]}]});})[_0x51c4('0x22')](handleEntityNotFound(_0x488f73,null))[_0x51c4('0x22')](function(_0x2c42f0){if(_0x2c42f0){_0x2e31bf[_0x51c4('0x9e')]=_[_0x51c4('0x76')](_0x2c42f0,[_0x51c4('0x9d')]);if(_0x2c42f0[_0x51c4('0x9d')]['length']){return _0x2c42f0[_0x51c4('0x9d')][0x0];}var _0x273ade=_[_0x51c4('0x19')](_0x2e31bf[_0x51c4('0x62')],{'firstName':_0x2e31bf['body'][_0x51c4('0x8f')],'ListId':_0x2c42f0['id']});_0x273ade[_0x2e31bf[_0x51c4('0x62')][_0x51c4('0x97')]]=_0x2e31bf[_0x51c4('0x62')][_0x51c4('0x8f')];return db['CmContact'][_0x51c4('0x61')](_0x273ade,{'fields':_0x195075,'raw':!![]});}})[_0x51c4('0x22')](handleEntityNotFound(_0x488f73,null))['then'](function(_0x1137c0){if(_0x1137c0){_0x2e31bf[_0x51c4('0x9f')]=_0x1137c0;var _0x412b20={'ContactId':_0x1137c0['id'],'phone':_0x2e31bf[_0x51c4('0x62')][_0x51c4('0x8f')],'WhatsappAccountId':_0x47f075[_0x51c4('0x5b')]['id']};var _0x4fc12b={'ContactId':_0x1137c0['id'],'WhatsappAccountId':_0x47f075[_0x51c4('0x5b')]['id'],'closed':![]};return db['WhatsappInteraction'][_0x51c4('0x60')]({'where':_0x4fc12b})[_0x51c4('0x22')](function(_0x641d3a){if(_0x641d3a){return[_0x641d3a,![]];}return db['WhatsappInteraction'][_0x51c4('0x61')](_0x412b20)['then'](function(_0x3183de){return[_0x3183de,!![]];});});}})[_0x51c4('0x77')](function(_0x47caa9,_0x14d3b3){_0x2e31bf['interaction']=_0x47caa9['get']({'plain':!![]});_0x2e31bf[_0x51c4('0xa0')][_0x51c4('0xa1')]=![];if(_0x14d3b3){if(_0x2e31bf[_0x51c4('0x8d')][_0x51c4('0xa2')]){_0x2e31bf[_0x51c4('0x84')][_0x51c4('0xa3')]({'id':0x0,'priority':_0x2e31bf['applications'][_0x51c4('0x4b')]+0x1,'app':_0x51c4('0xa4'),'appdata':_0x51c4('0xa5'),'interval':'*,*,*,*'});}_0x2e31bf[_0x51c4('0xa0')][_0x51c4('0xa1')]=!![];}return db['WhatsappMessage'][_0x51c4('0x61')]({'phone':_0x2e31bf[_0x51c4('0x62')][_0x51c4('0x8f')],'messageId':_0x2e31bf['body'][_0x51c4('0xa6')],'body':_0x2e31bf[_0x51c4('0x62')][_0x51c4('0x62')],'WhatsappAccountId':_0x47f075['params']['id'],'WhatsappInteractionId':_0x47caa9['id'],'direction':'in','ContactId':_0x47caa9[_0x51c4('0xa7')],'AttachmentId':_0x2e31bf[_0x51c4('0x62')]['AttachmentId']});})['then'](function(_0x2f28d0){_0x2e31bf[_0x51c4('0x2b')]=_0x2f28d0;if(_0x2e31bf[_0x51c4('0xa0')][_0x51c4('0xa8')]){return db[_0x51c4('0x7d')][_0x51c4('0x60')]({'attributes':['id',_0x51c4('0x3e')],'where':{'id':_0x2e31bf[_0x51c4('0xa0')][_0x51c4('0xa8')]}})[_0x51c4('0x22')](function(_0xf6ee05){if(_0xf6ee05){_0x2e31bf[_0x51c4('0x84')][_0x51c4('0xa9')]({'id':0x0,'priority':0x0,'app':_0x51c4('0xaa'),'appdata':_0xf6ee05[_0x51c4('0x3e')]+','+(_0x2e31bf['account'][_0x51c4('0xab')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x51c4('0xac'),_0x51c4('0xad'),_0x2e31bf);});}return respondWithRpcPromise('Start',_0x51c4('0xad'),_0x2e31bf);})[_0x51c4('0x22')](function(_0x2a4d52){if(_0x2a4d52){var _0x2c038e=0xc8;var _0x41d4a4=_0x51c4('0xae');logger[_0x51c4('0x23')](_0x51c4('0x27'),_0x41d4a4,_0x2c038e,_0x51c4('0xaf'));logger[_0x51c4('0x26')]('WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x41d4a4,_0x2c038e,_0x51c4('0xaf'),JSON[_0x51c4('0x28')](_0x2a4d52));if(_0x2e31bf[_0x51c4('0x8d')][_0x51c4('0x44')]===_0x51c4('0x8e')){return _0x488f73['status'](_0x2c038e)[_0x51c4('0x34')](_0x51c4('0xb0'),_0x51c4('0xb1'))[_0x51c4('0x3f')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x488f73[_0x51c4('0x2e')](_0x2c038e)['json'](_0x2a4d52);}}})[_0x51c4('0x59')](handleError(_0x488f73,null));};exports[_0x51c4('0x3f')]=function(_0x39c582,_0x26a62d,_0x53bdd2){var _0x50767a,_0x1c0005,_0x529574;if(_[_0x51c4('0x94')](_0x39c582[_0x51c4('0x62')][_0x51c4('0x62')])||_0x39c582['body'][_0x51c4('0x62')]===''){throw new db[(_0x51c4('0x87'))]['ValidationError'](_0x51c4('0x96'));}if(_[_0x51c4('0x94')](_0x39c582[_0x51c4('0x62')]['to'])){throw new db['Sequelize'][(_0x51c4('0x88'))](_0x51c4('0xb2'));}_0x50767a=_0x39c582[_0x51c4('0x62')]['to'];return db[_0x51c4('0x42')][_0x51c4('0x60')]({'where':{'id':_0x39c582[_0x51c4('0x5b')]['id']},'include':[{'model':db[_0x51c4('0x9b')],'as':_0x51c4('0xb3'),'include':[{'model':db[_0x51c4('0x9c')],'as':_0x51c4('0x9d'),'where':{'mobile':_0x50767a},'limit':0x1,'order':[[_0x51c4('0x89'),_0x51c4('0xb4')]]}]}]})[_0x51c4('0x22')](handleEntityNotFound(_0x26a62d,null))[_0x51c4('0x22')](function(_0x34d760){if(_0x34d760&&_0x34d760[_0x51c4('0xb3')]){_0x1c0005=_0x34d760[_0x51c4('0x3a')]({'plain':!![]});if(_0x1c0005['List']&&_0x1c0005[_0x51c4('0xb3')][_0x51c4('0x9d')][_0x51c4('0x4b')]){return _0x1c0005[_0x51c4('0xb3')][_0x51c4('0x9d')][0x0];}return db[_0x51c4('0x9c')][_0x51c4('0x61')](_[_0x51c4('0x19')](_0x39c582[_0x51c4('0x62')],{'firstName':_0x50767a,'mobile':_0x50767a,'phone':_0x50767a,'ListId':_0x1c0005[_0x51c4('0xb5')]}));}})['then'](handleEntityNotFound(_0x26a62d,null))[_0x51c4('0x22')](function(_0x40ea0b){if(_0x40ea0b){_0x529574=_0x40ea0b;return db[_0x51c4('0xb6')][_0x51c4('0x60')]({'where':{'ContactId':_0x529574['id'],'closed':![],'WhatsappAccountId':_0x1c0005['id']}})[_0x51c4('0x22')](function(_0x3177c3){if(_0x3177c3){return[_0x3177c3,![]];}return db['WhatsappInteraction'][_0x51c4('0x61')]({'UserId':_0x39c582['user']['id'],'ContactId':_0x529574['id'],'WhatsappAccountId':_0x1c0005['id'],'phone':_0x50767a,'firstMsgDirection':_0x51c4('0xb7'),'Messages':[_['merge'](_0x39c582[_0x51c4('0x62')],{'read':![],'body':_0x39c582[_0x51c4('0x62')][_0x51c4('0x62')],'phone':_0x50767a,'WhatsappAccountId':_0x1c0005['id'],'UserId':_0x39c582[_0x51c4('0x63')]['id'],'ContactId':_0x529574['id']})]},{'include':[{'model':db[_0x51c4('0xb8')],'as':_0x51c4('0xb9')}]})[_0x51c4('0x22')](function(_0x32ddaa){return[_0x32ddaa,!![]];});});}})[_0x51c4('0x77')](function(_0x155ce3,_0x5e020e){if(_0x5e020e){return _0x155ce3;}return db[_0x51c4('0xb8')]['create'](_[_0x51c4('0x54')](_0x39c582[_0x51c4('0x62')],{'read':![],'body':_0x39c582[_0x51c4('0x62')][_0x51c4('0x62')],'phone':_0x50767a,'WhatsappAccountId':_0x1c0005['id'],'WhatsappInteractionId':_0x155ce3['id'],'UserId':_0x39c582[_0x51c4('0x63')]['id'],'ContactId':_0x529574['id']}))[_0x51c4('0x22')](function(_0x4f0d66){_0x155ce3['dataValues'][_0x51c4('0xb9')]=[];_0x155ce3[_0x51c4('0xba')][_0x51c4('0xb9')][_0x51c4('0xa3')](_0x4f0d66[_0x51c4('0xba')]);return _0x155ce3;});})[_0x51c4('0x22')](respondWithResult(_0x26a62d,null))[_0x51c4('0x59')](handleError(_0x26a62d,null));};
\ No newline at end of file
index f02089b..7274137 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d46=['setMaxListeners','save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','WhatsappAccount'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x9d46,0x151));var _0x69d4=function(_0x2242cb,_0x7474e){_0x2242cb=_0x2242cb-0x0;var _0x46c222=_0x9d46[_0x2242cb];return _0x46c222;};'use strict';var EventEmitter=require(_0x69d4('0x0'));var WhatsappAccount=require(_0x69d4('0x1'))['db'][_0x69d4('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x69d4('0x3')](0x0);var events={'afterCreate':_0x69d4('0x4'),'afterUpdate':_0x69d4('0x5'),'afterDestroy':_0x69d4('0x6')};function emitEvent(_0x4e7bb6){return function(_0x2e52ac,_0x72775e,_0x85352){WhatsappAccountEvents['emit'](_0x4e7bb6+':'+_0x2e52ac['id'],_0x2e52ac);WhatsappAccountEvents[_0x69d4('0x7')](_0x4e7bb6,_0x2e52ac);_0x85352(null);};}for(var e in events){if(events[_0x69d4('0x8')](e)){var event=events[e];WhatsappAccount['hook'](e,emitEvent(event));}}module[_0x69d4('0x9')]=WhatsappAccountEvents;
\ No newline at end of file
+var _0xe185=['hasOwnProperty','hook','exports','../../mysqldb','WhatsappAccount','update','remove','emit'];(function(_0x47b947,_0x316fd0){var _0x3d0aa1=function(_0x25e9e8){while(--_0x25e9e8){_0x47b947['push'](_0x47b947['shift']());}};_0x3d0aa1(++_0x316fd0);}(_0xe185,0xa3));var _0x5e18=function(_0x48e765,_0x183055){_0x48e765=_0x48e765-0x0;var _0x15ec0f=_0xe185[_0x48e765];return _0x15ec0f;};'use strict';var EventEmitter=require('events');var WhatsappAccount=require(_0x5e18('0x0'))['db'][_0x5e18('0x1')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x5e18('0x2'),'afterDestroy':_0x5e18('0x3')};function emitEvent(_0x282602){return function(_0x40a065,_0x18419e,_0x12b204){WhatsappAccountEvents['emit'](_0x282602+':'+_0x40a065['id'],_0x40a065);WhatsappAccountEvents[_0x5e18('0x4')](_0x282602,_0x40a065);_0x12b204(null);};}for(var e in events){if(events[_0x5e18('0x5')](e)){var event=events[e];WhatsappAccount[_0x5e18('0x6')](e,emitEvent(event));}}module[_0x5e18('0x7')]=WhatsappAccountEvents;
\ No newline at end of file
index 04c0f4f..448385b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x364a=['api','moment','bluebird','request-promise','path','../../config/environment','./whatsappAccount.attributes','exports','WhatsappAccount','whatsapp_accounts','lodash','util','../../config/logger'];(function(_0x44d33f,_0xc95f31){var _0x1d7df3=function(_0x545d7d){while(--_0x545d7d){_0x44d33f['push'](_0x44d33f['shift']());}};_0x1d7df3(++_0xc95f31);}(_0x364a,0x190));var _0xa364=function(_0x45d481,_0x15da95){_0x45d481=_0x45d481-0x0;var _0x24f4af=_0x364a[_0x45d481];return _0x24f4af;};'use strict';var _=require(_0xa364('0x0'));var util=require(_0xa364('0x1'));var logger=require(_0xa364('0x2'))(_0xa364('0x3'));var moment=require(_0xa364('0x4'));var BPromise=require(_0xa364('0x5'));var rp=require(_0xa364('0x6'));var fs=require('fs');var path=require(_0xa364('0x7'));var rimraf=require('rimraf');var config=require(_0xa364('0x8'));var attributes=require(_0xa364('0x9'));module[_0xa364('0xa')]=function(_0x1a5079,_0x5e0877){return _0x1a5079['define'](_0xa364('0xb'),attributes,{'tableName':_0xa364('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x40e5=['bluebird','request-promise','path','../../config/environment','./whatsappAccount.attributes','define','WhatsappAccount','whatsapp_accounts','lodash','../../config/logger'];(function(_0x2bb48e,_0x2d1e21){var _0x43366d=function(_0x2efa39){while(--_0x2efa39){_0x2bb48e['push'](_0x2bb48e['shift']());}};_0x43366d(++_0x2d1e21);}(_0x40e5,0x1ac));var _0x540e=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x40e5[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x540e('0x0'));var util=require('util');var logger=require(_0x540e('0x1'))('api');var moment=require('moment');var BPromise=require(_0x540e('0x2'));var rp=require(_0x540e('0x3'));var fs=require('fs');var path=require(_0x540e('0x4'));var rimraf=require('rimraf');var config=require(_0x540e('0x5'));var attributes=require(_0x540e('0x6'));module['exports']=function(_0x24361d,_0x4fe09e){return _0x24361d[_0x540e('0x7')](_0x540e('0x8'),attributes,{'tableName':_0x540e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0aae931..2a10a4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x537a=['WhatsappAccount','find','options','raw','where','include','map','model','attributes','ShowWhatsappAccount','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis','./whatsappAccount.socket','register','request','then','info','WhatsappAccount,\x20%s,\x20%s','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x537a,0x1ac));var _0xa537=function(_0x216e8f,_0xd8496a){_0x216e8f=_0x216e8f-0x0;var _0x1fe37e=_0x537a[_0x216e8f];return _0x1fe37e;};'use strict';var _=require('lodash');var util=require(_0xa537('0x0'));var moment=require(_0xa537('0x1'));var BPromise=require(_0xa537('0x2'));var rs=require(_0xa537('0x3'));var fs=require('fs');var Redis=require(_0xa537('0x4'));var db=require(_0xa537('0x5'))['db'];var utils=require(_0xa537('0x6'));var logger=require(_0xa537('0x7'))(_0xa537('0x8'));var config=require(_0xa537('0x9'));var jayson=require(_0xa537('0xa'));var client=jayson['client'][_0xa537('0xb')]({'port':0x232a});config['redis']=_[_0xa537('0xc')](config[_0xa537('0xd')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa537('0xd')]));require(_0xa537('0xe'))[_0xa537('0xf')](socket);function respondWithRpcPromise(_0xc0535f,_0x1379c1,_0x2d0bb8){return new BPromise(function(_0x54f7ad,_0x3d7867){return client[_0xa537('0x10')](_0xc0535f,_0x2d0bb8)[_0xa537('0x11')](function(_0x16c8fe){logger[_0xa537('0x12')](_0xa537('0x13'),_0x1379c1,'request\x20sent');logger[_0xa537('0x14')](_0xa537('0x15'),_0x1379c1,_0xa537('0x16'),JSON[_0xa537('0x17')](_0x16c8fe));if(_0x16c8fe['error']){if(_0x16c8fe[_0xa537('0x18')][_0xa537('0x19')]===0x1f4){logger[_0xa537('0x18')]('WhatsappAccount,\x20%s,\x20%s',_0x1379c1,_0x16c8fe[_0xa537('0x18')][_0xa537('0x1a')]);return _0x3d7867(_0x16c8fe[_0xa537('0x18')][_0xa537('0x1a')]);}logger[_0xa537('0x18')](_0xa537('0x13'),_0x1379c1,_0x16c8fe[_0xa537('0x18')][_0xa537('0x1a')]);return _0x54f7ad(_0x16c8fe[_0xa537('0x18')][_0xa537('0x1a')]);}else{logger[_0xa537('0x12')](_0xa537('0x13'),_0x1379c1,_0xa537('0x16'));_0x54f7ad(_0x16c8fe['result'][_0xa537('0x1a')]);}})[_0xa537('0x1b')](function(_0x11523b){logger[_0xa537('0x18')](_0xa537('0x13'),_0x1379c1,_0x11523b);_0x3d7867(_0x11523b);});});}exports['ShowWhatsappAccount']=function(_0x52db2d){var _0x1721fc=this;return new Promise(function(_0x16313b,_0x19ca06){return db[_0xa537('0x1c')][_0xa537('0x1d')]({'raw':_0x52db2d['options']?_0x52db2d[_0xa537('0x1e')][_0xa537('0x1f')]===undefined?!![]:![]:!![],'where':_0x52db2d['options']?_0x52db2d[_0xa537('0x1e')][_0xa537('0x20')]||null:null,'attributes':_0x52db2d['options']?_0x52db2d[_0xa537('0x1e')]['attributes']||null:null,'include':_0x52db2d[_0xa537('0x1e')]?_0x52db2d['options'][_0xa537('0x21')]?_[_0xa537('0x22')](_0x52db2d['options']['include'],function(_0x47adfd){return{'model':db[_0x47adfd[_0xa537('0x23')]],'as':_0x47adfd['as'],'attributes':_0x47adfd['attributes'],'include':_0x47adfd[_0xa537('0x21')]?_['map'](_0x47adfd[_0xa537('0x21')],function(_0x3d162b){return{'model':db[_0x3d162b[_0xa537('0x23')]],'as':_0x3d162b['as'],'attributes':_0x3d162b[_0xa537('0x24')],'include':_0x3d162b[_0xa537('0x21')]?_[_0xa537('0x22')](_0x3d162b['include'],function(_0x374fae){return{'model':db[_0x374fae[_0xa537('0x23')]],'as':_0x374fae['as'],'attributes':_0x374fae['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3003fd){logger['info'](_0xa537('0x25'),_0x52db2d);logger[_0xa537('0x14')](_0xa537('0x25'),_0x52db2d,JSON[_0xa537('0x17')](_0x3003fd));_0x16313b(_0x3003fd);})[_0xa537('0x1b')](function(_0x124095){logger[_0xa537('0x18')]('ShowWhatsappAccount',_0x124095['message'],_0x52db2d);_0x19ca06(_0x1721fc[_0xa537('0x18')](0x1f4,_0x124095[_0xa537('0x1a')]));});});};
\ No newline at end of file
+var _0x7f0e=['then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowWhatsappAccount','WhatsappAccount','options','attributes','include','map','model','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./whatsappAccount.socket','register','request'];(function(_0x7a7a90,_0x5b9f88){var _0x4acea0=function(_0x51dd5c){while(--_0x51dd5c){_0x7a7a90['push'](_0x7a7a90['shift']());}};_0x4acea0(++_0x5b9f88);}(_0x7f0e,0xd9));var _0xe7f0=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x7f0e[_0x6c993a];return _0x27f547;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xe7f0('0x0'));var rs=require(_0xe7f0('0x1'));var fs=require('fs');var Redis=require(_0xe7f0('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xe7f0('0x3'));var config=require(_0xe7f0('0x4'));var jayson=require(_0xe7f0('0x5'));var client=jayson[_0xe7f0('0x6')][_0xe7f0('0x7')]({'port':0x232a});config['redis']=_['defaults'](config[_0xe7f0('0x8')],{'host':_0xe7f0('0x9'),'port':0x18eb});var socket=require(_0xe7f0('0xa'))(new Redis(config['redis']));require(_0xe7f0('0xb'))[_0xe7f0('0xc')](socket);function respondWithRpcPromise(_0x7414ac,_0x502454,_0x18622e){return new BPromise(function(_0xffb82f,_0x16fbe7){return client[_0xe7f0('0xd')](_0x7414ac,_0x18622e)[_0xe7f0('0xe')](function(_0x6fe593){logger[_0xe7f0('0xf')](_0xe7f0('0x10'),_0x502454,_0xe7f0('0x11'));logger[_0xe7f0('0x12')](_0xe7f0('0x13'),_0x502454,_0xe7f0('0x11'),JSON[_0xe7f0('0x14')](_0x6fe593));if(_0x6fe593[_0xe7f0('0x15')]){if(_0x6fe593[_0xe7f0('0x15')][_0xe7f0('0x16')]===0x1f4){logger[_0xe7f0('0x15')](_0xe7f0('0x10'),_0x502454,_0x6fe593[_0xe7f0('0x15')]['message']);return _0x16fbe7(_0x6fe593[_0xe7f0('0x15')]['message']);}logger[_0xe7f0('0x15')]('WhatsappAccount,\x20%s,\x20%s',_0x502454,_0x6fe593[_0xe7f0('0x15')][_0xe7f0('0x17')]);return _0xffb82f(_0x6fe593[_0xe7f0('0x15')][_0xe7f0('0x17')]);}else{logger[_0xe7f0('0xf')](_0xe7f0('0x10'),_0x502454,_0xe7f0('0x11'));_0xffb82f(_0x6fe593[_0xe7f0('0x18')][_0xe7f0('0x17')]);}})[_0xe7f0('0x19')](function(_0x3dbbd6){logger[_0xe7f0('0x15')](_0xe7f0('0x10'),_0x502454,_0x3dbbd6);_0x16fbe7(_0x3dbbd6);});});}exports[_0xe7f0('0x1a')]=function(_0x31af6d){var _0x566697=this;return new Promise(function(_0x5b6ef4,_0x2f84c4){return db[_0xe7f0('0x1b')]['find']({'raw':_0x31af6d[_0xe7f0('0x1c')]?_0x31af6d['options']['raw']===undefined?!![]:![]:!![],'where':_0x31af6d[_0xe7f0('0x1c')]?_0x31af6d[_0xe7f0('0x1c')]['where']||null:null,'attributes':_0x31af6d['options']?_0x31af6d[_0xe7f0('0x1c')][_0xe7f0('0x1d')]||null:null,'include':_0x31af6d['options']?_0x31af6d['options'][_0xe7f0('0x1e')]?_[_0xe7f0('0x1f')](_0x31af6d[_0xe7f0('0x1c')][_0xe7f0('0x1e')],function(_0x4da125){return{'model':db[_0x4da125[_0xe7f0('0x20')]],'as':_0x4da125['as'],'attributes':_0x4da125[_0xe7f0('0x1d')],'include':_0x4da125[_0xe7f0('0x1e')]?_[_0xe7f0('0x1f')](_0x4da125['include'],function(_0x573c86){return{'model':db[_0x573c86[_0xe7f0('0x20')]],'as':_0x573c86['as'],'attributes':_0x573c86[_0xe7f0('0x1d')],'include':_0x573c86['include']?_['map'](_0x573c86[_0xe7f0('0x1e')],function(_0x38ee00){return{'model':db[_0x38ee00['model']],'as':_0x38ee00['as'],'attributes':_0x38ee00[_0xe7f0('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xe7f0('0xe')](function(_0xdf9fe2){logger['info'](_0xe7f0('0x1a'),_0x31af6d);logger[_0xe7f0('0x12')](_0xe7f0('0x1a'),_0x31af6d,JSON['stringify'](_0xdf9fe2));_0x5b6ef4(_0xdf9fe2);})[_0xe7f0('0x19')](function(_0x4dbb92){logger[_0xe7f0('0x15')](_0xe7f0('0x1a'),_0x4dbb92[_0xe7f0('0x17')],_0x31af6d);_0x2f84c4(_0x566697[_0xe7f0('0x15')](0x1f4,_0x4dbb92[_0xe7f0('0x17')]));});});};
\ No newline at end of file
index f2925c3..42e2f12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fd7=['length','whatsappAccount:','./whatsappAccount.events','save','remove','update','removeListener'];(function(_0x3f39ab,_0x16c981){var _0x170952=function(_0x45e049){while(--_0x45e049){_0x3f39ab['push'](_0x3f39ab['shift']());}};_0x170952(++_0x16c981);}(_0x8fd7,0x1f3));var _0x78fd=function(_0x13e492,_0x23f75a){_0x13e492=_0x13e492-0x0;var _0x298612=_0x8fd7[_0x13e492];return _0x298612;};'use strict';var WhatsappAccountEvents=require(_0x78fd('0x0'));var events=[_0x78fd('0x1'),_0x78fd('0x2'),_0x78fd('0x3')];function createListener(_0x1d8e77,_0x17d02a){return function(_0x4163df){_0x17d02a['emit'](_0x1d8e77,_0x4163df);};}function removeListener(_0x758239,_0x31ac2d){return function(){WhatsappAccountEvents[_0x78fd('0x4')](_0x758239,_0x31ac2d);};}exports['register']=function(_0x1c9974){for(var _0x53f9c0=0x0,_0x3b1551=events[_0x78fd('0x5')];_0x53f9c0<_0x3b1551;_0x53f9c0++){var _0x65a6d6=events[_0x53f9c0];var _0x4ed1d3=createListener(_0x78fd('0x6')+_0x65a6d6,_0x1c9974);WhatsappAccountEvents['on'](_0x65a6d6,_0x4ed1d3);}};
\ No newline at end of file
+var _0xffd6=['remove','update','emit','register','length','./whatsappAccount.events','save'];(function(_0x14f4af,_0x7a2e66){var _0x392414=function(_0x27764e){while(--_0x27764e){_0x14f4af['push'](_0x14f4af['shift']());}};_0x392414(++_0x7a2e66);}(_0xffd6,0x15c));var _0x6ffd=function(_0x45d3f0,_0x4be53f){_0x45d3f0=_0x45d3f0-0x0;var _0x314b79=_0xffd6[_0x45d3f0];return _0x314b79;};'use strict';var WhatsappAccountEvents=require(_0x6ffd('0x0'));var events=[_0x6ffd('0x1'),_0x6ffd('0x2'),_0x6ffd('0x3')];function createListener(_0x588d90,_0x52575a){return function(_0x1b76b0){_0x52575a[_0x6ffd('0x4')](_0x588d90,_0x1b76b0);};}function removeListener(_0x465ff1,_0x404650){return function(){WhatsappAccountEvents['removeListener'](_0x465ff1,_0x404650);};}exports[_0x6ffd('0x5')]=function(_0x3565f7){for(var _0x95337c=0x0,_0x365ebc=events[_0x6ffd('0x6')];_0x95337c<_0x365ebc;_0x95337c++){var _0xa526d2=events[_0x95337c];var _0x5f4663=createListener('whatsappAccount:'+_0xa526d2,_0x3565f7);WhatsappAccountEvents['on'](_0xa526d2,_0x5f4663);}};
\ No newline at end of file
index 6fe1ac8..85b4008 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd061=['Router','fs-extra','../../components/auth/service','../../config/environment','./whatsappApplication.controller','get','index','/:id','isAuthenticated','show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x97501e,_0x48c8fd){var _0x5919c8=function(_0x4033bd){while(--_0x4033bd){_0x97501e['push'](_0x97501e['shift']());}};_0x5919c8(++_0x48c8fd);}(_0xd061,0x150));var _0x1d06=function(_0x56aeed,_0x3f488a){_0x56aeed=_0x56aeed-0x0;var _0x56f282=_0xd061[_0x56aeed];return _0x56f282;};'use strict';var multer=require(_0x1d06('0x0'));var util=require(_0x1d06('0x1'));var path=require(_0x1d06('0x2'));var timeout=require(_0x1d06('0x3'));var express=require('express');var router=express[_0x1d06('0x4')]();var fs_extra=require(_0x1d06('0x5'));var auth=require(_0x1d06('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x1d06('0x7'));var controller=require(_0x1d06('0x8'));router[_0x1d06('0x9')]('/',auth['isAuthenticated'](),controller[_0x1d06('0xa')]);router[_0x1d06('0x9')](_0x1d06('0xb'),auth[_0x1d06('0xc')](),controller[_0x1d06('0xd')]);router[_0x1d06('0xe')]('/',auth[_0x1d06('0xc')](),controller[_0x1d06('0xf')]);router['put'](_0x1d06('0xb'),auth[_0x1d06('0xc')](),controller[_0x1d06('0x10')]);router[_0x1d06('0x11')](_0x1d06('0xb'),auth[_0x1d06('0xc')](),controller[_0x1d06('0x12')]);module[_0x1d06('0x13')]=router;
\ No newline at end of file
+var _0xfc2d=['multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','get','isAuthenticated','/:id','post','create','update','delete','destroy'];(function(_0x766909,_0x510154){var _0x16bc3f=function(_0x5259c5){while(--_0x5259c5){_0x766909['push'](_0x766909['shift']());}};_0x16bc3f(++_0x510154);}(_0xfc2d,0x90));var _0xdfc2=function(_0x4fbfd9,_0x3ab91a){_0x4fbfd9=_0x4fbfd9-0x0;var _0x31dc94=_0xfc2d[_0x4fbfd9];return _0x31dc94;};'use strict';var multer=require(_0xdfc2('0x0'));var util=require(_0xdfc2('0x1'));var path=require(_0xdfc2('0x2'));var timeout=require(_0xdfc2('0x3'));var express=require(_0xdfc2('0x4'));var router=express[_0xdfc2('0x5')]();var fs_extra=require(_0xdfc2('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xdfc2('0x7'));var controller=require('./whatsappApplication.controller');router[_0xdfc2('0x8')]('/',auth[_0xdfc2('0x9')](),controller['index']);router['get'](_0xdfc2('0xa'),auth[_0xdfc2('0x9')](),controller['show']);router[_0xdfc2('0xb')]('/',auth[_0xdfc2('0x9')](),controller[_0xdfc2('0xc')]);router['put']('/:id',auth[_0xdfc2('0x9')](),controller[_0xdfc2('0xd')]);router[_0xdfc2('0xe')](_0xdfc2('0xa'),auth[_0xdfc2('0x9')](),controller[_0xdfc2('0xf')]);module['exports']=router;
\ No newline at end of file
index 19a8b1b..4b264ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe264=['TEXT','*,*,*,*','sequelize','exports','INTEGER','STRING','noop'];(function(_0x59c18c,_0x425ffe){var _0x8834a1=function(_0x29df43){while(--_0x29df43){_0x59c18c['push'](_0x59c18c['shift']());}};_0x8834a1(++_0x425ffe);}(_0xe264,0x14b));var _0x4e26=function(_0x44ca6e,_0x5e2c91){_0x44ca6e=_0x44ca6e-0x0;var _0x2edab2=_0xe264[_0x44ca6e];return _0x2edab2;};'use strict';var Sequelize=require(_0x4e26('0x0'));module[_0x4e26('0x1')]={'priority':{'type':Sequelize[_0x4e26('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x4e26('0x3')],'allowNull':![],'defaultValue':_0x4e26('0x4')},'appdata':{'type':Sequelize[_0x4e26('0x5')]()},'description':{'type':Sequelize[_0x4e26('0x3')]},'interval':{'type':Sequelize[_0x4e26('0x3')],'defaultValue':_0x4e26('0x6')}};
\ No newline at end of file
+var _0x9054=['STRING','*,*,*,*','sequelize','exports','INTEGER','noop','TEXT'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x9054,0x1a6));var _0x4905=function(_0x41bbbc,_0x5c2750){_0x41bbbc=_0x41bbbc-0x0;var _0x5dd090=_0x9054[_0x41bbbc];return _0x5dd090;};'use strict';var Sequelize=require(_0x4905('0x0'));module[_0x4905('0x1')]={'priority':{'type':Sequelize[_0x4905('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x4905('0x3')},'appdata':{'type':Sequelize[_0x4905('0x4')]()},'description':{'type':Sequelize[_0x4905('0x5')]},'interval':{'type':Sequelize[_0x4905('0x5')],'defaultValue':_0x4905('0x6')}};
\ No newline at end of file
index c16d5fe..ce68802 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc36=['update','then','destroy','error','name','send','index','map','WhatsappApplication','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','offset','undefined','limit','count','status','set','Content-Range','json','reject'];(function(_0x5e3f64,_0x397f61){var _0xd66ea5=function(_0x18442e){while(--_0x18442e){_0x5e3f64['push'](_0x5e3f64['shift']());}};_0xd66ea5(++_0x397f61);}(_0xbc36,0x169));var _0x6bc3=function(_0x14b2cb,_0x302caf){_0x14b2cb=_0x14b2cb-0x0;var _0x4f9211=_0xbc36[_0x14b2cb];return _0x4f9211;};'use strict';var emlformat=require(_0x6bc3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6bc3('0x1'));var jsonpatch=require(_0x6bc3('0x2'));var rp=require(_0x6bc3('0x3'));var moment=require(_0x6bc3('0x4'));var BPromise=require(_0x6bc3('0x5'));var Mustache=require(_0x6bc3('0x6'));var util=require(_0x6bc3('0x7'));var path=require(_0x6bc3('0x8'));var sox=require(_0x6bc3('0x9'));var csv=require('to-csv');var ejs=require(_0x6bc3('0xa'));var fs=require('fs');var fs_extra=require(_0x6bc3('0xb'));var _=require('lodash');var squel=require(_0x6bc3('0xc'));var crypto=require(_0x6bc3('0xd'));var jsforce=require(_0x6bc3('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x6bc3('0xf'));var querystring=require(_0x6bc3('0x10'));var Papa=require(_0x6bc3('0x11'));var Redis=require(_0x6bc3('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x6bc3('0x13'));var as=require(_0x6bc3('0x14'));var hardwareService=require(_0x6bc3('0x15'));var logger=require(_0x6bc3('0x16'))(_0x6bc3('0x17'));var utils=require(_0x6bc3('0x18'));var config=require(_0x6bc3('0x19'));var licenseUtil=require(_0x6bc3('0x1a'));var db=require(_0x6bc3('0x1b'))['db'];function respondWithStatusCode(_0x5a5173,_0xdbec2a){_0xdbec2a=_0xdbec2a||0xcc;return function(_0x5803c0){if(_0x5803c0){return _0x5a5173[_0x6bc3('0x1c')](_0xdbec2a);}return _0x5a5173['status'](_0xdbec2a)[_0x6bc3('0x1d')]();};}function respondWithResult(_0x422098,_0x5bca95){_0x5bca95=_0x5bca95||0xc8;return function(_0x2869d2){if(_0x2869d2){return _0x422098['status'](_0x5bca95)['json'](_0x2869d2);}};}function respondWithFilteredResult(_0x174bc8,_0x1f657b){return function(_0x3513d4){if(_0x3513d4){var _0xf57a10=typeof _0x1f657b[_0x6bc3('0x1e')]===_0x6bc3('0x1f')&&typeof _0x1f657b[_0x6bc3('0x20')]==='undefined';var _0x72e92c=_0x3513d4[_0x6bc3('0x21')];var _0x4c1894=_0xf57a10?0x0:_0x1f657b[_0x6bc3('0x1e')];var _0x1d27db=_0xf57a10?_0x3513d4[_0x6bc3('0x21')]:_0x1f657b[_0x6bc3('0x1e')]+_0x1f657b[_0x6bc3('0x20')];var _0x1a2a4a;if(_0x1d27db>=_0x72e92c){_0x1d27db=_0x72e92c;_0x1a2a4a=0xc8;}else{_0x1a2a4a=0xce;}_0x174bc8[_0x6bc3('0x22')](_0x1a2a4a);return _0x174bc8[_0x6bc3('0x23')](_0x6bc3('0x24'),_0x4c1894+'-'+_0x1d27db+'/'+_0x72e92c)[_0x6bc3('0x25')](_0x3513d4);}return null;};}function patchUpdates(_0x36ab2e){return function(_0x3f8b2d){try{jsonpatch['apply'](_0x3f8b2d,_0x36ab2e,!![]);}catch(_0x22652a){return BPromise[_0x6bc3('0x26')](_0x22652a);}return _0x3f8b2d['save']();};}function saveUpdates(_0x6ea9c7,_0x588b49){return function(_0x4210f3){if(_0x4210f3){return _0x4210f3[_0x6bc3('0x27')](_0x6ea9c7)[_0x6bc3('0x28')](function(_0x45995c){return _0x45995c;});}return null;};}function removeEntity(_0x3c748f,_0x453ada){return function(_0xc2df4){if(_0xc2df4){return _0xc2df4[_0x6bc3('0x29')]()[_0x6bc3('0x28')](function(){_0x3c748f[_0x6bc3('0x22')](0xcc)[_0x6bc3('0x1d')]();});}};}function handleEntityNotFound(_0x1e9a9c,_0x2f6a65){return function(_0x4bade2){if(!_0x4bade2){_0x1e9a9c[_0x6bc3('0x1c')](0x194);}return _0x4bade2;};}function handleError(_0x1ebd0b,_0x42f636){_0x42f636=_0x42f636||0x1f4;return function(_0x1ab236){logger[_0x6bc3('0x2a')](_0x1ab236['stack']);if(_0x1ab236['name']){delete _0x1ab236[_0x6bc3('0x2b')];}_0x1ebd0b['status'](_0x42f636)[_0x6bc3('0x2c')](_0x1ab236);};}exports[_0x6bc3('0x2d')]=function(_0x3dca98,_0x429d17){var _0x55c6aa={},_0x66fb54={},_0x62ba7b={'count':0x0,'rows':[]};var _0x14e998=_[_0x6bc3('0x2e')](db[_0x6bc3('0x2f')]['rawAttributes'],function(_0x416a7a){return{'name':_0x416a7a[_0x6bc3('0x30')],'type':_0x416a7a[_0x6bc3('0x31')][_0x6bc3('0x32')]};});_0x66fb54[_0x6bc3('0x33')]=_['map'](_0x14e998,_0x6bc3('0x2b'));_0x66fb54[_0x6bc3('0x34')]=_[_0x6bc3('0x35')](_0x3dca98[_0x6bc3('0x34')]);_0x66fb54[_0x6bc3('0x36')]=_[_0x6bc3('0x37')](_0x66fb54[_0x6bc3('0x33')],_0x66fb54[_0x6bc3('0x34')]);_0x55c6aa['attributes']=_[_0x6bc3('0x37')](_0x66fb54['model'],qs['fields'](_0x3dca98[_0x6bc3('0x34')][_0x6bc3('0x38')]));_0x55c6aa['attributes']=_0x55c6aa[_0x6bc3('0x39')][_0x6bc3('0x3a')]?_0x55c6aa[_0x6bc3('0x39')]:_0x66fb54[_0x6bc3('0x33')];if(!_0x3dca98[_0x6bc3('0x34')][_0x6bc3('0x3b')](_0x6bc3('0x3c'))){_0x55c6aa[_0x6bc3('0x20')]=qs[_0x6bc3('0x20')](_0x3dca98[_0x6bc3('0x34')][_0x6bc3('0x20')]);_0x55c6aa[_0x6bc3('0x1e')]=qs[_0x6bc3('0x1e')](_0x3dca98[_0x6bc3('0x34')]['offset']);}_0x55c6aa[_0x6bc3('0x3d')]=qs[_0x6bc3('0x3e')](_0x3dca98['query'][_0x6bc3('0x3e')]);_0x55c6aa['where']=qs[_0x6bc3('0x36')](_[_0x6bc3('0x3f')](_0x3dca98[_0x6bc3('0x34')],_0x66fb54[_0x6bc3('0x36')]),_0x14e998);if(_0x3dca98[_0x6bc3('0x34')][_0x6bc3('0x40')]){_0x55c6aa[_0x6bc3('0x41')]=_[_0x6bc3('0x42')](_0x55c6aa[_0x6bc3('0x41')],{'$or':_[_0x6bc3('0x2e')](_0x14e998,function(_0x3768d2){if(_0x3768d2['type']!==_0x6bc3('0x43')){var _0x13fa06={};_0x13fa06[_0x3768d2['name']]={'$like':'%'+_0x3dca98['query'][_0x6bc3('0x40')]+'%'};return _0x13fa06;}})});}_0x55c6aa=_[_0x6bc3('0x42')]({},_0x55c6aa,_0x3dca98[_0x6bc3('0x44')]);var _0x4b4fd9={'where':_0x55c6aa[_0x6bc3('0x41')]};return db[_0x6bc3('0x2f')]['count'](_0x4b4fd9)[_0x6bc3('0x28')](function(_0x5b2e5b){_0x62ba7b['count']=_0x5b2e5b;if(_0x3dca98[_0x6bc3('0x34')][_0x6bc3('0x45')]){_0x55c6aa[_0x6bc3('0x46')]=[{'all':!![]}];}return db['WhatsappApplication'][_0x6bc3('0x47')](_0x55c6aa);})['then'](function(_0x3766af){_0x62ba7b[_0x6bc3('0x48')]=_0x3766af;return _0x62ba7b;})[_0x6bc3('0x28')](respondWithFilteredResult(_0x429d17,_0x55c6aa))[_0x6bc3('0x49')](handleError(_0x429d17,null));};exports[_0x6bc3('0x4a')]=function(_0x27c083,_0x480a92){var _0x21c972={'raw':!![],'where':{'id':_0x27c083[_0x6bc3('0x4b')]['id']}},_0x4aa3f5={};_0x4aa3f5[_0x6bc3('0x33')]=_['keys'](db[_0x6bc3('0x2f')][_0x6bc3('0x4c')]);_0x4aa3f5['query']=_[_0x6bc3('0x35')](_0x27c083[_0x6bc3('0x34')]);_0x4aa3f5[_0x6bc3('0x36')]=_[_0x6bc3('0x37')](_0x4aa3f5[_0x6bc3('0x33')],_0x4aa3f5[_0x6bc3('0x34')]);_0x21c972['attributes']=_['intersection'](_0x4aa3f5['model'],qs[_0x6bc3('0x38')](_0x27c083[_0x6bc3('0x34')][_0x6bc3('0x38')]));_0x21c972[_0x6bc3('0x39')]=_0x21c972[_0x6bc3('0x39')]['length']?_0x21c972[_0x6bc3('0x39')]:_0x4aa3f5[_0x6bc3('0x33')];if(_0x27c083[_0x6bc3('0x34')][_0x6bc3('0x45')]){_0x21c972['include']=[{'all':!![]}];}_0x21c972=_[_0x6bc3('0x42')]({},_0x21c972,_0x27c083[_0x6bc3('0x44')]);return db['WhatsappApplication'][_0x6bc3('0x4d')](_0x21c972)[_0x6bc3('0x28')](handleEntityNotFound(_0x480a92,null))['then'](respondWithResult(_0x480a92,null))[_0x6bc3('0x49')](handleError(_0x480a92,null));};exports[_0x6bc3('0x4e')]=function(_0x4dbf22,_0x126cfe){return db[_0x6bc3('0x2f')][_0x6bc3('0x4e')](_0x4dbf22[_0x6bc3('0x4f')],{})['then'](respondWithResult(_0x126cfe,0xc9))[_0x6bc3('0x49')](handleError(_0x126cfe,null));};exports[_0x6bc3('0x27')]=function(_0x31383c,_0x15c969){if(_0x31383c[_0x6bc3('0x4f')]['id']){delete _0x31383c['body']['id'];}return db[_0x6bc3('0x2f')][_0x6bc3('0x4d')]({'where':{'id':_0x31383c['params']['id']}})[_0x6bc3('0x28')](handleEntityNotFound(_0x15c969,null))[_0x6bc3('0x28')](saveUpdates(_0x31383c['body'],null))['then'](respondWithResult(_0x15c969,null))[_0x6bc3('0x49')](handleError(_0x15c969,null));};exports['destroy']=function(_0x35c44d,_0x4f4461){return db['WhatsappApplication'][_0x6bc3('0x4d')]({'where':{'id':_0x35c44d[_0x6bc3('0x4b')]['id']}})[_0x6bc3('0x28')](handleEntityNotFound(_0x4f4461,null))[_0x6bc3('0x28')](removeEntity(_0x4f4461,null))[_0x6bc3('0x49')](handleError(_0x4f4461,null));};
\ No newline at end of file
+var _0x5f2f=['end','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','stack','name','send','index','WhatsappApplication','rawAttributes','fieldName','type','map','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','merge','where','options','includeAll','include','findAll','rows','catch','keys','find','body','params','destroy','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'];(function(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0x5f2f,0x73));var _0xf5f2=function(_0x5ae237,_0x8fdd75){_0x5ae237=_0x5ae237-0x0;var _0x5bffd6=_0x5f2f[_0x5ae237];return _0x5bffd6;};'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')]=[{'all':!![]}];}return db[_0xf5f2('0x29')][_0xf5f2('0x3e')](_0x22c826);})[_0xf5f2('0x24')](function(_0x574f24){_0x11c771[_0xf5f2('0x3f')]=_0x574f24;return _0x11c771;})[_0xf5f2('0x24')](respondWithFilteredResult(_0x53cb96,_0x22c826))[_0xf5f2('0x40')](handleError(_0x53cb96,null));};exports['show']=function(_0x509dbc,_0x59eb00){var _0x76d21b={'raw':!![],'where':{'id':_0x509dbc['params']['id']}},_0x2ad13c={};_0x2ad13c[_0xf5f2('0x31')]=_[_0xf5f2('0x41')](db[_0xf5f2('0x29')][_0xf5f2('0x2a')]);_0x2ad13c[_0xf5f2('0x2e')]=_[_0xf5f2('0x41')](_0x509dbc[_0xf5f2('0x2e')]);_0x2ad13c[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x2ad13c[_0xf5f2('0x31')],_0x2ad13c[_0xf5f2('0x2e')]);_0x76d21b[_0xf5f2('0x32')]=_[_0xf5f2('0x30')](_0x2ad13c[_0xf5f2('0x31')],qs['fields'](_0x509dbc[_0xf5f2('0x2e')]['fields']));_0x76d21b[_0xf5f2('0x32')]=_0x76d21b[_0xf5f2('0x32')][_0xf5f2('0x34')]?_0x76d21b[_0xf5f2('0x32')]:_0x2ad13c[_0xf5f2('0x31')];if(_0x509dbc[_0xf5f2('0x2e')]['includeAll']){_0x76d21b[_0xf5f2('0x3d')]=[{'all':!![]}];}_0x76d21b=_[_0xf5f2('0x39')]({},_0x76d21b,_0x509dbc[_0xf5f2('0x3b')]);return db[_0xf5f2('0x29')][_0xf5f2('0x42')](_0x76d21b)[_0xf5f2('0x24')](handleEntityNotFound(_0x59eb00,null))[_0xf5f2('0x24')](respondWithResult(_0x59eb00,null))[_0xf5f2('0x40')](handleError(_0x59eb00,null));};exports['create']=function(_0x35dece,_0x33ec29){return db[_0xf5f2('0x29')]['create'](_0x35dece[_0xf5f2('0x43')],{})[_0xf5f2('0x24')](respondWithResult(_0x33ec29,0xc9))[_0xf5f2('0x40')](handleError(_0x33ec29,null));};exports['update']=function(_0x57a7cb,_0x7bb942){if(_0x57a7cb[_0xf5f2('0x43')]['id']){delete _0x57a7cb['body']['id'];}return db[_0xf5f2('0x29')]['find']({'where':{'id':_0x57a7cb[_0xf5f2('0x44')]['id']}})['then'](handleEntityNotFound(_0x7bb942,null))[_0xf5f2('0x24')](saveUpdates(_0x57a7cb['body'],null))[_0xf5f2('0x24')](respondWithResult(_0x7bb942,null))[_0xf5f2('0x40')](handleError(_0x7bb942,null));};exports[_0xf5f2('0x45')]=function(_0x11a083,_0x4fa738){return db[_0xf5f2('0x29')][_0xf5f2('0x42')]({'where':{'id':_0x11a083['params']['id']}})['then'](handleEntityNotFound(_0x4fa738,null))[_0xf5f2('0x24')](removeEntity(_0x4fa738,null))[_0xf5f2('0x40')](handleError(_0x4fa738,null));};
\ No newline at end of file
index 061a63d..3c8283c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5089=['util','api','moment','bluebird','request-promise','path','../../config/environment','exports','WhatsappApplication','whatsapp_applications','utf8mb4_unicode_ci','lodash'];(function(_0x5751a3,_0x5e2249){var _0x4aa648=function(_0x4996ec){while(--_0x4996ec){_0x5751a3['push'](_0x5751a3['shift']());}};_0x4aa648(++_0x5e2249);}(_0x5089,0x1bb));var _0x9508=function(_0x2892da,_0x191a40){_0x2892da=_0x2892da-0x0;var _0x28cff2=_0x5089[_0x2892da];return _0x28cff2;};'use strict';var _=require(_0x9508('0x0'));var util=require(_0x9508('0x1'));var logger=require('../../config/logger')(_0x9508('0x2'));var moment=require(_0x9508('0x3'));var BPromise=require(_0x9508('0x4'));var rp=require(_0x9508('0x5'));var fs=require('fs');var path=require(_0x9508('0x6'));var rimraf=require('rimraf');var config=require(_0x9508('0x7'));var attributes=require('./whatsappApplication.attributes');module[_0x9508('0x8')]=function(_0x4538dd,_0x257318){return _0x4538dd['define'](_0x9508('0x9'),attributes,{'tableName':_0x9508('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x9508('0xb')});};
\ No newline at end of file
+var _0x4fd7=['util','../../config/logger','api','request-promise','path','../../config/environment','exports','define','whatsapp_applications','utf8mb4','lodash'];(function(_0x3a5ceb,_0x5164bc){var _0x38752b=function(_0x35d4eb){while(--_0x35d4eb){_0x3a5ceb['push'](_0x3a5ceb['shift']());}};_0x38752b(++_0x5164bc);}(_0x4fd7,0xe6));var _0x74fd=function(_0x1f8df6,_0x4d134e){_0x1f8df6=_0x1f8df6-0x0;var _0x26daba=_0x4fd7[_0x1f8df6];return _0x26daba;};'use strict';var _=require(_0x74fd('0x0'));var util=require(_0x74fd('0x1'));var logger=require(_0x74fd('0x2'))(_0x74fd('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x74fd('0x4'));var fs=require('fs');var path=require(_0x74fd('0x5'));var rimraf=require('rimraf');var config=require(_0x74fd('0x6'));var attributes=require('./whatsappApplication.attributes');module[_0x74fd('0x7')]=function(_0x480ec2,_0x1959e1){return _0x480ec2[_0x74fd('0x8')]('WhatsappApplication',attributes,{'tableName':_0x74fd('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x74fd('0xa'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 07dd5de..9c4e673 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a9a=['WhatsappApplication,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then'];(function(_0x5941f9,_0x1261f1){var _0xbdc9f9=function(_0xcc6abe){while(--_0xcc6abe){_0x5941f9['push'](_0x5941f9['shift']());}};_0xbdc9f9(++_0x1261f1);}(_0x0a9a,0x183));var _0xa0a9=function(_0x5e2998,_0x179535){_0x5e2998=_0x5e2998-0x0;var _0x591d20=_0x0a9a[_0x5e2998];return _0x591d20;};'use strict';var _=require('lodash');var util=require(_0xa0a9('0x0'));var moment=require('moment');var BPromise=require(_0xa0a9('0x1'));var rs=require(_0xa0a9('0x2'));var fs=require('fs');var Redis=require(_0xa0a9('0x3'));var db=require(_0xa0a9('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xa0a9('0x5'))(_0xa0a9('0x6'));var config=require('../../config/environment');var jayson=require(_0xa0a9('0x7'));var client=jayson[_0xa0a9('0x8')][_0xa0a9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x31d689,_0x499a29,_0x2b2eb4){return new BPromise(function(_0x520f42,_0x10aa8a){return client[_0xa0a9('0xa')](_0x31d689,_0x2b2eb4)[_0xa0a9('0xb')](function(_0x2d6ac0){logger['info'](_0xa0a9('0xc'),_0x499a29,_0xa0a9('0xd'));logger['debug']('WhatsappApplication,\x20%s,\x20%s,\x20%s',_0x499a29,_0xa0a9('0xd'),JSON[_0xa0a9('0xe')](_0x2d6ac0));if(_0x2d6ac0['error']){if(_0x2d6ac0[_0xa0a9('0xf')]['code']===0x1f4){logger[_0xa0a9('0xf')]('WhatsappApplication,\x20%s,\x20%s',_0x499a29,_0x2d6ac0[_0xa0a9('0xf')][_0xa0a9('0x10')]);return _0x10aa8a(_0x2d6ac0[_0xa0a9('0xf')][_0xa0a9('0x10')]);}logger[_0xa0a9('0xf')]('WhatsappApplication,\x20%s,\x20%s',_0x499a29,_0x2d6ac0[_0xa0a9('0xf')][_0xa0a9('0x10')]);return _0x520f42(_0x2d6ac0[_0xa0a9('0xf')][_0xa0a9('0x10')]);}else{logger[_0xa0a9('0x11')](_0xa0a9('0xc'),_0x499a29,'request\x20sent');_0x520f42(_0x2d6ac0[_0xa0a9('0x12')]['message']);}})['catch'](function(_0x347092){logger[_0xa0a9('0xf')](_0xa0a9('0xc'),_0x499a29,_0x347092);_0x10aa8a(_0x347092);});});}
\ No newline at end of file
+var _0x54ef=['result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message'];(function(_0x55aa67,_0x52d2a5){var _0x5ce55a=function(_0x491b80){while(--_0x491b80){_0x55aa67['push'](_0x55aa67['shift']());}};_0x5ce55a(++_0x52d2a5);}(_0x54ef,0x112));var _0xf54e=function(_0x4bd79d,_0x197d17){_0x4bd79d=_0x4bd79d-0x0;var _0x1a539e=_0x54ef[_0x4bd79d];return _0x1a539e;};'use strict';var _=require(_0xf54e('0x0'));var util=require(_0xf54e('0x1'));var moment=require(_0xf54e('0x2'));var BPromise=require('bluebird');var rs=require(_0xf54e('0x3'));var fs=require('fs');var Redis=require(_0xf54e('0x4'));var db=require(_0xf54e('0x5'))['db'];var utils=require(_0xf54e('0x6'));var logger=require(_0xf54e('0x7'))(_0xf54e('0x8'));var config=require(_0xf54e('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xf54e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x99cf9,_0x2464ae,_0x561870){return new BPromise(function(_0x27e69b,_0x57a1ce){return client[_0xf54e('0xb')](_0x99cf9,_0x561870)[_0xf54e('0xc')](function(_0x47c5e1){logger[_0xf54e('0xd')](_0xf54e('0xe'),_0x2464ae,_0xf54e('0xf'));logger[_0xf54e('0x10')]('WhatsappApplication,\x20%s,\x20%s,\x20%s',_0x2464ae,_0xf54e('0xf'),JSON[_0xf54e('0x11')](_0x47c5e1));if(_0x47c5e1[_0xf54e('0x12')]){if(_0x47c5e1[_0xf54e('0x12')]['code']===0x1f4){logger[_0xf54e('0x12')]('WhatsappApplication,\x20%s,\x20%s',_0x2464ae,_0x47c5e1['error'][_0xf54e('0x13')]);return _0x57a1ce(_0x47c5e1[_0xf54e('0x12')][_0xf54e('0x13')]);}logger[_0xf54e('0x12')]('WhatsappApplication,\x20%s,\x20%s',_0x2464ae,_0x47c5e1[_0xf54e('0x12')][_0xf54e('0x13')]);return _0x27e69b(_0x47c5e1[_0xf54e('0x12')][_0xf54e('0x13')]);}else{logger['info'](_0xf54e('0xe'),_0x2464ae,_0xf54e('0xf'));_0x27e69b(_0x47c5e1[_0xf54e('0x14')]['message']);}})['catch'](function(_0xd87020){logger[_0xf54e('0x12')](_0xf54e('0xe'),_0x2464ae,_0xd87020);_0x57a1ce(_0xd87020);});});}
\ No newline at end of file
index faac155..848dcb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c9a=['../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','getMessages','/:id/download','download','post','create','/:id/messages','addMessage','/:id/tags','tracked','whatsapp','whatsappinteraction:addtags','addTags','put','update','delete','whatsappinteraction:destroy','destroy','removeTags','multer','util','connect-timeout','express','Router','fs-extra'];(function(_0x40911a,_0x55ec99){var _0x27e8e3=function(_0x2ba910){while(--_0x2ba910){_0x40911a['push'](_0x40911a['shift']());}};_0x27e8e3(++_0x55ec99);}(_0x1c9a,0x1a7));var _0xa1c9=function(_0x562846,_0x494d6a){_0x562846=_0x562846-0x0;var _0xcd976=_0x1c9a[_0x562846];return _0xcd976;};'use strict';var multer=require(_0xa1c9('0x0'));var util=require(_0xa1c9('0x1'));var path=require('path');var timeout=require(_0xa1c9('0x2'));var express=require(_0xa1c9('0x3'));var router=express[_0xa1c9('0x4')]();var fs_extra=require(_0xa1c9('0x5'));var auth=require(_0xa1c9('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xa1c9('0x7'));var controller=require('./whatsappInteraction.controller');router[_0xa1c9('0x8')]('/',auth[_0xa1c9('0x9')](),controller[_0xa1c9('0xa')]);router[_0xa1c9('0x8')](_0xa1c9('0xb'),auth[_0xa1c9('0x9')](),controller[_0xa1c9('0xc')]);router[_0xa1c9('0x8')](_0xa1c9('0xd'),auth[_0xa1c9('0x9')](),controller[_0xa1c9('0xe')]);router[_0xa1c9('0x8')]('/:id/messages',auth['isAuthenticated'](),controller[_0xa1c9('0xf')]);router['get'](_0xa1c9('0x10'),auth[_0xa1c9('0x9')](),controller[_0xa1c9('0x11')]);router[_0xa1c9('0x12')]('/',auth[_0xa1c9('0x9')](),controller[_0xa1c9('0x13')]);router[_0xa1c9('0x12')](_0xa1c9('0x14'),auth[_0xa1c9('0x9')](),controller[_0xa1c9('0x15')]);router[_0xa1c9('0x12')](_0xa1c9('0x16'),auth[_0xa1c9('0x9')](),interaction[_0xa1c9('0x17')](_0xa1c9('0x18'),_0xa1c9('0x19')),controller[_0xa1c9('0x1a')]);router[_0xa1c9('0x1b')](_0xa1c9('0xd'),auth[_0xa1c9('0x9')](),interaction['tracked'](_0xa1c9('0x18'),'whatsappinteraction:update'),controller[_0xa1c9('0x1c')]);router[_0xa1c9('0x1d')](_0xa1c9('0xd'),auth[_0xa1c9('0x9')](),interaction[_0xa1c9('0x17')](_0xa1c9('0x18'),_0xa1c9('0x1e')),controller[_0xa1c9('0x1f')]);router[_0xa1c9('0x1d')](_0xa1c9('0x16'),auth[_0xa1c9('0x9')](),controller[_0xa1c9('0x20')]);module['exports']=router;
\ No newline at end of file
+var _0x0f4d=['isAuthenticated','/describe','describe','show','/:id/messages','getMessages','download','post','create','addMessage','whatsapp','addTags','tracked','whatsappinteraction:update','update','delete','/:id','destroy','/:id/tags','exports','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','get'];(function(_0x4392fd,_0x50daad){var _0x13c9c7=function(_0x2ca5e9){while(--_0x2ca5e9){_0x4392fd['push'](_0x4392fd['shift']());}};_0x13c9c7(++_0x50daad);}(_0x0f4d,0x12c));var _0xd0f4=function(_0x43d7bc,_0x20428e){_0x43d7bc=_0x43d7bc-0x0;var _0x40e4be=_0x0f4d[_0x43d7bc];return _0x40e4be;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xd0f4('0x0'));var express=require('express');var router=express[_0xd0f4('0x1')]();var fs_extra=require(_0xd0f4('0x2'));var auth=require(_0xd0f4('0x3'));var interaction=require(_0xd0f4('0x4'));var config=require(_0xd0f4('0x5'));var controller=require(_0xd0f4('0x6'));router[_0xd0f4('0x7')]('/',auth[_0xd0f4('0x8')](),controller['index']);router[_0xd0f4('0x7')](_0xd0f4('0x9'),auth['isAuthenticated'](),controller[_0xd0f4('0xa')]);router[_0xd0f4('0x7')]('/:id',auth[_0xd0f4('0x8')](),controller[_0xd0f4('0xb')]);router['get'](_0xd0f4('0xc'),auth[_0xd0f4('0x8')](),controller[_0xd0f4('0xd')]);router['get']('/:id/download',auth[_0xd0f4('0x8')](),controller[_0xd0f4('0xe')]);router[_0xd0f4('0xf')]('/',auth[_0xd0f4('0x8')](),controller[_0xd0f4('0x10')]);router[_0xd0f4('0xf')](_0xd0f4('0xc'),auth['isAuthenticated'](),controller[_0xd0f4('0x11')]);router[_0xd0f4('0xf')]('/:id/tags',auth[_0xd0f4('0x8')](),interaction['tracked'](_0xd0f4('0x12'),'whatsappinteraction:addtags'),controller[_0xd0f4('0x13')]);router['put']('/:id',auth['isAuthenticated'](),interaction[_0xd0f4('0x14')](_0xd0f4('0x12'),_0xd0f4('0x15')),controller[_0xd0f4('0x16')]);router[_0xd0f4('0x17')](_0xd0f4('0x18'),auth[_0xd0f4('0x8')](),interaction[_0xd0f4('0x14')](_0xd0f4('0x12'),'whatsappinteraction:destroy'),controller[_0xd0f4('0x19')]);router[_0xd0f4('0x17')](_0xd0f4('0x1a'),auth[_0xd0f4('0x8')](),controller['removeTags']);module[_0xd0f4('0x1b')]=router;
\ No newline at end of file
index 2db224e..af70deb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x975f=['ENUM','sequelize','moment','DATE','STRING','out'];(function(_0x43a8b9,_0x4ff1e0){var _0x39894b=function(_0x48b507){while(--_0x48b507){_0x43a8b9['push'](_0x43a8b9['shift']());}};_0x39894b(++_0x4ff1e0);}(_0x975f,0x109));var _0xf975=function(_0x2a8860,_0x2da926){_0x2a8860=_0x2a8860-0x0;var _0x2f47a4=_0x975f[_0x2a8860];return _0x2f47a4;};'use strict';var Sequelize=require(_0xf975('0x0'));var moment=require(_0xf975('0x1'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xf975('0x2')]},'disposition':{'type':Sequelize[_0xf975('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xf975('0x3')]},'note':{'type':Sequelize[_0xf975('0x3')]},'phone':{'type':Sequelize[_0xf975('0x3')]},'read1stAt':{'type':Sequelize[_0xf975('0x2')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0xf975('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xf975('0x2')]},'lastMsgDirection':{'type':Sequelize[_0xf975('0x5')]('in',_0xf975('0x4')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x22ed=['exports','BOOLEAN','DATE','STRING','ENUM','sequelize','moment'];(function(_0x5bb567,_0x3a99f8){var _0x1b0c3b=function(_0x24e99e){while(--_0x24e99e){_0x5bb567['push'](_0x5bb567['shift']());}};_0x1b0c3b(++_0x3a99f8);}(_0x22ed,0x1a9));var _0xd22e=function(_0x15cf2c,_0x114878){_0x15cf2c=_0x15cf2c-0x0;var _0x47b99a=_0x22ed[_0x15cf2c];return _0x47b99a;};'use strict';var Sequelize=require(_0xd22e('0x0'));var moment=require(_0xd22e('0x1'));module[_0xd22e('0x2')]={'closed':{'type':Sequelize[_0xd22e('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xd22e('0x4')]},'disposition':{'type':Sequelize[_0xd22e('0x5')]},'secondDisposition':{'type':Sequelize[_0xd22e('0x5')]},'thirdDisposition':{'type':Sequelize[_0xd22e('0x5')]},'note':{'type':Sequelize[_0xd22e('0x5')]},'phone':{'type':Sequelize[_0xd22e('0x5')]},'read1stAt':{'type':Sequelize[_0xd22e('0x4')]},'firstMsgDirection':{'type':Sequelize[_0xd22e('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xd22e('0x4')]},'lastMsgDirection':{'type':Sequelize[_0xd22e('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xd22e('0x3')],'defaultValue':![]}};
\ No newline at end of file
index d51f808..88bc1db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b1c=['firstName','Contact','out','secret','renderFile','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','Users','map','fullname','TagIds','Tags','split','forEach','push','catch','index','WhatsappInteraction','rawAttributes','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','from','tools_tags','u.id','u.fullname','ui.WhatsappInteractionId','user_has_whatsapp_interactions','users','u.id\x20=\x20ui.UserId','whatsapp_interactions','left_join','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','having','`\x20=\x200','`\x20>\x200','operator','value','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','type','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?','UserId','body','compact','isEmpty','i.WhatsappAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','agent','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','WhatsappAccountId','toString','sequelize','merge','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','Contact.lastName','c.email','c.phone','Contact.phone','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','ui.WhatsappInteractionId\x20IN\x20?','groupBy','WhatsappInteractionId','all','rows','show','params','keys','includeAll','include','options','create','describe','addMessage','WhatsappMessage','ids','omit','getMessages','findOne','filter','findAll','addTags','setTags','spread','color','emit','whatsappInteractionTags:save','removeTags','download','join','root','server','files','tmp','attachments','format','CmContact','lastName','Attachment','Messages','direction','WhatsappAccount','Account','Owner','get','mkdirSync','Whatsapp','N.A.','YYYY-MM-DD\x20HH:mm:ss','closed','existsSync','pipe','basename'];(function(_0x12a157,_0x386e31){var _0x31f1b6=function(_0x554402){while(--_0x554402){_0x12a157['push'](_0x12a157['shift']());}};_0x31f1b6(++_0x386e31);}(_0x6b1c,0xf3));var _0xc6b1=function(_0xc22eb3,_0x1f00d8){_0xc22eb3=_0xc22eb3-0x0;var _0x4ecb5a=_0x6b1c[_0xc22eb3];return _0x4ecb5a;};'use strict';var emlformat=require(_0xc6b1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc6b1('0x1'));var jsonpatch=require(_0xc6b1('0x2'));var rp=require(_0xc6b1('0x3'));var moment=require(_0xc6b1('0x4'));var BPromise=require(_0xc6b1('0x5'));var Mustache=require(_0xc6b1('0x6'));var util=require('util');var path=require(_0xc6b1('0x7'));var sox=require('sox');var csv=require(_0xc6b1('0x8'));var ejs=require(_0xc6b1('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc6b1('0xa'));var squel=require(_0xc6b1('0xb'));var crypto=require(_0xc6b1('0xc'));var jsforce=require(_0xc6b1('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xc6b1('0x8'));var querystring=require(_0xc6b1('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xc6b1('0xf'));var qs=require(_0xc6b1('0x10'));var as=require(_0xc6b1('0x11'));var pdf=require(_0xc6b1('0x12'));var hardwareService=require(_0xc6b1('0x13'));var logger=require(_0xc6b1('0x14'))('api');var utils=require(_0xc6b1('0x15'));var config=require(_0xc6b1('0x16'));var licenseUtil=require(_0xc6b1('0x17'));var db=require(_0xc6b1('0x18'))['db'];config[_0xc6b1('0x19')]=_['defaults'](config[_0xc6b1('0x19')],{'host':_0xc6b1('0x1a'),'port':0x18eb});var socket=require(_0xc6b1('0x1b'))(new Redis(config[_0xc6b1('0x19')]));require('./whatsappInteraction.socket')['register'](socket);function respondWithStatusCode(_0x4607ee,_0x12079c){_0x12079c=_0x12079c||0xcc;return function(_0x37ea66){if(_0x37ea66){return _0x4607ee[_0xc6b1('0x1c')](_0x12079c);}return _0x4607ee[_0xc6b1('0x1d')](_0x12079c)[_0xc6b1('0x1e')]();};}function respondWithResult(_0x4ba242,_0x4fbf72){_0x4fbf72=_0x4fbf72||0xc8;return function(_0xaed550){if(_0xaed550){return _0x4ba242[_0xc6b1('0x1d')](_0x4fbf72)[_0xc6b1('0x1f')](_0xaed550);}};}function respondWithFilteredResult(_0x4c1fec,_0x2c4bae){return function(_0x40a267){if(_0x40a267){var _0x5d732e=typeof _0x2c4bae[_0xc6b1('0x20')]===_0xc6b1('0x21')&&typeof _0x2c4bae[_0xc6b1('0x22')]==='undefined';var _0x24e135=_0x40a267[_0xc6b1('0x23')];var _0x193c78=_0x5d732e?0x0:_0x2c4bae[_0xc6b1('0x20')];var _0x57a253=_0x5d732e?_0x40a267['count']:_0x2c4bae[_0xc6b1('0x20')]+_0x2c4bae[_0xc6b1('0x22')];var _0x9ac881;if(_0x57a253>=_0x24e135){_0x57a253=_0x24e135;_0x9ac881=0xc8;}else{_0x9ac881=0xce;}_0x4c1fec[_0xc6b1('0x1d')](_0x9ac881);return _0x4c1fec[_0xc6b1('0x24')](_0xc6b1('0x25'),_0x193c78+'-'+_0x57a253+'/'+_0x24e135)[_0xc6b1('0x1f')](_0x40a267);}return null;};}function patchUpdates(_0xda9ac){return function(_0x3cb0d0){try{jsonpatch[_0xc6b1('0x26')](_0x3cb0d0,_0xda9ac,!![]);}catch(_0x267e1f){return BPromise[_0xc6b1('0x27')](_0x267e1f);}return _0x3cb0d0[_0xc6b1('0x28')]();};}function saveUpdates(_0x9a919c,_0x311b3f){return function(_0x3976df){if(_0x3976df){return _0x3976df['update'](_0x9a919c)[_0xc6b1('0x29')](function(_0x5afcb5){return _0x5afcb5;});}return null;};}function removeEntity(_0x2b657d,_0x2b0a39){return function(_0x1339f1){if(_0x1339f1){return _0x1339f1[_0xc6b1('0x2a')]()['then'](function(){_0x2b657d[_0xc6b1('0x1d')](0xcc)[_0xc6b1('0x1e')]();});}};}function handleEntityNotFound(_0x168187,_0x71ce3e){return function(_0x443774){if(!_0x443774){_0x168187[_0xc6b1('0x1c')](0x194);}return _0x443774;};}function handleError(_0x23ab88,_0x497dac){_0x497dac=_0x497dac||0x1f4;return function(_0x196927){logger[_0xc6b1('0x2b')](_0x196927[_0xc6b1('0x2c')]);if(_0x196927[_0xc6b1('0x2d')]){delete _0x196927[_0xc6b1('0x2d')];}_0x23ab88[_0xc6b1('0x1d')](_0x497dac)['send'](_0x196927);};}function getInteractionUsers(_0x2c85bf,_0x1ffd49){return new BPromise(function(_0x2a7e40,_0x4dd229){try{if(_0x1ffd49[_0x2c85bf['id']]){_0x2c85bf[_0xc6b1('0x2e')]=_[_0xc6b1('0x2f')](_0x1ffd49[_0x2c85bf['id']],function(_0x167ff2){return{'id':_0x167ff2['id'],'fullname':_0x167ff2[_0xc6b1('0x30')]};});}}catch(_0x4e35de){_0x4dd229(_0x4e35de);}_0x2a7e40(_0x2c85bf);});}function getInteractionTags(_0x4a4839,_0x453a9c){return new BPromise(function(_0x5dc371,_0xe55de5){try{if(_0x4a4839[_0xc6b1('0x31')]){_0x4a4839[_0xc6b1('0x32')]=[];_0x4a4839[_0xc6b1('0x31')][_0xc6b1('0x33')](',')[_0xc6b1('0x34')](function(_0x38c9fb){_0x4a4839[_0xc6b1('0x32')][_0xc6b1('0x35')](_0x453a9c[_0x38c9fb]);});}delete _0x4a4839[_0xc6b1('0x31')];}catch(_0x57436b){_0xe55de5(_0x57436b);}_0x5dc371(_0x4a4839);});}function updateWhatsappInteraction(_0x5a5c1c,_0x2e2758,_0x4a560b){return new BPromise(function(_0x1aea81,_0x216f43){return getInteractionUsers(_0x5a5c1c,_0x4a560b)[_0xc6b1('0x29')](function(_0x23413f){return getInteractionTags(_0x23413f,_0x2e2758);})[_0xc6b1('0x29')](function(_0x17613b){_0x1aea81(_0x17613b);})[_0xc6b1('0x36')](function(_0x185d26){_0x216f43(_0x185d26);});});}exports[_0xc6b1('0x37')]=function(_0x54e0d5,_0x1683ef){var _0x470aa6={},_0x393938={},_0x2e284e={'count':0x0,'rows':[]};var _0x455a41=_[_0xc6b1('0x2f')](db[_0xc6b1('0x38')][_0xc6b1('0x39')],function(_0x4fac76){return{'name':_0x4fac76['fieldName'],'type':_0x4fac76['type']['key']};});_0x393938[_0xc6b1('0x3a')]=_[_0xc6b1('0x2f')](_0x455a41,_0xc6b1('0x2d'));_0x393938[_0xc6b1('0x3b')]=_['keys'](_0x54e0d5[_0xc6b1('0x3b')]);_0x393938[_0xc6b1('0x3c')]=_[_0xc6b1('0x3d')](_0x393938['model'],_0x393938[_0xc6b1('0x3b')]);_0x470aa6[_0xc6b1('0x3e')]=_[_0xc6b1('0x3d')](_0x393938[_0xc6b1('0x3a')],qs[_0xc6b1('0x3f')](_0x54e0d5[_0xc6b1('0x3b')]['fields']));_0x470aa6[_0xc6b1('0x3e')]=_0x470aa6[_0xc6b1('0x3e')][_0xc6b1('0x40')]?_0x470aa6[_0xc6b1('0x3e')]:_0x393938['model'];if(!_0x54e0d5[_0xc6b1('0x3b')][_0xc6b1('0x41')](_0xc6b1('0x42'))){_0x470aa6[_0xc6b1('0x22')]=qs[_0xc6b1('0x22')](_0x54e0d5['query']['limit']);_0x470aa6[_0xc6b1('0x20')]=qs['offset'](_0x54e0d5[_0xc6b1('0x3b')]['offset']);}_0x470aa6[_0xc6b1('0x43')]=qs[_0xc6b1('0x44')](_0x54e0d5[_0xc6b1('0x3b')][_0xc6b1('0x44')]);_0x470aa6[_0xc6b1('0x45')]=qs[_0xc6b1('0x3c')](_[_0xc6b1('0x46')](_0x54e0d5[_0xc6b1('0x3b')],_0x393938[_0xc6b1('0x3c')]),_0x455a41);var _0x394e00=[];var _0x21d473=squel[_0xc6b1('0x47')]()[_0xc6b1('0x48')]('id')[_0xc6b1('0x48')](_0xc6b1('0x2d'))[_0xc6b1('0x48')]('color')[_0xc6b1('0x49')](_0xc6b1('0x4a'));var _0x254958=squel[_0xc6b1('0x47')]()['field'](_0xc6b1('0x4b'))['field'](_0xc6b1('0x4c'))[_0xc6b1('0x48')](_0xc6b1('0x4d'))[_0xc6b1('0x49')](_0xc6b1('0x4e'),'ui')['left_join'](_0xc6b1('0x4f'),'u',_0xc6b1('0x50'));var _0x13acb7=squel[_0xc6b1('0x47')]()[_0xc6b1('0x49')](_0xc6b1('0x51'),'i')[_0xc6b1('0x52')]('cm_contacts','c',_0xc6b1('0x53'))[_0xc6b1('0x52')](_0xc6b1('0x4f'),'o',_0xc6b1('0x54'))['left_join'](_0xc6b1('0x55'),'a',_0xc6b1('0x56'))[_0xc6b1('0x52')]('whatsapp_messages','me','me.WhatsappInteractionId\x20=\x20i.id')[_0xc6b1('0x52')](_0xc6b1('0x57'),'it',_0xc6b1('0x58'))[_0xc6b1('0x52')](_0xc6b1('0x4a'),'t',_0xc6b1('0x59'));var _0x19037d=squel[_0xc6b1('0x5a')]();var _0x1e1ded=[];var _0x17b7a3=squel[_0xc6b1('0x5a')]();var _0x5ba94b;if(_0x54e0d5[_0xc6b1('0x3b')][_0xc6b1('0x5b')]){_0x5ba94b=as[_0xc6b1('0x5c')](_0x54e0d5[_0xc6b1('0x3b')][_0xc6b1('0x5b')]);var _0x149e21=_0x5ba94b[_0xc6b1('0x5d')];for(var _0x17de4e=0x0;_0x17de4e<_0x5ba94b['conditions'][_0xc6b1('0x40')];_0x17de4e++){var _0x21f5da=_0x5ba94b[_0xc6b1('0x5e')][_0x17de4e];var _0x3ff121='i';var _0x11eecd=_[_0xc6b1('0x5f')](_0x455a41,[_0xc6b1('0x2d'),_0x21f5da[_0xc6b1('0x48')]]);if(!_0x11eecd){switch(_0x21f5da[_0xc6b1('0x48')]){case _0xc6b1('0x60'):if(_0x21f5da['value']==0x1){_0x13acb7[_0xc6b1('0x61')]('`'+_0x21f5da[_0xc6b1('0x48')]+_0xc6b1('0x62'));}else{_0x13acb7['having']('`'+_0x21f5da['field']+_0xc6b1('0x63'));}break;case'Contact':if(_0x21f5da[_0xc6b1('0x64')]==='$substring'){if(_0x21f5da[_0xc6b1('0x65')]['split']('\x20')['length']>0x1){_0x19037d[_0x149e21]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xc6b1('0x66')](_0x21f5da[_0xc6b1('0x65')]),null);}else{var _0x1e8f0c='%'+_0x21f5da[_0xc6b1('0x65')]+'%';_0x19037d[_0x149e21](_0xc6b1('0x67'),_0x1e8f0c,_0x1e8f0c,_0x1e8f0c);}}else{_0x11eecd=_['find'](_0x455a41,[_0xc6b1('0x2d'),_0xc6b1('0x68')]);_0x21f5da[_0xc6b1('0x48')]=_0xc6b1('0x68');_0x384ed1=as[_0xc6b1('0x69')](_0x3ff121,_0x11eecd[_0xc6b1('0x6a')],_0x21f5da);_0x19037d[_0x149e21](_0x384ed1[_0xc6b1('0x6b')],_0x384ed1[_0xc6b1('0x65')][_0xc6b1('0x6c')],_0x384ed1['value']['end']);}break;case _0xc6b1('0x6d'):var _0x21fc47=_0x21f5da[_0xc6b1('0x65')]['split'](',')[_0xc6b1('0x2f')](function(_0x1d4488){return Number(_0x1d4488);});_0x21fc47[_0xc6b1('0x34')](function(_0x273afa){_0x17b7a3['or'](_0xc6b1('0x6e'),'%,'+_0x273afa+',%');});_0x1e1ded=_[_0xc6b1('0x6f')](_0x1e1ded,_0x21fc47);break;case _0xc6b1('0x70'):if(_0x21f5da[_0xc6b1('0x64')]==='$substring'){_0x19037d[_0x149e21](_0xc6b1('0x71'),'%'+_0x21f5da[_0xc6b1('0x65')]+'%',null);}else{_0x11eecd=_['find'](_0x455a41,[_0xc6b1('0x2d'),'UserId']);_0x21f5da[_0xc6b1('0x48')]=_0xc6b1('0x72');_0x384ed1=as[_0xc6b1('0x69')](_0x3ff121,_0x11eecd[_0xc6b1('0x6a')],_0x21f5da);_0x19037d[_0x149e21](_0x384ed1[_0xc6b1('0x6b')],_0x384ed1[_0xc6b1('0x65')][_0xc6b1('0x6c')],_0x384ed1['value'][_0xc6b1('0x1e')]);}break;case _0xc6b1('0x73'):_0x384ed1=as['buildExpression']('me',null,_0x21f5da);_0x19037d[_0x149e21](_0x384ed1[_0xc6b1('0x6b')],_0x384ed1[_0xc6b1('0x65')]['start'],_0x384ed1[_0xc6b1('0x65')][_0xc6b1('0x1e')]);break;}}else{var _0x384ed1=as[_0xc6b1('0x69')](_0x3ff121,_0x11eecd[_0xc6b1('0x6a')],_0x21f5da);_0x19037d[_0x149e21](_0x384ed1['text'],_0x384ed1[_0xc6b1('0x65')][_0xc6b1('0x6c')],_0x384ed1[_0xc6b1('0x65')][_0xc6b1('0x1e')]);}}}else{var _0x3f1c65=_(_0x54e0d5['query'])['keys']()[_0xc6b1('0x2f')](function(_0xadaa7){return _['some'](_0x455a41,['name',_0xadaa7])?_0xadaa7:undefined;})[_0xc6b1('0x74')]()['value']();if(!_[_0xc6b1('0x75')](_0x3f1c65)){_0x3f1c65[_0xc6b1('0x34')](function(_0x297701){if(_0x297701==='WhatsappAccountId'){_0x13acb7[_0xc6b1('0x45')](_0xc6b1('0x76'),[][_0xc6b1('0x77')](_0x54e0d5[_0xc6b1('0x3b')][_0x297701]));}else if(_0x297701===_0xc6b1('0x78')){var _0x2aae10=JSON[_0xc6b1('0x79')](_0x54e0d5[_0xc6b1('0x3b')][_0x297701])[_0xc6b1('0x7a')];var _0x1bd882=JSON['parse'](_0x54e0d5['query'][_0x297701])[_0xc6b1('0x7b')];_0x13acb7[_0xc6b1('0x45')](_0xc6b1('0x7c'),_0x2aae10,_0x1bd882);}else{if(_0x54e0d5[_0xc6b1('0x3b')][_0x297701]===_0xc6b1('0x7d')){_0x13acb7[_0xc6b1('0x45')]('i.'+_0x297701+_0xc6b1('0x7e'));}else{_0x13acb7[_0xc6b1('0x45')]('i.'+_0x297701+'\x20=\x20?',_0x54e0d5[_0xc6b1('0x3b')][_0x297701]);}}});}if(_0x54e0d5[_0xc6b1('0x3b')][_0xc6b1('0x7f')]){if(_0x54e0d5[_0xc6b1('0x3b')]['read']==0x1){_0x13acb7[_0xc6b1('0x61')](_0xc6b1('0x80'));}else{_0x13acb7[_0xc6b1('0x61')](_0xc6b1('0x81'));}}if(_0x54e0d5[_0xc6b1('0x3b')][_0xc6b1('0x82')]){_0x1e1ded=_[_0xc6b1('0x83')](_0x54e0d5[_0xc6b1('0x3b')][_0xc6b1('0x82')])?_0x54e0d5[_0xc6b1('0x3b')]['tag']:new Array(_0x54e0d5[_0xc6b1('0x3b')][_0xc6b1('0x82')]);_0x1e1ded[_0xc6b1('0x34')](function(_0x2b0035){_0x17b7a3['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2b0035+',%');});}if(_0x54e0d5[_0xc6b1('0x3b')]['filter']){var _0x1f663d=_0x54e0d5['query']['filter'][_0xc6b1('0x84')]('\x5c','\x5c\x5c')[_0xc6b1('0x84')](/'/g,'\x27\x27');if(qs[_0xc6b1('0x85')](_0x1f663d)){_0x19037d['or'](_0xc6b1('0x86'),_0x1f663d+'%')['or'](_0xc6b1('0x87'),_0x1f663d+'%');}else{_0x19037d['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xc6b1('0x66')](_0x1f663d))['or'](_0xc6b1('0x88'),_0x1f663d+'%');}}}_0x13acb7[_0xc6b1('0x45')](_0x19037d);_0x13acb7[_0xc6b1('0x89')](_0xc6b1('0x8a'));var _0x117ca0={'type':db[_0xc6b1('0x8b')]['QueryTypes']['SELECT'],'raw':!![]};var _0x126c46=_0x13acb7['clone']();_0x126c46[_0xc6b1('0x48')](_0xc6b1('0x8a'));_0x126c46[_0xc6b1('0x48')](_0xc6b1('0x8c'),_0xc6b1('0x60'));if(_0x470aa6[_0xc6b1('0x43')]){_0x470aa6[_0xc6b1('0x43')][_0xc6b1('0x34')](function(_0x394b16){var _0x41ac3f=_0x394b16[0x0]===_0xc6b1('0x8d')?_0x394b16[0x0]:'i.'+_0x394b16[0x0];_0x13acb7[_0xc6b1('0x43')](_0x41ac3f,_0x394b16[0x1]===_0xc6b1('0x8e')?![]:!![]);});}if(!_[_0xc6b1('0x75')](_0x1e1ded)){_0x13acb7[_0xc6b1('0x61')](_0x17b7a3);_0x126c46[_0xc6b1('0x45')](_0xc6b1('0x8f'),_0x1e1ded);}BPromise[_0xc6b1('0x90')]()[_0xc6b1('0x29')](function(){if(!_0x5ba94b){if(_0x54e0d5['query']['WhatsappAccountId'])return;_0x126c46[_0xc6b1('0x45')]('i.WhatsappAccountId\x20IS\x20NOT\x20NULL');_0x13acb7[_0xc6b1('0x45')](_0xc6b1('0x91'));return;}if(_0x54e0d5[_0xc6b1('0x92')]['role']!==_0xc6b1('0x93'))return;return _0x54e0d5[_0xc6b1('0x92')][_0xc6b1('0x94')]({'attributes':['id'],'raw':!![]})[_0xc6b1('0x29')](function(_0x2b5af9){if(_[_0xc6b1('0x75')](_0x2b5af9)){_0x126c46['where'](_0xc6b1('0x95'));_0x13acb7[_0xc6b1('0x45')](_0xc6b1('0x95'));}else{_0x126c46[_0xc6b1('0x45')]('i.WhatsappAccountId\x20IN\x20?',_[_0xc6b1('0x2f')](_0x2b5af9,'id'));_0x13acb7[_0xc6b1('0x45')]('i.WhatsappAccountId\x20IN\x20?',_[_0xc6b1('0x2f')](_0x2b5af9,'id'));}});})['then'](function(){if(_0x54e0d5[_0xc6b1('0x92')]['role']===_0xc6b1('0x93')&&!_0x5ba94b&&!_0x54e0d5[_0xc6b1('0x3b')][_0xc6b1('0x96')])return[];return db['sequelize']['query'](_0x126c46[_0xc6b1('0x97')](),_0x117ca0);})[_0xc6b1('0x29')](function(_0xa98b5a){_0x2e284e['count']=_0xa98b5a['length'];if(_0x2e284e[_0xc6b1('0x23')]===0x0)return[];return db[_0xc6b1('0x98')][_0xc6b1('0x3b')](_0x21d473['toString'](),_0x117ca0)[_0xc6b1('0x29')](function(_0x38ea39){_0x394e00=_['keyBy'](_0x38ea39,'id');_0x117ca0=_[_0xc6b1('0x99')](_0x117ca0,{'model':db[_0xc6b1('0x38')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x54e0d5[_0xc6b1('0x3b')][_0xc6b1('0x3f')]){_0x470aa6[_0xc6b1('0x3e')]['forEach'](function(_0x356de7){_0x13acb7[_0xc6b1('0x48')]('i.'+_0x356de7);});}else{_0x13acb7[_0xc6b1('0x48')](_0xc6b1('0x8c'),_0xc6b1('0x60'));_0x13acb7[_0xc6b1('0x48')]('a.key','Account.key');_0x13acb7[_0xc6b1('0x48')]('a.mandatoryDisposition',_0xc6b1('0x9a'));_0x13acb7[_0xc6b1('0x48')](_0xc6b1('0x9b'),_0xc6b1('0x8d'));_0x13acb7[_0xc6b1('0x48')](_0xc6b1('0x9c'));_0x13acb7[_0xc6b1('0x48')](_0xc6b1('0x9d'),_0xc6b1('0x9e'));_0x13acb7[_0xc6b1('0x48')](_0xc6b1('0x9f'),_0xc6b1('0xa0'));_0x13acb7[_0xc6b1('0x48')](_0xc6b1('0xa1'),'Contact.email');_0x13acb7[_0xc6b1('0x48')](_0xc6b1('0xa2'),_0xc6b1('0xa3'));_0x13acb7[_0xc6b1('0x48')]('c.mobile',_0xc6b1('0xa4'));_0x13acb7[_0xc6b1('0x48')]('c.fax',_0xc6b1('0xa5'));_0x13acb7[_0xc6b1('0x48')](_0xc6b1('0xa6'),_0xc6b1('0xa7'));_0x13acb7['field'](_0xc6b1('0xa8'),_0xc6b1('0xa9'));_0x13acb7[_0xc6b1('0x48')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0xc6b1('0x31'));}if(_0x470aa6[_0xc6b1('0x22')])_0x13acb7[_0xc6b1('0x22')](_0x470aa6['limit']);if(_0x470aa6[_0xc6b1('0x20')])_0x13acb7['offset'](_0x470aa6['offset']);return db[_0xc6b1('0x98')]['query'](_0x13acb7[_0xc6b1('0x97')](),_0x117ca0);})[_0xc6b1('0x29')](function(_0x50bb14){if(_0x50bb14[_0xc6b1('0x40')]>0x0)_0x254958[_0xc6b1('0x45')](_0xc6b1('0xaa'),_['map'](_0x50bb14,'id'));return db[_0xc6b1('0x98')][_0xc6b1('0x3b')](_0x254958['toString'](),_0x117ca0)['then'](function(_0x172320){var _0x48a9e5=_[_0xc6b1('0xab')](_0x172320,_0xc6b1('0xac'));var _0x4f36b3=[];_0x50bb14['forEach'](function(_0x58a7f3){_0x4f36b3[_0xc6b1('0x35')](updateWhatsappInteraction(_0x58a7f3,_0x394e00,_0x48a9e5));});return BPromise[_0xc6b1('0xad')](_0x4f36b3);});});})['then'](function(_0x3737ea){_0x2e284e[_0xc6b1('0xae')]=_0x3737ea;return _0x2e284e;})[_0xc6b1('0x29')](respondWithFilteredResult(_0x1683ef,_0x470aa6))[_0xc6b1('0x36')](handleError(_0x1683ef,null));};exports[_0xc6b1('0xaf')]=function(_0x13872b,_0x4f352e){var _0x221435={'raw':![],'where':{'id':_0x13872b[_0xc6b1('0xb0')]['id']}},_0x474f2f={};_0x474f2f['model']=_[_0xc6b1('0xb1')](db[_0xc6b1('0x38')][_0xc6b1('0x39')]);_0x474f2f[_0xc6b1('0x3b')]=_[_0xc6b1('0xb1')](_0x13872b['query']);_0x474f2f[_0xc6b1('0x3c')]=_[_0xc6b1('0x3d')](_0x474f2f[_0xc6b1('0x3a')],_0x474f2f['query']);_0x221435[_0xc6b1('0x3e')]=_[_0xc6b1('0x3d')](_0x474f2f[_0xc6b1('0x3a')],qs['fields'](_0x13872b[_0xc6b1('0x3b')][_0xc6b1('0x3f')]));_0x221435[_0xc6b1('0x3e')]=_0x221435[_0xc6b1('0x3e')][_0xc6b1('0x40')]?_0x221435[_0xc6b1('0x3e')]:_0x474f2f[_0xc6b1('0x3a')];if(_0x13872b[_0xc6b1('0x3b')][_0xc6b1('0xb2')]){_0x221435[_0xc6b1('0xb3')]=[{'all':!![]}];}_0x221435=_[_0xc6b1('0x99')]({},_0x221435,_0x13872b[_0xc6b1('0xb4')]);return db['WhatsappInteraction'][_0xc6b1('0x5f')](_0x221435)[_0xc6b1('0x29')](handleEntityNotFound(_0x4f352e,null))['then'](respondWithResult(_0x4f352e,null))['catch'](handleError(_0x4f352e,null));};exports[_0xc6b1('0xb5')]=function(_0x2170a2,_0xd2eba5){return db[_0xc6b1('0x38')][_0xc6b1('0xb5')](_0x2170a2['body'],{})[_0xc6b1('0x29')](respondWithResult(_0xd2eba5,0xc9))[_0xc6b1('0x36')](handleError(_0xd2eba5,null));};exports['update']=function(_0xfc26c7,_0x47a611){if(_0xfc26c7['body']['id']){delete _0xfc26c7[_0xc6b1('0x73')]['id'];}return db[_0xc6b1('0x38')][_0xc6b1('0x5f')]({'where':{'id':_0xfc26c7[_0xc6b1('0xb0')]['id']}})[_0xc6b1('0x29')](handleEntityNotFound(_0x47a611,null))['then'](saveUpdates(_0xfc26c7['body'],null))[_0xc6b1('0x29')](respondWithResult(_0x47a611,null))[_0xc6b1('0x36')](handleError(_0x47a611,null));};exports[_0xc6b1('0x2a')]=function(_0x3bfe4e,_0x45e1a2){return db[_0xc6b1('0x38')][_0xc6b1('0x5f')]({'where':{'id':_0x3bfe4e[_0xc6b1('0xb0')]['id']}})['then'](handleEntityNotFound(_0x45e1a2,null))['then'](removeEntity(_0x45e1a2,null))['catch'](handleError(_0x45e1a2,null));};exports[_0xc6b1('0xb6')]=function(_0x388a0d,_0x53ac07){return db[_0xc6b1('0x38')][_0xc6b1('0xb6')]()[_0xc6b1('0x29')](respondWithResult(_0x53ac07,null))['catch'](handleError(_0x53ac07,null));};exports[_0xc6b1('0xb7')]=function(_0x3bb63a,_0x4d8a35,_0x4098fb){return db[_0xc6b1('0xb8')][_0xc6b1('0x5f')]({'where':{'id':_0x3bb63a[_0xc6b1('0xb0')]['id']}})[_0xc6b1('0x29')](handleEntityNotFound(_0x4d8a35,null))['then'](function(_0x1f56c5){if(_0x1f56c5){return _0x1f56c5['addMessage'](_0x3bb63a[_0xc6b1('0x73')][_0xc6b1('0xb9')],_[_0xc6b1('0xba')](_0x3bb63a[_0xc6b1('0x73')],['ids','id'])||{});}})[_0xc6b1('0x29')](respondWithResult(_0x4d8a35,null))[_0xc6b1('0x36')](handleError(_0x4d8a35,null));};exports[_0xc6b1('0xbb')]=function(_0x3270bc,_0x21d032,_0xcd0d00){var _0x5b1fae={'raw':![],'where':{}};var _0x2790b0={};var _0x22f264={'count':0x0,'rows':[]};return db[_0xc6b1('0x38')][_0xc6b1('0xbc')]({'where':{'id':_0x3270bc[_0xc6b1('0xb0')]['id']}})[_0xc6b1('0x29')](handleEntityNotFound(_0x21d032,null))[_0xc6b1('0x29')](function(_0x4e7180){if(_0x4e7180){_0x2790b0[_0xc6b1('0x3a')]=_[_0xc6b1('0xb1')](db[_0xc6b1('0xb8')][_0xc6b1('0x39')]);_0x2790b0[_0xc6b1('0x3b')]=_[_0xc6b1('0xb1')](_0x3270bc[_0xc6b1('0x3b')]);_0x2790b0[_0xc6b1('0x3c')]=_[_0xc6b1('0x3d')](_0x2790b0[_0xc6b1('0x3a')],_0x2790b0[_0xc6b1('0x3b')]);_0x5b1fae[_0xc6b1('0x3e')]=_[_0xc6b1('0x3d')](_0x2790b0[_0xc6b1('0x3a')],qs[_0xc6b1('0x3f')](_0x3270bc[_0xc6b1('0x3b')]['fields']));_0x5b1fae[_0xc6b1('0x3e')]=_0x5b1fae[_0xc6b1('0x3e')][_0xc6b1('0x40')]?_0x5b1fae[_0xc6b1('0x3e')]:_0x2790b0[_0xc6b1('0x3a')];if(!_0x3270bc['query'][_0xc6b1('0x41')](_0xc6b1('0x42'))){_0x5b1fae[_0xc6b1('0x22')]=qs[_0xc6b1('0x22')](_0x3270bc[_0xc6b1('0x3b')][_0xc6b1('0x22')]);_0x5b1fae[_0xc6b1('0x20')]=qs[_0xc6b1('0x20')](_0x3270bc[_0xc6b1('0x3b')]['offset']);}_0x5b1fae[_0xc6b1('0x43')]=qs[_0xc6b1('0x44')](_0x3270bc[_0xc6b1('0x3b')][_0xc6b1('0x44')]);_0x5b1fae[_0xc6b1('0x45')]=qs[_0xc6b1('0x3c')](_[_0xc6b1('0x46')](_0x3270bc['query'],_0x2790b0[_0xc6b1('0x3c')]));_0x5b1fae[_0xc6b1('0x45')][_0xc6b1('0xac')]=_0x4e7180['id'];if(_0x3270bc['query']['filter']){_0x5b1fae[_0xc6b1('0x45')]=_[_0xc6b1('0x99')](_0x5b1fae[_0xc6b1('0x45')],{'$or':_['map'](_0x5b1fae[_0xc6b1('0x3e')],function(_0xed220f){var _0xc60c75={};_0xc60c75[_0xed220f]={'$like':'%'+_0x3270bc[_0xc6b1('0x3b')][_0xc6b1('0xbd')]+'%'};return _0xc60c75;})});}if(_0x3270bc['query'][_0xc6b1('0x7a')]){var _0x5a9954=_0x3270bc[_0xc6b1('0x3b')][_0xc6b1('0x7a')]['split'](',');var _0x5f0578={};_0x5f0578[_0x5a9954[0x0]]={'$gte':moment(_0x5a9954[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x5b1fae[_0xc6b1('0x45')]=_[_0xc6b1('0x99')](_0x5b1fae[_0xc6b1('0x45')],_0x5f0578);}_0x5b1fae=_[_0xc6b1('0x99')]({},_0x5b1fae,_0x3270bc[_0xc6b1('0xb4')]);return db['WhatsappMessage'][_0xc6b1('0x23')]({'where':_0x5b1fae[_0xc6b1('0x45')]})[_0xc6b1('0x29')](function(_0x445e31){_0x22f264[_0xc6b1('0x23')]=_0x445e31;if(_0x3270bc['query'][_0xc6b1('0xb2')]){_0x5b1fae['include']=[{'all':!![]}];}return db[_0xc6b1('0xb8')][_0xc6b1('0xbe')](_0x5b1fae);})['then'](function(_0x2c6555){_0x22f264[_0xc6b1('0xae')]=_0x2c6555;return _0x22f264;});}})['then'](respondWithFilteredResult(_0x21d032,_0x5b1fae))[_0xc6b1('0x36')](handleError(_0x21d032,null));};exports[_0xc6b1('0xbf')]=function(_0x5a7eb7,_0x10e8b0,_0x249acf){return db[_0xc6b1('0x38')]['find']({'where':{'id':_0x5a7eb7[_0xc6b1('0xb0')]['id']}})[_0xc6b1('0x29')](handleEntityNotFound(_0x10e8b0,null))['then'](function(_0x3c3641){if(_0x3c3641){return _0x3c3641[_0xc6b1('0xc0')](_0x5a7eb7[_0xc6b1('0x73')][_0xc6b1('0xb9')],_[_0xc6b1('0xba')](_0x5a7eb7['body'],['ids','id'])||{})[_0xc6b1('0xc1')](function(){return db[_0xc6b1('0x6d')]['findAll']({'attributes':['id',_0xc6b1('0x2d'),_0xc6b1('0xc2')],'where':{'id':_0x5a7eb7['body'][_0xc6b1('0xb9')]}});})['then'](function(_0x181a22){socket[_0xc6b1('0xc3')](_0xc6b1('0xc4'),{'id':Number(_0x5a7eb7[_0xc6b1('0xb0')]['id']),'tags':_0x181a22||[]});return{'id':Number(_0x5a7eb7['params']['id']),'tags':_0x181a22||[]};});}})[_0xc6b1('0x29')](respondWithResult(_0x10e8b0,null))[_0xc6b1('0x36')](handleError(_0x10e8b0,null));};exports[_0xc6b1('0xc5')]=function(_0x2fab1f,_0x2e3bd6,_0xfc2715){return db[_0xc6b1('0x38')]['find']({'where':{'id':_0x2fab1f['params']['id']}})[_0xc6b1('0x29')](handleEntityNotFound(_0x2e3bd6,null))[_0xc6b1('0x29')](function(_0x11e612){if(_0x11e612){return _0x11e612[_0xc6b1('0xc5')](_0x2fab1f[_0xc6b1('0x3b')]['ids']);}})[_0xc6b1('0x29')](respondWithStatusCode(_0x2e3bd6,null))[_0xc6b1('0x36')](handleError(_0x2e3bd6,null));};exports[_0xc6b1('0xc6')]=function(_0x4c720e,_0x292b58){var _0x3c4cc1=moment()['unix']()[_0xc6b1('0x97')]();var _0x5f68e6=path[_0xc6b1('0xc7')](config[_0xc6b1('0xc8')],_0xc6b1('0xc9'),_0xc6b1('0xca'),_0xc6b1('0xcb'));var _0x1dbf5d=path[_0xc6b1('0xc7')](config[_0xc6b1('0xc8')],_0xc6b1('0xc9'),_0xc6b1('0xca'),_0xc6b1('0xcc'));var _0x5eec9b=path['join'](_0x5f68e6,_0x3c4cc1);var _0x500a66=util[_0xc6b1('0xcd')]('transcript-%d-%s.zip',_0x4c720e['params']['id'],_0x3c4cc1);var _0x2918cf=path['join'](_0x5f68e6,_0x500a66);var _0xd0908e=[];_0xd0908e['push']({'model':db[_0xc6b1('0x70')],'as':'User','attributes':['id',_0xc6b1('0x30')],'raw':!![]});_0xd0908e[_0xc6b1('0x35')]({'model':db[_0xc6b1('0xce')],'as':'Contact','attributes':['id','firstName',_0xc6b1('0xcf')],'raw':!![]});if(_0x4c720e[_0xc6b1('0x3b')][_0xc6b1('0xcc')]){_0xd0908e['push']({'model':db[_0xc6b1('0xd0')],'as':_0xc6b1('0xd0'),'raw':!![]});}var _0x279a2b=[{'model':db['WhatsappMessage'],'as':_0xc6b1('0xd1'),'attributes':['id',_0xc6b1('0x73'),_0xc6b1('0x78'),_0xc6b1('0xd2'),'secret','read'],'include':_0xd0908e}];_0x279a2b[_0xc6b1('0x35')]({'model':db[_0xc6b1('0xd3')],'as':_0xc6b1('0xd4'),'attributes':['id','name']});_0x279a2b[_0xc6b1('0x35')]({'model':db['User'],'as':_0xc6b1('0xd5'),'attributes':['id',_0xc6b1('0x30')]});return db[_0xc6b1('0x38')]['find']({'where':{'id':_0x4c720e['params']['id']},'include':_0x279a2b})[_0xc6b1('0x29')](handleEntityNotFound(_0x292b58,null))[_0xc6b1('0x29')](function(_0x4e525e){if(_0x4e525e){var _0x1aed30=_0x4e525e[_0xc6b1('0xd6')]({'plain':!![]});fs[_0xc6b1('0xd7')](_0x5eec9b);var _0x1fbaf5={'channel':_0xc6b1('0xd8'),'account':_0x1aed30[_0xc6b1('0xd4')]['name'],'agent':_0x1aed30[_0xc6b1('0xd5')]?_0x1aed30['Owner'][_0xc6b1('0x30')]:_0xc6b1('0xd9'),'createdAt':moment(_0x1aed30[_0xc6b1('0x78')])['format'](_0xc6b1('0xda'))[_0xc6b1('0x97')](),'closedAt':_0x1aed30[_0xc6b1('0xdb')]?moment(_0x1aed30['closedAt'])[_0xc6b1('0xcd')]('YYYY-MM-DD\x20HH:mm:ss')[_0xc6b1('0x97')]():'','disposition':_0x1aed30['disposition'],'messages':_(_0x1aed30[_0xc6b1('0xd1')])[_0xc6b1('0xbd')]({'secret':![]})['map'](function(_0x1de042){if(_0x1de042[_0xc6b1('0xd0')]){var _0x1aed8e=path[_0xc6b1('0xc7')](_0x1dbf5d,_0x1de042['Attachment']['basename']);if(fs[_0xc6b1('0xdc')](_0x1aed8e)){fs['createReadStream'](_0x1aed8e)[_0xc6b1('0xdd')](fs['createWriteStream'](path[_0xc6b1('0xc7')](_0x5eec9b,_0x1de042[_0xc6b1('0xd0')][_0xc6b1('0xde')])));}}return{'date':moment(_0x1de042[_0xc6b1('0x78')])['format'](_0xc6b1('0xda'))[_0xc6b1('0x97')](),'sender':_0x1de042[_0xc6b1('0xd2')]==='out'?_0x1de042[_0xc6b1('0x70')]?_0x1de042[_0xc6b1('0x70')]['fullname']:'System':_0x1de042['Contact'][_0xc6b1('0xdf')]+(_0x1de042['Contact'][_0xc6b1('0xcf')]?'\x20'+_0x1de042[_0xc6b1('0xe0')][_0xc6b1('0xcf')]:''),'body':_0x1de042[_0xc6b1('0xd0')]?_0x1de042[_0xc6b1('0xd0')][_0xc6b1('0xde')]:_0x1de042[_0xc6b1('0x73')],'direction':_0x1de042['direction']===_0xc6b1('0xe1')?'A':'C','secret':_0x1de042[_0xc6b1('0xe2')],'read':_0x1de042[_0xc6b1('0x7f')],'attachment':_0x1de042['Attachment']};})[_0xc6b1('0x65')]()};return ejs[_0xc6b1('0xe3')](path[_0xc6b1('0xc7')](config['root'],_0xc6b1('0xc9'),'views',_0xc6b1('0xe4')),{'interaction':_0x1fbaf5})['then'](function(_0x53f98b){var _0x452a17=path[_0xc6b1('0xc7')](_0x5eec9b,_0xc6b1('0xe5')+_0x1aed30['id']+'-'+_0x3c4cc1+_0xc6b1('0xe6'));var _0x13bc99={'path':_0x452a17,'channel':_0xc6b1('0xd8'),'interactionId':_0x1aed30['id']};return pdf[_0xc6b1('0xe7')](_0x53f98b,_0x13bc99);})[_0xc6b1('0x29')](function(){return new BPromise(function(_0x19e374,_0xb37340){zipdir(_0x5eec9b,{'saveTo':_0x2918cf},function(_0x4b9c89,_0x7f543d){if(_0x4b9c89)return _0xb37340(_0x4b9c89);return _0x19e374(_0x7f543d);});})[_0xc6b1('0x29')](function(){return new BPromise(function(_0x2c4edc,_0x55d2ef){rimraf(_0x5eec9b,function(_0x51a079){if(_0x51a079)_0x55d2ef(_0x51a079);return _0x2c4edc();});});})['then'](function(){return _0x292b58[_0xc6b1('0xc6')](_0x2918cf,_0x500a66,function(_0x40f58f){if(_0x40f58f){console[_0xc6b1('0xe8')]('err',_0x40f58f);}else{fs['unlinkSync'](_0x2918cf);}});});});}else{return _0x292b58[_0xc6b1('0x1c')](0xc8);}})[_0xc6b1('0x36')](handleError(_0x292b58,null));};
\ No newline at end of file
+var _0x6548=['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.*','Contact.firstName','c.lastName','Contact.email','c.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','push','all','rows','include','options','create','update','params','describe','addMessage','WhatsappMessage','ids','findOne','filter','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','findAll','addTags','setTags','spread','removeTags','download','unix','files','tmp','join','root','server','attachments','fullname','CmContact','firstName','lastName','Attachment','Messages','createdAt','direction','secret','Account','get','mkdirSync','closed','closedAt','basename','pipe','createWriteStream','System','out','views','transcript-','.pdf','Whatsapp','createPdfFromHTML','log','err','unlinkSync','eml-format','fast-json-patch','request-promise','moment','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','socket.io-emitter','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','destroy','stack','name','send','Users','map','Tags','TagIds','forEach','catch','WhatsappInteraction','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','field','color','from','tools_tags','select','u.id','u.fullname','ui.WhatsappInteractionId','users','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','search','conditions','find','unreadMessages','value','having','`\x20=\x200','`\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','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?','UserId','body','keys','some','compact','isEmpty','WhatsappAccountId','concat','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','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?','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','order','DESC','t.id\x20IN\x20?','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','role','agent','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','user','toString','sequelize','merge','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition'];(function(_0x17afb3,_0x2595b0){var _0x5a9960=function(_0x559b0e){while(--_0x559b0e){_0x17afb3['push'](_0x17afb3['shift']());}};_0x5a9960(++_0x2595b0);}(_0x6548,0x133));var _0x8654=function(_0x567796,_0x460632){_0x567796=_0x567796-0x0;var _0x499a02=_0x6548[_0x567796];return _0x499a02;};'use strict';var emlformat=require(_0x8654('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x8654('0x1'));var rp=require(_0x8654('0x2'));var moment=require(_0x8654('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x8654('0x4'));var sox=require('sox');var csv=require(_0x8654('0x5'));var ejs=require(_0x8654('0x6'));var fs=require('fs');var fs_extra=require(_0x8654('0x7'));var _=require(_0x8654('0x8'));var squel=require(_0x8654('0x9'));var crypto=require(_0x8654('0xa'));var jsforce=require(_0x8654('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x8654('0x5'));var querystring=require(_0x8654('0xc'));var Papa=require('papaparse');var Redis=require(_0x8654('0xd'));var authService=require(_0x8654('0xe'));var qs=require(_0x8654('0xf'));var as=require('../../components/parsers/advancedSearch');var pdf=require('../../components/export/pdf');var hardwareService=require(_0x8654('0x10'));var logger=require(_0x8654('0x11'))(_0x8654('0x12'));var utils=require(_0x8654('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x8654('0x14'));var db=require(_0x8654('0x15'))['db'];config[_0x8654('0x16')]=_['defaults'](config[_0x8654('0x16')],{'host':'localhost','port':0x18eb});var socket=require(_0x8654('0x17'))(new Redis(config[_0x8654('0x16')]));require('./whatsappInteraction.socket')['register'](socket);function respondWithStatusCode(_0x4e29db,_0x41282f){_0x41282f=_0x41282f||0xcc;return function(_0x24bec4){if(_0x24bec4){return _0x4e29db[_0x8654('0x18')](_0x41282f);}return _0x4e29db[_0x8654('0x19')](_0x41282f)[_0x8654('0x1a')]();};}function respondWithResult(_0x60c88e,_0xe3fa2c){_0xe3fa2c=_0xe3fa2c||0xc8;return function(_0x3b0dff){if(_0x3b0dff){return _0x60c88e[_0x8654('0x19')](_0xe3fa2c)[_0x8654('0x1b')](_0x3b0dff);}};}function respondWithFilteredResult(_0x17a0da,_0x3c4652){return function(_0x3b3040){if(_0x3b3040){var _0x88cbe4=typeof _0x3c4652[_0x8654('0x1c')]===_0x8654('0x1d')&&typeof _0x3c4652['limit']===_0x8654('0x1d');var _0x892873=_0x3b3040[_0x8654('0x1e')];var _0x538ed8=_0x88cbe4?0x0:_0x3c4652[_0x8654('0x1c')];var _0x550b56=_0x88cbe4?_0x3b3040[_0x8654('0x1e')]:_0x3c4652[_0x8654('0x1c')]+_0x3c4652[_0x8654('0x1f')];var _0x195dca;if(_0x550b56>=_0x892873){_0x550b56=_0x892873;_0x195dca=0xc8;}else{_0x195dca=0xce;}_0x17a0da[_0x8654('0x19')](_0x195dca);return _0x17a0da[_0x8654('0x20')](_0x8654('0x21'),_0x538ed8+'-'+_0x550b56+'/'+_0x892873)[_0x8654('0x1b')](_0x3b3040);}return null;};}function patchUpdates(_0xb4edfc){return function(_0x4ad7cc){try{jsonpatch[_0x8654('0x22')](_0x4ad7cc,_0xb4edfc,!![]);}catch(_0x77dae8){return BPromise[_0x8654('0x23')](_0x77dae8);}return _0x4ad7cc[_0x8654('0x24')]();};}function saveUpdates(_0x4a81b5,_0x28e3da){return function(_0x46de8a){if(_0x46de8a){return _0x46de8a['update'](_0x4a81b5)[_0x8654('0x25')](function(_0x2ab3a8){return _0x2ab3a8;});}return null;};}function removeEntity(_0x30cee6,_0x13543b){return function(_0x44a58b){if(_0x44a58b){return _0x44a58b[_0x8654('0x26')]()[_0x8654('0x25')](function(){_0x30cee6[_0x8654('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xc16b38,_0x4faa19){return function(_0x394391){if(!_0x394391){_0xc16b38[_0x8654('0x18')](0x194);}return _0x394391;};}function handleError(_0x245ea0,_0x28ad98){_0x28ad98=_0x28ad98||0x1f4;return function(_0x4694c3){logger['error'](_0x4694c3[_0x8654('0x27')]);if(_0x4694c3[_0x8654('0x28')]){delete _0x4694c3[_0x8654('0x28')];}_0x245ea0[_0x8654('0x19')](_0x28ad98)[_0x8654('0x29')](_0x4694c3);};}function getInteractionUsers(_0x33a24a,_0x4d4707){return new BPromise(function(_0x420b30,_0x434c2f){try{if(_0x4d4707[_0x33a24a['id']]){_0x33a24a[_0x8654('0x2a')]=_[_0x8654('0x2b')](_0x4d4707[_0x33a24a['id']],function(_0x3e79ed){return{'id':_0x3e79ed['id'],'fullname':_0x3e79ed['fullname']};});}}catch(_0x33528e){_0x434c2f(_0x33528e);}_0x420b30(_0x33a24a);});}function getInteractionTags(_0x711582,_0x5b89f8){return new BPromise(function(_0x436c53,_0x255244){try{if(_0x711582['TagIds']){_0x711582[_0x8654('0x2c')]=[];_0x711582[_0x8654('0x2d')]['split'](',')[_0x8654('0x2e')](function(_0x442864){_0x711582[_0x8654('0x2c')]['push'](_0x5b89f8[_0x442864]);});}delete _0x711582[_0x8654('0x2d')];}catch(_0x364b3b){_0x255244(_0x364b3b);}_0x436c53(_0x711582);});}function updateWhatsappInteraction(_0x334385,_0x35d5d3,_0x1884c9){return new BPromise(function(_0x2f5615,_0x42ffa5){return getInteractionUsers(_0x334385,_0x1884c9)[_0x8654('0x25')](function(_0x4ded78){return getInteractionTags(_0x4ded78,_0x35d5d3);})[_0x8654('0x25')](function(_0x1e57d5){_0x2f5615(_0x1e57d5);})[_0x8654('0x2f')](function(_0x5a080e){_0x42ffa5(_0x5a080e);});});}exports['index']=function(_0x114fd5,_0x210f1e){var _0x129e29={},_0x5403ca={},_0x26b9ff={'count':0x0,'rows':[]};var _0x218c7a=_['map'](db[_0x8654('0x30')][_0x8654('0x31')],function(_0x2322cd){return{'name':_0x2322cd[_0x8654('0x32')],'type':_0x2322cd[_0x8654('0x33')][_0x8654('0x34')]};});_0x5403ca[_0x8654('0x35')]=_[_0x8654('0x2b')](_0x218c7a,_0x8654('0x28'));_0x5403ca['query']=_['keys'](_0x114fd5[_0x8654('0x36')]);_0x5403ca[_0x8654('0x37')]=_[_0x8654('0x38')](_0x5403ca['model'],_0x5403ca['query']);_0x129e29[_0x8654('0x39')]=_['intersection'](_0x5403ca['model'],qs[_0x8654('0x3a')](_0x114fd5['query']['fields']));_0x129e29[_0x8654('0x39')]=_0x129e29[_0x8654('0x39')][_0x8654('0x3b')]?_0x129e29[_0x8654('0x39')]:_0x5403ca[_0x8654('0x35')];if(!_0x114fd5[_0x8654('0x36')][_0x8654('0x3c')](_0x8654('0x3d'))){_0x129e29[_0x8654('0x1f')]=qs[_0x8654('0x1f')](_0x114fd5[_0x8654('0x36')][_0x8654('0x1f')]);_0x129e29[_0x8654('0x1c')]=qs[_0x8654('0x1c')](_0x114fd5[_0x8654('0x36')][_0x8654('0x1c')]);}_0x129e29['order']=qs[_0x8654('0x3e')](_0x114fd5[_0x8654('0x36')][_0x8654('0x3e')]);_0x129e29[_0x8654('0x3f')]=qs[_0x8654('0x37')](_[_0x8654('0x40')](_0x114fd5['query'],_0x5403ca['filters']),_0x218c7a);var _0x25bf30=[];var _0x215b2c=squel['select']()[_0x8654('0x41')]('id')['field']('name')['field'](_0x8654('0x42'))[_0x8654('0x43')](_0x8654('0x44'));var _0x110c72=squel[_0x8654('0x45')]()[_0x8654('0x41')](_0x8654('0x46'))[_0x8654('0x41')](_0x8654('0x47'))[_0x8654('0x41')](_0x8654('0x48'))[_0x8654('0x43')]('user_has_whatsapp_interactions','ui')['left_join'](_0x8654('0x49'),'u','u.id\x20=\x20ui.UserId');var _0x59d327=squel[_0x8654('0x45')]()[_0x8654('0x43')]('whatsapp_interactions','i')[_0x8654('0x4a')](_0x8654('0x4b'),'c',_0x8654('0x4c'))[_0x8654('0x4a')]('users','o',_0x8654('0x4d'))['left_join']('whatsapp_accounts','a','a.id\x20=\x20i.WhatsappAccountId')[_0x8654('0x4a')]('whatsapp_messages','me',_0x8654('0x4e'))[_0x8654('0x4a')](_0x8654('0x4f'),'it',_0x8654('0x50'))[_0x8654('0x4a')](_0x8654('0x44'),'t',_0x8654('0x51'));var _0xdd2a4a=squel[_0x8654('0x52')]();var _0x863108=[];var _0x30c097=squel['expr']();var _0x5bedac;if(_0x114fd5[_0x8654('0x36')]['search']){_0x5bedac=as[_0x8654('0x53')](_0x114fd5[_0x8654('0x36')][_0x8654('0x54')]);var _0x31deea=_0x5bedac['sqlOperator'];for(var _0x3e4df9=0x0;_0x3e4df9<_0x5bedac[_0x8654('0x55')][_0x8654('0x3b')];_0x3e4df9++){var _0x3566d7=_0x5bedac['conditions'][_0x3e4df9];var _0x11bfca='i';var _0x3dd4bf=_[_0x8654('0x56')](_0x218c7a,[_0x8654('0x28'),_0x3566d7[_0x8654('0x41')]]);if(!_0x3dd4bf){switch(_0x3566d7[_0x8654('0x41')]){case _0x8654('0x57'):if(_0x3566d7[_0x8654('0x58')]==0x1){_0x59d327[_0x8654('0x59')]('`'+_0x3566d7['field']+_0x8654('0x5a'));}else{_0x59d327[_0x8654('0x59')]('`'+_0x3566d7[_0x8654('0x41')]+_0x8654('0x5b'));}break;case _0x8654('0x5c'):if(_0x3566d7[_0x8654('0x5d')]===_0x8654('0x5e')){if(_0x3566d7[_0x8654('0x58')][_0x8654('0x5f')]('\x20')[_0x8654('0x3b')]>0x1){_0xdd2a4a[_0x31deea](_0x8654('0x60'),qs[_0x8654('0x61')](_0x3566d7['value']),null);}else{var _0x34aef8='%'+_0x3566d7[_0x8654('0x58')]+'%';_0xdd2a4a[_0x31deea]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x34aef8,_0x34aef8,_0x34aef8);}}else{_0x3dd4bf=_[_0x8654('0x56')](_0x218c7a,[_0x8654('0x28'),_0x8654('0x62')]);_0x3566d7[_0x8654('0x41')]='ContactId';_0x58f785=as[_0x8654('0x63')](_0x11bfca,_0x3dd4bf[_0x8654('0x33')],_0x3566d7);_0xdd2a4a[_0x31deea](_0x58f785[_0x8654('0x64')],_0x58f785[_0x8654('0x58')][_0x8654('0x65')],_0x58f785['value'][_0x8654('0x1a')]);}break;case _0x8654('0x66'):var _0x51959d=_0x3566d7[_0x8654('0x58')][_0x8654('0x5f')](',')[_0x8654('0x2b')](function(_0x537e55){return Number(_0x537e55);});_0x51959d[_0x8654('0x2e')](function(_0x295af6){_0x30c097['or'](_0x8654('0x67'),'%,'+_0x295af6+',%');});_0x863108=_[_0x8654('0x68')](_0x863108,_0x51959d);break;case _0x8654('0x69'):if(_0x3566d7['operator']===_0x8654('0x5e')){_0xdd2a4a[_0x31deea](_0x8654('0x6a'),'%'+_0x3566d7[_0x8654('0x58')]+'%',null);}else{_0x3dd4bf=_[_0x8654('0x56')](_0x218c7a,[_0x8654('0x28'),_0x8654('0x6b')]);_0x3566d7['field']='UserId';_0x58f785=as['buildExpression'](_0x11bfca,_0x3dd4bf[_0x8654('0x33')],_0x3566d7);_0xdd2a4a[_0x31deea](_0x58f785[_0x8654('0x64')],_0x58f785[_0x8654('0x58')][_0x8654('0x65')],_0x58f785[_0x8654('0x58')][_0x8654('0x1a')]);}break;case _0x8654('0x6c'):_0x58f785=as[_0x8654('0x63')]('me',null,_0x3566d7);_0xdd2a4a[_0x31deea](_0x58f785[_0x8654('0x64')],_0x58f785['value']['start'],_0x58f785[_0x8654('0x58')][_0x8654('0x1a')]);break;}}else{var _0x58f785=as[_0x8654('0x63')](_0x11bfca,_0x3dd4bf[_0x8654('0x33')],_0x3566d7);_0xdd2a4a[_0x31deea](_0x58f785[_0x8654('0x64')],_0x58f785[_0x8654('0x58')]['start'],_0x58f785['value'][_0x8654('0x1a')]);}}}else{var _0xb9826d=_(_0x114fd5[_0x8654('0x36')])[_0x8654('0x6d')]()[_0x8654('0x2b')](function(_0x570a3b){return _[_0x8654('0x6e')](_0x218c7a,[_0x8654('0x28'),_0x570a3b])?_0x570a3b:undefined;})[_0x8654('0x6f')]()['value']();if(!_[_0x8654('0x70')](_0xb9826d)){_0xb9826d['forEach'](function(_0x3a8c9b){if(_0x3a8c9b===_0x8654('0x71')){_0x59d327[_0x8654('0x3f')]('i.WhatsappAccountId\x20IN\x20?',[][_0x8654('0x72')](_0x114fd5[_0x8654('0x36')][_0x3a8c9b]));}else if(_0x3a8c9b==='createdAt'){var _0x3fb460=JSON[_0x8654('0x73')](_0x114fd5[_0x8654('0x36')][_0x3a8c9b])[_0x8654('0x74')];var _0x3a3690=JSON[_0x8654('0x73')](_0x114fd5['query'][_0x3a8c9b])[_0x8654('0x75')];_0x59d327[_0x8654('0x3f')](_0x8654('0x76'),_0x3fb460,_0x3a3690);}else{if(_0x114fd5[_0x8654('0x36')][_0x3a8c9b]===_0x8654('0x77')){_0x59d327['where']('i.'+_0x3a8c9b+_0x8654('0x78'));}else{_0x59d327[_0x8654('0x3f')]('i.'+_0x3a8c9b+_0x8654('0x79'),_0x114fd5[_0x8654('0x36')][_0x3a8c9b]);}}});}if(_0x114fd5[_0x8654('0x36')][_0x8654('0x7a')]){if(_0x114fd5[_0x8654('0x36')][_0x8654('0x7a')]==0x1){_0x59d327['having'](_0x8654('0x7b'));}else{_0x59d327[_0x8654('0x59')](_0x8654('0x7c'));}}if(_0x114fd5[_0x8654('0x36')]['tag']){_0x863108=_[_0x8654('0x7d')](_0x114fd5[_0x8654('0x36')]['tag'])?_0x114fd5['query'][_0x8654('0x7e')]:new Array(_0x114fd5[_0x8654('0x36')]['tag']);_0x863108[_0x8654('0x2e')](function(_0x559137){_0x30c097['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x559137+',%');});}if(_0x114fd5['query']['filter']){var _0x39f6ae=_0x114fd5[_0x8654('0x36')]['filter'][_0x8654('0x7f')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x8654('0x80')](_0x39f6ae)){_0xdd2a4a['or'](_0x8654('0x81'),_0x39f6ae+'%')['or'](_0x8654('0x82'),_0x39f6ae+'%');}else{_0xdd2a4a['or'](_0x8654('0x83'),qs['getFullTextValue'](_0x39f6ae))['or'](_0x8654('0x84'),_0x39f6ae+'%');}}}_0x59d327['where'](_0xdd2a4a);_0x59d327[_0x8654('0x85')](_0x8654('0x86'));var _0x24f9d8={'type':db[_0x8654('0x87')][_0x8654('0x88')][_0x8654('0x89')],'raw':!![]};var _0x48fbff=_0x59d327[_0x8654('0x8a')]();_0x48fbff['field'](_0x8654('0x86'));_0x48fbff['field'](_0x8654('0x8b'),'unreadMessages');if(_0x129e29['order']){_0x129e29['order'][_0x8654('0x2e')](function(_0x389aa5){var _0x3ca989=_0x389aa5[0x0]===_0x8654('0x8c')?_0x389aa5[0x0]:'i.'+_0x389aa5[0x0];_0x59d327[_0x8654('0x8d')](_0x3ca989,_0x389aa5[0x1]===_0x8654('0x8e')?![]:!![]);});}if(!_[_0x8654('0x70')](_0x863108)){_0x59d327[_0x8654('0x59')](_0x30c097);_0x48fbff[_0x8654('0x3f')](_0x8654('0x8f'),_0x863108);}BPromise['resolve']()[_0x8654('0x25')](function(){if(!_0x5bedac){if(_0x114fd5[_0x8654('0x36')][_0x8654('0x71')])return;_0x48fbff[_0x8654('0x3f')](_0x8654('0x90'));_0x59d327[_0x8654('0x3f')](_0x8654('0x90'));return;}if(_0x114fd5['user'][_0x8654('0x91')]!==_0x8654('0x92'))return;return _0x114fd5['user'][_0x8654('0x93')]({'attributes':['id'],'raw':!![]})[_0x8654('0x25')](function(_0x5518b2){if(_['isEmpty'](_0x5518b2)){_0x48fbff[_0x8654('0x3f')](_0x8654('0x94'));_0x59d327[_0x8654('0x3f')]('i.WhatsappAccountId\x20IS\x20NULL');}else{_0x48fbff[_0x8654('0x3f')]('i.WhatsappAccountId\x20IN\x20?',_['map'](_0x5518b2,'id'));_0x59d327[_0x8654('0x3f')]('i.WhatsappAccountId\x20IN\x20?',_[_0x8654('0x2b')](_0x5518b2,'id'));}});})[_0x8654('0x25')](function(){if(_0x114fd5[_0x8654('0x95')][_0x8654('0x91')]===_0x8654('0x92')&&!_0x5bedac&&!_0x114fd5['query'][_0x8654('0x71')])return[];return db['sequelize'][_0x8654('0x36')](_0x48fbff[_0x8654('0x96')](),_0x24f9d8);})[_0x8654('0x25')](function(_0x2264d0){_0x26b9ff[_0x8654('0x1e')]=_0x2264d0[_0x8654('0x3b')];if(_0x26b9ff[_0x8654('0x1e')]===0x0)return[];return db[_0x8654('0x97')][_0x8654('0x36')](_0x215b2c['toString'](),_0x24f9d8)[_0x8654('0x25')](function(_0xa5d4cd){_0x25bf30=_['keyBy'](_0xa5d4cd,'id');_0x24f9d8=_[_0x8654('0x98')](_0x24f9d8,{'model':db['WhatsappInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x114fd5[_0x8654('0x36')][_0x8654('0x3a')]){_0x129e29[_0x8654('0x39')][_0x8654('0x2e')](function(_0x33646b){_0x59d327[_0x8654('0x41')]('i.'+_0x33646b);});}else{_0x59d327[_0x8654('0x41')](_0x8654('0x8b'),_0x8654('0x57'));_0x59d327[_0x8654('0x41')](_0x8654('0x99'),_0x8654('0x9a'));_0x59d327['field'](_0x8654('0x9b'),_0x8654('0x9c'));_0x59d327['field'](_0x8654('0x9d'),_0x8654('0x8c'));_0x59d327[_0x8654('0x41')](_0x8654('0x9e'));_0x59d327[_0x8654('0x41')]('c.firstName',_0x8654('0x9f'));_0x59d327[_0x8654('0x41')](_0x8654('0xa0'),'Contact.lastName');_0x59d327[_0x8654('0x41')]('c.email',_0x8654('0xa1'));_0x59d327[_0x8654('0x41')](_0x8654('0xa2'),'Contact.phone');_0x59d327[_0x8654('0x41')](_0x8654('0xa3'),_0x8654('0xa4'));_0x59d327[_0x8654('0x41')](_0x8654('0xa5'),_0x8654('0xa6'));_0x59d327[_0x8654('0x41')](_0x8654('0xa7'),_0x8654('0xa8'));_0x59d327['field'](_0x8654('0xa9'),_0x8654('0xaa'));_0x59d327[_0x8654('0x41')](_0x8654('0xab'),_0x8654('0x2d'));}if(_0x129e29[_0x8654('0x1f')])_0x59d327['limit'](_0x129e29[_0x8654('0x1f')]);if(_0x129e29[_0x8654('0x1c')])_0x59d327[_0x8654('0x1c')](_0x129e29[_0x8654('0x1c')]);return db['sequelize'][_0x8654('0x36')](_0x59d327[_0x8654('0x96')](),_0x24f9d8);})[_0x8654('0x25')](function(_0x503db1){if(_0x503db1[_0x8654('0x3b')]>0x0)_0x110c72[_0x8654('0x3f')](_0x8654('0xac'),_[_0x8654('0x2b')](_0x503db1,'id'));return db[_0x8654('0x97')][_0x8654('0x36')](_0x110c72['toString'](),_0x24f9d8)[_0x8654('0x25')](function(_0x332f23){var _0x339a5c=_[_0x8654('0xad')](_0x332f23,_0x8654('0xae'));var _0x2c1328=[];_0x503db1[_0x8654('0x2e')](function(_0x1010ad){_0x2c1328[_0x8654('0xaf')](updateWhatsappInteraction(_0x1010ad,_0x25bf30,_0x339a5c));});return BPromise[_0x8654('0xb0')](_0x2c1328);});});})[_0x8654('0x25')](function(_0x59e327){_0x26b9ff[_0x8654('0xb1')]=_0x59e327;return _0x26b9ff;})[_0x8654('0x25')](respondWithFilteredResult(_0x210f1e,_0x129e29))[_0x8654('0x2f')](handleError(_0x210f1e,null));};exports['show']=function(_0x6a473b,_0x44cba3){var _0x54dafb={'raw':![],'where':{'id':_0x6a473b['params']['id']}},_0x565bac={};_0x565bac['model']=_['keys'](db[_0x8654('0x30')]['rawAttributes']);_0x565bac['query']=_[_0x8654('0x6d')](_0x6a473b['query']);_0x565bac[_0x8654('0x37')]=_['intersection'](_0x565bac[_0x8654('0x35')],_0x565bac[_0x8654('0x36')]);_0x54dafb[_0x8654('0x39')]=_['intersection'](_0x565bac[_0x8654('0x35')],qs[_0x8654('0x3a')](_0x6a473b['query'][_0x8654('0x3a')]));_0x54dafb[_0x8654('0x39')]=_0x54dafb[_0x8654('0x39')]['length']?_0x54dafb['attributes']:_0x565bac[_0x8654('0x35')];if(_0x6a473b[_0x8654('0x36')]['includeAll']){_0x54dafb[_0x8654('0xb2')]=[{'all':!![]}];}_0x54dafb=_[_0x8654('0x98')]({},_0x54dafb,_0x6a473b[_0x8654('0xb3')]);return db[_0x8654('0x30')][_0x8654('0x56')](_0x54dafb)['then'](handleEntityNotFound(_0x44cba3,null))[_0x8654('0x25')](respondWithResult(_0x44cba3,null))['catch'](handleError(_0x44cba3,null));};exports[_0x8654('0xb4')]=function(_0x322203,_0x1e731a){return db['WhatsappInteraction'][_0x8654('0xb4')](_0x322203[_0x8654('0x6c')],{})[_0x8654('0x25')](respondWithResult(_0x1e731a,0xc9))[_0x8654('0x2f')](handleError(_0x1e731a,null));};exports[_0x8654('0xb5')]=function(_0x5e44d0,_0x489a65){if(_0x5e44d0[_0x8654('0x6c')]['id']){delete _0x5e44d0['body']['id'];}return db[_0x8654('0x30')][_0x8654('0x56')]({'where':{'id':_0x5e44d0[_0x8654('0xb6')]['id']}})[_0x8654('0x25')](handleEntityNotFound(_0x489a65,null))[_0x8654('0x25')](saveUpdates(_0x5e44d0[_0x8654('0x6c')],null))[_0x8654('0x25')](respondWithResult(_0x489a65,null))[_0x8654('0x2f')](handleError(_0x489a65,null));};exports[_0x8654('0x26')]=function(_0x3943d5,_0x17a6e2){return db[_0x8654('0x30')][_0x8654('0x56')]({'where':{'id':_0x3943d5[_0x8654('0xb6')]['id']}})['then'](handleEntityNotFound(_0x17a6e2,null))[_0x8654('0x25')](removeEntity(_0x17a6e2,null))['catch'](handleError(_0x17a6e2,null));};exports[_0x8654('0xb7')]=function(_0x4da233,_0x26dbaf){return db['WhatsappInteraction']['describe']()['then'](respondWithResult(_0x26dbaf,null))[_0x8654('0x2f')](handleError(_0x26dbaf,null));};exports[_0x8654('0xb8')]=function(_0x33b3c4,_0x45f403,_0x2b4444){return db[_0x8654('0xb9')][_0x8654('0x56')]({'where':{'id':_0x33b3c4['params']['id']}})[_0x8654('0x25')](handleEntityNotFound(_0x45f403,null))[_0x8654('0x25')](function(_0x1fb26f){if(_0x1fb26f){return _0x1fb26f['addMessage'](_0x33b3c4[_0x8654('0x6c')]['ids'],_['omit'](_0x33b3c4[_0x8654('0x6c')],[_0x8654('0xba'),'id'])||{});}})[_0x8654('0x25')](respondWithResult(_0x45f403,null))[_0x8654('0x2f')](handleError(_0x45f403,null));};exports['getMessages']=function(_0x3d700e,_0x3aad1a,_0x344f34){var _0x236008={'raw':![],'where':{}};var _0x227b2c={};var _0x223762={'count':0x0,'rows':[]};return db[_0x8654('0x30')][_0x8654('0xbb')]({'where':{'id':_0x3d700e[_0x8654('0xb6')]['id']}})[_0x8654('0x25')](handleEntityNotFound(_0x3aad1a,null))[_0x8654('0x25')](function(_0x37b21c){if(_0x37b21c){_0x227b2c[_0x8654('0x35')]=_[_0x8654('0x6d')](db[_0x8654('0xb9')][_0x8654('0x31')]);_0x227b2c[_0x8654('0x36')]=_['keys'](_0x3d700e['query']);_0x227b2c['filters']=_['intersection'](_0x227b2c[_0x8654('0x35')],_0x227b2c[_0x8654('0x36')]);_0x236008[_0x8654('0x39')]=_[_0x8654('0x38')](_0x227b2c[_0x8654('0x35')],qs['fields'](_0x3d700e[_0x8654('0x36')][_0x8654('0x3a')]));_0x236008[_0x8654('0x39')]=_0x236008[_0x8654('0x39')]['length']?_0x236008[_0x8654('0x39')]:_0x227b2c['model'];if(!_0x3d700e[_0x8654('0x36')][_0x8654('0x3c')](_0x8654('0x3d'))){_0x236008['limit']=qs['limit'](_0x3d700e['query']['limit']);_0x236008[_0x8654('0x1c')]=qs[_0x8654('0x1c')](_0x3d700e[_0x8654('0x36')][_0x8654('0x1c')]);}_0x236008[_0x8654('0x8d')]=qs['sort'](_0x3d700e[_0x8654('0x36')][_0x8654('0x3e')]);_0x236008[_0x8654('0x3f')]=qs['filters'](_[_0x8654('0x40')](_0x3d700e[_0x8654('0x36')],_0x227b2c['filters']));_0x236008[_0x8654('0x3f')][_0x8654('0xae')]=_0x37b21c['id'];if(_0x3d700e[_0x8654('0x36')][_0x8654('0xbc')]){_0x236008[_0x8654('0x3f')]=_[_0x8654('0x98')](_0x236008[_0x8654('0x3f')],{'$or':_[_0x8654('0x2b')](_0x236008['attributes'],function(_0x1d3e68){var _0x16d5f2={};_0x16d5f2[_0x1d3e68]={'$like':'%'+_0x3d700e[_0x8654('0x36')][_0x8654('0xbc')]+'%'};return _0x16d5f2;})});}if(_0x3d700e[_0x8654('0x36')][_0x8654('0x74')]){var _0x247720=_0x3d700e['query']['$gte']['split'](',');var _0x1f6f66={};_0x1f6f66[_0x247720[0x0]]={'$gte':moment(_0x247720[0x1])[_0x8654('0xbd')](_0x8654('0xbe'))};_0x236008[_0x8654('0x3f')]=_[_0x8654('0x98')](_0x236008[_0x8654('0x3f')],_0x1f6f66);}_0x236008=_[_0x8654('0x98')]({},_0x236008,_0x3d700e[_0x8654('0xb3')]);return db[_0x8654('0xb9')][_0x8654('0x1e')]({'where':_0x236008[_0x8654('0x3f')]})['then'](function(_0x1a216a){_0x223762[_0x8654('0x1e')]=_0x1a216a;if(_0x3d700e['query'][_0x8654('0xbf')]){_0x236008[_0x8654('0xb2')]=[{'all':!![]}];}return db[_0x8654('0xb9')][_0x8654('0xc0')](_0x236008);})[_0x8654('0x25')](function(_0x2414bc){_0x223762[_0x8654('0xb1')]=_0x2414bc;return _0x223762;});}})[_0x8654('0x25')](respondWithFilteredResult(_0x3aad1a,_0x236008))['catch'](handleError(_0x3aad1a,null));};exports[_0x8654('0xc1')]=function(_0x4b150a,_0x1689ad,_0x554908){return db[_0x8654('0x30')]['find']({'where':{'id':_0x4b150a['params']['id']}})[_0x8654('0x25')](handleEntityNotFound(_0x1689ad,null))['then'](function(_0x26ebde){if(_0x26ebde){return _0x26ebde[_0x8654('0xc2')](_0x4b150a['body'][_0x8654('0xba')],_['omit'](_0x4b150a[_0x8654('0x6c')],[_0x8654('0xba'),'id'])||{})[_0x8654('0xc3')](function(){return db[_0x8654('0x66')]['findAll']({'attributes':['id',_0x8654('0x28'),_0x8654('0x42')],'where':{'id':_0x4b150a['body']['ids']}});})['then'](function(_0x14559e){socket['emit']('whatsappInteractionTags:save',{'id':Number(_0x4b150a[_0x8654('0xb6')]['id']),'tags':_0x14559e||[]});return{'id':Number(_0x4b150a['params']['id']),'tags':_0x14559e||[]};});}})[_0x8654('0x25')](respondWithResult(_0x1689ad,null))[_0x8654('0x2f')](handleError(_0x1689ad,null));};exports[_0x8654('0xc4')]=function(_0x4d6174,_0x51d66a,_0x10618e){return db[_0x8654('0x30')][_0x8654('0x56')]({'where':{'id':_0x4d6174[_0x8654('0xb6')]['id']}})['then'](handleEntityNotFound(_0x51d66a,null))['then'](function(_0x2f05ea){if(_0x2f05ea){return _0x2f05ea[_0x8654('0xc4')](_0x4d6174[_0x8654('0x36')][_0x8654('0xba')]);}})['then'](respondWithStatusCode(_0x51d66a,null))[_0x8654('0x2f')](handleError(_0x51d66a,null));};exports[_0x8654('0xc5')]=function(_0x3d8008,_0xc573d0){var _0x2f9d69=moment()[_0x8654('0xc6')]()['toString']();var _0x1a43a8=path['join'](config['root'],'server',_0x8654('0xc7'),_0x8654('0xc8'));var _0x444bfe=path[_0x8654('0xc9')](config[_0x8654('0xca')],_0x8654('0xcb'),_0x8654('0xc7'),_0x8654('0xcc'));var _0x1b0fd2=path['join'](_0x1a43a8,_0x2f9d69);var _0x159ba8=util[_0x8654('0xbd')]('transcript-%d-%s.zip',_0x3d8008[_0x8654('0xb6')]['id'],_0x2f9d69);var _0x3cb5fa=path[_0x8654('0xc9')](_0x1a43a8,_0x159ba8);var _0x23342f=[];_0x23342f[_0x8654('0xaf')]({'model':db[_0x8654('0x69')],'as':_0x8654('0x69'),'attributes':['id',_0x8654('0xcd')],'raw':!![]});_0x23342f[_0x8654('0xaf')]({'model':db[_0x8654('0xce')],'as':'Contact','attributes':['id',_0x8654('0xcf'),_0x8654('0xd0')],'raw':!![]});if(_0x3d8008[_0x8654('0x36')][_0x8654('0xcc')]){_0x23342f[_0x8654('0xaf')]({'model':db[_0x8654('0xd1')],'as':'Attachment','raw':!![]});}var _0x1b1c9d=[{'model':db[_0x8654('0xb9')],'as':_0x8654('0xd2'),'attributes':['id',_0x8654('0x6c'),_0x8654('0xd3'),_0x8654('0xd4'),_0x8654('0xd5'),_0x8654('0x7a')],'include':_0x23342f}];_0x1b1c9d[_0x8654('0xaf')]({'model':db['WhatsappAccount'],'as':_0x8654('0xd6'),'attributes':['id','name']});_0x1b1c9d['push']({'model':db[_0x8654('0x69')],'as':'Owner','attributes':['id',_0x8654('0xcd')]});return db['WhatsappInteraction'][_0x8654('0x56')]({'where':{'id':_0x3d8008[_0x8654('0xb6')]['id']},'include':_0x1b1c9d})[_0x8654('0x25')](handleEntityNotFound(_0xc573d0,null))[_0x8654('0x25')](function(_0x276c40){if(_0x276c40){var _0x5b7f13=_0x276c40[_0x8654('0xd7')]({'plain':!![]});fs[_0x8654('0xd8')](_0x1b0fd2);var _0x56d657={'channel':'Whatsapp','account':_0x5b7f13[_0x8654('0xd6')][_0x8654('0x28')],'agent':_0x5b7f13['Owner']?_0x5b7f13['Owner'][_0x8654('0xcd')]:'N.A.','createdAt':moment(_0x5b7f13['createdAt'])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x8654('0x96')](),'closedAt':_0x5b7f13[_0x8654('0xd9')]?moment(_0x5b7f13[_0x8654('0xda')])['format']('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x5b7f13['disposition'],'messages':_(_0x5b7f13['Messages'])['filter']({'secret':![]})[_0x8654('0x2b')](function(_0x59bbc0){if(_0x59bbc0[_0x8654('0xd1')]){var _0x19878f=path[_0x8654('0xc9')](_0x444bfe,_0x59bbc0[_0x8654('0xd1')][_0x8654('0xdb')]);if(fs['existsSync'](_0x19878f)){fs['createReadStream'](_0x19878f)[_0x8654('0xdc')](fs[_0x8654('0xdd')](path[_0x8654('0xc9')](_0x1b0fd2,_0x59bbc0[_0x8654('0xd1')][_0x8654('0xdb')])));}}return{'date':moment(_0x59bbc0[_0x8654('0xd3')])['format'](_0x8654('0xbe'))[_0x8654('0x96')](),'sender':_0x59bbc0[_0x8654('0xd4')]==='out'?_0x59bbc0[_0x8654('0x69')]?_0x59bbc0[_0x8654('0x69')][_0x8654('0xcd')]:_0x8654('0xde'):_0x59bbc0[_0x8654('0x5c')][_0x8654('0xcf')]+(_0x59bbc0[_0x8654('0x5c')][_0x8654('0xd0')]?'\x20'+_0x59bbc0[_0x8654('0x5c')]['lastName']:''),'body':_0x59bbc0[_0x8654('0xd1')]?_0x59bbc0[_0x8654('0xd1')][_0x8654('0xdb')]:_0x59bbc0[_0x8654('0x6c')],'direction':_0x59bbc0[_0x8654('0xd4')]===_0x8654('0xdf')?'A':'C','secret':_0x59bbc0[_0x8654('0xd5')],'read':_0x59bbc0['read'],'attachment':_0x59bbc0['Attachment']};})['value']()};return ejs['renderFile'](path[_0x8654('0xc9')](config[_0x8654('0xca')],'server',_0x8654('0xe0'),'downloadInteraction.ejs'),{'interaction':_0x56d657})[_0x8654('0x25')](function(_0xfbadb){var _0x466962=path['join'](_0x1b0fd2,_0x8654('0xe1')+_0x5b7f13['id']+'-'+_0x2f9d69+_0x8654('0xe2'));var _0x23d549={'path':_0x466962,'channel':_0x8654('0xe3'),'interactionId':_0x5b7f13['id']};return pdf[_0x8654('0xe4')](_0xfbadb,_0x23d549);})[_0x8654('0x25')](function(){return new BPromise(function(_0x10d1c5,_0x1345f6){zipdir(_0x1b0fd2,{'saveTo':_0x3cb5fa},function(_0x4eb1a1,_0x3f7513){if(_0x4eb1a1)return _0x1345f6(_0x4eb1a1);return _0x10d1c5(_0x3f7513);});})[_0x8654('0x25')](function(){return new BPromise(function(_0x4670a9,_0x4c499a){rimraf(_0x1b0fd2,function(_0x1ad3f4){if(_0x1ad3f4)_0x4c499a(_0x1ad3f4);return _0x4670a9();});});})[_0x8654('0x25')](function(){return _0xc573d0[_0x8654('0xc5')](_0x3cb5fa,_0x159ba8,function(_0x2eb437){if(_0x2eb437){console[_0x8654('0xe5')](_0x8654('0xe6'),_0x2eb437);}else{fs[_0x8654('0xe7')](_0x3cb5fa);}});});});}else{return _0xc573d0[_0x8654('0x18')](0xc8);}})[_0x8654('0x2f')](handleError(_0xc573d0,null));};
\ No newline at end of file
index da5d03f..0cdc010 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x983c=['catch','hasOwnProperty','hook','events','../../mysqldb','WhatsappInteraction','WhatsappMessage','save','update','remove','then','setDataValue','Users','unreadMessages','length','emit'];(function(_0x4e0359,_0x205155){var _0x450f0a=function(_0x2056c6){while(--_0x2056c6){_0x4e0359['push'](_0x4e0359['shift']());}};_0x450f0a(++_0x205155);}(_0x983c,0xf3));var _0xc983=function(_0x35e083,_0x2a67b7){_0x35e083=_0x35e083-0x0;var _0x4c1d88=_0x983c[_0x35e083];return _0x4c1d88;};'use strict';var EventEmitter=require(_0xc983('0x0'));var WhatsappInteraction=require(_0xc983('0x1'))['db'][_0xc983('0x2')];var WhatsappMessage=require(_0xc983('0x1'))['db'][_0xc983('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xc983('0x4'),'afterUpdate':_0xc983('0x5'),'afterDestroy':_0xc983('0x6')};function emitEvent(_0x2e8c5d){return function(_0xdaae44,_0x290ca8,_0x3897b9){_0xdaae44['getUsers']({'attributes':['id'],'raw':!![]})[_0xc983('0x7')](function(_0x363403){_0xdaae44[_0xc983('0x8')](_0xc983('0x9'),_0x363403['map'](function(_0x548063){return{'id':_0x548063['id']};}));return WhatsappMessage['findAll']({'where':{'WhatsappInteractionId':_0xdaae44['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x41255b){_0xdaae44[_0xc983('0x8')](_0xc983('0xa'),_0x41255b[_0xc983('0xb')]);WhatsappInteractionEvents[_0xc983('0xc')](_0x2e8c5d+':'+_0xdaae44['id'],_0xdaae44);WhatsappInteractionEvents[_0xc983('0xc')](_0x2e8c5d,_0xdaae44);_0x3897b9(null);})[_0xc983('0xd')](_0x3897b9(null));};}for(var e in events){if(events[_0xc983('0xe')](e)){var event=events[e];WhatsappInteraction[_0xc983('0xf')](e,emitEvent(event));}}module['exports']=WhatsappInteractionEvents;
\ No newline at end of file
+var _0xae60=['../../mysqldb','WhatsappInteraction','WhatsappMessage','setMaxListeners','save','remove','getUsers','then','setDataValue','Users','map','findAll','length','emit','catch','hasOwnProperty','hook','exports','events'];(function(_0x552fce,_0x3f24bc){var _0x3e27a2=function(_0xc91154){while(--_0xc91154){_0x552fce['push'](_0x552fce['shift']());}};_0x3e27a2(++_0x3f24bc);}(_0xae60,0x1c7));var _0x0ae6=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0xae60[_0x243b59];return _0x3e1676;};'use strict';var EventEmitter=require(_0x0ae6('0x0'));var WhatsappInteraction=require(_0x0ae6('0x1'))['db'][_0x0ae6('0x2')];var WhatsappMessage=require('../../mysqldb')['db'][_0x0ae6('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x0ae6('0x4')](0x0);var events={'afterCreate':_0x0ae6('0x5'),'afterUpdate':'update','afterDestroy':_0x0ae6('0x6')};function emitEvent(_0x470e83){return function(_0x47c9e0,_0xe0287b,_0x25ac7c){_0x47c9e0[_0x0ae6('0x7')]({'attributes':['id'],'raw':!![]})[_0x0ae6('0x8')](function(_0xbb596c){_0x47c9e0[_0x0ae6('0x9')](_0x0ae6('0xa'),_0xbb596c[_0x0ae6('0xb')](function(_0x4860f8){return{'id':_0x4860f8['id']};}));return WhatsappMessage[_0x0ae6('0xc')]({'where':{'WhatsappInteractionId':_0x47c9e0['id'],'direction':'in','read':![]},'raw':!![]});})[_0x0ae6('0x8')](function(_0x3a8b0e){_0x47c9e0[_0x0ae6('0x9')]('unreadMessages',_0x3a8b0e[_0x0ae6('0xd')]);WhatsappInteractionEvents[_0x0ae6('0xe')](_0x470e83+':'+_0x47c9e0['id'],_0x47c9e0);WhatsappInteractionEvents[_0x0ae6('0xe')](_0x470e83,_0x47c9e0);_0x25ac7c(null);})[_0x0ae6('0xf')](_0x25ac7c(null));};}for(var e in events){if(events[_0x0ae6('0x10')](e)){var event=events[e];WhatsappInteraction[_0x0ae6('0x11')](e,emitEvent(event));}}module[_0x0ae6('0x12')]=WhatsappInteractionEvents;
\ No newline at end of file
index 1e8ba7f..cd8177c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x731b=['request-promise','path','rimraf','./whatsappInteraction.attributes','exports','define','WhatsappInteraction','whatsapp_interactions','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','api','moment','bluebird'];(function(_0x13186c,_0x1eea24){var _0x45553b=function(_0x4aaadf){while(--_0x4aaadf){_0x13186c['push'](_0x13186c['shift']());}};_0x45553b(++_0x1eea24);}(_0x731b,0xf7));var _0xb731=function(_0x3aed7e,_0x3326c4){_0x3aed7e=_0x3aed7e-0x0;var _0x56a484=_0x731b[_0x3aed7e];return _0x56a484;};'use strict';var _=require(_0xb731('0x0'));var util=require(_0xb731('0x1'));var logger=require('../../config/logger')(_0xb731('0x2'));var moment=require(_0xb731('0x3'));var BPromise=require(_0xb731('0x4'));var rp=require(_0xb731('0x5'));var fs=require('fs');var path=require(_0xb731('0x6'));var rimraf=require(_0xb731('0x7'));var config=require('../../config/environment');var attributes=require(_0xb731('0x8'));module[_0xb731('0x9')]=function(_0x40b673,_0xd6b442){return _0x40b673[_0xb731('0xa')](_0xb731('0xb'),attributes,{'tableName':_0xb731('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x58b83c,_0x2ab04b,_0xfd6c16){if(_0x58b83c[_0xb731('0xd')](_0xb731('0xe'))){_0x58b83c[_0xb731('0xf')]=moment()[_0xb731('0x10')](_0xb731('0x11'));}_0xfd6c16(null,_0x58b83c);}}});};
\ No newline at end of file
+var _0x8ee8=['changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','api','moment','bluebird','request-promise','path','rimraf','./whatsappInteraction.attributes','WhatsappInteraction','whatsapp_interactions'];(function(_0x18ee49,_0x1cff4b){var _0x24b573=function(_0x3242ac){while(--_0x3242ac){_0x18ee49['push'](_0x18ee49['shift']());}};_0x24b573(++_0x1cff4b);}(_0x8ee8,0xe4));var _0x88ee=function(_0x2b29ab,_0x201845){_0x2b29ab=_0x2b29ab-0x0;var _0x16e64b=_0x8ee8[_0x2b29ab];return _0x16e64b;};'use strict';var _=require(_0x88ee('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x88ee('0x1'));var moment=require(_0x88ee('0x2'));var BPromise=require(_0x88ee('0x3'));var rp=require(_0x88ee('0x4'));var fs=require('fs');var path=require(_0x88ee('0x5'));var rimraf=require(_0x88ee('0x6'));var config=require('../../config/environment');var attributes=require(_0x88ee('0x7'));module['exports']=function(_0x1d4fb4,_0x8a7735){return _0x1d4fb4['define'](_0x88ee('0x8'),attributes,{'tableName':_0x88ee('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1a4026,_0x242083,_0x1ccd16){if(_0x1a4026[_0x88ee('0xa')]('closed')){_0x1a4026[_0x88ee('0xb')]=moment()[_0x88ee('0xc')](_0x88ee('0xd'));}_0x1ccd16(null,_0x1a4026);}}});};
\ No newline at end of file
index 60418dd..205e759 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa8c=['./whatsappInteraction.socket','register','request','then','info','WhatsappInteraction,\x20%s,\x20%s','WhatsappInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','UpdateWhatsappInteraction','body','options','where','attributes','limit','debug','catch','AddTagsToWhatsappInteraction','WhatsappInteraction','find','ids','AddTags','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xfa8c,0xe2));var _0xcfa8=function(_0x238ed2,_0x1e7e7f){_0x238ed2=_0x238ed2-0x0;var _0xd4d548=_0xfa8c[_0x238ed2];return _0xd4d548;};'use strict';var _=require(_0xcfa8('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xcfa8('0x1'));var rs=require(_0xcfa8('0x2'));var fs=require('fs');var Redis=require(_0xcfa8('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xcfa8('0x4'));var logger=require(_0xcfa8('0x5'))(_0xcfa8('0x6'));var config=require(_0xcfa8('0x7'));var jayson=require(_0xcfa8('0x8'));var client=jayson[_0xcfa8('0x9')][_0xcfa8('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0xcfa8('0xb')],{'host':_0xcfa8('0xc'),'port':0x18eb});var socket=require(_0xcfa8('0xd'))(new Redis(config[_0xcfa8('0xb')]));require(_0xcfa8('0xe'))[_0xcfa8('0xf')](socket);function respondWithRpcPromise(_0x52aa10,_0x16e988,_0x21bf4b){return new BPromise(function(_0x5707fa,_0x2b3e94){return client[_0xcfa8('0x10')](_0x52aa10,_0x21bf4b)[_0xcfa8('0x11')](function(_0x2ebced){logger[_0xcfa8('0x12')](_0xcfa8('0x13'),_0x16e988,'request\x20sent');logger['debug'](_0xcfa8('0x14'),_0x16e988,_0xcfa8('0x15'),JSON[_0xcfa8('0x16')](_0x2ebced));if(_0x2ebced[_0xcfa8('0x17')]){if(_0x2ebced['error'][_0xcfa8('0x18')]===0x1f4){logger[_0xcfa8('0x17')]('WhatsappInteraction,\x20%s,\x20%s',_0x16e988,_0x2ebced[_0xcfa8('0x17')]['message']);return _0x2b3e94(_0x2ebced[_0xcfa8('0x17')][_0xcfa8('0x19')]);}logger[_0xcfa8('0x17')](_0xcfa8('0x13'),_0x16e988,_0x2ebced[_0xcfa8('0x17')][_0xcfa8('0x19')]);return _0x5707fa(_0x2ebced[_0xcfa8('0x17')]['message']);}else{logger['info'](_0xcfa8('0x13'),_0x16e988,_0xcfa8('0x15'));_0x5707fa(_0x2ebced[_0xcfa8('0x1a')][_0xcfa8('0x19')]);}})['catch'](function(_0x5b9f8d){logger[_0xcfa8('0x17')](_0xcfa8('0x13'),_0x16e988,_0x5b9f8d);_0x2b3e94(_0x5b9f8d);});});}exports[_0xcfa8('0x1b')]=function(_0x1639f9){var _0x365edf=this;return new Promise(function(_0x39a918,_0x7cc4ef){return db['WhatsappInteraction']['update'](_0x1639f9[_0xcfa8('0x1c')],{'raw':_0x1639f9[_0xcfa8('0x1d')]?_0x1639f9[_0xcfa8('0x1d')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1639f9[_0xcfa8('0x1d')]?_0x1639f9[_0xcfa8('0x1d')][_0xcfa8('0x1e')]||null:null,'attributes':_0x1639f9['options']?_0x1639f9[_0xcfa8('0x1d')][_0xcfa8('0x1f')]||null:null,'limit':_0x1639f9[_0xcfa8('0x1d')]?_0x1639f9[_0xcfa8('0x1d')][_0xcfa8('0x20')]||null:null})[_0xcfa8('0x11')](function(_0x3fa59a){logger[_0xcfa8('0x12')]('UpdateWhatsappInteraction',_0x1639f9);logger[_0xcfa8('0x21')](_0xcfa8('0x1b'),_0x1639f9,JSON[_0xcfa8('0x16')](_0x3fa59a));_0x39a918(_0x3fa59a);})[_0xcfa8('0x22')](function(_0x2a044d){logger[_0xcfa8('0x17')](_0xcfa8('0x1b'),_0x2a044d[_0xcfa8('0x19')],_0x1639f9);_0x7cc4ef(_0x365edf[_0xcfa8('0x17')](0x1f4,_0x2a044d[_0xcfa8('0x19')]));});});};exports[_0xcfa8('0x23')]=function(_0x250e20){return new Promise(function(_0x2c8ae7,_0x8d80cb){return db[_0xcfa8('0x24')][_0xcfa8('0x25')]({'where':_0x250e20[_0xcfa8('0x1d')]?_0x250e20[_0xcfa8('0x1d')][_0xcfa8('0x1e')]||null:null})[_0xcfa8('0x11')](function(_0x1eeb0e){if(_0x1eeb0e){return _0x1eeb0e['addTags'](_0x250e20[_0xcfa8('0x1c')][_0xcfa8('0x26')],_['omit'](_0x250e20[_0xcfa8('0x1c')],['ids','id'])||{});}})['spread'](function(_0x44ae28){logger[_0xcfa8('0x12')](_0xcfa8('0x27'),_0x250e20);logger[_0xcfa8('0x21')](_0xcfa8('0x27'),_0x250e20,JSON['stringify'](_0x44ae28));_0x2c8ae7(_0x44ae28);})['catch'](function(_0x5413fa){logger[_0xcfa8('0x17')](_0xcfa8('0x27'),_0x5413fa['message'],_0x250e20);_0x8d80cb(_this['error'](0x1f4,_0x5413fa[_0xcfa8('0x19')]));});});};
\ No newline at end of file
+var _0xdd28=['catch','AddTagsToWhatsappInteraction','find','then','addTags','body','ids','omit','AddTags','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','redis','defaults','socket.io-emitter','./whatsappInteraction.socket','request','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','UpdateWhatsappInteraction','update','options','where','attributes','limit'];(function(_0x24367c,_0x17b55){var _0x2cd30d=function(_0x12ed87){while(--_0x12ed87){_0x24367c['push'](_0x24367c['shift']());}};_0x2cd30d(++_0x17b55);}(_0xdd28,0xd1));var _0x8dd2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdd28[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x8dd2('0x0'));var moment=require(_0x8dd2('0x1'));var BPromise=require(_0x8dd2('0x2'));var rs=require(_0x8dd2('0x3'));var fs=require('fs');var Redis=require(_0x8dd2('0x4'));var db=require(_0x8dd2('0x5'))['db'];var utils=require(_0x8dd2('0x6'));var logger=require('../../config/logger')(_0x8dd2('0x7'));var config=require(_0x8dd2('0x8'));var jayson=require(_0x8dd2('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x8dd2('0xa')]=_[_0x8dd2('0xb')](config[_0x8dd2('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x8dd2('0xc'))(new Redis(config[_0x8dd2('0xa')]));require(_0x8dd2('0xd'))['register'](socket);function respondWithRpcPromise(_0x5e6800,_0x231453,_0x36bcd8){return new BPromise(function(_0x2bad53,_0x33e3ab){return client[_0x8dd2('0xe')](_0x5e6800,_0x36bcd8)['then'](function(_0x3ec91d){logger[_0x8dd2('0xf')](_0x8dd2('0x10'),_0x231453,_0x8dd2('0x11'));logger[_0x8dd2('0x12')](_0x8dd2('0x13'),_0x231453,_0x8dd2('0x11'),JSON[_0x8dd2('0x14')](_0x3ec91d));if(_0x3ec91d['error']){if(_0x3ec91d[_0x8dd2('0x15')][_0x8dd2('0x16')]===0x1f4){logger['error'](_0x8dd2('0x10'),_0x231453,_0x3ec91d[_0x8dd2('0x15')][_0x8dd2('0x17')]);return _0x33e3ab(_0x3ec91d[_0x8dd2('0x15')][_0x8dd2('0x17')]);}logger[_0x8dd2('0x15')](_0x8dd2('0x10'),_0x231453,_0x3ec91d[_0x8dd2('0x15')][_0x8dd2('0x17')]);return _0x2bad53(_0x3ec91d[_0x8dd2('0x15')]['message']);}else{logger[_0x8dd2('0xf')]('WhatsappInteraction,\x20%s,\x20%s',_0x231453,_0x8dd2('0x11'));_0x2bad53(_0x3ec91d[_0x8dd2('0x18')][_0x8dd2('0x17')]);}})['catch'](function(_0x549085){logger[_0x8dd2('0x15')](_0x8dd2('0x10'),_0x231453,_0x549085);_0x33e3ab(_0x549085);});});}exports[_0x8dd2('0x19')]=function(_0x5988a3){var _0x35782d=this;return new Promise(function(_0x52f118,_0x1c6ac9){return db['WhatsappInteraction'][_0x8dd2('0x1a')](_0x5988a3['body'],{'raw':_0x5988a3['options']?_0x5988a3[_0x8dd2('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5988a3['options']?_0x5988a3['options'][_0x8dd2('0x1c')]||null:null,'attributes':_0x5988a3[_0x8dd2('0x1b')]?_0x5988a3[_0x8dd2('0x1b')][_0x8dd2('0x1d')]||null:null,'limit':_0x5988a3[_0x8dd2('0x1b')]?_0x5988a3[_0x8dd2('0x1b')][_0x8dd2('0x1e')]||null:null})['then'](function(_0x1708a6){logger[_0x8dd2('0xf')](_0x8dd2('0x19'),_0x5988a3);logger[_0x8dd2('0x12')](_0x8dd2('0x19'),_0x5988a3,JSON[_0x8dd2('0x14')](_0x1708a6));_0x52f118(_0x1708a6);})[_0x8dd2('0x1f')](function(_0x208307){logger['error']('UpdateWhatsappInteraction',_0x208307[_0x8dd2('0x17')],_0x5988a3);_0x1c6ac9(_0x35782d[_0x8dd2('0x15')](0x1f4,_0x208307['message']));});});};exports[_0x8dd2('0x20')]=function(_0x6fa080){return new Promise(function(_0x318c5d,_0x365ebd){return db['WhatsappInteraction'][_0x8dd2('0x21')]({'where':_0x6fa080[_0x8dd2('0x1b')]?_0x6fa080[_0x8dd2('0x1b')]['where']||null:null})[_0x8dd2('0x22')](function(_0x11bce4){if(_0x11bce4){return _0x11bce4[_0x8dd2('0x23')](_0x6fa080[_0x8dd2('0x24')][_0x8dd2('0x25')],_[_0x8dd2('0x26')](_0x6fa080[_0x8dd2('0x24')],[_0x8dd2('0x25'),'id'])||{});}})['spread'](function(_0x46fcc9){logger[_0x8dd2('0xf')](_0x8dd2('0x27'),_0x6fa080);logger[_0x8dd2('0x12')](_0x8dd2('0x27'),_0x6fa080,JSON['stringify'](_0x46fcc9));_0x318c5d(_0x46fcc9);})[_0x8dd2('0x1f')](function(_0x13bbb4){logger['error'](_0x8dd2('0x27'),_0x13bbb4[_0x8dd2('0x17')],_0x6fa080);_0x365ebd(_this[_0x8dd2('0x15')](0x1f4,_0x13bbb4[_0x8dd2('0x17')]));});});};
\ No newline at end of file
index bae741d..a3bd46d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2f5=['save','remove','emit','whatsappInteraction:','./whatsappInteraction.events'];(function(_0xa10d96,_0x513f9a){var _0x1d0fe9=function(_0x14a826){while(--_0x14a826){_0xa10d96['push'](_0xa10d96['shift']());}};_0x1d0fe9(++_0x513f9a);}(_0xf2f5,0x8b));var _0x5f2f=function(_0x2f5430,_0x5df554){_0x2f5430=_0x2f5430-0x0;var _0x412b86=_0xf2f5[_0x2f5430];return _0x412b86;};'use strict';var WhatsappInteractionEvents=require(_0x5f2f('0x0'));var events=[_0x5f2f('0x1'),_0x5f2f('0x2'),'update'];function createListener(_0x40de53,_0x16008c){return function(_0xecac0){_0x16008c[_0x5f2f('0x3')](_0x40de53,_0xecac0);};}function removeListener(_0x35e96d,_0x3762ba){return function(){WhatsappInteractionEvents['removeListener'](_0x35e96d,_0x3762ba);};}exports['register']=function(_0x377232){for(var _0x3dd3e1=0x0,_0x1e6c92=events['length'];_0x3dd3e1<_0x1e6c92;_0x3dd3e1++){var _0x411e62=events[_0x3dd3e1];var _0x23864d=createListener(_0x5f2f('0x4')+_0x411e62,_0x377232);WhatsappInteractionEvents['on'](_0x411e62,_0x23864d);}};
\ No newline at end of file
+var _0x96b0=['whatsappInteraction:','remove','update','emit','length'];(function(_0x31ced5,_0x5d5415){var _0x10d9e5=function(_0x2e51a5){while(--_0x2e51a5){_0x31ced5['push'](_0x31ced5['shift']());}};_0x10d9e5(++_0x5d5415);}(_0x96b0,0xb5));var _0x096b=function(_0x5ccaa8,_0x43f32c){_0x5ccaa8=_0x5ccaa8-0x0;var _0x1d5cfb=_0x96b0[_0x5ccaa8];return _0x1d5cfb;};'use strict';var WhatsappInteractionEvents=require('./whatsappInteraction.events');var events=['save',_0x096b('0x0'),_0x096b('0x1')];function createListener(_0x966c54,_0x32297c){return function(_0x47ad1f){_0x32297c[_0x096b('0x2')](_0x966c54,_0x47ad1f);};}function removeListener(_0x59d5f4,_0x26dcbd){return function(){WhatsappInteractionEvents['removeListener'](_0x59d5f4,_0x26dcbd);};}exports['register']=function(_0x3c5e9b){for(var _0x411917=0x0,_0x575c3f=events[_0x096b('0x3')];_0x411917<_0x575c3f;_0x411917++){var _0x21e3ce=events[_0x411917];var _0x49dd7c=createListener(_0x096b('0x4')+_0x21e3ce,_0x3c5e9b);WhatsappInteractionEvents['on'](_0x21e3ce,_0x49dd7c);}};
\ No newline at end of file
index 9a9af8d..9a7d72b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff14=['../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','tracked','whatsapp','put','/:id/accept','delete','multer','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xff14,0x162));var _0x4ff1=function(_0x261bd8,_0x4bd3ad){_0x261bd8=_0x261bd8-0x0;var _0x3e7c30=_0xff14[_0x261bd8];return _0x3e7c30;};'use strict';var multer=require(_0x4ff1('0x0'));var util=require(_0x4ff1('0x1'));var path=require(_0x4ff1('0x2'));var timeout=require(_0x4ff1('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x4ff1('0x4'));var interaction=require(_0x4ff1('0x5'));var config=require(_0x4ff1('0x6'));var controller=require('./whatsappMessage.controller');router[_0x4ff1('0x7')]('/',auth[_0x4ff1('0x8')](),controller[_0x4ff1('0x9')]);router['get'](_0x4ff1('0xa'),auth[_0x4ff1('0x8')](),controller[_0x4ff1('0xb')]);router[_0x4ff1('0x7')](_0x4ff1('0xc'),auth['isAuthenticated'](),controller[_0x4ff1('0xd')]);router[_0x4ff1('0xe')]('/',auth[_0x4ff1('0x8')](),interaction[_0x4ff1('0xf')](_0x4ff1('0x10'),'whatsappmessage:create'),controller['create']);router['post']('/:id/status',controller['status']);router['put'](_0x4ff1('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x4ff1('0x11')](_0x4ff1('0x12'),auth[_0x4ff1('0x8')](),controller['accept']);router[_0x4ff1('0x11')]('/:id/reject',auth[_0x4ff1('0x8')](),controller['reject']);router[_0x4ff1('0x13')]('/:id',auth[_0x4ff1('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xfef9=['reject','delete','destroy','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','get','isAuthenticated','index','describe','/:id','tracked','whatsapp','post','/:id/status','status','/:id/accept','accept','/:id/reject'];(function(_0x281e5e,_0xf320e2){var _0x5a22d2=function(_0x405ff9){while(--_0x405ff9){_0x281e5e['push'](_0x281e5e['shift']());}};_0x5a22d2(++_0xf320e2);}(_0xfef9,0x123));var _0x9fef=function(_0x427352,_0x1bce61){_0x427352=_0x427352-0x0;var _0x23e0e6=_0xfef9[_0x427352];return _0x23e0e6;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x9fef('0x0'));var timeout=require('connect-timeout');var express=require(_0x9fef('0x1'));var router=express[_0x9fef('0x2')]();var fs_extra=require(_0x9fef('0x3'));var auth=require(_0x9fef('0x4'));var interaction=require(_0x9fef('0x5'));var config=require(_0x9fef('0x6'));var controller=require(_0x9fef('0x7'));router[_0x9fef('0x8')]('/',auth[_0x9fef('0x9')](),controller[_0x9fef('0xa')]);router['get']('/describe',auth[_0x9fef('0x9')](),controller[_0x9fef('0xb')]);router[_0x9fef('0x8')](_0x9fef('0xc'),auth[_0x9fef('0x9')](),controller['show']);router['post']('/',auth[_0x9fef('0x9')](),interaction[_0x9fef('0xd')](_0x9fef('0xe'),'whatsappmessage:create'),controller['create']);router[_0x9fef('0xf')](_0x9fef('0x10'),controller[_0x9fef('0x11')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router['put'](_0x9fef('0x12'),auth[_0x9fef('0x9')](),controller[_0x9fef('0x13')]);router['put'](_0x9fef('0x14'),auth[_0x9fef('0x9')](),controller[_0x9fef('0x15')]);router[_0x9fef('0x16')](_0x9fef('0xc'),auth[_0x9fef('0x9')](),controller[_0x9fef('0x17')]);module['exports']=router;
\ No newline at end of file
index 0b8b5eb..7f61f4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6007=['exports','TEXT','medium','BOOLEAN','out','STRING','DATE','sequelize'];(function(_0xb70a1f,_0xb5412a){var _0x3e4891=function(_0x124bf5){while(--_0x124bf5){_0xb70a1f['push'](_0xb70a1f['shift']());}};_0x3e4891(++_0xb5412a);}(_0x6007,0x8f));var _0x7600=function(_0x4b784d,_0x5efb2f){_0x4b784d=_0x4b784d-0x0;var _0x2cdeaf=_0x6007[_0x4b784d];return _0x2cdeaf;};'use strict';var Sequelize=require(_0x7600('0x0'));module[_0x7600('0x1')]={'body':{'type':Sequelize[_0x7600('0x2')](_0x7600('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x7600('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x7600('0x5')),'defaultValue':_0x7600('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x7600('0x6')](0xbe)},'phone':{'type':Sequelize[_0x7600('0x6')]},'readAt':{'type':Sequelize[_0x7600('0x7')]},'secret':{'type':Sequelize[_0x7600('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x7600('0x6')]},'providerResponse':{'type':Sequelize[_0x7600('0x2')]}};
\ No newline at end of file
+var _0xa69d=['medium','BOOLEAN','ENUM','out','STRING','DATE','exports','TEXT'];(function(_0x4dc7b9,_0x319d5a){var _0x3ab114=function(_0x51a9df){while(--_0x51a9df){_0x4dc7b9['push'](_0x4dc7b9['shift']());}};_0x3ab114(++_0x319d5a);}(_0xa69d,0x146));var _0xda69=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xa69d[_0x2bf141];return _0x48277b;};'use strict';var Sequelize=require('sequelize');module[_0xda69('0x0')]={'body':{'type':Sequelize[_0xda69('0x1')](_0xda69('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xda69('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0xda69('0x4')]('in',_0xda69('0x5')),'defaultValue':_0xda69('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0xda69('0x6')](0xbe)},'phone':{'type':Sequelize[_0xda69('0x6')]},'readAt':{'type':Sequelize[_0xda69('0x7')]},'secret':{'type':Sequelize[_0xda69('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xda69('0x6')]},'providerResponse':{'type':Sequelize[_0xda69('0x1')]}};
\ No newline at end of file
index 07f850f..17dddff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe204=['model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','rows','show','rawAttributes','find','create','body','params','describe','whatsapp-interactions','accept','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','WhatsappInteractionId','read1stAt','format','interaction','stringify','AcceptMessage','sequelize','QueryTypes','contact','User','email','agent','manual','interface','channel','motionChannel','event','EventManager','acceptmessage','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','SELECT','internal','SIP/%s','WhatsappAccountId','received\x20delivery\x20report\x20from','inspect','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','twilio','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','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','jayson/promise','client','http','request','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','json','undefined','count','offset','set','Content-Range','apply','reject','update','destroy','then','end','stack','name','send','index','map','WhatsappMessage','fieldName','type','key'];(function(_0x2dc343,_0xf015a2){var _0x51eac5=function(_0x1adfef){while(--_0x1adfef){_0x2dc343['push'](_0x2dc343['shift']());}};_0x51eac5(++_0xf015a2);}(_0xe204,0x15e));var _0x4e20=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xe204[_0x57b54c];return _0x59cc19;};'use strict';var emlformat=require(_0x4e20('0x0'));var rimraf=require(_0x4e20('0x1'));var zipdir=require(_0x4e20('0x2'));var jsonpatch=require(_0x4e20('0x3'));var rp=require(_0x4e20('0x4'));var moment=require(_0x4e20('0x5'));var BPromise=require(_0x4e20('0x6'));var Mustache=require(_0x4e20('0x7'));var util=require(_0x4e20('0x8'));var path=require(_0x4e20('0x9'));var sox=require(_0x4e20('0xa'));var csv=require(_0x4e20('0xb'));var ejs=require(_0x4e20('0xc'));var fs=require('fs');var fs_extra=require(_0x4e20('0xd'));var _=require(_0x4e20('0xe'));var squel=require(_0x4e20('0xf'));var crypto=require(_0x4e20('0x10'));var jsforce=require(_0x4e20('0x11'));var deskjs=require(_0x4e20('0x12'));var toCsv=require(_0x4e20('0xb'));var querystring=require('querystring');var Papa=require(_0x4e20('0x13'));var Redis=require(_0x4e20('0x14'));var authService=require(_0x4e20('0x15'));var qs=require(_0x4e20('0x16'));var as=require(_0x4e20('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4e20('0x18'))('api');var utils=require(_0x4e20('0x19'));var config=require(_0x4e20('0x1a'));var licenseUtil=require(_0x4e20('0x1b'));var db=require(_0x4e20('0x1c'))['db'];config[_0x4e20('0x1d')]=_[_0x4e20('0x1e')](config[_0x4e20('0x1d')],{'host':_0x4e20('0x1f'),'port':0x18eb});var socket=require(_0x4e20('0x20'))(new Redis(config[_0x4e20('0x1d')]));require('./whatsappMessage.socket')['register'](socket);var jayson=require(_0x4e20('0x21'));var client=jayson[_0x4e20('0x22')][_0x4e20('0x23')]({'port':0x232c});var client9002=jayson['client'][_0x4e20('0x23')]({'port':0x232a});function respondWithRpcPromise(_0x1aed4c,_0x30f82a,_0x39df12,_0x13601e){return new BPromise(function(_0x20ad50,_0xc264f){var _0x55e1b2=_0x13601e||client;return _0x55e1b2[_0x4e20('0x24')](_0x1aed4c,_0x39df12)['then'](function(_0x318a98){logger[_0x4e20('0x25')](_0x4e20('0x26'),_0x30f82a,_0x4e20('0x27'));logger[_0x4e20('0x28')](_0x4e20('0x29'),_0x30f82a,_0x4e20('0x27'),JSON['stringify'](_0x318a98));if(_0x318a98['error']){if(_0x318a98[_0x4e20('0x2a')][_0x4e20('0x2b')]===0x1f4){logger[_0x4e20('0x2a')](_0x4e20('0x26'),_0x30f82a,_0x318a98[_0x4e20('0x2a')][_0x4e20('0x2c')]);return _0xc264f(_0x318a98[_0x4e20('0x2a')]['message']);}logger[_0x4e20('0x2a')](_0x4e20('0x26'),_0x30f82a,_0x318a98[_0x4e20('0x2a')][_0x4e20('0x2c')]);return _0x20ad50(_0x318a98[_0x4e20('0x2a')][_0x4e20('0x2c')]);}else{logger[_0x4e20('0x25')](_0x4e20('0x26'),_0x30f82a,_0x4e20('0x27'));_0x20ad50(_0x318a98[_0x4e20('0x2d')][_0x4e20('0x2c')]);}})[_0x4e20('0x2e')](function(_0x2250d3){logger[_0x4e20('0x2a')](_0x4e20('0x26'),_0x30f82a,_0x2250d3);_0xc264f(_0x2250d3);});});}function respondWithStatusCode(_0x15562e,_0x21eaea){_0x21eaea=_0x21eaea||0xcc;return function(_0x3437eb){if(_0x3437eb){return _0x15562e[_0x4e20('0x2f')](_0x21eaea);}return _0x15562e['status'](_0x21eaea)['end']();};}function respondWithResult(_0x13c949,_0x271840){_0x271840=_0x271840||0xc8;return function(_0x41a27c){if(_0x41a27c){return _0x13c949[_0x4e20('0x30')](_0x271840)[_0x4e20('0x31')](_0x41a27c);}};}function respondWithFilteredResult(_0x35983f,_0x374f88){return function(_0x2380f8){if(_0x2380f8){var _0x358769=typeof _0x374f88['offset']===_0x4e20('0x32')&&typeof _0x374f88['limit']===_0x4e20('0x32');var _0x3d6b9f=_0x2380f8[_0x4e20('0x33')];var _0x5bef05=_0x358769?0x0:_0x374f88[_0x4e20('0x34')];var _0x1a5f23=_0x358769?_0x2380f8['count']:_0x374f88['offset']+_0x374f88['limit'];var _0x1a1ba4;if(_0x1a5f23>=_0x3d6b9f){_0x1a5f23=_0x3d6b9f;_0x1a1ba4=0xc8;}else{_0x1a1ba4=0xce;}_0x35983f[_0x4e20('0x30')](_0x1a1ba4);return _0x35983f[_0x4e20('0x35')](_0x4e20('0x36'),_0x5bef05+'-'+_0x1a5f23+'/'+_0x3d6b9f)[_0x4e20('0x31')](_0x2380f8);}return null;};}function patchUpdates(_0x353b89){return function(_0x21907e){try{jsonpatch[_0x4e20('0x37')](_0x21907e,_0x353b89,!![]);}catch(_0x341970){return BPromise[_0x4e20('0x38')](_0x341970);}return _0x21907e['save']();};}function saveUpdates(_0x572ca8,_0x3bdfe6){return function(_0x4f35a5){if(_0x4f35a5){return _0x4f35a5[_0x4e20('0x39')](_0x572ca8)['then'](function(_0x1f949b){return _0x1f949b;});}return null;};}function removeEntity(_0x472318,_0x2ea2cd){return function(_0x241b99){if(_0x241b99){return _0x241b99[_0x4e20('0x3a')]()[_0x4e20('0x3b')](function(){_0x472318[_0x4e20('0x30')](0xcc)[_0x4e20('0x3c')]();});}};}function handleEntityNotFound(_0x197043,_0x3804ef){return function(_0x980fe7){if(!_0x980fe7){_0x197043[_0x4e20('0x2f')](0x194);}return _0x980fe7;};}function handleError(_0x574e55,_0x3256e5){_0x3256e5=_0x3256e5||0x1f4;return function(_0x110621){logger[_0x4e20('0x2a')](_0x110621[_0x4e20('0x3d')]);if(_0x110621[_0x4e20('0x3e')]){delete _0x110621[_0x4e20('0x3e')];}_0x574e55[_0x4e20('0x30')](_0x3256e5)[_0x4e20('0x3f')](_0x110621);};}exports[_0x4e20('0x40')]=function(_0x323b71,_0x2d2c05){var _0x20cb27={},_0x50828a={},_0x407f36={'count':0x0,'rows':[]};var _0x1e6a42=_[_0x4e20('0x41')](db[_0x4e20('0x42')]['rawAttributes'],function(_0x49dc5e){return{'name':_0x49dc5e[_0x4e20('0x43')],'type':_0x49dc5e[_0x4e20('0x44')][_0x4e20('0x45')]};});_0x50828a[_0x4e20('0x46')]=_[_0x4e20('0x41')](_0x1e6a42,_0x4e20('0x3e'));_0x50828a['query']=_[_0x4e20('0x47')](_0x323b71[_0x4e20('0x48')]);_0x50828a['filters']=_[_0x4e20('0x49')](_0x50828a['model'],_0x50828a[_0x4e20('0x48')]);_0x20cb27[_0x4e20('0x4a')]=_[_0x4e20('0x49')](_0x50828a[_0x4e20('0x46')],qs[_0x4e20('0x4b')](_0x323b71[_0x4e20('0x48')][_0x4e20('0x4b')]));_0x20cb27[_0x4e20('0x4a')]=_0x20cb27[_0x4e20('0x4a')][_0x4e20('0x4c')]?_0x20cb27['attributes']:_0x50828a[_0x4e20('0x46')];if(!_0x323b71[_0x4e20('0x48')][_0x4e20('0x4d')](_0x4e20('0x4e'))){_0x20cb27[_0x4e20('0x4f')]=qs[_0x4e20('0x4f')](_0x323b71[_0x4e20('0x48')][_0x4e20('0x4f')]);_0x20cb27[_0x4e20('0x34')]=qs['offset'](_0x323b71[_0x4e20('0x48')][_0x4e20('0x34')]);}_0x20cb27[_0x4e20('0x50')]=qs[_0x4e20('0x51')](_0x323b71['query']['sort']);_0x20cb27[_0x4e20('0x52')]=qs[_0x4e20('0x53')](_[_0x4e20('0x54')](_0x323b71[_0x4e20('0x48')],_0x50828a[_0x4e20('0x53')]),_0x1e6a42);if(_0x323b71['query'][_0x4e20('0x55')]){_0x20cb27['where']=_[_0x4e20('0x56')](_0x20cb27[_0x4e20('0x52')],{'$or':_[_0x4e20('0x41')](_0x1e6a42,function(_0x19ed83){if(_0x19ed83[_0x4e20('0x44')]!=='VIRTUAL'){var _0x3e8386={};_0x3e8386[_0x19ed83['name']]={'$like':'%'+_0x323b71['query']['filter']+'%'};return _0x3e8386;}})});}_0x20cb27=_['merge']({},_0x20cb27,_0x323b71[_0x4e20('0x57')]);var _0x53942e={'where':_0x20cb27[_0x4e20('0x52')]};return db[_0x4e20('0x42')]['count'](_0x53942e)[_0x4e20('0x3b')](function(_0x2b5981){_0x407f36[_0x4e20('0x33')]=_0x2b5981;if(_0x323b71['query'][_0x4e20('0x58')]){_0x20cb27[_0x4e20('0x59')]=[{'all':!![]}];}return db['WhatsappMessage'][_0x4e20('0x5a')](_0x20cb27);})[_0x4e20('0x3b')](function(_0x21a66c){_0x407f36[_0x4e20('0x5b')]=_0x21a66c;return _0x407f36;})[_0x4e20('0x3b')](respondWithFilteredResult(_0x2d2c05,_0x20cb27))[_0x4e20('0x2e')](handleError(_0x2d2c05,null));};exports[_0x4e20('0x5c')]=function(_0x1a45d9,_0x28d2f3){var _0x5ed920={'raw':!![],'where':{'id':_0x1a45d9['params']['id']}},_0x3b91c8={};_0x3b91c8[_0x4e20('0x46')]=_[_0x4e20('0x47')](db[_0x4e20('0x42')][_0x4e20('0x5d')]);_0x3b91c8[_0x4e20('0x48')]=_[_0x4e20('0x47')](_0x1a45d9[_0x4e20('0x48')]);_0x3b91c8[_0x4e20('0x53')]=_[_0x4e20('0x49')](_0x3b91c8[_0x4e20('0x46')],_0x3b91c8[_0x4e20('0x48')]);_0x5ed920['attributes']=_[_0x4e20('0x49')](_0x3b91c8[_0x4e20('0x46')],qs[_0x4e20('0x4b')](_0x1a45d9[_0x4e20('0x48')][_0x4e20('0x4b')]));_0x5ed920[_0x4e20('0x4a')]=_0x5ed920['attributes'][_0x4e20('0x4c')]?_0x5ed920[_0x4e20('0x4a')]:_0x3b91c8[_0x4e20('0x46')];if(_0x1a45d9[_0x4e20('0x48')][_0x4e20('0x58')]){_0x5ed920['include']=[{'all':!![]}];}_0x5ed920=_[_0x4e20('0x56')]({},_0x5ed920,_0x1a45d9[_0x4e20('0x57')]);return db[_0x4e20('0x42')][_0x4e20('0x5e')](_0x5ed920)[_0x4e20('0x3b')](handleEntityNotFound(_0x28d2f3,null))[_0x4e20('0x3b')](respondWithResult(_0x28d2f3,null))['catch'](handleError(_0x28d2f3,null));};exports['create']=function(_0x28a0da,_0x4e145f){return db[_0x4e20('0x42')][_0x4e20('0x5f')](_0x28a0da[_0x4e20('0x60')],{})[_0x4e20('0x3b')](respondWithResult(_0x4e145f,0xc9))[_0x4e20('0x2e')](handleError(_0x4e145f,null));};exports[_0x4e20('0x39')]=function(_0x4f3a2c,_0x5be888){if(_0x4f3a2c['body']['id']){delete _0x4f3a2c[_0x4e20('0x60')]['id'];}return db[_0x4e20('0x42')][_0x4e20('0x5e')]({'where':{'id':_0x4f3a2c[_0x4e20('0x61')]['id']}})[_0x4e20('0x3b')](handleEntityNotFound(_0x5be888,null))[_0x4e20('0x3b')](saveUpdates(_0x4f3a2c[_0x4e20('0x60')],null))[_0x4e20('0x3b')](respondWithResult(_0x5be888,null))['catch'](handleError(_0x5be888,null));};exports['destroy']=function(_0x4c1d09,_0x159fb2){return db[_0x4e20('0x42')]['find']({'where':{'id':_0x4c1d09[_0x4e20('0x61')]['id']}})['then'](handleEntityNotFound(_0x159fb2,null))[_0x4e20('0x3b')](removeEntity(_0x159fb2,null))[_0x4e20('0x2e')](handleError(_0x159fb2,null));};exports['describe']=function(_0x2eee3e,_0x59869d){return db[_0x4e20('0x42')][_0x4e20('0x62')]()[_0x4e20('0x3b')](respondWithResult(_0x59869d,null))[_0x4e20('0x2e')](handleError(_0x59869d,null));};var interaction_log=require(_0x4e20('0x18'))(_0x4e20('0x63'));exports[_0x4e20('0x64')]=function(_0x1e8592,_0x3afbf7,_0x1ecef0){var _0x205a76={'agent':{},'channel':'whatsapp'};if(_0x1e8592[_0x4e20('0x60')]['id']){delete _0x1e8592['body']['id'];}_0x1e8592['body'][_0x4e20('0x65')]=!![];_0x1e8592['body'][_0x4e20('0x66')]=moment()['format'](_0x4e20('0x67'));_0x1e8592[_0x4e20('0x60')]['UserId']=_0x1e8592[_0x4e20('0x60')][_0x4e20('0x68')]||_0x1e8592[_0x4e20('0x69')]['id'];_0x205a76['agent']['id']=_0x1e8592['body'][_0x4e20('0x68')];return db[_0x4e20('0x42')][_0x4e20('0x5e')]({'where':{'id':_0x1e8592[_0x4e20('0x61')]['id'],'UserId':null}})[_0x4e20('0x3b')](handleEntityNotFound(_0x3afbf7,null))[_0x4e20('0x3b')](saveUpdates(_0x1e8592[_0x4e20('0x60')],null))[_0x4e20('0x3b')](function(_0x46a2e3){if(_0x46a2e3){_0x205a76[_0x4e20('0x2c')]=_0x46a2e3[_0x4e20('0x6a')]({'plain':!![]});return db['WhatsappInteraction'][_0x4e20('0x5e')]({'where':{'id':_0x46a2e3[_0x4e20('0x6b')]}});}return null;})[_0x4e20('0x3b')](handleEntityNotFound(_0x3afbf7,null))[_0x4e20('0x3b')](function(_0x5eef47){if(_0x5eef47){return _0x5eef47[_0x4e20('0x39')]({'UserId':_0x1e8592[_0x4e20('0x60')]['UserId'],'read1stAt':_['isNil'](_0x5eef47[_0x4e20('0x6c')])?moment()[_0x4e20('0x6d')](_0x4e20('0x67')):undefined});}return null;})[_0x4e20('0x3b')](function(_0x5d6666){if(_0x5d6666){_0x205a76['interaction']=_0x5d6666[_0x4e20('0x6a')]({'plain':!![]});interaction_log[_0x4e20('0x25')]('[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1e8592[_0x4e20('0x69')]['id'],_0x1e8592[_0x4e20('0x69')]['name'],_0x1e8592[_0x4e20('0x69')]['role'],_0x205a76[_0x4e20('0x6e')]['id'],_0x1e8592[_0x4e20('0x60')]?JSON[_0x4e20('0x6f')](_0x1e8592['body']):'null');return respondWithRpcPromise(_0x4e20('0x70'),'acceptMessage',_0x205a76);}return null;})[_0x4e20('0x3b')](function(_0x3b547e){var _0x27c746='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3b547e[_0x4e20('0x2c')]['ContactId'];return db[_0x4e20('0x71')]['query'](_0x27c746,{'type':db['Sequelize'][_0x4e20('0x72')]['SELECT'],'raw':!![]})[_0x4e20('0x3b')](function(_0x1e2c99){return _0x1e2c99;});})['then'](function(_0x285075){if(_0x285075){_0x205a76[_0x4e20('0x2c')][_0x4e20('0x73')]=_0x285075[0x0];if(!_0x1e8592[_0x4e20('0x60')][_0x4e20('0x68')])return;return db[_0x4e20('0x74')][_0x4e20('0x5e')]({'where':{'id':_0x1e8592[_0x4e20('0x60')][_0x4e20('0x68')],'role':'agent'},'attributes':['id',_0x4e20('0x3e'),'fullname',_0x4e20('0x75'),'internal'],'raw':!![]});}return null;})['then'](function(_0x34badc){if(!_0x34badc)return null;_0x205a76['message'][_0x4e20('0x76')]=_0x34badc;return _0x205a76;})[_0x4e20('0x3b')](function(_0xf45047){if(_0xf45047){if(_0x1e8592[_0x4e20('0x60')][_0x4e20('0x77')]){_0x205a76[_0x4e20('0x2c')][_0x4e20('0x78')]=util[_0x4e20('0x6d')]('SIP/%s',_0x1e8592[_0x4e20('0x69')][_0x4e20('0x3e')]);_0x205a76[_0x4e20('0x2c')][_0x4e20('0x79')]=_0x205a76[_0x4e20('0x79')];_0x205a76[_0x4e20('0x2c')][_0x4e20('0x7a')]=_0x205a76['channel'];_0x205a76['message'][_0x4e20('0x7b')]=_0x4e20('0x64');return respondWithRpcPromise('EventManager',_0x4e20('0x7c'),{'event':_0x4e20('0x7d'),'message':_0x205a76['message']},client9002)[_0x4e20('0x3b')](function(){return _0x205a76;});}return _0x205a76;}return null;})[_0x4e20('0x3b')](respondWithResult(_0x3afbf7,null))['catch'](handleError(_0x3afbf7,null));};var interaction_log=require(_0x4e20('0x18'))(_0x4e20('0x63'));exports['reject']=function(_0x261a5d,_0x2c91c4,_0x6cfa3a){var _0xf8d7dc={'agent':{},'channel':'whatsapp'};if(_0x261a5d[_0x4e20('0x60')]['id']){delete _0x261a5d['body']['id'];}_0x261a5d[_0x4e20('0x60')][_0x4e20('0x68')]=_0x261a5d['body']['UserId']||_0x261a5d[_0x4e20('0x69')]['id'];_0xf8d7dc['agent']['id']=_0x261a5d[_0x4e20('0x60')][_0x4e20('0x68')];return db['WhatsappMessage'][_0x4e20('0x5e')]({'where':{'id':_0x261a5d['params']['id'],'UserId':null}})[_0x4e20('0x3b')](handleEntityNotFound(_0x2c91c4,null))[_0x4e20('0x3b')](function(_0x5a9eb0){if(_0x5a9eb0){_0xf8d7dc[_0x4e20('0x2c')]=_0x5a9eb0[_0x4e20('0x6a')]({'plain':!![]});return db['WhatsappInteraction'][_0x4e20('0x5e')]({'where':{'id':_0x5a9eb0[_0x4e20('0x6b')]}});}return null;})[_0x4e20('0x3b')](handleEntityNotFound(_0x2c91c4,null))[_0x4e20('0x3b')](function(_0x2f1a8f){if(_0x2f1a8f){_0xf8d7dc[_0x4e20('0x6e')]=_0x2f1a8f[_0x4e20('0x6a')]({'plain':!![]});interaction_log[_0x4e20('0x25')](_0x4e20('0x7e'),_0x261a5d[_0x4e20('0x69')]['id'],_0x261a5d[_0x4e20('0x69')][_0x4e20('0x3e')],_0x261a5d['user']['role'],_0xf8d7dc[_0x4e20('0x6e')]['id'],_0x261a5d[_0x4e20('0x60')]?JSON[_0x4e20('0x6f')](_0x261a5d['body']):_0x4e20('0x7f'));return respondWithRpcPromise(_0x4e20('0x80'),'rejectMessage',_0xf8d7dc);}return null;})['then'](function(_0x4acdfc){var _0x17868e=_0x4e20('0x81')+_0x4acdfc['message'][_0x4e20('0x82')];return db[_0x4e20('0x71')][_0x4e20('0x48')](_0x17868e,{'type':db['Sequelize']['QueryTypes'][_0x4e20('0x83')],'raw':!![]})[_0x4e20('0x3b')](function(_0x5d7c49){return _0x5d7c49;});})[_0x4e20('0x3b')](function(_0x5c43d2){if(_0x5c43d2){_0xf8d7dc['message'][_0x4e20('0x73')]=_0x5c43d2[0x0];if(!_0x261a5d[_0x4e20('0x60')][_0x4e20('0x68')])return;return db[_0x4e20('0x74')][_0x4e20('0x5e')]({'where':{'id':_0x261a5d[_0x4e20('0x60')][_0x4e20('0x68')],'role':'agent'},'attributes':['id','name','fullname',_0x4e20('0x75'),_0x4e20('0x84')],'raw':!![]});}return null;})['then'](function(_0x2d32e1){if(!_0x2d32e1)return null;_0xf8d7dc[_0x4e20('0x2c')]['agent']=_0x2d32e1;return _0xf8d7dc;})[_0x4e20('0x3b')](function(_0x4e94dd){if(_0x4e94dd){_0x4e94dd['message'][_0x4e20('0x78')]=util['format'](_0x4e20('0x85'),_0x261a5d['user'][_0x4e20('0x3e')]);_0x4e94dd['message']['channel']=_0xf8d7dc[_0x4e20('0x79')];_0x4e94dd[_0x4e20('0x2c')][_0x4e20('0x7a')]=_0xf8d7dc['channel'];_0x4e94dd[_0x4e20('0x2c')][_0x4e20('0x7b')]=_0x4e20('0x38');respondWithRpcPromise(_0x4e20('0x7c'),'EventManager',{'event':'rejectmessage','message':_0x4e94dd[_0x4e20('0x2c')]},client9002);return _0xf8d7dc;}return null;})['then'](respondWithResult(_0x2c91c4,null))[_0x4e20('0x2e')](handleError(_0x2c91c4,null));};exports['status']=function(_0x1a778d,_0x1ea755,_0x57c180){if(_0x1a778d[_0x4e20('0x60')]['id']){delete _0x1a778d[_0x4e20('0x60')]['id'];}var _0x11b3f4;return db[_0x4e20('0x42')][_0x4e20('0x5e')]({'where':{'id':_0x1a778d[_0x4e20('0x61')]['id']}})[_0x4e20('0x3b')](handleEntityNotFound(_0x1ea755,null))['then'](function(_0x136114){if(_0x136114){_0x11b3f4=_0x136114;return db['WhatsappAccount'][_0x4e20('0x5e')]({'where':{'id':_0x136114[_0x4e20('0x86')]}});}})[_0x4e20('0x3b')](handleEntityNotFound(_0x1ea755,null))[_0x4e20('0x3b')](function(_0xa25eca){if(_0xa25eca){logger['debug']('WhatsppMessage,\x20%s,\x20%s,\x20%s',_0x4e20('0x30'),_0x4e20('0x87'),_0xa25eca[_0x4e20('0x44')],util[_0x4e20('0x88')](_0x1a778d['body'],{'showHidden':![],'depth':null}));switch(_0xa25eca[_0x4e20('0x44')]){case'twilio':if(_0x1a778d[_0x4e20('0x60')]['MessageSid']&&_0x1a778d[_0x4e20('0x60')]['MessageSid']===_0x11b3f4['messageId']&&_0x1a778d[_0x4e20('0x60')][_0x4e20('0x89')]&&_0x1a778d['body'][_0x4e20('0x89')]===_0x4e20('0x65')){return _0x11b3f4['update']({'read':!![]});}else{logger[_0x4e20('0x2a')](_0x4e20('0x8a'),_0x4e20('0x30'),_0x4e20('0x8b'),util[_0x4e20('0x88')](_0x1a778d['body'],{'showHidden':![],'depth':null}));}break;}return _0x11b3f4;}})[_0x4e20('0x3b')](respondWithResult(_0x1ea755,null))[_0x4e20('0x2e')](handleError(_0x1ea755,null));};
\ No newline at end of file
+var _0x88ff=['ejs','fs-extra','lodash','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./whatsappMessage.socket','register','client','http','request','then','info','WhatsappMessage,\x20%s,\x20%s','debug','request\x20sent','error','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','name','send','index','map','WhatsappMessage','rawAttributes','fieldName','key','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filters','filter','merge','type','includeAll','include','findAll','rows','show','options','create','body','update','find','params','destroy','describe','whatsapp-interactions','accept','whatsapp','read','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','WhatsappInteractionId','isNil','read1stAt','format','user','role','interaction','stringify','null','acceptMessage','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','email','internal','manual','interface','channel','event','EventManager','acceptmessage','WhatsappInteraction','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','fullname','SIP/%s','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','inspect','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','to-csv'];(function(_0x3afe4c,_0x571012){var _0x53b51e=function(_0x1245c4){while(--_0x1245c4){_0x3afe4c['push'](_0x3afe4c['shift']());}};_0x53b51e(++_0x571012);}(_0x88ff,0x196));var _0xf88f=function(_0x2f4ebf,_0x315e8f){_0x2f4ebf=_0x2f4ebf-0x0;var _0x2dd6e5=_0x88ff[_0x2f4ebf];return _0x2dd6e5;};'use strict';var emlformat=require(_0xf88f('0x0'));var rimraf=require(_0xf88f('0x1'));var zipdir=require(_0xf88f('0x2'));var jsonpatch=require(_0xf88f('0x3'));var rp=require(_0xf88f('0x4'));var moment=require(_0xf88f('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xf88f('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xf88f('0x7'));var ejs=require(_0xf88f('0x8'));var fs=require('fs');var fs_extra=require(_0xf88f('0x9'));var _=require(_0xf88f('0xa'));var squel=require(_0xf88f('0xb'));var crypto=require(_0xf88f('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xf88f('0x7'));var querystring=require('querystring');var Papa=require(_0xf88f('0xd'));var Redis=require(_0xf88f('0xe'));var authService=require(_0xf88f('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xf88f('0x10'));var hardwareService=require(_0xf88f('0x11'));var logger=require(_0xf88f('0x12'))('api');var utils=require(_0xf88f('0x13'));var config=require(_0xf88f('0x14'));var licenseUtil=require(_0xf88f('0x15'));var db=require(_0xf88f('0x16'))['db'];config[_0xf88f('0x17')]=_[_0xf88f('0x18')](config[_0xf88f('0x17')],{'host':_0xf88f('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xf88f('0x1a'))[_0xf88f('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson[_0xf88f('0x1c')]['http']({'port':0x232c});var client9002=jayson[_0xf88f('0x1c')][_0xf88f('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x1d0716,_0x1eadcf,_0x1a9fbb,_0x1c5b80){return new BPromise(function(_0x41b06e,_0x50fd47){var _0x3432cc=_0x1c5b80||client;return _0x3432cc[_0xf88f('0x1e')](_0x1d0716,_0x1a9fbb)[_0xf88f('0x1f')](function(_0x5aa045){logger[_0xf88f('0x20')](_0xf88f('0x21'),_0x1eadcf,'request\x20sent');logger[_0xf88f('0x22')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x1eadcf,_0xf88f('0x23'),JSON['stringify'](_0x5aa045));if(_0x5aa045[_0xf88f('0x24')]){if(_0x5aa045[_0xf88f('0x24')]['code']===0x1f4){logger[_0xf88f('0x24')](_0xf88f('0x21'),_0x1eadcf,_0x5aa045[_0xf88f('0x24')][_0xf88f('0x25')]);return _0x50fd47(_0x5aa045[_0xf88f('0x24')]['message']);}logger[_0xf88f('0x24')]('WhatsappMessage,\x20%s,\x20%s',_0x1eadcf,_0x5aa045[_0xf88f('0x24')][_0xf88f('0x25')]);return _0x41b06e(_0x5aa045[_0xf88f('0x24')][_0xf88f('0x25')]);}else{logger[_0xf88f('0x20')](_0xf88f('0x21'),_0x1eadcf,_0xf88f('0x23'));_0x41b06e(_0x5aa045[_0xf88f('0x26')][_0xf88f('0x25')]);}})[_0xf88f('0x27')](function(_0x4b02b9){logger[_0xf88f('0x24')](_0xf88f('0x21'),_0x1eadcf,_0x4b02b9);_0x50fd47(_0x4b02b9);});});}function respondWithStatusCode(_0x14d654,_0x2bb20e){_0x2bb20e=_0x2bb20e||0xcc;return function(_0x2b11c8){if(_0x2b11c8){return _0x14d654[_0xf88f('0x28')](_0x2bb20e);}return _0x14d654[_0xf88f('0x29')](_0x2bb20e)[_0xf88f('0x2a')]();};}function respondWithResult(_0x4861ca,_0x10be01){_0x10be01=_0x10be01||0xc8;return function(_0x3536ff){if(_0x3536ff){return _0x4861ca[_0xf88f('0x29')](_0x10be01)[_0xf88f('0x2b')](_0x3536ff);}};}function respondWithFilteredResult(_0x390b13,_0x21523e){return function(_0x2a4d7c){if(_0x2a4d7c){var _0x5a893c=typeof _0x21523e[_0xf88f('0x2c')]===_0xf88f('0x2d')&&typeof _0x21523e[_0xf88f('0x2e')]==='undefined';var _0x60f603=_0x2a4d7c[_0xf88f('0x2f')];var _0x420e0a=_0x5a893c?0x0:_0x21523e[_0xf88f('0x2c')];var _0x2c48f8=_0x5a893c?_0x2a4d7c[_0xf88f('0x2f')]:_0x21523e[_0xf88f('0x2c')]+_0x21523e[_0xf88f('0x2e')];var _0x57ec02;if(_0x2c48f8>=_0x60f603){_0x2c48f8=_0x60f603;_0x57ec02=0xc8;}else{_0x57ec02=0xce;}_0x390b13[_0xf88f('0x29')](_0x57ec02);return _0x390b13[_0xf88f('0x30')](_0xf88f('0x31'),_0x420e0a+'-'+_0x2c48f8+'/'+_0x60f603)[_0xf88f('0x2b')](_0x2a4d7c);}return null;};}function patchUpdates(_0x5cadd5){return function(_0x4860b5){try{jsonpatch[_0xf88f('0x32')](_0x4860b5,_0x5cadd5,!![]);}catch(_0x34cabf){return BPromise[_0xf88f('0x33')](_0x34cabf);}return _0x4860b5[_0xf88f('0x34')]();};}function saveUpdates(_0x115332,_0x18e1df){return function(_0x1c7d12){if(_0x1c7d12){return _0x1c7d12['update'](_0x115332)[_0xf88f('0x1f')](function(_0x4da58b){return _0x4da58b;});}return null;};}function removeEntity(_0x318eb2,_0x6ec6d2){return function(_0xd7278b){if(_0xd7278b){return _0xd7278b['destroy']()['then'](function(){_0x318eb2[_0xf88f('0x29')](0xcc)[_0xf88f('0x2a')]();});}};}function handleEntityNotFound(_0x265065,_0x58868c){return function(_0x244907){if(!_0x244907){_0x265065[_0xf88f('0x28')](0x194);}return _0x244907;};}function handleError(_0x2fbd3e,_0x2bee12){_0x2bee12=_0x2bee12||0x1f4;return function(_0x2b741d){logger[_0xf88f('0x24')](_0x2b741d['stack']);if(_0x2b741d['name']){delete _0x2b741d[_0xf88f('0x35')];}_0x2fbd3e[_0xf88f('0x29')](_0x2bee12)[_0xf88f('0x36')](_0x2b741d);};}exports[_0xf88f('0x37')]=function(_0x138cc4,_0x5d4628){var _0x417007={},_0x50af98={},_0x3bff87={'count':0x0,'rows':[]};var _0x1819ce=_[_0xf88f('0x38')](db[_0xf88f('0x39')][_0xf88f('0x3a')],function(_0x5e3dea){return{'name':_0x5e3dea[_0xf88f('0x3b')],'type':_0x5e3dea['type'][_0xf88f('0x3c')]};});_0x50af98[_0xf88f('0x3d')]=_[_0xf88f('0x38')](_0x1819ce,_0xf88f('0x35'));_0x50af98['query']=_[_0xf88f('0x3e')](_0x138cc4[_0xf88f('0x3f')]);_0x50af98['filters']=_['intersection'](_0x50af98[_0xf88f('0x3d')],_0x50af98[_0xf88f('0x3f')]);_0x417007[_0xf88f('0x40')]=_[_0xf88f('0x41')](_0x50af98[_0xf88f('0x3d')],qs[_0xf88f('0x42')](_0x138cc4[_0xf88f('0x3f')][_0xf88f('0x42')]));_0x417007[_0xf88f('0x40')]=_0x417007[_0xf88f('0x40')][_0xf88f('0x43')]?_0x417007[_0xf88f('0x40')]:_0x50af98[_0xf88f('0x3d')];if(!_0x138cc4['query'][_0xf88f('0x44')](_0xf88f('0x45'))){_0x417007[_0xf88f('0x2e')]=qs[_0xf88f('0x2e')](_0x138cc4[_0xf88f('0x3f')][_0xf88f('0x2e')]);_0x417007['offset']=qs[_0xf88f('0x2c')](_0x138cc4[_0xf88f('0x3f')][_0xf88f('0x2c')]);}_0x417007['order']=qs[_0xf88f('0x46')](_0x138cc4[_0xf88f('0x3f')][_0xf88f('0x46')]);_0x417007[_0xf88f('0x47')]=qs['filters'](_[_0xf88f('0x48')](_0x138cc4[_0xf88f('0x3f')],_0x50af98[_0xf88f('0x49')]),_0x1819ce);if(_0x138cc4['query'][_0xf88f('0x4a')]){_0x417007[_0xf88f('0x47')]=_[_0xf88f('0x4b')](_0x417007[_0xf88f('0x47')],{'$or':_[_0xf88f('0x38')](_0x1819ce,function(_0x52765e){if(_0x52765e[_0xf88f('0x4c')]!=='VIRTUAL'){var _0x5f2070={};_0x5f2070[_0x52765e['name']]={'$like':'%'+_0x138cc4[_0xf88f('0x3f')][_0xf88f('0x4a')]+'%'};return _0x5f2070;}})});}_0x417007=_[_0xf88f('0x4b')]({},_0x417007,_0x138cc4['options']);var _0x4ff9a4={'where':_0x417007[_0xf88f('0x47')]};return db[_0xf88f('0x39')][_0xf88f('0x2f')](_0x4ff9a4)[_0xf88f('0x1f')](function(_0x26a845){_0x3bff87[_0xf88f('0x2f')]=_0x26a845;if(_0x138cc4[_0xf88f('0x3f')][_0xf88f('0x4d')]){_0x417007[_0xf88f('0x4e')]=[{'all':!![]}];}return db[_0xf88f('0x39')][_0xf88f('0x4f')](_0x417007);})[_0xf88f('0x1f')](function(_0x4b632f){_0x3bff87[_0xf88f('0x50')]=_0x4b632f;return _0x3bff87;})['then'](respondWithFilteredResult(_0x5d4628,_0x417007))[_0xf88f('0x27')](handleError(_0x5d4628,null));};exports[_0xf88f('0x51')]=function(_0x45e744,_0x47aa6b){var _0x4f9f7b={'raw':!![],'where':{'id':_0x45e744['params']['id']}},_0x5de7ba={};_0x5de7ba[_0xf88f('0x3d')]=_[_0xf88f('0x3e')](db[_0xf88f('0x39')][_0xf88f('0x3a')]);_0x5de7ba['query']=_[_0xf88f('0x3e')](_0x45e744[_0xf88f('0x3f')]);_0x5de7ba['filters']=_[_0xf88f('0x41')](_0x5de7ba[_0xf88f('0x3d')],_0x5de7ba[_0xf88f('0x3f')]);_0x4f9f7b[_0xf88f('0x40')]=_[_0xf88f('0x41')](_0x5de7ba['model'],qs[_0xf88f('0x42')](_0x45e744[_0xf88f('0x3f')]['fields']));_0x4f9f7b[_0xf88f('0x40')]=_0x4f9f7b[_0xf88f('0x40')][_0xf88f('0x43')]?_0x4f9f7b['attributes']:_0x5de7ba[_0xf88f('0x3d')];if(_0x45e744[_0xf88f('0x3f')][_0xf88f('0x4d')]){_0x4f9f7b['include']=[{'all':!![]}];}_0x4f9f7b=_[_0xf88f('0x4b')]({},_0x4f9f7b,_0x45e744[_0xf88f('0x52')]);return db['WhatsappMessage']['find'](_0x4f9f7b)[_0xf88f('0x1f')](handleEntityNotFound(_0x47aa6b,null))[_0xf88f('0x1f')](respondWithResult(_0x47aa6b,null))[_0xf88f('0x27')](handleError(_0x47aa6b,null));};exports[_0xf88f('0x53')]=function(_0x2158b1,_0x36fb15){return db[_0xf88f('0x39')][_0xf88f('0x53')](_0x2158b1[_0xf88f('0x54')],{})['then'](respondWithResult(_0x36fb15,0xc9))[_0xf88f('0x27')](handleError(_0x36fb15,null));};exports[_0xf88f('0x55')]=function(_0x2c259a,_0x2347e2){if(_0x2c259a['body']['id']){delete _0x2c259a[_0xf88f('0x54')]['id'];}return db['WhatsappMessage'][_0xf88f('0x56')]({'where':{'id':_0x2c259a[_0xf88f('0x57')]['id']}})[_0xf88f('0x1f')](handleEntityNotFound(_0x2347e2,null))[_0xf88f('0x1f')](saveUpdates(_0x2c259a['body'],null))[_0xf88f('0x1f')](respondWithResult(_0x2347e2,null))['catch'](handleError(_0x2347e2,null));};exports[_0xf88f('0x58')]=function(_0x58a267,_0x1cd005){return db[_0xf88f('0x39')]['find']({'where':{'id':_0x58a267[_0xf88f('0x57')]['id']}})[_0xf88f('0x1f')](handleEntityNotFound(_0x1cd005,null))[_0xf88f('0x1f')](removeEntity(_0x1cd005,null))[_0xf88f('0x27')](handleError(_0x1cd005,null));};exports[_0xf88f('0x59')]=function(_0x54ca85,_0xf0a0f4){return db['WhatsappMessage'][_0xf88f('0x59')]()[_0xf88f('0x1f')](respondWithResult(_0xf0a0f4,null))[_0xf88f('0x27')](handleError(_0xf0a0f4,null));};var interaction_log=require('../../config/logger')(_0xf88f('0x5a'));exports[_0xf88f('0x5b')]=function(_0x536f23,_0x9f0f57,_0x543967){var _0x241f19={'agent':{},'channel':_0xf88f('0x5c')};if(_0x536f23[_0xf88f('0x54')]['id']){delete _0x536f23[_0xf88f('0x54')]['id'];}_0x536f23[_0xf88f('0x54')][_0xf88f('0x5d')]=!![];_0x536f23[_0xf88f('0x54')]['readAt']=moment()['format'](_0xf88f('0x5e'));_0x536f23[_0xf88f('0x54')][_0xf88f('0x5f')]=_0x536f23['body'][_0xf88f('0x5f')]||_0x536f23['user']['id'];_0x241f19[_0xf88f('0x60')]['id']=_0x536f23[_0xf88f('0x54')]['UserId'];return db[_0xf88f('0x39')][_0xf88f('0x56')]({'where':{'id':_0x536f23[_0xf88f('0x57')]['id'],'UserId':null}})[_0xf88f('0x1f')](handleEntityNotFound(_0x9f0f57,null))[_0xf88f('0x1f')](saveUpdates(_0x536f23['body'],null))['then'](function(_0x4b6be4){if(_0x4b6be4){_0x241f19[_0xf88f('0x25')]=_0x4b6be4[_0xf88f('0x61')]({'plain':!![]});return db['WhatsappInteraction'][_0xf88f('0x56')]({'where':{'id':_0x4b6be4[_0xf88f('0x62')]}});}return null;})[_0xf88f('0x1f')](handleEntityNotFound(_0x9f0f57,null))[_0xf88f('0x1f')](function(_0xcb1801){if(_0xcb1801){return _0xcb1801['update']({'UserId':_0x536f23[_0xf88f('0x54')][_0xf88f('0x5f')],'read1stAt':_[_0xf88f('0x63')](_0xcb1801[_0xf88f('0x64')])?moment()[_0xf88f('0x65')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xf88f('0x1f')](function(_0x495dfc){if(_0x495dfc){_0x241f19['interaction']=_0x495dfc[_0xf88f('0x61')]({'plain':!![]});interaction_log[_0xf88f('0x20')]('[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x536f23[_0xf88f('0x66')]['id'],_0x536f23[_0xf88f('0x66')]['name'],_0x536f23[_0xf88f('0x66')][_0xf88f('0x67')],_0x241f19[_0xf88f('0x68')]['id'],_0x536f23[_0xf88f('0x54')]?JSON[_0xf88f('0x69')](_0x536f23[_0xf88f('0x54')]):_0xf88f('0x6a'));return respondWithRpcPromise('AcceptMessage',_0xf88f('0x6b'),_0x241f19);}return null;})[_0xf88f('0x1f')](function(_0x2efe7f){var _0x4e9876='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2efe7f['message'][_0xf88f('0x6c')];return db[_0xf88f('0x6d')]['query'](_0x4e9876,{'type':db[_0xf88f('0x6e')][_0xf88f('0x6f')][_0xf88f('0x70')],'raw':!![]})['then'](function(_0x4885b8){return _0x4885b8;});})[_0xf88f('0x1f')](function(_0x128198){if(_0x128198){_0x241f19[_0xf88f('0x25')][_0xf88f('0x71')]=_0x128198[0x0];if(!_0x536f23[_0xf88f('0x54')][_0xf88f('0x5f')])return;return db[_0xf88f('0x72')][_0xf88f('0x56')]({'where':{'id':_0x536f23[_0xf88f('0x54')][_0xf88f('0x5f')],'role':'agent'},'attributes':['id',_0xf88f('0x35'),'fullname',_0xf88f('0x73'),_0xf88f('0x74')],'raw':!![]});}return null;})[_0xf88f('0x1f')](function(_0x542ceb){if(!_0x542ceb)return null;_0x241f19[_0xf88f('0x25')]['agent']=_0x542ceb;return _0x241f19;})[_0xf88f('0x1f')](function(_0x4b9cbe){if(_0x4b9cbe){if(_0x536f23[_0xf88f('0x54')][_0xf88f('0x75')]){_0x241f19[_0xf88f('0x25')][_0xf88f('0x76')]=util['format']('SIP/%s',_0x536f23[_0xf88f('0x66')][_0xf88f('0x35')]);_0x241f19['message'][_0xf88f('0x77')]=_0x241f19[_0xf88f('0x77')];_0x241f19[_0xf88f('0x25')][_0xf88f('0x78')]='accept';return respondWithRpcPromise(_0xf88f('0x79'),_0xf88f('0x79'),{'event':_0xf88f('0x7a'),'message':_0x241f19['message']},client9002)[_0xf88f('0x1f')](function(){return _0x241f19;});}return _0x241f19;}return null;})['then'](respondWithResult(_0x9f0f57,null))[_0xf88f('0x27')](handleError(_0x9f0f57,null));};var interaction_log=require('../../config/logger')(_0xf88f('0x5a'));exports[_0xf88f('0x33')]=function(_0x22a337,_0x4e641,_0x17fe13){var _0x2cdbdf={'agent':{},'channel':_0xf88f('0x5c')};if(_0x22a337['body']['id']){delete _0x22a337[_0xf88f('0x54')]['id'];}_0x22a337['body'][_0xf88f('0x5f')]=_0x22a337[_0xf88f('0x54')]['UserId']||_0x22a337[_0xf88f('0x66')]['id'];_0x2cdbdf[_0xf88f('0x60')]['id']=_0x22a337['body'][_0xf88f('0x5f')];return db[_0xf88f('0x39')][_0xf88f('0x56')]({'where':{'id':_0x22a337[_0xf88f('0x57')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x4e641,null))['then'](function(_0xb4c97){if(_0xb4c97){_0x2cdbdf[_0xf88f('0x25')]=_0xb4c97[_0xf88f('0x61')]({'plain':!![]});return db[_0xf88f('0x7b')]['find']({'where':{'id':_0xb4c97[_0xf88f('0x62')]}});}return null;})[_0xf88f('0x1f')](handleEntityNotFound(_0x4e641,null))[_0xf88f('0x1f')](function(_0x2152be){if(_0x2152be){_0x2cdbdf[_0xf88f('0x68')]=_0x2152be[_0xf88f('0x61')]({'plain':!![]});interaction_log[_0xf88f('0x20')](_0xf88f('0x7c'),_0x22a337[_0xf88f('0x66')]['id'],_0x22a337[_0xf88f('0x66')][_0xf88f('0x35')],_0x22a337[_0xf88f('0x66')][_0xf88f('0x67')],_0x2cdbdf[_0xf88f('0x68')]['id'],_0x22a337['body']?JSON[_0xf88f('0x69')](_0x22a337['body']):_0xf88f('0x6a'));return respondWithRpcPromise('RejectMessage',_0xf88f('0x7d'),_0x2cdbdf);}return null;})[_0xf88f('0x1f')](function(_0x1f29bd){var _0x308e1a=_0xf88f('0x7e')+_0x1f29bd[_0xf88f('0x25')]['ContactId'];return db[_0xf88f('0x6d')][_0xf88f('0x3f')](_0x308e1a,{'type':db[_0xf88f('0x6e')][_0xf88f('0x6f')][_0xf88f('0x70')],'raw':!![]})[_0xf88f('0x1f')](function(_0xc0c81d){return _0xc0c81d;});})['then'](function(_0x33bad3){if(_0x33bad3){_0x2cdbdf[_0xf88f('0x25')][_0xf88f('0x71')]=_0x33bad3[0x0];if(!_0x22a337[_0xf88f('0x54')][_0xf88f('0x5f')])return;return db[_0xf88f('0x72')][_0xf88f('0x56')]({'where':{'id':_0x22a337['body']['UserId'],'role':_0xf88f('0x60')},'attributes':['id',_0xf88f('0x35'),_0xf88f('0x7f'),'email',_0xf88f('0x74')],'raw':!![]});}return null;})[_0xf88f('0x1f')](function(_0xdb5850){if(!_0xdb5850)return null;_0x2cdbdf[_0xf88f('0x25')][_0xf88f('0x60')]=_0xdb5850;return _0x2cdbdf;})[_0xf88f('0x1f')](function(_0x4847e6){if(_0x4847e6){_0x4847e6[_0xf88f('0x25')]['interface']=util[_0xf88f('0x65')](_0xf88f('0x80'),_0x22a337['user']['name']);_0x4847e6['message'][_0xf88f('0x77')]=_0x2cdbdf['channel'];_0x4847e6['message'][_0xf88f('0x78')]='reject';respondWithRpcPromise(_0xf88f('0x79'),_0xf88f('0x79'),{'event':'rejectmessage','message':_0x4847e6[_0xf88f('0x25')]},client9002);return _0x2cdbdf;}return null;})[_0xf88f('0x1f')](respondWithResult(_0x4e641,null))[_0xf88f('0x27')](handleError(_0x4e641,null));};exports[_0xf88f('0x29')]=function(_0x562052,_0x5831b9,_0x45a9af){if(_0x562052['body']['id']){delete _0x562052[_0xf88f('0x54')]['id'];}var _0x1f2daa;return db[_0xf88f('0x39')]['find']({'where':{'id':_0x562052[_0xf88f('0x57')]['id']}})[_0xf88f('0x1f')](handleEntityNotFound(_0x5831b9,null))['then'](function(_0x1bc2cd){if(_0x1bc2cd){_0x1f2daa=_0x1bc2cd;return db[_0xf88f('0x81')][_0xf88f('0x56')]({'where':{'id':_0x1bc2cd[_0xf88f('0x82')]}});}})['then'](handleEntityNotFound(_0x5831b9,null))[_0xf88f('0x1f')](function(_0x31d79e){if(_0x31d79e){logger[_0xf88f('0x22')](_0xf88f('0x83'),_0xf88f('0x29'),'received\x20delivery\x20report\x20from',_0x31d79e[_0xf88f('0x4c')],util[_0xf88f('0x84')](_0x562052[_0xf88f('0x54')],{'showHidden':![],'depth':null}));switch(_0x31d79e['type']){case _0xf88f('0x85'):if(_0x562052[_0xf88f('0x54')][_0xf88f('0x86')]&&_0x562052['body'][_0xf88f('0x86')]===_0x1f2daa[_0xf88f('0x87')]&&_0x562052[_0xf88f('0x54')]['MessageStatus']&&_0x562052[_0xf88f('0x54')][_0xf88f('0x88')]===_0xf88f('0x5d')){return _0x1f2daa[_0xf88f('0x55')]({'read':!![]});}else{logger['error'](_0xf88f('0x89'),'status',_0xf88f('0x85'),util[_0xf88f('0x84')](_0x562052[_0xf88f('0x54')],{'showHidden':![],'depth':null}));}break;}return _0x1f2daa;}})[_0xf88f('0x1f')](respondWithResult(_0x5831b9,null))[_0xf88f('0x27')](handleError(_0x5831b9,null));};
\ No newline at end of file
index b964da7..a51de22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3d4=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','../../mysqldb','WhatsappMessage'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe3d4,0xc6));var _0x4e3d=function(_0x5a9017,_0x4312fc){_0x5a9017=_0x5a9017-0x0;var _0x596e52=_0xe3d4[_0x5a9017];return _0x596e52;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require(_0x4e3d('0x0'))['db'][_0x4e3d('0x1')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x4e3d('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4e3d('0x3'),'afterDestroy':_0x4e3d('0x4')};function emitEvent(_0x5a7634){return function(_0x1db7a4,_0x4ece82,_0x438b9a){WhatsappMessageEvents[_0x4e3d('0x5')](_0x5a7634+':'+_0x1db7a4['id'],_0x1db7a4);WhatsappMessageEvents['emit'](_0x5a7634,_0x1db7a4);_0x438b9a(null);};}for(var e in events){if(events[_0x4e3d('0x6')](e)){var event=events[e];WhatsappMessage[_0x4e3d('0x7')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
+var _0xd757=['setMaxListeners','remove','emit','hook','exports','events','../../mysqldb','WhatsappMessage'];(function(_0x30441d,_0x38cd00){var _0x158e9c=function(_0x5f3bf5){while(--_0x5f3bf5){_0x30441d['push'](_0x30441d['shift']());}};_0x158e9c(++_0x38cd00);}(_0xd757,0x1e5));var _0x7d75=function(_0xb4062e,_0x422b04){_0xb4062e=_0xb4062e-0x0;var _0x5c9a6e=_0xd757[_0xb4062e];return _0x5c9a6e;};'use strict';var EventEmitter=require(_0x7d75('0x0'));var WhatsappMessage=require(_0x7d75('0x1'))['db'][_0x7d75('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x7d75('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x7d75('0x4')};function emitEvent(_0x2772a3){return function(_0x5e4a4c,_0xa7df66,_0x10d11a){WhatsappMessageEvents[_0x7d75('0x5')](_0x2772a3+':'+_0x5e4a4c['id'],_0x5e4a4c);WhatsappMessageEvents['emit'](_0x2772a3,_0x5e4a4c);_0x10d11a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappMessage[_0x7d75('0x6')](e,emitEvent(event));}}module[_0x7d75('0x7')]=WhatsappMessageEvents;
\ No newline at end of file
index b7c2bc8..e0ddcad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc23c=['findOne','WhatsappInteractionId','then','createdAt','catch','error','WhatsappAccount','find','WhatsappAccountId','type','twilio','accountSid','authToken','phone','messages','create','whatsapp:','remote','/status?token=','token','sid','update','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappMessage.attributes','exports','define','WhatsappMessage','whatsapp_messages','messageId','FULLTEXT','models','direction','toLowerCase','secret','isNil','UserId','WhatsappInteraction'];(function(_0xf19ef8,_0x5a852e){var _0x57ec4b=function(_0x1273cd){while(--_0x1273cd){_0xf19ef8['push'](_0xf19ef8['shift']());}};_0x57ec4b(++_0x5a852e);}(_0xc23c,0x120));var _0xcc23=function(_0x454338,_0x21e351){_0x454338=_0x454338-0x0;var _0x6687e6=_0xc23c[_0x454338];return _0x6687e6;};'use strict';var _=require(_0xcc23('0x0'));var util=require(_0xcc23('0x1'));var logger=require(_0xcc23('0x2'))(_0xcc23('0x3'));var moment=require(_0xcc23('0x4'));var BPromise=require(_0xcc23('0x5'));var rp=require(_0xcc23('0x6'));var fs=require('fs');var path=require(_0xcc23('0x7'));var rimraf=require(_0xcc23('0x8'));var config=require(_0xcc23('0x9'));var attributes=require(_0xcc23('0xa'));module[_0xcc23('0xb')]=function(_0x420c4c,_0x27ac62){return _0x420c4c[_0xcc23('0xc')](_0xcc23('0xd'),attributes,{'tableName':_0xcc23('0xe'),'paranoid':![],'indexes':[{'name':_0xcc23('0xf'),'fields':[_0xcc23('0xf')]},{'name':'fti_whatsapp_messages','fields':['body'],'type':_0xcc23('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x117773,_0x5b95f7,_0x300f4c){var _0x45a1c0=_0x420c4c[_0xcc23('0x11')];var _0x575a4a=_0x117773['get']({'plain':!![]});if(_0x575a4a[_0xcc23('0x12')][_0xcc23('0x13')]()==='in'||_0x575a4a[_0xcc23('0x12')][_0xcc23('0x13')]()==='out'&&!_0x575a4a[_0xcc23('0x14')]&&!_[_0xcc23('0x15')](_0x575a4a[_0xcc23('0x16')])){_0x45a1c0[_0xcc23('0x17')][_0xcc23('0x18')]({'where':{'id':_0x575a4a[_0xcc23('0x19')]}})[_0xcc23('0x1a')](function(_0xca4d8b){if(_0xca4d8b){_0xca4d8b['update']({'lastMsgAt':_0x575a4a[_0xcc23('0x1b')],'lastMsgDirection':_0x575a4a['direction'][_0xcc23('0x13')]()});}})[_0xcc23('0x1c')](function(_0x2e7fe4){console[_0xcc23('0x1d')](_0x2e7fe4);});}if(_0x575a4a['direction']==='out'&&!_0x575a4a[_0xcc23('0x14')]){var _0x39417f;_0x45a1c0[_0xcc23('0x1e')][_0xcc23('0x1f')]({'where':{'id':_0x575a4a[_0xcc23('0x20')]},'raw':!![]})[_0xcc23('0x1a')](function(_0x3639c1){_0x39417f=_0x3639c1;if(_0x39417f&&_0x39417f[_0xcc23('0x21')]){switch(_0x39417f['type']){case _0xcc23('0x22'):var _0x38b6a5=require(_0xcc23('0x22'));if(_0x39417f[_0xcc23('0x23')]&&_0x39417f[_0xcc23('0x24')]&&_0x39417f[_0xcc23('0x25')]){var _0x21393d=new _0x38b6a5(_0x39417f[_0xcc23('0x23')],_0x39417f['authToken']);_0x21393d[_0xcc23('0x26')][_0xcc23('0x27')]({'body':_0x575a4a['body'],'to':_0xcc23('0x28')+_0x575a4a[_0xcc23('0x25')],'from':_0xcc23('0x28')+_0x39417f[_0xcc23('0x25')],'statusCallback':_0x39417f[_0xcc23('0x29')]+'/api/whatsapp/messages/'+_0x575a4a['id']+_0xcc23('0x2a')+_0x39417f[_0xcc23('0x2b')]})['then'](function(_0x476624){if(_0x476624[_0xcc23('0x2c')]){return _0x117773[_0xcc23('0x2d')]({'messageId':_0x476624[_0xcc23('0x2c')]});}})[_0xcc23('0x1c')](function(_0x213107){logger[_0xcc23('0x1d')](_0xcc23('0x2e'),_0xcc23('0x2f'),_0xcc23('0x22'),util[_0xcc23('0x30')](_0x213107,{'showHidden':![],'depth':null}));});}else{logger[_0xcc23('0x1d')](_0xcc23('0x2e'),_0xcc23('0x2f'),_0xcc23('0x22'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;}}})[_0xcc23('0x31')](function(){_0x300f4c();});}else{_0x300f4c();}}},'charset':_0xcc23('0x32'),'collate':_0xcc23('0x33')});};
\ No newline at end of file
+var _0x6d94=['/status?token=','token','sid','inspect','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','finally','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./whatsappMessage.attributes','define','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','direction','toLowerCase','secret','isNil','findOne','WhatsappInteractionId','then','update','createdAt','catch','error','find','WhatsappAccountId','type','twilio','accountSid','phone','authToken','messages','whatsapp:','/api/whatsapp/messages/'];(function(_0x23eb66,_0x2b1d4c){var _0x56d482=function(_0x228ba3){while(--_0x228ba3){_0x23eb66['push'](_0x23eb66['shift']());}};_0x56d482(++_0x2b1d4c);}(_0x6d94,0x14b));var _0x46d9=function(_0xfd1b5c,_0x4585d0){_0xfd1b5c=_0xfd1b5c-0x0;var _0x2e5407=_0x6d94[_0xfd1b5c];return _0x2e5407;};'use strict';var _=require(_0x46d9('0x0'));var util=require(_0x46d9('0x1'));var logger=require(_0x46d9('0x2'))(_0x46d9('0x3'));var moment=require(_0x46d9('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x46d9('0x5'));var rimraf=require(_0x46d9('0x6'));var config=require(_0x46d9('0x7'));var attributes=require(_0x46d9('0x8'));module['exports']=function(_0x13e730,_0x574d34){return _0x13e730[_0x46d9('0x9')](_0x46d9('0xa'),attributes,{'tableName':_0x46d9('0xb'),'paranoid':![],'indexes':[{'name':_0x46d9('0xc'),'fields':[_0x46d9('0xc')]},{'name':_0x46d9('0xd'),'fields':[_0x46d9('0xe')],'type':_0x46d9('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x59730d,_0x5c586f,_0xacc4ae){var _0x3c41a8=_0x13e730['models'];var _0x2bd346=_0x59730d['get']({'plain':!![]});if(_0x2bd346[_0x46d9('0x10')][_0x46d9('0x11')]()==='in'||_0x2bd346[_0x46d9('0x10')][_0x46d9('0x11')]()==='out'&&!_0x2bd346[_0x46d9('0x12')]&&!_[_0x46d9('0x13')](_0x2bd346['UserId'])){_0x3c41a8['WhatsappInteraction'][_0x46d9('0x14')]({'where':{'id':_0x2bd346[_0x46d9('0x15')]}})[_0x46d9('0x16')](function(_0x1b5e88){if(_0x1b5e88){_0x1b5e88[_0x46d9('0x17')]({'lastMsgAt':_0x2bd346[_0x46d9('0x18')],'lastMsgDirection':_0x2bd346[_0x46d9('0x10')][_0x46d9('0x11')]()});}})[_0x46d9('0x19')](function(_0x2e42c0){console[_0x46d9('0x1a')](_0x2e42c0);});}if(_0x2bd346[_0x46d9('0x10')]==='out'&&!_0x2bd346[_0x46d9('0x12')]){var _0x422ae4;_0x3c41a8['WhatsappAccount'][_0x46d9('0x1b')]({'where':{'id':_0x2bd346[_0x46d9('0x1c')]},'raw':!![]})[_0x46d9('0x16')](function(_0x20f6b3){_0x422ae4=_0x20f6b3;if(_0x422ae4&&_0x422ae4[_0x46d9('0x1d')]){switch(_0x422ae4[_0x46d9('0x1d')]){case'twilio':var _0x225fed=require(_0x46d9('0x1e'));if(_0x422ae4[_0x46d9('0x1f')]&&_0x422ae4['authToken']&&_0x422ae4[_0x46d9('0x20')]){var _0x203398=new _0x225fed(_0x422ae4[_0x46d9('0x1f')],_0x422ae4[_0x46d9('0x21')]);_0x203398[_0x46d9('0x22')]['create']({'body':_0x2bd346['body'],'to':_0x46d9('0x23')+_0x2bd346['phone'],'from':_0x46d9('0x23')+_0x422ae4['phone'],'statusCallback':_0x422ae4['remote']+_0x46d9('0x24')+_0x2bd346['id']+_0x46d9('0x25')+_0x422ae4[_0x46d9('0x26')]})[_0x46d9('0x16')](function(_0x118ba3){if(_0x118ba3[_0x46d9('0x27')]){return _0x59730d[_0x46d9('0x17')]({'messageId':_0x118ba3[_0x46d9('0x27')]});}})['catch'](function(_0x3392d9){logger[_0x46d9('0x1a')]('WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','twilio',util[_0x46d9('0x28')](_0x3392d9,{'showHidden':![],'depth':null}));});}else{logger[_0x46d9('0x1a')](_0x46d9('0x29'),_0x46d9('0x2a'),_0x46d9('0x1e'),_0x46d9('0x2b'));}break;}}})[_0x46d9('0x2c')](function(){_0xacc4ae();});}else{_0xacc4ae();}}},'charset':'utf8mb4','collate':_0x46d9('0x2d')});};
\ No newline at end of file
index a3204ae..19f5ccc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8111=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateWhatsappMessage','WhatsappMessage','create','body','options','raw','lodash','util','moment','bluebird','randomstring'];(function(_0x3227c1,_0x4318c5){var _0x31fd48=function(_0x5c5850){while(--_0x5c5850){_0x3227c1['push'](_0x3227c1['shift']());}};_0x31fd48(++_0x4318c5);}(_0x8111,0xf7));var _0x1811=function(_0x40a14a,_0x94c5dc){_0x40a14a=_0x40a14a-0x0;var _0x55447b=_0x8111[_0x40a14a];return _0x55447b;};'use strict';var _=require(_0x1811('0x0'));var util=require(_0x1811('0x1'));var moment=require(_0x1811('0x2'));var BPromise=require(_0x1811('0x3'));var rs=require(_0x1811('0x4'));var fs=require('fs');var Redis=require(_0x1811('0x5'));var db=require(_0x1811('0x6'))['db'];var utils=require(_0x1811('0x7'));var logger=require(_0x1811('0x8'))(_0x1811('0x9'));var config=require(_0x1811('0xa'));var jayson=require(_0x1811('0xb'));var client=jayson[_0x1811('0xc')]['http']({'port':0x232a});config['redis']=_[_0x1811('0xd')](config['redis'],{'host':_0x1811('0xe'),'port':0x18eb});var socket=require(_0x1811('0xf'))(new Redis(config['redis']));require(_0x1811('0x10'))[_0x1811('0x11')](socket);function respondWithRpcPromise(_0x598cfb,_0x559ee5,_0x2030bf){return new BPromise(function(_0x38c857,_0x119c68){return client[_0x1811('0x12')](_0x598cfb,_0x2030bf)[_0x1811('0x13')](function(_0xfb1fae){logger[_0x1811('0x14')](_0x1811('0x15'),_0x559ee5,_0x1811('0x16'));logger[_0x1811('0x17')](_0x1811('0x18'),_0x559ee5,'request\x20sent',JSON[_0x1811('0x19')](_0xfb1fae));if(_0xfb1fae['error']){if(_0xfb1fae[_0x1811('0x1a')]['code']===0x1f4){logger[_0x1811('0x1a')]('WhatsappMessage,\x20%s,\x20%s',_0x559ee5,_0xfb1fae[_0x1811('0x1a')][_0x1811('0x1b')]);return _0x119c68(_0xfb1fae['error'][_0x1811('0x1b')]);}logger[_0x1811('0x1a')](_0x1811('0x15'),_0x559ee5,_0xfb1fae[_0x1811('0x1a')][_0x1811('0x1b')]);return _0x38c857(_0xfb1fae['error'][_0x1811('0x1b')]);}else{logger[_0x1811('0x14')]('WhatsappMessage,\x20%s,\x20%s',_0x559ee5,_0x1811('0x16'));_0x38c857(_0xfb1fae[_0x1811('0x1c')][_0x1811('0x1b')]);}})[_0x1811('0x1d')](function(_0x4087c5){logger[_0x1811('0x1a')]('WhatsappMessage,\x20%s,\x20%s',_0x559ee5,_0x4087c5);_0x119c68(_0x4087c5);});});}exports[_0x1811('0x1e')]=function(_0x4beae5){var _0x2896a4=this;return new Promise(function(_0x15cb94,_0x40efad){return db[_0x1811('0x1f')][_0x1811('0x20')](_0x4beae5[_0x1811('0x21')],{'raw':_0x4beae5[_0x1811('0x22')]?_0x4beae5[_0x1811('0x22')][_0x1811('0x23')]===undefined?!![]:![]:!![]})[_0x1811('0x13')](function(_0x31258b){logger[_0x1811('0x14')](_0x1811('0x1e'),_0x4beae5);logger[_0x1811('0x17')](_0x1811('0x1e'),_0x4beae5,JSON[_0x1811('0x19')](_0x31258b));_0x15cb94(_0x31258b);})[_0x1811('0x1d')](function(_0x51f2c2){logger[_0x1811('0x1a')](_0x1811('0x1e'),_0x51f2c2[_0x1811('0x1b')],_0x4beae5);_0x40efad(_0x2896a4[_0x1811('0x1a')](0x1f4,_0x51f2c2[_0x1811('0x1b')]));});});};
\ No newline at end of file
+var _0xa29e=['socket.io-emitter','./whatsappMessage.socket','register','info','request\x20sent','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','message','WhatsappMessage,\x20%s,\x20%s','result','WhatsappMessage','create','body','options','then','CreateWhatsappMessage','debug','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost'];(function(_0x188945,_0x2aafa5){var _0x4959c2=function(_0x534f43){while(--_0x534f43){_0x188945['push'](_0x188945['shift']());}};_0x4959c2(++_0x2aafa5);}(_0xa29e,0x1d3));var _0xea29=function(_0x32a81f,_0x4eee66){_0x32a81f=_0x32a81f-0x0;var _0x5b67a2=_0xa29e[_0x32a81f];return _0x5b67a2;};'use strict';var _=require(_0xea29('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xea29('0x1'));var rs=require(_0xea29('0x2'));var fs=require('fs');var Redis=require(_0xea29('0x3'));var db=require(_0xea29('0x4'))['db'];var utils=require(_0xea29('0x5'));var logger=require(_0xea29('0x6'))(_0xea29('0x7'));var config=require(_0xea29('0x8'));var jayson=require(_0xea29('0x9'));var client=jayson['client'][_0xea29('0xa')]({'port':0x232a});config[_0xea29('0xb')]=_['defaults'](config[_0xea29('0xb')],{'host':_0xea29('0xc'),'port':0x18eb});var socket=require(_0xea29('0xd'))(new Redis(config[_0xea29('0xb')]));require(_0xea29('0xe'))[_0xea29('0xf')](socket);function respondWithRpcPromise(_0x1f98a3,_0x5a5f87,_0x29b3a7){return new BPromise(function(_0x1376d7,_0x455e3d){return client['request'](_0x1f98a3,_0x29b3a7)['then'](function(_0xa0dd68){logger[_0xea29('0x10')]('WhatsappMessage,\x20%s,\x20%s',_0x5a5f87,_0xea29('0x11'));logger['debug'](_0xea29('0x12'),_0x5a5f87,_0xea29('0x11'),JSON[_0xea29('0x13')](_0xa0dd68));if(_0xa0dd68['error']){if(_0xa0dd68['error'][_0xea29('0x14')]===0x1f4){logger[_0xea29('0x15')]('WhatsappMessage,\x20%s,\x20%s',_0x5a5f87,_0xa0dd68[_0xea29('0x15')][_0xea29('0x16')]);return _0x455e3d(_0xa0dd68[_0xea29('0x15')][_0xea29('0x16')]);}logger[_0xea29('0x15')](_0xea29('0x17'),_0x5a5f87,_0xa0dd68[_0xea29('0x15')][_0xea29('0x16')]);return _0x1376d7(_0xa0dd68[_0xea29('0x15')]['message']);}else{logger[_0xea29('0x10')](_0xea29('0x17'),_0x5a5f87,_0xea29('0x11'));_0x1376d7(_0xa0dd68[_0xea29('0x18')]['message']);}})['catch'](function(_0x3aa193){logger['error'](_0xea29('0x17'),_0x5a5f87,_0x3aa193);_0x455e3d(_0x3aa193);});});}exports['CreateWhatsappMessage']=function(_0x57ed17){var _0x2b4601=this;return new Promise(function(_0x10304f,_0x3c989e){return db[_0xea29('0x19')][_0xea29('0x1a')](_0x57ed17[_0xea29('0x1b')],{'raw':_0x57ed17['options']?_0x57ed17[_0xea29('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0xea29('0x1d')](function(_0x1a5de6){logger['info'](_0xea29('0x1e'),_0x57ed17);logger[_0xea29('0x1f')](_0xea29('0x1e'),_0x57ed17,JSON[_0xea29('0x13')](_0x1a5de6));_0x10304f(_0x1a5de6);})['catch'](function(_0x5587df){logger[_0xea29('0x15')](_0xea29('0x1e'),_0x5587df[_0xea29('0x16')],_0x57ed17);_0x3c989e(_0x2b4601[_0xea29('0x15')](0x1f4,_0x5587df[_0xea29('0x16')]));});});};
\ No newline at end of file
index 2780f7a..50f7fd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5ad=['removeListener','register','length','./whatsappMessage.events','save','update','emit'];(function(_0x418e27,_0x5ccff0){var _0x92b433=function(_0x413cd4){while(--_0x413cd4){_0x418e27['push'](_0x418e27['shift']());}};_0x92b433(++_0x5ccff0);}(_0xc5ad,0xb2));var _0xdc5a=function(_0x348f8c,_0x5900d9){_0x348f8c=_0x348f8c-0x0;var _0x36dc3a=_0xc5ad[_0x348f8c];return _0x36dc3a;};'use strict';var WhatsappMessageEvents=require(_0xdc5a('0x0'));var events=[_0xdc5a('0x1'),'remove',_0xdc5a('0x2')];function createListener(_0x23e969,_0x4bcfef){return function(_0x1d3579){_0x4bcfef[_0xdc5a('0x3')](_0x23e969,_0x1d3579);};}function removeListener(_0x41447c,_0x534aa9){return function(){WhatsappMessageEvents[_0xdc5a('0x4')](_0x41447c,_0x534aa9);};}exports[_0xdc5a('0x5')]=function(_0x2a725e){for(var _0x4510a8=0x0,_0x1fa514=events[_0xdc5a('0x6')];_0x4510a8<_0x1fa514;_0x4510a8++){var _0x5e84bf=events[_0x4510a8];var _0x4e1d99=createListener('whatsappMessage:'+_0x5e84bf,_0x2a725e);WhatsappMessageEvents['on'](_0x5e84bf,_0x4e1d99);}};
\ No newline at end of file
+var _0x08b5=['update','register','length','./whatsappMessage.events','save'];(function(_0x1265ed,_0x4b85e8){var _0x5ac459=function(_0xf0c114){while(--_0xf0c114){_0x1265ed['push'](_0x1265ed['shift']());}};_0x5ac459(++_0x4b85e8);}(_0x08b5,0x14d));var _0x508b=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0x08b5[_0x2dea24];return _0x309d58;};'use strict';var WhatsappMessageEvents=require(_0x508b('0x0'));var events=[_0x508b('0x1'),'remove',_0x508b('0x2')];function createListener(_0x350610,_0x4e6fd4){return function(_0xd1c122){_0x4e6fd4['emit'](_0x350610,_0xd1c122);};}function removeListener(_0x4f4a97,_0x3841c4){return function(){WhatsappMessageEvents['removeListener'](_0x4f4a97,_0x3841c4);};}exports[_0x508b('0x3')]=function(_0x4bd7dd){for(var _0x13351b=0x0,_0x23dad2=events[_0x508b('0x4')];_0x13351b<_0x23dad2;_0x13351b++){var _0x517804=events[_0x13351b];var _0xb5c707=createListener('whatsappMessage:'+_0x517804,_0x4bd7dd);WhatsappMessageEvents['on'](_0x517804,_0xb5c707);}};
\ No newline at end of file
index 2a19671..6e96864 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30d7=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/members','getMembers','/:id/teams','/:id/users','getAgents','post','addTeams','addAgents','put','update','destroy','removeTeams','removeAgents','exports','multer','util'];(function(_0x200aa5,_0x197802){var _0x458200=function(_0x594959){while(--_0x594959){_0x200aa5['push'](_0x200aa5['shift']());}};_0x458200(++_0x197802);}(_0x30d7,0x99));var _0x730d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x30d7[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x730d('0x0'));var util=require(_0x730d('0x1'));var path=require('path');var timeout=require(_0x730d('0x2'));var express=require(_0x730d('0x3'));var router=express[_0x730d('0x4')]();var fs_extra=require(_0x730d('0x5'));var auth=require(_0x730d('0x6'));var interaction=require(_0x730d('0x7'));var config=require(_0x730d('0x8'));var controller=require(_0x730d('0x9'));router[_0x730d('0xa')]('/',auth['isAuthenticated'](),controller[_0x730d('0xb')]);router[_0x730d('0xa')](_0x730d('0xc'),auth[_0x730d('0xd')](),controller[_0x730d('0xe')]);router['get'](_0x730d('0xf'),auth[_0x730d('0xd')](),controller[_0x730d('0x10')]);router[_0x730d('0xa')](_0x730d('0x11'),auth[_0x730d('0xd')](),controller[_0x730d('0x12')]);router[_0x730d('0xa')](_0x730d('0x13'),auth[_0x730d('0xd')](),controller['getTeams']);router[_0x730d('0xa')](_0x730d('0x14'),auth[_0x730d('0xd')](),controller[_0x730d('0x15')]);router[_0x730d('0x16')]('/',auth['isAuthenticated'](),controller['create']);router[_0x730d('0x16')](_0x730d('0x13'),auth[_0x730d('0xd')](),controller[_0x730d('0x17')]);router[_0x730d('0x16')](_0x730d('0x14'),auth[_0x730d('0xd')](),controller[_0x730d('0x18')]);router[_0x730d('0x19')]('/:id',auth[_0x730d('0xd')](),controller[_0x730d('0x1a')]);router['delete'](_0x730d('0xf'),auth['isAuthenticated'](),controller[_0x730d('0x1b')]);router['delete'](_0x730d('0x13'),auth[_0x730d('0xd')](),controller[_0x730d('0x1c')]);router['delete'](_0x730d('0x14'),auth[_0x730d('0xd')](),controller[_0x730d('0x1d')]);module[_0x730d('0x1e')]=router;
\ No newline at end of file
+var _0xd07e=['removeTeams','removeAgents','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappQueue.controller','get','index','/describe','isAuthenticated','describe','/:id','show','getMembers','/:id/teams','getAgents','create','post','addTeams','/:id/users','addAgents','delete','destroy'];(function(_0x34e948,_0x5ab293){var _0x5607ab=function(_0x417e1c){while(--_0x417e1c){_0x34e948['push'](_0x34e948['shift']());}};_0x5607ab(++_0x5ab293);}(_0xd07e,0x8e));var _0xed07=function(_0x4c5b52,_0x1a945a){_0x4c5b52=_0x4c5b52-0x0;var _0x24fce3=_0xd07e[_0x4c5b52];return _0x24fce3;};'use strict';var multer=require(_0xed07('0x0'));var util=require(_0xed07('0x1'));var path=require(_0xed07('0x2'));var timeout=require(_0xed07('0x3'));var express=require(_0xed07('0x4'));var router=express['Router']();var fs_extra=require(_0xed07('0x5'));var auth=require(_0xed07('0x6'));var interaction=require(_0xed07('0x7'));var config=require('../../config/environment');var controller=require(_0xed07('0x8'));router[_0xed07('0x9')]('/',auth['isAuthenticated'](),controller[_0xed07('0xa')]);router['get'](_0xed07('0xb'),auth[_0xed07('0xc')](),controller[_0xed07('0xd')]);router[_0xed07('0x9')](_0xed07('0xe'),auth[_0xed07('0xc')](),controller[_0xed07('0xf')]);router[_0xed07('0x9')]('/:id/members',auth['isAuthenticated'](),controller[_0xed07('0x10')]);router[_0xed07('0x9')](_0xed07('0x11'),auth[_0xed07('0xc')](),controller['getTeams']);router['get']('/:id/users',auth[_0xed07('0xc')](),controller[_0xed07('0x12')]);router['post']('/',auth[_0xed07('0xc')](),controller[_0xed07('0x13')]);router[_0xed07('0x14')](_0xed07('0x11'),auth[_0xed07('0xc')](),controller[_0xed07('0x15')]);router[_0xed07('0x14')](_0xed07('0x16'),auth['isAuthenticated'](),controller[_0xed07('0x17')]);router['put']('/:id',auth[_0xed07('0xc')](),controller['update']);router[_0xed07('0x18')](_0xed07('0xe'),auth['isAuthenticated'](),controller[_0xed07('0x19')]);router[_0xed07('0x18')](_0xed07('0x11'),auth['isAuthenticated'](),controller[_0xed07('0x1a')]);router['delete']('/:id/users',auth['isAuthenticated'](),controller[_0xed07('0x1b')]);module['exports']=router;
\ No newline at end of file
index 12c26a2..b707aff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf1d=['STRING','name','ENUM','rrmemory','roundrobin','sequelize','exports'];(function(_0x5269c7,_0x130a78){var _0x5735ba=function(_0x3eb0b9){while(--_0x3eb0b9){_0x5269c7['push'](_0x5269c7['shift']());}};_0x5735ba(++_0x130a78);}(_0xaf1d,0x9f));var _0xdaf1=function(_0x5835b4,_0x3f9771){_0x5835b4=_0x5835b4-0x0;var _0x5809aa=_0xaf1d[_0x5835b4];return _0x5809aa;};'use strict';var Sequelize=require(_0xdaf1('0x0'));module[_0xdaf1('0x1')]={'name':{'type':Sequelize[_0xdaf1('0x2')],'unique':_0xdaf1('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xdaf1('0x4')](_0xdaf1('0x5'),'beepall',_0xdaf1('0x6'))},'description':{'type':Sequelize[_0xdaf1('0x2')]}};
\ No newline at end of file
+var _0x1e69=['roundrobin','exports','STRING','name','INTEGER','beepall'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x1e69,0x85));var _0x91e6=function(_0x25a45a,_0x156e4b){_0x25a45a=_0x25a45a-0x0;var _0x237f87=_0x1e69[_0x25a45a];return _0x237f87;};'use strict';var Sequelize=require('sequelize');module[_0x91e6('0x0')]={'name':{'type':Sequelize[_0x91e6('0x1')],'unique':_0x91e6('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x91e6('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0x91e6('0x4'),_0x91e6('0x5'))},'description':{'type':Sequelize[_0x91e6('0x1')]}};
\ No newline at end of file
index c35acd1..0ebd1ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2f9=['count','limit','Content-Range','apply','save','update','then','get','sendStatus','error','stack','name','send','map','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','where','filters','merge','type','VIRTUAL','filter','options','WhatsappQueue','includeAll','include','findAll','rows','show','params','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserWhatsappQueue','order','sort','pick','WhatsappQueueId','findAndCountAll','agent','whatsappPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','addTeams','ids','Team','User','Agents','online','interface','sequelize','transaction','each','findOrCreate','forEach','emit','userWhatsappQueue:save','from','join','user_has_teams','clone','ut.UserId\x20=\x20?','toString','every','includes','all','compact','value','removeTeams','isEmpty','removeAgents','userWhatsappQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','moment','bluebird','mustache','util','to-csv','lodash','squel','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','localhost','socket.io-emitter','./whatsappQueue.socket','register','status','end','json','offset','undefined'];(function(_0xae282f,_0x2d9368){var _0x5f46d4=function(_0x4f703e){while(--_0x4f703e){_0xae282f['push'](_0xae282f['shift']());}};_0x5f46d4(++_0x2d9368);}(_0xa2f9,0x1f4));var _0x9a2f=function(_0x20a330,_0x4b6f2b){_0x20a330=_0x20a330-0x0;var _0xf218e1=_0xa2f9[_0x20a330];return _0xf218e1;};'use strict';var emlformat=require(_0x9a2f('0x0'));var rimraf=require(_0x9a2f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x9a2f('0x2'));var BPromise=require(_0x9a2f('0x3'));var Mustache=require(_0x9a2f('0x4'));var util=require(_0x9a2f('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x9a2f('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9a2f('0x7'));var squel=require(_0x9a2f('0x8'));var crypto=require('crypto');var jsforce=require(_0x9a2f('0x9'));var deskjs=require(_0x9a2f('0xa'));var toCsv=require(_0x9a2f('0x6'));var querystring=require(_0x9a2f('0xb'));var Papa=require(_0x9a2f('0xc'));var Redis=require('ioredis');var authService=require(_0x9a2f('0xd'));var qs=require(_0x9a2f('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9a2f('0xf'));var logger=require(_0x9a2f('0x10'))(_0x9a2f('0x11'));var utils=require(_0x9a2f('0x12'));var config=require(_0x9a2f('0x13'));var licenseUtil=require(_0x9a2f('0x14'));var db=require(_0x9a2f('0x15'))['db'];config[_0x9a2f('0x16')]=_['defaults'](config[_0x9a2f('0x16')],{'host':_0x9a2f('0x17'),'port':0x18eb});var socket=require(_0x9a2f('0x18'))(new Redis(config[_0x9a2f('0x16')]));require(_0x9a2f('0x19'))[_0x9a2f('0x1a')](socket);function respondWithStatusCode(_0xc6a4b6,_0x1919a1){_0x1919a1=_0x1919a1||0xcc;return function(_0x28bab1){if(_0x28bab1){return _0xc6a4b6['sendStatus'](_0x1919a1);}return _0xc6a4b6[_0x9a2f('0x1b')](_0x1919a1)[_0x9a2f('0x1c')]();};}function respondWithResult(_0x2d77f3,_0x4f57a2){_0x4f57a2=_0x4f57a2||0xc8;return function(_0x32ef0f){if(_0x32ef0f){return _0x2d77f3[_0x9a2f('0x1b')](_0x4f57a2)[_0x9a2f('0x1d')](_0x32ef0f);}};}function respondWithFilteredResult(_0x25a58f,_0x5635f6){return function(_0x4032f8){if(_0x4032f8){var _0x4c3681=typeof _0x5635f6[_0x9a2f('0x1e')]==='undefined'&&typeof _0x5635f6['limit']===_0x9a2f('0x1f');var _0x48433a=_0x4032f8[_0x9a2f('0x20')];var _0x5b5773=_0x4c3681?0x0:_0x5635f6[_0x9a2f('0x1e')];var _0x2cb551=_0x4c3681?_0x4032f8[_0x9a2f('0x20')]:_0x5635f6[_0x9a2f('0x1e')]+_0x5635f6[_0x9a2f('0x21')];var _0x5f0ab4;if(_0x2cb551>=_0x48433a){_0x2cb551=_0x48433a;_0x5f0ab4=0xc8;}else{_0x5f0ab4=0xce;}_0x25a58f[_0x9a2f('0x1b')](_0x5f0ab4);return _0x25a58f['set'](_0x9a2f('0x22'),_0x5b5773+'-'+_0x2cb551+'/'+_0x48433a)[_0x9a2f('0x1d')](_0x4032f8);}return null;};}function patchUpdates(_0x73a2cf){return function(_0x3315d7){try{jsonpatch[_0x9a2f('0x23')](_0x3315d7,_0x73a2cf,!![]);}catch(_0x2e53f6){return BPromise['reject'](_0x2e53f6);}return _0x3315d7[_0x9a2f('0x24')]();};}function saveUpdates(_0x427fc7,_0x49043f){return function(_0xd1ef02){if(_0xd1ef02){return _0xd1ef02[_0x9a2f('0x25')](_0x427fc7)[_0x9a2f('0x26')](function(_0x90684c){return _0x90684c;});}return null;};}function removeEntity(_0x3b9cf6,_0x2497a2){return function(_0x38167f){if(_0x38167f){return _0x38167f['destroy']()[_0x9a2f('0x26')](function(){var _0x557924=_0x38167f[_0x9a2f('0x27')]({'plain':!![]});var _0xdb6f5b='WhatsappQueues';return db['UserProfileResource']['destroy']({'where':{'type':_0xdb6f5b,'resourceId':_0x557924['id']}})[_0x9a2f('0x26')](function(){return _0x38167f;});})[_0x9a2f('0x26')](function(){_0x3b9cf6['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x57e1bd,_0x52481e){return function(_0x4bcd31){if(!_0x4bcd31){_0x57e1bd[_0x9a2f('0x28')](0x194);}return _0x4bcd31;};}function handleError(_0x5eb9e9,_0x44a4ac){_0x44a4ac=_0x44a4ac||0x1f4;return function(_0x527cd9){logger[_0x9a2f('0x29')](_0x527cd9[_0x9a2f('0x2a')]);if(_0x527cd9[_0x9a2f('0x2b')]){delete _0x527cd9['name'];}_0x5eb9e9[_0x9a2f('0x1b')](_0x44a4ac)[_0x9a2f('0x2c')](_0x527cd9);};}exports['index']=function(_0x5a38ab,_0x1fe767){var _0x1267f9={},_0x4fc67e={},_0x16201a={'count':0x0,'rows':[]};var _0x59f3a5=_[_0x9a2f('0x2d')](db['WhatsappQueue'][_0x9a2f('0x2e')],function(_0x48d088){return{'name':_0x48d088[_0x9a2f('0x2f')],'type':_0x48d088['type'][_0x9a2f('0x30')]};});_0x4fc67e[_0x9a2f('0x31')]=_[_0x9a2f('0x2d')](_0x59f3a5,_0x9a2f('0x2b'));_0x4fc67e[_0x9a2f('0x32')]=_[_0x9a2f('0x33')](_0x5a38ab[_0x9a2f('0x32')]);_0x4fc67e['filters']=_[_0x9a2f('0x34')](_0x4fc67e[_0x9a2f('0x31')],_0x4fc67e[_0x9a2f('0x32')]);_0x1267f9[_0x9a2f('0x35')]=_['intersection'](_0x4fc67e[_0x9a2f('0x31')],qs['fields'](_0x5a38ab[_0x9a2f('0x32')][_0x9a2f('0x36')]));_0x1267f9[_0x9a2f('0x35')]=_0x1267f9[_0x9a2f('0x35')][_0x9a2f('0x37')]?_0x1267f9[_0x9a2f('0x35')]:_0x4fc67e[_0x9a2f('0x31')];if(!_0x5a38ab[_0x9a2f('0x32')][_0x9a2f('0x38')](_0x9a2f('0x39'))){_0x1267f9[_0x9a2f('0x21')]=qs['limit'](_0x5a38ab[_0x9a2f('0x32')][_0x9a2f('0x21')]);_0x1267f9['offset']=qs[_0x9a2f('0x1e')](_0x5a38ab[_0x9a2f('0x32')][_0x9a2f('0x1e')]);}_0x1267f9['order']=qs['sort'](_0x5a38ab[_0x9a2f('0x32')]['sort']);_0x1267f9[_0x9a2f('0x3a')]=qs['filters'](_['pick'](_0x5a38ab[_0x9a2f('0x32')],_0x4fc67e[_0x9a2f('0x3b')]),_0x59f3a5);if(_0x5a38ab[_0x9a2f('0x32')]['filter']){_0x1267f9[_0x9a2f('0x3a')]=_[_0x9a2f('0x3c')](_0x1267f9['where'],{'$or':_[_0x9a2f('0x2d')](_0x59f3a5,function(_0x4d5eb4){if(_0x4d5eb4[_0x9a2f('0x3d')]!==_0x9a2f('0x3e')){var _0x4855e8={};_0x4855e8[_0x4d5eb4[_0x9a2f('0x2b')]]={'$like':'%'+_0x5a38ab[_0x9a2f('0x32')][_0x9a2f('0x3f')]+'%'};return _0x4855e8;}})});}_0x1267f9=_['merge']({},_0x1267f9,_0x5a38ab[_0x9a2f('0x40')]);var _0x40e458={'where':_0x1267f9['where']};return db[_0x9a2f('0x41')][_0x9a2f('0x20')](_0x40e458)[_0x9a2f('0x26')](function(_0x33b20c){_0x16201a[_0x9a2f('0x20')]=_0x33b20c;if(_0x5a38ab['query'][_0x9a2f('0x42')]){_0x1267f9[_0x9a2f('0x43')]=[{'all':!![]}];}return db[_0x9a2f('0x41')][_0x9a2f('0x44')](_0x1267f9);})['then'](function(_0x2015be){_0x16201a[_0x9a2f('0x45')]=_0x2015be;return _0x16201a;})['then'](respondWithFilteredResult(_0x1fe767,_0x1267f9))['catch'](handleError(_0x1fe767,null));};exports[_0x9a2f('0x46')]=function(_0x2c8350,_0x3a1d3e){var _0x414bcf={'raw':!![],'where':{'id':_0x2c8350[_0x9a2f('0x47')]['id']}},_0x924969={};_0x924969['model']=_[_0x9a2f('0x33')](db[_0x9a2f('0x41')][_0x9a2f('0x2e')]);_0x924969['query']=_[_0x9a2f('0x33')](_0x2c8350[_0x9a2f('0x32')]);_0x924969['filters']=_['intersection'](_0x924969[_0x9a2f('0x31')],_0x924969[_0x9a2f('0x32')]);_0x414bcf[_0x9a2f('0x35')]=_['intersection'](_0x924969[_0x9a2f('0x31')],qs[_0x9a2f('0x36')](_0x2c8350[_0x9a2f('0x32')][_0x9a2f('0x36')]));_0x414bcf['attributes']=_0x414bcf['attributes'][_0x9a2f('0x37')]?_0x414bcf[_0x9a2f('0x35')]:_0x924969['model'];if(_0x2c8350['query']['includeAll']){_0x414bcf[_0x9a2f('0x43')]=[{'all':!![]}];}_0x414bcf=_[_0x9a2f('0x3c')]({},_0x414bcf,_0x2c8350[_0x9a2f('0x40')]);return db['WhatsappQueue']['find'](_0x414bcf)['then'](handleEntityNotFound(_0x3a1d3e,null))[_0x9a2f('0x26')](respondWithResult(_0x3a1d3e,null))[_0x9a2f('0x48')](handleError(_0x3a1d3e,null));};exports[_0x9a2f('0x49')]=function(_0x590f31,_0x56e5f0){return db['WhatsappQueue'][_0x9a2f('0x49')](_0x590f31[_0x9a2f('0x4a')],{})['then'](function(_0x134a10){var _0x2f1b8b=_0x590f31[_0x9a2f('0x4b')][_0x9a2f('0x27')]({'plain':!![]});if(!_0x2f1b8b)throw new Error(_0x9a2f('0x4c'));if(_0x2f1b8b['role']===_0x9a2f('0x4b')){var _0x5528eb=_0x134a10[_0x9a2f('0x27')]({'plain':!![]});var _0x3a0941='WhatsappQueues';return db['UserProfileSection'][_0x9a2f('0x4d')]({'where':{'name':_0x3a0941,'userProfileId':_0x2f1b8b[_0x9a2f('0x4e')]},'raw':!![]})[_0x9a2f('0x26')](function(_0x546976){if(_0x546976&&_0x546976[_0x9a2f('0x4f')]===0x0){return db[_0x9a2f('0x50')][_0x9a2f('0x49')]({'name':_0x5528eb[_0x9a2f('0x2b')],'resourceId':_0x5528eb['id'],'type':_0x546976[_0x9a2f('0x2b')],'sectionId':_0x546976['id']},{})[_0x9a2f('0x26')](function(){return _0x134a10;});}else{return _0x134a10;}})[_0x9a2f('0x48')](function(_0x4d61a9){logger[_0x9a2f('0x29')](_0x9a2f('0x51'),_0x4d61a9);throw _0x4d61a9;});}return _0x134a10;})[_0x9a2f('0x26')](respondWithResult(_0x56e5f0,0xc9))[_0x9a2f('0x48')](handleError(_0x56e5f0,null));};exports[_0x9a2f('0x25')]=function(_0x4ad7c9,_0x37df7e){if(_0x4ad7c9[_0x9a2f('0x4a')]['id']){delete _0x4ad7c9[_0x9a2f('0x4a')]['id'];}return db[_0x9a2f('0x41')][_0x9a2f('0x4d')]({'where':{'id':_0x4ad7c9['params']['id']}})[_0x9a2f('0x26')](handleEntityNotFound(_0x37df7e,null))[_0x9a2f('0x26')](saveUpdates(_0x4ad7c9['body'],null))[_0x9a2f('0x26')](respondWithResult(_0x37df7e,null))['catch'](handleError(_0x37df7e,null));};exports['destroy']=function(_0x40c742,_0x2a60bb){return db[_0x9a2f('0x41')][_0x9a2f('0x4d')]({'where':{'id':_0x40c742[_0x9a2f('0x47')]['id']}})[_0x9a2f('0x26')](handleEntityNotFound(_0x2a60bb,null))[_0x9a2f('0x26')](removeEntity(_0x2a60bb,null))[_0x9a2f('0x48')](handleError(_0x2a60bb,null));};exports[_0x9a2f('0x52')]=function(_0x2b24d1,_0x576ac6){return db[_0x9a2f('0x41')][_0x9a2f('0x52')]()[_0x9a2f('0x26')](respondWithResult(_0x576ac6,null))['catch'](handleError(_0x576ac6,null));};exports[_0x9a2f('0x53')]=function(_0x5c2eef,_0x456843,_0x55832f){var _0x21ad8f={'raw':!![],'where':{}},_0x1014dc={},_0x399d3b;return db[_0x9a2f('0x41')][_0x9a2f('0x54')]({'where':{'id':_0x5c2eef[_0x9a2f('0x47')]['id']}})[_0x9a2f('0x26')](handleEntityNotFound(_0x456843,null))[_0x9a2f('0x26')](function(_0x2ceb10){if(_0x2ceb10){_0x399d3b=_0x2ceb10[_0x9a2f('0x27')]({'plain':!![]});_0x1014dc[_0x9a2f('0x31')]=_[_0x9a2f('0x33')](db[_0x9a2f('0x55')]['rawAttributes']);_0x1014dc[_0x9a2f('0x32')]=_[_0x9a2f('0x33')](_0x5c2eef['query']);_0x1014dc[_0x9a2f('0x3b')]=_[_0x9a2f('0x34')](_0x1014dc[_0x9a2f('0x31')],_0x1014dc[_0x9a2f('0x32')]);_0x21ad8f[_0x9a2f('0x35')]=_[_0x9a2f('0x34')](_0x1014dc[_0x9a2f('0x31')],qs['fields'](_0x5c2eef[_0x9a2f('0x32')][_0x9a2f('0x36')]));_0x21ad8f[_0x9a2f('0x35')]=_0x21ad8f[_0x9a2f('0x35')][_0x9a2f('0x37')]?_0x21ad8f[_0x9a2f('0x35')]:_0x1014dc[_0x9a2f('0x31')];if(!_0x5c2eef['query'][_0x9a2f('0x38')](_0x9a2f('0x39'))){_0x21ad8f['limit']=qs[_0x9a2f('0x21')](_0x5c2eef[_0x9a2f('0x32')][_0x9a2f('0x21')]);_0x21ad8f[_0x9a2f('0x1e')]=qs[_0x9a2f('0x1e')](_0x5c2eef['query'][_0x9a2f('0x1e')]);}_0x21ad8f[_0x9a2f('0x56')]=qs[_0x9a2f('0x57')](_0x5c2eef[_0x9a2f('0x32')]['sort']);_0x21ad8f[_0x9a2f('0x3a')]=qs[_0x9a2f('0x3b')](_[_0x9a2f('0x58')](_0x5c2eef[_0x9a2f('0x32')],_0x1014dc[_0x9a2f('0x3b')]));_0x21ad8f[_0x9a2f('0x3a')][_0x9a2f('0x59')]=_0x2ceb10['id'];if(_0x5c2eef[_0x9a2f('0x32')][_0x9a2f('0x3f')]){_0x21ad8f[_0x9a2f('0x3a')]=_['merge'](_0x21ad8f[_0x9a2f('0x3a')],{'$or':_[_0x9a2f('0x2d')](_0x21ad8f['attributes'],function(_0x172bc9){var _0x2f1afd={};_0x2f1afd[_0x172bc9]={'$like':'%'+_0x5c2eef[_0x9a2f('0x32')]['filter']+'%'};return _0x2f1afd;})});}_0x21ad8f=_['merge']({},_0x21ad8f,_0x5c2eef[_0x9a2f('0x40')]);return db['UserWhatsappQueue']['findAll'](_0x21ad8f);}})[_0x9a2f('0x26')](function(_0x3beae4){if(_0x3beae4){return db['User'][_0x9a2f('0x5a')]({'where':{'id':_['map'](_0x3beae4,'UserId'),'role':_0x9a2f('0x5b')},'attributes':['id',_0x9a2f('0x2b'),_0x9a2f('0x5c'),_0x9a2f('0x5d'),_0x9a2f('0x5e')]});}})['then'](function(_0xd1e6ba){if(_0xd1e6ba){return{'count':_0xd1e6ba[_0x9a2f('0x20')],'rows':_['map'](_0xd1e6ba[_0x9a2f('0x45')],function(_0x45fbbf){return{'membername':_0x45fbbf[_0x9a2f('0x2b')],'UserId':_0x45fbbf['id'],'queue_name':_0x399d3b[_0x9a2f('0x2b')],'WhatsappQueueId':_0x399d3b['id'],'interface':util[_0x9a2f('0x5f')](_0x9a2f('0x60'),_0x9a2f('0x61'),_0x45fbbf[_0x9a2f('0x2b')]),'penalty':0x0,'paused':_0x45fbbf['whatsappPause'],'createdAt':_0x45fbbf[_0x9a2f('0x5e')],'updatedAt':_0x45fbbf[_0x9a2f('0x5d')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x9a2f('0x26')](respondWithFilteredResult(_0x456843,_0x21ad8f))[_0x9a2f('0x48')](handleError(_0x456843,null));};exports[_0x9a2f('0x62')]=function(_0x1ab4b3,_0x113fda,_0x39a504){var _0xe9fb8b={};var _0x14ac8b={};var _0x5c5cb5;var _0x32ac5b;return db[_0x9a2f('0x41')][_0x9a2f('0x54')]({'where':{'id':_0x1ab4b3[_0x9a2f('0x47')]['id']}})[_0x9a2f('0x26')](handleEntityNotFound(_0x113fda,null))[_0x9a2f('0x26')](function(_0xc89db2){if(_0xc89db2){_0x5c5cb5=_0xc89db2;_0x14ac8b[_0x9a2f('0x31')]=_[_0x9a2f('0x33')](db['Team'][_0x9a2f('0x2e')]);_0x14ac8b[_0x9a2f('0x32')]=_[_0x9a2f('0x33')](_0x1ab4b3[_0x9a2f('0x32')]);_0x14ac8b[_0x9a2f('0x3b')]=_[_0x9a2f('0x34')](_0x14ac8b[_0x9a2f('0x31')],_0x14ac8b['query']);_0xe9fb8b[_0x9a2f('0x35')]=_[_0x9a2f('0x34')](_0x14ac8b[_0x9a2f('0x31')],qs[_0x9a2f('0x36')](_0x1ab4b3[_0x9a2f('0x32')][_0x9a2f('0x36')]));_0xe9fb8b[_0x9a2f('0x35')]=_0xe9fb8b[_0x9a2f('0x35')]['length']?_0xe9fb8b[_0x9a2f('0x35')]:_0x14ac8b[_0x9a2f('0x31')];_0xe9fb8b[_0x9a2f('0x56')]=qs[_0x9a2f('0x57')](_0x1ab4b3[_0x9a2f('0x32')]['sort']);_0xe9fb8b['where']=qs['filters'](_['pick'](_0x1ab4b3['query'],_0x14ac8b[_0x9a2f('0x3b')]));if(_0x1ab4b3[_0x9a2f('0x32')][_0x9a2f('0x3f')]){_0xe9fb8b[_0x9a2f('0x3a')]=_[_0x9a2f('0x3c')](_0xe9fb8b['where'],{'$or':_[_0x9a2f('0x2d')](_0xe9fb8b[_0x9a2f('0x35')],function(_0x13a8e2){var _0x35e5af={};_0x35e5af[_0x13a8e2]={'$like':'%'+_0x1ab4b3[_0x9a2f('0x32')][_0x9a2f('0x3f')]+'%'};return _0x35e5af;})});}_0xe9fb8b=_[_0x9a2f('0x3c')]({},_0xe9fb8b,_0x1ab4b3[_0x9a2f('0x40')]);return _0x5c5cb5[_0x9a2f('0x62')](_0xe9fb8b);}})[_0x9a2f('0x26')](function(_0x23e0c0){if(_0x23e0c0){_0x32ac5b=_0x23e0c0[_0x9a2f('0x37')];if(!_0x1ab4b3[_0x9a2f('0x32')]['hasOwnProperty'](_0x9a2f('0x39'))){_0xe9fb8b[_0x9a2f('0x21')]=qs['limit'](_0x1ab4b3[_0x9a2f('0x32')]['limit']);_0xe9fb8b[_0x9a2f('0x1e')]=qs[_0x9a2f('0x1e')](_0x1ab4b3[_0x9a2f('0x32')][_0x9a2f('0x1e')]);}return _0x5c5cb5[_0x9a2f('0x62')](_0xe9fb8b);}})[_0x9a2f('0x26')](function(_0x1287b5){if(_0x1287b5){return _0x1287b5?{'count':_0x32ac5b,'rows':_0x1287b5}:null;}})[_0x9a2f('0x26')](respondWithResult(_0x113fda,null))[_0x9a2f('0x48')](handleError(_0x113fda,null));};exports[_0x9a2f('0x63')]=function(_0x57c14e,_0x11c8f0,_0x491545){var _0x1ccada=_0x57c14e['body'][_0x9a2f('0x64')];return db[_0x9a2f('0x65')][_0x9a2f('0x44')]({'where':{'id':_0x1ccada},'attributes':['id'],'include':[{'model':db[_0x9a2f('0x66')],'as':_0x9a2f('0x67'),'attributes':['id',_0x9a2f('0x2b'),_0x9a2f('0x68'),'voicePause',_0x9a2f('0x69')],'raw':!![]}]})[_0x9a2f('0x26')](function(_0x324b61){if(_0x324b61){var _0x353d53=_['flatMap'](_0x324b61,function(_0x521db5){var _0x2d9069=_0x521db5[_0x9a2f('0x27')]({'plain':!![]});return _0x2d9069[_0x9a2f('0x67')];});return db[_0x9a2f('0x41')][_0x9a2f('0x4d')]({'where':{'id':_0x57c14e[_0x9a2f('0x47')]['id']}})[_0x9a2f('0x26')](function(_0x25c93d){return db[_0x9a2f('0x6a')][_0x9a2f('0x6b')](function(_0x22ce5f){return _0x25c93d[_0x9a2f('0x63')](_0x1ccada,{'transaction':_0x22ce5f})[_0x9a2f('0x26')](function(){return BPromise[_0x9a2f('0x6c')](_0x353d53,function(_0x22b669){return db[_0x9a2f('0x55')][_0x9a2f('0x6d')]({'where':{'UserId':_0x22b669['id'],'WhatsappQueueId':_0x57c14e[_0x9a2f('0x47')]['id']},'transaction':_0x22ce5f});});})[_0x9a2f('0x26')](function(){_0x353d53[_0x9a2f('0x6e')](function(_0x325ad9){socket[_0x9a2f('0x6f')](_0x9a2f('0x70'),{'UserId':_0x325ad9['id'],'WhatsappQueueId':_0x25c93d['id']});});});});});}})[_0x9a2f('0x26')](respondWithStatusCode(_0x11c8f0,null))[_0x9a2f('0x48')](handleError(_0x11c8f0,null));};exports['removeTeams']=function(_0x477a34,_0x48cf37,_0x5c7f67){return db[_0x9a2f('0x65')][_0x9a2f('0x44')]({'where':{'id':_0x477a34[_0x9a2f('0x32')][_0x9a2f('0x64')]},'attributes':['id'],'include':[{'model':db[_0x9a2f('0x66')],'as':_0x9a2f('0x67'),'attributes':['id'],'raw':!![]}]})[_0x9a2f('0x26')](handleEntityNotFound(_0x48cf37,null))['then'](function(_0x240774){var _0x270328=_[_0x9a2f('0x2d')](_0x240774,'id');var _0x294bc3=[];var _0x2cf08f=[];var _0x5003e2=squel['select']();_0x5003e2['field']('tq.TeamId')[_0x9a2f('0x71')]('team_has_whatsapp_queues','tq')[_0x9a2f('0x72')](_0x9a2f('0x73'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x9a2f('0x3a')]('WhatsappQueueId\x20=\x20?',_0x477a34[_0x9a2f('0x47')]['id']);for(var _0x56379c=0x0;_0x56379c<_0x240774[_0x9a2f('0x37')];_0x56379c+=0x1){let _0x43d395=_0x240774[_0x56379c];for(var _0xe121c7=0x0;_0xe121c7<_0x43d395[_0x9a2f('0x67')][_0x9a2f('0x37')];_0xe121c7+=0x1){let _0x11afdb=_0x43d395['Agents'][_0xe121c7];var _0x57e992=_0x5003e2[_0x9a2f('0x74')]();_0x57e992[_0x9a2f('0x3a')](_0x9a2f('0x75'),_0x11afdb['id']);_0x2cf08f['push'](db[_0x9a2f('0x6a')][_0x9a2f('0x32')](_0x57e992[_0x9a2f('0x76')](),{'type':db[_0x9a2f('0x6a')]['QueryTypes']['SELECT']})['then'](function(_0x52eaf1){if(_0x52eaf1[_0x9a2f('0x37')]===0x1){return _0x11afdb['id'];}else{var _0xe208a=_[_0x9a2f('0x77')](_[_0x9a2f('0x2d')](_0x52eaf1,'TeamId'),function(_0x1e8265){return _[_0x9a2f('0x78')](_0x270328,_0x1e8265);});if(_0xe208a){return _0x11afdb['id'];}}}));}}return BPromise[_0x9a2f('0x79')](_0x2cf08f)[_0x9a2f('0x26')](function(_0x586505){_0x294bc3=_(_0x294bc3)['union'](_0x586505)[_0x9a2f('0x7a')]()[_0x9a2f('0x7b')]();return db[_0x9a2f('0x41')][_0x9a2f('0x4d')]({'where':{'id':_0x477a34[_0x9a2f('0x47')]['id']}})['then'](function(_0x5ed014){return db['sequelize'][_0x9a2f('0x6b')](function(_0x41f9e6){return _0x5ed014[_0x9a2f('0x7c')](_0x477a34[_0x9a2f('0x32')][_0x9a2f('0x64')],{'transaction':_0x41f9e6})[_0x9a2f('0x26')](function(){if(!_[_0x9a2f('0x7d')](_0x294bc3)){return _0x5ed014[_0x9a2f('0x7e')](_0x294bc3,{'transaction':_0x41f9e6});}})[_0x9a2f('0x26')](function(){_0x294bc3[_0x9a2f('0x6e')](function(_0x93cfa2){socket[_0x9a2f('0x6f')](_0x9a2f('0x7f'),{'UserId':_0x93cfa2,'WhatsappQueueId':_0x5ed014['id']});});});});});});})[_0x9a2f('0x26')](respondWithStatusCode(_0x48cf37,null))[_0x9a2f('0x48')](handleError(_0x48cf37,null));};exports[_0x9a2f('0x80')]=function(_0x46143f,_0x2fb53b,_0x3d442a){return db[_0x9a2f('0x41')][_0x9a2f('0x4d')]({'where':{'id':_0x46143f['params']['id']}})[_0x9a2f('0x26')](handleEntityNotFound(_0x2fb53b,null))[_0x9a2f('0x26')](function(_0x390303){if(_0x390303){return _0x390303['addAgents'](_0x46143f[_0x9a2f('0x4a')][_0x9a2f('0x64')],_[_0x9a2f('0x81')](_0x46143f['body'],[_0x9a2f('0x64'),'id'])||{})[_0x9a2f('0x82')](function(_0x225842){for(var _0xdf4ef2=0x0;_0xdf4ef2<_0x46143f[_0x9a2f('0x4a')][_0x9a2f('0x64')]['length'];_0xdf4ef2+=0x1){socket['emit']('userWhatsappQueue:save',{'UserId':Number(_0x46143f['body'][_0x9a2f('0x64')][_0xdf4ef2]),'WhatsappQueueId':Number(_0x46143f[_0x9a2f('0x47')]['id'])});}return _0x225842;});}})[_0x9a2f('0x26')](respondWithResult(_0x2fb53b,null))[_0x9a2f('0x48')](handleError(_0x2fb53b,null));};exports[_0x9a2f('0x7e')]=function(_0x5ac84d,_0x1edd78,_0x487eb3){return db['WhatsappQueue'][_0x9a2f('0x4d')]({'where':{'id':_0x5ac84d[_0x9a2f('0x47')]['id']}})[_0x9a2f('0x26')](handleEntityNotFound(_0x1edd78,null))['then'](function(_0x200bf3){if(_0x200bf3){return _0x200bf3[_0x9a2f('0x7e')](_0x5ac84d[_0x9a2f('0x32')][_0x9a2f('0x64')])[_0x9a2f('0x26')](function(){if(_[_0x9a2f('0x83')](_0x5ac84d[_0x9a2f('0x32')]['ids'])){for(var _0xed1963=0x0;_0xed1963<_0x5ac84d[_0x9a2f('0x32')][_0x9a2f('0x64')][_0x9a2f('0x37')];_0xed1963+=0x1){socket[_0x9a2f('0x6f')](_0x9a2f('0x7f'),{'UserId':Number(_0x5ac84d[_0x9a2f('0x32')][_0x9a2f('0x64')][_0xed1963]),'WhatsappQueueId':Number(_0x5ac84d[_0x9a2f('0x47')]['id'])});}}else{socket[_0x9a2f('0x6f')](_0x9a2f('0x7f'),{'UserId':Number(_0x5ac84d['query'][_0x9a2f('0x64')]),'WhatsappQueueId':Number(_0x5ac84d[_0x9a2f('0x47')]['id'])});}});}})[_0x9a2f('0x26')](respondWithStatusCode(_0x1edd78,null))[_0x9a2f('0x48')](handleError(_0x1edd78,null));};exports['getAgents']=function(_0x41e126,_0x5b3278,_0x556f51){var _0x2c6057={};var _0x50982b={};var _0x3b8634;var _0x67ba3;return db[_0x9a2f('0x41')][_0x9a2f('0x54')]({'where':{'id':_0x41e126[_0x9a2f('0x47')]['id']}})['then'](handleEntityNotFound(_0x5b3278,null))[_0x9a2f('0x26')](function(_0x21a2a5){if(_0x21a2a5){_0x3b8634=_0x21a2a5;_0x50982b['model']=_[_0x9a2f('0x33')](db[_0x9a2f('0x66')][_0x9a2f('0x2e')]);_0x50982b[_0x9a2f('0x32')]=_[_0x9a2f('0x33')](_0x41e126['query']);_0x50982b['filters']=_['intersection'](_0x50982b['model'],_0x50982b[_0x9a2f('0x32')]);_0x2c6057[_0x9a2f('0x35')]=_[_0x9a2f('0x34')](_0x50982b['model'],qs[_0x9a2f('0x36')](_0x41e126[_0x9a2f('0x32')][_0x9a2f('0x36')]));_0x2c6057[_0x9a2f('0x35')]=_0x2c6057[_0x9a2f('0x35')]['length']?_0x2c6057[_0x9a2f('0x35')]:_0x50982b[_0x9a2f('0x31')];_0x2c6057[_0x9a2f('0x56')]=qs[_0x9a2f('0x57')](_0x41e126[_0x9a2f('0x32')][_0x9a2f('0x57')]);_0x2c6057[_0x9a2f('0x3a')]=qs[_0x9a2f('0x3b')](_[_0x9a2f('0x58')](_0x41e126[_0x9a2f('0x32')],_0x50982b[_0x9a2f('0x3b')]));if(_0x41e126[_0x9a2f('0x32')]['filter']){_0x2c6057[_0x9a2f('0x3a')]=_[_0x9a2f('0x3c')](_0x2c6057[_0x9a2f('0x3a')],{'$or':_['map'](_0x2c6057[_0x9a2f('0x35')],function(_0x46dbb3){var _0xac40e4={};_0xac40e4[_0x46dbb3]={'$like':'%'+_0x41e126['query'][_0x9a2f('0x3f')]+'%'};return _0xac40e4;})});}_0x2c6057=_[_0x9a2f('0x3c')]({},_0x2c6057,_0x41e126[_0x9a2f('0x40')]);return _0x3b8634['getAgents'](_0x2c6057);}})[_0x9a2f('0x26')](function(_0x38dafe){if(_0x38dafe){_0x67ba3=_0x38dafe[_0x9a2f('0x37')];if(!_0x41e126[_0x9a2f('0x32')]['hasOwnProperty'](_0x9a2f('0x39'))){_0x2c6057[_0x9a2f('0x21')]=qs['limit'](_0x41e126[_0x9a2f('0x32')][_0x9a2f('0x21')]);_0x2c6057[_0x9a2f('0x1e')]=qs[_0x9a2f('0x1e')](_0x41e126[_0x9a2f('0x32')][_0x9a2f('0x1e')]);}return _0x3b8634[_0x9a2f('0x84')](_0x2c6057);}})[_0x9a2f('0x26')](function(_0x13be25){if(_0x13be25){return _0x13be25?{'count':_0x67ba3,'rows':_0x13be25}:null;}})['then'](respondWithResult(_0x5b3278,null))['catch'](handleError(_0x5b3278,null));};
\ No newline at end of file
+var _0x88fd=['../../config/license/util','redis','localhost','socket.io-emitter','./whatsappQueue.socket','sendStatus','status','end','offset','undefined','count','set','Content-Range','json','reject','save','update','destroy','then','get','WhatsappQueues','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','WhatsappQueue','includeAll','include','findAll','rows','catch','params','length','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','UserWhatsappQueue','User','findAndCountAll','UserId','agent','createdAt','format','%s/%s','updatedAt','findOne','Team','getTeams','addTeams','ids','Agents','voicePause','interface','sequelize','each','forEach','emit','removeTeams','select','field','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','includes','compact','value','transaction','isEmpty','omit','removeAgents','isArray','userWhatsappQueue:remove','getAgents','eml-format','rimraf','zip-dir','moment','mustache','path','ejs','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment'];(function(_0x256e41,_0x42f596){var _0x53a34b=function(_0x441112){while(--_0x441112){_0x256e41['push'](_0x256e41['shift']());}};_0x53a34b(++_0x42f596);}(_0x88fd,0xf1));var _0xd88f=function(_0x5faed1,_0x504d8b){_0x5faed1=_0x5faed1-0x0;var _0x45fb54=_0x88fd[_0x5faed1];return _0x45fb54;};'use strict';var emlformat=require(_0xd88f('0x0'));var rimraf=require(_0xd88f('0x1'));var zipdir=require(_0xd88f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd88f('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xd88f('0x4'));var util=require('util');var path=require(_0xd88f('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd88f('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd88f('0x7'));var squel=require(_0xd88f('0x8'));var crypto=require('crypto');var jsforce=require(_0xd88f('0x9'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xd88f('0xa'));var Papa=require(_0xd88f('0xb'));var Redis=require(_0xd88f('0xc'));var authService=require('../../components/auth/service');var qs=require(_0xd88f('0xd'));var as=require(_0xd88f('0xe'));var hardwareService=require(_0xd88f('0xf'));var logger=require(_0xd88f('0x10'))('api');var utils=require(_0xd88f('0x11'));var config=require(_0xd88f('0x12'));var licenseUtil=require(_0xd88f('0x13'));var db=require('../../mysqldb')['db'];config[_0xd88f('0x14')]=_['defaults'](config[_0xd88f('0x14')],{'host':_0xd88f('0x15'),'port':0x18eb});var socket=require(_0xd88f('0x16'))(new Redis(config[_0xd88f('0x14')]));require(_0xd88f('0x17'))['register'](socket);function respondWithStatusCode(_0x4a67f5,_0x393593){_0x393593=_0x393593||0xcc;return function(_0x4bcbed){if(_0x4bcbed){return _0x4a67f5[_0xd88f('0x18')](_0x393593);}return _0x4a67f5[_0xd88f('0x19')](_0x393593)[_0xd88f('0x1a')]();};}function respondWithResult(_0x3cda43,_0x1693ce){_0x1693ce=_0x1693ce||0xc8;return function(_0x1b9937){if(_0x1b9937){return _0x3cda43[_0xd88f('0x19')](_0x1693ce)['json'](_0x1b9937);}};}function respondWithFilteredResult(_0xd586ad,_0x200f36){return function(_0x176f1b){if(_0x176f1b){var _0x35af69=typeof _0x200f36[_0xd88f('0x1b')]===_0xd88f('0x1c')&&typeof _0x200f36['limit']==='undefined';var _0xa92bc2=_0x176f1b['count'];var _0x1d4871=_0x35af69?0x0:_0x200f36['offset'];var _0x1003fe=_0x35af69?_0x176f1b[_0xd88f('0x1d')]:_0x200f36[_0xd88f('0x1b')]+_0x200f36['limit'];var _0x33e3de;if(_0x1003fe>=_0xa92bc2){_0x1003fe=_0xa92bc2;_0x33e3de=0xc8;}else{_0x33e3de=0xce;}_0xd586ad[_0xd88f('0x19')](_0x33e3de);return _0xd586ad[_0xd88f('0x1e')](_0xd88f('0x1f'),_0x1d4871+'-'+_0x1003fe+'/'+_0xa92bc2)[_0xd88f('0x20')](_0x176f1b);}return null;};}function patchUpdates(_0x4b4c7f){return function(_0x1cb4e8){try{jsonpatch['apply'](_0x1cb4e8,_0x4b4c7f,!![]);}catch(_0x34fcf4){return BPromise[_0xd88f('0x21')](_0x34fcf4);}return _0x1cb4e8[_0xd88f('0x22')]();};}function saveUpdates(_0x4802bb,_0x505d5d){return function(_0x36c3bb){if(_0x36c3bb){return _0x36c3bb[_0xd88f('0x23')](_0x4802bb)['then'](function(_0x286de5){return _0x286de5;});}return null;};}function removeEntity(_0x4a22a2,_0xb2b49f){return function(_0x3ea318){if(_0x3ea318){return _0x3ea318[_0xd88f('0x24')]()[_0xd88f('0x25')](function(){var _0x3c3324=_0x3ea318[_0xd88f('0x26')]({'plain':!![]});var _0x2f64c2=_0xd88f('0x27');return db['UserProfileResource']['destroy']({'where':{'type':_0x2f64c2,'resourceId':_0x3c3324['id']}})['then'](function(){return _0x3ea318;});})[_0xd88f('0x25')](function(){_0x4a22a2[_0xd88f('0x19')](0xcc)[_0xd88f('0x1a')]();});}};}function handleEntityNotFound(_0x316827,_0x48164c){return function(_0x548903){if(!_0x548903){_0x316827[_0xd88f('0x18')](0x194);}return _0x548903;};}function handleError(_0x54c25c,_0x2e87f1){_0x2e87f1=_0x2e87f1||0x1f4;return function(_0x1e0951){logger[_0xd88f('0x28')](_0x1e0951[_0xd88f('0x29')]);if(_0x1e0951[_0xd88f('0x2a')]){delete _0x1e0951[_0xd88f('0x2a')];}_0x54c25c['status'](_0x2e87f1)['send'](_0x1e0951);};}exports[_0xd88f('0x2b')]=function(_0x4e6e8d,_0x54cacb){var _0x419c9f={},_0x236ba0={},_0x82643b={'count':0x0,'rows':[]};var _0x5f1bd1=_[_0xd88f('0x2c')](db['WhatsappQueue'][_0xd88f('0x2d')],function(_0x9d0d19){return{'name':_0x9d0d19[_0xd88f('0x2e')],'type':_0x9d0d19[_0xd88f('0x2f')][_0xd88f('0x30')]};});_0x236ba0[_0xd88f('0x31')]=_[_0xd88f('0x2c')](_0x5f1bd1,_0xd88f('0x2a'));_0x236ba0['query']=_[_0xd88f('0x32')](_0x4e6e8d[_0xd88f('0x33')]);_0x236ba0[_0xd88f('0x34')]=_[_0xd88f('0x35')](_0x236ba0[_0xd88f('0x31')],_0x236ba0[_0xd88f('0x33')]);_0x419c9f['attributes']=_[_0xd88f('0x35')](_0x236ba0[_0xd88f('0x31')],qs[_0xd88f('0x36')](_0x4e6e8d[_0xd88f('0x33')][_0xd88f('0x36')]));_0x419c9f[_0xd88f('0x37')]=_0x419c9f[_0xd88f('0x37')]['length']?_0x419c9f[_0xd88f('0x37')]:_0x236ba0[_0xd88f('0x31')];if(!_0x4e6e8d[_0xd88f('0x33')][_0xd88f('0x38')](_0xd88f('0x39'))){_0x419c9f[_0xd88f('0x3a')]=qs['limit'](_0x4e6e8d[_0xd88f('0x33')]['limit']);_0x419c9f[_0xd88f('0x1b')]=qs[_0xd88f('0x1b')](_0x4e6e8d['query'][_0xd88f('0x1b')]);}_0x419c9f[_0xd88f('0x3b')]=qs[_0xd88f('0x3c')](_0x4e6e8d[_0xd88f('0x33')][_0xd88f('0x3c')]);_0x419c9f[_0xd88f('0x3d')]=qs[_0xd88f('0x34')](_[_0xd88f('0x3e')](_0x4e6e8d[_0xd88f('0x33')],_0x236ba0[_0xd88f('0x34')]),_0x5f1bd1);if(_0x4e6e8d[_0xd88f('0x33')][_0xd88f('0x3f')]){_0x419c9f[_0xd88f('0x3d')]=_[_0xd88f('0x40')](_0x419c9f[_0xd88f('0x3d')],{'$or':_['map'](_0x5f1bd1,function(_0xc55714){if(_0xc55714[_0xd88f('0x2f')]!==_0xd88f('0x41')){var _0x33cbb0={};_0x33cbb0[_0xc55714[_0xd88f('0x2a')]]={'$like':'%'+_0x4e6e8d[_0xd88f('0x33')][_0xd88f('0x3f')]+'%'};return _0x33cbb0;}})});}_0x419c9f=_['merge']({},_0x419c9f,_0x4e6e8d['options']);var _0x23229f={'where':_0x419c9f[_0xd88f('0x3d')]};return db[_0xd88f('0x42')][_0xd88f('0x1d')](_0x23229f)[_0xd88f('0x25')](function(_0x4eab63){_0x82643b['count']=_0x4eab63;if(_0x4e6e8d[_0xd88f('0x33')][_0xd88f('0x43')]){_0x419c9f[_0xd88f('0x44')]=[{'all':!![]}];}return db[_0xd88f('0x42')][_0xd88f('0x45')](_0x419c9f);})[_0xd88f('0x25')](function(_0x382fc0){_0x82643b[_0xd88f('0x46')]=_0x382fc0;return _0x82643b;})[_0xd88f('0x25')](respondWithFilteredResult(_0x54cacb,_0x419c9f))[_0xd88f('0x47')](handleError(_0x54cacb,null));};exports['show']=function(_0x47ae22,_0x483f53){var _0x3aa371={'raw':!![],'where':{'id':_0x47ae22[_0xd88f('0x48')]['id']}},_0x589866={};_0x589866['model']=_[_0xd88f('0x32')](db[_0xd88f('0x42')][_0xd88f('0x2d')]);_0x589866['query']=_[_0xd88f('0x32')](_0x47ae22[_0xd88f('0x33')]);_0x589866[_0xd88f('0x34')]=_['intersection'](_0x589866[_0xd88f('0x31')],_0x589866['query']);_0x3aa371[_0xd88f('0x37')]=_[_0xd88f('0x35')](_0x589866[_0xd88f('0x31')],qs['fields'](_0x47ae22['query']['fields']));_0x3aa371[_0xd88f('0x37')]=_0x3aa371[_0xd88f('0x37')][_0xd88f('0x49')]?_0x3aa371[_0xd88f('0x37')]:_0x589866[_0xd88f('0x31')];if(_0x47ae22[_0xd88f('0x33')][_0xd88f('0x43')]){_0x3aa371[_0xd88f('0x44')]=[{'all':!![]}];}_0x3aa371=_[_0xd88f('0x40')]({},_0x3aa371,_0x47ae22[_0xd88f('0x4a')]);return db['WhatsappQueue'][_0xd88f('0x4b')](_0x3aa371)[_0xd88f('0x25')](handleEntityNotFound(_0x483f53,null))[_0xd88f('0x25')](respondWithResult(_0x483f53,null))[_0xd88f('0x47')](handleError(_0x483f53,null));};exports[_0xd88f('0x4c')]=function(_0x182dab,_0x46bcc9){return db[_0xd88f('0x42')][_0xd88f('0x4c')](_0x182dab[_0xd88f('0x4d')],{})[_0xd88f('0x25')](function(_0x4aa7a9){var _0x3a6304=_0x182dab[_0xd88f('0x4e')][_0xd88f('0x26')]({'plain':!![]});if(!_0x3a6304)throw new Error(_0xd88f('0x4f'));if(_0x3a6304[_0xd88f('0x50')]==='user'){var _0x2f26bc=_0x4aa7a9[_0xd88f('0x26')]({'plain':!![]});var _0x487702='WhatsappQueues';return db['UserProfileSection'][_0xd88f('0x4b')]({'where':{'name':_0x487702,'userProfileId':_0x3a6304[_0xd88f('0x51')]},'raw':!![]})[_0xd88f('0x25')](function(_0x40c17c){if(_0x40c17c&&_0x40c17c['autoAssociation']===0x0){return db[_0xd88f('0x52')][_0xd88f('0x4c')]({'name':_0x2f26bc['name'],'resourceId':_0x2f26bc['id'],'type':_0x40c17c[_0xd88f('0x2a')],'sectionId':_0x40c17c['id']},{})['then'](function(){return _0x4aa7a9;});}else{return _0x4aa7a9;}})[_0xd88f('0x47')](function(_0x3a7480){logger[_0xd88f('0x28')](_0xd88f('0x53'),_0x3a7480);throw _0x3a7480;});}return _0x4aa7a9;})[_0xd88f('0x25')](respondWithResult(_0x46bcc9,0xc9))[_0xd88f('0x47')](handleError(_0x46bcc9,null));};exports[_0xd88f('0x23')]=function(_0x41a444,_0x1672df){if(_0x41a444[_0xd88f('0x4d')]['id']){delete _0x41a444[_0xd88f('0x4d')]['id'];}return db['WhatsappQueue'][_0xd88f('0x4b')]({'where':{'id':_0x41a444[_0xd88f('0x48')]['id']}})[_0xd88f('0x25')](handleEntityNotFound(_0x1672df,null))[_0xd88f('0x25')](saveUpdates(_0x41a444[_0xd88f('0x4d')],null))[_0xd88f('0x25')](respondWithResult(_0x1672df,null))[_0xd88f('0x47')](handleError(_0x1672df,null));};exports[_0xd88f('0x24')]=function(_0x249b6d,_0x3c338d){return db[_0xd88f('0x42')]['find']({'where':{'id':_0x249b6d[_0xd88f('0x48')]['id']}})[_0xd88f('0x25')](handleEntityNotFound(_0x3c338d,null))[_0xd88f('0x25')](removeEntity(_0x3c338d,null))[_0xd88f('0x47')](handleError(_0x3c338d,null));};exports['describe']=function(_0x1495a6,_0x2aba59){return db[_0xd88f('0x42')]['describe']()[_0xd88f('0x25')](respondWithResult(_0x2aba59,null))[_0xd88f('0x47')](handleError(_0x2aba59,null));};exports['getMembers']=function(_0x54c3e3,_0x79099b,_0x19f66b){var _0xf6ae={'raw':!![],'where':{}},_0xfd707a={},_0x199acb;return db[_0xd88f('0x42')]['findOne']({'where':{'id':_0x54c3e3['params']['id']}})[_0xd88f('0x25')](handleEntityNotFound(_0x79099b,null))[_0xd88f('0x25')](function(_0x496c83){if(_0x496c83){_0x199acb=_0x496c83[_0xd88f('0x26')]({'plain':!![]});_0xfd707a['model']=_[_0xd88f('0x32')](db[_0xd88f('0x54')][_0xd88f('0x2d')]);_0xfd707a['query']=_[_0xd88f('0x32')](_0x54c3e3['query']);_0xfd707a[_0xd88f('0x34')]=_['intersection'](_0xfd707a[_0xd88f('0x31')],_0xfd707a[_0xd88f('0x33')]);_0xf6ae[_0xd88f('0x37')]=_[_0xd88f('0x35')](_0xfd707a['model'],qs[_0xd88f('0x36')](_0x54c3e3['query'][_0xd88f('0x36')]));_0xf6ae[_0xd88f('0x37')]=_0xf6ae['attributes']['length']?_0xf6ae[_0xd88f('0x37')]:_0xfd707a[_0xd88f('0x31')];if(!_0x54c3e3['query']['hasOwnProperty']('nolimit')){_0xf6ae[_0xd88f('0x3a')]=qs[_0xd88f('0x3a')](_0x54c3e3[_0xd88f('0x33')]['limit']);_0xf6ae[_0xd88f('0x1b')]=qs[_0xd88f('0x1b')](_0x54c3e3[_0xd88f('0x33')][_0xd88f('0x1b')]);}_0xf6ae[_0xd88f('0x3b')]=qs[_0xd88f('0x3c')](_0x54c3e3[_0xd88f('0x33')][_0xd88f('0x3c')]);_0xf6ae[_0xd88f('0x3d')]=qs[_0xd88f('0x34')](_[_0xd88f('0x3e')](_0x54c3e3['query'],_0xfd707a['filters']));_0xf6ae['where']['WhatsappQueueId']=_0x496c83['id'];if(_0x54c3e3[_0xd88f('0x33')][_0xd88f('0x3f')]){_0xf6ae[_0xd88f('0x3d')]=_[_0xd88f('0x40')](_0xf6ae[_0xd88f('0x3d')],{'$or':_[_0xd88f('0x2c')](_0xf6ae[_0xd88f('0x37')],function(_0x4c3f40){var _0x597011={};_0x597011[_0x4c3f40]={'$like':'%'+_0x54c3e3[_0xd88f('0x33')][_0xd88f('0x3f')]+'%'};return _0x597011;})});}_0xf6ae=_[_0xd88f('0x40')]({},_0xf6ae,_0x54c3e3['options']);return db[_0xd88f('0x54')][_0xd88f('0x45')](_0xf6ae);}})[_0xd88f('0x25')](function(_0x13c14f){if(_0x13c14f){return db[_0xd88f('0x55')][_0xd88f('0x56')]({'where':{'id':_[_0xd88f('0x2c')](_0x13c14f,_0xd88f('0x57')),'role':_0xd88f('0x58')},'attributes':['id',_0xd88f('0x2a'),'whatsappPause','updatedAt',_0xd88f('0x59')]});}})[_0xd88f('0x25')](function(_0x7b7a67){if(_0x7b7a67){return{'count':_0x7b7a67['count'],'rows':_['map'](_0x7b7a67[_0xd88f('0x46')],function(_0x845fc4){return{'membername':_0x845fc4[_0xd88f('0x2a')],'UserId':_0x845fc4['id'],'queue_name':_0x199acb[_0xd88f('0x2a')],'WhatsappQueueId':_0x199acb['id'],'interface':util[_0xd88f('0x5a')](_0xd88f('0x5b'),'SIP',_0x845fc4[_0xd88f('0x2a')]),'penalty':0x0,'paused':_0x845fc4['whatsappPause'],'createdAt':_0x845fc4['createdAt'],'updatedAt':_0x845fc4[_0xd88f('0x5c')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xd88f('0x25')](respondWithFilteredResult(_0x79099b,_0xf6ae))[_0xd88f('0x47')](handleError(_0x79099b,null));};exports['getTeams']=function(_0x45580a,_0x51cffd,_0x417ae7){var _0x543906={};var _0x21491b={};var _0xb35653;var _0x48c6af;return db[_0xd88f('0x42')][_0xd88f('0x5d')]({'where':{'id':_0x45580a[_0xd88f('0x48')]['id']}})[_0xd88f('0x25')](handleEntityNotFound(_0x51cffd,null))[_0xd88f('0x25')](function(_0xbce6d){if(_0xbce6d){_0xb35653=_0xbce6d;_0x21491b[_0xd88f('0x31')]=_[_0xd88f('0x32')](db[_0xd88f('0x5e')][_0xd88f('0x2d')]);_0x21491b[_0xd88f('0x33')]=_['keys'](_0x45580a[_0xd88f('0x33')]);_0x21491b['filters']=_[_0xd88f('0x35')](_0x21491b['model'],_0x21491b[_0xd88f('0x33')]);_0x543906[_0xd88f('0x37')]=_['intersection'](_0x21491b['model'],qs[_0xd88f('0x36')](_0x45580a[_0xd88f('0x33')][_0xd88f('0x36')]));_0x543906[_0xd88f('0x37')]=_0x543906[_0xd88f('0x37')]['length']?_0x543906[_0xd88f('0x37')]:_0x21491b[_0xd88f('0x31')];_0x543906[_0xd88f('0x3b')]=qs[_0xd88f('0x3c')](_0x45580a[_0xd88f('0x33')][_0xd88f('0x3c')]);_0x543906['where']=qs[_0xd88f('0x34')](_[_0xd88f('0x3e')](_0x45580a[_0xd88f('0x33')],_0x21491b[_0xd88f('0x34')]));if(_0x45580a['query']['filter']){_0x543906['where']=_[_0xd88f('0x40')](_0x543906[_0xd88f('0x3d')],{'$or':_[_0xd88f('0x2c')](_0x543906[_0xd88f('0x37')],function(_0x1e0691){var _0x409fca={};_0x409fca[_0x1e0691]={'$like':'%'+_0x45580a[_0xd88f('0x33')][_0xd88f('0x3f')]+'%'};return _0x409fca;})});}_0x543906=_['merge']({},_0x543906,_0x45580a[_0xd88f('0x4a')]);return _0xb35653[_0xd88f('0x5f')](_0x543906);}})[_0xd88f('0x25')](function(_0x12f1fc){if(_0x12f1fc){_0x48c6af=_0x12f1fc[_0xd88f('0x49')];if(!_0x45580a[_0xd88f('0x33')][_0xd88f('0x38')](_0xd88f('0x39'))){_0x543906[_0xd88f('0x3a')]=qs[_0xd88f('0x3a')](_0x45580a[_0xd88f('0x33')][_0xd88f('0x3a')]);_0x543906[_0xd88f('0x1b')]=qs[_0xd88f('0x1b')](_0x45580a[_0xd88f('0x33')][_0xd88f('0x1b')]);}return _0xb35653['getTeams'](_0x543906);}})['then'](function(_0x24410a){if(_0x24410a){return _0x24410a?{'count':_0x48c6af,'rows':_0x24410a}:null;}})['then'](respondWithResult(_0x51cffd,null))[_0xd88f('0x47')](handleError(_0x51cffd,null));};exports[_0xd88f('0x60')]=function(_0x187409,_0x5e5993,_0x315735){var _0x47032d=_0x187409[_0xd88f('0x4d')][_0xd88f('0x61')];return db[_0xd88f('0x5e')][_0xd88f('0x45')]({'where':{'id':_0x47032d},'attributes':['id'],'include':[{'model':db['User'],'as':_0xd88f('0x62'),'attributes':['id',_0xd88f('0x2a'),'online',_0xd88f('0x63'),_0xd88f('0x64')],'raw':!![]}]})[_0xd88f('0x25')](function(_0x4b90ce){if(_0x4b90ce){var _0x4e0f22=_['flatMap'](_0x4b90ce,function(_0x4e01c9){var _0x461c9f=_0x4e01c9[_0xd88f('0x26')]({'plain':!![]});return _0x461c9f[_0xd88f('0x62')];});return db[_0xd88f('0x42')][_0xd88f('0x4b')]({'where':{'id':_0x187409['params']['id']}})[_0xd88f('0x25')](function(_0x20e95f){return db[_0xd88f('0x65')]['transaction'](function(_0x410e44){return _0x20e95f[_0xd88f('0x60')](_0x47032d,{'transaction':_0x410e44})[_0xd88f('0x25')](function(){return BPromise[_0xd88f('0x66')](_0x4e0f22,function(_0x42c95d){return db['UserWhatsappQueue']['findOrCreate']({'where':{'UserId':_0x42c95d['id'],'WhatsappQueueId':_0x187409[_0xd88f('0x48')]['id']},'transaction':_0x410e44});});})[_0xd88f('0x25')](function(){_0x4e0f22[_0xd88f('0x67')](function(_0x167446){socket[_0xd88f('0x68')]('userWhatsappQueue:save',{'UserId':_0x167446['id'],'WhatsappQueueId':_0x20e95f['id']});});});});});}})[_0xd88f('0x25')](respondWithStatusCode(_0x5e5993,null))[_0xd88f('0x47')](handleError(_0x5e5993,null));};exports[_0xd88f('0x69')]=function(_0x5152ae,_0x1284cd,_0x2a23b7){return db[_0xd88f('0x5e')][_0xd88f('0x45')]({'where':{'id':_0x5152ae['query'][_0xd88f('0x61')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xd88f('0x62'),'attributes':['id'],'raw':!![]}]})[_0xd88f('0x25')](handleEntityNotFound(_0x1284cd,null))[_0xd88f('0x25')](function(_0x57e9e2){var _0x2e6efc=_[_0xd88f('0x2c')](_0x57e9e2,'id');var _0x4ddf4f=[];var _0x23a06c=[];var _0x341fc4=squel[_0xd88f('0x6a')]();_0x341fc4[_0xd88f('0x6b')]('tq.TeamId')['from'](_0xd88f('0x6c'),'tq')[_0xd88f('0x6d')](_0xd88f('0x6e'),'ut',_0xd88f('0x6f'))['where'](_0xd88f('0x70'),_0x5152ae[_0xd88f('0x48')]['id']);for(var _0x11cc05=0x0;_0x11cc05<_0x57e9e2['length'];_0x11cc05+=0x1){let _0x46834f=_0x57e9e2[_0x11cc05];for(var _0x24e2ee=0x0;_0x24e2ee<_0x46834f[_0xd88f('0x62')][_0xd88f('0x49')];_0x24e2ee+=0x1){let _0x41ec9a=_0x46834f[_0xd88f('0x62')][_0x24e2ee];var _0x3b018d=_0x341fc4[_0xd88f('0x71')]();_0x3b018d['where'](_0xd88f('0x72'),_0x41ec9a['id']);_0x23a06c[_0xd88f('0x73')](db['sequelize'][_0xd88f('0x33')](_0x3b018d[_0xd88f('0x74')](),{'type':db[_0xd88f('0x65')][_0xd88f('0x75')][_0xd88f('0x76')]})[_0xd88f('0x25')](function(_0x29d242){if(_0x29d242[_0xd88f('0x49')]===0x1){return _0x41ec9a['id'];}else{var _0x3fd183=_[_0xd88f('0x77')](_[_0xd88f('0x2c')](_0x29d242,'TeamId'),function(_0x59e3dd){return _[_0xd88f('0x78')](_0x2e6efc,_0x59e3dd);});if(_0x3fd183){return _0x41ec9a['id'];}}}));}}return BPromise['all'](_0x23a06c)[_0xd88f('0x25')](function(_0x5072da){_0x4ddf4f=_(_0x4ddf4f)['union'](_0x5072da)[_0xd88f('0x79')]()[_0xd88f('0x7a')]();return db['WhatsappQueue'][_0xd88f('0x4b')]({'where':{'id':_0x5152ae[_0xd88f('0x48')]['id']}})[_0xd88f('0x25')](function(_0x563cec){return db[_0xd88f('0x65')][_0xd88f('0x7b')](function(_0x3acfdc){return _0x563cec['removeTeams'](_0x5152ae['query'][_0xd88f('0x61')],{'transaction':_0x3acfdc})['then'](function(){if(!_[_0xd88f('0x7c')](_0x4ddf4f)){return _0x563cec['removeAgents'](_0x4ddf4f,{'transaction':_0x3acfdc});}})[_0xd88f('0x25')](function(){_0x4ddf4f[_0xd88f('0x67')](function(_0x5c2172){socket['emit']('userWhatsappQueue:remove',{'UserId':_0x5c2172,'WhatsappQueueId':_0x563cec['id']});});});});});});})[_0xd88f('0x25')](respondWithStatusCode(_0x1284cd,null))[_0xd88f('0x47')](handleError(_0x1284cd,null));};exports['addAgents']=function(_0xd5f843,_0x29769f,_0x2c425c){return db[_0xd88f('0x42')][_0xd88f('0x4b')]({'where':{'id':_0xd5f843[_0xd88f('0x48')]['id']}})['then'](handleEntityNotFound(_0x29769f,null))[_0xd88f('0x25')](function(_0x42e521){if(_0x42e521){return _0x42e521['addAgents'](_0xd5f843['body']['ids'],_[_0xd88f('0x7d')](_0xd5f843['body'],[_0xd88f('0x61'),'id'])||{})['spread'](function(_0x133ddf){for(var _0x164f41=0x0;_0x164f41<_0xd5f843[_0xd88f('0x4d')][_0xd88f('0x61')]['length'];_0x164f41+=0x1){socket[_0xd88f('0x68')]('userWhatsappQueue:save',{'UserId':Number(_0xd5f843['body'][_0xd88f('0x61')][_0x164f41]),'WhatsappQueueId':Number(_0xd5f843[_0xd88f('0x48')]['id'])});}return _0x133ddf;});}})[_0xd88f('0x25')](respondWithResult(_0x29769f,null))[_0xd88f('0x47')](handleError(_0x29769f,null));};exports[_0xd88f('0x7e')]=function(_0x23e69e,_0x53fb2e,_0xe2bda0){return db[_0xd88f('0x42')][_0xd88f('0x4b')]({'where':{'id':_0x23e69e[_0xd88f('0x48')]['id']}})['then'](handleEntityNotFound(_0x53fb2e,null))[_0xd88f('0x25')](function(_0x386105){if(_0x386105){return _0x386105[_0xd88f('0x7e')](_0x23e69e[_0xd88f('0x33')][_0xd88f('0x61')])[_0xd88f('0x25')](function(){if(_[_0xd88f('0x7f')](_0x23e69e[_0xd88f('0x33')][_0xd88f('0x61')])){for(var _0x21b9cd=0x0;_0x21b9cd<_0x23e69e[_0xd88f('0x33')][_0xd88f('0x61')]['length'];_0x21b9cd+=0x1){socket['emit']('userWhatsappQueue:remove',{'UserId':Number(_0x23e69e[_0xd88f('0x33')][_0xd88f('0x61')][_0x21b9cd]),'WhatsappQueueId':Number(_0x23e69e['params']['id'])});}}else{socket[_0xd88f('0x68')](_0xd88f('0x80'),{'UserId':Number(_0x23e69e[_0xd88f('0x33')][_0xd88f('0x61')]),'WhatsappQueueId':Number(_0x23e69e['params']['id'])});}});}})[_0xd88f('0x25')](respondWithStatusCode(_0x53fb2e,null))[_0xd88f('0x47')](handleError(_0x53fb2e,null));};exports[_0xd88f('0x81')]=function(_0x2aff39,_0x55d4e2,_0x55155f){var _0x2d4b3d={};var _0x52951d={};var _0x46f8b3;var _0x4c53b8;return db[_0xd88f('0x42')][_0xd88f('0x5d')]({'where':{'id':_0x2aff39[_0xd88f('0x48')]['id']}})[_0xd88f('0x25')](handleEntityNotFound(_0x55d4e2,null))[_0xd88f('0x25')](function(_0x41ace1){if(_0x41ace1){_0x46f8b3=_0x41ace1;_0x52951d[_0xd88f('0x31')]=_[_0xd88f('0x32')](db[_0xd88f('0x55')][_0xd88f('0x2d')]);_0x52951d[_0xd88f('0x33')]=_[_0xd88f('0x32')](_0x2aff39['query']);_0x52951d[_0xd88f('0x34')]=_[_0xd88f('0x35')](_0x52951d[_0xd88f('0x31')],_0x52951d[_0xd88f('0x33')]);_0x2d4b3d[_0xd88f('0x37')]=_[_0xd88f('0x35')](_0x52951d[_0xd88f('0x31')],qs[_0xd88f('0x36')](_0x2aff39['query'][_0xd88f('0x36')]));_0x2d4b3d[_0xd88f('0x37')]=_0x2d4b3d['attributes'][_0xd88f('0x49')]?_0x2d4b3d[_0xd88f('0x37')]:_0x52951d[_0xd88f('0x31')];_0x2d4b3d[_0xd88f('0x3b')]=qs[_0xd88f('0x3c')](_0x2aff39[_0xd88f('0x33')][_0xd88f('0x3c')]);_0x2d4b3d['where']=qs[_0xd88f('0x34')](_['pick'](_0x2aff39[_0xd88f('0x33')],_0x52951d['filters']));if(_0x2aff39[_0xd88f('0x33')]['filter']){_0x2d4b3d['where']=_[_0xd88f('0x40')](_0x2d4b3d[_0xd88f('0x3d')],{'$or':_[_0xd88f('0x2c')](_0x2d4b3d['attributes'],function(_0x2e9a4f){var _0x13a808={};_0x13a808[_0x2e9a4f]={'$like':'%'+_0x2aff39[_0xd88f('0x33')][_0xd88f('0x3f')]+'%'};return _0x13a808;})});}_0x2d4b3d=_['merge']({},_0x2d4b3d,_0x2aff39[_0xd88f('0x4a')]);return _0x46f8b3[_0xd88f('0x81')](_0x2d4b3d);}})['then'](function(_0x53d89f){if(_0x53d89f){_0x4c53b8=_0x53d89f[_0xd88f('0x49')];if(!_0x2aff39[_0xd88f('0x33')][_0xd88f('0x38')](_0xd88f('0x39'))){_0x2d4b3d[_0xd88f('0x3a')]=qs['limit'](_0x2aff39[_0xd88f('0x33')]['limit']);_0x2d4b3d[_0xd88f('0x1b')]=qs[_0xd88f('0x1b')](_0x2aff39[_0xd88f('0x33')][_0xd88f('0x1b')]);}return _0x46f8b3['getAgents'](_0x2d4b3d);}})[_0xd88f('0x25')](function(_0x503d17){if(_0x503d17){return _0x503d17?{'count':_0x4c53b8,'rows':_0x503d17}:null;}})['then'](respondWithResult(_0x55d4e2,null))[_0xd88f('0x47')](handleError(_0x55d4e2,null));};
\ No newline at end of file
index 3d814b5..e6708fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07dc=['emit','hasOwnProperty','hook','exports','../../mysqldb','WhatsappQueue','setMaxListeners','update','remove'];(function(_0x513fdd,_0x46e610){var _0x30e4fd=function(_0x4a8987){while(--_0x4a8987){_0x513fdd['push'](_0x513fdd['shift']());}};_0x30e4fd(++_0x46e610);}(_0x07dc,0x1a2));var _0xc07d=function(_0x5d4607,_0x6b5e7b){_0x5d4607=_0x5d4607-0x0;var _0x5e4a86=_0x07dc[_0x5d4607];return _0x5e4a86;};'use strict';var EventEmitter=require('events');var WhatsappQueue=require(_0xc07d('0x0'))['db'][_0xc07d('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xc07d('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xc07d('0x3'),'afterDestroy':_0xc07d('0x4')};function emitEvent(_0x3d5df7){return function(_0x10ec7d,_0xf1124f,_0x2ecede){WhatsappQueueEvents[_0xc07d('0x5')](_0x3d5df7+':'+_0x10ec7d['id'],_0x10ec7d);WhatsappQueueEvents[_0xc07d('0x5')](_0x3d5df7,_0x10ec7d);_0x2ecede(null);};}for(var e in events){if(events[_0xc07d('0x6')](e)){var event=events[e];WhatsappQueue[_0xc07d('0x7')](e,emitEvent(event));}}module[_0xc07d('0x8')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x6c6d=['update','remove','emit','hook','../../mysqldb','WhatsappQueue','setMaxListeners'];(function(_0x556927,_0x34b53f){var _0x5f1235=function(_0x4f4e44){while(--_0x4f4e44){_0x556927['push'](_0x556927['shift']());}};_0x5f1235(++_0x34b53f);}(_0x6c6d,0x14d));var _0xd6c6=function(_0x35c4f1,_0x32c15f){_0x35c4f1=_0x35c4f1-0x0;var _0x354b8e=_0x6c6d[_0x35c4f1];return _0x354b8e;};'use strict';var EventEmitter=require('events');var WhatsappQueue=require(_0xd6c6('0x0'))['db'][_0xd6c6('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xd6c6('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xd6c6('0x3'),'afterDestroy':_0xd6c6('0x4')};function emitEvent(_0x11dd8f){return function(_0x66385f,_0x1539b3,_0x1c9d47){WhatsappQueueEvents['emit'](_0x11dd8f+':'+_0x66385f['id'],_0x66385f);WhatsappQueueEvents[_0xd6c6('0x5')](_0x11dd8f,_0x66385f);_0x1c9d47(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue[_0xd6c6('0x6')](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
index 1771ec5..beb51a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaec1=['api','moment','bluebird','path','rimraf','../../config/environment','./whatsappQueue.attributes','exports','define','WhatsappQueue','whatsapp_queues','lodash','util','../../config/logger'];(function(_0x164b5d,_0x2c2f6d){var _0x4026b7=function(_0x56d634){while(--_0x56d634){_0x164b5d['push'](_0x164b5d['shift']());}};_0x4026b7(++_0x2c2f6d);}(_0xaec1,0xeb));var _0x1aec=function(_0x478414,_0xcf142d){_0x478414=_0x478414-0x0;var _0x5eb6b9=_0xaec1[_0x478414];return _0x5eb6b9;};'use strict';var _=require(_0x1aec('0x0'));var util=require(_0x1aec('0x1'));var logger=require(_0x1aec('0x2'))(_0x1aec('0x3'));var moment=require(_0x1aec('0x4'));var BPromise=require(_0x1aec('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1aec('0x6'));var rimraf=require(_0x1aec('0x7'));var config=require(_0x1aec('0x8'));var attributes=require(_0x1aec('0x9'));module[_0x1aec('0xa')]=function(_0x133475,_0x1e2061){return _0x133475[_0x1aec('0xb')](_0x1aec('0xc'),attributes,{'tableName':_0x1aec('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb2d2=['./whatsappQueue.attributes','exports','define','WhatsappQueue','whatsapp_queues','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0xe8f4fd,_0x17dc25){var _0xd98127=function(_0x180e70){while(--_0x180e70){_0xe8f4fd['push'](_0xe8f4fd['shift']());}};_0xd98127(++_0x17dc25);}(_0xb2d2,0x18b));var _0x2b2d=function(_0x2c19de,_0x15559a){_0x2c19de=_0x2c19de-0x0;var _0x4bb883=_0xb2d2[_0x2c19de];return _0x4bb883;};'use strict';var _=require('lodash');var util=require(_0x2b2d('0x0'));var logger=require(_0x2b2d('0x1'))(_0x2b2d('0x2'));var moment=require(_0x2b2d('0x3'));var BPromise=require('bluebird');var rp=require(_0x2b2d('0x4'));var fs=require('fs');var path=require(_0x2b2d('0x5'));var rimraf=require(_0x2b2d('0x6'));var config=require(_0x2b2d('0x7'));var attributes=require(_0x2b2d('0x8'));module[_0x2b2d('0x9')]=function(_0x11a74d,_0x954957){return _0x11a74d[_0x2b2d('0xa')](_0x2b2d('0xb'),attributes,{'tableName':_0x2b2d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0623bb6..1016ea5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f3a=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./whatsappQueue.socket','register','request','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetWhatsappQueue','options','raw','attributes','limit','include','model','map','stringify','ShowWhatsappQueue','where','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x374ada,_0x27b3a5){var _0x449ed8=function(_0x3efc46){while(--_0x3efc46){_0x374ada['push'](_0x374ada['shift']());}};_0x449ed8(++_0x27b3a5);}(_0x7f3a,0xc7));var _0xa7f3=function(_0x3cc2a4,_0x173753){_0x3cc2a4=_0x3cc2a4-0x0;var _0x21f199=_0x7f3a[_0x3cc2a4];return _0x21f199;};'use strict';var _=require(_0xa7f3('0x0'));var util=require(_0xa7f3('0x1'));var moment=require(_0xa7f3('0x2'));var BPromise=require(_0xa7f3('0x3'));var rs=require(_0xa7f3('0x4'));var fs=require('fs');var Redis=require(_0xa7f3('0x5'));var db=require(_0xa7f3('0x6'))['db'];var utils=require(_0xa7f3('0x7'));var logger=require(_0xa7f3('0x8'))('rpc');var config=require(_0xa7f3('0x9'));var jayson=require(_0xa7f3('0xa'));var client=jayson[_0xa7f3('0xb')][_0xa7f3('0xc')]({'port':0x232a});config[_0xa7f3('0xd')]=_[_0xa7f3('0xe')](config[_0xa7f3('0xd')],{'host':_0xa7f3('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa7f3('0xd')]));require(_0xa7f3('0x10'))[_0xa7f3('0x11')](socket);function respondWithRpcPromise(_0x46caee,_0x37370c,_0x245f33){return new BPromise(function(_0x3f6e57,_0x1fa449){return client[_0xa7f3('0x12')](_0x46caee,_0x245f33)[_0xa7f3('0x13')](function(_0x832b70){logger[_0xa7f3('0x14')](_0xa7f3('0x15'),_0x37370c,_0xa7f3('0x16'));logger[_0xa7f3('0x17')](_0xa7f3('0x18'),_0x37370c,_0xa7f3('0x16'),JSON['stringify'](_0x832b70));if(_0x832b70[_0xa7f3('0x19')]){if(_0x832b70[_0xa7f3('0x19')][_0xa7f3('0x1a')]===0x1f4){logger[_0xa7f3('0x19')](_0xa7f3('0x15'),_0x37370c,_0x832b70[_0xa7f3('0x19')][_0xa7f3('0x1b')]);return _0x1fa449(_0x832b70['error'][_0xa7f3('0x1b')]);}logger['error']('WhatsappQueue,\x20%s,\x20%s',_0x37370c,_0x832b70[_0xa7f3('0x19')][_0xa7f3('0x1b')]);return _0x3f6e57(_0x832b70[_0xa7f3('0x19')][_0xa7f3('0x1b')]);}else{logger[_0xa7f3('0x14')](_0xa7f3('0x15'),_0x37370c,_0xa7f3('0x16'));_0x3f6e57(_0x832b70[_0xa7f3('0x1c')]['message']);}})[_0xa7f3('0x1d')](function(_0x1044f9){logger[_0xa7f3('0x19')](_0xa7f3('0x15'),_0x37370c,_0x1044f9);_0x1fa449(_0x1044f9);});});}exports[_0xa7f3('0x1e')]=function(_0x327ee6){var _0x27576a=this;return new Promise(function(_0x14b69f,_0xc988c4){return db['WhatsappQueue']['findAll']({'raw':_0x327ee6[_0xa7f3('0x1f')]?_0x327ee6[_0xa7f3('0x1f')][_0xa7f3('0x20')]===undefined?!![]:![]:!![],'where':_0x327ee6[_0xa7f3('0x1f')]?_0x327ee6['options']['where']||null:null,'attributes':_0x327ee6[_0xa7f3('0x1f')]?_0x327ee6['options'][_0xa7f3('0x21')]||null:null,'limit':_0x327ee6[_0xa7f3('0x1f')]?_0x327ee6[_0xa7f3('0x1f')][_0xa7f3('0x22')]||null:null,'include':_0x327ee6[_0xa7f3('0x1f')]?_0x327ee6[_0xa7f3('0x1f')][_0xa7f3('0x23')]?_['map'](_0x327ee6[_0xa7f3('0x1f')][_0xa7f3('0x23')],function(_0x95b079){return{'model':db[_0x95b079[_0xa7f3('0x24')]],'as':_0x95b079['as'],'attributes':_0x95b079[_0xa7f3('0x21')],'include':_0x95b079[_0xa7f3('0x23')]?_[_0xa7f3('0x25')](_0x95b079['include'],function(_0x73018e){return{'model':db[_0x73018e[_0xa7f3('0x24')]],'as':_0x73018e['as'],'attributes':_0x73018e['attributes'],'include':_0x73018e[_0xa7f3('0x23')]?_[_0xa7f3('0x25')](_0x73018e[_0xa7f3('0x23')],function(_0x21faf7){return{'model':db[_0x21faf7[_0xa7f3('0x24')]],'as':_0x21faf7['as'],'attributes':_0x21faf7[_0xa7f3('0x21')]};}):[]};}):[]};}):[]:[]})[_0xa7f3('0x13')](function(_0x4c0742){logger['info'](_0xa7f3('0x1e'),_0x327ee6);logger['debug'](_0xa7f3('0x1e'),_0x327ee6,JSON[_0xa7f3('0x26')](_0x4c0742));_0x14b69f(_0x4c0742);})[_0xa7f3('0x1d')](function(_0x216735){logger['error'](_0xa7f3('0x1e'),_0x216735[_0xa7f3('0x1b')],_0x327ee6);_0xc988c4(_0x27576a[_0xa7f3('0x19')](0x1f4,_0x216735['message']));});});};exports[_0xa7f3('0x27')]=function(_0x321149){var _0x30d5a5=this;return new Promise(function(_0x256030,_0x4a6bc8){return db['WhatsappQueue']['find']({'raw':_0x321149['options']?_0x321149[_0xa7f3('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x321149[_0xa7f3('0x1f')]?_0x321149[_0xa7f3('0x1f')][_0xa7f3('0x28')]||null:null,'attributes':_0x321149['options']?_0x321149[_0xa7f3('0x1f')]['attributes']||null:null,'include':_0x321149[_0xa7f3('0x1f')]?_0x321149[_0xa7f3('0x1f')][_0xa7f3('0x23')]?_[_0xa7f3('0x25')](_0x321149[_0xa7f3('0x1f')][_0xa7f3('0x23')],function(_0x59370a){return{'model':db[_0x59370a['model']],'as':_0x59370a['as'],'attributes':_0x59370a['attributes'],'include':_0x59370a[_0xa7f3('0x23')]?_[_0xa7f3('0x25')](_0x59370a[_0xa7f3('0x23')],function(_0x54818d){return{'model':db[_0x54818d[_0xa7f3('0x24')]],'as':_0x54818d['as'],'attributes':_0x54818d[_0xa7f3('0x21')],'include':_0x54818d[_0xa7f3('0x23')]?_[_0xa7f3('0x25')](_0x54818d[_0xa7f3('0x23')],function(_0x4e30b1){return{'model':db[_0x4e30b1[_0xa7f3('0x24')]],'as':_0x4e30b1['as'],'attributes':_0x4e30b1['attributes']};}):[]};}):[]};}):[]:[]})[_0xa7f3('0x13')](function(_0x284c1e){logger[_0xa7f3('0x14')](_0xa7f3('0x27'),_0x321149);logger['debug'](_0xa7f3('0x27'),_0x321149,JSON[_0xa7f3('0x26')](_0x284c1e));_0x256030(_0x284c1e);})[_0xa7f3('0x1d')](function(_0x17946a){logger[_0xa7f3('0x19')]('ShowWhatsappQueue',_0x17946a[_0xa7f3('0x1b')],_0x321149);_0x4a6bc8(_0x30d5a5['error'](0x1f4,_0x17946a['message']));});});};
\ No newline at end of file
+var _0x4eeb=['register','request','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetWhatsappQueue','WhatsappQueue','findAll','options','raw','where','attributes','include','map','model','ShowWhatsappQueue','find','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','./whatsappQueue.socket'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x4eeb,0x95));var _0xb4ee=function(_0x90120c,_0x39c417){_0x90120c=_0x90120c-0x0;var _0x4848e2=_0x4eeb[_0x90120c];return _0x4848e2;};'use strict';var _=require('lodash');var util=require(_0xb4ee('0x0'));var moment=require(_0xb4ee('0x1'));var BPromise=require(_0xb4ee('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb4ee('0x3'));var db=require(_0xb4ee('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xb4ee('0x5'))(_0xb4ee('0x6'));var config=require(_0xb4ee('0x7'));var jayson=require(_0xb4ee('0x8'));var client=jayson[_0xb4ee('0x9')][_0xb4ee('0xa')]({'port':0x232a});config['redis']=_[_0xb4ee('0xb')](config[_0xb4ee('0xc')],{'host':_0xb4ee('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb4ee('0xc')]));require(_0xb4ee('0xe'))[_0xb4ee('0xf')](socket);function respondWithRpcPromise(_0x434487,_0x472f8f,_0xdfe242){return new BPromise(function(_0x132100,_0x2c68a8){return client[_0xb4ee('0x10')](_0x434487,_0xdfe242)[_0xb4ee('0x11')](function(_0x448899){logger[_0xb4ee('0x12')](_0xb4ee('0x13'),_0x472f8f,_0xb4ee('0x14'));logger[_0xb4ee('0x15')](_0xb4ee('0x16'),_0x472f8f,_0xb4ee('0x14'),JSON[_0xb4ee('0x17')](_0x448899));if(_0x448899[_0xb4ee('0x18')]){if(_0x448899[_0xb4ee('0x18')][_0xb4ee('0x19')]===0x1f4){logger[_0xb4ee('0x18')](_0xb4ee('0x13'),_0x472f8f,_0x448899[_0xb4ee('0x18')][_0xb4ee('0x1a')]);return _0x2c68a8(_0x448899['error'][_0xb4ee('0x1a')]);}logger[_0xb4ee('0x18')](_0xb4ee('0x13'),_0x472f8f,_0x448899[_0xb4ee('0x18')]['message']);return _0x132100(_0x448899['error'][_0xb4ee('0x1a')]);}else{logger[_0xb4ee('0x12')](_0xb4ee('0x13'),_0x472f8f,_0xb4ee('0x14'));_0x132100(_0x448899[_0xb4ee('0x1b')][_0xb4ee('0x1a')]);}})[_0xb4ee('0x1c')](function(_0x3d5f32){logger[_0xb4ee('0x18')](_0xb4ee('0x13'),_0x472f8f,_0x3d5f32);_0x2c68a8(_0x3d5f32);});});}exports[_0xb4ee('0x1d')]=function(_0x250217){var _0x1fbc92=this;return new Promise(function(_0xeacb6,_0x480846){return db[_0xb4ee('0x1e')][_0xb4ee('0x1f')]({'raw':_0x250217[_0xb4ee('0x20')]?_0x250217[_0xb4ee('0x20')][_0xb4ee('0x21')]===undefined?!![]:![]:!![],'where':_0x250217[_0xb4ee('0x20')]?_0x250217[_0xb4ee('0x20')][_0xb4ee('0x22')]||null:null,'attributes':_0x250217[_0xb4ee('0x20')]?_0x250217[_0xb4ee('0x20')][_0xb4ee('0x23')]||null:null,'limit':_0x250217[_0xb4ee('0x20')]?_0x250217[_0xb4ee('0x20')]['limit']||null:null,'include':_0x250217[_0xb4ee('0x20')]?_0x250217[_0xb4ee('0x20')][_0xb4ee('0x24')]?_[_0xb4ee('0x25')](_0x250217['options'][_0xb4ee('0x24')],function(_0xbf18f5){return{'model':db[_0xbf18f5[_0xb4ee('0x26')]],'as':_0xbf18f5['as'],'attributes':_0xbf18f5[_0xb4ee('0x23')],'include':_0xbf18f5[_0xb4ee('0x24')]?_[_0xb4ee('0x25')](_0xbf18f5[_0xb4ee('0x24')],function(_0x7650ec){return{'model':db[_0x7650ec[_0xb4ee('0x26')]],'as':_0x7650ec['as'],'attributes':_0x7650ec[_0xb4ee('0x23')],'include':_0x7650ec['include']?_[_0xb4ee('0x25')](_0x7650ec[_0xb4ee('0x24')],function(_0x198962){return{'model':db[_0x198962[_0xb4ee('0x26')]],'as':_0x198962['as'],'attributes':_0x198962['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2d3ef5){logger[_0xb4ee('0x12')](_0xb4ee('0x1d'),_0x250217);logger[_0xb4ee('0x15')](_0xb4ee('0x1d'),_0x250217,JSON[_0xb4ee('0x17')](_0x2d3ef5));_0xeacb6(_0x2d3ef5);})[_0xb4ee('0x1c')](function(_0x3ae81c){logger[_0xb4ee('0x18')](_0xb4ee('0x1d'),_0x3ae81c[_0xb4ee('0x1a')],_0x250217);_0x480846(_0x1fbc92[_0xb4ee('0x18')](0x1f4,_0x3ae81c[_0xb4ee('0x1a')]));});});};exports[_0xb4ee('0x27')]=function(_0x14053b){var _0x47f376=this;return new Promise(function(_0x3a76d7,_0x2a572d){return db[_0xb4ee('0x1e')][_0xb4ee('0x28')]({'raw':_0x14053b[_0xb4ee('0x20')]?_0x14053b['options']['raw']===undefined?!![]:![]:!![],'where':_0x14053b['options']?_0x14053b['options'][_0xb4ee('0x22')]||null:null,'attributes':_0x14053b[_0xb4ee('0x20')]?_0x14053b[_0xb4ee('0x20')][_0xb4ee('0x23')]||null:null,'include':_0x14053b['options']?_0x14053b['options'][_0xb4ee('0x24')]?_['map'](_0x14053b[_0xb4ee('0x20')][_0xb4ee('0x24')],function(_0x1826b5){return{'model':db[_0x1826b5[_0xb4ee('0x26')]],'as':_0x1826b5['as'],'attributes':_0x1826b5['attributes'],'include':_0x1826b5[_0xb4ee('0x24')]?_[_0xb4ee('0x25')](_0x1826b5[_0xb4ee('0x24')],function(_0x298ed9){return{'model':db[_0x298ed9['model']],'as':_0x298ed9['as'],'attributes':_0x298ed9[_0xb4ee('0x23')],'include':_0x298ed9[_0xb4ee('0x24')]?_[_0xb4ee('0x25')](_0x298ed9['include'],function(_0x39cd95){return{'model':db[_0x39cd95[_0xb4ee('0x26')]],'as':_0x39cd95['as'],'attributes':_0x39cd95[_0xb4ee('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x414972){logger[_0xb4ee('0x12')](_0xb4ee('0x27'),_0x14053b);logger['debug'](_0xb4ee('0x27'),_0x14053b,JSON[_0xb4ee('0x17')](_0x414972));_0x3a76d7(_0x414972);})['catch'](function(_0x2f235a){logger[_0xb4ee('0x18')](_0xb4ee('0x27'),_0x2f235a[_0xb4ee('0x1a')],_0x14053b);_0x2a572d(_0x47f376[_0xb4ee('0x18')](0x1f4,_0x2f235a[_0xb4ee('0x1a')]));});});};
\ No newline at end of file
index 3559e7c..b106adc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x758f=['whatsappQueue:','./whatsappQueue.events','save','remove','update','removeListener','length'];(function(_0x3d7c0b,_0x4b00c8){var _0x20450c=function(_0x8942ef){while(--_0x8942ef){_0x3d7c0b['push'](_0x3d7c0b['shift']());}};_0x20450c(++_0x4b00c8);}(_0x758f,0x182));var _0xf758=function(_0x44b3f6,_0x2f0b79){_0x44b3f6=_0x44b3f6-0x0;var _0x4a6207=_0x758f[_0x44b3f6];return _0x4a6207;};'use strict';var WhatsappQueueEvents=require(_0xf758('0x0'));var events=[_0xf758('0x1'),_0xf758('0x2'),_0xf758('0x3')];function createListener(_0x1a9dba,_0x3338bb){return function(_0x40ed91){_0x3338bb['emit'](_0x1a9dba,_0x40ed91);};}function removeListener(_0x5d5c47,_0x35bf52){return function(){WhatsappQueueEvents[_0xf758('0x4')](_0x5d5c47,_0x35bf52);};}exports['register']=function(_0x1cc524){for(var _0x36d338=0x0,_0x5abadc=events[_0xf758('0x5')];_0x36d338<_0x5abadc;_0x36d338++){var _0x1258bd=events[_0x36d338];var _0x452cad=createListener(_0xf758('0x6')+_0x1258bd,_0x1cc524);WhatsappQueueEvents['on'](_0x1258bd,_0x452cad);}};
\ No newline at end of file
+var _0xf560=['update','removeListener','register','length','./whatsappQueue.events','save','remove'];(function(_0x237c6b,_0x4705de){var _0x7a5299=function(_0xc23533){while(--_0xc23533){_0x237c6b['push'](_0x237c6b['shift']());}};_0x7a5299(++_0x4705de);}(_0xf560,0x97));var _0x0f56=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf560[_0x3dd15e];return _0x231fd0;};'use strict';var WhatsappQueueEvents=require(_0x0f56('0x0'));var events=[_0x0f56('0x1'),_0x0f56('0x2'),_0x0f56('0x3')];function createListener(_0x56872f,_0x5a5fdd){return function(_0x40aa87){_0x5a5fdd['emit'](_0x56872f,_0x40aa87);};}function removeListener(_0x19f162,_0x3f6660){return function(){WhatsappQueueEvents[_0x0f56('0x4')](_0x19f162,_0x3f6660);};}exports[_0x0f56('0x5')]=function(_0x5bde6e){for(var _0x57dc1f=0x0,_0xd897e9=events[_0x0f56('0x6')];_0x57dc1f<_0xd897e9;_0x57dc1f++){var _0x413f8d=events[_0x57dc1f];var _0x18ed3f=createListener('whatsappQueue:'+_0x413f8d,_0x5bde6e);WhatsappQueueEvents['on'](_0x413f8d,_0x18ed3f);}};
\ No newline at end of file
index 5121682..9c98b15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38e4=['util','express','Router','fs-extra','../../components/auth/service','../../config/environment','./whatsappQueueReport.controller','get','isAuthenticated','index','describe','/:id','show','post','create','put','update','delete','exports','multer'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x38e4,0x1cb));var _0x438e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x38e4[_0x1ac595];return _0x455fff;};'use strict';var multer=require(_0x438e('0x0'));var util=require(_0x438e('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x438e('0x2'));var router=express[_0x438e('0x3')]();var fs_extra=require(_0x438e('0x4'));var auth=require(_0x438e('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x438e('0x6'));var controller=require(_0x438e('0x7'));router[_0x438e('0x8')]('/',auth[_0x438e('0x9')](),controller[_0x438e('0xa')]);router[_0x438e('0x8')]('/describe',auth[_0x438e('0x9')](),controller[_0x438e('0xb')]);router[_0x438e('0x8')](_0x438e('0xc'),auth[_0x438e('0x9')](),controller[_0x438e('0xd')]);router[_0x438e('0xe')]('/',auth['isAuthenticated'](),controller[_0x438e('0xf')]);router[_0x438e('0x10')](_0x438e('0xc'),auth[_0x438e('0x9')](),controller[_0x438e('0x11')]);router[_0x438e('0x12')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x438e('0x13')]=router;
\ No newline at end of file
+var _0x6a44=['path','connect-timeout','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','get','isAuthenticated','index','describe','post','create','/:id','update','delete','exports','multer'];(function(_0x137b6e,_0x3988cd){var _0x13a0b3=function(_0x4d8647){while(--_0x4d8647){_0x137b6e['push'](_0x137b6e['shift']());}};_0x13a0b3(++_0x3988cd);}(_0x6a44,0x6f));var _0x46a4=function(_0x3b2bb0,_0x28d1d5){_0x3b2bb0=_0x3b2bb0-0x0;var _0x3b2cbf=_0x6a44[_0x3b2bb0];return _0x3b2cbf;};'use strict';var multer=require(_0x46a4('0x0'));var util=require('util');var path=require(_0x46a4('0x1'));var timeout=require(_0x46a4('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x46a4('0x3'));var config=require(_0x46a4('0x4'));var controller=require(_0x46a4('0x5'));router[_0x46a4('0x6')]('/',auth[_0x46a4('0x7')](),controller[_0x46a4('0x8')]);router[_0x46a4('0x6')]('/describe',auth['isAuthenticated'](),controller[_0x46a4('0x9')]);router[_0x46a4('0x6')]('/:id',auth[_0x46a4('0x7')](),controller['show']);router[_0x46a4('0xa')]('/',auth[_0x46a4('0x7')](),controller[_0x46a4('0xb')]);router['put'](_0x46a4('0xc'),auth['isAuthenticated'](),controller[_0x46a4('0xd')]);router[_0x46a4('0xe')]('/:id',auth[_0x46a4('0x7')](),controller['destroy']);module[_0x46a4('0xf')]=router;
\ No newline at end of file
index 2af8d47..7a5a66c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x2460f9,_0x3531a0){var _0x13e2ec=function(_0x4d9be8){while(--_0x4d9be8){_0x2460f9['push'](_0x2460f9['shift']());}};_0x13e2ec(++_0x3531a0);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'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(_0x4a3d5d,_0x14c2b4){var _0x4b23ad=function(_0x23c38b){while(--_0x23c38b){_0x4a3d5d['push'](_0x4a3d5d['shift']());}};_0x4b23ad(++_0x14c2b4);}(_0x7a54,0x106));var _0x47a5=function(_0x1b0e64,_0x1ad186){_0x1b0e64=_0x1b0e64-0x0;var _0x3df1ed=_0x7a54[_0x1b0e64];return _0x3df1ed;};'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 ae25dee..5a350b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69d3=['ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','destroy','then','error','name','send','index','map','WhatsappQueueReport','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','find','create','body','catch','update','params','describe','eml-format','rimraf','zip-dir','request-promise','moment','util','to-csv'];(function(_0x3240c1,_0x2c281c){var _0x251407=function(_0x27ad80){while(--_0x27ad80){_0x3240c1['push'](_0x3240c1['shift']());}};_0x251407(++_0x2c281c);}(_0x69d3,0xda));var _0x369d=function(_0x117990,_0xb6b5ee){_0x117990=_0x117990-0x0;var _0x1a091a=_0x69d3[_0x117990];return _0x1a091a;};'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'];function respondWithStatusCode(_0xee549e,_0x52c126){_0x52c126=_0x52c126||0xcc;return function(_0x15b417){if(_0x15b417){return _0xee549e[_0x369d('0x17')](_0x52c126);}return _0xee549e[_0x369d('0x18')](_0x52c126)[_0x369d('0x19')]();};}function respondWithResult(_0x121307,_0x539536){_0x539536=_0x539536||0xc8;return function(_0x5cd4c3){if(_0x5cd4c3){return _0x121307['status'](_0x539536)[_0x369d('0x1a')](_0x5cd4c3);}};}function respondWithFilteredResult(_0xa126c1,_0x389c43){return function(_0x5b4f55){if(_0x5b4f55){var _0x2c1a4a=typeof _0x389c43[_0x369d('0x1b')]===_0x369d('0x1c')&&typeof _0x389c43['limit']===_0x369d('0x1c');var _0x1f37ff=_0x5b4f55['count'];var _0x572513=_0x2c1a4a?0x0:_0x389c43['offset'];var _0x2946be=_0x2c1a4a?_0x5b4f55[_0x369d('0x1d')]:_0x389c43[_0x369d('0x1b')]+_0x389c43['limit'];var _0x410dbe;if(_0x2946be>=_0x1f37ff){_0x2946be=_0x1f37ff;_0x410dbe=0xc8;}else{_0x410dbe=0xce;}_0xa126c1[_0x369d('0x18')](_0x410dbe);return _0xa126c1[_0x369d('0x1e')](_0x369d('0x1f'),_0x572513+'-'+_0x2946be+'/'+_0x1f37ff)[_0x369d('0x1a')](_0x5b4f55);}return null;};}function patchUpdates(_0x538ca4){return function(_0x5c9fdd){try{jsonpatch[_0x369d('0x20')](_0x5c9fdd,_0x538ca4,!![]);}catch(_0x1edcd5){return BPromise[_0x369d('0x21')](_0x1edcd5);}return _0x5c9fdd[_0x369d('0x22')]();};}function saveUpdates(_0x84cc0f,_0x15fbef){return function(_0x1b262a){if(_0x1b262a){return _0x1b262a['update'](_0x84cc0f)['then'](function(_0x32ef9a){return _0x32ef9a;});}return null;};}function removeEntity(_0xed16e,_0xf7bc3a){return function(_0xcae58){if(_0xcae58){return _0xcae58[_0x369d('0x23')]()[_0x369d('0x24')](function(){_0xed16e[_0x369d('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4dfe83,_0x16145e){return function(_0x46de2b){if(!_0x46de2b){_0x4dfe83[_0x369d('0x17')](0x194);}return _0x46de2b;};}function handleError(_0xe01d2b,_0x8aa521){_0x8aa521=_0x8aa521||0x1f4;return function(_0x41e0cf){logger[_0x369d('0x25')](_0x41e0cf['stack']);if(_0x41e0cf[_0x369d('0x26')]){delete _0x41e0cf[_0x369d('0x26')];}_0xe01d2b[_0x369d('0x18')](_0x8aa521)[_0x369d('0x27')](_0x41e0cf);};}exports[_0x369d('0x28')]=function(_0x41367a,_0x3d1ce0){var _0x4d42ea={},_0x157291={},_0x56efb1={'count':0x0,'rows':[]};var _0x57b94c=_[_0x369d('0x29')](db[_0x369d('0x2a')]['rawAttributes'],function(_0x104540){return{'name':_0x104540['fieldName'],'type':_0x104540[_0x369d('0x2b')][_0x369d('0x2c')]};});_0x157291[_0x369d('0x2d')]=_[_0x369d('0x29')](_0x57b94c,_0x369d('0x26'));_0x157291[_0x369d('0x2e')]=_[_0x369d('0x2f')](_0x41367a['query']);_0x157291[_0x369d('0x30')]=_[_0x369d('0x31')](_0x157291[_0x369d('0x2d')],_0x157291[_0x369d('0x2e')]);_0x4d42ea[_0x369d('0x32')]=_[_0x369d('0x31')](_0x157291[_0x369d('0x2d')],qs[_0x369d('0x33')](_0x41367a['query'][_0x369d('0x33')]));_0x4d42ea[_0x369d('0x32')]=_0x4d42ea[_0x369d('0x32')][_0x369d('0x34')]?_0x4d42ea[_0x369d('0x32')]:_0x157291['model'];if(!_0x41367a[_0x369d('0x2e')][_0x369d('0x35')](_0x369d('0x36'))){_0x4d42ea[_0x369d('0x37')]=qs[_0x369d('0x37')](_0x41367a[_0x369d('0x2e')]['limit']);_0x4d42ea[_0x369d('0x1b')]=qs[_0x369d('0x1b')](_0x41367a[_0x369d('0x2e')][_0x369d('0x1b')]);}_0x4d42ea[_0x369d('0x38')]=qs[_0x369d('0x39')](_0x41367a[_0x369d('0x2e')][_0x369d('0x39')]);_0x4d42ea[_0x369d('0x3a')]=qs[_0x369d('0x30')](_[_0x369d('0x3b')](_0x41367a[_0x369d('0x2e')],_0x157291[_0x369d('0x30')]),_0x57b94c);if(_0x41367a[_0x369d('0x2e')][_0x369d('0x3c')]){_0x4d42ea[_0x369d('0x3a')]=_[_0x369d('0x3d')](_0x4d42ea[_0x369d('0x3a')],{'$or':_[_0x369d('0x29')](_0x57b94c,function(_0x7fd64b){if(_0x7fd64b[_0x369d('0x2b')]!==_0x369d('0x3e')){var _0xb7837f={};_0xb7837f[_0x7fd64b[_0x369d('0x26')]]={'$like':'%'+_0x41367a['query']['filter']+'%'};return _0xb7837f;}})});}_0x4d42ea=_[_0x369d('0x3d')]({},_0x4d42ea,_0x41367a[_0x369d('0x3f')]);var _0x8a1ef5={'where':_0x4d42ea[_0x369d('0x3a')]};return db[_0x369d('0x2a')][_0x369d('0x1d')](_0x8a1ef5)[_0x369d('0x24')](function(_0x169340){_0x56efb1[_0x369d('0x1d')]=_0x169340;if(_0x41367a['query'][_0x369d('0x40')]){_0x4d42ea[_0x369d('0x41')]=[{'all':!![]}];}return db[_0x369d('0x2a')][_0x369d('0x42')](_0x4d42ea);})[_0x369d('0x24')](function(_0x25cf4e){_0x56efb1[_0x369d('0x43')]=_0x25cf4e;return _0x56efb1;})[_0x369d('0x24')](respondWithFilteredResult(_0x3d1ce0,_0x4d42ea))['catch'](handleError(_0x3d1ce0,null));};exports['show']=function(_0x20b351,_0x3222ce){var _0x30909a={'raw':!![],'where':{'id':_0x20b351['params']['id']}},_0x4dad71={};_0x4dad71['model']=_[_0x369d('0x2f')](db[_0x369d('0x2a')]['rawAttributes']);_0x4dad71[_0x369d('0x2e')]=_[_0x369d('0x2f')](_0x20b351[_0x369d('0x2e')]);_0x4dad71[_0x369d('0x30')]=_['intersection'](_0x4dad71[_0x369d('0x2d')],_0x4dad71['query']);_0x30909a[_0x369d('0x32')]=_['intersection'](_0x4dad71[_0x369d('0x2d')],qs[_0x369d('0x33')](_0x20b351[_0x369d('0x2e')]['fields']));_0x30909a['attributes']=_0x30909a[_0x369d('0x32')][_0x369d('0x34')]?_0x30909a[_0x369d('0x32')]:_0x4dad71['model'];if(_0x20b351[_0x369d('0x2e')][_0x369d('0x40')]){_0x30909a[_0x369d('0x41')]=[{'all':!![]}];}_0x30909a=_[_0x369d('0x3d')]({},_0x30909a,_0x20b351[_0x369d('0x3f')]);return db[_0x369d('0x2a')][_0x369d('0x44')](_0x30909a)[_0x369d('0x24')](handleEntityNotFound(_0x3222ce,null))[_0x369d('0x24')](respondWithResult(_0x3222ce,null))['catch'](handleError(_0x3222ce,null));};exports[_0x369d('0x45')]=function(_0x41066d,_0xcc1465){return db[_0x369d('0x2a')][_0x369d('0x45')](_0x41066d[_0x369d('0x46')],{})['then'](respondWithResult(_0xcc1465,0xc9))[_0x369d('0x47')](handleError(_0xcc1465,null));};exports[_0x369d('0x48')]=function(_0x16dd8f,_0x44a357){if(_0x16dd8f[_0x369d('0x46')]['id']){delete _0x16dd8f[_0x369d('0x46')]['id'];}return db[_0x369d('0x2a')][_0x369d('0x44')]({'where':{'id':_0x16dd8f[_0x369d('0x49')]['id']}})[_0x369d('0x24')](handleEntityNotFound(_0x44a357,null))[_0x369d('0x24')](saveUpdates(_0x16dd8f[_0x369d('0x46')],null))['then'](respondWithResult(_0x44a357,null))[_0x369d('0x47')](handleError(_0x44a357,null));};exports[_0x369d('0x23')]=function(_0x289eb8,_0x85edd6){return db[_0x369d('0x2a')]['find']({'where':{'id':_0x289eb8[_0x369d('0x49')]['id']}})['then'](handleEntityNotFound(_0x85edd6,null))[_0x369d('0x24')](removeEntity(_0x85edd6,null))[_0x369d('0x47')](handleError(_0x85edd6,null));};exports[_0x369d('0x4a')]=function(_0x851746,_0x46c62c){return db[_0x369d('0x2a')][_0x369d('0x4a')]()[_0x369d('0x24')](respondWithResult(_0x46c62c,null))[_0x369d('0x47')](handleError(_0x46c62c,null));};
\ No newline at end of file
+var _0xb10b=['fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','reject','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','VIRTUAL','filter','merge','options','WhatsappQueueReport','includeAll','include','rows','show','params','find','catch','create','body','describe','eml-format','zip-dir'];(function(_0x21634c,_0x29aab8){var _0x58762c=function(_0x131b12){while(--_0x131b12){_0x21634c['push'](_0x21634c['shift']());}};_0x58762c(++_0x29aab8);}(_0xb10b,0x12a));var _0xbb10=function(_0x490c45,_0x97b829){_0x490c45=_0x490c45-0x0;var _0x82738e=_0xb10b[_0x490c45];return _0x82738e;};'use strict';var emlformat=require(_0xbb10('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbb10('0x1'));var jsonpatch=require(_0xbb10('0x2'));var rp=require(_0xbb10('0x3'));var moment=require('moment');var BPromise=require(_0xbb10('0x4'));var Mustache=require(_0xbb10('0x5'));var util=require(_0xbb10('0x6'));var path=require(_0xbb10('0x7'));var sox=require(_0xbb10('0x8'));var csv=require(_0xbb10('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbb10('0xa'));var _=require(_0xbb10('0xb'));var squel=require('squel');var crypto=require(_0xbb10('0xc'));var jsforce=require(_0xbb10('0xd'));var deskjs=require(_0xbb10('0xe'));var toCsv=require(_0xbb10('0x9'));var querystring=require(_0xbb10('0xf'));var Papa=require(_0xbb10('0x10'));var Redis=require(_0xbb10('0x11'));var authService=require(_0xbb10('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbb10('0x13'));var logger=require(_0xbb10('0x14'))(_0xbb10('0x15'));var utils=require('../../config/utils');var config=require(_0xbb10('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xbb10('0x17'))['db'];function respondWithStatusCode(_0x916a32,_0x285009){_0x285009=_0x285009||0xcc;return function(_0x193a27){if(_0x193a27){return _0x916a32[_0xbb10('0x18')](_0x285009);}return _0x916a32[_0xbb10('0x19')](_0x285009)['end']();};}function respondWithResult(_0x26e021,_0x42d7e4){_0x42d7e4=_0x42d7e4||0xc8;return function(_0x45b9d6){if(_0x45b9d6){return _0x26e021[_0xbb10('0x19')](_0x42d7e4)[_0xbb10('0x1a')](_0x45b9d6);}};}function respondWithFilteredResult(_0x2f2ebf,_0x24a57b){return function(_0x36b5e8){if(_0x36b5e8){var _0x3e26f4=typeof _0x24a57b[_0xbb10('0x1b')]==='undefined'&&typeof _0x24a57b[_0xbb10('0x1c')]===_0xbb10('0x1d');var _0x133ac2=_0x36b5e8[_0xbb10('0x1e')];var _0x378da8=_0x3e26f4?0x0:_0x24a57b[_0xbb10('0x1b')];var _0x575cca=_0x3e26f4?_0x36b5e8[_0xbb10('0x1e')]:_0x24a57b[_0xbb10('0x1b')]+_0x24a57b[_0xbb10('0x1c')];var _0x48b6e9;if(_0x575cca>=_0x133ac2){_0x575cca=_0x133ac2;_0x48b6e9=0xc8;}else{_0x48b6e9=0xce;}_0x2f2ebf[_0xbb10('0x19')](_0x48b6e9);return _0x2f2ebf[_0xbb10('0x1f')](_0xbb10('0x20'),_0x378da8+'-'+_0x575cca+'/'+_0x133ac2)[_0xbb10('0x1a')](_0x36b5e8);}return null;};}function patchUpdates(_0xdf237d){return function(_0x44e563){try{jsonpatch['apply'](_0x44e563,_0xdf237d,!![]);}catch(_0x12f888){return BPromise[_0xbb10('0x21')](_0x12f888);}return _0x44e563['save']();};}function saveUpdates(_0x4c4b0d,_0x8e2b97){return function(_0x311abe){if(_0x311abe){return _0x311abe[_0xbb10('0x22')](_0x4c4b0d)[_0xbb10('0x23')](function(_0x445761){return _0x445761;});}return null;};}function removeEntity(_0x1824b7,_0x407cb4){return function(_0x436104){if(_0x436104){return _0x436104[_0xbb10('0x24')]()[_0xbb10('0x23')](function(){_0x1824b7[_0xbb10('0x19')](0xcc)[_0xbb10('0x25')]();});}};}function handleEntityNotFound(_0x537898,_0x4fedac){return function(_0x4fb5e0){if(!_0x4fb5e0){_0x537898[_0xbb10('0x18')](0x194);}return _0x4fb5e0;};}function handleError(_0x3c5ae7,_0x2c89b9){_0x2c89b9=_0x2c89b9||0x1f4;return function(_0x4e25ff){logger[_0xbb10('0x26')](_0x4e25ff[_0xbb10('0x27')]);if(_0x4e25ff[_0xbb10('0x28')]){delete _0x4e25ff[_0xbb10('0x28')];}_0x3c5ae7[_0xbb10('0x19')](_0x2c89b9)[_0xbb10('0x29')](_0x4e25ff);};}exports[_0xbb10('0x2a')]=function(_0x4aabb9,_0x3796c7){var _0x21ac54={},_0xfc3595={},_0x2e0249={'count':0x0,'rows':[]};var _0x1d30aa=_[_0xbb10('0x2b')](db['WhatsappQueueReport'][_0xbb10('0x2c')],function(_0x4ee02e){return{'name':_0x4ee02e[_0xbb10('0x2d')],'type':_0x4ee02e['type'][_0xbb10('0x2e')]};});_0xfc3595[_0xbb10('0x2f')]=_[_0xbb10('0x2b')](_0x1d30aa,'name');_0xfc3595['query']=_[_0xbb10('0x30')](_0x4aabb9[_0xbb10('0x31')]);_0xfc3595['filters']=_[_0xbb10('0x32')](_0xfc3595[_0xbb10('0x2f')],_0xfc3595[_0xbb10('0x31')]);_0x21ac54[_0xbb10('0x33')]=_[_0xbb10('0x32')](_0xfc3595[_0xbb10('0x2f')],qs[_0xbb10('0x34')](_0x4aabb9['query'][_0xbb10('0x34')]));_0x21ac54[_0xbb10('0x33')]=_0x21ac54[_0xbb10('0x33')][_0xbb10('0x35')]?_0x21ac54[_0xbb10('0x33')]:_0xfc3595[_0xbb10('0x2f')];if(!_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x36')](_0xbb10('0x37'))){_0x21ac54['limit']=qs[_0xbb10('0x1c')](_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x1c')]);_0x21ac54[_0xbb10('0x1b')]=qs['offset'](_0x4aabb9[_0xbb10('0x31')]['offset']);}_0x21ac54['order']=qs[_0xbb10('0x38')](_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x38')]);_0x21ac54[_0xbb10('0x39')]=qs[_0xbb10('0x3a')](_[_0xbb10('0x3b')](_0x4aabb9['query'],_0xfc3595[_0xbb10('0x3a')]),_0x1d30aa);if(_0x4aabb9[_0xbb10('0x31')]['filter']){_0x21ac54['where']=_['merge'](_0x21ac54[_0xbb10('0x39')],{'$or':_[_0xbb10('0x2b')](_0x1d30aa,function(_0x2b658a){if(_0x2b658a['type']!==_0xbb10('0x3c')){var _0x3e8538={};_0x3e8538[_0x2b658a[_0xbb10('0x28')]]={'$like':'%'+_0x4aabb9['query'][_0xbb10('0x3d')]+'%'};return _0x3e8538;}})});}_0x21ac54=_[_0xbb10('0x3e')]({},_0x21ac54,_0x4aabb9[_0xbb10('0x3f')]);var _0x446f49={'where':_0x21ac54['where']};return db[_0xbb10('0x40')][_0xbb10('0x1e')](_0x446f49)['then'](function(_0xe2040f){_0x2e0249[_0xbb10('0x1e')]=_0xe2040f;if(_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x41')]){_0x21ac54[_0xbb10('0x42')]=[{'all':!![]}];}return db[_0xbb10('0x40')]['findAll'](_0x21ac54);})[_0xbb10('0x23')](function(_0x1c7fae){_0x2e0249[_0xbb10('0x43')]=_0x1c7fae;return _0x2e0249;})[_0xbb10('0x23')](respondWithFilteredResult(_0x3796c7,_0x21ac54))['catch'](handleError(_0x3796c7,null));};exports[_0xbb10('0x44')]=function(_0x331751,_0x23dc18){var _0x403beb={'raw':!![],'where':{'id':_0x331751[_0xbb10('0x45')]['id']}},_0x5e2cfa={};_0x5e2cfa[_0xbb10('0x2f')]=_['keys'](db['WhatsappQueueReport'][_0xbb10('0x2c')]);_0x5e2cfa['query']=_[_0xbb10('0x30')](_0x331751[_0xbb10('0x31')]);_0x5e2cfa['filters']=_[_0xbb10('0x32')](_0x5e2cfa[_0xbb10('0x2f')],_0x5e2cfa[_0xbb10('0x31')]);_0x403beb['attributes']=_[_0xbb10('0x32')](_0x5e2cfa[_0xbb10('0x2f')],qs[_0xbb10('0x34')](_0x331751[_0xbb10('0x31')][_0xbb10('0x34')]));_0x403beb[_0xbb10('0x33')]=_0x403beb[_0xbb10('0x33')][_0xbb10('0x35')]?_0x403beb[_0xbb10('0x33')]:_0x5e2cfa[_0xbb10('0x2f')];if(_0x331751[_0xbb10('0x31')][_0xbb10('0x41')]){_0x403beb['include']=[{'all':!![]}];}_0x403beb=_[_0xbb10('0x3e')]({},_0x403beb,_0x331751[_0xbb10('0x3f')]);return db['WhatsappQueueReport'][_0xbb10('0x46')](_0x403beb)[_0xbb10('0x23')](handleEntityNotFound(_0x23dc18,null))[_0xbb10('0x23')](respondWithResult(_0x23dc18,null))[_0xbb10('0x47')](handleError(_0x23dc18,null));};exports[_0xbb10('0x48')]=function(_0x39f0de,_0x3e06b0){return db['WhatsappQueueReport']['create'](_0x39f0de[_0xbb10('0x49')],{})[_0xbb10('0x23')](respondWithResult(_0x3e06b0,0xc9))[_0xbb10('0x47')](handleError(_0x3e06b0,null));};exports['update']=function(_0x5f0c12,_0x3cd6f3){if(_0x5f0c12[_0xbb10('0x49')]['id']){delete _0x5f0c12[_0xbb10('0x49')]['id'];}return db[_0xbb10('0x40')][_0xbb10('0x46')]({'where':{'id':_0x5f0c12[_0xbb10('0x45')]['id']}})[_0xbb10('0x23')](handleEntityNotFound(_0x3cd6f3,null))[_0xbb10('0x23')](saveUpdates(_0x5f0c12[_0xbb10('0x49')],null))[_0xbb10('0x23')](respondWithResult(_0x3cd6f3,null))['catch'](handleError(_0x3cd6f3,null));};exports['destroy']=function(_0x412e13,_0x467dba){return db[_0xbb10('0x40')][_0xbb10('0x46')]({'where':{'id':_0x412e13[_0xbb10('0x45')]['id']}})[_0xbb10('0x23')](handleEntityNotFound(_0x467dba,null))[_0xbb10('0x23')](removeEntity(_0x467dba,null))[_0xbb10('0x47')](handleError(_0x467dba,null));};exports[_0xbb10('0x4a')]=function(_0x1214f7,_0x19ca3e){return db[_0xbb10('0x40')][_0xbb10('0x4a')]()[_0xbb10('0x23')](respondWithResult(_0x19ca3e,null))[_0xbb10('0x47')](handleError(_0x19ca3e,null));};
\ No newline at end of file
index 0360a32..b8e4158 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e2c=['util','api','moment','rimraf','../../config/environment','exports','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash'];(function(_0x1c2607,_0xb7333b){var _0xc38a62=function(_0x1ea270){while(--_0x1ea270){_0x1c2607['push'](_0x1c2607['shift']());}};_0xc38a62(++_0xb7333b);}(_0x4e2c,0x1a1));var _0xc4e2=function(_0x466bc,_0x1f76e3){_0x466bc=_0x466bc-0x0;var _0x5b5929=_0x4e2c[_0x466bc];return _0x5b5929;};'use strict';var _=require(_0xc4e2('0x0'));var util=require(_0xc4e2('0x1'));var logger=require('../../config/logger')(_0xc4e2('0x2'));var moment=require(_0xc4e2('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xc4e2('0x4'));var config=require(_0xc4e2('0x5'));var attributes=require('./whatsappQueueReport.attributes');module[_0xc4e2('0x6')]=function(_0x4f48e2,_0x949cbe){return _0x4f48e2[_0xc4e2('0x7')](_0xc4e2('0x8'),attributes,{'tableName':_0xc4e2('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xc4e2('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf9da=['request-promise','rimraf','../../config/environment','exports','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash','util','../../config/logger','moment','bluebird'];(function(_0x527ed8,_0x3ef7c1){var _0x551f3c=function(_0x2e9b7b){while(--_0x2e9b7b){_0x527ed8['push'](_0x527ed8['shift']());}};_0x551f3c(++_0x3ef7c1);}(_0xf9da,0x10c));var _0xaf9d=function(_0x13eda2,_0x1d3123){_0x13eda2=_0x13eda2-0x0;var _0x49c0d1=_0xf9da[_0x13eda2];return _0x49c0d1;};'use strict';var _=require(_0xaf9d('0x0'));var util=require(_0xaf9d('0x1'));var logger=require(_0xaf9d('0x2'))('api');var moment=require(_0xaf9d('0x3'));var BPromise=require(_0xaf9d('0x4'));var rp=require(_0xaf9d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xaf9d('0x6'));var config=require(_0xaf9d('0x7'));var attributes=require('./whatsappQueueReport.attributes');module[_0xaf9d('0x8')]=function(_0x24554f,_0x24b53d){return _0x24554f[_0xaf9d('0x9')](_0xaf9d('0xa'),attributes,{'tableName':_0xaf9d('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xaf9d('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 4dc18b5..f8fee4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf17d=['util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','WhatsappQueueReport','create','body','options','raw','CreateWhatsappQueueReport','UpdateWhatsappQueueReport','update','where','attributes','limit','lodash'];(function(_0x1ceafa,_0x252713){var _0x2cb283=function(_0x3b68c9){while(--_0x3b68c9){_0x1ceafa['push'](_0x1ceafa['shift']());}};_0x2cb283(++_0x252713);}(_0xf17d,0x175));var _0xdf17=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xf17d[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0xdf17('0x0'));var util=require(_0xdf17('0x1'));var moment=require(_0xdf17('0x2'));var BPromise=require(_0xdf17('0x3'));var rs=require(_0xdf17('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdf17('0x5'))['db'];var utils=require(_0xdf17('0x6'));var logger=require(_0xdf17('0x7'))('rpc');var config=require(_0xdf17('0x8'));var jayson=require(_0xdf17('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x113b26,_0x2d9e14,_0x4e9e9f){return new BPromise(function(_0x17a2c6,_0x452721){return client[_0xdf17('0xa')](_0x113b26,_0x4e9e9f)[_0xdf17('0xb')](function(_0x5216ed){logger[_0xdf17('0xc')](_0xdf17('0xd'),_0x2d9e14,_0xdf17('0xe'));logger[_0xdf17('0xf')](_0xdf17('0x10'),_0x2d9e14,_0xdf17('0xe'),JSON[_0xdf17('0x11')](_0x5216ed));if(_0x5216ed[_0xdf17('0x12')]){if(_0x5216ed[_0xdf17('0x12')][_0xdf17('0x13')]===0x1f4){logger[_0xdf17('0x12')](_0xdf17('0xd'),_0x2d9e14,_0x5216ed[_0xdf17('0x12')][_0xdf17('0x14')]);return _0x452721(_0x5216ed[_0xdf17('0x12')][_0xdf17('0x14')]);}logger[_0xdf17('0x12')](_0xdf17('0xd'),_0x2d9e14,_0x5216ed['error'][_0xdf17('0x14')]);return _0x17a2c6(_0x5216ed[_0xdf17('0x12')]['message']);}else{logger[_0xdf17('0xc')](_0xdf17('0xd'),_0x2d9e14,_0xdf17('0xe'));_0x17a2c6(_0x5216ed[_0xdf17('0x15')][_0xdf17('0x14')]);}})[_0xdf17('0x16')](function(_0x1e25ee){logger[_0xdf17('0x12')]('WhatsappQueueReport,\x20%s,\x20%s',_0x2d9e14,_0x1e25ee);_0x452721(_0x1e25ee);});});}exports['CreateWhatsappQueueReport']=function(_0x281b9d){var _0x53cc12=this;return new Promise(function(_0x425636,_0x23e3cf){return db[_0xdf17('0x17')][_0xdf17('0x18')](_0x281b9d[_0xdf17('0x19')],{'raw':_0x281b9d['options']?_0x281b9d[_0xdf17('0x1a')][_0xdf17('0x1b')]===undefined?!![]:![]:!![]})[_0xdf17('0xb')](function(_0x145410){logger[_0xdf17('0xc')](_0xdf17('0x1c'),_0x281b9d);logger[_0xdf17('0xf')](_0xdf17('0x1c'),_0x281b9d,JSON[_0xdf17('0x11')](_0x145410));_0x425636(_0x145410);})[_0xdf17('0x16')](function(_0x2fdf75){logger[_0xdf17('0x12')](_0xdf17('0x1c'),_0x2fdf75[_0xdf17('0x14')],_0x281b9d);_0x23e3cf(_0x53cc12['error'](0x1f4,_0x2fdf75[_0xdf17('0x14')]));});});};exports[_0xdf17('0x1d')]=function(_0x18888f){var _0x1aea7b=this;return new Promise(function(_0x25ef15,_0xd2005e){return db[_0xdf17('0x17')][_0xdf17('0x1e')](_0x18888f['body'],{'raw':_0x18888f[_0xdf17('0x1a')]?_0x18888f[_0xdf17('0x1a')][_0xdf17('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x18888f[_0xdf17('0x1a')]?_0x18888f['options'][_0xdf17('0x1f')]||null:null,'attributes':_0x18888f[_0xdf17('0x1a')]?_0x18888f[_0xdf17('0x1a')][_0xdf17('0x20')]||null:null,'limit':_0x18888f['options']?_0x18888f[_0xdf17('0x1a')][_0xdf17('0x21')]||null:null})[_0xdf17('0xb')](function(_0x65b9b7){logger[_0xdf17('0xc')](_0xdf17('0x1d'),_0x18888f);logger[_0xdf17('0xf')](_0xdf17('0x1d'),_0x18888f,JSON[_0xdf17('0x11')](_0x65b9b7));_0x25ef15(_0x65b9b7);})[_0xdf17('0x16')](function(_0x4458d9){logger[_0xdf17('0x12')](_0xdf17('0x1d'),_0x4458d9['message'],_0x18888f);_0xd2005e(_0x1aea7b[_0xdf17('0x12')](0x1f4,_0x4458d9[_0xdf17('0x14')]));});});};
\ No newline at end of file
+var _0x1e39=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','options','raw','update','where','attributes','UpdateWhatsappQueueReport','util','moment','bluebird','randomstring'];(function(_0x455658,_0x38f71d){var _0x300d4a=function(_0x212df4){while(--_0x212df4){_0x455658['push'](_0x455658['shift']());}};_0x300d4a(++_0x38f71d);}(_0x1e39,0xc2));var _0x91e3=function(_0xa98302,_0x844f27){_0xa98302=_0xa98302-0x0;var _0x1ad8e3=_0x1e39[_0xa98302];return _0x1ad8e3;};'use strict';var _=require('lodash');var util=require(_0x91e3('0x0'));var moment=require(_0x91e3('0x1'));var BPromise=require(_0x91e3('0x2'));var rs=require(_0x91e3('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x91e3('0x4'))['db'];var utils=require(_0x91e3('0x5'));var logger=require(_0x91e3('0x6'))('rpc');var config=require(_0x91e3('0x7'));var jayson=require(_0x91e3('0x8'));var client=jayson[_0x91e3('0x9')][_0x91e3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x184435,_0x17a419,_0x2eda89){return new BPromise(function(_0x2fdb50,_0x3cb448){return client[_0x91e3('0xb')](_0x184435,_0x2eda89)[_0x91e3('0xc')](function(_0x11e628){logger[_0x91e3('0xd')](_0x91e3('0xe'),_0x17a419,_0x91e3('0xf'));logger[_0x91e3('0x10')](_0x91e3('0x11'),_0x17a419,_0x91e3('0xf'),JSON[_0x91e3('0x12')](_0x11e628));if(_0x11e628[_0x91e3('0x13')]){if(_0x11e628[_0x91e3('0x13')][_0x91e3('0x14')]===0x1f4){logger[_0x91e3('0x13')](_0x91e3('0xe'),_0x17a419,_0x11e628[_0x91e3('0x13')][_0x91e3('0x15')]);return _0x3cb448(_0x11e628[_0x91e3('0x13')]['message']);}logger['error']('WhatsappQueueReport,\x20%s,\x20%s',_0x17a419,_0x11e628['error'][_0x91e3('0x15')]);return _0x2fdb50(_0x11e628[_0x91e3('0x13')][_0x91e3('0x15')]);}else{logger[_0x91e3('0xd')]('WhatsappQueueReport,\x20%s,\x20%s',_0x17a419,'request\x20sent');_0x2fdb50(_0x11e628['result'][_0x91e3('0x15')]);}})[_0x91e3('0x16')](function(_0x4ef4e4){logger[_0x91e3('0x13')](_0x91e3('0xe'),_0x17a419,_0x4ef4e4);_0x3cb448(_0x4ef4e4);});});}exports[_0x91e3('0x17')]=function(_0x5bb189){var _0x4ee5de=this;return new Promise(function(_0x35ae45,_0x1b3818){return db[_0x91e3('0x18')][_0x91e3('0x19')](_0x5bb189[_0x91e3('0x1a')],{'raw':_0x5bb189[_0x91e3('0x1b')]?_0x5bb189[_0x91e3('0x1b')][_0x91e3('0x1c')]===undefined?!![]:![]:!![]})[_0x91e3('0xc')](function(_0x56c25f){logger[_0x91e3('0xd')](_0x91e3('0x17'),_0x5bb189);logger['debug'](_0x91e3('0x17'),_0x5bb189,JSON['stringify'](_0x56c25f));_0x35ae45(_0x56c25f);})[_0x91e3('0x16')](function(_0x1fd273){logger[_0x91e3('0x13')](_0x91e3('0x17'),_0x1fd273['message'],_0x5bb189);_0x1b3818(_0x4ee5de[_0x91e3('0x13')](0x1f4,_0x1fd273[_0x91e3('0x15')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x5468f5){var _0x24624e=this;return new Promise(function(_0x40a755,_0x2b351b){return db['WhatsappQueueReport'][_0x91e3('0x1d')](_0x5468f5[_0x91e3('0x1a')],{'raw':_0x5468f5[_0x91e3('0x1b')]?_0x5468f5[_0x91e3('0x1b')][_0x91e3('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5468f5[_0x91e3('0x1b')]?_0x5468f5[_0x91e3('0x1b')][_0x91e3('0x1e')]||null:null,'attributes':_0x5468f5[_0x91e3('0x1b')]?_0x5468f5['options'][_0x91e3('0x1f')]||null:null,'limit':_0x5468f5[_0x91e3('0x1b')]?_0x5468f5['options']['limit']||null:null})['then'](function(_0x2f67bf){logger[_0x91e3('0xd')](_0x91e3('0x20'),_0x5468f5);logger[_0x91e3('0x10')]('UpdateWhatsappQueueReport',_0x5468f5,JSON[_0x91e3('0x12')](_0x2f67bf));_0x40a755(_0x2f67bf);})[_0x91e3('0x16')](function(_0x2500ee){logger[_0x91e3('0x13')]('UpdateWhatsappQueueReport',_0x2500ee[_0x91e3('0x15')],_0x5468f5);_0x2b351b(_0x24624e[_0x91e3('0x13')](0x1f4,_0x2500ee[_0x91e3('0x15')]));});});};
\ No newline at end of file
index 5eead8c..91c8b37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc146=['delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','/:id','post','create','update'];(function(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0xc146,0xcb));var _0x6c14=function(_0x3dd099,_0x152935){_0x3dd099=_0x3dd099-0x0;var _0x490bf2=_0xc146[_0x3dd099];return _0x490bf2;};'use strict';var multer=require(_0x6c14('0x0'));var util=require(_0x6c14('0x1'));var path=require(_0x6c14('0x2'));var timeout=require(_0x6c14('0x3'));var express=require(_0x6c14('0x4'));var router=express[_0x6c14('0x5')]();var fs_extra=require(_0x6c14('0x6'));var auth=require(_0x6c14('0x7'));var interaction=require(_0x6c14('0x8'));var config=require(_0x6c14('0x9'));var controller=require('./whatsappTransferReport.controller');router[_0x6c14('0xa')]('/',auth[_0x6c14('0xb')](),controller['index']);router[_0x6c14('0xa')](_0x6c14('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x6c14('0xa')](_0x6c14('0xd'),auth[_0x6c14('0xb')](),controller['show']);router[_0x6c14('0xe')]('/',auth['isAuthenticated'](),controller[_0x6c14('0xf')]);router['put']('/:id',auth[_0x6c14('0xb')](),controller[_0x6c14('0x10')]);router[_0x6c14('0x11')](_0x6c14('0xd'),auth[_0x6c14('0xb')](),controller[_0x6c14('0x12')]);module[_0x6c14('0x13')]=router;
\ No newline at end of file
+var _0xf263=['update','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./whatsappTransferReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','create','put'];(function(_0x4eb082,_0x5ee5de){var _0x2f17e0=function(_0x189b86){while(--_0x189b86){_0x4eb082['push'](_0x4eb082['shift']());}};_0x2f17e0(++_0x5ee5de);}(_0xf263,0xea));var _0x3f26=function(_0x385eb1,_0x497a94){_0x385eb1=_0x385eb1-0x0;var _0x5d40eb=_0xf263[_0x385eb1];return _0x5d40eb;};'use strict';var multer=require(_0x3f26('0x0'));var util=require(_0x3f26('0x1'));var path=require(_0x3f26('0x2'));var timeout=require(_0x3f26('0x3'));var express=require('express');var router=express[_0x3f26('0x4')]();var fs_extra=require(_0x3f26('0x5'));var auth=require(_0x3f26('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x3f26('0x7'));var controller=require(_0x3f26('0x8'));router[_0x3f26('0x9')]('/',auth['isAuthenticated'](),controller[_0x3f26('0xa')]);router['get'](_0x3f26('0xb'),auth[_0x3f26('0xc')](),controller[_0x3f26('0xd')]);router[_0x3f26('0x9')](_0x3f26('0xe'),auth['isAuthenticated'](),controller[_0x3f26('0xf')]);router['post']('/',auth[_0x3f26('0xc')](),controller[_0x3f26('0x10')]);router[_0x3f26('0x11')](_0x3f26('0xe'),auth[_0x3f26('0xc')](),controller[_0x3f26('0x12')]);router[_0x3f26('0x13')](_0x3f26('0xe'),auth[_0x3f26('0xc')](),controller[_0x3f26('0x14')]);module['exports']=router;
\ No newline at end of file
index e541133..91e0ddd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb67f=['exports','STRING','ENUM','account','agent','queue','DATE'];(function(_0x47a89e,_0x44536d){var _0x2b87f6=function(_0x4fc81a){while(--_0x4fc81a){_0x47a89e['push'](_0x47a89e['shift']());}};_0x2b87f6(++_0x44536d);}(_0xb67f,0x12d));var _0xfb67=function(_0x496d1b,_0x29d133){_0x496d1b=_0x496d1b-0x0;var _0x1855e2=_0xb67f[_0x496d1b];return _0x1855e2;};'use strict';var Sequelize=require('sequelize');module[_0xfb67('0x0')]={'uniqueid':{'type':Sequelize[_0xfb67('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xfb67('0x2')](_0xfb67('0x3'),_0xfb67('0x4'),_0xfb67('0x5')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0xfb67('0x6')]}};
\ No newline at end of file
+var _0xa908=['DATE','sequelize','STRING','account','agent','queue'];(function(_0x21aec3,_0x5c97e9){var _0x288bbc=function(_0x2283fe){while(--_0x2283fe){_0x21aec3['push'](_0x21aec3['shift']());}};_0x288bbc(++_0x5c97e9);}(_0xa908,0x1c3));var _0x8a90=function(_0x4629ee,_0x5802d8){_0x4629ee=_0x4629ee-0x0;var _0x47fb5b=_0xa908[_0x4629ee];return _0x47fb5b;};'use strict';var Sequelize=require(_0x8a90('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x8a90('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x8a90('0x2'),_0x8a90('0x3'),_0x8a90('0x4')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x8a90('0x5')]}};
\ No newline at end of file
index 6bb0260..e47099d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa42d=['request-promise','bluebird','path','to-csv','ejs','fs-extra','lodash','squel','crypto','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','destroy','then','sendStatus','stack','name','send','rawAttributes','fieldName','type','key','map','keys','filters','intersection','model','attributes','fields','query','length','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','WhatsappTransferReport','includeAll','include','findAll','catch','show','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x2dc343,_0xf015a2){var _0x51eac5=function(_0x1adfef){while(--_0x1adfef){_0x2dc343['push'](_0x2dc343['shift']());}};_0x51eac5(++_0xf015a2);}(_0xa42d,0x1ed));var _0xda42=function(_0x5a70dc,_0x493d15){_0x5a70dc=_0x5a70dc-0x0;var _0x3a6f28=_0xa42d[_0x5a70dc];return _0x3a6f28;};'use strict';var emlformat=require(_0xda42('0x0'));var rimraf=require(_0xda42('0x1'));var zipdir=require(_0xda42('0x2'));var jsonpatch=require(_0xda42('0x3'));var rp=require(_0xda42('0x4'));var moment=require('moment');var BPromise=require(_0xda42('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xda42('0x6'));var sox=require('sox');var csv=require(_0xda42('0x7'));var ejs=require(_0xda42('0x8'));var fs=require('fs');var fs_extra=require(_0xda42('0x9'));var _=require(_0xda42('0xa'));var squel=require(_0xda42('0xb'));var crypto=require(_0xda42('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xda42('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xda42('0xe'));var as=require(_0xda42('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xda42('0x10'))(_0xda42('0x11'));var utils=require(_0xda42('0x12'));var config=require(_0xda42('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xda42('0x14'))['db'];function respondWithStatusCode(_0x368dbd,_0x316373){_0x316373=_0x316373||0xcc;return function(_0x3b70c4){if(_0x3b70c4){return _0x368dbd['sendStatus'](_0x316373);}return _0x368dbd[_0xda42('0x15')](_0x316373)[_0xda42('0x16')]();};}function respondWithResult(_0x17aaa6,_0x4517ff){_0x4517ff=_0x4517ff||0xc8;return function(_0x3548a1){if(_0x3548a1){return _0x17aaa6[_0xda42('0x15')](_0x4517ff)[_0xda42('0x17')](_0x3548a1);}};}function respondWithFilteredResult(_0x1abfb6,_0x3ba9f3){return function(_0x40875d){if(_0x40875d){var _0x4740d8=typeof _0x3ba9f3[_0xda42('0x18')]==='undefined'&&typeof _0x3ba9f3[_0xda42('0x19')]===_0xda42('0x1a');var _0x3c1de0=_0x40875d['count'];var _0x13871e=_0x4740d8?0x0:_0x3ba9f3[_0xda42('0x18')];var _0xa54b89=_0x4740d8?_0x40875d[_0xda42('0x1b')]:_0x3ba9f3['offset']+_0x3ba9f3['limit'];var _0x581c19;if(_0xa54b89>=_0x3c1de0){_0xa54b89=_0x3c1de0;_0x581c19=0xc8;}else{_0x581c19=0xce;}_0x1abfb6[_0xda42('0x15')](_0x581c19);return _0x1abfb6[_0xda42('0x1c')](_0xda42('0x1d'),_0x13871e+'-'+_0xa54b89+'/'+_0x3c1de0)[_0xda42('0x17')](_0x40875d);}return null;};}function patchUpdates(_0x1554da){return function(_0xfed3c2){try{jsonpatch[_0xda42('0x1e')](_0xfed3c2,_0x1554da,!![]);}catch(_0x1aa89b){return BPromise[_0xda42('0x1f')](_0x1aa89b);}return _0xfed3c2['save']();};}function saveUpdates(_0x1837d8,_0x17584f){return function(_0x3c6fa3){if(_0x3c6fa3){return _0x3c6fa3[_0xda42('0x20')](_0x1837d8)['then'](function(_0x114ceb){return _0x114ceb;});}return null;};}function removeEntity(_0x15c7f4,_0x188374){return function(_0x2417bc){if(_0x2417bc){return _0x2417bc[_0xda42('0x21')]()[_0xda42('0x22')](function(){_0x15c7f4[_0xda42('0x15')](0xcc)[_0xda42('0x16')]();});}};}function handleEntityNotFound(_0x4809e,_0x1cf9bf){return function(_0x50d4c0){if(!_0x50d4c0){_0x4809e[_0xda42('0x23')](0x194);}return _0x50d4c0;};}function handleError(_0x5324c7,_0x37bb90){_0x37bb90=_0x37bb90||0x1f4;return function(_0x15ef77){logger['error'](_0x15ef77[_0xda42('0x24')]);if(_0x15ef77['name']){delete _0x15ef77[_0xda42('0x25')];}_0x5324c7[_0xda42('0x15')](_0x37bb90)[_0xda42('0x26')](_0x15ef77);};}exports['index']=function(_0x5793eb,_0x1438a3){var _0x36d893={},_0x551a6b={},_0x531c5b={'count':0x0,'rows':[]};var _0xe38ac3=_['map'](db['WhatsappTransferReport'][_0xda42('0x27')],function(_0x2e31da){return{'name':_0x2e31da[_0xda42('0x28')],'type':_0x2e31da[_0xda42('0x29')][_0xda42('0x2a')]};});_0x551a6b['model']=_[_0xda42('0x2b')](_0xe38ac3,'name');_0x551a6b['query']=_[_0xda42('0x2c')](_0x5793eb['query']);_0x551a6b[_0xda42('0x2d')]=_[_0xda42('0x2e')](_0x551a6b[_0xda42('0x2f')],_0x551a6b['query']);_0x36d893[_0xda42('0x30')]=_[_0xda42('0x2e')](_0x551a6b[_0xda42('0x2f')],qs[_0xda42('0x31')](_0x5793eb[_0xda42('0x32')]['fields']));_0x36d893[_0xda42('0x30')]=_0x36d893[_0xda42('0x30')][_0xda42('0x33')]?_0x36d893[_0xda42('0x30')]:_0x551a6b[_0xda42('0x2f')];if(!_0x5793eb[_0xda42('0x32')][_0xda42('0x34')]('nolimit')){_0x36d893['limit']=qs[_0xda42('0x19')](_0x5793eb[_0xda42('0x32')]['limit']);_0x36d893[_0xda42('0x18')]=qs[_0xda42('0x18')](_0x5793eb[_0xda42('0x32')]['offset']);}_0x36d893[_0xda42('0x35')]=qs['sort'](_0x5793eb[_0xda42('0x32')][_0xda42('0x36')]);_0x36d893[_0xda42('0x37')]=qs['filters'](_['pick'](_0x5793eb['query'],_0x551a6b[_0xda42('0x2d')]),_0xe38ac3);if(_0x5793eb[_0xda42('0x32')][_0xda42('0x38')]){_0x36d893[_0xda42('0x37')]=_[_0xda42('0x39')](_0x36d893['where'],{'$or':_[_0xda42('0x2b')](_0xe38ac3,function(_0x35da8f){if(_0x35da8f[_0xda42('0x29')]!==_0xda42('0x3a')){var _0xd0d35c={};_0xd0d35c[_0x35da8f[_0xda42('0x25')]]={'$like':'%'+_0x5793eb[_0xda42('0x32')][_0xda42('0x38')]+'%'};return _0xd0d35c;}})});}_0x36d893=_[_0xda42('0x39')]({},_0x36d893,_0x5793eb[_0xda42('0x3b')]);var _0x2e0e5e={'where':_0x36d893['where']};return db[_0xda42('0x3c')][_0xda42('0x1b')](_0x2e0e5e)['then'](function(_0x49ee6f){_0x531c5b[_0xda42('0x1b')]=_0x49ee6f;if(_0x5793eb[_0xda42('0x32')][_0xda42('0x3d')]){_0x36d893[_0xda42('0x3e')]=[{'all':!![]}];}return db[_0xda42('0x3c')][_0xda42('0x3f')](_0x36d893);})['then'](function(_0x2ede30){_0x531c5b['rows']=_0x2ede30;return _0x531c5b;})[_0xda42('0x22')](respondWithFilteredResult(_0x1438a3,_0x36d893))[_0xda42('0x40')](handleError(_0x1438a3,null));};exports[_0xda42('0x41')]=function(_0x5593a0,_0x3dc2c4){var _0x4577b4={'raw':!![],'where':{'id':_0x5593a0['params']['id']}},_0x228bc8={};_0x228bc8[_0xda42('0x2f')]=_[_0xda42('0x2c')](db[_0xda42('0x3c')][_0xda42('0x27')]);_0x228bc8[_0xda42('0x32')]=_[_0xda42('0x2c')](_0x5593a0[_0xda42('0x32')]);_0x228bc8[_0xda42('0x2d')]=_[_0xda42('0x2e')](_0x228bc8[_0xda42('0x2f')],_0x228bc8[_0xda42('0x32')]);_0x4577b4['attributes']=_[_0xda42('0x2e')](_0x228bc8['model'],qs[_0xda42('0x31')](_0x5593a0[_0xda42('0x32')][_0xda42('0x31')]));_0x4577b4[_0xda42('0x30')]=_0x4577b4[_0xda42('0x30')][_0xda42('0x33')]?_0x4577b4['attributes']:_0x228bc8[_0xda42('0x2f')];if(_0x5593a0[_0xda42('0x32')][_0xda42('0x3d')]){_0x4577b4[_0xda42('0x3e')]=[{'all':!![]}];}_0x4577b4=_[_0xda42('0x39')]({},_0x4577b4,_0x5593a0[_0xda42('0x3b')]);return db[_0xda42('0x3c')][_0xda42('0x42')](_0x4577b4)[_0xda42('0x22')](handleEntityNotFound(_0x3dc2c4,null))[_0xda42('0x22')](respondWithResult(_0x3dc2c4,null))[_0xda42('0x40')](handleError(_0x3dc2c4,null));};exports['create']=function(_0x326732,_0x111084){return db['WhatsappTransferReport'][_0xda42('0x43')](_0x326732[_0xda42('0x44')],{})['then'](respondWithResult(_0x111084,0xc9))[_0xda42('0x40')](handleError(_0x111084,null));};exports['update']=function(_0xf00b45,_0x3ccdd){if(_0xf00b45[_0xda42('0x44')]['id']){delete _0xf00b45[_0xda42('0x44')]['id'];}return db[_0xda42('0x3c')][_0xda42('0x42')]({'where':{'id':_0xf00b45[_0xda42('0x45')]['id']}})[_0xda42('0x22')](handleEntityNotFound(_0x3ccdd,null))[_0xda42('0x22')](saveUpdates(_0xf00b45[_0xda42('0x44')],null))[_0xda42('0x22')](respondWithResult(_0x3ccdd,null))[_0xda42('0x40')](handleError(_0x3ccdd,null));};exports[_0xda42('0x21')]=function(_0x134f82,_0x3294c2){return db[_0xda42('0x3c')][_0xda42('0x42')]({'where':{'id':_0x134f82[_0xda42('0x45')]['id']}})[_0xda42('0x22')](handleEntityNotFound(_0x3294c2,null))[_0xda42('0x22')](removeEntity(_0x3294c2,null))['catch'](handleError(_0x3294c2,null));};exports[_0xda42('0x46')]=function(_0x1ce7ca,_0xe44c9){return db[_0xda42('0x3c')][_0xda42('0x46')]()['then'](respondWithResult(_0xe44c9,null))[_0xda42('0x40')](handleError(_0xe44c9,null));};
\ No newline at end of file
+var _0x1635=['status','offset','undefined','limit','count','set','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','WhatsappTransferReport','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','include','catch','show','params','keys','fields','includeAll','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','end'];(function(_0x26391b,_0x4382d1){var _0x180277=function(_0x421a0a){while(--_0x421a0a){_0x26391b['push'](_0x26391b['shift']());}};_0x180277(++_0x4382d1);}(_0x1635,0x1ae));var _0x5163=function(_0x1fc0a7,_0x395038){_0x1fc0a7=_0x1fc0a7-0x0;var _0x18209a=_0x1635[_0x1fc0a7];return _0x18209a;};'use strict';var emlformat=require(_0x5163('0x0'));var rimraf=require(_0x5163('0x1'));var zipdir=require(_0x5163('0x2'));var jsonpatch=require(_0x5163('0x3'));var rp=require(_0x5163('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x5163('0x5'));var sox=require(_0x5163('0x6'));var csv=require(_0x5163('0x7'));var ejs=require(_0x5163('0x8'));var fs=require('fs');var fs_extra=require(_0x5163('0x9'));var _=require(_0x5163('0xa'));var squel=require(_0x5163('0xb'));var crypto=require(_0x5163('0xc'));var jsforce=require(_0x5163('0xd'));var deskjs=require(_0x5163('0xe'));var toCsv=require(_0x5163('0x7'));var querystring=require('querystring');var Papa=require(_0x5163('0xf'));var Redis=require('ioredis');var authService=require(_0x5163('0x10'));var qs=require(_0x5163('0x11'));var as=require(_0x5163('0x12'));var hardwareService=require(_0x5163('0x13'));var logger=require(_0x5163('0x14'))(_0x5163('0x15'));var utils=require(_0x5163('0x16'));var config=require(_0x5163('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3c48d9,_0x3d9970){_0x3d9970=_0x3d9970||0xcc;return function(_0x20bcfd){if(_0x20bcfd){return _0x3c48d9[_0x5163('0x18')](_0x3d9970);}return _0x3c48d9['status'](_0x3d9970)[_0x5163('0x19')]();};}function respondWithResult(_0x264a23,_0x11e4f6){_0x11e4f6=_0x11e4f6||0xc8;return function(_0xb807bb){if(_0xb807bb){return _0x264a23[_0x5163('0x1a')](_0x11e4f6)['json'](_0xb807bb);}};}function respondWithFilteredResult(_0x5d5380,_0x476907){return function(_0x35af98){if(_0x35af98){var _0x3b583c=typeof _0x476907[_0x5163('0x1b')]===_0x5163('0x1c')&&typeof _0x476907[_0x5163('0x1d')]==='undefined';var _0xc329bf=_0x35af98[_0x5163('0x1e')];var _0x1e86fb=_0x3b583c?0x0:_0x476907[_0x5163('0x1b')];var _0x32e811=_0x3b583c?_0x35af98[_0x5163('0x1e')]:_0x476907[_0x5163('0x1b')]+_0x476907[_0x5163('0x1d')];var _0x19c860;if(_0x32e811>=_0xc329bf){_0x32e811=_0xc329bf;_0x19c860=0xc8;}else{_0x19c860=0xce;}_0x5d5380['status'](_0x19c860);return _0x5d5380[_0x5163('0x1f')]('Content-Range',_0x1e86fb+'-'+_0x32e811+'/'+_0xc329bf)[_0x5163('0x20')](_0x35af98);}return null;};}function patchUpdates(_0x2f8172){return function(_0x2467b1){try{jsonpatch[_0x5163('0x21')](_0x2467b1,_0x2f8172,!![]);}catch(_0x47ce3d){return BPromise[_0x5163('0x22')](_0x47ce3d);}return _0x2467b1[_0x5163('0x23')]();};}function saveUpdates(_0x57c039,_0x5286d2){return function(_0x48bedc){if(_0x48bedc){return _0x48bedc[_0x5163('0x24')](_0x57c039)[_0x5163('0x25')](function(_0x4ac943){return _0x4ac943;});}return null;};}function removeEntity(_0x159eb1,_0x134253){return function(_0xbe8f13){if(_0xbe8f13){return _0xbe8f13[_0x5163('0x26')]()[_0x5163('0x25')](function(){_0x159eb1[_0x5163('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x338508,_0x26ee92){return function(_0x281c5b){if(!_0x281c5b){_0x338508['sendStatus'](0x194);}return _0x281c5b;};}function handleError(_0x5a5e36,_0x227b4b){_0x227b4b=_0x227b4b||0x1f4;return function(_0x19b5a4){logger[_0x5163('0x27')](_0x19b5a4[_0x5163('0x28')]);if(_0x19b5a4[_0x5163('0x29')]){delete _0x19b5a4[_0x5163('0x29')];}_0x5a5e36[_0x5163('0x1a')](_0x227b4b)[_0x5163('0x2a')](_0x19b5a4);};}exports[_0x5163('0x2b')]=function(_0x1f3186,_0xe1b16b){var _0x1fe9d3={},_0xb9d09e={},_0x134147={'count':0x0,'rows':[]};var _0x399ab5=_[_0x5163('0x2c')](db[_0x5163('0x2d')][_0x5163('0x2e')],function(_0x8f7a27){return{'name':_0x8f7a27[_0x5163('0x2f')],'type':_0x8f7a27[_0x5163('0x30')]['key']};});_0xb9d09e[_0x5163('0x31')]=_[_0x5163('0x2c')](_0x399ab5,_0x5163('0x29'));_0xb9d09e['query']=_['keys'](_0x1f3186[_0x5163('0x32')]);_0xb9d09e[_0x5163('0x33')]=_[_0x5163('0x34')](_0xb9d09e[_0x5163('0x31')],_0xb9d09e['query']);_0x1fe9d3[_0x5163('0x35')]=_[_0x5163('0x34')](_0xb9d09e[_0x5163('0x31')],qs['fields'](_0x1f3186['query']['fields']));_0x1fe9d3[_0x5163('0x35')]=_0x1fe9d3['attributes'][_0x5163('0x36')]?_0x1fe9d3[_0x5163('0x35')]:_0xb9d09e[_0x5163('0x31')];if(!_0x1f3186[_0x5163('0x32')][_0x5163('0x37')](_0x5163('0x38'))){_0x1fe9d3[_0x5163('0x1d')]=qs[_0x5163('0x1d')](_0x1f3186['query'][_0x5163('0x1d')]);_0x1fe9d3[_0x5163('0x1b')]=qs[_0x5163('0x1b')](_0x1f3186[_0x5163('0x32')]['offset']);}_0x1fe9d3[_0x5163('0x39')]=qs[_0x5163('0x3a')](_0x1f3186[_0x5163('0x32')]['sort']);_0x1fe9d3[_0x5163('0x3b')]=qs[_0x5163('0x33')](_[_0x5163('0x3c')](_0x1f3186[_0x5163('0x32')],_0xb9d09e['filters']),_0x399ab5);if(_0x1f3186['query']['filter']){_0x1fe9d3[_0x5163('0x3b')]=_[_0x5163('0x3d')](_0x1fe9d3[_0x5163('0x3b')],{'$or':_[_0x5163('0x2c')](_0x399ab5,function(_0x3f4e47){if(_0x3f4e47['type']!==_0x5163('0x3e')){var _0x1cc054={};_0x1cc054[_0x3f4e47[_0x5163('0x29')]]={'$like':'%'+_0x1f3186[_0x5163('0x32')][_0x5163('0x3f')]+'%'};return _0x1cc054;}})});}_0x1fe9d3=_['merge']({},_0x1fe9d3,_0x1f3186[_0x5163('0x40')]);var _0x42556d={'where':_0x1fe9d3['where']};return db[_0x5163('0x2d')][_0x5163('0x1e')](_0x42556d)[_0x5163('0x25')](function(_0x52ccb7){_0x134147[_0x5163('0x1e')]=_0x52ccb7;if(_0x1f3186[_0x5163('0x32')]['includeAll']){_0x1fe9d3[_0x5163('0x41')]=[{'all':!![]}];}return db[_0x5163('0x2d')]['findAll'](_0x1fe9d3);})[_0x5163('0x25')](function(_0x4dc36d){_0x134147['rows']=_0x4dc36d;return _0x134147;})[_0x5163('0x25')](respondWithFilteredResult(_0xe1b16b,_0x1fe9d3))[_0x5163('0x42')](handleError(_0xe1b16b,null));};exports[_0x5163('0x43')]=function(_0x283500,_0x28b0a6){var _0x25799d={'raw':!![],'where':{'id':_0x283500[_0x5163('0x44')]['id']}},_0x3e2a41={};_0x3e2a41[_0x5163('0x31')]=_[_0x5163('0x45')](db[_0x5163('0x2d')][_0x5163('0x2e')]);_0x3e2a41['query']=_[_0x5163('0x45')](_0x283500[_0x5163('0x32')]);_0x3e2a41[_0x5163('0x33')]=_[_0x5163('0x34')](_0x3e2a41[_0x5163('0x31')],_0x3e2a41[_0x5163('0x32')]);_0x25799d[_0x5163('0x35')]=_['intersection'](_0x3e2a41['model'],qs['fields'](_0x283500[_0x5163('0x32')][_0x5163('0x46')]));_0x25799d[_0x5163('0x35')]=_0x25799d[_0x5163('0x35')][_0x5163('0x36')]?_0x25799d[_0x5163('0x35')]:_0x3e2a41['model'];if(_0x283500[_0x5163('0x32')][_0x5163('0x47')]){_0x25799d['include']=[{'all':!![]}];}_0x25799d=_[_0x5163('0x3d')]({},_0x25799d,_0x283500['options']);return db[_0x5163('0x2d')][_0x5163('0x48')](_0x25799d)[_0x5163('0x25')](handleEntityNotFound(_0x28b0a6,null))[_0x5163('0x25')](respondWithResult(_0x28b0a6,null))[_0x5163('0x42')](handleError(_0x28b0a6,null));};exports[_0x5163('0x49')]=function(_0x5f3777,_0x5d435d){return db[_0x5163('0x2d')][_0x5163('0x49')](_0x5f3777[_0x5163('0x4a')],{})[_0x5163('0x25')](respondWithResult(_0x5d435d,0xc9))[_0x5163('0x42')](handleError(_0x5d435d,null));};exports[_0x5163('0x24')]=function(_0x45f2a3,_0x489017){if(_0x45f2a3[_0x5163('0x4a')]['id']){delete _0x45f2a3[_0x5163('0x4a')]['id'];}return db['WhatsappTransferReport'][_0x5163('0x48')]({'where':{'id':_0x45f2a3[_0x5163('0x44')]['id']}})[_0x5163('0x25')](handleEntityNotFound(_0x489017,null))[_0x5163('0x25')](saveUpdates(_0x45f2a3[_0x5163('0x4a')],null))[_0x5163('0x25')](respondWithResult(_0x489017,null))[_0x5163('0x42')](handleError(_0x489017,null));};exports[_0x5163('0x26')]=function(_0x51ab19,_0x760cfc){return db['WhatsappTransferReport']['find']({'where':{'id':_0x51ab19[_0x5163('0x44')]['id']}})['then'](handleEntityNotFound(_0x760cfc,null))[_0x5163('0x25')](removeEntity(_0x760cfc,null))[_0x5163('0x42')](handleError(_0x760cfc,null));};exports[_0x5163('0x4b')]=function(_0x5517c6,_0x64fb60){return db[_0x5163('0x2d')][_0x5163('0x4b')]()[_0x5163('0x25')](respondWithResult(_0x64fb60,null))[_0x5163('0x42')](handleError(_0x64fb60,null));};
\ No newline at end of file
index d85860e..69ad574 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc239=['api','moment','request-promise','rimraf','../../config/environment','define','report_whatsapp_transfer'];(function(_0x1d505f,_0x3e0767){var _0x19e20d=function(_0x3ec141){while(--_0x3ec141){_0x1d505f['push'](_0x1d505f['shift']());}};_0x19e20d(++_0x3e0767);}(_0xc239,0x196));var _0x9c23=function(_0x24f31b,_0x44b8f3){_0x24f31b=_0x24f31b-0x0;var _0x488401=_0xc239[_0x24f31b];return _0x488401;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x9c23('0x0'));var moment=require(_0x9c23('0x1'));var BPromise=require('bluebird');var rp=require(_0x9c23('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9c23('0x3'));var config=require(_0x9c23('0x4'));var attributes=require('./whatsappTransferReport.attributes');module['exports']=function(_0x2b8c60,_0x447b4e){return _0x2b8c60[_0x9c23('0x5')]('WhatsappTransferReport',attributes,{'tableName':_0x9c23('0x6'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9432=['rimraf','../../config/environment','./whatsappTransferReport.attributes','exports','define','report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3404f6,_0x5cea8a){var _0x2edbd1=function(_0x235810){while(--_0x235810){_0x3404f6['push'](_0x3404f6['shift']());}};_0x2edbd1(++_0x5cea8a);}(_0x9432,0xe8));var _0x2943=function(_0x11b2a6,_0x4578bf){_0x11b2a6=_0x11b2a6-0x0;var _0x1f02ec=_0x9432[_0x11b2a6];return _0x1f02ec;};'use strict';var _=require(_0x2943('0x0'));var util=require(_0x2943('0x1'));var logger=require(_0x2943('0x2'))(_0x2943('0x3'));var moment=require(_0x2943('0x4'));var BPromise=require(_0x2943('0x5'));var rp=require(_0x2943('0x6'));var fs=require('fs');var path=require(_0x2943('0x7'));var rimraf=require(_0x2943('0x8'));var config=require(_0x2943('0x9'));var attributes=require(_0x2943('0xa'));module[_0x2943('0xb')]=function(_0x194925,_0x301f88){return _0x194925[_0x2943('0xc')]('WhatsappTransferReport',attributes,{'tableName':_0x2943('0xd'),'paranoid':![],'indexes':[{'name':_0x2943('0xe'),'fields':[_0x2943('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 3b94dca..801f952 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4da3=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x1f75c3,_0x2cbbe9){var _0x28ac02=function(_0x151306){while(--_0x151306){_0x1f75c3['push'](_0x1f75c3['shift']());}};_0x28ac02(++_0x2cbbe9);}(_0x4da3,0xfb));var _0x34da=function(_0x118038,_0x180cb2){_0x118038=_0x118038-0x0;var _0x207f01=_0x4da3[_0x118038];return _0x207f01;};'use strict';var _=require(_0x34da('0x0'));var util=require(_0x34da('0x1'));var moment=require(_0x34da('0x2'));var BPromise=require(_0x34da('0x3'));var rs=require(_0x34da('0x4'));var fs=require('fs');var Redis=require(_0x34da('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x34da('0x6'));var logger=require(_0x34da('0x7'))(_0x34da('0x8'));var config=require(_0x34da('0x9'));var jayson=require(_0x34da('0xa'));var client=jayson['client'][_0x34da('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x13425b,_0x57f9d3,_0x45b4d2){return new BPromise(function(_0x4f891c,_0x17d870){return client[_0x34da('0xc')](_0x13425b,_0x45b4d2)[_0x34da('0xd')](function(_0x5e1ec0){logger[_0x34da('0xe')](_0x34da('0xf'),_0x57f9d3,_0x34da('0x10'));logger[_0x34da('0x11')](_0x34da('0x12'),_0x57f9d3,_0x34da('0x10'),JSON[_0x34da('0x13')](_0x5e1ec0));if(_0x5e1ec0[_0x34da('0x14')]){if(_0x5e1ec0[_0x34da('0x14')][_0x34da('0x15')]===0x1f4){logger[_0x34da('0x14')]('WhatsappTransferReport,\x20%s,\x20%s',_0x57f9d3,_0x5e1ec0[_0x34da('0x14')][_0x34da('0x16')]);return _0x17d870(_0x5e1ec0[_0x34da('0x14')][_0x34da('0x16')]);}logger[_0x34da('0x14')]('WhatsappTransferReport,\x20%s,\x20%s',_0x57f9d3,_0x5e1ec0[_0x34da('0x14')][_0x34da('0x16')]);return _0x4f891c(_0x5e1ec0[_0x34da('0x14')][_0x34da('0x16')]);}else{logger[_0x34da('0xe')](_0x34da('0xf'),_0x57f9d3,_0x34da('0x10'));_0x4f891c(_0x5e1ec0[_0x34da('0x17')]['message']);}})[_0x34da('0x18')](function(_0x2ea5a3){logger[_0x34da('0x14')](_0x34da('0xf'),_0x57f9d3,_0x2ea5a3);_0x17d870(_0x2ea5a3);});});}
\ No newline at end of file
+var _0x1839=['stringify','error','code','WhatsappTransferReport,\x20%s,\x20%s','message','info','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s'];(function(_0x399249,_0x8c915e){var _0x5d67a7=function(_0x572915){while(--_0x572915){_0x399249['push'](_0x399249['shift']());}};_0x5d67a7(++_0x8c915e);}(_0x1839,0x125));var _0x9183=function(_0xc08416,_0x1af7cc){_0xc08416=_0xc08416-0x0;var _0x3d6438=_0x1839[_0xc08416];return _0x3d6438;};'use strict';var _=require(_0x9183('0x0'));var util=require(_0x9183('0x1'));var moment=require(_0x9183('0x2'));var BPromise=require(_0x9183('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9183('0x4'));var db=require(_0x9183('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x9183('0x6'))(_0x9183('0x7'));var config=require(_0x9183('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x9183('0x9')][_0x9183('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x106d5f,_0x4f2e1c,_0x27963d){return new BPromise(function(_0xe86bfd,_0x1e6d0e){return client[_0x9183('0xb')](_0x106d5f,_0x27963d)['then'](function(_0x11b204){logger['info']('WhatsappTransferReport,\x20%s,\x20%s',_0x4f2e1c,_0x9183('0xc'));logger[_0x9183('0xd')](_0x9183('0xe'),_0x4f2e1c,_0x9183('0xc'),JSON[_0x9183('0xf')](_0x11b204));if(_0x11b204[_0x9183('0x10')]){if(_0x11b204[_0x9183('0x10')][_0x9183('0x11')]===0x1f4){logger[_0x9183('0x10')](_0x9183('0x12'),_0x4f2e1c,_0x11b204[_0x9183('0x10')]['message']);return _0x1e6d0e(_0x11b204[_0x9183('0x10')][_0x9183('0x13')]);}logger[_0x9183('0x10')]('WhatsappTransferReport,\x20%s,\x20%s',_0x4f2e1c,_0x11b204[_0x9183('0x10')]['message']);return _0xe86bfd(_0x11b204['error'][_0x9183('0x13')]);}else{logger[_0x9183('0x14')]('WhatsappTransferReport,\x20%s,\x20%s',_0x4f2e1c,_0x9183('0xc'));_0xe86bfd(_0x11b204[_0x9183('0x15')][_0x9183('0x13')]);}})['catch'](function(_0xddc0d3){logger[_0x9183('0x10')](_0x9183('0x12'),_0x4f2e1c,_0xddc0d3);_0x1e6d0e(_0xddc0d3);});});}
\ No newline at end of file
index 620030c..e2dbf17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x045a=['info','start','Online\x20apps:','map','name','filter','status','online','join','None','seedDB','default','./config/license','catch','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','lodash','./rpc','./config/environment','app','./config/pm2','./config/pm2/config','./config/schedule/chat','./config/schedule/whatsapp','sync','then','listen'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x045a,0x18a));var _0xa045=function(_0x242601,_0x6b054c){_0x242601=_0x242601-0x0;var _0x1f3e62=_0x045a[_0x242601];return _0x1f3e62;};'use strict';var _=require(_0xa045('0x0'));var mysqldb=require('./mysqldb');var rpc=require(_0xa045('0x1'));var config=require(_0xa045('0x2'));var logger=require('./config/logger')(_0xa045('0x3'));var pm2=require(_0xa045('0x4'));var pm2Config=require(_0xa045('0x5'));var schedule=require('./config/schedule');var chat=require(_0xa045('0x6'));var whatsapp=require(_0xa045('0x7'));var transcribe=require('./config/schedule/transcribe');function main(){return mysqldb['db']['sequelize'][_0xa045('0x8')]()[_0xa045('0x9')](function(){return rpc[_0xa045('0xa')]();})[_0xa045('0x9')](function(_0x41119a){logger[_0xa045('0xb')](_0x41119a);return chat[_0xa045('0xc')]();})[_0xa045('0x9')](function(){return whatsapp[_0xa045('0xc')]();})['then'](function(){return schedule['start']();})[_0xa045('0x9')](function(){return transcribe[_0xa045('0xc')]();})[_0xa045('0x9')](function(_0x1e2d23){logger[_0xa045('0xb')](_0x1e2d23);return pm2['start'](pm2Config);})[_0xa045('0x9')](function(_0xb9b7b9){logger[_0xa045('0xb')](_0xa045('0xd'),_[_0xa045('0xe')](_['filter'](_0xb9b7b9,{'status':'online'}),_0xa045('0xf'))['join']());logger[_0xa045('0xb')]('Offline\x20apps:',_[_0xa045('0xe')](_[_0xa045('0x10')](_0xb9b7b9,function(_0x32f0f1){return _0x32f0f1[_0xa045('0x11')]!==_0xa045('0x12');}),_0xa045('0xf'))[_0xa045('0x13')]()||_0xa045('0x14'));config[_0xa045('0x15')]&&require('./config/seedDB')[_0xa045('0x16')]();require(_0xa045('0x17'))['default']();})[_0xa045('0x18')](function(_0xb8da11){logger[_0xa045('0x19')](_0xa045('0x1a'),_0xb8da11);process['exit'](0x1);});}main();
\ No newline at end of file
+var _0x6d04=['./config/logger','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/whatsapp','sequelize','sync','then','listen','info','start','Online\x20apps:','map','filter','name','join','Offline\x20apps:','status','seedDB','./config/seedDB','default','catch','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','lodash','./rpc','./config/environment'];(function(_0x2a0d08,_0x2871d5){var _0x3c4680=function(_0x31759b){while(--_0x31759b){_0x2a0d08['push'](_0x2a0d08['shift']());}};_0x3c4680(++_0x2871d5);}(_0x6d04,0xc1));var _0x46d0=function(_0x3ad462,_0x363c0d){_0x3ad462=_0x3ad462-0x0;var _0x4c721b=_0x6d04[_0x3ad462];return _0x4c721b;};'use strict';var _=require(_0x46d0('0x0'));var mysqldb=require('./mysqldb');var rpc=require(_0x46d0('0x1'));var config=require(_0x46d0('0x2'));var logger=require(_0x46d0('0x3'))('app');var pm2=require(_0x46d0('0x4'));var pm2Config=require(_0x46d0('0x5'));var schedule=require(_0x46d0('0x6'));var chat=require(_0x46d0('0x7'));var whatsapp=require(_0x46d0('0x8'));var transcribe=require('./config/schedule/transcribe');function main(){return mysqldb['db'][_0x46d0('0x9')][_0x46d0('0xa')]()[_0x46d0('0xb')](function(){return rpc[_0x46d0('0xc')]();})[_0x46d0('0xb')](function(_0x23dc22){logger[_0x46d0('0xd')](_0x23dc22);return chat['start']();})[_0x46d0('0xb')](function(){return whatsapp[_0x46d0('0xe')]();})['then'](function(){return schedule[_0x46d0('0xe')]();})[_0x46d0('0xb')](function(){return transcribe[_0x46d0('0xe')]();})[_0x46d0('0xb')](function(_0x56295a){logger[_0x46d0('0xd')](_0x56295a);return pm2[_0x46d0('0xe')](pm2Config);})[_0x46d0('0xb')](function(_0x6a3f44){logger[_0x46d0('0xd')](_0x46d0('0xf'),_[_0x46d0('0x10')](_[_0x46d0('0x11')](_0x6a3f44,{'status':'online'}),_0x46d0('0x12'))[_0x46d0('0x13')]());logger[_0x46d0('0xd')](_0x46d0('0x14'),_['map'](_[_0x46d0('0x11')](_0x6a3f44,function(_0x24169f){return _0x24169f[_0x46d0('0x15')]!=='online';}),_0x46d0('0x12'))[_0x46d0('0x13')]()||'None');config[_0x46d0('0x16')]&&require(_0x46d0('0x17'))[_0x46d0('0x18')]();require('./config/license')['default']();})[_0x46d0('0x19')](function(_0x111a7f){logger[_0x46d0('0x1a')](_0x46d0('0x1b'),_0x111a7f);process['exit'](0x1);});}main();
\ No newline at end of file
index 1fe8d81..167cc45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d77=['chatPause','mailPause','openchannelPause','pauseType','showWebBar','lastLoginAt','allowmessenger','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort','hotdesk','userProfileId','privacyEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','isChatInteractionAuthorized','isAuthenticated','use','user','ChatInteraction','findOne','then','status','disposition','unmanaged','json','Unmanaged.','catch','authorization','startsWith','Basic','User','find','pass','Wrong\x20credentials.','headers','Bearer','apikey','getUuid','query','Setting','allowedLoginAttempts','blockDuration','isEqual','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','Invalid\x20API\x20access\x20key','blocked','blockedAt','add','minutes','Unknown\x20authorization\x20format','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','update','Forbidden','isMiddleware','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','/dashboards/general','send','retrieveApiKey','generateApiKey','regenerateApiKey','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~!@#$%^&-_=+[{]}.','decryptString','split','toLowerCase','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.','updatePasswordsHistory','splice','unshift','encryptString','join','promisify','sign','secret','payload','options','verify','randomBytes','toString','hex','floor','now','../../mysqldb','../../config/environment','../../config/license/util','../encryptor','basic-auth','crypto','util','moment','secrets','session','role','fullname','internal','email','userpic','permissions','md5secret','voicePause'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5d77,0xee));var _0x75d7=function(_0x469fac,_0x338f3b){_0x469fac=_0x469fac-0x0;var _0x124a34=_0x5d77[_0x469fac];return _0x124a34;};'use strict';var db=require(_0x75d7('0x0'))['db'];var config=require(_0x75d7('0x1'));var hardwareConf=require('../../config/license/hardware');var licenseUtil=require(_0x75d7('0x2'));var encryptor=require(_0x75d7('0x3'));var _=require('lodash');var jwt=require('jsonwebtoken');var expressJwt=require('express-jwt');var compose=require('composable-middleware');var basicAuth=require(_0x75d7('0x4'));var crypto=require(_0x75d7('0x5'));var BPromise=require('bluebird');var util=require(_0x75d7('0x6'));var moment=require(_0x75d7('0x7'));var validateJwt=expressJwt({'secret':config[_0x75d7('0x8')][_0x75d7('0x9')]});var userAttributes=['id',_0x75d7('0xa'),_0x75d7('0xb'),'name',_0x75d7('0xc'),_0x75d7('0xd'),_0x75d7('0xe'),_0x75d7('0xf'),_0x75d7('0x10'),_0x75d7('0x11'),_0x75d7('0x12'),_0x75d7('0x13'),'faxPause','smsPause',_0x75d7('0x14'),_0x75d7('0x15'),_0x75d7('0x16'),_0x75d7('0x17'),'lastPauseAt','crudPermissions',_0x75d7('0x18'),_0x75d7('0x19'),_0x75d7('0x1a'),_0x75d7('0x1b'),_0x75d7('0x1c'),_0x75d7('0x1d'),_0x75d7('0x1e'),_0x75d7('0x1f'),_0x75d7('0x20'),_0x75d7('0x21'),_0x75d7('0x22'),_0x75d7('0x23'),_0x75d7('0x24'),_0x75d7('0x25'),'interface',_0x75d7('0x26'),_0x75d7('0x27'),'settingsEnabled',_0x75d7('0x28'),_0x75d7('0x29'),_0x75d7('0x2a'),_0x75d7('0x2b')];exports[_0x75d7('0x2c')]=function(){return this[_0x75d7('0x2d')](!![])[_0x75d7('0x2e')](function(_0x57e9f6,_0x7152d9,_0x1f65a6){if(_0x57e9f6[_0x75d7('0x2f')]){_0x1f65a6();}else{return db[_0x75d7('0x30')][_0x75d7('0x31')]({'where':{'id':_0x57e9f6['params']['id']},'attributes':['id','closed','disposition'],'raw':!![]})[_0x75d7('0x32')](function(_0x18c57d){if(_0x18c57d&&_0x18c57d['closed']){return _0x7152d9[_0x75d7('0x33')](_0x18c57d[_0x75d7('0x34')]===_0x75d7('0x35')?0x195:0x193)[_0x75d7('0x36')]({'message':_0x18c57d[_0x75d7('0x34')]===_0x75d7('0x35')?_0x75d7('0x37'):'Forbidden.'});}else{_0x1f65a6();}})[_0x75d7('0x38')](function(_0x969384){_0x1f65a6(_0x969384);});}});};exports[_0x75d7('0x2d')]=function isAuthenticated(_0x53eae5){return compose()[_0x75d7('0x2e')](function(_0x4ba387,_0xb0c49a,_0x3de490){var _0x4a4570;if(_0x4ba387['headers'][_0x75d7('0x39')]){if(_[_0x75d7('0x3a')](_0x4ba387['headers'][_0x75d7('0x39')],_0x75d7('0x3b'))){var _0x14f02d=basicAuth(_0x4ba387);db[_0x75d7('0x3c')][_0x75d7('0x3d')]({'where':{'name':_0x14f02d['name']}})[_0x75d7('0x32')](function(_0x5b9428){if(!_0x5b9428||!_0x5b9428['authenticate'](_0x14f02d[_0x75d7('0x3e')])){return _0xb0c49a[_0x75d7('0x33')](0x191)['json']({'message':_0x75d7('0x3f')});}_0x4ba387['user']={'id':_0x5b9428['id']};_0x3de490();})[_0x75d7('0x38')](function(_0x197b54){_0x3de490(_0x197b54);});}else if(_[_0x75d7('0x3a')](_0x4ba387[_0x75d7('0x40')][_0x75d7('0x39')],_0x75d7('0x41'))){validateJwt(_0x4ba387,_0xb0c49a,_0x3de490);}else{if(_0x53eae5){_0x3de490();}else{return _0xb0c49a[_0x75d7('0x33')](0x193)[_0x75d7('0x36')]({'message':'Unknown\x20authorization\x20format'});}}}else if(_0x4ba387['query'][_0x75d7('0x42')]){try{var _0x1dd1d2={'audience':hardwareConf[_0x75d7('0x43')](),'issuer':hardwareConf[_0x75d7('0x43')]()};verifyJwt(_0x4ba387[_0x75d7('0x44')][_0x75d7('0x42')],_0x1dd1d2)[_0x75d7('0x32')](function(_0x4b7990){return db[_0x75d7('0x3c')][_0x75d7('0x3d')]({'where':{'id':_0x4b7990['sub']}})['then'](function(_0x379c54){_0x4a4570=_0x379c54;return db[_0x75d7('0x45')][_0x75d7('0x31')]({'where':{'id':0x1},'attributes':[_0x75d7('0x46'),_0x75d7('0x47')],'raw':!![]});})[_0x75d7('0x32')](function(_0x330c09){if(!_0x4a4570||!_[_0x75d7('0x48')](_0x4a4570[_0x75d7('0x49')],_0x4b7990[_0x75d7('0x4a')])){return _0xb0c49a[_0x75d7('0x33')](0x191)['json']({'message':_0x75d7('0x4b')});}if(_0x4a4570['disabled']){return _0xb0c49a['status'](0x191)[_0x75d7('0x36')]({'message':_0x75d7('0x4c')});}if(_0x4a4570[_0x75d7('0x4d')]){if(_0x330c09['blockDuration']>0x0){if(moment(_0x4a4570[_0x75d7('0x4e')])[_0x75d7('0x4f')](_0x330c09['blockDuration'],_0x75d7('0x50'))>moment()){return _0xb0c49a[_0x75d7('0x33')](0x191)[_0x75d7('0x36')]({'message':_0x75d7('0x4c')});}}else{return _0xb0c49a[_0x75d7('0x33')](0x191)[_0x75d7('0x36')]({'message':_0x75d7('0x4c')});}}_0x4ba387[_0x75d7('0x2f')]={'id':_0x4a4570['id']};_0x3de490();});})[_0x75d7('0x38')](function(){return _0xb0c49a['status'](0x191)[_0x75d7('0x36')]({'message':_0x75d7('0x4c')});});}catch(_0x35c6f6){_0x3de490(_0x35c6f6);}}else if(_0x53eae5){_0x3de490();}else{return _0xb0c49a[_0x75d7('0x33')](0x193)[_0x75d7('0x36')]({'message':_0x75d7('0x51')});}})['use'](function(_0x19e65e,_0x487550,_0x1c76f5){if(_0x19e65e['user']){db[_0x75d7('0x3c')][_0x75d7('0x3d')]({'where':{'id':_0x19e65e['user']['id']},'attributes':userAttributes})['then'](function(_0x5bb3dc){if(!_0x5bb3dc){return _0x487550[_0x75d7('0x33')](0x194)['json']({'message':_0x75d7('0x52')});}_0x19e65e['user']=_0x5bb3dc;_0x1c76f5();})[_0x75d7('0x38')](function(_0x4513f3){_0x1c76f5(_0x4513f3);});}else if(_0x53eae5){_0x1c76f5();}else{return _0x487550[_0x75d7('0x33')](0x194)[_0x75d7('0x36')]({'message':_0x75d7('0x53')});}});};exports[_0x75d7('0x54')]=function canUpdate(){return compose()[_0x75d7('0x2e')](function(_0x28bb43,_0x1e7d65,_0x441667){return licenseUtil[_0x75d7('0x55')]()[_0x75d7('0x32')](function(_0xa3d065){if(_0xa3d065[_0x75d7('0x56')]){_0x441667();}else{return _0x1e7d65['status'](0x193)[_0x75d7('0x36')]({'message':_0x75d7('0x57')});}})[_0x75d7('0x38')](function(_0x4f5eb0){_0x441667(_0x4f5eb0);});});};exports[_0x75d7('0x58')]=function(_0x2fb7d8,_0x1ba07c,_0x2cc84d){_0x2fb7d8['isMiddleware']=!![];return _0x2cc84d();};exports[_0x75d7('0x59')]=function signToken(_0x2ee0c7){return signJwt(_0x2ee0c7);};exports[_0x75d7('0x5a')]=function(_0x9e0d01,_0x1b96b1){if(!_0x9e0d01['user']){return _0x1b96b1[_0x75d7('0x33')](0x194)[_0x75d7('0x36')]({'message':_0x75d7('0x5b')});}var _0x270c86={'payload':{'id':_0x9e0d01[_0x75d7('0x2f')]['id'],'role':_0x9e0d01['user'][_0x75d7('0xa')]},'options':{'expiresIn':0x15180}};return signJwt(_0x270c86)[_0x75d7('0x32')](function(_0x2759d5){_0x1b96b1[_0x75d7('0x5c')](_0x75d7('0x5d'),_0x2759d5);_0x1b96b1[_0x75d7('0x5e')](_0x75d7('0x5f'));})[_0x75d7('0x38')](function(_0x288b9e){return _0x1b96b1['status'](0x1f4)[_0x75d7('0x60')](_0x288b9e);});};exports[_0x75d7('0x61')]=function(_0x4f2c70){if(_['isNil'](_0x4f2c70[_0x75d7('0x49')])||_['isNil'](_0x4f2c70['apiKeyIat'])){return null;}else{return createJwt(_0x4f2c70);}};exports[_0x75d7('0x62')]=function(_0x492d41){_0x492d41[_0x75d7('0x49')]=generateNonce();_0x492d41['apiKeyIat']=generateIssuedAt();return createJwt(_0x492d41);};exports[_0x75d7('0x63')]=function(_0x4b9227,_0x5ed923){var _0x2251ac=_0x4b9227[_0x75d7('0x44')]['apikey'];if(_0x2251ac){var _0x3bb6f6={'nonce':_0x5ed923[_0x75d7('0x49')],'iat':_0x5ed923[_0x75d7('0x64')],'audience':hardwareConf[_0x75d7('0x43')](),'issuer':hardwareConf[_0x75d7('0x43')]()};return verifyJwt(_0x2251ac,_0x3bb6f6)['then'](function(){return generateApiKey(_0x5ed923);});}else{throw{'message':_0x75d7('0x65')};}};exports[_0x75d7('0x66')]=function(_0x97eabb){var _0xdd667b=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0xdd667b[_0x75d7('0x67')](_0x97eabb))throw new db[(_0x75d7('0x68'))][(_0x75d7('0x69'))](_0x75d7('0x6a'));return;};exports['validatePasswordHistory']=function(_0x566a25,_0x56cb90,_0x5e392c){var _0x49275e=encryptor[_0x75d7('0x6b')](_0x56cb90)[_0x75d7('0x6c')](',');for(var _0xed7325=0x0;_0xed7325<_0x5e392c;_0xed7325++){if(!_0x49275e[_0xed7325])break;if(_0x566a25[_0x75d7('0x6d')]()===_0x49275e[_0xed7325][_0x75d7('0x6d')]()){var _0x46183e=util['format'](_0x75d7('0x6e'),_0x5e392c);if(_0x5e392c===0x1){_0x46183e=_0x75d7('0x6f');}throw new db[(_0x75d7('0x68'))][(_0x75d7('0x69'))](_0x46183e);}}return;};exports[_0x75d7('0x70')]=function(_0x35bcb4,_0x1ba6c4){var _0x4895ba=_0x1ba6c4?encryptor[_0x75d7('0x6b')](_0x1ba6c4)[_0x75d7('0x6c')](','):[];if(_0x4895ba['length']===0x5){_0x4895ba[_0x75d7('0x71')](-0x1,0x1);}_0x4895ba[_0x75d7('0x72')](_0x35bcb4);return encryptor[_0x75d7('0x73')](_0x4895ba[_0x75d7('0x74')](','));};function signJwt(_0x32c6db){var _0x347b68=BPromise[_0x75d7('0x75')](jwt[_0x75d7('0x76')],{'context':jwt});var _0x2f2a8c=_0x32c6db[_0x75d7('0x77')]||config[_0x75d7('0x8')][_0x75d7('0x9')];return new BPromise(function(_0x53b489,_0x27f7d6){_0x347b68(_0x32c6db[_0x75d7('0x78')],_0x2f2a8c,_0x32c6db[_0x75d7('0x79')])['then'](function(_0x1d7561){_0x53b489(_0x1d7561);})[_0x75d7('0x38')](function(_0x53ad1e){_0x27f7d6(_0x53ad1e);});});}function verifyJwt(_0x197691,_0x2622e4,_0x36c21d){var _0x4aa014=BPromise['promisify'](jwt[_0x75d7('0x7a')],{'context':jwt});var _0x3fe4d8=_0x36c21d||config[_0x75d7('0x8')]['session'];return new BPromise(function(_0x252943,_0x27d3fb){_0x4aa014(_0x197691,_0x3fe4d8,_0x2622e4)[_0x75d7('0x32')](function(_0x4070b1){_0x252943(_0x4070b1);})[_0x75d7('0x38')](function(_0x4056e4){_0x27d3fb(_0x4056e4);});});}function generateNonce(){return crypto[_0x75d7('0x7b')](0x10)[_0x75d7('0x7c')](_0x75d7('0x7d'));}function generateIssuedAt(){return Math[_0x75d7('0x7e')](Date[_0x75d7('0x7f')]()/0x3e8)['toString']();}function createJwt(_0x13ed2a){var _0x510562={'payload':{'iat':_0x13ed2a[_0x75d7('0x64')],'nonce':_0x13ed2a[_0x75d7('0x49')]},'options':{'algorithm':'HS512','subject':_0x13ed2a['id'][_0x75d7('0x7c')](),'issuer':hardwareConf[_0x75d7('0x43')](),'audience':hardwareConf['getUuid']()}};return signJwt(_0x510562)[_0x75d7('0x32')](function(_0x569772){return{'iat':_0x13ed2a['apiKeyIat'],'nonce':_0x13ed2a[_0x75d7('0x49')],'token':_0x569772};});}
\ No newline at end of file
+var _0x4dd3=['decryptString','length','splice','unshift','encryptString','join','promisify','sign','secret','secrets','payload','options','verify','randomBytes','toString','floor','now','HS512','../../mysqldb','../../config/environment','../../config/license/util','composable-middleware','basic-auth','crypto','bluebird','moment','session','role','fullname','name','internal','email','userpic','permissions','md5secret','voicePause','chatPause','smsPause','pauseType','lastPauseAt','passwordResetAt','alias','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableSettings','phoneBarExpires','phoneBarRemoteControl','phoneBarRemoteControlPort','interface','userProfileId','privacyEnabled','settingsEnabled','wssPort','downloadAttachments','isChatInteractionAuthorized','isAuthenticated','use','user','findOne','disposition','then','closed','unmanaged','json','Unmanaged.','headers','authorization','startsWith','Basic','User','authenticate','pass','status','Wrong\x20credentials.','Bearer','getUuid','query','apikey','sub','Setting','allowedLoginAttempts','blockDuration','isEqual','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blockedAt','minutes','find','User\x20not\x20found.','catch','User\x20object\x20not\x20found.','canUpdate','update','isMiddleware','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','/dashboards/general','send','isNil','generateApiKey','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','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.','updatePasswordsHistory'];(function(_0x35156b,_0x4f47e1){var _0x5e9bee=function(_0x1725aa){while(--_0x1725aa){_0x35156b['push'](_0x35156b['shift']());}};_0x5e9bee(++_0x4f47e1);}(_0x4dd3,0xfe));var _0x34dd=function(_0x2e50a2,_0x27f31e){_0x2e50a2=_0x2e50a2-0x0;var _0x47e5de=_0x4dd3[_0x2e50a2];return _0x47e5de;};'use strict';var db=require(_0x34dd('0x0'))['db'];var config=require(_0x34dd('0x1'));var hardwareConf=require('../../config/license/hardware');var licenseUtil=require(_0x34dd('0x2'));var encryptor=require('../encryptor');var _=require('lodash');var jwt=require('jsonwebtoken');var expressJwt=require('express-jwt');var compose=require(_0x34dd('0x3'));var basicAuth=require(_0x34dd('0x4'));var crypto=require(_0x34dd('0x5'));var BPromise=require(_0x34dd('0x6'));var util=require('util');var moment=require(_0x34dd('0x7'));var validateJwt=expressJwt({'secret':config['secrets'][_0x34dd('0x8')]});var userAttributes=['id',_0x34dd('0x9'),_0x34dd('0xa'),_0x34dd('0xb'),_0x34dd('0xc'),_0x34dd('0xd'),_0x34dd('0xe'),_0x34dd('0xf'),_0x34dd('0x10'),_0x34dd('0x11'),_0x34dd('0x12'),'mailPause','faxPause',_0x34dd('0x13'),'openchannelPause',_0x34dd('0x14'),'showWebBar','lastLoginAt',_0x34dd('0x15'),'crudPermissions','allowmessenger',_0x34dd('0x16'),_0x34dd('0x17'),'phoneBarAutoAnswer','phoneBarAutoAnswerDelay',_0x34dd('0x18'),_0x34dd('0x19'),'phoneBarEnableDtmfTone',_0x34dd('0x1a'),_0x34dd('0x1b'),'phoneBarPrefixRequired',_0x34dd('0x1c'),_0x34dd('0x1d'),'hotdesk',_0x34dd('0x1e'),_0x34dd('0x1f'),_0x34dd('0x20'),_0x34dd('0x21'),_0x34dd('0x22'),'downloadVoiceRecordings','downloadOmnichannelInteractions',_0x34dd('0x23')];exports[_0x34dd('0x24')]=function(){return this[_0x34dd('0x25')](!![])[_0x34dd('0x26')](function(_0x36ad00,_0x2afbd5,_0x1762fa){if(_0x36ad00[_0x34dd('0x27')]){_0x1762fa();}else{return db['ChatInteraction'][_0x34dd('0x28')]({'where':{'id':_0x36ad00['params']['id']},'attributes':['id','closed',_0x34dd('0x29')],'raw':!![]})[_0x34dd('0x2a')](function(_0x266a80){if(_0x266a80&&_0x266a80[_0x34dd('0x2b')]){return _0x2afbd5['status'](_0x266a80['disposition']===_0x34dd('0x2c')?0x195:0x193)[_0x34dd('0x2d')]({'message':_0x266a80[_0x34dd('0x29')]===_0x34dd('0x2c')?_0x34dd('0x2e'):'Forbidden.'});}else{_0x1762fa();}})['catch'](function(_0x27c01d){_0x1762fa(_0x27c01d);});}});};exports[_0x34dd('0x25')]=function isAuthenticated(_0x4e0900){return compose()[_0x34dd('0x26')](function(_0x40225c,_0x2e2db3,_0x3b316e){var _0x316650;if(_0x40225c[_0x34dd('0x2f')][_0x34dd('0x30')]){if(_[_0x34dd('0x31')](_0x40225c['headers'][_0x34dd('0x30')],_0x34dd('0x32'))){var _0x596113=basicAuth(_0x40225c);db[_0x34dd('0x33')]['find']({'where':{'name':_0x596113[_0x34dd('0xb')]}})['then'](function(_0x378cea){if(!_0x378cea||!_0x378cea[_0x34dd('0x34')](_0x596113[_0x34dd('0x35')])){return _0x2e2db3[_0x34dd('0x36')](0x191)['json']({'message':_0x34dd('0x37')});}_0x40225c[_0x34dd('0x27')]={'id':_0x378cea['id']};_0x3b316e();})['catch'](function(_0x4f37b7){_0x3b316e(_0x4f37b7);});}else if(_[_0x34dd('0x31')](_0x40225c[_0x34dd('0x2f')][_0x34dd('0x30')],_0x34dd('0x38'))){validateJwt(_0x40225c,_0x2e2db3,_0x3b316e);}else{if(_0x4e0900){_0x3b316e();}else{return _0x2e2db3['status'](0x193)[_0x34dd('0x2d')]({'message':'Unknown\x20authorization\x20format'});}}}else if(_0x40225c['query']['apikey']){try{var _0x413dbb={'audience':hardwareConf[_0x34dd('0x39')](),'issuer':hardwareConf[_0x34dd('0x39')]()};verifyJwt(_0x40225c[_0x34dd('0x3a')][_0x34dd('0x3b')],_0x413dbb)[_0x34dd('0x2a')](function(_0x5f391e){return db[_0x34dd('0x33')]['find']({'where':{'id':_0x5f391e[_0x34dd('0x3c')]}})[_0x34dd('0x2a')](function(_0x2d1b34){_0x316650=_0x2d1b34;return db[_0x34dd('0x3d')]['findOne']({'where':{'id':0x1},'attributes':[_0x34dd('0x3e'),_0x34dd('0x3f')],'raw':!![]});})[_0x34dd('0x2a')](function(_0x2420d2){if(!_0x316650||!_[_0x34dd('0x40')](_0x316650[_0x34dd('0x41')],_0x5f391e[_0x34dd('0x42')])){return _0x2e2db3[_0x34dd('0x36')](0x191)[_0x34dd('0x2d')]({'message':_0x34dd('0x43')});}if(_0x316650[_0x34dd('0x44')]){return _0x2e2db3[_0x34dd('0x36')](0x191)[_0x34dd('0x2d')]({'message':_0x34dd('0x45')});}if(_0x316650['blocked']){if(_0x2420d2[_0x34dd('0x3f')]>0x0){if(moment(_0x316650[_0x34dd('0x46')])['add'](_0x2420d2[_0x34dd('0x3f')],_0x34dd('0x47'))>moment()){return _0x2e2db3['status'](0x191)[_0x34dd('0x2d')]({'message':'Invalid\x20API\x20access\x20key'});}}else{return _0x2e2db3[_0x34dd('0x36')](0x191)['json']({'message':_0x34dd('0x45')});}}_0x40225c[_0x34dd('0x27')]={'id':_0x316650['id']};_0x3b316e();});})['catch'](function(){return _0x2e2db3[_0x34dd('0x36')](0x191)[_0x34dd('0x2d')]({'message':_0x34dd('0x45')});});}catch(_0x1cd3e8){_0x3b316e(_0x1cd3e8);}}else if(_0x4e0900){_0x3b316e();}else{return _0x2e2db3[_0x34dd('0x36')](0x193)[_0x34dd('0x2d')]({'message':'Unknown\x20authorization\x20format'});}})['use'](function(_0x4e7e40,_0x3df721,_0x59f63f){if(_0x4e7e40[_0x34dd('0x27')]){db[_0x34dd('0x33')][_0x34dd('0x48')]({'where':{'id':_0x4e7e40[_0x34dd('0x27')]['id']},'attributes':userAttributes})[_0x34dd('0x2a')](function(_0x363501){if(!_0x363501){return _0x3df721['status'](0x194)['json']({'message':_0x34dd('0x49')});}_0x4e7e40[_0x34dd('0x27')]=_0x363501;_0x59f63f();})[_0x34dd('0x4a')](function(_0x396829){_0x59f63f(_0x396829);});}else if(_0x4e0900){_0x59f63f();}else{return _0x3df721[_0x34dd('0x36')](0x194)['json']({'message':_0x34dd('0x4b')});}});};exports[_0x34dd('0x4c')]=function canUpdate(){return compose()[_0x34dd('0x26')](function(_0x3292d8,_0x405ca0,_0x989515){return licenseUtil['getLicense']()[_0x34dd('0x2a')](function(_0x4308db){if(_0x4308db[_0x34dd('0x4d')]){_0x989515();}else{return _0x405ca0[_0x34dd('0x36')](0x193)[_0x34dd('0x2d')]({'message':'Forbidden'});}})[_0x34dd('0x4a')](function(_0x50c1d0){_0x989515(_0x50c1d0);});});};exports[_0x34dd('0x4e')]=function(_0x2c2199,_0x5a9ee8,_0x368feb){_0x2c2199[_0x34dd('0x4e')]=!![];return _0x368feb();};exports['signToken']=function signToken(_0x3412e2){return signJwt(_0x3412e2);};exports['setTokenCookie']=function(_0x552f1a,_0x18485a){if(!_0x552f1a['user']){return _0x18485a['status'](0x194)['json']({'message':_0x34dd('0x4f')});}var _0x55be4d={'payload':{'id':_0x552f1a[_0x34dd('0x27')]['id'],'role':_0x552f1a[_0x34dd('0x27')][_0x34dd('0x9')]},'options':{'expiresIn':0x15180}};return signJwt(_0x55be4d)[_0x34dd('0x2a')](function(_0x38756d){_0x18485a[_0x34dd('0x50')](_0x34dd('0x51'),_0x38756d);_0x18485a[_0x34dd('0x52')](_0x34dd('0x53'));})['catch'](function(_0x2a69af){return _0x18485a['status'](0x1f4)[_0x34dd('0x54')](_0x2a69af);});};exports['retrieveApiKey']=function(_0x173954){if(_[_0x34dd('0x55')](_0x173954[_0x34dd('0x41')])||_[_0x34dd('0x55')](_0x173954['apiKeyIat'])){return null;}else{return createJwt(_0x173954);}};exports[_0x34dd('0x56')]=function(_0x235e29){_0x235e29[_0x34dd('0x41')]=generateNonce();_0x235e29[_0x34dd('0x57')]=generateIssuedAt();return createJwt(_0x235e29);};exports['regenerateApiKey']=function(_0x221e9b,_0x2d8588){var _0x40d042=_0x221e9b[_0x34dd('0x3a')][_0x34dd('0x3b')];if(_0x40d042){var _0xa98dd5={'nonce':_0x2d8588[_0x34dd('0x41')],'iat':_0x2d8588[_0x34dd('0x57')],'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0x34dd('0x39')]()};return verifyJwt(_0x40d042,_0xa98dd5)['then'](function(){return generateApiKey(_0x2d8588);});}else{throw{'message':_0x34dd('0x58')};}};exports[_0x34dd('0x59')]=function(_0x3c799c){var _0x4a626c=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x4a626c[_0x34dd('0x5a')](_0x3c799c))throw new db[(_0x34dd('0x5b'))][(_0x34dd('0x5c'))](_0x34dd('0x5d'));return;};exports[_0x34dd('0x5e')]=function(_0x2ee3be,_0x2c5558,_0x788e43){var _0x392de7=encryptor['decryptString'](_0x2c5558)['split'](',');for(var _0x25e712=0x0;_0x25e712<_0x788e43;_0x25e712++){if(!_0x392de7[_0x25e712])break;if(_0x2ee3be[_0x34dd('0x5f')]()===_0x392de7[_0x25e712][_0x34dd('0x5f')]()){var _0x3b6915=util[_0x34dd('0x60')](_0x34dd('0x61'),_0x788e43);if(_0x788e43===0x1){_0x3b6915=_0x34dd('0x62');}throw new db['Sequelize'][(_0x34dd('0x5c'))](_0x3b6915);}}return;};exports[_0x34dd('0x63')]=function(_0x132750,_0x573bb0){var _0x28a3cd=_0x573bb0?encryptor[_0x34dd('0x64')](_0x573bb0)['split'](','):[];if(_0x28a3cd[_0x34dd('0x65')]===0x5){_0x28a3cd[_0x34dd('0x66')](-0x1,0x1);}_0x28a3cd[_0x34dd('0x67')](_0x132750);return encryptor[_0x34dd('0x68')](_0x28a3cd[_0x34dd('0x69')](','));};function signJwt(_0xa341c5){var _0x318b43=BPromise[_0x34dd('0x6a')](jwt[_0x34dd('0x6b')],{'context':jwt});var _0x3527f4=_0xa341c5[_0x34dd('0x6c')]||config[_0x34dd('0x6d')][_0x34dd('0x8')];return new BPromise(function(_0x452861,_0x234758){_0x318b43(_0xa341c5[_0x34dd('0x6e')],_0x3527f4,_0xa341c5[_0x34dd('0x6f')])['then'](function(_0x53a73d){_0x452861(_0x53a73d);})[_0x34dd('0x4a')](function(_0x6f4b6d){_0x234758(_0x6f4b6d);});});}function verifyJwt(_0x47b864,_0x1e5ae0,_0x3f4a1b){var _0x10ae52=BPromise[_0x34dd('0x6a')](jwt[_0x34dd('0x70')],{'context':jwt});var _0x479a6f=_0x3f4a1b||config[_0x34dd('0x6d')][_0x34dd('0x8')];return new BPromise(function(_0xd8d90,_0x236c4f){_0x10ae52(_0x47b864,_0x479a6f,_0x1e5ae0)['then'](function(_0x390b60){_0xd8d90(_0x390b60);})['catch'](function(_0x801a34){_0x236c4f(_0x801a34);});});}function generateNonce(){return crypto[_0x34dd('0x71')](0x10)[_0x34dd('0x72')]('hex');}function generateIssuedAt(){return Math[_0x34dd('0x73')](Date[_0x34dd('0x74')]()/0x3e8)[_0x34dd('0x72')]();}function createJwt(_0x1f0abd){var _0x5870e9={'payload':{'iat':_0x1f0abd[_0x34dd('0x57')],'nonce':_0x1f0abd[_0x34dd('0x41')]},'options':{'algorithm':_0x34dd('0x75'),'subject':_0x1f0abd['id']['toString'](),'issuer':hardwareConf['getUuid'](),'audience':hardwareConf['getUuid']()}};return signJwt(_0x5870e9)[_0x34dd('0x2a')](function(_0x16c071){return{'iat':_0x1f0abd[_0x34dd('0x57')],'nonce':_0x1f0abd['apiKeyNonce'],'token':_0x16c071};});}
\ No newline at end of file
index ade4190..dda7203 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d90=['createDecipher','encryptString','secret','utf8','base64','crypto','bluebird','lodash','../../config/environment','app','secrets','aes192','encrypt','algorithm','join','test','filter','indexOf','hasOwnProperty','encryptFile','createWriteStream','createCipher','data','update','binary','write','end','final','close','decryptFile','createReadStream'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0x5d90,0xbf));var _0x05d9=function(_0x3e4a61,_0x59a7c0){_0x3e4a61=_0x3e4a61-0x0;var _0x2361b5=_0x5d90[_0x3e4a61];return _0x2361b5;};'use strict';var crypto=require(_0x05d9('0x0'));var fs=require('fs');var BPromise=require(_0x05d9('0x1'));var _=require(_0x05d9('0x2'));var config=require(_0x05d9('0x3'));var logger=require('../../config/logger')(_0x05d9('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x05d9('0x5')]['session'],'algorithm':'aes-256-ctr'};const fileOptions={'algorithm':_0x05d9('0x6')};if(config['encrypt']&&config[_0x05d9('0x7')][_0x05d9('0x8')]){var isSupported=isAlgorithmSupported(config[_0x05d9('0x7')][_0x05d9('0x8')]);if(isSupported){fileOptions[_0x05d9('0x8')]=config[_0x05d9('0x7')][_0x05d9('0x8')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x05d9('0x9')](',\x20');logger['error'](config['encrypt'][_0x05d9('0x8')],'is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:',supportedAlgorithms);}}function isASupportedCipher(_0x430d32){return AES_SUPPORTED_RX[_0x05d9('0xa')](_0x430d32);}function getSupportedCiphers(){return crypto['getCiphers']()[_0x05d9('0xb')](isASupportedCipher);}function isAlgorithmSupported(_0x4480e7){return getSupportedCiphers()[_0x05d9('0xc')](_0x4480e7)>-0x1;}function combineOptions(_0x270e62){var _0x13cf96={};for(var _0x103e16 in fileOptions){if(fileOptions[_0x05d9('0xd')](_0x103e16)){_0x13cf96[_0x103e16]=fileOptions[_0x103e16];}}if(_0x270e62){for(var _0xe989b in _0x270e62){if(_0x270e62[_0x05d9('0xd')](_0xe989b)){_0x13cf96[_0xe989b]=_0x270e62[_0xe989b];}}}return _0x13cf96;}exports[_0x05d9('0xe')]=function(_0x23b6ed,_0x2ae99e,_0x168d1d,_0x229a04){return new BPromise(function(_0x1d2259,_0x216e78){_0x229a04=combineOptions(_0x229a04);var _0x1c97d3=new Buffer(_0x168d1d);var _0x2b2de1=fs['createReadStream'](_0x23b6ed);var _0x5d48ae=fs[_0x05d9('0xf')](_0x2ae99e);var _0x59efeb=crypto[_0x05d9('0x10')](_0x229a04[_0x05d9('0x8')],_0x1c97d3);_0x2b2de1['on'](_0x05d9('0x11'),function(_0x372241){var _0x42d41e=new Buffer(_0x59efeb[_0x05d9('0x12')](_0x372241),_0x05d9('0x13'));_0x5d48ae[_0x05d9('0x14')](_0x42d41e);});_0x2b2de1['on'](_0x05d9('0x15'),function(){try{var _0x307f37=new Buffer(_0x59efeb[_0x05d9('0x16')]('binary'),_0x05d9('0x13'));_0x5d48ae['write'](_0x307f37);_0x5d48ae[_0x05d9('0x15')]();_0x5d48ae['on'](_0x05d9('0x17'),function(){return _0x1d2259(_0x2ae99e);});}catch(_0x1798e0){fs['unlink'](_0x2ae99e);return _0x216e78(_0x1798e0);}});});};exports[_0x05d9('0x18')]=function(_0x477cd3,_0x2201b7,_0x3bdad3,_0x4951cc){return new BPromise(function(_0x39074c,_0x553b37){_0x4951cc=combineOptions(_0x4951cc);var _0x1ea418=new Buffer(_0x3bdad3);var _0x45bfe9=fs[_0x05d9('0x19')](_0x477cd3);var _0x25f9f5=fs[_0x05d9('0xf')](_0x2201b7);var _0x2637b1=crypto[_0x05d9('0x1a')](_0x4951cc[_0x05d9('0x8')],_0x1ea418);_0x45bfe9['on'](_0x05d9('0x11'),function(_0x389bd3){var _0x107070=new Buffer(_0x2637b1[_0x05d9('0x12')](_0x389bd3),_0x05d9('0x13'));_0x25f9f5[_0x05d9('0x14')](_0x107070);});_0x45bfe9['on'](_0x05d9('0x15'),function(){try{var _0x39ef00=new Buffer(_0x2637b1[_0x05d9('0x16')](_0x05d9('0x13')),'binary');_0x25f9f5[_0x05d9('0x14')](_0x39ef00);_0x25f9f5[_0x05d9('0x15')]();_0x25f9f5['on'](_0x05d9('0x17'),function(){return _0x39074c(_0x2201b7);});}catch(_0x5c3972){fs['unlink'](_0x2201b7);return _0x553b37(_0x5c3972);}});});};exports[_0x05d9('0x1b')]=function(_0x8fe872,_0x25d4fe,_0x1bd9c0){var _0x1a11fb=_0x1bd9c0||stringOptions[_0x05d9('0x8')];var _0x5c7b08=_0x25d4fe||stringOptions[_0x05d9('0x1c')];var _0x34b53b=crypto['createCipher'](_0x1a11fb,_0x5c7b08);var _0x4c65d7=_0x34b53b[_0x05d9('0x12')](_0x8fe872,_0x05d9('0x1d'),_0x05d9('0x1e'));_0x4c65d7+=_0x34b53b['final'](_0x05d9('0x1e'));return _0x4c65d7;};exports['decryptString']=function(_0x356832,_0x422ffc,_0x48746f){var _0x148019=_0x48746f||stringOptions['algorithm'];var _0x25e98a=_0x422ffc||stringOptions['secret'];var _0x32969c=crypto['createDecipher'](_0x148019,_0x25e98a);var _0x1e7edb=_0x32969c[_0x05d9('0x12')](_0x356832,_0x05d9('0x1e'),_0x05d9('0x1d'));_0x1e7edb+=_0x32969c[_0x05d9('0x16')]('utf8');return _0x1e7edb;};
\ No newline at end of file
+var _0xc22b=['data','encryptString','secret','createCipher','utf8','base64','decryptString','bluebird','lodash','../../config/environment','../../config/logger','app','secrets','session','aes192','encrypt','algorithm','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','indexOf','hasOwnProperty','encryptFile','createReadStream','createWriteStream','update','binary','end','final','write','close','unlink','decryptFile','createDecipher'];(function(_0x24213e,_0x53784f){var _0x5f8009=function(_0x4069a0){while(--_0x4069a0){_0x24213e['push'](_0x24213e['shift']());}};_0x5f8009(++_0x53784f);}(_0xc22b,0x193));var _0xbc22=function(_0x5aec6f,_0x597ce5){_0x5aec6f=_0x5aec6f-0x0;var _0x55fa01=_0xc22b[_0x5aec6f];return _0x55fa01;};'use strict';var crypto=require('crypto');var fs=require('fs');var BPromise=require(_0xbc22('0x0'));var _=require(_0xbc22('0x1'));var config=require(_0xbc22('0x2'));var logger=require(_0xbc22('0x3'))(_0xbc22('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0xbc22('0x5')][_0xbc22('0x6')],'algorithm':'aes-256-ctr'};const fileOptions={'algorithm':_0xbc22('0x7')};if(config['encrypt']&&config[_0xbc22('0x8')]['algorithm']){var isSupported=isAlgorithmSupported(config[_0xbc22('0x8')][_0xbc22('0x9')]);if(isSupported){fileOptions['algorithm']=config[_0xbc22('0x8')][_0xbc22('0x9')];}else{var supportedAlgorithms=getSupportedCiphers()['join'](',\x20');logger[_0xbc22('0xa')](config[_0xbc22('0x8')]['algorithm'],_0xbc22('0xb'),supportedAlgorithms);}}function isASupportedCipher(_0x515ebc){return AES_SUPPORTED_RX[_0xbc22('0xc')](_0x515ebc);}function getSupportedCiphers(){return crypto[_0xbc22('0xd')]()[_0xbc22('0xe')](isASupportedCipher);}function isAlgorithmSupported(_0x33fb0c){return getSupportedCiphers()[_0xbc22('0xf')](_0x33fb0c)>-0x1;}function combineOptions(_0x3e9486){var _0x1d6e17={};for(var _0x52d374 in fileOptions){if(fileOptions[_0xbc22('0x10')](_0x52d374)){_0x1d6e17[_0x52d374]=fileOptions[_0x52d374];}}if(_0x3e9486){for(var _0x5abb40 in _0x3e9486){if(_0x3e9486['hasOwnProperty'](_0x5abb40)){_0x1d6e17[_0x5abb40]=_0x3e9486[_0x5abb40];}}}return _0x1d6e17;}exports[_0xbc22('0x11')]=function(_0x38502c,_0x535835,_0x1f28fb,_0x45aa42){return new BPromise(function(_0x83abda,_0x3e9d6f){_0x45aa42=combineOptions(_0x45aa42);var _0x2f5af9=new Buffer(_0x1f28fb);var _0x1232e8=fs[_0xbc22('0x12')](_0x38502c);var _0x3d852c=fs[_0xbc22('0x13')](_0x535835);var _0x212f84=crypto['createCipher'](_0x45aa42['algorithm'],_0x2f5af9);_0x1232e8['on']('data',function(_0x54c405){var _0x5153f5=new Buffer(_0x212f84[_0xbc22('0x14')](_0x54c405),_0xbc22('0x15'));_0x3d852c['write'](_0x5153f5);});_0x1232e8['on'](_0xbc22('0x16'),function(){try{var _0x4eca85=new Buffer(_0x212f84[_0xbc22('0x17')](_0xbc22('0x15')),'binary');_0x3d852c[_0xbc22('0x18')](_0x4eca85);_0x3d852c[_0xbc22('0x16')]();_0x3d852c['on'](_0xbc22('0x19'),function(){return _0x83abda(_0x535835);});}catch(_0x3c749f){fs[_0xbc22('0x1a')](_0x535835);return _0x3e9d6f(_0x3c749f);}});});};exports[_0xbc22('0x1b')]=function(_0x1615a5,_0x356eb4,_0x26b12f,_0x50cc0c){return new BPromise(function(_0x53384f,_0x28abfb){_0x50cc0c=combineOptions(_0x50cc0c);var _0x5b4ad3=new Buffer(_0x26b12f);var _0x5277d2=fs[_0xbc22('0x12')](_0x1615a5);var _0x1dfbc9=fs[_0xbc22('0x13')](_0x356eb4);var _0x4b0fb2=crypto[_0xbc22('0x1c')](_0x50cc0c[_0xbc22('0x9')],_0x5b4ad3);_0x5277d2['on'](_0xbc22('0x1d'),function(_0x418b30){var _0x594028=new Buffer(_0x4b0fb2[_0xbc22('0x14')](_0x418b30),_0xbc22('0x15'));_0x1dfbc9['write'](_0x594028);});_0x5277d2['on']('end',function(){try{var _0x4eebee=new Buffer(_0x4b0fb2[_0xbc22('0x17')](_0xbc22('0x15')),'binary');_0x1dfbc9[_0xbc22('0x18')](_0x4eebee);_0x1dfbc9[_0xbc22('0x16')]();_0x1dfbc9['on'](_0xbc22('0x19'),function(){return _0x53384f(_0x356eb4);});}catch(_0x4aa84b){fs[_0xbc22('0x1a')](_0x356eb4);return _0x28abfb(_0x4aa84b);}});});};exports[_0xbc22('0x1e')]=function(_0x4ae6e2,_0xaec86,_0x933742){var _0x329c68=_0x933742||stringOptions[_0xbc22('0x9')];var _0x16ef02=_0xaec86||stringOptions[_0xbc22('0x1f')];var _0x52e4ed=crypto[_0xbc22('0x20')](_0x329c68,_0x16ef02);var _0x120051=_0x52e4ed[_0xbc22('0x14')](_0x4ae6e2,_0xbc22('0x21'),_0xbc22('0x22'));_0x120051+=_0x52e4ed['final'](_0xbc22('0x22'));return _0x120051;};exports[_0xbc22('0x23')]=function(_0x1b1ee5,_0x120b24,_0x18287a){var _0x3762d2=_0x18287a||stringOptions[_0xbc22('0x9')];var _0x30f4c2=_0x120b24||stringOptions[_0xbc22('0x1f')];var _0x31d74e=crypto[_0xbc22('0x1c')](_0x3762d2,_0x30f4c2);var _0x520338=_0x31d74e[_0xbc22('0x14')](_0x1b1ee5,_0xbc22('0x22'),_0xbc22('0x21'));_0x520338+=_0x31d74e[_0xbc22('0x17')](_0xbc22('0x21'));return _0x520338;};
\ No newline at end of file
index 33ab926..2aebae3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2da=['existsSync','join','mkdirSync','each','push','%s%d.%s','csv','%s.%s','writeFileSync','zip','CSV','Completed','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','util','lodash','bluebird','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','find','split','splitSizeCsv','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','length','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','.csv'];(function(_0x163b92,_0x31d23a){var _0x5e4b1a=function(_0x184f17){while(--_0x184f17){_0x163b92['push'](_0x163b92['shift']());}};_0x5e4b1a(++_0x31d23a);}(_0xc2da,0x124));var _0xac2d=function(_0x388eea,_0x340518){_0x388eea=_0x388eea-0x0;var _0x4a175b=_0xc2da[_0x388eea];return _0x4a175b;};'use strict';var util=require(_0xac2d('0x0'));var path=require('path');var _=require(_0xac2d('0x1'));var csv=require('to-csv');var fs=require('fs');var BPromise=require(_0xac2d('0x2'));var zipdir=require('zip-dir');var rimraf=require(_0xac2d('0x3'));var db=require(_0xac2d('0x4'))['db'];var dbH=require(_0xac2d('0x4'))[_0xac2d('0x5')];var logger=require(_0xac2d('0x6'))(_0xac2d('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0xac2d('0x8')][0x2]);var QUERY=process[_0xac2d('0x8')][0x3];var PATH=process[_0xac2d('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x3ef58a,_0x41d5ae){var _0x515055={'status':_0x3ef58a};var _0x5cbc87={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x41d5ae){_0x515055[_0xac2d('0x9')]=_0x41d5ae;}return db['AnalyticExtractedReport'][_0xac2d('0xa')](_0x515055,_0x5cbc87);}function main(){var _0x254c5c=0x1388;var _0x42aad8;logger[_0xac2d('0xb')](util[_0xac2d('0xc')](_0xac2d('0xd'),EXTRACTED_REPORT_ID,'CSV'));return db['Setting'][_0xac2d('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xac2d('0xf'),_0xac2d('0x10')]})[_0xac2d('0x11')](function(_0x4b9e88){if(_0x4b9e88){_0x42aad8=_0x4b9e88;_0x254c5c=_0x42aad8[_0xac2d('0x10')]||0x1388;}})[_0xac2d('0x11')](function(){return dbH[_0xac2d('0x12')][_0xac2d('0x13')](util[_0xac2d('0xc')](_0xac2d('0x14'),QUERY),{'type':dbH[_0xac2d('0x12')][_0xac2d('0x15')][_0xac2d('0x16')]});})[_0xac2d('0x11')](function(_0x11a3aa){if(!_0x11a3aa[0x0][_0xac2d('0x17')]){return analyticExtractedReport(_0xac2d('0x18'));}var _0x2d92b5=[];var _0x324978=0x0;var _0x49c0a9=!![];if(_0x11a3aa&&_0x11a3aa[_0xac2d('0x19')]){var _0x3118ec=_0x11a3aa[0x0]['num']%(_0x324978+_0x254c5c);if(_0x42aad8[_0xac2d('0xf')]){for(;_0x49c0a9;_0x324978+=_0x254c5c,_0x3118ec=_0x11a3aa[0x0][_0xac2d('0x17')]%(_0x324978+_0x254c5c)){if(_0x3118ec==0x0||_0x3118ec==_0x11a3aa[0x0][_0xac2d('0x17')]){_0x49c0a9=![];}_0x2d92b5['push'](dbH[_0xac2d('0x12')]['query'](util[_0xac2d('0xc')](_0xac2d('0x1a'),QUERY,_0x254c5c,_0x324978),{'type':dbH['sequelize'][_0xac2d('0x15')]['SELECT']}));}}else{_0x2d92b5['push'](dbH['sequelize']['query'](QUERY,{'type':dbH[_0xac2d('0x12')][_0xac2d('0x15')][_0xac2d('0x16')]}));}}var _0x19a955=path[_0xac2d('0x1b')](PATH);var _0x391911=path[_0xac2d('0x1c')](PATH,_0xac2d('0x1d'));var _0x1e16b8=_0x42aad8[_0xac2d('0xf')]&&_0x2d92b5[_0xac2d('0x19')]>0x1;var _0x226b6b=[];if(!fs[_0xac2d('0x1e')](path[_0xac2d('0x1f')](_0x19a955,_0x391911))&&_0x1e16b8){fs[_0xac2d('0x20')](path[_0xac2d('0x1f')](_0x19a955,_0x391911));}return BPromise[_0xac2d('0x21')](_0x2d92b5,function(_0x10da1d){_0x226b6b[_0xac2d('0x22')](_0x10da1d);})['then'](function(){for(var _0x3d72db=0x0;_0x3d72db<_0x226b6b[_0xac2d('0x19')];_0x3d72db+=0x1){var _0x337228;var _0x2323c8=_0x226b6b[_0x3d72db];if(_0x1e16b8){_0x337228=path['join'](_0x19a955,_0x391911,util['format'](_0xac2d('0x23'),_0x391911,_0x3d72db,_0xac2d('0x24')));}else{_0x337228=path[_0xac2d('0x1f')](_0x19a955,util[_0xac2d('0xc')](_0xac2d('0x25'),_0x391911,_0xac2d('0x24')));}fs[_0xac2d('0x26')](_0x337228,csv(_0x2323c8));}})[_0xac2d('0x11')](function(){if(_0x1e16b8){zipdir(path[_0xac2d('0x1f')](_0x19a955,_0x391911),{'saveTo':path['join'](_0x19a955,util['format'](_0xac2d('0x25'),_0x391911,_0xac2d('0x27')))},function(_0x3f1094,_0x44b9d0){});rimraf(path[_0xac2d('0x1f')](_0x19a955,_0x391911),function(){});}})['then'](function(){logger[_0xac2d('0xb')](util[_0xac2d('0xc')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0xac2d('0x28')));return analyticExtractedReport(_0xac2d('0x29'),_0x1e16b8?util[_0xac2d('0xc')](_0xac2d('0x25'),_0x391911,_0x1e16b8?'zip':_0xac2d('0x24')):null);});})['catch'](function(_0x1ff4a6){logger[_0xac2d('0xb')](util['format'](_0xac2d('0x2a'),EXTRACTED_REPORT_ID,_0xac2d('0x28')),util[_0xac2d('0x2b')](_0x1ff4a6,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xac2d('0x2c'));})[_0xac2d('0x2d')](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xf403=['../../mysqldb','dbH','argv','AnalyticExtractedReport','update','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','find','split','splitSizeCsv','then','sequelize','query','QueryTypes','SELECT','Empty','num','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','.csv','existsSync','join','length','%s%d.%s','%s.%s','writeFileSync','zip','info','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','util','lodash','to-csv','bluebird','zip-dir','rimraf'];(function(_0x7fa013,_0x26498b){var _0x55a2be=function(_0x423b15){while(--_0x423b15){_0x7fa013['push'](_0x7fa013['shift']());}};_0x55a2be(++_0x26498b);}(_0xf403,0x1d3));var _0x3f40=function(_0x180e09,_0x38355a){_0x180e09=_0x180e09-0x0;var _0x21d4c0=_0xf403[_0x180e09];return _0x21d4c0;};'use strict';var util=require(_0x3f40('0x0'));var path=require('path');var _=require(_0x3f40('0x1'));var csv=require(_0x3f40('0x2'));var fs=require('fs');var BPromise=require(_0x3f40('0x3'));var zipdir=require(_0x3f40('0x4'));var rimraf=require(_0x3f40('0x5'));var db=require(_0x3f40('0x6'))['db'];var dbH=require(_0x3f40('0x6'))[_0x3f40('0x7')];var logger=require('../../config/logger')('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x3f40('0x8')][0x2]);var QUERY=process[_0x3f40('0x8')][0x3];var PATH=process[_0x3f40('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x1f21fa,_0x5878f9){var _0x1dffe8={'status':_0x1f21fa};var _0x4c1694={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x5878f9){_0x1dffe8['savename']=_0x5878f9;}return db[_0x3f40('0x9')][_0x3f40('0xa')](_0x1dffe8,_0x4c1694);}function main(){var _0x40d198=0x1388;var _0x5bf41d;logger['info'](util[_0x3f40('0xb')](_0x3f40('0xc'),EXTRACTED_REPORT_ID,_0x3f40('0xd')));return db['Setting'][_0x3f40('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x3f40('0xf'),_0x3f40('0x10')]})['then'](function(_0x332635){if(_0x332635){_0x5bf41d=_0x332635;_0x40d198=_0x5bf41d['splitSizeCsv']||0x1388;}})[_0x3f40('0x11')](function(){return dbH[_0x3f40('0x12')][_0x3f40('0x13')](util[_0x3f40('0xb')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x3f40('0x12')][_0x3f40('0x14')][_0x3f40('0x15')]});})[_0x3f40('0x11')](function(_0x232241){if(!_0x232241[0x0]['num']){return analyticExtractedReport(_0x3f40('0x16'));}var _0x3d11c9=[];var _0x535f85=0x0;var _0x4ef80e=!![];if(_0x232241&&_0x232241['length']){var _0x206630=_0x232241[0x0][_0x3f40('0x17')]%(_0x535f85+_0x40d198);if(_0x5bf41d[_0x3f40('0xf')]){for(;_0x4ef80e;_0x535f85+=_0x40d198,_0x206630=_0x232241[0x0][_0x3f40('0x17')]%(_0x535f85+_0x40d198)){if(_0x206630==0x0||_0x206630==_0x232241[0x0][_0x3f40('0x17')]){_0x4ef80e=![];}_0x3d11c9['push'](dbH[_0x3f40('0x12')][_0x3f40('0x13')](util[_0x3f40('0xb')](_0x3f40('0x18'),QUERY,_0x40d198,_0x535f85),{'type':dbH[_0x3f40('0x12')]['QueryTypes'][_0x3f40('0x15')]}));}}else{_0x3d11c9['push'](dbH[_0x3f40('0x12')][_0x3f40('0x13')](QUERY,{'type':dbH[_0x3f40('0x12')][_0x3f40('0x14')][_0x3f40('0x15')]}));}}var _0x4aa559=path[_0x3f40('0x19')](PATH);var _0x379b4e=path[_0x3f40('0x1a')](PATH,_0x3f40('0x1b'));var _0x258de9=_0x5bf41d[_0x3f40('0xf')]&&_0x3d11c9['length']>0x1;var _0x31fc91=[];if(!fs[_0x3f40('0x1c')](path[_0x3f40('0x1d')](_0x4aa559,_0x379b4e))&&_0x258de9){fs['mkdirSync'](path[_0x3f40('0x1d')](_0x4aa559,_0x379b4e));}return BPromise['each'](_0x3d11c9,function(_0x37b47e){_0x31fc91['push'](_0x37b47e);})['then'](function(){for(var _0x4b0ade=0x0;_0x4b0ade<_0x31fc91[_0x3f40('0x1e')];_0x4b0ade+=0x1){var _0x26e46b;var _0x140044=_0x31fc91[_0x4b0ade];if(_0x258de9){_0x26e46b=path[_0x3f40('0x1d')](_0x4aa559,_0x379b4e,util['format'](_0x3f40('0x1f'),_0x379b4e,_0x4b0ade,'csv'));}else{_0x26e46b=path[_0x3f40('0x1d')](_0x4aa559,util[_0x3f40('0xb')](_0x3f40('0x20'),_0x379b4e,'csv'));}fs[_0x3f40('0x21')](_0x26e46b,csv(_0x140044));}})['then'](function(){if(_0x258de9){zipdir(path[_0x3f40('0x1d')](_0x4aa559,_0x379b4e),{'saveTo':path['join'](_0x4aa559,util['format'](_0x3f40('0x20'),_0x379b4e,_0x3f40('0x22')))},function(_0x14fdfd,_0xb23186){});rimraf(path[_0x3f40('0x1d')](_0x4aa559,_0x379b4e),function(){});}})[_0x3f40('0x11')](function(){logger[_0x3f40('0x23')](util[_0x3f40('0xb')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x3f40('0xd')));return analyticExtractedReport(_0x3f40('0x24'),_0x258de9?util[_0x3f40('0xb')](_0x3f40('0x20'),_0x379b4e,_0x258de9?_0x3f40('0x22'):'csv'):null);});})[_0x3f40('0x25')](function(_0x86d9cb){logger[_0x3f40('0x23')](util['format'](_0x3f40('0x26'),EXTRACTED_REPORT_ID,_0x3f40('0xd')),util[_0x3f40('0x27')](_0x86d9cb,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x3f40('0x28'));})[_0x3f40('0x29')](function(){process[_0x3f40('0x2a')](EXIT_CODE);});}main();
\ No newline at end of file
index 97847f7..c61270d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6662=['keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','endDate','pageBreak','margin','landscape','toString','\x20/\x20','Arial','black','right','num','Empty','dirname','basename','.pdf','join','pdf','splitSizePdf','then','split','sequelize','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','query','SELECT','existsSync','mkdirSync','all','flatten','createPdfKitDocument','%s%d.%s','%s.%s','zip','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','CSV','Completed','PDF','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','center','Interaction\x20Transcript','header','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','footer','pipe','createWriteStream','finish','error','end','createPdfFromHTML','lodash','util','path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','JSDOM','window','../../mysqldb','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','map','tableHeader','pick','length','body','push','concat','chunk'];(function(_0x33032e,_0x31411a){var _0x13316b=function(_0x2fb049){while(--_0x2fb049){_0x33032e['push'](_0x33032e['shift']());}};_0x13316b(++_0x31411a);}(_0x6662,0xa0));var _0x2666=function(_0x4c4b3a,_0xdffe34){_0x4c4b3a=_0x4c4b3a-0x0;var _0x18bd63=_0x6662[_0x4c4b3a];return _0x18bd63;};'use strict';var _=require(_0x2666('0x0'));var fs=require('fs');var util=require(_0x2666('0x1'));var path=require(_0x2666('0x2'));var moment=require(_0x2666('0x3'));var htmlToPdfmake=require(_0x2666('0x4'));var PdfPrinter=require(_0x2666('0x5'));var zipdir=require(_0x2666('0x6'));var rimraf=require('rimraf');var JSDOM=require('jsdom')[_0x2666('0x7')];var window=new JSDOM('')[_0x2666('0x8')];var db=require(_0x2666('0x9'))['db'];var dbH=require(_0x2666('0x9'))['dbH'];var logger=require(_0x2666('0xa'))(_0x2666('0xb'));var EXTRACTED_REPORT_ID=Number(process[_0x2666('0xc')][0x2]);var QUERY=process[_0x2666('0xc')][0x3];var PATH=process[_0x2666('0xc')][0x4];var NAME=process[_0x2666('0xc')][0x5];var FORMAT=_0x2666('0xd');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x2b3a97,_0x2062b0){var _0x5709bb={'status':_0x2b3a97};var _0x1b2c6b={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x2062b0){_0x5709bb[_0x2666('0xe')]=_0x2062b0;}return db[_0x2666('0xf')]['update'](_0x5709bb,_0x1b2c6b);}function getHeaders(_0x36cac1){return _[_0x2666('0x10')](_0x36cac1,function(_0x2d5801){return{'text':_0x2d5801,'style':_0x2666('0x11')};});}function getRows(_0x4b48bb,_0xd99d3d){return _[_0x2666('0x10')](_0xd99d3d,function(_0x58d14a){return _(_0x58d14a)[_0x2666('0x12')](_0x4b48bb)['map'](function(_0x1dd4c7){return _0x1dd4c7?_['toString'](_0x1dd4c7):'';})['value']();});}function createTable(_0x507043,_0x6346f6){var _0x525f87={'widths':_['fill'](Array(_0x507043[_0x2666('0x13')]),0x91),'heights':function(_0x13d9f5){return _0x13d9f5===0x0?'auto':0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x298593=getHeaders(_0x507043);_0x525f87[_0x2666('0x14')][_0x2666('0x15')](_0x298593);var _0xe58a1a=getRows(_0x507043,_0x6346f6);_0x525f87[_0x2666('0x14')]=_0x525f87['body'][_0x2666('0x16')](_0xe58a1a);return _0x525f87;}function createTables(_0x58e212){var _0x49d4f4=[];var _0x2e3de7=_[_0x2666('0x17')](Object[_0x2666('0x18')](_0x58e212[0x0]),0x5);_0x2e3de7[_0x2666('0x19')](function(_0x2a4d47){_0x49d4f4[_0x2666('0x15')](createTable(_0x2a4d47,_0x58e212));});return _0x49d4f4;}function getPDFDocDefinition(_0x38769b){var _0x572507=util[_0x2666('0x1a')](_0x2666('0x1b'),NAME,EXTRACTED_REPORT[_0x2666('0x1c')],moment(EXTRACTED_REPORT[_0x2666('0x1d')])[_0x2666('0x1a')](FORMAT),moment(EXTRACTED_REPORT[_0x2666('0x1e')])[_0x2666('0x1a')](FORMAT));var _0x27a5d=[];for(var _0x261963=0x0;_0x261963<_0x38769b[_0x2666('0x13')];_0x261963++){var _0x53ad05=[];if(_0x261963===0x0){_0x53ad05[_0x2666('0x15')]({'text':_0x572507,'style':'header'});}var _0x236326={'table':_0x38769b[_0x261963]};if(_0x261963>0x0){_0x236326[_0x2666('0x1f')]='before';_0x236326[_0x2666('0x20')]=[0x0,0x46,0x0,0x0];}_0x53ad05[_0x2666('0x15')](_0x236326);_0x27a5d[_0x2666('0x15')](_0x53ad05);}return{'pageSize':'A4','pageOrientation':_0x2666('0x21'),'content':_0x27a5d,'footer':function(_0x31e333,_0x368a18){return{'text':_0x31e333[_0x2666('0x22')]()+_0x2666('0x23')+_0x368a18,'style':'footer'};},'defaultStyle':{'font':_0x2666('0x24')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x2666('0x25')},'footer':{'alignment':_0x2666('0x26'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x50d3bc){var _0x5f0bdb=0x1388;var _0x5ba03e;if(!_0x50d3bc[0x0][_0x2666('0x27')]){return analyticExtractedReport(_0x2666('0x28'));}var _0x9b5055=[];var _0x19b2e9=0x0;var _0x584b83=!![];var _0x402b1c=path[_0x2666('0x29')](PATH);var _0x3279c3=path[_0x2666('0x2a')](PATH,_0x2666('0x2b'));var _0x710c7f=path[_0x2666('0x2c')](_0x402b1c,util['format']('%s.%s',_0x3279c3,_0x2666('0x2d')));var _0x309c06=![];return db['Setting']['find']({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x2666('0x2e')]})[_0x2666('0x2f')](function(_0x11f1b4){if(_0x11f1b4){_0x5ba03e=_0x11f1b4;_0x5f0bdb=_0x5ba03e[_0x2666('0x2e')]||0x3e8;}})[_0x2666('0x2f')](function(){if(_0x50d3bc&&_0x50d3bc[_0x2666('0x13')]){var _0x423736=_0x50d3bc[0x0]['num']%(_0x19b2e9+_0x5f0bdb);if(_0x5ba03e[_0x2666('0x30')]){for(;_0x584b83;_0x19b2e9+=_0x5f0bdb,_0x423736=_0x50d3bc[0x0][_0x2666('0x27')]%(_0x19b2e9+_0x5f0bdb)){if(_0x423736==0x0||_0x423736==_0x50d3bc[0x0][_0x2666('0x27')]){_0x584b83=![];}_0x9b5055[_0x2666('0x15')](dbH[_0x2666('0x31')]['query'](util[_0x2666('0x1a')](_0x2666('0x32'),QUERY,_0x5f0bdb,_0x19b2e9),{'type':dbH['sequelize'][_0x2666('0x33')]['SELECT']}));}}else{_0x9b5055['push'](dbH[_0x2666('0x31')][_0x2666('0x34')](QUERY,{'type':dbH[_0x2666('0x31')]['QueryTypes'][_0x2666('0x35')]}));}}_0x309c06=_0x5ba03e['split']&&_0x9b5055[_0x2666('0x13')]>0x1;if(!fs[_0x2666('0x36')](path['join'](_0x402b1c,_0x3279c3))&&_0x309c06){fs[_0x2666('0x37')](path[_0x2666('0x2c')](_0x402b1c,_0x3279c3));}return Promise[_0x2666('0x38')](_0x9b5055);})['then'](function(_0x21bc19){return createTables(_[_0x2666('0x39')](_0x21bc19));})['then'](function(_0x169f09){var _0x5ae6b1=getPDFDocDefinition(_0x169f09);var _0x44e5e5=getPDFPrinter();var _0x4bc360=_0x44e5e5[_0x2666('0x3a')](_0x5ae6b1);if(_0x309c06)_0x710c7f=path['join'](_0x402b1c,_0x3279c3,util[_0x2666('0x1a')](_0x2666('0x3b'),_0x3279c3,index,_0x2666('0x2d')));return writePDFDocument(_0x4bc360,_0x710c7f);})[_0x2666('0x2f')](function(){if(!_0x309c06)return;zipdir(path['join'](_0x402b1c,_0x3279c3),{'saveTo':path[_0x2666('0x2c')](_0x402b1c,util[_0x2666('0x1a')](_0x2666('0x3c'),_0x3279c3,_0x2666('0x3d')))},function(_0x8c9392){if(_0x8c9392)throw _0x8c9392;return;});})['then'](function(){if(!_0x309c06)return;rimraf(path[_0x2666('0x2c')](_0x402b1c,_0x3279c3),function(){});})['then'](function(){logger[_0x2666('0x3e')](util[_0x2666('0x1a')](_0x2666('0x3f'),EXTRACTED_REPORT_ID,_0x2666('0x40')));return analyticExtractedReport(_0x2666('0x41'),_0x309c06?util[_0x2666('0x1a')](_0x2666('0x3c'),_0x3279c3,_0x309c06?_0x2666('0x3d'):_0x2666('0x2d')):null);});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x2666('0x3e')](util[_0x2666('0x1a')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x2666('0x42')));return db[_0x2666('0xf')][_0x2666('0x43')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x2666('0x2f')](function(_0x5e1f91){EXTRACTED_REPORT=_0x5e1f91;return dbH[_0x2666('0x31')][_0x2666('0x34')](util[_0x2666('0x1a')](_0x2666('0x44'),QUERY),{'type':dbH[_0x2666('0x31')]['QueryTypes'][_0x2666('0x35')]});})[_0x2666('0x2f')](extractReport)[_0x2666('0x45')](function(_0x91ca9e){logger['info'](util[_0x2666('0x1a')](_0x2666('0x46'),EXTRACTED_REPORT_ID,_0x2666('0x42')),util[_0x2666('0x47')](_0x91ca9e,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x2666('0x48'));})[_0x2666('0x49')](function(){process['exit'](EXIT_CODE);});}main();function getPDFPrinter(){var _0x3ea743=new PdfPrinter({'Arial':{'normal':__dirname+_0x2666('0x4a'),'bold':__dirname+_0x2666('0x4b'),'italics':__dirname+_0x2666('0x4c'),'bolditalics':__dirname+_0x2666('0x4d')}});return _0x3ea743;}function getPDFDocDefinitionFromHTML(_0x5879d3,_0xf2ecf){var _0x4a6a58=util[_0x2666('0x1a')](_0x2666('0x4e'),_0xf2ecf[_0x2666('0x4f')],_0xf2ecf[_0x2666('0x50')]);var _0x5ef6e7=moment()[_0x2666('0x1a')]('YYYY-MM-DD')[_0x2666('0x22')]();var _0x587672=htmlToPdfmake(_0x5879d3,{'window':window,'tableAutoSize':!![]});return{'content':[_0x587672],'defaultStyle':{'font':_0x2666('0x24')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x2666('0x51'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x2666('0x51'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x2666('0x51')}},'header':function(){return[{'text':_0x2666('0x52'),'style':_0x2666('0x53')}];},'footer':function(_0x312b25,_0x119f5d){return[{'text':util[_0x2666('0x1a')](_0x2666('0x54'),_0x4a6a58,_0x312b25,_0x119f5d,_0x5ef6e7),'style':_0x2666('0x55')}];}};}function writePDFDocument(_0x34581b,_0x221f4e){return new Promise(function(_0x20e15c,_0x1c2582){var _0x3a15ad=_0x34581b[_0x2666('0x56')](fs[_0x2666('0x57')](_0x221f4e));_0x3a15ad['on'](_0x2666('0x58'),function(){_0x20e15c(_0x2666('0x58'));});_0x3a15ad['on'](_0x2666('0x59'),function(_0x33eeda){_0x1c2582(_0x33eeda);});_0x34581b[_0x2666('0x5a')]();});}exports[_0x2666('0x5b')]=function(_0x32f163,_0x10a7aa){var _0x3b37d5=getPDFPrinter();var _0x225a2c=getPDFDocDefinitionFromHTML(_0x32f163,_0x10a7aa);var _0x409982=_0x3b37d5[_0x2666('0x3a')](_0x225a2c);return writePDFDocument(_0x409982,_0x10a7aa[_0x2666('0x2')])[_0x2666('0x45')](function(_0x1fd265){throw _0x1fd265;});};
\ No newline at end of file
+var _0xa459=['query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','split','existsSync','all','flatten','createPdfKitDocument','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','CSV','Completed','zip','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','PDF','AnalyticExtractedReport','catch','info','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','footer','pipe','finish','end','createPdfFromHTML','lodash','util','path','html-to-pdfmake','zip-dir','rimraf','jsdom','JSDOM','window','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','map','tableHeader','pick','toString','fill','auto','body','concat','keys','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','format','endDate','length','push','header','pageBreak','margin','landscape','Arial','Empty','.pdf','join','%s.%s','pdf','Setting','find','then','splitSizePdf','num','sequelize'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0xa459,0xcc));var _0x9a45=function(_0x316d59,_0x46390a){_0x316d59=_0x316d59-0x0;var _0x53770b=_0xa459[_0x316d59];return _0x53770b;};'use strict';var _=require(_0x9a45('0x0'));var fs=require('fs');var util=require(_0x9a45('0x1'));var path=require(_0x9a45('0x2'));var moment=require('moment');var htmlToPdfmake=require(_0x9a45('0x3'));var PdfPrinter=require('pdfmake/src/printer');var zipdir=require(_0x9a45('0x4'));var rimraf=require(_0x9a45('0x5'));var JSDOM=require(_0x9a45('0x6'))[_0x9a45('0x7')];var window=new JSDOM('')[_0x9a45('0x8')];var db=require(_0x9a45('0x9'))['db'];var dbH=require(_0x9a45('0x9'))[_0x9a45('0xa')];var logger=require(_0x9a45('0xb'))(_0x9a45('0xc'));var EXTRACTED_REPORT_ID=Number(process[_0x9a45('0xd')][0x2]);var QUERY=process[_0x9a45('0xd')][0x3];var PATH=process[_0x9a45('0xd')][0x4];var NAME=process[_0x9a45('0xd')][0x5];var FORMAT=_0x9a45('0xe');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x14cfc4,_0x563322){var _0x443f1c={'status':_0x14cfc4};var _0x42f4d7={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x563322){_0x443f1c[_0x9a45('0xf')]=_0x563322;}return db['AnalyticExtractedReport']['update'](_0x443f1c,_0x42f4d7);}function getHeaders(_0x7198ed){return _[_0x9a45('0x10')](_0x7198ed,function(_0x2fe052){return{'text':_0x2fe052,'style':_0x9a45('0x11')};});}function getRows(_0x1cc5bb,_0x1d8361){return _[_0x9a45('0x10')](_0x1d8361,function(_0x11ae45){return _(_0x11ae45)[_0x9a45('0x12')](_0x1cc5bb)['map'](function(_0xeaf378){return _0xeaf378?_[_0x9a45('0x13')](_0xeaf378):'';})['value']();});}function createTable(_0x380e06,_0x7f002d){var _0x277aef={'widths':_[_0x9a45('0x14')](Array(_0x380e06['length']),0x91),'heights':function(_0x3801d6){return _0x3801d6===0x0?_0x9a45('0x15'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x5f0f79=getHeaders(_0x380e06);_0x277aef[_0x9a45('0x16')]['push'](_0x5f0f79);var _0x3d3d44=getRows(_0x380e06,_0x7f002d);_0x277aef[_0x9a45('0x16')]=_0x277aef[_0x9a45('0x16')][_0x9a45('0x17')](_0x3d3d44);return _0x277aef;}function createTables(_0x85be5e){var _0x598bd5=[];var _0x2b9cab=_['chunk'](Object[_0x9a45('0x18')](_0x85be5e[0x0]),0x5);_0x2b9cab['forEach'](function(_0x356fa7){_0x598bd5['push'](createTable(_0x356fa7,_0x85be5e));});return _0x598bd5;}function getPDFDocDefinition(_0x53e565){var _0x500575=util['format'](_0x9a45('0x19'),NAME,EXTRACTED_REPORT[_0x9a45('0x1a')],moment(EXTRACTED_REPORT[_0x9a45('0x1b')])[_0x9a45('0x1c')](FORMAT),moment(EXTRACTED_REPORT[_0x9a45('0x1d')])['format'](FORMAT));var _0x377d8e=[];for(var _0x3e586b=0x0;_0x3e586b<_0x53e565[_0x9a45('0x1e')];_0x3e586b++){var _0x10c705=[];if(_0x3e586b===0x0){_0x10c705[_0x9a45('0x1f')]({'text':_0x500575,'style':_0x9a45('0x20')});}var _0x4d402d={'table':_0x53e565[_0x3e586b]};if(_0x3e586b>0x0){_0x4d402d[_0x9a45('0x21')]='before';_0x4d402d[_0x9a45('0x22')]=[0x0,0x46,0x0,0x0];}_0x10c705[_0x9a45('0x1f')](_0x4d402d);_0x377d8e['push'](_0x10c705);}return{'pageSize':'A4','pageOrientation':_0x9a45('0x23'),'content':_0x377d8e,'footer':function(_0x491726,_0x5ad29a){return{'text':_0x491726['toString']()+'\x20/\x20'+_0x5ad29a,'style':'footer'};},'defaultStyle':{'font':_0x9a45('0x24')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x53b848){var _0x3901bf=0x1388;var _0x15135a;if(!_0x53b848[0x0]['num']){return analyticExtractedReport(_0x9a45('0x25'));}var _0x557964=[];var _0x33308f=0x0;var _0xd7a7b2=!![];var _0x3b650e=path['dirname'](PATH);var _0x12dfa6=path['basename'](PATH,_0x9a45('0x26'));var _0x464ab9=path[_0x9a45('0x27')](_0x3b650e,util[_0x9a45('0x1c')](_0x9a45('0x28'),_0x12dfa6,_0x9a45('0x29')));var _0x420fc0=![];return db[_0x9a45('0x2a')][_0x9a45('0x2b')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split','splitSizePdf']})[_0x9a45('0x2c')](function(_0x1aa061){if(_0x1aa061){_0x15135a=_0x1aa061;_0x3901bf=_0x15135a[_0x9a45('0x2d')]||0x3e8;}})[_0x9a45('0x2c')](function(){if(_0x53b848&&_0x53b848[_0x9a45('0x1e')]){var _0x4ad8f4=_0x53b848[0x0][_0x9a45('0x2e')]%(_0x33308f+_0x3901bf);if(_0x15135a['split']){for(;_0xd7a7b2;_0x33308f+=_0x3901bf,_0x4ad8f4=_0x53b848[0x0][_0x9a45('0x2e')]%(_0x33308f+_0x3901bf)){if(_0x4ad8f4==0x0||_0x4ad8f4==_0x53b848[0x0][_0x9a45('0x2e')]){_0xd7a7b2=![];}_0x557964[_0x9a45('0x1f')](dbH[_0x9a45('0x2f')][_0x9a45('0x30')](util[_0x9a45('0x1c')](_0x9a45('0x31'),QUERY,_0x3901bf,_0x33308f),{'type':dbH[_0x9a45('0x2f')][_0x9a45('0x32')][_0x9a45('0x33')]}));}}else{_0x557964[_0x9a45('0x1f')](dbH[_0x9a45('0x2f')][_0x9a45('0x30')](QUERY,{'type':dbH[_0x9a45('0x2f')]['QueryTypes'][_0x9a45('0x33')]}));}}_0x420fc0=_0x15135a[_0x9a45('0x34')]&&_0x557964['length']>0x1;if(!fs[_0x9a45('0x35')](path[_0x9a45('0x27')](_0x3b650e,_0x12dfa6))&&_0x420fc0){fs['mkdirSync'](path[_0x9a45('0x27')](_0x3b650e,_0x12dfa6));}return Promise[_0x9a45('0x36')](_0x557964);})[_0x9a45('0x2c')](function(_0x342727){return createTables(_[_0x9a45('0x37')](_0x342727));})[_0x9a45('0x2c')](function(_0x3a1fd9){var _0xccf2d2=getPDFDocDefinition(_0x3a1fd9);var _0x5b9e81=getPDFPrinter();var _0x663239=_0x5b9e81[_0x9a45('0x38')](_0xccf2d2);if(_0x420fc0)_0x464ab9=path[_0x9a45('0x27')](_0x3b650e,_0x12dfa6,util[_0x9a45('0x1c')]('%s%d.%s',_0x12dfa6,index,_0x9a45('0x29')));return writePDFDocument(_0x663239,_0x464ab9);})[_0x9a45('0x2c')](function(){if(!_0x420fc0)return;zipdir(path['join'](_0x3b650e,_0x12dfa6),{'saveTo':path[_0x9a45('0x27')](_0x3b650e,util['format'](_0x9a45('0x28'),_0x12dfa6,'zip'))},function(_0x58eaf4){if(_0x58eaf4)throw _0x58eaf4;return;});})[_0x9a45('0x2c')](function(){if(!_0x420fc0)return;rimraf(path['join'](_0x3b650e,_0x12dfa6),function(){});})['then'](function(){logger['info'](util[_0x9a45('0x1c')](_0x9a45('0x39'),EXTRACTED_REPORT_ID,_0x9a45('0x3a')));return analyticExtractedReport(_0x9a45('0x3b'),_0x420fc0?util[_0x9a45('0x1c')]('%s.%s',_0x12dfa6,_0x420fc0?_0x9a45('0x3c'):'pdf'):null);});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0x9a45('0x1c')](_0x9a45('0x3d'),EXTRACTED_REPORT_ID,_0x9a45('0x3e')));return db[_0x9a45('0x3f')]['findOne']({'where':{'id':EXTRACTED_REPORT_ID}})[_0x9a45('0x2c')](function(_0x2cb7b2){EXTRACTED_REPORT=_0x2cb7b2;return dbH[_0x9a45('0x2f')][_0x9a45('0x30')](util['format']('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x9a45('0x2f')][_0x9a45('0x32')][_0x9a45('0x33')]});})[_0x9a45('0x2c')](extractReport)[_0x9a45('0x40')](function(_0x37a87e){logger[_0x9a45('0x41')](util[_0x9a45('0x1c')](_0x9a45('0x42'),EXTRACTED_REPORT_ID,_0x9a45('0x3e')),util[_0x9a45('0x43')](_0x37a87e,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x9a45('0x44'));})[_0x9a45('0x45')](function(){process[_0x9a45('0x46')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x2f8a78=new PdfPrinter({'Arial':{'normal':__dirname+_0x9a45('0x47'),'bold':__dirname+_0x9a45('0x48'),'italics':__dirname+_0x9a45('0x49'),'bolditalics':__dirname+_0x9a45('0x4a')}});return _0x2f8a78;}function getPDFDocDefinitionFromHTML(_0x3ff978,_0x126ac6){var _0x141005=util[_0x9a45('0x1c')](_0x9a45('0x4b'),_0x126ac6['channel'],_0x126ac6['interactionId']);var _0x37437a=moment()[_0x9a45('0x1c')]('YYYY-MM-DD')[_0x9a45('0x13')]();var _0x458c92=htmlToPdfmake(_0x3ff978,{'window':window,'tableAutoSize':!![]});return{'content':[_0x458c92],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x9a45('0x4c'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x9a45('0x4c'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0x9a45('0x4d'),'style':_0x9a45('0x20')}];},'footer':function(_0x525026,_0x54daf9){return[{'text':util[_0x9a45('0x1c')](_0x9a45('0x4e'),_0x141005,_0x525026,_0x54daf9,_0x37437a),'style':_0x9a45('0x4f')}];}};}function writePDFDocument(_0x24f063,_0x385829){return new Promise(function(_0x1bca19,_0x5b9f4b){var _0x516ee7=_0x24f063[_0x9a45('0x50')](fs['createWriteStream'](_0x385829));_0x516ee7['on'](_0x9a45('0x51'),function(){_0x1bca19(_0x9a45('0x51'));});_0x516ee7['on']('error',function(_0x5cc90d){_0x5b9f4b(_0x5cc90d);});_0x24f063[_0x9a45('0x52')]();});}exports[_0x9a45('0x53')]=function(_0x2af75d,_0x3383a5){var _0x5328ab=getPDFPrinter();var _0x158398=getPDFDocDefinitionFromHTML(_0x2af75d,_0x3383a5);var _0x259109=_0x5328ab[_0x9a45('0x38')](_0x158398);return writePDFDocument(_0x259109,_0x3383a5[_0x9a45('0x2')])[_0x9a45('0x40')](function(_0x1fc6d2){throw _0x1fc6d2;});};
\ No newline at end of file
index 39d8b4c..9139ac2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5616=['info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','find','split','splitSizeXlsx','then','sequelize','query','SELECT','num','Empty','push','QueryTypes','basename','.xlsx','existsSync','join','mkdirSync','%s%d.%s','%s.%s','xlsx','writeFileSync','binary','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Failed','finally','exit','util','lodash','json2xls','zip-dir','rimraf','../../mysqldb','analytics','argv','update'];(function(_0x50765d,_0x521680){var _0x5423af=function(_0x2033d9){while(--_0x2033d9){_0x50765d['push'](_0x50765d['shift']());}};_0x5423af(++_0x521680);}(_0x5616,0x75));var _0x6561=function(_0x4e9274,_0x49576e){_0x4e9274=_0x4e9274-0x0;var _0x8b474c=_0x5616[_0x4e9274];return _0x8b474c;};'use strict';var util=require(_0x6561('0x0'));var path=require('path');var _=require(_0x6561('0x1'));var fs=require('fs');var json2xls=require(_0x6561('0x2'));var BPromise=require('bluebird');var zipdir=require(_0x6561('0x3'));var rimraf=require(_0x6561('0x4'));var db=require(_0x6561('0x5'))['db'];var dbH=require(_0x6561('0x5'))['dbH'];var logger=require('../../config/logger')(_0x6561('0x6'));var EXTRACTED_REPORT_ID=Number(process[_0x6561('0x7')][0x2]);var QUERY=process[_0x6561('0x7')][0x3];var PATH=process[_0x6561('0x7')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x1c27db,_0x33a730){var _0x56209f={'status':_0x1c27db};var _0x17b911={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x33a730){_0x56209f['savename']=_0x33a730;}return db['AnalyticExtractedReport'][_0x6561('0x8')](_0x56209f,_0x17b911);}function main(){var _0x30767b=0x1388;var _0x6af614;logger[_0x6561('0x9')](util[_0x6561('0xa')](_0x6561('0xb'),EXTRACTED_REPORT_ID,_0x6561('0xc')));return db['Setting'][_0x6561('0xd')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x6561('0xe'),_0x6561('0xf')]})[_0x6561('0x10')](function(_0x25701f){if(_0x25701f){_0x6af614=_0x25701f;_0x30767b=_0x6af614[_0x6561('0xf')]||0x1388;}})['then'](function(){return dbH[_0x6561('0x11')][_0x6561('0x12')](util['format']('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize']['QueryTypes'][_0x6561('0x13')]});})[_0x6561('0x10')](function(_0x390333){if(!_0x390333[0x0][_0x6561('0x14')]){return analyticExtractedReport(_0x6561('0x15'));}var _0x3b4b53=[];var _0x59998d=0x0;var _0x14ec33=!![];if(_0x6af614[_0x6561('0xe')]){if(_0x390333&&_0x390333['length']){var _0x4e59b6=_0x390333[0x0][_0x6561('0x14')]%(_0x59998d+_0x30767b);for(;_0x14ec33;_0x59998d+=_0x30767b,_0x4e59b6=_0x390333[0x0][_0x6561('0x14')]%(_0x59998d+_0x30767b)){if(_0x4e59b6==0x0||_0x4e59b6==_0x390333[0x0][_0x6561('0x14')]){_0x14ec33=![];}_0x3b4b53[_0x6561('0x16')](dbH[_0x6561('0x11')][_0x6561('0x12')](util[_0x6561('0xa')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x30767b,_0x59998d),{'type':dbH[_0x6561('0x11')][_0x6561('0x17')][_0x6561('0x13')]}));}}}else{_0x3b4b53['push'](dbH['sequelize'][_0x6561('0x12')](QUERY,{'type':dbH['sequelize'][_0x6561('0x17')][_0x6561('0x13')]}));}var _0x35ce68=path['dirname'](PATH);var _0x10a8b6=path[_0x6561('0x18')](PATH,_0x6561('0x19'));var _0x18bee8=_0x6af614[_0x6561('0xe')]&&_0x3b4b53['length']>0x1;var _0x4f52d9=[];if(!fs[_0x6561('0x1a')](path[_0x6561('0x1b')](_0x35ce68,_0x10a8b6))&&_0x18bee8){fs[_0x6561('0x1c')](path[_0x6561('0x1b')](_0x35ce68,_0x10a8b6));}return BPromise['each'](_0x3b4b53,function(_0x1c4c3a){_0x4f52d9[_0x6561('0x16')](_0x1c4c3a);})['then'](function(){for(var _0x48b909=0x0;_0x48b909<_0x4f52d9['length'];_0x48b909+=0x1){var _0x5eb386;var _0x3178e3=_0x4f52d9[_0x48b909];if(_0x18bee8){_0x5eb386=path[_0x6561('0x1b')](_0x35ce68,_0x10a8b6,util[_0x6561('0xa')](_0x6561('0x1d'),_0x10a8b6,_0x48b909,'xlsx'));}else{_0x5eb386=path['join'](_0x35ce68,util[_0x6561('0xa')](_0x6561('0x1e'),_0x10a8b6,_0x6561('0x1f')));}fs[_0x6561('0x20')](_0x5eb386,json2xls(_0x3178e3),_0x6561('0x21'));}})['then'](function(){if(_0x18bee8){zipdir(path[_0x6561('0x1b')](_0x35ce68,_0x10a8b6),{'saveTo':path[_0x6561('0x1b')](_0x35ce68,util[_0x6561('0xa')](_0x6561('0x1e'),_0x10a8b6,_0x6561('0x22')))},function(_0x26b412,_0x21de94){});rimraf(path[_0x6561('0x1b')](_0x35ce68,_0x10a8b6),function(){});}})['then'](function(){logger[_0x6561('0x9')](util[_0x6561('0xa')](_0x6561('0x23'),EXTRACTED_REPORT_ID,_0x6561('0xc')));return analyticExtractedReport(_0x6561('0x24'),_0x18bee8?util[_0x6561('0xa')](_0x6561('0x1e'),_0x10a8b6,_0x18bee8?'zip':_0x6561('0x1f')):null);});})[_0x6561('0x25')](function(_0xc43ed){logger[_0x6561('0x9')](util[_0x6561('0xa')](_0x6561('0x26'),EXTRACTED_REPORT_ID,_0x6561('0xc')),util['inspect'](_0xc43ed,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x6561('0x27'));})[_0x6561('0x28')](function(){process[_0x6561('0x29')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xb75f=['dirname','basename','.xlsx','existsSync','join','mkdirSync','each','xlsx','%s.%s','writeFileSync','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','path','lodash','json2xls','bluebird','zip-dir','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','find','split','splitSizeXlsx','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','Empty','length','num','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','push'];(function(_0xc02d78,_0x2ca478){var _0x545a36=function(_0x4ee6a8){while(--_0x4ee6a8){_0xc02d78['push'](_0xc02d78['shift']());}};_0x545a36(++_0x2ca478);}(_0xb75f,0x71));var _0xfb75=function(_0xcca7b9,_0x59baef){_0xcca7b9=_0xcca7b9-0x0;var _0x1005c4=_0xb75f[_0xcca7b9];return _0x1005c4;};'use strict';var util=require('util');var path=require(_0xfb75('0x0'));var _=require(_0xfb75('0x1'));var fs=require('fs');var json2xls=require(_0xfb75('0x2'));var BPromise=require(_0xfb75('0x3'));var zipdir=require(_0xfb75('0x4'));var rimraf=require('rimraf');var db=require(_0xfb75('0x5'))['db'];var dbH=require(_0xfb75('0x5'))[_0xfb75('0x6')];var logger=require(_0xfb75('0x7'))(_0xfb75('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0xfb75('0x9')][0x2]);var QUERY=process[_0xfb75('0x9')][0x3];var PATH=process[_0xfb75('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x4f87e4,_0x5ec841){var _0xda6c91={'status':_0x4f87e4};var _0x2250b7={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x5ec841){_0xda6c91[_0xfb75('0xa')]=_0x5ec841;}return db[_0xfb75('0xb')][_0xfb75('0xc')](_0xda6c91,_0x2250b7);}function main(){var _0x3affb1=0x1388;var _0x2a0f25;logger[_0xfb75('0xd')](util[_0xfb75('0xe')](_0xfb75('0xf'),EXTRACTED_REPORT_ID,_0xfb75('0x10')));return db['Setting'][_0xfb75('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xfb75('0x12'),_0xfb75('0x13')]})[_0xfb75('0x14')](function(_0x541fae){if(_0x541fae){_0x2a0f25=_0x541fae;_0x3affb1=_0x2a0f25[_0xfb75('0x13')]||0x1388;}})[_0xfb75('0x14')](function(){return dbH[_0xfb75('0x15')][_0xfb75('0x16')](util['format'](_0xfb75('0x17'),QUERY),{'type':dbH['sequelize'][_0xfb75('0x18')]['SELECT']});})[_0xfb75('0x14')](function(_0x2a9a86){if(!_0x2a9a86[0x0]['num']){return analyticExtractedReport(_0xfb75('0x19'));}var _0x3d01ac=[];var _0x116b77=0x0;var _0x5cef03=!![];if(_0x2a0f25[_0xfb75('0x12')]){if(_0x2a9a86&&_0x2a9a86[_0xfb75('0x1a')]){var _0x47f10f=_0x2a9a86[0x0][_0xfb75('0x1b')]%(_0x116b77+_0x3affb1);for(;_0x5cef03;_0x116b77+=_0x3affb1,_0x47f10f=_0x2a9a86[0x0][_0xfb75('0x1b')]%(_0x116b77+_0x3affb1)){if(_0x47f10f==0x0||_0x47f10f==_0x2a9a86[0x0]['num']){_0x5cef03=![];}_0x3d01ac['push'](dbH[_0xfb75('0x15')]['query'](util[_0xfb75('0xe')](_0xfb75('0x1c'),QUERY,_0x3affb1,_0x116b77),{'type':dbH[_0xfb75('0x15')][_0xfb75('0x18')][_0xfb75('0x1d')]}));}}}else{_0x3d01ac[_0xfb75('0x1e')](dbH[_0xfb75('0x15')][_0xfb75('0x16')](QUERY,{'type':dbH[_0xfb75('0x15')][_0xfb75('0x18')][_0xfb75('0x1d')]}));}var _0x1c5fd1=path[_0xfb75('0x1f')](PATH);var _0x145caa=path[_0xfb75('0x20')](PATH,_0xfb75('0x21'));var _0x284d65=_0x2a0f25[_0xfb75('0x12')]&&_0x3d01ac[_0xfb75('0x1a')]>0x1;var _0x2b9f43=[];if(!fs[_0xfb75('0x22')](path[_0xfb75('0x23')](_0x1c5fd1,_0x145caa))&&_0x284d65){fs[_0xfb75('0x24')](path['join'](_0x1c5fd1,_0x145caa));}return BPromise[_0xfb75('0x25')](_0x3d01ac,function(_0x419b8b){_0x2b9f43[_0xfb75('0x1e')](_0x419b8b);})['then'](function(){for(var _0x2771dd=0x0;_0x2771dd<_0x2b9f43['length'];_0x2771dd+=0x1){var _0x41100b;var _0x3ac271=_0x2b9f43[_0x2771dd];if(_0x284d65){_0x41100b=path[_0xfb75('0x23')](_0x1c5fd1,_0x145caa,util['format']('%s%d.%s',_0x145caa,_0x2771dd,_0xfb75('0x26')));}else{_0x41100b=path['join'](_0x1c5fd1,util[_0xfb75('0xe')](_0xfb75('0x27'),_0x145caa,_0xfb75('0x26')));}fs[_0xfb75('0x28')](_0x41100b,json2xls(_0x3ac271),'binary');}})[_0xfb75('0x14')](function(){if(_0x284d65){zipdir(path[_0xfb75('0x23')](_0x1c5fd1,_0x145caa),{'saveTo':path[_0xfb75('0x23')](_0x1c5fd1,util['format']('%s.%s',_0x145caa,'zip'))},function(_0x5299c7,_0x4ccedb){});rimraf(path['join'](_0x1c5fd1,_0x145caa),function(){});}})['then'](function(){logger[_0xfb75('0xd')](util[_0xfb75('0xe')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0xfb75('0x10')));return analyticExtractedReport(_0xfb75('0x29'),_0x284d65?util['format'](_0xfb75('0x27'),_0x145caa,_0x284d65?'zip':_0xfb75('0x26')):null);});})[_0xfb75('0x2a')](function(_0x9524a7){logger[_0xfb75('0xd')](util[_0xfb75('0xe')](_0xfb75('0x2b'),EXTRACTED_REPORT_ID,_0xfb75('0x10')),util[_0xfb75('0x2c')](_0x9524a7,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xfb75('0x2d'));})[_0xfb75('0x2e')](function(){process[_0xfb75('0x2f')](EXIT_CODE);});}main();
\ No newline at end of file
index 33e4150..0047b80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9ec=['XCALLY-MOTION-PROGRESS=1','splice',',${EXTEN},','last','concat','Hangup','transaction','destroy','bulkCreate','sortBy','catch','error','rewrite','lodash','models','Interval','findAll','VoiceExtension','IntervalId','then','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','queue','playback','hasOwnProperty','priority','extensions','find','type','Set','CDR(type)=%s','inbound','push','CDR(routeid)=','VoiceExtensionId','context','CDR(destination)=','extension','cutdigits','${EXTEN:','${EXTEN}','ExecIf','):Goto(','CDR(prefix)=${EXTEN:0:','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','wav','XCALLY-MOTION-PROGRESS=0','length','createdAt','updatedAt','interval','*,*,*,*','tag','CDR(tag)=','outbound','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','indexOf','app','toLowerCase','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress'];(function(_0x120c7a,_0x553651){var _0x402568=function(_0x4ad30b){while(--_0x4ad30b){_0x120c7a['push'](_0x120c7a['shift']());}};_0x402568(++_0x553651);}(_0xb9ec,0x175));var _0xcb9e=function(_0x2a1599,_0x2df6fa){_0x2a1599=_0x2a1599-0x0;var _0x452377=_0xb9ec[_0x2a1599];return _0x452377;};'use strict';var _=require(_0xcb9e('0x0'));var util=require('util');function rewrite(_0x4cf55d,_0x5c4be4){var _0x3557eb=this;return _0x4cf55d[_0xcb9e('0x1')][_0xcb9e('0x2')][_0xcb9e('0x3')]({'raw':!![]})['then'](function(_0x41bdd1){_0x3557eb['intervals']=_0x41bdd1;return _0x4cf55d['models'][_0xcb9e('0x4')][_0xcb9e('0x3')]({'where':{'IntervalId':_0x5c4be4[_0xcb9e('0x5')]},'raw':!![]});})[_0xcb9e('0x6')](function(_0x30baca){return _0x4cf55d['models']['VoiceExtension']['findAll']({'where':{'exten':{'$in':_[_0xcb9e('0x7')](_[_0xcb9e('0x8')](_0x30baca,_0xcb9e('0x9')))}},'order':[{'raw':_0xcb9e('0xa')}],'raw':!![]});})[_0xcb9e('0x6')](function(_0x123be9){var _0x4817f3=_[_0xcb9e('0xb')](_0x123be9,{'priority':'1'});var _0x5f5388=_[_0xcb9e('0xb')](_0x123be9,{'isApp':0x1});var _0x261902=_[_0xcb9e('0xc')](_0x5f5388,_0xcb9e('0x9'));var _0x457e3a=[_0xcb9e('0xd'),_0xcb9e('0xe')];var _0x5077e4=[];var _0x2efb6b=[];for(var _0x3beaab in _0x261902){if(_0x261902[_0xcb9e('0xf')](_0x3beaab)){_0x3557eb[_0xcb9e('0x10')]=0x2;_0x3557eb[_0xcb9e('0x11')]=[];_0x3557eb['extension']=_[_0xcb9e('0x12')](_0x4817f3,{'exten':_0x261902[_0x3beaab][0x0][_0xcb9e('0x9')]});_0x3557eb[_0xcb9e('0x11')]['push']({'type':_0x261902[_0x3beaab][0x0][_0xcb9e('0x13')],'app':_0xcb9e('0x14'),'appdata':util['format'](_0xcb9e('0x15'),_0x261902[_0x3beaab][0x0][_0xcb9e('0x13')]),'context':_0x261902[_0x3beaab][0x0]['context'],'exten':_0x261902[_0x3beaab][0x0][_0xcb9e('0x9')],'priority':_0x3557eb[_0xcb9e('0x10')]++,'VoiceExtensionId':_0x261902[_0x3beaab][0x0]['VoiceExtensionId']});if(_0x261902[_0x3beaab][0x0][_0xcb9e('0x13')]===_0xcb9e('0x16')){_0x3557eb[_0xcb9e('0x11')][_0xcb9e('0x17')]({'type':_0x261902[_0x3beaab][0x0][_0xcb9e('0x13')],'app':'Set','appdata':_0xcb9e('0x18')+_0x261902[_0x3beaab][0x0][_0xcb9e('0x19')],'context':_0x261902[_0x3beaab][0x0][_0xcb9e('0x1a')],'exten':_0x261902[_0x3beaab][0x0][_0xcb9e('0x9')],'priority':_0x3557eb[_0xcb9e('0x10')]++,'VoiceExtensionId':_0x261902[_0x3beaab][0x0]['VoiceExtensionId']});}else if(_0x261902[_0x3beaab][0x0]['type']==='outbound'){if(_0x3557eb['extension']){_0x3557eb[_0xcb9e('0x11')]['push']({'type':_0x261902[_0x3beaab][0x0]['type'],'app':_0xcb9e('0x14'),'appdata':_0xcb9e('0x1b')+(_0x3557eb[_0xcb9e('0x1c')][_0xcb9e('0x1d')]?_0xcb9e('0x1e')+_0x3557eb[_0xcb9e('0x1c')][_0xcb9e('0x1d')]+'}':_0xcb9e('0x1f')),'context':_0x261902[_0x3beaab][0x0][_0xcb9e('0x1a')],'exten':_0x261902[_0x3beaab][0x0]['exten'],'priority':_0x3557eb[_0xcb9e('0x10')]++,'VoiceExtensionId':_0x261902[_0x3beaab][0x0]['VoiceExtensionId']});}_0x3557eb['extensions'][_0xcb9e('0x17')]({'type':_0x261902[_0x3beaab][0x0]['type'],'app':_0xcb9e('0x14'),'appdata':_0xcb9e('0x18')+_0x261902[_0x3beaab][0x0]['VoiceExtensionId'],'context':_0x261902[_0x3beaab][0x0][_0xcb9e('0x1a')],'exten':_0x261902[_0x3beaab][0x0][_0xcb9e('0x9')],'priority':_0x3557eb[_0xcb9e('0x10')]++,'VoiceExtensionId':_0x261902[_0x3beaab][0x0][_0xcb9e('0x19')]});var _0x1c7772=_0x3557eb[_0xcb9e('0x10')]++;_0x3557eb[_0xcb9e('0x11')][_0xcb9e('0x17')]({'type':_0x261902[_0x3beaab][0x0][_0xcb9e('0x13')],'app':_0xcb9e('0x20'),'appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x1c7772+0x2)+_0xcb9e('0x21')+(_0x1c7772+0x1)+')','context':_0x261902[_0x3beaab][0x0]['context'],'exten':_0x261902[_0x3beaab][0x0][_0xcb9e('0x9')],'priority':_0x1c7772,'VoiceExtensionId':_0x261902[_0x3beaab][0x0][_0xcb9e('0x19')]});if(_0x3557eb[_0xcb9e('0x1c')]){_0x3557eb[_0xcb9e('0x11')][_0xcb9e('0x17')]({'type':_0x261902[_0x3beaab][0x0][_0xcb9e('0x13')],'app':_0xcb9e('0x14'),'appdata':_0x3557eb[_0xcb9e('0x1c')][_0xcb9e('0x1d')]?_0xcb9e('0x22')+_0x3557eb[_0xcb9e('0x1c')][_0xcb9e('0x1d')]+'}':'CDR(prefix)=noprefix','context':_0x261902[_0x3beaab][0x0]['context'],'exten':_0x261902[_0x3beaab][0x0][_0xcb9e('0x9')],'priority':_0x3557eb['priority']++,'VoiceExtensionId':_0x261902[_0x3beaab][0x0][_0xcb9e('0x19')]});}_0x3557eb[_0xcb9e('0x11')]['push']({'type':_0x261902[_0x3beaab][0x0][_0xcb9e('0x13')],'app':_0xcb9e('0x14'),'appdata':'outboundrouteid='+_0x261902[_0x3beaab][0x0][_0xcb9e('0x19')],'context':_0x261902[_0x3beaab][0x0][_0xcb9e('0x1a')],'exten':_0x261902[_0x3beaab][0x0][_0xcb9e('0x9')],'priority':_0x3557eb[_0xcb9e('0x10')]++,'VoiceExtensionId':_0x261902[_0x3beaab][0x0][_0xcb9e('0x19')]});if(_0x3557eb[_0xcb9e('0x1c')]&&_0x3557eb['extension'][_0xcb9e('0xf')](_0xcb9e('0x23'))&&_0x3557eb[_0xcb9e('0x1c')][_0xcb9e('0x23')]!==_0xcb9e('0x24')){_0x3557eb['extensions']['push']({'type':_0x261902[_0x3beaab][0x0][_0xcb9e('0x13')],'app':'Set','appdata':_0xcb9e('0x25'),'context':_0x261902[_0x3beaab][0x0][_0xcb9e('0x1a')],'exten':_0x261902[_0x3beaab][0x0]['exten'],'priority':_0x3557eb[_0xcb9e('0x10')]++,'VoiceExtensionId':_0x261902[_0x3beaab][0x0][_0xcb9e('0x19')]});_0x3557eb[_0xcb9e('0x11')][_0xcb9e('0x17')]({'type':_0x261902[_0x3beaab][0x0][_0xcb9e('0x13')],'app':'Set','appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x3557eb['extension']['recordingFormat']||_0xcb9e('0x26'),'context':_0x261902[_0x3beaab][0x0]['context'],'exten':_0x261902[_0x3beaab][0x0][_0xcb9e('0x9')],'priority':_0x3557eb[_0xcb9e('0x10')]++,'VoiceExtensionId':_0x261902[_0x3beaab][0x0][_0xcb9e('0x19')]});}}_0x3557eb['extensions'][_0xcb9e('0x17')]({'type':_0x261902[_0x3beaab][0x0][_0xcb9e('0x13')],'app':'Set','appdata':'XCALLY-MOTION-ANSWER=0','context':_0x261902[_0x3beaab][0x0][_0xcb9e('0x1a')],'exten':_0x261902[_0x3beaab][0x0][_0xcb9e('0x9')],'priority':_0x3557eb[_0xcb9e('0x10')]++,'VoiceExtensionId':_0x261902[_0x3beaab][0x0]['VoiceExtensionId']});_0x3557eb[_0xcb9e('0x11')]['push']({'type':_0x261902[_0x3beaab][0x0][_0xcb9e('0x13')],'app':'Set','appdata':_0xcb9e('0x27'),'context':_0x261902[_0x3beaab][0x0][_0xcb9e('0x1a')],'exten':_0x261902[_0x3beaab][0x0][_0xcb9e('0x9')],'priority':_0x3557eb[_0xcb9e('0x10')]++,'VoiceExtensionId':_0x261902[_0x3beaab][0x0]['VoiceExtensionId']});_0x3557eb['extensions'][_0xcb9e('0x17')]({'type':_0x261902[_0x3beaab][0x0][_0xcb9e('0x13')],'app':_0xcb9e('0x14'),'appdata':'MONITOR_OPTIONS=ab','context':_0x261902[_0x3beaab][0x0][_0xcb9e('0x1a')],'exten':_0x261902[_0x3beaab][0x0][_0xcb9e('0x9')],'priority':_0x3557eb[_0xcb9e('0x10')]++,'VoiceExtensionId':_0x261902[_0x3beaab][0x0]['VoiceExtensionId']});for(var _0x377495=0x0,_0x5d681f=0x0;_0x377495<_0x261902[_0x3beaab][_0xcb9e('0x28')];_0x377495+=0x1,_0x5d681f=0x0){var _0x199a7a=_0x261902[_0x3beaab][_0x377495];if(_0x199a7a[_0xcb9e('0x13')]){_0x199a7a[_0xcb9e('0x13')]=_0x199a7a['type']['toLowerCase']();}var _0x2d387c=[];var _0x42223b=[];delete _0x199a7a['id'];delete _0x199a7a[_0xcb9e('0x29')];delete _0x199a7a[_0xcb9e('0x2a')];var _0xa03bf7=_0x199a7a[_0xcb9e('0x2b')]!==_0xcb9e('0x2c')?[_0x199a7a[_0xcb9e('0x2b')]]:_0x199a7a[_0xcb9e('0x5')]?_[_0xcb9e('0x8')](_[_0xcb9e('0xb')](_0x3557eb['intervals'],{'IntervalId':_0x199a7a[_0xcb9e('0x5')]}),'interval'):[];if(_0x199a7a[_0xcb9e('0xf')](_0xcb9e('0x2d'))){if(_0x199a7a[_0xcb9e('0x2d')]&&_0x199a7a['tag']!=='--'){_0x2d387c[_0xcb9e('0x17')]({'type':_0x199a7a[_0xcb9e('0x13')],'app':_0xcb9e('0x14'),'appdata':_0xcb9e('0x2e')+_0x199a7a[_0xcb9e('0x2d')],'context':_0x199a7a[_0xcb9e('0x1a')],'exten':_0x199a7a[_0xcb9e('0x9')],'priority':_0xa03bf7[_0xcb9e('0x28')]+_0x3557eb[_0xcb9e('0x10')]+_0x5d681f++,'VoiceExtensionId':_0x199a7a[_0xcb9e('0x19')]});}}if(_0x199a7a[_0xcb9e('0x13')]===_0xcb9e('0x2f')&&_0x199a7a[_0xcb9e('0xf')](_0xcb9e('0x30'))){if(_0x199a7a['callerID']){_0x2d387c[_0xcb9e('0x17')]({'type':_0x199a7a[_0xcb9e('0x13')],'app':_0xcb9e('0x20'),'appdata':_0xcb9e('0x31')+_0x199a7a[_0xcb9e('0x30')]+')','context':_0x199a7a[_0xcb9e('0x1a')],'exten':_0x199a7a[_0xcb9e('0x9')],'priority':_0xa03bf7['length']+_0x3557eb[_0xcb9e('0x10')]+_0x5d681f++,'VoiceExtensionId':_0x199a7a[_0xcb9e('0x19')]});}else{_0x2d387c['push']({'type':_0x199a7a[_0xcb9e('0x13')],'app':_0xcb9e('0x20'),'appdata':_0xcb9e('0x32'),'context':_0x199a7a[_0xcb9e('0x1a')],'exten':_0x199a7a[_0xcb9e('0x9')],'priority':_0xa03bf7[_0xcb9e('0x28')]+_0x3557eb[_0xcb9e('0x10')]+_0x5d681f++,'VoiceExtensionId':_0x199a7a['VoiceExtensionId']});}}if(_0x199a7a[_0xcb9e('0xf')](_0xcb9e('0x33'))){if(_0x457e3a[_0xcb9e('0x34')](_0x199a7a[_0xcb9e('0x35')][_0xcb9e('0x36')]())>=0x0&&_0x199a7a[_0xcb9e('0x37')]!==_0xcb9e('0x38')){if(_0x199a7a[_0xcb9e('0x33')]){_0x2d387c[_0xcb9e('0x17')]({'type':_0x199a7a[_0xcb9e('0x13')],'app':'ExecIf','appdata':_0xcb9e('0x39'),'context':_0x199a7a[_0xcb9e('0x1a')],'exten':_0x199a7a[_0xcb9e('0x9')],'priority':_0xa03bf7[_0xcb9e('0x28')]+_0x3557eb[_0xcb9e('0x10')]+_0x5d681f++,'VoiceExtensionId':_0x199a7a['VoiceExtensionId']});_0x2d387c[_0xcb9e('0x17')]({'type':_0x199a7a[_0xcb9e('0x13')],'app':_0xcb9e('0x14'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x199a7a[_0xcb9e('0x1a')],'exten':_0x199a7a['exten'],'priority':_0xa03bf7[_0xcb9e('0x28')]+_0x3557eb[_0xcb9e('0x10')]+_0x5d681f++,'VoiceExtensionId':_0x199a7a['VoiceExtensionId']});}else{_0x2d387c[_0xcb9e('0x17')]({'type':_0x199a7a[_0xcb9e('0x13')],'app':_0xcb9e('0x20'),'appdata':_0xcb9e('0x3a'),'context':_0x199a7a[_0xcb9e('0x1a')],'exten':_0x199a7a['exten'],'priority':_0xa03bf7['length']+_0x3557eb[_0xcb9e('0x10')]+_0x5d681f++,'VoiceExtensionId':_0x199a7a[_0xcb9e('0x19')]});_0x2d387c['push']({'type':_0x199a7a[_0xcb9e('0x13')],'app':_0xcb9e('0x14'),'appdata':_0xcb9e('0x3b'),'context':_0x199a7a['context'],'exten':_0x199a7a[_0xcb9e('0x9')],'priority':_0xa03bf7[_0xcb9e('0x28')]+_0x3557eb['priority']+_0x5d681f++,'VoiceExtensionId':_0x199a7a[_0xcb9e('0x19')]});}}}for(var _0x2f47a5=0x0;_0x2f47a5<_0xa03bf7[_0xcb9e('0x28')];_0x2f47a5+=0x1){var _0x3c8757=_0x3557eb['priority']+_0xa03bf7[_0xcb9e('0x28')];var _0x64cfb7=_0x2f47a5===_0xa03bf7[_0xcb9e('0x28')]-0x1?_0x3557eb[_0xcb9e('0x10')]+_0x2d387c['length']+_0x42223b[_0xcb9e('0x28')]+0x2:_0x3557eb[_0xcb9e('0x10')]+_0x2f47a5+0x1;_0x2d387c[_0xcb9e('0x3c')](_0x2f47a5,0x0,{'type':_0x199a7a['type'],'app':'GotoIfTime','appdata':_0xa03bf7[_0x2f47a5]+'?'+_0x199a7a[_0xcb9e('0x1a')]+_0xcb9e('0x3d')+_0x3c8757+':'+_0x199a7a['context']+_0xcb9e('0x3d')+_0x64cfb7,'exten':_0x199a7a['exten'],'context':_0x199a7a[_0xcb9e('0x1a')],'priority':_0x3557eb[_0xcb9e('0x10')]+_0x2f47a5,'VoiceExtensionId':_0x261902[_0x3beaab][0x0][_0xcb9e('0x19')]});}_0x199a7a['priority']=_0x2d387c[_0xcb9e('0x28')]?_['last'](_0x2d387c)['priority']+0x1:_0x3557eb[_0xcb9e('0x10')];_0x3557eb[_0xcb9e('0x10')]=(_0x42223b['length']?_[_0xcb9e('0x3e')](_0x42223b)[_0xcb9e('0x10')]:_0x199a7a[_0xcb9e('0x10')])+0x1;_0x3557eb['extensions']=_[_0xcb9e('0x3f')](_0x3557eb[_0xcb9e('0x11')],_0x2d387c,[_0x199a7a],_0x42223b);}_0x3557eb['extensions'][_0xcb9e('0x17')]({'type':_0x261902[_0x3beaab][0x0][_0xcb9e('0x13')],'app':_0xcb9e('0x40'),'exten':_0x261902[_0x3beaab][0x0][_0xcb9e('0x9')],'context':_0x261902[_0x3beaab][0x0]['context'],'priority':_0x3557eb[_0xcb9e('0x10')],'VoiceExtensionId':_0x261902[_0x3beaab][0x0][_0xcb9e('0x19')]});_0x5077e4[_0xcb9e('0x17')](_0x261902[_0x3beaab][0x0][_0xcb9e('0x19')]);_0x2efb6b=_[_0xcb9e('0x3f')](_0x2efb6b,_0x3557eb[_0xcb9e('0x11')]);}}return _0x4cf55d[_0xcb9e('0x41')](function(_0x17368f){return _0x4cf55d[_0xcb9e('0x1')][_0xcb9e('0x4')][_0xcb9e('0x42')]({'where':{'VoiceExtensionId':{'$in':_0x5077e4}},'transaction':_0x17368f})[_0xcb9e('0x6')](function(_0x4920dd){return _0x4cf55d['models'][_0xcb9e('0x4')][_0xcb9e('0x43')](_[_0xcb9e('0x44')](_0x2efb6b,_0xcb9e('0x10')),{'transaction':_0x17368f});});});})[_0xcb9e('0x45')](function(_0x166609){console[_0xcb9e('0x46')](_0x166609);});}exports[_0xcb9e('0x47')]=rewrite;
\ No newline at end of file
+var _0xc018=['extensions','extension','find','type','Set','format','CDR(type)=%s','context','VoiceExtensionId','push','CDR(routeid)=','outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','length','createdAt','interval','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','indexOf','app','toLowerCase','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice',',${EXTEN},','last','concat','transaction','destroy','sortBy','catch','rewrite','util','Interval','findAll','then','intervals','models','VoiceExtension','IntervalId','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','queue','playback','hasOwnProperty','priority'];(function(_0x51c4c9,_0x292b15){var _0x3eb6d8=function(_0x4339d1){while(--_0x4339d1){_0x51c4c9['push'](_0x51c4c9['shift']());}};_0x3eb6d8(++_0x292b15);}(_0xc018,0x102));var _0x8c01=function(_0x3462ae,_0x225598){_0x3462ae=_0x3462ae-0x0;var _0x587dd6=_0xc018[_0x3462ae];return _0x587dd6;};'use strict';var _=require('lodash');var util=require(_0x8c01('0x0'));function rewrite(_0x46170a,_0x33af99){var _0x2677e8=this;return _0x46170a['models'][_0x8c01('0x1')][_0x8c01('0x2')]({'raw':!![]})[_0x8c01('0x3')](function(_0x52ec86){_0x2677e8[_0x8c01('0x4')]=_0x52ec86;return _0x46170a[_0x8c01('0x5')][_0x8c01('0x6')][_0x8c01('0x2')]({'where':{'IntervalId':_0x33af99[_0x8c01('0x7')]},'raw':!![]});})[_0x8c01('0x3')](function(_0x373018){return _0x46170a[_0x8c01('0x5')][_0x8c01('0x6')][_0x8c01('0x2')]({'where':{'exten':{'$in':_[_0x8c01('0x8')](_[_0x8c01('0x9')](_0x373018,_0x8c01('0xa')))}},'order':[{'raw':_0x8c01('0xb')}],'raw':!![]});})[_0x8c01('0x3')](function(_0x1a32f2){var _0x1d5fd8=_[_0x8c01('0xc')](_0x1a32f2,{'priority':'1'});var _0xd29a8c=_[_0x8c01('0xc')](_0x1a32f2,{'isApp':0x1});var _0xdc9144=_[_0x8c01('0xd')](_0xd29a8c,_0x8c01('0xa'));var _0x5e616f=[_0x8c01('0xe'),_0x8c01('0xf')];var _0x49856f=[];var _0x315eea=[];for(var _0x2e519b in _0xdc9144){if(_0xdc9144[_0x8c01('0x10')](_0x2e519b)){_0x2677e8[_0x8c01('0x11')]=0x2;_0x2677e8[_0x8c01('0x12')]=[];_0x2677e8[_0x8c01('0x13')]=_[_0x8c01('0x14')](_0x1d5fd8,{'exten':_0xdc9144[_0x2e519b][0x0][_0x8c01('0xa')]});_0x2677e8['extensions']['push']({'type':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x15')],'app':_0x8c01('0x16'),'appdata':util[_0x8c01('0x17')](_0x8c01('0x18'),_0xdc9144[_0x2e519b][0x0][_0x8c01('0x15')]),'context':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x19')],'exten':_0xdc9144[_0x2e519b][0x0][_0x8c01('0xa')],'priority':_0x2677e8[_0x8c01('0x11')]++,'VoiceExtensionId':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x1a')]});if(_0xdc9144[_0x2e519b][0x0][_0x8c01('0x15')]==='inbound'){_0x2677e8['extensions'][_0x8c01('0x1b')]({'type':_0xdc9144[_0x2e519b][0x0]['type'],'app':_0x8c01('0x16'),'appdata':_0x8c01('0x1c')+_0xdc9144[_0x2e519b][0x0][_0x8c01('0x1a')],'context':_0xdc9144[_0x2e519b][0x0]['context'],'exten':_0xdc9144[_0x2e519b][0x0][_0x8c01('0xa')],'priority':_0x2677e8[_0x8c01('0x11')]++,'VoiceExtensionId':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x1a')]});}else if(_0xdc9144[_0x2e519b][0x0]['type']===_0x8c01('0x1d')){if(_0x2677e8[_0x8c01('0x13')]){_0x2677e8[_0x8c01('0x12')][_0x8c01('0x1b')]({'type':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x15')],'app':_0x8c01('0x16'),'appdata':_0x8c01('0x1e')+(_0x2677e8[_0x8c01('0x13')][_0x8c01('0x1f')]?_0x8c01('0x20')+_0x2677e8[_0x8c01('0x13')]['cutdigits']+'}':_0x8c01('0x21')),'context':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x19')],'exten':_0xdc9144[_0x2e519b][0x0][_0x8c01('0xa')],'priority':_0x2677e8['priority']++,'VoiceExtensionId':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x1a')]});}_0x2677e8[_0x8c01('0x12')][_0x8c01('0x1b')]({'type':_0xdc9144[_0x2e519b][0x0]['type'],'app':_0x8c01('0x16'),'appdata':_0x8c01('0x1c')+_0xdc9144[_0x2e519b][0x0][_0x8c01('0x1a')],'context':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x19')],'exten':_0xdc9144[_0x2e519b][0x0][_0x8c01('0xa')],'priority':_0x2677e8['priority']++,'VoiceExtensionId':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x1a')]});var _0x24e2db=_0x2677e8['priority']++;_0x2677e8[_0x8c01('0x12')][_0x8c01('0x1b')]({'type':_0xdc9144[_0x2e519b][0x0]['type'],'app':_0x8c01('0x22'),'appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x24e2db+0x2)+'):Goto('+(_0x24e2db+0x1)+')','context':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x19')],'exten':_0xdc9144[_0x2e519b][0x0][_0x8c01('0xa')],'priority':_0x24e2db,'VoiceExtensionId':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x1a')]});if(_0x2677e8[_0x8c01('0x13')]){_0x2677e8['extensions'][_0x8c01('0x1b')]({'type':_0xdc9144[_0x2e519b][0x0]['type'],'app':'Set','appdata':_0x2677e8[_0x8c01('0x13')][_0x8c01('0x1f')]?_0x8c01('0x23')+_0x2677e8['extension'][_0x8c01('0x1f')]+'}':_0x8c01('0x24'),'context':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x19')],'exten':_0xdc9144[_0x2e519b][0x0]['exten'],'priority':_0x2677e8[_0x8c01('0x11')]++,'VoiceExtensionId':_0xdc9144[_0x2e519b][0x0]['VoiceExtensionId']});}_0x2677e8[_0x8c01('0x12')][_0x8c01('0x1b')]({'type':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x15')],'app':_0x8c01('0x16'),'appdata':_0x8c01('0x25')+_0xdc9144[_0x2e519b][0x0]['VoiceExtensionId'],'context':_0xdc9144[_0x2e519b][0x0]['context'],'exten':_0xdc9144[_0x2e519b][0x0][_0x8c01('0xa')],'priority':_0x2677e8['priority']++,'VoiceExtensionId':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x1a')]});if(_0x2677e8['extension']&&_0x2677e8[_0x8c01('0x13')]['hasOwnProperty']('recordingFormat')&&_0x2677e8['extension'][_0x8c01('0x26')]!==_0x8c01('0x27')){_0x2677e8[_0x8c01('0x12')][_0x8c01('0x1b')]({'type':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x15')],'app':_0x8c01('0x16'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0xdc9144[_0x2e519b][0x0]['context'],'exten':_0xdc9144[_0x2e519b][0x0][_0x8c01('0xa')],'priority':_0x2677e8[_0x8c01('0x11')]++,'VoiceExtensionId':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x1a')]});_0x2677e8[_0x8c01('0x12')]['push']({'type':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x15')],'app':_0x8c01('0x16'),'appdata':_0x8c01('0x28')+_0x2677e8['extension']['recordingFormat']||_0x8c01('0x29'),'context':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x19')],'exten':_0xdc9144[_0x2e519b][0x0][_0x8c01('0xa')],'priority':_0x2677e8[_0x8c01('0x11')]++,'VoiceExtensionId':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x1a')]});}}_0x2677e8[_0x8c01('0x12')][_0x8c01('0x1b')]({'type':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x15')],'app':_0x8c01('0x16'),'appdata':_0x8c01('0x2a'),'context':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x19')],'exten':_0xdc9144[_0x2e519b][0x0][_0x8c01('0xa')],'priority':_0x2677e8[_0x8c01('0x11')]++,'VoiceExtensionId':_0xdc9144[_0x2e519b][0x0]['VoiceExtensionId']});_0x2677e8[_0x8c01('0x12')][_0x8c01('0x1b')]({'type':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x15')],'app':'Set','appdata':_0x8c01('0x2b'),'context':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x19')],'exten':_0xdc9144[_0x2e519b][0x0][_0x8c01('0xa')],'priority':_0x2677e8[_0x8c01('0x11')]++,'VoiceExtensionId':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x1a')]});_0x2677e8[_0x8c01('0x12')][_0x8c01('0x1b')]({'type':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x15')],'app':_0x8c01('0x16'),'appdata':'MONITOR_OPTIONS=ab','context':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x19')],'exten':_0xdc9144[_0x2e519b][0x0]['exten'],'priority':_0x2677e8[_0x8c01('0x11')]++,'VoiceExtensionId':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x1a')]});for(var _0x4ea8ab=0x0,_0x184c41=0x0;_0x4ea8ab<_0xdc9144[_0x2e519b][_0x8c01('0x2c')];_0x4ea8ab+=0x1,_0x184c41=0x0){var _0x5dd129=_0xdc9144[_0x2e519b][_0x4ea8ab];if(_0x5dd129[_0x8c01('0x15')]){_0x5dd129['type']=_0x5dd129[_0x8c01('0x15')]['toLowerCase']();}var _0x2c807c=[];var _0x115b7a=[];delete _0x5dd129['id'];delete _0x5dd129[_0x8c01('0x2d')];delete _0x5dd129['updatedAt'];var _0x4a4689=_0x5dd129['interval']!=='*,*,*,*'?[_0x5dd129[_0x8c01('0x2e')]]:_0x5dd129[_0x8c01('0x7')]?_[_0x8c01('0x9')](_[_0x8c01('0xc')](_0x2677e8[_0x8c01('0x4')],{'IntervalId':_0x5dd129[_0x8c01('0x7')]}),'interval'):[];if(_0x5dd129['hasOwnProperty'](_0x8c01('0x2f'))){if(_0x5dd129['tag']&&_0x5dd129[_0x8c01('0x2f')]!=='--'){_0x2c807c[_0x8c01('0x1b')]({'type':_0x5dd129[_0x8c01('0x15')],'app':'Set','appdata':_0x8c01('0x30')+_0x5dd129[_0x8c01('0x2f')],'context':_0x5dd129[_0x8c01('0x19')],'exten':_0x5dd129['exten'],'priority':_0x4a4689[_0x8c01('0x2c')]+_0x2677e8[_0x8c01('0x11')]+_0x184c41++,'VoiceExtensionId':_0x5dd129[_0x8c01('0x1a')]});}}if(_0x5dd129[_0x8c01('0x15')]==='outbound'&&_0x5dd129['hasOwnProperty'](_0x8c01('0x31'))){if(_0x5dd129[_0x8c01('0x31')]){_0x2c807c[_0x8c01('0x1b')]({'type':_0x5dd129[_0x8c01('0x15')],'app':_0x8c01('0x22'),'appdata':_0x8c01('0x32')+_0x5dd129[_0x8c01('0x31')]+')','context':_0x5dd129[_0x8c01('0x19')],'exten':_0x5dd129[_0x8c01('0xa')],'priority':_0x4a4689[_0x8c01('0x2c')]+_0x2677e8[_0x8c01('0x11')]+_0x184c41++,'VoiceExtensionId':_0x5dd129['VoiceExtensionId']});}else{_0x2c807c[_0x8c01('0x1b')]({'type':_0x5dd129['type'],'app':'ExecIf','appdata':_0x8c01('0x33'),'context':_0x5dd129[_0x8c01('0x19')],'exten':_0x5dd129['exten'],'priority':_0x4a4689[_0x8c01('0x2c')]+_0x2677e8[_0x8c01('0x11')]+_0x184c41++,'VoiceExtensionId':_0x5dd129[_0x8c01('0x1a')]});}}if(_0x5dd129[_0x8c01('0x10')]('answer')){if(_0x5e616f[_0x8c01('0x34')](_0x5dd129[_0x8c01('0x35')][_0x8c01('0x36')]())>=0x0&&_0x5dd129[_0x8c01('0x37')]!==_0x8c01('0x38')){if(_0x5dd129['answer']){_0x2c807c['push']({'type':_0x5dd129['type'],'app':_0x8c01('0x22'),'appdata':_0x8c01('0x39'),'context':_0x5dd129['context'],'exten':_0x5dd129['exten'],'priority':_0x4a4689[_0x8c01('0x2c')]+_0x2677e8[_0x8c01('0x11')]+_0x184c41++,'VoiceExtensionId':_0x5dd129[_0x8c01('0x1a')]});_0x2c807c[_0x8c01('0x1b')]({'type':_0x5dd129[_0x8c01('0x15')],'app':_0x8c01('0x16'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x5dd129['context'],'exten':_0x5dd129['exten'],'priority':_0x4a4689[_0x8c01('0x2c')]+_0x2677e8['priority']+_0x184c41++,'VoiceExtensionId':_0x5dd129[_0x8c01('0x1a')]});}else{_0x2c807c[_0x8c01('0x1b')]({'type':_0x5dd129[_0x8c01('0x15')],'app':_0x8c01('0x22'),'appdata':_0x8c01('0x3a'),'context':_0x5dd129[_0x8c01('0x19')],'exten':_0x5dd129['exten'],'priority':_0x4a4689[_0x8c01('0x2c')]+_0x2677e8[_0x8c01('0x11')]+_0x184c41++,'VoiceExtensionId':_0x5dd129['VoiceExtensionId']});_0x2c807c['push']({'type':_0x5dd129[_0x8c01('0x15')],'app':_0x8c01('0x16'),'appdata':_0x8c01('0x3b'),'context':_0x5dd129['context'],'exten':_0x5dd129[_0x8c01('0xa')],'priority':_0x4a4689[_0x8c01('0x2c')]+_0x2677e8[_0x8c01('0x11')]+_0x184c41++,'VoiceExtensionId':_0x5dd129['VoiceExtensionId']});}}}for(var _0x339b95=0x0;_0x339b95<_0x4a4689[_0x8c01('0x2c')];_0x339b95+=0x1){var _0xe7e9a9=_0x2677e8[_0x8c01('0x11')]+_0x4a4689[_0x8c01('0x2c')];var _0x4d059f=_0x339b95===_0x4a4689[_0x8c01('0x2c')]-0x1?_0x2677e8['priority']+_0x2c807c[_0x8c01('0x2c')]+_0x115b7a[_0x8c01('0x2c')]+0x2:_0x2677e8[_0x8c01('0x11')]+_0x339b95+0x1;_0x2c807c[_0x8c01('0x3c')](_0x339b95,0x0,{'type':_0x5dd129['type'],'app':'GotoIfTime','appdata':_0x4a4689[_0x339b95]+'?'+_0x5dd129[_0x8c01('0x19')]+_0x8c01('0x3d')+_0xe7e9a9+':'+_0x5dd129['context']+_0x8c01('0x3d')+_0x4d059f,'exten':_0x5dd129[_0x8c01('0xa')],'context':_0x5dd129[_0x8c01('0x19')],'priority':_0x2677e8[_0x8c01('0x11')]+_0x339b95,'VoiceExtensionId':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x1a')]});}_0x5dd129[_0x8c01('0x11')]=_0x2c807c[_0x8c01('0x2c')]?_['last'](_0x2c807c)[_0x8c01('0x11')]+0x1:_0x2677e8[_0x8c01('0x11')];_0x2677e8['priority']=(_0x115b7a[_0x8c01('0x2c')]?_[_0x8c01('0x3e')](_0x115b7a)[_0x8c01('0x11')]:_0x5dd129[_0x8c01('0x11')])+0x1;_0x2677e8[_0x8c01('0x12')]=_[_0x8c01('0x3f')](_0x2677e8[_0x8c01('0x12')],_0x2c807c,[_0x5dd129],_0x115b7a);}_0x2677e8[_0x8c01('0x12')][_0x8c01('0x1b')]({'type':_0xdc9144[_0x2e519b][0x0]['type'],'app':'Hangup','exten':_0xdc9144[_0x2e519b][0x0][_0x8c01('0xa')],'context':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x19')],'priority':_0x2677e8[_0x8c01('0x11')],'VoiceExtensionId':_0xdc9144[_0x2e519b][0x0][_0x8c01('0x1a')]});_0x49856f[_0x8c01('0x1b')](_0xdc9144[_0x2e519b][0x0][_0x8c01('0x1a')]);_0x315eea=_[_0x8c01('0x3f')](_0x315eea,_0x2677e8['extensions']);}}return _0x46170a[_0x8c01('0x40')](function(_0x104c9e){return _0x46170a['models'][_0x8c01('0x6')][_0x8c01('0x41')]({'where':{'VoiceExtensionId':{'$in':_0x49856f}},'transaction':_0x104c9e})['then'](function(_0x12d2b2){return _0x46170a[_0x8c01('0x5')][_0x8c01('0x6')]['bulkCreate'](_[_0x8c01('0x42')](_0x315eea,_0x8c01('0x11')),{'transaction':_0x104c9e});});});})[_0x8c01('0x43')](function(_0xae0bc0){console['error'](_0xae0bc0);});}exports[_0x8c01('0x44')]=rewrite;
\ No newline at end of file
index 04d874e..83ecc98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe235=['CmList','Lists','then','always','sequelize','query','VoiceQueueId','catch','all','BlackLists','Campaign','findAll','get','CampaignId','onlyIfOpen','generalCheckHopper','Error\x20processing\x20rows\x20block:','stringify','finally','emit','contact:csv_','resume','unlinkSync','SIGINT','info','parse','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','lodash','papaparse','ioredis','../../../config/environment','../../../config/logger','api','redis','defaults','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','argv','undefined','Missing\x20filepath\x20parameter!','null','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','contact','index','test','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','map','message','hasOwnProperty','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','length','find','duplicate','Duplicate\x20Contact','CmContact','create','keys','push','pick','Error\x20while\x20creating\x20contact:\x20','cmContact','checkHopper','inspect','insert','into','cm_hopper','scheduledAt','ContactId','createdAt','updatedAt','field','NOW()','toString','from','cm_contacts','where','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','select','fromQuery','ListId\x20=\x20?','id\x20IN\x20?','str','cm_hopper_final','\x20=\x20?','VoiceQueue','outbound','dialCheckDuplicateType'];(function(_0x5401ae,_0x5e58ac){var _0x286068=function(_0x2cac88){while(--_0x2cac88){_0x5401ae['push'](_0x5401ae['shift']());}};_0x286068(++_0x5e58ac);}(_0xe235,0x1d1));var _0x5e23=function(_0x4ff2c7,_0x15bb34){_0x4ff2c7=_0x4ff2c7-0x0;var _0xd3a154=_0xe235[_0x4ff2c7];return _0xd3a154;};'use strict';var BPromise=require(_0x5e23('0x0'));var util=require('util');var _=require(_0x5e23('0x1'));var fs=require('fs');var squel=require('squel');var Papa=require(_0x5e23('0x2'));var Redis=require(_0x5e23('0x3'));var db=require('../../../mysqldb')['db'];var config=require(_0x5e23('0x4'));var logger=require(_0x5e23('0x5'))(_0x5e23('0x6'));config[_0x5e23('0x7')]=_[_0x5e23('0x8')](config[_0x5e23('0x7')],{'host':_0x5e23('0x9'),'port':0x18eb});var socket=require(_0x5e23('0xa'))(new Redis(config[_0x5e23('0x7')]));require(_0x5e23('0xb'))['register'](socket);try{if(!process[_0x5e23('0xc')][0x2]||process[_0x5e23('0xc')][0x2]===_0x5e23('0xd')||process[_0x5e23('0xc')][0x2]==='null'){throw new Error(_0x5e23('0xe'));}var FILEPATH=process[_0x5e23('0xc')][0x2];if(!process[_0x5e23('0xc')][0x3]||process[_0x5e23('0xc')][0x3]===_0x5e23('0xd')||process[_0x5e23('0xc')][0x3]===_0x5e23('0xf')||!process[_0x5e23('0xc')][0x4]||process['argv'][0x4]===_0x5e23('0xd')||process[_0x5e23('0xc')][0x4]===_0x5e23('0xf')){throw new Error(_0x5e23('0x10'));}var FIELDS=_[_0x5e23('0x11')](process[_0x5e23('0xc')][0x3][_0x5e23('0x12')](','),process['argv'][0x4]['split'](','));if(!process['argv'][0x5]||process[_0x5e23('0xc')][0x5]===_0x5e23('0xd')||process[_0x5e23('0xc')][0x5]===_0x5e23('0xf')){throw new Error(_0x5e23('0x13'));}var LISTID=process[_0x5e23('0xc')][0x5];var COMPANYID=process[_0x5e23('0xc')][0x6]&&process[_0x5e23('0xc')][0x6]!==_0x5e23('0xd')&&process['argv'][0x6]!==_0x5e23('0xf')?process[_0x5e23('0xc')][0x6]:null;var DUPLICATES=process[_0x5e23('0xc')][0x7]&&process[_0x5e23('0xc')][0x7]!=='undefined'&&process[_0x5e23('0xc')][0x7]!==_0x5e23('0xf')?process[_0x5e23('0xc')][0x7]:null;if(!process[_0x5e23('0xc')][0x8]||process[_0x5e23('0xc')][0x8]===_0x5e23('0xd')||process[_0x5e23('0xc')][0x8]===_0x5e23('0xf')){throw new Error(_0x5e23('0x14'));}var SOCKET_TIMESTAMP=process['argv'][0x8];}catch(_0x2103d2){logger[_0x5e23('0x15')](_0x2103d2);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(_0x1905fc,_0x49fa92,_0x5ac82a,_0x17da3){var _0x597e46={'message':_0x49fa92};_0x597e46[_0x1905fc]=!![];if(_0x5ac82a){_0x597e46[_0x5e23('0x16')]=_0x5ac82a;}if(_0x17da3){_0x597e46[_0x5e23('0x17')]=_0x17da3;}return _0x597e46;}function isEmail(_0x65de4f){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))*$/[_0x5e23('0x18')](_0x65de4f);}function checkRow(_0x460bd8,_0xb5a8b,_0x4ef8cb){return new BPromise(function(_0x249883,_0x2a1acd){if(_['isNil'](_0x460bd8)){return _0x2a1acd(handleCheckRowError(_0x5e23('0x15'),_0x5e23('0x19'),null,_0x4ef8cb));}if(_0x460bd8[_0x5e23('0x1a')]&&_0x460bd8['errors']['length']){var _0x4a412c=_[_0x5e23('0x1b')](_0x460bd8[_0x5e23('0x1a')],_0x5e23('0x1c'))['join'](';');return _0x2a1acd(handleCheckRowError(_0x5e23('0x15'),_0x4a412c,null,_0x4ef8cb));}var _0x4c5bb1={};for(var _0x2109ef in FIELDS){if(FIELDS[_0x5e23('0x1d')](_0x2109ef)&&FIELDS[_0x2109ef]){_0x4c5bb1[_0x2109ef]=_0x460bd8['data'][0x0][FIELDS[_0x2109ef]]||_0x460bd8['data'][0x0]['\ufeff'+FIELDS[_0x2109ef]];}}if(!_0x4c5bb1[_0x5e23('0x1e')]){return _0x2a1acd(handleCheckRowError(_0x5e23('0x15'),_0x5e23('0x1f'),null,_0x4ef8cb));}if(!_0x4c5bb1[_0x5e23('0x20')]){return _0x2a1acd(handleCheckRowError(_0x5e23('0x15'),_0x5e23('0x21'),null,_0x4ef8cb));}if(_0x4c5bb1[_0x5e23('0x22')]){var _0x529137=moment(_0x4c5bb1[_0x5e23('0x22')],_0x5e23('0x23'));if(!_0x529137['isValid']()){return _0x2a1acd(handleCheckRowError('error',_0x5e23('0x24'),null,_0x4ef8cb));}}if(_0x4c5bb1[_0x5e23('0x25')]){if(!isEmail(_0x4c5bb1['email'])){return _0x2a1acd(handleCheckRowError(_0x5e23('0x15'),_0x5e23('0x26'),null,_0x4ef8cb));}}_0x4c5bb1[_0x5e23('0x27')]=LISTID;_0x4c5bb1[_0x5e23('0x28')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x5e23('0x29')]&&_0xb5a8b){var _0x10d330={};for(var _0x450445=0x0,_0x14eb90=DUPLICATES['length'];_0x450445<_0x14eb90;_0x450445+=0x1){_0x10d330[DUPLICATES[_0x450445]]=_0x4c5bb1[DUPLICATES[_0x450445]];}var _0x5af5e1=_[_0x5e23('0x2a')](_0xb5a8b,_0x10d330);if(_0x5af5e1){return _0x2a1acd(handleCheckRowError(_0x5e23('0x2b'),_0x5e23('0x2c'),_0x5af5e1,_0x4ef8cb));}}return db[_0x5e23('0x2d')][_0x5e23('0x2e')](_0x4c5bb1,{'raw':!![],'hooks':![],'fields':_[_0x5e23('0x2f')](_0x4c5bb1)})['then'](function(_0x256e20){if(DUPLICATES&&DUPLICATES[_0x5e23('0x29')]&&_0xb5a8b){_0xb5a8b[_0x5e23('0x30')](_[_0x5e23('0x31')](_0x4c5bb1,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x256e20['id'];return _0x249883();})['catch'](function(_0x40763f){return _0x2a1acd(handleCheckRowError(_0x5e23('0x15'),_0x5e23('0x32')+(_0x40763f[_0x5e23('0x1c')]||JSON['stringify'](_0x40763f)),null,_0x4ef8cb));});});}function checkHopper(){function _0x32c8ec(){return function(_0x2ca3a0){logger[_0x5e23('0x15')](_0x5e23('0x33'),_0x5e23('0x34'),util[_0x5e23('0x35')](_0x2ca3a0,{'showHidden':![],'depth':null}));};}var _0x36c76b=function(_0x424a88,_0xbc5667){var _0x129ef5=squel[_0x5e23('0x36')]()[_0x5e23('0x37')](_0x5e23('0x38'))['fromQuery']([_0x5e23('0x20'),_0x5e23('0x39'),_0x5e23('0x3a'),_0x5e23('0x27'),_0xbc5667,_0x5e23('0x3b'),_0x5e23('0x3c')],squel['select']()[_0x5e23('0x3d')]('phone',_0x5e23('0x20'))['field'](_0x5e23('0x3e'),_0x5e23('0x39'))[_0x5e23('0x3d')]('id',_0x5e23('0x3a'))[_0x5e23('0x3d')](LISTID[_0x5e23('0x3f')](),'ListId')[_0x5e23('0x3d')](_0x424a88['id']['toString'](),_0xbc5667)[_0x5e23('0x3d')](_0x5e23('0x3e'),_0x5e23('0x3b'))[_0x5e23('0x3d')](_0x5e23('0x3e'),'updatedAt')[_0x5e23('0x40')](_0x5e23('0x41'))[_0x5e23('0x42')](_0x5e23('0x43'))[_0x5e23('0x42')]('ListId\x20=\x20?',LISTID[_0x5e23('0x3f')]())[_0x5e23('0x42')](_0x5e23('0x44'))[_0x5e23('0x42')](_0x5e23('0x45'),squel[_0x5e23('0x46')]()['field'](_0x5e23('0x20'))[_0x5e23('0x40')]('cm_hopper')[_0x5e23('0x42')](_0xbc5667+'\x20=\x20?',_0x424a88['id'][_0x5e23('0x3f')]())))[_0x5e23('0x3f')]();return _0x129ef5;};var _0x2efe65=function(_0x15bb5,_0x1291b6){var _0x24e7c2=squel[_0x5e23('0x36')]()[_0x5e23('0x37')](_0x5e23('0x38'))[_0x5e23('0x47')](['phone','scheduledAt','ContactId',_0x5e23('0x27'),_0x1291b6,'createdAt',_0x5e23('0x3c')],squel['select']()['field'](_0x5e23('0x20'),_0x5e23('0x20'))['field'](_0x5e23('0x3e'),_0x5e23('0x39'))['field']('id',_0x5e23('0x3a'))[_0x5e23('0x3d')](LISTID['toString'](),_0x5e23('0x27'))[_0x5e23('0x3d')](_0x15bb5['id'][_0x5e23('0x3f')](),_0x1291b6)['field']('NOW()','createdAt')[_0x5e23('0x3d')](_0x5e23('0x3e'),_0x5e23('0x3c'))[_0x5e23('0x40')](_0x5e23('0x41'))[_0x5e23('0x42')](_0x5e23('0x43'))[_0x5e23('0x42')](_0x5e23('0x48'),LISTID[_0x5e23('0x3f')]())[_0x5e23('0x42')](_0x5e23('0x49'),squel[_0x5e23('0x4a')](hopperContacts))[_0x5e23('0x42')](_0x5e23('0x44'))[_0x5e23('0x42')](_0x5e23('0x45'),squel['select']()['field']('calleridnum')[_0x5e23('0x40')](_0x5e23('0x4b'))[_0x5e23('0x42')](_0x1291b6+_0x5e23('0x4c'),_0x15bb5['id']['toString']()))[_0x5e23('0x42')](_0x5e23('0x45'),squel[_0x5e23('0x46')]()[_0x5e23('0x3d')](_0x5e23('0x20'))['from']('cm_hopper')[_0x5e23('0x42')](_0x1291b6+_0x5e23('0x4c'),_0x15bb5['id'][_0x5e23('0x3f')]())))[_0x5e23('0x3f')]();return _0x24e7c2;};function _0x20ef4a(_0x318b89,_0x351940){var _0x368f4d=squel[_0x5e23('0x36')]()[_0x5e23('0x37')]('cm_hopper')[_0x5e23('0x47')]([_0x5e23('0x20'),_0x5e23('0x39'),_0x5e23('0x3a'),_0x5e23('0x27'),_0x351940,_0x5e23('0x3b'),'updatedAt'],squel[_0x5e23('0x46')]()[_0x5e23('0x3d')](_0x5e23('0x20'),_0x5e23('0x20'))[_0x5e23('0x3d')](_0x5e23('0x3e'),_0x5e23('0x39'))[_0x5e23('0x3d')]('id','ContactId')[_0x5e23('0x3d')](LISTID[_0x5e23('0x3f')](),_0x5e23('0x27'))['field'](_0x318b89['id'][_0x5e23('0x3f')](),_0x351940)[_0x5e23('0x3d')]('NOW()',_0x5e23('0x3b'))[_0x5e23('0x3d')](_0x5e23('0x3e'),_0x5e23('0x3c'))['from'](_0x5e23('0x41'))[_0x5e23('0x42')](_0x5e23('0x43'))[_0x5e23('0x42')](_0x5e23('0x48'),LISTID[_0x5e23('0x3f')]())['where']('id\x20IN\x20?',squel['str'](hopperContacts))['where'](_0x5e23('0x44')))[_0x5e23('0x3f')]();return _0x368f4d;}function _0x19212b(_0x25d879,_0xffcc5c){var _0x3abd3f=squel['insert']()[_0x5e23('0x37')]('cm_hopper_black')['fromQuery']([_0x5e23('0x20'),_0x5e23('0x3a'),'ListId',_0xffcc5c,_0x5e23('0x3b'),_0x5e23('0x3c')],squel['select']()[_0x5e23('0x3d')](_0x5e23('0x20'),_0x5e23('0x20'))[_0x5e23('0x3d')]('id','ContactId')[_0x5e23('0x3d')](LISTID[_0x5e23('0x3f')](),_0x5e23('0x27'))[_0x5e23('0x3d')](_0x25d879['id']['toString'](),_0xffcc5c)['field'](_0x5e23('0x3e'),'createdAt')[_0x5e23('0x3d')](_0x5e23('0x3e'),_0x5e23('0x3c'))[_0x5e23('0x40')](_0x5e23('0x41'))['where'](_0x5e23('0x43'))[_0x5e23('0x42')]('ListId\x20=\x20?',LISTID['toString']())[_0x5e23('0x42')](_0x5e23('0x49'),squel['str'](hopperContacts))['where']('phone\x20IS\x20NOT\x20NULL'))[_0x5e23('0x3f')]();return _0x3abd3f;}return db[_0x5e23('0x4d')]['findAll']({'where':{'type':_0x5e23('0x4e')},'attributes':['id',_0x5e23('0x4f')],'include':[{'model':db[_0x5e23('0x50')],'as':_0x5e23('0x51'),'where':{'id':LISTID}}]})[_0x5e23('0x52')](function(_0x5c925a){var _0x1a2f97=[];if(_0x5c925a){var _0x258b61;for(var _0x4221d4=0x0,_0xeebab;_0x4221d4<_0x5c925a[_0x5e23('0x29')];_0x4221d4+=0x1){_0xeebab=_0x5c925a[_0x4221d4]['get']({'plain':!![]});switch(_0xeebab[_0x5e23('0x4f')]){case _0x5e23('0x53'):_0x1a2f97[_0x5e23('0x30')](db[_0x5e23('0x54')][_0x5e23('0x55')](_0x2efe65(_0xeebab,_0x5e23('0x56')))['then'](function(){})[_0x5e23('0x57')](_0x32c8ec()));break;case'onlyIfOpen':_0x1a2f97['push'](db['sequelize']['query'](_0x36c76b(_0xeebab,'VoiceQueueId'))['then'](function(){})['catch'](_0x32c8ec()));break;default:_0x1a2f97[_0x5e23('0x30')](db[_0x5e23('0x54')][_0x5e23('0x55')](_0x20ef4a(_0xeebab,_0x5e23('0x56')))[_0x5e23('0x52')](function(){})['catch'](_0x32c8ec()));}}}return _0x1a2f97;})[_0x5e23('0x58')]()[_0x5e23('0x52')](function(){return db[_0x5e23('0x4d')]['findAll']({'where':{'type':_0x5e23('0x4e')},'attributes':['id'],'include':[{'model':db[_0x5e23('0x50')],'as':_0x5e23('0x59'),'where':{'id':LISTID}}]})[_0x5e23('0x52')](function(_0x2d3fda){var _0x2c8676=[];if(_0x2d3fda){var _0x5d16ad;for(var _0x59870a=0x0,_0x283b3e;_0x59870a<_0x2d3fda['length'];_0x59870a+=0x1){_0x283b3e=_0x2d3fda[_0x59870a]['get']({'plain':!![]});_0x2c8676[_0x5e23('0x30')](db['sequelize'][_0x5e23('0x55')](_0x19212b(_0x283b3e,_0x5e23('0x56')))[_0x5e23('0x52')](function(){})[_0x5e23('0x57')](_0x32c8ec()));}}return _0x2c8676;})[_0x5e23('0x58')]();})[_0x5e23('0x52')](function(){return db[_0x5e23('0x5a')][_0x5e23('0x5b')]({'attributes':['id',_0x5e23('0x4f')],'include':[{'model':db[_0x5e23('0x50')],'as':_0x5e23('0x51'),'where':{'id':LISTID}}]})[_0x5e23('0x52')](function(_0x21a1a1){var _0xc0a728=[];if(_0x21a1a1){for(var _0x39a72e=0x0,_0x24b540;_0x39a72e<_0x21a1a1[_0x5e23('0x29')];_0x39a72e+=0x1){_0x24b540=_0x21a1a1[_0x39a72e][_0x5e23('0x5c')]({'plain':!![]});switch(_0x24b540[_0x5e23('0x4f')]){case _0x5e23('0x53'):_0xc0a728[_0x5e23('0x30')](db[_0x5e23('0x54')][_0x5e23('0x55')](_0x2efe65(_0x24b540,_0x5e23('0x5d')))[_0x5e23('0x52')](function(){})[_0x5e23('0x57')](_0x32c8ec()));break;case _0x5e23('0x5e'):_0xc0a728[_0x5e23('0x30')](db[_0x5e23('0x54')][_0x5e23('0x55')](_0x36c76b(_0x24b540,_0x5e23('0x5d')))[_0x5e23('0x52')](function(){})['catch'](_0x32c8ec()));break;default:_0xc0a728[_0x5e23('0x30')](db['sequelize'][_0x5e23('0x55')](_0x20ef4a(_0x24b540,_0x5e23('0x5d')))[_0x5e23('0x52')](function(){})[_0x5e23('0x57')](_0x32c8ec()));}}}return _0xc0a728;})[_0x5e23('0x58')]();})[_0x5e23('0x52')](function(){return db[_0x5e23('0x5a')][_0x5e23('0x5b')]({'attributes':['id'],'include':[{'model':db[_0x5e23('0x50')],'as':_0x5e23('0x59'),'where':{'id':LISTID}}]})[_0x5e23('0x52')](function(_0x24c6eb){var _0x491ab1=[];if(_0x24c6eb){for(var _0x803892=0x0,_0x68225b;_0x803892<_0x24c6eb[_0x5e23('0x29')];_0x803892+=0x1){_0x68225b=_0x24c6eb[_0x803892][_0x5e23('0x5c')]({'plain':!![]});_0x491ab1[_0x5e23('0x30')](db[_0x5e23('0x54')][_0x5e23('0x55')](_0x19212b(_0x68225b,_0x5e23('0x5d')))[_0x5e23('0x52')](function(){})['catch'](_0x32c8ec()));}}return _0x491ab1;})['all']();})[_0x5e23('0x57')](function(_0x375440){logger[_0x5e23('0x15')]('cmContact,\x20%s,\x20%s',_0x5e23('0x5f'),_0x375440[_0x5e23('0x1c')]);});}var processPromises=function(_0x251c7a){return BPromise[_0x5e23('0x58')](promises)[_0x5e23('0x52')](function(_0x5556c5){})[_0x5e23('0x57')](function(_0x2824d2){logger[_0x5e23('0x15')](_0x5e23('0x60'),JSON[_0x5e23('0x61')](_0x2824d2));})[_0x5e23('0x62')](function(){socket[_0x5e23('0x63')](_0x5e23('0x64')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x251c7a){return _0x251c7a[_0x5e23('0x65')]();}});};var endCsv=function(){return BPromise['resolve']()['then'](function(){if(hopperContacts){return checkHopper();}})[_0x5e23('0x52')](function(){socket[_0x5e23('0x63')](_0x5e23('0x64')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x5e23('0x66')](FILEPATH);}catch(_0x4751c9){logger['error']('Unable\x20to\x20delete\x20temp\x20file:',JSON[_0x5e23('0x61')](_0x4751c9));}finally{process['exit'](0x0);}});};process['on'](_0x5e23('0x67'),function(){logger[_0x5e23('0x68')]('CSV\x20import\x20process\x20stopped!');endCsv();});function main(){return BPromise['resolve']()['then'](function(){if(DUPLICATES){DUPLICATES=DUPLICATES['split'](',');return db['CmContact'][_0x5e23('0x5b')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x5e23('0x52')](function(_0xb6790d){var _0x4030fd=fs['createReadStream'](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x5e23('0x69')](_0x4030fd,{'header':!![],'skipEmptyLines':!![],'step':function(_0x224598,_0xc8513d){total+=0x1;var _0x266b63=total;promises[_0x5e23('0x30')](checkRow(_0x224598,_0xb6790d,_0x266b63)[_0x5e23('0x52')](function(){success+=0x1;})[_0x5e23('0x57')](function(_0x57b385){if(_0x57b385[_0x5e23('0x15')]){errors+=0x1;delete _0x57b385['error'];}else if(_0x57b385[_0x5e23('0x2b')]){duplicates+=0x1;delete _0x57b385['duplicate'];}rows[_0x5e23('0x30')](_0x57b385);}));if(total%0xc8===0x0){_0xc8513d['pause']();return processPromises(_0xc8513d);}},'complete':function(){return processPromises()[_0x5e23('0x52')](function(){logger['info'](_0x5e23('0x6a'));endCsv();});},'error':function(_0x3c11b0,_0x4e5abb){logger['info'](_0x5e23('0x6b'),JSON[_0x5e23('0x61')](_0x3c11b0));endCsv();}});})[_0x5e23('0x57')](function(_0x320814){logger[_0x5e23('0x15')](_0x5e23('0x6c'),JSON[_0x5e23('0x61')](_0x320814));});}main();
\ No newline at end of file
+var _0x3392=['phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','select','updatedAt','ListId\x20=\x20?','id\x20IN\x20?','cm_hopper_final','\x20=\x20?','into','str','cm_hopper_black','VoiceQueue','findAll','Lists','sequelize','query','VoiceQueueId','all','CmList','BlackLists','get','dialCheckDuplicateType','always','onlyIfOpen','CampaignId','cmContact,\x20%s,\x20%s','Error\x20processing\x20rows\x20block:','finally','emit','contact:csv_','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','squel','ioredis','../../../mysqldb','defaults','redis','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','undefined','Missing\x20binding\x20parameters!','split','Missing\x20ListId\x20parameter!','null','Missing\x20socket_timestamp\x20parameter!','error','contact','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','map','join','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','length','find','duplicate','Duplicate\x20Contact','CmContact','create','keys','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','message','stringify','checkHopper','insert','cm_hopper','fromQuery','scheduledAt','ContactId','createdAt','field','NOW()','toString','from','cm_contacts','where','deletedAt\x20IS\x20NULL'];(function(_0x209e75,_0x563d10){var _0x414786=function(_0x58be5a){while(--_0x58be5a){_0x209e75['push'](_0x209e75['shift']());}};_0x414786(++_0x563d10);}(_0x3392,0x1d7));var _0x2339=function(_0x1480af,_0x99bc5f){_0x1480af=_0x1480af-0x0;var _0x5ae447=_0x3392[_0x1480af];return _0x5ae447;};'use strict';var BPromise=require(_0x2339('0x0'));var util=require(_0x2339('0x1'));var _=require(_0x2339('0x2'));var fs=require('fs');var squel=require(_0x2339('0x3'));var Papa=require('papaparse');var Redis=require(_0x2339('0x4'));var db=require(_0x2339('0x5'))['db'];var config=require('../../../config/environment');var logger=require('../../../config/logger')('api');config['redis']=_[_0x2339('0x6')](config[_0x2339('0x7')],{'host':'localhost','port':0x18eb});var socket=require(_0x2339('0x8'))(new Redis(config[_0x2339('0x7')]));require(_0x2339('0x9'))[_0x2339('0xa')](socket);try{if(!process[_0x2339('0xb')][0x2]||process[_0x2339('0xb')][0x2]===_0x2339('0xc')||process[_0x2339('0xb')][0x2]==='null'){throw new Error('Missing\x20filepath\x20parameter!');}var FILEPATH=process[_0x2339('0xb')][0x2];if(!process[_0x2339('0xb')][0x3]||process[_0x2339('0xb')][0x3]===_0x2339('0xc')||process[_0x2339('0xb')][0x3]==='null'||!process[_0x2339('0xb')][0x4]||process[_0x2339('0xb')][0x4]===_0x2339('0xc')||process['argv'][0x4]==='null'){throw new Error(_0x2339('0xd'));}var FIELDS=_['zipObject'](process[_0x2339('0xb')][0x3][_0x2339('0xe')](','),process[_0x2339('0xb')][0x4][_0x2339('0xe')](','));if(!process['argv'][0x5]||process[_0x2339('0xb')][0x5]===_0x2339('0xc')||process['argv'][0x5]==='null'){throw new Error(_0x2339('0xf'));}var LISTID=process[_0x2339('0xb')][0x5];var COMPANYID=process[_0x2339('0xb')][0x6]&&process[_0x2339('0xb')][0x6]!==_0x2339('0xc')&&process['argv'][0x6]!==_0x2339('0x10')?process['argv'][0x6]:null;var DUPLICATES=process[_0x2339('0xb')][0x7]&&process[_0x2339('0xb')][0x7]!==_0x2339('0xc')&&process[_0x2339('0xb')][0x7]!==_0x2339('0x10')?process[_0x2339('0xb')][0x7]:null;if(!process[_0x2339('0xb')][0x8]||process['argv'][0x8]===_0x2339('0xc')||process['argv'][0x8]===_0x2339('0x10')){throw new Error(_0x2339('0x11'));}var SOCKET_TIMESTAMP=process[_0x2339('0xb')][0x8];}catch(_0x4fa5e2){logger[_0x2339('0x12')](_0x4fa5e2);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(_0x2f0bcd,_0xb8efd2,_0x375e42,_0x42b0ca){var _0x4ba4db={'message':_0xb8efd2};_0x4ba4db[_0x2f0bcd]=!![];if(_0x375e42){_0x4ba4db[_0x2339('0x13')]=_0x375e42;}if(_0x42b0ca){_0x4ba4db['index']=_0x42b0ca;}return _0x4ba4db;}function isEmail(_0xb11826){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'](_0xb11826);}function checkRow(_0x1651ea,_0x4cd3cc,_0x3e1cab){return new BPromise(function(_0x3c1ee8,_0x1ea292){if(_['isNil'](_0x1651ea)){return _0x1ea292(handleCheckRowError('error',_0x2339('0x14'),null,_0x3e1cab));}if(_0x1651ea[_0x2339('0x15')]&&_0x1651ea[_0x2339('0x15')]['length']){var _0xd77502=_[_0x2339('0x16')](_0x1651ea[_0x2339('0x15')],'message')[_0x2339('0x17')](';');return _0x1ea292(handleCheckRowError(_0x2339('0x12'),_0xd77502,null,_0x3e1cab));}var _0x253bea={};for(var _0x3e3f3c in FIELDS){if(FIELDS[_0x2339('0x18')](_0x3e3f3c)&&FIELDS[_0x3e3f3c]){_0x253bea[_0x3e3f3c]=_0x1651ea[_0x2339('0x19')][0x0][FIELDS[_0x3e3f3c]]||_0x1651ea['data'][0x0]['\ufeff'+FIELDS[_0x3e3f3c]];}}if(!_0x253bea[_0x2339('0x1a')]){return _0x1ea292(handleCheckRowError(_0x2339('0x12'),_0x2339('0x1b'),null,_0x3e1cab));}if(!_0x253bea[_0x2339('0x1c')]){return _0x1ea292(handleCheckRowError(_0x2339('0x12'),_0x2339('0x1d'),null,_0x3e1cab));}if(_0x253bea[_0x2339('0x1e')]){var _0x18a486=moment(_0x253bea[_0x2339('0x1e')],'YYYY-MM-DD');if(!_0x18a486[_0x2339('0x1f')]()){return _0x1ea292(handleCheckRowError(_0x2339('0x12'),_0x2339('0x20'),null,_0x3e1cab));}}if(_0x253bea[_0x2339('0x21')]){if(!isEmail(_0x253bea[_0x2339('0x21')])){return _0x1ea292(handleCheckRowError(_0x2339('0x12'),_0x2339('0x22'),null,_0x3e1cab));}}_0x253bea[_0x2339('0x23')]=LISTID;_0x253bea['CompanyId']=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x2339('0x24')]&&_0x4cd3cc){var _0x1a5d45={};for(var _0x15f116=0x0,_0xa07883=DUPLICATES['length'];_0x15f116<_0xa07883;_0x15f116+=0x1){_0x1a5d45[DUPLICATES[_0x15f116]]=_0x253bea[DUPLICATES[_0x15f116]];}var _0x5d8b50=_[_0x2339('0x25')](_0x4cd3cc,_0x1a5d45);if(_0x5d8b50){return _0x1ea292(handleCheckRowError(_0x2339('0x26'),_0x2339('0x27'),_0x5d8b50,_0x3e1cab));}}return db[_0x2339('0x28')][_0x2339('0x29')](_0x253bea,{'raw':!![],'hooks':![],'fields':_[_0x2339('0x2a')](_0x253bea)})[_0x2339('0x2b')](function(_0x5761f4){if(DUPLICATES&&DUPLICATES[_0x2339('0x24')]&&_0x4cd3cc){_0x4cd3cc[_0x2339('0x2c')](_[_0x2339('0x2d')](_0x253bea,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x5761f4['id'];return _0x3c1ee8();})[_0x2339('0x2e')](function(_0xb77cee){return _0x1ea292(handleCheckRowError('error',_0x2339('0x2f')+(_0xb77cee[_0x2339('0x30')]||JSON[_0x2339('0x31')](_0xb77cee)),null,_0x3e1cab));});});}function checkHopper(){function _0x379408(){return function(_0x29ce8){logger[_0x2339('0x12')]('cmContact',_0x2339('0x32'),util['inspect'](_0x29ce8,{'showHidden':![],'depth':null}));};}var _0x875c04=function(_0x1e3677,_0x567511){var _0x38c16b=squel[_0x2339('0x33')]()['into'](_0x2339('0x34'))[_0x2339('0x35')]([_0x2339('0x1c'),_0x2339('0x36'),_0x2339('0x37'),_0x2339('0x23'),_0x567511,_0x2339('0x38'),'updatedAt'],squel['select']()[_0x2339('0x39')](_0x2339('0x1c'),_0x2339('0x1c'))['field'](_0x2339('0x3a'),_0x2339('0x36'))[_0x2339('0x39')]('id',_0x2339('0x37'))[_0x2339('0x39')](LISTID[_0x2339('0x3b')](),_0x2339('0x23'))[_0x2339('0x39')](_0x1e3677['id'][_0x2339('0x3b')](),_0x567511)[_0x2339('0x39')]('NOW()','createdAt')[_0x2339('0x39')]('NOW()','updatedAt')[_0x2339('0x3c')](_0x2339('0x3d'))[_0x2339('0x3e')](_0x2339('0x3f'))['where']('ListId\x20=\x20?',LISTID['toString']())[_0x2339('0x3e')](_0x2339('0x40'))[_0x2339('0x3e')](_0x2339('0x41'),squel[_0x2339('0x42')]()['field'](_0x2339('0x1c'))['from'](_0x2339('0x34'))['where'](_0x567511+'\x20=\x20?',_0x1e3677['id'][_0x2339('0x3b')]())))[_0x2339('0x3b')]();return _0x38c16b;};var _0x2d43dc=function(_0x4a4819,_0x5685cc){var _0x512a9c=squel['insert']()['into'](_0x2339('0x34'))[_0x2339('0x35')]([_0x2339('0x1c'),_0x2339('0x36'),_0x2339('0x37'),'ListId',_0x5685cc,_0x2339('0x38'),_0x2339('0x43')],squel['select']()['field'](_0x2339('0x1c'),_0x2339('0x1c'))[_0x2339('0x39')](_0x2339('0x3a'),_0x2339('0x36'))[_0x2339('0x39')]('id',_0x2339('0x37'))[_0x2339('0x39')](LISTID['toString'](),_0x2339('0x23'))[_0x2339('0x39')](_0x4a4819['id'][_0x2339('0x3b')](),_0x5685cc)[_0x2339('0x39')]('NOW()',_0x2339('0x38'))[_0x2339('0x39')]('NOW()',_0x2339('0x43'))[_0x2339('0x3c')](_0x2339('0x3d'))[_0x2339('0x3e')](_0x2339('0x3f'))[_0x2339('0x3e')](_0x2339('0x44'),LISTID[_0x2339('0x3b')]())['where'](_0x2339('0x45'),squel['str'](hopperContacts))[_0x2339('0x3e')](_0x2339('0x40'))['where']('phone\x20NOT\x20IN\x20(?)',squel[_0x2339('0x42')]()[_0x2339('0x39')]('calleridnum')[_0x2339('0x3c')](_0x2339('0x46'))[_0x2339('0x3e')](_0x5685cc+_0x2339('0x47'),_0x4a4819['id'][_0x2339('0x3b')]()))[_0x2339('0x3e')]('phone\x20NOT\x20IN\x20(?)',squel[_0x2339('0x42')]()['field'](_0x2339('0x1c'))[_0x2339('0x3c')](_0x2339('0x34'))['where'](_0x5685cc+'\x20=\x20?',_0x4a4819['id']['toString']())))['toString']();return _0x512a9c;};function _0x5964b5(_0x5bad97,_0x420473){var _0x22de1c=squel[_0x2339('0x33')]()[_0x2339('0x48')](_0x2339('0x34'))[_0x2339('0x35')]([_0x2339('0x1c'),_0x2339('0x36'),'ContactId',_0x2339('0x23'),_0x420473,_0x2339('0x38'),_0x2339('0x43')],squel['select']()[_0x2339('0x39')](_0x2339('0x1c'),'phone')[_0x2339('0x39')](_0x2339('0x3a'),_0x2339('0x36'))[_0x2339('0x39')]('id',_0x2339('0x37'))[_0x2339('0x39')](LISTID[_0x2339('0x3b')](),_0x2339('0x23'))[_0x2339('0x39')](_0x5bad97['id'][_0x2339('0x3b')](),_0x420473)[_0x2339('0x39')](_0x2339('0x3a'),_0x2339('0x38'))[_0x2339('0x39')]('NOW()',_0x2339('0x43'))[_0x2339('0x3c')](_0x2339('0x3d'))[_0x2339('0x3e')]('deletedAt\x20IS\x20NULL')[_0x2339('0x3e')](_0x2339('0x44'),LISTID[_0x2339('0x3b')]())['where'](_0x2339('0x45'),squel[_0x2339('0x49')](hopperContacts))[_0x2339('0x3e')]('phone\x20IS\x20NOT\x20NULL'))[_0x2339('0x3b')]();return _0x22de1c;}function _0x306752(_0x51c326,_0x56e686){var _0x540f52=squel['insert']()[_0x2339('0x48')](_0x2339('0x4a'))[_0x2339('0x35')](['phone',_0x2339('0x37'),_0x2339('0x23'),_0x56e686,_0x2339('0x38'),_0x2339('0x43')],squel[_0x2339('0x42')]()[_0x2339('0x39')]('phone',_0x2339('0x1c'))['field']('id','ContactId')[_0x2339('0x39')](LISTID[_0x2339('0x3b')](),_0x2339('0x23'))['field'](_0x51c326['id'][_0x2339('0x3b')](),_0x56e686)[_0x2339('0x39')](_0x2339('0x3a'),_0x2339('0x38'))['field']('NOW()','updatedAt')[_0x2339('0x3c')](_0x2339('0x3d'))['where'](_0x2339('0x3f'))[_0x2339('0x3e')](_0x2339('0x44'),LISTID[_0x2339('0x3b')]())['where'](_0x2339('0x45'),squel[_0x2339('0x49')](hopperContacts))[_0x2339('0x3e')](_0x2339('0x40')))['toString']();return _0x540f52;}return db[_0x2339('0x4b')][_0x2339('0x4c')]({'where':{'type':'outbound'},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db['CmList'],'as':_0x2339('0x4d'),'where':{'id':LISTID}}]})['then'](function(_0x40a338){var _0x512364=[];if(_0x40a338){var _0xe6e639;for(var _0x6487f0=0x0,_0x34fb44;_0x6487f0<_0x40a338[_0x2339('0x24')];_0x6487f0+=0x1){_0x34fb44=_0x40a338[_0x6487f0]['get']({'plain':!![]});switch(_0x34fb44['dialCheckDuplicateType']){case'always':_0x512364['push'](db[_0x2339('0x4e')][_0x2339('0x4f')](_0x2d43dc(_0x34fb44,_0x2339('0x50')))[_0x2339('0x2b')](function(){})[_0x2339('0x2e')](_0x379408()));break;case'onlyIfOpen':_0x512364[_0x2339('0x2c')](db[_0x2339('0x4e')][_0x2339('0x4f')](_0x875c04(_0x34fb44,'VoiceQueueId'))['then'](function(){})['catch'](_0x379408()));break;default:_0x512364[_0x2339('0x2c')](db[_0x2339('0x4e')][_0x2339('0x4f')](_0x5964b5(_0x34fb44,_0x2339('0x50')))[_0x2339('0x2b')](function(){})[_0x2339('0x2e')](_0x379408()));}}}return _0x512364;})[_0x2339('0x51')]()[_0x2339('0x2b')](function(){return db[_0x2339('0x4b')]['findAll']({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':db[_0x2339('0x52')],'as':_0x2339('0x53'),'where':{'id':LISTID}}]})[_0x2339('0x2b')](function(_0x287280){var _0x4dbfee=[];if(_0x287280){var _0x2c6e54;for(var _0x2bc815=0x0,_0x3d973a;_0x2bc815<_0x287280[_0x2339('0x24')];_0x2bc815+=0x1){_0x3d973a=_0x287280[_0x2bc815][_0x2339('0x54')]({'plain':!![]});_0x4dbfee['push'](db[_0x2339('0x4e')][_0x2339('0x4f')](_0x306752(_0x3d973a,_0x2339('0x50')))[_0x2339('0x2b')](function(){})['catch'](_0x379408()));}}return _0x4dbfee;})['all']();})[_0x2339('0x2b')](function(){return db['Campaign'][_0x2339('0x4c')]({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0x2339('0x52')],'as':_0x2339('0x4d'),'where':{'id':LISTID}}]})['then'](function(_0x34dc69){var _0xa47606=[];if(_0x34dc69){for(var _0x47e6ac=0x0,_0x16b7e9;_0x47e6ac<_0x34dc69['length'];_0x47e6ac+=0x1){_0x16b7e9=_0x34dc69[_0x47e6ac][_0x2339('0x54')]({'plain':!![]});switch(_0x16b7e9[_0x2339('0x55')]){case _0x2339('0x56'):_0xa47606['push'](db['sequelize'][_0x2339('0x4f')](_0x2d43dc(_0x16b7e9,'CampaignId'))['then'](function(){})[_0x2339('0x2e')](_0x379408()));break;case _0x2339('0x57'):_0xa47606[_0x2339('0x2c')](db[_0x2339('0x4e')][_0x2339('0x4f')](_0x875c04(_0x16b7e9,_0x2339('0x58')))[_0x2339('0x2b')](function(){})[_0x2339('0x2e')](_0x379408()));break;default:_0xa47606['push'](db[_0x2339('0x4e')]['query'](_0x5964b5(_0x16b7e9,_0x2339('0x58')))[_0x2339('0x2b')](function(){})[_0x2339('0x2e')](_0x379408()));}}}return _0xa47606;})['all']();})['then'](function(){return db['Campaign'][_0x2339('0x4c')]({'attributes':['id'],'include':[{'model':db[_0x2339('0x52')],'as':'BlackLists','where':{'id':LISTID}}]})[_0x2339('0x2b')](function(_0x2ef5d9){var _0x10c3b8=[];if(_0x2ef5d9){for(var _0x4806b0=0x0,_0x48f66b;_0x4806b0<_0x2ef5d9[_0x2339('0x24')];_0x4806b0+=0x1){_0x48f66b=_0x2ef5d9[_0x4806b0]['get']({'plain':!![]});_0x10c3b8['push'](db[_0x2339('0x4e')][_0x2339('0x4f')](_0x306752(_0x48f66b,_0x2339('0x58')))['then'](function(){})[_0x2339('0x2e')](_0x379408()));}}return _0x10c3b8;})['all']();})[_0x2339('0x2e')](function(_0x46a2be){logger['error'](_0x2339('0x59'),'generalCheckHopper',_0x46a2be[_0x2339('0x30')]);});}var processPromises=function(_0x623b25){return BPromise[_0x2339('0x51')](promises)[_0x2339('0x2b')](function(_0x673df1){})[_0x2339('0x2e')](function(_0x370b81){logger['error'](_0x2339('0x5a'),JSON[_0x2339('0x31')](_0x370b81));})[_0x2339('0x5b')](function(){socket[_0x2339('0x5c')](_0x2339('0x5d')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x623b25){return _0x623b25['resume']();}});};var endCsv=function(){return BPromise[_0x2339('0x5e')]()[_0x2339('0x2b')](function(){if(hopperContacts){return checkHopper();}})[_0x2339('0x2b')](function(){socket['emit'](_0x2339('0x5d')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x2339('0x5f')](FILEPATH);}catch(_0x140906){logger[_0x2339('0x12')](_0x2339('0x60'),JSON[_0x2339('0x31')](_0x140906));}finally{process[_0x2339('0x61')](0x0);}});};process['on'](_0x2339('0x62'),function(){logger[_0x2339('0x63')](_0x2339('0x64'));endCsv();});function main(){return BPromise[_0x2339('0x5e')]()[_0x2339('0x2b')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x2339('0xe')](',');return db['CmContact'][_0x2339('0x4c')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x2339('0x2b')](function(_0xe2e481){var _0x2eea01=fs[_0x2339('0x65')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x2339('0x66')](_0x2eea01,{'header':!![],'skipEmptyLines':!![],'step':function(_0x47c49a,_0x1fc3c7){total+=0x1;var _0x17657c=total;promises[_0x2339('0x2c')](checkRow(_0x47c49a,_0xe2e481,_0x17657c)[_0x2339('0x2b')](function(){success+=0x1;})[_0x2339('0x2e')](function(_0x524f0a){if(_0x524f0a[_0x2339('0x12')]){errors+=0x1;delete _0x524f0a[_0x2339('0x12')];}else if(_0x524f0a[_0x2339('0x26')]){duplicates+=0x1;delete _0x524f0a['duplicate'];}rows['push'](_0x524f0a);}));if(total%0xc8===0x0){_0x1fc3c7[_0x2339('0x67')]();return processPromises(_0x1fc3c7);}},'complete':function(){return processPromises()[_0x2339('0x2b')](function(){logger['info'](_0x2339('0x68'));endCsv();});},'error':function(_0x425797,_0x16c1df){logger[_0x2339('0x63')](_0x2339('0x69'),JSON['stringify'](_0x425797));endCsv();}});})[_0x2339('0x2e')](function(_0x36f03){logger[_0x2339('0x12')](_0x2339('0x6a'),JSON[_0x2339('0x31')](_0x36f03));});}main();
\ No newline at end of file
index c0aa986..16c3bf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf21f=['each','then','finish','affectedRows','unlink','exit','complete','arguments\x20<filename>\x20<parameters>\x20<agents>','argv','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','lodash','papaparse','util','bluebird','moment','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','import','defaults','redis','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','select','field','from','join','.id\x20=\x20','where','\x20=\x20','cm_contacts.phone','cm_contacts.id','cm_contacts.ListId','cm_contacts.updatedAt','insert','into','fromQuery','phone','scheduledat','ContactId','ListId','createdAt','updatedAt','priority','UserId','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','cm_hopper','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.createdAt','cm_hopper_black','.CmListId','ListId\x20=\x20?','concat','CompanyId',')\x20NOT\x20IN\x20?','MIN(id)','group','info','error','message','errors','push','code','sequelize','query','main','stringify','start','binding','socket_timestamp','root','server/files/tmp','keys','header','writeFileSync','parse','createReadStream','data','rows','hasOwnProperty','replace','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','includes','email\x20wrong\x20format','YYYY-MM-DD','isValid','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','SystemRow','appendFileSync','emit','contact:import:','abort','SystemError','duplicates','length','cm_contacts_','CREATE\x20TABLE\x20','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','isNil',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues','voice_queues_has_cm_blacklists','VoiceQueueId','campaigns_has_cm_lists','campaigns','CampaignId','campaigns_has_cm_blacklists'];(function(_0x1cfb05,_0x2c8fa6){var _0x22926f=function(_0x2eeee5){while(--_0x2eeee5){_0x1cfb05['push'](_0x1cfb05['shift']());}};_0x22926f(++_0x2c8fa6);}(_0xf21f,0x11b));var _0xff21=function(_0x6fdd0d,_0x1efb08){_0x6fdd0d=_0x6fdd0d-0x0;var _0x2bae5f=_0xf21f[_0x6fdd0d];return _0x2bae5f;};'use strict';var fs=require('fs');var path=require('path');var _=require(_0xff21('0x0'));var Papa=require(_0xff21('0x1'));var util=require(_0xff21('0x2'));var BPromise=require(_0xff21('0x3'));var moment=require(_0xff21('0x4'));var squel=require(_0xff21('0x5'));var Redis=require(_0xff21('0x6'));var db=require(_0xff21('0x7'))['db'];var config=require(_0xff21('0x8'));var logger=require(_0xff21('0x9'))(_0xff21('0xa'));config['redis']=_[_0xff21('0xb')](config[_0xff21('0xc')],{'host':_0xff21('0xd'),'port':0x18eb});var socket=require(_0xff21('0xe'))(new Redis(config[_0xff21('0xc')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0xff21('0xf')](_0xff21('0x10'));function isEmail(_0x136c10){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))*$/[_0xff21('0x11')](_0x136c10);}function selectNotIn(_0xfadfb5,_0x789b7b,_0x525bab,_0x2e19d0,_0x2b4ff2){return squel[_0xff21('0x12')]()[_0xff21('0x13')]('phone')[_0xff21('0x14')](_0x2e19d0)[_0xff21('0x15')](_0x789b7b,null,_0x789b7b+_0xff21('0x16')+_0x2e19d0+'.'+_0x525bab)[_0xff21('0x17')](_0x2e19d0+'.'+_0x525bab+_0xff21('0x18')+_0xfadfb5+'.'+_0x525bab)['where'](_0x789b7b+'.dialCheckDuplicateType\x20IN\x20('+_0x2b4ff2[_0xff21('0x15')]()+')');}function insertCmHopper(_0x150743,_0x1694ec,_0xd59816,_0x4d8959,_0x159e75){var _0xa83513=[_0xff21('0x19'),'cm_contacts.scheduledat',_0xff21('0x1a'),_0xff21('0x1b'),_0x1694ec+'.'+_0x4d8959,'cm_contacts.createdAt',_0xff21('0x1c'),'cm_contacts.priority','cm_contacts.UserId','\x22'+_0x159e75+'\x22'];return squel[_0xff21('0x1d')]()[_0xff21('0x1e')]('cm_hopper')[_0xff21('0x1f')]([_0xff21('0x20'),_0xff21('0x21'),_0xff21('0x22'),_0xff21('0x23'),_0x4d8959,_0xff21('0x24'),_0xff21('0x25'),_0xff21('0x26'),_0xff21('0x27'),_0xff21('0x28')],squel[_0xff21('0x12')]()[_0xff21('0x29')](_0xa83513)['from'](_0x1694ec)[_0xff21('0x15')](_0xff21('0x2a'),null,_0xff21('0x2b')+_0x1694ec+'.CmListId')[_0xff21('0x15')](_0xd59816,null,_0xd59816+_0xff21('0x16')+_0x1694ec+'.'+_0x4d8959)[_0xff21('0x17')](_0x1694ec+_0xff21('0x2c'),_0x150743)[_0xff21('0x17')](_0xff21('0x2d'),NOW)[_0xff21('0x17')](_0xff21('0x2e'),selectNotIn(_0x1694ec,_0xd59816,_0x4d8959,_0xff21('0x2f'),[_0xff21('0x30'),_0xff21('0x31')]))[_0xff21('0x17')](_0xff21('0x2e'),selectNotIn(_0x1694ec,_0xd59816,_0x4d8959,'cm_hopper',['\x22always\x22'])))[_0xff21('0x32')]();}function insertCmHopperBlack(_0x49da76,_0x1cfc10,_0x214a8f,_0x2e7263){var _0x2fb9e2=['cm_contacts.phone',_0xff21('0x1a'),_0xff21('0x1b'),_0x1cfc10+'.'+_0x2e7263,_0xff21('0x33'),'cm_contacts.updatedAt'];return squel[_0xff21('0x1d')]()[_0xff21('0x1e')](_0xff21('0x34'))[_0xff21('0x1f')]([_0xff21('0x20'),_0xff21('0x22'),_0xff21('0x23'),_0x2e7263,_0xff21('0x24'),'updatedAt'],squel[_0xff21('0x12')]()['fields'](_0x2fb9e2)['from'](_0x1cfc10)['join'](_0xff21('0x2a'),null,_0xff21('0x2b')+_0x1cfc10+_0xff21('0x35'))['join'](_0x214a8f,null,_0x214a8f+'.id\x20=\x20'+_0x1cfc10+'.'+_0x2e7263)[_0xff21('0x17')](_0x1cfc10+_0xff21('0x2c'),_0x49da76)['where'](_0xff21('0x2d'),NOW)[_0xff21('0x17')](_0xff21('0x2e'),squel['select']()[_0xff21('0x13')]('phone')[_0xff21('0x14')]('cm_hopper_black')[_0xff21('0x17')](_0xff21('0x36'),_0x49da76)['where'](_0x2e7263+'\x20=\x20?',_0x1cfc10+'.'+_0x2e7263)))[_0xff21('0x32')]();}function insertCmContact(_0x316f32,_0x55d9b8,_0x5e4341,_0x148d41){var _0x36a5de=_[_0xff21('0x37')](_['keys'](_0x148d41),[_0xff21('0x23'),_0xff21('0x38'),_0xff21('0x24'),_0xff21('0x25')]);return squel['insert']()['into']('cm_contacts')['fromQuery'](_0x36a5de,squel[_0xff21('0x12')]()[_0xff21('0x29')](_0x36a5de)[_0xff21('0x14')](_0x55d9b8)[_0xff21('0x17')]('('+_0x5e4341[_0xff21('0x15')](',')+_0xff21('0x39'),squel[_0xff21('0x12')]()[_0xff21('0x29')](_0x5e4341)[_0xff21('0x14')]('cm_contacts')[_0xff21('0x17')](_0xff21('0x36'),_0x316f32)[_0xff21('0x17')]('deletedAt\x20IS\x20NULL'))[_0xff21('0x17')]('id\x20IN\x20?',squel[_0xff21('0x12')]()[_0xff21('0x13')](_0xff21('0x3a'),'min_id')[_0xff21('0x14')](_0x55d9b8)[_0xff21('0x3b')](_0x5e4341[_0xff21('0x15')](','))))[_0xff21('0x32')]();}function handleStop(){logger[_0xff21('0x3c')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x9bc1fc){logger[_0xff21('0x3d')](_0x9bc1fc[_0xff21('0x3e')]);process['exit'](0x1);}function handleError(_0x45e8ba,_0x5e2032){stats[_0xff21('0x3f')][_0xff21('0x40')]({'name':_0x5e2032[_0xff21('0x41')],'message':_0x5e2032[_0xff21('0x3e')],'row':_0x45e8ba});}function handleQuery(_0x491c1f){logger[_0xff21('0x3c')](_0x491c1f);return db[_0xff21('0x42')][_0xff21('0x43')](_0x491c1f)['spread'](function(_0x574ecb){results[_0xff21('0x40')](_0x574ecb);})['catch'](function(_0x139a0a){logger[_0xff21('0x3d')](_0x139a0a[_0xff21('0x3e')]);});}function main(_0x57ac65,_0x1f371b,_0x428932,_0x28f0e6){logger[_0xff21('0x3c')](_0xff21('0x44'),_0x57ac65,JSON[_0xff21('0x45')](_0x1f371b));process['send'](_0xff21('0x46'));var _0x1a9c21=_0x1f371b[_0xff21('0x47')];var _0x1282b8=_0x1f371b[_0xff21('0x48')];var _0x4a47c7=path['join'](config[_0xff21('0x49')],_0xff21('0x4a'),_0x1282b8+'.csv');var _0x414d44=_[_0xff21('0x4b')](_0x1a9c21)[_0xff21('0x15')]();logger[_0xff21('0x3c')](_0xff21('0x4c'),_0x414d44);fs[_0xff21('0x4d')](_0x4a47c7,_0x414d44+'\x0a');Papa[_0xff21('0x4e')](fs[_0xff21('0x4f')](_0x57ac65),{'header':!![],'skipEmptyLines':!![],'step':function(_0x2e9e15,_0x40f013){try{for(var _0x4f10e2=0x0,_0x5475e7=[];_0x4f10e2<_0x2e9e15[_0xff21('0x50')]['length'];_0x4f10e2++){stats[_0xff21('0x51')]+=0x1;if(_0x2e9e15['errors'][_0x4f10e2]){handleError(_0x2e9e15[_0xff21('0x50')][_0x4f10e2],_0x2e9e15[_0xff21('0x3f')][_0x4f10e2]);}else{var _0xb2ae45=[];for(var _0x27efb1 in _0x1a9c21){if(_0x1a9c21[_0xff21('0x52')](_0x27efb1)){if(_0x2e9e15[_0xff21('0x50')][_0x4f10e2][_0x1a9c21[_0x27efb1]]){var _0x4f5c9a=_['trim'](_0x2e9e15[_0xff21('0x50')][_0x4f10e2][_0x1a9c21[_0x27efb1]][_0xff21('0x53')](/"/g,'\x27'));switch(_0x27efb1){case _0xff21('0x21'):var _0x2b047f=moment(_0x4f5c9a,_0xff21('0x10'),!![]);if(_0x2b047f['isValid']()){_0x5475e7[_0xff21('0x40')]('\x22'+_0x4f5c9a+'\x22');}else{_0xb2ae45[_0xff21('0x40')](_0xff21('0x54'));}break;case _0xff21('0x26'):var _0x264cc3=parseInt(_0x4f5c9a);_0x4f5c9a=_['isNaN'](_0x264cc3)||_0x264cc3<0x0||_0x264cc3>0x4?_0x28f0e6?0x3:0x2:_0x264cc3;_0x5475e7[_0xff21('0x40')]('\x22'+_0x4f5c9a+'\x22');break;case _0xff21('0x27'):var _0x1ba804=parseInt(_0x4f5c9a);if(_['isNumber'](_0x1ba804)&&_[_0xff21('0x55')](_0x428932,_0x1ba804)){_0x5475e7[_0xff21('0x40')]('\x22'+_0x1ba804+'\x22');}else{_0xb2ae45[_0xff21('0x40')]('agent\x20not\x20exists');}break;case'email':if(isEmail(_0x4f5c9a)){_0x5475e7[_0xff21('0x40')]('\x22'+_0x4f5c9a+'\x22');}else{_0xb2ae45['push'](_0xff21('0x56'));}break;case'dateOfBirth':var _0x41b4ab=moment(_0x4f5c9a,_0xff21('0x57'),!![]);if(_0x41b4ab[_0xff21('0x58')]()){_0x5475e7[_0xff21('0x40')]('\x22'+_0x4f5c9a+'\x22');}else{_0xb2ae45[_0xff21('0x40')](_0xff21('0x59'));}break;default:_0x5475e7[_0xff21('0x40')]('\x22'+_0x4f5c9a+'\x22');}}else{switch(_0x27efb1){case _0xff21('0x5a'):case _0xff21('0x20'):_0xb2ae45['push'](_0x27efb1+_0xff21('0x5b'));break;default:_0x5475e7['push']('\x22\x22');}}}}if(_0xb2ae45['length']){handleError(_0x2e9e15[_0xff21('0x50')][_0x4f10e2],{'code':_0xff21('0x5c'),'message':_0xb2ae45[_0xff21('0x15')]()});}else{fs[_0xff21('0x5d')](_0x4a47c7,_0x5475e7[_0xff21('0x15')]()+'\x0a');}_0x5475e7=[];}if(!(stats[_0xff21('0x51')]%0xc8)){socket[_0xff21('0x5e')](_0xff21('0x5f')+_0x1282b8,stats);stats['errors']=[];}}if(stopped){logger[_0xff21('0x3c')]('Abort\x20parser');_0x40f013[_0xff21('0x60')]();}}catch(_0x234a9c){handleError(_0x2e9e15['data'][_0x4f10e2],{'code':_0xff21('0x61'),'message':_0x234a9c[_0xff21('0x3e')]});logger[_0xff21('0x3d')]('step',_0x234a9c[_0xff21('0x3e')]);}},'complete':function(){try{var _0x4db2b4=[];var _0x4ed64d=_0xff21('0x2a');if(_0x1f371b[_0xff21('0x62')]&&_0x1f371b['duplicates'][_0xff21('0x63')]){_0x4ed64d=_0xff21('0x64')+_0x1282b8;_0x4db2b4[_0xff21('0x40')](_0xff21('0x65')+_0x4ed64d+'\x20LIKE\x20cm_contacts;');}var _0x4f74bb=util[_0xff21('0xf')](_0xff21('0x66'),_0x4a47c7,_0x4ed64d,_0x414d44,_0x1f371b[_0xff21('0x23')],_0x1f371b['CompanyId']||null,NOW,NOW);if(_[_0xff21('0x67')](_0x1a9c21['scheduledat'])){_0x4f74bb+=_0xff21('0x68');}_0x4db2b4['push'](_0x4f74bb);if(_0x1f371b[_0xff21('0x62')]&&_0x1f371b['duplicates'][_0xff21('0x63')]){_0x4db2b4['push'](insertCmContact(_0x1f371b[_0xff21('0x23')],_0x4ed64d,_0x1f371b['duplicates'],_0x1a9c21));_0x4db2b4[_0xff21('0x40')](_0xff21('0x69')+_0x4ed64d+';');}_0x4db2b4[_0xff21('0x40')](insertCmHopper(_0x1f371b[_0xff21('0x23')],'voice_queues_has_cm_lists',_0xff21('0x6a'),'VoiceQueueId',_0x28f0e6));_0x4db2b4['push'](insertCmHopperBlack(_0x1f371b[_0xff21('0x23')],_0xff21('0x6b'),_0xff21('0x6a'),_0xff21('0x6c')));_0x4db2b4[_0xff21('0x40')](insertCmHopper(_0x1f371b[_0xff21('0x23')],_0xff21('0x6d'),_0xff21('0x6e'),_0xff21('0x6f'),_0x28f0e6));_0x4db2b4['push'](insertCmHopperBlack(_0x1f371b[_0xff21('0x23')],_0xff21('0x70'),_0xff21('0x6e'),_0xff21('0x6f')));BPromise[_0xff21('0x71')](_0x4db2b4,handleQuery)[_0xff21('0x72')](function(_0x126d01){stats[_0xff21('0x73')]=!![];stats[_0xff21('0x74')]=_0x1f371b['duplicates']&&_0x1f371b[_0xff21('0x62')][_0xff21('0x63')]?results[0x2][_0xff21('0x74')]:results[0x0][_0xff21('0x74')];socket['emit'](_0xff21('0x5f')+_0x1282b8,stats);fs[_0xff21('0x75')](_0x57ac65);fs[_0xff21('0x75')](_0x4a47c7);process[_0xff21('0x76')](0x0);})['catch'](function(_0x242346){logger['error'](_0x242346['message']);process['exit'](0x1);});}catch(_0x2d145d){logger['error'](_0xff21('0x77'),_0x2d145d[_0xff21('0x3e')]);process[_0xff21('0x76')](0x1);}},'error':function(_0x24ea16,_0x12deeb,_0x407b55,_0x36d2d5){throw new Error(_0x36d2d5);}});}function validate(){if(process['argv']&&process['argv'][_0xff21('0x63')]<0x4){throw new Error(_0xff21('0x78'));}var _0x580acf=path[_0xff21('0x15')](config[_0xff21('0x49')],_0xff21('0x4a'),process[_0xff21('0x79')][0x2]);if(!fs[_0xff21('0x7a')](_0x580acf)){throw new Error(_0xff21('0x7b'));}var _0x155c8f={};try{_0x155c8f=JSON[_0xff21('0x4e')](process[_0xff21('0x79')][0x3]);if(!_0x155c8f[_0xff21('0x47')]){throw new Error(_0xff21('0x7c'));}if(!_0x155c8f[_0xff21('0x47')][_0xff21('0x20')]){throw new Error(_0xff21('0x7d'));}if(!_0x155c8f[_0xff21('0x47')][_0xff21('0x5a')]){throw new Error(_0xff21('0x7e'));}var _0x4f2bfc=0x0;if(_0x155c8f[_0xff21('0x47')][_0xff21('0x27')]){_0x4f2bfc=0x1;}if(!_0x155c8f[_0xff21('0x23')]){throw new Error(_0xff21('0x7f'));}}catch(_0x30eac7){throw new Error('body\x20id\x20mandatory');}var _0x32212c=[];try{_0x32212c=_[_0xff21('0x80')](JSON[_0xff21('0x4e')](process[_0xff21('0x79')][0x4]),'id');}catch(_0x1916bf){logger[_0xff21('0x3c')](_0xff21('0x81'));}main(_0x580acf,_0x155c8f,_0x32212c,_0x4f2bfc);}validate();process['on'](_0xff21('0x82'),handleStop);process['on'](_0xff21('0x83'),handleUncaughtException);
\ No newline at end of file
+var _0x964b=['argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','firstName\x20is\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','util','bluebird','moment','../../../mysqldb','../../../config/logger','import','redis','defaults','localhost','socket.io-emitter','YYYY-MM-DD\x20HH:mm:ss','select','phone','from','join','.id\x20=\x20','\x20=\x20','cm_contacts.scheduledat','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','createdAt','updatedAt','priority','UserId','recallme','cm_contacts','cm_contacts.ListId\x20=\x20','where','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.id','cm_contacts.ListId','cm_hopper_black','ContactId','ListId','fields','.CmListId\x20=\x20?','ListId\x20=\x20?','\x20=\x20?','concat','keys',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','field','MIN(id)','min_id','group','info','Received\x20SIGINT','error','message','exit','push','code','sequelize','query','catch','stringify','send','start','binding','socket_timestamp','root','server/files/tmp','.csv','header','writeFileSync','createReadStream','data','length','rows','hasOwnProperty','trim','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','includes','agent\x20not\x20exists','email','dateOfBirth','YYYY-MM-DD','firstName','\x20not\x20specified','appendFileSync','emit','errors','abort','SystemError','step','duplicates','cm_contacts_','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','format','CompanyId','scheduledat',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues_has_cm_lists','voice_queues','VoiceQueueId','campaigns_has_cm_lists','campaigns','CampaignId','each','affectedRows','contact:import:','unlink','complete'];(function(_0x2730f6,_0x1e7e71){var _0x2fe4b3=function(_0x3a76bf){while(--_0x3a76bf){_0x2730f6['push'](_0x2730f6['shift']());}};_0x2fe4b3(++_0x1e7e71);}(_0x964b,0x112));var _0xb964=function(_0x500636,_0x1699d9){_0x500636=_0x500636-0x0;var _0x47bcd7=_0x964b[_0x500636];return _0x47bcd7;};'use strict';var fs=require('fs');var path=require(_0xb964('0x0'));var _=require(_0xb964('0x1'));var Papa=require('papaparse');var util=require(_0xb964('0x2'));var BPromise=require(_0xb964('0x3'));var moment=require(_0xb964('0x4'));var squel=require('squel');var Redis=require('ioredis');var db=require(_0xb964('0x5'))['db'];var config=require('../../../config/environment');var logger=require(_0xb964('0x6'))(_0xb964('0x7'));config[_0xb964('0x8')]=_[_0xb964('0x9')](config[_0xb964('0x8')],{'host':_0xb964('0xa'),'port':0x18eb});var socket=require(_0xb964('0xb'))(new Redis(config['redis']));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()['format'](_0xb964('0xc'));function isEmail(_0x505a2f){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'](_0x505a2f);}function selectNotIn(_0x295392,_0x4df011,_0x4433a5,_0x38247c,_0x38bae5){return squel[_0xb964('0xd')]()['field'](_0xb964('0xe'))[_0xb964('0xf')](_0x38247c)[_0xb964('0x10')](_0x4df011,null,_0x4df011+_0xb964('0x11')+_0x38247c+'.'+_0x4433a5)['where'](_0x38247c+'.'+_0x4433a5+_0xb964('0x12')+_0x295392+'.'+_0x4433a5)['where'](_0x4df011+'.dialCheckDuplicateType\x20IN\x20('+_0x38bae5[_0xb964('0x10')]()+')');}function insertCmHopper(_0x256e02,_0xe111d2,_0x407f8c,_0x2eebf3,_0x31c7f4){var _0x3d5baa=['cm_contacts.phone',_0xb964('0x13'),'cm_contacts.id','cm_contacts.ListId',_0xe111d2+'.'+_0x2eebf3,_0xb964('0x14'),_0xb964('0x15'),_0xb964('0x16'),_0xb964('0x17'),'\x22'+_0x31c7f4+'\x22'];return squel[_0xb964('0x18')]()[_0xb964('0x19')](_0xb964('0x1a'))[_0xb964('0x1b')]([_0xb964('0xe'),'scheduledat','ContactId','ListId',_0x2eebf3,_0xb964('0x1c'),_0xb964('0x1d'),_0xb964('0x1e'),_0xb964('0x1f'),_0xb964('0x20')],squel['select']()['fields'](_0x3d5baa)['from'](_0xe111d2)[_0xb964('0x10')](_0xb964('0x21'),null,_0xb964('0x22')+_0xe111d2+'.CmListId')[_0xb964('0x10')](_0x407f8c,null,_0x407f8c+_0xb964('0x11')+_0xe111d2+'.'+_0x2eebf3)[_0xb964('0x23')](_0xe111d2+'.CmListId\x20=\x20?',_0x256e02)['where'](_0xb964('0x24'),NOW)['where'](_0xb964('0x25'),selectNotIn(_0xe111d2,_0x407f8c,_0x2eebf3,_0xb964('0x1a'),[_0xb964('0x26'),_0xb964('0x27')]))['where'](_0xb964('0x25'),selectNotIn(_0xe111d2,_0x407f8c,_0x2eebf3,_0xb964('0x1a'),[_0xb964('0x26')])))[_0xb964('0x28')]();}function insertCmHopperBlack(_0x39273e,_0x21372b,_0x13d94d,_0x1626f2){var _0x142f76=['cm_contacts.phone',_0xb964('0x29'),_0xb964('0x2a'),_0x21372b+'.'+_0x1626f2,_0xb964('0x14'),_0xb964('0x15')];return squel[_0xb964('0x18')]()[_0xb964('0x19')](_0xb964('0x2b'))['fromQuery']([_0xb964('0xe'),_0xb964('0x2c'),_0xb964('0x2d'),_0x1626f2,'createdAt',_0xb964('0x1d')],squel[_0xb964('0xd')]()[_0xb964('0x2e')](_0x142f76)[_0xb964('0xf')](_0x21372b)[_0xb964('0x10')](_0xb964('0x21'),null,'cm_contacts.ListId\x20=\x20'+_0x21372b+'.CmListId')[_0xb964('0x10')](_0x13d94d,null,_0x13d94d+_0xb964('0x11')+_0x21372b+'.'+_0x1626f2)[_0xb964('0x23')](_0x21372b+_0xb964('0x2f'),_0x39273e)['where'](_0xb964('0x24'),NOW)['where'](_0xb964('0x25'),squel[_0xb964('0xd')]()['field']('phone')[_0xb964('0xf')](_0xb964('0x2b'))[_0xb964('0x23')](_0xb964('0x30'),_0x39273e)[_0xb964('0x23')](_0x1626f2+_0xb964('0x31'),_0x21372b+'.'+_0x1626f2)))['toString']();}function insertCmContact(_0x5ee03e,_0x4acf69,_0x1bb8f8,_0x726d32){var _0x167561=_[_0xb964('0x32')](_[_0xb964('0x33')](_0x726d32),[_0xb964('0x2d'),'CompanyId','createdAt',_0xb964('0x1d')]);return squel[_0xb964('0x18')]()[_0xb964('0x19')](_0xb964('0x21'))[_0xb964('0x1b')](_0x167561,squel['select']()[_0xb964('0x2e')](_0x167561)[_0xb964('0xf')](_0x4acf69)[_0xb964('0x23')]('('+_0x1bb8f8[_0xb964('0x10')](',')+_0xb964('0x34'),squel[_0xb964('0xd')]()[_0xb964('0x2e')](_0x1bb8f8)['from'](_0xb964('0x21'))['where'](_0xb964('0x30'),_0x5ee03e)['where'](_0xb964('0x35')))[_0xb964('0x23')]('id\x20IN\x20?',squel['select']()[_0xb964('0x36')](_0xb964('0x37'),_0xb964('0x38'))[_0xb964('0xf')](_0x4acf69)[_0xb964('0x39')](_0x1bb8f8['join'](','))))[_0xb964('0x28')]();}function handleStop(){logger[_0xb964('0x3a')](_0xb964('0x3b'));stopped=!![];}function handleUncaughtException(_0x5e8208){logger[_0xb964('0x3c')](_0x5e8208[_0xb964('0x3d')]);process[_0xb964('0x3e')](0x1);}function handleError(_0x2fde31,_0x33cfd){stats['errors'][_0xb964('0x3f')]({'name':_0x33cfd[_0xb964('0x40')],'message':_0x33cfd['message'],'row':_0x2fde31});}function handleQuery(_0x3c9bbc){logger[_0xb964('0x3a')](_0x3c9bbc);return db[_0xb964('0x41')][_0xb964('0x42')](_0x3c9bbc)['spread'](function(_0x4a0d65){results[_0xb964('0x3f')](_0x4a0d65);})[_0xb964('0x43')](function(_0x1b77c7){logger[_0xb964('0x3c')](_0x1b77c7[_0xb964('0x3d')]);});}function main(_0x176c92,_0x218562,_0x19687e,_0x4ab2fc){logger[_0xb964('0x3a')]('main',_0x176c92,JSON[_0xb964('0x44')](_0x218562));process[_0xb964('0x45')](_0xb964('0x46'));var _0x493fdf=_0x218562[_0xb964('0x47')];var _0x1a0b81=_0x218562[_0xb964('0x48')];var _0x372ce3=path[_0xb964('0x10')](config[_0xb964('0x49')],_0xb964('0x4a'),_0x1a0b81+_0xb964('0x4b'));var _0x1b1709=_['keys'](_0x493fdf)['join']();logger['info'](_0xb964('0x4c'),_0x1b1709);fs[_0xb964('0x4d')](_0x372ce3,_0x1b1709+'\x0a');Papa['parse'](fs[_0xb964('0x4e')](_0x176c92),{'header':!![],'skipEmptyLines':!![],'step':function(_0x2b9ec9,_0x516228){try{for(var _0x58f7d1=0x0,_0x343942=[];_0x58f7d1<_0x2b9ec9[_0xb964('0x4f')][_0xb964('0x50')];_0x58f7d1++){stats[_0xb964('0x51')]+=0x1;if(_0x2b9ec9['errors'][_0x58f7d1]){handleError(_0x2b9ec9[_0xb964('0x4f')][_0x58f7d1],_0x2b9ec9['errors'][_0x58f7d1]);}else{var _0x2cbbed=[];for(var _0x29bf54 in _0x493fdf){if(_0x493fdf[_0xb964('0x52')](_0x29bf54)){if(_0x2b9ec9[_0xb964('0x4f')][_0x58f7d1][_0x493fdf[_0x29bf54]]){var _0x2d333c=_[_0xb964('0x53')](_0x2b9ec9[_0xb964('0x4f')][_0x58f7d1][_0x493fdf[_0x29bf54]][_0xb964('0x54')](/"/g,'\x27'));switch(_0x29bf54){case'scheduledat':var _0x2d74b7=moment(_0x2d333c,_0xb964('0xc'),!![]);if(_0x2d74b7[_0xb964('0x55')]()){_0x343942[_0xb964('0x3f')]('\x22'+_0x2d333c+'\x22');}else{_0x2cbbed['push'](_0xb964('0x56'));}break;case _0xb964('0x1e'):var _0x1759bc=parseInt(_0x2d333c);_0x2d333c=_[_0xb964('0x57')](_0x1759bc)||_0x1759bc<0x0||_0x1759bc>0x4?_0x4ab2fc?0x3:0x2:_0x1759bc;_0x343942[_0xb964('0x3f')]('\x22'+_0x2d333c+'\x22');break;case _0xb964('0x1f'):var _0x24c199=parseInt(_0x2d333c);if(_[_0xb964('0x58')](_0x24c199)&&_[_0xb964('0x59')](_0x19687e,_0x24c199)){_0x343942[_0xb964('0x3f')]('\x22'+_0x24c199+'\x22');}else{_0x2cbbed[_0xb964('0x3f')](_0xb964('0x5a'));}break;case _0xb964('0x5b'):if(isEmail(_0x2d333c)){_0x343942[_0xb964('0x3f')]('\x22'+_0x2d333c+'\x22');}else{_0x2cbbed[_0xb964('0x3f')]('email\x20wrong\x20format');}break;case _0xb964('0x5c'):var _0x55929f=moment(_0x2d333c,_0xb964('0x5d'),!![]);if(_0x55929f[_0xb964('0x55')]()){_0x343942[_0xb964('0x3f')]('\x22'+_0x2d333c+'\x22');}else{_0x2cbbed[_0xb964('0x3f')]('dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)');}break;default:_0x343942[_0xb964('0x3f')]('\x22'+_0x2d333c+'\x22');}}else{switch(_0x29bf54){case _0xb964('0x5e'):case _0xb964('0xe'):_0x2cbbed[_0xb964('0x3f')](_0x29bf54+_0xb964('0x5f'));break;default:_0x343942['push']('\x22\x22');}}}}if(_0x2cbbed['length']){handleError(_0x2b9ec9[_0xb964('0x4f')][_0x58f7d1],{'code':'SystemRow','message':_0x2cbbed[_0xb964('0x10')]()});}else{fs[_0xb964('0x60')](_0x372ce3,_0x343942['join']()+'\x0a');}_0x343942=[];}if(!(stats[_0xb964('0x51')]%0xc8)){socket[_0xb964('0x61')]('contact:import:'+_0x1a0b81,stats);stats[_0xb964('0x62')]=[];}}if(stopped){logger[_0xb964('0x3a')]('Abort\x20parser');_0x516228[_0xb964('0x63')]();}}catch(_0x4e164e){handleError(_0x2b9ec9[_0xb964('0x4f')][_0x58f7d1],{'code':_0xb964('0x64'),'message':_0x4e164e[_0xb964('0x3d')]});logger[_0xb964('0x3c')](_0xb964('0x65'),_0x4e164e[_0xb964('0x3d')]);}},'complete':function(){try{var _0x206cb4=[];var _0x4db713=_0xb964('0x21');if(_0x218562['duplicates']&&_0x218562[_0xb964('0x66')]['length']){_0x4db713=_0xb964('0x67')+_0x1a0b81;_0x206cb4[_0xb964('0x3f')](_0xb964('0x68')+_0x4db713+_0xb964('0x69'));}var _0x378769=util[_0xb964('0x6a')]('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',_0x372ce3,_0x4db713,_0x1b1709,_0x218562[_0xb964('0x2d')],_0x218562[_0xb964('0x6b')]||null,NOW,NOW);if(_['isNil'](_0x493fdf[_0xb964('0x6c')])){_0x378769+=_0xb964('0x6d');}_0x206cb4['push'](_0x378769);if(_0x218562[_0xb964('0x66')]&&_0x218562[_0xb964('0x66')][_0xb964('0x50')]){_0x206cb4['push'](insertCmContact(_0x218562[_0xb964('0x2d')],_0x4db713,_0x218562[_0xb964('0x66')],_0x493fdf));_0x206cb4[_0xb964('0x3f')](_0xb964('0x6e')+_0x4db713+';');}_0x206cb4[_0xb964('0x3f')](insertCmHopper(_0x218562[_0xb964('0x2d')],_0xb964('0x6f'),_0xb964('0x70'),_0xb964('0x71'),_0x4ab2fc));_0x206cb4['push'](insertCmHopperBlack(_0x218562[_0xb964('0x2d')],'voice_queues_has_cm_blacklists','voice_queues',_0xb964('0x71')));_0x206cb4['push'](insertCmHopper(_0x218562[_0xb964('0x2d')],_0xb964('0x72'),_0xb964('0x73'),'CampaignId',_0x4ab2fc));_0x206cb4[_0xb964('0x3f')](insertCmHopperBlack(_0x218562[_0xb964('0x2d')],'campaigns_has_cm_blacklists',_0xb964('0x73'),_0xb964('0x74')));BPromise[_0xb964('0x75')](_0x206cb4,handleQuery)['then'](function(_0x316042){stats['finish']=!![];stats[_0xb964('0x76')]=_0x218562['duplicates']&&_0x218562[_0xb964('0x66')][_0xb964('0x50')]?results[0x2][_0xb964('0x76')]:results[0x0][_0xb964('0x76')];socket['emit'](_0xb964('0x77')+_0x1a0b81,stats);fs['unlink'](_0x176c92);fs[_0xb964('0x78')](_0x372ce3);process[_0xb964('0x3e')](0x0);})[_0xb964('0x43')](function(_0xa5a8cb){logger['error'](_0xa5a8cb[_0xb964('0x3d')]);process[_0xb964('0x3e')](0x1);});}catch(_0x15b0c0){logger[_0xb964('0x3c')](_0xb964('0x79'),_0x15b0c0[_0xb964('0x3d')]);process[_0xb964('0x3e')](0x1);}},'error':function(_0x302351,_0x1fdcbd,_0x112e5e,_0x4a38aa){throw new Error(_0x4a38aa);}});}function validate(){if(process[_0xb964('0x7a')]&&process[_0xb964('0x7a')][_0xb964('0x50')]<0x4){throw new Error(_0xb964('0x7b'));}var _0x289901=path[_0xb964('0x10')](config[_0xb964('0x49')],_0xb964('0x4a'),process[_0xb964('0x7a')][0x2]);if(!fs[_0xb964('0x7c')](_0x289901)){throw new Error(_0xb964('0x7d'));}var _0x4c754e={};try{_0x4c754e=JSON['parse'](process[_0xb964('0x7a')][0x3]);if(!_0x4c754e[_0xb964('0x47')]){throw new Error(_0xb964('0x7e'));}if(!_0x4c754e['binding'][_0xb964('0xe')]){throw new Error('phone\x20is\x20mandatory');}if(!_0x4c754e[_0xb964('0x47')]['firstName']){throw new Error(_0xb964('0x7f'));}var _0x206fc8=0x0;if(_0x4c754e[_0xb964('0x47')][_0xb964('0x1f')]){_0x206fc8=0x1;}if(!_0x4c754e[_0xb964('0x2d')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x191b3f){throw new Error('body\x20id\x20mandatory');}var _0x4e8dae=[];try{_0x4e8dae=_[_0xb964('0x80')](JSON['parse'](process[_0xb964('0x7a')][0x4]),'id');}catch(_0x564ad0){logger[_0xb964('0x3a')](_0xb964('0x81'));}main(_0x289901,_0x4c754e,_0x4e8dae,_0x206fc8);}validate();process['on'](_0xb964('0x82'),handleStop);process['on'](_0xb964('0x83'),handleUncaughtException);
\ No newline at end of file
index d2a09ca..16c15b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0aa8=['destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','agentcalledAt','Agent\x20Connect','agentconnectAt','Agent\x20Complete','agentcompleteAt','holdtime','Talk\x20Time','Called\x20Number','Member\x20Name','membername','UniqueId','starttime','Answer\x20Time','answertime','Complete\x20Time','endtime','duration','Billable\x20Time','getSubjects','string','[xCALLY\x20Ticket]','toLowerCase','voice','inbound','push','variable','calleridnum','outbound','Outbound\x20Call','destcalleridnum','***\x20Call\x20Info\x20***','keyValue','Caller\x20Name','calleridname','destexten','Queue','queue','uniqueid','Date','***\x20Agent\x20Info\x20***'];(function(_0x2d06d4,_0x3328f0){var _0x12a2f5=function(_0x19ab55){while(--_0x19ab55){_0x2d06d4['push'](_0x2d06d4['shift']());}};_0x12a2f5(++_0x3328f0);}(_0x0aa8,0x1ce));var _0x80aa=function(_0x1992f1,_0x5c61f0){_0x1992f1=_0x1992f1-0x0;var _0x413dfe=_0x0aa8[_0x1992f1];return _0x413dfe;};'use strict';exports[_0x80aa('0x0')]=function(_0x6c9c34,_0x3dfc41){var _0x53c8e8=[{'type':_0x80aa('0x1'),'content':_0x80aa('0x2'),'variableName':null}];switch(_0x6c9c34[_0x80aa('0x3')]()){case _0x80aa('0x4'):switch(_0x3dfc41[_0x80aa('0x3')]()){case _0x80aa('0x5'):_0x53c8e8[_0x80aa('0x6')]({'type':'variable','content':'','variableName':'queue'});_0x53c8e8['push']({'type':_0x80aa('0x7'),'content':'','variableName':_0x80aa('0x8')});break;case _0x80aa('0x9'):_0x53c8e8['push']({'type':'string','content':_0x80aa('0xa'),'variableName':null});_0x53c8e8[_0x80aa('0x6')]({'type':_0x80aa('0x7'),'content':'','variableName':_0x80aa('0xb')});break;}}return _0x53c8e8;};exports['getDescriptions']=function(_0x2d25a8,_0x5bf00b){var _0x2482d5=[];switch(_0x2d25a8[_0x80aa('0x3')]()){case'voice':switch(_0x5bf00b['toLowerCase']()){case _0x80aa('0x5'):_0x2482d5=[{'type':_0x80aa('0x1'),'content':_0x80aa('0xc'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':'Caller\x20Number','keyType':_0x80aa('0x7'),'variableName':_0x80aa('0x8')},{'type':_0x80aa('0xd'),'content':'','key':_0x80aa('0xe'),'keyType':_0x80aa('0x7'),'variableName':_0x80aa('0xf')},{'type':'keyValue','content':'','key':'Call\x20To','keyType':_0x80aa('0x7'),'variableName':_0x80aa('0x10')},{'type':_0x80aa('0xd'),'content':'','key':_0x80aa('0x11'),'keyType':'variable','variableName':_0x80aa('0x12')},{'type':'keyValue','content':'','key':'UniqueId','keyType':_0x80aa('0x7'),'variableName':_0x80aa('0x13')},{'type':_0x80aa('0xd'),'content':'','key':_0x80aa('0x14'),'keyType':'variable','variableName':'agentcalledAt'},{'type':'string','content':_0x80aa('0x15'),'key':null,'keyType':null,'variableName':null},{'type':_0x80aa('0xd'),'content':'','key':'Agent\x20Name','keyType':_0x80aa('0x7'),'variableName':_0x80aa('0x16')},{'type':_0x80aa('0xd'),'content':'','key':_0x80aa('0x17'),'keyType':'variable','variableName':_0x80aa('0xb')},{'type':'string','content':_0x80aa('0x18'),'key':null,'keyType':null,'variableName':null},{'type':_0x80aa('0xd'),'content':'','key':_0x80aa('0x19'),'keyType':_0x80aa('0x7'),'variableName':_0x80aa('0x1a')},{'type':_0x80aa('0xd'),'content':'','key':_0x80aa('0x1b'),'keyType':_0x80aa('0x7'),'variableName':_0x80aa('0x1c')},{'type':'keyValue','content':'','key':_0x80aa('0x1d'),'keyType':_0x80aa('0x7'),'variableName':_0x80aa('0x1e')},{'type':_0x80aa('0xd'),'content':'','key':'Hold\x20Time','keyType':'variable','variableName':_0x80aa('0x1f')},{'type':_0x80aa('0xd'),'content':'','key':_0x80aa('0x20'),'keyType':_0x80aa('0x7'),'variableName':'talktime'}];break;case _0x80aa('0x9'):_0x2482d5=[{'type':_0x80aa('0x1'),'content':_0x80aa('0xc'),'variableName':null},{'type':'keyValue','content':'','key':_0x80aa('0x21'),'keyType':_0x80aa('0x7'),'keyContent':'','variableName':_0x80aa('0xb')},{'type':_0x80aa('0xd'),'content':'','key':_0x80aa('0x22'),'keyType':_0x80aa('0x7'),'keyContent':'','variableName':_0x80aa('0x23')},{'type':_0x80aa('0xd'),'content':'','key':_0x80aa('0x24'),'keyType':_0x80aa('0x7'),'keyContent':'','variableName':_0x80aa('0x13')},{'type':_0x80aa('0xd'),'content':'','key':'Date','keyType':'variable','keyContent':'','variableName':_0x80aa('0x25')},{'type':_0x80aa('0x1'),'content':_0x80aa('0x18')},{'type':'keyValue','content':'','key':_0x80aa('0x26'),'keyType':_0x80aa('0x7'),'keyContent':'','variableName':_0x80aa('0x27')},{'type':'keyValue','content':'','key':_0x80aa('0x28'),'keyType':_0x80aa('0x7'),'keyContent':'','variableName':_0x80aa('0x29')},{'type':'keyValue','content':'','key':'Duration','keyType':'variable','keyContent':'','variableName':_0x80aa('0x2a')},{'type':'keyValue','content':'','key':_0x80aa('0x2b'),'keyType':_0x80aa('0x7'),'keyContent':'','variableName':'billableseconds'}];break;}}return _0x2482d5;};
\ No newline at end of file
+var _0x9104=['Queue','UniqueId','agentcalledAt','Agent\x20Name','destcalleridname','Agent\x20Number','Agent\x20Ring','Agent\x20Connect','agentconnectAt','Agent\x20Complete','agentcompleteAt','holdtime','Member\x20Name','membername','uniqueid','starttime','***\x20Time\x20Info\x20***','answertime','Complete\x20Time','endtime','Duration','duration','Billable\x20Time','billableseconds','getSubjects','toLowerCase','inbound','variable','queue','push','calleridnum','outbound','string','Outbound\x20Call','destcalleridnum','getDescriptions','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name','calleridname','Call\x20To','destexten'];(function(_0x9da7b0,_0x2f4aeb){var _0xf05f94=function(_0x42a13e){while(--_0x42a13e){_0x9da7b0['push'](_0x9da7b0['shift']());}};_0xf05f94(++_0x2f4aeb);}(_0x9104,0x99));var _0x4910=function(_0x40cb83,_0x57022c){_0x40cb83=_0x40cb83-0x0;var _0x4f3e88=_0x9104[_0x40cb83];return _0x4f3e88;};'use strict';exports[_0x4910('0x0')]=function(_0x552e68,_0x58b66a){var _0x3ec725=[{'type':'string','content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x552e68['toLowerCase']()){case'voice':switch(_0x58b66a[_0x4910('0x1')]()){case _0x4910('0x2'):_0x3ec725['push']({'type':_0x4910('0x3'),'content':'','variableName':_0x4910('0x4')});_0x3ec725[_0x4910('0x5')]({'type':_0x4910('0x3'),'content':'','variableName':_0x4910('0x6')});break;case _0x4910('0x7'):_0x3ec725['push']({'type':_0x4910('0x8'),'content':_0x4910('0x9'),'variableName':null});_0x3ec725[_0x4910('0x5')]({'type':_0x4910('0x3'),'content':'','variableName':_0x4910('0xa')});break;}}return _0x3ec725;};exports[_0x4910('0xb')]=function(_0x3cf768,_0x3fe10c){var _0xc6b721=[];switch(_0x3cf768[_0x4910('0x1')]()){case'voice':switch(_0x3fe10c[_0x4910('0x1')]()){case _0x4910('0x2'):_0xc6b721=[{'type':'string','content':_0x4910('0xc'),'key':null,'keyType':null,'variableName':null},{'type':_0x4910('0xd'),'content':'','key':_0x4910('0xe'),'keyType':_0x4910('0x3'),'variableName':_0x4910('0x6')},{'type':_0x4910('0xd'),'content':'','key':_0x4910('0xf'),'keyType':'variable','variableName':_0x4910('0x10')},{'type':'keyValue','content':'','key':_0x4910('0x11'),'keyType':'variable','variableName':_0x4910('0x12')},{'type':_0x4910('0xd'),'content':'','key':_0x4910('0x13'),'keyType':_0x4910('0x3'),'variableName':_0x4910('0x4')},{'type':_0x4910('0xd'),'content':'','key':_0x4910('0x14'),'keyType':_0x4910('0x3'),'variableName':'uniqueid'},{'type':'keyValue','content':'','key':'Date','keyType':_0x4910('0x3'),'variableName':_0x4910('0x15')},{'type':_0x4910('0x8'),'content':'***\x20Agent\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x4910('0x16'),'keyType':_0x4910('0x3'),'variableName':_0x4910('0x17')},{'type':_0x4910('0xd'),'content':'','key':_0x4910('0x18'),'keyType':_0x4910('0x3'),'variableName':_0x4910('0xa')},{'type':'string','content':'***\x20Time\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0x4910('0xd'),'content':'','key':_0x4910('0x19'),'keyType':_0x4910('0x3'),'variableName':'agentcalledAt'},{'type':_0x4910('0xd'),'content':'','key':_0x4910('0x1a'),'keyType':'variable','variableName':_0x4910('0x1b')},{'type':_0x4910('0xd'),'content':'','key':_0x4910('0x1c'),'keyType':_0x4910('0x3'),'variableName':_0x4910('0x1d')},{'type':_0x4910('0xd'),'content':'','key':'Hold\x20Time','keyType':_0x4910('0x3'),'variableName':_0x4910('0x1e')},{'type':'keyValue','content':'','key':'Talk\x20Time','keyType':_0x4910('0x3'),'variableName':'talktime'}];break;case _0x4910('0x7'):_0xc6b721=[{'type':_0x4910('0x8'),'content':_0x4910('0xc'),'variableName':null},{'type':_0x4910('0xd'),'content':'','key':'Called\x20Number','keyType':_0x4910('0x3'),'keyContent':'','variableName':_0x4910('0xa')},{'type':_0x4910('0xd'),'content':'','key':_0x4910('0x1f'),'keyType':_0x4910('0x3'),'keyContent':'','variableName':_0x4910('0x20')},{'type':'keyValue','content':'','key':_0x4910('0x14'),'keyType':'variable','keyContent':'','variableName':_0x4910('0x21')},{'type':_0x4910('0xd'),'content':'','key':'Date','keyType':_0x4910('0x3'),'keyContent':'','variableName':_0x4910('0x22')},{'type':_0x4910('0x8'),'content':_0x4910('0x23')},{'type':_0x4910('0xd'),'content':'','key':'Answer\x20Time','keyType':'variable','keyContent':'','variableName':_0x4910('0x24')},{'type':_0x4910('0xd'),'content':'','key':_0x4910('0x25'),'keyType':'variable','keyContent':'','variableName':_0x4910('0x26')},{'type':_0x4910('0xd'),'content':'','key':_0x4910('0x27'),'keyType':'variable','keyContent':'','variableName':_0x4910('0x28')},{'type':'keyValue','content':'','key':_0x4910('0x29'),'keyType':'variable','keyContent':'','variableName':_0x4910('0x2a')}];break;}}return _0xc6b721;};
\ No newline at end of file
index a86a65b..f8a1f5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9209=['../../config/logger','openchannel-interactions','mail-interactions','fax-interactions','sms-interactions','chat-interactions','InteractionId','upperFirst','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','role','Interaction','findOne','update','then','info','catch','error','tracked','query','body','omit','html','phone','fax','mobile','lodash'];(function(_0x5c3c0b,_0x4ee35e){var _0x52ecd2=function(_0x3cf575){while(--_0x3cf575){_0x5c3c0b['push'](_0x5c3c0b['shift']());}};_0x52ecd2(++_0x4ee35e);}(_0x9209,0x179));var _0x9920=function(_0x8b128e,_0x43f590){_0x8b128e=_0x8b128e-0x0;var _0x40e3b8=_0x9209[_0x8b128e];return _0x40e3b8;};'use strict';var _=require(_0x9920('0x0'));var db=require('../../mysqldb')['db'];var loggers={'openchannel':require(_0x9920('0x1'))(_0x9920('0x2')),'mail':require(_0x9920('0x1'))(_0x9920('0x3')),'fax':require('../../config/logger')(_0x9920('0x4')),'sms':require(_0x9920('0x1'))(_0x9920('0x5')),'chat':require(_0x9920('0x1'))(_0x9920('0x6')),'whatsapp':require(_0x9920('0x1'))('whatsapp-interactions')};function getInteractionId(_0x2239a8,_0x1ffcdc,_0x4fdcf2){if(_0x2239a8&&_0x2239a8[_['upperFirst'](_0x4fdcf2)+_0x9920('0x7')]){return _0x2239a8[_[_0x9920('0x8')](_0x4fdcf2)+'InteractionId'];}else if(_0x2239a8&&_0x2239a8['id']){return _0x2239a8['id'];}else if(_0x1ffcdc&&_0x1ffcdc['id']){return _0x1ffcdc['id'];}else{return'unknown';}}function log(_0x107705,_0x364d00,_0x47882d,_0x18f2c6,_0x23378e,_0x3bc4ef){loggers[_0x23378e['toLowerCase']()][_0x107705](_0x9920('0x9'),_0x3bc4ef[_0x9920('0xa')](),_0x364d00?_0x364d00['id']:null,_0x364d00?_0x364d00['name']:null,_0x364d00?_0x364d00[_0x9920('0xb')]:null,getInteractionId(_0x47882d,_0x18f2c6,_0x23378e),_0x47882d?JSON['stringify'](_0x47882d):'null');}function updateUser(_0x170120,_0x47af49,_0x53ce32,_0x7a129,_0x30b846){db[_[_0x9920('0x8')](_0x7a129)+_0x9920('0xc')][_0x9920('0xd')]({'where':{'id':getInteractionId(_0x47af49,_0x53ce32,_0x7a129)}})['then'](function(_0x201dac){if(_0x201dac){return _0x201dac[_0x9920('0xe')]({'UserId':_0x170120?_0x170120['id']:null});}})[_0x9920('0xf')](function(_0x40fd5f){if(_0x40fd5f){log(_0x9920('0x10'),_0x170120,_0x47af49,_0x53ce32,_0x7a129,_0x30b846);}})[_0x9920('0x11')](function(){log(_0x9920('0x12'),_0x170120,_0x47af49,_0x53ce32,_0x7a129,_0x30b846);});}exports[_0x9920('0x13')]=function(_0x461885,_0x13a8a1){return function(_0x4488f2,_0x4f9f77,_0x2753d4){var _0x135617=_0x4488f2['user'];var _0x551909={};var _0x1e6e76=_0x4488f2[_0x9920('0x14')];if(_0x551909){_0x551909=_['clone'](_0x4488f2[_0x9920('0x15')]);_0x551909=_[_0x9920('0x16')](_0x551909,[_0x9920('0x15'),_0x9920('0x17'),_0x9920('0x18'),_0x9920('0x19'),_0x9920('0x1a')]);}updateUser(_0x135617,_0x551909,_0x1e6e76,_0x461885,_0x13a8a1);_0x2753d4(null);};};
\ No newline at end of file
+var _0x95d8=['lodash','../../config/logger','fax-interactions','chat-interactions','whatsapp-interactions','upperFirst','InteractionId','unknown','toLowerCase','toUpperCase','name','role','stringify','null','Interaction','findOne','then','update','info','error','query','clone','body','omit','html','phone'];(function(_0x1d5827,_0x2d2e14){var _0x5ea463=function(_0x509c4f){while(--_0x509c4f){_0x1d5827['push'](_0x1d5827['shift']());}};_0x5ea463(++_0x2d2e14);}(_0x95d8,0x11e));var _0x895d=function(_0x307f70,_0x500678){_0x307f70=_0x307f70-0x0;var _0x1d1bf5=_0x95d8[_0x307f70];return _0x1d1bf5;};'use strict';var _=require(_0x895d('0x0'));var db=require('../../mysqldb')['db'];var loggers={'openchannel':require(_0x895d('0x1'))('openchannel-interactions'),'mail':require(_0x895d('0x1'))('mail-interactions'),'fax':require('../../config/logger')(_0x895d('0x2')),'sms':require(_0x895d('0x1'))('sms-interactions'),'chat':require(_0x895d('0x1'))(_0x895d('0x3')),'whatsapp':require(_0x895d('0x1'))(_0x895d('0x4'))};function getInteractionId(_0x30ed1d,_0x1c406f,_0x822630){if(_0x30ed1d&&_0x30ed1d[_[_0x895d('0x5')](_0x822630)+_0x895d('0x6')]){return _0x30ed1d[_[_0x895d('0x5')](_0x822630)+_0x895d('0x6')];}else if(_0x30ed1d&&_0x30ed1d['id']){return _0x30ed1d['id'];}else if(_0x1c406f&&_0x1c406f['id']){return _0x1c406f['id'];}else{return _0x895d('0x7');}}function log(_0x1a059a,_0x41bf85,_0x4288e2,_0x2ace78,_0x13742b,_0x270882){loggers[_0x13742b[_0x895d('0x8')]()][_0x1a059a]('[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x270882[_0x895d('0x9')](),_0x41bf85?_0x41bf85['id']:null,_0x41bf85?_0x41bf85[_0x895d('0xa')]:null,_0x41bf85?_0x41bf85[_0x895d('0xb')]:null,getInteractionId(_0x4288e2,_0x2ace78,_0x13742b),_0x4288e2?JSON[_0x895d('0xc')](_0x4288e2):_0x895d('0xd'));}function updateUser(_0x151ae9,_0x24cadd,_0x46325d,_0x4f1217,_0x4bec85){db[_[_0x895d('0x5')](_0x4f1217)+_0x895d('0xe')][_0x895d('0xf')]({'where':{'id':getInteractionId(_0x24cadd,_0x46325d,_0x4f1217)}})[_0x895d('0x10')](function(_0x37f913){if(_0x37f913){return _0x37f913[_0x895d('0x11')]({'UserId':_0x151ae9?_0x151ae9['id']:null});}})['then'](function(_0x57cc58){if(_0x57cc58){log(_0x895d('0x12'),_0x151ae9,_0x24cadd,_0x46325d,_0x4f1217,_0x4bec85);}})['catch'](function(){log(_0x895d('0x13'),_0x151ae9,_0x24cadd,_0x46325d,_0x4f1217,_0x4bec85);});}exports['tracked']=function(_0x705b2,_0x5be5ed){return function(_0x2b9eb9,_0xad5ae2,_0x428fe9){var _0x14ec3c=_0x2b9eb9['user'];var _0x536bbb={};var _0x454f01=_0x2b9eb9[_0x895d('0x14')];if(_0x536bbb){_0x536bbb=_[_0x895d('0x15')](_0x2b9eb9[_0x895d('0x16')]);_0x536bbb=_[_0x895d('0x17')](_0x536bbb,[_0x895d('0x16'),_0x895d('0x18'),_0x895d('0x19'),'fax','mobile']);}updateUser(_0x14ec3c,_0x536bbb,_0x454f01,_0x705b2,_0x5be5ed);_0x428fe9(null);};};
\ No newline at end of file
index b330737..b800384 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45fd=['users','admin','user','isUserLimit','crypto','util','../../mysqldb','../../config/environment','data1','license','split','format','%s:%s:%s','update','base64','utf8','final','parse','use','License','then'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x45fd,0xac));var _0xd45f=function(_0x434571,_0x4402d5){_0x434571=_0x434571-0x0;var _0x4a5f89=_0x45fd[_0x434571];return _0x4a5f89;};'use strict';var crypto=require(_0xd45f('0x0'));var util=require(_0xd45f('0x1'));var compose=require('composable-middleware');var db=require(_0xd45f('0x2'))['db'];var config=require(_0xd45f('0x3'));function getValueFromLicense(_0x3e9676,_0x5a4cbe){if(_0x3e9676&&_0x5a4cbe){if(_0x5a4cbe[_0xd45f('0x4')]&&_0x5a4cbe[_0xd45f('0x5')]){var _0xc09f65=_0x5a4cbe[_0xd45f('0x4')];var _0x2f37e2=_0x5a4cbe[_0xd45f('0x5')];var _0x52c350=_0xc09f65[_0xd45f('0x6')]('-')[0x4];var _0x4227da=_0xc09f65[_0xd45f('0x6')]('-')[0x0];var _0x2cd4d6=crypto['createDecipher']('aes-256-ctr',util[_0xd45f('0x7')](_0xd45f('0x8'),_0x52c350,_0xc09f65,_0x4227da));var _0x3dc15c=_0x2cd4d6[_0xd45f('0x9')](_0x2f37e2,_0xd45f('0xa'),_0xd45f('0xb'));_0x3dc15c+=_0x2cd4d6[_0xd45f('0xc')](_0xd45f('0xb'));var _0x754822=JSON[_0xd45f('0xd')](_0x3dc15c);return _0x754822['hasOwnProperty'](_0x3e9676)?_0x754822[_0x3e9676]:null;}}return null;}function isLimit(_0x47f4da,_0x41235c,_0x17073e,_0x27bd3e){var _0x386c2c=_0x41235c;return compose()[_0xd45f('0xe')](function(_0x5ecd45,_0x1cb04b,_0x347bac){return db[_0xd45f('0xf')]['findOne']({'where':{'id':0x1},'raw':!![]})[_0xd45f('0x10')](function(_0xa85d8b){var _0x37fb40=getValueFromLicense(_0x47f4da,_0xa85d8b);return _0x37fb40?_0x37fb40:_0x386c2c;})[_0xd45f('0x10')](function(_0x1bcdc8){_0x386c2c=_0x1bcdc8;return _0x17073e['count'](_0x27bd3e);})[_0xd45f('0x10')](function(_0x4c9de0){if(_0x4c9de0>=_0x386c2c){return _0x1cb04b['status'](0x193)['json']({'message':util[_0xd45f('0x7')]('Maximum\x20%s\x20limit\x20have\x20been\x20reached',_0x47f4da)});}_0x347bac();})['catch'](function(_0x3d7391){_0x347bac(_0x3d7391);});});}function isUserLimit(){return isLimit(_0xd45f('0x11'),0x1,db['User'],{'where':{'$or':[{'role':_0xd45f('0x12')},{'role':_0xd45f('0x13')}]}});}exports[_0xd45f('0x14')]=isUserLimit;
\ No newline at end of file
+var _0xd939=['catch','users','User','admin','user','isUserLimit','crypto','util','../../mysqldb','../../config/environment','data1','license','split','createDecipher','aes-256-ctr','format','%s:%s:%s','utf8','final','parse','findOne','count','then','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached'];(function(_0x438c31,_0x19213e){var _0x2ca268=function(_0x2cc084){while(--_0x2cc084){_0x438c31['push'](_0x438c31['shift']());}};_0x2ca268(++_0x19213e);}(_0xd939,0xf0));var _0x9d93=function(_0x560448,_0x2c1082){_0x560448=_0x560448-0x0;var _0x550276=_0xd939[_0x560448];return _0x550276;};'use strict';var crypto=require(_0x9d93('0x0'));var util=require(_0x9d93('0x1'));var compose=require('composable-middleware');var db=require(_0x9d93('0x2'))['db'];var config=require(_0x9d93('0x3'));function getValueFromLicense(_0x2a0146,_0x3f2c4d){if(_0x2a0146&&_0x3f2c4d){if(_0x3f2c4d[_0x9d93('0x4')]&&_0x3f2c4d[_0x9d93('0x5')]){var _0x491159=_0x3f2c4d['data1'];var _0x4bbe7b=_0x3f2c4d[_0x9d93('0x5')];var _0x358a32=_0x491159[_0x9d93('0x6')]('-')[0x4];var _0x3091a0=_0x491159['split']('-')[0x0];var _0x5c92fd=crypto[_0x9d93('0x7')](_0x9d93('0x8'),util[_0x9d93('0x9')](_0x9d93('0xa'),_0x358a32,_0x491159,_0x3091a0));var _0x2af7dc=_0x5c92fd['update'](_0x4bbe7b,'base64',_0x9d93('0xb'));_0x2af7dc+=_0x5c92fd[_0x9d93('0xc')]('utf8');var _0x394974=JSON[_0x9d93('0xd')](_0x2af7dc);return _0x394974['hasOwnProperty'](_0x2a0146)?_0x394974[_0x2a0146]:null;}}return null;}function isLimit(_0x2a2e96,_0x1f49df,_0x286043,_0x340d96){var _0x45de75=_0x1f49df;return compose()['use'](function(_0x2854dd,_0x12a38b,_0x1294fe){return db['License'][_0x9d93('0xe')]({'where':{'id':0x1},'raw':!![]})['then'](function(_0x285371){var _0x31f30e=getValueFromLicense(_0x2a2e96,_0x285371);return _0x31f30e?_0x31f30e:_0x45de75;})['then'](function(_0x2e0ed5){_0x45de75=_0x2e0ed5;return _0x286043[_0x9d93('0xf')](_0x340d96);})[_0x9d93('0x10')](function(_0x9701db){if(_0x9701db>=_0x45de75){return _0x12a38b[_0x9d93('0x11')](0x193)[_0x9d93('0x12')]({'message':util[_0x9d93('0x9')](_0x9d93('0x13'),_0x2a2e96)});}_0x1294fe();})[_0x9d93('0x14')](function(_0x49ccce){_0x1294fe(_0x49ccce);});});}function isUserLimit(){return isLimit(_0x9d93('0x15'),0x1,db[_0x9d93('0x16')],{'where':{'$or':[{'role':_0x9d93('0x17')},{'role':_0x9d93('0x18')}]}});}exports[_0x9d93('0x19')]=isUserLimit;
\ No newline at end of file
index 20c51a6..fc98a30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb05=['$between','value','$gt','$lte','days','castTo','text','CAST(','field','\x20AS\x20','includes','$ne','$notIn','\x20OR\x20','$in','IN\x20?','NOT\x20IN\x20?','$eq','<>\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','<\x20?','$gte','>=\x20?','BETWEEN\x20?\x20AND\x20?','start','utcOffset','format','add','hours','seconds','lodash','moment','parseSearch','sqlOperator','startsWith','and','replace','[$and]','[$or]','split','slice','forEach','shift','filter','indexOf','conditions','buildExpression','DATE','operator'];(function(_0x14f226,_0x5a9dbe){var _0x363e30=function(_0x218dbc){while(--_0x218dbc){_0x14f226['push'](_0x14f226['shift']());}};_0x363e30(++_0x5a9dbe);}(_0xdb05,0x89));var _0x5db0=function(_0x4fb091,_0x14def4){_0x4fb091=_0x4fb091-0x0;var _0x29a584=_0xdb05[_0x4fb091];return _0x29a584;};'use strict';var _=require(_0x5db0('0x0'));var moment=require(_0x5db0('0x1'));exports[_0x5db0('0x2')]=function(_0x57a9c6){var _0xebef94={'conditions':[]};_0xebef94[_0x5db0('0x3')]=_[_0x5db0('0x4')](_0x57a9c6,'[$or]')?'or':_0x5db0('0x5');var _0x11a93c=_0x57a9c6[_0x5db0('0x6')](_0x5db0('0x7'),'')[_0x5db0('0x6')](_0x5db0('0x8'),'')[_0x5db0('0x9')]('||');for(var _0x31146f=0x0;_0x31146f<_0x11a93c['length'];_0x31146f++){var _0x2222a8=_0x11a93c[_0x31146f][_0x5db0('0x9')](':=');var _0x56b241=_0x2222a8[0x0];var _0x7df7d2=_0x2222a8[_0x5db0('0xa')](0x1);_0x7df7d2[_0x5db0('0xb')](function(_0x56275f){var _0x129c86=_0x56275f['split']('[')[_0x5db0('0xc')]();var _0x5b0fd6=_0x56275f['match'](/\[(.*?)\]/g);_0x5b0fd6[_0x5db0('0xb')](function(_0x3d1869){var _0x2c55a3=_0x3d1869[_0x5db0('0x9')]('[')[_0x5db0('0xd')](function(_0x5776e2){return _0x5776e2[_0x5db0('0xe')](']')>-0x1;})['map'](function(_0x22d570){return _0x22d570[_0x5db0('0x9')](']')[0x0];})[0x0];_0xebef94[_0x5db0('0xf')]['push']({'field':_0x56b241,'operator':_0x129c86,'value':_0x2c55a3});});});}return _0xebef94;};exports[_0x5db0('0x10')]=function(_0x4bf656,_0x1ab366,_0xfa95cd){var _0x564677={};if(_0x1ab366===_0x5db0('0x11')){if(_0xfa95cd[_0x5db0('0x12')]==='$eq'){_0xfa95cd['operator']=_0x5db0('0x13');_0xfa95cd[_0x5db0('0x14')]+=','+_0xfa95cd[_0x5db0('0x14')];}else if(_['includes']([_0x5db0('0x15'),_0x5db0('0x16')],_0xfa95cd['operator'])){_0xfa95cd[_0x5db0('0x14')]=moment(_0xfa95cd[_0x5db0('0x14')])['add'](0x1,_0x5db0('0x17'))['format']('YYYY-MM-DD');}}if(_0xfa95cd[_0x5db0('0x18')]){_0x1ab366=_0xfa95cd['castTo'];_0x564677[_0x5db0('0x19')]=_0x5db0('0x1a')+_0x4bf656+'.'+_0xfa95cd[_0x5db0('0x1b')]+_0x5db0('0x1c')+_0xfa95cd['castTo']+')\x20'+parseOperator(_0xfa95cd[_0x5db0('0x12')]);}else{_0x564677['text']=_0x4bf656+'.'+_0xfa95cd[_0x5db0('0x1b')]+'\x20'+parseOperator(_0xfa95cd['operator']);}if(_[_0x5db0('0x1d')]([_0x5db0('0x1e'),_0x5db0('0x1f')],_0xfa95cd[_0x5db0('0x12')]))_0x564677['text']='('+_0x564677[_0x5db0('0x19')]+_0x5db0('0x20')+_0x4bf656+'.'+_0xfa95cd[_0x5db0('0x1b')]+'\x20IS\x20NULL)';_0x564677[_0x5db0('0x14')]=parseValue(_0x1ab366,_0xfa95cd[_0x5db0('0x12')],_0xfa95cd[_0x5db0('0x14')]);return _0x564677;};function parseOperator(_0x53290e){var _0x379a98;switch(_0x53290e){case _0x5db0('0x21'):_0x379a98=_0x5db0('0x22');break;case _0x5db0('0x1f'):_0x379a98=_0x5db0('0x23');break;case _0x5db0('0x24'):_0x379a98='=\x20?';break;case _0x5db0('0x1e'):_0x379a98=_0x5db0('0x25');break;case _0x5db0('0x26'):case _0x5db0('0x27'):case _0x5db0('0x28'):_0x379a98=_0x5db0('0x29');break;case'$lt':_0x379a98=_0x5db0('0x2a');break;case _0x5db0('0x15'):_0x379a98='>\x20?';break;case _0x5db0('0x16'):_0x379a98='<=\x20?';break;case _0x5db0('0x2b'):_0x379a98=_0x5db0('0x2c');break;case'$between':_0x379a98=_0x5db0('0x2d');break;}return _0x379a98;}function parseValue(_0x3aae97,_0x590ece,_0xc73838){var _0x4b45eb={'start':undefined,'end':undefined};switch(_0x590ece){case'$in':case'$notIn':_0x4b45eb[_0x5db0('0x2e')]=_0xc73838[_0x5db0('0x9')](',');break;case _0x5db0('0x26'):_0x4b45eb[_0x5db0('0x2e')]='%'+_0xc73838+'%';break;case _0x5db0('0x27'):_0x4b45eb['start']=_0xc73838+'%';break;case _0x5db0('0x28'):_0x4b45eb[_0x5db0('0x2e')]='%'+_0xc73838;break;case'$between':var _0x559f28=_0xc73838[_0x5db0('0x9')](',');var _0xc73838=_0x559f28['shift']();var _0xe72ce5=_0x559f28['pop']();if(_0x3aae97===_0x5db0('0x11')){_0xc73838=moment(_0xc73838)[_0x5db0('0x2f')](0x0,!![])[_0x5db0('0x30')]();_0xe72ce5=moment(_0xe72ce5)[_0x5db0('0x2f')](0x0,!![])[_0x5db0('0x31')](0x17,_0x5db0('0x32'))[_0x5db0('0x31')](0x3b,'minutes')[_0x5db0('0x31')](0x3b,_0x5db0('0x33'))['format']();}_0x4b45eb={'start':_0xc73838,'end':_0xe72ce5};break;default:_0x4b45eb[_0x5db0('0x2e')]=_0xc73838;break;}return _0x4b45eb;}
\ No newline at end of file
+var _0x50d7=['$gt','>\x20?','<=\x20?','$gte','>=\x20?','start','$endsWith','pop','utcOffset','hours','seconds','lodash','parseSearch','startsWith','[$or]','and','replace','split','slice','forEach','shift','filter','indexOf','map','conditions','push','DATE','operator','$between','value','$lte','add','format','castTo','text','CAST(','field','\x20AS\x20','includes','$notIn','\x20OR\x20','$in','IN\x20?','NOT\x20IN\x20?','$eq','$substring','$startsWith','LIKE\x20?','$lt'];(function(_0x4f20ab,_0x857c0f){var _0x2ea2c0=function(_0x2801dd){while(--_0x2801dd){_0x4f20ab['push'](_0x4f20ab['shift']());}};_0x2ea2c0(++_0x857c0f);}(_0x50d7,0xcf));var _0x750d=function(_0xefd519,_0xc62635){_0xefd519=_0xefd519-0x0;var _0x4bb882=_0x50d7[_0xefd519];return _0x4bb882;};'use strict';var _=require(_0x750d('0x0'));var moment=require('moment');exports[_0x750d('0x1')]=function(_0x86194d){var _0x4da44e={'conditions':[]};_0x4da44e['sqlOperator']=_[_0x750d('0x2')](_0x86194d,_0x750d('0x3'))?'or':_0x750d('0x4');var _0x3650bd=_0x86194d[_0x750d('0x5')]('[$and]','')[_0x750d('0x5')](_0x750d('0x3'),'')[_0x750d('0x6')]('||');for(var _0x5d4771=0x0;_0x5d4771<_0x3650bd['length'];_0x5d4771++){var _0x436259=_0x3650bd[_0x5d4771]['split'](':=');var _0x5ebaec=_0x436259[0x0];var _0x581fe3=_0x436259[_0x750d('0x7')](0x1);_0x581fe3[_0x750d('0x8')](function(_0x318f65){var _0x8469ca=_0x318f65[_0x750d('0x6')]('[')[_0x750d('0x9')]();var _0x2c9e47=_0x318f65['match'](/\[(.*?)\]/g);_0x2c9e47[_0x750d('0x8')](function(_0x3f4e76){var _0x311c79=_0x3f4e76[_0x750d('0x6')]('[')[_0x750d('0xa')](function(_0x53cbed){return _0x53cbed[_0x750d('0xb')](']')>-0x1;})[_0x750d('0xc')](function(_0xdd1d2e){return _0xdd1d2e[_0x750d('0x6')](']')[0x0];})[0x0];_0x4da44e[_0x750d('0xd')][_0x750d('0xe')]({'field':_0x5ebaec,'operator':_0x8469ca,'value':_0x311c79});});});}return _0x4da44e;};exports['buildExpression']=function(_0x23dba8,_0x88144f,_0x3ec15b){var _0x114592={};if(_0x88144f===_0x750d('0xf')){if(_0x3ec15b[_0x750d('0x10')]==='$eq'){_0x3ec15b[_0x750d('0x10')]=_0x750d('0x11');_0x3ec15b[_0x750d('0x12')]+=','+_0x3ec15b['value'];}else if(_['includes'](['$gt',_0x750d('0x13')],_0x3ec15b['operator'])){_0x3ec15b[_0x750d('0x12')]=moment(_0x3ec15b[_0x750d('0x12')])[_0x750d('0x14')](0x1,'days')[_0x750d('0x15')]('YYYY-MM-DD');}}if(_0x3ec15b[_0x750d('0x16')]){_0x88144f=_0x3ec15b['castTo'];_0x114592[_0x750d('0x17')]=_0x750d('0x18')+_0x23dba8+'.'+_0x3ec15b[_0x750d('0x19')]+_0x750d('0x1a')+_0x3ec15b['castTo']+')\x20'+parseOperator(_0x3ec15b['operator']);}else{_0x114592[_0x750d('0x17')]=_0x23dba8+'.'+_0x3ec15b['field']+'\x20'+parseOperator(_0x3ec15b[_0x750d('0x10')]);}if(_[_0x750d('0x1b')](['$ne',_0x750d('0x1c')],_0x3ec15b[_0x750d('0x10')]))_0x114592[_0x750d('0x17')]='('+_0x114592[_0x750d('0x17')]+_0x750d('0x1d')+_0x23dba8+'.'+_0x3ec15b[_0x750d('0x19')]+'\x20IS\x20NULL)';_0x114592[_0x750d('0x12')]=parseValue(_0x88144f,_0x3ec15b['operator'],_0x3ec15b['value']);return _0x114592;};function parseOperator(_0x2704c3){var _0x514191;switch(_0x2704c3){case _0x750d('0x1e'):_0x514191=_0x750d('0x1f');break;case _0x750d('0x1c'):_0x514191=_0x750d('0x20');break;case _0x750d('0x21'):_0x514191='=\x20?';break;case'$ne':_0x514191='<>\x20?';break;case _0x750d('0x22'):case _0x750d('0x23'):case'$endsWith':_0x514191=_0x750d('0x24');break;case _0x750d('0x25'):_0x514191='<\x20?';break;case _0x750d('0x26'):_0x514191=_0x750d('0x27');break;case _0x750d('0x13'):_0x514191=_0x750d('0x28');break;case _0x750d('0x29'):_0x514191=_0x750d('0x2a');break;case _0x750d('0x11'):_0x514191='BETWEEN\x20?\x20AND\x20?';break;}return _0x514191;}function parseValue(_0x32c237,_0xa2fcf3,_0x48157f){var _0x504a10={'start':undefined,'end':undefined};switch(_0xa2fcf3){case _0x750d('0x1e'):case _0x750d('0x1c'):_0x504a10['start']=_0x48157f[_0x750d('0x6')](',');break;case _0x750d('0x22'):_0x504a10[_0x750d('0x2b')]='%'+_0x48157f+'%';break;case'$startsWith':_0x504a10[_0x750d('0x2b')]=_0x48157f+'%';break;case _0x750d('0x2c'):_0x504a10[_0x750d('0x2b')]='%'+_0x48157f;break;case _0x750d('0x11'):var _0x28b120=_0x48157f[_0x750d('0x6')](',');var _0x48157f=_0x28b120[_0x750d('0x9')]();var _0x3229ed=_0x28b120[_0x750d('0x2d')]();if(_0x32c237===_0x750d('0xf')){_0x48157f=moment(_0x48157f)[_0x750d('0x2e')](0x0,!![])[_0x750d('0x15')]();_0x3229ed=moment(_0x3229ed)[_0x750d('0x2e')](0x0,!![])[_0x750d('0x14')](0x17,_0x750d('0x2f'))[_0x750d('0x14')](0x3b,'minutes')[_0x750d('0x14')](0x3b,_0x750d('0x30'))['format']();}_0x504a10={'start':_0x48157f,'end':_0x3229ed};break;default:_0x504a10['start']=_0x48157f;break;}return _0x504a10;}
\ No newline at end of file
index 397b6cd..1755fab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x881f=['options','lodash','sequelize','moment','keys','includes','parse','fields','filters','forOwn','find','type','DATE','isPlainObject','$gte','format','YYYY-MM-DD','utc','$lte','subtract','uniqueid','isArray','limit','offset','map','priority','cast','unsigned','substr','DESC','ASC','omit','isString','length','unset','hasOwnProperty','isNumeric','isEmail','match','getFullTextValue','split','forEach','replace','push','join','getOptions','query','$id','model','name','intersection','attributes','nolimit','sort','where','pick','filter','merge','VIRTUAL','lower'];(function(_0x825ea9,_0x56c3ea){var _0x4282a8=function(_0x9dd4e2){while(--_0x9dd4e2){_0x825ea9['push'](_0x825ea9['shift']());}};_0x4282a8(++_0x56c3ea);}(_0x881f,0x1a5));var _0xf881=function(_0x489ed8,_0x4bb0ea){_0x489ed8=_0x489ed8-0x0;var _0x32673e=_0x881f[_0x489ed8];return _0x32673e;};'use strict';var _=require(_0xf881('0x0'));var sequelize=require(_0xf881('0x1'));var moment=require(_0xf881('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x45ada7){var _0x3da513=['ne'];try{var _0x586572=JSON['parse'](_0x45ada7);var _0xdb44b7=Object[_0xf881('0x3')](_0x586572)[0x0];return _0x3da513[_0xf881('0x4')](_0xdb44b7);}catch(_0x29f3d7){return![];}}function getOperatorValue(_0x117596){var _0x4bfad6=JSON[_0xf881('0x5')](_0x117596);var _0x186ee0=Object[_0xf881('0x3')](_0x4bfad6)[0x0];var _0x1e899a=_0x4bfad6[_0x186ee0];return{['$'+_0x186ee0]:_0x1e899a};}exports[_0xf881('0x6')]=function(_0x5ebbe3){var _0x2800f2=null;if(_0x5ebbe3){_0x2800f2=_0x5ebbe3['split'](',');}return _0x2800f2;};exports[_0xf881('0x7')]=function(_0x24b8fd,_0x5a703b){var _0x247dbe={};if(!_['isEmpty'](_0x24b8fd)){_[_0xf881('0x8')](_0x24b8fd,function(_0x2fdc37,_0x3dd132){try{if(_0x5a703b){var _0x123a88=_[_0xf881('0x9')](_0x5a703b,{'name':_0x3dd132})||{};if(hasSequelizeOperator(_0x2fdc37)){_0x247dbe[_0x3dd132]=getOperatorValue(_0x2fdc37);}else if(_0x123a88[_0xf881('0xa')]===_0xf881('0xb')&&_[_0xf881('0xc')](_0x2fdc37)){var _0x45da49=JSON[_0xf881('0x5')](_0x2fdc37);var _0x3c1ec1={'$gte':moment(moment(_0x45da49[_0xf881('0xd')])[_0xf881('0xe')](_0xf881('0xf')))[_0xf881('0x10')]()[_0xf881('0xe')](),'$lte':moment(moment(_0x45da49[_0xf881('0x11')])[_0xf881('0xe')](_0xf881('0xf')))[_0xf881('0x10')]()[_0xf881('0x12')](0x1,'s')[_0xf881('0xe')]()};_0x247dbe[_0x3dd132]=_0x3c1ec1;}else if(_0x123a88['name']===_0xf881('0x13')){_0x247dbe[_0x3dd132]=_0x2fdc37;}else{_0x247dbe[_0x3dd132]=_['isArray'](_0x2fdc37)?_0x2fdc37:JSON['parse'](_0x2fdc37);}}else{_0x247dbe[_0x3dd132]=_[_0xf881('0x14')](_0x2fdc37)?_0x2fdc37:JSON[_0xf881('0x5')](_0x2fdc37);}}catch(_0x1a4e9f){_0x247dbe[_0x3dd132]=_0x2fdc37['split'](',');}});}return _0x247dbe;};exports[_0xf881('0x15')]=function(_0x31634f){_0x31634f=parseInt(_0x31634f,0xa);if(!_0x31634f||_0x31634f<0x0){_0x31634f=LIMIT_VALUE;}return _0x31634f;};exports[_0xf881('0x16')]=function(_0x5eb145){_0x5eb145=parseInt(_0x5eb145,0xa);if(!_0x5eb145||_0x5eb145<0x0){_0x5eb145=0x0;}return _0x5eb145;};exports['sort']=function(_0x219b19){var _0x1d701c,_0x135a42=null;if(_0x219b19){_0x1d701c=_0x219b19['split'](',');_0x135a42=_[_0xf881('0x17')](_0x1d701c,function(_0x35fecd){if(_0x35fecd['indexOf']('-')===0x0){return[_0x35fecd===_0xf881('0x18')?sequelize[_0xf881('0x19')](sequelize['col'](_0xf881('0x18')),_0xf881('0x1a')):_0x35fecd[_0xf881('0x1b')](0x1),_0xf881('0x1c')];}else{return[_0x35fecd===_0xf881('0x18')?sequelize[_0xf881('0x19')](sequelize['col'](_0xf881('0x18')),_0xf881('0x1a')):_0x35fecd,_0xf881('0x1d')];}});}return _0x135a42;};exports[_0xf881('0x1e')]=function(_0x232dca,_0x14768d){if(_['isEmpty'](_0x232dca)){return _0x232dca;}if(_[_0xf881('0x14')](_0x232dca)){for(var _0x1291f8=0x0;_0x1291f8<_0x232dca['length'];_0x1291f8+=0x1){_0x232dca[_0x1291f8]=this[_0xf881('0x1e')](_0x232dca[_0x1291f8],_0x14768d);}return _0x232dca;}if(!_['isObject'](_0x232dca)){return _0x232dca;}if(_[_0xf881('0x1f')](_0x14768d)){_0x14768d=[_0x14768d];}if(!_[_0xf881('0x14')](_0x14768d)){return _0x232dca;}for(var _0xf8007a=0x0;_0xf8007a<_0x14768d[_0xf881('0x20')];_0xf8007a+=0x1){_[_0xf881('0x21')](_0x232dca,_0x14768d[_0xf8007a]);}for(var _0xd7ce66 in _0x232dca){if(_0x232dca[_0xf881('0x22')](_0xd7ce66)){_0x232dca[_0xd7ce66]=this[_0xf881('0x1e')](_0x232dca[_0xd7ce66],_0x14768d);}}return _0x232dca;};exports[_0xf881('0x23')]=function(_0x4250dd){return _0x4250dd['match'](RegExp('^[+]?[0-9]*$'))?!![]:![];};exports[_0xf881('0x24')]=function(_0x566d78){return _0x566d78[_0xf881('0x25')](/^\S+@\S+$/)?!![]:![];};exports[_0xf881('0x26')]=function(_0x1ac29d){var _0x4309be=[];_0x1ac29d[_0xf881('0x27')](/[ ,]+/)[_0xf881('0x28')](function(_0x59f1ab){_0x59f1ab=_0x59f1ab[_0xf881('0x29')](/([^:]")"+/g,'$1');_0x59f1ab='+'+_0x59f1ab+'*';if(_0x59f1ab[_0xf881('0x4')]('@'))_0x59f1ab='\x22'+_0x59f1ab+'\x22';_0x4309be[_0xf881('0x2a')](_0x59f1ab);});return _0x4309be[_0xf881('0x2b')]('\x20');};exports[_0xf881('0x2c')]=function(_0x3ab277,_0x273dd4,_0x19a4b0){var _0x4722b2={},_0xc0fe41={};if(_0x273dd4[_0xf881('0x2d')][_0xf881('0x2e')]){_0x273dd4[_0xf881('0x2d')]['id']=_0x273dd4[_0xf881('0x2d')]['$id'];delete _0x273dd4[_0xf881('0x2d')]['$id'];}_0x4722b2[_0xf881('0x2f')]=_['map'](_0x3ab277,_0xf881('0x30'));_0x4722b2[_0xf881('0x2d')]=_['keys'](_0x273dd4[_0xf881('0x2d')]);_0x4722b2[_0xf881('0x7')]=_[_0xf881('0x31')](_0x4722b2[_0xf881('0x2f')],_0x4722b2[_0xf881('0x2d')]);_0xc0fe41['attributes']=_[_0xf881('0x31')](_0x4722b2['model'],this[_0xf881('0x6')](_0x273dd4[_0xf881('0x2d')][_0xf881('0x6')]));_0xc0fe41[_0xf881('0x32')]=_0xc0fe41[_0xf881('0x32')]['length']?_0xc0fe41[_0xf881('0x32')]:_0x4722b2[_0xf881('0x2f')];if(!_0x273dd4['query'][_0xf881('0x22')](_0xf881('0x33'))){_0xc0fe41[_0xf881('0x15')]=this[_0xf881('0x15')](_0x273dd4[_0xf881('0x2d')][_0xf881('0x15')]);_0xc0fe41[_0xf881('0x16')]=this[_0xf881('0x16')](_0x273dd4['query'][_0xf881('0x16')]);}_0xc0fe41['order']=this['sort'](_0x273dd4['query'][_0xf881('0x34')]);_0xc0fe41[_0xf881('0x35')]=this[_0xf881('0x7')](_[_0xf881('0x36')](_0x273dd4[_0xf881('0x2d')],_0x4722b2['filters']),_0x3ab277);if(_0x273dd4['query'][_0xf881('0x37')]){_0xc0fe41[_0xf881('0x35')]=_[_0xf881('0x38')](_0xc0fe41[_0xf881('0x35')],{'$or':_['map'](_0x3ab277,function(_0x43a216){if(_0x43a216[_0xf881('0xa')]!==_0xf881('0x39')){if(_0x19a4b0){return sequelize['where'](sequelize['fn'](_0xf881('0x3a'),sequelize['col'](_0x43a216[_0xf881('0x30')])),{'$like':sequelize['fn'](_0xf881('0x3a'),'%'+_0x273dd4[_0xf881('0x2d')]['filter']+'%')});}else{var _0x8b7aff={};_0x8b7aff[_0x43a216[_0xf881('0x30')]]={'$like':'%'+_0x273dd4[_0xf881('0x2d')]['filter']+'%'};return _0x8b7aff;}}})});}_0xc0fe41=_['merge']({},_0xc0fe41,_0x273dd4[_0xf881('0x3b')]);return _0xc0fe41;};
\ No newline at end of file
+var _0x730e=['length','omit','unset','isNumeric','match','^[+]?[0-9]*$','isEmail','forEach','replace','join','query','$id','model','name','intersection','attributes','nolimit','offset','order','pick','filter','where','merge','VIRTUAL','lower','lodash','sequelize','moment','parse','keys','includes','fields','split','filters','forOwn','find','type','DATE','isPlainObject','$gte','YYYY-MM-DD','utc','format','$lte','subtract','isArray','limit','sort','map','indexOf','priority','cast','col','unsigned','DESC','ASC'];(function(_0x264655,_0x57dbd6){var _0x5f05ba=function(_0x470905){while(--_0x470905){_0x264655['push'](_0x264655['shift']());}};_0x5f05ba(++_0x57dbd6);}(_0x730e,0x131));var _0xe730=function(_0x961a45,_0x3977de){_0x961a45=_0x961a45-0x0;var _0x390064=_0x730e[_0x961a45];return _0x390064;};'use strict';var _=require(_0xe730('0x0'));var sequelize=require(_0xe730('0x1'));var moment=require(_0xe730('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x334e9a){var _0x2892c9=['ne'];try{var _0x479ec4=JSON[_0xe730('0x3')](_0x334e9a);var _0x22b229=Object[_0xe730('0x4')](_0x479ec4)[0x0];return _0x2892c9[_0xe730('0x5')](_0x22b229);}catch(_0x27ca43){return![];}}function getOperatorValue(_0x12d77f){var _0x19cf1c=JSON[_0xe730('0x3')](_0x12d77f);var _0x5b91ea=Object['keys'](_0x19cf1c)[0x0];var _0x453596=_0x19cf1c[_0x5b91ea];return{['$'+_0x5b91ea]:_0x453596};}exports[_0xe730('0x6')]=function(_0x823ffe){var _0x21be61=null;if(_0x823ffe){_0x21be61=_0x823ffe[_0xe730('0x7')](',');}return _0x21be61;};exports[_0xe730('0x8')]=function(_0x1ca778,_0x5d452b){var _0x2977de={};if(!_['isEmpty'](_0x1ca778)){_[_0xe730('0x9')](_0x1ca778,function(_0x5aad3d,_0xb9065a){try{if(_0x5d452b){var _0x460b62=_[_0xe730('0xa')](_0x5d452b,{'name':_0xb9065a})||{};if(hasSequelizeOperator(_0x5aad3d)){_0x2977de[_0xb9065a]=getOperatorValue(_0x5aad3d);}else if(_0x460b62[_0xe730('0xb')]===_0xe730('0xc')&&_[_0xe730('0xd')](_0x5aad3d)){var _0x5be8c0=JSON[_0xe730('0x3')](_0x5aad3d);var _0x57d2d9={'$gte':moment(moment(_0x5be8c0[_0xe730('0xe')])['format'](_0xe730('0xf')))[_0xe730('0x10')]()[_0xe730('0x11')](),'$lte':moment(moment(_0x5be8c0[_0xe730('0x12')])['format']('YYYY-MM-DD'))['utc']()[_0xe730('0x13')](0x1,'s')[_0xe730('0x11')]()};_0x2977de[_0xb9065a]=_0x57d2d9;}else if(_0x460b62['name']==='uniqueid'){_0x2977de[_0xb9065a]=_0x5aad3d;}else{_0x2977de[_0xb9065a]=_[_0xe730('0x14')](_0x5aad3d)?_0x5aad3d:JSON[_0xe730('0x3')](_0x5aad3d);}}else{_0x2977de[_0xb9065a]=_[_0xe730('0x14')](_0x5aad3d)?_0x5aad3d:JSON[_0xe730('0x3')](_0x5aad3d);}}catch(_0x1b0635){_0x2977de[_0xb9065a]=_0x5aad3d[_0xe730('0x7')](',');}});}return _0x2977de;};exports[_0xe730('0x15')]=function(_0x1d8726){_0x1d8726=parseInt(_0x1d8726,0xa);if(!_0x1d8726||_0x1d8726<0x0){_0x1d8726=LIMIT_VALUE;}return _0x1d8726;};exports['offset']=function(_0x1a16cc){_0x1a16cc=parseInt(_0x1a16cc,0xa);if(!_0x1a16cc||_0x1a16cc<0x0){_0x1a16cc=0x0;}return _0x1a16cc;};exports[_0xe730('0x16')]=function(_0x5ed60c){var _0x47f829,_0x4b06cc=null;if(_0x5ed60c){_0x47f829=_0x5ed60c[_0xe730('0x7')](',');_0x4b06cc=_[_0xe730('0x17')](_0x47f829,function(_0xb1ea25){if(_0xb1ea25[_0xe730('0x18')]('-')===0x0){return[_0xb1ea25===_0xe730('0x19')?sequelize[_0xe730('0x1a')](sequelize[_0xe730('0x1b')](_0xe730('0x19')),_0xe730('0x1c')):_0xb1ea25['substr'](0x1),_0xe730('0x1d')];}else{return[_0xb1ea25==='priority'?sequelize[_0xe730('0x1a')](sequelize[_0xe730('0x1b')](_0xe730('0x19')),_0xe730('0x1c')):_0xb1ea25,_0xe730('0x1e')];}});}return _0x4b06cc;};exports['omit']=function(_0x5b85ff,_0x4d209e){if(_['isEmpty'](_0x5b85ff)){return _0x5b85ff;}if(_[_0xe730('0x14')](_0x5b85ff)){for(var _0x3872df=0x0;_0x3872df<_0x5b85ff[_0xe730('0x1f')];_0x3872df+=0x1){_0x5b85ff[_0x3872df]=this[_0xe730('0x20')](_0x5b85ff[_0x3872df],_0x4d209e);}return _0x5b85ff;}if(!_['isObject'](_0x5b85ff)){return _0x5b85ff;}if(_['isString'](_0x4d209e)){_0x4d209e=[_0x4d209e];}if(!_['isArray'](_0x4d209e)){return _0x5b85ff;}for(var _0x5dab40=0x0;_0x5dab40<_0x4d209e[_0xe730('0x1f')];_0x5dab40+=0x1){_[_0xe730('0x21')](_0x5b85ff,_0x4d209e[_0x5dab40]);}for(var _0x20bf70 in _0x5b85ff){if(_0x5b85ff['hasOwnProperty'](_0x20bf70)){_0x5b85ff[_0x20bf70]=this[_0xe730('0x20')](_0x5b85ff[_0x20bf70],_0x4d209e);}}return _0x5b85ff;};exports[_0xe730('0x22')]=function(_0x54f2ea){return _0x54f2ea[_0xe730('0x23')](RegExp(_0xe730('0x24')))?!![]:![];};exports[_0xe730('0x25')]=function(_0x257b74){return _0x257b74[_0xe730('0x23')](/^\S+@\S+$/)?!![]:![];};exports['getFullTextValue']=function(_0x14e9fe){var _0x3b7099=[];_0x14e9fe[_0xe730('0x7')](/[ ,]+/)[_0xe730('0x26')](function(_0x36604d){_0x36604d=_0x36604d[_0xe730('0x27')](/([^:]")"+/g,'$1');_0x36604d='+'+_0x36604d+'*';if(_0x36604d[_0xe730('0x5')]('@'))_0x36604d='\x22'+_0x36604d+'\x22';_0x3b7099['push'](_0x36604d);});return _0x3b7099[_0xe730('0x28')]('\x20');};exports['getOptions']=function(_0x5e83bf,_0x1f333a,_0x17ff4c){var _0x11c609={},_0x1e3457={};if(_0x1f333a[_0xe730('0x29')][_0xe730('0x2a')]){_0x1f333a[_0xe730('0x29')]['id']=_0x1f333a[_0xe730('0x29')][_0xe730('0x2a')];delete _0x1f333a[_0xe730('0x29')][_0xe730('0x2a')];}_0x11c609[_0xe730('0x2b')]=_[_0xe730('0x17')](_0x5e83bf,_0xe730('0x2c'));_0x11c609[_0xe730('0x29')]=_[_0xe730('0x4')](_0x1f333a[_0xe730('0x29')]);_0x11c609[_0xe730('0x8')]=_[_0xe730('0x2d')](_0x11c609[_0xe730('0x2b')],_0x11c609[_0xe730('0x29')]);_0x1e3457['attributes']=_[_0xe730('0x2d')](_0x11c609[_0xe730('0x2b')],this[_0xe730('0x6')](_0x1f333a[_0xe730('0x29')][_0xe730('0x6')]));_0x1e3457[_0xe730('0x2e')]=_0x1e3457['attributes'][_0xe730('0x1f')]?_0x1e3457[_0xe730('0x2e')]:_0x11c609[_0xe730('0x2b')];if(!_0x1f333a[_0xe730('0x29')]['hasOwnProperty'](_0xe730('0x2f'))){_0x1e3457[_0xe730('0x15')]=this[_0xe730('0x15')](_0x1f333a['query'][_0xe730('0x15')]);_0x1e3457['offset']=this[_0xe730('0x30')](_0x1f333a['query'][_0xe730('0x30')]);}_0x1e3457[_0xe730('0x31')]=this[_0xe730('0x16')](_0x1f333a[_0xe730('0x29')][_0xe730('0x16')]);_0x1e3457['where']=this['filters'](_[_0xe730('0x32')](_0x1f333a[_0xe730('0x29')],_0x11c609[_0xe730('0x8')]),_0x5e83bf);if(_0x1f333a[_0xe730('0x29')][_0xe730('0x33')]){_0x1e3457[_0xe730('0x34')]=_[_0xe730('0x35')](_0x1e3457[_0xe730('0x34')],{'$or':_[_0xe730('0x17')](_0x5e83bf,function(_0x40d591){if(_0x40d591[_0xe730('0xb')]!==_0xe730('0x36')){if(_0x17ff4c){return sequelize[_0xe730('0x34')](sequelize['fn']('lower',sequelize[_0xe730('0x1b')](_0x40d591[_0xe730('0x2c')])),{'$like':sequelize['fn'](_0xe730('0x37'),'%'+_0x1f333a[_0xe730('0x29')][_0xe730('0x33')]+'%')});}else{var _0x6815be={};_0x6815be[_0x40d591['name']]={'$like':'%'+_0x1f333a[_0xe730('0x29')][_0xe730('0x33')]+'%'};return _0x6815be;}}})});}_0x1e3457=_[_0xe730('0x35')]({},_0x1e3457,_0x1f333a['options']);return _0x1e3457;};
\ No newline at end of file
index 7cd0bf1..7bdc85a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5deb=['express','serve-favicon','body-parser','method-override','cookie-parser','errorhandler','path','passport','cors','./environment','../mysqldb','default','get','env','production','set','join','root','public','test','appPath','client','use','json\x20replacer','toISOString','static','html','ejs','renderFile','view\x20engine','50mb','json','initialize'];(function(_0x3b99b3,_0x51cf6c){var _0xb7cd6f=function(_0x3afe92){while(--_0x3afe92){_0x3b99b3['push'](_0x3b99b3['shift']());}};_0xb7cd6f(++_0x51cf6c);}(_0x5deb,0x1ad));var _0xb5de=function(_0x1123bb,_0x54472a){_0x1123bb=_0x1123bb-0x0;var _0xdeb602=_0x5deb[_0x1123bb];return _0xdeb602;};'use strict';var express=require(_0xb5de('0x0'));var favicon=require(_0xb5de('0x1'));var bodyParser=require(_0xb5de('0x2'));var methodOverride=require(_0xb5de('0x3'));var cookieParser=require(_0xb5de('0x4'));var errorHandler=require(_0xb5de('0x5'));var path=require(_0xb5de('0x6'));var passport=require(_0xb5de('0x7'));var cors=require(_0xb5de('0x8'));var moment=require('moment');var config=require(_0xb5de('0x9'));var db=require(_0xb5de('0xa'))['db'];exports[_0xb5de('0xb')]=function(_0x4a0a5a){var _0x5df65b=_0x4a0a5a[_0xb5de('0xc')](_0xb5de('0xd'));if(_0x5df65b===_0xb5de('0xe')){_0x4a0a5a[_0xb5de('0xf')]('appPath',path[_0xb5de('0x10')](config[_0xb5de('0x11')],_0xb5de('0x12')));}if(_0x5df65b==='development'||_0x5df65b===_0xb5de('0x13')){_0x4a0a5a[_0xb5de('0xf')](_0xb5de('0x14'),path['join'](config[_0xb5de('0x11')],_0xb5de('0x15')));_0x4a0a5a[_0xb5de('0x16')](errorHandler());}_0x4a0a5a[_0xb5de('0xf')](_0xb5de('0x17'),function(_0x51f618,_0x5e3c1a){if(this[_0x51f618]instanceof Date){_0x5e3c1a=this[_0x51f618][_0xb5de('0x18')]()['split']('.')[0x0]+'Z';}return _0x5e3c1a;});_0x4a0a5a['use'](express[_0xb5de('0x19')](_0x4a0a5a['get']('appPath')));_0x4a0a5a[_0xb5de('0xf')]('views',config[_0xb5de('0x11')]+'/server/views');_0x4a0a5a['engine'](_0xb5de('0x1a'),require(_0xb5de('0x1b'))[_0xb5de('0x1c')]);_0x4a0a5a['set'](_0xb5de('0x1d'),_0xb5de('0x1a'));_0x4a0a5a['use'](bodyParser['urlencoded']({'limit':_0xb5de('0x1e'),'extended':!![]}));_0x4a0a5a[_0xb5de('0x16')](bodyParser[_0xb5de('0x1f')]({'limit':_0xb5de('0x1e')}));_0x4a0a5a['use'](cors());_0x4a0a5a[_0xb5de('0x16')](methodOverride());_0x4a0a5a['use'](cookieParser());_0x4a0a5a[_0xb5de('0x16')](passport[_0xb5de('0x20')]());};
\ No newline at end of file
+var _0x87f7=['split','static','views','engine','html','view\x20engine','urlencoded','50mb','json','initialize','express','serve-favicon','body-parser','method-override','cookie-parser','errorhandler','passport','default','get','env','production','set','root','public','appPath','client','use','json\x20replacer','toISOString'];(function(_0x14996e,_0x108636){var _0x2f0151=function(_0x20dd91){while(--_0x20dd91){_0x14996e['push'](_0x14996e['shift']());}};_0x2f0151(++_0x108636);}(_0x87f7,0x1a0));var _0x787f=function(_0x2e3fa4,_0x272694){_0x2e3fa4=_0x2e3fa4-0x0;var _0x277463=_0x87f7[_0x2e3fa4];return _0x277463;};'use strict';var express=require(_0x787f('0x0'));var favicon=require(_0x787f('0x1'));var bodyParser=require(_0x787f('0x2'));var methodOverride=require(_0x787f('0x3'));var cookieParser=require(_0x787f('0x4'));var errorHandler=require(_0x787f('0x5'));var path=require('path');var passport=require(_0x787f('0x6'));var cors=require('cors');var moment=require('moment');var config=require('./environment');var db=require('../mysqldb')['db'];exports[_0x787f('0x7')]=function(_0x3f5091){var _0xadf89a=_0x3f5091[_0x787f('0x8')](_0x787f('0x9'));if(_0xadf89a===_0x787f('0xa')){_0x3f5091[_0x787f('0xb')]('appPath',path['join'](config[_0x787f('0xc')],_0x787f('0xd')));}if(_0xadf89a==='development'||_0xadf89a==='test'){_0x3f5091[_0x787f('0xb')](_0x787f('0xe'),path['join'](config[_0x787f('0xc')],_0x787f('0xf')));_0x3f5091[_0x787f('0x10')](errorHandler());}_0x3f5091[_0x787f('0xb')](_0x787f('0x11'),function(_0x249dfe,_0x2504df){if(this[_0x249dfe]instanceof Date){_0x2504df=this[_0x249dfe][_0x787f('0x12')]()[_0x787f('0x13')]('.')[0x0]+'Z';}return _0x2504df;});_0x3f5091[_0x787f('0x10')](express[_0x787f('0x14')](_0x3f5091['get'](_0x787f('0xe'))));_0x3f5091[_0x787f('0xb')](_0x787f('0x15'),config[_0x787f('0xc')]+'/server/views');_0x3f5091[_0x787f('0x16')](_0x787f('0x17'),require('ejs')['renderFile']);_0x3f5091['set'](_0x787f('0x18'),_0x787f('0x17'));_0x3f5091[_0x787f('0x10')](bodyParser[_0x787f('0x19')]({'limit':_0x787f('0x1a'),'extended':!![]}));_0x3f5091[_0x787f('0x10')](bodyParser[_0x787f('0x1b')]({'limit':_0x787f('0x1a')}));_0x3f5091[_0x787f('0x10')](cors());_0x3f5091[_0x787f('0x10')](methodOverride());_0x3f5091['use'](cookieParser());_0x3f5091[_0x787f('0x10')](passport[_0x787f('0x1c')]());};
\ No newline at end of file
index 40c2437..b143c55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dd7=['cpus','map','model','join','createHash','md5','hex','getUuid','platform','licenseToken','test','win32','dmidecode\x20--string\x20system-uuid','utf8','replace','hostname','macAddress','ipAddress','update','digest','substring','lodash','crypto','bimedia-machine-uuid','child_process','execSync','../environment','networkInterfaces','orderBy','keys','length','filter','family','concat','head','mac','00:00:00:00:00:00','address','127.0.0.1'];(function(_0x4061d9,_0x5d8540){var _0x1f9ae1=function(_0x44d7c6){while(--_0x44d7c6){_0x4061d9['push'](_0x4061d9['shift']());}};_0x1f9ae1(++_0x5d8540);}(_0x8dd7,0x8a));var _0x78dd=function(_0x2bf4db,_0x137b0e){_0x2bf4db=_0x2bf4db-0x0;var _0x5a648d=_0x8dd7[_0x2bf4db];return _0x5a648d;};'use strict';var _=require(_0x78dd('0x0'));var os=require('os');var crypto=require(_0x78dd('0x1'));var machine=require(_0x78dd('0x2'));var exec=require(_0x78dd('0x3'))[_0x78dd('0x4')];var config=require(_0x78dd('0x5'));function getInterfaces(){var _0x317c01=[];var _0x4d1494=os[_0x78dd('0x6')]();var _0x4c2d7c=_[_0x78dd('0x7')](_[_0x78dd('0x8')](_0x4d1494));for(var _0x1f102d=0x0;_0x1f102d<_0x4c2d7c[_0x78dd('0x9')];_0x1f102d++){var _0x37f4da=_0x4d1494[_0x4c2d7c[_0x1f102d]][_0x78dd('0xa')](function(_0x2ce024){return _0x2ce024[_0x78dd('0xb')]==='IPv4'&&_0x2ce024['internal']===![];});_0x317c01=_0x317c01[_0x78dd('0xc')](_0x37f4da);}return _0x317c01;}function getFirstInterface(){var _0x109b14=_[_0x78dd('0xd')](getInterfaces());return{'macAddress':_0x109b14&&_0x109b14[_0x78dd('0xe')]?_0x109b14['mac']:_0x78dd('0xf'),'ipAddress':_0x109b14&&_0x109b14[_0x78dd('0x10')]?_0x109b14[_0x78dd('0x10')]:_0x78dd('0x11')};}exports['getFirstInterface']=getFirstInterface;function getCPUhash(){var _0x3f4b03=_['orderBy'](os[_0x78dd('0x12')]()[_0x78dd('0x13')](function(_0x2bf78a){return _0x2bf78a[_0x78dd('0x14')];}))[_0x78dd('0x15')](':');return crypto[_0x78dd('0x16')](_0x78dd('0x17'))['update'](_0x3f4b03)['digest'](_0x78dd('0x18'));}exports[_0x78dd('0x19')]=function(){var _0x28fe6d=os[_0x78dd('0x1a')]();var _0x4e9013=/[0-9a-f-]{36}/;if(config[_0x78dd('0x1b')]&&_0x4e9013[_0x78dd('0x1c')](config[_0x78dd('0x1b')])){return config['licenseToken'];}else if(_0x28fe6d===_0x78dd('0x1d')){return exec(_0x78dd('0x1e'),{'encoding':_0x78dd('0x1f')})[_0x78dd('0x20')]('\x0d\x0a','');}else{var _0x46f1b7=getFirstInterface();var _0x573299=getCPUhash();var _0x1889f4=_0x573299+'|'+os[_0x78dd('0x21')]()+'|'+_0x46f1b7[_0x78dd('0x22')]+'|'+_0x46f1b7[_0x78dd('0x23')];var _0x13b1ce=crypto['createHash'](_0x78dd('0x17'))[_0x78dd('0x24')](_0x1889f4)[_0x78dd('0x25')](_0x78dd('0x18'));return _0x13b1ce[_0x78dd('0x26')](0x0,0x8)+'-'+_0x13b1ce[_0x78dd('0x26')](0x8,0xc)+'-'+_0x13b1ce['substring'](0xc,0x10)+'-'+_0x13b1ce[_0x78dd('0x26')](0x10,0x14)+'-'+_0x13b1ce[_0x78dd('0x26')](0x14);}};
\ No newline at end of file
+var _0x59bf=['orderBy','keys','length','filter','family','IPv4','internal','concat','head','mac','00:00:00:00:00:00','address','127.0.0.1','cpus','model','join','createHash','md5','update','digest','getUuid','test','licenseToken','win32','dmidecode\x20--string\x20system-uuid','utf8','replace','hostname','macAddress','substring','crypto','child_process','execSync'];(function(_0x2bd337,_0x26d9e8){var _0x11b74f=function(_0x14b3e9){while(--_0x14b3e9){_0x2bd337['push'](_0x2bd337['shift']());}};_0x11b74f(++_0x26d9e8);}(_0x59bf,0x126));var _0xf59b=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x59bf[_0x3b380d];return _0x54502b;};'use strict';var _=require('lodash');var os=require('os');var crypto=require(_0xf59b('0x0'));var machine=require('bimedia-machine-uuid');var exec=require(_0xf59b('0x1'))[_0xf59b('0x2')];var config=require('../environment');function getInterfaces(){var _0xa7058c=[];var _0x365f20=os['networkInterfaces']();var _0x3d9fc5=_[_0xf59b('0x3')](_[_0xf59b('0x4')](_0x365f20));for(var _0x5e4dde=0x0;_0x5e4dde<_0x3d9fc5[_0xf59b('0x5')];_0x5e4dde++){var _0x2564a3=_0x365f20[_0x3d9fc5[_0x5e4dde]][_0xf59b('0x6')](function(_0x4ba603){return _0x4ba603[_0xf59b('0x7')]===_0xf59b('0x8')&&_0x4ba603[_0xf59b('0x9')]===![];});_0xa7058c=_0xa7058c[_0xf59b('0xa')](_0x2564a3);}return _0xa7058c;}function getFirstInterface(){var _0x4519da=_[_0xf59b('0xb')](getInterfaces());return{'macAddress':_0x4519da&&_0x4519da[_0xf59b('0xc')]?_0x4519da[_0xf59b('0xc')]:_0xf59b('0xd'),'ipAddress':_0x4519da&&_0x4519da['address']?_0x4519da[_0xf59b('0xe')]:_0xf59b('0xf')};}exports['getFirstInterface']=getFirstInterface;function getCPUhash(){var _0x351e41=_[_0xf59b('0x3')](os[_0xf59b('0x10')]()['map'](function(_0x13b9cf){return _0x13b9cf[_0xf59b('0x11')];}))[_0xf59b('0x12')](':');return crypto[_0xf59b('0x13')](_0xf59b('0x14'))[_0xf59b('0x15')](_0x351e41)[_0xf59b('0x16')]('hex');}exports[_0xf59b('0x17')]=function(){var _0x5abde2=os['platform']();var _0x41fdad=/[0-9a-f-]{36}/;if(config['licenseToken']&&_0x41fdad[_0xf59b('0x18')](config[_0xf59b('0x19')])){return config[_0xf59b('0x19')];}else if(_0x5abde2===_0xf59b('0x1a')){return exec(_0xf59b('0x1b'),{'encoding':_0xf59b('0x1c')})[_0xf59b('0x1d')]('\x0d\x0a','');}else{var _0x1da60e=getFirstInterface();var _0x4aaaf7=getCPUhash();var _0x834fef=_0x4aaaf7+'|'+os[_0xf59b('0x1e')]()+'|'+_0x1da60e[_0xf59b('0x1f')]+'|'+_0x1da60e['ipAddress'];var _0x7f1323=crypto[_0xf59b('0x13')](_0xf59b('0x14'))['update'](_0x834fef)[_0xf59b('0x16')]('hex');return _0x7f1323[_0xf59b('0x20')](0x0,0x8)+'-'+_0x7f1323[_0xf59b('0x20')](0x8,0xc)+'-'+_0x7f1323[_0xf59b('0x20')](0xc,0x10)+'-'+_0x7f1323[_0xf59b('0x20')](0x10,0x14)+'-'+_0x7f1323[_0xf59b('0x20')](0x14);}};
\ No newline at end of file
index e521c32..3b220d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0db=['%s/api/servers/%s/check?version=%s','exports','version','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','catch','data1','data2','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','update','encryptString','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','YYYY-MM-DD\x20HH:mm','error','message','finally','getUuid','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','moment','request-promise','bluebird','../../mysqldb','../../components/encryptor','./hardware','../logger','license','https://www.xcallymotion.com','format'];(function(_0x518a0e,_0x349ebf){var _0x92c68=function(_0x2a6011){while(--_0x2a6011){_0x518a0e['push'](_0x518a0e['shift']());}};_0x92c68(++_0x349ebf);}(_0xc0db,0x9e));var _0xbc0d=function(_0x44006a,_0x1200c2){_0x44006a=_0x44006a-0x0;var _0x2c383d=_0xc0db[_0x44006a];return _0x2c383d;};'use strict';var util=require('util');var moment=require(_0xbc0d('0x0'));var rp=require(_0xbc0d('0x1'));var BPromise=require(_0xbc0d('0x2'));var pkginfo=require('pkginfo')(module,'version');var db=require(_0xbc0d('0x3'))['db'];var encryptor=require(_0xbc0d('0x4'));var hardware=require(_0xbc0d('0x5'));var logger=require(_0xbc0d('0x6'))(_0xbc0d('0x7'));var HOST=_0xbc0d('0x8');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x710959){return new BPromise(function(_0x648e65,_0x2c8916){var _0x14b5a7=util[_0xbc0d('0x9')](_0xbc0d('0xa'),HOST,_0x710959,module[_0xbc0d('0xb')][_0xbc0d('0xc')]);if(oldToken){_0x14b5a7=util['format'](_0xbc0d('0xd'),HOST,_0x710959,module[_0xbc0d('0xb')][_0xbc0d('0xc')],oldToken);}var _0x486d13={'uri':_0x14b5a7,'method':_0xbc0d('0xe'),'timeout':0xea60,'json':!![]};return rp(_0x486d13)[_0xbc0d('0xf')](function(_0x165900){_0x648e65(_0x165900);})[_0xbc0d('0x10')](function(_0x188dcc){_0x2c8916(_0x188dcc);});});}function manageLicense(_0x58d1cf,_0x2226b1){var _0x62fb14=_0x2226b1['get']({'plain':!![]});if(!isOldTokenSent&&_0x62fb14[_0xbc0d('0x11')]!==_0x58d1cf&&!_0x62fb14[_0xbc0d('0x12')]){oldToken=_0x62fb14[_0xbc0d('0x11')];}httpRequest(_0x58d1cf)[_0xbc0d('0xf')](function(_0x45623a){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x45623a[_0xbc0d('0x13')]){isOldTokenSent=![];if(!_0x62fb14[_0xbc0d('0x7')]&&_0x62fb14['license']!=_0x45623a[_0xbc0d('0x7')]||_0x62fb14[_0xbc0d('0x7')]&&_0x62fb14['data2']){logger[_0xbc0d('0x14')](_0xbc0d('0x15'));}if(_0x62fb14[_0xbc0d('0x7')]&&!_0x62fb14['data2']&&_0x62fb14[_0xbc0d('0x7')]!=_0x45623a[_0xbc0d('0x7')]){logger[_0xbc0d('0x14')](_0xbc0d('0x16'));}if(_0x62fb14[_0xbc0d('0x7')]&&!_0x62fb14[_0xbc0d('0x12')]&&_0x62fb14[_0xbc0d('0x7')]==_0x45623a[_0xbc0d('0x7')]){return _0x2226b1;}return _0x2226b1['update']({'data1':_0x58d1cf,'data2':null,'license':_0x45623a[_0xbc0d('0x7')]});}else{if(_0x45623a[_0xbc0d('0x7')]||_0x62fb14[_0xbc0d('0x7')]){if(!_0x62fb14[_0xbc0d('0x12')]){if(_0x62fb14[_0xbc0d('0x11')]==_0x58d1cf){GRAY_PERIOD_REASON=_0xbc0d('0x17');logger[_0xbc0d('0x14')](_0xbc0d('0x18'));}else{GRAY_PERIOD_REASON='Changed';logger[_0xbc0d('0x14')](_0xbc0d('0x19'),_0x62fb14[_0xbc0d('0x11')],_0x58d1cf);}logger['info'](_0xbc0d('0x1a'),GRAY_PERIOD_REASON[_0xbc0d('0x1b')](),moment()[_0xbc0d('0x9')]('YYYY-MM-DD\x20HH:mm'));return _0x2226b1[_0xbc0d('0x1c')]({'data2':encryptor[_0xbc0d('0x1d')](moment()[_0xbc0d('0x9')]('YYYY-MM-DD\x20HH:mm'))});}else{if(moment()[_0xbc0d('0x1e')](encryptor[_0xbc0d('0x1f')](_0x62fb14['data2']),_0xbc0d('0x20'))>DAYS){logger[_0xbc0d('0x14')](_0xbc0d('0x21'),moment()[_0xbc0d('0x9')](_0xbc0d('0x22')));isOldTokenSent=![];return _0x2226b1[_0xbc0d('0x1c')]({'data1':_0x58d1cf,'data2':null,'license':null});}}}else{if(_0x62fb14[_0xbc0d('0x11')]!=_0x58d1cf){logger['info'](_0xbc0d('0x19'),_0x62fb14['data1'],_0x58d1cf);return _0x2226b1[_0xbc0d('0x1c')]({'data1':_0x58d1cf,'data2':null,'license':null});}}}return _0x2226b1;})['then'](function(_0x39dfe1){_0x2226b1=_0x39dfe1;})['catch'](function(_0x4ae286){logger[_0xbc0d('0x23')](_0x4ae286[_0xbc0d('0x24')]);})[_0xbc0d('0x25')](function(){setTimeout(function(){manageLicense(hardware[_0xbc0d('0x26')](),_0x2226b1);},TIME);});}function defaultLicense(){var _0x4fd3c8=hardware[_0xbc0d('0x26')]();if(_0x4fd3c8){return db['License'][_0xbc0d('0x27')]({'where':{'id':0x1},'defaults':{'data1':_0x4fd3c8}})[_0xbc0d('0x28')](function(_0x565a6c,_0x2ee99d){logger[_0xbc0d('0x14')](_0xbc0d('0x29'),_0x4fd3c8);manageLicense(_0x4fd3c8,_0x565a6c);})['catch'](function(_0x4e6934){logger[_0xbc0d('0x23')](_0x4e6934[_0xbc0d('0x24')]);});}}exports['default']=defaultLicense;
\ No newline at end of file
+var _0xebb6=['message','moment','bluebird','pkginfo','version','../../mysqldb','./hardware','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','catch','get','data1','data2','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','update','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','encryptString','decryptString','days','then','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s'];(function(_0x330616,_0x446c69){var _0x50e722=function(_0x14a084){while(--_0x14a084){_0x330616['push'](_0x330616['shift']());}};_0x50e722(++_0x446c69);}(_0xebb6,0x1eb));var _0x6ebb=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xebb6[_0x433a86];return _0x23000c;};'use strict';var util=require('util');var moment=require(_0x6ebb('0x0'));var rp=require('request-promise');var BPromise=require(_0x6ebb('0x1'));var pkginfo=require(_0x6ebb('0x2'))(module,_0x6ebb('0x3'));var db=require(_0x6ebb('0x4'))['db'];var encryptor=require('../../components/encryptor');var hardware=require(_0x6ebb('0x5'));var logger=require('../logger')(_0x6ebb('0x6'));var HOST=_0x6ebb('0x7');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x2ee743){return new BPromise(function(_0x529234,_0x389bf2){var _0x70b066=util[_0x6ebb('0x8')](_0x6ebb('0x9'),HOST,_0x2ee743,module[_0x6ebb('0xa')]['version']);if(oldToken){_0x70b066=util[_0x6ebb('0x8')](_0x6ebb('0xb'),HOST,_0x2ee743,module[_0x6ebb('0xa')][_0x6ebb('0x3')],oldToken);}var _0x53cfd1={'uri':_0x70b066,'method':'GET','timeout':0xea60,'json':!![]};return rp(_0x53cfd1)['then'](function(_0x3a88ae){_0x529234(_0x3a88ae);})[_0x6ebb('0xc')](function(_0xcee513){_0x389bf2(_0xcee513);});});}function manageLicense(_0x262790,_0x1c8ae0){var _0xeb0fb7=_0x1c8ae0[_0x6ebb('0xd')]({'plain':!![]});if(!isOldTokenSent&&_0xeb0fb7[_0x6ebb('0xe')]!==_0x262790&&!_0xeb0fb7['data2']){oldToken=_0xeb0fb7[_0x6ebb('0xe')];}httpRequest(_0x262790)['then'](function(_0x56ee68){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x56ee68['active']){isOldTokenSent=![];if(!_0xeb0fb7[_0x6ebb('0x6')]&&_0xeb0fb7[_0x6ebb('0x6')]!=_0x56ee68[_0x6ebb('0x6')]||_0xeb0fb7['license']&&_0xeb0fb7[_0x6ebb('0xf')]){logger[_0x6ebb('0x10')](_0x6ebb('0x11'));}if(_0xeb0fb7[_0x6ebb('0x6')]&&!_0xeb0fb7[_0x6ebb('0xf')]&&_0xeb0fb7[_0x6ebb('0x6')]!=_0x56ee68['license']){logger[_0x6ebb('0x10')]('THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED');}if(_0xeb0fb7[_0x6ebb('0x6')]&&!_0xeb0fb7[_0x6ebb('0xf')]&&_0xeb0fb7[_0x6ebb('0x6')]==_0x56ee68[_0x6ebb('0x6')]){return _0x1c8ae0;}return _0x1c8ae0[_0x6ebb('0x12')]({'data1':_0x262790,'data2':null,'license':_0x56ee68[_0x6ebb('0x6')]});}else{if(_0x56ee68[_0x6ebb('0x6')]||_0xeb0fb7[_0x6ebb('0x6')]){if(!_0xeb0fb7['data2']){if(_0xeb0fb7[_0x6ebb('0xe')]==_0x262790){GRAY_PERIOD_REASON=_0x6ebb('0x13');logger[_0x6ebb('0x10')](_0x6ebb('0x14'));}else{GRAY_PERIOD_REASON='Changed';logger[_0x6ebb('0x10')](_0x6ebb('0x15'),_0xeb0fb7[_0x6ebb('0xe')],_0x262790);}logger[_0x6ebb('0x10')](_0x6ebb('0x16'),GRAY_PERIOD_REASON[_0x6ebb('0x17')](),moment()[_0x6ebb('0x8')](_0x6ebb('0x18')));return _0x1c8ae0['update']({'data2':encryptor[_0x6ebb('0x19')](moment()[_0x6ebb('0x8')](_0x6ebb('0x18')))});}else{if(moment()['diff'](encryptor[_0x6ebb('0x1a')](_0xeb0fb7['data2']),_0x6ebb('0x1b'))>DAYS){logger['info']('DEMO\x20START\x20AT\x20%s',moment()['format'](_0x6ebb('0x18')));isOldTokenSent=![];return _0x1c8ae0[_0x6ebb('0x12')]({'data1':_0x262790,'data2':null,'license':null});}}}else{if(_0xeb0fb7[_0x6ebb('0xe')]!=_0x262790){logger[_0x6ebb('0x10')](_0x6ebb('0x15'),_0xeb0fb7[_0x6ebb('0xe')],_0x262790);return _0x1c8ae0[_0x6ebb('0x12')]({'data1':_0x262790,'data2':null,'license':null});}}}return _0x1c8ae0;})[_0x6ebb('0x1c')](function(_0x3d53b3){_0x1c8ae0=_0x3d53b3;})[_0x6ebb('0xc')](function(_0x4dae35){logger['error'](_0x4dae35['message']);})['finally'](function(){setTimeout(function(){manageLicense(hardware[_0x6ebb('0x1d')](),_0x1c8ae0);},TIME);});}function defaultLicense(){var _0x1b9dee=hardware[_0x6ebb('0x1d')]();if(_0x1b9dee){return db[_0x6ebb('0x1e')][_0x6ebb('0x1f')]({'where':{'id':0x1},'defaults':{'data1':_0x1b9dee}})[_0x6ebb('0x20')](function(_0x2ce3b6,_0x1bafef){logger[_0x6ebb('0x10')](_0x6ebb('0x21'),_0x1b9dee);manageLicense(_0x1b9dee,_0x2ce3b6);})[_0x6ebb('0xc')](function(_0x5d887a){logger['error'](_0x5d887a[_0x6ebb('0x22')]);});}}exports['default']=defaultLicense;
\ No newline at end of file
index 0ea12d4..91b2d59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa10=['sequelize','col','admin','user','telephone','telephones','count','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','catch','exports','util','lodash','moment','bluebird','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','Breaking\x20license','License','find','defaults','then','isEmpty','License\x20key\x20value\x20not\x20found','data1','data2','split','decryptString','format','%s:%s:%s','parse','demo','uuid','gray','add','days','grayReason','machineUuid','changed','disabled','message','User','findAll','role'];(function(_0x534b5a,_0x2ed076){var _0x311184=function(_0x1b95f3){while(--_0x1b95f3){_0x534b5a['push'](_0x534b5a['shift']());}};_0x311184(++_0x2ed076);}(_0xaa10,0xc7));var _0x0aa1=function(_0x8e31dc,_0x26ddd9){_0x8e31dc=_0x8e31dc-0x0;var _0x3ed81c=_0xaa10[_0x8e31dc];return _0x3ed81c;};'use strict';var util=require(_0x0aa1('0x0'));var _=require(_0x0aa1('0x1'));var moment=require(_0x0aa1('0x2'));var BPromise=require(_0x0aa1('0x3'));var hardware=require('./hardware');var encryptor=require(_0x0aa1('0x4'));var db=require(_0x0aa1('0x5'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x0aa1('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x0aa1('0x7'),'machineUuid':hardware[_0x0aa1('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'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':![],'update':![],'description':_0x0aa1('0x9'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x588b29){return new BPromise(function(_0x419341,_0x3f1b8a){return db[_0x0aa1('0xa')][_0x0aa1('0xb')](_[_0x0aa1('0xc')](_0x588b29,{'raw':!![],'where':{'id':0x1}}))[_0x0aa1('0xd')](function(_0x349132){return checkLicense(_0x349132,null);})[_0x0aa1('0xd')](function(_0x3e1973){_0x419341(_0x3e1973);return;})['catch'](function(_0x1c2981){_0x3f1b8a(_0x1c2981);});});}function checkLicense(_0xe63954,_0x4c4236){if(!_0xe63954){demoLicense['uuid']=_0xe63954['data1'];return demoLicense;}try{var _0x3ba194=_0x4c4236||_0xe63954['license'];if(_[_0x0aa1('0xe')](_0x3ba194)){throw new Error(_0x0aa1('0xf'));}var _0x2c1063=_0xe63954[_0x0aa1('0x10')];var _0x2f0c85=_0xe63954[_0x0aa1('0x11')];var _0x47102d=_0x2c1063[_0x0aa1('0x12')]('-')[0x4];var _0x1ff4ac=_0x2c1063[_0x0aa1('0x12')]('-')[0x0];var _0x2684d6=encryptor[_0x0aa1('0x13')](_0x3ba194,util[_0x0aa1('0x14')](_0x0aa1('0x15'),_0x47102d,_0x2c1063,_0x1ff4ac));var _0x494438=JSON[_0x0aa1('0x16')](_0x2684d6);_0x494438[_0x0aa1('0x17')]=![];_0x494438[_0x0aa1('0x18')]=_0x2c1063;_0x494438['machineUuid']=hardware[_0x0aa1('0x8')]();if(_0x2f0c85){var _0x2a1e91=encryptor['decryptString'](_0x2f0c85);_0x494438[_0x0aa1('0x19')]=_0x2a1e91;_0x494438['deadline']=moment(_0x2a1e91)[_0x0aa1('0x1a')](0x7,_0x0aa1('0x1b'))[_0x0aa1('0x14')]();_0x494438[_0x0aa1('0x1c')]=_0x494438['uuid']!=_0x494438[_0x0aa1('0x1d')]?_0x0aa1('0x1e'):_0x0aa1('0x1f');}return _0x494438;}catch(_0xe2a678){breakingLicense[_0x0aa1('0x18')]=_0xe63954[_0x0aa1('0x10')];breakingLicense[_0x0aa1('0x20')]=_0xe2a678[_0x0aa1('0x20')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x298299,_0x10331b){getLicense()[_0x0aa1('0xd')](function(_0x4d722b){return db[_0x0aa1('0x21')][_0x0aa1('0x22')]({'attributes':[_0x0aa1('0x23'),[db[_0x0aa1('0x24')]['fn']('COUNT',db[_0x0aa1('0x24')][_0x0aa1('0x25')](_0x0aa1('0x23'))),'count']],'group':'role','where':{'role':{'$or':[_0x0aa1('0x26'),_0x0aa1('0x27'),_0x0aa1('0x28')]}},'raw':!![]})[_0x0aa1('0xd')](function(_0x18ed17){var _0x489b37={'user':_0x4d722b['users']||0x0,'telephone':_0x4d722b[_0x0aa1('0x29')]||0x0};_0x18ed17['forEach'](function(_0x5536a9){var _0x8b0574=_0x5536a9[_0x0aa1('0x23')]==='admin'?_0x0aa1('0x27'):_0x5536a9['role'];_0x489b37[_0x8b0574]-=_0x5536a9[_0x0aa1('0x2a')];if(_0x489b37[_0x8b0574]<0x0)_0x489b37[_0x8b0574]=0x0;});_0x298299(_0x489b37);return;});})['catch'](function(_0x3d049c){_0x10331b(_0x3d049c);});});}function checkUserLimits(_0x2b2eef){return new BPromise(function(_0x147a3b,_0xfefbe){getLimits()[_0x0aa1('0xd')](function(_0x35f196){var _0x350952=_['pick'](_['countBy'](_0x2b2eef,'role'),[_0x0aa1('0x26'),_0x0aa1('0x27'),_0x0aa1('0x28')]);var _0x19c242=(_0x350952['admin']||0x0)+(_0x350952['user']||0x0);var _0x484906=_0x350952['telephone']||0x0;if(_0x19c242>_0x35f196[_0x0aa1('0x27')])return _0xfefbe(_0x0aa1('0x2b'));if(_0x484906>_0x35f196['telephone'])return _0xfefbe(_0x0aa1('0x2c'));return _0x147a3b();})[_0x0aa1('0x2d')](function(_0x3f1c74){_0xfefbe(_0x3f1c74);});});}module[_0x0aa1('0x2e')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x57ac=['COUNT','col','count','admin','user','telephone','telephones','pick','countBy','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','util','lodash','moment','./hardware','../../components/encryptor','getUuid','find','defaults','then','catch','uuid','data1','isEmpty','License\x20key\x20value\x20not\x20found','data2','split','decryptString','format','%s:%s:%s','parse','demo','machineUuid','deadline','add','days','grayReason','changed','disabled','message','findAll','role','sequelize'];(function(_0x39758d,_0x346423){var _0x44ac11=function(_0x175008){while(--_0x175008){_0x39758d['push'](_0x39758d['shift']());}};_0x44ac11(++_0x346423);}(_0x57ac,0x198));var _0xc57a=function(_0x58ef65,_0x4c4e0a){_0x58ef65=_0x58ef65-0x0;var _0x1f0291=_0x57ac[_0x58ef65];return _0x1f0291;};'use strict';var util=require(_0xc57a('0x0'));var _=require(_0xc57a('0x1'));var moment=require(_0xc57a('0x2'));var BPromise=require('bluebird');var hardware=require(_0xc57a('0x3'));var encryptor=require(_0xc57a('0x4'));var db=require('../../mysqldb')['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':'Demo\x20license','machineUuid':hardware[_0xc57a('0x5')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'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':![],'update':![],'description':'Breaking\x20license','machineUuid':hardware[_0xc57a('0x5')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x205d6e){return new BPromise(function(_0x1b5186,_0x33d3db){return db['License'][_0xc57a('0x6')](_[_0xc57a('0x7')](_0x205d6e,{'raw':!![],'where':{'id':0x1}}))[_0xc57a('0x8')](function(_0x4444e9){return checkLicense(_0x4444e9,null);})[_0xc57a('0x8')](function(_0x2050f1){_0x1b5186(_0x2050f1);return;})[_0xc57a('0x9')](function(_0x10a0ff){_0x33d3db(_0x10a0ff);});});}function checkLicense(_0x3521e2,_0x311805){if(!_0x3521e2){demoLicense[_0xc57a('0xa')]=_0x3521e2[_0xc57a('0xb')];return demoLicense;}try{var _0x28a0b9=_0x311805||_0x3521e2['license'];if(_[_0xc57a('0xc')](_0x28a0b9)){throw new Error(_0xc57a('0xd'));}var _0x2ff115=_0x3521e2[_0xc57a('0xb')];var _0x5bfbc0=_0x3521e2[_0xc57a('0xe')];var _0x24b825=_0x2ff115[_0xc57a('0xf')]('-')[0x4];var _0x2b141b=_0x2ff115[_0xc57a('0xf')]('-')[0x0];var _0x437a16=encryptor[_0xc57a('0x10')](_0x28a0b9,util[_0xc57a('0x11')](_0xc57a('0x12'),_0x24b825,_0x2ff115,_0x2b141b));var _0x56a3e3=JSON[_0xc57a('0x13')](_0x437a16);_0x56a3e3[_0xc57a('0x14')]=![];_0x56a3e3[_0xc57a('0xa')]=_0x2ff115;_0x56a3e3[_0xc57a('0x15')]=hardware[_0xc57a('0x5')]();if(_0x5bfbc0){var _0x37ae2b=encryptor[_0xc57a('0x10')](_0x5bfbc0);_0x56a3e3['gray']=_0x37ae2b;_0x56a3e3[_0xc57a('0x16')]=moment(_0x37ae2b)[_0xc57a('0x17')](0x7,_0xc57a('0x18'))[_0xc57a('0x11')]();_0x56a3e3[_0xc57a('0x19')]=_0x56a3e3['uuid']!=_0x56a3e3[_0xc57a('0x15')]?_0xc57a('0x1a'):_0xc57a('0x1b');}return _0x56a3e3;}catch(_0x437f39){breakingLicense['uuid']=_0x3521e2[_0xc57a('0xb')];breakingLicense[_0xc57a('0x1c')]=_0x437f39[_0xc57a('0x1c')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x311a6e,_0x328732){getLicense()[_0xc57a('0x8')](function(_0x300ec1){return db['User'][_0xc57a('0x1d')]({'attributes':[_0xc57a('0x1e'),[db[_0xc57a('0x1f')]['fn'](_0xc57a('0x20'),db['sequelize'][_0xc57a('0x21')](_0xc57a('0x1e'))),_0xc57a('0x22')]],'group':'role','where':{'role':{'$or':[_0xc57a('0x23'),_0xc57a('0x24'),_0xc57a('0x25')]}},'raw':!![]})['then'](function(_0x35e41e){var _0x259d25={'user':_0x300ec1['users']||0x0,'telephone':_0x300ec1[_0xc57a('0x26')]||0x0};_0x35e41e['forEach'](function(_0x4e9037){var _0x21d638=_0x4e9037[_0xc57a('0x1e')]===_0xc57a('0x23')?_0xc57a('0x24'):_0x4e9037[_0xc57a('0x1e')];_0x259d25[_0x21d638]-=_0x4e9037['count'];if(_0x259d25[_0x21d638]<0x0)_0x259d25[_0x21d638]=0x0;});_0x311a6e(_0x259d25);return;});})[_0xc57a('0x9')](function(_0x3b57db){_0x328732(_0x3b57db);});});}function checkUserLimits(_0xc56909){return new BPromise(function(_0x39b4bc,_0x46d8fb){getLimits()[_0xc57a('0x8')](function(_0x4c1503){var _0x582f64=_[_0xc57a('0x27')](_[_0xc57a('0x28')](_0xc56909,_0xc57a('0x1e')),['admin','user',_0xc57a('0x25')]);var _0x5987db=(_0x582f64[_0xc57a('0x23')]||0x0)+(_0x582f64['user']||0x0);var _0x4d7b07=_0x582f64[_0xc57a('0x25')]||0x0;if(_0x5987db>_0x4c1503['user'])return _0x46d8fb(_0xc57a('0x29'));if(_0x4d7b07>_0x4c1503[_0xc57a('0x25')])return _0x46d8fb(_0xc57a('0x2a'));return _0x39b4bc();})[_0xc57a('0x9')](function(_0x16201e){_0x46d8fb(_0x16201e);});});}module[_0xc57a('0x2b')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index a90d0f8..3a6b087 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14a0=['app-id','secret','http://localhost:9000','myappanuglar-secret'];(function(_0x3918c1,_0x2e25b8){var _0x5e3a23=function(_0x2df0a3){while(--_0x2df0a3){_0x3918c1['push'](_0x3918c1['shift']());}};_0x5e3a23(++_0x2e25b8);}(_0x14a0,0x8e));var _0x014a=function(_0x1ba91d,_0x19b04a){_0x1ba91d=_0x1ba91d-0x0;var _0x26cbe1=_0x14a0[_0x1ba91d];return _0x26cbe1;};'use strict';module['exports']={'DOMAIN':_0x014a('0x0'),'SESSION_SECRET':_0x014a('0x1'),'GOOGLE_ID':_0x014a('0x2'),'GOOGLE_SECRET':_0x014a('0x3'),'DEBUG':''};
\ No newline at end of file
+var _0x1a85=['secret','myappanuglar-secret','app-id'];(function(_0x306457,_0x38a617){var _0x39b402=function(_0x16b1db){while(--_0x16b1db){_0x306457['push'](_0x306457['shift']());}};_0x39b402(++_0x38a617);}(_0x1a85,0x178));var _0x51a8=function(_0x502953,_0x28de83){_0x502953=_0x502953-0x0;var _0x2fa32d=_0x1a85[_0x502953];return _0x2fa32d;};'use strict';module['exports']={'DOMAIN':'http://localhost:9000','SESSION_SECRET':_0x51a8('0x0'),'GOOGLE_ID':_0x51a8('0x1'),'GOOGLE_SECRET':_0x51a8('0x2'),'DEBUG':''};
\ No newline at end of file
index 1e1615d..57be4e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf56d=['log','format','%s-%s.log','message','{{{','}}}','replace','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','Logger','transports','File','%s-%s','info','Console','env','debugLevel','winston','util','path','INFO','join','/var'];(function(_0x9fb081,_0x48f480){var _0x43f8b0=function(_0x418570){while(--_0x418570){_0x9fb081['push'](_0x9fb081['shift']());}};_0x43f8b0(++_0x48f480);}(_0xf56d,0x153));var _0xdf56=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf56d[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require('moment');var winston=require(_0xdf56('0x0'));var util=require(_0xdf56('0x1'));var path=require(_0xdf56('0x2'));var debugLevel=_0xdf56('0x3');function filename(_0x5bdf26,_0x387fc2){return path[_0xdf56('0x4')](_0xdf56('0x5'),_0xdf56('0x6'),'xcally',util[_0xdf56('0x7')](_0xdf56('0x8'),_0x5bdf26,_0x387fc2));}function formatter(_0x2ee87e,_0x472890){_0x472890['message']=_0x472890[_0xdf56('0x9')]['replace'](/@@{/g,_0xdf56('0xa'))['replace'](/}@@/g,_0xdf56('0xb'))[_0xdf56('0xc')](/@{/g,'{{')[_0xdf56('0xc')](/}@/g,'}}');return util['format'](_0xdf56('0xd'),moment()[_0xdf56('0x7')](_0xdf56('0xe')),_0x472890['level']['toUpperCase'](),_0x2ee87e,_0x472890['message']);}module['exports']=function(_0xa5d997){return new winston[(_0xdf56('0xf'))]({'transports':[new winston[(_0xdf56('0x10'))][(_0xdf56('0x11'))]({'name':util[_0xdf56('0x7')](_0xdf56('0x12'),_0xa5d997,'error'),'filename':filename(_0xa5d997,'error'),'level':'error','json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x1747d4){return formatter(_0xa5d997,_0x1747d4);}}),new winston['transports']['File']({'name':util['format'](_0xdf56('0x12'),_0xa5d997,_0xdf56('0x13')),'filename':filename(_0xa5d997,_0xdf56('0x13')),'level':'info','json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x14419a){return formatter(_0xa5d997,_0x14419a);}}),new winston[(_0xdf56('0x10'))][(_0xdf56('0x14'))]({'level':process[_0xdf56('0x15')][_0xdf56('0x16')]||debugLevel,'json':![],'formatter':function(_0x472296){return formatter(_0xa5d997,_0x472296);}})]});};
\ No newline at end of file
+var _0x3fa6=['YYYY-MM-DD\x20HH:mm:ss','toUpperCase','exports','Logger','transports','File','error','%s-%s','info','Console','env','debugLevel','moment','winston','util','INFO','join','/var','log','xcally','format','%s-%s.log','message','replace','[%s]\x20[%s]\x20%s\x20-\x20%s'];(function(_0x5de214,_0x107e9d){var _0x4df627=function(_0x4199e1){while(--_0x4199e1){_0x5de214['push'](_0x5de214['shift']());}};_0x4df627(++_0x107e9d);}(_0x3fa6,0xa2));var _0x63fa=function(_0x6cf19c,_0x2f3f02){_0x6cf19c=_0x6cf19c-0x0;var _0xce14f3=_0x3fa6[_0x6cf19c];return _0xce14f3;};'use strict';var moment=require(_0x63fa('0x0'));var winston=require(_0x63fa('0x1'));var util=require(_0x63fa('0x2'));var path=require('path');var debugLevel=_0x63fa('0x3');function filename(_0x4f3740,_0x430fa6){return path[_0x63fa('0x4')](_0x63fa('0x5'),_0x63fa('0x6'),_0x63fa('0x7'),util[_0x63fa('0x8')](_0x63fa('0x9'),_0x4f3740,_0x430fa6));}function formatter(_0x2589a5,_0x77494d){_0x77494d[_0x63fa('0xa')]=_0x77494d[_0x63fa('0xa')][_0x63fa('0xb')](/@@{/g,'{{{')[_0x63fa('0xb')](/}@@/g,'}}}')[_0x63fa('0xb')](/@{/g,'{{')['replace'](/}@/g,'}}');return util[_0x63fa('0x8')](_0x63fa('0xc'),moment()[_0x63fa('0x8')](_0x63fa('0xd')),_0x77494d['level'][_0x63fa('0xe')](),_0x2589a5,_0x77494d[_0x63fa('0xa')]);}module[_0x63fa('0xf')]=function(_0x3aa45f){return new winston[(_0x63fa('0x10'))]({'transports':[new winston[(_0x63fa('0x11'))][(_0x63fa('0x12'))]({'name':util[_0x63fa('0x8')]('%s-%s',_0x3aa45f,_0x63fa('0x13')),'filename':filename(_0x3aa45f,_0x63fa('0x13')),'level':_0x63fa('0x13'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x240f09){return formatter(_0x3aa45f,_0x240f09);}}),new winston[(_0x63fa('0x11'))][(_0x63fa('0x12'))]({'name':util['format'](_0x63fa('0x14'),_0x3aa45f,_0x63fa('0x15')),'filename':filename(_0x3aa45f,'info'),'level':_0x63fa('0x15'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x19d834){return formatter(_0x3aa45f,_0x19d834);}}),new winston['transports'][(_0x63fa('0x16'))]({'level':process[_0x63fa('0x17')][_0x63fa('0x18')]||debugLevel,'json':![],'formatter':function(_0x3f0002){return formatter(_0x3aa45f,_0x3f0002);}})]});};
\ No newline at end of file
index 31efe4b..bf267bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a58=['email','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js','path','express','join','../../services/express/index.js','ami','../../services/ami/index.js','agi'];(function(_0x149d3b,_0x3812ee){var _0x45d370=function(_0x4bf330){while(--_0x4bf330){_0x149d3b['push'](_0x149d3b['shift']());}};_0x45d370(++_0x3812ee);}(_0x0a58,0x185));var _0x80a5=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x0a58[_0x4b369d];return _0x571a98;};'use strict';var path=require(_0x80a5('0x0'));var os=require('os');var config={'apps':[{'name':_0x80a5('0x1'),'script':path[_0x80a5('0x2')](__dirname,_0x80a5('0x3'))},{'name':_0x80a5('0x4'),'script':path[_0x80a5('0x2')](__dirname,_0x80a5('0x5'))},{'name':_0x80a5('0x6'),'script':path[_0x80a5('0x2')](__dirname,'../../services/agi/index.js')},{'name':_0x80a5('0x7'),'script':path[_0x80a5('0x2')](__dirname,'../../services/email/index.js')},{'name':_0x80a5('0x8'),'script':path[_0x80a5('0x2')](__dirname,_0x80a5('0x9'))},{'name':_0x80a5('0xa'),'script':path[_0x80a5('0x2')](__dirname,_0x80a5('0xb'))}]};module['exports']=config;
\ No newline at end of file
+var _0x24a9=['ami','join','../../services/ami/index.js','agi','email','../../services/routing/index.js','xdr','../../services/xdr/index.js','path','express','../../services/express/index.js'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x24a9,0x1b5));var _0x924a=function(_0x4740f8,_0x31261f){_0x4740f8=_0x4740f8-0x0;var _0x260ba9=_0x24a9[_0x4740f8];return _0x260ba9;};'use strict';var path=require(_0x924a('0x0'));var os=require('os');var config={'apps':[{'name':_0x924a('0x1'),'script':path['join'](__dirname,_0x924a('0x2'))},{'name':_0x924a('0x3'),'script':path[_0x924a('0x4')](__dirname,_0x924a('0x5'))},{'name':_0x924a('0x6'),'script':path[_0x924a('0x4')](__dirname,'../../services/agi/index.js')},{'name':_0x924a('0x7'),'script':path[_0x924a('0x4')](__dirname,'../../services/email/index.js')},{'name':'routing','script':path['join'](__dirname,_0x924a('0x8'))},{'name':_0x924a('0x9'),'script':path[_0x924a('0x4')](__dirname,_0x924a('0xa'))}]};module['exports']=config;
\ No newline at end of file
index 51b3dd4..5d722b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8eb3=['restart','then','list','delete','dump','pm2','bluebird','./config','connect','connected','start','disconnect','stop'];(function(_0x3ebd67,_0x3dc7cd){var _0x3eadd6=function(_0x1abe80){while(--_0x1abe80){_0x3ebd67['push'](_0x3ebd67['shift']());}};_0x3eadd6(++_0x3dc7cd);}(_0x8eb3,0xae));var _0x38eb=function(_0x251d9b,_0x552319){_0x251d9b=_0x251d9b-0x0;var _0x352b6d=_0x8eb3[_0x251d9b];return _0x352b6d;};'use strict';var pm2=require(_0x38eb('0x0'));var BPromise=require(_0x38eb('0x1'));var config=require(_0x38eb('0x2'));function connect(){return new BPromise(function(_0xff5446,_0x3b158d){return pm2[_0x38eb('0x3')](function(_0x3da4ee){if(_0x3da4ee){return _0x3b158d(_0x3da4ee);}return _0xff5446(_0x38eb('0x4'));});});};exports['start']=function(_0x56c7bb){return connect()['then'](function(){return new BPromise(function(_0x4031b7,_0x579d0a){return pm2[_0x38eb('0x5')](_0x56c7bb,function(_0x3e8dfd,_0x1c3e6a){if(_0x3e8dfd){return _0x579d0a(_0x3e8dfd);}pm2[_0x38eb('0x6')]();return _0x4031b7(_0x1c3e6a);});});});};exports['stop']=function(_0x412cae){return connect()['then'](function(){return new BPromise(function(_0x4dc0ee,_0x59418b){return pm2[_0x38eb('0x7')](_0x412cae,function(_0x42080e,_0x355369){if(_0x42080e){return _0x59418b(_0x42080e);}pm2[_0x38eb('0x6')]();return _0x4dc0ee(_0x355369);});});});};exports[_0x38eb('0x8')]=function(_0x4af4de){return connect()[_0x38eb('0x9')](function(){return new BPromise(function(_0x5ae28e,_0xe1fdf){return pm2['restart'](_0x4af4de,function(_0x1316b4,_0x469df7){if(_0x1316b4){return _0xe1fdf(_0x1316b4);}pm2[_0x38eb('0x6')]();return _0x5ae28e(_0x469df7);});});});};exports[_0x38eb('0xa')]=function(){return connect()['then'](function(){return new BPromise(function(_0x1c1f32,_0x232d3e){return pm2[_0x38eb('0xa')](function(_0x39bf64,_0x4b0f4e){if(_0x39bf64){return _0x232d3e(_0x39bf64);}pm2[_0x38eb('0x6')]();return _0x1c1f32(_0x4b0f4e);});});});};exports['describe']=function(_0x9f7ce8){return connect()['then'](function(){return new BPromise(function(_0x12e0d6,_0x54d72c){return pm2['describe'](_0x9f7ce8,function(_0x4c81ca,_0x1956cb){if(_0x4c81ca){return _0x54d72c(_0x4c81ca);}pm2[_0x38eb('0x6')]();return _0x12e0d6(_0x1956cb);});});});};exports[_0x38eb('0xb')]=function(_0xb26b16){return connect()[_0x38eb('0x9')](function(){return new BPromise(function(_0x560edd,_0x5c0fbd){return pm2[_0x38eb('0xb')](_0xb26b16,function(_0x1c384b,_0x4ee819){if(_0x1c384b){return _0x5c0fbd(_0x1c384b);}pm2[_0x38eb('0x6')]();return _0x560edd(_0x4ee819);});});});};exports['dump']=function(){return connect()[_0x38eb('0x9')](function(){return new BPromise(function(_0x18a274,_0x4ff739){return pm2[_0x38eb('0xc')](function(_0x163384){if(_0x163384){return _0x4ff739(_0x163384);}return _0x18a274('saved');});});});};
\ No newline at end of file
+var _0xc928=['bluebird','connect','start','then','stop','disconnect','restart','list','describe','delete','dump','saved'];(function(_0x1f0513,_0x441ef4){var _0x5cf726=function(_0x335288){while(--_0x335288){_0x1f0513['push'](_0x1f0513['shift']());}};_0x5cf726(++_0x441ef4);}(_0xc928,0x138));var _0x8c92=function(_0x21de29,_0x59000a){_0x21de29=_0x21de29-0x0;var _0x5ef40e=_0xc928[_0x21de29];return _0x5ef40e;};'use strict';var pm2=require('pm2');var BPromise=require(_0x8c92('0x0'));var config=require('./config');function connect(){return new BPromise(function(_0x4e149d,_0x23119c){return pm2[_0x8c92('0x1')](function(_0x3d1c8a){if(_0x3d1c8a){return _0x23119c(_0x3d1c8a);}return _0x4e149d('connected');});});};exports[_0x8c92('0x2')]=function(_0x32e913){return connect()[_0x8c92('0x3')](function(){return new BPromise(function(_0x2d986f,_0x38613e){return pm2[_0x8c92('0x2')](_0x32e913,function(_0xdc3e,_0x2f0d2c){if(_0xdc3e){return _0x38613e(_0xdc3e);}pm2['disconnect']();return _0x2d986f(_0x2f0d2c);});});});};exports['stop']=function(_0x1e30d3){return connect()['then'](function(){return new BPromise(function(_0x1d46a0,_0x16799d){return pm2[_0x8c92('0x4')](_0x1e30d3,function(_0x51aa8f,_0x1fb687){if(_0x51aa8f){return _0x16799d(_0x51aa8f);}pm2[_0x8c92('0x5')]();return _0x1d46a0(_0x1fb687);});});});};exports[_0x8c92('0x6')]=function(_0x3f54c1){return connect()[_0x8c92('0x3')](function(){return new BPromise(function(_0x1f40ed,_0x3e747e){return pm2[_0x8c92('0x6')](_0x3f54c1,function(_0x4c5b4e,_0x13d0eb){if(_0x4c5b4e){return _0x3e747e(_0x4c5b4e);}pm2[_0x8c92('0x5')]();return _0x1f40ed(_0x13d0eb);});});});};exports[_0x8c92('0x7')]=function(){return connect()[_0x8c92('0x3')](function(){return new BPromise(function(_0xbe15c8,_0x249d20){return pm2[_0x8c92('0x7')](function(_0x1d9c2b,_0x37f82e){if(_0x1d9c2b){return _0x249d20(_0x1d9c2b);}pm2[_0x8c92('0x5')]();return _0xbe15c8(_0x37f82e);});});});};exports[_0x8c92('0x8')]=function(_0x5ee7f0){return connect()[_0x8c92('0x3')](function(){return new BPromise(function(_0x5457fb,_0x3e03a4){return pm2['describe'](_0x5ee7f0,function(_0x651484,_0x56304b){if(_0x651484){return _0x3e03a4(_0x651484);}pm2[_0x8c92('0x5')]();return _0x5457fb(_0x56304b);});});});};exports['delete']=function(_0x5b751c){return connect()[_0x8c92('0x3')](function(){return new BPromise(function(_0x11ffb3,_0x5b119f){return pm2[_0x8c92('0x9')](_0x5b751c,function(_0x3b0ae1,_0x576696){if(_0x3b0ae1){return _0x5b119f(_0x3b0ae1);}pm2[_0x8c92('0x5')]();return _0x11ffb3(_0x576696);});});});};exports['dump']=function(){return connect()[_0x8c92('0x3')](function(){return new BPromise(function(_0x5f52a9,_0x51b3a7){return pm2[_0x8c92('0xa')](function(_0x364b61){if(_0x364b61){return _0x51b3a7(_0x364b61);}return _0x5f52a9(_0x8c92('0xb'));});});});};
\ No newline at end of file
index 0c25797..a8b8d1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x087c=['inspect','start','lodash','ioredis','util','../../config/environment','../../mysqldb','../logger','redis','defaults','localhost','socket.io-emitter','Setting','find','chatTimeout','then','ChatInteraction','findAll','lastMsgAt','subtract','length','map','[CHAT]\x20Interactions\x20to\x20close:','join','update','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','info','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions'];(function(_0x42aa2c,_0x398754){var _0xc31d56=function(_0x3ae779){while(--_0x3ae779){_0x42aa2c['push'](_0x42aa2c['shift']());}};_0xc31d56(++_0x398754);}(_0x087c,0xd4));var _0xc087=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x087c[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xc087('0x0'));var moment=require('moment');var Redis=require(_0xc087('0x1'));var util=require(_0xc087('0x2'));var config=require(_0xc087('0x3'));var db=require(_0xc087('0x4'))['db'];var logger=require(_0xc087('0x5'))('schedule');config[_0xc087('0x6')]=_[_0xc087('0x7')](config['redis'],{'host':_0xc087('0x8'),'port':0x18eb});var io=require(_0xc087('0x9'))(new Redis(config[_0xc087('0x6')]));function closeInteractions(){var _0x171c3c=0x0;var _0x273649=[];return db[_0xc087('0xa')][_0xc087('0xb')]({'raw':!![],'attributes':['id',_0xc087('0xc')],'where':{'id':0x1}})[_0xc087('0xd')](function(_0x415260){_0x171c3c=_0x415260[_0xc087('0xc')];if(_0x171c3c){return db[_0xc087('0xe')][_0xc087('0xf')]({'raw':!![],'attributes':['id',_0xc087('0x10')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xc087('0x11')](_0x415260['chatTimeout'],'minutes')}}});}else{return[];}})[_0xc087('0xd')](function(_0x389b09){if(_0x389b09&&_0x389b09[_0xc087('0x12')]){_0x273649=_[_0xc087('0x13')](_0x389b09||[],'id');logger['info'](_0xc087('0x14'),_0x273649[_0xc087('0x15')]());return db[_0xc087('0xe')][_0xc087('0x16')]({'closeReason':_0xc087('0x17'),'disposition':_0xc087('0x18'),'closed':!![],'closedAt':moment()[_0xc087('0x19')](_0xc087('0x1a'))},{'where':{'id':_0x273649}});}})['then'](function(){if(_0x273649&&_0x273649[_0xc087('0x12')]){logger[_0xc087('0x1b')](_0xc087('0x1c'),_0x273649['join']());for(var _0x589888=0x0;_0x589888<_0x273649['length'];_0x589888++){io['emit'](_0xc087('0x1d'),{'id':_0x273649[_0x589888],'closed':!![]});}}})[_0xc087('0x1e')](function(_0x1f4eb4){logger[_0xc087('0x1f')](_0xc087('0x20'),_0x1f4eb4?util[_0xc087('0x21')](_0x1f4eb4,{'showHidden':![],'depth':null}):'');});}exports[_0xc087('0x22')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x6ddc=['subtract','minutes','length','map','[CHAT]\x20Interactions\x20to\x20close:','join','update','system','timeout','YYYY-MM-DD\x20HH:mm:ss','chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','start','moment','ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','redis','defaults','localhost','socket.io-emitter','Setting','find','chatTimeout','then','ChatInteraction','lastMsgAt'];(function(_0x446208,_0xb483fb){var _0xe49563=function(_0x1d3a21){while(--_0x1d3a21){_0x446208['push'](_0x446208['shift']());}};_0xe49563(++_0xb483fb);}(_0x6ddc,0x118));var _0xc6dd=function(_0x3e0d7d,_0x5a6a83){_0x3e0d7d=_0x3e0d7d-0x0;var _0x269866=_0x6ddc[_0x3e0d7d];return _0x269866;};'use strict';var _=require('lodash');var moment=require(_0xc6dd('0x0'));var Redis=require(_0xc6dd('0x1'));var util=require(_0xc6dd('0x2'));var config=require(_0xc6dd('0x3'));var db=require(_0xc6dd('0x4'))['db'];var logger=require(_0xc6dd('0x5'))(_0xc6dd('0x6'));config[_0xc6dd('0x7')]=_[_0xc6dd('0x8')](config[_0xc6dd('0x7')],{'host':_0xc6dd('0x9'),'port':0x18eb});var io=require(_0xc6dd('0xa'))(new Redis(config['redis']));function closeInteractions(){var _0x58e42b=0x0;var _0x1e7725=[];return db[_0xc6dd('0xb')][_0xc6dd('0xc')]({'raw':!![],'attributes':['id',_0xc6dd('0xd')],'where':{'id':0x1}})[_0xc6dd('0xe')](function(_0x4c0039){_0x58e42b=_0x4c0039['chatTimeout'];if(_0x58e42b){return db[_0xc6dd('0xf')]['findAll']({'raw':!![],'attributes':['id',_0xc6dd('0x10')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xc6dd('0x11')](_0x4c0039[_0xc6dd('0xd')],_0xc6dd('0x12'))}}});}else{return[];}})[_0xc6dd('0xe')](function(_0x4240f9){if(_0x4240f9&&_0x4240f9[_0xc6dd('0x13')]){_0x1e7725=_[_0xc6dd('0x14')](_0x4240f9||[],'id');logger['info'](_0xc6dd('0x15'),_0x1e7725[_0xc6dd('0x16')]());return db['ChatInteraction'][_0xc6dd('0x17')]({'closeReason':_0xc6dd('0x18'),'disposition':_0xc6dd('0x19'),'closed':!![],'closedAt':moment()['format'](_0xc6dd('0x1a'))},{'where':{'id':_0x1e7725}});}})[_0xc6dd('0xe')](function(){if(_0x1e7725&&_0x1e7725['length']){logger['info']('[CHAT]\x20Sending\x20updates\x20for\x20interactions:',_0x1e7725[_0xc6dd('0x16')]());for(var _0x544914=0x0;_0x544914<_0x1e7725['length'];_0x544914++){io['emit'](_0xc6dd('0x1b'),{'id':_0x1e7725[_0x544914],'closed':!![]});}}})[_0xc6dd('0x1c')](function(_0x33eba4){logger[_0xc6dd('0x1d')](_0xc6dd('0x1e'),_0x33eba4?util[_0xc6dd('0x1f')](_0x33eba4,{'showHidden':![],'depth':null}):'');});}exports[_0xc6dd('0x20')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index e6817f8..0330f20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf81e=['startAt','start','add\x20cron','deleteJob','endAt','update','update\x20cron','stop\x20cron','run','util','lodash','moment','jayson/promise','bluebird','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','Smtp','service','MailAccount','host','port','secure','authentication','auth','user','pass','name','email','bcc','format','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports','savename','%s.%s','basename','extname','zip','status','message','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','existsSync','Sent','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','then','error','error\x20mail','catch','stringify','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','runReport','CustomReportId','no\x20report\x20id','Schedule','findAll','MailServerOut','keys','jobs','toString','keyBy','difference','length','exists','stop','delete\x20cron','toRun','index','my\x20id','resolve','cron','active','isBetween'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xf81e,0xc3));var _0xef81=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0xf81e[_0x160c73];return _0xd9302;};'use strict';var fs=require('fs');var util=require(_0xef81('0x0'));var path=require('path');var _=require(_0xef81('0x1'));var moment=require(_0xef81('0x2'));var CronJobManager=require('cron-job-manager');var jayson=require(_0xef81('0x3'));var BPromise=require(_0xef81('0x4'));var logger=require('../logger')(_0xef81('0x5'));var db=require(_0xef81('0x6'))['db'];var analyticCustomReportController=require(_0xef81('0x7'));var analyticDefaultReportController=require(_0xef81('0x8'));var client=jayson[_0xef81('0x9')][_0xef81('0xa')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x51160d,_0x524e8a){return function(){logger[_0xef81('0xb')](_0xef81('0xc'),_0x51160d['email']);var _0x9b8dee=!![];var _0x585c78={'tls':{'rejectUnauthorized':![]}};if(_0x51160d['MailAccount'][_0xef81('0xd')][_0xef81('0xe')]){_0x585c78[_0xef81('0xe')]=_0x51160d[_0xef81('0xf')]['Smtp']['service'];}else{_0x585c78[_0xef81('0x10')]=_0x51160d[_0xef81('0xf')]['Smtp'][_0xef81('0x10')];_0x585c78['port']=_0x51160d[_0xef81('0xf')][_0xef81('0xd')][_0xef81('0x11')];_0x585c78['secure']=_0x51160d[_0xef81('0xf')]['Smtp'][_0xef81('0x12')];}if(_0x51160d['MailAccount'][_0xef81('0xd')][_0xef81('0x13')]){_0x585c78[_0xef81('0x14')]={'user':_0x51160d[_0xef81('0xf')][_0xef81('0xd')][_0xef81('0x15')],'pass':_0x51160d['MailAccount'][_0xef81('0xd')][_0xef81('0x16')]};}var _0x57462c={'account':_0x585c78,'message':{'from':util['format']('\x22%s\x22\x20<%s>',_0x51160d[_0xef81('0xf')][_0xef81('0x17')],_0x51160d[_0xef81('0xf')]['email']||_0x51160d[_0xef81('0xf')][_0xef81('0xd')][_0xef81('0x15')]),'to':_0x51160d[_0xef81('0x18')],'cc':_0x51160d['cc'],'bcc':_0x51160d[_0xef81('0x19')],'subject':util[_0xef81('0x1a')](_0xef81('0x1b'),_0x524e8a['name'],_0x51160d[_0xef81('0x1c')],_0x51160d[_0xef81('0x1d')])}};var _0x523bb0=path[_0xef81('0x1e')](__dirname,_0xef81('0x1f'));var _0xacb1dc=_0x524e8a[_0xef81('0x20')];var _0x5e5844=util[_0xef81('0x1a')](_0xef81('0x21'),path[_0xef81('0x22')](_0x524e8a['savename'],path[_0xef81('0x23')](_0x524e8a[_0xef81('0x20')])),_0xef81('0x24'));var _0x3fad37=path[_0xef81('0x1e')](_0x523bb0,_0xacb1dc);var _0x41f7e1=path[_0xef81('0x1e')](_0x523bb0,_0x5e5844);if(fs['existsSync'](_0x3fad37)){_0x524e8a[_0xef81('0x25')]='Sent';_0x57462c[_0xef81('0x26')][_0xef81('0x27')]=[{'filename':_0xacb1dc,'path':_0x3fad37}];_0x57462c[_0xef81('0x26')][_0xef81('0x28')]=util[_0xef81('0x1a')](_0xef81('0x29'),JSON['stringify'](_0x524e8a,null,0x2));}else if(fs[_0xef81('0x2a')](_0x41f7e1)){_0x524e8a[_0xef81('0x25')]=_0xef81('0x2b');_0x57462c['message'][_0xef81('0x27')]=[{'filename':_0x5e5844,'path':_0x41f7e1}];}else{_0x57462c[_0xef81('0x26')][_0xef81('0x28')]=_0xef81('0x2c');if(!_0x51160d[_0xef81('0x2d')]){_0x9b8dee=![];logger['info'](_0xef81('0x2e'));}}if(_0x9b8dee){return client[_0xef81('0x2f')](_0xef81('0x30'),_0x57462c)[_0xef81('0x31')](function(_0x22e94e){if(_0x22e94e['error']){return logger[_0xef81('0x32')](_0xef81('0x33'),JSON['stringify'](_0x22e94e));}return logger[_0xef81('0xb')]('email\x20sent');})[_0xef81('0x34')](function(_0x3d1ce7){return logger[_0xef81('0x32')]('error\x20mail',JSON[_0xef81('0x35')](_0x3d1ce7));});}};}function handleError(){return function(_0x5df52f){return logger['error'](JSON['stringify'](_0x5df52f));};}function handleResult(_0x310393){return function(_0xbd2fbb){logger[_0xef81('0xb')](_0xef81('0x36'),JSON[_0xef81('0x35')](_0xbd2fbb));if(_0x310393['MailAccount']&&_0x310393[_0xef81('0xf')][_0xef81('0xd')]&&!_[_0xef81('0x37')](_0x310393[_0xef81('0x18')])){setTimeout(handleSendEmail(_0x310393,_0xbd2fbb),0x3c*0x3e8);}};}function handleJob(_0x34c64a){return function(){try{if(_[_0xef81('0x37')](_0x34c64a[_0xef81('0x1c')])){return logger['info'](_0xef81('0x38'));}if(_[_0xef81('0x37')](_0x34c64a[_0xef81('0x1d')])){return logger[_0xef81('0xb')](_0xef81('0x39'));}var _0x2ee2e0={'startDate':moment()['subtract'](_0x34c64a[_0xef81('0x1c')],_0x34c64a[_0xef81('0x1d')])[_0xef81('0x1a')](_0xef81('0x3a')),'endDate':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'type':_0xef81('0x3b'),'output':_0x34c64a[_0xef81('0x3c')],'name':_0x34c64a[_0xef81('0x17')]};if(!_['isNil'](_0x34c64a[_0xef81('0x3d')])){logger[_0xef81('0xb')]('exec\x20defaul\x20report\x20id:%s',_0x34c64a[_0xef81('0x3d')]);return analyticDefaultReportController[_0xef81('0x3e')]({'id':_0x34c64a[_0xef81('0x3d')]},_0x2ee2e0)[_0xef81('0x31')](handleResult(_0x34c64a))['catch'](handleError());}if(!_['isNil'](_0x34c64a['CustomReportId'])){logger[_0xef81('0xb')]('exec\x20custom\x20report\x20id:%s',_0x34c64a['CustomReportId']);return analyticCustomReportController['runReport']({'id':_0x34c64a[_0xef81('0x3f')]},_0x2ee2e0)['then'](handleResult(_0x34c64a))[_0xef81('0x34')](handleError());}}catch(_0x49812f){logger[_0xef81('0x32')](JSON['stringify'](_0x49812f));}return logger[_0xef81('0xb')](_0xef81('0x40'));};}function getJobs(_0x41fed6){var _0x374151={};if(_0x41fed6){_0x374151['id']=_0x41fed6;}return db[_0xef81('0x41')][_0xef81('0x42')]({'where':_0x374151,'include':[{'model':db[_0xef81('0xf')],'attributes':['id','name',_0xef81('0x18')],'include':[{'model':db[_0xef81('0x43')],'as':_0xef81('0xd')}]}]})['then'](function(_0x3b32ec){var _0x496ed1=_[_0xef81('0x44')](manager[_0xef81('0x45')]);var _0x179dc7=_['map'](_0x3b32ec,function(_0x4af544){return _0x4af544['id'][_0xef81('0x46')]();});var _0x5e2490=_[_0xef81('0x47')](_0x3b32ec,function(_0x371d95){return _0x371d95['id']['toString']();});var _0x26df4e=_0x41fed6?_0x179dc7:_[_0xef81('0x48')](_0x179dc7,_0x496ed1);var _0x1faef6=_['intersection'](_0x179dc7,_0x496ed1);var _0x43b86a=_[_0xef81('0x48')](_0x496ed1,_0x179dc7);var _0x3b775e;var _0x18b213;for(_0x3b775e=0x0;_0x3b775e<_0x43b86a[_0xef81('0x49')]&&!_0x41fed6;_0x3b775e+=0x1){_0x18b213=_0x43b86a[_0x3b775e][_0xef81('0x46')]();if(manager[_0xef81('0x4a')](_0x18b213)){manager[_0xef81('0x4b')](_0x18b213);manager['deleteJob'](_0x18b213);logger[_0xef81('0xb')](_0xef81('0x4c'),_0x18b213);}}logger['info'](_0xef81('0x4d'),JSON[_0xef81('0x35')](_0x26df4e));for(_0x3b775e=0x0;_0x3b775e<_0x26df4e[_0xef81('0x49')];_0x3b775e+=0x1){_0x18b213=_0x26df4e[_0x3b775e]['toString']();logger[_0xef81('0xb')](_0xef81('0x4e'),_0x18b213);if(_0x41fed6){logger[_0xef81('0xb')](_0xef81('0x4f'),_0x41fed6);logger[_0xef81('0xb')](JSON['stringify'](_0x5e2490[_0x18b213]));BPromise[_0xef81('0x50')]()[_0xef81('0x31')](handleJob(_0x5e2490[_0x18b213]));logger[_0xef81('0xb')]('run\x20job',_0x5e2490[_0x18b213]['name'],_0x5e2490[_0x18b213][_0xef81('0x51')]);}else if(_0x5e2490[_0x18b213][_0xef81('0x51')]&&_0x5e2490[_0x18b213][_0xef81('0x52')]&&moment()[_0xef81('0x53')](_0x5e2490[_0x18b213][_0xef81('0x54')],_0x5e2490[_0x18b213]['endAt'])){manager['add'](_0x18b213,_0x5e2490[_0x18b213]['cron'],handleJob(_0x5e2490[_0x18b213]));manager[_0xef81('0x55')](_0x18b213);logger[_0xef81('0xb')](_0xef81('0x56'),_0x5e2490[_0x18b213][_0xef81('0x17')],_0x5e2490[_0x18b213][_0xef81('0x51')]);}else if(manager[_0xef81('0x4a')](_0x18b213)){manager[_0xef81('0x4b')](_0x18b213);manager[_0xef81('0x57')](_0x18b213);logger[_0xef81('0xb')]('stop\x20cron',_0x5e2490[_0x18b213][_0xef81('0x17')],_0x5e2490[_0x18b213][_0xef81('0x51')]);}}for(_0x3b775e=0x0,_0x18b213;_0x3b775e<_0x1faef6[_0xef81('0x49')]&&!_0x41fed6;_0x3b775e+=0x1){_0x18b213=_0x1faef6[_0x3b775e][_0xef81('0x46')]();if(manager['exists'](_0x18b213)){if(_0x5e2490[_0x18b213][_0xef81('0x51')]&&_0x5e2490[_0x18b213][_0xef81('0x52')]&&moment()[_0xef81('0x53')](_0x5e2490[_0x18b213]['startAt'],_0x5e2490[_0x18b213][_0xef81('0x58')])){manager[_0xef81('0x59')](_0x18b213,_0x5e2490[_0x18b213]['cron'],handleJob(_0x5e2490[_0x18b213]));logger[_0xef81('0xb')](_0xef81('0x5a'),_0x5e2490[_0x18b213]['name'],_0x5e2490[_0x18b213][_0xef81('0x51')]);}else{manager[_0xef81('0x4b')](_0x18b213);manager[_0xef81('0x57')](_0x18b213);logger[_0xef81('0xb')](_0xef81('0x5b'),_0x5e2490[_0x18b213]['name'],_0x5e2490[_0x18b213][_0xef81('0x51')]);}}}})[_0xef81('0x34')](function(_0x353b11){logger[_0xef81('0x32')](JSON[_0xef81('0x35')](_0x353b11));});}exports[_0xef81('0x5c')]=function(_0x148b5a){return getJobs(_0x148b5a);};exports[_0xef81('0x55')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0xb865=['intersection','difference','length','exists','stop','deleteJob','delete\x20cron','toRun','index','resolve','run\x20job','cron','active','startAt','endAt','add','start','add\x20cron','stop\x20cron','update','update\x20cron','run','path','lodash','moment','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','email','Smtp','service','MailAccount','host','port','secure','authentication','user','format','\x22%s\x22\x20<%s>','name','bcc','subtractNumber','subtractUnit','join','../../files/reports','savename','%s.%s','basename','extname','zip','status','Sent','attachments','message','text','existsSync','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','error','error\x20mail','stringify','info','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','exec\x20defaul\x20report\x20id:%s','DefaultReportId','runReport','then','catch','CustomReportId','no\x20report\x20id','findAll','keys','jobs','map','toString','keyBy'];(function(_0x3802dd,_0x426503){var _0x2af66a=function(_0x1558bb){while(--_0x1558bb){_0x3802dd['push'](_0x3802dd['shift']());}};_0x2af66a(++_0x426503);}(_0xb865,0x6e));var _0x5b86=function(_0x397bbb,_0x578c5){_0x397bbb=_0x397bbb-0x0;var _0x3ff4cc=_0xb865[_0x397bbb];return _0x3ff4cc;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0x5b86('0x0'));var _=require(_0x5b86('0x1'));var moment=require(_0x5b86('0x2'));var CronJobManager=require(_0x5b86('0x3'));var jayson=require(_0x5b86('0x4'));var BPromise=require(_0x5b86('0x5'));var logger=require(_0x5b86('0x6'))(_0x5b86('0x7'));var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0x5b86('0x8'));var analyticDefaultReportController=require(_0x5b86('0x9'));var client=jayson[_0x5b86('0xa')][_0x5b86('0xb')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x8ee03f,_0x34fa96){return function(){logger['info']('Try\x20to\x20send\x20a\x20mail\x20to',_0x8ee03f[_0x5b86('0xc')]);var _0x523cfd=!![];var _0x447462={'tls':{'rejectUnauthorized':![]}};if(_0x8ee03f['MailAccount'][_0x5b86('0xd')]['service']){_0x447462[_0x5b86('0xe')]=_0x8ee03f[_0x5b86('0xf')][_0x5b86('0xd')][_0x5b86('0xe')];}else{_0x447462[_0x5b86('0x10')]=_0x8ee03f[_0x5b86('0xf')][_0x5b86('0xd')][_0x5b86('0x10')];_0x447462[_0x5b86('0x11')]=_0x8ee03f['MailAccount'][_0x5b86('0xd')]['port'];_0x447462[_0x5b86('0x12')]=_0x8ee03f[_0x5b86('0xf')]['Smtp']['secure'];}if(_0x8ee03f['MailAccount'][_0x5b86('0xd')][_0x5b86('0x13')]){_0x447462['auth']={'user':_0x8ee03f['MailAccount'][_0x5b86('0xd')][_0x5b86('0x14')],'pass':_0x8ee03f[_0x5b86('0xf')][_0x5b86('0xd')]['pass']};}var _0x205b08={'account':_0x447462,'message':{'from':util[_0x5b86('0x15')](_0x5b86('0x16'),_0x8ee03f[_0x5b86('0xf')][_0x5b86('0x17')],_0x8ee03f[_0x5b86('0xf')]['email']||_0x8ee03f['MailAccount']['Smtp'][_0x5b86('0x14')]),'to':_0x8ee03f['email'],'cc':_0x8ee03f['cc'],'bcc':_0x8ee03f[_0x5b86('0x18')],'subject':util[_0x5b86('0x15')]('Report\x20%s\x20last\x20%s\x20%s',_0x34fa96[_0x5b86('0x17')],_0x8ee03f[_0x5b86('0x19')],_0x8ee03f[_0x5b86('0x1a')])}};var _0xb4eaf1=path[_0x5b86('0x1b')](__dirname,_0x5b86('0x1c'));var _0x1c593f=_0x34fa96[_0x5b86('0x1d')];var _0x2147cc=util['format'](_0x5b86('0x1e'),path[_0x5b86('0x1f')](_0x34fa96[_0x5b86('0x1d')],path[_0x5b86('0x20')](_0x34fa96[_0x5b86('0x1d')])),_0x5b86('0x21'));var _0x519466=path[_0x5b86('0x1b')](_0xb4eaf1,_0x1c593f);var _0x4316db=path[_0x5b86('0x1b')](_0xb4eaf1,_0x2147cc);if(fs['existsSync'](_0x519466)){_0x34fa96[_0x5b86('0x22')]=_0x5b86('0x23');_0x205b08['message'][_0x5b86('0x24')]=[{'filename':_0x1c593f,'path':_0x519466}];_0x205b08[_0x5b86('0x25')][_0x5b86('0x26')]=util['format']('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON['stringify'](_0x34fa96,null,0x2));}else if(fs[_0x5b86('0x27')](_0x4316db)){_0x34fa96[_0x5b86('0x22')]=_0x5b86('0x23');_0x205b08[_0x5b86('0x25')][_0x5b86('0x24')]=[{'filename':_0x2147cc,'path':_0x4316db}];}else{_0x205b08[_0x5b86('0x25')][_0x5b86('0x26')]=_0x5b86('0x28');if(!_0x8ee03f[_0x5b86('0x29')]){_0x523cfd=![];logger['info']('empty\x20file,\x20email\x20not\x20sent');}}if(_0x523cfd){return client['request']('SendMail',_0x205b08)['then'](function(_0x4dd6f0){if(_0x4dd6f0['error']){return logger[_0x5b86('0x2a')](_0x5b86('0x2b'),JSON[_0x5b86('0x2c')](_0x4dd6f0));}return logger[_0x5b86('0x2d')]('email\x20sent');})['catch'](function(_0x52ef16){return logger[_0x5b86('0x2a')]('error\x20mail',JSON[_0x5b86('0x2c')](_0x52ef16));});}};}function handleError(){return function(_0x571f9a){return logger[_0x5b86('0x2a')](JSON[_0x5b86('0x2c')](_0x571f9a));};}function handleResult(_0x21b661){return function(_0xe5bb23){logger[_0x5b86('0x2d')]('data',JSON[_0x5b86('0x2c')](_0xe5bb23));if(_0x21b661[_0x5b86('0xf')]&&_0x21b661[_0x5b86('0xf')][_0x5b86('0xd')]&&!_[_0x5b86('0x2e')](_0x21b661[_0x5b86('0xc')])){setTimeout(handleSendEmail(_0x21b661,_0xe5bb23),0x3c*0x3e8);}};}function handleJob(_0x4e8cc3){return function(){try{if(_[_0x5b86('0x2e')](_0x4e8cc3[_0x5b86('0x19')])){return logger[_0x5b86('0x2d')](_0x5b86('0x2f'));}if(_[_0x5b86('0x2e')](_0x4e8cc3[_0x5b86('0x1a')])){return logger[_0x5b86('0x2d')](_0x5b86('0x30'));}var _0x579618={'startDate':moment()[_0x5b86('0x31')](_0x4e8cc3[_0x5b86('0x19')],_0x4e8cc3['subtractUnit'])[_0x5b86('0x15')](_0x5b86('0x32')),'endDate':moment()['format'](_0x5b86('0x32')),'type':_0x5b86('0x33'),'output':_0x4e8cc3[_0x5b86('0x34')],'name':_0x4e8cc3[_0x5b86('0x17')]};if(!_[_0x5b86('0x2e')](_0x4e8cc3['DefaultReportId'])){logger['info'](_0x5b86('0x35'),_0x4e8cc3[_0x5b86('0x36')]);return analyticDefaultReportController[_0x5b86('0x37')]({'id':_0x4e8cc3[_0x5b86('0x36')]},_0x579618)[_0x5b86('0x38')](handleResult(_0x4e8cc3))[_0x5b86('0x39')](handleError());}if(!_[_0x5b86('0x2e')](_0x4e8cc3['CustomReportId'])){logger[_0x5b86('0x2d')]('exec\x20custom\x20report\x20id:%s',_0x4e8cc3[_0x5b86('0x3a')]);return analyticCustomReportController[_0x5b86('0x37')]({'id':_0x4e8cc3[_0x5b86('0x3a')]},_0x579618)[_0x5b86('0x38')](handleResult(_0x4e8cc3))['catch'](handleError());}}catch(_0x287b70){logger[_0x5b86('0x2a')](JSON[_0x5b86('0x2c')](_0x287b70));}return logger[_0x5b86('0x2d')](_0x5b86('0x3b'));};}function getJobs(_0x2c5466){var _0x2f2faa={};if(_0x2c5466){_0x2f2faa['id']=_0x2c5466;}return db['Schedule'][_0x5b86('0x3c')]({'where':_0x2f2faa,'include':[{'model':db[_0x5b86('0xf')],'attributes':['id',_0x5b86('0x17'),_0x5b86('0xc')],'include':[{'model':db['MailServerOut'],'as':'Smtp'}]}]})[_0x5b86('0x38')](function(_0x2c3d1c){var _0x40d0ae=_[_0x5b86('0x3d')](manager[_0x5b86('0x3e')]);var _0x188cd8=_[_0x5b86('0x3f')](_0x2c3d1c,function(_0x325a69){return _0x325a69['id'][_0x5b86('0x40')]();});var _0x5ee31c=_[_0x5b86('0x41')](_0x2c3d1c,function(_0x10c525){return _0x10c525['id'][_0x5b86('0x40')]();});var _0x3aa27a=_0x2c5466?_0x188cd8:_['difference'](_0x188cd8,_0x40d0ae);var _0x1b96b4=_[_0x5b86('0x42')](_0x188cd8,_0x40d0ae);var _0x1204bb=_[_0x5b86('0x43')](_0x40d0ae,_0x188cd8);var _0x4cfb84;var _0x1c2396;for(_0x4cfb84=0x0;_0x4cfb84<_0x1204bb[_0x5b86('0x44')]&&!_0x2c5466;_0x4cfb84+=0x1){_0x1c2396=_0x1204bb[_0x4cfb84][_0x5b86('0x40')]();if(manager[_0x5b86('0x45')](_0x1c2396)){manager[_0x5b86('0x46')](_0x1c2396);manager[_0x5b86('0x47')](_0x1c2396);logger[_0x5b86('0x2d')](_0x5b86('0x48'),_0x1c2396);}}logger[_0x5b86('0x2d')](_0x5b86('0x49'),JSON[_0x5b86('0x2c')](_0x3aa27a));for(_0x4cfb84=0x0;_0x4cfb84<_0x3aa27a[_0x5b86('0x44')];_0x4cfb84+=0x1){_0x1c2396=_0x3aa27a[_0x4cfb84]['toString']();logger['info'](_0x5b86('0x4a'),_0x1c2396);if(_0x2c5466){logger[_0x5b86('0x2d')]('my\x20id',_0x2c5466);logger[_0x5b86('0x2d')](JSON[_0x5b86('0x2c')](_0x5ee31c[_0x1c2396]));BPromise[_0x5b86('0x4b')]()[_0x5b86('0x38')](handleJob(_0x5ee31c[_0x1c2396]));logger[_0x5b86('0x2d')](_0x5b86('0x4c'),_0x5ee31c[_0x1c2396][_0x5b86('0x17')],_0x5ee31c[_0x1c2396][_0x5b86('0x4d')]);}else if(_0x5ee31c[_0x1c2396][_0x5b86('0x4d')]&&_0x5ee31c[_0x1c2396][_0x5b86('0x4e')]&&moment()['isBetween'](_0x5ee31c[_0x1c2396][_0x5b86('0x4f')],_0x5ee31c[_0x1c2396][_0x5b86('0x50')])){manager[_0x5b86('0x51')](_0x1c2396,_0x5ee31c[_0x1c2396][_0x5b86('0x4d')],handleJob(_0x5ee31c[_0x1c2396]));manager[_0x5b86('0x52')](_0x1c2396);logger[_0x5b86('0x2d')](_0x5b86('0x53'),_0x5ee31c[_0x1c2396][_0x5b86('0x17')],_0x5ee31c[_0x1c2396][_0x5b86('0x4d')]);}else if(manager[_0x5b86('0x45')](_0x1c2396)){manager[_0x5b86('0x46')](_0x1c2396);manager[_0x5b86('0x47')](_0x1c2396);logger['info'](_0x5b86('0x54'),_0x5ee31c[_0x1c2396][_0x5b86('0x17')],_0x5ee31c[_0x1c2396][_0x5b86('0x4d')]);}}for(_0x4cfb84=0x0,_0x1c2396;_0x4cfb84<_0x1b96b4['length']&&!_0x2c5466;_0x4cfb84+=0x1){_0x1c2396=_0x1b96b4[_0x4cfb84][_0x5b86('0x40')]();if(manager[_0x5b86('0x45')](_0x1c2396)){if(_0x5ee31c[_0x1c2396][_0x5b86('0x4d')]&&_0x5ee31c[_0x1c2396][_0x5b86('0x4e')]&&moment()['isBetween'](_0x5ee31c[_0x1c2396]['startAt'],_0x5ee31c[_0x1c2396][_0x5b86('0x50')])){manager[_0x5b86('0x55')](_0x1c2396,_0x5ee31c[_0x1c2396][_0x5b86('0x4d')],handleJob(_0x5ee31c[_0x1c2396]));logger[_0x5b86('0x2d')](_0x5b86('0x56'),_0x5ee31c[_0x1c2396][_0x5b86('0x17')],_0x5ee31c[_0x1c2396][_0x5b86('0x4d')]);}else{manager[_0x5b86('0x46')](_0x1c2396);manager[_0x5b86('0x47')](_0x1c2396);logger[_0x5b86('0x2d')]('stop\x20cron',_0x5ee31c[_0x1c2396][_0x5b86('0x17')],_0x5ee31c[_0x1c2396][_0x5b86('0x4d')]);}}}})[_0x5b86('0x39')](function(_0x4a7ea6){logger['error'](JSON[_0x5b86('0x2c')](_0x4a7ea6));});}exports[_0x5b86('0x57')]=function(_0x1199a5){return getJobs(_0x1199a5);};exports[_0x5b86('0x52')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index c0780cb..4b70626 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e65=['data1','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJobStatus','TranscriptionJob','COMPLETED','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','fileText','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','Positive','SentimentScore','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','bucket','CloudProvider','catch','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','transcribe','transcribeAccountId','findOne','forEach','all','error','start','aws-sdk','request-promise','util','bluebird','../../mysqldb','getTranscriptionJob','detectSentiment','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName'];(function(_0x550d12,_0x5384bd){var _0x12103d=function(_0x2a9834){while(--_0x2a9834){_0x550d12['push'](_0x550d12['shift']());}};_0x12103d(++_0x5384bd);}(_0x4e65,0xc4));var _0x54e6=function(_0x4e6147,_0x47e036){_0x4e6147=_0x4e6147-0x0;var _0x30e936=_0x4e65[_0x4e6147];return _0x30e936;};var _=require('lodash');var AWS=require(_0x54e6('0x0'));var rp=require(_0x54e6('0x1'));var util=require(_0x54e6('0x2'));var BPromise=require(_0x54e6('0x3'));var db=require(_0x54e6('0x4'))['db'];var logger=require('../../config/logger')('transcribe');function getTranscriptionJob(_0x1bf294,_0x337956,_0x1fee1d,_0x1eb261){return new Promise(function(_0x23b09a,_0x5d1ffc){var _0x3c9f97=new AWS['TranscribeService']({'accessKeyId':_0x337956,'secretAccessKey':_0x1bf294,'region':_0x1fee1d});_0x3c9f97[_0x54e6('0x5')]({'TranscriptionJobName':_0x1eb261},function(_0x1a2191,_0x2bf501){if(_0x1a2191){return _0x5d1ffc(_0x1a2191);}else{return _0x23b09a(_0x2bf501);}});});}function sentiment(_0x18a402,_0x566226,_0x2aa46c,_0x2050eb,_0x3bf12c){return new Promise(function(_0x2e4d0f,_0xdc2b21){var _0x2ca34a=new AWS['Comprehend']({'accessKeyId':_0x566226,'secretAccessKey':_0x18a402,'region':_0x2aa46c});_0x2ca34a[_0x54e6('0x6')]({'Text':_0x2050eb,'LanguageCode':_0x3bf12c['substring'](0x0,0x2)},function(_0x1126d4,_0x5f47be){if(_0x1126d4){return _0xdc2b21(_0x1126d4);}else{return _0x2e4d0f(_0x5f47be);}});});}function checkTranscribeJob(_0xf3f183,_0x42809d,_0x5bb31c){var _0x1524ef;return new BPromise(function(_0x5036e8,_0x32484a){logger[_0x54e6('0x7')](util[_0x54e6('0x8')](_0x54e6('0x9'),_0xf3f183['id'],_0xf3f183[_0x54e6('0xa')]));return getTranscriptionJob(_0x5bb31c[_0x54e6('0xb')],_0x5bb31c['data2'],_0x42809d[_0x54e6('0xc')],_0xf3f183[_0x54e6('0xa')])[_0x54e6('0xd')](function(_0x5ec08b){logger['info'](util['format'](_0x54e6('0xe'),_0xf3f183['id'],_0xf3f183[_0x54e6('0xa')],_0x5ec08b['TranscriptionJob'][_0x54e6('0xf')]));if(!_0xf3f183['fileText']){switch(_0x5ec08b[_0x54e6('0x10')][_0x54e6('0xf')]){case _0x54e6('0x11'):var _0x4d23c7={'transcribeStatus':_0x5ec08b['TranscriptionJob'][_0x54e6('0xf')],'fileUri':_0x5ec08b[_0x54e6('0x10')]['Transcript']['TranscriptFileUri']};logger['info'](util[_0x54e6('0x8')](_0x54e6('0x12'),_0xf3f183['id']));return rp({'uri':_0x5ec08b[_0x54e6('0x10')]['Transcript']['TranscriptFileUri'],'json':!![]})['then'](function(_0x1a0246){logger[_0x54e6('0x7')](util[_0x54e6('0x8')](_0x54e6('0x13'),_0xf3f183['id']));if(_0x1a0246&&_0x1a0246[_0x54e6('0x14')]&&_0x1a0246[_0x54e6('0x14')][_0x54e6('0x15')]&&_0x1a0246[_0x54e6('0x14')]['transcripts'][_0x54e6('0x16')]){_0x4d23c7[_0x54e6('0x17')]='';for(var _0x1ba9ab=0x0;_0x1ba9ab<_0x1a0246[_0x54e6('0x14')][_0x54e6('0x15')]['length'];_0x1ba9ab++){_0x4d23c7['fileText']+=_0x1a0246[_0x54e6('0x14')][_0x54e6('0x15')][_0x1ba9ab][_0x54e6('0x18')]+'';}}return _0xf3f183[_0x54e6('0x19')](_0x4d23c7);})['then'](function(){logger[_0x54e6('0x7')](util['format'](_0x54e6('0x1a'),_0xf3f183['id']));if(!_0xf3f183['tempSentiment']){throw new db['Sequelize']['ValidationError'](_0x54e6('0x1b'));}if(!_0x42809d[_0x54e6('0x1c')]||!_0x42809d[_0x54e6('0x1d')]||!_0x42809d[_0x54e6('0x1e')]||!_0x42809d[_0x54e6('0x1f')]||!_0x42809d['bucket']){throw new db[(_0x54e6('0x20'))][(_0x54e6('0x21'))](_0x54e6('0x22'));}if(!_0x4d23c7[_0x54e6('0x17')]){throw new Error(_0x54e6('0x23'));}if(_0x42809d[_0x54e6('0x1d')]===_0x5bb31c['id']){return _0x5bb31c;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings[_0x54e6('0x1d')]}});}})[_0x54e6('0xd')](function(_0x5e43a7){if(!_0x5e43a7){throw new db[(_0x54e6('0x20'))][(_0x54e6('0x21'))](_0x54e6('0x24'));}if(!_0x5e43a7[_0x54e6('0xb')]||!_0x5e43a7[_0x54e6('0x25')]){throw new db[(_0x54e6('0x20'))]['ValidationError'](_0x54e6('0x26'));}_0x1524ef=_0x5e43a7;logger[_0x54e6('0x7')](util[_0x54e6('0x8')](_0x54e6('0x27'),_0xf3f183['id']));return sentiment(_0x1524ef['data1'],_0x1524ef[_0x54e6('0x25')],_0x42809d[_0x54e6('0x1e')],_0x4d23c7[_0x54e6('0x17')],_0x42809d[_0x54e6('0x1f')]);})[_0x54e6('0xd')](function(_0x1fba19){logger['info'](util[_0x54e6('0x8')](_0x54e6('0x28'),_0xf3f183['id']));return _0xf3f183[_0x54e6('0x19')]({'sentiment':_0x1fba19[_0x54e6('0x29')],'sPositive':_0x1fba19['SentimentScore'][_0x54e6('0x2a')],'sNegative':_0x1fba19[_0x54e6('0x2b')][_0x54e6('0x2c')],'sMixed':_0x1fba19[_0x54e6('0x2b')][_0x54e6('0x2d')],'sNeutral':_0x1fba19['SentimentScore'][_0x54e6('0x2e')]});})[_0x54e6('0xd')](function(){logger[_0x54e6('0x7')](util[_0x54e6('0x8')](_0x54e6('0x1a'),_0xf3f183['id']));_0x5036e8();});case _0x54e6('0x2f'):return _0xf3f183[_0x54e6('0x19')]({'transcribeStatus':_0x54e6('0x2f'),'failureReason':_0x5ec08b[_0x54e6('0x10')][_0x54e6('0x30')]})[_0x54e6('0xd')](function(){logger[_0x54e6('0x7')](util[_0x54e6('0x8')](_0x54e6('0x1a'),_0xf3f183['id']));_0x5036e8();});default:logger[_0x54e6('0x7')](util[_0x54e6('0x8')](_0x54e6('0x31'),_0xf3f183['id']));break;}}else{return BPromise[_0x54e6('0x32')]()[_0x54e6('0xd')](function(){if(!_0xf3f183[_0x54e6('0x33')]){throw new db[(_0x54e6('0x20'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x42809d[_0x54e6('0x1c')]||!_0x42809d[_0x54e6('0x1d')]||!_0x42809d[_0x54e6('0x1e')]||!_0x42809d['language']||!_0x42809d[_0x54e6('0x34')]){throw new db[(_0x54e6('0x20'))]['ValidationError'](_0x54e6('0x22'));}if(!_0xf3f183[_0x54e6('0x17')]){throw new Error(_0x54e6('0x23'));}if(_0x42809d[_0x54e6('0x1d')]===_0x5bb31c['id']){return _0x5bb31c;}else{return db[_0x54e6('0x35')]['findOne']({'where':{'id':_settings[_0x54e6('0x1d')]}});}})[_0x54e6('0xd')](function(_0x27d082){if(!_0x27d082){throw new db[(_0x54e6('0x20'))][(_0x54e6('0x21'))](_0x54e6('0x24'));}if(!_0x27d082[_0x54e6('0xb')]||!_0x27d082[_0x54e6('0x25')]){throw new db['Sequelize']['ValidationError'](_0x54e6('0x26'));}_0x1524ef=_0x27d082;logger[_0x54e6('0x7')](util[_0x54e6('0x8')](_0x54e6('0x27'),_0xf3f183['id']));return sentiment(_0x1524ef[_0x54e6('0xb')],_0x1524ef[_0x54e6('0x25')],_0x42809d['sentimentRegion'],_0xf3f183[_0x54e6('0x17')],_0x42809d[_0x54e6('0x1f')]);})[_0x54e6('0xd')](function(_0x4f4ad1){logger[_0x54e6('0x7')](util[_0x54e6('0x8')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0xf3f183['id']));return _0xf3f183[_0x54e6('0x19')]({'sentiment':_0x4f4ad1['Sentiment'],'sPositive':_0x4f4ad1['SentimentScore'][_0x54e6('0x2a')],'sNegative':_0x4f4ad1['SentimentScore']['Negative'],'sMixed':_0x4f4ad1[_0x54e6('0x2b')]['Mixed'],'sNeutral':_0x4f4ad1[_0x54e6('0x2b')][_0x54e6('0x2e')],'transcribeStatus':_0x54e6('0x11')});})[_0x54e6('0xd')](function(){logger[_0x54e6('0x7')](util[_0x54e6('0x8')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0xf3f183['id']));_0x5036e8();});}})[_0x54e6('0x36')](function(_0x5e6116){if(_0x5e6116){if(!_0x5e6116[_0x54e6('0x37')]||_0x5e6116[_0x54e6('0x37')]!==_0x54e6('0x38')){logger['error'](util['format'](_0x54e6('0x39'),_0xf3f183['id']),util['inspect'](_0x5e6116,{'showHidden':![],'depth':null}));}}_0x5036e8();});});}function checkTranscribe(){var _0x34f405;var _0x18ba5f;var _0x2bb8ef;return db['VoiceRecording'][_0x54e6('0x3a')]({'where':{'transcribeStatus':_0x54e6('0x3b')}})[_0x54e6('0xd')](function(_0x2d67ba){if(!_0x2d67ba||!_0x2d67ba[_0x54e6('0x16')]){throw new db[(_0x54e6('0x20'))]['ValidationError'](_0x54e6('0x3c'));}_0x34f405=_0x2d67ba;return db[_0x54e6('0x3d')]['findOne']({'where':{'id':0x1}});})[_0x54e6('0xd')](function(_0x5387c2){if(!_0x5387c2){throw new db[(_0x54e6('0x20'))][(_0x54e6('0x21'))]('Settings\x20not\x20available');}_0x18ba5f=_0x5387c2;if(!_0x18ba5f[_0x54e6('0x3e')]||!_0x18ba5f[_0x54e6('0x3f')]||!_0x18ba5f[_0x54e6('0xc')]||!_0x18ba5f[_0x54e6('0x1f')]||!_0x18ba5f[_0x54e6('0x34')]){throw new db[(_0x54e6('0x20'))]['ValidationError']('Transcribe\x20not\x20configured');}return db[_0x54e6('0x35')][_0x54e6('0x40')]({'where':{'id':_0x18ba5f[_0x54e6('0x3f')]}});})[_0x54e6('0xd')](function(_0x3a0b90){if(!_0x3a0b90){throw new db[(_0x54e6('0x20'))][(_0x54e6('0x21'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x3a0b90['data1']||!_0x3a0b90[_0x54e6('0x25')]){throw new db[(_0x54e6('0x20'))][(_0x54e6('0x21'))](_0x54e6('0x26'));}_0x2bb8ef=_0x3a0b90;var _0x346d07=[];_0x34f405[_0x54e6('0x41')](function(_0x11c8ff){_0x346d07['push'](checkTranscribeJob(_0x11c8ff,_0x18ba5f,_0x2bb8ef));});return BPromise[_0x54e6('0x42')](_0x346d07);})[_0x54e6('0x36')](function(_0x50b230){if(_0x50b230){if(!_0x50b230[_0x54e6('0x37')]||_0x50b230['name']!==_0x54e6('0x38')){logger[_0x54e6('0x43')](util['inspect'](_0x50b230,{'showHidden':![],'depth':null}));}}});}exports[_0x54e6('0x44')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0x6075=['sentimentAccountId','sentimentRegion','language','bucket','ValidationError','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Negative','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','push','catch','inspect','start','lodash','aws-sdk','util','bluebird','transcribe','getTranscriptionJob','Comprehend','detectSentiment','info','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','data2','transcribeRegion','transcribeName','then','format','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','Transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','sentiment'];(function(_0xc1c335,_0x12740e){var _0x1f0d19=function(_0x3b7943){while(--_0x3b7943){_0xc1c335['push'](_0xc1c335['shift']());}};_0x1f0d19(++_0x12740e);}(_0x6075,0x142));var _0x5607=function(_0x967605,_0x569216){_0x967605=_0x967605-0x0;var _0x24de00=_0x6075[_0x967605];return _0x24de00;};var _=require(_0x5607('0x0'));var AWS=require(_0x5607('0x1'));var rp=require('request-promise');var util=require(_0x5607('0x2'));var BPromise=require(_0x5607('0x3'));var db=require('../../mysqldb')['db'];var logger=require('../../config/logger')(_0x5607('0x4'));function getTranscriptionJob(_0x541f8e,_0x5c9bec,_0x1d29a7,_0x48abca){return new Promise(function(_0x2d42d4,_0x4bb34a){var _0x34a8d9=new AWS['TranscribeService']({'accessKeyId':_0x5c9bec,'secretAccessKey':_0x541f8e,'region':_0x1d29a7});_0x34a8d9[_0x5607('0x5')]({'TranscriptionJobName':_0x48abca},function(_0x5f92ad,_0xbdf802){if(_0x5f92ad){return _0x4bb34a(_0x5f92ad);}else{return _0x2d42d4(_0xbdf802);}});});}function sentiment(_0xea0d09,_0xd69c6c,_0x2aec99,_0x3769ef,_0x24d65d){return new Promise(function(_0x16db79,_0x707cf8){var _0x2a83b6=new AWS[(_0x5607('0x6'))]({'accessKeyId':_0xd69c6c,'secretAccessKey':_0xea0d09,'region':_0x2aec99});_0x2a83b6[_0x5607('0x7')]({'Text':_0x3769ef,'LanguageCode':_0x24d65d['substring'](0x0,0x2)},function(_0x20e18b,_0x141725){if(_0x20e18b){return _0x707cf8(_0x20e18b);}else{return _0x16db79(_0x141725);}});});}function checkTranscribeJob(_0x8a2954,_0x5d9418,_0x8d61f1){var _0x4166c7;return new BPromise(function(_0x5b4f19,_0x413013){logger[_0x5607('0x8')](util['format'](_0x5607('0x9'),_0x8a2954['id'],_0x8a2954['transcribeName']));return getTranscriptionJob(_0x8d61f1[_0x5607('0xa')],_0x8d61f1[_0x5607('0xb')],_0x5d9418[_0x5607('0xc')],_0x8a2954[_0x5607('0xd')])[_0x5607('0xe')](function(_0x17ede4){logger[_0x5607('0x8')](util[_0x5607('0xf')](_0x5607('0x10'),_0x8a2954['id'],_0x8a2954[_0x5607('0xd')],_0x17ede4[_0x5607('0x11')][_0x5607('0x12')]));if(!_0x8a2954[_0x5607('0x13')]){switch(_0x17ede4[_0x5607('0x11')][_0x5607('0x12')]){case _0x5607('0x14'):var _0x19f817={'transcribeStatus':_0x17ede4['TranscriptionJob']['TranscriptionJobStatus'],'fileUri':_0x17ede4['TranscriptionJob']['Transcript'][_0x5607('0x15')]};logger[_0x5607('0x8')](util[_0x5607('0xf')](_0x5607('0x16'),_0x8a2954['id']));return rp({'uri':_0x17ede4[_0x5607('0x11')][_0x5607('0x17')][_0x5607('0x15')],'json':!![]})[_0x5607('0xe')](function(_0x5ecb83){logger['info'](util[_0x5607('0xf')](_0x5607('0x18'),_0x8a2954['id']));if(_0x5ecb83&&_0x5ecb83[_0x5607('0x19')]&&_0x5ecb83['results'][_0x5607('0x1a')]&&_0x5ecb83[_0x5607('0x19')][_0x5607('0x1a')][_0x5607('0x1b')]){_0x19f817[_0x5607('0x13')]='';for(var _0x44c5ef=0x0;_0x44c5ef<_0x5ecb83['results']['transcripts'][_0x5607('0x1b')];_0x44c5ef++){_0x19f817[_0x5607('0x13')]+=_0x5ecb83[_0x5607('0x19')]['transcripts'][_0x44c5ef]['transcript']+'';}}return _0x8a2954[_0x5607('0x1c')](_0x19f817);})['then'](function(){logger[_0x5607('0x8')](util[_0x5607('0xf')](_0x5607('0x1d'),_0x8a2954['id']));if(!_0x8a2954[_0x5607('0x1e')]){throw new db[(_0x5607('0x1f'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x5d9418[_0x5607('0x20')]||!_0x5d9418[_0x5607('0x21')]||!_0x5d9418[_0x5607('0x22')]||!_0x5d9418[_0x5607('0x23')]||!_0x5d9418[_0x5607('0x24')]){throw new db[(_0x5607('0x1f'))][(_0x5607('0x25'))](_0x5607('0x26'));}if(!_0x19f817['fileText']){throw new Error(_0x5607('0x27'));}if(_0x5d9418[_0x5607('0x21')]===_0x8d61f1['id']){return _0x8d61f1;}else{return db[_0x5607('0x28')][_0x5607('0x29')]({'where':{'id':_settings[_0x5607('0x21')]}});}})[_0x5607('0xe')](function(_0x337216){if(!_0x337216){throw new db[(_0x5607('0x1f'))][(_0x5607('0x25'))](_0x5607('0x2a'));}if(!_0x337216['data1']||!_0x337216[_0x5607('0xb')]){throw new db['Sequelize'][(_0x5607('0x25'))](_0x5607('0x2b'));}_0x4166c7=_0x337216;logger[_0x5607('0x8')](util[_0x5607('0xf')](_0x5607('0x2c'),_0x8a2954['id']));return sentiment(_0x4166c7['data1'],_0x4166c7[_0x5607('0xb')],_0x5d9418[_0x5607('0x22')],_0x19f817[_0x5607('0x13')],_0x5d9418[_0x5607('0x23')]);})[_0x5607('0xe')](function(_0x2029a8){logger[_0x5607('0x8')](util[_0x5607('0xf')](_0x5607('0x2d'),_0x8a2954['id']));return _0x8a2954['update']({'sentiment':_0x2029a8[_0x5607('0x2e')],'sPositive':_0x2029a8[_0x5607('0x2f')][_0x5607('0x30')],'sNegative':_0x2029a8[_0x5607('0x2f')]['Negative'],'sMixed':_0x2029a8['SentimentScore'][_0x5607('0x31')],'sNeutral':_0x2029a8[_0x5607('0x2f')][_0x5607('0x32')]});})[_0x5607('0xe')](function(){logger['info'](util[_0x5607('0xf')](_0x5607('0x1d'),_0x8a2954['id']));_0x5b4f19();});case _0x5607('0x33'):return _0x8a2954['update']({'transcribeStatus':_0x5607('0x33'),'failureReason':_0x17ede4['TranscriptionJob'][_0x5607('0x34')]})[_0x5607('0xe')](function(){logger[_0x5607('0x8')](util[_0x5607('0xf')](_0x5607('0x1d'),_0x8a2954['id']));_0x5b4f19();});default:logger[_0x5607('0x8')](util[_0x5607('0xf')](_0x5607('0x35'),_0x8a2954['id']));break;}}else{return BPromise[_0x5607('0x36')]()[_0x5607('0xe')](function(){if(!_0x8a2954[_0x5607('0x1e')]){throw new db[(_0x5607('0x1f'))][(_0x5607('0x25'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x5d9418[_0x5607('0x20')]||!_0x5d9418['sentimentAccountId']||!_0x5d9418[_0x5607('0x22')]||!_0x5d9418[_0x5607('0x23')]||!_0x5d9418[_0x5607('0x24')]){throw new db[(_0x5607('0x1f'))][(_0x5607('0x25'))](_0x5607('0x26'));}if(!_0x8a2954[_0x5607('0x13')]){throw new Error(_0x5607('0x27'));}if(_0x5d9418['sentimentAccountId']===_0x8d61f1['id']){return _0x8d61f1;}else{return db[_0x5607('0x28')]['findOne']({'where':{'id':_settings['sentimentAccountId']}});}})['then'](function(_0x307b0e){if(!_0x307b0e){throw new db[(_0x5607('0x1f'))]['ValidationError'](_0x5607('0x2a'));}if(!_0x307b0e[_0x5607('0xa')]||!_0x307b0e[_0x5607('0xb')]){throw new db[(_0x5607('0x1f'))][(_0x5607('0x25'))](_0x5607('0x2b'));}_0x4166c7=_0x307b0e;logger[_0x5607('0x8')](util[_0x5607('0xf')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x8a2954['id']));return sentiment(_0x4166c7[_0x5607('0xa')],_0x4166c7['data2'],_0x5d9418[_0x5607('0x22')],_0x8a2954[_0x5607('0x13')],_0x5d9418[_0x5607('0x23')]);})[_0x5607('0xe')](function(_0x2db550){logger[_0x5607('0x8')](util[_0x5607('0xf')](_0x5607('0x2d'),_0x8a2954['id']));return _0x8a2954[_0x5607('0x1c')]({'sentiment':_0x2db550[_0x5607('0x2e')],'sPositive':_0x2db550[_0x5607('0x2f')]['Positive'],'sNegative':_0x2db550[_0x5607('0x2f')][_0x5607('0x37')],'sMixed':_0x2db550[_0x5607('0x2f')][_0x5607('0x31')],'sNeutral':_0x2db550['SentimentScore'][_0x5607('0x32')],'transcribeStatus':_0x5607('0x14')});})['then'](function(){logger[_0x5607('0x8')](util[_0x5607('0xf')](_0x5607('0x1d'),_0x8a2954['id']));_0x5b4f19();});}})['catch'](function(_0x8aaa44){if(_0x8aaa44){if(!_0x8aaa44[_0x5607('0x38')]||_0x8aaa44[_0x5607('0x38')]!==_0x5607('0x39')){logger[_0x5607('0x3a')](util['format'](_0x5607('0x3b'),_0x8a2954['id']),util['inspect'](_0x8aaa44,{'showHidden':![],'depth':null}));}}_0x5b4f19();});});}function checkTranscribe(){var _0x2745cd;var _0x1188dd;var _0xef0bad;return db['VoiceRecording'][_0x5607('0x3c')]({'where':{'transcribeStatus':_0x5607('0x3d')}})[_0x5607('0xe')](function(_0x152a7a){if(!_0x152a7a||!_0x152a7a[_0x5607('0x1b')]){throw new db[(_0x5607('0x1f'))][(_0x5607('0x25'))](_0x5607('0x3e'));}_0x2745cd=_0x152a7a;return db[_0x5607('0x3f')][_0x5607('0x29')]({'where':{'id':0x1}});})[_0x5607('0xe')](function(_0x108a83){if(!_0x108a83){throw new db[(_0x5607('0x1f'))]['ValidationError'](_0x5607('0x40'));}_0x1188dd=_0x108a83;if(!_0x1188dd['transcribe']||!_0x1188dd[_0x5607('0x41')]||!_0x1188dd['transcribeRegion']||!_0x1188dd[_0x5607('0x23')]||!_0x1188dd[_0x5607('0x24')]){throw new db[(_0x5607('0x1f'))][(_0x5607('0x25'))](_0x5607('0x42'));}return db[_0x5607('0x28')][_0x5607('0x29')]({'where':{'id':_0x1188dd[_0x5607('0x41')]}});})[_0x5607('0xe')](function(_0x46924c){if(!_0x46924c){throw new db[(_0x5607('0x1f'))][(_0x5607('0x25'))](_0x5607('0x2a'));}if(!_0x46924c[_0x5607('0xa')]||!_0x46924c[_0x5607('0xb')]){throw new db[(_0x5607('0x1f'))]['ValidationError']('Cloud\x20Provider\x20not\x20configured');}_0xef0bad=_0x46924c;var _0x3b2989=[];_0x2745cd['forEach'](function(_0x36e4ee){_0x3b2989[_0x5607('0x43')](checkTranscribeJob(_0x36e4ee,_0x1188dd,_0xef0bad));});return BPromise['all'](_0x3b2989);})[_0x5607('0x44')](function(_0x5308aa){if(_0x5308aa){if(!_0x5308aa[_0x5607('0x38')]||_0x5308aa[_0x5607('0x38')]!==_0x5607('0x39')){logger['error'](util[_0x5607('0x45')](_0x5308aa,{'showHidden':![],'depth':null}));}}});}exports[_0x5607('0x46')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index c73e3da..a3c0b43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x282a=['start','lodash','moment','util','../../config/environment','../../mysqldb','../logger','schedule','defaults','redis','localhost','socket.io-emitter','WhatsappInteraction','findAll','lastMsgAt','subtract','then','length','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','info','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','whatsappInteraction:update','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions'];(function(_0x3ea197,_0x4b56d0){var _0x139490=function(_0x5f1e81){while(--_0x5f1e81){_0x3ea197['push'](_0x3ea197['shift']());}};_0x139490(++_0x4b56d0);}(_0x282a,0xf9));var _0xa282=function(_0x7e2eb0,_0x17cd58){_0x7e2eb0=_0x7e2eb0-0x0;var _0xd92de4=_0x282a[_0x7e2eb0];return _0xd92de4;};'use strict';var _=require(_0xa282('0x0'));var moment=require(_0xa282('0x1'));var Redis=require('ioredis');var util=require(_0xa282('0x2'));var config=require(_0xa282('0x3'));var db=require(_0xa282('0x4'))['db'];var logger=require(_0xa282('0x5'))(_0xa282('0x6'));config['redis']=_[_0xa282('0x7')](config[_0xa282('0x8')],{'host':_0xa282('0x9'),'port':0x18eb});var io=require(_0xa282('0xa'))(new Redis(config[_0xa282('0x8')]));function closeInteractions(){var _0x575b0b=[];return db[_0xa282('0xb')][_0xa282('0xc')]({'raw':!![],'attributes':['id',_0xa282('0xd')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xa282('0xe')](0x18,'hours')}}})[_0xa282('0xf')](function(_0x21343d){if(_0x21343d&&_0x21343d[_0xa282('0x10')]){_0x575b0b=_['map'](_0x21343d||[],'id');logger['info'](_0xa282('0x11'),_0x575b0b[_0xa282('0x12')]());return db[_0xa282('0xb')][_0xa282('0x13')]({'closeReason':_0xa282('0x14'),'disposition':_0xa282('0x15'),'closed':!![],'closedAt':moment()[_0xa282('0x16')](_0xa282('0x17'))},{'where':{'id':_0x575b0b}});}})[_0xa282('0xf')](function(){if(_0x575b0b&&_0x575b0b[_0xa282('0x10')]){logger[_0xa282('0x18')](_0xa282('0x19'),_0x575b0b[_0xa282('0x12')]());for(var _0x31fce8=0x0;_0x31fce8<_0x575b0b[_0xa282('0x10')];_0x31fce8++){io['emit'](_0xa282('0x1a'),{'id':_0x575b0b[_0x31fce8],'closed':!![]});}}})[_0xa282('0x1b')](function(_0xe3ce61){logger[_0xa282('0x1c')](_0xa282('0x1d'),_0xe3ce61?util['inspect'](_0xe3ce61,{'showHidden':![],'depth':null}):'');});}exports[_0xa282('0x1e')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0xb44a=['format','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','ioredis','../../config/environment','schedule','defaults','redis','localhost','socket.io-emitter','WhatsappInteraction','findAll','lastMsgAt','subtract','hours','then','map','[WHATSAPP]\x20Interactions\x20to\x20close:','update','system','timeout'];(function(_0x8a969d,_0x339d9f){var _0x1d8dc7=function(_0x283ec0){while(--_0x283ec0){_0x8a969d['push'](_0x8a969d['shift']());}};_0x1d8dc7(++_0x339d9f);}(_0xb44a,0x1c2));var _0xab44=function(_0x1a8ff0,_0x20788d){_0x1a8ff0=_0x1a8ff0-0x0;var _0x3588bf=_0xb44a[_0x1a8ff0];return _0x3588bf;};'use strict';var _=require('lodash');var moment=require('moment');var Redis=require(_0xab44('0x0'));var util=require('util');var config=require(_0xab44('0x1'));var db=require('../../mysqldb')['db'];var logger=require('../logger')(_0xab44('0x2'));config['redis']=_[_0xab44('0x3')](config[_0xab44('0x4')],{'host':_0xab44('0x5'),'port':0x18eb});var io=require(_0xab44('0x6'))(new Redis(config[_0xab44('0x4')]));function closeInteractions(){var _0x3303b1=[];return db[_0xab44('0x7')][_0xab44('0x8')]({'raw':!![],'attributes':['id',_0xab44('0x9')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xab44('0xa')](0x18,_0xab44('0xb'))}}})[_0xab44('0xc')](function(_0xa14367){if(_0xa14367&&_0xa14367['length']){_0x3303b1=_[_0xab44('0xd')](_0xa14367||[],'id');logger['info'](_0xab44('0xe'),_0x3303b1['join']());return db['WhatsappInteraction'][_0xab44('0xf')]({'closeReason':_0xab44('0x10'),'disposition':_0xab44('0x11'),'closed':!![],'closedAt':moment()[_0xab44('0x12')](_0xab44('0x13'))},{'where':{'id':_0x3303b1}});}})[_0xab44('0xc')](function(){if(_0x3303b1&&_0x3303b1['length']){logger['info'](_0xab44('0x14'),_0x3303b1['join']());for(var _0x15db10=0x0;_0x15db10<_0x3303b1['length'];_0x15db10++){io[_0xab44('0x15')](_0xab44('0x16'),{'id':_0x3303b1[_0x15db10],'closed':!![]});}}})[_0xab44('0x17')](function(_0x384f02){logger[_0xab44('0x18')](_0xab44('0x19'),_0x384f02?util['inspect'](_0x384f02,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 8a84418..98594e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd4d=['contacts1','finished\x20populating','hopper1','CmContact','log','contacts2','CmHopper','hopper2','catch','../mysqldb','push','Innocenzo','innocenzo.biondo','now','Biondo','@xcally.com','destroy','then','bulkCreate'];(function(_0x426b0c,_0x29ed24){var _0x3723e0=function(_0x2b497a){while(--_0x2b497a){_0x426b0c['push'](_0x426b0c['shift']());}};_0x3723e0(++_0x29ed24);}(_0xbd4d,0x15f));var _0xdbd4=function(_0x51af8c,_0x7ae22f){_0x51af8c=_0x51af8c-0x0;var _0x170551=_0xbd4d[_0x51af8c];return _0x170551;};'use strict';var util=require('util');var db=require(_0xdbd4('0x0'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xdbd4('0x1')]({'id':i,'firstName':_0xdbd4('0x2')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':_0xdbd4('0x3')+i+'@xcally.com'});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0xdbd4('0x1')]({'id':i,'active':![],'scheduledat':Date[_0xdbd4('0x4')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xdbd4('0x4')](),'updatedAt':Date[_0xdbd4('0x4')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0xdbd4('0x1')]({'id':i,'firstName':_0xdbd4('0x2')+i,'lastName':_0xdbd4('0x5')+i,'phone':0xf879fb460+i,'email':_0xdbd4('0x3')+i+_0xdbd4('0x6')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xdbd4('0x1')]({'id':i,'active':![],'scheduledat':Date[_0xdbd4('0x4')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0xdbd4('0x4')]()});}db['CmContact'][_0xdbd4('0x7')]({'where':{}})[_0xdbd4('0x8')](function(){return db['CmContact'][_0xdbd4('0x9')](contacts);})[_0xdbd4('0x8')](function(){console['log']('finished\x20populating',_0xdbd4('0xa'));return db['CmHopper'][_0xdbd4('0x7')]({'where':{}});})[_0xdbd4('0x8')](function(){return db['CmHopper'][_0xdbd4('0x9')](hopper);})[_0xdbd4('0x8')](function(){console['log'](_0xdbd4('0xb'),_0xdbd4('0xc'));return db[_0xdbd4('0xd')][_0xdbd4('0x9')](contacts2);})[_0xdbd4('0x8')](function(){console[_0xdbd4('0xe')](_0xdbd4('0xb'),_0xdbd4('0xf'));return db[_0xdbd4('0x10')][_0xdbd4('0x9')](hopper2);})[_0xdbd4('0x8')](function(){console[_0xdbd4('0xe')](_0xdbd4('0xb'),_0xdbd4('0x11'));})[_0xdbd4('0x12')](function(_0x406d4e){console[_0xdbd4('0xe')](_0x406d4e);});
\ No newline at end of file
+var _0x4d6d=['catch','../mysqldb','push','Innocenzo','Biondo','innocenzo.biondo','@xcally.com','now','CmContact','then','bulkCreate','finished\x20populating','contacts1','CmHopper','log','contacts2'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4d6d,0x121));var _0xd4d6=function(_0x2706b5,_0x478ffe){_0x2706b5=_0x2706b5-0x0;var _0x8f0288=_0x4d6d[_0x2706b5];return _0x8f0288;};'use strict';var util=require('util');var db=require(_0xd4d6('0x0'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xd4d6('0x1')]({'id':i,'firstName':_0xd4d6('0x2')+i,'lastName':_0xd4d6('0x3')+i,'phone':0xf879fb460+i,'email':_0xd4d6('0x4')+i+_0xd4d6('0x5')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0xd4d6('0x1')]({'id':i,'active':![],'scheduledat':Date[_0xd4d6('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xd4d6('0x6')](),'updatedAt':Date[_0xd4d6('0x6')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2['push']({'id':i,'firstName':_0xd4d6('0x2')+i,'lastName':_0xd4d6('0x3')+i,'phone':0xf879fb460+i,'email':_0xd4d6('0x4')+i+'@xcally.com'});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2['push']({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xd4d6('0x6')](),'updatedAt':Date[_0xd4d6('0x6')]()});}db[_0xd4d6('0x7')]['destroy']({'where':{}})[_0xd4d6('0x8')](function(){return db[_0xd4d6('0x7')][_0xd4d6('0x9')](contacts);})[_0xd4d6('0x8')](function(){console['log'](_0xd4d6('0xa'),_0xd4d6('0xb'));return db[_0xd4d6('0xc')]['destroy']({'where':{}});})[_0xd4d6('0x8')](function(){return db[_0xd4d6('0xc')][_0xd4d6('0x9')](hopper);})['then'](function(){console['log']('finished\x20populating','hopper1');return db[_0xd4d6('0x7')]['bulkCreate'](contacts2);})[_0xd4d6('0x8')](function(){console[_0xd4d6('0xd')]('finished\x20populating',_0xd4d6('0xe'));return db['CmHopper'][_0xd4d6('0x9')](hopper2);})[_0xd4d6('0x8')](function(){console[_0xd4d6('0xd')](_0xd4d6('0xa'),'hopper2');})[_0xd4d6('0xf')](function(_0x14668c){console[_0xd4d6('0xd')](_0x14668c);});
\ No newline at end of file
index 2f36016..6fb2bc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe666=['ulaw','yes','actpass','bulkCreate','then','log','add\x20user','../mysqldb','push','format','agent','%s%s','password','friend','udp','all'];(function(_0x33362b,_0x11668a){var _0x336027=function(_0x3738e3){while(--_0x3738e3){_0x33362b['push'](_0x33362b['shift']());}};_0x336027(++_0x11668a);}(_0xe666,0xc7));var _0x6e66=function(_0x5b3ef7,_0x8126e){_0x5b3ef7=_0x5b3ef7-0x0;var _0x596aee=_0xe666[_0x5b3ef7];return _0x596aee;};'use strict';var util=require('util');var db=require(_0x6e66('0x0'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x6e66('0x1')]({'name':util[_0x6e66('0x2')]('%s%s',_0x6e66('0x3'),i),'fullname':util[_0x6e66('0x2')](_0x6e66('0x4'),_0x6e66('0x3'),i),'email':util[_0x6e66('0x2')]('%s%s@xcally.com',_0x6e66('0x3'),i),'role':_0x6e66('0x3'),'password':_0x6e66('0x5'),'internal':0xfa0+i,'type':_0x6e66('0x6'),'transport':[_0x6e66('0x7'),'ws','wss'],'disallow':[_0x6e66('0x8')],'allow':[_0x6e66('0x9')],'defaultuser':util['format'](_0x6e66('0x4'),_0x6e66('0x3'),i),'encryption':_0x6e66('0xa'),'avpf':_0x6e66('0xa'),'force_avp':_0x6e66('0xa'),'icesupport':_0x6e66('0xa'),'dtlsenable':_0x6e66('0xa'),'dtlsverify':'no','dtlscertfile':'/etc/pki/tls/certs/motion.crt','dtlsprivatekey':'/etc/pki/tls/private/motion.key','dtlssetup':_0x6e66('0xb'),'callerid':util['format']('\x22%s\x22\x20<%s>',util[_0x6e66('0x2')](_0x6e66('0x4'),_0x6e66('0x3'),i),0xfa0+i)});}db['User'][_0x6e66('0xc')](users)[_0x6e66('0xd')](function(){console[_0x6e66('0xe')](_0x6e66('0xf'));})['catch'](function(_0x2e8946){console[_0x6e66('0xe')](_0x2e8946);});
\ No newline at end of file
+var _0x8e27=['password','udp','all','yes','/etc/pki/tls/certs/motion.crt','actpass','User','then','log','add\x20user','catch','util','../mysqldb','format','agent','%s%s','%s%s@xcally.com'];(function(_0x55d58f,_0x2bea83){var _0x1ad6e6=function(_0x31447e){while(--_0x31447e){_0x55d58f['push'](_0x55d58f['shift']());}};_0x1ad6e6(++_0x2bea83);}(_0x8e27,0x14e));var _0x78e2=function(_0x225f50,_0x48a77d){_0x225f50=_0x225f50-0x0;var _0x19d003=_0x8e27[_0x225f50];return _0x19d003;};'use strict';var util=require(_0x78e2('0x0'));var db=require(_0x78e2('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users['push']({'name':util[_0x78e2('0x2')]('%s%s',_0x78e2('0x3'),i),'fullname':util[_0x78e2('0x2')](_0x78e2('0x4'),_0x78e2('0x3'),i),'email':util[_0x78e2('0x2')](_0x78e2('0x5'),_0x78e2('0x3'),i),'role':_0x78e2('0x3'),'password':_0x78e2('0x6'),'internal':0xfa0+i,'type':'friend','transport':[_0x78e2('0x7'),'ws','wss'],'disallow':[_0x78e2('0x8')],'allow':['ulaw'],'defaultuser':util[_0x78e2('0x2')](_0x78e2('0x4'),_0x78e2('0x3'),i),'encryption':_0x78e2('0x9'),'avpf':_0x78e2('0x9'),'force_avp':_0x78e2('0x9'),'icesupport':_0x78e2('0x9'),'dtlsenable':_0x78e2('0x9'),'dtlsverify':'no','dtlscertfile':_0x78e2('0xa'),'dtlsprivatekey':'/etc/pki/tls/private/motion.key','dtlssetup':_0x78e2('0xb'),'callerid':util[_0x78e2('0x2')]('\x22%s\x22\x20<%s>',util['format'](_0x78e2('0x4'),_0x78e2('0x3'),i),0xfa0+i)});}db[_0x78e2('0xc')]['bulkCreate'](users)[_0x78e2('0xd')](function(){console[_0x78e2('0xe')](_0x78e2('0xf'));})[_0x78e2('0x10')](function(_0x355a60){console[_0x78e2('0xe')](_0x355a60);});
\ No newline at end of file
index abe0c1b..f5b3d85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x483f=['util','bluebird','../mysqldb','./environment','name','Agents','User','telephone','agent','type','ivr','then','autoAssociation','VoiceQueues','FaxQueues','MailQueues','OpenchannelQueues','findAll','Telephones','IvrCampaigns','UserProfileResource','map','resourceId','where','role','Campaign','%s:queue:%s','length','user:%s','handshake','query','find','userProfileId','ChatInteraction','ChatInteractions','MailInteractions','FaxInteraction','FaxInteractions','SmsInteractions','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','MailQueue','OpenchannelQueue','WhatsappQueue','user','ChatQueues','SmsQueues','SmsQueue','WhatsappQueues','Trunks','Trunk','getVoiceQueues','getChatQueues','getSmsQueues','getWhatsappQueues','all','voice','fax','sms','mail','whatsapp','format','telephone:%s','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','user_has_sms_interactions:remove','user_has_whatsapp_interactions:remove','log','default','setMaxListeners','address','request','connection','connectedAt','SocketIO\x20','nsp','disconnect','DISCONNECTED','lodash'];(function(_0x2ac46d,_0x2ceb70){var _0x29c3ab=function(_0x2956f0){while(--_0x2956f0){_0x2ac46d['push'](_0x2ac46d['shift']());}};_0x29c3ab(++_0x2ceb70);}(_0x483f,0x11c));var _0xf483=function(_0x291625,_0x1a6c7a){_0x291625=_0x291625-0x0;var _0x2e47f6=_0x483f[_0x291625];return _0x2e47f6;};'use strict';var _=require(_0xf483('0x0'));var util=require(_0xf483('0x1'));var BPromise=require(_0xf483('0x2'));var db=require(_0xf483('0x3'))['db'];var config=require(_0xf483('0x4'));var queryQueues={'attributes':['id',_0xf483('0x5')],'include':[{'as':_0xf483('0x6'),'model':db[_0xf483('0x7')],'attributes':['id',_0xf483('0x5'),'role'],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0xf483('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0xf483('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0xf483('0x5')],'where':{'role':_0xf483('0x9')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xf483('0x5'),_0xf483('0xa')],'where':{'type':_0xf483('0xb')}};function getAssociatedResources(_0x281b97,_0x5920d5,_0x42372a){return db['UserProfileSection']['findOne']({'where':{'name':_0x281b97,'userProfileId':_0x5920d5},'raw':!![]})[_0xf483('0xc')](function(_0x16c2b6){if(_0x16c2b6){if(_0x16c2b6[_0xf483('0xd')]){switch(_0x281b97){case _0xf483('0xe'):case'ChatQueues':case _0xf483('0xf'):case'SmsQueues':case _0xf483('0x10'):case _0xf483('0x11'):case'WhatsappQueues':return db[_0x42372a][_0xf483('0x12')](queryQueues);case _0xf483('0x13'):return db[_0x42372a]['findAll'](queryTelephones);case'Trunks':return db[_0x42372a][_0xf483('0x12')](queryTrunks);case _0xf483('0x14'):return db[_0x42372a][_0xf483('0x12')](queryCampaigns);}}else{return db[_0xf483('0x15')][_0xf483('0x12')]({'attributes':['resourceId'],'where':{'sectionId':_0x16c2b6['id']},'raw':!![]})[_0xf483('0xc')](function(_0x2561b2){if(_0x2561b2){var _0x48ee49={'where':{'id':_[_0xf483('0x16')](_0x2561b2,_0xf483('0x17'))},'raw':!![]};switch(_0x42372a){case _0xf483('0x7'):_0x48ee49[_0xf483('0x18')][_0xf483('0x19')]=_0xf483('0x8');break;case _0xf483('0x1a'):_0x48ee49[_0xf483('0x18')]['type']=_0xf483('0xb');break;}return db[_0x42372a][_0xf483('0x12')](_0x48ee49);}else{return[];}});}}else{return[];}})[_0xf483('0xc')](function(_0x4cbbcc){return _0x4cbbcc;});}function joinOrLeaveQueues(_0x4c62fd,_0xae13aa,_0x2f2070,_0x2a6f64){_0x4c62fd[_0xae13aa](util['format'](_0xf483('0x1b'),_0x2f2070,_0x2a6f64[_0xf483('0x5')]));if(_0x2a6f64['Agents']){for(var _0x22923a=0x0;_0x22923a<_0x2a6f64['Agents'][_0xf483('0x1c')];_0x22923a+=0x1){_0x4c62fd[_0xae13aa](util['format'](_0xf483('0x1d'),_0x2a6f64['Agents'][_0x22923a][_0xf483('0x5')]));}}}function joinOrLeave(_0x194569,_0x2e3ae2,_0x25f833){var _0x5cee0c;if(_0x194569[_0xf483('0x1e')][_0xf483('0x1f')]['id']){db['User'][_0xf483('0x20')]({'attributes':['id',_0xf483('0x5'),_0xf483('0x19'),_0xf483('0x21')],'where':{'id':_0x194569[_0xf483('0x1e')]['query']['id']},'include':[{'model':db[_0xf483('0x22')],'as':_0xf483('0x23'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0xf483('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xf483('0x25')],'as':_0xf483('0x26'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0xf483('0x27'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0xf483('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0xf483('0x29')],'as':_0xf483('0x2a'),'attributes':['id'],'raw':!![]}]})[_0xf483('0xc')](function(_0x2afaf6){if(_0x2afaf6){_0x5cee0c=_0x2afaf6;_0x194569[_0x2e3ae2](util['format'](_0xf483('0x1d'),_0x2afaf6[_0xf483('0x5')]));var _0x1a9067=[];switch(_0x2afaf6[_0xf483('0x19')]){case _0xf483('0x2b'):_0x194569[_0x2e3ae2](_0xf483('0x2c'));_0x194569[_0x2e3ae2](_0xf483('0x2d'));if(queryQueues[_0xf483('0x2e')](_0xf483('0x2f'))){delete queryQueues[_0xf483('0x2f')];}_0x1a9067[_0xf483('0x30')](db[_0xf483('0x31')][_0xf483('0x12')](queryQueues));_0x1a9067['push'](db[_0xf483('0x32')][_0xf483('0x12')](queryQueues));_0x1a9067[_0xf483('0x30')](db[_0xf483('0x33')][_0xf483('0x12')](queryQueues));_0x1a9067[_0xf483('0x30')](db['SmsQueue'][_0xf483('0x12')](queryQueues));_0x1a9067[_0xf483('0x30')](db[_0xf483('0x34')][_0xf483('0x12')](queryQueues));_0x1a9067[_0xf483('0x30')](db[_0xf483('0x35')][_0xf483('0x12')](queryQueues));_0x1a9067['push'](db[_0xf483('0x36')][_0xf483('0x12')](queryQueues));_0x1a9067['push'](db[_0xf483('0x7')][_0xf483('0x12')](queryTelephones));_0x1a9067['push'](db['Trunk']['findAll'](queryTrunks));_0x1a9067[_0xf483('0x30')](db[_0xf483('0x1a')][_0xf483('0x12')](queryCampaigns));_0x1a9067[_0xf483('0x30')](db[_0xf483('0x7')]['findAll'](queryAgents));break;case _0xf483('0x37'):_0x194569[_0x2e3ae2]('voice:inbound');_0x194569[_0x2e3ae2]('voice:outbound');_0x1a9067[_0xf483('0x30')](getAssociatedResources(_0xf483('0xe'),_0x2afaf6['userProfileId'],'VoiceQueue'));_0x1a9067[_0xf483('0x30')](getAssociatedResources(_0xf483('0x38'),_0x2afaf6[_0xf483('0x21')],'ChatQueue'));_0x1a9067['push'](getAssociatedResources(_0xf483('0xf'),_0x2afaf6[_0xf483('0x21')],_0xf483('0x33')));_0x1a9067[_0xf483('0x30')](getAssociatedResources(_0xf483('0x39'),_0x2afaf6['userProfileId'],_0xf483('0x3a')));_0x1a9067[_0xf483('0x30')](getAssociatedResources(_0xf483('0x10'),_0x2afaf6[_0xf483('0x21')],'MailQueue'));_0x1a9067[_0xf483('0x30')](getAssociatedResources(_0xf483('0x11'),_0x2afaf6[_0xf483('0x21')],_0xf483('0x35')));_0x1a9067[_0xf483('0x30')](getAssociatedResources(_0xf483('0x3b'),_0x2afaf6[_0xf483('0x21')],_0xf483('0x36')));_0x1a9067[_0xf483('0x30')](getAssociatedResources('Telephones',_0x2afaf6[_0xf483('0x21')],_0xf483('0x7')));_0x1a9067[_0xf483('0x30')](getAssociatedResources(_0xf483('0x3c'),_0x2afaf6[_0xf483('0x21')],_0xf483('0x3d')));_0x1a9067[_0xf483('0x30')](getAssociatedResources(_0xf483('0x14'),_0x2afaf6[_0xf483('0x21')],'Campaign'));_0x1a9067[_0xf483('0x30')](db[_0xf483('0x7')]['findAll'](queryAgents));break;case _0xf483('0x9'):_0x194569[_0x2e3ae2](_0xf483('0x2c'));_0x194569[_0x2e3ae2](_0xf483('0x2d'));_0x1a9067[_0xf483('0x30')](_0x2afaf6[_0xf483('0x3e')]({'attributes':['id','name']}));_0x1a9067[_0xf483('0x30')](_0x2afaf6[_0xf483('0x3f')]({'attributes':['id','name']}));_0x1a9067[_0xf483('0x30')](_0x2afaf6['getFaxQueues']({'attributes':['id',_0xf483('0x5')]}));_0x1a9067[_0xf483('0x30')](_0x2afaf6[_0xf483('0x40')]({'attributes':['id','name']}));_0x1a9067[_0xf483('0x30')](_0x2afaf6['getMailQueues']({'attributes':['id','name']}));_0x1a9067[_0xf483('0x30')](_0x2afaf6['getOpenchannelQueues']({'attributes':['id',_0xf483('0x5')]}));_0x1a9067[_0xf483('0x30')](_0x2afaf6[_0xf483('0x41')]({'attributes':['id',_0xf483('0x5')]}));break;}return BPromise[_0xf483('0x42')](_0x1a9067);}})[_0xf483('0xc')](function(_0x505830){if(_0x505830&&_0x505830['length']){for(var _0x5d5053=0x0;_0x5d5053<_0x505830[_0xf483('0x1c')];_0x5d5053+=0x1){for(var _0x447953=0x0;_0x447953<_0x505830[_0x5d5053][_0xf483('0x1c')];_0x447953+=0x1){switch(_0x5d5053){case 0x0:joinOrLeaveQueues(_0x194569,_0x2e3ae2,_0xf483('0x43'),_0x505830[_0x5d5053][_0x447953]);break;case 0x1:joinOrLeaveQueues(_0x194569,_0x2e3ae2,'chat',_0x505830[_0x5d5053][_0x447953]);break;case 0x2:joinOrLeaveQueues(_0x194569,_0x2e3ae2,_0xf483('0x44'),_0x505830[_0x5d5053][_0x447953]);break;case 0x3:joinOrLeaveQueues(_0x194569,_0x2e3ae2,_0xf483('0x45'),_0x505830[_0x5d5053][_0x447953]);break;case 0x4:joinOrLeaveQueues(_0x194569,_0x2e3ae2,_0xf483('0x46'),_0x505830[_0x5d5053][_0x447953]);break;case 0x5:joinOrLeaveQueues(_0x194569,_0x2e3ae2,'openchannel',_0x505830[_0x5d5053][_0x447953]);break;case 0x6:joinOrLeaveQueues(_0x194569,_0x2e3ae2,_0xf483('0x47'),_0x505830[_0x5d5053][_0x447953]);break;case 0x7:if(_0x5cee0c['role']!==_0xf483('0x9'))_0x194569[_0x2e3ae2](util[_0xf483('0x48')](_0xf483('0x49'),_0x505830[_0x5d5053][_0x447953][_0xf483('0x5')]));break;case 0x8:if(_0x5cee0c[_0xf483('0x19')]!==_0xf483('0x9'))_0x194569[_0x2e3ae2](util[_0xf483('0x48')](_0xf483('0x4a'),_0x505830[_0x5d5053][_0x447953]['name']));break;case 0x9:if(_0x5cee0c[_0xf483('0x19')]!==_0xf483('0x9'))_0x194569[_0x2e3ae2](util[_0xf483('0x48')](_0xf483('0x4b'),_0x505830[_0x5d5053][_0x447953][_0xf483('0xa')],_0x505830[_0x5d5053][_0x447953][_0xf483('0x5')]));break;case 0xa:_0x194569[_0x2e3ae2](util[_0xf483('0x48')]('user:%s',_0x505830[_0x5d5053][_0x447953][_0xf483('0x5')]));break;}}}}})['then'](function(){if(_0x2e3ae2===_0xf483('0x4c')){var _0x599c1d=_[_0xf483('0x16')](_0x5cee0c[_0xf483('0x23')],'id');return _0x5cee0c[_0xf483('0x4d')](_0x599c1d)[_0xf483('0xc')](function(){for(var _0x2943fe=0x0;_0x2943fe<_0x599c1d['length'];_0x2943fe+=0x1){_0x25f833[_0xf483('0x4e')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x599c1d[_0x2943fe]),'UserId':Number(_0x5cee0c['id'])});}});}})[_0xf483('0xc')](function(){if(_0x2e3ae2==='leave'){var _0x497aa0=_['map'](_0x5cee0c[_0xf483('0x24')],'id');return _0x5cee0c[_0xf483('0x4f')](_0x497aa0)['then'](function(){for(var _0x53aef2=0x0;_0x53aef2<_0x497aa0[_0xf483('0x1c')];_0x53aef2+=0x1){_0x25f833[_0xf483('0x4e')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x497aa0[_0x53aef2]),'UserId':Number(_0x5cee0c['id'])});}});}})[_0xf483('0xc')](function(){if(_0x2e3ae2===_0xf483('0x4c')){var _0x15480d=_['map'](_0x5cee0c[_0xf483('0x26')],'id');return _0x5cee0c[_0xf483('0x50')](_0x15480d)[_0xf483('0xc')](function(){for(var _0x5a9ef2=0x0;_0x5a9ef2<_0x15480d[_0xf483('0x1c')];_0x5a9ef2+=0x1){_0x25f833[_0xf483('0x4e')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x15480d[_0x5a9ef2]),'UserId':Number(_0x5cee0c['id'])});}});}})['then'](function(){if(_0x2e3ae2===_0xf483('0x4c')){var _0x56511b=_[_0xf483('0x16')](_0x5cee0c[_0xf483('0x27')],'id');return _0x5cee0c[_0xf483('0x51')](_0x56511b)['then'](function(){for(var _0x1265eb=0x0;_0x1265eb<_0x56511b[_0xf483('0x1c')];_0x1265eb+=0x1){_0x25f833[_0xf483('0x4e')](_0xf483('0x52'),{'SmsInteractionId':Number(_0x56511b[_0x1265eb]),'UserId':Number(_0x5cee0c['id'])});}});}})['then'](function(){if(_0x2e3ae2==='leave'){var _0x1bdea3=_[_0xf483('0x16')](_0x5cee0c[_0xf483('0x28')],'id');return _0x5cee0c['removeOpenchannelInteractions'](_0x1bdea3)[_0xf483('0xc')](function(){for(var _0x393560=0x0;_0x393560<_0x1bdea3['length'];_0x393560+=0x1){_0x25f833[_0xf483('0x4e')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x1bdea3[_0x393560]),'UserId':Number(_0x5cee0c['id'])});}});}})['then'](function(){if(_0x2e3ae2===_0xf483('0x4c')){var _0x3665b3=_[_0xf483('0x16')](_0x5cee0c[_0xf483('0x2a')],'id');return _0x5cee0c['removeWhatsappInteractions'](_0x3665b3)[_0xf483('0xc')](function(){for(var _0x32f439=0x0;_0x32f439<_0x3665b3[_0xf483('0x1c')];_0x32f439+=0x1){_0x25f833[_0xf483('0x4e')](_0xf483('0x53'),{'WhatsappInteractionId':Number(_0x3665b3[_0x32f439]),'UserId':Number(_0x5cee0c['id'])});}});}})['catch'](function(_0x25b45a){_0x194569[_0xf483('0x54')](_0x25b45a);});}}function onDisconnect(_0x1ed8c7,_0x5d62d6){joinOrLeave(_0x1ed8c7,'leave',_0x5d62d6);}function onConnect(_0xb198c4){joinOrLeave(_0xb198c4,'join');}exports[_0xf483('0x55')]=function(_0x4d0754){_0x4d0754['on']('connection',function(_0x1b5597){_0x1b5597[_0xf483('0x56')](0x0);_0x1b5597[_0xf483('0x57')]=_0x1b5597[_0xf483('0x58')]['connection']['remoteAddress']+':'+_0x1b5597[_0xf483('0x58')][_0xf483('0x59')]['remotePort'];_0x1b5597[_0xf483('0x5a')]=new Date();_0x1b5597['log']=function(_0x16b98f){console['log'](_0xf483('0x5b')+_0x1b5597[_0xf483('0x5c')][_0xf483('0x5')]+'['+_0x1b5597[_0xf483('0x57')]+']',_0x16b98f);};_0x1b5597['on'](_0xf483('0x5d'),function(){onDisconnect(_0x1b5597,_0x4d0754);_0x1b5597[_0xf483('0x54')](_0xf483('0x5e'));});onConnect(_0x1b5597);_0x1b5597[_0xf483('0x54')]('CONNECTED');});};
\ No newline at end of file
+var _0xce04=['name','type','ivr','UserProfileSection','findOne','then','VoiceQueues','MailQueues','OpenchannelQueues','WhatsappQueues','Telephones','findAll','UserProfileResource','resourceId','role','telephone','Campaign','where','format','%s:queue:%s','length','user:%s','handshake','query','User','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','voice:inbound','voice:outbound','hasOwnProperty','include','VoiceQueue','push','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','user','userProfileId','ChatQueues','SmsQueues','WhatsappQueue','Trunks','Trunk','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','chat','fax','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','map','removeChatInteractions','emit','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','setMaxListeners','remoteAddress','request','remotePort','connectedAt','SocketIO\x20','disconnect','DISCONNECTED','lodash','bluebird','../mysqldb','./environment','Agents','agent'];(function(_0x2fa5e8,_0x5f298f){var _0x1fb05f=function(_0x47e9ca){while(--_0x47e9ca){_0x2fa5e8['push'](_0x2fa5e8['shift']());}};_0x1fb05f(++_0x5f298f);}(_0xce04,0xc0));var _0x4ce0=function(_0x482b8c,_0xf64b8c){_0x482b8c=_0x482b8c-0x0;var _0x46ea23=_0xce04[_0x482b8c];return _0x46ea23;};'use strict';var _=require(_0x4ce0('0x0'));var util=require('util');var BPromise=require(_0x4ce0('0x1'));var db=require(_0x4ce0('0x2'))['db'];var config=require(_0x4ce0('0x3'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0x4ce0('0x4'),'model':db['User'],'attributes':['id','name','role'],'raw':!![],'where':{'role':_0x4ce0('0x5')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x4ce0('0x6')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0x4ce0('0x6')]};var queryAgents={'raw':!![],'attributes':['id',_0x4ce0('0x6')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0x4ce0('0x6'),_0x4ce0('0x7')],'where':{'type':_0x4ce0('0x8')}};function getAssociatedResources(_0x5b6a00,_0x387442,_0x29c627){return db[_0x4ce0('0x9')][_0x4ce0('0xa')]({'where':{'name':_0x5b6a00,'userProfileId':_0x387442},'raw':!![]})[_0x4ce0('0xb')](function(_0x237510){if(_0x237510){if(_0x237510['autoAssociation']){switch(_0x5b6a00){case _0x4ce0('0xc'):case'ChatQueues':case'FaxQueues':case'SmsQueues':case _0x4ce0('0xd'):case _0x4ce0('0xe'):case _0x4ce0('0xf'):return db[_0x29c627]['findAll'](queryQueues);case _0x4ce0('0x10'):return db[_0x29c627][_0x4ce0('0x11')](queryTelephones);case'Trunks':return db[_0x29c627][_0x4ce0('0x11')](queryTrunks);case'IvrCampaigns':return db[_0x29c627][_0x4ce0('0x11')](queryCampaigns);}}else{return db[_0x4ce0('0x12')][_0x4ce0('0x11')]({'attributes':['resourceId'],'where':{'sectionId':_0x237510['id']},'raw':!![]})[_0x4ce0('0xb')](function(_0x2262b4){if(_0x2262b4){var _0x1df065={'where':{'id':_['map'](_0x2262b4,_0x4ce0('0x13'))},'raw':!![]};switch(_0x29c627){case'User':_0x1df065['where'][_0x4ce0('0x14')]=_0x4ce0('0x15');break;case _0x4ce0('0x16'):_0x1df065[_0x4ce0('0x17')][_0x4ce0('0x7')]=_0x4ce0('0x8');break;}return db[_0x29c627][_0x4ce0('0x11')](_0x1df065);}else{return[];}});}}else{return[];}})['then'](function(_0x6c9cc4){return _0x6c9cc4;});}function joinOrLeaveQueues(_0x88be98,_0x5a600d,_0x258d54,_0x5af932){_0x88be98[_0x5a600d](util[_0x4ce0('0x18')](_0x4ce0('0x19'),_0x258d54,_0x5af932['name']));if(_0x5af932[_0x4ce0('0x4')]){for(var _0x12328c=0x0;_0x12328c<_0x5af932[_0x4ce0('0x4')][_0x4ce0('0x1a')];_0x12328c+=0x1){_0x88be98[_0x5a600d](util[_0x4ce0('0x18')](_0x4ce0('0x1b'),_0x5af932[_0x4ce0('0x4')][_0x12328c][_0x4ce0('0x6')]));}}}function joinOrLeave(_0x4496bf,_0x256163,_0x458bc5){var _0x27024e;if(_0x4496bf[_0x4ce0('0x1c')][_0x4ce0('0x1d')]['id']){db[_0x4ce0('0x1e')]['find']({'attributes':['id',_0x4ce0('0x6'),_0x4ce0('0x14'),'userProfileId'],'where':{'id':_0x4496bf[_0x4ce0('0x1c')][_0x4ce0('0x1d')]['id']},'include':[{'model':db[_0x4ce0('0x1f')],'as':_0x4ce0('0x20'),'attributes':['id'],'raw':!![]},{'model':db[_0x4ce0('0x21')],'as':_0x4ce0('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0x4ce0('0x23')],'as':_0x4ce0('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0x4ce0('0x25')],'as':_0x4ce0('0x26'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x4ce0('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x4ce0('0x28')],'as':_0x4ce0('0x29'),'attributes':['id'],'raw':!![]}]})[_0x4ce0('0xb')](function(_0x59e8df){if(_0x59e8df){_0x27024e=_0x59e8df;_0x4496bf[_0x256163](util['format'](_0x4ce0('0x1b'),_0x59e8df[_0x4ce0('0x6')]));var _0x58d232=[];switch(_0x59e8df[_0x4ce0('0x14')]){case'admin':_0x4496bf[_0x256163](_0x4ce0('0x2a'));_0x4496bf[_0x256163](_0x4ce0('0x2b'));if(queryQueues[_0x4ce0('0x2c')](_0x4ce0('0x2d'))){delete queryQueues[_0x4ce0('0x2d')];}_0x58d232['push'](db[_0x4ce0('0x2e')][_0x4ce0('0x11')](queryQueues));_0x58d232[_0x4ce0('0x2f')](db[_0x4ce0('0x30')][_0x4ce0('0x11')](queryQueues));_0x58d232[_0x4ce0('0x2f')](db[_0x4ce0('0x31')][_0x4ce0('0x11')](queryQueues));_0x58d232['push'](db[_0x4ce0('0x32')][_0x4ce0('0x11')](queryQueues));_0x58d232[_0x4ce0('0x2f')](db[_0x4ce0('0x33')]['findAll'](queryQueues));_0x58d232[_0x4ce0('0x2f')](db[_0x4ce0('0x34')]['findAll'](queryQueues));_0x58d232[_0x4ce0('0x2f')](db['WhatsappQueue'][_0x4ce0('0x11')](queryQueues));_0x58d232[_0x4ce0('0x2f')](db[_0x4ce0('0x1e')][_0x4ce0('0x11')](queryTelephones));_0x58d232[_0x4ce0('0x2f')](db['Trunk']['findAll'](queryTrunks));_0x58d232['push'](db[_0x4ce0('0x16')][_0x4ce0('0x11')](queryCampaigns));_0x58d232[_0x4ce0('0x2f')](db[_0x4ce0('0x1e')]['findAll'](queryAgents));break;case _0x4ce0('0x35'):_0x4496bf[_0x256163](_0x4ce0('0x2a'));_0x4496bf[_0x256163](_0x4ce0('0x2b'));_0x58d232[_0x4ce0('0x2f')](getAssociatedResources('VoiceQueues',_0x59e8df[_0x4ce0('0x36')],'VoiceQueue'));_0x58d232[_0x4ce0('0x2f')](getAssociatedResources(_0x4ce0('0x37'),_0x59e8df['userProfileId'],'ChatQueue'));_0x58d232[_0x4ce0('0x2f')](getAssociatedResources('FaxQueues',_0x59e8df[_0x4ce0('0x36')],_0x4ce0('0x31')));_0x58d232[_0x4ce0('0x2f')](getAssociatedResources(_0x4ce0('0x38'),_0x59e8df[_0x4ce0('0x36')],_0x4ce0('0x32')));_0x58d232[_0x4ce0('0x2f')](getAssociatedResources(_0x4ce0('0xd'),_0x59e8df['userProfileId'],_0x4ce0('0x33')));_0x58d232['push'](getAssociatedResources(_0x4ce0('0xe'),_0x59e8df['userProfileId'],_0x4ce0('0x34')));_0x58d232[_0x4ce0('0x2f')](getAssociatedResources(_0x4ce0('0xf'),_0x59e8df[_0x4ce0('0x36')],_0x4ce0('0x39')));_0x58d232[_0x4ce0('0x2f')](getAssociatedResources(_0x4ce0('0x10'),_0x59e8df[_0x4ce0('0x36')],_0x4ce0('0x1e')));_0x58d232[_0x4ce0('0x2f')](getAssociatedResources(_0x4ce0('0x3a'),_0x59e8df[_0x4ce0('0x36')],_0x4ce0('0x3b')));_0x58d232[_0x4ce0('0x2f')](getAssociatedResources('IvrCampaigns',_0x59e8df[_0x4ce0('0x36')],_0x4ce0('0x16')));_0x58d232[_0x4ce0('0x2f')](db['User'][_0x4ce0('0x11')](queryAgents));break;case _0x4ce0('0x5'):_0x4496bf[_0x256163](_0x4ce0('0x2a'));_0x4496bf[_0x256163](_0x4ce0('0x2b'));_0x58d232[_0x4ce0('0x2f')](_0x59e8df[_0x4ce0('0x3c')]({'attributes':['id',_0x4ce0('0x6')]}));_0x58d232[_0x4ce0('0x2f')](_0x59e8df[_0x4ce0('0x3d')]({'attributes':['id','name']}));_0x58d232['push'](_0x59e8df[_0x4ce0('0x3e')]({'attributes':['id',_0x4ce0('0x6')]}));_0x58d232['push'](_0x59e8df[_0x4ce0('0x3f')]({'attributes':['id','name']}));_0x58d232['push'](_0x59e8df[_0x4ce0('0x40')]({'attributes':['id',_0x4ce0('0x6')]}));_0x58d232[_0x4ce0('0x2f')](_0x59e8df[_0x4ce0('0x41')]({'attributes':['id','name']}));_0x58d232[_0x4ce0('0x2f')](_0x59e8df[_0x4ce0('0x42')]({'attributes':['id',_0x4ce0('0x6')]}));break;}return BPromise[_0x4ce0('0x43')](_0x58d232);}})[_0x4ce0('0xb')](function(_0x28c3b1){if(_0x28c3b1&&_0x28c3b1[_0x4ce0('0x1a')]){for(var _0x157a48=0x0;_0x157a48<_0x28c3b1['length'];_0x157a48+=0x1){for(var _0x3d1172=0x0;_0x3d1172<_0x28c3b1[_0x157a48][_0x4ce0('0x1a')];_0x3d1172+=0x1){switch(_0x157a48){case 0x0:joinOrLeaveQueues(_0x4496bf,_0x256163,'voice',_0x28c3b1[_0x157a48][_0x3d1172]);break;case 0x1:joinOrLeaveQueues(_0x4496bf,_0x256163,_0x4ce0('0x44'),_0x28c3b1[_0x157a48][_0x3d1172]);break;case 0x2:joinOrLeaveQueues(_0x4496bf,_0x256163,_0x4ce0('0x45'),_0x28c3b1[_0x157a48][_0x3d1172]);break;case 0x3:joinOrLeaveQueues(_0x4496bf,_0x256163,_0x4ce0('0x46'),_0x28c3b1[_0x157a48][_0x3d1172]);break;case 0x4:joinOrLeaveQueues(_0x4496bf,_0x256163,_0x4ce0('0x47'),_0x28c3b1[_0x157a48][_0x3d1172]);break;case 0x5:joinOrLeaveQueues(_0x4496bf,_0x256163,_0x4ce0('0x48'),_0x28c3b1[_0x157a48][_0x3d1172]);break;case 0x6:joinOrLeaveQueues(_0x4496bf,_0x256163,_0x4ce0('0x49'),_0x28c3b1[_0x157a48][_0x3d1172]);break;case 0x7:if(_0x27024e[_0x4ce0('0x14')]!==_0x4ce0('0x5'))_0x4496bf[_0x256163](util[_0x4ce0('0x18')](_0x4ce0('0x4a'),_0x28c3b1[_0x157a48][_0x3d1172]['name']));break;case 0x8:if(_0x27024e[_0x4ce0('0x14')]!=='agent')_0x4496bf[_0x256163](util['format'](_0x4ce0('0x4b'),_0x28c3b1[_0x157a48][_0x3d1172][_0x4ce0('0x6')]));break;case 0x9:if(_0x27024e[_0x4ce0('0x14')]!==_0x4ce0('0x5'))_0x4496bf[_0x256163](util[_0x4ce0('0x18')](_0x4ce0('0x4c'),_0x28c3b1[_0x157a48][_0x3d1172][_0x4ce0('0x7')],_0x28c3b1[_0x157a48][_0x3d1172][_0x4ce0('0x6')]));break;case 0xa:_0x4496bf[_0x256163](util[_0x4ce0('0x18')](_0x4ce0('0x1b'),_0x28c3b1[_0x157a48][_0x3d1172][_0x4ce0('0x6')]));break;}}}}})[_0x4ce0('0xb')](function(){if(_0x256163===_0x4ce0('0x4d')){var _0x1711f7=_[_0x4ce0('0x4e')](_0x27024e['ChatInteractions'],'id');return _0x27024e[_0x4ce0('0x4f')](_0x1711f7)['then'](function(){for(var _0x465187=0x0;_0x465187<_0x1711f7[_0x4ce0('0x1a')];_0x465187+=0x1){_0x458bc5[_0x4ce0('0x50')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x1711f7[_0x465187]),'UserId':Number(_0x27024e['id'])});}});}})[_0x4ce0('0xb')](function(){if(_0x256163==='leave'){var _0x44d798=_[_0x4ce0('0x4e')](_0x27024e[_0x4ce0('0x22')],'id');return _0x27024e[_0x4ce0('0x51')](_0x44d798)['then'](function(){for(var _0x373456=0x0;_0x373456<_0x44d798[_0x4ce0('0x1a')];_0x373456+=0x1){_0x458bc5['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x44d798[_0x373456]),'UserId':Number(_0x27024e['id'])});}});}})[_0x4ce0('0xb')](function(){if(_0x256163===_0x4ce0('0x4d')){var _0x4dd5cb=_[_0x4ce0('0x4e')](_0x27024e[_0x4ce0('0x24')],'id');return _0x27024e[_0x4ce0('0x52')](_0x4dd5cb)[_0x4ce0('0xb')](function(){for(var _0x2f038e=0x0;_0x2f038e<_0x4dd5cb['length'];_0x2f038e+=0x1){_0x458bc5[_0x4ce0('0x50')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x4dd5cb[_0x2f038e]),'UserId':Number(_0x27024e['id'])});}});}})['then'](function(){if(_0x256163===_0x4ce0('0x4d')){var _0x1be005=_[_0x4ce0('0x4e')](_0x27024e['SmsInteractions'],'id');return _0x27024e[_0x4ce0('0x53')](_0x1be005)[_0x4ce0('0xb')](function(){for(var _0x310431=0x0;_0x310431<_0x1be005[_0x4ce0('0x1a')];_0x310431+=0x1){_0x458bc5['emit']('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x1be005[_0x310431]),'UserId':Number(_0x27024e['id'])});}});}})[_0x4ce0('0xb')](function(){if(_0x256163==='leave'){var _0x35cba6=_[_0x4ce0('0x4e')](_0x27024e[_0x4ce0('0x27')],'id');return _0x27024e['removeOpenchannelInteractions'](_0x35cba6)['then'](function(){for(var _0x49b1c5=0x0;_0x49b1c5<_0x35cba6[_0x4ce0('0x1a')];_0x49b1c5+=0x1){_0x458bc5[_0x4ce0('0x50')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x35cba6[_0x49b1c5]),'UserId':Number(_0x27024e['id'])});}});}})['then'](function(){if(_0x256163===_0x4ce0('0x4d')){var _0x36a46f=_['map'](_0x27024e[_0x4ce0('0x29')],'id');return _0x27024e[_0x4ce0('0x54')](_0x36a46f)[_0x4ce0('0xb')](function(){for(var _0x58c8c5=0x0;_0x58c8c5<_0x36a46f['length'];_0x58c8c5+=0x1){_0x458bc5[_0x4ce0('0x50')](_0x4ce0('0x55'),{'WhatsappInteractionId':Number(_0x36a46f[_0x58c8c5]),'UserId':Number(_0x27024e['id'])});}});}})[_0x4ce0('0x56')](function(_0xc6c189){_0x4496bf[_0x4ce0('0x57')](_0xc6c189);});}}function onDisconnect(_0xb49465,_0x1a2963){joinOrLeave(_0xb49465,_0x4ce0('0x4d'),_0x1a2963);}function onConnect(_0x404806){joinOrLeave(_0x404806,_0x4ce0('0x58'));}exports[_0x4ce0('0x59')]=function(_0x1929c1){_0x1929c1['on'](_0x4ce0('0x5a'),function(_0x577399){_0x577399[_0x4ce0('0x5b')](0x0);_0x577399['address']=_0x577399['request']['connection'][_0x4ce0('0x5c')]+':'+_0x577399[_0x4ce0('0x5d')]['connection'][_0x4ce0('0x5e')];_0x577399[_0x4ce0('0x5f')]=new Date();_0x577399[_0x4ce0('0x57')]=function(_0x151650){console[_0x4ce0('0x57')](_0x4ce0('0x60')+_0x577399['nsp'][_0x4ce0('0x6')]+'['+_0x577399['address']+']',_0x151650);};_0x577399['on'](_0x4ce0('0x61'),function(){onDisconnect(_0x577399,_0x1929c1);_0x577399[_0x4ce0('0x57')](_0x4ce0('0x62'));});onConnect(_0x577399);_0x577399['log']('CONNECTED');});};
\ No newline at end of file
index 1b3e84f..287f172 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd796=['http','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','closedinteraction','ChatMessage','newmessage','Sms','SmsInteraction','SmsMessage','WhatsappInteraction','Whatsapp','WhatsappMessage','Fax','FaxInteraction','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','then','info','Trigger,\x20%s','EventManager','error','code','get','channel','motionChannel','event','direction','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','query','QueryTypes','contact','UserId','find','name','fullname','internal','interface','SIP/%s','incomingmessage','catch','opened','ContactId','SELECT','closed','Sequelize','format','agent','default','hasOwnProperty','model','hook','condition','../../mysqldb','triggers','lodash','client'];(function(_0x1c9aff,_0x5218ab){var _0x217086=function(_0x27f57b){while(--_0x27f57b){_0x1c9aff['push'](_0x1c9aff['shift']());}};_0x217086(++_0x5218ab);}(_0xd796,0xbc));var _0x6d79=function(_0x4b15dc,_0x20214d){_0x4b15dc=_0x4b15dc-0x0;var _0x4348b1=_0xd796[_0x4b15dc];return _0x4348b1;};'use strict';var util=require('util');var db=require(_0x6d79('0x0'))['db'];var jayson=require('jayson/promise');var logger=require('../logger')(_0x6d79('0x1'));var _=require(_0x6d79('0x2'));var client=jayson[_0x6d79('0x3')][_0x6d79('0x4')]({'port':0x232a});var triggers=[{'channel':_0x6d79('0x5'),'model':_0x6d79('0x6'),'event':_0x6d79('0x7'),'condition':_0x6d79('0x8'),'callback':afterCreate},{'channel':'Chat','model':'ChatInteraction','event':_0x6d79('0x9'),'condition':_0x6d79('0xa'),'callback':afterUpdate},{'channel':_0x6d79('0x5'),'model':_0x6d79('0xb'),'event':_0x6d79('0x7'),'condition':_0x6d79('0xc'),'callback':afterCreateMessage},{'channel':_0x6d79('0xd'),'model':_0x6d79('0xe'),'event':_0x6d79('0x7'),'condition':_0x6d79('0x8'),'callback':afterCreate},{'channel':_0x6d79('0xd'),'model':'SmsInteraction','event':_0x6d79('0x9'),'condition':_0x6d79('0xa'),'callback':afterUpdate},{'channel':_0x6d79('0xd'),'model':_0x6d79('0xf'),'event':_0x6d79('0x7'),'condition':'newmessage','callback':afterCreateMessage},{'channel':'Whatsapp','model':_0x6d79('0x10'),'event':_0x6d79('0x7'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x6d79('0x11'),'model':_0x6d79('0x10'),'event':_0x6d79('0x9'),'condition':_0x6d79('0xa'),'callback':afterUpdate},{'channel':_0x6d79('0x11'),'model':_0x6d79('0x12'),'event':_0x6d79('0x7'),'condition':_0x6d79('0xc'),'callback':afterCreateMessage},{'channel':_0x6d79('0x13'),'model':_0x6d79('0x14'),'event':_0x6d79('0x7'),'condition':_0x6d79('0x8'),'callback':afterCreate},{'channel':_0x6d79('0x13'),'model':_0x6d79('0x14'),'event':_0x6d79('0x9'),'condition':_0x6d79('0xa'),'callback':afterUpdate},{'channel':'Fax','model':'FaxMessage','event':_0x6d79('0x7'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x6d79('0x15'),'model':_0x6d79('0x16'),'event':_0x6d79('0x7'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x6d79('0x15'),'model':'MailInteraction','event':'afterUpdate','condition':_0x6d79('0xa'),'callback':afterUpdate},{'channel':_0x6d79('0x15'),'model':_0x6d79('0x17'),'event':_0x6d79('0x7'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x6d79('0x18'),'model':'OpenchannelInteraction','event':_0x6d79('0x7'),'condition':_0x6d79('0x8'),'callback':afterCreate},{'channel':'Openchannel','model':_0x6d79('0x19'),'event':_0x6d79('0x9'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x6d79('0x18'),'model':_0x6d79('0x1a'),'event':_0x6d79('0x7'),'condition':_0x6d79('0xc'),'callback':afterCreateMessage}];function request(_0x4f1385){return client['request']('EventManager',_0x4f1385)[_0x6d79('0x1b')](function(_0x3e889c){logger[_0x6d79('0x1c')](_0x6d79('0x1d'),_0x6d79('0x1e'),_0x3e889c);if(_0x3e889c[_0x6d79('0x1f')]){if(_0x3e889c[_0x6d79('0x1f')][_0x6d79('0x20')]===0x1f4){logger[_0x6d79('0x1f')]('Trigger,\x20%s',_0x6d79('0x1e'),_0x3e889c['error']);}}})['catch'](function(_0x5e7658){logger[_0x6d79('0x1f')](_0x6d79('0x1d'),_0x6d79('0x1e'),_0x5e7658);});}function afterCreateMessage(_0x48e139,_0x3cff06){return function(_0x16b03f,_0x18db36){_0x16b03f=_0x16b03f[_0x6d79('0x21')]({'plain':!![]});_0x16b03f[_0x6d79('0x22')]=_0x48e139;_0x16b03f[_0x6d79('0x23')]=_0x48e139;_0x16b03f[_0x6d79('0x24')]=_0x16b03f[_0x6d79('0x25')];var _0x4cce7e=_0x6d79('0x26')+_0x16b03f['ContactId'];return db[_0x6d79('0x27')][_0x6d79('0x28')](_0x4cce7e,{'type':db['Sequelize'][_0x6d79('0x29')]['SELECT'],'raw':!![]})['then'](function(_0x220929){return _0x220929;})[_0x6d79('0x1b')](function(_0x4e0d51){if(_0x4e0d51){_0x16b03f[_0x6d79('0x2a')]=_0x4e0d51[0x0];}if(_0x16b03f[_0x6d79('0x2b')]){return db['User'][_0x6d79('0x2c')]({'where':{'id':_0x16b03f['UserId']},'attributes':['id',_0x6d79('0x2d'),_0x6d79('0x2e'),'email',_0x6d79('0x2f')],'raw':!![]})['then'](function(_0x3fb033){_0x16b03f[_0x6d79('0x30')]=util['format'](_0x6d79('0x31'),_0x3fb033[_0x6d79('0x2d')]);_0x16b03f[_0x6d79('0x22')]=_0x48e139;_0x16b03f['agent']=_0x3fb033;return request({'event':_0x6d79('0x32'),'message':_0x16b03f});})[_0x6d79('0x33')](function(_0x69b1ef){console[_0x6d79('0x1f')](_0x69b1ef);});}else{return request({'event':'outgoingmessage','message':_0x16b03f});}});};}function afterCreate(_0x4e1d0c,_0x4c38e1){return function(_0x52cae4,_0x2eed1a){_0x52cae4=_0x52cae4[_0x6d79('0x21')]({'plain':!![]});_0x52cae4['channel']=_0x4e1d0c;_0x52cae4[_0x6d79('0x23')]=_0x4e1d0c;_0x52cae4[_0x6d79('0x24')]=_0x6d79('0x34');var _0x4717c9=_0x6d79('0x26')+_0x52cae4[_0x6d79('0x35')];return db[_0x6d79('0x27')][_0x6d79('0x28')](_0x4717c9,{'type':db['Sequelize'][_0x6d79('0x29')][_0x6d79('0x36')],'raw':!![]})[_0x6d79('0x1b')](function(_0x3d0c7c){return _0x3d0c7c;})['then'](function(_0x274c33){if(_0x274c33){_0x52cae4[_0x6d79('0x2a')]=_0x274c33[0x0];}return request({'event':_0x4c38e1,'message':_0x52cae4});});};}function afterUpdate(_0x29ffdf,_0x340c91){return function(_0x5be78a,_0x1f775f){if(_0x5be78a['changed'](_0x6d79('0x37'))&&_0x5be78a[_0x6d79('0x37')]){_0x5be78a=_0x5be78a[_0x6d79('0x21')]({'plain':!![]});_0x5be78a['channel']=_0x29ffdf;_0x5be78a['motionChannel']=_0x29ffdf;_0x5be78a[_0x6d79('0x24')]='closed';var _0x4dc331=_0x6d79('0x26')+_0x5be78a[_0x6d79('0x35')];return db[_0x6d79('0x27')]['query'](_0x4dc331,{'type':db[_0x6d79('0x38')][_0x6d79('0x29')]['SELECT'],'raw':!![]})[_0x6d79('0x1b')](function(_0x4ea6bf){return _0x4ea6bf;})[_0x6d79('0x1b')](function(_0x168401){if(_0x168401){_0x5be78a[_0x6d79('0x2a')]=_0x168401[0x0];}if(_0x5be78a[_0x6d79('0x2b')]){return db['User'][_0x6d79('0x2c')]({'where':{'id':_0x5be78a[_0x6d79('0x2b')]},'attributes':['id',_0x6d79('0x2d'),_0x6d79('0x2e'),'email',_0x6d79('0x2f')],'raw':!![]})[_0x6d79('0x1b')](function(_0x364efd){_0x5be78a[_0x6d79('0x30')]=util[_0x6d79('0x39')](_0x6d79('0x31'),_0x364efd[_0x6d79('0x2d')]);_0x5be78a[_0x6d79('0x3a')]=_0x364efd;return request({'event':_0x340c91,'message':_0x5be78a});})[_0x6d79('0x33')](function(_0x191bf1){console[_0x6d79('0x1f')](_0x191bf1);});}else{return request({'event':_0x340c91,'message':_0x5be78a});}});}};}exports[_0x6d79('0x3b')]=function(){for(var _0x4c640=0x0;_0x4c640<triggers['length'];_0x4c640+=0x1){if(db[_0x6d79('0x3c')](triggers[_0x4c640][_0x6d79('0x3d')])){db[triggers[_0x4c640][_0x6d79('0x3d')]][_0x6d79('0x3e')](triggers[_0x4c640]['event'],triggers[_0x4c640]['callback'](triggers[_0x4c640]['channel']['toLowerCase'](),triggers[_0x4c640][_0x6d79('0x3f')]));}}};
\ No newline at end of file
+var _0x0cfe=['FaxInteraction','FaxMessage','Mail','MailInteraction','OpenchannelInteraction','Openchannel','OpenchannelMessage','request','EventManager','then','info','Trigger,\x20%s','error','catch','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','query','QueryTypes','SELECT','contact','UserId','find','name','fullname','email','internal','format','channel','agent','incomingmessage','opened','closed','get','event','User','interface','SIP/%s','default','length','hasOwnProperty','callback','toLowerCase','condition','util','../../mysqldb','jayson/promise','../logger','client','http','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','closedinteraction','ChatMessage','Sms','SmsInteraction','SmsMessage','newmessage','Whatsapp','WhatsappInteraction'];(function(_0x36b84a,_0x5aad0f){var _0x2cdf68=function(_0x1745f7){while(--_0x1745f7){_0x36b84a['push'](_0x36b84a['shift']());}};_0x2cdf68(++_0x5aad0f);}(_0x0cfe,0x167));var _0xe0cf=function(_0x2b5dcb,_0x45c076){_0x2b5dcb=_0x2b5dcb-0x0;var _0x10bf34=_0x0cfe[_0x2b5dcb];return _0x10bf34;};'use strict';var util=require(_0xe0cf('0x0'));var db=require(_0xe0cf('0x1'))['db'];var jayson=require(_0xe0cf('0x2'));var logger=require(_0xe0cf('0x3'))('triggers');var _=require('lodash');var client=jayson[_0xe0cf('0x4')][_0xe0cf('0x5')]({'port':0x232a});var triggers=[{'channel':_0xe0cf('0x6'),'model':_0xe0cf('0x7'),'event':_0xe0cf('0x8'),'condition':_0xe0cf('0x9'),'callback':afterCreate},{'channel':_0xe0cf('0x6'),'model':_0xe0cf('0x7'),'event':_0xe0cf('0xa'),'condition':_0xe0cf('0xb'),'callback':afterUpdate},{'channel':_0xe0cf('0x6'),'model':_0xe0cf('0xc'),'event':_0xe0cf('0x8'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0xe0cf('0xd'),'model':_0xe0cf('0xe'),'event':_0xe0cf('0x8'),'condition':_0xe0cf('0x9'),'callback':afterCreate},{'channel':_0xe0cf('0xd'),'model':_0xe0cf('0xe'),'event':_0xe0cf('0xa'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xe0cf('0xd'),'model':_0xe0cf('0xf'),'event':_0xe0cf('0x8'),'condition':_0xe0cf('0x10'),'callback':afterCreateMessage},{'channel':_0xe0cf('0x11'),'model':_0xe0cf('0x12'),'event':_0xe0cf('0x8'),'condition':_0xe0cf('0x9'),'callback':afterCreate},{'channel':_0xe0cf('0x11'),'model':_0xe0cf('0x12'),'event':_0xe0cf('0xa'),'condition':_0xe0cf('0xb'),'callback':afterUpdate},{'channel':_0xe0cf('0x11'),'model':'WhatsappMessage','event':'afterCreate','condition':_0xe0cf('0x10'),'callback':afterCreateMessage},{'channel':'Fax','model':'FaxInteraction','event':_0xe0cf('0x8'),'condition':_0xe0cf('0x9'),'callback':afterCreate},{'channel':'Fax','model':_0xe0cf('0x13'),'event':'afterUpdate','condition':_0xe0cf('0xb'),'callback':afterUpdate},{'channel':'Fax','model':_0xe0cf('0x14'),'event':_0xe0cf('0x8'),'condition':_0xe0cf('0x10'),'callback':afterCreateMessage},{'channel':_0xe0cf('0x15'),'model':_0xe0cf('0x16'),'event':'afterCreate','condition':_0xe0cf('0x9'),'callback':afterCreate},{'channel':_0xe0cf('0x15'),'model':'MailInteraction','event':_0xe0cf('0xa'),'condition':_0xe0cf('0xb'),'callback':afterUpdate},{'channel':_0xe0cf('0x15'),'model':'MailMessage','event':_0xe0cf('0x8'),'condition':'newmessage','callback':afterCreateMessage},{'channel':'Openchannel','model':_0xe0cf('0x17'),'event':_0xe0cf('0x8'),'condition':_0xe0cf('0x9'),'callback':afterCreate},{'channel':_0xe0cf('0x18'),'model':_0xe0cf('0x17'),'event':'afterUpdate','condition':_0xe0cf('0xb'),'callback':afterUpdate},{'channel':_0xe0cf('0x18'),'model':_0xe0cf('0x19'),'event':_0xe0cf('0x8'),'condition':_0xe0cf('0x10'),'callback':afterCreateMessage}];function request(_0x57c573){return client[_0xe0cf('0x1a')](_0xe0cf('0x1b'),_0x57c573)[_0xe0cf('0x1c')](function(_0x38222a){logger[_0xe0cf('0x1d')](_0xe0cf('0x1e'),'EventManager',_0x38222a);if(_0x38222a[_0xe0cf('0x1f')]){if(_0x38222a[_0xe0cf('0x1f')]['code']===0x1f4){logger[_0xe0cf('0x1f')](_0xe0cf('0x1e'),_0xe0cf('0x1b'),_0x38222a[_0xe0cf('0x1f')]);}}})[_0xe0cf('0x20')](function(_0x11cc47){logger[_0xe0cf('0x1f')]('Trigger,\x20%s',_0xe0cf('0x1b'),_0x11cc47);});}function afterCreateMessage(_0x28c93a,_0x4ae670){return function(_0xa3fbf1,_0x3d7575){_0xa3fbf1=_0xa3fbf1['get']({'plain':!![]});_0xa3fbf1['channel']=_0x28c93a;_0xa3fbf1['event']=_0xa3fbf1['direction'];var _0x426f17=_0xe0cf('0x21')+_0xa3fbf1[_0xe0cf('0x22')];return db[_0xe0cf('0x23')][_0xe0cf('0x24')](_0x426f17,{'type':db['Sequelize'][_0xe0cf('0x25')][_0xe0cf('0x26')],'raw':!![]})[_0xe0cf('0x1c')](function(_0x2a5c81){return _0x2a5c81;})[_0xe0cf('0x1c')](function(_0x355fc6){if(_0x355fc6){_0xa3fbf1[_0xe0cf('0x27')]=_0x355fc6[0x0];}if(_0xa3fbf1[_0xe0cf('0x28')]){return db['User'][_0xe0cf('0x29')]({'where':{'id':_0xa3fbf1[_0xe0cf('0x28')]},'attributes':['id',_0xe0cf('0x2a'),_0xe0cf('0x2b'),_0xe0cf('0x2c'),_0xe0cf('0x2d')],'raw':!![]})['then'](function(_0x27fd02){_0xa3fbf1['interface']=util[_0xe0cf('0x2e')]('SIP/%s',_0x27fd02[_0xe0cf('0x2a')]);_0xa3fbf1[_0xe0cf('0x2f')]=_0x28c93a;_0xa3fbf1[_0xe0cf('0x30')]=_0x27fd02;return request({'event':_0xe0cf('0x31'),'message':_0xa3fbf1});})[_0xe0cf('0x20')](function(_0x44a1a4){console[_0xe0cf('0x1f')](_0x44a1a4);});}else{return request({'event':'outgoingmessage','message':_0xa3fbf1});}});};}function afterCreate(_0x26a123,_0x535c41){return function(_0x236f1f,_0x2f96e4){_0x236f1f=_0x236f1f['get']({'plain':!![]});_0x236f1f[_0xe0cf('0x2f')]=_0x26a123;_0x236f1f['event']=_0xe0cf('0x32');var _0xea5570=_0xe0cf('0x21')+_0x236f1f[_0xe0cf('0x22')];return db['sequelize'][_0xe0cf('0x24')](_0xea5570,{'type':db['Sequelize']['QueryTypes'][_0xe0cf('0x26')],'raw':!![]})[_0xe0cf('0x1c')](function(_0x3c665f){return _0x3c665f;})[_0xe0cf('0x1c')](function(_0x27233f){if(_0x27233f){_0x236f1f[_0xe0cf('0x27')]=_0x27233f[0x0];}return request({'event':_0x535c41,'message':_0x236f1f});});};}function afterUpdate(_0x2939fa,_0x1b72c0){return function(_0xee3e8,_0x1cab8d){if(_0xee3e8['changed'](_0xe0cf('0x33'))&&_0xee3e8['closed']){_0xee3e8=_0xee3e8[_0xe0cf('0x34')]({'plain':!![]});_0xee3e8[_0xe0cf('0x2f')]=_0x2939fa;_0xee3e8[_0xe0cf('0x35')]='closed';var _0xde1e7e=_0xe0cf('0x21')+_0xee3e8[_0xe0cf('0x22')];return db[_0xe0cf('0x23')][_0xe0cf('0x24')](_0xde1e7e,{'type':db['Sequelize'][_0xe0cf('0x25')][_0xe0cf('0x26')],'raw':!![]})[_0xe0cf('0x1c')](function(_0x3e4b77){return _0x3e4b77;})[_0xe0cf('0x1c')](function(_0x37f176){if(_0x37f176){_0xee3e8[_0xe0cf('0x27')]=_0x37f176[0x0];}if(_0xee3e8[_0xe0cf('0x28')]){return db[_0xe0cf('0x36')][_0xe0cf('0x29')]({'where':{'id':_0xee3e8[_0xe0cf('0x28')]},'attributes':['id',_0xe0cf('0x2a'),_0xe0cf('0x2b'),_0xe0cf('0x2c'),_0xe0cf('0x2d')],'raw':!![]})[_0xe0cf('0x1c')](function(_0x552292){_0xee3e8[_0xe0cf('0x37')]=util[_0xe0cf('0x2e')](_0xe0cf('0x38'),_0x552292[_0xe0cf('0x2a')]);_0xee3e8[_0xe0cf('0x30')]=_0x552292;return request({'event':_0x1b72c0,'message':_0xee3e8});})[_0xe0cf('0x20')](function(_0x3c5272){console['error'](_0x3c5272);});}else{return request({'event':_0x1b72c0,'message':_0xee3e8});}});}};}exports[_0xe0cf('0x39')]=function(){for(var _0x27ef45=0x0;_0x27ef45<triggers[_0xe0cf('0x3a')];_0x27ef45+=0x1){if(db[_0xe0cf('0x3b')](triggers[_0x27ef45]['model'])){db[triggers[_0x27ef45]['model']]['hook'](triggers[_0x27ef45][_0xe0cf('0x35')],triggers[_0x27ef45][_0xe0cf('0x3c')](triggers[_0x27ef45][_0xe0cf('0x2f')][_0xe0cf('0x3d')](),triggers[_0x27ef45][_0xe0cf('0x3e')]));}}};
\ No newline at end of file
index ad2b1ad..f0e25e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8469=['agent','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','bluebird','../mysqldb','voice','mail','chat','whatsapp','openchannel','getChannels','isValidChannel','toLowerCase','includes','clearBlockUser','isUndefined','updateAttributes','getLicense','role','User','count'];(function(_0x53a629,_0x1d0e1c){var _0x37a5fc=function(_0x1932a9){while(--_0x1932a9){_0x53a629['push'](_0x53a629['shift']());}};_0x37a5fc(++_0x1d0e1c);}(_0x8469,0x13d));var _0x9846=function(_0x342700,_0x569f75){_0x342700=_0x342700-0x0;var _0x53406f=_0x8469[_0x342700];return _0x53406f;};'use strict';var _=require(_0x9846('0x0'));var BPromise=require(_0x9846('0x1'));var db=require(_0x9846('0x2'))['db'];var util=require('./license/util');var channels=[_0x9846('0x3'),_0x9846('0x4'),_0x9846('0x5'),'fax','sms',_0x9846('0x6'),_0x9846('0x7')];exports[_0x9846('0x8')]=function(){return channels;};exports[_0x9846('0x9')]=function(_0x132f63){_0x132f63=_0x132f63[_0x9846('0xa')]();return _[_0x9846('0xb')](channels,_0x132f63);};exports[_0x9846('0xc')]=function(_0xb643,_0x1bec92,_0x91bd8e,_0x5386e7){var _0x11f2f2={'loginAttempts':_0x1bec92,'blocked':_0x91bd8e};if(!_[_0x9846('0xd')](_0x5386e7)){_0x11f2f2['blockedAt']=_0x5386e7;}return _0xb643[_0x9846('0xe')](_0x11f2f2);};exports[_0x9846('0xf')]=function(_0x226bcf){return new BPromise(function(_0xd31650,_0x45ccdc){var _0x3740f8=0x0;if(_0x226bcf[_0x9846('0x10')]!=='agent'){_0xd31650(_0x226bcf);}db[_0x9846('0x11')][_0x9846('0x12')]({'where':{'role':_0x9846('0x13'),'online':!![],'id':{'$ne':_0x226bcf['id']}}})[_0x9846('0x14')](function(_0x3ba5cc){_0x3740f8=_0x3ba5cc;return util['getLicense']();})[_0x9846('0x14')](function(_0x7a433b){if(_0x7a433b&&_0x7a433b[_0x9846('0x15')]&&_0x3740f8>=_0x7a433b[_0x9846('0x15')]){throw Error(_0x9846('0x16'));}_0xd31650(_0x226bcf);})[_0x9846('0x17')](function(_0x526fae){_0x45ccdc(_0x526fae);});});};
\ No newline at end of file
+var _0x4511=['toLowerCase','includes','clearBlockUser','isUndefined','blockedAt','updateAttributes','getLicense','role','User','count','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','bluebird','./license/util','chat','fax','sms','openchannel','getChannels','isValidChannel'];(function(_0x5b0e65,_0x795f62){var _0x2e4838=function(_0x5c38d7){while(--_0x5c38d7){_0x5b0e65['push'](_0x5b0e65['shift']());}};_0x2e4838(++_0x795f62);}(_0x4511,0x81));var _0x1451=function(_0x21d1d8,_0x565740){_0x21d1d8=_0x21d1d8-0x0;var _0x2cb8b=_0x4511[_0x21d1d8];return _0x2cb8b;};'use strict';var _=require(_0x1451('0x0'));var BPromise=require(_0x1451('0x1'));var db=require('../mysqldb')['db'];var util=require(_0x1451('0x2'));var channels=['voice','mail',_0x1451('0x3'),_0x1451('0x4'),_0x1451('0x5'),'whatsapp',_0x1451('0x6')];exports[_0x1451('0x7')]=function(){return channels;};exports[_0x1451('0x8')]=function(_0x48fefd){_0x48fefd=_0x48fefd[_0x1451('0x9')]();return _[_0x1451('0xa')](channels,_0x48fefd);};exports[_0x1451('0xb')]=function(_0x51b7d1,_0x490b3e,_0x332b5a,_0x3292b2){var _0x47bcd5={'loginAttempts':_0x490b3e,'blocked':_0x332b5a};if(!_[_0x1451('0xc')](_0x3292b2)){_0x47bcd5[_0x1451('0xd')]=_0x3292b2;}return _0x51b7d1[_0x1451('0xe')](_0x47bcd5);};exports[_0x1451('0xf')]=function(_0x3c7b8a){return new BPromise(function(_0x12ccce,_0x2b53d0){var _0x2b0195=0x0;if(_0x3c7b8a[_0x1451('0x10')]!=='agent'){_0x12ccce(_0x3c7b8a);}db[_0x1451('0x11')][_0x1451('0x12')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x3c7b8a['id']}}})[_0x1451('0x13')](function(_0x4ecdb6){_0x2b0195=_0x4ecdb6;return util[_0x1451('0xf')]();})[_0x1451('0x13')](function(_0x165de5){if(_0x165de5&&_0x165de5['agents']&&_0x2b0195>=_0x165de5[_0x1451('0x14')]){throw Error(_0x1451('0x15'));}_0x12ccce(_0x3c7b8a);})[_0x1451('0x16')](function(_0x5c9f93){_0x2b53d0(_0x5c9f93);});});};
\ No newline at end of file
index be9127f..8d5faac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa71c=['status','render','json','send','exports','404'];(function(_0x41c829,_0x237c1c){var _0xfe1bff=function(_0x2f29e3){while(--_0x2f29e3){_0x41c829['push'](_0x41c829['shift']());}};_0xfe1bff(++_0x237c1c);}(_0xa71c,0x12a));var _0xca71=function(_0x3aa611,_0x1549b1){_0x3aa611=_0x3aa611-0x0;var _0x1e8b7a=_0xa71c[_0x3aa611];return _0x1e8b7a;};'use strict';module[_0xca71('0x0')][0x194]=function pageNotFound(_0x3d7b8f,_0x2ebdd1){var _0x199732=_0xca71('0x1');var _0x581f50=0x194;var _0x21643c={'status':_0x581f50};_0x2ebdd1[_0xca71('0x2')](_0x21643c['status']);_0x2ebdd1[_0xca71('0x3')](_0x199732,{},function(_0x30a05d,_0x5defb3){if(_0x30a05d){return _0x2ebdd1[_0xca71('0x2')](_0x21643c[_0xca71('0x2')])[_0xca71('0x4')](_0x21643c);}_0x2ebdd1[_0xca71('0x5')](_0x5defb3);});};
\ No newline at end of file
+var _0x2d88=['json','send','exports','404','status'];(function(_0x4f85ab,_0x4f9be6){var _0x24c33c=function(_0x514f42){while(--_0x514f42){_0x4f85ab['push'](_0x4f85ab['shift']());}};_0x24c33c(++_0x4f9be6);}(_0x2d88,0x110));var _0x82d8=function(_0x55460c,_0x160bbc){_0x55460c=_0x55460c-0x0;var _0x1e3daf=_0x2d88[_0x55460c];return _0x1e3daf;};'use strict';module[_0x82d8('0x0')][0x194]=function pageNotFound(_0x456c04,_0x150da0){var _0x1b0312=_0x82d8('0x1');var _0x13ab3e=0x194;var _0x407e78={'status':_0x13ab3e};_0x150da0[_0x82d8('0x2')](_0x407e78[_0x82d8('0x2')]);_0x150da0['render'](_0x1b0312,{},function(_0x38ef91,_0x186bbe){if(_0x38ef91){return _0x150da0['status'](_0x407e78[_0x82d8('0x2')])[_0x82d8('0x3')](_0x407e78);}_0x150da0[_0x82d8('0x4')](_0x186bbe);});};
\ No newline at end of file
index 27ffed1..5616fcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b92=['../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','hasOne','cascade','UserId','hasMany','VoiceQueuesRt','Extensions','HopperFinals','HopperHistory','OpenchannelInteractions','SmsInteractions','FaxInteractions','WhatsappInteractions','SenderId','belongsTo','userProfileId','belongsToMany','chat_group_has_users','cm_user_has_contacts','cm_user_has_lists','user_has_teams','MailInteractions','user_has_mail_interactions','ChatInteraction','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','MailQueues','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueues','UserOpenchannelQueue','WhatsappQueues','VoicePrefix','user_has_voice_prefixes','ChatWebsites','user_has_chat_websites','user_has_fax_accounts','MailAccounts','SmsAccounts','user_has_sms_accounts','WhatsappAccount','WhatsappAccounts','user_has_whatsapp_accounts','SquareProjects','user_has_square_projects','Applications','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperHistories','HopperBlacks','JscriptySessionReport','JscriptySessions','TrunkId','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPause','mandatoryDispositionPauseId','Lists','voice_queues_has_cm_lists','Teams','voice_queues_has_cm_blacklists','Messages','mailboxuser','mailbox','AgentReports','CmContact','ContactId','MailAccountId','Imap','Disposition','Dispositions','Answers','List','Template','Agents','user_has_mail_accounts','team_has_mail_queues','MailInteractionId','Account','Contact','Owner','Tags','mail_interaction_has_tags','ThroughTags','Users','Attachments','Interaction','ChatWebsiteId','ChatOfflineMessageId','restrict','TagId','ListId','DashboardItem','FaxAccountId','Interactions','FaxApplication','FaxQueue','FaxInteractionId','fax_interaction_has_tags','AttachmentId','team_has_fax_queues','SmsAccountId','SmsApplication','SmsInteractionId','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','user_has_openchannel_accounts','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','team_has_openchannel_queues','ProactiveActions','OpenchannelQueueReport','Agent','ChatQueueId','ChatInteractionId','chat_interaction_has_tags','user_has_chat_interactions','Contacts','CompanyId','Company','cm_contact_has_tags','Queue','OwnerId','CampaignId','All','OneAll','AutomationAllId','AutomationAnyId','Actions','AutomationId','Intervals','MailApplications','ChatApplications','SmsApplications','DefaultReportId','CustomReportId','Mohs','sms_interaction_has_tags','AllCondition','TriggerAllId','AnyCondition','TriggerAnyId','TriggerId','Fields','MetricId','SubjectId','FieldId','AccountId','Subject','DescriptionId','Field','VariableId','Configurations','SugarcrmField','Descriptions','DeskField','Subjects','DeskConfiguration','int_desk_configuration_has_tags','Description','ZohoField','int_zendesk_configuration_has_tags','FreshdeskConfiguration','int_freshdesk_configuration_has_tags','VtigerConfiguration','FreshsalesConfiguration','FromId','ToId','JscriptyQuestionReport','SessionId','JscriptyProject','ProjectId','team_has_chat_queues','team_has_whatsapp_queues','campaigns_has_cm_lists','BlackLists','MailTransferReport','FromMailAccountId','FromAccount','FromUserId','FromAgent','ToUserId','ToAgent','ToMailQueueId','ToQueue','ToMailAccountId','ToAccount','ChatTransferReport','ToChatQueueId','FaxTransferReport','FromFaxAccountId','ToFaxQueueId','ToFaxAccountId','FromOpenchannelAccountId','ToOpenchannelQueueId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CmCustomField','CustomFields','Queues','UserProfileSection','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','whatsapp_interaction_has_tags','ToWhatsappAccountId','ToQueueId','WhatsappQueueId','exports','../config/environment','sequelize','jstz','motion2','xcall','xC@LL1234','127.0.0.1','mysql','utf8mb4','name','utf8_general_ci','sequelizeHistory','defaultsDeep','utf8','database','username','password','options','User','import','../api/user/user.model','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','VoiceRecording','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../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','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','../api/dashboard/dashboard.model','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatInteraction/chatInteraction.model','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','Condition','Interval','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','Schedule','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','../api/template/template.model','Trigger','../api/trigger/trigger.model','Variable','../api/variable/variable.model','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','../api/analyticExtractedReport/analyticExtractedReport.model','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','../api/intDeskConfiguration/intDeskConfiguration.model','../api/intDeskField/intDeskField.model','ZohoAccount','ZohoConfiguration','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','FreshdeskAccount','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','FreshsalesAccount','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','Integration','Network','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','../api/jscriptyProject/jscriptyProject.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','License','Campaign','../api/migration/migration.model','Attachment','Plugin','../api/plugin/plugin.model','../api/chatTransferReport/chatTransferReport.model','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','SmsTransferReport'];(function(_0x47c76f,_0x251978){var _0x1a4625=function(_0x2f08d9){while(--_0x2f08d9){_0x47c76f['push'](_0x47c76f['shift']());}};_0x1a4625(++_0x251978);}(_0x0b92,0xf5));var _0x20b9=function(_0x25c3c2,_0x2da356){_0x25c3c2=_0x25c3c2-0x0;var _0x22ce21=_0x0b92[_0x25c3c2];return _0x22ce21;};'use strict';var config=require(_0x20b9('0x0'));var Sequelize=require(_0x20b9('0x1'));var _=require('lodash');var jstz=require(_0x20b9('0x2'));var timezone=jstz['determine']();config[_0x20b9('0x1')]=_['defaultsDeep'](config[_0x20b9('0x1')],{'database':_0x20b9('0x3'),'username':_0x20b9('0x4'),'password':_0x20b9('0x5'),'options':{'host':_0x20b9('0x6'),'port':0xcea,'dialect':_0x20b9('0x7'),'dialectOptions':{'charset':_0x20b9('0x8')},'logging':![],'timezone':timezone[_0x20b9('0x9')](),'define':{'charset':'utf8','collate':_0x20b9('0xa')}}});config[_0x20b9('0xb')]=_[_0x20b9('0xc')](config[_0x20b9('0xb')],{'database':_0x20b9('0x3'),'username':_0x20b9('0x4'),'password':'xC@LL1234','options':{'host':'127.0.0.1','port':0xcea,'dialect':_0x20b9('0x7'),'dialectOptions':{'charset':_0x20b9('0x8')},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0x20b9('0xd'),'collate':_0x20b9('0xa')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize'][_0x20b9('0xe')],config[_0x20b9('0x1')][_0x20b9('0xf')],config[_0x20b9('0x1')][_0x20b9('0x10')],config[_0x20b9('0x1')][_0x20b9('0x11')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory'][_0x20b9('0xe')],config[_0x20b9('0xb')]['username'],config['sequelizeHistory']['password'],config[_0x20b9('0xb')]['options'])};db[_0x20b9('0x12')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x14'));db[_0x20b9('0x15')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x16'));db[_0x20b9('0x17')]=db[_0x20b9('0x1')]['import'](_0x20b9('0x18'));db[_0x20b9('0x19')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x1a'));db[_0x20b9('0x1b')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x1c'));db[_0x20b9('0x1d')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x1e'));db[_0x20b9('0x1f')]=db[_0x20b9('0x1')][_0x20b9('0x13')]('../api/voiceRecording/voiceRecording.model');db[_0x20b9('0x20')]=db[_0x20b9('0x1')]['import'](_0x20b9('0x21'));db[_0x20b9('0x22')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x23'));db[_0x20b9('0x24')]=db['sequelize']['import'](_0x20b9('0x25'));db[_0x20b9('0x26')]=db[_0x20b9('0x1')]['import'](_0x20b9('0x27'));db[_0x20b9('0x28')]=db[_0x20b9('0x1')]['import'](_0x20b9('0x29'));db[_0x20b9('0x2a')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x2b'));db[_0x20b9('0x2c')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x2d'));db[_0x20b9('0x2e')]=db['sequelize'][_0x20b9('0x13')](_0x20b9('0x2f'));db[_0x20b9('0x30')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x31'));db['VoiceTransferReport']=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x32'));db[_0x20b9('0x33')]=db[_0x20b9('0x1')]['import'](_0x20b9('0x34'));db[_0x20b9('0x35')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x36'));db[_0x20b9('0x37')]=db[_0x20b9('0x1')]['import']('../api/userChatQueue/userChatQueue.model');db[_0x20b9('0x38')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x39'));db[_0x20b9('0x3a')]=db['sequelize']['import'](_0x20b9('0x3b'));db[_0x20b9('0x3c')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x3d'));db['UserOpenchannelQueue']=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x3e'));db[_0x20b9('0x3f')]=db[_0x20b9('0x1')]['import'](_0x20b9('0x40'));db[_0x20b9('0x41')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x42'));db[_0x20b9('0x43')]=db[_0x20b9('0x1')]['import'](_0x20b9('0x44'));db[_0x20b9('0x45')]=db['sequelize']['import'](_0x20b9('0x46'));db[_0x20b9('0x47')]=db[_0x20b9('0x1')][_0x20b9('0x13')]('../api/mailQueue/mailQueue.model');db['MailSubstatus']=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x48'));db[_0x20b9('0x49')]=db[_0x20b9('0x1')]['import'](_0x20b9('0x4a'));db[_0x20b9('0x4b')]=db[_0x20b9('0x1')]['import'](_0x20b9('0x4c'));db[_0x20b9('0x4d')]=db['sequelize'][_0x20b9('0x13')](_0x20b9('0x4e'));db[_0x20b9('0x4f')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x50'));db[_0x20b9('0x51')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x52'));db['DashboardItem']=db['sequelize'][_0x20b9('0x13')](_0x20b9('0x53'));db[_0x20b9('0x54')]=db[_0x20b9('0x1')]['import'](_0x20b9('0x55'));db['FaxApplication']=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x56'));db[_0x20b9('0x57')]=db[_0x20b9('0x1')]['import'](_0x20b9('0x58'));db[_0x20b9('0x59')]=db[_0x20b9('0x1')]['import'](_0x20b9('0x5a'));db['FaxQueue']=db[_0x20b9('0x1')][_0x20b9('0x13')]('../api/faxQueue/faxQueue.model');db[_0x20b9('0x5b')]=db['sequelize']['import'](_0x20b9('0x5c'));db[_0x20b9('0x5d')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x5e'));db['SmsApplication']=db['sequelize'][_0x20b9('0x13')]('../api/smsApplication/smsApplication.model');db[_0x20b9('0x5f')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x60'));db[_0x20b9('0x61')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x62'));db[_0x20b9('0x63')]=db[_0x20b9('0x1')][_0x20b9('0x13')]('../api/smsQueue/smsQueue.model');db[_0x20b9('0x64')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x65'));db[_0x20b9('0x66')]=db[_0x20b9('0x1')]['import'](_0x20b9('0x67'));db[_0x20b9('0x68')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x69'));db[_0x20b9('0x6a')]=db[_0x20b9('0x1')]['import'](_0x20b9('0x6b'));db[_0x20b9('0x6c')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x6d'));db[_0x20b9('0x6e')]=db['sequelize'][_0x20b9('0x13')](_0x20b9('0x6f'));db['OpenchannelQueueReport']=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x70'));db[_0x20b9('0x71')]=db[_0x20b9('0x1')]['import']('../api/chatApplication/chatApplication.model');db['ChatInteraction']=db['sequelize']['import'](_0x20b9('0x72'));db[_0x20b9('0x73')]=db['sequelize'][_0x20b9('0x13')](_0x20b9('0x74'));db[_0x20b9('0x75')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x76'));db[_0x20b9('0x77')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x78'));db[_0x20b9('0x79')]=db[_0x20b9('0x1')][_0x20b9('0x13')]('../api/chatGroup/chatGroup.model');db[_0x20b9('0x7a')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x7b'));db[_0x20b9('0x7c')]=db[_0x20b9('0x1')][_0x20b9('0x13')]('../api/cmCompany/cmCompany.model');db['CmContact']=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x7d'));db[_0x20b9('0x7e')]=db['sequelize']['import'](_0x20b9('0x7f'));db[_0x20b9('0x80')]=db[_0x20b9('0x1')]['import'](_0x20b9('0x81'));db[_0x20b9('0x82')]=db['sequelize'][_0x20b9('0x13')]('../api/cmHopperFinal/cmHopperFinal.model');db[_0x20b9('0x83')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x84'));db[_0x20b9('0x85')]=db[_0x20b9('0x1')][_0x20b9('0x13')]('../api/reportAgentPreview/reportAgentPreview.model');db['CmCustomField']=db['sequelize'][_0x20b9('0x13')](_0x20b9('0x86'));db[_0x20b9('0x87')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x88'));db[_0x20b9('0x89')]=db['sequelize'][_0x20b9('0x13')]('../api/automation/automation.model');db[_0x20b9('0x8a')]=db[_0x20b9('0x1')]['import'](_0x20b9('0x8b'));db['Disposition']=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x8c'));db[_0x20b9('0x8d')]=db[_0x20b9('0x1')]['import']('../api/condition/condition.model');db[_0x20b9('0x8e')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x8f'));db[_0x20b9('0x90')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x91'));db[_0x20b9('0x92')]=db['sequelize'][_0x20b9('0x13')](_0x20b9('0x93'));db['VoiceQueuesLog']=db[_0x20b9('0x1')]['import']('../api/voiceQueuesLog/voiceQueuesLog.model');db[_0x20b9('0x94')]=db[_0x20b9('0x1')][_0x20b9('0x13')]('../api/schedule/schedule.model');db[_0x20b9('0x95')]=db['sequelize'][_0x20b9('0x13')](_0x20b9('0x96'));db[_0x20b9('0x97')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x98'));db['Template']=db[_0x20b9('0x1')]['import'](_0x20b9('0x99'));db[_0x20b9('0x9a')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x9b'));db[_0x20b9('0x9c')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x9d'));db['Integration']=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x9e'));db[_0x20b9('0x9f')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xa0'));db[_0x20b9('0xa1')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xa2'));db[_0x20b9('0xa3')]=db['sequelize'][_0x20b9('0x13')](_0x20b9('0xa4'));db['AnalyticExtractedReport']=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xa5'));db['AnalyticMetric']=db['sequelize']['import'](_0x20b9('0xa6'));db[_0x20b9('0xa7')]=db[_0x20b9('0x1')]['import'](_0x20b9('0xa8'));db[_0x20b9('0xa9')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xaa'));db[_0x20b9('0xab')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xac'));db[_0x20b9('0xad')]=db[_0x20b9('0x1')]['import'](_0x20b9('0xae'));db[_0x20b9('0xaf')]=db['sequelize'][_0x20b9('0x13')]('../api/intSalesforceField/intSalesforceField.model');db[_0x20b9('0xb0')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xb1'));db[_0x20b9('0xb2')]=db['sequelize']['import'](_0x20b9('0xb3'));db['SugarcrmField']=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xb4'));db[_0x20b9('0xb5')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xb6'));db['DeskConfiguration']=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xb7'));db['DeskField']=db['sequelize'][_0x20b9('0x13')](_0x20b9('0xb8'));db[_0x20b9('0xb9')]=db['sequelize'][_0x20b9('0x13')]('../api/intZohoAccount/intZohoAccount.model');db[_0x20b9('0xba')]=db['sequelize'][_0x20b9('0x13')]('../api/intZohoConfiguration/intZohoConfiguration.model');db['ZohoField']=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xbb'));db[_0x20b9('0xbc')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xbd'));db[_0x20b9('0xbe')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xbf'));db[_0x20b9('0xc0')]=db[_0x20b9('0x1')][_0x20b9('0x13')]('../api/intZendeskField/intZendeskField.model');db[_0x20b9('0xc1')]=db['sequelize'][_0x20b9('0x13')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db['FreshdeskConfiguration']=db['sequelize'][_0x20b9('0x13')](_0x20b9('0xc2'));db[_0x20b9('0xc3')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xc4'));db[_0x20b9('0xc5')]=db['sequelize'][_0x20b9('0x13')](_0x20b9('0xc6'));db['VtigerConfiguration']=db['sequelize'][_0x20b9('0x13')](_0x20b9('0xc7'));db[_0x20b9('0xc8')]=db[_0x20b9('0x1')]['import'](_0x20b9('0xc9'));db[_0x20b9('0xca')]=db[_0x20b9('0x1')]['import']('../api/intServicenowAccount/intServicenowAccount.model');db[_0x20b9('0xcb')]=db[_0x20b9('0x1')]['import'](_0x20b9('0xcc'));db[_0x20b9('0xcd')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xce'));db[_0x20b9('0xcf')]=db[_0x20b9('0x1')]['import'](_0x20b9('0xd0'));db[_0x20b9('0xd1')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xd2'));db[_0x20b9('0xd3')]=db['sequelize'][_0x20b9('0x13')]('../api/intDynamics365Field/intDynamics365Field.model');db[_0x20b9('0xd4')]=db[_0x20b9('0x1')][_0x20b9('0x13')]('../api/intFreshsalesAccount/intFreshsalesAccount.model');db['FreshsalesConfiguration']=db[_0x20b9('0x1')]['import'](_0x20b9('0xd5'));db[_0x20b9('0xd6')]=db['sequelize'][_0x20b9('0x13')]('../api/intFreshsalesField/intFreshsalesField.model');db[_0x20b9('0xd7')]=db[_0x20b9('0x1')]['import']('../api/integration/integration.model');db[_0x20b9('0xd8')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xd9'));db[_0x20b9('0xda')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xdb'));db[_0x20b9('0xdc')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xdd'));db[_0x20b9('0xde')]=db['sequelize']['import'](_0x20b9('0xdf'));db['JscriptyQuestionReport']=db[_0x20b9('0x1')]['import'](_0x20b9('0xe0'));db['JscriptySessionReport']=db[_0x20b9('0x1')][_0x20b9('0x13')]('../api/jscriptySessionReport/jscriptySessionReport.model');db[_0x20b9('0xe1')]=db['sequelize'][_0x20b9('0x13')](_0x20b9('0xe2'));db['SquareReport']=db['sequelize']['import'](_0x20b9('0xe3'));db[_0x20b9('0xe4')]=db[_0x20b9('0x1')]['import'](_0x20b9('0xe5'));db['JscriptyProject']=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xe6'));db['Setting']=db['sequelize'][_0x20b9('0x13')]('../api/setting/setting.model');db[_0x20b9('0xe7')]=db[_0x20b9('0x1')]['import'](_0x20b9('0xe8'));db[_0x20b9('0xe9')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xea'));db[_0x20b9('0xeb')]=db[_0x20b9('0x1')]['import'](_0x20b9('0xec'));db[_0x20b9('0xed')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xee'));db[_0x20b9('0xef')]=db[_0x20b9('0x1')][_0x20b9('0x13')]('../api/team/team.model');db[_0x20b9('0xf0')]=db[_0x20b9('0x1')]['import']('../api/license/license.model');db[_0x20b9('0xf1')]=db['sequelize'][_0x20b9('0x13')]('../api/campaign/campaign.model');db['Migration']=db[_0x20b9('0x1')]['import'](_0x20b9('0xf2'));db[_0x20b9('0xf3')]=db[_0x20b9('0x1')]['import']('../api/attachment/attachment.model');db[_0x20b9('0xf4')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xf5'));db['MailTransferReport']=db['sequelize'][_0x20b9('0x13')]('../api/mailTransferReport/mailTransferReport.model');db['ChatTransferReport']=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xf6'));db['FaxTransferReport']=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xf7'));db[_0x20b9('0xf8')]=db[_0x20b9('0x1')][_0x20b9('0x13')]('../api/openchannelTransferReport/openchannelTransferReport.model');db[_0x20b9('0xf9')]=db['sequelize'][_0x20b9('0x13')](_0x20b9('0xfa'));db[_0x20b9('0xfb')]=db[_0x20b9('0x1')]['import'](_0x20b9('0xfc'));db['VoicePrefix']=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xfd'));db[_0x20b9('0xfe')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0xff'));db['UserProfileSection']=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x100'));db[_0x20b9('0x101')]=db[_0x20b9('0x1')]['import'](_0x20b9('0x102'));db[_0x20b9('0x103')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x104'));db['WhatsappAccount']=db[_0x20b9('0x1')]['import'](_0x20b9('0x105'));db[_0x20b9('0x106')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x107'));db[_0x20b9('0x108')]=db[_0x20b9('0x1')][_0x20b9('0x13')]('../api/whatsappInteraction/whatsappInteraction.model');db[_0x20b9('0x109')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x10a'));db[_0x20b9('0x10b')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x10c'));db[_0x20b9('0x10d')]=db[_0x20b9('0x1')][_0x20b9('0x13')]('../api/whatsappTransferReport/whatsappTransferReport.model');db[_0x20b9('0x10e')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x10f'));db[_0x20b9('0x110')]=db['sequelize'][_0x20b9('0x13')](_0x20b9('0x111'));db[_0x20b9('0x112')]=db[_0x20b9('0x1')][_0x20b9('0x13')](_0x20b9('0x113'));db['User'][_0x20b9('0x114')](db[_0x20b9('0x22')],{'as':_0x20b9('0x22'),'onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x116')});db[_0x20b9('0x12')][_0x20b9('0x117')](db['VoiceRecording'],{'as':'Recordings','foreignKey':_0x20b9('0x116')});db['User'][_0x20b9('0x117')](db[_0x20b9('0x33')],{'as':_0x20b9('0x118'),'foreignKey':_0x20b9('0x116')});db[_0x20b9('0x12')][_0x20b9('0x117')](db[_0x20b9('0x19')],{'as':_0x20b9('0x119'),'onDelete':_0x20b9('0x115'),'hooks':!![]});db[_0x20b9('0x12')][_0x20b9('0x117')](db[_0x20b9('0x82')],{'as':_0x20b9('0x11a'),'foreignKey':_0x20b9('0x116')});db['User']['hasMany'](db[_0x20b9('0x83')],{'as':_0x20b9('0x11b'),'foreignKey':_0x20b9('0x116')});db[_0x20b9('0x12')][_0x20b9('0x117')](db[_0x20b9('0x85')],{'as':_0x20b9('0x85'),'foreignKey':'UserId'});db['User']['hasMany'](db[_0x20b9('0x68')],{'as':_0x20b9('0x11c'),'foreignKey':_0x20b9('0x116')});db[_0x20b9('0x12')][_0x20b9('0x117')](db['ChatInteraction'],{'as':'ChatInteractions','foreignKey':'UserId'});db[_0x20b9('0x12')][_0x20b9('0x117')](db['SmsInteraction'],{'as':_0x20b9('0x11d'),'foreignKey':_0x20b9('0x116')});db['User']['hasMany'](db[_0x20b9('0x57')],{'as':_0x20b9('0x11e'),'foreignKey':_0x20b9('0x116')});db[_0x20b9('0x12')][_0x20b9('0x117')](db['MailInteraction'],{'as':'MailInteractions','foreignKey':_0x20b9('0x116')});db[_0x20b9('0x12')]['hasMany'](db[_0x20b9('0x108')],{'as':_0x20b9('0x11f'),'foreignKey':_0x20b9('0x116')});db['User']['hasMany'](db['UserNotification'],{'as':'UserNotifications','foreignKey':_0x20b9('0x120')});db['User'][_0x20b9('0x121')](db[_0x20b9('0xfe')],{'as':_0x20b9('0xfe'),'foreignKey':_0x20b9('0x122')});db[_0x20b9('0x12')][_0x20b9('0x123')](db['ChatGroup'],{'as':'Groups','through':_0x20b9('0x124')});db[_0x20b9('0x12')][_0x20b9('0x123')](db['CmContact'],{'as':'Contacts','through':_0x20b9('0x125')});db['User'][_0x20b9('0x123')](db['CmList'],{'as':'Lists','through':_0x20b9('0x126')});db[_0x20b9('0x12')][_0x20b9('0x123')](db[_0x20b9('0xef')],{'through':_0x20b9('0x127')});db[_0x20b9('0x12')]['belongsToMany'](db[_0x20b9('0x49')],{'as':_0x20b9('0x128'),'through':_0x20b9('0x129')});db[_0x20b9('0x12')][_0x20b9('0x123')](db[_0x20b9('0x12a')],{'as':'ChatInteractions','through':'user_has_chat_interactions'});db[_0x20b9('0x12')][_0x20b9('0x123')](db['FaxInteraction'],{'as':_0x20b9('0x11e'),'through':_0x20b9('0x12b')});db['User'][_0x20b9('0x123')](db[_0x20b9('0x5f')],{'as':'SmsInteractions','through':_0x20b9('0x12c')});db[_0x20b9('0x12')]['belongsToMany'](db[_0x20b9('0x68')],{'as':'OpenchannelInteractions','through':_0x20b9('0x12d')});db[_0x20b9('0x12')][_0x20b9('0x123')](db['WhatsappInteraction'],{'as':_0x20b9('0x11f'),'through':'user_has_whatsapp_interactions'});db[_0x20b9('0x12')][_0x20b9('0x123')](db['VoiceQueue'],{'as':'VoiceQueues','through':_0x20b9('0x35'),'required':![]});db[_0x20b9('0x12')]['belongsToMany'](db[_0x20b9('0x47')],{'as':_0x20b9('0x12e'),'through':_0x20b9('0x38'),'required':![]});db[_0x20b9('0x12')][_0x20b9('0x123')](db[_0x20b9('0x77')],{'as':_0x20b9('0x12f'),'through':_0x20b9('0x37'),'required':![],'hooks':!![]});db[_0x20b9('0x12')][_0x20b9('0x123')](db['FaxQueue'],{'as':_0x20b9('0x130'),'through':_0x20b9('0x3a'),'required':![]});db[_0x20b9('0x12')][_0x20b9('0x123')](db[_0x20b9('0x63')],{'as':_0x20b9('0x131'),'through':_0x20b9('0x3c'),'required':![]});db[_0x20b9('0x12')][_0x20b9('0x123')](db[_0x20b9('0x6c')],{'as':_0x20b9('0x132'),'through':_0x20b9('0x133'),'required':![]});db[_0x20b9('0x12')][_0x20b9('0x123')](db[_0x20b9('0x10e')],{'as':_0x20b9('0x134'),'through':_0x20b9('0x3f'),'required':![]});db['User'][_0x20b9('0x123')](db['CmList'],{'through':_0x20b9('0x126')});db[_0x20b9('0x12')][_0x20b9('0x123')](db[_0x20b9('0x135')],{'as':'VoicePrefixes','through':_0x20b9('0x136'),'required':![]});db[_0x20b9('0x12')][_0x20b9('0x123')](db[_0x20b9('0x6e')],{'as':_0x20b9('0x137'),'through':_0x20b9('0x138')});db[_0x20b9('0x12')][_0x20b9('0x123')](db[_0x20b9('0x54')],{'as':'FaxAccounts','through':_0x20b9('0x139')});db[_0x20b9('0x12')][_0x20b9('0x123')](db[_0x20b9('0x45')],{'as':_0x20b9('0x13a'),'through':'user_has_mail_accounts'});db[_0x20b9('0x12')]['belongsToMany'](db[_0x20b9('0x64')],{'as':'OpenchannelAccounts','through':'user_has_openchannel_accounts'});db['User'][_0x20b9('0x123')](db['SmsAccount'],{'as':_0x20b9('0x13b'),'through':_0x20b9('0x13c')});db[_0x20b9('0x12')]['belongsToMany'](db[_0x20b9('0x13d')],{'as':_0x20b9('0x13e'),'through':_0x20b9('0x13f')});db['User'][_0x20b9('0x123')](db[_0x20b9('0xe9')],{'as':_0x20b9('0x140'),'through':_0x20b9('0x141')});db[_0x20b9('0x15')][_0x20b9('0x117')](db[_0x20b9('0x19')],{'as':'SpiedAgents','onDelete':_0x20b9('0x115'),'foreignKey':'ChanSpyId'});db[_0x20b9('0x17')][_0x20b9('0x117')](db[_0x20b9('0x19')],{'onDelete':'cascade'});db[_0x20b9('0x19')]['hasMany'](db[_0x20b9('0x19')],{'as':_0x20b9('0x142'),'onDelete':_0x20b9('0x115')});db[_0x20b9('0x1b')][_0x20b9('0x123')](db[_0x20b9('0x95')],{'as':_0x20b9('0x143'),'through':_0x20b9('0x144')});db[_0x20b9('0x1d')][_0x20b9('0x117')](db['UserVoiceQueueRt'],{'as':_0x20b9('0x145'),'foreignKey':_0x20b9('0x146')});db[_0x20b9('0x1d')]['hasMany'](db['CmHopper'],{'as':_0x20b9('0x147'),'foreignKey':_0x20b9('0x146')});db['VoiceQueue']['hasMany'](db[_0x20b9('0x82')],{'as':_0x20b9('0x11a'),'foreignKey':_0x20b9('0x146')});db[_0x20b9('0x1d')][_0x20b9('0x117')](db['CmHopperHistory'],{'as':_0x20b9('0x148'),'foreignKey':'VoiceQueueId'});db[_0x20b9('0x1d')][_0x20b9('0x117')](db[_0x20b9('0x85')],{'as':_0x20b9('0x85'),'foreignKey':_0x20b9('0x146')});db['VoiceQueue'][_0x20b9('0x117')](db[_0x20b9('0x80')],{'as':_0x20b9('0x149'),'foreignKey':'VoiceQueueId'});db['VoiceQueue']['hasMany'](db[_0x20b9('0x14a')],{'as':_0x20b9('0x14b'),'foreignKey':_0x20b9('0x146')});db[_0x20b9('0x1d')][_0x20b9('0x121')](db['Trunk'],{'as':_0x20b9('0x30'),'foreignKey':_0x20b9('0x14c')});db[_0x20b9('0x1d')][_0x20b9('0x121')](db[_0x20b9('0x30')],{'as':_0x20b9('0x14d'),'foreignKey':_0x20b9('0x14e')});db[_0x20b9('0x1d')]['belongsTo'](db['Interval'],{'as':_0x20b9('0x8e'),'foreignKey':_0x20b9('0x14f')});db[_0x20b9('0x1d')][_0x20b9('0x121')](db[_0x20b9('0x90')],{'as':_0x20b9('0x150'),'foreignKey':_0x20b9('0x151')});db[_0x20b9('0x1d')][_0x20b9('0x123')](db[_0x20b9('0xfb')],{'as':_0x20b9('0x152'),'through':_0x20b9('0x153')});db[_0x20b9('0x1d')]['belongsToMany'](db[_0x20b9('0x12')],{'as':'Agents','through':_0x20b9('0x35')});db['VoiceQueue'][_0x20b9('0x123')](db[_0x20b9('0xef')],{'as':_0x20b9('0x154'),'through':'TeamVoiceQueue'});db[_0x20b9('0x1d')]['belongsToMany'](db[_0x20b9('0xfb')],{'as':'BlackLists','through':_0x20b9('0x155')});db[_0x20b9('0x1f')][_0x20b9('0x121')](db[_0x20b9('0x12')],{'as':_0x20b9('0x12'),'foreignKey':_0x20b9('0x116')});db[_0x20b9('0x20')][_0x20b9('0x121')](db['User'],{'as':_0x20b9('0x12'),'foreignKey':_0x20b9('0x116')});db[_0x20b9('0x22')][_0x20b9('0x117')](db[_0x20b9('0x24')],{'as':_0x20b9('0x156'),'onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x157'),'sourceKey':_0x20b9('0x158')});db[_0x20b9('0x24')]['belongsTo'](db[_0x20b9('0x22')],{'foreignKey':_0x20b9('0x157'),'targetKey':'mailbox'});db[_0x20b9('0x26')][_0x20b9('0x117')](db['VoiceQueueReport'],{'as':'QueueCalls','foreignKey':'uniqueid','constraints':![]});db['VoiceCallReport']['hasMany'](db[_0x20b9('0x2a')],{'as':_0x20b9('0x159'),'foreignKey':'uniqueid','constraints':![]});db[_0x20b9('0x26')][_0x20b9('0x121')](db[_0x20b9('0x12')],{'as':_0x20b9('0x12'),'foreignKey':_0x20b9('0x116')});db[_0x20b9('0x26')][_0x20b9('0x121')](db[_0x20b9('0x15a')],{'as':'Contact','foreignKey':_0x20b9('0x15b')});db[_0x20b9('0x41')][_0x20b9('0x121')](db['MailAccount'],{'as':_0x20b9('0x45'),'foreignKey':_0x20b9('0x15c')});db[_0x20b9('0x43')][_0x20b9('0x121')](db[_0x20b9('0x45')],{'as':'MailAccount','foreignKey':_0x20b9('0x15c')});db[_0x20b9('0x45')]['hasOne'](db[_0x20b9('0x41')],{'as':_0x20b9('0x15d'),'onDelete':'cascade'});db[_0x20b9('0x45')][_0x20b9('0x114')](db[_0x20b9('0x43')],{'as':'Smtp','onDelete':_0x20b9('0x115')});db['MailAccount']['hasMany'](db[_0x20b9('0x15e')],{'as':_0x20b9('0x15f'),'foreignKey':_0x20b9('0x15c'),'onDelete':_0x20b9('0x115')});db['MailAccount'][_0x20b9('0x117')](db[_0x20b9('0x8a')],{'as':_0x20b9('0x160'),'foreignKey':_0x20b9('0x15c')});db[_0x20b9('0x45')][_0x20b9('0x117')](db[_0x20b9('0x4b')],{'as':_0x20b9('0x156'),'foreignKey':'MailAccountId'});db['MailAccount'][_0x20b9('0x117')](db[_0x20b9('0x49')],{'as':'Interactions'});db[_0x20b9('0x45')][_0x20b9('0x117')](db[_0x20b9('0x4d')],{'as':_0x20b9('0x142')});db[_0x20b9('0x45')]['belongsTo'](db[_0x20b9('0xfb')],{'as':_0x20b9('0x161'),'foreignKey':'ListId'});db[_0x20b9('0x45')][_0x20b9('0x121')](db[_0x20b9('0x162')],{'as':_0x20b9('0x162'),'foreignKey':'TemplateId'});db[_0x20b9('0x45')][_0x20b9('0x121')](db[_0x20b9('0x90')],{'as':_0x20b9('0x150'),'foreignKey':_0x20b9('0x151')});db[_0x20b9('0x45')][_0x20b9('0x123')](db[_0x20b9('0x12')],{'as':_0x20b9('0x163'),'through':_0x20b9('0x164')});db['MailQueue'][_0x20b9('0x123')](db[_0x20b9('0x12')],{'as':_0x20b9('0x163'),'through':_0x20b9('0x38')});db[_0x20b9('0x47')][_0x20b9('0x123')](db['Team'],{'through':_0x20b9('0x165'),'as':'Teams'});db[_0x20b9('0x49')]['hasMany'](db[_0x20b9('0x4b')],{'as':'Messages','onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x166')});db[_0x20b9('0x49')][_0x20b9('0x121')](db[_0x20b9('0x45')],{'as':_0x20b9('0x167'),'foreignKey':_0x20b9('0x15c')});db[_0x20b9('0x49')][_0x20b9('0x121')](db[_0x20b9('0x15a')],{'as':_0x20b9('0x168'),'foreignKey':'ContactId'});db[_0x20b9('0x49')][_0x20b9('0x121')](db[_0x20b9('0x12')],{'as':_0x20b9('0x169'),'foreignKey':_0x20b9('0x116')});db['MailInteraction'][_0x20b9('0x123')](db[_0x20b9('0x97')],{'through':'mail_interaction_has_tags','as':_0x20b9('0x16a')});db['MailInteraction'][_0x20b9('0x123')](db[_0x20b9('0x97')],{'through':_0x20b9('0x16b'),'as':_0x20b9('0x16c')});db[_0x20b9('0x49')]['belongsToMany'](db['User'],{'as':_0x20b9('0x16d'),'through':'user_has_mail_interactions','foreignKey':_0x20b9('0x166')});db[_0x20b9('0x4b')][_0x20b9('0x117')](db['Attachment'],{'as':_0x20b9('0x16e'),'onDelete':_0x20b9('0x115')});db[_0x20b9('0x4b')][_0x20b9('0x121')](db[_0x20b9('0x12')],{'as':'User'});db[_0x20b9('0x4b')][_0x20b9('0x121')](db[_0x20b9('0x15a')],{'onDelete':_0x20b9('0x115'),'as':_0x20b9('0x168')});db[_0x20b9('0x4b')]['belongsTo'](db['MailInteraction'],{'as':_0x20b9('0x16f'),'foreignKey':_0x20b9('0x166')});db['MailMessage'][_0x20b9('0x121')](db[_0x20b9('0x45')],{'as':'Account','foreignKey':_0x20b9('0x15c')});db[_0x20b9('0x4b')][_0x20b9('0x121')](db[_0x20b9('0x6e')],{'as':_0x20b9('0x6e'),'foreignKey':_0x20b9('0x170')});db['MailMessage'][_0x20b9('0x121')](db[_0x20b9('0x75')],{'as':_0x20b9('0x75'),'foreignKey':_0x20b9('0x171')});db[_0x20b9('0x4d')][_0x20b9('0x121')](db[_0x20b9('0x12')],{'onDelete':_0x20b9('0x172')});db[_0x20b9('0x4d')]['belongsTo'](db[_0x20b9('0x47')],{'onDelete':_0x20b9('0x172')});db[_0x20b9('0x4d')][_0x20b9('0x121')](db[_0x20b9('0x45')],{'onDelete':'restrict'});db[_0x20b9('0x4d')][_0x20b9('0x121')](db[_0x20b9('0x8e')],{'onDelete':_0x20b9('0x172'),'foreignKey':_0x20b9('0x14f')});db['MailApplication'][_0x20b9('0x121')](db['Tag'],{'onDelete':_0x20b9('0x172'),'foreignKey':_0x20b9('0x173')});db[_0x20b9('0x4f')]['belongsTo'](db['MailAccount'],{});db['MailQueueReport'][_0x20b9('0x121')](db[_0x20b9('0xfb')],{'as':_0x20b9('0x161'),'foreignKey':_0x20b9('0x174')});db[_0x20b9('0x4f')][_0x20b9('0x121')](db[_0x20b9('0x15a')],{'as':'Contact','foreignKey':'ContactId'});db['MailQueueReport']['belongsTo'](db[_0x20b9('0x49')],{});db[_0x20b9('0x4f')][_0x20b9('0x121')](db[_0x20b9('0x4b')],{});db[_0x20b9('0x4f')][_0x20b9('0x121')](db['User'],{});db[_0x20b9('0x4f')][_0x20b9('0x121')](db[_0x20b9('0x47')],{});db[_0x20b9('0x51')]['hasMany'](db[_0x20b9('0x175')],{'as':'Items','onDelete':_0x20b9('0x115')});db[_0x20b9('0x54')][_0x20b9('0x117')](db[_0x20b9('0x15e')],{'as':_0x20b9('0x15f'),'foreignKey':_0x20b9('0x176'),'onDelete':_0x20b9('0x115')});db[_0x20b9('0x54')][_0x20b9('0x117')](db[_0x20b9('0x8a')],{'as':_0x20b9('0x160'),'foreignKey':_0x20b9('0x176')});db[_0x20b9('0x54')][_0x20b9('0x117')](db[_0x20b9('0x57')],{'as':_0x20b9('0x177')});db[_0x20b9('0x54')][_0x20b9('0x117')](db[_0x20b9('0x178')],{'as':'Applications'});db['FaxAccount']['hasMany'](db[_0x20b9('0x19')],{'as':'Exntensions','onDelete':_0x20b9('0x115')});db['FaxAccount'][_0x20b9('0x117')](db[_0x20b9('0x59')],{'as':_0x20b9('0x156')});db['FaxAccount'][_0x20b9('0x121')](db[_0x20b9('0x30')],{'as':_0x20b9('0x30')});db[_0x20b9('0x54')]['belongsTo'](db[_0x20b9('0xfb')],{'as':_0x20b9('0x161'),'foreignKey':_0x20b9('0x174')});db[_0x20b9('0x54')]['belongsTo'](db[_0x20b9('0x90')],{'as':_0x20b9('0x150'),'foreignKey':_0x20b9('0x151')});db[_0x20b9('0x54')][_0x20b9('0x123')](db['User'],{'as':_0x20b9('0x163'),'through':_0x20b9('0x139')});db[_0x20b9('0x178')]['belongsTo'](db[_0x20b9('0x12')],{'onDelete':_0x20b9('0x172')});db['FaxApplication'][_0x20b9('0x121')](db[_0x20b9('0x179')],{'onDelete':_0x20b9('0x172')});db[_0x20b9('0x178')]['belongsTo'](db[_0x20b9('0x54')],{'onDelete':_0x20b9('0x172')});db[_0x20b9('0x178')][_0x20b9('0x121')](db[_0x20b9('0x97')],{'onDelete':'restrict','foreignKey':'TagId'});db[_0x20b9('0x57')]['hasMany'](db[_0x20b9('0x59')],{'as':'Messages','onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x17a')});db['FaxInteraction']['belongsTo'](db[_0x20b9('0x54')],{'as':_0x20b9('0x167'),'foreignKey':_0x20b9('0x176')});db[_0x20b9('0x57')][_0x20b9('0x121')](db[_0x20b9('0x15a')],{'as':_0x20b9('0x168'),'foreignKey':_0x20b9('0x15b')});db[_0x20b9('0x57')]['belongsTo'](db[_0x20b9('0x12')],{'as':_0x20b9('0x169'),'foreignKey':_0x20b9('0x116')});db['FaxInteraction']['belongsToMany'](db[_0x20b9('0x97')],{'through':_0x20b9('0x17b'),'as':'Tags'});db[_0x20b9('0x57')][_0x20b9('0x123')](db[_0x20b9('0x97')],{'through':_0x20b9('0x17b'),'as':_0x20b9('0x16c')});db[_0x20b9('0x57')][_0x20b9('0x123')](db[_0x20b9('0x12')],{'as':'Users','through':_0x20b9('0x12b'),'foreignKey':_0x20b9('0x17a')});db[_0x20b9('0x59')][_0x20b9('0x121')](db[_0x20b9('0x12')],{'onDelete':_0x20b9('0x115'),'as':_0x20b9('0x12')});db['FaxMessage'][_0x20b9('0x121')](db['FaxInteraction'],{'as':_0x20b9('0x16f'),'foreignKey':_0x20b9('0x17a')});db[_0x20b9('0x59')]['belongsTo'](db[_0x20b9('0x15a')],{'onDelete':_0x20b9('0x115'),'as':_0x20b9('0x168')});db['FaxMessage'][_0x20b9('0x121')](db[_0x20b9('0xf3')],{'as':'Attachment','foreignKey':_0x20b9('0x17c')});db[_0x20b9('0x59')][_0x20b9('0x121')](db[_0x20b9('0x54')],{'as':_0x20b9('0x167'),'foreignKey':_0x20b9('0x176')});db['FaxQueue']['belongsToMany'](db[_0x20b9('0x12')],{'as':_0x20b9('0x163'),'through':_0x20b9('0x3a')});db[_0x20b9('0x179')][_0x20b9('0x123')](db['Team'],{'through':_0x20b9('0x17d'),'as':_0x20b9('0x154')});db[_0x20b9('0x5b')][_0x20b9('0x121')](db[_0x20b9('0x54')],{});db[_0x20b9('0x5b')]['belongsTo'](db['CmList'],{'as':_0x20b9('0x161'),'foreignKey':_0x20b9('0x174')});db['FaxQueueReport'][_0x20b9('0x121')](db[_0x20b9('0x15a')],{'as':_0x20b9('0x168'),'foreignKey':_0x20b9('0x15b')});db[_0x20b9('0x5b')][_0x20b9('0x121')](db['FaxInteraction'],{});db[_0x20b9('0x5b')][_0x20b9('0x121')](db[_0x20b9('0x59')],{});db[_0x20b9('0x5b')][_0x20b9('0x121')](db[_0x20b9('0x12')],{});db[_0x20b9('0x5b')][_0x20b9('0x121')](db[_0x20b9('0x179')],{});db['SmsAccount'][_0x20b9('0x117')](db['Disposition'],{'as':_0x20b9('0x15f'),'foreignKey':'SmsAccountId','onDelete':_0x20b9('0x115')});db[_0x20b9('0x5d')][_0x20b9('0x117')](db[_0x20b9('0x8a')],{'as':'Answers','foreignKey':_0x20b9('0x17e')});db[_0x20b9('0x5d')][_0x20b9('0x117')](db[_0x20b9('0x61')],{'as':_0x20b9('0x156'),'foreignKey':_0x20b9('0x17e')});db[_0x20b9('0x5d')][_0x20b9('0x117')](db['SmsInteraction'],{'as':_0x20b9('0x177')});db[_0x20b9('0x5d')][_0x20b9('0x117')](db[_0x20b9('0x17f')],{'as':_0x20b9('0x142')});db[_0x20b9('0x5d')]['belongsTo'](db['CmList'],{'as':_0x20b9('0x161'),'foreignKey':'ListId'});db[_0x20b9('0x5d')][_0x20b9('0x121')](db[_0x20b9('0x90')],{'as':_0x20b9('0x150'),'foreignKey':_0x20b9('0x151')});db[_0x20b9('0x5d')]['belongsToMany'](db[_0x20b9('0x12')],{'as':_0x20b9('0x163'),'through':_0x20b9('0x13c')});db[_0x20b9('0x17f')][_0x20b9('0x121')](db[_0x20b9('0x12')],{'onDelete':_0x20b9('0x172')});db[_0x20b9('0x17f')][_0x20b9('0x121')](db[_0x20b9('0x63')],{'onDelete':_0x20b9('0x172')});db[_0x20b9('0x17f')][_0x20b9('0x121')](db[_0x20b9('0x5d')],{'onDelete':_0x20b9('0x172')});db[_0x20b9('0x17f')][_0x20b9('0x121')](db[_0x20b9('0x8e')],{'onDelete':_0x20b9('0x172'),'foreignKey':_0x20b9('0x14f')});db['SmsApplication'][_0x20b9('0x121')](db[_0x20b9('0x97')],{'onDelete':_0x20b9('0x172'),'foreignKey':_0x20b9('0x173')});db[_0x20b9('0x5f')]['hasMany'](db[_0x20b9('0x61')],{'as':'Messages','onDelete':'cascade','foreignKey':_0x20b9('0x180')});db['SmsInteraction'][_0x20b9('0x121')](db['SmsAccount'],{'as':_0x20b9('0x167'),'foreignKey':_0x20b9('0x17e')});db[_0x20b9('0x5f')][_0x20b9('0x121')](db['CmContact'],{'as':'Contact','foreignKey':_0x20b9('0x15b')});db['SmsInteraction'][_0x20b9('0x121')](db['User'],{'as':_0x20b9('0x169'),'foreignKey':'UserId'});db[_0x20b9('0x5f')]['belongsToMany'](db[_0x20b9('0x97')],{'through':'sms_interaction_has_tags','as':_0x20b9('0x16a')});db[_0x20b9('0x5f')][_0x20b9('0x123')](db[_0x20b9('0x97')],{'through':'sms_interaction_has_tags','as':_0x20b9('0x16c')});db[_0x20b9('0x5f')][_0x20b9('0x123')](db['User'],{'as':'Users','through':_0x20b9('0x12c'),'foreignKey':_0x20b9('0x180')});db['SmsMessage'][_0x20b9('0x121')](db['User'],{'as':_0x20b9('0x12')});db[_0x20b9('0x61')][_0x20b9('0x121')](db[_0x20b9('0x15a')],{'onDelete':'cascade','as':'Contact'});db['SmsMessage'][_0x20b9('0x121')](db[_0x20b9('0x5f')],{'onDelete':_0x20b9('0x115'),'as':_0x20b9('0x16f'),'foreignKey':_0x20b9('0x180')});db['SmsMessage']['belongsTo'](db[_0x20b9('0x5d')],{'as':_0x20b9('0x167'),'foreignKey':_0x20b9('0x17e')});db[_0x20b9('0x63')][_0x20b9('0x123')](db[_0x20b9('0x12')],{'as':_0x20b9('0x163'),'through':_0x20b9('0x3c'),'foreignKey':_0x20b9('0x181')});db[_0x20b9('0x63')][_0x20b9('0x123')](db[_0x20b9('0xef')],{'through':_0x20b9('0x182'),'as':_0x20b9('0x154')});db[_0x20b9('0x64')][_0x20b9('0x117')](db[_0x20b9('0x15e')],{'as':'Dispositions','foreignKey':'OpenchannelAccountId','onDelete':_0x20b9('0x115')});db[_0x20b9('0x64')][_0x20b9('0x117')](db[_0x20b9('0x8a')],{'as':'Answers','foreignKey':_0x20b9('0x183')});db[_0x20b9('0x64')][_0x20b9('0x117')](db[_0x20b9('0x68')],{'as':_0x20b9('0x177'),'foreignKey':_0x20b9('0x183')});db[_0x20b9('0x64')][_0x20b9('0x117')](db['OpenchannelMessage'],{'as':'Messages','foreignKey':_0x20b9('0x183')});db[_0x20b9('0x64')][_0x20b9('0x117')](db[_0x20b9('0x66')],{'as':_0x20b9('0x142'),'foreignKey':_0x20b9('0x183')});db['OpenchannelAccount'][_0x20b9('0x121')](db[_0x20b9('0xfb')],{'as':_0x20b9('0x161'),'foreignKey':_0x20b9('0x174')});db['OpenchannelAccount'][_0x20b9('0x121')](db[_0x20b9('0x90')],{'as':_0x20b9('0x150'),'foreignKey':_0x20b9('0x151')});db[_0x20b9('0x64')][_0x20b9('0x123')](db[_0x20b9('0x12')],{'as':_0x20b9('0x163'),'through':_0x20b9('0x184')});db[_0x20b9('0x66')]['belongsTo'](db[_0x20b9('0x12')],{'onDelete':_0x20b9('0x172')});db[_0x20b9('0x66')][_0x20b9('0x121')](db[_0x20b9('0x6c')],{'onDelete':_0x20b9('0x172'),'foreignKey':_0x20b9('0x185')});db[_0x20b9('0x66')][_0x20b9('0x121')](db['OpenchannelAccount'],{'onDelete':_0x20b9('0x172'),'foreignKey':'OpenchannelAccountId'});db[_0x20b9('0x66')][_0x20b9('0x121')](db[_0x20b9('0x8e')],{'onDelete':'restrict','foreignKey':_0x20b9('0x14f')});db['OpenchannelApplication']['belongsTo'](db[_0x20b9('0x97')],{'onDelete':'restrict','foreignKey':_0x20b9('0x173')});db['OpenchannelInteraction'][_0x20b9('0x117')](db[_0x20b9('0x6a')],{'as':_0x20b9('0x156'),'onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x186')});db[_0x20b9('0x68')][_0x20b9('0x121')](db[_0x20b9('0x64')],{'as':_0x20b9('0x167'),'foreignKey':_0x20b9('0x183')});db[_0x20b9('0x68')][_0x20b9('0x121')](db[_0x20b9('0x15a')],{'as':_0x20b9('0x168'),'foreignKey':'ContactId'});db[_0x20b9('0x68')][_0x20b9('0x121')](db['User'],{'as':_0x20b9('0x169'),'foreignKey':_0x20b9('0x116')});db[_0x20b9('0x68')][_0x20b9('0x123')](db[_0x20b9('0x97')],{'through':_0x20b9('0x187'),'as':_0x20b9('0x16a')});db[_0x20b9('0x68')]['belongsToMany'](db[_0x20b9('0x97')],{'through':_0x20b9('0x187'),'as':_0x20b9('0x16c')});db[_0x20b9('0x68')][_0x20b9('0x123')](db[_0x20b9('0x12')],{'as':'Users','through':_0x20b9('0x12d'),'foreignKey':_0x20b9('0x186')});db[_0x20b9('0x6a')]['belongsTo'](db[_0x20b9('0x12')],{'onDelete':_0x20b9('0x115'),'as':'User'});db['OpenchannelMessage'][_0x20b9('0x121')](db['CmContact'],{'onDelete':_0x20b9('0x115'),'as':_0x20b9('0x168')});db['OpenchannelMessage'][_0x20b9('0x121')](db['OpenchannelInteraction'],{'onDelete':_0x20b9('0x115'),'as':'Interaction','foreignKey':'OpenchannelInteractionId'});db['OpenchannelMessage'][_0x20b9('0x121')](db[_0x20b9('0xf3')],{'as':_0x20b9('0xf3'),'foreignKey':_0x20b9('0x17c')});db['OpenchannelMessage'][_0x20b9('0x121')](db[_0x20b9('0x64')],{'as':'Account','foreignKey':_0x20b9('0x183')});db['OpenchannelQueue'][_0x20b9('0x123')](db['User'],{'as':'Agents','through':'UserOpenchannelQueue','foreignKey':_0x20b9('0x185')});db[_0x20b9('0x6c')][_0x20b9('0x123')](db[_0x20b9('0xef')],{'through':_0x20b9('0x188'),'as':'Teams'});db[_0x20b9('0x6e')][_0x20b9('0x117')](db[_0x20b9('0x15e')],{'as':'Dispositions','foreignKey':_0x20b9('0x170'),'onDelete':_0x20b9('0x115')});db[_0x20b9('0x6e')][_0x20b9('0x117')](db[_0x20b9('0x8a')],{'as':_0x20b9('0x160'),'foreignKey':_0x20b9('0x170')});db['ChatWebsite'][_0x20b9('0x117')](db[_0x20b9('0x7a')],{'as':_0x20b9('0x189')});db[_0x20b9('0x6e')]['hasMany'](db[_0x20b9('0x12a')],{'as':'Interactions'});db[_0x20b9('0x6e')][_0x20b9('0x117')](db[_0x20b9('0x71')],{'as':_0x20b9('0x142')});db[_0x20b9('0x6e')]['hasMany'](db['ChatMessage'],{'as':_0x20b9('0x156')});db[_0x20b9('0x6e')][_0x20b9('0x121')](db[_0x20b9('0xfb')],{'as':'List','foreignKey':_0x20b9('0x174')});db[_0x20b9('0x6e')][_0x20b9('0x121')](db[_0x20b9('0x8e')],{'as':_0x20b9('0x8e'),'foreignKey':'IntervalId'});db[_0x20b9('0x6e')]['belongsTo'](db[_0x20b9('0x45')],{'as':_0x20b9('0x45'),'foreignKey':_0x20b9('0x15c')});db['ChatWebsite'][_0x20b9('0x121')](db[_0x20b9('0x90')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db['ChatWebsite'][_0x20b9('0x123')](db[_0x20b9('0x12')],{'as':'Agents','through':_0x20b9('0x138')});db[_0x20b9('0x18a')][_0x20b9('0x121')](db[_0x20b9('0x64')],{});db[_0x20b9('0x18a')][_0x20b9('0x121')](db[_0x20b9('0xfb')],{'as':_0x20b9('0x161'),'foreignKey':_0x20b9('0x174')});db[_0x20b9('0x18a')]['belongsTo'](db[_0x20b9('0x15a')],{'as':_0x20b9('0x168'),'foreignKey':_0x20b9('0x15b')});db[_0x20b9('0x18a')]['belongsTo'](db[_0x20b9('0x68')],{});db[_0x20b9('0x18a')][_0x20b9('0x121')](db[_0x20b9('0x6a')],{});db[_0x20b9('0x18a')][_0x20b9('0x121')](db[_0x20b9('0x12')],{});db['OpenchannelQueueReport'][_0x20b9('0x121')](db[_0x20b9('0x6c')],{});db[_0x20b9('0x71')][_0x20b9('0x121')](db[_0x20b9('0x12')],{'as':_0x20b9('0x18b'),'foreignKey':_0x20b9('0x116'),'onDelete':'restrict'});db[_0x20b9('0x71')]['belongsTo'](db[_0x20b9('0x77')],{'as':'Queue','foreignKey':_0x20b9('0x18c'),'onDelete':_0x20b9('0x172')});db[_0x20b9('0x71')][_0x20b9('0x121')](db[_0x20b9('0x6e')],{'as':'Website','foreignKey':'ChatWebsiteId','onDelete':_0x20b9('0x172')});db[_0x20b9('0x71')][_0x20b9('0x121')](db['Tag'],{'onDelete':_0x20b9('0x172'),'foreignKey':_0x20b9('0x173')});db[_0x20b9('0x12a')]['hasMany'](db[_0x20b9('0x73')],{'as':_0x20b9('0x156'),'onDelete':'cascade','foreignKey':_0x20b9('0x18d')});db[_0x20b9('0x12a')]['belongsTo'](db[_0x20b9('0x6e')],{'as':_0x20b9('0x167'),'foreignKey':'ChatWebsiteId'});db[_0x20b9('0x12a')][_0x20b9('0x121')](db[_0x20b9('0x15a')],{'as':'Contact','foreignKey':_0x20b9('0x15b')});db[_0x20b9('0x12a')]['belongsTo'](db['User'],{'as':_0x20b9('0x169'),'foreignKey':_0x20b9('0x116')});db['ChatInteraction'][_0x20b9('0x123')](db[_0x20b9('0x97')],{'through':_0x20b9('0x18e'),'as':_0x20b9('0x16a')});db['ChatInteraction'][_0x20b9('0x123')](db[_0x20b9('0x97')],{'through':_0x20b9('0x18e'),'as':_0x20b9('0x16c')});db[_0x20b9('0x12a')]['belongsToMany'](db[_0x20b9('0x12')],{'as':_0x20b9('0x16d'),'through':_0x20b9('0x18f'),'foreignKey':_0x20b9('0x18d')});db[_0x20b9('0x73')][_0x20b9('0x121')](db[_0x20b9('0x12')],{'onDelete':_0x20b9('0x115'),'as':_0x20b9('0x12')});db[_0x20b9('0x73')][_0x20b9('0x121')](db[_0x20b9('0x15a')],{'onDelete':_0x20b9('0x115'),'as':_0x20b9('0x168'),'foreignKey':_0x20b9('0x15b')});db[_0x20b9('0x73')]['belongsTo'](db[_0x20b9('0x12a')],{'onDelete':_0x20b9('0x115'),'as':_0x20b9('0x16f'),'foreignKey':_0x20b9('0x18d')});db[_0x20b9('0x73')][_0x20b9('0x121')](db[_0x20b9('0xf3')],{'as':'Attachment','foreignKey':_0x20b9('0x17c')});db[_0x20b9('0x73')][_0x20b9('0x121')](db['ChatWebsite'],{'as':_0x20b9('0x167'),'foreignKey':'ChatWebsiteId'});db[_0x20b9('0x75')][_0x20b9('0x117')](db[_0x20b9('0xf3')],{'as':_0x20b9('0x16e'),'foreignKey':_0x20b9('0x171'),'onDelete':_0x20b9('0x115'),'hooks':!![]});db[_0x20b9('0x75')][_0x20b9('0x121')](db[_0x20b9('0x15a')],{'onDelete':_0x20b9('0x115'),'as':_0x20b9('0x168'),'foreignKey':_0x20b9('0x15b')});db[_0x20b9('0x75')][_0x20b9('0x121')](db['ChatWebsite'],{'as':_0x20b9('0x167'),'foreignKey':_0x20b9('0x170')});db['ChatQueue'][_0x20b9('0x123')](db['User'],{'as':_0x20b9('0x163'),'through':_0x20b9('0x37'),'hooks':!![]});db[_0x20b9('0x77')][_0x20b9('0x123')](db['Team'],{'through':'team_has_chat_queues','as':_0x20b9('0x154')});db[_0x20b9('0x79')][_0x20b9('0x117')](db[_0x20b9('0xdc')],{'as':_0x20b9('0x156'),'foreignKey':'ChatGroupId','onDelete':_0x20b9('0x115')});db[_0x20b9('0x79')][_0x20b9('0x123')](db[_0x20b9('0x12')],{'as':_0x20b9('0x145'),'through':_0x20b9('0x124')});db[_0x20b9('0x7a')][_0x20b9('0x121')](db['ChatWebsite'],{'as':'Website','foreignKey':_0x20b9('0x170')});db[_0x20b9('0x7c')][_0x20b9('0x117')](db['CmContact'],{'as':_0x20b9('0x190'),'foreignKey':_0x20b9('0x191')});db[_0x20b9('0x15a')][_0x20b9('0x117')](db[_0x20b9('0x7e')],{'as':'Hoppers','foreignKey':'ContactId'});db[_0x20b9('0x15a')]['hasMany'](db['CmHopperFinal'],{'as':_0x20b9('0x11a'),'foreignKey':_0x20b9('0x15b')});db[_0x20b9('0x15a')]['hasMany'](db['CmHopperHistory'],{'as':'HopperHistories','foreignKey':'ContactId'});db[_0x20b9('0x15a')][_0x20b9('0x117')](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':_0x20b9('0x15b')});db['CmContact'][_0x20b9('0x117')](db[_0x20b9('0x14a')],{'as':_0x20b9('0x14b'),'foreignKey':_0x20b9('0x15b')});db[_0x20b9('0x15a')][_0x20b9('0x117')](db[_0x20b9('0x68')],{'as':_0x20b9('0x11c'),'foreignKey':_0x20b9('0x15b'),'onDelete':'restrict'});db['CmContact'][_0x20b9('0x117')](db[_0x20b9('0x12a')],{'as':'ChatInteractions','foreignKey':_0x20b9('0x15b'),'onDelete':_0x20b9('0x172')});db[_0x20b9('0x15a')]['hasMany'](db[_0x20b9('0x5f')],{'as':'SmsInteractions','foreignKey':_0x20b9('0x15b'),'onDelete':_0x20b9('0x172')});db[_0x20b9('0x15a')][_0x20b9('0x117')](db[_0x20b9('0x57')],{'as':_0x20b9('0x11e'),'foreignKey':'ContactId','onDelete':_0x20b9('0x172')});db[_0x20b9('0x15a')][_0x20b9('0x117')](db[_0x20b9('0x49')],{'as':_0x20b9('0x128'),'foreignKey':_0x20b9('0x15b'),'onDelete':_0x20b9('0x172')});db[_0x20b9('0x15a')][_0x20b9('0x121')](db[_0x20b9('0x7c')],{'as':_0x20b9('0x192'),'foreignKey':_0x20b9('0x191')});db[_0x20b9('0x15a')][_0x20b9('0x121')](db[_0x20b9('0xfb')],{'as':_0x20b9('0x161'),'foreignKey':_0x20b9('0x174'),'onDelete':_0x20b9('0x115')});db[_0x20b9('0x15a')][_0x20b9('0x123')](db['User'],{'as':_0x20b9('0x16d'),'through':_0x20b9('0x125')});db[_0x20b9('0x15a')][_0x20b9('0x123')](db[_0x20b9('0x97')],{'as':_0x20b9('0x16a'),'through':'cm_contact_has_tags'});db[_0x20b9('0x15a')][_0x20b9('0x123')](db[_0x20b9('0x97')],{'through':_0x20b9('0x193'),'as':_0x20b9('0x16c')});db[_0x20b9('0x7e')]['belongsTo'](db[_0x20b9('0x15a')],{'as':_0x20b9('0x168'),'foreignKey':_0x20b9('0x15b'),'onDelete':_0x20b9('0x115')});db['CmHopper']['belongsTo'](db[_0x20b9('0xfb')],{'as':_0x20b9('0x161'),'foreignKey':'ListId','onDelete':_0x20b9('0x115')});db[_0x20b9('0x7e')][_0x20b9('0x121')](db[_0x20b9('0x12')],{'as':_0x20b9('0x18b'),'foreignKey':_0x20b9('0x116')});db['CmHopper'][_0x20b9('0x121')](db['VoiceQueue'],{'as':_0x20b9('0x194'),'foreignKey':_0x20b9('0x146'),'onDelete':_0x20b9('0x115')});db[_0x20b9('0x7e')][_0x20b9('0x121')](db[_0x20b9('0xf1')],{'as':'Campaign','foreignKey':'CampaignId','onDelete':_0x20b9('0x115')});db[_0x20b9('0x7e')][_0x20b9('0x121')](db[_0x20b9('0x12')],{'as':_0x20b9('0x169'),'foreignKey':_0x20b9('0x195')});db['CmHopperBlack'][_0x20b9('0x121')](db['CmContact'],{'as':'Contact','foreignKey':_0x20b9('0x15b'),'onDelete':_0x20b9('0x115')});db['CmHopperBlack']['belongsTo'](db[_0x20b9('0xfb')],{'as':_0x20b9('0x161'),'foreignKey':_0x20b9('0x174'),'onDelete':_0x20b9('0x115')});db['CmHopperBlack'][_0x20b9('0x121')](db[_0x20b9('0x1d')],{'as':_0x20b9('0x194'),'foreignKey':_0x20b9('0x146'),'onDelete':'cascade'});db[_0x20b9('0x80')][_0x20b9('0x121')](db[_0x20b9('0xf1')],{'as':_0x20b9('0xf1'),'foreignKey':_0x20b9('0x196'),'onDelete':_0x20b9('0x115')});db[_0x20b9('0x89')][_0x20b9('0x117')](db[_0x20b9('0x8d')],{'as':{'plural':_0x20b9('0x197'),'singular':_0x20b9('0x198')},'foreignKey':_0x20b9('0x199'),'onDelete':_0x20b9('0x115'),'hooks':!![]});db[_0x20b9('0x89')][_0x20b9('0x117')](db[_0x20b9('0x8d')],{'as':{'plural':'Any','singular':'OneAny'},'foreignKey':_0x20b9('0x19a'),'onDelete':_0x20b9('0x115'),'hooks':!![]});db[_0x20b9('0x89')]['hasMany'](db[_0x20b9('0x87')],{'as':_0x20b9('0x19b'),'foreignKey':_0x20b9('0x19c'),'onDelete':_0x20b9('0x115'),'hooks':!![]});db[_0x20b9('0x15e')][_0x20b9('0x117')](db[_0x20b9('0x15e')],{'as':_0x20b9('0x15f'),'foreignKey':'ParentId','onDelete':_0x20b9('0x115')});db['Interval'][_0x20b9('0x117')](db[_0x20b9('0x8e')],{'as':_0x20b9('0x19d'),'foreignKey':_0x20b9('0x14f'),'onDelete':_0x20b9('0x115'),'hooks':!![],'required':![]});db[_0x20b9('0x8e')][_0x20b9('0x117')](db['VoiceExtension'],{'as':'Extensions','foreignKey':_0x20b9('0x14f'),'onDelete':_0x20b9('0x172')});db['Interval'][_0x20b9('0x117')](db[_0x20b9('0x4d')],{'as':_0x20b9('0x19e'),'foreignKey':_0x20b9('0x14f')});db[_0x20b9('0x8e')][_0x20b9('0x117')](db[_0x20b9('0x71')],{'as':_0x20b9('0x19f'),'foreignKey':_0x20b9('0x14f')});db['Interval'][_0x20b9('0x117')](db[_0x20b9('0x178')],{'as':'FaxApplications','foreignKey':_0x20b9('0x14f')});db['Interval'][_0x20b9('0x117')](db['SmsApplication'],{'as':_0x20b9('0x1a0'),'foreignKey':_0x20b9('0x14f')});db[_0x20b9('0x94')][_0x20b9('0x121')](db[_0x20b9('0x45')],{});db['Schedule'][_0x20b9('0x121')](db[_0x20b9('0xa3')],{'foreignKey':_0x20b9('0x1a1')});db[_0x20b9('0x94')]['belongsTo'](db['AnalyticCustomReport'],{'foreignKey':_0x20b9('0x1a2')});db[_0x20b9('0x95')][_0x20b9('0x123')](db['VoiceMusicOnHold'],{'as':_0x20b9('0x1a3'),'through':_0x20b9('0x144'),'onDelete':_0x20b9('0x172')});db[_0x20b9('0x97')]['belongsToMany'](db[_0x20b9('0x15a')],{'through':'cm_contact_has_tags'});db[_0x20b9('0x97')]['belongsToMany'](db[_0x20b9('0x12a')],{'through':_0x20b9('0x18e')});db[_0x20b9('0x97')][_0x20b9('0x123')](db[_0x20b9('0x49')],{'through':_0x20b9('0x16b')});db[_0x20b9('0x97')][_0x20b9('0x123')](db[_0x20b9('0x5f')],{'through':_0x20b9('0x1a4')});db['Tag'][_0x20b9('0x123')](db[_0x20b9('0x57')],{'through':_0x20b9('0x17b')});db['Tag'][_0x20b9('0x123')](db[_0x20b9('0x68')],{'through':_0x20b9('0x187')});db[_0x20b9('0x97')]['belongsToMany'](db[_0x20b9('0x108')],{'through':'whatsapp_interaction_has_tags'});db[_0x20b9('0x9a')][_0x20b9('0x117')](db[_0x20b9('0x8d')],{'as':{'plural':'AllConditions','singular':_0x20b9('0x1a5')},'foreignKey':_0x20b9('0x1a6'),'onDelete':_0x20b9('0x115'),'hooks':!![]});db[_0x20b9('0x9a')][_0x20b9('0x117')](db['Condition'],{'as':{'plural':'AnyConditions','singular':_0x20b9('0x1a7')},'foreignKey':_0x20b9('0x1a8'),'onDelete':'cascade','hooks':!![]});db[_0x20b9('0x9a')][_0x20b9('0x117')](db[_0x20b9('0x87')],{'as':_0x20b9('0x19b'),'foreignKey':_0x20b9('0x1a9'),'onDelete':_0x20b9('0x115'),'hooks':!![]});db['AnalyticCustomReport'][_0x20b9('0x117')](db[_0x20b9('0xa7')],{'as':_0x20b9('0x1aa'),'onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x1a2'),'hooks':!![]});db[_0x20b9('0xa3')]['hasMany'](db[_0x20b9('0xa7')],{'as':_0x20b9('0x1aa'),'onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x1a1')});db['AnalyticMetric'][_0x20b9('0x117')](db['AnalyticFieldReport'],{'as':_0x20b9('0x1aa'),'onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x1ab')});db[_0x20b9('0xa7')][_0x20b9('0x121')](db['AnalyticMetric'],{'foreignKey':_0x20b9('0x1ab')});db[_0x20b9('0xab')][_0x20b9('0x117')](db[_0x20b9('0xad')],{'as':'Configurations','onDelete':'cascade','foreignKey':'AccountId'});db['SalesforceConfiguration']['hasMany'](db[_0x20b9('0xaf')],{'as':'Subjects','onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x1ac')});db[_0x20b9('0xad')][_0x20b9('0x117')](db[_0x20b9('0xaf')],{'as':'Descriptions','onDelete':_0x20b9('0x115'),'foreignKey':'DescriptionId'});db[_0x20b9('0xad')][_0x20b9('0x117')](db['SalesforceField'],{'as':_0x20b9('0x1aa'),'onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x1ad')});db[_0x20b9('0xad')][_0x20b9('0x121')](db[_0x20b9('0xab')],{'as':_0x20b9('0x167'),'foreignKey':_0x20b9('0x1ae')});db[_0x20b9('0xaf')][_0x20b9('0x117')](db[_0x20b9('0xaf')],{'as':_0x20b9('0x1af'),'foreignKey':_0x20b9('0x1ac')});db['SalesforceField'][_0x20b9('0x117')](db[_0x20b9('0xaf')],{'as':'Description','foreignKey':_0x20b9('0x1b0')});db[_0x20b9('0xaf')]['hasMany'](db[_0x20b9('0xaf')],{'as':_0x20b9('0x1b1'),'foreignKey':_0x20b9('0x1ad')});db[_0x20b9('0xaf')]['belongsTo'](db[_0x20b9('0x9c')],{'as':_0x20b9('0x9c'),'foreignKey':_0x20b9('0x1b2')});db[_0x20b9('0xb0')]['hasMany'](db['SugarcrmConfiguration'],{'as':_0x20b9('0x1b3'),'onDelete':'cascade','foreignKey':'AccountId'});db['SugarcrmConfiguration']['hasMany'](db[_0x20b9('0x1b4')],{'as':'Subjects','onDelete':'cascade','foreignKey':_0x20b9('0x1ac')});db[_0x20b9('0xb2')][_0x20b9('0x117')](db[_0x20b9('0x1b4')],{'as':_0x20b9('0x1b5'),'onDelete':'cascade','foreignKey':_0x20b9('0x1b0')});db[_0x20b9('0xb2')]['hasMany'](db[_0x20b9('0x1b4')],{'as':_0x20b9('0x1aa'),'onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x1ad')});db[_0x20b9('0xb2')][_0x20b9('0x121')](db[_0x20b9('0xb0')],{'as':_0x20b9('0x167'),'foreignKey':'AccountId'});db['SugarcrmField'][_0x20b9('0x117')](db[_0x20b9('0x1b4')],{'as':_0x20b9('0x1af'),'foreignKey':_0x20b9('0x1ac')});db[_0x20b9('0x1b4')][_0x20b9('0x117')](db['SugarcrmField'],{'as':'Description','foreignKey':'DescriptionId'});db[_0x20b9('0x1b4')][_0x20b9('0x117')](db[_0x20b9('0x1b4')],{'as':'Field','foreignKey':'FieldId'});db[_0x20b9('0x1b4')][_0x20b9('0x121')](db[_0x20b9('0x9c')],{'as':_0x20b9('0x9c'),'foreignKey':_0x20b9('0x1b2')});db[_0x20b9('0xb5')][_0x20b9('0x117')](db['DeskConfiguration'],{'as':'Configurations','onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x1ae')});db['DeskConfiguration'][_0x20b9('0x117')](db[_0x20b9('0x1b6')],{'as':_0x20b9('0x1b7'),'onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x1ac')});db[_0x20b9('0x1b8')]['hasMany'](db[_0x20b9('0x1b6')],{'as':_0x20b9('0x1b5'),'onDelete':'cascade','foreignKey':_0x20b9('0x1b0')});db[_0x20b9('0x1b8')][_0x20b9('0x117')](db[_0x20b9('0x1b6')],{'as':_0x20b9('0x1aa'),'onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x1ad')});db[_0x20b9('0x1b8')]['belongsTo'](db[_0x20b9('0xb5')],{'as':_0x20b9('0x167'),'foreignKey':_0x20b9('0x1ae')});db[_0x20b9('0x1b8')][_0x20b9('0x123')](db['Tag'],{'through':_0x20b9('0x1b9')});db[_0x20b9('0x1b6')][_0x20b9('0x117')](db[_0x20b9('0x1b6')],{'as':_0x20b9('0x1af'),'foreignKey':_0x20b9('0x1ac')});db[_0x20b9('0x1b6')][_0x20b9('0x117')](db[_0x20b9('0x1b6')],{'as':_0x20b9('0x1ba'),'foreignKey':_0x20b9('0x1b0')});db[_0x20b9('0x1b6')][_0x20b9('0x117')](db[_0x20b9('0x1b6')],{'as':'Field','foreignKey':'FieldId'});db[_0x20b9('0x1b6')][_0x20b9('0x121')](db[_0x20b9('0x9c')],{'as':_0x20b9('0x9c'),'foreignKey':_0x20b9('0x1b2')});db[_0x20b9('0xb9')]['hasMany'](db[_0x20b9('0xba')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0x20b9('0x1ae')});db[_0x20b9('0xba')][_0x20b9('0x117')](db['ZohoField'],{'as':_0x20b9('0x1b7'),'onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x1ac')});db[_0x20b9('0xba')]['hasMany'](db['ZohoField'],{'as':_0x20b9('0x1b5'),'onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x1b0')});db[_0x20b9('0xba')]['hasMany'](db['ZohoField'],{'as':_0x20b9('0x1aa'),'onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x1ad')});db[_0x20b9('0xba')][_0x20b9('0x121')](db['ZohoAccount'],{'as':_0x20b9('0x167'),'foreignKey':'AccountId'});db[_0x20b9('0x1bb')][_0x20b9('0x117')](db[_0x20b9('0x1bb')],{'as':_0x20b9('0x1af'),'foreignKey':_0x20b9('0x1ac')});db[_0x20b9('0x1bb')][_0x20b9('0x117')](db[_0x20b9('0x1bb')],{'as':_0x20b9('0x1ba'),'foreignKey':_0x20b9('0x1b0')});db[_0x20b9('0x1bb')][_0x20b9('0x117')](db[_0x20b9('0x1bb')],{'as':_0x20b9('0x1b1'),'foreignKey':_0x20b9('0x1ad')});db[_0x20b9('0x1bb')]['belongsTo'](db[_0x20b9('0x9c')],{'as':_0x20b9('0x9c'),'foreignKey':_0x20b9('0x1b2')});db['ZendeskAccount'][_0x20b9('0x117')](db[_0x20b9('0xbe')],{'as':_0x20b9('0x1b3'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0x20b9('0xbe')][_0x20b9('0x117')](db['ZendeskField'],{'as':'Subjects','foreignKey':'SubjectId'});db[_0x20b9('0xbe')]['hasMany'](db[_0x20b9('0xc0')],{'as':_0x20b9('0x1b5'),'foreignKey':_0x20b9('0x1b0')});db[_0x20b9('0xbe')][_0x20b9('0x117')](db[_0x20b9('0xc0')],{'as':_0x20b9('0x1aa'),'foreignKey':'FieldId'});db['ZendeskConfiguration'][_0x20b9('0x121')](db['ZendeskAccount'],{'as':_0x20b9('0x167'),'foreignKey':_0x20b9('0x1ae')});db[_0x20b9('0xbe')][_0x20b9('0x123')](db['Tag'],{'through':_0x20b9('0x1bc')});db[_0x20b9('0xc0')][_0x20b9('0x117')](db[_0x20b9('0xc0')],{'as':_0x20b9('0x1af'),'foreignKey':_0x20b9('0x1ac')});db['ZendeskField'][_0x20b9('0x117')](db[_0x20b9('0xc0')],{'as':_0x20b9('0x1ba'),'foreignKey':_0x20b9('0x1b0')});db['ZendeskField']['hasMany'](db[_0x20b9('0xc0')],{'as':_0x20b9('0x1b1'),'foreignKey':_0x20b9('0x1ad')});db[_0x20b9('0xc0')][_0x20b9('0x121')](db['Variable'],{'as':_0x20b9('0x9c'),'foreignKey':_0x20b9('0x1b2')});db[_0x20b9('0xc1')]['hasMany'](db[_0x20b9('0x1bd')],{'as':'Configurations','onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x1ae')});db[_0x20b9('0x1bd')]['hasMany'](db['FreshdeskField'],{'as':_0x20b9('0x1b7'),'onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x1ac')});db[_0x20b9('0x1bd')][_0x20b9('0x117')](db['FreshdeskField'],{'as':_0x20b9('0x1b5'),'onDelete':'cascade','foreignKey':_0x20b9('0x1b0')});db[_0x20b9('0x1bd')][_0x20b9('0x117')](db[_0x20b9('0xc3')],{'as':_0x20b9('0x1aa'),'onDelete':'cascade','foreignKey':_0x20b9('0x1ad')});db[_0x20b9('0x1bd')][_0x20b9('0x121')](db[_0x20b9('0xc1')],{'as':_0x20b9('0x167'),'foreignKey':_0x20b9('0x1ae')});db['FreshdeskConfiguration'][_0x20b9('0x123')](db[_0x20b9('0x97')],{'through':_0x20b9('0x1be')});db[_0x20b9('0xc3')]['hasMany'](db[_0x20b9('0xc3')],{'as':'Subject','foreignKey':_0x20b9('0x1ac')});db[_0x20b9('0xc3')][_0x20b9('0x117')](db[_0x20b9('0xc3')],{'as':_0x20b9('0x1ba'),'foreignKey':_0x20b9('0x1b0')});db[_0x20b9('0xc3')][_0x20b9('0x117')](db[_0x20b9('0xc3')],{'as':_0x20b9('0x1b1'),'foreignKey':_0x20b9('0x1ad')});db[_0x20b9('0xc3')][_0x20b9('0x121')](db['Variable'],{'as':_0x20b9('0x9c'),'foreignKey':'VariableId'});db['VtigerAccount']['hasMany'](db[_0x20b9('0x1bf')],{'as':_0x20b9('0x1b3'),'onDelete':_0x20b9('0x115'),'foreignKey':'AccountId'});db[_0x20b9('0x1bf')][_0x20b9('0x117')](db[_0x20b9('0xc8')],{'as':_0x20b9('0x1b7'),'foreignKey':_0x20b9('0x1ac')});db[_0x20b9('0x1bf')][_0x20b9('0x117')](db[_0x20b9('0xc8')],{'as':_0x20b9('0x1b5'),'foreignKey':_0x20b9('0x1b0')});db[_0x20b9('0x1bf')]['hasMany'](db[_0x20b9('0xc8')],{'as':_0x20b9('0x1aa'),'foreignKey':_0x20b9('0x1ad')});db[_0x20b9('0x1bf')]['belongsTo'](db[_0x20b9('0xc5')],{'as':_0x20b9('0x167'),'foreignKey':_0x20b9('0x1ae')});db[_0x20b9('0xc8')][_0x20b9('0x117')](db[_0x20b9('0xc8')],{'as':_0x20b9('0x1af'),'foreignKey':_0x20b9('0x1ac')});db[_0x20b9('0xc8')][_0x20b9('0x117')](db[_0x20b9('0xc8')],{'as':_0x20b9('0x1ba'),'foreignKey':_0x20b9('0x1b0')});db[_0x20b9('0xc8')][_0x20b9('0x117')](db[_0x20b9('0xc8')],{'as':_0x20b9('0x1b1'),'foreignKey':'FieldId'});db[_0x20b9('0xc8')][_0x20b9('0x121')](db[_0x20b9('0x9c')],{'as':_0x20b9('0x9c'),'foreignKey':_0x20b9('0x1b2')});db['ServicenowAccount']['hasMany'](db[_0x20b9('0xcb')],{'as':_0x20b9('0x1b3'),'onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x1ae')});db[_0x20b9('0xcb')][_0x20b9('0x117')](db['ServicenowField'],{'as':_0x20b9('0x1b7'),'foreignKey':_0x20b9('0x1ac')});db[_0x20b9('0xcb')][_0x20b9('0x117')](db['ServicenowField'],{'as':_0x20b9('0x1b5'),'foreignKey':'DescriptionId'});db[_0x20b9('0xcb')][_0x20b9('0x117')](db[_0x20b9('0xcd')],{'as':_0x20b9('0x1aa'),'foreignKey':_0x20b9('0x1ad')});db[_0x20b9('0xcb')][_0x20b9('0x121')](db[_0x20b9('0xca')],{'as':'Account','foreignKey':_0x20b9('0x1ae')});db[_0x20b9('0xcd')][_0x20b9('0x117')](db[_0x20b9('0xcd')],{'as':_0x20b9('0x1af'),'foreignKey':'SubjectId'});db[_0x20b9('0xcd')][_0x20b9('0x117')](db[_0x20b9('0xcd')],{'as':_0x20b9('0x1ba'),'foreignKey':_0x20b9('0x1b0')});db[_0x20b9('0xcd')][_0x20b9('0x117')](db[_0x20b9('0xcd')],{'as':_0x20b9('0x1b1'),'foreignKey':_0x20b9('0x1ad')});db[_0x20b9('0xcd')][_0x20b9('0x121')](db[_0x20b9('0x9c')],{'as':_0x20b9('0x9c'),'foreignKey':_0x20b9('0x1b2')});db[_0x20b9('0xcf')][_0x20b9('0x117')](db['Dynamics365Configuration'],{'as':_0x20b9('0x1b3'),'onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x1ae')});db[_0x20b9('0xd1')]['hasMany'](db[_0x20b9('0xd3')],{'as':_0x20b9('0x1b7'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0x20b9('0xd1')]['hasMany'](db[_0x20b9('0xd3')],{'as':_0x20b9('0x1b5'),'onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x1b0')});db[_0x20b9('0xd1')][_0x20b9('0x117')](db[_0x20b9('0xd3')],{'as':'Fields','onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x1ad')});db[_0x20b9('0xd1')][_0x20b9('0x121')](db['Dynamics365Account'],{'as':_0x20b9('0x167'),'foreignKey':_0x20b9('0x1ae')});db[_0x20b9('0xd3')]['hasMany'](db[_0x20b9('0xd3')],{'as':_0x20b9('0x1af'),'foreignKey':_0x20b9('0x1ac')});db[_0x20b9('0xd3')]['hasMany'](db[_0x20b9('0xd3')],{'as':_0x20b9('0x1ba'),'foreignKey':_0x20b9('0x1b0')});db[_0x20b9('0xd3')][_0x20b9('0x117')](db[_0x20b9('0xd3')],{'as':_0x20b9('0x1b1'),'foreignKey':_0x20b9('0x1ad')});db[_0x20b9('0xd3')][_0x20b9('0x121')](db[_0x20b9('0x9c')],{'as':_0x20b9('0x9c'),'foreignKey':'VariableId'});db[_0x20b9('0xd4')]['hasMany'](db[_0x20b9('0x1c0')],{'as':_0x20b9('0x1b3'),'onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x1ae')});db[_0x20b9('0x1c0')][_0x20b9('0x117')](db[_0x20b9('0xd6')],{'as':'Subjects','foreignKey':'SubjectId'});db[_0x20b9('0x1c0')]['hasMany'](db[_0x20b9('0xd6')],{'as':_0x20b9('0x1b5'),'foreignKey':_0x20b9('0x1b0')});db[_0x20b9('0x1c0')][_0x20b9('0x117')](db[_0x20b9('0xd6')],{'as':_0x20b9('0x1aa'),'foreignKey':_0x20b9('0x1ad')});db[_0x20b9('0x1c0')][_0x20b9('0x121')](db['FreshsalesAccount'],{'as':_0x20b9('0x167'),'foreignKey':_0x20b9('0x1ae')});db[_0x20b9('0xd6')][_0x20b9('0x117')](db['FreshsalesField'],{'as':_0x20b9('0x1af'),'foreignKey':'SubjectId'});db[_0x20b9('0xd6')][_0x20b9('0x117')](db[_0x20b9('0xd6')],{'as':_0x20b9('0x1ba'),'foreignKey':_0x20b9('0x1b0')});db[_0x20b9('0xd6')][_0x20b9('0x117')](db['FreshsalesField'],{'as':_0x20b9('0x1b1'),'foreignKey':_0x20b9('0x1ad')});db['FreshsalesField'][_0x20b9('0x121')](db[_0x20b9('0x9c')],{'as':_0x20b9('0x9c'),'foreignKey':_0x20b9('0x1b2')});db[_0x20b9('0xda')]['belongsTo'](db[_0x20b9('0x6e')],{});db[_0x20b9('0xda')][_0x20b9('0x121')](db['CmList'],{'as':'List','foreignKey':'ListId'});db[_0x20b9('0xda')]['belongsTo'](db[_0x20b9('0x15a')],{'as':'Contact','foreignKey':_0x20b9('0x15b')});db[_0x20b9('0xda')]['belongsTo'](db[_0x20b9('0x12a')],{});db[_0x20b9('0xda')][_0x20b9('0x121')](db[_0x20b9('0x73')],{});db['ChatQueueReport']['belongsTo'](db[_0x20b9('0x12')],{});db[_0x20b9('0xda')][_0x20b9('0x121')](db['ChatQueue'],{});db[_0x20b9('0xdc')]['belongsTo'](db[_0x20b9('0x12')],{'onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x1c1')});db['ChatInternalMessage'][_0x20b9('0x121')](db[_0x20b9('0x12')],{'onDelete':_0x20b9('0x115'),'foreignKey':_0x20b9('0x1c2')});db['JscriptySessionReport'][_0x20b9('0x117')](db[_0x20b9('0x1c3')],{'foreignKey':_0x20b9('0x1c4'),'onDelete':_0x20b9('0x115')});db[_0x20b9('0x14a')][_0x20b9('0x117')](db[_0x20b9('0xde')],{'foreignKey':'SessionId','onDelete':'cascade'});db[_0x20b9('0xe1')]['belongsTo'](db['SmsAccount'],{});db[_0x20b9('0xe1')][_0x20b9('0x121')](db[_0x20b9('0xfb')],{'as':_0x20b9('0x161'),'foreignKey':_0x20b9('0x174')});db[_0x20b9('0xe1')][_0x20b9('0x121')](db[_0x20b9('0x15a')],{'as':_0x20b9('0x168'),'foreignKey':'ContactId'});db['SmsQueueReport'][_0x20b9('0x121')](db[_0x20b9('0x5f')],{});db[_0x20b9('0xe1')]['belongsTo'](db[_0x20b9('0x61')],{});db['SmsQueueReport']['belongsTo'](db['User'],{});db['SmsQueueReport'][_0x20b9('0x121')](db[_0x20b9('0x63')],{});db[_0x20b9('0x1c5')][_0x20b9('0x117')](db[_0x20b9('0x14a')],{'foreignKey':_0x20b9('0x1c6')});db[_0x20b9('0x1c5')][_0x20b9('0x117')](db[_0x20b9('0x1c3')],{'foreignKey':_0x20b9('0x1c6')});db[_0x20b9('0x1c5')][_0x20b9('0x117')](db[_0x20b9('0xde')],{'foreignKey':'ProjectId'});db[_0x20b9('0xe9')][_0x20b9('0x123')](db[_0x20b9('0x12')],{'as':'Users','through':_0x20b9('0x141')});db[_0x20b9('0xef')]['belongsToMany'](db['User'],{'as':'Agents','through':_0x20b9('0x127')});db[_0x20b9('0xef')]['belongsToMany'](db[_0x20b9('0x1d')],{'through':_0x20b9('0x112'),'as':'VoiceQueues'});db[_0x20b9('0xef')][_0x20b9('0x123')](db[_0x20b9('0x47')],{'through':'team_has_mail_queues','as':_0x20b9('0x12e')});db[_0x20b9('0xef')][_0x20b9('0x123')](db['ChatQueue'],{'through':_0x20b9('0x1c7'),'as':_0x20b9('0x12f')});db[_0x20b9('0xef')]['belongsToMany'](db[_0x20b9('0x179')],{'through':_0x20b9('0x17d'),'as':_0x20b9('0x130')});db[_0x20b9('0xef')]['belongsToMany'](db[_0x20b9('0x63')],{'through':_0x20b9('0x182'),'as':_0x20b9('0x131')});db['Team']['belongsToMany'](db['OpenchannelQueue'],{'through':_0x20b9('0x188'),'as':_0x20b9('0x132')});db[_0x20b9('0xef')][_0x20b9('0x123')](db[_0x20b9('0x10e')],{'through':_0x20b9('0x1c8'),'as':_0x20b9('0x134')});db[_0x20b9('0xf1')][_0x20b9('0x117')](db['CmHopper'],{'as':_0x20b9('0x147'),'foreignKey':_0x20b9('0x196')});db['Campaign'][_0x20b9('0x117')](db[_0x20b9('0x82')],{'as':_0x20b9('0x11a'),'foreignKey':_0x20b9('0x196')});db[_0x20b9('0xf1')]['hasMany'](db[_0x20b9('0x83')],{'as':_0x20b9('0x148'),'foreignKey':_0x20b9('0x196')});db[_0x20b9('0xf1')][_0x20b9('0x117')](db[_0x20b9('0x80')],{'as':_0x20b9('0x149'),'foreignKey':_0x20b9('0x196')});db[_0x20b9('0xf1')]['belongsTo'](db[_0x20b9('0x30')],{'as':'Trunk','foreignKey':_0x20b9('0x14c')});db['Campaign'][_0x20b9('0x121')](db[_0x20b9('0x30')],{'as':_0x20b9('0x14d'),'foreignKey':_0x20b9('0x14e')});db[_0x20b9('0xf1')]['belongsTo'](db[_0x20b9('0x8e')],{'as':_0x20b9('0x8e'),'foreignKey':_0x20b9('0x14f')});db[_0x20b9('0xf1')][_0x20b9('0x121')](db[_0x20b9('0xe9')],{'as':_0x20b9('0xe9'),'foreignKey':'SquareProjectId'});db['Campaign'][_0x20b9('0x123')](db[_0x20b9('0xfb')],{'as':_0x20b9('0x152'),'through':_0x20b9('0x1c9')});db['Campaign'][_0x20b9('0x123')](db[_0x20b9('0xfb')],{'as':_0x20b9('0x1ca'),'through':'campaigns_has_cm_blacklists'});db[_0x20b9('0xf3')][_0x20b9('0x121')](db[_0x20b9('0x75')],{'as':_0x20b9('0x75'),'foreignKey':_0x20b9('0x171')});db['MailTransferReport'][_0x20b9('0x121')](db[_0x20b9('0x4b')],{});db[_0x20b9('0x1cb')][_0x20b9('0x121')](db[_0x20b9('0x49')],{});db[_0x20b9('0x1cb')][_0x20b9('0x121')](db[_0x20b9('0x45')],{'foreignKey':_0x20b9('0x1cc'),'as':_0x20b9('0x1cd')});db[_0x20b9('0x1cb')][_0x20b9('0x121')](db['User'],{'foreignKey':_0x20b9('0x1ce'),'as':_0x20b9('0x1cf')});db[_0x20b9('0x1cb')][_0x20b9('0x121')](db[_0x20b9('0x12')],{'foreignKey':_0x20b9('0x1d0'),'as':_0x20b9('0x1d1')});db[_0x20b9('0x1cb')]['belongsTo'](db[_0x20b9('0x47')],{'foreignKey':_0x20b9('0x1d2'),'as':_0x20b9('0x1d3')});db['MailTransferReport'][_0x20b9('0x121')](db[_0x20b9('0x45')],{'foreignKey':_0x20b9('0x1d4'),'as':_0x20b9('0x1d5')});db[_0x20b9('0x1d6')][_0x20b9('0x121')](db[_0x20b9('0x73')],{});db[_0x20b9('0x1d6')][_0x20b9('0x121')](db[_0x20b9('0x12a')],{});db[_0x20b9('0x1d6')][_0x20b9('0x121')](db[_0x20b9('0x6e')],{'foreignKey':'FromChatWebsiteId','as':_0x20b9('0x1cd')});db[_0x20b9('0x1d6')][_0x20b9('0x121')](db[_0x20b9('0x12')],{'foreignKey':'FromUserId','as':_0x20b9('0x1cf')});db[_0x20b9('0x1d6')]['belongsTo'](db[_0x20b9('0x12')],{'foreignKey':_0x20b9('0x1d0'),'as':_0x20b9('0x1d1')});db[_0x20b9('0x1d6')]['belongsTo'](db['ChatQueue'],{'foreignKey':_0x20b9('0x1d7'),'as':'ToQueue'});db['ChatTransferReport']['belongsTo'](db[_0x20b9('0x6e')],{'foreignKey':'ToChatWebsiteId','as':'ToAccount'});db['FaxTransferReport']['belongsTo'](db[_0x20b9('0x59')],{});db[_0x20b9('0x1d8')][_0x20b9('0x121')](db[_0x20b9('0x57')],{});db[_0x20b9('0x1d8')][_0x20b9('0x121')](db[_0x20b9('0x54')],{'foreignKey':_0x20b9('0x1d9'),'as':_0x20b9('0x1cd')});db['FaxTransferReport'][_0x20b9('0x121')](db[_0x20b9('0x12')],{'foreignKey':'FromUserId','as':_0x20b9('0x1cf')});db[_0x20b9('0x1d8')][_0x20b9('0x121')](db['User'],{'foreignKey':_0x20b9('0x1d0'),'as':'ToAgent'});db[_0x20b9('0x1d8')][_0x20b9('0x121')](db[_0x20b9('0x179')],{'foreignKey':_0x20b9('0x1da'),'as':'ToQueue'});db[_0x20b9('0x1d8')][_0x20b9('0x121')](db[_0x20b9('0x54')],{'foreignKey':_0x20b9('0x1db'),'as':'ToAccount'});db[_0x20b9('0xf8')][_0x20b9('0x121')](db[_0x20b9('0x6a')],{});db[_0x20b9('0xf8')][_0x20b9('0x121')](db['OpenchannelInteraction'],{});db[_0x20b9('0xf8')][_0x20b9('0x121')](db[_0x20b9('0x64')],{'foreignKey':_0x20b9('0x1dc'),'as':_0x20b9('0x1cd')});db[_0x20b9('0xf8')][_0x20b9('0x121')](db[_0x20b9('0x12')],{'foreignKey':_0x20b9('0x1ce'),'as':_0x20b9('0x1cf')});db[_0x20b9('0xf8')][_0x20b9('0x121')](db['User'],{'foreignKey':_0x20b9('0x1d0'),'as':_0x20b9('0x1d1')});db[_0x20b9('0xf8')][_0x20b9('0x121')](db['OpenchannelQueue'],{'foreignKey':_0x20b9('0x1dd'),'as':'ToQueue'});db['OpenchannelTransferReport'][_0x20b9('0x121')](db[_0x20b9('0x64')],{'foreignKey':'ToOpenchannelAccountId','as':_0x20b9('0x1d5')});db[_0x20b9('0xf9')]['belongsTo'](db[_0x20b9('0x61')],{});db[_0x20b9('0xf9')]['belongsTo'](db[_0x20b9('0x5f')],{});db[_0x20b9('0xf9')][_0x20b9('0x121')](db[_0x20b9('0x5d')],{'foreignKey':_0x20b9('0x1de'),'as':_0x20b9('0x1cd')});db['SmsTransferReport'][_0x20b9('0x121')](db[_0x20b9('0x12')],{'foreignKey':_0x20b9('0x1ce'),'as':_0x20b9('0x1cf')});db[_0x20b9('0xf9')][_0x20b9('0x121')](db[_0x20b9('0x12')],{'foreignKey':_0x20b9('0x1d0'),'as':_0x20b9('0x1d1')});db[_0x20b9('0xf9')][_0x20b9('0x121')](db[_0x20b9('0x63')],{'foreignKey':_0x20b9('0x1df'),'as':_0x20b9('0x1d3')});db[_0x20b9('0xf9')][_0x20b9('0x121')](db['SmsAccount'],{'foreignKey':_0x20b9('0x1e0'),'as':_0x20b9('0x1d5')});db[_0x20b9('0xfb')][_0x20b9('0x117')](db[_0x20b9('0x15e')],{'as':_0x20b9('0x15f'),'foreignKey':'ListId','onDelete':_0x20b9('0x115')});db[_0x20b9('0xfb')][_0x20b9('0x117')](db[_0x20b9('0x1e1')],{'as':_0x20b9('0x1e2'),'foreignKey':_0x20b9('0x174')});db[_0x20b9('0xfb')]['hasMany'](db['CmContact'],{'as':'Contacts','onDelete':'cascade','foreignKey':_0x20b9('0x174')});db[_0x20b9('0xfb')]['hasMany'](db['CmHopperFinal'],{'as':_0x20b9('0x11a'),'foreignKey':_0x20b9('0x174')});db[_0x20b9('0xfb')][_0x20b9('0x117')](db['CmHopperHistory'],{'as':'HopperHistory','foreignKey':_0x20b9('0x174')});db[_0x20b9('0xfb')][_0x20b9('0x117')](db['ReportAgentPreview'],{'as':_0x20b9('0x85'),'foreignKey':_0x20b9('0x174')});db[_0x20b9('0xfb')][_0x20b9('0x123')](db['VoiceQueue'],{'as':_0x20b9('0x1e3'),'through':'voice_queues_has_cm_lists'});db['CmList'][_0x20b9('0x123')](db['User'],{'as':'Agents','through':_0x20b9('0x126')});db['VoicePrefix'][_0x20b9('0x117')](db[_0x20b9('0x19')],{'as':_0x20b9('0x119'),'onDelete':_0x20b9('0x115')});db[_0x20b9('0x135')][_0x20b9('0x123')](db['User'],{'as':'Agents','through':_0x20b9('0x136')});db[_0x20b9('0xfe')][_0x20b9('0x117')](db[_0x20b9('0x12')],{'as':_0x20b9('0x16d'),'foreignKey':'userProfileId'});db['UserProfile'][_0x20b9('0x117')](db[_0x20b9('0x1e4')],{'as':_0x20b9('0x1e5'),'foreignKey':'userProfileId','onDelete':_0x20b9('0x115')});db['UserProfileSection']['hasMany'](db[_0x20b9('0x101')],{'as':_0x20b9('0x1e6'),'foreignKey':_0x20b9('0x1e7'),'onDelete':_0x20b9('0x115')});db['WhatsappAccount'][_0x20b9('0x117')](db[_0x20b9('0x15e')],{'as':_0x20b9('0x15f'),'foreignKey':_0x20b9('0x1e8'),'onDelete':_0x20b9('0x115')});db[_0x20b9('0x13d')][_0x20b9('0x117')](db[_0x20b9('0x8a')],{'as':_0x20b9('0x160'),'foreignKey':_0x20b9('0x1e8')});db['WhatsappAccount'][_0x20b9('0x117')](db[_0x20b9('0x109')],{'as':'Messages','foreignKey':_0x20b9('0x1e8')});db['WhatsappAccount'][_0x20b9('0x117')](db['WhatsappInteraction'],{'as':_0x20b9('0x177')});db[_0x20b9('0x13d')][_0x20b9('0x117')](db[_0x20b9('0x106')],{'as':_0x20b9('0x142')});db['WhatsappAccount'][_0x20b9('0x121')](db['CmList'],{'as':_0x20b9('0x161'),'foreignKey':_0x20b9('0x174')});db[_0x20b9('0x13d')][_0x20b9('0x121')](db[_0x20b9('0x90')],{'as':'mandatoryDispositionPause','foreignKey':_0x20b9('0x151')});db[_0x20b9('0x13d')]['belongsToMany'](db[_0x20b9('0x12')],{'as':_0x20b9('0x163'),'through':_0x20b9('0x13f')});db[_0x20b9('0x106')][_0x20b9('0x121')](db[_0x20b9('0x12')],{'onDelete':_0x20b9('0x172')});db[_0x20b9('0x106')][_0x20b9('0x121')](db[_0x20b9('0x10e')],{'onDelete':_0x20b9('0x172')});db[_0x20b9('0x106')]['belongsTo'](db['WhatsappAccount'],{'onDelete':'restrict'});db[_0x20b9('0x106')][_0x20b9('0x121')](db[_0x20b9('0x8e')],{'onDelete':_0x20b9('0x172'),'foreignKey':'IntervalId'});db[_0x20b9('0x106')]['belongsTo'](db[_0x20b9('0x97')],{'onDelete':_0x20b9('0x172'),'foreignKey':_0x20b9('0x173')});db[_0x20b9('0x108')][_0x20b9('0x117')](db[_0x20b9('0x109')],{'as':_0x20b9('0x156'),'onDelete':'cascade','foreignKey':_0x20b9('0x1e9')});db[_0x20b9('0x108')][_0x20b9('0x121')](db[_0x20b9('0x13d')],{'as':_0x20b9('0x167'),'foreignKey':'WhatsappAccountId'});db[_0x20b9('0x108')]['belongsTo'](db['CmContact'],{'as':_0x20b9('0x168'),'foreignKey':_0x20b9('0x15b')});db['WhatsappInteraction']['belongsTo'](db[_0x20b9('0x12')],{'as':_0x20b9('0x169'),'foreignKey':'UserId'});db[_0x20b9('0x108')][_0x20b9('0x123')](db[_0x20b9('0x97')],{'through':_0x20b9('0x1ea'),'as':_0x20b9('0x16a')});db[_0x20b9('0x108')]['belongsToMany'](db[_0x20b9('0x97')],{'through':_0x20b9('0x1ea'),'as':_0x20b9('0x16c')});db[_0x20b9('0x108')][_0x20b9('0x123')](db[_0x20b9('0x12')],{'as':_0x20b9('0x16d'),'through':'user_has_whatsapp_interactions','foreignKey':'WhatsappInteractionId'});db[_0x20b9('0x109')][_0x20b9('0x121')](db['User'],{'as':_0x20b9('0x12')});db[_0x20b9('0x109')]['belongsTo'](db[_0x20b9('0x15a')],{'onDelete':_0x20b9('0x115'),'as':'Contact'});db[_0x20b9('0x109')][_0x20b9('0x121')](db[_0x20b9('0x108')],{'onDelete':_0x20b9('0x115'),'as':_0x20b9('0x16f'),'foreignKey':'WhatsappInteractionId'});db[_0x20b9('0x109')][_0x20b9('0x121')](db[_0x20b9('0x13d')],{'as':_0x20b9('0x167'),'foreignKey':_0x20b9('0x1e8')});db['WhatsappQueueReport']['belongsTo'](db[_0x20b9('0x13d')],{});db[_0x20b9('0x10b')][_0x20b9('0x121')](db[_0x20b9('0xfb')],{'as':'List','foreignKey':_0x20b9('0x174')});db[_0x20b9('0x10b')][_0x20b9('0x121')](db[_0x20b9('0x15a')],{'as':_0x20b9('0x168'),'foreignKey':_0x20b9('0x15b')});db[_0x20b9('0x10b')][_0x20b9('0x121')](db[_0x20b9('0x108')],{});db[_0x20b9('0x10b')]['belongsTo'](db['WhatsappQueue'],{});db[_0x20b9('0x10b')][_0x20b9('0x121')](db[_0x20b9('0x109')],{});db[_0x20b9('0x10b')][_0x20b9('0x121')](db[_0x20b9('0x12')],{});db[_0x20b9('0x10d')][_0x20b9('0x121')](db[_0x20b9('0x109')],{});db[_0x20b9('0x10d')][_0x20b9('0x121')](db[_0x20b9('0x108')],{});db[_0x20b9('0x10d')][_0x20b9('0x121')](db['WhatsappAccount'],{'foreignKey':'FromWhatsappAccountId','as':_0x20b9('0x1cd')});db[_0x20b9('0x10d')][_0x20b9('0x121')](db['WhatsappAccount'],{'foreignKey':_0x20b9('0x1eb'),'as':_0x20b9('0x1d5')});db['WhatsappTransferReport'][_0x20b9('0x121')](db['WhatsappQueue'],{'foreignKey':_0x20b9('0x1ec'),'as':_0x20b9('0x1d3')});db[_0x20b9('0x10d')][_0x20b9('0x121')](db[_0x20b9('0x12')],{'foreignKey':_0x20b9('0x1ce'),'as':_0x20b9('0x1cf')});db[_0x20b9('0x10d')][_0x20b9('0x121')](db[_0x20b9('0x12')],{'foreignKey':_0x20b9('0x1d0'),'as':_0x20b9('0x1d1')});db[_0x20b9('0x10e')]['belongsToMany'](db['User'],{'as':_0x20b9('0x163'),'through':_0x20b9('0x3f'),'foreignKey':_0x20b9('0x1ed')});db[_0x20b9('0x10e')][_0x20b9('0x123')](db['Team'],{'through':_0x20b9('0x1c8'),'as':_0x20b9('0x154')});module[_0x20b9('0x1ee')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0x5f27=['ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','Action','../api/action/action.model','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/condition/condition.model','Interval','../api/interval/interval.model','Pause','../api/pause/pause.model','../api/cdr/cdr.model','VoiceQueuesLog','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','Template','../api/template/template.model','Trigger','../api/trigger/trigger.model','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','AnalyticMetric','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceField','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','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','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','../api/intVtigerConfiguration/intVtigerConfiguration.model','../api/intVtigerField/intVtigerField.model','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','../api/network/network.model','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','../api/jscriptySessionReport/jscriptySessionReport.model','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','../api/squareOdbc/squareOdbc.model','../api/squareProject/squareProject.model','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','../api/license/license.model','Campaign','../api/campaign/campaign.model','Migration','../api/attachment/attachment.model','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','../api/smsTransferReport/smsTransferReport.model','CmList','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','UserProfileSection','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','../api/whatsappApplication/whatsappApplication.model','../api/whatsappInteraction/whatsappInteraction.model','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','../api/whatsappQueue/whatsappQueue.model','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','hasOne','cascade','UserId','User','hasMany','VoiceRecording','Recordings','VoiceQueuesRt','OpenchannelInteraction','OpenchannelInteractions','ChatInteractions','SmsInteractions','MailInteractions','WhatsappInteraction','UserNotifications','SenderId','belongsTo','Groups','chat_group_has_users','belongsToMany','cm_user_has_lists','user_has_teams','user_has_mail_interactions','FaxInteractions','user_has_sms_interactions','WhatsappInteractions','user_has_whatsapp_interactions','VoiceQueues','MailQueues','ChatQueues','UserChatQueue','FaxQueue','FaxQueues','SmsQueues','OpenchannelQueue','OpenchannelQueues','UserOpenchannelQueue','WhatsappQueue','WhatsappQueues','VoicePrefixes','user_has_voice_prefixes','user_has_chat_websites','user_has_fax_accounts','MailAccounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','user_has_whatsapp_accounts','SquareProjects','SpiedAgents','ChanSpyId','Applications','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperFinals','HopperBlacks','JscriptySessionReport','JscriptySessions','TrunkBackup','TrunkBackupId','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Teams','BlackLists','voice_queues_has_cm_blacklists','Messages','mailbox','mailboxuser','uniqueid','AgentReports','Contact','ContactId','MailAccountId','MailServerOut','Imap','Smtp','Dispositions','CannedAnswer','Interactions','List','ListId','TemplateId','mandatoryDispositionPause','Agents','team_has_mail_queues','MailInteractionId','CmContact','Owner','mail_interaction_has_tags','Tags','ThroughTags','Attachment','Attachments','Interaction','ChatWebsiteId','restrict','Items','FaxAccountId','Answers','FaxApplication','Exntensions','TagId','Account','Users','user_has_fax_interactions','FaxInteractionId','SmsAccountId','IntervalId','SmsInteractionId','sms_interaction_has_tags','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','user_has_openchannel_interactions','team_has_openchannel_queues','ProactiveActions','ChatApplication','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','AttachmentId','ChatOfflineMessageId','team_has_chat_queues','ChatGroupId','CmCompany','Contacts','CompanyId','HopperHistories','Company','cm_user_has_contacts','cm_contact_has_tags','CampaignId','OwnerId','Automation','Condition','All','OneAll','OneAny','Actions','AutomationId','ParentId','Intervals','Extensions','ChatApplications','FaxApplications','SmsApplications','DefaultReportId','CustomReportId','Mohs','fax_interaction_has_tags','whatsapp_interaction_has_tags','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','TriggerId','Fields','MetricId','Configurations','AccountId','SalesforceConfiguration','Subjects','Descriptions','DescriptionId','FieldId','SubjectId','Field','Subject','Description','VariableId','ZendeskConfiguration','int_zendesk_configuration_has_tags','FreshdeskConfiguration','FreshdeskField','int_freshdesk_configuration_has_tags','VtigerConfiguration','VtigerField','ServicenowAccount','Dynamics365Configuration','FreshsalesField','ChatQueueReport','ToId','SessionId','SmsQueueReport','ProjectId','user_has_square_projects','team_has_fax_queues','team_has_whatsapp_queues','TrunkId','SquareProjectId','Lists','campaigns_has_cm_lists','campaigns_has_cm_blacklists','MailTransferReport','FromMailAccountId','FromAccount','FromUserId','ToUserId','ToAgent','ToMailQueueId','ToMailAccountId','ToAccount','FromChatWebsiteId','FromAgent','ToChatQueueId','ToQueue','ToChatWebsiteId','FromFaxAccountId','ToFaxAccountId','OpenchannelTransferReport','ToOpenchannelQueueId','SmsTransferReport','FromSmsAccountId','ToSmsQueueId','CustomFields','HopperHistory','Queues','userProfileId','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappMessage','WhatsappApplication','WhatsappInteractionId','FromWhatsappAccountId','exports','../config/environment','lodash','determine','sequelize','defaultsDeep','xC@LL1234','127.0.0.1','mysql','utf8mb4','name','utf8','utf8_general_ci','sequelizeHistory','motion2','xcall','database','username','password','options','import','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','Trunk','../api/trunk/trunk.model','VoiceTransferReport','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserWhatsappQueue','../api/mailServerIn/mailServerIn.model','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','OpenchannelApplication','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','../api/cmCompany/cmCompany.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model'];(function(_0x53807e,_0x247981){var _0x2eeec4=function(_0x3df5fe){while(--_0x3df5fe){_0x53807e['push'](_0x53807e['shift']());}};_0x2eeec4(++_0x247981);}(_0x5f27,0x17c));var _0x75f2=function(_0x7518fa,_0x3ea48a){_0x7518fa=_0x7518fa-0x0;var _0x13369e=_0x5f27[_0x7518fa];return _0x13369e;};'use strict';var config=require(_0x75f2('0x0'));var Sequelize=require('sequelize');var _=require(_0x75f2('0x1'));var jstz=require('jstz');var timezone=jstz[_0x75f2('0x2')]();config[_0x75f2('0x3')]=_[_0x75f2('0x4')](config[_0x75f2('0x3')],{'database':'motion2','username':'xcall','password':_0x75f2('0x5'),'options':{'host':_0x75f2('0x6'),'port':0xcea,'dialect':_0x75f2('0x7'),'dialectOptions':{'charset':_0x75f2('0x8')},'logging':![],'timezone':timezone[_0x75f2('0x9')](),'define':{'charset':_0x75f2('0xa'),'collate':_0x75f2('0xb')}}});config[_0x75f2('0xc')]=_[_0x75f2('0x4')](config['sequelizeHistory'],{'database':_0x75f2('0xd'),'username':_0x75f2('0xe'),'password':_0x75f2('0x5'),'options':{'host':_0x75f2('0x6'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0x75f2('0x8')},'logging':![],'timezone':timezone[_0x75f2('0x9')](),'define':{'charset':'utf8','collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize'][_0x75f2('0xf')],config[_0x75f2('0x3')]['username'],config['sequelize']['password'],config[_0x75f2('0x3')]['options'])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory'][_0x75f2('0xf')],config[_0x75f2('0xc')][_0x75f2('0x10')],config[_0x75f2('0xc')][_0x75f2('0x11')],config['sequelizeHistory'][_0x75f2('0x12')])};db['User']=db['sequelize'][_0x75f2('0x13')]('../api/user/user.model');db[_0x75f2('0x14')]=db[_0x75f2('0x3')]['import'](_0x75f2('0x15'));db[_0x75f2('0x16')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x17'));db[_0x75f2('0x18')]=db[_0x75f2('0x3')][_0x75f2('0x13')]('../api/voiceExtension/voiceExtension.model');db[_0x75f2('0x19')]=db['sequelize'][_0x75f2('0x13')](_0x75f2('0x1a'));db[_0x75f2('0x1b')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x1c'));db['VoiceRecording']=db['sequelize']['import'](_0x75f2('0x1d'));db[_0x75f2('0x1e')]=db[_0x75f2('0x3')]['import'](_0x75f2('0x1f'));db[_0x75f2('0x20')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x21'));db[_0x75f2('0x22')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x23'));db[_0x75f2('0x24')]=db[_0x75f2('0x3')]['import']('../api/voiceCallReport/voiceCallReport.model');db[_0x75f2('0x25')]=db['sequelize'][_0x75f2('0x13')](_0x75f2('0x26'));db['VoiceAgentReport']=db['sequelize'][_0x75f2('0x13')](_0x75f2('0x27'));db[_0x75f2('0x28')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x29'));db[_0x75f2('0x2a')]=db[_0x75f2('0x3')]['import'](_0x75f2('0x2b'));db[_0x75f2('0x2c')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x2d'));db[_0x75f2('0x2e')]=db[_0x75f2('0x3')][_0x75f2('0x13')]('../api/voiceTransferReport/voiceTransferReport.model');db[_0x75f2('0x2f')]=db['sequelize'][_0x75f2('0x13')](_0x75f2('0x30'));db[_0x75f2('0x31')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x32'));db['UserChatQueue']=db[_0x75f2('0x3')]['import'](_0x75f2('0x33'));db[_0x75f2('0x34')]=db[_0x75f2('0x3')]['import'](_0x75f2('0x35'));db[_0x75f2('0x36')]=db[_0x75f2('0x3')][_0x75f2('0x13')]('../api/userFaxQueue/userFaxQueue.model');db[_0x75f2('0x37')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x38'));db['UserOpenchannelQueue']=db[_0x75f2('0x3')][_0x75f2('0x13')]('../api/userOpenchannelQueue/userOpenchannelQueue.model');db[_0x75f2('0x39')]=db['sequelize'][_0x75f2('0x13')]('../api/userWhatsappQueue/userWhatsappQueue.model');db['MailServerIn']=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x3a'));db['MailServerOut']=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x3b'));db[_0x75f2('0x3c')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x3d'));db[_0x75f2('0x3e')]=db['sequelize'][_0x75f2('0x13')](_0x75f2('0x3f'));db[_0x75f2('0x40')]=db[_0x75f2('0x3')]['import'](_0x75f2('0x41'));db[_0x75f2('0x42')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x43'));db[_0x75f2('0x44')]=db[_0x75f2('0x3')][_0x75f2('0x13')]('../api/mailMessage/mailMessage.model');db[_0x75f2('0x45')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x46'));db[_0x75f2('0x47')]=db['sequelize'][_0x75f2('0x13')](_0x75f2('0x48'));db['Dashboard']=db[_0x75f2('0x3')]['import'](_0x75f2('0x49'));db[_0x75f2('0x4a')]=db['sequelize']['import'](_0x75f2('0x4b'));db[_0x75f2('0x4c')]=db[_0x75f2('0x3')]['import']('../api/faxAccount/faxAccount.model');db['FaxApplication']=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x4d'));db[_0x75f2('0x4e')]=db['sequelize']['import'](_0x75f2('0x4f'));db[_0x75f2('0x50')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x51'));db['FaxQueue']=db[_0x75f2('0x3')]['import'](_0x75f2('0x52'));db[_0x75f2('0x53')]=db['sequelize']['import'](_0x75f2('0x54'));db[_0x75f2('0x55')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x56'));db[_0x75f2('0x57')]=db[_0x75f2('0x3')]['import'](_0x75f2('0x58'));db[_0x75f2('0x59')]=db[_0x75f2('0x3')]['import'](_0x75f2('0x5a'));db[_0x75f2('0x5b')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x5c'));db[_0x75f2('0x5d')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x5e'));db[_0x75f2('0x5f')]=db[_0x75f2('0x3')][_0x75f2('0x13')]('../api/openchannelAccount/openchannelAccount.model');db[_0x75f2('0x60')]=db[_0x75f2('0x3')][_0x75f2('0x13')]('../api/openchannelApplication/openchannelApplication.model');db['OpenchannelInteraction']=db['sequelize'][_0x75f2('0x13')](_0x75f2('0x61'));db[_0x75f2('0x62')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x63'));db['OpenchannelQueue']=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x64'));db[_0x75f2('0x65')]=db[_0x75f2('0x3')]['import'](_0x75f2('0x66'));db[_0x75f2('0x67')]=db[_0x75f2('0x3')]['import'](_0x75f2('0x68'));db['ChatApplication']=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x69'));db[_0x75f2('0x6a')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x6b'));db[_0x75f2('0x6c')]=db['sequelize'][_0x75f2('0x13')](_0x75f2('0x6d'));db[_0x75f2('0x6e')]=db[_0x75f2('0x3')][_0x75f2('0x13')]('../api/chatOfflineMessage/chatOfflineMessage.model');db[_0x75f2('0x6f')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x70'));db[_0x75f2('0x71')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x72'));db[_0x75f2('0x73')]=db['sequelize'][_0x75f2('0x13')](_0x75f2('0x74'));db['CmCompany']=db[_0x75f2('0x3')]['import'](_0x75f2('0x75'));db['CmContact']=db['sequelize'][_0x75f2('0x13')]('../api/cmContact/cmContact.model');db[_0x75f2('0x76')]=db['sequelize'][_0x75f2('0x13')](_0x75f2('0x77'));db[_0x75f2('0x78')]=db['sequelize'][_0x75f2('0x13')](_0x75f2('0x79'));db[_0x75f2('0x7a')]=db[_0x75f2('0x3')]['import']('../api/cmHopperFinal/cmHopperFinal.model');db[_0x75f2('0x7b')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x7c'));db[_0x75f2('0x7d')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x7e'));db[_0x75f2('0x7f')]=db[_0x75f2('0x3')][_0x75f2('0x13')]('../api/cmCustomField/cmCustomField.model');db[_0x75f2('0x80')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x81'));db['Automation']=db[_0x75f2('0x3')][_0x75f2('0x13')]('../api/automation/automation.model');db['CannedAnswer']=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x82'));db[_0x75f2('0x83')]=db['sequelize'][_0x75f2('0x13')]('../api/disposition/disposition.model');db['Condition']=db['sequelize']['import'](_0x75f2('0x84'));db[_0x75f2('0x85')]=db[_0x75f2('0x3')]['import'](_0x75f2('0x86'));db[_0x75f2('0x87')]=db[_0x75f2('0x3')]['import'](_0x75f2('0x88'));db['Cdr']=db['sequelize']['import'](_0x75f2('0x89'));db[_0x75f2('0x8a')]=db['sequelize'][_0x75f2('0x13')]('../api/voiceQueuesLog/voiceQueuesLog.model');db[_0x75f2('0x8b')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x8c'));db[_0x75f2('0x8d')]=db[_0x75f2('0x3')]['import'](_0x75f2('0x8e'));db[_0x75f2('0x8f')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x90'));db[_0x75f2('0x91')]=db['sequelize']['import'](_0x75f2('0x92'));db[_0x75f2('0x93')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x94'));db[_0x75f2('0x95')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x96'));db[_0x75f2('0x97')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x98'));db['IntegrationReport']=db['sequelize'][_0x75f2('0x13')]('../api/integrationReport/integrationReport.model');db[_0x75f2('0x99')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x9a'));db[_0x75f2('0x9b')]=db['sequelize'][_0x75f2('0x13')](_0x75f2('0x9c'));db[_0x75f2('0x9d')]=db[_0x75f2('0x3')][_0x75f2('0x13')]('../api/analyticExtractedReport/analyticExtractedReport.model');db[_0x75f2('0x9e')]=db[_0x75f2('0x3')]['import'](_0x75f2('0x9f'));db[_0x75f2('0xa0')]=db['sequelize'][_0x75f2('0x13')](_0x75f2('0xa1'));db[_0x75f2('0xa2')]=db[_0x75f2('0x3')]['import']('../api/analyticTreeReport/analyticTreeReport.model');db[_0x75f2('0xa3')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xa4'));db['SalesforceConfiguration']=db[_0x75f2('0x3')]['import']('../api/intSalesforceConfiguration/intSalesforceConfiguration.model');db[_0x75f2('0xa5')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xa6'));db[_0x75f2('0xa7')]=db[_0x75f2('0x3')]['import'](_0x75f2('0xa8'));db[_0x75f2('0xa9')]=db[_0x75f2('0x3')]['import'](_0x75f2('0xaa'));db[_0x75f2('0xab')]=db['sequelize'][_0x75f2('0x13')]('../api/intSugarcrmField/intSugarcrmField.model');db[_0x75f2('0xac')]=db[_0x75f2('0x3')]['import'](_0x75f2('0xad'));db[_0x75f2('0xae')]=db[_0x75f2('0x3')]['import'](_0x75f2('0xaf'));db[_0x75f2('0xb0')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xb1'));db[_0x75f2('0xb2')]=db['sequelize'][_0x75f2('0x13')](_0x75f2('0xb3'));db[_0x75f2('0xb4')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xb5'));db[_0x75f2('0xb6')]=db[_0x75f2('0x3')]['import'](_0x75f2('0xb7'));db[_0x75f2('0xb8')]=db[_0x75f2('0x3')][_0x75f2('0x13')]('../api/intZendeskAccount/intZendeskAccount.model');db['ZendeskConfiguration']=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xb9'));db[_0x75f2('0xba')]=db[_0x75f2('0x3')]['import'](_0x75f2('0xbb'));db[_0x75f2('0xbc')]=db[_0x75f2('0x3')][_0x75f2('0x13')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db['FreshdeskConfiguration']=db['sequelize'][_0x75f2('0x13')](_0x75f2('0xbd'));db['FreshdeskField']=db[_0x75f2('0x3')]['import'](_0x75f2('0xbe'));db[_0x75f2('0xbf')]=db[_0x75f2('0x3')]['import'](_0x75f2('0xc0'));db['VtigerConfiguration']=db[_0x75f2('0x3')]['import'](_0x75f2('0xc1'));db['VtigerField']=db['sequelize'][_0x75f2('0x13')](_0x75f2('0xc2'));db['ServicenowAccount']=db[_0x75f2('0x3')]['import'](_0x75f2('0xc3'));db[_0x75f2('0xc4')]=db['sequelize'][_0x75f2('0x13')](_0x75f2('0xc5'));db[_0x75f2('0xc6')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xc7'));db[_0x75f2('0xc8')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xc9'));db['Dynamics365Configuration']=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xca'));db[_0x75f2('0xcb')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xcc'));db[_0x75f2('0xcd')]=db[_0x75f2('0x3')][_0x75f2('0x13')]('../api/intFreshsalesAccount/intFreshsalesAccount.model');db[_0x75f2('0xce')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xcf'));db['FreshsalesField']=db['sequelize']['import']('../api/intFreshsalesField/intFreshsalesField.model');db[_0x75f2('0x97')]=db['sequelize'][_0x75f2('0x13')](_0x75f2('0x98'));db['Network']=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xd0'));db['ChatQueueReport']=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xd1'));db[_0x75f2('0xd2')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xd3'));db[_0x75f2('0xd4')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xd5'));db[_0x75f2('0xd6')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xd7'));db['JscriptySessionReport']=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xd8'));db['SmsQueueReport']=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xd9'));db[_0x75f2('0xda')]=db['sequelize'][_0x75f2('0x13')](_0x75f2('0xdb'));db[_0x75f2('0xdc')]=db[_0x75f2('0x3')][_0x75f2('0x13')]('../api/squareReportDetail/squareReportDetail.model');db[_0x75f2('0xdd')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xde'));db[_0x75f2('0xdf')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xe0'));db['SquareOdbc']=db[_0x75f2('0x3')]['import'](_0x75f2('0xe1'));db['SquareProject']=db['sequelize'][_0x75f2('0x13')](_0x75f2('0xe2'));db['SquareRecording']=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xe3'));db[_0x75f2('0xe4')]=db[_0x75f2('0x3')]['import'](_0x75f2('0xe5'));db[_0x75f2('0xe6')]=db['sequelize'][_0x75f2('0x13')](_0x75f2('0xe7'));db[_0x75f2('0xe8')]=db['sequelize'][_0x75f2('0x13')](_0x75f2('0xe9'));db[_0x75f2('0xea')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xeb'));db[_0x75f2('0xec')]=db[_0x75f2('0x3')][_0x75f2('0x13')]('../api/migration/migration.model');db['Attachment']=db[_0x75f2('0x3')]['import'](_0x75f2('0xed'));db['Plugin']=db[_0x75f2('0x3')][_0x75f2('0x13')]('../api/plugin/plugin.model');db['MailTransferReport']=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xee'));db[_0x75f2('0xef')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xf0'));db[_0x75f2('0xf1')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xf2'));db['OpenchannelTransferReport']=db[_0x75f2('0x3')][_0x75f2('0x13')]('../api/openchannelTransferReport/openchannelTransferReport.model');db['SmsTransferReport']=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xf3'));db[_0x75f2('0xf4')]=db['sequelize'][_0x75f2('0x13')]('../api/cmList/cmList.model');db[_0x75f2('0xf5')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xf6'));db[_0x75f2('0xf7')]=db['sequelize'][_0x75f2('0x13')](_0x75f2('0xf8'));db[_0x75f2('0xf9')]=db['sequelize']['import'](_0x75f2('0xfa'));db[_0x75f2('0xfb')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0xfc'));db[_0x75f2('0xfd')]=db[_0x75f2('0x3')]['import']('../api/userNotification/userNotification.model');db[_0x75f2('0xfe')]=db['sequelize'][_0x75f2('0x13')](_0x75f2('0xff'));db['WhatsappApplication']=db['sequelize'][_0x75f2('0x13')](_0x75f2('0x100'));db['WhatsappInteraction']=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x101'));db['WhatsappMessage']=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x102'));db[_0x75f2('0x103')]=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x104'));db[_0x75f2('0x105')]=db['sequelize'][_0x75f2('0x13')](_0x75f2('0x106'));db['WhatsappQueue']=db[_0x75f2('0x3')][_0x75f2('0x13')](_0x75f2('0x107'));db['CloudProvider']=db[_0x75f2('0x3')]['import'](_0x75f2('0x108'));db[_0x75f2('0x109')]=db[_0x75f2('0x3')]['import'](_0x75f2('0x10a'));db['User'][_0x75f2('0x10b')](db[_0x75f2('0x20')],{'as':_0x75f2('0x20'),'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x10d')});db[_0x75f2('0x10e')][_0x75f2('0x10f')](db[_0x75f2('0x110')],{'as':_0x75f2('0x111'),'foreignKey':_0x75f2('0x10d')});db[_0x75f2('0x10e')][_0x75f2('0x10f')](db[_0x75f2('0x2f')],{'as':_0x75f2('0x112'),'foreignKey':'UserId'});db[_0x75f2('0x10e')][_0x75f2('0x10f')](db[_0x75f2('0x18')],{'as':'Extensions','onDelete':_0x75f2('0x10c'),'hooks':!![]});db[_0x75f2('0x10e')][_0x75f2('0x10f')](db[_0x75f2('0x7a')],{'as':'HopperFinals','foreignKey':_0x75f2('0x10d')});db[_0x75f2('0x10e')][_0x75f2('0x10f')](db['CmHopperHistory'],{'as':'HopperHistory','foreignKey':_0x75f2('0x10d')});db[_0x75f2('0x10e')][_0x75f2('0x10f')](db[_0x75f2('0x7d')],{'as':_0x75f2('0x7d'),'foreignKey':_0x75f2('0x10d')});db['User'][_0x75f2('0x10f')](db[_0x75f2('0x113')],{'as':_0x75f2('0x114'),'foreignKey':'UserId'});db[_0x75f2('0x10e')]['hasMany'](db[_0x75f2('0x6a')],{'as':_0x75f2('0x115'),'foreignKey':_0x75f2('0x10d')});db[_0x75f2('0x10e')][_0x75f2('0x10f')](db[_0x75f2('0x59')],{'as':_0x75f2('0x116'),'foreignKey':'UserId'});db[_0x75f2('0x10e')][_0x75f2('0x10f')](db[_0x75f2('0x4e')],{'as':'FaxInteractions','foreignKey':_0x75f2('0x10d')});db[_0x75f2('0x10e')][_0x75f2('0x10f')](db[_0x75f2('0x42')],{'as':_0x75f2('0x117'),'foreignKey':_0x75f2('0x10d')});db[_0x75f2('0x10e')][_0x75f2('0x10f')](db[_0x75f2('0x118')],{'as':'WhatsappInteractions','foreignKey':_0x75f2('0x10d')});db[_0x75f2('0x10e')][_0x75f2('0x10f')](db['UserNotification'],{'as':_0x75f2('0x119'),'foreignKey':_0x75f2('0x11a')});db[_0x75f2('0x10e')][_0x75f2('0x11b')](db['UserProfile'],{'as':'UserProfile','foreignKey':'userProfileId'});db[_0x75f2('0x10e')]['belongsToMany'](db[_0x75f2('0x71')],{'as':_0x75f2('0x11c'),'through':_0x75f2('0x11d')});db[_0x75f2('0x10e')][_0x75f2('0x11e')](db['CmContact'],{'as':'Contacts','through':'cm_user_has_contacts'});db[_0x75f2('0x10e')][_0x75f2('0x11e')](db['CmList'],{'as':'Lists','through':_0x75f2('0x11f')});db[_0x75f2('0x10e')][_0x75f2('0x11e')](db['Team'],{'through':_0x75f2('0x120')});db[_0x75f2('0x10e')][_0x75f2('0x11e')](db[_0x75f2('0x42')],{'as':'MailInteractions','through':_0x75f2('0x121')});db['User'][_0x75f2('0x11e')](db['ChatInteraction'],{'as':_0x75f2('0x115'),'through':'user_has_chat_interactions'});db['User'][_0x75f2('0x11e')](db[_0x75f2('0x4e')],{'as':_0x75f2('0x122'),'through':'user_has_fax_interactions'});db[_0x75f2('0x10e')][_0x75f2('0x11e')](db['SmsInteraction'],{'as':_0x75f2('0x116'),'through':_0x75f2('0x123')});db[_0x75f2('0x10e')]['belongsToMany'](db[_0x75f2('0x113')],{'as':'OpenchannelInteractions','through':'user_has_openchannel_interactions'});db[_0x75f2('0x10e')][_0x75f2('0x11e')](db[_0x75f2('0x118')],{'as':_0x75f2('0x124'),'through':_0x75f2('0x125')});db['User'][_0x75f2('0x11e')](db['VoiceQueue'],{'as':_0x75f2('0x126'),'through':_0x75f2('0x31'),'required':![]});db[_0x75f2('0x10e')][_0x75f2('0x11e')](db['MailQueue'],{'as':_0x75f2('0x127'),'through':'UserMailQueue','required':![]});db[_0x75f2('0x10e')][_0x75f2('0x11e')](db[_0x75f2('0x6f')],{'as':_0x75f2('0x128'),'through':_0x75f2('0x129'),'required':![],'hooks':!![]});db[_0x75f2('0x10e')][_0x75f2('0x11e')](db[_0x75f2('0x12a')],{'as':_0x75f2('0x12b'),'through':'UserFaxQueue','required':![]});db['User']['belongsToMany'](db[_0x75f2('0x5d')],{'as':_0x75f2('0x12c'),'through':'UserSmsQueue','required':![]});db['User'][_0x75f2('0x11e')](db[_0x75f2('0x12d')],{'as':_0x75f2('0x12e'),'through':_0x75f2('0x12f'),'required':![]});db[_0x75f2('0x10e')][_0x75f2('0x11e')](db[_0x75f2('0x130')],{'as':_0x75f2('0x131'),'through':_0x75f2('0x39'),'required':![]});db[_0x75f2('0x10e')][_0x75f2('0x11e')](db[_0x75f2('0xf4')],{'through':_0x75f2('0x11f')});db[_0x75f2('0x10e')][_0x75f2('0x11e')](db[_0x75f2('0xf5')],{'as':_0x75f2('0x132'),'through':_0x75f2('0x133'),'required':![]});db[_0x75f2('0x10e')][_0x75f2('0x11e')](db[_0x75f2('0x65')],{'as':'ChatWebsites','through':_0x75f2('0x134')});db[_0x75f2('0x10e')][_0x75f2('0x11e')](db[_0x75f2('0x4c')],{'as':'FaxAccounts','through':_0x75f2('0x135')});db[_0x75f2('0x10e')][_0x75f2('0x11e')](db[_0x75f2('0x3c')],{'as':_0x75f2('0x136'),'through':'user_has_mail_accounts'});db[_0x75f2('0x10e')][_0x75f2('0x11e')](db['OpenchannelAccount'],{'as':_0x75f2('0x137'),'through':_0x75f2('0x138')});db[_0x75f2('0x10e')][_0x75f2('0x11e')](db[_0x75f2('0x55')],{'as':_0x75f2('0x139'),'through':_0x75f2('0x13a')});db['User'][_0x75f2('0x11e')](db[_0x75f2('0xfe')],{'as':'WhatsappAccounts','through':_0x75f2('0x13b')});db[_0x75f2('0x10e')][_0x75f2('0x11e')](db['SquareProject'],{'as':_0x75f2('0x13c'),'through':'user_has_square_projects'});db[_0x75f2('0x14')][_0x75f2('0x10f')](db[_0x75f2('0x18')],{'as':_0x75f2('0x13d'),'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x13e')});db[_0x75f2('0x16')][_0x75f2('0x10f')](db[_0x75f2('0x18')],{'onDelete':_0x75f2('0x10c')});db[_0x75f2('0x18')]['hasMany'](db[_0x75f2('0x18')],{'as':_0x75f2('0x13f'),'onDelete':'cascade'});db[_0x75f2('0x19')][_0x75f2('0x11e')](db[_0x75f2('0x8d')],{'as':_0x75f2('0x140'),'through':_0x75f2('0x141')});db[_0x75f2('0x1b')][_0x75f2('0x10f')](db['UserVoiceQueueRt'],{'as':_0x75f2('0x142'),'foreignKey':_0x75f2('0x143')});db[_0x75f2('0x1b')][_0x75f2('0x10f')](db[_0x75f2('0x76')],{'as':_0x75f2('0x144'),'foreignKey':_0x75f2('0x143')});db[_0x75f2('0x1b')][_0x75f2('0x10f')](db[_0x75f2('0x7a')],{'as':_0x75f2('0x145'),'foreignKey':_0x75f2('0x143')});db[_0x75f2('0x1b')][_0x75f2('0x10f')](db[_0x75f2('0x7b')],{'as':'HopperHistories','foreignKey':_0x75f2('0x143')});db[_0x75f2('0x1b')][_0x75f2('0x10f')](db[_0x75f2('0x7d')],{'as':_0x75f2('0x7d'),'foreignKey':_0x75f2('0x143')});db[_0x75f2('0x1b')]['hasMany'](db[_0x75f2('0x78')],{'as':_0x75f2('0x146'),'foreignKey':'VoiceQueueId'});db[_0x75f2('0x1b')][_0x75f2('0x10f')](db[_0x75f2('0x147')],{'as':_0x75f2('0x148'),'foreignKey':_0x75f2('0x143')});db[_0x75f2('0x1b')][_0x75f2('0x11b')](db[_0x75f2('0x2c')],{'as':'Trunk','foreignKey':'TrunkId'});db[_0x75f2('0x1b')]['belongsTo'](db['Trunk'],{'as':_0x75f2('0x149'),'foreignKey':_0x75f2('0x14a')});db[_0x75f2('0x1b')][_0x75f2('0x11b')](db[_0x75f2('0x85')],{'as':_0x75f2('0x85'),'foreignKey':'IntervalId'});db[_0x75f2('0x1b')][_0x75f2('0x11b')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x75f2('0x14b')});db[_0x75f2('0x1b')][_0x75f2('0x11e')](db[_0x75f2('0xf4')],{'as':'Lists','through':_0x75f2('0x14c')});db[_0x75f2('0x1b')][_0x75f2('0x11e')](db[_0x75f2('0x10e')],{'as':'Agents','through':_0x75f2('0x31')});db['VoiceQueue']['belongsToMany'](db[_0x75f2('0xe6')],{'as':_0x75f2('0x14d'),'through':_0x75f2('0x109')});db['VoiceQueue'][_0x75f2('0x11e')](db[_0x75f2('0xf4')],{'as':_0x75f2('0x14e'),'through':_0x75f2('0x14f')});db[_0x75f2('0x110')][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{'as':_0x75f2('0x10e'),'foreignKey':'UserId'});db[_0x75f2('0x1e')][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{'as':_0x75f2('0x10e'),'foreignKey':_0x75f2('0x10d')});db['VoiceMail']['hasMany'](db[_0x75f2('0x22')],{'as':_0x75f2('0x150'),'onDelete':_0x75f2('0x10c'),'foreignKey':'mailboxuser','sourceKey':_0x75f2('0x151')});db[_0x75f2('0x22')][_0x75f2('0x11b')](db[_0x75f2('0x20')],{'foreignKey':_0x75f2('0x152'),'targetKey':_0x75f2('0x151')});db['VoiceCallReport'][_0x75f2('0x10f')](db['VoiceQueueReport'],{'as':'QueueCalls','foreignKey':_0x75f2('0x153'),'constraints':![]});db['VoiceCallReport']['hasMany'](db['VoiceAgentReport'],{'as':_0x75f2('0x154'),'foreignKey':_0x75f2('0x153'),'constraints':![]});db[_0x75f2('0x24')][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{'as':_0x75f2('0x10e'),'foreignKey':_0x75f2('0x10d')});db[_0x75f2('0x24')][_0x75f2('0x11b')](db['CmContact'],{'as':_0x75f2('0x155'),'foreignKey':_0x75f2('0x156')});db['MailServerIn'][_0x75f2('0x11b')](db[_0x75f2('0x3c')],{'as':_0x75f2('0x3c'),'foreignKey':_0x75f2('0x157')});db[_0x75f2('0x158')][_0x75f2('0x11b')](db['MailAccount'],{'as':_0x75f2('0x3c'),'foreignKey':_0x75f2('0x157')});db[_0x75f2('0x3c')][_0x75f2('0x10b')](db['MailServerIn'],{'as':_0x75f2('0x159'),'onDelete':'cascade'});db['MailAccount'][_0x75f2('0x10b')](db[_0x75f2('0x158')],{'as':_0x75f2('0x15a'),'onDelete':'cascade'});db[_0x75f2('0x3c')][_0x75f2('0x10f')](db['Disposition'],{'as':_0x75f2('0x15b'),'foreignKey':_0x75f2('0x157'),'onDelete':_0x75f2('0x10c')});db[_0x75f2('0x3c')]['hasMany'](db[_0x75f2('0x15c')],{'as':'Answers','foreignKey':_0x75f2('0x157')});db['MailAccount'][_0x75f2('0x10f')](db[_0x75f2('0x44')],{'as':_0x75f2('0x150'),'foreignKey':_0x75f2('0x157')});db['MailAccount'][_0x75f2('0x10f')](db[_0x75f2('0x42')],{'as':_0x75f2('0x15d')});db[_0x75f2('0x3c')]['hasMany'](db[_0x75f2('0x45')],{'as':_0x75f2('0x13f')});db[_0x75f2('0x3c')][_0x75f2('0x11b')](db['CmList'],{'as':_0x75f2('0x15e'),'foreignKey':_0x75f2('0x15f')});db[_0x75f2('0x3c')][_0x75f2('0x11b')](db[_0x75f2('0x91')],{'as':_0x75f2('0x91'),'foreignKey':_0x75f2('0x160')});db[_0x75f2('0x3c')][_0x75f2('0x11b')](db[_0x75f2('0x87')],{'as':_0x75f2('0x161'),'foreignKey':_0x75f2('0x14b')});db[_0x75f2('0x3c')][_0x75f2('0x11e')](db[_0x75f2('0x10e')],{'as':'Agents','through':'user_has_mail_accounts'});db[_0x75f2('0x3e')]['belongsToMany'](db[_0x75f2('0x10e')],{'as':_0x75f2('0x162'),'through':_0x75f2('0x34')});db[_0x75f2('0x3e')][_0x75f2('0x11e')](db['Team'],{'through':_0x75f2('0x163'),'as':'Teams'});db[_0x75f2('0x42')][_0x75f2('0x10f')](db[_0x75f2('0x44')],{'as':_0x75f2('0x150'),'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x164')});db['MailInteraction']['belongsTo'](db['MailAccount'],{'as':'Account','foreignKey':_0x75f2('0x157')});db[_0x75f2('0x42')]['belongsTo'](db[_0x75f2('0x165')],{'as':_0x75f2('0x155'),'foreignKey':_0x75f2('0x156')});db[_0x75f2('0x42')][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{'as':_0x75f2('0x166'),'foreignKey':_0x75f2('0x10d')});db[_0x75f2('0x42')][_0x75f2('0x11e')](db[_0x75f2('0x8f')],{'through':_0x75f2('0x167'),'as':_0x75f2('0x168')});db['MailInteraction']['belongsToMany'](db['Tag'],{'through':'mail_interaction_has_tags','as':_0x75f2('0x169')});db[_0x75f2('0x42')][_0x75f2('0x11e')](db['User'],{'as':'Users','through':'user_has_mail_interactions','foreignKey':_0x75f2('0x164')});db[_0x75f2('0x44')][_0x75f2('0x10f')](db[_0x75f2('0x16a')],{'as':_0x75f2('0x16b'),'onDelete':'cascade'});db[_0x75f2('0x44')][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{'as':_0x75f2('0x10e')});db['MailMessage']['belongsTo'](db['CmContact'],{'onDelete':'cascade','as':_0x75f2('0x155')});db[_0x75f2('0x44')][_0x75f2('0x11b')](db[_0x75f2('0x42')],{'as':_0x75f2('0x16c'),'foreignKey':'MailInteractionId'});db['MailMessage'][_0x75f2('0x11b')](db[_0x75f2('0x3c')],{'as':'Account','foreignKey':'MailAccountId'});db[_0x75f2('0x44')]['belongsTo'](db[_0x75f2('0x65')],{'as':_0x75f2('0x65'),'foreignKey':_0x75f2('0x16d')});db[_0x75f2('0x44')][_0x75f2('0x11b')](db[_0x75f2('0x6e')],{'as':_0x75f2('0x6e'),'foreignKey':'ChatOfflineMessageId'});db['MailApplication']['belongsTo'](db[_0x75f2('0x10e')],{'onDelete':'restrict'});db[_0x75f2('0x45')][_0x75f2('0x11b')](db[_0x75f2('0x3e')],{'onDelete':_0x75f2('0x16e')});db[_0x75f2('0x45')][_0x75f2('0x11b')](db[_0x75f2('0x3c')],{'onDelete':'restrict'});db['MailApplication'][_0x75f2('0x11b')](db['Interval'],{'onDelete':_0x75f2('0x16e'),'foreignKey':'IntervalId'});db[_0x75f2('0x45')][_0x75f2('0x11b')](db['Tag'],{'onDelete':_0x75f2('0x16e'),'foreignKey':'TagId'});db[_0x75f2('0x47')][_0x75f2('0x11b')](db[_0x75f2('0x3c')],{});db['MailQueueReport'][_0x75f2('0x11b')](db[_0x75f2('0xf4')],{'as':_0x75f2('0x15e'),'foreignKey':_0x75f2('0x15f')});db[_0x75f2('0x47')][_0x75f2('0x11b')](db[_0x75f2('0x165')],{'as':'Contact','foreignKey':_0x75f2('0x156')});db[_0x75f2('0x47')][_0x75f2('0x11b')](db[_0x75f2('0x42')],{});db[_0x75f2('0x47')][_0x75f2('0x11b')](db[_0x75f2('0x44')],{});db[_0x75f2('0x47')][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{});db['MailQueueReport'][_0x75f2('0x11b')](db[_0x75f2('0x3e')],{});db['Dashboard']['hasMany'](db[_0x75f2('0x4a')],{'as':_0x75f2('0x16f'),'onDelete':_0x75f2('0x10c')});db[_0x75f2('0x4c')][_0x75f2('0x10f')](db[_0x75f2('0x83')],{'as':_0x75f2('0x15b'),'foreignKey':_0x75f2('0x170'),'onDelete':_0x75f2('0x10c')});db[_0x75f2('0x4c')][_0x75f2('0x10f')](db[_0x75f2('0x15c')],{'as':_0x75f2('0x171'),'foreignKey':_0x75f2('0x170')});db[_0x75f2('0x4c')][_0x75f2('0x10f')](db[_0x75f2('0x4e')],{'as':_0x75f2('0x15d')});db['FaxAccount'][_0x75f2('0x10f')](db[_0x75f2('0x172')],{'as':_0x75f2('0x13f')});db[_0x75f2('0x4c')]['hasMany'](db['VoiceExtension'],{'as':_0x75f2('0x173'),'onDelete':_0x75f2('0x10c')});db['FaxAccount'][_0x75f2('0x10f')](db['FaxMessage'],{'as':_0x75f2('0x150')});db[_0x75f2('0x4c')][_0x75f2('0x11b')](db[_0x75f2('0x2c')],{'as':_0x75f2('0x2c')});db['FaxAccount'][_0x75f2('0x11b')](db[_0x75f2('0xf4')],{'as':'List','foreignKey':_0x75f2('0x15f')});db['FaxAccount'][_0x75f2('0x11b')](db[_0x75f2('0x87')],{'as':_0x75f2('0x161'),'foreignKey':_0x75f2('0x14b')});db['FaxAccount']['belongsToMany'](db[_0x75f2('0x10e')],{'as':_0x75f2('0x162'),'through':_0x75f2('0x135')});db[_0x75f2('0x172')]['belongsTo'](db['User'],{'onDelete':_0x75f2('0x16e')});db[_0x75f2('0x172')][_0x75f2('0x11b')](db[_0x75f2('0x12a')],{'onDelete':_0x75f2('0x16e')});db[_0x75f2('0x172')]['belongsTo'](db[_0x75f2('0x4c')],{'onDelete':_0x75f2('0x16e')});db[_0x75f2('0x172')][_0x75f2('0x11b')](db[_0x75f2('0x8f')],{'onDelete':_0x75f2('0x16e'),'foreignKey':_0x75f2('0x174')});db[_0x75f2('0x4e')][_0x75f2('0x10f')](db[_0x75f2('0x50')],{'as':_0x75f2('0x150'),'onDelete':_0x75f2('0x10c'),'foreignKey':'FaxInteractionId'});db[_0x75f2('0x4e')][_0x75f2('0x11b')](db[_0x75f2('0x4c')],{'as':_0x75f2('0x175'),'foreignKey':'FaxAccountId'});db['FaxInteraction']['belongsTo'](db['CmContact'],{'as':_0x75f2('0x155'),'foreignKey':_0x75f2('0x156')});db['FaxInteraction'][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{'as':_0x75f2('0x166'),'foreignKey':_0x75f2('0x10d')});db[_0x75f2('0x4e')][_0x75f2('0x11e')](db[_0x75f2('0x8f')],{'through':'fax_interaction_has_tags','as':_0x75f2('0x168')});db[_0x75f2('0x4e')]['belongsToMany'](db[_0x75f2('0x8f')],{'through':'fax_interaction_has_tags','as':_0x75f2('0x169')});db[_0x75f2('0x4e')][_0x75f2('0x11e')](db[_0x75f2('0x10e')],{'as':_0x75f2('0x176'),'through':_0x75f2('0x177'),'foreignKey':_0x75f2('0x178')});db[_0x75f2('0x50')]['belongsTo'](db[_0x75f2('0x10e')],{'onDelete':_0x75f2('0x10c'),'as':_0x75f2('0x10e')});db['FaxMessage']['belongsTo'](db[_0x75f2('0x4e')],{'as':_0x75f2('0x16c'),'foreignKey':_0x75f2('0x178')});db[_0x75f2('0x50')][_0x75f2('0x11b')](db['CmContact'],{'onDelete':_0x75f2('0x10c'),'as':'Contact'});db[_0x75f2('0x50')][_0x75f2('0x11b')](db[_0x75f2('0x16a')],{'as':_0x75f2('0x16a'),'foreignKey':'AttachmentId'});db[_0x75f2('0x50')][_0x75f2('0x11b')](db[_0x75f2('0x4c')],{'as':_0x75f2('0x175'),'foreignKey':_0x75f2('0x170')});db[_0x75f2('0x12a')][_0x75f2('0x11e')](db['User'],{'as':_0x75f2('0x162'),'through':_0x75f2('0x36')});db[_0x75f2('0x12a')][_0x75f2('0x11e')](db[_0x75f2('0xe6')],{'through':'team_has_fax_queues','as':_0x75f2('0x14d')});db[_0x75f2('0x53')][_0x75f2('0x11b')](db['FaxAccount'],{});db[_0x75f2('0x53')][_0x75f2('0x11b')](db[_0x75f2('0xf4')],{'as':_0x75f2('0x15e'),'foreignKey':'ListId'});db[_0x75f2('0x53')]['belongsTo'](db['CmContact'],{'as':_0x75f2('0x155'),'foreignKey':'ContactId'});db[_0x75f2('0x53')][_0x75f2('0x11b')](db[_0x75f2('0x4e')],{});db[_0x75f2('0x53')][_0x75f2('0x11b')](db[_0x75f2('0x50')],{});db['FaxQueueReport'][_0x75f2('0x11b')](db['User'],{});db[_0x75f2('0x53')][_0x75f2('0x11b')](db[_0x75f2('0x12a')],{});db['SmsAccount'][_0x75f2('0x10f')](db[_0x75f2('0x83')],{'as':'Dispositions','foreignKey':_0x75f2('0x179'),'onDelete':_0x75f2('0x10c')});db[_0x75f2('0x55')][_0x75f2('0x10f')](db[_0x75f2('0x15c')],{'as':_0x75f2('0x171'),'foreignKey':_0x75f2('0x179')});db[_0x75f2('0x55')][_0x75f2('0x10f')](db['SmsMessage'],{'as':'Messages','foreignKey':_0x75f2('0x179')});db[_0x75f2('0x55')][_0x75f2('0x10f')](db[_0x75f2('0x59')],{'as':'Interactions'});db[_0x75f2('0x55')]['hasMany'](db[_0x75f2('0x57')],{'as':'Applications'});db['SmsAccount']['belongsTo'](db[_0x75f2('0xf4')],{'as':_0x75f2('0x15e'),'foreignKey':_0x75f2('0x15f')});db[_0x75f2('0x55')][_0x75f2('0x11b')](db[_0x75f2('0x87')],{'as':'mandatoryDispositionPause','foreignKey':_0x75f2('0x14b')});db['SmsAccount'][_0x75f2('0x11e')](db['User'],{'as':_0x75f2('0x162'),'through':'user_has_sms_accounts'});db['SmsApplication'][_0x75f2('0x11b')](db['User'],{'onDelete':_0x75f2('0x16e')});db[_0x75f2('0x57')]['belongsTo'](db[_0x75f2('0x5d')],{'onDelete':_0x75f2('0x16e')});db['SmsApplication'][_0x75f2('0x11b')](db[_0x75f2('0x55')],{'onDelete':_0x75f2('0x16e')});db[_0x75f2('0x57')][_0x75f2('0x11b')](db['Interval'],{'onDelete':'restrict','foreignKey':_0x75f2('0x17a')});db[_0x75f2('0x57')][_0x75f2('0x11b')](db['Tag'],{'onDelete':_0x75f2('0x16e'),'foreignKey':'TagId'});db[_0x75f2('0x59')][_0x75f2('0x10f')](db[_0x75f2('0x5b')],{'as':_0x75f2('0x150'),'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x17b')});db['SmsInteraction'][_0x75f2('0x11b')](db['SmsAccount'],{'as':_0x75f2('0x175'),'foreignKey':_0x75f2('0x179')});db['SmsInteraction'][_0x75f2('0x11b')](db['CmContact'],{'as':_0x75f2('0x155'),'foreignKey':'ContactId'});db[_0x75f2('0x59')][_0x75f2('0x11b')](db['User'],{'as':_0x75f2('0x166'),'foreignKey':_0x75f2('0x10d')});db[_0x75f2('0x59')][_0x75f2('0x11e')](db[_0x75f2('0x8f')],{'through':_0x75f2('0x17c'),'as':'Tags'});db[_0x75f2('0x59')][_0x75f2('0x11e')](db[_0x75f2('0x8f')],{'through':_0x75f2('0x17c'),'as':_0x75f2('0x169')});db[_0x75f2('0x59')]['belongsToMany'](db[_0x75f2('0x10e')],{'as':_0x75f2('0x176'),'through':'user_has_sms_interactions','foreignKey':_0x75f2('0x17b')});db[_0x75f2('0x5b')][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{'as':_0x75f2('0x10e')});db[_0x75f2('0x5b')]['belongsTo'](db['CmContact'],{'onDelete':'cascade','as':_0x75f2('0x155')});db['SmsMessage'][_0x75f2('0x11b')](db[_0x75f2('0x59')],{'onDelete':_0x75f2('0x10c'),'as':_0x75f2('0x16c'),'foreignKey':_0x75f2('0x17b')});db[_0x75f2('0x5b')][_0x75f2('0x11b')](db[_0x75f2('0x55')],{'as':_0x75f2('0x175'),'foreignKey':_0x75f2('0x179')});db[_0x75f2('0x5d')][_0x75f2('0x11e')](db[_0x75f2('0x10e')],{'as':_0x75f2('0x162'),'through':_0x75f2('0x37'),'foreignKey':_0x75f2('0x17d')});db[_0x75f2('0x5d')][_0x75f2('0x11e')](db[_0x75f2('0xe6')],{'through':_0x75f2('0x17e'),'as':_0x75f2('0x14d')});db['OpenchannelAccount']['hasMany'](db[_0x75f2('0x83')],{'as':_0x75f2('0x15b'),'foreignKey':_0x75f2('0x17f'),'onDelete':_0x75f2('0x10c')});db[_0x75f2('0x5f')]['hasMany'](db[_0x75f2('0x15c')],{'as':'Answers','foreignKey':_0x75f2('0x17f')});db[_0x75f2('0x5f')][_0x75f2('0x10f')](db[_0x75f2('0x113')],{'as':'Interactions','foreignKey':_0x75f2('0x17f')});db[_0x75f2('0x5f')]['hasMany'](db[_0x75f2('0x62')],{'as':'Messages','foreignKey':_0x75f2('0x17f')});db['OpenchannelAccount'][_0x75f2('0x10f')](db[_0x75f2('0x60')],{'as':'Applications','foreignKey':_0x75f2('0x17f')});db[_0x75f2('0x5f')][_0x75f2('0x11b')](db[_0x75f2('0xf4')],{'as':_0x75f2('0x15e'),'foreignKey':'ListId'});db[_0x75f2('0x5f')]['belongsTo'](db['Pause'],{'as':_0x75f2('0x161'),'foreignKey':_0x75f2('0x14b')});db[_0x75f2('0x5f')]['belongsToMany'](db[_0x75f2('0x10e')],{'as':_0x75f2('0x162'),'through':_0x75f2('0x138')});db[_0x75f2('0x60')]['belongsTo'](db[_0x75f2('0x10e')],{'onDelete':_0x75f2('0x16e')});db[_0x75f2('0x60')][_0x75f2('0x11b')](db['OpenchannelQueue'],{'onDelete':_0x75f2('0x16e'),'foreignKey':_0x75f2('0x180')});db[_0x75f2('0x60')]['belongsTo'](db[_0x75f2('0x5f')],{'onDelete':'restrict','foreignKey':_0x75f2('0x17f')});db[_0x75f2('0x60')]['belongsTo'](db[_0x75f2('0x85')],{'onDelete':_0x75f2('0x16e'),'foreignKey':'IntervalId'});db[_0x75f2('0x60')][_0x75f2('0x11b')](db[_0x75f2('0x8f')],{'onDelete':_0x75f2('0x16e'),'foreignKey':_0x75f2('0x174')});db['OpenchannelInteraction'][_0x75f2('0x10f')](db[_0x75f2('0x62')],{'as':'Messages','onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x181')});db[_0x75f2('0x113')][_0x75f2('0x11b')](db['OpenchannelAccount'],{'as':_0x75f2('0x175'),'foreignKey':'OpenchannelAccountId'});db[_0x75f2('0x113')]['belongsTo'](db[_0x75f2('0x165')],{'as':_0x75f2('0x155'),'foreignKey':'ContactId'});db[_0x75f2('0x113')][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{'as':_0x75f2('0x166'),'foreignKey':_0x75f2('0x10d')});db[_0x75f2('0x113')][_0x75f2('0x11e')](db[_0x75f2('0x8f')],{'through':_0x75f2('0x182'),'as':_0x75f2('0x168')});db[_0x75f2('0x113')][_0x75f2('0x11e')](db[_0x75f2('0x8f')],{'through':_0x75f2('0x182'),'as':'ThroughTags'});db['OpenchannelInteraction'][_0x75f2('0x11e')](db[_0x75f2('0x10e')],{'as':_0x75f2('0x176'),'through':_0x75f2('0x183'),'foreignKey':_0x75f2('0x181')});db['OpenchannelMessage'][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{'onDelete':_0x75f2('0x10c'),'as':_0x75f2('0x10e')});db[_0x75f2('0x62')][_0x75f2('0x11b')](db[_0x75f2('0x165')],{'onDelete':_0x75f2('0x10c'),'as':_0x75f2('0x155')});db[_0x75f2('0x62')][_0x75f2('0x11b')](db['OpenchannelInteraction'],{'onDelete':_0x75f2('0x10c'),'as':_0x75f2('0x16c'),'foreignKey':'OpenchannelInteractionId'});db[_0x75f2('0x62')][_0x75f2('0x11b')](db[_0x75f2('0x16a')],{'as':'Attachment','foreignKey':'AttachmentId'});db[_0x75f2('0x62')][_0x75f2('0x11b')](db[_0x75f2('0x5f')],{'as':'Account','foreignKey':_0x75f2('0x17f')});db['OpenchannelQueue'][_0x75f2('0x11e')](db[_0x75f2('0x10e')],{'as':_0x75f2('0x162'),'through':'UserOpenchannelQueue','foreignKey':_0x75f2('0x180')});db['OpenchannelQueue']['belongsToMany'](db[_0x75f2('0xe6')],{'through':_0x75f2('0x184'),'as':_0x75f2('0x14d')});db['ChatWebsite']['hasMany'](db[_0x75f2('0x83')],{'as':'Dispositions','foreignKey':_0x75f2('0x16d'),'onDelete':_0x75f2('0x10c')});db['ChatWebsite'][_0x75f2('0x10f')](db['CannedAnswer'],{'as':_0x75f2('0x171'),'foreignKey':_0x75f2('0x16d')});db[_0x75f2('0x65')]['hasMany'](db['ChatProactiveAction'],{'as':_0x75f2('0x185')});db['ChatWebsite']['hasMany'](db[_0x75f2('0x6a')],{'as':_0x75f2('0x15d')});db[_0x75f2('0x65')][_0x75f2('0x10f')](db[_0x75f2('0x186')],{'as':_0x75f2('0x13f')});db[_0x75f2('0x65')]['hasMany'](db[_0x75f2('0x6c')],{'as':'Messages'});db[_0x75f2('0x65')][_0x75f2('0x11b')](db[_0x75f2('0xf4')],{'as':'List','foreignKey':_0x75f2('0x15f')});db[_0x75f2('0x65')]['belongsTo'](db[_0x75f2('0x85')],{'as':_0x75f2('0x85'),'foreignKey':_0x75f2('0x17a')});db['ChatWebsite']['belongsTo'](db[_0x75f2('0x3c')],{'as':_0x75f2('0x3c'),'foreignKey':_0x75f2('0x157')});db[_0x75f2('0x65')][_0x75f2('0x11b')](db['Pause'],{'as':_0x75f2('0x161'),'foreignKey':_0x75f2('0x14b')});db[_0x75f2('0x65')][_0x75f2('0x11e')](db[_0x75f2('0x10e')],{'as':_0x75f2('0x162'),'through':_0x75f2('0x134')});db[_0x75f2('0x67')][_0x75f2('0x11b')](db[_0x75f2('0x5f')],{});db['OpenchannelQueueReport'][_0x75f2('0x11b')](db['CmList'],{'as':_0x75f2('0x15e'),'foreignKey':_0x75f2('0x15f')});db[_0x75f2('0x67')][_0x75f2('0x11b')](db[_0x75f2('0x165')],{'as':'Contact','foreignKey':'ContactId'});db[_0x75f2('0x67')][_0x75f2('0x11b')](db[_0x75f2('0x113')],{});db['OpenchannelQueueReport']['belongsTo'](db[_0x75f2('0x62')],{});db[_0x75f2('0x67')]['belongsTo'](db['User'],{});db[_0x75f2('0x67')][_0x75f2('0x11b')](db[_0x75f2('0x12d')],{});db['ChatApplication']['belongsTo'](db['User'],{'as':_0x75f2('0x187'),'foreignKey':_0x75f2('0x10d'),'onDelete':_0x75f2('0x16e')});db[_0x75f2('0x186')][_0x75f2('0x11b')](db[_0x75f2('0x6f')],{'as':_0x75f2('0x188'),'foreignKey':_0x75f2('0x189'),'onDelete':_0x75f2('0x16e')});db[_0x75f2('0x186')]['belongsTo'](db['ChatWebsite'],{'as':_0x75f2('0x18a'),'foreignKey':_0x75f2('0x16d'),'onDelete':_0x75f2('0x16e')});db['ChatApplication'][_0x75f2('0x11b')](db['Tag'],{'onDelete':_0x75f2('0x16e'),'foreignKey':_0x75f2('0x174')});db[_0x75f2('0x6a')]['hasMany'](db[_0x75f2('0x6c')],{'as':'Messages','onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x18b')});db['ChatInteraction'][_0x75f2('0x11b')](db[_0x75f2('0x65')],{'as':_0x75f2('0x175'),'foreignKey':_0x75f2('0x16d')});db[_0x75f2('0x6a')][_0x75f2('0x11b')](db[_0x75f2('0x165')],{'as':'Contact','foreignKey':_0x75f2('0x156')});db[_0x75f2('0x6a')][_0x75f2('0x11b')](db['User'],{'as':'Owner','foreignKey':_0x75f2('0x10d')});db[_0x75f2('0x6a')]['belongsToMany'](db[_0x75f2('0x8f')],{'through':_0x75f2('0x18c'),'as':_0x75f2('0x168')});db['ChatInteraction']['belongsToMany'](db['Tag'],{'through':_0x75f2('0x18c'),'as':_0x75f2('0x169')});db['ChatInteraction'][_0x75f2('0x11e')](db['User'],{'as':'Users','through':'user_has_chat_interactions','foreignKey':_0x75f2('0x18b')});db[_0x75f2('0x6c')][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{'onDelete':'cascade','as':_0x75f2('0x10e')});db[_0x75f2('0x6c')][_0x75f2('0x11b')](db['CmContact'],{'onDelete':_0x75f2('0x10c'),'as':'Contact','foreignKey':_0x75f2('0x156')});db['ChatMessage']['belongsTo'](db[_0x75f2('0x6a')],{'onDelete':_0x75f2('0x10c'),'as':'Interaction','foreignKey':_0x75f2('0x18b')});db[_0x75f2('0x6c')][_0x75f2('0x11b')](db[_0x75f2('0x16a')],{'as':_0x75f2('0x16a'),'foreignKey':_0x75f2('0x18d')});db[_0x75f2('0x6c')][_0x75f2('0x11b')](db[_0x75f2('0x65')],{'as':_0x75f2('0x175'),'foreignKey':_0x75f2('0x16d')});db['ChatOfflineMessage'][_0x75f2('0x10f')](db['Attachment'],{'as':_0x75f2('0x16b'),'foreignKey':_0x75f2('0x18e'),'onDelete':_0x75f2('0x10c'),'hooks':!![]});db[_0x75f2('0x6e')][_0x75f2('0x11b')](db[_0x75f2('0x165')],{'onDelete':_0x75f2('0x10c'),'as':'Contact','foreignKey':'ContactId'});db['ChatOfflineMessage'][_0x75f2('0x11b')](db[_0x75f2('0x65')],{'as':'Account','foreignKey':_0x75f2('0x16d')});db[_0x75f2('0x6f')][_0x75f2('0x11e')](db[_0x75f2('0x10e')],{'as':_0x75f2('0x162'),'through':_0x75f2('0x129'),'hooks':!![]});db[_0x75f2('0x6f')][_0x75f2('0x11e')](db[_0x75f2('0xe6')],{'through':_0x75f2('0x18f'),'as':_0x75f2('0x14d')});db[_0x75f2('0x71')][_0x75f2('0x10f')](db['ChatInternalMessage'],{'as':_0x75f2('0x150'),'foreignKey':_0x75f2('0x190'),'onDelete':_0x75f2('0x10c')});db[_0x75f2('0x71')][_0x75f2('0x11e')](db[_0x75f2('0x10e')],{'as':'Members','through':_0x75f2('0x11d')});db['ChatProactiveAction'][_0x75f2('0x11b')](db[_0x75f2('0x65')],{'as':'Website','foreignKey':'ChatWebsiteId'});db[_0x75f2('0x191')][_0x75f2('0x10f')](db[_0x75f2('0x165')],{'as':_0x75f2('0x192'),'foreignKey':_0x75f2('0x193')});db['CmContact']['hasMany'](db[_0x75f2('0x76')],{'as':_0x75f2('0x144'),'foreignKey':'ContactId'});db['CmContact']['hasMany'](db[_0x75f2('0x7a')],{'as':_0x75f2('0x145'),'foreignKey':_0x75f2('0x156')});db[_0x75f2('0x165')][_0x75f2('0x10f')](db[_0x75f2('0x7b')],{'as':_0x75f2('0x194'),'foreignKey':_0x75f2('0x156')});db[_0x75f2('0x165')]['hasMany'](db[_0x75f2('0x7d')],{'as':_0x75f2('0x7d'),'foreignKey':_0x75f2('0x156')});db[_0x75f2('0x165')]['hasMany'](db['JscriptySessionReport'],{'as':_0x75f2('0x148'),'foreignKey':'ContactId'});db['CmContact']['hasMany'](db[_0x75f2('0x113')],{'as':_0x75f2('0x114'),'foreignKey':_0x75f2('0x156'),'onDelete':_0x75f2('0x16e')});db[_0x75f2('0x165')]['hasMany'](db['ChatInteraction'],{'as':_0x75f2('0x115'),'foreignKey':'ContactId','onDelete':_0x75f2('0x16e')});db[_0x75f2('0x165')][_0x75f2('0x10f')](db['SmsInteraction'],{'as':_0x75f2('0x116'),'foreignKey':_0x75f2('0x156'),'onDelete':_0x75f2('0x16e')});db[_0x75f2('0x165')][_0x75f2('0x10f')](db['FaxInteraction'],{'as':_0x75f2('0x122'),'foreignKey':'ContactId','onDelete':_0x75f2('0x16e')});db['CmContact'][_0x75f2('0x10f')](db[_0x75f2('0x42')],{'as':_0x75f2('0x117'),'foreignKey':_0x75f2('0x156'),'onDelete':_0x75f2('0x16e')});db[_0x75f2('0x165')]['belongsTo'](db['CmCompany'],{'as':_0x75f2('0x195'),'foreignKey':'CompanyId'});db['CmContact']['belongsTo'](db[_0x75f2('0xf4')],{'as':_0x75f2('0x15e'),'foreignKey':_0x75f2('0x15f'),'onDelete':_0x75f2('0x10c')});db['CmContact'][_0x75f2('0x11e')](db[_0x75f2('0x10e')],{'as':_0x75f2('0x176'),'through':_0x75f2('0x196')});db['CmContact'][_0x75f2('0x11e')](db[_0x75f2('0x8f')],{'as':_0x75f2('0x168'),'through':_0x75f2('0x197')});db[_0x75f2('0x165')][_0x75f2('0x11e')](db[_0x75f2('0x8f')],{'through':'cm_contact_has_tags','as':_0x75f2('0x169')});db[_0x75f2('0x76')][_0x75f2('0x11b')](db[_0x75f2('0x165')],{'as':_0x75f2('0x155'),'foreignKey':_0x75f2('0x156'),'onDelete':_0x75f2('0x10c')});db['CmHopper'][_0x75f2('0x11b')](db['CmList'],{'as':'List','foreignKey':_0x75f2('0x15f'),'onDelete':_0x75f2('0x10c')});db[_0x75f2('0x76')][_0x75f2('0x11b')](db['User'],{'as':_0x75f2('0x187'),'foreignKey':'UserId'});db['CmHopper'][_0x75f2('0x11b')](db[_0x75f2('0x1b')],{'as':_0x75f2('0x188'),'foreignKey':_0x75f2('0x143'),'onDelete':'cascade'});db['CmHopper'][_0x75f2('0x11b')](db[_0x75f2('0xea')],{'as':'Campaign','foreignKey':_0x75f2('0x198'),'onDelete':_0x75f2('0x10c')});db[_0x75f2('0x76')]['belongsTo'](db['User'],{'as':'Owner','foreignKey':_0x75f2('0x199')});db[_0x75f2('0x78')]['belongsTo'](db['CmContact'],{'as':_0x75f2('0x155'),'foreignKey':_0x75f2('0x156'),'onDelete':'cascade'});db[_0x75f2('0x78')][_0x75f2('0x11b')](db[_0x75f2('0xf4')],{'as':_0x75f2('0x15e'),'foreignKey':_0x75f2('0x15f'),'onDelete':_0x75f2('0x10c')});db[_0x75f2('0x78')][_0x75f2('0x11b')](db['VoiceQueue'],{'as':_0x75f2('0x188'),'foreignKey':_0x75f2('0x143'),'onDelete':_0x75f2('0x10c')});db[_0x75f2('0x78')]['belongsTo'](db[_0x75f2('0xea')],{'as':_0x75f2('0xea'),'foreignKey':_0x75f2('0x198'),'onDelete':'cascade'});db[_0x75f2('0x19a')][_0x75f2('0x10f')](db[_0x75f2('0x19b')],{'as':{'plural':_0x75f2('0x19c'),'singular':_0x75f2('0x19d')},'foreignKey':'AutomationAllId','onDelete':_0x75f2('0x10c'),'hooks':!![]});db[_0x75f2('0x19a')][_0x75f2('0x10f')](db[_0x75f2('0x19b')],{'as':{'plural':'Any','singular':_0x75f2('0x19e')},'foreignKey':'AutomationAnyId','onDelete':_0x75f2('0x10c'),'hooks':!![]});db[_0x75f2('0x19a')][_0x75f2('0x10f')](db[_0x75f2('0x80')],{'as':_0x75f2('0x19f'),'foreignKey':_0x75f2('0x1a0'),'onDelete':_0x75f2('0x10c'),'hooks':!![]});db[_0x75f2('0x83')]['hasMany'](db[_0x75f2('0x83')],{'as':_0x75f2('0x15b'),'foreignKey':_0x75f2('0x1a1'),'onDelete':_0x75f2('0x10c')});db[_0x75f2('0x85')][_0x75f2('0x10f')](db[_0x75f2('0x85')],{'as':_0x75f2('0x1a2'),'foreignKey':_0x75f2('0x17a'),'onDelete':_0x75f2('0x10c'),'hooks':!![],'required':![]});db[_0x75f2('0x85')][_0x75f2('0x10f')](db[_0x75f2('0x18')],{'as':_0x75f2('0x1a3'),'foreignKey':_0x75f2('0x17a'),'onDelete':'restrict'});db[_0x75f2('0x85')][_0x75f2('0x10f')](db[_0x75f2('0x45')],{'as':'MailApplications','foreignKey':_0x75f2('0x17a')});db[_0x75f2('0x85')][_0x75f2('0x10f')](db[_0x75f2('0x186')],{'as':_0x75f2('0x1a4'),'foreignKey':_0x75f2('0x17a')});db[_0x75f2('0x85')]['hasMany'](db['FaxApplication'],{'as':_0x75f2('0x1a5'),'foreignKey':_0x75f2('0x17a')});db[_0x75f2('0x85')]['hasMany'](db[_0x75f2('0x57')],{'as':_0x75f2('0x1a6'),'foreignKey':'IntervalId'});db[_0x75f2('0x8b')][_0x75f2('0x11b')](db[_0x75f2('0x3c')],{});db[_0x75f2('0x8b')][_0x75f2('0x11b')](db[_0x75f2('0x9b')],{'foreignKey':_0x75f2('0x1a7')});db[_0x75f2('0x8b')][_0x75f2('0x11b')](db[_0x75f2('0x99')],{'foreignKey':_0x75f2('0x1a8')});db[_0x75f2('0x8d')][_0x75f2('0x11e')](db[_0x75f2('0x19')],{'as':_0x75f2('0x1a9'),'through':_0x75f2('0x141'),'onDelete':'restrict'});db['Tag']['belongsToMany'](db['CmContact'],{'through':_0x75f2('0x197')});db[_0x75f2('0x8f')]['belongsToMany'](db['ChatInteraction'],{'through':_0x75f2('0x18c')});db[_0x75f2('0x8f')][_0x75f2('0x11e')](db[_0x75f2('0x42')],{'through':_0x75f2('0x167')});db[_0x75f2('0x8f')]['belongsToMany'](db[_0x75f2('0x59')],{'through':_0x75f2('0x17c')});db[_0x75f2('0x8f')][_0x75f2('0x11e')](db[_0x75f2('0x4e')],{'through':_0x75f2('0x1aa')});db[_0x75f2('0x8f')][_0x75f2('0x11e')](db[_0x75f2('0x113')],{'through':_0x75f2('0x182')});db[_0x75f2('0x8f')]['belongsToMany'](db['WhatsappInteraction'],{'through':_0x75f2('0x1ab')});db[_0x75f2('0x93')][_0x75f2('0x10f')](db[_0x75f2('0x19b')],{'as':{'plural':'AllConditions','singular':_0x75f2('0x1ac')},'foreignKey':_0x75f2('0x1ad'),'onDelete':'cascade','hooks':!![]});db[_0x75f2('0x93')]['hasMany'](db[_0x75f2('0x19b')],{'as':{'plural':_0x75f2('0x1ae'),'singular':_0x75f2('0x1af')},'foreignKey':_0x75f2('0x1b0'),'onDelete':'cascade','hooks':!![]});db[_0x75f2('0x93')][_0x75f2('0x10f')](db[_0x75f2('0x80')],{'as':_0x75f2('0x19f'),'foreignKey':_0x75f2('0x1b1'),'onDelete':_0x75f2('0x10c'),'hooks':!![]});db[_0x75f2('0x99')][_0x75f2('0x10f')](db[_0x75f2('0xa0')],{'as':_0x75f2('0x1b2'),'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1a8'),'hooks':!![]});db['AnalyticDefaultReport'][_0x75f2('0x10f')](db[_0x75f2('0xa0')],{'as':_0x75f2('0x1b2'),'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1a7')});db['AnalyticMetric'][_0x75f2('0x10f')](db[_0x75f2('0xa0')],{'as':'Fields','onDelete':'cascade','foreignKey':'MetricId'});db[_0x75f2('0xa0')][_0x75f2('0x11b')](db[_0x75f2('0x9e')],{'foreignKey':_0x75f2('0x1b3')});db[_0x75f2('0xa3')][_0x75f2('0x10f')](db['SalesforceConfiguration'],{'as':_0x75f2('0x1b4'),'onDelete':'cascade','foreignKey':_0x75f2('0x1b5')});db[_0x75f2('0x1b6')][_0x75f2('0x10f')](db['SalesforceField'],{'as':_0x75f2('0x1b7'),'onDelete':_0x75f2('0x10c'),'foreignKey':'SubjectId'});db['SalesforceConfiguration'][_0x75f2('0x10f')](db['SalesforceField'],{'as':_0x75f2('0x1b8'),'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1b9')});db[_0x75f2('0x1b6')][_0x75f2('0x10f')](db[_0x75f2('0xa5')],{'as':_0x75f2('0x1b2'),'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1ba')});db[_0x75f2('0x1b6')]['belongsTo'](db['SalesforceAccount'],{'as':_0x75f2('0x175'),'foreignKey':_0x75f2('0x1b5')});db[_0x75f2('0xa5')][_0x75f2('0x10f')](db['SalesforceField'],{'as':'Subject','foreignKey':_0x75f2('0x1bb')});db[_0x75f2('0xa5')][_0x75f2('0x10f')](db[_0x75f2('0xa5')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x75f2('0xa5')][_0x75f2('0x10f')](db[_0x75f2('0xa5')],{'as':_0x75f2('0x1bc'),'foreignKey':_0x75f2('0x1ba')});db['SalesforceField'][_0x75f2('0x11b')](db[_0x75f2('0x95')],{'as':_0x75f2('0x95'),'foreignKey':'VariableId'});db[_0x75f2('0xa7')][_0x75f2('0x10f')](db[_0x75f2('0xa9')],{'as':'Configurations','onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1b5')});db[_0x75f2('0xa9')][_0x75f2('0x10f')](db['SugarcrmField'],{'as':'Subjects','onDelete':_0x75f2('0x10c'),'foreignKey':'SubjectId'});db[_0x75f2('0xa9')][_0x75f2('0x10f')](db[_0x75f2('0xab')],{'as':_0x75f2('0x1b8'),'onDelete':_0x75f2('0x10c'),'foreignKey':'DescriptionId'});db[_0x75f2('0xa9')][_0x75f2('0x10f')](db[_0x75f2('0xab')],{'as':_0x75f2('0x1b2'),'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1ba')});db[_0x75f2('0xa9')][_0x75f2('0x11b')](db['SugarcrmAccount'],{'as':_0x75f2('0x175'),'foreignKey':_0x75f2('0x1b5')});db[_0x75f2('0xab')][_0x75f2('0x10f')](db['SugarcrmField'],{'as':_0x75f2('0x1bd'),'foreignKey':_0x75f2('0x1bb')});db[_0x75f2('0xab')]['hasMany'](db[_0x75f2('0xab')],{'as':_0x75f2('0x1be'),'foreignKey':_0x75f2('0x1b9')});db[_0x75f2('0xab')][_0x75f2('0x10f')](db[_0x75f2('0xab')],{'as':_0x75f2('0x1bc'),'foreignKey':_0x75f2('0x1ba')});db[_0x75f2('0xab')][_0x75f2('0x11b')](db[_0x75f2('0x95')],{'as':_0x75f2('0x95'),'foreignKey':_0x75f2('0x1bf')});db['DeskAccount']['hasMany'](db[_0x75f2('0xae')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0x75f2('0x1b5')});db['DeskConfiguration'][_0x75f2('0x10f')](db[_0x75f2('0xb0')],{'as':_0x75f2('0x1b7'),'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1bb')});db[_0x75f2('0xae')][_0x75f2('0x10f')](db[_0x75f2('0xb0')],{'as':_0x75f2('0x1b8'),'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1b9')});db[_0x75f2('0xae')][_0x75f2('0x10f')](db[_0x75f2('0xb0')],{'as':_0x75f2('0x1b2'),'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1ba')});db[_0x75f2('0xae')]['belongsTo'](db['DeskAccount'],{'as':_0x75f2('0x175'),'foreignKey':_0x75f2('0x1b5')});db[_0x75f2('0xae')][_0x75f2('0x11e')](db[_0x75f2('0x8f')],{'through':'int_desk_configuration_has_tags'});db['DeskField'][_0x75f2('0x10f')](db[_0x75f2('0xb0')],{'as':_0x75f2('0x1bd'),'foreignKey':'SubjectId'});db['DeskField']['hasMany'](db[_0x75f2('0xb0')],{'as':_0x75f2('0x1be'),'foreignKey':_0x75f2('0x1b9')});db[_0x75f2('0xb0')][_0x75f2('0x10f')](db['DeskField'],{'as':_0x75f2('0x1bc'),'foreignKey':_0x75f2('0x1ba')});db['DeskField']['belongsTo'](db[_0x75f2('0x95')],{'as':'Variable','foreignKey':_0x75f2('0x1bf')});db['ZohoAccount'][_0x75f2('0x10f')](db[_0x75f2('0xb4')],{'as':'Configurations','onDelete':_0x75f2('0x10c'),'foreignKey':'AccountId'});db[_0x75f2('0xb4')][_0x75f2('0x10f')](db[_0x75f2('0xb6')],{'as':'Subjects','onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1bb')});db[_0x75f2('0xb4')][_0x75f2('0x10f')](db['ZohoField'],{'as':_0x75f2('0x1b8'),'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1b9')});db['ZohoConfiguration'][_0x75f2('0x10f')](db[_0x75f2('0xb6')],{'as':_0x75f2('0x1b2'),'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1ba')});db[_0x75f2('0xb4')][_0x75f2('0x11b')](db[_0x75f2('0xb2')],{'as':'Account','foreignKey':_0x75f2('0x1b5')});db[_0x75f2('0xb6')][_0x75f2('0x10f')](db[_0x75f2('0xb6')],{'as':'Subject','foreignKey':_0x75f2('0x1bb')});db[_0x75f2('0xb6')][_0x75f2('0x10f')](db['ZohoField'],{'as':_0x75f2('0x1be'),'foreignKey':_0x75f2('0x1b9')});db[_0x75f2('0xb6')][_0x75f2('0x10f')](db[_0x75f2('0xb6')],{'as':'Field','foreignKey':_0x75f2('0x1ba')});db[_0x75f2('0xb6')]['belongsTo'](db[_0x75f2('0x95')],{'as':_0x75f2('0x95'),'foreignKey':_0x75f2('0x1bf')});db['ZendeskAccount'][_0x75f2('0x10f')](db['ZendeskConfiguration'],{'as':_0x75f2('0x1b4'),'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1b5')});db[_0x75f2('0x1c0')]['hasMany'](db[_0x75f2('0xba')],{'as':_0x75f2('0x1b7'),'foreignKey':_0x75f2('0x1bb')});db[_0x75f2('0x1c0')][_0x75f2('0x10f')](db[_0x75f2('0xba')],{'as':_0x75f2('0x1b8'),'foreignKey':_0x75f2('0x1b9')});db[_0x75f2('0x1c0')][_0x75f2('0x10f')](db['ZendeskField'],{'as':_0x75f2('0x1b2'),'foreignKey':'FieldId'});db[_0x75f2('0x1c0')][_0x75f2('0x11b')](db[_0x75f2('0xb8')],{'as':_0x75f2('0x175'),'foreignKey':_0x75f2('0x1b5')});db['ZendeskConfiguration'][_0x75f2('0x11e')](db['Tag'],{'through':_0x75f2('0x1c1')});db['ZendeskField'][_0x75f2('0x10f')](db[_0x75f2('0xba')],{'as':_0x75f2('0x1bd'),'foreignKey':'SubjectId'});db[_0x75f2('0xba')][_0x75f2('0x10f')](db[_0x75f2('0xba')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x75f2('0xba')]['hasMany'](db['ZendeskField'],{'as':'Field','foreignKey':'FieldId'});db[_0x75f2('0xba')][_0x75f2('0x11b')](db[_0x75f2('0x95')],{'as':_0x75f2('0x95'),'foreignKey':_0x75f2('0x1bf')});db[_0x75f2('0xbc')][_0x75f2('0x10f')](db[_0x75f2('0x1c2')],{'as':_0x75f2('0x1b4'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0x75f2('0x1c2')][_0x75f2('0x10f')](db[_0x75f2('0x1c3')],{'as':_0x75f2('0x1b7'),'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1bb')});db[_0x75f2('0x1c2')]['hasMany'](db['FreshdeskField'],{'as':_0x75f2('0x1b8'),'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1b9')});db['FreshdeskConfiguration'][_0x75f2('0x10f')](db['FreshdeskField'],{'as':'Fields','onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1ba')});db['FreshdeskConfiguration'][_0x75f2('0x11b')](db['FreshdeskAccount'],{'as':_0x75f2('0x175'),'foreignKey':_0x75f2('0x1b5')});db['FreshdeskConfiguration'][_0x75f2('0x11e')](db[_0x75f2('0x8f')],{'through':_0x75f2('0x1c4')});db['FreshdeskField'][_0x75f2('0x10f')](db[_0x75f2('0x1c3')],{'as':'Subject','foreignKey':_0x75f2('0x1bb')});db['FreshdeskField'][_0x75f2('0x10f')](db[_0x75f2('0x1c3')],{'as':_0x75f2('0x1be'),'foreignKey':_0x75f2('0x1b9')});db[_0x75f2('0x1c3')][_0x75f2('0x10f')](db[_0x75f2('0x1c3')],{'as':_0x75f2('0x1bc'),'foreignKey':_0x75f2('0x1ba')});db[_0x75f2('0x1c3')][_0x75f2('0x11b')](db['Variable'],{'as':_0x75f2('0x95'),'foreignKey':_0x75f2('0x1bf')});db[_0x75f2('0xbf')][_0x75f2('0x10f')](db[_0x75f2('0x1c5')],{'as':_0x75f2('0x1b4'),'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1b5')});db[_0x75f2('0x1c5')][_0x75f2('0x10f')](db[_0x75f2('0x1c6')],{'as':_0x75f2('0x1b7'),'foreignKey':'SubjectId'});db[_0x75f2('0x1c5')]['hasMany'](db[_0x75f2('0x1c6')],{'as':_0x75f2('0x1b8'),'foreignKey':_0x75f2('0x1b9')});db['VtigerConfiguration'][_0x75f2('0x10f')](db[_0x75f2('0x1c6')],{'as':_0x75f2('0x1b2'),'foreignKey':'FieldId'});db[_0x75f2('0x1c5')][_0x75f2('0x11b')](db[_0x75f2('0xbf')],{'as':_0x75f2('0x175'),'foreignKey':_0x75f2('0x1b5')});db[_0x75f2('0x1c6')][_0x75f2('0x10f')](db[_0x75f2('0x1c6')],{'as':'Subject','foreignKey':_0x75f2('0x1bb')});db['VtigerField'][_0x75f2('0x10f')](db['VtigerField'],{'as':_0x75f2('0x1be'),'foreignKey':_0x75f2('0x1b9')});db['VtigerField'][_0x75f2('0x10f')](db[_0x75f2('0x1c6')],{'as':_0x75f2('0x1bc'),'foreignKey':_0x75f2('0x1ba')});db[_0x75f2('0x1c6')][_0x75f2('0x11b')](db[_0x75f2('0x95')],{'as':_0x75f2('0x95'),'foreignKey':_0x75f2('0x1bf')});db[_0x75f2('0x1c7')][_0x75f2('0x10f')](db[_0x75f2('0xc4')],{'as':_0x75f2('0x1b4'),'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1b5')});db['ServicenowConfiguration'][_0x75f2('0x10f')](db[_0x75f2('0xc6')],{'as':_0x75f2('0x1b7'),'foreignKey':_0x75f2('0x1bb')});db[_0x75f2('0xc4')][_0x75f2('0x10f')](db[_0x75f2('0xc6')],{'as':_0x75f2('0x1b8'),'foreignKey':_0x75f2('0x1b9')});db['ServicenowConfiguration']['hasMany'](db[_0x75f2('0xc6')],{'as':_0x75f2('0x1b2'),'foreignKey':_0x75f2('0x1ba')});db['ServicenowConfiguration']['belongsTo'](db[_0x75f2('0x1c7')],{'as':_0x75f2('0x175'),'foreignKey':'AccountId'});db['ServicenowField'][_0x75f2('0x10f')](db[_0x75f2('0xc6')],{'as':_0x75f2('0x1bd'),'foreignKey':_0x75f2('0x1bb')});db['ServicenowField'][_0x75f2('0x10f')](db[_0x75f2('0xc6')],{'as':_0x75f2('0x1be'),'foreignKey':_0x75f2('0x1b9')});db[_0x75f2('0xc6')]['hasMany'](db[_0x75f2('0xc6')],{'as':_0x75f2('0x1bc'),'foreignKey':'FieldId'});db[_0x75f2('0xc6')][_0x75f2('0x11b')](db[_0x75f2('0x95')],{'as':_0x75f2('0x95'),'foreignKey':'VariableId'});db['Dynamics365Account'][_0x75f2('0x10f')](db[_0x75f2('0x1c8')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0x75f2('0x1b5')});db[_0x75f2('0x1c8')][_0x75f2('0x10f')](db[_0x75f2('0xcb')],{'as':_0x75f2('0x1b7'),'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1bb')});db[_0x75f2('0x1c8')][_0x75f2('0x10f')](db[_0x75f2('0xcb')],{'as':_0x75f2('0x1b8'),'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1b9')});db['Dynamics365Configuration']['hasMany'](db[_0x75f2('0xcb')],{'as':_0x75f2('0x1b2'),'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1ba')});db[_0x75f2('0x1c8')][_0x75f2('0x11b')](db[_0x75f2('0xc8')],{'as':_0x75f2('0x175'),'foreignKey':'AccountId'});db['Dynamics365Field'][_0x75f2('0x10f')](db[_0x75f2('0xcb')],{'as':'Subject','foreignKey':'SubjectId'});db[_0x75f2('0xcb')][_0x75f2('0x10f')](db[_0x75f2('0xcb')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x75f2('0xcb')][_0x75f2('0x10f')](db[_0x75f2('0xcb')],{'as':'Field','foreignKey':'FieldId'});db[_0x75f2('0xcb')][_0x75f2('0x11b')](db[_0x75f2('0x95')],{'as':'Variable','foreignKey':_0x75f2('0x1bf')});db[_0x75f2('0xcd')][_0x75f2('0x10f')](db[_0x75f2('0xce')],{'as':'Configurations','onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1b5')});db[_0x75f2('0xce')]['hasMany'](db[_0x75f2('0x1c9')],{'as':_0x75f2('0x1b7'),'foreignKey':_0x75f2('0x1bb')});db['FreshsalesConfiguration'][_0x75f2('0x10f')](db[_0x75f2('0x1c9')],{'as':_0x75f2('0x1b8'),'foreignKey':'DescriptionId'});db[_0x75f2('0xce')][_0x75f2('0x10f')](db[_0x75f2('0x1c9')],{'as':_0x75f2('0x1b2'),'foreignKey':_0x75f2('0x1ba')});db['FreshsalesConfiguration']['belongsTo'](db['FreshsalesAccount'],{'as':_0x75f2('0x175'),'foreignKey':_0x75f2('0x1b5')});db[_0x75f2('0x1c9')]['hasMany'](db[_0x75f2('0x1c9')],{'as':_0x75f2('0x1bd'),'foreignKey':_0x75f2('0x1bb')});db[_0x75f2('0x1c9')][_0x75f2('0x10f')](db[_0x75f2('0x1c9')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x75f2('0x1c9')][_0x75f2('0x10f')](db[_0x75f2('0x1c9')],{'as':_0x75f2('0x1bc'),'foreignKey':_0x75f2('0x1ba')});db[_0x75f2('0x1c9')][_0x75f2('0x11b')](db[_0x75f2('0x95')],{'as':'Variable','foreignKey':_0x75f2('0x1bf')});db[_0x75f2('0x1ca')][_0x75f2('0x11b')](db['ChatWebsite'],{});db[_0x75f2('0x1ca')][_0x75f2('0x11b')](db[_0x75f2('0xf4')],{'as':_0x75f2('0x15e'),'foreignKey':'ListId'});db['ChatQueueReport'][_0x75f2('0x11b')](db[_0x75f2('0x165')],{'as':_0x75f2('0x155'),'foreignKey':_0x75f2('0x156')});db[_0x75f2('0x1ca')][_0x75f2('0x11b')](db[_0x75f2('0x6a')],{});db[_0x75f2('0x1ca')][_0x75f2('0x11b')](db[_0x75f2('0x6c')],{});db[_0x75f2('0x1ca')]['belongsTo'](db[_0x75f2('0x10e')],{});db[_0x75f2('0x1ca')]['belongsTo'](db[_0x75f2('0x6f')],{});db[_0x75f2('0xd2')][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{'onDelete':'cascade','foreignKey':'FromId'});db[_0x75f2('0xd2')][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1cb')});db[_0x75f2('0x147')][_0x75f2('0x10f')](db['JscriptyQuestionReport'],{'foreignKey':_0x75f2('0x1cc'),'onDelete':_0x75f2('0x10c')});db[_0x75f2('0x147')]['hasMany'](db[_0x75f2('0xd4')],{'foreignKey':_0x75f2('0x1cc'),'onDelete':'cascade'});db[_0x75f2('0x1cd')]['belongsTo'](db[_0x75f2('0x55')],{});db[_0x75f2('0x1cd')]['belongsTo'](db[_0x75f2('0xf4')],{'as':'List','foreignKey':'ListId'});db[_0x75f2('0x1cd')][_0x75f2('0x11b')](db['CmContact'],{'as':_0x75f2('0x155'),'foreignKey':'ContactId'});db[_0x75f2('0x1cd')]['belongsTo'](db[_0x75f2('0x59')],{});db[_0x75f2('0x1cd')]['belongsTo'](db[_0x75f2('0x5b')],{});db[_0x75f2('0x1cd')][_0x75f2('0x11b')](db['User'],{});db['SmsQueueReport'][_0x75f2('0x11b')](db[_0x75f2('0x5d')],{});db[_0x75f2('0xdd')][_0x75f2('0x10f')](db['JscriptySessionReport'],{'foreignKey':'ProjectId'});db['JscriptyProject'][_0x75f2('0x10f')](db[_0x75f2('0xd6')],{'foreignKey':_0x75f2('0x1ce')});db[_0x75f2('0xdd')][_0x75f2('0x10f')](db[_0x75f2('0xd4')],{'foreignKey':'ProjectId'});db['SquareProject'][_0x75f2('0x11e')](db['User'],{'as':_0x75f2('0x176'),'through':_0x75f2('0x1cf')});db[_0x75f2('0xe6')][_0x75f2('0x11e')](db['User'],{'as':_0x75f2('0x162'),'through':_0x75f2('0x120')});db[_0x75f2('0xe6')][_0x75f2('0x11e')](db[_0x75f2('0x1b')],{'through':_0x75f2('0x109'),'as':_0x75f2('0x126')});db[_0x75f2('0xe6')][_0x75f2('0x11e')](db[_0x75f2('0x3e')],{'through':'team_has_mail_queues','as':'MailQueues'});db[_0x75f2('0xe6')]['belongsToMany'](db[_0x75f2('0x6f')],{'through':_0x75f2('0x18f'),'as':_0x75f2('0x128')});db[_0x75f2('0xe6')][_0x75f2('0x11e')](db[_0x75f2('0x12a')],{'through':_0x75f2('0x1d0'),'as':_0x75f2('0x12b')});db[_0x75f2('0xe6')][_0x75f2('0x11e')](db['SmsQueue'],{'through':_0x75f2('0x17e'),'as':_0x75f2('0x12c')});db['Team'][_0x75f2('0x11e')](db[_0x75f2('0x12d')],{'through':_0x75f2('0x184'),'as':'OpenchannelQueues'});db['Team'][_0x75f2('0x11e')](db['WhatsappQueue'],{'through':_0x75f2('0x1d1'),'as':'WhatsappQueues'});db[_0x75f2('0xea')][_0x75f2('0x10f')](db['CmHopper'],{'as':_0x75f2('0x144'),'foreignKey':_0x75f2('0x198')});db[_0x75f2('0xea')][_0x75f2('0x10f')](db['CmHopperFinal'],{'as':_0x75f2('0x145'),'foreignKey':'CampaignId'});db[_0x75f2('0xea')][_0x75f2('0x10f')](db[_0x75f2('0x7b')],{'as':_0x75f2('0x194'),'foreignKey':_0x75f2('0x198')});db['Campaign'][_0x75f2('0x10f')](db[_0x75f2('0x78')],{'as':_0x75f2('0x146'),'foreignKey':_0x75f2('0x198')});db[_0x75f2('0xea')][_0x75f2('0x11b')](db[_0x75f2('0x2c')],{'as':'Trunk','foreignKey':_0x75f2('0x1d2')});db[_0x75f2('0xea')][_0x75f2('0x11b')](db[_0x75f2('0x2c')],{'as':_0x75f2('0x149'),'foreignKey':_0x75f2('0x14a')});db[_0x75f2('0xea')][_0x75f2('0x11b')](db[_0x75f2('0x85')],{'as':_0x75f2('0x85'),'foreignKey':_0x75f2('0x17a')});db[_0x75f2('0xea')][_0x75f2('0x11b')](db['SquareProject'],{'as':'SquareProject','foreignKey':_0x75f2('0x1d3')});db[_0x75f2('0xea')]['belongsToMany'](db[_0x75f2('0xf4')],{'as':_0x75f2('0x1d4'),'through':_0x75f2('0x1d5')});db['Campaign']['belongsToMany'](db[_0x75f2('0xf4')],{'as':_0x75f2('0x14e'),'through':_0x75f2('0x1d6')});db[_0x75f2('0x16a')][_0x75f2('0x11b')](db['ChatOfflineMessage'],{'as':_0x75f2('0x6e'),'foreignKey':_0x75f2('0x18e')});db[_0x75f2('0x1d7')][_0x75f2('0x11b')](db[_0x75f2('0x44')],{});db[_0x75f2('0x1d7')][_0x75f2('0x11b')](db[_0x75f2('0x42')],{});db['MailTransferReport'][_0x75f2('0x11b')](db['MailAccount'],{'foreignKey':_0x75f2('0x1d8'),'as':_0x75f2('0x1d9')});db['MailTransferReport'][_0x75f2('0x11b')](db['User'],{'foreignKey':_0x75f2('0x1da'),'as':'FromAgent'});db['MailTransferReport'][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{'foreignKey':_0x75f2('0x1db'),'as':_0x75f2('0x1dc')});db['MailTransferReport']['belongsTo'](db[_0x75f2('0x3e')],{'foreignKey':_0x75f2('0x1dd'),'as':'ToQueue'});db[_0x75f2('0x1d7')][_0x75f2('0x11b')](db[_0x75f2('0x3c')],{'foreignKey':_0x75f2('0x1de'),'as':_0x75f2('0x1df')});db[_0x75f2('0xef')][_0x75f2('0x11b')](db['ChatMessage'],{});db['ChatTransferReport'][_0x75f2('0x11b')](db['ChatInteraction'],{});db[_0x75f2('0xef')][_0x75f2('0x11b')](db['ChatWebsite'],{'foreignKey':_0x75f2('0x1e0'),'as':'FromAccount'});db[_0x75f2('0xef')][_0x75f2('0x11b')](db['User'],{'foreignKey':_0x75f2('0x1da'),'as':_0x75f2('0x1e1')});db['ChatTransferReport'][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{'foreignKey':'ToUserId','as':'ToAgent'});db[_0x75f2('0xef')][_0x75f2('0x11b')](db[_0x75f2('0x6f')],{'foreignKey':_0x75f2('0x1e2'),'as':_0x75f2('0x1e3')});db['ChatTransferReport']['belongsTo'](db[_0x75f2('0x65')],{'foreignKey':_0x75f2('0x1e4'),'as':_0x75f2('0x1df')});db[_0x75f2('0xf1')][_0x75f2('0x11b')](db[_0x75f2('0x50')],{});db[_0x75f2('0xf1')][_0x75f2('0x11b')](db[_0x75f2('0x4e')],{});db['FaxTransferReport'][_0x75f2('0x11b')](db[_0x75f2('0x4c')],{'foreignKey':_0x75f2('0x1e5'),'as':_0x75f2('0x1d9')});db['FaxTransferReport'][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{'foreignKey':_0x75f2('0x1da'),'as':_0x75f2('0x1e1')});db[_0x75f2('0xf1')]['belongsTo'](db[_0x75f2('0x10e')],{'foreignKey':'ToUserId','as':_0x75f2('0x1dc')});db[_0x75f2('0xf1')]['belongsTo'](db[_0x75f2('0x12a')],{'foreignKey':'ToFaxQueueId','as':_0x75f2('0x1e3')});db[_0x75f2('0xf1')][_0x75f2('0x11b')](db[_0x75f2('0x4c')],{'foreignKey':_0x75f2('0x1e6'),'as':_0x75f2('0x1df')});db['OpenchannelTransferReport'][_0x75f2('0x11b')](db['OpenchannelMessage'],{});db[_0x75f2('0x1e7')][_0x75f2('0x11b')](db[_0x75f2('0x113')],{});db['OpenchannelTransferReport'][_0x75f2('0x11b')](db['OpenchannelAccount'],{'foreignKey':'FromOpenchannelAccountId','as':_0x75f2('0x1d9')});db[_0x75f2('0x1e7')]['belongsTo'](db[_0x75f2('0x10e')],{'foreignKey':_0x75f2('0x1da'),'as':_0x75f2('0x1e1')});db['OpenchannelTransferReport'][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{'foreignKey':_0x75f2('0x1db'),'as':'ToAgent'});db['OpenchannelTransferReport'][_0x75f2('0x11b')](db['OpenchannelQueue'],{'foreignKey':_0x75f2('0x1e8'),'as':'ToQueue'});db[_0x75f2('0x1e7')][_0x75f2('0x11b')](db['OpenchannelAccount'],{'foreignKey':'ToOpenchannelAccountId','as':_0x75f2('0x1df')});db[_0x75f2('0x1e9')][_0x75f2('0x11b')](db[_0x75f2('0x5b')],{});db[_0x75f2('0x1e9')]['belongsTo'](db[_0x75f2('0x59')],{});db[_0x75f2('0x1e9')]['belongsTo'](db[_0x75f2('0x55')],{'foreignKey':_0x75f2('0x1ea'),'as':_0x75f2('0x1d9')});db[_0x75f2('0x1e9')][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{'foreignKey':_0x75f2('0x1da'),'as':'FromAgent'});db[_0x75f2('0x1e9')][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{'foreignKey':_0x75f2('0x1db'),'as':'ToAgent'});db[_0x75f2('0x1e9')][_0x75f2('0x11b')](db[_0x75f2('0x5d')],{'foreignKey':_0x75f2('0x1eb'),'as':_0x75f2('0x1e3')});db[_0x75f2('0x1e9')][_0x75f2('0x11b')](db['SmsAccount'],{'foreignKey':'ToSmsAccountId','as':_0x75f2('0x1df')});db[_0x75f2('0xf4')][_0x75f2('0x10f')](db['Disposition'],{'as':_0x75f2('0x15b'),'foreignKey':'ListId','onDelete':_0x75f2('0x10c')});db[_0x75f2('0xf4')][_0x75f2('0x10f')](db['CmCustomField'],{'as':_0x75f2('0x1ec'),'foreignKey':_0x75f2('0x15f')});db[_0x75f2('0xf4')][_0x75f2('0x10f')](db[_0x75f2('0x165')],{'as':_0x75f2('0x192'),'onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x15f')});db[_0x75f2('0xf4')][_0x75f2('0x10f')](db[_0x75f2('0x7a')],{'as':'HopperFinals','foreignKey':'ListId'});db[_0x75f2('0xf4')]['hasMany'](db[_0x75f2('0x7b')],{'as':_0x75f2('0x1ed'),'foreignKey':'ListId'});db[_0x75f2('0xf4')][_0x75f2('0x10f')](db['ReportAgentPreview'],{'as':_0x75f2('0x7d'),'foreignKey':'ListId'});db[_0x75f2('0xf4')][_0x75f2('0x11e')](db[_0x75f2('0x1b')],{'as':_0x75f2('0x1ee'),'through':_0x75f2('0x14c')});db['CmList'][_0x75f2('0x11e')](db['User'],{'as':_0x75f2('0x162'),'through':_0x75f2('0x11f')});db[_0x75f2('0xf5')][_0x75f2('0x10f')](db[_0x75f2('0x18')],{'as':_0x75f2('0x1a3'),'onDelete':_0x75f2('0x10c')});db[_0x75f2('0xf5')]['belongsToMany'](db[_0x75f2('0x10e')],{'as':_0x75f2('0x162'),'through':_0x75f2('0x133')});db[_0x75f2('0xf7')]['hasMany'](db[_0x75f2('0x10e')],{'as':_0x75f2('0x176'),'foreignKey':_0x75f2('0x1ef')});db[_0x75f2('0xf7')][_0x75f2('0x10f')](db[_0x75f2('0xf9')],{'as':_0x75f2('0x1f0'),'foreignKey':_0x75f2('0x1ef'),'onDelete':'cascade'});db[_0x75f2('0xf9')][_0x75f2('0x10f')](db[_0x75f2('0xfb')],{'as':_0x75f2('0x1f1'),'foreignKey':_0x75f2('0x1f2'),'onDelete':_0x75f2('0x10c')});db['WhatsappAccount']['hasMany'](db[_0x75f2('0x83')],{'as':'Dispositions','foreignKey':'WhatsappAccountId','onDelete':'cascade'});db[_0x75f2('0xfe')][_0x75f2('0x10f')](db[_0x75f2('0x15c')],{'as':'Answers','foreignKey':_0x75f2('0x1f3')});db[_0x75f2('0xfe')][_0x75f2('0x10f')](db[_0x75f2('0x1f4')],{'as':_0x75f2('0x150'),'foreignKey':_0x75f2('0x1f3')});db[_0x75f2('0xfe')][_0x75f2('0x10f')](db[_0x75f2('0x118')],{'as':_0x75f2('0x15d')});db[_0x75f2('0xfe')][_0x75f2('0x10f')](db['WhatsappApplication'],{'as':'Applications'});db[_0x75f2('0xfe')][_0x75f2('0x11b')](db[_0x75f2('0xf4')],{'as':_0x75f2('0x15e'),'foreignKey':_0x75f2('0x15f')});db['WhatsappAccount'][_0x75f2('0x11b')](db[_0x75f2('0x87')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db[_0x75f2('0xfe')]['belongsToMany'](db['User'],{'as':_0x75f2('0x162'),'through':_0x75f2('0x13b')});db[_0x75f2('0x1f5')][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{'onDelete':'restrict'});db[_0x75f2('0x1f5')][_0x75f2('0x11b')](db['WhatsappQueue'],{'onDelete':_0x75f2('0x16e')});db[_0x75f2('0x1f5')][_0x75f2('0x11b')](db['WhatsappAccount'],{'onDelete':_0x75f2('0x16e')});db[_0x75f2('0x1f5')][_0x75f2('0x11b')](db[_0x75f2('0x85')],{'onDelete':'restrict','foreignKey':_0x75f2('0x17a')});db[_0x75f2('0x1f5')]['belongsTo'](db['Tag'],{'onDelete':'restrict','foreignKey':_0x75f2('0x174')});db[_0x75f2('0x118')][_0x75f2('0x10f')](db['WhatsappMessage'],{'as':'Messages','onDelete':_0x75f2('0x10c'),'foreignKey':_0x75f2('0x1f6')});db[_0x75f2('0x118')]['belongsTo'](db[_0x75f2('0xfe')],{'as':_0x75f2('0x175'),'foreignKey':_0x75f2('0x1f3')});db[_0x75f2('0x118')][_0x75f2('0x11b')](db[_0x75f2('0x165')],{'as':_0x75f2('0x155'),'foreignKey':'ContactId'});db[_0x75f2('0x118')][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{'as':_0x75f2('0x166'),'foreignKey':_0x75f2('0x10d')});db[_0x75f2('0x118')][_0x75f2('0x11e')](db['Tag'],{'through':_0x75f2('0x1ab'),'as':_0x75f2('0x168')});db[_0x75f2('0x118')][_0x75f2('0x11e')](db['Tag'],{'through':_0x75f2('0x1ab'),'as':_0x75f2('0x169')});db[_0x75f2('0x118')]['belongsToMany'](db[_0x75f2('0x10e')],{'as':'Users','through':_0x75f2('0x125'),'foreignKey':_0x75f2('0x1f6')});db[_0x75f2('0x1f4')][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{'as':_0x75f2('0x10e')});db[_0x75f2('0x1f4')][_0x75f2('0x11b')](db[_0x75f2('0x165')],{'onDelete':_0x75f2('0x10c'),'as':_0x75f2('0x155')});db[_0x75f2('0x1f4')][_0x75f2('0x11b')](db[_0x75f2('0x118')],{'onDelete':_0x75f2('0x10c'),'as':_0x75f2('0x16c'),'foreignKey':_0x75f2('0x1f6')});db[_0x75f2('0x1f4')][_0x75f2('0x11b')](db['WhatsappAccount'],{'as':_0x75f2('0x175'),'foreignKey':_0x75f2('0x1f3')});db[_0x75f2('0x103')]['belongsTo'](db[_0x75f2('0xfe')],{});db[_0x75f2('0x103')][_0x75f2('0x11b')](db[_0x75f2('0xf4')],{'as':_0x75f2('0x15e'),'foreignKey':'ListId'});db[_0x75f2('0x103')]['belongsTo'](db[_0x75f2('0x165')],{'as':'Contact','foreignKey':'ContactId'});db[_0x75f2('0x103')][_0x75f2('0x11b')](db[_0x75f2('0x118')],{});db['WhatsappQueueReport'][_0x75f2('0x11b')](db[_0x75f2('0x130')],{});db['WhatsappQueueReport'][_0x75f2('0x11b')](db[_0x75f2('0x1f4')],{});db[_0x75f2('0x103')][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{});db['WhatsappTransferReport'][_0x75f2('0x11b')](db[_0x75f2('0x1f4')],{});db[_0x75f2('0x105')][_0x75f2('0x11b')](db['WhatsappInteraction'],{});db['WhatsappTransferReport'][_0x75f2('0x11b')](db[_0x75f2('0xfe')],{'foreignKey':_0x75f2('0x1f7'),'as':_0x75f2('0x1d9')});db['WhatsappTransferReport'][_0x75f2('0x11b')](db[_0x75f2('0xfe')],{'foreignKey':'ToWhatsappAccountId','as':_0x75f2('0x1df')});db[_0x75f2('0x105')][_0x75f2('0x11b')](db[_0x75f2('0x130')],{'foreignKey':'ToQueueId','as':_0x75f2('0x1e3')});db['WhatsappTransferReport'][_0x75f2('0x11b')](db[_0x75f2('0x10e')],{'foreignKey':'FromUserId','as':_0x75f2('0x1e1')});db[_0x75f2('0x105')]['belongsTo'](db[_0x75f2('0x10e')],{'foreignKey':_0x75f2('0x1db'),'as':_0x75f2('0x1dc')});db['WhatsappQueue']['belongsToMany'](db['User'],{'as':_0x75f2('0x162'),'through':'UserWhatsappQueue','foreignKey':'WhatsappQueueId'});db[_0x75f2('0x130')][_0x75f2('0x11e')](db['Team'],{'through':_0x75f2('0x1d1'),'as':'Teams'});module[_0x75f2('0x1f8')]={'db':db,'dbH':dbH};
\ No newline at end of file
index c6a0e11..3df5332 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9151=['%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','connection','responseTime','name','other','agent_name','test','/api/users','./api/user','./api/voiceChanSpy','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceQueue','/api/screen/recordings','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/trunks','./api/trunk','./api/voiceTransferReport','/api/mail/out_servers','/api/mail/accounts','./api/mailAccount','/api/mail/queues','./api/mailSubstatus','/api/mail/applications','./api/mailApplication','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','./api/faxApplication','/api/fax/interactions','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','/api/sms/accounts','./api/smsAccount','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','/api/openchannel/reports/queue','/api/chat/applications','/api/chat/interactions','/api/chat/messages','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','./api/cmCompany','/api/cm/contacts','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','/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/schedule','/api/sounds','./api/sound','/api/tags','/api/templates','./api/template','/api/triggers','./api/trigger','/api/variables','./api/variable','/api/integrations','./api/integration','./api/integrationReport','/api/analytics/custom_reports','/api/analytics/default_reports','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','./api/analyticFieldReport','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/desk/configurations','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','/api/integrations/dynamics365/fields','./api/intDynamics365Field','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/fields','/api/networks','./api/network','/api/chat/reports/queue','./api/chatQueueReport','./api/chatInternalMessage','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','/api/jscripty/sessions/reports','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','/api/square/odbc','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','./api/team','./api/license','/api/campaigns','./api/campaign','/api/migrations','./api/migration','/api/attachments','./api/attachment','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','/api/openchannel/reports/transfer','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappApplication','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','./api/whatsappTransferReport','/api/whatsapp/queues','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','/api/auth/local','./api/authLocal','./api/authGoogle','/api/jira','./api/jira','./api/rpc','./api/version','/api/system','./api/system','/api/pm2','./api/pm2','/api/webbar','./api/webbar','/apidoc','static','join','/www','/demo','/snippet','root','snippet','3.0.0','/plugins','/server/files/plugins','route','get','sendFile','resolve','appPath','username','newPassword','apiKey','firstName','phone','email','clientId','clientSecret','securityToken','code','accessKey','tenantId','channelSecret','accessToken','accessTokenSecret','authToken','calleridnum','exten','vidaooApiKey','privateKey','accesskeyid','pass','accountSid','localstationid','dsn','secret','registry','oldPassword','isPlainObject','isArray','length','isString','@@{','replace','}@@','express-winston','util','./config/environment','api','./config/logger','auth','default','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','body','format','method','headers','x-forwarded-for','remoteAddress','url','user','role','inspect','use','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','agent_id'];(function(_0x45cc12,_0x1f4c9d){var _0x3c6386=function(_0x9074ed){while(--_0x9074ed){_0x45cc12['push'](_0x45cc12['shift']());}};_0x3c6386(++_0x1f4c9d);}(_0x9151,0x126));var _0x1915=function(_0x559528,_0x455857){_0x559528=_0x559528-0x0;var _0x567e33=_0x9151[_0x559528];return _0x567e33;};'use strict';var _=require('lodash');var path=require('path');var express=require('express');var ewinston=require(_0x1915('0x0'));var util=require(_0x1915('0x1'));var errors=require('./errors');var config=require(_0x1915('0x2'));var logger=require('./config/logger')(_0x1915('0x3'));var authLogger=require(_0x1915('0x4'))(_0x1915('0x5'));exports[_0x1915('0x6')]=function(_0x1878a6){_0x1878a6['use'](ewinston[_0x1915('0x7')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x3a76e4,_0x23fa7a){var _0x1b8ce6=_0x1915('0x8');if(!_['isEmpty'](_0x3a76e4[_0x1915('0x9')])){_0x1b8ce6+='\x20body=%s';var _0x5dc966=_0x3a76e4['body'];maskSensitiveData(_0x5dc966);}return util[_0x1915('0xa')](_0x1b8ce6,_0x3a76e4[_0x1915('0xb')],_0x3a76e4['headers']['x-forwarded-for']?_0x3a76e4[_0x1915('0xc')][_0x1915('0xd')]:_0x3a76e4['connection'][_0x1915('0xe')]||_0x3a76e4['ip'],_0x3a76e4[_0x1915('0xf')],_0x23fa7a['statusCode'],_0x23fa7a['responseTime'],_0x3a76e4['user']?_0x3a76e4[_0x1915('0x10')]['id']:null,_0x3a76e4[_0x1915('0x10')]?_0x3a76e4[_0x1915('0x10')]['name']:null,_0x3a76e4[_0x1915('0x10')]?_0x3a76e4[_0x1915('0x10')][_0x1915('0x11')]:null,_0x5dc966?util[_0x1915('0x12')](_0x5dc966,![],null):'');}}));_0x1878a6[_0x1915('0x13')](ewinston[_0x1915('0x7')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x4e41cd,_0x470435){var _0x54e0b7=_0x1915('0x14');if(_0x4e41cd[_0x1915('0x9')]&&_0x4e41cd[_0x1915('0x9')]['device']&&_0x4e41cd[_0x1915('0x9')][_0x1915('0x15')]){_0x54e0b7=_0x1915('0x16');}return util[_0x1915('0xa')](_0x54e0b7,_0x4e41cd['method'],_0x4e41cd[_0x1915('0xc')]['x-forwarded-for']?_0x4e41cd[_0x1915('0xc')]['x-forwarded-for']:_0x4e41cd[_0x1915('0x17')]['remoteAddress']||_0x4e41cd['ip'],_0x4e41cd['url'],_0x470435['statusCode'],_0x470435[_0x1915('0x18')],_0x4e41cd[_0x1915('0x10')]?_0x4e41cd['user']['id']:null,_0x4e41cd[_0x1915('0x10')]?_0x4e41cd['user'][_0x1915('0x19')]:null,_0x4e41cd[_0x1915('0x10')]?_0x4e41cd[_0x1915('0x10')]['role']:null,_0x4e41cd[_0x1915('0x9')]&&_0x4e41cd[_0x1915('0x9')]['device']?_0x4e41cd['body']['device']:_0x1915('0x1a'),_0x4e41cd[_0x1915('0x9')]&&_0x4e41cd[_0x1915('0x9')]['agent_id']?_0x4e41cd[_0x1915('0x9')][_0x1915('0x15')]:'',_0x4e41cd['body']&&_0x4e41cd[_0x1915('0x9')][_0x1915('0x1b')]?_0x4e41cd['body']['agent_name']:'');},'ignoreRoute':function(_0x4db699){var _0x54aae9=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x54aae9[_0x1915('0x1c')](_0x4db699[_0x1915('0xf')]);}}));_0x1878a6[_0x1915('0x13')](_0x1915('0x1d'),require(_0x1915('0x1e')));_0x1878a6[_0x1915('0x13')]('/api/voice/chanspy',require(_0x1915('0x1f')));_0x1878a6[_0x1915('0x13')]('/api/voice/contexts',require(_0x1915('0x20')));_0x1878a6[_0x1915('0x13')](_0x1915('0x21'),require(_0x1915('0x22')));_0x1878a6[_0x1915('0x13')](_0x1915('0x23'),require(_0x1915('0x24')));_0x1878a6['use'](_0x1915('0x25'),require(_0x1915('0x26')));_0x1878a6['use']('/api/voice/recordings',require('./api/voiceRecording'));_0x1878a6[_0x1915('0x13')](_0x1915('0x27'),require('./api/screenRecording'));_0x1878a6['use'](_0x1915('0x28'),require(_0x1915('0x29')));_0x1878a6['use'](_0x1915('0x2a'),require(_0x1915('0x2b')));_0x1878a6[_0x1915('0x13')](_0x1915('0x2c'),require(_0x1915('0x2d')));_0x1878a6[_0x1915('0x13')](_0x1915('0x2e'),require(_0x1915('0x2f')));_0x1878a6[_0x1915('0x13')](_0x1915('0x30'),require(_0x1915('0x31')));_0x1878a6['use'](_0x1915('0x32'),require(_0x1915('0x33')));_0x1878a6[_0x1915('0x13')](_0x1915('0x34'),require(_0x1915('0x35')));_0x1878a6[_0x1915('0x13')](_0x1915('0x36'),require(_0x1915('0x37')));_0x1878a6[_0x1915('0x13')]('/api/voice/transfers/reports',require(_0x1915('0x38')));_0x1878a6['use'](_0x1915('0x39'),require('./api/mailServerOut'));_0x1878a6['use'](_0x1915('0x3a'),require(_0x1915('0x3b')));_0x1878a6[_0x1915('0x13')](_0x1915('0x3c'),require('./api/mailQueue'));_0x1878a6[_0x1915('0x13')]('/api/mail/substatuses',require(_0x1915('0x3d')));_0x1878a6[_0x1915('0x13')]('/api/mail/interactions',require('./api/mailInteraction'));_0x1878a6[_0x1915('0x13')]('/api/mail/messages',require('./api/mailMessage'));_0x1878a6['use'](_0x1915('0x3e'),require(_0x1915('0x3f')));_0x1878a6[_0x1915('0x13')]('/api/mail/reports/queue',require('./api/mailQueueReport'));_0x1878a6[_0x1915('0x13')](_0x1915('0x40'),require(_0x1915('0x41')));_0x1878a6[_0x1915('0x13')](_0x1915('0x42'),require(_0x1915('0x43')));_0x1878a6['use'](_0x1915('0x44'),require(_0x1915('0x45')));_0x1878a6[_0x1915('0x13')]('/api/fax/applications',require(_0x1915('0x46')));_0x1878a6[_0x1915('0x13')](_0x1915('0x47'),require('./api/faxInteraction'));_0x1878a6[_0x1915('0x13')]('/api/fax/messages',require(_0x1915('0x48')));_0x1878a6[_0x1915('0x13')](_0x1915('0x49'),require(_0x1915('0x4a')));_0x1878a6[_0x1915('0x13')](_0x1915('0x4b'),require('./api/faxQueueReport'));_0x1878a6['use'](_0x1915('0x4c'),require(_0x1915('0x4d')));_0x1878a6['use']('/api/sms/applications',require(_0x1915('0x4e')));_0x1878a6[_0x1915('0x13')](_0x1915('0x4f'),require(_0x1915('0x50')));_0x1878a6['use'](_0x1915('0x51'),require(_0x1915('0x52')));_0x1878a6[_0x1915('0x13')]('/api/sms/queues',require('./api/smsQueue'));_0x1878a6[_0x1915('0x13')](_0x1915('0x53'),require(_0x1915('0x54')));_0x1878a6[_0x1915('0x13')](_0x1915('0x55'),require('./api/openchannelApplication'));_0x1878a6[_0x1915('0x13')]('/api/openchannel/interactions',require(_0x1915('0x56')));_0x1878a6[_0x1915('0x13')](_0x1915('0x57'),require(_0x1915('0x58')));_0x1878a6[_0x1915('0x13')](_0x1915('0x59'),require(_0x1915('0x5a')));_0x1878a6[_0x1915('0x13')](_0x1915('0x5b'),require('./api/chatWebsite'));_0x1878a6[_0x1915('0x13')](_0x1915('0x5c'),require('./api/openchannelQueueReport'));_0x1878a6[_0x1915('0x13')](_0x1915('0x5d'),require('./api/chatApplication'));_0x1878a6[_0x1915('0x13')](_0x1915('0x5e'),require('./api/chatInteraction'));_0x1878a6[_0x1915('0x13')](_0x1915('0x5f'),require('./api/chatMessage'));_0x1878a6[_0x1915('0x13')](_0x1915('0x60'),require(_0x1915('0x61')));_0x1878a6[_0x1915('0x13')](_0x1915('0x62'),require(_0x1915('0x63')));_0x1878a6[_0x1915('0x13')](_0x1915('0x64'),require(_0x1915('0x65')));_0x1878a6['use'](_0x1915('0x66'),require(_0x1915('0x67')));_0x1878a6[_0x1915('0x13')]('/api/cm/companies',require(_0x1915('0x68')));_0x1878a6['use'](_0x1915('0x69'),require('./api/cmContact'));_0x1878a6[_0x1915('0x13')](_0x1915('0x6a'),require(_0x1915('0x6b')));_0x1878a6['use'](_0x1915('0x6c'),require(_0x1915('0x6d')));_0x1878a6[_0x1915('0x13')](_0x1915('0x6e'),require('./api/cmHopperFinal'));_0x1878a6['use'](_0x1915('0x6f'),require(_0x1915('0x70')));_0x1878a6['use'](_0x1915('0x71'),require('./api/cmCustomField'));_0x1878a6[_0x1915('0x13')](_0x1915('0x72'),require(_0x1915('0x73')));_0x1878a6['use'](_0x1915('0x74'),require(_0x1915('0x75')));_0x1878a6[_0x1915('0x13')](_0x1915('0x76'),require(_0x1915('0x77')));_0x1878a6[_0x1915('0x13')](_0x1915('0x78'),require(_0x1915('0x79')));_0x1878a6[_0x1915('0x13')]('/api/conditions',require('./api/condition'));_0x1878a6[_0x1915('0x13')](_0x1915('0x7a'),require(_0x1915('0x7b')));_0x1878a6['use'](_0x1915('0x7c'),require('./api/pause'));_0x1878a6[_0x1915('0x13')]('/api/cdr',require(_0x1915('0x7d')));_0x1878a6[_0x1915('0x13')](_0x1915('0x7e'),require(_0x1915('0x7f')));_0x1878a6[_0x1915('0x13')]('/api/schedules',require(_0x1915('0x80')));_0x1878a6[_0x1915('0x13')](_0x1915('0x81'),require(_0x1915('0x82')));_0x1878a6[_0x1915('0x13')](_0x1915('0x83'),require('./api/tag'));_0x1878a6[_0x1915('0x13')](_0x1915('0x84'),require(_0x1915('0x85')));_0x1878a6[_0x1915('0x13')](_0x1915('0x86'),require(_0x1915('0x87')));_0x1878a6[_0x1915('0x13')](_0x1915('0x88'),require(_0x1915('0x89')));_0x1878a6[_0x1915('0x13')](_0x1915('0x8a'),require(_0x1915('0x8b')));_0x1878a6[_0x1915('0x13')]('/api/integrations/reports',require(_0x1915('0x8c')));_0x1878a6['use'](_0x1915('0x8d'),require('./api/analyticCustomReport'));_0x1878a6['use'](_0x1915('0x8e'),require('./api/analyticDefaultReport'));_0x1878a6['use'](_0x1915('0x8f'),require(_0x1915('0x90')));_0x1878a6[_0x1915('0x13')](_0x1915('0x91'),require(_0x1915('0x92')));_0x1878a6[_0x1915('0x13')](_0x1915('0x93'),require(_0x1915('0x94')));_0x1878a6[_0x1915('0x13')]('/api/analytics/tree_reports',require('./api/analyticTreeReport'));_0x1878a6[_0x1915('0x13')]('/api/integrations/salesforce/accounts',require(_0x1915('0x95')));_0x1878a6['use'](_0x1915('0x96'),require(_0x1915('0x97')));_0x1878a6[_0x1915('0x13')](_0x1915('0x98'),require(_0x1915('0x99')));_0x1878a6[_0x1915('0x13')](_0x1915('0x9a'),require(_0x1915('0x9b')));_0x1878a6['use'](_0x1915('0x9c'),require(_0x1915('0x9d')));_0x1878a6[_0x1915('0x13')]('/api/integrations/sugarcrm/fields',require('./api/intSugarcrmField'));_0x1878a6[_0x1915('0x13')]('/api/integrations/desk/accounts',require('./api/intDeskAccount'));_0x1878a6[_0x1915('0x13')](_0x1915('0x9e'),require('./api/intDeskConfiguration'));_0x1878a6[_0x1915('0x13')](_0x1915('0x9f'),require(_0x1915('0xa0')));_0x1878a6['use'](_0x1915('0xa1'),require('./api/intZohoAccount'));_0x1878a6[_0x1915('0x13')]('/api/integrations/zoho/configurations',require('./api/intZohoConfiguration'));_0x1878a6[_0x1915('0x13')]('/api/integrations/zoho/fields',require('./api/intZohoField'));_0x1878a6[_0x1915('0x13')](_0x1915('0xa2'),require(_0x1915('0xa3')));_0x1878a6[_0x1915('0x13')]('/api/integrations/zendesk/configurations',require('./api/intZendeskConfiguration'));_0x1878a6[_0x1915('0x13')](_0x1915('0xa4'),require(_0x1915('0xa5')));_0x1878a6[_0x1915('0x13')](_0x1915('0xa6'),require('./api/intFreshdeskAccount'));_0x1878a6[_0x1915('0x13')](_0x1915('0xa7'),require(_0x1915('0xa8')));_0x1878a6[_0x1915('0x13')](_0x1915('0xa9'),require(_0x1915('0xaa')));_0x1878a6['use'](_0x1915('0xab'),require('./api/intVtigerAccount'));_0x1878a6[_0x1915('0x13')]('/api/integrations/vtiger/configurations',require(_0x1915('0xac')));_0x1878a6[_0x1915('0x13')](_0x1915('0xad'),require(_0x1915('0xae')));_0x1878a6['use'](_0x1915('0xaf'),require(_0x1915('0xb0')));_0x1878a6['use']('/api/integrations/servicenow/configurations',require(_0x1915('0xb1')));_0x1878a6[_0x1915('0x13')](_0x1915('0xb2'),require(_0x1915('0xb3')));_0x1878a6[_0x1915('0x13')]('/api/integrations/dynamics365/accounts',require(_0x1915('0xb4')));_0x1878a6[_0x1915('0x13')](_0x1915('0xb5'),require('./api/intDynamics365Configuration'));_0x1878a6[_0x1915('0x13')](_0x1915('0xb6'),require(_0x1915('0xb7')));_0x1878a6[_0x1915('0x13')](_0x1915('0xb8'),require(_0x1915('0xb9')));_0x1878a6['use']('/api/integrations/freshsales/configurations',require('./api/intFreshsalesConfiguration'));_0x1878a6['use'](_0x1915('0xba'),require('./api/intFreshsalesField'));_0x1878a6['use'](_0x1915('0xbb'),require(_0x1915('0xbc')));_0x1878a6[_0x1915('0x13')](_0x1915('0xbd'),require(_0x1915('0xbe')));_0x1878a6['use']('/api/chat/internal/messages',require(_0x1915('0xbf')));_0x1878a6[_0x1915('0x13')](_0x1915('0xc0'),require(_0x1915('0xc1')));_0x1878a6[_0x1915('0x13')](_0x1915('0xc2'),require('./api/jscriptyQuestionReport'));_0x1878a6[_0x1915('0x13')](_0x1915('0xc3'),require('./api/jscriptySessionReport'));_0x1878a6[_0x1915('0x13')](_0x1915('0xc4'),require(_0x1915('0xc5')));_0x1878a6['use'](_0x1915('0xc6'),require(_0x1915('0xc7')));_0x1878a6['use'](_0x1915('0xc8'),require(_0x1915('0xc9')));_0x1878a6[_0x1915('0x13')](_0x1915('0xca'),require('./api/jscriptyProject'));_0x1878a6[_0x1915('0x13')]('/api/settings',require('./api/setting'));_0x1878a6[_0x1915('0x13')](_0x1915('0xcb'),require(_0x1915('0xcc')));_0x1878a6['use'](_0x1915('0xcd'),require(_0x1915('0xce')));_0x1878a6[_0x1915('0x13')](_0x1915('0xcf'),require(_0x1915('0xd0')));_0x1878a6['use'](_0x1915('0xd1'),require(_0x1915('0xd2')));_0x1878a6[_0x1915('0x13')](_0x1915('0xd3'),require(_0x1915('0xd4')));_0x1878a6[_0x1915('0x13')]('/api/license',require(_0x1915('0xd5')));_0x1878a6[_0x1915('0x13')](_0x1915('0xd6'),require(_0x1915('0xd7')));_0x1878a6[_0x1915('0x13')](_0x1915('0xd8'),require(_0x1915('0xd9')));_0x1878a6[_0x1915('0x13')](_0x1915('0xda'),require(_0x1915('0xdb')));_0x1878a6[_0x1915('0x13')]('/api/plugins',require(_0x1915('0xdc')));_0x1878a6[_0x1915('0x13')](_0x1915('0xdd'),require(_0x1915('0xde')));_0x1878a6[_0x1915('0x13')](_0x1915('0xdf'),require(_0x1915('0xe0')));_0x1878a6['use'](_0x1915('0xe1'),require('./api/faxTransferReport'));_0x1878a6['use'](_0x1915('0xe2'),require('./api/openchannelTransferReport'));_0x1878a6[_0x1915('0x13')](_0x1915('0xe3'),require(_0x1915('0xe4')));_0x1878a6[_0x1915('0x13')](_0x1915('0xe5'),require(_0x1915('0xe6')));_0x1878a6[_0x1915('0x13')](_0x1915('0xe7'),require('./api/voicePrefix'));_0x1878a6[_0x1915('0x13')](_0x1915('0xe8'),require(_0x1915('0xe9')));_0x1878a6[_0x1915('0x13')](_0x1915('0xea'),require(_0x1915('0xeb')));_0x1878a6['use'](_0x1915('0xec'),require('./api/userProfileResource'));_0x1878a6[_0x1915('0x13')]('/api/userNotifications',require('./api/userNotification'));_0x1878a6[_0x1915('0x13')](_0x1915('0xed'),require(_0x1915('0xee')));_0x1878a6[_0x1915('0x13')](_0x1915('0xef'),require(_0x1915('0xf0')));_0x1878a6[_0x1915('0x13')]('/api/whatsapp/interactions',require(_0x1915('0xf1')));_0x1878a6[_0x1915('0x13')](_0x1915('0xf2'),require(_0x1915('0xf3')));_0x1878a6['use'](_0x1915('0xf4'),require(_0x1915('0xf5')));_0x1878a6[_0x1915('0x13')]('/api/whatsapp/reports/transfer',require(_0x1915('0xf6')));_0x1878a6[_0x1915('0x13')](_0x1915('0xf7'),require('./api/whatsappQueue'));_0x1878a6[_0x1915('0x13')](_0x1915('0xf8'),require(_0x1915('0xf9')));_0x1878a6[_0x1915('0x13')](_0x1915('0xfa'),require(_0x1915('0xfb')));_0x1878a6['use'](_0x1915('0xfc'),require(_0x1915('0xfd')));_0x1878a6[_0x1915('0x13')]('/api/auth/google',require(_0x1915('0xfe')));_0x1878a6[_0x1915('0x13')](_0x1915('0xff'),require(_0x1915('0x100')));_0x1878a6[_0x1915('0x13')]('/api/rpc',require(_0x1915('0x101')));_0x1878a6[_0x1915('0x13')]('/api/version',require(_0x1915('0x102')));_0x1878a6['use'](_0x1915('0x103'),require(_0x1915('0x104')));_0x1878a6[_0x1915('0x13')](_0x1915('0x105'),require(_0x1915('0x106')));_0x1878a6[_0x1915('0x13')](_0x1915('0x107'),require(_0x1915('0x108')));_0x1878a6['use'](_0x1915('0x109'),express[_0x1915('0x10a')](path[_0x1915('0x10b')](config['root'],_0x1915('0x109'))));_0x1878a6[_0x1915('0x13')](_0x1915('0x10c'),express[_0x1915('0x10a')](path[_0x1915('0x10b')](config['root'],'/www')));_0x1878a6[_0x1915('0x13')](_0x1915('0x10d'),express['static'](path[_0x1915('0x10b')](config['root'],_0x1915('0x10d'))));_0x1878a6['use'](_0x1915('0x10e'),express[_0x1915('0x10a')](path['join'](config[_0x1915('0x10f')],_0x1915('0x110'),_0x1915('0x111'))));_0x1878a6['use'](_0x1915('0x112'),express[_0x1915('0x10a')](path[_0x1915('0x10b')](config[_0x1915('0x10f')],_0x1915('0x113'))));_0x1878a6[_0x1915('0x114')]('/:url(api|auth|components|app|bower_components|assets)/*')[_0x1915('0x115')](errors[0x194]);_0x1878a6[_0x1915('0x114')]('/*')['get'](function(_0x898ef0,_0x58d3f4){_0x58d3f4[_0x1915('0x116')](path[_0x1915('0x117')](_0x1878a6[_0x1915('0x115')](_0x1915('0x118'))+'/index.html'));});};var sensitiveFields=[_0x1915('0x119'),'password',_0x1915('0x11a'),_0x1915('0x11b'),_0x1915('0x11c'),'lastName','street',_0x1915('0x11d'),'mobile','fax',_0x1915('0x11e'),_0x1915('0x11f'),_0x1915('0x120'),_0x1915('0x121'),_0x1915('0x122'),_0x1915('0x123'),_0x1915('0x124'),'token',_0x1915('0x125'),_0x1915('0x126'),_0x1915('0x127'),_0x1915('0x128'),'consumerKey','consumerSecret','membername','calleridname',_0x1915('0x129'),_0x1915('0x12a'),_0x1915('0x12b'),'clientEmail',_0x1915('0x12c'),_0x1915('0x12d'),'secretaccesskey','key',_0x1915('0x10'),_0x1915('0x12e'),_0x1915('0x12f'),_0x1915('0x130'),_0x1915('0x131'),_0x1915('0x132'),_0x1915('0x133'),_0x1915('0x134')];function maskSensitiveData(_0x217c76){var _0x385edb=/(?!^)[\s\S](?!$)/g;if(!_[_0x1915('0x135')](_0x217c76))return;for(var _0x17c6ac in _0x217c76){if(_[_0x1915('0x136')](_0x217c76[_0x17c6ac])){for(var _0x50bcc7=0x0;_0x50bcc7<_0x217c76[_0x17c6ac][_0x1915('0x137')];_0x50bcc7++){maskSensitiveData(_0x217c76[_0x17c6ac][_0x50bcc7]);}}else if(_['isPlainObject'](_0x217c76[_0x17c6ac])){maskSensitiveData(_0x217c76[_0x17c6ac]);}else if(_[_0x1915('0x138')](_0x217c76[_0x17c6ac])){_0x217c76[_0x17c6ac]=_0x217c76[_0x17c6ac]['replace'](/{{{/g,_0x1915('0x139'))[_0x1915('0x13a')](/}}}/g,_0x1915('0x13b'))[_0x1915('0x13a')](/{{/g,'@{')[_0x1915('0x13a')](/}}/g,'}@');if(_['includes'](sensitiveFields,_0x17c6ac)){_0x217c76[_0x17c6ac]=_0x217c76[_0x17c6ac][_0x1915('0x13a')](_0x385edb,'*');}}}}
\ No newline at end of file
+var _0xdc27=['/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/dashboard','/api/dashboards/items','./api/dashboardItem','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','/api/sms/applications','./api/smsApplication','./api/smsInteraction','/api/sms/messages','./api/smsMessage','./api/smsQueue','/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/openchannelQueueReport','/api/chat/applications','/api/chat/interactions','./api/chatInteraction','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','/api/cm/contacts','./api/cmContact','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','./api/cmCustomField','/api/actions','./api/action','/api/automations','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','/api/intervals','./api/interval','/api/pauses','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/sounds','./api/tag','./api/trigger','/api/variables','./api/variable','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','./api/analyticMetric','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSalesforceField','./api/intSugarcrmAccount','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','/api/integrations/desk/accounts','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','/api/integrations/zoho/accounts','./api/intZohoConfiguration','./api/intZohoField','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/fields','/api/integrations/vtiger/accounts','./api/intVtigerConfiguration','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','/api/integrations/servicenow/fields','./api/intServicenowField','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intDynamics365Field','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/setting','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','./api/team','./api/license','/api/migrations','./api/migration','/api/attachments','/api/plugins','./api/plugin','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','/api/cm/lists','./api/cmList','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileResource','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','/api/whatsapp/applications','./api/whatsappApplication','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','/api/auth/local','./api/authLocal','/api/auth/google','/api/jira','./api/rpc','/api/version','/api/system','./api/system','/api/pm2','/api/webbar','./api/webbar','/apidoc','join','/www','root','/demo','/snippet','snippet','3.0.0','/plugins','static','/server/files/plugins','route','sendFile','resolve','get','appPath','username','password','newPassword','apiKey','firstName','street','phone','fax','email','clientId','code','accessKey','tenantId','channelSecret','accessToken','accessTokenSecret','authToken','consumerKey','consumerSecret','membername','calleridname','calleridnum','exten','accesskeyid','secretaccesskey','key','localstationid','dsn','secret','registry','oldPassword','length','isString','replace','lodash','path','express','util','./errors','./config/environment','./config/logger','api','auth','default','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','\x20body=%s','format','headers','x-forwarded-for','remoteAddress','url','responseTime','user','name','role','inspect','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','method','connection','statusCode','device','/api/users','./api/user','/api/voice/chanspy','/api/voice/contexts','./api/voiceContext','./api/voiceExtension','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceRecording','/api/screen/recordings','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/trunks','./api/trunk','./api/mailServerOut','./api/mailAccount','/api/mail/queues'];(function(_0xcd8c8c,_0x3589c0){var _0x454f55=function(_0xef5859){while(--_0xef5859){_0xcd8c8c['push'](_0xcd8c8c['shift']());}};_0x454f55(++_0x3589c0);}(_0xdc27,0x103));var _0x7dc2=function(_0x200af4,_0x8416e8){_0x200af4=_0x200af4-0x0;var _0x3831b6=_0xdc27[_0x200af4];return _0x3831b6;};'use strict';var _=require(_0x7dc2('0x0'));var path=require(_0x7dc2('0x1'));var express=require(_0x7dc2('0x2'));var ewinston=require('express-winston');var util=require(_0x7dc2('0x3'));var errors=require(_0x7dc2('0x4'));var config=require(_0x7dc2('0x5'));var logger=require(_0x7dc2('0x6'))(_0x7dc2('0x7'));var authLogger=require(_0x7dc2('0x6'))(_0x7dc2('0x8'));exports[_0x7dc2('0x9')]=function(_0x4ee880){_0x4ee880[_0x7dc2('0xa')](ewinston[_0x7dc2('0xb')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0xc2540,_0x5148a9){var _0x3f7b95=_0x7dc2('0xc');if(!_[_0x7dc2('0xd')](_0xc2540[_0x7dc2('0xe')])){_0x3f7b95+=_0x7dc2('0xf');var _0x17583c=_0xc2540[_0x7dc2('0xe')];maskSensitiveData(_0x17583c);}return util[_0x7dc2('0x10')](_0x3f7b95,_0xc2540['method'],_0xc2540[_0x7dc2('0x11')][_0x7dc2('0x12')]?_0xc2540[_0x7dc2('0x11')][_0x7dc2('0x12')]:_0xc2540['connection'][_0x7dc2('0x13')]||_0xc2540['ip'],_0xc2540[_0x7dc2('0x14')],_0x5148a9['statusCode'],_0x5148a9[_0x7dc2('0x15')],_0xc2540[_0x7dc2('0x16')]?_0xc2540[_0x7dc2('0x16')]['id']:null,_0xc2540[_0x7dc2('0x16')]?_0xc2540[_0x7dc2('0x16')][_0x7dc2('0x17')]:null,_0xc2540[_0x7dc2('0x16')]?_0xc2540[_0x7dc2('0x16')][_0x7dc2('0x18')]:null,_0x17583c?util[_0x7dc2('0x19')](_0x17583c,![],null):'');}}));_0x4ee880[_0x7dc2('0xa')](ewinston['logger']({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x2a1c00,_0x38e51b){var _0x3c2984=_0x7dc2('0x1a');if(_0x2a1c00[_0x7dc2('0xe')]&&_0x2a1c00[_0x7dc2('0xe')]['device']&&_0x2a1c00['body'][_0x7dc2('0x1b')]){_0x3c2984=_0x7dc2('0x1c');}return util['format'](_0x3c2984,_0x2a1c00[_0x7dc2('0x1d')],_0x2a1c00['headers'][_0x7dc2('0x12')]?_0x2a1c00[_0x7dc2('0x11')][_0x7dc2('0x12')]:_0x2a1c00[_0x7dc2('0x1e')][_0x7dc2('0x13')]||_0x2a1c00['ip'],_0x2a1c00[_0x7dc2('0x14')],_0x38e51b[_0x7dc2('0x1f')],_0x38e51b[_0x7dc2('0x15')],_0x2a1c00['user']?_0x2a1c00['user']['id']:null,_0x2a1c00[_0x7dc2('0x16')]?_0x2a1c00[_0x7dc2('0x16')][_0x7dc2('0x17')]:null,_0x2a1c00[_0x7dc2('0x16')]?_0x2a1c00[_0x7dc2('0x16')]['role']:null,_0x2a1c00[_0x7dc2('0xe')]&&_0x2a1c00[_0x7dc2('0xe')][_0x7dc2('0x20')]?_0x2a1c00[_0x7dc2('0xe')][_0x7dc2('0x20')]:'other',_0x2a1c00[_0x7dc2('0xe')]&&_0x2a1c00[_0x7dc2('0xe')][_0x7dc2('0x1b')]?_0x2a1c00[_0x7dc2('0xe')][_0x7dc2('0x1b')]:'',_0x2a1c00['body']&&_0x2a1c00['body']['agent_name']?_0x2a1c00[_0x7dc2('0xe')]['agent_name']:'');},'ignoreRoute':function(_0x15aa9a){var _0x29e777=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x29e777['test'](_0x15aa9a[_0x7dc2('0x14')]);}}));_0x4ee880['use'](_0x7dc2('0x21'),require(_0x7dc2('0x22')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x23'),require('./api/voiceChanSpy'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x24'),require(_0x7dc2('0x25')));_0x4ee880[_0x7dc2('0xa')]('/api/voice/extensions',require(_0x7dc2('0x26')));_0x4ee880[_0x7dc2('0xa')]('/api/voice/mohs',require(_0x7dc2('0x27')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x28'),require('./api/voiceQueue'));_0x4ee880[_0x7dc2('0xa')]('/api/voice/recordings',require(_0x7dc2('0x29')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x2a'),require('./api/screenRecording'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x2b'),require(_0x7dc2('0x2c')));_0x4ee880['use'](_0x7dc2('0x2d'),require(_0x7dc2('0x2e')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x2f'),require(_0x7dc2('0x30')));_0x4ee880['use'](_0x7dc2('0x31'),require(_0x7dc2('0x32')));_0x4ee880['use'](_0x7dc2('0x33'),require(_0x7dc2('0x34')));_0x4ee880['use']('/api/voice/queues/reports',require(_0x7dc2('0x35')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x36'),require(_0x7dc2('0x37')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x38'),require(_0x7dc2('0x39')));_0x4ee880[_0x7dc2('0xa')]('/api/voice/transfers/reports',require('./api/voiceTransferReport'));_0x4ee880[_0x7dc2('0xa')]('/api/mail/out_servers',require(_0x7dc2('0x3a')));_0x4ee880[_0x7dc2('0xa')]('/api/mail/accounts',require(_0x7dc2('0x3b')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x3c'),require('./api/mailQueue'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x3d'),require(_0x7dc2('0x3e')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x3f'),require(_0x7dc2('0x40')));_0x4ee880['use'](_0x7dc2('0x41'),require(_0x7dc2('0x42')));_0x4ee880['use'](_0x7dc2('0x43'),require(_0x7dc2('0x44')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x45'),require('./api/mailQueueReport'));_0x4ee880[_0x7dc2('0xa')]('/api/dashboards',require(_0x7dc2('0x46')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x47'),require(_0x7dc2('0x48')));_0x4ee880[_0x7dc2('0xa')]('/api/fax/accounts',require('./api/faxAccount'));_0x4ee880[_0x7dc2('0xa')]('/api/fax/applications',require(_0x7dc2('0x49')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x4a'),require(_0x7dc2('0x4b')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x4c'),require(_0x7dc2('0x4d')));_0x4ee880['use'](_0x7dc2('0x4e'),require('./api/faxQueue'));_0x4ee880[_0x7dc2('0xa')]('/api/fax/reports/queue',require(_0x7dc2('0x4f')));_0x4ee880['use'](_0x7dc2('0x50'),require(_0x7dc2('0x51')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x52'),require(_0x7dc2('0x53')));_0x4ee880[_0x7dc2('0xa')]('/api/sms/interactions',require(_0x7dc2('0x54')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x55'),require(_0x7dc2('0x56')));_0x4ee880[_0x7dc2('0xa')]('/api/sms/queues',require(_0x7dc2('0x57')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x58'),require(_0x7dc2('0x59')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x5a'),require(_0x7dc2('0x5b')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x5c'),require(_0x7dc2('0x5d')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x5e'),require(_0x7dc2('0x5f')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x60'),require(_0x7dc2('0x61')));_0x4ee880[_0x7dc2('0xa')]('/api/chat/websites',require('./api/chatWebsite'));_0x4ee880[_0x7dc2('0xa')]('/api/openchannel/reports/queue',require(_0x7dc2('0x62')));_0x4ee880['use'](_0x7dc2('0x63'),require('./api/chatApplication'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x64'),require(_0x7dc2('0x65')));_0x4ee880[_0x7dc2('0xa')]('/api/chat/messages',require(_0x7dc2('0x66')));_0x4ee880['use'](_0x7dc2('0x67'),require(_0x7dc2('0x68')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x69'),require(_0x7dc2('0x6a')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x6b'),require(_0x7dc2('0x6c')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x6d'),require(_0x7dc2('0x6e')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x6f'),require('./api/cmCompany'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x70'),require(_0x7dc2('0x71')));_0x4ee880[_0x7dc2('0xa')]('/api/cm/hopper',require('./api/cmHopper'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x72'),require(_0x7dc2('0x73')));_0x4ee880['use'](_0x7dc2('0x74'),require('./api/cmHopperFinal'));_0x4ee880['use'](_0x7dc2('0x75'),require(_0x7dc2('0x76')));_0x4ee880['use'](_0x7dc2('0x77'),require(_0x7dc2('0x78')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x79'),require(_0x7dc2('0x7a')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x7b'),require('./api/automation'));_0x4ee880[_0x7dc2('0xa')]('/api/canned_answers',require(_0x7dc2('0x7c')));_0x4ee880['use'](_0x7dc2('0x7d'),require(_0x7dc2('0x7e')));_0x4ee880['use'](_0x7dc2('0x7f'),require('./api/condition'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x80'),require(_0x7dc2('0x81')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x82'),require('./api/pause'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x83'),require(_0x7dc2('0x84')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x85'),require(_0x7dc2('0x86')));_0x4ee880[_0x7dc2('0xa')]('/api/schedules',require('./api/schedule'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x87'),require('./api/sound'));_0x4ee880['use']('/api/tags',require(_0x7dc2('0x88')));_0x4ee880[_0x7dc2('0xa')]('/api/templates',require('./api/template'));_0x4ee880[_0x7dc2('0xa')]('/api/triggers',require(_0x7dc2('0x89')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x8a'),require(_0x7dc2('0x8b')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x8c'),require(_0x7dc2('0x8d')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x8e'),require(_0x7dc2('0x8f')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x90'),require('./api/analyticCustomReport'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x91'),require(_0x7dc2('0x92')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x93'),require(_0x7dc2('0x94')));_0x4ee880['use']('/api/analytics/metrics',require(_0x7dc2('0x95')));_0x4ee880['use'](_0x7dc2('0x96'),require(_0x7dc2('0x97')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x98'),require(_0x7dc2('0x99')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x9a'),require(_0x7dc2('0x9b')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x9c'),require(_0x7dc2('0x9d')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x9e'),require(_0x7dc2('0x9f')));_0x4ee880['use']('/api/integrations/sugarcrm/accounts',require(_0x7dc2('0xa0')));_0x4ee880[_0x7dc2('0xa')]('/api/integrations/sugarcrm/configurations',require(_0x7dc2('0xa1')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xa2'),require(_0x7dc2('0xa3')));_0x4ee880['use'](_0x7dc2('0xa4'),require('./api/intDeskAccount'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xa5'),require(_0x7dc2('0xa6')));_0x4ee880['use'](_0x7dc2('0xa7'),require('./api/intDeskField'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xa8'),require('./api/intZohoAccount'));_0x4ee880[_0x7dc2('0xa')]('/api/integrations/zoho/configurations',require(_0x7dc2('0xa9')));_0x4ee880[_0x7dc2('0xa')]('/api/integrations/zoho/fields',require(_0x7dc2('0xaa')));_0x4ee880[_0x7dc2('0xa')]('/api/integrations/zendesk/accounts',require('./api/intZendeskAccount'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xab'),require(_0x7dc2('0xac')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xad'),require(_0x7dc2('0xae')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xaf'),require(_0x7dc2('0xb0')));_0x4ee880['use']('/api/integrations/freshdesk/configurations',require('./api/intFreshdeskConfiguration'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xb1'),require('./api/intFreshdeskField'));_0x4ee880['use'](_0x7dc2('0xb2'),require('./api/intVtigerAccount'));_0x4ee880['use']('/api/integrations/vtiger/configurations',require(_0x7dc2('0xb3')));_0x4ee880[_0x7dc2('0xa')]('/api/integrations/vtiger/fields',require(_0x7dc2('0xb4')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xb5'),require(_0x7dc2('0xb6')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xb7'),require('./api/intServicenowConfiguration'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xb8'),require(_0x7dc2('0xb9')));_0x4ee880[_0x7dc2('0xa')]('/api/integrations/dynamics365/accounts',require(_0x7dc2('0xba')));_0x4ee880['use'](_0x7dc2('0xbb'),require(_0x7dc2('0xbc')));_0x4ee880['use'](_0x7dc2('0xbd'),require(_0x7dc2('0xbe')));_0x4ee880['use']('/api/integrations/freshsales/accounts',require('./api/intFreshsalesAccount'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xbf'),require(_0x7dc2('0xc0')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xc1'),require(_0x7dc2('0xc2')));_0x4ee880[_0x7dc2('0xa')]('/api/networks',require('./api/network'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xc3'),require(_0x7dc2('0xc4')));_0x4ee880['use'](_0x7dc2('0xc5'),require('./api/chatInternalMessage'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xc6'),require(_0x7dc2('0xc7')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xc8'),require(_0x7dc2('0xc9')));_0x4ee880['use'](_0x7dc2('0xca'),require(_0x7dc2('0xcb')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xcc'),require(_0x7dc2('0xcd')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xce'),require('./api/squareReport'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xcf'),require(_0x7dc2('0xd0')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xd1'),require('./api/jscriptyProject'));_0x4ee880['use']('/api/settings',require(_0x7dc2('0xd2')));_0x4ee880[_0x7dc2('0xa')]('/api/square/odbc',require(_0x7dc2('0xd3')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xd4'),require(_0x7dc2('0xd5')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xd6'),require(_0x7dc2('0xd7')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xd8'),require(_0x7dc2('0xd9')));_0x4ee880['use'](_0x7dc2('0xda'),require(_0x7dc2('0xdb')));_0x4ee880[_0x7dc2('0xa')]('/api/license',require(_0x7dc2('0xdc')));_0x4ee880['use']('/api/campaigns',require('./api/campaign'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xdd'),require(_0x7dc2('0xde')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xdf'),require('./api/attachment'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xe0'),require(_0x7dc2('0xe1')));_0x4ee880[_0x7dc2('0xa')]('/api/mail/reports/transfer',require(_0x7dc2('0xe2')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xe3'),require(_0x7dc2('0xe4')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xe5'),require(_0x7dc2('0xe6')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xe7'),require(_0x7dc2('0xe8')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xe9'),require('./api/smsTransferReport'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xea'),require(_0x7dc2('0xeb')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xec'),require(_0x7dc2('0xed')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xee'),require(_0x7dc2('0xef')));_0x4ee880['use'](_0x7dc2('0xf0'),require('./api/userProfileSection'));_0x4ee880[_0x7dc2('0xa')]('/api/userProfile/resources',require(_0x7dc2('0xf1')));_0x4ee880['use'](_0x7dc2('0xf2'),require(_0x7dc2('0xf3')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xf4'),require('./api/whatsappAccount'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xf5'),require(_0x7dc2('0xf6')));_0x4ee880[_0x7dc2('0xa')]('/api/whatsapp/interactions',require(_0x7dc2('0xf7')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xf8'),require(_0x7dc2('0xf9')));_0x4ee880['use'](_0x7dc2('0xfa'),require('./api/whatsappQueueReport'));_0x4ee880['use'](_0x7dc2('0xfb'),require(_0x7dc2('0xfc')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xfd'),require(_0x7dc2('0xfe')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0xff'),require(_0x7dc2('0x100')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x101'),require(_0x7dc2('0x102')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x103'),require(_0x7dc2('0x104')));_0x4ee880['use'](_0x7dc2('0x105'),require('./api/authGoogle'));_0x4ee880['use'](_0x7dc2('0x106'),require('./api/jira'));_0x4ee880[_0x7dc2('0xa')]('/api/rpc',require(_0x7dc2('0x107')));_0x4ee880['use'](_0x7dc2('0x108'),require('./api/version'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x109'),require(_0x7dc2('0x10a')));_0x4ee880['use'](_0x7dc2('0x10b'),require('./api/pm2'));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x10c'),require(_0x7dc2('0x10d')));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x10e'),express['static'](path[_0x7dc2('0x10f')](config['root'],_0x7dc2('0x10e'))));_0x4ee880['use'](_0x7dc2('0x110'),express['static'](path[_0x7dc2('0x10f')](config[_0x7dc2('0x111')],_0x7dc2('0x110'))));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x112'),express['static'](path[_0x7dc2('0x10f')](config[_0x7dc2('0x111')],_0x7dc2('0x112'))));_0x4ee880['use'](_0x7dc2('0x113'),express['static'](path['join'](config[_0x7dc2('0x111')],_0x7dc2('0x114'),_0x7dc2('0x115'))));_0x4ee880[_0x7dc2('0xa')](_0x7dc2('0x116'),express[_0x7dc2('0x117')](path[_0x7dc2('0x10f')](config[_0x7dc2('0x111')],_0x7dc2('0x118'))));_0x4ee880[_0x7dc2('0x119')]('/:url(api|auth|components|app|bower_components|assets)/*')['get'](errors[0x194]);_0x4ee880[_0x7dc2('0x119')]('/*')['get'](function(_0xb23af2,_0x3f6389){_0x3f6389[_0x7dc2('0x11a')](path[_0x7dc2('0x11b')](_0x4ee880[_0x7dc2('0x11c')](_0x7dc2('0x11d'))+'/index.html'));});};var sensitiveFields=[_0x7dc2('0x11e'),_0x7dc2('0x11f'),_0x7dc2('0x120'),_0x7dc2('0x121'),_0x7dc2('0x122'),'lastName',_0x7dc2('0x123'),_0x7dc2('0x124'),'mobile',_0x7dc2('0x125'),_0x7dc2('0x126'),_0x7dc2('0x127'),'clientSecret','securityToken',_0x7dc2('0x128'),_0x7dc2('0x129'),_0x7dc2('0x12a'),'token',_0x7dc2('0x12b'),_0x7dc2('0x12c'),_0x7dc2('0x12d'),_0x7dc2('0x12e'),_0x7dc2('0x12f'),_0x7dc2('0x130'),_0x7dc2('0x131'),_0x7dc2('0x132'),_0x7dc2('0x133'),_0x7dc2('0x134'),'vidaooApiKey','clientEmail','privateKey',_0x7dc2('0x135'),_0x7dc2('0x136'),_0x7dc2('0x137'),_0x7dc2('0x16'),'pass','accountSid',_0x7dc2('0x138'),_0x7dc2('0x139'),_0x7dc2('0x13a'),_0x7dc2('0x13b'),_0x7dc2('0x13c')];function maskSensitiveData(_0xf2f3d5){var _0xbe8c8a=/(?!^)[\s\S](?!$)/g;if(!_['isPlainObject'](_0xf2f3d5))return;for(var _0x163aef in _0xf2f3d5){if(_['isArray'](_0xf2f3d5[_0x163aef])){for(var _0x260fec=0x0;_0x260fec<_0xf2f3d5[_0x163aef][_0x7dc2('0x13d')];_0x260fec++){maskSensitiveData(_0xf2f3d5[_0x163aef][_0x260fec]);}}else if(_['isPlainObject'](_0xf2f3d5[_0x163aef])){maskSensitiveData(_0xf2f3d5[_0x163aef]);}else if(_[_0x7dc2('0x13e')](_0xf2f3d5[_0x163aef])){_0xf2f3d5[_0x163aef]=_0xf2f3d5[_0x163aef][_0x7dc2('0x13f')](/{{{/g,'@@{')['replace'](/}}}/g,'}@@')[_0x7dc2('0x13f')](/{{/g,'@{')['replace'](/}}/g,'}@');if(_['includes'](sensitiveFields,_0x163aef)){_0xf2f3d5[_0x163aef]=_0xf2f3d5[_0x163aef][_0x7dc2('0x13f')](_0xbe8c8a,'*');}}}}
\ No newline at end of file
index 825bd4a..59406f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd11e=['../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/squareOdbc/squareOdbc.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','server','rpc','port','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','default','RPC\x20listening\x20on\x20','bluebird','lodash','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/memberReport/memberReport.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc'];(function(_0x1a4df0,_0x3b2938){var _0x33da17=function(_0x4d4e9f){while(--_0x4d4e9f){_0x1a4df0['push'](_0x1a4df0['shift']());}};_0x33da17(++_0x3b2938);}(_0xd11e,0x139));var _0xed11=function(_0x27ff4d,_0x41a7d6){_0x27ff4d=_0x27ff4d-0x0;var _0x803d72=_0xd11e[_0x27ff4d];return _0x803d72;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0xed11('0x0'));var _=require(_0xed11('0x1'));var config=require(_0xed11('0x2'));exports[_0xed11('0x3')]=function(){return new BPromise(function(_0x1deb8f,_0x96ac18){var _0x1f73d6={};_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x5')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require('../api/voiceExtension/voiceExtension.rpc'));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require('../api/voiceQueue/voiceQueue.rpc'));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x6')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x7')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x8')));_0x1f73d6=_['merge'](_0x1f73d6,require(_0xed11('0x9')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require('../api/voiceQueueReport/voiceQueueReport.rpc'));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0xa')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require('../api/trunk/trunk.rpc'));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0xb')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require('../api/userVoiceQueueRt/userVoiceQueueRt.rpc'));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0xc')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0xd')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0xe')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0xf')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x10')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require('../api/mailApplication/mailApplication.rpc'));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x11')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x12')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require('../api/faxApplication/faxApplication.rpc'));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require('../api/faxInteraction/faxInteraction.rpc'));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x13')));_0x1f73d6=_['merge'](_0x1f73d6,require('../api/faxQueue/faxQueue.rpc'));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x14')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x15')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x16')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require('../api/smsMessage/smsMessage.rpc'));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x17')));_0x1f73d6=_['merge'](_0x1f73d6,require(_0xed11('0x18')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x19')));_0x1f73d6=_['merge'](_0x1f73d6,require('../api/openchannelMessage/openchannelMessage.rpc'));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require('../api/openchannelQueue/openchannelQueue.rpc'));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x1a')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x1b')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x1c')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x1d')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x1e')));_0x1f73d6=_['merge'](_0x1f73d6,require('../api/cmHopper/cmHopper.rpc'));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x1f')));_0x1f73d6=_['merge'](_0x1f73d6,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require('../api/cmHopperHistory/cmHopperHistory.rpc'));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x20')));_0x1f73d6=_['merge'](_0x1f73d6,require(_0xed11('0x21')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require('../api/pause/pause.rpc'));_0x1f73d6=_['merge'](_0x1f73d6,require('../api/sound/sound.rpc'));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x22')));_0x1f73d6=_['merge'](_0x1f73d6,require(_0xed11('0x23')));_0x1f73d6=_['merge'](_0x1f73d6,require(_0xed11('0x24')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x25')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require('../api/intSugarcrmAccount/intSugarcrmAccount.rpc'));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x26')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x27')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x28')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x29')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require('../api/intVtigerAccount/intVtigerAccount.rpc'));_0x1f73d6=_['merge'](_0x1f73d6,require(_0xed11('0x2a')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x2b')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x2c')));_0x1f73d6=_['merge'](_0x1f73d6,require(_0xed11('0x2d')));_0x1f73d6=_['merge'](_0x1f73d6,require(_0xed11('0x2e')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x2f')));_0x1f73d6=_['merge'](_0x1f73d6,require(_0xed11('0x30')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require('../api/setting/setting.rpc'));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x31')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require('../api/squareProject/squareProject.rpc'));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x32')));_0x1f73d6=_['merge'](_0x1f73d6,require(_0xed11('0x33')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x34')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x35')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x36')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x37')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x38')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x39')));_0x1f73d6=_[_0xed11('0x4')](_0x1f73d6,require(_0xed11('0x3a')));_0x1f73d6=_['merge'](_0x1f73d6,require(_0xed11('0x3b')));var _0xb55a89=jayson[_0xed11('0x3c')](_0x1f73d6)['http']();var _0xa8adb2=config[_0xed11('0x3d')][_0xed11('0x3e')]||config[_0xed11('0x3e')]+0x1;var _0x3e81dc=config[_0xed11('0x3d')]['ip']||'localhost';_0xb55a89['on'](_0xed11('0x3f'),function(_0x2e8258){return _0x96ac18(_0x2e8258);});_0xb55a89[_0xed11('0x3')](_0xa8adb2,_0x3e81dc,function(){console[_0xed11('0x40')](_0xed11('0x41'),_0x3e81dc,_0xa8adb2);require('../config/triggers')[_0xed11('0x42')]();return _0x1deb8f(_0xed11('0x43')+_0x3e81dc+':'+_0xa8adb2);});});};
\ No newline at end of file
+var _0x86b1=['Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','default','jayson/promise','merge','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.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','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.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/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatMessage/chatMessage.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/template/template.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','rpc','port','localhost','error','log'];(function(_0x383627,_0x5be16e){var _0x2c16a0=function(_0x569b72){while(--_0x569b72){_0x383627['push'](_0x383627['shift']());}};_0x2c16a0(++_0x5be16e);}(_0x86b1,0x10a));var _0x186b=function(_0x1b7a9a,_0xc3832f){_0x1b7a9a=_0x1b7a9a-0x0;var _0x21113c=_0x86b1[_0x1b7a9a];return _0x21113c;};'use strict';var jayson=require(_0x186b('0x0'));var BPromise=require('bluebird');var _=require('lodash');var config=require('../config/environment');exports['listen']=function(){return new BPromise(function(_0xb13125,_0x4ca7c1){var _0x594557={};_0x594557=_[_0x186b('0x1')](_0x594557,require('../api/user/user.rpc'));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x2')));_0x594557=_['merge'](_0x594557,require(_0x186b('0x3')));_0x594557=_['merge'](_0x594557,require('../api/voiceRecording/voiceRecording.rpc'));_0x594557=_['merge'](_0x594557,require(_0x186b('0x4')));_0x594557=_['merge'](_0x594557,require('../api/voiceDialReport/voiceDialReport.rpc'));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x5')));_0x594557=_['merge'](_0x594557,require(_0x186b('0x6')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x7')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x8')));_0x594557=_[_0x186b('0x1')](_0x594557,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x9')));_0x594557=_['merge'](_0x594557,require(_0x186b('0xa')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0xb')));_0x594557=_['merge'](_0x594557,require(_0x186b('0xc')));_0x594557=_['merge'](_0x594557,require(_0x186b('0xd')));_0x594557=_['merge'](_0x594557,require(_0x186b('0xe')));_0x594557=_['merge'](_0x594557,require('../api/mailApplication/mailApplication.rpc'));_0x594557=_['merge'](_0x594557,require('../api/mailQueueReport/mailQueueReport.rpc'));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0xf')));_0x594557=_['merge'](_0x594557,require(_0x186b('0x10')));_0x594557=_[_0x186b('0x1')](_0x594557,require('../api/faxInteraction/faxInteraction.rpc'));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x11')));_0x594557=_['merge'](_0x594557,require(_0x186b('0x12')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x13')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x14')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x15')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x16')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x17')));_0x594557=_['merge'](_0x594557,require('../api/openchannelApplication/openchannelApplication.rpc'));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x18')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x19')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x1a')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x1b')));_0x594557=_[_0x186b('0x1')](_0x594557,require('../api/chatInteraction/chatInteraction.rpc'));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x1c')));_0x594557=_[_0x186b('0x1')](_0x594557,require('../api/chatQueue/chatQueue.rpc'));_0x594557=_[_0x186b('0x1')](_0x594557,require('../api/cmContact/cmContact.rpc'));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x1d')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x1e')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x1f')));_0x594557=_[_0x186b('0x1')](_0x594557,require('../api/cmHopperHistory/cmHopperHistory.rpc'));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x20')));_0x594557=_[_0x186b('0x1')](_0x594557,require('../api/interval/interval.rpc'));_0x594557=_['merge'](_0x594557,require(_0x186b('0x21')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x22')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x23')));_0x594557=_[_0x186b('0x1')](_0x594557,require('../api/trigger/trigger.rpc'));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x24')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x25')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x26')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x27')));_0x594557=_[_0x186b('0x1')](_0x594557,require('../api/intZohoAccount/intZohoAccount.rpc'));_0x594557=_[_0x186b('0x1')](_0x594557,require('../api/intZendeskAccount/intZendeskAccount.rpc'));_0x594557=_[_0x186b('0x1')](_0x594557,require('../api/intFreshdeskAccount/intFreshdeskAccount.rpc'));_0x594557=_[_0x186b('0x1')](_0x594557,require('../api/intVtigerAccount/intVtigerAccount.rpc'));_0x594557=_['merge'](_0x594557,require(_0x186b('0x28')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x29')));_0x594557=_['merge'](_0x594557,require(_0x186b('0x2a')));_0x594557=_['merge'](_0x594557,require(_0x186b('0x2b')));_0x594557=_['merge'](_0x594557,require(_0x186b('0x2c')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x2d')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x2e')));_0x594557=_[_0x186b('0x1')](_0x594557,require('../api/setting/setting.rpc'));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x2f')));_0x594557=_['merge'](_0x594557,require(_0x186b('0x30')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x31')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x32')));_0x594557=_['merge'](_0x594557,require(_0x186b('0x33')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x34')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x35')));_0x594557=_[_0x186b('0x1')](_0x594557,require('../api/whatsappAccount/whatsappAccount.rpc'));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x36')));_0x594557=_[_0x186b('0x1')](_0x594557,require('../api/whatsappMessage/whatsappMessage.rpc'));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x37')));_0x594557=_[_0x186b('0x1')](_0x594557,require(_0x186b('0x38')));var _0x3310f0=jayson[_0x186b('0x39')](_0x594557)[_0x186b('0x3a')]();var _0x8c4894=config[_0x186b('0x3b')]['port']||config[_0x186b('0x3c')]+0x1;var _0x43ab77=config[_0x186b('0x3b')]['ip']||_0x186b('0x3d');_0x3310f0['on'](_0x186b('0x3e'),function(_0x2e91d2){return _0x4ca7c1(_0x2e91d2);});_0x3310f0['listen'](_0x8c4894,_0x43ab77,function(){console[_0x186b('0x3f')](_0x186b('0x40'),_0x43ab77,_0x8c4894);require('../config/triggers')[_0x186b('0x41')]();return _0xb13125('RPC\x20listening\x20on\x20'+_0x43ab77+':'+_0x8c4894);});});};
\ No newline at end of file
index c8d8d40..fb9790a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e1e=['isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','replace','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','continueAt','extension','getVariable','GET\x20VARIABLE\x20\x22%s\x22','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','EventEmitter','./error','call','setEncoding','setTimeout','headers','emit','ready','line','toLowerCase','hangup','substring','520-Invalid','result=','substr','indexOf','match','error','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout','command','function','write','destroy','inherits','prototype','sendRequest','sync','ANSWER','getData','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','exec','EXEC\x20%s\x20%s','join','setContext','SET\x20CONTEXT\x20%s','setExtension','setPriority','SET\x20PRIORITY\x20%s','setVariable','isBoolean'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x5e1e,0xe4));var _0xe5e1=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0x5e1e[_0x376b45];return _0x2341b3;};'use strict';var util=require(_0xe5e1('0x0'));var _=require('lodash');var EventEmitter=require('events')[_0xe5e1('0x1')];var AGIReply=require('./reply');var AGIError=require(_0xe5e1('0x2'));function AGIChannel(_0x32ceeb){var _0x27cb91=this,_0x176ea4=new AGIReply(),_0x2cd81d=![],_0x281dbc={};EventEmitter[_0xe5e1('0x3')](_0x27cb91);_0x32ceeb[_0xe5e1('0x4')]('utf8');_0x32ceeb[_0xe5e1('0x5')](0x8*0x3c*0x3c*0x3e8);_0x176ea4[_0xe5e1('0x4')]('utf8');_0x176ea4['on'](_0xe5e1('0x6'),function(_0x327531){for(var _0x2916d1 in _0x327531){_0x27cb91[_0x2916d1]=_0x327531[_0x2916d1];}_0x27cb91[_0xe5e1('0x7')](_0xe5e1('0x8'));});_0x176ea4['on'](_0xe5e1('0x9'),function(_0xfd4b2){if(_0xfd4b2[_0xe5e1('0xa')]()=='hangup'){_0x27cb91['emit'](_0xe5e1('0xb'));return;}if(_0xfd4b2[_0xe5e1('0xc')](0x0,0xb)==_0xe5e1('0xd')){_0x2cd81d=!![];}if(_0x2cd81d){_0x281dbc['rx']+=_0xfd4b2+'\x0a';if(_0xfd4b2['search']('520\x20End\x20of\x20proper')!=-0x1){_0x2cd81d=![];}}else{_0x281dbc['rx']=_0xfd4b2;}if(_0x2cd81d){return;}if(typeof _0x281dbc['cb']=='function'){var _0x38e9a8=_0x281dbc['rx'][_0xe5e1('0xc')](0x0,0x3),_0x427eee=null,_0x5de9d4=null;_0x38e9a8=parseInt(_0x38e9a8);if(isNaN(_0x38e9a8)){_0x281dbc['cb'](null,{'code':0x1f4,'result':-0x1,'extra':'no\x20code'});return;}if(_0x38e9a8!=0xc8){_0x281dbc['cb'](null,{'code':_0x38e9a8,'result':-0x1,'extra':'KO'});return;}_0x427eee=_0x281dbc['rx'][_0xe5e1('0xc')](0x4)['replace'](_0xe5e1('0xe'),'');if(_0x427eee['indexOf']('\x20')!=-0x1){_0x427eee=_0x427eee[_0xe5e1('0xf')](0x0,_0x427eee[_0xe5e1('0x10')]('\x20'));}if(_['startsWith'](_0x427eee,'-1')){_0x427eee=parseInt(_0x427eee);}_0x5de9d4=_0x281dbc['rx']['split']('\x20');if(_0x5de9d4['length']==0x3){_0x5de9d4=_0x5de9d4[0x2][_0xe5e1('0xc')](0x1,_0x5de9d4[0x2]['length']-0x1);}else if(_0x5de9d4['length']>0x3){var _0x3a0d6a=/\((.+)\)/;var _0x309495=_0x281dbc['rx'][_0xe5e1('0x11')](_0x3a0d6a);if(_0x309495){_0x5de9d4=_0x309495[0x1];}else{_0x5de9d4=null;}}else{_0x5de9d4=null;}_0x281dbc['cb'](null,{'code':_0x38e9a8,'result':_0x427eee,'extra':_0x5de9d4});}});_0x32ceeb['on']('error',function(_0x51dd64){_0x27cb91[_0xe5e1('0x7')](_0xe5e1('0x12'),new AGIError(_0xe5e1('0x13'),_0x51dd64[_0xe5e1('0x14')]));});_0x32ceeb['on'](_0xe5e1('0x15'),function(){_0x27cb91[_0xe5e1('0x7')]('close',new AGIError(_0xe5e1('0x16')));});_0x32ceeb['on'](_0xe5e1('0x17'),function(){_0x27cb91[_0xe5e1('0x7')]('timeout',new AGIError('E_AGI_SOCKET_TIMEOUT'));_0x32ceeb['destroy']();});_0x32ceeb['pipe'](_0x176ea4);this[_0xe5e1('0x18')]=function(_0x80cff1,_0x1c1393){var _0x80cff1=_0x80cff1||'',_0x1c1393=typeof _0x1c1393==_0xe5e1('0x19')?_0x1c1393:new Function();_0x281dbc={'tx':_0x80cff1,'rx':'','cb':_0x1c1393};_0x32ceeb[_0xe5e1('0x1a')](_0x80cff1+'\x0a');},this[_0xe5e1('0x15')]=function(){_0x32ceeb[_0xe5e1('0x1b')]();};}util[_0xe5e1('0x1c')](AGIChannel,EventEmitter);AGIChannel[_0xe5e1('0x1d')][_0xe5e1('0x1e')]=function(_0x76e763){return this[_0xe5e1('0x18')][_0xe5e1('0x1f')](this,_0x76e763);};AGIChannel[_0xe5e1('0x1d')]['answer']=function(){return this[_0xe5e1('0x1e')](_0xe5e1('0x20'));};AGIChannel[_0xe5e1('0x1d')][_0xe5e1('0x21')]=function(_0x42c96d,_0x37281f,_0x2008c2){_0x42c96d=_0x42c96d===undefined?'beep':_0x42c96d;_0x37281f=_0x37281f===undefined?'5':_0x37281f;_0x2008c2=_0x2008c2===undefined?'1':_0x2008c2;return this['sendRequest'](util[_0xe5e1('0x22')](_0xe5e1('0x23'),_0x42c96d,_0x37281f*0x3e8,_0x2008c2));};AGIChannel['prototype'][_0xe5e1('0x24')]=function(_0x4071e6){_0x4071e6=_0x4071e6||_0xe5e1('0x25');return this['sendRequest'](util[_0xe5e1('0x22')]('VERBOSE\x20\x22%s\x22',_0x4071e6));};AGIChannel[_0xe5e1('0x1d')][_0xe5e1('0x26')]=function(_0x5e5955,_0x569c8a){if(_['isArray'](_0x569c8a)){return this[_0xe5e1('0x1e')](util[_0xe5e1('0x22')](_0xe5e1('0x27'),_0x5e5955,_0x569c8a[_0xe5e1('0x28')](',')));}return this['sendRequest'](util['format'](_0xe5e1('0x27'),_0x5e5955,_0x569c8a));};AGIChannel[_0xe5e1('0x1d')][_0xe5e1('0x29')]=function(_0x292093){return this[_0xe5e1('0x1e')](util['format'](_0xe5e1('0x2a'),_0x292093));};AGIChannel['prototype'][_0xe5e1('0x2b')]=function(_0xcc4c00){return this['sendRequest'](util[_0xe5e1('0x22')]('SET\x20EXTENSION\x20%s',_0xcc4c00));};AGIChannel[_0xe5e1('0x1d')][_0xe5e1('0x2c')]=function(_0x1c91f7){return this['sendRequest'](util[_0xe5e1('0x22')](_0xe5e1('0x2d'),_0x1c91f7));};AGIChannel[_0xe5e1('0x1d')][_0xe5e1('0xb')]=function(){return this[_0xe5e1('0x1e')]('HANGUP');};AGIChannel[_0xe5e1('0x1d')][_0xe5e1('0x2e')]=function(_0x5f44e2,_0x2b0a95){var _0x30161d=_[_0xe5e1('0x2f')](_0x2b0a95)||_[_0xe5e1('0x30')](_0x2b0a95)?_0x2b0a95[_0xe5e1('0x31')]():_0x2b0a95;return this['sendRequest'](util[_0xe5e1('0x22')](_0xe5e1('0x32'),_0x5f44e2,_0x30161d?_0x30161d[_0xe5e1('0x31')]()[_0xe5e1('0x33')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0xe5e1('0x1d')]['sayNumber']=function(_0x257ca3,_0x3e898e){return this[_0xe5e1('0x1e')](util[_0xe5e1('0x22')](_0xe5e1('0x34'),_0x257ca3,_0x3e898e));};AGIChannel[_0xe5e1('0x1d')][_0xe5e1('0x35')]=function(_0x4ed1fc,_0x2c4cea){return this[_0xe5e1('0x1e')](util[_0xe5e1('0x22')](_0xe5e1('0x36'),_0x4ed1fc,_0x2c4cea));};AGIChannel['prototype'][_0xe5e1('0x37')]=function(_0x269bdd,_0x19d1bb){return this['sendRequest'](util[_0xe5e1('0x22')]('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x269bdd,_0x19d1bb));};AGIChannel[_0xe5e1('0x1d')][_0xe5e1('0x38')]=function(_0x15e33d,_0x4514e9,_0x39e37a){_0x4514e9=_0x4514e9||this[_0xe5e1('0x39')];_0x39e37a=_0x39e37a||0x1;this[_0xe5e1('0x29')](_0x15e33d);this['setExtension'](_0x4514e9);this[_0xe5e1('0x2c')](_0x39e37a);return this[_0xe5e1('0x24')](util[_0xe5e1('0x22')]('GOTO\x20%s\x20%s\x20%s',_0x15e33d,_0x4514e9,_0x39e37a));};AGIChannel[_0xe5e1('0x1d')][_0xe5e1('0x3a')]=function(_0x1010d4){return this[_0xe5e1('0x1e')](util[_0xe5e1('0x22')](_0xe5e1('0x3b'),_0x1010d4));};AGIChannel[_0xe5e1('0x1d')]['recordFile']=function(_0x214cd7,_0x46076f,_0x51fb0d,_0x92dda0,_0x124f7c,_0x1b68b8){_0x46076f=_0x46076f||'wav';_0x51fb0d=_0x51fb0d||'';_0x92dda0=_0x92dda0===undefined?-0x1:_0x92dda0==='-1'?-0x1:_0x92dda0*0x3e8;_0x124f7c=_0x124f7c===undefined?'':'s='+_0x124f7c;_0x1b68b8=_0x1b68b8?_0xe5e1('0x3c'):'';return this[_0xe5e1('0x1e')](util['format'](_0xe5e1('0x3d'),_0x214cd7,_0x46076f,_0x51fb0d,_0x92dda0,_0x1b68b8,_0x124f7c));};AGIChannel[_0xe5e1('0x1d')]['streamFile']=function(_0x3f570b,_0x2f5da6){_0x2f5da6=_0x2f5da6||'';return this[_0xe5e1('0x1e')](util['format'](_0xe5e1('0x3e'),_0x3f570b,_0x2f5da6));};AGIChannel['prototype'][_0xe5e1('0x3f')]=function(_0x7cf8e1){return this['exec'](_0xe5e1('0x40'),_0x7cf8e1);};AGIChannel[_0xe5e1('0x1d')]['wait']=function(_0x37b825){return this[_0xe5e1('0x26')](_0xe5e1('0x41'),_0x37b825);};AGIChannel['prototype']['error']=function(_0x46038b,_0x3248c6){this['noop'](util[_0xe5e1('0x22')](_0xe5e1('0x42'),_0x46038b['id'],_0x46038b[_0xe5e1('0x43')],_0x3248c6));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xe5e1('0x44')]=AGIChannel;
\ No newline at end of file
+var _0x2ba6=['replace','result=','indexOf','substr','startsWith','split','length','match','error','E_AGI_SOCKET_ERROR','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','function','write','inherits','prototype','sendRequest','sync','answer','ANSWER','getData','beep','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','format','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','join','SET\x20CONTEXT\x20%s','setExtension','SET\x20EXTENSION\x20%s','setPriority','HANGUP','setVariable','isBoolean','SET\x20VARIABLE\x20%s\x20\x22%s\x22','toString','SAY\x20NUMBER\x20%s\x20%s','sayDigits','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','extension','setContext','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','BEEP','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','wait','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','lodash','events','EventEmitter','./reply','call','utf8','setTimeout','setEncoding','headers','emit','ready','line','toLowerCase','hangup','520-Invalid','search','520\x20End\x20of\x20proper','substring','no\x20code'];(function(_0xa1e3ca,_0x559022){var _0x5005ab=function(_0x12f90e){while(--_0x12f90e){_0xa1e3ca['push'](_0xa1e3ca['shift']());}};_0x5005ab(++_0x559022);}(_0x2ba6,0x1ea));var _0x62ba=function(_0x455251,_0x2c05cc){_0x455251=_0x455251-0x0;var _0x396239=_0x2ba6[_0x455251];return _0x396239;};'use strict';var util=require(_0x62ba('0x0'));var _=require(_0x62ba('0x1'));var EventEmitter=require(_0x62ba('0x2'))[_0x62ba('0x3')];var AGIReply=require(_0x62ba('0x4'));var AGIError=require('./error');function AGIChannel(_0xf21fcc){var _0x3b872f=this,_0x19316d=new AGIReply(),_0x362f2c=![],_0x42eef5={};EventEmitter[_0x62ba('0x5')](_0x3b872f);_0xf21fcc['setEncoding'](_0x62ba('0x6'));_0xf21fcc[_0x62ba('0x7')](0x8*0x3c*0x3c*0x3e8);_0x19316d[_0x62ba('0x8')]('utf8');_0x19316d['on'](_0x62ba('0x9'),function(_0x4963c2){for(var _0xb60414 in _0x4963c2){_0x3b872f[_0xb60414]=_0x4963c2[_0xb60414];}_0x3b872f[_0x62ba('0xa')](_0x62ba('0xb'));});_0x19316d['on'](_0x62ba('0xc'),function(_0x405e92){if(_0x405e92[_0x62ba('0xd')]()==_0x62ba('0xe')){_0x3b872f[_0x62ba('0xa')](_0x62ba('0xe'));return;}if(_0x405e92['substring'](0x0,0xb)==_0x62ba('0xf')){_0x362f2c=!![];}if(_0x362f2c){_0x42eef5['rx']+=_0x405e92+'\x0a';if(_0x405e92[_0x62ba('0x10')](_0x62ba('0x11'))!=-0x1){_0x362f2c=![];}}else{_0x42eef5['rx']=_0x405e92;}if(_0x362f2c){return;}if(typeof _0x42eef5['cb']=='function'){var _0x4a4aeb=_0x42eef5['rx'][_0x62ba('0x12')](0x0,0x3),_0x38b8ff=null,_0x408a4b=null;_0x4a4aeb=parseInt(_0x4a4aeb);if(isNaN(_0x4a4aeb)){_0x42eef5['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x62ba('0x13')});return;}if(_0x4a4aeb!=0xc8){_0x42eef5['cb'](null,{'code':_0x4a4aeb,'result':-0x1,'extra':'KO'});return;}_0x38b8ff=_0x42eef5['rx'][_0x62ba('0x12')](0x4)[_0x62ba('0x14')](_0x62ba('0x15'),'');if(_0x38b8ff[_0x62ba('0x16')]('\x20')!=-0x1){_0x38b8ff=_0x38b8ff[_0x62ba('0x17')](0x0,_0x38b8ff[_0x62ba('0x16')]('\x20'));}if(_[_0x62ba('0x18')](_0x38b8ff,'-1')){_0x38b8ff=parseInt(_0x38b8ff);}_0x408a4b=_0x42eef5['rx'][_0x62ba('0x19')]('\x20');if(_0x408a4b['length']==0x3){_0x408a4b=_0x408a4b[0x2][_0x62ba('0x12')](0x1,_0x408a4b[0x2][_0x62ba('0x1a')]-0x1);}else if(_0x408a4b[_0x62ba('0x1a')]>0x3){var _0x28ce61=/\((.+)\)/;var _0x49c41b=_0x42eef5['rx'][_0x62ba('0x1b')](_0x28ce61);if(_0x49c41b){_0x408a4b=_0x49c41b[0x1];}else{_0x408a4b=null;}}else{_0x408a4b=null;}_0x42eef5['cb'](null,{'code':_0x4a4aeb,'result':_0x38b8ff,'extra':_0x408a4b});}});_0xf21fcc['on'](_0x62ba('0x1c'),function(_0x3e0a33){_0x3b872f[_0x62ba('0xa')](_0x62ba('0x1c'),new AGIError(_0x62ba('0x1d'),_0x3e0a33['code']));});_0xf21fcc['on'](_0x62ba('0x1e'),function(){_0x3b872f[_0x62ba('0xa')](_0x62ba('0x1e'),new AGIError(_0x62ba('0x1f')));});_0xf21fcc['on'](_0x62ba('0x20'),function(){_0x3b872f[_0x62ba('0xa')](_0x62ba('0x20'),new AGIError(_0x62ba('0x21')));_0xf21fcc[_0x62ba('0x22')]();});_0xf21fcc[_0x62ba('0x23')](_0x19316d);this[_0x62ba('0x24')]=function(_0x2f7ab2,_0xb5e44a){var _0x2f7ab2=_0x2f7ab2||'',_0xb5e44a=typeof _0xb5e44a==_0x62ba('0x25')?_0xb5e44a:new Function();_0x42eef5={'tx':_0x2f7ab2,'rx':'','cb':_0xb5e44a};_0xf21fcc[_0x62ba('0x26')](_0x2f7ab2+'\x0a');},this[_0x62ba('0x1e')]=function(){_0xf21fcc[_0x62ba('0x22')]();};}util[_0x62ba('0x27')](AGIChannel,EventEmitter);AGIChannel[_0x62ba('0x28')][_0x62ba('0x29')]=function(_0x1c6b91){return this['command'][_0x62ba('0x2a')](this,_0x1c6b91);};AGIChannel[_0x62ba('0x28')][_0x62ba('0x2b')]=function(){return this[_0x62ba('0x29')](_0x62ba('0x2c'));};AGIChannel['prototype'][_0x62ba('0x2d')]=function(_0xd3d676,_0x2064da,_0x4b2721){_0xd3d676=_0xd3d676===undefined?_0x62ba('0x2e'):_0xd3d676;_0x2064da=_0x2064da===undefined?'5':_0x2064da;_0x4b2721=_0x4b2721===undefined?'1':_0x4b2721;return this[_0x62ba('0x29')](util['format'](_0x62ba('0x2f'),_0xd3d676,_0x2064da*0x3e8,_0x4b2721));};AGIChannel[_0x62ba('0x28')][_0x62ba('0x30')]=function(_0x4d4e57){_0x4d4e57=_0x4d4e57||_0x62ba('0x31');return this[_0x62ba('0x29')](util[_0x62ba('0x32')](_0x62ba('0x33'),_0x4d4e57));};AGIChannel[_0x62ba('0x28')][_0x62ba('0x34')]=function(_0x59f026,_0x362997){if(_[_0x62ba('0x35')](_0x362997)){return this['sendRequest'](util[_0x62ba('0x32')](_0x62ba('0x36'),_0x59f026,_0x362997[_0x62ba('0x37')](',')));}return this['sendRequest'](util['format'](_0x62ba('0x36'),_0x59f026,_0x362997));};AGIChannel[_0x62ba('0x28')]['setContext']=function(_0x4d42a4){return this[_0x62ba('0x29')](util[_0x62ba('0x32')](_0x62ba('0x38'),_0x4d42a4));};AGIChannel[_0x62ba('0x28')][_0x62ba('0x39')]=function(_0x11a1ce){return this['sendRequest'](util[_0x62ba('0x32')](_0x62ba('0x3a'),_0x11a1ce));};AGIChannel[_0x62ba('0x28')][_0x62ba('0x3b')]=function(_0x12503a){return this['sendRequest'](util[_0x62ba('0x32')]('SET\x20PRIORITY\x20%s',_0x12503a));};AGIChannel[_0x62ba('0x28')][_0x62ba('0xe')]=function(){return this['sendRequest'](_0x62ba('0x3c'));};AGIChannel['prototype'][_0x62ba('0x3d')]=function(_0x2cc332,_0x175ac7){var _0x108a15=_[_0x62ba('0x3e')](_0x175ac7)||_['isNumber'](_0x175ac7)?_0x175ac7['toString']():_0x175ac7;return this[_0x62ba('0x29')](util[_0x62ba('0x32')](_0x62ba('0x3f'),_0x2cc332,_0x108a15?_0x108a15[_0x62ba('0x40')]()[_0x62ba('0x14')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x62ba('0x28')]['sayNumber']=function(_0x1a2dfd,_0x194527){return this['sendRequest'](util[_0x62ba('0x32')](_0x62ba('0x41'),_0x1a2dfd,_0x194527));};AGIChannel[_0x62ba('0x28')][_0x62ba('0x42')]=function(_0x2f88cd,_0x26dc74){return this[_0x62ba('0x29')](util[_0x62ba('0x32')]('SAY\x20DIGITS\x20%s\x20%s',_0x2f88cd,_0x26dc74));};AGIChannel[_0x62ba('0x28')][_0x62ba('0x43')]=function(_0x1353ae,_0x5eb3b3){return this[_0x62ba('0x29')](util[_0x62ba('0x32')](_0x62ba('0x44'),_0x1353ae,_0x5eb3b3));};AGIChannel[_0x62ba('0x28')]['continueAt']=function(_0x37e19e,_0x12d4c7,_0x4b3179){_0x12d4c7=_0x12d4c7||this[_0x62ba('0x45')];_0x4b3179=_0x4b3179||0x1;this[_0x62ba('0x46')](_0x37e19e);this[_0x62ba('0x39')](_0x12d4c7);this['setPriority'](_0x4b3179);return this[_0x62ba('0x30')](util[_0x62ba('0x32')]('GOTO\x20%s\x20%s\x20%s',_0x37e19e,_0x12d4c7,_0x4b3179));};AGIChannel[_0x62ba('0x28')][_0x62ba('0x47')]=function(_0x33997d){return this['sendRequest'](util[_0x62ba('0x32')](_0x62ba('0x48'),_0x33997d));};AGIChannel[_0x62ba('0x28')][_0x62ba('0x49')]=function(_0x420bf1,_0x5b8e85,_0x311e7f,_0x79e04f,_0x419d13,_0x489511){_0x5b8e85=_0x5b8e85||_0x62ba('0x4a');_0x311e7f=_0x311e7f||'';_0x79e04f=_0x79e04f===undefined?-0x1:_0x79e04f==='-1'?-0x1:_0x79e04f*0x3e8;_0x419d13=_0x419d13===undefined?'':'s='+_0x419d13;_0x489511=_0x489511?_0x62ba('0x4b'):'';return this[_0x62ba('0x29')](util[_0x62ba('0x32')]('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x420bf1,_0x5b8e85,_0x311e7f,_0x79e04f,_0x489511,_0x419d13));};AGIChannel[_0x62ba('0x28')][_0x62ba('0x4c')]=function(_0x3a9fa9,_0x22fcfc){_0x22fcfc=_0x22fcfc||'';return this[_0x62ba('0x29')](util[_0x62ba('0x32')](_0x62ba('0x4d'),_0x3a9fa9,_0x22fcfc));};AGIChannel[_0x62ba('0x28')][_0x62ba('0x4e')]=function(_0x52b6d0){return this[_0x62ba('0x34')](_0x62ba('0x4f'),_0x52b6d0);};AGIChannel[_0x62ba('0x28')][_0x62ba('0x50')]=function(_0x374305){return this[_0x62ba('0x34')](_0x62ba('0x51'),_0x374305);};AGIChannel[_0x62ba('0x28')]['error']=function(_0x373594,_0x19dc6b){this['noop'](util['format'](_0x62ba('0x52'),_0x373594['id'],_0x373594[_0x62ba('0x53')],_0x19dc6b));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x62ba('0x54')]=AGIChannel;
\ No newline at end of file
index bc7b652..210b8ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb906=['message','name','exports','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\x20timeout.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push'];(function(_0x57109e,_0x3156d1){var _0x25465e=function(_0x283754){while(--_0x283754){_0x57109e['push'](_0x57109e['shift']());}};_0x25465e(++_0x3156d1);}(_0xb906,0x18b));var _0x6b90=function(_0x2e1d6b,_0x2174aa){_0x2e1d6b=_0x2e1d6b-0x0;var _0x2bb084=_0xb906[_0x2e1d6b];return _0x2bb084;};'use strict';var util=require(_0x6b90('0x0'));var error={'E_AGI_UNDEFINED':_0x6b90('0x1'),'E_AGI_ARGUMENT_PORT':_0x6b90('0x2'),'E_AGI_SERVER_ERROR':_0x6b90('0x3'),'E_AGI_SERVER_CLOSE':_0x6b90('0x4'),'E_AGI_SERVER_MAXCONNECTION':'[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','E_AGI_SERVER_VOICE_DISABLED':_0x6b90('0x5'),'E_AGI_SOCKET_ERROR':'Socket\x20error.\x20Code:\x20%s.','E_AGI_SOCKET_CLOSE':'Socket\x20closed.','E_AGI_SOCKET_TIMEOUT':_0x6b90('0x6'),'E_AGI_COMMAND_EMPTY':'Empty\x20command.','E_AGI_IVR_AGI_NETWORK_SCRIPT':_0x6b90('0x7'),'E_AGI_IVR_ENTRY':_0x6b90('0x8')};function AGIError(_0x4aefa2){var _0x4aefa2=_0x4aefa2||null,_0x3adc45=_0x3adc45||[],_0x2b73a6=0x1,_0x56eba0='';if(!error[_0x4aefa2]){_0x4aefa2=_0x6b90('0x9');}_0x3adc45['push'](error[_0x4aefa2]);while(arguments[_0x2b73a6]){_0x3adc45[_0x6b90('0xa')](arguments[_0x2b73a6]);_0x2b73a6++;}_0x56eba0=util['format']['apply'](util,_0x3adc45);this[_0x6b90('0xb')]=_0x56eba0;this[_0x6b90('0xc')]=_0x4aefa2;}module[_0x6b90('0xd')]=AGIError;
\ No newline at end of file
+var _0x9086=['Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20closed.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','message','exports','util','Undefined\x20error.'];(function(_0x587845,_0x3115b9){var _0x1c2292=function(_0x174e88){while(--_0x174e88){_0x587845['push'](_0x587845['shift']());}};_0x1c2292(++_0x3115b9);}(_0x9086,0x129));var _0x6908=function(_0x499227,_0x3a8c2c){_0x499227=_0x499227-0x0;var _0xec1c0a=_0x9086[_0x499227];return _0xec1c0a;};'use strict';var util=require(_0x6908('0x0'));var error={'E_AGI_UNDEFINED':_0x6908('0x1'),'E_AGI_ARGUMENT_PORT':_0x6908('0x2'),'E_AGI_SERVER_ERROR':_0x6908('0x3'),'E_AGI_SERVER_CLOSE':'Server\x20closed.','E_AGI_SERVER_MAXCONNECTION':'[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','E_AGI_SERVER_VOICE_DISABLED':_0x6908('0x4'),'E_AGI_SOCKET_ERROR':'Socket\x20error.\x20Code:\x20%s.','E_AGI_SOCKET_CLOSE':_0x6908('0x5'),'E_AGI_SOCKET_TIMEOUT':_0x6908('0x6'),'E_AGI_COMMAND_EMPTY':_0x6908('0x7'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':_0x6908('0x8')};function AGIError(_0x55eb42){var _0x55eb42=_0x55eb42||null,_0x47de78=_0x47de78||[],_0x528412=0x1,_0x3124ac='';if(!error[_0x55eb42]){_0x55eb42=_0x6908('0x9');}_0x47de78[_0x6908('0xa')](error[_0x55eb42]);while(arguments[_0x528412]){_0x47de78[_0x6908('0xa')](arguments[_0x528412]);_0x528412++;}_0x3124ac=util['format']['apply'](util,_0x47de78);this[_0x6908('0xb')]=_0x3124ac;this['name']=_0x55eb42;}module[_0x6908('0xc')]=AGIError;
\ No newline at end of file
index 27885a1..8fc4831 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d5b=['edges','numberOfEdges','prototype','addVertex','addEdge','relations','getVertex','traverseBFS','info','stop\x20traverse','no\x20edge/s\x20available','length','condition','split','agicommand','target','default','menu','invalid','vswitch','default\x20on\x20switch\x20not\x20found','includes','condition\x20not\x20found','exports','lodash','../../../config/logger','agi','getdigits','vertices'];(function(_0x1c3ac0,_0xea8511){var _0x5d8c11=function(_0x3821b2){while(--_0x3821b2){_0x1c3ac0['push'](_0x1c3ac0['shift']());}};_0x5d8c11(++_0xea8511);}(_0x8d5b,0x8c));var _0xb8d5=function(_0x1b1aee,_0x57c8ed){_0x1b1aee=_0x1b1aee-0x0;var _0x276aa2=_0x8d5b[_0x1b1aee];return _0x276aa2;};'use strict';var _=require(_0xb8d5('0x0'));var logger=require(_0xb8d5('0x1'))(_0xb8d5('0x2'));var verticesWithRetry=['menu',_0xb8d5('0x3'),'getsecretdigits'];var Graph=function(){this[_0xb8d5('0x4')]={};this[_0xb8d5('0x5')]={};this[_0xb8d5('0x6')]=0x0;};Graph[_0xb8d5('0x7')][_0xb8d5('0x8')]=function(_0x20e02a){this[_0xb8d5('0x4')][_0x20e02a['id']]=_0x20e02a;this[_0xb8d5('0x5')][_0x20e02a['id']]=[];};Graph[_0xb8d5('0x7')][_0xb8d5('0x9')]=function(_0x28f323,_0x5de68d,_0xb4409c){this[_0xb8d5('0x5')][_0x28f323]['push']({'target':_0x5de68d,'condition':_0xb4409c});this[_0xb8d5('0x6')]+=0x1;};Graph[_0xb8d5('0x7')]['size']=function(){return _['size'](this[_0xb8d5('0x4')]);};Graph['prototype'][_0xb8d5('0xa')]=function(){return this[_0xb8d5('0x6')];};Graph[_0xb8d5('0x7')][_0xb8d5('0xb')]=function(_0x261316){return this[_0xb8d5('0x4')][_0x261316];};Graph['prototype'][_0xb8d5('0xc')]=function(_0x5e5db0,_0x160d9e){if(!this['vertices'][_0x5e5db0]){return logger[_0xb8d5('0xd')]('no\x20vertex\x20found');}var _0x315a75=_0x160d9e(this[_0xb8d5('0x4')][_0x5e5db0]);if(!_0x315a75){return logger[_0xb8d5('0xd')](_0xb8d5('0xe'));}if(this[_0xb8d5('0x5')][_0x5e5db0]['length']===0x0){return logger['info'](_0xb8d5('0xf'));}for(var _0x2608b5=0x0,_0x516fc2=[],_0x4bf24c=![];_0x2608b5<this[_0xb8d5('0x5')][_0x5e5db0][_0xb8d5('0x10')];_0x2608b5+=0x1){if(this['edges'][_0x5e5db0][_0x2608b5][_0xb8d5('0x11')]){_0x516fc2=this[_0xb8d5('0x5')][_0x5e5db0][_0x2608b5]['condition'][_0xb8d5('0x12')](',');for(var _0x318f27=0x0;_0x318f27<_0x516fc2[_0xb8d5('0x10')];_0x318f27+=0x1){if(this[_0xb8d5('0x4')][_0x5e5db0][_0xb8d5('0x13')]==='vswitch'&&_0x516fc2[_0x318f27]==='-'){_0x4bf24c=this[_0xb8d5('0x5')][_0x5e5db0][_0x2608b5][_0xb8d5('0x14')];logger[_0xb8d5('0xd')](_0xb8d5('0x15'),_0x516fc2[_0x318f27],this['edges'][_0x5e5db0][_0x2608b5][_0xb8d5('0x14')]);}else if(this[_0xb8d5('0x4')][_0x5e5db0]['agicommand']===_0xb8d5('0x16')&&_0x516fc2[_0x318f27]==='i'){_0x4bf24c=this[_0xb8d5('0x5')][_0x5e5db0][_0x2608b5]['target'];logger[_0xb8d5('0xd')](_0xb8d5('0x17'),_0x516fc2[_0x318f27],this[_0xb8d5('0x5')][_0x5e5db0][_0x2608b5][_0xb8d5('0x14')]);}if(_0x516fc2[_0x318f27]===_0x315a75){return this['traverseBFS'](this[_0xb8d5('0x5')][_0x5e5db0][_0x2608b5][_0xb8d5('0x14')],_0x160d9e);}}}else{return this[_0xb8d5('0xc')](this['edges'][_0x5e5db0][_0x2608b5][_0xb8d5('0x14')],_0x160d9e);}}if(_0x516fc2['length']){if(this[_0xb8d5('0x4')][_0x5e5db0][_0xb8d5('0x13')]===_0xb8d5('0x18')){if(_0x4bf24c){return this[_0xb8d5('0xc')](_0x4bf24c,_0x160d9e);}return logger[_0xb8d5('0xd')](_0xb8d5('0x19'));}else if(_[_0xb8d5('0x1a')](verticesWithRetry,this[_0xb8d5('0x4')][_0x5e5db0]['agicommand'])){if(_0x315a75==='-'){return logger[_0xb8d5('0xd')]('max\x20retry\x20reach');}if(_0x4bf24c&&_0x315a75!=='t'){return this[_0xb8d5('0xc')](_0x4bf24c,_0x160d9e);}return this[_0xb8d5('0xc')](_0x5e5db0,_0x160d9e);}return logger['info'](_0xb8d5('0x1b'));}};module[_0xb8d5('0x1c')]=Graph;
\ No newline at end of file
+var _0xdca2=['condition','split','length','agicommand','vswitch','default','target','invalid','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','agi','getdigits','vertices','edges','prototype','addEdge','push','numberOfEdges','size','relations','getVertex','traverseBFS','no\x20vertex\x20found','stop\x20traverse','info','no\x20edge/s\x20available'];(function(_0x80d733,_0x266211){var _0x435868=function(_0x2ae0f0){while(--_0x2ae0f0){_0x80d733['push'](_0x80d733['shift']());}};_0x435868(++_0x266211);}(_0xdca2,0xfd));var _0x2dca=function(_0x5a776b,_0x46f785){_0x5a776b=_0x5a776b-0x0;var _0xbbef59=_0xdca2[_0x5a776b];return _0xbbef59;};'use strict';var _=require(_0x2dca('0x0'));var logger=require('../../../config/logger')(_0x2dca('0x1'));var verticesWithRetry=['menu',_0x2dca('0x2'),'getsecretdigits'];var Graph=function(){this[_0x2dca('0x3')]={};this[_0x2dca('0x4')]={};this['numberOfEdges']=0x0;};Graph[_0x2dca('0x5')]['addVertex']=function(_0xd11d9){this[_0x2dca('0x3')][_0xd11d9['id']]=_0xd11d9;this['edges'][_0xd11d9['id']]=[];};Graph['prototype'][_0x2dca('0x6')]=function(_0x521c9e,_0x2e86ee,_0x4ca861){this['edges'][_0x521c9e][_0x2dca('0x7')]({'target':_0x2e86ee,'condition':_0x4ca861});this[_0x2dca('0x8')]+=0x1;};Graph[_0x2dca('0x5')][_0x2dca('0x9')]=function(){return _['size'](this[_0x2dca('0x3')]);};Graph['prototype'][_0x2dca('0xa')]=function(){return this[_0x2dca('0x8')];};Graph[_0x2dca('0x5')][_0x2dca('0xb')]=function(_0x4cb278){return this['vertices'][_0x4cb278];};Graph[_0x2dca('0x5')][_0x2dca('0xc')]=function(_0x451c91,_0x368bf1){if(!this[_0x2dca('0x3')][_0x451c91]){return logger['info'](_0x2dca('0xd'));}var _0x246ea4=_0x368bf1(this[_0x2dca('0x3')][_0x451c91]);if(!_0x246ea4){return logger['info'](_0x2dca('0xe'));}if(this['edges'][_0x451c91]['length']===0x0){return logger[_0x2dca('0xf')](_0x2dca('0x10'));}for(var _0x34c526=0x0,_0x53ce05=[],_0x49caaf=![];_0x34c526<this['edges'][_0x451c91]['length'];_0x34c526+=0x1){if(this[_0x2dca('0x4')][_0x451c91][_0x34c526][_0x2dca('0x11')]){_0x53ce05=this[_0x2dca('0x4')][_0x451c91][_0x34c526][_0x2dca('0x11')][_0x2dca('0x12')](',');for(var _0x5a59c5=0x0;_0x5a59c5<_0x53ce05[_0x2dca('0x13')];_0x5a59c5+=0x1){if(this[_0x2dca('0x3')][_0x451c91][_0x2dca('0x14')]===_0x2dca('0x15')&&_0x53ce05[_0x5a59c5]==='-'){_0x49caaf=this[_0x2dca('0x4')][_0x451c91][_0x34c526]['target'];logger[_0x2dca('0xf')](_0x2dca('0x16'),_0x53ce05[_0x5a59c5],this[_0x2dca('0x4')][_0x451c91][_0x34c526][_0x2dca('0x17')]);}else if(this['vertices'][_0x451c91][_0x2dca('0x14')]==='menu'&&_0x53ce05[_0x5a59c5]==='i'){_0x49caaf=this['edges'][_0x451c91][_0x34c526][_0x2dca('0x17')];logger[_0x2dca('0xf')](_0x2dca('0x18'),_0x53ce05[_0x5a59c5],this[_0x2dca('0x4')][_0x451c91][_0x34c526][_0x2dca('0x17')]);}if(_0x53ce05[_0x5a59c5]===_0x246ea4){return this[_0x2dca('0xc')](this[_0x2dca('0x4')][_0x451c91][_0x34c526]['target'],_0x368bf1);}}}else{return this[_0x2dca('0xc')](this[_0x2dca('0x4')][_0x451c91][_0x34c526]['target'],_0x368bf1);}}if(_0x53ce05['length']){if(this[_0x2dca('0x3')][_0x451c91][_0x2dca('0x14')]===_0x2dca('0x15')){if(_0x49caaf){return this['traverseBFS'](_0x49caaf,_0x368bf1);}return logger[_0x2dca('0xf')](_0x2dca('0x19'));}else if(_[_0x2dca('0x1a')](verticesWithRetry,this[_0x2dca('0x3')][_0x451c91][_0x2dca('0x14')])){if(_0x246ea4==='-'){return logger[_0x2dca('0xf')](_0x2dca('0x1b'));}if(_0x49caaf&&_0x246ea4!=='t'){return this[_0x2dca('0xc')](_0x49caaf,_0x368bf1);}return this['traverseBFS'](_0x451c91,_0x368bf1);}return logger['info'](_0x2dca('0x1c'));}};module[_0x2dca('0x1d')]=Graph;
\ No newline at end of file
index 2b3b78e..04d1685 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd56=['127.0.0.1','nextTick','error','stack','log','port','info','name','format','[%s]\x20%s','message','[ERROR]\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','evtHangup','mxGraphModel','root','agicommand','hasOwnProperty','retry','maxRetry','mxCell','isArray','source','target','addEdge','value','getSquareProject','catch','createSquareReport','then','agi_','substring','inspect','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','timeout','sync','production','start','joinAt','YYYY-MM-DD\x20HH:mm:ss','omit','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','debug','isUndefined','result','toString','agicommand\x20not\x20found','finally','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','close','continueAt','getLicense','voice','[LICENSE]\x20CHANNELS:\x20%s','callysquare','[LICENSE]\x20VOICE\x20IS\x20DISABLED','connection','lodash','syncho','util','agi','../../config/license/util','./mailRpc','./vertices','defaults'];(function(_0x3fc179,_0x1506af){var _0xb8bfa9=function(_0x118afc){while(--_0x118afc){_0x3fc179['push'](_0x3fc179['shift']());}};_0xb8bfa9(++_0x1506af);}(_0xcd56,0x1f0));var _0x6cd5=function(_0x5428db,_0x5dcb48){_0x5428db=_0x5428db-0x0;var _0x47aceb=_0xcd56[_0x5428db];return _0x47aceb;};'use strict';var parser=require('xml2json');var _=require(_0x6cd5('0x0'));var syncho=require(_0x6cd5('0x1'));var util=require(_0x6cd5('0x2'));var moment=require('moment');var config=require('../../config/environment');var logger=require('../../config/logger')(_0x6cd5('0x3'));var utilLicense=require(_0x6cd5('0x4'));var rpc=require('./rpc');var mailRpc=require(_0x6cd5('0x5'));var Graph=require('./graph');var Vertices=require(_0x6cd5('0x6'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x6cd5('0x3')]=_[_0x6cd5('0x7')](config[_0x6cd5('0x3')],{'ip':_0x6cd5('0x8'),'port':0x11dd});function connectionHandler(_0x61ecb1){process[_0x6cd5('0x9')](function(){syncho(function(){try{setChannelVariables(_0x61ecb1);agiHandler(_0x61ecb1);}catch(_0x36b2e6){logger[_0x6cd5('0xa')](_0x36b2e6[_0x6cd5('0xb')]);}});});}function listeningHandler(){console[_0x6cd5('0xc')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config[_0x6cd5('0x3')][_0x6cd5('0xd')]);logger[_0x6cd5('0xe')](util['format']('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config['agi']['ip'],config[_0x6cd5('0x3')][_0x6cd5('0xd')]));}function errorHandler(_0x342c3a){if(_0x342c3a&&_0x342c3a[_0x6cd5('0xf')]&&_0x342c3a['message']){logger[_0x6cd5('0xa')](util[_0x6cd5('0x10')](_0x6cd5('0x11'),_0x342c3a[_0x6cd5('0xf')],_0x342c3a[_0x6cd5('0x12')]));}else{logger[_0x6cd5('0xa')](util[_0x6cd5('0x10')](_0x6cd5('0x13'),_0x342c3a[_0x6cd5('0xb')]));}}function closeHandler(){logger['info'](util[_0x6cd5('0x10')]('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x6cd5('0x14')],this[_0x6cd5('0x15')],this[_0x6cd5('0x16')],this[_0x6cd5('0x17')],this[_0x6cd5('0x18')]));try{createSquareReport(this);}catch(_0x728f1c){logger[_0x6cd5('0xa')](_0x728f1c[_0x6cd5('0xb')]);}}function timeoutHandler(){logger[_0x6cd5('0xe')](util['format'](_0x6cd5('0x19'),this['arg_1'],this[_0x6cd5('0x15')],this[_0x6cd5('0x16')],this['dnid'],this['uniqueid']));}function hangupHandler(){logger['info'](util[_0x6cd5('0x10')](_0x6cd5('0x1a'),this['arg_1'],this[_0x6cd5('0x15')],this[_0x6cd5('0x16')],this[_0x6cd5('0x17')],this[_0x6cd5('0x18')]));this[_0x6cd5('0x1b')]=!![];}function getRoot(_0x4d4833){return parser['toJson'](_0x4d4833,{'object':!![]})[_0x6cd5('0x1c')][_0x6cd5('0x1d')];}function addVertex(_0x258c2a,_0x1b38d3,_0x51b3b3){_0x1b38d3[_0x6cd5('0x1e')]=_0x51b3b3;if(_0x1b38d3[_0x6cd5('0x1f')](_0x6cd5('0x20'))){_0x1b38d3[_0x6cd5('0x21')]=parseInt(_0x1b38d3[_0x6cd5('0x20')],0xa);}_0x258c2a['addVertex'](_['omit'](_0x1b38d3,_0x6cd5('0x22')));}function initGraph(_0x27d578,_0x46f225){var _0x449b4b=new Graph();for(var _0x4b603b in _0x27d578){if(_0x27d578[_0x6cd5('0x1f')](_0x4b603b)){if(_[_0x6cd5('0x23')](_0x27d578[_0x4b603b])){for(var _0x6cc0fd=0x0;_0x6cc0fd<_0x27d578[_0x4b603b]['length'];_0x6cc0fd+=0x1){addVertex(_0x449b4b,_0x27d578[_0x4b603b][_0x6cc0fd],_0x4b603b);}}else{addVertex(_0x449b4b,_0x27d578[_0x4b603b],_0x4b603b);}}}for(var _0xd5a7b0=0x0;_0xd5a7b0<_0x46f225['length'];_0xd5a7b0+=0x1){if(_0x46f225[_0xd5a7b0][_0x6cd5('0x24')]&&_0x46f225[_0xd5a7b0][_0x6cd5('0x25')]){_0x449b4b[_0x6cd5('0x26')](_0x46f225[_0xd5a7b0]['source'],_0x46f225[_0xd5a7b0][_0x6cd5('0x25')],_0x46f225[_0xd5a7b0][_0x6cd5('0x27')]);}}return _0x449b4b;}function getSquareProject(_0x168f71,_0x542bc8){rpc[_0x6cd5('0x28')](_0x168f71)['then'](function(_0xfe7887){_0x542bc8(null,_0xfe7887);})[_0x6cd5('0x29')](function(_0x75be78){_0x542bc8(null,_0x75be78);});}function createSquareReport(_0x294aa7,_0x14dec3){rpc[_0x6cd5('0x2a')](_0x294aa7)[_0x6cd5('0x2b')](function(_0x44a3dd){if(_0x14dec3){_0x14dec3(null,_0x44a3dd);}})['catch'](function(_0x2adab4){if(_0x14dec3){_0x14dec3(null,_0x2adab4);}});}function setChannelVariables(_0x39c1c0){for(var _0x5ad58a in _0x39c1c0){if(_0x39c1c0[_0x6cd5('0x1f')](_0x5ad58a)){if(_0x5ad58a['indexOf'](_0x6cd5('0x2c'))===0x0){_0x39c1c0[_0x5ad58a[_0x6cd5('0x2d')](0x4)]=_0x39c1c0[_0x5ad58a];delete _0x39c1c0[_0x5ad58a];}}}}function getLogFromObject(_0xdf5eef){return util[_0x6cd5('0x2e')](_0xdf5eef,{'showHidden':![],'depth':null});}function agiHandler(_0x4e65ad){var _0x3ecdbd,_0x225205,_0x24b76c,_0x50fe4f,_0x768f99;logger['debug'](_0x6cd5('0x2f'),JSON[_0x6cd5('0x30')](_0x4e65ad,null,0x2));logger[_0x6cd5('0xe')](util[_0x6cd5('0x10')](_0x6cd5('0x31'),_0x4e65ad[_0x6cd5('0x14')],_0x4e65ad[_0x6cd5('0x15')],_0x4e65ad[_0x6cd5('0x16')],_0x4e65ad[_0x6cd5('0x17')],_0x4e65ad[_0x6cd5('0x18')]));_0x4e65ad['on'](_0x6cd5('0xa'),errorHandler);_0x4e65ad['on']('close',closeHandler);_0x4e65ad['on'](_0x6cd5('0x32'),timeoutHandler);_0x4e65ad[_0x6cd5('0x1b')]=![];_0x4e65ad['on']('hangup',hangupHandler);var _0x1b99d2=getSquareProject[_0x6cd5('0x33')](null,_0x4e65ad[_0x6cd5('0x14')]);if(_0x1b99d2){if(_0x1b99d2['production']){_0x3ecdbd=getRoot(_0x1b99d2[_0x6cd5('0x34')]);if(_0x3ecdbd&&_0x3ecdbd[_0x6cd5('0x35')]){logger['debug'](_0x6cd5('0x1d'),JSON[_0x6cd5('0x30')](_0x3ecdbd,null,0x2));_0x4e65ad[_0x6cd5('0x36')]=moment()['format'](_0x6cd5('0x37'));_0x225205=initGraph(_[_0x6cd5('0x38')](_0x3ecdbd,_0x6cd5('0x22')),_0x3ecdbd[_0x6cd5('0x22')]);_0x24b76c=new Vertices(_0x4e65ad,rpc,mailRpc);logger[_0x6cd5('0xe')](util['format'](_0x6cd5('0x39'),_0x4e65ad[_0x6cd5('0x14')],_0x4e65ad[_0x6cd5('0x15')],_0x4e65ad['callerid'],_0x4e65ad[_0x6cd5('0x17')],_0x4e65ad[_0x6cd5('0x18')]));_0x225205[_0x6cd5('0x3a')](_0x3ecdbd['start']['id'],function(_0x2c2211){try{_0x2c2211=_0x24b76c[_0x6cd5('0x3b')](_0x2c2211);logger['debug'](_0x6cd5('0x3c'),JSON[_0x6cd5('0x30')](_0x2c2211,null,0x2));if(_0x2c2211['agicommand']===_0x6cd5('0x3d')){logger[_0x6cd5('0xe')](_0x6cd5('0x3e'));_0x4e65ad[_0x6cd5('0x3f')]=_0x2c2211[_0x6cd5('0x3f')]||_0x4e65ad[_0x6cd5('0x3f')];_0x4e65ad[_0x6cd5('0x40')]=_0x2c2211['extension'];_0x4e65ad[_0x6cd5('0x41')]=_0x2c2211[_0x6cd5('0x41')]?_0x2c2211['priority']-0x1:0x1;return null;}else if(_0x2c2211&&_0x24b76c[_0x2c2211['agicommand']]){_0x768f99=_0x24b76c[_0x2c2211[_0x6cd5('0x1e')]](_0x2c2211);logger[_0x6cd5('0xe')](_0x6cd5('0x42'),JSON[_0x6cd5('0x30')](_0x768f99,null,0x2));if(_0x768f99&&_0x768f99[_0x6cd5('0x43')]===AGI_CODE_SUCCESS&&_0x768f99['result']!==AGI_RESULT_ERROR&&!_0x4e65ad[_0x6cd5('0x1b')]){logger[_0x6cd5('0x44')](_0x6cd5('0x42'),getLogFromObject(_0x768f99));return _[_0x6cd5('0x45')](_0x768f99[_0x6cd5('0x46')])?null:_0x768f99['result'][_0x6cd5('0x47')]();}else{logger[_0x6cd5('0xa')](_0x6cd5('0x42'),getLogFromObject(_0x768f99));return null;}}else{logger[_0x6cd5('0xa')](_0x6cd5('0x48'));return null;}}catch(_0xcecf79){logger[_0x6cd5('0xa')](_0xcecf79[_0x6cd5('0xb')]);return null;}});if(_0x3ecdbd[_0x6cd5('0x49')]){logger['info'](util[_0x6cd5('0x10')]('[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x4e65ad['arg_1'],_0x4e65ad[_0x6cd5('0x15')],_0x4e65ad[_0x6cd5('0x16')],_0x4e65ad[_0x6cd5('0x17')],_0x4e65ad[_0x6cd5('0x18')]));_0x225205[_0x6cd5('0x3a')](_0x3ecdbd[_0x6cd5('0x49')]['id'],function(_0x494e99){try{_0x494e99=_0x24b76c['clear'](_0x494e99);logger[_0x6cd5('0x44')](_0x6cd5('0x3c'),JSON[_0x6cd5('0x30')](_0x494e99,null,0x2));if(_0x494e99&&_0x24b76c[_0x494e99[_0x6cd5('0x1e')]]){_0x768f99=_0x24b76c[_0x494e99['agicommand']](_0x494e99);if(_0x768f99){logger[_0x6cd5('0x44')](_0x6cd5('0x42'),getLogFromObject(_0x768f99));return _[_0x6cd5('0x45')](_0x768f99[_0x6cd5('0x46')])?null:_0x768f99[_0x6cd5('0x46')][_0x6cd5('0x47')]();}else{logger['error']('response',getLogFromObject(_0x768f99));return null;}}else{logger[_0x6cd5('0xa')]('agicommand\x20not\x20found');return null;}}catch(_0x208cb5){logger['error'](_0x208cb5[_0x6cd5('0xb')]);return null;}});}logger['info'](util[_0x6cd5('0x10')](_0x6cd5('0x4a'),_0x4e65ad[_0x6cd5('0x14')],_0x4e65ad[_0x6cd5('0x15')],_0x4e65ad[_0x6cd5('0x16')],_0x4e65ad[_0x6cd5('0x17')],_0x4e65ad[_0x6cd5('0x18')]));logger[_0x6cd5('0xe')](util[_0x6cd5('0x10')](_0x6cd5('0x4b'),_0x4e65ad[_0x6cd5('0x3f')],_0x4e65ad['extension'],parseInt(_0x4e65ad[_0x6cd5('0x41')],0xa)+0x1));_0x4e65ad['continueAt'](_0x4e65ad[_0x6cd5('0x3f')],_0x4e65ad[_0x6cd5('0x40')],parseInt(_0x4e65ad[_0x6cd5('0x41')],0xa)+0x1);_0x4e65ad[_0x6cd5('0x4c')]();}}else{logger[_0x6cd5('0xa')](util[_0x6cd5('0x10')]('Project\x20%s\x20not\x20published',_0x4e65ad['arg_1']));_0x4e65ad['continueAt'](_0x4e65ad[_0x6cd5('0x3f')],_0x4e65ad['extension'],parseInt(_0x4e65ad[_0x6cd5('0x41')],0xa)+0x1);_0x4e65ad[_0x6cd5('0x4c')]();}}else{logger[_0x6cd5('0xa')](util[_0x6cd5('0x10')]('Project\x20%s\x20not\x20found',_0x4e65ad['arg_1']));_0x4e65ad[_0x6cd5('0x4d')](_0x4e65ad[_0x6cd5('0x3f')],_0x4e65ad[_0x6cd5('0x40')],parseInt(_0x4e65ad['priority'],0xa)+0x1);_0x4e65ad[_0x6cd5('0x4c')]();}}function main(){var _0x1f68c4;return utilLicense[_0x6cd5('0x4e')]()[_0x6cd5('0x2b')](function(_0x2cc355){if(_0x2cc355){if(_0x2cc355[_0x6cd5('0x4f')]){if(_0x2cc355['callysquare']&&_0x2cc355['callysquare']>0x0){logger[_0x6cd5('0xe')](util[_0x6cd5('0x10')](_0x6cd5('0x50'),_0x2cc355[_0x6cd5('0x51')]));_0x1f68c4=_0x2cc355['callysquare'];}else{logger['info']('[LICENSE]\x20CHANNELS:\x20UNLIMITED');}}else{logger[_0x6cd5('0xe')](_0x6cd5('0x52'));_0x1f68c4=-0x1;}}})[_0x6cd5('0x29')](function(_0x464979){logger[_0x6cd5('0xa')]('[LICENSE]',_0x464979[_0x6cd5('0xb')]);})[_0x6cd5('0x49')](function(){var _0x3f8125=require('./server')(config[_0x6cd5('0x3')][_0x6cd5('0xd')],config[_0x6cd5('0x3')]['ip'],_0x1f68c4);_0x3f8125['on'](_0x6cd5('0xa'),errorHandler);_0x3f8125['on']('listening',listeningHandler);_0x3f8125['on'](_0x6cd5('0x53'),connectionHandler);_0x3f8125['on']('close',closeHandler);});}main();
\ No newline at end of file
+var _0xd7de=['variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','evtHangup','hangup','sync','production','start','debug','mxCell','clear','vertex','gotoc','context','extension','priority','response','code','result','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','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20published','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','connection','lodash','util','moment','../../config/environment','../../config/logger','agi','./rpc','./mailRpc','./vertices','defaults','127.0.0.1','nextTick','error','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','name','message','format','[%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','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','callerid','dnid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','root','agicommand','retry','maxRetry','addVertex','hasOwnProperty','isArray','length','source','target','then','catch','createSquareReport','agi_','substring','inspect'];(function(_0x2d93e4,_0x10b13e){var _0x177a6a=function(_0x4e9127){while(--_0x4e9127){_0x2d93e4['push'](_0x2d93e4['shift']());}};_0x177a6a(++_0x10b13e);}(_0xd7de,0x17f));var _0xed7d=function(_0xb9adec,_0x3400b6){_0xb9adec=_0xb9adec-0x0;var _0x553c2=_0xd7de[_0xb9adec];return _0x553c2;};'use strict';var parser=require('xml2json');var _=require(_0xed7d('0x0'));var syncho=require('syncho');var util=require(_0xed7d('0x1'));var moment=require(_0xed7d('0x2'));var config=require(_0xed7d('0x3'));var logger=require(_0xed7d('0x4'))(_0xed7d('0x5'));var utilLicense=require('../../config/license/util');var rpc=require(_0xed7d('0x6'));var mailRpc=require(_0xed7d('0x7'));var Graph=require('./graph');var Vertices=require(_0xed7d('0x8'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config['agi']=_[_0xed7d('0x9')](config[_0xed7d('0x5')],{'ip':_0xed7d('0xa'),'port':0x11dd});function connectionHandler(_0x3009ad){process[_0xed7d('0xb')](function(){syncho(function(){try{setChannelVariables(_0x3009ad);agiHandler(_0x3009ad);}catch(_0xfc9a8f){logger[_0xed7d('0xc')](_0xfc9a8f['stack']);}});});}function listeningHandler(){console[_0xed7d('0xd')](_0xed7d('0xe'),config['agi'][_0xed7d('0xf')]);logger[_0xed7d('0x10')](util['format']('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config[_0xed7d('0x5')]['ip'],config[_0xed7d('0x5')][_0xed7d('0xf')]));}function errorHandler(_0x627ab9){if(_0x627ab9&&_0x627ab9[_0xed7d('0x11')]&&_0x627ab9[_0xed7d('0x12')]){logger['error'](util[_0xed7d('0x13')](_0xed7d('0x14'),_0x627ab9[_0xed7d('0x11')],_0x627ab9[_0xed7d('0x12')]));}else{logger[_0xed7d('0xc')](util[_0xed7d('0x13')](_0xed7d('0x15'),_0x627ab9[_0xed7d('0x16')]));}}function closeHandler(){logger['info'](util[_0xed7d('0x13')](_0xed7d('0x17'),this[_0xed7d('0x18')],this['calleridname'],this['callerid'],this['dnid'],this[_0xed7d('0x19')]));try{createSquareReport(this);}catch(_0x5d8740){logger[_0xed7d('0xc')](_0x5d8740[_0xed7d('0x16')]);}}function timeoutHandler(){logger[_0xed7d('0x10')](util['format'](_0xed7d('0x1a'),this[_0xed7d('0x18')],this[_0xed7d('0x1b')],this[_0xed7d('0x1c')],this[_0xed7d('0x1d')],this['uniqueid']));}function hangupHandler(){logger[_0xed7d('0x10')](util[_0xed7d('0x13')](_0xed7d('0x1e'),this[_0xed7d('0x18')],this[_0xed7d('0x1b')],this['callerid'],this[_0xed7d('0x1d')],this[_0xed7d('0x19')]));this['evtHangup']=!![];}function getRoot(_0x258f6f){return parser['toJson'](_0x258f6f,{'object':!![]})['mxGraphModel'][_0xed7d('0x1f')];}function addVertex(_0x19183c,_0x5898f6,_0x2bb3c8){_0x5898f6[_0xed7d('0x20')]=_0x2bb3c8;if(_0x5898f6['hasOwnProperty'](_0xed7d('0x21'))){_0x5898f6[_0xed7d('0x22')]=parseInt(_0x5898f6[_0xed7d('0x21')],0xa);}_0x19183c[_0xed7d('0x23')](_['omit'](_0x5898f6,'mxCell'));}function initGraph(_0x120582,_0x183d69){var _0x2141fd=new Graph();for(var _0x3e319e in _0x120582){if(_0x120582[_0xed7d('0x24')](_0x3e319e)){if(_[_0xed7d('0x25')](_0x120582[_0x3e319e])){for(var _0x55b88f=0x0;_0x55b88f<_0x120582[_0x3e319e][_0xed7d('0x26')];_0x55b88f+=0x1){addVertex(_0x2141fd,_0x120582[_0x3e319e][_0x55b88f],_0x3e319e);}}else{addVertex(_0x2141fd,_0x120582[_0x3e319e],_0x3e319e);}}}for(var _0x11ceff=0x0;_0x11ceff<_0x183d69[_0xed7d('0x26')];_0x11ceff+=0x1){if(_0x183d69[_0x11ceff][_0xed7d('0x27')]&&_0x183d69[_0x11ceff][_0xed7d('0x28')]){_0x2141fd['addEdge'](_0x183d69[_0x11ceff]['source'],_0x183d69[_0x11ceff][_0xed7d('0x28')],_0x183d69[_0x11ceff]['value']);}}return _0x2141fd;}function getSquareProject(_0x1ab1fa,_0xf98f28){rpc['getSquareProject'](_0x1ab1fa)[_0xed7d('0x29')](function(_0x1a90a4){_0xf98f28(null,_0x1a90a4);})[_0xed7d('0x2a')](function(_0x2182a2){_0xf98f28(null,_0x2182a2);});}function createSquareReport(_0x2fd4c2,_0x2ab58e){rpc[_0xed7d('0x2b')](_0x2fd4c2)['then'](function(_0x1c1437){if(_0x2ab58e){_0x2ab58e(null,_0x1c1437);}})[_0xed7d('0x2a')](function(_0x46736a){if(_0x2ab58e){_0x2ab58e(null,_0x46736a);}});}function setChannelVariables(_0x2aef2b){for(var _0x525b0d in _0x2aef2b){if(_0x2aef2b['hasOwnProperty'](_0x525b0d)){if(_0x525b0d['indexOf'](_0xed7d('0x2c'))===0x0){_0x2aef2b[_0x525b0d[_0xed7d('0x2d')](0x4)]=_0x2aef2b[_0x525b0d];delete _0x2aef2b[_0x525b0d];}}}}function getLogFromObject(_0x2c88d2){return util[_0xed7d('0x2e')](_0x2c88d2,{'showHidden':![],'depth':null});}function agiHandler(_0x2f756e){var _0x54a7d0,_0x292153,_0x4f2996,_0x2f938b,_0x532027;logger['debug'](_0xed7d('0x2f'),JSON[_0xed7d('0x30')](_0x2f756e,null,0x2));logger['info'](util['format'](_0xed7d('0x31'),_0x2f756e[_0xed7d('0x18')],_0x2f756e['calleridname'],_0x2f756e[_0xed7d('0x1c')],_0x2f756e[_0xed7d('0x1d')],_0x2f756e[_0xed7d('0x19')]));_0x2f756e['on'](_0xed7d('0xc'),errorHandler);_0x2f756e['on'](_0xed7d('0x32'),closeHandler);_0x2f756e['on'](_0xed7d('0x33'),timeoutHandler);_0x2f756e[_0xed7d('0x34')]=![];_0x2f756e['on'](_0xed7d('0x35'),hangupHandler);var _0x44b0a0=getSquareProject[_0xed7d('0x36')](null,_0x2f756e['arg_1']);if(_0x44b0a0){if(_0x44b0a0[_0xed7d('0x37')]){_0x54a7d0=getRoot(_0x44b0a0[_0xed7d('0x37')]);if(_0x54a7d0&&_0x54a7d0[_0xed7d('0x38')]){logger[_0xed7d('0x39')](_0xed7d('0x1f'),JSON[_0xed7d('0x30')](_0x54a7d0,null,0x2));_0x2f756e['joinAt']=moment()[_0xed7d('0x13')]('YYYY-MM-DD\x20HH:mm:ss');_0x292153=initGraph(_['omit'](_0x54a7d0,'mxCell'),_0x54a7d0[_0xed7d('0x3a')]);_0x4f2996=new Vertices(_0x2f756e,rpc,mailRpc);logger[_0xed7d('0x10')](util['format']('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x2f756e[_0xed7d('0x18')],_0x2f756e[_0xed7d('0x1b')],_0x2f756e[_0xed7d('0x1c')],_0x2f756e[_0xed7d('0x1d')],_0x2f756e['uniqueid']));_0x292153['traverseBFS'](_0x54a7d0[_0xed7d('0x38')]['id'],function(_0x320f1e){try{_0x320f1e=_0x4f2996[_0xed7d('0x3b')](_0x320f1e);logger[_0xed7d('0x39')](_0xed7d('0x3c'),JSON[_0xed7d('0x30')](_0x320f1e,null,0x2));if(_0x320f1e[_0xed7d('0x20')]===_0xed7d('0x3d')){logger[_0xed7d('0x10')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x2f756e[_0xed7d('0x3e')]=_0x320f1e['context']||_0x2f756e[_0xed7d('0x3e')];_0x2f756e[_0xed7d('0x3f')]=_0x320f1e['extension'];_0x2f756e[_0xed7d('0x40')]=_0x320f1e[_0xed7d('0x40')]?_0x320f1e[_0xed7d('0x40')]-0x1:0x1;return null;}else if(_0x320f1e&&_0x4f2996[_0x320f1e[_0xed7d('0x20')]]){_0x532027=_0x4f2996[_0x320f1e[_0xed7d('0x20')]](_0x320f1e);logger[_0xed7d('0x10')](_0xed7d('0x41'),JSON[_0xed7d('0x30')](_0x532027,null,0x2));if(_0x532027&&_0x532027[_0xed7d('0x42')]===AGI_CODE_SUCCESS&&_0x532027[_0xed7d('0x43')]!==AGI_RESULT_ERROR&&!_0x2f756e[_0xed7d('0x34')]){logger[_0xed7d('0x39')](_0xed7d('0x41'),getLogFromObject(_0x532027));return _[_0xed7d('0x44')](_0x532027[_0xed7d('0x43')])?null:_0x532027[_0xed7d('0x43')][_0xed7d('0x45')]();}else{logger[_0xed7d('0xc')]('response',getLogFromObject(_0x532027));return null;}}else{logger[_0xed7d('0xc')](_0xed7d('0x46'));return null;}}catch(_0x5887ba){logger[_0xed7d('0xc')](_0x5887ba[_0xed7d('0x16')]);return null;}});if(_0x54a7d0[_0xed7d('0x47')]){logger[_0xed7d('0x10')](util[_0xed7d('0x13')](_0xed7d('0x48'),_0x2f756e[_0xed7d('0x18')],_0x2f756e['calleridname'],_0x2f756e[_0xed7d('0x1c')],_0x2f756e['dnid'],_0x2f756e[_0xed7d('0x19')]));_0x292153[_0xed7d('0x49')](_0x54a7d0['finally']['id'],function(_0x5b1359){try{_0x5b1359=_0x4f2996[_0xed7d('0x3b')](_0x5b1359);logger[_0xed7d('0x39')]('vertex',JSON['stringify'](_0x5b1359,null,0x2));if(_0x5b1359&&_0x4f2996[_0x5b1359[_0xed7d('0x20')]]){_0x532027=_0x4f2996[_0x5b1359['agicommand']](_0x5b1359);if(_0x532027){logger[_0xed7d('0x39')](_0xed7d('0x41'),getLogFromObject(_0x532027));return _['isUndefined'](_0x532027['result'])?null:_0x532027['result'][_0xed7d('0x45')]();}else{logger['error'](_0xed7d('0x41'),getLogFromObject(_0x532027));return null;}}else{logger[_0xed7d('0xc')](_0xed7d('0x46'));return null;}}catch(_0x1d532c){logger['error'](_0x1d532c[_0xed7d('0x16')]);return null;}});}logger['info'](util[_0xed7d('0x13')](_0xed7d('0x4a'),_0x2f756e[_0xed7d('0x18')],_0x2f756e[_0xed7d('0x1b')],_0x2f756e[_0xed7d('0x1c')],_0x2f756e[_0xed7d('0x1d')],_0x2f756e['uniqueid']));logger[_0xed7d('0x10')](util[_0xed7d('0x13')](_0xed7d('0x4b'),_0x2f756e[_0xed7d('0x3e')],_0x2f756e[_0xed7d('0x3f')],parseInt(_0x2f756e[_0xed7d('0x40')],0xa)+0x1));_0x2f756e[_0xed7d('0x4c')](_0x2f756e[_0xed7d('0x3e')],_0x2f756e[_0xed7d('0x3f')],parseInt(_0x2f756e[_0xed7d('0x40')],0xa)+0x1);_0x2f756e[_0xed7d('0x32')]();}}else{logger[_0xed7d('0xc')](util[_0xed7d('0x13')](_0xed7d('0x4d'),_0x2f756e[_0xed7d('0x18')]));_0x2f756e[_0xed7d('0x4c')](_0x2f756e[_0xed7d('0x3e')],_0x2f756e[_0xed7d('0x3f')],parseInt(_0x2f756e['priority'],0xa)+0x1);_0x2f756e[_0xed7d('0x32')]();}}else{logger[_0xed7d('0xc')](util[_0xed7d('0x13')]('Project\x20%s\x20not\x20found',_0x2f756e[_0xed7d('0x18')]));_0x2f756e[_0xed7d('0x4c')](_0x2f756e[_0xed7d('0x3e')],_0x2f756e[_0xed7d('0x3f')],parseInt(_0x2f756e[_0xed7d('0x40')],0xa)+0x1);_0x2f756e['close']();}}function main(){var _0x416c4c;return utilLicense[_0xed7d('0x4e')]()[_0xed7d('0x29')](function(_0x42ccbf){if(_0x42ccbf){if(_0x42ccbf[_0xed7d('0x4f')]){if(_0x42ccbf[_0xed7d('0x50')]&&_0x42ccbf[_0xed7d('0x50')]>0x0){logger[_0xed7d('0x10')](util[_0xed7d('0x13')]('[LICENSE]\x20CHANNELS:\x20%s',_0x42ccbf[_0xed7d('0x50')]));_0x416c4c=_0x42ccbf[_0xed7d('0x50')];}else{logger[_0xed7d('0x10')](_0xed7d('0x51'));}}else{logger[_0xed7d('0x10')](_0xed7d('0x52'));_0x416c4c=-0x1;}}})[_0xed7d('0x2a')](function(_0x2ce813){logger[_0xed7d('0xc')](_0xed7d('0x53'),_0x2ce813['stack']);})['finally'](function(){var _0x58d575=require(_0xed7d('0x54'))(config[_0xed7d('0x5')]['port'],config[_0xed7d('0x5')]['ip'],_0x416c4c);_0x58d575['on']('error',errorHandler);_0x58d575['on']('listening',listeningHandler);_0x58d575['on'](_0xed7d('0x55'),connectionHandler);_0x58d575['on'](_0xed7d('0x32'),closeHandler);});}main();
\ No newline at end of file
index f54a94d..4973c84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc650=['jayson/promise','client','http','request','then','error','result','catch','sendMailMessage','bluebird'];(function(_0xbb091,_0x3fe7ee){var _0x467a04=function(_0x3a978d){while(--_0x3a978d){_0xbb091['push'](_0xbb091['shift']());}};_0x467a04(++_0x3fe7ee);}(_0xc650,0x12b));var _0x0c65=function(_0x1008cc,_0xb71d31){_0x1008cc=_0x1008cc-0x0;var _0xaecf70=_0xc650[_0x1008cc];return _0xaecf70;};'use strict';var BPromise=require(_0x0c65('0x0'));var jayson=require(_0x0c65('0x1'));var client=jayson[_0x0c65('0x2')][_0x0c65('0x3')]({'port':0x232b});function request(_0x297a97,_0x402510){return new BPromise(function(_0xca640f,_0x260f9a){return client[_0x0c65('0x4')](_0x297a97,_0x402510)[_0x0c65('0x5')](function(_0x5e4f95){if(_0x5e4f95[_0x0c65('0x6')]){return _0x260f9a(_0x5e4f95[_0x0c65('0x6')]['message']);}else{return _0xca640f(_0x5e4f95[_0x0c65('0x7')]);}})[_0x0c65('0x8')](function(_0x8d0c87){return _0x260f9a(_0x8d0c87);});});}exports[_0x0c65('0x9')]=function(_0x1f66a8,_0x3b8fbb){return request('SendMail',{'account':_0x1f66a8,'message':_0x3b8fbb});};
\ No newline at end of file
+var _0xad09=['error','message','result','catch','sendMailMessage','jayson/promise','client','http','request'];(function(_0x3f2a90,_0x50baf1){var _0xb46279=function(_0x5e47b5){while(--_0x5e47b5){_0x3f2a90['push'](_0x3f2a90['shift']());}};_0xb46279(++_0x50baf1);}(_0xad09,0x152));var _0x9ad0=function(_0x5b959e,_0x28debf){_0x5b959e=_0x5b959e-0x0;var _0x11df5a=_0xad09[_0x5b959e];return _0x11df5a;};'use strict';var BPromise=require('bluebird');var jayson=require(_0x9ad0('0x0'));var client=jayson[_0x9ad0('0x1')][_0x9ad0('0x2')]({'port':0x232b});function request(_0x198c50,_0x5a3f65){return new BPromise(function(_0x1598f4,_0x5a5fcc){return client[_0x9ad0('0x3')](_0x198c50,_0x5a3f65)['then'](function(_0x3a1750){if(_0x3a1750['error']){return _0x5a5fcc(_0x3a1750[_0x9ad0('0x4')][_0x9ad0('0x5')]);}else{return _0x1598f4(_0x3a1750[_0x9ad0('0x6')]);}})[_0x9ad0('0x7')](function(_0xf4a165){return _0x5a5fcc(_0xf4a165);});});}exports[_0x9ad0('0x8')]=function(_0x179c1a,_0x2db849){return request('SendMail',{'account':_0x179c1a,'message':_0x2db849});};
\ No newline at end of file
index f73c90b..74f0efe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7097=['substring','length','split','slice','trim','emit','headers','line','util','Transform','call','_inBody','prototype','_transform','\x0d\x0a\x0d\x0a','_localBuffer','toString','indexOf'];(function(_0x2abe6c,_0xf74f56){var _0x4a7db1=function(_0x3ff6b4){while(--_0x3ff6b4){_0x2abe6c['push'](_0x2abe6c['shift']());}};_0x4a7db1(++_0xf74f56);}(_0x7097,0xe0));var _0x7709=function(_0x34586c,_0xe6ec74){_0x34586c=_0x34586c-0x0;var _0x28e84c=_0x7097[_0x34586c];return _0x28e84c;};'use strict';var util=require(_0x7709('0x0'));var Transform=require('stream')[_0x7709('0x1')];function AGIReply(_0x23fca0){Transform[_0x7709('0x2')](this,_0x23fca0);this['_localBuffer']='';this[_0x7709('0x3')]=![];}util['inherits'](AGIReply,Transform);AGIReply[_0x7709('0x4')][_0x7709('0x5')]=function(_0x53c886,_0x5dffd9,_0x4bcf72){var _0x2cf35b='\x0a',_0x128703=['\x0a\x0a',_0x7709('0x6')],_0xa2448e=-0x1,_0x322fe5=-0x1,_0x160d92='',_0x334478=0x0,_0x49e2c2='',_0x484173='';this[_0x7709('0x7')]+=_0x53c886[_0x7709('0x8')]();_0x49e2c2=this[_0x7709('0x7')];if(!this['_inBody']){_0x334478=0x0;while(_0x128703[_0x334478]){while((_0x322fe5=_0x49e2c2[_0x7709('0x9')](_0x128703[_0x334478]))!=-0x1){_0x160d92=_0x128703[_0x334478];_0x484173=_0x49e2c2['substring'](0x0,_0x322fe5);_0x49e2c2=_0x49e2c2[_0x7709('0xa')](_0x322fe5+_0x160d92[_0x7709('0xb')]);var _0x19f1b2=_0x484173[_0x7709('0xc')](_0x2cf35b),_0x448563=0x0,_0x50ce08={},_0xb5deb5='',_0x2de0cb='',_0x123eee=-0x1;while(_0x19f1b2[_0x448563]){_0x123eee=_0x19f1b2[_0x448563]['indexOf'](':');if(_0x123eee!=-0x1){_0xb5deb5=_0x19f1b2[_0x448563]['slice'](0x0,_0x123eee)['trim']();_0x2de0cb=_0x19f1b2[_0x448563][_0x7709('0xd')](_0x123eee+0x1)[_0x7709('0xe')]();if(_0xb5deb5[_0x7709('0xb')]>0x0){_0x50ce08[_0xb5deb5]=_0x2de0cb;}}else{}_0x448563++;}this[_0x7709('0xf')](_0x7709('0x10'),_0x50ce08);this[_0x7709('0x3')]=!![];}_0x334478++;}this[_0x7709('0x7')]=_0x49e2c2;}else{while((_0xa2448e=_0x49e2c2[_0x7709('0x9')](_0x2cf35b))!=-0x1){_0x484173=_0x49e2c2['substring'](0x0,_0xa2448e);this[_0x7709('0xf')](_0x7709('0x11'),_0x484173);_0x49e2c2=_0x49e2c2[_0x7709('0xa')](_0xa2448e+_0x2cf35b[_0x7709('0xb')]);}this[_0x7709('0x7')]=_0x49e2c2;}_0x4bcf72();};module['exports']=AGIReply;
\ No newline at end of file
+var _0x5c38=['_inBody','inherits','prototype','_transform','\x0d\x0a\x0d\x0a','toString','_localBuffer','indexOf','substring','length','trim','emit','headers','line','exports','stream','Transform','call'];(function(_0x13f5ee,_0x35ec1e){var _0x4130b0=function(_0x278559){while(--_0x278559){_0x13f5ee['push'](_0x13f5ee['shift']());}};_0x4130b0(++_0x35ec1e);}(_0x5c38,0x189));var _0x85c3=function(_0x4e8947,_0x5ca04d){_0x4e8947=_0x4e8947-0x0;var _0x29abde=_0x5c38[_0x4e8947];return _0x29abde;};'use strict';var util=require('util');var Transform=require(_0x85c3('0x0'))[_0x85c3('0x1')];function AGIReply(_0xcaaa41){Transform[_0x85c3('0x2')](this,_0xcaaa41);this['_localBuffer']='';this[_0x85c3('0x3')]=![];}util[_0x85c3('0x4')](AGIReply,Transform);AGIReply[_0x85c3('0x5')][_0x85c3('0x6')]=function(_0x4617b6,_0x4031d3,_0x4c7ddc){var _0x4e848c='\x0a',_0x23d5f3=['\x0a\x0a',_0x85c3('0x7')],_0x2a8b83=-0x1,_0x3181bb=-0x1,_0x500abe='',_0x340b5a=0x0,_0x4c4f80='',_0x27f53a='';this['_localBuffer']+=_0x4617b6[_0x85c3('0x8')]();_0x4c4f80=this[_0x85c3('0x9')];if(!this[_0x85c3('0x3')]){_0x340b5a=0x0;while(_0x23d5f3[_0x340b5a]){while((_0x3181bb=_0x4c4f80[_0x85c3('0xa')](_0x23d5f3[_0x340b5a]))!=-0x1){_0x500abe=_0x23d5f3[_0x340b5a];_0x27f53a=_0x4c4f80['substring'](0x0,_0x3181bb);_0x4c4f80=_0x4c4f80[_0x85c3('0xb')](_0x3181bb+_0x500abe[_0x85c3('0xc')]);var _0x169777=_0x27f53a['split'](_0x4e848c),_0x1e1e3c=0x0,_0x2455a0={},_0x191de5='',_0x1eafd3='',_0x395c08=-0x1;while(_0x169777[_0x1e1e3c]){_0x395c08=_0x169777[_0x1e1e3c]['indexOf'](':');if(_0x395c08!=-0x1){_0x191de5=_0x169777[_0x1e1e3c]['slice'](0x0,_0x395c08)['trim']();_0x1eafd3=_0x169777[_0x1e1e3c]['slice'](_0x395c08+0x1)[_0x85c3('0xd')]();if(_0x191de5[_0x85c3('0xc')]>0x0){_0x2455a0[_0x191de5]=_0x1eafd3;}}else{}_0x1e1e3c++;}this[_0x85c3('0xe')](_0x85c3('0xf'),_0x2455a0);this[_0x85c3('0x3')]=!![];}_0x340b5a++;}this['_localBuffer']=_0x4c4f80;}else{while((_0x2a8b83=_0x4c4f80['indexOf'](_0x4e848c))!=-0x1){_0x27f53a=_0x4c4f80['substring'](0x0,_0x2a8b83);this[_0x85c3('0xe')](_0x85c3('0x10'),_0x27f53a);_0x4c4f80=_0x4c4f80[_0x85c3('0xb')](_0x2a8b83+_0x4e848c['length']);}this['_localBuffer']=_0x4c4f80;}_0x4c7ddc();};module[_0x85c3('0x11')]=AGIReply;
\ No newline at end of file
index d4018df..0b1cd22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8179=['agentPause','PauseUser','agentUnpause','UnpauseUser','agentLogout','LogoutUser','moment','jayson/promise','client','http','request','then','error','message','result','catch','getSquareProject','ShowSquareProject','ShowMailAccount','MailServerOut','Smtp','email','getSquareProjectById','name','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','getUserById','ShowUser','getTrunkById','ShowTrunk','ShowSound','save_name','ShowInterval','Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','CreateSquareReport','arg_1','arg_2','format','CreateSquareRecording','CreateSquareMessage','createCmContact','ListId','CreateCmContact','getPauseById','ShowPause','agentLogin'];(function(_0x21c32e,_0x245019){var _0x365884=function(_0x5d28c1){while(--_0x5d28c1){_0x21c32e['push'](_0x21c32e['shift']());}};_0x365884(++_0x245019);}(_0x8179,0x1c6));var _0x9817=function(_0x4b9885,_0x163382){_0x4b9885=_0x4b9885-0x0;var _0x35d5d5=_0x8179[_0x4b9885];return _0x35d5d5;};'use strict';var BPromise=require('bluebird');var moment=require(_0x9817('0x0'));var _=require('lodash');var util=require('util');var jayson=require(_0x9817('0x1'));var client=jayson[_0x9817('0x2')][_0x9817('0x3')]({'port':0x2329});function request(_0x419d88,_0x8fa2af){return new BPromise(function(_0x3cdb76,_0x5d46aa){return client[_0x9817('0x4')](_0x419d88,_0x8fa2af)[_0x9817('0x5')](function(_0x4345b9){if(_0x4345b9[_0x9817('0x6')]){return _0x5d46aa(_0x4345b9[_0x9817('0x6')][_0x9817('0x7')]);}else{return _0x3cdb76(_0x4345b9[_0x9817('0x8')]);}})[_0x9817('0x9')](function(_0x32101f){return _0x5d46aa(_0x32101f);});});}exports[_0x9817('0xa')]=function(_0x9232fd){return request(_0x9817('0xb'),{'options':{'raw':![],'where':{'name':_0x9232fd},'attributes':['production']}});};exports['getMailAccountById']=function(_0x34e219){return request(_0x9817('0xc'),{'options':{'raw':![],'where':{'id':_0x34e219},'include':[{'model':_0x9817('0xd'),'as':_0x9817('0xe')}],'attributes':['id','name',_0x9817('0xf')]}});};exports[_0x9817('0x10')]=function(_0x76ad29){return request(_0x9817('0xb'),{'options':{'where':{'id':_0x76ad29},'attributes':[_0x9817('0x11')]}});};exports[_0x9817('0x12')]=function(_0x528122){return request(_0x9817('0x13'),{'options':{'where':{'id':_0x528122},'attributes':[_0x9817('0x11')]}});};exports[_0x9817('0x14')]=function(_0xbc52bf){return request(_0x9817('0x15'),{'options':{'where':{'id':_0xbc52bf},'attributes':[_0x9817('0x11')]}});};exports[_0x9817('0x16')]=function(_0x385ada){return request('ShowSquareOdbc',{'options':{'where':{'id':_0x385ada},'attributes':['dsn']}});};exports[_0x9817('0x17')]=function(_0x3124cb){return request(_0x9817('0x18'),{'options':{'where':{'id':_0x3124cb},'attributes':[_0x9817('0x11')]}});};exports[_0x9817('0x19')]=function(_0x5383fd){return request(_0x9817('0x1a'),{'options':{'where':{'id':_0x5383fd},'attributes':[_0x9817('0x11')]}});};exports['getSoundById']=function(_0x317c1d){return request(_0x9817('0x1b'),{'options':{'where':{'id':_0x317c1d},'attributes':[_0x9817('0x1c')]}});};exports['getIntervalById']=function(_0x19de2e){return request(_0x9817('0x1d'),{'options':{'raw':![],'where':{'id':_0x19de2e},'include':[{'model':'Interval','as':_0x9817('0x1e')}]}});};exports[_0x9817('0x1f')]=function(_0x196799){return request(_0x9817('0x20'),{'options':{'where':{'id':_0x196799},'attributes':['id',_0x9817('0x11')]}});};exports[_0x9817('0x21')]=function(_0x327923){return request(_0x9817('0x22'),{'body':_0x327923});};exports[_0x9817('0x23')]=function(_0x5b66ae){return request(_0x9817('0x24'),{'body':_0x5b66ae});};exports[_0x9817('0x25')]=function(_0x1790c5){return request(_0x9817('0x26'),{'body':_['merge'](_0x1790c5,{'project_name':_0x1790c5[_0x9817('0x27')],'prev_project_name':_0x1790c5[_0x9817('0x28')]||'','is_subproject':_0x1790c5[_0x9817('0x28')]?!![]:![],'leaveAt':moment()[_0x9817('0x29')]('YYYY-MM-DD\x20HH:mm:ss')})});};exports['createSquareRecording']=function(_0x39ee50){return request(_0x9817('0x2a'),{'body':_0x39ee50});};exports['createSquareMessage']=function(_0x35c6d9){return request(_0x9817('0x2b'),{'body':_0x35c6d9});};exports[_0x9817('0x2c')]=function(_0x2bbe74){return request('ShowCmHopper',{'options':{'raw':![],'where':{'phone':_0x2bbe74['phone'],'ListId':_0x2bbe74[_0x9817('0x2d')]}}})[_0x9817('0x5')](function(_0x556e53){if(_0x556e53){return _0x556e53;}return request(_0x9817('0x2e'),{'body':_0x2bbe74});});};exports[_0x9817('0x2f')]=function(_0x37c888){return request(_0x9817('0x30'),{'options':{'where':{'id':_0x37c888},'attributes':['name']}});};exports[_0x9817('0x31')]=function(_0x2e509b,_0x42e701){return request('LoginUser',{'body':{'interface':_0x42e701},'options':{'where':_0x2e509b}});};exports[_0x9817('0x32')]=function(_0x12b956,_0x2bd5cb,_0x20816c){return request(_0x9817('0x33'),{'body':{'type':_0x2bd5cb,'uniqueid':_0x20816c},'options':{'where':_0x12b956}});};exports[_0x9817('0x34')]=function(_0x26d1bd){return request(_0x9817('0x35'),{'body':{},'options':{'where':_0x26d1bd}});};exports[_0x9817('0x36')]=function(_0xd4f11e){return request(_0x9817('0x37'),{'body':{},'options':{'where':_0xd4f11e}});};
\ No newline at end of file
+var _0x9dc5=['lodash','util','http','request','then','error','message','result','catch','ShowSquareProject','production','getMailAccountById','ShowMailAccount','Smtp','name','email','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','getTrunkById','getSoundById','getIntervalById','ShowInterval','Interval','Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','CreateSquareReport','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording','createSquareMessage','createCmContact','ShowCmHopper','phone','CreateCmContact','getPauseById','ShowPause','agentLogin','LoginUser','agentUnpause','LogoutUser'];(function(_0x2ba1b2,_0x1d4370){var _0x23345e=function(_0x397142){while(--_0x397142){_0x2ba1b2['push'](_0x2ba1b2['shift']());}};_0x23345e(++_0x1d4370);}(_0x9dc5,0x13e));var _0x59dc=function(_0x2715e9,_0x5f11ec){_0x2715e9=_0x2715e9-0x0;var _0x2db8dc=_0x9dc5[_0x2715e9];return _0x2db8dc;};'use strict';var BPromise=require('bluebird');var moment=require('moment');var _=require(_0x59dc('0x0'));var util=require(_0x59dc('0x1'));var jayson=require('jayson/promise');var client=jayson['client'][_0x59dc('0x2')]({'port':0x2329});function request(_0xbcd353,_0x636cc1){return new BPromise(function(_0x5e3cec,_0x531926){return client[_0x59dc('0x3')](_0xbcd353,_0x636cc1)[_0x59dc('0x4')](function(_0x21103a){if(_0x21103a[_0x59dc('0x5')]){return _0x531926(_0x21103a['error'][_0x59dc('0x6')]);}else{return _0x5e3cec(_0x21103a[_0x59dc('0x7')]);}})[_0x59dc('0x8')](function(_0x28ecee){return _0x531926(_0x28ecee);});});}exports['getSquareProject']=function(_0x5c3ac2){return request(_0x59dc('0x9'),{'options':{'raw':![],'where':{'name':_0x5c3ac2},'attributes':[_0x59dc('0xa')]}});};exports[_0x59dc('0xb')]=function(_0x343363){return request(_0x59dc('0xc'),{'options':{'raw':![],'where':{'id':_0x343363},'include':[{'model':'MailServerOut','as':_0x59dc('0xd')}],'attributes':['id',_0x59dc('0xe'),_0x59dc('0xf')]}});};exports[_0x59dc('0x10')]=function(_0x20c96f){return request('ShowSquareProject',{'options':{'where':{'id':_0x20c96f},'attributes':['name']}});};exports[_0x59dc('0x11')]=function(_0x50b9e4){return request(_0x59dc('0x12'),{'options':{'where':{'id':_0x50b9e4},'attributes':[_0x59dc('0xe')]}});};exports[_0x59dc('0x13')]=function(_0xe3ea3a){return request(_0x59dc('0x14'),{'options':{'where':{'id':_0xe3ea3a},'attributes':[_0x59dc('0xe')]}});};exports[_0x59dc('0x15')]=function(_0x503fe4){return request(_0x59dc('0x16'),{'options':{'where':{'id':_0x503fe4},'attributes':['dsn']}});};exports['getUserById']=function(_0x25768d){return request('ShowUser',{'options':{'where':{'id':_0x25768d},'attributes':['name']}});};exports[_0x59dc('0x17')]=function(_0x4039bb){return request('ShowTrunk',{'options':{'where':{'id':_0x4039bb},'attributes':['name']}});};exports[_0x59dc('0x18')]=function(_0x258cf8){return request('ShowSound',{'options':{'where':{'id':_0x258cf8},'attributes':['save_name']}});};exports[_0x59dc('0x19')]=function(_0x3e1dcb){return request(_0x59dc('0x1a'),{'options':{'raw':![],'where':{'id':_0x3e1dcb},'include':[{'model':_0x59dc('0x1b'),'as':_0x59dc('0x1c')}]}});};exports[_0x59dc('0x1d')]=function(_0x6106c1){return request(_0x59dc('0x1e'),{'options':{'where':{'id':_0x6106c1},'attributes':['id','name']}});};exports[_0x59dc('0x1f')]=function(_0x348873){return request(_0x59dc('0x20'),{'body':_0x348873});};exports[_0x59dc('0x21')]=function(_0x5d1124){return request(_0x59dc('0x22'),{'body':_0x5d1124});};exports[_0x59dc('0x23')]=function(_0x20507c){return request(_0x59dc('0x24'),{'body':_['merge'](_0x20507c,{'project_name':_0x20507c['arg_1'],'prev_project_name':_0x20507c['arg_2']||'','is_subproject':_0x20507c[_0x59dc('0x25')]?!![]:![],'leaveAt':moment()[_0x59dc('0x26')](_0x59dc('0x27'))})});};exports[_0x59dc('0x28')]=function(_0x3bac6d){return request(_0x59dc('0x29'),{'body':_0x3bac6d});};exports[_0x59dc('0x2a')]=function(_0x7e7422){return request('CreateSquareMessage',{'body':_0x7e7422});};exports[_0x59dc('0x2b')]=function(_0x4d3ecf){return request(_0x59dc('0x2c'),{'options':{'raw':![],'where':{'phone':_0x4d3ecf[_0x59dc('0x2d')],'ListId':_0x4d3ecf['ListId']}}})[_0x59dc('0x4')](function(_0x5d1915){if(_0x5d1915){return _0x5d1915;}return request(_0x59dc('0x2e'),{'body':_0x4d3ecf});});};exports[_0x59dc('0x2f')]=function(_0xb599b1){return request(_0x59dc('0x30'),{'options':{'where':{'id':_0xb599b1},'attributes':['name']}});};exports[_0x59dc('0x31')]=function(_0x25c5ba,_0x2ca694){return request(_0x59dc('0x32'),{'body':{'interface':_0x2ca694},'options':{'where':_0x25c5ba}});};exports['agentPause']=function(_0x52931e,_0x13ba1c,_0x218378){return request('PauseUser',{'body':{'type':_0x13ba1c,'uniqueid':_0x218378},'options':{'where':_0x52931e}});};exports[_0x59dc('0x33')]=function(_0x3d1d1e){return request('UnpauseUser',{'body':{},'options':{'where':_0x3d1d1e}});};exports['agentLogout']=function(_0x1bab79){return request(_0x59dc('0x34'),{'body':{},'options':{'where':_0x1bab79}});};
\ No newline at end of file
index 8f824b2..4e95ebf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa647=['./polly','./lex','exports'];(function(_0x8d7f36,_0x45b5be){var _0x29d6f9=function(_0x5f31f0){while(--_0x5f31f0){_0x8d7f36['push'](_0x8d7f36['shift']());}};_0x29d6f9(++_0x45b5be);}(_0xa647,0x81));var _0x7a64=function(_0x100f27,_0x2a89e3){_0x100f27=_0x100f27-0x0;var _0x10e834=_0xa647[_0x100f27];return _0x10e834;};var polly=require(_0x7a64('0x0'));var lex=require(_0x7a64('0x1'));module[_0x7a64('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0xe767=['./lex','exports'];(function(_0x461a9c,_0x25f6d6){var _0x3ac216=function(_0x4f5a13){while(--_0x4f5a13){_0x461a9c['push'](_0x461a9c['shift']());}};_0x3ac216(++_0x25f6d6);}(_0xe767,0x11e));var _0x7e76=function(_0x4e8395,_0x1d26bb){_0x4e8395=_0x4e8395-0x0;var _0x48637b=_0xe767[_0x4e8395];return _0x48637b;};var polly=require('./polly');var lex=require(_0x7e76('0x0'));module[_0x7e76('0x1')]={'polly':polly,'lex':lex};
\ No newline at end of file
index 2564a96..2112fcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ea3=['./lib/api','exports'];(function(_0x466205,_0x5ce8c8){var _0x264731=function(_0x335d0e){while(--_0x335d0e){_0x466205['push'](_0x466205['shift']());}};_0x264731(++_0x5ce8c8);}(_0x4ea3,0x70));var _0x34ea=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x4ea3[_0x397e5f];return _0x5302b8;};'use strict';var lex=require(_0x34ea('0x0'));module[_0x34ea('0x1')]=function(_0x324f65,_0x3ab582,_0x588172,_0x374ec1,_0x494b56,_0x269d4c){return lex(_0x324f65,_0x3ab582,_0x588172,_0x374ec1,_0x494b56,_0x269d4c);};
\ No newline at end of file
+var _0x4483=['exports','./lib/api'];(function(_0x5232df,_0xb56dcf){var _0x28e137=function(_0x578f1d){while(--_0x578f1d){_0x5232df['push'](_0x5232df['shift']());}};_0x28e137(++_0xb56dcf);}(_0x4483,0x1a3));var _0x3448=function(_0x202e4f,_0x13a9de){_0x202e4f=_0x202e4f-0x0;var _0xd5e621=_0x4483[_0x202e4f];return _0xd5e621;};'use strict';var lex=require(_0x3448('0x0'));module[_0x3448('0x1')]=function(_0x229c0c,_0x481d0c,_0x202d3d,_0x1fe72d,_0x27ef60,_0x3a7178){return lex(_0x229c0c,_0x481d0c,_0x202d3d,_0x1fe72d,_0x27ef60,_0x3a7178);};
\ No newline at end of file
index b09b700..020359a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x36d7c4,_0x189e3c){var _0x19913c=function(_0x5a0b8f){while(--_0x5a0b8f){_0x36d7c4['push'](_0x36d7c4['shift']());}};_0x19913c(++_0x189e3c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xa9e0[_0x6c993a];return _0x27f547;};'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(_0x24a115,_0x2304fe){var _0x5029a5=function(_0x27399e){while(--_0x27399e){_0x24a115['push'](_0x24a115['shift']());}};_0x5029a5(++_0x2304fe);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xa9e0[_0x5ddb1c];return _0x354adc;};'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 dac9117..f3e042b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d86=['./lib/api','exports'];(function(_0x2e8822,_0x24b72b){var _0xa21a50=function(_0x54efe3){while(--_0x54efe3){_0x2e8822['push'](_0x2e8822['shift']());}};_0xa21a50(++_0x24b72b);}(_0x8d86,0xe2));var _0x68d8=function(_0x50aa2e,_0xfbd6f0){_0x50aa2e=_0x50aa2e-0x0;var _0x5e07f0=_0x8d86[_0x50aa2e];return _0x5e07f0;};'use strict';var polly=require(_0x68d8('0x0'));module[_0x68d8('0x1')]=function(_0xdecb85,_0x54514f,_0x598590,_0x13bb2b,_0x13cbc8,_0x368155,_0x452d92){return polly(_0xdecb85,_0x54514f,_0x598590,_0x13bb2b,_0x13cbc8,_0x368155,_0x452d92);};
\ No newline at end of file
+var _0x8379=['exports','./lib/api'];(function(_0x47e87f,_0x44e369){var _0x158bd7=function(_0x4a405d){while(--_0x4a405d){_0x47e87f['push'](_0x47e87f['shift']());}};_0x158bd7(++_0x44e369);}(_0x8379,0xe3));var _0x9837=function(_0x15a0b0,_0x211684){_0x15a0b0=_0x15a0b0-0x0;var _0x579e78=_0x8379[_0x15a0b0];return _0x579e78;};'use strict';var polly=require(_0x9837('0x0'));module[_0x9837('0x1')]=function(_0x17099c,_0x58f208,_0x40cd85,_0x1c2d2b,_0x52904f,_0x171a38,_0x2983ba){return polly(_0x17099c,_0x58f208,_0x40cd85,_0x1c2d2b,_0x52904f,_0x171a38,_0x2983ba);};
\ No newline at end of file
index 9de3b38..5ffe631 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03d6=['AudioStream','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','text','mp3','path','randomstring','aws-sdk','synthesizeSpeech','writeFile'];(function(_0x56fe98,_0x43dc16){var _0x212f4f=function(_0xc3427d){while(--_0xc3427d){_0x56fe98['push'](_0x56fe98['shift']());}};_0x212f4f(++_0x43dc16);}(_0x03d6,0x14b));var _0x603d=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x03d6[_0x19950b];return _0x3c6b41;};'use strict';var fs=require('fs');var path=require(_0x603d('0x0'));var BPromise=require('bluebird');var rs=require(_0x603d('0x1'));var AWS=require(_0x603d('0x2'));function pollyResult(_0x4c0ef6,_0x2fb8c5,_0x5f002c){return new BPromise(function(_0x24963d,_0x225d2d){_0x4c0ef6[_0x603d('0x3')](_0x2fb8c5,function(_0x3411e4,_0x16b0ed){if(_0x3411e4){_0x225d2d(_0x3411e4);}else if(_0x16b0ed){if(_0x16b0ed['AudioStream']instanceof Buffer){fs[_0x603d('0x4')](_0x5f002c,_0x16b0ed[_0x603d('0x5')],function(_0x24fd34){if(_0x24fd34){_0x225d2d(_0x24fd34);}else{_0x24963d();}});}else{_0x225d2d(new Error(_0x603d('0x6')));}}else{_0x225d2d(new Error(_0x603d('0x7')));}});});}module[_0x603d('0x8')]=function(_0x1085e2,_0xd804bb,_0x56851b,_0x30bd05,_0x14e3f5,_0xab0338,_0x551529){var _0xf2855c=new AWS[(_0x603d('0x9'))]({'accessKeyId':_0x1085e2,'secretAccessKey':_0xd804bb,'region':_0x56851b});var _0x206bf1={'Text':_0x14e3f5,'TextType':_0xab0338||_0x603d('0xa'),'OutputFormat':_0x603d('0xb'),'VoiceId':_0x30bd05};return pollyResult(_0xf2855c,_0x206bf1,_0x551529);};
\ No newline at end of file
+var _0xc125=['exports','Polly','text','mp3','bluebird','randomstring','synthesizeSpeech','writeFile','AudioStream'];(function(_0x506fa2,_0x145e85){var _0x42c0ce=function(_0x54add9){while(--_0x54add9){_0x506fa2['push'](_0x506fa2['shift']());}};_0x42c0ce(++_0x145e85);}(_0xc125,0x100));var _0x5c12=function(_0x1c5f37,_0x5903b6){_0x1c5f37=_0x1c5f37-0x0;var _0x568e28=_0xc125[_0x1c5f37];return _0x568e28;};'use strict';var fs=require('fs');var path=require('path');var BPromise=require(_0x5c12('0x0'));var rs=require(_0x5c12('0x1'));var AWS=require('aws-sdk');function pollyResult(_0x3ee130,_0x30739b,_0x5134a8){return new BPromise(function(_0x3a4496,_0x5ac85b){_0x3ee130[_0x5c12('0x2')](_0x30739b,function(_0xf31137,_0x51c995){if(_0xf31137){_0x5ac85b(_0xf31137);}else if(_0x51c995){if(_0x51c995['AudioStream']instanceof Buffer){fs[_0x5c12('0x3')](_0x5134a8,_0x51c995[_0x5c12('0x4')],function(_0x3efe43){if(_0x3efe43){_0x5ac85b(_0x3efe43);}else{_0x3a4496();}});}else{_0x5ac85b(new Error('Invalid\x20data\x20response\x20from\x20aws\x20Polly!'));}}else{_0x5ac85b(new Error('No\x20data\x20response\x20from\x20aws\x20Polly!'));}});});}module[_0x5c12('0x5')]=function(_0x544ca5,_0x2c5098,_0x2b835c,_0x377abf,_0x256497,_0x68fe4a,_0x363772){var _0x523818=new AWS[(_0x5c12('0x6'))]({'accessKeyId':_0x544ca5,'secretAccessKey':_0x2c5098,'region':_0x2b835c});var _0x517c17={'Text':_0x256497,'TextType':_0x68fe4a||_0x5c12('0x7'),'OutputFormat':_0x5c12('0x8'),'VoiceId':_0x377abf};return pollyResult(_0x523818,_0x517c17,_0x363772);};
\ No newline at end of file
index 5268b0d..f4573c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3809=['exports'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x3809,0xa6));var _0x9380=function(_0x540279,_0x13da3b){_0x540279=_0x540279-0x0;var _0x26fe3e=_0x3809[_0x540279];return _0x26fe3e;};'use strict';var asr=require('./lib/api');module[_0x9380('0x0')]=function(_0x336ba4,_0xe797af,_0x1ce8a8,_0x3ef4a4){return asr(_0x336ba4,_0xe797af,_0x1ce8a8);};
\ No newline at end of file
+'use strict';var asr=require('./lib/api');module['exports']=function(_0x777443,_0x5c3879,_0x43d811,_0x3fb14e){return asr(_0x777443,_0x5c3879,_0x43d811);};
\ No newline at end of file
index c069941..daf36ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x765e=['toString','base64','POST','/v1/speech:recognize?key=','LINEAR16','url','bluebird','https://speech.googleapis.com','exports','string','length','filepath\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','readFileSync'];(function(_0x2902cc,_0x4d1d00){var _0x5f418f=function(_0x5e3846){while(--_0x5e3846){_0x2902cc['push'](_0x2902cc['shift']());}};_0x5f418f(++_0x4d1d00);}(_0x765e,0x131));var _0xe765=function(_0x1b8a51,_0x11d4c7){_0x1b8a51=_0x1b8a51-0x0;var _0xbc133a=_0x765e[_0x1b8a51];return _0xbc133a;};'use strict';var url=require(_0xe765('0x0'));var BPromise=require(_0xe765('0x1'));var fs=require('fs');var host=_0xe765('0x2');module[_0xe765('0x3')]=function(_0x375719,_0x5edaf8,_0x25f437){return new BPromise(function(_0x38d6d2,_0x30703f){var _0xd2e232;if(typeof _0x375719!==_0xe765('0x4')||_0x375719[_0xe765('0x5')]===0x0){return _0x30703f(_0xe765('0x6'));}if(typeof _0x5edaf8!==_0xe765('0x4')||_0x5edaf8[_0xe765('0x5')]===0x0){return _0x30703f('key\x20should\x20be\x20a\x20string');}if(typeof _0x25f437!==_0xe765('0x7')&&(typeof _0x25f437!==_0xe765('0x4')||_0x25f437[_0xe765('0x5')]===0x0)){return _0x30703f(_0xe765('0x8'));}try{_0xd2e232=fs[_0xe765('0x9')](_0x375719)[_0xe765('0xa')](_0xe765('0xb'));}catch(_0x53b110){return _0x30703f(_0x53b110);}return _0x38d6d2({'method':_0xe765('0xc'),'uri':host+_0xe765('0xd')+_0x5edaf8,'body':{'config':{'encoding':_0xe765('0xe'),'sampleRateHertz':'8000','languageCode':_0x25f437},'audio':{'content':_0xd2e232}},'json':!![]});});};
\ No newline at end of file
+var _0x4876=['LINEAR16','8000','https://speech.googleapis.com','string','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','undefined','length','lang\x20should\x20be\x20a\x20string','readFileSync','toString','base64','/v1/speech:recognize?key='];(function(_0x209cb4,_0x5a698a){var _0x42ee96=function(_0x490a6c){while(--_0x490a6c){_0x209cb4['push'](_0x209cb4['shift']());}};_0x42ee96(++_0x5a698a);}(_0x4876,0x84));var _0x6487=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4876[_0x3dd15e];return _0x231fd0;};'use strict';var url=require('url');var BPromise=require('bluebird');var fs=require('fs');var host=_0x6487('0x0');module['exports']=function(_0x502614,_0x236189,_0x498e31){return new BPromise(function(_0x43e7e8,_0x2bace9){var _0x192d3c;if(typeof _0x502614!==_0x6487('0x1')||_0x502614['length']===0x0){return _0x2bace9(_0x6487('0x2'));}if(typeof _0x236189!==_0x6487('0x1')||_0x236189['length']===0x0){return _0x2bace9(_0x6487('0x3'));}if(typeof _0x498e31!==_0x6487('0x4')&&(typeof _0x498e31!==_0x6487('0x1')||_0x498e31[_0x6487('0x5')]===0x0)){return _0x2bace9(_0x6487('0x6'));}try{_0x192d3c=fs[_0x6487('0x7')](_0x502614)[_0x6487('0x8')](_0x6487('0x9'));}catch(_0x5f8f96){return _0x2bace9(_0x5f8f96);}return _0x43e7e8({'method':'POST','uri':host+_0x6487('0xa')+_0x236189,'body':{'config':{'encoding':_0x6487('0xb'),'sampleRateHertz':_0x6487('0xc'),'languageCode':_0x498e31},'audio':{'content':_0x192d3c}},'json':!![]});});};
\ No newline at end of file
index 7a7bb33..bba5b78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0936=['./asr','exports'];(function(_0x17158c,_0x58cb92){var _0x734f31=function(_0x2a7a84){while(--_0x2a7a84){_0x17158c['push'](_0x17158c['shift']());}};_0x734f31(++_0x58cb92);}(_0x0936,0x13c));var _0x6093=function(_0x1f12ad,_0x1d0e2a){_0x1f12ad=_0x1f12ad-0x0;var _0x533d97=_0x0936[_0x1f12ad];return _0x533d97;};var asr=require(_0x6093('0x0'));module[_0x6093('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x7adf=['./asr','exports'];(function(_0x5714e0,_0xbf4ccd){var _0x348053=function(_0x32e904){while(--_0x32e904){_0x5714e0['push'](_0x5714e0['shift']());}};_0x348053(++_0xbf4ccd);}(_0x7adf,0x18e));var _0xf7ad=function(_0x5d547f,_0x50a029){_0x5d547f=_0x5d547f-0x0;var _0x66efe3=_0x7adf[_0x5d547f];return _0x66efe3;};var asr=require(_0xf7ad('0x0'));module[_0xf7ad('0x1')]={'asr':asr};
\ No newline at end of file
index 58fabbd..e93d6f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2878=['slice','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','parse\x20response\x20failed:\x0a','writeFileSync','goggleTTS\x20path','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20confidence','catch','[%s]\x20%s:%s','googleDialogflow','textRequest','source','result','resolvedQuery','action','actionIncomplete','fulfillment','speech','score','status','metadata','endConversation','isFallbackIntent','googleDialogflowV2','SessionsClient','sessionPath','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','intent','name','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','fulfillmentText','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','lex','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','model=%s','freeform=3','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','bluebird','dialogflow','https','md5','path','querystring','randomstring','sox','google-tts-api','url','parse','util','./aws','./google','./tilde','agi','https:','host','WHAT_EVER','statusCode','error','\x20failed,\x20status\x20code\x20=\x20','statusMessage','request\x20to\x20','createWriteStream','finish','info','finish\x20download\x20file','close','unlink','pipe','end','get','data','transcode','wav','error\x20convert','finish\x20to\x20convert','resolve','tmp','.wav','base64','then','chmodSync','777','split','readFileSync','toString','https://texttospeech.googleapis.com/v1/','?key=','ssml','voice','MP3','POST','generate','.mp3','from','writeFile','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','generic'];(function(_0x33abe6,_0x5ee93e){var _0x49d9ec=function(_0xae3423){while(--_0xae3423){_0x33abe6['push'](_0x33abe6['shift']());}};_0x49d9ec(++_0x5ee93e);}(_0x2878,0x1d5));var _0x8287=function(_0x3b9808,_0x1dc44e){_0x3b9808=_0x3b9808-0x0;var _0x1ae19f=_0x2878[_0x3b9808];return _0x1ae19f;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0x8287('0x0'));var dialogflow=require(_0x8287('0x1'));var fs=require('fs');var http=require('http');var https=require(_0x8287('0x2'));var md5=require(_0x8287('0x3'));var path=require(_0x8287('0x4'));var querystring=require(_0x8287('0x5'));var rp=require('request-promise');var rs=require(_0x8287('0x6'));var sox=require(_0x8287('0x7'));var tts=require(_0x8287('0x8'));var urlParse=require(_0x8287('0x9'))[_0x8287('0xa')];var util=require(_0x8287('0xb'));var aws=require(_0x8287('0xc'));var google=require(_0x8287('0xd'));var sestek=require('./sestek');var tilde=require(_0x8287('0xe'));var logger=require('../../../config/logger')(_0x8287('0xf'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x493add,_0x4efd68){return new BPromise(function(_0xace355,_0x303120){var _0x2c9da9=urlParse(_0x493add);var _0x7a981=_0x2c9da9['protocol']===_0x8287('0x10')?https:http;var _0x2e1ac5={'host':_0x2c9da9[_0x8287('0x11')],'path':_0x2c9da9[_0x8287('0x4')],'headers':{'user-agent':_0x8287('0x12')}};_0x7a981['get'](_0x2e1ac5,function(_0x44e17c){if(_0x44e17c[_0x8287('0x13')]!==0xc8){logger[_0x8287('0x14')]('request\x20to\x20'+_0x493add+_0x8287('0x15')+_0x44e17c['statusCode']+'\x20('+_0x44e17c[_0x8287('0x16')]+')');_0x303120(new Error(_0x8287('0x17')+_0x493add+'\x20failed,\x20status\x20code\x20=\x20'+_0x44e17c[_0x8287('0x13')]+'\x20('+_0x44e17c[_0x8287('0x16')]+')'));return;}var _0x320296=fs[_0x8287('0x18')](_0x4efd68);_0x320296['on'](_0x8287('0x19'),function(){logger[_0x8287('0x1a')](_0x8287('0x1b'));_0x320296[_0x8287('0x1c')](_0xace355);});_0x320296['on'](_0x8287('0x14'),function(_0xdb4d5a){fs[_0x8287('0x1d')](_0x4efd68);logger[_0x8287('0x14')]('download\x20error',_0xdb4d5a);_0x303120(_0xdb4d5a);});_0x44e17c[_0x8287('0x1e')](_0x320296);})['on'](_0x8287('0x14'),function(_0x4f9542){logger[_0x8287('0x14')](_0x4f9542);_0x303120(_0x4f9542);})[_0x8287('0x1f')]();});}function uploadFile(_0x1bc271){return new BPromise(function(_0x3167df,_0x38f62a){var _0x1d542b=urlParse(_0x1bc271);var _0x1cd348=_0x1d542b['protocol']===_0x8287('0x10')?https:http;var _0x35fab6={'host':_0x1d542b['host'],'path':_0x1d542b[_0x8287('0x4')],'headers':{'user-agent':_0x8287('0x12')}};_0x1cd348[_0x8287('0x20')](_0x35fab6,function(_0x503f1d){if(_0x503f1d[_0x8287('0x13')]!==0xc8){_0x38f62a(new Error(_0x8287('0x17')+_0x1bc271+'\x20failed,\x20status\x20code\x20=\x20'+_0x503f1d[_0x8287('0x13')]+'\x20('+_0x503f1d[_0x8287('0x16')]+')'));return;}var _0xb1c239='';_0x503f1d['on'](_0x8287('0x21'),function(_0x559a97){_0xb1c239+=_0x559a97;});_0x503f1d['on'](_0x8287('0x1f'),function(){_0x3167df(_0xb1c239);});})['on'](_0x8287('0x14'),function(_0x35b15a){_0x38f62a(_0x35b15a);})[_0x8287('0x1f')]();});}function convertFile(_0x3a3108,_0x4ec1df){return new BPromise(function(_0x10943b,_0x3856f2){var _0x13ac63=sox[_0x8287('0x22')](_0x3a3108,_0x4ec1df,{'sampleRate':0x1f40,'format':_0x8287('0x23'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x13ac63['on'](_0x8287('0x14'),function(_0x521839){logger[_0x8287('0x14')](_0x8287('0x24'),_0x521839);_0x3856f2(_0x521839);});_0x13ac63['on'](_0x8287('0x1f'),function(){logger[_0x8287('0x1a')](_0x8287('0x25'));_0x10943b();});_0x13ac63['start']();});}function base64Decode(_0x13e6fb,_0x374639){var _0x5b199c=path[_0x8287('0x26')](__dirname,_0x8287('0x27'),rs['generate'](0x4)+_0x8287('0x28'));fs['writeFileSync'](_0x5b199c,_0x13e6fb,_0x8287('0x29'));return convertFile(_0x5b199c,_0x374639)[_0x8287('0x2a')](function(){try{fs['unlink'](_0x5b199c);fs[_0x8287('0x2b')](_0x374639,_0x8287('0x2c'));}catch(_0x36c432){logger[_0x8287('0x14')](_0x36c432);}return _0x374639[_0x8287('0x2d')]('.')[0x0];});}function base64Encode(_0x304a9a){var _0x54d1c4=fs[_0x8287('0x2e')](_0x304a9a);return new Buffer(_0x54d1c4)[_0x8287('0x2f')](_0x8287('0x29'));}exports['googleCloudTTS']=function(_0x4956e8,_0x132a19,_0x7f2633,_0x27ef24,_0x2d5ecd,_0x1e28a7){var _0x46a9ff,_0x532ce0;var _0x11595d=_0x8287('0x30');var _0x37b447=_0x8287('0x31')+_0x4956e8;var _0x2c88ea={};if(_0x132a19===_0x8287('0x32')){_0x2c88ea['input']={'ssml':_0x7f2633};}else{_0x2c88ea['input']={'text':_0x7f2633};};_0x2c88ea[_0x8287('0x33')]={'languageCode':_0x27ef24,'ssmlGender':_0x2d5ecd};_0x2c88ea['audioConfig']={'audioEncoding':_0x8287('0x34'),'sampleRateHertz':0x1f40};var _0x3ebde0={'url':_0x11595d+'text:synthesize'+_0x37b447,'method':_0x8287('0x35'),'json':!![],'body':_0x2c88ea};return rp(_0x3ebde0)['then'](function(_0x80b32a){return new BPromise(function(_0x2b6cb0,_0x103f70){_0x46a9ff=path[_0x8287('0x26')](__dirname,_0x8287('0x27'),rs[_0x8287('0x36')](0x4)+_0x8287('0x37'));var _0x4c1a91=Buffer[_0x8287('0x38')](_0x80b32a['audioContent'],_0x8287('0x29'));return fs[_0x8287('0x39')](_0x46a9ff,_0x4c1a91,function(_0xdd5ce){_0x103f70(_0xdd5ce);},function(_0x574d62){fs[_0x8287('0x2b')](_0x46a9ff,_0x8287('0x2c'));_0x2b6cb0(_0x574d62);});});})[_0x8287('0x2a')](function(_0xbfb369){_0x532ce0=path[_0x8287('0x26')](__dirname,_0x8287('0x27'),rs[_0x8287('0x36')](0x4)+_0x8287('0x28'));return convertFile(_0x46a9ff,_0x532ce0);})[_0x8287('0x2a')](function(){try{fs[_0x8287('0x1d')](_0x46a9ff);fs[_0x8287('0x2b')](_0x532ce0,_0x8287('0x2c'));}catch(_0x5e8836){logger[_0x8287('0x14')](_0x5e8836);}logger[_0x8287('0x1a')](_0x8287('0x3a'),_0x532ce0[_0x8287('0x2d')]('.')[0x0]);return _0x532ce0[_0x8287('0x2d')]('.')[0x0];});};exports[_0x8287('0x3b')]=function(_0x246e51,_0x3d5f3e){var _0x24927e=_0x8287('0x3c');var _0x5c1851,_0x136886;var _0x3eac3a;var _0x57fa41={'encoding':'utf8','method':_0x8287('0x35'),'timeout':0x2710,'url':_0x24927e,'headers':{'Content-Type':_0x8287('0x3d')},'body':_0x8287('0x3e')+encodeURIComponent(JSON[_0x8287('0x3f')]([[[_0x8287('0x40'),JSON[_0x8287('0x3f')]([_0x246e51,_0x3d5f3e||'en',![],_0x8287('0x41')]),null,_0x8287('0x42')]]]))};return rp(_0x57fa41)[_0x8287('0x2a')](function(_0x1156a5){try{_0x3eac3a=eval(_0x1156a5[_0x8287('0x43')](0x5))[0x0][0x2];}catch(_0x2a440c){throw new Error('parse\x20response\x20failed:\x0a'+_0x1156a5['data']);}if(!_0x3eac3a){if(_0x246e51[_0x8287('0x44')]>0xc8){throw new Error(_0x8287('0x45'));}else{throw new Error(_0x8287('0x46')+_0x3d5f3e+_0x8287('0x47'));}}try{_0x3eac3a=eval(_0x3eac3a)[0x0];}catch(_0x42e89d){throw new Error(_0x8287('0x48')+res['data']);}const _0x3f43a9=_0x3eac3a;_0x5c1851=path['resolve'](__dirname,_0x8287('0x27'),rs[_0x8287('0x36')](0x4)+'.mp3');fs[_0x8287('0x49')](_0x5c1851,_0x3eac3a,{'encoding':'base64'});_0x136886=path[_0x8287('0x26')](__dirname,'tmp',rs[_0x8287('0x36')](0x4)+'.wav');return convertFile(_0x5c1851,_0x136886);})[_0x8287('0x2a')](function(){try{fs['unlink'](_0x5c1851);fs[_0x8287('0x2b')](_0x136886,'777');}catch(_0x3f3c5c){logger[_0x8287('0x14')](_0x3f3c5c);}logger[_0x8287('0x1a')](_0x8287('0x4a'),_0x136886[_0x8287('0x2d')]('.')[0x0]);return _0x136886[_0x8287('0x2d')]('.')[0x0];});};exports['googleASR']=function(_0xa65718,_0x49c9c2,_0x3718a5){return google[_0x8287('0x4b')](_0xa65718,_0x49c9c2,_0x3718a5)[_0x8287('0x2a')](function(_0x37fdc5){logger[_0x8287('0x1a')](_0x37fdc5[_0x8287('0x4c')]);return rp(_0x37fdc5);})[_0x8287('0x2a')](function(_0x4a5ff0){var _0x3006e9='';var _0x28980a=0x0;try{fs[_0x8287('0x1d')](_0xa65718);}catch(_0x226bde){logger['error'](_0x226bde);}if(_0x4a5ff0&&_0x4a5ff0[_0x8287('0x4d')]){_0x3006e9=_0x4a5ff0[_0x8287('0x4d')][_0x8287('0x4e')](function(_0x7be2eb){return _0x7be2eb&&_0x7be2eb[_0x8287('0x4f')][0x0]&&_0x7be2eb['alternatives'][0x0][_0x8287('0x50')]?_0x7be2eb[_0x8287('0x4f')][0x0][_0x8287('0x50')]:'';})[_0x8287('0x51')]('\x0a');_0x28980a=_0x4a5ff0[_0x8287('0x4d')][_0x8287('0x4e')](function(_0x1283bb){return _0x1283bb&&_0x1283bb['alternatives'][0x0]&&_0x1283bb[_0x8287('0x4f')][0x0][_0x8287('0x52')]?_0x1283bb[_0x8287('0x4f')][0x0][_0x8287('0x52')]:0x0;})[_0x8287('0x51')]('\x0a');}logger[_0x8287('0x1a')]('googleASR\x20transcription',_0x3006e9);logger[_0x8287('0x1a')](_0x8287('0x53'),_0x28980a);return{'transcript':_0x3006e9,'confidence':_0x28980a};})[_0x8287('0x54')](function(_0x152535){logger[_0x8287('0x14')](_0x8287('0x55'),_0x152535[_0x8287('0x13')],_0x152535['name'],_0x152535['message']);});};exports[_0x8287('0x56')]=function(_0x6ba1a3,_0x18d3e2,_0x357cae,_0x752dae){var _0x1c6e81=apiai(_0x18d3e2,{'language':_0x752dae||'en'});return _0x1c6e81[_0x8287('0x57')](_0x357cae,{'sessionId':md5(_0x6ba1a3)})[_0x8287('0x2a')](function(_0xd51d91){logger[_0x8287('0x1a')](JSON[_0x8287('0x3f')](_0xd51d91));return{'source':_0xd51d91['result'][_0x8287('0x58')],'resolvedQuery':_0xd51d91[_0x8287('0x59')][_0x8287('0x5a')],'action':_0xd51d91[_0x8287('0x59')][_0x8287('0x5b')],'actionIncomplete':_0xd51d91['result'][_0x8287('0x5c')],'speech':_0xd51d91[_0x8287('0x59')][_0x8287('0x5d')][_0x8287('0x5e')],'score':_0xd51d91[_0x8287('0x59')][_0x8287('0x5f')],'statusCode':_0xd51d91[_0x8287('0x60')]['code'],'endConversation':_0xd51d91[_0x8287('0x59')][_0x8287('0x61')][_0x8287('0x62')]||![],'isFallbackIntent':_0xd51d91[_0x8287('0x59')][_0x8287('0x61')][_0x8287('0x63')]};});};exports[_0x8287('0x64')]=function(_0x18606e,_0x28f1e1,_0x44b3d6,_0x1c29a4,_0x3ce1a5,_0x19448f){var _0x276384=_0x1c29a4['replace'](/\\n/g,'\x0a');var _0x399bde={'credentials':{'private_key':_0x276384,'client_email':_0x44b3d6}};var _0x1f99d2=new dialogflow[(_0x8287('0x65'))](_0x399bde);var _0x39757b=_0x1f99d2[_0x8287('0x66')](_0x28f1e1,md5(_0x18606e));var _0x4b70fe={'session':_0x39757b,'queryInput':{'text':{'text':_0x3ce1a5,'languageCode':_0x19448f}}};return _0x1f99d2['detectIntent'](_0x4b70fe)[_0x8287('0x2a')](function(_0x1a9eb4){if(_0x1a9eb4&&_0x1a9eb4['length']){logger[_0x8287('0x1a')](_0x8287('0x67'),JSON['stringify'](_0x1a9eb4));var _0x4dfbfa=_0x1a9eb4[0x0];if(_0x4dfbfa){var _0x536d2c={'action':_0x4dfbfa[_0x8287('0x68')][_0x8287('0x5b')],'allRequiredParamsPresent':_0x4dfbfa['queryResult'][_0x8287('0x69')],'endConversation':_0x4dfbfa[_0x8287('0x68')][_0x8287('0x6a')]&&_0x4dfbfa[_0x8287('0x68')]['diagnosticInfo']['fields']?_0x4dfbfa['queryResult'][_0x8287('0x6a')][_0x8287('0x6b')][_0x8287('0x6c')][_0x8287('0x6d')]:![],'fulfillmentText':_0x4dfbfa[_0x8287('0x68')]['fulfillmentText'],'intentName':_0x4dfbfa[_0x8287('0x68')][_0x8287('0x6e')][_0x8287('0x6f')],'intentDisplayName':_0x4dfbfa['queryResult'][_0x8287('0x6e')][_0x8287('0x70')],'isFallbackIntent':_0x4dfbfa['queryResult'][_0x8287('0x6e')][_0x8287('0x71')],'languageCode':_0x4dfbfa[_0x8287('0x68')][_0x8287('0x72')],'queryText':_0x4dfbfa[_0x8287('0x68')][_0x8287('0x73')],'responseId':_0x4dfbfa[_0x8287('0x74')],'score':_0x4dfbfa['queryResult'][_0x8287('0x75')],'speech':_0x4dfbfa['queryResult'][_0x8287('0x76')],'providerResponse':JSON['stringify'](_0x1a9eb4)};return _0x536d2c;}}});};exports['tildeASR']=function(_0x39e670,_0x2a7632,_0x29b5ce,_0x2ad608){return tilde['asr'](_0x39e670,_0x2a7632,_0x29b5ce,_0x2ad608)['then'](function(_0x39d585){try{fs[_0x8287('0x1d')](_0x39e670);}catch(_0x2e9c2c){logger[_0x8287('0x14')](_0x2e9c2c);}logger[_0x8287('0x1a')](_0x8287('0x77'),_0x39d585['transcript']);logger[_0x8287('0x1a')](_0x8287('0x78'),_0x39d585[_0x8287('0x52')]);return _0x39d585;});};exports[_0x8287('0x79')]=function(_0x16691c,_0x822854,_0x58a893,_0x2f3213,_0x4c58c2,_0x42a242){var _0x491add=path['resolve'](__dirname,_0x8287('0x27'),rs[_0x8287('0x36')](0x4)+'.mp3');var _0x3d1d34;return aws['polly'](_0x16691c,_0x822854,_0x58a893,_0x2f3213,_0x4c58c2,_0x42a242,_0x491add)['then'](function(){_0x3d1d34=path[_0x8287('0x26')](__dirname,_0x8287('0x27'),rs['generate'](0x4)+'.wav');return convertFile(_0x491add,_0x3d1d34);})[_0x8287('0x2a')](function(){try{fs[_0x8287('0x1d')](_0x491add);fs[_0x8287('0x2b')](_0x3d1d34,_0x8287('0x2c'));}catch(_0x492280){logger[_0x8287('0x14')](_0x492280);}return _0x3d1d34[_0x8287('0x2d')]('.')[0x0];});};exports['awsLex']=function(_0xd551ee,_0x5abf81,_0x112cf9,_0x3c881e,_0x41ac41,_0x2eda35){return aws[_0x8287('0x7a')](_0xd551ee,_0x5abf81,_0x112cf9,_0x3c881e,_0x41ac41,_0x2eda35)[_0x8287('0x2a')](function(_0x5beb91){logger[_0x8287('0x1a')](JSON[_0x8287('0x3f')](_0x5beb91));return _0x5beb91;});};exports['ispeechTTS']=function(_0x37303,_0x379dde,_0xdf4342,_0x6bbe6a){var _0x36b112=util[_0x8287('0x7b')](_0x8287('0x7c'),ISPEECH_API,_0x37303,encodeURIComponent(_0x379dde),_0xdf4342,_0x6bbe6a);var _0x2cd9de=path['resolve'](__dirname,_0x8287('0x27'),rs[_0x8287('0x36')](0x4)+_0x8287('0x37'));var _0x2301ef;return downloadFile(_0x36b112,_0x2cd9de)[_0x8287('0x2a')](function(){_0x2301ef=path[_0x8287('0x26')](__dirname,_0x8287('0x27'),rs[_0x8287('0x36')](0x4)+_0x8287('0x28'));return convertFile(_0x2cd9de,_0x2301ef);})['then'](function(){try{fs['unlink'](_0x2cd9de);fs[_0x8287('0x2b')](_0x2301ef,_0x8287('0x2c'));}catch(_0x2a24ed){logger[_0x8287('0x14')](_0x2a24ed);}return _0x2301ef['split']('.')[0x0];});};exports[_0x8287('0x7d')]=function(_0x34c125,_0x2c268a,_0x402c90,_0x228e77){var _0x39c0b0=util[_0x8287('0x7b')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x2c268a,_0x402c90,base64Encode(_0x34c125),_0x228e77?util['format'](_0x8287('0x7e'),encodeURIComponent(_0x228e77)):_0x8287('0x7f'));return uploadFile(_0x39c0b0)['then'](function(_0x5424fe){return querystring[_0x8287('0xa')](_0x5424fe);});};exports['sestekNDA']=function(_0x2379f4,_0x234fcc){return sestek['nda'](_0x2379f4,_0x234fcc)[_0x8287('0x2a')](function(_0x52fa2a){logger[_0x8287('0x1a')](JSON['stringify'](_0x52fa2a));var _0x6ffb07={'speech':_0x52fa2a['text'],'action':_0x52fa2a[_0x8287('0x80')]?_0x52fa2a[_0x8287('0x80')][_0x8287('0x81')]:undefined,'actiondata':_0x52fa2a[_0x8287('0x80')]?_0x52fa2a[_0x8287('0x80')][_0x8287('0x82')]:undefined};if(_0x52fa2a[_0x8287('0x80')]&&_0x52fa2a[_0x8287('0x80')][_0x8287('0x83')]){return base64Decode(_0x52fa2a[_0x8287('0x80')][_0x8287('0x83')][_0x8287('0x84')],path[_0x8287('0x26')](__dirname,_0x8287('0x27'),rs[_0x8287('0x36')](0x4)+_0x8287('0x28')))[_0x8287('0x2a')](function(_0x511563){_0x6ffb07[_0x8287('0x85')]=_0x511563;return _0x6ffb07;});}return _0x6ffb07;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
+var _0x4ce0=['.wav','base64','then','chmodSync','777','split','readFileSync','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','MP3','text:synthesize','generate','.mp3','from','audioContent','writeFile','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','POST','stringify','jQ1olc','null','generic','parse\x20response\x20failed:\x0a','data','length','lang\x20\x22','\x22\x20might\x20not\x20exist','writeFileSync','goggleTTS\x20path','googleASR','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','catch','[%s]\x20%s:%s','name','message','textRequest','source','result','resolvedQuery','actionIncomplete','fulfillment','speech','score','code','metadata','isFallbackIntent','replace','SessionsClient','sessionPath','detectIntent','queryResult','diagnosticInfo','fields','end_conversation','fulfillmentText','intent','displayName','languageCode','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsLex','lex','ispeechTTS','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','http','md5','path','querystring','request-promise','sox','google-tts-api','url','parse','./aws','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','get','statusCode','error','request\x20to\x20','createWriteStream','finish','info','finish\x20download\x20file','close','unlink','download\x20error','pipe','host','\x20failed,\x20status\x20code\x20=\x20','statusMessage','end','transcode','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x4ce0,0xeb));var _0x04ce=function(_0x1f37b6,_0x5bb3db){_0x1f37b6=_0x1f37b6-0x0;var _0x4aabd6=_0x4ce0[_0x1f37b6];return _0x4aabd6;};'use strict';var apiai=require(_0x04ce('0x0'));var BPromise=require(_0x04ce('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0x04ce('0x2'));var https=require('https');var md5=require(_0x04ce('0x3'));var path=require(_0x04ce('0x4'));var querystring=require(_0x04ce('0x5'));var rp=require(_0x04ce('0x6'));var rs=require('randomstring');var sox=require(_0x04ce('0x7'));var tts=require(_0x04ce('0x8'));var urlParse=require(_0x04ce('0x9'))[_0x04ce('0xa')];var util=require('util');var aws=require(_0x04ce('0xb'));var google=require('./google');var sestek=require('./sestek');var tilde=require(_0x04ce('0xc'));var logger=require(_0x04ce('0xd'))(_0x04ce('0xe'));var ISPEECH_API=_0x04ce('0xf');function downloadFile(_0x29a723,_0x3d46ad){return new BPromise(function(_0x12dc4e,_0x921b3d){var _0x57129e=urlParse(_0x29a723);var _0x1db6a8=_0x57129e[_0x04ce('0x10')]===_0x04ce('0x11')?https:http;var _0xd9ba91={'host':_0x57129e['host'],'path':_0x57129e[_0x04ce('0x4')],'headers':{'user-agent':'WHAT_EVER'}};_0x1db6a8[_0x04ce('0x12')](_0xd9ba91,function(_0x1720e6){if(_0x1720e6[_0x04ce('0x13')]!==0xc8){logger[_0x04ce('0x14')](_0x04ce('0x15')+_0x29a723+'\x20failed,\x20status\x20code\x20=\x20'+_0x1720e6[_0x04ce('0x13')]+'\x20('+_0x1720e6['statusMessage']+')');_0x921b3d(new Error(_0x04ce('0x15')+_0x29a723+'\x20failed,\x20status\x20code\x20=\x20'+_0x1720e6[_0x04ce('0x13')]+'\x20('+_0x1720e6['statusMessage']+')'));return;}var _0x7dd292=fs[_0x04ce('0x16')](_0x3d46ad);_0x7dd292['on'](_0x04ce('0x17'),function(){logger[_0x04ce('0x18')](_0x04ce('0x19'));_0x7dd292[_0x04ce('0x1a')](_0x12dc4e);});_0x7dd292['on']('error',function(_0x1cec73){fs[_0x04ce('0x1b')](_0x3d46ad);logger[_0x04ce('0x14')](_0x04ce('0x1c'),_0x1cec73);_0x921b3d(_0x1cec73);});_0x1720e6[_0x04ce('0x1d')](_0x7dd292);})['on'](_0x04ce('0x14'),function(_0x3e3aca){logger[_0x04ce('0x14')](_0x3e3aca);_0x921b3d(_0x3e3aca);})['end']();});}function uploadFile(_0x1b2981){return new BPromise(function(_0x2b70cf,_0x3b4f8d){var _0x25cc07=urlParse(_0x1b2981);var _0x436578=_0x25cc07[_0x04ce('0x10')]===_0x04ce('0x11')?https:http;var _0x973b69={'host':_0x25cc07[_0x04ce('0x1e')],'path':_0x25cc07[_0x04ce('0x4')],'headers':{'user-agent':'WHAT_EVER'}};_0x436578[_0x04ce('0x12')](_0x973b69,function(_0x5f4d08){if(_0x5f4d08[_0x04ce('0x13')]!==0xc8){_0x3b4f8d(new Error(_0x04ce('0x15')+_0x1b2981+_0x04ce('0x1f')+_0x5f4d08[_0x04ce('0x13')]+'\x20('+_0x5f4d08[_0x04ce('0x20')]+')'));return;}var _0x114f55='';_0x5f4d08['on']('data',function(_0x20f83d){_0x114f55+=_0x20f83d;});_0x5f4d08['on'](_0x04ce('0x21'),function(){_0x2b70cf(_0x114f55);});})['on'](_0x04ce('0x14'),function(_0x4df2e9){_0x3b4f8d(_0x4df2e9);})[_0x04ce('0x21')]();});}function convertFile(_0x3ae739,_0x47479d){return new BPromise(function(_0x4580b4,_0x592236){var _0xb1c556=sox[_0x04ce('0x22')](_0x3ae739,_0x47479d,{'sampleRate':0x1f40,'format':_0x04ce('0x23'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0xb1c556['on'](_0x04ce('0x14'),function(_0x478792){logger[_0x04ce('0x14')](_0x04ce('0x24'),_0x478792);_0x592236(_0x478792);});_0xb1c556['on']('end',function(){logger[_0x04ce('0x18')](_0x04ce('0x25'));_0x4580b4();});_0xb1c556[_0x04ce('0x26')]();});}function base64Decode(_0x5dde0f,_0x1d9c7c){var _0x52f317=path[_0x04ce('0x27')](__dirname,_0x04ce('0x28'),rs['generate'](0x4)+_0x04ce('0x29'));fs['writeFileSync'](_0x52f317,_0x5dde0f,_0x04ce('0x2a'));return convertFile(_0x52f317,_0x1d9c7c)[_0x04ce('0x2b')](function(){try{fs['unlink'](_0x52f317);fs[_0x04ce('0x2c')](_0x1d9c7c,_0x04ce('0x2d'));}catch(_0x24dd33){logger['error'](_0x24dd33);}return _0x1d9c7c[_0x04ce('0x2e')]('.')[0x0];});}function base64Encode(_0x5aa2ae){var _0x162975=fs[_0x04ce('0x2f')](_0x5aa2ae);return new Buffer(_0x162975)['toString']('base64');}exports['googleCloudTTS']=function(_0x4f7b1f,_0x212818,_0x6439b0,_0x3dcf71,_0x43d090,_0x2e789e){var _0x1bd31f,_0x1b442d;var _0x11e9e6=_0x04ce('0x30');var _0x9ee3b6=_0x04ce('0x31')+_0x4f7b1f;var _0x43a9e7={};if(_0x212818===_0x04ce('0x32')){_0x43a9e7[_0x04ce('0x33')]={'ssml':_0x6439b0};}else{_0x43a9e7[_0x04ce('0x33')]={'text':_0x6439b0};};_0x43a9e7[_0x04ce('0x34')]={'languageCode':_0x3dcf71,'ssmlGender':_0x43d090};_0x43a9e7['audioConfig']={'audioEncoding':_0x04ce('0x35'),'sampleRateHertz':0x1f40};var _0x3d7a8a={'url':_0x11e9e6+_0x04ce('0x36')+_0x9ee3b6,'method':'POST','json':!![],'body':_0x43a9e7};return rp(_0x3d7a8a)[_0x04ce('0x2b')](function(_0x44bcfc){return new BPromise(function(_0x46f0ea,_0x187a66){_0x1bd31f=path['resolve'](__dirname,_0x04ce('0x28'),rs[_0x04ce('0x37')](0x4)+_0x04ce('0x38'));var _0x150498=Buffer[_0x04ce('0x39')](_0x44bcfc[_0x04ce('0x3a')],_0x04ce('0x2a'));return fs[_0x04ce('0x3b')](_0x1bd31f,_0x150498,function(_0x55378a){_0x187a66(_0x55378a);},function(_0x2f7166){fs['chmodSync'](_0x1bd31f,'777');_0x46f0ea(_0x2f7166);});});})[_0x04ce('0x2b')](function(_0x130b9d){_0x1b442d=path['resolve'](__dirname,_0x04ce('0x28'),rs['generate'](0x4)+_0x04ce('0x29'));return convertFile(_0x1bd31f,_0x1b442d);})[_0x04ce('0x2b')](function(){try{fs[_0x04ce('0x1b')](_0x1bd31f);fs[_0x04ce('0x2c')](_0x1b442d,_0x04ce('0x2d'));}catch(_0x128e62){logger[_0x04ce('0x14')](_0x128e62);}logger[_0x04ce('0x18')](_0x04ce('0x3c'),_0x1b442d[_0x04ce('0x2e')]('.')[0x0]);return _0x1b442d[_0x04ce('0x2e')]('.')[0x0];});};exports[_0x04ce('0x3d')]=function(_0x4dccb4,_0x1572d5){var _0x390ad0=_0x04ce('0x3e');var _0x47f331,_0x20efd8;var _0x22740;var _0x2a1e04={'encoding':_0x04ce('0x3f'),'method':_0x04ce('0x40'),'timeout':0x2710,'url':_0x390ad0,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':'f.req='+encodeURIComponent(JSON[_0x04ce('0x41')]([[[_0x04ce('0x42'),JSON[_0x04ce('0x41')]([_0x4dccb4,_0x1572d5||'en',![],_0x04ce('0x43')]),null,_0x04ce('0x44')]]]))};return rp(_0x2a1e04)['then'](function(_0x44bfaf){try{_0x22740=eval(_0x44bfaf['slice'](0x5))[0x0][0x2];}catch(_0xf9b60b){throw new Error(_0x04ce('0x45')+_0x44bfaf[_0x04ce('0x46')]);}if(!_0x22740){if(_0x4dccb4[_0x04ce('0x47')]>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x04ce('0x48')+_0x1572d5+_0x04ce('0x49'));}}try{_0x22740=eval(_0x22740)[0x0];}catch(_0x54664a){throw new Error('parse\x20response\x20failed:\x0a'+res['data']);}const _0x2b2099=_0x22740;_0x47f331=path[_0x04ce('0x27')](__dirname,_0x04ce('0x28'),rs[_0x04ce('0x37')](0x4)+_0x04ce('0x38'));fs[_0x04ce('0x4a')](_0x47f331,_0x22740,{'encoding':_0x04ce('0x2a')});_0x20efd8=path[_0x04ce('0x27')](__dirname,_0x04ce('0x28'),rs[_0x04ce('0x37')](0x4)+'.wav');return convertFile(_0x47f331,_0x20efd8);})[_0x04ce('0x2b')](function(){try{fs[_0x04ce('0x1b')](_0x47f331);fs[_0x04ce('0x2c')](_0x20efd8,_0x04ce('0x2d'));}catch(_0x3bad45){logger[_0x04ce('0x14')](_0x3bad45);}logger[_0x04ce('0x18')](_0x04ce('0x4b'),_0x20efd8[_0x04ce('0x2e')]('.')[0x0]);return _0x20efd8['split']('.')[0x0];});};exports[_0x04ce('0x4c')]=function(_0x43f574,_0x5cf51a,_0x3cad04){return google[_0x04ce('0x4d')](_0x43f574,_0x5cf51a,_0x3cad04)[_0x04ce('0x2b')](function(_0x2c660a){logger[_0x04ce('0x18')](_0x2c660a[_0x04ce('0x4e')]);return rp(_0x2c660a);})['then'](function(_0x59fb16){var _0x5538bb='';var _0x348106=0x0;try{fs[_0x04ce('0x1b')](_0x43f574);}catch(_0x5220ca){logger[_0x04ce('0x14')](_0x5220ca);}if(_0x59fb16&&_0x59fb16[_0x04ce('0x4f')]){_0x5538bb=_0x59fb16[_0x04ce('0x4f')][_0x04ce('0x50')](function(_0x213e88){return _0x213e88&&_0x213e88[_0x04ce('0x51')][0x0]&&_0x213e88[_0x04ce('0x51')][0x0][_0x04ce('0x52')]?_0x213e88['alternatives'][0x0][_0x04ce('0x52')]:'';})[_0x04ce('0x53')]('\x0a');_0x348106=_0x59fb16['results'][_0x04ce('0x50')](function(_0x2386dd){return _0x2386dd&&_0x2386dd[_0x04ce('0x51')][0x0]&&_0x2386dd[_0x04ce('0x51')][0x0][_0x04ce('0x54')]?_0x2386dd[_0x04ce('0x51')][0x0][_0x04ce('0x54')]:0x0;})['join']('\x0a');}logger[_0x04ce('0x18')](_0x04ce('0x55'),_0x5538bb);logger[_0x04ce('0x18')]('googleASR\x20confidence',_0x348106);return{'transcript':_0x5538bb,'confidence':_0x348106};})[_0x04ce('0x56')](function(_0x44a833){logger[_0x04ce('0x14')](_0x04ce('0x57'),_0x44a833[_0x04ce('0x13')],_0x44a833[_0x04ce('0x58')],_0x44a833[_0x04ce('0x59')]);});};exports['googleDialogflow']=function(_0x1025ab,_0x262806,_0x4765db,_0x38dbf2){var _0xe16d3=apiai(_0x262806,{'language':_0x38dbf2||'en'});return _0xe16d3[_0x04ce('0x5a')](_0x4765db,{'sessionId':md5(_0x1025ab)})[_0x04ce('0x2b')](function(_0x1dd613){logger[_0x04ce('0x18')](JSON['stringify'](_0x1dd613));return{'source':_0x1dd613['result'][_0x04ce('0x5b')],'resolvedQuery':_0x1dd613[_0x04ce('0x5c')][_0x04ce('0x5d')],'action':_0x1dd613['result']['action'],'actionIncomplete':_0x1dd613[_0x04ce('0x5c')][_0x04ce('0x5e')],'speech':_0x1dd613[_0x04ce('0x5c')][_0x04ce('0x5f')][_0x04ce('0x60')],'score':_0x1dd613[_0x04ce('0x5c')][_0x04ce('0x61')],'statusCode':_0x1dd613['status'][_0x04ce('0x62')],'endConversation':_0x1dd613[_0x04ce('0x5c')][_0x04ce('0x63')]['endConversation']||![],'isFallbackIntent':_0x1dd613[_0x04ce('0x5c')][_0x04ce('0x63')][_0x04ce('0x64')]};});};exports['googleDialogflowV2']=function(_0x221f61,_0xbbeea4,_0x5d2378,_0x27ce72,_0x130030,_0x1c33e5){var _0x367dd4=_0x27ce72[_0x04ce('0x65')](/\\n/g,'\x0a');var _0xc82899={'credentials':{'private_key':_0x367dd4,'client_email':_0x5d2378}};var _0x365e54=new dialogflow[(_0x04ce('0x66'))](_0xc82899);var _0xcb0d3f=_0x365e54[_0x04ce('0x67')](_0xbbeea4,md5(_0x221f61));var _0x3e1ef8={'session':_0xcb0d3f,'queryInput':{'text':{'text':_0x130030,'languageCode':_0x1c33e5}}};return _0x365e54[_0x04ce('0x68')](_0x3e1ef8)['then'](function(_0x3f130d){if(_0x3f130d&&_0x3f130d[_0x04ce('0x47')]){logger[_0x04ce('0x18')]('Dialogflow\x20V2\x20response:',JSON[_0x04ce('0x41')](_0x3f130d));var _0x18502d=_0x3f130d[0x0];if(_0x18502d){var _0x25eecf={'action':_0x18502d[_0x04ce('0x69')]['action'],'allRequiredParamsPresent':_0x18502d['queryResult']['allRequiredParamsPresent'],'endConversation':_0x18502d[_0x04ce('0x69')][_0x04ce('0x6a')]&&_0x18502d[_0x04ce('0x69')][_0x04ce('0x6a')][_0x04ce('0x6b')]?_0x18502d['queryResult'][_0x04ce('0x6a')][_0x04ce('0x6b')][_0x04ce('0x6c')]['boolValue']:![],'fulfillmentText':_0x18502d[_0x04ce('0x69')][_0x04ce('0x6d')],'intentName':_0x18502d[_0x04ce('0x69')][_0x04ce('0x6e')][_0x04ce('0x58')],'intentDisplayName':_0x18502d[_0x04ce('0x69')]['intent'][_0x04ce('0x6f')],'isFallbackIntent':_0x18502d[_0x04ce('0x69')][_0x04ce('0x6e')]['isFallback'],'languageCode':_0x18502d[_0x04ce('0x69')][_0x04ce('0x70')],'queryText':_0x18502d[_0x04ce('0x69')][_0x04ce('0x71')],'responseId':_0x18502d[_0x04ce('0x72')],'score':_0x18502d[_0x04ce('0x69')][_0x04ce('0x73')],'speech':_0x18502d['queryResult'][_0x04ce('0x6d')],'providerResponse':JSON[_0x04ce('0x41')](_0x3f130d)};return _0x25eecf;}}});};exports[_0x04ce('0x74')]=function(_0x44373e,_0x430551,_0x50cedf,_0x461d4b){return tilde[_0x04ce('0x4d')](_0x44373e,_0x430551,_0x50cedf,_0x461d4b)[_0x04ce('0x2b')](function(_0x5ce95f){try{fs['unlink'](_0x44373e);}catch(_0x1ba7b3){logger[_0x04ce('0x14')](_0x1ba7b3);}logger['info'](_0x04ce('0x75'),_0x5ce95f[_0x04ce('0x52')]);logger[_0x04ce('0x18')](_0x04ce('0x76'),_0x5ce95f[_0x04ce('0x54')]);return _0x5ce95f;});};exports['awsPolly']=function(_0x384f84,_0x2b69c3,_0x23e476,_0x4ff36b,_0x406036,_0x3d75f3){var _0x144f48=path[_0x04ce('0x27')](__dirname,'tmp',rs['generate'](0x4)+_0x04ce('0x38'));var _0x346d9b;return aws['polly'](_0x384f84,_0x2b69c3,_0x23e476,_0x4ff36b,_0x406036,_0x3d75f3,_0x144f48)[_0x04ce('0x2b')](function(){_0x346d9b=path[_0x04ce('0x27')](__dirname,'tmp',rs[_0x04ce('0x37')](0x4)+_0x04ce('0x29'));return convertFile(_0x144f48,_0x346d9b);})[_0x04ce('0x2b')](function(){try{fs[_0x04ce('0x1b')](_0x144f48);fs[_0x04ce('0x2c')](_0x346d9b,_0x04ce('0x2d'));}catch(_0x577aea){logger[_0x04ce('0x14')](_0x577aea);}return _0x346d9b[_0x04ce('0x2e')]('.')[0x0];});};exports[_0x04ce('0x77')]=function(_0x4a8c7c,_0x10aef9,_0x3663c6,_0x107a97,_0x4b1898,_0x4c5a3){return aws[_0x04ce('0x78')](_0x4a8c7c,_0x10aef9,_0x3663c6,_0x107a97,_0x4b1898,_0x4c5a3)[_0x04ce('0x2b')](function(_0x9c3702){logger[_0x04ce('0x18')](JSON['stringify'](_0x9c3702));return _0x9c3702;});};exports[_0x04ce('0x79')]=function(_0x4ca577,_0x599d38,_0x2fe000,_0x35d3a2){var _0x14aaf9=util['format'](_0x04ce('0x7a'),ISPEECH_API,_0x4ca577,encodeURIComponent(_0x599d38),_0x2fe000,_0x35d3a2);var _0x66b23e=path['resolve'](__dirname,'tmp',rs[_0x04ce('0x37')](0x4)+'.mp3');var _0x28d470;return downloadFile(_0x14aaf9,_0x66b23e)['then'](function(){_0x28d470=path[_0x04ce('0x27')](__dirname,_0x04ce('0x28'),rs[_0x04ce('0x37')](0x4)+_0x04ce('0x29'));return convertFile(_0x66b23e,_0x28d470);})[_0x04ce('0x2b')](function(){try{fs[_0x04ce('0x1b')](_0x66b23e);fs['chmodSync'](_0x28d470,_0x04ce('0x2d'));}catch(_0x3b101b){logger[_0x04ce('0x14')](_0x3b101b);}return _0x28d470['split']('.')[0x0];});};exports[_0x04ce('0x7b')]=function(_0x57e1c0,_0x3484d9,_0x382398,_0x3b6922){var _0x18ec78=util[_0x04ce('0x7c')](_0x04ce('0x7d'),ISPEECH_API,_0x3484d9,_0x382398,base64Encode(_0x57e1c0),_0x3b6922?util[_0x04ce('0x7c')](_0x04ce('0x7e'),encodeURIComponent(_0x3b6922)):_0x04ce('0x7f'));return uploadFile(_0x18ec78)['then'](function(_0xe7bb12){return querystring['parse'](_0xe7bb12);});};exports[_0x04ce('0x80')]=function(_0x567cc8,_0x53e789){return sestek[_0x04ce('0x81')](_0x567cc8,_0x53e789)[_0x04ce('0x2b')](function(_0x3a987a){logger['info'](JSON[_0x04ce('0x41')](_0x3a987a));var _0x150b02={'speech':_0x3a987a[_0x04ce('0x82')],'action':_0x3a987a['channelData']?_0x3a987a[_0x04ce('0x83')][_0x04ce('0x84')]:undefined,'actiondata':_0x3a987a['channelData']?_0x3a987a['channelData'][_0x04ce('0x85')]:undefined};if(_0x3a987a[_0x04ce('0x83')]&&_0x3a987a['channelData'][_0x04ce('0x86')]){return base64Decode(_0x3a987a[_0x04ce('0x83')][_0x04ce('0x86')][_0x04ce('0x87')],path[_0x04ce('0x27')](__dirname,_0x04ce('0x28'),rs[_0x04ce('0x37')](0x4)+_0x04ce('0x29')))[_0x04ce('0x2b')](function(_0x1d401a){_0x150b02[_0x04ce('0x88')]=_0x1d401a;return _0x150b02;});}return _0x150b02;});};exports[_0x04ce('0x89')]=function(){return __dirname;};
\ No newline at end of file
index 4aaecb7..fb745dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2e2=['./nda','exports'];(function(_0x4471f5,_0x4c8ac8){var _0x5a7082=function(_0x299d14){while(--_0x299d14){_0x4471f5['push'](_0x4471f5['shift']());}};_0x5a7082(++_0x4c8ac8);}(_0xe2e2,0x1d0));var _0x2e2e=function(_0x28dc21,_0x278124){_0x28dc21=_0x28dc21-0x0;var _0x3bc26e=_0xe2e2[_0x28dc21];return _0x3bc26e;};var nda=require(_0x2e2e('0x0'));module[_0x2e2e('0x1')]={'nda':nda};
\ No newline at end of file
+var _0x8c25=['./nda','exports'];(function(_0x41c577,_0x47ead4){var _0x24a16a=function(_0x34eceb){while(--_0x34eceb){_0x41c577['push'](_0x41c577['shift']());}};_0x24a16a(++_0x47ead4);}(_0x8c25,0x15e));var _0x58c2=function(_0x1aa3c9,_0x36e605){_0x1aa3c9=_0x1aa3c9-0x0;var _0x1be779=_0x8c25[_0x1aa3c9];return _0x1be779;};var nda=require(_0x58c2('0x0'));module[_0x58c2('0x1')]={'nda':nda};
\ No newline at end of file
index 00eb098..6da90f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe205=['info','stringify','request-promise','url','../../../../../config/logger','agi','exports','POST','ndauth_url','/token','password','username','resolve','ndassistant_url','ndaactivity_type','message','Nda','uniqueid','calleridname','dnid','extension','text','Bearer\x20','access_token','body','channelData','ProjectName','ndagenerate_audio','audio/wav','custom_action','CustomAction','custom_action_data','CustomActionData'];(function(_0x41e293,_0x2a9a13){var _0x8bd5c5=function(_0x57ab70){while(--_0x57ab70){_0x41e293['push'](_0x41e293['shift']());}};_0x8bd5c5(++_0x2a9a13);}(_0xe205,0xa7));var _0x5e20=function(_0x59a294,_0x17dde5){_0x59a294=_0x59a294-0x0;var _0x175f9b=_0xe205[_0x59a294];return _0x175f9b;};'use strict';var rp=require(_0x5e20('0x0'));var url=require(_0x5e20('0x1'));var logger=require(_0x5e20('0x2'))(_0x5e20('0x3'));module[_0x5e20('0x4')]=function(_0x1620fb,_0x13bace){var _0x30f606={'method':_0x5e20('0x5'),'uri':url['resolve'](_0x13bace[_0x5e20('0x6')],_0x5e20('0x7')),'form':{'grant_type':_0x5e20('0x8'),'username':_0x13bace[_0x5e20('0x9')],'password':_0x13bace['password']},'json':!![]};return rp(_0x30f606)['then'](function(_0x3a382f){var _0x4c9332={'method':'POST','uri':url[_0x5e20('0xa')](_0x13bace[_0x5e20('0xb')],'/api/NaturalDialogAssistant/v1/Run'),'body':{'type':_0x13bace[_0x5e20('0xc')]||_0x5e20('0xd'),'channelId':_0x5e20('0xe'),'conversation':{'id':_0x1620fb[_0x5e20('0xf')]},'from':{'id':_0x1620fb['callerid'],'name':_0x1620fb[_0x5e20('0x10')]},'recipient':{'id':_0x1620fb[_0x5e20('0x11')],'name':_0x1620fb[_0x5e20('0x12')]},'text':_0x13bace[_0x5e20('0x13')],'channelData':{}},'headers':{'Authorization':_0x5e20('0x14')+_0x3a382f[_0x5e20('0x15')]},'json':!![]};if(_0x13bace['project']){_0x4c9332[_0x5e20('0x16')][_0x5e20('0x17')][_0x5e20('0x18')]=_0x13bace['project'];}if(_0x13bace[_0x5e20('0x19')]=='1'){_0x4c9332['body'][_0x5e20('0x17')]['AudioOutputSettings']={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x5e20('0x1a')};}if(_0x13bace[_0x5e20('0x1b')]){_0x4c9332[_0x5e20('0x16')][_0x5e20('0x17')][_0x5e20('0x1c')]=_0x13bace['custom_action'];if(_0x13bace[_0x5e20('0x1d')]){_0x4c9332[_0x5e20('0x16')][_0x5e20('0x17')][_0x5e20('0x1e')]=_0x13bace[_0x5e20('0x1d')];}}logger[_0x5e20('0x1f')](JSON[_0x5e20('0x20')](_0x4c9332));return rp(_0x4c9332);});};
\ No newline at end of file
+var _0xbbfa=['ndauth_url','/token','password','username','ndaactivity_type','Nda','callerid','extension','text','Bearer\x20','access_token','project','body','channelData','ProjectName','AudioOutputSettings','custom_action','CustomAction','custom_action_data','CustomActionData','stringify','request-promise','../../../../../config/logger','exports','POST','resolve'];(function(_0x2c985e,_0x5600cf){var _0x37f34d=function(_0x525c0f){while(--_0x525c0f){_0x2c985e['push'](_0x2c985e['shift']());}};_0x37f34d(++_0x5600cf);}(_0xbbfa,0x1e9));var _0xabbf=function(_0x152136,_0x4f14f1){_0x152136=_0x152136-0x0;var _0x20df44=_0xbbfa[_0x152136];return _0x20df44;};'use strict';var rp=require(_0xabbf('0x0'));var url=require('url');var logger=require(_0xabbf('0x1'))('agi');module[_0xabbf('0x2')]=function(_0x1ba4c4,_0x33a780){var _0x1b0dee={'method':_0xabbf('0x3'),'uri':url[_0xabbf('0x4')](_0x33a780[_0xabbf('0x5')],_0xabbf('0x6')),'form':{'grant_type':_0xabbf('0x7'),'username':_0x33a780[_0xabbf('0x8')],'password':_0x33a780[_0xabbf('0x7')]},'json':!![]};return rp(_0x1b0dee)['then'](function(_0x5b471b){var _0x536a4c={'method':_0xabbf('0x3'),'uri':url[_0xabbf('0x4')](_0x33a780['ndassistant_url'],'/api/NaturalDialogAssistant/v1/Run'),'body':{'type':_0x33a780[_0xabbf('0x9')]||'message','channelId':_0xabbf('0xa'),'conversation':{'id':_0x1ba4c4['uniqueid']},'from':{'id':_0x1ba4c4[_0xabbf('0xb')],'name':_0x1ba4c4['calleridname']},'recipient':{'id':_0x1ba4c4['dnid'],'name':_0x1ba4c4[_0xabbf('0xc')]},'text':_0x33a780[_0xabbf('0xd')],'channelData':{}},'headers':{'Authorization':_0xabbf('0xe')+_0x5b471b[_0xabbf('0xf')]},'json':!![]};if(_0x33a780[_0xabbf('0x10')]){_0x536a4c[_0xabbf('0x11')][_0xabbf('0x12')][_0xabbf('0x13')]=_0x33a780[_0xabbf('0x10')];}if(_0x33a780['ndagenerate_audio']=='1'){_0x536a4c[_0xabbf('0x11')]['channelData'][_0xabbf('0x14')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':'audio/wav'};}if(_0x33a780[_0xabbf('0x15')]){_0x536a4c[_0xabbf('0x11')][_0xabbf('0x12')][_0xabbf('0x16')]=_0x33a780['custom_action'];if(_0x33a780[_0xabbf('0x17')]){_0x536a4c[_0xabbf('0x11')][_0xabbf('0x12')][_0xabbf('0x18')]=_0x33a780[_0xabbf('0x17')];}}logger['info'](JSON[_0xabbf('0x19')](_0x536a4c));return rp(_0x536a4c);});};
\ No newline at end of file
index 24970ba..ed5368a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3de=['exports','./lib/api'];(function(_0x47a7d0,_0x4e182d){var _0xb9bd08=function(_0x588ee2){while(--_0x588ee2){_0x47a7d0['push'](_0x47a7d0['shift']());}};_0xb9bd08(++_0x4e182d);}(_0xb3de,0x101));var _0xeb3d=function(_0x5f0a2a,_0x1bbf34){_0x5f0a2a=_0x5f0a2a-0x0;var _0x440970=_0xb3de[_0x5f0a2a];return _0x440970;};'use strict';var asr=require(_0xeb3d('0x0'));module[_0xeb3d('0x1')]=function(_0x389b63,_0x18e82a,_0x1d039a,_0x207397){return asr(_0x389b63,_0x18e82a,_0x1d039a,_0x207397);};
\ No newline at end of file
+var _0x826a=['exports','./lib/api'];(function(_0x428fe3,_0x273213){var _0xca9a2=function(_0xdee0ef){while(--_0xdee0ef){_0x428fe3['push'](_0x428fe3['shift']());}};_0xca9a2(++_0x273213);}(_0x826a,0x15b));var _0xa826=function(_0x417207,_0x1c2363){_0x417207=_0x417207-0x0;var _0x3e5578=_0x826a[_0x417207];return _0x3e5578;};'use strict';var asr=require(_0xa826('0x0'));module[_0xa826('0x1')]=function(_0x394248,_0x15851b,_0x4af12f,_0x59429b){return asr(_0x394248,_0x15851b,_0x4af12f,_0x59429b);};
\ No newline at end of file
index 9984fa3..e27bcb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5743=['final','hypotheses','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.','error','Tilde\x20ASR\x20parse\x20error','Error\x20Tilde\x20ASR\x20socket','isNil','open','message','bluebird','lodash','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','hex','info','Open\x20Tilde\x20ASR\x20socket','unix','stringify','createReadStream','data','send','close','EOS','terminate','status','result'];(function(_0x36d6f2,_0x533aaa){var _0x2403fa=function(_0x5e3ee5){while(--_0x5e3ee5){_0x36d6f2['push'](_0x36d6f2['shift']());}};_0x2403fa(++_0x533aaa);}(_0x5743,0x16d));var _0x3574=function(_0x2ba82d,_0x243e01){_0x2ba82d=_0x2ba82d-0x0;var _0x12a34b=_0x5743[_0x2ba82d];return _0x12a34b;};'use strict';var BPromise=require(_0x3574('0x0'));var _=require(_0x3574('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x3574('0x2'));var crypto=require(_0x3574('0x3'));var logger=require(_0x3574('0x4'))(_0x3574('0x5'));module['exports']=function(_0xe71901,_0x21e8a8,_0x588f6b,_0x56cf7e){return new BPromise(function(_0x58fe10,_0x818bc6){logger['info'](_0x3574('0x6'),_0x56cf7e||_0x3574('0x7'));var _0x382754=new WebSocket(_0x56cf7e||_0x3574('0x7'),{'perMessageDeflate':![]});var _0x41ce95='';var _0x3ef78e='0';var _0x31b607='1';var _0x4e194c=_0x3574('0x8');function _0x534b86(_0x27256a){var _0x3ef30d=crypto[_0x3574('0x9')](_0x3574('0xa'));_0x3ef30d[_0x3574('0xb')](_0x27256a);return _0x3ef30d['digest'](_0x3574('0xc'));}function _0x5c46b2(){try{logger[_0x3574('0xd')](_0x3574('0xe'));var _0x8bc248=moment()[_0x3574('0xf')]();var _0x785835=_0x534b86(_0x8bc248+_0x21e8a8+_0x588f6b);_0x382754['send'](JSON[_0x3574('0x10')]({'appID':_0x21e8a8,'timestamp':_0x8bc248,'appKey':_0x785835}));var _0x5c5839=fs[_0x3574('0x11')](_0xe71901);_0x5c5839['on'](_0x3574('0x12'),function(_0xc6162a){_0x382754[_0x3574('0x13')](_0xc6162a);});_0x5c5839['on'](_0x3574('0x14'),function(){_0x382754[_0x3574('0x13')](_0x3574('0x15'));});}catch(_0x4a47f8){logger['error']('Tilde\x20ASR\x20send\x20error',JSON[_0x3574('0x10')](_0x4a47f8));_0x382754[_0x3574('0x16')]();}}function _0x48d16d(_0x217409){try{if(_0x217409){var _0x560d62=JSON['parse'](_0x217409);switch(_0x560d62[_0x3574('0x17')]){case 0x0:if(_0x560d62['result']){if(_0x560d62[_0x3574('0x18')][_0x3574('0x19')]){logger[_0x3574('0xd')]('Tilde\x20ASR\x20hypoteses',JSON[_0x3574('0x10')](_0x560d62[_0x3574('0x18')][_0x3574('0x1a')]));_0x41ce95=_0x560d62[_0x3574('0x18')][_0x3574('0x1a')][0x0]['transcript'];_0x3ef78e=_0x560d62[_0x3574('0x18')][_0x3574('0x1a')][0x0][_0x3574('0x1b')];_0x31b607='0';_0x4e194c=_0x3574('0x1c');_0x382754['terminate']();}}break;case 0x1:logger[_0x3574('0xd')]('No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech');_0x31b607='1';_0x4e194c=_0x3574('0x8');break;case 0x2:logger[_0x3574('0xd')](_0x3574('0x1d'));_0x31b607='2';_0x4e194c=_0x3574('0x1d');break;case 0x9:logger[_0x3574('0xd')]('Not\x20available.\x20Max\x20load\x20limit\x20reached.');_0x31b607='9';_0x4e194c=_0x3574('0x1e');break;case 0xa:logger[_0x3574('0xd')]('Authentication\x20failed.');_0x31b607='10';_0x4e194c=_0x3574('0x1f');break;case 0xb:logger[_0x3574('0xd')](_0x3574('0x20'));_0x31b607='11';_0x4e194c=_0x3574('0x20');}}}catch(_0x29f783){logger[_0x3574('0x21')](_0x3574('0x22'),JSON['stringify'](_0x29f783));_0x382754[_0x3574('0x16')]();}}function _0x291720(){logger['info']('Close\x20Tilde\x20ASR\x20socket');_0x58fe10({'transcript':_0x41ce95,'confidence':_0x3ef78e,'status':_0x31b607,'status_message':_0x4e194c});}function _0x3bf20e(_0x1af4d3){logger[_0x3574('0x21')](_0x3574('0x23'));if(!_[_0x3574('0x24')](_0x1af4d3)){logger[_0x3574('0x21')](_['isObject'](_0x1af4d3)?JSON['stringify'](_0x1af4d3):_0x1af4d3);}}_0x382754['on'](_0x3574('0x25'),_0x5c46b2);_0x382754['on'](_0x3574('0x26'),_0x48d16d);_0x382754['on'](_0x3574('0x14'),_0x291720);_0x382754['on']('error',_0x3bf20e);});};
\ No newline at end of file
+var _0x4b39=['likelihood','Success.','terminate','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','open','bluebird','crypto','agi','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','createHash','sha1','update','hex','Open\x20Tilde\x20ASR\x20socket','send','data','close','EOS','error','Tilde\x20ASR\x20send\x20error','stringify','parse','status','result','hypotheses','transcript'];(function(_0x38c4ea,_0x42e383){var _0x4d7c2a=function(_0x4c01ac){while(--_0x4c01ac){_0x38c4ea['push'](_0x38c4ea['shift']());}};_0x4d7c2a(++_0x42e383);}(_0x4b39,0xaf));var _0x94b3=function(_0x30b10a,_0x506695){_0x30b10a=_0x30b10a-0x0;var _0x160fd3=_0x4b39[_0x30b10a];return _0x160fd3;};'use strict';var BPromise=require(_0x94b3('0x0'));var _=require('lodash');var fs=require('fs');var WebSocket=require('ws');var moment=require('moment');var crypto=require(_0x94b3('0x1'));var logger=require('../../../../../../config/logger')(_0x94b3('0x2'));module['exports']=function(_0x3c4bfb,_0x3e067d,_0x4273e9,_0x28fc6e){return new BPromise(function(_0x11413a,_0x45d640){logger[_0x94b3('0x3')](_0x94b3('0x4'),_0x28fc6e||_0x94b3('0x5'));var _0x52818e=new WebSocket(_0x28fc6e||_0x94b3('0x5'),{'perMessageDeflate':![]});var _0x91441b='';var _0x1031c6='0';var _0x5e276c='1';var _0x1f0d66='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';function _0x261530(_0x189863){var _0x2da22c=crypto[_0x94b3('0x6')](_0x94b3('0x7'));_0x2da22c[_0x94b3('0x8')](_0x189863);return _0x2da22c['digest'](_0x94b3('0x9'));}function _0xd38031(){try{logger[_0x94b3('0x3')](_0x94b3('0xa'));var _0x456bc1=moment()['unix']();var _0x41ff82=_0x261530(_0x456bc1+_0x3e067d+_0x4273e9);_0x52818e[_0x94b3('0xb')](JSON['stringify']({'appID':_0x3e067d,'timestamp':_0x456bc1,'appKey':_0x41ff82}));var _0x41aca0=fs['createReadStream'](_0x3c4bfb);_0x41aca0['on'](_0x94b3('0xc'),function(_0x51c31c){_0x52818e[_0x94b3('0xb')](_0x51c31c);});_0x41aca0['on'](_0x94b3('0xd'),function(){_0x52818e[_0x94b3('0xb')](_0x94b3('0xe'));});}catch(_0x22a582){logger[_0x94b3('0xf')](_0x94b3('0x10'),JSON[_0x94b3('0x11')](_0x22a582));_0x52818e['terminate']();}}function _0x582da4(_0x49cc14){try{if(_0x49cc14){var _0x5525ca=JSON[_0x94b3('0x12')](_0x49cc14);switch(_0x5525ca[_0x94b3('0x13')]){case 0x0:if(_0x5525ca[_0x94b3('0x14')]){if(_0x5525ca['result']['final']){logger[_0x94b3('0x3')]('Tilde\x20ASR\x20hypoteses',JSON[_0x94b3('0x11')](_0x5525ca[_0x94b3('0x14')][_0x94b3('0x15')]));_0x91441b=_0x5525ca[_0x94b3('0x14')][_0x94b3('0x15')][0x0][_0x94b3('0x16')];_0x1031c6=_0x5525ca[_0x94b3('0x14')][_0x94b3('0x15')][0x0][_0x94b3('0x17')];_0x5e276c='0';_0x1f0d66=_0x94b3('0x18');_0x52818e[_0x94b3('0x19')]();}}break;case 0x1:logger[_0x94b3('0x3')](_0x94b3('0x1a'));_0x5e276c='1';_0x1f0d66=_0x94b3('0x1a');break;case 0x2:logger[_0x94b3('0x3')](_0x94b3('0x1b'));_0x5e276c='2';_0x1f0d66=_0x94b3('0x1b');break;case 0x9:logger['info'](_0x94b3('0x1c'));_0x5e276c='9';_0x1f0d66=_0x94b3('0x1c');break;case 0xa:logger[_0x94b3('0x3')]('Authentication\x20failed.');_0x5e276c='10';_0x1f0d66=_0x94b3('0x1d');break;case 0xb:logger[_0x94b3('0x3')]('All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.');_0x5e276c='11';_0x1f0d66='All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.';}}}catch(_0xa225e2){logger['error']('Tilde\x20ASR\x20parse\x20error',JSON[_0x94b3('0x11')](_0xa225e2));_0x52818e[_0x94b3('0x19')]();}}function _0x1e24ab(){logger[_0x94b3('0x3')](_0x94b3('0x1e'));_0x11413a({'transcript':_0x91441b,'confidence':_0x1031c6,'status':_0x5e276c,'status_message':_0x1f0d66});}function _0x4cdb1f(_0x502af9){logger[_0x94b3('0xf')](_0x94b3('0x1f'));if(!_['isNil'](_0x502af9)){logger[_0x94b3('0xf')](_['isObject'](_0x502af9)?JSON['stringify'](_0x502af9):_0x502af9);}}_0x52818e['on'](_0x94b3('0x20'),_0xd38031);_0x52818e['on']('message',_0x582da4);_0x52818e['on']('close',_0x1e24ab);_0x52818e['on']('error',_0x4cdb1f);});};
\ No newline at end of file
index 4c0d4ea..d6cec5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf33=['exports','./asr'];(function(_0x3b2a6d,_0x4069fb){var _0x30d5ac=function(_0x1725ed){while(--_0x1725ed){_0x3b2a6d['push'](_0x3b2a6d['shift']());}};_0x30d5ac(++_0x4069fb);}(_0xcf33,0xc7));var _0x3cf3=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0xcf33[_0x413feb];return _0x40ee88;};var asr=require(_0x3cf3('0x0'));module[_0x3cf3('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x942e=['./asr'];(function(_0xd3c939,_0x356e38){var _0x2cb033=function(_0x5cb2fc){while(--_0x5cb2fc){_0xd3c939['push'](_0xd3c939['shift']());}};_0x2cb033(++_0x356e38);}(_0x942e,0x147));var _0xe942=function(_0x19f5b1,_0x2b3b9a){_0x19f5b1=_0x19f5b1-0x0;var _0x5a622a=_0x942e[_0x19f5b1];return _0x5a622a;};var asr=require(_0xe942('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
index f8ebcf3..2256666 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4b8=['util','net','events','EventEmitter','./error','./channel','127.0.0.1','call','error','E_AGI_ARGUMENT_PORT','createServer','listening','connection','getConnections','emit','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','E_AGI_SERVER_MAXCONNECTION','destroy','ready','code','close','E_AGI_SERVER_CLOSE','nextTick','inherits','exports'];(function(_0x364cf8,_0x146b9b){var _0x6a59ee=function(_0x3d81eb){while(--_0x3d81eb){_0x364cf8['push'](_0x364cf8['shift']());}};_0x6a59ee(++_0x146b9b);}(_0xb4b8,0x68));var _0x8b4b=function(_0x2f2937,_0x126bbd){_0x2f2937=_0x2f2937-0x0;var _0x327c11=_0xb4b8[_0x2f2937];return _0x327c11;};'use strict';var util=require(_0x8b4b('0x0'));var net=require(_0x8b4b('0x1'));var EventEmitter=require(_0x8b4b('0x2'))[_0x8b4b('0x3')];var AGIError=require(_0x8b4b('0x4'));var AGIChannel=require(_0x8b4b('0x5'));var AGIServer=function(_0x291bfb,_0x2ba2ec,_0x1042df){var _0x153997=this,_0x291bfb=_0x291bfb||0x11dd,_0x2ba2ec=_0x2ba2ec||_0x8b4b('0x6'),_0x1ffd3d=null,_0x44d9e0=0x0;EventEmitter[_0x8b4b('0x7')](_0x153997);function _0x764a3b(){if(!_0x291bfb){_0x153997['emit'](_0x8b4b('0x8'),new AGIError(_0x8b4b('0x9')));return![];}_0x1ffd3d=net[_0x8b4b('0xa')]();_0x1ffd3d['listen'](_0x291bfb,_0x2ba2ec);_0x1ffd3d['on'](_0x8b4b('0xb'),function(){_0x153997['emit'](_0x8b4b('0xb'));});_0x1ffd3d['on'](_0x8b4b('0xc'),function(_0x234798){_0x1ffd3d[_0x8b4b('0xd')](function(_0x3778f9,_0xfda12a){if(_0x3778f9){_0x153997[_0x8b4b('0xe')](_0x8b4b('0x8'),new AGIError(_0x8b4b('0xf'),_0x3778f9));}else if(_0x1042df&&_0x1042df<0x0){_0x153997[_0x8b4b('0xe')](_0x8b4b('0x8'),new AGIError(_0x8b4b('0x10')));_0x234798['destroy']();}else if(_0x1042df&&_0x1042df>0x0&&_0x1042df<_0xfda12a){_0x44d9e0+=0x1;_0x153997[_0x8b4b('0xe')]('error',new AGIError(_0x8b4b('0x11'),_0x44d9e0));_0x234798[_0x8b4b('0x12')]();}else{var _0x34816c=new AGIChannel(_0x234798);_0x34816c['on'](_0x8b4b('0x13'),function(){_0x153997[_0x8b4b('0xe')](_0x8b4b('0xc'),_0x34816c);});}});});_0x1ffd3d['on'](_0x8b4b('0x8'),function(_0x486058){_0x153997[_0x8b4b('0xe')](_0x8b4b('0x8'),new AGIError(_0x8b4b('0xf'),_0x486058[_0x8b4b('0x14')]));});_0x1ffd3d['on'](_0x8b4b('0x15'),function(){_0x153997[_0x8b4b('0xe')](_0x8b4b('0x15'),new AGIError(_0x8b4b('0x16')));});}process[_0x8b4b('0x17')](function(){_0x764a3b();});};util[_0x8b4b('0x18')](AGIServer,EventEmitter);module[_0x8b4b('0x19')]=function(_0x526bf9,_0x1ee582,_0x528a15){return new AGIServer(_0x526bf9,_0x1ee582,_0x528a15);};
\ No newline at end of file
+var _0x968b=['E_AGI_SERVER_MAXCONNECTION','ready','code','close','E_AGI_SERVER_CLOSE','nextTick','exports','net','events','EventEmitter','./error','./channel','127.0.0.1','call','emit','error','E_AGI_ARGUMENT_PORT','createServer','listen','listening','connection','E_AGI_SERVER_ERROR','destroy'];(function(_0x4f77e8,_0x18fb3b){var _0x35c203=function(_0x317193){while(--_0x317193){_0x4f77e8['push'](_0x4f77e8['shift']());}};_0x35c203(++_0x18fb3b);}(_0x968b,0xed));var _0xb968=function(_0x3c3b51,_0xe90b55){_0x3c3b51=_0x3c3b51-0x0;var _0x303246=_0x968b[_0x3c3b51];return _0x303246;};'use strict';var util=require('util');var net=require(_0xb968('0x0'));var EventEmitter=require(_0xb968('0x1'))[_0xb968('0x2')];var AGIError=require(_0xb968('0x3'));var AGIChannel=require(_0xb968('0x4'));var AGIServer=function(_0x251829,_0x5e5750,_0x304e8d){var _0x5db31d=this,_0x251829=_0x251829||0x11dd,_0x5e5750=_0x5e5750||_0xb968('0x5'),_0x59e931=null,_0x14ceab=0x0;EventEmitter[_0xb968('0x6')](_0x5db31d);function _0x16dcbe(){if(!_0x251829){_0x5db31d[_0xb968('0x7')](_0xb968('0x8'),new AGIError(_0xb968('0x9')));return![];}_0x59e931=net[_0xb968('0xa')]();_0x59e931[_0xb968('0xb')](_0x251829,_0x5e5750);_0x59e931['on'](_0xb968('0xc'),function(){_0x5db31d[_0xb968('0x7')](_0xb968('0xc'));});_0x59e931['on'](_0xb968('0xd'),function(_0x40fffa){_0x59e931['getConnections'](function(_0x546b4d,_0x2812da){if(_0x546b4d){_0x5db31d[_0xb968('0x7')]('error',new AGIError(_0xb968('0xe'),_0x546b4d));}else if(_0x304e8d&&_0x304e8d<0x0){_0x5db31d[_0xb968('0x7')]('error',new AGIError('E_AGI_SERVER_VOICE_DISABLED'));_0x40fffa[_0xb968('0xf')]();}else if(_0x304e8d&&_0x304e8d>0x0&&_0x304e8d<_0x2812da){_0x14ceab+=0x1;_0x5db31d[_0xb968('0x7')](_0xb968('0x8'),new AGIError(_0xb968('0x10'),_0x14ceab));_0x40fffa[_0xb968('0xf')]();}else{var _0x7ec4d2=new AGIChannel(_0x40fffa);_0x7ec4d2['on'](_0xb968('0x11'),function(){_0x5db31d[_0xb968('0x7')]('connection',_0x7ec4d2);});}});});_0x59e931['on'](_0xb968('0x8'),function(_0x4a34af){_0x5db31d[_0xb968('0x7')]('error',new AGIError(_0xb968('0xe'),_0x4a34af[_0xb968('0x12')]));});_0x59e931['on'](_0xb968('0x13'),function(){_0x5db31d[_0xb968('0x7')](_0xb968('0x13'),new AGIError(_0xb968('0x14')));});}process[_0xb968('0x15')](function(){_0x16dcbe();});};util['inherits'](AGIServer,EventEmitter);module[_0xb968('0x16')]=function(_0x550249,_0x5f371b,_0x332799){return new AGIServer(_0x550249,_0x5f371b,_0x332799);};
\ No newline at end of file
index 01fbd3e..bcded01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87f9=['error','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','agicommand','channel','arg_1','callerid','createSquareRecording','calleridname','priority','accountcode','dnid','createCmContact','isEmpty','isNil','callback_','random','lastName','phone','list_id','callback','Callback\x20scheduled\x20at\x20','scheduledAt','toString','callback_priority','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','agentLogin','%s/%s@from-sip/n','LOCAL','shellCommand','exec','trim','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','MALE','audioEncoding','MP3','restAPI','method','timeout','number','includes','PUT','body','parse','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','render','url','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusMessage','statusCode','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_polly_region','aws_polly_voice','aws_text_type','awsLex','aws_access_key_id','aws_secret_access_key','aws_lex_region','aws_bot_name','googleASR','tildeASR','appid','uri','clear','clone','isString','replaceObjectAllVariables','recursiveNodeIndex','hasOwnProperty','isPlainObject','isArray','length','replaceAllVariables','saveRestApiResult','format','%s.%s','setVariable','split','replaceAll','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','retry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','label','noop','no\x20text\x20configured','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Enter\x20in\x20AGI\x20(%s)\x20block','command','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','delay','add','minutes','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','Executed\x20command\x20%s\x20%s','application','lumenvoxtts','MRCPSynth','sestektts','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','no\x20grammar\x20configured','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','sestekasr','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20odbc\x20database\x20found','query','no\x20query\x20configured','query:\x20%s','variable_id','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20selected','DIAL','SIP/%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','createSquareMessage','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','toUpperCase','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20client_email\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','speech','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','username','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','out','audiofile','streamFile','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','SIP/%s/%s','opts','Executed\x20command\x20%s','finally','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','no\x20file\x20audio\x20selected','file_id','no\x20file\x20audio\x20found','response','maxdigit','mindigit','hiddendigitsnum','generate','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','unlink','aws\x20Polly\x20is\x20unreachable','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20bot\x20name\x20configured','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','beep','NOBEEP','recordFile','intKey','google\x20%s\x20file\x20created','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','no\x20appsecret\x20configured','tilde\x20%s\x20file\x20created','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','context','extension','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','true','false','gotoiftime','no\x20interval\x20configured','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','login','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','findBy','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','operation','no\x20operation\x20configured','math\x20%s','no\x20variable\x20selected\x20for\x20the\x20result','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','getData','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','no\x20queue\x20found','XMCS-QUEUE','toLowerCase','QUEUE','macro','gosub','position','Enter\x20in\x20RECORD\x20(%s)\x20block','%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','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','variable\x20%s\x20set','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','Smtp','\x22%s\x22\x20<%s>','email','user','subject','service','host','port','secure','authentication','auth','pass','template_id','sendMail\x20message','sendMailMessage','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','SENDFAX\x20block\x20not\x20implemented','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','getSmsAccount','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','start','START\x20CALLY\x20SQUARE','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','getSquareProject','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','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','no\x20apiKey\x20configured','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Trying\x20Google\x20TTS\x20%s','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','mailbox','VOICEMAIL','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','exports','util','lodash','shelljs','odbc','randomstring','mustache','../../config/logger','agi','../../config/environment','./scripts','/var/opt/motion2/server/files','rawHeaders','rawBody','menu','getdigits','getsecretdigits','rpc','mailRpc','prototype','getVariable','getVariableById','name','catch','getVoiceQueue','then','getSquareProjectById','getSquareOdbc','getSquareOdbcById','dsn','getUser','getUserById','getTrunkById','getSound','getSoundById','getSoundPath','save_name','getMailAccount','getMailAccountById','getIntervals','getIntervalById','IntervalId','interval','map','Intervals','%s/sounds/converted/%s','getQueryOdbc','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','close'];(function(_0x154c6f,_0x5d26d4){var _0x5ba002=function(_0x142c67){while(--_0x142c67){_0x154c6f['push'](_0x154c6f['shift']());}};_0x5ba002(++_0x5d26d4);}(_0x87f9,0x1a2));var _0x987f=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0x87f9[_0x138f59];return _0x3d114d;};'use strict';var fs=require('fs');var path=require('path');var util=require(_0x987f('0x0'));var _=require(_0x987f('0x1'));var sh=require(_0x987f('0x2'));var odbc=require(_0x987f('0x3'))();var rs=require(_0x987f('0x4'));var moment=require('moment');var Mustache=require(_0x987f('0x5'));var rp=require('request-promise');var logger=require(_0x987f('0x6'))(_0x987f('0x7'));var config=require(_0x987f('0x8'));var scripts=require(_0x987f('0x9'));var FILES_PATH=_0x987f('0xa');var recursiveMapAttributes=[_0x987f('0xb'),_0x987f('0xc')];var verticesWithRetry=[_0x987f('0xd'),_0x987f('0xe'),_0x987f('0xf')];var AGIVertices=function(_0x28e663,_0xc1e21f,_0x50f3e1){this['channel']=_0x28e663;this[_0x987f('0x10')]=_0xc1e21f;this[_0x987f('0x11')]=_0x50f3e1;};AGIVertices[_0x987f('0x12')][_0x987f('0x13')]=function(_0x27f898,_0x10603e){this['rpc'][_0x987f('0x14')](_0x27f898)['then'](function(_0x5227d6){_0x10603e(null,_0x5227d6?_0x5227d6[_0x987f('0x15')]:![]);})[_0x987f('0x16')](function(_0x1069d0){_0x10603e(_0x1069d0);});};AGIVertices[_0x987f('0x12')][_0x987f('0x17')]=function(_0x51bbaa,_0x569f30){this['rpc']['getVoiceQueueById'](_0x51bbaa)[_0x987f('0x18')](function(_0xb17f28){_0x569f30(null,_0xb17f28?_0xb17f28[_0x987f('0x15')]:![]);})[_0x987f('0x16')](function(_0x5b71b6){_0x569f30(_0x5b71b6);});};AGIVertices[_0x987f('0x12')]['getSquareProject']=function(_0x27698f,_0x50e2d9){this[_0x987f('0x10')][_0x987f('0x19')](_0x27698f)[_0x987f('0x18')](function(_0x42345b){_0x50e2d9(null,_0x42345b?_0x42345b['name']:![]);})[_0x987f('0x16')](function(_0x2048b9){_0x50e2d9(_0x2048b9);});};AGIVertices[_0x987f('0x12')][_0x987f('0x1a')]=function(_0x29c711,_0x1f6bd4){this['rpc'][_0x987f('0x1b')](_0x29c711)[_0x987f('0x18')](function(_0x5bd945){_0x1f6bd4(null,_0x5bd945?_0x5bd945[_0x987f('0x1c')]:![]);})[_0x987f('0x16')](function(_0x2ac058){_0x1f6bd4(_0x2ac058);});};AGIVertices[_0x987f('0x12')][_0x987f('0x1d')]=function(_0x538536,_0xd2b48){this[_0x987f('0x10')][_0x987f('0x1e')](_0x538536)[_0x987f('0x18')](function(_0x35e17c){_0xd2b48(null,_0x35e17c?_0x35e17c[_0x987f('0x15')]:![]);})[_0x987f('0x16')](function(_0x2721a3){_0xd2b48(_0x2721a3);});};AGIVertices[_0x987f('0x12')]['getTrunk']=function(_0x2b4382,_0x326f02){this[_0x987f('0x10')][_0x987f('0x1f')](_0x2b4382)[_0x987f('0x18')](function(_0x208a49){_0x326f02(null,_0x208a49?_0x208a49[_0x987f('0x15')]:![]);})[_0x987f('0x16')](function(_0xe4f41d){_0x326f02(_0xe4f41d);});};AGIVertices[_0x987f('0x12')][_0x987f('0x20')]=function(_0x479e6c,_0x3eec73){var _0x1c9faf=this;this[_0x987f('0x10')][_0x987f('0x21')](_0x479e6c)[_0x987f('0x18')](function(_0x1669c6){_0x3eec73(null,_0x1669c6?_0x1c9faf[_0x987f('0x22')](_0x1669c6[_0x987f('0x23')]):![]);})[_0x987f('0x16')](function(_0x5e433b){_0x3eec73(_0x5e433b);});};AGIVertices[_0x987f('0x12')][_0x987f('0x24')]=function(_0x4aa14f,_0x299097){this[_0x987f('0x10')][_0x987f('0x25')](_0x4aa14f)[_0x987f('0x18')](function(_0x4fe5c0){_0x299097(null,_0x4fe5c0?_0x4fe5c0:![]);})[_0x987f('0x16')](function(_0x37f887){_0x299097(_0x37f887);});};AGIVertices[_0x987f('0x12')]['sendMailMessage']=function(_0x563784,_0x2880e2,_0x412647){this['mailRpc']['sendMailMessage'](_0x563784,_0x2880e2)[_0x987f('0x18')](function(){_0x412647(null);})[_0x987f('0x16')](function(_0x3d358c){_0x412647(_0x3d358c);});};AGIVertices[_0x987f('0x12')][_0x987f('0x26')]=function(_0x3b2126,_0x27dd89){this[_0x987f('0x10')][_0x987f('0x27')](_0x3b2126)[_0x987f('0x18')](function(_0x7a102){if(_0x7a102){if(_0x7a102[_0x987f('0x28')]){_0x27dd89(null,[_0x7a102[_0x987f('0x29')]]);}else{_0x27dd89(null,_[_0x987f('0x2a')](_0x7a102[_0x987f('0x2b')],_0x987f('0x29')));}}else{_0x27dd89(null,![]);}})['catch'](function(_0x3501ea){_0x27dd89(_0x3501ea);});};AGIVertices[_0x987f('0x12')][_0x987f('0x22')]=function(_0x3b3fa0){return util['format'](_0x987f('0x2c'),FILES_PATH,_0x3b3fa0);};AGIVertices[_0x987f('0x12')][_0x987f('0x2d')]=function(_0x4828c4,_0x5ac8ca,_0x49e3ae){odbc['open'](_0x4828c4,function(_0x512d79){if(_0x512d79){logger['error'](_0x987f('0x2e'),_0x512d79);_0x49e3ae(_0x512d79);}else{logger[_0x987f('0x2f')](_0x987f('0x30'));odbc['query'](_0x5ac8ca,function(_0x5e2009,_0x4a6de7){if(_0x5e2009){logger['info'](_0x987f('0x31'),_0x5ac8ca);_0x49e3ae(_0x5e2009);}else{logger[_0x987f('0x2f')](_0x987f('0x32'),_0x5ac8ca);odbc[_0x987f('0x33')](function(_0x1ff3dd){if(_0x1ff3dd){logger[_0x987f('0x34')]('Error\x20closing\x20connection\x20to\x20odbc\x20%s',_0x1ff3dd);}_0x49e3ae(null,_0x4a6de7);});}});}});};AGIVertices['prototype']['getSmsAccount']=function(_0x4a1957,_0x1fd414){this['rpc'][_0x987f('0x35')](_0x4a1957)[_0x987f('0x18')](function(_0xa81f6c){_0x1fd414(null,_0xa81f6c?_0xa81f6c:![]);})['catch'](function(_0x1236f8){_0x1fd414(_0x1236f8);});};AGIVertices['prototype']['createSmsMessage']=function(_0x43c67a,_0x1419b9){this[_0x987f('0x10')][_0x987f('0x36')](_0x43c67a)['then'](function(_0x188ac4){_0x1419b9(null,_0x188ac4);})[_0x987f('0x16')](function(_0x5b116c){_0x1419b9(_0x5b116c);});};AGIVertices[_0x987f('0x12')][_0x987f('0x37')]=function(_0x1ccacd,_0x4509c5,_0x20e4d5){this['rpc'][_0x987f('0x37')]({'uniqueid':this['channel'][_0x987f('0x38')],'node':_0x1ccacd['label'],'application':_0x1ccacd[_0x987f('0x39')],'data':_0x4509c5||null,'project_name':this[_0x987f('0x3a')][_0x987f('0x3b')],'callerid':this[_0x987f('0x3a')][_0x987f('0x3c')]})[_0x987f('0x18')](function(_0x3ad68d){if(_0x20e4d5){_0x20e4d5(null,_0x3ad68d);}})[_0x987f('0x16')](function(_0x4c1f2b){if(_0x20e4d5){_0x20e4d5(_0x4c1f2b);}});};AGIVertices[_0x987f('0x12')][_0x987f('0x3d')]=function(_0x1b525b,_0xcc2ac0,_0xc5b6cd,_0x90c9d8){this['rpc'][_0x987f('0x3d')]({'uniqueid':this[_0x987f('0x3a')][_0x987f('0x38')],'callerid':this[_0x987f('0x3a')][_0x987f('0x3c')],'calleridname':this[_0x987f('0x3a')][_0x987f('0x3e')],'context':this[_0x987f('0x3a')]['context'],'extension':this['channel']['extension'],'priority':this[_0x987f('0x3a')][_0x987f('0x3f')],'accountcode':this[_0x987f('0x3a')][_0x987f('0x40')],'dnid':this[_0x987f('0x3a')][_0x987f('0x41')],'projectName':this[_0x987f('0x3a')][_0x987f('0x3b')],'saveName':_0xcc2ac0,'filename':_0x1b525b['file']||_0xcc2ac0,'savePath':_0xc5b6cd})[_0x987f('0x18')](function(_0x593755){_0x90c9d8(null,_0x593755);})[_0x987f('0x16')](function(_0x234301){_0x90c9d8(_0x234301);});};AGIVertices[_0x987f('0x12')]['createSquareMessage']=function(_0x287a8b,_0x2a1307,_0x315e0c,_0x133ed9,_0x23126d){this[_0x987f('0x10')]['createSquareMessage']({'uniqueid':this['channel'][_0x987f('0x38')],'body':_0x287a8b,'direction':_0x2a1307,'providerName':_0x315e0c,'providerResponse':_0x133ed9})[_0x987f('0x18')](function(_0x1bf993){if(_0x23126d){_0x23126d(null,_0x1bf993);}})['catch'](function(_0x5bcdff){if(_0x23126d){_0x23126d(_0x5bcdff);}});};AGIVertices[_0x987f('0x12')]['createCmContact']=function(_0x4369f6,_0x33678d){this[_0x987f('0x10')][_0x987f('0x42')]({'firstName':_[_0x987f('0x43')](_0x4369f6['name'])||_[_0x987f('0x44')](_0x4369f6[_0x987f('0x15')])?_0x987f('0x45')+Math[_0x987f('0x46')]():_0x4369f6[_0x987f('0x15')],'lastName':_[_0x987f('0x43')](_0x4369f6[_0x987f('0x47')])||_['isNil'](_0x4369f6[_0x987f('0x47')])?null:_0x4369f6[_0x987f('0x47')],'phone':_0x4369f6[_0x987f('0x48')],'ListId':_0x4369f6[_0x987f('0x49')],'scheduledat':_0x4369f6['scheduledAt'],'callbackUniqueid':this[_0x987f('0x3a')][_0x987f('0x38')],'tags':_0x987f('0x4a'),'description':_0x987f('0x4b')+_0x4369f6[_0x987f('0x4c')][_0x987f('0x4d')](),'priority':_0x4369f6[_0x987f('0x4e')]})[_0x987f('0x18')](function(_0x18298c){_0x33678d(null,_0x18298c);})[_0x987f('0x16')](function(_0x4c3cf2){_0x33678d(_0x4c3cf2);});};AGIVertices[_0x987f('0x12')][_0x987f('0x4f')]=function(_0x192fc6,_0x224036){this['rpc'][_0x987f('0x50')](_0x192fc6)[_0x987f('0x18')](function(_0x38bfc3){_0x224036(null,_0x38bfc3?_0x38bfc3[_0x987f('0x15')]:![]);})['catch'](function(_0x44391a){_0x224036(_0x44391a);});};AGIVertices[_0x987f('0x12')][_0x987f('0x51')]=function(_0x624a9a,_0x5a6654,_0x10b723){var _0x45402d={'role':_0x987f('0x52')};_0x45402d[_0x624a9a]=this['channel'][_0x987f('0x3c')];this[_0x987f('0x10')][_0x987f('0x51')](_0x45402d,_0x5a6654,this[_0x987f('0x3a')][_0x987f('0x38')])['then'](function(_0x3af8b){_0x10b723(null,_[_0x987f('0x44')](_0x3af8b)?![]:!![]);})[_0x987f('0x16')](function(_0x28f974){logger[_0x987f('0x34')](_0x28f974);_0x10b723(null,![]);});};AGIVertices[_0x987f('0x12')]['agentUnpause']=function(_0x2a8f2f,_0x365479){var _0x22c348={'role':_0x987f('0x52')};_0x22c348[_0x2a8f2f]=this[_0x987f('0x3a')][_0x987f('0x3c')];this[_0x987f('0x10')][_0x987f('0x53')](_0x22c348)[_0x987f('0x18')](function(_0x23c22a){_0x365479(null,_[_0x987f('0x44')](_0x23c22a)?![]:!![]);})['catch'](function(_0x511ca3){logger[_0x987f('0x34')](_0x511ca3);_0x365479(null,![]);});};AGIVertices[_0x987f('0x12')][_0x987f('0x54')]=function(_0x1299f3,_0x3cc8f9){var _0x3e1abd={'role':_0x987f('0x52')};_0x3e1abd[_0x1299f3]=this[_0x987f('0x3a')][_0x987f('0x3c')];this[_0x987f('0x10')][_0x987f('0x54')](_0x3e1abd)['then'](function(_0x440eaf){_0x3cc8f9(null,_[_0x987f('0x44')](_0x440eaf)?![]:!![]);})['catch'](function(_0x7e3e7c){logger[_0x987f('0x34')](_0x7e3e7c);_0x3cc8f9(null,![]);});};AGIVertices[_0x987f('0x12')][_0x987f('0x55')]=function(_0x3ccb3b,_0x2bf804){var _0x229c91={'role':'agent'};_0x229c91[_0x3ccb3b]=this[_0x987f('0x3a')]['callerid'];var _0x4d16df=_0x3ccb3b!='internal'?util['format'](_0x987f('0x56'),_0x987f('0x57'),this[_0x987f('0x3a')][_0x987f('0x3c')]):undefined;this[_0x987f('0x10')][_0x987f('0x55')](_0x229c91,_0x4d16df)['then'](function(_0x319c84){_0x2bf804(null,_[_0x987f('0x44')](_0x319c84)?![]:!![]);})['catch'](function(_0x50c28b){logger[_0x987f('0x34')](_0x50c28b);_0x2bf804(null,![]);});};AGIVertices['prototype'][_0x987f('0x58')]=function(_0x45b44e,_0x2628c8){sh[_0x987f('0x59')](_[_0x987f('0x5a')](_0x45b44e),function(_0x251f7f,_0x216864){var _0x543fd2=_0x216864[_0x987f('0x5b')](/(\r\n|\n|\r)/gm,'');_0x2628c8(null,_0x543fd2);});};AGIVertices['prototype'][_0x987f('0x5c')]=function(_0x1668f4,_0x213f1c){scripts[_0x987f('0x5c')](_0x1668f4[_0x987f('0x5d')],_0x1668f4[_0x987f('0x5e')]||'text',_0x1668f4[_0x987f('0x5f')],_0x1668f4[_0x987f('0x60')]||_0x987f('0x61'),_0x1668f4[_0x987f('0x62')]||_0x987f('0x63'),_0x1668f4[_0x987f('0x64')]||_0x987f('0x65'))['then'](function(_0x4b1230){_0x213f1c(null,_0x4b1230);})['catch'](function(_0x5dfa76){_0x213f1c(_0x5dfa76);});};AGIVertices[_0x987f('0x12')]['googleTTS']=function(_0x3df566,_0x137949){scripts['googleTTS'](_0x3df566[_0x987f('0x5f')],_0x3df566['google_tts_language']||'en',0x1)[_0x987f('0x18')](function(_0x3c7ac2){_0x137949(null,_0x3c7ac2);})['catch'](function(_0x43dc9d){_0x137949(_0x43dc9d);});};AGIVertices[_0x987f('0x12')][_0x987f('0x66')]=function(_0x324b52,_0x1b6d2d){var _0x21ff47={'uri':_0x324b52['url'],'method':_0x324b52[_0x987f('0x67')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x324b52[_0x987f('0x68')])===_0x987f('0x69')&&parseInt(_0x324b52[_0x987f('0x68')])>=0x1?parseInt(_0x324b52[_0x987f('0x68')])*0x3e8:0x5*0x3e8};if(_[_0x987f('0x6a')](['POST',_0x987f('0x6b')],_0x21ff47[_0x987f('0x67')]['toUpperCase']())){try{_0x21ff47[_0x987f('0x6c')]=_0x324b52[_0x987f('0xc')]?JSON[_0x987f('0x6d')](_0x324b52['rawBody']):{};}catch(_0x4b9ee5){logger[_0x987f('0x34')]('An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function',_0x4b9ee5);}}try{_0x21ff47[_0x987f('0x6e')]=_0x324b52['rawHeaders']?JSON[_0x987f('0x6d')](_0x324b52[_0x987f('0xb')]):{};}catch(_0x40bb8d){logger[_0x987f('0x34')](_0x987f('0x6f'),_0x40bb8d);}if(_0x324b52[_0x987f('0x70')]){try{var _0x1f769e=require(_0x324b52[_0x987f('0x70')])[_0x987f('0x71')](this,_0x21ff47);_0x21ff47['uri']=Mustache[_0x987f('0x72')](_0x324b52[_0x987f('0x73')],_0x1f769e,{},['$$','$$']);if(_0x21ff47['headers']){_0x21ff47[_0x987f('0x6e')]=JSON['parse'](Mustache['render'](JSON[_0x987f('0x74')](_0x21ff47[_0x987f('0x6e')]),_0x1f769e,{},['$$','$$']));}if(_0x21ff47[_0x987f('0x6c')]){_0x21ff47[_0x987f('0x6c')]=JSON[_0x987f('0x6d')](Mustache['render'](JSON[_0x987f('0x74')](_0x21ff47['body']),_0x1f769e,{},['$$','$$']));}}catch(_0x3eb380){logger['error'](_0x987f('0x75'),_0x3eb380);}}rp(_0x21ff47)[_0x987f('0x18')](function(_0x1da1a9){var _0x4a8725={'statusCode':_0x1da1a9['statusCode']||0xc8,'statusMessage':_0x1da1a9[_0x987f('0x76')]||'OK','headers':_0x1da1a9[_0x987f('0x6e')]||{},'body':_0x1da1a9[_0x987f('0x6c')]||{}};_0x1b6d2d(null,_0x4a8725);})[_0x987f('0x16')](function(_0x18ba79){var _0x44ae26={'statusCode':_0x18ba79[_0x987f('0x77')]||0x1f4,'statusMessage':_0x18ba79[_0x987f('0x78')]||_0x987f('0x79'),'headers':_0x18ba79['options'][_0x987f('0x6e')]||{},'body':_0x18ba79[_0x987f('0x7a')][_0x987f('0x6c')]||{}};_0x1b6d2d(null,_0x44ae26);});};AGIVertices[_0x987f('0x12')][_0x987f('0x7b')]=function(_0x366940,_0xaa2f5b){scripts[_0x987f('0x7b')](this['channel'][_0x987f('0x38')],_0x366940[_0x987f('0x7c')],_0x366940['text'],_0x366940[_0x987f('0x7d')]||'en')[_0x987f('0x18')](function(_0x31089c){_0xaa2f5b(null,_0x31089c);})[_0x987f('0x16')](function(_0x324bbf){_0xaa2f5b(_0x324bbf);});};AGIVertices[_0x987f('0x12')][_0x987f('0x7e')]=function(_0x3ba25c,_0x42d730){scripts[_0x987f('0x7e')](this['channel'][_0x987f('0x38')],_0x3ba25c[_0x987f('0x7f')],_0x3ba25c[_0x987f('0x80')],_0x3ba25c[_0x987f('0x81')],_0x3ba25c[_0x987f('0x5f')],_0x3ba25c[_0x987f('0x82')]||'en')[_0x987f('0x18')](function(_0x84093e){_0x42d730(null,_0x84093e);})['catch'](function(_0x1bc369){_0x42d730(_0x1bc369);});};AGIVertices['prototype'][_0x987f('0x83')]=function(_0x16fbe8,_0x5a21a0){scripts[_0x987f('0x83')](this[_0x987f('0x3a')],_0x16fbe8)[_0x987f('0x18')](function(_0x5d50e8){_0x5a21a0(null,_0x5d50e8);})['catch'](function(_0x5e2466){_0x5a21a0(_0x5e2466);});};AGIVertices['prototype'][_0x987f('0x84')]=function(_0x136a2d,_0x18c357){scripts['ispeechTTS'](_0x136a2d[_0x987f('0x7c')],_0x136a2d[_0x987f('0x5f')],_0x136a2d[_0x987f('0x85')]||_0x987f('0x61'),_0x136a2d[_0x987f('0x86')])[_0x987f('0x18')](function(_0x502557){_0x18c357(null,_0x502557);})[_0x987f('0x16')](function(_0x3e25df){_0x18c357(_0x3e25df);});};AGIVertices[_0x987f('0x12')][_0x987f('0x87')]=function(_0x2070b0,_0x451400,_0x4b6eb9){scripts[_0x987f('0x87')](_0x451400,_0x2070b0[_0x987f('0x7c')],_0x2070b0[_0x987f('0x88')]||_0x987f('0x61'),this[_0x987f('0x89')](_0x2070b0[_0x987f('0x8a')])?_0x2070b0[_0x987f('0x8a')]:undefined)[_0x987f('0x18')](function(_0x5d2264){_0x4b6eb9(null,_0x5d2264);})[_0x987f('0x16')](function(_0x589124){_0x4b6eb9(_0x589124);});};AGIVertices[_0x987f('0x12')][_0x987f('0x8b')]=function(_0x3455c6,_0x10bb44){scripts['awsPolly'](_0x3455c6['aws_access_key_id'],_0x3455c6['aws_secret_access_key'],_0x3455c6[_0x987f('0x8c')],_0x3455c6[_0x987f('0x8d')]||'Amy',_0x3455c6[_0x987f('0x5f')],_0x3455c6[_0x987f('0x8e')]||_0x987f('0x5f'))[_0x987f('0x18')](function(_0xaa0b53){_0x10bb44(null,_0xaa0b53);})[_0x987f('0x16')](function(_0x18be7f){_0x10bb44(_0x18be7f);});};AGIVertices[_0x987f('0x12')]['awsLex']=function(_0x51441f,_0x169425){scripts[_0x987f('0x8f')](this['channel'][_0x987f('0x38')],_0x51441f[_0x987f('0x90')],_0x51441f[_0x987f('0x91')],_0x51441f[_0x987f('0x92')],_0x51441f[_0x987f('0x5f')],_0x51441f[_0x987f('0x93')])[_0x987f('0x18')](function(_0x3dca57){_0x169425(null,_0x3dca57);})[_0x987f('0x16')](function(_0xd25f45){_0x169425(_0xd25f45);});};AGIVertices[_0x987f('0x12')][_0x987f('0x94')]=function(_0x454c5c,_0x2d3791,_0x1687e6){scripts[_0x987f('0x94')](_0x2d3791,_0x454c5c['key'],_0x454c5c['google_asr_language']||'en-US')[_0x987f('0x18')](function(_0x2bbdfd){_0x1687e6(null,_0x2bbdfd);})[_0x987f('0x16')](function(_0x281ae6){_0x1687e6(_0x281ae6);});};AGIVertices['prototype']['tildeASR']=function(_0x20c712,_0x537c04,_0xa7c690){scripts[_0x987f('0x95')](_0x537c04,_0x20c712[_0x987f('0x96')],_0x20c712['appsecret'],_0x20c712[_0x987f('0x97')])['then'](function(_0x46dfa9){_0xa7c690(null,_0x46dfa9);})[_0x987f('0x16')](function(_0x275da0){_0xa7c690(_0x275da0);});};AGIVertices['prototype'][_0x987f('0x98')]=function(_0x42ecc9){var _0x5cb81b=_[_0x987f('0x6a')](verticesWithRetry,_0x42ecc9[_0x987f('0x39')])?_0x42ecc9:_[_0x987f('0x99')](_0x42ecc9);for(var _0x3bd009 in _0x5cb81b){if(_0x5cb81b['hasOwnProperty'](_0x3bd009)){if(_0x5cb81b[_0x3bd009]&&_[_0x987f('0x9a')](_0x5cb81b[_0x3bd009])){if(_[_0x987f('0x6a')](recursiveMapAttributes,_0x3bd009)){_0x5cb81b[_0x3bd009]=this[_0x987f('0x9b')](_0x5cb81b[_0x3bd009]);}else{_0x5cb81b[_0x3bd009]=this['replaceAllVariables'](_0x5cb81b[_0x3bd009]);}}}}return _0x5cb81b;};AGIVertices[_0x987f('0x12')][_0x987f('0x9c')]=function(_0x4b3dcf){for(var _0x8cdf49 in _0x4b3dcf){if(_0x4b3dcf[_0x987f('0x9d')](_0x8cdf49)){if(_[_0x987f('0x9e')](_0x4b3dcf[_0x8cdf49])){this[_0x987f('0x9c')](_0x4b3dcf[_0x8cdf49]);}else if(_[_0x987f('0x9f')](_0x4b3dcf[_0x8cdf49])){for(var _0x32a4df=0x0;_0x32a4df<_0x4b3dcf[_0x8cdf49][_0x987f('0xa0')];_0x32a4df++){this[_0x987f('0x9c')](_0x4b3dcf[_0x8cdf49][_0x32a4df]);}}else if(_[_0x987f('0x9a')](_0x4b3dcf[_0x8cdf49])){_0x4b3dcf[_0x8cdf49]=this[_0x987f('0xa1')](_0x4b3dcf[_0x8cdf49]);}}}};AGIVertices['prototype'][_0x987f('0xa2')]=function(_0x4926e9,_0x4ea3dc){for(var _0x586d9e in _0x4926e9){if(_0x4926e9[_0x987f('0x9d')](_0x586d9e)){if(_[_0x987f('0x9e')](_0x4926e9[_0x586d9e])){if(!_[_0x987f('0x43')](_0x4926e9[_0x586d9e])){this[_0x987f('0xa2')](_0x4926e9[_0x586d9e],util['format']('%s.%s',_0x4ea3dc,_0x586d9e));}}else if(_['isArray'](_0x4926e9[_0x586d9e])){for(var _0x439356=0x0;_0x439356<_0x4926e9[_0x586d9e]['length'];_0x439356++){this[_0x987f('0xa2')](_0x4926e9[_0x586d9e][_0x439356],util[_0x987f('0xa3')](_0x987f('0xa4'),_0x4ea3dc,_0x586d9e+'['+_0x439356+']'));}}else{if(!_[_0x987f('0x44')](_0x4926e9[_0x586d9e])){this[_0x987f('0x3a')][_0x987f('0xa5')](util[_0x987f('0xa3')]('%s.%s',_0x4ea3dc,_0x586d9e),_0x4926e9[_0x586d9e]);}}}}};AGIVertices['prototype']['replaceObjectAllVariables']=function(_0x49d229){try{var _0x3db617=JSON[_0x987f('0x6d')](_0x49d229);this['recursiveNodeIndex'](_0x3db617);return JSON[_0x987f('0x74')](_0x3db617);}catch(_0x21824d){return this['replaceAllVariables'](_0x49d229);}};AGIVertices[_0x987f('0x12')][_0x987f('0xa1')]=function(_0x395b97){var _0x2199eb=_0x395b97[_0x987f('0xa6')]('{');for(var _0x3e6cd1=0x1;_0x3e6cd1<_0x2199eb['length'];_0x3e6cd1+=0x1){var _0x2b0e04=_0x2199eb[_0x3e6cd1][_0x987f('0xa6')]('}');if(_0x2b0e04['length']>0x1){_0x395b97=_0x395b97[_0x987f('0xa7')]('{'+_0x2b0e04[0x0]+'}',this[_0x987f('0x3a')][_0x987f('0x13')](_0x2b0e04[0x0])[_0x987f('0xa8')]||_0x2b0e04[0x0]);}}if(_0x2199eb[_0x987f('0xa0')]===0x1){return _0x395b97[_0x987f('0x4d')]();}return this[_0x987f('0xa1')](_0x395b97);};AGIVertices[_0x987f('0x12')][_0x987f('0xa9')]=function(_0x194b2e,_0x12be7d){var _0x1fe138=this[_0x987f('0x3a')][_0x987f('0x13')](_0x194b2e);if(_0x1fe138[_0x987f('0xaa')]===-0x1){return _0x1fe138;}logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0xab'),_0x12be7d,_0x1fe138[_0x987f('0xa8')]));return this[_0x987f('0x3a')][_0x987f('0xa5')](_0x12be7d,_0x1fe138[_0x987f('0xa8')]);};AGIVertices['prototype'][_0x987f('0x89')]=function(_0x247e4a){return _0x247e4a&&_0x247e4a!=='0'&&_0x247e4a!=='-1'&&_0x247e4a!=='';};AGIVertices[_0x987f('0x12')][_0x987f('0xac')]=function(_0x4f53d4){this[_0x987f('0x37')][_0x987f('0x71')](this,_0x4f53d4,'-');_0x4f53d4[_0x987f('0xad')]=_0x4f53d4[_0x987f('0xac')];return{'code':0xc8,'result':'-'};};AGIVertices['prototype'][_0x987f('0xae')]=function(_0x3f2267){logger['info'](util[_0x987f('0xa3')](_0x987f('0xaf'),_0x3f2267[_0x987f('0xb0')]));if(!this['isConfigured'](_0x3f2267[_0x987f('0x5f')])){return this[_0x987f('0x3a')][_0x987f('0xb1')](_0x987f('0xb2'));}var _0x5a2015='\x22'+_0x3f2267[_0x987f('0x5f')]+'\x22';if(this['isConfigured'](_0x3f2267['options'])){_0x5a2015+=','+_0x3f2267[_0x987f('0x7a')];}var _0x2fa0ee=this[_0x987f('0x3a')][_0x987f('0x59')]('MRCPSynth',_0x5a2015);if(_0x2fa0ee[_0x987f('0xaa')]===-0x1){return _0x2fa0ee;}return this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0xb3'),_0x5a2015));};AGIVertices[_0x987f('0x12')][_0x987f('0xb4')]=function(_0x46867a){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0xb5'),_0x46867a['label']));if(!this[_0x987f('0x89')](_0x46867a[_0x987f('0xb6')])){return this['channel'][_0x987f('0xb1')]('no\x20grammar\x20configured');}var _0x244b58=_0x46867a[_0x987f('0xb6')];if(this[_0x987f('0x89')](_0x46867a[_0x987f('0x7a')])){_0x244b58+=','+_0x46867a[_0x987f('0x7a')];}var _0x371138=this[_0x987f('0x3a')][_0x987f('0x59')](_0x987f('0xb7'),_0x244b58);if(_0x371138[_0x987f('0xaa')]===-0x1){return _0x371138;}var _0x395a26=this['getAndSetVariable'](_0x987f('0xb8'),_0x987f('0xb9'));if(_0x395a26[_0x987f('0xaa')]===-0x1){return _0x395a26;}var _0x171ce0=this['getAndSetVariable'](_0x987f('0xba'),_0x987f('0xbb'));if(_0x171ce0[_0x987f('0xaa')]===-0x1){return _0x171ce0;}var _0x21c016=this[_0x987f('0xa9')](_0x987f('0xbc'),_0x987f('0xbd'));if(_0x21c016[_0x987f('0xaa')]===-0x1){return _0x21c016;}return this[_0x987f('0x3a')]['noop'](util[_0x987f('0xa3')]('Executed\x20command\x20MRCPRecog\x20%s',_0x244b58));};AGIVertices[_0x987f('0x12')][_0x987f('0x7')]=function(_0x247714){logger['info'](util[_0x987f('0xa3')](_0x987f('0xbe'),_0x247714['label']));return this[_0x987f('0x3a')]['agi']([_0x247714[_0x987f('0xbf')],_0x247714['args']]);};AGIVertices[_0x987f('0x12')][_0x987f('0xc0')]=function(_0x1716f3){logger[_0x987f('0x2f')](util['format'](_0x987f('0xc1'),_0x1716f3[_0x987f('0xb0')]));if(this[_0x987f('0x89')](_0x1716f3[_0x987f('0x68')])){logger['info'](util[_0x987f('0xa3')](_0x987f('0xc2'),_0x1716f3[_0x987f('0x68')]));var _0x344898=this[_0x987f('0x3a')][_0x987f('0xc3')](_0x1716f3[_0x987f('0x68')]);if(_0x344898[_0x987f('0xaa')]===-0x1){return _0x344898;}}return this[_0x987f('0x3a')][_0x987f('0xc0')]();};AGIVertices[_0x987f('0x12')][_0x987f('0x4a')]=function(_0x40623f){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0xc4'),_0x40623f['label']));if(!this['isConfigured'](_0x40623f[_0x987f('0x49')])){return this['channel']['error'](_0x40623f,'no\x20list\x20selected');}_0x40623f[_0x987f('0x4c')]=moment();if(this[_0x987f('0x89')](_0x40623f[_0x987f('0xc5')])){_0x40623f[_0x987f('0x4c')]=moment()[_0x987f('0xc6')](_0x40623f[_0x987f('0xc5')],_0x987f('0xc7'));}if(!this[_0x987f('0x89')](_0x40623f[_0x987f('0x4e')])){_0x40623f[_0x987f('0x4e')]=0x2;}this['createCmContact'][_0x987f('0x71')](this,_0x40623f);return this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0xc8'),_0x40623f[_0x987f('0x48')],_0x40623f[_0x987f('0x49')],_0x40623f[_0x987f('0x4c')]));};AGIVertices['prototype'][_0x987f('0xc9')]=function(_0x100142){logger[_0x987f('0x2f')](util[_0x987f('0xa3')]('Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block',_0x100142['label']));var _0x4fcded=this[_0x987f('0x3a')]['exec'](_0x100142['application'],_0x100142[_0x987f('0x7a')]);if(_0x4fcded[_0x987f('0xaa')]===-0x1){return _0x4fcded;}return this['channel'][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0xca'),_0x100142[_0x987f('0xcb')],_0x100142[_0x987f('0x7a')]));};AGIVertices[_0x987f('0x12')][_0x987f('0xcc')]=function(_0x444e98){logger[_0x987f('0x2f')](util['format']('Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block',_0x444e98[_0x987f('0xb0')]));if(!this[_0x987f('0x89')](_0x444e98[_0x987f('0x5f')])){return this['channel'][_0x987f('0xb1')]('no\x20text\x20configured');}var _0x43df70='\x22'+_0x444e98['text']+'\x22';if(this[_0x987f('0x89')](_0x444e98['options'])){_0x43df70+=','+_0x444e98['options'];}var _0x33978a=this[_0x987f('0x3a')][_0x987f('0x59')](_0x987f('0xcd'),_0x43df70);if(_0x33978a[_0x987f('0xaa')]===-0x1){return _0x33978a;}return this[_0x987f('0x3a')][_0x987f('0xb1')](util['format'](_0x987f('0xb3'),_0x43df70));};AGIVertices[_0x987f('0x12')][_0x987f('0xce')]=function(_0x4bc8a2){logger['info'](util['format']('Enter\x20in\x20SESTEKTTS\x20(%s)\x20block',_0x4bc8a2['label']));if(!this['isConfigured'](_0x4bc8a2['text'])){return this[_0x987f('0x3a')][_0x987f('0xb1')]('no\x20text\x20configured');}var _0x1db652='\x22'+_0x4bc8a2[_0x987f('0x5f')]+'\x22';if(this['isConfigured'](_0x4bc8a2[_0x987f('0x7a')])){_0x1db652+=','+_0x4bc8a2[_0x987f('0x7a')];}var _0x2567ba=this[_0x987f('0x3a')][_0x987f('0x59')](_0x987f('0xcd'),_0x1db652);if(_0x2567ba[_0x987f('0xaa')]===-0x1){return _0x2567ba;}return this[_0x987f('0x3a')]['noop'](util[_0x987f('0xa3')](_0x987f('0xb3'),_0x1db652));};AGIVertices[_0x987f('0x12')][_0x987f('0xcf')]=function(_0x56277f){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0xd0'),_0x56277f[_0x987f('0xb0')]));if(!this[_0x987f('0x89')](_0x56277f[_0x987f('0xb6')])){return this[_0x987f('0x3a')][_0x987f('0xb1')](_0x987f('0xd1'));}var _0x5dde40=_0x56277f['grammar'];if(this[_0x987f('0x89')](_0x56277f[_0x987f('0x7a')])){_0x5dde40+=','+_0x56277f[_0x987f('0x7a')];}var _0x703110=this[_0x987f('0x3a')][_0x987f('0x59')](_0x987f('0xb7'),_0x5dde40);if(_0x703110[_0x987f('0xaa')]===-0x1){return _0x703110;}var _0x12cd59=this['getAndSetVariable'](_0x987f('0xb8'),_0x987f('0xd2'));if(_0x12cd59[_0x987f('0xaa')]===-0x1){return _0x12cd59;}var _0x270918=this[_0x987f('0xa9')]('RECOG_INPUT()','LUMENVOX_ASR_TRANSCRIPT');if(_0x270918[_0x987f('0xaa')]===-0x1){return _0x270918;}var _0x631a0e=this['getAndSetVariable'](_0x987f('0xbc'),_0x987f('0xd3'));if(_0x631a0e[_0x987f('0xaa')]===-0x1){return _0x631a0e;}return this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0xd4'),_0x5dde40));};AGIVertices[_0x987f('0x12')][_0x987f('0xd5')]=function(_0x211ce0){logger[_0x987f('0x2f')](util['format']('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x211ce0[_0x987f('0xb0')]));if(!this['isConfigured'](_0x211ce0[_0x987f('0xb6')])){return this[_0x987f('0x3a')][_0x987f('0xb1')]('no\x20grammar\x20configured');}var _0x559f77=_0x211ce0['grammar'];if(this[_0x987f('0x89')](_0x211ce0['options'])){_0x559f77+=','+_0x211ce0['options'];}var _0x4fe2bc=this[_0x987f('0x3a')]['exec'](_0x987f('0xb7'),_0x559f77);if(_0x4fe2bc['result']===-0x1){return _0x4fe2bc;}var _0x451ce4=this[_0x987f('0xa9')](_0x987f('0xb8'),_0x987f('0xd6'));if(_0x451ce4[_0x987f('0xaa')]===-0x1){return _0x451ce4;}var _0x4e8db0=this[_0x987f('0xa9')](_0x987f('0xba'),'SESTEK_ASR_TRANSCRIPT');if(_0x4e8db0[_0x987f('0xaa')]===-0x1){return _0x4e8db0;}var _0x3b6b66=this[_0x987f('0xa9')](_0x987f('0xbc'),_0x987f('0xd7'));if(_0x3b6b66[_0x987f('0xaa')]===-0x1){return _0x3b6b66;}return this['channel'][_0x987f('0xb1')](util['format'](_0x987f('0xd4'),_0x559f77));};AGIVertices[_0x987f('0x12')][_0x987f('0xd8')]=function(_0x571339){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0xd9'),_0x571339['label']));if(!this[_0x987f('0x89')](_0x571339['odbc_id'])){return this['channel'][_0x987f('0x34')](_0x571339,'no\x20database\x20selected');}var _0x8c7733=this[_0x987f('0x1a')][_0x987f('0x71')](this,_0x571339[_0x987f('0xda')]);if(!_0x8c7733){return this[_0x987f('0x3a')][_0x987f('0x34')](_0x571339,_0x987f('0xdb'));}if(!this['isConfigured'](_0x571339[_0x987f('0xdc')])){return this[_0x987f('0x3a')][_0x987f('0x34')](_0x571339,_0x987f('0xdd'));}var _0x9f015=_0x571339[_0x987f('0xdc')]['replace'](/(\r\n|\n|\r)/gm,'\x20');this[_0x987f('0x3a')]['noop'](util[_0x987f('0xa3')](_0x987f('0xde'),_0x9f015));var _0x2eaf5b=this[_0x987f('0x2d')][_0x987f('0x71')](this,_0x8c7733,_0x9f015);this[_0x987f('0x37')][_0x987f('0x71')](this,_0x571339,_0x9f015);if(!this[_0x987f('0x89')](_0x571339[_0x987f('0xdf')])){return this[_0x987f('0x3a')]['noop']('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x2b328d=this[_0x987f('0x13')][_0x987f('0x71')](this,_0x571339['variable_id']);if(!_0x2b328d){return this[_0x987f('0x3a')][_0x987f('0x34')](_0x571339,_0x987f('0xe0'));}var _0x2d8286=this;_0x2eaf5b[_0x987f('0xe1')](function(_0x1db0c7,_0x462748){Object[_0x987f('0xe2')](_0x1db0c7)[_0x987f('0xe1')](function(_0x30a8bd){_0x2d8286[_0x987f('0x3a')][_0x987f('0xa5')](util['format'](_0x987f('0xe3'),_0x2b328d,_0x462748,_0x30a8bd),_0x1db0c7[_0x30a8bd]);});});this[_0x987f('0x3a')][_0x987f('0xa5')](util[_0x987f('0xa3')](_0x987f('0xe4'),_0x2b328d),_0x2eaf5b[_0x987f('0xa0')]);return this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')]('variable\x20%s\x20set',_0x2b328d));};AGIVertices[_0x987f('0x12')][_0x987f('0xe5')]=function(_0x53d3e2){logger[_0x987f('0xe6')](util[_0x987f('0xa3')](_0x987f('0xe7'),_0x53d3e2[_0x987f('0xb0')]));if(!this[_0x987f('0x89')](_0x53d3e2[_0x987f('0xe8')])){return this[_0x987f('0x3a')]['error'](_0x53d3e2,_0x987f('0xe9'));}var _0x162200=this[_0x987f('0x1d')][_0x987f('0x71')](this,_0x53d3e2[_0x987f('0xe8')]);if(!_0x162200){return this['channel'][_0x987f('0x34')](_0x53d3e2,'no\x20user\x20found');}var _0x20d0da=this[_0x987f('0x3a')][_0x987f('0x59')](_0x987f('0xea'),[util[_0x987f('0xa3')](_0x987f('0xeb'),_0x162200),_0x53d3e2['timeout'],_0x53d3e2['opts'],_0x53d3e2[_0x987f('0x73')]]);if(_0x20d0da[_0x987f('0xaa')]===-0x1){return _0x20d0da;}return this[_0x987f('0x3a')]['noop'](util[_0x987f('0xa3')]('Executed\x20command\x20%s','DIAL'));};AGIVertices[_0x987f('0x12')][_0x987f('0xec')]=function(_0x9984e){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0xed'),_0x9984e[_0x987f('0xb0')]));if(!this['isConfigured'](_0x9984e['key'])){return this[_0x987f('0x3a')][_0x987f('0xb1')](_0x987f('0xee'));}if(!this[_0x987f('0x89')](_0x9984e[_0x987f('0x5f')])){return this['channel']['noop']('no\x20text\x20configured');}this['channel'][_0x987f('0xef')]=!![];this[_0x987f('0x37')](_0x9984e);this[_0x987f('0xf0')](_0x9984e['text'],'in','','');this['channel']['noop'](util[_0x987f('0xa3')](_0x987f('0xf1'),_0x9984e[_0x987f('0x5f')]));var _0x57b739=this['googleDialogflow'][_0x987f('0x71')](this,_0x9984e);if(_0x57b739){for(var _0x1e6d87 in _0x57b739){if(_0x57b739['hasOwnProperty'](_0x1e6d87)){this[_0x987f('0x3a')][_0x987f('0xa5')](util[_0x987f('0xa3')](_0x987f('0xf2'),_0x1e6d87[_0x987f('0xf3')]()),_0x57b739[_0x1e6d87]);}}this['createSquareMessage'](_0x57b739['speech'],'out',_0x987f('0xec'),'');return this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')]('Dialogflow\x20Result\x20%s',_0x57b739['speech']));}return this[_0x987f('0x3a')][_0x987f('0x34')](_0x9984e,_0x987f('0xf4'));};AGIVertices['prototype'][_0x987f('0xf5')]=function(_0x31b289){logger['info'](util[_0x987f('0xa3')](_0x987f('0xf6'),_0x31b289['label']));if(!this[_0x987f('0x89')](_0x31b289[_0x987f('0x7f')])){return this[_0x987f('0x3a')][_0x987f('0xb1')](_0x987f('0xf7'));}if(!this[_0x987f('0x89')](_0x31b289[_0x987f('0x80')])){return this[_0x987f('0x3a')][_0x987f('0xb1')](_0x987f('0xf8'));}if(!this[_0x987f('0x89')](_0x31b289[_0x987f('0x81')])){return this[_0x987f('0x3a')]['noop']('no\x20private_key\x20configured');}if(!this[_0x987f('0x89')](_0x31b289['dialogflowV2_language'])){return this[_0x987f('0x3a')]['noop'](_0x987f('0xf9'));}if(!this[_0x987f('0x89')](_0x31b289['text'])){return this['channel'][_0x987f('0xb1')](_0x987f('0xb2'));}this[_0x987f('0x3a')][_0x987f('0xef')]=!![];this[_0x987f('0x37')](_0x31b289);this[_0x987f('0xf0')](_0x31b289[_0x987f('0x5f')],'in','','');this[_0x987f('0x3a')][_0x987f('0xb1')](util['format'](_0x987f('0xfa'),_0x31b289[_0x987f('0x5f')]));var _0x2ff7ec=this['googleDialogflowV2']['sync'](this,_0x31b289);if(_0x2ff7ec){for(var _0x2e6141 in _0x2ff7ec){if(_0x2ff7ec['hasOwnProperty'](_0x2e6141)){if(_0x2e6141!==_0x987f('0xfb')){this['channel'][_0x987f('0xa5')](util[_0x987f('0xa3')](_0x987f('0xf2'),_0x2e6141[_0x987f('0xf3')]()),_0x2ff7ec[_0x2e6141]);}}}this['createSquareMessage'](_0x2ff7ec[_0x987f('0xfc')],'out',_0x987f('0xf5'),_0x2ff7ec['providerResponse']);return this['channel'][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0xfd'),_0x2ff7ec[_0x987f('0xfc')]));}return this['channel']['error'](_0x31b289,_0x987f('0xfe'));};AGIVertices[_0x987f('0x12')][_0x987f('0xff')]=function(_0xe5d704){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0x100'),_0xe5d704['label']));if(!this[_0x987f('0x89')](_0xe5d704[_0x987f('0x101')])){return this[_0x987f('0x3a')][_0x987f('0xb1')]('no\x20ndauth\x20url\x20configured');}if(!this['isConfigured'](_0xe5d704[_0x987f('0x102')])){return this[_0x987f('0x3a')][_0x987f('0xb1')](_0x987f('0x103'));}if(!this[_0x987f('0x89')](_0xe5d704[_0x987f('0x104')])){return this[_0x987f('0x3a')]['noop'](_0x987f('0x105'));}if(!this['isConfigured'](_0xe5d704[_0x987f('0x106')])){return this[_0x987f('0x3a')]['noop'](_0x987f('0xb2'));}this[_0x987f('0x3a')][_0x987f('0xef')]=!![];this[_0x987f('0x37')](_0xe5d704);this[_0x987f('0xf0')](_0xe5d704[_0x987f('0x5f')],'in','','');this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x107'),_0xe5d704['text']));var _0x3915e7=this[_0x987f('0x83')][_0x987f('0x71')](this,_0xe5d704);if(_0x3915e7){for(var _0x2d32a4 in _0x3915e7){if(_0x3915e7[_0x987f('0x9d')](_0x2d32a4)){this[_0x987f('0x3a')]['setVariable'](util[_0x987f('0xa3')](_0x987f('0x108'),_0x2d32a4[_0x987f('0xf3')]()),_0x3915e7[_0x2d32a4]);}}this[_0x987f('0xf0')](_0x3915e7[_0x987f('0xfc')],_0x987f('0x109'),_0x987f('0xff'),'');if(_0x3915e7[_0x987f('0x10a')]){this[_0x987f('0x3a')]['noop'](util[_0x987f('0xa3')]('Sestek\x20NDA\x20%s\x20file\x20created',_0x3915e7[_0x987f('0x10a')]));var _0x169d24=this[_0x987f('0x3a')][_0x987f('0x10b')](_0x3915e7[_0x987f('0x10a')]);try{fs['unlink'](_0x3915e7[_0x987f('0x10a')]+_0x987f('0x10c'));}catch(_0x153a0c){logger['error'](_0x153a0c);}return _0x169d24;}else{return this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x10d'),_0x3915e7['speech']));}}return this[_0x987f('0x3a')][_0x987f('0x34')](_0xe5d704,_0x987f('0x10e'));};AGIVertices[_0x987f('0x12')][_0x987f('0x10f')]=function(_0x5bb29b){logger['info'](util[_0x987f('0xa3')](_0x987f('0x110'),_0x5bb29b[_0x987f('0xb0')]));return this['channel'][_0x987f('0xb1')](_0x987f('0x10f'));};AGIVertices['prototype'][_0x987f('0x111')]=function(_0x498780){logger[_0x987f('0x2f')](util['format'](_0x987f('0x112'),_0x498780[_0x987f('0xb0')]));var _0x2d7d23='';if(_0x498780[_0x987f('0x113')]){if(!this[_0x987f('0x89')](_0x498780[_0x987f('0x113')])){return this['channel'][_0x987f('0x34')](_0x498780,_0x987f('0x114'));}else{var _0x426054=parseInt(_0x498780[_0x987f('0x113')],0xa);if(isNaN(_0x426054)){_0x2d7d23=_0x498780[_0x987f('0x113')];}else{_0x2d7d23=this['getTrunk'][_0x987f('0x71')](this,_0x498780[_0x987f('0x113')]);if(!_0x2d7d23){return this[_0x987f('0x3a')][_0x987f('0x34')](_0x498780,_0x987f('0x115'));}}}}else if(_0x498780[_0x987f('0x116')]){_0x2d7d23=_0x498780[_0x987f('0x116')];}else{return this['channel'][_0x987f('0x34')](_0x498780,_0x987f('0x114'));}var _0x417d94=this[_0x987f('0x3a')][_0x987f('0x59')](_0x987f('0xea'),[util['format'](_0x987f('0x117'),_0x2d7d23,_0x498780[_0x987f('0x48')]),_0x498780[_0x987f('0x68')],_0x498780[_0x987f('0x118')],_0x498780[_0x987f('0x73')]]);if(_0x417d94['result']===-0x1){return _0x417d94;}return this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x119'),'DIAL'));};AGIVertices['prototype']['finally']=function(_0x12e570){logger[_0x987f('0x2f')](util[_0x987f('0xa3')]('Enter\x20in\x20FINALLY\x20(%s)\x20block',_0x12e570[_0x987f('0xb0')]));return this[_0x987f('0x3a')]['noop'](_0x987f('0x11a'));};AGIVertices[_0x987f('0x12')]['getdigits']=function(_0x5c357c){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0x11b'),_0x5c357c['label']));if(_0x5c357c[_0x987f('0xad')]===0x0){return this[_0x987f('0xac')](_0x5c357c);}_0x5c357c[_0x987f('0xad')]-=0x1;if(!this[_0x987f('0x89')](_0x5c357c['file_id'])){return this[_0x987f('0x3a')][_0x987f('0x34')](_0x5c357c,_0x987f('0x11c'));}var _0x54ee86=this[_0x987f('0x20')][_0x987f('0x71')](this,_0x5c357c[_0x987f('0x11d')]);if(!_0x54ee86){return this[_0x987f('0x3a')][_0x987f('0x34')](_0x5c357c,_0x987f('0x11e'));}if(!this[_0x987f('0x89')](_0x5c357c[_0x987f('0xdf')])){return this[_0x987f('0x3a')][_0x987f('0x34')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x107d2c=this[_0x987f('0x3a')]['getData'](_0x54ee86,_0x5c357c[_0x987f('0x11f')],_0x5c357c[_0x987f('0x120')]);var _0x38bf1f=_0x107d2c[_0x987f('0xaa')]?_0x107d2c['result'][_0x987f('0x4d')]():'';logger[_0x987f('0x2f')]('test',JSON['stringify'](_0x107d2c));if(_0x107d2c['result']===-0x1){this['createSquareDetailsReport']['sync'](this,_0x5c357c,_0x38bf1f);return _0x107d2c;}else if(_0x107d2c[_0x987f('0xa8')]==='timeout'){_0x107d2c[_0x987f('0xaa')]=_0x38bf1f['length']>=parseInt(_0x5c357c[_0x987f('0x121')])?'x':'i';}else{_0x107d2c[_0x987f('0xaa')]=_0x38bf1f[_0x987f('0xa0')]>=parseInt(_0x5c357c['mindigit'])&&_0x38bf1f[_0x987f('0xa0')]<=parseInt(_0x5c357c[_0x987f('0x120')])?'x':'i';}var _0x462a75=this['getVariable'][_0x987f('0x71')](this,_0x5c357c[_0x987f('0xdf')]);if(!_0x462a75){return this[_0x987f('0x3a')][_0x987f('0x34')](_0x5c357c,'no\x20variable\x20found');}this[_0x987f('0x3a')][_0x987f('0xa5')](_0x462a75,_0x38bf1f);if(this[_0x987f('0x89')](_0x5c357c[_0x987f('0x122')])){var _0x2344d9=parseInt(_0x5c357c['hiddendigitsnum'],0xa);var _0x5254a8=rs[_0x987f('0x123')]({'charset':'*','length':_0x2344d9});var _0x17000e=_0x38bf1f[_0x987f('0xa0')];if(_0x17000e>0x0){if(_0x17000e>_0x2344d9){this[_0x987f('0x37')][_0x987f('0x71')](this,_0x5c357c,_0x5c357c['hiddendigitspos']===_0x987f('0x124')?_0x5254a8+_0x38bf1f['substr'](_0x2344d9):_0x38bf1f[_0x987f('0x125')](0x0,_0x17000e-_0x2344d9)+_0x5254a8);}else{this[_0x987f('0x37')][_0x987f('0x71')](this,_0x5c357c,rs[_0x987f('0x123')]({'charset':'*','length':_0x17000e}));}}else{this[_0x987f('0x37')][_0x987f('0x71')](this,_0x5c357c,'');}}else{this['createSquareDetailsReport'][_0x987f('0x71')](this,_0x5c357c,_0x38bf1f);}return _0x107d2c;};AGIVertices[_0x987f('0x12')][_0x987f('0xf')]=function(_0x426942){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0x126'),_0x426942[_0x987f('0xb0')]));return this['getdigits'](_0x426942);};AGIVertices[_0x987f('0x12')]['goal']=function(_0x4c6dd9){logger[_0x987f('0x2f')](util['format'](_0x987f('0x127'),_0x4c6dd9[_0x987f('0xb0')]));this[_0x987f('0x37')][_0x987f('0x71')](this,_0x4c6dd9,_0x4c6dd9[_0x987f('0x128')]);return this[_0x987f('0x3a')]['noop'](util[_0x987f('0xa3')]('GOAL\x20%s',_0x4c6dd9[_0x987f('0x128')]));};AGIVertices[_0x987f('0x12')]['awspolly']=function(_0x55917e){logger[_0x987f('0x2f')](util[_0x987f('0xa3')]('[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block',_0x55917e['label']));if(!this[_0x987f('0x89')](_0x55917e[_0x987f('0x90')])||!this[_0x987f('0x89')](_0x55917e[_0x987f('0x91')])){return this[_0x987f('0x3a')]['noop'](_0x987f('0x129'));}if(!this[_0x987f('0x89')](_0x55917e[_0x987f('0x5f')])){return this[_0x987f('0x3a')][_0x987f('0xb1')]('no\x20text\x20configured');}this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x12a'),_0x55917e['text']));var _0x5e449b=this[_0x987f('0x8b')][_0x987f('0x71')](this,_0x55917e);if(_0x5e449b){this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x12b'),_0x5e449b));var _0x14b4a7=this[_0x987f('0x3a')]['streamFile'](_0x5e449b);try{fs[_0x987f('0x12c')](_0x5e449b+_0x987f('0x10c'));}catch(_0x5d035c){logger['error'](_0x5d035c);}return _0x14b4a7;}return this[_0x987f('0x3a')][_0x987f('0x34')](_0x55917e,_0x987f('0x12d'));};AGIVertices[_0x987f('0x12')][_0x987f('0x12e')]=function(_0x172db9){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0x12f'),_0x172db9[_0x987f('0xb0')]));if(!this[_0x987f('0x89')](_0x172db9[_0x987f('0x90')])||!this['isConfigured'](_0x172db9[_0x987f('0x91')])){return this[_0x987f('0x3a')][_0x987f('0xb1')](_0x987f('0x129'));}if(!this['isConfigured'](_0x172db9['aws_bot_name'])){return this['channel'][_0x987f('0xb1')](_0x987f('0x130'));}if(!this[_0x987f('0x89')](_0x172db9[_0x987f('0x5f')])){return this[_0x987f('0x3a')][_0x987f('0xb1')](_0x987f('0xb2'));}this['channel'][_0x987f('0xef')]=!![];this['createSquareDetailsReport'](_0x172db9);this[_0x987f('0xf0')](_0x172db9[_0x987f('0x5f')],'in','','');this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')]('Trying\x20Amazon\x20Lex:\x20%s',_0x172db9['text']));var _0x45df35=this[_0x987f('0x8f')][_0x987f('0x71')](this,_0x172db9);if(_0x45df35){for(var _0x36d206 in _0x45df35){if(_0x45df35[_0x987f('0x9d')](_0x36d206)&&_[_0x987f('0x9a')](_0x45df35[_0x36d206])){this[_0x987f('0x3a')][_0x987f('0xa5')](util[_0x987f('0xa3')](_0x987f('0x131'),_0x36d206[_0x987f('0xf3')]()),_0x45df35[_0x36d206]);}}if(_[_0x987f('0x44')](_0x45df35['message'])){return this[_0x987f('0x3a')][_0x987f('0xb1')](_0x987f('0x132'));}else{this[_0x987f('0xf0')](_0x45df35[_0x987f('0x78')],'out',_0x987f('0x133'),'');return this[_0x987f('0x3a')][_0x987f('0xb1')](util['format'](_0x987f('0x134'),_0x45df35[_0x987f('0x78')]));}}return this[_0x987f('0x3a')][_0x987f('0x34')](_0x172db9,_0x987f('0x135'));};AGIVertices[_0x987f('0x12')]['googleasr']=function(_0x48bdfd){logger['info'](util[_0x987f('0xa3')](_0x987f('0x136'),_0x48bdfd['label'],_0x48bdfd[_0x987f('0x68')]));if(!this['isConfigured'](_0x48bdfd['key'])){return this[_0x987f('0x3a')][_0x987f('0xb1')]('no\x20key\x20configured');}var _0x378258=_0x987f('0x137');var _0x4fbe3d=util[_0x987f('0xa3')](_0x987f('0x138'),FILES_PATH,rs[_0x987f('0x123')](0x4));var _0x5911ef=util['format'](_0x987f('0xa4'),_0x4fbe3d,_0x378258);var _0x1a3b67=!![];if(_0x48bdfd[_0x987f('0x139')]===_0x987f('0x13a')){_0x1a3b67=![];}var _0x1941c5=this[_0x987f('0x3a')][_0x987f('0x13b')](_0x4fbe3d,_0x378258,_0x48bdfd[_0x987f('0x13c')],_0x48bdfd[_0x987f('0x68')],undefined,_0x1a3b67);if(_0x1941c5['result']!==-0x1){this[_0x987f('0x3a')][_0x987f('0xb1')](util['format'](_0x987f('0x13d'),_0x5911ef));var _0x48ee78=this[_0x987f('0x94')][_0x987f('0x71')](this,_0x48bdfd,_0x5911ef);if(_0x48ee78){for(var _0x4a07f8 in _0x48ee78){if(_0x48ee78[_0x987f('0x9d')](_0x4a07f8)){this[_0x987f('0x3a')][_0x987f('0xa5')](util[_0x987f('0xa3')]('GOOGLE_ASR_%s',_0x4a07f8['toUpperCase']()),_0x48ee78[_0x4a07f8]);}}return this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x13e'),JSON[_0x987f('0x74')](_0x48ee78)));}}return _0x1941c5;};AGIVertices[_0x987f('0x12')][_0x987f('0x13f')]=function(_0x4081b9){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0x140'),_0x4081b9['label']));if(!this[_0x987f('0x89')](_0x4081b9[_0x987f('0x96')])){return this[_0x987f('0x3a')][_0x987f('0xb1')](_0x987f('0x141'));}if(!this[_0x987f('0x89')](_0x4081b9['appsecret'])){return this[_0x987f('0x3a')]['noop'](_0x987f('0x142'));}var _0x20e3f6='wav';var _0x41c363=util['format'](_0x987f('0x138'),FILES_PATH,rs[_0x987f('0x123')](0x4));var _0x267b84=util[_0x987f('0xa3')](_0x987f('0xa4'),_0x41c363,_0x20e3f6);var _0x3deb95=!![];if(_0x4081b9[_0x987f('0x139')]==='NOBEEP'){_0x3deb95=![];}var _0x37aaae=this[_0x987f('0x3a')][_0x987f('0x13b')](_0x41c363,_0x20e3f6,_0x4081b9[_0x987f('0x13c')],_0x4081b9[_0x987f('0x68')],undefined,_0x3deb95);if(_0x37aaae[_0x987f('0xaa')]!==-0x1){this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x143'),_0x267b84));var _0x2ed4ac=this[_0x987f('0x95')]['sync'](this,_0x4081b9,_0x267b84);if(_0x2ed4ac){for(var _0x9c62ea in _0x2ed4ac){if(_0x2ed4ac['hasOwnProperty'](_0x9c62ea)){this['channel']['setVariable'](util[_0x987f('0xa3')]('TILDE_ASR_%s',_0x9c62ea[_0x987f('0xf3')]()),_0x2ed4ac[_0x9c62ea]);}}return this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x144'),JSON[_0x987f('0x74')](_0x2ed4ac)));}}return _0x37aaae;};AGIVertices[_0x987f('0x12')][_0x987f('0x145')]=function(_0x440674){logger[_0x987f('0x2f')](util['format'](_0x987f('0x146'),_0x440674[_0x987f('0xb0')]));return this[_0x987f('0x3a')][_0x987f('0x147')](_0x440674[_0x987f('0x148')],_0x440674[_0x987f('0x149')],_0x440674[_0x987f('0x3f')]);};AGIVertices[_0x987f('0x12')][_0x987f('0x14a')]=function(_0x1e06d7){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0x14b'),_0x1e06d7[_0x987f('0xb0')]));if(!this[_0x987f('0x89')](_0x1e06d7['condition'])){return this['channel']['error'](_0x1e06d7,'no\x20condition\x20configured');}try{var _0x2a5243=eval(_0x1e06d7[_0x987f('0x14c')])?_0x987f('0x14d'):_0x987f('0x14e');this[_0x987f('0x3a')]['noop'](util[_0x987f('0xa3')]('EVAL\x20CONDITION\x20%s\x20%s',_0x1e06d7[_0x987f('0x14c')],_0x2a5243));return{'code':0xc8,'result':_0x2a5243};}catch(_0x731c01){return{'code':0xc8,'result':_0x987f('0x14e')};}};AGIVertices['prototype'][_0x987f('0x14f')]=function(_0x421aeb){logger[_0x987f('0x2f')](util['format']('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0x421aeb['label']));if(!this[_0x987f('0x89')](_0x421aeb['interval_id'])){return this[_0x987f('0x3a')][_0x987f('0x34')](_0x421aeb,_0x987f('0x150'));}var _0x47c7f8=this[_0x987f('0x26')]['sync'](this,_0x421aeb['interval_id']);if(!_0x47c7f8){return this[_0x987f('0x3a')]['error'](_0x421aeb,'no\x20intervals\x20found');}for(var _0x471fef=0x0;_0x471fef<_0x47c7f8[_0x987f('0xa0')];_0x471fef+=0x1){var _0x1d02cc=this[_0x987f('0x3a')][_0x987f('0x13')](util['format'](_0x987f('0x151'),_0x47c7f8[_0x471fef]));if(_0x1d02cc[_0x987f('0xaa')]===-0x1){return _0x1d02cc;}logger['info'](util[_0x987f('0xa3')](_0x987f('0x152'),_0x47c7f8[_0x471fef],_0x1d02cc['extra']));if(_0x1d02cc['extra']==='true'){logger['info'](util[_0x987f('0xa3')](_0x987f('0x152'),_0x47c7f8[_0x471fef],'true'));this['channel'][_0x987f('0xb1')](util['format'](_0x987f('0x152'),_0x47c7f8[_0x471fef],_0x987f('0x14d')));return{'code':0xc8,'result':'true'};}else{logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0x152'),_0x47c7f8[_0x471fef],_0x987f('0x14e')));this[_0x987f('0x3a')]['noop'](util[_0x987f('0xa3')](_0x987f('0x152'),_0x47c7f8[_0x471fef],_0x987f('0x14e')));}}return{'code':0xc8,'result':_0x987f('0x14e')};};AGIVertices[_0x987f('0x12')][_0x987f('0x153')]=function(_0x46f70a){logger[_0x987f('0x2f')](util[_0x987f('0xa3')]('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x46f70a[_0x987f('0xb0')]));return this[_0x987f('0x3a')][_0x987f('0x153')]();};AGIVertices[_0x987f('0x12')][_0x987f('0x154')]=function(_0x5e7947){logger['info'](util['format'](_0x987f('0x155'),_0x5e7947[_0x987f('0xb0')]));if(!this[_0x987f('0x89')](_0x5e7947[_0x987f('0x7c')])){return this[_0x987f('0x3a')]['noop'](_0x987f('0xee'));}var _0x5e071c='wav';var _0x5732fc=util[_0x987f('0xa3')](_0x987f('0x138'),FILES_PATH,rs[_0x987f('0x123')](0x4));var _0x40fbac=util[_0x987f('0xa3')](_0x987f('0xa4'),_0x5732fc,_0x5e071c);var _0xb3c6b5=!![];if(_0x5e7947[_0x987f('0x139')]===_0x987f('0x13a')){_0xb3c6b5=![];}var _0x110387=this[_0x987f('0x3a')]['recordFile'](_0x5732fc,_0x5e071c,_0x5e7947['intKey'],_0x5e7947[_0x987f('0x68')],undefined,_0xb3c6b5);if(_0x110387['result']!==-0x1){this[_0x987f('0x3a')]['noop'](util[_0x987f('0xa3')](_0x987f('0x156'),_0x40fbac));var _0x476577=this[_0x987f('0x87')][_0x987f('0x71')](this,_0x5e7947,_0x40fbac);if(_0x476577){for(var _0xdaef48 in _0x476577){if(_0x476577['hasOwnProperty'](_0xdaef48)){this[_0x987f('0x3a')][_0x987f('0xa5')](util['format']('ISPEECH_ASR_%s',_0xdaef48['toUpperCase']()),_0x476577[_0xdaef48]);}}return this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x157'),JSON[_0x987f('0x74')](_0x476577)));}}return _0x110387;};AGIVertices[_0x987f('0x12')][_0x987f('0x158')]=function(_0x3a400b){logger[_0x987f('0x2f')](util['format'](_0x987f('0x159'),_0x3a400b[_0x987f('0xb0')]));if(!this[_0x987f('0x89')](_0x3a400b[_0x987f('0x7c')])){return this[_0x987f('0x3a')][_0x987f('0xb1')]('no\x20key\x20configured');}if(!this[_0x987f('0x89')](_0x3a400b[_0x987f('0x5f')])){return this[_0x987f('0x3a')][_0x987f('0xb1')](_0x987f('0xb2'));}this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x15a'),_0x3a400b[_0x987f('0x5f')]));var _0x2040cb=this[_0x987f('0x84')][_0x987f('0x71')](this,_0x3a400b);if(_0x2040cb){this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x156'),_0x2040cb));var _0x2f1f17=this[_0x987f('0x3a')][_0x987f('0x10b')](_0x2040cb,_0x3a400b[_0x987f('0x13c')]);try{fs[_0x987f('0x12c')](_0x2040cb+_0x987f('0x10c'));}catch(_0x3ca38f){logger[_0x987f('0x34')](_0x3ca38f);}return _0x2f1f17;}return this[_0x987f('0x3a')][_0x987f('0x34')](_0x3a400b,_0x987f('0x15b'));};AGIVertices[_0x987f('0x12')][_0x987f('0x15c')]=function(_0x595808){logger[_0x987f('0x2f')](util['format']('Enter\x20in\x20LOGIN\x20(%s)\x20block',_0x595808[_0x987f('0xb0')]));if(!this[_0x987f('0x89')](_0x595808['findBy'])){return this[_0x987f('0x3a')]['error'](_0x595808,_0x987f('0x15d'));}logger[_0x987f('0x2f')](util['format'](_0x987f('0x15e'),this[_0x987f('0x3a')][_0x987f('0x3c')],_0x595808['findBy']));var _0x4eb2e1=this['agentLogin'][_0x987f('0x71')](this,_0x595808[_0x987f('0x15f')]);if(_0x4eb2e1){logger[_0x987f('0x2f')](util['format'](_0x987f('0x160'),this['channel']['callerid'],_0x595808[_0x987f('0x15f')]));this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x160'),this[_0x987f('0x3a')]['callerid'],_0x595808[_0x987f('0x15f')]));return{'code':0xc8,'result':_0x987f('0x161')};}else{logger[_0x987f('0x2f')](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x987f('0x3a')][_0x987f('0x3c')],_0x595808[_0x987f('0x15f')]));this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x162'),this['channel'][_0x987f('0x3c')],_0x595808['findBy']));return{'code':0xc8,'result':_0x987f('0x163')};}};AGIVertices[_0x987f('0x12')][_0x987f('0x164')]=function(_0x1dc141){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0x165'),_0x1dc141[_0x987f('0xb0')]));if(!this['isConfigured'](_0x1dc141[_0x987f('0x15f')])){return this[_0x987f('0x3a')]['error'](_0x1dc141,_0x987f('0x15d'));}logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0x15e'),this[_0x987f('0x3a')][_0x987f('0x3c')],_0x1dc141[_0x987f('0x15f')]));var _0x164629=this[_0x987f('0x54')]['sync'](this,_0x1dc141[_0x987f('0x15f')]);if(_0x164629){logger[_0x987f('0x2f')](util[_0x987f('0xa3')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0x987f('0x3c')],_0x1dc141[_0x987f('0x15f')]));this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x160'),this[_0x987f('0x3a')][_0x987f('0x3c')],_0x1dc141[_0x987f('0x15f')]));return{'code':0xc8,'result':'success'};}else{logger[_0x987f('0x2f')](util[_0x987f('0xa3')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0x987f('0x3c')],_0x1dc141[_0x987f('0x15f')]));this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x162'),this[_0x987f('0x3a')][_0x987f('0x3c')],_0x1dc141['findBy']));return{'code':0xc8,'result':_0x987f('0x163')};}};AGIVertices[_0x987f('0x12')]['math']=function(_0x1530a6){logger[_0x987f('0x2f')](util[_0x987f('0xa3')]('Enter\x20in\x20MATH\x20(%s)\x20block',_0x1530a6[_0x987f('0xb0')]));if(!this[_0x987f('0x89')](_0x1530a6[_0x987f('0x166')])){return this[_0x987f('0x3a')][_0x987f('0x34')](_0x1530a6,_0x987f('0x167'));}this[_0x987f('0x3a')]['noop'](util['format'](_0x987f('0x168'),_0x1530a6[_0x987f('0x166')]));var _0x4a53d2=eval(_0x1530a6[_0x987f('0x166')]);if(!this[_0x987f('0x89')](_0x1530a6[_0x987f('0xdf')])){return this['channel'][_0x987f('0xb1')](_0x987f('0x169'));}var _0x11214b=this['getVariable'][_0x987f('0x71')](this,_0x1530a6[_0x987f('0xdf')]);if(!_0x11214b){return this[_0x987f('0x3a')]['error'](_0x1530a6,_0x987f('0xe0'));}if(_['isArray'](_0x4a53d2)){var _0x1bc407=this;_0x4a53d2['forEach'](function(_0x5e270f,_0x5737ce){_0x1bc407['channel']['setVariable'](util[_0x987f('0xa3')]('%s[%s]',_0x11214b,_0x5737ce),_0x5e270f);});return this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x16a'),_0x11214b));}else{return this['channel'][_0x987f('0xa5')](_0x11214b,_0x4a53d2);}};AGIVertices[_0x987f('0x12')][_0x987f('0xd')]=function(_0x527144){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0x16b'),_0x527144[_0x987f('0xb0')]));if(_0x527144['retry']===0x0){return this[_0x987f('0xac')](_0x527144);}_0x527144[_0x987f('0xad')]-=0x1;if(!this[_0x987f('0x89')](_0x527144[_0x987f('0x11d')])){return this[_0x987f('0x3a')][_0x987f('0x34')](_0x527144,'no\x20file\x20audio\x20selected');}var _0x391156=this[_0x987f('0x20')][_0x987f('0x71')](this,_0x527144[_0x987f('0x11d')]);if(!_0x391156){return this[_0x987f('0x3a')][_0x987f('0x34')](_0x527144,'no\x20file\x20audio\x20found');}var _0xe0d561=this[_0x987f('0x3a')][_0x987f('0x16c')](_0x391156,_0x527144[_0x987f('0x11f')],_0x527144[_0x987f('0x16d')]);var _0x14e3d6=_0xe0d561[_0x987f('0xaa')];if(_0xe0d561[_0x987f('0xaa')]===-0x1){this[_0x987f('0x37')][_0x987f('0x71')](this,_0x527144,'-1');return _0xe0d561;}else if(_0xe0d561['extra']===_0x987f('0x68')){_0xe0d561[_0x987f('0xaa')]=_0xe0d561[_0x987f('0xaa')][_0x987f('0xa0')]>0x0?_0xe0d561[_0x987f('0xaa')]:'t';}else if(_['isEmpty'](_0xe0d561[_0x987f('0xaa')])){_0xe0d561[_0x987f('0xaa')]='#';_0x14e3d6='#';}if(!this[_0x987f('0x89')](_0x527144[_0x987f('0xdf')])){this['channel']['noop'](_0x987f('0x169'));}else{var _0x325727=this['getVariable'][_0x987f('0x71')](this,_0x527144[_0x987f('0xdf')]);if(!_0x325727){return this[_0x987f('0x3a')][_0x987f('0x34')](_0x527144,_0x987f('0xe0'));}this[_0x987f('0x3a')][_0x987f('0xa5')](_0x325727,_0x14e3d6);}this[_0x987f('0x37')][_0x987f('0x71')](this,_0x527144,_0x14e3d6);return _0xe0d561;};AGIVertices[_0x987f('0x12')][_0x987f('0xb1')]=function(_0x9fa02f){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0x16e'),_0x9fa02f[_0x987f('0xb0')]));return this[_0x987f('0x3a')]['noop'](_0x9fa02f[_0x987f('0x16f')]||_0x9fa02f['label']);};AGIVertices[_0x987f('0x12')]['pause']=function(_0x448c35){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0x170'),_0x448c35[_0x987f('0xb0')]));if(!this['isConfigured'](_0x448c35[_0x987f('0x15f')])){return this[_0x987f('0x3a')][_0x987f('0x34')](_0x448c35,'no\x20find\x20by\x20configured');}logger[_0x987f('0x2f')](util[_0x987f('0xa3')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this['channel'][_0x987f('0x3c')],_0x448c35['findBy']));var _0x3949e4=this[_0x987f('0x4f')][_0x987f('0x71')](this,_0x448c35[_0x987f('0x171')]);var _0x266ae6=this[_0x987f('0x51')][_0x987f('0x71')](this,_0x448c35['findBy'],_0x3949e4);if(_0x266ae6){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0x160'),this[_0x987f('0x3a')][_0x987f('0x3c')],_0x448c35[_0x987f('0x15f')]));this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x160'),this[_0x987f('0x3a')]['callerid'],_0x448c35[_0x987f('0x15f')]));return{'code':0xc8,'result':'success'};}else{logger[_0x987f('0x2f')](util[_0x987f('0xa3')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x987f('0x3a')]['callerid'],_0x448c35[_0x987f('0x15f')]));this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x160'),this[_0x987f('0x3a')][_0x987f('0x3c')],_0x448c35[_0x987f('0x15f')]));return{'code':0xc8,'result':_0x987f('0x163')};}};AGIVertices[_0x987f('0x12')][_0x987f('0x172')]=function(_0x441b95){logger['info'](util[_0x987f('0xa3')](_0x987f('0x173'),_0x441b95['label']));if(!this[_0x987f('0x89')](_0x441b95[_0x987f('0x11d')])){return this[_0x987f('0x3a')][_0x987f('0x34')](_0x441b95,'no\x20file\x20audio\x20selected');}var _0x29ec48=this[_0x987f('0x20')]['sync'](this,_0x441b95[_0x987f('0x11d')]);if(!_0x29ec48){return this['channel']['error'](_0x441b95,_0x987f('0x11e'));}var _0x2c6684=this[_0x987f('0x3a')][_0x987f('0x59')](_0x987f('0x174'),[_0x29ec48,_0x441b95[_0x987f('0x118')]]);if(_0x2c6684[_0x987f('0xaa')]===-0x1){return _0x2c6684;}return this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0xca'),'PLAYBACK',_0x29ec48));};AGIVertices[_0x987f('0x12')]['queue']=function(_0xa67f3){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0x175'),_0xa67f3[_0x987f('0xb0')]));if(!this[_0x987f('0x89')](_0xa67f3[_0x987f('0x176')])){return this[_0x987f('0x3a')]['error'](_0xa67f3,_0x987f('0x177'));}var _0x3665c3='';var _0x96c952=parseInt(_0xa67f3[_0x987f('0x176')],0xa);if(isNaN(_0x96c952)){_0x3665c3=_0xa67f3[_0x987f('0x176')];}else{_0x3665c3=this[_0x987f('0x17')]['sync'](this,_0xa67f3['queue_id']);if(!_0x3665c3){return this[_0x987f('0x3a')][_0x987f('0x34')](_0xa67f3,_0x987f('0x178'));}}var _0x24a495='';if(this[_0x987f('0x89')](_0xa67f3[_0x987f('0x11d')])){var _0x3fb307=this[_0x987f('0x20')][_0x987f('0x71')](this,_0xa67f3[_0x987f('0x11d')]);if(_0x3fb307){_0x24a495=_0x3fb307;}}this['createSquareDetailsReport'][_0x987f('0x71')](this,_0xa67f3,_0x3665c3);if(_0xa67f3[_0x987f('0x118')]['indexOf']('x')<0x0){_0xa67f3[_0x987f('0x118')]+='x';}if(_0xa67f3['opts']['indexOf']('X')<0x0){_0xa67f3[_0x987f('0x118')]+='X';}this[_0x987f('0x3a')]['setVariable'](_0x987f('0x179'),_0x3665c3?_0x3665c3[_0x987f('0x17a')]():'');var _0x5d2c47=this[_0x987f('0x3a')][_0x987f('0x59')](_0x987f('0x17b'),[_0x3665c3,_0xa67f3[_0x987f('0x118')],_0xa67f3['url'],_0x24a495,_0xa67f3[_0x987f('0x68')],_0xa67f3[_0x987f('0x7')],_0xa67f3[_0x987f('0x17c')],_0xa67f3[_0x987f('0x17d')],'',_0xa67f3[_0x987f('0x17e')]]);if(_0x5d2c47[_0x987f('0xaa')]===-0x1){return _0x5d2c47;}return this['channel']['noop'](util[_0x987f('0xa3')]('Executed\x20command\x20%s\x20%s',_0x987f('0x17b'),_0x3665c3));};AGIVertices['prototype']['record']=function(_0x517475){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0x17f'),_0x517475[_0x987f('0xb0')]));var _0x549552=_0x517475['recordingFormat']||'wav';var _0x1f57f2=util[_0x987f('0xa3')]('%s_%s',this[_0x987f('0x3a')][_0x987f('0x38')],rs[_0x987f('0x123')](0x5));var _0x37bc86=util[_0x987f('0xa3')](_0x987f('0x180'),FILES_PATH,_0x1f57f2,_0x549552);var _0x2c6aaf=util[_0x987f('0xa3')](_0x987f('0x138'),FILES_PATH,_0x1f57f2);this[_0x987f('0x3d')][_0x987f('0x71')](this,_0x517475,_0x1f57f2,_0x37bc86);this[_0x987f('0x3a')][_0x987f('0xa5')](_0x987f('0x181'),_0x1f57f2);logger[_0x987f('0x2f')](_0x987f('0x182'),_0x2c6aaf,_0x549552,_0x517475[_0x987f('0x183')],_0x517475[_0x987f('0x68')]);return this[_0x987f('0x3a')][_0x987f('0x13b')](_0x2c6aaf,_0x549552,_0x517475[_0x987f('0x183')],_0x517475['timeout'],undefined,!![]);};AGIVertices[_0x987f('0x12')][_0x987f('0x184')]=function(_0x22c13d){logger['info'](util[_0x987f('0xa3')](_0x987f('0x185'),_0x22c13d[_0x987f('0xb0')]));if(!this['isConfigured'](_0x22c13d[_0x987f('0x73')])){return this[_0x987f('0x3a')][_0x987f('0xb1')](_0x987f('0x186'));}var _0x5cd93e=this[_0x987f('0x66')][_0x987f('0x71')](this,_0x22c13d);logger[_0x987f('0x2f')](util[_0x987f('0xa3')]('Response:',util[_0x987f('0x187')](_0x5cd93e,{'showHidden':![],'depth':null})));if(!this[_0x987f('0x89')](_0x22c13d[_0x987f('0xdf')])){return this[_0x987f('0x3a')][_0x987f('0xb1')](_0x987f('0x188'));}var _0xe8a9f1=this['getVariable'][_0x987f('0x71')](this,_0x22c13d[_0x987f('0xdf')]);if(!_0xe8a9f1){return this[_0x987f('0x3a')][_0x987f('0x34')](_0x22c13d,_0x987f('0xe0'));}this[_0x987f('0x3a')][_0x987f('0xa5')](util['format'](_0x987f('0x189'),_0xe8a9f1),_0x5cd93e[_0x987f('0x77')]?_0x5cd93e[_0x987f('0x77')]:_0x987f('0x18a'));this[_0x987f('0x3a')][_0x987f('0xa5')](util[_0x987f('0xa3')]('%s_STATUS_MESSAGE',_0xe8a9f1),_0x5cd93e[_0x987f('0x76')]?_0x5cd93e[_0x987f('0x76')]:'OK');if(_0x5cd93e[_0x987f('0x6c')]){try{this[_0x987f('0xa2')](_0x5cd93e[_0x987f('0x6c')],_0xe8a9f1);}catch(_0x51eb01){logger['error'](util[_0x987f('0xa3')](_0x987f('0x18b'),_0xe8a9f1));}}return this['channel'][_0x987f('0xb1')](util['format'](_0x987f('0x18c'),_0xe8a9f1));};AGIVertices[_0x987f('0x12')][_0x987f('0x18d')]=function(_0x355478){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0x18e'),_0x355478[_0x987f('0xb0')]));return this[_0x987f('0x3a')][_0x987f('0x18f')](_0x355478[_0x987f('0x190')][_0x987f('0x5b')](/\s+/g,''),_0x355478['escape_digits']);};AGIVertices[_0x987f('0x12')][_0x987f('0x191')]=function(_0x6d2407){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0x192'),_0x6d2407[_0x987f('0xb0')]));return this['channel'][_0x987f('0x193')](_0x6d2407['number']['replace'](/\s+/g,''),_0x6d2407[_0x987f('0x183')]);};AGIVertices[_0x987f('0x12')]['sayphonetic']=function(_0x43ff56){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0x194'),_0x43ff56[_0x987f('0xb0')]));return this['channel'][_0x987f('0x195')](_0x43ff56[_0x987f('0x5f')],_0x43ff56['escape_digits']);};AGIVertices['prototype'][_0x987f('0x196')]=function(_0x1bf003){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0x197'),_0x1bf003[_0x987f('0xb0')]));if(!this['isConfigured'](_0x1bf003[_0x987f('0x198')])){return this['channel'][_0x987f('0xb1')]('no\x20mail\x20account\x20configured');}var _0x53c697=this['getMailAccount'][_0x987f('0x71')](this,_0x1bf003['account_id']);if(!_0x53c697||!_0x53c697[_0x987f('0x199')]){return this[_0x987f('0x3a')][_0x987f('0x34')](_0x1bf003,'no\x20mail\x20account\x20found');}var _0x2a8329={'from':util[_0x987f('0xa3')](_0x987f('0x19a'),_0x53c697[_0x987f('0x15')],_0x53c697[_0x987f('0x19b')]||_0x53c697[_0x987f('0x199')][_0x987f('0x19c')]),'to':_0x1bf003['to']||'','cc':_0x1bf003['cc']||'','bcc':_0x1bf003['bcc']||'','subject':_0x1bf003[_0x987f('0x19d')],'html':_0x1bf003[_0x987f('0x5f')],'text':_0x1bf003[_0x987f('0x5f')]};var _0x175e1a={'tls':{'rejectUnauthorized':![]}};if(_0x53c697['Smtp']['service']){_0x175e1a[_0x987f('0x19e')]=_0x53c697['Smtp'][_0x987f('0x19e')];}else{_0x175e1a['host']=_0x53c697['Smtp'][_0x987f('0x19f')];_0x175e1a[_0x987f('0x1a0')]=_0x53c697[_0x987f('0x199')][_0x987f('0x1a0')];_0x175e1a['secure']=_0x53c697['Smtp'][_0x987f('0x1a1')];}if(_0x53c697['Smtp'][_0x987f('0x1a2')]){_0x175e1a[_0x987f('0x1a3')]={'user':_0x53c697[_0x987f('0x199')][_0x987f('0x19c')],'pass':_0x53c697[_0x987f('0x199')][_0x987f('0x1a4')]};}if(this[_0x987f('0x89')](_0x1bf003[_0x987f('0x1a5')])){}logger[_0x987f('0xe6')](_0x987f('0x1a6'),JSON['stringify'](_0x2a8329));this[_0x987f('0x37')][_0x987f('0x71')](this,_0x1bf003,_0x1bf003[_0x987f('0x198')]);this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')]('Trying\x20SendMail\x20with\x20account\x20%s',_0x53c697[_0x987f('0x15')]));this[_0x987f('0x1a7')][_0x987f('0x71')](this,_0x175e1a,_0x2a8329);return this['channel'][_0x987f('0xb1')](_0x987f('0x1a8'));};AGIVertices['prototype'][_0x987f('0x1a9')]=function(_0x34745d){logger[_0x987f('0x2f')](util[_0x987f('0xa3')]('Enter\x20in\x20SENDFAX\x20(%s)\x20block',_0x34745d[_0x987f('0xb0')]));return this['channel'][_0x987f('0xb1')](_0x987f('0x1aa'));};AGIVertices[_0x987f('0x12')]['sendSMS']=function(_0x305275){logger[_0x987f('0x2f')](util['format'](_0x987f('0x1ab'),_0x305275['label']));if(!this['isConfigured'](_0x305275[_0x987f('0x1ac')])){return this[_0x987f('0x3a')]['noop'](_0x987f('0x1ad'));}var _0x4a2bac=this[_0x987f('0x1ae')][_0x987f('0x71')](this,_0x305275[_0x987f('0x1ac')]);if(!_0x4a2bac){return this[_0x987f('0x3a')][_0x987f('0x34')](_0x305275,_0x987f('0x1af'));}var _0x5f4ced={'body':_0x305275[_0x987f('0x1b0')],'phone':_0x305275['to']||'','SmsAccountId':_0x4a2bac['id']};logger['debug'](_0x987f('0x1b1'),JSON['stringify'](_0x5f4ced));this[_0x987f('0x37')][_0x987f('0x71')](this,_0x305275,_0x305275[_0x987f('0x1ac')]);this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x1b2'),_0x4a2bac[_0x987f('0x15')]));this[_0x987f('0x36')][_0x987f('0x71')](this,_0x5f4ced);return this['channel']['noop']('Sms\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices['prototype'][_0x987f('0x1b3')]=function(_0x4394fa){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0x1b4'),_0x4394fa[_0x987f('0xb0')]));if(!this[_0x987f('0x89')](_0x4394fa[_0x987f('0xdf')])){return this['channel'][_0x987f('0x34')](_0x4394fa,_0x987f('0x1b5'));}var _0x20122f=this['getVariable'][_0x987f('0x71')](this,_0x4394fa[_0x987f('0xdf')]);if(!_0x20122f){return this['channel'][_0x987f('0x34')](_0x4394fa,_0x987f('0xe0'));}return this[_0x987f('0x3a')][_0x987f('0xa5')](_0x20122f,_0x4394fa['variable_value']);};AGIVertices[_0x987f('0x12')][_0x987f('0x1b6')]=function(_0xebd401){logger[_0x987f('0x2f')](util[_0x987f('0xa3')]('Enter\x20in\x20START\x20(%s)\x20block',_0xebd401['label']));this['channel'][_0x987f('0xb1')](_0x987f('0x1b7'));if(_0xebd401['answer']==='yes'){this['channel'][_0x987f('0xb1')](_0x987f('0x1b8'));return this[_0x987f('0x3a')]['answer']();}return this[_0x987f('0x3a')][_0x987f('0xb1')](_0x987f('0x1b9'));};AGIVertices[_0x987f('0x12')][_0x987f('0x1ba')]=function(_0x31fc60){logger['info'](util[_0x987f('0xa3')](_0x987f('0x1bb'),_0x31fc60[_0x987f('0xb0')]));if(!this[_0x987f('0x89')](_0x31fc60[_0x987f('0x1bc')])){return this['channel'][_0x987f('0x34')](_0x31fc60,_0x987f('0x1bd'));}var _0x51f3cb=this[_0x987f('0x1be')][_0x987f('0x71')](this,_0x31fc60[_0x987f('0x1bc')]);if(!this['isConfigured'](_0x51f3cb)){return this[_0x987f('0x3a')]['error'](_0x31fc60,util[_0x987f('0xa3')](_0x987f('0x1bf'),_0x31fc60[_0x987f('0x1bc')]));}if(_0x51f3cb===this[_0x987f('0x3a')][_0x987f('0x3b')]){return this[_0x987f('0x3a')][_0x987f('0x34')](_0x31fc60,_0x987f('0x1c0'));}this[_0x987f('0x37')]['sync'](this,_0x31fc60,_0x51f3cb);var _0x549533=this[_0x987f('0x3a')][_0x987f('0x59')](_0x987f('0x1c1'),util['format'](_0x987f('0x1c2'),config[_0x987f('0x7')][_0x987f('0x19f')]||_0x987f('0x1c3'),_0x51f3cb,this[_0x987f('0x3a')][_0x987f('0x3b')]));if(_0x549533[_0x987f('0xaa')]===-0x1){return _0x549533;}return this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0xca'),'AGI',_0x51f3cb));};AGIVertices[_0x987f('0x12')]['system']=function(_0x594828){logger[_0x987f('0x2f')](util['format'](_0x987f('0x1c4'),_0x594828[_0x987f('0xb0')]));var _0x465d01=this[_0x987f('0x58')][_0x987f('0x71')](this,_0x594828[_0x987f('0xbf')]);this[_0x987f('0x37')]['sync'](this,_0x594828,_0x594828[_0x987f('0xbf')]);if(this[_0x987f('0x89')](_0x594828['variable_id'])){var _0x57065e=this['getVariable'][_0x987f('0x71')](this,_0x594828[_0x987f('0xdf')]);if(_0x57065e){this[_0x987f('0x3a')][_0x987f('0xa5')](_0x57065e,_0x465d01);return this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x1c5'),_0x594828[_0x987f('0xbf')],_0x57065e));}}return this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x1c6'),_0x594828['command']));};AGIVertices[_0x987f('0x12')][_0x987f('0x1c7')]=function(_0xed5748){logger[_0x987f('0x2f')](util['format']('Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block',_0xed5748['label']));_0xed5748[_0x987f('0x5f')]=_0xed5748[_0x987f('0x5f')]['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x987f('0x89')](_0xed5748[_0x987f('0x5d')])){return this[_0x987f('0x3a')][_0x987f('0xb1')](_0x987f('0x1c8'));}if(!this['isConfigured'](_0xed5748[_0x987f('0x5f')])){return this[_0x987f('0x3a')][_0x987f('0xb1')](_0x987f('0xb2'));}this[_0x987f('0x3a')][_0x987f('0xb1')](util['format']('Trying\x20Google\x20Cloud\x20TTS\x20%s',_0xed5748[_0x987f('0x5f')]));var _0x3582ae=this['googleCloudTTS'][_0x987f('0x71')](this,_0xed5748);if(_0x3582ae){this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')]('Google\x20Cloud\x20TTS\x20%s\x20file\x20created',_0x3582ae));var _0x437aee=this[_0x987f('0x3a')][_0x987f('0x10b')](_0x3582ae);try{fs['unlink'](_0x3582ae+_0x987f('0x10c'));}catch(_0x40f198){logger['error'](_0x40f198);}return _0x437aee;}return this['channel'][_0x987f('0x34')](_0xed5748,_0x987f('0x1c9'));};AGIVertices[_0x987f('0x12')][_0x987f('0x1ca')]=function(_0x546b4f){logger['info'](util['format']('Enter\x20in\x20GOOGLETTS\x20(%s)\x20block',_0x546b4f[_0x987f('0xb0')]));_0x546b4f[_0x987f('0x5f')]=_0x546b4f[_0x987f('0x5f')]['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x987f('0x89')](_0x546b4f[_0x987f('0x5f')])){return this[_0x987f('0x3a')][_0x987f('0xb1')](_0x987f('0xb2'));}this['channel'][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x1cb'),_0x546b4f[_0x987f('0x5f')]));var _0x59e339=this['googleTTS'][_0x987f('0x71')](this,_0x546b4f);if(_0x59e339){this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')]('Google\x20TTS\x20%s\x20file\x20created',_0x59e339));var _0x3fbd49=this['channel']['streamFile'](_0x59e339);try{fs[_0x987f('0x12c')](_0x59e339+_0x987f('0x10c'));}catch(_0x5ad850){logger[_0x987f('0x34')](_0x5ad850);}return _0x3fbd49;}return this[_0x987f('0x3a')]['error'](_0x546b4f,'Google\x20TTS\x20is\x20unreachable');};AGIVertices[_0x987f('0x12')][_0x987f('0x1cc')]=function(_0x399ceb){logger[_0x987f('0x2f')](util['format'](_0x987f('0x1cd'),_0x399ceb[_0x987f('0xb0')]));if(!this['isConfigured'](_0x399ceb[_0x987f('0x15f')])){return this[_0x987f('0x3a')][_0x987f('0x34')](_0x399ceb,_0x987f('0x15d'));}logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0x15e'),this['channel'][_0x987f('0x3c')],_0x399ceb[_0x987f('0x15f')]));var _0x3fa693=this['agentUnpause'][_0x987f('0x71')](this,_0x399ceb['findBy']);if(_0x3fa693){logger[_0x987f('0x2f')](util['format'](_0x987f('0x160'),this[_0x987f('0x3a')][_0x987f('0x3c')],_0x399ceb['findBy']));this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x160'),this[_0x987f('0x3a')][_0x987f('0x3c')],_0x399ceb[_0x987f('0x15f')]));return{'code':0xc8,'result':'success'};}else{logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0x162'),this[_0x987f('0x3a')][_0x987f('0x3c')],_0x399ceb[_0x987f('0x15f')]));this[_0x987f('0x3a')][_0x987f('0xb1')](util[_0x987f('0xa3')](_0x987f('0x162'),this['channel'][_0x987f('0x3c')],_0x399ceb[_0x987f('0x15f')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x987f('0x12')][_0x987f('0x1ce')]=function(_0x46831c){logger[_0x987f('0x2f')](util['format'](_0x987f('0x1cf'),_0x46831c[_0x987f('0xb0')]));var _0x5b61b0=this['channel'][_0x987f('0x59')]('VOICEMAIL',[_0x46831c[_0x987f('0x1d0')],_0x46831c[_0x987f('0x7a')]]);if(_0x5b61b0[_0x987f('0xaa')]===-0x1){return _0x5b61b0;}return this['channel']['noop'](util['format'](_0x987f('0xca'),_0x987f('0x1d1'),_0x46831c['mailbox']));};AGIVertices[_0x987f('0x12')][_0x987f('0x1d2')]=function(_0x4d3ff4){logger[_0x987f('0x2f')](util[_0x987f('0xa3')](_0x987f('0x1d3'),_0x4d3ff4[_0x987f('0xb0')]));if(!this[_0x987f('0x89')](_0x4d3ff4[_0x987f('0xdf')])){return this[_0x987f('0x3a')]['error'](_0x4d3ff4,_0x987f('0x1b5'));}var _0x30f2b9=this['getVariable'][_0x987f('0x71')](this,_0x4d3ff4[_0x987f('0xdf')]);if(!_0x30f2b9){return this['channel']['error'](_0x4d3ff4,_0x987f('0xe0'));}var _0x3a0b1b=this[_0x987f('0x3a')]['getVariable'](_0x30f2b9);return{'code':0xc8,'result':_0x3a0b1b['extra']?_0x3a0b1b[_0x987f('0xa8')]:'-'};};String['prototype'][_0x987f('0xa7')]=function(_0x101b2e,_0x5195f9){return this['split'](_0x101b2e)[_0x987f('0x1d4')](_0x5195f9);};module[_0x987f('0x1d5')]=AGIVertices;
\ No newline at end of file
+var _0xa1c9=['clear','agicommand','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','isPlainObject','isArray','length','saveRestApiResult','%s.%s','setVariable','split','replaceAll','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','retry','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','label','isConfigured','noop','no\x20text\x20configured','options','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','grammar','no\x20grammar\x20configured','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INSTANCE()','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','delay','minutes','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','Executed\x20command\x20%s\x20%s','application','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','MRCPSynth','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','LUMENVOX_ASR_CONFIDENCE','RECOG_INPUT()','Executed\x20command\x20MRCPRecog\x20%s','sestekasr','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','no\x20database\x20selected','odbc_id','no\x20odbc\x20database\x20found','query','no\x20query\x20configured','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','DIAL','SIP/%s','opts','dialogflow','bot','DIALOGFLOW_%s','speech','out','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','dialogflowV2_project_id','no\x20project_id\x20configured','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','password','no\x20password\x20configured','SESTEK_NDA_%s','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','Enter\x20in\x20END\x20(%s)\x20block','end','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','trunk_name','Executed\x20command\x20%s','finally','file_id','no\x20file\x20audio\x20selected','no\x20file\x20audio\x20found','getData','response','test','mindigit','maxdigit','hiddendigitsnum','generate','getsecretdigits','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','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20is\x20unreachable','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','googleasr','no\x20key\x20configured','%s/recordings/%s','beep','intKey','googleASR','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','no\x20appsecret\x20configured','wav','NOBEEP','recordFile','tilde\x20%s\x20file\x20created','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','context','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','true','false','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20intervals\x20found','IFTIME\x20%s\x20%s','Enter\x20in\x20HANGUP\x20(%s)\x20block','hangup','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','ispeechtts','ispeech\x20TTS\x20is\x20unreachable','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','no\x20find\x20by\x20configured','math','no\x20operation\x20configured','math\x20%s','operation','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','queue','queue_id','no\x20queue\x20found','indexOf','XMCS-QUEUE','toLowerCase','macro','position','QUEUE','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%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','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','statusCode','statusMessage','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','variable\x20%s\x20set','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','saynumber','sayNumber','number','replace','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20configured','getMailAccount','Smtp','email','user','subject','service','host','secure','auth','pass','template_id','sendMail\x20message','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','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','Answer','Skipped\x20Answer','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','127.0.0.1','system','shellCommand','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','exports','path','util','lodash','shelljs','odbc','randomstring','moment','mustache','request-promise','agi','../../config/environment','./scripts','/var/opt/motion2/server/files','rawHeaders','menu','getdigits','channel','rpc','prototype','getVariable','getVariableById','name','getVoiceQueue','getVoiceQueueById','then','catch','getSquareProject','getSquareProjectById','getSquareOdbc','getSquareOdbcById','dsn','getUser','getUserById','getTrunk','getTrunkById','getSound','getSoundById','getSoundPath','save_name','getMailAccountById','sendMailMessage','mailRpc','getIntervals','getIntervalById','interval','map','Intervals','%s/sounds/converted/%s','getQueryOdbc','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','ODBC\x20connection\x20successfully','info','Query\x20executed\x20correctly\x20%s','close','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','callerid','createSquareRecording','calleridname','extension','priority','accountcode','dnid','arg_1','file','createSquareMessage','createCmContact','isEmpty','random','lastName','phone','list_id','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','agent','agentPause','isNil','agentLogout','agentLogin','internal','format','%s/%s@from-sip/n','LOCAL','exec','trim','googleCloudTTS','google_cloud_tts_text_type','text','languageCode','ssmlGender','MALE','MP3','googleTTS','google_tts_language','restAPI','url','method','timeout','includes','PUT','toUpperCase','body','rawBody','parse','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','sync','uri','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','message','googleDialogflow','dialogflow_language','googleDialogflowV2','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','en-US','speed','ispeechASR','key','ispeech_asr_language','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','Amy','aws_text_type','awsLex','aws_lex_region','aws_bot_name','google_asr_language','tildeASR','appid','appsecret'];(function(_0x33e8b6,_0x196326){var _0x1c4498=function(_0x2c7151){while(--_0x2c7151){_0x33e8b6['push'](_0x33e8b6['shift']());}};_0x1c4498(++_0x196326);}(_0xa1c9,0x135));var _0x9a1c=function(_0x5774ac,_0x379bc7){_0x5774ac=_0x5774ac-0x0;var _0x1924bd=_0xa1c9[_0x5774ac];return _0x1924bd;};'use strict';var fs=require('fs');var path=require(_0x9a1c('0x0'));var util=require(_0x9a1c('0x1'));var _=require(_0x9a1c('0x2'));var sh=require(_0x9a1c('0x3'));var odbc=require(_0x9a1c('0x4'))();var rs=require(_0x9a1c('0x5'));var moment=require(_0x9a1c('0x6'));var Mustache=require(_0x9a1c('0x7'));var rp=require(_0x9a1c('0x8'));var logger=require('../../config/logger')(_0x9a1c('0x9'));var config=require(_0x9a1c('0xa'));var scripts=require(_0x9a1c('0xb'));var FILES_PATH=_0x9a1c('0xc');var recursiveMapAttributes=[_0x9a1c('0xd'),'rawBody'];var verticesWithRetry=[_0x9a1c('0xe'),_0x9a1c('0xf'),'getsecretdigits'];var AGIVertices=function(_0x564d86,_0x5ab1f7,_0x4a8a44){this[_0x9a1c('0x10')]=_0x564d86;this[_0x9a1c('0x11')]=_0x5ab1f7;this['mailRpc']=_0x4a8a44;};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x13')]=function(_0x2524e3,_0x3f955b){this[_0x9a1c('0x11')][_0x9a1c('0x14')](_0x2524e3)['then'](function(_0x10e3bb){_0x3f955b(null,_0x10e3bb?_0x10e3bb[_0x9a1c('0x15')]:![]);})['catch'](function(_0x55b576){_0x3f955b(_0x55b576);});};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x16')]=function(_0x518b1e,_0x7eda6){this[_0x9a1c('0x11')][_0x9a1c('0x17')](_0x518b1e)[_0x9a1c('0x18')](function(_0x23edce){_0x7eda6(null,_0x23edce?_0x23edce['name']:![]);})[_0x9a1c('0x19')](function(_0x3e1349){_0x7eda6(_0x3e1349);});};AGIVertices['prototype'][_0x9a1c('0x1a')]=function(_0x59c769,_0x342448){this['rpc'][_0x9a1c('0x1b')](_0x59c769)['then'](function(_0xcca0e5){_0x342448(null,_0xcca0e5?_0xcca0e5[_0x9a1c('0x15')]:![]);})['catch'](function(_0x3b7f8d){_0x342448(_0x3b7f8d);});};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x1c')]=function(_0x3c8d9d,_0x4134ee){this['rpc'][_0x9a1c('0x1d')](_0x3c8d9d)[_0x9a1c('0x18')](function(_0x5ef70a){_0x4134ee(null,_0x5ef70a?_0x5ef70a[_0x9a1c('0x1e')]:![]);})[_0x9a1c('0x19')](function(_0x24254c){_0x4134ee(_0x24254c);});};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x1f')]=function(_0x3a8a12,_0x3a69ef){this[_0x9a1c('0x11')][_0x9a1c('0x20')](_0x3a8a12)[_0x9a1c('0x18')](function(_0x45fa32){_0x3a69ef(null,_0x45fa32?_0x45fa32['name']:![]);})[_0x9a1c('0x19')](function(_0x156f52){_0x3a69ef(_0x156f52);});};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x21')]=function(_0x5b1011,_0x4792bf){this[_0x9a1c('0x11')][_0x9a1c('0x22')](_0x5b1011)[_0x9a1c('0x18')](function(_0x2a9687){_0x4792bf(null,_0x2a9687?_0x2a9687[_0x9a1c('0x15')]:![]);})[_0x9a1c('0x19')](function(_0x36194e){_0x4792bf(_0x36194e);});};AGIVertices['prototype'][_0x9a1c('0x23')]=function(_0x422906,_0x3b25c6){var _0x2eb417=this;this[_0x9a1c('0x11')][_0x9a1c('0x24')](_0x422906)[_0x9a1c('0x18')](function(_0x4a0226){_0x3b25c6(null,_0x4a0226?_0x2eb417[_0x9a1c('0x25')](_0x4a0226[_0x9a1c('0x26')]):![]);})[_0x9a1c('0x19')](function(_0x52248e){_0x3b25c6(_0x52248e);});};AGIVertices[_0x9a1c('0x12')]['getMailAccount']=function(_0x5e6dd9,_0x37e741){this['rpc'][_0x9a1c('0x27')](_0x5e6dd9)['then'](function(_0x2ee6e7){_0x37e741(null,_0x2ee6e7?_0x2ee6e7:![]);})['catch'](function(_0x17d797){_0x37e741(_0x17d797);});};AGIVertices['prototype'][_0x9a1c('0x28')]=function(_0x3c6266,_0x403d48,_0x533ba8){this[_0x9a1c('0x29')][_0x9a1c('0x28')](_0x3c6266,_0x403d48)[_0x9a1c('0x18')](function(){_0x533ba8(null);})['catch'](function(_0x2884ee){_0x533ba8(_0x2884ee);});};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x2a')]=function(_0x303eab,_0x4ce8ab){this[_0x9a1c('0x11')][_0x9a1c('0x2b')](_0x303eab)[_0x9a1c('0x18')](function(_0x5ae8a8){if(_0x5ae8a8){if(_0x5ae8a8['IntervalId']){_0x4ce8ab(null,[_0x5ae8a8[_0x9a1c('0x2c')]]);}else{_0x4ce8ab(null,_[_0x9a1c('0x2d')](_0x5ae8a8[_0x9a1c('0x2e')],'interval'));}}else{_0x4ce8ab(null,![]);}})[_0x9a1c('0x19')](function(_0x5df6c1){_0x4ce8ab(_0x5df6c1);});};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x25')]=function(_0x2ee579){return util['format'](_0x9a1c('0x2f'),FILES_PATH,_0x2ee579);};AGIVertices['prototype'][_0x9a1c('0x30')]=function(_0x4a4a0a,_0x570f44,_0x29252f){odbc[_0x9a1c('0x31')](_0x4a4a0a,function(_0x2bfddb){if(_0x2bfddb){logger[_0x9a1c('0x32')](_0x9a1c('0x33'),_0x2bfddb);_0x29252f(_0x2bfddb);}else{logger['info'](_0x9a1c('0x34'));odbc['query'](_0x570f44,function(_0x20aa2c,_0x526602){if(_0x20aa2c){logger['info']('Error\x20executing\x20query\x20%s',_0x570f44);_0x29252f(_0x20aa2c);}else{logger[_0x9a1c('0x35')](_0x9a1c('0x36'),_0x570f44);odbc[_0x9a1c('0x37')](function(_0x5736a7){if(_0x5736a7){logger[_0x9a1c('0x32')]('Error\x20closing\x20connection\x20to\x20odbc\x20%s',_0x5736a7);}_0x29252f(null,_0x526602);});}});}});};AGIVertices['prototype'][_0x9a1c('0x38')]=function(_0x30199b,_0x3cb9a4){this[_0x9a1c('0x11')][_0x9a1c('0x39')](_0x30199b)['then'](function(_0xc55a70){_0x3cb9a4(null,_0xc55a70?_0xc55a70:![]);})[_0x9a1c('0x19')](function(_0x4be325){_0x3cb9a4(_0x4be325);});};AGIVertices['prototype'][_0x9a1c('0x3a')]=function(_0xfeb7d9,_0x4b44c1){this[_0x9a1c('0x11')][_0x9a1c('0x3a')](_0xfeb7d9)[_0x9a1c('0x18')](function(_0x35e7ac){_0x4b44c1(null,_0x35e7ac);})[_0x9a1c('0x19')](function(_0x3606cf){_0x4b44c1(_0x3606cf);});};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x3b')]=function(_0x4efb97,_0x5e95e6,_0xba9bd8){this[_0x9a1c('0x11')][_0x9a1c('0x3b')]({'uniqueid':this[_0x9a1c('0x10')][_0x9a1c('0x3c')],'node':_0x4efb97['label'],'application':_0x4efb97['agicommand'],'data':_0x5e95e6||null,'project_name':this[_0x9a1c('0x10')]['arg_1'],'callerid':this[_0x9a1c('0x10')][_0x9a1c('0x3d')]})['then'](function(_0x2d9016){if(_0xba9bd8){_0xba9bd8(null,_0x2d9016);}})[_0x9a1c('0x19')](function(_0x52ee5c){if(_0xba9bd8){_0xba9bd8(_0x52ee5c);}});};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x3e')]=function(_0x240e62,_0x35acf6,_0x202931,_0x51cdae){this[_0x9a1c('0x11')][_0x9a1c('0x3e')]({'uniqueid':this[_0x9a1c('0x10')][_0x9a1c('0x3c')],'callerid':this[_0x9a1c('0x10')]['callerid'],'calleridname':this[_0x9a1c('0x10')][_0x9a1c('0x3f')],'context':this[_0x9a1c('0x10')]['context'],'extension':this[_0x9a1c('0x10')][_0x9a1c('0x40')],'priority':this[_0x9a1c('0x10')][_0x9a1c('0x41')],'accountcode':this[_0x9a1c('0x10')][_0x9a1c('0x42')],'dnid':this['channel'][_0x9a1c('0x43')],'projectName':this['channel'][_0x9a1c('0x44')],'saveName':_0x35acf6,'filename':_0x240e62[_0x9a1c('0x45')]||_0x35acf6,'savePath':_0x202931})['then'](function(_0x244863){_0x51cdae(null,_0x244863);})[_0x9a1c('0x19')](function(_0x526b3b){_0x51cdae(_0x526b3b);});};AGIVertices[_0x9a1c('0x12')]['createSquareMessage']=function(_0xf6f0f5,_0x5be34e,_0x2c297e,_0x888321,_0x2c0e2a){this[_0x9a1c('0x11')][_0x9a1c('0x46')]({'uniqueid':this['channel'][_0x9a1c('0x3c')],'body':_0xf6f0f5,'direction':_0x5be34e,'providerName':_0x2c297e,'providerResponse':_0x888321})[_0x9a1c('0x18')](function(_0x238ece){if(_0x2c0e2a){_0x2c0e2a(null,_0x238ece);}})[_0x9a1c('0x19')](function(_0xd6a83c){if(_0x2c0e2a){_0x2c0e2a(_0xd6a83c);}});};AGIVertices[_0x9a1c('0x12')]['createCmContact']=function(_0x58ce65,_0x3c4921){this['rpc'][_0x9a1c('0x47')]({'firstName':_[_0x9a1c('0x48')](_0x58ce65['name'])||_['isNil'](_0x58ce65[_0x9a1c('0x15')])?'callback_'+Math[_0x9a1c('0x49')]():_0x58ce65[_0x9a1c('0x15')],'lastName':_[_0x9a1c('0x48')](_0x58ce65[_0x9a1c('0x4a')])||_['isNil'](_0x58ce65[_0x9a1c('0x4a')])?null:_0x58ce65[_0x9a1c('0x4a')],'phone':_0x58ce65[_0x9a1c('0x4b')],'ListId':_0x58ce65[_0x9a1c('0x4c')],'scheduledat':_0x58ce65[_0x9a1c('0x4d')],'callbackUniqueid':this[_0x9a1c('0x10')][_0x9a1c('0x3c')],'tags':_0x9a1c('0x4e'),'description':_0x9a1c('0x4f')+_0x58ce65['scheduledAt'][_0x9a1c('0x50')](),'priority':_0x58ce65[_0x9a1c('0x51')]})[_0x9a1c('0x18')](function(_0x4d5d75){_0x3c4921(null,_0x4d5d75);})[_0x9a1c('0x19')](function(_0x138def){_0x3c4921(_0x138def);});};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x52')]=function(_0x45e611,_0x17bcd1){this[_0x9a1c('0x11')]['getPauseById'](_0x45e611)[_0x9a1c('0x18')](function(_0x430453){_0x17bcd1(null,_0x430453?_0x430453[_0x9a1c('0x15')]:![]);})[_0x9a1c('0x19')](function(_0x675e5){_0x17bcd1(_0x675e5);});};AGIVertices['prototype']['agentPause']=function(_0x378524,_0x53f171,_0x2f3d3d){var _0x37fe32={'role':_0x9a1c('0x53')};_0x37fe32[_0x378524]=this[_0x9a1c('0x10')][_0x9a1c('0x3d')];this['rpc'][_0x9a1c('0x54')](_0x37fe32,_0x53f171,this['channel']['uniqueid'])[_0x9a1c('0x18')](function(_0x462f8c){_0x2f3d3d(null,_[_0x9a1c('0x55')](_0x462f8c)?![]:!![]);})['catch'](function(_0x56c2db){logger[_0x9a1c('0x32')](_0x56c2db);_0x2f3d3d(null,![]);});};AGIVertices[_0x9a1c('0x12')]['agentUnpause']=function(_0x5a2d6d,_0x45c13c){var _0x57a078={'role':_0x9a1c('0x53')};_0x57a078[_0x5a2d6d]=this[_0x9a1c('0x10')][_0x9a1c('0x3d')];this[_0x9a1c('0x11')]['agentUnpause'](_0x57a078)[_0x9a1c('0x18')](function(_0x269c09){_0x45c13c(null,_['isNil'](_0x269c09)?![]:!![]);})[_0x9a1c('0x19')](function(_0x3e5e39){logger[_0x9a1c('0x32')](_0x3e5e39);_0x45c13c(null,![]);});};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x56')]=function(_0x238064,_0x3c2f17){var _0x53a2c0={'role':_0x9a1c('0x53')};_0x53a2c0[_0x238064]=this[_0x9a1c('0x10')][_0x9a1c('0x3d')];this[_0x9a1c('0x11')][_0x9a1c('0x56')](_0x53a2c0)['then'](function(_0x414b27){_0x3c2f17(null,_[_0x9a1c('0x55')](_0x414b27)?![]:!![]);})['catch'](function(_0x536bba){logger[_0x9a1c('0x32')](_0x536bba);_0x3c2f17(null,![]);});};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x57')]=function(_0xfb451,_0x176d17){var _0x1b3a87={'role':_0x9a1c('0x53')};_0x1b3a87[_0xfb451]=this[_0x9a1c('0x10')][_0x9a1c('0x3d')];var _0x528d22=_0xfb451!=_0x9a1c('0x58')?util[_0x9a1c('0x59')](_0x9a1c('0x5a'),_0x9a1c('0x5b'),this[_0x9a1c('0x10')]['callerid']):undefined;this[_0x9a1c('0x11')][_0x9a1c('0x57')](_0x1b3a87,_0x528d22)['then'](function(_0xdd58c6){_0x176d17(null,_[_0x9a1c('0x55')](_0xdd58c6)?![]:!![]);})[_0x9a1c('0x19')](function(_0x8ae731){logger['error'](_0x8ae731);_0x176d17(null,![]);});};AGIVertices['prototype']['shellCommand']=function(_0x4b8f56,_0x4281f6){sh[_0x9a1c('0x5c')](_[_0x9a1c('0x5d')](_0x4b8f56),function(_0x31159c,_0x5930a7){var _0x5317a3=_0x5930a7['replace'](/(\r\n|\n|\r)/gm,'');_0x4281f6(null,_0x5317a3);});};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x5e')]=function(_0x53c9a6,_0x313152){scripts[_0x9a1c('0x5e')](_0x53c9a6['apiKey'],_0x53c9a6[_0x9a1c('0x5f')]||'text',_0x53c9a6[_0x9a1c('0x60')],_0x53c9a6[_0x9a1c('0x61')]||'en-US',_0x53c9a6[_0x9a1c('0x62')]||_0x9a1c('0x63'),_0x53c9a6['audioEncoding']||_0x9a1c('0x64'))[_0x9a1c('0x18')](function(_0x3b0a28){_0x313152(null,_0x3b0a28);})[_0x9a1c('0x19')](function(_0x545af8){_0x313152(_0x545af8);});};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x65')]=function(_0x2dc17d,_0x3be980){scripts[_0x9a1c('0x65')](_0x2dc17d[_0x9a1c('0x60')],_0x2dc17d[_0x9a1c('0x66')]||'en',0x1)[_0x9a1c('0x18')](function(_0x13b2bf){_0x3be980(null,_0x13b2bf);})[_0x9a1c('0x19')](function(_0x4d05d4){_0x3be980(_0x4d05d4);});};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x67')]=function(_0x2520ec,_0x510917){var _0x3801b7={'uri':_0x2520ec[_0x9a1c('0x68')],'method':_0x2520ec[_0x9a1c('0x69')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x2520ec['timeout'])==='number'&&parseInt(_0x2520ec[_0x9a1c('0x6a')])>=0x1?parseInt(_0x2520ec[_0x9a1c('0x6a')])*0x3e8:0x5*0x3e8};if(_[_0x9a1c('0x6b')](['POST',_0x9a1c('0x6c')],_0x3801b7[_0x9a1c('0x69')][_0x9a1c('0x6d')]())){try{_0x3801b7[_0x9a1c('0x6e')]=_0x2520ec[_0x9a1c('0x6f')]?JSON[_0x9a1c('0x70')](_0x2520ec[_0x9a1c('0x6f')]):{};}catch(_0x23169e){logger[_0x9a1c('0x32')]('An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function',_0x23169e);}}try{_0x3801b7[_0x9a1c('0x71')]=_0x2520ec[_0x9a1c('0xd')]?JSON[_0x9a1c('0x70')](_0x2520ec[_0x9a1c('0xd')]):{};}catch(_0x4ba902){logger[_0x9a1c('0x32')](_0x9a1c('0x72'),_0x4ba902);}if(_0x2520ec['computedVariables']){try{var _0x227c7c=require(_0x2520ec['computedVariables'])[_0x9a1c('0x73')](this,_0x3801b7);_0x3801b7[_0x9a1c('0x74')]=Mustache['render'](_0x2520ec['url'],_0x227c7c,{},['$$','$$']);if(_0x3801b7['headers']){_0x3801b7[_0x9a1c('0x71')]=JSON[_0x9a1c('0x70')](Mustache['render'](JSON['stringify'](_0x3801b7[_0x9a1c('0x71')]),_0x227c7c,{},['$$','$$']));}if(_0x3801b7['body']){_0x3801b7[_0x9a1c('0x6e')]=JSON[_0x9a1c('0x70')](Mustache[_0x9a1c('0x75')](JSON[_0x9a1c('0x76')](_0x3801b7['body']),_0x227c7c,{},['$$','$$']));}}catch(_0x46d0a4){logger['error'](_0x9a1c('0x77'),_0x46d0a4);}}rp(_0x3801b7)[_0x9a1c('0x18')](function(_0x1aa126){var _0x22e0c2={'statusCode':_0x1aa126['statusCode']||0xc8,'statusMessage':_0x1aa126['statusMessage']||'OK','headers':_0x1aa126[_0x9a1c('0x71')]||{},'body':_0x1aa126[_0x9a1c('0x6e')]||{}};_0x510917(null,_0x22e0c2);})['catch'](function(_0x1aa099){var _0xa1e5c9={'statusCode':_0x1aa099['statusCode']||0x1f4,'statusMessage':_0x1aa099[_0x9a1c('0x78')]||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x1aa099['options'][_0x9a1c('0x71')]||{},'body':_0x1aa099['options'][_0x9a1c('0x6e')]||{}};_0x510917(null,_0xa1e5c9);});};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x79')]=function(_0x141e63,_0x5b0d3b){scripts[_0x9a1c('0x79')](this[_0x9a1c('0x10')]['uniqueid'],_0x141e63['key'],_0x141e63[_0x9a1c('0x60')],_0x141e63[_0x9a1c('0x7a')]||'en')[_0x9a1c('0x18')](function(_0x3c793f){_0x5b0d3b(null,_0x3c793f);})[_0x9a1c('0x19')](function(_0x35b0bb){_0x5b0d3b(_0x35b0bb);});};AGIVertices['prototype'][_0x9a1c('0x7b')]=function(_0x15c4a0,_0x8b4645){scripts[_0x9a1c('0x7b')](this['channel'][_0x9a1c('0x3c')],_0x15c4a0['dialogflowV2_project_id'],_0x15c4a0['client_email'],_0x15c4a0[_0x9a1c('0x7c')],_0x15c4a0['text'],_0x15c4a0[_0x9a1c('0x7d')]||'en')[_0x9a1c('0x18')](function(_0x830861){_0x8b4645(null,_0x830861);})[_0x9a1c('0x19')](function(_0x37387b){_0x8b4645(_0x37387b);});};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x7e')]=function(_0x86f43e,_0x290abc){scripts[_0x9a1c('0x7e')](this[_0x9a1c('0x10')],_0x86f43e)[_0x9a1c('0x18')](function(_0x51c3c4){_0x290abc(null,_0x51c3c4);})['catch'](function(_0x28681c){_0x290abc(_0x28681c);});};AGIVertices['prototype'][_0x9a1c('0x7f')]=function(_0x1a94b6,_0x31926f){scripts['ispeechTTS'](_0x1a94b6['key'],_0x1a94b6['text'],_0x1a94b6[_0x9a1c('0x80')]||_0x9a1c('0x81'),_0x1a94b6[_0x9a1c('0x82')])[_0x9a1c('0x18')](function(_0x1c7d5c){_0x31926f(null,_0x1c7d5c);})[_0x9a1c('0x19')](function(_0x43c312){_0x31926f(_0x43c312);});};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x83')]=function(_0x473be6,_0x334671,_0x2ee6b0){scripts[_0x9a1c('0x83')](_0x334671,_0x473be6[_0x9a1c('0x84')],_0x473be6[_0x9a1c('0x85')]||_0x9a1c('0x81'),this['isConfigured'](_0x473be6[_0x9a1c('0x86')])?_0x473be6[_0x9a1c('0x86')]:undefined)['then'](function(_0x147ed1){_0x2ee6b0(null,_0x147ed1);})[_0x9a1c('0x19')](function(_0x34f515){_0x2ee6b0(_0x34f515);});};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x87')]=function(_0x988e15,_0x5e4aa6){scripts[_0x9a1c('0x87')](_0x988e15[_0x9a1c('0x88')],_0x988e15[_0x9a1c('0x89')],_0x988e15[_0x9a1c('0x8a')],_0x988e15['aws_polly_voice']||_0x9a1c('0x8b'),_0x988e15[_0x9a1c('0x60')],_0x988e15[_0x9a1c('0x8c')]||'text')[_0x9a1c('0x18')](function(_0x3093c5){_0x5e4aa6(null,_0x3093c5);})[_0x9a1c('0x19')](function(_0x1f1ee6){_0x5e4aa6(_0x1f1ee6);});};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x8d')]=function(_0x20947e,_0x5a805f){scripts[_0x9a1c('0x8d')](this[_0x9a1c('0x10')]['uniqueid'],_0x20947e[_0x9a1c('0x88')],_0x20947e['aws_secret_access_key'],_0x20947e[_0x9a1c('0x8e')],_0x20947e[_0x9a1c('0x60')],_0x20947e[_0x9a1c('0x8f')])['then'](function(_0x5ec1cd){_0x5a805f(null,_0x5ec1cd);})[_0x9a1c('0x19')](function(_0x41bf68){_0x5a805f(_0x41bf68);});};AGIVertices['prototype']['googleASR']=function(_0x5ec7cb,_0x3ec6ff,_0x15c42b){scripts['googleASR'](_0x3ec6ff,_0x5ec7cb[_0x9a1c('0x84')],_0x5ec7cb[_0x9a1c('0x90')]||'en-US')[_0x9a1c('0x18')](function(_0x1b52dd){_0x15c42b(null,_0x1b52dd);})[_0x9a1c('0x19')](function(_0x190320){_0x15c42b(_0x190320);});};AGIVertices['prototype'][_0x9a1c('0x91')]=function(_0x1c5593,_0x3929f3,_0x3033cc){scripts[_0x9a1c('0x91')](_0x3929f3,_0x1c5593[_0x9a1c('0x92')],_0x1c5593[_0x9a1c('0x93')],_0x1c5593[_0x9a1c('0x74')])[_0x9a1c('0x18')](function(_0x17c098){_0x3033cc(null,_0x17c098);})['catch'](function(_0x3bbba1){_0x3033cc(_0x3bbba1);});};AGIVertices['prototype'][_0x9a1c('0x94')]=function(_0xb07150){var _0x19d0f3=_[_0x9a1c('0x6b')](verticesWithRetry,_0xb07150[_0x9a1c('0x95')])?_0xb07150:_['clone'](_0xb07150);for(var _0x4192ef in _0x19d0f3){if(_0x19d0f3[_0x9a1c('0x96')](_0x4192ef)){if(_0x19d0f3[_0x4192ef]&&_[_0x9a1c('0x97')](_0x19d0f3[_0x4192ef])){if(_[_0x9a1c('0x6b')](recursiveMapAttributes,_0x4192ef)){_0x19d0f3[_0x4192ef]=this[_0x9a1c('0x98')](_0x19d0f3[_0x4192ef]);}else{_0x19d0f3[_0x4192ef]=this[_0x9a1c('0x99')](_0x19d0f3[_0x4192ef]);}}}}return _0x19d0f3;};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x9a')]=function(_0x1bd2cf){for(var _0x490131 in _0x1bd2cf){if(_0x1bd2cf['hasOwnProperty'](_0x490131)){if(_[_0x9a1c('0x9b')](_0x1bd2cf[_0x490131])){this[_0x9a1c('0x9a')](_0x1bd2cf[_0x490131]);}else if(_[_0x9a1c('0x9c')](_0x1bd2cf[_0x490131])){for(var _0x2edb10=0x0;_0x2edb10<_0x1bd2cf[_0x490131][_0x9a1c('0x9d')];_0x2edb10++){this[_0x9a1c('0x9a')](_0x1bd2cf[_0x490131][_0x2edb10]);}}else if(_['isString'](_0x1bd2cf[_0x490131])){_0x1bd2cf[_0x490131]=this['replaceAllVariables'](_0x1bd2cf[_0x490131]);}}}};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x9e')]=function(_0x42ceac,_0x32ea05){for(var _0x56d212 in _0x42ceac){if(_0x42ceac[_0x9a1c('0x96')](_0x56d212)){if(_[_0x9a1c('0x9b')](_0x42ceac[_0x56d212])){if(!_[_0x9a1c('0x48')](_0x42ceac[_0x56d212])){this[_0x9a1c('0x9e')](_0x42ceac[_0x56d212],util[_0x9a1c('0x59')]('%s.%s',_0x32ea05,_0x56d212));}}else if(_[_0x9a1c('0x9c')](_0x42ceac[_0x56d212])){for(var _0x8ffe58=0x0;_0x8ffe58<_0x42ceac[_0x56d212][_0x9a1c('0x9d')];_0x8ffe58++){this['saveRestApiResult'](_0x42ceac[_0x56d212][_0x8ffe58],util[_0x9a1c('0x59')](_0x9a1c('0x9f'),_0x32ea05,_0x56d212+'['+_0x8ffe58+']'));}}else{if(!_['isNil'](_0x42ceac[_0x56d212])){this[_0x9a1c('0x10')][_0x9a1c('0xa0')](util['format'](_0x9a1c('0x9f'),_0x32ea05,_0x56d212),_0x42ceac[_0x56d212]);}}}}};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x98')]=function(_0x2224e0){try{var _0x8eaac=JSON[_0x9a1c('0x70')](_0x2224e0);this['recursiveNodeIndex'](_0x8eaac);return JSON[_0x9a1c('0x76')](_0x8eaac);}catch(_0xc269f0){return this['replaceAllVariables'](_0x2224e0);}};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x99')]=function(_0xe27774){var _0x3de1cb=_0xe27774['split']('{');for(var _0x4604ef=0x1;_0x4604ef<_0x3de1cb['length'];_0x4604ef+=0x1){var _0x35c179=_0x3de1cb[_0x4604ef][_0x9a1c('0xa1')]('}');if(_0x35c179[_0x9a1c('0x9d')]>0x1){_0xe27774=_0xe27774[_0x9a1c('0xa2')]('{'+_0x35c179[0x0]+'}',this[_0x9a1c('0x10')]['getVariable'](_0x35c179[0x0])[_0x9a1c('0xa3')]||_0x35c179[0x0]);}}if(_0x3de1cb[_0x9a1c('0x9d')]===0x1){return _0xe27774[_0x9a1c('0x50')]();}return this[_0x9a1c('0x99')](_0xe27774);};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0xa4')]=function(_0x13a192,_0x499b10){var _0x3b1c6a=this[_0x9a1c('0x10')][_0x9a1c('0x13')](_0x13a192);if(_0x3b1c6a[_0x9a1c('0xa5')]===-0x1){return _0x3b1c6a;}logger[_0x9a1c('0x35')](util['format'](_0x9a1c('0xa6'),_0x499b10,_0x3b1c6a[_0x9a1c('0xa3')]));return this[_0x9a1c('0x10')][_0x9a1c('0xa0')](_0x499b10,_0x3b1c6a['extra']);};AGIVertices[_0x9a1c('0x12')]['isConfigured']=function(_0x316a4e){return _0x316a4e&&_0x316a4e!=='0'&&_0x316a4e!=='-1'&&_0x316a4e!=='';};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0xa7')]=function(_0x455763){this[_0x9a1c('0x3b')][_0x9a1c('0x73')](this,_0x455763,'-');_0x455763[_0x9a1c('0xa8')]=_0x455763[_0x9a1c('0xa7')];return{'code':0xc8,'result':'-'};};AGIVertices[_0x9a1c('0x12')]['mrcpsynth']=function(_0x409985){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0xa9'),_0x409985[_0x9a1c('0xaa')]));if(!this[_0x9a1c('0xab')](_0x409985['text'])){return this[_0x9a1c('0x10')][_0x9a1c('0xac')](_0x9a1c('0xad'));}var _0x468ca9='\x22'+_0x409985[_0x9a1c('0x60')]+'\x22';if(this['isConfigured'](_0x409985[_0x9a1c('0xae')])){_0x468ca9+=','+_0x409985[_0x9a1c('0xae')];}var _0x2a003a=this[_0x9a1c('0x10')]['exec']('MRCPSynth',_0x468ca9);if(_0x2a003a[_0x9a1c('0xa5')]===-0x1){return _0x2a003a;}return this['channel'][_0x9a1c('0xac')](util[_0x9a1c('0x59')](_0x9a1c('0xaf'),_0x468ca9));};AGIVertices['prototype'][_0x9a1c('0xb0')]=function(_0x515d66){logger['info'](util[_0x9a1c('0x59')]('Enter\x20in\x20MRCPRecog\x20(%s)\x20block',_0x515d66[_0x9a1c('0xaa')]));if(!this[_0x9a1c('0xab')](_0x515d66[_0x9a1c('0xb1')])){return this[_0x9a1c('0x10')][_0x9a1c('0xac')](_0x9a1c('0xb2'));}var _0x588e07=_0x515d66[_0x9a1c('0xb1')];if(this['isConfigured'](_0x515d66['options'])){_0x588e07+=','+_0x515d66[_0x9a1c('0xae')];}var _0xec3ca=this[_0x9a1c('0x10')]['exec'](_0x9a1c('0xb3'),_0x588e07);if(_0xec3ca[_0x9a1c('0xa5')]===-0x1){return _0xec3ca;}var _0x1f7cb6=this[_0x9a1c('0xa4')](_0x9a1c('0xb4'),_0x9a1c('0xb5'));if(_0x1f7cb6['result']===-0x1){return _0x1f7cb6;}var _0x150456=this[_0x9a1c('0xa4')]('RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT');if(_0x150456[_0x9a1c('0xa5')]===-0x1){return _0x150456;}var _0x3f7f48=this['getAndSetVariable'](_0x9a1c('0xb6'),'MRCP_RECOG_INSTANCE');if(_0x3f7f48[_0x9a1c('0xa5')]===-0x1){return _0x3f7f48;}return this[_0x9a1c('0x10')]['noop'](util[_0x9a1c('0x59')]('Executed\x20command\x20MRCPRecog\x20%s',_0x588e07));};AGIVertices['prototype'][_0x9a1c('0x9')]=function(_0x40170e){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0xb7'),_0x40170e[_0x9a1c('0xaa')]));return this[_0x9a1c('0x10')][_0x9a1c('0x9')]([_0x40170e[_0x9a1c('0xb8')],_0x40170e[_0x9a1c('0xb9')]]);};AGIVertices['prototype'][_0x9a1c('0xba')]=function(_0x177f16){logger['info'](util[_0x9a1c('0x59')](_0x9a1c('0xbb'),_0x177f16[_0x9a1c('0xaa')]));if(this[_0x9a1c('0xab')](_0x177f16[_0x9a1c('0x6a')])){logger['info'](util['format'](_0x9a1c('0xbc'),_0x177f16[_0x9a1c('0x6a')]));var _0x45aae9=this[_0x9a1c('0x10')][_0x9a1c('0xbd')](_0x177f16[_0x9a1c('0x6a')]);if(_0x45aae9[_0x9a1c('0xa5')]===-0x1){return _0x45aae9;}}return this[_0x9a1c('0x10')][_0x9a1c('0xba')]();};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x4e')]=function(_0x3483ca){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0xbe'),_0x3483ca[_0x9a1c('0xaa')]));if(!this[_0x9a1c('0xab')](_0x3483ca[_0x9a1c('0x4c')])){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x3483ca,_0x9a1c('0xbf'));}_0x3483ca[_0x9a1c('0x4d')]=moment();if(this[_0x9a1c('0xab')](_0x3483ca[_0x9a1c('0xc0')])){_0x3483ca[_0x9a1c('0x4d')]=moment()['add'](_0x3483ca[_0x9a1c('0xc0')],_0x9a1c('0xc1'));}if(!this['isConfigured'](_0x3483ca['callback_priority'])){_0x3483ca[_0x9a1c('0x51')]=0x2;}this[_0x9a1c('0x47')][_0x9a1c('0x73')](this,_0x3483ca);return this[_0x9a1c('0x10')][_0x9a1c('0xac')](util[_0x9a1c('0x59')](_0x9a1c('0xc2'),_0x3483ca[_0x9a1c('0x4b')],_0x3483ca[_0x9a1c('0x4c')],_0x3483ca[_0x9a1c('0x4d')]));};AGIVertices['prototype']['custom_app']=function(_0x4f40b9){logger['info'](util[_0x9a1c('0x59')](_0x9a1c('0xc3'),_0x4f40b9[_0x9a1c('0xaa')]));var _0x488aac=this['channel']['exec'](_0x4f40b9['application'],_0x4f40b9[_0x9a1c('0xae')]);if(_0x488aac['result']===-0x1){return _0x488aac;}return this[_0x9a1c('0x10')]['noop'](util[_0x9a1c('0x59')](_0x9a1c('0xc4'),_0x4f40b9[_0x9a1c('0xc5')],_0x4f40b9[_0x9a1c('0xae')]));};AGIVertices['prototype'][_0x9a1c('0xc6')]=function(_0x13b42f){logger[_0x9a1c('0x35')](util['format'](_0x9a1c('0xc7'),_0x13b42f['label']));if(!this['isConfigured'](_0x13b42f[_0x9a1c('0x60')])){return this[_0x9a1c('0x10')][_0x9a1c('0xac')](_0x9a1c('0xad'));}var _0x2fe42b='\x22'+_0x13b42f[_0x9a1c('0x60')]+'\x22';if(this[_0x9a1c('0xab')](_0x13b42f[_0x9a1c('0xae')])){_0x2fe42b+=','+_0x13b42f[_0x9a1c('0xae')];}var _0x54ed0c=this['channel'][_0x9a1c('0x5c')](_0x9a1c('0xc8'),_0x2fe42b);if(_0x54ed0c['result']===-0x1){return _0x54ed0c;}return this['channel']['noop'](util[_0x9a1c('0x59')](_0x9a1c('0xaf'),_0x2fe42b));};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0xc9')]=function(_0x2f2f96){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0xca'),_0x2f2f96[_0x9a1c('0xaa')]));if(!this[_0x9a1c('0xab')](_0x2f2f96[_0x9a1c('0x60')])){return this[_0x9a1c('0x10')][_0x9a1c('0xac')]('no\x20text\x20configured');}var _0x559211='\x22'+_0x2f2f96[_0x9a1c('0x60')]+'\x22';if(this[_0x9a1c('0xab')](_0x2f2f96[_0x9a1c('0xae')])){_0x559211+=','+_0x2f2f96[_0x9a1c('0xae')];}var _0x50b40b=this['channel'][_0x9a1c('0x5c')](_0x9a1c('0xc8'),_0x559211);if(_0x50b40b[_0x9a1c('0xa5')]===-0x1){return _0x50b40b;}return this[_0x9a1c('0x10')][_0x9a1c('0xac')](util[_0x9a1c('0x59')](_0x9a1c('0xaf'),_0x559211));};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0xcb')]=function(_0x1a6229){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0xcc'),_0x1a6229[_0x9a1c('0xaa')]));if(!this[_0x9a1c('0xab')](_0x1a6229[_0x9a1c('0xb1')])){return this[_0x9a1c('0x10')][_0x9a1c('0xac')](_0x9a1c('0xb2'));}var _0x33df3e=_0x1a6229['grammar'];if(this[_0x9a1c('0xab')](_0x1a6229[_0x9a1c('0xae')])){_0x33df3e+=','+_0x1a6229[_0x9a1c('0xae')];}var _0x81a834=this['channel'][_0x9a1c('0x5c')](_0x9a1c('0xb3'),_0x33df3e);if(_0x81a834[_0x9a1c('0xa5')]===-0x1){return _0x81a834;}var _0x28d0dd=this[_0x9a1c('0xa4')](_0x9a1c('0xb4'),_0x9a1c('0xcd'));if(_0x28d0dd[_0x9a1c('0xa5')]===-0x1){return _0x28d0dd;}var _0x370be7=this[_0x9a1c('0xa4')](_0x9a1c('0xce'),'LUMENVOX_ASR_TRANSCRIPT');if(_0x370be7[_0x9a1c('0xa5')]===-0x1){return _0x370be7;}var _0x30b1bb=this[_0x9a1c('0xa4')](_0x9a1c('0xb6'),'LUMENVOX_ASR_INSTANCE');if(_0x30b1bb['result']===-0x1){return _0x30b1bb;}return this['channel']['noop'](util['format'](_0x9a1c('0xcf'),_0x33df3e));};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0xd0')]=function(_0x3a1e4b){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')]('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x3a1e4b[_0x9a1c('0xaa')]));if(!this['isConfigured'](_0x3a1e4b[_0x9a1c('0xb1')])){return this[_0x9a1c('0x10')][_0x9a1c('0xac')](_0x9a1c('0xb2'));}var _0x30b610=_0x3a1e4b[_0x9a1c('0xb1')];if(this[_0x9a1c('0xab')](_0x3a1e4b[_0x9a1c('0xae')])){_0x30b610+=','+_0x3a1e4b['options'];}var _0x15d2e4=this['channel']['exec']('MRCPRecog',_0x30b610);if(_0x15d2e4[_0x9a1c('0xa5')]===-0x1){return _0x15d2e4;}var _0x496540=this['getAndSetVariable'](_0x9a1c('0xb4'),_0x9a1c('0xd1'));if(_0x496540[_0x9a1c('0xa5')]===-0x1){return _0x496540;}var _0x51f0fd=this[_0x9a1c('0xa4')]('RECOG_INPUT()',_0x9a1c('0xd2'));if(_0x51f0fd[_0x9a1c('0xa5')]===-0x1){return _0x51f0fd;}var _0x1fd875=this['getAndSetVariable'](_0x9a1c('0xb6'),_0x9a1c('0xd3'));if(_0x1fd875[_0x9a1c('0xa5')]===-0x1){return _0x1fd875;}return this[_0x9a1c('0x10')][_0x9a1c('0xac')](util[_0x9a1c('0x59')](_0x9a1c('0xcf'),_0x30b610));};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0xd4')]=function(_0x2340ea){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')]('Enter\x20in\x20DATABASE\x20(%s)\x20block',_0x2340ea[_0x9a1c('0xaa')]));if(!this['isConfigured'](_0x2340ea['odbc_id'])){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x2340ea,_0x9a1c('0xd5'));}var _0x4d167f=this['getSquareOdbc'][_0x9a1c('0x73')](this,_0x2340ea[_0x9a1c('0xd6')]);if(!_0x4d167f){return this['channel'][_0x9a1c('0x32')](_0x2340ea,_0x9a1c('0xd7'));}if(!this[_0x9a1c('0xab')](_0x2340ea[_0x9a1c('0xd8')])){return this['channel'][_0x9a1c('0x32')](_0x2340ea,_0x9a1c('0xd9'));}var _0x4f6e4c=_0x2340ea[_0x9a1c('0xd8')]['replace'](/(\r\n|\n|\r)/gm,'\x20');this[_0x9a1c('0x10')]['noop'](util[_0x9a1c('0x59')]('query:\x20%s',_0x4f6e4c));var _0x4b93ea=this['getQueryOdbc']['sync'](this,_0x4d167f,_0x4f6e4c);this[_0x9a1c('0x3b')][_0x9a1c('0x73')](this,_0x2340ea,_0x4f6e4c);if(!this['isConfigured'](_0x2340ea[_0x9a1c('0xda')])){return this[_0x9a1c('0x10')][_0x9a1c('0xac')](_0x9a1c('0xdb'));}var _0x496b71=this[_0x9a1c('0x13')][_0x9a1c('0x73')](this,_0x2340ea[_0x9a1c('0xda')]);if(!_0x496b71){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x2340ea,_0x9a1c('0xdc'));}var _0x1fb0aa=this;_0x4b93ea[_0x9a1c('0xdd')](function(_0x3cee21,_0x2d4fa3){Object[_0x9a1c('0xde')](_0x3cee21)[_0x9a1c('0xdd')](function(_0xe03143){_0x1fb0aa[_0x9a1c('0x10')][_0x9a1c('0xa0')](util[_0x9a1c('0x59')](_0x9a1c('0xdf'),_0x496b71,_0x2d4fa3,_0xe03143),_0x3cee21[_0xe03143]);});});this[_0x9a1c('0x10')][_0x9a1c('0xa0')](util[_0x9a1c('0x59')](_0x9a1c('0xe0'),_0x496b71),_0x4b93ea['length']);return this[_0x9a1c('0x10')][_0x9a1c('0xac')](util[_0x9a1c('0x59')]('variable\x20%s\x20set',_0x496b71));};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0xe1')]=function(_0x34914a){logger[_0x9a1c('0xe2')](util['format'](_0x9a1c('0xe3'),_0x34914a['label']));if(!this[_0x9a1c('0xab')](_0x34914a['sip_id'])){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x34914a,'no\x20user\x20selected');}var _0x2b28f5=this['getUser'][_0x9a1c('0x73')](this,_0x34914a[_0x9a1c('0xe4')]);if(!_0x2b28f5){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x34914a,'no\x20user\x20found');}var _0x19baa1=this[_0x9a1c('0x10')][_0x9a1c('0x5c')](_0x9a1c('0xe5'),[util['format'](_0x9a1c('0xe6'),_0x2b28f5),_0x34914a['timeout'],_0x34914a[_0x9a1c('0xe7')],_0x34914a[_0x9a1c('0x68')]]);if(_0x19baa1[_0x9a1c('0xa5')]===-0x1){return _0x19baa1;}return this['channel']['noop'](util[_0x9a1c('0x59')]('Executed\x20command\x20%s',_0x9a1c('0xe5')));};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0xe8')]=function(_0x42e19f){logger['info'](util[_0x9a1c('0x59')]('Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block',_0x42e19f['label']));if(!this[_0x9a1c('0xab')](_0x42e19f[_0x9a1c('0x84')])){return this[_0x9a1c('0x10')][_0x9a1c('0xac')]('no\x20key\x20configured');}if(!this[_0x9a1c('0xab')](_0x42e19f[_0x9a1c('0x60')])){return this['channel'][_0x9a1c('0xac')](_0x9a1c('0xad'));}this['channel'][_0x9a1c('0xe9')]=!![];this[_0x9a1c('0x3b')](_0x42e19f);this[_0x9a1c('0x46')](_0x42e19f[_0x9a1c('0x60')],'in','','');this[_0x9a1c('0x10')][_0x9a1c('0xac')](util[_0x9a1c('0x59')]('Trying\x20Dialogflow:\x20%s',_0x42e19f[_0x9a1c('0x60')]));var _0x14ff3f=this[_0x9a1c('0x79')][_0x9a1c('0x73')](this,_0x42e19f);if(_0x14ff3f){for(var _0x78da62 in _0x14ff3f){if(_0x14ff3f[_0x9a1c('0x96')](_0x78da62)){this[_0x9a1c('0x10')][_0x9a1c('0xa0')](util[_0x9a1c('0x59')](_0x9a1c('0xea'),_0x78da62['toUpperCase']()),_0x14ff3f[_0x78da62]);}}this['createSquareMessage'](_0x14ff3f[_0x9a1c('0xeb')],_0x9a1c('0xec'),_0x9a1c('0xe8'),'');return this[_0x9a1c('0x10')][_0x9a1c('0xac')](util[_0x9a1c('0x59')](_0x9a1c('0xed'),_0x14ff3f[_0x9a1c('0xeb')]));}return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x42e19f,_0x9a1c('0xee'));};AGIVertices['prototype'][_0x9a1c('0xef')]=function(_0x1dc530){logger['info'](util[_0x9a1c('0x59')](_0x9a1c('0xf0'),_0x1dc530[_0x9a1c('0xaa')]));if(!this[_0x9a1c('0xab')](_0x1dc530[_0x9a1c('0xf1')])){return this['channel'][_0x9a1c('0xac')](_0x9a1c('0xf2'));}if(!this[_0x9a1c('0xab')](_0x1dc530['client_email'])){return this['channel'][_0x9a1c('0xac')](_0x9a1c('0xf3'));}if(!this[_0x9a1c('0xab')](_0x1dc530['private_key'])){return this[_0x9a1c('0x10')][_0x9a1c('0xac')](_0x9a1c('0xf4'));}if(!this[_0x9a1c('0xab')](_0x1dc530[_0x9a1c('0x7d')])){return this[_0x9a1c('0x10')][_0x9a1c('0xac')](_0x9a1c('0xf5'));}if(!this[_0x9a1c('0xab')](_0x1dc530[_0x9a1c('0x60')])){return this['channel'][_0x9a1c('0xac')](_0x9a1c('0xad'));}this[_0x9a1c('0x10')][_0x9a1c('0xe9')]=!![];this[_0x9a1c('0x3b')](_0x1dc530);this['createSquareMessage'](_0x1dc530[_0x9a1c('0x60')],'in','','');this[_0x9a1c('0x10')][_0x9a1c('0xac')](util[_0x9a1c('0x59')](_0x9a1c('0xf6'),_0x1dc530[_0x9a1c('0x60')]));var _0x5074a2=this[_0x9a1c('0x7b')][_0x9a1c('0x73')](this,_0x1dc530);if(_0x5074a2){for(var _0x109454 in _0x5074a2){if(_0x5074a2[_0x9a1c('0x96')](_0x109454)){if(_0x109454!=='providerResponse'){this['channel'][_0x9a1c('0xa0')](util[_0x9a1c('0x59')]('DIALOGFLOW_%s',_0x109454[_0x9a1c('0x6d')]()),_0x5074a2[_0x109454]);}}}this[_0x9a1c('0x46')](_0x5074a2[_0x9a1c('0xeb')],_0x9a1c('0xec'),_0x9a1c('0xef'),_0x5074a2[_0x9a1c('0xf7')]);return this[_0x9a1c('0x10')][_0x9a1c('0xac')](util[_0x9a1c('0x59')](_0x9a1c('0xf8'),_0x5074a2[_0x9a1c('0xeb')]));}return this[_0x9a1c('0x10')]['error'](_0x1dc530,_0x9a1c('0xf9'));};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0xfa')]=function(_0x2c6b6c){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0xfb'),_0x2c6b6c['label']));if(!this['isConfigured'](_0x2c6b6c[_0x9a1c('0xfc')])){return this[_0x9a1c('0x10')][_0x9a1c('0xac')](_0x9a1c('0xfd'));}if(!this['isConfigured'](_0x2c6b6c['username'])){return this['channel'][_0x9a1c('0xac')]('no\x20username\x20configured');}if(!this[_0x9a1c('0xab')](_0x2c6b6c[_0x9a1c('0xfe')])){return this[_0x9a1c('0x10')]['noop'](_0x9a1c('0xff'));}if(!this[_0x9a1c('0xab')](_0x2c6b6c['ndassistant_url'])){return this['channel'][_0x9a1c('0xac')](_0x9a1c('0xad'));}this[_0x9a1c('0x10')][_0x9a1c('0xe9')]=!![];this['createSquareDetailsReport'](_0x2c6b6c);this[_0x9a1c('0x46')](_0x2c6b6c[_0x9a1c('0x60')],'in','','');this['channel']['noop'](util[_0x9a1c('0x59')]('Trying\x20SestekNDA:\x20%s',_0x2c6b6c['text']));var _0xd1fc39=this[_0x9a1c('0x7e')][_0x9a1c('0x73')](this,_0x2c6b6c);if(_0xd1fc39){for(var _0x4611c1 in _0xd1fc39){if(_0xd1fc39['hasOwnProperty'](_0x4611c1)){this[_0x9a1c('0x10')]['setVariable'](util['format'](_0x9a1c('0x100'),_0x4611c1[_0x9a1c('0x6d')]()),_0xd1fc39[_0x4611c1]);}}this['createSquareMessage'](_0xd1fc39['speech'],'out',_0x9a1c('0xfa'),'');if(_0xd1fc39[_0x9a1c('0x101')]){this[_0x9a1c('0x10')][_0x9a1c('0xac')](util[_0x9a1c('0x59')](_0x9a1c('0x102'),_0xd1fc39['audiofile']));var _0x5ab32f=this[_0x9a1c('0x10')][_0x9a1c('0x103')](_0xd1fc39['audiofile']);try{fs[_0x9a1c('0x104')](_0xd1fc39[_0x9a1c('0x101')]+_0x9a1c('0x105'));}catch(_0x4f4bb7){logger['error'](_0x4f4bb7);}return _0x5ab32f;}else{return this[_0x9a1c('0x10')]['noop'](util[_0x9a1c('0x59')](_0x9a1c('0x106'),_0xd1fc39['speech']));}}return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x2c6b6c,_0x9a1c('0x107'));};AGIVertices[_0x9a1c('0x12')]['end']=function(_0x3c1af1){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0x108'),_0x3c1af1[_0x9a1c('0xaa')]));return this[_0x9a1c('0x10')][_0x9a1c('0xac')](_0x9a1c('0x109'));};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x10a')]=function(_0x3fc065){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0x10b'),_0x3fc065['label']));var _0x36c436='';if(_0x3fc065['trunk_id']){if(!this[_0x9a1c('0xab')](_0x3fc065[_0x9a1c('0x10c')])){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x3fc065,_0x9a1c('0x10d'));}else{var _0x127741=parseInt(_0x3fc065[_0x9a1c('0x10c')],0xa);if(isNaN(_0x127741)){_0x36c436=_0x3fc065[_0x9a1c('0x10c')];}else{_0x36c436=this[_0x9a1c('0x21')][_0x9a1c('0x73')](this,_0x3fc065[_0x9a1c('0x10c')]);if(!_0x36c436){return this[_0x9a1c('0x10')]['error'](_0x3fc065,'no\x20trunk\x20found');}}}}else if(_0x3fc065[_0x9a1c('0x10e')]){_0x36c436=_0x3fc065[_0x9a1c('0x10e')];}else{return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x3fc065,_0x9a1c('0x10d'));}var _0x60b68c=this[_0x9a1c('0x10')][_0x9a1c('0x5c')](_0x9a1c('0xe5'),[util['format']('SIP/%s/%s',_0x36c436,_0x3fc065[_0x9a1c('0x4b')]),_0x3fc065['timeout'],_0x3fc065['opts'],_0x3fc065['url']]);if(_0x60b68c[_0x9a1c('0xa5')]===-0x1){return _0x60b68c;}return this[_0x9a1c('0x10')][_0x9a1c('0xac')](util[_0x9a1c('0x59')](_0x9a1c('0x10f'),_0x9a1c('0xe5')));};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x110')]=function(_0x48bfc4){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')]('Enter\x20in\x20FINALLY\x20(%s)\x20block',_0x48bfc4[_0x9a1c('0xaa')]));return this[_0x9a1c('0x10')][_0x9a1c('0xac')]('finally');};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0xf')]=function(_0x40465b){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')]('Enter\x20in\x20GETDIGITS\x20(%s)\x20block',_0x40465b[_0x9a1c('0xaa')]));if(_0x40465b[_0x9a1c('0xa8')]===0x0){return this['maxRetry'](_0x40465b);}_0x40465b[_0x9a1c('0xa8')]-=0x1;if(!this[_0x9a1c('0xab')](_0x40465b[_0x9a1c('0x111')])){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x40465b,_0x9a1c('0x112'));}var _0x2fc08d=this['getSound'][_0x9a1c('0x73')](this,_0x40465b[_0x9a1c('0x111')]);if(!_0x2fc08d){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x40465b,_0x9a1c('0x113'));}if(!this['isConfigured'](_0x40465b[_0x9a1c('0xda')])){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x9a1c('0xdb'));}var _0x19f8d1=this['channel'][_0x9a1c('0x114')](_0x2fc08d,_0x40465b[_0x9a1c('0x115')],_0x40465b['maxdigit']);var _0x38f055=_0x19f8d1[_0x9a1c('0xa5')]?_0x19f8d1[_0x9a1c('0xa5')][_0x9a1c('0x50')]():'';logger[_0x9a1c('0x35')](_0x9a1c('0x116'),JSON['stringify'](_0x19f8d1));if(_0x19f8d1[_0x9a1c('0xa5')]===-0x1){this[_0x9a1c('0x3b')]['sync'](this,_0x40465b,_0x38f055);return _0x19f8d1;}else if(_0x19f8d1[_0x9a1c('0xa3')]===_0x9a1c('0x6a')){_0x19f8d1['result']=_0x38f055[_0x9a1c('0x9d')]>=parseInt(_0x40465b[_0x9a1c('0x117')])?'x':'i';}else{_0x19f8d1[_0x9a1c('0xa5')]=_0x38f055[_0x9a1c('0x9d')]>=parseInt(_0x40465b[_0x9a1c('0x117')])&&_0x38f055[_0x9a1c('0x9d')]<=parseInt(_0x40465b[_0x9a1c('0x118')])?'x':'i';}var _0x3621d2=this['getVariable'][_0x9a1c('0x73')](this,_0x40465b['variable_id']);if(!_0x3621d2){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x40465b,_0x9a1c('0xdc'));}this[_0x9a1c('0x10')][_0x9a1c('0xa0')](_0x3621d2,_0x38f055);if(this[_0x9a1c('0xab')](_0x40465b[_0x9a1c('0x119')])){var _0x2bddb8=parseInt(_0x40465b[_0x9a1c('0x119')],0xa);var _0x3b9e64=rs[_0x9a1c('0x11a')]({'charset':'*','length':_0x2bddb8});var _0x1188a1=_0x38f055[_0x9a1c('0x9d')];if(_0x1188a1>0x0){if(_0x1188a1>_0x2bddb8){this['createSquareDetailsReport'][_0x9a1c('0x73')](this,_0x40465b,_0x40465b['hiddendigitspos']==='first'?_0x3b9e64+_0x38f055['substr'](_0x2bddb8):_0x38f055['substr'](0x0,_0x1188a1-_0x2bddb8)+_0x3b9e64);}else{this[_0x9a1c('0x3b')][_0x9a1c('0x73')](this,_0x40465b,rs[_0x9a1c('0x11a')]({'charset':'*','length':_0x1188a1}));}}else{this[_0x9a1c('0x3b')]['sync'](this,_0x40465b,'');}}else{this[_0x9a1c('0x3b')]['sync'](this,_0x40465b,_0x38f055);}return _0x19f8d1;};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x11b')]=function(_0x4aece5){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0x11c'),_0x4aece5[_0x9a1c('0xaa')]));return this[_0x9a1c('0xf')](_0x4aece5);};AGIVertices['prototype'][_0x9a1c('0x11d')]=function(_0x25865c){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0x11e'),_0x25865c[_0x9a1c('0xaa')]));this[_0x9a1c('0x3b')][_0x9a1c('0x73')](this,_0x25865c,_0x25865c[_0x9a1c('0x11f')]);return this['channel'][_0x9a1c('0xac')](util['format'](_0x9a1c('0x120'),_0x25865c[_0x9a1c('0x11f')]));};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x121')]=function(_0x553247){logger[_0x9a1c('0x35')](util['format'](_0x9a1c('0x122'),_0x553247[_0x9a1c('0xaa')]));if(!this[_0x9a1c('0xab')](_0x553247['aws_access_key_id'])||!this[_0x9a1c('0xab')](_0x553247[_0x9a1c('0x89')])){return this['channel']['noop'](_0x9a1c('0x123'));}if(!this['isConfigured'](_0x553247['text'])){return this[_0x9a1c('0x10')][_0x9a1c('0xac')](_0x9a1c('0xad'));}this['channel'][_0x9a1c('0xac')](util['format'](_0x9a1c('0x124'),_0x553247[_0x9a1c('0x60')]));var _0x60be9d=this[_0x9a1c('0x87')][_0x9a1c('0x73')](this,_0x553247);if(_0x60be9d){this[_0x9a1c('0x10')][_0x9a1c('0xac')](util[_0x9a1c('0x59')]('aws\x20Polly\x20%s\x20file\x20created',_0x60be9d));var _0x15b6c8=this['channel'][_0x9a1c('0x103')](_0x60be9d);try{fs[_0x9a1c('0x104')](_0x60be9d+_0x9a1c('0x105'));}catch(_0xe06bf1){logger[_0x9a1c('0x32')](_0xe06bf1);}return _0x15b6c8;}return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x553247,_0x9a1c('0x125'));};AGIVertices[_0x9a1c('0x12')]['awslex']=function(_0x585d4f){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0x126'),_0x585d4f[_0x9a1c('0xaa')]));if(!this['isConfigured'](_0x585d4f[_0x9a1c('0x88')])||!this[_0x9a1c('0xab')](_0x585d4f['aws_secret_access_key'])){return this[_0x9a1c('0x10')][_0x9a1c('0xac')](_0x9a1c('0x123'));}if(!this[_0x9a1c('0xab')](_0x585d4f[_0x9a1c('0x8f')])){return this['channel']['noop'](_0x9a1c('0x127'));}if(!this[_0x9a1c('0xab')](_0x585d4f[_0x9a1c('0x60')])){return this[_0x9a1c('0x10')][_0x9a1c('0xac')](_0x9a1c('0xad'));}this[_0x9a1c('0x10')]['bot']=!![];this[_0x9a1c('0x3b')](_0x585d4f);this['createSquareMessage'](_0x585d4f[_0x9a1c('0x60')],'in','','');this[_0x9a1c('0x10')]['noop'](util[_0x9a1c('0x59')](_0x9a1c('0x128'),_0x585d4f[_0x9a1c('0x60')]));var _0x2b1195=this[_0x9a1c('0x8d')][_0x9a1c('0x73')](this,_0x585d4f);if(_0x2b1195){for(var _0x1fb575 in _0x2b1195){if(_0x2b1195['hasOwnProperty'](_0x1fb575)&&_[_0x9a1c('0x97')](_0x2b1195[_0x1fb575])){this[_0x9a1c('0x10')]['setVariable'](util['format'](_0x9a1c('0x129'),_0x1fb575[_0x9a1c('0x6d')]()),_0x2b1195[_0x1fb575]);}}if(_[_0x9a1c('0x55')](_0x2b1195['message'])){return this[_0x9a1c('0x10')][_0x9a1c('0xac')](_0x9a1c('0x12a'));}else{this[_0x9a1c('0x46')](_0x2b1195['message'],_0x9a1c('0xec'),_0x9a1c('0x12b'),'');return this['channel']['noop'](util[_0x9a1c('0x59')](_0x9a1c('0x12c'),_0x2b1195['message']));}}return this['channel'][_0x9a1c('0x32')](_0x585d4f,'Amazon\x20Lex\x20is\x20unreachable');};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x12d')]=function(_0x4842b0){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')]('Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s',_0x4842b0[_0x9a1c('0xaa')],_0x4842b0[_0x9a1c('0x6a')]));if(!this[_0x9a1c('0xab')](_0x4842b0['key'])){return this[_0x9a1c('0x10')][_0x9a1c('0xac')](_0x9a1c('0x12e'));}var _0x277147='wav';var _0x436988=util[_0x9a1c('0x59')](_0x9a1c('0x12f'),FILES_PATH,rs[_0x9a1c('0x11a')](0x4));var _0x376fe8=util[_0x9a1c('0x59')]('%s.%s',_0x436988,_0x277147);var _0x275f78=!![];if(_0x4842b0[_0x9a1c('0x130')]==='NOBEEP'){_0x275f78=![];}var _0x580546=this['channel']['recordFile'](_0x436988,_0x277147,_0x4842b0[_0x9a1c('0x131')],_0x4842b0[_0x9a1c('0x6a')],undefined,_0x275f78);if(_0x580546[_0x9a1c('0xa5')]!==-0x1){this['channel']['noop'](util['format']('google\x20%s\x20file\x20created',_0x376fe8));var _0x26eb05=this[_0x9a1c('0x132')][_0x9a1c('0x73')](this,_0x4842b0,_0x376fe8);if(_0x26eb05){for(var _0x291ade in _0x26eb05){if(_0x26eb05[_0x9a1c('0x96')](_0x291ade)){this[_0x9a1c('0x10')][_0x9a1c('0xa0')](util['format'](_0x9a1c('0x133'),_0x291ade[_0x9a1c('0x6d')]()),_0x26eb05[_0x291ade]);}}return this[_0x9a1c('0x10')][_0x9a1c('0xac')](util['format'](_0x9a1c('0x134'),JSON[_0x9a1c('0x76')](_0x26eb05)));}}return _0x580546;};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x135')]=function(_0x53fb06){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0x136'),_0x53fb06[_0x9a1c('0xaa')]));if(!this[_0x9a1c('0xab')](_0x53fb06[_0x9a1c('0x92')])){return this['channel'][_0x9a1c('0xac')](_0x9a1c('0x137'));}if(!this['isConfigured'](_0x53fb06[_0x9a1c('0x93')])){return this[_0x9a1c('0x10')][_0x9a1c('0xac')](_0x9a1c('0x138'));}var _0x39de7b=_0x9a1c('0x139');var _0x4b348d=util['format']('%s/recordings/%s',FILES_PATH,rs[_0x9a1c('0x11a')](0x4));var _0x3e1993=util[_0x9a1c('0x59')]('%s.%s',_0x4b348d,_0x39de7b);var _0x1e6ed8=!![];if(_0x53fb06[_0x9a1c('0x130')]===_0x9a1c('0x13a')){_0x1e6ed8=![];}var _0x1869d7=this[_0x9a1c('0x10')][_0x9a1c('0x13b')](_0x4b348d,_0x39de7b,_0x53fb06[_0x9a1c('0x131')],_0x53fb06['timeout'],undefined,_0x1e6ed8);if(_0x1869d7[_0x9a1c('0xa5')]!==-0x1){this[_0x9a1c('0x10')][_0x9a1c('0xac')](util[_0x9a1c('0x59')](_0x9a1c('0x13c'),_0x3e1993));var _0x4fb760=this['tildeASR'][_0x9a1c('0x73')](this,_0x53fb06,_0x3e1993);if(_0x4fb760){for(var _0x851e67 in _0x4fb760){if(_0x4fb760['hasOwnProperty'](_0x851e67)){this[_0x9a1c('0x10')][_0x9a1c('0xa0')](util[_0x9a1c('0x59')]('TILDE_ASR_%s',_0x851e67[_0x9a1c('0x6d')]()),_0x4fb760[_0x851e67]);}}return this[_0x9a1c('0x10')][_0x9a1c('0xac')](util[_0x9a1c('0x59')](_0x9a1c('0x13d'),JSON[_0x9a1c('0x76')](_0x4fb760)));}}return _0x1869d7;};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x13e')]=function(_0x3366b8){logger['info'](util['format'](_0x9a1c('0x13f'),_0x3366b8[_0x9a1c('0xaa')]));return this[_0x9a1c('0x10')][_0x9a1c('0x140')](_0x3366b8[_0x9a1c('0x141')],_0x3366b8['extension'],_0x3366b8[_0x9a1c('0x41')]);};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x142')]=function(_0x4387a3){logger[_0x9a1c('0x35')](util['format'](_0x9a1c('0x143'),_0x4387a3['label']));if(!this[_0x9a1c('0xab')](_0x4387a3['condition'])){return this['channel'][_0x9a1c('0x32')](_0x4387a3,'no\x20condition\x20configured');}try{var _0x2c88eb=eval(_0x4387a3[_0x9a1c('0x144')])?_0x9a1c('0x145'):'false';this[_0x9a1c('0x10')][_0x9a1c('0xac')](util['format']('EVAL\x20CONDITION\x20%s\x20%s',_0x4387a3['condition'],_0x2c88eb));return{'code':0xc8,'result':_0x2c88eb};}catch(_0x35aacc){return{'code':0xc8,'result':_0x9a1c('0x146')};}};AGIVertices[_0x9a1c('0x12')]['gotoiftime']=function(_0x1407a9){logger[_0x9a1c('0x35')](util['format'](_0x9a1c('0x147'),_0x1407a9[_0x9a1c('0xaa')]));if(!this[_0x9a1c('0xab')](_0x1407a9[_0x9a1c('0x148')])){return this['channel']['error'](_0x1407a9,'no\x20interval\x20configured');}var _0x2576bc=this[_0x9a1c('0x2a')][_0x9a1c('0x73')](this,_0x1407a9[_0x9a1c('0x148')]);if(!_0x2576bc){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x1407a9,_0x9a1c('0x149'));}for(var _0x5f3927=0x0;_0x5f3927<_0x2576bc['length'];_0x5f3927+=0x1){var _0x374280=this[_0x9a1c('0x10')][_0x9a1c('0x13')](util['format']('IFTIME(%s?true:false)',_0x2576bc[_0x5f3927]));if(_0x374280['result']===-0x1){return _0x374280;}logger[_0x9a1c('0x35')](util['format'](_0x9a1c('0x14a'),_0x2576bc[_0x5f3927],_0x374280[_0x9a1c('0xa3')]));if(_0x374280[_0x9a1c('0xa3')]==='true'){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0x14a'),_0x2576bc[_0x5f3927],_0x9a1c('0x145')));this['channel']['noop'](util[_0x9a1c('0x59')](_0x9a1c('0x14a'),_0x2576bc[_0x5f3927],'true'));return{'code':0xc8,'result':_0x9a1c('0x145')};}else{logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')]('IFTIME\x20%s\x20%s',_0x2576bc[_0x5f3927],_0x9a1c('0x146')));this[_0x9a1c('0x10')][_0x9a1c('0xac')](util['format'](_0x9a1c('0x14a'),_0x2576bc[_0x5f3927],_0x9a1c('0x146')));}}return{'code':0xc8,'result':_0x9a1c('0x146')};};AGIVertices[_0x9a1c('0x12')]['hangup']=function(_0x52cde0){logger[_0x9a1c('0x35')](util['format'](_0x9a1c('0x14b'),_0x52cde0[_0x9a1c('0xaa')]));return this[_0x9a1c('0x10')][_0x9a1c('0x14c')]();};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x14d')]=function(_0x2ae78a){logger['info'](util[_0x9a1c('0x59')](_0x9a1c('0x14e'),_0x2ae78a['label']));if(!this[_0x9a1c('0xab')](_0x2ae78a['key'])){return this[_0x9a1c('0x10')][_0x9a1c('0xac')](_0x9a1c('0x12e'));}var _0x53f222='wav';var _0x4480ec=util['format']('%s/recordings/%s',FILES_PATH,rs[_0x9a1c('0x11a')](0x4));var _0x4936be=util['format'](_0x9a1c('0x9f'),_0x4480ec,_0x53f222);var _0x3bd49e=!![];if(_0x2ae78a[_0x9a1c('0x130')]===_0x9a1c('0x13a')){_0x3bd49e=![];}var _0x12dc78=this[_0x9a1c('0x10')]['recordFile'](_0x4480ec,_0x53f222,_0x2ae78a['intKey'],_0x2ae78a[_0x9a1c('0x6a')],undefined,_0x3bd49e);if(_0x12dc78[_0x9a1c('0xa5')]!==-0x1){this['channel'][_0x9a1c('0xac')](util[_0x9a1c('0x59')](_0x9a1c('0x14f'),_0x4936be));var _0x2703ba=this[_0x9a1c('0x83')]['sync'](this,_0x2ae78a,_0x4936be);if(_0x2703ba){for(var _0xa54132 in _0x2703ba){if(_0x2703ba['hasOwnProperty'](_0xa54132)){this[_0x9a1c('0x10')][_0x9a1c('0xa0')](util[_0x9a1c('0x59')](_0x9a1c('0x150'),_0xa54132['toUpperCase']()),_0x2703ba[_0xa54132]);}}return this[_0x9a1c('0x10')][_0x9a1c('0xac')](util[_0x9a1c('0x59')](_0x9a1c('0x151'),JSON['stringify'](_0x2703ba)));}}return _0x12dc78;};AGIVertices['prototype'][_0x9a1c('0x152')]=function(_0x3285e4){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')]('Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block',_0x3285e4['label']));if(!this[_0x9a1c('0xab')](_0x3285e4[_0x9a1c('0x84')])){return this[_0x9a1c('0x10')]['noop'](_0x9a1c('0x12e'));}if(!this['isConfigured'](_0x3285e4[_0x9a1c('0x60')])){return this[_0x9a1c('0x10')][_0x9a1c('0xac')](_0x9a1c('0xad'));}this['channel']['noop'](util['format']('Trying\x20ispeech\x20TTS\x20%s',_0x3285e4[_0x9a1c('0x60')]));var _0x29ccd9=this['ispeechTTS'][_0x9a1c('0x73')](this,_0x3285e4);if(_0x29ccd9){this['channel'][_0x9a1c('0xac')](util[_0x9a1c('0x59')](_0x9a1c('0x14f'),_0x29ccd9));var _0x5760b7=this[_0x9a1c('0x10')][_0x9a1c('0x103')](_0x29ccd9,_0x3285e4[_0x9a1c('0x131')]);try{fs[_0x9a1c('0x104')](_0x29ccd9+_0x9a1c('0x105'));}catch(_0x2d84ec){logger[_0x9a1c('0x32')](_0x2d84ec);}return _0x5760b7;}return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x3285e4,_0x9a1c('0x153'));};AGIVertices[_0x9a1c('0x12')]['login']=function(_0x3511e1){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0x154'),_0x3511e1[_0x9a1c('0xaa')]));if(!this['isConfigured'](_0x3511e1[_0x9a1c('0x155')])){return this['channel'][_0x9a1c('0x32')](_0x3511e1,'no\x20find\x20by\x20configured');}logger['info'](util[_0x9a1c('0x59')](_0x9a1c('0x156'),this[_0x9a1c('0x10')][_0x9a1c('0x3d')],_0x3511e1[_0x9a1c('0x155')]));var _0x369327=this['agentLogin']['sync'](this,_0x3511e1[_0x9a1c('0x155')]);if(_0x369327){logger['info'](util[_0x9a1c('0x59')](_0x9a1c('0x157'),this[_0x9a1c('0x10')][_0x9a1c('0x3d')],_0x3511e1[_0x9a1c('0x155')]));this[_0x9a1c('0x10')][_0x9a1c('0xac')](util[_0x9a1c('0x59')](_0x9a1c('0x157'),this[_0x9a1c('0x10')][_0x9a1c('0x3d')],_0x3511e1['findBy']));return{'code':0xc8,'result':_0x9a1c('0x158')};}else{logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0x159'),this[_0x9a1c('0x10')][_0x9a1c('0x3d')],_0x3511e1[_0x9a1c('0x155')]));this[_0x9a1c('0x10')]['noop'](util[_0x9a1c('0x59')](_0x9a1c('0x159'),this[_0x9a1c('0x10')][_0x9a1c('0x3d')],_0x3511e1[_0x9a1c('0x155')]));return{'code':0xc8,'result':_0x9a1c('0x15a')};}};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x15b')]=function(_0x42fe79){logger[_0x9a1c('0x35')](util['format']('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x42fe79[_0x9a1c('0xaa')]));if(!this['isConfigured'](_0x42fe79[_0x9a1c('0x155')])){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x42fe79,_0x9a1c('0x15c'));}logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0x156'),this[_0x9a1c('0x10')][_0x9a1c('0x3d')],_0x42fe79[_0x9a1c('0x155')]));var _0x1d6014=this[_0x9a1c('0x56')][_0x9a1c('0x73')](this,_0x42fe79[_0x9a1c('0x155')]);if(_0x1d6014){logger[_0x9a1c('0x35')](util['format'](_0x9a1c('0x157'),this[_0x9a1c('0x10')]['callerid'],_0x42fe79[_0x9a1c('0x155')]));this[_0x9a1c('0x10')][_0x9a1c('0xac')](util[_0x9a1c('0x59')](_0x9a1c('0x157'),this[_0x9a1c('0x10')][_0x9a1c('0x3d')],_0x42fe79[_0x9a1c('0x155')]));return{'code':0xc8,'result':_0x9a1c('0x158')};}else{logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0x9a1c('0x3d')],_0x42fe79[_0x9a1c('0x155')]));this[_0x9a1c('0x10')][_0x9a1c('0xac')](util[_0x9a1c('0x59')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x9a1c('0x10')]['callerid'],_0x42fe79[_0x9a1c('0x155')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x15d')]=function(_0x1024ed){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')]('Enter\x20in\x20MATH\x20(%s)\x20block',_0x1024ed[_0x9a1c('0xaa')]));if(!this[_0x9a1c('0xab')](_0x1024ed['operation'])){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x1024ed,_0x9a1c('0x15e'));}this[_0x9a1c('0x10')]['noop'](util[_0x9a1c('0x59')](_0x9a1c('0x15f'),_0x1024ed[_0x9a1c('0x160')]));var _0x715894=eval(_0x1024ed[_0x9a1c('0x160')]);if(!this[_0x9a1c('0xab')](_0x1024ed['variable_id'])){return this['channel'][_0x9a1c('0xac')](_0x9a1c('0xdb'));}var _0x63ffdc=this[_0x9a1c('0x13')][_0x9a1c('0x73')](this,_0x1024ed[_0x9a1c('0xda')]);if(!_0x63ffdc){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x1024ed,_0x9a1c('0xdc'));}if(_['isArray'](_0x715894)){var _0x57b1c5=this;_0x715894['forEach'](function(_0x24018f,_0x186397){_0x57b1c5[_0x9a1c('0x10')][_0x9a1c('0xa0')](util[_0x9a1c('0x59')](_0x9a1c('0x161'),_0x63ffdc,_0x186397),_0x24018f);});return this[_0x9a1c('0x10')][_0x9a1c('0xac')](util[_0x9a1c('0x59')](_0x9a1c('0x162'),_0x63ffdc));}else{return this[_0x9a1c('0x10')][_0x9a1c('0xa0')](_0x63ffdc,_0x715894);}};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0xe')]=function(_0x193f2c){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0x163'),_0x193f2c[_0x9a1c('0xaa')]));if(_0x193f2c['retry']===0x0){return this['maxRetry'](_0x193f2c);}_0x193f2c['retry']-=0x1;if(!this[_0x9a1c('0xab')](_0x193f2c[_0x9a1c('0x111')])){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x193f2c,_0x9a1c('0x112'));}var _0x199848=this[_0x9a1c('0x23')][_0x9a1c('0x73')](this,_0x193f2c[_0x9a1c('0x111')]);if(!_0x199848){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x193f2c,'no\x20file\x20audio\x20found');}var _0x82431c=this[_0x9a1c('0x10')][_0x9a1c('0x114')](_0x199848,_0x193f2c[_0x9a1c('0x115')],_0x193f2c[_0x9a1c('0x164')]);var _0x2fb7ea=_0x82431c[_0x9a1c('0xa5')];if(_0x82431c[_0x9a1c('0xa5')]===-0x1){this[_0x9a1c('0x3b')][_0x9a1c('0x73')](this,_0x193f2c,'-1');return _0x82431c;}else if(_0x82431c[_0x9a1c('0xa3')]===_0x9a1c('0x6a')){_0x82431c[_0x9a1c('0xa5')]=_0x82431c[_0x9a1c('0xa5')][_0x9a1c('0x9d')]>0x0?_0x82431c['result']:'t';}else if(_[_0x9a1c('0x48')](_0x82431c[_0x9a1c('0xa5')])){_0x82431c[_0x9a1c('0xa5')]='#';_0x2fb7ea='#';}if(!this[_0x9a1c('0xab')](_0x193f2c[_0x9a1c('0xda')])){this[_0x9a1c('0x10')][_0x9a1c('0xac')]('no\x20variable\x20selected\x20for\x20the\x20result');}else{var _0x2ae323=this['getVariable'][_0x9a1c('0x73')](this,_0x193f2c['variable_id']);if(!_0x2ae323){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x193f2c,_0x9a1c('0xdc'));}this[_0x9a1c('0x10')][_0x9a1c('0xa0')](_0x2ae323,_0x2fb7ea);}this[_0x9a1c('0x3b')][_0x9a1c('0x73')](this,_0x193f2c,_0x2fb7ea);return _0x82431c;};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0xac')]=function(_0x53dd6a){logger[_0x9a1c('0x35')](util['format'](_0x9a1c('0x165'),_0x53dd6a[_0x9a1c('0xaa')]));return this[_0x9a1c('0x10')]['noop'](_0x53dd6a[_0x9a1c('0x166')]||_0x53dd6a[_0x9a1c('0xaa')]);};AGIVertices['prototype'][_0x9a1c('0x167')]=function(_0x4bf0b0){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')]('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x4bf0b0[_0x9a1c('0xaa')]));if(!this['isConfigured'](_0x4bf0b0[_0x9a1c('0x155')])){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x4bf0b0,'no\x20find\x20by\x20configured');}logger['info'](util['format'](_0x9a1c('0x156'),this[_0x9a1c('0x10')][_0x9a1c('0x3d')],_0x4bf0b0[_0x9a1c('0x155')]));var _0x216710=this[_0x9a1c('0x52')][_0x9a1c('0x73')](this,_0x4bf0b0['pause_id']);var _0x448a9d=this['agentPause'][_0x9a1c('0x73')](this,_0x4bf0b0[_0x9a1c('0x155')],_0x216710);if(_0x448a9d){logger[_0x9a1c('0x35')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0x9a1c('0x3d')],_0x4bf0b0['findBy']));this[_0x9a1c('0x10')][_0x9a1c('0xac')](util['format'](_0x9a1c('0x157'),this[_0x9a1c('0x10')]['callerid'],_0x4bf0b0[_0x9a1c('0x155')]));return{'code':0xc8,'result':_0x9a1c('0x158')};}else{logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0x159'),this[_0x9a1c('0x10')][_0x9a1c('0x3d')],_0x4bf0b0[_0x9a1c('0x155')]));this[_0x9a1c('0x10')]['noop'](util[_0x9a1c('0x59')](_0x9a1c('0x157'),this['channel'][_0x9a1c('0x3d')],_0x4bf0b0['findBy']));return{'code':0xc8,'result':_0x9a1c('0x15a')};}};AGIVertices[_0x9a1c('0x12')]['playback']=function(_0x3625f9){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0x168'),_0x3625f9[_0x9a1c('0xaa')]));if(!this['isConfigured'](_0x3625f9['file_id'])){return this[_0x9a1c('0x10')]['error'](_0x3625f9,'no\x20file\x20audio\x20selected');}var _0x1e98fb=this['getSound'][_0x9a1c('0x73')](this,_0x3625f9['file_id']);if(!_0x1e98fb){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x3625f9,_0x9a1c('0x113'));}var _0x1a2512=this[_0x9a1c('0x10')][_0x9a1c('0x5c')]('PLAYBACK',[_0x1e98fb,_0x3625f9[_0x9a1c('0xe7')]]);if(_0x1a2512['result']===-0x1){return _0x1a2512;}return this['channel'][_0x9a1c('0xac')](util[_0x9a1c('0x59')]('Executed\x20command\x20%s\x20%s','PLAYBACK',_0x1e98fb));};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x169')]=function(_0xc0f46d){logger[_0x9a1c('0x35')](util['format']('Enter\x20in\x20QUEUE\x20(%s)\x20block',_0xc0f46d[_0x9a1c('0xaa')]));if(!this[_0x9a1c('0xab')](_0xc0f46d[_0x9a1c('0x16a')])){return this['channel'][_0x9a1c('0x32')](_0xc0f46d,'no\x20queue\x20selected');}var _0x493ef4='';var _0x202dd1=parseInt(_0xc0f46d['queue_id'],0xa);if(isNaN(_0x202dd1)){_0x493ef4=_0xc0f46d[_0x9a1c('0x16a')];}else{_0x493ef4=this['getVoiceQueue'][_0x9a1c('0x73')](this,_0xc0f46d['queue_id']);if(!_0x493ef4){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0xc0f46d,_0x9a1c('0x16b'));}}var _0x227dcd='';if(this[_0x9a1c('0xab')](_0xc0f46d['file_id'])){var _0x44efec=this[_0x9a1c('0x23')]['sync'](this,_0xc0f46d['file_id']);if(_0x44efec){_0x227dcd=_0x44efec;}}this[_0x9a1c('0x3b')][_0x9a1c('0x73')](this,_0xc0f46d,_0x493ef4);if(_0xc0f46d[_0x9a1c('0xe7')][_0x9a1c('0x16c')]('x')<0x0){_0xc0f46d[_0x9a1c('0xe7')]+='x';}if(_0xc0f46d[_0x9a1c('0xe7')][_0x9a1c('0x16c')]('X')<0x0){_0xc0f46d['opts']+='X';}this[_0x9a1c('0x10')][_0x9a1c('0xa0')](_0x9a1c('0x16d'),_0x493ef4?_0x493ef4[_0x9a1c('0x16e')]():'');var _0x214d1f=this[_0x9a1c('0x10')][_0x9a1c('0x5c')]('QUEUE',[_0x493ef4,_0xc0f46d[_0x9a1c('0xe7')],_0xc0f46d[_0x9a1c('0x68')],_0x227dcd,_0xc0f46d['timeout'],_0xc0f46d['agi'],_0xc0f46d[_0x9a1c('0x16f')],_0xc0f46d['gosub'],'',_0xc0f46d[_0x9a1c('0x170')]]);if(_0x214d1f[_0x9a1c('0xa5')]===-0x1){return _0x214d1f;}return this[_0x9a1c('0x10')][_0x9a1c('0xac')](util[_0x9a1c('0x59')](_0x9a1c('0xc4'),_0x9a1c('0x171'),_0x493ef4));};AGIVertices[_0x9a1c('0x12')]['record']=function(_0x288044){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0x172'),_0x288044[_0x9a1c('0xaa')]));var _0x244472=_0x288044[_0x9a1c('0x173')]||'wav';var _0x3dce6a=util[_0x9a1c('0x59')](_0x9a1c('0x174'),this[_0x9a1c('0x10')]['uniqueid'],rs[_0x9a1c('0x11a')](0x5));var _0x1a2e95=util[_0x9a1c('0x59')](_0x9a1c('0x175'),FILES_PATH,_0x3dce6a,_0x244472);var _0x49d094=util[_0x9a1c('0x59')](_0x9a1c('0x12f'),FILES_PATH,_0x3dce6a);this[_0x9a1c('0x3e')][_0x9a1c('0x73')](this,_0x288044,_0x3dce6a,_0x1a2e95);this[_0x9a1c('0x10')][_0x9a1c('0xa0')](_0x9a1c('0x176'),_0x3dce6a);logger[_0x9a1c('0x35')](_0x9a1c('0x177'),_0x49d094,_0x244472,_0x288044['escape_digits'],_0x288044['timeout']);return this[_0x9a1c('0x10')][_0x9a1c('0x13b')](_0x49d094,_0x244472,_0x288044[_0x9a1c('0x178')],_0x288044[_0x9a1c('0x6a')],undefined,!![]);};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x179')]=function(_0xf3a23c){logger['info'](util['format'](_0x9a1c('0x17a'),_0xf3a23c[_0x9a1c('0xaa')]));if(!this[_0x9a1c('0xab')](_0xf3a23c['url'])){return this[_0x9a1c('0x10')]['noop'](_0x9a1c('0x17b'));}var _0x387ad1=this[_0x9a1c('0x67')][_0x9a1c('0x73')](this,_0xf3a23c);logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0x17c'),util[_0x9a1c('0x17d')](_0x387ad1,{'showHidden':![],'depth':null})));if(!this[_0x9a1c('0xab')](_0xf3a23c['variable_id'])){return this[_0x9a1c('0x10')]['noop'](_0x9a1c('0x17e'));}var _0xab404e=this['getVariable'][_0x9a1c('0x73')](this,_0xf3a23c['variable_id']);if(!_0xab404e){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0xf3a23c,_0x9a1c('0xdc'));}this[_0x9a1c('0x10')][_0x9a1c('0xa0')](util[_0x9a1c('0x59')](_0x9a1c('0x17f'),_0xab404e),_0x387ad1[_0x9a1c('0x180')]?_0x387ad1[_0x9a1c('0x180')]:'200');this[_0x9a1c('0x10')][_0x9a1c('0xa0')](util[_0x9a1c('0x59')]('%s_STATUS_MESSAGE',_0xab404e),_0x387ad1['statusMessage']?_0x387ad1[_0x9a1c('0x181')]:'OK');if(_0x387ad1[_0x9a1c('0x6e')]){try{this[_0x9a1c('0x9e')](_0x387ad1[_0x9a1c('0x6e')],_0xab404e);}catch(_0x30be02){logger[_0x9a1c('0x32')](util[_0x9a1c('0x59')](_0x9a1c('0x182'),_0xab404e));}}return this['channel'][_0x9a1c('0xac')](util['format'](_0x9a1c('0x183'),_0xab404e));};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x184')]=function(_0x4a804b){logger[_0x9a1c('0x35')](util['format'](_0x9a1c('0x185'),_0x4a804b[_0x9a1c('0xaa')]));return this[_0x9a1c('0x10')][_0x9a1c('0x186')](_0x4a804b['digits']['replace'](/\s+/g,''),_0x4a804b['escape_digits']);};AGIVertices['prototype'][_0x9a1c('0x187')]=function(_0x3c41e8){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')]('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0x3c41e8[_0x9a1c('0xaa')]));return this[_0x9a1c('0x10')][_0x9a1c('0x188')](_0x3c41e8[_0x9a1c('0x189')][_0x9a1c('0x18a')](/\s+/g,''),_0x3c41e8[_0x9a1c('0x178')]);};AGIVertices[_0x9a1c('0x12')]['sayphonetic']=function(_0x2f45c7){logger['info'](util[_0x9a1c('0x59')](_0x9a1c('0x18b'),_0x2f45c7[_0x9a1c('0xaa')]));return this[_0x9a1c('0x10')][_0x9a1c('0x18c')](_0x2f45c7[_0x9a1c('0x60')],_0x2f45c7[_0x9a1c('0x178')]);};AGIVertices['prototype']['sendMail']=function(_0x3cd472){logger[_0x9a1c('0x35')](util['format'](_0x9a1c('0x18d'),_0x3cd472[_0x9a1c('0xaa')]));if(!this[_0x9a1c('0xab')](_0x3cd472[_0x9a1c('0x18e')])){return this[_0x9a1c('0x10')][_0x9a1c('0xac')](_0x9a1c('0x18f'));}var _0x23911e=this[_0x9a1c('0x190')][_0x9a1c('0x73')](this,_0x3cd472[_0x9a1c('0x18e')]);if(!_0x23911e||!_0x23911e[_0x9a1c('0x191')]){return this['channel']['error'](_0x3cd472,'no\x20mail\x20account\x20found');}var _0x1198a8={'from':util[_0x9a1c('0x59')]('\x22%s\x22\x20<%s>',_0x23911e['name'],_0x23911e[_0x9a1c('0x192')]||_0x23911e[_0x9a1c('0x191')][_0x9a1c('0x193')]),'to':_0x3cd472['to']||'','cc':_0x3cd472['cc']||'','bcc':_0x3cd472['bcc']||'','subject':_0x3cd472[_0x9a1c('0x194')],'html':_0x3cd472[_0x9a1c('0x60')],'text':_0x3cd472[_0x9a1c('0x60')]};var _0x2a0640={'tls':{'rejectUnauthorized':![]}};if(_0x23911e[_0x9a1c('0x191')][_0x9a1c('0x195')]){_0x2a0640[_0x9a1c('0x195')]=_0x23911e[_0x9a1c('0x191')][_0x9a1c('0x195')];}else{_0x2a0640['host']=_0x23911e[_0x9a1c('0x191')][_0x9a1c('0x196')];_0x2a0640['port']=_0x23911e[_0x9a1c('0x191')]['port'];_0x2a0640['secure']=_0x23911e['Smtp'][_0x9a1c('0x197')];}if(_0x23911e[_0x9a1c('0x191')]['authentication']){_0x2a0640[_0x9a1c('0x198')]={'user':_0x23911e[_0x9a1c('0x191')][_0x9a1c('0x193')],'pass':_0x23911e[_0x9a1c('0x191')][_0x9a1c('0x199')]};}if(this[_0x9a1c('0xab')](_0x3cd472[_0x9a1c('0x19a')])){}logger[_0x9a1c('0xe2')](_0x9a1c('0x19b'),JSON[_0x9a1c('0x76')](_0x1198a8));this[_0x9a1c('0x3b')][_0x9a1c('0x73')](this,_0x3cd472,_0x3cd472[_0x9a1c('0x18e')]);this['channel']['noop'](util[_0x9a1c('0x59')]('Trying\x20SendMail\x20with\x20account\x20%s',_0x23911e[_0x9a1c('0x15')]));this[_0x9a1c('0x28')][_0x9a1c('0x73')](this,_0x2a0640,_0x1198a8);return this[_0x9a1c('0x10')][_0x9a1c('0xac')]('Mail\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x19c')]=function(_0x19d21c){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0x19d'),_0x19d21c['label']));return this[_0x9a1c('0x10')][_0x9a1c('0xac')](_0x9a1c('0x19e'));};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x19f')]=function(_0x2ff9fd){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0x1a0'),_0x2ff9fd['label']));if(!this[_0x9a1c('0xab')](_0x2ff9fd[_0x9a1c('0x1a1')])){return this[_0x9a1c('0x10')]['noop'](_0x9a1c('0x1a2'));}var _0x59713c=this[_0x9a1c('0x38')]['sync'](this,_0x2ff9fd[_0x9a1c('0x1a1')]);if(!_0x59713c){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x2ff9fd,_0x9a1c('0x1a3'));}var _0x24e9af={'body':_0x2ff9fd[_0x9a1c('0x1a4')],'phone':_0x2ff9fd['to']||'','SmsAccountId':_0x59713c['id']};logger[_0x9a1c('0xe2')](_0x9a1c('0x1a5'),JSON[_0x9a1c('0x76')](_0x24e9af));this[_0x9a1c('0x3b')][_0x9a1c('0x73')](this,_0x2ff9fd,_0x2ff9fd[_0x9a1c('0x1a1')]);this['channel']['noop'](util[_0x9a1c('0x59')](_0x9a1c('0x1a6'),_0x59713c['name']));this[_0x9a1c('0x3a')][_0x9a1c('0x73')](this,_0x24e9af);return this[_0x9a1c('0x10')]['noop']('Sms\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x1a7')]=function(_0x2ec1cc){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0x1a8'),_0x2ec1cc[_0x9a1c('0xaa')]));if(!this[_0x9a1c('0xab')](_0x2ec1cc[_0x9a1c('0xda')])){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x2ec1cc,_0x9a1c('0x1a9'));}var _0x1e7a4a=this[_0x9a1c('0x13')][_0x9a1c('0x73')](this,_0x2ec1cc[_0x9a1c('0xda')]);if(!_0x1e7a4a){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x2ec1cc,_0x9a1c('0xdc'));}return this[_0x9a1c('0x10')]['setVariable'](_0x1e7a4a,_0x2ec1cc['variable_value']);};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x1aa')]=function(_0x2ffdb1){logger['info'](util['format'](_0x9a1c('0x1ab'),_0x2ffdb1['label']));this[_0x9a1c('0x10')]['noop'](_0x9a1c('0x1ac'));if(_0x2ffdb1['answer']==='yes'){this[_0x9a1c('0x10')][_0x9a1c('0xac')](_0x9a1c('0x1ad'));return this[_0x9a1c('0x10')][_0x9a1c('0xba')]();}return this['channel'][_0x9a1c('0xac')](_0x9a1c('0x1ae'));};AGIVertices[_0x9a1c('0x12')]['subproject']=function(_0x196849){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0x1af'),_0x196849[_0x9a1c('0xaa')]));if(!this[_0x9a1c('0xab')](_0x196849[_0x9a1c('0x1b0')])){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x196849,'no\x20subproject\x20selected');}var _0x8c2727=this[_0x9a1c('0x1a')][_0x9a1c('0x73')](this,_0x196849[_0x9a1c('0x1b0')]);if(!this[_0x9a1c('0xab')](_0x8c2727)){return this['channel'][_0x9a1c('0x32')](_0x196849,util['format'](_0x9a1c('0x1b1'),_0x196849[_0x9a1c('0x1b0')]));}if(_0x8c2727===this[_0x9a1c('0x10')]['arg_1']){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x196849,_0x9a1c('0x1b2'));}this['createSquareDetailsReport']['sync'](this,_0x196849,_0x8c2727);var _0xc6eadd=this['channel'][_0x9a1c('0x5c')](_0x9a1c('0x1b3'),util[_0x9a1c('0x59')]('agi://%s/square,\x22%s\x22,\x22%s\x22',config[_0x9a1c('0x9')][_0x9a1c('0x196')]||_0x9a1c('0x1b4'),_0x8c2727,this[_0x9a1c('0x10')]['arg_1']));if(_0xc6eadd['result']===-0x1){return _0xc6eadd;}return this[_0x9a1c('0x10')]['noop'](util['format']('Executed\x20command\x20%s\x20%s','AGI',_0x8c2727));};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x1b5')]=function(_0x9d1cbd){logger[_0x9a1c('0x35')](util['format']('Enter\x20in\x20SYSTEM\x20(%s)\x20block',_0x9d1cbd[_0x9a1c('0xaa')]));var _0x4d399d=this[_0x9a1c('0x1b6')]['sync'](this,_0x9d1cbd[_0x9a1c('0xb8')]);this[_0x9a1c('0x3b')][_0x9a1c('0x73')](this,_0x9d1cbd,_0x9d1cbd[_0x9a1c('0xb8')]);if(this[_0x9a1c('0xab')](_0x9d1cbd[_0x9a1c('0xda')])){var _0x15ef5a=this[_0x9a1c('0x13')][_0x9a1c('0x73')](this,_0x9d1cbd[_0x9a1c('0xda')]);if(_0x15ef5a){this[_0x9a1c('0x10')][_0x9a1c('0xa0')](_0x15ef5a,_0x4d399d);return this[_0x9a1c('0x10')][_0x9a1c('0xac')](util[_0x9a1c('0x59')](_0x9a1c('0x1b7'),_0x9d1cbd['command'],_0x15ef5a));}}return this[_0x9a1c('0x10')]['noop'](util[_0x9a1c('0x59')](_0x9a1c('0x1b8'),_0x9d1cbd[_0x9a1c('0xb8')]));};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x1b9')]=function(_0x55844b){logger['info'](util['format']('Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block',_0x55844b[_0x9a1c('0xaa')]));_0x55844b['text']=_0x55844b[_0x9a1c('0x60')]['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x9a1c('0xab')](_0x55844b['apiKey'])){return this[_0x9a1c('0x10')][_0x9a1c('0xac')](_0x9a1c('0x1ba'));}if(!this[_0x9a1c('0xab')](_0x55844b[_0x9a1c('0x60')])){return this['channel'][_0x9a1c('0xac')](_0x9a1c('0xad'));}this['channel'][_0x9a1c('0xac')](util[_0x9a1c('0x59')](_0x9a1c('0x1bb'),_0x55844b[_0x9a1c('0x60')]));var _0x1acf97=this[_0x9a1c('0x5e')][_0x9a1c('0x73')](this,_0x55844b);if(_0x1acf97){this[_0x9a1c('0x10')]['noop'](util[_0x9a1c('0x59')](_0x9a1c('0x1bc'),_0x1acf97));var _0x312ea9=this[_0x9a1c('0x10')][_0x9a1c('0x103')](_0x1acf97);try{fs['unlink'](_0x1acf97+'.wav');}catch(_0x665833){logger[_0x9a1c('0x32')](_0x665833);}return _0x312ea9;}return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x55844b,_0x9a1c('0x1bd'));};AGIVertices['prototype']['tts']=function(_0x4d3f88){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0x1be'),_0x4d3f88['label']));_0x4d3f88[_0x9a1c('0x60')]=_0x4d3f88[_0x9a1c('0x60')][_0x9a1c('0x18a')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x4d3f88[_0x9a1c('0x60')])){return this[_0x9a1c('0x10')][_0x9a1c('0xac')](_0x9a1c('0xad'));}this[_0x9a1c('0x10')]['noop'](util[_0x9a1c('0x59')](_0x9a1c('0x1bf'),_0x4d3f88[_0x9a1c('0x60')]));var _0x386b9c=this[_0x9a1c('0x65')][_0x9a1c('0x73')](this,_0x4d3f88);if(_0x386b9c){this['channel'][_0x9a1c('0xac')](util[_0x9a1c('0x59')]('Google\x20TTS\x20%s\x20file\x20created',_0x386b9c));var _0x2ddcb8=this[_0x9a1c('0x10')]['streamFile'](_0x386b9c);try{fs[_0x9a1c('0x104')](_0x386b9c+_0x9a1c('0x105'));}catch(_0x5e36eb){logger[_0x9a1c('0x32')](_0x5e36eb);}return _0x2ddcb8;}return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x4d3f88,_0x9a1c('0x1c0'));};AGIVertices[_0x9a1c('0x12')][_0x9a1c('0x1c1')]=function(_0x1a78fb){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0x1c2'),_0x1a78fb[_0x9a1c('0xaa')]));if(!this['isConfigured'](_0x1a78fb['findBy'])){return this['channel'][_0x9a1c('0x32')](_0x1a78fb,'no\x20find\x20by\x20configured');}logger[_0x9a1c('0x35')](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this['channel'][_0x9a1c('0x3d')],_0x1a78fb[_0x9a1c('0x155')]));var _0x320c56=this['agentUnpause']['sync'](this,_0x1a78fb[_0x9a1c('0x155')]);if(_0x320c56){logger['info'](util['format']('AGENT\x20%s\x20FOUND\x20BY',this['channel']['callerid'],_0x1a78fb[_0x9a1c('0x155')]));this[_0x9a1c('0x10')][_0x9a1c('0xac')](util[_0x9a1c('0x59')](_0x9a1c('0x157'),this[_0x9a1c('0x10')][_0x9a1c('0x3d')],_0x1a78fb[_0x9a1c('0x155')]));return{'code':0xc8,'result':'success'};}else{logger['info'](util[_0x9a1c('0x59')](_0x9a1c('0x159'),this[_0x9a1c('0x10')][_0x9a1c('0x3d')],_0x1a78fb[_0x9a1c('0x155')]));this[_0x9a1c('0x10')][_0x9a1c('0xac')](util['format'](_0x9a1c('0x159'),this[_0x9a1c('0x10')][_0x9a1c('0x3d')],_0x1a78fb['findBy']));return{'code':0xc8,'result':_0x9a1c('0x15a')};}};AGIVertices['prototype']['voicemail']=function(_0x1dcc83){logger[_0x9a1c('0x35')](util['format']('Enter\x20in\x20VOICEMAIL\x20(%s)\x20block',_0x1dcc83[_0x9a1c('0xaa')]));var _0x26126d=this[_0x9a1c('0x10')][_0x9a1c('0x5c')](_0x9a1c('0x1c3'),[_0x1dcc83[_0x9a1c('0x1c4')],_0x1dcc83[_0x9a1c('0xae')]]);if(_0x26126d[_0x9a1c('0xa5')]===-0x1){return _0x26126d;}return this['channel'][_0x9a1c('0xac')](util[_0x9a1c('0x59')](_0x9a1c('0xc4'),_0x9a1c('0x1c3'),_0x1dcc83[_0x9a1c('0x1c4')]));};AGIVertices['prototype'][_0x9a1c('0x1c5')]=function(_0x448396){logger[_0x9a1c('0x35')](util[_0x9a1c('0x59')](_0x9a1c('0x1c6'),_0x448396[_0x9a1c('0xaa')]));if(!this['isConfigured'](_0x448396[_0x9a1c('0xda')])){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x448396,'no\x20variable\x20selected');}var _0x198ea2=this[_0x9a1c('0x13')]['sync'](this,_0x448396[_0x9a1c('0xda')]);if(!_0x198ea2){return this[_0x9a1c('0x10')][_0x9a1c('0x32')](_0x448396,_0x9a1c('0xdc'));}var _0x23b94a=this[_0x9a1c('0x10')][_0x9a1c('0x13')](_0x198ea2);return{'code':0xc8,'result':_0x23b94a[_0x9a1c('0xa3')]?_0x23b94a['extra']:'-'};};String[_0x9a1c('0x12')][_0x9a1c('0xa2')]=function(_0x2105df,_0x2369c6){return this[_0x9a1c('0xa1')](_0x2105df)[_0x9a1c('0x1c7')](_0x2369c6);};module[_0x9a1c('0x1c8')]=AGIVertices;
\ No newline at end of file
index e5f0f90..f8e1da3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefc3=['[ACW][syncBlindTransfer]\x20%s','syncAgentRingNoAnswer','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','moment','../ami','../../../config/logger','acw','../rpc/user','voiceQueues','agents','channels','agentconnect','syncAgentConnect','hanguprequest','syncHangupRequest','bind','hangup','syncHangup','agentringnoanswer','syncBlindTransfer','milliseconds','diff','seconds','prototype','startAcw','interface','queue','mandatoryDispositionPause','name','Action','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','timers','acwTimeout','timer','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','update','[%s][UPDATE][ACWTIME:%s]','catch','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','error','message','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','mandatoryDisposition','syncAgentConnectPreview','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','attended','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[ACW][syncHangup]\x20%s','syncAttendedTransfer','transfereeuniqueid','secondtransfereruniqueid','isNil','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]'];(function(_0x3cc05d,_0x4b8f88){var _0x28b736=function(_0x369b0e){while(--_0x369b0e){_0x3cc05d['push'](_0x3cc05d['shift']());}};_0x28b736(++_0x4b8f88);}(_0xefc3,0x1ad));var _0x3efc=function(_0x3bc0fb,_0x2c0214){_0x3bc0fb=_0x3bc0fb-0x0;var _0x455bc6=_0xefc3[_0x3bc0fb];return _0x455bc6;};'use strict';var util=require('util');var _=require(_0x3efc('0x0'));var moment=require(_0x3efc('0x1'));var ami=require(_0x3efc('0x2'));var logger=require(_0x3efc('0x3'))(_0x3efc('0x4'));var RpcUser=require(_0x3efc('0x5'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x42216b){this[_0x3efc('0x6')]=_0x42216b[_0x3efc('0x6')];this[_0x3efc('0x7')]=_0x42216b['agents'];this['timers']=_0x42216b['timers'];this[_0x3efc('0x8')]={};ami['on'](_0x3efc('0x9'),this[_0x3efc('0xa')]['bind'](this));ami['on'](_0x3efc('0xb'),this[_0x3efc('0xc')][_0x3efc('0xd')](this));ami['on'](_0x3efc('0xe'),this[_0x3efc('0xf')][_0x3efc('0xd')](this));ami['on'](_0x3efc('0x10'),this['syncAgentRingNoAnswer'][_0x3efc('0xd')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0x3efc('0xd')](this));ami['on']('blindtransfer',this[_0x3efc('0x11')]['bind'](this));ami['on']('custom:agentConnectPreview',this['syncAgentConnectPreview']['bind'](this));}function getDiff(_0x3c61fd){var _0x794bfd=moment()[_0x3efc('0x12')](0x0);var _0x600e83=moment(_0x3c61fd)[_0x3efc('0x12')](0x0);return _0x794bfd[_0x3efc('0x13')](_0x600e83,_0x3efc('0x14'));}Acw[_0x3efc('0x15')][_0x3efc('0x16')]=function(_0x2b712d){try{var _0x3e487e=this;var _0x29847d=this[_0x3efc('0x8')][_0x2b712d][_0x3efc('0x17')];var _0x564f19=this[_0x3efc('0x8')][_0x2b712d][_0x3efc('0x18')];var _0x3ac96e=this['voiceQueues'][_0x564f19];var _0x531a6a=![];var _0x3b8020='ACW';if(_0x3ac96e['mandatoryDisposition']){if(_0x3ac96e[_0x3efc('0x19')][_0x3efc('0x1a')]){_0x531a6a=!![];_0x3b8020=_0x3ac96e[_0x3efc('0x19')][_0x3efc('0x1a')];}}ami[_0x3efc('0x1b')]({'action':'QueuePause','interface':_0x29847d,'paused':!![],'reason':_0x3b8020})[_0x3efc('0x1c')](function(_0x391642){if(_0x3e487e[_0x3efc('0x7')][_0x29847d]){return RpcUser[_0x3efc('0x1d')](_0x3e487e[_0x3efc('0x7')][_0x29847d]['id'])['then'](function(_0x103ef6){if(_0x103ef6&&!_0x103ef6[_0x3efc('0x1e')]){logger[_0x3efc('0x1f')](_0x3efc('0x20'),_0x2b712d,_0x29847d,_0x564f19);var _0x366898=_0x3e487e['channels'][_0x2b712d]['attended']&&_0x3e487e[_0x3efc('0x8')][_0x2b712d][_0x3efc('0x21')]?_0x3e487e['channels'][_0x2b712d][_0x3efc('0x21')]:_0x2b712d;return RpcUser['savePause'](_0x3e487e['agents'][_0x29847d],_0x3b8020,_0x366898)[_0x3efc('0x1c')](function(_0xf30b4b){if(!_0x531a6a){_0x3e487e[_0x3efc('0x22')][_0x29847d]={};logger[_0x3efc('0x1f')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x2b712d,_0x3e487e[_0x3efc('0x6')][_0x564f19][_0x3efc('0x23')],_0x29847d,_0x564f19);_0x3e487e['timers'][_0x29847d][_0x3efc('0x24')]=setTimeout(_0x3e487e[_0x3efc('0x25')][_0x3efc('0xd')](_0x3e487e,_0x29847d),_0x3e487e[_0x3efc('0x6')][_0x564f19][_0x3efc('0x23')]*0x3e8);_0x3e487e[_0x3efc('0x22')][_0x29847d][_0x3efc('0x26')]=moment()[_0x3efc('0x27')](_0x3efc('0x28'));_0x3e487e['timers'][_0x29847d][_0x3efc('0x29')]=_0x2b712d;_0x3e487e['timers'][_0x29847d][_0x3efc('0x18')]=_0x564f19;_0x3e487e[_0x3efc('0x22')][_0x29847d][_0x3efc('0x2a')]=function(){var _0x2ef03b=getDiff(_0x3e487e['timers'][_0x29847d][_0x3efc('0x26')]);clearTimeout(_0x3e487e[_0x3efc('0x22')][_0x29847d][_0x3efc('0x24')]);_0x3e487e['timers'][_0x29847d][_0x3efc('0x24')]=![];RpcVoiceAgentReport[_0x3efc('0x2b')]({'acwtime':_0x2ef03b},_0x3e487e[_0x3efc('0x22')][_0x29847d][_0x3efc('0x29')],_0x29847d)[_0x3efc('0x1c')](function(_0x51c163){logger[_0x3efc('0x1f')](_0x3efc('0x2c'),_0x2b712d,_0x2ef03b,_0x51c163);})[_0x3efc('0x2d')](function(_0x55c2b6){logger['error'](_0x3efc('0x2e'),_0x2b712d,_0x55c2b6);});delete _0x3e487e[_0x3efc('0x22')][_0x29847d];};}});}else{logger[_0x3efc('0x1f')](_0x3efc('0x2f'),_0x2b712d,_0x29847d,_0x564f19);}});}})[_0x3efc('0x2d')](function(_0x5bafe5){logger[_0x3efc('0x30')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x2b712d,_0x3e487e[_0x3efc('0x6')][_0x564f19]['acwTimeout'],_0x29847d,_0x564f19);})['finally'](function(){delete _0x3e487e['channels'][_0x2b712d];});}catch(_0x5f1958){logger[_0x3efc('0x30')]('[ACW][START]\x20%s',_0x5f1958[_0x3efc('0x31')]);}};Acw[_0x3efc('0x15')][_0x3efc('0x25')]=function(_0x17b30c){try{var _0x466c22=this;if(_0x466c22[_0x3efc('0x22')][_0x17b30c]){_0x466c22[_0x3efc('0x22')][_0x17b30c][_0x3efc('0x24')]=![];var _0x4140af=_0x466c22['timers'][_0x17b30c]['uniqueid'];var _0x3de4ef=_0x466c22['timers'][_0x17b30c][_0x3efc('0x18')];var _0x580ec8=_0x466c22[_0x3efc('0x6')][_0x3de4ef][_0x3efc('0x23')];logger['info']('[%s][TIMER][STOP][AGENT:%s]',_0x4140af,_0x17b30c);RpcUser['saveUnpause'](this[_0x3efc('0x7')][_0x17b30c]);RpcVoiceAgentReport[_0x3efc('0x2b')]({'acwtime':_0x580ec8,'agentacw':!![]},_0x4140af,_0x17b30c)[_0x3efc('0x1c')](function(_0x54bcb0){logger[_0x3efc('0x1f')](_0x3efc('0x2c'),_0x4140af,_0x580ec8,_0x54bcb0);})[_0x3efc('0x2d')](function(_0x4431ef){logger['error'](_0x3efc('0x2e'),_0x4140af,_0x4431ef);});}else{logger[_0x3efc('0x30')](_0x3efc('0x32'),_0x17b30c);if(_0x466c22[_0x3efc('0x22')]){logger['info'](_0x3efc('0x33'),JSON[_0x3efc('0x34')](_0x466c22[_0x3efc('0x22')]));}}}catch(_0x3ad443){logger[_0x3efc('0x30')]('[ACW][STOP]\x20%s',_0x3ad443[_0x3efc('0x31')]);}};Acw[_0x3efc('0x15')][_0x3efc('0xa')]=function(_0x2c8407){try{if(this[_0x3efc('0x6')][_0x2c8407[_0x3efc('0x18')]]&&(this[_0x3efc('0x6')][_0x2c8407[_0x3efc('0x18')]][_0x3efc('0x4')]||this['voiceQueues'][_0x2c8407[_0x3efc('0x18')]][_0x3efc('0x35')])){if(this[_0x3efc('0x7')][_0x2c8407[_0x3efc('0x17')]]){this[_0x3efc('0x8')][_0x2c8407['uniqueid']]={'queue':_0x2c8407[_0x3efc('0x18')],'interface':_0x2c8407[_0x3efc('0x17')],'destlinkedid':_0x2c8407[_0x3efc('0x21')]};}}}catch(_0x4252d0){logger[_0x3efc('0x30')]('[ACW][syncAgentConnect]\x20%s',_0x4252d0[_0x3efc('0x31')]);}};Acw[_0x3efc('0x15')][_0x3efc('0x36')]=function(_0x800774){try{if(this[_0x3efc('0x6')][_0x800774[_0x3efc('0x18')]]&&(this[_0x3efc('0x6')][_0x800774['queue']][_0x3efc('0x4')]||this[_0x3efc('0x6')][_0x800774[_0x3efc('0x18')]][_0x3efc('0x35')])){if(this[_0x3efc('0x7')][_0x800774[_0x3efc('0x17')]]){this[_0x3efc('0x8')][_0x800774[_0x3efc('0x29')]]={'queue':_0x800774[_0x3efc('0x18')],'interface':_0x800774[_0x3efc('0x17')]};}}}catch(_0x3373a2){logger[_0x3efc('0x30')](_0x3efc('0x37'),_0x3373a2[_0x3efc('0x31')]);}};Acw[_0x3efc('0x15')]['syncHangupRequest']=function(_0x198df2){try{if(this[_0x3efc('0x8')][_0x198df2[_0x3efc('0x29')]]&&_[_0x3efc('0x38')](this[_0x3efc('0x8')][_0x198df2['uniqueid']]['attended'])){logger['info'](_0x3efc('0x39'),_0x198df2[_0x3efc('0x29')]);this['startAcw'](_0x198df2[_0x3efc('0x29')]);}else if(this[_0x3efc('0x8')][_0x198df2[_0x3efc('0x3a')]]&&_['isUndefined'](this['channels'][_0x198df2['linkedid']][_0x3efc('0x3b')])){logger[_0x3efc('0x1f')](_0x3efc('0x3c'),_0x198df2[_0x3efc('0x3a')]);this[_0x3efc('0x16')](_0x198df2[_0x3efc('0x3a')]);}}catch(_0x3583c0){logger['error'](_0x3efc('0x3d'),_0x3583c0[_0x3efc('0x31')]);}};Acw[_0x3efc('0x15')][_0x3efc('0xf')]=function(_0x411420){try{if(this[_0x3efc('0x8')][_0x411420[_0x3efc('0x29')]]&&this[_0x3efc('0x8')][_0x411420[_0x3efc('0x29')]][_0x3efc('0x3b')]){logger[_0x3efc('0x1f')](_0x3efc('0x3e'),_0x411420['uniqueid']);this[_0x3efc('0x16')](_0x411420[_0x3efc('0x29')]);}else if(this[_0x3efc('0x8')][_0x411420['linkedid']]&&this[_0x3efc('0x8')][_0x411420[_0x3efc('0x3a')]][_0x3efc('0x3b')]){logger['info']('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x411420[_0x3efc('0x3a')]);this[_0x3efc('0x16')](_0x411420['linkedid']);}}catch(_0x439502){logger[_0x3efc('0x30')](_0x3efc('0x3f'),_0x439502['message']);}};Acw[_0x3efc('0x15')][_0x3efc('0x40')]=function(_0x28c9ad){try{if(!_['isNil'](this['channels'][_0x28c9ad[_0x3efc('0x41')]])){this['startAcw'](_0x28c9ad[_0x3efc('0x41')]);if(this[_0x3efc('0x8')][_0x28c9ad[_0x3efc('0x42')]]){this[_0x3efc('0x8')][_0x28c9ad[_0x3efc('0x42')]][_0x3efc('0x3b')]=!![];this[_0x3efc('0x8')][_0x28c9ad['transfertargetuniqueid']]=this[_0x3efc('0x8')][_0x28c9ad[_0x3efc('0x42')]];delete this[_0x3efc('0x8')][_0x28c9ad[_0x3efc('0x42')]];}}else if(!_[_0x3efc('0x43')](this[_0x3efc('0x8')][_0x28c9ad[_0x3efc('0x44')]])){this[_0x3efc('0x16')](_0x28c9ad[_0x3efc('0x44')]);if(this[_0x3efc('0x8')][_0x28c9ad['origtransfereruniqueid']]){this['channels'][_0x28c9ad[_0x3efc('0x45')]]['attended']=!![];this[_0x3efc('0x8')][_0x28c9ad[_0x3efc('0x41')]]=this[_0x3efc('0x8')][_0x28c9ad[_0x3efc('0x45')]];delete this[_0x3efc('0x8')][_0x28c9ad[_0x3efc('0x45')]];}}}catch(_0x4c64b4){logger[_0x3efc('0x30')](_0x3efc('0x46'),_0x4c64b4['message']);}};Acw[_0x3efc('0x15')][_0x3efc('0x11')]=function(_0x585bfa){try{if(this['channels'][_0x585bfa['transfereruniqueid']]){logger[_0x3efc('0x1f')](_0x3efc('0x47'),JSON[_0x3efc('0x34')](_0x585bfa[_0x3efc('0x48')]));this['startAcw'](_0x585bfa['transfereruniqueid']);}else if(this[_0x3efc('0x8')][_0x585bfa[_0x3efc('0x49')]]){logger['info'](_0x3efc('0x4a'),JSON[_0x3efc('0x34')](_0x585bfa[_0x3efc('0x49')]));this[_0x3efc('0x16')](_0x585bfa['transfererlinkedid']);}}catch(_0x1b3022){logger[_0x3efc('0x30')](_0x3efc('0x4b'),_0x1b3022['message']);}};Acw[_0x3efc('0x15')][_0x3efc('0x4c')]=function(_0x55ad04){try{if(this[_0x3efc('0x6')][_0x55ad04[_0x3efc('0x18')]]&&this[_0x3efc('0x6')][_0x55ad04[_0x3efc('0x18')]][_0x3efc('0x4d')]===_0x3efc('0x4e')){if(this[_0x3efc('0x7')][_0x55ad04[_0x3efc('0x17')]]){logger[_0x3efc('0x1f')](_0x3efc('0x4f'),_0x55ad04[_0x3efc('0x29')],_0x55ad04[_0x3efc('0x17')],_0x55ad04[_0x3efc('0x18')]);return RpcUser[_0x3efc('0x50')](this[_0x3efc('0x7')][_0x55ad04['interface']],_0x3efc('0x51'),_0x55ad04[_0x3efc('0x29')]);}}}catch(_0x12655e){logger[_0x3efc('0x30')](_0x3efc('0x52'),_0x12655e[_0x3efc('0x31')]);}};module[_0x3efc('0x53')]=Acw;
\ No newline at end of file
+var _0xb2a1=['diff','seconds','prototype','startAcw','interface','ACW','mandatoryDisposition','name','Action','QueuePause','then','agents','getAgent','voicePause','info','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','format','YYYY-MM-DD\x20HH:mm:ss','queue','updateAcw','lastPauseAt','update','uniqueid','catch','error','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[%s][UPDATE][ERRORS:%s]','[ACW][TIMERS]','stringify','message','[ACW][syncAgentConnect]\x20%s','isUndefined','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','moment','../ami','../../../config/logger','acw','voiceQueues','timers','channels','agentconnect','syncAgentConnect','bind','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds'];(function(_0xb5fc3e,_0x234703){var _0x2efc3c=function(_0x4e4e44){while(--_0x4e4e44){_0xb5fc3e['push'](_0xb5fc3e['shift']());}};_0x2efc3c(++_0x234703);}(_0xb2a1,0x1ed));var _0x1b2a=function(_0x212b78,_0x113070){_0x212b78=_0x212b78-0x0;var _0x129fe4=_0xb2a1[_0x212b78];return _0x129fe4;};'use strict';var util=require(_0x1b2a('0x0'));var _=require(_0x1b2a('0x1'));var moment=require(_0x1b2a('0x2'));var ami=require(_0x1b2a('0x3'));var logger=require(_0x1b2a('0x4'))(_0x1b2a('0x5'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x25abe9){this[_0x1b2a('0x6')]=_0x25abe9['voiceQueues'];this['agents']=_0x25abe9['agents'];this[_0x1b2a('0x7')]=_0x25abe9[_0x1b2a('0x7')];this[_0x1b2a('0x8')]={};ami['on'](_0x1b2a('0x9'),this[_0x1b2a('0xa')][_0x1b2a('0xb')](this));ami['on']('hanguprequest',this[_0x1b2a('0xc')][_0x1b2a('0xb')](this));ami['on'](_0x1b2a('0xd'),this[_0x1b2a('0xe')]['bind'](this));ami['on'](_0x1b2a('0xf'),this[_0x1b2a('0x10')]['bind'](this));ami['on'](_0x1b2a('0x11'),this[_0x1b2a('0x12')][_0x1b2a('0xb')](this));ami['on'](_0x1b2a('0x13'),this['syncBlindTransfer'][_0x1b2a('0xb')](this));ami['on'](_0x1b2a('0x14'),this[_0x1b2a('0x15')][_0x1b2a('0xb')](this));}function getDiff(_0x6a6285){var _0x1aad3d=moment()[_0x1b2a('0x16')](0x0);var _0x516094=moment(_0x6a6285)['milliseconds'](0x0);return _0x1aad3d[_0x1b2a('0x17')](_0x516094,_0x1b2a('0x18'));}Acw[_0x1b2a('0x19')][_0x1b2a('0x1a')]=function(_0x1219dc){try{var _0x5c7505=this;var _0x4376b5=this['channels'][_0x1219dc][_0x1b2a('0x1b')];var _0x5adfe1=this[_0x1b2a('0x8')][_0x1219dc]['queue'];var _0x17f4be=this[_0x1b2a('0x6')][_0x5adfe1];var _0x21a134=![];var _0x57eb51=_0x1b2a('0x1c');if(_0x17f4be[_0x1b2a('0x1d')]){if(_0x17f4be['mandatoryDispositionPause'][_0x1b2a('0x1e')]){_0x21a134=!![];_0x57eb51=_0x17f4be['mandatoryDispositionPause'][_0x1b2a('0x1e')];}}ami[_0x1b2a('0x1f')]({'action':_0x1b2a('0x20'),'interface':_0x4376b5,'paused':!![],'reason':_0x57eb51})[_0x1b2a('0x21')](function(_0xfb3762){if(_0x5c7505[_0x1b2a('0x22')][_0x4376b5]){return RpcUser[_0x1b2a('0x23')](_0x5c7505[_0x1b2a('0x22')][_0x4376b5]['id'])[_0x1b2a('0x21')](function(_0x3fc6ce){if(_0x3fc6ce&&!_0x3fc6ce[_0x1b2a('0x24')]){logger[_0x1b2a('0x25')]('[%s][START][AGENT:%s][QUEUE:%s]',_0x1219dc,_0x4376b5,_0x5adfe1);var _0xf0352b=_0x5c7505[_0x1b2a('0x8')][_0x1219dc][_0x1b2a('0x26')]&&_0x5c7505[_0x1b2a('0x8')][_0x1219dc][_0x1b2a('0x27')]?_0x5c7505[_0x1b2a('0x8')][_0x1219dc]['destlinkedid']:_0x1219dc;return RpcUser[_0x1b2a('0x28')](_0x5c7505[_0x1b2a('0x22')][_0x4376b5],_0x57eb51,_0xf0352b)[_0x1b2a('0x21')](function(_0x349a71){if(!_0x21a134){_0x5c7505[_0x1b2a('0x7')][_0x4376b5]={};logger['info'](_0x1b2a('0x29'),_0x1219dc,_0x5c7505[_0x1b2a('0x6')][_0x5adfe1][_0x1b2a('0x2a')],_0x4376b5,_0x5adfe1);_0x5c7505[_0x1b2a('0x7')][_0x4376b5][_0x1b2a('0x2b')]=setTimeout(_0x5c7505[_0x1b2a('0x2c')]['bind'](_0x5c7505,_0x4376b5),_0x5c7505[_0x1b2a('0x6')][_0x5adfe1]['acwTimeout']*0x3e8);_0x5c7505['timers'][_0x4376b5]['lastPauseAt']=moment()[_0x1b2a('0x2d')](_0x1b2a('0x2e'));_0x5c7505[_0x1b2a('0x7')][_0x4376b5]['uniqueid']=_0x1219dc;_0x5c7505[_0x1b2a('0x7')][_0x4376b5][_0x1b2a('0x2f')]=_0x5adfe1;_0x5c7505['timers'][_0x4376b5][_0x1b2a('0x30')]=function(){var _0x359612=getDiff(_0x5c7505[_0x1b2a('0x7')][_0x4376b5][_0x1b2a('0x31')]);clearTimeout(_0x5c7505[_0x1b2a('0x7')][_0x4376b5][_0x1b2a('0x2b')]);_0x5c7505['timers'][_0x4376b5][_0x1b2a('0x2b')]=![];RpcVoiceAgentReport[_0x1b2a('0x32')]({'acwtime':_0x359612},_0x5c7505['timers'][_0x4376b5][_0x1b2a('0x33')],_0x4376b5)['then'](function(_0x2c8b7e){logger[_0x1b2a('0x25')]('[%s][UPDATE][ACWTIME:%s]',_0x1219dc,_0x359612,_0x2c8b7e);})[_0x1b2a('0x34')](function(_0x3c23fc){logger[_0x1b2a('0x35')]('[%s][UPDATE][ERRORS:%s]',_0x1219dc,_0x3c23fc);});delete _0x5c7505['timers'][_0x4376b5];};}});}else{logger[_0x1b2a('0x25')](_0x1b2a('0x36'),_0x1219dc,_0x4376b5,_0x5adfe1);}});}})[_0x1b2a('0x34')](function(_0x276dd5){logger[_0x1b2a('0x35')](_0x1b2a('0x29'),_0x1219dc,_0x5c7505[_0x1b2a('0x6')][_0x5adfe1][_0x1b2a('0x2a')],_0x4376b5,_0x5adfe1);})[_0x1b2a('0x37')](function(){delete _0x5c7505[_0x1b2a('0x8')][_0x1219dc];});}catch(_0x52a72c){logger[_0x1b2a('0x35')](_0x1b2a('0x38'),_0x52a72c['message']);}};Acw[_0x1b2a('0x19')][_0x1b2a('0x2c')]=function(_0x101b3c){try{var _0x8501ca=this;if(_0x8501ca[_0x1b2a('0x7')][_0x101b3c]){_0x8501ca[_0x1b2a('0x7')][_0x101b3c][_0x1b2a('0x2b')]=![];var _0x17cf3b=_0x8501ca['timers'][_0x101b3c][_0x1b2a('0x33')];var _0x51156d=_0x8501ca[_0x1b2a('0x7')][_0x101b3c][_0x1b2a('0x2f')];var _0x14002b=_0x8501ca[_0x1b2a('0x6')][_0x51156d][_0x1b2a('0x2a')];logger[_0x1b2a('0x25')](_0x1b2a('0x39'),_0x17cf3b,_0x101b3c);RpcUser[_0x1b2a('0x3a')](this[_0x1b2a('0x22')][_0x101b3c]);RpcVoiceAgentReport[_0x1b2a('0x32')]({'acwtime':_0x14002b,'agentacw':!![]},_0x17cf3b,_0x101b3c)[_0x1b2a('0x21')](function(_0x521b6a){logger[_0x1b2a('0x25')]('[%s][UPDATE][ACWTIME:%s]',_0x17cf3b,_0x14002b,_0x521b6a);})[_0x1b2a('0x34')](function(_0x22c549){logger[_0x1b2a('0x35')](_0x1b2a('0x3b'),_0x17cf3b,_0x22c549);});}else{logger[_0x1b2a('0x35')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x101b3c);if(_0x8501ca[_0x1b2a('0x7')]){logger[_0x1b2a('0x25')](_0x1b2a('0x3c'),JSON[_0x1b2a('0x3d')](_0x8501ca[_0x1b2a('0x7')]));}}}catch(_0x4814c7){logger[_0x1b2a('0x35')]('[ACW][STOP]\x20%s',_0x4814c7[_0x1b2a('0x3e')]);}};Acw[_0x1b2a('0x19')]['syncAgentConnect']=function(_0x4c713a){try{if(this['voiceQueues'][_0x4c713a['queue']]&&(this[_0x1b2a('0x6')][_0x4c713a[_0x1b2a('0x2f')]][_0x1b2a('0x5')]||this[_0x1b2a('0x6')][_0x4c713a[_0x1b2a('0x2f')]][_0x1b2a('0x1d')])){if(this[_0x1b2a('0x22')][_0x4c713a[_0x1b2a('0x1b')]]){this[_0x1b2a('0x8')][_0x4c713a['uniqueid']]={'queue':_0x4c713a[_0x1b2a('0x2f')],'interface':_0x4c713a['interface'],'destlinkedid':_0x4c713a[_0x1b2a('0x27')]};}}}catch(_0x2afbfa){logger[_0x1b2a('0x35')](_0x1b2a('0x3f'),_0x2afbfa[_0x1b2a('0x3e')]);}};Acw[_0x1b2a('0x19')][_0x1b2a('0x15')]=function(_0x2c6671){try{if(this['voiceQueues'][_0x2c6671[_0x1b2a('0x2f')]]&&(this[_0x1b2a('0x6')][_0x2c6671[_0x1b2a('0x2f')]][_0x1b2a('0x5')]||this['voiceQueues'][_0x2c6671[_0x1b2a('0x2f')]]['mandatoryDisposition'])){if(this[_0x1b2a('0x22')][_0x2c6671[_0x1b2a('0x1b')]]){this['channels'][_0x2c6671['uniqueid']]={'queue':_0x2c6671['queue'],'interface':_0x2c6671['interface']};}}}catch(_0x2c102c){logger['error']('[ACW][syncAgentConnectPreview]\x20%s',_0x2c102c[_0x1b2a('0x3e')]);}};Acw[_0x1b2a('0x19')][_0x1b2a('0xc')]=function(_0x29788f){try{if(this[_0x1b2a('0x8')][_0x29788f[_0x1b2a('0x33')]]&&_[_0x1b2a('0x40')](this[_0x1b2a('0x8')][_0x29788f[_0x1b2a('0x33')]][_0x1b2a('0x26')])){logger[_0x1b2a('0x25')]('[%s][HANGUP:UNIQUEID]',_0x29788f['uniqueid']);this[_0x1b2a('0x1a')](_0x29788f[_0x1b2a('0x33')]);}else if(this[_0x1b2a('0x8')][_0x29788f[_0x1b2a('0x41')]]&&_[_0x1b2a('0x40')](this['channels'][_0x29788f[_0x1b2a('0x41')]][_0x1b2a('0x26')])){logger[_0x1b2a('0x25')](_0x1b2a('0x42'),_0x29788f[_0x1b2a('0x41')]);this['startAcw'](_0x29788f[_0x1b2a('0x41')]);}}catch(_0x7cb31a){logger['error'](_0x1b2a('0x43'),_0x7cb31a[_0x1b2a('0x3e')]);}};Acw[_0x1b2a('0x19')]['syncHangup']=function(_0x203262){try{if(this[_0x1b2a('0x8')][_0x203262['uniqueid']]&&this[_0x1b2a('0x8')][_0x203262[_0x1b2a('0x33')]]['attended']){logger[_0x1b2a('0x25')](_0x1b2a('0x44'),_0x203262[_0x1b2a('0x33')]);this['startAcw'](_0x203262[_0x1b2a('0x33')]);}else if(this[_0x1b2a('0x8')][_0x203262['linkedid']]&&this[_0x1b2a('0x8')][_0x203262['linkedid']][_0x1b2a('0x26')]){logger[_0x1b2a('0x25')](_0x1b2a('0x45'),_0x203262['linkedid']);this[_0x1b2a('0x1a')](_0x203262[_0x1b2a('0x41')]);}}catch(_0x510898){logger[_0x1b2a('0x35')](_0x1b2a('0x46'),_0x510898[_0x1b2a('0x3e')]);}};Acw[_0x1b2a('0x19')][_0x1b2a('0x12')]=function(_0x4a4205){try{if(!_[_0x1b2a('0x47')](this[_0x1b2a('0x8')][_0x4a4205[_0x1b2a('0x48')]])){this[_0x1b2a('0x1a')](_0x4a4205[_0x1b2a('0x48')]);if(this[_0x1b2a('0x8')][_0x4a4205[_0x1b2a('0x49')]]){this['channels'][_0x4a4205[_0x1b2a('0x49')]]['attended']=!![];this[_0x1b2a('0x8')][_0x4a4205[_0x1b2a('0x4a')]]=this[_0x1b2a('0x8')][_0x4a4205[_0x1b2a('0x49')]];delete this[_0x1b2a('0x8')][_0x4a4205[_0x1b2a('0x49')]];}}else if(!_[_0x1b2a('0x47')](this['channels'][_0x4a4205[_0x1b2a('0x4a')]])){this[_0x1b2a('0x1a')](_0x4a4205['transfertargetuniqueid']);if(this[_0x1b2a('0x8')][_0x4a4205[_0x1b2a('0x4b')]]){this[_0x1b2a('0x8')][_0x4a4205[_0x1b2a('0x4b')]][_0x1b2a('0x26')]=!![];this[_0x1b2a('0x8')][_0x4a4205['transfereeuniqueid']]=this[_0x1b2a('0x8')][_0x4a4205[_0x1b2a('0x4b')]];delete this[_0x1b2a('0x8')][_0x4a4205['origtransfereruniqueid']];}}}catch(_0x54bfec){logger['error'](_0x1b2a('0x4c'),_0x54bfec[_0x1b2a('0x3e')]);}};Acw[_0x1b2a('0x19')]['syncBlindTransfer']=function(_0x419885){try{if(this[_0x1b2a('0x8')][_0x419885[_0x1b2a('0x4d')]]){logger[_0x1b2a('0x25')](_0x1b2a('0x4e'),JSON[_0x1b2a('0x3d')](_0x419885[_0x1b2a('0x4d')]));this['startAcw'](_0x419885[_0x1b2a('0x4d')]);}else if(this['channels'][_0x419885[_0x1b2a('0x4f')]]){logger[_0x1b2a('0x25')]('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0x1b2a('0x3d')](_0x419885['transfererlinkedid']));this[_0x1b2a('0x1a')](_0x419885[_0x1b2a('0x4f')]);}}catch(_0x50d0d4){logger[_0x1b2a('0x35')]('[ACW][syncBlindTransfer]\x20%s',_0x50d0d4[_0x1b2a('0x3e')]);}};Acw[_0x1b2a('0x19')][_0x1b2a('0x10')]=function(_0xb224ec){try{if(this[_0x1b2a('0x6')][_0xb224ec[_0x1b2a('0x2f')]]&&this[_0x1b2a('0x6')][_0xb224ec[_0x1b2a('0x2f')]][_0x1b2a('0x50')]===_0x1b2a('0x51')){if(this[_0x1b2a('0x22')][_0xb224ec[_0x1b2a('0x1b')]]){logger['info'](_0x1b2a('0x52'),_0xb224ec[_0x1b2a('0x33')],_0xb224ec[_0x1b2a('0x1b')],_0xb224ec['queue']);return RpcUser[_0x1b2a('0x28')](this[_0x1b2a('0x22')][_0xb224ec[_0x1b2a('0x1b')]],_0x1b2a('0x53'),_0xb224ec[_0x1b2a('0x33')]);}}}catch(_0x3d6e10){logger[_0x1b2a('0x35')](_0x1b2a('0x54'),_0x3d6e10[_0x1b2a('0x3e')]);}};module[_0x1b2a('0x55')]=Acw;
\ No newline at end of file
index 89f690c..848d8c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d31=['coreshowchannels','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','info','resolve','then','actionSipPeerStatus','catch','log','close','exports','asterisk-manager','bluebird','moment','util','lodash','../../config/logger','ami','../../config/environment','asterisk','username','keepConnected','promisify','action','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','port','inspect','error','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','sipshowregistry','actionDeviceStateList','Action','sippeerstatus','actionQueueSummary','queuesummary','actionCoreShowChannels'];(function(_0x5bf36d,_0x194769){var _0xc78588=function(_0x86fb85){while(--_0x86fb85){_0x5bf36d['push'](_0x5bf36d['shift']());}};_0xc78588(++_0x194769);}(_0x8d31,0x16c));var _0x18d3=function(_0x5a5dff,_0x372f28){_0x5a5dff=_0x5a5dff-0x0;var _0x47cc08=_0x8d31[_0x5a5dff];return _0x47cc08;};'use strict';var Manager=require(_0x18d3('0x0'));var BPromise=require(_0x18d3('0x1'));var moment=require(_0x18d3('0x2'));var util=require(_0x18d3('0x3'));var _=require(_0x18d3('0x4'));var logger=require(_0x18d3('0x5'))(_0x18d3('0x6'));var config=require(_0x18d3('0x7'));var ami=new Manager(config[_0x18d3('0x8')]['port'],config[_0x18d3('0x8')]['ip'],config[_0x18d3('0x8')][_0x18d3('0x9')],config[_0x18d3('0x8')]['password'],!![]);ami[_0x18d3('0xa')]();ami['Action']=BPromise[_0x18d3('0xb')](ami[_0x18d3('0xc')]);function error(_0x2a57b8){logger['error'](util[_0x18d3('0xd')](_0x18d3('0xe'),config['asterisk']['username'],config[_0x18d3('0x8')]['ip'],config[_0x18d3('0x8')][_0x18d3('0xf')],util[_0x18d3('0x10')](_0x2a57b8,![],null)));}function close(){logger[_0x18d3('0x11')](util[_0x18d3('0xd')](_0x18d3('0x12'),config[_0x18d3('0x8')]['username'],config[_0x18d3('0x8')]['ip'],config[_0x18d3('0x8')][_0x18d3('0xf')]));}ami['actionSipShowRegistry']=function(){return function(){return ami['Action']({'action':_0x18d3('0x13')});};};ami[_0x18d3('0x14')]=function(){return function(){return ami[_0x18d3('0x15')]({'action':'devicestatelist'});};};ami['actionSipPeerStatus']=function(){return function(){return ami[_0x18d3('0x15')]({'action':_0x18d3('0x16')});};};ami[_0x18d3('0x17')]=function(){return function(){return ami[_0x18d3('0x15')]({'action':_0x18d3('0x18')});};};ami[_0x18d3('0x19')]=function(){return function(){return ami[_0x18d3('0x15')]({'action':_0x18d3('0x1a')});};};function connect(_0x557f00){logger['info'](util[_0x18d3('0xd')](_0x18d3('0x1b'),config[_0x18d3('0x8')][_0x18d3('0x9')],config[_0x18d3('0x8')]['ip'],config[_0x18d3('0x8')][_0x18d3('0xf')]));ami['once']('error',error);ami[_0x18d3('0x1c')]('close',close);}ami['on']('connect',connect);ami['on'](_0x18d3('0x1d'),function(_0x516b53){logger['info'](util['format'](_0x18d3('0x1e'),config[_0x18d3('0x8')][_0x18d3('0x9')],config[_0x18d3('0x8')]['ip'],config[_0x18d3('0x8')][_0x18d3('0xf')],util['inspect'](_0x516b53,![],null)));});ami['on']('fullybooted',function(_0x14edcd){logger[_0x18d3('0x1f')](util[_0x18d3('0xd')]('Fullybooted\x20\x22%s\x22\x20to\x20%s:%s',config[_0x18d3('0x8')][_0x18d3('0x9')],config[_0x18d3('0x8')]['ip'],config[_0x18d3('0x8')]['port']));return BPromise[_0x18d3('0x20')]()[_0x18d3('0x21')](ami['actionSipShowRegistry']())[_0x18d3('0x21')](ami['actionDeviceStateList']())[_0x18d3('0x21')](ami[_0x18d3('0x22')]())[_0x18d3('0x21')](ami[_0x18d3('0x17')]())[_0x18d3('0x21')](ami[_0x18d3('0x19')]())[_0x18d3('0x23')](function(_0x4ac1c5){console[_0x18d3('0x24')](_0x4ac1c5);});});ami[_0x18d3('0x1c')](_0x18d3('0x11'),error);ami[_0x18d3('0x1c')](_0x18d3('0x25'),close);module[_0x18d3('0x26')]=ami;
\ No newline at end of file
+var _0xbad5=['bluebird','moment','util','lodash','../../config/logger','../../config/environment','asterisk','port','password','keepConnected','Action','promisify','action','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','error','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','username','actionSipShowRegistry','devicestatelist','actionSipPeerStatus','sippeerstatus','queuesummary','actionCoreShowChannels','coreshowchannels','info','once','close','connect','shutdown','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','actionDeviceStateList','catch','log','asterisk-manager'];(function(_0x3a634c,_0x1967a6){var _0x44e4ef=function(_0x36ac8b){while(--_0x36ac8b){_0x3a634c['push'](_0x3a634c['shift']());}};_0x44e4ef(++_0x1967a6);}(_0xbad5,0x1ac));var _0x5bad=function(_0x456e3c,_0x310367){_0x456e3c=_0x456e3c-0x0;var _0x3589da=_0xbad5[_0x456e3c];return _0x3589da;};'use strict';var Manager=require(_0x5bad('0x0'));var BPromise=require(_0x5bad('0x1'));var moment=require(_0x5bad('0x2'));var util=require(_0x5bad('0x3'));var _=require(_0x5bad('0x4'));var logger=require(_0x5bad('0x5'))('ami');var config=require(_0x5bad('0x6'));var ami=new Manager(config[_0x5bad('0x7')][_0x5bad('0x8')],config['asterisk']['ip'],config[_0x5bad('0x7')]['username'],config['asterisk'][_0x5bad('0x9')],!![]);ami[_0x5bad('0xa')]();ami[_0x5bad('0xb')]=BPromise[_0x5bad('0xc')](ami[_0x5bad('0xd')]);function error(_0x963f96){logger['error'](util[_0x5bad('0xe')](_0x5bad('0xf'),config[_0x5bad('0x7')]['username'],config[_0x5bad('0x7')]['ip'],config[_0x5bad('0x7')]['port'],util[_0x5bad('0x10')](_0x963f96,![],null)));}function close(){logger[_0x5bad('0x11')](util['format'](_0x5bad('0x12'),config[_0x5bad('0x7')][_0x5bad('0x13')],config[_0x5bad('0x7')]['ip'],config[_0x5bad('0x7')][_0x5bad('0x8')]));}ami[_0x5bad('0x14')]=function(){return function(){return ami[_0x5bad('0xb')]({'action':'sipshowregistry'});};};ami['actionDeviceStateList']=function(){return function(){return ami[_0x5bad('0xb')]({'action':_0x5bad('0x15')});};};ami[_0x5bad('0x16')]=function(){return function(){return ami[_0x5bad('0xb')]({'action':_0x5bad('0x17')});};};ami['actionQueueSummary']=function(){return function(){return ami['Action']({'action':_0x5bad('0x18')});};};ami[_0x5bad('0x19')]=function(){return function(){return ami[_0x5bad('0xb')]({'action':_0x5bad('0x1a')});};};function connect(_0x30acde){logger[_0x5bad('0x1b')](util[_0x5bad('0xe')]('Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s',config['asterisk'][_0x5bad('0x13')],config[_0x5bad('0x7')]['ip'],config[_0x5bad('0x7')][_0x5bad('0x8')]));ami[_0x5bad('0x1c')](_0x5bad('0x11'),error);ami[_0x5bad('0x1c')](_0x5bad('0x1d'),close);}ami['on'](_0x5bad('0x1e'),connect);ami['on'](_0x5bad('0x1f'),function(_0x5de391){logger[_0x5bad('0x1b')](util[_0x5bad('0xe')]('Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s',config['asterisk']['username'],config[_0x5bad('0x7')]['ip'],config[_0x5bad('0x7')][_0x5bad('0x8')],util[_0x5bad('0x10')](_0x5de391,![],null)));});ami['on'](_0x5bad('0x20'),function(_0x17f63f){logger[_0x5bad('0x1b')](util['format'](_0x5bad('0x21'),config[_0x5bad('0x7')]['username'],config[_0x5bad('0x7')]['ip'],config[_0x5bad('0x7')][_0x5bad('0x8')]));return BPromise[_0x5bad('0x22')]()[_0x5bad('0x23')](ami['actionSipShowRegistry']())[_0x5bad('0x23')](ami[_0x5bad('0x24')]())[_0x5bad('0x23')](ami[_0x5bad('0x16')]())[_0x5bad('0x23')](ami['actionQueueSummary']())['then'](ami[_0x5bad('0x19')]())[_0x5bad('0x25')](function(_0x5d9268){console[_0x5bad('0x26')](_0x5d9268);});});ami[_0x5bad('0x1c')](_0x5bad('0x11'),error);ami['once'](_0x5bad('0x1d'),close);module['exports']=ami;
\ No newline at end of file
index c99d382..17b890b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ffd=['catch','exports','jayson/promise','bluebird','../../config/logger','client','http','Request','then','debug','rpc','memberReport','error','result'];(function(_0x31b928,_0xd0d102){var _0x2c0114=function(_0x34a444){while(--_0x34a444){_0x31b928['push'](_0x31b928['shift']());}};_0x2c0114(++_0xd0d102);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x3c61ce,_0x448d17){_0x3c61ce=_0x3c61ce-0x0;var _0x57885c=_0x9ffd[_0x3c61ce];return _0x57885c;};'use strict';var jayson=require(_0xd9ff('0x0'));var BPromise=require(_0xd9ff('0x1'));var logger=require(_0xd9ff('0x2'))('ami');var client=jayson[_0xd9ff('0x3')][_0xd9ff('0x4')]({'port':0x2329});client[_0xd9ff('0x5')]=function(_0x5493ae,_0x53e962){return new BPromise(function(_0x1c9460,_0x111697){return client['request'](_0x5493ae,_0x53e962)[_0xd9ff('0x6')](function(_0x2982c3){logger[_0xd9ff('0x7')](_0xd9ff('0x8'),_0xd9ff('0x9'),_0x5493ae,_0x53e962,_0x2982c3);if(_0x2982c3[_0xd9ff('0xa')]){logger[_0xd9ff('0xa')](_0xd9ff('0x8'),_0xd9ff('0x9'),_0x5493ae,_0x2982c3['error']['message'],_0x53e962);return _0x111697(_0x2982c3['error']['message']);}else{return _0x1c9460(_0x2982c3[_0xd9ff('0xb')]);}})[_0xd9ff('0xc')](function(_0x193537){logger[_0xd9ff('0xa')](_0xd9ff('0x8'),_0xd9ff('0x9'),_0x5493ae,_0x193537,_0x53e962);return _0x111697(_0x193537);});});};module[_0xd9ff('0xd')]=client;
\ No newline at end of file
+var _0xf4eb=['rpc','error','message','result','exports','jayson/promise','http','request','then','debug','memberReport'];(function(_0x1f8f97,_0x1c8de4){var _0x59871e=function(_0x4513ad){while(--_0x4513ad){_0x1f8f97['push'](_0x1f8f97['shift']());}};_0x59871e(++_0x1c8de4);}(_0xf4eb,0xec));var _0xbf4e=function(_0x558473,_0x4008f7){_0x558473=_0x558473-0x0;var _0x5d63ae=_0xf4eb[_0x558473];return _0x5d63ae;};'use strict';var jayson=require(_0xbf4e('0x0'));var BPromise=require('bluebird');var logger=require('../../config/logger')('ami');var client=jayson['client'][_0xbf4e('0x1')]({'port':0x2329});client['Request']=function(_0x4e7fa7,_0x2e3070){return new BPromise(function(_0x1c7606,_0x32d1d7){return client[_0xbf4e('0x2')](_0x4e7fa7,_0x2e3070)[_0xbf4e('0x3')](function(_0x2fcfed){logger[_0xbf4e('0x4')]('rpc',_0xbf4e('0x5'),_0x4e7fa7,_0x2e3070,_0x2fcfed);if(_0x2fcfed['error']){logger['error'](_0xbf4e('0x6'),_0xbf4e('0x5'),_0x4e7fa7,_0x2fcfed[_0xbf4e('0x7')][_0xbf4e('0x8')],_0x2e3070);return _0x32d1d7(_0x2fcfed[_0xbf4e('0x7')][_0xbf4e('0x8')]);}else{return _0x1c7606(_0x2fcfed[_0xbf4e('0x9')]);}})['catch'](function(_0x4d9a07){logger[_0xbf4e('0x7')]('rpc',_0xbf4e('0x5'),_0x4e7fa7,_0x4d9a07,_0x2e3070);return _0x32d1d7(_0x4d9a07);});});};module[_0xbf4e('0xa')]=client;
\ No newline at end of file
index bc2371c..e988641 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1a4=['dialCutDigit','substring','getQueue','exports','util','moment','isNil','string','voiceQueue','name','Contact','phone','lastName','number','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>'];(function(_0x5a3cf0,_0x160a68){var _0x5a64ee=function(_0x34cd1d){while(--_0x34cd1d){_0x5a3cf0['push'](_0x5a3cf0['shift']());}};_0x5a64ee(++_0x160a68);}(_0xa1a4,0xe0));var _0x4a1a=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xa1a4[_0x57b54c];return _0x59cc19;};'use strict';var util=require(_0x4a1a('0x0'));var _=require('lodash');var moment=require(_0x4a1a('0x1'));function checkNameSurname(_0x2272d1,_0x4bf966,_0x159143){var _0x27294b='';if(!_[_0x4a1a('0x2')](_0x4bf966)&&_0x4a1a('0x3')===typeof _0x4bf966){_0x27294b+=_0x4bf966;}if(!_['isNil'](_0x159143)&&'string'===typeof _0x159143){_0x27294b+='\x20'+_0x159143;}if(_0x27294b!==''){return _0x27294b;}return _0x2272d1;}function Action(_0x138833,_0x4e772b,_0x49df44){this[_0x4a1a('0x4')]=_0x138833;this['uniqueid']=_0x49df44||undefined;this[_0x4a1a('0x5')]=checkNameSurname(_0x4e772b[_0x4a1a('0x6')][_0x4a1a('0x7')],_0x4e772b[_0x4a1a('0x6')]['firstName'],_0x4e772b[_0x4a1a('0x6')][_0x4a1a('0x8')]);this[_0x4a1a('0x9')]=_0x4e772b[_0x4a1a('0x6')][_0x4a1a('0x7')];this[_0x4a1a('0xa')]=_0x138833[_0x4a1a('0x5')];this['active']=_0x4e772b[_0x4a1a('0xb')]||![];this[_0x4a1a('0xc')]=_0x138833[_0x4a1a('0xc')];this[_0x4a1a('0xd')]=_0x138833[_0x4a1a('0xd')]||0x3;this[_0x4a1a('0xe')]=_0x4e772b['scheduledat'];this[_0x4a1a('0xf')]=_0x4e772b[_0x4a1a('0xf')];this[_0x4a1a('0x10')]=_0x4e772b[_0x4a1a('0x10')];this['countnoanswerretry']=_0x4e772b[_0x4a1a('0x11')];this[_0x4a1a('0x12')]=_0x4e772b[_0x4a1a('0x12')];this[_0x4a1a('0x13')]=_0x4e772b[_0x4a1a('0x13')];this['countabandonedretry']=_0x4e772b[_0x4a1a('0x14')];this[_0x4a1a('0x15')]=_0x4e772b[_0x4a1a('0x15')];this[_0x4a1a('0x16')]=_0x4e772b[_0x4a1a('0x16')];this[_0x4a1a('0x17')]=_0x4e772b[_0x4a1a('0x17')];this[_0x4a1a('0x18')]=_0x4e772b[_0x4a1a('0x18')];this[_0x4a1a('0x19')]=_0x4e772b[_0x4a1a('0x19')];this['VoiceQueueId']=_0x4e772b[_0x4a1a('0x1a')];this[_0x4a1a('0x1b')]=_0x4e772b[_0x4a1a('0x1b')];this[_0x4a1a('0x1c')]=_0x4e772b['id'];this['ContactFirstName']=_0x4e772b[_0x4a1a('0x6')]['firstName']||'';this['starttime']=moment()[_0x4a1a('0x1d')](_0x4a1a('0x1e'));this[_0x4a1a('0x1f')]=_0x4e772b['callback'];this[_0x4a1a('0x20')]=_0x4e772b['callbackuniqueid'];this[_0x4a1a('0x21')]=_0x4e772b[_0x4a1a('0x21')];this[_0x4a1a('0x22')]=_0x4e772b[_0x4a1a('0x22')];this[_0x4a1a('0x23')]='';this[_0x4a1a('0x24')]='';}Action[_0x4a1a('0x25')][_0x4a1a('0x26')]=function(){return util[_0x4a1a('0x1d')](_0x4a1a('0x27'),this[_0x4a1a('0x5')],this[_0x4a1a('0x4')][_0x4a1a('0x28')]>0x0?this[_0x4a1a('0x9')][_0x4a1a('0x29')](this[_0x4a1a('0x4')][_0x4a1a('0x28')]):this[_0x4a1a('0x9')]);};Action[_0x4a1a('0x25')][_0x4a1a('0x2a')]=function(){return this['queue'];};module[_0x4a1a('0x2b')]=Action;
\ No newline at end of file
+var _0xe53a=['ContactFirstName','starttime','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','format','\x22%s\x22\x20<%s>','dialCutDigit','substring','getQueue','util','lodash','moment','string','isNil','voiceQueue','name','phone','Contact','firstName','lastName','number','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper'];(function(_0x5d7edf,_0x45f343){var _0xc2e4ef=function(_0x1144f5){while(--_0x1144f5){_0x5d7edf['push'](_0x5d7edf['shift']());}};_0xc2e4ef(++_0x45f343);}(_0xe53a,0x1ad));var _0xae53=function(_0x219bf3,_0x211ef0){_0x219bf3=_0x219bf3-0x0;var _0x39171b=_0xe53a[_0x219bf3];return _0x39171b;};'use strict';var util=require(_0xae53('0x0'));var _=require(_0xae53('0x1'));var moment=require(_0xae53('0x2'));function checkNameSurname(_0x110fd9,_0x547c26,_0x387e30){var _0x519356='';if(!_['isNil'](_0x547c26)&&_0xae53('0x3')===typeof _0x547c26){_0x519356+=_0x547c26;}if(!_[_0xae53('0x4')](_0x387e30)&&_0xae53('0x3')===typeof _0x387e30){_0x519356+='\x20'+_0x387e30;}if(_0x519356!==''){return _0x519356;}return _0x110fd9;}function Action(_0x58b38b,_0xe155df,_0x25bf9b){this[_0xae53('0x5')]=_0x58b38b;this['uniqueid']=_0x25bf9b||undefined;this[_0xae53('0x6')]=checkNameSurname(_0xe155df['Contact'][_0xae53('0x7')],_0xe155df[_0xae53('0x8')][_0xae53('0x9')],_0xe155df[_0xae53('0x8')][_0xae53('0xa')]);this[_0xae53('0xb')]=_0xe155df['Contact'][_0xae53('0x7')];this[_0xae53('0xc')]=_0x58b38b[_0xae53('0x6')];this[_0xae53('0xd')]=_0xe155df['active']||![];this[_0xae53('0xe')]=_0x58b38b[_0xae53('0xe')];this[_0xae53('0xf')]=_0x58b38b[_0xae53('0xf')]||0x3;this[_0xae53('0x10')]=_0xe155df[_0xae53('0x10')];this[_0xae53('0x11')]=_0xe155df['countbusyretry'];this['countcongestionretry']=_0xe155df[_0xae53('0x12')];this['countnoanswerretry']=_0xe155df[_0xae53('0x13')];this[_0xae53('0x14')]=_0xe155df[_0xae53('0x14')];this[_0xae53('0x15')]=_0xe155df[_0xae53('0x15')];this[_0xae53('0x16')]=_0xe155df['countabandonedretry'];this['countmachineretry']=_0xe155df[_0xae53('0x17')];this[_0xae53('0x18')]=_0xe155df[_0xae53('0x18')];this[_0xae53('0x19')]=_0xe155df['ContactId'];this[_0xae53('0x1a')]=_0xe155df[_0xae53('0x1a')];this[_0xae53('0x1b')]=_0xe155df[_0xae53('0x1b')];this[_0xae53('0x1c')]=_0xe155df[_0xae53('0x1c')];this[_0xae53('0x1d')]=_0xe155df[_0xae53('0x1d')];this[_0xae53('0x1e')]=_0xe155df['id'];this[_0xae53('0x1f')]=_0xe155df[_0xae53('0x8')]['firstName']||'';this[_0xae53('0x20')]=moment()['format'](_0xae53('0x21'));this[_0xae53('0x22')]=_0xe155df[_0xae53('0x22')];this[_0xae53('0x23')]=_0xe155df[_0xae53('0x23')];this[_0xae53('0x24')]=_0xe155df[_0xae53('0x24')];this[_0xae53('0x25')]=_0xe155df['recallme'];this[_0xae53('0x26')]='';this[_0xae53('0x27')]='';}Action[_0xae53('0x28')]['getCaller']=function(){return util[_0xae53('0x29')](_0xae53('0x2a'),this['name'],this['voiceQueue'][_0xae53('0x2b')]>0x0?this[_0xae53('0xb')][_0xae53('0x2c')](this['voiceQueue'][_0xae53('0x2b')]):this[_0xae53('0xb')]);};Action[_0xae53('0x28')][_0xae53('0x2d')]=function(){return this[_0xae53('0xc')];};module['exports']=Action;
\ No newline at end of file
index 5738149..fb96e14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3693=['seconds','statedesc','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','answertime','endtime','format','ringtime','holdtime','talktime','membername','reason','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','moment','milliseconds','diff'];(function(_0x9808f,_0x573052){var _0x540b56=function(_0x128821){while(--_0x128821){_0x9808f['push'](_0x9808f['shift']());}};_0x540b56(++_0x573052);}(_0x3693,0x1a3));var _0x3369=function(_0x4d3ccc,_0xfd2220){_0x4d3ccc=_0x4d3ccc-0x0;var _0x17b850=_0x3693[_0x4d3ccc];return _0x17b850;};'use strict';var util=require('util');var _=require(_0x3369('0x0'));var moment=require(_0x3369('0x1'));function getSeconds(_0x43c6a8,_0x7ddac4){var _0x1fa0e4=moment(_0x43c6a8)[_0x3369('0x2')](0x0);var _0x10f0ea=moment(_0x7ddac4)[_0x3369('0x2')](0x0);return _0x1fa0e4[_0x3369('0x3')](_0x10f0ea,_0x3369('0x4'));}function AgentComplete(_0x5a293f,_0x4877b6){this['state']=0x4;this[_0x3369('0x5')]=_0x3369('0x6');this[_0x3369('0x7')]=_0x5a293f['scheduledat'];this[_0x3369('0x8')]=_0x5a293f[_0x3369('0x8')];this[_0x3369('0x9')]=_0x5a293f[_0x3369('0x8')]===_0x3369('0xa')?_0x3369('0xb'):_0x5a293f[_0x3369('0x8')];this[_0x3369('0xc')]=_0x5a293f['countbusyretry'];this[_0x3369('0xd')]=_0x5a293f[_0x3369('0xd')];this[_0x3369('0xe')]=_0x5a293f[_0x3369('0xe')];this[_0x3369('0xf')]=_0x5a293f[_0x3369('0xc')]+_0x5a293f[_0x3369('0xd')]+_0x5a293f[_0x3369('0xe')]+_0x5a293f['countnosuchnumberretry']+_0x5a293f[_0x3369('0x10')]+_0x5a293f[_0x3369('0x11')]+_0x5a293f[_0x3369('0x12')]+_0x5a293f[_0x3369('0x13')];this[_0x3369('0x14')]=_0x5a293f[_0x3369('0x14')];this['countdropretry']=_0x5a293f[_0x3369('0x10')];this[_0x3369('0x11')]=_0x5a293f[_0x3369('0x11')];this[_0x3369('0x12')]=_0x5a293f[_0x3369('0x12')];this[_0x3369('0x13')]=_0x5a293f['countagentrejectretry'];this[_0x3369('0x15')]=_0x4877b6[_0x3369('0x15')];this[_0x3369('0x16')]=_0x5a293f[_0x3369('0x17')];this[_0x3369('0x18')]=_0x5a293f[_0x3369('0x19')];this[_0x3369('0x1a')]=_0x5a293f[_0x3369('0x1a')];this[_0x3369('0x1b')]=_0x5a293f[_0x3369('0x1b')];this[_0x3369('0x1c')]=_0x5a293f['answertime'];this[_0x3369('0x1d')]=moment()[_0x3369('0x1e')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x3369('0x1f')]=getSeconds(_0x5a293f[_0x3369('0x1b')],_0x5a293f[_0x3369('0x1a')]);this[_0x3369('0x20')]=getSeconds(_0x5a293f[_0x3369('0x1c')],_0x5a293f[_0x3369('0x1b')]);this[_0x3369('0x21')]=getSeconds(this[_0x3369('0x1d')],_0x5a293f[_0x3369('0x1c')]);this['queue']=_0x4877b6['queue'];this[_0x3369('0x22')]=_0x4877b6['membername'];this['reason']=_0x4877b6[_0x3369('0x23')];this['callback']=_0x5a293f['callback'];this[_0x3369('0x24')]=_0x5a293f[_0x3369('0x24')];this[_0x3369('0x25')]=_0x5a293f[_0x3369('0x25')];this[_0x3369('0x26')]=_0x5a293f['recallme'];this[_0x3369('0x27')]=_0x5a293f[_0x3369('0x27')];this[_0x3369('0x28')]=_0x5a293f[_0x3369('0x28')];this['UserId']=_0x5a293f[_0x3369('0x29')];this['VoiceQueueId']=_0x5a293f[_0x3369('0x2a')];this['CampaignId']=_0x5a293f[_0x3369('0x2b')];this[_0x3369('0x2c')]=_0x5a293f[_0x3369('0x2c')]||'';this[_0x3369('0x2d')]=_0x5a293f[_0x3369('0x2d')]||'';}module[_0x3369('0x2e')]=AgentComplete;
\ No newline at end of file
+var _0xb70a=['util','lodash','moment','milliseconds','diff','seconds','statedesc','Answer','scheduledat','type','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','uniqueid','name','calleridnum','number','responsetime','answertime','endtime','YYYY-MM-DD\x20HH:mm:ss','ringtime','talktime','queue','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports'];(function(_0x76ced3,_0x8abc01){var _0x4fea70=function(_0x519c04){while(--_0x519c04){_0x76ced3['push'](_0x76ced3['shift']());}};_0x4fea70(++_0x8abc01);}(_0xb70a,0x160));var _0xab70=function(_0x3c3c3b,_0x52513c){_0x3c3c3b=_0x3c3c3b-0x0;var _0x2f70e3=_0xb70a[_0x3c3c3b];return _0x2f70e3;};'use strict';var util=require(_0xab70('0x0'));var _=require(_0xab70('0x1'));var moment=require(_0xab70('0x2'));function getSeconds(_0x14feaf,_0x434d06){var _0x39f062=moment(_0x14feaf)[_0xab70('0x3')](0x0);var _0x50bcb9=moment(_0x434d06)[_0xab70('0x3')](0x0);return _0x39f062[_0xab70('0x4')](_0x50bcb9,_0xab70('0x5'));}function AgentComplete(_0x48a039,_0xa771c6){this['state']=0x4;this[_0xab70('0x6')]=_0xab70('0x7');this[_0xab70('0x8')]=_0x48a039[_0xab70('0x8')];this['type']=_0x48a039[_0xab70('0x9')];this['campaigntype']=_0x48a039[_0xab70('0x9')]===_0xab70('0xa')?'queue':_0x48a039[_0xab70('0x9')];this[_0xab70('0xb')]=_0x48a039[_0xab70('0xb')];this['countcongestionretry']=_0x48a039[_0xab70('0xc')];this[_0xab70('0xd')]=_0x48a039['countnoanswerretry'];this['countglobal']=_0x48a039[_0xab70('0xb')]+_0x48a039['countcongestionretry']+_0x48a039['countnoanswerretry']+_0x48a039[_0xab70('0xe')]+_0x48a039['countdropretry']+_0x48a039[_0xab70('0xf')]+_0x48a039[_0xab70('0x10')]+_0x48a039[_0xab70('0x11')];this['countnosuchnumberretry']=_0x48a039[_0xab70('0xe')];this[_0xab70('0x12')]=_0x48a039['countdropretry'];this[_0xab70('0xf')]=_0x48a039[_0xab70('0xf')];this[_0xab70('0x10')]=_0x48a039[_0xab70('0x10')];this[_0xab70('0x11')]=_0x48a039[_0xab70('0x11')];this[_0xab70('0x13')]=_0xa771c6['uniqueid'];this['calleridname']=_0x48a039[_0xab70('0x14')];this[_0xab70('0x15')]=_0x48a039[_0xab70('0x16')];this['starttime']=_0x48a039['starttime'];this[_0xab70('0x17')]=_0x48a039[_0xab70('0x17')];this[_0xab70('0x18')]=_0x48a039[_0xab70('0x18')];this[_0xab70('0x19')]=moment()['format'](_0xab70('0x1a'));this[_0xab70('0x1b')]=getSeconds(_0x48a039[_0xab70('0x17')],_0x48a039['starttime']);this['holdtime']=getSeconds(_0x48a039[_0xab70('0x18')],_0x48a039[_0xab70('0x17')]);this[_0xab70('0x1c')]=getSeconds(this[_0xab70('0x19')],_0x48a039[_0xab70('0x18')]);this[_0xab70('0x1d')]=_0xa771c6[_0xab70('0x1d')];this[_0xab70('0x1e')]=_0xa771c6[_0xab70('0x1e')];this[_0xab70('0x1f')]=_0xa771c6[_0xab70('0x1f')];this[_0xab70('0x20')]=_0x48a039['callback'];this[_0xab70('0x21')]=_0x48a039[_0xab70('0x21')];this[_0xab70('0x22')]=_0x48a039[_0xab70('0x22')];this[_0xab70('0x23')]=_0x48a039[_0xab70('0x23')];this[_0xab70('0x24')]=_0x48a039[_0xab70('0x24')];this['ListId']=_0x48a039[_0xab70('0x25')];this[_0xab70('0x26')]=_0x48a039[_0xab70('0x26')];this[_0xab70('0x27')]=_0x48a039[_0xab70('0x27')];this['CampaignId']=_0x48a039[_0xab70('0x28')];this[_0xab70('0x29')]=_0x48a039['originatecalleridnum']||'';this[_0xab70('0x2a')]=_0x48a039[_0xab70('0x2a')]||'';}module[_0xab70('0x2b')]=AgentComplete;
\ No newline at end of file
index b425e7a..997d860 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc21e=['originatecalleridname','exports','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','countmachineretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','talktime','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum'];(function(_0x19e221,_0x9efd0f){var _0x5c4f08=function(_0xb88d34){while(--_0xb88d34){_0x19e221['push'](_0x19e221['shift']());}};_0x5c4f08(++_0x9efd0f);}(_0xc21e,0x1ca));var _0xec21=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xc21e[_0x21a9d9];return _0x46adce;};'use strict';var util=require('util');var _=require(_0xec21('0x0'));var moment=require(_0xec21('0x1'));function getSeconds(_0x1aa991,_0x2ad2c0){var _0xc39dad=moment(_0x1aa991)[_0xec21('0x2')](0x0);var _0x5bdeed=moment(_0x2ad2c0)[_0xec21('0x2')](0x0);return _0xc39dad[_0xec21('0x3')](_0x5bdeed,_0xec21('0x4'));}function Final(_0xd94b5d){this[_0xec21('0x5')]=_0xd94b5d[_0xec21('0x5')];this[_0xec21('0x6')]=_0xd94b5d[_0xec21('0x6')];this['type']=_0xd94b5d[_0xec21('0x7')];this[_0xec21('0x8')]=_0xd94b5d[_0xec21('0x7')]===_0xec21('0x9')?_0xec21('0xa'):_0xd94b5d['type'];this[_0xec21('0xb')]=_0xd94b5d[_0xec21('0xb')];this[_0xec21('0xc')]=_0xd94b5d['countcongestionretry'];this['countnoanswerretry']=_0xd94b5d[_0xec21('0xd')];this[_0xec21('0xe')]=_0xd94b5d['countbusyretry']+_0xd94b5d[_0xec21('0xc')]+_0xd94b5d[_0xec21('0xd')]+_0xd94b5d[_0xec21('0xf')]+_0xd94b5d[_0xec21('0x10')]+_0xd94b5d[_0xec21('0x11')]+_0xd94b5d['countmachineretry']+_0xd94b5d[_0xec21('0x12')];this['countnosuchnumberretry']=_0xd94b5d[_0xec21('0xf')];this[_0xec21('0x10')]=_0xd94b5d[_0xec21('0x10')];this['countabandonedretry']=_0xd94b5d[_0xec21('0x11')];this[_0xec21('0x13')]=_0xd94b5d[_0xec21('0x13')];this[_0xec21('0x12')]=_0xd94b5d[_0xec21('0x12')];this[_0xec21('0xa')]=_0xd94b5d[_0xec21('0xa')];this[_0xec21('0x14')]=_0xd94b5d['calleridname'];this[_0xec21('0x15')]=_0xd94b5d[_0xec21('0x15')];this[_0xec21('0x16')]=_0xd94b5d[_0xec21('0x16')];this[_0xec21('0x17')]=_0xd94b5d[_0xec21('0x17')];this[_0xec21('0x18')]=_0xd94b5d[_0xec21('0x17')];this[_0xec21('0x19')]=_0xd94b5d[_0xec21('0x19')]||0x0;this['holdtime']=_0xd94b5d['holdtime']||0x0;this[_0xec21('0x1a')]=_0xd94b5d[_0xec21('0x1a')]||0x0;this['callback']=_0xd94b5d['callback'];this[_0xec21('0x1b')]=_0xd94b5d[_0xec21('0x1b')];this[_0xec21('0x1c')]=_0xd94b5d['callbackat'];this[_0xec21('0x1d')]=_0xd94b5d[_0xec21('0x1d')];this[_0xec21('0x1e')]=_0xd94b5d['ContactId'];this[_0xec21('0x1f')]=_0xd94b5d[_0xec21('0x1f')];this[_0xec21('0x20')]=_0xd94b5d[_0xec21('0x20')];this[_0xec21('0x21')]=_0xd94b5d[_0xec21('0x21')];this['CampaignId']=_0xd94b5d[_0xec21('0x22')];this[_0xec21('0x23')]=_0xd94b5d['originatecalleridnum']||'';this[_0xec21('0x24')]=_0xd94b5d['originatecalleridname']||'';}module[_0xec21('0x25')]=Final;
\ No newline at end of file
+var _0xd6d6=['util','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','queue','calleridname','starttime','responsetime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports'];(function(_0x6b4f52,_0x4a17d1){var _0xa387e5=function(_0x2643b8){while(--_0x2643b8){_0x6b4f52['push'](_0x6b4f52['shift']());}};_0xa387e5(++_0x4a17d1);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x50391f,_0x29212e){_0x50391f=_0x50391f-0x0;var _0x165c27=_0xd6d6[_0x50391f];return _0x165c27;};'use strict';var util=require(_0x6d6d('0x0'));var _=require(_0x6d6d('0x1'));var moment=require(_0x6d6d('0x2'));function getSeconds(_0x33226e,_0x536523){var _0x2e1aed=moment(_0x33226e)[_0x6d6d('0x3')](0x0);var _0x1b8610=moment(_0x536523)[_0x6d6d('0x3')](0x0);return _0x2e1aed[_0x6d6d('0x4')](_0x1b8610,_0x6d6d('0x5'));}function Final(_0x35a813){this['uniqueid']=_0x35a813[_0x6d6d('0x6')];this[_0x6d6d('0x7')]=_0x35a813[_0x6d6d('0x7')];this[_0x6d6d('0x8')]=_0x35a813[_0x6d6d('0x8')];this[_0x6d6d('0x9')]=_0x35a813[_0x6d6d('0x8')]==='outbound'?'queue':_0x35a813[_0x6d6d('0x8')];this[_0x6d6d('0xa')]=_0x35a813[_0x6d6d('0xa')];this[_0x6d6d('0xb')]=_0x35a813[_0x6d6d('0xb')];this['countnoanswerretry']=_0x35a813[_0x6d6d('0xc')];this[_0x6d6d('0xd')]=_0x35a813['countbusyretry']+_0x35a813['countcongestionretry']+_0x35a813[_0x6d6d('0xc')]+_0x35a813[_0x6d6d('0xe')]+_0x35a813[_0x6d6d('0xf')]+_0x35a813[_0x6d6d('0x10')]+_0x35a813[_0x6d6d('0x11')]+_0x35a813[_0x6d6d('0x12')];this[_0x6d6d('0xe')]=_0x35a813[_0x6d6d('0xe')];this['countdropretry']=_0x35a813[_0x6d6d('0xf')];this[_0x6d6d('0x10')]=_0x35a813[_0x6d6d('0x10')];this[_0x6d6d('0x11')]=_0x35a813[_0x6d6d('0x11')];this['countagentrejectretry']=_0x35a813[_0x6d6d('0x12')];this['queue']=_0x35a813[_0x6d6d('0x13')];this[_0x6d6d('0x14')]=_0x35a813[_0x6d6d('0x14')];this['calleridnum']=_0x35a813['calleridnum'];this[_0x6d6d('0x15')]=_0x35a813[_0x6d6d('0x15')];this[_0x6d6d('0x16')]=_0x35a813[_0x6d6d('0x16')];this['endtime']=_0x35a813['responsetime'];this[_0x6d6d('0x17')]=_0x35a813['ringtime']||0x0;this[_0x6d6d('0x18')]=_0x35a813[_0x6d6d('0x18')]||0x0;this[_0x6d6d('0x19')]=_0x35a813[_0x6d6d('0x19')]||0x0;this[_0x6d6d('0x1a')]=_0x35a813[_0x6d6d('0x1a')];this[_0x6d6d('0x1b')]=_0x35a813[_0x6d6d('0x1b')];this[_0x6d6d('0x1c')]=_0x35a813[_0x6d6d('0x1c')];this[_0x6d6d('0x1d')]=_0x35a813[_0x6d6d('0x1d')];this[_0x6d6d('0x1e')]=_0x35a813[_0x6d6d('0x1e')];this[_0x6d6d('0x1f')]=_0x35a813[_0x6d6d('0x1f')];this[_0x6d6d('0x20')]=_0x35a813['UserId'];this[_0x6d6d('0x21')]=_0x35a813[_0x6d6d('0x21')];this[_0x6d6d('0x22')]=_0x35a813[_0x6d6d('0x22')];this[_0x6d6d('0x23')]=_0x35a813[_0x6d6d('0x23')]||'';this['originatecalleridname']=_0x35a813[_0x6d6d('0x24')]||'';}module[_0x6d6d('0x25')]=Final;
\ No newline at end of file
index 6740d58..da385e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b79=['callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','lodash','moment','milliseconds','diff','state','statedesc','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','name','calleridnum','number','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','membername','IVR','reason','cause-txt','callback','callbackuniqueid'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x2b79,0x1ca));var _0x92b7=function(_0x1d4449,_0x495153){_0x1d4449=_0x1d4449-0x0;var _0x4dcde3=_0x2b79[_0x1d4449];return _0x4dcde3;};'use strict';var util=require('util');var _=require(_0x92b7('0x0'));var moment=require(_0x92b7('0x1'));function getSeconds(_0x121968,_0x2fcdac){var _0x192466=moment(_0x121968)['milliseconds'](0x0);var _0x2c669e=moment(_0x2fcdac)[_0x92b7('0x2')](0x0);return _0x192466[_0x92b7('0x3')](_0x2c669e,'seconds');}function Hangup(_0x28d934,_0x37c066){this[_0x92b7('0x4')]=0x4;this[_0x92b7('0x5')]=_0x92b7('0x6');this[_0x92b7('0x7')]=_0x28d934[_0x92b7('0x7')];this[_0x92b7('0x8')]=_0x28d934[_0x92b7('0x8')];this[_0x92b7('0x9')]=_0x28d934[_0x92b7('0x8')]===_0x92b7('0xa')?_0x92b7('0xb'):_0x28d934[_0x92b7('0x8')];this['countbusyretry']=_0x28d934[_0x92b7('0xc')];this[_0x92b7('0xd')]=_0x28d934[_0x92b7('0xd')];this['countnoanswerretry']=_0x28d934[_0x92b7('0xe')];this[_0x92b7('0xf')]=_0x28d934[_0x92b7('0xc')]+_0x28d934[_0x92b7('0xd')]+_0x28d934[_0x92b7('0xe')]+_0x28d934[_0x92b7('0x10')]+_0x28d934[_0x92b7('0x11')]+_0x28d934[_0x92b7('0x12')]+_0x28d934[_0x92b7('0x13')]+_0x28d934[_0x92b7('0x14')];this[_0x92b7('0x10')]=_0x28d934[_0x92b7('0x10')];this['countdropretry']=_0x28d934[_0x92b7('0x11')];this[_0x92b7('0x12')]=_0x28d934[_0x92b7('0x12')];this[_0x92b7('0x13')]=_0x28d934[_0x92b7('0x13')];this[_0x92b7('0x14')]=_0x28d934[_0x92b7('0x14')];this[_0x92b7('0x15')]=_0x37c066[_0x92b7('0x15')];this['calleridname']=_0x28d934[_0x92b7('0x16')];this[_0x92b7('0x17')]=_0x28d934[_0x92b7('0x18')];this[_0x92b7('0x19')]=_0x28d934[_0x92b7('0x19')];this[_0x92b7('0x1a')]=_0x28d934[_0x92b7('0x1a')];this[_0x92b7('0x1b')]=moment()[_0x92b7('0x1c')](_0x92b7('0x1d'));this[_0x92b7('0x1e')]=getSeconds(_0x28d934[_0x92b7('0x1a')],_0x28d934['starttime']);this['holdtime']=0x0;this['talktime']=getSeconds(this[_0x92b7('0x1b')],_0x28d934[_0x92b7('0x1a')]);this[_0x92b7('0xb')]=_0x28d934[_0x92b7('0xb')];this[_0x92b7('0x1f')]=_0x92b7('0x20');this[_0x92b7('0x21')]=_0x37c066[_0x92b7('0x22')];this['callback']=_0x28d934[_0x92b7('0x23')];this['callbackuniqueid']=_0x28d934[_0x92b7('0x24')];this[_0x92b7('0x25')]=_0x28d934[_0x92b7('0x25')];this[_0x92b7('0x26')]=_0x28d934[_0x92b7('0x26')];this[_0x92b7('0x27')]=_0x28d934[_0x92b7('0x27')];this[_0x92b7('0x28')]=_0x28d934['ListId'];this[_0x92b7('0x29')]=_0x28d934[_0x92b7('0x29')];this[_0x92b7('0x2a')]=_0x28d934[_0x92b7('0x2a')];this[_0x92b7('0x2b')]=_0x28d934[_0x92b7('0x2b')];}module[_0x92b7('0x2c')]=Hangup;
\ No newline at end of file
+var _0x9a2a=['countnosuchnumberretry','countmachineretry','uniqueid','calleridname','calleridnum','starttime','endtime','ringtime','responsetime','holdtime','talktime','membername','IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','util','lodash','moment','milliseconds','diff','state','Answer','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countabandonedretry','countagentrejectretry'];(function(_0x3fd540,_0x384de7){var _0xe53b89=function(_0x2dc21c){while(--_0x2dc21c){_0x3fd540['push'](_0x3fd540['shift']());}};_0xe53b89(++_0x384de7);}(_0x9a2a,0xf0));var _0xa9a2=function(_0xecc93b,_0xc0dab9){_0xecc93b=_0xecc93b-0x0;var _0x5b1795=_0x9a2a[_0xecc93b];return _0x5b1795;};'use strict';var util=require(_0xa9a2('0x0'));var _=require(_0xa9a2('0x1'));var moment=require(_0xa9a2('0x2'));function getSeconds(_0x1b6e30,_0x2ae40b){var _0x4b0987=moment(_0x1b6e30)['milliseconds'](0x0);var _0x9a5335=moment(_0x2ae40b)[_0xa9a2('0x3')](0x0);return _0x4b0987[_0xa9a2('0x4')](_0x9a5335,'seconds');}function Hangup(_0x2223b5,_0x694249){this[_0xa9a2('0x5')]=0x4;this['statedesc']=_0xa9a2('0x6');this[_0xa9a2('0x7')]=_0x2223b5[_0xa9a2('0x7')];this[_0xa9a2('0x8')]=_0x2223b5['type'];this[_0xa9a2('0x9')]=_0x2223b5[_0xa9a2('0x8')]===_0xa9a2('0xa')?'queue':_0x2223b5['type'];this[_0xa9a2('0xb')]=_0x2223b5[_0xa9a2('0xb')];this[_0xa9a2('0xc')]=_0x2223b5[_0xa9a2('0xc')];this[_0xa9a2('0xd')]=_0x2223b5[_0xa9a2('0xd')];this[_0xa9a2('0xe')]=_0x2223b5[_0xa9a2('0xb')]+_0x2223b5[_0xa9a2('0xc')]+_0x2223b5['countnoanswerretry']+_0x2223b5['countnosuchnumberretry']+_0x2223b5[_0xa9a2('0xf')]+_0x2223b5[_0xa9a2('0x10')]+_0x2223b5['countmachineretry']+_0x2223b5[_0xa9a2('0x11')];this[_0xa9a2('0x12')]=_0x2223b5['countnosuchnumberretry'];this[_0xa9a2('0xf')]=_0x2223b5[_0xa9a2('0xf')];this[_0xa9a2('0x10')]=_0x2223b5['countabandonedretry'];this[_0xa9a2('0x13')]=_0x2223b5[_0xa9a2('0x13')];this['countagentrejectretry']=_0x2223b5[_0xa9a2('0x11')];this[_0xa9a2('0x14')]=_0x694249[_0xa9a2('0x14')];this[_0xa9a2('0x15')]=_0x2223b5['name'];this[_0xa9a2('0x16')]=_0x2223b5['number'];this[_0xa9a2('0x17')]=_0x2223b5['starttime'];this['responsetime']=_0x2223b5['responsetime'];this[_0xa9a2('0x18')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0xa9a2('0x19')]=getSeconds(_0x2223b5[_0xa9a2('0x1a')],_0x2223b5[_0xa9a2('0x17')]);this[_0xa9a2('0x1b')]=0x0;this[_0xa9a2('0x1c')]=getSeconds(this['endtime'],_0x2223b5[_0xa9a2('0x1a')]);this['queue']=_0x2223b5['queue'];this[_0xa9a2('0x1d')]=_0xa9a2('0x1e');this[_0xa9a2('0x1f')]=_0x694249[_0xa9a2('0x20')];this[_0xa9a2('0x21')]=_0x2223b5[_0xa9a2('0x21')];this[_0xa9a2('0x22')]=_0x2223b5[_0xa9a2('0x22')];this[_0xa9a2('0x23')]=_0x2223b5[_0xa9a2('0x23')];this[_0xa9a2('0x24')]=_0x2223b5['recallme'];this[_0xa9a2('0x25')]=_0x2223b5['ContactId'];this[_0xa9a2('0x26')]=_0x2223b5[_0xa9a2('0x26')];this[_0xa9a2('0x27')]=_0x2223b5[_0xa9a2('0x27')];this[_0xa9a2('0x28')]=_0x2223b5[_0xa9a2('0x28')];this[_0xa9a2('0x29')]=_0x2223b5[_0xa9a2('0x29')];}module[_0xa9a2('0x2a')]=Hangup;
\ No newline at end of file
index f043b61..a7a1824 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9227=['UserId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','name','number','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId'];(function(_0x4c6144,_0x210ba5){var _0x6ebdf6=function(_0x2ce127){while(--_0x2ce127){_0x4c6144['push'](_0x4c6144['shift']());}};_0x6ebdf6(++_0x210ba5);}(_0x9227,0xc3));var _0x7922=function(_0x22a9a5,_0x29c83d){_0x22a9a5=_0x22a9a5-0x0;var _0x2d3bb2=_0x9227[_0x22a9a5];return _0x2d3bb2;};'use strict';var util=require(_0x7922('0x0'));var _=require('lodash');var moment=require(_0x7922('0x1'));function getSeconds(_0x22b565,_0x11000e){var _0x2cae3a=moment(_0x22b565)[_0x7922('0x2')](0x0);var _0x3969b4=moment(_0x11000e)[_0x7922('0x2')](0x0);return _0x2cae3a[_0x7922('0x3')](_0x3969b4,_0x7922('0x4'));}function History(_0x1144c3){this[_0x7922('0x5')]=_0x1144c3[_0x7922('0x5')];this[_0x7922('0x6')]=_0x1144c3[_0x7922('0x6')]||undefined;this['type']=_0x1144c3[_0x7922('0x7')];this['campaigntype']=_0x1144c3['type']==='outbound'?_0x7922('0x8'):_0x1144c3['type'];this[_0x7922('0x9')]=_0x1144c3['countbusyretry'];this['countcongestionretry']=_0x1144c3[_0x7922('0xa')];this['countnoanswerretry']=_0x1144c3[_0x7922('0xb')];this[_0x7922('0xc')]=_0x1144c3['countbusyretry']+_0x1144c3[_0x7922('0xa')]+_0x1144c3[_0x7922('0xb')]+_0x1144c3[_0x7922('0xd')]+_0x1144c3[_0x7922('0xe')]+_0x1144c3[_0x7922('0xf')]+_0x1144c3[_0x7922('0x10')]+_0x1144c3['countagentrejectretry'];this['countnosuchnumberretry']=_0x1144c3[_0x7922('0xd')];this[_0x7922('0xe')]=_0x1144c3[_0x7922('0xe')];this['countabandonedretry']=_0x1144c3[_0x7922('0xf')];this[_0x7922('0x10')]=_0x1144c3[_0x7922('0x10')];this[_0x7922('0x11')]=_0x1144c3[_0x7922('0x11')];this['queue']=_0x1144c3['queue'];this[_0x7922('0x12')]=_0x1144c3[_0x7922('0x13')];this['calleridnum']=_0x1144c3[_0x7922('0x14')];this[_0x7922('0x15')]=_0x1144c3[_0x7922('0x15')];this[_0x7922('0x16')]=_0x1144c3[_0x7922('0x16')];this[_0x7922('0x17')]=_0x1144c3[_0x7922('0x16')];this[_0x7922('0x18')]=getSeconds(_0x1144c3[_0x7922('0x16')],_0x1144c3['starttime']);this[_0x7922('0x19')]=0x0;this[_0x7922('0x1a')]=0x0;this[_0x7922('0x1b')]=_0x1144c3['callback'];this[_0x7922('0x1c')]=_0x1144c3[_0x7922('0x1c')];this[_0x7922('0x1d')]=_0x1144c3[_0x7922('0x1d')];this[_0x7922('0x1e')]=_0x1144c3[_0x7922('0x1e')];this[_0x7922('0x1f')]=_0x1144c3[_0x7922('0x1f')];this[_0x7922('0x20')]=_0x1144c3[_0x7922('0x20')];this['UserId']=_0x1144c3[_0x7922('0x21')];this['VoiceQueueId']=_0x1144c3['VoiceQueueId'];this['CampaignId']=_0x1144c3[_0x7922('0x22')];this[_0x7922('0x23')]=_0x1144c3[_0x7922('0x23')]||'';this['originatecalleridname']=_0x1144c3[_0x7922('0x24')]||'';}module[_0x7922('0x25')]=History;
\ No newline at end of file
+var _0x848a=['holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','moment','milliseconds','diff','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countmachineretry','countagentrejectretry','countdropretry','countabandonedretry','calleridname','number','starttime','responsetime','ringtime'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x848a,0x7c));var _0xa848=function(_0x3e85a4,_0x18c3a9){_0x3e85a4=_0x3e85a4-0x0;var _0x21e7d1=_0x848a[_0x3e85a4];return _0x21e7d1;};'use strict';var util=require(_0xa848('0x0'));var _=require('lodash');var moment=require(_0xa848('0x1'));function getSeconds(_0x4ae5c4,_0x31ed8f){var _0x55d8dd=moment(_0x4ae5c4)[_0xa848('0x2')](0x0);var _0xbf2105=moment(_0x31ed8f)[_0xa848('0x2')](0x0);return _0x55d8dd[_0xa848('0x3')](_0xbf2105,'seconds');}function History(_0x23991e){this[_0xa848('0x4')]=_0x23991e['uniqueid'];this[_0xa848('0x5')]=_0x23991e[_0xa848('0x5')]||undefined;this[_0xa848('0x6')]=_0x23991e[_0xa848('0x6')];this[_0xa848('0x7')]=_0x23991e[_0xa848('0x6')]===_0xa848('0x8')?_0xa848('0x9'):_0x23991e[_0xa848('0x6')];this[_0xa848('0xa')]=_0x23991e[_0xa848('0xa')];this[_0xa848('0xb')]=_0x23991e['countcongestionretry'];this['countnoanswerretry']=_0x23991e[_0xa848('0xc')];this[_0xa848('0xd')]=_0x23991e[_0xa848('0xa')]+_0x23991e[_0xa848('0xb')]+_0x23991e['countnoanswerretry']+_0x23991e[_0xa848('0xe')]+_0x23991e['countdropretry']+_0x23991e['countabandonedretry']+_0x23991e[_0xa848('0xf')]+_0x23991e[_0xa848('0x10')];this[_0xa848('0xe')]=_0x23991e[_0xa848('0xe')];this[_0xa848('0x11')]=_0x23991e[_0xa848('0x11')];this[_0xa848('0x12')]=_0x23991e['countabandonedretry'];this[_0xa848('0xf')]=_0x23991e['countmachineretry'];this[_0xa848('0x10')]=_0x23991e[_0xa848('0x10')];this[_0xa848('0x9')]=_0x23991e[_0xa848('0x9')];this[_0xa848('0x13')]=_0x23991e['name'];this['calleridnum']=_0x23991e[_0xa848('0x14')];this[_0xa848('0x15')]=_0x23991e[_0xa848('0x15')];this[_0xa848('0x16')]=_0x23991e[_0xa848('0x16')];this['endtime']=_0x23991e[_0xa848('0x16')];this[_0xa848('0x17')]=getSeconds(_0x23991e[_0xa848('0x16')],_0x23991e[_0xa848('0x15')]);this[_0xa848('0x18')]=0x0;this[_0xa848('0x19')]=0x0;this[_0xa848('0x1a')]=_0x23991e['callback'];this['callbackuniqueid']=_0x23991e[_0xa848('0x1b')];this[_0xa848('0x1c')]=_0x23991e['callbackat'];this[_0xa848('0x1d')]=_0x23991e[_0xa848('0x1d')];this['ContactId']=_0x23991e[_0xa848('0x1e')];this[_0xa848('0x1f')]=_0x23991e[_0xa848('0x1f')];this[_0xa848('0x20')]=_0x23991e[_0xa848('0x20')];this[_0xa848('0x21')]=_0x23991e[_0xa848('0x21')];this['CampaignId']=_0x23991e[_0xa848('0x22')];this[_0xa848('0x23')]=_0x23991e['originatecalleridnum']||'';this[_0xa848('0x24')]=_0x23991e['originatecalleridname']||'';}module['exports']=History;
\ No newline at end of file
index b41d7b3..a30de71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd845=['HANGUP','uniqueid','state','HangupInAMD','membername','AMD','buildObj','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','MACHINE','Machine','countmachineretry','countglobal','custom:amd','[syncAgentComplete][createHistory][0]','countbusyretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countagentrejectretry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','minutes','YYYY-MM-DD\x20HH:mm:ss','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','countcongestionretry','countabandonedretry','dialGlobalMaxRetry','reason\x2019\x20machine....','add','dialMachineRetryFrequency','[rescheduleContact][Machine]','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','dialQueueProject','AnswerAGI','AGI','cause-txt','Unknow','reason','agiafterat','dialQueueProject2','[syncAgentComplete][createHistory]','[syncAgentComplete]','syncAgentConnect','answertime','queueCallerAbandonCreateState','droptime','responsetime','Drop','dropreason','TIMEOUT','dialDropRetryFrequency','[rescheduleContact][Drop]','starttime','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','predictiveIntervalDroppedCallsCallersExit','Abandoned','CALLEREXIT','dialAbandonedRetryFrequency','[syncAgentComplete][createHistory][11]','syncNewExten','actionid','strategy','roundrobin','locked','stateinterface','idHopper','paused','queueStatusComplete','syncQueueStatusComplete','run','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','syncCampaigns','checkIsTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','ifTime','checkIfTimeIntervals','Failure','\x20Intervals\x20is\x20null\x20','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','push','iftime\x20%s,%s','content','true','command','all','some','GLOBAL_INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','dialPowerLevel','method\x20not\x20recognized','launchHandleIvr','handleIvr','dialTimezone','checkIfTime','dialGlobalInterval','[syncCampaigns]','\x5cw{0,','pow','random','match','object','voiceQueue\x20is\x20undefine','Contact','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialAgiAfterHangupAgent','dialQueueTimeout','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','tags','createdAt','updatedAt','%s%s','XMD-','dialRandomLastDigitCallerIdNumber','originatecalleridname','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','SIP/%s/%s%s','trim','dialCutDigit','phone','substring','[originateError]:\x20%s','OriginateError','[originate][error]','originate','isSuccess','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact][NoSuchNumber]','dialAbandonedMaxRetry','[rescheduleContact][Abandoned]','dialAgentRejectMaxRetry','[callProgressDetecting]','evt\x20is\x20undefine','NoSuchNumber','dialNoSuchNumberMaxRetry','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','noanswer','[syncAgentComplete][createHistory][3]','dialNoAnswerMaxRetry','reason\x203\x20ringing\x20no\x20answer','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','dialBusyMaxRetry','reason\x205\x20busy','Congestion','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','outboundRejectCallsDay','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','predictiveIntervalMaxThreshold','round','predictiveIntervalMinThreshold','talking','floor','predictiveIntervalHitRate','[startMethodPredictive][StartProgressive]','dialPredictiveInterval','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','started\x20in\x20predictive\x20at','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval',')\x20are\x20more\x20than\x20threshold\x20(','agentBusyFactor','busyFactor','[getDataPredictive]','check\x20failure','getDataPredictiveOld','outboundQueuePauses','predictiveIntervalPauses','abandonmentRate','[CatchErlangB]','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','[booked][checkContactBlack]','queueStatusComplete:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','Queue:\x20','actionOriginate','scheduledat','dialRecallMeTimeout','Agent','voicePause','outboundReCallsDay','dialRecallInQueue','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','BLACKLIST','Blacklist','[Originate][historyBlacklist]','inBlackList','limitCalls','dialOrderByScheduledAt','[getContactCampaign2][Empty]','Contact.phone','[actionOriginateIvr]\x20','dialLimitQueue','[countReScheduled]\x20','RUNNING','[actionOriginate]\x20','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','not_inuse','[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','Interval:\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]','p\x20=\x20','interval\x20=\x20','----\x20Agent\x20Busy\x20Factor\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','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','m\x20=\x20','[busyFactor]','exports','util','lodash','bluebird','uuid','md5','ioredis','../preview/util/util','../../../config/environment/','dialer','../../../config/logger','booked','predictive','../ami','redis','localhost','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./action','./final','./agentComplete','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','rrmemory','prototype','enqueue','tail','finally','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','uniqueId','optionPredictive','startPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','bind','agentcomplete','syncAgentComplete','custom:queuesummary','syncQueueSummary','hangup','syncHangup','newexten','varset','syncVarSet','queuemember','syncQueueMember','queuestatuscomplete','loopCampaigns','loopClearZombieChannels','isUndefined','AGENTS_NOT_LOGGED','name','\x20AGENTS\x20NOT\x20LOGGED','message','NOT_ACTIVE','\x20NOT\x20Active','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Intervals','isEmpty','Error','stringify','milliseconds','seconds','emit','type','answered','available','loggedIn','pTalking','sumDuration','sumHoldTime','total','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundOriginateFailureCallsDay','outboundUnknownCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','Trunk','active','callerid','format','voice:queue:%s','ivr','campaign:save','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','predictiveIntervalAnsweredCalls','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','---------------------------','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','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','merge','diff','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','outbound','string','\x22%s\x22\x20<%s>','error','inspect','stack','length','originated','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contactsRescheduled','contacts','[getContactDialer2][Empty]','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','statedesc','endtime','clearZombieChannels','actions','[actions]','undefined','isNil','Action','channel','catch','No\x20such\x20channel','queue','[Dialer][checkChannel]','updateOriginated','[Dialer][checkChannel][ivr]','countReScheduled','resolve','then','checkIsBlackList','[checkIsBlackList]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','rescheduleContact','[rescheduleContact]\x20','unlockContact','[unlockContact]\x20','getContactDialer','temp','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','loggerHandler','emptyContact','saveInDb','pick','ContactId','ListId','UserId','VoiceQueueId','CampaignId','[emptyContact]','Success','isTrunkReachable','status','reachable','SIP/%s','variable','xcally-motion-dialer','dialAMDActive','value'];(function(_0x162c38,_0x459e2d){var _0x36425d=function(_0x26f496){while(--_0x26f496){_0x162c38['push'](_0x162c38['shift']());}};_0x36425d(++_0x459e2d);}(_0xd845,0x135));var _0x5d84=function(_0xc67528,_0x24e2fb){_0xc67528=_0xc67528-0x0;var _0x38e26d=_0xd845[_0xc67528];return _0x38e26d;};'use strict';var util=require(_0x5d84('0x0'));var _=require(_0x5d84('0x1'));var BPromise=require(_0x5d84('0x2'));var uuid=require(_0x5d84('0x3'));var moment=require('moment');var rr=require('rr');var md5=require(_0x5d84('0x4'));var Redis=require(_0x5d84('0x5'));var ut=require(_0x5d84('0x6'));var config=require(_0x5d84('0x7'));var logger=require('../../../config/logger')(_0x5d84('0x8'));var loggerBooked=require(_0x5d84('0x9'))(_0x5d84('0xa'));var loggerPredictive=require(_0x5d84('0x9'))(_0x5d84('0xb'));var loggerPredictiveCalls=require(_0x5d84('0x9'))('predictiveCalls');var loggerSyncQueueSummary=require(_0x5d84('0x9'))('syncQueueSummary');var ami=require(_0x5d84('0xc'));config[_0x5d84('0xd')]=_['defaults'](config[_0x5d84('0xd')],{'host':_0x5d84('0xe'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var cmHopper=require(_0x5d84('0xf'));var cmHopperHistory=require(_0x5d84('0x10'));var cmHopperBlack=require(_0x5d84('0x11'));var voiceQueueRt=require(_0x5d84('0x12'));var Action=require(_0x5d84('0x13'));var History=require('./history');var Final=require(_0x5d84('0x14'));var AgentComplete=require(_0x5d84('0x15'));var QueueCallerAbandon=require(_0x5d84('0x16'));var Hangup=require(_0x5d84('0x17'));var ipAgi=process[_0x5d84('0x18')][_0x5d84('0x19')]||'127.0.0.1';var strategy={'rrmemory':_0x5d84('0x1a'),'roundrobin':'roundrobin'};var Sequence=function(){};Sequence[_0x5d84('0x1b')][_0x5d84('0x1c')]=function(_0x2d1325){this['tail']=this[_0x5d84('0x1d')]?this[_0x5d84('0x1d')][_0x5d84('0x1e')](_0x2d1325):_0x2d1325();};function Dialer(_0x3a73ed,_0x474937){this['sequence']=new Sequence();this[_0x5d84('0x1f')]=_0x474937;this['voiceQueues']=_0x3a73ed[_0x5d84('0x20')];this['campaigns']=_0x3a73ed[_0x5d84('0x21')];this[_0x5d84('0x22')]=_0x3a73ed[_0x5d84('0x22')];this[_0x5d84('0x23')]=_0x3a73ed[_0x5d84('0x23')];this[_0x5d84('0x24')]=config[_0x5d84('0x24')]||0x2;this['channels']={};this['actions']={};this['contactsId']={};this[_0x5d84('0x25')]={};this[_0x5d84('0x26')]={};this[_0x5d84('0x27')]={};this[_0x5d84('0x28')]={};this[_0x5d84('0x29')]={};this[_0x5d84('0x2a')]={};this[_0x5d84('0x2b')]={};ami['on']('agentconnect',this['syncAgentConnect']['bind'](this));ami['on']('queuecallerabandon',this[_0x5d84('0x2c')]['bind'](this));ami['on'](_0x5d84('0x2d'),this[_0x5d84('0x2e')][_0x5d84('0x2f')](this));ami['on'](_0x5d84('0x30'),this[_0x5d84('0x31')]['bind'](this));ami['on'](_0x5d84('0x32'),this[_0x5d84('0x33')]['bind'](this));ami['on'](_0x5d84('0x34'),this[_0x5d84('0x35')]['bind'](this));ami['on'](_0x5d84('0x36'),this['syncNewExten'][_0x5d84('0x2f')](this));ami['on'](_0x5d84('0x37'),this[_0x5d84('0x38')]['bind'](this));ami['on'](_0x5d84('0x39'),this[_0x5d84('0x3a')][_0x5d84('0x2f')](this));ami['on'](_0x5d84('0x3b'),this['syncQueueStatusComplete'][_0x5d84('0x2f')](this));this[_0x5d84('0x3c')]();this[_0x5d84('0x3d')]();}function isNotNull(_0x564e15){return _0x564e15!==null&&!_[_0x5d84('0x3e')](_0x564e15);}function checkIsLoggedIn(_0x59e6c5,_0x1a9007){return function(){if(_0x1a9007<=0x0){_0x59e6c5['message']=_0x5d84('0x3f');throw _0x59e6c5[_0x5d84('0x40')]+_0x5d84('0x41');}};}function isActive(_0x3069a8){return _0x3069a8;}function checkIsActive(_0x5b8cb3,_0x805a12){return function(){if(!isActive(_0x805a12)){_0x5b8cb3[_0x5d84('0x42')]=_0x5d84('0x43');throw _0x5b8cb3[_0x5d84('0x40')]+_0x5d84('0x44');}};}function checkInterval(_0x1a9a46){return function(){if(!isNotNull(_0x1a9a46[_0x5d84('0x45')])){_0x1a9a46[_0x5d84('0x42')]=_0x5d84('0x46');throw _0x1a9a46[_0x5d84('0x40')]+_0x5d84('0x47');}if(!isNotNull(_0x1a9a46[_0x5d84('0x45')][_0x5d84('0x48')])){_0x1a9a46['message']=_0x5d84('0x46');throw _0x1a9a46[_0x5d84('0x40')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_[_0x5d84('0x49')](_0x1a9a46['Interval'][_0x5d84('0x48')]))){_0x1a9a46[_0x5d84('0x42')]=_0x5d84('0x46');throw _0x1a9a46[_0x5d84('0x40')]+_0x5d84('0x47');}};}function msgResponse(_0x304966,_0x14eacc,_0x188215){return{'action':_0x304966,'response':_0x14eacc,'message':_0x188215,'stack':_0x188215};}function myreject(_0x1f6a6d){return function(_0xc567dd){return _0x1f6a6d(msgResponse('[ifTime][Action]',_0x5d84('0x4a'),JSON[_0x5d84('0x4b')](_0xc567dd)));};}function getSeconds(_0x329f08,_0x275fe9){var _0x24e7d9=moment(_0x329f08)[_0x5d84('0x4c')](0x0);var _0x1ac7b4=moment(_0x275fe9)['milliseconds'](0x0);return _0x24e7d9['diff'](_0x1ac7b4,_0x5d84('0x4d'));}function emit(_0x1d2a46,_0x175a89,_0x287b72){io['to'](_0x1d2a46)[_0x5d84('0x4e')](_0x175a89,_0x287b72);}function emitVoiceQueueSummary(_0x147d69){if(_0x147d69[_0x5d84('0x4f')]==='outbound'){var _0x4c4386={'id':_0x147d69['id'],'name':_0x147d69[_0x5d84('0x40')],'strategy':_0x147d69['strategy'],'answered':_0x147d69[_0x5d84('0x50')],'available':_0x147d69[_0x5d84('0x51')],'loggedIn':_0x147d69[_0x5d84('0x52')],'pTalking':_0x147d69[_0x5d84('0x53')],'sumBillable':_0x147d69['sumBillable'],'sumDuration':_0x147d69[_0x5d84('0x54')],'sumHoldTime':_0x147d69[_0x5d84('0x55')]||0x0,'talking':_0x147d69['talking'],'total':_0x147d69[_0x5d84('0x56')],'type':_0x147d69[_0x5d84('0x4f')],'unmanaged':_0x147d69[_0x5d84('0x57')],'abandoned':_0x147d69[_0x5d84('0x58')],'waiting':_0x147d69[_0x5d84('0x59')],'loggedInDb':_0x147d69[_0x5d84('0x5a')],'dialActive':_0x147d69[_0x5d84('0x5b')],'dialMethod':_0x147d69[_0x5d84('0x5c')],'dialOriginateCallerIdName':_0x147d69[_0x5d84('0x5d')],'dialOriginateCallerIdNumber':_0x147d69[_0x5d84('0x5e')],'dialOriginateTimeout':_0x147d69[_0x5d84('0x5f')],'dialPrefix':_0x147d69[_0x5d84('0x60')],'outboundAnswerAgiCallsDay':_0x147d69[_0x5d84('0x61')],'outboundAnswerCallsDay':_0x147d69[_0x5d84('0x62')],'outboundBlacklistCallsDay':_0x147d69[_0x5d84('0x63')],'outboundBusyCallsDay':_0x147d69[_0x5d84('0x64')],'outboundCongestionCallsDay':_0x147d69[_0x5d84('0x65')],'outboundDropCallsDayACS':_0x147d69[_0x5d84('0x66')],'outboundDropCallsDayCallersExit':_0x147d69[_0x5d84('0x67')],'outboundDropCallsDayTimeout':_0x147d69[_0x5d84('0x68')],'outboundNoAnswerCallsDay':_0x147d69['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x147d69['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x147d69[_0x5d84('0x69')],'outboundReCallsDay':_0x147d69['outboundReCallsDay'],'outboundRejectCallsDay':_0x147d69['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x147d69[_0x5d84('0x6a')],'predictiveIntervalAnsweredCalls':_0x147d69['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x147d69[_0x5d84('0x6b')],'predictiveIntervalAvgTalktime':_0x147d69[_0x5d84('0x6c')],'predictiveIntervalDroppedCallsCallersExit':_0x147d69['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x147d69[_0x5d84('0x6d')],'predictiveIntervalErlangCalls':_0x147d69[_0x5d84('0x6e')],'predictiveIntervalErlangCallsDroppedCalls':_0x147d69[_0x5d84('0x6f')],'predictiveIntervalHitRate':_0x147d69['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x147d69[_0x5d84('0x70')],'predictiveIntervalPauses':_0x147d69['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x147d69[_0x5d84('0x71')],'predictiveIntervalTotalCalls':_0x147d69[_0x5d84('0x72')],'message':_0x147d69[_0x5d84('0x42')],'originated':_0x147d69['originated'],'erlangCalls':_0x147d69[_0x5d84('0x73')],'erlangCallToSecond':_0x147d69[_0x5d84('0x74')],'erlangAbandonmentRate':_0x147d69[_0x5d84('0x75')],'erlangBusyFactor':_0x147d69[_0x5d84('0x76')],'startPredictive':_0x147d69[_0x5d84('0x27')],'startProgressive':_0x147d69['startProgressive']};if(_0x147d69[_0x5d84('0x77')]){_0x4c4386[_0x5d84('0x77')]={'id':_0x147d69[_0x5d84('0x77')]['id'],'name':_0x147d69[_0x5d84('0x77')][_0x5d84('0x40')],'active':_0x147d69[_0x5d84('0x77')][_0x5d84('0x78')],'callerid':_0x147d69['Trunk'][_0x5d84('0x79')]};}if(_0x147d69[_0x5d84('0x45')]){_0x4c4386[_0x5d84('0x45')]={'id':_0x147d69[_0x5d84('0x45')]['id'],'name':_0x147d69[_0x5d84('0x45')]['name']};}var _0x4b277d=md5(JSON[_0x5d84('0x4b')](_0x4c4386));if(_0x147d69[_0x5d84('0x4')]!==_0x4b277d){_0x147d69[_0x5d84('0x4')]=_0x4b277d;emit(util[_0x5d84('0x7a')](_0x5d84('0x7b'),_0x4c4386[_0x5d84('0x40')]),'voice_queue:save',_0x4c4386);}}}function emitCampaignSummary(_0x3e565f){if(_0x3e565f[_0x5d84('0x4f')]===_0x5d84('0x7c')){emit(util[_0x5d84('0x7a')]('campaign:ivr:%s',_0x3e565f['name']),_0x5d84('0x7d'),_0x3e565f);}}function checkGetDataPredictive(_0x25e7ce){if(isNotNull(_0x25e7ce)&&!_[_0x5d84('0x49')](_0x25e7ce)){loggerPredictive[_0x5d84('0x7e')](_0x5d84('0x7f'));loggerPredictive[_0x5d84('0x7e')](_0x5d84('0x80'),_0x25e7ce[_0x5d84('0x72')]);loggerPredictive[_0x5d84('0x7e')](_0x5d84('0x81'),_0x25e7ce[_0x5d84('0x82')]);loggerPredictive[_0x5d84('0x7e')](_0x5d84('0x83'),_0x25e7ce[_0x5d84('0x6d')]);loggerPredictive[_0x5d84('0x7e')](_0x5d84('0x84'),_0x25e7ce['predictiveIntervalDroppedCallsCallersExit']);loggerPredictive['info'](_0x5d84('0x85'),_0x25e7ce[_0x5d84('0x6b')]);loggerPredictive[_0x5d84('0x7e')]('AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x25e7ce[_0x5d84('0x6c')]);loggerPredictive['info'](_0x5d84('0x86'));if(_0x25e7ce[_0x5d84('0x72')]>0x0){if(!_[_0x5d84('0x3e')](_0x25e7ce[_0x5d84('0x6c')])&&_0x25e7ce[_0x5d84('0x6c')]>0x0){return!![];}loggerPredictive['info'](_0x5d84('0x87'));if(!_[_0x5d84('0x3e')](_0x25e7ce[_0x5d84('0x6b')])&&_0x25e7ce[_0x5d84('0x6b')]>0x0){return!![];}loggerPredictive[_0x5d84('0x7e')]('Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive');}else{loggerPredictive[_0x5d84('0x7e')](_0x5d84('0x88'));}}else{loggerPredictive['info']('History\x20information\x20are\x20empty');}return![];}function mergeDataErlangB(_0x11bf89){return function(_0x466e1a){loggerPredictive[_0x5d84('0x7e')]('---------\x20ErlangB\x20---------');loggerPredictive[_0x5d84('0x7e')]('Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x466e1a[_0x5d84('0x73')]);loggerPredictive[_0x5d84('0x7e')]('One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x466e1a[_0x5d84('0x74')]);loggerPredictive['info'](_0x5d84('0x89'),_0x466e1a['erlangAbandonmentRate']);loggerPredictive[_0x5d84('0x7e')](_0x5d84('0x8a'),_0x466e1a[_0x5d84('0x76')]);loggerPredictive[_0x5d84('0x7e')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x466e1a[_0x5d84('0x75')]);loggerPredictive[_0x5d84('0x7e')](_0x5d84('0x86'));_[_0x5d84('0x8b')](_0x11bf89,_0x466e1a);};}function getDiff(_0x23782b){var _0x4de607=moment()[_0x5d84('0x4c')](0x0);var _0x360084=moment(_0x23782b)[_0x5d84('0x4c')](0x0);return _0x4de607[_0x5d84('0x8c')](_0x360084,_0x5d84('0x4d'));}function ifInterval(_0x1758f6,_0x3bd309){if(_[_0x5d84('0x3e')](_0x3bd309)){return![];}return getDiff(_0x3bd309)<_0x1758f6*0x3c;}function freeVariablesPredictive(_0x3130a3){if(isNotNull(_0x3130a3)){if(!_[_0x5d84('0x3e')](_0x3130a3['startProgressive'])){_0x3130a3[_0x5d84('0x28')]=undefined;loggerPredictive[_0x5d84('0x7e')](_0x3130a3['name'],_0x5d84('0x8d'));}if(!_[_0x5d84('0x3e')](_0x3130a3[_0x5d84('0x27')])){_0x3130a3[_0x5d84('0x27')]=undefined;loggerPredictive[_0x5d84('0x7e')](_0x3130a3[_0x5d84('0x40')],_0x5d84('0x8e'));}if(!_[_0x5d84('0x3e')](_0x3130a3[_0x5d84('0x8f')])){clearInterval(_0x3130a3['handlePredictive']);_0x3130a3[_0x5d84('0x8f')]=undefined;loggerPredictive[_0x5d84('0x7e')](_0x3130a3[_0x5d84('0x40')],_0x5d84('0x90'));}}}function erlangb(_0x1afc14,_0x554257){if(_0x554257===0x0){return 0x0;}var _0x4b945c=0x1;for(var _0x5afcb9=0x1;_0x5afcb9<=_0x554257;_0x5afcb9+=0x1){_0x4b945c=0x1+_0x4b945c*_0x5afcb9/_0x1afc14;}return 0x1/_0x4b945c;}function isVoiceQueueOutbound(_0x1a2cd4){return _0x1a2cd4===_0x5d84('0x91');}function isNotPreview(_0x161943){return _0x161943!==_0x5d84('0x1f');}function isCampaignIvr(_0x10a942){return _0x10a942===_0x5d84('0x7c');}function getCallerId(_0x421807,_0x77aa02,_0x342301){if(!_[_0x5d84('0x3e')](_0x342301)&&typeof _0x342301===_0x5d84('0x92')&&!_[_0x5d84('0x49')](_0x342301)){if(!_['isUndefined'](_0x77aa02)&&typeof _0x77aa02===_0x5d84('0x92')&&!_['isEmpty'](_0x77aa02)){return util['format'](_0x5d84('0x93'),_0x77aa02,_0x342301);}return util[_0x5d84('0x7a')]('\x22%s\x22\x20<%s>',_0x342301,_0x342301);}if(!_[_0x5d84('0x3e')](_0x421807)&&typeof _0x421807===_0x5d84('0x92')&&!_[_0x5d84('0x49')](_0x421807)){return _0x421807;}return'\x22\x22\x20<>';}function loggerCatchQueueSummary(_0x552af4,_0x403d6e){return function(_0x5ad5bc){freeVariablesPredictive(_0x403d6e);emitVoiceQueueSummary(_0x403d6e);emitCampaignSummary(_0x403d6e);loggerSyncQueueSummary[_0x5d84('0x94')](_0x552af4,util[_0x5d84('0x95')](_0x5ad5bc,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x5610cd,_0x75420e){return function(_0x3a4a5){loggerPredictive['error'](_0x75420e[_0x5d84('0x40')],_0x5610cd);loggerPredictive[_0x5d84('0x94')](_0x3a4a5[_0x5d84('0x96')]);freeVariablesPredictive(_0x75420e);};}function loggerCatch(_0x5f2777){return function(_0x3a4df0){logger[_0x5d84('0x94')](_0x5f2777,util['inspect'](_0x3a4df0,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x188b3e){return _0x188b3e&&!_[_0x5d84('0x3e')](_0x188b3e)&&_0x188b3e[_0x5d84('0x97')]>0x0;}function decremetOriginate(_0x1171d1){if(!_[_0x5d84('0x3e')](_0x1171d1)&&_0x1171d1!==null){if(typeof _0x1171d1[_0x5d84('0x98')]!=='undefined'){if(_0x1171d1['originated']>0x0){_0x1171d1['originated']-=0x1;}else{logger[_0x5d84('0x94')](_0x5d84('0x99'));}}}else{logger['error'](_0x5d84('0x9a'));}}function checkContactLowerLimitOriginate(_0x5af93c,_0x3f7656,_0x2fa97f){if(_0x3f7656>_0x2fa97f){for(var _0x445d3e=0x0;_0x445d3e<_0x3f7656-_0x2fa97f;_0x445d3e+=0x1){decremetOriginate(_0x5af93c);}}}function loggerGetContactDialer(_0x23fae4,_0x5a2fc7,_0x21668c){return function(_0x27956b){checkContactLowerLimitOriginate(_0x5a2fc7,_0x21668c,0x0);logger[_0x5d84('0x94')](_0x23fae4,util[_0x5d84('0x95')](_0x27956b,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x587e11){return function(_0x2a96c3){if(isNotNull(_0x2a96c3)&&isNotNull(_0x2a96c3[0x0])){if(_0x2a96c3[0x0]['contactsRescheduled']>0x0){_0x587e11['message']=_0x5d84('0x9b');logger[_0x5d84('0x7e')](_0x5d84('0x9c')+_0x587e11[_0x5d84('0x40')],_0x2a96c3[0x0][_0x5d84('0x9d')],_0x5d84('0x9e'));}else{_0x587e11[_0x5d84('0x42')]='AVAILABLE_CONTACTS_FINISHED';logger[_0x5d84('0x7e')](_0x5d84('0x9f')+_0x587e11['name']);}}};}function notSendMessagesQueue(_0x2a0fe0){if(_0x2a0fe0[_0x5d84('0xa0')]){freeVariablesPredictive(_0x2a0fe0);if(_0x2a0fe0['originated']===0x0&&_0x2a0fe0['talking']===0x0&&_0x2a0fe0[_0x5d84('0x59')]===0x0&&(_0x2a0fe0[_0x5d84('0x53')]||0x0)===0x0){_0x2a0fe0[_0x5d84('0xa0')]=![];_0x2a0fe0[_0x5d84('0x51')]=0x0;_0x2a0fe0['message']=_0x5d84('0x43');loggerSyncQueueSummary[_0x5d84('0x94')](_0x5d84('0xa1'),_0x2a0fe0[_0x5d84('0x40')],_0x5d84('0xa2'));}else{_0x2a0fe0[_0x5d84('0x42')]=_0x5d84('0xa3');loggerSyncQueueSummary[_0x5d84('0x94')](_0x5d84('0xa1'),_0x2a0fe0[_0x5d84('0x40')],_0x5d84('0xa4'));}emitVoiceQueueSummary(_0x2a0fe0);}}function notSendMessagesCampaign(_0x3a7e6e){if(_0x3a7e6e[_0x5d84('0xa0')]){if(_0x3a7e6e[_0x5d84('0x98')]===0x0){_0x3a7e6e[_0x5d84('0xa0')]=![];_0x3a7e6e[_0x5d84('0x42')]=_0x5d84('0x43');loggerSyncQueueSummary[_0x5d84('0x94')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x3a7e6e[_0x5d84('0x40')],_0x5d84('0xa2'));}else{_0x3a7e6e[_0x5d84('0x42')]=_0x5d84('0xa3');loggerSyncQueueSummary[_0x5d84('0x94')](_0x5d84('0xa5'),_0x3a7e6e[_0x5d84('0x40')],_0x5d84('0xa4'));}emitCampaignSummary(_0x3a7e6e);}}function createObjHistory(_0x29996e,_0x4d56a7,_0x324739,_0x11dd2b,_0x3d5792){_0x29996e[_0x5d84('0x42')]=_0x324739;var _0x12a48d=new Action(_0x29996e,_0x4d56a7);var _0x21e907=new History(_0x12a48d);_0x21e907['state']=_0x11dd2b;_0x21e907[_0x5d84('0xa6')]=_0x3d5792;_0x21e907[_0x5d84('0xa7')]=_0x12a48d['starttime'];return _0x21e907;}Dialer[_0x5d84('0x1b')][_0x5d84('0x3d')]=function(){var _0x47646c=this;setInterval(function(){_0x47646c[_0x5d84('0xa8')](_0x47646c['uniqueId'],'[uniqueid]');_0x47646c[_0x5d84('0xa8')](_0x47646c[_0x5d84('0xa9')],_0x5d84('0xaa'));},0x32c8);};Dialer[_0x5d84('0x1b')][_0x5d84('0xa8')]=function(_0x5b7cb4,_0x4fdac9){var _0x34ca57=this;for(var _0x1edd9c in _0x5b7cb4){if(typeof _0x5b7cb4[_0x1edd9c]!==_0x5d84('0xab')){this['sequence']['enqueue'](function(){if(!_[_0x5d84('0xac')](_0x5b7cb4[_0x1edd9c])){return ami[_0x5d84('0xad')]({'action':'status','channel':_0x5b7cb4[_0x1edd9c][_0x5d84('0xae')]})[_0x5d84('0xaf')](function(_0x2c4579){if(_0x2c4579['message']===_0x5d84('0xb0')){setTimeout(function(){if(_0x5b7cb4[_0x1edd9c]&&_0x5b7cb4[_0x1edd9c][_0x5d84('0x4f')]!==_0x5d84('0x7c')){_0x34ca57['updateOriginated'](_0x34ca57['voiceQueues'][_0x5b7cb4[_0x1edd9c][_0x5d84('0xb1')]]);logger[_0x5d84('0x94')](_0x5d84('0xb2'),_0x4fdac9,_0x1edd9c,_0x5b7cb4[_0x1edd9c]['queue']);delete _0x5b7cb4[_0x1edd9c];}if(_0x5b7cb4[_0x1edd9c]&&_0x5b7cb4[_0x1edd9c]['type']==='ivr'){_0x34ca57[_0x5d84('0xb3')](_0x34ca57[_0x5d84('0x21')][_0x5b7cb4[_0x1edd9c][_0x5d84('0xb1')]]);logger['error'](_0x5d84('0xb4'),_0x4fdac9,_0x1edd9c,_0x5b7cb4[_0x1edd9c]['queue']);delete _0x5b7cb4[_0x1edd9c];}},0x2328);}});}});}}};Dialer[_0x5d84('0x1b')][_0x5d84('0xb5')]=function(_0x44abb7){return BPromise[_0x5d84('0xb6')]()[_0x5d84('0xb7')](cmHopper[_0x5d84('0xb5')](_0x44abb7))[_0x5d84('0xaf')](loggerCatch('[countReScheduled]\x20'));};Dialer[_0x5d84('0x1b')][_0x5d84('0xb8')]=function(_0x3f0632){return BPromise[_0x5d84('0xb6')]()['then'](cmHopperBlack[_0x5d84('0xb8')](_0x3f0632))[_0x5d84('0xaf')](loggerCatch(_0x5d84('0xb9')));};Dialer[_0x5d84('0x1b')]['checkIsBlackListIvr']=function(_0x50ce61){return BPromise[_0x5d84('0xb6')]()[_0x5d84('0xb7')](cmHopperBlack[_0x5d84('0xba')](_0x50ce61))[_0x5d84('0xaf')](loggerCatch(_0x5d84('0xbb')));};Dialer[_0x5d84('0x1b')][_0x5d84('0xbc')]=function(_0x468288){return BPromise[_0x5d84('0xb6')]()[_0x5d84('0xb7')](cmHopperHistory['avgHandleTime'](_0x468288))['catch'](loggerCatch('[averageHandleTime]\x20'));};Dialer['prototype'][_0x5d84('0xbd')]=function(_0x3173b3){return BPromise['resolve']()[_0x5d84('0xb7')](cmHopper[_0x5d84('0xbd')](_0x3173b3))['catch'](loggerCatch(_0x5d84('0xbe')));};Dialer[_0x5d84('0x1b')][_0x5d84('0xbf')]=function(_0x3ceb06,_0x1d062c,_0x344db3){return BPromise['resolve']()[_0x5d84('0xb7')](cmHopper[_0x5d84('0xbf')](_0x3ceb06,_0x1d062c,_0x344db3))['catch'](loggerCatch(_0x5d84('0xc0')));};Dialer[_0x5d84('0x1b')][_0x5d84('0xc1')]=function(_0x405502,_0x2726fe,_0x4d6cf0,_0x28f8b0,_0x14497e){return BPromise[_0x5d84('0xb6')]()['then'](cmHopper['getContactDialer'](_0x405502,_0x2726fe,_0x4d6cf0,_0x28f8b0))[_0x5d84('0xaf')](function(_0x3801c4){_0x14497e[_0x5d84('0xc2')]-=_0x4d6cf0;_0x14497e['temp']=_0x14497e[_0x5d84('0xc2')]>0x0?_0x14497e[_0x5d84('0xc2')]:0x0;loggerCatch('[getContactDialer]\x20')(_0x3801c4);});};Dialer[_0x5d84('0x1b')][_0x5d84('0xc3')]=function(_0x3848ea,_0x48c318,_0x5c25bc,_0x133518){return BPromise[_0x5d84('0xb6')]()['then'](cmHopper['getContactDialerIvr'](_0x3848ea,_0x48c318,_0x5c25bc))[_0x5d84('0xaf')](function(_0x2cd063){_0x133518['temp']-=_0x48c318;_0x133518['temp']=_0x133518['temp']>0x0?_0x133518[_0x5d84('0xc2')]:0x0;loggerCatch(_0x5d84('0xc4'))(_0x2cd063);});};Dialer['prototype']['getVoiceQueueRtPauses']=function(_0x2031a4){return BPromise[_0x5d84('0xb6')]()[_0x5d84('0xb7')](voiceQueueRt[_0x5d84('0xc5')](_0x2031a4))[_0x5d84('0xaf')](loggerCatch(_0x5d84('0xc6')));};Dialer[_0x5d84('0x1b')]['moveContactManagedDialer']=function(_0x52cacf){return BPromise['resolve']()[_0x5d84('0xb7')](cmHopper[_0x5d84('0xc7')](_0x52cacf))[_0x5d84('0xaf')](loggerCatch(_0x5d84('0xc8')));};Dialer[_0x5d84('0x1b')]['createHistory']=function(_0x4aabec){return BPromise[_0x5d84('0xb6')]()[_0x5d84('0xb7')](cmHopperHistory[_0x5d84('0xc9')](_0x4aabec))['catch'](loggerCatch(_0x5d84('0xca')));};Dialer[_0x5d84('0x1b')][_0x5d84('0xb3')]=function(_0x3e097d){if(!_[_0x5d84('0x3e')](_0x3e097d)&&_0x3e097d!==null){if(typeof _0x3e097d[_0x5d84('0x98')]!==_0x5d84('0xab')){if(_0x3e097d[_0x5d84('0x98')]>0x0){_0x3e097d['originated']-=0x1;}else{logger[_0x5d84('0x94')](_0x5d84('0xcb'));}}}else{logger['error']('[updateOriginated]\x20is\x20null\x20or\x20undefined');}};Dialer[_0x5d84('0x1b')][_0x5d84('0xcc')]=function(_0x4717d9,_0x518ee8){var _0x45c557=this;return function(_0x5a0703){_0x45c557[_0x5d84('0xb3')](_0x518ee8);logger['error'](_0x4717d9,util[_0x5d84('0x95')](_0x5a0703,{'showHidden':![],'depth':null}));};};Dialer[_0x5d84('0x1b')][_0x5d84('0xcd')]=function(_0x5dd9bb,_0x256930,_0x352582){var _0x278b05={'state':0x19,'statedesc':'notFound'};this[_0x5d84('0xb3')](_0x256930);this[_0x5d84('0xce')](_['merge'](_0x278b05,_[_0x5d84('0xcf')](_0x352582,[_0x5d84('0xd0'),_0x5d84('0xd1'),_0x5d84('0xd2'),_0x5d84('0xd3'),_0x5d84('0xd4')])),'[emptyContact][createHistory]',_0x5d84('0xd5'));logger[_0x5d84('0x94')](_0x5dd9bb);};Dialer['prototype']['isSuccess']=function(_0x4533bb){return _0x4533bb===_0x5d84('0xd6');};Dialer[_0x5d84('0x1b')][_0x5d84('0xd7')]=function(_0x4c6a77){return!_[_0x5d84('0x3e')](_0x4c6a77)&&_0x4c6a77&&!_[_0x5d84('0x3e')](_0x4c6a77[_0x5d84('0x40')])&&!_['isUndefined'](_0x4c6a77[_0x5d84('0x78')])&&_0x4c6a77[_0x5d84('0x78')]&&(this[_0x5d84('0x23')][util[_0x5d84('0x7a')]('SIP/%s',_0x4c6a77[_0x5d84('0x40')])][_0x5d84('0xd8')]===_0x5d84('0xd9')||this[_0x5d84('0x23')][util[_0x5d84('0x7a')](_0x5d84('0xda'),_0x4c6a77['name'])]['status']==='unmonitored');};Dialer[_0x5d84('0x1b')]['saveInDb']=function(_0x3b85a4,_0x25d2c2,_0x884893){this[_0x5d84('0xc9')](_0x3b85a4)[_0x5d84('0xaf')](loggerCatch(_0x25d2c2));this[_0x5d84('0xc7')](_0x3b85a4)[_0x5d84('0xaf')](loggerCatch(_0x884893));};Dialer[_0x5d84('0x1b')][_0x5d84('0x38')]=function(_0x1e8ea4){var _0x3202d0=this[_0x5d84('0x25')][_0x1e8ea4['uniqueid']];var _0x3f37e3;if(!_[_0x5d84('0xac')](_0x1e8ea4)&&!_['isNil'](_0x1e8ea4[_0x5d84('0xdb')])&&!_['isNil'](_0x1e8ea4[_0x5d84('0xdb')]['amdstatus'])&&_0x1e8ea4['exten']===_0x5d84('0xdc')&&_0x3202d0){if(_0x3202d0['type']!=='ivr'&&this[_0x5d84('0x20')][_0x3202d0[_0x5d84('0xb1')]][_0x5d84('0xdd')]&&_0x1e8ea4[_0x5d84('0xde')]===_0x5d84('0xdf')){delete this['uniqueId'][_0x1e8ea4[_0x5d84('0xe0')]];this['updateOriginated'](this['voiceQueues'][_0x3202d0['queue']]);this[_0x5d84('0x20')][_0x3202d0['queue']][_0x5d84('0x62')]+=0x1;this['voiceQueues'][_0x3202d0[_0x5d84('0xb1')]][_0x5d84('0x61')]+=0x1;_0x3f37e3=new Hangup(_0x3202d0,_0x1e8ea4);_0x3f37e3[_0x5d84('0xe1')]=0x12;_0x3f37e3[_0x5d84('0xa6')]=_0x5d84('0xe2');_0x3f37e3[_0x5d84('0xe3')]=_0x5d84('0xe4');ami[_0x5d84('0x4e')]('custom:amd',ut[_0x5d84('0xe5')](_0x3f37e3,_0x5d84('0xe6')));this[_0x5d84('0xce')](_0x3f37e3,_0x5d84('0xe7'),_0x5d84('0xe8'));}if(_0x3202d0['type']!=='ivr'&&this['voiceQueues'][_0x3202d0['queue']][_0x5d84('0xdd')]&&_0x1e8ea4[_0x5d84('0xde')]===_0x5d84('0xe9')){var _0x271e2e=this;return new BPromise(function(_0x283d2c,_0x15c8bf){delete _0x271e2e[_0x5d84('0x25')][_0x1e8ea4[_0x5d84('0xe0')]];_0x271e2e[_0x5d84('0xb3')](_0x271e2e[_0x5d84('0x20')][_0x3202d0[_0x5d84('0xb1')]]);_0x271e2e['voiceQueues'][_0x3202d0[_0x5d84('0xb1')]]['outboundAnswerCallsDay']+=0x1;_0x271e2e[_0x5d84('0x20')][_0x3202d0[_0x5d84('0xb1')]][_0x5d84('0x61')]+=0x1;var _0x19f25a=_0x271e2e['voiceQueues'][_0x3202d0[_0x5d84('0xb1')]];var _0x5d2a69=new Hangup(_0x3202d0,_0x1e8ea4);_0x5d2a69[_0x5d84('0xe1')]=0x13;_0x5d2a69[_0x5d84('0xa6')]=_0x5d84('0xea');_0x5d2a69[_0x5d84('0xe3')]=_0x5d84('0xe4');_0x5d2a69[_0x5d84('0xeb')]+=0x1;_0x5d2a69[_0x5d84('0xec')]+=0x1;_0x5d2a69[_0x5d84('0xe6')]=!![];ami[_0x5d84('0x4e')](_0x5d84('0xed'),ut[_0x5d84('0xe5')](_0x5d2a69,'amd'));_0x271e2e[_0x5d84('0xc9')](_0x5d2a69)[_0x5d84('0xaf')](loggerCatch(_0x5d84('0xee')));if(_0x5d2a69[_0x5d84('0xef')]+_0x5d2a69['countcongestionretry']+_0x5d2a69[_0x5d84('0xf0')]+_0x5d2a69[_0x5d84('0xf1')]+_0x5d2a69[_0x5d84('0xf2')]+_0x5d2a69['countabandonedretry']+_0x5d2a69[_0x5d84('0xeb')]+_0x5d2a69[_0x5d84('0xf3')]>=_0x19f25a['dialGlobalMaxRetry']){_0x271e2e[_0x5d84('0xf4')](_0x5d2a69,_0x283d2c,_0x15c8bf,_0x5d84('0xf5'));}else{if(_0x5d2a69[_0x5d84('0xeb')]>=_0x19f25a[_0x5d84('0xf6')]){_0x271e2e[_0x5d84('0xf7')](_0x5d2a69,_0x283d2c,_0x15c8bf,'reason\x2019\x20machine....');}else{_0x271e2e[_0x5d84('0xbd')]({'active':![],'countmachineretry':_0x5d2a69[_0x5d84('0xeb')],'scheduledat':moment()['add'](_0x19f25a['dialMachineRetryFrequency'],_0x5d84('0xf8'))['format'](_0x5d84('0xf9')),'ContactId':_0x5d2a69['ContactId'],'ListId':_0x5d2a69[_0x5d84('0xd1')],'VoiceQueueId':_0x5d2a69['VoiceQueueId']||undefined,'CampaignId':_0x5d2a69[_0x5d84('0xd4')]||undefined})[_0x5d84('0xaf')](loggerCatch('[rescheduleContact][Machine]'));_0x283d2c({'reschedule':0x1});}}});}if(_0x3202d0[_0x5d84('0x4f')]===_0x5d84('0x7c')&&this[_0x5d84('0x21')][_0x3202d0[_0x5d84('0xb1')]][_0x5d84('0xdd')]&&_0x1e8ea4[_0x5d84('0xde')]==='HANGUP'){delete this[_0x5d84('0x25')][_0x1e8ea4[_0x5d84('0xe0')]];this[_0x5d84('0xb3')](this[_0x5d84('0x21')][_0x3202d0[_0x5d84('0xb1')]]);_0x3f37e3=new Hangup(_0x3202d0,_0x1e8ea4);_0x3f37e3[_0x5d84('0xe1')]=0x12;_0x3f37e3[_0x5d84('0xa6')]=_0x5d84('0xe2');_0x3f37e3[_0x5d84('0xe3')]=_0x5d84('0xe4');ami[_0x5d84('0x4e')](_0x5d84('0xed'),ut['buildObj'](_0x3f37e3,_0x5d84('0xe6')));this[_0x5d84('0xce')](_0x3f37e3,_0x5d84('0xfa'),_0x5d84('0xfb'));}if(_0x3202d0[_0x5d84('0x4f')]===_0x5d84('0x7c')&&this[_0x5d84('0x21')][_0x3202d0[_0x5d84('0xb1')]]['dialAMDActive']&&_0x1e8ea4[_0x5d84('0xde')]===_0x5d84('0xe9')){var _0x271e2e=this;return new BPromise(function(_0x18b0e0,_0x2b759e){delete _0x271e2e[_0x5d84('0x25')][_0x1e8ea4[_0x5d84('0xe0')]];_0x271e2e[_0x5d84('0xb3')](_0x271e2e[_0x5d84('0x21')][_0x3202d0[_0x5d84('0xb1')]]);_0x271e2e[_0x5d84('0x21')][_0x3202d0['queue']][_0x5d84('0x62')]+=0x1;_0x271e2e[_0x5d84('0x21')][_0x3202d0[_0x5d84('0xb1')]][_0x5d84('0x61')]+=0x1;var _0x3b69a0=_0x271e2e[_0x5d84('0x21')][_0x3202d0[_0x5d84('0xb1')]];var _0x382186=new Hangup(_0x3202d0,_0x1e8ea4);_0x382186[_0x5d84('0xe1')]=0x13;_0x382186[_0x5d84('0xa6')]=_0x5d84('0xea');_0x382186[_0x5d84('0xe3')]=_0x5d84('0xe4');_0x382186[_0x5d84('0xeb')]+=0x1;_0x382186[_0x5d84('0xec')]+=0x1;_0x382186['amd']=!![];ami['emit'](_0x5d84('0xed'),ut[_0x5d84('0xe5')](_0x382186,_0x5d84('0xe6')));_0x271e2e[_0x5d84('0xc9')](_0x382186)[_0x5d84('0xaf')](loggerCatch(_0x5d84('0xee')));if(_0x382186[_0x5d84('0xef')]+_0x382186[_0x5d84('0xfc')]+_0x382186[_0x5d84('0xf0')]+_0x382186[_0x5d84('0xf1')]+_0x382186[_0x5d84('0xf2')]+_0x382186[_0x5d84('0xfd')]+_0x382186[_0x5d84('0xeb')]+_0x382186['countagentrejectretry']>=_0x3b69a0[_0x5d84('0xfe')]){_0x271e2e['stateGlobal'](_0x382186,_0x18b0e0,_0x2b759e,_0x5d84('0xf5'));}else{if(_0x382186['countmachineretry']>=_0x3b69a0[_0x5d84('0xf6')]){_0x271e2e['createStateFinal'](_0x382186,_0x18b0e0,_0x2b759e,_0x5d84('0xff'));}else{_0x271e2e['rescheduleContact']({'active':![],'countmachineretry':_0x382186[_0x5d84('0xeb')],'scheduledat':moment()[_0x5d84('0x100')](_0x3b69a0[_0x5d84('0x101')],_0x5d84('0xf8'))[_0x5d84('0x7a')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x382186['ContactId'],'ListId':_0x382186[_0x5d84('0xd1')],'VoiceQueueId':_0x382186[_0x5d84('0xd3')]||undefined,'CampaignId':_0x382186[_0x5d84('0xd4')]||undefined})[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x102')));_0x18b0e0({'reschedule':0x1});}}});}}};Dialer[_0x5d84('0x1b')][_0x5d84('0x35')]=function(_0x4cd97e){var _0x102f88=this['uniqueId'][_0x4cd97e['uniqueid']];var _0x2327c1=this;var _0x1ecced;if(_0x102f88&&_0x102f88[_0x5d84('0x4f')]===_0x5d84('0x7c')){delete this[_0x5d84('0x25')][_0x4cd97e['uniqueid']];this[_0x5d84('0xb3')](this['campaigns'][_0x102f88[_0x5d84('0xb1')]]);this[_0x5d84('0x21')][_0x102f88[_0x5d84('0xb1')]][_0x5d84('0x103')]+=0x1;_0x1ecced=new Hangup(_0x102f88,_0x4cd97e);this['createHistory'](_0x1ecced)[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x104')));this[_0x5d84('0xc7')](_0x1ecced)[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x105')));}if(_0x102f88&&_0x102f88[_0x5d84('0x4f')]!==_0x5d84('0x7c')&&isNotNull(this[_0x5d84('0x20')][_0x102f88['queue']][_0x5d84('0x106')])){delete this[_0x5d84('0x25')][_0x4cd97e[_0x5d84('0xe0')]];this[_0x5d84('0xb3')](this['voiceQueues'][_0x102f88[_0x5d84('0xb1')]]);this[_0x5d84('0x20')][_0x102f88[_0x5d84('0xb1')]]['outboundAnswerCallsDay']+=0x1;this['voiceQueues'][_0x102f88['queue']]['outboundAnswerAgiCallsDay']+=0x1;_0x1ecced=new Hangup(_0x102f88,_0x4cd97e);_0x1ecced[_0x5d84('0xe1')]=0x10;_0x1ecced[_0x5d84('0xa6')]=_0x5d84('0x107');_0x1ecced['membername']=_0x5d84('0x108');this[_0x5d84('0xc9')](_0x1ecced)[_0x5d84('0xaf')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0x5d84('0xc7')](_0x1ecced)[_0x5d84('0xaf')](loggerCatch('[syncHangupIvr]'));}if(_0x102f88&&_0x102f88[_0x5d84('0x4f')]!=='ivr'&&!isNotNull(this[_0x5d84('0x20')][_0x102f88[_0x5d84('0xb1')]][_0x5d84('0x106')])){delete this[_0x5d84('0x25')][_0x4cd97e[_0x5d84('0xe0')]];this[_0x5d84('0xb3')](this[_0x5d84('0x20')][_0x102f88['queue']]);this[_0x5d84('0x20')][_0x102f88['queue']]['outboundUnknownCallsDay']+=0x1;_0x1ecced=new Hangup(_0x102f88,_0x4cd97e);_0x1ecced[_0x5d84('0xe1')]=0xc;_0x1ecced[_0x5d84('0xa6')]=_0x4cd97e[_0x5d84('0x109')];_0x1ecced[_0x5d84('0xe3')]=_0x5d84('0x10a');this[_0x5d84('0xc9')](_0x1ecced)[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x104')));this[_0x5d84('0xc7')](_0x1ecced)[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x105')));}};Dialer[_0x5d84('0x1b')][_0x5d84('0x31')]=function(_0x163aa3){var _0x4c1421=this[_0x5d84('0x25')][_0x163aa3[_0x5d84('0xe0')]];var _0x28a07a=this;if(this[_0x5d84('0x20')][_0x163aa3[_0x5d84('0xb1')]]){if(_0x4c1421&&_0x4c1421[_0x5d84('0x4f')]!==_0x5d84('0x7c')){delete this[_0x5d84('0x25')][_0x163aa3['uniqueid']];this[_0x5d84('0x20')][_0x163aa3[_0x5d84('0xb1')]][_0x5d84('0x62')]+=0x1;var _0x175854=new AgentComplete(_0x4c1421,_0x163aa3);if(_0x163aa3[_0x5d84('0x10b')]==='agent'){_0x175854[_0x5d84('0x10c')]=this['voiceQueues'][_0x163aa3[_0x5d84('0xb1')]][_0x5d84('0x10d')]&&this[_0x5d84('0x20')][_0x163aa3[_0x5d84('0xb1')]]['dialAgiAfterHangupAgent']?moment()['format'](_0x5d84('0xf9')):undefined;}this[_0x5d84('0xc9')](_0x175854)['catch'](loggerCatch(_0x5d84('0x10e')));this[_0x5d84('0xc7')](_0x175854)['catch'](loggerCatch(_0x5d84('0x10f')));}}};Dialer[_0x5d84('0x1b')][_0x5d84('0x110')]=function(_0x53e8da){if(this[_0x5d84('0x20')][_0x53e8da[_0x5d84('0xb1')]]){if(this[_0x5d84('0x25')][_0x53e8da[_0x5d84('0xe0')]]&&this[_0x5d84('0x25')][_0x53e8da['uniqueid']][_0x5d84('0x4f')]!==_0x5d84('0x7c')){this[_0x5d84('0xb3')](this[_0x5d84('0x20')][_0x53e8da['queue']]);this['uniqueId'][_0x53e8da[_0x5d84('0xe0')]][_0x5d84('0x111')]=moment()[_0x5d84('0x7a')]('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer[_0x5d84('0x1b')][_0x5d84('0x112')]=function(_0x21a0df){this[_0x5d84('0xc9')](_0x21a0df)[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x10e')));this[_0x5d84('0xc7')](_0x21a0df)[_0x5d84('0xaf')](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));};Dialer[_0x5d84('0x1b')]['syncQueueCallerAbandon']=function(_0x274b16){var _0x266f5b=this[_0x5d84('0x25')][_0x274b16[_0x5d84('0xe0')]];var _0x5746de=this;if(this[_0x5d84('0x20')][_0x274b16[_0x5d84('0xb1')]]){if(_0x266f5b&&_0x266f5b[_0x5d84('0x4f')]!=='ivr'){delete this['uniqueId'][_0x274b16[_0x5d84('0xe0')]];this['updateOriginated'](this[_0x5d84('0x20')][_0x274b16[_0x5d84('0xb1')]]);_0x266f5b[_0x5d84('0x113')]=moment()[_0x5d84('0x7a')](_0x5d84('0xf9'));var _0x157327=new QueueCallerAbandon(_0x266f5b,_0x274b16);if(getSeconds(_0x266f5b[_0x5d84('0x113')],_0x266f5b[_0x5d84('0x114')])>=_0x266f5b['dialQueueTimeout']){this[_0x5d84('0x20')][_0x274b16[_0x5d84('0xb1')]][_0x5d84('0x6d')]+=0x1;this['voiceQueues'][_0x274b16['queue']][_0x5d84('0x68')]+=0x1;this[_0x5d84('0x20')][_0x274b16[_0x5d84('0xb1')]][_0x5d84('0x6f')]+=0x1;_0x157327[_0x5d84('0xe1')]=0xa;_0x157327[_0x5d84('0xa6')]=_0x5d84('0x115');_0x157327[_0x5d84('0x116')]=_0x5d84('0x117');_0x157327['agiafterat']=this[_0x5d84('0x20')][_0x274b16[_0x5d84('0xb1')]]['dialQueueProject2']?moment()[_0x5d84('0x7a')](_0x5d84('0xf9')):undefined;_0x157327[_0x5d84('0xf2')]+=0x1;_0x157327[_0x5d84('0xec')]+=0x1;if(_0x157327['countdropretry']>=this[_0x5d84('0x20')][_0x274b16[_0x5d84('0xb1')]]['dialDropMaxRetry']){this[_0x5d84('0x112')](_0x157327);}else{this['rescheduleContact']({'active':![],'countdropretry':_0x157327[_0x5d84('0xf2')],'scheduledat':moment()[_0x5d84('0x100')](this['voiceQueues'][_0x274b16['queue']][_0x5d84('0x118')],'minutes')[_0x5d84('0x7a')](_0x5d84('0xf9')),'ContactId':_0x266f5b[_0x5d84('0xd0')],'ListId':_0x266f5b['ListId'],'VoiceQueueId':_0x266f5b[_0x5d84('0xd3')]||undefined,'CampaignId':_0x266f5b[_0x5d84('0xd4')]||undefined})[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x119')));var _0x3e15a5=new History(_0x157327);_0x3e15a5[_0x5d84('0xe1')]=0xa;_0x3e15a5[_0x5d84('0xa6')]=_0x5d84('0x115');_0x3e15a5[_0x5d84('0x11a')]=moment()[_0x5d84('0x7a')](_0x5d84('0xf9'));_0x3e15a5['endtime']=_0x3e15a5[_0x5d84('0x11a')];_0x3e15a5[_0x5d84('0x11b')]=_0x157327[_0x5d84('0x11b')];_0x3e15a5[_0x5d84('0x11c')]=_0x157327['calleridnum'];this[_0x5d84('0xc9')](_0x3e15a5)[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x11d')));}}else{this[_0x5d84('0x20')][_0x274b16['queue']][_0x5d84('0x11e')]+=0x1;this[_0x5d84('0x20')][_0x274b16[_0x5d84('0xb1')]][_0x5d84('0x67')]+=0x1;_0x157327[_0x5d84('0xe1')]=0xb;_0x157327[_0x5d84('0xa6')]=_0x5d84('0x11f');_0x157327['dropreason']=_0x5d84('0x120');_0x157327[_0x5d84('0xfd')]+=0x1;_0x157327[_0x5d84('0xec')]+=0x1;if(_0x157327[_0x5d84('0xfd')]>=this[_0x5d84('0x20')][_0x274b16['queue']]['dialAbandonedMaxRetry']){this[_0x5d84('0x112')](_0x157327);}else{this[_0x5d84('0xbd')]({'active':![],'countabandonedretry':_0x157327[_0x5d84('0xfd')],'scheduledat':moment()[_0x5d84('0x100')](this[_0x5d84('0x20')][_0x274b16['queue']][_0x5d84('0x121')],_0x5d84('0xf8'))['format'](_0x5d84('0xf9')),'ContactId':_0x266f5b[_0x5d84('0xd0')],'ListId':_0x266f5b[_0x5d84('0xd1')],'VoiceQueueId':_0x266f5b[_0x5d84('0xd3')]||undefined,'CampaignId':_0x266f5b[_0x5d84('0xd4')]||undefined})[_0x5d84('0xaf')](loggerCatch('[rescheduleContact][Abandoned]'));var _0x3e15a5=new History(_0x157327);_0x3e15a5[_0x5d84('0xe1')]=0xb;_0x3e15a5['statedesc']=_0x5d84('0x11f');_0x3e15a5[_0x5d84('0x11a')]=moment()[_0x5d84('0x7a')](_0x5d84('0xf9'));_0x3e15a5[_0x5d84('0xa7')]=_0x3e15a5[_0x5d84('0x11a')];_0x3e15a5[_0x5d84('0x11b')]=_0x157327[_0x5d84('0x11b')];_0x3e15a5[_0x5d84('0x11c')]=_0x157327[_0x5d84('0x11c')];this[_0x5d84('0xc9')](_0x3e15a5)[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x122')));}}}}};Dialer[_0x5d84('0x1b')][_0x5d84('0x123')]=function(_0x38632b){if(this['actions'][_0x38632b[_0x5d84('0xe0')]]){this[_0x5d84('0xa9')][_0x38632b[_0x5d84('0xe0')]]['channel']=_0x38632b[_0x5d84('0xae')];}if(this[_0x5d84('0x25')][_0x38632b[_0x5d84('0xe0')]]){this[_0x5d84('0x25')][_0x38632b[_0x5d84('0xe0')]]['channel']=_0x38632b[_0x5d84('0xae')];}};Dialer[_0x5d84('0x1b')][_0x5d84('0x3a')]=function(_0x43d79b){if(strategy[this['voiceQueues'][this[_0x5d84('0xa9')][_0x43d79b[_0x5d84('0x124')]][_0x5d84('0xb1')]][_0x5d84('0x125')]]===_0x5d84('0x126')){if(this[_0x5d84('0xa9')][_0x43d79b[_0x5d84('0x124')]]&&_['isNil'](this[_0x5d84('0xa9')][_0x43d79b['actionid']][_0x5d84('0x127')])&&_0x43d79b[_0x5d84('0xd8')]==='1'&&_0x43d79b['paused']==='0'){if(this[_0x5d84('0x22')][_0x43d79b[_0x5d84('0x128')]]){if(!this[_0x5d84('0x22')][_0x43d79b[_0x5d84('0x128')]][_0x5d84('0x127')]){this['agents'][_0x43d79b[_0x5d84('0x128')]]['locked']=!![];this[_0x5d84('0xa9')][_0x43d79b[_0x5d84('0x124')]]['locked']=!![];this[_0x5d84('0xa9')][_0x43d79b['actionid']]['stateinterface']=_0x43d79b[_0x5d84('0x128')];}}}}else if((strategy[this[_0x5d84('0x20')][this[_0x5d84('0xa9')][_0x43d79b[_0x5d84('0x124')]][_0x5d84('0xb1')]][_0x5d84('0x125')]]||_0x5d84('0x1a'))===_0x5d84('0x1a')){if(this[_0x5d84('0xa9')][_0x43d79b[_0x5d84('0x124')]]){if(this[_0x5d84('0x22')][_0x43d79b[_0x5d84('0x128')]]){this[_0x5d84('0xa9')][_0x43d79b['actionid']][_0x5d84('0x128')]=_0x43d79b[_0x5d84('0x128')];if(_[_0x5d84('0xac')](this[_0x5d84('0x2a')][this[_0x5d84('0xa9')][_0x43d79b['actionid']][_0x5d84('0xb1')]])){this['queueBooked'][this[_0x5d84('0xa9')][_0x43d79b['actionid']][_0x5d84('0xb1')]]=[];}this['queueBooked'][this[_0x5d84('0xa9')][_0x43d79b[_0x5d84('0x124')]][_0x5d84('0xb1')]]['push'](_[_0x5d84('0x8b')](_[_0x5d84('0xcf')](this[_0x5d84('0xa9')][_0x43d79b['actionid']],[_0x5d84('0x129'),'stateinterface']),{'status':_0x43d79b[_0x5d84('0xd8')],'paused':_0x43d79b[_0x5d84('0x12a')]}));}}}};function unlockQueueStatus(_0x993b89,_0x100f65){setTimeout(function(){if(_['isUndefined'](_0x993b89[_0x5d84('0x12b')])){loggerBooked[_0x5d84('0x94')]('[unlockQueueStatus][undefined]',_0x100f65);}_0x993b89[_0x5d84('0x12b')]=!![];loggerBooked[_0x5d84('0x7e')]('[booked][unlockQueueStatus]',_0x100f65,JSON['stringify'](_[_0x5d84('0xcf')](_0x993b89,[_0x5d84('0x40'),_0x5d84('0x12b')])));},0x1f3);}Dialer[_0x5d84('0x1b')][_0x5d84('0x12c')]=function(_0x44b233){var _0x46ff6b=this;var _0x2ee525=_0x46ff6b[_0x5d84('0x20')][_0x46ff6b[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xb1')]];if(strategy[this[_0x5d84('0x20')][this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xb1')]][_0x5d84('0x125')]]===_0x5d84('0x126')){if(this['actions'][_0x44b233[_0x5d84('0x124')]]&&this['actions'][_0x44b233[_0x5d84('0x124')]][_0x5d84('0x128')]){this[_0x5d84('0x1f')][_0x5d84('0x12d')](this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]][_0x5d84('0x129')],this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]]['stateinterface'])[_0x5d84('0xaf')](function(_0x14b805){logger[_0x5d84('0x94')](_0x5d84('0x12e'),util[_0x5d84('0x95')](_0x14b805,{'showHidden':![],'depth':null}));})[_0x5d84('0x1e')](function(){_0x46ff6b[_0x5d84('0xb3')](_0x46ff6b[_0x5d84('0x20')][_0x46ff6b[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]]['queue']]);_0x46ff6b[_0x5d84('0x22')][_0x46ff6b[_0x5d84('0xa9')][_0x44b233['actionid']]['stateinterface']]['locked']=![];delete _0x46ff6b[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]];unlockQueueStatus(_0x2ee525);});}else{this[_0x5d84('0xb3')](this[_0x5d84('0x20')][this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xb1')]]);this['rescheduleContact']({'active':![],'ContactId':this['actions'][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xd0')],'ListId':this[_0x5d84('0xa9')][_0x44b233['actionid']][_0x5d84('0xd1')],'VoiceQueueId':this[_0x5d84('0xa9')][_0x44b233['actionid']][_0x5d84('0xd3')]||undefined,'CampaignId':this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xd4')]||undefined})['catch'](loggerCatch(_0x5d84('0x12f')));delete this[_0x5d84('0xa9')][_0x44b233['actionid']];unlockQueueStatus(_0x2ee525);}}else if((strategy[this[_0x5d84('0x20')][this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xb1')]]['strategy']]||_0x5d84('0x1a'))==='rrmemory'){var _0x1e9290;if(this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]]&&!_[_0x5d84('0x49')](this[_0x5d84('0x2a')][this[_0x5d84('0xa9')][_0x44b233['actionid']]['queue']])){if(this['queueBookedRR'][_0x46ff6b[_0x5d84('0xa9')][_0x44b233['actionid']]['queue']]){this[_0x5d84('0x2b')][_0x46ff6b[_0x5d84('0xa9')][_0x44b233['actionid']][_0x5d84('0xb1')]]=this[_0x5d84('0x2b')][this['actions'][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xb1')]]?this['queueBookedRR'][this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xb1')]]:this[_0x5d84('0x2a')][this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xb1')]]?this['queueBooked'][this[_0x5d84('0xa9')][_0x44b233['actionid']][_0x5d84('0xb1')]]['_rr']||0x0:0x0;}this[_0x5d84('0x2a')][this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xb1')]]['_rr']=this[_0x5d84('0x2b')][this[_0x5d84('0xa9')][_0x44b233['actionid']]['queue']];for(var _0x1be083=0x0;_0x1be083<this['queueBooked'][this[_0x5d84('0xa9')][_0x44b233['actionid']][_0x5d84('0xb1')]][_0x5d84('0x97')];_0x1be083+=0x1){_0x1e9290=rr(this[_0x5d84('0x2a')][this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xb1')]]);this[_0x5d84('0x2b')][_0x46ff6b[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xb1')]]=this[_0x5d84('0x2a')][this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xb1')]][_0x5d84('0x130')];if(_0x1e9290[_0x5d84('0xd8')]==='1'&&_0x1e9290[_0x5d84('0x12a')]==='0'){break;}}if(!_[_0x5d84('0xac')](_0x1e9290)){this['agents'][_0x1e9290[_0x5d84('0x128')]][_0x5d84('0x131')]=_[_0x5d84('0x3e')](this[_0x5d84('0x22')][_0x1e9290[_0x5d84('0x128')]][_0x5d84('0x131')])?!![]:this['agents'][_0x1e9290['stateinterface']][_0x5d84('0x131')];}loggerBooked['info'](_0x5d84('0x132'),_0x44b233[_0x5d84('0x124')],_0x5d84('0x133'),JSON[_0x5d84('0x4b')](_[_0x5d84('0xcf')](this[_0x5d84('0x22')][_0x1e9290['stateinterface']],[_0x5d84('0x40'),'unlockRR'])),_0x5d84('0x134'),JSON['stringify'](_0x1e9290[_0x5d84('0x129')]));if(!_[_0x5d84('0xac')](_0x1e9290)&&_0x1e9290['status']==='1'&&_0x1e9290[_0x5d84('0x12a')]==='0'&&this[_0x5d84('0x22')][_0x1e9290['stateinterface']][_0x5d84('0x131')]){this[_0x5d84('0x22')][_0x1e9290[_0x5d84('0x128')]][_0x5d84('0x131')]=![];this[_0x5d84('0x2a')][_0x46ff6b[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xb1')]]=[];this[_0x5d84('0x1f')]['run'](_0x1e9290[_0x5d84('0x129')],_0x1e9290[_0x5d84('0x128')])[_0x5d84('0xaf')](function(_0x380fc4){logger[_0x5d84('0x94')](_0x5d84('0x12e'),util[_0x5d84('0x95')](_0x380fc4,{'showHidden':![],'depth':null}));})['finally'](function(){_0x46ff6b[_0x5d84('0xb3')](_0x46ff6b[_0x5d84('0x20')][_0x46ff6b[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]]['queue']]);setTimeout(function(){_0x46ff6b[_0x5d84('0x22')][_0x1e9290['stateinterface']][_0x5d84('0x131')]=!![];loggerBooked[_0x5d84('0x7e')]('[booked][RR][finaly]',_0x44b233[_0x5d84('0x124')],_0x5d84('0x133'),JSON[_0x5d84('0x4b')](_[_0x5d84('0xcf')](_0x46ff6b['agents'][_0x1e9290[_0x5d84('0x128')]],['name',_0x5d84('0x131')])),_0x5d84('0x134'),JSON[_0x5d84('0x4b')](_0x1e9290[_0x5d84('0x129')]));},0xc7);delete _0x46ff6b['actions'][_0x44b233['actionid']];unlockQueueStatus(_0x2ee525,_0x44b233[_0x5d84('0x124')]);});}else{loggerBooked['info'](_0x5d84('0x135'));this[_0x5d84('0xb3')](this[_0x5d84('0x20')][this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xb1')]]);this[_0x5d84('0xbd')]({'active':![],'ContactId':this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xd0')],'ListId':this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xd1')],'VoiceQueueId':this[_0x5d84('0xa9')][_0x44b233['actionid']][_0x5d84('0xd3')]||undefined,'CampaignId':this['actions'][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xd4')]||undefined})['catch'](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]];unlockQueueStatus(_0x2ee525);}}else{loggerBooked[_0x5d84('0x7e')](_0x5d84('0x136'));this[_0x5d84('0xb3')](this['voiceQueues'][this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xb1')]]);this[_0x5d84('0xbd')]({'active':![],'ContactId':this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xd0')],'ListId':this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xd1')],'VoiceQueueId':this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xd4')]||undefined})[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x137')));delete this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]];unlockQueueStatus(_0x2ee525);}}else{loggerBooked[_0x5d84('0x7e')](_0x5d84('0x138'));this[_0x5d84('0xb3')](this[_0x5d84('0x20')][this['actions'][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xb1')]]);this['rescheduleContact']({'active':![],'ContactId':this['actions'][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xd0')],'ListId':this['actions'][_0x44b233['actionid']]['ListId'],'VoiceQueueId':this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xd3')]||undefined,'CampaignId':this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]][_0x5d84('0xd4')]||undefined})[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x139')));delete this[_0x5d84('0xa9')][_0x44b233[_0x5d84('0x124')]];unlockQueueStatus(_0x2ee525);}};Dialer['prototype'][_0x5d84('0x3c')]=function(){var _0x56c754=this;setInterval(function(){_0x56c754[_0x5d84('0x13a')]();},0x3e8);};Dialer[_0x5d84('0x1b')][_0x5d84('0x13b')]=function(_0x406f3c){var _0x4ee15e=this;return function(){if(!_0x4ee15e['isTrunkReachable'](_0x406f3c[_0x5d84('0x77')])){if(!_0x4ee15e[_0x5d84('0xd7')](_0x406f3c[_0x5d84('0x13c')])){_0x406f3c['message']=_0x5d84('0x13d');throw _0x406f3c['name']+_0x5d84('0x13e');}}};};Dialer['prototype']['checkIfTime']=function(_0x245f8b,_0x194705,_0x4853e2,_0x3afada){var _0x3fb0ca=this;return function(){var _0x4dfe1b=!![];return _0x3fb0ca[_0x5d84('0x13f')](_0x245f8b,_0x194705,_0x4853e2,_0x3afada,_0x4dfe1b);};};Dialer[_0x5d84('0x1b')][_0x5d84('0x140')]=function(_0x2d8246,_0x3cabce,_0x3aeb72,_0x2dfbad){var _0x254cfa=this;return function(){var _0x1e7a93=![];return _0x254cfa[_0x5d84('0x13f')](_0x2d8246[_0x5d84('0x48')],_0x3cabce,_0x3aeb72,_0x2dfbad,_0x1e7a93);};};Dialer[_0x5d84('0x1b')][_0x5d84('0x13f')]=function(_0x1b42d4,_0x585e8a,_0x42a06f,_0x495a9c,_0x1fcdfb){var _0x1a95c4=[];return new BPromise(function(_0x312f6c,_0x4cad22){if(!isNotNull(_0x1b42d4)){_0x495a9c[_0x5d84('0x42')]='INTERVAL_IS_NULL';return _0x4cad22(msgResponse('ifTime',_0x5d84('0x141'),_0x42a06f+_0x5d84('0x142')));}if(_[_0x5d84('0x49')](_0x1b42d4)){_0x495a9c[_0x5d84('0x42')]='INTERVAL_IS_EMPTY';return _0x4cad22(msgResponse(_0x5d84('0x13f'),_0x5d84('0x141'),_0x42a06f+_0x5d84('0x143')));}if(_0x585e8a&&_[_0x5d84('0x3e')](config[_0x5d84('0x144')][_0x585e8a])){_0x495a9c[_0x5d84('0x42')]=_0x5d84('0x145');return _0x4cad22(msgResponse('ifTime','Failure',_0x42a06f+_0x5d84('0x146')+_0x585e8a));}if(_[_0x5d84('0x147')](_0x1b42d4)){for(var _0x5826d9=0x0;_0x5826d9<_0x1b42d4[_0x5d84('0x97')];_0x5826d9+=0x1){_0x1a95c4[_0x5d84('0x148')](ami[_0x5d84('0xad')]({'action':'command','command':util[_0x5d84('0x7a')](_0x5d84('0x149'),_0x1b42d4[_0x5826d9]['interval'],!_[_0x5d84('0x3e')](config[_0x5d84('0x144')][_0x585e8a])?_0x585e8a:'')})[_0x5d84('0xb7')](function(_0xb70614){return _0xb70614[_0x5d84('0x14a')]['indexOf'](_0x5d84('0x14b'))>=0x0;})['catch'](myreject(_0x4cad22)));}}else{_0x1a95c4['push'](ami[_0x5d84('0xad')]({'action':_0x5d84('0x14c'),'command':util[_0x5d84('0x7a')]('iftime\x20%s,%s',_0x1b42d4,!_[_0x5d84('0x3e')](config[_0x5d84('0x144')][_0x585e8a])?_0x585e8a:'')})['then'](function(_0x18c221){return _0x18c221['content']['indexOf'](_0x5d84('0x14b'))>=0x0;})[_0x5d84('0xaf')](myreject(_0x4cad22)));}BPromise[_0x5d84('0x14d')](_0x1a95c4)['then'](function(_0x28fe8c){var _0x2bf53e=_[_0x5d84('0x14e')](_0x28fe8c);if(_0x2bf53e){return _0x312f6c(_0x2bf53e);}else{_0x495a9c[_0x5d84('0x42')]=_0x1fcdfb?_0x5d84('0x14f'):'INTERVAL_IS_OVERTIME';return _0x4cad22(msgResponse(_0x5d84('0x150'),'Failure','Global:\x20'+_0x1fcdfb+'\x20'+_0x42a06f+_0x5d84('0x151')+util[_0x5d84('0x95')](_0x1b42d4,{'showHidden':![],'depth':null})+_0x5d84('0x152')+_0x585e8a));}})[_0x5d84('0xaf')](function(_0x417dbe){return _0x4cad22(msgResponse(_0x5d84('0x13f'),_0x5d84('0x141'),JSON[_0x5d84('0x4b')](_0x417dbe)));});});};Dialer[_0x5d84('0x1b')][_0x5d84('0x153')]=function(_0xf2d8ee){var _0x487af3=this;return function(){switch(_0xf2d8ee[_0x5d84('0x5c')]){case _0x5d84('0x154'):freeVariablesPredictive(_0xf2d8ee);_0x487af3[_0x5d84('0x155')](_0xf2d8ee,0x1);break;case'power':freeVariablesPredictive(_0xf2d8ee);_0x487af3['handlePower'](_0xf2d8ee,_0xf2d8ee[_0x5d84('0x156')]);break;case _0x5d84('0xb'):_0x487af3[_0x5d84('0xb')](_0xf2d8ee);break;case _0x5d84('0xa'):freeVariablesPredictive(_0xf2d8ee);_0x487af3[_0x5d84('0x155')](_0xf2d8ee,0x1);break;default:freeVariablesPredictive(_0xf2d8ee);logger[_0x5d84('0x94')]('Queue',_0xf2d8ee['name'],_0x5d84('0x157'));}};};Dialer[_0x5d84('0x1b')][_0x5d84('0x158')]=function(_0x59666f){var _0x22f02b=this;return function(){_0x22f02b[_0x5d84('0x159')](_0x59666f);};};Dialer['prototype'][_0x5d84('0x33')]=function(_0x1eb330){var _0x1dce88=this;if(isNotPreview(_0x1eb330[_0x5d84('0x5c')])){if(isVoiceQueueOutbound(_0x1eb330[_0x5d84('0x4f')])&&isActive(_0x1eb330[_0x5d84('0x5b')])){_0x1eb330[_0x5d84('0xa0')]=!![];BPromise[_0x5d84('0xb6')]()[_0x5d84('0xb7')](checkIsLoggedIn(_0x1eb330,_0x1eb330[_0x5d84('0x52')]))[_0x5d84('0xb7')](checkIsActive(_0x1eb330,_0x1eb330[_0x5d84('0x5b')]))['then'](checkInterval(_0x1eb330))[_0x5d84('0xb7')](_0x1dce88[_0x5d84('0x13b')](_0x1eb330))['then'](_0x1dce88['checkIfTime'](_0x1eb330['dialGlobalInterval'],_0x1eb330[_0x5d84('0x15a')],_0x1eb330['name'],_0x1eb330))[_0x5d84('0xb7')](_0x1dce88[_0x5d84('0x140')](_0x1eb330[_0x5d84('0x45')],_0x1eb330[_0x5d84('0x15a')],_0x1eb330[_0x5d84('0x40')],_0x1eb330))['then'](_0x1dce88[_0x5d84('0x153')](_0x1eb330))[_0x5d84('0xaf')](loggerCatchQueueSummary('[syncQueueSummary]',_0x1eb330));}else{notSendMessagesQueue(_0x1eb330);}}else{freeVariablesPredictive(_0x1eb330);}};Dialer[_0x5d84('0x1b')][_0x5d84('0x13a')]=function(){var _0x1021d1=this;var _0x240d01;for(var _0x105308 in this[_0x5d84('0x21')]){if(typeof this['campaigns'][_0x105308]!==_0x5d84('0xab')){_0x240d01=this[_0x5d84('0x21')][_0x105308];if(isCampaignIvr(_0x240d01[_0x5d84('0x4f')])&&isActive(_0x240d01[_0x5d84('0x78')])){_0x240d01['sendMessageOneNotActive']=!![];BPromise[_0x5d84('0xb6')]()[_0x5d84('0xb7')](checkIsActive(_0x240d01,_0x240d01[_0x5d84('0x78')]))[_0x5d84('0xb7')](checkInterval(_0x240d01))[_0x5d84('0xb7')](_0x1021d1[_0x5d84('0x13b')](_0x240d01))[_0x5d84('0xb7')](_0x1021d1[_0x5d84('0x15b')](_0x240d01[_0x5d84('0x15c')],_0x240d01[_0x5d84('0x15a')],_0x240d01[_0x5d84('0x40')],_0x240d01))[_0x5d84('0xb7')](_0x1021d1['checkIfTimeIntervals'](_0x240d01['Interval'],_0x240d01[_0x5d84('0x15a')],_0x240d01[_0x5d84('0x40')],_0x240d01))['then'](_0x1021d1[_0x5d84('0x158')](_0x240d01))['catch'](loggerCatchQueueSummary(_0x5d84('0x15d'),_0x240d01));}else{notSendMessagesCampaign(_0x240d01);}}}};function getCallerIdRandom(_0x435960,_0xaea549){var _0x3f08b6;var _0x1b5c4b;var _0x4fb507;if(_0xaea549<=0x0){_0xaea549=0x1;}_0x3f08b6=new RegExp(_0x5d84('0x15e')+_0xaea549+'}$');_0x1b5c4b=Math['pow'](0xa,_0xaea549-0x1);_0x4fb507=Math[_0x5d84('0x15f')](0xa,_0xaea549)-0x1;return util['format']('%s',_['replace'](_0x435960,_0x3f08b6,_[_0x5d84('0x160')](_0x1b5c4b,_0x4fb507)));}function extractCalleridName(_0x5b7a0f){var _0x357b01=_0x5b7a0f[_0x5d84('0x161')](/"(.*?)"/);return _0x357b01?_0x357b01[0x1]:_0x5b7a0f;}function extractCalleridNumber(_0x1a060e){var _0x26ef1b=_0x1a060e['match'](/<(.*?)>/);return _0x26ef1b?_0x26ef1b[0x1]:_0x1a060e;}Dialer['prototype']['actionOriginate']=function(_0x96fc3c,_0x3c5ee6){var _0x240a50=this;var _0x3f05b0=uuid['v4']();this[_0x5d84('0xa9')][_0x3f05b0]=new Action(_0x96fc3c,_0x3c5ee6,_0x3f05b0);return new BPromise(function(_0x1dda41,_0x5cd6ac){if(_[_0x5d84('0x3e')](_0x96fc3c)&&typeof _0x96fc3c!==_0x5d84('0x162')){return _0x5cd6ac(msgResponse('originate','Failure',_0x5d84('0x163')));}if(_[_0x5d84('0x3e')](_0x3c5ee6[_0x5d84('0x164')]['phone'])||_0x3c5ee6[_0x5d84('0x164')]['phone']===null){return _0x5cd6ac(msgResponse('originate',_0x5d84('0x141'),_0x5d84('0x165')));}var _0x3f640a={'XMD-CALLERID':_0x240a50[_0x5d84('0xa9')][_0x3f05b0][_0x5d84('0x166')](),'XMD-AGI':_0x96fc3c['dialQueueProject']?util[_0x5d84('0x7a')](_0x5d84('0x167'),ipAgi,_0x96fc3c[_0x5d84('0x106')]):_0x5d84('0x168'),'XMD-AGIAFTER':_0x96fc3c['dialQueueProject2']?util[_0x5d84('0x7a')]('\x22agi://%s/square,%s\x22',ipAgi,_0x96fc3c['dialQueueProject2']):'NONE','XMD-QUEUE':_0x96fc3c['type']===_0x5d84('0x91')?util['format'](_0x5d84('0x169'),_0x96fc3c[_0x5d84('0x40')],_0x96fc3c['dialQueueOptions']||'',_0x96fc3c[_0x5d84('0x16a')]?'c':'',_0x96fc3c[_0x5d84('0x16b')]||0x3):_0x5d84('0x168'),'XMD-CONTACTID':_0x3c5ee6[_0x5d84('0xd0')],'XMD-CDRTYPE':_0x5d84('0x8'),'CALLERID(all)':_0x240a50[_0x5d84('0xa9')][_0x3f05b0][_0x5d84('0x166')](),'XMD-AMD':_0x96fc3c[_0x5d84('0xdd')]?_0x5d84('0x16c'):'NONE','XMD-DESTINATION':'xcally-motion-dialer'};if(_0x96fc3c[_0x5d84('0xdd')]){_0x3f640a[_0x5d84('0x16d')]=_0x96fc3c[_0x5d84('0x16e')]||0x9c4;_0x3f640a[_0x5d84('0x16f')]=_0x96fc3c[_0x5d84('0x170')]||0x5dc;_0x3f640a['XMD-AMDAFTERGREETINGSILENCE']=_0x96fc3c[_0x5d84('0x171')]||0x320;_0x3f640a[_0x5d84('0x172')]=_0x96fc3c[_0x5d84('0x173')]||0x1388;_0x3f640a[_0x5d84('0x174')]=_0x96fc3c[_0x5d84('0x175')]||0x64;_0x3f640a[_0x5d84('0x176')]=_0x96fc3c[_0x5d84('0x177')]||0x32;_0x3f640a['XMD-AMDMAXIMUMNUMBEROFWORDS']=_0x96fc3c[_0x5d84('0x178')]||0x3;_0x3f640a[_0x5d84('0x179')]=_0x96fc3c[_0x5d84('0x17a')]||0x100;_0x3f640a[_0x5d84('0x17b')]=_0x96fc3c[_0x5d84('0x17c')]||0x1388;}if(_0x96fc3c['type']===_0x5d84('0x91')){_0x3f640a[_0x5d84('0x17d')]=_0x3c5ee6[_0x5d84('0xd3')];}else{_0x3f640a[_0x5d84('0x17e')]=_0x3c5ee6['CampaignId'];}for(var _0x555e1e in _0x3c5ee6[_0x5d84('0x164')]){if(typeof _0x3c5ee6[_0x5d84('0x164')][_0x555e1e]!==_0x5d84('0xab')){if(isNotNull(_0x3c5ee6[_0x5d84('0x164')][_0x555e1e])&&_0x555e1e!=='id'&&_0x555e1e!==_0x5d84('0x17f')&&_0x555e1e!==_0x5d84('0x180')&&_0x555e1e!==_0x5d84('0x181')){_0x3f640a[util[_0x5d84('0x7a')](_0x5d84('0x182'),_0x5d84('0x183'),_['toUpper'](_0x555e1e))]=_0x3c5ee6[_0x5d84('0x164')][_0x555e1e];}}}var _0x265c7e=_0x240a50[_0x5d84('0xd7')](_0x96fc3c[_0x5d84('0x77')])?getCallerId(_0x96fc3c[_0x5d84('0x77')][_0x5d84('0x79')],_0x96fc3c[_0x5d84('0x5d')],_0x96fc3c['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x96fc3c[_0x5d84('0x5e')],_0x96fc3c[_0x5d84('0x184')]):_0x96fc3c[_0x5d84('0x5e')]):getCallerId(_[_0x5d84('0xac')](_0x96fc3c['TrunkBackup'])?_0x96fc3c[_0x5d84('0x77')][_0x5d84('0x79')]:_0x96fc3c[_0x5d84('0x13c')][_0x5d84('0x79')],_0x96fc3c['dialOriginateCallerIdName'],_0x96fc3c['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x96fc3c[_0x5d84('0x5e')],_0x96fc3c[_0x5d84('0x184')]):_0x96fc3c[_0x5d84('0x5e')]);if(_0x265c7e){_0x3f640a['XMD-ORIGINATECALLERIDNAME']=_0x240a50[_0x5d84('0xa9')][_0x3f05b0][_0x5d84('0x185')]=extractCalleridName(_0x265c7e);_0x3f640a[_0x5d84('0x186')]=_0x240a50[_0x5d84('0xa9')][_0x3f05b0][_0x5d84('0x187')]=extractCalleridNumber(_0x265c7e);}return ami[_0x5d84('0xad')]({'actionid':_0x3f05b0,'action':'originate','channel':_0x240a50[_0x5d84('0xd7')](_0x96fc3c[_0x5d84('0x77')])?util[_0x5d84('0x7a')](_0x5d84('0x188'),_0x96fc3c['Trunk'][_0x5d84('0x40')],isNotNull(_0x96fc3c['dialPrefix'])?_0x96fc3c[_0x5d84('0x60')][_0x5d84('0x189')]()||'':'',_0x96fc3c[_0x5d84('0x18a')]>0x0?_0x3c5ee6[_0x5d84('0x164')][_0x5d84('0x18b')][_0x5d84('0x18c')](_0x96fc3c[_0x5d84('0x18a')]):_0x3c5ee6['Contact']['phone']):util[_0x5d84('0x7a')](_0x5d84('0x188'),_[_0x5d84('0xac')](_0x96fc3c[_0x5d84('0x13c')])?_0x96fc3c[_0x5d84('0x77')]['name']:_0x96fc3c[_0x5d84('0x13c')][_0x5d84('0x40')],isNotNull(_0x96fc3c[_0x5d84('0x60')])?_0x96fc3c['dialPrefix'][_0x5d84('0x189')]()||'':'',_0x96fc3c[_0x5d84('0x18a')]>0x0?_0x3c5ee6[_0x5d84('0x164')][_0x5d84('0x18b')][_0x5d84('0x18c')](_0x96fc3c[_0x5d84('0x18a')]):_0x3c5ee6['Contact'][_0x5d84('0x18b')]),'callerid':_0x265c7e,'Exten':_0x5d84('0xdc'),'Context':'from-sip','Priority':'1','variable':_0x3f640a,'timeout':(_0x96fc3c[_0x5d84('0x5f')]||0x1e)*0x3e8,'async':!![],'channelid':_0x3f05b0})[_0x5d84('0xb7')](function(_0x4f2294){return _0x1dda41(_0x4f2294);})[_0x5d84('0xaf')](function(_0x15a894){_0x96fc3c[_0x5d84('0x69')]+=0x1;var _0x59aa50=new History(_0x240a50[_0x5d84('0xa9')][_0x3f05b0]);logger[_0x5d84('0x94')](util[_0x5d84('0x7a')](_0x5d84('0x18d'),JSON[_0x5d84('0x4b')](_0x15a894)));_0x59aa50[_0x5d84('0xe1')]=0xe;_0x59aa50[_0x5d84('0xa6')]=_0x5d84('0x18e');_0x59aa50[_0x5d84('0x11a')]=moment()[_0x5d84('0x7a')](_0x5d84('0xf9'));_0x59aa50[_0x5d84('0xa7')]=_0x59aa50[_0x5d84('0x11a')];_0x240a50[_0x5d84('0xc9')](_0x59aa50)['catch'](loggerCatch(_0x5d84('0x18f')));_0x240a50[_0x5d84('0xc7')](_0x59aa50)[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x18f')))[_0x5d84('0x1e')](function(){delete _0x240a50[_0x5d84('0xa9')][_0x3f05b0];return _0x5cd6ac(msgResponse(_0x5d84('0x190'),_0x5d84('0x4a'),'originate\x20action\x20Error'));});});});};Dialer[_0x5d84('0x1b')][_0x5d84('0x2e')]=function(_0x267142){var _0x3bc023=this[_0x5d84('0xa9')][_0x267142[_0x5d84('0x124')]];if(_0x3bc023){delete this['actions'][_0x267142[_0x5d84('0x124')]];_0x3bc023[_0x5d84('0x114')]=moment()[_0x5d84('0x7a')](_0x5d84('0xf9'));var _0x4885ec=_0x3bc023[_0x5d84('0x4f')]===_0x5d84('0x7c')?this[_0x5d84('0x21')][_0x3bc023[_0x5d84('0xb1')]]:this['voiceQueues'][_0x3bc023['getQueue']()];if(!this[_0x5d84('0x191')](_0x267142['response'])){this[_0x5d84('0xb3')](_0x4885ec);return this[_0x5d84('0x192')](_0x3bc023,_0x4885ec,_0x267142)['catch'](loggerCatch(_0x5d84('0x193')));}this['uniqueId'][_0x267142[_0x5d84('0xe0')]]=_0x3bc023;}};Dialer[_0x5d84('0x1b')][_0x5d84('0x194')]=function(_0x15e476,_0x5d1606,_0x68eb9d){var _0x1302bc=new History(_0x5d1606);if(_0x1302bc[_0x5d84('0xef')]+_0x1302bc['countcongestionretry']+_0x1302bc[_0x5d84('0xf0')]+_0x1302bc[_0x5d84('0xf1')]+_0x1302bc[_0x5d84('0xf2')]+_0x1302bc[_0x5d84('0xfd')]+_0x1302bc['countmachineretry']+_0x1302bc[_0x5d84('0xf3')]>=_0x68eb9d[_0x5d84('0xfe')]-0x1){return!![];}switch(_0x15e476){case 0x3:if(_0x1302bc['countnoanswerretry']>=_0x68eb9d['dialNoAnswerMaxRetry']-0x1){return!![];}this[_0x5d84('0xbd')]({'active':![],'countnoanswerretry':_0x1302bc['countnoanswerretry']+=0x1,'scheduledat':moment()[_0x5d84('0x100')](_0x68eb9d[_0x5d84('0x195')],_0x5d84('0xf8'))[_0x5d84('0x7a')](_0x5d84('0xf9')),'ContactId':_0x1302bc['ContactId'],'ListId':_0x1302bc[_0x5d84('0xd1')],'VoiceQueueId':_0x1302bc[_0x5d84('0xd3')]||undefined,'CampaignId':_0x1302bc[_0x5d84('0xd4')]||undefined})[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x196')));break;case 0x5:if(_0x1302bc[_0x5d84('0xef')]>=_0x68eb9d['dialBusyMaxRetry']-0x1){return!![];}this[_0x5d84('0xbd')]({'active':![],'countbusyretry':_0x1302bc[_0x5d84('0xef')]+=0x1,'scheduledat':moment()[_0x5d84('0x100')](_0x68eb9d[_0x5d84('0x197')],'minutes')[_0x5d84('0x7a')](_0x5d84('0xf9')),'ContactId':_0x1302bc[_0x5d84('0xd0')],'ListId':_0x1302bc[_0x5d84('0xd1')],'VoiceQueueId':_0x1302bc['VoiceQueueId']||undefined,'CampaignId':_0x1302bc[_0x5d84('0xd4')]||undefined})[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x198')));break;case 0x8:if(_0x1302bc[_0x5d84('0xfc')]>=_0x68eb9d[_0x5d84('0x199')]-0x1){return!![];}this[_0x5d84('0xbd')]({'active':![],'countcongestionretry':_0x1302bc[_0x5d84('0xfc')]+=0x1,'scheduledat':moment()[_0x5d84('0x100')](_0x68eb9d[_0x5d84('0x19a')],_0x5d84('0xf8'))[_0x5d84('0x7a')](_0x5d84('0xf9')),'ContactId':_0x1302bc[_0x5d84('0xd0')],'ListId':_0x1302bc[_0x5d84('0xd1')],'VoiceQueueId':_0x1302bc['VoiceQueueId']||undefined,'CampaignId':_0x1302bc['CampaignId']||undefined})[_0x5d84('0xaf')](loggerCatch('[rescheduleContact]\x20[Congestion]'));break;case 0x0:if(_0x1302bc[_0x5d84('0xf1')]>=_0x68eb9d['dialNoSuchNumberMaxRetry']-0x1){return!![];}else{this[_0x5d84('0xbd')]({'active':![],'countnosuchnumberretry':_0x1302bc['countnosuchnumberretry']+=0x1,'scheduledat':moment()[_0x5d84('0x100')](_0x68eb9d['dialNoSuchNumberRetryFrequency'],_0x5d84('0xf8'))[_0x5d84('0x7a')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x1302bc[_0x5d84('0xd0')],'ListId':_0x1302bc['ListId'],'VoiceQueueId':_0x1302bc[_0x5d84('0xd3')]||undefined,'CampaignId':_0x1302bc['CampaignId']||undefined})[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x19b')));}break;case 0xa:if(_0x1302bc[_0x5d84('0xf2')]>=_0x68eb9d['dialDropMaxRetry']-0x1){return!![];}this[_0x5d84('0xbd')]({'active':![],'countdropretry':_0x1302bc[_0x5d84('0xf2')]+=0x1,'scheduledat':moment()['add'](_0x68eb9d['dialDropRetryFrequency'],_0x5d84('0xf8'))[_0x5d84('0x7a')](_0x5d84('0xf9')),'ContactId':_0x1302bc[_0x5d84('0xd0')],'ListId':_0x1302bc[_0x5d84('0xd1')],'VoiceQueueId':_0x1302bc[_0x5d84('0xd3')]||undefined,'CampaignId':_0x1302bc[_0x5d84('0xd4')]||undefined})[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x119')));break;case 0xb:if(_0x1302bc['countabandonedretry']>=_0x68eb9d[_0x5d84('0x19c')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x1302bc[_0x5d84('0xfd')]+=0x1,'scheduledat':moment()[_0x5d84('0x100')](_0x68eb9d[_0x5d84('0x121')],_0x5d84('0xf8'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x1302bc[_0x5d84('0xd0')],'ListId':_0x1302bc[_0x5d84('0xd1')],'VoiceQueueId':_0x1302bc[_0x5d84('0xd3')]||undefined,'CampaignId':_0x1302bc[_0x5d84('0xd4')]||undefined})[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x19d')));break;case 0x13:if(_0x1302bc[_0x5d84('0xeb')]>=_0x68eb9d[_0x5d84('0xf6')]-0x1){return!![];}this[_0x5d84('0xbd')]({'active':![],'countmachineretry':_0x1302bc[_0x5d84('0xeb')]+=0x1,'scheduledat':moment()[_0x5d84('0x100')](_0x68eb9d[_0x5d84('0x101')],_0x5d84('0xf8'))['format'](_0x5d84('0xf9')),'ContactId':_0x1302bc['ContactId'],'ListId':_0x1302bc['ListId'],'VoiceQueueId':_0x1302bc['VoiceQueueId']||undefined,'CampaignId':_0x1302bc[_0x5d84('0xd4')]||undefined})[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x102')));break;case 0x14:if(_0x1302bc[_0x5d84('0xf3')]>=_0x68eb9d[_0x5d84('0x19e')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countagentrejectretry':_0x1302bc['countagentrejectretry']+=0x1,'scheduledat':moment()[_0x5d84('0x100')](_0x68eb9d['dialAgentRejectRetryFrequency'],_0x5d84('0xf8'))[_0x5d84('0x7a')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x1302bc['ContactId'],'ListId':_0x1302bc[_0x5d84('0xd1')],'VoiceQueueId':_0x1302bc[_0x5d84('0xd3')]||undefined,'CampaignId':_0x1302bc['CampaignId']||undefined})[_0x5d84('0xaf')](loggerCatch('[rescheduleContact][AgentReject]'));break;default:return!![];}};Dialer[_0x5d84('0x1b')]['callProgressDetecting']=function(_0x325903,_0x4071a0,_0x5c2758){var _0x43da99=this;var _0x45fc62=new History(_0x325903);return new BPromise(function(_0x331e39,_0x4bd8e7){if(_[_0x5d84('0x3e')](_0x4071a0)&&typeof _0x4071a0!=='object'){return _0x4bd8e7(msgResponse(_0x5d84('0x19f'),'Failure','entity\x20is\x20undefine'));}if(_[_0x5d84('0x3e')](_0x5c2758)&&typeof _0x5c2758!=='object'){return _0x4bd8e7(msgResponse(_0x5d84('0x19f'),_0x5d84('0x141'),_0x5d84('0x1a0')));}switch(_0x5c2758['reason']){case'0':_0x4071a0['outboundNoSuchCallsDay']+=0x1;_0x45fc62[_0x5d84('0xe1')]=0x0;_0x45fc62[_0x5d84('0xa6')]=_0x5d84('0x1a1');_0x45fc62['countnosuchnumberretry']+=0x1;_0x45fc62['countglobal']+=0x1;ami[_0x5d84('0x4e')]('custom:agentnosuchnumber',ut[_0x5d84('0xe5')](_0x325903,'nosuchnumber'));_0x43da99[_0x5d84('0xc9')](_0x45fc62)[_0x5d84('0xaf')](loggerCatch(_0x5d84('0xee')));if(_0x43da99[_0x5d84('0x194')](0x0,_0x325903,_0x4071a0)){if(_0x45fc62[_0x5d84('0xf1')]>=_0x4071a0[_0x5d84('0x1a2')]){_0x43da99[_0x5d84('0xf7')](_0x45fc62,_0x331e39,_0x4bd8e7,_0x5d84('0x1a3'));}else{_0x43da99[_0x5d84('0xf4')](_0x45fc62,_0x331e39,_0x4bd8e7,_0x5d84('0x1a3'));}}break;case'3':_0x4071a0['outboundNoAnswerCallsDay']+=0x1;_0x45fc62['state']=0x3;_0x45fc62[_0x5d84('0xa6')]=_0x5d84('0x1a4');_0x45fc62[_0x5d84('0xf0')]+=0x1;_0x45fc62[_0x5d84('0xec')]+=0x1;ami[_0x5d84('0x4e')](_0x5d84('0x1a5'),ut[_0x5d84('0xe5')](_0x325903,_0x5d84('0x1a6')));_0x43da99['createHistory'](_0x45fc62)[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x1a7')));if(_0x43da99['checkRetriveMax'](0x3,_0x325903,_0x4071a0)){if(_0x45fc62[_0x5d84('0xf0')]>=_0x4071a0[_0x5d84('0x1a8')]){_0x43da99[_0x5d84('0xf7')](_0x45fc62,_0x331e39,_0x4bd8e7,_0x5d84('0x1a9'));}else{_0x43da99['stateGlobal'](_0x45fc62,_0x331e39,_0x4bd8e7,_0x5d84('0x1a9'));}}break;case'5':_0x4071a0['outboundBusyCallsDay']+=0x1;_0x45fc62[_0x5d84('0xe1')]=0x5;_0x45fc62[_0x5d84('0xa6')]='Busy';_0x45fc62[_0x5d84('0xef')]+=0x1;_0x45fc62[_0x5d84('0xec')]+=0x1;ami[_0x5d84('0x4e')](_0x5d84('0x1aa'),ut[_0x5d84('0xe5')](_0x325903,_0x5d84('0x1ab')));_0x43da99[_0x5d84('0xc9')](_0x45fc62)['catch'](loggerCatch(_0x5d84('0x1ac')));if(_0x43da99[_0x5d84('0x194')](0x5,_0x325903,_0x4071a0)){if(_0x45fc62[_0x5d84('0xef')]>=_0x4071a0[_0x5d84('0x1ad')]){_0x43da99[_0x5d84('0xf7')](_0x45fc62,_0x331e39,_0x4bd8e7,_0x5d84('0x1ae'));}else{_0x43da99[_0x5d84('0xf4')](_0x45fc62,_0x331e39,_0x4bd8e7,'reason\x205\x20busy');}}break;case'8':_0x4071a0[_0x5d84('0x65')]+=0x1;_0x45fc62['state']=0x8;_0x45fc62[_0x5d84('0xa6')]=_0x5d84('0x1af');_0x45fc62[_0x5d84('0xfc')]+=0x1;_0x45fc62['countglobal']+=0x1;ami[_0x5d84('0x4e')](_0x5d84('0x1b0'),ut[_0x5d84('0xe5')](_0x325903,_0x5d84('0x1b1')));_0x43da99['createHistory'](_0x45fc62)['catch'](loggerCatch(_0x5d84('0x1b2')));if(_0x43da99[_0x5d84('0x194')](0x8,_0x325903,_0x4071a0)){if(_0x45fc62[_0x5d84('0xfc')]>=_0x4071a0[_0x5d84('0x199')]){_0x43da99[_0x5d84('0xf7')](_0x45fc62,_0x331e39,_0x4bd8e7,_0x5d84('0x1b3'));}else{_0x43da99[_0x5d84('0xf4')](_0x45fc62,_0x331e39,_0x4bd8e7,'reason\x208\x20congestion');}}break;case'11':_0x4071a0[_0x5d84('0x1b4')]+=0x1;_0x45fc62[_0x5d84('0xe1')]=0xb;_0x45fc62[_0x5d84('0xa6')]=_0x5d84('0x11f');_0x45fc62[_0x5d84('0xfd')]+=0x1;_0x45fc62[_0x5d84('0xec')]+=0x1;_0x43da99[_0x5d84('0xc9')](_0x45fc62)['catch'](loggerCatch(_0x5d84('0x122')));if(_0x43da99[_0x5d84('0x194')](0xb,_0x325903,_0x4071a0)){if(_0x45fc62[_0x5d84('0xfd')]>=_0x4071a0[_0x5d84('0x19c')]){_0x43da99['createStateFinal'](_0x45fc62,_0x331e39,_0x4bd8e7,'reason\x2011\x20abandoned');}else{_0x43da99[_0x5d84('0xf4')](_0x45fc62,_0x331e39,_0x4bd8e7,_0x5d84('0x1b5'));}}break;case'20':_0x4071a0[_0x5d84('0x1b6')]+=0x1;_0x45fc62[_0x5d84('0xe1')]=0x14;_0x45fc62[_0x5d84('0xa6')]='AgentReject';_0x45fc62[_0x5d84('0xf3')]+=0x1;_0x45fc62[_0x5d84('0xec')]+=0x1;ami[_0x5d84('0x4e')]('custom:agentreject',ut[_0x5d84('0xe5')](_0x325903,_0x5d84('0x1b7')));_0x43da99[_0x5d84('0xc9')](_0x45fc62)[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x1b8')));if(_0x43da99['checkRetriveMax'](0x14,_0x325903,_0x4071a0)){if(_0x45fc62['countagentrejectretry']>=_0x4071a0[_0x5d84('0x19e')]){_0x43da99['createStateFinal'](_0x45fc62,_0x331e39,_0x4bd8e7,'reason\x2020\x20agentreject');}else{_0x43da99[_0x5d84('0xf4')](_0x45fc62,_0x331e39,_0x4bd8e7,_0x5d84('0x1b9'));}}break;default:_0x4071a0[_0x5d84('0x6a')]+=0x1;_0x45fc62['state']=0xc;_0x45fc62['statedesc']=_0x5c2758[_0x5d84('0x10b')];_0x43da99[_0x5d84('0xc9')](_0x45fc62)[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x1ba')));if(_0x43da99[_0x5d84('0x194')](_0x5c2758[_0x5d84('0x10b')],_0x325903,_0x4071a0)){if(_0x45fc62[_0x5d84('0xef')]+_0x45fc62[_0x5d84('0xfc')]+_0x45fc62[_0x5d84('0xf0')]+_0x45fc62[_0x5d84('0xf1')]+_0x45fc62['countdropretry']+_0x45fc62['countabandonedretry']+_0x45fc62[_0x5d84('0xeb')]+_0x45fc62['countagentrejectretry']>=_0x4071a0[_0x5d84('0xfe')]){_0x43da99[_0x5d84('0xf4')](_0x45fc62,_0x331e39,_0x4bd8e7,_0x5c2758[_0x5d84('0x10b')]);}else{_0x43da99[_0x5d84('0xf7')](_0x45fc62,_0x331e39,_0x4bd8e7,_0x5c2758[_0x5d84('0x10b')]);}}}});};Dialer[_0x5d84('0x1b')][_0x5d84('0xf4')]=function(_0x100e16,_0x56e6ed,_0x2958ec,_0x207998){var _0x3da19b=new Final(_0x100e16);_0x3da19b['state']=0xf;_0x3da19b['statedesc']=_0x5d84('0x1bb');this['createStateFinal'](_0x3da19b,_0x56e6ed,_0x2958ec,_0x207998);};Dialer['prototype'][_0x5d84('0xf7')]=function(_0x12a1ec,_0x311836,_0x280019,_0x460c2c){this[_0x5d84('0xc7')](_0x12a1ec)[_0x5d84('0xb7')](function(){return _0x311836(msgResponse(_0x5d84('0x19f'),_0x5d84('0xd6'),_0x460c2c));})[_0x5d84('0xaf')](function(){return _0x280019(msgResponse(_0x5d84('0x1bc'),_0x5d84('0x141'),_0x5d84('0x1bd')));});};Dialer['prototype'][_0x5d84('0xb')]=function(_0x7744f0){var _0x915965=_0x7744f0[_0x5d84('0x1be')]/0x64;var _0x40eb1c=_0x7744f0[_0x5d84('0x68')]/(_0x7744f0[_0x5d84('0x68')]+_0x7744f0[_0x5d84('0x62')]);var _0x209059=Math['round'](_0x7744f0[_0x5d84('0x71')]*(_0x7744f0[_0x5d84('0x1bf')]/0x64));var _0x18543d=Math[_0x5d84('0x1c0')](_0x7744f0[_0x5d84('0x71')]*(_0x7744f0[_0x5d84('0x1c1')]/0x64));var _0xbbf44c=_0x7744f0[_0x5d84('0x51')]+_0x7744f0[_0x5d84('0x1c2')];var _0x2668e1=Math[_0x5d84('0x1c3')](_0x7744f0['erlangCalls']*_0x7744f0[_0x5d84('0x75')]*_0x7744f0[_0x5d84('0x1c4')]*_0x7744f0[_0x5d84('0x70')]);if(_[_0x5d84('0x3e')](_0x7744f0[_0x5d84('0x28')])){if(!_['isUndefined'](_0x7744f0[_0x5d84('0x27')])){_0x7744f0[_0x5d84('0x27')]=undefined;loggerPredictive[_0x5d84('0x94')](_0x5d84('0x1c5'),'check\x20predictive\x20is\x20not\x20undefine');}if(!_[_0x5d84('0x3e')](_0x7744f0['handlePredictive'])){loggerPredictive[_0x5d84('0x94')]('[startMethodPredictive][StartProgressive]','check\x20handlePredictive\x20is\x20not\x20undefine');clearInterval(_0x7744f0[_0x5d84('0x8f')]);_0x7744f0['handlePredictive']=undefined;}_0x7744f0[_0x5d84('0x28')]=moment()[_0x5d84('0x7a')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0x5d84('0x7e')](_0x7744f0[_0x5d84('0x40')],'collection\x20data\x20in\x20progressive\x20at',_0x7744f0[_0x5d84('0x28')]);this[_0x5d84('0x155')](_0x7744f0,0x1);}else if(ifInterval(_0x7744f0[_0x5d84('0x1c6')],_0x7744f0['startProgressive'])){this[_0x5d84('0x155')](_0x7744f0,0x1);loggerPredictiveCalls[_0x5d84('0x7e')]('[startMethodPredictive][StartProgressive][Loop]',_0x7744f0['startProgressive'],_0x7744f0[_0x5d84('0x40')]);_0x7744f0[_0x5d84('0x73')]=0x0;_0x7744f0[_0x5d84('0x6f')]=0x0;}else if(_0x915965<_0x40eb1c&&_0x7744f0[_0x5d84('0x1c7')]===_0x5d84('0x1c8')){freeVariablesPredictive(_0x7744f0);loggerPredictive[_0x5d84('0x7e')](_0x5d84('0x1c9'),_0x5d84('0x1ca'),_0x40eb1c,'startProgressive',_0x7744f0['name']);}else if(_0x2668e1<_0x7744f0[_0x5d84('0x6f')]&&_0x7744f0[_0x5d84('0x1c7')]===_0x5d84('0x1c8')){freeVariablesPredictive(_0x7744f0);loggerPredictive[_0x5d84('0x7e')](_0x5d84('0x1cb'),_0x5d84('0x1cc'),_0x2668e1,'Drop\x20in\x20this\x20interval',_0x7744f0[_0x5d84('0x6f')],_0x5d84('0x28'),_0x7744f0[_0x5d84('0x40')]);}else if(!ifInterval(_0x7744f0['dialPredictiveInterval'],_0x7744f0[_0x5d84('0x28')])&&_['isUndefined'](_0x7744f0[_0x5d84('0x27')])&&!_[_0x5d84('0x3e')](_0x7744f0[_0x5d84('0x28')])){_0x7744f0['startPredictive']=moment()['format'](_0x5d84('0xf9'));loggerPredictive['info'](_0x7744f0[_0x5d84('0x40')],_0x5d84('0x1cd'),_0x7744f0[_0x5d84('0x27')]);this[_0x5d84('0xbc')](_0x7744f0[_0x5d84('0x1c6')])[_0x5d84('0xb7')](this[_0x5d84('0x1ce')](_0x7744f0))['then'](mergeDataErlangB(_0x7744f0))[_0x5d84('0xb7')](this[_0x5d84('0x1cf')](_0x7744f0))[_0x5d84('0xaf')](loggerCatchPredictive(_0x5d84('0x1d0'),_0x7744f0));}else if(!ifInterval(_0x7744f0[_0x5d84('0x1c6')],_0x7744f0[_0x5d84('0x27')])){_0x7744f0[_0x5d84('0x6f')]=0x0;_0x7744f0['startPredictive']=moment()[_0x5d84('0x7a')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive['info'](_0x7744f0[_0x5d84('0x40')],_0x5d84('0x1d1'),_0x7744f0[_0x5d84('0x27')]);clearInterval(_0x7744f0[_0x5d84('0x8f')]);_0x7744f0[_0x5d84('0x8f')]=undefined;this[_0x5d84('0xbc')](_0x7744f0[_0x5d84('0x1c6')])[_0x5d84('0xb7')](this[_0x5d84('0x1ce')](_0x7744f0))[_0x5d84('0xb7')](mergeDataErlangB(_0x7744f0))[_0x5d84('0xb7')](this[_0x5d84('0x1cf')](_0x7744f0))[_0x5d84('0xaf')](loggerCatchPredictive(_0x5d84('0x1d2'),_0x7744f0));}else if(_0x7744f0[_0x5d84('0x71')]&&_0xbbf44c<_0x7744f0[_0x5d84('0x71')]-_0x18543d){freeVariablesPredictive(_0x7744f0);loggerPredictive[_0x5d84('0x7e')](_0x7744f0[_0x5d84('0x40')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0xbbf44c,')\x20are\x20less\x20than\x20threshold\x20(',_0x7744f0[_0x5d84('0x71')],'-',_0x18543d,'=',_0x7744f0['predictiveIntervalAvailable']-_0x18543d,')');}else if(_0x7744f0[_0x5d84('0x71')]&&_0xbbf44c>_0x7744f0[_0x5d84('0x71')]+_0x209059){freeVariablesPredictive(_0x7744f0);loggerPredictive[_0x5d84('0x7e')](_0x7744f0[_0x5d84('0x40')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0xbbf44c,_0x5d84('0x1d3'),_0x7744f0[_0x5d84('0x71')],'+',_0x209059,'=',_0x7744f0[_0x5d84('0x71')]+_0x209059,')');}};Dialer[_0x5d84('0x1b')][_0x5d84('0x1ce')]=function(_0xa7e7b3){var _0x299c90=this;return function(_0x2f0bf7){return new BPromise(function(_0x79534c,_0x11a534){_[_0x5d84('0x8b')](_0xa7e7b3,_0x2f0bf7[0x0]);if(checkGetDataPredictive(_0x2f0bf7[0x0])){var _0x223099=_0xa7e7b3[_0x5d84('0x71')]=_0xa7e7b3['talking']+_0xa7e7b3[_0x5d84('0x51')];var _0xc970bd=_0xa7e7b3[_0x5d84('0x1c6')]*0x3c;var _0x1c1028=_0x2f0bf7[0x0][_0x5d84('0x6c')]+_0x2f0bf7[0x0][_0x5d84('0x6b')];var _0x44f2aa=(_0x2f0bf7[0x0]['predictiveIntervalAnsweredCalls']+_0x2f0bf7[0x0][_0x5d84('0x6d')]+_0x2f0bf7[0x0][_0x5d84('0x11e')])/_0x2f0bf7[0x0][_0x5d84('0x72')];_0xa7e7b3[_0x5d84('0x1c4')]=_0x44f2aa>0x0?_0x44f2aa:0x1;switch(_0xa7e7b3[_0x5d84('0x1c7')]){case _0x5d84('0x1c8'):var _0x2d2353=_0xa7e7b3[_0x5d84('0x1be')]/0x64;return _0x299c90['abandonmentRate'](_0x223099,_0xc970bd,_0x1c1028,_0x44f2aa,_0x2d2353)[_0x5d84('0xb7')](function(_0x387f71){return _0x79534c(_0x387f71);});case _0x5d84('0x1d4'):var _0x30ccd3=_0xa7e7b3[_0x5d84('0x1be')]/0x64;return _0x299c90[_0x5d84('0x1d5')](_0x223099,_0xc970bd,_0x1c1028,_0x44f2aa,_0x30ccd3)['then'](function(_0x2a7682){return _0x79534c(_0x2a7682);});default:return _0x11a534(msgResponse(_0x5d84('0x1d6'),_0x5d84('0x141'),'Unknown\x20Predictive'));}}else{return _0x11a534(msgResponse(_0x5d84('0x1d6'),_0x5d84('0x141'),_0x5d84('0x1d7')));}});};};Dialer[_0x5d84('0x1b')][_0x5d84('0x1d8')]=function(_0x23a76e){var _0x4b29ca=this;return function(_0x177cea){return new BPromise(function(_0x2ee2ed,_0x3e759f){_['merge'](_0x23a76e,_0x177cea[0x0]);if(checkGetDataPredictive(_0x177cea[0x0])){loggerPredictive[_0x5d84('0x7e')](JSON[_0x5d84('0x4b')](_0x177cea[0x0]));if(_0x23a76e[_0x5d84('0x1c7')]===_0x5d84('0x1c8')){return _0x4b29ca['getVoiceQueueRtPauses'](_0x23a76e['id'])[_0x5d84('0xb7')](function(_0x2a4a65){var _0x18b972=_0x23a76e[_0x5d84('0x52')]-_0x2a4a65[0x0][_0x5d84('0x1d9')];var _0x276018=_0x23a76e[_0x5d84('0x1c6')]*0x3c;var _0xeda9ab=_0x177cea[0x0][_0x5d84('0x6c')]+_0x177cea[0x0][_0x5d84('0x6b')];var _0x357759=(_0x177cea[0x0][_0x5d84('0x82')]+_0x177cea[0x0][_0x5d84('0x6d')]+_0x177cea[0x0][_0x5d84('0x11e')])/_0x177cea[0x0][_0x5d84('0x72')];var _0x27f28c=_0x23a76e[_0x5d84('0x1be')]/0x64;_0x23a76e[_0x5d84('0x1da')]=_0x2a4a65[0x0]['outboundQueuePauses']||0x0;_0x23a76e[_0x5d84('0x1c4')]=_0x357759>0x0?_0x357759:0x1;return _0x4b29ca[_0x5d84('0x1db')](_0x18b972,_0x276018,_0xeda9ab,_0x357759,_0x27f28c);})[_0x5d84('0xb7')](function(_0xc31902){return _0x2ee2ed(_0xc31902);})[_0x5d84('0xaf')](function(_0x156808){return _0x3e759f(msgResponse('[CatchErlangB]',_0x5d84('0x141'),JSON[_0x5d84('0x4b')](_0x156808)));});}if(_0x23a76e['dialPredictiveOptimization']===_0x5d84('0x1d4')){return _0x4b29ca['getVoiceQueueRtPauses'](_0x23a76e['id'])[_0x5d84('0xb7')](function(_0xae974d){var _0x4c0fc4=_0x23a76e[_0x5d84('0x52')]-_0xae974d[0x0][_0x5d84('0x1d9')];var _0x55016f=_0x23a76e[_0x5d84('0x1c6')]*0x3c;var _0x158f36=_0x177cea[0x0][_0x5d84('0x6c')]+_0x177cea[0x0][_0x5d84('0x6b')];var _0x1730fe=(_0x177cea[0x0][_0x5d84('0x82')]+_0x177cea[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x177cea[0x0][_0x5d84('0x11e')])/_0x177cea[0x0]['predictiveIntervalTotalCalls'];var _0x3b1dfc=_0x23a76e[_0x5d84('0x1be')]/0x64;_0x23a76e[_0x5d84('0x1da')]=_0xae974d[0x0][_0x5d84('0x1d9')]||0x0;_0x23a76e[_0x5d84('0x1c4')]=_0x1730fe>0x0?_0x1730fe:0x1;return _0x4b29ca[_0x5d84('0x1d5')](_0x4c0fc4,_0x55016f,_0x158f36,_0x1730fe,_0x3b1dfc);})[_0x5d84('0xb7')](function(_0x125cf3){return _0x2ee2ed(_0x125cf3);})[_0x5d84('0xaf')](function(_0x5e37a7){return _0x3e759f(msgResponse(_0x5d84('0x1dc'),_0x5d84('0x141'),JSON[_0x5d84('0x4b')](_0x5e37a7)));});}}else{return _0x3e759f(msgResponse('[getDataPredictive]','Failure',_0x5d84('0x1d7')));}});};};Dialer[_0x5d84('0x1b')][_0x5d84('0x1cf')]=function(_0x303bdd){var _0x380840=this;return function(){var _0x25d17c=0x0;var _0xcfc000=Math['floor'](_0x303bdd['erlangCallToSecond']*0x3e8);if(_0xcfc000>0x0){_0xcfc000=_0xcfc000<0x64?0x64:_0xcfc000;loggerPredictive[_0x5d84('0x7e')](_0x303bdd[_0x5d84('0x40')],_0x5d84('0x1dd'),_0xcfc000,_0x5d84('0x4c'));_0x303bdd[_0x5d84('0x8f')]=setInterval(function(){_0x380840[_0x5d84('0x8f')](_0x303bdd);loggerPredictiveCalls[_0x5d84('0x7e')](_0x5d84('0x1de'),_0x25d17c+=0x1);},_0xcfc000);}else{loggerPredictive[_0x5d84('0x7e')](_0x303bdd[_0x5d84('0x40')],_0x5d84('0x1df'));}};};Dialer[_0x5d84('0x1b')][_0x5d84('0x1e0')]=function(_0x5cd62c,_0x9d146a){var _0x2dd48d=this;return function(_0x31c366){if(_[_0x5d84('0x49')](_0x31c366)){if(_[_0x5d84('0xac')](_0x9d146a['UserId'])||!_0x9d146a['recallme']){if(_0x5cd62c[_0x5d84('0x5c')]===_0x5d84('0xa')){_0x5cd62c[_0x5d84('0x12b')]=_[_0x5d84('0x3e')](_0x5cd62c[_0x5d84('0x12b')])?!![]:_0x5cd62c[_0x5d84('0x12b')];var _0x40b980=uuid['v4']();_0x2dd48d[_0x5d84('0xa9')][_0x40b980]=new Action(_0x5cd62c,_0x9d146a,_0x40b980);loggerBooked[_0x5d84('0x7e')](_0x5d84('0x1e1'),_0x40b980,_0x5d84('0x1e2'),JSON[_0x5d84('0x4b')](_0x5cd62c['queueStatusComplete']),'Queue:\x20',_0x5cd62c[_0x5d84('0x40')]);if(_0x5cd62c[_0x5d84('0x12b')]){_0x5cd62c['queueStatusComplete']=![];_0x2dd48d[_0x5d84('0x2a')][_0x2dd48d[_0x5d84('0xa9')][_0x40b980][_0x5d84('0xb1')]]=[];ami['Action']({'actionid':_0x40b980,'action':_0x5d84('0x1e3'),'queue':_0x5cd62c[_0x5d84('0x40')]})[_0x5d84('0xaf')](function(){_0x2dd48d[_0x5d84('0xb3')](_0x5cd62c);_0x2dd48d['rescheduleContact']({'active':![],'ContactId':_0x2dd48d['actions'][_0x40b980][_0x5d84('0xd0')],'ListId':_0x2dd48d[_0x5d84('0xa9')][_0x40b980][_0x5d84('0xd1')],'VoiceQueueId':_0x2dd48d['actions'][_0x40b980][_0x5d84('0xd3')]||undefined,'CampaignId':_0x2dd48d[_0x5d84('0xa9')][_0x40b980]['CampaignId']||undefined})[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x1e4')));delete _0x2dd48d[_0x5d84('0xa9')][_0x40b980];});}else{loggerBooked[_0x5d84('0x7e')](_0x5d84('0x1e5'),JSON[_0x5d84('0x4b')](_0x5cd62c[_0x5d84('0x12b')]),_0x5d84('0x1e6'),_0x5cd62c[_0x5d84('0x40')]);_0x2dd48d[_0x5d84('0xb3')](_0x5cd62c);_0x2dd48d[_0x5d84('0xbd')]({'active':![],'ContactId':_0x2dd48d[_0x5d84('0xa9')][_0x40b980]['ContactId'],'ListId':_0x2dd48d['actions'][_0x40b980]['ListId'],'VoiceQueueId':_0x2dd48d['actions'][_0x40b980]['VoiceQueueId']||undefined,'CampaignId':_0x2dd48d[_0x5d84('0xa9')][_0x40b980][_0x5d84('0xd4')]||undefined})[_0x5d84('0xaf')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x2dd48d[_0x5d84('0xa9')][_0x40b980];}}else{return _0x2dd48d[_0x5d84('0x1e7')](_0x5cd62c,_0x9d146a);}}else{if(getDiff(_0x9d146a[_0x5d84('0x1e8')])<_0x5cd62c[_0x5d84('0x1e9')]*0x3c){if(_0x9d146a['Agent']&&!_0x9d146a[_0x5d84('0x1ea')][_0x5d84('0x1eb')]){_0x2dd48d[_0x5d84('0x1f')][_0x5d84('0x12d')](_0x9d146a['id'])[_0x5d84('0x1e')](function(){_0x2dd48d[_0x5d84('0xb3')](_0x5cd62c);});}else{_0x2dd48d[_0x5d84('0xbf')]({'active':![]},_0x9d146a['id'],0x1)[_0x5d84('0x1e')](function(){_0x2dd48d['updateOriginated'](_0x5cd62c);});}}else{_0x5cd62c[_0x5d84('0x1ec')]+=0x1;_0x2dd48d[_0x5d84('0xb3')](_0x5cd62c);if(_0x5cd62c[_0x5d84('0x1ed')]){_0x2dd48d[_0x5d84('0xbd')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x9d146a[_0x5d84('0xd0')],'ListId':_0x9d146a['ListId'],'VoiceQueueId':_0x9d146a['VoiceQueueId']||undefined,'CampaignId':_0x9d146a[_0x5d84('0xd4')]||undefined})[_0x5d84('0xaf')](loggerCatch('[rescheduleContact][dialRecallInQueue]'));_0x2dd48d['createHistory'](createObjHistory(_0x5cd62c,_0x9d146a,_0x5d84('0x1ee'),0x17,_0x5d84('0x1ef')))['catch'](loggerCatch(_0x5d84('0x1f0')));}else{_0x2dd48d[_0x5d84('0xce')](createObjHistory(_0x5cd62c,_0x9d146a,_0x5d84('0x1f1'),0x16,_0x5d84('0x1f2')),_0x5d84('0x1f3'),'[Originate][HistoryRecallClose]');}}}}else{_0x5cd62c[_0x5d84('0x63')]+=0x1;_0x2dd48d[_0x5d84('0xce')](createObjHistory(_0x5cd62c,_0x9d146a,_0x5d84('0x1f4'),0xd,_0x5d84('0x1f5')),_0x5d84('0x1f6'),'[Originate][MoveBlacklist]');throw _0x5d84('0x1f7');}};};Dialer['prototype'][_0x5d84('0x159')]=function(_0x35fd3a){var _0x552087=this;var _0x44dac9=_0x35fd3a[_0x5d84('0x1f8')]-_0x35fd3a['originated']-_0x35fd3a['temp'];emitCampaignSummary(_0x35fd3a);if(_0x44dac9>0x0){if(_0x44dac9>this[_0x5d84('0x24')]){_0x44dac9=this[_0x5d84('0x24')];}_0x35fd3a['temp']+=_0x44dac9;this[_0x5d84('0xc3')](_0x35fd3a['id'],_0x44dac9,_0x35fd3a[_0x5d84('0x1f9')],_0x35fd3a)[_0x5d84('0xb7')](function(_0x4cc774){_0x35fd3a['temp']-=_0x44dac9;_0x35fd3a[_0x5d84('0xc2')]=_0x35fd3a['temp']>0x0?_0x35fd3a[_0x5d84('0xc2')]:0x0;if(!checkContactEmpty(_0x4cc774)){_0x35fd3a[_0x5d84('0x42')]='AVAILABLE_CONTACTS_FINISHED';logger[_0x5d84('0x7e')](_0x5d84('0x1fa')+_0x35fd3a['name']);}else{_0x35fd3a[_0x5d84('0x98')]+=_0x4cc774[_0x5d84('0x97')];_0x35fd3a[_0x5d84('0x42')]='RUNNING';for(var _0x2723d8=0x0;_0x2723d8<_0x4cc774[_0x5d84('0x97')];_0x2723d8+=0x1){_0x35fd3a['ivrTotalCallsDays']+=0x1;if(_['isNil'](_0x4cc774[_0x2723d8])||_[_0x5d84('0xac')](_0x4cc774[_0x2723d8][_0x5d84('0x164')])||_[_0x5d84('0xac')](_0x4cc774[_0x2723d8][_0x5d84('0x164')]['phone'])){_0x552087[_0x5d84('0xcd')]('[actionOriginate]\x20',_0x35fd3a,_0x4cc774[_0x2723d8]);}else{_0x552087[_0x5d84('0xba')](_[_0x5d84('0xcf')](_0x4cc774[_0x2723d8],[_0x5d84('0xd4'),_0x5d84('0x1fb')]))['then'](_0x552087[_0x5d84('0x1e0')](_0x35fd3a,_0x4cc774[_0x2723d8]))['catch'](_0x552087[_0x5d84('0xcc')](_0x5d84('0x1fc'),_0x35fd3a));}}}})[_0x5d84('0xaf')](loggerGetContactDialer('[getContactCampaign2]',_0x35fd3a,_0x44dac9));}};Dialer['prototype'][_0x5d84('0x155')]=function(_0x5b26c1,_0x8d5aa5){var _0x49561f=this;var _0x2bbc57=[];var _0x4eb6c7=_0x8d5aa5>=0x1?_0x8d5aa5:0x1;if(_0x5b26c1['dialMethod']==='booked'){_0x4eb6c7=0x1;}var _0x3cbcd9=Math[_0x5d84('0x1c3')](_0x5b26c1['available']*_0x4eb6c7)-_0x5b26c1[_0x5d84('0x98')]-_0x5b26c1['temp'];emitVoiceQueueSummary(_0x5b26c1);if(_0x5b26c1[_0x5d84('0x1fd')]>0x0){var _0x2081fa=_0x5b26c1[_0x5d84('0x1fd')]-_0x5b26c1['originated']-_0x5b26c1[_0x5d84('0x1c2')]-_0x5b26c1[_0x5d84('0xc2')]-_0x5b26c1['pTalking'];if(_0x3cbcd9>_0x2081fa){_0x3cbcd9=_0x2081fa;}}if(_0x3cbcd9>0x0){if(_0x5b26c1['dialMethod']===_0x5d84('0xa')){_0x3cbcd9=0x1;}if(_0x3cbcd9>this[_0x5d84('0x24')]){_0x3cbcd9=this[_0x5d84('0x24')];}_0x5b26c1[_0x5d84('0xc2')]+=_0x3cbcd9;for(var _0x1b0f24 in this[_0x5d84('0x22')]){if(typeof this[_0x5d84('0x22')][_0x1b0f24]!==_0x5d84('0xab')){if(this[_0x5d84('0x22')][_0x1b0f24]['state']==='not_inuse'&&this[_0x5d84('0x22')][_0x1b0f24][_0x5d84('0xd8')]===_0x5d84('0xd9')){_0x2bbc57[_0x5d84('0x148')](this[_0x5d84('0x22')][_0x1b0f24]['id']);}}}this[_0x5d84('0xc1')](_0x5b26c1['id'],_0x2bbc57,_0x3cbcd9,_0x5b26c1[_0x5d84('0x1f9')],_0x5b26c1)[_0x5d84('0xb7')](function(_0x5b4c65){_0x5b26c1['temp']-=_0x3cbcd9;_0x5b26c1[_0x5d84('0xc2')]=_0x5b26c1[_0x5d84('0xc2')]>0x0?_0x5b26c1['temp']:0x0;if(!checkContactEmpty(_0x5b4c65)){_0x49561f[_0x5d84('0xb5')](_0x5b26c1)[_0x5d84('0xb7')](sendMessageReschedule(_0x5b26c1))[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x1fe')));}else{_0x5b26c1[_0x5d84('0x98')]+=_0x5b4c65[_0x5d84('0x97')];_0x5b26c1['message']=_0x5b26c1[_0x5d84('0x5c')]===_0x5d84('0xa')?_0x5d84('0x16c'):_0x5d84('0x1ff');for(var _0x100b05=0x0;_0x100b05<_0x5b4c65[_0x5d84('0x97')];_0x100b05+=0x1){if(_[_0x5d84('0xac')](_0x5b4c65[_0x100b05])||_['isNil'](_0x5b4c65[_0x100b05]['Contact'])||_['isNil'](_0x5b4c65[_0x100b05][_0x5d84('0x164')][_0x5d84('0x18b')])){_0x49561f[_0x5d84('0xcd')](_0x5d84('0x200'),_0x5b26c1,_0x5b4c65[_0x100b05]);}else{_0x49561f[_0x5d84('0xb8')](_[_0x5d84('0xcf')](_0x5b4c65[_0x100b05],[_0x5d84('0xd3'),_0x5d84('0x1fb')]))[_0x5d84('0xb7')](_0x49561f[_0x5d84('0x1e0')](_0x5b26c1,_0x5b4c65[_0x100b05]))[_0x5d84('0xaf')](_0x49561f[_0x5d84('0xcc')]('[actionOriginate]\x20',_0x5b26c1));}}}})['catch'](loggerGetContactDialer(_0x5d84('0x201'),_0x5b26c1,_0x3cbcd9));}};Dialer[_0x5d84('0x1b')][_0x5d84('0x8f')]=function(_0x2eb49b){if(_0x2eb49b['dialLimitQueue']>0x0){var _0x65ac01=_0x2eb49b[_0x5d84('0x1fd')]-_0x2eb49b[_0x5d84('0x98')]-_0x2eb49b[_0x5d84('0x1c2')];if(_0x65ac01>0x0){this[_0x5d84('0x202')](_0x2eb49b);}else{loggerPredictiveCalls['info'](_0x5d84('0x203'));}}else{this[_0x5d84('0x202')](_0x2eb49b);}};Dialer['prototype'][_0x5d84('0x202')]=function(_0x374140){var _0x388a56=this;var _0x5a7269=[];_0x374140[_0x5d84('0x98')]+=0x1;for(var _0x484680 in this['agents']){if(typeof this[_0x5d84('0x22')][_0x484680]!==_0x5d84('0xab')){if(this[_0x5d84('0x22')][_0x484680]['state']===_0x5d84('0x204')&&this['agents'][_0x484680][_0x5d84('0xd8')]==='reachable'){_0x5a7269[_0x5d84('0x148')](this['agents'][_0x484680]['id']);}}}this['getContactDialer'](_0x374140['id'],_0x5a7269,0x1,_0x374140['dialOrderByScheduledAt'],_0x374140)[_0x5d84('0xb7')](function(_0x7c4568){if(!checkContactEmpty(_0x7c4568)){checkContactLowerLimitOriginate(_0x374140,0x1,0x0);_0x388a56[_0x5d84('0xb5')](_0x374140)['then'](sendMessageReschedule(_0x374140))[_0x5d84('0xaf')](loggerCatch(_0x5d84('0x1fe')));}else{_0x374140[_0x5d84('0x42')]=_0x5d84('0x1ff');if(_['isNil'](_0x7c4568[0x0])||_[_0x5d84('0xac')](_0x7c4568[0x0][_0x5d84('0x164')])||_[_0x5d84('0xac')](_0x7c4568[0x0]['Contact']['phone'])){_0x388a56[_0x5d84('0xcd')](_0x5d84('0x200'),_0x374140,_0x7c4568[0x0]);}else{_0x388a56[_0x5d84('0xb8')](_[_0x5d84('0xcf')](_0x7c4568[0x0],[_0x5d84('0xd3'),'Contact.phone']))[_0x5d84('0xb7')](_0x388a56[_0x5d84('0x1e0')](_0x374140,_0x7c4568[0x0]))['catch'](_0x388a56[_0x5d84('0xcc')](_0x5d84('0x205'),_0x374140));}}})[_0x5d84('0xaf')](loggerGetContactDialer('[getContactDialerPredictive]',_0x374140,0x1));emitVoiceQueueSummary(_0x374140);};Dialer[_0x5d84('0x1b')]['abandonmentRate']=function(_0x16dffa,_0x1a1524,_0x11db69,_0x2848f6,_0xdee37b,_0x52d501){loggerPredictive['info'](_0x5d84('0x206'));loggerPredictive[_0x5d84('0x7e')](_0x5d84('0x207'),_0x16dffa);loggerPredictive['info'](_0x5d84('0x208'),_0x1a1524);loggerPredictive[_0x5d84('0x7e')]('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',_0x11db69);loggerPredictive[_0x5d84('0x7e')]('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',_0x2848f6);loggerPredictive[_0x5d84('0x7e')](_0x5d84('0x209'),_0xdee37b);loggerPredictive[_0x5d84('0x7e')](_0x5d84('0x86'));return new BPromise(function(_0x46cfd6,_0x403a10){if(_0x16dffa<=0x0||isNaN(_0x16dffa)){return _0x403a10(msgResponse(_0x5d84('0x20a'),'Error','m\x20=\x20'+_0x16dffa));}if(_0x11db69<=0x0||isNaN(_0x11db69)){return _0x403a10(msgResponse(_0x5d84('0x20a'),'Error','Ts\x20=\x20'+_0x11db69));}if(_0x2848f6<=0x0||isNaN(_0x2848f6)){return _0x403a10(msgResponse(_0x5d84('0x20a'),'Error',_0x5d84('0x20b')+_0x2848f6));}if(_0x1a1524<=0x0||isNaN(_0x1a1524)){return _0x403a10(msgResponse(_0x5d84('0x20a'),_0x5d84('0x4a'),_0x5d84('0x20c')+_0x1a1524));}if(_0xdee37b<=0x0||isNaN(_0xdee37b)){return _0x403a10(msgResponse(_0x5d84('0x20a'),_0x5d84('0x4a'),'Amax\x20=\x20'+_0xdee37b));}_0x52d501=_0x52d501||0x0;var _0x56511a=0x1/_0x11db69;var _0x366cb4=0x0;var _0x4ffc03=0x0;var _0x2e6e29=0x0;var _0x480fdf=0x0;for(var _0x1a3657=0x0;_0x2e6e29<_0xdee37b;_0x1a3657+=0x1){_0x4ffc03=_0x1a3657/_0x1a1524;_0x366cb4=(_0x2848f6*_0x4ffc03+_0x52d501)/_0x56511a;_0x2e6e29=erlangb(_0x366cb4,_0x16dffa);_0x480fdf=_0x366cb4/_0x16dffa*(0x1-erlangb(_0x366cb4,_0x16dffa));}return _0x46cfd6({'erlangCalls':_0x1a3657,'erlangCallToSecond':_0x1a1524/_0x1a3657,'erlangAbandonmentRate':_0x2e6e29,'erlangBusyFactor':_0x480fdf});});};Dialer[_0x5d84('0x1b')][_0x5d84('0x1d5')]=function(_0x3be0b9,_0x96e431,_0x173a47,_0x488942,_0x4ffc3a,_0x58cbae){loggerPredictive[_0x5d84('0x7e')](_0x5d84('0x20d'));loggerPredictive['info'](_0x5d84('0x207'),_0x3be0b9);loggerPredictive[_0x5d84('0x7e')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x96e431);loggerPredictive['info'](_0x5d84('0x20e'),_0x173a47);loggerPredictive['info'](_0x5d84('0x20f'),_0x488942);loggerPredictive[_0x5d84('0x7e')](_0x5d84('0x210'),_0x4ffc3a);loggerPredictive[_0x5d84('0x7e')](_0x5d84('0x86'));return new BPromise(function(_0x4945c7,_0xc2f60b){if(_0x3be0b9<=0x0||isNaN(_0x3be0b9)){return _0xc2f60b(msgResponse('[busyFactor]',_0x5d84('0x4a'),_0x5d84('0x211')+_0x3be0b9));}if(_0x173a47<=0x0||isNaN(_0x173a47)){return _0xc2f60b(msgResponse(_0x5d84('0x212'),'Error','Ts\x20=\x20'+_0x173a47));}if(_0x488942<=0x0||isNaN(_0x488942)){return _0xc2f60b(msgResponse(_0x5d84('0x212'),_0x5d84('0x4a'),_0x5d84('0x20b')+_0x488942));}if(_0x96e431<=0x0||isNaN(_0x96e431)){return _0xc2f60b(msgResponse(_0x5d84('0x212'),_0x5d84('0x4a'),'interval\x20=\x20'+_0x96e431));}if(_0x4ffc3a<=0x0||isNaN(_0x4ffc3a)){return _0xc2f60b(msgResponse(_0x5d84('0x212'),_0x5d84('0x4a'),'Umin\x20=\x20'+_0x4ffc3a));}_0x58cbae=_0x58cbae||0x0;var _0x252997=0x1/_0x173a47;var _0x419c0f=0x0;var _0x5a2002=0x0;var _0x466208=0x0;var _0x17dbc7=0x0;for(var _0x8907ea=0x0;_0x17dbc7<_0x4ffc3a;_0x8907ea+=0x1){_0x5a2002=_0x8907ea/_0x96e431;_0x419c0f=(_0x488942*_0x5a2002+_0x58cbae)/_0x252997;_0x466208=erlangb(_0x419c0f,_0x3be0b9);_0x17dbc7=_0x419c0f/_0x3be0b9*(0x1-erlangb(_0x419c0f,_0x3be0b9));}return _0x4945c7({'erlangCalls':_0x8907ea,'erlangCallToSecond':_0x96e431/_0x8907ea,'erlangAbandonmentRate':_0x466208,'erlangBusyFactor':_0x17dbc7});});};module[_0x5d84('0x213')]=Dialer;
\ No newline at end of file
+var _0xfc75=['run','[booked][RR][finaly]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[unlock3][syncQueueStatusComplete]','TrunkBackup','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','checkIfTimeIntervals','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','timezones','TIMEZONE_UNKNOW','Failure','\x20Timezone\x20unknow\x20','isArray','command','iftime\x20%s,%s','indexOf','true','content','all','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','power','handlePower','predictive','method\x20not\x20recognized','launchHandleIvr','loggedIn','checkIsTrunkReachable','dialTimezone','[syncQueueSummary]','dialGlobalInterval','\x5cw{0,','pow','replace','random','match','actionOriginate','object','originate','Contact','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueTimeout','ACTIVE','xcally-motion-dialer','XMD-AMDGREETING','dialAMDGreeting','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','tags','updatedAt','%s%s','toUpper','isTrunkReachable','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','SIP/%s/%s%s','trim','substring','dialCutDigit','from-sip','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','getQueue','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','dialNoAnswerMaxRetry','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','dialCongestionMaxRetry','[rescheduleContact]\x20[Congestion]','countnosuchnumberretry','dialNoSuchNumberRetryFrequency','dialMachineRetryFrequency','countagentrejectretry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','evt\x20is\x20undefine','outboundNoSuchCallsDay','custom:agentnosuchnumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','custom:agentcongestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','AgentReject','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','floor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','dialPredictiveInterval','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(','agentBusyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','busyFactor','one\x20call\x20every:','fail\x20to\x20scheduled\x20calls','checkContactBlack','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','dialRecallMeTimeout','Agent','voicePause','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','outboundBlacklistCallsDay','BLACKLIST','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','handleIvr','limitCalls','dialOrderByScheduledAt','[getContactCampaign2][Empty]','ivrTotalCallsDays','[actionOriginate]\x20','Contact.phone','[actionOriginateIvr]\x20','dialLimitQueue','not_inuse','countReScheduled','RUNNING','[getContactDialer2]','tryOriginatePredictive','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','abandonmentRate','--------\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','Ts\x20=\x20','interval\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]','Umin\x20=\x20','exports','util','lodash','bluebird','uuid','moment','../preview/util/util','../../../config/logger','dialer','booked','redis','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./action','./final','./agentComplete','./queueCallerAbandon','./hangup','roundrobin','prototype','enqueue','tail','finally','sequence','preview','campaigns','agents','trunks','maxNumberOriginate','channels','actions','optionPredictive','startPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','agentconnect','syncAgentConnect','queuecallerabandon','bind','originateresponse','syncOriginateResponse','agentcomplete','custom:queuesummary','syncQueueSummary','hangup','syncHangup','newexten','varset','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','isUndefined','message','AGENTS_NOT_LOGGED','name','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Intervals','[ifTime][Action]','Error','stringify','milliseconds','diff','emit','outbound','answered','available','pTalking','sumBillable','talking','type','abandoned','waiting','dialActive','dialMethod','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','Trunk','active','callerid','md5','format','voice:queue:%s','voice_queue:save','ivr','campaign:ivr:%s','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','predictiveIntervalAnsweredCalls','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','predictiveIntervalDroppedCallsCallersExit','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgTalktime','---------------------------','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','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','merge','seconds','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','string','\x22\x22\x20<>','error','inspect','stack','length','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contacts','sendMessageOneNotActive','IS_DISACTIVED','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20not\x20active','state','statedesc','clearZombieChannels','uniqueId','[uniqueid]','[actions]','isNil','Action','status','catch','updateOriginated','voiceQueues','queue','[Dialer][checkChannel][ivr]','resolve','then','[countReScheduled]\x20','checkIsBlackList','[checkIsBlackList]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','[rescheduleContact]\x20','unlockContact','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','createHistory','[createHistory]\x20','undefined','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','notFound','saveInDb','pick','ContactId','ListId','UserId','CampaignId','[emptyContact]','isSuccess','Success','unmonitored','syncVarSet','uniqueid','variable','amdstatus','HANGUP','outboundAnswerCallsDay','HangupInAMD','membername','AMD','custom:amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','dialAMDActive','Machine','countglobal','amd','buildObj','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnoanswerretry','countabandonedretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','countmachineretry','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','add','minutes','YYYY-MM-DD\x20HH:mm:ss','[rescheduleContact][Machine]','value','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','MACHINE','countdropretry','VoiceQueueId','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','dialQueueProject','AnswerAGI','AGI','cause-txt','Unknow','syncAgentComplete','reason','agent','agiafterat','dialAgiAfterHangupAgent','[syncAgentComplete]','answertime','queueCallerAbandonCreateState','[syncAgentComplete][createHistory]','syncQueueCallerAbandon','droptime','dropreason','dialQueueProject2','dialDropMaxRetry','dialDropRetryFrequency','[rescheduleContact][Drop]','Drop','starttime','endtime','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','CALLEREXIT','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','syncNewExten','channel','actionid','paused','stateinterface','locked','rrmemory','push','idHopper','queueStatusComplete','[booked][unlockQueueStatus]','strategy','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0xfc75,0xe1));var _0x5fc7=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xfc75[_0xa464c9];return _0x3d73c4;};'use strict';var util=require(_0x5fc7('0x0'));var _=require(_0x5fc7('0x1'));var BPromise=require(_0x5fc7('0x2'));var uuid=require(_0x5fc7('0x3'));var moment=require(_0x5fc7('0x4'));var rr=require('rr');var md5=require('md5');var Redis=require('ioredis');var ut=require(_0x5fc7('0x5'));var config=require('../../../config/environment/');var logger=require(_0x5fc7('0x6'))(_0x5fc7('0x7'));var loggerBooked=require(_0x5fc7('0x6'))(_0x5fc7('0x8'));var loggerPredictive=require(_0x5fc7('0x6'))('predictive');var loggerPredictiveCalls=require(_0x5fc7('0x6'))('predictiveCalls');var loggerSyncQueueSummary=require(_0x5fc7('0x6'))('syncQueueSummary');var ami=require('../ami');config[_0x5fc7('0x9')]=_['defaults'](config[_0x5fc7('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x5fc7('0xa'))(new Redis(config[_0x5fc7('0x9')]));var cmHopper=require(_0x5fc7('0xb'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require(_0x5fc7('0xc'));var voiceQueueRt=require(_0x5fc7('0xd'));var Action=require(_0x5fc7('0xe'));var History=require('./history');var Final=require(_0x5fc7('0xf'));var AgentComplete=require(_0x5fc7('0x10'));var QueueCallerAbandon=require(_0x5fc7('0x11'));var Hangup=require(_0x5fc7('0x12'));var ipAgi=process['env']['XCALLY_IP_AGI']||'127.0.0.1';var strategy={'rrmemory':'rrmemory','roundrobin':_0x5fc7('0x13')};var Sequence=function(){};Sequence[_0x5fc7('0x14')][_0x5fc7('0x15')]=function(_0x11e612){this['tail']=this[_0x5fc7('0x16')]?this[_0x5fc7('0x16')][_0x5fc7('0x17')](_0x11e612):_0x11e612();};function Dialer(_0x46590a,_0x51d176){this[_0x5fc7('0x18')]=new Sequence();this[_0x5fc7('0x19')]=_0x51d176;this['voiceQueues']=_0x46590a['voiceQueues'];this[_0x5fc7('0x1a')]=_0x46590a[_0x5fc7('0x1a')];this[_0x5fc7('0x1b')]=_0x46590a[_0x5fc7('0x1b')];this['trunks']=_0x46590a[_0x5fc7('0x1c')];this[_0x5fc7('0x1d')]=config[_0x5fc7('0x1d')]||0x2;this[_0x5fc7('0x1e')]={};this[_0x5fc7('0x1f')]={};this['contactsId']={};this['uniqueId']={};this[_0x5fc7('0x20')]={};this[_0x5fc7('0x21')]={};this[_0x5fc7('0x22')]={};this[_0x5fc7('0x23')]={};this[_0x5fc7('0x24')]={};this[_0x5fc7('0x25')]={};ami['on'](_0x5fc7('0x26'),this[_0x5fc7('0x27')]['bind'](this));ami['on'](_0x5fc7('0x28'),this['syncQueueCallerAbandon'][_0x5fc7('0x29')](this));ami['on'](_0x5fc7('0x2a'),this[_0x5fc7('0x2b')][_0x5fc7('0x29')](this));ami['on'](_0x5fc7('0x2c'),this['syncAgentComplete'][_0x5fc7('0x29')](this));ami['on'](_0x5fc7('0x2d'),this[_0x5fc7('0x2e')][_0x5fc7('0x29')](this));ami['on'](_0x5fc7('0x2f'),this[_0x5fc7('0x30')][_0x5fc7('0x29')](this));ami['on'](_0x5fc7('0x31'),this['syncNewExten']['bind'](this));ami['on'](_0x5fc7('0x32'),this['syncVarSet'][_0x5fc7('0x29')](this));ami['on']('queuemember',this[_0x5fc7('0x33')][_0x5fc7('0x29')](this));ami['on'](_0x5fc7('0x34'),this[_0x5fc7('0x35')][_0x5fc7('0x29')](this));this[_0x5fc7('0x36')]();this[_0x5fc7('0x37')]();}function isNotNull(_0xdbc054){return _0xdbc054!==null&&!_[_0x5fc7('0x38')](_0xdbc054);}function checkIsLoggedIn(_0x52813,_0x58fa14){return function(){if(_0x58fa14<=0x0){_0x52813[_0x5fc7('0x39')]=_0x5fc7('0x3a');throw _0x52813[_0x5fc7('0x3b')]+_0x5fc7('0x3c');}};}function isActive(_0x374612){return _0x374612;}function checkIsActive(_0x879b91,_0x39f476){return function(){if(!isActive(_0x39f476)){_0x879b91[_0x5fc7('0x39')]=_0x5fc7('0x3d');throw _0x879b91['name']+'\x20NOT\x20Active';}};}function checkInterval(_0x8653da){return function(){if(!isNotNull(_0x8653da[_0x5fc7('0x3e')])){_0x8653da[_0x5fc7('0x39')]=_0x5fc7('0x3f');throw _0x8653da[_0x5fc7('0x3b')]+_0x5fc7('0x40');}if(!isNotNull(_0x8653da[_0x5fc7('0x3e')][_0x5fc7('0x41')])){_0x8653da[_0x5fc7('0x39')]=_0x5fc7('0x3f');throw _0x8653da[_0x5fc7('0x3b')]+_0x5fc7('0x40');}if(!isNotNull(_['isEmpty'](_0x8653da['Interval'][_0x5fc7('0x41')]))){_0x8653da['message']=_0x5fc7('0x3f');throw _0x8653da[_0x5fc7('0x3b')]+_0x5fc7('0x40');}};}function msgResponse(_0x2e6faf,_0x3ffb06,_0x169d40){return{'action':_0x2e6faf,'response':_0x3ffb06,'message':_0x169d40,'stack':_0x169d40};}function myreject(_0x542160){return function(_0x4a2d97){return _0x542160(msgResponse(_0x5fc7('0x42'),_0x5fc7('0x43'),JSON[_0x5fc7('0x44')](_0x4a2d97)));};}function getSeconds(_0x3ccb66,_0x51d758){var _0x5357e8=moment(_0x3ccb66)['milliseconds'](0x0);var _0x147764=moment(_0x51d758)[_0x5fc7('0x45')](0x0);return _0x5357e8[_0x5fc7('0x46')](_0x147764,'seconds');}function emit(_0x5f3b23,_0x3ac8e4,_0x2e485){io['to'](_0x5f3b23)[_0x5fc7('0x47')](_0x3ac8e4,_0x2e485);}function emitVoiceQueueSummary(_0x544bbb){if(_0x544bbb['type']===_0x5fc7('0x48')){var _0x27a470={'id':_0x544bbb['id'],'name':_0x544bbb['name'],'strategy':_0x544bbb['strategy'],'answered':_0x544bbb[_0x5fc7('0x49')],'available':_0x544bbb[_0x5fc7('0x4a')],'loggedIn':_0x544bbb['loggedIn'],'pTalking':_0x544bbb[_0x5fc7('0x4b')],'sumBillable':_0x544bbb[_0x5fc7('0x4c')],'sumDuration':_0x544bbb['sumDuration'],'sumHoldTime':_0x544bbb['sumHoldTime']||0x0,'talking':_0x544bbb[_0x5fc7('0x4d')],'total':_0x544bbb['total'],'type':_0x544bbb[_0x5fc7('0x4e')],'unmanaged':_0x544bbb['unmanaged'],'abandoned':_0x544bbb[_0x5fc7('0x4f')],'waiting':_0x544bbb[_0x5fc7('0x50')],'loggedInDb':_0x544bbb['loggedInDb'],'dialActive':_0x544bbb[_0x5fc7('0x51')],'dialMethod':_0x544bbb[_0x5fc7('0x52')],'dialOriginateCallerIdName':_0x544bbb['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x544bbb[_0x5fc7('0x53')],'dialOriginateTimeout':_0x544bbb[_0x5fc7('0x54')],'dialPrefix':_0x544bbb[_0x5fc7('0x55')],'outboundAnswerAgiCallsDay':_0x544bbb[_0x5fc7('0x56')],'outboundAnswerCallsDay':_0x544bbb['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x544bbb['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x544bbb[_0x5fc7('0x57')],'outboundCongestionCallsDay':_0x544bbb[_0x5fc7('0x58')],'outboundDropCallsDayACS':_0x544bbb[_0x5fc7('0x59')],'outboundDropCallsDayCallersExit':_0x544bbb[_0x5fc7('0x5a')],'outboundDropCallsDayTimeout':_0x544bbb[_0x5fc7('0x5b')],'outboundNoAnswerCallsDay':_0x544bbb[_0x5fc7('0x5c')],'outboundNoSuchCallsDay':_0x544bbb['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x544bbb[_0x5fc7('0x5d')],'outboundReCallsDay':_0x544bbb[_0x5fc7('0x5e')],'outboundRejectCallsDay':_0x544bbb[_0x5fc7('0x5f')],'outboundUnknownCallsDay':_0x544bbb[_0x5fc7('0x60')],'predictiveIntervalAnsweredCalls':_0x544bbb['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x544bbb[_0x5fc7('0x61')],'predictiveIntervalAvgTalktime':_0x544bbb['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x544bbb['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x544bbb[_0x5fc7('0x62')],'predictiveIntervalErlangCalls':_0x544bbb['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x544bbb[_0x5fc7('0x63')],'predictiveIntervalHitRate':_0x544bbb[_0x5fc7('0x64')],'predictiveIntervalMultiplicativeFactor':_0x544bbb[_0x5fc7('0x65')],'predictiveIntervalPauses':_0x544bbb[_0x5fc7('0x66')],'predictiveIntervalAvailable':_0x544bbb[_0x5fc7('0x67')],'predictiveIntervalTotalCalls':_0x544bbb[_0x5fc7('0x68')],'message':_0x544bbb[_0x5fc7('0x39')],'originated':_0x544bbb[_0x5fc7('0x69')],'erlangCalls':_0x544bbb[_0x5fc7('0x6a')],'erlangCallToSecond':_0x544bbb[_0x5fc7('0x6b')],'erlangAbandonmentRate':_0x544bbb[_0x5fc7('0x6c')],'erlangBusyFactor':_0x544bbb[_0x5fc7('0x6d')],'startPredictive':_0x544bbb['startPredictive'],'startProgressive':_0x544bbb[_0x5fc7('0x22')]};if(_0x544bbb[_0x5fc7('0x6e')]){_0x27a470[_0x5fc7('0x6e')]={'id':_0x544bbb[_0x5fc7('0x6e')]['id'],'name':_0x544bbb[_0x5fc7('0x6e')]['name'],'active':_0x544bbb[_0x5fc7('0x6e')][_0x5fc7('0x6f')],'callerid':_0x544bbb[_0x5fc7('0x6e')][_0x5fc7('0x70')]};}if(_0x544bbb['Interval']){_0x27a470[_0x5fc7('0x3e')]={'id':_0x544bbb[_0x5fc7('0x3e')]['id'],'name':_0x544bbb[_0x5fc7('0x3e')]['name']};}var _0x468d7e=md5(JSON['stringify'](_0x27a470));if(_0x544bbb[_0x5fc7('0x71')]!==_0x468d7e){_0x544bbb[_0x5fc7('0x71')]=_0x468d7e;emit(util[_0x5fc7('0x72')](_0x5fc7('0x73'),_0x27a470[_0x5fc7('0x3b')]),_0x5fc7('0x74'),_0x27a470);}}}function emitCampaignSummary(_0xae9898){if(_0xae9898['type']===_0x5fc7('0x75')){emit(util[_0x5fc7('0x72')](_0x5fc7('0x76'),_0xae9898[_0x5fc7('0x3b')]),_0x5fc7('0x77'),_0xae9898);}}function checkGetDataPredictive(_0x400d11){if(isNotNull(_0x400d11)&&!_[_0x5fc7('0x78')](_0x400d11)){loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x7a'));loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x7b'),_0x400d11[_0x5fc7('0x68')]);loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x7c'),_0x400d11[_0x5fc7('0x7d')]);loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x7e'),_0x400d11[_0x5fc7('0x62')]);loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x7f'),_0x400d11[_0x5fc7('0x80')]);loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x81'),_0x400d11[_0x5fc7('0x61')]);loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x82'),_0x400d11[_0x5fc7('0x83')]);loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x84'));if(_0x400d11[_0x5fc7('0x68')]>0x0){if(!_['isUndefined'](_0x400d11[_0x5fc7('0x83')])&&_0x400d11[_0x5fc7('0x83')]>0x0){return!![];}loggerPredictive[_0x5fc7('0x79')]('Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive');if(!_[_0x5fc7('0x38')](_0x400d11[_0x5fc7('0x61')])&&_0x400d11[_0x5fc7('0x61')]>0x0){return!![];}loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x85'));}else{loggerPredictive[_0x5fc7('0x79')]('Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive');}}else{loggerPredictive['info']('History\x20information\x20are\x20empty');}return![];}function mergeDataErlangB(_0x22f630){return function(_0x2f9593){loggerPredictive[_0x5fc7('0x79')]('---------\x20ErlangB\x20---------');loggerPredictive['info'](_0x5fc7('0x86'),_0x2f9593['erlangCalls']);loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x87'),_0x2f9593[_0x5fc7('0x6b')]);loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x88'),_0x2f9593[_0x5fc7('0x6c')]);loggerPredictive['info']('Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2f9593['erlangBusyFactor']);loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x88'),_0x2f9593[_0x5fc7('0x6c')]);loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x84'));_[_0x5fc7('0x89')](_0x22f630,_0x2f9593);};}function getDiff(_0x22ef0d){var _0x3aba20=moment()[_0x5fc7('0x45')](0x0);var _0x5ed4e0=moment(_0x22ef0d)[_0x5fc7('0x45')](0x0);return _0x3aba20[_0x5fc7('0x46')](_0x5ed4e0,_0x5fc7('0x8a'));}function ifInterval(_0x20a45d,_0x18a0fd){if(_[_0x5fc7('0x38')](_0x18a0fd)){return![];}return getDiff(_0x18a0fd)<_0x20a45d*0x3c;}function freeVariablesPredictive(_0x2c46b3){if(isNotNull(_0x2c46b3)){if(!_[_0x5fc7('0x38')](_0x2c46b3['startProgressive'])){_0x2c46b3['startProgressive']=undefined;loggerPredictive[_0x5fc7('0x79')](_0x2c46b3['name'],_0x5fc7('0x8b'));}if(!_[_0x5fc7('0x38')](_0x2c46b3['startPredictive'])){_0x2c46b3[_0x5fc7('0x21')]=undefined;loggerPredictive['info'](_0x2c46b3[_0x5fc7('0x3b')],_0x5fc7('0x8c'));}if(!_[_0x5fc7('0x38')](_0x2c46b3[_0x5fc7('0x8d')])){clearInterval(_0x2c46b3[_0x5fc7('0x8d')]);_0x2c46b3['handlePredictive']=undefined;loggerPredictive[_0x5fc7('0x79')](_0x2c46b3[_0x5fc7('0x3b')],'clearing\x20variable\x20handle\x20predictive');}}}function erlangb(_0x1790db,_0x31a753){if(_0x31a753===0x0){return 0x0;}var _0x5b0d7a=0x1;for(var _0x29a00c=0x1;_0x29a00c<=_0x31a753;_0x29a00c+=0x1){_0x5b0d7a=0x1+_0x5b0d7a*_0x29a00c/_0x1790db;}return 0x1/_0x5b0d7a;}function isVoiceQueueOutbound(_0x5af29e){return _0x5af29e==='outbound';}function isNotPreview(_0x47d58f){return _0x47d58f!==_0x5fc7('0x19');}function isCampaignIvr(_0x288cfc){return _0x288cfc==='ivr';}function getCallerId(_0x26a34c,_0x16656f,_0x10cf5d){if(!_[_0x5fc7('0x38')](_0x10cf5d)&&typeof _0x10cf5d===_0x5fc7('0x8e')&&!_[_0x5fc7('0x78')](_0x10cf5d)){if(!_[_0x5fc7('0x38')](_0x16656f)&&typeof _0x16656f===_0x5fc7('0x8e')&&!_[_0x5fc7('0x78')](_0x16656f)){return util['format']('\x22%s\x22\x20<%s>',_0x16656f,_0x10cf5d);}return util[_0x5fc7('0x72')]('\x22%s\x22\x20<%s>',_0x10cf5d,_0x10cf5d);}if(!_[_0x5fc7('0x38')](_0x26a34c)&&typeof _0x26a34c==='string'&&!_[_0x5fc7('0x78')](_0x26a34c)){return _0x26a34c;}return _0x5fc7('0x8f');}function loggerCatchQueueSummary(_0x18f7bf,_0x21a668){return function(_0x1ec6e5){freeVariablesPredictive(_0x21a668);emitVoiceQueueSummary(_0x21a668);emitCampaignSummary(_0x21a668);loggerSyncQueueSummary[_0x5fc7('0x90')](_0x18f7bf,util[_0x5fc7('0x91')](_0x1ec6e5,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x29fab1,_0x2bd83f){return function(_0x157b7c){loggerPredictive['error'](_0x2bd83f[_0x5fc7('0x3b')],_0x29fab1);loggerPredictive[_0x5fc7('0x90')](_0x157b7c[_0x5fc7('0x92')]);freeVariablesPredictive(_0x2bd83f);};}function loggerCatch(_0x4beb3d){return function(_0x3ab982){logger[_0x5fc7('0x90')](_0x4beb3d,util['inspect'](_0x3ab982,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x2ede0c){return _0x2ede0c&&!_[_0x5fc7('0x38')](_0x2ede0c)&&_0x2ede0c[_0x5fc7('0x93')]>0x0;}function decremetOriginate(_0x8dacdc){if(!_['isUndefined'](_0x8dacdc)&&_0x8dacdc!==null){if(typeof _0x8dacdc[_0x5fc7('0x69')]!=='undefined'){if(_0x8dacdc[_0x5fc7('0x69')]>0x0){_0x8dacdc[_0x5fc7('0x69')]-=0x1;}else{logger[_0x5fc7('0x90')]('[decremetOriginate]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0x5fc7('0x90')]('[decremetOriginate]\x20is\x20null\x20or\x20undefined');}}function checkContactLowerLimitOriginate(_0x119a5d,_0x3e3db9,_0x1802b2){if(_0x3e3db9>_0x1802b2){for(var _0x5e0169=0x0;_0x5e0169<_0x3e3db9-_0x1802b2;_0x5e0169+=0x1){decremetOriginate(_0x119a5d);}}}function loggerGetContactDialer(_0xe63193,_0x3f3acd,_0x46c44a){return function(_0xc34646){checkContactLowerLimitOriginate(_0x3f3acd,_0x46c44a,0x0);logger[_0x5fc7('0x90')](_0xe63193,util[_0x5fc7('0x91')](_0xc34646,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x196c27){return function(_0x135191){if(isNotNull(_0x135191)&&isNotNull(_0x135191[0x0])){if(_0x135191[0x0][_0x5fc7('0x94')]>0x0){_0x196c27[_0x5fc7('0x39')]=_0x5fc7('0x95');logger['info'](_0x5fc7('0x96')+_0x196c27[_0x5fc7('0x3b')],_0x135191[0x0][_0x5fc7('0x94')],_0x5fc7('0x97'));}else{_0x196c27[_0x5fc7('0x39')]='AVAILABLE_CONTACTS_FINISHED';logger[_0x5fc7('0x79')]('[getContactDialer2][Empty]'+_0x196c27[_0x5fc7('0x3b')]);}}};}function notSendMessagesQueue(_0x56d0f4){if(_0x56d0f4['sendMessageOneNotActive']){freeVariablesPredictive(_0x56d0f4);if(_0x56d0f4[_0x5fc7('0x69')]===0x0&&_0x56d0f4[_0x5fc7('0x4d')]===0x0&&_0x56d0f4['waiting']===0x0&&(_0x56d0f4[_0x5fc7('0x4b')]||0x0)===0x0){_0x56d0f4[_0x5fc7('0x98')]=![];_0x56d0f4['available']=0x0;_0x56d0f4[_0x5fc7('0x39')]=_0x5fc7('0x3d');loggerSyncQueueSummary['error']('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x56d0f4[_0x5fc7('0x3b')],'is\x20not\x20active');}else{_0x56d0f4[_0x5fc7('0x39')]=_0x5fc7('0x99');loggerSyncQueueSummary[_0x5fc7('0x90')](_0x5fc7('0x9a'),_0x56d0f4[_0x5fc7('0x3b')],_0x5fc7('0x9b'));}emitVoiceQueueSummary(_0x56d0f4);}}function notSendMessagesCampaign(_0x414f6a){if(_0x414f6a[_0x5fc7('0x98')]){if(_0x414f6a['originated']===0x0){_0x414f6a[_0x5fc7('0x98')]=![];_0x414f6a[_0x5fc7('0x39')]=_0x5fc7('0x3d');loggerSyncQueueSummary[_0x5fc7('0x90')](_0x5fc7('0x9c'),_0x414f6a[_0x5fc7('0x3b')],_0x5fc7('0x9d'));}else{_0x414f6a[_0x5fc7('0x39')]=_0x5fc7('0x99');loggerSyncQueueSummary['error']('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x414f6a[_0x5fc7('0x3b')],_0x5fc7('0x9b'));}emitCampaignSummary(_0x414f6a);}}function createObjHistory(_0x3e226e,_0x370b4c,_0x2260ee,_0x1706f9,_0x191c00){_0x3e226e[_0x5fc7('0x39')]=_0x2260ee;var _0x42b02d=new Action(_0x3e226e,_0x370b4c);var _0x3e7db8=new History(_0x42b02d);_0x3e7db8[_0x5fc7('0x9e')]=_0x1706f9;_0x3e7db8[_0x5fc7('0x9f')]=_0x191c00;_0x3e7db8['endtime']=_0x42b02d['starttime'];return _0x3e7db8;}Dialer[_0x5fc7('0x14')][_0x5fc7('0x37')]=function(){var _0x2f0937=this;setInterval(function(){_0x2f0937[_0x5fc7('0xa0')](_0x2f0937[_0x5fc7('0xa1')],_0x5fc7('0xa2'));_0x2f0937[_0x5fc7('0xa0')](_0x2f0937[_0x5fc7('0x1f')],_0x5fc7('0xa3'));},0x32c8);};Dialer['prototype'][_0x5fc7('0xa0')]=function(_0x44fa29,_0x4c0b72){var _0x6a3f5=this;for(var _0x116416 in _0x44fa29){if(typeof _0x44fa29[_0x116416]!=='undefined'){this[_0x5fc7('0x18')][_0x5fc7('0x15')](function(){if(!_[_0x5fc7('0xa4')](_0x44fa29[_0x116416])){return ami[_0x5fc7('0xa5')]({'action':_0x5fc7('0xa6'),'channel':_0x44fa29[_0x116416]['channel']})[_0x5fc7('0xa7')](function(_0x465795){if(_0x465795[_0x5fc7('0x39')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x44fa29[_0x116416]&&_0x44fa29[_0x116416][_0x5fc7('0x4e')]!==_0x5fc7('0x75')){_0x6a3f5[_0x5fc7('0xa8')](_0x6a3f5[_0x5fc7('0xa9')][_0x44fa29[_0x116416][_0x5fc7('0xaa')]]);logger[_0x5fc7('0x90')]('[Dialer][checkChannel]',_0x4c0b72,_0x116416,_0x44fa29[_0x116416][_0x5fc7('0xaa')]);delete _0x44fa29[_0x116416];}if(_0x44fa29[_0x116416]&&_0x44fa29[_0x116416][_0x5fc7('0x4e')]===_0x5fc7('0x75')){_0x6a3f5[_0x5fc7('0xa8')](_0x6a3f5[_0x5fc7('0x1a')][_0x44fa29[_0x116416][_0x5fc7('0xaa')]]);logger[_0x5fc7('0x90')](_0x5fc7('0xab'),_0x4c0b72,_0x116416,_0x44fa29[_0x116416][_0x5fc7('0xaa')]);delete _0x44fa29[_0x116416];}},0x2328);}});}});}}};Dialer['prototype']['countReScheduled']=function(_0x192711){return BPromise[_0x5fc7('0xac')]()[_0x5fc7('0xad')](cmHopper['countReScheduled'](_0x192711))[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0xae')));};Dialer[_0x5fc7('0x14')][_0x5fc7('0xaf')]=function(_0x14e6f9){return BPromise[_0x5fc7('0xac')]()[_0x5fc7('0xad')](cmHopperBlack[_0x5fc7('0xaf')](_0x14e6f9))['catch'](loggerCatch(_0x5fc7('0xb0')));};Dialer[_0x5fc7('0x14')]['checkIsBlackListIvr']=function(_0x371527){return BPromise[_0x5fc7('0xac')]()[_0x5fc7('0xad')](cmHopperBlack[_0x5fc7('0xb1')](_0x371527))[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0xb2')));};Dialer[_0x5fc7('0x14')][_0x5fc7('0xb3')]=function(_0x5c26bd){return BPromise[_0x5fc7('0xac')]()[_0x5fc7('0xad')](cmHopperHistory[_0x5fc7('0xb4')](_0x5c26bd))[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0xb5')));};Dialer[_0x5fc7('0x14')][_0x5fc7('0xb6')]=function(_0x26ceeb){return BPromise[_0x5fc7('0xac')]()['then'](cmHopper['rescheduleContact'](_0x26ceeb))['catch'](loggerCatch(_0x5fc7('0xb7')));};Dialer[_0x5fc7('0x14')][_0x5fc7('0xb8')]=function(_0xf8535c,_0x1d952e,_0x244b8b){return BPromise[_0x5fc7('0xac')]()[_0x5fc7('0xad')](cmHopper[_0x5fc7('0xb8')](_0xf8535c,_0x1d952e,_0x244b8b))['catch'](loggerCatch(_0x5fc7('0xb9')));};Dialer[_0x5fc7('0x14')][_0x5fc7('0xba')]=function(_0x41e44c,_0x40a80c,_0x1287fb,_0x2c4cd4,_0x3c0d2f){return BPromise[_0x5fc7('0xac')]()[_0x5fc7('0xad')](cmHopper[_0x5fc7('0xba')](_0x41e44c,_0x40a80c,_0x1287fb,_0x2c4cd4))[_0x5fc7('0xa7')](function(_0x3b116b){_0x3c0d2f[_0x5fc7('0xbb')]-=_0x1287fb;_0x3c0d2f[_0x5fc7('0xbb')]=_0x3c0d2f[_0x5fc7('0xbb')]>0x0?_0x3c0d2f['temp']:0x0;loggerCatch(_0x5fc7('0xbc'))(_0x3b116b);});};Dialer[_0x5fc7('0x14')][_0x5fc7('0xbd')]=function(_0x4aa79c,_0x293a5c,_0x2e3d39,_0x2ef7c5){return BPromise[_0x5fc7('0xac')]()[_0x5fc7('0xad')](cmHopper['getContactDialerIvr'](_0x4aa79c,_0x293a5c,_0x2e3d39))[_0x5fc7('0xa7')](function(_0x28d591){_0x2ef7c5[_0x5fc7('0xbb')]-=_0x293a5c;_0x2ef7c5['temp']=_0x2ef7c5[_0x5fc7('0xbb')]>0x0?_0x2ef7c5['temp']:0x0;loggerCatch(_0x5fc7('0xbe'))(_0x28d591);});};Dialer[_0x5fc7('0x14')][_0x5fc7('0xbf')]=function(_0x9706a5){return BPromise[_0x5fc7('0xac')]()[_0x5fc7('0xad')](voiceQueueRt['getVoiceQueueRtPauses'](_0x9706a5))['catch'](loggerCatch(_0x5fc7('0xc0')));};Dialer['prototype']['moveContactManagedDialer']=function(_0x279488){return BPromise[_0x5fc7('0xac')]()[_0x5fc7('0xad')](cmHopper[_0x5fc7('0xc1')](_0x279488))[_0x5fc7('0xa7')](loggerCatch('[moveContactManagedDialer]\x20'));};Dialer['prototype'][_0x5fc7('0xc2')]=function(_0x2c6f2f){return BPromise[_0x5fc7('0xac')]()[_0x5fc7('0xad')](cmHopperHistory[_0x5fc7('0xc2')](_0x2c6f2f))[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0xc3')));};Dialer['prototype']['updateOriginated']=function(_0x3a45e8){if(!_[_0x5fc7('0x38')](_0x3a45e8)&&_0x3a45e8!==null){if(typeof _0x3a45e8[_0x5fc7('0x69')]!==_0x5fc7('0xc4')){if(_0x3a45e8['originated']>0x0){_0x3a45e8[_0x5fc7('0x69')]-=0x1;}else{logger[_0x5fc7('0x90')](_0x5fc7('0xc5'));}}}else{logger[_0x5fc7('0x90')](_0x5fc7('0xc6'));}};Dialer[_0x5fc7('0x14')][_0x5fc7('0xc7')]=function(_0x5bc71d,_0x5ef3bb){var _0x56f7d5=this;return function(_0x25ac0f){_0x56f7d5[_0x5fc7('0xa8')](_0x5ef3bb);logger[_0x5fc7('0x90')](_0x5bc71d,util[_0x5fc7('0x91')](_0x25ac0f,{'showHidden':![],'depth':null}));};};Dialer[_0x5fc7('0x14')][_0x5fc7('0xc8')]=function(_0x303119,_0x6bb947,_0x77d6fe){var _0x4ed3d0={'state':0x19,'statedesc':_0x5fc7('0xc9')};this['updateOriginated'](_0x6bb947);this[_0x5fc7('0xca')](_[_0x5fc7('0x89')](_0x4ed3d0,_[_0x5fc7('0xcb')](_0x77d6fe,[_0x5fc7('0xcc'),_0x5fc7('0xcd'),_0x5fc7('0xce'),'VoiceQueueId',_0x5fc7('0xcf')])),'[emptyContact][createHistory]',_0x5fc7('0xd0'));logger[_0x5fc7('0x90')](_0x303119);};Dialer['prototype'][_0x5fc7('0xd1')]=function(_0x183f8e){return _0x183f8e===_0x5fc7('0xd2');};Dialer[_0x5fc7('0x14')]['isTrunkReachable']=function(_0x21e2d5){return!_[_0x5fc7('0x38')](_0x21e2d5)&&_0x21e2d5&&!_['isUndefined'](_0x21e2d5[_0x5fc7('0x3b')])&&!_['isUndefined'](_0x21e2d5[_0x5fc7('0x6f')])&&_0x21e2d5['active']&&(this[_0x5fc7('0x1c')][util['format']('SIP/%s',_0x21e2d5[_0x5fc7('0x3b')])]['status']==='reachable'||this[_0x5fc7('0x1c')][util[_0x5fc7('0x72')]('SIP/%s',_0x21e2d5[_0x5fc7('0x3b')])][_0x5fc7('0xa6')]===_0x5fc7('0xd3'));};Dialer['prototype'][_0x5fc7('0xca')]=function(_0x2c14ce,_0x565117,_0x2c8a2c){this[_0x5fc7('0xc2')](_0x2c14ce)[_0x5fc7('0xa7')](loggerCatch(_0x565117));this['moveContactManagedDialer'](_0x2c14ce)[_0x5fc7('0xa7')](loggerCatch(_0x2c8a2c));};Dialer['prototype'][_0x5fc7('0xd4')]=function(_0x4fe9b5){var _0x82d51c=this[_0x5fc7('0xa1')][_0x4fe9b5[_0x5fc7('0xd5')]];var _0x135438;if(!_[_0x5fc7('0xa4')](_0x4fe9b5)&&!_[_0x5fc7('0xa4')](_0x4fe9b5[_0x5fc7('0xd6')])&&!_[_0x5fc7('0xa4')](_0x4fe9b5[_0x5fc7('0xd6')][_0x5fc7('0xd7')])&&_0x4fe9b5['exten']==='xcally-motion-dialer'&&_0x82d51c){if(_0x82d51c[_0x5fc7('0x4e')]!==_0x5fc7('0x75')&&this[_0x5fc7('0xa9')][_0x82d51c['queue']]['dialAMDActive']&&_0x4fe9b5['value']===_0x5fc7('0xd8')){delete this[_0x5fc7('0xa1')][_0x4fe9b5[_0x5fc7('0xd5')]];this[_0x5fc7('0xa8')](this['voiceQueues'][_0x82d51c['queue']]);this[_0x5fc7('0xa9')][_0x82d51c['queue']][_0x5fc7('0xd9')]+=0x1;this[_0x5fc7('0xa9')][_0x82d51c[_0x5fc7('0xaa')]][_0x5fc7('0x56')]+=0x1;_0x135438=new Hangup(_0x82d51c,_0x4fe9b5);_0x135438[_0x5fc7('0x9e')]=0x12;_0x135438[_0x5fc7('0x9f')]=_0x5fc7('0xda');_0x135438[_0x5fc7('0xdb')]=_0x5fc7('0xdc');ami[_0x5fc7('0x47')](_0x5fc7('0xdd'),ut['buildObj'](_0x135438,'amd'));this['saveInDb'](_0x135438,_0x5fc7('0xde'),_0x5fc7('0xdf'));}if(_0x82d51c['type']!==_0x5fc7('0x75')&&this['voiceQueues'][_0x82d51c[_0x5fc7('0xaa')]][_0x5fc7('0xe0')]&&_0x4fe9b5['value']==='MACHINE'){var _0x218d73=this;return new BPromise(function(_0xd01f6b,_0x441052){delete _0x218d73['uniqueId'][_0x4fe9b5['uniqueid']];_0x218d73[_0x5fc7('0xa8')](_0x218d73[_0x5fc7('0xa9')][_0x82d51c[_0x5fc7('0xaa')]]);_0x218d73['voiceQueues'][_0x82d51c[_0x5fc7('0xaa')]][_0x5fc7('0xd9')]+=0x1;_0x218d73[_0x5fc7('0xa9')][_0x82d51c[_0x5fc7('0xaa')]][_0x5fc7('0x56')]+=0x1;var _0x443596=_0x218d73['voiceQueues'][_0x82d51c['queue']];var _0x3264ab=new Hangup(_0x82d51c,_0x4fe9b5);_0x3264ab[_0x5fc7('0x9e')]=0x13;_0x3264ab[_0x5fc7('0x9f')]=_0x5fc7('0xe1');_0x3264ab[_0x5fc7('0xdb')]='AMD';_0x3264ab['countmachineretry']+=0x1;_0x3264ab[_0x5fc7('0xe2')]+=0x1;_0x3264ab[_0x5fc7('0xe3')]=!![];ami[_0x5fc7('0x47')](_0x5fc7('0xdd'),ut[_0x5fc7('0xe4')](_0x3264ab,_0x5fc7('0xe3')));_0x218d73[_0x5fc7('0xc2')](_0x3264ab)['catch'](loggerCatch(_0x5fc7('0xe5')));if(_0x3264ab[_0x5fc7('0xe6')]+_0x3264ab[_0x5fc7('0xe7')]+_0x3264ab[_0x5fc7('0xe8')]+_0x3264ab['countnosuchnumberretry']+_0x3264ab['countdropretry']+_0x3264ab[_0x5fc7('0xe9')]+_0x3264ab['countmachineretry']+_0x3264ab['countagentrejectretry']>=_0x443596[_0x5fc7('0xea')]){_0x218d73[_0x5fc7('0xeb')](_0x3264ab,_0xd01f6b,_0x441052,_0x5fc7('0xec'));}else{if(_0x3264ab[_0x5fc7('0xed')]>=_0x443596[_0x5fc7('0xee')]){_0x218d73[_0x5fc7('0xef')](_0x3264ab,_0xd01f6b,_0x441052,_0x5fc7('0xf0'));}else{_0x218d73[_0x5fc7('0xb6')]({'active':![],'countmachineretry':_0x3264ab['countmachineretry'],'scheduledat':moment()[_0x5fc7('0xf1')](_0x443596['dialMachineRetryFrequency'],_0x5fc7('0xf2'))[_0x5fc7('0x72')](_0x5fc7('0xf3')),'ContactId':_0x3264ab['ContactId'],'ListId':_0x3264ab[_0x5fc7('0xcd')],'VoiceQueueId':_0x3264ab['VoiceQueueId']||undefined,'CampaignId':_0x3264ab[_0x5fc7('0xcf')]||undefined})[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0xf4')));_0xd01f6b({'reschedule':0x1});}}});}if(_0x82d51c[_0x5fc7('0x4e')]==='ivr'&&this[_0x5fc7('0x1a')][_0x82d51c[_0x5fc7('0xaa')]][_0x5fc7('0xe0')]&&_0x4fe9b5[_0x5fc7('0xf5')]==='HANGUP'){delete this[_0x5fc7('0xa1')][_0x4fe9b5[_0x5fc7('0xd5')]];this[_0x5fc7('0xa8')](this['campaigns'][_0x82d51c[_0x5fc7('0xaa')]]);_0x135438=new Hangup(_0x82d51c,_0x4fe9b5);_0x135438[_0x5fc7('0x9e')]=0x12;_0x135438['statedesc']=_0x5fc7('0xda');_0x135438[_0x5fc7('0xdb')]=_0x5fc7('0xdc');ami[_0x5fc7('0x47')](_0x5fc7('0xdd'),ut[_0x5fc7('0xe4')](_0x135438,_0x5fc7('0xe3')));this[_0x5fc7('0xca')](_0x135438,_0x5fc7('0xf6'),_0x5fc7('0xf7'));}if(_0x82d51c[_0x5fc7('0x4e')]===_0x5fc7('0x75')&&this[_0x5fc7('0x1a')][_0x82d51c[_0x5fc7('0xaa')]][_0x5fc7('0xe0')]&&_0x4fe9b5[_0x5fc7('0xf5')]===_0x5fc7('0xf8')){var _0x218d73=this;return new BPromise(function(_0x2a5585,_0x20e801){delete _0x218d73[_0x5fc7('0xa1')][_0x4fe9b5[_0x5fc7('0xd5')]];_0x218d73[_0x5fc7('0xa8')](_0x218d73[_0x5fc7('0x1a')][_0x82d51c[_0x5fc7('0xaa')]]);_0x218d73[_0x5fc7('0x1a')][_0x82d51c[_0x5fc7('0xaa')]][_0x5fc7('0xd9')]+=0x1;_0x218d73['campaigns'][_0x82d51c[_0x5fc7('0xaa')]][_0x5fc7('0x56')]+=0x1;var _0x111f57=_0x218d73[_0x5fc7('0x1a')][_0x82d51c[_0x5fc7('0xaa')]];var _0x52268a=new Hangup(_0x82d51c,_0x4fe9b5);_0x52268a[_0x5fc7('0x9e')]=0x13;_0x52268a['statedesc']=_0x5fc7('0xe1');_0x52268a[_0x5fc7('0xdb')]=_0x5fc7('0xdc');_0x52268a[_0x5fc7('0xed')]+=0x1;_0x52268a[_0x5fc7('0xe2')]+=0x1;_0x52268a[_0x5fc7('0xe3')]=!![];ami['emit'](_0x5fc7('0xdd'),ut['buildObj'](_0x52268a,_0x5fc7('0xe3')));_0x218d73[_0x5fc7('0xc2')](_0x52268a)[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0xe5')));if(_0x52268a[_0x5fc7('0xe6')]+_0x52268a[_0x5fc7('0xe7')]+_0x52268a[_0x5fc7('0xe8')]+_0x52268a['countnosuchnumberretry']+_0x52268a[_0x5fc7('0xf9')]+_0x52268a[_0x5fc7('0xe9')]+_0x52268a[_0x5fc7('0xed')]+_0x52268a['countagentrejectretry']>=_0x111f57['dialGlobalMaxRetry']){_0x218d73[_0x5fc7('0xeb')](_0x52268a,_0x2a5585,_0x20e801,'reason19\x20machine....');}else{if(_0x52268a[_0x5fc7('0xed')]>=_0x111f57[_0x5fc7('0xee')]){_0x218d73[_0x5fc7('0xef')](_0x52268a,_0x2a5585,_0x20e801,_0x5fc7('0xf0'));}else{_0x218d73[_0x5fc7('0xb6')]({'active':![],'countmachineretry':_0x52268a[_0x5fc7('0xed')],'scheduledat':moment()[_0x5fc7('0xf1')](_0x111f57['dialMachineRetryFrequency'],'minutes')[_0x5fc7('0x72')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x52268a[_0x5fc7('0xcc')],'ListId':_0x52268a[_0x5fc7('0xcd')],'VoiceQueueId':_0x52268a[_0x5fc7('0xfa')]||undefined,'CampaignId':_0x52268a[_0x5fc7('0xcf')]||undefined})['catch'](loggerCatch(_0x5fc7('0xf4')));_0x2a5585({'reschedule':0x1});}}});}}};Dialer[_0x5fc7('0x14')][_0x5fc7('0x30')]=function(_0x2195f4){var _0x34d224=this['uniqueId'][_0x2195f4[_0x5fc7('0xd5')]];var _0x4edaea=this;var _0x583c1a;if(_0x34d224&&_0x34d224['type']==='ivr'){delete this[_0x5fc7('0xa1')][_0x2195f4[_0x5fc7('0xd5')]];this[_0x5fc7('0xa8')](this[_0x5fc7('0x1a')][_0x34d224['queue']]);this['campaigns'][_0x34d224[_0x5fc7('0xaa')]][_0x5fc7('0xfb')]+=0x1;_0x583c1a=new Hangup(_0x34d224,_0x2195f4);this[_0x5fc7('0xc2')](_0x583c1a)[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0xfc')));this['moveContactManagedDialer'](_0x583c1a)[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0xfd')));}if(_0x34d224&&_0x34d224['type']!==_0x5fc7('0x75')&&isNotNull(this[_0x5fc7('0xa9')][_0x34d224['queue']][_0x5fc7('0xfe')])){delete this[_0x5fc7('0xa1')][_0x2195f4['uniqueid']];this[_0x5fc7('0xa8')](this['voiceQueues'][_0x34d224['queue']]);this[_0x5fc7('0xa9')][_0x34d224[_0x5fc7('0xaa')]][_0x5fc7('0xd9')]+=0x1;this['voiceQueues'][_0x34d224[_0x5fc7('0xaa')]][_0x5fc7('0x56')]+=0x1;_0x583c1a=new Hangup(_0x34d224,_0x2195f4);_0x583c1a['state']=0x10;_0x583c1a[_0x5fc7('0x9f')]=_0x5fc7('0xff');_0x583c1a['membername']=_0x5fc7('0x100');this['createHistory'](_0x583c1a)['catch'](loggerCatch(_0x5fc7('0xfc')));this['moveContactManagedDialer'](_0x583c1a)[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0xfd')));}if(_0x34d224&&_0x34d224[_0x5fc7('0x4e')]!==_0x5fc7('0x75')&&!isNotNull(this[_0x5fc7('0xa9')][_0x34d224[_0x5fc7('0xaa')]][_0x5fc7('0xfe')])){delete this[_0x5fc7('0xa1')][_0x2195f4[_0x5fc7('0xd5')]];this[_0x5fc7('0xa8')](this[_0x5fc7('0xa9')][_0x34d224['queue']]);this[_0x5fc7('0xa9')][_0x34d224[_0x5fc7('0xaa')]][_0x5fc7('0x60')]+=0x1;_0x583c1a=new Hangup(_0x34d224,_0x2195f4);_0x583c1a[_0x5fc7('0x9e')]=0xc;_0x583c1a[_0x5fc7('0x9f')]=_0x2195f4[_0x5fc7('0x101')];_0x583c1a[_0x5fc7('0xdb')]=_0x5fc7('0x102');this[_0x5fc7('0xc2')](_0x583c1a)[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0xfc')));this[_0x5fc7('0xc1')](_0x583c1a)[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0xfd')));}};Dialer[_0x5fc7('0x14')][_0x5fc7('0x103')]=function(_0x1a59bd){var _0x3fc711=this[_0x5fc7('0xa1')][_0x1a59bd[_0x5fc7('0xd5')]];var _0x51bf0c=this;if(this[_0x5fc7('0xa9')][_0x1a59bd['queue']]){if(_0x3fc711&&_0x3fc711[_0x5fc7('0x4e')]!==_0x5fc7('0x75')){delete this[_0x5fc7('0xa1')][_0x1a59bd['uniqueid']];this[_0x5fc7('0xa9')][_0x1a59bd[_0x5fc7('0xaa')]][_0x5fc7('0xd9')]+=0x1;var _0x16eec0=new AgentComplete(_0x3fc711,_0x1a59bd);if(_0x1a59bd[_0x5fc7('0x104')]===_0x5fc7('0x105')){_0x16eec0[_0x5fc7('0x106')]=this['voiceQueues'][_0x1a59bd[_0x5fc7('0xaa')]]['dialQueueProject2']&&this[_0x5fc7('0xa9')][_0x1a59bd['queue']][_0x5fc7('0x107')]?moment()['format'](_0x5fc7('0xf3')):undefined;}this[_0x5fc7('0xc2')](_0x16eec0)['catch'](loggerCatch('[syncAgentComplete][createHistory]'));this[_0x5fc7('0xc1')](_0x16eec0)[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0x108')));}}};Dialer['prototype'][_0x5fc7('0x27')]=function(_0x590d48){if(this[_0x5fc7('0xa9')][_0x590d48[_0x5fc7('0xaa')]]){if(this[_0x5fc7('0xa1')][_0x590d48[_0x5fc7('0xd5')]]&&this[_0x5fc7('0xa1')][_0x590d48[_0x5fc7('0xd5')]][_0x5fc7('0x4e')]!==_0x5fc7('0x75')){this[_0x5fc7('0xa8')](this[_0x5fc7('0xa9')][_0x590d48[_0x5fc7('0xaa')]]);this[_0x5fc7('0xa1')][_0x590d48[_0x5fc7('0xd5')]][_0x5fc7('0x109')]=moment()['format'](_0x5fc7('0xf3'));}}};Dialer[_0x5fc7('0x14')][_0x5fc7('0x10a')]=function(_0x311b9c){this[_0x5fc7('0xc2')](_0x311b9c)[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0x10b')));this[_0x5fc7('0xc1')](_0x311b9c)[_0x5fc7('0xa7')](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));};Dialer['prototype'][_0x5fc7('0x10c')]=function(_0x45507a){var _0x16bc5a=this[_0x5fc7('0xa1')][_0x45507a[_0x5fc7('0xd5')]];var _0x3a78d5=this;if(this['voiceQueues'][_0x45507a[_0x5fc7('0xaa')]]){if(_0x16bc5a&&_0x16bc5a[_0x5fc7('0x4e')]!==_0x5fc7('0x75')){delete this['uniqueId'][_0x45507a[_0x5fc7('0xd5')]];this[_0x5fc7('0xa8')](this[_0x5fc7('0xa9')][_0x45507a['queue']]);_0x16bc5a['droptime']=moment()[_0x5fc7('0x72')](_0x5fc7('0xf3'));var _0x1ece4a=new QueueCallerAbandon(_0x16bc5a,_0x45507a);if(getSeconds(_0x16bc5a[_0x5fc7('0x10d')],_0x16bc5a['responsetime'])>=_0x16bc5a['dialQueueTimeout']){this[_0x5fc7('0xa9')][_0x45507a[_0x5fc7('0xaa')]][_0x5fc7('0x62')]+=0x1;this['voiceQueues'][_0x45507a[_0x5fc7('0xaa')]][_0x5fc7('0x5b')]+=0x1;this[_0x5fc7('0xa9')][_0x45507a[_0x5fc7('0xaa')]][_0x5fc7('0x63')]+=0x1;_0x1ece4a[_0x5fc7('0x9e')]=0xa;_0x1ece4a['statedesc']='Drop';_0x1ece4a[_0x5fc7('0x10e')]='TIMEOUT';_0x1ece4a['agiafterat']=this[_0x5fc7('0xa9')][_0x45507a[_0x5fc7('0xaa')]][_0x5fc7('0x10f')]?moment()[_0x5fc7('0x72')]('YYYY-MM-DD\x20HH:mm:ss'):undefined;_0x1ece4a['countdropretry']+=0x1;_0x1ece4a['countglobal']+=0x1;if(_0x1ece4a[_0x5fc7('0xf9')]>=this[_0x5fc7('0xa9')][_0x45507a[_0x5fc7('0xaa')]][_0x5fc7('0x110')]){this['queueCallerAbandonCreateState'](_0x1ece4a);}else{this[_0x5fc7('0xb6')]({'active':![],'countdropretry':_0x1ece4a[_0x5fc7('0xf9')],'scheduledat':moment()[_0x5fc7('0xf1')](this[_0x5fc7('0xa9')][_0x45507a['queue']][_0x5fc7('0x111')],_0x5fc7('0xf2'))[_0x5fc7('0x72')](_0x5fc7('0xf3')),'ContactId':_0x16bc5a[_0x5fc7('0xcc')],'ListId':_0x16bc5a[_0x5fc7('0xcd')],'VoiceQueueId':_0x16bc5a[_0x5fc7('0xfa')]||undefined,'CampaignId':_0x16bc5a['CampaignId']||undefined})['catch'](loggerCatch(_0x5fc7('0x112')));var _0x2774b1=new History(_0x1ece4a);_0x2774b1[_0x5fc7('0x9e')]=0xa;_0x2774b1[_0x5fc7('0x9f')]=_0x5fc7('0x113');_0x2774b1[_0x5fc7('0x114')]=moment()['format'](_0x5fc7('0xf3'));_0x2774b1[_0x5fc7('0x115')]=_0x2774b1['starttime'];_0x2774b1['calleridname']=_0x1ece4a[_0x5fc7('0x116')];_0x2774b1[_0x5fc7('0x117')]=_0x1ece4a[_0x5fc7('0x117')];this[_0x5fc7('0xc2')](_0x2774b1)[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0x118')));}}else{this[_0x5fc7('0xa9')][_0x45507a['queue']]['predictiveIntervalDroppedCallsCallersExit']+=0x1;this[_0x5fc7('0xa9')][_0x45507a[_0x5fc7('0xaa')]][_0x5fc7('0x5a')]+=0x1;_0x1ece4a[_0x5fc7('0x9e')]=0xb;_0x1ece4a[_0x5fc7('0x9f')]=_0x5fc7('0x119');_0x1ece4a['dropreason']=_0x5fc7('0x11a');_0x1ece4a['countabandonedretry']+=0x1;_0x1ece4a[_0x5fc7('0xe2')]+=0x1;if(_0x1ece4a[_0x5fc7('0xe9')]>=this[_0x5fc7('0xa9')][_0x45507a[_0x5fc7('0xaa')]][_0x5fc7('0x11b')]){this[_0x5fc7('0x10a')](_0x1ece4a);}else{this[_0x5fc7('0xb6')]({'active':![],'countabandonedretry':_0x1ece4a['countabandonedretry'],'scheduledat':moment()[_0x5fc7('0xf1')](this[_0x5fc7('0xa9')][_0x45507a['queue']][_0x5fc7('0x11c')],'minutes')['format'](_0x5fc7('0xf3')),'ContactId':_0x16bc5a['ContactId'],'ListId':_0x16bc5a[_0x5fc7('0xcd')],'VoiceQueueId':_0x16bc5a[_0x5fc7('0xfa')]||undefined,'CampaignId':_0x16bc5a[_0x5fc7('0xcf')]||undefined})[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0x11d')));var _0x2774b1=new History(_0x1ece4a);_0x2774b1[_0x5fc7('0x9e')]=0xb;_0x2774b1[_0x5fc7('0x9f')]=_0x5fc7('0x119');_0x2774b1[_0x5fc7('0x114')]=moment()['format'](_0x5fc7('0xf3'));_0x2774b1[_0x5fc7('0x115')]=_0x2774b1['starttime'];_0x2774b1[_0x5fc7('0x116')]=_0x1ece4a['calleridname'];_0x2774b1['calleridnum']=_0x1ece4a['calleridnum'];this['createHistory'](_0x2774b1)[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0x11e')));}}}}};Dialer[_0x5fc7('0x14')][_0x5fc7('0x11f')]=function(_0x56ac7c){if(this['actions'][_0x56ac7c[_0x5fc7('0xd5')]]){this[_0x5fc7('0x1f')][_0x56ac7c[_0x5fc7('0xd5')]][_0x5fc7('0x120')]=_0x56ac7c[_0x5fc7('0x120')];}if(this[_0x5fc7('0xa1')][_0x56ac7c[_0x5fc7('0xd5')]]){this[_0x5fc7('0xa1')][_0x56ac7c['uniqueid']][_0x5fc7('0x120')]=_0x56ac7c[_0x5fc7('0x120')];}};Dialer[_0x5fc7('0x14')][_0x5fc7('0x33')]=function(_0x1025db){if(strategy[this[_0x5fc7('0xa9')][this['actions'][_0x1025db['actionid']][_0x5fc7('0xaa')]]['strategy']]===_0x5fc7('0x13')){if(this[_0x5fc7('0x1f')][_0x1025db[_0x5fc7('0x121')]]&&_['isNil'](this[_0x5fc7('0x1f')][_0x1025db['actionid']]['locked'])&&_0x1025db[_0x5fc7('0xa6')]==='1'&&_0x1025db[_0x5fc7('0x122')]==='0'){if(this[_0x5fc7('0x1b')][_0x1025db[_0x5fc7('0x123')]]){if(!this[_0x5fc7('0x1b')][_0x1025db[_0x5fc7('0x123')]][_0x5fc7('0x124')]){this[_0x5fc7('0x1b')][_0x1025db[_0x5fc7('0x123')]][_0x5fc7('0x124')]=!![];this[_0x5fc7('0x1f')][_0x1025db[_0x5fc7('0x121')]][_0x5fc7('0x124')]=!![];this['actions'][_0x1025db[_0x5fc7('0x121')]]['stateinterface']=_0x1025db[_0x5fc7('0x123')];}}}}else if((strategy[this[_0x5fc7('0xa9')][this[_0x5fc7('0x1f')][_0x1025db[_0x5fc7('0x121')]]['queue']]['strategy']]||_0x5fc7('0x125'))==='rrmemory'){if(this[_0x5fc7('0x1f')][_0x1025db[_0x5fc7('0x121')]]){if(this['agents'][_0x1025db[_0x5fc7('0x123')]]){this[_0x5fc7('0x1f')][_0x1025db[_0x5fc7('0x121')]][_0x5fc7('0x123')]=_0x1025db[_0x5fc7('0x123')];if(_[_0x5fc7('0xa4')](this[_0x5fc7('0x24')][this['actions'][_0x1025db[_0x5fc7('0x121')]][_0x5fc7('0xaa')]])){this[_0x5fc7('0x24')][this[_0x5fc7('0x1f')][_0x1025db[_0x5fc7('0x121')]][_0x5fc7('0xaa')]]=[];}this[_0x5fc7('0x24')][this[_0x5fc7('0x1f')][_0x1025db[_0x5fc7('0x121')]][_0x5fc7('0xaa')]][_0x5fc7('0x126')](_['merge'](_[_0x5fc7('0xcb')](this[_0x5fc7('0x1f')][_0x1025db[_0x5fc7('0x121')]],[_0x5fc7('0x127'),'stateinterface']),{'status':_0x1025db[_0x5fc7('0xa6')],'paused':_0x1025db[_0x5fc7('0x122')]}));}}}};function unlockQueueStatus(_0x1f5ae6,_0x566b70){setTimeout(function(){if(_['isUndefined'](_0x1f5ae6[_0x5fc7('0x128')])){loggerBooked['error']('[unlockQueueStatus][undefined]',_0x566b70);}_0x1f5ae6[_0x5fc7('0x128')]=!![];loggerBooked['info'](_0x5fc7('0x129'),_0x566b70,JSON[_0x5fc7('0x44')](_[_0x5fc7('0xcb')](_0x1f5ae6,['name',_0x5fc7('0x128')])));},0x1f3);}Dialer['prototype'][_0x5fc7('0x35')]=function(_0x290ee9){var _0x375b13=this;var _0xd1b64a=_0x375b13[_0x5fc7('0xa9')][_0x375b13['actions'][_0x290ee9[_0x5fc7('0x121')]]['queue']];if(strategy[this[_0x5fc7('0xa9')][this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0xaa')]][_0x5fc7('0x12a')]]===_0x5fc7('0x13')){if(this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]]&&this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0x123')]){this[_0x5fc7('0x19')]['run'](this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0x127')],this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0x123')])[_0x5fc7('0xa7')](function(_0x2c4d04){logger[_0x5fc7('0x90')](_0x5fc7('0x12b'),util[_0x5fc7('0x91')](_0x2c4d04,{'showHidden':![],'depth':null}));})[_0x5fc7('0x17')](function(){_0x375b13[_0x5fc7('0xa8')](_0x375b13[_0x5fc7('0xa9')][_0x375b13[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0xaa')]]);_0x375b13[_0x5fc7('0x1b')][_0x375b13[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0x123')]][_0x5fc7('0x124')]=![];delete _0x375b13[_0x5fc7('0x1f')][_0x290ee9['actionid']];unlockQueueStatus(_0xd1b64a);});}else{this[_0x5fc7('0xa8')](this[_0x5fc7('0xa9')][this[_0x5fc7('0x1f')][_0x290ee9['actionid']]['queue']]);this['rescheduleContact']({'active':![],'ContactId':this['actions'][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0xcc')],'ListId':this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0xcd')],'VoiceQueueId':this['actions'][_0x290ee9[_0x5fc7('0x121')]]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x290ee9[_0x5fc7('0x121')]]['CampaignId']||undefined})['catch'](loggerCatch(_0x5fc7('0x12c')));delete this['actions'][_0x290ee9[_0x5fc7('0x121')]];unlockQueueStatus(_0xd1b64a);}}else if((strategy[this[_0x5fc7('0xa9')][this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0xaa')]][_0x5fc7('0x12a')]]||_0x5fc7('0x125'))==='rrmemory'){var _0x1bbe32;if(this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]]&&!_[_0x5fc7('0x78')](this['queueBooked'][this['actions'][_0x290ee9[_0x5fc7('0x121')]]['queue']])){if(this[_0x5fc7('0x25')][_0x375b13[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]]['queue']]){this[_0x5fc7('0x25')][_0x375b13[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0xaa')]]=this['queueBookedRR'][this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0xaa')]]?this[_0x5fc7('0x25')][this['actions'][_0x290ee9['actionid']][_0x5fc7('0xaa')]]:this[_0x5fc7('0x24')][this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0xaa')]]?this[_0x5fc7('0x24')][this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]]['queue']][_0x5fc7('0x12d')]||0x0:0x0;}this[_0x5fc7('0x24')][this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]]['queue']][_0x5fc7('0x12d')]=this[_0x5fc7('0x25')][this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0xaa')]];for(var _0x2cb858=0x0;_0x2cb858<this[_0x5fc7('0x24')][this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0xaa')]][_0x5fc7('0x93')];_0x2cb858+=0x1){_0x1bbe32=rr(this[_0x5fc7('0x24')][this['actions'][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0xaa')]]);this[_0x5fc7('0x25')][_0x375b13[_0x5fc7('0x1f')][_0x290ee9['actionid']]['queue']]=this[_0x5fc7('0x24')][this[_0x5fc7('0x1f')][_0x290ee9['actionid']][_0x5fc7('0xaa')]][_0x5fc7('0x12d')];if(_0x1bbe32[_0x5fc7('0xa6')]==='1'&&_0x1bbe32[_0x5fc7('0x122')]==='0'){break;}}if(!_['isNil'](_0x1bbe32)){this[_0x5fc7('0x1b')][_0x1bbe32['stateinterface']][_0x5fc7('0x12e')]=_[_0x5fc7('0x38')](this['agents'][_0x1bbe32['stateinterface']]['unlockRR'])?!![]:this[_0x5fc7('0x1b')][_0x1bbe32[_0x5fc7('0x123')]][_0x5fc7('0x12e')];}loggerBooked['info'](_0x5fc7('0x12f'),_0x290ee9['actionid'],_0x5fc7('0x130'),JSON[_0x5fc7('0x44')](_['pick'](this['agents'][_0x1bbe32['stateinterface']],['name',_0x5fc7('0x12e')])),_0x5fc7('0x131'),JSON[_0x5fc7('0x44')](_0x1bbe32[_0x5fc7('0x127')]));if(!_['isNil'](_0x1bbe32)&&_0x1bbe32['status']==='1'&&_0x1bbe32[_0x5fc7('0x122')]==='0'&&this[_0x5fc7('0x1b')][_0x1bbe32['stateinterface']]['unlockRR']){this['agents'][_0x1bbe32[_0x5fc7('0x123')]][_0x5fc7('0x12e')]=![];this[_0x5fc7('0x24')][_0x375b13['actions'][_0x290ee9['actionid']][_0x5fc7('0xaa')]]=[];this['preview'][_0x5fc7('0x132')](_0x1bbe32['idHopper'],_0x1bbe32[_0x5fc7('0x123')])['catch'](function(_0x5890f8){logger[_0x5fc7('0x90')]('[Catch][Preview][syncQueueStatusComplete]',util[_0x5fc7('0x91')](_0x5890f8,{'showHidden':![],'depth':null}));})[_0x5fc7('0x17')](function(){_0x375b13[_0x5fc7('0xa8')](_0x375b13['voiceQueues'][_0x375b13['actions'][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0xaa')]]);setTimeout(function(){_0x375b13[_0x5fc7('0x1b')][_0x1bbe32[_0x5fc7('0x123')]][_0x5fc7('0x12e')]=!![];loggerBooked[_0x5fc7('0x79')](_0x5fc7('0x133'),_0x290ee9[_0x5fc7('0x121')],'Agent:\x20',JSON[_0x5fc7('0x44')](_[_0x5fc7('0xcb')](_0x375b13[_0x5fc7('0x1b')][_0x1bbe32[_0x5fc7('0x123')]],[_0x5fc7('0x3b'),'unlockRR'])),_0x5fc7('0x131'),JSON['stringify'](_0x1bbe32[_0x5fc7('0x127')]));},0xc7);delete _0x375b13[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]];unlockQueueStatus(_0xd1b64a,_0x290ee9['actionid']);});}else{loggerBooked['info']('[booked][unlock]');this['updateOriginated'](this['voiceQueues'][this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]]['queue']]);this[_0x5fc7('0xb6')]({'active':![],'ContactId':this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0xcc')],'ListId':this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0xcd')],'VoiceQueueId':this['actions'][_0x290ee9[_0x5fc7('0x121')]]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0xcf')]||undefined})['catch'](loggerCatch(_0x5fc7('0x12c')));delete this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]];unlockQueueStatus(_0xd1b64a);}}else{loggerBooked[_0x5fc7('0x79')](_0x5fc7('0x134'));this[_0x5fc7('0xa8')](this[_0x5fc7('0xa9')][this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]]['queue']]);this[_0x5fc7('0xb6')]({'active':![],'ContactId':this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0xcc')],'ListId':this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0xcd')],'VoiceQueueId':this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0xfa')]||undefined,'CampaignId':this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0xcf')]||undefined})[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0x135')));delete this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]];unlockQueueStatus(_0xd1b64a);}}else{loggerBooked[_0x5fc7('0x79')]('[booked][unlock3]');this[_0x5fc7('0xa8')](this['voiceQueues'][this['actions'][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0xaa')]]);this[_0x5fc7('0xb6')]({'active':![],'ContactId':this['actions'][_0x290ee9[_0x5fc7('0x121')]]['ContactId'],'ListId':this['actions'][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0xcd')],'VoiceQueueId':this['actions'][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0xfa')]||undefined,'CampaignId':this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]][_0x5fc7('0xcf')]||undefined})[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0x136')));delete this[_0x5fc7('0x1f')][_0x290ee9[_0x5fc7('0x121')]];unlockQueueStatus(_0xd1b64a);}};Dialer['prototype'][_0x5fc7('0x36')]=function(){var _0x2e64b8=this;setInterval(function(){_0x2e64b8['syncCampaigns']();},0x3e8);};Dialer[_0x5fc7('0x14')]['checkIsTrunkReachable']=function(_0x20feff){var _0x485bdc=this;return function(){if(!_0x485bdc['isTrunkReachable'](_0x20feff[_0x5fc7('0x6e')])){if(!_0x485bdc['isTrunkReachable'](_0x20feff[_0x5fc7('0x137')])){_0x20feff[_0x5fc7('0x39')]=_0x5fc7('0x138');throw _0x20feff[_0x5fc7('0x3b')]+_0x5fc7('0x139');}}};};Dialer[_0x5fc7('0x14')][_0x5fc7('0x13a')]=function(_0x193705,_0x323cc1,_0xcea2eb,_0x4cc68a){var _0x36b13c=this;return function(){var _0x46b3f9=!![];return _0x36b13c[_0x5fc7('0x13b')](_0x193705,_0x323cc1,_0xcea2eb,_0x4cc68a,_0x46b3f9);};};Dialer[_0x5fc7('0x14')][_0x5fc7('0x13c')]=function(_0x38aeac,_0x558502,_0x218d2f,_0x198f35){var _0x4d4b1c=this;return function(){var _0x1361ec=![];return _0x4d4b1c[_0x5fc7('0x13b')](_0x38aeac['Intervals'],_0x558502,_0x218d2f,_0x198f35,_0x1361ec);};};Dialer[_0x5fc7('0x14')][_0x5fc7('0x13b')]=function(_0x26e164,_0x407e18,_0x9825f6,_0x1501d6,_0x4267b5){var _0x5f2483=[];return new BPromise(function(_0x2e2d46,_0x229bac){if(!isNotNull(_0x26e164)){_0x1501d6[_0x5fc7('0x39')]='INTERVAL_IS_NULL';return _0x229bac(msgResponse(_0x5fc7('0x13b'),'Failure',_0x9825f6+_0x5fc7('0x13d')));}if(_['isEmpty'](_0x26e164)){_0x1501d6[_0x5fc7('0x39')]=_0x5fc7('0x13e');return _0x229bac(msgResponse(_0x5fc7('0x13b'),'Failure',_0x9825f6+'\x20Intervals\x20is\x20empty\x20'));}if(_0x407e18&&_['isUndefined'](config[_0x5fc7('0x13f')][_0x407e18])){_0x1501d6[_0x5fc7('0x39')]=_0x5fc7('0x140');return _0x229bac(msgResponse(_0x5fc7('0x13b'),_0x5fc7('0x141'),_0x9825f6+_0x5fc7('0x142')+_0x407e18));}if(_[_0x5fc7('0x143')](_0x26e164)){for(var _0x3fcf60=0x0;_0x3fcf60<_0x26e164[_0x5fc7('0x93')];_0x3fcf60+=0x1){_0x5f2483[_0x5fc7('0x126')](ami['Action']({'action':_0x5fc7('0x144'),'command':util[_0x5fc7('0x72')](_0x5fc7('0x145'),_0x26e164[_0x3fcf60]['interval'],!_[_0x5fc7('0x38')](config['timezones'][_0x407e18])?_0x407e18:'')})[_0x5fc7('0xad')](function(_0x2495cc){return _0x2495cc['content'][_0x5fc7('0x146')](_0x5fc7('0x147'))>=0x0;})[_0x5fc7('0xa7')](myreject(_0x229bac)));}}else{_0x5f2483[_0x5fc7('0x126')](ami[_0x5fc7('0xa5')]({'action':'command','command':util[_0x5fc7('0x72')]('iftime\x20%s,%s',_0x26e164,!_[_0x5fc7('0x38')](config[_0x5fc7('0x13f')][_0x407e18])?_0x407e18:'')})[_0x5fc7('0xad')](function(_0x211d7f){return _0x211d7f[_0x5fc7('0x148')][_0x5fc7('0x146')](_0x5fc7('0x147'))>=0x0;})[_0x5fc7('0xa7')](myreject(_0x229bac)));}BPromise[_0x5fc7('0x149')](_0x5f2483)[_0x5fc7('0xad')](function(_0x4bc3ce){var _0x5855a3=_['some'](_0x4bc3ce);if(_0x5855a3){return _0x2e2d46(_0x5855a3);}else{_0x1501d6[_0x5fc7('0x39')]=_0x4267b5?_0x5fc7('0x14a'):_0x5fc7('0x14b');return _0x229bac(msgResponse('[ifTime][promiseAll]',_0x5fc7('0x141'),_0x5fc7('0x14c')+_0x4267b5+'\x20'+_0x9825f6+_0x5fc7('0x14d')+util['inspect'](_0x26e164,{'showHidden':![],'depth':null})+_0x5fc7('0x14e')+_0x407e18));}})[_0x5fc7('0xa7')](function(_0xe3efad){return _0x229bac(msgResponse('ifTime',_0x5fc7('0x141'),JSON[_0x5fc7('0x44')](_0xe3efad)));});});};Dialer['prototype'][_0x5fc7('0x14f')]=function(_0x21ed2f){var _0x3cf8bc=this;return function(){switch(_0x21ed2f[_0x5fc7('0x52')]){case _0x5fc7('0x150'):freeVariablesPredictive(_0x21ed2f);_0x3cf8bc['handlePower'](_0x21ed2f,0x1);break;case _0x5fc7('0x151'):freeVariablesPredictive(_0x21ed2f);_0x3cf8bc[_0x5fc7('0x152')](_0x21ed2f,_0x21ed2f['dialPowerLevel']);break;case _0x5fc7('0x153'):_0x3cf8bc['predictive'](_0x21ed2f);break;case _0x5fc7('0x8'):freeVariablesPredictive(_0x21ed2f);_0x3cf8bc[_0x5fc7('0x152')](_0x21ed2f,0x1);break;default:freeVariablesPredictive(_0x21ed2f);logger[_0x5fc7('0x90')]('Queue',_0x21ed2f[_0x5fc7('0x3b')],_0x5fc7('0x154'));}};};Dialer[_0x5fc7('0x14')][_0x5fc7('0x155')]=function(_0x4a90a4){var _0x1188a1=this;return function(){_0x1188a1['handleIvr'](_0x4a90a4);};};Dialer[_0x5fc7('0x14')][_0x5fc7('0x2e')]=function(_0x383ab9){var _0x3f9afa=this;if(isNotPreview(_0x383ab9[_0x5fc7('0x52')])){if(isVoiceQueueOutbound(_0x383ab9[_0x5fc7('0x4e')])&&isActive(_0x383ab9[_0x5fc7('0x51')])){_0x383ab9['sendMessageOneNotActive']=!![];BPromise[_0x5fc7('0xac')]()[_0x5fc7('0xad')](checkIsLoggedIn(_0x383ab9,_0x383ab9[_0x5fc7('0x156')]))['then'](checkIsActive(_0x383ab9,_0x383ab9['dialActive']))[_0x5fc7('0xad')](checkInterval(_0x383ab9))[_0x5fc7('0xad')](_0x3f9afa[_0x5fc7('0x157')](_0x383ab9))['then'](_0x3f9afa[_0x5fc7('0x13a')](_0x383ab9['dialGlobalInterval'],_0x383ab9[_0x5fc7('0x158')],_0x383ab9[_0x5fc7('0x3b')],_0x383ab9))[_0x5fc7('0xad')](_0x3f9afa[_0x5fc7('0x13c')](_0x383ab9[_0x5fc7('0x3e')],_0x383ab9[_0x5fc7('0x158')],_0x383ab9['name'],_0x383ab9))[_0x5fc7('0xad')](_0x3f9afa['checkDialMethod'](_0x383ab9))[_0x5fc7('0xa7')](loggerCatchQueueSummary(_0x5fc7('0x159'),_0x383ab9));}else{notSendMessagesQueue(_0x383ab9);}}else{freeVariablesPredictive(_0x383ab9);}};Dialer[_0x5fc7('0x14')]['syncCampaigns']=function(){var _0x4a4cae=this;var _0x511729;for(var _0x1858fd in this[_0x5fc7('0x1a')]){if(typeof this[_0x5fc7('0x1a')][_0x1858fd]!=='undefined'){_0x511729=this[_0x5fc7('0x1a')][_0x1858fd];if(isCampaignIvr(_0x511729[_0x5fc7('0x4e')])&&isActive(_0x511729[_0x5fc7('0x6f')])){_0x511729[_0x5fc7('0x98')]=!![];BPromise[_0x5fc7('0xac')]()[_0x5fc7('0xad')](checkIsActive(_0x511729,_0x511729['active']))['then'](checkInterval(_0x511729))[_0x5fc7('0xad')](_0x4a4cae[_0x5fc7('0x157')](_0x511729))[_0x5fc7('0xad')](_0x4a4cae[_0x5fc7('0x13a')](_0x511729[_0x5fc7('0x15a')],_0x511729[_0x5fc7('0x158')],_0x511729['name'],_0x511729))['then'](_0x4a4cae[_0x5fc7('0x13c')](_0x511729[_0x5fc7('0x3e')],_0x511729[_0x5fc7('0x158')],_0x511729[_0x5fc7('0x3b')],_0x511729))[_0x5fc7('0xad')](_0x4a4cae[_0x5fc7('0x155')](_0x511729))['catch'](loggerCatchQueueSummary('[syncCampaigns]',_0x511729));}else{notSendMessagesCampaign(_0x511729);}}}};function getCallerIdRandom(_0x504d38,_0x167bfe){var _0x261995;var _0x1edb0c;var _0x4c2c8a;if(_0x167bfe<=0x0){_0x167bfe=0x1;}_0x261995=new RegExp(_0x5fc7('0x15b')+_0x167bfe+'}$');_0x1edb0c=Math[_0x5fc7('0x15c')](0xa,_0x167bfe-0x1);_0x4c2c8a=Math[_0x5fc7('0x15c')](0xa,_0x167bfe)-0x1;return util[_0x5fc7('0x72')]('%s',_[_0x5fc7('0x15d')](_0x504d38,_0x261995,_[_0x5fc7('0x15e')](_0x1edb0c,_0x4c2c8a)));}function extractCalleridName(_0x161243){var _0x5d9d40=_0x161243[_0x5fc7('0x15f')](/"(.*?)"/);return _0x5d9d40?_0x5d9d40[0x1]:_0x161243;}function extractCalleridNumber(_0x23f82d){var _0x19a82e=_0x23f82d[_0x5fc7('0x15f')](/<(.*?)>/);return _0x19a82e?_0x19a82e[0x1]:_0x23f82d;}Dialer[_0x5fc7('0x14')][_0x5fc7('0x160')]=function(_0x4ff3f8,_0x110df7){var _0x40c94c=this;var _0x8c9b65=uuid['v4']();this['actions'][_0x8c9b65]=new Action(_0x4ff3f8,_0x110df7,_0x8c9b65);return new BPromise(function(_0x2eea1c,_0xd2d22b){if(_[_0x5fc7('0x38')](_0x4ff3f8)&&typeof _0x4ff3f8!==_0x5fc7('0x161')){return _0xd2d22b(msgResponse(_0x5fc7('0x162'),_0x5fc7('0x141'),'voiceQueue\x20is\x20undefine'));}if(_[_0x5fc7('0x38')](_0x110df7[_0x5fc7('0x163')][_0x5fc7('0x164')])||_0x110df7[_0x5fc7('0x163')]['phone']===null){return _0xd2d22b(msgResponse(_0x5fc7('0x162'),_0x5fc7('0x141'),_0x5fc7('0x165')));}var _0x5b2212={'XMD-CALLERID':_0x40c94c[_0x5fc7('0x1f')][_0x8c9b65][_0x5fc7('0x166')](),'XMD-AGI':_0x4ff3f8[_0x5fc7('0xfe')]?util[_0x5fc7('0x72')](_0x5fc7('0x167'),ipAgi,_0x4ff3f8[_0x5fc7('0xfe')]):_0x5fc7('0x168'),'XMD-AGIAFTER':_0x4ff3f8[_0x5fc7('0x10f')]?util['format'](_0x5fc7('0x167'),ipAgi,_0x4ff3f8[_0x5fc7('0x10f')]):_0x5fc7('0x168'),'XMD-QUEUE':_0x4ff3f8[_0x5fc7('0x4e')]===_0x5fc7('0x48')?util[_0x5fc7('0x72')](_0x5fc7('0x169'),_0x4ff3f8[_0x5fc7('0x3b')],_0x4ff3f8['dialQueueOptions']||'',_0x4ff3f8[_0x5fc7('0x107')]?'c':'',_0x4ff3f8[_0x5fc7('0x16a')]||0x3):_0x5fc7('0x168'),'XMD-CONTACTID':_0x110df7[_0x5fc7('0xcc')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x40c94c[_0x5fc7('0x1f')][_0x8c9b65][_0x5fc7('0x166')](),'XMD-AMD':_0x4ff3f8[_0x5fc7('0xe0')]?_0x5fc7('0x16b'):_0x5fc7('0x168'),'XMD-DESTINATION':_0x5fc7('0x16c')};if(_0x4ff3f8[_0x5fc7('0xe0')]){_0x5b2212['XMD-AMDINITIALSILENCE']=_0x4ff3f8['dialAMDInitialSilence']||0x9c4;_0x5b2212[_0x5fc7('0x16d')]=_0x4ff3f8[_0x5fc7('0x16e')]||0x5dc;_0x5b2212['XMD-AMDAFTERGREETINGSILENCE']=_0x4ff3f8[_0x5fc7('0x16f')]||0x320;_0x5b2212[_0x5fc7('0x170')]=_0x4ff3f8['dialAMDTotalAnalysisTime']||0x1388;_0x5b2212[_0x5fc7('0x171')]=_0x4ff3f8[_0x5fc7('0x172')]||0x64;_0x5b2212[_0x5fc7('0x173')]=_0x4ff3f8[_0x5fc7('0x174')]||0x32;_0x5b2212[_0x5fc7('0x175')]=_0x4ff3f8[_0x5fc7('0x176')]||0x3;_0x5b2212[_0x5fc7('0x177')]=_0x4ff3f8['dialAMDSilenceThreshold']||0x100;_0x5b2212[_0x5fc7('0x178')]=_0x4ff3f8[_0x5fc7('0x179')]||0x1388;}if(_0x4ff3f8[_0x5fc7('0x4e')]===_0x5fc7('0x48')){_0x5b2212[_0x5fc7('0x17a')]=_0x110df7[_0x5fc7('0xfa')];}else{_0x5b2212[_0x5fc7('0x17b')]=_0x110df7[_0x5fc7('0xcf')];}for(var _0x44be80 in _0x110df7[_0x5fc7('0x163')]){if(typeof _0x110df7['Contact'][_0x44be80]!=='undefined'){if(isNotNull(_0x110df7[_0x5fc7('0x163')][_0x44be80])&&_0x44be80!=='id'&&_0x44be80!==_0x5fc7('0x17c')&&_0x44be80!=='createdAt'&&_0x44be80!==_0x5fc7('0x17d')){_0x5b2212[util['format'](_0x5fc7('0x17e'),'XMD-',_[_0x5fc7('0x17f')](_0x44be80))]=_0x110df7[_0x5fc7('0x163')][_0x44be80];}}}var _0x1def32=_0x40c94c[_0x5fc7('0x180')](_0x4ff3f8[_0x5fc7('0x6e')])?getCallerId(_0x4ff3f8['Trunk'][_0x5fc7('0x70')],_0x4ff3f8[_0x5fc7('0x181')],_0x4ff3f8[_0x5fc7('0x182')]>0x0?getCallerIdRandom(_0x4ff3f8['dialOriginateCallerIdNumber'],_0x4ff3f8[_0x5fc7('0x182')]):_0x4ff3f8['dialOriginateCallerIdNumber']):getCallerId(_['isNil'](_0x4ff3f8[_0x5fc7('0x137')])?_0x4ff3f8['Trunk'][_0x5fc7('0x70')]:_0x4ff3f8[_0x5fc7('0x137')][_0x5fc7('0x70')],_0x4ff3f8[_0x5fc7('0x181')],_0x4ff3f8[_0x5fc7('0x182')]>0x0?getCallerIdRandom(_0x4ff3f8[_0x5fc7('0x53')],_0x4ff3f8['dialRandomLastDigitCallerIdNumber']):_0x4ff3f8[_0x5fc7('0x53')]);if(_0x1def32){_0x5b2212[_0x5fc7('0x183')]=_0x40c94c[_0x5fc7('0x1f')][_0x8c9b65]['originatecalleridname']=extractCalleridName(_0x1def32);_0x5b2212[_0x5fc7('0x184')]=_0x40c94c['actions'][_0x8c9b65][_0x5fc7('0x185')]=extractCalleridNumber(_0x1def32);}return ami[_0x5fc7('0xa5')]({'actionid':_0x8c9b65,'action':_0x5fc7('0x162'),'channel':_0x40c94c[_0x5fc7('0x180')](_0x4ff3f8[_0x5fc7('0x6e')])?util[_0x5fc7('0x72')](_0x5fc7('0x186'),_0x4ff3f8[_0x5fc7('0x6e')]['name'],isNotNull(_0x4ff3f8[_0x5fc7('0x55')])?_0x4ff3f8[_0x5fc7('0x55')][_0x5fc7('0x187')]()||'':'',_0x4ff3f8['dialCutDigit']>0x0?_0x110df7[_0x5fc7('0x163')]['phone'][_0x5fc7('0x188')](_0x4ff3f8[_0x5fc7('0x189')]):_0x110df7[_0x5fc7('0x163')][_0x5fc7('0x164')]):util[_0x5fc7('0x72')]('SIP/%s/%s%s',_['isNil'](_0x4ff3f8[_0x5fc7('0x137')])?_0x4ff3f8[_0x5fc7('0x6e')][_0x5fc7('0x3b')]:_0x4ff3f8[_0x5fc7('0x137')][_0x5fc7('0x3b')],isNotNull(_0x4ff3f8[_0x5fc7('0x55')])?_0x4ff3f8[_0x5fc7('0x55')][_0x5fc7('0x187')]()||'':'',_0x4ff3f8[_0x5fc7('0x189')]>0x0?_0x110df7[_0x5fc7('0x163')][_0x5fc7('0x164')][_0x5fc7('0x188')](_0x4ff3f8['dialCutDigit']):_0x110df7[_0x5fc7('0x163')][_0x5fc7('0x164')]),'callerid':_0x1def32,'Exten':_0x5fc7('0x16c'),'Context':_0x5fc7('0x18a'),'Priority':'1','variable':_0x5b2212,'timeout':(_0x4ff3f8['dialOriginateTimeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x8c9b65})[_0x5fc7('0xad')](function(_0x137188){return _0x2eea1c(_0x137188);})[_0x5fc7('0xa7')](function(_0x2775e5){_0x4ff3f8[_0x5fc7('0x5d')]+=0x1;var _0x55dcd4=new History(_0x40c94c[_0x5fc7('0x1f')][_0x8c9b65]);logger[_0x5fc7('0x90')](util[_0x5fc7('0x72')](_0x5fc7('0x18b'),JSON[_0x5fc7('0x44')](_0x2775e5)));_0x55dcd4['state']=0xe;_0x55dcd4[_0x5fc7('0x9f')]=_0x5fc7('0x18c');_0x55dcd4['starttime']=moment()[_0x5fc7('0x72')]('YYYY-MM-DD\x20HH:mm:ss');_0x55dcd4[_0x5fc7('0x115')]=_0x55dcd4[_0x5fc7('0x114')];_0x40c94c[_0x5fc7('0xc2')](_0x55dcd4)[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0x18d')));_0x40c94c[_0x5fc7('0xc1')](_0x55dcd4)[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0x18d')))[_0x5fc7('0x17')](function(){delete _0x40c94c[_0x5fc7('0x1f')][_0x8c9b65];return _0xd2d22b(msgResponse(_0x5fc7('0x162'),_0x5fc7('0x43'),_0x5fc7('0x18e')));});});});};Dialer[_0x5fc7('0x14')][_0x5fc7('0x2b')]=function(_0x1f659f){var _0xdfac0b=this[_0x5fc7('0x1f')][_0x1f659f[_0x5fc7('0x121')]];if(_0xdfac0b){delete this[_0x5fc7('0x1f')][_0x1f659f[_0x5fc7('0x121')]];_0xdfac0b['responsetime']=moment()[_0x5fc7('0x72')](_0x5fc7('0xf3'));var _0x6d7b51=_0xdfac0b[_0x5fc7('0x4e')]===_0x5fc7('0x75')?this['campaigns'][_0xdfac0b[_0x5fc7('0xaa')]]:this[_0x5fc7('0xa9')][_0xdfac0b[_0x5fc7('0x18f')]()];if(!this[_0x5fc7('0xd1')](_0x1f659f['response'])){this[_0x5fc7('0xa8')](_0x6d7b51);return this[_0x5fc7('0x190')](_0xdfac0b,_0x6d7b51,_0x1f659f)[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0x191')));}this[_0x5fc7('0xa1')][_0x1f659f[_0x5fc7('0xd5')]]=_0xdfac0b;}};Dialer['prototype'][_0x5fc7('0x192')]=function(_0x1f959f,_0x4af628,_0x3dd4bc){var _0x37f642=new History(_0x4af628);if(_0x37f642[_0x5fc7('0xe6')]+_0x37f642[_0x5fc7('0xe7')]+_0x37f642[_0x5fc7('0xe8')]+_0x37f642['countnosuchnumberretry']+_0x37f642[_0x5fc7('0xf9')]+_0x37f642[_0x5fc7('0xe9')]+_0x37f642[_0x5fc7('0xed')]+_0x37f642['countagentrejectretry']>=_0x3dd4bc[_0x5fc7('0xea')]-0x1){return!![];}switch(_0x1f959f){case 0x3:if(_0x37f642['countnoanswerretry']>=_0x3dd4bc[_0x5fc7('0x193')]-0x1){return!![];}this[_0x5fc7('0xb6')]({'active':![],'countnoanswerretry':_0x37f642['countnoanswerretry']+=0x1,'scheduledat':moment()[_0x5fc7('0xf1')](_0x3dd4bc['dialNoAnswerRetryFrequency'],'minutes')['format'](_0x5fc7('0xf3')),'ContactId':_0x37f642[_0x5fc7('0xcc')],'ListId':_0x37f642[_0x5fc7('0xcd')],'VoiceQueueId':_0x37f642[_0x5fc7('0xfa')]||undefined,'CampaignId':_0x37f642[_0x5fc7('0xcf')]||undefined})['catch'](loggerCatch(_0x5fc7('0x194')));break;case 0x5:if(_0x37f642[_0x5fc7('0xe6')]>=_0x3dd4bc[_0x5fc7('0x195')]-0x1){return!![];}this[_0x5fc7('0xb6')]({'active':![],'countbusyretry':_0x37f642[_0x5fc7('0xe6')]+=0x1,'scheduledat':moment()[_0x5fc7('0xf1')](_0x3dd4bc[_0x5fc7('0x196')],_0x5fc7('0xf2'))[_0x5fc7('0x72')](_0x5fc7('0xf3')),'ContactId':_0x37f642[_0x5fc7('0xcc')],'ListId':_0x37f642[_0x5fc7('0xcd')],'VoiceQueueId':_0x37f642[_0x5fc7('0xfa')]||undefined,'CampaignId':_0x37f642[_0x5fc7('0xcf')]||undefined})[_0x5fc7('0xa7')](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x37f642[_0x5fc7('0xe7')]>=_0x3dd4bc[_0x5fc7('0x197')]-0x1){return!![];}this[_0x5fc7('0xb6')]({'active':![],'countcongestionretry':_0x37f642[_0x5fc7('0xe7')]+=0x1,'scheduledat':moment()['add'](_0x3dd4bc['dialCongestionRetryFrequency'],'minutes')['format'](_0x5fc7('0xf3')),'ContactId':_0x37f642[_0x5fc7('0xcc')],'ListId':_0x37f642[_0x5fc7('0xcd')],'VoiceQueueId':_0x37f642[_0x5fc7('0xfa')]||undefined,'CampaignId':_0x37f642[_0x5fc7('0xcf')]||undefined})[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0x198')));break;case 0x0:if(_0x37f642[_0x5fc7('0x199')]>=_0x3dd4bc['dialNoSuchNumberMaxRetry']-0x1){return!![];}else{this[_0x5fc7('0xb6')]({'active':![],'countnosuchnumberretry':_0x37f642[_0x5fc7('0x199')]+=0x1,'scheduledat':moment()[_0x5fc7('0xf1')](_0x3dd4bc[_0x5fc7('0x19a')],_0x5fc7('0xf2'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x37f642[_0x5fc7('0xcc')],'ListId':_0x37f642['ListId'],'VoiceQueueId':_0x37f642['VoiceQueueId']||undefined,'CampaignId':_0x37f642['CampaignId']||undefined})[_0x5fc7('0xa7')](loggerCatch('[rescheduleContact][NoSuchNumber]'));}break;case 0xa:if(_0x37f642['countdropretry']>=_0x3dd4bc[_0x5fc7('0x110')]-0x1){return!![];}this[_0x5fc7('0xb6')]({'active':![],'countdropretry':_0x37f642[_0x5fc7('0xf9')]+=0x1,'scheduledat':moment()[_0x5fc7('0xf1')](_0x3dd4bc[_0x5fc7('0x111')],_0x5fc7('0xf2'))[_0x5fc7('0x72')](_0x5fc7('0xf3')),'ContactId':_0x37f642[_0x5fc7('0xcc')],'ListId':_0x37f642[_0x5fc7('0xcd')],'VoiceQueueId':_0x37f642[_0x5fc7('0xfa')]||undefined,'CampaignId':_0x37f642[_0x5fc7('0xcf')]||undefined})[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0x112')));break;case 0xb:if(_0x37f642[_0x5fc7('0xe9')]>=_0x3dd4bc[_0x5fc7('0x11b')]-0x1){return!![];}this[_0x5fc7('0xb6')]({'active':![],'countabandonedretry':_0x37f642[_0x5fc7('0xe9')]+=0x1,'scheduledat':moment()[_0x5fc7('0xf1')](_0x3dd4bc['dialAbandonedRetryFrequency'],_0x5fc7('0xf2'))[_0x5fc7('0x72')](_0x5fc7('0xf3')),'ContactId':_0x37f642['ContactId'],'ListId':_0x37f642[_0x5fc7('0xcd')],'VoiceQueueId':_0x37f642[_0x5fc7('0xfa')]||undefined,'CampaignId':_0x37f642[_0x5fc7('0xcf')]||undefined})[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0x11d')));break;case 0x13:if(_0x37f642[_0x5fc7('0xed')]>=_0x3dd4bc['dialMachineMaxRetry']-0x1){return!![];}this[_0x5fc7('0xb6')]({'active':![],'countmachineretry':_0x37f642[_0x5fc7('0xed')]+=0x1,'scheduledat':moment()[_0x5fc7('0xf1')](_0x3dd4bc[_0x5fc7('0x19b')],'minutes')['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x37f642[_0x5fc7('0xcc')],'ListId':_0x37f642[_0x5fc7('0xcd')],'VoiceQueueId':_0x37f642[_0x5fc7('0xfa')]||undefined,'CampaignId':_0x37f642[_0x5fc7('0xcf')]||undefined})[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0xf4')));break;case 0x14:if(_0x37f642[_0x5fc7('0x19c')]>=_0x3dd4bc[_0x5fc7('0x19d')]-0x1){return!![];}this[_0x5fc7('0xb6')]({'active':![],'countagentrejectretry':_0x37f642[_0x5fc7('0x19c')]+=0x1,'scheduledat':moment()['add'](_0x3dd4bc[_0x5fc7('0x19e')],_0x5fc7('0xf2'))['format'](_0x5fc7('0xf3')),'ContactId':_0x37f642[_0x5fc7('0xcc')],'ListId':_0x37f642[_0x5fc7('0xcd')],'VoiceQueueId':_0x37f642[_0x5fc7('0xfa')]||undefined,'CampaignId':_0x37f642[_0x5fc7('0xcf')]||undefined})['catch'](loggerCatch(_0x5fc7('0x19f')));break;default:return!![];}};Dialer[_0x5fc7('0x14')][_0x5fc7('0x190')]=function(_0x39b7dc,_0x4f8994,_0x407349){var _0x25bc6f=this;var _0x2ab6f5=new History(_0x39b7dc);return new BPromise(function(_0xe94a06,_0xcb6acd){if(_[_0x5fc7('0x38')](_0x4f8994)&&typeof _0x4f8994!==_0x5fc7('0x161')){return _0xcb6acd(msgResponse(_0x5fc7('0x1a0'),_0x5fc7('0x141'),'entity\x20is\x20undefine'));}if(_['isUndefined'](_0x407349)&&typeof _0x407349!=='object'){return _0xcb6acd(msgResponse('[callProgressDetecting]',_0x5fc7('0x141'),_0x5fc7('0x1a1')));}switch(_0x407349[_0x5fc7('0x104')]){case'0':_0x4f8994[_0x5fc7('0x1a2')]+=0x1;_0x2ab6f5['state']=0x0;_0x2ab6f5['statedesc']='NoSuchNumber';_0x2ab6f5[_0x5fc7('0x199')]+=0x1;_0x2ab6f5['countglobal']+=0x1;ami[_0x5fc7('0x47')](_0x5fc7('0x1a3'),ut['buildObj'](_0x39b7dc,_0x5fc7('0x1a4')));_0x25bc6f[_0x5fc7('0xc2')](_0x2ab6f5)[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0xe5')));if(_0x25bc6f['checkRetriveMax'](0x0,_0x39b7dc,_0x4f8994)){if(_0x2ab6f5[_0x5fc7('0x199')]>=_0x4f8994['dialNoSuchNumberMaxRetry']){_0x25bc6f[_0x5fc7('0xef')](_0x2ab6f5,_0xe94a06,_0xcb6acd,_0x5fc7('0x1a5'));}else{_0x25bc6f['stateGlobal'](_0x2ab6f5,_0xe94a06,_0xcb6acd,'reason\x200\x20no\x20such\x20number....');}}break;case'3':_0x4f8994['outboundNoAnswerCallsDay']+=0x1;_0x2ab6f5[_0x5fc7('0x9e')]=0x3;_0x2ab6f5['statedesc']=_0x5fc7('0x1a6');_0x2ab6f5['countnoanswerretry']+=0x1;_0x2ab6f5[_0x5fc7('0xe2')]+=0x1;ami[_0x5fc7('0x47')](_0x5fc7('0x1a7'),ut[_0x5fc7('0xe4')](_0x39b7dc,'noanswer'));_0x25bc6f[_0x5fc7('0xc2')](_0x2ab6f5)['catch'](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x25bc6f[_0x5fc7('0x192')](0x3,_0x39b7dc,_0x4f8994)){if(_0x2ab6f5[_0x5fc7('0xe8')]>=_0x4f8994[_0x5fc7('0x193')]){_0x25bc6f[_0x5fc7('0xef')](_0x2ab6f5,_0xe94a06,_0xcb6acd,'reason\x203\x20ringing\x20no\x20answer');}else{_0x25bc6f[_0x5fc7('0xeb')](_0x2ab6f5,_0xe94a06,_0xcb6acd,_0x5fc7('0x1a8'));}}break;case'5':_0x4f8994[_0x5fc7('0x57')]+=0x1;_0x2ab6f5['state']=0x5;_0x2ab6f5[_0x5fc7('0x9f')]=_0x5fc7('0x1a9');_0x2ab6f5[_0x5fc7('0xe6')]+=0x1;_0x2ab6f5[_0x5fc7('0xe2')]+=0x1;ami[_0x5fc7('0x47')](_0x5fc7('0x1aa'),ut[_0x5fc7('0xe4')](_0x39b7dc,_0x5fc7('0x1ab')));_0x25bc6f[_0x5fc7('0xc2')](_0x2ab6f5)['catch'](loggerCatch(_0x5fc7('0x1ac')));if(_0x25bc6f[_0x5fc7('0x192')](0x5,_0x39b7dc,_0x4f8994)){if(_0x2ab6f5['countbusyretry']>=_0x4f8994[_0x5fc7('0x195')]){_0x25bc6f[_0x5fc7('0xef')](_0x2ab6f5,_0xe94a06,_0xcb6acd,_0x5fc7('0x1ad'));}else{_0x25bc6f[_0x5fc7('0xeb')](_0x2ab6f5,_0xe94a06,_0xcb6acd,_0x5fc7('0x1ad'));}}break;case'8':_0x4f8994['outboundCongestionCallsDay']+=0x1;_0x2ab6f5[_0x5fc7('0x9e')]=0x8;_0x2ab6f5['statedesc']=_0x5fc7('0x1ae');_0x2ab6f5[_0x5fc7('0xe7')]+=0x1;_0x2ab6f5[_0x5fc7('0xe2')]+=0x1;ami[_0x5fc7('0x47')](_0x5fc7('0x1af'),ut[_0x5fc7('0xe4')](_0x39b7dc,'congestion'));_0x25bc6f[_0x5fc7('0xc2')](_0x2ab6f5)[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0x1b0')));if(_0x25bc6f[_0x5fc7('0x192')](0x8,_0x39b7dc,_0x4f8994)){if(_0x2ab6f5['countcongestionretry']>=_0x4f8994[_0x5fc7('0x197')]){_0x25bc6f['createStateFinal'](_0x2ab6f5,_0xe94a06,_0xcb6acd,_0x5fc7('0x1b1'));}else{_0x25bc6f[_0x5fc7('0xeb')](_0x2ab6f5,_0xe94a06,_0xcb6acd,_0x5fc7('0x1b1'));}}break;case'11':_0x4f8994[_0x5fc7('0x1b2')]+=0x1;_0x2ab6f5[_0x5fc7('0x9e')]=0xb;_0x2ab6f5[_0x5fc7('0x9f')]=_0x5fc7('0x119');_0x2ab6f5[_0x5fc7('0xe9')]+=0x1;_0x2ab6f5['countglobal']+=0x1;_0x25bc6f[_0x5fc7('0xc2')](_0x2ab6f5)['catch'](loggerCatch(_0x5fc7('0x11e')));if(_0x25bc6f[_0x5fc7('0x192')](0xb,_0x39b7dc,_0x4f8994)){if(_0x2ab6f5[_0x5fc7('0xe9')]>=_0x4f8994[_0x5fc7('0x11b')]){_0x25bc6f[_0x5fc7('0xef')](_0x2ab6f5,_0xe94a06,_0xcb6acd,'reason\x2011\x20abandoned');}else{_0x25bc6f['stateGlobal'](_0x2ab6f5,_0xe94a06,_0xcb6acd,'reason\x2011\x20abandoned');}}break;case'20':_0x4f8994['outboundRejectCallsDay']+=0x1;_0x2ab6f5[_0x5fc7('0x9e')]=0x14;_0x2ab6f5[_0x5fc7('0x9f')]=_0x5fc7('0x1b3');_0x2ab6f5['countagentrejectretry']+=0x1;_0x2ab6f5[_0x5fc7('0xe2')]+=0x1;ami['emit'](_0x5fc7('0x1b4'),ut['buildObj'](_0x39b7dc,_0x5fc7('0x1b5')));_0x25bc6f['createHistory'](_0x2ab6f5)[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0x1b6')));if(_0x25bc6f[_0x5fc7('0x192')](0x14,_0x39b7dc,_0x4f8994)){if(_0x2ab6f5[_0x5fc7('0x19c')]>=_0x4f8994['dialAgentRejectMaxRetry']){_0x25bc6f[_0x5fc7('0xef')](_0x2ab6f5,_0xe94a06,_0xcb6acd,'reason\x2020\x20agentreject');}else{_0x25bc6f[_0x5fc7('0xeb')](_0x2ab6f5,_0xe94a06,_0xcb6acd,_0x5fc7('0x1b7'));}}break;default:_0x4f8994[_0x5fc7('0x60')]+=0x1;_0x2ab6f5[_0x5fc7('0x9e')]=0xc;_0x2ab6f5[_0x5fc7('0x9f')]=_0x407349[_0x5fc7('0x104')];_0x25bc6f['createHistory'](_0x2ab6f5)[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0x1b8')));if(_0x25bc6f[_0x5fc7('0x192')](_0x407349[_0x5fc7('0x104')],_0x39b7dc,_0x4f8994)){if(_0x2ab6f5[_0x5fc7('0xe6')]+_0x2ab6f5[_0x5fc7('0xe7')]+_0x2ab6f5[_0x5fc7('0xe8')]+_0x2ab6f5[_0x5fc7('0x199')]+_0x2ab6f5[_0x5fc7('0xf9')]+_0x2ab6f5['countabandonedretry']+_0x2ab6f5[_0x5fc7('0xed')]+_0x2ab6f5[_0x5fc7('0x19c')]>=_0x4f8994[_0x5fc7('0xea')]){_0x25bc6f[_0x5fc7('0xeb')](_0x2ab6f5,_0xe94a06,_0xcb6acd,_0x407349['reason']);}else{_0x25bc6f['createStateFinal'](_0x2ab6f5,_0xe94a06,_0xcb6acd,_0x407349[_0x5fc7('0x104')]);}}}});};Dialer[_0x5fc7('0x14')]['stateGlobal']=function(_0x5a57cf,_0x5ce88b,_0x44399f,_0x49d842){var _0x1efebf=new Final(_0x5a57cf);_0x1efebf[_0x5fc7('0x9e')]=0xf;_0x1efebf[_0x5fc7('0x9f')]=_0x5fc7('0x1b9');this[_0x5fc7('0xef')](_0x1efebf,_0x5ce88b,_0x44399f,_0x49d842);};Dialer[_0x5fc7('0x14')][_0x5fc7('0xef')]=function(_0x93432a,_0x5da988,_0x15646a,_0x408d8e){this[_0x5fc7('0xc1')](_0x93432a)[_0x5fc7('0xad')](function(){return _0x5da988(msgResponse(_0x5fc7('0x1a0'),'Success',_0x408d8e));})['catch'](function(){return _0x15646a(msgResponse(_0x5fc7('0x1ba'),_0x5fc7('0x141'),_0x5fc7('0x1bb')));});};Dialer['prototype'][_0x5fc7('0x153')]=function(_0x49c28e){var _0x2eb1c9=_0x49c28e[_0x5fc7('0x1bc')]/0x64;var _0x3439ba=_0x49c28e[_0x5fc7('0x5b')]/(_0x49c28e['outboundDropCallsDayTimeout']+_0x49c28e[_0x5fc7('0xd9')]);var _0x5afda3=Math[_0x5fc7('0x1bd')](_0x49c28e[_0x5fc7('0x67')]*(_0x49c28e[_0x5fc7('0x1be')]/0x64));var _0x2e2c9f=Math[_0x5fc7('0x1bd')](_0x49c28e[_0x5fc7('0x67')]*(_0x49c28e[_0x5fc7('0x1bf')]/0x64));var _0x4abe17=_0x49c28e[_0x5fc7('0x4a')]+_0x49c28e[_0x5fc7('0x4d')];var _0x3d3f06=Math[_0x5fc7('0x1c0')](_0x49c28e[_0x5fc7('0x6a')]*_0x49c28e[_0x5fc7('0x6c')]*_0x49c28e[_0x5fc7('0x64')]*_0x49c28e[_0x5fc7('0x65')]);if(_[_0x5fc7('0x38')](_0x49c28e['startProgressive'])){if(!_[_0x5fc7('0x38')](_0x49c28e[_0x5fc7('0x21')])){_0x49c28e[_0x5fc7('0x21')]=undefined;loggerPredictive[_0x5fc7('0x90')](_0x5fc7('0x1c1'),_0x5fc7('0x1c2'));}if(!_['isUndefined'](_0x49c28e[_0x5fc7('0x8d')])){loggerPredictive[_0x5fc7('0x90')](_0x5fc7('0x1c1'),'check\x20handlePredictive\x20is\x20not\x20undefine');clearInterval(_0x49c28e[_0x5fc7('0x8d')]);_0x49c28e[_0x5fc7('0x8d')]=undefined;}_0x49c28e[_0x5fc7('0x22')]=moment()[_0x5fc7('0x72')](_0x5fc7('0xf3'));loggerPredictive['info'](_0x49c28e[_0x5fc7('0x3b')],'collection\x20data\x20in\x20progressive\x20at',_0x49c28e[_0x5fc7('0x22')]);this[_0x5fc7('0x152')](_0x49c28e,0x1);}else if(ifInterval(_0x49c28e[_0x5fc7('0x1c3')],_0x49c28e[_0x5fc7('0x22')])){this[_0x5fc7('0x152')](_0x49c28e,0x1);loggerPredictiveCalls[_0x5fc7('0x79')]('[startMethodPredictive][StartProgressive][Loop]',_0x49c28e['startProgressive'],_0x49c28e[_0x5fc7('0x3b')]);_0x49c28e[_0x5fc7('0x6a')]=0x0;_0x49c28e[_0x5fc7('0x63')]=0x0;}else if(_0x2eb1c9<_0x3439ba&&_0x49c28e[_0x5fc7('0x1c4')]===_0x5fc7('0x1c5')){freeVariablesPredictive(_0x49c28e);loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x1c6'),_0x5fc7('0x1c7'),_0x3439ba,_0x5fc7('0x22'),_0x49c28e[_0x5fc7('0x3b')]);}else if(_0x3d3f06<_0x49c28e[_0x5fc7('0x63')]&&_0x49c28e[_0x5fc7('0x1c4')]===_0x5fc7('0x1c5')){freeVariablesPredictive(_0x49c28e);loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x1c8'),_0x5fc7('0x1c9'),_0x3d3f06,_0x5fc7('0x1ca'),_0x49c28e[_0x5fc7('0x63')],_0x5fc7('0x22'),_0x49c28e[_0x5fc7('0x3b')]);}else if(!ifInterval(_0x49c28e['dialPredictiveInterval'],_0x49c28e[_0x5fc7('0x22')])&&_[_0x5fc7('0x38')](_0x49c28e['startPredictive'])&&!_[_0x5fc7('0x38')](_0x49c28e[_0x5fc7('0x22')])){_0x49c28e[_0x5fc7('0x21')]=moment()['format'](_0x5fc7('0xf3'));loggerPredictive[_0x5fc7('0x79')](_0x49c28e['name'],_0x5fc7('0x1cb'),_0x49c28e['startPredictive']);this[_0x5fc7('0xb3')](_0x49c28e[_0x5fc7('0x1c3')])[_0x5fc7('0xad')](this[_0x5fc7('0x1cc')](_0x49c28e))[_0x5fc7('0xad')](mergeDataErlangB(_0x49c28e))[_0x5fc7('0xad')](this[_0x5fc7('0x1cd')](_0x49c28e))['catch'](loggerCatchPredictive(_0x5fc7('0x1ce'),_0x49c28e));}else if(!ifInterval(_0x49c28e[_0x5fc7('0x1c3')],_0x49c28e[_0x5fc7('0x21')])){_0x49c28e[_0x5fc7('0x63')]=0x0;_0x49c28e[_0x5fc7('0x21')]=moment()[_0x5fc7('0x72')](_0x5fc7('0xf3'));loggerPredictive['info'](_0x49c28e['name'],_0x5fc7('0x1cf'),_0x49c28e[_0x5fc7('0x21')]);clearInterval(_0x49c28e['handlePredictive']);_0x49c28e[_0x5fc7('0x8d')]=undefined;this[_0x5fc7('0xb3')](_0x49c28e[_0x5fc7('0x1c3')])[_0x5fc7('0xad')](this[_0x5fc7('0x1cc')](_0x49c28e))[_0x5fc7('0xad')](mergeDataErlangB(_0x49c28e))['then'](this[_0x5fc7('0x1cd')](_0x49c28e))[_0x5fc7('0xa7')](loggerCatchPredictive('Predictive\x20for\x20every\x20interval',_0x49c28e));}else if(_0x49c28e[_0x5fc7('0x67')]&&_0x4abe17<_0x49c28e[_0x5fc7('0x67')]-_0x2e2c9f){freeVariablesPredictive(_0x49c28e);loggerPredictive['info'](_0x49c28e[_0x5fc7('0x3b')],_0x5fc7('0x1d0'),_0x4abe17,_0x5fc7('0x1d1'),_0x49c28e[_0x5fc7('0x67')],'-',_0x2e2c9f,'=',_0x49c28e[_0x5fc7('0x67')]-_0x2e2c9f,')');}else if(_0x49c28e['predictiveIntervalAvailable']&&_0x4abe17>_0x49c28e[_0x5fc7('0x67')]+_0x5afda3){freeVariablesPredictive(_0x49c28e);loggerPredictive[_0x5fc7('0x79')](_0x49c28e[_0x5fc7('0x3b')],_0x5fc7('0x1d0'),_0x4abe17,')\x20are\x20more\x20than\x20threshold\x20(',_0x49c28e['predictiveIntervalAvailable'],'+',_0x5afda3,'=',_0x49c28e[_0x5fc7('0x67')]+_0x5afda3,')');}};Dialer[_0x5fc7('0x14')][_0x5fc7('0x1cc')]=function(_0xf5bbfc){var _0x2cf3bb=this;return function(_0x2547b4){return new BPromise(function(_0x45daf9,_0xa501d4){_[_0x5fc7('0x89')](_0xf5bbfc,_0x2547b4[0x0]);if(checkGetDataPredictive(_0x2547b4[0x0])){var _0x3c0d63=_0xf5bbfc[_0x5fc7('0x67')]=_0xf5bbfc[_0x5fc7('0x4d')]+_0xf5bbfc[_0x5fc7('0x4a')];var _0x214096=_0xf5bbfc['dialPredictiveInterval']*0x3c;var _0x57633b=_0x2547b4[0x0][_0x5fc7('0x83')]+_0x2547b4[0x0][_0x5fc7('0x61')];var _0x4057c7=(_0x2547b4[0x0][_0x5fc7('0x7d')]+_0x2547b4[0x0][_0x5fc7('0x62')]+_0x2547b4[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x2547b4[0x0][_0x5fc7('0x68')];_0xf5bbfc[_0x5fc7('0x64')]=_0x4057c7>0x0?_0x4057c7:0x1;switch(_0xf5bbfc[_0x5fc7('0x1c4')]){case _0x5fc7('0x1c5'):var _0xe50b4e=_0xf5bbfc[_0x5fc7('0x1bc')]/0x64;return _0x2cf3bb['abandonmentRate'](_0x3c0d63,_0x214096,_0x57633b,_0x4057c7,_0xe50b4e)[_0x5fc7('0xad')](function(_0x367b26){return _0x45daf9(_0x367b26);});case _0x5fc7('0x1d2'):var _0x2c7922=_0xf5bbfc[_0x5fc7('0x1bc')]/0x64;return _0x2cf3bb['busyFactor'](_0x3c0d63,_0x214096,_0x57633b,_0x4057c7,_0x2c7922)[_0x5fc7('0xad')](function(_0x1e0297){return _0x45daf9(_0x1e0297);});default:return _0xa501d4(msgResponse(_0x5fc7('0x1d3'),_0x5fc7('0x141'),_0x5fc7('0x1d4')));}}else{return _0xa501d4(msgResponse('[getDataPredictive]','Failure',_0x5fc7('0x1d5')));}});};};Dialer[_0x5fc7('0x14')][_0x5fc7('0x1d6')]=function(_0x4adda9){var _0xea7556=this;return function(_0x311b7a){return new BPromise(function(_0x409789,_0x5e7c64){_['merge'](_0x4adda9,_0x311b7a[0x0]);if(checkGetDataPredictive(_0x311b7a[0x0])){loggerPredictive[_0x5fc7('0x79')](JSON[_0x5fc7('0x44')](_0x311b7a[0x0]));if(_0x4adda9[_0x5fc7('0x1c4')]===_0x5fc7('0x1c5')){return _0xea7556[_0x5fc7('0xbf')](_0x4adda9['id'])[_0x5fc7('0xad')](function(_0x5acd00){var _0x3c73cc=_0x4adda9[_0x5fc7('0x156')]-_0x5acd00[0x0][_0x5fc7('0x1d7')];var _0x13354d=_0x4adda9[_0x5fc7('0x1c3')]*0x3c;var _0x38baf5=_0x311b7a[0x0][_0x5fc7('0x83')]+_0x311b7a[0x0][_0x5fc7('0x61')];var _0x253974=(_0x311b7a[0x0][_0x5fc7('0x7d')]+_0x311b7a[0x0][_0x5fc7('0x62')]+_0x311b7a[0x0][_0x5fc7('0x80')])/_0x311b7a[0x0][_0x5fc7('0x68')];var _0x85fed9=_0x4adda9[_0x5fc7('0x1bc')]/0x64;_0x4adda9[_0x5fc7('0x66')]=_0x5acd00[0x0][_0x5fc7('0x1d7')]||0x0;_0x4adda9[_0x5fc7('0x64')]=_0x253974>0x0?_0x253974:0x1;return _0xea7556['abandonmentRate'](_0x3c73cc,_0x13354d,_0x38baf5,_0x253974,_0x85fed9);})[_0x5fc7('0xad')](function(_0x226ddf){return _0x409789(_0x226ddf);})[_0x5fc7('0xa7')](function(_0x17ffd4){return _0x5e7c64(msgResponse(_0x5fc7('0x1d8'),_0x5fc7('0x141'),JSON[_0x5fc7('0x44')](_0x17ffd4)));});}if(_0x4adda9['dialPredictiveOptimization']==='agentBusyFactor'){return _0xea7556[_0x5fc7('0xbf')](_0x4adda9['id'])['then'](function(_0x4b5d1b){var _0x29fe37=_0x4adda9[_0x5fc7('0x156')]-_0x4b5d1b[0x0]['outboundQueuePauses'];var _0x387d65=_0x4adda9[_0x5fc7('0x1c3')]*0x3c;var _0x32321a=_0x311b7a[0x0][_0x5fc7('0x83')]+_0x311b7a[0x0][_0x5fc7('0x61')];var _0x4cec93=(_0x311b7a[0x0]['predictiveIntervalAnsweredCalls']+_0x311b7a[0x0][_0x5fc7('0x62')]+_0x311b7a[0x0][_0x5fc7('0x80')])/_0x311b7a[0x0][_0x5fc7('0x68')];var _0x26aa30=_0x4adda9[_0x5fc7('0x1bc')]/0x64;_0x4adda9[_0x5fc7('0x66')]=_0x4b5d1b[0x0][_0x5fc7('0x1d7')]||0x0;_0x4adda9['predictiveIntervalHitRate']=_0x4cec93>0x0?_0x4cec93:0x1;return _0xea7556[_0x5fc7('0x1d9')](_0x29fe37,_0x387d65,_0x32321a,_0x4cec93,_0x26aa30);})[_0x5fc7('0xad')](function(_0x4eaa31){return _0x409789(_0x4eaa31);})[_0x5fc7('0xa7')](function(_0x5b5b31){return _0x5e7c64(msgResponse(_0x5fc7('0x1d8'),_0x5fc7('0x141'),JSON[_0x5fc7('0x44')](_0x5b5b31)));});}}else{return _0x5e7c64(msgResponse(_0x5fc7('0x1d3'),_0x5fc7('0x141'),'check\x20failure'));}});};};Dialer[_0x5fc7('0x14')][_0x5fc7('0x1cd')]=function(_0x40798f){var _0x52b304=this;return function(){var _0x42e4c1=0x0;var _0x495906=Math[_0x5fc7('0x1c0')](_0x40798f[_0x5fc7('0x6b')]*0x3e8);if(_0x495906>0x0){_0x495906=_0x495906<0x64?0x64:_0x495906;loggerPredictive[_0x5fc7('0x79')](_0x40798f[_0x5fc7('0x3b')],_0x5fc7('0x1da'),_0x495906,_0x5fc7('0x45'));_0x40798f[_0x5fc7('0x8d')]=setInterval(function(){_0x52b304[_0x5fc7('0x8d')](_0x40798f);loggerPredictiveCalls[_0x5fc7('0x79')]('[handlePredictive]',_0x42e4c1+=0x1);},_0x495906);}else{loggerPredictive[_0x5fc7('0x79')](_0x40798f[_0x5fc7('0x3b')],_0x5fc7('0x1db'));}};};Dialer[_0x5fc7('0x14')][_0x5fc7('0x1dc')]=function(_0x2e5164,_0x192598){var _0x4188fe=this;return function(_0x306777){if(_['isEmpty'](_0x306777)){if(_[_0x5fc7('0xa4')](_0x192598[_0x5fc7('0xce')])||!_0x192598['recallme']){if(_0x2e5164[_0x5fc7('0x52')]===_0x5fc7('0x8')){_0x2e5164[_0x5fc7('0x128')]=_[_0x5fc7('0x38')](_0x2e5164[_0x5fc7('0x128')])?!![]:_0x2e5164[_0x5fc7('0x128')];var _0x28c456=uuid['v4']();_0x4188fe['actions'][_0x28c456]=new Action(_0x2e5164,_0x192598,_0x28c456);loggerBooked['info'](_0x5fc7('0x1dd'),_0x28c456,_0x5fc7('0x1de'),JSON[_0x5fc7('0x44')](_0x2e5164[_0x5fc7('0x128')]),_0x5fc7('0x1df'),_0x2e5164[_0x5fc7('0x3b')]);if(_0x2e5164[_0x5fc7('0x128')]){_0x2e5164[_0x5fc7('0x128')]=![];_0x4188fe['queueBooked'][_0x4188fe[_0x5fc7('0x1f')][_0x28c456]['queue']]=[];ami[_0x5fc7('0xa5')]({'actionid':_0x28c456,'action':_0x5fc7('0x1e0'),'queue':_0x2e5164[_0x5fc7('0x3b')]})['catch'](function(){_0x4188fe[_0x5fc7('0xa8')](_0x2e5164);_0x4188fe['rescheduleContact']({'active':![],'ContactId':_0x4188fe[_0x5fc7('0x1f')][_0x28c456][_0x5fc7('0xcc')],'ListId':_0x4188fe['actions'][_0x28c456][_0x5fc7('0xcd')],'VoiceQueueId':_0x4188fe[_0x5fc7('0x1f')][_0x28c456][_0x5fc7('0xfa')]||undefined,'CampaignId':_0x4188fe[_0x5fc7('0x1f')][_0x28c456]['CampaignId']||undefined})[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0x1e1')));delete _0x4188fe['actions'][_0x28c456];});}else{loggerBooked[_0x5fc7('0x79')](_0x5fc7('0x1e2'),JSON[_0x5fc7('0x44')](_0x2e5164['queueStatusComplete']),_0x5fc7('0x1df'),_0x2e5164[_0x5fc7('0x3b')]);_0x4188fe[_0x5fc7('0xa8')](_0x2e5164);_0x4188fe[_0x5fc7('0xb6')]({'active':![],'ContactId':_0x4188fe[_0x5fc7('0x1f')][_0x28c456][_0x5fc7('0xcc')],'ListId':_0x4188fe['actions'][_0x28c456][_0x5fc7('0xcd')],'VoiceQueueId':_0x4188fe[_0x5fc7('0x1f')][_0x28c456][_0x5fc7('0xfa')]||undefined,'CampaignId':_0x4188fe['actions'][_0x28c456][_0x5fc7('0xcf')]||undefined})['catch'](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x4188fe[_0x5fc7('0x1f')][_0x28c456];}}else{return _0x4188fe[_0x5fc7('0x160')](_0x2e5164,_0x192598);}}else{if(getDiff(_0x192598['scheduledat'])<_0x2e5164[_0x5fc7('0x1e3')]*0x3c){if(_0x192598[_0x5fc7('0x1e4')]&&!_0x192598['Agent'][_0x5fc7('0x1e5')]){_0x4188fe[_0x5fc7('0x19')]['run'](_0x192598['id'])[_0x5fc7('0x17')](function(){_0x4188fe['updateOriginated'](_0x2e5164);});}else{_0x4188fe['unlockContact']({'active':![]},_0x192598['id'],0x1)['finally'](function(){_0x4188fe[_0x5fc7('0xa8')](_0x2e5164);});}}else{_0x2e5164[_0x5fc7('0x5e')]+=0x1;_0x4188fe[_0x5fc7('0xa8')](_0x2e5164);if(_0x2e5164[_0x5fc7('0x1e6')]){_0x4188fe[_0x5fc7('0xb6')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x192598[_0x5fc7('0xcc')],'ListId':_0x192598[_0x5fc7('0xcd')],'VoiceQueueId':_0x192598[_0x5fc7('0xfa')]||undefined,'CampaignId':_0x192598['CampaignId']||undefined})[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0x1e7')));_0x4188fe[_0x5fc7('0xc2')](createObjHistory(_0x2e5164,_0x192598,_0x5fc7('0x1e8'),0x17,_0x5fc7('0x1e9')))[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0x1ea')));}else{_0x4188fe['saveInDb'](createObjHistory(_0x2e5164,_0x192598,_0x5fc7('0x1eb'),0x16,_0x5fc7('0x1ec')),_0x5fc7('0x1ed'),'[Originate][HistoryRecallClose]');}}}}else{_0x2e5164[_0x5fc7('0x1ee')]+=0x1;_0x4188fe['saveInDb'](createObjHistory(_0x2e5164,_0x192598,_0x5fc7('0x1ef'),0xd,_0x5fc7('0x1f0')),_0x5fc7('0x1f1'),_0x5fc7('0x1f2'));throw'inBlackList';}};};Dialer[_0x5fc7('0x14')][_0x5fc7('0x1f3')]=function(_0x26dc3f){var _0x4b304=this;var _0x5c2a17=_0x26dc3f[_0x5fc7('0x1f4')]-_0x26dc3f['originated']-_0x26dc3f[_0x5fc7('0xbb')];emitCampaignSummary(_0x26dc3f);if(_0x5c2a17>0x0){if(_0x5c2a17>this[_0x5fc7('0x1d')]){_0x5c2a17=this[_0x5fc7('0x1d')];}_0x26dc3f['temp']+=_0x5c2a17;this[_0x5fc7('0xbd')](_0x26dc3f['id'],_0x5c2a17,_0x26dc3f[_0x5fc7('0x1f5')],_0x26dc3f)[_0x5fc7('0xad')](function(_0x2b06a6){_0x26dc3f[_0x5fc7('0xbb')]-=_0x5c2a17;_0x26dc3f[_0x5fc7('0xbb')]=_0x26dc3f[_0x5fc7('0xbb')]>0x0?_0x26dc3f[_0x5fc7('0xbb')]:0x0;if(!checkContactEmpty(_0x2b06a6)){_0x26dc3f[_0x5fc7('0x39')]='AVAILABLE_CONTACTS_FINISHED';logger['info'](_0x5fc7('0x1f6')+_0x26dc3f[_0x5fc7('0x3b')]);}else{_0x26dc3f[_0x5fc7('0x69')]+=_0x2b06a6[_0x5fc7('0x93')];_0x26dc3f[_0x5fc7('0x39')]='RUNNING';for(var _0x488e78=0x0;_0x488e78<_0x2b06a6[_0x5fc7('0x93')];_0x488e78+=0x1){_0x26dc3f[_0x5fc7('0x1f7')]+=0x1;if(_[_0x5fc7('0xa4')](_0x2b06a6[_0x488e78])||_[_0x5fc7('0xa4')](_0x2b06a6[_0x488e78]['Contact'])||_[_0x5fc7('0xa4')](_0x2b06a6[_0x488e78][_0x5fc7('0x163')][_0x5fc7('0x164')])){_0x4b304[_0x5fc7('0xc8')](_0x5fc7('0x1f8'),_0x26dc3f,_0x2b06a6[_0x488e78]);}else{_0x4b304['checkIsBlackListIvr'](_['pick'](_0x2b06a6[_0x488e78],[_0x5fc7('0xcf'),_0x5fc7('0x1f9')]))['then'](_0x4b304['checkContactBlack'](_0x26dc3f,_0x2b06a6[_0x488e78]))[_0x5fc7('0xa7')](_0x4b304[_0x5fc7('0xc7')](_0x5fc7('0x1fa'),_0x26dc3f));}}}})[_0x5fc7('0xa7')](loggerGetContactDialer('[getContactCampaign2]',_0x26dc3f,_0x5c2a17));}};Dialer[_0x5fc7('0x14')][_0x5fc7('0x152')]=function(_0x3fbc70,_0x40ada0){var _0x5ab1e2=this;var _0x3d8e54=[];var _0x11d555=_0x40ada0>=0x1?_0x40ada0:0x1;if(_0x3fbc70[_0x5fc7('0x52')]===_0x5fc7('0x8')){_0x11d555=0x1;}var _0xa59ec7=Math[_0x5fc7('0x1c0')](_0x3fbc70[_0x5fc7('0x4a')]*_0x11d555)-_0x3fbc70['originated']-_0x3fbc70[_0x5fc7('0xbb')];emitVoiceQueueSummary(_0x3fbc70);if(_0x3fbc70[_0x5fc7('0x1fb')]>0x0){var _0x43b737=_0x3fbc70[_0x5fc7('0x1fb')]-_0x3fbc70[_0x5fc7('0x69')]-_0x3fbc70['talking']-_0x3fbc70[_0x5fc7('0xbb')]-_0x3fbc70[_0x5fc7('0x4b')];if(_0xa59ec7>_0x43b737){_0xa59ec7=_0x43b737;}}if(_0xa59ec7>0x0){if(_0x3fbc70['dialMethod']===_0x5fc7('0x8')){_0xa59ec7=0x1;}if(_0xa59ec7>this[_0x5fc7('0x1d')]){_0xa59ec7=this[_0x5fc7('0x1d')];}_0x3fbc70['temp']+=_0xa59ec7;for(var _0x52c5d8 in this[_0x5fc7('0x1b')]){if(typeof this[_0x5fc7('0x1b')][_0x52c5d8]!=='undefined'){if(this[_0x5fc7('0x1b')][_0x52c5d8][_0x5fc7('0x9e')]===_0x5fc7('0x1fc')&&this[_0x5fc7('0x1b')][_0x52c5d8][_0x5fc7('0xa6')]==='reachable'){_0x3d8e54['push'](this[_0x5fc7('0x1b')][_0x52c5d8]['id']);}}}this[_0x5fc7('0xba')](_0x3fbc70['id'],_0x3d8e54,_0xa59ec7,_0x3fbc70[_0x5fc7('0x1f5')],_0x3fbc70)[_0x5fc7('0xad')](function(_0x248e1b){_0x3fbc70[_0x5fc7('0xbb')]-=_0xa59ec7;_0x3fbc70[_0x5fc7('0xbb')]=_0x3fbc70[_0x5fc7('0xbb')]>0x0?_0x3fbc70[_0x5fc7('0xbb')]:0x0;if(!checkContactEmpty(_0x248e1b)){_0x5ab1e2[_0x5fc7('0x1fd')](_0x3fbc70)[_0x5fc7('0xad')](sendMessageReschedule(_0x3fbc70))[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0xae')));}else{_0x3fbc70[_0x5fc7('0x69')]+=_0x248e1b[_0x5fc7('0x93')];_0x3fbc70[_0x5fc7('0x39')]=_0x3fbc70['dialMethod']===_0x5fc7('0x8')?'ACTIVE':_0x5fc7('0x1fe');for(var _0x3a8f23=0x0;_0x3a8f23<_0x248e1b[_0x5fc7('0x93')];_0x3a8f23+=0x1){if(_[_0x5fc7('0xa4')](_0x248e1b[_0x3a8f23])||_[_0x5fc7('0xa4')](_0x248e1b[_0x3a8f23][_0x5fc7('0x163')])||_[_0x5fc7('0xa4')](_0x248e1b[_0x3a8f23]['Contact']['phone'])){_0x5ab1e2[_0x5fc7('0xc8')](_0x5fc7('0x1f8'),_0x3fbc70,_0x248e1b[_0x3a8f23]);}else{_0x5ab1e2[_0x5fc7('0xaf')](_[_0x5fc7('0xcb')](_0x248e1b[_0x3a8f23],[_0x5fc7('0xfa'),_0x5fc7('0x1f9')]))['then'](_0x5ab1e2[_0x5fc7('0x1dc')](_0x3fbc70,_0x248e1b[_0x3a8f23]))['catch'](_0x5ab1e2[_0x5fc7('0xc7')]('[actionOriginate]\x20',_0x3fbc70));}}}})[_0x5fc7('0xa7')](loggerGetContactDialer(_0x5fc7('0x1ff'),_0x3fbc70,_0xa59ec7));}};Dialer['prototype'][_0x5fc7('0x8d')]=function(_0xd8a7b6){if(_0xd8a7b6[_0x5fc7('0x1fb')]>0x0){var _0x1ab9ba=_0xd8a7b6[_0x5fc7('0x1fb')]-_0xd8a7b6[_0x5fc7('0x69')]-_0xd8a7b6[_0x5fc7('0x4d')];if(_0x1ab9ba>0x0){this[_0x5fc7('0x200')](_0xd8a7b6);}else{loggerPredictiveCalls[_0x5fc7('0x79')]('[handlePredictive][limitChannel]');}}else{this[_0x5fc7('0x200')](_0xd8a7b6);}};Dialer[_0x5fc7('0x14')]['tryOriginatePredictive']=function(_0x2a394b){var _0x3379d5=this;var _0x524b55=[];_0x2a394b[_0x5fc7('0x69')]+=0x1;for(var _0x5a7696 in this[_0x5fc7('0x1b')]){if(typeof this[_0x5fc7('0x1b')][_0x5a7696]!=='undefined'){if(this[_0x5fc7('0x1b')][_0x5a7696][_0x5fc7('0x9e')]===_0x5fc7('0x1fc')&&this[_0x5fc7('0x1b')][_0x5a7696][_0x5fc7('0xa6')]==='reachable'){_0x524b55[_0x5fc7('0x126')](this[_0x5fc7('0x1b')][_0x5a7696]['id']);}}}this['getContactDialer'](_0x2a394b['id'],_0x524b55,0x1,_0x2a394b[_0x5fc7('0x1f5')],_0x2a394b)['then'](function(_0x1a718a){if(!checkContactEmpty(_0x1a718a)){checkContactLowerLimitOriginate(_0x2a394b,0x1,0x0);_0x3379d5['countReScheduled'](_0x2a394b)['then'](sendMessageReschedule(_0x2a394b))[_0x5fc7('0xa7')](loggerCatch(_0x5fc7('0xae')));}else{_0x2a394b['message']=_0x5fc7('0x1fe');if(_[_0x5fc7('0xa4')](_0x1a718a[0x0])||_[_0x5fc7('0xa4')](_0x1a718a[0x0][_0x5fc7('0x163')])||_[_0x5fc7('0xa4')](_0x1a718a[0x0][_0x5fc7('0x163')][_0x5fc7('0x164')])){_0x3379d5[_0x5fc7('0xc8')](_0x5fc7('0x1f8'),_0x2a394b,_0x1a718a[0x0]);}else{_0x3379d5[_0x5fc7('0xaf')](_[_0x5fc7('0xcb')](_0x1a718a[0x0],[_0x5fc7('0xfa'),_0x5fc7('0x1f9')]))[_0x5fc7('0xad')](_0x3379d5[_0x5fc7('0x1dc')](_0x2a394b,_0x1a718a[0x0]))['catch'](_0x3379d5[_0x5fc7('0xc7')](_0x5fc7('0x201'),_0x2a394b));}}})[_0x5fc7('0xa7')](loggerGetContactDialer(_0x5fc7('0x202'),_0x2a394b,0x1));emitVoiceQueueSummary(_0x2a394b);};Dialer[_0x5fc7('0x14')][_0x5fc7('0x203')]=function(_0x257f64,_0x2cb368,_0x80ab56,_0x274a99,_0xfced6f,_0x3ec151){loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x204'));loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x205'),_0x257f64);loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x206'),_0x2cb368);loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x207'),_0x80ab56);loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x208'),_0x274a99);loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x209'),_0xfced6f);loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x84'));return new BPromise(function(_0x3c727f,_0x4b52f4){if(_0x257f64<=0x0||isNaN(_0x257f64)){return _0x4b52f4(msgResponse(_0x5fc7('0x20a'),_0x5fc7('0x43'),_0x5fc7('0x20b')+_0x257f64));}if(_0x80ab56<=0x0||isNaN(_0x80ab56)){return _0x4b52f4(msgResponse(_0x5fc7('0x20a'),'Error',_0x5fc7('0x20c')+_0x80ab56));}if(_0x274a99<=0x0||isNaN(_0x274a99)){return _0x4b52f4(msgResponse(_0x5fc7('0x20a'),_0x5fc7('0x43'),'p\x20=\x20'+_0x274a99));}if(_0x2cb368<=0x0||isNaN(_0x2cb368)){return _0x4b52f4(msgResponse('[abandonmentRate]',_0x5fc7('0x43'),_0x5fc7('0x20d')+_0x2cb368));}if(_0xfced6f<=0x0||isNaN(_0xfced6f)){return _0x4b52f4(msgResponse(_0x5fc7('0x20a'),_0x5fc7('0x43'),'Amax\x20=\x20'+_0xfced6f));}_0x3ec151=_0x3ec151||0x0;var _0xd9dc06=0x1/_0x80ab56;var _0x3e7904=0x0;var _0xe5b48e=0x0;var _0x4d0e36=0x0;var _0x50d59a=0x0;for(var _0x583c1b=0x0;_0x4d0e36<_0xfced6f;_0x583c1b+=0x1){_0xe5b48e=_0x583c1b/_0x2cb368;_0x3e7904=(_0x274a99*_0xe5b48e+_0x3ec151)/_0xd9dc06;_0x4d0e36=erlangb(_0x3e7904,_0x257f64);_0x50d59a=_0x3e7904/_0x257f64*(0x1-erlangb(_0x3e7904,_0x257f64));}return _0x3c727f({'erlangCalls':_0x583c1b,'erlangCallToSecond':_0x2cb368/_0x583c1b,'erlangAbandonmentRate':_0x4d0e36,'erlangBusyFactor':_0x50d59a});});};Dialer[_0x5fc7('0x14')]['busyFactor']=function(_0x4f5fe2,_0x4346ea,_0x11abcd,_0x5e55f9,_0x21b23a,_0x2e221a){loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x20e'));loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x205'),_0x4f5fe2);loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x206'),_0x4346ea);loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x207'),_0x11abcd);loggerPredictive['info'](_0x5fc7('0x208'),_0x5e55f9);loggerPredictive['info'](_0x5fc7('0x20f'),_0x21b23a);loggerPredictive[_0x5fc7('0x79')](_0x5fc7('0x84'));return new BPromise(function(_0x2d88c9,_0x4f068d){if(_0x4f5fe2<=0x0||isNaN(_0x4f5fe2)){return _0x4f068d(msgResponse(_0x5fc7('0x210'),'Error',_0x5fc7('0x20b')+_0x4f5fe2));}if(_0x11abcd<=0x0||isNaN(_0x11abcd)){return _0x4f068d(msgResponse(_0x5fc7('0x210'),_0x5fc7('0x43'),_0x5fc7('0x20c')+_0x11abcd));}if(_0x5e55f9<=0x0||isNaN(_0x5e55f9)){return _0x4f068d(msgResponse('[busyFactor]',_0x5fc7('0x43'),'p\x20=\x20'+_0x5e55f9));}if(_0x4346ea<=0x0||isNaN(_0x4346ea)){return _0x4f068d(msgResponse(_0x5fc7('0x210'),'Error','interval\x20=\x20'+_0x4346ea));}if(_0x21b23a<=0x0||isNaN(_0x21b23a)){return _0x4f068d(msgResponse(_0x5fc7('0x210'),_0x5fc7('0x43'),_0x5fc7('0x211')+_0x21b23a));}_0x2e221a=_0x2e221a||0x0;var _0x4f3249=0x1/_0x11abcd;var _0x4dadbb=0x0;var _0x104428=0x0;var _0x3c1150=0x0;var _0x565a76=0x0;for(var _0x4fbaba=0x0;_0x565a76<_0x21b23a;_0x4fbaba+=0x1){_0x104428=_0x4fbaba/_0x4346ea;_0x4dadbb=(_0x5e55f9*_0x104428+_0x2e221a)/_0x4f3249;_0x3c1150=erlangb(_0x4dadbb,_0x4f5fe2);_0x565a76=_0x4dadbb/_0x4f5fe2*(0x1-erlangb(_0x4dadbb,_0x4f5fe2));}return _0x2d88c9({'erlangCalls':_0x4fbaba,'erlangCallToSecond':_0x4346ea/_0x4fbaba,'erlangAbandonmentRate':_0x3c1150,'erlangBusyFactor':_0x565a76});});};module[_0x5fc7('0x212')]=Dialer;
\ No newline at end of file
index e2287aa..b7cff58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb50a=['diff','seconds','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','uniqueid','name','calleridnum','starttime','droptime','holdtime','responsetime','talktime','queue','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb50a,0x1c0));var _0xab50=function(_0x1716ac,_0x245897){_0x1716ac=_0x1716ac-0x0;var _0xa54aaa=_0xb50a[_0x1716ac];return _0xa54aaa;};'use strict';var util=require(_0xab50('0x0'));var _=require('lodash');var moment=require(_0xab50('0x1'));function getSeconds(_0x1fd375,_0x29dbfd){var _0x21a683=moment(_0x1fd375)[_0xab50('0x2')](0x0);var _0x2f602f=moment(_0x29dbfd)[_0xab50('0x2')](0x0);return _0x21a683[_0xab50('0x3')](_0x2f602f,_0xab50('0x4'));}function QueueCallerAbandon(_0x4685f2,_0x40d982){this[_0xab50('0x5')]=_0x4685f2[_0xab50('0x5')];this['type']=_0x4685f2[_0xab50('0x6')];this[_0xab50('0x7')]=_0x4685f2['type']===_0xab50('0x8')?'queue':_0x4685f2[_0xab50('0x6')];this[_0xab50('0x9')]=_0x4685f2[_0xab50('0x9')];this['countcongestionretry']=_0x4685f2[_0xab50('0xa')];this[_0xab50('0xb')]=_0x4685f2['countnoanswerretry'];this['countglobal']=_0x4685f2['countbusyretry']+_0x4685f2[_0xab50('0xa')]+_0x4685f2[_0xab50('0xb')]+_0x4685f2[_0xab50('0xc')]+_0x4685f2[_0xab50('0xd')]+_0x4685f2['countabandonedretry']+_0x4685f2[_0xab50('0xe')]+_0x4685f2[_0xab50('0xf')];this['countnosuchnumberretry']=_0x4685f2[_0xab50('0xc')];this[_0xab50('0xd')]=_0x4685f2['countdropretry'];this[_0xab50('0x10')]=_0x4685f2['countabandonedretry'];this[_0xab50('0xe')]=_0x4685f2[_0xab50('0xe')];this['countagentrejectretry']=_0x4685f2[_0xab50('0xf')];this['uniqueid']=_0x40d982[_0xab50('0x11')];this['calleridname']=_0x4685f2[_0xab50('0x12')];this[_0xab50('0x13')]=_0x4685f2['number'];this[_0xab50('0x14')]=_0x4685f2['starttime'];this['responsetime']=_0x4685f2['responsetime'];this[_0xab50('0x15')]=_0x4685f2[_0xab50('0x15')];this['endtime']=this[_0xab50('0x15')];this['ringtime']=getSeconds(_0x4685f2['responsetime'],_0x4685f2[_0xab50('0x14')]);this[_0xab50('0x16')]=getSeconds(this[_0xab50('0x15')],_0x4685f2[_0xab50('0x17')]);this[_0xab50('0x18')]=0x0;this[_0xab50('0x19')]=_0x40d982[_0xab50('0x19')];this[_0xab50('0x1a')]=_0x40d982[_0xab50('0x1b')];this[_0xab50('0x1c')]=_0x40d982[_0xab50('0x1c')];this[_0xab50('0x1d')]=_0x4685f2['callback'];this[_0xab50('0x1e')]=_0x4685f2[_0xab50('0x1e')];this[_0xab50('0x1f')]=_0x4685f2[_0xab50('0x1f')];this['recallme']=_0x4685f2[_0xab50('0x20')];this[_0xab50('0x21')]=_0x4685f2[_0xab50('0x21')];this[_0xab50('0x22')]=_0x4685f2['ListId'];this[_0xab50('0x23')]=_0x4685f2[_0xab50('0x23')];this[_0xab50('0x24')]=_0x4685f2[_0xab50('0x24')];this[_0xab50('0x25')]=_0x4685f2['CampaignId'];this['originatecalleridnum']=_0x4685f2[_0xab50('0x26')]||'';this[_0xab50('0x27')]=_0x4685f2[_0xab50('0x27')]||'';}module[_0xab50('0x28')]=QueueCallerAbandon;
\ No newline at end of file
+var _0xce5c=['countdropretry','countagentrejectretry','countabandonedretry','uniqueid','calleridname','name','number','starttime','responsetime','droptime','endtime','holdtime','talktime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','seconds','scheduledat','type','outbound','queue','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xce5c,0xe4));var _0xcce5=function(_0x57474e,_0x4178b8){_0x57474e=_0x57474e-0x0;var _0xfaae8c=_0xce5c[_0x57474e];return _0xfaae8c;};'use strict';var util=require(_0xcce5('0x0'));var _=require('lodash');var moment=require(_0xcce5('0x1'));function getSeconds(_0x21d50e,_0x3db642){var _0x169243=moment(_0x21d50e)[_0xcce5('0x2')](0x0);var _0x5a9b03=moment(_0x3db642)[_0xcce5('0x2')](0x0);return _0x169243['diff'](_0x5a9b03,_0xcce5('0x3'));}function QueueCallerAbandon(_0x4daebe,_0x296760){this['scheduledat']=_0x4daebe[_0xcce5('0x4')];this[_0xcce5('0x5')]=_0x4daebe[_0xcce5('0x5')];this['campaigntype']=_0x4daebe['type']===_0xcce5('0x6')?_0xcce5('0x7'):_0x4daebe['type'];this['countbusyretry']=_0x4daebe['countbusyretry'];this[_0xcce5('0x8')]=_0x4daebe[_0xcce5('0x8')];this[_0xcce5('0x9')]=_0x4daebe['countnoanswerretry'];this[_0xcce5('0xa')]=_0x4daebe['countbusyretry']+_0x4daebe[_0xcce5('0x8')]+_0x4daebe[_0xcce5('0x9')]+_0x4daebe[_0xcce5('0xb')]+_0x4daebe[_0xcce5('0xc')]+_0x4daebe['countabandonedretry']+_0x4daebe['countmachineretry']+_0x4daebe[_0xcce5('0xd')];this['countnosuchnumberretry']=_0x4daebe[_0xcce5('0xb')];this[_0xcce5('0xc')]=_0x4daebe[_0xcce5('0xc')];this[_0xcce5('0xe')]=_0x4daebe[_0xcce5('0xe')];this['countmachineretry']=_0x4daebe['countmachineretry'];this['countagentrejectretry']=_0x4daebe[_0xcce5('0xd')];this[_0xcce5('0xf')]=_0x296760[_0xcce5('0xf')];this[_0xcce5('0x10')]=_0x4daebe[_0xcce5('0x11')];this['calleridnum']=_0x4daebe[_0xcce5('0x12')];this[_0xcce5('0x13')]=_0x4daebe[_0xcce5('0x13')];this['responsetime']=_0x4daebe[_0xcce5('0x14')];this[_0xcce5('0x15')]=_0x4daebe[_0xcce5('0x15')];this[_0xcce5('0x16')]=this[_0xcce5('0x15')];this['ringtime']=getSeconds(_0x4daebe[_0xcce5('0x14')],_0x4daebe['starttime']);this[_0xcce5('0x17')]=getSeconds(this[_0xcce5('0x15')],_0x4daebe['responsetime']);this[_0xcce5('0x18')]=0x0;this[_0xcce5('0x7')]=_0x296760['queue'];this[_0xcce5('0x19')]=_0x296760[_0xcce5('0x1a')];this['reason']=_0x296760[_0xcce5('0x1b')];this[_0xcce5('0x1c')]=_0x4daebe['callback'];this[_0xcce5('0x1d')]=_0x4daebe[_0xcce5('0x1d')];this[_0xcce5('0x1e')]=_0x4daebe['callbackat'];this[_0xcce5('0x1f')]=_0x4daebe['recallme'];this['ContactId']=_0x4daebe[_0xcce5('0x20')];this[_0xcce5('0x21')]=_0x4daebe['ListId'];this[_0xcce5('0x22')]=_0x4daebe[_0xcce5('0x22')];this[_0xcce5('0x23')]=_0x4daebe['VoiceQueueId'];this[_0xcce5('0x24')]=_0x4daebe[_0xcce5('0x24')];this[_0xcce5('0x25')]=_0x4daebe[_0xcce5('0x25')]||'';this[_0xcce5('0x26')]=_0x4daebe[_0xcce5('0x26')]||'';}module[_0xcce5('0x27')]=QueueCallerAbandon;
\ No newline at end of file
index 7269061..7a19b10 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(_0x45676b,_0x304cad){var _0x387dd1=function(_0x2041ae){while(--_0x2041ae){_0x45676b['push'](_0x45676b['shift']());}};_0x387dd1(++_0x304cad);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b78e8,_0x55096b){_0x5b78e8=_0x5b78e8-0x0;var _0xf2c321=_0xa9e0[_0x5b78e8];return _0xf2c321;};'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(_0x45c16a,_0x665979){var _0x57c530=function(_0x5330e3){while(--_0x5330e3){_0x45c16a['push'](_0x45c16a['shift']());}};_0x57c530(++_0x665979);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xa9e0[_0x3c4737];return _0x2bb926;};'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 aed3fcb..1a0cb46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c4f=['active','SIP/%s','reachable','isTrunkReachable','\x20Trunk\x20is\x20not\x20active','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','exports','util','lodash','bluebird','uuid','moment','path','tiff2pdf','./util/gs','fax','./rpcDb','./util/util','./action','../rpc/faxMessage','channels','faxAccounts','trunks','actions','newchannel','syncNewchannel','bind','varset','syncVarSet','syncNewState','syncNewExten','syncFaxStatus','receivefax','syncReceiveFax','syncHangup','syncOriginateResponse','prototype','context','from-voip-provider','hasOwnProperty','exten','localstationid','uniqueid','channel','name','info','\x20syncNewchannel\x20','variable','channelstate','channelstatedesc','value','operation','status','filename','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','message','parse','.pdf','application/pdf','then','notify','catch','error','\x20notify\x20','stringify','\x20receiveFax\x20','pick','response','AttachmentId','SENDING\x20FAILED\x20','[Fax][Message][Error][NoUpdate1]','logger','updateStatus','update','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20faxRiceive\x20','faxpages','faxstatus','SUCCESS','faxstatusstring','SENDING\x20FAILED','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','checkTrunk','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','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','execOriginate','addVariables','ext','isNil'];(function(_0x3dd521,_0x1b1fe9){var _0x14f17a=function(_0x2114f5){while(--_0x2114f5){_0x3dd521['push'](_0x3dd521['shift']());}};_0x14f17a(++_0x1b1fe9);}(_0x3c4f,0x79));var _0xf3c4=function(_0x40c65d,_0x2eb246){_0x40c65d=_0x40c65d-0x0;var _0x2f9cff=_0x3c4f[_0x40c65d];return _0x2f9cff;};'use strict';var util=require(_0xf3c4('0x0'));var _=require(_0xf3c4('0x1'));var BPromise=require(_0xf3c4('0x2'));var uuid=require(_0xf3c4('0x3'));var moment=require(_0xf3c4('0x4'));var path=require(_0xf3c4('0x5'));var tiff2pdf=require(_0xf3c4('0x6'));var gs=require(_0xf3c4('0x7'));var logger=require('../../../config/logger')(_0xf3c4('0x8'));var ami=require('../ami');var rpcDb=require(_0xf3c4('0x9'));var Channel=require('./channel');var ut=require(_0xf3c4('0xa'));var Action=require(_0xf3c4('0xb'));var faxAccount=require('../rpc/faxAccount');var attachment=require('../rpc/attachment');var faxMessage=require(_0xf3c4('0xc'));function Fax(_0x44cc86){this[_0xf3c4('0xd')]={};this[_0xf3c4('0xe')]=_0x44cc86[_0xf3c4('0xe')];this[_0xf3c4('0xf')]=_0x44cc86[_0xf3c4('0xf')];this[_0xf3c4('0x10')]={};ami['on'](_0xf3c4('0x11'),this[_0xf3c4('0x12')][_0xf3c4('0x13')](this));ami['on'](_0xf3c4('0x14'),this[_0xf3c4('0x15')][_0xf3c4('0x13')](this));ami['on']('newstate',this[_0xf3c4('0x16')][_0xf3c4('0x13')](this));ami['on']('newexten',this[_0xf3c4('0x17')][_0xf3c4('0x13')](this));ami['on']('faxstatus',this[_0xf3c4('0x18')][_0xf3c4('0x13')](this));ami['on'](_0xf3c4('0x19'),this[_0xf3c4('0x1a')][_0xf3c4('0x13')](this));ami['on']('hangup',this[_0xf3c4('0x1b')][_0xf3c4('0x13')](this));ami['on']('originateresponse',this[_0xf3c4('0x1c')][_0xf3c4('0x13')](this));}Fax[_0xf3c4('0x1d')][_0xf3c4('0x12')]=function(_0x118ccd){if(_0x118ccd[_0xf3c4('0x1e')]===_0xf3c4('0x1f')){for(var _0x239fb3 in this[_0xf3c4('0xe')]){if(this[_0xf3c4('0xe')][_0xf3c4('0x20')](_0x239fb3)){if(_0x118ccd[_0xf3c4('0x21')]===this[_0xf3c4('0xe')][_0x239fb3][_0xf3c4('0x22')]){this[_0xf3c4('0xd')][_0x118ccd[_0xf3c4('0x23')]]={};this[_0xf3c4('0xd')][_0x118ccd[_0xf3c4('0x23')]][_0xf3c4('0x24')]=_0x118ccd[_0xf3c4('0x24')];this[_0xf3c4('0xd')][_0x118ccd[_0xf3c4('0x23')]]['id']=this[_0xf3c4('0xe')][_0x239fb3]['id'];this[_0xf3c4('0xd')][_0x118ccd[_0xf3c4('0x23')]][_0xf3c4('0x25')]=this[_0xf3c4('0xe')][_0x239fb3][_0xf3c4('0x25')];logger[_0xf3c4('0x26')](_0x118ccd[_0xf3c4('0x23')],_0xf3c4('0x27'));}}}}if(this[_0xf3c4('0x10')][_0x118ccd[_0xf3c4('0x23')]]){this[_0xf3c4('0xd')][_0x118ccd[_0xf3c4('0x23')]]={};this[_0xf3c4('0xd')][_0x118ccd[_0xf3c4('0x23')]][_0xf3c4('0x24')]=_0x118ccd['channel'];logger['info'](_0x118ccd[_0xf3c4('0x23')],_0xf3c4('0x27'));}};Fax[_0xf3c4('0x1d')][_0xf3c4('0x15')]=function(_0x15f159){if(this[_0xf3c4('0xd')][_0x15f159[_0xf3c4('0x23')]]){for(var _0x27b90f in _0x15f159[_0xf3c4('0x28')]){if(_0x15f159[_0xf3c4('0x28')][_0xf3c4('0x20')](_0x27b90f)){this[_0xf3c4('0xd')][_0x15f159[_0xf3c4('0x23')]][_0x27b90f]=_0x15f159['value'];}}}};Fax[_0xf3c4('0x1d')][_0xf3c4('0x16')]=function(_0x17c6af){if(this['channels'][_0x17c6af[_0xf3c4('0x23')]]){this[_0xf3c4('0xd')][_0x17c6af[_0xf3c4('0x23')]][_0xf3c4('0x29')]=_0x17c6af[_0xf3c4('0x29')];this[_0xf3c4('0xd')][_0x17c6af['uniqueid']][_0xf3c4('0x2a')]=_0x17c6af['channelstatedesc'];}};Fax[_0xf3c4('0x1d')][_0xf3c4('0x17')]=function(_0x28d8e8){if(this[_0xf3c4('0xd')][_0x28d8e8[_0xf3c4('0x23')]]){for(var _0x16e8ef in _0x28d8e8[_0xf3c4('0x28')]){if(_0x28d8e8[_0xf3c4('0x28')][_0xf3c4('0x20')](_0x16e8ef)){this[_0xf3c4('0xd')][_0x28d8e8[_0xf3c4('0x23')]][_0x16e8ef]=_0x28d8e8[_0xf3c4('0x2b')];}}}};Fax[_0xf3c4('0x1d')][_0xf3c4('0x18')]=function(_0xbbf63a){if(this[_0xf3c4('0xd')][_0xbbf63a[_0xf3c4('0x23')]]){this['channels'][_0xbbf63a[_0xf3c4('0x23')]][_0xf3c4('0x2c')]=_0xbbf63a[_0xf3c4('0x2c')];this['channels'][_0xbbf63a[_0xf3c4('0x23')]]['status']=_0xbbf63a[_0xf3c4('0x2d')];this[_0xf3c4('0xd')][_0xbbf63a[_0xf3c4('0x23')]][_0xf3c4('0x22')]=_0xbbf63a['localstationid'];this[_0xf3c4('0xd')][_0xbbf63a[_0xf3c4('0x23')]][_0xf3c4('0x2e')]=_0xbbf63a[_0xf3c4('0x2e')];logger[_0xf3c4('0x26')](_0xbbf63a[_0xf3c4('0x23')],'\x20syncFaxStatus\x20');}};Fax['prototype']['syncReceiveFax']=function(_0x15d7a5){var _0xacbca6=this;if(this[_0xf3c4('0xd')][_0x15d7a5['uniqueid']]){var _0x59e222=this['channels'][_0x15d7a5[_0xf3c4('0x23')]]['id'];this[_0xf3c4('0xd')][_0x15d7a5[_0xf3c4('0x23')]][_0xf3c4('0x2f')]=_0x15d7a5[_0xf3c4('0x2f')];this[_0xf3c4('0xd')][_0x15d7a5[_0xf3c4('0x23')]][_0xf3c4('0x30')]=_0x15d7a5[_0xf3c4('0x30')];this[_0xf3c4('0xd')][_0x15d7a5[_0xf3c4('0x23')]][_0xf3c4('0x22')]=_0x15d7a5['localstationid'];this[_0xf3c4('0xd')][_0x15d7a5[_0xf3c4('0x23')]][_0xf3c4('0x31')]=_0x15d7a5[_0xf3c4('0x31')];this[_0xf3c4('0xd')][_0x15d7a5[_0xf3c4('0x23')]][_0xf3c4('0x32')]=_0x15d7a5[_0xf3c4('0x32')];this[_0xf3c4('0xd')][_0x15d7a5[_0xf3c4('0x23')]][_0xf3c4('0x2e')]=_0x15d7a5['filename'];this[_0xf3c4('0xd')][_0x15d7a5['uniqueid']][_0xf3c4('0x33')]=_0x15d7a5[_0xf3c4('0x33')];if(this[_0xf3c4('0xd')][_0x15d7a5[_0xf3c4('0x23')]][_0xf3c4('0x30')]>0x0){tiff2pdf(_0x15d7a5[_0xf3c4('0x2e')],_0xf3c4('0x34'),function(_0x10523c){logger[_0xf3c4('0x26')](_0x15d7a5[_0xf3c4('0x23')],'\x20result\x20conversion\x20file\x20',_0x10523c[_0xf3c4('0x35')]);attachment['create']({'name':path[_0xf3c4('0x36')](_0x15d7a5[_0xf3c4('0x2e')])[_0xf3c4('0x25')],'basename':path[_0xf3c4('0x36')](_0x15d7a5[_0xf3c4('0x2e')])[_0xf3c4('0x25')]+_0xf3c4('0x37'),'type':_0xf3c4('0x38')})[_0xf3c4('0x39')](function(_0x1c5218){faxAccount[_0xf3c4('0x3a')](_0x59e222,{'from':_0x15d7a5[_0xf3c4('0x33')],'mapKey':_0xf3c4('0x8'),'body':path['parse'](_0x15d7a5['filename'])[_0xf3c4('0x25')]+_0xf3c4('0x37'),'AttachmentId':_0x1c5218['id']})[_0xf3c4('0x3b')](function(_0x54290a){logger[_0xf3c4('0x3c')](_0x15d7a5[_0xf3c4('0x23')],_0xf3c4('0x3d'),JSON[_0xf3c4('0x3e')](_0x54290a));});})[_0xf3c4('0x3b')](function(_0x54d24d){logger[_0xf3c4('0x3c')](_0x15d7a5[_0xf3c4('0x23')],_0xf3c4('0x3f'),JSON[_0xf3c4('0x3e')](_0x54d24d));});});}logger['info'](_0x15d7a5[_0xf3c4('0x23')],_0xf3c4('0x3f'));}};Fax[_0xf3c4('0x1d')][_0xf3c4('0x1c')]=function(_0x4c7ad2){if(this[_0xf3c4('0x10')][_0x4c7ad2['uniqueid']]){_['merge'](this[_0xf3c4('0xd')][_0x4c7ad2['uniqueid']],_[_0xf3c4('0x40')](_0x4c7ad2,[_0xf3c4('0x41'),'reason']));}};function updateStatus(_0x5c163b){if(_0x5c163b[_0xf3c4('0x42')]){faxMessage['update'](_0x5c163b[_0xf3c4('0x42')],{'failMessage':_0xf3c4('0x43')})[_0xf3c4('0x39')](function(_0x4c4f2f){ut['logger']('[Fax][Message][Error][Updated]',_0x4c4f2f);})[_0xf3c4('0x3b')](function(_0x235362){ut['logger'](_0xf3c4('0x44'),_0x235362);});}else{ut[_0xf3c4('0x45')]('[Fax][Message][Error][NoUpdate2]');}}Fax[_0xf3c4('0x1d')][_0xf3c4('0x46')]=function(_0x27ff65,_0x3af29d,_0x10b6ef){var _0x33a555=this;var _0x483b4f={};if(_0x3af29d){_0x483b4f={'read':_0x3af29d};}else{_0x483b4f={'failMessage':_0x10b6ef};}if(this['actions'][_0x27ff65][_0xf3c4('0x42')]){faxMessage[_0xf3c4('0x47')](this[_0xf3c4('0x10')][_0x27ff65][_0xf3c4('0x42')],_0x483b4f)[_0xf3c4('0x39')](function(_0x28a2b5){ut[_0xf3c4('0x45')](_0xf3c4('0x48'),_0x28a2b5);})[_0xf3c4('0x3b')](function(_0xb76dd0){ut[_0xf3c4('0x45')](_0xf3c4('0x49'),_0xb76dd0);})[_0xf3c4('0x4a')](function(){delete _0x33a555['channels'][_0x27ff65];delete _0x33a555[_0xf3c4('0x10')][_0x27ff65];});}else{ut[_0xf3c4('0x45')](_0xf3c4('0x4b'));delete this[_0xf3c4('0xd')][_0x27ff65];delete this['actions'][_0x27ff65];}};Fax[_0xf3c4('0x1d')][_0xf3c4('0x1b')]=function(_0x365441){var _0xa69d08=this;if(this['channels'][_0x365441[_0xf3c4('0x23')]]){if(this[_0xf3c4('0x10')][_0x365441[_0xf3c4('0x23')]]){this[_0xf3c4('0xd')][_0x365441[_0xf3c4('0x23')]]['id']=this[_0xf3c4('0x10')][_0x365441['uniqueid']]['id'];this[_0xf3c4('0xd')][_0x365441[_0xf3c4('0x23')]]['name']=this[_0xf3c4('0x10')][_0x365441[_0xf3c4('0x23')]][_0xf3c4('0x25')];}logger['info'](_0x365441[_0xf3c4('0x23')],this[_0xf3c4('0x10')][_0x365441[_0xf3c4('0x23')]]?'\x20hangup\x20sendFile\x20':_0xf3c4('0x4c'),JSON[_0xf3c4('0x3e')](this[_0xf3c4('0xd')][_0x365441[_0xf3c4('0x23')]]));if(this[_0xf3c4('0x10')][_0x365441[_0xf3c4('0x23')]]){if(this['channels'][_0x365441[_0xf3c4('0x23')]][_0xf3c4('0x4d')]>0x0&&this[_0xf3c4('0xd')][_0x365441[_0xf3c4('0x23')]][_0xf3c4('0x4e')]===_0xf3c4('0x4f')){this['updateStatus'](_0x365441[_0xf3c4('0x23')],!![]);}else{this[_0xf3c4('0x46')](_0x365441['uniqueid'],![],this[_0xf3c4('0xd')][_0x365441[_0xf3c4('0x23')]][_0xf3c4('0x50')]?'SENDING\x20FAILED:\x20'+this[_0xf3c4('0xd')][_0x365441[_0xf3c4('0x23')]][_0xf3c4('0x50')]:_0xf3c4('0x51'));}}}};Fax['prototype']['send']=function(_0x160742){var _0x48171c=this;return new BPromise(function(_0x13be83,_0x4f1a0d){_0x48171c['execOriginate'](_0x160742,_0x48171c[_0xf3c4('0xe')][_0x160742[_0xf3c4('0x52')]])[_0xf3c4('0x39')](function(_0x24b0bb){ut[_0xf3c4('0x45')](_0xf3c4('0x53'),_0x24b0bb);_0x13be83(ut[_0xf3c4('0x35')](_0xf3c4('0x54')));})['catch'](function(_0x3d11f5){ut[_0xf3c4('0x45')](_0xf3c4('0x55'),_0x3d11f5);updateStatus(_0x160742);_0x4f1a0d(ut[_0xf3c4('0x35')](_0xf3c4('0x56')));});});};Fax['prototype'][_0xf3c4('0x57')]=function(_0x5ec61e){var _0x351094=this;return new BPromise(function(_0x3b5da9,_0x4ae678){var _0x1c6e0e=_0x351094[_0xf3c4('0x58')](_0x351094[_0xf3c4('0xe')][_0x5ec61e['FaxAccountId']]['Trunk'],_0x5ec61e);if(_0x1c6e0e[_0xf3c4('0x59')]){_0x3b5da9(ut[_0xf3c4('0x35')](_0xf3c4('0x5a')));}else{_0x4ae678(ut[_0xf3c4('0x35')](_0x1c6e0e[_0xf3c4('0x35')]));}});};function originate(_0x3971eb,_0x19f399,_0x1c58c8){return new BPromise(function(_0xa18e9c,_0x5f582c){if(_0x1c58c8){var _0x232d76=util[_0xf3c4('0x5b')](_0xf3c4('0x5c'),path[_0xf3c4('0x36')](_0x3971eb[_0xf3c4('0x5')])[_0xf3c4('0x25')],_0x3971eb['path']);gs[_0xf3c4('0x5d')](_0x232d76)[_0xf3c4('0x39')](function(){_0x3971eb[_0xf3c4('0x5')]=util[_0xf3c4('0x5b')]('%s/%s.tif',path[_0xf3c4('0x36')](_0x3971eb['path'])[_0xf3c4('0x5e')],path['parse'](_0x3971eb[_0xf3c4('0x5')])[_0xf3c4('0x25')]);_0x19f399[_0xf3c4('0x5f')]=_0x3971eb[_0xf3c4('0x5')];ut[_0xf3c4('0x45')](_0xf3c4('0x60'),'');ami[_0xf3c4('0x61')](ut[_0xf3c4('0x62')](_0x3971eb,_0x19f399))[_0xf3c4('0x39')](function(_0x9c3884){_0xa18e9c(_0x9c3884);})[_0xf3c4('0x3b')](function(_0xdde79){_0x5f582c(_0xdde79);});})[_0xf3c4('0x3b')](function(_0x3c43d8){_0x5f582c(_0x3c43d8);});}else{ami[_0xf3c4('0x61')](ut[_0xf3c4('0x62')](_0x3971eb,_0x19f399))[_0xf3c4('0x39')](function(_0x550816){_0xa18e9c(_0x550816);})[_0xf3c4('0x3b')](function(_0xba4b53){_0x5f582c(_0xba4b53);});}});}Fax['prototype'][_0xf3c4('0x63')]=function(_0x73bbe8,_0x3b9a3b){var _0x52202a=this;return new BPromise(function(_0x1f998f,_0x39ef1a){var _0x3cfb8=uuid['v4']();var _0x31b5f3=ut[_0xf3c4('0x64')](_0x73bbe8,_0x3b9a3b);_0x52202a[_0xf3c4('0x10')][_0x3cfb8]=new Action(_0x3cfb8,_0x3b9a3b,_0x73bbe8);var _0x3397e3=_0x52202a[_0xf3c4('0x10')][_0x3cfb8];if(path[_0xf3c4('0x36')](_0x73bbe8[_0xf3c4('0x5')])[_0xf3c4('0x65')]===_0xf3c4('0x37')){originate(_0x3397e3,_0x31b5f3,!![])[_0xf3c4('0x39')](function(_0xad0308){_0x1f998f(_0xad0308);})[_0xf3c4('0x3b')](function(_0x41535f){_0x39ef1a(_0x41535f);});}else{originate(_0x3397e3,_0x31b5f3,![])[_0xf3c4('0x39')](function(_0x5d9d6f){_0x1f998f(_0x5d9d6f);})[_0xf3c4('0x3b')](function(_0x4ed17b){_0x39ef1a(_0x4ed17b);});}});};Fax[_0xf3c4('0x1d')]['isTrunkReachable']=function(_0x36c70f){return!_[_0xf3c4('0x66')](_0x36c70f)&&!_[_0xf3c4('0x66')](_0x36c70f[_0xf3c4('0x25')])&&!_[_0xf3c4('0x66')](_0x36c70f[_0xf3c4('0x67')])&&_0x36c70f['active']&&!_[_0xf3c4('0x66')](this[_0xf3c4('0xf')][util[_0xf3c4('0x5b')](_0xf3c4('0x68'),_0x36c70f[_0xf3c4('0x25')])])&&!_[_0xf3c4('0x66')](this[_0xf3c4('0xf')][util[_0xf3c4('0x5b')](_0xf3c4('0x68'),_0x36c70f['name'])][_0xf3c4('0x2d')])&&(this['trunks'][util[_0xf3c4('0x5b')](_0xf3c4('0x68'),_0x36c70f[_0xf3c4('0x25')])][_0xf3c4('0x2d')]===_0xf3c4('0x69')||this[_0xf3c4('0xf')][util[_0xf3c4('0x5b')](_0xf3c4('0x68'),_0x36c70f['name'])][_0xf3c4('0x2d')]==='unmonitored');};Fax['prototype'][_0xf3c4('0x58')]=function(_0xbe3f92,_0x789073){if(!this[_0xf3c4('0x6a')](_0xbe3f92)){ut[_0xf3c4('0x45')]('[Fax][checkTrunk][Trunk\x20not\x20work]',_[_0xf3c4('0x66')](_0xbe3f92)?'':_0xbe3f92['name']+_0xf3c4('0x6b'));return{'isValid':![],'message':'Trunk\x20not\x20working'};}if(_[_0xf3c4('0x66')](_0x789073[_0xf3c4('0x8')])){ut[_0xf3c4('0x45')]('[Fax][checkTrunk][Empty\x20Fax]',JSON[_0xf3c4('0x3e')](_0x789073));return{'isValid':![],'message':_0xf3c4('0x6c')};}if(_[_0xf3c4('0x66')](_0x789073['path'])){ut['logger'](_0xf3c4('0x6d'),JSON[_0xf3c4('0x3e')](_0x789073));return{'isValid':![],'message':_0xf3c4('0x6e')};}return{'isValid':!![],'message':'Is\x20Valid'};};module[_0xf3c4('0x6f')]=Fax;
\ No newline at end of file
+var _0x6829=['notify','catch','error','\x20receiveFax\x20','merge','pick','reason','update','AttachmentId','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','stringify','faxpages','SUCCESS','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','execOriginate','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkTrunk','Trunk','isValid','format','%s/%s.tif','Convert\x20pdf\x20to\x20tif','Action','variablesAction','addVariables','ext','.pdf','isTrunkReachable','isNil','active','SIP/%s','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','bluebird','uuid','moment','path','tiff2pdf','./util/gs','../../../config/logger','fax','./rpcDb','./channel','./util/util','./action','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','actions','newchannel','bind','varset','syncVarSet','newstate','syncNewState','newexten','syncNewExten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncHangup','originateresponse','syncOriginateResponse','prototype','syncNewchannel','hasOwnProperty','exten','localstationid','uniqueid','name','info','channel','\x20syncNewchannel\x20','variable','value','channelstate','channelstatedesc','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','parse','application/pdf','then'];(function(_0x522e32,_0x440e6d){var _0x216842=function(_0x467028){while(--_0x467028){_0x522e32['push'](_0x522e32['shift']());}};_0x216842(++_0x440e6d);}(_0x6829,0x19c));var _0x9682=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0x6829[_0x31e29a];return _0x32d892;};'use strict';var util=require(_0x9682('0x0'));var _=require('lodash');var BPromise=require(_0x9682('0x1'));var uuid=require(_0x9682('0x2'));var moment=require(_0x9682('0x3'));var path=require(_0x9682('0x4'));var tiff2pdf=require(_0x9682('0x5'));var gs=require(_0x9682('0x6'));var logger=require(_0x9682('0x7'))(_0x9682('0x8'));var ami=require('../ami');var rpcDb=require(_0x9682('0x9'));var Channel=require(_0x9682('0xa'));var ut=require(_0x9682('0xb'));var Action=require(_0x9682('0xc'));var faxAccount=require('../rpc/faxAccount');var attachment=require(_0x9682('0xd'));var faxMessage=require(_0x9682('0xe'));function Fax(_0x49cd34){this[_0x9682('0xf')]={};this[_0x9682('0x10')]=_0x49cd34[_0x9682('0x10')];this[_0x9682('0x11')]=_0x49cd34[_0x9682('0x11')];this[_0x9682('0x12')]={};ami['on'](_0x9682('0x13'),this['syncNewchannel'][_0x9682('0x14')](this));ami['on'](_0x9682('0x15'),this[_0x9682('0x16')][_0x9682('0x14')](this));ami['on'](_0x9682('0x17'),this[_0x9682('0x18')][_0x9682('0x14')](this));ami['on'](_0x9682('0x19'),this[_0x9682('0x1a')][_0x9682('0x14')](this));ami['on'](_0x9682('0x1b'),this[_0x9682('0x1c')][_0x9682('0x14')](this));ami['on'](_0x9682('0x1d'),this[_0x9682('0x1e')][_0x9682('0x14')](this));ami['on'](_0x9682('0x1f'),this[_0x9682('0x20')][_0x9682('0x14')](this));ami['on'](_0x9682('0x21'),this[_0x9682('0x22')][_0x9682('0x14')](this));}Fax[_0x9682('0x23')][_0x9682('0x24')]=function(_0x2f0344){if(_0x2f0344['context']==='from-voip-provider'){for(var _0x37c92e in this[_0x9682('0x10')]){if(this[_0x9682('0x10')][_0x9682('0x25')](_0x37c92e)){if(_0x2f0344[_0x9682('0x26')]===this[_0x9682('0x10')][_0x37c92e][_0x9682('0x27')]){this[_0x9682('0xf')][_0x2f0344[_0x9682('0x28')]]={};this['channels'][_0x2f0344['uniqueid']]['channel']=_0x2f0344['channel'];this[_0x9682('0xf')][_0x2f0344[_0x9682('0x28')]]['id']=this[_0x9682('0x10')][_0x37c92e]['id'];this[_0x9682('0xf')][_0x2f0344['uniqueid']][_0x9682('0x29')]=this['faxAccounts'][_0x37c92e][_0x9682('0x29')];logger[_0x9682('0x2a')](_0x2f0344[_0x9682('0x28')],'\x20syncNewchannel\x20');}}}}if(this[_0x9682('0x12')][_0x2f0344[_0x9682('0x28')]]){this[_0x9682('0xf')][_0x2f0344['uniqueid']]={};this[_0x9682('0xf')][_0x2f0344[_0x9682('0x28')]][_0x9682('0x2b')]=_0x2f0344[_0x9682('0x2b')];logger[_0x9682('0x2a')](_0x2f0344[_0x9682('0x28')],_0x9682('0x2c'));}};Fax[_0x9682('0x23')]['syncVarSet']=function(_0xd8fad){if(this[_0x9682('0xf')][_0xd8fad[_0x9682('0x28')]]){for(var _0x5b7f9a in _0xd8fad['variable']){if(_0xd8fad[_0x9682('0x2d')][_0x9682('0x25')](_0x5b7f9a)){this[_0x9682('0xf')][_0xd8fad['uniqueid']][_0x5b7f9a]=_0xd8fad[_0x9682('0x2e')];}}}};Fax['prototype'][_0x9682('0x18')]=function(_0x566411){if(this[_0x9682('0xf')][_0x566411[_0x9682('0x28')]]){this[_0x9682('0xf')][_0x566411[_0x9682('0x28')]][_0x9682('0x2f')]=_0x566411[_0x9682('0x2f')];this[_0x9682('0xf')][_0x566411[_0x9682('0x28')]][_0x9682('0x30')]=_0x566411[_0x9682('0x30')];}};Fax[_0x9682('0x23')][_0x9682('0x1a')]=function(_0x532f9c){if(this[_0x9682('0xf')][_0x532f9c[_0x9682('0x28')]]){for(var _0x338e55 in _0x532f9c[_0x9682('0x2d')]){if(_0x532f9c['variable']['hasOwnProperty'](_0x338e55)){this['channels'][_0x532f9c[_0x9682('0x28')]][_0x338e55]=_0x532f9c[_0x9682('0x2e')];}}}};Fax[_0x9682('0x23')]['syncFaxStatus']=function(_0x40c7f1){if(this[_0x9682('0xf')][_0x40c7f1[_0x9682('0x28')]]){this['channels'][_0x40c7f1['uniqueid']][_0x9682('0x31')]=_0x40c7f1['operation'];this[_0x9682('0xf')][_0x40c7f1[_0x9682('0x28')]][_0x9682('0x32')]=_0x40c7f1[_0x9682('0x32')];this['channels'][_0x40c7f1['uniqueid']]['localstationid']=_0x40c7f1[_0x9682('0x27')];this[_0x9682('0xf')][_0x40c7f1[_0x9682('0x28')]][_0x9682('0x33')]=_0x40c7f1[_0x9682('0x33')];logger['info'](_0x40c7f1[_0x9682('0x28')],_0x9682('0x34'));}};Fax['prototype'][_0x9682('0x1e')]=function(_0x45c73a){var _0x1b243e=this;if(this[_0x9682('0xf')][_0x45c73a[_0x9682('0x28')]]){var _0x16d3cd=this[_0x9682('0xf')][_0x45c73a['uniqueid']]['id'];this[_0x9682('0xf')][_0x45c73a['uniqueid']]['remotestationid']=_0x45c73a[_0x9682('0x35')];this[_0x9682('0xf')][_0x45c73a['uniqueid']][_0x9682('0x36')]=_0x45c73a[_0x9682('0x36')];this[_0x9682('0xf')][_0x45c73a['uniqueid']][_0x9682('0x27')]=_0x45c73a['localstationid'];this['channels'][_0x45c73a['uniqueid']][_0x9682('0x37')]=_0x45c73a[_0x9682('0x37')];this[_0x9682('0xf')][_0x45c73a[_0x9682('0x28')]][_0x9682('0x38')]=_0x45c73a[_0x9682('0x38')];this[_0x9682('0xf')][_0x45c73a[_0x9682('0x28')]][_0x9682('0x33')]=_0x45c73a[_0x9682('0x33')];this[_0x9682('0xf')][_0x45c73a[_0x9682('0x28')]]['calleridnum']=_0x45c73a[_0x9682('0x39')];if(this['channels'][_0x45c73a['uniqueid']][_0x9682('0x36')]>0x0){tiff2pdf(_0x45c73a[_0x9682('0x33')],_0x9682('0x3a'),function(_0x908b84){logger['info'](_0x45c73a[_0x9682('0x28')],_0x9682('0x3b'),_0x908b84[_0x9682('0x3c')]);attachment['create']({'name':path[_0x9682('0x3d')](_0x45c73a[_0x9682('0x33')])[_0x9682('0x29')],'basename':path[_0x9682('0x3d')](_0x45c73a[_0x9682('0x33')])[_0x9682('0x29')]+'.pdf','type':_0x9682('0x3e')})[_0x9682('0x3f')](function(_0x5eaa57){faxAccount[_0x9682('0x40')](_0x16d3cd,{'from':_0x45c73a['calleridnum'],'mapKey':_0x9682('0x8'),'body':path[_0x9682('0x3d')](_0x45c73a[_0x9682('0x33')])[_0x9682('0x29')]+'.pdf','AttachmentId':_0x5eaa57['id']})[_0x9682('0x41')](function(_0xa364d9){logger[_0x9682('0x42')](_0x45c73a[_0x9682('0x28')],'\x20notify\x20',JSON['stringify'](_0xa364d9));});})[_0x9682('0x41')](function(_0x153a73){logger[_0x9682('0x42')](_0x45c73a[_0x9682('0x28')],_0x9682('0x43'),JSON['stringify'](_0x153a73));});});}logger[_0x9682('0x2a')](_0x45c73a['uniqueid'],_0x9682('0x43'));}};Fax[_0x9682('0x23')][_0x9682('0x22')]=function(_0x4fe5b7){if(this[_0x9682('0x12')][_0x4fe5b7[_0x9682('0x28')]]){_[_0x9682('0x44')](this['channels'][_0x4fe5b7[_0x9682('0x28')]],_[_0x9682('0x45')](_0x4fe5b7,['response',_0x9682('0x46')]));}};function updateStatus(_0x704a98){if(_0x704a98['AttachmentId']){faxMessage[_0x9682('0x47')](_0x704a98[_0x9682('0x48')],{'failMessage':_0x9682('0x49')})[_0x9682('0x3f')](function(_0x1a04da){ut['logger']('[Fax][Message][Error][Updated]',_0x1a04da);})[_0x9682('0x41')](function(_0x45329e){ut[_0x9682('0x4a')]('[Fax][Message][Error][NoUpdate1]',_0x45329e);});}else{ut[_0x9682('0x4a')](_0x9682('0x4b'));}}Fax[_0x9682('0x23')][_0x9682('0x4c')]=function(_0x542111,_0x4fb76f,_0x2231c8){var _0x4f5aa7=this;var _0x18c7be={};if(_0x4fb76f){_0x18c7be={'read':_0x4fb76f};}else{_0x18c7be={'failMessage':_0x2231c8};}if(this[_0x9682('0x12')][_0x542111]['AttachmentId']){faxMessage[_0x9682('0x47')](this['actions'][_0x542111][_0x9682('0x48')],_0x18c7be)[_0x9682('0x3f')](function(_0x2485ca){ut['logger']('[Fax][Message][Updated]',_0x2485ca);})[_0x9682('0x41')](function(_0x5b8c81){ut['logger'](_0x9682('0x4d'),_0x5b8c81);})[_0x9682('0x4e')](function(){delete _0x4f5aa7['channels'][_0x542111];delete _0x4f5aa7['actions'][_0x542111];});}else{ut[_0x9682('0x4a')](_0x9682('0x4f'));delete this[_0x9682('0xf')][_0x542111];delete this['actions'][_0x542111];}};Fax['prototype'][_0x9682('0x20')]=function(_0x190cd4){var _0x2ae6a4=this;if(this[_0x9682('0xf')][_0x190cd4[_0x9682('0x28')]]){if(this[_0x9682('0x12')][_0x190cd4[_0x9682('0x28')]]){this[_0x9682('0xf')][_0x190cd4['uniqueid']]['id']=this[_0x9682('0x12')][_0x190cd4[_0x9682('0x28')]]['id'];this[_0x9682('0xf')][_0x190cd4[_0x9682('0x28')]]['name']=this['actions'][_0x190cd4['uniqueid']][_0x9682('0x29')];}logger[_0x9682('0x2a')](_0x190cd4[_0x9682('0x28')],this[_0x9682('0x12')][_0x190cd4[_0x9682('0x28')]]?_0x9682('0x50'):_0x9682('0x51'),JSON[_0x9682('0x52')](this[_0x9682('0xf')][_0x190cd4[_0x9682('0x28')]]));if(this[_0x9682('0x12')][_0x190cd4['uniqueid']]){if(this[_0x9682('0xf')][_0x190cd4[_0x9682('0x28')]][_0x9682('0x53')]>0x0&&this['channels'][_0x190cd4[_0x9682('0x28')]][_0x9682('0x1b')]===_0x9682('0x54')){this[_0x9682('0x4c')](_0x190cd4[_0x9682('0x28')],!![]);}else{this['updateStatus'](_0x190cd4[_0x9682('0x28')],![],this[_0x9682('0xf')][_0x190cd4['uniqueid']][_0x9682('0x55')]?_0x9682('0x56')+this[_0x9682('0xf')][_0x190cd4['uniqueid']]['faxstatusstring']:_0x9682('0x57'));}}}};Fax[_0x9682('0x23')]['send']=function(_0x1f57a1){var _0xce0116=this;return new BPromise(function(_0x5f2cb1,_0x287ba2){_0xce0116[_0x9682('0x58')](_0x1f57a1,_0xce0116[_0x9682('0x10')][_0x1f57a1[_0x9682('0x59')]])['then'](function(_0x3606dd){ut['logger'](_0x9682('0x5a'),_0x3606dd);_0x5f2cb1(ut[_0x9682('0x3c')](_0x9682('0x5b')));})[_0x9682('0x41')](function(_0x4fbc3a){ut[_0x9682('0x4a')](_0x9682('0x5c'),_0x4fbc3a);updateStatus(_0x1f57a1);_0x287ba2(ut[_0x9682('0x3c')](_0x9682('0x5d')));});});};Fax['prototype']['checkAfterSend']=function(_0x22bc71){var _0x54089c=this;return new BPromise(function(_0x51ebee,_0x1e9c70){var _0x53817c=_0x54089c[_0x9682('0x5e')](_0x54089c[_0x9682('0x10')][_0x22bc71['FaxAccountId']][_0x9682('0x5f')],_0x22bc71);if(_0x53817c[_0x9682('0x60')]){_0x51ebee(ut['message']('Trunk\x20Reachable'));}else{_0x1e9c70(ut['message'](_0x53817c[_0x9682('0x3c')]));}});};function originate(_0x1dac9f,_0xf54c9,_0x377c27){return new BPromise(function(_0x30b7cd,_0x1932fc){if(_0x377c27){var _0x1c9067=util['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',path[_0x9682('0x3d')](_0x1dac9f[_0x9682('0x4')])[_0x9682('0x29')],_0x1dac9f[_0x9682('0x4')]);gs['execute'](_0x1c9067)['then'](function(){_0x1dac9f[_0x9682('0x4')]=util[_0x9682('0x61')](_0x9682('0x62'),path['parse'](_0x1dac9f[_0x9682('0x4')])['dir'],path[_0x9682('0x3d')](_0x1dac9f[_0x9682('0x4')])[_0x9682('0x29')]);_0xf54c9['XMF-PATH']=_0x1dac9f[_0x9682('0x4')];ut['logger'](_0x9682('0x63'),'');ami[_0x9682('0x64')](ut[_0x9682('0x65')](_0x1dac9f,_0xf54c9))[_0x9682('0x3f')](function(_0x56662f){_0x30b7cd(_0x56662f);})[_0x9682('0x41')](function(_0x399942){_0x1932fc(_0x399942);});})[_0x9682('0x41')](function(_0x17299b){_0x1932fc(_0x17299b);});}else{ami[_0x9682('0x64')](ut[_0x9682('0x65')](_0x1dac9f,_0xf54c9))['then'](function(_0x3f121d){_0x30b7cd(_0x3f121d);})[_0x9682('0x41')](function(_0x57ab9e){_0x1932fc(_0x57ab9e);});}});}Fax[_0x9682('0x23')]['execOriginate']=function(_0x9d4a6d,_0x9b6f99){var _0x4993db=this;return new BPromise(function(_0x32efa8,_0x48c275){var _0xb16f5e=uuid['v4']();var _0x3699c0=ut[_0x9682('0x66')](_0x9d4a6d,_0x9b6f99);_0x4993db[_0x9682('0x12')][_0xb16f5e]=new Action(_0xb16f5e,_0x9b6f99,_0x9d4a6d);var _0x57cc79=_0x4993db[_0x9682('0x12')][_0xb16f5e];if(path[_0x9682('0x3d')](_0x9d4a6d['path'])[_0x9682('0x67')]===_0x9682('0x68')){originate(_0x57cc79,_0x3699c0,!![])[_0x9682('0x3f')](function(_0x1aadd9){_0x32efa8(_0x1aadd9);})['catch'](function(_0x26537a){_0x48c275(_0x26537a);});}else{originate(_0x57cc79,_0x3699c0,![])[_0x9682('0x3f')](function(_0x4e82a7){_0x32efa8(_0x4e82a7);})['catch'](function(_0x2b14d8){_0x48c275(_0x2b14d8);});}});};Fax[_0x9682('0x23')][_0x9682('0x69')]=function(_0x3ede2c){return!_['isNil'](_0x3ede2c)&&!_[_0x9682('0x6a')](_0x3ede2c[_0x9682('0x29')])&&!_[_0x9682('0x6a')](_0x3ede2c[_0x9682('0x6b')])&&_0x3ede2c[_0x9682('0x6b')]&&!_['isNil'](this[_0x9682('0x11')][util[_0x9682('0x61')](_0x9682('0x6c'),_0x3ede2c[_0x9682('0x29')])])&&!_[_0x9682('0x6a')](this[_0x9682('0x11')][util[_0x9682('0x61')](_0x9682('0x6c'),_0x3ede2c[_0x9682('0x29')])][_0x9682('0x32')])&&(this['trunks'][util[_0x9682('0x61')](_0x9682('0x6c'),_0x3ede2c[_0x9682('0x29')])][_0x9682('0x32')]==='reachable'||this[_0x9682('0x11')][util[_0x9682('0x61')](_0x9682('0x6c'),_0x3ede2c[_0x9682('0x29')])]['status']===_0x9682('0x6d'));};Fax[_0x9682('0x23')]['checkTrunk']=function(_0x571af4,_0x2efa59){if(!this[_0x9682('0x69')](_0x571af4)){ut[_0x9682('0x4a')](_0x9682('0x6e'),_[_0x9682('0x6a')](_0x571af4)?'':_0x571af4[_0x9682('0x29')]+_0x9682('0x6f'));return{'isValid':![],'message':_0x9682('0x70')};}if(_[_0x9682('0x6a')](_0x2efa59[_0x9682('0x8')])){ut[_0x9682('0x4a')](_0x9682('0x71'),JSON[_0x9682('0x52')](_0x2efa59));return{'isValid':![],'message':_0x9682('0x72')};}if(_[_0x9682('0x6a')](_0x2efa59[_0x9682('0x4')])){ut[_0x9682('0x4a')](_0x9682('0x73'),JSON[_0x9682('0x52')](_0x2efa59));return{'isValid':![],'message':_0x9682('0x74')};}return{'isValid':!![],'message':_0x9682('0x75')};};module[_0x9682('0x76')]=Fax;
\ No newline at end of file
index 43facf2..0f07dcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1ca=['notify','[Notify]\x20','util','bluebird','../rpc/faxAccount','error','inspect','resolve'];(function(_0x13c3d5,_0x4e445a){var _0x4851e8=function(_0x5519c7){while(--_0x5519c7){_0x13c3d5['push'](_0x13c3d5['shift']());}};_0x4851e8(++_0x4e445a);}(_0xd1ca,0x16a));var _0xad1c=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0xd1ca[_0x68c979];return _0x4f0001;};'use strict';var util=require(_0xad1c('0x0'));var BPromise=require(_0xad1c('0x1'));var logger=require('../../../config/logger')('preview');var _=require('lodash');var faxAccount=require(_0xad1c('0x2'));function loggerCatch(_0x131811){return function(_0x2bec3a){logger[_0xad1c('0x3')](_0x131811,util[_0xad1c('0x4')](_0x2bec3a,{'showHidden':![],'depth':null}));};}exports['notify']=function(_0xe743de,_0x157953){return BPromise[_0xad1c('0x5')]()['then'](faxAccount[_0xad1c('0x6')](_0xe743de,_0x157953))['catch'](loggerCatch(_0xad1c('0x7')));};
\ No newline at end of file
+var _0xfa8b=['preview','../rpc/faxAccount','error','notify','resolve','then','catch','util','bluebird','../../../config/logger'];(function(_0x1951de,_0x173387){var _0x418584=function(_0xfaf379){while(--_0xfaf379){_0x1951de['push'](_0x1951de['shift']());}};_0x418584(++_0x173387);}(_0xfa8b,0x179));var _0xbfa8=function(_0x268f87,_0x1a5ea2){_0x268f87=_0x268f87-0x0;var _0x58e90a=_0xfa8b[_0x268f87];return _0x58e90a;};'use strict';var util=require(_0xbfa8('0x0'));var BPromise=require(_0xbfa8('0x1'));var logger=require(_0xbfa8('0x2'))(_0xbfa8('0x3'));var _=require('lodash');var faxAccount=require(_0xbfa8('0x4'));function loggerCatch(_0x2cfe8d){return function(_0x51bb63){logger[_0xbfa8('0x5')](_0x2cfe8d,util['inspect'](_0x51bb63,{'showHidden':![],'depth':null}));};}exports[_0xbfa8('0x6')]=function(_0x1acb83,_0x324fab){return BPromise[_0xbfa8('0x7')]()[_0xbfa8('0x8')](faxAccount['notify'](_0x1acb83,_0x324fab))[_0xbfa8('0x9')](loggerCatch('[Notify]\x20'));};
\ No newline at end of file
index 8abe7c5..bac287f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab06=['execute','info','Exec\x20gs','\x20Error\x20:','inspect','../../../../config/logger','fax','bluebird','child_process'];(function(_0x4c28bc,_0x43c7c7){var _0x3bfba0=function(_0x1c67d0){while(--_0x1c67d0){_0x4c28bc['push'](_0x4c28bc['shift']());}};_0x3bfba0(++_0x43c7c7);}(_0xab06,0x137));var _0x6ab0=function(_0x872b02,_0x4f4458){_0x872b02=_0x872b02-0x0;var _0x1a6b24=_0xab06[_0x872b02];return _0x1a6b24;};'use strict';var util=require('util');var logger=require(_0x6ab0('0x0'))(_0x6ab0('0x1'));var BPromise=require(_0x6ab0('0x2'));var exec=require(_0x6ab0('0x3'))['exec'];exports[_0x6ab0('0x4')]=function(_0x2cd610){return new BPromise(function(_0x429ec4,_0xd664d){exec(_0x2cd610,function(_0x5371d5,_0x6e0c9,_0xe7a137){logger[_0x6ab0('0x5')]('Exec\x20gs',_0x6e0c9);if(_0x5371d5){logger[_0x6ab0('0x5')](_0x6ab0('0x6'),_0x6ab0('0x7'),util[_0x6ab0('0x8')](_0x5371d5,{'showHidden':![],'depth':null}),_0x6e0c9,_0xe7a137);_0xd664d(_0x5371d5);}_0x429ec4(_0x6e0c9);});});};
\ No newline at end of file
+var _0x5058=['execute','info','\x20Error\x20:','inspect','bluebird','child_process'];(function(_0x593c1f,_0x8cd159){var _0x4c7417=function(_0x4726f3){while(--_0x4726f3){_0x593c1f['push'](_0x593c1f['shift']());}};_0x4c7417(++_0x8cd159);}(_0x5058,0xca));var _0x8505=function(_0x4f431d,_0xd51a3b){_0x4f431d=_0x4f431d-0x0;var _0x4f31e1=_0x5058[_0x4f431d];return _0x4f31e1;};'use strict';var util=require('util');var logger=require('../../../../config/logger')('fax');var BPromise=require(_0x8505('0x0'));var exec=require(_0x8505('0x1'))['exec'];exports[_0x8505('0x2')]=function(_0x5dcccd){return new BPromise(function(_0x1665dc,_0x3af04d){exec(_0x5dcccd,function(_0xe6b2c9,_0x312734,_0x28ca17){logger['info']('Exec\x20gs',_0x312734);if(_0xe6b2c9){logger[_0x8505('0x3')]('Exec\x20gs',_0x8505('0x4'),util[_0x8505('0x5')](_0xe6b2c9,{'showHidden':![],'depth':null}),_0x312734,_0x28ca17);_0x3af04d(_0xe6b2c9);}_0x1665dc(_0x312734);});});};
\ No newline at end of file
index 634d6ee..4ba81e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5a6=['originate','channel','xcally-motion-fax','from-sip','util','lodash','moment','../../../../config/logger','fax','message','logger','info','inspect','addVariables','ecm','headerinfo','minrate','maxrate','format','\x22%s\x22','modem','gateway','localstationid','path','variablesAction','uniqueid'];(function(_0x59ee78,_0x1ae1cc){var _0x4ee3c7=function(_0x5684ca){while(--_0x5684ca){_0x59ee78['push'](_0x59ee78['shift']());}};_0x4ee3c7(++_0x1ae1cc);}(_0xb5a6,0xee));var _0x6b5a=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xb5a6[_0x321bb2];return _0x9c12ed;};'use strict';var util=require(_0x6b5a('0x0'));var _=require(_0x6b5a('0x1'));var moment=require(_0x6b5a('0x2'));var logger=require(_0x6b5a('0x3'))(_0x6b5a('0x4'));exports[_0x6b5a('0x5')]=function(_0x43adde){return{'message':_0x43adde};};exports[_0x6b5a('0x6')]=function(_0x27012a,_0x57a420){logger[_0x6b5a('0x7')](_0x27012a,util[_0x6b5a('0x8')](_0x57a420,{'showHidden':![],'depth':null}));};exports[_0x6b5a('0x9')]=function(_0x4d6e27,_0x5e3945){var _0x3eebbb={'XMF-ECM':_0x5e3945[_0x6b5a('0xa')],'XMF-HEADERINFO':_0x5e3945[_0x6b5a('0xb')],'XMF-MINRATE':_0x5e3945[_0x6b5a('0xc')],'XMF-MAXRATE':_0x5e3945[_0x6b5a('0xd')],'XMF-MODEM':util[_0x6b5a('0xe')](_0x6b5a('0xf'),_0x5e3945[_0x6b5a('0x10')]),'XMF-GATEWAY':_0x5e3945[_0x6b5a('0x11')],'XMF-FAXDETECT':_0x5e3945['faxdetect'],'XMF-T38TIMEOUT':_0x5e3945['t38timeout'],'XMF-LOCALSTATIONID':_0x5e3945[_0x6b5a('0x12')],'XMF-PATH':_0x4d6e27[_0x6b5a('0x13')]};return _0x3eebbb;};exports[_0x6b5a('0x14')]=function(_0x400075,_0x44925c){return{'actionid':_0x400075[_0x6b5a('0x15')],'action':_0x6b5a('0x16'),'channel':_0x400075[_0x6b5a('0x17')],'Exten':_0x6b5a('0x18'),'Context':_0x6b5a('0x19'),'Priority':'1','callerid':util[_0x6b5a('0xe')]('\x22%s\x22\x20<%s>',_0x400075[_0x6b5a('0xb')]?_0x400075[_0x6b5a('0xb')]:'',_0x400075[_0x6b5a('0x12')]),'variable':_0x44925c,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x400075['uniqueid']};};
\ No newline at end of file
+var _0x5b04=['lodash','moment','../../../../config/logger','fax','message','info','inspect','addVariables','ecm','headerinfo','maxrate','format','t38timeout','localstationid','path','variablesAction','uniqueid','originate','xcally-motion-fax','from-sip','\x22%s\x22\x20<%s>'];(function(_0x14fad0,_0x278d75){var _0x5c665f=function(_0xe43a83){while(--_0xe43a83){_0x14fad0['push'](_0x14fad0['shift']());}};_0x5c665f(++_0x278d75);}(_0x5b04,0x17a));var _0x45b0=function(_0x1c9626,_0x48f3ec){_0x1c9626=_0x1c9626-0x0;var _0x5ec34f=_0x5b04[_0x1c9626];return _0x5ec34f;};'use strict';var util=require('util');var _=require(_0x45b0('0x0'));var moment=require(_0x45b0('0x1'));var logger=require(_0x45b0('0x2'))(_0x45b0('0x3'));exports[_0x45b0('0x4')]=function(_0x2f5a6c){return{'message':_0x2f5a6c};};exports['logger']=function(_0x32b3db,_0x2f41f0){logger[_0x45b0('0x5')](_0x32b3db,util[_0x45b0('0x6')](_0x2f41f0,{'showHidden':![],'depth':null}));};exports[_0x45b0('0x7')]=function(_0x85a7a1,_0x2d4742){var _0x410711={'XMF-ECM':_0x2d4742[_0x45b0('0x8')],'XMF-HEADERINFO':_0x2d4742[_0x45b0('0x9')],'XMF-MINRATE':_0x2d4742['minrate'],'XMF-MAXRATE':_0x2d4742[_0x45b0('0xa')],'XMF-MODEM':util[_0x45b0('0xb')]('\x22%s\x22',_0x2d4742['modem']),'XMF-GATEWAY':_0x2d4742['gateway'],'XMF-FAXDETECT':_0x2d4742['faxdetect'],'XMF-T38TIMEOUT':_0x2d4742[_0x45b0('0xc')],'XMF-LOCALSTATIONID':_0x2d4742[_0x45b0('0xd')],'XMF-PATH':_0x85a7a1[_0x45b0('0xe')]};return _0x410711;};exports[_0x45b0('0xf')]=function(_0x36813e,_0x465126){return{'actionid':_0x36813e[_0x45b0('0x10')],'action':_0x45b0('0x11'),'channel':_0x36813e['channel'],'Exten':_0x45b0('0x12'),'Context':_0x45b0('0x13'),'Priority':'1','callerid':util[_0x45b0('0xb')](_0x45b0('0x14'),_0x36813e[_0x45b0('0x9')]?_0x36813e[_0x45b0('0x9')]:'',_0x36813e[_0x45b0('0xd')]),'variable':_0x465126,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x36813e[_0x45b0('0x10')]};};
\ No newline at end of file
index 078c295..9647148 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfec8=['moment','./server','./realtime','./report','./trigger','./dialer','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceCallReport','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','get','hour','then','getAgents','initAgents','getTelephones','getTrunks','initTriggers','getTemplates','initTemplates','getZendeskAccounts','initZendeskAccounts','initSugarcrmAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','log','listen','sync','bluebird','util'];(function(_0x22d1b6,_0x5247b9){var _0x5b6131=function(_0x35898a){while(--_0x35898a){_0x22d1b6['push'](_0x22d1b6['shift']());}};_0x5b6131(++_0x5247b9);}(_0xfec8,0x78));var _0x8fec=function(_0xbb9dbf,_0x5dafa4){_0xbb9dbf=_0xbb9dbf-0x0;var _0x30223c=_0xfec8[_0xbb9dbf];return _0x30223c;};'use strict';var BPromise=require(_0x8fec('0x0'));var util=require(_0x8fec('0x1'));var moment=require(_0x8fec('0x2'));var server=require(_0x8fec('0x3'));var Realtime=require(_0x8fec('0x4'));var Report=require(_0x8fec('0x5'));var Acw=require('./acw');var Trigger=require(_0x8fec('0x6'));var Dialer=require(_0x8fec('0x7'));var Preview=require('./preview');var Fax=require(_0x8fec('0x8'));var user=require(_0x8fec('0x9'));var voiceQueue=require(_0x8fec('0xa'));var voiceQueueReport=require('./rpc/voiceQueueReport');var voiceCallReport=require(_0x8fec('0xb'));var trunk=require('./rpc/trunk');var trigger=require(_0x8fec('0xc'));var template=require(_0x8fec('0xd'));var cmHopperHistory=require(_0x8fec('0xe'));var campaign=require(_0x8fec('0xf'));var voiceExtension=require(_0x8fec('0x10'));var faxAccount=require(_0x8fec('0x11'));var zendesk=require(_0x8fec('0x12'));var salesforce=require(_0x8fec('0x13'));var sugarcrm=require(_0x8fec('0x14'));var freshdesk=require(_0x8fec('0x15'));var desk=require('./rpc/integrations/desk');var zoho=require(_0x8fec('0x16'));var vtiger=require(_0x8fec('0x17'));var freshsales=require(_0x8fec('0x18'));var servicenow=require(_0x8fec('0x19'));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 isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x8fec('0x1a')](_0x8fec('0x1b'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x8fec('0x1a')](_0x8fec('0x1b'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise['resolve']()[_0x8fec('0x1c')](user[_0x8fec('0x1d')]())[_0x8fec('0x1c')](realtime[_0x8fec('0x1e')]())[_0x8fec('0x1c')](user[_0x8fec('0x1f')]())[_0x8fec('0x1c')](realtime['initTelephones']())[_0x8fec('0x1c')](trunk[_0x8fec('0x20')]())['then'](realtime['initTrunks']())['then'](voiceQueue['getVoiceQueues']())[_0x8fec('0x1c')](realtime['initVoiceQueues']())[_0x8fec('0x1c')](trigger['getTriggers']())[_0x8fec('0x1c')](realtime[_0x8fec('0x21')]())[_0x8fec('0x1c')](template[_0x8fec('0x22')]())[_0x8fec('0x1c')](realtime[_0x8fec('0x23')]())[_0x8fec('0x1c')](zendesk[_0x8fec('0x24')]())[_0x8fec('0x1c')](realtime[_0x8fec('0x25')]())[_0x8fec('0x1c')](salesforce['getSalesforceAccounts']())['then'](realtime['initSalesforceAccounts']())['then'](sugarcrm['getSugarcrmAccounts']())[_0x8fec('0x1c')](realtime[_0x8fec('0x26')]())[_0x8fec('0x1c')](freshdesk['getFreshdeskAccounts']())['then'](realtime['initFreshdeskAccounts']())[_0x8fec('0x1c')](desk['getDeskAccounts']())[_0x8fec('0x1c')](realtime['initDeskAccounts']())['then'](zoho[_0x8fec('0x27')]())['then'](realtime[_0x8fec('0x28')]())[_0x8fec('0x1c')](vtiger[_0x8fec('0x29')]())[_0x8fec('0x1c')](realtime[_0x8fec('0x2a')]())[_0x8fec('0x1c')](freshsales[_0x8fec('0x2b')]())[_0x8fec('0x1c')](realtime[_0x8fec('0x2c')]())['then'](servicenow[_0x8fec('0x2d')]())['then'](realtime['initServicenowAccounts']())[_0x8fec('0x1c')](dynamics365['getDynamics365Accounts']())[_0x8fec('0x1c')](realtime[_0x8fec('0x2e')]())['then'](campaign[_0x8fec('0x2f')]())[_0x8fec('0x1c')](realtime[_0x8fec('0x30')]())[_0x8fec('0x1c')](voiceExtension[_0x8fec('0x31')]())['then'](realtime[_0x8fec('0x32')]())['then'](faxAccount[_0x8fec('0x33')]())[_0x8fec('0x1c')](realtime['initFaxAccounts']())['then'](function(){return realtime;});}function initParams(){return BPromise['resolve']()[_0x8fec('0x1c')](voiceQueueReport[_0x8fec('0x34')]())['then'](realtime[_0x8fec('0x35')]())[_0x8fec('0x1c')](cmHopperHistory[_0x8fec('0x36')]())[_0x8fec('0x1c')](realtime[_0x8fec('0x37')]())['then'](cmHopperHistory[_0x8fec('0x38')]())[_0x8fec('0x1c')](realtime[_0x8fec('0x39')]())[_0x8fec('0x1c')](voiceCallReport['getVoiceCallReports']())[_0x8fec('0x1c')](realtime['initVoiceCallReports']())[_0x8fec('0x1c')](function(_0x59deef){})['catch'](function(_0x186cb8){console[_0x8fec('0x3a')](_0x186cb8);});}function main(){return server[_0x8fec('0x3b')](realtime,preview,fax)[_0x8fec('0x1c')](function(_0x45017b){return initRealtime();})[_0x8fec('0x1c')](function(){return initParams();})[_0x8fec('0x1c')](function(){report[_0x8fec('0x3c')]();setInterval(initRealtime,0x1388);})['catch'](function(_0x46fa16){console['log'](_0x46fa16);});}main();
\ No newline at end of file
+var _0x9497=['./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','get','hour','initAgents','getTelephones','then','getTrunks','initTrunks','getVoiceQueues','initVoiceQueues','getTriggers','initTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','initFreshdeskAccounts','getDeskAccounts','initZohoAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','catch','log','listen','sync','bluebird','util','moment','./server','./realtime','./report','./acw','./trigger','./preview','./rpc/user','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/sugarcrm'];(function(_0x1434c9,_0x573b06){var _0x164c66=function(_0x20caf9){while(--_0x20caf9){_0x1434c9['push'](_0x1434c9['shift']());}};_0x164c66(++_0x573b06);}(_0x9497,0xaa));var _0x7949=function(_0x2999ad,_0x402e7f){_0x2999ad=_0x2999ad-0x0;var _0x3660bf=_0x9497[_0x2999ad];return _0x3660bf;};'use strict';var BPromise=require(_0x7949('0x0'));var util=require(_0x7949('0x1'));var moment=require(_0x7949('0x2'));var server=require(_0x7949('0x3'));var Realtime=require(_0x7949('0x4'));var Report=require(_0x7949('0x5'));var Acw=require(_0x7949('0x6'));var Trigger=require(_0x7949('0x7'));var Dialer=require('./dialer');var Preview=require(_0x7949('0x8'));var Fax=require('./fax');var user=require(_0x7949('0x9'));var voiceQueue=require('./rpc/voiceQueue');var voiceQueueReport=require(_0x7949('0xa'));var voiceCallReport=require(_0x7949('0xb'));var trunk=require(_0x7949('0xc'));var trigger=require(_0x7949('0xd'));var template=require(_0x7949('0xe'));var cmHopperHistory=require(_0x7949('0xf'));var campaign=require('./rpc/campaign');var voiceExtension=require('./rpc/voiceExtension');var faxAccount=require(_0x7949('0x10'));var zendesk=require(_0x7949('0x11'));var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0x7949('0x12'));var freshdesk=require(_0x7949('0x13'));var desk=require(_0x7949('0x14'));var zoho=require('./rpc/integrations/zoho');var vtiger=require('./rpc/integrations/vtiger');var freshsales=require(_0x7949('0x15'));var servicenow=require(_0x7949('0x16'));var dynamics365=require(_0x7949('0x17'));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 isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x7949('0x18')](_0x7949('0x19'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x7949('0x18')](_0x7949('0x19'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise['resolve']()['then'](user['getAgents']())['then'](realtime[_0x7949('0x1a')]())['then'](user[_0x7949('0x1b')]())[_0x7949('0x1c')](realtime['initTelephones']())['then'](trunk[_0x7949('0x1d')]())[_0x7949('0x1c')](realtime[_0x7949('0x1e')]())[_0x7949('0x1c')](voiceQueue[_0x7949('0x1f')]())['then'](realtime[_0x7949('0x20')]())[_0x7949('0x1c')](trigger[_0x7949('0x21')]())[_0x7949('0x1c')](realtime['initTriggers']())[_0x7949('0x1c')](template['getTemplates']())['then'](realtime[_0x7949('0x22')]())[_0x7949('0x1c')](zendesk[_0x7949('0x23')]())[_0x7949('0x1c')](realtime[_0x7949('0x24')]())[_0x7949('0x1c')](salesforce[_0x7949('0x25')]())['then'](realtime['initSalesforceAccounts']())[_0x7949('0x1c')](sugarcrm[_0x7949('0x26')]())[_0x7949('0x1c')](realtime[_0x7949('0x27')]())[_0x7949('0x1c')](freshdesk['getFreshdeskAccounts']())['then'](realtime[_0x7949('0x28')]())['then'](desk[_0x7949('0x29')]())['then'](realtime['initDeskAccounts']())[_0x7949('0x1c')](zoho['getZohoAccounts']())[_0x7949('0x1c')](realtime[_0x7949('0x2a')]())[_0x7949('0x1c')](vtiger['getVtigerAccounts']())[_0x7949('0x1c')](realtime['initVtigerAccounts']())[_0x7949('0x1c')](freshsales['getFreshsalesAccounts']())[_0x7949('0x1c')](realtime[_0x7949('0x2b')]())[_0x7949('0x1c')](servicenow[_0x7949('0x2c')]())[_0x7949('0x1c')](realtime[_0x7949('0x2d')]())[_0x7949('0x1c')](dynamics365[_0x7949('0x2e')]())[_0x7949('0x1c')](realtime['initDynamics365Accounts']())['then'](campaign[_0x7949('0x2f')]())['then'](realtime[_0x7949('0x30')]())[_0x7949('0x1c')](voiceExtension[_0x7949('0x31')]())[_0x7949('0x1c')](realtime[_0x7949('0x32')]())[_0x7949('0x1c')](faxAccount[_0x7949('0x33')]())[_0x7949('0x1c')](realtime[_0x7949('0x34')]())[_0x7949('0x1c')](function(){return realtime;});}function initParams(){return BPromise['resolve']()[_0x7949('0x1c')](voiceQueueReport[_0x7949('0x35')]())['then'](realtime[_0x7949('0x36')]())['then'](cmHopperHistory[_0x7949('0x37')]())['then'](realtime[_0x7949('0x38')]())['then'](cmHopperHistory[_0x7949('0x39')]())[_0x7949('0x1c')](realtime[_0x7949('0x3a')]())[_0x7949('0x1c')](voiceCallReport['getVoiceCallReports']())['then'](realtime['initVoiceCallReports']())[_0x7949('0x1c')](function(_0x32278b){})[_0x7949('0x3b')](function(_0x5c11c0){console[_0x7949('0x3c')](_0x5c11c0);});}function main(){return server[_0x7949('0x3d')](realtime,preview,fax)[_0x7949('0x1c')](function(_0x2dcf9b){return initRealtime();})[_0x7949('0x1c')](function(){return initParams();})[_0x7949('0x1c')](function(){report[_0x7949('0x3e')]();setInterval(initRealtime,0x1388);})['catch'](function(_0x193811){console[_0x7949('0x3c')](_0x193811);});}main();
\ No newline at end of file
index 40f8078..4eff1d1 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(_0x1cfbfa,_0xa3b961){var _0x3aeb00=function(_0x531416){while(--_0x531416){_0x1cfbfa['push'](_0x1cfbfa['shift']());}};_0x3aeb00(++_0xa3b961);}(_0x70e0,0x17b));var _0x070e=function(_0x378043,_0x1f63c0){_0x378043=_0x378043-0x0;var _0x224ed3=_0x70e0[_0x378043];return _0x224ed3;};'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(_0x277d37,_0x2e350e){var _0x1ca1f6=function(_0x2f90d5){while(--_0x2f90d5){_0x277d37['push'](_0x277d37['shift']());}};_0x1ca1f6(++_0x2e350e);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x5dfc2a,_0x1a953f){_0x5dfc2a=_0x5dfc2a-0x0;var _0x3f1a71=_0xcb91[_0x5dfc2a];return _0x3f1a71;};'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 768fad6..1fe7910 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8250=['dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','name','type','originated','temp','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber'];(function(_0x4da88a,_0x360f6c){var _0x145fe2=function(_0x31bc80){while(--_0x31bc80){_0x4da88a['push'](_0x4da88a['shift']());}};_0x145fe2(++_0x360f6c);}(_0x8250,0x124));var _0x0825=function(_0x3dd27b,_0x1c8ba2){_0x3dd27b=_0x3dd27b-0x0;var _0x3af247=_0x8250[_0x3dd27b];return _0x3af247;};'use strict';function Campaign(_0x2d1502){this['id']=_0x2d1502['id']||0x0;this[_0x0825('0x0')]=_0x2d1502['name']||'';this[_0x0825('0x1')]=_0x2d1502[_0x0825('0x1')]||'campaign';this[_0x0825('0x2')]=0x0;this[_0x0825('0x3')]=0x0;this['ivrAnswerCallsDay']=0x0;this[_0x0825('0x4')]=0x0;this[_0x0825('0x5')]='';this[_0x0825('0x6')]=!![];this[_0x0825('0x7')]=_0x2d1502[_0x0825('0x7')];this['limitCalls']=_0x2d1502[_0x0825('0x8')];this[_0x0825('0x9')]=_0x2d1502['dialTimezone']||null;this[_0x0825('0xa')]=_0x2d1502[_0x0825('0xa')]?_0x2d1502[_0x0825('0xa')]:null;this[_0x0825('0xb')]=_0x2d1502['dialOriginateCallerIdName'];this[_0x0825('0xc')]=_0x2d1502[_0x0825('0xc')];this['dialOriginateTimeout']=_0x2d1502[_0x0825('0xd')]||0x1e;this[_0x0825('0xe')]=_0x2d1502[_0x0825('0xe')];this[_0x0825('0xf')]=_0x2d1502['dialCongestionRetryFrequency'];this[_0x0825('0x10')]=_0x2d1502[_0x0825('0x10')];this['dialBusyRetryFrequency']=_0x2d1502['dialBusyRetryFrequency'];this['dialNoAnswerMaxRetry']=_0x2d1502[_0x0825('0x11')];this[_0x0825('0x12')]=_0x2d1502['dialNoAnswerRetryFrequency'];this['dialGlobalMaxRetry']=_0x2d1502[_0x0825('0x13')];this[_0x0825('0x14')]=_0x2d1502['dialNoSuchNumberMaxRetry']||0x3;this['dialNoSuchNumberRetryFrequency']=_0x2d1502[_0x0825('0x15')]||0x96;this['dialDropMaxRetry']=_0x2d1502['dialDropMaxRetry']||0x3;this['dialDropRetryFrequency']=_0x2d1502['dialDropRetryFrequency']||0x96;this['dialAbandonedMaxRetry']=_0x2d1502[_0x0825('0x16')]||0x3;this[_0x0825('0x17')]=_0x2d1502[_0x0825('0x17')]||0x96;this['dialMachineMaxRetry']=_0x2d1502['dialMachineMaxRetry']||0x3;this['dialMachineRetryFrequency']=_0x2d1502[_0x0825('0x18')]||0x96;this['dialAgentRejectMaxRetry']=_0x2d1502['dialAgentRejectMaxRetry']||0x3;this[_0x0825('0x19')]=_0x2d1502['dialAgentRejectRetryFrequency']||0x96;this[_0x0825('0x1a')]=_0x2d1502['dialOrderByScheduledAt']||_0x0825('0x1b');this[_0x0825('0x1c')]=_0x2d1502[_0x0825('0x1c')]||undefined;this['dialRandomLastDigitCallerIdNumber']=_0x2d1502[_0x0825('0x1d')]||undefined;this[_0x0825('0x1e')]=_0x2d1502[_0x0825('0x1e')]||undefined;this['TrunkBackup']=_0x2d1502[_0x0825('0x1f')]?_0x2d1502[_0x0825('0x1f')]:undefined;this['Trunk']=_0x2d1502[_0x0825('0x20')]?_0x2d1502[_0x0825('0x20')]:undefined;this[_0x0825('0x21')]=_0x2d1502[_0x0825('0x21')]?_0x2d1502[_0x0825('0x21')]:undefined;this[_0x0825('0x22')]=_0x2d1502[_0x0825('0x22')]?_0x2d1502[_0x0825('0x22')]:undefined;this[_0x0825('0x23')]=_0x2d1502['SquareProject']?_0x2d1502[_0x0825('0x22')]['name']:undefined;this[_0x0825('0x24')]=_0x2d1502['dialAMDActive']||![];this[_0x0825('0x25')]=_0x2d1502[_0x0825('0x25')];this[_0x0825('0x26')]=_0x2d1502[_0x0825('0x26')];this[_0x0825('0x27')]=_0x2d1502[_0x0825('0x27')];this[_0x0825('0x28')]=_0x2d1502[_0x0825('0x28')];this[_0x0825('0x29')]=_0x2d1502[_0x0825('0x29')];this['dialAMDBetweenWordsSilence']=_0x2d1502[_0x0825('0x2a')];this['dialAMDMaximumNumberOfWords']=_0x2d1502[_0x0825('0x2b')];this[_0x0825('0x2c')]=_0x2d1502[_0x0825('0x2c')];this['dialAMDMaximumWordLength']=_0x2d1502[_0x0825('0x2d')];}module['exports']=Campaign;
\ No newline at end of file
+var _0xc62b=['dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','temp','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency'];(function(_0x238d10,_0x18534e){var _0x4d5b76=function(_0x28502a){while(--_0x28502a){_0x238d10['push'](_0x238d10['shift']());}};_0x4d5b76(++_0x18534e);}(_0xc62b,0x1e2));var _0xbc62=function(_0x4dffa3,_0x546fe0){_0x4dffa3=_0x4dffa3-0x0;var _0x154c53=_0xc62b[_0x4dffa3];return _0x154c53;};'use strict';function Campaign(_0x169637){this['id']=_0x169637['id']||0x0;this[_0xbc62('0x0')]=_0x169637[_0xbc62('0x0')]||'';this['type']=_0x169637['type']||'campaign';this['originated']=0x0;this[_0xbc62('0x1')]=0x0;this['ivrAnswerCallsDay']=0x0;this[_0xbc62('0x2')]=0x0;this[_0xbc62('0x3')]='';this[_0xbc62('0x4')]=!![];this[_0xbc62('0x5')]=_0x169637['active'];this[_0xbc62('0x6')]=_0x169637['limitCalls'];this[_0xbc62('0x7')]=_0x169637[_0xbc62('0x7')]||null;this['dialGlobalInterval']=_0x169637[_0xbc62('0x8')]?_0x169637['dialGlobalInterval']:null;this['dialOriginateCallerIdName']=_0x169637[_0xbc62('0x9')];this[_0xbc62('0xa')]=_0x169637[_0xbc62('0xa')];this[_0xbc62('0xb')]=_0x169637[_0xbc62('0xb')]||0x1e;this['dialCongestionMaxRetry']=_0x169637[_0xbc62('0xc')];this[_0xbc62('0xd')]=_0x169637[_0xbc62('0xd')];this[_0xbc62('0xe')]=_0x169637['dialBusyMaxRetry'];this['dialBusyRetryFrequency']=_0x169637[_0xbc62('0xf')];this[_0xbc62('0x10')]=_0x169637[_0xbc62('0x10')];this[_0xbc62('0x11')]=_0x169637['dialNoAnswerRetryFrequency'];this[_0xbc62('0x12')]=_0x169637[_0xbc62('0x12')];this[_0xbc62('0x13')]=_0x169637[_0xbc62('0x13')]||0x3;this[_0xbc62('0x14')]=_0x169637[_0xbc62('0x14')]||0x96;this['dialDropMaxRetry']=_0x169637[_0xbc62('0x15')]||0x3;this['dialDropRetryFrequency']=_0x169637['dialDropRetryFrequency']||0x96;this[_0xbc62('0x16')]=_0x169637[_0xbc62('0x16')]||0x3;this[_0xbc62('0x17')]=_0x169637[_0xbc62('0x17')]||0x96;this[_0xbc62('0x18')]=_0x169637[_0xbc62('0x18')]||0x3;this[_0xbc62('0x19')]=_0x169637[_0xbc62('0x19')]||0x96;this[_0xbc62('0x1a')]=_0x169637[_0xbc62('0x1a')]||0x3;this['dialAgentRejectRetryFrequency']=_0x169637[_0xbc62('0x1b')]||0x96;this[_0xbc62('0x1c')]=_0x169637[_0xbc62('0x1c')]||_0xbc62('0x1d');this[_0xbc62('0x1e')]=_0x169637[_0xbc62('0x1e')]||undefined;this[_0xbc62('0x1f')]=_0x169637[_0xbc62('0x1f')]||undefined;this['dialCutDigit']=_0x169637[_0xbc62('0x20')]||undefined;this['TrunkBackup']=_0x169637[_0xbc62('0x21')]?_0x169637[_0xbc62('0x21')]:undefined;this[_0xbc62('0x22')]=_0x169637[_0xbc62('0x22')]?_0x169637[_0xbc62('0x22')]:undefined;this[_0xbc62('0x23')]=_0x169637[_0xbc62('0x23')]?_0x169637[_0xbc62('0x23')]:undefined;this[_0xbc62('0x24')]=_0x169637[_0xbc62('0x24')]?_0x169637[_0xbc62('0x24')]:undefined;this[_0xbc62('0x25')]=_0x169637[_0xbc62('0x24')]?_0x169637[_0xbc62('0x24')][_0xbc62('0x0')]:undefined;this['dialAMDActive']=_0x169637['dialAMDActive']||![];this[_0xbc62('0x26')]=_0x169637['dialAMDInitialSilence'];this['dialAMDGreeting']=_0x169637['dialAMDGreeting'];this[_0xbc62('0x27')]=_0x169637[_0xbc62('0x27')];this[_0xbc62('0x28')]=_0x169637[_0xbc62('0x28')];this['dialAMDMinWordLength']=_0x169637['dialAMDMinWordLength'];this['dialAMDBetweenWordsSilence']=_0x169637[_0xbc62('0x29')];this[_0xbc62('0x2a')]=_0x169637[_0xbc62('0x2a')];this[_0xbc62('0x2b')]=_0x169637['dialAMDSilenceThreshold'];this[_0xbc62('0x2c')]=_0x169637[_0xbc62('0x2c')];}module[_0xbc62('0x2d')]=Campaign;
\ No newline at end of file
index 975cb66..c1243aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f42=['tag','disposition','monitor','queue','transfercalleridnum','transferconnectedlinenum','transferType','mohtime','starttime','channel','destinationchannel','calleridnum','connectedlinenum','accountcode','uniqueid','linkedid','exten','answertime','endtime','abandoned','billableseconds','type'];(function(_0x399b91,_0x4c3278){var _0x4a39b2=function(_0x12dcdc){while(--_0x12dcdc){_0x399b91['push'](_0x399b91['shift']());}};_0x4a39b2(++_0x4c3278);}(_0x0f42,0x126));var _0x20f4=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x0f42[_0x13d07a];return _0x5ee0ee;};'use strict';function Channel(){this[_0x20f4('0x0')]=null;this[_0x20f4('0x1')]='';this[_0x20f4('0x2')]='';this[_0x20f4('0x3')]=0x0;this['calleridname']='';this[_0x20f4('0x4')]=undefined;this['connectedlinename']=undefined;this[_0x20f4('0x5')]=0x0;this['context']='';this[_0x20f4('0x6')]=0x0;this[_0x20f4('0x7')]=0x0;this[_0x20f4('0x8')]=0x0;this['answered']=![];this[_0x20f4('0x9')]=null;this[_0x20f4('0xa')]=null;this['unmanaged']=![];this[_0x20f4('0xb')]=![];this['lastapplication']='';this['lastdata']='';this['duration']=0x0;this[_0x20f4('0xc')]=0x0;this['holdtime']=0x0;this[_0x20f4('0xd')]=null;this[_0x20f4('0xe')]=null;this[_0x20f4('0xf')]=null;this[_0x20f4('0x10')]=![];this['monitorFilename']=null;this[_0x20f4('0x11')]=null;this['monitors']=[];this[_0x20f4('0x12')]=undefined;this[_0x20f4('0x13')]=undefined;this[_0x20f4('0x14')]=undefined;this[_0x20f4('0x15')]=0x0;}module['exports']=Channel;
\ No newline at end of file
+var _0xc210=['answered','answertime','endtime','unmanaged','lastapplication','billableseconds','holdtime','type','tag','disposition','monitor','monitorFilename','monitors','transfercalleridnum','mohtime','exports','starttime','channel','calleridnum','calleridname','connectedlinenum','connectedlinename','accountcode','context','uniqueid','linkedid','exten'];(function(_0x17bab9,_0xb7f42e){var _0x81f1fd=function(_0x56d4b1){while(--_0x56d4b1){_0x17bab9['push'](_0x17bab9['shift']());}};_0x81f1fd(++_0xb7f42e);}(_0xc210,0x7c));var _0x0c21=function(_0x38854e,_0x23cbc9){_0x38854e=_0x38854e-0x0;var _0x3f8415=_0xc210[_0x38854e];return _0x3f8415;};'use strict';function Channel(){this[_0x0c21('0x0')]=null;this[_0x0c21('0x1')]='';this['destinationchannel']='';this[_0x0c21('0x2')]=0x0;this[_0x0c21('0x3')]='';this[_0x0c21('0x4')]=undefined;this[_0x0c21('0x5')]=undefined;this[_0x0c21('0x6')]=0x0;this[_0x0c21('0x7')]='';this[_0x0c21('0x8')]=0x0;this[_0x0c21('0x9')]=0x0;this[_0x0c21('0xa')]=0x0;this[_0x0c21('0xb')]=![];this[_0x0c21('0xc')]=null;this[_0x0c21('0xd')]=null;this[_0x0c21('0xe')]=![];this['abandoned']=![];this[_0x0c21('0xf')]='';this['lastdata']='';this['duration']=0x0;this[_0x0c21('0x10')]=0x0;this[_0x0c21('0x11')]=0x0;this[_0x0c21('0x12')]=null;this[_0x0c21('0x13')]=null;this[_0x0c21('0x14')]=null;this[_0x0c21('0x15')]=![];this[_0x0c21('0x16')]=null;this['queue']=null;this[_0x0c21('0x17')]=[];this[_0x0c21('0x18')]=undefined;this['transferconnectedlinenum']=undefined;this['transferType']=undefined;this[_0x0c21('0x19')]=0x0;}module[_0x0c21('0x1a')]=Channel;
\ No newline at end of file
index 831c487..bc6e9ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9a3=['consumerSecret','token','tokenSecret','type','serverUrl','Configurations','exports','name','username','remoteUri','authType','password','consumerKey'];(function(_0x5114fd,_0x52befc){var _0x464175=function(_0x62bd79){while(--_0x62bd79){_0x5114fd['push'](_0x5114fd['shift']());}};_0x464175(++_0x52befc);}(_0xf9a3,0x19a));var _0x3f9a=function(_0x18ee40,_0x4a4807){_0x18ee40=_0x18ee40-0x0;var _0x40a300=_0xf9a3[_0x18ee40];return _0x40a300;};'use strict';function DeskAccount(_0x3df9e5){this['id']=_0x3df9e5['id']||0x0;this[_0x3f9a('0x0')]=_0x3df9e5[_0x3f9a('0x0')]||'';this[_0x3f9a('0x1')]=_0x3df9e5[_0x3f9a('0x1')]||'';this[_0x3f9a('0x2')]=_0x3df9e5[_0x3f9a('0x2')]||'';this[_0x3f9a('0x3')]=_0x3df9e5[_0x3f9a('0x3')]||'';this[_0x3f9a('0x4')]=_0x3df9e5[_0x3f9a('0x4')]||'';this[_0x3f9a('0x5')]=_0x3df9e5[_0x3f9a('0x5')]||'';this[_0x3f9a('0x6')]=_0x3df9e5['consumerSecret']||'';this['token']=_0x3df9e5[_0x3f9a('0x7')]||'';this[_0x3f9a('0x8')]=_0x3df9e5['tokenSecret']||'';this[_0x3f9a('0x9')]=_0x3df9e5[_0x3f9a('0x9')]||'';this[_0x3f9a('0xa')]=_0x3df9e5['serverUrl']||'';this[_0x3f9a('0xb')]=_0x3df9e5[_0x3f9a('0xb')]||{};}module[_0x3f9a('0xc')]=DeskAccount;
\ No newline at end of file
+var _0x0c77=['password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations','remoteUri','authType'];(function(_0x4c4d3e,_0x20ded2){var _0x40fbeb=function(_0x25d53f){while(--_0x25d53f){_0x4c4d3e['push'](_0x4c4d3e['shift']());}};_0x40fbeb(++_0x20ded2);}(_0x0c77,0x1b6));var _0x70c7=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0x0c77[_0x5bd426];return _0x23a7eb;};'use strict';function DeskAccount(_0x13345b){this['id']=_0x13345b['id']||0x0;this['name']=_0x13345b['name']||'';this['username']=_0x13345b['username']||'';this[_0x70c7('0x0')]=_0x13345b['remoteUri']||'';this['authType']=_0x13345b[_0x70c7('0x1')]||'';this[_0x70c7('0x2')]=_0x13345b[_0x70c7('0x2')]||'';this[_0x70c7('0x3')]=_0x13345b[_0x70c7('0x3')]||'';this[_0x70c7('0x4')]=_0x13345b[_0x70c7('0x4')]||'';this[_0x70c7('0x5')]=_0x13345b['token']||'';this['tokenSecret']=_0x13345b[_0x70c7('0x6')]||'';this[_0x70c7('0x7')]=_0x13345b['type']||'';this[_0x70c7('0x8')]=_0x13345b[_0x70c7('0x8')]||'';this['Configurations']=_0x13345b[_0x70c7('0x9')]||{};}module['exports']=DeskAccount;
\ No newline at end of file
index 665156c..92d850d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9354=['name','username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl','Configurations','exports'];(function(_0x53b690,_0x57f73b){var _0x29fb26=function(_0x478195){while(--_0x478195){_0x53b690['push'](_0x53b690['shift']());}};_0x29fb26(++_0x57f73b);}(_0x9354,0x96));var _0x4935=function(_0x3e5f6d,_0x121db6){_0x3e5f6d=_0x3e5f6d-0x0;var _0x1bea6e=_0x9354[_0x3e5f6d];return _0x1bea6e;};'use strict';function Dynamics365Account(_0x487ab6){this['id']=_0x487ab6['id']||0x0;this[_0x4935('0x0')]=_0x487ab6[_0x4935('0x0')]||'';this['username']=_0x487ab6[_0x4935('0x1')]||'';this[_0x4935('0x2')]=_0x487ab6[_0x4935('0x2')]||'';this[_0x4935('0x3')]=_0x487ab6['remoteUri']||'';this[_0x4935('0x4')]=_0x487ab6[_0x4935('0x4')]||'';this[_0x4935('0x5')]=_0x487ab6[_0x4935('0x5')]||'';this[_0x4935('0x6')]=_0x487ab6[_0x4935('0x6')]||{};this[_0x4935('0x7')]=_0x487ab6[_0x4935('0x7')]||'';this[_0x4935('0x8')]=_0x487ab6['Configurations']||{};}module[_0x4935('0x9')]=Dynamics365Account;
\ No newline at end of file
+var _0xac4a=['clientId','clientSecret','serverUrl','Configurations','name','username','password','remoteUri','tenantId'];(function(_0x865e28,_0x3de135){var _0x3c97d9=function(_0x731417){while(--_0x731417){_0x865e28['push'](_0x865e28['shift']());}};_0x3c97d9(++_0x3de135);}(_0xac4a,0x13f));var _0xaac4=function(_0x21a409,_0x5e65f8){_0x21a409=_0x21a409-0x0;var _0x54d86f=_0xac4a[_0x21a409];return _0x54d86f;};'use strict';function Dynamics365Account(_0x5d2081){this['id']=_0x5d2081['id']||0x0;this[_0xaac4('0x0')]=_0x5d2081[_0xaac4('0x0')]||'';this[_0xaac4('0x1')]=_0x5d2081[_0xaac4('0x1')]||'';this[_0xaac4('0x2')]=_0x5d2081['password']||'';this['remoteUri']=_0x5d2081[_0xaac4('0x3')]||'';this[_0xaac4('0x4')]=_0x5d2081[_0xaac4('0x4')]||'';this['clientId']=_0x5d2081[_0xaac4('0x5')]||'';this['clientSecret']=_0x5d2081[_0xaac4('0x6')]||{};this['serverUrl']=_0x5d2081[_0xaac4('0x7')]||'';this[_0xaac4('0x8')]=_0x5d2081['Configurations']||{};}module['exports']=Dynamics365Account;
\ No newline at end of file
index 5a44f6f..3ea298d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ec4=['tech','SIP','Trunk','ListId','key','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout'];(function(_0x1a759f,_0x2cd0c4){var _0x15c478=function(_0x27354b){while(--_0x27354b){_0x1a759f['push'](_0x1a759f['shift']());}};_0x15c478(++_0x2cd0c4);}(_0x4ec4,0x95));var _0x44ec=function(_0x456f3a,_0x6a4fb6){_0x456f3a=_0x456f3a-0x0;var _0x3fca2c=_0x4ec4[_0x456f3a];return _0x3fca2c;};'use strict';function FaxAccount(_0x2c7842){this['id']=_0x2c7842['id']||0x0;this['name']=_0x2c7842['name']||'';this['description']=_0x2c7842[_0x44ec('0x0')];this['ecm']=_0x2c7842[_0x44ec('0x1')];this[_0x44ec('0x2')]=_0x2c7842[_0x44ec('0x2')];this[_0x44ec('0x3')]=_0x2c7842['localstationid'];this[_0x44ec('0x4')]=_0x2c7842[_0x44ec('0x4')]||0x960;this[_0x44ec('0x5')]=_0x2c7842[_0x44ec('0x5')]||0x3840;this[_0x44ec('0x6')]=_0x2c7842[_0x44ec('0x6')]||_0x44ec('0x7');this[_0x44ec('0x8')]=_0x2c7842[_0x44ec('0x8')]||'no';this[_0x44ec('0x9')]=_0x2c7842[_0x44ec('0x9')]||'no';this[_0x44ec('0xa')]=_0x2c7842['t38timeout']||0x1388;this['tech']=_0x2c7842[_0x44ec('0xb')]||_0x44ec('0xc');this[_0x44ec('0xd')]=_0x2c7842['Trunk']?_0x2c7842['Trunk']:undefined;this[_0x44ec('0xe')]=_0x2c7842[_0x44ec('0xe')];this[_0x44ec('0xf')]=_0x2c7842[_0x44ec('0xf')];}module['exports']=FaxAccount;
\ No newline at end of file
+var _0x569d=['SIP','Trunk','ListId','key','exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech'];(function(_0x3eec75,_0x229a49){var _0xaf1ea=function(_0x5e8116){while(--_0x5e8116){_0x3eec75['push'](_0x3eec75['shift']());}};_0xaf1ea(++_0x229a49);}(_0x569d,0x125));var _0xd569=function(_0x20006a,_0x30e3a9){_0x20006a=_0x20006a-0x0;var _0x5e26ac=_0x569d[_0x20006a];return _0x5e26ac;};'use strict';function FaxAccount(_0x35212a){this['id']=_0x35212a['id']||0x0;this[_0xd569('0x0')]=_0x35212a['name']||'';this[_0xd569('0x1')]=_0x35212a[_0xd569('0x1')];this['ecm']=_0x35212a[_0xd569('0x2')];this[_0xd569('0x3')]=_0x35212a[_0xd569('0x3')];this['localstationid']=_0x35212a[_0xd569('0x4')];this[_0xd569('0x5')]=_0x35212a[_0xd569('0x5')]||0x960;this[_0xd569('0x6')]=_0x35212a['maxrate']||0x3840;this[_0xd569('0x7')]=_0x35212a[_0xd569('0x7')]||_0xd569('0x8');this['gateway']=_0x35212a[_0xd569('0x9')]||'no';this[_0xd569('0xa')]=_0x35212a[_0xd569('0xa')]||'no';this[_0xd569('0xb')]=_0x35212a[_0xd569('0xb')]||0x1388;this['tech']=_0x35212a[_0xd569('0xc')]||_0xd569('0xd');this[_0xd569('0xe')]=_0x35212a[_0xd569('0xe')]?_0x35212a[_0xd569('0xe')]:undefined;this[_0xd569('0xf')]=_0x35212a[_0xd569('0xf')];this[_0xd569('0x10')]=_0x35212a[_0xd569('0x10')];}module[_0xd569('0x11')]=FaxAccount;
\ No newline at end of file
index 14cf89d..a63ca50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8472=['serverUrl','Configurations','exports','name','username','apiKey','token','remoteUri'];(function(_0x5c349e,_0x408657){var _0xe50337=function(_0x467684){while(--_0x467684){_0x5c349e['push'](_0x5c349e['shift']());}};_0xe50337(++_0x408657);}(_0x8472,0x9b));var _0x2847=function(_0x3b5851,_0x15b3f3){_0x3b5851=_0x3b5851-0x0;var _0x75ac24=_0x8472[_0x3b5851];return _0x75ac24;};'use strict';function FreshdeskAccount(_0x30d27a){this['id']=_0x30d27a['id']||0x0;this['name']=_0x30d27a[_0x2847('0x0')]||'';this[_0x2847('0x1')]=_0x30d27a[_0x2847('0x1')]||'';this[_0x2847('0x2')]=_0x30d27a[_0x2847('0x3')]||'';this[_0x2847('0x4')]=_0x30d27a['remoteUri']||'';this[_0x2847('0x5')]=_0x30d27a['serverUrl']||'';this[_0x2847('0x6')]=_0x30d27a['Configurations']||{};}module[_0x2847('0x7')]=FreshdeskAccount;
\ No newline at end of file
+var _0xcbf6=['name','username','apiKey','token','remoteUri','serverUrl','Configurations','exports'];(function(_0xd6c36b,_0x460f51){var _0x2dd5eb=function(_0x4d77ee){while(--_0x4d77ee){_0xd6c36b['push'](_0xd6c36b['shift']());}};_0x2dd5eb(++_0x460f51);}(_0xcbf6,0x70));var _0x6cbf=function(_0x4507c1,_0xa8d71a){_0x4507c1=_0x4507c1-0x0;var _0x3d3b03=_0xcbf6[_0x4507c1];return _0x3d3b03;};'use strict';function FreshdeskAccount(_0x49215a){this['id']=_0x49215a['id']||0x0;this[_0x6cbf('0x0')]=_0x49215a['name']||'';this[_0x6cbf('0x1')]=_0x49215a[_0x6cbf('0x1')]||'';this[_0x6cbf('0x2')]=_0x49215a[_0x6cbf('0x3')]||'';this[_0x6cbf('0x4')]=_0x49215a[_0x6cbf('0x4')]||'';this['serverUrl']=_0x49215a[_0x6cbf('0x5')]||'';this[_0x6cbf('0x6')]=_0x49215a[_0x6cbf('0x6')]||{};}module[_0x6cbf('0x7')]=FreshdeskAccount;
\ No newline at end of file
index 2c6e89e..4c2e0e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39b3=['serverUrl','Configurations','exports','username','apiKey','remoteUri'];(function(_0x4fc0c8,_0x27a6a7){var _0x208ad3=function(_0x3c45a8){while(--_0x3c45a8){_0x4fc0c8['push'](_0x4fc0c8['shift']());}};_0x208ad3(++_0x27a6a7);}(_0x39b3,0xc9));var _0x339b=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0x39b3[_0x491a7f];return _0x3d8f44;};'use strict';function FreshsalesAccount(_0x82cb8f){this['id']=_0x82cb8f['id']||0x0;this['name']=_0x82cb8f['name']||'';this[_0x339b('0x0')]=_0x82cb8f['username']||'';this[_0x339b('0x1')]=_0x82cb8f['token']||'';this[_0x339b('0x2')]=_0x82cb8f[_0x339b('0x2')]||'';this[_0x339b('0x3')]=_0x82cb8f[_0x339b('0x3')]||'';this[_0x339b('0x4')]=_0x82cb8f[_0x339b('0x4')]||{};}module[_0x339b('0x5')]=FreshsalesAccount;
\ No newline at end of file
+var _0xe626=['remoteUri','serverUrl','exports','name','username','apiKey','token'];(function(_0x10791d,_0x2562b6){var _0x1b4f9c=function(_0x3b2815){while(--_0x3b2815){_0x10791d['push'](_0x10791d['shift']());}};_0x1b4f9c(++_0x2562b6);}(_0xe626,0x9d));var _0x6e62=function(_0x379581,_0x55f5fd){_0x379581=_0x379581-0x0;var _0x709b5=_0xe626[_0x379581];return _0x709b5;};'use strict';function FreshsalesAccount(_0x165dfe){this['id']=_0x165dfe['id']||0x0;this[_0x6e62('0x0')]=_0x165dfe[_0x6e62('0x0')]||'';this[_0x6e62('0x1')]=_0x165dfe['username']||'';this[_0x6e62('0x2')]=_0x165dfe[_0x6e62('0x3')]||'';this[_0x6e62('0x4')]=_0x165dfe[_0x6e62('0x4')]||'';this[_0x6e62('0x5')]=_0x165dfe['serverUrl']||'';this['Configurations']=_0x165dfe['Configurations']||{};}module[_0x6e62('0x6')]=FreshsalesAccount;
\ No newline at end of file
index 65cb0b2..fc1e0fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde10=['channel','connectedlinenum','connectedlinename','context','exten','assigned','lastAssignedTo','motionChannel','voice','mohtime','variables','exports','inbound','uniqueid','queue','queuecallerjoinAt','queuecallerleaveAt','position','count','queuecallerabandon','queuecallercomplete','queuecallercompleteAt','originalposition'];(function(_0x28666a,_0x3dc25d){var _0x19d752=function(_0x551e47){while(--_0x551e47){_0x28666a['push'](_0x28666a['shift']());}};_0x19d752(++_0x3dc25d);}(_0xde10,0xf2));var _0x0de1=function(_0x32ad34,_0x338f12){_0x32ad34=_0x32ad34-0x0;var _0x72b5af=_0xde10[_0x32ad34];return _0x72b5af;};'use strict';function QueueReport(){this['type']=_0x0de1('0x0');this[_0x0de1('0x1')]='';this['calleridnum']='';this['calleridname']='';this[_0x0de1('0x2')]='';this[_0x0de1('0x3')]=null;this[_0x0de1('0x4')]=null;this[_0x0de1('0x5')]=0x1;this[_0x0de1('0x6')]=0x1;this[_0x0de1('0x7')]=![];this['queuecallerabandonAt']=null;this[_0x0de1('0x8')]=![];this[_0x0de1('0x9')]=null;this['queuecallerexit']=![];this['queuecallerexitAt']=null;this[_0x0de1('0xa')]=0x1;this[_0x0de1('0xb')]='';this[_0x0de1('0xc')]='';this[_0x0de1('0xd')]='';this['accountcode']='';this[_0x0de1('0xe')]='';this[_0x0de1('0xf')]='';this['priority']='';this['holdtime']=0x0;this[_0x0de1('0x10')]=![];this[_0x0de1('0x11')]='';this[_0x0de1('0x12')]=_0x0de1('0x13');this[_0x0de1('0x14')]=0x0;this[_0x0de1('0x15')]={};}module[_0x0de1('0x16')]=QueueReport;
\ No newline at end of file
+var _0x3714=['queuecallerleaveAt','position','count','queuecallerabandonAt','queuecallercompleteAt','queuecallerexit','originalposition','channel','connectedlinenum','connectedlinename','context','priority','holdtime','assigned','lastAssignedTo','variables','exports','type','inbound','calleridnum','calleridname','queue'];(function(_0x3001b0,_0x2c682a){var _0x5ccb06=function(_0x1b588c){while(--_0x1b588c){_0x3001b0['push'](_0x3001b0['shift']());}};_0x5ccb06(++_0x2c682a);}(_0x3714,0x95));var _0x4371=function(_0x282455,_0x1ad89c){_0x282455=_0x282455-0x0;var _0x571b5a=_0x3714[_0x282455];return _0x571b5a;};'use strict';function QueueReport(){this[_0x4371('0x0')]=_0x4371('0x1');this['uniqueid']='';this[_0x4371('0x2')]='';this[_0x4371('0x3')]='';this[_0x4371('0x4')]='';this['queuecallerjoinAt']=null;this[_0x4371('0x5')]=null;this[_0x4371('0x6')]=0x1;this[_0x4371('0x7')]=0x1;this['queuecallerabandon']=![];this[_0x4371('0x8')]=null;this['queuecallercomplete']=![];this[_0x4371('0x9')]=null;this[_0x4371('0xa')]=![];this['queuecallerexitAt']=null;this[_0x4371('0xb')]=0x1;this[_0x4371('0xc')]='';this[_0x4371('0xd')]='';this[_0x4371('0xe')]='';this['accountcode']='';this[_0x4371('0xf')]='';this['exten']='';this[_0x4371('0x10')]='';this[_0x4371('0x11')]=0x0;this[_0x4371('0x12')]=![];this[_0x4371('0x13')]='';this['mohtime']=0x0;this[_0x4371('0x14')]={};}module[_0x4371('0x15')]=QueueReport;
\ No newline at end of file
index b92ce22..a013a28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6c5=['clientSecret','securityToken','type','integrationTab','serverUrl','Configurations','exports','name','username','remoteUri','password','clientId'];(function(_0x216799,_0x44b817){var _0x3661c3=function(_0x28f85e){while(--_0x28f85e){_0x216799['push'](_0x216799['shift']());}};_0x3661c3(++_0x44b817);}(_0xa6c5,0xd3));var _0x5a6c=function(_0x1af11f,_0x1ea9da){_0x1af11f=_0x1af11f-0x0;var _0x1a1b50=_0xa6c5[_0x1af11f];return _0x1a1b50;};'use strict';function SalesforceAccount(_0x254fa1){this['id']=_0x254fa1['id']||0x0;this[_0x5a6c('0x0')]=_0x254fa1[_0x5a6c('0x0')]||'';this[_0x5a6c('0x1')]=_0x254fa1[_0x5a6c('0x1')]||'';this[_0x5a6c('0x2')]=_0x254fa1[_0x5a6c('0x2')]||'';this[_0x5a6c('0x3')]=_0x254fa1[_0x5a6c('0x3')]||'';this[_0x5a6c('0x4')]=_0x254fa1[_0x5a6c('0x4')]||'';this['clientSecret']=_0x254fa1[_0x5a6c('0x5')]||'';this[_0x5a6c('0x6')]=_0x254fa1['securityToken']||'';this['type']=_0x254fa1[_0x5a6c('0x7')]||_0x5a6c('0x8');this[_0x5a6c('0x9')]=_0x254fa1['serverUrl']||'';this[_0x5a6c('0xa')]=_0x254fa1[_0x5a6c('0xa')]||{};}module[_0x5a6c('0xb')]=SalesforceAccount;
\ No newline at end of file
+var _0xb082=['serverUrl','Configurations','name','username','remoteUri','password','clientId','clientSecret','type','integrationTab'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xb082,0x110));var _0x2b08=function(_0x53b42d,_0x323991){_0x53b42d=_0x53b42d-0x0;var _0x3c3e30=_0xb082[_0x53b42d];return _0x3c3e30;};'use strict';function SalesforceAccount(_0x4400d2){this['id']=_0x4400d2['id']||0x0;this[_0x2b08('0x0')]=_0x4400d2[_0x2b08('0x0')]||'';this[_0x2b08('0x1')]=_0x4400d2[_0x2b08('0x1')]||'';this[_0x2b08('0x2')]=_0x4400d2['remoteUri']||'';this[_0x2b08('0x3')]=_0x4400d2[_0x2b08('0x3')]||'';this[_0x2b08('0x4')]=_0x4400d2['clientId']||'';this[_0x2b08('0x5')]=_0x4400d2['clientSecret']||'';this['securityToken']=_0x4400d2['securityToken']||'';this[_0x2b08('0x6')]=_0x4400d2[_0x2b08('0x6')]||_0x2b08('0x7');this['serverUrl']=_0x4400d2[_0x2b08('0x8')]||'';this['Configurations']=_0x4400d2[_0x2b08('0x9')]||{};}module['exports']=SalesforceAccount;
\ No newline at end of file
index 2c72cb9..b783a07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0008=['remoteUri','serverUrl','Configurations','exports','name','username','password'];(function(_0x2d088e,_0x4cf89f){var _0x31166c=function(_0x4a62fb){while(--_0x4a62fb){_0x2d088e['push'](_0x2d088e['shift']());}};_0x31166c(++_0x4cf89f);}(_0x0008,0x1bd));var _0x8000=function(_0x4b2b5a,_0x3f7555){_0x4b2b5a=_0x4b2b5a-0x0;var _0x47f812=_0x0008[_0x4b2b5a];return _0x47f812;};'use strict';function ServicenowAccount(_0x4fa108){this['id']=_0x4fa108['id']||0x0;this[_0x8000('0x0')]=_0x4fa108[_0x8000('0x0')]||'';this[_0x8000('0x1')]=_0x4fa108[_0x8000('0x1')]||'';this[_0x8000('0x2')]=_0x4fa108[_0x8000('0x2')]||'';this[_0x8000('0x3')]=_0x4fa108[_0x8000('0x3')]||'';this['serverUrl']=_0x4fa108[_0x8000('0x4')]||'';this[_0x8000('0x5')]=_0x4fa108[_0x8000('0x5')]||{};}module[_0x8000('0x6')]=ServicenowAccount;
\ No newline at end of file
+var _0x9ed2=['name','username','password','remoteUri','serverUrl','Configurations'];(function(_0x5e78c4,_0x5946b8){var _0x1e8b54=function(_0x1634d7){while(--_0x1634d7){_0x5e78c4['push'](_0x5e78c4['shift']());}};_0x1e8b54(++_0x5946b8);}(_0x9ed2,0x11a));var _0x29ed=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0x9ed2[_0x2e4aa2];return _0x5e6092;};'use strict';function ServicenowAccount(_0x481653){this['id']=_0x481653['id']||0x0;this[_0x29ed('0x0')]=_0x481653[_0x29ed('0x0')]||'';this['username']=_0x481653[_0x29ed('0x1')]||'';this[_0x29ed('0x2')]=_0x481653[_0x29ed('0x2')]||'';this[_0x29ed('0x3')]=_0x481653[_0x29ed('0x3')]||'';this[_0x29ed('0x4')]=_0x481653[_0x29ed('0x4')]||'';this[_0x29ed('0x5')]=_0x481653[_0x29ed('0x5')]||{};}module['exports']=ServicenowAccount;
\ No newline at end of file
index 62366c6..04d0b37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ddc=['remoteUri','serverUrl','Configurations','exports','name','username','password'];(function(_0x49d4f0,_0x3f590c){var _0x4ec315=function(_0x21910b){while(--_0x21910b){_0x49d4f0['push'](_0x49d4f0['shift']());}};_0x4ec315(++_0x3f590c);}(_0x1ddc,0x1a1));var _0xc1dd=function(_0x3fd95d,_0x186380){_0x3fd95d=_0x3fd95d-0x0;var _0x58a37e=_0x1ddc[_0x3fd95d];return _0x58a37e;};'use strict';function SugarcrmAccount(_0x2109e5){this['id']=_0x2109e5['id']||0x0;this['name']=_0x2109e5[_0xc1dd('0x0')]||'';this[_0xc1dd('0x1')]=_0x2109e5['username']||'';this['password']=_0x2109e5[_0xc1dd('0x2')]||'';this['remoteUri']=_0x2109e5[_0xc1dd('0x3')]||'';this[_0xc1dd('0x4')]=_0x2109e5[_0xc1dd('0x4')]||'';this[_0xc1dd('0x5')]=_0x2109e5['Configurations']||{};}module[_0xc1dd('0x6')]=SugarcrmAccount;
\ No newline at end of file
+var _0xd9ba=['name','password','remoteUri','serverUrl','Configurations','exports'];(function(_0x5bfc92,_0x488c84){var _0x10bb5b=function(_0x5b85c5){while(--_0x5b85c5){_0x5bfc92['push'](_0x5bfc92['shift']());}};_0x10bb5b(++_0x488c84);}(_0xd9ba,0x102));var _0xad9b=function(_0x50c663,_0x3dddb3){_0x50c663=_0x50c663-0x0;var _0x3e7766=_0xd9ba[_0x50c663];return _0x3e7766;};'use strict';function SugarcrmAccount(_0x16d6a2){this['id']=_0x16d6a2['id']||0x0;this['name']=_0x16d6a2[_0xad9b('0x0')]||'';this['username']=_0x16d6a2['username']||'';this['password']=_0x16d6a2[_0xad9b('0x1')]||'';this[_0xad9b('0x2')]=_0x16d6a2['remoteUri']||'';this['serverUrl']=_0x16d6a2[_0xad9b('0x3')]||'';this['Configurations']=_0x16d6a2[_0xad9b('0x4')]||{};}module[_0xad9b('0x5')]=SugarcrmAccount;
\ No newline at end of file
index c9b9a2e..c5f2afd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bef=['stateTime','status','address','exports','name','accountcode','unknown'];(function(_0x1dd467,_0x4fd5aa){var _0x27eb54=function(_0x5734d3){while(--_0x5734d3){_0x1dd467['push'](_0x1dd467['shift']());}};_0x27eb54(++_0x4fd5aa);}(_0x8bef,0x66));var _0xf8be=function(_0x4ed32d,_0x327695){_0x4ed32d=_0x4ed32d-0x0;var _0xf624df=_0x8bef[_0x4ed32d];return _0xf624df;};'use strict';function Telephone(_0x28c3aa){this['id']=_0x28c3aa['id']||0x0;this[_0xf8be('0x0')]=_0x28c3aa[_0xf8be('0x0')]||'';this[_0xf8be('0x1')]=_0x28c3aa[_0xf8be('0x1')]||'';this['state']=_0xf8be('0x2');this[_0xf8be('0x3')]=0x0;this[_0xf8be('0x4')]=_0xf8be('0x2');this[_0xf8be('0x5')]='';}module[_0xf8be('0x6')]=Telephone;
\ No newline at end of file
+var _0x5dd5=['status','address','exports','name','accountcode','state','stateTime'];(function(_0x97c6ea,_0x4cffce){var _0x2d7f50=function(_0x54010e){while(--_0x54010e){_0x97c6ea['push'](_0x97c6ea['shift']());}};_0x2d7f50(++_0x4cffce);}(_0x5dd5,0x1a0));var _0x55dd=function(_0x51f51e,_0x2e24e9){_0x51f51e=_0x51f51e-0x0;var _0x236e20=_0x5dd5[_0x51f51e];return _0x236e20;};'use strict';function Telephone(_0x47c784){this['id']=_0x47c784['id']||0x0;this[_0x55dd('0x0')]=_0x47c784['name']||'';this['accountcode']=_0x47c784[_0x55dd('0x1')]||'';this[_0x55dd('0x2')]='unknown';this[_0x55dd('0x3')]=0x0;this[_0x55dd('0x4')]='unknown';this[_0x55dd('0x5')]='';}module[_0x55dd('0x6')]=Telephone;
\ No newline at end of file
index 909c00f..f9101b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','html'];(function(_0x59c547,_0x2f1da7){var _0x330f8f=function(_0x23f4b4){while(--_0x23f4b4){_0x59c547['push'](_0x59c547['shift']());}};_0x330f8f(++_0x2f1da7);}(_0xb10b,0x12a));var _0xbb10=function(_0x3f52d9,_0x1d748c){_0x3f52d9=_0x3f52d9-0x0;var _0x21e01f=_0xb10b[_0x3f52d9];return _0x21e01f;};'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
+var _0xb10b=['name','html'];(function(_0xe89e35,_0xeacae4){var _0x323bae=function(_0x57fff3){while(--_0x57fff3){_0xe89e35['push'](_0xe89e35['shift']());}};_0x323bae(++_0xeacae4);}(_0xb10b,0x12a));var _0xbb10=function(_0x73ea6d,_0x57d5bd){_0x73ea6d=_0x73ea6d-0x0;var _0x4c3a66=_0xb10b[_0x73ea6d];return _0x4c3a66;};'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 5aa1de2..98e046f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8603=['exports','name','channel','status','AllConditions','AnyConditions','Actions'];(function(_0x48d292,_0xe7e922){var _0x1182aa=function(_0x40e3c8){while(--_0x40e3c8){_0x48d292['push'](_0x48d292['shift']());}};_0x1182aa(++_0xe7e922);}(_0x8603,0x190));var _0x3860=function(_0x20ae9d,_0x77e369){_0x20ae9d=_0x20ae9d-0x0;var _0x1a616f=_0x8603[_0x20ae9d];return _0x1a616f;};'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 _0x5f66=['AllConditions','AnyConditions','Actions','name','channel','voice','status'];(function(_0x5f519b,_0x5b606f){var _0x2461e2=function(_0x510241){while(--_0x510241){_0x5f519b['push'](_0x5f519b['shift']());}};_0x2461e2(++_0x5b606f);}(_0x5f66,0x1a0));var _0x65f6=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x5f66[_0x4154a6];return _0x3b2786;};'use strict';function Trigger(_0x253044){this['id']=_0x253044['id']||0x0;this[_0x65f6('0x0')]=_0x253044['name']||'';this[_0x65f6('0x1')]=_0x253044[_0x65f6('0x1')]||_0x65f6('0x2');this[_0x65f6('0x3')]=_0x253044[_0x65f6('0x3')]||![];this['AllConditions']=_0x253044[_0x65f6('0x4')]||[];this['AnyConditions']=_0x253044[_0x65f6('0x5')]||[];this[_0x65f6('0x6')]=_0x253044['Actions']||[];}module['exports']=Trigger;
\ No newline at end of file
index f26ce6a..e94018b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52b3=['registry','indexOf','split','host','port','domain','domainport','stateRegistry','registrationtime','exports','active','name','unknown','stateTime'];(function(_0x247402,_0x301715){var _0x5b91a9=function(_0x1456b9){while(--_0x1456b9){_0x247402['push'](_0x247402['shift']());}};_0x5b91a9(++_0x301715);}(_0x52b3,0x1e6));var _0x352b=function(_0x421e07,_0x23cdc8){_0x421e07=_0x421e07-0x0;var _0x310bea=_0x52b3[_0x421e07];return _0x310bea;};'use strict';function Trunk(_0x5a87cc){this['id']=_0x5a87cc['id']||0x0;this[_0x352b('0x0')]=_0x5a87cc[_0x352b('0x0')]||![];this[_0x352b('0x1')]=_0x5a87cc[_0x352b('0x1')]||'';this['state']=_0x352b('0x2');this[_0x352b('0x3')]=0x0;this['status']='unknown';this[_0x352b('0x4')]=_0x5a87cc[_0x352b('0x4')]&&_0x5a87cc['registry'][_0x352b('0x5')](':')?_0x5a87cc[_0x352b('0x4')][_0x352b('0x6')](':')[0x0]:'';this[_0x352b('0x7')]='';this[_0x352b('0x8')]='';this[_0x352b('0x9')]='';this[_0x352b('0xa')]='';this['refresh']='';this[_0x352b('0xb')]=_0x352b('0x2');this[_0x352b('0xc')]='';this['address']='';this['defaultuser']=_0x5a87cc['defaultuser']||'';}module[_0x352b('0xd')]=Trunk;
\ No newline at end of file
+var _0x72da=['registrationtime','address','defaultuser','exports','name','state','unknown','stateTime','registry','indexOf','split','port','domain','refresh'];(function(_0x38d7da,_0x51a52f){var _0x4388a7=function(_0x2368d3){while(--_0x2368d3){_0x38d7da['push'](_0x38d7da['shift']());}};_0x4388a7(++_0x51a52f);}(_0x72da,0x11c));var _0xa72d=function(_0x3f4dd9,_0xe0b819){_0x3f4dd9=_0x3f4dd9-0x0;var _0x31c54a=_0x72da[_0x3f4dd9];return _0x31c54a;};'use strict';function Trunk(_0x566ea4){this['id']=_0x566ea4['id']||0x0;this['active']=_0x566ea4['active']||![];this[_0xa72d('0x0')]=_0x566ea4[_0xa72d('0x0')]||'';this[_0xa72d('0x1')]=_0xa72d('0x2');this[_0xa72d('0x3')]=0x0;this['status']='unknown';this[_0xa72d('0x4')]=_0x566ea4['registry']&&_0x566ea4[_0xa72d('0x4')][_0xa72d('0x5')](':')?_0x566ea4[_0xa72d('0x4')][_0xa72d('0x6')](':')[0x0]:'';this['host']='';this[_0xa72d('0x7')]='';this[_0xa72d('0x8')]='';this['domainport']='';this[_0xa72d('0x9')]='';this['stateRegistry']=_0xa72d('0x2');this[_0xa72d('0xa')]='';this[_0xa72d('0xb')]='';this[_0xa72d('0xc')]=_0x566ea4[_0xa72d('0xc')]||'';}module[_0xa72d('0xd')]=Trunk;
\ No newline at end of file
index 028075d..d5868b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b0e=['exten','recordingFormat','mandatoryDisposition','exports'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x3b0e,0x12c));var _0xe3b0=function(_0x1ec84a,_0xdd390a){_0x1ec84a=_0x1ec84a-0x0;var _0x539e7d=_0x3b0e[_0x1ec84a];return _0x539e7d;};'use strict';function voiceExtension(_0x2f319c){this['id']=_0x2f319c['id']||0x0;this['exten']=_0x2f319c[_0xe3b0('0x0')]||'';this[_0xe3b0('0x1')]=_0x2f319c[_0xe3b0('0x1')]||'none';this[_0xe3b0('0x2')]=_0x2f319c[_0xe3b0('0x2')]||![];}module[_0xe3b0('0x3')]=voiceExtension;
\ No newline at end of file
+var _0xe767=['mandatoryDisposition','exports','recordingFormat','none'];(function(_0x2d14a3,_0x4ccb55){var _0x2078d7=function(_0x259983){while(--_0x259983){_0x2d14a3['push'](_0x2d14a3['shift']());}};_0x2078d7(++_0x4ccb55);}(_0xe767,0x142));var _0x7e76=function(_0x51c128,_0xcb7ea0){_0x51c128=_0x51c128-0x0;var _0x5ab0f8=_0xe767[_0x51c128];return _0x5ab0f8;};'use strict';function voiceExtension(_0x2ba76e){this['id']=_0x2ba76e['id']||0x0;this['exten']=_0x2ba76e['exten']||'';this[_0x7e76('0x0')]=_0x2ba76e[_0x7e76('0x0')]||_0x7e76('0x1');this[_0x7e76('0x2')]=_0x2ba76e[_0x7e76('0x2')]||![];}module[_0x7e76('0x3')]=voiceExtension;
\ No newline at end of file
index 95ed1ef..f336721 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x176a=['outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvgHoldtime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','invalid','unavailable','ringinuse','onhold','wav','wav49','gsm','rrmemory','roundrobin','name','monitor_format','type','waiting','talking','total','answered','sumHoldTime','sumBillable','loggedIn','available','acw','autopause','sendMessageOneNotActive','message','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','anonymous','dialOriginateTimeout','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay'];(function(_0xbb7389,_0x12b29d){var _0x12537b=function(_0x42a1f9){while(--_0x42a1f9){_0xbb7389['push'](_0xbb7389['shift']());}};_0x12537b(++_0x12b29d);}(_0x176a,0x8a));var _0xa176=function(_0x800bbc,_0x357d8f){_0x800bbc=_0x800bbc-0x0;var _0x3d3cb0=_0x176a[_0x800bbc];return _0x3d3cb0;};'use strict';var statusDesc=[_0xa176('0x0'),'not_inuse','inuse','busy',_0xa176('0x1'),_0xa176('0x2'),'ringing',_0xa176('0x3'),_0xa176('0x4')];var monitorFormat={'wav':_0xa176('0x5'),'wav49':_0xa176('0x6'),'gsm':_0xa176('0x7')};var strategy={'rrmemory':_0xa176('0x8'),'roundrobin':_0xa176('0x9')};function VoiceQueue(_0x1826bd){this['id']=_0x1826bd['id']||0x0;this[_0xa176('0xa')]=_0x1826bd[_0xa176('0xa')]||'';this[_0xa176('0xb')]=_0x1826bd[_0xa176('0xb')]||'';this[_0xa176('0xc')]=_0x1826bd[_0xa176('0xc')]||'inbound';this[_0xa176('0xd')]=0x0;this[_0xa176('0xe')]=0x0;this[_0xa176('0xf')]=0x0;this[_0xa176('0x10')]=0x0;this['sumDuration']=0x0;this[_0xa176('0x11')]=0x0;this[_0xa176('0x12')]=0x0;this['unmanaged']=0x0;this['abandoned']=0x0;this[_0xa176('0x13')]=0x0;this[_0xa176('0x14')]=0x0;this[_0xa176('0x15')]=_0x1826bd[_0xa176('0x15')]||![];this['acwTimeout']=_0x1826bd['acwTimeout']||0xa;this[_0xa176('0x16')]=_0x1826bd[_0xa176('0x16')]||'no';this[_0xa176('0x17')]=!![];this[_0xa176('0x18')]='';this['originated']=0x0;this['temp']=0x0;this[_0xa176('0x19')]=_0x1826bd[_0xa176('0x19')]||null;this[_0xa176('0x1a')]=_0x1826bd[_0xa176('0x1a')]?_0x1826bd['dialGlobalInterval']:null;this[_0xa176('0x1b')]=_0x1826bd['dialActive'];this[_0xa176('0x1c')]=_0x1826bd[_0xa176('0x1c')]||_0xa176('0x1d');this[_0xa176('0x1e')]=_0x1826bd[_0xa176('0x1e')]||0x0;this['dialLimitQueue']=_0x1826bd[_0xa176('0x1f')]||0x0;this['dialPowerLevel']=_0x1826bd['dialPowerLevel']||0x1;this['dialPredictiveOptimization']=_0x1826bd[_0xa176('0x20')]||_0xa176('0x21');this[_0xa176('0x22')]=_0x1826bd['dialPredictiveOptimizationPercentage']||0.03;this[_0xa176('0x23')]=_0x1826bd[_0xa176('0x23')]||0x258;this[_0xa176('0x24')]=_0x1826bd[_0xa176('0x24')]||'anonymous';this[_0xa176('0x25')]=_0x1826bd[_0xa176('0x25')]||_0xa176('0x26');this[_0xa176('0x27')]=_0x1826bd[_0xa176('0x27')]||0x1e;this['dialQueueOptions']=_0x1826bd['dialQueueOptions']||_0xa176('0x28');this['dialQueueTimeout']=_0x1826bd[_0xa176('0x29')]||0x3;this[_0xa176('0x2a')]=_0x1826bd['dialQueueProject']||undefined;this[_0xa176('0x2b')]=_0x1826bd[_0xa176('0x2b')]||0x3;this['dialCongestionRetryFrequency']=_0x1826bd['dialCongestionRetryFrequency']||0x96;this[_0xa176('0x2c')]=_0x1826bd[_0xa176('0x2c')]||0x3;this[_0xa176('0x2d')]=_0x1826bd['dialBusyRetryFrequency']||0x96;this[_0xa176('0x2e')]=_0x1826bd[_0xa176('0x2e')]||0x3;this[_0xa176('0x2f')]=_0x1826bd[_0xa176('0x2f')]||0x96;this['dialNoSuchNumberMaxRetry']=_0x1826bd[_0xa176('0x30')]||0x3;this[_0xa176('0x31')]=_0x1826bd[_0xa176('0x31')]||0x96;this[_0xa176('0x32')]=_0x1826bd['dialDropMaxRetry']||0x3;this['dialDropRetryFrequency']=_0x1826bd[_0xa176('0x33')]||0x96;this[_0xa176('0x34')]=_0x1826bd['dialAbandonedMaxRetry']||0x3;this[_0xa176('0x35')]=_0x1826bd[_0xa176('0x35')]||0x96;this[_0xa176('0x36')]=_0x1826bd[_0xa176('0x36')]||0x3;this['dialMachineRetryFrequency']=_0x1826bd[_0xa176('0x37')]||0x96;this['dialAgentRejectMaxRetry']=_0x1826bd['dialAgentRejectMaxRetry']||0x3;this[_0xa176('0x38')]=_0x1826bd[_0xa176('0x38')]||0x96;this[_0xa176('0x39')]=_0x1826bd['dialGlobalMaxRetry']||0x4;this['Trunk']=_0x1826bd['Trunk']?_0x1826bd[_0xa176('0x3a')]:undefined;this['TrunkBackup']=_0x1826bd[_0xa176('0x3b')]?_0x1826bd[_0xa176('0x3b')]:undefined;this['dialPrefix']=_0x1826bd['dialPrefix']||undefined;this[_0xa176('0x3c')]=_0x1826bd['Interval']?_0x1826bd[_0xa176('0x3c')]:undefined;this[_0xa176('0x3d')]=_0x1826bd['dialOrderByScheduledAt']||_0xa176('0x3e');this[_0xa176('0x3f')]=_0x1826bd['dialRandomLastDigitCallerIdNumber']||undefined;this['dialCutDigit']=_0x1826bd['dialCutDigit']||undefined;this[_0xa176('0x40')]=strategy[_0x1826bd[_0xa176('0x40')]]||_0xa176('0x8');this[_0xa176('0x41')]=!![];this[_0xa176('0x42')]=_0x1826bd[_0xa176('0x42')]||![];this[_0xa176('0x43')]=_0x1826bd[_0xa176('0x43')];this[_0xa176('0x44')]=_0x1826bd['dialAMDGreeting'];this[_0xa176('0x45')]=_0x1826bd['dialAMDAfterGreetingSilence'];this['dialAMDTotalAnalysisTime']=_0x1826bd[_0xa176('0x46')];this[_0xa176('0x47')]=_0x1826bd['dialAMDMinWordLength'];this[_0xa176('0x48')]=_0x1826bd[_0xa176('0x48')];this[_0xa176('0x49')]=_0x1826bd[_0xa176('0x49')];this[_0xa176('0x4a')]=_0x1826bd[_0xa176('0x4a')];this[_0xa176('0x4b')]=_0x1826bd[_0xa176('0x4b')];this[_0xa176('0x4c')]=0x0;this[_0xa176('0x4d')]=0x0;this[_0xa176('0x4e')]=_0x1826bd[_0xa176('0x4e')];this[_0xa176('0x4f')]=0x0;this[_0xa176('0x50')]=0x0;this[_0xa176('0x51')]=0x0;this[_0xa176('0x52')]=0x0;this[_0xa176('0x53')]=0x0;this[_0xa176('0x54')]=0x0;this['outboundUnknownCallsDay']=0x0;this['outboundBlacklistCallsDay']=0x0;this[_0xa176('0x55')]=0x0;this['outboundDropCallsDayCallersExit']=0x0;this['outboundDropCallsDayTimeout']=0x0;this[_0xa176('0x56')]=0x0;this[_0xa176('0x57')]=0x0;this[_0xa176('0x58')]=0x0;this['startProgressive']=undefined;this[_0xa176('0x59')]=undefined;this[_0xa176('0x5a')]=undefined;this[_0xa176('0x5b')]=1.05;this['predictiveIntervalTotalCalls']=0x0;this['predictiveIntervalAnsweredCalls']=0x0;this['predictiveIntervalDroppedCallsCallersExit']=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this[_0xa176('0x5c')]=0x0;this['predictiveIntervalAvgTalktime']=0x0;this[_0xa176('0x5d')]=0x0;this[_0xa176('0x5e')]=0x0;this[_0xa176('0x5f')]=_0x1826bd[_0xa176('0x60')]||0x14;this[_0xa176('0x61')]=_0x1826bd[_0xa176('0x60')]||0xa;this[_0xa176('0x62')]=0x0;this[_0xa176('0x63')]=0x0;this[_0xa176('0x64')]=0x1;this[_0xa176('0x65')]=0x0;this[_0xa176('0x66')]=0x0;this[_0xa176('0x67')]=0x0;this[_0xa176('0x68')]=0x0;this['dialRecallMeTimeout']=_0x1826bd[_0xa176('0x69')]||0x1e;this[_0xa176('0x6a')]=_0x1826bd[_0xa176('0x6a')]||![];this['dialQueueProject2']=_0x1826bd['dialQueueProject2']||undefined;this[_0xa176('0x6b')]=_0x1826bd['dialAgiAfterHangupClient']||![];this[_0xa176('0x6c')]=_0x1826bd[_0xa176('0x6c')]||![];this[_0xa176('0xb')]=monitorFormat[_0x1826bd['monitor_format']]?monitorFormat[_0x1826bd['monitor_format']]:undefined;this['mandatoryDisposition']=_0x1826bd[_0xa176('0x6d')]||![];this[_0xa176('0x6e')]=_0x1826bd[_0xa176('0x6e')]?_0x1826bd[_0xa176('0x6e')]:undefined;}module[_0xa176('0x6f')]=VoiceQueue;
\ No newline at end of file
+var _0x7757=['dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','startProgressive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','not_inuse','inuse','busy','invalid','unavailable','ringing','ringinuse','onhold','wav49','gsm','roundrobin','name','monitor_format','type','inbound','waiting','talking','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','loggedIn','available','autopause','message','originated','temp','dialGlobalInterval','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x7757,0x12b));var _0x7775=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0x7757[_0x2763f2];return _0x3ef471;};'use strict';var statusDesc=['unknown',_0x7775('0x0'),_0x7775('0x1'),_0x7775('0x2'),_0x7775('0x3'),_0x7775('0x4'),_0x7775('0x5'),_0x7775('0x6'),_0x7775('0x7')];var monitorFormat={'wav':'wav','wav49':_0x7775('0x8'),'gsm':_0x7775('0x9')};var strategy={'rrmemory':'rrmemory','roundrobin':_0x7775('0xa')};function VoiceQueue(_0xee7bdf){this['id']=_0xee7bdf['id']||0x0;this[_0x7775('0xb')]=_0xee7bdf[_0x7775('0xb')]||'';this[_0x7775('0xc')]=_0xee7bdf[_0x7775('0xc')]||'';this['type']=_0xee7bdf[_0x7775('0xd')]||_0x7775('0xe');this[_0x7775('0xf')]=0x0;this[_0x7775('0x10')]=0x0;this['total']=0x0;this[_0x7775('0x11')]=0x0;this[_0x7775('0x12')]=0x0;this[_0x7775('0x13')]=0x0;this[_0x7775('0x14')]=0x0;this[_0x7775('0x15')]=0x0;this[_0x7775('0x16')]=0x0;this[_0x7775('0x17')]=0x0;this[_0x7775('0x18')]=0x0;this['acw']=_0xee7bdf['acw']||![];this['acwTimeout']=_0xee7bdf['acwTimeout']||0xa;this[_0x7775('0x19')]=_0xee7bdf[_0x7775('0x19')]||'no';this['sendMessageOneNotActive']=!![];this[_0x7775('0x1a')]='';this[_0x7775('0x1b')]=0x0;this[_0x7775('0x1c')]=0x0;this['dialTimezone']=_0xee7bdf['dialTimezone']||null;this[_0x7775('0x1d')]=_0xee7bdf['dialGlobalInterval']?_0xee7bdf[_0x7775('0x1d')]:null;this[_0x7775('0x1e')]=_0xee7bdf[_0x7775('0x1e')];this[_0x7775('0x1f')]=_0xee7bdf[_0x7775('0x1f')]||'progressive';this[_0x7775('0x20')]=_0xee7bdf['dialLimitChannel']||0x0;this[_0x7775('0x21')]=_0xee7bdf['dialLimitQueue']||0x0;this[_0x7775('0x22')]=_0xee7bdf[_0x7775('0x22')]||0x1;this[_0x7775('0x23')]=_0xee7bdf['dialPredictiveOptimization']||_0x7775('0x24');this[_0x7775('0x25')]=_0xee7bdf[_0x7775('0x25')]||0.03;this[_0x7775('0x26')]=_0xee7bdf[_0x7775('0x26')]||0x258;this[_0x7775('0x27')]=_0xee7bdf['dialOriginateCallerIdName']||_0x7775('0x28');this[_0x7775('0x29')]=_0xee7bdf[_0x7775('0x29')]||_0x7775('0x28');this['dialOriginateTimeout']=_0xee7bdf[_0x7775('0x2a')]||0x1e;this[_0x7775('0x2b')]=_0xee7bdf[_0x7775('0x2b')]||_0x7775('0x2c');this[_0x7775('0x2d')]=_0xee7bdf['dialQueueTimeout']||0x3;this['dialQueueProject']=_0xee7bdf['dialQueueProject']||undefined;this[_0x7775('0x2e')]=_0xee7bdf[_0x7775('0x2e')]||0x3;this['dialCongestionRetryFrequency']=_0xee7bdf[_0x7775('0x2f')]||0x96;this[_0x7775('0x30')]=_0xee7bdf[_0x7775('0x30')]||0x3;this[_0x7775('0x31')]=_0xee7bdf['dialBusyRetryFrequency']||0x96;this[_0x7775('0x32')]=_0xee7bdf['dialNoAnswerMaxRetry']||0x3;this[_0x7775('0x33')]=_0xee7bdf[_0x7775('0x33')]||0x96;this['dialNoSuchNumberMaxRetry']=_0xee7bdf[_0x7775('0x34')]||0x3;this[_0x7775('0x35')]=_0xee7bdf[_0x7775('0x35')]||0x96;this[_0x7775('0x36')]=_0xee7bdf[_0x7775('0x36')]||0x3;this[_0x7775('0x37')]=_0xee7bdf['dialDropRetryFrequency']||0x96;this[_0x7775('0x38')]=_0xee7bdf[_0x7775('0x38')]||0x3;this[_0x7775('0x39')]=_0xee7bdf[_0x7775('0x39')]||0x96;this[_0x7775('0x3a')]=_0xee7bdf[_0x7775('0x3a')]||0x3;this['dialMachineRetryFrequency']=_0xee7bdf[_0x7775('0x3b')]||0x96;this[_0x7775('0x3c')]=_0xee7bdf['dialAgentRejectMaxRetry']||0x3;this['dialAgentRejectRetryFrequency']=_0xee7bdf[_0x7775('0x3d')]||0x96;this['dialGlobalMaxRetry']=_0xee7bdf[_0x7775('0x3e')]||0x4;this[_0x7775('0x3f')]=_0xee7bdf[_0x7775('0x3f')]?_0xee7bdf[_0x7775('0x3f')]:undefined;this[_0x7775('0x40')]=_0xee7bdf[_0x7775('0x40')]?_0xee7bdf[_0x7775('0x40')]:undefined;this[_0x7775('0x41')]=_0xee7bdf[_0x7775('0x41')]||undefined;this['Interval']=_0xee7bdf[_0x7775('0x42')]?_0xee7bdf[_0x7775('0x42')]:undefined;this[_0x7775('0x43')]=_0xee7bdf[_0x7775('0x43')]||_0x7775('0x44');this[_0x7775('0x45')]=_0xee7bdf[_0x7775('0x45')]||undefined;this['dialCutDigit']=_0xee7bdf[_0x7775('0x46')]||undefined;this['strategy']=strategy[_0xee7bdf[_0x7775('0x47')]]||'rrmemory';this[_0x7775('0x48')]=!![];this[_0x7775('0x49')]=_0xee7bdf[_0x7775('0x49')]||![];this[_0x7775('0x4a')]=_0xee7bdf[_0x7775('0x4a')];this[_0x7775('0x4b')]=_0xee7bdf[_0x7775('0x4b')];this['dialAMDAfterGreetingSilence']=_0xee7bdf['dialAMDAfterGreetingSilence'];this[_0x7775('0x4c')]=_0xee7bdf['dialAMDTotalAnalysisTime'];this[_0x7775('0x4d')]=_0xee7bdf[_0x7775('0x4d')];this[_0x7775('0x4e')]=_0xee7bdf[_0x7775('0x4e')];this[_0x7775('0x4f')]=_0xee7bdf[_0x7775('0x4f')];this[_0x7775('0x50')]=_0xee7bdf['dialAMDSilenceThreshold'];this[_0x7775('0x51')]=_0xee7bdf[_0x7775('0x51')];this[_0x7775('0x52')]=0x0;this[_0x7775('0x53')]=0x0;this[_0x7775('0x54')]=_0xee7bdf['timeout'];this['outboundAnswerCallsDay']=0x0;this[_0x7775('0x55')]=0x0;this[_0x7775('0x56')]=0x0;this['outboundBusyCallsDay']=0x0;this['outboundCongestionCallsDay']=0x0;this[_0x7775('0x57')]=0x0;this[_0x7775('0x58')]=0x0;this['outboundBlacklistCallsDay']=0x0;this[_0x7775('0x59')]=0x0;this['outboundDropCallsDayCallersExit']=0x0;this[_0x7775('0x5a')]=0x0;this[_0x7775('0x5b')]=0x0;this[_0x7775('0x5c')]=0x0;this['outboundAbandonedDay']=0x0;this[_0x7775('0x5d')]=undefined;this['startPredictive']=undefined;this[_0x7775('0x5e')]=undefined;this[_0x7775('0x5f')]=1.05;this[_0x7775('0x60')]=0x0;this[_0x7775('0x61')]=0x0;this['predictiveIntervalDroppedCallsCallersExit']=0x0;this[_0x7775('0x62')]=0x0;this[_0x7775('0x63')]=0x0;this[_0x7775('0x64')]=0x0;this['predictiveIntervalPauses']=0x0;this[_0x7775('0x65')]=0x0;this[_0x7775('0x66')]=_0xee7bdf[_0x7775('0x67')]||0x14;this[_0x7775('0x68')]=_0xee7bdf[_0x7775('0x67')]||0xa;this[_0x7775('0x69')]=0x0;this[_0x7775('0x6a')]=0x0;this[_0x7775('0x6b')]=0x1;this[_0x7775('0x6c')]=0x0;this['erlangCallToSecond']=0x0;this['erlangAbandonmentRate']=0x0;this[_0x7775('0x6d')]=0x0;this['dialRecallMeTimeout']=_0xee7bdf[_0x7775('0x6e')]||0x1e;this[_0x7775('0x6f')]=_0xee7bdf[_0x7775('0x6f')]||![];this[_0x7775('0x70')]=_0xee7bdf['dialQueueProject2']||undefined;this[_0x7775('0x71')]=_0xee7bdf[_0x7775('0x71')]||![];this[_0x7775('0x72')]=_0xee7bdf[_0x7775('0x72')]||![];this['monitor_format']=monitorFormat[_0xee7bdf['monitor_format']]?monitorFormat[_0xee7bdf['monitor_format']]:undefined;this['mandatoryDisposition']=_0xee7bdf[_0x7775('0x73')]||![];this['mandatoryDispositionPause']=_0xee7bdf[_0x7775('0x74')]?_0xee7bdf[_0x7775('0x74')]:undefined;}module[_0x7775('0x75')]=VoiceQueue;
\ No newline at end of file
index bfc3d55..2c8ca37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc077=['name','accessKey','remoteUri','serverUrl','Configurations'];(function(_0x109220,_0x56a6b0){var _0x4e36ad=function(_0x5175cd){while(--_0x5175cd){_0x109220['push'](_0x109220['shift']());}};_0x4e36ad(++_0x56a6b0);}(_0xc077,0xfa));var _0x7c07=function(_0x118c30,_0x7eb1eb){_0x118c30=_0x118c30-0x0;var _0x569999=_0xc077[_0x118c30];return _0x569999;};'use strict';function VtigerAccount(_0x3e0255){this['id']=_0x3e0255['id']||0x0;this[_0x7c07('0x0')]=_0x3e0255[_0x7c07('0x0')]||'';this['username']=_0x3e0255['username']||'';this[_0x7c07('0x1')]=_0x3e0255['accessKey']||'';this[_0x7c07('0x2')]=_0x3e0255[_0x7c07('0x2')]||'';this[_0x7c07('0x3')]=_0x3e0255[_0x7c07('0x3')]||'';this[_0x7c07('0x4')]=_0x3e0255[_0x7c07('0x4')]||{};}module['exports']=VtigerAccount;
\ No newline at end of file
+var _0xde41=['remoteUri','serverUrl','Configurations','exports','name','username','accessKey'];(function(_0x260645,_0x560cab){var _0x109a8c=function(_0x2c5bc7){while(--_0x2c5bc7){_0x260645['push'](_0x260645['shift']());}};_0x109a8c(++_0x560cab);}(_0xde41,0xcf));var _0x1de4=function(_0x10cc76,_0x484192){_0x10cc76=_0x10cc76-0x0;var _0x112c2b=_0xde41[_0x10cc76];return _0x112c2b;};'use strict';function VtigerAccount(_0x326d82){this['id']=_0x326d82['id']||0x0;this[_0x1de4('0x0')]=_0x326d82[_0x1de4('0x0')]||'';this['username']=_0x326d82[_0x1de4('0x1')]||'';this[_0x1de4('0x2')]=_0x326d82[_0x1de4('0x2')]||'';this[_0x1de4('0x3')]=_0x326d82[_0x1de4('0x3')]||'';this[_0x1de4('0x4')]=_0x326d82[_0x1de4('0x4')]||'';this[_0x1de4('0x5')]=_0x326d82[_0x1de4('0x5')]||{};}module[_0x1de4('0x6')]=VtigerAccount;
\ No newline at end of file
index 087d34d..ce136c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x015b=['username','token','remoteUri','authType','type','integrationTab','serverUrl','Configurations','exports','name'];(function(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0x015b,0x1f3));var _0xb015=function(_0x3fcc96,_0x1c65d4){_0x3fcc96=_0x3fcc96-0x0;var _0x5caa7a=_0x015b[_0x3fcc96];return _0x5caa7a;};'use strict';function ZendeskAccount(_0x25ccea){this['id']=_0x25ccea['id']||0x0;this[_0xb015('0x0')]=_0x25ccea[_0xb015('0x0')]||'';this[_0xb015('0x1')]=_0x25ccea['username']||'';this['password']=_0x25ccea['password']||'';this[_0xb015('0x2')]=_0x25ccea[_0xb015('0x2')]||'';this[_0xb015('0x3')]=_0x25ccea[_0xb015('0x3')]||'';this[_0xb015('0x4')]=_0x25ccea[_0xb015('0x4')]||'';this['type']=_0x25ccea[_0xb015('0x5')]||_0xb015('0x6');this['serverUrl']=_0x25ccea[_0xb015('0x7')]||'';this[_0xb015('0x8')]=_0x25ccea['Configurations']||{};}module[_0xb015('0x9')]=ZendeskAccount;
\ No newline at end of file
+var _0x75d6=['type','serverUrl','Configurations','exports','name','username','password','token','remoteUri','authType'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x75d6,0xd6));var _0x675d=function(_0x3f59b1,_0x25cdbe){_0x3f59b1=_0x3f59b1-0x0;var _0x11d2e8=_0x75d6[_0x3f59b1];return _0x11d2e8;};'use strict';function ZendeskAccount(_0x165771){this['id']=_0x165771['id']||0x0;this[_0x675d('0x0')]=_0x165771['name']||'';this[_0x675d('0x1')]=_0x165771[_0x675d('0x1')]||'';this[_0x675d('0x2')]=_0x165771[_0x675d('0x2')]||'';this[_0x675d('0x3')]=_0x165771[_0x675d('0x3')]||'';this[_0x675d('0x4')]=_0x165771[_0x675d('0x4')]||'';this[_0x675d('0x5')]=_0x165771[_0x675d('0x5')]||'';this[_0x675d('0x6')]=_0x165771['type']||'integrationTab';this[_0x675d('0x7')]=_0x165771[_0x675d('0x7')]||'';this[_0x675d('0x8')]=_0x165771[_0x675d('0x8')]||{};}module[_0x675d('0x9')]=ZendeskAccount;
\ No newline at end of file
index bbc2ad7..6700f24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4631=['clientSecret','serverUrl','code','refreshToken','exports','description','host','zone','clientId'];(function(_0x2b9b7f,_0x4d47df){var _0x4ed19a=function(_0x72b5ff){while(--_0x72b5ff){_0x2b9b7f['push'](_0x2b9b7f['shift']());}};_0x4ed19a(++_0x4d47df);}(_0x4631,0x19a));var _0x1463=function(_0x36f47c,_0x38ef4d){_0x36f47c=_0x36f47c-0x0;var _0x296c55=_0x4631[_0x36f47c];return _0x296c55;};'use strict';function ZohoAccount(_0x23b73a){this['id']=_0x23b73a['id']||0x0;this['name']=_0x23b73a['name']||'';this[_0x1463('0x0')]=_0x23b73a[_0x1463('0x0')]||'';this[_0x1463('0x1')]=_0x23b73a[_0x1463('0x1')]||'';this[_0x1463('0x2')]=_0x23b73a[_0x1463('0x2')]||'';this[_0x1463('0x3')]=_0x23b73a[_0x1463('0x3')]||'';this['clientSecret']=_0x23b73a[_0x1463('0x4')]||'';this[_0x1463('0x5')]=_0x23b73a[_0x1463('0x5')]||'';this[_0x1463('0x6')]=_0x23b73a['code']||'';this[_0x1463('0x7')]=_0x23b73a[_0x1463('0x7')]||'';this['Configurations']=_0x23b73a['Configurations']||{};}module[_0x1463('0x8')]=ZohoAccount;
\ No newline at end of file
+var _0x7209=['description','host','zone','clientId','clientSecret','serverUrl','refreshToken','Configurations','name'];(function(_0x3e103d,_0x55790c){var _0x4931bf=function(_0x541250){while(--_0x541250){_0x3e103d['push'](_0x3e103d['shift']());}};_0x4931bf(++_0x55790c);}(_0x7209,0x143));var _0x9720=function(_0x4e322c,_0x4c95b3){_0x4e322c=_0x4e322c-0x0;var _0x358af7=_0x7209[_0x4e322c];return _0x358af7;};'use strict';function ZohoAccount(_0x3f70ad){this['id']=_0x3f70ad['id']||0x0;this[_0x9720('0x0')]=_0x3f70ad[_0x9720('0x0')]||'';this['description']=_0x3f70ad[_0x9720('0x1')]||'';this[_0x9720('0x2')]=_0x3f70ad['host']||'';this[_0x9720('0x3')]=_0x3f70ad[_0x9720('0x3')]||'';this[_0x9720('0x4')]=_0x3f70ad[_0x9720('0x4')]||'';this[_0x9720('0x5')]=_0x3f70ad[_0x9720('0x5')]||'';this['serverUrl']=_0x3f70ad[_0x9720('0x6')]||'';this['code']=_0x3f70ad['code']||'';this['refreshToken']=_0x3f70ad[_0x9720('0x7')]||'';this[_0x9720('0x8')]=_0x3f70ad[_0x9720('0x8')]||{};}module['exports']=ZohoAccount;
\ No newline at end of file
index 1843f50..6b65759 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce39=['format','\x22%s\x22\x20<%s>','util','isNil','string','uniqueid','idContact','queue','name','type','campaigntype','Agent','channelAgent','membername','SIP/%s','calleridname','Contact','firstName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','originatecalleridname','getCaller'];(function(_0x4f91d3,_0x163914){var _0x5b9bb8=function(_0xcea17c){while(--_0xcea17c){_0x4f91d3['push'](_0x4f91d3['shift']());}};_0x5b9bb8(++_0x163914);}(_0xce39,0xc5));var _0x9ce3=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xce39[_0x321bb2];return _0x9c12ed;};'use strict';var util=require(_0x9ce3('0x0'));var _=require('lodash');var moment=require('moment');function checkNameSurname(_0x2a7f29,_0x378ea4,_0x44e56e){var _0x3d7778='';if(!_[_0x9ce3('0x1')](_0x378ea4)&&_0x9ce3('0x2')===typeof _0x378ea4){_0x3d7778+=_0x378ea4;}if(!_[_0x9ce3('0x1')](_0x44e56e)&&_0x9ce3('0x2')===typeof _0x44e56e){_0x3d7778+='\x20'+_0x44e56e;}if(_0x3d7778!==''){return _0x3d7778;}return _0x2a7f29;}function Action(_0xb1eb18,_0x3b6b4e,_0x46a96a,_0x2c0114,_0x4c239c){this[_0x9ce3('0x3')]=_0x46a96a||undefined;this[_0x9ce3('0x4')]=_0xb1eb18['id'];this[_0x9ce3('0x5')]=_0x3b6b4e[_0x9ce3('0x6')];this[_0x9ce3('0x7')]=_0x3b6b4e[_0x9ce3('0x7')];this[_0x9ce3('0x8')]='queue';this['dialAnswer']=![];this['membername']=_[_0x9ce3('0x1')](_0xb1eb18[_0x9ce3('0x9')])?undefined:_0xb1eb18['Agent'][_0x9ce3('0x6')];this[_0x9ce3('0xa')]=this[_0x9ce3('0xb')]?util['format'](_0x9ce3('0xc'),this[_0x9ce3('0xb')]):_0x2c0114||undefined;this[_0x9ce3('0xd')]=checkNameSurname(_0xb1eb18[_0x9ce3('0xe')]['phone'],_0xb1eb18[_0x9ce3('0xe')][_0x9ce3('0xf')],_0xb1eb18[_0x9ce3('0xe')]['lastName']);this[_0x9ce3('0x10')]=_0xb1eb18[_0x9ce3('0x10')]||![];this[_0x9ce3('0x11')]=_0xb1eb18[_0x9ce3('0xe')]['phone'];this[_0x9ce3('0x12')]=_0xb1eb18['scheduledat'];this[_0x9ce3('0x13')]=_0xb1eb18['countbusyretry']||0x0;this[_0x9ce3('0x14')]=_0xb1eb18[_0x9ce3('0x14')]||0x0;this[_0x9ce3('0x15')]=_0xb1eb18[_0x9ce3('0x15')]||0x0;this[_0x9ce3('0x16')]=(_0xb1eb18[_0x9ce3('0x13')]||0x0)+(_0xb1eb18[_0x9ce3('0x14')]||0x0)+(_0xb1eb18[_0x9ce3('0x15')]||0x0)+(_0xb1eb18[_0x9ce3('0x17')]||0x0)+(_0xb1eb18[_0x9ce3('0x18')]||0x0)+(_0xb1eb18[_0x9ce3('0x19')]||0x0)+(_0xb1eb18[_0x9ce3('0x1a')]||0x0)+(_0xb1eb18['countagentrejectretry']||0x0);this[_0x9ce3('0x17')]=_0xb1eb18[_0x9ce3('0x17')]||0x0;this[_0x9ce3('0x18')]=_0xb1eb18[_0x9ce3('0x18')]||0x0;this[_0x9ce3('0x19')]=_0xb1eb18[_0x9ce3('0x19')]||0x0;this[_0x9ce3('0x1a')]=_0xb1eb18[_0x9ce3('0x1a')]||0x0;this[_0x9ce3('0x1b')]=_0xb1eb18[_0x9ce3('0x1b')]||0x0;this[_0x9ce3('0x1c')]=_0xb1eb18[_0x9ce3('0x1c')];this[_0x9ce3('0x1d')]=_0xb1eb18['callbackuniqueid'];this[_0x9ce3('0x1e')]=_0xb1eb18[_0x9ce3('0x1e')];this['recallme']=_0xb1eb18[_0x9ce3('0x1f')];this[_0x9ce3('0x20')]=_0xb1eb18['ContactId'];this[_0x9ce3('0x21')]=_0xb1eb18['ListId'];this[_0x9ce3('0x22')]=_[_0x9ce3('0x1')](_0xb1eb18[_0x9ce3('0x9')])?_0xb1eb18['UserId']:_0xb1eb18[_0x9ce3('0x9')]['id'];this['VoiceQueueId']=_0xb1eb18['VoiceQueueId'];this['originatecalleridnum']='';this[_0x9ce3('0x23')]='';}Action['prototype'][_0x9ce3('0x24')]=function(){return util[_0x9ce3('0x25')](_0x9ce3('0x26'),this[_0x9ce3('0xd')],this['number']);};module['exports']=Action;
\ No newline at end of file
+var _0xf9db=['number','exports','util','lodash','moment','isNil','string','uniqueid','idContact','name','type','campaigntype','queue','dialAnswer','membername','Agent','format','SIP/%s','Contact','phone','firstName','lastName','active','calleridnum','scheduledat','countnoanswerretry','countglobal','countcongestionretry','countdropretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','countabandonedretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridname','prototype','getCaller','calleridname'];(function(_0x5ce8b9,_0x5cded8){var _0xe34be0=function(_0xe3d4e5){while(--_0xe3d4e5){_0x5ce8b9['push'](_0x5ce8b9['shift']());}};_0xe34be0(++_0x5cded8);}(_0xf9db,0x110));var _0xbf9d=function(_0x399fa5,_0x31e980){_0x399fa5=_0x399fa5-0x0;var _0x41ec0a=_0xf9db[_0x399fa5];return _0x41ec0a;};'use strict';var util=require(_0xbf9d('0x0'));var _=require(_0xbf9d('0x1'));var moment=require(_0xbf9d('0x2'));function checkNameSurname(_0x344200,_0x1c58d5,_0x394576){var _0x474865='';if(!_[_0xbf9d('0x3')](_0x1c58d5)&&_0xbf9d('0x4')===typeof _0x1c58d5){_0x474865+=_0x1c58d5;}if(!_['isNil'](_0x394576)&&'string'===typeof _0x394576){_0x474865+='\x20'+_0x394576;}if(_0x474865!==''){return _0x474865;}return _0x344200;}function Action(_0x38ece7,_0x4fe178,_0x36f945,_0x4c68ec,_0x1ec1da){this[_0xbf9d('0x5')]=_0x36f945||undefined;this[_0xbf9d('0x6')]=_0x38ece7['id'];this['queue']=_0x4fe178[_0xbf9d('0x7')];this[_0xbf9d('0x8')]=_0x4fe178[_0xbf9d('0x8')];this[_0xbf9d('0x9')]=_0xbf9d('0xa');this[_0xbf9d('0xb')]=![];this[_0xbf9d('0xc')]=_[_0xbf9d('0x3')](_0x38ece7[_0xbf9d('0xd')])?undefined:_0x38ece7[_0xbf9d('0xd')][_0xbf9d('0x7')];this['channelAgent']=this['membername']?util[_0xbf9d('0xe')](_0xbf9d('0xf'),this[_0xbf9d('0xc')]):_0x4c68ec||undefined;this['calleridname']=checkNameSurname(_0x38ece7[_0xbf9d('0x10')][_0xbf9d('0x11')],_0x38ece7[_0xbf9d('0x10')][_0xbf9d('0x12')],_0x38ece7[_0xbf9d('0x10')][_0xbf9d('0x13')]);this[_0xbf9d('0x14')]=_0x38ece7[_0xbf9d('0x14')]||![];this[_0xbf9d('0x15')]=_0x38ece7[_0xbf9d('0x10')][_0xbf9d('0x11')];this[_0xbf9d('0x16')]=_0x38ece7[_0xbf9d('0x16')];this['countbusyretry']=_0x38ece7['countbusyretry']||0x0;this['countcongestionretry']=_0x38ece7['countcongestionretry']||0x0;this[_0xbf9d('0x17')]=_0x38ece7[_0xbf9d('0x17')]||0x0;this[_0xbf9d('0x18')]=(_0x38ece7['countbusyretry']||0x0)+(_0x38ece7[_0xbf9d('0x19')]||0x0)+(_0x38ece7[_0xbf9d('0x17')]||0x0)+(_0x38ece7['countnosuchnumberretry']||0x0)+(_0x38ece7[_0xbf9d('0x1a')]||0x0)+(_0x38ece7['countabandonedretry']||0x0)+(_0x38ece7[_0xbf9d('0x1b')]||0x0)+(_0x38ece7[_0xbf9d('0x1c')]||0x0);this[_0xbf9d('0x1d')]=_0x38ece7[_0xbf9d('0x1d')]||0x0;this[_0xbf9d('0x1a')]=_0x38ece7[_0xbf9d('0x1a')]||0x0;this[_0xbf9d('0x1e')]=_0x38ece7[_0xbf9d('0x1e')]||0x0;this['countmachineretry']=_0x38ece7[_0xbf9d('0x1b')]||0x0;this[_0xbf9d('0x1c')]=_0x38ece7[_0xbf9d('0x1c')]||0x0;this[_0xbf9d('0x1f')]=_0x38ece7[_0xbf9d('0x1f')];this['callbackuniqueid']=_0x38ece7[_0xbf9d('0x20')];this[_0xbf9d('0x21')]=_0x38ece7[_0xbf9d('0x21')];this[_0xbf9d('0x22')]=_0x38ece7['recallme'];this[_0xbf9d('0x23')]=_0x38ece7[_0xbf9d('0x23')];this[_0xbf9d('0x24')]=_0x38ece7[_0xbf9d('0x24')];this[_0xbf9d('0x25')]=_[_0xbf9d('0x3')](_0x38ece7[_0xbf9d('0xd')])?_0x38ece7[_0xbf9d('0x25')]:_0x38ece7[_0xbf9d('0xd')]['id'];this[_0xbf9d('0x26')]=_0x38ece7[_0xbf9d('0x26')];this['originatecalleridnum']='';this[_0xbf9d('0x27')]='';}Action[_0xbf9d('0x28')][_0xbf9d('0x29')]=function(){return util['format']('\x22%s\x22\x20<%s>',this[_0xbf9d('0x2a')],this[_0xbf9d('0x2b')]);};module[_0xbf9d('0x2c')]=Action;
\ No newline at end of file
index 0e3e64e..23f31c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ceb=['talking','total','type','abandoned','waiting','loggedInDb','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalTotalCalls','message','originated','erlangCalls','startPredictive','startProgressive','Trunk','callerid','Interval','stringify','format','voice:queue:%s','voice_queue:save','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','NOT_ACTIVE','\x20is\x20not\x20active','IS_DISACTIVED','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20disactive','syncCampaigns','hasOwnProperty','booked','outbound','clearZombieChannels','setMessage','recallMe','clearZombieChannel','enqueue','info','Queue','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','contactId','UserId','VoiceQueueId','ListId','Action','status','No\x20such\x20channel','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','[action]','size','getContactRecallMe','agentReadyId','then','isNil','length','getDiff','scheduledat','dialRecallMeTimeout','Agent','voicePause','run','logger2','[RecallMe]','disableContact','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','catch','[getContactRecallMe]','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','countglobal','totalGlobal','NoSuchNumber','nosuchnumber','createCustomerHistory','dialGlobalMaxRetry','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','dialNoSuchNumberRetryFrequency','unlockAgent','activeContact','linkedid','responsetime','answertime','\x20Queue','buildObj','connect','acw','buildAcw','custom:agentcomplete','complete','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','sumDuration','talktime','[syncHangup][talking][decrement]','Busy','custom:agentbusy','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','countbusyretry','dialBusyRetryFrequency','NOANSWER','countnoanswerretry','custom:agentnoanswer','noanswer','[callProgressDetectingCustomer][logNoAnswer]','cloneAction','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','CONGESTION','Congestion','congestion','[callProgressDetectingCustomer][logCongestion]','countcongestionretry','CANCEL','outboundRejectCallsDay','countagentrejectretry','AgentReject','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectRetryFrequency','ABANDONED','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','countabandonedretry','cause-txt','dialstatus','custom:amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','updateOriginated','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','uniqueid','ANSWER','destlinkedid','isUndefined','object','reason','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','logAgent','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent][logAnswerAGI]','[originated][decrement][callProgressDetectingAgent]','checkInBlack','Contact','phone','Contact\x20is\x20undefined','isEmpty','execCall','Queue:\x20','\x20IdHopper:\x20','idContact','custom:agentcalled','called','Calling','[Preview][execCall][failure]','Call\x20failed','logBlacklist','createHistory','Contact\x20in\x20black\x20List','active','SIP/%s','reachable','unmonitored','unlock','unlockContact','getContactPreview','isValid','checkIsBlackList','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','validateContact','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20work','isActive','dialActive','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','dialCutDigit','substring','SIP/%s/%s%s','trim','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','originatecalleridname','extractCalleridName','originatecalleridnum','addVariables','merge','toLowerVariables','starttime','channelAgent','destconnectedlinenum','calleridnum','user:%s','user:agentconnect','accountcode','OriginateError','channel','actionid','lookAgent','clone','isFailure','response','custom:agentringnoanswer','rejected','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','[syncHangup][talking][cause]','callProgressDetectingCustomer','statedesc','dialQueueProject','transfer','callProgressDetectingAgent','[syncHangup][talking][transfer]','destuniqueid','addVariable','variables','keys','variable','value','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','exports','bluebird','moment','md5','../../../config/logger','preview','actionPreview','./rpcDb','./action','./util/util','defaults','localhost','socket.io-emitter','redis','prototype','tail','finally','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','bind','hangup','syncHangup','hanguprequest','syncHangupRequest','dialend','syncDialEnd','newexten','syncNewExten','varset','syncVarSet','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','campaignsPreview','emit','name','strategy','answered','available','loggedIn','pTalking','sumBillable','sumHoldTime'];(function(_0x177182,_0x30e7d4){var _0x261459=function(_0x3c8e5e){while(--_0x3c8e5e){_0x177182['push'](_0x177182['shift']());}};_0x261459(++_0x30e7d4);}(_0x3ceb,0x125));var _0xb3ce=function(_0x21cade,_0x581b65){_0x21cade=_0x21cade-0x0;var _0x34f7a6=_0x3ceb[_0x21cade];return _0x34f7a6;};'use strict';var util=require('util');var _=require('lodash');var BPromise=require(_0xb3ce('0x0'));var uuid=require('uuid');var moment=require(_0xb3ce('0x1'));var md5=require(_0xb3ce('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0xb3ce('0x3'))(_0xb3ce('0x4'));var loggerAction=require('../../../config/logger')(_0xb3ce('0x5'));var ami=require('../ami');var rpcDb=require(_0xb3ce('0x6'));var Action=require(_0xb3ce('0x7'));var ut=require(_0xb3ce('0x8'));config['redis']=_[_0xb3ce('0x9')](config['redis'],{'host':_0xb3ce('0xa'),'port':0x18eb});var io=require(_0xb3ce('0xb'))(new Redis(config[_0xb3ce('0xc')]));var Sequence=function(){};Sequence[_0xb3ce('0xd')]['enqueue']=function(_0xcd1fa1){this[_0xb3ce('0xe')]=this['tail']?this[_0xb3ce('0xe')][_0xb3ce('0xf')](_0xcd1fa1):_0xcd1fa1();};function Preview(_0x4b1364){this['sequence']=new Sequence();this['campaignsPreview']=_0x4b1364[_0xb3ce('0x10')];this[_0xb3ce('0x11')]=_0x4b1364[_0xb3ce('0x11')];this[_0xb3ce('0x12')]={};this['agents']=_0x4b1364[_0xb3ce('0x13')];this[_0xb3ce('0x14')]=0x0;ami['on'](_0xb3ce('0x15'),this[_0xb3ce('0x16')][_0xb3ce('0x17')](this));ami['on'](_0xb3ce('0x18'),this[_0xb3ce('0x19')]['bind'](this));ami['on'](_0xb3ce('0x1a'),this[_0xb3ce('0x1b')]['bind'](this));ami['on'](_0xb3ce('0x1c'),this[_0xb3ce('0x1d')][_0xb3ce('0x17')](this));ami['on'](_0xb3ce('0x1e'),this[_0xb3ce('0x1f')][_0xb3ce('0x17')](this));ami['on'](_0xb3ce('0x20'),this[_0xb3ce('0x21')][_0xb3ce('0x17')](this));ami['on'](_0xb3ce('0x22'),this[_0xb3ce('0x23')][_0xb3ce('0x17')](this));ami['on'](_0xb3ce('0x24'),this[_0xb3ce('0x25')][_0xb3ce('0x17')](this));this[_0xb3ce('0x26')](this[_0xb3ce('0x27')]);}function emit(_0x331609,_0x5e9321,_0x51ccc2){io['to'](_0x331609)[_0xb3ce('0x28')](_0x5e9321,_0x51ccc2);}function emitCampaignPreview(_0xe60759){if(_0xe60759['type']==='outbound'){var _0x43c882={'id':_0xe60759['id'],'name':_0xe60759[_0xb3ce('0x29')],'strategy':_0xe60759[_0xb3ce('0x2a')],'answered':_0xe60759[_0xb3ce('0x2b')],'available':_0xe60759[_0xb3ce('0x2c')],'loggedIn':_0xe60759[_0xb3ce('0x2d')],'pTalking':_0xe60759[_0xb3ce('0x2e')],'sumBillable':_0xe60759[_0xb3ce('0x2f')],'sumDuration':_0xe60759['sumDuration'],'sumHoldTime':_0xe60759[_0xb3ce('0x30')]||0x0,'talking':_0xe60759[_0xb3ce('0x31')],'total':_0xe60759[_0xb3ce('0x32')],'type':_0xe60759[_0xb3ce('0x33')],'unmanaged':_0xe60759['unmanaged'],'abandoned':_0xe60759[_0xb3ce('0x34')],'waiting':_0xe60759[_0xb3ce('0x35')],'loggedInDb':_0xe60759[_0xb3ce('0x36')],'dialActive':_0xe60759['dialActive'],'dialMethod':_0xe60759[_0xb3ce('0x37')],'dialOriginateCallerIdName':_0xe60759[_0xb3ce('0x38')],'dialOriginateCallerIdNumber':_0xe60759[_0xb3ce('0x39')],'dialOriginateTimeout':_0xe60759[_0xb3ce('0x3a')],'dialPrefix':_0xe60759[_0xb3ce('0x3b')],'outboundAnswerAgiCallsDay':_0xe60759[_0xb3ce('0x3c')],'outboundAnswerCallsDay':_0xe60759[_0xb3ce('0x3d')],'outboundBlacklistCallsDay':_0xe60759[_0xb3ce('0x3e')],'outboundBusyCallsDay':_0xe60759[_0xb3ce('0x3f')],'outboundCongestionCallsDay':_0xe60759['outboundCongestionCallsDay'],'outboundDropCallsDayACS':_0xe60759[_0xb3ce('0x40')],'outboundDropCallsDayCallersExit':_0xe60759[_0xb3ce('0x41')],'outboundDropCallsDayTimeout':_0xe60759[_0xb3ce('0x42')],'outboundNoAnswerCallsDay':_0xe60759[_0xb3ce('0x43')],'outboundNoSuchCallsDay':_0xe60759[_0xb3ce('0x44')],'outboundOriginateFailureCallsDay':_0xe60759[_0xb3ce('0x45')],'outboundReCallsDay':_0xe60759[_0xb3ce('0x46')],'outboundRejectCallsDay':_0xe60759['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0xe60759[_0xb3ce('0x47')],'outboundAbandonedCallsDay':_0xe60759[_0xb3ce('0x48')],'predictiveIntervalAnsweredCalls':_0xe60759[_0xb3ce('0x49')],'predictiveIntervalAvgHoldtime':_0xe60759[_0xb3ce('0x4a')],'predictiveIntervalAvgTalktime':_0xe60759[_0xb3ce('0x4b')],'predictiveIntervalDroppedCallsCallersExit':_0xe60759[_0xb3ce('0x4c')],'predictiveIntervalDroppedCallsTimeout':_0xe60759[_0xb3ce('0x4d')],'predictiveIntervalErlangCalls':_0xe60759['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0xe60759[_0xb3ce('0x4e')],'predictiveIntervalHitRate':_0xe60759[_0xb3ce('0x4f')],'predictiveIntervalMultiplicativeFactor':_0xe60759[_0xb3ce('0x50')],'predictiveIntervalPauses':_0xe60759[_0xb3ce('0x51')],'predictiveIntervalAvailable':_0xe60759['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0xe60759[_0xb3ce('0x52')],'message':_0xe60759[_0xb3ce('0x53')],'originated':_0xe60759[_0xb3ce('0x54')],'erlangCalls':_0xe60759[_0xb3ce('0x55')],'erlangCallToSecond':_0xe60759['erlangCallToSecond'],'erlangAbandonmentRate':_0xe60759['erlangAbandonmentRate'],'erlangBusyFactor':_0xe60759['erlangBusyFactor'],'startPredictive':_0xe60759[_0xb3ce('0x56')],'startProgressive':_0xe60759[_0xb3ce('0x57')]};if(_0xe60759['Trunk']){_0x43c882['Trunk']={'id':_0xe60759[_0xb3ce('0x58')]['id'],'name':_0xe60759['Trunk'][_0xb3ce('0x29')],'active':_0xe60759[_0xb3ce('0x58')]['active'],'callerid':_0xe60759['Trunk'][_0xb3ce('0x59')]};}if(_0xe60759[_0xb3ce('0x5a')]){_0x43c882['Interval']={'id':_0xe60759['Interval']['id'],'name':_0xe60759['Interval'][_0xb3ce('0x29')]};}var _0x2d2375=md5(JSON[_0xb3ce('0x5b')](_0x43c882));if(_0xe60759[_0xb3ce('0x2')]!==_0x2d2375){_0xe60759[_0xb3ce('0x2')]=_0x2d2375;emit(util[_0xb3ce('0x5c')](_0xb3ce('0x5d'),_0x43c882[_0xb3ce('0x29')]),_0xb3ce('0x5e'),_0x43c882);}}}function emitVoiceQueueChannelRemove(_0x2f570c){logger['info'](_0xb3ce('0x5f'),JSON['stringify'](_0x2f570c));emit(util[_0xb3ce('0x5c')]('voice:queue:%s',_0x2f570c[_0xb3ce('0x29')]),_0xb3ce('0x60'),_0x2f570c);io[_0xb3ce('0x28')](_0xb3ce('0x61'),_0x2f570c);}function notSendMessagesQueue(_0x4b13ee){if(_0x4b13ee[_0xb3ce('0x62')]){if(_0x4b13ee[_0xb3ce('0x54')]===0x0&&_0x4b13ee['pTalking']===0x0){_0x4b13ee['sendMessageOneNotActive']=![];_0x4b13ee[_0xb3ce('0x2c')]=0x0;_0x4b13ee['paused']=0x0;_0x4b13ee[_0xb3ce('0x53')]=_0xb3ce('0x63');ut['logger']('[CampaignPreview]\x20Campaign\x20Queue:\x20',_0x4b13ee[_0xb3ce('0x29')]+_0xb3ce('0x64'));}else{_0x4b13ee[_0xb3ce('0x53')]=_0xb3ce('0x65');ut[_0xb3ce('0x66')](_0xb3ce('0x67'),_0x4b13ee[_0xb3ce('0x29')]+_0xb3ce('0x68'));}emitCampaignPreview(_0x4b13ee);}}Preview[_0xb3ce('0xd')]['loopCampaigns']=function(){var _0x515e09=this;setInterval(function(){_0x515e09['syncCampaigns']();},0x7cf);};Preview[_0xb3ce('0xd')][_0xb3ce('0x69')]=function(){var _0x535359=this['campaignsPreview'];this[_0xb3ce('0x14')]+=0x1;for(var _0x33a3cb in _0x535359){if(_0x535359[_0xb3ce('0x6a')](_0x33a3cb)&&(_0x535359[_0x33a3cb]['dialMethod']===_0xb3ce('0x4')||_0x535359[_0x33a3cb][_0xb3ce('0x37')]===_0xb3ce('0x6b'))&&_0x535359[_0x33a3cb][_0xb3ce('0x33')]===_0xb3ce('0x6c')){if(this[_0xb3ce('0x14')]>0x7){this[_0xb3ce('0x14')]=0x0;this[_0xb3ce('0x6d')]();}}if(_0x535359['hasOwnProperty'](_0x33a3cb)&&_0x535359[_0x33a3cb]['dialMethod']===_0xb3ce('0x4')&&_0x535359[_0x33a3cb][_0xb3ce('0x33')]===_0xb3ce('0x6c')){if(_0x535359[_0x33a3cb]['dialActive']){this[_0xb3ce('0x6e')](_0x535359[_0x33a3cb]);this[_0xb3ce('0x6f')](_0x535359[_0x33a3cb]);}else{notSendMessagesQueue(_0x535359[_0x33a3cb]);}}}};Preview[_0xb3ce('0xd')][_0xb3ce('0x70')]=function(_0x74962){var _0xbecf0c=this;this['sequence'][_0xb3ce('0x71')](function(){if(!_['isNil'](_0xbecf0c[_0xb3ce('0x12')][_0x74962])){loggerAction[_0xb3ce('0x72')]('[clearZombieChannels][talking]',_0x74962,_0xb3ce('0x73'),_0xbecf0c[_0xb3ce('0x12')][_0x74962][_0xb3ce('0x74')],_0xb3ce('0x75'),JSON['stringify'](_0xbecf0c[_0xb3ce('0x27')][_0xbecf0c['actions'][_0x74962][_0xb3ce('0x74')]][_0xb3ce('0x54')]),_0xb3ce('0x76'),JSON[_0xb3ce('0x5b')](_0xbecf0c[_0xb3ce('0x27')][_0xbecf0c[_0xb3ce('0x12')][_0x74962][_0xb3ce('0x74')]][_0xb3ce('0x2e')]),JSON[_0xb3ce('0x5b')](_0xbecf0c['actions'][_0x74962][_0xb3ce('0x77')]),JSON[_0xb3ce('0x5b')](_[_0xb3ce('0x78')](_0xbecf0c[_0xb3ce('0x12')][_0x74962],[_0xb3ce('0x79'),_0xb3ce('0x7a'),_0xb3ce('0x7b'),_0xb3ce('0x7c')])));return ami[_0xb3ce('0x7d')]({'action':_0xb3ce('0x7e'),'channel':_0xbecf0c['actions'][_0x74962]['channel']})['catch'](function(_0xfdc4d){if(_0xfdc4d[_0xb3ce('0x53')]===_0xb3ce('0x7f')){setTimeout(function(){if(_0xbecf0c['actions'][_0x74962]){ut['updateOriginated'](_0xbecf0c[_0xb3ce('0x27')][_0xbecf0c[_0xb3ce('0x12')][_0x74962][_0xb3ce('0x74')]],_0xb3ce('0x80'));if(_0xbecf0c[_0xb3ce('0x12')][_0x74962][_0xb3ce('0x77')]===!![]){ut[_0xb3ce('0x81')](_0xbecf0c['campaignsPreview'][_0xbecf0c[_0xb3ce('0x12')][_0x74962]['queue']],_0xb3ce('0x80'));ut[_0xb3ce('0x82')](_0xb3ce('0x83')+_0x74962,_0xbecf0c[_0xb3ce('0x12')][_0x74962][_0xb3ce('0x74')]);}ut['loggerError']('[Dialer][checkChannel][Preview]'+_0x74962,_0xbecf0c[_0xb3ce('0x12')][_0x74962]['queue']);delete _0xbecf0c[_0xb3ce('0x12')][_0x74962];}},0x2328);}});}});};Preview[_0xb3ce('0xd')][_0xb3ce('0x6d')]=function(){var _0x318cd5=this;loggerAction['info'](_0xb3ce('0x84'),_[_0xb3ce('0x85')](this[_0xb3ce('0x12')]));for(var _0x5d8ba4 in this[_0xb3ce('0x12')]){if(_0x318cd5[_0xb3ce('0x12')][_0xb3ce('0x6a')](_0x5d8ba4)){_0x318cd5['clearZombieChannel'](_0x5d8ba4);}}};Preview['prototype'][_0xb3ce('0x6f')]=function(_0x3f88d5){var _0x19a531=this;rpcDb[_0xb3ce('0x86')](_0x3f88d5['id'],ut[_0xb3ce('0x87')](this[_0xb3ce('0x13')]))[_0xb3ce('0x88')](function(_0x2f8bcc){if(!_[_0xb3ce('0x89')](_0x2f8bcc)){for(var _0x1e65a7=0x0;_0x1e65a7<_0x2f8bcc[_0xb3ce('0x8a')];_0x1e65a7+=0x1){if(ut[_0xb3ce('0x8b')](_0x2f8bcc[_0x1e65a7][_0xb3ce('0x8c')])<_0x3f88d5[_0xb3ce('0x8d')]*0x3c){if(_0x2f8bcc[_0x1e65a7][_0xb3ce('0x8e')]&&!_0x2f8bcc[_0x1e65a7][_0xb3ce('0x8e')][_0xb3ce('0x8f')]){_0x19a531[_0xb3ce('0x90')](_0x2f8bcc[_0x1e65a7]['id'])['then'](ut[_0xb3ce('0x91')](_0xb3ce('0x92')))['catch'](ut[_0xb3ce('0x91')](_0xb3ce('0x92')));}else{rpcDb[_0xb3ce('0x93')](_0x2f8bcc[_0x1e65a7]['id']);}}else{var _0x25d66c=new Action(_0x2f8bcc[_0x1e65a7],_0x3f88d5);_0x25d66c['starttime']=moment()[_0xb3ce('0x5c')](_0xb3ce('0x94'));_0x3f88d5['outboundReCallsDay']+=0x1;ut[_0xb3ce('0x95')](_0x25d66c,0x17,_0xb3ce('0x96'));if(_0x3f88d5['dialRecallInQueue']){rpcDb['rescheduleContactInQueue'](ut['createBody'](_0x2f8bcc[_0x1e65a7]));rpcDb['createCustomerHistory'](_0x25d66c,_0xb3ce('0x97'));}else{ut['logCustomer'](_0x25d66c,0x16,_0xb3ce('0x98'));rpcDb['createCustomerHistory'](_0x25d66c,_0xb3ce('0x99'));rpcDb[_0xb3ce('0x9a')](_0x25d66c,_0xb3ce('0x99'));}}}}})[_0xb3ce('0x9b')](ut[_0xb3ce('0x91')](_0xb3ce('0x9c')));};Preview[_0xb3ce('0xd')][_0xb3ce('0x6e')]=function(_0x719b7e){_0x719b7e[_0xb3ce('0x62')]=!![];if(ut['IsNotLoggedIn'](_0x719b7e['loggedIn'])){_0x719b7e['message']='AGENTS_NOT_LOGGED';}else if(!ut['isActive'](_0x719b7e['dialActive'])){_0x719b7e[_0xb3ce('0x53')]=_0xb3ce('0x63');}else if(!this[_0xb3ce('0x9d')](_0x719b7e[_0xb3ce('0x58')])){if(!this[_0xb3ce('0x9d')](_0x719b7e[_0xb3ce('0x9e')])){_0x719b7e[_0xb3ce('0x53')]=_0xb3ce('0x9f');}else{_0x719b7e[_0xb3ce('0x53')]='ACTIVE';}}else{_0x719b7e[_0xb3ce('0x53')]=_0xb3ce('0xa0');}emitCampaignPreview(_0x719b7e);};Preview[_0xb3ce('0xd')]['callProgressDetectingCustomer']=function(_0x2e8331,_0x2bce73,_0x1164bc){var _0x5ca3ca=this;var _0x2fc8c9=this[_0xb3ce('0x12')][_0x2bce73];var _0x2a4b2f=this[_0xb3ce('0x27')][_0x2fc8c9['queue']];var _0x3db61a;if(_0x2a4b2f){switch(_0x1164bc){case'1':_0x2a4b2f[_0xb3ce('0x44')]+=0x1;_0x2fc8c9['countnosuchnumberretry']+=0x1;_0x2fc8c9[_0xb3ce('0xa1')]=ut[_0xb3ce('0xa2')](_0x2fc8c9);ut[_0xb3ce('0x95')](_0x2fc8c9,0x0,_0xb3ce('0xa3'));ami[_0xb3ce('0x28')]('custom:agentnosuchnumber',ut['buildObj'](_0x2fc8c9,_0xb3ce('0xa4')));rpcDb[_0xb3ce('0xa5')](_0x2fc8c9,'[callProgressDetectingCustomer][logNoSuch]');if(ut[_0xb3ce('0xa2')](_0x2fc8c9)>=_0x2a4b2f[_0xb3ce('0xa6')]){_0x3db61a=ut['cloneAction'](_0x2fc8c9,0xf,_0xb3ce('0xa7'));rpcDb[_0xb3ce('0x9a')](_0x3db61a,_0xb3ce('0xa8'));}else{if(_0x2fc8c9['countnosuchnumberretry']>=_0x2a4b2f[_0xb3ce('0xa9')]){rpcDb[_0xb3ce('0x9a')](_0x2fc8c9,_0xb3ce('0xa8'));}else{rpcDb[_0xb3ce('0xaa')](ut[_0xb3ce('0xab')](_0x2fc8c9,'countnosuchnumberretry',_0x2a4b2f[_0xb3ce('0xac')]),_0x2fc8c9[_0xb3ce('0xad')],_0x2fc8c9[_0xb3ce('0xae')]);}}delete this[_0xb3ce('0x12')][_0x2e8331[_0xb3ce('0xaf')]];break;case'ANSWER':var _0x5151ce=moment()[_0xb3ce('0x5c')](_0xb3ce('0x94'));_0x2fc8c9[_0xb3ce('0xb0')]=_0x5151ce;_0x2fc8c9[_0xb3ce('0xb1')]=_0x5151ce;_0x2fc8c9[_0xb3ce('0x77')]=!![];_0x2a4b2f[_0xb3ce('0x2e')]+=0x1;logger[_0xb3ce('0x72')]('[syncHangup][talking][increment]',_0x2fc8c9['uniqueid'],_0xb3ce('0xb2'),_0x2a4b2f[_0xb3ce('0x29')],_0xb3ce('0x76'),_0x2a4b2f['pTalking']);ami[_0xb3ce('0x28')]('custom:agentconnect',ut[_0xb3ce('0xb3')](_0x2fc8c9,_0xb3ce('0xb4'),this['campaignsPreview'][_0x2fc8c9[_0xb3ce('0x74')]]));if(_0x2a4b2f[_0xb3ce('0xb5')]){ami[_0xb3ce('0x28')]('custom:agentConnectPreview',ut[_0xb3ce('0xb6')](_0x2fc8c9));}break;case'16':ami[_0xb3ce('0x28')](_0xb3ce('0xb7'),ut[_0xb3ce('0xb3')](_0x2fc8c9,_0xb3ce('0xb8'),this[_0xb3ce('0x27')][_0x2fc8c9[_0xb3ce('0x74')]]));emitVoiceQueueChannelRemove(ut[_0xb3ce('0xb3')](_0x2fc8c9,'complete'));_0x2a4b2f[_0xb3ce('0x3d')]+=0x1;_0x2a4b2f['total']+=0x1;_0x2a4b2f[_0xb3ce('0x2b')]+=0x1;ut['decrementTalkink'](_0x2a4b2f,_0xb3ce('0xb9'));_0x2fc8c9[_0xb3ce('0xa1')]=ut[_0xb3ce('0xa2')](_0x2fc8c9);ut['logCustomer'](_0x2fc8c9,0x4,_0xb3ce('0xba'));rpcDb[_0xb3ce('0xa5')](_0x2fc8c9,_0xb3ce('0xbb'));rpcDb['createCustomerFinal'](_0x2fc8c9,_0xb3ce('0xbc'));rpcDb[_0xb3ce('0xbd')](_0x2fc8c9);_0x2a4b2f[_0xb3ce('0xbe')]+=_0x2fc8c9[_0xb3ce('0xbf')];_0x2a4b2f[_0xb3ce('0x2f')]+=_0x2fc8c9[_0xb3ce('0xbf')];logger[_0xb3ce('0x72')](_0xb3ce('0xc0'),_0x2fc8c9['uniqueid'],'\x20Queue',_0x2a4b2f[_0xb3ce('0x29')],_0xb3ce('0x76'),_0x2a4b2f['pTalking']);delete this[_0xb3ce('0x12')][_0x2e8331[_0xb3ce('0xaf')]];break;case'BUSY':_0x2a4b2f[_0xb3ce('0x3f')]+=0x1;_0x2fc8c9['countbusyretry']+=0x1;_0x2fc8c9[_0xb3ce('0xa1')]=ut['totalGlobal'](_0x2fc8c9);ut['logCustomer'](_0x2fc8c9,0x5,_0xb3ce('0xc1'));ami['emit'](_0xb3ce('0xc2'),ut[_0xb3ce('0xb3')](_0x2fc8c9,'busy'));rpcDb['createCustomerHistory'](_0x2fc8c9,_0xb3ce('0xc3'));if(ut[_0xb3ce('0xa2')](_0x2fc8c9)>=_0x2a4b2f[_0xb3ce('0xa6')]){_0x3db61a=ut['cloneAction'](_0x2fc8c9,0xf,_0xb3ce('0xa7'));rpcDb[_0xb3ce('0x9a')](_0x3db61a,_0xb3ce('0xc4'));}else{if(_0x2fc8c9[_0xb3ce('0xc5')]>=_0x2a4b2f['dialBusyMaxRetry']){rpcDb[_0xb3ce('0x9a')](_0x2fc8c9,_0xb3ce('0xc3'));}else{rpcDb[_0xb3ce('0xaa')](ut['scheduledAt'](_0x2fc8c9,'countbusyretry',_0x2a4b2f[_0xb3ce('0xc6')]),_0x2fc8c9[_0xb3ce('0xad')],_0x2fc8c9['activeContact']);}}break;case _0xb3ce('0xc7'):_0x2a4b2f[_0xb3ce('0x43')]+=0x1;_0x2fc8c9[_0xb3ce('0xc8')]+=0x1;_0x2fc8c9['countglobal']=ut[_0xb3ce('0xa2')](_0x2fc8c9);ut[_0xb3ce('0x95')](_0x2fc8c9,0x3,'NoAnswer');ami[_0xb3ce('0x28')](_0xb3ce('0xc9'),ut['buildObj'](_0x2fc8c9,_0xb3ce('0xca')));rpcDb[_0xb3ce('0xa5')](_0x2fc8c9,_0xb3ce('0xcb'));if(ut[_0xb3ce('0xa2')](_0x2fc8c9)>=_0x2a4b2f[_0xb3ce('0xa6')]){_0x3db61a=ut[_0xb3ce('0xcc')](_0x2fc8c9,0xf,_0xb3ce('0xa7'));rpcDb[_0xb3ce('0x9a')](_0x3db61a,'[callProgressDetectingCustomer][logNoAnswerGlobal]');}else{if(_0x2fc8c9['countnoanswerretry']>=_0x2a4b2f[_0xb3ce('0xcd')]){rpcDb[_0xb3ce('0x9a')](_0x2fc8c9,_0xb3ce('0xcb'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x2fc8c9,_0xb3ce('0xc8'),_0x2a4b2f[_0xb3ce('0xce')]),_0x2fc8c9[_0xb3ce('0xad')],_0x2fc8c9['activeContact']);}}break;case _0xb3ce('0xcf'):_0x2a4b2f['outboundCongestionCallsDay']+=0x1;_0x2fc8c9['countcongestionretry']+=0x1;_0x2fc8c9['countglobal']=ut[_0xb3ce('0xa2')](_0x2fc8c9);ut[_0xb3ce('0x95')](_0x2fc8c9,0x8,_0xb3ce('0xd0'));ami['emit']('custom:agentcongestion',ut[_0xb3ce('0xb3')](_0x2fc8c9,_0xb3ce('0xd1')));rpcDb[_0xb3ce('0xa5')](_0x2fc8c9,_0xb3ce('0xd2'));if(ut['totalGlobal'](_0x2fc8c9)>=_0x2a4b2f[_0xb3ce('0xa6')]){_0x3db61a=ut[_0xb3ce('0xcc')](_0x2fc8c9,0xf,_0xb3ce('0xa7'));rpcDb['createCustomerFinal'](_0x3db61a,'[callProgressDetectingCustomer][logCongestionGlobal]');}else{if(_0x2fc8c9[_0xb3ce('0xd3')]>=_0x2a4b2f['dialCongestionMaxRetry']){rpcDb[_0xb3ce('0x9a')](_0x2fc8c9,_0xb3ce('0xd2'));}else{rpcDb[_0xb3ce('0xaa')](ut[_0xb3ce('0xab')](_0x2fc8c9,_0xb3ce('0xd3'),_0x2a4b2f[_0xb3ce('0xc6')]),_0x2fc8c9[_0xb3ce('0xad')],_0x2fc8c9['activeContact']);}}break;case _0xb3ce('0xd4'):_0x2a4b2f[_0xb3ce('0xd5')]+=0x1;_0x2fc8c9[_0xb3ce('0xd6')]+=0x1;_0x2fc8c9['countglobal']=ut[_0xb3ce('0xa2')](_0x2fc8c9);ut[_0xb3ce('0x95')](_0x2fc8c9,0x14,_0xb3ce('0xd7'));ami[_0xb3ce('0x28')](_0xb3ce('0xd8'),ut[_0xb3ce('0xb3')](_0x2fc8c9,_0xb3ce('0xd9')));rpcDb[_0xb3ce('0xa5')](_0x2fc8c9,_0xb3ce('0xda'));if(ut[_0xb3ce('0xa2')](_0x2fc8c9)>=_0x2a4b2f[_0xb3ce('0xa6')]){_0x3db61a=ut[_0xb3ce('0xcc')](_0x2fc8c9,0x14,'AgentReject');rpcDb[_0xb3ce('0x9a')](_0x3db61a,_0xb3ce('0xdb'));}else{if(_0x2fc8c9[_0xb3ce('0xd6')]>=_0x2a4b2f['dialAgentRejectMaxRetry']){rpcDb['createCustomerFinal'](_0x2fc8c9,_0xb3ce('0xdb'));}else{rpcDb['rescheduleContact'](ut[_0xb3ce('0xab')](_0x2fc8c9,_0xb3ce('0xd6'),_0x2a4b2f[_0xb3ce('0xdc')]),_0x2fc8c9[_0xb3ce('0xad')],_0x2fc8c9[_0xb3ce('0xae')]);}}break;case _0xb3ce('0xdd'):_0x2a4b2f['outboundAbandonedCallsDay']+=0x1;_0x2fc8c9['countabandonedretry']+=0x1;_0x2fc8c9['countglobal']=ut[_0xb3ce('0xa2')](_0x2fc8c9);ut['logCustomer'](_0x2fc8c9,0xb,'Abandoned');rpcDb[_0xb3ce('0xa5')](_0x2fc8c9,_0xb3ce('0xde'));if(ut[_0xb3ce('0xa2')](_0x2fc8c9)>=_0x2a4b2f['dialGlobalMaxRetry']){_0x3db61a=ut[_0xb3ce('0xcc')](_0x2fc8c9,0xf,_0xb3ce('0xa7'));rpcDb[_0xb3ce('0x9a')](_0x3db61a,_0xb3ce('0xde'));}else{if(_0x2fc8c9[_0xb3ce('0xdf')]>=_0x2a4b2f[_0xb3ce('0xe0')]){rpcDb[_0xb3ce('0x9a')](_0x2fc8c9,_0xb3ce('0xde'));}else{rpcDb[_0xb3ce('0xaa')](ut[_0xb3ce('0xab')](_0x2fc8c9,_0xb3ce('0xe1'),_0x2a4b2f['dialAbandonedRetryFrequency']),_0x2fc8c9[_0xb3ce('0xad')],_0x2fc8c9[_0xb3ce('0xae')]);}}break;case'18':_0x2a4b2f[_0xb3ce('0x47')]+=0x1;_0x2fc8c9['countmachineretry']+=0x1;_0x2fc8c9[_0xb3ce('0xa1')]=ut['totalGlobal'](_0x2fc8c9);ut[_0xb3ce('0x95')](_0x2fc8c9,0x12,_0x2e8331[_0xb3ce('0xe2')]||_0x2e8331[_0xb3ce('0xe3')]);ami[_0xb3ce('0x28')](_0xb3ce('0xe4'),ut['buildObj'](_0x2fc8c9,'amd'));rpcDb['createCustomerHistory'](_0x2fc8c9,_0xb3ce('0xe5'));if(ut['totalGlobal'](_0x2fc8c9)>=_0x2a4b2f['dialGlobalMaxRetry']){_0x3db61a=ut[_0xb3ce('0xcc')](_0x2fc8c9,0xf,_0xb3ce('0xa7'));rpcDb[_0xb3ce('0x9a')](_0x3db61a,_0xb3ce('0xe5'));}else{rpcDb['createCustomerFinal'](_0x2fc8c9,_0xb3ce('0xe5'));}delete this[_0xb3ce('0x12')][_0x2e8331['linkedid']];break;case'19':_0x2a4b2f['outboundUnknownCallsDay']+=0x1;_0x2fc8c9[_0xb3ce('0xa1')]=ut['totalGlobal'](_0x2fc8c9);ut[_0xb3ce('0x95')](_0x2fc8c9,0x13,_0x2e8331['cause-txt']||_0x2e8331[_0xb3ce('0xe3')]);ami['emit'](_0xb3ce('0xe4'),ut[_0xb3ce('0xb3')](_0x2fc8c9,'amd'));rpcDb[_0xb3ce('0xa5')](_0x2fc8c9,_0xb3ce('0xe6'));if(ut['totalGlobal'](_0x2fc8c9)>=_0x2a4b2f['dialGlobalMaxRetry']){_0x3db61a=ut[_0xb3ce('0xcc')](_0x2fc8c9,0xf,_0xb3ce('0xa7'));rpcDb[_0xb3ce('0x9a')](_0x3db61a,'[callProgressDetectingCustomer][machine]');}else{rpcDb['createCustomerFinal'](_0x2fc8c9,_0xb3ce('0xe6'));}delete this[_0xb3ce('0x12')][_0x2e8331[_0xb3ce('0xaf')]];break;default:if(_0x2fc8c9[_0xb3ce('0x77')]){ut['decrementTalkink'](_0x2a4b2f,'[default]');ut[_0xb3ce('0x82')](_0xb3ce('0xe7')+_0x2a4b2f[_0xb3ce('0x29')],_0x2e8331);}_0x2a4b2f[_0xb3ce('0x47')]+=0x1;_0x2fc8c9[_0xb3ce('0xa1')]=ut[_0xb3ce('0xa2')](_0x2fc8c9);ut[_0xb3ce('0x95')](_0x2fc8c9,0xc,_0x2e8331['cause-txt']||_0x2e8331[_0xb3ce('0xe3')]);rpcDb[_0xb3ce('0xa5')](_0x2fc8c9,_0xb3ce('0xe8'));if(ut[_0xb3ce('0xa2')](_0x2fc8c9)>=_0x2a4b2f['dialGlobalMaxRetry']){_0x3db61a=ut[_0xb3ce('0xcc')](_0x2fc8c9,0xf,_0xb3ce('0xa7'));rpcDb['createCustomerFinal'](_0x3db61a,_0xb3ce('0xe9'));}else{rpcDb[_0xb3ce('0x9a')](_0x2fc8c9,_0xb3ce('0xe9'));}delete this[_0xb3ce('0x12')][_0x2e8331['linkedid']];}if(!(_0x2fc8c9[_0xb3ce('0x77')]&&_0x1164bc==='16')){ut[_0xb3ce('0xea')](_0x2a4b2f,_0xb3ce('0xeb'));logger[_0xb3ce('0x72')](_0xb3ce('0xec'),_0x2fc8c9[_0xb3ce('0xed')],_0xb3ce('0xb2'),_0x2a4b2f['name'],'originated:\x20',_0x2a4b2f[_0xb3ce('0x54')]);}if(_0x1164bc!==_0xb3ce('0xee')){delete this[_0xb3ce('0x12')][_0x2e8331[_0xb3ce('0xaf')]];delete this[_0xb3ce('0x12')][_0x2e8331[_0xb3ce('0xef')]];}}};Preview[_0xb3ce('0xd')]['callProgressDetectingAgent']=function(_0x57f9a8,_0x40a7bf,_0x243dec){if(_[_0xb3ce('0xf0')](_0x40a7bf)&&'object'!==typeof _0x40a7bf){return;}if(_['isUndefined'](_0x243dec)&&_0xb3ce('0xf1')!==typeof _0x243dec){return;}switch(_0x243dec[_0xb3ce('0xf2')]){case'0':ut['logAgent'](_0x57f9a8,0x0,'NoSuchNumber');rpcDb[_0xb3ce('0xf3')](_0x57f9a8,_0xb3ce('0xf4'));break;case'3':ut[_0xb3ce('0xf5')](_0x57f9a8,0x3,'NoAnswer');rpcDb['createAgentHistory'](_0x57f9a8,'[callProgressDetectingAgent][logNoAnswer]');break;case'5':ut[_0xb3ce('0xf5')](_0x57f9a8,0x5,_0xb3ce('0xc1'));rpcDb['createAgentHistory'](_0x57f9a8,_0xb3ce('0xf6'));break;case'8':ut[_0xb3ce('0xf5')](_0x57f9a8,0x8,_0xb3ce('0xd0'));rpcDb[_0xb3ce('0xf3')](_0x57f9a8,_0xb3ce('0xf7'));break;case'22':ut[_0xb3ce('0xf5')](_0x57f9a8,0x16,'AnswerAGI');rpcDb[_0xb3ce('0xf3')](_0x57f9a8,_0xb3ce('0xf8'));break;default:ut['logAgent'](_0x57f9a8,0xc,_0x243dec[_0xb3ce('0xf2')]);rpcDb[_0xb3ce('0xf3')](_0x57f9a8,'[callProgressDetectingAgent][logCongestion]');}ut[_0xb3ce('0xea')](_0x40a7bf,'[callProgressDetectingAgent]');logger[_0xb3ce('0x72')](_0xb3ce('0xf9'),_0x57f9a8['uniqueid'],_0xb3ce('0xb2'),_0x40a7bf[_0xb3ce('0x29')],_0xb3ce('0x75'),_0x40a7bf[_0xb3ce('0x54')]);delete this[_0xb3ce('0x12')][_0x57f9a8[_0xb3ce('0xed')]];};Preview['prototype'][_0xb3ce('0xfa')]=function(_0x22e8a5,_0xbcb22a,_0x258cdd,_0x3a2dca,_0x4e3c7e){var _0x43fa84=this;return new BPromise(function(_0x58d0ac,_0x4cf77d){if(_[_0xb3ce('0x89')](_0xbcb22a)||_[_0xb3ce('0x89')](_0xbcb22a[_0xb3ce('0xfb')])||_[_0xb3ce('0x89')](_0xbcb22a['Contact'][_0xb3ce('0xfc')])||_['isNil'](_0xbcb22a[_0xb3ce('0x7b')])){_0x4cf77d(ut['message'](_0xb3ce('0xfd'),_0x3a2dca,_0x4e3c7e));return;}var _0x504e4e=uuid['v4']();var _0xe78b04=_0x43fa84[_0xb3ce('0x27')][_0xbcb22a['Queue']['name']];var _0x162d4b=_0x258cdd?_0x43fa84['agents'][_0x258cdd]['id']:undefined;_0x43fa84['actions'][_0x504e4e]=new Action(_0xbcb22a,_0xe78b04,_0x504e4e,_0x258cdd,_0x162d4b);var _0x342552=_0x43fa84[_0xb3ce('0x12')][_0x504e4e];_0x342552[_0xb3ce('0xad')]=_0x3a2dca;_0x342552[_0xb3ce('0xae')]=_0x4e3c7e;_0x342552['lookAgent']=_0x258cdd;if(_[_0xb3ce('0xfe')](_0x22e8a5)){_0x43fa84[_0xb3ce('0xff')](_0x342552,_0xe78b04,_0xbcb22a,_0x258cdd)[_0xb3ce('0x88')](function(_0x3e65b5){logger[_0xb3ce('0x72')]('[Preview][execCall][success]',_0xb3ce('0x100')+_0x342552[_0xb3ce('0x74')]+_0xb3ce('0x101')+_0x342552[_0xb3ce('0x102')],JSON['stringify'](_0x3e65b5));ami[_0xb3ce('0x28')](_0xb3ce('0x103'),ut[_0xb3ce('0xb3')](_0x342552,_0xb3ce('0x104'),_0x43fa84['campaignsPreview'][_0x342552[_0xb3ce('0x74')]]));_0x58d0ac(ut['message'](_0xb3ce('0x105')));})['catch'](function(_0x288b97){ut[_0xb3ce('0x66')](_0xb3ce('0x106'),_0x288b97);_0x4cf77d(ut['message'](_0xb3ce('0x107'),_0x3a2dca,_0x4e3c7e));});}else{_0xe78b04['outboundBlacklistCallsDay']+=0x1;ut[_0xb3ce('0x108')](_0x342552);rpcDb[_0xb3ce('0x109')](_0x342552,'[Blacklist][error]');delete _0x43fa84[_0xb3ce('0x12')][_0x504e4e];_0x4cf77d(ut['message'](_0xb3ce('0x10a'),_0x3a2dca,_0x4e3c7e));}});};Preview['prototype']['isTrunkReachable']=function(_0x3c3a82){return!_[_0xb3ce('0x89')](_0x3c3a82)&&!_['isNil'](_0x3c3a82[_0xb3ce('0x29')])&&!_[_0xb3ce('0x89')](_0x3c3a82[_0xb3ce('0x10b')])&&_0x3c3a82[_0xb3ce('0x10b')]&&!_[_0xb3ce('0x89')](this['trunks'][util['format'](_0xb3ce('0x10c'),_0x3c3a82[_0xb3ce('0x29')])])&&!_[_0xb3ce('0x89')](this[_0xb3ce('0x11')][util[_0xb3ce('0x5c')](_0xb3ce('0x10c'),_0x3c3a82[_0xb3ce('0x29')])][_0xb3ce('0x7e')])&&(this[_0xb3ce('0x11')][util['format'](_0xb3ce('0x10c'),_0x3c3a82[_0xb3ce('0x29')])]['status']===_0xb3ce('0x10d')||this[_0xb3ce('0x11')][util[_0xb3ce('0x5c')](_0xb3ce('0x10c'),_0x3c3a82[_0xb3ce('0x29')])]['status']===_0xb3ce('0x10e'));};Preview[_0xb3ce('0xd')]['run']=function(_0x1c9326,_0x38b1ad){var _0x4657aa=this;return new BPromise(function(_0x15c2b9,_0x2c9e34){_0x4657aa['execRun'](_0x1c9326,_0x38b1ad)['then'](function(_0x506fae){_0x15c2b9(_['pick'](_0x506fae,[_0xb3ce('0x53')]));})[_0xb3ce('0x9b')](function(_0x36bd9c){if(_0x36bd9c[_0xb3ce('0x10f')]){rpcDb[_0xb3ce('0x110')](_0x1c9326);}if(_0x36bd9c[_0xb3ce('0x10b')]){rpcDb[_0xb3ce('0x93')](_0x1c9326);}_0x2c9e34(_['pick'](_0x36bd9c,[_0xb3ce('0x53')]));});});};Preview['prototype']['execRun']=function(_0x51014c,_0x10ef71){var _0x3cf934=this;return new BPromise(function(_0x2fd499,_0x59f58c){var _0x1efaef,_0x32d74a;rpcDb[_0xb3ce('0x111')](_0x51014c)['then'](function(_0x53e2e2){if(!_[_0xb3ce('0x89')](_0x53e2e2[0x0])){_0x32d74a=_0x53e2e2[0x0]['recallme']?![]:!![];_0x1efaef=_0x53e2e2[0x0]['recallme']?!![]:![];_0x1efaef=_0x10ef71?!![]:_0x1efaef;}var _0x230e8a=_0x3cf934['validateContact'](_0x53e2e2);if(_0x230e8a[_0xb3ce('0x112')]){rpcDb[_0xb3ce('0x113')](_[_0xb3ce('0x78')](_0x53e2e2[0x0],[_0xb3ce('0x7b'),'Contact.phone']))[_0xb3ce('0x88')](function(_0x15ec17){_0x3cf934['checkInBlack'](_0x15ec17,_0x53e2e2[0x0],_0x10ef71,_0x32d74a,_0x1efaef)[_0xb3ce('0x88')](function(_0x56ae7d){_0x2fd499(_0x56ae7d);})[_0xb3ce('0x9b')](function(_0x14fb18){_0x59f58c(_0x14fb18);});})[_0xb3ce('0x9b')](function(_0x3ac173){ut[_0xb3ce('0x66')](_0xb3ce('0x114'),_0x3ac173);_0x59f58c(ut[_0xb3ce('0x53')](_0xb3ce('0x115'),_0x32d74a,_0x1efaef));});}else{_0x59f58c(ut['message'](_0x230e8a[_0xb3ce('0x53')],_0x32d74a,_0x1efaef));}})[_0xb3ce('0x9b')](function(_0x6d0d69){ut[_0xb3ce('0x66')](_0xb3ce('0x116'),_0x6d0d69);_0x59f58c(ut[_0xb3ce('0x53')](_0xb3ce('0x115'),![],!![]));});});};Preview[_0xb3ce('0xd')][_0xb3ce('0x117')]=function(_0x485aaa){if(_[_0xb3ce('0x89')](_0x485aaa)||_[_0xb3ce('0xfe')](_0x485aaa)||!_[_0xb3ce('0x89')](_0x485aaa[0x0][_0xb3ce('0x8e')])&&_[_0xb3ce('0x89')](_0x485aaa[0x0]['Agent']['name'])){ut[_0xb3ce('0x66')](_0xb3ce('0x118'),_0x485aaa);return{'isValid':![],'message':_0xb3ce('0x119')};}var _0x2e5a22=this[_0xb3ce('0x27')][_0x485aaa[0x0][_0xb3ce('0x73')][_0xb3ce('0x29')]];_0x2e5a22[_0xb3ce('0x53')]=_0xb3ce('0xa0');if(_['isNil'](_0x2e5a22)){ut[_0xb3ce('0x66')](_0xb3ce('0x11a'),_0x2e5a22);return{'isValid':![],'message':'Empty\x20Campaign'};}if(!this['isTrunkReachable'](_0x2e5a22[_0xb3ce('0x58')])){ut[_0xb3ce('0x66')](_0xb3ce('0x11b'),_0xb3ce('0x11c')+_0x2e5a22[_0xb3ce('0x29')]+_0xb3ce('0x11d'));if(!this[_0xb3ce('0x9d')](_0x2e5a22[_0xb3ce('0x9e')])){ut[_0xb3ce('0x66')]('[Preview][validateContact][Trunk\x20not\x20work]',_0x2e5a22['name']+'\x20Trunk\x20Backup\x20is\x20not\x20active');return{'isValid':![],'message':_0xb3ce('0x11e')};}}if(!ut[_0xb3ce('0x11f')](_0x2e5a22[_0xb3ce('0x120')])){ut[_0xb3ce('0x66')](_0xb3ce('0x121'),_0x2e5a22[_0xb3ce('0x29')]+'\x20Not\x20Active');return{'isValid':![],'message':_0xb3ce('0x11c')+_0x2e5a22[_0xb3ce('0x29')]+_0xb3ce('0x122')};}return{'isValid':!![],'message':'Is\x20Valid'};};Preview[_0xb3ce('0xd')][_0xb3ce('0xff')]=function(_0x18badb,_0x5b3259,_0x11bb8c,_0x16fc7c){var _0x430f9f=this;return new BPromise(function(_0x3df2ab,_0x109843){var _0x41e712=_0x18badb[_0xb3ce('0xed')];var _0x146771=_0x430f9f[_0xb3ce('0x9d')](_0x5b3259['Trunk'])?util[_0xb3ce('0x5c')]('SIP/%s/%s%s',_0x5b3259[_0xb3ce('0x58')]['name'],_['isNil'](_0x5b3259[_0xb3ce('0x3b')])?'':_0x5b3259[_0xb3ce('0x3b')]['trim']()||'',_0x5b3259[_0xb3ce('0x123')]>0x0?_0x11bb8c[_0xb3ce('0xfb')][_0xb3ce('0xfc')][_0xb3ce('0x124')](_0x5b3259[_0xb3ce('0x123')]):_0x11bb8c[_0xb3ce('0xfb')]['phone']):util[_0xb3ce('0x5c')](_0xb3ce('0x125'),_[_0xb3ce('0x89')](_0x5b3259[_0xb3ce('0x9e')])?_0x5b3259[_0xb3ce('0x58')][_0xb3ce('0x29')]:_0x5b3259['TrunkBackup'][_0xb3ce('0x29')],_[_0xb3ce('0x89')](_0x5b3259[_0xb3ce('0x3b')])?'':_0x5b3259['dialPrefix'][_0xb3ce('0x126')]()||'',_0x5b3259['dialCutDigit']>0x0?_0x11bb8c['Contact'][_0xb3ce('0xfc')]['substring'](_0x5b3259[_0xb3ce('0x123')]):_0x11bb8c['Contact'][_0xb3ce('0xfc')]);var _0xbaee09=_0x430f9f[_0xb3ce('0x9d')](_0x5b3259[_0xb3ce('0x58')])?ut[_0xb3ce('0x127')](_0x5b3259['Trunk'][_0xb3ce('0x59')],_0x5b3259['dialOriginateCallerIdName'],_0x5b3259[_0xb3ce('0x128')]>0x0?ut[_0xb3ce('0x129')](_0x5b3259[_0xb3ce('0x39')],_0x5b3259[_0xb3ce('0x128')]):_0x5b3259[_0xb3ce('0x39')]):ut[_0xb3ce('0x127')](_[_0xb3ce('0x89')](_0x5b3259[_0xb3ce('0x9e')])?_0x5b3259['Trunk'][_0xb3ce('0x59')]:_0x5b3259[_0xb3ce('0x9e')]['callerid'],_0x5b3259['dialOriginateCallerIdName'],_0x5b3259[_0xb3ce('0x128')]>0x0?ut[_0xb3ce('0x129')](_0x5b3259[_0xb3ce('0x39')],_0x5b3259[_0xb3ce('0x128')]):_0x5b3259['dialOriginateCallerIdNumber']);if(_0xbaee09){_0x18badb[_0xb3ce('0x12a')]=ut[_0xb3ce('0x12b')](_0xbaee09);_0x18badb[_0xb3ce('0x12c')]=ut['extractCalleridNumber'](_0xbaee09);}var _0x7a5e9b=ut[_0xb3ce('0x12d')](_0x5b3259,_0x11bb8c,_0x146771,_0xbaee09,_0x41e712,_0x18badb);_[_0xb3ce('0x12e')](_0x18badb,ut[_0xb3ce('0x12f')](_0x7a5e9b));_0x18badb[_0xb3ce('0x130')]=moment()[_0xb3ce('0x5c')]('YYYY-MM-DD\x20HH:mm:ss');ami['Action'](ut['variablesAction'](_0x18badb,_0x5b3259,_0x7a5e9b,_0x18badb[_0xb3ce('0xae')],_0x16fc7c))[_0xb3ce('0x88')](function(_0x4b9da4){var _0x39aea4=_0x18badb[_0xb3ce('0x131')];if(!_[_0xb3ce('0x89')](_0x39aea4)){if(!_['isNil'](_0x430f9f[_0xb3ce('0x13')][_0x39aea4])){_0x430f9f['agents'][_0x39aea4][_0xb3ce('0x132')]=_0x18badb[_0xb3ce('0x133')];emit(util[_0xb3ce('0x5c')](_0xb3ce('0x134'),_0x430f9f[_0xb3ce('0x13')][_0x39aea4][_0xb3ce('0x29')]),_0xb3ce('0x135'),{'destaccountcode':_0x430f9f[_0xb3ce('0x13')][_0x39aea4][_0xb3ce('0x136')],'destconnectedlinenum':_0x18badb['calleridnum']});}}_0x5b3259[_0xb3ce('0x54')]+=0x1;logger[_0xb3ce('0x72')]('[originated][increment]',_0x41e712,_0xb3ce('0xb2'),_0x5b3259[_0xb3ce('0x29')],'originated:\x20',_0x5b3259[_0xb3ce('0x54')]);_0x3df2ab(_0x4b9da4);})[_0xb3ce('0x9b')](function(_0x5b766e){ut['logAgent'](_0x18badb,0xe,_0xb3ce('0x137'));rpcDb[_0xb3ce('0xf3')](_0x18badb,'[originateFailure][logOriginateFailure]');_0x109843(_0x5b766e);});});};Preview['prototype']['syncNewExten']=function(_0x43bb05){if(this[_0xb3ce('0x12')][_0x43bb05[_0xb3ce('0xaf')]]){this[_0xb3ce('0x12')][_0x43bb05[_0xb3ce('0xaf')]][_0xb3ce('0x138')]=_0x43bb05[_0xb3ce('0x138')];}};Preview[_0xb3ce('0xd')]['syncOriginateResponse']=function(_0x536007){var _0x1d8844=this;var _0x3728be=this['actions'][_0x536007[_0xb3ce('0x139')]];if(_0x3728be){if(_0x3728be[_0xb3ce('0x13a')]&&this[_0xb3ce('0x13')][_0x3728be[_0xb3ce('0x13a')]]){ut['logLookAgent'](_0x3728be,this[_0xb3ce('0x13')][_0x3728be[_0xb3ce('0x13a')]][_0xb3ce('0x29')],this[_0xb3ce('0x13')][_0x3728be[_0xb3ce('0x13a')]]['id']);}var _0x2f9e0a=_[_0xb3ce('0x13b')](_0x3728be);_0x2f9e0a[_0xb3ce('0xb0')]=moment()[_0xb3ce('0x5c')](_0xb3ce('0x94'));var _0x2a9e7c=_0x1d8844[_0xb3ce('0x27')][_0x3728be[_0xb3ce('0x74')]];if(ut[_0xb3ce('0x13c')](_0x536007[_0xb3ce('0x13d')])){if(_0x3728be[_0xb3ce('0xad')]){rpcDb[_0xb3ce('0x110')](_0x3728be['idContact']);}if(_0x3728be[_0xb3ce('0xae')]){rpcDb['disableContact'](_0x3728be[_0xb3ce('0x102')]);}ami['emit'](_0xb3ce('0x13e'),ut['buildObj'](_0x3728be,_0xb3ce('0x13f'),this['campaignsPreview'][_0x3728be['queue']]));this['callProgressDetectingAgent'](_0x2f9e0a,_0x2a9e7c,_0x536007);}else{_0x3728be[_0xb3ce('0x130')]=moment()['format'](_0xb3ce('0x94'));ut['logAgent'](_0x2f9e0a,0x4,_0xb3ce('0xba'));rpcDb[_0xb3ce('0xf3')](_0x2f9e0a,_0xb3ce('0x140'));}}};Preview[_0xb3ce('0xd')][_0xb3ce('0x19')]=function(_0x46db44){var _0x279320=this;var _0x37b2ba=this['actions'][_0x46db44[_0xb3ce('0xaf')]];var _0x2267b3;if(_0x37b2ba){_0x2267b3=this[_0xb3ce('0x27')][_0x37b2ba[_0xb3ce('0x74')]];logger[_0xb3ce('0x72')](_0xb3ce('0x141'),_0x46db44['linkedid'],_0xb3ce('0xb2'),_0x2267b3[_0xb3ce('0x29')],'pTalking:\x20',_0x2267b3[_0xb3ce('0x2e')]);}if(this[_0xb3ce('0x12')][_0x46db44['linkedid']]&&_0x46db44[_0xb3ce('0xaf')]!==_0x46db44['uniqueid']){if(_0x46db44['cause']==='16'&&this[_0xb3ce('0x12')][_0x46db44[_0xb3ce('0xaf')]]['dialAnswer']){this['callProgressDetectingCustomer'](_0x46db44,_0x46db44['linkedid'],_0x46db44[_0xb3ce('0x142')]);}else if(this['actions'][_0x46db44[_0xb3ce('0xaf')]][_0xb3ce('0x77')]){logger[_0xb3ce('0x72')](_0xb3ce('0x143'),_0x46db44[_0xb3ce('0xaf')],_0x46db44[_0xb3ce('0x142')],_0xb3ce('0xb2'),_0x2267b3['name'],'pTalking:\x20',_0x2267b3[_0xb3ce('0x2e')]);this[_0xb3ce('0x144')](_0x46db44,_0x46db44['linkedid'],_0x46db44[_0xb3ce('0x142')]);}}else if(_0x37b2ba&&_[_0xb3ce('0x89')](_0x37b2ba[_0xb3ce('0x145')])&&_0x2267b3[_0xb3ce('0x146')]&&_0x46db44['linkedid']===_0x46db44[_0xb3ce('0xed')]&&_['isNil'](_0x46db44[_0xb3ce('0xf2')])&&_0x46db44['cause']==='16'&&_0x46db44['channelstate']==='6'&&_['isUndefined'](_0x37b2ba[_0xb3ce('0x147')])){if(_0x37b2ba[_0xb3ce('0xad')]){rpcDb[_0xb3ce('0x110')](_0x37b2ba['idContact']);}if(_0x37b2ba[_0xb3ce('0xae')]){rpcDb[_0xb3ce('0x93')](_0x37b2ba[_0xb3ce('0x102')]);}_0x46db44[_0xb3ce('0xf2')]='22';this[_0xb3ce('0x148')](_0x37b2ba,_0x2267b3,_0x46db44);}else if(_0x37b2ba&&_0x37b2ba['transfer']){if(_0x46db44['cause']==='16'&&this['actions'][_0x46db44[_0xb3ce('0xaf')]][_0xb3ce('0x77')]){logger[_0xb3ce('0x72')](_0xb3ce('0x149'),_0x46db44[_0xb3ce('0xaf')],_0x46db44[_0xb3ce('0x142')],_0xb3ce('0xb2'),_0x2267b3[_0xb3ce('0x29')],_0xb3ce('0x76'),_0x2267b3['pTalking']);this[_0xb3ce('0x144')](_0x46db44,_0x46db44[_0xb3ce('0xaf')],_0x46db44[_0xb3ce('0x142')]);}else if(this[_0xb3ce('0x12')][_0x46db44[_0xb3ce('0xaf')]]['dialAnswer']){logger[_0xb3ce('0x72')]('[syncHangup][talking][cause]',_0x46db44[_0xb3ce('0xaf')],_0x46db44[_0xb3ce('0x142')],_0xb3ce('0xb2'),_0x2267b3[_0xb3ce('0x29')],_0xb3ce('0x76'),_0x2267b3['pTalking']);this['callProgressDetectingCustomer'](_0x46db44,_0x46db44[_0xb3ce('0xaf')],_0x46db44[_0xb3ce('0x142')]);}}};Preview[_0xb3ce('0xd')]['syncDialEnd']=function(_0x297125){if(this[_0xb3ce('0x12')][_0x297125['destlinkedid']]&&_0x297125[_0xb3ce('0xef')]!==_0x297125[_0xb3ce('0x14a')]){this[_0xb3ce('0x144')](_0x297125,_0x297125[_0xb3ce('0xef')],_0x297125[_0xb3ce('0xe3')]);}};Preview['prototype'][_0xb3ce('0x1b')]=function(_0x3b93e3){if(this[_0xb3ce('0x12')][_0x3b93e3[_0xb3ce('0xaf')]]&&_0x3b93e3[_0xb3ce('0xaf')]!==_0x3b93e3[_0xb3ce('0xed')]&&!this[_0xb3ce('0x12')][_0x3b93e3['linkedid']][_0xb3ce('0x77')]){if(_0x3b93e3['cause']==='1'){this[_0xb3ce('0x144')](_0x3b93e3,_0x3b93e3[_0xb3ce('0xaf')],_0x3b93e3[_0xb3ce('0x142')]);}}};Preview['prototype'][_0xb3ce('0x14b')]=function(_0x165362,_0x1019bd,_0xba1cec){if(this[_0xb3ce('0x12')][_0x165362]){if(_[_0xb3ce('0x89')](this[_0xb3ce('0x12')][_0x165362][_0xb3ce('0x14c')])){this[_0xb3ce('0x12')][_0x165362][_0xb3ce('0x14c')]={};}this[_0xb3ce('0x12')][_0x165362]['variables'][_0x1019bd]=_0xba1cec;}};Preview[_0xb3ce('0xd')]['syncVarSet']=function(_0x14b2e3){try{if(!_[_0xb3ce('0x89')](_0x14b2e3)){if(ut['filterKey'](_[_0xb3ce('0x14d')](_0x14b2e3[_0xb3ce('0x14e')])[0x0])){this[_0xb3ce('0x14b')](_0x14b2e3[_0xb3ce('0xed')],_[_0xb3ce('0x14d')](_0x14b2e3[_0xb3ce('0x14e')])[0x0],_0x14b2e3[_0xb3ce('0x14f')]);}}}catch(_0x55e1b8){logger[_0xb3ce('0x150')](_0xb3ce('0x151'),util[_0xb3ce('0x152')](_0x55e1b8,{'showHidden':![],'depth':null}));}};Preview['prototype'][_0xb3ce('0x23')]=function(_0x4f42c9){if(_0x4f42c9){if(this[_0xb3ce('0x12')][_0x4f42c9[_0xb3ce('0x153')]]){this['actions'][_0x4f42c9[_0xb3ce('0x153')]][_0xb3ce('0x147')]=!![];}}};Preview[_0xb3ce('0xd')][_0xb3ce('0x25')]=function(_0xc9ccf9){if(_0xc9ccf9){if(this['actions'][_0xc9ccf9[_0xb3ce('0x154')]]){this[_0xb3ce('0x12')][_0xc9ccf9[_0xb3ce('0x154')]][_0xb3ce('0x147')]=!![];}}};module[_0xb3ce('0x155')]=Preview;
\ No newline at end of file
+var _0x6ea3=['checkInBlack','Contact','phone','VoiceQueueId','Contact\x20is\x20undefined','lookAgent','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','custom:agentcalled','called','Calling','[Preview][execCall][failure]','outboundBlacklistCallsDay','createHistory','SIP/%s','reachable','execRun','getContactPreview','recallme','validateContact','isValid','checkIsBlackList','Contact.phone','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','isEmpty','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20work','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','execCall','SIP/%s/%s%s','trim','dialCutDigit','substring','callerid','dialOriginateCallerIdNumber','dialRandomLastDigitCallerIdNumber','getCallerId','getCallerIdRandom','originatecalleridname','extractCalleridName','YYYY-MM-DD\x20HH:mm:ss','Action','variablesAction','channelAgent','destconnectedlinenum','calleridnum','user:%s','user:agentconnect','[originated][increment]','OriginateError','actionid','logLookAgent','clone','isFailure','response','unlockContact','idContact','custom:agentringnoanswer','rejected','[callProgressDetectingAgent][logAnswer]','syncHangup','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','destuniqueid','variables','filterKey','keys','addVariable','variable','value','[syncVarSet][Preview]','transfertargetlinkedid','transfererlinkedid','exports','lodash','bluebird','uuid','md5','ioredis','../../../config/environment','../../../config/logger','preview','actionPreview','../ami','./rpcDb','./util/util','redis','defaults','socket.io-emitter','prototype','enqueue','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','clockClearZombieChannels','syncOriginateResponse','bind','syncHangupRequest','dialend','syncDialEnd','newexten','syncNewExten','varset','syncVarSet','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','emit','type','outbound','name','strategy','answered','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','abandoned','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix','outboundAnswerCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundOriginateFailureCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','Interval','format','voice:queue:%s','voice_queue:save','stringify','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','paused','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','IS_DISACTIVED','\x20is\x20disactive','loopCampaigns','syncCampaigns','hasOwnProperty','booked','clearZombieChannels','setMessage','recallMe','clearZombieChannel','isNil','info','[clearZombieChannels][talking]','Queue','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','UserId','ListId','status','channel','catch','updateOriginated','decrementTalkink','[clearZombieChannel]','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','[action]','size','getContactRecallMe','agentReadyId','agents','then','length','scheduledat','dialRecallMeTimeout','Agent','voicePause','run','logger2','[RecallMe]','disableContact','starttime','outboundReCallsDay','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','createCustomerHistory','createCustomerFinal','[getContactRecallMe]','IsNotLoggedIn','AGENTS_NOT_LOGGED','isActive','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','outboundNoSuchCallsDay','countglobal','NoSuchNumber','custom:agentnosuchnumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','totalGlobal','dialGlobalMaxRetry','cloneAction','[callProgressDetectingCustomer][logNoSuchGlobal]','countnosuchnumberretry','dialNoSuchNumberMaxRetry','scheduledAt','dialNoSuchNumberRetryFrequency','unlockAgent','linkedid','ANSWER','responsetime','answertime','[syncHangup][talking][increment]','uniqueid','\x20Queue','buildAcw','custom:agentcomplete','complete','[16]','Answer','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','BUSY','outboundBusyCallsDay','Busy','[callProgressDetectingCustomer][logBusy]','Global','[callProgressDetectingCustomer][logBusyGlobal]','countbusyretry','dialBusyMaxRetry','dialBusyRetryFrequency','activeContact','NOANSWER','outboundNoAnswerCallsDay','countnoanswerretry','NoAnswer','custom:agentnoanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','rescheduleContact','dialNoAnswerRetryFrequency','CONGESTION','countcongestionretry','Congestion','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','CANCEL','outboundRejectCallsDay','countagentrejectretry','AgentReject','custom:agentreject','[syncHangupRequest][logAgentReject]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','dialAbandonedRetryFrequency','countmachineretry','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','destlinkedid','callProgressDetectingAgent','isUndefined','object','reason','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','logAgent','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]'];(function(_0x5514de,_0x466f11){var _0x59f56d=function(_0x51ccf3){while(--_0x51ccf3){_0x5514de['push'](_0x5514de['shift']());}};_0x59f56d(++_0x466f11);}(_0x6ea3,0x1b2));var _0x36ea=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0x6ea3[_0x1e4360];return _0x31e6b4;};'use strict';var util=require('util');var _=require(_0x36ea('0x0'));var BPromise=require(_0x36ea('0x1'));var uuid=require(_0x36ea('0x2'));var moment=require('moment');var md5=require(_0x36ea('0x3'));var Redis=require(_0x36ea('0x4'));var config=require(_0x36ea('0x5'));var logger=require(_0x36ea('0x6'))(_0x36ea('0x7'));var loggerAction=require(_0x36ea('0x6'))(_0x36ea('0x8'));var ami=require(_0x36ea('0x9'));var rpcDb=require(_0x36ea('0xa'));var Action=require('./action');var ut=require(_0x36ea('0xb'));config[_0x36ea('0xc')]=_[_0x36ea('0xd')](config[_0x36ea('0xc')],{'host':'localhost','port':0x18eb});var io=require(_0x36ea('0xe'))(new Redis(config[_0x36ea('0xc')]));var Sequence=function(){};Sequence[_0x36ea('0xf')][_0x36ea('0x10')]=function(_0x3b3db3){this[_0x36ea('0x11')]=this[_0x36ea('0x11')]?this[_0x36ea('0x11')][_0x36ea('0x12')](_0x3b3db3):_0x3b3db3();};function Preview(_0x559428){this[_0x36ea('0x13')]=new Sequence();this[_0x36ea('0x14')]=_0x559428[_0x36ea('0x15')];this[_0x36ea('0x16')]=_0x559428['trunks'];this[_0x36ea('0x17')]={};this['agents']=_0x559428['agents'];this[_0x36ea('0x18')]=0x0;ami['on']('originateresponse',this[_0x36ea('0x19')][_0x36ea('0x1a')](this));ami['on']('hangup',this['syncHangup'][_0x36ea('0x1a')](this));ami['on']('hanguprequest',this[_0x36ea('0x1b')][_0x36ea('0x1a')](this));ami['on'](_0x36ea('0x1c'),this[_0x36ea('0x1d')][_0x36ea('0x1a')](this));ami['on'](_0x36ea('0x1e'),this[_0x36ea('0x1f')][_0x36ea('0x1a')](this));ami['on'](_0x36ea('0x20'),this[_0x36ea('0x21')][_0x36ea('0x1a')](this));ami['on'](_0x36ea('0x22'),this[_0x36ea('0x23')][_0x36ea('0x1a')](this));ami['on'](_0x36ea('0x24'),this[_0x36ea('0x25')][_0x36ea('0x1a')](this));this['loopCampaigns'](this[_0x36ea('0x14')]);}function emit(_0x5194dd,_0x4b821c,_0x53018f){io['to'](_0x5194dd)[_0x36ea('0x26')](_0x4b821c,_0x53018f);}function emitCampaignPreview(_0x1309b2){if(_0x1309b2[_0x36ea('0x27')]===_0x36ea('0x28')){var _0x4aba09={'id':_0x1309b2['id'],'name':_0x1309b2[_0x36ea('0x29')],'strategy':_0x1309b2[_0x36ea('0x2a')],'answered':_0x1309b2[_0x36ea('0x2b')],'available':_0x1309b2[_0x36ea('0x2c')],'loggedIn':_0x1309b2[_0x36ea('0x2d')],'pTalking':_0x1309b2[_0x36ea('0x2e')],'sumBillable':_0x1309b2[_0x36ea('0x2f')],'sumDuration':_0x1309b2[_0x36ea('0x30')],'sumHoldTime':_0x1309b2[_0x36ea('0x31')]||0x0,'talking':_0x1309b2[_0x36ea('0x32')],'total':_0x1309b2[_0x36ea('0x33')],'type':_0x1309b2['type'],'unmanaged':_0x1309b2[_0x36ea('0x34')],'abandoned':_0x1309b2[_0x36ea('0x35')],'waiting':_0x1309b2['waiting'],'loggedInDb':_0x1309b2[_0x36ea('0x36')],'dialActive':_0x1309b2[_0x36ea('0x37')],'dialMethod':_0x1309b2[_0x36ea('0x38')],'dialOriginateCallerIdName':_0x1309b2[_0x36ea('0x39')],'dialOriginateCallerIdNumber':_0x1309b2['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x1309b2[_0x36ea('0x3a')],'dialPrefix':_0x1309b2[_0x36ea('0x3b')],'outboundAnswerAgiCallsDay':_0x1309b2['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x1309b2[_0x36ea('0x3c')],'outboundBlacklistCallsDay':_0x1309b2['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x1309b2['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x1309b2[_0x36ea('0x3d')],'outboundDropCallsDayACS':_0x1309b2[_0x36ea('0x3e')],'outboundDropCallsDayCallersExit':_0x1309b2[_0x36ea('0x3f')],'outboundDropCallsDayTimeout':_0x1309b2[_0x36ea('0x40')],'outboundNoAnswerCallsDay':_0x1309b2['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x1309b2['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x1309b2[_0x36ea('0x41')],'outboundReCallsDay':_0x1309b2['outboundReCallsDay'],'outboundRejectCallsDay':_0x1309b2['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x1309b2[_0x36ea('0x42')],'outboundAbandonedCallsDay':_0x1309b2[_0x36ea('0x43')],'predictiveIntervalAnsweredCalls':_0x1309b2[_0x36ea('0x44')],'predictiveIntervalAvgHoldtime':_0x1309b2['predictiveIntervalAvgHoldtime'],'predictiveIntervalAvgTalktime':_0x1309b2[_0x36ea('0x45')],'predictiveIntervalDroppedCallsCallersExit':_0x1309b2[_0x36ea('0x46')],'predictiveIntervalDroppedCallsTimeout':_0x1309b2['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x1309b2[_0x36ea('0x47')],'predictiveIntervalErlangCallsDroppedCalls':_0x1309b2[_0x36ea('0x48')],'predictiveIntervalHitRate':_0x1309b2[_0x36ea('0x49')],'predictiveIntervalMultiplicativeFactor':_0x1309b2[_0x36ea('0x4a')],'predictiveIntervalPauses':_0x1309b2['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x1309b2[_0x36ea('0x4b')],'predictiveIntervalTotalCalls':_0x1309b2[_0x36ea('0x4c')],'message':_0x1309b2[_0x36ea('0x4d')],'originated':_0x1309b2[_0x36ea('0x4e')],'erlangCalls':_0x1309b2[_0x36ea('0x4f')],'erlangCallToSecond':_0x1309b2[_0x36ea('0x50')],'erlangAbandonmentRate':_0x1309b2[_0x36ea('0x51')],'erlangBusyFactor':_0x1309b2[_0x36ea('0x52')],'startPredictive':_0x1309b2[_0x36ea('0x53')],'startProgressive':_0x1309b2[_0x36ea('0x54')]};if(_0x1309b2[_0x36ea('0x55')]){_0x4aba09[_0x36ea('0x55')]={'id':_0x1309b2['Trunk']['id'],'name':_0x1309b2[_0x36ea('0x55')]['name'],'active':_0x1309b2[_0x36ea('0x55')][_0x36ea('0x56')],'callerid':_0x1309b2['Trunk']['callerid']};}if(_0x1309b2[_0x36ea('0x57')]){_0x4aba09[_0x36ea('0x57')]={'id':_0x1309b2[_0x36ea('0x57')]['id'],'name':_0x1309b2[_0x36ea('0x57')]['name']};}var _0x27ffe9=md5(JSON['stringify'](_0x4aba09));if(_0x1309b2['md5']!==_0x27ffe9){_0x1309b2['md5']=_0x27ffe9;emit(util[_0x36ea('0x58')](_0x36ea('0x59'),_0x4aba09[_0x36ea('0x29')]),_0x36ea('0x5a'),_0x4aba09);}}}function emitVoiceQueueChannelRemove(_0x1ea95f){logger['info']('[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event',JSON[_0x36ea('0x5b')](_0x1ea95f));emit(util[_0x36ea('0x58')]('voice:queue:%s',_0x1ea95f[_0x36ea('0x29')]),_0x36ea('0x5c'),_0x1ea95f);io[_0x36ea('0x26')](_0x36ea('0x5d'),_0x1ea95f);}function notSendMessagesQueue(_0x48f626){if(_0x48f626[_0x36ea('0x5e')]){if(_0x48f626[_0x36ea('0x4e')]===0x0&&_0x48f626[_0x36ea('0x2e')]===0x0){_0x48f626[_0x36ea('0x5e')]=![];_0x48f626['available']=0x0;_0x48f626[_0x36ea('0x5f')]=0x0;_0x48f626[_0x36ea('0x4d')]=_0x36ea('0x60');ut[_0x36ea('0x61')](_0x36ea('0x62'),_0x48f626[_0x36ea('0x29')]+_0x36ea('0x63'));}else{_0x48f626[_0x36ea('0x4d')]=_0x36ea('0x64');ut[_0x36ea('0x61')]('[CampaignPreview]\x20Campaign\x20Queue:\x20',_0x48f626[_0x36ea('0x29')]+_0x36ea('0x65'));}emitCampaignPreview(_0x48f626);}}Preview['prototype'][_0x36ea('0x66')]=function(){var _0x3ce6e8=this;setInterval(function(){_0x3ce6e8[_0x36ea('0x67')]();},0x7cf);};Preview['prototype'][_0x36ea('0x67')]=function(){var _0x30749a=this[_0x36ea('0x14')];this['clockClearZombieChannels']+=0x1;for(var _0x1add1c in _0x30749a){if(_0x30749a[_0x36ea('0x68')](_0x1add1c)&&(_0x30749a[_0x1add1c][_0x36ea('0x38')]===_0x36ea('0x7')||_0x30749a[_0x1add1c][_0x36ea('0x38')]===_0x36ea('0x69'))&&_0x30749a[_0x1add1c][_0x36ea('0x27')]==='outbound'){if(this[_0x36ea('0x18')]>0x7){this[_0x36ea('0x18')]=0x0;this[_0x36ea('0x6a')]();}}if(_0x30749a['hasOwnProperty'](_0x1add1c)&&_0x30749a[_0x1add1c][_0x36ea('0x38')]===_0x36ea('0x7')&&_0x30749a[_0x1add1c][_0x36ea('0x27')]===_0x36ea('0x28')){if(_0x30749a[_0x1add1c][_0x36ea('0x37')]){this[_0x36ea('0x6b')](_0x30749a[_0x1add1c]);this[_0x36ea('0x6c')](_0x30749a[_0x1add1c]);}else{notSendMessagesQueue(_0x30749a[_0x1add1c]);}}}};Preview[_0x36ea('0xf')][_0x36ea('0x6d')]=function(_0x115de5){var _0x522daf=this;this[_0x36ea('0x13')][_0x36ea('0x10')](function(){if(!_[_0x36ea('0x6e')](_0x522daf[_0x36ea('0x17')][_0x115de5])){loggerAction[_0x36ea('0x6f')](_0x36ea('0x70'),_0x115de5,_0x36ea('0x71'),_0x522daf[_0x36ea('0x17')][_0x115de5][_0x36ea('0x72')],_0x36ea('0x73'),JSON[_0x36ea('0x5b')](_0x522daf[_0x36ea('0x14')][_0x522daf[_0x36ea('0x17')][_0x115de5][_0x36ea('0x72')]][_0x36ea('0x4e')]),_0x36ea('0x74'),JSON[_0x36ea('0x5b')](_0x522daf[_0x36ea('0x14')][_0x522daf[_0x36ea('0x17')][_0x115de5][_0x36ea('0x72')]][_0x36ea('0x2e')]),JSON[_0x36ea('0x5b')](_0x522daf[_0x36ea('0x17')][_0x115de5][_0x36ea('0x75')]),JSON['stringify'](_[_0x36ea('0x76')](_0x522daf['actions'][_0x115de5],['contactId',_0x36ea('0x77'),'VoiceQueueId',_0x36ea('0x78')])));return ami['Action']({'action':_0x36ea('0x79'),'channel':_0x522daf['actions'][_0x115de5][_0x36ea('0x7a')]})[_0x36ea('0x7b')](function(_0xc0821e){if(_0xc0821e[_0x36ea('0x4d')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x522daf['actions'][_0x115de5]){ut[_0x36ea('0x7c')](_0x522daf[_0x36ea('0x14')][_0x522daf['actions'][_0x115de5]['queue']],'[clearZombieChannel]');if(_0x522daf['actions'][_0x115de5][_0x36ea('0x75')]===!![]){ut[_0x36ea('0x7d')](_0x522daf[_0x36ea('0x14')][_0x522daf[_0x36ea('0x17')][_0x115de5][_0x36ea('0x72')]],_0x36ea('0x7e'));ut[_0x36ea('0x7f')](_0x36ea('0x80')+_0x115de5,_0x522daf[_0x36ea('0x17')][_0x115de5][_0x36ea('0x72')]);}ut[_0x36ea('0x7f')](_0x36ea('0x81')+_0x115de5,_0x522daf[_0x36ea('0x17')][_0x115de5][_0x36ea('0x72')]);delete _0x522daf[_0x36ea('0x17')][_0x115de5];}},0x2328);}});}});};Preview[_0x36ea('0xf')][_0x36ea('0x6a')]=function(){var _0x205081=this;loggerAction[_0x36ea('0x6f')](_0x36ea('0x82'),_[_0x36ea('0x83')](this['actions']));for(var _0x118f29 in this[_0x36ea('0x17')]){if(_0x205081['actions'][_0x36ea('0x68')](_0x118f29)){_0x205081['clearZombieChannel'](_0x118f29);}}};Preview[_0x36ea('0xf')][_0x36ea('0x6c')]=function(_0x59053b){var _0x40d16f=this;rpcDb[_0x36ea('0x84')](_0x59053b['id'],ut[_0x36ea('0x85')](this[_0x36ea('0x86')]))[_0x36ea('0x87')](function(_0x451405){if(!_[_0x36ea('0x6e')](_0x451405)){for(var _0x59a265=0x0;_0x59a265<_0x451405[_0x36ea('0x88')];_0x59a265+=0x1){if(ut['getDiff'](_0x451405[_0x59a265][_0x36ea('0x89')])<_0x59053b[_0x36ea('0x8a')]*0x3c){if(_0x451405[_0x59a265][_0x36ea('0x8b')]&&!_0x451405[_0x59a265]['Agent'][_0x36ea('0x8c')]){_0x40d16f[_0x36ea('0x8d')](_0x451405[_0x59a265]['id'])[_0x36ea('0x87')](ut[_0x36ea('0x8e')](_0x36ea('0x8f')))[_0x36ea('0x7b')](ut['logger2'](_0x36ea('0x8f')));}else{rpcDb[_0x36ea('0x90')](_0x451405[_0x59a265]['id']);}}else{var _0x4bc460=new Action(_0x451405[_0x59a265],_0x59053b);_0x4bc460[_0x36ea('0x91')]=moment()[_0x36ea('0x58')]('YYYY-MM-DD\x20HH:mm:ss');_0x59053b[_0x36ea('0x92')]+=0x1;ut[_0x36ea('0x93')](_0x4bc460,0x17,_0x36ea('0x94'));if(_0x59053b[_0x36ea('0x95')]){rpcDb[_0x36ea('0x96')](ut['createBody'](_0x451405[_0x59a265]));rpcDb['createCustomerHistory'](_0x4bc460,_0x36ea('0x97'));}else{ut[_0x36ea('0x93')](_0x4bc460,0x16,_0x36ea('0x98'));rpcDb[_0x36ea('0x99')](_0x4bc460,'[HistoryRecallClose]');rpcDb[_0x36ea('0x9a')](_0x4bc460,'[HistoryRecallClose]');}}}}})[_0x36ea('0x7b')](ut[_0x36ea('0x8e')](_0x36ea('0x9b')));};Preview[_0x36ea('0xf')][_0x36ea('0x6b')]=function(_0x151113){_0x151113[_0x36ea('0x5e')]=!![];if(ut[_0x36ea('0x9c')](_0x151113[_0x36ea('0x2d')])){_0x151113[_0x36ea('0x4d')]=_0x36ea('0x9d');}else if(!ut[_0x36ea('0x9e')](_0x151113['dialActive'])){_0x151113[_0x36ea('0x4d')]='NOT_ACTIVE';}else if(!this[_0x36ea('0x9f')](_0x151113['Trunk'])){if(!this[_0x36ea('0x9f')](_0x151113[_0x36ea('0xa0')])){_0x151113[_0x36ea('0x4d')]=_0x36ea('0xa1');}else{_0x151113[_0x36ea('0x4d')]=_0x36ea('0xa2');}}else{_0x151113['message']=_0x36ea('0xa2');}emitCampaignPreview(_0x151113);};Preview[_0x36ea('0xf')][_0x36ea('0xa3')]=function(_0x16c197,_0x2814db,_0x59b6a3){var _0x24fd72=this;var _0x5d1df1=this[_0x36ea('0x17')][_0x2814db];var _0x1eac39=this[_0x36ea('0x14')][_0x5d1df1[_0x36ea('0x72')]];var _0x49c671;if(_0x1eac39){switch(_0x59b6a3){case'1':_0x1eac39[_0x36ea('0xa4')]+=0x1;_0x5d1df1['countnosuchnumberretry']+=0x1;_0x5d1df1[_0x36ea('0xa5')]=ut['totalGlobal'](_0x5d1df1);ut[_0x36ea('0x93')](_0x5d1df1,0x0,_0x36ea('0xa6'));ami[_0x36ea('0x26')](_0x36ea('0xa7'),ut[_0x36ea('0xa8')](_0x5d1df1,_0x36ea('0xa9')));rpcDb[_0x36ea('0x99')](_0x5d1df1,_0x36ea('0xaa'));if(ut[_0x36ea('0xab')](_0x5d1df1)>=_0x1eac39[_0x36ea('0xac')]){_0x49c671=ut[_0x36ea('0xad')](_0x5d1df1,0xf,'Global');rpcDb[_0x36ea('0x9a')](_0x49c671,_0x36ea('0xae'));}else{if(_0x5d1df1[_0x36ea('0xaf')]>=_0x1eac39[_0x36ea('0xb0')]){rpcDb['createCustomerFinal'](_0x5d1df1,_0x36ea('0xae'));}else{rpcDb['rescheduleContact'](ut[_0x36ea('0xb1')](_0x5d1df1,'countnosuchnumberretry',_0x1eac39[_0x36ea('0xb2')]),_0x5d1df1[_0x36ea('0xb3')],_0x5d1df1['activeContact']);}}delete this['actions'][_0x16c197[_0x36ea('0xb4')]];break;case _0x36ea('0xb5'):var _0x174904=moment()[_0x36ea('0x58')]('YYYY-MM-DD\x20HH:mm:ss');_0x5d1df1[_0x36ea('0xb6')]=_0x174904;_0x5d1df1[_0x36ea('0xb7')]=_0x174904;_0x5d1df1[_0x36ea('0x75')]=!![];_0x1eac39[_0x36ea('0x2e')]+=0x1;logger[_0x36ea('0x6f')](_0x36ea('0xb8'),_0x5d1df1[_0x36ea('0xb9')],_0x36ea('0xba'),_0x1eac39['name'],_0x36ea('0x74'),_0x1eac39[_0x36ea('0x2e')]);ami[_0x36ea('0x26')]('custom:agentconnect',ut[_0x36ea('0xa8')](_0x5d1df1,'connect',this[_0x36ea('0x14')][_0x5d1df1[_0x36ea('0x72')]]));if(_0x1eac39['acw']){ami[_0x36ea('0x26')]('custom:agentConnectPreview',ut[_0x36ea('0xbb')](_0x5d1df1));}break;case'16':ami[_0x36ea('0x26')](_0x36ea('0xbc'),ut[_0x36ea('0xa8')](_0x5d1df1,'complete',this[_0x36ea('0x14')][_0x5d1df1[_0x36ea('0x72')]]));emitVoiceQueueChannelRemove(ut[_0x36ea('0xa8')](_0x5d1df1,_0x36ea('0xbd')));_0x1eac39[_0x36ea('0x3c')]+=0x1;_0x1eac39[_0x36ea('0x33')]+=0x1;_0x1eac39[_0x36ea('0x2b')]+=0x1;ut[_0x36ea('0x7d')](_0x1eac39,_0x36ea('0xbe'));_0x5d1df1['countglobal']=ut[_0x36ea('0xab')](_0x5d1df1);ut[_0x36ea('0x93')](_0x5d1df1,0x4,_0x36ea('0xbf'));rpcDb[_0x36ea('0x99')](_0x5d1df1,'[callProgressDetectingCustomer][logAnswer]');rpcDb[_0x36ea('0x9a')](_0x5d1df1,_0x36ea('0xc0'));rpcDb[_0x36ea('0xc1')](_0x5d1df1);_0x1eac39[_0x36ea('0x30')]+=_0x5d1df1[_0x36ea('0xc2')];_0x1eac39[_0x36ea('0x2f')]+=_0x5d1df1['talktime'];logger['info']('[syncHangup][talking][decrement]',_0x5d1df1[_0x36ea('0xb9')],_0x36ea('0xba'),_0x1eac39[_0x36ea('0x29')],_0x36ea('0x74'),_0x1eac39[_0x36ea('0x2e')]);delete this[_0x36ea('0x17')][_0x16c197[_0x36ea('0xb4')]];break;case _0x36ea('0xc3'):_0x1eac39[_0x36ea('0xc4')]+=0x1;_0x5d1df1['countbusyretry']+=0x1;_0x5d1df1[_0x36ea('0xa5')]=ut[_0x36ea('0xab')](_0x5d1df1);ut['logCustomer'](_0x5d1df1,0x5,_0x36ea('0xc5'));ami[_0x36ea('0x26')]('custom:agentbusy',ut[_0x36ea('0xa8')](_0x5d1df1,'busy'));rpcDb[_0x36ea('0x99')](_0x5d1df1,_0x36ea('0xc6'));if(ut[_0x36ea('0xab')](_0x5d1df1)>=_0x1eac39[_0x36ea('0xac')]){_0x49c671=ut[_0x36ea('0xad')](_0x5d1df1,0xf,_0x36ea('0xc7'));rpcDb[_0x36ea('0x9a')](_0x49c671,_0x36ea('0xc8'));}else{if(_0x5d1df1[_0x36ea('0xc9')]>=_0x1eac39[_0x36ea('0xca')]){rpcDb[_0x36ea('0x9a')](_0x5d1df1,_0x36ea('0xc6'));}else{rpcDb['rescheduleContact'](ut[_0x36ea('0xb1')](_0x5d1df1,_0x36ea('0xc9'),_0x1eac39[_0x36ea('0xcb')]),_0x5d1df1['unlockAgent'],_0x5d1df1[_0x36ea('0xcc')]);}}break;case _0x36ea('0xcd'):_0x1eac39[_0x36ea('0xce')]+=0x1;_0x5d1df1[_0x36ea('0xcf')]+=0x1;_0x5d1df1[_0x36ea('0xa5')]=ut[_0x36ea('0xab')](_0x5d1df1);ut[_0x36ea('0x93')](_0x5d1df1,0x3,_0x36ea('0xd0'));ami[_0x36ea('0x26')](_0x36ea('0xd1'),ut[_0x36ea('0xa8')](_0x5d1df1,'noanswer'));rpcDb[_0x36ea('0x99')](_0x5d1df1,_0x36ea('0xd2'));if(ut[_0x36ea('0xab')](_0x5d1df1)>=_0x1eac39[_0x36ea('0xac')]){_0x49c671=ut[_0x36ea('0xad')](_0x5d1df1,0xf,_0x36ea('0xc7'));rpcDb['createCustomerFinal'](_0x49c671,_0x36ea('0xd3'));}else{if(_0x5d1df1['countnoanswerretry']>=_0x1eac39['dialNoAnswerMaxRetry']){rpcDb[_0x36ea('0x9a')](_0x5d1df1,'[callProgressDetectingCustomer][logNoAnswer]');}else{rpcDb[_0x36ea('0xd4')](ut['scheduledAt'](_0x5d1df1,_0x36ea('0xcf'),_0x1eac39[_0x36ea('0xd5')]),_0x5d1df1[_0x36ea('0xb3')],_0x5d1df1[_0x36ea('0xcc')]);}}break;case _0x36ea('0xd6'):_0x1eac39[_0x36ea('0x3d')]+=0x1;_0x5d1df1[_0x36ea('0xd7')]+=0x1;_0x5d1df1['countglobal']=ut[_0x36ea('0xab')](_0x5d1df1);ut[_0x36ea('0x93')](_0x5d1df1,0x8,_0x36ea('0xd8'));ami[_0x36ea('0x26')]('custom:agentcongestion',ut[_0x36ea('0xa8')](_0x5d1df1,_0x36ea('0xd9')));rpcDb[_0x36ea('0x99')](_0x5d1df1,_0x36ea('0xda'));if(ut[_0x36ea('0xab')](_0x5d1df1)>=_0x1eac39[_0x36ea('0xac')]){_0x49c671=ut[_0x36ea('0xad')](_0x5d1df1,0xf,_0x36ea('0xc7'));rpcDb[_0x36ea('0x9a')](_0x49c671,_0x36ea('0xdb'));}else{if(_0x5d1df1[_0x36ea('0xd7')]>=_0x1eac39[_0x36ea('0xdc')]){rpcDb['createCustomerFinal'](_0x5d1df1,_0x36ea('0xda'));}else{rpcDb[_0x36ea('0xd4')](ut[_0x36ea('0xb1')](_0x5d1df1,_0x36ea('0xd7'),_0x1eac39[_0x36ea('0xcb')]),_0x5d1df1[_0x36ea('0xb3')],_0x5d1df1['activeContact']);}}break;case _0x36ea('0xdd'):_0x1eac39[_0x36ea('0xde')]+=0x1;_0x5d1df1[_0x36ea('0xdf')]+=0x1;_0x5d1df1[_0x36ea('0xa5')]=ut[_0x36ea('0xab')](_0x5d1df1);ut['logCustomer'](_0x5d1df1,0x14,_0x36ea('0xe0'));ami[_0x36ea('0x26')](_0x36ea('0xe1'),ut['buildObj'](_0x5d1df1,'agentreject'));rpcDb[_0x36ea('0x99')](_0x5d1df1,_0x36ea('0xe2'));if(ut[_0x36ea('0xab')](_0x5d1df1)>=_0x1eac39[_0x36ea('0xac')]){_0x49c671=ut[_0x36ea('0xad')](_0x5d1df1,0x14,_0x36ea('0xe0'));rpcDb['createCustomerFinal'](_0x49c671,'[callProgressDetectingCustomer][logAgentReject]');}else{if(_0x5d1df1[_0x36ea('0xdf')]>=_0x1eac39[_0x36ea('0xe3')]){rpcDb['createCustomerFinal'](_0x5d1df1,'[callProgressDetectingCustomer][logAgentReject]');}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x5d1df1,_0x36ea('0xdf'),_0x1eac39[_0x36ea('0xe4')]),_0x5d1df1[_0x36ea('0xb3')],_0x5d1df1['activeContact']);}}break;case'ABANDONED':_0x1eac39[_0x36ea('0x43')]+=0x1;_0x5d1df1[_0x36ea('0xe5')]+=0x1;_0x5d1df1[_0x36ea('0xa5')]=ut['totalGlobal'](_0x5d1df1);ut[_0x36ea('0x93')](_0x5d1df1,0xb,_0x36ea('0xe6'));rpcDb[_0x36ea('0x99')](_0x5d1df1,_0x36ea('0xe7'));if(ut[_0x36ea('0xab')](_0x5d1df1)>=_0x1eac39[_0x36ea('0xac')]){_0x49c671=ut[_0x36ea('0xad')](_0x5d1df1,0xf,_0x36ea('0xc7'));rpcDb[_0x36ea('0x9a')](_0x49c671,_0x36ea('0xe7'));}else{if(_0x5d1df1['countabandonedetry']>=_0x1eac39['dialAbandonedMaxRety']){rpcDb[_0x36ea('0x9a')](_0x5d1df1,_0x36ea('0xe7'));}else{rpcDb[_0x36ea('0xd4')](ut[_0x36ea('0xb1')](_0x5d1df1,_0x36ea('0xe5'),_0x1eac39[_0x36ea('0xe8')]),_0x5d1df1[_0x36ea('0xb3')],_0x5d1df1['activeContact']);}}break;case'18':_0x1eac39[_0x36ea('0x42')]+=0x1;_0x5d1df1[_0x36ea('0xe9')]+=0x1;_0x5d1df1['countglobal']=ut[_0x36ea('0xab')](_0x5d1df1);ut[_0x36ea('0x93')](_0x5d1df1,0x12,_0x16c197[_0x36ea('0xea')]||_0x16c197[_0x36ea('0xeb')]);ami['emit'](_0x36ea('0xec'),ut[_0x36ea('0xa8')](_0x5d1df1,_0x36ea('0xed')));rpcDb[_0x36ea('0x99')](_0x5d1df1,_0x36ea('0xee'));if(ut[_0x36ea('0xab')](_0x5d1df1)>=_0x1eac39[_0x36ea('0xac')]){_0x49c671=ut[_0x36ea('0xad')](_0x5d1df1,0xf,_0x36ea('0xc7'));rpcDb['createCustomerFinal'](_0x49c671,_0x36ea('0xee'));}else{rpcDb[_0x36ea('0x9a')](_0x5d1df1,'[callProgressDetectingCustomer][hangupInAMD]');}delete this[_0x36ea('0x17')][_0x16c197[_0x36ea('0xb4')]];break;case'19':_0x1eac39[_0x36ea('0x42')]+=0x1;_0x5d1df1[_0x36ea('0xa5')]=ut[_0x36ea('0xab')](_0x5d1df1);ut['logCustomer'](_0x5d1df1,0x13,_0x16c197[_0x36ea('0xea')]||_0x16c197[_0x36ea('0xeb')]);ami[_0x36ea('0x26')](_0x36ea('0xec'),ut[_0x36ea('0xa8')](_0x5d1df1,_0x36ea('0xed')));rpcDb[_0x36ea('0x99')](_0x5d1df1,_0x36ea('0xef'));if(ut[_0x36ea('0xab')](_0x5d1df1)>=_0x1eac39['dialGlobalMaxRetry']){_0x49c671=ut['cloneAction'](_0x5d1df1,0xf,_0x36ea('0xc7'));rpcDb[_0x36ea('0x9a')](_0x49c671,'[callProgressDetectingCustomer][machine]');}else{rpcDb['createCustomerFinal'](_0x5d1df1,_0x36ea('0xef'));}delete this[_0x36ea('0x17')][_0x16c197[_0x36ea('0xb4')]];break;default:if(_0x5d1df1[_0x36ea('0x75')]){ut[_0x36ea('0x7d')](_0x1eac39,_0x36ea('0xf0'));ut[_0x36ea('0x7f')]('[Dialer][decrementTalkink][no\x20Hangup][Preview]'+_0x1eac39[_0x36ea('0x29')],_0x16c197);}_0x1eac39[_0x36ea('0x42')]+=0x1;_0x5d1df1[_0x36ea('0xa5')]=ut[_0x36ea('0xab')](_0x5d1df1);ut[_0x36ea('0x93')](_0x5d1df1,0xc,_0x16c197[_0x36ea('0xea')]||_0x16c197[_0x36ea('0xeb')]);rpcDb['createCustomerHistory'](_0x5d1df1,_0x36ea('0xf1'));if(ut[_0x36ea('0xab')](_0x5d1df1)>=_0x1eac39['dialGlobalMaxRetry']){_0x49c671=ut[_0x36ea('0xad')](_0x5d1df1,0xf,_0x36ea('0xc7'));rpcDb[_0x36ea('0x9a')](_0x49c671,_0x36ea('0xf2'));}else{rpcDb[_0x36ea('0x9a')](_0x5d1df1,_0x36ea('0xf2'));}delete this[_0x36ea('0x17')][_0x16c197['linkedid']];}if(!(_0x5d1df1['dialAnswer']&&_0x59b6a3==='16')){ut[_0x36ea('0x7c')](_0x1eac39,_0x36ea('0xf3'));logger['info']('[originated][decrement][callProgressDetectingCustomer]',_0x5d1df1[_0x36ea('0xb9')],_0x36ea('0xba'),_0x1eac39['name'],'originated:\x20',_0x1eac39[_0x36ea('0x4e')]);}if(_0x59b6a3!==_0x36ea('0xb5')){delete this[_0x36ea('0x17')][_0x16c197[_0x36ea('0xb4')]];delete this[_0x36ea('0x17')][_0x16c197[_0x36ea('0xf4')]];}}};Preview[_0x36ea('0xf')][_0x36ea('0xf5')]=function(_0x3f9303,_0x5be03d,_0x48edcd){if(_[_0x36ea('0xf6')](_0x5be03d)&&_0x36ea('0xf7')!==typeof _0x5be03d){return;}if(_[_0x36ea('0xf6')](_0x48edcd)&&_0x36ea('0xf7')!==typeof _0x48edcd){return;}switch(_0x48edcd[_0x36ea('0xf8')]){case'0':ut['logAgent'](_0x3f9303,0x0,_0x36ea('0xa6'));rpcDb[_0x36ea('0xf9')](_0x3f9303,_0x36ea('0xfa'));break;case'3':ut[_0x36ea('0xfb')](_0x3f9303,0x3,_0x36ea('0xd0'));rpcDb[_0x36ea('0xf9')](_0x3f9303,_0x36ea('0xfc'));break;case'5':ut[_0x36ea('0xfb')](_0x3f9303,0x5,_0x36ea('0xc5'));rpcDb[_0x36ea('0xf9')](_0x3f9303,_0x36ea('0xfd'));break;case'8':ut[_0x36ea('0xfb')](_0x3f9303,0x8,_0x36ea('0xd8'));rpcDb[_0x36ea('0xf9')](_0x3f9303,_0x36ea('0xfe'));break;case'22':ut[_0x36ea('0xfb')](_0x3f9303,0x16,_0x36ea('0xff'));rpcDb[_0x36ea('0xf9')](_0x3f9303,_0x36ea('0x100'));break;default:ut['logAgent'](_0x3f9303,0xc,_0x48edcd[_0x36ea('0xf8')]);rpcDb[_0x36ea('0xf9')](_0x3f9303,_0x36ea('0xfe'));}ut['updateOriginated'](_0x5be03d,_0x36ea('0x101'));logger['info']('[originated][decrement][callProgressDetectingAgent]',_0x3f9303[_0x36ea('0xb9')],_0x36ea('0xba'),_0x5be03d['name'],_0x36ea('0x73'),_0x5be03d['originated']);delete this[_0x36ea('0x17')][_0x3f9303[_0x36ea('0xb9')]];};Preview[_0x36ea('0xf')][_0x36ea('0x102')]=function(_0x497146,_0x541851,_0x1624d3,_0x286313,_0x5e9160){var _0x581c81=this;return new BPromise(function(_0xe0dde6,_0x2263d6){if(_[_0x36ea('0x6e')](_0x541851)||_[_0x36ea('0x6e')](_0x541851['Contact'])||_['isNil'](_0x541851[_0x36ea('0x103')][_0x36ea('0x104')])||_[_0x36ea('0x6e')](_0x541851[_0x36ea('0x105')])){_0x2263d6(ut[_0x36ea('0x4d')](_0x36ea('0x106'),_0x286313,_0x5e9160));return;}var _0x1fef8b=uuid['v4']();var _0x513dc8=_0x581c81[_0x36ea('0x14')][_0x541851[_0x36ea('0x71')][_0x36ea('0x29')]];var _0xfcbc24=_0x1624d3?_0x581c81['agents'][_0x1624d3]['id']:undefined;_0x581c81[_0x36ea('0x17')][_0x1fef8b]=new Action(_0x541851,_0x513dc8,_0x1fef8b,_0x1624d3,_0xfcbc24);var _0x409809=_0x581c81[_0x36ea('0x17')][_0x1fef8b];_0x409809[_0x36ea('0xb3')]=_0x286313;_0x409809[_0x36ea('0xcc')]=_0x5e9160;_0x409809[_0x36ea('0x107')]=_0x1624d3;if(_['isEmpty'](_0x497146)){_0x581c81['execCall'](_0x409809,_0x513dc8,_0x541851,_0x1624d3)[_0x36ea('0x87')](function(_0x201e93){logger[_0x36ea('0x6f')](_0x36ea('0x108'),_0x36ea('0x109')+_0x409809['queue']+_0x36ea('0x10a')+_0x409809['idContact'],JSON[_0x36ea('0x5b')](_0x201e93));ami[_0x36ea('0x26')](_0x36ea('0x10b'),ut['buildObj'](_0x409809,_0x36ea('0x10c'),_0x581c81[_0x36ea('0x14')][_0x409809[_0x36ea('0x72')]]));_0xe0dde6(ut['message'](_0x36ea('0x10d')));})[_0x36ea('0x7b')](function(_0x175bd0){ut['logger'](_0x36ea('0x10e'),_0x175bd0);_0x2263d6(ut[_0x36ea('0x4d')]('Call\x20failed',_0x286313,_0x5e9160));});}else{_0x513dc8[_0x36ea('0x10f')]+=0x1;ut['logBlacklist'](_0x409809);rpcDb[_0x36ea('0x110')](_0x409809,'[Blacklist][error]');delete _0x581c81[_0x36ea('0x17')][_0x1fef8b];_0x2263d6(ut['message']('Contact\x20in\x20black\x20List',_0x286313,_0x5e9160));}});};Preview['prototype'][_0x36ea('0x9f')]=function(_0x3af9ae){return!_[_0x36ea('0x6e')](_0x3af9ae)&&!_[_0x36ea('0x6e')](_0x3af9ae[_0x36ea('0x29')])&&!_[_0x36ea('0x6e')](_0x3af9ae[_0x36ea('0x56')])&&_0x3af9ae[_0x36ea('0x56')]&&!_['isNil'](this[_0x36ea('0x16')][util['format'](_0x36ea('0x111'),_0x3af9ae[_0x36ea('0x29')])])&&!_[_0x36ea('0x6e')](this[_0x36ea('0x16')][util[_0x36ea('0x58')](_0x36ea('0x111'),_0x3af9ae[_0x36ea('0x29')])][_0x36ea('0x79')])&&(this[_0x36ea('0x16')][util['format'](_0x36ea('0x111'),_0x3af9ae[_0x36ea('0x29')])][_0x36ea('0x79')]===_0x36ea('0x112')||this['trunks'][util[_0x36ea('0x58')](_0x36ea('0x111'),_0x3af9ae[_0x36ea('0x29')])][_0x36ea('0x79')]==='unmonitored');};Preview['prototype'][_0x36ea('0x8d')]=function(_0x56c244,_0x55225b){var _0x126728=this;return new BPromise(function(_0x4aeec9,_0x4fe59e){_0x126728['execRun'](_0x56c244,_0x55225b)[_0x36ea('0x87')](function(_0x2f7000){_0x4aeec9(_['pick'](_0x2f7000,['message']));})[_0x36ea('0x7b')](function(_0x2103e0){if(_0x2103e0['unlock']){rpcDb['unlockContact'](_0x56c244);}if(_0x2103e0[_0x36ea('0x56')]){rpcDb[_0x36ea('0x90')](_0x56c244);}_0x4fe59e(_[_0x36ea('0x76')](_0x2103e0,['message']));});});};Preview['prototype'][_0x36ea('0x113')]=function(_0x1d1185,_0x3f66a9){var _0x13bd0e=this;return new BPromise(function(_0x4fc6c0,_0xa2ae34){var _0x40cce3,_0x7b6c7b;rpcDb[_0x36ea('0x114')](_0x1d1185)['then'](function(_0x3adadc){if(!_[_0x36ea('0x6e')](_0x3adadc[0x0])){_0x7b6c7b=_0x3adadc[0x0][_0x36ea('0x115')]?![]:!![];_0x40cce3=_0x3adadc[0x0][_0x36ea('0x115')]?!![]:![];_0x40cce3=_0x3f66a9?!![]:_0x40cce3;}var _0x3ba374=_0x13bd0e[_0x36ea('0x116')](_0x3adadc);if(_0x3ba374[_0x36ea('0x117')]){rpcDb[_0x36ea('0x118')](_[_0x36ea('0x76')](_0x3adadc[0x0],[_0x36ea('0x105'),_0x36ea('0x119')]))[_0x36ea('0x87')](function(_0x3406fe){_0x13bd0e[_0x36ea('0x102')](_0x3406fe,_0x3adadc[0x0],_0x3f66a9,_0x7b6c7b,_0x40cce3)['then'](function(_0x484941){_0x4fc6c0(_0x484941);})[_0x36ea('0x7b')](function(_0x41a66f){_0xa2ae34(_0x41a66f);});})[_0x36ea('0x7b')](function(_0x20684c){ut[_0x36ea('0x61')](_0x36ea('0x11a'),_0x20684c);_0xa2ae34(ut[_0x36ea('0x4d')](_0x36ea('0x11b'),_0x7b6c7b,_0x40cce3));});}else{_0xa2ae34(ut[_0x36ea('0x4d')](_0x3ba374['message'],_0x7b6c7b,_0x40cce3));}})[_0x36ea('0x7b')](function(_0x2f5604){ut['logger'](_0x36ea('0x11c'),_0x2f5604);_0xa2ae34(ut[_0x36ea('0x4d')]('Call\x20unsuccessful',![],!![]));});});};Preview[_0x36ea('0xf')]['validateContact']=function(_0x8d1141){if(_[_0x36ea('0x6e')](_0x8d1141)||_[_0x36ea('0x11d')](_0x8d1141)||!_[_0x36ea('0x6e')](_0x8d1141[0x0]['Agent'])&&_[_0x36ea('0x6e')](_0x8d1141[0x0]['Agent'][_0x36ea('0x29')])){ut['logger']('[Preview][validateContact][Empty\x20Contact]',_0x8d1141);return{'isValid':![],'message':_0x36ea('0x11e')};}var _0x7b2f60=this[_0x36ea('0x14')][_0x8d1141[0x0][_0x36ea('0x71')][_0x36ea('0x29')]];_0x7b2f60['message']=_0x36ea('0xa2');if(_[_0x36ea('0x6e')](_0x7b2f60)){ut['logger'](_0x36ea('0x11f'),_0x7b2f60);return{'isValid':![],'message':_0x36ea('0x120')};}if(!this[_0x36ea('0x9f')](_0x7b2f60[_0x36ea('0x55')])){ut['logger'](_0x36ea('0x121'),_0x36ea('0x122')+_0x7b2f60[_0x36ea('0x29')]+_0x36ea('0x123'));if(!this['isTrunkReachable'](_0x7b2f60['TrunkBackup'])){ut[_0x36ea('0x61')](_0x36ea('0x121'),_0x7b2f60[_0x36ea('0x29')]+'\x20Trunk\x20Backup\x20is\x20not\x20active');return{'isValid':![],'message':_0x36ea('0x124')};}}if(!ut['isActive'](_0x7b2f60[_0x36ea('0x37')])){ut['logger'](_0x36ea('0x125'),_0x7b2f60[_0x36ea('0x29')]+_0x36ea('0x126'));return{'isValid':![],'message':_0x36ea('0x122')+_0x7b2f60[_0x36ea('0x29')]+_0x36ea('0x126')};}return{'isValid':!![],'message':'Is\x20Valid'};};Preview[_0x36ea('0xf')][_0x36ea('0x127')]=function(_0x5c180f,_0x418bdb,_0x4c1237,_0x465a38){var _0x151ffa=this;return new BPromise(function(_0x20132f,_0x115bd7){var _0x587b07=_0x5c180f[_0x36ea('0xb9')];var _0x181efb=_0x151ffa[_0x36ea('0x9f')](_0x418bdb[_0x36ea('0x55')])?util[_0x36ea('0x58')](_0x36ea('0x128'),_0x418bdb['Trunk'][_0x36ea('0x29')],_[_0x36ea('0x6e')](_0x418bdb[_0x36ea('0x3b')])?'':_0x418bdb[_0x36ea('0x3b')][_0x36ea('0x129')]()||'',_0x418bdb[_0x36ea('0x12a')]>0x0?_0x4c1237[_0x36ea('0x103')][_0x36ea('0x104')][_0x36ea('0x12b')](_0x418bdb['dialCutDigit']):_0x4c1237[_0x36ea('0x103')][_0x36ea('0x104')]):util[_0x36ea('0x58')](_0x36ea('0x128'),_[_0x36ea('0x6e')](_0x418bdb[_0x36ea('0xa0')])?_0x418bdb[_0x36ea('0x55')][_0x36ea('0x29')]:_0x418bdb[_0x36ea('0xa0')]['name'],_[_0x36ea('0x6e')](_0x418bdb[_0x36ea('0x3b')])?'':_0x418bdb[_0x36ea('0x3b')][_0x36ea('0x129')]()||'',_0x418bdb['dialCutDigit']>0x0?_0x4c1237[_0x36ea('0x103')][_0x36ea('0x104')][_0x36ea('0x12b')](_0x418bdb['dialCutDigit']):_0x4c1237[_0x36ea('0x103')][_0x36ea('0x104')]);var _0x5dd7c3=_0x151ffa[_0x36ea('0x9f')](_0x418bdb[_0x36ea('0x55')])?ut['getCallerId'](_0x418bdb[_0x36ea('0x55')][_0x36ea('0x12c')],_0x418bdb['dialOriginateCallerIdName'],_0x418bdb['dialRandomLastDigitCallerIdNumber']>0x0?ut['getCallerIdRandom'](_0x418bdb[_0x36ea('0x12d')],_0x418bdb[_0x36ea('0x12e')]):_0x418bdb['dialOriginateCallerIdNumber']):ut[_0x36ea('0x12f')](_['isNil'](_0x418bdb[_0x36ea('0xa0')])?_0x418bdb['Trunk'][_0x36ea('0x12c')]:_0x418bdb[_0x36ea('0xa0')][_0x36ea('0x12c')],_0x418bdb[_0x36ea('0x39')],_0x418bdb['dialRandomLastDigitCallerIdNumber']>0x0?ut[_0x36ea('0x130')](_0x418bdb[_0x36ea('0x12d')],_0x418bdb[_0x36ea('0x12e')]):_0x418bdb['dialOriginateCallerIdNumber']);if(_0x5dd7c3){_0x5c180f[_0x36ea('0x131')]=ut[_0x36ea('0x132')](_0x5dd7c3);_0x5c180f['originatecalleridnum']=ut['extractCalleridNumber'](_0x5dd7c3);}var _0x5aa3fb=ut['addVariables'](_0x418bdb,_0x4c1237,_0x181efb,_0x5dd7c3,_0x587b07,_0x5c180f);_['merge'](_0x5c180f,ut['toLowerVariables'](_0x5aa3fb));_0x5c180f[_0x36ea('0x91')]=moment()[_0x36ea('0x58')](_0x36ea('0x133'));ami[_0x36ea('0x134')](ut[_0x36ea('0x135')](_0x5c180f,_0x418bdb,_0x5aa3fb,_0x5c180f[_0x36ea('0xcc')],_0x465a38))[_0x36ea('0x87')](function(_0x4b2c00){var _0x1f8e27=_0x5c180f[_0x36ea('0x136')];if(!_[_0x36ea('0x6e')](_0x1f8e27)){if(!_[_0x36ea('0x6e')](_0x151ffa['agents'][_0x1f8e27])){_0x151ffa['agents'][_0x1f8e27][_0x36ea('0x137')]=_0x5c180f[_0x36ea('0x138')];emit(util[_0x36ea('0x58')](_0x36ea('0x139'),_0x151ffa['agents'][_0x1f8e27][_0x36ea('0x29')]),_0x36ea('0x13a'),{'destaccountcode':_0x151ffa[_0x36ea('0x86')][_0x1f8e27]['accountcode'],'destconnectedlinenum':_0x5c180f[_0x36ea('0x138')]});}}_0x418bdb[_0x36ea('0x4e')]+=0x1;logger[_0x36ea('0x6f')](_0x36ea('0x13b'),_0x587b07,'\x20Queue',_0x418bdb[_0x36ea('0x29')],_0x36ea('0x73'),_0x418bdb[_0x36ea('0x4e')]);_0x20132f(_0x4b2c00);})[_0x36ea('0x7b')](function(_0x55c399){ut[_0x36ea('0xfb')](_0x5c180f,0xe,_0x36ea('0x13c'));rpcDb[_0x36ea('0xf9')](_0x5c180f,'[originateFailure][logOriginateFailure]');_0x115bd7(_0x55c399);});});};Preview['prototype'][_0x36ea('0x1f')]=function(_0x2a84d5){if(this['actions'][_0x2a84d5['linkedid']]){this[_0x36ea('0x17')][_0x2a84d5[_0x36ea('0xb4')]][_0x36ea('0x7a')]=_0x2a84d5[_0x36ea('0x7a')];}};Preview[_0x36ea('0xf')][_0x36ea('0x19')]=function(_0x31bd37){var _0x529e75=this;var _0x2ffbfb=this[_0x36ea('0x17')][_0x31bd37[_0x36ea('0x13d')]];if(_0x2ffbfb){if(_0x2ffbfb['lookAgent']&&this[_0x36ea('0x86')][_0x2ffbfb[_0x36ea('0x107')]]){ut[_0x36ea('0x13e')](_0x2ffbfb,this[_0x36ea('0x86')][_0x2ffbfb[_0x36ea('0x107')]][_0x36ea('0x29')],this[_0x36ea('0x86')][_0x2ffbfb[_0x36ea('0x107')]]['id']);}var _0x4d2a5f=_[_0x36ea('0x13f')](_0x2ffbfb);_0x4d2a5f[_0x36ea('0xb6')]=moment()[_0x36ea('0x58')]('YYYY-MM-DD\x20HH:mm:ss');var _0x217128=_0x529e75[_0x36ea('0x14')][_0x2ffbfb[_0x36ea('0x72')]];if(ut[_0x36ea('0x140')](_0x31bd37[_0x36ea('0x141')])){if(_0x2ffbfb['unlockAgent']){rpcDb[_0x36ea('0x142')](_0x2ffbfb[_0x36ea('0x143')]);}if(_0x2ffbfb['activeContact']){rpcDb[_0x36ea('0x90')](_0x2ffbfb[_0x36ea('0x143')]);}ami[_0x36ea('0x26')](_0x36ea('0x144'),ut['buildObj'](_0x2ffbfb,_0x36ea('0x145'),this['campaignsPreview'][_0x2ffbfb[_0x36ea('0x72')]]));this[_0x36ea('0xf5')](_0x4d2a5f,_0x217128,_0x31bd37);}else{_0x2ffbfb['starttime']=moment()['format'](_0x36ea('0x133'));ut[_0x36ea('0xfb')](_0x4d2a5f,0x4,_0x36ea('0xbf'));rpcDb[_0x36ea('0xf9')](_0x4d2a5f,_0x36ea('0x146'));}}};Preview[_0x36ea('0xf')][_0x36ea('0x147')]=function(_0x36cfdf){var _0x267a57=this;var _0x4099e9=this[_0x36ea('0x17')][_0x36cfdf[_0x36ea('0xb4')]];var _0x4bd24f;if(_0x4099e9){_0x4bd24f=this['campaignsPreview'][_0x4099e9[_0x36ea('0x72')]];logger['info']('[syncHangup][talking]',_0x36cfdf['linkedid'],_0x36ea('0xba'),_0x4bd24f[_0x36ea('0x29')],_0x36ea('0x74'),_0x4bd24f[_0x36ea('0x2e')]);}if(this['actions'][_0x36cfdf[_0x36ea('0xb4')]]&&_0x36cfdf[_0x36ea('0xb4')]!==_0x36cfdf[_0x36ea('0xb9')]){if(_0x36cfdf[_0x36ea('0x148')]==='16'&&this[_0x36ea('0x17')][_0x36cfdf[_0x36ea('0xb4')]][_0x36ea('0x75')]){this['callProgressDetectingCustomer'](_0x36cfdf,_0x36cfdf[_0x36ea('0xb4')],_0x36cfdf['cause']);}else if(this[_0x36ea('0x17')][_0x36cfdf[_0x36ea('0xb4')]][_0x36ea('0x75')]){logger['info'](_0x36ea('0x149'),_0x36cfdf[_0x36ea('0xb4')],_0x36cfdf[_0x36ea('0x148')],'\x20Queue',_0x4bd24f[_0x36ea('0x29')],_0x36ea('0x74'),_0x4bd24f['pTalking']);this[_0x36ea('0xa3')](_0x36cfdf,_0x36cfdf['linkedid'],_0x36cfdf['cause']);}}else if(_0x4099e9&&_[_0x36ea('0x6e')](_0x4099e9[_0x36ea('0x14a')])&&_0x4bd24f[_0x36ea('0x14b')]&&_0x36cfdf['linkedid']===_0x36cfdf[_0x36ea('0xb9')]&&_[_0x36ea('0x6e')](_0x36cfdf[_0x36ea('0xf8')])&&_0x36cfdf[_0x36ea('0x148')]==='16'&&_0x36cfdf[_0x36ea('0x14c')]==='6'&&_[_0x36ea('0xf6')](_0x4099e9[_0x36ea('0x14d')])){if(_0x4099e9[_0x36ea('0xb3')]){rpcDb[_0x36ea('0x142')](_0x4099e9[_0x36ea('0x143')]);}if(_0x4099e9[_0x36ea('0xcc')]){rpcDb[_0x36ea('0x90')](_0x4099e9[_0x36ea('0x143')]);}_0x36cfdf[_0x36ea('0xf8')]='22';this[_0x36ea('0xf5')](_0x4099e9,_0x4bd24f,_0x36cfdf);}else if(_0x4099e9&&_0x4099e9[_0x36ea('0x14d')]){if(_0x36cfdf[_0x36ea('0x148')]==='16'&&this[_0x36ea('0x17')][_0x36cfdf['linkedid']]['dialAnswer']){logger['info'](_0x36ea('0x14e'),_0x36cfdf['linkedid'],_0x36cfdf[_0x36ea('0x148')],_0x36ea('0xba'),_0x4bd24f[_0x36ea('0x29')],_0x36ea('0x74'),_0x4bd24f['pTalking']);this[_0x36ea('0xa3')](_0x36cfdf,_0x36cfdf[_0x36ea('0xb4')],_0x36cfdf[_0x36ea('0x148')]);}else if(this[_0x36ea('0x17')][_0x36cfdf['linkedid']][_0x36ea('0x75')]){logger[_0x36ea('0x6f')](_0x36ea('0x149'),_0x36cfdf[_0x36ea('0xb4')],_0x36cfdf[_0x36ea('0x148')],_0x36ea('0xba'),_0x4bd24f['name'],_0x36ea('0x74'),_0x4bd24f[_0x36ea('0x2e')]);this[_0x36ea('0xa3')](_0x36cfdf,_0x36cfdf[_0x36ea('0xb4')],_0x36cfdf['cause']);}}};Preview['prototype']['syncDialEnd']=function(_0x9e9a8f){if(this[_0x36ea('0x17')][_0x9e9a8f[_0x36ea('0xf4')]]&&_0x9e9a8f[_0x36ea('0xf4')]!==_0x9e9a8f[_0x36ea('0x14f')]){this[_0x36ea('0xa3')](_0x9e9a8f,_0x9e9a8f['destlinkedid'],_0x9e9a8f[_0x36ea('0xeb')]);}};Preview['prototype']['syncHangupRequest']=function(_0x6f0333){if(this[_0x36ea('0x17')][_0x6f0333[_0x36ea('0xb4')]]&&_0x6f0333['linkedid']!==_0x6f0333['uniqueid']&&!this[_0x36ea('0x17')][_0x6f0333[_0x36ea('0xb4')]][_0x36ea('0x75')]){if(_0x6f0333[_0x36ea('0x148')]==='1'){this[_0x36ea('0xa3')](_0x6f0333,_0x6f0333[_0x36ea('0xb4')],_0x6f0333['cause']);}}};Preview[_0x36ea('0xf')]['addVariable']=function(_0x43551a,_0x24d5af,_0x4928c3){if(this['actions'][_0x43551a]){if(_[_0x36ea('0x6e')](this[_0x36ea('0x17')][_0x43551a][_0x36ea('0x150')])){this[_0x36ea('0x17')][_0x43551a][_0x36ea('0x150')]={};}this[_0x36ea('0x17')][_0x43551a]['variables'][_0x24d5af]=_0x4928c3;}};Preview[_0x36ea('0xf')][_0x36ea('0x21')]=function(_0x5642f7){try{if(!_[_0x36ea('0x6e')](_0x5642f7)){if(ut[_0x36ea('0x151')](_[_0x36ea('0x152')](_0x5642f7['variable'])[0x0])){this[_0x36ea('0x153')](_0x5642f7[_0x36ea('0xb9')],_[_0x36ea('0x152')](_0x5642f7[_0x36ea('0x154')])[0x0],_0x5642f7[_0x36ea('0x155')]);}}}catch(_0x14fcfd){logger['error'](_0x36ea('0x156'),util['inspect'](_0x14fcfd,{'showHidden':![],'depth':null}));}};Preview[_0x36ea('0xf')][_0x36ea('0x23')]=function(_0x5715cd){if(_0x5715cd){if(this['actions'][_0x5715cd['transfertargetlinkedid']]){this['actions'][_0x5715cd[_0x36ea('0x157')]][_0x36ea('0x14d')]=!![];}}};Preview[_0x36ea('0xf')][_0x36ea('0x25')]=function(_0x3c36b6){if(_0x3c36b6){if(this['actions'][_0x3c36b6['transfererlinkedid']]){this[_0x36ea('0x17')][_0x3c36b6[_0x36ea('0x158')]][_0x36ea('0x14d')]=!![];}}};module[_0x36ea('0x159')]=Preview;
\ No newline at end of file
index b6a2fb5..9909961 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b1b=['createHistory','catch','[createHistory]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerHistory','createCustomerFinal','UserId','active','rescheduleContact','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','answertime','queuecallercomplete','connectedlinename','membername','context','from-sip','exten','xcally-motion-preview','holdtime','lastAssignedTo','queuecallerexitreason','COMPLETED','create','getContactRecallMe','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','bluebird','preview','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','resolve','then'];(function(_0x580c48,_0x16cc04){var _0x1c81fd=function(_0x4500c1){while(--_0x4500c1){_0x580c48['push'](_0x580c48['shift']());}};_0x1c81fd(++_0x16cc04);}(_0x7b1b,0xde));var _0xb7b1=function(_0x5de9aa,_0x101027){_0x5de9aa=_0x5de9aa-0x0;var _0x73694c=_0x7b1b[_0x5de9aa];return _0x73694c;};'use strict';var util=require(_0xb7b1('0x0'));var BPromise=require(_0xb7b1('0x1'));var logger=require('../../../config/logger')(_0xb7b1('0x2'));var _=require(_0xb7b1('0x3'));var cmHopper=require(_0xb7b1('0x4'));var cmHopperFinal=require(_0xb7b1('0x5'));var cmHopperHistory=require(_0xb7b1('0x6'));var cmHopperBlack=require(_0xb7b1('0x7'));var voiceQueueRt=require('../rpc/voiceQueueRt');var agentReportPreview=require(_0xb7b1('0x8'));var voiceQueueReport=require(_0xb7b1('0x9'));function loggerCatch(_0x288697){return function(_0x417076){logger[_0xb7b1('0xa')](_0x288697,util[_0xb7b1('0xb')](_0x417076,{'showHidden':![],'depth':null}));};}function create(_0xd80993){return BPromise[_0xb7b1('0xc')]()[_0xb7b1('0xd')](cmHopperHistory[_0xb7b1('0xe')](_0xd80993))['catch'](loggerCatch('[createHistory]\x20'));}function createAgent(_0x5293de){return BPromise[_0xb7b1('0xc')]()[_0xb7b1('0xd')](agentReportPreview[_0xb7b1('0xe')](_0x5293de))[_0xb7b1('0xf')](loggerCatch(_0xb7b1('0x10')));}function moveContact(_0x5dff9d){return BPromise[_0xb7b1('0xc')]()[_0xb7b1('0xd')](cmHopper[_0xb7b1('0x11')](_0x5dff9d,!![]))[_0xb7b1('0xf')](loggerCatch(_0xb7b1('0x12')));}exports[_0xb7b1('0x13')]=function(_0x2cedaa){return BPromise[_0xb7b1('0xc')]()[_0xb7b1('0xd')](cmHopperBlack[_0xb7b1('0x13')](_0x2cedaa))[_0xb7b1('0xf')](loggerCatch(_0xb7b1('0x14')));};exports['getContactPreview']=function(_0x27a431){return BPromise[_0xb7b1('0xc')]()['then'](cmHopper[_0xb7b1('0x15')](_0x27a431))[_0xb7b1('0xf')](loggerCatch(_0xb7b1('0x16')));};exports[_0xb7b1('0xe')]=function(_0x2cc398,_0x1222be){create(_0x2cc398)[_0xb7b1('0xf')](loggerCatch(_0x1222be));moveContact(_0x2cc398)[_0xb7b1('0xf')](loggerCatch(_0x1222be));};exports[_0xb7b1('0x17')]=function(_0x3de42d,_0x4f414c){createAgent(_0x3de42d)[_0xb7b1('0xf')](loggerCatch(_0x4f414c));};exports[_0xb7b1('0x18')]=function(_0x1562ce,_0x2c23ac){create(_0x1562ce)['catch'](loggerCatch(_0x2c23ac));};exports[_0xb7b1('0x19')]=function(_0x239c59,_0x1d547a){moveContact(_0x239c59)['catch'](loggerCatch(_0x1d547a));};exports['rescheduleContact']=function(_0x5378d1,_0x3a4057,_0xb2edac){if(_0x3a4057){_0x5378d1[_0xb7b1('0x1a')]=null;}if(_0xb2edac){_0x5378d1[_0xb7b1('0x1b')]=![];}return BPromise[_0xb7b1('0xc')]()[_0xb7b1('0xd')](cmHopper[_0xb7b1('0x1c')](_0x5378d1))[_0xb7b1('0xf')](loggerCatch(_0xb7b1('0x1d')));};exports[_0xb7b1('0x1e')]=function(_0x2726b8){return BPromise[_0xb7b1('0xc')]()['then'](cmHopper[_0xb7b1('0x1e')](_0x2726b8))[_0xb7b1('0xf')](loggerCatch(_0xb7b1('0x1f')));};exports['unlockContact']=function(_0x99a745){return BPromise[_0xb7b1('0xc')]()[_0xb7b1('0xd')](cmHopper[_0xb7b1('0x20')]({'UserId':null},_0x99a745,0x1))['catch'](loggerCatch(_0xb7b1('0x21')));};exports[_0xb7b1('0x22')]=function(_0x431eb4){return BPromise[_0xb7b1('0xc')]()[_0xb7b1('0xd')](cmHopper[_0xb7b1('0x20')]({'active':![]},_0x431eb4,0x1))[_0xb7b1('0xf')](loggerCatch(_0xb7b1('0x23')));};exports['crateCustomerReportQueue']=function(_0x5641e4){var _0x1e44b1={};_0x1e44b1['type']=_0x5641e4[_0xb7b1('0x24')];_0x1e44b1[_0xb7b1('0x25')]=_0x5641e4[_0xb7b1('0x25')];_0x1e44b1[_0xb7b1('0x26')]=_0x5641e4['calleridnum'];_0x1e44b1[_0xb7b1('0x27')]=_0x5641e4['calleridname'];_0x1e44b1[_0xb7b1('0x28')]=_0x5641e4['queue'];_0x1e44b1[_0xb7b1('0x29')]=_0x5641e4['answertime'];_0x1e44b1[_0xb7b1('0x2a')]=_0x5641e4[_0xb7b1('0x2b')];_0x1e44b1[_0xb7b1('0x2c')]=0x1;_0x1e44b1['queuecallercompleteAt']=_0x5641e4['endtime'];_0x1e44b1[_0xb7b1('0x2d')]=_0x5641e4[_0xb7b1('0x2e')];_0x1e44b1[_0xb7b1('0x2f')]=_0xb7b1('0x30');_0x1e44b1[_0xb7b1('0x31')]=_0xb7b1('0x32');_0x1e44b1[_0xb7b1('0x33')]=0x0;_0x1e44b1['assigned']=0x1;_0x1e44b1[_0xb7b1('0x34')]=_0x5641e4[_0xb7b1('0x2e')];_0x1e44b1[_0xb7b1('0x35')]=_0xb7b1('0x36');return BPromise[_0xb7b1('0xc')]()[_0xb7b1('0xd')](voiceQueueReport[_0xb7b1('0x37')](_0x1e44b1))[_0xb7b1('0xf')](loggerCatch('[voiceQueueReport]\x20'));};exports[_0xb7b1('0x38')]=function(_0x15ae8d,_0x48e714){return BPromise[_0xb7b1('0xc')]()[_0xb7b1('0xd')](cmHopper[_0xb7b1('0x38')](_0x15ae8d,_0x48e714))[_0xb7b1('0xf')](loggerCatch('[GetContactRecallMe]\x20'));};exports[_0xb7b1('0x39')]=function(_0x113c32){return BPromise[_0xb7b1('0xc')]()[_0xb7b1('0xd')](cmHopper[_0xb7b1('0x1c')](_0x113c32,!![],!![]))[_0xb7b1('0xf')](loggerCatch(_0xb7b1('0x3a')));};
\ No newline at end of file
+var _0xe087=['rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','bluebird','preview','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','resolve','[createHistory]\x20','createHistory','catch','moveContactManagedDialer','[moveContactManagedDialer]\x20','then','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','unlockContact','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','endtime','membername','from-sip','exten','xcally-motion-preview','holdtime','assigned','lastAssignedTo','queuecallerexitreason','COMPLETED','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20'];(function(_0x10244e,_0x80c616){var _0x101359=function(_0x376508){while(--_0x376508){_0x10244e['push'](_0x10244e['shift']());}};_0x101359(++_0x80c616);}(_0xe087,0x6e));var _0x7e08=function(_0xa41ff,_0x4bd1d5){_0xa41ff=_0xa41ff-0x0;var _0x2a87ff=_0xe087[_0xa41ff];return _0x2a87ff;};'use strict';var util=require(_0x7e08('0x0'));var BPromise=require(_0x7e08('0x1'));var logger=require('../../../config/logger')(_0x7e08('0x2'));var _=require('lodash');var cmHopper=require(_0x7e08('0x3'));var cmHopperFinal=require(_0x7e08('0x4'));var cmHopperHistory=require(_0x7e08('0x5'));var cmHopperBlack=require(_0x7e08('0x6'));var voiceQueueRt=require(_0x7e08('0x7'));var agentReportPreview=require(_0x7e08('0x8'));var voiceQueueReport=require(_0x7e08('0x9'));function loggerCatch(_0xe3727){return function(_0x4a0c52){logger[_0x7e08('0xa')](_0xe3727,util['inspect'](_0x4a0c52,{'showHidden':![],'depth':null}));};}function create(_0x4fcd54){return BPromise[_0x7e08('0xb')]()['then'](cmHopperHistory['createHistory'](_0x4fcd54))['catch'](loggerCatch(_0x7e08('0xc')));}function createAgent(_0x43da4e){return BPromise[_0x7e08('0xb')]()['then'](agentReportPreview[_0x7e08('0xd')](_0x43da4e))[_0x7e08('0xe')](loggerCatch(_0x7e08('0xc')));}function moveContact(_0x4d9ba5){return BPromise[_0x7e08('0xb')]()['then'](cmHopper[_0x7e08('0xf')](_0x4d9ba5,!![]))['catch'](loggerCatch(_0x7e08('0x10')));}exports['checkIsBlackList']=function(_0x103056){return BPromise[_0x7e08('0xb')]()[_0x7e08('0x11')](cmHopperBlack[_0x7e08('0x12')](_0x103056))[_0x7e08('0xe')](loggerCatch(_0x7e08('0x13')));};exports[_0x7e08('0x14')]=function(_0x548916){return BPromise['resolve']()[_0x7e08('0x11')](cmHopper['getContactPreview'](_0x548916))[_0x7e08('0xe')](loggerCatch(_0x7e08('0x15')));};exports[_0x7e08('0xd')]=function(_0x224734,_0x4f039d){create(_0x224734)['catch'](loggerCatch(_0x4f039d));moveContact(_0x224734)[_0x7e08('0xe')](loggerCatch(_0x4f039d));};exports['createAgentHistory']=function(_0x593f37,_0x50710f){createAgent(_0x593f37)[_0x7e08('0xe')](loggerCatch(_0x50710f));};exports[_0x7e08('0x16')]=function(_0x37d900,_0x388112){create(_0x37d900)[_0x7e08('0xe')](loggerCatch(_0x388112));};exports[_0x7e08('0x17')]=function(_0x38d0c6,_0x5cb0ef){moveContact(_0x38d0c6)[_0x7e08('0xe')](loggerCatch(_0x5cb0ef));};exports[_0x7e08('0x18')]=function(_0x3d796b,_0x4d59a6,_0x46e1ad){if(_0x4d59a6){_0x3d796b[_0x7e08('0x19')]=null;}if(_0x46e1ad){_0x3d796b[_0x7e08('0x1a')]=![];}return BPromise[_0x7e08('0xb')]()['then'](cmHopper[_0x7e08('0x18')](_0x3d796b))[_0x7e08('0xe')](loggerCatch(_0x7e08('0x1b')));};exports['countReScheduled']=function(_0x15f4c6){return BPromise[_0x7e08('0xb')]()[_0x7e08('0x11')](cmHopper[_0x7e08('0x1c')](_0x15f4c6))['catch'](loggerCatch('[countReScheduled]\x20'));};exports[_0x7e08('0x1d')]=function(_0x2a7d30){return BPromise[_0x7e08('0xb')]()[_0x7e08('0x11')](cmHopper['unlockContact']({'UserId':null},_0x2a7d30,0x1))['catch'](loggerCatch('[unlockContact]\x20'));};exports['disableContact']=function(_0x5beed2){return BPromise[_0x7e08('0xb')]()['then'](cmHopper[_0x7e08('0x1d')]({'active':![]},_0x5beed2,0x1))[_0x7e08('0xe')](loggerCatch('[activeContact]\x20'));};exports[_0x7e08('0x1e')]=function(_0x53f80a){var _0xe4b549={};_0xe4b549[_0x7e08('0x1f')]=_0x53f80a[_0x7e08('0x1f')];_0xe4b549[_0x7e08('0x20')]=_0x53f80a['uniqueid'];_0xe4b549[_0x7e08('0x21')]=_0x53f80a[_0x7e08('0x21')];_0xe4b549[_0x7e08('0x22')]=_0x53f80a['calleridname'];_0xe4b549[_0x7e08('0x23')]=_0x53f80a[_0x7e08('0x23')];_0xe4b549[_0x7e08('0x24')]=_0x53f80a[_0x7e08('0x25')];_0xe4b549[_0x7e08('0x26')]=_0x53f80a[_0x7e08('0x25')];_0xe4b549['queuecallercomplete']=0x1;_0xe4b549['queuecallercompleteAt']=_0x53f80a[_0x7e08('0x27')];_0xe4b549['connectedlinename']=_0x53f80a[_0x7e08('0x28')];_0xe4b549['context']=_0x7e08('0x29');_0xe4b549[_0x7e08('0x2a')]=_0x7e08('0x2b');_0xe4b549[_0x7e08('0x2c')]=0x0;_0xe4b549[_0x7e08('0x2d')]=0x1;_0xe4b549[_0x7e08('0x2e')]=_0x53f80a[_0x7e08('0x28')];_0xe4b549[_0x7e08('0x2f')]=_0x7e08('0x30');return BPromise['resolve']()[_0x7e08('0x11')](voiceQueueReport['create'](_0xe4b549))[_0x7e08('0xe')](loggerCatch(_0x7e08('0x31')));};exports[_0x7e08('0x32')]=function(_0x1d4f09,_0x434d73){return BPromise['resolve']()[_0x7e08('0x11')](cmHopper[_0x7e08('0x32')](_0x1d4f09,_0x434d73))['catch'](loggerCatch(_0x7e08('0x33')));};exports[_0x7e08('0x34')]=function(_0x186dab){return BPromise[_0x7e08('0xb')]()[_0x7e08('0x11')](cmHopper['rescheduleContact'](_0x186dab,!![],!![]))['catch'](loggerCatch(_0x7e08('0x35')));};
\ No newline at end of file
index c6fc7c0..4de79f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a3a=['buildObj','lastevent','queue','interface','motionChannel','voice','mandatoryDisposition','buildAcw','agentReadyId','not_inuse','status','reachable','push','getDiff','createBody','CampaignId','idContact','campaigntype','dialAnswer','active','countnoanswerretry','countglobal','callback','callbackuniqueid','callbackat','recallme','xmd-voicequeueid','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','rtpaudioqos','rtpaudioqosrtt','bridgepvtcallid','\x5cw{0,','pow','replace','random','extractCalleridName','match','../../../../config/logger','env','XCALLY_IP_AGI','127.0.0.1','milliseconds','diff','error','inspect','logger2','info','getCallerId','isUndefined','string','isEmpty','\x22%s\x22\x20<%s>','format','isActive','isNil','Queue','name','calleridname','calleridnum','ContactId','dialer','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','U(xcally-mixmonitor-context)','\x22agi://%s/square,%s\x22','dialQueueProject','NONE','dialQueueProject2','originatecalleridnum','xcally-motion-preview','monitor_format','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','tags','createdAt','XMD-','toUpper','toLowerVariables','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','responsetime','endtime','ringtime','starttime','UserId','talktime','answertime','variablesAction','BOOKED','uniqueid','channelAgent','from-sip','countcongestionretry','countnosuchnumberretry','cloneAction','Global','scheduledAt','scheduledat','minutes','ListId','decrementTalkink','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn'];(function(_0x5275b8,_0x51e5dd){var _0x568a9b=function(_0x583a71){while(--_0x583a71){_0x5275b8['push'](_0x5275b8['shift']());}};_0x568a9b(++_0x51e5dd);}(_0x1a3a,0xb3));var _0xa1a3=function(_0x557eb3,_0x4775af){_0x557eb3=_0x557eb3-0x0;var _0xf70b1d=_0x1a3a[_0x557eb3];return _0xf70b1d;};'use strict';var util=require('util');var _=require('lodash');var moment=require('moment');var logger=require(_0xa1a3('0x0'))('preview');var ipAgi=process[_0xa1a3('0x1')][_0xa1a3('0x2')]||_0xa1a3('0x3');function getSeconds(_0x4aa399,_0x39df2a){var _0x1b0b73=moment(_0x4aa399)[_0xa1a3('0x4')](0x0);var _0x200208=moment(_0x39df2a)['milliseconds'](0x0);return _0x1b0b73[_0xa1a3('0x5')](_0x200208,'seconds');}exports['loggerCatch']=function(_0x5b28b3){return function(_0x4bce5d){logger[_0xa1a3('0x6')](_0x5b28b3,util[_0xa1a3('0x7')](_0x4bce5d,{'showHidden':![],'depth':null}));};};exports['logger']=function(_0x468b60,_0x6f8184){logger['info'](_0x468b60,util['inspect'](_0x6f8184,{'showHidden':![],'depth':null}));};exports['loggerError']=function(_0x3830f8,_0xe96c6a){logger[_0xa1a3('0x6')](_0x3830f8,util[_0xa1a3('0x7')](_0xe96c6a,{'showHidden':![],'depth':null}));};exports[_0xa1a3('0x8')]=function(_0x4b1b5d){return function(_0x73e20f){logger[_0xa1a3('0x9')](_0x4b1b5d,util[_0xa1a3('0x7')](_0x73e20f,{'showHidden':![],'depth':null}));};};exports['message']=function(_0x4f698f,_0x67b31e,_0x4d7f89){return{'message':_0x4f698f,'unlock':_0x67b31e,'active':_0x4d7f89};};exports[_0xa1a3('0xa')]=function(_0x1b6830,_0x4cde97,_0x38e658){if(!_[_0xa1a3('0xb')](_0x38e658)&&'string'===typeof _0x38e658&&!_['isEmpty'](_0x38e658)){if(!_[_0xa1a3('0xb')](_0x4cde97)&&_0xa1a3('0xc')===typeof _0x4cde97&&!_[_0xa1a3('0xd')](_0x4cde97)){return util['format'](_0xa1a3('0xe'),_0x4cde97,_0x38e658);}return util[_0xa1a3('0xf')](_0xa1a3('0xe'),_0x38e658,_0x38e658);}if(!_['isUndefined'](_0x1b6830)&&_0xa1a3('0xc')===typeof _0x1b6830&&!_[_0xa1a3('0xd')](_0x1b6830)){return _0x1b6830;}return'\x22\x22\x20<>';};exports[_0xa1a3('0x10')]=function(_0x1bcc40){if(_[_0xa1a3('0x11')](_0x1bcc40)){return![];}return _0x1bcc40;};exports['addVariables']=function(_0x261020,_0x26eb69,_0x76b239,_0x469bca,_0x50eff3,_0x208021){var _0x56cf70={'XMD-QUEUE':_0x26eb69[_0xa1a3('0x12')]?_0x26eb69['Queue'][_0xa1a3('0x13')]:'','XMD-CALLERID':_0x469bca,'XMD-CALLERID-PREVIEW':_0x208021?util[_0xa1a3('0xf')](_0xa1a3('0xe'),_0x208021[_0xa1a3('0x14')],_0x208021[_0xa1a3('0x15')]):_0x469bca,'XMD-DIALID':_0x50eff3,'XMD-CONTACTID':_0x26eb69[_0xa1a3('0x16')],'XMD-CDRTYPE':_0xa1a3('0x17'),'CALLERID(all)':_0x469bca,'XMD-VOICEQUEUEID':_0x26eb69[_0xa1a3('0x18')],'XMD-DIALCHANNEL':_0x76b239,'XMD-DIALTIMEOUT':_0x261020[_0xa1a3('0x19')]||0x1e,'XMD-DIALOPTIONS':util[_0xa1a3('0xf')](_0xa1a3('0x1a'),_0x261020['dialQueueProject2']?'g':'',_['isEmpty'](_0x261020['monitor_format'])?'':_0xa1a3('0x1b')),'XMD-DIALURL':_0x261020['dialPreviewUrl']||'','XMD-AGI':_0x261020['dialQueueProject']?util[_0xa1a3('0xf')](_0xa1a3('0x1c'),ipAgi,_0x261020[_0xa1a3('0x1d')]):_0xa1a3('0x1e'),'XMD-AGIAFTER':_0x261020[_0xa1a3('0x1f')]?util[_0xa1a3('0xf')]('\x22agi://%s/square,%s\x22',ipAgi,_0x261020[_0xa1a3('0x1f')]):_0xa1a3('0x1e'),'XMD-ORIGINATECALLERIDNUM':_0x208021?_0x208021[_0xa1a3('0x20')]:'','XMD-ORIGINATECALLERIDNAME':_0x208021?_0x208021['originatecalleridname']:'','XMD-DESTINATION':_0xa1a3('0x21')};if(!_[_0xa1a3('0xd')](_0x261020[_0xa1a3('0x22')])){_0x56cf70[util[_0xa1a3('0xf')]('%s',_0xa1a3('0x23'))]=_0x261020[_0xa1a3('0x22')];_0x56cf70[util[_0xa1a3('0xf')]('%s',_0xa1a3('0x24'))]=_0x50eff3;}if(_0x26eb69&&_0x26eb69['Contact']){for(var _0x2bb23d in _0x26eb69[_0xa1a3('0x25')]){if(_0x26eb69[_0xa1a3('0x25')][_0xa1a3('0x26')](_0x2bb23d)){if(!_['isNil'](_0x26eb69[_0xa1a3('0x25')][_0x2bb23d])&&_0x2bb23d!=='id'&&_0x2bb23d!==_0xa1a3('0x27')&&_0x2bb23d!==_0xa1a3('0x28')&&_0x2bb23d!=='updatedAt'){_0x56cf70[util[_0xa1a3('0xf')]('%s%s',_0xa1a3('0x29'),_[_0xa1a3('0x2a')](_0x2bb23d))]=_0x26eb69[_0xa1a3('0x25')][_0x2bb23d];}}}}return _0x56cf70;};exports[_0xa1a3('0x2b')]=function(_0x3c32a1){var _0x38e38f={};for(var _0xd98709 in _0x3c32a1){if(_0x3c32a1[_0xa1a3('0x26')](_0xd98709)){_0x38e38f[util[_0xa1a3('0xf')]('%s',_['toLower'](_0xd98709))]=_0x3c32a1[_0xd98709];}}return{'variables':_0x38e38f};};exports[_0xa1a3('0x2c')]=function(_0x545e68,_0x58e435){if(!_['isNil'](_0x545e68)){if(_0x545e68[_0xa1a3('0x26')]('originated')){if(_0x545e68['originated']>0x0){_0x545e68[_0xa1a3('0x2d')]-=0x1;}else{logger['error'](_0xa1a3('0x2e'),_0x58e435);}}}else{logger[_0xa1a3('0x6')](_0xa1a3('0x2f'),_0x58e435);}};exports['logBlacklist']=function(_0x1ae27f){var _0x3546df=moment()[_0xa1a3('0xf')](_0xa1a3('0x30'));_0x1ae27f[_0xa1a3('0x31')]=0xd;_0x1ae27f[_0xa1a3('0x32')]=_0xa1a3('0x33');_0x1ae27f['starttime']=_0x3546df;_0x1ae27f[_0xa1a3('0x34')]=_0x3546df;_0x1ae27f[_0xa1a3('0x35')]=_0x3546df;};exports['logAgent']=function(_0xf58243,_0x30ea8d,_0x4a0216){var _0x3aed63=moment()[_0xa1a3('0xf')]('YYYY-MM-DD\x20HH:mm:ss');_0xf58243[_0xa1a3('0x31')]=_0x30ea8d;_0xf58243[_0xa1a3('0x32')]=_0x4a0216;_0xf58243['responsetime']=_0x3aed63;_0xf58243[_0xa1a3('0x36')]=getSeconds(_0xf58243[_0xa1a3('0x34')],_0xf58243[_0xa1a3('0x37')]);};exports['logLookAgent']=function(_0x1028fb,_0x16195b,_0x601b79){_0x1028fb['membername']=_0x16195b;_0x1028fb[_0xa1a3('0x38')]=_0x601b79;};exports['logCustomer']=function(_0x4cb8ee,_0x19a011,_0x2cbeb2){var _0x2aa869=moment()['format'](_0xa1a3('0x30'));_0x4cb8ee[_0xa1a3('0x31')]=_0x19a011;_0x4cb8ee[_0xa1a3('0x32')]=_0x2cbeb2;_0x4cb8ee['responsetime']=_0x4cb8ee['responsetime']?_0x4cb8ee[_0xa1a3('0x34')]:_0x2aa869;_0x4cb8ee[_0xa1a3('0x35')]=_0x4cb8ee['endtime']?_0x4cb8ee['endtime']:_0x2aa869;_0x4cb8ee[_0xa1a3('0x36')]=getSeconds(_0x4cb8ee['responsetime']||0x0,_0x4cb8ee[_0xa1a3('0x37')]||0x0);_0x4cb8ee[_0xa1a3('0x39')]=_0x4cb8ee[_0xa1a3('0x3a')]?getSeconds(_0x4cb8ee[_0xa1a3('0x35')],_0x4cb8ee[_0xa1a3('0x3a')]):0x0;};exports['isFailure']=function(_0x301bbd){return _0x301bbd==='Failure';};exports[_0xa1a3('0x3b')]=function(_0x489267,_0x9171e7,_0x301953,_0x546bcf,_0x4c9270){var _0x523b1d=_0x546bcf?'RECALL':_0x489267[_0xa1a3('0x14')];_0x523b1d=_0x4c9270?_0xa1a3('0x3c'):_0x523b1d;return{'actionid':_0x489267[_0xa1a3('0x3d')],'action':'originate','channel':_0x489267[_0xa1a3('0x3e')],'callerid':util[_0xa1a3('0xf')](_0xa1a3('0xe'),_0x523b1d,_0x489267[_0xa1a3('0x15')]),'Exten':'xcally-motion-preview','Context':_0xa1a3('0x3f'),'Priority':'1','variable':_0x301953,'timeout':(_0x9171e7['timeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x489267[_0xa1a3('0x3d')]};};exports['totalGlobal']=function(_0x34961e){return _0x34961e['countbusyretry']+_0x34961e[_0xa1a3('0x40')]+_0x34961e['countnoanswerretry']+_0x34961e['countagentrejectretry']+_0x34961e[_0xa1a3('0x41')];};exports[_0xa1a3('0x42')]=function(_0x18dfb8){var _0x18e512=_['clone'](_0x18dfb8);_0x18e512[_0xa1a3('0x31')]=0xf;_0x18e512[_0xa1a3('0x32')]=_0xa1a3('0x43');return _0x18e512;};exports[_0xa1a3('0x44')]=function(_0x26c7e8,_0x41df35,_0x1b394b){var _0x472939={};_0x472939[_0x41df35]=_0x26c7e8[_0x41df35];_0x472939['active']=![];_0x472939[_0xa1a3('0x45')]=moment()['add'](_0x1b394b,_0xa1a3('0x46'))[_0xa1a3('0xf')](_0xa1a3('0x30'));_0x472939[_0xa1a3('0x16')]=_0x26c7e8[_0xa1a3('0x16')];_0x472939[_0xa1a3('0x47')]=_0x26c7e8[_0xa1a3('0x47')];_0x472939[_0xa1a3('0x18')]=_0x26c7e8[_0xa1a3('0x18')]||undefined;return _0x472939;};exports[_0xa1a3('0x48')]=function(_0xfb7fd2,_0x51ecc0){if(!_[_0xa1a3('0x11')](_0xfb7fd2)){if(_0xfb7fd2['pTalking']>0x0){_0xfb7fd2['pTalking']-=0x1;}else{logger[_0xa1a3('0x6')](_0x51ecc0,'[decrementTalkink]\x20object\x20talking\x20is\x20negative');}}else{logger[_0xa1a3('0x6')](_0x51ecc0,_0xa1a3('0x49'));}};exports[_0xa1a3('0x4a')]=function(_0x25380d){if(_0x25380d<=0x0){return!![];}return![];};exports[_0xa1a3('0x4b')]=function(_0x42a48d,_0x4a915b,_0x1952f0){_0x42a48d[_0xa1a3('0x4c')]=_0x4a915b;_0x42a48d[_0xa1a3('0x13')]=_0x42a48d[_0xa1a3('0x4d')];_0x42a48d[_0xa1a3('0x4e')]=_0x42a48d[_0xa1a3('0x3e')];_0x42a48d[_0xa1a3('0x4f')]=_0xa1a3('0x50');if(_0x1952f0){_0x42a48d[_0xa1a3('0x51')]=_0x1952f0[_0xa1a3('0x51')];}return _0x42a48d;};exports[_0xa1a3('0x52')]=function(_0x39ab45){var _0x59fe06={};_0x59fe06[_0xa1a3('0x4d')]=_0x39ab45[_0xa1a3('0x4d')];_0x59fe06[_0xa1a3('0x4e')]=_0x39ab45[_0xa1a3('0x3e')];_0x59fe06[_0xa1a3('0x3d')]=_0x39ab45[_0xa1a3('0x3d')];return _0x59fe06;};exports[_0xa1a3('0x53')]=function(_0x4d5074){var _0x4e0bd9=[];for(var _0xd7e126 in _0x4d5074){if(_0x4d5074['hasOwnProperty'](_0xd7e126)){if(!_[_0xa1a3('0x11')](_0x4d5074[_0xd7e126])&&_0x4d5074[_0xd7e126][_0xa1a3('0x31')]===_0xa1a3('0x54')&&_0x4d5074[_0xd7e126][_0xa1a3('0x55')]===_0xa1a3('0x56')){_0x4e0bd9[_0xa1a3('0x57')](_0x4d5074[_0xd7e126]['id']);}}}return _0x4e0bd9;};exports[_0xa1a3('0x58')]=function(_0x249515){var _0x4fb3c4=moment()['milliseconds'](0x0);var _0x478c82=moment(_0x249515)[_0xa1a3('0x4')](0x0);return _0x4fb3c4[_0xa1a3('0x5')](_0x478c82,'seconds');};exports[_0xa1a3('0x59')]=function(_0x37b979){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x37b979[_0xa1a3('0x16')],'ListId':_0x37b979[_0xa1a3('0x47')],'VoiceQueueId':_0x37b979[_0xa1a3('0x18')]||undefined,'CampaignId':_0x37b979[_0xa1a3('0x5a')]||undefined};};exports['filterKey']=function(_0x330a14){if(_0x330a14===_0xa1a3('0x3d')||_0x330a14===_0xa1a3('0x5b')||_0x330a14===_0xa1a3('0x4d')||_0x330a14==='type'||_0x330a14===_0xa1a3('0x5c')||_0x330a14===_0xa1a3('0x5d')||_0x330a14==='membername'||_0x330a14===_0xa1a3('0x3e')||_0x330a14==='calleridname'||_0x330a14===_0xa1a3('0x5e')||_0x330a14===_0xa1a3('0x15')||_0x330a14===_0xa1a3('0x45')||_0x330a14==='countbusyretry'||_0x330a14===_0xa1a3('0x40')||_0x330a14===_0xa1a3('0x5f')||_0x330a14===_0xa1a3('0x60')||_0x330a14===_0xa1a3('0x61')||_0x330a14===_0xa1a3('0x62')||_0x330a14===_0xa1a3('0x63')||_0x330a14===_0xa1a3('0x64')||_0x330a14==='ContactId'||_0x330a14===_0xa1a3('0x47')||_0x330a14===_0xa1a3('0x38')||_0x330a14===_0xa1a3('0x18')||_0x330a14==='sipcallid'||_0x330a14===_0xa1a3('0x65')||_0x330a14==='xmd-queue'||_0x330a14===_0xa1a3('0x66')||_0x330a14===_0xa1a3('0x67')||_0x330a14===_0xa1a3('0x68')||_0x330a14===_0xa1a3('0x69')||_0x330a14===_0xa1a3('0x6a')||_0x330a14==='xmd-dialid'||_0x330a14===_0xa1a3('0x6b')||_0x330a14===_0xa1a3('0x6c')||_0x330a14===_0xa1a3('0x6d')||_0x330a14===_0xa1a3('0x6e')||_0x330a14===_0xa1a3('0x6f')||_0x330a14==='xmd-agi'||_0x330a14==='rtpaudioqos'||_0x330a14===_0xa1a3('0x70')||_0x330a14===_0xa1a3('0x71')||_0x330a14===_0xa1a3('0x72')||_0x330a14===_0xa1a3('0x73')||_0x330a14===_0xa1a3('0x74')||_0x330a14==='rtpaudioqosrtt'||_0x330a14===_0xa1a3('0x75')||_0x330a14===_0xa1a3('0x76')||_0x330a14===_0xa1a3('0x70')||_0x330a14===_0xa1a3('0x71')||_0x330a14===_0xa1a3('0x72')||_0x330a14===_0xa1a3('0x73')||_0x330a14===_0xa1a3('0x74')||_0x330a14===_0xa1a3('0x77')||_0x330a14===_0xa1a3('0x75')||_0x330a14==='bridgepeer'||_0x330a14===_0xa1a3('0x78')||_0x330a14===_0xa1a3('0x31')||_0x330a14===_0xa1a3('0x32')){return![];}return!![];};exports['getCallerIdRandom']=function(_0x2ea8d9,_0x4c1a5){var _0x574610,_0x1dd2e9,_0x170619;if(_0x4c1a5<=0x0){_0x4c1a5=0x1;}_0x574610=new RegExp(_0xa1a3('0x79')+_0x4c1a5+'}$');_0x1dd2e9=Math[_0xa1a3('0x7a')](0xa,_0x4c1a5-0x1);_0x170619=Math[_0xa1a3('0x7a')](0xa,_0x4c1a5)-0x1;return util[_0xa1a3('0xf')]('%s',_[_0xa1a3('0x7b')](_0x2ea8d9,_0x574610,_[_0xa1a3('0x7c')](_0x1dd2e9,_0x170619)));};exports[_0xa1a3('0x7d')]=function(_0x484e06){var _0x331ac3=_0x484e06[_0xa1a3('0x7e')](/"(.*?)"/);return _0x331ac3?_0x331ac3[0x1]:_0x484e06;};exports['extractCalleridNumber']=function(_0x40ea73){var _0x4e9e70=_0x40ea73['match'](/<(.*?)>/);return _0x4e9e70?_0x4e9e70[0x1]:_0x40ea73;};
\ No newline at end of file
+var _0xc239=['logLookAgent','membername','logCustomer','answertime','isFailure','Failure','variablesAction','RECALL','BOOKED','timeout','uniqueid','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','cloneAction','clone','Global','active','add','minutes','ListId','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','buildObj','lastevent','name','queue','channelAgent','mandatoryDisposition','agentReadyId','getDiff','CampaignId','type','campaigntype','scheduledat','countglobal','callback','callbackuniqueid','callbackat','recallme','UserId','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqos','rtpaudioqosloss','bridgepeer','bridgepvtcallid','\x5cw{0,','pow','match','util','lodash','../../../../config/logger','preview','env','XCALLY_IP_AGI','127.0.0.1','milliseconds','diff','seconds','loggerCatch','inspect','logger','info','loggerError','error','logger2','message','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','Queue','calleridname','calleridnum','ContactId','dialer','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridname','xcally-motion-preview','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','isNil','tags','createdAt','%s%s','XMD-','toUpper','toLowerVariables','hasOwnProperty','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','starttime','responsetime','endtime','logAgent','ringtime'];(function(_0x330f28,_0x2ef9dd){var _0xd32470=function(_0x2bc607){while(--_0x2bc607){_0x330f28['push'](_0x330f28['shift']());}};_0xd32470(++_0x2ef9dd);}(_0xc239,0xcd));var _0x9c23=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xc239[_0x40a045];return _0x1a687c;};'use strict';var util=require(_0x9c23('0x0'));var _=require(_0x9c23('0x1'));var moment=require('moment');var logger=require(_0x9c23('0x2'))(_0x9c23('0x3'));var ipAgi=process[_0x9c23('0x4')][_0x9c23('0x5')]||_0x9c23('0x6');function getSeconds(_0x3a155a,_0x5578a4){var _0x5992fe=moment(_0x3a155a)['milliseconds'](0x0);var _0x16221e=moment(_0x5578a4)[_0x9c23('0x7')](0x0);return _0x5992fe[_0x9c23('0x8')](_0x16221e,_0x9c23('0x9'));}exports[_0x9c23('0xa')]=function(_0x156532){return function(_0x4bcb81){logger['error'](_0x156532,util[_0x9c23('0xb')](_0x4bcb81,{'showHidden':![],'depth':null}));};};exports[_0x9c23('0xc')]=function(_0x4dfba8,_0x2eaeba){logger[_0x9c23('0xd')](_0x4dfba8,util[_0x9c23('0xb')](_0x2eaeba,{'showHidden':![],'depth':null}));};exports[_0x9c23('0xe')]=function(_0x1ecf6f,_0x2dd3c7){logger[_0x9c23('0xf')](_0x1ecf6f,util[_0x9c23('0xb')](_0x2dd3c7,{'showHidden':![],'depth':null}));};exports[_0x9c23('0x10')]=function(_0x206985){return function(_0x10252b){logger[_0x9c23('0xd')](_0x206985,util[_0x9c23('0xb')](_0x10252b,{'showHidden':![],'depth':null}));};};exports[_0x9c23('0x11')]=function(_0x8285f0,_0x2398c2,_0x148ca1){return{'message':_0x8285f0,'unlock':_0x2398c2,'active':_0x148ca1};};exports[_0x9c23('0x12')]=function(_0x5b1ee0,_0x2eac3e,_0x890f3d){if(!_[_0x9c23('0x13')](_0x890f3d)&&_0x9c23('0x14')===typeof _0x890f3d&&!_[_0x9c23('0x15')](_0x890f3d)){if(!_[_0x9c23('0x13')](_0x2eac3e)&&_0x9c23('0x14')===typeof _0x2eac3e&&!_['isEmpty'](_0x2eac3e)){return util[_0x9c23('0x16')](_0x9c23('0x17'),_0x2eac3e,_0x890f3d);}return util[_0x9c23('0x16')](_0x9c23('0x17'),_0x890f3d,_0x890f3d);}if(!_[_0x9c23('0x13')](_0x5b1ee0)&&'string'===typeof _0x5b1ee0&&!_[_0x9c23('0x15')](_0x5b1ee0)){return _0x5b1ee0;}return _0x9c23('0x18');};exports[_0x9c23('0x19')]=function(_0x3ebbad){if(_['isNil'](_0x3ebbad)){return![];}return _0x3ebbad;};exports['addVariables']=function(_0x5fa4f4,_0x28b85a,_0x25c47d,_0x46987a,_0x3993ea,_0x50b307){var _0x4eb1e8={'XMD-QUEUE':_0x28b85a[_0x9c23('0x1a')]?_0x28b85a['Queue']['name']:'','XMD-CALLERID':_0x46987a,'XMD-CALLERID-PREVIEW':_0x50b307?util[_0x9c23('0x16')](_0x9c23('0x17'),_0x50b307[_0x9c23('0x1b')],_0x50b307[_0x9c23('0x1c')]):_0x46987a,'XMD-DIALID':_0x3993ea,'XMD-CONTACTID':_0x28b85a[_0x9c23('0x1d')],'XMD-CDRTYPE':_0x9c23('0x1e'),'CALLERID(all)':_0x46987a,'XMD-VOICEQUEUEID':_0x28b85a[_0x9c23('0x1f')],'XMD-DIALCHANNEL':_0x25c47d,'XMD-DIALTIMEOUT':_0x5fa4f4[_0x9c23('0x20')]||0x1e,'XMD-DIALOPTIONS':util['format'](_0x9c23('0x21'),_0x5fa4f4[_0x9c23('0x22')]?'g':'',_[_0x9c23('0x15')](_0x5fa4f4[_0x9c23('0x23')])?'':'U(xcally-mixmonitor-context)'),'XMD-DIALURL':_0x5fa4f4[_0x9c23('0x24')]||'','XMD-AGI':_0x5fa4f4[_0x9c23('0x25')]?util[_0x9c23('0x16')](_0x9c23('0x26'),ipAgi,_0x5fa4f4[_0x9c23('0x25')]):'NONE','XMD-AGIAFTER':_0x5fa4f4['dialQueueProject2']?util[_0x9c23('0x16')]('\x22agi://%s/square,%s\x22',ipAgi,_0x5fa4f4[_0x9c23('0x22')]):_0x9c23('0x27'),'XMD-ORIGINATECALLERIDNUM':_0x50b307?_0x50b307['originatecalleridnum']:'','XMD-ORIGINATECALLERIDNAME':_0x50b307?_0x50b307[_0x9c23('0x28')]:'','XMD-DESTINATION':_0x9c23('0x29')};if(!_['isEmpty'](_0x5fa4f4[_0x9c23('0x23')])){_0x4eb1e8[util[_0x9c23('0x16')]('%s',_0x9c23('0x2a'))]=_0x5fa4f4[_0x9c23('0x23')];_0x4eb1e8[util['format']('%s',_0x9c23('0x2b'))]=_0x3993ea;}if(_0x28b85a&&_0x28b85a['Contact']){for(var _0x42bcd5 in _0x28b85a[_0x9c23('0x2c')]){if(_0x28b85a['Contact']['hasOwnProperty'](_0x42bcd5)){if(!_[_0x9c23('0x2d')](_0x28b85a[_0x9c23('0x2c')][_0x42bcd5])&&_0x42bcd5!=='id'&&_0x42bcd5!==_0x9c23('0x2e')&&_0x42bcd5!==_0x9c23('0x2f')&&_0x42bcd5!=='updatedAt'){_0x4eb1e8[util[_0x9c23('0x16')](_0x9c23('0x30'),_0x9c23('0x31'),_[_0x9c23('0x32')](_0x42bcd5))]=_0x28b85a[_0x9c23('0x2c')][_0x42bcd5];}}}}return _0x4eb1e8;};exports[_0x9c23('0x33')]=function(_0x2768b1){var _0x114d7f={};for(var _0x46ae3b in _0x2768b1){if(_0x2768b1[_0x9c23('0x34')](_0x46ae3b)){_0x114d7f[util[_0x9c23('0x16')]('%s',_[_0x9c23('0x35')](_0x46ae3b))]=_0x2768b1[_0x46ae3b];}}return{'variables':_0x114d7f};};exports[_0x9c23('0x36')]=function(_0x340fde,_0x34aedf){if(!_[_0x9c23('0x2d')](_0x340fde)){if(_0x340fde[_0x9c23('0x34')](_0x9c23('0x37'))){if(_0x340fde[_0x9c23('0x37')]>0x0){_0x340fde[_0x9c23('0x37')]-=0x1;}else{logger[_0x9c23('0xf')](_0x9c23('0x38'),_0x34aedf);}}}else{logger[_0x9c23('0xf')]('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x34aedf);}};exports[_0x9c23('0x39')]=function(_0x431154){var _0x2acbf0=moment()[_0x9c23('0x16')](_0x9c23('0x3a'));_0x431154[_0x9c23('0x3b')]=0xd;_0x431154[_0x9c23('0x3c')]=_0x9c23('0x3d');_0x431154[_0x9c23('0x3e')]=_0x2acbf0;_0x431154[_0x9c23('0x3f')]=_0x2acbf0;_0x431154[_0x9c23('0x40')]=_0x2acbf0;};exports[_0x9c23('0x41')]=function(_0x24c100,_0x35c86a,_0x1ce126){var _0x1db69c=moment()[_0x9c23('0x16')](_0x9c23('0x3a'));_0x24c100['state']=_0x35c86a;_0x24c100[_0x9c23('0x3c')]=_0x1ce126;_0x24c100[_0x9c23('0x3f')]=_0x1db69c;_0x24c100[_0x9c23('0x42')]=getSeconds(_0x24c100[_0x9c23('0x3f')],_0x24c100[_0x9c23('0x3e')]);};exports[_0x9c23('0x43')]=function(_0x4a0c8c,_0x521440,_0xfd5b2d){_0x4a0c8c[_0x9c23('0x44')]=_0x521440;_0x4a0c8c['UserId']=_0xfd5b2d;};exports[_0x9c23('0x45')]=function(_0x433528,_0x4d4787,_0x1afee6){var _0x4b0d84=moment()[_0x9c23('0x16')](_0x9c23('0x3a'));_0x433528[_0x9c23('0x3b')]=_0x4d4787;_0x433528[_0x9c23('0x3c')]=_0x1afee6;_0x433528[_0x9c23('0x3f')]=_0x433528[_0x9c23('0x3f')]?_0x433528[_0x9c23('0x3f')]:_0x4b0d84;_0x433528['endtime']=_0x433528[_0x9c23('0x40')]?_0x433528['endtime']:_0x4b0d84;_0x433528[_0x9c23('0x42')]=getSeconds(_0x433528[_0x9c23('0x3f')]||0x0,_0x433528['starttime']||0x0);_0x433528['talktime']=_0x433528[_0x9c23('0x46')]?getSeconds(_0x433528['endtime'],_0x433528[_0x9c23('0x46')]):0x0;};exports[_0x9c23('0x47')]=function(_0x3a276){return _0x3a276===_0x9c23('0x48');};exports[_0x9c23('0x49')]=function(_0x4f9fea,_0x591b8e,_0x53eb7b,_0x1b379b,_0x152e71){var _0x359944=_0x1b379b?_0x9c23('0x4a'):_0x4f9fea[_0x9c23('0x1b')];_0x359944=_0x152e71?_0x9c23('0x4b'):_0x359944;return{'actionid':_0x4f9fea['uniqueid'],'action':'originate','channel':_0x4f9fea['channelAgent'],'callerid':util[_0x9c23('0x16')](_0x9c23('0x17'),_0x359944,_0x4f9fea[_0x9c23('0x1c')]),'Exten':_0x9c23('0x29'),'Context':'from-sip','Priority':'1','variable':_0x53eb7b,'timeout':(_0x591b8e[_0x9c23('0x4c')]||0x1e)*0x3e8,'async':!![],'channelid':_0x4f9fea[_0x9c23('0x4d')]};};exports[_0x9c23('0x4e')]=function(_0x510c1a){return _0x510c1a[_0x9c23('0x4f')]+_0x510c1a[_0x9c23('0x50')]+_0x510c1a[_0x9c23('0x51')]+_0x510c1a['countagentrejectretry']+_0x510c1a[_0x9c23('0x52')];};exports[_0x9c23('0x53')]=function(_0x139772){var _0x3dbe39=_[_0x9c23('0x54')](_0x139772);_0x3dbe39[_0x9c23('0x3b')]=0xf;_0x3dbe39[_0x9c23('0x3c')]=_0x9c23('0x55');return _0x3dbe39;};exports['scheduledAt']=function(_0x4f47e0,_0x55b29c,_0x894142){var _0x5a45c5={};_0x5a45c5[_0x55b29c]=_0x4f47e0[_0x55b29c];_0x5a45c5[_0x9c23('0x56')]=![];_0x5a45c5['scheduledat']=moment()[_0x9c23('0x57')](_0x894142,_0x9c23('0x58'))[_0x9c23('0x16')](_0x9c23('0x3a'));_0x5a45c5[_0x9c23('0x1d')]=_0x4f47e0[_0x9c23('0x1d')];_0x5a45c5[_0x9c23('0x59')]=_0x4f47e0[_0x9c23('0x59')];_0x5a45c5['VoiceQueueId']=_0x4f47e0[_0x9c23('0x1f')]||undefined;return _0x5a45c5;};exports['decrementTalkink']=function(_0x883d08,_0x1d3b8c){if(!_['isNil'](_0x883d08)){if(_0x883d08[_0x9c23('0x5a')]>0x0){_0x883d08[_0x9c23('0x5a')]-=0x1;}else{logger[_0x9c23('0xf')](_0x1d3b8c,_0x9c23('0x5b'));}}else{logger[_0x9c23('0xf')](_0x1d3b8c,_0x9c23('0x5c'));}};exports[_0x9c23('0x5d')]=function(_0x3e16f3){if(_0x3e16f3<=0x0){return!![];}return![];};exports[_0x9c23('0x5e')]=function(_0x4b1e88,_0x57350d,_0x476212){_0x4b1e88[_0x9c23('0x5f')]=_0x57350d;_0x4b1e88[_0x9c23('0x60')]=_0x4b1e88[_0x9c23('0x61')];_0x4b1e88['interface']=_0x4b1e88[_0x9c23('0x62')];if(_0x476212){_0x4b1e88[_0x9c23('0x63')]=_0x476212[_0x9c23('0x63')];}return _0x4b1e88;};exports['buildAcw']=function(_0x527d7e){var _0xdf1e1d={};_0xdf1e1d[_0x9c23('0x61')]=_0x527d7e['queue'];_0xdf1e1d['interface']=_0x527d7e[_0x9c23('0x62')];_0xdf1e1d[_0x9c23('0x4d')]=_0x527d7e[_0x9c23('0x4d')];return _0xdf1e1d;};exports[_0x9c23('0x64')]=function(_0x13d6af){var _0x13f7dd=[];for(var _0x7afe78 in _0x13d6af){if(_0x13d6af[_0x9c23('0x34')](_0x7afe78)){if(!_['isNil'](_0x13d6af[_0x7afe78])&&_0x13d6af[_0x7afe78]['state']==='not_inuse'&&_0x13d6af[_0x7afe78]['status']==='reachable'){_0x13f7dd['push'](_0x13d6af[_0x7afe78]['id']);}}}return _0x13f7dd;};exports[_0x9c23('0x65')]=function(_0x446a41){var _0x5f149a=moment()[_0x9c23('0x7')](0x0);var _0x26d891=moment(_0x446a41)[_0x9c23('0x7')](0x0);return _0x5f149a['diff'](_0x26d891,_0x9c23('0x9'));};exports['createBody']=function(_0x5719d2){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x5719d2[_0x9c23('0x1d')],'ListId':_0x5719d2[_0x9c23('0x59')],'VoiceQueueId':_0x5719d2[_0x9c23('0x1f')]||undefined,'CampaignId':_0x5719d2[_0x9c23('0x66')]||undefined};};exports['filterKey']=function(_0x271dc7){if(_0x271dc7===_0x9c23('0x4d')||_0x271dc7==='idContact'||_0x271dc7===_0x9c23('0x61')||_0x271dc7===_0x9c23('0x67')||_0x271dc7===_0x9c23('0x68')||_0x271dc7==='dialAnswer'||_0x271dc7===_0x9c23('0x44')||_0x271dc7==='channelAgent'||_0x271dc7===_0x9c23('0x1b')||_0x271dc7===_0x9c23('0x56')||_0x271dc7===_0x9c23('0x1c')||_0x271dc7===_0x9c23('0x69')||_0x271dc7==='countbusyretry'||_0x271dc7===_0x9c23('0x50')||_0x271dc7==='countnoanswerretry'||_0x271dc7===_0x9c23('0x6a')||_0x271dc7===_0x9c23('0x6b')||_0x271dc7===_0x9c23('0x6c')||_0x271dc7===_0x9c23('0x6d')||_0x271dc7===_0x9c23('0x6e')||_0x271dc7===_0x9c23('0x1d')||_0x271dc7===_0x9c23('0x59')||_0x271dc7===_0x9c23('0x6f')||_0x271dc7==='VoiceQueueId'||_0x271dc7==='sipcallid'||_0x271dc7===_0x9c23('0x70')||_0x271dc7===_0x9c23('0x71')||_0x271dc7===_0x9c23('0x72')||_0x271dc7===_0x9c23('0x73')||_0x271dc7===_0x9c23('0x74')||_0x271dc7===_0x9c23('0x75')||_0x271dc7===_0x9c23('0x76')||_0x271dc7==='xmd-dialid'||_0x271dc7===_0x9c23('0x77')||_0x271dc7===_0x9c23('0x78')||_0x271dc7===_0x9c23('0x79')||_0x271dc7===_0x9c23('0x7a')||_0x271dc7==='xmd-agiafter'||_0x271dc7==='xmd-agi'||_0x271dc7==='rtpaudioqos'||_0x271dc7===_0x9c23('0x7b')||_0x271dc7===_0x9c23('0x7c')||_0x271dc7===_0x9c23('0x7d')||_0x271dc7==='rtpaudioqosloss'||_0x271dc7===_0x9c23('0x7e')||_0x271dc7===_0x9c23('0x7f')||_0x271dc7===_0x9c23('0x80')||_0x271dc7===_0x9c23('0x81')||_0x271dc7===_0x9c23('0x7b')||_0x271dc7===_0x9c23('0x7c')||_0x271dc7===_0x9c23('0x7d')||_0x271dc7===_0x9c23('0x82')||_0x271dc7===_0x9c23('0x7e')||_0x271dc7===_0x9c23('0x7f')||_0x271dc7==='rtpaudioqosrttbridged'||_0x271dc7===_0x9c23('0x83')||_0x271dc7===_0x9c23('0x84')||_0x271dc7===_0x9c23('0x3b')||_0x271dc7===_0x9c23('0x3c')){return![];}return!![];};exports['getCallerIdRandom']=function(_0x20b6a3,_0xe8e06){var _0xc5bfbe,_0x2a2dc6,_0x3b0af7;if(_0xe8e06<=0x0){_0xe8e06=0x1;}_0xc5bfbe=new RegExp(_0x9c23('0x85')+_0xe8e06+'}$');_0x2a2dc6=Math[_0x9c23('0x86')](0xa,_0xe8e06-0x1);_0x3b0af7=Math[_0x9c23('0x86')](0xa,_0xe8e06)-0x1;return util[_0x9c23('0x16')]('%s',_['replace'](_0x20b6a3,_0xc5bfbe,_['random'](_0x2a2dc6,_0x3b0af7)));};exports['extractCalleridName']=function(_0xa1126a){var _0x5dab5c=_0xa1126a[_0x9c23('0x87')](/"(.*?)"/);return _0x5dab5c?_0x5dab5c[0x1]:_0xa1126a;};exports['extractCalleridNumber']=function(_0x2871e6){var _0x3fb8a6=_0x2871e6[_0x9c23('0x87')](/<(.*?)>/);return _0x3fb8a6?_0x3fb8a6[0x1]:_0x2871e6;};
\ No newline at end of file
index 7434306..cb3001e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fdc=['voicechannel','string','boolean','queueremove','queuepause','voicequeuechannel'];(function(_0xcd9ec8,_0x27699f){var _0x5aa31b=function(_0x32f922){while(--_0x32f922){_0xcd9ec8['push'](_0xcd9ec8['shift']());}};_0x5aa31b(++_0x27699f);}(_0x3fdc,0xb5));var _0xc3fd=function(_0x252918,_0x1b3f96){_0x252918=_0x252918-0x0;var _0x2a276b=_0x3fdc[_0x252918];return _0x2a276b;};'use strict';exports['queueadd']={'queue':{'type':'string','required':!![]},'interface':{'type':_0xc3fd('0x0'),'required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':'number','required':![]},'paused':{'type':_0xc3fd('0x1'),'required':![]}};exports[_0xc3fd('0x2')]={'queue':{'type':_0xc3fd('0x0'),'required':!![]},'interface':{'type':'string','required':!![]}};exports[_0xc3fd('0x3')]={'interface':{'type':_0xc3fd('0x0'),'required':!![]},'paused':{'type':'boolean'},'reason':{'type':_0xc3fd('0x0'),'required':![]}};exports['reload']={'module':{'type':'string','required':![]}};exports[_0xc3fd('0x4')]={'uniqueid':{'type':_0xc3fd('0x0'),'required':!![]}};exports[_0xc3fd('0x5')]={'uniqueid':{'type':_0xc3fd('0x0'),'required':!![]},'filename':{'type':_0xc3fd('0x0')},'format':{'type':_0xc3fd('0x0')},'mixmonitorid':{'type':'string'}};exports['voicequeuechannelhangup']={'uniqueid':{'type':_0xc3fd('0x0'),'required':!![]}};exports['voicequeuechannelredirect']={'uniqueid':{'type':_0xc3fd('0x0'),'required':!![]},'exten':{'type':_0xc3fd('0x0'),'required':!![]},'context':{'type':_0xc3fd('0x0')}};
\ No newline at end of file
+var _0xe38f=['voicechannel','queueadd','string','number','queuepause','reload'];(function(_0x5e248d,_0x459d1c){var _0x1a13b6=function(_0xeabb9a){while(--_0xeabb9a){_0x5e248d['push'](_0x5e248d['shift']());}};_0x1a13b6(++_0x459d1c);}(_0xe38f,0xb5));var _0xfe38=function(_0x4e46de,_0x265e19){_0x4e46de=_0x4e46de-0x0;var _0xfe88e8=_0xe38f[_0x4e46de];return _0xfe88e8;};'use strict';exports[_0xfe38('0x0')]={'queue':{'type':_0xfe38('0x1'),'required':!![]},'interface':{'type':_0xfe38('0x1'),'required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':_0xfe38('0x2'),'required':![]},'paused':{'type':'boolean','required':![]}};exports['queueremove']={'queue':{'type':_0xfe38('0x1'),'required':!![]},'interface':{'type':_0xfe38('0x1'),'required':!![]}};exports[_0xfe38('0x3')]={'interface':{'type':_0xfe38('0x1'),'required':!![]},'paused':{'type':'boolean'},'reason':{'type':'string','required':![]}};exports[_0xfe38('0x4')]={'module':{'type':_0xfe38('0x1'),'required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':_0xfe38('0x1'),'required':!![]}};exports[_0xfe38('0x5')]={'uniqueid':{'type':_0xfe38('0x1'),'required':!![]},'filename':{'type':_0xfe38('0x1')},'format':{'type':_0xfe38('0x1')},'mixmonitorid':{'type':_0xfe38('0x1')}};exports['voicequeuechannelhangup']={'uniqueid':{'type':_0xfe38('0x1'),'required':!![]}};exports['voicequeuechannelredirect']={'uniqueid':{'type':'string','required':!![]},'exten':{'type':'string','required':!![]},'context':{'type':_0xfe38('0x1')}};
\ No newline at end of file
index 20b1d3a..3a4838b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08d0=['../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/dynamics365Account','../model/freshsalesAccount','telephones','trunks','voiceQueues','campaigns','templates','outbound','voiceExtensions','channels','outboundChannels','timers','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','deskAccounts','vtigerAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','hasOwnProperty','SIP/%s','name','isNil','interface','total','answered','sumHoldTime','sumBillable','ivrAnswerCallsDay','isEmpty','unmanaged','abandoned','sumDuration','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','initAgents','agents','length','format','isUndefined','initTelephones','initTrunks','initTriggers','triggers','initZendeskAccounts','initSalesforceAccounts','zohoAccounts','initDeskAccounts','initSugarcrmAccounts','initServicenowAccounts','servicenowAccounts','initDynamics365Accounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','queue','queuecallerabandon','queuecallerleaveAt','diff','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallercomplete','initVoiceCallReports','duration','disposition','billableseconds','initCampaigns','dialQueueProject','SquareProject','initCampaignHopperHistory','initFaxAccounts','exports','util','lodash','moment','../model/agent','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/zendeskAccount','../model/salesforceAccount'];(function(_0x28f52a,_0x3db44f){var _0x15dc75=function(_0xb3a49b){while(--_0xb3a49b){_0x28f52a['push'](_0x28f52a['shift']());}};_0x15dc75(++_0x3db44f);}(_0x08d0,0x192));var _0x008d=function(_0x592567,_0x1fa531){_0x592567=_0x592567-0x0;var _0x59dd37=_0x08d0[_0x592567];return _0x59dd37;};'use strict';var BPromise=require('bluebird');var util=require(_0x008d('0x0'));var _=require(_0x008d('0x1'));var moment=require(_0x008d('0x2'));var Agent=require(_0x008d('0x3'));var Telephone=require('../model/telephone');var Trunk=require(_0x008d('0x4'));var VoiceQueue=require(_0x008d('0x5'));var Trigger=require(_0x008d('0x6'));var Template=require(_0x008d('0x7'));var Campaign=require('../model/campaign');var VoiceExtension=require('../model/voiceExtension');var ZendeskAccount=require(_0x008d('0x8'));var SalesforceAccount=require(_0x008d('0x9'));var FreshdeskAccount=require(_0x008d('0xa'));var SugarcrmAccount=require(_0x008d('0xb'));var ZohoAccount=require(_0x008d('0xc'));var DeskAccount=require(_0x008d('0xd'));var VtigerAccount=require(_0x008d('0xe'));var ServicenowAccount=require('../model/servicenowAccount');var Dynamics365Account=require(_0x008d('0xf'));var FreshsalesAccount=require(_0x008d('0x10'));var FaxAccount=require('../model/faxAccount');var Realtime=function(){this['agents']={};this[_0x008d('0x11')]={};this[_0x008d('0x12')]={};this[_0x008d('0x13')]={};this['triggers']={};this[_0x008d('0x14')]={};this[_0x008d('0x15')]={};this[_0x008d('0x16')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x008d('0x17')]={};this[_0x008d('0x18')]={};this['queueChannels']={};this[_0x008d('0x19')]={};this[_0x008d('0x1a')]={};this['settings']={};this[_0x008d('0x1b')]={};this[_0x008d('0x1c')]={};this[_0x008d('0x1d')]={};this[_0x008d('0x1e')]={};this['zohoAccounts']={};this[_0x008d('0x1f')]={};this[_0x008d('0x20')]={};this['servicenowAccounts']={};this[_0x008d('0x21')]={};this[_0x008d('0x22')]={};this[_0x008d('0x23')]={};};function freeIsNotKey(_0x464875,_0x31b5c4,_0x58f5c4){var _0x387eb0=_[_0x008d('0x24')](_0x464875,function(_0x15e670,_0x266c66){return _0x15e670[_0x58f5c4];});for(var _0x2cd133 in _0x31b5c4){if(_0x31b5c4[_0x008d('0x25')](_0x2cd133)){if(!_0x387eb0[_0x2cd133]){delete _0x31b5c4[_0x2cd133];}}}}function freeIsNotKeySip(_0x263f1b,_0x2d5d60){var _0x401bfa=_['mapKeys'](_0x263f1b,function(_0x477000,_0x4d925b){return util['format'](_0x008d('0x26'),_0x477000[_0x008d('0x27')]);});for(var _0x2c6dc1 in _0x2d5d60){if(_0x2d5d60['hasOwnProperty'](_0x2c6dc1)){if(!_0x401bfa[_0x2c6dc1]){delete _0x2d5d60[_0x2c6dc1];}}}}function freeIsNotKeyAgent(_0x36d8d0,_0x2af199){var _0x50cc11=_[_0x008d('0x24')](_0x36d8d0,function(_0x21c941,_0x54f8b3){var _0x236798=_[_0x008d('0x28')](_0x21c941[_0x008d('0x29')])?util['format']('SIP/%s',_0x21c941[_0x008d('0x27')]):_0x21c941[_0x008d('0x29')];return _0x236798;});for(var _0x1a06ee in _0x2af199){if(_0x2af199['hasOwnProperty'](_0x1a06ee)){if(!_0x50cc11[_0x1a06ee]){delete _0x2af199[_0x1a06ee];}}}}function clearVoiceCallReports(_0xdbf7d3){_0xdbf7d3[_0x008d('0x2a')]=0x0;_0xdbf7d3[_0x008d('0x2b')]=0x0;_0xdbf7d3[_0x008d('0x2c')]=0x0;_0xdbf7d3['sumDuration']=0x0;_0xdbf7d3[_0x008d('0x2d')]=0x0;}function clearCampaigns(_0x4ff8ee){if(!_['isEmpty'](_0x4ff8ee)){for(var _0x76b577 in _0x4ff8ee){if(_0x4ff8ee[_0x008d('0x25')](_0x76b577)){_0x4ff8ee[_0x76b577]['ivrTotalCallsDays']=0x0;_0x4ff8ee[_0x76b577][_0x008d('0x2e')]=0x0;}}}}function clearVoiceQueues(_0x51c054){if(!_[_0x008d('0x2f')](_0x51c054)){for(var _0x27d38c in _0x51c054){if(_0x51c054[_0x008d('0x25')](_0x27d38c)){_0x51c054[_0x27d38c][_0x008d('0x2a')]=0x0;_0x51c054[_0x27d38c][_0x008d('0x2b')]=0x0;_0x51c054[_0x27d38c][_0x008d('0x30')]=0x0;_0x51c054[_0x27d38c][_0x008d('0x31')]=0x0;_0x51c054[_0x27d38c][_0x008d('0x2c')]=0x0;_0x51c054[_0x27d38c][_0x008d('0x32')]=0x0;_0x51c054[_0x27d38c][_0x008d('0x2d')]=0x0;_0x51c054[_0x27d38c][_0x008d('0x33')]=0x0;_0x51c054[_0x27d38c][_0x008d('0x34')]=0x0;_0x51c054[_0x27d38c][_0x008d('0x35')]=0x0;_0x51c054[_0x27d38c][_0x008d('0x36')]=0x0;_0x51c054[_0x27d38c][_0x008d('0x37')]=0x0;_0x51c054[_0x27d38c]['outboundUnknownCallsDay']=0x0;_0x51c054[_0x27d38c]['outboundDropCallsDayTimeout']=0x0;_0x51c054[_0x27d38c]['outboundDropCallsDayCallersExit']=0x0;_0x51c054[_0x27d38c][_0x008d('0x38')]=0x0;_0x51c054[_0x27d38c][_0x008d('0x39')]=0x0;_0x51c054[_0x27d38c][_0x008d('0x3a')]=0x0;_0x51c054[_0x27d38c][_0x008d('0x3b')]=0x0;_0x51c054[_0x27d38c]['outboundAnswerAgiCallsDay']=0x0;_0x51c054[_0x27d38c][_0x008d('0x3c')]=0x0;_0x51c054[_0x27d38c][_0x008d('0x3d')]=!![];}}}}Realtime[_0x008d('0x3e')][_0x008d('0x3f')]=function(_0x209878,_0x43d7a3){for(var _0x11141d in _0x43d7a3){if(_0x209878[_0x008d('0x25')](_0x11141d)){_0x209878[_0x11141d]=_0x43d7a3[_0x11141d];}}};Realtime[_0x008d('0x3e')][_0x008d('0x40')]=function(){var _0x5a6740=this;return function(_0x100ccb){if(_0x100ccb){freeIsNotKeyAgent(_0x100ccb,_0x5a6740[_0x008d('0x41')]);for(var _0x5cf42b=0x0,_0x1681bc={},_0x6ed432={};_0x5cf42b<_0x100ccb[_0x008d('0x42')];_0x5cf42b+=0x1){_0x1681bc=_0x100ccb[_0x5cf42b];var _0x23ffbc=_[_0x008d('0x28')](_0x1681bc[_0x008d('0x29')])?util[_0x008d('0x43')](_0x008d('0x26'),_0x1681bc[_0x008d('0x27')]):_0x1681bc[_0x008d('0x29')];if(_[_0x008d('0x44')](_0x5a6740[_0x008d('0x41')][_0x23ffbc])){_0x5a6740[_0x008d('0x41')][_0x23ffbc]=new Agent(_0x1681bc);}else{_0x5a6740[_0x008d('0x3f')](_0x5a6740[_0x008d('0x41')][_0x23ffbc],_0x1681bc);}}}return _0x5a6740[_0x008d('0x41')];};};Realtime['prototype'][_0x008d('0x45')]=function(){var _0x274b96=this;return function(_0x154f9d){if(_0x154f9d){freeIsNotKeySip(_0x154f9d,_0x274b96[_0x008d('0x11')]);for(var _0x5a4f08=0x0,_0x209205={},_0x645c1f={};_0x5a4f08<_0x154f9d[_0x008d('0x42')];_0x5a4f08+=0x1){_0x209205=_0x154f9d[_0x5a4f08];if(_[_0x008d('0x44')](_0x274b96['telephones'][util[_0x008d('0x43')](_0x008d('0x26'),_0x209205[_0x008d('0x27')])])){_0x274b96[_0x008d('0x11')][util['format'](_0x008d('0x26'),_0x209205[_0x008d('0x27')])]=new Telephone(_0x209205);}else{_0x274b96[_0x008d('0x3f')](_0x274b96[_0x008d('0x11')][util['format']('SIP/%s',_0x209205[_0x008d('0x27')])],_0x209205);}}}return _0x274b96['telephones'];};};Realtime['prototype'][_0x008d('0x46')]=function(){var _0x2bdf31=this;return function(_0x26449e){if(_0x26449e){freeIsNotKeySip(_0x26449e,_0x2bdf31[_0x008d('0x12')]);for(var _0x51806c=0x0,_0x2bdb66={},_0x543026={};_0x51806c<_0x26449e[_0x008d('0x42')];_0x51806c+=0x1){_0x2bdb66=_0x26449e[_0x51806c];if(_['isUndefined'](_0x2bdf31[_0x008d('0x12')][util['format'](_0x008d('0x26'),_0x2bdb66[_0x008d('0x27')])])){_0x2bdf31[_0x008d('0x12')][util[_0x008d('0x43')](_0x008d('0x26'),_0x2bdb66['name'])]=new Trunk(_0x2bdb66);}else{_0x2bdf31[_0x008d('0x3f')](_0x2bdf31[_0x008d('0x12')][util[_0x008d('0x43')](_0x008d('0x26'),_0x2bdb66[_0x008d('0x27')])],_0x2bdb66);}}}return _0x2bdf31[_0x008d('0x12')];};};Realtime[_0x008d('0x3e')]['initVoiceQueues']=function(){var _0x38a12b=this;return function(_0x5281cb){if(_0x5281cb){freeIsNotKey(_0x5281cb,_0x38a12b[_0x008d('0x13')],_0x008d('0x27'));for(var _0x43390c=0x0,_0x1e10fb={},_0x3b48eb={};_0x43390c<_0x5281cb[_0x008d('0x42')];_0x43390c+=0x1){_0x1e10fb=_0x5281cb[_0x43390c];if(_[_0x008d('0x44')](_0x38a12b['voiceQueues'][_0x1e10fb[_0x008d('0x27')]])){_0x38a12b[_0x008d('0x13')][_0x1e10fb[_0x008d('0x27')]]=new VoiceQueue(_0x1e10fb);}else{_0x38a12b[_0x008d('0x3f')](_0x38a12b['voiceQueues'][_0x1e10fb['name']],_0x1e10fb);}}}return _0x38a12b[_0x008d('0x13')];};};Realtime['prototype'][_0x008d('0x47')]=function(){var _0x35faa8=this;return function(_0x10a531){if(_0x10a531){freeIsNotKey(_0x10a531,_0x35faa8[_0x008d('0x48')],'id');for(var _0x1fa80b=0x0,_0x3f9396={},_0x3a03b5={};_0x1fa80b<_0x10a531[_0x008d('0x42')];_0x1fa80b+=0x1){_0x3f9396=_0x10a531[_0x1fa80b];if(_['isUndefined'](_0x35faa8['triggers'][_0x3f9396['id']])){_0x35faa8['triggers'][_0x3f9396['id']]=new Trigger(_0x3f9396);}else{_0x35faa8[_0x008d('0x3f')](_0x35faa8[_0x008d('0x48')][_0x3f9396['id']],_0x3f9396);}}}return _0x35faa8[_0x008d('0x48')];};};Realtime[_0x008d('0x3e')]['initTemplates']=function(){var _0x47e3a0=this;return function(_0x2d27b6){if(_0x2d27b6){freeIsNotKey(_0x2d27b6,_0x47e3a0[_0x008d('0x15')],'id');for(var _0x222bda=0x0,_0x28a5fe={},_0x290fc0={};_0x222bda<_0x2d27b6['length'];_0x222bda+=0x1){_0x28a5fe=_0x2d27b6[_0x222bda];if(_[_0x008d('0x44')](_0x47e3a0[_0x008d('0x15')][_0x28a5fe['id']])){_0x47e3a0[_0x008d('0x15')][_0x28a5fe['id']]=new Template(_0x28a5fe);}else{_0x47e3a0['mergeFromDatabase'](_0x47e3a0[_0x008d('0x15')][_0x28a5fe['id']],_0x28a5fe);}}}return _0x47e3a0[_0x008d('0x15')];};};Realtime[_0x008d('0x3e')][_0x008d('0x49')]=function(){var _0x52fe2b=this;return function(_0x543e67){if(_0x543e67){freeIsNotKey(_0x543e67,_0x52fe2b['zendeskAccounts'],'id');for(var _0x2dedc2=0x0,_0x1a4aae={},_0x396426={};_0x2dedc2<_0x543e67[_0x008d('0x42')];_0x2dedc2+=0x1){_0x1a4aae=_0x543e67[_0x2dedc2];if(_[_0x008d('0x44')](_0x52fe2b[_0x008d('0x1b')][_0x1a4aae['id']])){_0x52fe2b[_0x008d('0x1b')][_0x1a4aae['id']]=new ZendeskAccount(_0x1a4aae);}else{_0x52fe2b[_0x008d('0x3f')](_0x52fe2b[_0x008d('0x1b')][_0x1a4aae['id']],_0x1a4aae);}}}return _0x52fe2b[_0x008d('0x1b')];};};Realtime[_0x008d('0x3e')][_0x008d('0x4a')]=function(){var _0x53037a=this;return function(_0x5d2d2b){if(_0x5d2d2b){freeIsNotKey(_0x5d2d2b,_0x53037a[_0x008d('0x1c')],'id');for(var _0x15f793=0x0,_0x9782d8={},_0x8765c9={};_0x15f793<_0x5d2d2b[_0x008d('0x42')];_0x15f793+=0x1){_0x9782d8=_0x5d2d2b[_0x15f793];if(_[_0x008d('0x44')](_0x53037a[_0x008d('0x1c')][_0x9782d8['id']])){_0x53037a[_0x008d('0x1c')][_0x9782d8['id']]=new SalesforceAccount(_0x9782d8);}else{_0x53037a[_0x008d('0x3f')](_0x53037a[_0x008d('0x1c')][_0x9782d8['id']],_0x9782d8);}}}return _0x53037a[_0x008d('0x1c')];};};Realtime['prototype']['initFreshdeskAccounts']=function(){var _0x25c11b=this;return function(_0x558e41){if(_0x558e41){freeIsNotKey(_0x558e41,_0x25c11b[_0x008d('0x1e')],'id');for(var _0x38c5f1=0x0,_0x65fce9={},_0x272532={};_0x38c5f1<_0x558e41[_0x008d('0x42')];_0x38c5f1+=0x1){_0x65fce9=_0x558e41[_0x38c5f1];if(_[_0x008d('0x44')](_0x25c11b[_0x008d('0x1e')][_0x65fce9['id']])){_0x25c11b['freshdeskAccounts'][_0x65fce9['id']]=new FreshdeskAccount(_0x65fce9);}else{_0x25c11b[_0x008d('0x3f')](_0x25c11b[_0x008d('0x1e')][_0x65fce9['id']],_0x65fce9);}}}return _0x25c11b[_0x008d('0x1e')];};};Realtime[_0x008d('0x3e')]['initZohoAccounts']=function(){var _0x190e73=this;return function(_0x5750a0){if(_0x5750a0){freeIsNotKey(_0x5750a0,_0x190e73['zohoAccounts'],'id');for(var _0x490602=0x0,_0x33e19d={},_0x485f03={};_0x490602<_0x5750a0[_0x008d('0x42')];_0x490602+=0x1){_0x33e19d=_0x5750a0[_0x490602];if(_[_0x008d('0x44')](_0x190e73[_0x008d('0x4b')][_0x33e19d['id']])){_0x190e73[_0x008d('0x4b')][_0x33e19d['id']]=new ZohoAccount(_0x33e19d);}else{_0x190e73[_0x008d('0x3f')](_0x190e73['zohoAccounts'][_0x33e19d['id']],_0x33e19d);}}}return _0x190e73[_0x008d('0x4b')];};};Realtime[_0x008d('0x3e')][_0x008d('0x4c')]=function(){var _0x50f5f3=this;return function(_0x12167e){if(_0x12167e){freeIsNotKey(_0x12167e,_0x50f5f3[_0x008d('0x1f')],'id');for(var _0x1f166b=0x0,_0x5a3e71={},_0x5910ba={};_0x1f166b<_0x12167e[_0x008d('0x42')];_0x1f166b+=0x1){_0x5a3e71=_0x12167e[_0x1f166b];if(_[_0x008d('0x44')](_0x50f5f3[_0x008d('0x1f')][_0x5a3e71['id']])){_0x50f5f3[_0x008d('0x1f')][_0x5a3e71['id']]=new DeskAccount(_0x5a3e71);}else{_0x50f5f3['mergeFromDatabase'](_0x50f5f3[_0x008d('0x1f')][_0x5a3e71['id']],_0x5a3e71);}}}return _0x50f5f3['deskAccounts'];};};Realtime[_0x008d('0x3e')][_0x008d('0x4d')]=function(){var _0x58abd9=this;return function(_0x2ae535){if(_0x2ae535){freeIsNotKey(_0x2ae535,_0x58abd9[_0x008d('0x1d')],'id');for(var _0x1bf879=0x0,_0x2f0c2a={},_0x5849f1={};_0x1bf879<_0x2ae535[_0x008d('0x42')];_0x1bf879+=0x1){_0x2f0c2a=_0x2ae535[_0x1bf879];if(_[_0x008d('0x44')](_0x58abd9[_0x008d('0x1d')][_0x2f0c2a['id']])){_0x58abd9['sugarcrmAccounts'][_0x2f0c2a['id']]=new SugarcrmAccount(_0x2f0c2a);}else{_0x58abd9[_0x008d('0x3f')](_0x58abd9[_0x008d('0x1d')][_0x2f0c2a['id']],_0x2f0c2a);}}}return _0x58abd9[_0x008d('0x1d')];};};Realtime[_0x008d('0x3e')]['initVtigerAccounts']=function(){var _0x5c7c1f=this;return function(_0x1f0b4d){if(_0x1f0b4d){freeIsNotKey(_0x1f0b4d,_0x5c7c1f[_0x008d('0x20')],'id');for(var _0xb03114=0x0,_0x2457e8={},_0x327b66={};_0xb03114<_0x1f0b4d['length'];_0xb03114+=0x1){_0x2457e8=_0x1f0b4d[_0xb03114];if(_[_0x008d('0x44')](_0x5c7c1f['vtigerAccounts'][_0x2457e8['id']])){_0x5c7c1f[_0x008d('0x20')][_0x2457e8['id']]=new VtigerAccount(_0x2457e8);}else{_0x5c7c1f[_0x008d('0x3f')](_0x5c7c1f[_0x008d('0x20')][_0x2457e8['id']],_0x2457e8);}}}return _0x5c7c1f[_0x008d('0x20')];};};Realtime[_0x008d('0x3e')][_0x008d('0x4e')]=function(){var _0x203ba0=this;return function(_0x3e937c){if(_0x3e937c){freeIsNotKey(_0x3e937c,_0x203ba0[_0x008d('0x4f')],'id');for(var _0x191536=0x0,_0x12dc7c={},_0x47bc36={};_0x191536<_0x3e937c[_0x008d('0x42')];_0x191536+=0x1){_0x12dc7c=_0x3e937c[_0x191536];if(_['isUndefined'](_0x203ba0['servicenowAccounts'][_0x12dc7c['id']])){_0x203ba0[_0x008d('0x4f')][_0x12dc7c['id']]=new ServicenowAccount(_0x12dc7c);}else{_0x203ba0[_0x008d('0x3f')](_0x203ba0[_0x008d('0x4f')][_0x12dc7c['id']],_0x12dc7c);}}}return _0x203ba0[_0x008d('0x4f')];};};Realtime[_0x008d('0x3e')][_0x008d('0x50')]=function(){var _0x53a29c=this;return function(_0x2a3c75){if(_0x2a3c75){freeIsNotKey(_0x2a3c75,_0x53a29c[_0x008d('0x21')],'id');for(var _0x524517=0x0,_0x54ec7d={},_0x380428={};_0x524517<_0x2a3c75[_0x008d('0x42')];_0x524517+=0x1){_0x54ec7d=_0x2a3c75[_0x524517];if(_[_0x008d('0x44')](_0x53a29c[_0x008d('0x21')][_0x54ec7d['id']])){_0x53a29c[_0x008d('0x21')][_0x54ec7d['id']]=new Dynamics365Account(_0x54ec7d);}else{_0x53a29c[_0x008d('0x3f')](_0x53a29c[_0x008d('0x21')][_0x54ec7d['id']],_0x54ec7d);}}}return _0x53a29c[_0x008d('0x21')];};};Realtime[_0x008d('0x3e')]['initFreshsalesAccounts']=function(){var _0x4d5065=this;return function(_0x525ed4){if(_0x525ed4){freeIsNotKey(_0x525ed4,_0x4d5065[_0x008d('0x22')],'id');for(var _0x541312=0x0,_0x2504f5={},_0x299ac7={};_0x541312<_0x525ed4[_0x008d('0x42')];_0x541312+=0x1){_0x2504f5=_0x525ed4[_0x541312];if(_[_0x008d('0x44')](_0x4d5065['freshsalesAccounts'][_0x2504f5['id']])){_0x4d5065[_0x008d('0x22')][_0x2504f5['id']]=new FreshsalesAccount(_0x2504f5);}else{_0x4d5065[_0x008d('0x3f')](_0x4d5065[_0x008d('0x22')][_0x2504f5['id']],_0x2504f5);}}}return _0x4d5065['freshsalesAccounts'];};};Realtime[_0x008d('0x3e')][_0x008d('0x51')]=function(){var _0x522185=this;return function(_0x26ed74){for(var _0x1a0801=0x0;_0x1a0801<_0x26ed74[_0x008d('0x42')];_0x1a0801+=0x1){_[_0x008d('0x52')](_0x522185['voiceQueues'][_0x26ed74[_0x1a0801][_0x008d('0x27')]],_0x26ed74[_0x1a0801]);}return _0x522185[_0x008d('0x13')];};};Realtime[_0x008d('0x3e')][_0x008d('0x53')]=function(){var _0x18f695=this;return function(_0x170a27){clearVoiceQueues(_0x18f695[_0x008d('0x13')]);if(_0x170a27){_0x170a27=_['groupBy'](_0x170a27,'uniqueid');for(var _0x595aff in _0x170a27){if(_0x170a27[_0x008d('0x25')](_0x595aff)){var _0x3aa35a={};for(var _0x5d3bcd=0x0;_0x5d3bcd<_0x170a27[_0x595aff]['length'];_0x5d3bcd+=0x1){var _0x3042a7=_0x170a27[_0x595aff][_0x5d3bcd][_0x008d('0x54')];if(_0x18f695['voiceQueues'][_0x3042a7]){if(_0x170a27[_0x595aff][_0x5d3bcd]['queuecallerexit']){_0x18f695[_0x008d('0x13')][_0x3042a7][_0x008d('0x30')]+=0x1;}if(_0x170a27[_0x595aff][_0x5d3bcd][_0x008d('0x55')]){_0x18f695[_0x008d('0x13')][_0x3042a7][_0x008d('0x31')]+=0x1;}_0x18f695[_0x008d('0x13')][_0x3042a7][_0x008d('0x2c')]+=moment(_0x170a27[_0x595aff][_0x5d3bcd][_0x008d('0x56')])[_0x008d('0x57')](moment(_0x170a27[_0x595aff][_0x5d3bcd][_0x008d('0x58')]),_0x008d('0x59'))||0x0;if(_0x5d3bcd===_0x170a27[_0x595aff][_0x008d('0x42')]-0x1){_0x18f695['voiceQueues'][_0x3042a7][_0x008d('0x32')]+=moment(_0x170a27[_0x595aff][_0x5d3bcd][_0x008d('0x5a')]||_0x170a27[_0x595aff][_0x5d3bcd][_0x008d('0x5b')]||_0x170a27[_0x595aff][_0x5d3bcd]['queuecallerexitAt'])[_0x008d('0x57')](moment(_0x170a27[_0x595aff][_0x5d3bcd][_0x008d('0x58')]),'seconds')||0x0;_0x18f695[_0x008d('0x13')][_0x3042a7]['total']+=0x1;if(_0x170a27[_0x595aff][_0x5d3bcd][_0x008d('0x5c')]){_0x18f695[_0x008d('0x13')][_0x3042a7][_0x008d('0x2b')]+=0x1;_0x18f695[_0x008d('0x13')][_0x3042a7][_0x008d('0x2d')]+=moment(_0x170a27[_0x595aff][_0x5d3bcd][_0x008d('0x5a')])[_0x008d('0x57')](moment(_0x170a27[_0x595aff][_0x5d3bcd][_0x008d('0x56')]),'seconds')||0x0;}}else{_0x18f695[_0x008d('0x13')][_0x3042a7][_0x008d('0x32')]+=_0x18f695[_0x008d('0x13')][_0x3042a7][_0x008d('0x2c')]||0x0;}}}}}}return _0x18f695[_0x008d('0x13')];};};Realtime['prototype'][_0x008d('0x5d')]=function(){var _0x3fe64b=this;return function(_0x11df7c){clearVoiceCallReports(_0x3fe64b[_0x008d('0x16')]);if(_0x11df7c){for(var _0x45d7b6=0x0;_0x45d7b6<_0x11df7c[_0x008d('0x42')];_0x45d7b6+=0x1){_0x3fe64b['outbound'][_0x008d('0x2a')]+=0x1;_0x3fe64b[_0x008d('0x16')][_0x008d('0x32')]+=_0x11df7c[_0x45d7b6][_0x008d('0x5e')];if(_0x11df7c[_0x45d7b6][_0x008d('0x5f')]==='ANSWERED'){_0x3fe64b['outbound'][_0x008d('0x2b')]+=0x1;_0x3fe64b[_0x008d('0x16')][_0x008d('0x2c')]+=_0x11df7c[_0x45d7b6][_0x008d('0x5e')]-_0x11df7c[_0x45d7b6][_0x008d('0x60')]||0x0;_0x3fe64b[_0x008d('0x16')]['sumBillable']+=_0x11df7c[_0x45d7b6][_0x008d('0x60')];}}}return _0x3fe64b[_0x008d('0x16')];};};Realtime['prototype'][_0x008d('0x61')]=function(){var _0x4ccb0e=this;return function(_0x374e47){if(_0x374e47){freeIsNotKey(_0x374e47,_0x4ccb0e[_0x008d('0x14')],_0x008d('0x27'));for(var _0x278416=0x0,_0x4de4d7={};_0x278416<_0x374e47['length'];_0x278416+=0x1){_0x4de4d7=_0x374e47[_0x278416];if(_[_0x008d('0x44')](_0x4ccb0e[_0x008d('0x14')][_0x4de4d7['name']])){_0x4ccb0e[_0x008d('0x14')][_0x4de4d7['name']]=new Campaign(_0x4de4d7);}else{_0x4ccb0e[_0x008d('0x3f')](_0x4ccb0e[_0x008d('0x14')][_0x4de4d7[_0x008d('0x27')]],_0x4de4d7);_0x4ccb0e[_0x008d('0x14')][_0x4de4d7[_0x008d('0x27')]][_0x008d('0x62')]=_0x4de4d7[_0x008d('0x63')]?_0x4de4d7['SquareProject'][_0x008d('0x27')]:undefined;}}}return _0x4ccb0e['campaigns'];};};Realtime[_0x008d('0x3e')]['initVoiceExtensions']=function(){var _0x35a9c6=this;return function(_0x53d02d){if(_0x53d02d){freeIsNotKey(_0x53d02d,_0x35a9c6[_0x008d('0x17')],'id');for(var _0x571270=0x0,_0x315639={};_0x571270<_0x53d02d[_0x008d('0x42')];_0x571270+=0x1){_0x315639=_0x53d02d[_0x571270];if(_[_0x008d('0x44')](_0x35a9c6[_0x008d('0x17')][_0x315639['id']])){_0x35a9c6['voiceExtensions'][_0x315639['id']]=new VoiceExtension(_0x315639);}else{_0x35a9c6[_0x008d('0x3f')](_0x35a9c6['voiceExtensions'][_0x315639['id']],_0x315639);}}}return _0x35a9c6[_0x008d('0x17')];};};Realtime[_0x008d('0x3e')][_0x008d('0x64')]=function(){var _0x113287=this;return function(_0x58684a){clearCampaigns(_0x113287[_0x008d('0x14')]);for(var _0x172894=0x0;_0x172894<_0x58684a[_0x008d('0x42')];_0x172894+=0x1){_[_0x008d('0x52')](_0x113287[_0x008d('0x14')][_0x58684a[_0x172894][_0x008d('0x27')]],_0x58684a[_0x172894]);}return _0x113287[_0x008d('0x14')];};};Realtime[_0x008d('0x3e')][_0x008d('0x65')]=function(){var _0x1e709a=this;return function(_0x2f8519){if(_0x2f8519){freeIsNotKey(_0x2f8519,_0x1e709a['faxAccounts'],'id');for(var _0x50ef9=0x0,_0x1076dc={},_0x299c39={};_0x50ef9<_0x2f8519[_0x008d('0x42')];_0x50ef9+=0x1){_0x1076dc=_0x2f8519[_0x50ef9];if(_[_0x008d('0x44')](_0x1e709a[_0x008d('0x23')][_0x1076dc['id']])){_0x1e709a[_0x008d('0x23')][_0x1076dc['id']]=new FaxAccount(_0x1076dc);}else{_0x1e709a['mergeFromDatabase'](_0x1e709a[_0x008d('0x23')][_0x1076dc['id']],_0x1076dc);}}}return _0x1e709a[_0x008d('0x23')];};};module[_0x008d('0x66')]=Realtime;
\ No newline at end of file
+var _0x7d27=['outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','initAgents','length','format','isUndefined','agents','initTelephones','telephones','initTriggers','initZendeskAccounts','zendeskAccounts','initSalesforceAccounts','initFreshdeskAccounts','initZohoAccounts','initDeskAccounts','initSugarcrmAccounts','sugarcrmAccounts','initVtigerAccounts','vtigerAccounts','initServicenowAccounts','servicenowAccounts','initDynamics365Accounts','merge','initVoiceQueueReports','groupBy','uniqueid','unmanaged','queuecallerleaveAt','diff','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','disposition','ANSWERED','dialQueueProject','SquareProject','initCampaignHopperHistory','lodash','moment','../model/agent','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/dynamics365Account','../model/freshsalesAccount','../model/faxAccount','trunks','voiceQueues','triggers','campaigns','templates','outbound','voiceExtensions','channels','outboundChannels','timers','salesforceAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','hasOwnProperty','isNil','interface','SIP/%s','name','total','answered','sumHoldTime','sumDuration','sumBillable','isEmpty','ivrTotalCallsDays','ivrAnswerCallsDay','abandoned','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay'];(function(_0x19d6b6,_0x3381d5){var _0x179783=function(_0x523326){while(--_0x523326){_0x19d6b6['push'](_0x19d6b6['shift']());}};_0x179783(++_0x3381d5);}(_0x7d27,0x97));var _0x77d2=function(_0x504f15,_0x23a1ca){_0x504f15=_0x504f15-0x0;var _0x2a92c1=_0x7d27[_0x504f15];return _0x2a92c1;};'use strict';var BPromise=require('bluebird');var util=require('util');var _=require(_0x77d2('0x0'));var moment=require(_0x77d2('0x1'));var Agent=require(_0x77d2('0x2'));var Telephone=require(_0x77d2('0x3'));var Trunk=require(_0x77d2('0x4'));var VoiceQueue=require(_0x77d2('0x5'));var Trigger=require(_0x77d2('0x6'));var Template=require(_0x77d2('0x7'));var Campaign=require('../model/campaign');var VoiceExtension=require(_0x77d2('0x8'));var ZendeskAccount=require(_0x77d2('0x9'));var SalesforceAccount=require(_0x77d2('0xa'));var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require(_0x77d2('0xb'));var ZohoAccount=require(_0x77d2('0xc'));var DeskAccount=require(_0x77d2('0xd'));var VtigerAccount=require(_0x77d2('0xe'));var ServicenowAccount=require('../model/servicenowAccount');var Dynamics365Account=require(_0x77d2('0xf'));var FreshsalesAccount=require(_0x77d2('0x10'));var FaxAccount=require(_0x77d2('0x11'));var Realtime=function(){this['agents']={};this['telephones']={};this[_0x77d2('0x12')]={};this[_0x77d2('0x13')]={};this[_0x77d2('0x14')]={};this[_0x77d2('0x15')]={};this[_0x77d2('0x16')]={};this[_0x77d2('0x17')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x77d2('0x18')]={};this[_0x77d2('0x19')]={};this['queueChannels']={};this[_0x77d2('0x1a')]={};this[_0x77d2('0x1b')]={};this['settings']={};this['zendeskAccounts']={};this[_0x77d2('0x1c')]={};this['sugarcrmAccounts']={};this[_0x77d2('0x1d')]={};this[_0x77d2('0x1e')]={};this[_0x77d2('0x1f')]={};this['vtigerAccounts']={};this['servicenowAccounts']={};this[_0x77d2('0x20')]={};this[_0x77d2('0x21')]={};this[_0x77d2('0x22')]={};};function freeIsNotKey(_0x399999,_0x2f50ac,_0x23372f){var _0xb2e588=_[_0x77d2('0x23')](_0x399999,function(_0x3dad26,_0x429292){return _0x3dad26[_0x23372f];});for(var _0x160f76 in _0x2f50ac){if(_0x2f50ac[_0x77d2('0x24')](_0x160f76)){if(!_0xb2e588[_0x160f76]){delete _0x2f50ac[_0x160f76];}}}}function freeIsNotKeySip(_0x6d588b,_0x5507c4){var _0x300784=_[_0x77d2('0x23')](_0x6d588b,function(_0x293957,_0x256c74){return util['format']('SIP/%s',_0x293957['name']);});for(var _0x3e7530 in _0x5507c4){if(_0x5507c4[_0x77d2('0x24')](_0x3e7530)){if(!_0x300784[_0x3e7530]){delete _0x5507c4[_0x3e7530];}}}}function freeIsNotKeyAgent(_0x4c7e96,_0x36a3fa){var _0x4c6d68=_[_0x77d2('0x23')](_0x4c7e96,function(_0x1c281f,_0x371a1b){var _0xb1c1c2=_[_0x77d2('0x25')](_0x1c281f[_0x77d2('0x26')])?util['format'](_0x77d2('0x27'),_0x1c281f[_0x77d2('0x28')]):_0x1c281f[_0x77d2('0x26')];return _0xb1c1c2;});for(var _0x54513d in _0x36a3fa){if(_0x36a3fa[_0x77d2('0x24')](_0x54513d)){if(!_0x4c6d68[_0x54513d]){delete _0x36a3fa[_0x54513d];}}}}function clearVoiceCallReports(_0xed154e){_0xed154e[_0x77d2('0x29')]=0x0;_0xed154e[_0x77d2('0x2a')]=0x0;_0xed154e[_0x77d2('0x2b')]=0x0;_0xed154e[_0x77d2('0x2c')]=0x0;_0xed154e[_0x77d2('0x2d')]=0x0;}function clearCampaigns(_0x19f2f4){if(!_[_0x77d2('0x2e')](_0x19f2f4)){for(var _0x1b9059 in _0x19f2f4){if(_0x19f2f4['hasOwnProperty'](_0x1b9059)){_0x19f2f4[_0x1b9059][_0x77d2('0x2f')]=0x0;_0x19f2f4[_0x1b9059][_0x77d2('0x30')]=0x0;}}}}function clearVoiceQueues(_0x435986){if(!_[_0x77d2('0x2e')](_0x435986)){for(var _0x49d113 in _0x435986){if(_0x435986[_0x77d2('0x24')](_0x49d113)){_0x435986[_0x49d113][_0x77d2('0x29')]=0x0;_0x435986[_0x49d113][_0x77d2('0x2a')]=0x0;_0x435986[_0x49d113]['unmanaged']=0x0;_0x435986[_0x49d113][_0x77d2('0x31')]=0x0;_0x435986[_0x49d113][_0x77d2('0x2b')]=0x0;_0x435986[_0x49d113][_0x77d2('0x2c')]=0x0;_0x435986[_0x49d113][_0x77d2('0x2d')]=0x0;_0x435986[_0x49d113][_0x77d2('0x32')]=0x0;_0x435986[_0x49d113][_0x77d2('0x33')]=0x0;_0x435986[_0x49d113][_0x77d2('0x34')]=0x0;_0x435986[_0x49d113][_0x77d2('0x35')]=0x0;_0x435986[_0x49d113][_0x77d2('0x36')]=0x0;_0x435986[_0x49d113]['outboundUnknownCallsDay']=0x0;_0x435986[_0x49d113][_0x77d2('0x37')]=0x0;_0x435986[_0x49d113][_0x77d2('0x38')]=0x0;_0x435986[_0x49d113][_0x77d2('0x39')]=0x0;_0x435986[_0x49d113][_0x77d2('0x3a')]=0x0;_0x435986[_0x49d113][_0x77d2('0x3b')]=0x0;_0x435986[_0x49d113][_0x77d2('0x3c')]=0x0;_0x435986[_0x49d113]['outboundAnswerAgiCallsDay']=0x0;_0x435986[_0x49d113][_0x77d2('0x3d')]=0x0;_0x435986[_0x49d113][_0x77d2('0x3e')]=!![];}}}}Realtime[_0x77d2('0x3f')][_0x77d2('0x40')]=function(_0x1d20b6,_0x2c2832){for(var _0x1e2a0e in _0x2c2832){if(_0x1d20b6[_0x77d2('0x24')](_0x1e2a0e)){_0x1d20b6[_0x1e2a0e]=_0x2c2832[_0x1e2a0e];}}};Realtime[_0x77d2('0x3f')][_0x77d2('0x41')]=function(){var _0x52f2ba=this;return function(_0x343120){if(_0x343120){freeIsNotKeyAgent(_0x343120,_0x52f2ba['agents']);for(var _0x2d8836=0x0,_0x1fd043={},_0x5e797c={};_0x2d8836<_0x343120[_0x77d2('0x42')];_0x2d8836+=0x1){_0x1fd043=_0x343120[_0x2d8836];var _0x4ac599=_[_0x77d2('0x25')](_0x1fd043['interface'])?util[_0x77d2('0x43')](_0x77d2('0x27'),_0x1fd043['name']):_0x1fd043[_0x77d2('0x26')];if(_[_0x77d2('0x44')](_0x52f2ba[_0x77d2('0x45')][_0x4ac599])){_0x52f2ba[_0x77d2('0x45')][_0x4ac599]=new Agent(_0x1fd043);}else{_0x52f2ba[_0x77d2('0x40')](_0x52f2ba[_0x77d2('0x45')][_0x4ac599],_0x1fd043);}}}return _0x52f2ba[_0x77d2('0x45')];};};Realtime[_0x77d2('0x3f')][_0x77d2('0x46')]=function(){var _0x3ab0ef=this;return function(_0xe8ec44){if(_0xe8ec44){freeIsNotKeySip(_0xe8ec44,_0x3ab0ef[_0x77d2('0x47')]);for(var _0x55a266=0x0,_0x46b871={},_0xd1e82c={};_0x55a266<_0xe8ec44[_0x77d2('0x42')];_0x55a266+=0x1){_0x46b871=_0xe8ec44[_0x55a266];if(_[_0x77d2('0x44')](_0x3ab0ef[_0x77d2('0x47')][util[_0x77d2('0x43')](_0x77d2('0x27'),_0x46b871[_0x77d2('0x28')])])){_0x3ab0ef[_0x77d2('0x47')][util['format'](_0x77d2('0x27'),_0x46b871[_0x77d2('0x28')])]=new Telephone(_0x46b871);}else{_0x3ab0ef['mergeFromDatabase'](_0x3ab0ef[_0x77d2('0x47')][util[_0x77d2('0x43')](_0x77d2('0x27'),_0x46b871['name'])],_0x46b871);}}}return _0x3ab0ef[_0x77d2('0x47')];};};Realtime[_0x77d2('0x3f')]['initTrunks']=function(){var _0x59c191=this;return function(_0x256caf){if(_0x256caf){freeIsNotKeySip(_0x256caf,_0x59c191[_0x77d2('0x12')]);for(var _0x51f730=0x0,_0x1a514a={},_0x4f2a26={};_0x51f730<_0x256caf['length'];_0x51f730+=0x1){_0x1a514a=_0x256caf[_0x51f730];if(_['isUndefined'](_0x59c191[_0x77d2('0x12')][util['format'](_0x77d2('0x27'),_0x1a514a[_0x77d2('0x28')])])){_0x59c191[_0x77d2('0x12')][util[_0x77d2('0x43')](_0x77d2('0x27'),_0x1a514a[_0x77d2('0x28')])]=new Trunk(_0x1a514a);}else{_0x59c191[_0x77d2('0x40')](_0x59c191[_0x77d2('0x12')][util['format'](_0x77d2('0x27'),_0x1a514a[_0x77d2('0x28')])],_0x1a514a);}}}return _0x59c191[_0x77d2('0x12')];};};Realtime[_0x77d2('0x3f')]['initVoiceQueues']=function(){var _0x486a25=this;return function(_0x48d019){if(_0x48d019){freeIsNotKey(_0x48d019,_0x486a25['voiceQueues'],'name');for(var _0x5374b8=0x0,_0x43edda={},_0x32a5da={};_0x5374b8<_0x48d019[_0x77d2('0x42')];_0x5374b8+=0x1){_0x43edda=_0x48d019[_0x5374b8];if(_['isUndefined'](_0x486a25[_0x77d2('0x13')][_0x43edda['name']])){_0x486a25[_0x77d2('0x13')][_0x43edda['name']]=new VoiceQueue(_0x43edda);}else{_0x486a25[_0x77d2('0x40')](_0x486a25[_0x77d2('0x13')][_0x43edda[_0x77d2('0x28')]],_0x43edda);}}}return _0x486a25[_0x77d2('0x13')];};};Realtime[_0x77d2('0x3f')][_0x77d2('0x48')]=function(){var _0x1abd93=this;return function(_0x5eb12e){if(_0x5eb12e){freeIsNotKey(_0x5eb12e,_0x1abd93[_0x77d2('0x14')],'id');for(var _0x2ae39b=0x0,_0x3eddbe={},_0x21085b={};_0x2ae39b<_0x5eb12e['length'];_0x2ae39b+=0x1){_0x3eddbe=_0x5eb12e[_0x2ae39b];if(_['isUndefined'](_0x1abd93[_0x77d2('0x14')][_0x3eddbe['id']])){_0x1abd93[_0x77d2('0x14')][_0x3eddbe['id']]=new Trigger(_0x3eddbe);}else{_0x1abd93['mergeFromDatabase'](_0x1abd93[_0x77d2('0x14')][_0x3eddbe['id']],_0x3eddbe);}}}return _0x1abd93[_0x77d2('0x14')];};};Realtime[_0x77d2('0x3f')]['initTemplates']=function(){var _0x4e76c2=this;return function(_0x62b285){if(_0x62b285){freeIsNotKey(_0x62b285,_0x4e76c2[_0x77d2('0x16')],'id');for(var _0xb4e334=0x0,_0x31dbb3={},_0x19f120={};_0xb4e334<_0x62b285[_0x77d2('0x42')];_0xb4e334+=0x1){_0x31dbb3=_0x62b285[_0xb4e334];if(_['isUndefined'](_0x4e76c2[_0x77d2('0x16')][_0x31dbb3['id']])){_0x4e76c2['templates'][_0x31dbb3['id']]=new Template(_0x31dbb3);}else{_0x4e76c2[_0x77d2('0x40')](_0x4e76c2[_0x77d2('0x16')][_0x31dbb3['id']],_0x31dbb3);}}}return _0x4e76c2['templates'];};};Realtime['prototype'][_0x77d2('0x49')]=function(){var _0x78cb19=this;return function(_0x453d95){if(_0x453d95){freeIsNotKey(_0x453d95,_0x78cb19['zendeskAccounts'],'id');for(var _0x56e79a=0x0,_0x1b4666={},_0xb1cd53={};_0x56e79a<_0x453d95[_0x77d2('0x42')];_0x56e79a+=0x1){_0x1b4666=_0x453d95[_0x56e79a];if(_[_0x77d2('0x44')](_0x78cb19['zendeskAccounts'][_0x1b4666['id']])){_0x78cb19['zendeskAccounts'][_0x1b4666['id']]=new ZendeskAccount(_0x1b4666);}else{_0x78cb19['mergeFromDatabase'](_0x78cb19[_0x77d2('0x4a')][_0x1b4666['id']],_0x1b4666);}}}return _0x78cb19[_0x77d2('0x4a')];};};Realtime[_0x77d2('0x3f')][_0x77d2('0x4b')]=function(){var _0x5c2533=this;return function(_0xbd1f66){if(_0xbd1f66){freeIsNotKey(_0xbd1f66,_0x5c2533['salesforceAccounts'],'id');for(var _0x2e5636=0x0,_0x38ad04={},_0x373eac={};_0x2e5636<_0xbd1f66[_0x77d2('0x42')];_0x2e5636+=0x1){_0x38ad04=_0xbd1f66[_0x2e5636];if(_[_0x77d2('0x44')](_0x5c2533[_0x77d2('0x1c')][_0x38ad04['id']])){_0x5c2533[_0x77d2('0x1c')][_0x38ad04['id']]=new SalesforceAccount(_0x38ad04);}else{_0x5c2533[_0x77d2('0x40')](_0x5c2533['salesforceAccounts'][_0x38ad04['id']],_0x38ad04);}}}return _0x5c2533['salesforceAccounts'];};};Realtime[_0x77d2('0x3f')][_0x77d2('0x4c')]=function(){var _0x5ba8a1=this;return function(_0x5440d0){if(_0x5440d0){freeIsNotKey(_0x5440d0,_0x5ba8a1['freshdeskAccounts'],'id');for(var _0x2e1667=0x0,_0x1c408f={},_0x2003ab={};_0x2e1667<_0x5440d0[_0x77d2('0x42')];_0x2e1667+=0x1){_0x1c408f=_0x5440d0[_0x2e1667];if(_[_0x77d2('0x44')](_0x5ba8a1[_0x77d2('0x1d')][_0x1c408f['id']])){_0x5ba8a1[_0x77d2('0x1d')][_0x1c408f['id']]=new FreshdeskAccount(_0x1c408f);}else{_0x5ba8a1[_0x77d2('0x40')](_0x5ba8a1[_0x77d2('0x1d')][_0x1c408f['id']],_0x1c408f);}}}return _0x5ba8a1[_0x77d2('0x1d')];};};Realtime[_0x77d2('0x3f')][_0x77d2('0x4d')]=function(){var _0x450fbe=this;return function(_0x509c29){if(_0x509c29){freeIsNotKey(_0x509c29,_0x450fbe[_0x77d2('0x1e')],'id');for(var _0x14e16b=0x0,_0x26e49a={},_0x34f959={};_0x14e16b<_0x509c29[_0x77d2('0x42')];_0x14e16b+=0x1){_0x26e49a=_0x509c29[_0x14e16b];if(_[_0x77d2('0x44')](_0x450fbe[_0x77d2('0x1e')][_0x26e49a['id']])){_0x450fbe['zohoAccounts'][_0x26e49a['id']]=new ZohoAccount(_0x26e49a);}else{_0x450fbe[_0x77d2('0x40')](_0x450fbe[_0x77d2('0x1e')][_0x26e49a['id']],_0x26e49a);}}}return _0x450fbe[_0x77d2('0x1e')];};};Realtime['prototype'][_0x77d2('0x4e')]=function(){var _0x3a5e48=this;return function(_0x4e51a2){if(_0x4e51a2){freeIsNotKey(_0x4e51a2,_0x3a5e48[_0x77d2('0x1f')],'id');for(var _0x12bcef=0x0,_0x2d2c1b={},_0x2321a7={};_0x12bcef<_0x4e51a2[_0x77d2('0x42')];_0x12bcef+=0x1){_0x2d2c1b=_0x4e51a2[_0x12bcef];if(_[_0x77d2('0x44')](_0x3a5e48[_0x77d2('0x1f')][_0x2d2c1b['id']])){_0x3a5e48[_0x77d2('0x1f')][_0x2d2c1b['id']]=new DeskAccount(_0x2d2c1b);}else{_0x3a5e48['mergeFromDatabase'](_0x3a5e48[_0x77d2('0x1f')][_0x2d2c1b['id']],_0x2d2c1b);}}}return _0x3a5e48['deskAccounts'];};};Realtime[_0x77d2('0x3f')][_0x77d2('0x4f')]=function(){var _0x250b2f=this;return function(_0xcabec5){if(_0xcabec5){freeIsNotKey(_0xcabec5,_0x250b2f['sugarcrmAccounts'],'id');for(var _0x24cf0e=0x0,_0x5f55c7={},_0x4e99dc={};_0x24cf0e<_0xcabec5[_0x77d2('0x42')];_0x24cf0e+=0x1){_0x5f55c7=_0xcabec5[_0x24cf0e];if(_[_0x77d2('0x44')](_0x250b2f['sugarcrmAccounts'][_0x5f55c7['id']])){_0x250b2f[_0x77d2('0x50')][_0x5f55c7['id']]=new SugarcrmAccount(_0x5f55c7);}else{_0x250b2f[_0x77d2('0x40')](_0x250b2f[_0x77d2('0x50')][_0x5f55c7['id']],_0x5f55c7);}}}return _0x250b2f['sugarcrmAccounts'];};};Realtime[_0x77d2('0x3f')][_0x77d2('0x51')]=function(){var _0x2c05c8=this;return function(_0x63a86c){if(_0x63a86c){freeIsNotKey(_0x63a86c,_0x2c05c8[_0x77d2('0x52')],'id');for(var _0x474e1e=0x0,_0x54421a={},_0x302b87={};_0x474e1e<_0x63a86c[_0x77d2('0x42')];_0x474e1e+=0x1){_0x54421a=_0x63a86c[_0x474e1e];if(_[_0x77d2('0x44')](_0x2c05c8[_0x77d2('0x52')][_0x54421a['id']])){_0x2c05c8[_0x77d2('0x52')][_0x54421a['id']]=new VtigerAccount(_0x54421a);}else{_0x2c05c8['mergeFromDatabase'](_0x2c05c8[_0x77d2('0x52')][_0x54421a['id']],_0x54421a);}}}return _0x2c05c8[_0x77d2('0x52')];};};Realtime[_0x77d2('0x3f')][_0x77d2('0x53')]=function(){var _0x44bbd1=this;return function(_0x4b8bf2){if(_0x4b8bf2){freeIsNotKey(_0x4b8bf2,_0x44bbd1[_0x77d2('0x54')],'id');for(var _0x3ac759=0x0,_0x1773d7={},_0x40da11={};_0x3ac759<_0x4b8bf2[_0x77d2('0x42')];_0x3ac759+=0x1){_0x1773d7=_0x4b8bf2[_0x3ac759];if(_['isUndefined'](_0x44bbd1[_0x77d2('0x54')][_0x1773d7['id']])){_0x44bbd1[_0x77d2('0x54')][_0x1773d7['id']]=new ServicenowAccount(_0x1773d7);}else{_0x44bbd1['mergeFromDatabase'](_0x44bbd1[_0x77d2('0x54')][_0x1773d7['id']],_0x1773d7);}}}return _0x44bbd1[_0x77d2('0x54')];};};Realtime['prototype'][_0x77d2('0x55')]=function(){var _0x22f352=this;return function(_0x2c56be){if(_0x2c56be){freeIsNotKey(_0x2c56be,_0x22f352[_0x77d2('0x20')],'id');for(var _0x586a24=0x0,_0x504b44={},_0x2af927={};_0x586a24<_0x2c56be[_0x77d2('0x42')];_0x586a24+=0x1){_0x504b44=_0x2c56be[_0x586a24];if(_[_0x77d2('0x44')](_0x22f352['dynamics365Accounts'][_0x504b44['id']])){_0x22f352[_0x77d2('0x20')][_0x504b44['id']]=new Dynamics365Account(_0x504b44);}else{_0x22f352[_0x77d2('0x40')](_0x22f352[_0x77d2('0x20')][_0x504b44['id']],_0x504b44);}}}return _0x22f352[_0x77d2('0x20')];};};Realtime[_0x77d2('0x3f')]['initFreshsalesAccounts']=function(){var _0x56dcf6=this;return function(_0x220147){if(_0x220147){freeIsNotKey(_0x220147,_0x56dcf6[_0x77d2('0x21')],'id');for(var _0x5a922c=0x0,_0x18d043={},_0x502ec6={};_0x5a922c<_0x220147[_0x77d2('0x42')];_0x5a922c+=0x1){_0x18d043=_0x220147[_0x5a922c];if(_[_0x77d2('0x44')](_0x56dcf6['freshsalesAccounts'][_0x18d043['id']])){_0x56dcf6['freshsalesAccounts'][_0x18d043['id']]=new FreshsalesAccount(_0x18d043);}else{_0x56dcf6[_0x77d2('0x40')](_0x56dcf6[_0x77d2('0x21')][_0x18d043['id']],_0x18d043);}}}return _0x56dcf6[_0x77d2('0x21')];};};Realtime[_0x77d2('0x3f')]['initVoiceQueueHopperHistory']=function(){var _0x2cdcc3=this;return function(_0x59cc32){for(var _0x3069fa=0x0;_0x3069fa<_0x59cc32[_0x77d2('0x42')];_0x3069fa+=0x1){_[_0x77d2('0x56')](_0x2cdcc3[_0x77d2('0x13')][_0x59cc32[_0x3069fa][_0x77d2('0x28')]],_0x59cc32[_0x3069fa]);}return _0x2cdcc3[_0x77d2('0x13')];};};Realtime[_0x77d2('0x3f')][_0x77d2('0x57')]=function(){var _0x5ed4a3=this;return function(_0x1f3dc8){clearVoiceQueues(_0x5ed4a3['voiceQueues']);if(_0x1f3dc8){_0x1f3dc8=_[_0x77d2('0x58')](_0x1f3dc8,_0x77d2('0x59'));for(var _0x50e918 in _0x1f3dc8){if(_0x1f3dc8[_0x77d2('0x24')](_0x50e918)){var _0x273eb3={};for(var _0x16d1ea=0x0;_0x16d1ea<_0x1f3dc8[_0x50e918][_0x77d2('0x42')];_0x16d1ea+=0x1){var _0x4c9dca=_0x1f3dc8[_0x50e918][_0x16d1ea]['queue'];if(_0x5ed4a3['voiceQueues'][_0x4c9dca]){if(_0x1f3dc8[_0x50e918][_0x16d1ea]['queuecallerexit']){_0x5ed4a3[_0x77d2('0x13')][_0x4c9dca][_0x77d2('0x5a')]+=0x1;}if(_0x1f3dc8[_0x50e918][_0x16d1ea]['queuecallerabandon']){_0x5ed4a3['voiceQueues'][_0x4c9dca][_0x77d2('0x31')]+=0x1;}_0x5ed4a3['voiceQueues'][_0x4c9dca][_0x77d2('0x2b')]+=moment(_0x1f3dc8[_0x50e918][_0x16d1ea][_0x77d2('0x5b')])[_0x77d2('0x5c')](moment(_0x1f3dc8[_0x50e918][_0x16d1ea][_0x77d2('0x5d')]),_0x77d2('0x5e'))||0x0;if(_0x16d1ea===_0x1f3dc8[_0x50e918][_0x77d2('0x42')]-0x1){_0x5ed4a3['voiceQueues'][_0x4c9dca][_0x77d2('0x2c')]+=moment(_0x1f3dc8[_0x50e918][_0x16d1ea][_0x77d2('0x5f')]||_0x1f3dc8[_0x50e918][_0x16d1ea][_0x77d2('0x60')]||_0x1f3dc8[_0x50e918][_0x16d1ea][_0x77d2('0x61')])[_0x77d2('0x5c')](moment(_0x1f3dc8[_0x50e918][_0x16d1ea]['queuecallerjoinAt']),_0x77d2('0x5e'))||0x0;_0x5ed4a3['voiceQueues'][_0x4c9dca]['total']+=0x1;if(_0x1f3dc8[_0x50e918][_0x16d1ea]['queuecallercomplete']){_0x5ed4a3[_0x77d2('0x13')][_0x4c9dca][_0x77d2('0x2a')]+=0x1;_0x5ed4a3['voiceQueues'][_0x4c9dca]['sumBillable']+=moment(_0x1f3dc8[_0x50e918][_0x16d1ea][_0x77d2('0x5f')])[_0x77d2('0x5c')](moment(_0x1f3dc8[_0x50e918][_0x16d1ea][_0x77d2('0x5b')]),_0x77d2('0x5e'))||0x0;}}else{_0x5ed4a3[_0x77d2('0x13')][_0x4c9dca][_0x77d2('0x2c')]+=_0x5ed4a3[_0x77d2('0x13')][_0x4c9dca][_0x77d2('0x2b')]||0x0;}}}}}}return _0x5ed4a3[_0x77d2('0x13')];};};Realtime['prototype']['initVoiceCallReports']=function(){var _0x34e3c0=this;return function(_0x12faa6){clearVoiceCallReports(_0x34e3c0[_0x77d2('0x17')]);if(_0x12faa6){for(var _0x3c9131=0x0;_0x3c9131<_0x12faa6[_0x77d2('0x42')];_0x3c9131+=0x1){_0x34e3c0[_0x77d2('0x17')][_0x77d2('0x29')]+=0x1;_0x34e3c0[_0x77d2('0x17')][_0x77d2('0x2c')]+=_0x12faa6[_0x3c9131]['duration'];if(_0x12faa6[_0x3c9131][_0x77d2('0x62')]===_0x77d2('0x63')){_0x34e3c0[_0x77d2('0x17')][_0x77d2('0x2a')]+=0x1;_0x34e3c0[_0x77d2('0x17')]['sumHoldTime']+=_0x12faa6[_0x3c9131]['duration']-_0x12faa6[_0x3c9131]['billableseconds']||0x0;_0x34e3c0['outbound'][_0x77d2('0x2d')]+=_0x12faa6[_0x3c9131]['billableseconds'];}}}return _0x34e3c0[_0x77d2('0x17')];};};Realtime[_0x77d2('0x3f')]['initCampaigns']=function(){var _0x3e098a=this;return function(_0x7fea28){if(_0x7fea28){freeIsNotKey(_0x7fea28,_0x3e098a['campaigns'],'name');for(var _0x1fa61b=0x0,_0x19809c={};_0x1fa61b<_0x7fea28[_0x77d2('0x42')];_0x1fa61b+=0x1){_0x19809c=_0x7fea28[_0x1fa61b];if(_[_0x77d2('0x44')](_0x3e098a['campaigns'][_0x19809c[_0x77d2('0x28')]])){_0x3e098a[_0x77d2('0x15')][_0x19809c[_0x77d2('0x28')]]=new Campaign(_0x19809c);}else{_0x3e098a[_0x77d2('0x40')](_0x3e098a['campaigns'][_0x19809c[_0x77d2('0x28')]],_0x19809c);_0x3e098a[_0x77d2('0x15')][_0x19809c[_0x77d2('0x28')]][_0x77d2('0x64')]=_0x19809c[_0x77d2('0x65')]?_0x19809c[_0x77d2('0x65')][_0x77d2('0x28')]:undefined;}}}return _0x3e098a[_0x77d2('0x15')];};};Realtime[_0x77d2('0x3f')]['initVoiceExtensions']=function(){var _0x2ab463=this;return function(_0x4e4608){if(_0x4e4608){freeIsNotKey(_0x4e4608,_0x2ab463['voiceExtensions'],'id');for(var _0x20127c=0x0,_0x46dae6={};_0x20127c<_0x4e4608['length'];_0x20127c+=0x1){_0x46dae6=_0x4e4608[_0x20127c];if(_[_0x77d2('0x44')](_0x2ab463[_0x77d2('0x18')][_0x46dae6['id']])){_0x2ab463[_0x77d2('0x18')][_0x46dae6['id']]=new VoiceExtension(_0x46dae6);}else{_0x2ab463[_0x77d2('0x40')](_0x2ab463['voiceExtensions'][_0x46dae6['id']],_0x46dae6);}}}return _0x2ab463['voiceExtensions'];};};Realtime['prototype'][_0x77d2('0x66')]=function(){var _0x5e36bc=this;return function(_0x37db84){clearCampaigns(_0x5e36bc[_0x77d2('0x15')]);for(var _0x476ab4=0x0;_0x476ab4<_0x37db84[_0x77d2('0x42')];_0x476ab4+=0x1){_['merge'](_0x5e36bc[_0x77d2('0x15')][_0x37db84[_0x476ab4][_0x77d2('0x28')]],_0x37db84[_0x476ab4]);}return _0x5e36bc[_0x77d2('0x15')];};};Realtime[_0x77d2('0x3f')]['initFaxAccounts']=function(){var _0x3cac7f=this;return function(_0x58f676){if(_0x58f676){freeIsNotKey(_0x58f676,_0x3cac7f['faxAccounts'],'id');for(var _0x250e72=0x0,_0x168138={},_0x48248e={};_0x250e72<_0x58f676[_0x77d2('0x42')];_0x250e72+=0x1){_0x168138=_0x58f676[_0x250e72];if(_['isUndefined'](_0x3cac7f[_0x77d2('0x22')][_0x168138['id']])){_0x3cac7f[_0x77d2('0x22')][_0x168138['id']]=new FaxAccount(_0x168138);}else{_0x3cac7f[_0x77d2('0x40')](_0x3cac7f[_0x77d2('0x22')][_0x168138['id']],_0x168138);}}}return _0x3cac7f[_0x77d2('0x22')];};};module['exports']=Realtime;
\ No newline at end of file
index f870347..bad3d13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa4d=['substring','indexOf','mobile','phone','transfererlinkedid','exports','lodash','moment','util','../ami','../rpc/voiceAgentReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceAgentReport','realtime','agents','telephones','prototype','sync','xdr','custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','attendedtransfer','attendedTransfer','findAgent','find','accountcode','name','isNil','interface','format','length','connectedlinenum','assigned','SIP/%s','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','create','match','destination','type','dialer','queue','lastdata','callerid','xcally-motion-preview','calleridpreview','calleridnum','originatecalleridnum','destinationchannel','channel','disposition','ANSWERED','\x22%s\x22\x20<%s>','transfers','linkedid','blindTransfer','monitorFilename','monitors','createdAt','connectedlinename','exten','xcally-motion-dialer','forEach','Local'];(function(_0x4ce028,_0x526d4b){var _0x583d0c=function(_0x874178){while(--_0x874178){_0x4ce028['push'](_0x4ce028['shift']());}};_0x583d0c(++_0x526d4b);}(_0xfa4d,0x1e0));var _0xdfa4=function(_0x35e8f6,_0x484821){_0x35e8f6=_0x35e8f6-0x0;var _0x2f9382=_0xfa4d[_0x35e8f6];return _0x2f9382;};'use strict';var _=require(_0xdfa4('0x0'));var moment=require(_0xdfa4('0x1'));var util=require(_0xdfa4('0x2'));var config=require('../../../config/environment');var ami=require(_0xdfa4('0x3'));var RpcVoiceAgentReport=require(_0xdfa4('0x4'));var RpcVoiceCallReport=require('../rpc/voiceCallReport');var RpcVoiceDialReport=require(_0xdfa4('0x5'));var RpcMemberReport=require(_0xdfa4('0x6'));var RpcVoiceQueueReport=require(_0xdfa4('0x7'));var RpcVoiceRecording=require(_0xdfa4('0x8'));var RpcVoiceTransferReport=require(_0xdfa4('0x9'));var VoiceQueueReport=require(_0xdfa4('0xa'));var VoiceCallReport=require('./voiceCallReport');var VoiceAgentReport=require(_0xdfa4('0xb'));var VoiceDialReport=require('./voiceDialReport');var UserReport=require('./userReport');function Report(_0x562a8f){this[_0xdfa4('0xc')]=_0x562a8f;this[_0xdfa4('0xd')]=_0x562a8f[_0xdfa4('0xd')];this[_0xdfa4('0xe')]=_0x562a8f[_0xdfa4('0xe')];}Report[_0xdfa4('0xf')][_0xdfa4('0x10')]=function(_0x3865a2){var _0x13fdaf=new VoiceQueueReport(this[_0xdfa4('0xc')]);var _0x38bf69=new VoiceAgentReport(this[_0xdfa4('0xc')]);var _0x2ea299=new VoiceDialReport(this[_0xdfa4('0xc')]);var _0x44235a=new VoiceCallReport(this[_0xdfa4('0xc')]);var _0xcbf814=new UserReport(this[_0xdfa4('0xc')]);if(config[_0xdfa4('0x11')]&&config['xdr']['disabled']){ami['on'](_0xdfa4('0x12'),this[_0xdfa4('0x13')][_0xdfa4('0x14')](this));ami['on'](_0xdfa4('0x15'),this[_0xdfa4('0x16')][_0xdfa4('0x14')](this));ami['on'](_0xdfa4('0x17'),this[_0xdfa4('0x18')][_0xdfa4('0x14')](this));ami['on'](_0xdfa4('0x19'),this[_0xdfa4('0x1a')][_0xdfa4('0x14')](this));ami['on']('blindtransfer',this['blindTransfer']['bind'](this));ami['on'](_0xdfa4('0x1b'),this[_0xdfa4('0x1c')]['bind'](this));}};Report[_0xdfa4('0xf')][_0xdfa4('0x1d')]=function(_0x764e40){var _0x249e0c;_0x249e0c=_[_0xdfa4('0x1e')](this['agents'],function(_0x2b1aa1){return _0x2b1aa1[_0xdfa4('0x1f')]==_0x764e40||_0x2b1aa1[_0xdfa4('0x20')]==_0x764e40;});if(_[_0xdfa4('0x21')](_0x249e0c)){var _0xc75d6e=_[_0xdfa4('0x1e')](this[_0xdfa4('0xe')],function(_0x6f049){return _0x6f049['accountcode']==_0x764e40||_0x6f049[_0xdfa4('0x20')]==_0x764e40;});if(_0xc75d6e){_0x249e0c=_[_0xdfa4('0x1e')](this[_0xdfa4('0xd')],function(_0x1b2772){return _0x1b2772[_0xdfa4('0x22')]==util[_0xdfa4('0x23')]('SIP/%s',_0xc75d6e[_0xdfa4('0x20')]);});}}return _0x249e0c;};Report[_0xdfa4('0xf')][_0xdfa4('0x13')]=function(_0x80ae82){for(var _0x124927=0x0;_0x124927<_0x80ae82[_0xdfa4('0x24')];_0x124927+=0x1){var _0x520077=this[_0xdfa4('0x1d')](_0x80ae82[_0x124927][_0xdfa4('0x25')]);if(_0x520077){_0x80ae82[_0x124927][_0xdfa4('0x1f')]=_0x520077['accountcode'];_0x80ae82[_0x124927][_0xdfa4('0x26')]=!![];_0x80ae82[_0x124927]['lastAssignedTo']=_0x520077[_0xdfa4('0x20')];_0x80ae82[_0x124927]['interface']=_[_0xdfa4('0x21')](_0x520077[_0xdfa4('0x22')])?util[_0xdfa4('0x23')](_0xdfa4('0x27'),_0x520077[_0xdfa4('0x20')]):_0x520077[_0xdfa4('0x22')];if(_0x80ae82[_0x124927][_0xdfa4('0x28')]){_0x80ae82[_0x124927][_0xdfa4('0x29')]=moment()[_0xdfa4('0x23')](_0xdfa4('0x2a'));}if(_0x80ae82[_0x124927][_0xdfa4('0x2b')]){_0x80ae82[_0x124927][_0xdfa4('0x2c')]=moment()['format'](_0xdfa4('0x2a'));}RpcMemberReport[_0xdfa4('0x13')](_0x80ae82[_0x124927]);}RpcVoiceQueueReport[_0xdfa4('0x2d')](_0x80ae82[_0x124927]);}};function extractCalleridNumber(_0x3b630d){var _0x53a3b6=_0x3b630d[_0xdfa4('0x2e')](/<(.*?)>/);return _0x53a3b6?_0x53a3b6[0x1]:_0x3b630d;}Report[_0xdfa4('0xf')][_0xdfa4('0x16')]=function(_0x5b92fe){_0x5b92fe[_0xdfa4('0x2f')]=_0x5b92fe['destination']||_0x5b92fe['exten'];if(_0x5b92fe[_0xdfa4('0x30')]==_0xdfa4('0x31')){_0x5b92fe['lastapplication']=_0xdfa4('0x32');_0x5b92fe[_0xdfa4('0x33')]=_0x5b92fe['queue'];if(_0x5b92fe['context']=='from-voip-provider'){_0x5b92fe[_0xdfa4('0x1f')]='';_0x5b92fe[_0xdfa4('0x2f')]=extractCalleridNumber(_0x5b92fe[_0xdfa4('0x34')]);}else if(_0x5b92fe['context']=='from-sip'){if(_0x5b92fe['destination']==_0xdfa4('0x35')){_0x5b92fe[_0xdfa4('0x2f')]=extractCalleridNumber(_0x5b92fe[_0xdfa4('0x36')]);_0x5b92fe[_0xdfa4('0x37')]=_0x5b92fe[_0xdfa4('0x38')];_0x5b92fe[_0xdfa4('0x39')]=[_0x5b92fe[_0xdfa4('0x3a')],_0x5b92fe['channel']=_0x5b92fe['destinationchannel']][0x0];_0x5b92fe[_0xdfa4('0x34')]=_0x5b92fe['calleridpreview'];}else{_0x5b92fe[_0xdfa4('0x2f')]=_0x5b92fe['calleridnum'];_0x5b92fe['calleridnum']=_0x5b92fe[_0xdfa4('0x38')];if(_0x5b92fe[_0xdfa4('0x3b')]==_0xdfa4('0x3c')){_0x5b92fe[_0xdfa4('0x1f')]=_0x5b92fe[_0xdfa4('0x25')];}else{_0x5b92fe['accountcode']='';}}}}else{_0x5b92fe['callerid']=util[_0xdfa4('0x23')](_0xdfa4('0x3d'),_0x5b92fe['calleridname'],_0x5b92fe[_0xdfa4('0x37')]);}if(RpcVoiceTransferReport[_0xdfa4('0x3e')][_0x5b92fe['linkedid']]){var _0x2a1773=RpcVoiceTransferReport[_0xdfa4('0x3e')][_0x5b92fe[_0xdfa4('0x3f')]];_0x2a1773['transfereelinkedid']=_0x5b92fe['uniqueid'];RpcVoiceTransferReport[_0xdfa4('0x40')](_0x2a1773);delete RpcVoiceTransferReport[_0xdfa4('0x3e')][_0x5b92fe['linkedid']];}RpcVoiceCallReport[_0xdfa4('0x2d')](_0x5b92fe);if(_0x5b92fe['monitor']){for(var _0x5afe86=0x0;_0x5afe86<_0x5b92fe['monitors'][_0xdfa4('0x24')];_0x5afe86+=0x1){_0x5b92fe[_0xdfa4('0x41')]=_0x5b92fe[_0xdfa4('0x42')][_0x5afe86]['filename'];_0x5b92fe[_0xdfa4('0x43')]=_0x5b92fe['monitors'][_0x5afe86]['createdAt'];if(_0x5b92fe['exten']==_0xdfa4('0x35')){_0x5b92fe['calleridnum']=_0x5b92fe[_0xdfa4('0x25')];_0x5b92fe['calleridname']=_0x5b92fe[_0xdfa4('0x44')];_0x5b92fe[_0xdfa4('0x25')]=_0x5b92fe['accountcode'];_0x5b92fe[_0xdfa4('0x44')]=_0x5b92fe['membername'];_0x5b92fe[_0xdfa4('0x45')]=_0x5b92fe[_0xdfa4('0x38')];}else if(_0x5b92fe[_0xdfa4('0x45')]==_0xdfa4('0x46')){_0x5b92fe[_0xdfa4('0x37')]=_0x5b92fe['destination'];_0x5b92fe[_0xdfa4('0x45')]=_0x5b92fe[_0xdfa4('0x38')];}RpcVoiceRecording[_0xdfa4('0x2d')](_0x5b92fe);}}};Report[_0xdfa4('0xf')][_0xdfa4('0x18')]=function(_0x19ab66){if(_['isArray'](_0x19ab66)){_0x19ab66[_0xdfa4('0x47')](function(_0x163005){RpcVoiceAgentReport[_0xdfa4('0x2d')](_0x163005);});}else{RpcVoiceAgentReport['create'](_0x19ab66);}};Report[_0xdfa4('0xf')][_0xdfa4('0x1a')]=function(_0x358587){RpcVoiceDialReport[_0xdfa4('0x2d')](_0x358587);var _0xf2df02;var _0x2e343c;var _0x454531=_0x358587['channel'];if(_['startsWith'](_0x454531,_0xdfa4('0x48'))){_0x2e343c=_0x454531[_0xdfa4('0x49')](_0x454531[_0xdfa4('0x4a')]('/')+0x1,_0x454531[_0xdfa4('0x4a')]('@'));_0xf2df02=_[_0xdfa4('0x1e')](this[_0xdfa4('0xd')],function(_0x904602){return _0x904602[_0xdfa4('0x4b')]==_0x2e343c||_0x904602[_0xdfa4('0x4c')]==_0x2e343c||_0x904602[_0xdfa4('0x1f')]==_0x2e343c;});}else{_0x2e343c=_0x454531[_0xdfa4('0x49')](_0x454531[_0xdfa4('0x4a')]('/')+0x1,_0x454531['lastIndexOf']('-'));_0xf2df02=this[_0xdfa4('0x1d')](_0x2e343c);}if(_0xf2df02){_0x358587[_0xdfa4('0x22')]=_['isNil'](_0xf2df02[_0xdfa4('0x22')])?util[_0xdfa4('0x23')]('SIP/%s',_0xf2df02[_0xdfa4('0x20')]):_0xf2df02[_0xdfa4('0x22')];_0x358587['membername']=_0xf2df02['name'];_0x358587['accountcode']=_0xf2df02[_0xdfa4('0x1f')];RpcMemberReport[_0xdfa4('0x1a')](_0x358587);}};Report['prototype'][_0xdfa4('0x40')]=function(_0x3bfed5){RpcVoiceTransferReport[_0xdfa4('0x3e')][_0x3bfed5[_0xdfa4('0x4d')]]=_0x3bfed5;};Report['prototype']['attendedTransfer']=function(_0x4d41e8){RpcVoiceTransferReport[_0xdfa4('0x1c')](_0x4d41e8);};module[_0xdfa4('0x4e')]=Report;
\ No newline at end of file
+var _0x044c=['../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceRecording','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','realtime','agents','sync','disabled','custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','prototype','find','accountcode','name','isNil','telephones','interface','length','findAgent','connectedlinenum','assigned','lastAssignedTo','SIP/%s','queuecallercomplete','queuecallercompleteAt','format','queuecallerexit','YYYY-MM-DD\x20HH:mm:ss','create','match','destination','exten','type','dialer','lastapplication','lastdata','queue','from-voip-provider','callerid','context','from-sip','xcally-motion-preview','calleridnum','originatecalleridnum','destinationchannel','channel','calleridpreview','disposition','transfers','linkedid','transfereelinkedid','uniqueid','monitors','monitorFilename','filename','connectedlinename','xcally-motion-dialer','isArray','startsWith','Local','substring','indexOf','mobile','lastIndexOf','membername','transfererlinkedid','exports','lodash','moment','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport'];(function(_0x7ad6cb,_0xffee6c){var _0x22a0ba=function(_0x47f291){while(--_0x47f291){_0x7ad6cb['push'](_0x7ad6cb['shift']());}};_0x22a0ba(++_0xffee6c);}(_0x044c,0x155));var _0xc044=function(_0x5dd721,_0x12d33c){_0x5dd721=_0x5dd721-0x0;var _0x592748=_0x044c[_0x5dd721];return _0x592748;};'use strict';var _=require(_0xc044('0x0'));var moment=require(_0xc044('0x1'));var util=require(_0xc044('0x2'));var config=require(_0xc044('0x3'));var ami=require(_0xc044('0x4'));var RpcVoiceAgentReport=require(_0xc044('0x5'));var RpcVoiceCallReport=require(_0xc044('0x6'));var RpcVoiceDialReport=require(_0xc044('0x7'));var RpcMemberReport=require(_0xc044('0x8'));var RpcVoiceQueueReport=require('../rpc/voiceQueueReport');var RpcVoiceRecording=require(_0xc044('0x9'));var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require(_0xc044('0xa'));var VoiceCallReport=require(_0xc044('0xb'));var VoiceAgentReport=require(_0xc044('0xc'));var VoiceDialReport=require('./voiceDialReport');var UserReport=require('./userReport');function Report(_0x18ee63){this[_0xc044('0xd')]=_0x18ee63;this[_0xc044('0xe')]=_0x18ee63[_0xc044('0xe')];this['telephones']=_0x18ee63['telephones'];}Report['prototype'][_0xc044('0xf')]=function(_0x46496c){var _0x3d1bc6=new VoiceQueueReport(this[_0xc044('0xd')]);var _0x29674a=new VoiceAgentReport(this['realtime']);var _0x5c032b=new VoiceDialReport(this[_0xc044('0xd')]);var _0x13cf8a=new VoiceCallReport(this[_0xc044('0xd')]);var _0x171be8=new UserReport(this['realtime']);if(config['xdr']&&config['xdr'][_0xc044('0x10')]){ami['on'](_0xc044('0x11'),this[_0xc044('0x12')][_0xc044('0x13')](this));ami['on'](_0xc044('0x14'),this[_0xc044('0x15')][_0xc044('0x13')](this));ami['on'](_0xc044('0x16'),this[_0xc044('0x17')]['bind'](this));ami['on'](_0xc044('0x18'),this[_0xc044('0x19')][_0xc044('0x13')](this));ami['on'](_0xc044('0x1a'),this[_0xc044('0x1b')][_0xc044('0x13')](this));ami['on'](_0xc044('0x1c'),this[_0xc044('0x1d')][_0xc044('0x13')](this));}};Report[_0xc044('0x1e')]['findAgent']=function(_0xdb5835){var _0x237ec4;_0x237ec4=_[_0xc044('0x1f')](this[_0xc044('0xe')],function(_0x397b7c){return _0x397b7c[_0xc044('0x20')]==_0xdb5835||_0x397b7c[_0xc044('0x21')]==_0xdb5835;});if(_[_0xc044('0x22')](_0x237ec4)){var _0xa866f3=_[_0xc044('0x1f')](this[_0xc044('0x23')],function(_0x485148){return _0x485148[_0xc044('0x20')]==_0xdb5835||_0x485148[_0xc044('0x21')]==_0xdb5835;});if(_0xa866f3){_0x237ec4=_[_0xc044('0x1f')](this[_0xc044('0xe')],function(_0x10995f){return _0x10995f[_0xc044('0x24')]==util['format']('SIP/%s',_0xa866f3[_0xc044('0x21')]);});}}return _0x237ec4;};Report['prototype'][_0xc044('0x12')]=function(_0x4f12f8){for(var _0xd2649c=0x0;_0xd2649c<_0x4f12f8[_0xc044('0x25')];_0xd2649c+=0x1){var _0x12466c=this[_0xc044('0x26')](_0x4f12f8[_0xd2649c][_0xc044('0x27')]);if(_0x12466c){_0x4f12f8[_0xd2649c][_0xc044('0x20')]=_0x12466c[_0xc044('0x20')];_0x4f12f8[_0xd2649c][_0xc044('0x28')]=!![];_0x4f12f8[_0xd2649c][_0xc044('0x29')]=_0x12466c[_0xc044('0x21')];_0x4f12f8[_0xd2649c][_0xc044('0x24')]=_[_0xc044('0x22')](_0x12466c[_0xc044('0x24')])?util['format'](_0xc044('0x2a'),_0x12466c[_0xc044('0x21')]):_0x12466c[_0xc044('0x24')];if(_0x4f12f8[_0xd2649c][_0xc044('0x2b')]){_0x4f12f8[_0xd2649c][_0xc044('0x2c')]=moment()[_0xc044('0x2d')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x4f12f8[_0xd2649c][_0xc044('0x2e')]){_0x4f12f8[_0xd2649c]['queuecallerexitAt']=moment()['format'](_0xc044('0x2f'));}RpcMemberReport[_0xc044('0x12')](_0x4f12f8[_0xd2649c]);}RpcVoiceQueueReport[_0xc044('0x30')](_0x4f12f8[_0xd2649c]);}};function extractCalleridNumber(_0xbe065c){var _0x37bd1e=_0xbe065c[_0xc044('0x31')](/<(.*?)>/);return _0x37bd1e?_0x37bd1e[0x1]:_0xbe065c;}Report['prototype'][_0xc044('0x15')]=function(_0x5a364b){_0x5a364b['destination']=_0x5a364b[_0xc044('0x32')]||_0x5a364b[_0xc044('0x33')];if(_0x5a364b[_0xc044('0x34')]==_0xc044('0x35')){_0x5a364b[_0xc044('0x36')]='queue';_0x5a364b[_0xc044('0x37')]=_0x5a364b[_0xc044('0x38')];if(_0x5a364b['context']==_0xc044('0x39')){_0x5a364b[_0xc044('0x20')]='';_0x5a364b[_0xc044('0x32')]=extractCalleridNumber(_0x5a364b[_0xc044('0x3a')]);}else if(_0x5a364b[_0xc044('0x3b')]==_0xc044('0x3c')){if(_0x5a364b[_0xc044('0x32')]==_0xc044('0x3d')){_0x5a364b['destination']=extractCalleridNumber(_0x5a364b['calleridpreview']);_0x5a364b[_0xc044('0x3e')]=_0x5a364b[_0xc044('0x3f')];_0x5a364b[_0xc044('0x40')]=[_0x5a364b[_0xc044('0x41')],_0x5a364b[_0xc044('0x41')]=_0x5a364b[_0xc044('0x40')]][0x0];_0x5a364b[_0xc044('0x3a')]=_0x5a364b[_0xc044('0x42')];}else{_0x5a364b['destination']=_0x5a364b[_0xc044('0x3e')];_0x5a364b[_0xc044('0x3e')]=_0x5a364b[_0xc044('0x3f')];if(_0x5a364b[_0xc044('0x43')]=='ANSWERED'){_0x5a364b[_0xc044('0x20')]=_0x5a364b['connectedlinenum'];}else{_0x5a364b[_0xc044('0x20')]='';}}}}else{_0x5a364b[_0xc044('0x3a')]=util[_0xc044('0x2d')]('\x22%s\x22\x20<%s>',_0x5a364b['calleridname'],_0x5a364b[_0xc044('0x3e')]);}if(RpcVoiceTransferReport[_0xc044('0x44')][_0x5a364b['linkedid']]){var _0x70863e=RpcVoiceTransferReport[_0xc044('0x44')][_0x5a364b[_0xc044('0x45')]];_0x70863e[_0xc044('0x46')]=_0x5a364b[_0xc044('0x47')];RpcVoiceTransferReport[_0xc044('0x1b')](_0x70863e);delete RpcVoiceTransferReport['transfers'][_0x5a364b[_0xc044('0x45')]];}RpcVoiceCallReport[_0xc044('0x30')](_0x5a364b);if(_0x5a364b['monitor']){for(var _0x130a29=0x0;_0x130a29<_0x5a364b[_0xc044('0x48')][_0xc044('0x25')];_0x130a29+=0x1){_0x5a364b[_0xc044('0x49')]=_0x5a364b[_0xc044('0x48')][_0x130a29][_0xc044('0x4a')];_0x5a364b['createdAt']=_0x5a364b[_0xc044('0x48')][_0x130a29]['createdAt'];if(_0x5a364b[_0xc044('0x33')]=='xcally-motion-preview'){_0x5a364b['calleridnum']=_0x5a364b[_0xc044('0x27')];_0x5a364b['calleridname']=_0x5a364b[_0xc044('0x4b')];_0x5a364b['connectedlinenum']=_0x5a364b['accountcode'];_0x5a364b['connectedlinename']=_0x5a364b['membername'];_0x5a364b[_0xc044('0x33')]=_0x5a364b[_0xc044('0x3f')];}else if(_0x5a364b[_0xc044('0x33')]==_0xc044('0x4c')){_0x5a364b[_0xc044('0x3e')]=_0x5a364b['destination'];_0x5a364b[_0xc044('0x33')]=_0x5a364b['originatecalleridnum'];}RpcVoiceRecording[_0xc044('0x30')](_0x5a364b);}}};Report['prototype']['voiceAgentReport']=function(_0x41707c){if(_[_0xc044('0x4d')](_0x41707c)){_0x41707c['forEach'](function(_0x57272c){RpcVoiceAgentReport[_0xc044('0x30')](_0x57272c);});}else{RpcVoiceAgentReport['create'](_0x41707c);}};Report[_0xc044('0x1e')]['voiceDialReport']=function(_0x42acbf){RpcVoiceDialReport['create'](_0x42acbf);var _0x50e7f1;var _0x5ec1dc;var _0x299cdb=_0x42acbf[_0xc044('0x41')];if(_[_0xc044('0x4e')](_0x299cdb,_0xc044('0x4f'))){_0x5ec1dc=_0x299cdb[_0xc044('0x50')](_0x299cdb[_0xc044('0x51')]('/')+0x1,_0x299cdb[_0xc044('0x51')]('@'));_0x50e7f1=_[_0xc044('0x1f')](this[_0xc044('0xe')],function(_0x3bcdde){return _0x3bcdde[_0xc044('0x52')]==_0x5ec1dc||_0x3bcdde['phone']==_0x5ec1dc||_0x3bcdde[_0xc044('0x20')]==_0x5ec1dc;});}else{_0x5ec1dc=_0x299cdb[_0xc044('0x50')](_0x299cdb[_0xc044('0x51')]('/')+0x1,_0x299cdb[_0xc044('0x53')]('-'));_0x50e7f1=this[_0xc044('0x26')](_0x5ec1dc);}if(_0x50e7f1){_0x42acbf[_0xc044('0x24')]=_[_0xc044('0x22')](_0x50e7f1[_0xc044('0x24')])?util[_0xc044('0x2d')]('SIP/%s',_0x50e7f1[_0xc044('0x21')]):_0x50e7f1[_0xc044('0x24')];_0x42acbf[_0xc044('0x54')]=_0x50e7f1[_0xc044('0x21')];_0x42acbf[_0xc044('0x20')]=_0x50e7f1['accountcode'];RpcMemberReport[_0xc044('0x19')](_0x42acbf);}};Report[_0xc044('0x1e')][_0xc044('0x1b')]=function(_0xf9ed76){RpcVoiceTransferReport[_0xc044('0x44')][_0xf9ed76[_0xc044('0x55')]]=_0xf9ed76;};Report['prototype']['attendedTransfer']=function(_0x481eb5){RpcVoiceTransferReport[_0xc044('0x1d')](_0x481eb5);};module[_0xc044('0x56')]=Report;
\ No newline at end of file
index 7f4dbb4..c99e515 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf388=['[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','[userReport][peerstatus]','lodash','moment','bluebird','redis','defaults','localhost','trunks','agents','telephones','syncRegistry','registry','bind','devicestatechange','syncDeviceState','peerstatus','syncRealtimeShow','resolve','then','catch','error','[userReport][sipshowregistry]','inspect','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','state','debug','[userReport][registry]','username','stateRegistry','merge','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','name','device','local','toLowerCase','inuse','stateTime','toNumber','format','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:%s','trunk:save','startsWith','substring','find','phone','accountcode','isNotNull','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','status','address','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:%s'];(function(_0x1234cd,_0x3a11e3){var _0x5e83b2=function(_0x3ca27d){while(--_0x3ca27d){_0x1234cd['push'](_0x1234cd['shift']());}};_0x5e83b2(++_0x3a11e3);}(_0xf388,0x14c));var _0x8f38=function(_0x59d475,_0x1cc1dc){_0x59d475=_0x59d475-0x0;var _0x242aef=_0xf388[_0x59d475];return _0x242aef;};'use strict';var _=require(_0x8f38('0x0'));var moment=require(_0x8f38('0x1'));var util=require('util');var Redis=require('ioredis');var BPromise=require(_0x8f38('0x2'));var config=require('../../../config/environment');var logger=require('../../../config/logger')('ami');var ami=require('../ami');config[_0x8f38('0x3')]=_[_0x8f38('0x4')](config[_0x8f38('0x3')],{'host':_0x8f38('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x8f38('0x3')]));function UserReport(_0x17a56b){this[_0x8f38('0x6')]=_0x17a56b['trunks'];this[_0x8f38('0x7')]=_0x17a56b[_0x8f38('0x7')];this[_0x8f38('0x8')]=_0x17a56b['telephones'];ami['on']('registryentry',this[_0x8f38('0x9')]['bind'](this));ami['on'](_0x8f38('0xa'),this[_0x8f38('0x9')][_0x8f38('0xb')](this));ami['on'](_0x8f38('0xc'),this[_0x8f38('0xd')]['bind'](this));ami['on'](_0x8f38('0xe'),this['syncPeerStatus'][_0x8f38('0xb')](this));return this[_0x8f38('0xf')]();}function showSipRegistrations(){Promise[_0x8f38('0x10')]()[_0x8f38('0x11')](ami['actionSipShowRegistry']())[_0x8f38('0x12')](function(_0x4e73df){logger[_0x8f38('0x13')](_0x8f38('0x14'),util[_0x8f38('0x15')](_0x4e73df,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x8f38('0x10')]()[_0x8f38('0x11')](ami['actionDeviceStateList']())[_0x8f38('0x12')](function(_0x137d41){logger[_0x8f38('0x13')](_0x8f38('0x16'),util['inspect'](_0x137d41,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0x8f38('0x11')](ami[_0x8f38('0x17')]())['catch'](function(_0x43ab53){logger[_0x8f38('0x13')](_0x8f38('0x18'),util['inspect'](_0x43ab53,{'showHidden':![],'depth':null}));});}UserReport[_0x8f38('0x19')][_0x8f38('0xf')]=function(){setInterval(function(){BPromise['resolve']()[_0x8f38('0x11')](showSipRegistrations())[_0x8f38('0x11')](listDeviceStates())[_0x8f38('0x11')](showPeersStatus());},0x32c8);};UserReport[_0x8f38('0x19')]['isNotNull']=function(_0x7405e9){return _0x7405e9!==null&&!_[_0x8f38('0x1a')](_0x7405e9);};UserReport[_0x8f38('0x19')]['emit']=function(_0x1bbb3f,_0xb38e4f,_0x1233e3){io['to'](_0x1bbb3f)[_0x8f38('0x1b')](_0xb38e4f,_0x1233e3);};UserReport[_0x8f38('0x19')][_0x8f38('0x9')]=function(_0x5b448b){try{if(this['isNotNull'](_0x5b448b)){logger[_0x8f38('0x1c')](_0x8f38('0x1d'),_0x5b448b['username'],_0x5b448b[_0x8f38('0x1e')]);logger[_0x8f38('0x1f')](_0x8f38('0x20'),util[_0x8f38('0x15')](_0x5b448b,{'showHidden':![],'depth':null}));var _0x47fcb7=_['find'](this[_0x8f38('0x6')],{'defaultuser':_0x5b448b[_0x8f38('0x21')]});if(_0x47fcb7){_0x5b448b[_0x8f38('0x22')]=_0x5b448b['state'];_[_0x8f38('0x23')](_0x47fcb7,_['omit'](_0x5b448b,[_0x8f38('0x24'),_0x8f38('0x25'),_0x8f38('0x21'),_0x8f38('0x1e')]));logger['debug'](_0x8f38('0x26'),util[_0x8f38('0x15')](_0x47fcb7,{'showHidden':![],'depth':null}));this[_0x8f38('0x1b')](util['format']('trunk:%s',_0x47fcb7[_0x8f38('0x27')]),'trunk:save',_0x47fcb7);}}}catch(_0x218417){logger[_0x8f38('0x13')](_0x8f38('0x20'),util[_0x8f38('0x15')](_0x218417,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x8f38('0xd')]=function(_0x1baf21){try{if(this['isNotNull'](_0x1baf21)){logger['info']('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x1baf21[_0x8f38('0x28')],_0x1baf21[_0x8f38('0x1e')]);logger[_0x8f38('0x1f')]('[userReport][devicestatechange]',util['inspect'](_0x1baf21,{'showHidden':![],'depth':null}));if(this[_0x8f38('0x7')][_0x1baf21[_0x8f38('0x28')]]){if(!this[_0x8f38('0x7')][_0x1baf21['device']][_0x8f38('0x29')]||_0x1baf21[_0x8f38('0x1e')][_0x8f38('0x2a')]()==_0x8f38('0x2b')){this['agents'][_0x1baf21['device']]['local']=![];if(this[_0x8f38('0x7')][_0x1baf21['device']]['state']!==_0x1baf21[_0x8f38('0x1e')]['toLowerCase']()){this[_0x8f38('0x7')][_0x1baf21['device']][_0x8f38('0x2c')]=_[_0x8f38('0x2d')](moment()[_0x8f38('0x2e')]('x'));}this[_0x8f38('0x7')][_0x1baf21['device']][_0x8f38('0x1e')]=_0x1baf21[_0x8f38('0x1e')][_0x8f38('0x2a')]();this[_0x8f38('0x7')][_0x1baf21[_0x8f38('0x28')]][_0x8f38('0x2f')](_0x1baf21);}}else if(this[_0x8f38('0x8')][_0x1baf21['device']]){if(this[_0x8f38('0x8')][_0x1baf21[_0x8f38('0x28')]][_0x8f38('0x1e')]!==_0x1baf21['state'][_0x8f38('0x2a')]()){this[_0x8f38('0x8')][_0x1baf21[_0x8f38('0x28')]][_0x8f38('0x2c')]=_[_0x8f38('0x2d')](moment()[_0x8f38('0x2e')]('x'));}this['telephones'][_0x1baf21[_0x8f38('0x28')]][_0x8f38('0x1e')]=_0x1baf21[_0x8f38('0x1e')][_0x8f38('0x2a')]();logger[_0x8f38('0x1f')](_0x8f38('0x30'),util[_0x8f38('0x15')](this[_0x8f38('0x8')][_0x1baf21[_0x8f38('0x28')]],{'showHidden':![],'depth':null}));this[_0x8f38('0x1b')](util[_0x8f38('0x2e')]('telephone:%s',this[_0x8f38('0x8')][_0x1baf21[_0x8f38('0x28')]][_0x8f38('0x27')]),'telephone:save',this[_0x8f38('0x8')][_0x1baf21[_0x8f38('0x28')]]);}else if(this[_0x8f38('0x6')][_0x1baf21['device']]){if(this['trunks'][_0x1baf21[_0x8f38('0x28')]][_0x8f38('0x1e')]!==_0x1baf21[_0x8f38('0x1e')][_0x8f38('0x2a')]()){this['trunks'][_0x1baf21[_0x8f38('0x28')]]['stateTime']=_[_0x8f38('0x2d')](moment()[_0x8f38('0x2e')]('x'));}this[_0x8f38('0x6')][_0x1baf21[_0x8f38('0x28')]][_0x8f38('0x1e')]=_0x1baf21[_0x8f38('0x1e')][_0x8f38('0x2a')]();logger[_0x8f38('0x1f')](_0x8f38('0x31'),util[_0x8f38('0x15')](this[_0x8f38('0x6')][_0x1baf21['device']],{'showHidden':![],'depth':null}));this[_0x8f38('0x1b')](util[_0x8f38('0x2e')](_0x8f38('0x32'),this[_0x8f38('0x6')][_0x1baf21[_0x8f38('0x28')]][_0x8f38('0x27')]),_0x8f38('0x33'),this[_0x8f38('0x6')][_0x1baf21[_0x8f38('0x28')]]);}else if(_[_0x8f38('0x34')](_0x1baf21[_0x8f38('0x28')],'Local')){var _0x29c549=_0x1baf21[_0x8f38('0x28')];var _0x3f83e1=_0x29c549[_0x8f38('0x35')](_0x29c549['indexOf']('/')+0x1,_0x29c549['indexOf']('@'));var _0x3450cc=_[_0x8f38('0x36')](this[_0x8f38('0x7')],function(_0x8f03fb){return _0x8f03fb['mobile']==_0x3f83e1||_0x8f03fb[_0x8f38('0x37')]==_0x3f83e1||_0x8f03fb[_0x8f38('0x38')]==_0x3f83e1;});if(_0x3450cc){if(_0x3450cc[_0x8f38('0x1e')]!==_0x1baf21[_0x8f38('0x1e')][_0x8f38('0x2a')]()){_0x3450cc[_0x8f38('0x2c')]=_[_0x8f38('0x2d')](moment()['format']('x'));}_0x3450cc['state']=_0x1baf21[_0x8f38('0x1e')]['toLowerCase']();_0x3450cc[_0x8f38('0x29')]=!![];_0x3450cc[_0x8f38('0x2f')](_0x1baf21);}}}}catch(_0x4d53c9){logger[_0x8f38('0x13')]('[userReport][devicestatechange]',util[_0x8f38('0x15')](_0x4d53c9,{'showHidden':![],'depth':null}));}};UserReport[_0x8f38('0x19')]['syncPeerStatus']=function(_0x1d07fb){try{if(this[_0x8f38('0x39')](_0x1d07fb)&&this[_0x8f38('0x39')](_0x1d07fb['peerstatus'])){logger[_0x8f38('0x1c')](_0x8f38('0x3a'),_0x1d07fb[_0x8f38('0x3b')],_0x1d07fb['address'],_0x1d07fb['peerstatus']);logger[_0x8f38('0x1f')]('[userReport][peerstatus]',util['inspect'](_0x1d07fb,{'showHidden':![],'depth':null}));if(this[_0x8f38('0x7')][_0x1d07fb['peer']]){if(!this[_0x8f38('0x7')][_0x1d07fb[_0x8f38('0x3b')]]['local']||_0x1d07fb['peerstatus'][_0x8f38('0x2a')]()=='registered'){this[_0x8f38('0x7')][_0x1d07fb[_0x8f38('0x3b')]][_0x8f38('0x29')]=![];this[_0x8f38('0x7')][_0x1d07fb[_0x8f38('0x3b')]][_0x8f38('0x3c')]=_0x1d07fb[_0x8f38('0xe')][_0x8f38('0x2a')]();this[_0x8f38('0x7')][_0x1d07fb[_0x8f38('0x3b')]]['address']=_0x1d07fb[_0x8f38('0x3d')];this['agents'][_0x1d07fb[_0x8f38('0x3b')]]['updateStatusRealtime'](_0x1d07fb);}}else if(this[_0x8f38('0x8')][_0x1d07fb[_0x8f38('0x3b')]]){this[_0x8f38('0x8')][_0x1d07fb[_0x8f38('0x3b')]][_0x8f38('0x3c')]=_0x1d07fb['peerstatus']['toLowerCase']();this['telephones'][_0x1d07fb[_0x8f38('0x3b')]][_0x8f38('0x3d')]=_0x1d07fb[_0x8f38('0x3d')];logger[_0x8f38('0x1f')](_0x8f38('0x3e'),util[_0x8f38('0x15')](this[_0x8f38('0x8')][_0x1d07fb['peer']],{'showHidden':![],'depth':null}));this['emit'](util[_0x8f38('0x2e')](_0x8f38('0x3f'),this[_0x8f38('0x8')][_0x1d07fb[_0x8f38('0x3b')]][_0x8f38('0x27')]),'telephone:save',this[_0x8f38('0x8')][_0x1d07fb['peer']]);}else if(this[_0x8f38('0x6')][_0x1d07fb[_0x8f38('0x3b')]]){this['trunks'][_0x1d07fb[_0x8f38('0x3b')]]['status']=_0x1d07fb[_0x8f38('0xe')][_0x8f38('0x2a')]();this['trunks'][_0x1d07fb[_0x8f38('0x3b')]][_0x8f38('0x3d')]=_0x1d07fb[_0x8f38('0x3d')];logger['debug'](_0x8f38('0x40'),util[_0x8f38('0x15')](this['trunks'][_0x1d07fb[_0x8f38('0x3b')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x8f38('0x2e')](_0x8f38('0x32'),this[_0x8f38('0x6')][_0x1d07fb[_0x8f38('0x3b')]][_0x8f38('0x27')]),_0x8f38('0x33'),this[_0x8f38('0x6')][_0x1d07fb[_0x8f38('0x3b')]]);}}}catch(_0x34e6cf){logger[_0x8f38('0x13')](_0x8f38('0x41'),util[_0x8f38('0x15')](_0x34e6cf,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;
\ No newline at end of file
+var _0x9d13=['syncPeerStatus','syncRealtimeShow','resolve','then','error','[userReport][sipshowregistry]','inspect','actionDeviceStateList','actionSipPeerStatus','prototype','isUndefined','emit','isNotNull','info','username','state','debug','[userReport][registry]','find','stateRegistry','omit','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','device','local','toLowerCase','inuse','updateStatusRealtime','stateTime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:save','Local','substring','indexOf','mobile','phone','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','[userReport][peerstatus]','registered','status','address','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','moment','util','ioredis','bluebird','../../../config/logger','ami','../ami','redis','defaults','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','peerstatus'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0x9d13,0x1eb));var _0x39d1=function(_0x3ad20a,_0x2830c9){_0x3ad20a=_0x3ad20a-0x0;var _0x4d5d60=_0x9d13[_0x3ad20a];return _0x4d5d60;};'use strict';var _=require('lodash');var moment=require(_0x39d1('0x0'));var util=require(_0x39d1('0x1'));var Redis=require(_0x39d1('0x2'));var BPromise=require(_0x39d1('0x3'));var config=require('../../../config/environment');var logger=require(_0x39d1('0x4'))(_0x39d1('0x5'));var ami=require(_0x39d1('0x6'));config[_0x39d1('0x7')]=_[_0x39d1('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x39d1('0x9'))(new Redis(config[_0x39d1('0x7')]));function UserReport(_0x5dd7ad){this['trunks']=_0x5dd7ad[_0x39d1('0xa')];this[_0x39d1('0xb')]=_0x5dd7ad[_0x39d1('0xb')];this[_0x39d1('0xc')]=_0x5dd7ad[_0x39d1('0xc')];ami['on'](_0x39d1('0xd'),this[_0x39d1('0xe')][_0x39d1('0xf')](this));ami['on'](_0x39d1('0x10'),this[_0x39d1('0xe')][_0x39d1('0xf')](this));ami['on'](_0x39d1('0x11'),this[_0x39d1('0x12')]['bind'](this));ami['on'](_0x39d1('0x13'),this[_0x39d1('0x14')][_0x39d1('0xf')](this));return this[_0x39d1('0x15')]();}function showSipRegistrations(){Promise[_0x39d1('0x16')]()[_0x39d1('0x17')](ami['actionSipShowRegistry']())['catch'](function(_0x44fdea){logger[_0x39d1('0x18')](_0x39d1('0x19'),util[_0x39d1('0x1a')](_0x44fdea,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x39d1('0x16')]()['then'](ami[_0x39d1('0x1b')]())['catch'](function(_0x1f6c58){logger[_0x39d1('0x18')]('[userReport][devicestatelist]',util[_0x39d1('0x1a')](_0x1f6c58,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x39d1('0x16')]()[_0x39d1('0x17')](ami[_0x39d1('0x1c')]())['catch'](function(_0x289cfa){logger[_0x39d1('0x18')]('[userReport][sippeerstatus]',util[_0x39d1('0x1a')](_0x289cfa,{'showHidden':![],'depth':null}));});}UserReport[_0x39d1('0x1d')][_0x39d1('0x15')]=function(){setInterval(function(){BPromise['resolve']()[_0x39d1('0x17')](showSipRegistrations())[_0x39d1('0x17')](listDeviceStates())[_0x39d1('0x17')](showPeersStatus());},0x32c8);};UserReport['prototype']['isNotNull']=function(_0x7dde9f){return _0x7dde9f!==null&&!_[_0x39d1('0x1e')](_0x7dde9f);};UserReport[_0x39d1('0x1d')][_0x39d1('0x1f')]=function(_0x1218ad,_0x124f08,_0x50eff0){io['to'](_0x1218ad)[_0x39d1('0x1f')](_0x124f08,_0x50eff0);};UserReport[_0x39d1('0x1d')]['syncRegistry']=function(_0x1e00fe){try{if(this[_0x39d1('0x20')](_0x1e00fe)){logger[_0x39d1('0x21')]('[userReport][registry]\x20registry:%s\x20state:%s',_0x1e00fe[_0x39d1('0x22')],_0x1e00fe[_0x39d1('0x23')]);logger[_0x39d1('0x24')](_0x39d1('0x25'),util[_0x39d1('0x1a')](_0x1e00fe,{'showHidden':![],'depth':null}));var _0x659a5c=_[_0x39d1('0x26')](this[_0x39d1('0xa')],{'defaultuser':_0x1e00fe[_0x39d1('0x22')]});if(_0x659a5c){_0x1e00fe[_0x39d1('0x27')]=_0x1e00fe[_0x39d1('0x23')];_['merge'](_0x659a5c,_[_0x39d1('0x28')](_0x1e00fe,['event',_0x39d1('0x29'),_0x39d1('0x22'),_0x39d1('0x23')]));logger[_0x39d1('0x24')](_0x39d1('0x2a'),util['inspect'](_0x659a5c,{'showHidden':![],'depth':null}));this[_0x39d1('0x1f')](util[_0x39d1('0x2b')](_0x39d1('0x2c'),_0x659a5c[_0x39d1('0x2d')]),'trunk:save',_0x659a5c);}}}catch(_0x5b4fee){logger[_0x39d1('0x18')]('[userReport][registry]',util[_0x39d1('0x1a')](_0x5b4fee,{'showHidden':![],'depth':null}));}};UserReport[_0x39d1('0x1d')][_0x39d1('0x12')]=function(_0x3f0899){try{if(this[_0x39d1('0x20')](_0x3f0899)){logger[_0x39d1('0x21')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x3f0899[_0x39d1('0x2e')],_0x3f0899[_0x39d1('0x23')]);logger[_0x39d1('0x24')]('[userReport][devicestatechange]',util['inspect'](_0x3f0899,{'showHidden':![],'depth':null}));if(this[_0x39d1('0xb')][_0x3f0899[_0x39d1('0x2e')]]){if(!this['agents'][_0x3f0899[_0x39d1('0x2e')]][_0x39d1('0x2f')]||_0x3f0899[_0x39d1('0x23')][_0x39d1('0x30')]()==_0x39d1('0x31')){this[_0x39d1('0xb')][_0x3f0899[_0x39d1('0x2e')]]['local']=![];if(this[_0x39d1('0xb')][_0x3f0899[_0x39d1('0x2e')]][_0x39d1('0x23')]!==_0x3f0899[_0x39d1('0x23')][_0x39d1('0x30')]()){this[_0x39d1('0xb')][_0x3f0899['device']]['stateTime']=_['toNumber'](moment()['format']('x'));}this[_0x39d1('0xb')][_0x3f0899['device']][_0x39d1('0x23')]=_0x3f0899[_0x39d1('0x23')][_0x39d1('0x30')]();this[_0x39d1('0xb')][_0x3f0899[_0x39d1('0x2e')]][_0x39d1('0x32')](_0x3f0899);}}else if(this[_0x39d1('0xc')][_0x3f0899[_0x39d1('0x2e')]]){if(this[_0x39d1('0xc')][_0x3f0899[_0x39d1('0x2e')]][_0x39d1('0x23')]!==_0x3f0899['state']['toLowerCase']()){this[_0x39d1('0xc')][_0x3f0899[_0x39d1('0x2e')]][_0x39d1('0x33')]=_[_0x39d1('0x34')](moment()['format']('x'));}this[_0x39d1('0xc')][_0x3f0899[_0x39d1('0x2e')]][_0x39d1('0x23')]=_0x3f0899[_0x39d1('0x23')][_0x39d1('0x30')]();logger[_0x39d1('0x24')](_0x39d1('0x35'),util[_0x39d1('0x1a')](this['telephones'][_0x3f0899[_0x39d1('0x2e')]],{'showHidden':![],'depth':null}));this[_0x39d1('0x1f')](util['format'](_0x39d1('0x36'),this[_0x39d1('0xc')][_0x3f0899[_0x39d1('0x2e')]][_0x39d1('0x2d')]),_0x39d1('0x37'),this['telephones'][_0x3f0899[_0x39d1('0x2e')]]);}else if(this[_0x39d1('0xa')][_0x3f0899[_0x39d1('0x2e')]]){if(this[_0x39d1('0xa')][_0x3f0899[_0x39d1('0x2e')]][_0x39d1('0x23')]!==_0x3f0899[_0x39d1('0x23')][_0x39d1('0x30')]()){this[_0x39d1('0xa')][_0x3f0899['device']][_0x39d1('0x33')]=_[_0x39d1('0x34')](moment()[_0x39d1('0x2b')]('x'));}this[_0x39d1('0xa')][_0x3f0899[_0x39d1('0x2e')]][_0x39d1('0x23')]=_0x3f0899[_0x39d1('0x23')]['toLowerCase']();logger[_0x39d1('0x24')](_0x39d1('0x38'),util['inspect'](this['trunks'][_0x3f0899[_0x39d1('0x2e')]],{'showHidden':![],'depth':null}));this[_0x39d1('0x1f')](util[_0x39d1('0x2b')](_0x39d1('0x2c'),this[_0x39d1('0xa')][_0x3f0899[_0x39d1('0x2e')]]['name']),_0x39d1('0x39'),this['trunks'][_0x3f0899[_0x39d1('0x2e')]]);}else if(_['startsWith'](_0x3f0899[_0x39d1('0x2e')],_0x39d1('0x3a'))){var _0x204f7f=_0x3f0899[_0x39d1('0x2e')];var _0x2e6cb7=_0x204f7f[_0x39d1('0x3b')](_0x204f7f[_0x39d1('0x3c')]('/')+0x1,_0x204f7f[_0x39d1('0x3c')]('@'));var _0x58893d=_['find'](this[_0x39d1('0xb')],function(_0x39c95c){return _0x39c95c[_0x39d1('0x3d')]==_0x2e6cb7||_0x39c95c[_0x39d1('0x3e')]==_0x2e6cb7||_0x39c95c[_0x39d1('0x3f')]==_0x2e6cb7;});if(_0x58893d){if(_0x58893d[_0x39d1('0x23')]!==_0x3f0899[_0x39d1('0x23')][_0x39d1('0x30')]()){_0x58893d[_0x39d1('0x33')]=_[_0x39d1('0x34')](moment()['format']('x'));}_0x58893d[_0x39d1('0x23')]=_0x3f0899[_0x39d1('0x23')][_0x39d1('0x30')]();_0x58893d[_0x39d1('0x2f')]=!![];_0x58893d[_0x39d1('0x32')](_0x3f0899);}}}}catch(_0x48f298){logger[_0x39d1('0x18')]('[userReport][devicestatechange]',util['inspect'](_0x48f298,{'showHidden':![],'depth':null}));}};UserReport[_0x39d1('0x1d')][_0x39d1('0x14')]=function(_0x57f498){try{if(this[_0x39d1('0x20')](_0x57f498)&&this[_0x39d1('0x20')](_0x57f498['peerstatus'])){logger[_0x39d1('0x21')](_0x39d1('0x40'),_0x57f498[_0x39d1('0x41')],_0x57f498['address'],_0x57f498['peerstatus']);logger[_0x39d1('0x24')](_0x39d1('0x42'),util[_0x39d1('0x1a')](_0x57f498,{'showHidden':![],'depth':null}));if(this[_0x39d1('0xb')][_0x57f498[_0x39d1('0x41')]]){if(!this[_0x39d1('0xb')][_0x57f498[_0x39d1('0x41')]]['local']||_0x57f498[_0x39d1('0x13')][_0x39d1('0x30')]()==_0x39d1('0x43')){this[_0x39d1('0xb')][_0x57f498[_0x39d1('0x41')]][_0x39d1('0x2f')]=![];this[_0x39d1('0xb')][_0x57f498[_0x39d1('0x41')]][_0x39d1('0x44')]=_0x57f498[_0x39d1('0x13')][_0x39d1('0x30')]();this[_0x39d1('0xb')][_0x57f498['peer']]['address']=_0x57f498['address'];this[_0x39d1('0xb')][_0x57f498[_0x39d1('0x41')]][_0x39d1('0x32')](_0x57f498);}}else if(this['telephones'][_0x57f498[_0x39d1('0x41')]]){this[_0x39d1('0xc')][_0x57f498['peer']][_0x39d1('0x44')]=_0x57f498['peerstatus'][_0x39d1('0x30')]();this['telephones'][_0x57f498[_0x39d1('0x41')]][_0x39d1('0x45')]=_0x57f498[_0x39d1('0x45')];logger[_0x39d1('0x24')](_0x39d1('0x46'),util[_0x39d1('0x1a')](this['telephones'][_0x57f498[_0x39d1('0x41')]],{'showHidden':![],'depth':null}));this[_0x39d1('0x1f')](util[_0x39d1('0x2b')](_0x39d1('0x36'),this[_0x39d1('0xc')][_0x57f498[_0x39d1('0x41')]][_0x39d1('0x2d')]),'telephone:save',this[_0x39d1('0xc')][_0x57f498[_0x39d1('0x41')]]);}else if(this[_0x39d1('0xa')][_0x57f498[_0x39d1('0x41')]]){this[_0x39d1('0xa')][_0x57f498[_0x39d1('0x41')]][_0x39d1('0x44')]=_0x57f498['peerstatus'][_0x39d1('0x30')]();this[_0x39d1('0xa')][_0x57f498[_0x39d1('0x41')]][_0x39d1('0x45')]=_0x57f498[_0x39d1('0x45')];logger[_0x39d1('0x24')](_0x39d1('0x47'),util[_0x39d1('0x1a')](this['trunks'][_0x57f498[_0x39d1('0x41')]],{'showHidden':![],'depth':null}));this[_0x39d1('0x1f')](util[_0x39d1('0x2b')]('trunk:%s',this['trunks'][_0x57f498[_0x39d1('0x41')]][_0x39d1('0x2d')]),_0x39d1('0x39'),this[_0x39d1('0xa')][_0x57f498[_0x39d1('0x41')]]);}}}catch(_0xa05750){logger[_0x39d1('0x18')]('[userReport][peerstatus]',util['inspect'](_0xa05750,{'showHidden':![],'depth':null}));}};module[_0x39d1('0x48')]=UserReport;
\ No newline at end of file
index 42b1327..0579ec6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb245=['omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','format','user:%s','user:called','error','[%s][voiceAgentReport][agentcalled]','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','voiceChannels','routealias','interface','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','reason','answered_elsewhere','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','custom:agentringnoanswer','[%s][voiceAgentReport][queuecallerabandon]\x20event:','abandoned','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','transfer','talktime','acwTimeout','agentacw','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','[%s][voiceAgentReport][varset]\x20event:','addVariable','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepvtcallid','membercalls','memberinterface','memberlastcall','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','custom:voiceAgentReport','syncAttendedTransfer','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]','exports','lodash','moment','util','../../../config/environment','../../../config/logger','redis','defaults','socket.io-emitter','channels','voiceQueues','agents','syncAgentCalled','bind','agentconnect','syncAgentConnect','agentringnoanswer','syncAgentRingNoAnswer','syncQueueCallerAbandon','agentcomplete','varset','syncVarSet','hangup','syncHangup','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','blindtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','uniqueid','membername','destuniqueid','debug','inspect','YYYY-MM-DD\x20HH:mm:ss','queue','type','inbound','variables','voice','merge'];(function(_0x2bc961,_0x52e9d4){var _0x287cea=function(_0x74cb7e){while(--_0x74cb7e){_0x2bc961['push'](_0x2bc961['shift']());}};_0x287cea(++_0x52e9d4);}(_0xb245,0xf8));var _0x5b24=function(_0x2e573b,_0x585d2d){_0x2e573b=_0x2e573b-0x0;var _0x177541=_0xb245[_0x2e573b];return _0x177541;};'use strict';var _=require(_0x5b24('0x0'));var moment=require(_0x5b24('0x1'));var util=require(_0x5b24('0x2'));var Redis=require('ioredis');var config=require(_0x5b24('0x3'));var logger=require(_0x5b24('0x4'))('ami');var ami=require('../ami');config[_0x5b24('0x5')]=_[_0x5b24('0x6')](config[_0x5b24('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x5b24('0x7'))(new Redis(config[_0x5b24('0x5')]));function VoiceAgentReport(_0x535832){this[_0x5b24('0x8')]={};this['voiceChannels']=_0x535832['channels'];this[_0x5b24('0x9')]=_0x535832[_0x5b24('0x9')];this['agents']=_0x535832[_0x5b24('0xa')];this['variables']={};ami['on']('agentcalled',this[_0x5b24('0xb')][_0x5b24('0xc')](this));ami['on'](_0x5b24('0xd'),this[_0x5b24('0xe')][_0x5b24('0xc')](this));ami['on'](_0x5b24('0xf'),this[_0x5b24('0x10')][_0x5b24('0xc')](this));ami['on']('queuecallerabandon',this[_0x5b24('0x11')][_0x5b24('0xc')](this));ami['on'](_0x5b24('0x12'),this['syncAgentComplete'][_0x5b24('0xc')](this));ami['on'](_0x5b24('0x13'),this[_0x5b24('0x14')][_0x5b24('0xc')](this));ami['on'](_0x5b24('0x15'),this[_0x5b24('0x16')][_0x5b24('0xc')](this));ami['on'](_0x5b24('0x17'),this[_0x5b24('0x18')]['bind'](this));ami['on'](_0x5b24('0x19'),this[_0x5b24('0x1a')][_0x5b24('0xc')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0x5b24('0xc')](this));ami['on'](_0x5b24('0x1b'),this[_0x5b24('0x1c')]['bind'](this));}VoiceAgentReport[_0x5b24('0x1d')][_0x5b24('0x1e')]=function(_0x481f50,_0x5c45c0,_0x4523ee){io['to'](_0x481f50)[_0x5b24('0x1e')](_0x5c45c0,_0x4523ee);};VoiceAgentReport['prototype'][_0x5b24('0x1f')]=function(_0x4f50e9){return _0x4f50e9!==null&&!_[_0x5b24('0x20')](_0x4f50e9);};VoiceAgentReport[_0x5b24('0x1d')][_0x5b24('0xb')]=function(_0x332aa0){try{if(this[_0x5b24('0x1f')](_0x332aa0)){logger[_0x5b24('0x21')]('[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x332aa0[_0x5b24('0x22')],_0x332aa0[_0x5b24('0x23')],_0x332aa0[_0x5b24('0x24')]);logger[_0x5b24('0x25')]('[%s][voiceAgentReport][agentcalled]\x20event:',_0x332aa0['uniqueid'],util[_0x5b24('0x26')](_0x332aa0,{'showHidden':![],'depth':null}));if(_[_0x5b24('0x20')](this[_0x5b24('0x8')][_0x332aa0[_0x5b24('0x22')]])){this[_0x5b24('0x8')][_0x332aa0[_0x5b24('0x22')]]={};}if(_[_0x5b24('0x20')](this[_0x5b24('0x8')][_0x332aa0[_0x5b24('0x22')]][_0x332aa0[_0x5b24('0x24')]])){this['channels'][_0x332aa0[_0x5b24('0x22')]][_0x332aa0[_0x5b24('0x24')]]={'agentcalledAt':moment()['format'](_0x5b24('0x27')),'lastevent':'called','mandatoryDisposition':this['voiceQueues'][_0x332aa0['queue']]?this[_0x5b24('0x9')][_0x332aa0[_0x5b24('0x28')]]['mandatoryDisposition']||![]:![],'type':this['voiceQueues'][_0x332aa0[_0x5b24('0x28')]]?this[_0x5b24('0x9')][_0x332aa0[_0x5b24('0x28')]][_0x5b24('0x29')]||_0x5b24('0x2a'):_0x5b24('0x2a'),'variables':this[_0x5b24('0x2b')][_0x332aa0[_0x5b24('0x22')]],'motionChannel':_0x5b24('0x2c')};}_[_0x5b24('0x2d')](this[_0x5b24('0x8')][_0x332aa0[_0x5b24('0x22')]][_0x332aa0[_0x5b24('0x24')]],_[_0x5b24('0x2e')](_0x332aa0,[_0x5b24('0x2f'),_0x5b24('0x30')]));logger[_0x5b24('0x25')](_0x5b24('0x31'),_0x332aa0[_0x5b24('0x22')],util[_0x5b24('0x26')](this[_0x5b24('0x8')][_0x332aa0['uniqueid']][_0x332aa0[_0x5b24('0x24')]],{'showHidden':![],'depth':null}));ami[_0x5b24('0x1e')](_0x5b24('0x32'),this[_0x5b24('0x8')][_0x332aa0['uniqueid']][_0x332aa0[_0x5b24('0x24')]]);logger[_0x5b24('0x25')](_0x5b24('0x33'),_0x332aa0[_0x5b24('0x22')],util[_0x5b24('0x26')](this[_0x5b24('0x8')][_0x332aa0[_0x5b24('0x22')]][_0x332aa0['destuniqueid']],{'showHidden':![],'depth':null}));this[_0x5b24('0x1e')](util[_0x5b24('0x34')](_0x5b24('0x35'),_0x332aa0[_0x5b24('0x23')]),_0x5b24('0x36'),this['channels'][_0x332aa0[_0x5b24('0x22')]][_0x332aa0[_0x5b24('0x24')]]);}}catch(_0x48a052){logger[_0x5b24('0x37')](_0x5b24('0x38'),_0x332aa0[_0x5b24('0x22')],util[_0x5b24('0x26')](_0x48a052,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x5b24('0x1d')][_0x5b24('0xe')]=function(_0x4de436){try{if(this[_0x5b24('0x1f')](_0x4de436)){if(this[_0x5b24('0x8')][_0x4de436['uniqueid']]){logger[_0x5b24('0x25')]('[%s][voiceAgentReport][agentconnect]\x20event:',_0x4de436[_0x5b24('0x22')],util[_0x5b24('0x26')](_0x4de436,{'showHidden':![],'depth':null}));for(var _0x4e4bf1 in this[_0x5b24('0x8')][_0x4de436[_0x5b24('0x22')]]){if(this[_0x5b24('0x8')][_0x4de436[_0x5b24('0x22')]][_0x5b24('0x39')](_0x4e4bf1)){if(_0x4de436[_0x5b24('0x24')]===_0x4e4bf1){logger[_0x5b24('0x21')](_0x5b24('0x3a'),_0x4de436[_0x5b24('0x22')],_0x4de436[_0x5b24('0x23')],_0x4de436['destuniqueid']);this[_0x5b24('0x8')][_0x4de436[_0x5b24('0x22')]][_0x4e4bf1][_0x5b24('0x3b')]=moment()['format'](_0x5b24('0x27'));this[_0x5b24('0x8')][_0x4de436[_0x5b24('0x22')]][_0x4e4bf1][_0x5b24('0x3c')]=_0x4de436[_0x5b24('0x3c')];this[_0x5b24('0x8')][_0x4de436[_0x5b24('0x22')]][_0x4e4bf1][_0x5b24('0x3d')]=_0x4de436[_0x5b24('0x3d')];this[_0x5b24('0x8')][_0x4de436[_0x5b24('0x22')]][_0x4e4bf1][_0x5b24('0x3e')]=_0x4de436['destchannelstate'];this['channels'][_0x4de436[_0x5b24('0x22')]][_0x4e4bf1][_0x5b24('0x3f')]=_0x4de436[_0x5b24('0x3f')];this[_0x5b24('0x8')][_0x4de436[_0x5b24('0x22')]][_0x4e4bf1][_0x5b24('0x40')]=_0x4de436[_0x5b24('0x40')];this[_0x5b24('0x8')][_0x4de436[_0x5b24('0x22')]][_0x4e4bf1][_0x5b24('0x41')]=_0x5b24('0x42');if(this[_0x5b24('0x43')][this['channels'][_0x4de436[_0x5b24('0x22')]][_0x4e4bf1][_0x5b24('0x22')]]){var _0x100288=this[_0x5b24('0x43')][this['channels'][_0x4de436[_0x5b24('0x22')]][_0x4e4bf1][_0x5b24('0x22')]]['routealias'];this[_0x5b24('0x8')][_0x4de436['uniqueid']][_0x4e4bf1][_0x5b24('0x44')]=_0x100288;_0x4de436[_0x5b24('0x44')]=_0x100288;}_[_0x5b24('0x2d')](this[_0x5b24('0xa')][_0x4de436[_0x5b24('0x45')]],_['pick'](_0x4de436,[_0x5b24('0x28'),_0x5b24('0x46'),_0x5b24('0x44')]));logger[_0x5b24('0x25')](_0x5b24('0x47'),_0x4de436[_0x5b24('0x22')],util[_0x5b24('0x26')](this[_0x5b24('0x8')][_0x4de436['uniqueid']][_0x4de436[_0x5b24('0x24')]],{'showHidden':![],'depth':null}));ami[_0x5b24('0x1e')](_0x5b24('0x48'),this[_0x5b24('0x8')][_0x4de436[_0x5b24('0x22')]][_0x4de436[_0x5b24('0x24')]]);logger[_0x5b24('0x25')](_0x5b24('0x49'),_0x4de436[_0x5b24('0x22')],util[_0x5b24('0x26')](this[_0x5b24('0x8')][_0x4de436['uniqueid']][_0x4de436['destuniqueid']],{'showHidden':![],'depth':null}));this[_0x5b24('0x1e')](util[_0x5b24('0x34')]('user:%s',_0x4de436[_0x5b24('0x23')]),'user:agentconnect',this['channels'][_0x4de436[_0x5b24('0x22')]][_0x4de436[_0x5b24('0x24')]]);}else if(!this['channels'][_0x4de436[_0x5b24('0x22')]][_0x4e4bf1]['agentringnoanswer']&&!this[_0x5b24('0x8')][_0x4de436['uniqueid']][_0x4e4bf1]['agentcomplete']){logger[_0x5b24('0x21')](_0x5b24('0x4a'),_0x4de436[_0x5b24('0x22')],this[_0x5b24('0x8')][_0x4de436[_0x5b24('0x22')]][_0x4e4bf1][_0x5b24('0x23')],_0x4e4bf1);this['channels'][_0x4de436[_0x5b24('0x22')]][_0x4e4bf1][_0x5b24('0xf')]=!![];this[_0x5b24('0x8')][_0x4de436[_0x5b24('0x22')]][_0x4e4bf1][_0x5b24('0x4b')]=moment()[_0x5b24('0x34')](_0x5b24('0x27'));this[_0x5b24('0x8')][_0x4de436['uniqueid']][_0x4e4bf1][_0x5b24('0x4c')]=_0x4de436[_0x5b24('0x24')];this['channels'][_0x4de436['uniqueid']][_0x4e4bf1]['answeredelsewheremembername']=_0x4de436[_0x5b24('0x23')];this[_0x5b24('0x8')][_0x4de436[_0x5b24('0x22')]][_0x4e4bf1][_0x5b24('0x41')]='answered_elsewhere';this[_0x5b24('0x8')][_0x4de436[_0x5b24('0x22')]][_0x4e4bf1][_0x5b24('0x4d')]=_0x5b24('0x4e');logger['debug'](_0x5b24('0x4f'),_0x4de436['uniqueid'],util[_0x5b24('0x26')](this[_0x5b24('0x8')][_0x4de436['uniqueid']][_0x4e4bf1],{'showHidden':![],'depth':null}));ami[_0x5b24('0x1e')](_0x5b24('0x50'),this[_0x5b24('0x8')][_0x4de436['uniqueid']][_0x4e4bf1]);}}}}}}catch(_0x42441c){logger[_0x5b24('0x37')]('[%s][voiceAgentReport][agentconnect]',_0x4de436[_0x5b24('0x22')],util[_0x5b24('0x26')](_0x42441c,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x5b24('0x1d')]['syncAgentRingNoAnswer']=function(_0xd70fd0){try{if(this[_0x5b24('0x1f')](_0xd70fd0)){logger[_0x5b24('0x25')]('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0xd70fd0[_0x5b24('0x22')],util[_0x5b24('0x26')](_0xd70fd0,{'showHidden':![],'depth':null}));if(this[_0x5b24('0x8')][_0xd70fd0[_0x5b24('0x22')]]&&this[_0x5b24('0x8')][_0xd70fd0[_0x5b24('0x22')]][_0xd70fd0[_0x5b24('0x24')]]){logger[_0x5b24('0x21')](_0x5b24('0x51'),_0xd70fd0[_0x5b24('0x22')],_0xd70fd0[_0x5b24('0x23')],_0xd70fd0[_0x5b24('0x24')]);this[_0x5b24('0x8')][_0xd70fd0[_0x5b24('0x22')]][_0xd70fd0[_0x5b24('0x24')]][_0x5b24('0xf')]=!![];this['channels'][_0xd70fd0[_0x5b24('0x22')]][_0xd70fd0[_0x5b24('0x24')]][_0x5b24('0x4b')]=moment()[_0x5b24('0x34')](_0x5b24('0x27'));this[_0x5b24('0x8')][_0xd70fd0[_0x5b24('0x22')]][_0xd70fd0[_0x5b24('0x24')]][_0x5b24('0x41')]=_0x5b24('0x52');this['channels'][_0xd70fd0[_0x5b24('0x22')]][_0xd70fd0[_0x5b24('0x24')]][_0x5b24('0x4d')]=_0x5b24('0x52');logger[_0x5b24('0x25')](_0x5b24('0x53'),_0xd70fd0['uniqueid'],util['inspect'](this[_0x5b24('0x8')][_0xd70fd0[_0x5b24('0x22')]][_0xd70fd0[_0x5b24('0x24')]],{'showHidden':![],'depth':null}));ami['emit'](_0x5b24('0x54'),this[_0x5b24('0x8')][_0xd70fd0[_0x5b24('0x22')]][_0xd70fd0[_0x5b24('0x24')]]);}}}catch(_0x509999){logger[_0x5b24('0x37')]('[%s][voiceAgentReport][agentringnoanswer]',_0xd70fd0['uniqueid'],util[_0x5b24('0x26')](_0x509999,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x5b24('0x1d')][_0x5b24('0x11')]=function(_0x23bdbb){try{if(this[_0x5b24('0x1f')](_0x23bdbb)){logger['debug'](_0x5b24('0x55'),_0x23bdbb[_0x5b24('0x22')],util[_0x5b24('0x26')](_0x23bdbb,{'showHidden':![],'depth':null}));if(this['channels'][_0x23bdbb['uniqueid']]){for(var _0x5385c7 in this[_0x5b24('0x8')][_0x23bdbb[_0x5b24('0x22')]]){if(this[_0x5b24('0x8')][_0x23bdbb[_0x5b24('0x22')]][_0x5b24('0x39')](_0x5385c7)&&!this[_0x5b24('0x8')][_0x23bdbb[_0x5b24('0x22')]][_0x5385c7]['agentringnoanswer']&&!this[_0x5b24('0x8')][_0x23bdbb['uniqueid']][_0x5385c7]['agentcomplete']){logger['info']('[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x23bdbb[_0x5b24('0x22')],this[_0x5b24('0x8')][_0x23bdbb[_0x5b24('0x22')]][_0x5385c7][_0x5b24('0x23')],_0x5385c7);this[_0x5b24('0x8')][_0x23bdbb[_0x5b24('0x22')]][_0x5385c7][_0x5b24('0xf')]=!![];this['channels'][_0x23bdbb[_0x5b24('0x22')]][_0x5385c7][_0x5b24('0x4b')]=moment()[_0x5b24('0x34')](_0x5b24('0x27'));this['channels'][_0x23bdbb['uniqueid']][_0x5385c7][_0x5b24('0x41')]=_0x5b24('0x56');this[_0x5b24('0x8')][_0x23bdbb[_0x5b24('0x22')]][_0x5385c7]['reason']=_0x5b24('0x56');logger['debug']('[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:',_0x23bdbb[_0x5b24('0x22')],util[_0x5b24('0x26')](this[_0x5b24('0x8')][_0x23bdbb['uniqueid']][_0x5385c7],{'showHidden':![],'depth':null}));ami[_0x5b24('0x1e')](_0x5b24('0x57'),this[_0x5b24('0x8')][_0x23bdbb[_0x5b24('0x22')]][_0x5385c7]);}}}}}catch(_0x1dd844){logger[_0x5b24('0x37')](_0x5b24('0x58'),_0x23bdbb[_0x5b24('0x22')],util[_0x5b24('0x26')](_0x1dd844,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x5b24('0x1d')]['syncAgentComplete']=function(_0x1a5a71){try{if(this[_0x5b24('0x1f')](_0x1a5a71)){logger['debug'](_0x5b24('0x59'),_0x1a5a71['uniqueid'],util['inspect'](_0x1a5a71,{'showHidden':![],'depth':null}));if(this[_0x5b24('0x8')][_0x1a5a71[_0x5b24('0x22')]]){for(var _0x498181 in this[_0x5b24('0x8')][_0x1a5a71['uniqueid']]){if(this[_0x5b24('0x8')][_0x1a5a71[_0x5b24('0x22')]][_0x5b24('0x39')](_0x498181)){if(this[_0x5b24('0x8')][_0x1a5a71[_0x5b24('0x22')]][_0x498181][_0x5b24('0x3b')]&&!this['channels'][_0x1a5a71[_0x5b24('0x22')]][_0x498181][_0x5b24('0x12')]){logger[_0x5b24('0x21')](_0x5b24('0x5a'),_0x1a5a71[_0x5b24('0x22')],this[_0x5b24('0x8')][_0x1a5a71[_0x5b24('0x22')]][_0x498181][_0x5b24('0x23')],_0x498181);this[_0x5b24('0x8')][_0x1a5a71[_0x5b24('0x22')]][_0x498181][_0x5b24('0x12')]=!![];this[_0x5b24('0x8')][_0x1a5a71[_0x5b24('0x22')]][_0x498181][_0x5b24('0x5b')]=moment()['format'](_0x5b24('0x27'));this[_0x5b24('0x8')][_0x1a5a71[_0x5b24('0x22')]][_0x498181][_0x5b24('0x41')]=_0x5b24('0x5c');this[_0x5b24('0x8')][_0x1a5a71[_0x5b24('0x22')]][_0x498181]['reason']=_0x1a5a71['reason']==_0x5b24('0x5d')?'agent':_0x1a5a71[_0x5b24('0x4d')];this['channels'][_0x1a5a71[_0x5b24('0x22')]][_0x498181][_0x5b24('0x5e')]=_0x1a5a71['talktime'];if(this['voiceQueues'][_0x1a5a71[_0x5b24('0x28')]]&&this[_0x5b24('0x9')][_0x1a5a71['queue']]['acw']){this[_0x5b24('0x8')][_0x1a5a71[_0x5b24('0x22')]][_0x498181]['acwtime']=this['voiceQueues'][_0x1a5a71[_0x5b24('0x28')]][_0x5b24('0x5f')];this[_0x5b24('0x8')][_0x1a5a71[_0x5b24('0x22')]][_0x498181][_0x5b24('0x60')]=!![];}this[_0x5b24('0xa')][_0x1a5a71[_0x5b24('0x45')]]=_[_0x5b24('0x2e')](this[_0x5b24('0xa')][_0x1a5a71['interface']],[_0x5b24('0x28'),'destconnectedlinenum']);logger['debug'](_0x5b24('0x61'),_0x1a5a71[_0x5b24('0x22')],util[_0x5b24('0x26')](this['channels'][_0x1a5a71[_0x5b24('0x22')]][_0x498181],{'showHidden':![],'depth':null}));ami['emit']('custom:agentcomplete',this['channels'][_0x1a5a71[_0x5b24('0x22')]][_0x498181]);logger['debug'](_0x5b24('0x62'),_0x1a5a71[_0x5b24('0x22')],util['inspect'](this[_0x5b24('0x8')][_0x1a5a71[_0x5b24('0x22')]][_0x498181],{'showHidden':![],'depth':null}));this[_0x5b24('0x1e')](util['format'](_0x5b24('0x35'),_0x1a5a71['membername']),_0x5b24('0x63'),this[_0x5b24('0x8')][_0x1a5a71[_0x5b24('0x22')]][_0x498181]);}}}}}}catch(_0x5c81a2){logger[_0x5b24('0x37')]('[%s][voiceAgentReport][agentcomplete]',_0x1a5a71[_0x5b24('0x22')],util[_0x5b24('0x26')](_0x5c81a2,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x5b24('0x14')]=function(_0x586444){try{if(this[_0x5b24('0x1f')](_0x586444)){logger['debug'](_0x5b24('0x64'),_0x586444[_0x5b24('0x22')],util[_0x5b24('0x26')](_0x586444,{'showHidden':![],'depth':null}));this[_0x5b24('0x65')](_0x586444['uniqueid'],_['keys'](_0x586444[_0x5b24('0x66')])[0x0],_0x586444[_0x5b24('0x67')]);if(this['channels'][_0x586444[_0x5b24('0x22')]]){for(var _0x2b810c in this[_0x5b24('0x8')][_0x586444[_0x5b24('0x22')]]){if(this[_0x5b24('0x8')][_0x586444[_0x5b24('0x22')]]['hasOwnProperty'](_0x2b810c)){logger[_0x5b24('0x21')](_0x5b24('0x68'),_0x586444['uniqueid'],_0x2b810c,_['keys'](_0x586444[_0x5b24('0x66')])[0x0],_0x586444[_0x5b24('0x67')]);if(_[_0x5b24('0x20')](this[_0x5b24('0x8')][_0x586444[_0x5b24('0x22')]][_0x2b810c][_0x5b24('0x2b')])){this[_0x5b24('0x8')][_0x586444[_0x5b24('0x22')]][_0x2b810c][_0x5b24('0x2b')]={};}this[_0x5b24('0x8')][_0x586444[_0x5b24('0x22')]][_0x2b810c][_0x5b24('0x2b')]=this[_0x5b24('0x2b')][_0x586444[_0x5b24('0x22')]];}}}}}catch(_0x315786){logger[_0x5b24('0x37')](_0x5b24('0x69'),_0x586444['uniqueid'],util[_0x5b24('0x26')](_0x315786,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x5b24('0x65')]=function(_0x22ee4b,_0x24d3df,_0x416860){var _0x12f0b9=[_0x5b24('0x6a'),_0x5b24('0x6b'),_0x5b24('0x6c'),_0x5b24('0x6d'),_0x5b24('0x6e'),_0x5b24('0x6f'),_0x5b24('0x70'),_0x5b24('0x71'),_0x5b24('0x72'),_0x5b24('0x73'),'bridgepeer',_0x5b24('0x74'),_0x5b24('0x75'),'memberdynamic',_0x5b24('0x76'),_0x5b24('0x77'),_0x5b24('0x23'),'memberpenalty',_0x5b24('0x78')];if(!_[_0x5b24('0x79')](_0x24d3df)&&!_[_0x5b24('0x7a')](_0x12f0b9,_0x24d3df)){if(_[_0x5b24('0x20')](this[_0x5b24('0x2b')][_0x22ee4b])){this['variables'][_0x22ee4b]={};}this[_0x5b24('0x2b')][_0x22ee4b][_0x24d3df]=_0x416860;}};VoiceAgentReport[_0x5b24('0x1d')]['syncHangup']=function(_0xae5130){try{if(this[_0x5b24('0x1f')](_0xae5130)){logger[_0x5b24('0x25')]('[%s][voiceAgentReport][hangup]\x20event:',_0xae5130['uniqueid'],util[_0x5b24('0x26')](_0xae5130,{'showHidden':![],'depth':null}));if(this[_0x5b24('0x8')][_0xae5130[_0x5b24('0x22')]]){for(var _0x18cb46 in this[_0x5b24('0x8')][_0xae5130[_0x5b24('0x22')]]){if(this[_0x5b24('0x8')][_0xae5130['uniqueid']][_0x5b24('0x39')](_0x18cb46)){if(this[_0x5b24('0x8')][_0xae5130['uniqueid']][_0x18cb46]['reason']==_0x5b24('0x5d')&&this['channels'][_0xae5130[_0x5b24('0x22')]][_0x18cb46]['agentcomplete']){logger[_0x5b24('0x21')](_0x5b24('0x7b'),_0xae5130[_0x5b24('0x22')],_0x18cb46);this[_0x5b24('0x8')][_0xae5130[_0x5b24('0x22')]][_0x18cb46]['agentcompleteAt']=moment()[_0x5b24('0x34')](_0x5b24('0x27'));}}}logger['debug'](_0x5b24('0x7c'),_0xae5130[_0x5b24('0x22')],util[_0x5b24('0x26')](_['values'](this[_0x5b24('0x8')][_0xae5130[_0x5b24('0x22')]]),{'showHidden':![],'depth':null}));ami[_0x5b24('0x1e')](_0x5b24('0x7d'),_['values'](this[_0x5b24('0x8')][_0xae5130[_0x5b24('0x22')]]));delete this[_0x5b24('0x8')][_0xae5130['uniqueid']];}if(this[_0x5b24('0x2b')][_0xae5130[_0x5b24('0x22')]]){delete this[_0x5b24('0x2b')][_0xae5130['uniqueid']];}}}catch(_0x271b85){logger['error']('[%s][voiceAgentReport][hangup]',_0xae5130[_0x5b24('0x22')],util[_0x5b24('0x26')](_0x271b85,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x5b24('0x1d')][_0x5b24('0x7e')]=function(_0x119b66){try{if(this[_0x5b24('0x1f')](_0x119b66)){logger[_0x5b24('0x25')](_0x5b24('0x7f'),_0x119b66[_0x5b24('0x22')],util[_0x5b24('0x26')](_0x119b66,{'showHidden':![],'depth':null}));if(this['channels'][_0x119b66['transfereeuniqueid']]){for(var _0x5dad2f in this[_0x5b24('0x8')][_0x119b66[_0x5b24('0x80')]]){if(this[_0x5b24('0x8')][_0x119b66[_0x5b24('0x80')]]['hasOwnProperty'](_0x5dad2f)){if(_0x119b66[_0x5b24('0x81')]===_0x5dad2f){logger[_0x5b24('0x21')](_0x5b24('0x82'),_0x119b66[_0x5b24('0x22')],this[_0x5b24('0x8')][_0x119b66[_0x5b24('0x80')]][_0x5dad2f]['membername'],_0x5dad2f);var _0x32b480=moment();this['channels'][_0x119b66[_0x5b24('0x80')]][_0x5dad2f][_0x5b24('0x12')]=!![];this['channels'][_0x119b66[_0x5b24('0x80')]][_0x5dad2f][_0x5b24('0x5b')]=moment()[_0x5b24('0x34')](_0x5b24('0x27'));this[_0x5b24('0x8')][_0x119b66[_0x5b24('0x80')]][_0x5dad2f][_0x5b24('0x41')]=_0x5b24('0x5c');this['channels'][_0x119b66['transfereeuniqueid']][_0x5dad2f][_0x5b24('0x4d')]=_0x5b24('0x5d');this[_0x5b24('0x8')][_0x119b66[_0x5b24('0x80')]][_0x5dad2f][_0x5b24('0x5e')]=_0x32b480[_0x5b24('0x83')](this[_0x5b24('0x8')][_0x119b66[_0x5b24('0x80')]][_0x5dad2f][_0x5b24('0x3b')],_0x5b24('0x84'));}}}}if(this[_0x5b24('0x8')][_0x119b66['secondtransfereruniqueid']]){var _0x54cf61=this[_0x5b24('0x8')][_0x119b66[_0x5b24('0x85')]];this[_0x5b24('0x8')][_0x119b66[_0x5b24('0x85')]]=this[_0x5b24('0x8')][_0x119b66['transfereeuniqueid']];this['channels'][_0x119b66['transfereeuniqueid']]=_0x54cf61;}}}catch(_0x1f61ad){logger[_0x5b24('0x37')]('[%s][voiceAgentReport][attendedtransfer]',_0x119b66['uniqueid'],util['inspect'](_0x1f61ad,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x5b24('0x1c')]=function(_0x1a6685){try{if(this[_0x5b24('0x1f')](_0x1a6685)){logger[_0x5b24('0x25')]('[%s][voiceAgentReport][blindtransfer]\x20event:',_0x1a6685[_0x5b24('0x22')],util[_0x5b24('0x26')](_0x1a6685,{'showHidden':![],'depth':null}));if(this[_0x5b24('0x8')][_0x1a6685['transfereeuniqueid']]){for(var _0x1c58cb in this[_0x5b24('0x8')][_0x1a6685[_0x5b24('0x80')]]){if(this['channels'][_0x1a6685[_0x5b24('0x80')]]['hasOwnProperty'](_0x1c58cb)){if(_0x1a6685['transfereruniqueid']===_0x1c58cb){logger[_0x5b24('0x21')](_0x5b24('0x86'),_0x1a6685[_0x5b24('0x22')],this[_0x5b24('0x8')][_0x1a6685[_0x5b24('0x80')]][_0x1c58cb][_0x5b24('0x23')],_0x1c58cb);var _0x4b9e33=moment();this[_0x5b24('0x8')][_0x1a6685[_0x5b24('0x80')]][_0x1c58cb][_0x5b24('0x12')]=!![];this[_0x5b24('0x8')][_0x1a6685[_0x5b24('0x80')]][_0x1c58cb][_0x5b24('0x5b')]=_0x4b9e33;this[_0x5b24('0x8')][_0x1a6685[_0x5b24('0x80')]][_0x1c58cb][_0x5b24('0x41')]=_0x5b24('0x5c');this['channels'][_0x1a6685[_0x5b24('0x80')]][_0x1c58cb][_0x5b24('0x4d')]=_0x5b24('0x5d');this[_0x5b24('0x8')][_0x1a6685[_0x5b24('0x80')]][_0x1c58cb][_0x5b24('0x5e')]=_0x4b9e33[_0x5b24('0x83')](this[_0x5b24('0x8')][_0x1a6685[_0x5b24('0x80')]][_0x1c58cb][_0x5b24('0x3b')],'seconds');}}}}}}catch(_0x5b87ef){logger[_0x5b24('0x37')](_0x5b24('0x87'),_0x1a6685[_0x5b24('0x22')],util[_0x5b24('0x26')](_0x5b87ef,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x5b24('0x1d')][_0x5b24('0x18')]=function(_0x311985){var _0x546718='';try{if(this[_0x5b24('0x1f')](_0x311985)){logger['debug'](_0x5b24('0x88'),_0x311985[_0x5b24('0x22')],util['inspect'](_0x311985,{'showHidden':![],'depth':null}));if(_0x311985[_0x5b24('0x89')]){_0x546718=_0x311985[_0x5b24('0x89')][_0x5b24('0x8a')](0x0,_0x311985['channel'][_0x5b24('0x8b')]('-'));if(this[_0x5b24('0xa')][_0x546718]){logger[_0x5b24('0x21')](_0x5b24('0x8c'),_0x311985[_0x5b24('0x22')],_0x546718);this[_0x5b24('0xa')][_0x546718][_0x5b24('0x8d')]=!![];}}}}catch(_0x220702){logger[_0x5b24('0x37')](_0x5b24('0x8e'),_0x311985[_0x5b24('0x22')],util['inspect'](_0x220702,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x5b24('0x1d')][_0x5b24('0x1a')]=function(_0x5b9d85){var _0xce67e='';try{if(this['isNotNull'](_0x5b9d85)){logger['debug'](_0x5b24('0x8f'),_0x5b9d85['uniqueid'],util[_0x5b24('0x26')](_0x5b9d85,{'showHidden':![],'depth':null}));if(_0x5b9d85[_0x5b24('0x89')]){_0xce67e=_0x5b9d85[_0x5b24('0x89')]['substring'](0x0,_0x5b9d85[_0x5b24('0x89')]['lastIndexOf']('-'));if(this[_0x5b24('0xa')][_0xce67e]){logger[_0x5b24('0x21')](_0x5b24('0x90'),_0x5b9d85[_0x5b24('0x22')],_0xce67e);this[_0x5b24('0xa')][_0xce67e][_0x5b24('0x8d')]=![];}}}}catch(_0x199866){logger[_0x5b24('0x37')](_0x5b24('0x91'),_0x5b9d85['uniqueid'],util[_0x5b24('0x26')](_0x199866,{'showHidden':![],'depth':null}));}};module[_0x5b24('0x92')]=VoiceAgentReport;
\ No newline at end of file
+var _0xa9e0=['redis','defaults','localhost','channels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart','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','merge','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','format','[%s][voiceAgentReport][agentcalled]','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','voiceChannels','routealias','interface','pick','destconnectedlinenum','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:%s','user:agentconnect','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answered_elsewhere','[%s][voiceAgentReport][agentconnect]','syncAgentRingNoAnswer','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','custom:agentringnoanswer','error','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','agentringnoanswer','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','reason','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','transfer','agent','talktime','acw','acwtime','agentacw','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','user: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','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberlastcall','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][hangup]','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:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]','lodash','moment','util','../../../config/logger','../ami'];(function(_0x13b10b,_0x202280){var _0x288715=function(_0x15be9c){while(--_0x15be9c){_0x13b10b['push'](_0x13b10b['shift']());}};_0x288715(++_0x202280);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'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')]]};}_[_0x0a9e('0x2c')](this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],_[_0x0a9e('0x2d')](_0x155cce,[_0x0a9e('0x2e'),_0x0a9e('0x2f')]));logger[_0x0a9e('0x23')](_0x0a9e('0x30'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x31'),this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]);logger['debug'](_0x0a9e('0x32'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x33')]('user:%s',_0x155cce[_0x0a9e('0x21')]),'user:called',this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]);}}catch(_0x3f3d41){logger['error'](_0x0a9e('0x34'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x3f3d41,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncAgentConnect']=function(_0x54135e){try{if(this[_0x0a9e('0x1e')](_0x54135e)){if(this['channels'][_0x54135e[_0x0a9e('0x26')]]){logger[_0x0a9e('0x23')](_0x0a9e('0x35'),_0x54135e[_0x0a9e('0x26')],util['inspect'](_0x54135e,{'showHidden':![],'depth':null}));for(var _0x31916f in this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]]){if(this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x31916f)){if(_0x54135e[_0x0a9e('0x22')]===_0x31916f){logger['info']('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x54135e[_0x0a9e('0x26')],_0x54135e[_0x0a9e('0x21')],_0x54135e['destuniqueid']);this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x37')]=moment()[_0x0a9e('0x33')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x38')]=_0x54135e['connectedlinename'];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x39')]=_0x54135e['connectedlinenum'];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3a')]=_0x54135e[_0x0a9e('0x3a')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3b')]=_0x54135e[_0x0a9e('0x3b')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3c')]=_0x54135e[_0x0a9e('0x3c')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3d')]='connect';if(this['voiceChannels'][this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x26')]]){var _0x315881=this[_0x0a9e('0x3e')][this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x26')]][_0x0a9e('0x3f')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3f')]=_0x315881;_0x54135e['routealias']=_0x315881;}_[_0x0a9e('0x2c')](this[_0x0a9e('0xa')][_0x54135e[_0x0a9e('0x40')]],_[_0x0a9e('0x41')](_0x54135e,[_0x0a9e('0x28'),_0x0a9e('0x42'),_0x0a9e('0x3f')]));logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:',_0x54135e[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x54135e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami['emit'](_0x0a9e('0x43'),this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x54135e[_0x0a9e('0x22')]]);logger[_0x0a9e('0x23')](_0x0a9e('0x44'),_0x54135e[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x54135e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x33')](_0x0a9e('0x45'),_0x54135e[_0x0a9e('0x21')]),_0x0a9e('0x46'),this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x54135e[_0x0a9e('0x22')]]);}else if(!this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f]['agentringnoanswer']&&!this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')](_0x0a9e('0x47'),_0x54135e[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x21')],_0x31916f);this['channels'][_0x54135e['uniqueid']][_0x31916f]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x48')]=moment()['format'](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f]['answeredelsewheredestinationuniqueid']=_0x54135e[_0x0a9e('0x22')];this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x31916f]['answeredelsewheremembername']=_0x54135e[_0x0a9e('0x21')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f]['lastevent']=_0x0a9e('0x49');this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f]['reason']=_0x0a9e('0x49');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:',_0x54135e[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')]('custom:agentansweredelsewhere',this['channels'][_0x54135e['uniqueid']][_0x31916f]);}}}}}}catch(_0x2da03c){logger['error'](_0x0a9e('0x4a'),_0x54135e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2da03c,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x4b')]=function(_0x272738){try{if(this[_0x0a9e('0x1e')](_0x272738)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x272738[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x272738,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]]&&this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738['destuniqueid']]){logger[_0x0a9e('0x20')](_0x0a9e('0x4c'),_0x272738['uniqueid'],_0x272738[_0x0a9e('0x21')],_0x272738['destuniqueid']);this[_0x0a9e('0x8')][_0x272738['uniqueid']][_0x272738['destuniqueid']]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x272738['uniqueid']][_0x272738[_0x0a9e('0x22')]][_0x0a9e('0x48')]=moment()[_0x0a9e('0x33')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738['destuniqueid']][_0x0a9e('0x3d')]='rejected';this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738[_0x0a9e('0x22')]]['reason']=_0x0a9e('0x4d');logger[_0x0a9e('0x23')](_0x0a9e('0x4e'),_0x272738[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x4f'),this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738[_0x0a9e('0x22')]]);}}}catch(_0x4d4a35){logger[_0x0a9e('0x50')](_0x0a9e('0x51'),_0x272738[_0x0a9e('0x26')],util['inspect'](_0x4d4a35,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncQueueCallerAbandon']=function(_0x5211e3){try{if(this[_0x0a9e('0x1e')](_0x5211e3)){logger[_0x0a9e('0x23')](_0x0a9e('0x52'),_0x5211e3[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x5211e3,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]]){for(var _0x54a37d in this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x54a37d)&&!this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x53')]&&!this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d]['agentcomplete']){logger[_0x0a9e('0x20')](_0x0a9e('0x54'),_0x5211e3[_0x0a9e('0x26')],this['channels'][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x21')],_0x54a37d);this['channels'][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x53')]=!![];this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x48')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x3d')]=_0x0a9e('0x55');this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x56')]=_0x0a9e('0x55');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:',_0x5211e3[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x5211e3['uniqueid']][_0x54a37d],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')]('custom:agentqueuecallerabandon',this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d]);}}}}}catch(_0x4c46c1){logger[_0x0a9e('0x50')](_0x0a9e('0x57'),_0x5211e3[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4c46c1,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x13')]=function(_0x2e9552){try{if(this[_0x0a9e('0x1e')](_0x2e9552)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcomplete]\x20event:',_0x2e9552[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2e9552,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]]){for(var _0x4abc8f in this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x4abc8f)){if(this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x37')]&&!this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')](_0x0a9e('0x58'),_0x2e9552[_0x0a9e('0x26')],this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x21')],_0x4abc8f);this[_0x0a9e('0x8')][_0x2e9552['uniqueid']][_0x4abc8f][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x59')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f]['lastevent']=_0x0a9e('0x5a');this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x56')]=_0x2e9552['reason']==_0x0a9e('0x5b')?_0x0a9e('0x5c'):_0x2e9552[_0x0a9e('0x56')];this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x5d')]=_0x2e9552[_0x0a9e('0x5d')];if(this['voiceQueues'][_0x2e9552[_0x0a9e('0x28')]]&&this[_0x0a9e('0x9')][_0x2e9552[_0x0a9e('0x28')]][_0x0a9e('0x5e')]){this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x5f')]=this['voiceQueues'][_0x2e9552[_0x0a9e('0x28')]]['acwTimeout'];this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x60')]=!![];}this[_0x0a9e('0xa')][_0x2e9552['interface']]=_['omit'](this[_0x0a9e('0xa')][_0x2e9552[_0x0a9e('0x40')]],[_0x0a9e('0x28'),'destconnectedlinenum']);logger[_0x0a9e('0x23')](_0x0a9e('0x61'),_0x2e9552['uniqueid'],util['inspect'](this[_0x0a9e('0x8')][_0x2e9552['uniqueid']][_0x4abc8f],{'showHidden':![],'depth':null}));ami['emit']('custom:agentcomplete',this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f]);logger[_0x0a9e('0x23')](_0x0a9e('0x62'),_0x2e9552[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f],{'showHidden':![],'depth':null}));this['emit'](util[_0x0a9e('0x33')](_0x0a9e('0x45'),_0x2e9552[_0x0a9e('0x21')]),_0x0a9e('0x63'),this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f]);}}}}}}catch(_0x32f761){logger[_0x0a9e('0x50')]('[%s][voiceAgentReport][agentcomplete]',_0x2e9552[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x32f761,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x15')]=function(_0x255e49){try{if(this[_0x0a9e('0x1e')](_0x255e49)){logger[_0x0a9e('0x23')](_0x0a9e('0x64'),_0x255e49['uniqueid'],util[_0x0a9e('0x25')](_0x255e49,{'showHidden':![],'depth':null}));this[_0x0a9e('0x65')](_0x255e49['uniqueid'],_[_0x0a9e('0x66')](_0x255e49[_0x0a9e('0x67')])[0x0],_0x255e49[_0x0a9e('0x68')]);if(this['channels'][_0x255e49[_0x0a9e('0x26')]]){for(var _0x52ec10 in this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x52ec10)){logger[_0x0a9e('0x20')](_0x0a9e('0x69'),_0x255e49[_0x0a9e('0x26')],_0x52ec10,_['keys'](_0x255e49[_0x0a9e('0x67')])[0x0],_0x255e49[_0x0a9e('0x68')]);if(_[_0x0a9e('0x1f')](this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')])){this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')]={};}this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')]=this[_0x0a9e('0xb')][_0x255e49['uniqueid']];}}}}}catch(_0xc81b64){logger[_0x0a9e('0x50')](_0x0a9e('0x6a'),_0x255e49[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xc81b64,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x65')]=function(_0x1756c7,_0x5ce99d,_0x23b447){var _0x5e725e=[_0x0a9e('0x6b'),_0x0a9e('0x6c'),_0x0a9e('0x6d'),_0x0a9e('0x6e'),'rtpaudioqosloss',_0x0a9e('0x6f'),'rtpaudioqosrtt',_0x0a9e('0x70'),_0x0a9e('0x71'),'sipuri',_0x0a9e('0x72'),_0x0a9e('0x73'),_0x0a9e('0x74'),'memberdynamic','memberinterface',_0x0a9e('0x75'),_0x0a9e('0x21'),_0x0a9e('0x76'),_0x0a9e('0x77')];if(!_[_0x0a9e('0x78')](_0x5ce99d)&&!_[_0x0a9e('0x79')](_0x5e725e,_0x5ce99d)){if(_[_0x0a9e('0x1f')](this[_0x0a9e('0xb')][_0x1756c7])){this[_0x0a9e('0xb')][_0x1756c7]={};}this['variables'][_0x1756c7][_0x5ce99d]=_0x23b447;}};VoiceAgentReport[_0x0a9e('0x1c')]['syncHangup']=function(_0x287324){try{if(this[_0x0a9e('0x1e')](_0x287324)){logger[_0x0a9e('0x23')](_0x0a9e('0x7a'),_0x287324[_0x0a9e('0x26')],util['inspect'](_0x287324,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]){for(var _0x2791c5 in this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]){if(this['channels'][_0x287324['uniqueid']][_0x0a9e('0x36')](_0x2791c5)){if(this['channels'][_0x287324[_0x0a9e('0x26')]][_0x2791c5][_0x0a9e('0x56')]==_0x0a9e('0x5b')&&this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]][_0x2791c5][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x287324[_0x0a9e('0x26')],_0x2791c5);this['channels'][_0x287324[_0x0a9e('0x26')]][_0x2791c5]['agentcompleteAt']=moment()[_0x0a9e('0x33')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger['debug'](_0x0a9e('0x7b'),_0x287324[_0x0a9e('0x26')],util['inspect'](_[_0x0a9e('0x7c')](this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]),{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x7d'),_['values'](this['channels'][_0x287324[_0x0a9e('0x26')]]));delete this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]];}if(this[_0x0a9e('0xb')][_0x287324[_0x0a9e('0x26')]]){delete this['variables'][_0x287324[_0x0a9e('0x26')]];}}}catch(_0xadce3d){logger['error'](_0x0a9e('0x7e'),_0x287324[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xadce3d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x7f')]=function(_0x23b39e){try{if(this[_0x0a9e('0x1e')](_0x23b39e)){logger[_0x0a9e('0x23')](_0x0a9e('0x80'),_0x23b39e[_0x0a9e('0x26')],util['inspect'](_0x23b39e,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]]){for(var _0x2ada60 in this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]]){if(this['channels'][_0x23b39e['transfereeuniqueid']][_0x0a9e('0x36')](_0x2ada60)){if(_0x23b39e[_0x0a9e('0x82')]===_0x2ada60){logger[_0x0a9e('0x20')](_0x0a9e('0x83'),_0x23b39e[_0x0a9e('0x26')],this['channels'][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x21')],_0x2ada60);var _0x3450ae=moment();this['channels'][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x23b39e['transfereeuniqueid']][_0x2ada60][_0x0a9e('0x59')]=moment()[_0x0a9e('0x33')](_0x0a9e('0x27'));this['channels'][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60]['lastevent']=_0x0a9e('0x5a');this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x56')]=_0x0a9e('0x5b');this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x5d')]=_0x3450ae[_0x0a9e('0x84')](this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x37')],_0x0a9e('0x85'));}}}}if(this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x86')]]){var _0x248368=this['channels'][_0x23b39e['secondtransfereruniqueid']];this[_0x0a9e('0x8')][_0x23b39e['secondtransfereruniqueid']]=this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]];this['channels'][_0x23b39e[_0x0a9e('0x81')]]=_0x248368;}}}catch(_0xe2b083){logger[_0x0a9e('0x50')](_0x0a9e('0x87'),_0x23b39e['uniqueid'],util[_0x0a9e('0x25')](_0xe2b083,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1b')]=function(_0x34a791){try{if(this['isNotNull'](_0x34a791)){logger[_0x0a9e('0x23')](_0x0a9e('0x88'),_0x34a791[_0x0a9e('0x26')],util['inspect'](_0x34a791,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]]){for(var _0x17b29d in this['channels'][_0x34a791[_0x0a9e('0x81')]]){if(this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x0a9e('0x36')](_0x17b29d)){if(_0x34a791[_0x0a9e('0x89')]===_0x17b29d){logger['info'](_0x0a9e('0x8a'),_0x34a791[_0x0a9e('0x26')],this['channels'][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x21')],_0x17b29d);var _0x1f6f1c=moment();this['channels'][_0x34a791['transfereeuniqueid']][_0x17b29d]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d]['agentcompleteAt']=_0x1f6f1c;this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x3d')]='complete';this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x56')]=_0x0a9e('0x5b');this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x5d')]=_0x1f6f1c[_0x0a9e('0x84')](this[_0x0a9e('0x8')][_0x34a791['transfereeuniqueid']][_0x17b29d][_0x0a9e('0x37')],'seconds');}}}}}}catch(_0x138cf5){logger[_0x0a9e('0x50')](_0x0a9e('0x8b'),_0x34a791[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x138cf5,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncMusicOnHoldStart']=function(_0x1a0314){var _0x33da81='';try{if(this[_0x0a9e('0x1e')](_0x1a0314)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][musiconholdstart]\x20event:',_0x1a0314[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x1a0314,{'showHidden':![],'depth':null}));if(_0x1a0314[_0x0a9e('0x8c')]){_0x33da81=_0x1a0314[_0x0a9e('0x8c')][_0x0a9e('0x8d')](0x0,_0x1a0314[_0x0a9e('0x8c')][_0x0a9e('0x8e')]('-'));if(this[_0x0a9e('0xa')][_0x33da81]){logger[_0x0a9e('0x20')](_0x0a9e('0x8f'),_0x1a0314['uniqueid'],_0x33da81);this[_0x0a9e('0xa')][_0x33da81][_0x0a9e('0x90')]=!![];}}}}catch(_0x2ff265){logger[_0x0a9e('0x50')](_0x0a9e('0x91'),_0x1a0314[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2ff265,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncMusicOnHoldStop']=function(_0x3b581c){var _0xd2391='';try{if(this[_0x0a9e('0x1e')](_0x3b581c)){logger['debug'](_0x0a9e('0x92'),_0x3b581c[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x3b581c,{'showHidden':![],'depth':null}));if(_0x3b581c[_0x0a9e('0x8c')]){_0xd2391=_0x3b581c[_0x0a9e('0x8c')][_0x0a9e('0x8d')](0x0,_0x3b581c[_0x0a9e('0x8c')][_0x0a9e('0x8e')]('-'));if(this[_0x0a9e('0xa')][_0xd2391]){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][musiconholdstop]\x20interface:%s',_0x3b581c[_0x0a9e('0x26')],_0xd2391);this[_0x0a9e('0xa')][_0xd2391][_0x0a9e('0x90')]=![];}}}}catch(_0x3db98f){logger[_0x0a9e('0x50')](_0x0a9e('0x93'),_0x3b581c['uniqueid'],util[_0x0a9e('0x25')](_0x3db98f,{'showHidden':![],'depth':null}));}};module['exports']=VoiceAgentReport;
\ No newline at end of file
index 9717903..bb0006f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x769c=['newexten','syncNewExten','newchannel','newstate','syncNewState','varset','syncVarSet','syncHangup','syncNewCallerId','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','prototype','isNotNull','isUndefined','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','debug','[%s][voiceCallReport][newcallerid]\x20event:','inspect','linkedid','channels','pick','from-sip','channel','split','exten','xcally-motion-preview','destconnectedlinenum','connectedlinenum','emit','format','user:agentconnect','[%s][voiceCallReport][newcallerid]','syncNewChannel','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','info','context','toNumber','channelstate','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','accountcode','user:%s','name','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','starttime','duration','subtract','seconds','YYYY-MM-DD\x20HH:mm:ss','merge','keys','includes','lastapplication','lastdata','cdr(','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','calleridnum','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','diff','connectedlinename','destinationchannel','disposition','UserId','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','replace','.WAV','monitors','isNil','push','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','type','xmd-queue','originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','sipcalluniqueid','parse','syncMixMonitorFilename','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','billableseconds','holdtime','omit','user:agentcomplete','undefined','isEmpty','getSettings','then','stopRecordingOnTransfer','resolve','catch','Action','StopMixMonitor','finally','webbar:stopmonitors','event','BlindTransfer','blindTransfers','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','transfercalleridnum','transferconnectedlinenum','origtransfereruniqueid','origtransfererlinkedid','routeid','ATTENDED','transferType','[%s][voiceCallReport][attendedtransfer]','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','BLIND','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','syncMusicOnHoldStop','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','exports','lodash','moment','util','path','../../../config/environment','ami','../ami','../model/channel','unknown','inuse','busy','invalid','unavailable','ringing','ringinuse','onhold','set','queue','playback','voicemail','NO\x20ANSWER','FAILED','ANSWERED','redis','localhost','socket.io-emitter','agents','coreshowchannel','bind'];(function(_0xc6be3a,_0x540e05){var _0x56a310=function(_0x50a144){while(--_0x50a144){_0xc6be3a['push'](_0xc6be3a['shift']());}};_0x56a310(++_0x540e05);}(_0x769c,0x17f));var _0xc769=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x769c[_0x57b54c];return _0x59cc19;};'use strict';var BPromise=require('bluebird');var _=require(_0xc769('0x0'));var moment=require(_0xc769('0x1'));var util=require(_0xc769('0x2'));var path=require(_0xc769('0x3'));var Redis=require('ioredis');var config=require(_0xc769('0x4'));var logger=require('../../../config/logger')(_0xc769('0x5'));var ami=require(_0xc769('0x6'));var Channel=require(_0xc769('0x7'));var RpcSetting=require('../rpc/setting');var statusDesc=[_0xc769('0x8'),'not_inuse',_0xc769('0x9'),_0xc769('0xa'),_0xc769('0xb'),_0xc769('0xc'),_0xc769('0xd'),_0xc769('0xe'),_0xc769('0xf')];var applications=[_0xc769('0x10'),_0xc769('0x11'),'agi','dial',_0xc769('0x12'),_0xc769('0x13')];var dispositions=[_0xc769('0x14'),_0xc769('0x15'),'FAILED',_0xc769('0x14'),_0xc769('0x14'),_0xc769('0x14'),_0xc769('0x16'),'BUSY',_0xc769('0x15'),_0xc769('0x15'),_0xc769('0x15')];var actions={};config[_0xc769('0x17')]=_['defaults'](config['redis'],{'host':_0xc769('0x18'),'port':0x18eb});var io=require(_0xc769('0x19'))(new Redis(config[_0xc769('0x17')]));function VoiceCallReport(_0x17fd7f){this['channels']=_0x17fd7f['channels'];this['agents']=_0x17fd7f[_0xc769('0x1a')];this['blindTransfers']={};ami['on'](_0xc769('0x1b'),this['syncNewExten'][_0xc769('0x1c')](this));ami['on'](_0xc769('0x1d'),this[_0xc769('0x1e')][_0xc769('0x1c')](this));ami['on'](_0xc769('0x1f'),this['syncNewChannel'][_0xc769('0x1c')](this));ami['on'](_0xc769('0x20'),this[_0xc769('0x21')][_0xc769('0x1c')](this));ami['on'](_0xc769('0x22'),this[_0xc769('0x23')]['bind'](this));ami['on']('hangup',this[_0xc769('0x24')][_0xc769('0x1c')](this));ami['on']('newcallerid',this[_0xc769('0x25')][_0xc769('0x1c')](this));ami['on'](_0xc769('0x26'),this[_0xc769('0x27')][_0xc769('0x1c')](this));ami['on'](_0xc769('0x28'),this[_0xc769('0x29')][_0xc769('0x1c')](this));ami['on'](_0xc769('0x2a'),this[_0xc769('0x2b')][_0xc769('0x1c')](this));ami['on'](_0xc769('0x2c'),this['syncMusicOnHoldStop']['bind'](this));try{logger['info'](_0xc769('0x2d'));ami[_0xc769('0x2e')]();}catch(_0x3e4cde){logger[_0xc769('0x2f')](_0xc769('0x30'),util['inspect'](_0x3e4cde,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0xc769('0x31')][_0xc769('0x32')]=function(_0x2796d5){return _0x2796d5!==null&&!_[_0xc769('0x33')](_0x2796d5);};VoiceCallReport[_0xc769('0x31')]['emit']=function(_0x4672dd,_0x2d226d,_0x708f55){io['to'](_0x4672dd)['emit'](_0x2d226d,_0x708f55);};VoiceCallReport[_0xc769('0x31')][_0xc769('0x25')]=function(_0x3a59ea){try{if(this[_0xc769('0x32')](_0x3a59ea)){logger['info'](_0xc769('0x34'),_0x3a59ea[_0xc769('0x35')],_0x3a59ea[_0xc769('0x36')],_0x3a59ea['calleridnum']);logger[_0xc769('0x37')](_0xc769('0x38'),_0x3a59ea[_0xc769('0x35')],util[_0xc769('0x39')](_0x3a59ea,{'showHidden':![],'depth':null}));if(_0x3a59ea[_0xc769('0x35')]===_0x3a59ea[_0xc769('0x3a')]){if(!_['isUndefined'](this[_0xc769('0x3b')][_0x3a59ea[_0xc769('0x35')]])){_['merge'](this['channels'][_0x3a59ea[_0xc769('0x35')]],_[_0xc769('0x3c')](_0x3a59ea,_['keys'](this[_0xc769('0x3b')][_0x3a59ea[_0xc769('0x35')]])));}}if(_0x3a59ea['context']===_0xc769('0x3d')){if(this[_0xc769('0x1a')][_0x3a59ea[_0xc769('0x3e')][_0xc769('0x3f')]('-')[0x0]]){if(_0x3a59ea[_0xc769('0x40')]==_0xc769('0x41')){this[_0xc769('0x1a')][_0x3a59ea[_0xc769('0x3e')]['split']('-')[0x0]][_0xc769('0x42')]=_0x3a59ea[_0xc769('0x43')];this[_0xc769('0x44')](util[_0xc769('0x45')]('user:%s',this['agents'][_0x3a59ea[_0xc769('0x3e')]['split']('-')[0x0]]['name']),_0xc769('0x46'),{'destaccountcode':this[_0xc769('0x1a')][_0x3a59ea[_0xc769('0x3e')]['split']('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x3a59ea['connectedlinenum']});}}}}}catch(_0x27edb0){logger[_0xc769('0x2f')](_0xc769('0x47'),_0x3a59ea[_0xc769('0x35')],util[_0xc769('0x39')](_0x27edb0,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xc769('0x48')]=function(_0x12ecbb){try{if(this[_0xc769('0x32')](_0x12ecbb)){logger['debug'](_0xc769('0x49'),_0x12ecbb[_0xc769('0x35')],util[_0xc769('0x39')](_0x12ecbb,{'showHidden':![],'depth':null}));if(_0x12ecbb['uniqueid']===_0x12ecbb['linkedid']&&_0x12ecbb['channel']!=_0xc769('0x4a')){if(_[_0xc769('0x33')](this[_0xc769('0x3b')][_0x12ecbb[_0xc769('0x35')]])){logger[_0xc769('0x4b')]('[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s',_0x12ecbb[_0xc769('0x35')],_0x12ecbb[_0xc769('0x4c')],_0x12ecbb[_0xc769('0x40')]);this['channels'][_0x12ecbb['uniqueid']]=new Channel();this['channels'][_0x12ecbb['uniqueid']]['starttime']=moment()[_0xc769('0x45')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xc769('0x3b')][_0x12ecbb[_0xc769('0x35')]]['disposition']=dispositions[_[_0xc769('0x4d')](_0x12ecbb[_0xc769('0x4e')])];_['merge'](this[_0xc769('0x3b')][_0x12ecbb['uniqueid']],_['pick'](_0x12ecbb,_['keys'](this[_0xc769('0x3b')][_0x12ecbb['uniqueid']])));if(_0x12ecbb[_0xc769('0x4c')]===_0xc769('0x3d')){if(this[_0xc769('0x1a')][_0x12ecbb['channel'][_0xc769('0x3f')]('-')[0x0]]){if(_[_0xc769('0x33')](this[_0xc769('0x1a')][_0x12ecbb[_0xc769('0x3e')][_0xc769('0x3f')]('-')[0x0]]['destconnectedlinenum'])){this[_0xc769('0x1a')][_0x12ecbb['channel']['split']('-')[0x0]][_0xc769('0x42')]=_0x12ecbb['exten'];logger[_0xc769('0x37')](_0xc769('0x4f'),_0x12ecbb[_0xc769('0x35')],util[_0xc769('0x39')]({'destaccountcode':this[_0xc769('0x1a')][_0x12ecbb[_0xc769('0x3e')][_0xc769('0x3f')]('-')[0x0]][_0xc769('0x50')],'destconnectedlinenum':_0x12ecbb['exten']},{'showHidden':![],'depth':null}));this[_0xc769('0x44')](util['format'](_0xc769('0x51'),this[_0xc769('0x1a')][_0x12ecbb[_0xc769('0x3e')][_0xc769('0x3f')]('-')[0x0]][_0xc769('0x52')]),_0xc769('0x46'),{'destaccountcode':this[_0xc769('0x1a')][_0x12ecbb[_0xc769('0x3e')][_0xc769('0x3f')]('-')[0x0]][_0xc769('0x50')],'destconnectedlinenum':_0x12ecbb[_0xc769('0x40')]});}}}}}}}catch(_0x536adc){logger[_0xc769('0x2f')](_0xc769('0x53'),_0x12ecbb[_0xc769('0x35')],util[_0xc769('0x39')](_0x536adc,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc769('0x31')][_0xc769('0x1e')]=function(_0xdf3826){try{if(this['isNotNull'](_0xdf3826)){logger[_0xc769('0x37')](_0xc769('0x54'),_0xdf3826[_0xc769('0x35')],util[_0xc769('0x39')](_0xdf3826,{'showHidden':![],'depth':null}));if(_0xdf3826[_0xc769('0x35')]===_0xdf3826[_0xc769('0x3a')]&&_0xdf3826[_0xc769('0x40')]!='h'&&_0xdf3826[_0xc769('0x3e')]!=_0xc769('0x4a')){_0xdf3826[_0xc769('0x55')]=_0xdf3826[_0xc769('0x55')][_0xc769('0x56')]();_0xdf3826[_0xc769('0x57')]=_0xdf3826[_0xc769('0x58')]&&_0xdf3826[_0xc769('0x58')]['startsWith']('CDR(routeAlias)')?_0xdf3826['appdata']:(_0xdf3826[_0xc769('0x58')]||_0xdf3826[_0xc769('0x57')])[_0xc769('0x56')]();logger[_0xc769('0x4b')](_0xc769('0x59'),_0xdf3826['uniqueid'],_0xdf3826[_0xc769('0x55')],_0xdf3826['applicationdata']);if(_['isUndefined'](this[_0xc769('0x3b')][_0xdf3826[_0xc769('0x35')]])){this[_0xc769('0x3b')][_0xdf3826[_0xc769('0x35')]]=new Channel();this['channels'][_0xdf3826[_0xc769('0x35')]][_0xc769('0x5a')]=_0xdf3826[_0xc769('0x5b')]?moment()[_0xc769('0x5c')](moment[_0xc769('0x5b')](_0xdf3826[_0xc769('0x5b')])['seconds'](),_0xc769('0x5d'))[_0xc769('0x45')](_0xc769('0x5e')):moment()['format'](_0xc769('0x5e'));this['channels'][_0xdf3826[_0xc769('0x35')]]['disposition']=_0xc769('0x14');}_[_0xc769('0x5f')](this[_0xc769('0x3b')][_0xdf3826['uniqueid']],_[_0xc769('0x3c')](_0xdf3826,_[_0xc769('0x60')](this[_0xc769('0x3b')][_0xdf3826[_0xc769('0x35')]])));if(_[_0xc769('0x61')](applications,_0xdf3826['application'])){this[_0xc769('0x3b')][_0xdf3826[_0xc769('0x35')]][_0xc769('0x62')]=_0xdf3826[_0xc769('0x55')];this['channels'][_0xdf3826[_0xc769('0x35')]][_0xc769('0x63')]=_0xdf3826['applicationdata'];if(_0xdf3826[_0xc769('0x55')]==='set'&&_['startsWith'](_0xdf3826[_0xc769('0x57')][_0xc769('0x56')](),_0xc769('0x64'))){var _0x2febf1=_0xdf3826['applicationdata'][_0xc769('0x3f')]('=');var _0x1f2a37=_0x2febf1[0x0][_0xc769('0x56')]()['match'](/cdr\((.*)\)/);if(_0x1f2a37){this[_0xc769('0x3b')][_0xdf3826[_0xc769('0x35')]][_0x1f2a37[0x1]]=_0x2febf1[0x1];}}else if(_0xdf3826[_0xc769('0x55')]===_0xc769('0x11')){this[_0xc769('0x3b')][_0xdf3826[_0xc769('0x35')]][_0xc769('0x11')]=_0xdf3826[_0xc769('0x57')][_0xc769('0x3f')](',')[0x0];}}}}}catch(_0x1b3262){logger[_0xc769('0x2f')](_0xc769('0x65'),_0xdf3826[_0xc769('0x35')],util[_0xc769('0x39')](_0x1b3262,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc769('0x31')][_0xc769('0x21')]=function(_0x4b3a5a){try{if(this[_0xc769('0x32')](_0x4b3a5a)){logger[_0xc769('0x4b')](_0xc769('0x66'),_0x4b3a5a[_0xc769('0x35')],_0x4b3a5a[_0xc769('0x3a')],_0x4b3a5a[_0xc769('0x36')],_0x4b3a5a[_0xc769('0x67')]);logger[_0xc769('0x37')](_0xc769('0x68'),_0x4b3a5a[_0xc769('0x35')],util['inspect'](_0x4b3a5a,{'showHidden':![],'depth':null}));if(_0x4b3a5a['uniqueid']!==_0x4b3a5a['linkedid']){if(this[_0xc769('0x3b')][_0x4b3a5a[_0xc769('0x3a')]]){if(_0x4b3a5a[_0xc769('0x4e')]==='6'){if(!this[_0xc769('0x3b')][_0x4b3a5a['linkedid']]['answered']){var _0x1c626d=moment();this[_0xc769('0x3b')][_0x4b3a5a[_0xc769('0x3a')]][_0xc769('0x69')]=!![];this[_0xc769('0x3b')][_0x4b3a5a[_0xc769('0x3a')]][_0xc769('0x6a')]=_0x1c626d[_0xc769('0x45')](_0xc769('0x5e'));if(this['channels'][_0x4b3a5a[_0xc769('0x3a')]][_0xc769('0x5a')]){this[_0xc769('0x3b')][_0x4b3a5a[_0xc769('0x3a')]]['holdtime']=_0x1c626d[_0xc769('0x6b')](this['channels'][_0x4b3a5a['linkedid']][_0xc769('0x5a')],'seconds');}}this['channels'][_0x4b3a5a[_0xc769('0x3a')]][_0xc769('0x3a')]=_0x4b3a5a[_0xc769('0x35')];if(_0x4b3a5a[_0xc769('0x67')]!==_0xc769('0x41')){this['channels'][_0x4b3a5a[_0xc769('0x3a')]][_0xc769('0x43')]=_0x4b3a5a[_0xc769('0x67')];}this[_0xc769('0x3b')][_0x4b3a5a[_0xc769('0x3a')]][_0xc769('0x6c')]=_0x4b3a5a['calleridname'];this[_0xc769('0x3b')][_0x4b3a5a[_0xc769('0x3a')]][_0xc769('0x6d')]=_0x4b3a5a[_0xc769('0x3e')];this[_0xc769('0x3b')][_0x4b3a5a[_0xc769('0x3a')]][_0xc769('0x6e')]=dispositions[_[_0xc769('0x4d')](_0x4b3a5a[_0xc769('0x4e')])];if(this[_0xc769('0x1a')][_0x4b3a5a[_0xc769('0x3e')]['split']('-')[0x0]]){this['channels'][_0x4b3a5a[_0xc769('0x3a')]][_0xc769('0x6f')]=this['agents'][_0x4b3a5a[_0xc769('0x3e')][_0xc769('0x3f')]('-')[0x0]]['id'];this['channels'][_0x4b3a5a[_0xc769('0x3a')]]['membername']=this[_0xc769('0x1a')][_0x4b3a5a[_0xc769('0x3e')][_0xc769('0x3f')]('-')[0x0]][_0xc769('0x52')];}}}}else{if(this[_0xc769('0x3b')][_0x4b3a5a['uniqueid']]){if(_0x4b3a5a[_0xc769('0x4e')]==='6'){if(this[_0xc769('0x1a')][_0x4b3a5a['channel'][_0xc769('0x3f')]('-')[0x0]]){this[_0xc769('0x3b')][_0x4b3a5a['uniqueid']][_0xc769('0x6f')]=this['agents'][_0x4b3a5a[_0xc769('0x3e')][_0xc769('0x3f')]('-')[0x0]]['id'];this[_0xc769('0x3b')][_0x4b3a5a[_0xc769('0x35')]][_0xc769('0x70')]=this[_0xc769('0x1a')][_0x4b3a5a['channel'][_0xc769('0x3f')]('-')[0x0]]['name'];}}}}if(_0x4b3a5a[_0xc769('0x4e')]==='6'&&_0x4b3a5a[_0xc769('0x4c')]===_0xc769('0x3d')){if(this[_0xc769('0x1a')][_0x4b3a5a[_0xc769('0x3e')]['split']('-')[0x0]]){this[_0xc769('0x1a')][_0x4b3a5a[_0xc769('0x3e')][_0xc769('0x3f')]('-')[0x0]][_0xc769('0x42')]=_0x4b3a5a[_0xc769('0x40')];var _0xb58610;if(this[_0xc769('0x3b')][_0x4b3a5a[_0xc769('0x35')]])_0xb58610=this[_0xc769('0x3b')][_0x4b3a5a['uniqueid']][_0xc769('0x71')];else if(this['channels'][_0x4b3a5a[_0xc769('0x3a')]])_0xb58610=this[_0xc769('0x3b')][_0x4b3a5a[_0xc769('0x3a')]]['routealias'];logger[_0xc769('0x37')](_0xc769('0x72'),_0x4b3a5a[_0xc769('0x35')],util['inspect']({'destaccountcode':this[_0xc769('0x1a')][_0x4b3a5a[_0xc769('0x3e')][_0xc769('0x3f')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x4b3a5a['exten'],'routealias':_0xb58610},{'showHidden':![],'depth':null}));this['emit'](util[_0xc769('0x45')](_0xc769('0x51'),this[_0xc769('0x1a')][_0x4b3a5a[_0xc769('0x3e')][_0xc769('0x3f')]('-')[0x0]]['name']),_0xc769('0x46'),{'destaccountcode':this[_0xc769('0x1a')][_0x4b3a5a['channel'][_0xc769('0x3f')]('-')[0x0]][_0xc769('0x50')],'destconnectedlinenum':_0x4b3a5a[_0xc769('0x40')],'routealias':_0xb58610});}}}}catch(_0x5677fa){logger[_0xc769('0x2f')](_0xc769('0x73'),_0x4b3a5a[_0xc769('0x35')],util[_0xc769('0x39')](_0x5677fa,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncMixMonitorFilename']=function(_0x4036ea,_0x4d26e3){try{if(this[_0xc769('0x3b')][_0x4036ea]){logger[_0xc769('0x4b')](_0xc769('0x74'),_0x4036ea,_0x4d26e3);this['channels'][_0x4036ea][_0xc769('0x75')]=!![];if(_[_0xc769('0x76')](_0x4d26e3,'.wav49')){_0x4d26e3=_0x4d26e3[_0xc769('0x77')]('.wav49',_0xc769('0x78'));}this['channels'][_0x4036ea]['monitorFilename']=_0x4d26e3;var _0x4a94a7=_['find'](this['channels'][_0x4036ea][_0xc769('0x79')],{'filename':_0x4d26e3});if(_[_0xc769('0x7a')](_0x4a94a7)){this['channels'][_0x4036ea][_0xc769('0x79')][_0xc769('0x7b')]({'filename':_0x4d26e3,'createdAt':moment()[_0xc769('0x45')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':'','status':_0xc769('0x7c')});}}}catch(_0x3a8e54){logger[_0xc769('0x2f')](_0xc769('0x7d'),_0x4036ea,util['inspect'](_0x3a8e54,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc769('0x31')][_0xc769('0x23')]=function(_0x46d37f){try{if(this[_0xc769('0x32')](_0x46d37f)){logger[_0xc769('0x37')](_0xc769('0x7e'),_0x46d37f[_0xc769('0x35')],util[_0xc769('0x39')](_0x46d37f,{'showHidden':![],'depth':null}));if(this['channels'][_0x46d37f[_0xc769('0x35')]]&&_0x46d37f[_0xc769('0x3e')]!=_0xc769('0x4a')){if(this[_0xc769('0x32')](_0x46d37f[_0xc769('0x7f')])){if(this['isNotNull'](_0x46d37f[_0xc769('0x7f')][_0xc769('0x80')])){logger[_0xc769('0x4b')](_0xc769('0x81'),_0x46d37f[_0xc769('0x35')],_0x46d37f[_0xc769('0x82')]);this['syncMixMonitorFilename'](_0x46d37f['uniqueid'],_0x46d37f[_0xc769('0x82')]);}else if(this[_0xc769('0x32')](_0x46d37f[_0xc769('0x7f')][_0xc769('0x83')])){logger[_0xc769('0x4b')]('[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s',_0x46d37f[_0xc769('0x35')],_0x46d37f['value']);this[_0xc769('0x3b')][_0x46d37f['uniqueid']][_0xc769('0x67')]=_0x46d37f[_0xc769('0x82')];}else if(this['isNotNull'](_0x46d37f[_0xc769('0x7f')]['xmd-callerid'])){logger[_0xc769('0x4b')](_0xc769('0x84'),_0x46d37f[_0xc769('0x35')],_0x46d37f['value']);this[_0xc769('0x3b')][_0x46d37f['uniqueid']][_0xc769('0x85')]=_0x46d37f[_0xc769('0x82')];}else if(this[_0xc769('0x32')](_0x46d37f[_0xc769('0x7f')][_0xc769('0x86')])){logger[_0xc769('0x4b')]('[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x46d37f[_0xc769('0x35')],_0x46d37f[_0xc769('0x82')]);this[_0xc769('0x3b')][_0x46d37f[_0xc769('0x35')]][_0xc769('0x87')]=_0x46d37f[_0xc769('0x82')];}else if(this[_0xc769('0x32')](_0x46d37f[_0xc769('0x7f')][_0xc769('0x88')])){logger[_0xc769('0x4b')]('[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s',_0x46d37f[_0xc769('0x35')],_0x46d37f[_0xc769('0x82')][_0xc769('0x3f')](',')[0x0]);this[_0xc769('0x3b')][_0x46d37f['uniqueid']][_0xc769('0x11')]=_0x46d37f[_0xc769('0x82')][_0xc769('0x3f')](',')[0x0];}else if(this[_0xc769('0x32')](_0x46d37f[_0xc769('0x7f')]['xmd-originatecalleridnum'])){logger[_0xc769('0x4b')]('[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x46d37f[_0xc769('0x35')],_0x46d37f['value']);this[_0xc769('0x3b')][_0x46d37f[_0xc769('0x35')]][_0xc769('0x89')]=_0x46d37f[_0xc769('0x82')];}else if(this[_0xc769('0x32')](_0x46d37f['variable']['xmd-destination'])){logger['info'](_0xc769('0x8a'),_0x46d37f[_0xc769('0x35')],_0x46d37f[_0xc769('0x82')]);this[_0xc769('0x3b')][_0x46d37f[_0xc769('0x35')]][_0xc769('0x8b')]=_0x46d37f[_0xc769('0x82')];}else if(this[_0xc769('0x32')](_0x46d37f[_0xc769('0x7f')][_0xc769('0x8c')])){logger['info'](_0xc769('0x8d'),_0x46d37f['uniqueid'],_0x46d37f[_0xc769('0x82')]);this[_0xc769('0x3b')][_0x46d37f['uniqueid']][_0xc769('0x8e')]=_0x46d37f['value'];}else if(this[_0xc769('0x32')](_0x46d37f[_0xc769('0x7f')][_0xc769('0x8f')])){logger[_0xc769('0x4b')](_0xc769('0x90'),_0x46d37f[_0xc769('0x35')],_0x46d37f['value']);this['channels'][_0x46d37f['uniqueid']][_0xc769('0x11')]=_0x46d37f['value'];}else if(this[_0xc769('0x32')](_0x46d37f[_0xc769('0x7f')][_0xc769('0x91')])){logger[_0xc769('0x4b')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x46d37f[_0xc769('0x35')],_0x46d37f['value']);this['channels'][_0x46d37f[_0xc769('0x35')]][_0xc769('0x92')]=_0x46d37f['value'];}}}else if(this[_0xc769('0x32')](_0x46d37f[_0xc769('0x7f')][_0xc769('0x80')])){if(_0x46d37f['value']){var _0x52505f=path[_0xc769('0x93')](_0x46d37f[_0xc769('0x82')])[_0xc769('0x52')];logger[_0xc769('0x4b')](_0xc769('0x81'),_0x52505f,_0x46d37f['value']);this[_0xc769('0x94')](_0x52505f,_0x46d37f['value']);}}else if(this[_0xc769('0x3b')][_0x46d37f[_0xc769('0x3a')]]){if(this['isNotNull'](_0x46d37f[_0xc769('0x7f')])){if(this[_0xc769('0x32')](_0x46d37f[_0xc769('0x7f')][_0xc769('0x91')])){logger[_0xc769('0x4b')](_0xc769('0x95'),_0x46d37f['linkedid'],_0x46d37f[_0xc769('0x82')]);this['channels'][_0x46d37f[_0xc769('0x3a')]][_0xc769('0x96')]=_0x46d37f[_0xc769('0x82')];}}}}}catch(_0x2df306){logger[_0xc769('0x2f')](_0xc769('0x97'),_0x46d37f[_0xc769('0x35')],util[_0xc769('0x39')](_0x2df306,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncHangup']=function(_0x2f0914){try{if(this[_0xc769('0x32')](_0x2f0914)){logger['debug']('[%s][voiceCallReport][hangup]\x20event:',_0x2f0914[_0xc769('0x35')],util[_0xc769('0x39')](_0x2f0914,{'showHidden':![],'depth':null}));if(this[_0xc769('0x3b')][_0x2f0914[_0xc769('0x35')]]){logger[_0xc769('0x4b')](_0xc769('0x98'),_0x2f0914[_0xc769('0x35')],_0x2f0914[_0xc769('0x99')]);var _0x2c6300=moment();this[_0xc769('0x3b')][_0x2f0914['uniqueid']]['endtime']=_0x2c6300['format'](_0xc769('0x5e'));this[_0xc769('0x3b')][_0x2f0914['uniqueid']][_0xc769('0x5b')]=_0x2c6300['diff'](this['channels'][_0x2f0914[_0xc769('0x35')]][_0xc769('0x5a')],_0xc769('0x5d'));if(this[_0xc769('0x3b')][_0x2f0914[_0xc769('0x35')]]['answered']){this[_0xc769('0x3b')][_0x2f0914[_0xc769('0x35')]][_0xc769('0x9a')]=_0x2c6300['diff'](this[_0xc769('0x3b')][_0x2f0914[_0xc769('0x35')]][_0xc769('0x6a')],_0xc769('0x5d'));this[_0xc769('0x3b')][_0x2f0914[_0xc769('0x35')]][_0xc769('0x9b')]=this[_0xc769('0x3b')][_0x2f0914[_0xc769('0x35')]][_0xc769('0x5b')]-this[_0xc769('0x3b')][_0x2f0914['uniqueid']][_0xc769('0x9a')];}if(_0x2f0914[_0xc769('0x4c')]===_0xc769('0x3d')){if(this[_0xc769('0x1a')][_0x2f0914['channel'][_0xc769('0x3f')]('-')[0x0]]){this[_0xc769('0x1a')][_0x2f0914['channel'][_0xc769('0x3f')]('-')[0x0]]=_[_0xc769('0x9c')](this[_0xc769('0x1a')][_0x2f0914[_0xc769('0x3e')][_0xc769('0x3f')]('-')[0x0]],['destconnectedlinenum']);logger[_0xc769('0x37')]('[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:',_0x2f0914[_0xc769('0x35')],util[_0xc769('0x39')]({'id':this[_0xc769('0x1a')][_0x2f0914[_0xc769('0x3e')][_0xc769('0x3f')]('-')[0x0]]['id'],'destaccountcode':this[_0xc769('0x1a')][_0x2f0914[_0xc769('0x3e')]['split']('-')[0x0]][_0xc769('0x50')]},{'showHidden':![],'depth':null}));this[_0xc769('0x44')](util['format'](_0xc769('0x51'),this[_0xc769('0x1a')][_0x2f0914[_0xc769('0x3e')][_0xc769('0x3f')]('-')[0x0]][_0xc769('0x52')]),_0xc769('0x9d'),{'id':this[_0xc769('0x1a')][_0x2f0914[_0xc769('0x3e')][_0xc769('0x3f')]('-')[0x0]]['id'],'destaccountcode':this[_0xc769('0x1a')][_0x2f0914[_0xc769('0x3e')]['split']('-')[0x0]][_0xc769('0x50')]});}}var _0x353a91=this;Promise['resolve']()['then'](function(){var _0x44fb6b=_0x353a91[_0xc769('0x3b')][_0x2f0914['uniqueid']];if(typeof _0x44fb6b['transferType']===_0xc769('0x9e'))return;if(_[_0xc769('0x9f')](_0x44fb6b[_0xc769('0x79')]))return;return RpcSetting[_0xc769('0xa0')]()[_0xc769('0xa1')](function(_0x3b8b57){if(!_0x3b8b57[_0xc769('0xa2')])return;return Promise[_0xc769('0xa3')]()[_0xc769('0xa1')](function(){return ami['Action']({'action':'StopMixMonitor','channel':_0x44fb6b[_0xc769('0x3e')]})[_0xc769('0xa4')](function(){});})[_0xc769('0xa1')](function(){return ami[_0xc769('0xa5')]({'action':_0xc769('0xa6'),'channel':_0x44fb6b[_0xc769('0x6d')]})[_0xc769('0xa4')](function(){})[_0xc769('0xa7')](function(){var _0x3ebf34=_0x353a91[_0xc769('0x1a')][_0x44fb6b[_0xc769('0x6d')][_0xc769('0x3f')]('-')[0x0]];if(!_0x3ebf34)return;io[_0xc769('0x44')](_0xc769('0xa8'),{'agentId':_0x3ebf34['id'],'uniqueid':_0x44fb6b[_0xc769('0x35')]});});});});})[_0xc769('0xa1')](function(){if(_0x2f0914[_0xc769('0xa9')]===_0xc769('0xaa')){_0x353a91[_0xc769('0xab')][_0x2f0914[_0xc769('0x35')]]=_0x353a91[_0xc769('0x3b')][_0x2f0914[_0xc769('0x35')]];}else{if(_0x353a91[_0xc769('0x3b')][_0x2f0914[_0xc769('0x35')]][_0xc769('0x87')]===_0xc769('0xac')&&_0x353a91[_0xc769('0xab')][_0x2f0914[_0xc769('0x35')]]){_0x353a91[_0xc769('0x3b')][_0x2f0914[_0xc769('0x35')]]['uniqueid']=[_0x353a91[_0xc769('0x3b')][_0x2f0914[_0xc769('0x35')]][_0xc769('0x3a')],_0x353a91[_0xc769('0x3b')][_0x2f0914[_0xc769('0x35')]][_0xc769('0x3a')]=_0x353a91[_0xc769('0x3b')][_0x2f0914[_0xc769('0x35')]]['uniqueid']][0x0];delete _0x353a91['blindTransfers'][_0x2f0914['uniqueid']];}}logger[_0xc769('0x37')](_0xc769('0xad'),_0x2f0914[_0xc769('0x35')],util[_0xc769('0x39')](_0x353a91[_0xc769('0x3b')][_0x2f0914[_0xc769('0x35')]],{'showHidden':![],'depth':null}));ami[_0xc769('0x44')](_0xc769('0xae'),_0x353a91[_0xc769('0x3b')][_0x2f0914[_0xc769('0x35')]]);delete _0x353a91[_0xc769('0x3b')][_0x2f0914['uniqueid']];});}}}catch(_0x1dbc02){logger[_0xc769('0x2f')]('[%s][voiceCallReport][hangup]',_0x2f0914[_0xc769('0x35')],util[_0xc769('0x39')](_0x1dbc02,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc769('0x31')]['syncAttendedTransfer']=function(_0x61d6b8){try{if(this[_0xc769('0x32')](_0x61d6b8)){logger[_0xc769('0x4b')](_0xc769('0xaf'),_0x61d6b8[_0xc769('0x35')],_0x61d6b8[_0xc769('0xb0')],_0x61d6b8[_0xc769('0xb1')]);logger[_0xc769('0x37')](_0xc769('0xb2'),_0x61d6b8['uniqueid'],util[_0xc769('0x39')](_0x61d6b8,{'showHidden':![],'depth':null}));if(this[_0xc769('0x3b')][_0x61d6b8[_0xc769('0xb3')]]){this['channels'][_0x61d6b8[_0xc769('0xb3')]]['transfercalleridnum']=_0x61d6b8['origtransferercalleridnum'];this[_0xc769('0x3b')][_0x61d6b8[_0xc769('0xb3')]]['transferconnectedlinenum']=_0x61d6b8['transfertargetcalleridnum'];if(this[_0xc769('0x3b')][_0x61d6b8[_0xc769('0xb4')]]){var _0x379272=this[_0xc769('0x3b')][_0x61d6b8[_0xc769('0xb4')]];this[_0xc769('0x3b')][_0x61d6b8[_0xc769('0xb4')]]=this[_0xc769('0x3b')][_0x61d6b8[_0xc769('0xb3')]];this[_0xc769('0x3b')][_0x61d6b8[_0xc769('0xb3')]]=_0x379272;}}else if(this[_0xc769('0x3b')][_0x61d6b8[_0xc769('0xb5')]]){this['channels'][_0x61d6b8[_0xc769('0xb5')]][_0xc769('0xb6')]=_0x61d6b8[_0xc769('0xb0')];this[_0xc769('0x3b')][_0x61d6b8[_0xc769('0xb5')]][_0xc769('0xb7')]=_0x61d6b8[_0xc769('0xb1')];if(this[_0xc769('0x3b')][_0x61d6b8[_0xc769('0xb8')]]){var _0x379272=this[_0xc769('0x3b')][_0x61d6b8[_0xc769('0xb8')]];this['channels'][_0x61d6b8[_0xc769('0xb8')]]=this[_0xc769('0x3b')][_0x61d6b8[_0xc769('0xb5')]];this[_0xc769('0x3b')][_0x61d6b8[_0xc769('0xb5')]]=_0x379272;}}if((this['channels'][_0x61d6b8[_0xc769('0xb8')]]||this[_0xc769('0x3b')][_0x61d6b8[_0xc769('0xb9')]])&&this[_0xc769('0x3b')][_0x61d6b8[_0xc769('0xb4')]]){var _0x1f3fd8=_['some']([this[_0xc769('0x3b')][_0x61d6b8[_0xc769('0xb8')]],this[_0xc769('0x3b')][_0x61d6b8[_0xc769('0xb9')]],this['channels'][_0x61d6b8[_0xc769('0xb4')]]],function(_0x423cb6){return _0x423cb6&&_0x423cb6['type']===_0xc769('0xac')&&_0x423cb6[_0xc769('0xba')];});if(_0x1f3fd8){if(this[_0xc769('0x3b')][_0x61d6b8[_0xc769('0xb8')]])this[_0xc769('0x3b')][_0x61d6b8[_0xc769('0xb8')]]['transferType']=_0xc769('0xbb');if(this['channels'][_0x61d6b8[_0xc769('0xb9')]])this[_0xc769('0x3b')][_0x61d6b8[_0xc769('0xb9')]]['transferType']=_0xc769('0xbb');this[_0xc769('0x3b')][_0x61d6b8[_0xc769('0xb4')]][_0xc769('0xbc')]='ATTENDED';}}}}catch(_0x2d7a29){logger['error'](_0xc769('0xbd'),_0x61d6b8[_0xc769('0x35')],util[_0xc769('0x39')](_0x2d7a29,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc769('0x31')][_0xc769('0x29')]=function(_0x2dff86){try{if(this[_0xc769('0x32')](_0x2dff86)){logger[_0xc769('0x4b')]('[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x2dff86['uniqueid'],_0x2dff86[_0xc769('0xbe')],_0x2dff86[_0xc769('0xbf')]);logger[_0xc769('0x37')](_0xc769('0xc0'),_0x2dff86[_0xc769('0x35')],util[_0xc769('0x39')](_0x2dff86,{'showHidden':![],'depth':null}));if(this[_0xc769('0x3b')][_0x2dff86['transfereeuniqueid']]){this[_0xc769('0x3b')][_0x2dff86['transfereeuniqueid']][_0xc769('0xb6')]=_0x2dff86[_0xc769('0xbe')];this[_0xc769('0x3b')][_0x2dff86[_0xc769('0xb3')]][_0xc769('0xb7')]=_0x2dff86[_0xc769('0xbf')];this['channels'][_0x2dff86[_0xc769('0xb3')]][_0xc769('0xbc')]=_0xc769('0xc1');this[_0xc769('0x24')]({'event':_0xc769('0xaa'),'uniqueid':_0x2dff86['transfereeuniqueid'],'context':_0x2dff86[_0xc769('0x4c')],'channel':_0x2dff86['transfererchannel']});}else{this[_0xc769('0x3b')][_0x2dff86['transfereruniqueid']][_0xc769('0xbc')]=_0xc769('0xc1');}}}catch(_0x2e23ee){logger[_0xc769('0x2f')](_0xc769('0xc2'),_0x2dff86[_0xc769('0x35')],util[_0xc769('0x39')](_0x2e23ee,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc769('0x31')][_0xc769('0x2b')]=function(_0x2d1683){try{if(this[_0xc769('0x32')](_0x2d1683)){logger[_0xc769('0x37')](_0xc769('0xc3'),_0x2d1683[_0xc769('0x35')],util[_0xc769('0x39')](_0x2d1683,{'showHidden':![],'depth':null}));if(this['channels'][_0x2d1683['uniqueid']]){if(!_['isNil'](this[_0xc769('0x3b')][_0x2d1683['uniqueid']][_0xc769('0x6a')])){this[_0xc769('0x3b')][_0x2d1683[_0xc769('0x35')]][_0xc769('0xc4')]=moment()[_0xc769('0x45')](_0xc769('0x5e'));logger[_0xc769('0x4b')](_0xc769('0xc5'),_0x2d1683[_0xc769('0x35')],this[_0xc769('0x3b')][_0x2d1683[_0xc769('0x35')]][_0xc769('0xc4')]);}}}}catch(_0x52bfab){logger[_0xc769('0x2f')](_0xc769('0xc6'),_0x2d1683['uniqueid'],util[_0xc769('0x39')](_0x52bfab,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc769('0x31')][_0xc769('0xc7')]=function(_0x1af4f9){try{if(this['isNotNull'](_0x1af4f9)){logger[_0xc769('0x37')](_0xc769('0xc8'),_0x1af4f9[_0xc769('0x35')],util[_0xc769('0x39')](_0x1af4f9,{'showHidden':![],'depth':null}));if(this[_0xc769('0x3b')][_0x1af4f9[_0xc769('0x35')]]){if(!_[_0xc769('0x7a')](this[_0xc769('0x3b')][_0x1af4f9[_0xc769('0x35')]][_0xc769('0xc4')])){this[_0xc769('0x3b')][_0x1af4f9['uniqueid']][_0xc769('0xc9')]+=moment()[_0xc769('0xca')](0x0)[_0xc769('0x6b')](this[_0xc769('0x3b')][_0x1af4f9['uniqueid']]['mohstarttime'],'seconds');logger[_0xc769('0x4b')](_0xc769('0xcb'),_0x1af4f9[_0xc769('0x35')],this['channels'][_0x1af4f9[_0xc769('0x35')]][_0xc769('0xc9')]);delete this['channels'][_0x1af4f9[_0xc769('0x35')]][_0xc769('0xc4')];}}}}catch(_0x3fba13){logger[_0xc769('0x2f')](_0xc769('0xcc'),_0x1af4f9[_0xc769('0x35')],util[_0xc769('0x39')](_0x3fba13,{'showHidden':![],'depth':null}));}};module[_0xc769('0xcd')]=VoiceCallReport;
\ No newline at end of file
+var _0x81fc=['unknown','inuse','unavailable','ringinuse','onhold','queue','agi','playback','voicemail','NO\x20ANSWER','FAILED','BUSY','redis','defaults','localhost','channels','agents','blindTransfers','coreshowchannel','syncNewExten','newexten','bind','newstate','syncNewState','varset','hangup','syncHangup','newcallerid','syncNewCallerId','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','musiconholdstop','actionCoreShowChannels','[voiceCallReport][coreshowchannels]','isUndefined','prototype','emit','isNotNull','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','inspect','merge','pick','keys','context','channel','split','exten','destconnectedlinenum','format','user:%s','user:agentconnect','accountcode','connectedlinenum','error','[%s][voiceCallReport][newcallerid]','syncNewChannel','[%s][voiceCallReport][newchannel]\x20event:','linkedid','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','disposition','toNumber','channelstate','from-sip','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','appdata','CDR(routeAlias)','applicationdata','subtract','duration','seconds','YYYY-MM-DD\x20HH:mm:ss','includes','lastapplication','lastdata','set','startsWith','cdr(','match','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','holdtime','diff','xcally-motion-preview','connectedlinename','destinationchannel','UserId','membername','name','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','replace','.wav49','monitorFilename','find','push','rec','syncVarSet','variable','mixmonitor_filename','info','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','type','xmd-queue','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview','xmcs-queue','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','parse','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','resolve','then','transferType','monitors','getSettings','stopRecordingOnTransfer','StopMixMonitor','catch','Action','finally','webbar:stopmonitors','BlindTransfer','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','some','outbound','routeid','ATTENDED','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','transfererchannel','BLIND','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','syncMusicOnHoldStop','isNil','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]','exports','bluebird','lodash','util','path','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/channel'];(function(_0x36634b,_0x499e59){var _0xf8c840=function(_0x1bbb58){while(--_0x1bbb58){_0x36634b['push'](_0x36634b['shift']());}};_0xf8c840(++_0x499e59);}(_0x81fc,0xc3));var _0xc81f=function(_0x260894,_0x6a1a36){_0x260894=_0x260894-0x0;var _0x359f16=_0x81fc[_0x260894];return _0x359f16;};'use strict';var BPromise=require(_0xc81f('0x0'));var _=require(_0xc81f('0x1'));var moment=require('moment');var util=require(_0xc81f('0x2'));var path=require(_0xc81f('0x3'));var Redis=require(_0xc81f('0x4'));var config=require(_0xc81f('0x5'));var logger=require(_0xc81f('0x6'))(_0xc81f('0x7'));var ami=require(_0xc81f('0x8'));var Channel=require(_0xc81f('0x9'));var RpcSetting=require('../rpc/setting');var statusDesc=[_0xc81f('0xa'),'not_inuse',_0xc81f('0xb'),'busy','invalid',_0xc81f('0xc'),'ringing',_0xc81f('0xd'),_0xc81f('0xe')];var applications=['set',_0xc81f('0xf'),_0xc81f('0x10'),'dial',_0xc81f('0x11'),_0xc81f('0x12')];var dispositions=[_0xc81f('0x13'),_0xc81f('0x14'),'FAILED',_0xc81f('0x13'),'NO\x20ANSWER',_0xc81f('0x13'),'ANSWERED',_0xc81f('0x15'),'FAILED',_0xc81f('0x14'),'FAILED'];var actions={};config[_0xc81f('0x16')]=_[_0xc81f('0x17')](config[_0xc81f('0x16')],{'host':_0xc81f('0x18'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function VoiceCallReport(_0xb3df95){this[_0xc81f('0x19')]=_0xb3df95['channels'];this[_0xc81f('0x1a')]=_0xb3df95[_0xc81f('0x1a')];this[_0xc81f('0x1b')]={};ami['on'](_0xc81f('0x1c'),this[_0xc81f('0x1d')]['bind'](this));ami['on'](_0xc81f('0x1e'),this[_0xc81f('0x1d')][_0xc81f('0x1f')](this));ami['on']('newchannel',this['syncNewChannel'][_0xc81f('0x1f')](this));ami['on'](_0xc81f('0x20'),this[_0xc81f('0x21')]['bind'](this));ami['on'](_0xc81f('0x22'),this['syncVarSet'][_0xc81f('0x1f')](this));ami['on'](_0xc81f('0x23'),this[_0xc81f('0x24')][_0xc81f('0x1f')](this));ami['on'](_0xc81f('0x25'),this[_0xc81f('0x26')]['bind'](this));ami['on'](_0xc81f('0x27'),this[_0xc81f('0x28')][_0xc81f('0x1f')](this));ami['on']('blindtransfer',this[_0xc81f('0x29')]['bind'](this));ami['on']('musiconholdstart',this['syncMusicOnHoldStart'][_0xc81f('0x1f')](this));ami['on'](_0xc81f('0x2a'),this['syncMusicOnHoldStop'][_0xc81f('0x1f')](this));try{logger['info']('[voiceCallReport][coreshowchannels]\x20started');ami[_0xc81f('0x2b')]();}catch(_0x377048){logger['error'](_0xc81f('0x2c'),util['inspect'](_0x377048,{'showHidden':![],'depth':null}));}}VoiceCallReport['prototype']['isNotNull']=function(_0x53fe21){return _0x53fe21!==null&&!_[_0xc81f('0x2d')](_0x53fe21);};VoiceCallReport[_0xc81f('0x2e')][_0xc81f('0x2f')]=function(_0x3219a8,_0x262749,_0xb59fbd){io['to'](_0x3219a8)[_0xc81f('0x2f')](_0x262749,_0xb59fbd);};VoiceCallReport[_0xc81f('0x2e')][_0xc81f('0x26')]=function(_0x42724f){try{if(this[_0xc81f('0x30')](_0x42724f)){logger['info'](_0xc81f('0x31'),_0x42724f[_0xc81f('0x32')],_0x42724f[_0xc81f('0x33')],_0x42724f[_0xc81f('0x34')]);logger[_0xc81f('0x35')](_0xc81f('0x36'),_0x42724f['uniqueid'],util[_0xc81f('0x37')](_0x42724f,{'showHidden':![],'depth':null}));if(_0x42724f['uniqueid']===_0x42724f['linkedid']){if(!_[_0xc81f('0x2d')](this['channels'][_0x42724f[_0xc81f('0x32')]])){_[_0xc81f('0x38')](this['channels'][_0x42724f[_0xc81f('0x32')]],_[_0xc81f('0x39')](_0x42724f,_[_0xc81f('0x3a')](this[_0xc81f('0x19')][_0x42724f[_0xc81f('0x32')]])));}}if(_0x42724f[_0xc81f('0x3b')]==='from-sip'){if(this['agents'][_0x42724f[_0xc81f('0x3c')][_0xc81f('0x3d')]('-')[0x0]]){if(_0x42724f[_0xc81f('0x3e')]=='xcally-motion-preview'){this[_0xc81f('0x1a')][_0x42724f[_0xc81f('0x3c')][_0xc81f('0x3d')]('-')[0x0]][_0xc81f('0x3f')]=_0x42724f['connectedlinenum'];this[_0xc81f('0x2f')](util[_0xc81f('0x40')](_0xc81f('0x41'),this['agents'][_0x42724f[_0xc81f('0x3c')][_0xc81f('0x3d')]('-')[0x0]]['name']),_0xc81f('0x42'),{'destaccountcode':this[_0xc81f('0x1a')][_0x42724f[_0xc81f('0x3c')][_0xc81f('0x3d')]('-')[0x0]][_0xc81f('0x43')],'destconnectedlinenum':_0x42724f[_0xc81f('0x44')]});}}}}}catch(_0x5117b6){logger[_0xc81f('0x45')](_0xc81f('0x46'),_0x42724f[_0xc81f('0x32')],util['inspect'](_0x5117b6,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc81f('0x2e')][_0xc81f('0x47')]=function(_0x828dfe){try{if(this[_0xc81f('0x30')](_0x828dfe)){logger[_0xc81f('0x35')](_0xc81f('0x48'),_0x828dfe['uniqueid'],util['inspect'](_0x828dfe,{'showHidden':![],'depth':null}));if(_0x828dfe['uniqueid']===_0x828dfe[_0xc81f('0x49')]&&_0x828dfe[_0xc81f('0x3c')]!=_0xc81f('0x4a')){if(_[_0xc81f('0x2d')](this[_0xc81f('0x19')][_0x828dfe[_0xc81f('0x32')]])){logger['info'](_0xc81f('0x4b'),_0x828dfe[_0xc81f('0x32')],_0x828dfe['context'],_0x828dfe[_0xc81f('0x3e')]);this[_0xc81f('0x19')][_0x828dfe[_0xc81f('0x32')]]=new Channel();this[_0xc81f('0x19')][_0x828dfe['uniqueid']][_0xc81f('0x4c')]=moment()[_0xc81f('0x40')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x828dfe['uniqueid']][_0xc81f('0x4d')]=dispositions[_[_0xc81f('0x4e')](_0x828dfe[_0xc81f('0x4f')])];_['merge'](this[_0xc81f('0x19')][_0x828dfe[_0xc81f('0x32')]],_['pick'](_0x828dfe,_['keys'](this[_0xc81f('0x19')][_0x828dfe[_0xc81f('0x32')]])));if(_0x828dfe[_0xc81f('0x3b')]===_0xc81f('0x50')){if(this['agents'][_0x828dfe['channel'][_0xc81f('0x3d')]('-')[0x0]]){if(_[_0xc81f('0x2d')](this[_0xc81f('0x1a')][_0x828dfe[_0xc81f('0x3c')][_0xc81f('0x3d')]('-')[0x0]][_0xc81f('0x3f')])){this['agents'][_0x828dfe[_0xc81f('0x3c')][_0xc81f('0x3d')]('-')[0x0]]['destconnectedlinenum']=_0x828dfe[_0xc81f('0x3e')];logger[_0xc81f('0x35')](_0xc81f('0x51'),_0x828dfe[_0xc81f('0x32')],util[_0xc81f('0x37')]({'destaccountcode':this['agents'][_0x828dfe[_0xc81f('0x3c')]['split']('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x828dfe['exten']},{'showHidden':![],'depth':null}));this[_0xc81f('0x2f')](util[_0xc81f('0x40')]('user:%s',this[_0xc81f('0x1a')][_0x828dfe[_0xc81f('0x3c')]['split']('-')[0x0]]['name']),_0xc81f('0x42'),{'destaccountcode':this[_0xc81f('0x1a')][_0x828dfe['channel'][_0xc81f('0x3d')]('-')[0x0]][_0xc81f('0x43')],'destconnectedlinenum':_0x828dfe[_0xc81f('0x3e')]});}}}}}}}catch(_0x2bd5e7){logger[_0xc81f('0x45')](_0xc81f('0x52'),_0x828dfe[_0xc81f('0x32')],util['inspect'](_0x2bd5e7,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc81f('0x2e')][_0xc81f('0x1d')]=function(_0x52fdcb){try{if(this[_0xc81f('0x30')](_0x52fdcb)){logger[_0xc81f('0x35')](_0xc81f('0x53'),_0x52fdcb[_0xc81f('0x32')],util[_0xc81f('0x37')](_0x52fdcb,{'showHidden':![],'depth':null}));if(_0x52fdcb[_0xc81f('0x32')]===_0x52fdcb['linkedid']&&_0x52fdcb[_0xc81f('0x3e')]!='h'&&_0x52fdcb[_0xc81f('0x3c')]!=_0xc81f('0x4a')){_0x52fdcb[_0xc81f('0x54')]=_0x52fdcb[_0xc81f('0x54')][_0xc81f('0x55')]();_0x52fdcb['applicationdata']=_0x52fdcb[_0xc81f('0x56')]&&_0x52fdcb[_0xc81f('0x56')]['startsWith'](_0xc81f('0x57'))?_0x52fdcb[_0xc81f('0x56')]:(_0x52fdcb[_0xc81f('0x56')]||_0x52fdcb[_0xc81f('0x58')])['toLowerCase']();logger['info']('[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s',_0x52fdcb[_0xc81f('0x32')],_0x52fdcb[_0xc81f('0x54')],_0x52fdcb['applicationdata']);if(_[_0xc81f('0x2d')](this[_0xc81f('0x19')][_0x52fdcb[_0xc81f('0x32')]])){this[_0xc81f('0x19')][_0x52fdcb[_0xc81f('0x32')]]=new Channel();this['channels'][_0x52fdcb['uniqueid']][_0xc81f('0x4c')]=_0x52fdcb['duration']?moment()[_0xc81f('0x59')](moment[_0xc81f('0x5a')](_0x52fdcb['duration'])[_0xc81f('0x5b')](),'seconds')[_0xc81f('0x40')](_0xc81f('0x5c')):moment()[_0xc81f('0x40')](_0xc81f('0x5c'));this['channels'][_0x52fdcb[_0xc81f('0x32')]][_0xc81f('0x4d')]='NO\x20ANSWER';}_['merge'](this['channels'][_0x52fdcb[_0xc81f('0x32')]],_[_0xc81f('0x39')](_0x52fdcb,_[_0xc81f('0x3a')](this['channels'][_0x52fdcb['uniqueid']])));if(_[_0xc81f('0x5d')](applications,_0x52fdcb[_0xc81f('0x54')])){this['channels'][_0x52fdcb[_0xc81f('0x32')]][_0xc81f('0x5e')]=_0x52fdcb[_0xc81f('0x54')];this['channels'][_0x52fdcb[_0xc81f('0x32')]][_0xc81f('0x5f')]=_0x52fdcb[_0xc81f('0x58')];if(_0x52fdcb[_0xc81f('0x54')]===_0xc81f('0x60')&&_[_0xc81f('0x61')](_0x52fdcb[_0xc81f('0x58')]['toLowerCase'](),_0xc81f('0x62'))){var _0x5d4a5e=_0x52fdcb[_0xc81f('0x58')][_0xc81f('0x3d')]('=');var _0x265360=_0x5d4a5e[0x0][_0xc81f('0x55')]()[_0xc81f('0x63')](/cdr\((.*)\)/);if(_0x265360){this['channels'][_0x52fdcb[_0xc81f('0x32')]][_0x265360[0x1]]=_0x5d4a5e[0x1];}}else if(_0x52fdcb[_0xc81f('0x54')]==='queue'){this['channels'][_0x52fdcb[_0xc81f('0x32')]][_0xc81f('0xf')]=_0x52fdcb['applicationdata'][_0xc81f('0x3d')](',')[0x0];}}}}}catch(_0xd10229){logger[_0xc81f('0x45')](_0xc81f('0x64'),_0x52fdcb['uniqueid'],util[_0xc81f('0x37')](_0xd10229,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc81f('0x2e')][_0xc81f('0x21')]=function(_0x293808){try{if(this[_0xc81f('0x30')](_0x293808)){logger['info']('[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s',_0x293808[_0xc81f('0x32')],_0x293808['linkedid'],_0x293808['calleridname'],_0x293808[_0xc81f('0x34')]);logger[_0xc81f('0x35')](_0xc81f('0x65'),_0x293808[_0xc81f('0x32')],util[_0xc81f('0x37')](_0x293808,{'showHidden':![],'depth':null}));if(_0x293808[_0xc81f('0x32')]!==_0x293808['linkedid']){if(this[_0xc81f('0x19')][_0x293808[_0xc81f('0x49')]]){if(_0x293808['channelstate']==='6'){if(!this['channels'][_0x293808['linkedid']][_0xc81f('0x66')]){var _0x2c8e32=moment();this[_0xc81f('0x19')][_0x293808[_0xc81f('0x49')]]['answered']=!![];this['channels'][_0x293808[_0xc81f('0x49')]][_0xc81f('0x67')]=_0x2c8e32[_0xc81f('0x40')](_0xc81f('0x5c'));if(this[_0xc81f('0x19')][_0x293808[_0xc81f('0x49')]][_0xc81f('0x4c')]){this[_0xc81f('0x19')][_0x293808[_0xc81f('0x49')]][_0xc81f('0x68')]=_0x2c8e32[_0xc81f('0x69')](this[_0xc81f('0x19')][_0x293808[_0xc81f('0x49')]][_0xc81f('0x4c')],_0xc81f('0x5b'));}}this['channels'][_0x293808[_0xc81f('0x49')]][_0xc81f('0x49')]=_0x293808[_0xc81f('0x32')];if(_0x293808[_0xc81f('0x34')]!==_0xc81f('0x6a')){this[_0xc81f('0x19')][_0x293808[_0xc81f('0x49')]][_0xc81f('0x44')]=_0x293808[_0xc81f('0x34')];}this[_0xc81f('0x19')][_0x293808[_0xc81f('0x49')]][_0xc81f('0x6b')]=_0x293808[_0xc81f('0x33')];this[_0xc81f('0x19')][_0x293808['linkedid']][_0xc81f('0x6c')]=_0x293808[_0xc81f('0x3c')];this[_0xc81f('0x19')][_0x293808[_0xc81f('0x49')]][_0xc81f('0x4d')]=dispositions[_[_0xc81f('0x4e')](_0x293808[_0xc81f('0x4f')])];if(this[_0xc81f('0x1a')][_0x293808[_0xc81f('0x3c')]['split']('-')[0x0]]){this[_0xc81f('0x19')][_0x293808[_0xc81f('0x49')]][_0xc81f('0x6d')]=this[_0xc81f('0x1a')][_0x293808['channel'][_0xc81f('0x3d')]('-')[0x0]]['id'];this[_0xc81f('0x19')][_0x293808['linkedid']][_0xc81f('0x6e')]=this[_0xc81f('0x1a')][_0x293808[_0xc81f('0x3c')]['split']('-')[0x0]][_0xc81f('0x6f')];}}}}else{if(this['channels'][_0x293808['uniqueid']]){if(_0x293808[_0xc81f('0x4f')]==='6'){if(this[_0xc81f('0x1a')][_0x293808['channel'][_0xc81f('0x3d')]('-')[0x0]]){this[_0xc81f('0x19')][_0x293808['uniqueid']]['UserId']=this[_0xc81f('0x1a')][_0x293808[_0xc81f('0x3c')][_0xc81f('0x3d')]('-')[0x0]]['id'];this[_0xc81f('0x19')][_0x293808[_0xc81f('0x32')]]['membername']=this[_0xc81f('0x1a')][_0x293808[_0xc81f('0x3c')][_0xc81f('0x3d')]('-')[0x0]][_0xc81f('0x6f')];}}}}if(_0x293808['channelstate']==='6'&&_0x293808[_0xc81f('0x3b')]===_0xc81f('0x50')){if(this[_0xc81f('0x1a')][_0x293808[_0xc81f('0x3c')]['split']('-')[0x0]]){this[_0xc81f('0x1a')][_0x293808[_0xc81f('0x3c')]['split']('-')[0x0]]['destconnectedlinenum']=_0x293808[_0xc81f('0x3e')];var _0x1ab7fe;if(this['channels'][_0x293808['uniqueid']])_0x1ab7fe=this[_0xc81f('0x19')][_0x293808['uniqueid']][_0xc81f('0x70')];else if(this[_0xc81f('0x19')][_0x293808[_0xc81f('0x49')]])_0x1ab7fe=this[_0xc81f('0x19')][_0x293808['linkedid']][_0xc81f('0x70')];logger[_0xc81f('0x35')](_0xc81f('0x71'),_0x293808[_0xc81f('0x32')],util['inspect']({'destaccountcode':this[_0xc81f('0x1a')][_0x293808[_0xc81f('0x3c')][_0xc81f('0x3d')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x293808[_0xc81f('0x3e')],'routealias':_0x1ab7fe},{'showHidden':![],'depth':null}));this[_0xc81f('0x2f')](util['format'](_0xc81f('0x41'),this[_0xc81f('0x1a')][_0x293808[_0xc81f('0x3c')][_0xc81f('0x3d')]('-')[0x0]][_0xc81f('0x6f')]),_0xc81f('0x42'),{'destaccountcode':this[_0xc81f('0x1a')][_0x293808[_0xc81f('0x3c')][_0xc81f('0x3d')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x293808[_0xc81f('0x3e')],'routealias':_0x1ab7fe});}}}}catch(_0x29f399){logger[_0xc81f('0x45')](_0xc81f('0x72'),_0x293808['uniqueid'],util[_0xc81f('0x37')](_0x29f399,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc81f('0x2e')][_0xc81f('0x73')]=function(_0x54064a,_0x1dac6e){try{if(this['channels'][_0x54064a]){logger['info'](_0xc81f('0x74'),_0x54064a,_0x1dac6e);this[_0xc81f('0x19')][_0x54064a][_0xc81f('0x75')]=!![];if(_[_0xc81f('0x76')](_0x1dac6e,'.wav49')){_0x1dac6e=_0x1dac6e[_0xc81f('0x77')](_0xc81f('0x78'),'.WAV');}this[_0xc81f('0x19')][_0x54064a][_0xc81f('0x79')]=_0x1dac6e;var _0x5894f3=_[_0xc81f('0x7a')](this[_0xc81f('0x19')][_0x54064a]['monitors'],{'filename':_0x1dac6e});if(_['isNil'](_0x5894f3)){this['channels'][_0x54064a]['monitors'][_0xc81f('0x7b')]({'filename':_0x1dac6e,'createdAt':moment()['format'](_0xc81f('0x5c')),'mixmonitorid':'','status':_0xc81f('0x7c')});}}}catch(_0xb20215){logger[_0xc81f('0x45')]('[%s][voiceCallReport][mixMonitorFilename]',_0x54064a,util[_0xc81f('0x37')](_0xb20215,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xc81f('0x7d')]=function(_0x52f806){try{if(this[_0xc81f('0x30')](_0x52f806)){logger[_0xc81f('0x35')]('[%s][voiceCallReport][varset]\x20event:',_0x52f806[_0xc81f('0x32')],util[_0xc81f('0x37')](_0x52f806,{'showHidden':![],'depth':null}));if(this['channels'][_0x52f806['uniqueid']]&&_0x52f806[_0xc81f('0x3c')]!=_0xc81f('0x4a')){if(this[_0xc81f('0x30')](_0x52f806[_0xc81f('0x7e')])){if(this[_0xc81f('0x30')](_0x52f806[_0xc81f('0x7e')][_0xc81f('0x7f')])){logger[_0xc81f('0x80')](_0xc81f('0x81'),_0x52f806[_0xc81f('0x32')],_0x52f806[_0xc81f('0x82')]);this[_0xc81f('0x73')](_0x52f806[_0xc81f('0x32')],_0x52f806[_0xc81f('0x82')]);}else if(this[_0xc81f('0x30')](_0x52f806[_0xc81f('0x7e')][_0xc81f('0x83')])){logger['info'](_0xc81f('0x84'),_0x52f806['uniqueid'],_0x52f806[_0xc81f('0x82')]);this[_0xc81f('0x19')][_0x52f806[_0xc81f('0x32')]][_0xc81f('0x34')]=_0x52f806['value'];}else if(this[_0xc81f('0x30')](_0x52f806[_0xc81f('0x7e')][_0xc81f('0x85')])){logger[_0xc81f('0x80')](_0xc81f('0x86'),_0x52f806[_0xc81f('0x32')],_0x52f806[_0xc81f('0x82')]);this[_0xc81f('0x19')][_0x52f806[_0xc81f('0x32')]][_0xc81f('0x87')]=_0x52f806[_0xc81f('0x82')];}else if(this[_0xc81f('0x30')](_0x52f806[_0xc81f('0x7e')][_0xc81f('0x88')])){logger['info'](_0xc81f('0x89'),_0x52f806[_0xc81f('0x32')],_0x52f806['value']);this['channels'][_0x52f806[_0xc81f('0x32')]][_0xc81f('0x8a')]=_0x52f806['value'];}else if(this[_0xc81f('0x30')](_0x52f806[_0xc81f('0x7e')][_0xc81f('0x8b')])){logger[_0xc81f('0x80')]('[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s',_0x52f806['uniqueid'],_0x52f806[_0xc81f('0x82')][_0xc81f('0x3d')](',')[0x0]);this[_0xc81f('0x19')][_0x52f806[_0xc81f('0x32')]][_0xc81f('0xf')]=_0x52f806[_0xc81f('0x82')][_0xc81f('0x3d')](',')[0x0];}else if(this['isNotNull'](_0x52f806[_0xc81f('0x7e')][_0xc81f('0x8c')])){logger[_0xc81f('0x80')](_0xc81f('0x8d'),_0x52f806['uniqueid'],_0x52f806['value']);this[_0xc81f('0x19')][_0x52f806['uniqueid']]['originatecalleridnum']=_0x52f806[_0xc81f('0x82')];}else if(this['isNotNull'](_0x52f806[_0xc81f('0x7e')]['xmd-destination'])){logger[_0xc81f('0x80')](_0xc81f('0x8e'),_0x52f806[_0xc81f('0x32')],_0x52f806[_0xc81f('0x82')]);this[_0xc81f('0x19')][_0x52f806[_0xc81f('0x32')]][_0xc81f('0x8f')]=_0x52f806[_0xc81f('0x82')];}else if(this[_0xc81f('0x30')](_0x52f806[_0xc81f('0x7e')][_0xc81f('0x90')])){logger[_0xc81f('0x80')]('[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s',_0x52f806[_0xc81f('0x32')],_0x52f806['value']);this[_0xc81f('0x19')][_0x52f806[_0xc81f('0x32')]]['calleridpreview']=_0x52f806[_0xc81f('0x82')];}else if(this[_0xc81f('0x30')](_0x52f806[_0xc81f('0x7e')][_0xc81f('0x91')])){logger[_0xc81f('0x80')]('[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s',_0x52f806[_0xc81f('0x32')],_0x52f806[_0xc81f('0x82')]);this[_0xc81f('0x19')][_0x52f806[_0xc81f('0x32')]][_0xc81f('0xf')]=_0x52f806[_0xc81f('0x82')];}else if(this[_0xc81f('0x30')](_0x52f806[_0xc81f('0x7e')][_0xc81f('0x92')])){logger[_0xc81f('0x80')](_0xc81f('0x93'),_0x52f806['uniqueid'],_0x52f806[_0xc81f('0x82')]);this[_0xc81f('0x19')][_0x52f806[_0xc81f('0x32')]][_0xc81f('0x94')]=_0x52f806['value'];}}}else if(this[_0xc81f('0x30')](_0x52f806[_0xc81f('0x7e')][_0xc81f('0x7f')])){if(_0x52f806[_0xc81f('0x82')]){var _0xa98bcd=path[_0xc81f('0x95')](_0x52f806['value'])[_0xc81f('0x6f')];logger[_0xc81f('0x80')](_0xc81f('0x81'),_0xa98bcd,_0x52f806[_0xc81f('0x82')]);this[_0xc81f('0x73')](_0xa98bcd,_0x52f806[_0xc81f('0x82')]);}}else if(this[_0xc81f('0x19')][_0x52f806[_0xc81f('0x49')]]){if(this[_0xc81f('0x30')](_0x52f806[_0xc81f('0x7e')])){if(this[_0xc81f('0x30')](_0x52f806[_0xc81f('0x7e')][_0xc81f('0x92')])){logger[_0xc81f('0x80')](_0xc81f('0x93'),_0x52f806['linkedid'],_0x52f806['value']);this[_0xc81f('0x19')][_0x52f806['linkedid']][_0xc81f('0x96')]=_0x52f806[_0xc81f('0x82')];}}}}}catch(_0x599a8b){logger[_0xc81f('0x45')](_0xc81f('0x97'),_0x52f806[_0xc81f('0x32')],util[_0xc81f('0x37')](_0x599a8b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc81f('0x2e')]['syncHangup']=function(_0xd419b9){try{if(this['isNotNull'](_0xd419b9)){logger['debug'](_0xc81f('0x98'),_0xd419b9[_0xc81f('0x32')],util[_0xc81f('0x37')](_0xd419b9,{'showHidden':![],'depth':null}));if(this[_0xc81f('0x19')][_0xd419b9[_0xc81f('0x32')]]){logger[_0xc81f('0x80')](_0xc81f('0x99'),_0xd419b9[_0xc81f('0x32')],_0xd419b9[_0xc81f('0x9a')]);var _0x298d84=moment();this[_0xc81f('0x19')][_0xd419b9[_0xc81f('0x32')]][_0xc81f('0x9b')]=_0x298d84[_0xc81f('0x40')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xc81f('0x19')][_0xd419b9['uniqueid']]['duration']=_0x298d84['diff'](this['channels'][_0xd419b9[_0xc81f('0x32')]][_0xc81f('0x4c')],_0xc81f('0x5b'));if(this[_0xc81f('0x19')][_0xd419b9[_0xc81f('0x32')]][_0xc81f('0x66')]){this[_0xc81f('0x19')][_0xd419b9[_0xc81f('0x32')]]['billableseconds']=_0x298d84[_0xc81f('0x69')](this[_0xc81f('0x19')][_0xd419b9[_0xc81f('0x32')]][_0xc81f('0x67')],_0xc81f('0x5b'));this[_0xc81f('0x19')][_0xd419b9[_0xc81f('0x32')]][_0xc81f('0x68')]=this[_0xc81f('0x19')][_0xd419b9[_0xc81f('0x32')]]['duration']-this[_0xc81f('0x19')][_0xd419b9['uniqueid']][_0xc81f('0x9c')];}if(_0xd419b9[_0xc81f('0x3b')]===_0xc81f('0x50')){if(this[_0xc81f('0x1a')][_0xd419b9[_0xc81f('0x3c')]['split']('-')[0x0]]){this[_0xc81f('0x1a')][_0xd419b9['channel']['split']('-')[0x0]]=_[_0xc81f('0x9d')](this[_0xc81f('0x1a')][_0xd419b9[_0xc81f('0x3c')]['split']('-')[0x0]],[_0xc81f('0x3f')]);logger[_0xc81f('0x35')](_0xc81f('0x9e'),_0xd419b9['uniqueid'],util['inspect']({'id':this[_0xc81f('0x1a')][_0xd419b9[_0xc81f('0x3c')][_0xc81f('0x3d')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0xd419b9['channel']['split']('-')[0x0]][_0xc81f('0x43')]},{'showHidden':![],'depth':null}));this[_0xc81f('0x2f')](util['format'](_0xc81f('0x41'),this['agents'][_0xd419b9[_0xc81f('0x3c')]['split']('-')[0x0]][_0xc81f('0x6f')]),_0xc81f('0x9f'),{'id':this[_0xc81f('0x1a')][_0xd419b9['channel']['split']('-')[0x0]]['id'],'destaccountcode':this[_0xc81f('0x1a')][_0xd419b9[_0xc81f('0x3c')][_0xc81f('0x3d')]('-')[0x0]][_0xc81f('0x43')]});}}var _0x2cbfac=this;Promise[_0xc81f('0xa0')]()[_0xc81f('0xa1')](function(){var _0x4e68f2=_0x2cbfac['channels'][_0xd419b9['uniqueid']];if(typeof _0x4e68f2[_0xc81f('0xa2')]==='undefined')return;if(_['isEmpty'](_0x4e68f2[_0xc81f('0xa3')]))return;return RpcSetting[_0xc81f('0xa4')]()[_0xc81f('0xa1')](function(_0x13525a){if(!_0x13525a[_0xc81f('0xa5')])return;return Promise[_0xc81f('0xa0')]()['then'](function(){return ami['Action']({'action':_0xc81f('0xa6'),'channel':_0x4e68f2[_0xc81f('0x3c')]})[_0xc81f('0xa7')](function(){});})[_0xc81f('0xa1')](function(){return ami[_0xc81f('0xa8')]({'action':'StopMixMonitor','channel':_0x4e68f2[_0xc81f('0x6c')]})['catch'](function(){})[_0xc81f('0xa9')](function(){var _0x357a36=_0x2cbfac[_0xc81f('0x1a')][_0x4e68f2[_0xc81f('0x6c')][_0xc81f('0x3d')]('-')[0x0]];if(!_0x357a36)return;io[_0xc81f('0x2f')](_0xc81f('0xaa'),{'agentId':_0x357a36['id'],'uniqueid':_0x4e68f2[_0xc81f('0x32')]});});});});})[_0xc81f('0xa1')](function(){if(_0xd419b9['event']===_0xc81f('0xab')){_0x2cbfac[_0xc81f('0x1b')][_0xd419b9[_0xc81f('0x32')]]=_0x2cbfac[_0xc81f('0x19')][_0xd419b9['uniqueid']];}else{if(_0x2cbfac[_0xc81f('0x19')][_0xd419b9[_0xc81f('0x32')]][_0xc81f('0x8a')]==='outbound'&&_0x2cbfac[_0xc81f('0x1b')][_0xd419b9['uniqueid']]){_0x2cbfac['channels'][_0xd419b9['uniqueid']][_0xc81f('0x32')]=[_0x2cbfac['channels'][_0xd419b9['uniqueid']]['linkedid'],_0x2cbfac['channels'][_0xd419b9[_0xc81f('0x32')]][_0xc81f('0x49')]=_0x2cbfac[_0xc81f('0x19')][_0xd419b9[_0xc81f('0x32')]]['uniqueid']][0x0];delete _0x2cbfac[_0xc81f('0x1b')][_0xd419b9['uniqueid']];}}logger[_0xc81f('0x35')](_0xc81f('0xac'),_0xd419b9[_0xc81f('0x32')],util[_0xc81f('0x37')](_0x2cbfac[_0xc81f('0x19')][_0xd419b9[_0xc81f('0x32')]],{'showHidden':![],'depth':null}));ami[_0xc81f('0x2f')](_0xc81f('0xad'),_0x2cbfac[_0xc81f('0x19')][_0xd419b9[_0xc81f('0x32')]]);delete _0x2cbfac[_0xc81f('0x19')][_0xd419b9['uniqueid']];});}}}catch(_0x56bbb1){logger[_0xc81f('0x45')](_0xc81f('0xae'),_0xd419b9[_0xc81f('0x32')],util[_0xc81f('0x37')](_0x56bbb1,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xc81f('0x28')]=function(_0x400b3b){try{if(this['isNotNull'](_0x400b3b)){logger[_0xc81f('0x80')]('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x400b3b[_0xc81f('0x32')],_0x400b3b[_0xc81f('0xaf')],_0x400b3b[_0xc81f('0xb0')]);logger[_0xc81f('0x35')](_0xc81f('0xb1'),_0x400b3b['uniqueid'],util[_0xc81f('0x37')](_0x400b3b,{'showHidden':![],'depth':null}));if(this['channels'][_0x400b3b[_0xc81f('0xb2')]]){this[_0xc81f('0x19')][_0x400b3b[_0xc81f('0xb2')]][_0xc81f('0xb3')]=_0x400b3b[_0xc81f('0xaf')];this[_0xc81f('0x19')][_0x400b3b['transfereeuniqueid']][_0xc81f('0xb4')]=_0x400b3b[_0xc81f('0xb0')];if(this[_0xc81f('0x19')][_0x400b3b[_0xc81f('0xb5')]]){var _0x257d28=this[_0xc81f('0x19')][_0x400b3b['secondtransfereruniqueid']];this[_0xc81f('0x19')][_0x400b3b['secondtransfereruniqueid']]=this['channels'][_0x400b3b[_0xc81f('0xb2')]];this[_0xc81f('0x19')][_0x400b3b[_0xc81f('0xb2')]]=_0x257d28;}}else if(this[_0xc81f('0x19')][_0x400b3b[_0xc81f('0xb6')]]){this[_0xc81f('0x19')][_0x400b3b[_0xc81f('0xb6')]][_0xc81f('0xb3')]=_0x400b3b[_0xc81f('0xaf')];this['channels'][_0x400b3b[_0xc81f('0xb6')]][_0xc81f('0xb4')]=_0x400b3b['transfertargetcalleridnum'];if(this[_0xc81f('0x19')][_0x400b3b[_0xc81f('0xb7')]]){var _0x257d28=this[_0xc81f('0x19')][_0x400b3b[_0xc81f('0xb7')]];this[_0xc81f('0x19')][_0x400b3b[_0xc81f('0xb7')]]=this[_0xc81f('0x19')][_0x400b3b[_0xc81f('0xb6')]];this[_0xc81f('0x19')][_0x400b3b['transfertargetuniqueid']]=_0x257d28;}}if((this['channels'][_0x400b3b[_0xc81f('0xb7')]]||this[_0xc81f('0x19')][_0x400b3b[_0xc81f('0xb8')]])&&this[_0xc81f('0x19')][_0x400b3b[_0xc81f('0xb5')]]){var _0x5c7bf9=_[_0xc81f('0xb9')]([this[_0xc81f('0x19')][_0x400b3b[_0xc81f('0xb7')]],this[_0xc81f('0x19')][_0x400b3b[_0xc81f('0xb8')]],this['channels'][_0x400b3b[_0xc81f('0xb5')]]],function(_0x250cc8){return _0x250cc8&&_0x250cc8[_0xc81f('0x8a')]===_0xc81f('0xba')&&_0x250cc8[_0xc81f('0xbb')];});if(_0x5c7bf9){if(this[_0xc81f('0x19')][_0x400b3b['origtransfereruniqueid']])this[_0xc81f('0x19')][_0x400b3b['origtransfereruniqueid']][_0xc81f('0xa2')]=_0xc81f('0xbc');if(this[_0xc81f('0x19')][_0x400b3b[_0xc81f('0xb8')]])this[_0xc81f('0x19')][_0x400b3b[_0xc81f('0xb8')]]['transferType']='ATTENDED';this[_0xc81f('0x19')][_0x400b3b[_0xc81f('0xb5')]][_0xc81f('0xa2')]=_0xc81f('0xbc');}}}}catch(_0x4d810b){logger[_0xc81f('0x45')]('[%s][voiceCallReport][attendedtransfer]',_0x400b3b[_0xc81f('0x32')],util[_0xc81f('0x37')](_0x4d810b,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncBlindTransfer']=function(_0x5944b9){try{if(this[_0xc81f('0x30')](_0x5944b9)){logger[_0xc81f('0x80')]('[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x5944b9[_0xc81f('0x32')],_0x5944b9[_0xc81f('0xbd')],_0x5944b9[_0xc81f('0xbe')]);logger['debug'](_0xc81f('0xbf'),_0x5944b9[_0xc81f('0x32')],util[_0xc81f('0x37')](_0x5944b9,{'showHidden':![],'depth':null}));if(this[_0xc81f('0x19')][_0x5944b9['transfereeuniqueid']]){this[_0xc81f('0x19')][_0x5944b9[_0xc81f('0xb2')]][_0xc81f('0xb3')]=_0x5944b9[_0xc81f('0xbd')];this['channels'][_0x5944b9['transfereeuniqueid']][_0xc81f('0xb4')]=_0x5944b9['extension'];this[_0xc81f('0x19')][_0x5944b9[_0xc81f('0xb2')]][_0xc81f('0xa2')]='BLIND';this[_0xc81f('0x24')]({'event':_0xc81f('0xab'),'uniqueid':_0x5944b9['transfereeuniqueid'],'context':_0x5944b9[_0xc81f('0x3b')],'channel':_0x5944b9[_0xc81f('0xc0')]});}else{this[_0xc81f('0x19')][_0x5944b9['transfereruniqueid']][_0xc81f('0xa2')]=_0xc81f('0xc1');}}}catch(_0x29f3e7){logger[_0xc81f('0x45')](_0xc81f('0xc2'),_0x5944b9['uniqueid'],util[_0xc81f('0x37')](_0x29f3e7,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc81f('0x2e')]['syncMusicOnHoldStart']=function(_0x3a15e5){try{if(this[_0xc81f('0x30')](_0x3a15e5)){logger[_0xc81f('0x35')](_0xc81f('0xc3'),_0x3a15e5[_0xc81f('0x32')],util['inspect'](_0x3a15e5,{'showHidden':![],'depth':null}));if(this['channels'][_0x3a15e5[_0xc81f('0x32')]]){if(!_['isNil'](this['channels'][_0x3a15e5[_0xc81f('0x32')]][_0xc81f('0x67')])){this[_0xc81f('0x19')][_0x3a15e5[_0xc81f('0x32')]][_0xc81f('0xc4')]=moment()[_0xc81f('0x40')](_0xc81f('0x5c'));logger['info'](_0xc81f('0xc5'),_0x3a15e5[_0xc81f('0x32')],this[_0xc81f('0x19')][_0x3a15e5[_0xc81f('0x32')]][_0xc81f('0xc4')]);}}}}catch(_0x1d782e){logger[_0xc81f('0x45')](_0xc81f('0xc6'),_0x3a15e5[_0xc81f('0x32')],util[_0xc81f('0x37')](_0x1d782e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc81f('0x2e')][_0xc81f('0xc7')]=function(_0xcd3e4){try{if(this[_0xc81f('0x30')](_0xcd3e4)){logger['debug']('[%s][voiceCallReport][musiconholdstop]\x20event:',_0xcd3e4[_0xc81f('0x32')],util[_0xc81f('0x37')](_0xcd3e4,{'showHidden':![],'depth':null}));if(this[_0xc81f('0x19')][_0xcd3e4['uniqueid']]){if(!_[_0xc81f('0xc8')](this['channels'][_0xcd3e4[_0xc81f('0x32')]][_0xc81f('0xc4')])){this[_0xc81f('0x19')][_0xcd3e4[_0xc81f('0x32')]][_0xc81f('0xc9')]+=moment()[_0xc81f('0xca')](0x0)[_0xc81f('0x69')](this['channels'][_0xcd3e4[_0xc81f('0x32')]][_0xc81f('0xc4')],_0xc81f('0x5b'));logger[_0xc81f('0x80')]('[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s',_0xcd3e4['uniqueid'],this[_0xc81f('0x19')][_0xcd3e4[_0xc81f('0x32')]][_0xc81f('0xc9')]);delete this[_0xc81f('0x19')][_0xcd3e4[_0xc81f('0x32')]][_0xc81f('0xc4')];}}}}catch(_0x138ba7){logger[_0xc81f('0x45')](_0xc81f('0xcb'),_0xcd3e4['uniqueid'],util['inspect'](_0x138ba7,{'showHidden':![],'depth':null}));}};module[_0xc81f('0xcc')]=VoiceCallReport;
\ No newline at end of file
index 0caa702..cda4b88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd51b=['[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','outboundrouteid','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','membername','memberpenalty','memberrealtime','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','diff','seconds','lastevent','complete','total','holdtime','answertime','starttime','billableseconds','sumBillable','sumDuration','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','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','[%s][voiceDialReport][newexten]\x20event:','toLowerCase','set','applicationdata','startsWith','cdr(','application','[%s][voiceDialReport][newexten]','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','socket.io-emitter','channels','outboundChannels','outbound','variables','syncDialEnd','bind','varset','syncVarSet','newexten','syncNewExten','hangup','syncHangup','prototype','isNotNull','isUndefined','emit','debug','[%s][voiceDialReport][dialbegin]\x20event:','inspect','uniqueid','merge','YYYY-MM-DD\x20HH:mm:ss','called','substring','channel','lastIndexOf','omit','event','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','applications','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','format','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][dialend]','addVariable','keys','variable','value','voice'];(function(_0x33364f,_0x446aa6){var _0x2a570a=function(_0x2b5d41){while(--_0x2b5d41){_0x33364f['push'](_0x33364f['shift']());}};_0x2a570a(++_0x446aa6);}(_0xd51b,0x128));var _0xbd51=function(_0x1a5376,_0x314880){_0x1a5376=_0x1a5376-0x0;var _0x5a48b6=_0xd51b[_0x1a5376];return _0x5a48b6;};'use strict';var _=require(_0xbd51('0x0'));var moment=require(_0xbd51('0x1'));var util=require(_0xbd51('0x2'));var Redis=require(_0xbd51('0x3'));var config=require(_0xbd51('0x4'));var logger=require(_0xbd51('0x5'))(_0xbd51('0x6'));var ami=require(_0xbd51('0x7'));config[_0xbd51('0x8')]=_[_0xbd51('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xbd51('0xa'))(new Redis(config['redis']));function VoiceDialReport(_0x3c4053){this[_0xbd51('0xb')]=_0x3c4053[_0xbd51('0xc')];this['outbound']=_0x3c4053[_0xbd51('0xd')];this['applications']={};this[_0xbd51('0xe')]={};ami['on']('dialbegin',this['syncDialBegin']['bind'](this));ami['on']('dialend',this[_0xbd51('0xf')][_0xbd51('0x10')](this));ami['on'](_0xbd51('0x11'),this[_0xbd51('0x12')]['bind'](this));ami['on'](_0xbd51('0x13'),this[_0xbd51('0x14')][_0xbd51('0x10')](this));ami['on'](_0xbd51('0x15'),this[_0xbd51('0x16')][_0xbd51('0x10')](this));}VoiceDialReport[_0xbd51('0x17')][_0xbd51('0x18')]=function(_0x1b3273){return _0x1b3273!==null&&!_[_0xbd51('0x19')](_0x1b3273);};VoiceDialReport['prototype']['emit']=function(_0x24fcf6,_0x208cf0,_0x4a1af2){io['to'](_0x24fcf6)[_0xbd51('0x1a')](_0x208cf0,_0x4a1af2);};VoiceDialReport[_0xbd51('0x17')]['syncDialBegin']=function(_0x4f5822){try{if(this[_0xbd51('0x18')](_0x4f5822)){logger[_0xbd51('0x1b')](_0xbd51('0x1c'),_0x4f5822['uniqueid'],util[_0xbd51('0x1d')](_0x4f5822,{'showHidden':![],'depth':null}));if(this[_0xbd51('0xb')][_0x4f5822[_0xbd51('0x1e')]]){_[_0xbd51('0x1f')](this[_0xbd51('0xb')][_0x4f5822['uniqueid']],{'starttime':moment()['format'](_0xbd51('0x20')),'lastevent':_0xbd51('0x21'),'interface':_0x4f5822['channel'][_0xbd51('0x22')](0x0,_0x4f5822[_0xbd51('0x23')][_0xbd51('0x24')]('-')),'membername':_0x4f5822[_0xbd51('0x23')][_0xbd51('0x22')](_0x4f5822[_0xbd51('0x23')][_0xbd51('0x24')]('/')+0x1,_0x4f5822[_0xbd51('0x23')][_0xbd51('0x24')]('-'))},_[_0xbd51('0x25')](_0x4f5822,[_0xbd51('0x26'),_0xbd51('0x27')]));logger[_0xbd51('0x28')](_0xbd51('0x29'),_0x4f5822[_0xbd51('0x1e')],this[_0xbd51('0xb')][_0x4f5822[_0xbd51('0x1e')]]['membername'],this[_0xbd51('0xb')][_0x4f5822[_0xbd51('0x1e')]][_0xbd51('0x2a')]);logger['debug'](_0xbd51('0x2b'),_0x4f5822[_0xbd51('0x1e')],util[_0xbd51('0x1d')](this[_0xbd51('0xb')][_0x4f5822[_0xbd51('0x1e')]],{'showHidden':![],'depth':null}));if(this[_0xbd51('0x2c')][_0x4f5822[_0xbd51('0x1e')]])_[_0xbd51('0x1f')](this['channels'][_0x4f5822[_0xbd51('0x1e')]],this[_0xbd51('0x2c')][_0x4f5822[_0xbd51('0x1e')]]);this[_0xbd51('0x1a')](_0xbd51('0x2d'),_0xbd51('0x2e'),this[_0xbd51('0xb')][_0x4f5822[_0xbd51('0x1e')]]);logger['debug'](_0xbd51('0x2f'),_0x4f5822[_0xbd51('0x1e')],util[_0xbd51('0x1d')](this['channels'][_0x4f5822[_0xbd51('0x1e')]],{'showHidden':![],'depth':null}));ami[_0xbd51('0x1a')](_0xbd51('0x30'),this[_0xbd51('0xb')][_0x4f5822[_0xbd51('0x1e')]]);}}}catch(_0x396598){logger[_0xbd51('0x31')](_0xbd51('0x32'),_0x4f5822[_0xbd51('0x1e')],util[_0xbd51('0x1d')](_0x396598,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xbd51('0xf')]=function(_0x29cd54){try{if(this[_0xbd51('0x18')](_0x29cd54)){logger['debug'](_0xbd51('0x33'),_0x29cd54['uniqueid'],util[_0xbd51('0x1d')](_0x29cd54,{'showHidden':![],'depth':null}));if(this['channels'][_0x29cd54[_0xbd51('0x1e')]]){this[_0xbd51('0xb')][_0x29cd54[_0xbd51('0x1e')]][_0xbd51('0x34')]=_0x29cd54['dialstatus'];if(_0x29cd54[_0xbd51('0x34')]===_0xbd51('0x35')){this['channels'][_0x29cd54[_0xbd51('0x1e')]][_0xbd51('0x36')]=_0x29cd54[_0xbd51('0x36')];this[_0xbd51('0xb')][_0x29cd54[_0xbd51('0x1e')]]['connectedlinename']=_0x29cd54['connectedlinename'];this[_0xbd51('0xb')][_0x29cd54[_0xbd51('0x1e')]]['answertime']=moment()[_0xbd51('0x37')](_0xbd51('0x20'));this[_0xbd51('0xb')][_0x29cd54[_0xbd51('0x1e')]]['lastevent']='connect';logger[_0xbd51('0x28')](_0xbd51('0x38'),_0x29cd54[_0xbd51('0x1e')],_0x29cd54[_0xbd51('0x23')]['substring'](_0x29cd54[_0xbd51('0x23')][_0xbd51('0x24')]('/')+0x1,_0x29cd54['channel'][_0xbd51('0x24')]('-')));logger[_0xbd51('0x1b')]('[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:',_0x29cd54[_0xbd51('0x1e')],util[_0xbd51('0x1d')](this[_0xbd51('0xb')][_0x29cd54['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xbd51('0x1a')]('custom:dialconnect',this[_0xbd51('0xb')][_0x29cd54['uniqueid']]);}logger[_0xbd51('0x1b')](_0xbd51('0x39'),_0x29cd54[_0xbd51('0x1e')],util[_0xbd51('0x1d')](this[_0xbd51('0xb')][_0x29cd54['uniqueid']],{'showHidden':![],'depth':null}));this[_0xbd51('0x1a')](_0xbd51('0x2d'),_0xbd51('0x2e'),this['channels'][_0x29cd54['uniqueid']]);}}}catch(_0x904941){logger['error'](_0xbd51('0x3a'),_0x29cd54[_0xbd51('0x1e')],util['inspect'](_0x904941,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xbd51('0x17')][_0xbd51('0x12')]=function(_0x18d01a){try{if(this[_0xbd51('0x18')](_0x18d01a)){logger[_0xbd51('0x1b')]('[%s][voiceDialReport][varset]\x20event:',_0x18d01a[_0xbd51('0x1e')],util[_0xbd51('0x1d')](_0x18d01a,{'showHidden':![],'depth':null}));this[_0xbd51('0x3b')](_0x18d01a[_0xbd51('0x1e')],_[_0xbd51('0x3c')](_0x18d01a[_0xbd51('0x3d')])[0x0],_0x18d01a['value']);if(this['isNotNull'](_0x18d01a[_0xbd51('0x3d')])&&this[_0xbd51('0x18')](_0x18d01a[_0xbd51('0x3d')]['outboundrouteid'])){if(_['isUndefined'](this['channels'][_0x18d01a[_0xbd51('0x1e')]])){this[_0xbd51('0xb')][_0x18d01a[_0xbd51('0x1e')]]={'routeId':_0x18d01a[_0xbd51('0x3e')],'variables':this['variables'][_0x18d01a[_0xbd51('0x1e')]],'motionChannel':_0xbd51('0x3f')};logger[_0xbd51('0x28')](_0xbd51('0x40'),_0x18d01a['uniqueid'],_0x18d01a[_0xbd51('0x3d')][_0xbd51('0x41')],_['keys'](_0x18d01a['variable'])[0x0],_0x18d01a[_0xbd51('0x3e')]);logger[_0xbd51('0x1b')](_0xbd51('0x42'),_0x18d01a['uniqueid'],util[_0xbd51('0x1d')](this[_0xbd51('0xb')][_0x18d01a['uniqueid']],{'showHidden':![],'depth':null}));this[_0xbd51('0x1a')]('voice:outbound','voice_outbound_channel:save',this[_0xbd51('0xb')][_0x18d01a['uniqueid']]);}}}}catch(_0x55f400){logger['error'](_0xbd51('0x43'),_0x18d01a[_0xbd51('0x1e')],util['inspect'](_0x55f400,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xbd51('0x17')][_0xbd51('0x3b')]=function(_0x29c5aa,_0x3155f4,_0x18519b){var _0x33d269=['rtpaudioqos','rtpaudioqosbridged',_0xbd51('0x44'),_0xbd51('0x45'),_0xbd51('0x46'),_0xbd51('0x47'),_0xbd51('0x48'),_0xbd51('0x49'),_0xbd51('0x4a'),_0xbd51('0x4b'),_0xbd51('0x4c'),_0xbd51('0x4d'),_0xbd51('0x4e'),_0xbd51('0x4f'),_0xbd51('0x50'),_0xbd51('0x51'),_0xbd51('0x52'),_0xbd51('0x53'),_0xbd51('0x54')];if(!_['isNil'](_0x3155f4)&&!_['includes'](_0x33d269,_0x3155f4)){if(_[_0xbd51('0x19')](this[_0xbd51('0xe')][_0x29c5aa])){this[_0xbd51('0xe')][_0x29c5aa]={};}this[_0xbd51('0xe')][_0x29c5aa][_0x3155f4]=_0x18519b;}};VoiceDialReport[_0xbd51('0x17')][_0xbd51('0x16')]=function(_0x3c200e){try{if(this['isNotNull'](_0x3c200e)){logger['debug'](_0xbd51('0x55'),_0x3c200e[_0xbd51('0x1e')],util['inspect'](_0x3c200e,{'showHidden':![],'depth':null}));if(this[_0xbd51('0xb')][_0x3c200e[_0xbd51('0x1e')]]){logger['info'](_0xbd51('0x56'),_0x3c200e[_0xbd51('0x1e')],_0x3c200e[_0xbd51('0x57')]);this[_0xbd51('0xb')][_0x3c200e['uniqueid']][_0xbd51('0x58')]=moment()[_0xbd51('0x37')](_0xbd51('0x20'));this[_0xbd51('0xb')][_0x3c200e[_0xbd51('0x1e')]][_0xbd51('0x59')]=moment(this[_0xbd51('0xb')][_0x3c200e['uniqueid']][_0xbd51('0x58')])[_0xbd51('0x5a')](this[_0xbd51('0xb')][_0x3c200e[_0xbd51('0x1e')]]['starttime'],_0xbd51('0x5b'));this[_0xbd51('0xb')][_0x3c200e[_0xbd51('0x1e')]][_0xbd51('0x5c')]=_0xbd51('0x5d');this[_0xbd51('0xd')][_0xbd51('0x5e')]+=0x1;if(this['channels'][_0x3c200e[_0xbd51('0x1e')]]['answertime']){this[_0xbd51('0xd')]['answered']+=0x1;this[_0xbd51('0xb')][_0x3c200e['uniqueid']][_0xbd51('0x5f')]=moment(this[_0xbd51('0xb')][_0x3c200e[_0xbd51('0x1e')]][_0xbd51('0x60')])[_0xbd51('0x5a')](this['channels'][_0x3c200e[_0xbd51('0x1e')]][_0xbd51('0x61')],_0xbd51('0x5b'));this['channels'][_0x3c200e[_0xbd51('0x1e')]][_0xbd51('0x62')]=moment(this['channels'][_0x3c200e['uniqueid']][_0xbd51('0x58')])[_0xbd51('0x5a')](this[_0xbd51('0xb')][_0x3c200e[_0xbd51('0x1e')]][_0xbd51('0x60')],_0xbd51('0x5b'));this[_0xbd51('0xd')]['sumHoldTime']+=this[_0xbd51('0xb')][_0x3c200e['uniqueid']]['holdtime']||0x0;this[_0xbd51('0xd')][_0xbd51('0x63')]+=this['channels'][_0x3c200e['uniqueid']][_0xbd51('0x62')];}this['outbound'][_0xbd51('0x64')]+=this[_0xbd51('0xb')][_0x3c200e['uniqueid']][_0xbd51('0x59')];logger[_0xbd51('0x1b')]('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0x3c200e['uniqueid'],util[_0xbd51('0x1d')](this[_0xbd51('0xb')][_0x3c200e[_0xbd51('0x1e')]],{'showHidden':![],'depth':null}));ami[_0xbd51('0x1a')](_0xbd51('0x65'),this[_0xbd51('0xb')][_0x3c200e['uniqueid']]);logger[_0xbd51('0x1b')](_0xbd51('0x66'),_0x3c200e['uniqueid'],util[_0xbd51('0x1d')](this[_0xbd51('0xb')][_0x3c200e['uniqueid']],{'showHidden':![],'depth':null}));ami['emit'](_0xbd51('0x67'),this[_0xbd51('0xb')][_0x3c200e['uniqueid']]);logger[_0xbd51('0x1b')](_0xbd51('0x68'),_0x3c200e['uniqueid'],util[_0xbd51('0x1d')](this['channels'][_0x3c200e[_0xbd51('0x1e')]],{'showHidden':![],'depth':null}));this['emit'](_0xbd51('0x2d'),_0xbd51('0x69'),this[_0xbd51('0xd')]);logger[_0xbd51('0x28')](_0xbd51('0x6a'),JSON[_0xbd51('0x6b')](this[_0xbd51('0xb')][_0x3c200e[_0xbd51('0x1e')]]));logger['debug'](_0xbd51('0x6c'),_0x3c200e['uniqueid'],util[_0xbd51('0x1d')](this[_0xbd51('0xb')][_0x3c200e[_0xbd51('0x1e')]],{'showHidden':![],'depth':null}));this[_0xbd51('0x1a')]('voice:outbound',_0xbd51('0x6d'),this['channels'][_0x3c200e['uniqueid']]);delete this[_0xbd51('0xb')][_0x3c200e[_0xbd51('0x1e')]];}else if(this[_0xbd51('0xb')][_0x3c200e['linkedid']]){this[_0xbd51('0xb')][_0x3c200e[_0xbd51('0x6e')]][_0xbd51('0x1e')]=this[_0xbd51('0xb')][_0x3c200e[_0xbd51('0x6e')]]['destuniqueid'];}if(this[_0xbd51('0xe')][_0x3c200e[_0xbd51('0x1e')]]){delete this[_0xbd51('0xe')][_0x3c200e[_0xbd51('0x1e')]];}}}catch(_0x16553f){logger[_0xbd51('0x31')]('[%s][voiceDialReport][hangup]',_0x3c200e[_0xbd51('0x1e')],util[_0xbd51('0x1d')](_0x16553f,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xbd51('0x17')]['syncNewExten']=function(_0x453428){try{if(this[_0xbd51('0x18')](_0x453428)){logger[_0xbd51('0x1b')](_0xbd51('0x6f'),_0x453428[_0xbd51('0x1e')],util['inspect'](_0x453428,{'showHidden':![],'depth':null}));if(_0x453428['application'][_0xbd51('0x70')]()===_0xbd51('0x71')){_0x453428['applicationdata']=(_0x453428['appdata']||_0x453428[_0xbd51('0x72')])[_0xbd51('0x70')]();if(_[_0xbd51('0x73')](_0x453428['applicationdata'],_0xbd51('0x74'))){if(_[_0xbd51('0x19')](this[_0xbd51('0x2c')][_0x453428['uniqueid']]))this['applications'][_0x453428[_0xbd51('0x1e')]]={};logger[_0xbd51('0x28')]('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x453428['uniqueid'],_0x453428[_0xbd51('0x75')],_0x453428[_0xbd51('0x72')]);var _0x18ab4e=_0x453428[_0xbd51('0x72')]['split']('=');var _0xd891ca=_0x18ab4e[0x0]['match'](/cdr\((.*)\)/);if(_0xd891ca)this[_0xbd51('0x2c')][_0x453428[_0xbd51('0x1e')]][_0xd891ca[0x1]]=_0x18ab4e[0x1];}}}}catch(_0x364250){logger[_0xbd51('0x31')](_0xbd51('0x76'),_0x453428[_0xbd51('0x1e')],util[_0xbd51('0x1d')](_0x364250,{'showHidden':![],'depth':null}));}};module[_0xbd51('0x77')]=VoiceDialReport;
\ No newline at end of file
+var _0x7d9b=['[%s][voiceDialReport][newexten]\x20event:','application','set','applicationdata','appdata','toLowerCase','startsWith','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','match','lodash','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','outboundChannels','outbound','applications','variables','dialbegin','syncDialBegin','bind','dialend','syncDialEnd','varset','syncVarSet','newexten','syncNewExten','hangup','syncHangup','prototype','isNotNull','isUndefined','emit','[%s][voiceDialReport][dialbegin]\x20event:','inspect','channels','uniqueid','called','channel','substring','lastIndexOf','event','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','interface','debug','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','merge','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','error','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','format','lastevent','connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','outboundrouteid','value','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','memberdynamic','memberinterface','memberlastcall','membername','memberpenalty','memberrealtime','isNil','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','complete','answered','starttime','seconds','billableseconds','diff','sumHoldTime','holdtime','sumBillable','[%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','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','linkedid'];(function(_0x1a47f5,_0x5252b9){var _0x33e8ae=function(_0x2e0baf){while(--_0x2e0baf){_0x1a47f5['push'](_0x1a47f5['shift']());}};_0x33e8ae(++_0x5252b9);}(_0x7d9b,0x1de));var _0xb7d9=function(_0x58a50e,_0x12a952){_0x58a50e=_0x58a50e-0x0;var _0x3b1e57=_0x7d9b[_0x58a50e];return _0x3b1e57;};'use strict';var _=require(_0xb7d9('0x0'));var moment=require('moment');var util=require(_0xb7d9('0x1'));var Redis=require(_0xb7d9('0x2'));var config=require(_0xb7d9('0x3'));var logger=require(_0xb7d9('0x4'))(_0xb7d9('0x5'));var ami=require(_0xb7d9('0x6'));config[_0xb7d9('0x7')]=_[_0xb7d9('0x8')](config[_0xb7d9('0x7')],{'host':_0xb7d9('0x9'),'port':0x18eb});var io=require(_0xb7d9('0xa'))(new Redis(config['redis']));function VoiceDialReport(_0x30cab4){this['channels']=_0x30cab4[_0xb7d9('0xb')];this['outbound']=_0x30cab4[_0xb7d9('0xc')];this[_0xb7d9('0xd')]={};this[_0xb7d9('0xe')]={};ami['on'](_0xb7d9('0xf'),this[_0xb7d9('0x10')][_0xb7d9('0x11')](this));ami['on'](_0xb7d9('0x12'),this[_0xb7d9('0x13')]['bind'](this));ami['on'](_0xb7d9('0x14'),this[_0xb7d9('0x15')][_0xb7d9('0x11')](this));ami['on'](_0xb7d9('0x16'),this[_0xb7d9('0x17')]['bind'](this));ami['on'](_0xb7d9('0x18'),this[_0xb7d9('0x19')][_0xb7d9('0x11')](this));}VoiceDialReport[_0xb7d9('0x1a')][_0xb7d9('0x1b')]=function(_0x435ab8){return _0x435ab8!==null&&!_[_0xb7d9('0x1c')](_0x435ab8);};VoiceDialReport['prototype'][_0xb7d9('0x1d')]=function(_0x5f2355,_0x250481,_0x43582c){io['to'](_0x5f2355)[_0xb7d9('0x1d')](_0x250481,_0x43582c);};VoiceDialReport['prototype'][_0xb7d9('0x10')]=function(_0x4bac62){try{if(this[_0xb7d9('0x1b')](_0x4bac62)){logger['debug'](_0xb7d9('0x1e'),_0x4bac62['uniqueid'],util[_0xb7d9('0x1f')](_0x4bac62,{'showHidden':![],'depth':null}));if(this[_0xb7d9('0x20')][_0x4bac62['uniqueid']]){_['merge'](this['channels'][_0x4bac62[_0xb7d9('0x21')]],{'starttime':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':_0xb7d9('0x22'),'interface':_0x4bac62[_0xb7d9('0x23')][_0xb7d9('0x24')](0x0,_0x4bac62[_0xb7d9('0x23')][_0xb7d9('0x25')]('-')),'membername':_0x4bac62['channel'][_0xb7d9('0x24')](_0x4bac62[_0xb7d9('0x23')]['lastIndexOf']('/')+0x1,_0x4bac62[_0xb7d9('0x23')][_0xb7d9('0x25')]('-'))},_['omit'](_0x4bac62,[_0xb7d9('0x26'),_0xb7d9('0x27')]));logger[_0xb7d9('0x28')](_0xb7d9('0x29'),_0x4bac62[_0xb7d9('0x21')],this[_0xb7d9('0x20')][_0x4bac62[_0xb7d9('0x21')]]['membername'],this[_0xb7d9('0x20')][_0x4bac62[_0xb7d9('0x21')]][_0xb7d9('0x2a')]);logger[_0xb7d9('0x2b')](_0xb7d9('0x2c'),_0x4bac62['uniqueid'],util['inspect'](this[_0xb7d9('0x20')][_0x4bac62[_0xb7d9('0x21')]],{'showHidden':![],'depth':null}));if(this[_0xb7d9('0xd')][_0x4bac62[_0xb7d9('0x21')]])_[_0xb7d9('0x2d')](this[_0xb7d9('0x20')][_0x4bac62[_0xb7d9('0x21')]],this[_0xb7d9('0xd')][_0x4bac62[_0xb7d9('0x21')]]);this[_0xb7d9('0x1d')](_0xb7d9('0x2e'),_0xb7d9('0x2f'),this[_0xb7d9('0x20')][_0x4bac62[_0xb7d9('0x21')]]);logger[_0xb7d9('0x2b')](_0xb7d9('0x30'),_0x4bac62[_0xb7d9('0x21')],util['inspect'](this[_0xb7d9('0x20')][_0x4bac62[_0xb7d9('0x21')]],{'showHidden':![],'depth':null}));ami['emit'](_0xb7d9('0x31'),this[_0xb7d9('0x20')][_0x4bac62[_0xb7d9('0x21')]]);}}}catch(_0x3cc7d1){logger[_0xb7d9('0x32')]('[%s][voiceDialReport][dialbegin]',_0x4bac62['uniqueid'],util[_0xb7d9('0x1f')](_0x3cc7d1,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb7d9('0x1a')][_0xb7d9('0x13')]=function(_0x341239){try{if(this[_0xb7d9('0x1b')](_0x341239)){logger[_0xb7d9('0x2b')](_0xb7d9('0x33'),_0x341239[_0xb7d9('0x21')],util[_0xb7d9('0x1f')](_0x341239,{'showHidden':![],'depth':null}));if(this[_0xb7d9('0x20')][_0x341239['uniqueid']]){this[_0xb7d9('0x20')][_0x341239['uniqueid']][_0xb7d9('0x34')]=_0x341239[_0xb7d9('0x34')];if(_0x341239[_0xb7d9('0x34')]===_0xb7d9('0x35')){this[_0xb7d9('0x20')][_0x341239[_0xb7d9('0x21')]][_0xb7d9('0x36')]=_0x341239[_0xb7d9('0x36')];this[_0xb7d9('0x20')][_0x341239[_0xb7d9('0x21')]][_0xb7d9('0x37')]=_0x341239[_0xb7d9('0x37')];this[_0xb7d9('0x20')][_0x341239[_0xb7d9('0x21')]][_0xb7d9('0x38')]=moment()[_0xb7d9('0x39')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xb7d9('0x20')][_0x341239[_0xb7d9('0x21')]][_0xb7d9('0x3a')]=_0xb7d9('0x3b');logger['info']('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0x341239[_0xb7d9('0x21')],_0x341239[_0xb7d9('0x23')]['substring'](_0x341239[_0xb7d9('0x23')][_0xb7d9('0x25')]('/')+0x1,_0x341239[_0xb7d9('0x23')][_0xb7d9('0x25')]('-')));logger[_0xb7d9('0x2b')](_0xb7d9('0x3c'),_0x341239['uniqueid'],util[_0xb7d9('0x1f')](this[_0xb7d9('0x20')][_0x341239[_0xb7d9('0x21')]],{'showHidden':![],'depth':null}));ami[_0xb7d9('0x1d')]('custom:dialconnect',this[_0xb7d9('0x20')][_0x341239[_0xb7d9('0x21')]]);}logger[_0xb7d9('0x2b')]('[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:',_0x341239[_0xb7d9('0x21')],util['inspect'](this[_0xb7d9('0x20')][_0x341239['uniqueid']],{'showHidden':![],'depth':null}));this[_0xb7d9('0x1d')]('voice:outbound',_0xb7d9('0x2f'),this[_0xb7d9('0x20')][_0x341239[_0xb7d9('0x21')]]);}}}catch(_0x4873bb){logger['error']('[%s][voiceDialReport][dialend]',_0x341239[_0xb7d9('0x21')],util[_0xb7d9('0x1f')](_0x4873bb,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb7d9('0x1a')][_0xb7d9('0x15')]=function(_0x297c3e){try{if(this[_0xb7d9('0x1b')](_0x297c3e)){logger[_0xb7d9('0x2b')](_0xb7d9('0x3d'),_0x297c3e[_0xb7d9('0x21')],util[_0xb7d9('0x1f')](_0x297c3e,{'showHidden':![],'depth':null}));this[_0xb7d9('0x3e')](_0x297c3e[_0xb7d9('0x21')],_[_0xb7d9('0x3f')](_0x297c3e[_0xb7d9('0x40')])[0x0],_0x297c3e['value']);if(this[_0xb7d9('0x1b')](_0x297c3e[_0xb7d9('0x40')])&&this['isNotNull'](_0x297c3e[_0xb7d9('0x40')][_0xb7d9('0x41')])){if(_['isUndefined'](this['channels'][_0x297c3e[_0xb7d9('0x21')]])){this[_0xb7d9('0x20')][_0x297c3e['uniqueid']]={'routeId':_0x297c3e[_0xb7d9('0x42')],'variables':this[_0xb7d9('0xe')][_0x297c3e[_0xb7d9('0x21')]]};logger['info'](_0xb7d9('0x43'),_0x297c3e['uniqueid'],_0x297c3e['variable'][_0xb7d9('0x41')],_[_0xb7d9('0x3f')](_0x297c3e[_0xb7d9('0x40')])[0x0],_0x297c3e['value']);logger[_0xb7d9('0x2b')]('[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:',_0x297c3e[_0xb7d9('0x21')],util[_0xb7d9('0x1f')](this[_0xb7d9('0x20')][_0x297c3e['uniqueid']],{'showHidden':![],'depth':null}));this[_0xb7d9('0x1d')]('voice:outbound',_0xb7d9('0x2f'),this['channels'][_0x297c3e[_0xb7d9('0x21')]]);}}}}catch(_0x2b5c6f){logger[_0xb7d9('0x32')](_0xb7d9('0x44'),_0x297c3e[_0xb7d9('0x21')],util[_0xb7d9('0x1f')](_0x2b5c6f,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb7d9('0x1a')][_0xb7d9('0x3e')]=function(_0x3049d3,_0x8d29e0,_0x470a1c){var _0x2756a0=['rtpaudioqos',_0xb7d9('0x45'),'rtpaudioqosjitter',_0xb7d9('0x46'),'rtpaudioqosloss','rtpaudioqoslossbridged',_0xb7d9('0x47'),_0xb7d9('0x48'),_0xb7d9('0x49'),_0xb7d9('0x4a'),_0xb7d9('0x4b'),_0xb7d9('0x4c'),'membercalls',_0xb7d9('0x4d'),_0xb7d9('0x4e'),_0xb7d9('0x4f'),_0xb7d9('0x50'),_0xb7d9('0x51'),_0xb7d9('0x52')];if(!_[_0xb7d9('0x53')](_0x8d29e0)&&!_['includes'](_0x2756a0,_0x8d29e0)){if(_[_0xb7d9('0x1c')](this['variables'][_0x3049d3])){this[_0xb7d9('0xe')][_0x3049d3]={};}this[_0xb7d9('0xe')][_0x3049d3][_0x8d29e0]=_0x470a1c;}};VoiceDialReport[_0xb7d9('0x1a')]['syncHangup']=function(_0x1e2516){try{if(this[_0xb7d9('0x1b')](_0x1e2516)){logger[_0xb7d9('0x2b')](_0xb7d9('0x54'),_0x1e2516[_0xb7d9('0x21')],util[_0xb7d9('0x1f')](_0x1e2516,{'showHidden':![],'depth':null}));if(this['channels'][_0x1e2516['uniqueid']]){logger[_0xb7d9('0x28')](_0xb7d9('0x55'),_0x1e2516[_0xb7d9('0x21')],_0x1e2516[_0xb7d9('0x56')]);this[_0xb7d9('0x20')][_0x1e2516[_0xb7d9('0x21')]][_0xb7d9('0x57')]=moment()[_0xb7d9('0x39')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xb7d9('0x20')][_0x1e2516['uniqueid']][_0xb7d9('0x58')]=moment(this['channels'][_0x1e2516[_0xb7d9('0x21')]][_0xb7d9('0x57')])['diff'](this['channels'][_0x1e2516[_0xb7d9('0x21')]]['starttime'],'seconds');this['channels'][_0x1e2516[_0xb7d9('0x21')]]['lastevent']=_0xb7d9('0x59');this[_0xb7d9('0xc')]['total']+=0x1;if(this[_0xb7d9('0x20')][_0x1e2516[_0xb7d9('0x21')]]['answertime']){this[_0xb7d9('0xc')][_0xb7d9('0x5a')]+=0x1;this['channels'][_0x1e2516[_0xb7d9('0x21')]]['holdtime']=moment(this[_0xb7d9('0x20')][_0x1e2516[_0xb7d9('0x21')]][_0xb7d9('0x38')])['diff'](this[_0xb7d9('0x20')][_0x1e2516[_0xb7d9('0x21')]][_0xb7d9('0x5b')],_0xb7d9('0x5c'));this[_0xb7d9('0x20')][_0x1e2516[_0xb7d9('0x21')]][_0xb7d9('0x5d')]=moment(this[_0xb7d9('0x20')][_0x1e2516[_0xb7d9('0x21')]][_0xb7d9('0x57')])[_0xb7d9('0x5e')](this[_0xb7d9('0x20')][_0x1e2516[_0xb7d9('0x21')]][_0xb7d9('0x38')],_0xb7d9('0x5c'));this['outbound'][_0xb7d9('0x5f')]+=this[_0xb7d9('0x20')][_0x1e2516[_0xb7d9('0x21')]][_0xb7d9('0x60')]||0x0;this['outbound'][_0xb7d9('0x61')]+=this[_0xb7d9('0x20')][_0x1e2516['uniqueid']][_0xb7d9('0x5d')];}this[_0xb7d9('0xc')]['sumDuration']+=this[_0xb7d9('0x20')][_0x1e2516[_0xb7d9('0x21')]]['duration'];logger['debug'](_0xb7d9('0x62'),_0x1e2516[_0xb7d9('0x21')],util['inspect'](this['channels'][_0x1e2516[_0xb7d9('0x21')]],{'showHidden':![],'depth':null}));ami[_0xb7d9('0x1d')](_0xb7d9('0x63'),this[_0xb7d9('0x20')][_0x1e2516['uniqueid']]);logger['debug'](_0xb7d9('0x64'),_0x1e2516['uniqueid'],util[_0xb7d9('0x1f')](this[_0xb7d9('0x20')][_0x1e2516[_0xb7d9('0x21')]],{'showHidden':![],'depth':null}));ami[_0xb7d9('0x1d')](_0xb7d9('0x65'),this[_0xb7d9('0x20')][_0x1e2516[_0xb7d9('0x21')]]);logger[_0xb7d9('0x2b')](_0xb7d9('0x66'),_0x1e2516[_0xb7d9('0x21')],util[_0xb7d9('0x1f')](this[_0xb7d9('0x20')][_0x1e2516[_0xb7d9('0x21')]],{'showHidden':![],'depth':null}));this[_0xb7d9('0x1d')](_0xb7d9('0x2e'),_0xb7d9('0x67'),this[_0xb7d9('0xc')]);logger['info']('[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event',JSON[_0xb7d9('0x68')](this[_0xb7d9('0x20')][_0x1e2516[_0xb7d9('0x21')]]));logger[_0xb7d9('0x2b')](_0xb7d9('0x69'),_0x1e2516[_0xb7d9('0x21')],util[_0xb7d9('0x1f')](this[_0xb7d9('0x20')][_0x1e2516[_0xb7d9('0x21')]],{'showHidden':![],'depth':null}));this[_0xb7d9('0x1d')](_0xb7d9('0x2e'),'voice_outbound_channel:remove',this[_0xb7d9('0x20')][_0x1e2516[_0xb7d9('0x21')]]);delete this['channels'][_0x1e2516['uniqueid']];}else if(this[_0xb7d9('0x20')][_0x1e2516[_0xb7d9('0x6a')]]){this[_0xb7d9('0x20')][_0x1e2516['linkedid']][_0xb7d9('0x21')]=this['channels'][_0x1e2516[_0xb7d9('0x6a')]]['destuniqueid'];}if(this['variables'][_0x1e2516[_0xb7d9('0x21')]]){delete this[_0xb7d9('0xe')][_0x1e2516['uniqueid']];}}}catch(_0xca151d){logger[_0xb7d9('0x32')]('[%s][voiceDialReport][hangup]',_0x1e2516['uniqueid'],util[_0xb7d9('0x1f')](_0xca151d,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb7d9('0x1a')][_0xb7d9('0x17')]=function(_0x2dae36){try{if(this[_0xb7d9('0x1b')](_0x2dae36)){logger[_0xb7d9('0x2b')](_0xb7d9('0x6b'),_0x2dae36[_0xb7d9('0x21')],util['inspect'](_0x2dae36,{'showHidden':![],'depth':null}));if(_0x2dae36[_0xb7d9('0x6c')]['toLowerCase']()===_0xb7d9('0x6d')){_0x2dae36[_0xb7d9('0x6e')]=(_0x2dae36[_0xb7d9('0x6f')]||_0x2dae36[_0xb7d9('0x6e')])[_0xb7d9('0x70')]();if(_[_0xb7d9('0x71')](_0x2dae36[_0xb7d9('0x6e')],_0xb7d9('0x72'))){if(_[_0xb7d9('0x1c')](this[_0xb7d9('0xd')][_0x2dae36[_0xb7d9('0x21')]]))this[_0xb7d9('0xd')][_0x2dae36['uniqueid']]={};logger[_0xb7d9('0x28')](_0xb7d9('0x73'),_0x2dae36['uniqueid'],_0x2dae36['application'],_0x2dae36[_0xb7d9('0x6e')]);var _0x4773de=_0x2dae36[_0xb7d9('0x6e')]['split']('=');var _0x3790ba=_0x4773de[0x0][_0xb7d9('0x74')](/cdr\((.*)\)/);if(_0x3790ba)this['applications'][_0x2dae36['uniqueid']][_0x3790ba[0x1]]=_0x4773de[0x1];}}}}catch(_0x4bbeee){logger[_0xb7d9('0x32')]('[%s][voiceDialReport][newexten]',_0x2dae36[_0xb7d9('0x21')],util['inspect'](_0x4bbeee,{'showHidden':![],'depth':null}));}};module['exports']=VoiceDialReport;
\ No newline at end of file
index cacb1de..9365611 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc423=['queuecallerabandon','queuecallerabandonAt','queuecallerexitreason','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','queuecallerleave','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentconnect]','[%s][voiceQueueReport][agentcomplete]','assigned','membername','queuecallerexit','queuecallerexitAt','transfer','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','channel','toLowerCase','local/','linkedid','seconds','transfertype','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','toUpperCase','[%s][voiceQueueReport][varset]','addVariable','value','queuestatus','CONTINUE','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','variable','queueposition','EXITWITHKEY','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberinterface','memberlastcall','memberpenalty','includes','[%s][voiceQueueReport][hangup]','length','diff','queuecallercomplete','sumBillable','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','ATTENDEDTRANSFER','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','extension','context','transfererchannel','syncMusicOnHoldStart','mohstarttime','milliseconds','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','mohtime','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','CDR(routeAlias)','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceQueueReport][newexten]','exports','lodash','moment','util','md5','ioredis','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','queueReports','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','variables','syncQueueSummary','queuesummarycomplete','syncQueueSummaryComplete','bind','syncQueueCallerJoin','syncQueueCallerLeave','agentcomplete','syncAgentComplete','agentconnect','syncAgentConnect','varset','syncVarSet','hangup','syncHangup','syncFullyBooted','newexten','syncNewExten','musiconholdstart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','talking','pTalking','waiting','queueStatusComplete','clearZombieChannels','switch','isNil','Action','status','catch','message','No\x20such\x20channel','[%s][voiceQueueReport][checkChannel]','inspect','[%s][voiceQueueReport][checkQueueReport]','error','clearQueueReport','clearqueuereport','emit','emitVoiceQueueChannelSave','debug',']\x20sending\x20voice_queue_channel:save\x20event:','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save','emitVoiceQueueChannelRemove',']\x20sending\x20voice_queue_channel:remove\x20event:','uniqueid','format','voice_queue_channel:remove','voice_queue_presence:remove','type','inbound','answered','available','loggedIn','sumDuration','sumHoldTime','total','unmanaged','abandoned','Trunk','active','callerid','Interval','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','queues','[voiceQueueReport][queues]','queuesummary','then','[voiceQueueReport][queuesummary]','[voiceQueueReport][queuesummary]\x20event:','info','[voiceQueueReport][queuesummary]\x20name:%s','queue','toNumber','callers','loggedin','emitVoiceQueueSummary','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','keys','syncQueueCallerAbandon','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercompleteAt','holdtime','originalposition'];(function(_0x24f1a5,_0x3b6adb){var _0x5267d7=function(_0x295cc4){while(--_0x295cc4){_0x24f1a5['push'](_0x24f1a5['shift']());}};_0x5267d7(++_0x3b6adb);}(_0xc423,0x159));var _0x3c42=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0xc423[_0x178e48];return _0x440d7e;};'use strict';var _=require(_0x3c42('0x0'));var moment=require(_0x3c42('0x1'));var util=require(_0x3c42('0x2'));var md5=require(_0x3c42('0x3'));var Redis=require(_0x3c42('0x4'));var config=require('../../../config/environment');var logger=require(_0x3c42('0x5'))(_0x3c42('0x6'));var ami=require(_0x3c42('0x7'));var QueueReport=require('../model/queueReport');config[_0x3c42('0x8')]=_[_0x3c42('0x9')](config[_0x3c42('0x8')],{'host':_0x3c42('0xa'),'port':0x18eb});var io=require(_0x3c42('0xb'))(new Redis(config[_0x3c42('0x8')]));var Sequence=function(){};Sequence[_0x3c42('0xc')][_0x3c42('0xd')]=function(_0x5866b5){this[_0x3c42('0xe')]=this['tail']?this['tail'][_0x3c42('0xf')](_0x5866b5):_0x5866b5();};function VoiceQueueReport(_0x431008){this[_0x3c42('0x10')]=new Sequence();this[_0x3c42('0x11')]={};this[_0x3c42('0x12')]=_0x431008[_0x3c42('0x12')];this[_0x3c42('0x13')]=_0x431008[_0x3c42('0x14')];this['voiceQueues']=_0x431008[_0x3c42('0x15')];this[_0x3c42('0x16')]=!![];this[_0x3c42('0x17')]=_0x431008[_0x3c42('0x17')];this[_0x3c42('0x18')]={};ami['on']('queuesummary',this[_0x3c42('0x19')]['bind'](this));ami['on'](_0x3c42('0x1a'),this[_0x3c42('0x1b')][_0x3c42('0x1c')](this));ami['on']('queuecallerjoin',this[_0x3c42('0x1d')][_0x3c42('0x1c')](this));ami['on']('queuecallerabandon',this['syncQueueCallerAbandon'][_0x3c42('0x1c')](this));ami['on']('queuecallerleave',this[_0x3c42('0x1e')]['bind'](this));ami['on'](_0x3c42('0x1f'),this[_0x3c42('0x20')]['bind'](this));ami['on'](_0x3c42('0x21'),this[_0x3c42('0x22')][_0x3c42('0x1c')](this));ami['on'](_0x3c42('0x23'),this[_0x3c42('0x24')][_0x3c42('0x1c')](this));ami['on'](_0x3c42('0x25'),this[_0x3c42('0x26')][_0x3c42('0x1c')](this));ami['on']('fullybooted',this[_0x3c42('0x27')][_0x3c42('0x1c')](this));ami['on'](_0x3c42('0x28'),this[_0x3c42('0x29')]['bind'](this));ami['on'](_0x3c42('0x2a'),this['syncMusicOnHoldStart']['bind'](this));ami['on'](_0x3c42('0x2b'),this[_0x3c42('0x2c')][_0x3c42('0x1c')](this));ami['on'](_0x3c42('0x2d'),this[_0x3c42('0x2e')][_0x3c42('0x1c')](this));ami['on'](_0x3c42('0x2f'),this[_0x3c42('0x30')][_0x3c42('0x1c')](this));this[_0x3c42('0x31')]();this[_0x3c42('0x32')]();}function clearChannels(_0x3b3e6e){if(!_[_0x3c42('0x33')](_0x3b3e6e)){for(var _0x5cca72 in _0x3b3e6e){if(_0x3b3e6e[_0x3c42('0x34')](_0x5cca72)){delete _0x3b3e6e[_0x5cca72];}}}}function clearCampaigns(_0x2f8a4a){if(!_[_0x3c42('0x33')](_0x2f8a4a)){for(var _0x5482d4 in _0x2f8a4a){if(_0x2f8a4a[_0x3c42('0x34')](_0x5482d4)){_0x2f8a4a[_0x5482d4][_0x3c42('0x35')]=0x0;}}}}function clearVoiceQueues(_0x4185bd){if(!_[_0x3c42('0x33')](_0x4185bd)){for(var _0x4d183c in _0x4185bd){if(_0x4185bd[_0x3c42('0x34')](_0x4d183c)){_0x4185bd[_0x4d183c][_0x3c42('0x35')]=0x0;_0x4185bd[_0x4d183c][_0x3c42('0x36')]=0x0;_0x4185bd[_0x4d183c][_0x3c42('0x37')]=0x0;_0x4185bd[_0x4d183c][_0x3c42('0x38')]=0x0;_0x4185bd[_0x4d183c][_0x3c42('0x39')]=!![];}}}}function clearAgentBooked(_0x54ff0d){if(!_[_0x3c42('0x33')](_0x54ff0d)){for(var _0x2e8c52 in _0x54ff0d){if(_0x54ff0d[_0x3c42('0x34')](_0x2e8c52)){_0x54ff0d[_0x2e8c52]['unlockRR']=!![];}}}}VoiceQueueReport['prototype'][_0x3c42('0x3a')]=function(){var _0x933fad=this;for(var _0x3b8d24 in this[_0x3c42('0x13')]){if(this['channels'][_0x3c42('0x34')](_0x3b8d24)&&!this['channels'][_0x3b8d24][_0x3c42('0x3b')]){this[_0x3c42('0x10')][_0x3c42('0xd')](function(){if(!_[_0x3c42('0x3c')](_0x933fad[_0x3c42('0x13')][_0x3b8d24])){return ami[_0x3c42('0x3d')]({'action':_0x3c42('0x3e'),'channel':_0x933fad[_0x3c42('0x13')][_0x3b8d24]['channel']})[_0x3c42('0x3f')](function(_0x4005c3){if(_0x4005c3[_0x3c42('0x40')]===_0x3c42('0x41')){setTimeout(function(){if(_0x933fad[_0x3c42('0x13')][_0x3b8d24]){delete _0x933fad['channels'][_0x3b8d24];logger['error'](_0x3c42('0x42'),_0x3b8d24,util[_0x3c42('0x43')](_0x4005c3,{'showHidden':![],'depth':null}));}if(_0x933fad[_0x3c42('0x11')][_0x3b8d24]){delete _0x933fad[_0x3c42('0x11')][_0x3b8d24];logger['error'](_0x3c42('0x44'),_0x3b8d24,util[_0x3c42('0x43')](_0x4005c3,{'showHidden':![],'depth':null}));}if(_0x933fad['variables'][_0x3b8d24]){delete _0x933fad[_0x3c42('0x18')][_0x3b8d24];logger['error']('[%s][voiceQueueReport][checkVariables]',_0x3b8d24,util[_0x3c42('0x43')](_0x4005c3,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype'][_0x3c42('0x27')]=function(){logger[_0x3c42('0x45')]('[FullyBooted]\x20clear\x20realtime');clearChannels(this[_0x3c42('0x13')]);this[_0x3c42('0x46')](this[_0x3c42('0x11')]);clearAgentBooked(this['agents']);clearVoiceQueues(this[_0x3c42('0x15')]);clearCampaigns(this['campaigns']);};VoiceQueueReport['prototype'][_0x3c42('0x46')]=function(_0xdb15bc){var _0x2836bd=this;if(!_['isEmpty'](_0xdb15bc)){for(var _0x5614c1 in _0xdb15bc){if(_0xdb15bc[_0x3c42('0x34')](_0x5614c1)){_0x2836bd['emitVoiceQueueChannelRemove'](_0xdb15bc[_0x5614c1],_0x3c42('0x47'));delete _0xdb15bc[_0x5614c1];}}}};VoiceQueueReport[_0x3c42('0xc')][_0x3c42('0x48')]=function(_0x4b9c5b,_0x2d568f,_0x8ff57a){io['to'](_0x4b9c5b)['emit'](_0x2d568f,_0x8ff57a);};VoiceQueueReport[_0x3c42('0xc')][_0x3c42('0x49')]=function(_0x2d12ba,_0x372906){logger[_0x3c42('0x4a')]('[%s][voiceQueueReport]['+_0x372906+_0x3c42('0x4b'),_0x2d12ba['uniqueid'],util[_0x3c42('0x43')](_0x2d12ba,{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x3c42('0x4c'),_0x2d12ba[_0x3c42('0x4d')]),_0x3c42('0x4e'),_0x2d12ba);io[_0x3c42('0x48')](_0x3c42('0x4f'),_0x2d12ba);};VoiceQueueReport[_0x3c42('0xc')][_0x3c42('0x50')]=function(_0x484783,_0x2e37f0){logger[_0x3c42('0x4a')]('[%s][voiceQueueReport]['+_0x2e37f0+_0x3c42('0x51'),_0x484783[_0x3c42('0x52')],util[_0x3c42('0x43')](_0x484783,{'showHidden':![],'depth':null}));this['emit'](util[_0x3c42('0x53')]('voice:queue:%s',_0x484783['name']),_0x3c42('0x54'),_0x484783);io['emit'](_0x3c42('0x55'),_0x484783);};VoiceQueueReport[_0x3c42('0xc')]['emitVoiceQueueSummary']=function(_0x4865a6,_0x2b6367){if(_0x4865a6[_0x3c42('0x56')]===_0x3c42('0x57')){var _0x2db8cd={'id':_0x4865a6['id'],'name':_0x4865a6[_0x3c42('0x4d')],'strategy':_0x4865a6['strategy'],'answered':_0x4865a6[_0x3c42('0x58')],'available':_0x4865a6[_0x3c42('0x59')],'loggedIn':_0x4865a6[_0x3c42('0x5a')],'pTalking':_0x4865a6[_0x3c42('0x37')],'sumBillable':_0x4865a6['sumBillable'],'sumDuration':_0x4865a6[_0x3c42('0x5b')],'sumHoldTime':_0x4865a6[_0x3c42('0x5c')]||0x0,'talking':_0x4865a6[_0x3c42('0x36')],'total':_0x4865a6[_0x3c42('0x5d')],'type':_0x4865a6[_0x3c42('0x56')],'unmanaged':_0x4865a6[_0x3c42('0x5e')],'abandoned':_0x4865a6[_0x3c42('0x5f')],'waiting':_0x4865a6[_0x3c42('0x38')]};if(_0x4865a6[_0x3c42('0x60')]){_0x2db8cd['Trunk']={'id':_0x4865a6[_0x3c42('0x60')]['id'],'name':_0x4865a6[_0x3c42('0x60')][_0x3c42('0x4d')],'active':_0x4865a6['Trunk'][_0x3c42('0x61')],'callerid':_0x4865a6[_0x3c42('0x60')][_0x3c42('0x62')]};}if(_0x4865a6[_0x3c42('0x63')]){_0x2db8cd['Interval']={'id':_0x4865a6[_0x3c42('0x63')]['id'],'name':_0x4865a6['Interval'][_0x3c42('0x4d')]};}var _0x3bce0c=md5(JSON['stringify'](_0x2db8cd));if(_0x4865a6[_0x3c42('0x3')]!==_0x3bce0c){_0x4865a6[_0x3c42('0x3')]=_0x3bce0c;logger[_0x3c42('0x4a')](_0x3c42('0x64')+_0x2b6367+_0x3c42('0x65'),util[_0x3c42('0x43')](_0x2db8cd,{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x3c42('0x4c'),_0x2db8cd[_0x3c42('0x4d')]),_0x3c42('0x66'),_0x2db8cd);}}};VoiceQueueReport[_0x3c42('0xc')][_0x3c42('0x67')]=function(_0x594f26){return _0x594f26!==null&&!_[_0x3c42('0x68')](_0x594f26);};VoiceQueueReport[_0x3c42('0xc')][_0x3c42('0x32')]=function(){var _0x4e65d0=this;setInterval(function(){_0x4e65d0['clearZombieChannels']();ami[_0x3c42('0x3d')]({'action':_0x3c42('0x69')})[_0x3c42('0x3f')](function(_0x136ff7){logger[_0x3c42('0x45')](_0x3c42('0x6a'),util['inspect'](_0x136ff7,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport['prototype'][_0x3c42('0x31')]=function(){var _0x7c5e32=this;setInterval(function(){if(_0x7c5e32['flagQueueSummary']){return ami[_0x3c42('0x3d')]({'action':_0x3c42('0x6b')})[_0x3c42('0x6c')](function(_0x1cdb94){_0x7c5e32[_0x3c42('0x16')]=![];})['catch'](function(_0x4c3f7b){logger[_0x3c42('0x45')](_0x3c42('0x6d'),util[_0x3c42('0x43')](_0x4c3f7b,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x3c42('0xc')][_0x3c42('0x19')]=function(_0x58fb0f){try{if(this[_0x3c42('0x67')](_0x58fb0f)&&this[_0x3c42('0x67')](_0x58fb0f['queue'])){logger[_0x3c42('0x4a')](_0x3c42('0x6e'),util['inspect'](_0x58fb0f,{'showHidden':![],'depth':null}));if(this[_0x3c42('0x15')][_0x58fb0f['queue']]){logger[_0x3c42('0x6f')](_0x3c42('0x70'),_0x58fb0f[_0x3c42('0x71')]);var _0x21b260=_['countBy'](this[_0x3c42('0x13')],'queue')[_0x58fb0f['queue']]||0x0;var _0x480a83=_0x21b260-_0x58fb0f['callers'];if(this[_0x3c42('0x15')][_0x58fb0f['queue']][_0x3c42('0x38')]!==_[_0x3c42('0x72')](_0x58fb0f[_0x3c42('0x73')])||this[_0x3c42('0x15')][_0x58fb0f[_0x3c42('0x71')]][_0x3c42('0x5a')]!==_[_0x3c42('0x72')](_0x58fb0f[_0x3c42('0x74')])||this[_0x3c42('0x15')][_0x58fb0f[_0x3c42('0x71')]][_0x3c42('0x59')]!==_[_0x3c42('0x72')](_0x58fb0f[_0x3c42('0x59')])||this[_0x3c42('0x15')][_0x58fb0f[_0x3c42('0x71')]]['talking']!==_0x480a83){this[_0x3c42('0x15')][_0x58fb0f[_0x3c42('0x71')]][_0x3c42('0x38')]=_[_0x3c42('0x72')](_0x58fb0f[_0x3c42('0x73')]);this[_0x3c42('0x15')][_0x58fb0f[_0x3c42('0x71')]][_0x3c42('0x5a')]=_[_0x3c42('0x72')](_0x58fb0f['loggedin']);this[_0x3c42('0x15')][_0x58fb0f[_0x3c42('0x71')]]['available']=_[_0x3c42('0x72')](_0x58fb0f[_0x3c42('0x59')]);this[_0x3c42('0x15')][_0x58fb0f['queue']][_0x3c42('0x36')]=_0x480a83>0x0?_0x480a83:0x0;this[_0x3c42('0x15')][_0x58fb0f[_0x3c42('0x71')]][_0x3c42('0x36')]=this[_0x3c42('0x15')][_0x58fb0f[_0x3c42('0x71')]]['talking']>_[_0x3c42('0x72')](_0x58fb0f[_0x3c42('0x74')])?_[_0x3c42('0x72')](_0x58fb0f[_0x3c42('0x74')]):this['voiceQueues'][_0x58fb0f[_0x3c42('0x71')]][_0x3c42('0x36')];this[_0x3c42('0x75')](this[_0x3c42('0x15')][_0x58fb0f['queue']],_0x3c42('0x6b'));}logger[_0x3c42('0x4a')](_0x3c42('0x76'),util[_0x3c42('0x43')](this[_0x3c42('0x15')][_0x58fb0f['queue']],{'showHidden':![],'depth':null}));ami[_0x3c42('0x48')]('custom:queuesummary',this[_0x3c42('0x15')][_0x58fb0f['queue']]);}}}catch(_0x4e9822){logger[_0x3c42('0x45')]('[voiceQueueReport][queuesummary]',util[_0x3c42('0x43')](_0x4e9822,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x3c42('0x1b')]=function(_0x45de32){logger[_0x3c42('0x4a')](_0x3c42('0x77'),util[_0x3c42('0x43')](_0x45de32,{'showHidden':![],'depth':null}));this[_0x3c42('0x16')]=!![];};VoiceQueueReport[_0x3c42('0xc')][_0x3c42('0x1d')]=function(_0x1018ca){try{if(this[_0x3c42('0x67')](_0x1018ca)){logger[_0x3c42('0x4a')](_0x3c42('0x78'),_0x1018ca[_0x3c42('0x52')],util[_0x3c42('0x43')](_0x1018ca,{'showHidden':![],'depth':null}));if(_[_0x3c42('0x68')](this[_0x3c42('0x11')][_0x1018ca[_0x3c42('0x52')]]))this['queueReports'][_0x1018ca[_0x3c42('0x52')]]=[];if(_[_0x3c42('0x68')](this[_0x3c42('0x13')][_0x1018ca[_0x3c42('0x52')]]))this[_0x3c42('0x13')][_0x1018ca[_0x3c42('0x52')]]={};var _0x1829c5=new QueueReport();_0x1829c5[_0x3c42('0x4d')]=_0x1018ca[_0x3c42('0x71')];_0x1829c5['type']=this[_0x3c42('0x15')][_0x1829c5['name']]&&this[_0x3c42('0x15')][_0x1829c5[_0x3c42('0x4d')]][_0x3c42('0x56')]?this[_0x3c42('0x15')][_0x1829c5[_0x3c42('0x4d')]][_0x3c42('0x56')]||_0x3c42('0x57'):_0x3c42('0x57');_0x1829c5[_0x3c42('0x71')]=_0x1018ca[_0x3c42('0x71')];_0x1829c5[_0x3c42('0x79')]=moment()['format'](_0x3c42('0x7a'));_0x1829c5['position']=_0x1018ca['position'];_0x1829c5[_0x3c42('0x7b')]=_0x1018ca[_0x3c42('0x7b')];_0x1829c5[_0x3c42('0x52')]=_0x1018ca[_0x3c42('0x52')];_0x1829c5['routealias']=this[_0x3c42('0x13')][_0x1018ca[_0x3c42('0x52')]][_0x3c42('0x7c')];logger[_0x3c42('0x6f')](_0x3c42('0x7d'),_0x1829c5[_0x3c42('0x4d')],_0x1829c5[_0x3c42('0x56')]);_[_0x3c42('0x7e')](_0x1829c5,_[_0x3c42('0x7f')](_0x1018ca,_[_0x3c42('0x80')](_0x1829c5)));this[_0x3c42('0x11')][_0x1018ca['uniqueid']]['push'](_0x1829c5);this[_0x3c42('0x13')][_0x1018ca['uniqueid']]=_0x1829c5;this['emitVoiceQueueChannelSave'](_0x1829c5,'queuecallerjoin');}}catch(_0x512021){logger[_0x3c42('0x45')]('[%s][voiceQueueReport][queuecallerjoin]',_0x1018ca[_0x3c42('0x52')],util['inspect'](_0x512021,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3c42('0xc')][_0x3c42('0x81')]=function(_0x3a8b69){try{if(this[_0x3c42('0x67')](_0x3a8b69)){logger[_0x3c42('0x4a')](_0x3c42('0x82'),_0x3a8b69[_0x3c42('0x52')],util[_0x3c42('0x43')](_0x3a8b69,{'showHidden':![],'depth':null}));if(this[_0x3c42('0x11')][_0x3a8b69['uniqueid']]){var _0x389ca2=_[_0x3c42('0x83')](this[_0x3c42('0x11')][_0x3a8b69['uniqueid']]);_0x389ca2['queuecallercomplete']=![];_0x389ca2[_0x3c42('0x84')]=null;_0x389ca2[_0x3c42('0x85')]=_0x3a8b69['holdtime'];_0x389ca2[_0x3c42('0x86')]=_0x3a8b69[_0x3c42('0x86')];_0x389ca2[_0x3c42('0x87')]=!![];_0x389ca2[_0x3c42('0x88')]=moment()['format'](_0x3c42('0x7a'));_0x389ca2[_0x3c42('0x89')]=_0x3c42('0x8a');_0x389ca2[_0x3c42('0x8b')]=null;logger[_0x3c42('0x6f')](_0x3c42('0x8c'),_0x389ca2[_0x3c42('0x4d')],_0x389ca2['type']);this[_0x3c42('0x13')][_0x3a8b69[_0x3c42('0x52')]]=_0x389ca2;this[_0x3c42('0x50')](_0x389ca2,_0x3c42('0x87'));}}}catch(_0x159fea){logger[_0x3c42('0x45')](_0x3c42('0x82'),_0x3a8b69[_0x3c42('0x52')],util[_0x3c42('0x43')](_0x159fea,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3c42('0xc')][_0x3c42('0x1e')]=function(_0x4c01e2){try{if(this[_0x3c42('0x67')](_0x4c01e2)){logger[_0x3c42('0x4a')](_0x3c42('0x8d'),_0x4c01e2[_0x3c42('0x52')],util[_0x3c42('0x43')](_0x4c01e2,{'showHidden':![],'depth':null}));if(this[_0x3c42('0x11')][_0x4c01e2['uniqueid']]){var _0x49fd85=_[_0x3c42('0x83')](this[_0x3c42('0x11')][_0x4c01e2[_0x3c42('0x52')]]);_0x49fd85[_0x3c42('0x8e')]=moment()[_0x3c42('0x53')](_0x3c42('0x7a'));_0x49fd85[_0x3c42('0x8f')]=_0x4c01e2[_0x3c42('0x8f')];_0x49fd85[_0x3c42('0x90')]=_0x4c01e2[_0x3c42('0x90')];logger[_0x3c42('0x6f')](_0x3c42('0x91'),_0x49fd85[_0x3c42('0x4d')],_0x49fd85['type'],_0x4c01e2[_0x3c42('0x8f')],_0x4c01e2[_0x3c42('0x90')]);this[_0x3c42('0x13')][_0x4c01e2[_0x3c42('0x52')]]=_0x49fd85;this[_0x3c42('0x49')](_0x49fd85,_0x3c42('0x92'));}}}catch(_0x4bd656){logger['error'](_0x3c42('0x8d'),_0x4c01e2[_0x3c42('0x52')],util[_0x3c42('0x43')](_0x4bd656,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3c42('0xc')][_0x3c42('0x22')]=function(_0x3c522b){try{if(this['isNotNull'](_0x3c522b)){logger['debug']('[%s][voiceQueueReport][agentconnect]',_0x3c522b[_0x3c42('0x52')],util[_0x3c42('0x43')](_0x3c522b,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x3c522b[_0x3c42('0x52')]]){var _0x5b7012=_[_0x3c42('0x83')](this['queueReports'][_0x3c522b[_0x3c42('0x52')]]);_0x5b7012['queuecallercomplete']=!![];_0x5b7012[_0x3c42('0x89')]='COMPLETEDBYAGENT';logger[_0x3c42('0x6f')](_0x3c42('0x93'),_0x5b7012[_0x3c42('0x4d')],_0x5b7012['type']);}}}catch(_0x28d0e9){logger[_0x3c42('0x45')](_0x3c42('0x94'),_0x3c522b[_0x3c42('0x52')],util[_0x3c42('0x43')](_0x28d0e9,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3c42('0xc')][_0x3c42('0x20')]=function(_0x2c7e66){try{if(this['isNotNull'](_0x2c7e66)){logger[_0x3c42('0x4a')](_0x3c42('0x95'),_0x2c7e66[_0x3c42('0x52')],util['inspect'](_0x2c7e66,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x2c7e66[_0x3c42('0x52')]]){var _0x104610=_[_0x3c42('0x83')](this[_0x3c42('0x11')][_0x2c7e66[_0x3c42('0x52')]]);_0x104610[_0x3c42('0x87')]=![];_0x104610[_0x3c42('0x88')]=null;_0x104610[_0x3c42('0x96')]=!![];_0x104610[_0x3c42('0x8b')]=_0x2c7e66[_0x3c42('0x97')];_0x104610[_0x3c42('0x85')]=_0x2c7e66[_0x3c42('0x85')];_0x104610['queuecallercomplete']=!![];_0x104610[_0x3c42('0x98')]=![];_0x104610[_0x3c42('0x99')]=null;if(!_0x104610[_0x3c42('0x9a')]){if(_0x2c7e66[_0x3c42('0x9b')]==_0x3c42('0x9a')){_0x104610['queuecallerexitreason']=_0x3c42('0x9c');logger[_0x3c42('0x6f')](_0x3c42('0x9d'),_0x104610[_0x3c42('0x4d')],_0x104610[_0x3c42('0x56')]);}else{if(_[_0x3c42('0x9e')](_0x2c7e66[_0x3c42('0x9f')][_0x3c42('0xa0')](),_0x3c42('0xa1'))){if(this[_0x3c42('0x11')][_0x2c7e66[_0x3c42('0xa2')]]){var _0xcb17bd=_[_0x3c42('0x83')](this[_0x3c42('0x11')][_0x2c7e66[_0x3c42('0xa2')]]);_0xcb17bd['queuecallercomplete']=![];_0xcb17bd['queuecallerexit']=!![];_0xcb17bd[_0x3c42('0x99')]=moment(_0x104610[_0x3c42('0x79')])['add'](_0x2c7e66[_0x3c42('0x85')],_0x3c42('0xa3'))['format'](_0x3c42('0x7a'));_0xcb17bd[_0x3c42('0x89')]='FORWARDTRANSFER';_0xcb17bd[_0x3c42('0x9a')]=!![];_0xcb17bd[_0x3c42('0xa4')]='FORWARD';_0xcb17bd[_0x3c42('0xa5')]=_0x2c7e66[_0x3c42('0xa6')];_0xcb17bd[_0x3c42('0xa7')]=_0x2c7e66[_0x3c42('0x52')];logger['info'](_0x3c42('0xa8'),_0xcb17bd[_0x3c42('0x4d')],_0xcb17bd[_0x3c42('0x56')]);var _0x392501=this[_0x3c42('0x11')][_0x2c7e66[_0x3c42('0xa2')]];this['queueReports'][_0x2c7e66[_0x3c42('0xa2')]]=this[_0x3c42('0x11')][_0x2c7e66[_0x3c42('0x52')]];this[_0x3c42('0x11')][_0x2c7e66[_0x3c42('0x52')]]=_0x392501;}}else{_0x104610[_0x3c42('0x89')]=_0x3c42('0xa9')+_0x2c7e66[_0x3c42('0x9b')][_0x3c42('0xaa')]();logger['info']('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s',_0x104610['name'],_0x104610[_0x3c42('0x56')],_0x104610[_0x3c42('0x89')]);}}}this[_0x3c42('0x13')][_0x2c7e66[_0x3c42('0x52')]]=_0x104610;this[_0x3c42('0x50')](_0x104610,_0x3c42('0x1f'));}}}catch(_0x4bed75){logger[_0x3c42('0x45')](_0x3c42('0x95'),_0x2c7e66['uniqueid'],util[_0x3c42('0x43')](_0x4bed75,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3c42('0xc')]['syncVarSet']=function(_0x5e3757){try{if(this['isNotNull'](_0x5e3757)){logger['debug'](_0x3c42('0xab'),_0x5e3757['uniqueid'],util[_0x3c42('0x43')](_0x5e3757,{'showHidden':![],'depth':null}));this[_0x3c42('0xac')](_0x5e3757['uniqueid'],_[_0x3c42('0x80')](_0x5e3757['variable'])[0x0],_0x5e3757[_0x3c42('0xad')]);if(this[_0x3c42('0x11')][_0x5e3757[_0x3c42('0x52')]]){var _0x2e7734=_[_0x3c42('0x83')](this['queueReports'][_0x5e3757['uniqueid']]);if(_0x2e7734){if(this[_0x3c42('0x67')](_0x5e3757['variable'])&&this['isNotNull'](_0x5e3757['variable'][_0x3c42('0xae')])){switch(_0x5e3757[_0x3c42('0xad')]){case _0x3c42('0xaf'):_0x2e7734[_0x3c42('0x98')]=![];_0x2e7734[_0x3c42('0x99')]=null;break;case'TIMEOUT':_0x2e7734[_0x3c42('0xb0')]=_0x3c42('0xb1');_0x2e7734[_0x3c42('0x98')]=!![];_0x2e7734['queuecallerexitAt']=moment()['format'](_0x3c42('0x7a'));_0x2e7734[_0x3c42('0x8e')]=moment()[_0x3c42('0x53')](_0x3c42('0x7a'));logger['debug'](_0x3c42('0xb2'),_0x5e3757[_0x3c42('0x52')],util[_0x3c42('0x43')](_0x2e7734,{'showHidden':![],'depth':null}));ami['emit'](_0x3c42('0xb3'),_0x2e7734);break;default:_0x2e7734[_0x3c42('0x98')]=!![];_0x2e7734[_0x3c42('0x99')]=moment()[_0x3c42('0x53')](_0x3c42('0x7a'));_0x2e7734[_0x3c42('0x8e')]=moment()[_0x3c42('0x53')]('YYYY-MM-DD\x20HH:mm:ss');}_0x2e7734[_0x3c42('0x87')]=![];_0x2e7734[_0x3c42('0x88')]=null;_0x2e7734[_0x3c42('0x89')]=_0x5e3757['value'];this['channels'][_0x5e3757[_0x3c42('0x52')]]=_0x2e7734;this['emitVoiceQueueChannelRemove'](_0x2e7734,_0x3c42('0x23'));}else if(this[_0x3c42('0x67')](_0x5e3757[_0x3c42('0xb4')])&&this[_0x3c42('0x67')](_0x5e3757[_0x3c42('0xb4')][_0x3c42('0xb5')])){if(!_0x2e7734[_0x3c42('0x87')]){_0x2e7734[_0x3c42('0x98')]=!![];_0x2e7734[_0x3c42('0x99')]=moment()['format'](_0x3c42('0x7a'));_0x2e7734['queuecallerexitreason']=_0x3c42('0xb6');_0x2e7734[_0x3c42('0x8e')]=moment()[_0x3c42('0x53')](_0x3c42('0x7a'));this['channels'][_0x5e3757[_0x3c42('0x52')]]=_0x2e7734;}}logger['info']('[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s',_0x5e3757[_0x3c42('0x52')],_0x2e7734[_0x3c42('0x4d')],_0x2e7734[_0x3c42('0x56')],_[_0x3c42('0x80')](_0x5e3757[_0x3c42('0xb4')])[0x0],_0x5e3757[_0x3c42('0xad')]);_0x2e7734[_0x3c42('0x18')]=this[_0x3c42('0x18')][_0x5e3757[_0x3c42('0x52')]];}}}}catch(_0x553f69){logger[_0x3c42('0x45')]('[%s][voiceQueueReport][varset]',_0x5e3757[_0x3c42('0x52')],util[_0x3c42('0x43')](_0x553f69,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3c42('0xc')][_0x3c42('0xac')]=function(_0xc7540c,_0x147307,_0x1105d4){var _0x5a5fad=[_0x3c42('0xb7'),_0x3c42('0xb8'),_0x3c42('0xb9'),_0x3c42('0xba'),_0x3c42('0xbb'),'rtpaudioqoslossbridged',_0x3c42('0xbc'),'rtpaudioqosrttbridged',_0x3c42('0xbd'),_0x3c42('0xbe'),_0x3c42('0xbf'),_0x3c42('0xc0'),_0x3c42('0xc1'),'memberdynamic',_0x3c42('0xc2'),_0x3c42('0xc3'),_0x3c42('0x97'),_0x3c42('0xc4'),'memberrealtime'];if(!_[_0x3c42('0x3c')](_0x147307)&&!_[_0x3c42('0xc5')](_0x5a5fad,_0x147307)){if(_[_0x3c42('0x68')](this['variables'][_0xc7540c])){this[_0x3c42('0x18')][_0xc7540c]={};}this[_0x3c42('0x18')][_0xc7540c][_0x147307]=_0x1105d4;}};VoiceQueueReport['prototype']['syncHangup']=function(_0x39e134){try{if(this[_0x3c42('0x67')](_0x39e134)){logger['debug'](_0x3c42('0xc6'),_0x39e134[_0x3c42('0x52')],util[_0x3c42('0x43')](_0x39e134,{'showHidden':![],'depth':null}));if(this[_0x3c42('0x11')][_0x39e134[_0x3c42('0x52')]]){for(var _0x344ab6=0x0,_0x3c4d37={};_0x344ab6<this[_0x3c42('0x11')][_0x39e134[_0x3c42('0x52')]][_0x3c42('0xc7')];_0x344ab6+=0x1){_0x3c4d37=this[_0x3c42('0x11')][_0x39e134[_0x3c42('0x52')]][_0x344ab6];if(this[_0x3c42('0x15')][_0x3c4d37[_0x3c42('0x71')]]){if(_0x3c4d37[_0x3c42('0x98')]&&_0x3c4d37['transfer']!=!![]){this['voiceQueues'][_0x3c4d37[_0x3c42('0x71')]][_0x3c42('0x5e')]+=0x1;}if(_0x3c4d37['queuecallerabandon']){this['voiceQueues'][_0x3c4d37[_0x3c42('0x71')]][_0x3c42('0x5f')]+=0x1;}this[_0x3c42('0x15')][_0x3c4d37['queue']][_0x3c42('0x5c')]+=moment(_0x3c4d37[_0x3c42('0x8e')])[_0x3c42('0xc8')](_0x3c4d37[_0x3c42('0x79')],_0x3c42('0xa3'))||0x0;if(_0x344ab6===this[_0x3c42('0x11')][_0x39e134[_0x3c42('0x52')]][_0x3c42('0xc7')]-0x1){this[_0x3c42('0x15')][_0x3c4d37[_0x3c42('0x71')]][_0x3c42('0x5b')]+=moment()['milliseconds'](0x0)[_0x3c42('0xc8')](_0x3c4d37[_0x3c42('0x79')],_0x3c42('0xa3'));this[_0x3c42('0x15')][_0x3c4d37['queue']][_0x3c42('0x5d')]+=0x1;if(_0x3c4d37[_0x3c42('0xc9')]){this[_0x3c42('0x15')][_0x3c4d37[_0x3c42('0x71')]][_0x3c42('0x58')]+=0x1;this[_0x3c42('0x15')][_0x3c4d37[_0x3c42('0x71')]][_0x3c42('0xca')]+=moment()['milliseconds'](0x0)[_0x3c42('0xc8')](_0x3c4d37['queuecallerleaveAt'],_0x3c42('0xa3'));_0x3c4d37[_0x3c42('0x84')]=moment()[_0x3c42('0x53')](_0x3c42('0x7a'));_0x3c4d37[_0x3c42('0x98')]=![];_0x3c4d37['queuecallerexitAt']=null;}if(_0x3c4d37[_0x3c42('0x98')]&&_0x3c4d37[_0x3c42('0x9a')]!=!![]){_0x3c4d37['lastevent']=_0x3c42('0x5e');logger[_0x3c42('0x4a')](_0x3c42('0xcb'),_0x39e134[_0x3c42('0x52')],util[_0x3c42('0x43')](_0x3c4d37,{'showHidden':![],'depth':null}));ami['emit'](_0x3c42('0xcc'),_0x3c4d37);}if(_0x3c4d37['queuecallerabandon']){_0x3c4d37[_0x3c42('0xb0')]='abandoned';logger[_0x3c42('0x4a')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:',_0x39e134[_0x3c42('0x52')],util['inspect'](_0x3c4d37,{'showHidden':![],'depth':null}));ami[_0x3c42('0x48')](_0x3c42('0xcd'),_0x3c4d37);}}else{this[_0x3c42('0x15')][_0x3c4d37[_0x3c42('0x71')]]['sumDuration']+=this[_0x3c42('0x15')][_0x3c4d37['queue']][_0x3c42('0x5c')];}logger[_0x3c42('0x6f')]('[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s',_0x39e134['uniqueid'],_0x3c4d37[_0x3c42('0x4d')],_0x3c4d37[_0x3c42('0x56')],_0x39e134['cause-txt']);this[_0x3c42('0x13')][_0x39e134[_0x3c42('0x52')]]=_0x3c4d37;this[_0x3c42('0x50')](_0x3c4d37,_0x3c42('0x25'));this['emitVoiceQueueSummary'](this[_0x3c42('0x15')][_0x3c4d37['queue']],_0x3c42('0x25'));}}logger[_0x3c42('0x4a')](_0x3c42('0xce'),_0x39e134[_0x3c42('0x52')],util['inspect'](this[_0x3c42('0x11')][_0x39e134['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x3c42('0x48')](_0x3c42('0xcf'),this['queueReports'][_0x39e134[_0x3c42('0x52')]]);delete this[_0x3c42('0x11')][_0x39e134[_0x3c42('0x52')]];delete this[_0x3c42('0x13')][_0x39e134[_0x3c42('0x52')]];}if(this['variables'][_0x39e134['uniqueid']]){delete this[_0x3c42('0x18')][_0x39e134[_0x3c42('0x52')]];}}}catch(_0x40de00){logger['error'](_0x3c42('0xc6'),_0x39e134[_0x3c42('0x52')],util[_0x3c42('0x43')](_0x40de00,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3c42('0xc')][_0x3c42('0x2e')]=function(_0x496d2){try{if(this[_0x3c42('0x67')](_0x496d2)){logger[_0x3c42('0x4a')](_0x3c42('0xd0'),_0x496d2[_0x3c42('0x52')],util[_0x3c42('0x43')](_0x496d2,{'showHidden':![],'depth':null}));var _0x3739ab;if(this[_0x3c42('0x11')][_0x496d2[_0x3c42('0xd1')]]){_0x3739ab=_[_0x3c42('0x83')](this[_0x3c42('0x11')][_0x496d2[_0x3c42('0xd1')]]);_0x3739ab[_0x3c42('0xa5')]=_0x496d2[_0x3c42('0xd2')];_0x3739ab[_0x3c42('0xa7')]=_0x496d2[_0x3c42('0xd3')];_0x3739ab[_0x3c42('0x89')]=_0x3c42('0xd4');_0x3739ab[_0x3c42('0x9a')]=!![];_0x3739ab[_0x3c42('0xa4')]=_0x3c42('0xd5');if(this['queueReports'][_0x496d2[_0x3c42('0xd3')]]){var _0x44ee5a=this[_0x3c42('0x11')][_0x496d2[_0x3c42('0xd3')]];this[_0x3c42('0x11')][_0x496d2['secondtransfereruniqueid']]=this[_0x3c42('0x11')][_0x496d2['transfereeuniqueid']];this['queueReports'][_0x496d2['transfereeuniqueid']]=_0x44ee5a;var _0xe5827c=_[_0x3c42('0x83')](this[_0x3c42('0x11')][_0x496d2['transfereeuniqueid']]);_0xe5827c[_0x3c42('0x3b')]=!![];}logger[_0x3c42('0x6f')](_0x3c42('0xd6'),_0x496d2[_0x3c42('0x52')],_0x3739ab['name'],_0x3739ab[_0x3c42('0x56')],_0x3739ab['transferexten'],_0x3739ab[_0x3c42('0xa7')]);}else if(this[_0x3c42('0x11')][_0x496d2[_0x3c42('0xd7')]]){_0x3739ab=_['last'](this['queueReports'][_0x496d2['transfertargetuniqueid']]);_0x3739ab[_0x3c42('0xa5')]=_0x496d2[_0x3c42('0xd8')];_0x3739ab['transferuniqueid']=_0x496d2[_0x3c42('0xd9')];_0x3739ab['queuecallerexitreason']=_0x3c42('0xd4');_0x3739ab[_0x3c42('0x9a')]=!![];_0x3739ab[_0x3c42('0xa4')]=_0x3c42('0xd5');if(this[_0x3c42('0x11')][_0x496d2[_0x3c42('0xd9')]]){var _0x44ee5a=this[_0x3c42('0x11')][_0x496d2[_0x3c42('0xd9')]];this[_0x3c42('0x11')][_0x496d2['origtransfereruniqueid']]=this[_0x3c42('0x11')][_0x496d2[_0x3c42('0xd7')]];this['queueReports'][_0x496d2[_0x3c42('0xd7')]]=_0x44ee5a;var _0xe5827c=_['last'](this[_0x3c42('0x11')][_0x496d2[_0x3c42('0xd7')]]);_0xe5827c['switch']=!![];}logger[_0x3c42('0x6f')](_0x3c42('0xd6'),_0x496d2[_0x3c42('0x52')],_0x3739ab[_0x3c42('0x4d')],_0x3739ab[_0x3c42('0x56')],_0x3739ab[_0x3c42('0xa5')],_0x3739ab[_0x3c42('0xa7')]);}}}catch(_0x27995c){logger[_0x3c42('0x45')](_0x3c42('0xd0'),_0x496d2['uniqueid'],util[_0x3c42('0x43')](_0x27995c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3c42('0xc')][_0x3c42('0x30')]=function(_0x41b202){try{if(this['isNotNull'](_0x41b202)){logger[_0x3c42('0x4a')](_0x3c42('0xda'),_0x41b202[_0x3c42('0x52')],util['inspect'](_0x41b202,{'showHidden':![],'depth':null}));if(this[_0x3c42('0x11')][_0x41b202['transfereeuniqueid']]){var _0x2c925f=_[_0x3c42('0x83')](this[_0x3c42('0x11')][_0x41b202[_0x3c42('0xd1')]]);_0x2c925f[_0x3c42('0x89')]=_0x3c42('0xdb');_0x2c925f[_0x3c42('0x9a')]=!![];_0x2c925f['transfertype']=_0x3c42('0xdc');_0x2c925f[_0x3c42('0xa5')]=_0x41b202[_0x3c42('0xdd')];_0x2c925f['transferuniqueid']=_0x41b202[_0x3c42('0xd1')];logger[_0x3c42('0x6f')]('[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x41b202[_0x3c42('0x52')],_0x2c925f[_0x3c42('0x4d')],_0x2c925f[_0x3c42('0x56')],_0x2c925f[_0x3c42('0xa5')],_0x2c925f[_0x3c42('0xa7')]);this[_0x3c42('0x26')]({'event':'BlindTransfer','uniqueid':_0x41b202[_0x3c42('0xd1')],'context':_0x41b202[_0x3c42('0xde')],'channel':_0x41b202[_0x3c42('0xdf')]});}}}catch(_0x262e60){logger[_0x3c42('0x45')]('[%s][voiceQueueReport][blindtransfer]',_0x41b202[_0x3c42('0x52')],util[_0x3c42('0x43')](_0x262e60,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3c42('0xc')][_0x3c42('0xe0')]=function(_0x48c468){try{if(this['isNotNull'](_0x48c468)){logger[_0x3c42('0x4a')]('[%s][voiceQueueReport][musiconholdstart]',_0x48c468[_0x3c42('0x52')],util[_0x3c42('0x43')](_0x48c468,{'showHidden':![],'depth':null}));if(this[_0x3c42('0x11')][_0x48c468[_0x3c42('0x52')]]){var _0x2b0be9=_[_0x3c42('0x83')](this[_0x3c42('0x11')][_0x48c468['uniqueid']]);if(!_[_0x3c42('0x3c')](_0x2b0be9[_0x3c42('0x8e')])){_0x2b0be9[_0x3c42('0xe1')]=moment()['format'](_0x3c42('0x7a'));logger['info']('[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s',_0x48c468[_0x3c42('0x52')],_0x2b0be9[_0x3c42('0xe1')]);}}}}catch(_0xfe6505){logger[_0x3c42('0x45')]('[%s][voiceQueueReport][musiconholdstart]',_0x48c468['uniqueid'],util[_0x3c42('0x43')](_0xfe6505,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3c42('0xc')][_0x3c42('0x2c')]=function(_0x1e22d8){try{if(this[_0x3c42('0x67')](_0x1e22d8)){logger[_0x3c42('0x4a')]('[%s][voiceQueueReport][musiconholdstop]',_0x1e22d8[_0x3c42('0x52')],util[_0x3c42('0x43')](_0x1e22d8,{'showHidden':![],'depth':null}));if(this[_0x3c42('0x11')][_0x1e22d8[_0x3c42('0x52')]]){var _0x530ee5=_[_0x3c42('0x83')](this[_0x3c42('0x11')][_0x1e22d8[_0x3c42('0x52')]]);if(!_[_0x3c42('0x3c')](_0x530ee5[_0x3c42('0xe1')])){_0x530ee5['mohtime']+=moment()[_0x3c42('0xe2')](0x0)[_0x3c42('0xc8')](_0x530ee5[_0x3c42('0xe1')],'seconds');logger['info'](_0x3c42('0xe3'),_0x1e22d8['uniqueid'],_0x530ee5[_0x3c42('0xe4')]);delete _0x530ee5[_0x3c42('0xe1')];}}}}catch(_0x593878){logger[_0x3c42('0x45')]('[%s][voiceQueueReport][musiconholdstop]',_0x1e22d8[_0x3c42('0x52')],util['inspect'](_0x593878,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3c42('0xc')][_0x3c42('0x29')]=function(_0x4bc87e){try{if(this[_0x3c42('0x67')](_0x4bc87e)){logger[_0x3c42('0x4a')](_0x3c42('0xe5'),_0x4bc87e[_0x3c42('0x52')],util[_0x3c42('0x43')](_0x4bc87e,{'showHidden':![],'depth':null}));if(_0x4bc87e[_0x3c42('0xe6')][_0x3c42('0xa0')]()===_0x3c42('0xe7')){_0x4bc87e[_0x3c42('0xe8')]=_0x4bc87e[_0x3c42('0xe9')]&&_0x4bc87e[_0x3c42('0xe9')]['startsWith'](_0x3c42('0xea'))?_0x4bc87e[_0x3c42('0xe9')]:(_0x4bc87e['appdata']||_0x4bc87e[_0x3c42('0xe8')])[_0x3c42('0xa0')]();if(_[_0x3c42('0x9e')](_0x4bc87e[_0x3c42('0xe8')][_0x3c42('0xa0')](),'cdr(')){logger[_0x3c42('0x6f')](_0x3c42('0xeb'),_0x4bc87e[_0x3c42('0x52')],_0x4bc87e['application'],_0x4bc87e[_0x3c42('0xe8')]);if(_[_0x3c42('0x68')](this['channels'][_0x4bc87e['uniqueid']]))this[_0x3c42('0x13')][_0x4bc87e[_0x3c42('0x52')]]={};var _0x24c5bc=_0x4bc87e[_0x3c42('0xe8')][_0x3c42('0xec')]('=');var _0x5dfe70=_0x24c5bc[0x0][_0x3c42('0xa0')]()[_0x3c42('0xed')](/cdr\((.*)\)/);if(_0x5dfe70)this['channels'][_0x4bc87e['uniqueid']][_0x5dfe70[0x1]]=_0x24c5bc[0x1];}}}}catch(_0x249cef){logger['error'](_0x3c42('0xee'),_0x4bc87e[_0x3c42('0x52')],util[_0x3c42('0x43')](_0x249cef,{'showHidden':![],'depth':null}));}};module[_0x3c42('0xef')]=VoiceQueueReport;
\ No newline at end of file
+var _0x3b59=['sumDuration','sumHoldTime','total','unmanaged','Trunk','active','Interval','stringify','[voiceQueueReport][','voice_queue:save','isUndefined','[voiceQueueReport][queues]','flagQueueSummary','Action','[voiceQueueReport][queuesummary]','queue','debug','[voiceQueueReport][queuesummary]\x20name:%s','countBy','callers','waiting','toNumber','loggedin','emitVoiceQueueSummary','custom:queuesummary','[voiceQueueReport][queuesummarycomplete]\x20event:','isNotNull','[%s][voiceQueueReport][queuecallerjoin]','inbound','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','info','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','push','emitVoiceQueueChannelSave','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercompleteAt','holdtime','originalposition','queuecallerabandon','queuecallerabandonAt','queuecallerexitreason','ABANDONED','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','queuecallerleave','queuecallercomplete','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentconnect]','assigned','queuecallerexit','queuecallerexitAt','transfer','reason','startsWith','local/','linkedid','queuecallerjoinAt','add','seconds','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','toUpperCase','[%s][voiceQueueReport][agentcomplete]','[%s][voiceQueueReport][varset]','addVariable','keys','variable','value','CONTINUE','TIMEOUT','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','membername','memberpenalty','includes','length','abandoned','diff','sumBillable','milliseconds','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','lastevent','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','cause-txt','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','ATTENDEDTRANSFER','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','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','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','isNil','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','application','set','applicationdata','appdata','toLowerCase','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceQueueReport][newexten]','exports','lodash','moment','util','md5','ioredis','../../../config/environment','ami','../model/queueReport','redis','defaults','socket.io-emitter','prototype','tail','finally','sequence','queueReports','agents','channels','voiceQueues','campaigns','variables','queuesummary','syncQueueSummary','queuesummarycomplete','syncQueueSummaryComplete','queuecallerjoin','syncQueueCallerJoin','bind','syncQueueCallerAbandon','syncQueueCallerLeave','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','fullybooted','syncFullyBooted','newexten','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','talking','pTalking','queueStatusComplete','unlockRR','clearZombieChannels','switch','enqueue','channel','catch','message','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','inspect','[%s][voiceQueueReport][checkQueueReport]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:remove\x20event:','format','voice_queue_channel:remove','type','strategy','answered','available','loggedIn'];(function(_0x27e811,_0x20137c){var _0x1627fa=function(_0x4498ca){while(--_0x4498ca){_0x27e811['push'](_0x27e811['shift']());}};_0x1627fa(++_0x20137c);}(_0x3b59,0x9c));var _0x93b5=function(_0x25214d,_0x1db1ec){_0x25214d=_0x25214d-0x0;var _0x16640c=_0x3b59[_0x25214d];return _0x16640c;};'use strict';var _=require(_0x93b5('0x0'));var moment=require(_0x93b5('0x1'));var util=require(_0x93b5('0x2'));var md5=require(_0x93b5('0x3'));var Redis=require(_0x93b5('0x4'));var config=require(_0x93b5('0x5'));var logger=require('../../../config/logger')(_0x93b5('0x6'));var ami=require('../ami');var QueueReport=require(_0x93b5('0x7'));config[_0x93b5('0x8')]=_[_0x93b5('0x9')](config[_0x93b5('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x93b5('0xa'))(new Redis(config[_0x93b5('0x8')]));var Sequence=function(){};Sequence[_0x93b5('0xb')]['enqueue']=function(_0x8e475e){this[_0x93b5('0xc')]=this[_0x93b5('0xc')]?this[_0x93b5('0xc')][_0x93b5('0xd')](_0x8e475e):_0x8e475e();};function VoiceQueueReport(_0x490b0d){this[_0x93b5('0xe')]=new Sequence();this[_0x93b5('0xf')]={};this[_0x93b5('0x10')]=_0x490b0d[_0x93b5('0x10')];this[_0x93b5('0x11')]=_0x490b0d['queueChannels'];this[_0x93b5('0x12')]=_0x490b0d[_0x93b5('0x12')];this['flagQueueSummary']=!![];this[_0x93b5('0x13')]=_0x490b0d[_0x93b5('0x13')];this[_0x93b5('0x14')]={};ami['on'](_0x93b5('0x15'),this[_0x93b5('0x16')]['bind'](this));ami['on'](_0x93b5('0x17'),this[_0x93b5('0x18')]['bind'](this));ami['on'](_0x93b5('0x19'),this[_0x93b5('0x1a')][_0x93b5('0x1b')](this));ami['on']('queuecallerabandon',this[_0x93b5('0x1c')]['bind'](this));ami['on']('queuecallerleave',this[_0x93b5('0x1d')]['bind'](this));ami['on'](_0x93b5('0x1e'),this[_0x93b5('0x1f')][_0x93b5('0x1b')](this));ami['on']('agentconnect',this['syncAgentConnect']['bind'](this));ami['on'](_0x93b5('0x20'),this[_0x93b5('0x21')][_0x93b5('0x1b')](this));ami['on'](_0x93b5('0x22'),this[_0x93b5('0x23')][_0x93b5('0x1b')](this));ami['on'](_0x93b5('0x24'),this[_0x93b5('0x25')][_0x93b5('0x1b')](this));ami['on'](_0x93b5('0x26'),this['syncNewExten']['bind'](this));ami['on'](_0x93b5('0x27'),this[_0x93b5('0x28')]['bind'](this));ami['on'](_0x93b5('0x29'),this[_0x93b5('0x2a')][_0x93b5('0x1b')](this));ami['on'](_0x93b5('0x2b'),this[_0x93b5('0x2c')][_0x93b5('0x1b')](this));ami['on'](_0x93b5('0x2d'),this[_0x93b5('0x2e')][_0x93b5('0x1b')](this));this[_0x93b5('0x2f')]();this[_0x93b5('0x30')]();}function clearChannels(_0x126746){if(!_[_0x93b5('0x31')](_0x126746)){for(var _0x3a31db in _0x126746){if(_0x126746[_0x93b5('0x32')](_0x3a31db)){delete _0x126746[_0x3a31db];}}}}function clearCampaigns(_0x7eed38){if(!_[_0x93b5('0x31')](_0x7eed38)){for(var _0x11add6 in _0x7eed38){if(_0x7eed38['hasOwnProperty'](_0x11add6)){_0x7eed38[_0x11add6][_0x93b5('0x33')]=0x0;}}}}function clearVoiceQueues(_0x2ed60b){if(!_[_0x93b5('0x31')](_0x2ed60b)){for(var _0x124101 in _0x2ed60b){if(_0x2ed60b[_0x93b5('0x32')](_0x124101)){_0x2ed60b[_0x124101][_0x93b5('0x33')]=0x0;_0x2ed60b[_0x124101][_0x93b5('0x34')]=0x0;_0x2ed60b[_0x124101][_0x93b5('0x35')]=0x0;_0x2ed60b[_0x124101]['waiting']=0x0;_0x2ed60b[_0x124101][_0x93b5('0x36')]=!![];}}}}function clearAgentBooked(_0x239f96){if(!_['isEmpty'](_0x239f96)){for(var _0xf7fc9c in _0x239f96){if(_0x239f96['hasOwnProperty'](_0xf7fc9c)){_0x239f96[_0xf7fc9c][_0x93b5('0x37')]=!![];}}}}VoiceQueueReport[_0x93b5('0xb')][_0x93b5('0x38')]=function(){var _0x1a3495=this;for(var _0x207b04 in this[_0x93b5('0x11')]){if(this[_0x93b5('0x11')][_0x93b5('0x32')](_0x207b04)&&!this[_0x93b5('0x11')][_0x207b04][_0x93b5('0x39')]){this['sequence'][_0x93b5('0x3a')](function(){if(!_['isNil'](_0x1a3495['channels'][_0x207b04])){return ami['Action']({'action':'status','channel':_0x1a3495[_0x93b5('0x11')][_0x207b04][_0x93b5('0x3b')]})[_0x93b5('0x3c')](function(_0x94d29a){if(_0x94d29a[_0x93b5('0x3d')]===_0x93b5('0x3e')){setTimeout(function(){if(_0x1a3495[_0x93b5('0x11')][_0x207b04]){delete _0x1a3495[_0x93b5('0x11')][_0x207b04];logger[_0x93b5('0x3f')](_0x93b5('0x40'),_0x207b04,util[_0x93b5('0x41')](_0x94d29a,{'showHidden':![],'depth':null}));}if(_0x1a3495['queueReports'][_0x207b04]){delete _0x1a3495['queueReports'][_0x207b04];logger[_0x93b5('0x3f')](_0x93b5('0x42'),_0x207b04,util[_0x93b5('0x41')](_0x94d29a,{'showHidden':![],'depth':null}));}if(_0x1a3495[_0x93b5('0x14')][_0x207b04]){delete _0x1a3495[_0x93b5('0x14')][_0x207b04];logger[_0x93b5('0x3f')]('[%s][voiceQueueReport][checkVariables]',_0x207b04,util['inspect'](_0x94d29a,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype']['syncFullyBooted']=function(){logger['error'](_0x93b5('0x43'));clearChannels(this[_0x93b5('0x11')]);this[_0x93b5('0x44')](this[_0x93b5('0xf')]);clearAgentBooked(this[_0x93b5('0x10')]);clearVoiceQueues(this[_0x93b5('0x12')]);clearCampaigns(this[_0x93b5('0x13')]);};VoiceQueueReport[_0x93b5('0xb')][_0x93b5('0x44')]=function(_0x2f52ea){var _0x5400b9=this;if(!_['isEmpty'](_0x2f52ea)){for(var _0x48320d in _0x2f52ea){if(_0x2f52ea[_0x93b5('0x32')](_0x48320d)){_0x5400b9[_0x93b5('0x45')](_0x2f52ea[_0x48320d],_0x93b5('0x46'));delete _0x2f52ea[_0x48320d];}}}};VoiceQueueReport[_0x93b5('0xb')][_0x93b5('0x47')]=function(_0x2a5382,_0x5ef62a,_0x27800e){io['to'](_0x2a5382)[_0x93b5('0x47')](_0x5ef62a,_0x27800e);};VoiceQueueReport[_0x93b5('0xb')]['emitVoiceQueueChannelSave']=function(_0x1cf514,_0x426403){logger['debug']('[%s][voiceQueueReport]['+_0x426403+_0x93b5('0x48'),_0x1cf514[_0x93b5('0x49')],util[_0x93b5('0x41')](_0x1cf514,{'showHidden':![],'depth':null}));this[_0x93b5('0x47')](util['format'](_0x93b5('0x4a'),_0x1cf514[_0x93b5('0x4b')]),_0x93b5('0x4c'),_0x1cf514);io[_0x93b5('0x47')](_0x93b5('0x4d'),_0x1cf514);};VoiceQueueReport[_0x93b5('0xb')][_0x93b5('0x45')]=function(_0xe53ce3,_0x51726a){logger['debug'](_0x93b5('0x4e')+_0x51726a+_0x93b5('0x4f'),_0xe53ce3[_0x93b5('0x49')],util[_0x93b5('0x41')](_0xe53ce3,{'showHidden':![],'depth':null}));this[_0x93b5('0x47')](util[_0x93b5('0x50')](_0x93b5('0x4a'),_0xe53ce3[_0x93b5('0x4b')]),_0x93b5('0x51'),_0xe53ce3);io[_0x93b5('0x47')]('voice_queue_presence:remove',_0xe53ce3);};VoiceQueueReport[_0x93b5('0xb')]['emitVoiceQueueSummary']=function(_0x2568b8,_0x2f5967){if(_0x2568b8[_0x93b5('0x52')]==='inbound'){var _0x36b5c0={'id':_0x2568b8['id'],'name':_0x2568b8[_0x93b5('0x4b')],'strategy':_0x2568b8[_0x93b5('0x53')],'answered':_0x2568b8[_0x93b5('0x54')],'available':_0x2568b8[_0x93b5('0x55')],'loggedIn':_0x2568b8[_0x93b5('0x56')],'pTalking':_0x2568b8[_0x93b5('0x35')],'sumBillable':_0x2568b8['sumBillable'],'sumDuration':_0x2568b8[_0x93b5('0x57')],'sumHoldTime':_0x2568b8[_0x93b5('0x58')]||0x0,'talking':_0x2568b8[_0x93b5('0x34')],'total':_0x2568b8[_0x93b5('0x59')],'type':_0x2568b8['type'],'unmanaged':_0x2568b8[_0x93b5('0x5a')],'abandoned':_0x2568b8['abandoned'],'waiting':_0x2568b8['waiting']};if(_0x2568b8['Trunk']){_0x36b5c0[_0x93b5('0x5b')]={'id':_0x2568b8[_0x93b5('0x5b')]['id'],'name':_0x2568b8[_0x93b5('0x5b')][_0x93b5('0x4b')],'active':_0x2568b8[_0x93b5('0x5b')][_0x93b5('0x5c')],'callerid':_0x2568b8[_0x93b5('0x5b')]['callerid']};}if(_0x2568b8[_0x93b5('0x5d')]){_0x36b5c0[_0x93b5('0x5d')]={'id':_0x2568b8[_0x93b5('0x5d')]['id'],'name':_0x2568b8['Interval'][_0x93b5('0x4b')]};}var _0x33831d=md5(JSON[_0x93b5('0x5e')](_0x36b5c0));if(_0x2568b8['md5']!==_0x33831d){_0x2568b8['md5']=_0x33831d;logger['debug'](_0x93b5('0x5f')+_0x2f5967+']\x20sending\x20voice_queue:save\x20event:',util['inspect'](_0x36b5c0,{'showHidden':![],'depth':null}));this[_0x93b5('0x47')](util['format'](_0x93b5('0x4a'),_0x36b5c0['name']),_0x93b5('0x60'),_0x36b5c0);}}};VoiceQueueReport['prototype']['isNotNull']=function(_0x3ffb49){return _0x3ffb49!==null&&!_[_0x93b5('0x61')](_0x3ffb49);};VoiceQueueReport[_0x93b5('0xb')][_0x93b5('0x30')]=function(){var _0x27c467=this;setInterval(function(){_0x27c467['clearZombieChannels']();ami['Action']({'action':'queues'})[_0x93b5('0x3c')](function(_0xe7b552){logger[_0x93b5('0x3f')](_0x93b5('0x62'),util['inspect'](_0xe7b552,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport['prototype'][_0x93b5('0x2f')]=function(){var _0x57eec8=this;setInterval(function(){if(_0x57eec8[_0x93b5('0x63')]){return ami[_0x93b5('0x64')]({'action':_0x93b5('0x15')})['then'](function(_0x1c97bb){_0x57eec8['flagQueueSummary']=![];})[_0x93b5('0x3c')](function(_0xd98f49){logger[_0x93b5('0x3f')](_0x93b5('0x65'),util[_0x93b5('0x41')](_0xd98f49,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport['prototype']['syncQueueSummary']=function(_0x3aa7fd){try{if(this['isNotNull'](_0x3aa7fd)&&this['isNotNull'](_0x3aa7fd[_0x93b5('0x66')])){logger[_0x93b5('0x67')]('[voiceQueueReport][queuesummary]\x20event:',util[_0x93b5('0x41')](_0x3aa7fd,{'showHidden':![],'depth':null}));if(this['voiceQueues'][_0x3aa7fd[_0x93b5('0x66')]]){logger['info'](_0x93b5('0x68'),_0x3aa7fd['queue']);var _0x1e04a8=_[_0x93b5('0x69')](this['channels'],'queue')[_0x3aa7fd[_0x93b5('0x66')]]||0x0;var _0xc90ad8=_0x1e04a8-_0x3aa7fd[_0x93b5('0x6a')];if(this['voiceQueues'][_0x3aa7fd[_0x93b5('0x66')]][_0x93b5('0x6b')]!==_[_0x93b5('0x6c')](_0x3aa7fd[_0x93b5('0x6a')])||this[_0x93b5('0x12')][_0x3aa7fd[_0x93b5('0x66')]]['loggedIn']!==_[_0x93b5('0x6c')](_0x3aa7fd[_0x93b5('0x6d')])||this['voiceQueues'][_0x3aa7fd[_0x93b5('0x66')]][_0x93b5('0x55')]!==_[_0x93b5('0x6c')](_0x3aa7fd[_0x93b5('0x55')])||this[_0x93b5('0x12')][_0x3aa7fd[_0x93b5('0x66')]][_0x93b5('0x34')]!==_0xc90ad8){this[_0x93b5('0x12')][_0x3aa7fd[_0x93b5('0x66')]][_0x93b5('0x6b')]=_[_0x93b5('0x6c')](_0x3aa7fd[_0x93b5('0x6a')]);this['voiceQueues'][_0x3aa7fd[_0x93b5('0x66')]]['loggedIn']=_[_0x93b5('0x6c')](_0x3aa7fd[_0x93b5('0x6d')]);this[_0x93b5('0x12')][_0x3aa7fd[_0x93b5('0x66')]]['available']=_['toNumber'](_0x3aa7fd[_0x93b5('0x55')]);this[_0x93b5('0x12')][_0x3aa7fd[_0x93b5('0x66')]][_0x93b5('0x34')]=_0xc90ad8>0x0?_0xc90ad8:0x0;this[_0x93b5('0x12')][_0x3aa7fd[_0x93b5('0x66')]][_0x93b5('0x34')]=this['voiceQueues'][_0x3aa7fd[_0x93b5('0x66')]]['talking']>_[_0x93b5('0x6c')](_0x3aa7fd[_0x93b5('0x6d')])?_[_0x93b5('0x6c')](_0x3aa7fd['loggedin']):this[_0x93b5('0x12')][_0x3aa7fd[_0x93b5('0x66')]][_0x93b5('0x34')];this[_0x93b5('0x6e')](this['voiceQueues'][_0x3aa7fd[_0x93b5('0x66')]],'queuesummary');}logger[_0x93b5('0x67')]('[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:',util[_0x93b5('0x41')](this[_0x93b5('0x12')][_0x3aa7fd[_0x93b5('0x66')]],{'showHidden':![],'depth':null}));ami['emit'](_0x93b5('0x6f'),this['voiceQueues'][_0x3aa7fd['queue']]);}}}catch(_0x1f0089){logger[_0x93b5('0x3f')]('[voiceQueueReport][queuesummary]',util[_0x93b5('0x41')](_0x1f0089,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x93b5('0x18')]=function(_0x492baa){logger[_0x93b5('0x67')](_0x93b5('0x70'),util['inspect'](_0x492baa,{'showHidden':![],'depth':null}));this[_0x93b5('0x63')]=!![];};VoiceQueueReport[_0x93b5('0xb')][_0x93b5('0x1a')]=function(_0x3afa27){try{if(this[_0x93b5('0x71')](_0x3afa27)){logger[_0x93b5('0x67')](_0x93b5('0x72'),_0x3afa27['uniqueid'],util[_0x93b5('0x41')](_0x3afa27,{'showHidden':![],'depth':null}));if(_[_0x93b5('0x61')](this[_0x93b5('0xf')][_0x3afa27['uniqueid']]))this[_0x93b5('0xf')][_0x3afa27[_0x93b5('0x49')]]=[];if(_[_0x93b5('0x61')](this['channels'][_0x3afa27['uniqueid']]))this[_0x93b5('0x11')][_0x3afa27[_0x93b5('0x49')]]={};var _0x2d1b30=new QueueReport();_0x2d1b30[_0x93b5('0x4b')]=_0x3afa27['queue'];_0x2d1b30[_0x93b5('0x52')]=this['voiceQueues'][_0x2d1b30[_0x93b5('0x4b')]]&&this[_0x93b5('0x12')][_0x2d1b30['name']][_0x93b5('0x52')]?this['voiceQueues'][_0x2d1b30[_0x93b5('0x4b')]]['type']||_0x93b5('0x73'):_0x93b5('0x73');_0x2d1b30['queue']=_0x3afa27[_0x93b5('0x66')];_0x2d1b30['queuecallerjoinAt']=moment()[_0x93b5('0x50')](_0x93b5('0x74'));_0x2d1b30[_0x93b5('0x75')]=_0x3afa27[_0x93b5('0x75')];_0x2d1b30[_0x93b5('0x76')]=_0x3afa27['count'];_0x2d1b30['uniqueid']=_0x3afa27[_0x93b5('0x49')];_0x2d1b30[_0x93b5('0x77')]=this[_0x93b5('0x11')][_0x3afa27[_0x93b5('0x49')]][_0x93b5('0x77')];logger[_0x93b5('0x78')](_0x93b5('0x79'),_0x2d1b30[_0x93b5('0x4b')],_0x2d1b30[_0x93b5('0x52')]);_[_0x93b5('0x7a')](_0x2d1b30,_['pick'](_0x3afa27,_['keys'](_0x2d1b30)));this[_0x93b5('0xf')][_0x3afa27[_0x93b5('0x49')]][_0x93b5('0x7b')](_0x2d1b30);this['channels'][_0x3afa27[_0x93b5('0x49')]]=_0x2d1b30;this[_0x93b5('0x7c')](_0x2d1b30,_0x93b5('0x19'));}}catch(_0x2340e0){logger[_0x93b5('0x3f')](_0x93b5('0x72'),_0x3afa27[_0x93b5('0x49')],util[_0x93b5('0x41')](_0x2340e0,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x93b5('0xb')][_0x93b5('0x1c')]=function(_0x5c5083){try{if(this[_0x93b5('0x71')](_0x5c5083)){logger[_0x93b5('0x67')](_0x93b5('0x7d'),_0x5c5083['uniqueid'],util[_0x93b5('0x41')](_0x5c5083,{'showHidden':![],'depth':null}));if(this[_0x93b5('0xf')][_0x5c5083[_0x93b5('0x49')]]){var _0x32beff=_[_0x93b5('0x7e')](this[_0x93b5('0xf')][_0x5c5083['uniqueid']]);_0x32beff['queuecallercomplete']=![];_0x32beff[_0x93b5('0x7f')]=null;_0x32beff[_0x93b5('0x80')]=_0x5c5083[_0x93b5('0x80')];_0x32beff[_0x93b5('0x81')]=_0x5c5083[_0x93b5('0x81')];_0x32beff[_0x93b5('0x82')]=!![];_0x32beff[_0x93b5('0x83')]=moment()[_0x93b5('0x50')](_0x93b5('0x74'));_0x32beff[_0x93b5('0x84')]=_0x93b5('0x85');_0x32beff['lastAssignedTo']=null;logger[_0x93b5('0x78')](_0x93b5('0x86'),_0x32beff[_0x93b5('0x4b')],_0x32beff[_0x93b5('0x52')]);this[_0x93b5('0x11')][_0x5c5083['uniqueid']]=_0x32beff;this['emitVoiceQueueChannelRemove'](_0x32beff,_0x93b5('0x82'));}}}catch(_0x128450){logger[_0x93b5('0x3f')]('[%s][voiceQueueReport][queuecallerabandon]',_0x5c5083[_0x93b5('0x49')],util[_0x93b5('0x41')](_0x128450,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x93b5('0xb')][_0x93b5('0x1d')]=function(_0x43ecd0){try{if(this[_0x93b5('0x71')](_0x43ecd0)){logger[_0x93b5('0x67')](_0x93b5('0x87'),_0x43ecd0[_0x93b5('0x49')],util[_0x93b5('0x41')](_0x43ecd0,{'showHidden':![],'depth':null}));if(this[_0x93b5('0xf')][_0x43ecd0[_0x93b5('0x49')]]){var _0x1dc286=_[_0x93b5('0x7e')](this[_0x93b5('0xf')][_0x43ecd0['uniqueid']]);_0x1dc286[_0x93b5('0x88')]=moment()[_0x93b5('0x50')](_0x93b5('0x74'));_0x1dc286[_0x93b5('0x89')]=_0x43ecd0[_0x93b5('0x89')];_0x1dc286[_0x93b5('0x8a')]=_0x43ecd0[_0x93b5('0x8a')];logger['info']('[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x1dc286[_0x93b5('0x4b')],_0x1dc286[_0x93b5('0x52')],_0x43ecd0['connectedlinenum'],_0x43ecd0['connectedlinename']);this[_0x93b5('0x11')][_0x43ecd0[_0x93b5('0x49')]]=_0x1dc286;this[_0x93b5('0x7c')](_0x1dc286,_0x93b5('0x8b'));}}}catch(_0x321eca){logger['error'](_0x93b5('0x87'),_0x43ecd0[_0x93b5('0x49')],util['inspect'](_0x321eca,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncAgentConnect']=function(_0x48a696){try{if(this[_0x93b5('0x71')](_0x48a696)){logger[_0x93b5('0x67')]('[%s][voiceQueueReport][agentconnect]',_0x48a696['uniqueid'],util[_0x93b5('0x41')](_0x48a696,{'showHidden':![],'depth':null}));if(this[_0x93b5('0xf')][_0x48a696[_0x93b5('0x49')]]){var _0x3926a1=_['last'](this['queueReports'][_0x48a696[_0x93b5('0x49')]]);_0x3926a1[_0x93b5('0x8c')]=!![];_0x3926a1['queuecallerexitreason']='COMPLETEDBYAGENT';logger[_0x93b5('0x78')](_0x93b5('0x8d'),_0x3926a1['name'],_0x3926a1[_0x93b5('0x52')]);}}}catch(_0x4a0948){logger[_0x93b5('0x3f')](_0x93b5('0x8e'),_0x48a696[_0x93b5('0x49')],util[_0x93b5('0x41')](_0x4a0948,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x93b5('0xb')][_0x93b5('0x1f')]=function(_0x334b8f){try{if(this['isNotNull'](_0x334b8f)){logger['debug']('[%s][voiceQueueReport][agentcomplete]',_0x334b8f[_0x93b5('0x49')],util[_0x93b5('0x41')](_0x334b8f,{'showHidden':![],'depth':null}));if(this[_0x93b5('0xf')][_0x334b8f[_0x93b5('0x49')]]){var _0x10fa31=_['last'](this[_0x93b5('0xf')][_0x334b8f[_0x93b5('0x49')]]);_0x10fa31[_0x93b5('0x82')]=![];_0x10fa31[_0x93b5('0x83')]=null;_0x10fa31[_0x93b5('0x8f')]=!![];_0x10fa31['lastAssignedTo']=_0x334b8f['membername'];_0x10fa31['holdtime']=_0x334b8f['holdtime'];_0x10fa31['queuecallercomplete']=!![];_0x10fa31[_0x93b5('0x90')]=![];_0x10fa31[_0x93b5('0x91')]=null;if(!_0x10fa31[_0x93b5('0x92')]){if(_0x334b8f[_0x93b5('0x93')]==_0x93b5('0x92')){_0x10fa31[_0x93b5('0x84')]='COMPLETED';logger['info']('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED',_0x10fa31['name'],_0x10fa31['type']);}else{if(_[_0x93b5('0x94')](_0x334b8f[_0x93b5('0x3b')]['toLowerCase'](),_0x93b5('0x95'))){if(this[_0x93b5('0xf')][_0x334b8f[_0x93b5('0x96')]]){var _0x5e0eda=_['last'](this[_0x93b5('0xf')][_0x334b8f['linkedid']]);_0x5e0eda['queuecallercomplete']=![];_0x5e0eda['queuecallerexit']=!![];_0x5e0eda[_0x93b5('0x91')]=moment(_0x10fa31[_0x93b5('0x97')])[_0x93b5('0x98')](_0x334b8f['holdtime'],_0x93b5('0x99'))[_0x93b5('0x50')](_0x93b5('0x74'));_0x5e0eda[_0x93b5('0x84')]=_0x93b5('0x9a');_0x5e0eda[_0x93b5('0x92')]=!![];_0x5e0eda[_0x93b5('0x9b')]=_0x93b5('0x9c');_0x5e0eda[_0x93b5('0x9d')]=_0x334b8f[_0x93b5('0x9e')];_0x5e0eda[_0x93b5('0x9f')]=_0x334b8f[_0x93b5('0x49')];logger[_0x93b5('0x78')](_0x93b5('0xa0'),_0x5e0eda[_0x93b5('0x4b')],_0x5e0eda[_0x93b5('0x52')]);var _0x1339f3=this[_0x93b5('0xf')][_0x334b8f[_0x93b5('0x96')]];this[_0x93b5('0xf')][_0x334b8f['linkedid']]=this['queueReports'][_0x334b8f['uniqueid']];this[_0x93b5('0xf')][_0x334b8f[_0x93b5('0x49')]]=_0x1339f3;}}else{_0x10fa31[_0x93b5('0x84')]=_0x93b5('0xa1')+_0x334b8f[_0x93b5('0x93')][_0x93b5('0xa2')]();logger['info']('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s',_0x10fa31[_0x93b5('0x4b')],_0x10fa31[_0x93b5('0x52')],_0x10fa31[_0x93b5('0x84')]);}}}this[_0x93b5('0x11')][_0x334b8f[_0x93b5('0x49')]]=_0x10fa31;this[_0x93b5('0x45')](_0x10fa31,_0x93b5('0x1e'));}}}catch(_0x1bb9b5){logger['error'](_0x93b5('0xa3'),_0x334b8f[_0x93b5('0x49')],util[_0x93b5('0x41')](_0x1bb9b5,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncVarSet']=function(_0x53ab9f){try{if(this[_0x93b5('0x71')](_0x53ab9f)){logger[_0x93b5('0x67')](_0x93b5('0xa4'),_0x53ab9f['uniqueid'],util[_0x93b5('0x41')](_0x53ab9f,{'showHidden':![],'depth':null}));this[_0x93b5('0xa5')](_0x53ab9f['uniqueid'],_[_0x93b5('0xa6')](_0x53ab9f[_0x93b5('0xa7')])[0x0],_0x53ab9f[_0x93b5('0xa8')]);if(this['queueReports'][_0x53ab9f[_0x93b5('0x49')]]){var _0x4c96ec=_['last'](this[_0x93b5('0xf')][_0x53ab9f[_0x93b5('0x49')]]);if(_0x4c96ec){if(this[_0x93b5('0x71')](_0x53ab9f['variable'])&&this[_0x93b5('0x71')](_0x53ab9f[_0x93b5('0xa7')]['queuestatus'])){switch(_0x53ab9f['value']){case _0x93b5('0xa9'):_0x4c96ec[_0x93b5('0x90')]=![];_0x4c96ec[_0x93b5('0x91')]=null;break;case _0x93b5('0xaa'):_0x4c96ec['lastevent']=_0x93b5('0xab');_0x4c96ec[_0x93b5('0x90')]=!![];_0x4c96ec[_0x93b5('0x91')]=moment()[_0x93b5('0x50')]('YYYY-MM-DD\x20HH:mm:ss');_0x4c96ec[_0x93b5('0x88')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');logger[_0x93b5('0x67')](_0x93b5('0xac'),_0x53ab9f[_0x93b5('0x49')],util[_0x93b5('0x41')](_0x4c96ec,{'showHidden':![],'depth':null}));ami['emit']('custom:timeout',_0x4c96ec);break;default:_0x4c96ec['queuecallerexit']=!![];_0x4c96ec['queuecallerexitAt']=moment()[_0x93b5('0x50')]('YYYY-MM-DD\x20HH:mm:ss');_0x4c96ec[_0x93b5('0x88')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x4c96ec['queuecallerabandon']=![];_0x4c96ec[_0x93b5('0x83')]=null;_0x4c96ec['queuecallerexitreason']=_0x53ab9f[_0x93b5('0xa8')];this[_0x93b5('0x11')][_0x53ab9f[_0x93b5('0x49')]]=_0x4c96ec;this[_0x93b5('0x45')](_0x4c96ec,_0x93b5('0x20'));}else if(this[_0x93b5('0x71')](_0x53ab9f[_0x93b5('0xa7')])&&this[_0x93b5('0x71')](_0x53ab9f[_0x93b5('0xa7')][_0x93b5('0xad')])){if(!_0x4c96ec[_0x93b5('0x82')]){_0x4c96ec['queuecallerexit']=!![];_0x4c96ec[_0x93b5('0x91')]=moment()[_0x93b5('0x50')]('YYYY-MM-DD\x20HH:mm:ss');_0x4c96ec['queuecallerexitreason']=_0x93b5('0xae');_0x4c96ec[_0x93b5('0x88')]=moment()[_0x93b5('0x50')](_0x93b5('0x74'));this[_0x93b5('0x11')][_0x53ab9f['uniqueid']]=_0x4c96ec;}}logger[_0x93b5('0x78')](_0x93b5('0xaf'),_0x53ab9f['uniqueid'],_0x4c96ec[_0x93b5('0x4b')],_0x4c96ec['type'],_[_0x93b5('0xa6')](_0x53ab9f[_0x93b5('0xa7')])[0x0],_0x53ab9f[_0x93b5('0xa8')]);_0x4c96ec[_0x93b5('0x14')]=this['variables'][_0x53ab9f[_0x93b5('0x49')]];}}}}catch(_0x52ecba){logger[_0x93b5('0x3f')](_0x93b5('0xa4'),_0x53ab9f[_0x93b5('0x49')],util[_0x93b5('0x41')](_0x52ecba,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x93b5('0xb')][_0x93b5('0xa5')]=function(_0x34c6de,_0xcf3957,_0xc2550b){var _0x433a14=[_0x93b5('0xb0'),_0x93b5('0xb1'),_0x93b5('0xb2'),_0x93b5('0xb3'),_0x93b5('0xb4'),_0x93b5('0xb5'),_0x93b5('0xb6'),'rtpaudioqosrttbridged',_0x93b5('0xb7'),_0x93b5('0xb8'),_0x93b5('0xb9'),_0x93b5('0xba'),_0x93b5('0xbb'),_0x93b5('0xbc'),_0x93b5('0xbd'),_0x93b5('0xbe'),_0x93b5('0xbf'),_0x93b5('0xc0'),'memberrealtime'];if(!_['isNil'](_0xcf3957)&&!_[_0x93b5('0xc1')](_0x433a14,_0xcf3957)){if(_[_0x93b5('0x61')](this['variables'][_0x34c6de])){this[_0x93b5('0x14')][_0x34c6de]={};}this[_0x93b5('0x14')][_0x34c6de][_0xcf3957]=_0xc2550b;}};VoiceQueueReport['prototype']['syncHangup']=function(_0x31080f){try{if(this['isNotNull'](_0x31080f)){logger[_0x93b5('0x67')]('[%s][voiceQueueReport][hangup]',_0x31080f[_0x93b5('0x49')],util['inspect'](_0x31080f,{'showHidden':![],'depth':null}));if(this[_0x93b5('0xf')][_0x31080f['uniqueid']]){for(var _0x56fa08=0x0,_0x2f39da={};_0x56fa08<this[_0x93b5('0xf')][_0x31080f[_0x93b5('0x49')]][_0x93b5('0xc2')];_0x56fa08+=0x1){_0x2f39da=this[_0x93b5('0xf')][_0x31080f[_0x93b5('0x49')]][_0x56fa08];if(this[_0x93b5('0x12')][_0x2f39da[_0x93b5('0x66')]]){if(_0x2f39da[_0x93b5('0x90')]&&_0x2f39da[_0x93b5('0x92')]!=!![]){this[_0x93b5('0x12')][_0x2f39da[_0x93b5('0x66')]][_0x93b5('0x5a')]+=0x1;}if(_0x2f39da[_0x93b5('0x82')]){this['voiceQueues'][_0x2f39da[_0x93b5('0x66')]][_0x93b5('0xc3')]+=0x1;}this['voiceQueues'][_0x2f39da['queue']][_0x93b5('0x58')]+=moment(_0x2f39da[_0x93b5('0x88')])[_0x93b5('0xc4')](_0x2f39da['queuecallerjoinAt'],_0x93b5('0x99'))||0x0;if(_0x56fa08===this[_0x93b5('0xf')][_0x31080f[_0x93b5('0x49')]][_0x93b5('0xc2')]-0x1){this[_0x93b5('0x12')][_0x2f39da[_0x93b5('0x66')]][_0x93b5('0x57')]+=moment()['milliseconds'](0x0)[_0x93b5('0xc4')](_0x2f39da[_0x93b5('0x97')],_0x93b5('0x99'));this[_0x93b5('0x12')][_0x2f39da[_0x93b5('0x66')]][_0x93b5('0x59')]+=0x1;if(_0x2f39da[_0x93b5('0x8c')]){this['voiceQueues'][_0x2f39da[_0x93b5('0x66')]][_0x93b5('0x54')]+=0x1;this[_0x93b5('0x12')][_0x2f39da[_0x93b5('0x66')]][_0x93b5('0xc5')]+=moment()[_0x93b5('0xc6')](0x0)[_0x93b5('0xc4')](_0x2f39da[_0x93b5('0x88')],_0x93b5('0x99'));_0x2f39da[_0x93b5('0x7f')]=moment()[_0x93b5('0x50')](_0x93b5('0x74'));_0x2f39da[_0x93b5('0x90')]=![];_0x2f39da[_0x93b5('0x91')]=null;}if(_0x2f39da['queuecallerexit']&&_0x2f39da[_0x93b5('0x92')]!=!![]){_0x2f39da['lastevent']=_0x93b5('0x5a');logger[_0x93b5('0x67')](_0x93b5('0xc7'),_0x31080f[_0x93b5('0x49')],util[_0x93b5('0x41')](_0x2f39da,{'showHidden':![],'depth':null}));ami[_0x93b5('0x47')](_0x93b5('0xc8'),_0x2f39da);}if(_0x2f39da[_0x93b5('0x82')]){_0x2f39da[_0x93b5('0xc9')]=_0x93b5('0xc3');logger[_0x93b5('0x67')](_0x93b5('0xca'),_0x31080f[_0x93b5('0x49')],util[_0x93b5('0x41')](_0x2f39da,{'showHidden':![],'depth':null}));ami[_0x93b5('0x47')](_0x93b5('0xcb'),_0x2f39da);}}else{this[_0x93b5('0x12')][_0x2f39da[_0x93b5('0x66')]][_0x93b5('0x57')]+=this['voiceQueues'][_0x2f39da[_0x93b5('0x66')]][_0x93b5('0x58')];}logger[_0x93b5('0x78')](_0x93b5('0xcc'),_0x31080f['uniqueid'],_0x2f39da[_0x93b5('0x4b')],_0x2f39da[_0x93b5('0x52')],_0x31080f[_0x93b5('0xcd')]);this['channels'][_0x31080f[_0x93b5('0x49')]]=_0x2f39da;this[_0x93b5('0x45')](_0x2f39da,_0x93b5('0x22'));this[_0x93b5('0x6e')](this[_0x93b5('0x12')][_0x2f39da['queue']],'hangup');}}logger[_0x93b5('0x67')](_0x93b5('0xce'),_0x31080f[_0x93b5('0x49')],util[_0x93b5('0x41')](this[_0x93b5('0xf')][_0x31080f[_0x93b5('0x49')]],{'showHidden':![],'depth':null}));ami[_0x93b5('0x47')](_0x93b5('0xcf'),this[_0x93b5('0xf')][_0x31080f[_0x93b5('0x49')]]);delete this[_0x93b5('0xf')][_0x31080f[_0x93b5('0x49')]];delete this[_0x93b5('0x11')][_0x31080f[_0x93b5('0x49')]];}if(this['variables'][_0x31080f[_0x93b5('0x49')]]){delete this[_0x93b5('0x14')][_0x31080f[_0x93b5('0x49')]];}}}catch(_0x386dad){logger[_0x93b5('0x3f')]('[%s][voiceQueueReport][hangup]',_0x31080f[_0x93b5('0x49')],util[_0x93b5('0x41')](_0x386dad,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x93b5('0x2c')]=function(_0x291572){try{if(this[_0x93b5('0x71')](_0x291572)){logger[_0x93b5('0x67')](_0x93b5('0xd0'),_0x291572[_0x93b5('0x49')],util[_0x93b5('0x41')](_0x291572,{'showHidden':![],'depth':null}));var _0x2af6f6;if(this[_0x93b5('0xf')][_0x291572[_0x93b5('0xd1')]]){_0x2af6f6=_[_0x93b5('0x7e')](this[_0x93b5('0xf')][_0x291572[_0x93b5('0xd1')]]);_0x2af6f6['transferexten']=_0x291572[_0x93b5('0xd2')];_0x2af6f6[_0x93b5('0x9f')]=_0x291572[_0x93b5('0xd3')];_0x2af6f6['queuecallerexitreason']=_0x93b5('0xd4');_0x2af6f6[_0x93b5('0x92')]=!![];_0x2af6f6[_0x93b5('0x9b')]=_0x93b5('0xd5');if(this[_0x93b5('0xf')][_0x291572['secondtransfereruniqueid']]){var _0x308df6=this[_0x93b5('0xf')][_0x291572[_0x93b5('0xd3')]];this['queueReports'][_0x291572[_0x93b5('0xd3')]]=this[_0x93b5('0xf')][_0x291572[_0x93b5('0xd1')]];this[_0x93b5('0xf')][_0x291572[_0x93b5('0xd1')]]=_0x308df6;var _0x2a6b96=_[_0x93b5('0x7e')](this[_0x93b5('0xf')][_0x291572[_0x93b5('0xd1')]]);_0x2a6b96[_0x93b5('0x39')]=!![];}logger['info'](_0x93b5('0xd6'),_0x291572[_0x93b5('0x49')],_0x2af6f6[_0x93b5('0x4b')],_0x2af6f6['type'],_0x2af6f6['transferexten'],_0x2af6f6[_0x93b5('0x9f')]);}else if(this[_0x93b5('0xf')][_0x291572[_0x93b5('0xd7')]]){_0x2af6f6=_['last'](this['queueReports'][_0x291572[_0x93b5('0xd7')]]);_0x2af6f6[_0x93b5('0x9d')]=_0x291572[_0x93b5('0xd8')];_0x2af6f6[_0x93b5('0x9f')]=_0x291572[_0x93b5('0xd9')];_0x2af6f6[_0x93b5('0x84')]='ATTENDEDTRANSFER';_0x2af6f6['transfer']=!![];_0x2af6f6[_0x93b5('0x9b')]=_0x93b5('0xd5');if(this['queueReports'][_0x291572[_0x93b5('0xd9')]]){var _0x308df6=this[_0x93b5('0xf')][_0x291572['origtransfereruniqueid']];this[_0x93b5('0xf')][_0x291572[_0x93b5('0xd9')]]=this[_0x93b5('0xf')][_0x291572[_0x93b5('0xd7')]];this['queueReports'][_0x291572[_0x93b5('0xd7')]]=_0x308df6;var _0x2a6b96=_[_0x93b5('0x7e')](this[_0x93b5('0xf')][_0x291572['transfertargetuniqueid']]);_0x2a6b96['switch']=!![];}logger['info']('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x291572[_0x93b5('0x49')],_0x2af6f6['name'],_0x2af6f6[_0x93b5('0x52')],_0x2af6f6[_0x93b5('0x9d')],_0x2af6f6[_0x93b5('0x9f')]);}}}catch(_0xd2a57a){logger[_0x93b5('0x3f')]('[%s][voiceQueueReport][attendedtransfer]',_0x291572[_0x93b5('0x49')],util[_0x93b5('0x41')](_0xd2a57a,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x93b5('0x2e')]=function(_0x1a62b9){try{if(this[_0x93b5('0x71')](_0x1a62b9)){logger['debug'](_0x93b5('0xda'),_0x1a62b9['uniqueid'],util['inspect'](_0x1a62b9,{'showHidden':![],'depth':null}));if(this[_0x93b5('0xf')][_0x1a62b9['transfereeuniqueid']]){var _0x462ddb=_[_0x93b5('0x7e')](this[_0x93b5('0xf')][_0x1a62b9[_0x93b5('0xd1')]]);_0x462ddb['queuecallerexitreason']=_0x93b5('0xdb');_0x462ddb[_0x93b5('0x92')]=!![];_0x462ddb[_0x93b5('0x9b')]=_0x93b5('0xdc');_0x462ddb[_0x93b5('0x9d')]=_0x1a62b9[_0x93b5('0xdd')];_0x462ddb[_0x93b5('0x9f')]=_0x1a62b9[_0x93b5('0xd1')];logger[_0x93b5('0x78')](_0x93b5('0xde'),_0x1a62b9[_0x93b5('0x49')],_0x462ddb[_0x93b5('0x4b')],_0x462ddb[_0x93b5('0x52')],_0x462ddb[_0x93b5('0x9d')],_0x462ddb[_0x93b5('0x9f')]);this[_0x93b5('0x23')]({'event':_0x93b5('0xdf'),'uniqueid':_0x1a62b9[_0x93b5('0xd1')],'context':_0x1a62b9[_0x93b5('0xe0')],'channel':_0x1a62b9[_0x93b5('0xe1')]});}}}catch(_0x3b8f8b){logger[_0x93b5('0x3f')]('[%s][voiceQueueReport][blindtransfer]',_0x1a62b9[_0x93b5('0x49')],util['inspect'](_0x3b8f8b,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x93b5('0x28')]=function(_0x83d633){try{if(this['isNotNull'](_0x83d633)){logger[_0x93b5('0x67')](_0x93b5('0xe2'),_0x83d633[_0x93b5('0x49')],util[_0x93b5('0x41')](_0x83d633,{'showHidden':![],'depth':null}));if(this[_0x93b5('0xf')][_0x83d633[_0x93b5('0x49')]]){var _0x2511f3=_['last'](this['queueReports'][_0x83d633[_0x93b5('0x49')]]);if(!_['isNil'](_0x2511f3['queuecallerleaveAt'])){_0x2511f3[_0x93b5('0xe3')]=moment()[_0x93b5('0x50')](_0x93b5('0x74'));logger[_0x93b5('0x78')](_0x93b5('0xe4'),_0x83d633[_0x93b5('0x49')],_0x2511f3[_0x93b5('0xe3')]);}}}}catch(_0x341451){logger[_0x93b5('0x3f')](_0x93b5('0xe2'),_0x83d633[_0x93b5('0x49')],util['inspect'](_0x341451,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x93b5('0x2a')]=function(_0x2dcf1e){try{if(this['isNotNull'](_0x2dcf1e)){logger[_0x93b5('0x67')]('[%s][voiceQueueReport][musiconholdstop]',_0x2dcf1e[_0x93b5('0x49')],util[_0x93b5('0x41')](_0x2dcf1e,{'showHidden':![],'depth':null}));if(this[_0x93b5('0xf')][_0x2dcf1e['uniqueid']]){var _0x14ed94=_[_0x93b5('0x7e')](this[_0x93b5('0xf')][_0x2dcf1e[_0x93b5('0x49')]]);if(!_[_0x93b5('0xe5')](_0x14ed94[_0x93b5('0xe3')])){_0x14ed94[_0x93b5('0xe6')]+=moment()[_0x93b5('0xc6')](0x0)[_0x93b5('0xc4')](_0x14ed94[_0x93b5('0xe3')],'seconds');logger[_0x93b5('0x78')](_0x93b5('0xe7'),_0x2dcf1e[_0x93b5('0x49')],_0x14ed94[_0x93b5('0xe6')]);delete _0x14ed94[_0x93b5('0xe3')];}}}}catch(_0x2851f6){logger[_0x93b5('0x3f')]('[%s][voiceQueueReport][musiconholdstop]',_0x2dcf1e[_0x93b5('0x49')],util[_0x93b5('0x41')](_0x2851f6,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x93b5('0xb')]['syncNewExten']=function(_0x33fe1d){try{if(this[_0x93b5('0x71')](_0x33fe1d)){logger['debug']('[%s][voiceQueueReport][newexten]\x20event:',_0x33fe1d[_0x93b5('0x49')],util[_0x93b5('0x41')](_0x33fe1d,{'showHidden':![],'depth':null}));if(_0x33fe1d[_0x93b5('0xe8')]['toLowerCase']()===_0x93b5('0xe9')){_0x33fe1d[_0x93b5('0xea')]=_0x33fe1d['appdata']&&_0x33fe1d['appdata'][_0x93b5('0x94')]('CDR(routeAlias)')?_0x33fe1d[_0x93b5('0xeb')]:(_0x33fe1d['appdata']||_0x33fe1d[_0x93b5('0xea')])['toLowerCase']();if(_[_0x93b5('0x94')](_0x33fe1d[_0x93b5('0xea')][_0x93b5('0xec')](),_0x93b5('0xed'))){logger[_0x93b5('0x78')](_0x93b5('0xee'),_0x33fe1d[_0x93b5('0x49')],_0x33fe1d[_0x93b5('0xe8')],_0x33fe1d['applicationdata']);if(_[_0x93b5('0x61')](this[_0x93b5('0x11')][_0x33fe1d['uniqueid']]))this[_0x93b5('0x11')][_0x33fe1d[_0x93b5('0x49')]]={};var _0x1ca537=_0x33fe1d[_0x93b5('0xea')][_0x93b5('0xef')]('=');var _0x203407=_0x1ca537[0x0][_0x93b5('0xec')]()[_0x93b5('0xf0')](/cdr\((.*)\)/);if(_0x203407)this[_0x93b5('0x11')][_0x33fe1d[_0x93b5('0x49')]][_0x203407[0x1]]=_0x1ca537[0x1];}}}}catch(_0x5e7761){logger['error'](_0x93b5('0xf1'),_0x33fe1d[_0x93b5('0x49')],util[_0x93b5('0x41')](_0x5e7761,{'showHidden':![],'depth':null}));}};module[_0x93b5('0xf2')]=VoiceQueueReport;
\ No newline at end of file
index ee3db0b..af013e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1c3=['CreateReportAgentPreview','../client','createHistory','campaign','queue','Request'];(function(_0x5d5ae6,_0x4871e1){var _0x52cb1e=function(_0x598ee8){while(--_0x598ee8){_0x5d5ae6['push'](_0x5d5ae6['shift']());}};_0x52cb1e(++_0x4871e1);}(_0xb1c3,0x11b));var _0x3b1c=function(_0x40ec26,_0x5ac488){_0x40ec26=_0x40ec26-0x0;var _0x30b8d5=_0xb1c3[_0x40ec26];return _0x30b8d5;};'use strict';var client=require(_0x3b1c('0x0'));exports[_0x3b1c('0x1')]=function(_0x162cd7){return function(){_0x162cd7[_0x3b1c('0x2')]=_0x162cd7[_0x3b1c('0x3')];return client[_0x3b1c('0x4')](_0x3b1c('0x5'),{'body':_0x162cd7,'log':_0x3b1c('0x5')});};};
\ No newline at end of file
+var _0xe9cf=['createHistory','campaign','queue','Request','CreateReportAgentPreview','../client'];(function(_0xd8a8af,_0x1e93f0){var _0x5b7278=function(_0x458800){while(--_0x458800){_0xd8a8af['push'](_0xd8a8af['shift']());}};_0x5b7278(++_0x1e93f0);}(_0xe9cf,0x14f));var _0xfe9c=function(_0x68fd87,_0x17f037){_0x68fd87=_0x68fd87-0x0;var _0x559470=_0xe9cf[_0x68fd87];return _0x559470;};'use strict';var client=require(_0xfe9c('0x0'));exports[_0xfe9c('0x1')]=function(_0x33fbd0){return function(){_0x33fbd0[_0xfe9c('0x2')]=_0x33fbd0[_0xfe9c('0x3')];return client[_0xfe9c('0x4')](_0xfe9c('0x5'),{'body':_0x33fbd0,'log':_0xfe9c('0x5')});};};
\ No newline at end of file
index 50a2bf7..ca247ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd90f=['CreateAttachment','../client'];(function(_0x550500,_0x8dd443){var _0x113660=function(_0x4d97d3){while(--_0x4d97d3){_0x550500['push'](_0x550500['shift']());}};_0x113660(++_0x8dd443);}(_0xd90f,0x16f));var _0xfd90=function(_0x18cad9,_0x2a56ec){_0x18cad9=_0x18cad9-0x0;var _0x1345cd=_0xd90f[_0x18cad9];return _0x1345cd;};'use strict';var client=require(_0xfd90('0x0'));exports['create']=function(_0x3ade06){return client['Request'](_0xfd90('0x1'),{'body':_0x3ade06,'log':'CreateAttachment'});};
\ No newline at end of file
+var _0x8507=['../client','CreateAttachment'];(function(_0x54a0ba,_0x438b6d){var _0x3e618f=function(_0x3f28e3){while(--_0x3f28e3){_0x54a0ba['push'](_0x54a0ba['shift']());}};_0x3e618f(++_0x438b6d);}(_0x8507,0x14c));var _0x7850=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8507[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0x7850('0x0'));exports['create']=function(_0x20ea23){return client['Request'](_0x7850('0x1'),{'body':_0x20ea23,'log':_0x7850('0x1')});};
\ No newline at end of file
index a4f0df2..002ee9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialCutDigit','Trunk','callerid','active','TrunkBackup','Interval','SquareProject','getCampaign','getCampaigns','GetCampaign','name','type','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDMinWordLength'];(function(_0xb7e035,_0x29ebea){var _0x1510d8=function(_0x5b466e){while(--_0x5b466e){_0xb7e035['push'](_0xb7e035['shift']());}};_0x1510d8(++_0x29ebea);}(_0xadb5,0xad));var _0x5adb=function(_0x59d6fe,_0x387c13){_0x59d6fe=_0x59d6fe-0x0;var _0x500056=_0xadb5[_0x59d6fe];return _0x500056;};'use strict';var client=require('../client');exports[_0x5adb('0x0')]=function(){return function(){return client['Request'](_0x5adb('0x1'),{'options':{'raw':![],'attributes':['id',_0x5adb('0x2'),_0x5adb('0x3'),'active',_0x5adb('0x4'),_0x5adb('0x5'),_0x5adb('0x6'),'dialOriginateTimeout',_0x5adb('0x7'),_0x5adb('0x8'),_0x5adb('0x9'),_0x5adb('0xa'),_0x5adb('0xb'),_0x5adb('0xc'),_0x5adb('0xd'),_0x5adb('0xe'),_0x5adb('0xf'),_0x5adb('0x10'),_0x5adb('0x11'),_0x5adb('0x12'),_0x5adb('0x13'),_0x5adb('0x14'),'dialMachineRetryFrequency','dialAgentRejectMaxRetry',_0x5adb('0x15'),_0x5adb('0x16'),_0x5adb('0x17'),'dialAMDActive',_0x5adb('0x18'),'dialAMDGreeting',_0x5adb('0x19'),'dialAMDTotalAnalysisTime',_0x5adb('0x1a'),_0x5adb('0x1b'),_0x5adb('0x1c'),'dialAMDSilenceThreshold',_0x5adb('0x1d'),_0x5adb('0x1e'),_0x5adb('0x1f'),'dialRandomLastDigitCallerIdNumber',_0x5adb('0x20')],'include':[{'model':'Trunk','as':_0x5adb('0x21'),'attributes':['id',_0x5adb('0x2'),_0x5adb('0x22'),_0x5adb('0x23')]},{'model':_0x5adb('0x21'),'as':_0x5adb('0x24'),'attributes':['id',_0x5adb('0x2'),_0x5adb('0x22'),_0x5adb('0x23')]},{'model':'Interval','as':_0x5adb('0x25'),'attributes':['id','name'],'include':[{'model':_0x5adb('0x25'),'as':'Intervals','attributes':['id',_0x5adb('0x2'),'interval']}]},{'model':'SquareProject','as':_0x5adb('0x26'),'attributes':['id',_0x5adb('0x2')]}]},'log':_0x5adb('0x27')});};};
\ No newline at end of file
+var _0xc4aa=['Trunk','active','TrunkBackup','callerid','Interval','Intervals','interval','SquareProject','getCampaign','../client','getCampaigns','Request','GetCampaign','name','type','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit'];(function(_0x8ec947,_0x444fa2){var _0x115d2b=function(_0x4cbd1a){while(--_0x4cbd1a){_0x8ec947['push'](_0x8ec947['shift']());}};_0x115d2b(++_0x444fa2);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0xc4aa[_0x17b6e3];return _0x3906f3;};'use strict';var client=require(_0xac4a('0x0'));exports[_0xac4a('0x1')]=function(){return function(){return client[_0xac4a('0x2')](_0xac4a('0x3'),{'options':{'raw':![],'attributes':['id',_0xac4a('0x4'),_0xac4a('0x5'),'active','limitCalls','dialOriginateCallerIdName',_0xac4a('0x6'),_0xac4a('0x7'),_0xac4a('0x8'),_0xac4a('0x9'),_0xac4a('0xa'),_0xac4a('0xb'),_0xac4a('0xc'),_0xac4a('0xd'),'dialGlobalMaxRetry','dialNoSuchNumberMaxRetry',_0xac4a('0xe'),_0xac4a('0xf'),_0xac4a('0x10'),'dialAbandonedMaxRetry',_0xac4a('0x11'),_0xac4a('0x12'),_0xac4a('0x13'),'dialAgentRejectMaxRetry',_0xac4a('0x14'),'dialTimezone',_0xac4a('0x15'),'dialAMDActive',_0xac4a('0x16'),_0xac4a('0x17'),_0xac4a('0x18'),'dialAMDTotalAnalysisTime',_0xac4a('0x19'),_0xac4a('0x1a'),_0xac4a('0x1b'),_0xac4a('0x1c'),_0xac4a('0x1d'),_0xac4a('0x1e'),_0xac4a('0x1f'),_0xac4a('0x20'),_0xac4a('0x21')],'include':[{'model':_0xac4a('0x22'),'as':_0xac4a('0x22'),'attributes':['id',_0xac4a('0x4'),'callerid',_0xac4a('0x23')]},{'model':_0xac4a('0x22'),'as':_0xac4a('0x24'),'attributes':['id',_0xac4a('0x4'),_0xac4a('0x25'),_0xac4a('0x23')]},{'model':_0xac4a('0x26'),'as':_0xac4a('0x26'),'attributes':['id','name'],'include':[{'model':'Interval','as':_0xac4a('0x27'),'attributes':['id',_0xac4a('0x4'),_0xac4a('0x28')]}]},{'model':'SquareProject','as':_0xac4a('0x29'),'attributes':['id',_0xac4a('0x4')]}]},'log':_0xac4a('0x2a')});};};
\ No newline at end of file
index 01b336e..2691ffd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe63=['createContact','Request','CreateCmContact','../client'];(function(_0x5bff30,_0x40a7a4){var _0xf51b20=function(_0x3e5833){while(--_0x3e5833){_0x5bff30['push'](_0x5bff30['shift']());}};_0xf51b20(++_0x40a7a4);}(_0xbe63,0x1a3));var _0x3be6=function(_0x19b84f,_0x48765e){_0x19b84f=_0x19b84f-0x0;var _0x18067b=_0xbe63[_0x19b84f];return _0x18067b;};'use strict';var client=require(_0x3be6('0x0'));exports[_0x3be6('0x1')]=function(_0x1ddf21){return function(){return client[_0x3be6('0x2')](_0x3be6('0x3'),{'body':_0x1ddf21,'log':_0x3be6('0x3')});};};exports['getContacts']=function(_0x40c640){return function(){return client[_0x3be6('0x2')]('GetCmContact',{'options':_0x40c640,'log':'GetCmContact'});};};
\ No newline at end of file
+var _0x768c=['../client','createContact','Request','CreateCmContact','getContacts','GetCmContact'];(function(_0x49bd80,_0x5c7212){var _0x4f59f9=function(_0x3cb51f){while(--_0x3cb51f){_0x49bd80['push'](_0x49bd80['shift']());}};_0x4f59f9(++_0x5c7212);}(_0x768c,0x12c));var _0xc768=function(_0x3e8e98,_0x4d6478){_0x3e8e98=_0x3e8e98-0x0;var _0x387c2f=_0x768c[_0x3e8e98];return _0x387c2f;};'use strict';var client=require(_0xc768('0x0'));exports[_0xc768('0x1')]=function(_0x1d5196){return function(){return client[_0xc768('0x2')]('CreateCmContact',{'body':_0x1d5196,'log':_0xc768('0x3')});};};exports[_0xc768('0x4')]=function(_0x214708){return function(){return client['Request']('GetCmContact',{'options':_0x214708,'log':_0xc768('0x5')});};};
\ No newline at end of file
index 3a4f21d..2b7cf64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9862=['destroyContact','DestroyCmHopper','DESC','ASC','GetContactDialer','getContactDialerIvr','priority','scheduledat','GetContactDialerIvr','moveContactManagedDialer','campaign','queue','ContactId','MoveContactManagedDialer','countReScheduled','CountReScheduled','getContactPreview','User','Agent','name','VoiceQueue','unlockContact','getContactRecallMe','GetContactRecallMe','db.CmHopper.UserId','../client','moment','lodash','getContacts','GetCmHopper','CmContact','Contact','getCmHopper','updateContacts','Request','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ListId','VoiceQueueId','CampaignId'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9862,0x13f));var _0x2986=function(_0x5098ce,_0x43425c){_0x5098ce=_0x5098ce-0x0;var _0x17a3ac=_0x9862[_0x5098ce];return _0x17a3ac;};'use strict';var client=require(_0x2986('0x0'));var moment=require(_0x2986('0x1'));var _=require(_0x2986('0x2'));exports[_0x2986('0x3')]=function(_0x1e5c69,_0x4072ae){return function(){return client['Request'](_0x2986('0x4'),{'options':{'where':{'VoiceQueueId':_0x1e5c69},'include':[{'model':_0x2986('0x5'),'as':_0x2986('0x6')}],'limit':_0x4072ae,'raw':![]},'log':_0x2986('0x7')});};};exports[_0x2986('0x8')]=function(_0x251084,_0x28c439,_0x1165a0){return function(){return client[_0x2986('0x9')](_0x2986('0xa'),{'body':_0x251084,'options':{'where':{'VoiceQueueId':_0x28c439,'scheduledat':{'$lte':moment()[_0x2986('0xb')](_0x2986('0xc'))}},'limit':_0x1165a0},'log':'UpdateCmHopper'});};};exports[_0x2986('0xd')]=function(_0x37ebaf){return function(){return client[_0x2986('0x9')](_0x2986('0xa'),{'body':_0x37ebaf,'options':{'where':{'ContactId':_0x37ebaf['ContactId'],'ListId':_0x37ebaf[_0x2986('0xe')],'VoiceQueueId':_0x37ebaf[_0x2986('0xf')],'CampaignId':_0x37ebaf[_0x2986('0x10')]}},'log':_0x2986('0xd')});};};exports[_0x2986('0x11')]=function(_0x534b20,_0x58e0cf,_0x1bb35d){return function(){return client[_0x2986('0x9')](_0x2986('0x12'),{'options':{'where':{'VoiceQueueId':_0x534b20,'ListId':_0x58e0cf,'ContactId':_0x1bb35d}},'log':'DestroyCmHopper'});};};exports['getContactDialer']=function(_0x725cae,_0x1c7947,_0x2ee5d2,_0x7dc2e7){return function(){return client[_0x2986('0x9')]('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x725cae,'active':![],'scheduledat':{'$lte':moment()[_0x2986('0xb')](_0x2986('0xc'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x1c7947}}]},'order':[['priority',_0x2986('0x13')],['scheduledat',_0x7dc2e7],['id',_0x2986('0x14')]],'raw':!![],'limit':_0x2ee5d2},'log':_0x2986('0x15')});};};exports[_0x2986('0x16')]=function(_0xd18d20,_0x1cb3ce,_0x3e1f40){return function(){return client[_0x2986('0x9')](_0x2986('0x15'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0xd18d20,'active':![],'scheduledat':{'$lte':moment()['format'](_0x2986('0xc'))}},'include':[{'model':_0x2986('0x5'),'as':'Contact'}],'order':[[_0x2986('0x17'),_0x2986('0x13')],[_0x2986('0x18'),_0x3e1f40],['id',_0x2986('0x14')]],'raw':!![],'limit':_0x1cb3ce},'log':_0x2986('0x19')});};};exports[_0x2986('0x1a')]=function(_0x460749,_0x393d8d){return function(){_0x460749[_0x2986('0x1b')]=_0x460749[_0x2986('0x1c')];return client['Request']('MoveContactManagedDialer',{'body':_0x460749,'options':{'where':{'ContactId':_0x460749[_0x2986('0x1d')],'ListId':_0x460749[_0x2986('0xe')],'VoiceQueueId':_0x460749[_0x2986('0xf')],'CampaignId':_0x460749[_0x2986('0x10')],'active':_0x393d8d?undefined:!![]}},'log':_0x2986('0x1e')});};};exports[_0x2986('0x1f')]=function(_0x51eb68){return function(){return client[_0x2986('0x9')](_0x2986('0x20'),{'options':{'where':{'VoiceQueueId':_0x51eb68['id']?_0x51eb68['id']||null:null}},'log':_0x2986('0x1f')});};};exports[_0x2986('0x21')]=function(_0x437970){return function(){return client[_0x2986('0x9')]('GetCmHopperPreview',{'options':{'where':{'id':_0x437970},'include':[{'model':'CmContact','as':_0x2986('0x6')},{'model':_0x2986('0x22'),'as':_0x2986('0x23'),'attributes':['id',_0x2986('0x24')]},{'model':_0x2986('0x25'),'as':'Queue','attributes':['id',_0x2986('0x24')]}],'raw':!![]},'log':_0x2986('0x7')});};};exports[_0x2986('0x26')]=function(_0x16c7db,_0x197827,_0x5b9743){return function(){return client[_0x2986('0x9')]('UpdateCmHopper',{'body':_0x16c7db,'options':{'where':{'id':_0x197827},'limit':_0x5b9743},'log':_0x2986('0xa')});};};exports[_0x2986('0x27')]=function(_0x2e62dc,_0x4dabe1){return function(){return client[_0x2986('0x9')](_0x2986('0x28'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x2e62dc,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x2986('0xb')]('YYYY-MM-DD\x20HH:mm:ss')},'UserId':{'$in':_0x4dabe1}},'order':[[_0x2986('0x17'),_0x2986('0x13')],[_0x2986('0x18'),'DESC'],['id',_0x2986('0x14')]],'include':[{'model':'CmContact','as':_0x2986('0x6')},{'model':_0x2986('0x22'),'as':_0x2986('0x23'),'attributes':['id','name','voicePause']}],'group':_0x2986('0x29'),'raw':!![]},'log':'GetContactDialer'});};};
\ No newline at end of file
+var _0x67bf=['MoveContactManagedDialer','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','User','Agent','name','VoiceQueue','Queue','unlockContact','getContactRecallMe','voicePause','db.CmHopper.UserId','moment','lodash','getContacts','GetCmHopper','getCmHopper','Request','UpdateCmHopper','format','rescheduleContact','ListId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','getContactDialer','GetContactDialer','YYYY-MM-DD\x20HH:mm:ss','priority','DESC','scheduledat','ASC','getContactDialerIvr','CmContact','Contact','GetContactDialerIvr','moveContactManagedDialer','queue','ContactId'];(function(_0x45dd0e,_0x28e603){var _0x50e5ca=function(_0x46a412){while(--_0x46a412){_0x45dd0e['push'](_0x45dd0e['shift']());}};_0x50e5ca(++_0x28e603);}(_0x67bf,0x15e));var _0xf67b=function(_0x4e99e0,_0xd87512){_0x4e99e0=_0x4e99e0-0x0;var _0x2378d5=_0x67bf[_0x4e99e0];return _0x2378d5;};'use strict';var client=require('../client');var moment=require(_0xf67b('0x0'));var _=require(_0xf67b('0x1'));exports[_0xf67b('0x2')]=function(_0x401c49,_0x34d8f0){return function(){return client['Request'](_0xf67b('0x3'),{'options':{'where':{'VoiceQueueId':_0x401c49},'include':[{'model':'CmContact','as':'Contact'}],'limit':_0x34d8f0,'raw':![]},'log':_0xf67b('0x4')});};};exports['updateContacts']=function(_0x237b6d,_0x6c28a1,_0xafa1e){return function(){return client[_0xf67b('0x5')](_0xf67b('0x6'),{'body':_0x237b6d,'options':{'where':{'VoiceQueueId':_0x6c28a1,'scheduledat':{'$lte':moment()[_0xf67b('0x7')]('YYYY-MM-DD\x20HH:mm:ss')}},'limit':_0xafa1e},'log':_0xf67b('0x6')});};};exports[_0xf67b('0x8')]=function(_0x2b4a1b){return function(){return client[_0xf67b('0x5')](_0xf67b('0x6'),{'body':_0x2b4a1b,'options':{'where':{'ContactId':_0x2b4a1b['ContactId'],'ListId':_0x2b4a1b[_0xf67b('0x9')],'VoiceQueueId':_0x2b4a1b[_0xf67b('0xa')],'CampaignId':_0x2b4a1b[_0xf67b('0xb')]}},'log':_0xf67b('0x8')});};};exports[_0xf67b('0xc')]=function(_0x5d0187,_0x11b7b1,_0x24d9b6){return function(){return client['Request'](_0xf67b('0xd'),{'options':{'where':{'VoiceQueueId':_0x5d0187,'ListId':_0x11b7b1,'ContactId':_0x24d9b6}},'log':_0xf67b('0xd')});};};exports[_0xf67b('0xe')]=function(_0x3e9f7e,_0x4ae3f2,_0x4bc632,_0x526d30){return function(){return client[_0xf67b('0x5')](_0xf67b('0xf'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x3e9f7e,'active':![],'scheduledat':{'$lte':moment()[_0xf67b('0x7')](_0xf67b('0x10'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x4ae3f2}}]},'order':[[_0xf67b('0x11'),_0xf67b('0x12')],[_0xf67b('0x13'),_0x526d30],['id',_0xf67b('0x14')]],'raw':!![],'limit':_0x4bc632},'log':_0xf67b('0xf')});};};exports[_0xf67b('0x15')]=function(_0x5b5935,_0x2914be,_0x5c3f3d){return function(){return client[_0xf67b('0x5')](_0xf67b('0xf'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x5b5935,'active':![],'scheduledat':{'$lte':moment()['format'](_0xf67b('0x10'))}},'include':[{'model':_0xf67b('0x16'),'as':_0xf67b('0x17')}],'order':[[_0xf67b('0x11'),_0xf67b('0x12')],[_0xf67b('0x13'),_0x5c3f3d],['id',_0xf67b('0x14')]],'raw':!![],'limit':_0x2914be},'log':_0xf67b('0x18')});};};exports[_0xf67b('0x19')]=function(_0x5f4258,_0xb2b72a){return function(){_0x5f4258['campaign']=_0x5f4258[_0xf67b('0x1a')];return client[_0xf67b('0x5')]('MoveContactManagedDialer',{'body':_0x5f4258,'options':{'where':{'ContactId':_0x5f4258[_0xf67b('0x1b')],'ListId':_0x5f4258['ListId'],'VoiceQueueId':_0x5f4258[_0xf67b('0xa')],'CampaignId':_0x5f4258[_0xf67b('0xb')],'active':_0xb2b72a?undefined:!![]}},'log':_0xf67b('0x1c')});};};exports[_0xf67b('0x1d')]=function(_0x9def79){return function(){return client[_0xf67b('0x5')](_0xf67b('0x1e'),{'options':{'where':{'VoiceQueueId':_0x9def79['id']?_0x9def79['id']||null:null}},'log':_0xf67b('0x1d')});};};exports[_0xf67b('0x1f')]=function(_0x59dccc){return function(){return client[_0xf67b('0x5')](_0xf67b('0x20'),{'options':{'where':{'id':_0x59dccc},'include':[{'model':'CmContact','as':'Contact'},{'model':_0xf67b('0x21'),'as':_0xf67b('0x22'),'attributes':['id',_0xf67b('0x23')]},{'model':_0xf67b('0x24'),'as':_0xf67b('0x25'),'attributes':['id',_0xf67b('0x23')]}],'raw':!![]},'log':_0xf67b('0x4')});};};exports[_0xf67b('0x26')]=function(_0x587ef3,_0x5d3302,_0x4fb20e){return function(){return client['Request'](_0xf67b('0x6'),{'body':_0x587ef3,'options':{'where':{'id':_0x5d3302},'limit':_0x4fb20e},'log':_0xf67b('0x6')});};};exports[_0xf67b('0x27')]=function(_0x117b7d,_0x24e068){return function(){return client[_0xf67b('0x5')]('GetContactRecallMe',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x117b7d,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0xf67b('0x7')]('YYYY-MM-DD\x20HH:mm:ss')},'UserId':{'$in':_0x24e068}},'order':[[_0xf67b('0x11'),_0xf67b('0x12')],[_0xf67b('0x13'),_0xf67b('0x12')],['id',_0xf67b('0x14')]],'include':[{'model':_0xf67b('0x16'),'as':_0xf67b('0x17')},{'model':_0xf67b('0x21'),'as':'Agent','attributes':['id','name',_0xf67b('0x28')]}],'group':_0xf67b('0x29'),'raw':!![]},'log':'GetContactDialer'});};};
\ No newline at end of file
index 6a678c7..ed57a85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0565=['checkIsBlackList','Request','GetCmHopperBlack','VoiceQueueId','Contact','phone','checkIsBlackListIvr','CampaignId','../client'];(function(_0x42b32f,_0x2d8c82){var _0x48a98a=function(_0x10c3e2){while(--_0x10c3e2){_0x42b32f['push'](_0x42b32f['shift']());}};_0x48a98a(++_0x2d8c82);}(_0x0565,0xf2));var _0x5056=function(_0x2aec52,_0x59d962){_0x2aec52=_0x2aec52-0x0;var _0x3b8835=_0x0565[_0x2aec52];return _0x3b8835;};'use strict';var client=require(_0x5056('0x0'));exports[_0x5056('0x1')]=function(_0x2790a7){return function(){return client[_0x5056('0x2')](_0x5056('0x3'),{'options':{'where':{'VoiceQueueId':_0x2790a7[_0x5056('0x4')],'phone':_0x2790a7[_0x5056('0x5')][_0x5056('0x6')]},'raw':![]},'log':_0x5056('0x3')});};};exports[_0x5056('0x7')]=function(_0x554040){return function(){return client[_0x5056('0x2')](_0x5056('0x3'),{'options':{'where':{'CampaignId':_0x554040[_0x5056('0x8')],'phone':_0x554040[_0x5056('0x5')]['phone']},'raw':![]},'log':'GetCmHopperBlackIvr'});};};
\ No newline at end of file
+var _0xb9be=['checkIsBlackList','Request','GetCmHopperBlack','VoiceQueueId','Contact','phone','CampaignId','GetCmHopperBlackIvr','../client'];(function(_0x196128,_0x48aded){var _0x3cf4b1=function(_0x34c62f){while(--_0x34c62f){_0x196128['push'](_0x196128['shift']());}};_0x3cf4b1(++_0x48aded);}(_0xb9be,0xc5));var _0xeb9b=function(_0x219d87,_0x1cb6f7){_0x219d87=_0x219d87-0x0;var _0x22823d=_0xb9be[_0x219d87];return _0x22823d;};'use strict';var client=require(_0xeb9b('0x0'));exports[_0xeb9b('0x1')]=function(_0x314d6e){return function(){return client[_0xeb9b('0x2')](_0xeb9b('0x3'),{'options':{'where':{'VoiceQueueId':_0x314d6e[_0xeb9b('0x4')],'phone':_0x314d6e[_0xeb9b('0x5')][_0xeb9b('0x6')]},'raw':![]},'log':_0xeb9b('0x3')});};};exports['checkIsBlackListIvr']=function(_0x5006b8){return function(){return client[_0xeb9b('0x2')](_0xeb9b('0x3'),{'options':{'where':{'CampaignId':_0x5006b8[_0xeb9b('0x7')],'phone':_0x5006b8['Contact'][_0xeb9b('0x6')]},'raw':![]},'log':_0xeb9b('0x8')});};};
\ No newline at end of file
index 56b7c16..cebef1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3957=['CreateCmHopperFinal','../client','createContact','campaign','queue','Request'];(function(_0x2b8cc1,_0x2d898b){var _0x1516ca=function(_0x33f687){while(--_0x33f687){_0x2b8cc1['push'](_0x2b8cc1['shift']());}};_0x1516ca(++_0x2d898b);}(_0x3957,0x85));var _0x7395=function(_0x13f5fe,_0x460a12){_0x13f5fe=_0x13f5fe-0x0;var _0x481c05=_0x3957[_0x13f5fe];return _0x481c05;};'use strict';var client=require(_0x7395('0x0'));exports[_0x7395('0x1')]=function(_0x31394f){return function(){_0x31394f[_0x7395('0x2')]=_0x31394f[_0x7395('0x3')];return client[_0x7395('0x4')]('CreateCmHopperFinal',{'body':_0x31394f,'log':_0x7395('0x5')});};};
\ No newline at end of file
+var _0x9926=['Request','CreateCmHopperFinal','createContact','campaign','queue'];(function(_0x62c2d7,_0x5a96dd){var _0x439efc=function(_0x5ec3cb){while(--_0x5ec3cb){_0x62c2d7['push'](_0x62c2d7['shift']());}};_0x439efc(++_0x5a96dd);}(_0x9926,0x106));var _0x6992=function(_0x35d0ba,_0x5b7b82){_0x35d0ba=_0x35d0ba-0x0;var _0x6df3c6=_0x9926[_0x35d0ba];return _0x6df3c6;};'use strict';var client=require('../client');exports[_0x6992('0x0')]=function(_0x299173){return function(){_0x299173[_0x6992('0x1')]=_0x299173[_0x6992('0x2')];return client[_0x6992('0x3')](_0x6992('0x4'),{'body':_0x299173,'log':_0x6992('0x4')});};};
\ No newline at end of file
index 3cf4215..9e8c150 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8013=['ivr','../client','campaign','queue','CreateCmHopperHistory','AvgHandleTime','subtract','minutes','format','YYYY-MM-DD\x20HH:mm:ss','getVoiceQueueHopperHistory','Request','GetVoiceQueueHopperHistory','endOf','day','getCampaignHopperHistory','GetCampaignHopperHistory'];(function(_0x34021d,_0x753aa6){var _0x16597b=function(_0x2d040a){while(--_0x2d040a){_0x34021d['push'](_0x34021d['shift']());}};_0x16597b(++_0x753aa6);}(_0x8013,0x1cc));var _0x3801=function(_0x31f5b0,_0x3ceb60){_0x31f5b0=_0x31f5b0-0x0;var _0x25dfd3=_0x8013[_0x31f5b0];return _0x25dfd3;};'use strict';var client=require(_0x3801('0x0'));var moment=require('moment');exports['createHistory']=function(_0x59911f){return function(){_0x59911f[_0x3801('0x1')]=_0x59911f[_0x3801('0x2')];return client['Request'](_0x3801('0x3'),{'body':_0x59911f,'log':_0x3801('0x3')});};};exports['avgHandleTime']=function(_0x17d43d){return function(){return client['Request'](_0x3801('0x4'),{'options':{'where':{'endtime':{'$between':[moment()[_0x3801('0x5')](_0x17d43d,_0x3801('0x6'))[_0x3801('0x7')]('YYYY-MM-DD\x20HH:mm:ss'),moment()['format'](_0x3801('0x8'))]}},'raw':![]},'log':'GetCmHopperHistory'});};};exports[_0x3801('0x9')]=function(_0x2dcdbd){return function(){return client[_0x3801('0xa')](_0x3801('0xb'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf']('day')[_0x3801('0x7')](_0x3801('0x8')),moment()[_0x3801('0xc')](_0x3801('0xd'))[_0x3801('0x7')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0x3801('0x2')},'raw':![]},'log':'GetVoiceQueueHopperHistory'});};};exports[_0x3801('0xe')]=function(_0x48986e){return function(){return client['Request'](_0x3801('0xf'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0x3801('0xd'))[_0x3801('0x7')]('YYYY-MM-DD\x20HH:mm:ss'),moment()['endOf']('day')[_0x3801('0x7')](_0x3801('0x8'))]},'campaigntype':_0x3801('0x10')},'raw':![]},'log':_0x3801('0xf')});};};
\ No newline at end of file
+var _0x159d=['getVoiceQueueHopperHistory','startOf','day','endOf','GetCampaignHopperHistory','ivr','../client','moment','createHistory','queue','Request','AvgHandleTime','minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory'];(function(_0x19fccb,_0x3e95a9){var _0x3d9cd5=function(_0x56efd8){while(--_0x56efd8){_0x19fccb['push'](_0x19fccb['shift']());}};_0x3d9cd5(++_0x3e95a9);}(_0x159d,0x1c6));var _0xd159=function(_0x418f0a,_0x21137f){_0x418f0a=_0x418f0a-0x0;var _0xa6b49=_0x159d[_0x418f0a];return _0xa6b49;};'use strict';var client=require(_0xd159('0x0'));var moment=require(_0xd159('0x1'));exports[_0xd159('0x2')]=function(_0x1d2185){return function(){_0x1d2185['campaign']=_0x1d2185[_0xd159('0x3')];return client[_0xd159('0x4')]('CreateCmHopperHistory',{'body':_0x1d2185,'log':'CreateCmHopperHistory'});};};exports['avgHandleTime']=function(_0x337c71){return function(){return client[_0xd159('0x4')](_0xd159('0x5'),{'options':{'where':{'endtime':{'$between':[moment()['subtract'](_0x337c71,_0xd159('0x6'))[_0xd159('0x7')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xd159('0x7')](_0xd159('0x8'))]}},'raw':![]},'log':_0xd159('0x9')});};};exports[_0xd159('0xa')]=function(_0x56be00){return function(){return client[_0xd159('0x4')]('GetVoiceQueueHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0xd159('0xb')](_0xd159('0xc'))[_0xd159('0x7')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xd159('0xd')](_0xd159('0xc'))[_0xd159('0x7')](_0xd159('0x8'))]},'campaigntype':_0xd159('0x3')},'raw':![]},'log':'GetVoiceQueueHopperHistory'});};};exports['getCampaignHopperHistory']=function(_0x1fcdc1){return function(){return client['Request'](_0xd159('0xe'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xd159('0xb')]('day')[_0xd159('0x7')](_0xd159('0x8')),moment()[_0xd159('0xd')](_0xd159('0xc'))['format'](_0xd159('0x8'))]},'campaigntype':_0xd159('0xf')},'raw':![]},'log':_0xd159('0xe')});};};
\ No newline at end of file
index 0072052..3629044 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf13=['Request','GetFaxAccount','ecm','headerinfo','minrate','maxrate','modem','gateway','faxdetect','TrunkId','ListId','Trunk','name','callerid','active','getFaxAccount','NotifyFaxAccount','../client','getFaxAccounts'];(function(_0x2cd887,_0x22be8a){var _0x52f54a=function(_0x5f2768){while(--_0x5f2768){_0x2cd887['push'](_0x2cd887['shift']());}};_0x52f54a(++_0x22be8a);}(_0xbf13,0xe2));var _0x3bf1=function(_0x1d3377,_0xf5785f){_0x1d3377=_0x1d3377-0x0;var _0x359c90=_0xbf13[_0x1d3377];return _0x359c90;};'use strict';var client=require(_0x3bf1('0x0'));exports[_0x3bf1('0x1')]=function(){return function(){return client[_0x3bf1('0x2')](_0x3bf1('0x3'),{'options':{'raw':![],'attributes':['id','name','description',_0x3bf1('0x4'),_0x3bf1('0x5'),'localstationid',_0x3bf1('0x6'),_0x3bf1('0x7'),_0x3bf1('0x8'),_0x3bf1('0x9'),_0x3bf1('0xa'),'t38timeout','tech',_0x3bf1('0xb'),_0x3bf1('0xc'),'key'],'include':[{'model':_0x3bf1('0xd'),'as':_0x3bf1('0xd'),'attributes':['id',_0x3bf1('0xe'),_0x3bf1('0xf'),_0x3bf1('0x10')]}]},'log':_0x3bf1('0x11')});};};exports['notify']=function(_0x50bf27,_0x421d0c){return client[_0x3bf1('0x2')]('NotifyFaxAccount',{'account':{'id':_0x50bf27},'body':_0x421d0c,'log':_0x3bf1('0x12')});};
\ No newline at end of file
+var _0x41d0=['ListId','Trunk','getFaxAccount','NotifyFaxAccount','../client','getFaxAccounts','Request','GetFaxAccount','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','gateway','faxdetect','tech'];(function(_0x4022e2,_0x163de4){var _0x4c502=function(_0x51c4e5){while(--_0x51c4e5){_0x4022e2['push'](_0x4022e2['shift']());}};_0x4c502(++_0x163de4);}(_0x41d0,0x1c6));var _0x041d=function(_0x3167b1,_0x5ad266){_0x3167b1=_0x3167b1-0x0;var _0x362152=_0x41d0[_0x3167b1];return _0x362152;};'use strict';var client=require(_0x041d('0x0'));exports[_0x041d('0x1')]=function(){return function(){return client[_0x041d('0x2')](_0x041d('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x041d('0x4'),_0x041d('0x5'),_0x041d('0x6'),_0x041d('0x7'),_0x041d('0x8'),_0x041d('0x9'),_0x041d('0xa'),_0x041d('0xb'),_0x041d('0xc'),'t38timeout',_0x041d('0xd'),'TrunkId',_0x041d('0xe'),'key'],'include':[{'model':_0x041d('0xf'),'as':_0x041d('0xf'),'attributes':['id','name','callerid','active']}]},'log':_0x041d('0x10')});};};exports['notify']=function(_0x413ab6,_0x517f82){return client[_0x041d('0x2')](_0x041d('0x11'),{'account':{'id':_0x413ab6},'body':_0x517f82,'log':_0x041d('0x11')});};
\ No newline at end of file
index f2003ff..8ef83ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd58e=['UpdateFaxMessage','../client','update'];(function(_0x5671ce,_0x19aae7){var _0x28ac30=function(_0x42587f){while(--_0x42587f){_0x5671ce['push'](_0x5671ce['shift']());}};_0x28ac30(++_0x19aae7);}(_0xd58e,0x17b));var _0xed58=function(_0x869db8,_0x534c84){_0x869db8=_0x869db8-0x0;var _0x5832e2=_0xd58e[_0x869db8];return _0x5832e2;};'use strict';var client=require(_0xed58('0x0'));exports[_0xed58('0x1')]=function(_0x23bf86,_0x42df53){return client['Request']('UpdateFaxMessage',{'body':_0x42df53,'options':{'where':{'AttachmentId':_0x23bf86}},'log':_0xed58('0x2')});};
\ No newline at end of file
+var _0xe13b=['UpdateFaxMessage','../client','Request'];(function(_0x695b76,_0x551526){var _0x1dc21f=function(_0x5fdb1c){while(--_0x5fdb1c){_0x695b76['push'](_0x695b76['shift']());}};_0x1dc21f(++_0x551526);}(_0xe13b,0x109));var _0xbe13=function(_0x2e28b8,_0x4190bc){_0x2e28b8=_0x2e28b8-0x0;var _0x1b40b5=_0xe13b[_0x2e28b8];return _0x1b40b5;};'use strict';var client=require(_0xbe13('0x0'));exports['update']=function(_0x1a7ca3,_0x4b8c20){return client[_0xbe13('0x1')](_0xbe13('0x2'),{'body':_0x4b8c20,'options':{'where':{'AttachmentId':_0x1a7ca3}},'log':'UpdateFaxMessage'});};
\ No newline at end of file
index b6e1e80..d1cade3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3113=['Request','GetDeskAccount','description','username','password','remoteUri','authType','type','serverUrl','DeskConfiguration','Configurations','name','DeskField','Subjects','content','Variable','Descriptions','keyType','keyContent','variableName','nameField','customField','Tag','Tags','getDeskAccounts'];(function(_0x256cc1,_0x568424){var _0x330d0a=function(_0x4c8cc1){while(--_0x4c8cc1){_0x256cc1['push'](_0x256cc1['shift']());}};_0x330d0a(++_0x568424);}(_0x3113,0x1a8));var _0x3311=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x3113[_0x321bb2];return _0x9c12ed;};'use strict';var client=require('../../client');exports[_0x3311('0x0')]=function(){return function(_0x100de0){return client[_0x3311('0x1')](_0x3311('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x3311('0x3'),_0x3311('0x4'),_0x3311('0x5'),_0x3311('0x6'),_0x3311('0x7'),_0x3311('0x8'),_0x3311('0x9')],'include':[{'model':_0x3311('0xa'),'as':_0x3311('0xb'),'attributes':['id',_0x3311('0xc')],'include':[{'model':_0x3311('0xd'),'as':_0x3311('0xe'),'attributes':['id',_0x3311('0x8'),_0x3311('0xf'),'variableName'],'include':[{'model':'Variable','as':_0x3311('0x10'),'attributes':['id',_0x3311('0xc')]}]},{'model':'DeskField','as':_0x3311('0x11'),'attributes':['id',_0x3311('0x8'),_0x3311('0xf'),'key',_0x3311('0x12'),_0x3311('0x13'),_0x3311('0x14')],'include':[{'model':_0x3311('0x10'),'as':_0x3311('0x10'),'attributes':['id','name']}]},{'model':_0x3311('0xd'),'as':'Fields','attributes':['id',_0x3311('0x8'),_0x3311('0xf'),'idField',_0x3311('0x15'),_0x3311('0x16'),_0x3311('0x14')],'include':[{'model':_0x3311('0x10'),'as':_0x3311('0x10'),'attributes':['id',_0x3311('0xc')]}]},{'model':_0x3311('0x17'),'as':_0x3311('0x18'),'attributes':['id',_0x3311('0xc')]}]}]},'log':_0x3311('0x2')});};};
\ No newline at end of file
+var _0xfc7e=['Request','name','username','password','remoteUri','authType','type','serverUrl','DeskConfiguration','Configurations','DeskField','Subjects','content','Variable','Descriptions','key','nameField','customField','variableName','Tag','Tags','GetDeskAccount','../../client','getDeskAccounts'];(function(_0xb06cfa,_0x39e14d){var _0x32b7b5=function(_0x18a864){while(--_0x18a864){_0xb06cfa['push'](_0xb06cfa['shift']());}};_0x32b7b5(++_0x39e14d);}(_0xfc7e,0xd6));var _0xefc7=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xfc7e[_0x321bb2];return _0x9c12ed;};'use strict';var client=require(_0xefc7('0x0'));exports[_0xefc7('0x1')]=function(){return function(_0x2b1e6c){return client[_0xefc7('0x2')]('GetDeskAccount',{'options':{'raw':![],'attributes':['id',_0xefc7('0x3'),'description',_0xefc7('0x4'),_0xefc7('0x5'),_0xefc7('0x6'),_0xefc7('0x7'),_0xefc7('0x8'),_0xefc7('0x9')],'include':[{'model':_0xefc7('0xa'),'as':_0xefc7('0xb'),'attributes':['id',_0xefc7('0x3')],'include':[{'model':_0xefc7('0xc'),'as':_0xefc7('0xd'),'attributes':['id',_0xefc7('0x8'),_0xefc7('0xe'),'variableName'],'include':[{'model':_0xefc7('0xf'),'as':_0xefc7('0xf'),'attributes':['id',_0xefc7('0x3')]}]},{'model':_0xefc7('0xc'),'as':_0xefc7('0x10'),'attributes':['id','type',_0xefc7('0xe'),_0xefc7('0x11'),'keyType','keyContent','variableName'],'include':[{'model':'Variable','as':_0xefc7('0xf'),'attributes':['id',_0xefc7('0x3')]}]},{'model':'DeskField','as':'Fields','attributes':['id','type',_0xefc7('0xe'),'idField',_0xefc7('0x12'),_0xefc7('0x13'),_0xefc7('0x14')],'include':[{'model':_0xefc7('0xf'),'as':_0xefc7('0xf'),'attributes':['id','name']}]},{'model':_0xefc7('0x15'),'as':_0xefc7('0x16'),'attributes':['id','name']}]}]},'log':_0xefc7('0x17')});};};
\ No newline at end of file
index 19e1e85..97c40de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8814=['type','key','keyType','keyContent','Fields','nameField','customField','GetDynamics365Account','name','username','tenantId','clientId','clientSecret','serverUrl','description','Dynamics365Configuration','Configurations','Dynamics365Field','Subjects','content','variableName','Variable','Descriptions'];(function(_0x4da78e,_0x13cb84){var _0x4463b1=function(_0x41aaf1){while(--_0x41aaf1){_0x4da78e['push'](_0x4da78e['shift']());}};_0x4463b1(++_0x13cb84);}(_0x8814,0x7a));var _0x4881=function(_0x243217,_0x522951){_0x243217=_0x243217-0x0;var _0x478029=_0x8814[_0x243217];return _0x478029;};'use strict';var client=require('../../client');exports['getDynamics365Accounts']=function(){return function(_0x2f3f73){return client['Request'](_0x4881('0x0'),{'options':{'raw':![],'attributes':['id',_0x4881('0x1'),_0x4881('0x2'),'password','remoteUri',_0x4881('0x3'),_0x4881('0x4'),_0x4881('0x5'),_0x4881('0x6'),_0x4881('0x7')],'include':[{'model':_0x4881('0x8'),'as':_0x4881('0x9'),'attributes':['id','name','ticketType'],'include':[{'model':_0x4881('0xa'),'as':_0x4881('0xb'),'attributes':['id','type',_0x4881('0xc'),_0x4881('0xd')],'include':[{'model':_0x4881('0xe'),'as':_0x4881('0xe'),'attributes':['id',_0x4881('0x1')]}]},{'model':_0x4881('0xa'),'as':_0x4881('0xf'),'attributes':['id',_0x4881('0x10'),'content',_0x4881('0x11'),_0x4881('0x12'),_0x4881('0x13'),_0x4881('0xd')],'include':[{'model':_0x4881('0xe'),'as':_0x4881('0xe'),'attributes':['id',_0x4881('0x1')]}]},{'model':'Dynamics365Field','as':_0x4881('0x14'),'attributes':['id',_0x4881('0x10'),_0x4881('0xc'),'idField',_0x4881('0x15'),_0x4881('0x16'),_0x4881('0xd')],'include':[{'model':'Variable','as':_0x4881('0xe'),'attributes':['id',_0x4881('0x1')]}]}]}]},'log':_0x4881('0x0')});};};
\ No newline at end of file
+var _0x88bd=['password','remoteUri','tenantId','clientId','clientSecret','serverUrl','description','Dynamics365Configuration','Configurations','ticketType','Dynamics365Field','Subjects','type','variableName','Variable','content','key','keyType','keyContent','Fields','idField','nameField','customField','../../client','getDynamics365Accounts','Request','GetDynamics365Account','name'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x88bd,0x113));var _0xd88b=function(_0x456dc1,_0x4464e8){_0x456dc1=_0x456dc1-0x0;var _0x443faf=_0x88bd[_0x456dc1];return _0x443faf;};'use strict';var client=require(_0xd88b('0x0'));exports[_0xd88b('0x1')]=function(){return function(_0x58881c){return client[_0xd88b('0x2')](_0xd88b('0x3'),{'options':{'raw':![],'attributes':['id',_0xd88b('0x4'),'username',_0xd88b('0x5'),_0xd88b('0x6'),_0xd88b('0x7'),_0xd88b('0x8'),_0xd88b('0x9'),_0xd88b('0xa'),_0xd88b('0xb')],'include':[{'model':_0xd88b('0xc'),'as':_0xd88b('0xd'),'attributes':['id',_0xd88b('0x4'),_0xd88b('0xe')],'include':[{'model':_0xd88b('0xf'),'as':_0xd88b('0x10'),'attributes':['id',_0xd88b('0x11'),'content',_0xd88b('0x12')],'include':[{'model':_0xd88b('0x13'),'as':_0xd88b('0x13'),'attributes':['id','name']}]},{'model':_0xd88b('0xf'),'as':'Descriptions','attributes':['id',_0xd88b('0x11'),_0xd88b('0x14'),_0xd88b('0x15'),_0xd88b('0x16'),_0xd88b('0x17'),_0xd88b('0x12')],'include':[{'model':_0xd88b('0x13'),'as':_0xd88b('0x13'),'attributes':['id',_0xd88b('0x4')]}]},{'model':_0xd88b('0xf'),'as':_0xd88b('0x18'),'attributes':['id',_0xd88b('0x11'),_0xd88b('0x14'),_0xd88b('0x19'),_0xd88b('0x1a'),_0xd88b('0x1b'),_0xd88b('0x12')],'include':[{'model':_0xd88b('0x13'),'as':'Variable','attributes':['id',_0xd88b('0x4')]}]}]}]},'log':_0xd88b('0x3')});};};
\ No newline at end of file
index 80154fe..6c0202e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb077=['apiKey','remoteUri','serverUrl','Tag','type','variableName','Variable','FreshdeskField','Descriptions','content','key','keyContent','Fields','idField','nameField','customField','GetFreshdeskAccount','../../client','Request','name','username'];(function(_0x497c36,_0x3fafcf){var _0x842a69=function(_0x435dae){while(--_0x435dae){_0x497c36['push'](_0x497c36['shift']());}};_0x842a69(++_0x3fafcf);}(_0xb077,0x7a));var _0x7b07=function(_0x1736a7,_0x30fe0f){_0x1736a7=_0x1736a7-0x0;var _0xa32eaf=_0xb077[_0x1736a7];return _0xa32eaf;};'use strict';var client=require(_0x7b07('0x0'));exports['getFreshdeskAccounts']=function(){return function(_0x4a69eb){return client[_0x7b07('0x1')]('GetFreshdeskAccount',{'options':{'raw':![],'attributes':['id',_0x7b07('0x2'),_0x7b07('0x3'),_0x7b07('0x4'),_0x7b07('0x5'),_0x7b07('0x6')],'include':[{'model':'FreshdeskConfiguration','as':'Configurations','attributes':['id',_0x7b07('0x2')],'include':[{'model':_0x7b07('0x7'),'attributes':['id',_0x7b07('0x2')]},{'model':'FreshdeskField','as':'Subjects','attributes':['id',_0x7b07('0x8'),'content',_0x7b07('0x9')],'include':[{'model':_0x7b07('0xa'),'as':_0x7b07('0xa'),'attributes':['id',_0x7b07('0x2')]}]},{'model':_0x7b07('0xb'),'as':_0x7b07('0xc'),'attributes':['id',_0x7b07('0x8'),_0x7b07('0xd'),_0x7b07('0xe'),'keyType',_0x7b07('0xf'),_0x7b07('0x9')],'include':[{'model':_0x7b07('0xa'),'as':'Variable','attributes':['id',_0x7b07('0x2')]}]},{'model':_0x7b07('0xb'),'as':_0x7b07('0x10'),'attributes':['id',_0x7b07('0x8'),'content',_0x7b07('0x11'),_0x7b07('0x12'),_0x7b07('0x13'),_0x7b07('0x9')],'include':[{'model':'Variable','as':_0x7b07('0xa'),'attributes':['id',_0x7b07('0x2')]}]}]}]},'log':_0x7b07('0x14')});};};
\ No newline at end of file
+var _0x851a=['serverUrl','Configurations','Tag','FreshdeskField','type','content','variableName','Variable','key','keyType','keyContent','Fields','idField','nameField','customField','../../client','Request','GetFreshdeskAccount','name','username','apiKey','remoteUri'];(function(_0x159722,_0x1416c4){var _0x31c876=function(_0x12bcb5){while(--_0x12bcb5){_0x159722['push'](_0x159722['shift']());}};_0x31c876(++_0x1416c4);}(_0x851a,0x19b));var _0xa851=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x851a[_0x4e676e];return _0x336a3c;};'use strict';var client=require(_0xa851('0x0'));exports['getFreshdeskAccounts']=function(){return function(_0x3f8346){return client[_0xa851('0x1')](_0xa851('0x2'),{'options':{'raw':![],'attributes':['id',_0xa851('0x3'),_0xa851('0x4'),_0xa851('0x5'),_0xa851('0x6'),_0xa851('0x7')],'include':[{'model':'FreshdeskConfiguration','as':_0xa851('0x8'),'attributes':['id','name'],'include':[{'model':_0xa851('0x9'),'attributes':['id',_0xa851('0x3')]},{'model':_0xa851('0xa'),'as':'Subjects','attributes':['id',_0xa851('0xb'),_0xa851('0xc'),_0xa851('0xd')],'include':[{'model':_0xa851('0xe'),'as':'Variable','attributes':['id',_0xa851('0x3')]}]},{'model':_0xa851('0xa'),'as':'Descriptions','attributes':['id',_0xa851('0xb'),_0xa851('0xc'),_0xa851('0xf'),_0xa851('0x10'),_0xa851('0x11'),_0xa851('0xd')],'include':[{'model':_0xa851('0xe'),'as':_0xa851('0xe'),'attributes':['id',_0xa851('0x3')]}]},{'model':_0xa851('0xa'),'as':_0xa851('0x12'),'attributes':['id',_0xa851('0xb'),_0xa851('0xc'),_0xa851('0x13'),_0xa851('0x14'),_0xa851('0x15'),_0xa851('0xd')],'include':[{'model':_0xa851('0xe'),'as':'Variable','attributes':['id',_0xa851('0x3')]}]}]}]},'log':_0xa851('0x2')});};};
\ No newline at end of file
index 7bc83a1..5fc58b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c60=['Request','name','FreshsalesConfiguration','Configurations','FreshsalesField','Subjects','type','content','Variable','key','keyContent','variableName','GetFreshsalesccount','../../client','getFreshsalesAccounts'];(function(_0x3d87ad,_0x9fef35){var _0x55d1e7=function(_0x5bc34e){while(--_0x5bc34e){_0x3d87ad['push'](_0x3d87ad['shift']());}};_0x55d1e7(++_0x9fef35);}(_0x4c60,0xc1));var _0x04c6=function(_0xb8ccea,_0x502d51){_0xb8ccea=_0xb8ccea-0x0;var _0x91e726=_0x4c60[_0xb8ccea];return _0x91e726;};'use strict';var client=require(_0x04c6('0x0'));exports[_0x04c6('0x1')]=function(){return function(_0x1d5492){return client[_0x04c6('0x2')]('GetFreshsalesAccount',{'options':{'raw':![],'attributes':['id',_0x04c6('0x3'),'username','apiKey','remoteUri','serverUrl'],'include':[{'model':_0x04c6('0x4'),'as':_0x04c6('0x5'),'attributes':['id',_0x04c6('0x3')],'include':[{'model':_0x04c6('0x6'),'as':_0x04c6('0x7'),'attributes':['id',_0x04c6('0x8'),_0x04c6('0x9'),'variableName'],'include':[{'model':_0x04c6('0xa'),'as':_0x04c6('0xa'),'attributes':['id',_0x04c6('0x3')]}]},{'model':_0x04c6('0x6'),'as':'Descriptions','attributes':['id','type','content',_0x04c6('0xb'),'keyType',_0x04c6('0xc'),_0x04c6('0xd')],'include':[{'model':'Variable','as':_0x04c6('0xa'),'attributes':['id',_0x04c6('0x3')]}]}]}]},'log':_0x04c6('0xe')});};};
\ No newline at end of file
+var _0xc21e=['Request','GetFreshsalesAccount','name','username','remoteUri','serverUrl','FreshsalesConfiguration','Configurations','FreshsalesField','Subjects','type','variableName','Variable','content','key','GetFreshsalesccount','getFreshsalesAccounts'];(function(_0x5614a3,_0x1ebbb3){var _0x15f60c=function(_0x213c69){while(--_0x213c69){_0x5614a3['push'](_0x5614a3['shift']());}};_0x15f60c(++_0x1ebbb3);}(_0xc21e,0x1ca));var _0xec21=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc21e[_0x20a584];return _0x4b41a8;};'use strict';var client=require('../../client');exports[_0xec21('0x0')]=function(){return function(_0x2f8bc2){return client[_0xec21('0x1')](_0xec21('0x2'),{'options':{'raw':![],'attributes':['id',_0xec21('0x3'),_0xec21('0x4'),'apiKey',_0xec21('0x5'),_0xec21('0x6')],'include':[{'model':_0xec21('0x7'),'as':_0xec21('0x8'),'attributes':['id',_0xec21('0x3')],'include':[{'model':_0xec21('0x9'),'as':_0xec21('0xa'),'attributes':['id',_0xec21('0xb'),'content',_0xec21('0xc')],'include':[{'model':_0xec21('0xd'),'as':_0xec21('0xd'),'attributes':['id',_0xec21('0x3')]}]},{'model':_0xec21('0x9'),'as':'Descriptions','attributes':['id',_0xec21('0xb'),_0xec21('0xe'),_0xec21('0xf'),'keyType','keyContent',_0xec21('0xc')],'include':[{'model':_0xec21('0xd'),'as':'Variable','attributes':['id',_0xec21('0x3')]}]}]}]},'log':_0xec21('0x10')});};};
\ No newline at end of file
index b0e8f1d..ebd2e1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e6d=['Configurations','name','moduleSearch','ticketType','leadId','additionalSearchContact','additionalSearchLead','Variable','SalesforceField','Descriptions','../../client','Request','GetSalesforceAccount','username','password','remoteUri','clientId','securityToken','serverUrl'];(function(_0x2f3be2,_0x224419){var _0x4cf7b0=function(_0xa03718){while(--_0xa03718){_0x2f3be2['push'](_0x2f3be2['shift']());}};_0x4cf7b0(++_0x224419);}(_0x9e6d,0x1d2));var _0xd9e6=function(_0x493f93,_0x37dca7){_0x493f93=_0x493f93-0x0;var _0x34e3c6=_0x9e6d[_0x493f93];return _0x34e3c6;};'use strict';var client=require(_0xd9e6('0x0'));exports['getSalesforceAccounts']=function(){return function(_0x225f9b){return client[_0xd9e6('0x1')](_0xd9e6('0x2'),{'options':{'raw':![],'attributes':['id','name',_0xd9e6('0x3'),_0xd9e6('0x4'),_0xd9e6('0x5'),_0xd9e6('0x6'),'clientSecret',_0xd9e6('0x7'),_0xd9e6('0x8'),'type'],'include':[{'model':'SalesforceConfiguration','as':_0xd9e6('0x9'),'attributes':['id',_0xd9e6('0xa'),_0xd9e6('0xb'),'moduleCreate',_0xd9e6('0xc'),_0xd9e6('0xd'),'additionalSearchAccount',_0xd9e6('0xe'),_0xd9e6('0xf')],'include':[{'model':'SalesforceField','as':'Subjects','include':[{'model':_0xd9e6('0x10'),'as':_0xd9e6('0x10'),'attributes':['id',_0xd9e6('0xa')]}]},{'model':_0xd9e6('0x11'),'as':_0xd9e6('0x12'),'include':[{'model':_0xd9e6('0x10'),'as':_0xd9e6('0x10'),'attributes':['id',_0xd9e6('0xa')]}]},{'model':_0xd9e6('0x11'),'as':'Fields','include':[{'model':_0xd9e6('0x10'),'as':_0xd9e6('0x10'),'attributes':['id','name']}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
+var _0x2fee=['moduleCreate','leadId','additionalSearchAccount','additionalSearchLead','SalesforceField','Subjects','Variable','Descriptions','Fields','../../client','GetSalesforceAccount','username','password','clientId','clientSecret','securityToken','type','SalesforceConfiguration','Configurations','name','moduleSearch'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x2fee,0x11a));var _0xe2fe=function(_0x329fde,_0x2c7da0){_0x329fde=_0x329fde-0x0;var _0x20184c=_0x2fee[_0x329fde];return _0x20184c;};'use strict';var client=require(_0xe2fe('0x0'));exports['getSalesforceAccounts']=function(){return function(_0xf0331c){return client['Request'](_0xe2fe('0x1'),{'options':{'raw':![],'attributes':['id','name',_0xe2fe('0x2'),_0xe2fe('0x3'),'remoteUri',_0xe2fe('0x4'),_0xe2fe('0x5'),_0xe2fe('0x6'),'serverUrl',_0xe2fe('0x7')],'include':[{'model':_0xe2fe('0x8'),'as':_0xe2fe('0x9'),'attributes':['id',_0xe2fe('0xa'),_0xe2fe('0xb'),_0xe2fe('0xc'),'ticketType',_0xe2fe('0xd'),_0xe2fe('0xe'),'additionalSearchContact',_0xe2fe('0xf')],'include':[{'model':_0xe2fe('0x10'),'as':_0xe2fe('0x11'),'include':[{'model':_0xe2fe('0x12'),'as':_0xe2fe('0x12'),'attributes':['id',_0xe2fe('0xa')]}]},{'model':_0xe2fe('0x10'),'as':_0xe2fe('0x13'),'include':[{'model':_0xe2fe('0x12'),'as':_0xe2fe('0x12'),'attributes':['id',_0xe2fe('0xa')]}]},{'model':'SalesforceField','as':_0xe2fe('0x14'),'include':[{'model':'Variable','as':_0xe2fe('0x12'),'attributes':['id','name']}]}]}]},'log':_0xe2fe('0x1')});};};
\ No newline at end of file
index 10da5c4..f163d34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x187d=['../../client','Request','GetServicenowAccount','name','description','username','email','remoteUri','ServicenowConfiguration','Configurations','ServicenowField','Subjects','type','content','variableName','Variable','Descriptions','keyType','keyContent','idField','nameField'];(function(_0x710815,_0x520da8){var _0x5b3b89=function(_0x2e1a8e){while(--_0x2e1a8e){_0x710815['push'](_0x710815['shift']());}};_0x5b3b89(++_0x520da8);}(_0x187d,0x93));var _0xd187=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0x187d[_0x5e3b04];return _0x1fc44d;};'use strict';var client=require(_0xd187('0x0'));exports['getServicenowAccounts']=function(){return function(_0x3b9b6d){return client[_0xd187('0x1')](_0xd187('0x2'),{'options':{'raw':![],'attributes':['id',_0xd187('0x3'),_0xd187('0x4'),_0xd187('0x5'),'password',_0xd187('0x6'),_0xd187('0x7'),'serverUrl'],'include':[{'model':_0xd187('0x8'),'as':_0xd187('0x9'),'attributes':['id',_0xd187('0x3')],'include':[{'model':_0xd187('0xa'),'as':_0xd187('0xb'),'attributes':['id',_0xd187('0xc'),_0xd187('0xd'),_0xd187('0xe')],'include':[{'model':'Variable','as':_0xd187('0xf'),'attributes':['id',_0xd187('0x3')]}]},{'model':_0xd187('0xa'),'as':_0xd187('0x10'),'attributes':['id',_0xd187('0xc'),_0xd187('0xd'),'key',_0xd187('0x11'),_0xd187('0x12'),_0xd187('0xe')],'include':[{'model':'Variable','as':_0xd187('0xf'),'attributes':['id',_0xd187('0x3')]}]},{'model':_0xd187('0xa'),'as':'Fields','attributes':['id',_0xd187('0xc'),_0xd187('0xd'),_0xd187('0x13'),_0xd187('0x14'),'customField',_0xd187('0xe')],'include':[{'model':_0xd187('0xf'),'as':_0xd187('0xf'),'attributes':['id',_0xd187('0x3')]}]}]}]},'log':'GetServicenowkAccount'});};};
\ No newline at end of file
+var _0x4819=['GetServicenowAccount','name','description','username','password','email','remoteUri','ServicenowConfiguration','ServicenowField','Subjects','type','content','variableName','Variable','key','keyType','keyContent','idField','nameField','customField','GetServicenowkAccount','getServicenowAccounts','Request'];(function(_0xdae6b9,_0x370831){var _0x4f7567=function(_0x2b96b6){while(--_0x2b96b6){_0xdae6b9['push'](_0xdae6b9['shift']());}};_0x4f7567(++_0x370831);}(_0x4819,0xcd));var _0x9481=function(_0x4a4922,_0x82cb8f){_0x4a4922=_0x4a4922-0x0;var _0x55a8c6=_0x4819[_0x4a4922];return _0x55a8c6;};'use strict';var client=require('../../client');exports[_0x9481('0x0')]=function(){return function(_0x3307b0){return client[_0x9481('0x1')](_0x9481('0x2'),{'options':{'raw':![],'attributes':['id',_0x9481('0x3'),_0x9481('0x4'),_0x9481('0x5'),_0x9481('0x6'),_0x9481('0x7'),_0x9481('0x8'),'serverUrl'],'include':[{'model':_0x9481('0x9'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0x9481('0xa'),'as':_0x9481('0xb'),'attributes':['id',_0x9481('0xc'),_0x9481('0xd'),_0x9481('0xe')],'include':[{'model':'Variable','as':_0x9481('0xf'),'attributes':['id','name']}]},{'model':_0x9481('0xa'),'as':'Descriptions','attributes':['id',_0x9481('0xc'),_0x9481('0xd'),_0x9481('0x10'),_0x9481('0x11'),_0x9481('0x12'),_0x9481('0xe')],'include':[{'model':_0x9481('0xf'),'as':_0x9481('0xf'),'attributes':['id',_0x9481('0x3')]}]},{'model':'ServicenowField','as':'Fields','attributes':['id',_0x9481('0xc'),_0x9481('0xd'),_0x9481('0x13'),_0x9481('0x14'),_0x9481('0x15'),_0x9481('0xe')],'include':[{'model':_0x9481('0xf'),'as':'Variable','attributes':['id',_0x9481('0x3')]}]}]}]},'log':_0x9481('0x16')});};};
\ No newline at end of file
index 515b135..9560733 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14a0=['variableName','key','keyContent','Variable','SugarcrmField','Fields','idField','nameField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username','password','SugarcrmConfiguration','Configurations','type','content'];(function(_0x5e34a4,_0x2e63ed){var _0x8d41d7=function(_0x45c61b){while(--_0x45c61b){_0x5e34a4['push'](_0x5e34a4['shift']());}};_0x8d41d7(++_0x2e63ed);}(_0x14a0,0x8e));var _0x014a=function(_0x4cc9d5,_0x4fd790){_0x4cc9d5=_0x4cc9d5-0x0;var _0x287fcf=_0x14a0[_0x4cc9d5];return _0x287fcf;};'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
+var _0x0b0e=['Configurations','SugarcrmField','Subjects','variableName','Variable','Descriptions','type','key','keyType','Fields','content','idField','customField','../../client','GetSugarcrmAccount','name','username','password','remoteUri','serverUrl','SugarcrmConfiguration'];(function(_0x1e41ba,_0x455a21){var _0x201d61=function(_0x4c1ba2){while(--_0x4c1ba2){_0x1e41ba['push'](_0x1e41ba['shift']());}};_0x201d61(++_0x455a21);}(_0x0b0e,0x187));var _0xe0b0=function(_0x44c37d,_0x19119f){_0x44c37d=_0x44c37d-0x0;var _0x29e087=_0x0b0e[_0x44c37d];return _0x29e087;};'use strict';var client=require(_0xe0b0('0x0'));exports['getSugarcrmAccounts']=function(){return function(_0xc416e3){return client['Request'](_0xe0b0('0x1'),{'options':{'raw':![],'attributes':['id',_0xe0b0('0x2'),_0xe0b0('0x3'),_0xe0b0('0x4'),_0xe0b0('0x5'),_0xe0b0('0x6')],'include':[{'model':_0xe0b0('0x7'),'as':_0xe0b0('0x8'),'attributes':['id',_0xe0b0('0x2')],'include':[{'model':_0xe0b0('0x9'),'as':_0xe0b0('0xa'),'attributes':['id','type','content',_0xe0b0('0xb')],'include':[{'model':_0xe0b0('0xc'),'as':_0xe0b0('0xc'),'attributes':['id',_0xe0b0('0x2')]}]},{'model':'SugarcrmField','as':_0xe0b0('0xd'),'attributes':['id',_0xe0b0('0xe'),'content',_0xe0b0('0xf'),_0xe0b0('0x10'),'keyContent',_0xe0b0('0xb')],'include':[{'model':_0xe0b0('0xc'),'as':_0xe0b0('0xc'),'attributes':['id','name']}]},{'model':_0xe0b0('0x9'),'as':_0xe0b0('0x11'),'attributes':['id',_0xe0b0('0xe'),_0xe0b0('0x12'),_0xe0b0('0x13'),'nameField',_0xe0b0('0x14'),_0xe0b0('0xb')],'include':[{'model':_0xe0b0('0xc'),'as':_0xe0b0('0xc'),'attributes':['id',_0xe0b0('0x2')]}]}]}]},'log':'GetSugarcrmAccount'});};};
\ No newline at end of file
index e765107..a51fc97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x835c=['key','keyType','keyContent','variableName','Fields','idField','nameField','../../client','getVtigerAccounts','name','description','username','accessKey','remoteUri','serverUrl','Configurations','VtigerField','Subjects','type','content','Variable','Descriptions'];(function(_0x17406a,_0x1e2320){var _0x1501ff=function(_0x4b075a){while(--_0x4b075a){_0x17406a['push'](_0x17406a['shift']());}};_0x1501ff(++_0x1e2320);}(_0x835c,0x17d));var _0xc835=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x835c[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xc835('0x0'));exports[_0xc835('0x1')]=function(){return function(_0x2551bb){return client['Request']('GetVtigerAccount',{'options':{'raw':![],'attributes':['id',_0xc835('0x2'),_0xc835('0x3'),_0xc835('0x4'),_0xc835('0x5'),_0xc835('0x6'),_0xc835('0x7')],'include':[{'model':'VtigerConfiguration','as':_0xc835('0x8'),'attributes':['id',_0xc835('0x2')],'include':[{'model':_0xc835('0x9'),'as':_0xc835('0xa'),'attributes':['id',_0xc835('0xb'),_0xc835('0xc'),'variableName'],'include':[{'model':_0xc835('0xd'),'as':'Variable','attributes':['id',_0xc835('0x2')]}]},{'model':_0xc835('0x9'),'as':_0xc835('0xe'),'attributes':['id',_0xc835('0xb'),_0xc835('0xc'),_0xc835('0xf'),_0xc835('0x10'),_0xc835('0x11'),_0xc835('0x12')],'include':[{'model':'Variable','as':_0xc835('0xd'),'attributes':['id','name']}]},{'model':_0xc835('0x9'),'as':_0xc835('0x13'),'attributes':['id',_0xc835('0xb'),_0xc835('0xc'),_0xc835('0x14'),_0xc835('0x15'),'customField',_0xc835('0x12')],'include':[{'model':_0xc835('0xd'),'as':'Variable','attributes':['id',_0xc835('0x2')]}]}]}]},'log':'GetVtigerAccount'});};};
\ No newline at end of file
+var _0xd712=['VtigerField','Subjects','type','content','Variable','Descriptions','key','keyContent','variableName','Fields','idField','getVtigerAccounts','Request','GetVtigerAccount','name','description','username','accessKey','VtigerConfiguration','Configurations'];(function(_0x2962d5,_0x38deda){var _0x273406=function(_0x3e0775){while(--_0x3e0775){_0x2962d5['push'](_0x2962d5['shift']());}};_0x273406(++_0x38deda);}(_0xd712,0x1eb));var _0x2d71=function(_0x33d615,_0x1a5af7){_0x33d615=_0x33d615-0x0;var _0x254611=_0xd712[_0x33d615];return _0x254611;};'use strict';var client=require('../../client');exports[_0x2d71('0x0')]=function(){return function(_0x264319){return client[_0x2d71('0x1')](_0x2d71('0x2'),{'options':{'raw':![],'attributes':['id',_0x2d71('0x3'),_0x2d71('0x4'),_0x2d71('0x5'),_0x2d71('0x6'),'remoteUri','serverUrl'],'include':[{'model':_0x2d71('0x7'),'as':_0x2d71('0x8'),'attributes':['id',_0x2d71('0x3')],'include':[{'model':_0x2d71('0x9'),'as':_0x2d71('0xa'),'attributes':['id',_0x2d71('0xb'),_0x2d71('0xc'),'variableName'],'include':[{'model':_0x2d71('0xd'),'as':'Variable','attributes':['id','name']}]},{'model':'VtigerField','as':_0x2d71('0xe'),'attributes':['id',_0x2d71('0xb'),_0x2d71('0xc'),_0x2d71('0xf'),'keyType',_0x2d71('0x10'),_0x2d71('0x11')],'include':[{'model':_0x2d71('0xd'),'as':_0x2d71('0xd'),'attributes':['id',_0x2d71('0x3')]}]},{'model':_0x2d71('0x9'),'as':_0x2d71('0x12'),'attributes':['id',_0x2d71('0xb'),_0x2d71('0xc'),_0x2d71('0x13'),'nameField','customField','variableName'],'include':[{'model':_0x2d71('0xd'),'as':_0x2d71('0xd'),'attributes':['id','name']}]}]}]},'log':'GetVtigerAccount'});};};
\ No newline at end of file
index 541cc82..376c4eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5777=['ZendeskConfiguration','ZendeskField','Subjects','type','variableName','Variable','Descriptions','content','key','keyType','keyContent','Fields','idField','nameField','customField','../../client','getZendeskAccounts','Request','GetZendeskAccount','name','username','password','token','authType','serverUrl'];(function(_0x472c9c,_0x53c4de){var _0x2d1775=function(_0x4d74c8){while(--_0x4d74c8){_0x472c9c['push'](_0x472c9c['shift']());}};_0x2d1775(++_0x53c4de);}(_0x5777,0x1b8));var _0x7577=function(_0x28ff4e,_0x4c99b7){_0x28ff4e=_0x28ff4e-0x0;var _0xeb35e8=_0x5777[_0x28ff4e];return _0xeb35e8;};'use strict';var client=require(_0x7577('0x0'));exports[_0x7577('0x1')]=function(){return function(_0x14b1e5){return client[_0x7577('0x2')](_0x7577('0x3'),{'options':{'raw':![],'attributes':['id',_0x7577('0x4'),_0x7577('0x5'),_0x7577('0x6'),_0x7577('0x7'),'remoteUri',_0x7577('0x8'),_0x7577('0x9'),'type'],'include':[{'model':_0x7577('0xa'),'as':'Configurations','attributes':['id','name'],'include':[{'model':'Tag','attributes':['id','name']},{'model':_0x7577('0xb'),'as':_0x7577('0xc'),'attributes':['id',_0x7577('0xd'),'content',_0x7577('0xe')],'include':[{'model':'Variable','as':_0x7577('0xf'),'attributes':['id',_0x7577('0x4')]}]},{'model':_0x7577('0xb'),'as':_0x7577('0x10'),'attributes':['id',_0x7577('0xd'),_0x7577('0x11'),_0x7577('0x12'),_0x7577('0x13'),_0x7577('0x14'),_0x7577('0xe')],'include':[{'model':_0x7577('0xf'),'as':'Variable','attributes':['id','name']}]},{'model':_0x7577('0xb'),'as':_0x7577('0x15'),'attributes':['id',_0x7577('0xd'),_0x7577('0x11'),_0x7577('0x16'),_0x7577('0x17'),_0x7577('0x18'),'variableName'],'include':[{'model':_0x7577('0xf'),'as':_0x7577('0xf'),'attributes':['id',_0x7577('0x4')]}]}]}]},'log':_0x7577('0x3')});};};
\ No newline at end of file
+var _0xa731=['Request','GetZendeskAccount','username','password','token','remoteUri','authType','serverUrl','type','ZendeskConfiguration','Configurations','name','Tag','ZendeskField','Subjects','variableName','Variable','Descriptions','content','key','keyType','keyContent','idField','nameField','customField','../../client','getZendeskAccounts'];(function(_0xce72e3,_0x1d38d1){var _0xafc29d=function(_0x39f78e){while(--_0x39f78e){_0xce72e3['push'](_0xce72e3['shift']());}};_0xafc29d(++_0x1d38d1);}(_0xa731,0x142));var _0x1a73=function(_0x19e05b,_0x371d76){_0x19e05b=_0x19e05b-0x0;var _0x27c288=_0xa731[_0x19e05b];return _0x27c288;};'use strict';var client=require(_0x1a73('0x0'));exports[_0x1a73('0x1')]=function(){return function(_0x393cd9){return client[_0x1a73('0x2')](_0x1a73('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x1a73('0x4'),_0x1a73('0x5'),_0x1a73('0x6'),_0x1a73('0x7'),_0x1a73('0x8'),_0x1a73('0x9'),_0x1a73('0xa')],'include':[{'model':_0x1a73('0xb'),'as':_0x1a73('0xc'),'attributes':['id',_0x1a73('0xd')],'include':[{'model':_0x1a73('0xe'),'attributes':['id','name']},{'model':_0x1a73('0xf'),'as':_0x1a73('0x10'),'attributes':['id',_0x1a73('0xa'),'content',_0x1a73('0x11')],'include':[{'model':'Variable','as':_0x1a73('0x12'),'attributes':['id','name']}]},{'model':'ZendeskField','as':_0x1a73('0x13'),'attributes':['id',_0x1a73('0xa'),_0x1a73('0x14'),_0x1a73('0x15'),_0x1a73('0x16'),_0x1a73('0x17'),_0x1a73('0x11')],'include':[{'model':_0x1a73('0x12'),'as':_0x1a73('0x12'),'attributes':['id','name']}]},{'model':_0x1a73('0xf'),'as':'Fields','attributes':['id','type',_0x1a73('0x14'),_0x1a73('0x18'),_0x1a73('0x19'),_0x1a73('0x1a'),_0x1a73('0x11')],'include':[{'model':_0x1a73('0x12'),'as':_0x1a73('0x12'),'attributes':['id',_0x1a73('0xd')]}]}]}]},'log':_0x1a73('0x3')});};};
\ No newline at end of file
index dd1ada0..e62f6b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84b4=['Fields','nameField','customField','../../client','getZohoAccounts','Request','GetZohoAccount','name','description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken','ZohoConfiguration','moduleCreate','ZohoField','Subjects','type','content','variableName','Variable','Descriptions','keyContent'];(function(_0x3a009e,_0x2e3b05){var _0x2feda8=function(_0xaf2170){while(--_0xaf2170){_0x3a009e['push'](_0x3a009e['shift']());}};_0x2feda8(++_0x2e3b05);}(_0x84b4,0x9f));var _0x484b=function(_0x5cc75,_0x1f93ce){_0x5cc75=_0x5cc75-0x0;var _0x1044fe=_0x84b4[_0x5cc75];return _0x1044fe;};'use strict';var client=require(_0x484b('0x0'));exports[_0x484b('0x1')]=function(){return function(_0x21907f){return client[_0x484b('0x2')](_0x484b('0x3'),{'options':{'raw':![],'attributes':['id',_0x484b('0x4'),_0x484b('0x5'),_0x484b('0x6'),_0x484b('0x7'),_0x484b('0x8'),_0x484b('0x9'),_0x484b('0xa'),_0x484b('0xb'),_0x484b('0xc')],'include':[{'model':_0x484b('0xd'),'as':'Configurations','attributes':['id',_0x484b('0x4'),_0x484b('0xe'),'moduleSearch',_0x484b('0x5')],'include':[{'model':_0x484b('0xf'),'as':_0x484b('0x10'),'attributes':['id',_0x484b('0x11'),_0x484b('0x12'),_0x484b('0x13')],'include':[{'model':_0x484b('0x14'),'as':_0x484b('0x14'),'attributes':['id','name']}]},{'model':'ZohoField','as':_0x484b('0x15'),'attributes':['id',_0x484b('0x11'),_0x484b('0x12'),'key','keyType',_0x484b('0x16'),_0x484b('0x13')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x484b('0x4')]}]},{'model':_0x484b('0xf'),'as':_0x484b('0x17'),'attributes':['id','type',_0x484b('0x12'),'idField',_0x484b('0x18'),_0x484b('0x19'),'variableName'],'include':[{'model':_0x484b('0x14'),'as':_0x484b('0x14'),'attributes':['id','name']}]}]}]},'log':_0x484b('0x3')});};};
\ No newline at end of file
+var _0xf7d4=['ZohoField','Subjects','variableName','Descriptions','key','keyContent','Variable','Fields','content','idField','nameField','customField','GetZohoAccount','../../client','getZohoAccounts','Request','description','clientSecret','serverUrl','code','refreshToken','Configurations','name','moduleCreate'];(function(_0x5a2162,_0x5a90a3){var _0x4561a7=function(_0x11849e){while(--_0x11849e){_0x5a2162['push'](_0x5a2162['shift']());}};_0x4561a7(++_0x5a90a3);}(_0xf7d4,0x18d));var _0x4f7d=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0xf7d4[_0x4e676e];return _0x336a3c;};'use strict';var client=require(_0x4f7d('0x0'));exports[_0x4f7d('0x1')]=function(){return function(_0x13a504){return client[_0x4f7d('0x2')]('GetZohoAccount',{'options':{'raw':![],'attributes':['id','name',_0x4f7d('0x3'),'host','zone','clientId',_0x4f7d('0x4'),_0x4f7d('0x5'),_0x4f7d('0x6'),_0x4f7d('0x7')],'include':[{'model':'ZohoConfiguration','as':_0x4f7d('0x8'),'attributes':['id',_0x4f7d('0x9'),_0x4f7d('0xa'),'moduleSearch',_0x4f7d('0x3')],'include':[{'model':_0x4f7d('0xb'),'as':_0x4f7d('0xc'),'attributes':['id','type','content',_0x4f7d('0xd')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x4f7d('0x9')]}]},{'model':_0x4f7d('0xb'),'as':_0x4f7d('0xe'),'attributes':['id','type','content',_0x4f7d('0xf'),'keyType',_0x4f7d('0x10'),_0x4f7d('0xd')],'include':[{'model':_0x4f7d('0x11'),'as':_0x4f7d('0x11'),'attributes':['id',_0x4f7d('0x9')]}]},{'model':_0x4f7d('0xb'),'as':_0x4f7d('0x12'),'attributes':['id','type',_0x4f7d('0x13'),_0x4f7d('0x14'),_0x4f7d('0x15'),_0x4f7d('0x16'),'variableName'],'include':[{'model':'Variable','as':_0x4f7d('0x11'),'attributes':['id',_0x4f7d('0x9')]}]}]}]},'log':_0x4f7d('0x17')});};};
\ No newline at end of file
index fb51495..ed845b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b5a=['uniqueid','voiceDialReport','membername','interface','endtime','starttime','outbound','dialstring','moment','../client','voiceQueueReport','Request','CreateMemberReport','voice','format','SIP/%s','lastAssignedTo','TALKING','queuecallerleaveAt','diff','seconds','inbound','exten','queue','agent','accountcode','toNumber'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5b5a,0xe0));var _0xa5b5=function(_0x29e3ec,_0x138a18){_0x29e3ec=_0x29e3ec-0x0;var _0x25727e=_0x5b5a[_0x29e3ec];return _0x25727e;};'use strict';var moment=require(_0xa5b5('0x0'));var _=require('lodash');var util=require('util');var client=require(_0xa5b5('0x1'));exports[_0xa5b5('0x2')]=function(_0x5465ab){var _0x594740=_0x5465ab['queuecallercompleteAt']||_0x5465ab['queuecallerexitAt'];return client[_0xa5b5('0x3')](_0xa5b5('0x4'),{'body':{'channel':_0xa5b5('0x5'),'membername':_0x5465ab['lastAssignedTo'],'interface':_['isNil'](_0x5465ab['interface'])?util[_0xa5b5('0x6')](_0xa5b5('0x7'),_0x5465ab[_0xa5b5('0x8')]):_0x5465ab['interface'],'type':_0xa5b5('0x9'),'enterAt':_0x5465ab[_0xa5b5('0xa')],'exitAt':_0x594740,'duration':moment(_0x594740)[_0xa5b5('0xb')](_0x5465ab[_0xa5b5('0xa')],_0xa5b5('0xc')),'data1':_0xa5b5('0xd'),'data2':_0x5465ab['calleridnum'],'data3':_0x5465ab[_0xa5b5('0xe')],'data4':null,'data5':_0x5465ab[_0xa5b5('0xf')],'role':_0xa5b5('0x10'),'internal':_0x5465ab[_0xa5b5('0x11')]?_[_0xa5b5('0x12')](_0x5465ab['accountcode']):undefined,'uniqueid':_0x5465ab[_0xa5b5('0x13')]},'log':_0xa5b5('0x4')});};exports[_0xa5b5('0x14')]=function(_0x24a10c){return client[_0xa5b5('0x3')](_0xa5b5('0x4'),{'body':{'channel':_0xa5b5('0x5'),'membername':_0x24a10c[_0xa5b5('0x15')],'interface':_0x24a10c[_0xa5b5('0x16')],'type':_0xa5b5('0x9'),'enterAt':_0x24a10c['starttime'],'exitAt':_0x24a10c[_0xa5b5('0x17')],'duration':moment(_0x24a10c[_0xa5b5('0x17')])[_0xa5b5('0xb')](_0x24a10c[_0xa5b5('0x18')],_0xa5b5('0xc'))>=0x0?moment(_0x24a10c['endtime'])[_0xa5b5('0xb')](_0x24a10c[_0xa5b5('0x18')],'seconds'):null,'data1':_0xa5b5('0x19'),'data2':_0x24a10c[_0xa5b5('0x11')],'data3':_0x24a10c['exten'],'data4':_0x24a10c[_0xa5b5('0x1a')]||null,'role':_0xa5b5('0x10'),'internal':_0x24a10c[_0xa5b5('0x11')]?_[_0xa5b5('0x12')](_0x24a10c[_0xa5b5('0x11')]):undefined,'uniqueid':_0x24a10c[_0xa5b5('0x13')]},'log':_0xa5b5('0x4')});};
\ No newline at end of file
+var _0x0386=['dialstring','moment','../client','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','Request','CreateMemberReport','isNil','format','TALKING','queuecallerleaveAt','inbound','exten','queue','agent','accountcode','toNumber','uniqueid','voice','membername','interface','starttime','endtime','diff','seconds','outbound'];(function(_0x1ccbcc,_0x5c948b){var _0x1e873f=function(_0x4f232e){while(--_0x4f232e){_0x1ccbcc['push'](_0x1ccbcc['shift']());}};_0x1e873f(++_0x5c948b);}(_0x0386,0xbe));var _0x6038=function(_0x4b60d3,_0x537481){_0x4b60d3=_0x4b60d3-0x0;var _0x14c647=_0x0386[_0x4b60d3];return _0x14c647;};'use strict';var moment=require(_0x6038('0x0'));var _=require('lodash');var util=require('util');var client=require(_0x6038('0x1'));exports[_0x6038('0x2')]=function(_0xafa779){var _0x514a6f=_0xafa779[_0x6038('0x3')]||_0xafa779[_0x6038('0x4')];return client[_0x6038('0x5')](_0x6038('0x6'),{'body':{'channel':'voice','membername':_0xafa779['lastAssignedTo'],'interface':_[_0x6038('0x7')](_0xafa779['interface'])?util[_0x6038('0x8')]('SIP/%s',_0xafa779['lastAssignedTo']):_0xafa779['interface'],'type':_0x6038('0x9'),'enterAt':_0xafa779[_0x6038('0xa')],'exitAt':_0x514a6f,'duration':moment(_0x514a6f)['diff'](_0xafa779['queuecallerleaveAt'],'seconds'),'data1':_0x6038('0xb'),'data2':_0xafa779['calleridnum'],'data3':_0xafa779[_0x6038('0xc')],'data4':null,'data5':_0xafa779[_0x6038('0xd')],'role':_0x6038('0xe'),'internal':_0xafa779[_0x6038('0xf')]?_[_0x6038('0x10')](_0xafa779[_0x6038('0xf')]):undefined,'uniqueid':_0xafa779[_0x6038('0x11')]},'log':_0x6038('0x6')});};exports['voiceDialReport']=function(_0x325fe3){return client['Request'](_0x6038('0x6'),{'body':{'channel':_0x6038('0x12'),'membername':_0x325fe3[_0x6038('0x13')],'interface':_0x325fe3[_0x6038('0x14')],'type':_0x6038('0x9'),'enterAt':_0x325fe3[_0x6038('0x15')],'exitAt':_0x325fe3[_0x6038('0x16')],'duration':moment(_0x325fe3[_0x6038('0x16')])[_0x6038('0x17')](_0x325fe3[_0x6038('0x15')],_0x6038('0x18'))>=0x0?moment(_0x325fe3[_0x6038('0x16')])[_0x6038('0x17')](_0x325fe3[_0x6038('0x15')],_0x6038('0x18')):null,'data1':_0x6038('0x19'),'data2':_0x325fe3[_0x6038('0xf')],'data3':_0x325fe3['exten'],'data4':_0x325fe3[_0x6038('0x1a')]||null,'role':_0x6038('0xe'),'internal':_0x325fe3[_0x6038('0xf')]?_[_0x6038('0x10')](_0x325fe3[_0x6038('0xf')]):undefined,'uniqueid':_0x325fe3[_0x6038('0x11')]},'log':'CreateMemberReport'});};
\ No newline at end of file
index bea3fbb..b417eec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd20f=['getSettings','ShowSetting','../client'];(function(_0x412818,_0xe8171a){var _0x2d40d1=function(_0xa3099a){while(--_0xa3099a){_0x412818['push'](_0x412818['shift']());}};_0x2d40d1(++_0xe8171a);}(_0xd20f,0xbf));var _0xfd20=function(_0x3a38ea,_0x20896e){_0x3a38ea=_0x3a38ea-0x0;var _0x336917=_0xd20f[_0x3a38ea];return _0x336917;};'use strict';var client=require(_0xfd20('0x0'));exports[_0xfd20('0x1')]=function(){return client['Request'](_0xfd20('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer']},'log':'GetSettings'});};
\ No newline at end of file
+var _0x5b02=['ShowSetting','../client','getSettings','Request'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5b02,0xe9));var _0x25b0=function(_0x37f9d7,_0xace53b){_0x37f9d7=_0x37f9d7-0x0;var _0x198f7d=_0x5b02[_0x37f9d7];return _0x198f7d;};'use strict';var client=require(_0x25b0('0x0'));exports[_0x25b0('0x1')]=function(){return client[_0x25b0('0x2')](_0x25b0('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer']},'log':'GetSettings'});};
\ No newline at end of file
index 0d4f11c..8d5a6d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2b6=['getTemplates','Request','GetTemplate','name','html'];(function(_0x295b50,_0x3a0c6a){var _0x1da6ce=function(_0x44e114){while(--_0x44e114){_0x295b50['push'](_0x295b50['shift']());}};_0x1da6ce(++_0x3a0c6a);}(_0xe2b6,0x11d));var _0x6e2b=function(_0xd13d76,_0x1b45cf){_0xd13d76=_0xd13d76-0x0;var _0x57a8f1=_0xe2b6[_0xd13d76];return _0x57a8f1;};'use strict';var client=require('../client');exports[_0x6e2b('0x0')]=function(_0x474b63){return function(_0x3cc0f5){return client[_0x6e2b('0x1')](_0x6e2b('0x2'),{'options':{'raw':!![],'attributes':['id',_0x6e2b('0x3'),_0x6e2b('0x4')]},'log':_0x6e2b('0x2')});};};
\ No newline at end of file
+var _0x9db7=['getTemplates','GetTemplate','html','../client'];(function(_0x173d7e,_0x3242fd){var _0x2220d6=function(_0x462828){while(--_0x462828){_0x173d7e['push'](_0x173d7e['shift']());}};_0x2220d6(++_0x3242fd);}(_0x9db7,0x1bf));var _0x79db=function(_0x5e0d09,_0x114c2e){_0x5e0d09=_0x5e0d09-0x0;var _0x2b48a8=_0x9db7[_0x5e0d09];return _0x2b48a8;};'use strict';var client=require(_0x79db('0x0'));exports[_0x79db('0x1')]=function(_0x435fde){return function(_0x5ded0a){return client['Request'](_0x79db('0x2'),{'options':{'raw':!![],'attributes':['id','name',_0x79db('0x3')]},'log':_0x79db('0x2')});};};
\ No newline at end of file
index edfbbae..f3b5152 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0df=['field','operator','AnyConditions','value','Action','data1','data2','data3','data4','data5','data6','data7','../client','GetTrigger','name','channel','status','Condition','AllConditions'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0xf0df,0x1d4));var _0xff0d=function(_0x4521d1,_0x37d5a3){_0x4521d1=_0x4521d1-0x0;var _0xe8abdb=_0xf0df[_0x4521d1];return _0xe8abdb;};'use strict';var client=require(_0xff0d('0x0'));exports['getTriggers']=function(_0x1cb0f8){return function(_0x182d5b){return client['Request'](_0xff0d('0x1'),{'options':{'raw':![],'attributes':['id',_0xff0d('0x2'),_0xff0d('0x3'),_0xff0d('0x4')],'include':[{'model':_0xff0d('0x5'),'as':_0xff0d('0x6'),'attributes':['id',_0xff0d('0x7'),_0xff0d('0x8'),'value']},{'model':'Condition','as':_0xff0d('0x9'),'attributes':['id','field','operator',_0xff0d('0xa')]},{'model':_0xff0d('0xb'),'as':'Actions','attributes':['id','action',_0xff0d('0xc'),_0xff0d('0xd'),_0xff0d('0xe'),_0xff0d('0xf'),_0xff0d('0x10'),_0xff0d('0x11'),_0xff0d('0x12')]}]},'log':_0xff0d('0x1')});};};
\ No newline at end of file
+var _0xb71f=['field','operator','Condition','value','action','data1','data3','data4','data5','GetTrigger','../client','getTriggers','Request','name','channel','status','AllConditions'];(function(_0x174852,_0x556334){var _0x553df1=function(_0x112dab){while(--_0x112dab){_0x174852['push'](_0x174852['shift']());}};_0x553df1(++_0x556334);}(_0xb71f,0x13c));var _0xfb71=function(_0x1c5142,_0x30ea72){_0x1c5142=_0x1c5142-0x0;var _0x1268cb=_0xb71f[_0x1c5142];return _0x1268cb;};'use strict';var client=require(_0xfb71('0x0'));exports[_0xfb71('0x1')]=function(_0x2f01e5){return function(_0x5ab981){return client[_0xfb71('0x2')]('GetTrigger',{'options':{'raw':![],'attributes':['id',_0xfb71('0x3'),_0xfb71('0x4'),_0xfb71('0x5')],'include':[{'model':'Condition','as':_0xfb71('0x6'),'attributes':['id',_0xfb71('0x7'),_0xfb71('0x8'),'value']},{'model':_0xfb71('0x9'),'as':'AnyConditions','attributes':['id','field',_0xfb71('0x8'),_0xfb71('0xa')]},{'model':'Action','as':'Actions','attributes':['id',_0xfb71('0xb'),_0xfb71('0xc'),'data2',_0xfb71('0xd'),_0xfb71('0xe'),_0xfb71('0xf'),'data6','data7']}]},'log':_0xfb71('0x10')});};};
\ No newline at end of file
index acfdcee..6f162b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf013=['../client','getTrunks','GetTrunk','registry','defaultuser'];(function(_0x3e5134,_0xf81cb9){var _0x550cd4=function(_0x30ddc7){while(--_0x30ddc7){_0x3e5134['push'](_0x3e5134['shift']());}};_0x550cd4(++_0xf81cb9);}(_0xf013,0x118));var _0x3f01=function(_0x483a25,_0x2e7495){_0x483a25=_0x483a25-0x0;var _0x2f3915=_0xf013[_0x483a25];return _0x2f3915;};'use strict';var client=require(_0x3f01('0x0'));exports[_0x3f01('0x1')]=function(_0x351f1a){return function(_0xdce795){return client['Request'](_0x3f01('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id','name',_0x3f01('0x3'),_0x3f01('0x4')]},'log':_0x3f01('0x2')});};};
\ No newline at end of file
+var _0x59e5=['Request','name','GetTrunk','../client','getTrunks'];(function(_0x3366bd,_0x242f71){var _0x540757=function(_0x193457){while(--_0x193457){_0x3366bd['push'](_0x3366bd['shift']());}};_0x540757(++_0x242f71);}(_0x59e5,0x14d));var _0x559e=function(_0x4e17c6,_0x122092){_0x4e17c6=_0x4e17c6-0x0;var _0x5d5e96=_0x59e5[_0x4e17c6];return _0x5d5e96;};'use strict';var client=require(_0x559e('0x0'));exports[_0x559e('0x1')]=function(_0x30705c){return function(_0x190256){return client[_0x559e('0x2')]('GetTrunk',{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x559e('0x3'),'registry','defaultuser']},'log':_0x559e('0x4')});};};
\ No newline at end of file
index 1cb8d6d..e15599c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['mobile','getTelephones','internal','PauseUser','savePause','saveUnpause','UnpauseUser','ShowUser','interface','getAgent','getAgents','Request','GetUser','agent','name','email','accountcode','fullname','lastLoginAt','pauseType','lastPauseAt','voicePause'];(function(_0x940128,_0x71bc56){var _0x208289=function(_0x482af4){while(--_0x482af4){_0x940128['push'](_0x940128['shift']());}};_0x208289(++_0x71bc56);}(_0xedd9,0xfc));var _0x9edd=function(_0x5f25c8,_0x9e17aa){_0x5f25c8=_0x5f25c8-0x0;var _0x51b24e=_0xedd9[_0x5f25c8];return _0x51b24e;};'use strict';var client=require('../client');exports[_0x9edd('0x0')]=function(){return function(){return client[_0x9edd('0x1')](_0x9edd('0x2'),{'options':{'raw':![],'where':{'role':_0x9edd('0x3')},'attributes':['id',_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6'),_0x9edd('0x7'),'online',_0x9edd('0x8'),_0x9edd('0x9'),_0x9edd('0xa'),_0x9edd('0xb'),'phone',_0x9edd('0xc'),'interface']},'log':_0x9edd('0x0')});};};exports[_0x9edd('0xd')]=function(){return function(){return client[_0x9edd('0x1')](_0x9edd('0x2'),{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x9edd('0x4'),'accountcode',_0x9edd('0xe')]},'log':_0x9edd('0xd')});};};exports['savePause']=function(_0xbf9da6,_0x13dc4f,_0x5b6c00){return client[_0x9edd('0x1')](_0x9edd('0xf'),{'body':{'type':_0x13dc4f,'uniqueid':_0x5b6c00},'options':{'where':{'id':_0xbf9da6['id']}},'log':_0x9edd('0x10')});};exports[_0x9edd('0x11')]=function(_0x287ddd){return client[_0x9edd('0x1')](_0x9edd('0x12'),{'body':{},'options':{'where':{'id':_0x287ddd['id']}},'log':_0x9edd('0x10')});};exports['getAgent']=function(_0x176bfa){return client[_0x9edd('0x1')](_0x9edd('0x13'),{'options':{'raw':![],'where':{'role':_0x9edd('0x3'),'id':_0x176bfa},'attributes':['id',_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6'),_0x9edd('0x7'),'online',_0x9edd('0x8'),_0x9edd('0x9'),_0x9edd('0xa'),'voicePause',_0x9edd('0x14')]},'log':_0x9edd('0x15')});};
\ No newline at end of file
+var _0x0713=['getAgent','Request','GetUser','agent','name','email','fullname','online','lastLoginAt','pauseType','lastPauseAt','voicePause','phone','mobile','interface','getAgents','getTelephones','accountcode','internal','savePause','PauseUser'];(function(_0x1e711d,_0x434a16){var _0x159ee8=function(_0x3f3ae4){while(--_0x3f3ae4){_0x1e711d['push'](_0x1e711d['shift']());}};_0x159ee8(++_0x434a16);}(_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
index 635cb7f..1796478 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec50=['UpdateVoiceAgentReport','create','Request'];(function(_0x23d8e8,_0x248029){var _0x13d3eb=function(_0x401cd8){while(--_0x401cd8){_0x23d8e8['push'](_0x23d8e8['shift']());}};_0x13d3eb(++_0x248029);}(_0xec50,0x9a));var _0x0ec5=function(_0x29a91c,_0x5ac2c5){_0x29a91c=_0x29a91c-0x0;var _0x2ab4ff=_0xec50[_0x29a91c];return _0x2ab4ff;};'use strict';var client=require('../client');exports[_0x0ec5('0x0')]=function(_0x24c743){return client['Request']('CreateVoiceAgentReport',{'body':_0x24c743,'log':'CreateVoiceAgentReport'});};exports['update']=function(_0x2e9386,_0xffb6d4,_0x115298){return client[_0x0ec5('0x1')](_0x0ec5('0x2'),{'body':_0x2e9386,'options':{'where':{'uniqueid':_0xffb6d4,'interface':_0x115298,'agentcomplete':!![]}},'log':_0x0ec5('0x2')});};
\ No newline at end of file
+var _0x37eb=['../client','Request','CreateVoiceAgentReport','update','UpdateVoiceAgentReport'];(function(_0x4d6ca1,_0x1cb01b){var _0x3ab38d=function(_0xcddcd9){while(--_0xcddcd9){_0x4d6ca1['push'](_0x4d6ca1['shift']());}};_0x3ab38d(++_0x1cb01b);}(_0x37eb,0x1e0));var _0xb37e=function(_0x387620,_0x7e5560){_0x387620=_0x387620-0x0;var _0x4cfcef=_0x37eb[_0x387620];return _0x4cfcef;};'use strict';var client=require(_0xb37e('0x0'));exports['create']=function(_0x2c1e59){return client[_0xb37e('0x1')]('CreateVoiceAgentReport',{'body':_0x2c1e59,'log':_0xb37e('0x2')});};exports[_0xb37e('0x3')]=function(_0x37f959,_0x4b59c0,_0x529946){return client['Request'](_0xb37e('0x4'),{'body':_0x37f959,'options':{'where':{'uniqueid':_0x4b59c0,'interface':_0x529946,'agentcomplete':!![]}},'log':_0xb37e('0x4')});};
\ No newline at end of file
index f95939a..cd97722 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc74d=['type','disposition','duration','billableseconds','moment','util','lodash','../client','CreateVoiceCallReport','merge','calleridnum','context','callerid','DOCUMENTATION','getVoiceCallReports','GetVoiceCallReport','day','format','endOf','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x705b98,_0x1c345b){var _0x47b72f=function(_0x44f02a){while(--_0x44f02a){_0x705b98['push'](_0x705b98['shift']());}};_0x47b72f(++_0x1c345b);}(_0xc74d,0x16c));var _0xdc74=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xc74d[_0x2c91e9];return _0x13f0ff;};'use strict';var moment=require(_0xdc74('0x0'));var util=require(_0xdc74('0x1'));var _=require(_0xdc74('0x2'));var client=require(_0xdc74('0x3'));exports['create']=function(_0x2f4241){return client['Request'](_0xdc74('0x4'),{'body':_[_0xdc74('0x5')](_0x2f4241,{'source':_0x2f4241[_0xdc74('0x6')],'destinationcontext':_0x2f4241[_0xdc74('0x7')],'callerid':_0x2f4241[_0xdc74('0x8')],'amaflags':_0xdc74('0x9')}),'log':_0xdc74('0x4')});};exports[_0xdc74('0xa')]=function(){return function(){return client['Request'](_0xdc74('0xb'),{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()['startOf'](_0xdc74('0xc'))[_0xdc74('0xd')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xdc74('0xe')](_0xdc74('0xc'))[_0xdc74('0xd')](_0xdc74('0xf'))]}},'attributes':[_0xdc74('0x10'),_0xdc74('0x11'),_0xdc74('0x12'),_0xdc74('0x13')]},'log':'GetVoiceCallReports'});};};
\ No newline at end of file
+var _0xe819=['context','Request','outbound','startOf','day','format','YYYY-MM-DD\x20HH:mm:ss','endOf','type','disposition','duration','GetVoiceCallReports','moment','util','lodash','../client','create','CreateVoiceCallReport','merge'];(function(_0x45eec9,_0x2ee4db){var _0x12794d=function(_0x2c5971){while(--_0x2c5971){_0x45eec9['push'](_0x45eec9['shift']());}};_0x12794d(++_0x2ee4db);}(_0xe819,0xf0));var _0x9e81=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xe819[_0x501510];return _0x1e6ee5;};'use strict';var moment=require(_0x9e81('0x0'));var util=require(_0x9e81('0x1'));var _=require(_0x9e81('0x2'));var client=require(_0x9e81('0x3'));exports[_0x9e81('0x4')]=function(_0x3bf512){return client['Request'](_0x9e81('0x5'),{'body':_[_0x9e81('0x6')](_0x3bf512,{'source':_0x3bf512['calleridnum'],'destinationcontext':_0x3bf512[_0x9e81('0x7')],'callerid':_0x3bf512['callerid'],'amaflags':'DOCUMENTATION'}),'log':'CreateVoiceCallReport'});};exports['getVoiceCallReports']=function(){return function(){return client[_0x9e81('0x8')]('GetVoiceCallReport',{'options':{'where':{'type':[_0x9e81('0x9')],'createdAt':{'$between':[moment()[_0x9e81('0xa')](_0x9e81('0xb'))[_0x9e81('0xc')](_0x9e81('0xd')),moment()[_0x9e81('0xe')](_0x9e81('0xb'))[_0x9e81('0xc')](_0x9e81('0xd'))]}},'attributes':[_0x9e81('0xf'),_0x9e81('0x10'),_0x9e81('0x11'),'billableseconds']},'log':_0x9e81('0x12')});};};
\ No newline at end of file
index aa39c97..e7ceddb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dc8=['Request','CreateVoiceDialReport','../client','create'];(function(_0x27ff49,_0x5d882d){var _0x1ee632=function(_0x1a1a1d){while(--_0x1a1a1d){_0x27ff49['push'](_0x27ff49['shift']());}};_0x1ee632(++_0x5d882d);}(_0x6dc8,0x72));var _0x86dc=function(_0x2e2681,_0x4089c1){_0x2e2681=_0x2e2681-0x0;var _0x368a64=_0x6dc8[_0x2e2681];return _0x368a64;};'use strict';var client=require(_0x86dc('0x0'));exports[_0x86dc('0x1')]=function(_0x16856c){return client[_0x86dc('0x2')]('CreateVoiceDialReport',{'body':_0x16856c,'log':_0x86dc('0x3')});};
\ No newline at end of file
+var _0xb111=['CreateVoiceDialReport','../client','create'];(function(_0x101a17,_0x5d047a){var _0x3b76ee=function(_0x89be1b){while(--_0x89be1b){_0x101a17['push'](_0x101a17['shift']());}};_0x3b76ee(++_0x5d047a);}(_0xb111,0x1a2));var _0x1b11=function(_0x15e3df,_0x324630){_0x15e3df=_0x15e3df-0x0;var _0x8b00da=_0xb111[_0x15e3df];return _0x8b00da;};'use strict';var client=require(_0x1b11('0x0'));exports[_0x1b11('0x1')]=function(_0x49ae34){return client['Request'](_0x1b11('0x2'),{'body':_0x49ae34,'log':_0x1b11('0x2')});};
\ No newline at end of file
index d36bd94..48a60bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc125=['getVoiceExtensions','GetVoiceExtension','exten','recordingFormat'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc125,0x150));var _0x5c12=function(_0x1c0660,_0x37e76e){_0x1c0660=_0x1c0660-0x0;var _0x3af88e=_0xc125[_0x1c0660];return _0x3af88e;};'use strict';var client=require('../client');exports[_0x5c12('0x0')]=function(){return function(){return client['Request'](_0x5c12('0x1'),{'options':{'raw':!![],'attributes':['id',_0x5c12('0x2'),_0x5c12('0x3')],'where':{'VoiceExtensionId':null}},'log':_0x5c12('0x0')});};};
\ No newline at end of file
+var _0x81d5=['exten','recordingFormat','../client','getVoiceExtensions','GetVoiceExtension'];(function(_0x45494d,_0x4c7bb3){var _0x22872d=function(_0x19c9a9){while(--_0x19c9a9){_0x45494d['push'](_0x45494d['shift']());}};_0x22872d(++_0x4c7bb3);}(_0x81d5,0x1ab));var _0x581d=function(_0x14e6f8,_0x1de5c2){_0x14e6f8=_0x14e6f8-0x0;var _0x4f6daa=_0x81d5[_0x14e6f8];return _0x4f6daa;};'use strict';var client=require(_0x581d('0x0'));exports[_0x581d('0x1')]=function(){return function(){return client['Request'](_0x581d('0x2'),{'options':{'raw':!![],'attributes':['id',_0x581d('0x3'),_0x581d('0x4')],'where':{'VoiceExtensionId':null}},'log':_0x581d('0x1')});};};
\ No newline at end of file
index d57f801..1654b4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf92e=['Trunk','callerid','active','Pause','mandatoryDispositionPause','Interval','interval','../client','getVoiceQueues','Request','GetVoiceQueue','name','acw','acwTimeout','monitor_format','dialActive','dialMethod','dialLimitChannel','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdNumber','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialBusyMaxRetry','dialTimezone','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold'];(function(_0x193b54,_0x554852){var _0x2b666d=function(_0x5b1c87){while(--_0x5b1c87){_0x193b54['push'](_0x193b54['shift']());}};_0x2b666d(++_0x554852);}(_0xf92e,0x129));var _0xef92=function(_0x2dbb39,_0x3b9de5){_0x2dbb39=_0x2dbb39-0x0;var _0x878265=_0xf92e[_0x2dbb39];return _0x878265;};'use strict';var client=require(_0xef92('0x0'));exports[_0xef92('0x1')]=function(){return function(){return client[_0xef92('0x2')](_0xef92('0x3'),{'options':{'raw':![],'attributes':['id',_0xef92('0x4'),_0xef92('0x5'),_0xef92('0x6'),'autopause',_0xef92('0x7'),'type',_0xef92('0x8'),_0xef92('0x9'),_0xef92('0xa'),'dialLimitQueue',_0xef92('0xb'),_0xef92('0xc'),_0xef92('0xd'),_0xef92('0xe'),'dialOriginateCallerIdName',_0xef92('0xf'),'dialOriginateTimeout',_0xef92('0x10'),_0xef92('0x11'),_0xef92('0x12'),_0xef92('0x13'),'dialCongestionRetryFrequency',_0xef92('0x14'),'dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry',_0xef92('0x15'),'dialGlobalInterval','dialPrefix',_0xef92('0x16'),_0xef92('0x17'),_0xef92('0x18'),'dialAMDGreeting','dialAMDAfterGreetingSilence',_0xef92('0x19'),_0xef92('0x1a'),_0xef92('0x1b'),_0xef92('0x1c'),_0xef92('0x1d'),_0xef92('0x1e'),_0xef92('0x1f'),_0xef92('0x20'),'dialRecallInQueue','dialOrderByScheduledAt',_0xef92('0x21'),_0xef92('0x22'),_0xef92('0x23'),'monitor_format',_0xef92('0x24'),_0xef92('0x25'),_0xef92('0x26'),_0xef92('0x27'),_0xef92('0x28'),_0xef92('0x29'),_0xef92('0x2a'),'dialAbandonedMaxRetry',_0xef92('0x2b'),_0xef92('0x2c'),_0xef92('0x2d'),_0xef92('0x2e'),_0xef92('0x2f'),_0xef92('0x30'),_0xef92('0x31'),_0xef92('0x32')],'include':[{'model':'Trunk','as':_0xef92('0x33'),'attributes':['id',_0xef92('0x4'),_0xef92('0x34'),_0xef92('0x35')]},{'model':_0xef92('0x36'),'as':_0xef92('0x37'),'attributes':['id','name']},{'model':'Trunk','as':'TrunkBackup','attributes':['id',_0xef92('0x4'),_0xef92('0x34'),_0xef92('0x35')]},{'model':_0xef92('0x38'),'as':'Interval','attributes':['id',_0xef92('0x4')],'include':[{'model':_0xef92('0x38'),'as':'Intervals','attributes':['id','name',_0xef92('0x39')]}]}]},'log':_0xef92('0x1')});};};
\ No newline at end of file
+var _0xf66a=['dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialPredictiveIntervalMaxThreshold','Trunk','name','callerid','active','Pause','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','getVoiceQueues','Request','acw','acwTimeout','autopause','monitor_format','type','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimizationPercentage','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialQueueTimeout','dialQueueProject','dialCongestionRetryFrequency'];(function(_0x428018,_0x2e3229){var _0x49fefa=function(_0x3dacdc){while(--_0x3dacdc){_0x428018['push'](_0x428018['shift']());}};_0x49fefa(++_0x2e3229);}(_0xf66a,0x6e));var _0xaf66=function(_0x1ceaca,_0x19dbe7){_0x1ceaca=_0x1ceaca-0x0;var _0x5b4a51=_0xf66a[_0x1ceaca];return _0x5b4a51;};'use strict';var client=require('../client');exports[_0xaf66('0x0')]=function(){return function(){return client[_0xaf66('0x1')]('GetVoiceQueue',{'options':{'raw':![],'attributes':['id','name',_0xaf66('0x2'),_0xaf66('0x3'),_0xaf66('0x4'),_0xaf66('0x5'),_0xaf66('0x6'),_0xaf66('0x7'),_0xaf66('0x8'),_0xaf66('0x9'),_0xaf66('0xa'),_0xaf66('0xb'),'dialPredictiveOptimization',_0xaf66('0xc'),'dialPredictiveInterval',_0xaf66('0xd'),_0xaf66('0xe'),'dialOriginateTimeout','dialQueueOptions',_0xaf66('0xf'),_0xaf66('0x10'),'dialCongestionMaxRetry',_0xaf66('0x11'),_0xaf66('0x12'),_0xaf66('0x13'),_0xaf66('0x14'),'dialNoAnswerRetryFrequency',_0xaf66('0x15'),_0xaf66('0x16'),_0xaf66('0x17'),_0xaf66('0x18'),_0xaf66('0x19'),_0xaf66('0x1a'),_0xaf66('0x1b'),_0xaf66('0x1c'),_0xaf66('0x1d'),_0xaf66('0x1e'),_0xaf66('0x1f'),_0xaf66('0x20'),_0xaf66('0x21'),_0xaf66('0x22'),_0xaf66('0x23'),_0xaf66('0x24'),_0xaf66('0x25'),_0xaf66('0x26'),_0xaf66('0x27'),_0xaf66('0x28'),_0xaf66('0x29'),_0xaf66('0x2a'),_0xaf66('0x5'),_0xaf66('0x2b'),_0xaf66('0x2c'),'dialCutDigit',_0xaf66('0x2d'),_0xaf66('0x2e'),_0xaf66('0x2f'),_0xaf66('0x30'),'dialAbandonedMaxRetry',_0xaf66('0x31'),_0xaf66('0x32'),_0xaf66('0x33'),_0xaf66('0x34'),_0xaf66('0x35'),'mandatoryDisposition',_0xaf66('0x36'),'dialPredictiveIntervalMinThreshold'],'include':[{'model':_0xaf66('0x37'),'as':_0xaf66('0x37'),'attributes':['id',_0xaf66('0x38'),_0xaf66('0x39'),_0xaf66('0x3a')]},{'model':_0xaf66('0x3b'),'as':_0xaf66('0x3c'),'attributes':['id','name']},{'model':_0xaf66('0x37'),'as':_0xaf66('0x3d'),'attributes':['id','name',_0xaf66('0x39'),'active']},{'model':_0xaf66('0x3e'),'as':'Interval','attributes':['id',_0xaf66('0x38')],'include':[{'model':_0xaf66('0x3e'),'as':_0xaf66('0x3f'),'attributes':['id',_0xaf66('0x38'),'interval']}]}]},'log':_0xaf66('0x0')});};};
\ No newline at end of file
index 9ff4e48..014cd8e 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(_0x53a5a0,_0x84c1fb){var _0x24eaf7=function(_0x4d3bba){while(--_0x4d3bba){_0x53a5a0['push'](_0x53a5a0['shift']());}};_0x24eaf7(++_0x84c1fb);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5037ab,_0x43209e){_0x5037ab=_0x5037ab-0x0;var _0x512adb=_0xa9e0[_0x5037ab];return _0x512adb;};'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(_0x555748,_0x4c6ba4){var _0x2d43fe=function(_0x36f5ad){while(--_0x36f5ad){_0x555748['push'](_0x555748['shift']());}};_0x2d43fe(++_0x4c6ba4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0xa9e0[_0x3e112d];return _0x531c31;};'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 46beca9..171b946 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9d3=['getVoiceQueueRtPauses','Request','GetVoiceQueueRtPauses','../client'];(function(_0x24bcc3,_0x4026e3){var _0x5487b4=function(_0x31e642){while(--_0x31e642){_0x24bcc3['push'](_0x24bcc3['shift']());}};_0x5487b4(++_0x4026e3);}(_0xb9d3,0xef));var _0x3b9d=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0xb9d3[_0x173441];return _0x2423a8;};'use strict';var client=require(_0x3b9d('0x0'));exports[_0x3b9d('0x1')]=function(_0x480d4c){return function(){return client[_0x3b9d('0x2')](_0x3b9d('0x3'),{'options':{'where':{'VoiceQueueId':_0x480d4c,'paused':!![]},'raw':!![]},'log':_0x3b9d('0x1')});};};
\ No newline at end of file
+var _0x505b=['getVoiceQueueRtPauses','../client','Request','GetVoiceQueueRtPauses'];(function(_0x1fc716,_0x263857){var _0x637fd3=function(_0x1fbfeb){while(--_0x1fbfeb){_0x1fc716['push'](_0x1fc716['shift']());}};_0x637fd3(++_0x263857);}(_0x505b,0x139));var _0xb505=function(_0x2c7618,_0x26be9c){_0x2c7618=_0x2c7618-0x0;var _0x5ce3f0=_0x505b[_0x2c7618];return _0x5ce3f0;};'use strict';var client=require(_0xb505('0x0'));exports['getVoiceQueueRtPauses']=function(_0x5c3242){return function(){return client[_0xb505('0x1')](_0xb505('0x2'),{'options':{'where':{'VoiceQueueId':_0x5c3242,'paused':!![]},'raw':!![]},'log':_0xb505('0x3')});};};
\ No newline at end of file
index d5af398..1161d52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x313952,_0xbca628){var _0x5db4be=function(_0x310bf9){while(--_0x310bf9){_0x313952['push'](_0x313952['shift']());}};_0x5db4be(++_0xbca628);}(_0x7a54,0x106));var _0x47a5=function(_0x2b1723,_0x12c671){_0x2b1723=_0x2b1723-0x0;var _0x476968=_0x7a54[_0x2b1723];return _0x476968;};'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
+var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x4d3239,_0x10972b){var _0x347422=function(_0x34daca){while(--_0x34daca){_0x4d3239['push'](_0x4d3239['shift']());}};_0x347422(++_0x10972b);}(_0x7a54,0x106));var _0x47a5=function(_0x4a57cd,_0x2303d5){_0x4a57cd=_0x4a57cd-0x0;var _0x4f5ed3=_0x7a54[_0x4a57cd];return _0x4f5ed3;};'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 2856ddb..1bfc072 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8113=['secondtransfererconnectedlinename','origtransfereraccountcode','secondtransfererexten','transfertargetcalleridnum','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','origtransfererexten','attended','../client','transfers','blindTransfer','CreateVoiceTransferReport','result','transfererchannel','transferercalleridname','transfererconnectedlinenum','transfereraccountcode','transferercontext','transfererlinkedid','transfereecalleridnum','transfereecalleridname','transfereecontext','transfereeexten','transfereelinkedid','isexternal','context','blind','attendedTransfer','Request','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum'];(function(_0x435044,_0x36ab8e){var _0x33d4c6=function(_0x15efa0){while(--_0x15efa0){_0x435044['push'](_0x435044['shift']());}};_0x33d4c6(++_0x36ab8e);}(_0x8113,0x1ed));var _0x3811=function(_0x1ad7f3,_0x2ef431){_0x1ad7f3=_0x1ad7f3-0x0;var _0x205d29=_0x8113[_0x1ad7f3];return _0x205d29;};'use strict';var client=require(_0x3811('0x0'));exports[_0x3811('0x1')]={};exports[_0x3811('0x2')]=function(_0x43c4d0){return client['Request'](_0x3811('0x3'),{'body':{'result':_0x43c4d0[_0x3811('0x4')],'transfererchannel':_0x43c4d0[_0x3811('0x5')],'transferercalleridnum':_0x43c4d0['transferercalleridnum'],'transferercalleridname':_0x43c4d0[_0x3811('0x6')],'transfererconnectedlinenum':_0x43c4d0[_0x3811('0x7')],'transfererconnectedlinename':_0x43c4d0['transfererconnectedlinename'],'transfereraccountcode':_0x43c4d0[_0x3811('0x8')],'transferercontext':_0x43c4d0[_0x3811('0x9')],'transfererexten':_0x43c4d0['transfererexten'],'transfererlinkedid':_0x43c4d0[_0x3811('0xa')],'transfereechannel':_0x43c4d0['transfereechannel'],'transfereecalleridnum':_0x43c4d0[_0x3811('0xb')],'transfereecalleridname':_0x43c4d0[_0x3811('0xc')],'transfereeconnectedlinenum':_0x43c4d0['transfereeconnectedlinenum'],'transfereeconnectedlinename':_0x43c4d0['transfereeconnectedlinename'],'transfereeaccountcode':_0x43c4d0['transfereeaccountcode'],'transfereecontext':_0x43c4d0[_0x3811('0xd')],'transfereeexten':_0x43c4d0[_0x3811('0xe')],'transfereelinkedid':_0x43c4d0[_0x3811('0xf')],'isexternal':_0x43c4d0[_0x3811('0x10')],'context':_0x43c4d0[_0x3811('0x11')],'extension':_0x43c4d0['extension'],'type':_0x3811('0x12')},'log':_0x3811('0x3')});};exports[_0x3811('0x13')]=function(_0x184482){return client[_0x3811('0x14')]('CreateVoiceTransferReport',{'body':{'result':_0x184482[_0x3811('0x4')],'transfererchannel':_0x184482[_0x3811('0x15')],'transferercalleridnum':_0x184482[_0x3811('0x16')],'transferercalleridname':_0x184482[_0x3811('0x17')],'transfererconnectedlinenum':_0x184482[_0x3811('0x18')],'transfererconnectedlinename':_0x184482[_0x3811('0x19')],'transfereraccountcode':_0x184482[_0x3811('0x1a')],'transferercontext':_0x184482['secondtransferercontext'],'transfererexten':_0x184482[_0x3811('0x1b')],'transfererlinkedid':_0x184482['origtransfererlinkedid'],'transfereechannel':_0x184482['transfertargetchannel'],'transfereecalleridnum':_0x184482[_0x3811('0x1c')],'transfereecalleridname':_0x184482['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x184482[_0x3811('0x1d')],'transfereeconnectedlinename':_0x184482[_0x3811('0x1e')],'transfereeaccountcode':_0x184482[_0x3811('0x1f')],'transfereecontext':_0x184482[_0x3811('0x20')],'transfereeexten':_0x184482[_0x3811('0x21')],'transfereelinkedid':_0x184482[_0x3811('0x22')],'isexternal':_0x184482['isexternal'],'context':_0x184482['origtransferercontext'],'extension':_0x184482[_0x3811('0x23')],'type':_0x3811('0x24')},'log':_0x3811('0x3')});};
\ No newline at end of file
+var _0xd9f7=['transfereelinkedid','isexternal','context','attendedTransfer','result','origtransfererchannel','origtransferercalleridnum','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','secondtransferercontext','origtransfererlinkedid','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetexten','transfertargetlinkedid','origtransferercontext','attended','../client','transfers','blindTransfer','Request','CreateVoiceTransferReport','transferercalleridnum','transfererconnectedlinenum','transfererconnectedlinename','transferercontext','transfererexten','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeaccountcode','transfereecontext','transfereeexten'];(function(_0x16a185,_0x35a264){var _0x321655=function(_0x1073de){while(--_0x1073de){_0x16a185['push'](_0x16a185['shift']());}};_0x321655(++_0x35a264);}(_0xd9f7,0xf1));var _0x7d9f=function(_0x4233cc,_0x6f3c35){_0x4233cc=_0x4233cc-0x0;var _0x37825a=_0xd9f7[_0x4233cc];return _0x37825a;};'use strict';var client=require(_0x7d9f('0x0'));exports[_0x7d9f('0x1')]={};exports[_0x7d9f('0x2')]=function(_0x5ac4ca){return client[_0x7d9f('0x3')](_0x7d9f('0x4'),{'body':{'result':_0x5ac4ca['result'],'transfererchannel':_0x5ac4ca['transfererchannel'],'transferercalleridnum':_0x5ac4ca[_0x7d9f('0x5')],'transferercalleridname':_0x5ac4ca['transferercalleridname'],'transfererconnectedlinenum':_0x5ac4ca[_0x7d9f('0x6')],'transfererconnectedlinename':_0x5ac4ca[_0x7d9f('0x7')],'transfereraccountcode':_0x5ac4ca['transfereraccountcode'],'transferercontext':_0x5ac4ca[_0x7d9f('0x8')],'transfererexten':_0x5ac4ca[_0x7d9f('0x9')],'transfererlinkedid':_0x5ac4ca[_0x7d9f('0xa')],'transfereechannel':_0x5ac4ca[_0x7d9f('0xb')],'transfereecalleridnum':_0x5ac4ca[_0x7d9f('0xc')],'transfereecalleridname':_0x5ac4ca[_0x7d9f('0xd')],'transfereeconnectedlinenum':_0x5ac4ca[_0x7d9f('0xe')],'transfereeconnectedlinename':_0x5ac4ca['transfereeconnectedlinename'],'transfereeaccountcode':_0x5ac4ca[_0x7d9f('0xf')],'transfereecontext':_0x5ac4ca[_0x7d9f('0x10')],'transfereeexten':_0x5ac4ca[_0x7d9f('0x11')],'transfereelinkedid':_0x5ac4ca[_0x7d9f('0x12')],'isexternal':_0x5ac4ca[_0x7d9f('0x13')],'context':_0x5ac4ca[_0x7d9f('0x14')],'extension':_0x5ac4ca['extension'],'type':'blind'},'log':_0x7d9f('0x4')});};exports[_0x7d9f('0x15')]=function(_0x545315){return client[_0x7d9f('0x3')](_0x7d9f('0x4'),{'body':{'result':_0x545315[_0x7d9f('0x16')],'transfererchannel':_0x545315[_0x7d9f('0x17')],'transferercalleridnum':_0x545315[_0x7d9f('0x18')],'transferercalleridname':_0x545315['origtransferercalleridname'],'transfererconnectedlinenum':_0x545315[_0x7d9f('0x19')],'transfererconnectedlinename':_0x545315[_0x7d9f('0x1a')],'transfereraccountcode':_0x545315['origtransfereraccountcode'],'transferercontext':_0x545315[_0x7d9f('0x1b')],'transfererexten':_0x545315['secondtransfererexten'],'transfererlinkedid':_0x545315[_0x7d9f('0x1c')],'transfereechannel':_0x545315['transfertargetchannel'],'transfereecalleridnum':_0x545315['transfertargetcalleridnum'],'transfereecalleridname':_0x545315[_0x7d9f('0x1d')],'transfereeconnectedlinenum':_0x545315[_0x7d9f('0x1e')],'transfereeconnectedlinename':_0x545315[_0x7d9f('0x1f')],'transfereeaccountcode':_0x545315[_0x7d9f('0x20')],'transfereecontext':_0x545315['transfertargetcontext'],'transfereeexten':_0x545315[_0x7d9f('0x21')],'transfereelinkedid':_0x545315[_0x7d9f('0x22')],'isexternal':_0x545315[_0x7d9f('0x13')],'context':_0x545315[_0x7d9f('0x23')],'extension':_0x545315['origtransfererexten'],'type':_0x7d9f('0x24')},'log':_0x7d9f('0x4')});};
\ No newline at end of file
index c65e9e7..5eac5a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['Trunk','active','callerid','Interval','push','length','find','omit','undefined','values','channels','voicechannel','map','uniqueid','channel','%s.%s','filename','wav','MixMonitor','ai(mixmonitorid)','then','monitors','/var/spool/asterisk/monitor/','toLowerCase','isNil','mixmonitorid','rec','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','resolve','destinationchannel','stop','status','StopMixMonitor\x20Success','queueChannels','voicequeuechannel','voicequeuechannelredirect','exten','context','telephones','trunks','run','Event\x20name\x20mandatory','emit','custom:','checkAfterSend','server','listen','127.0.0.1','log','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','validate','bluebird','moment','../properties','../ami','format','%s/%s','SIP','name','timers','timer','updateAcw','agents','pause','isConnected','asterisk','username','ami\x20disconnected','module','action','Reload','message','catch','error','join','pick','Command','Action','content','voiceQueues','hasOwnProperty','strategy','answered','available','pTalking','sumBillable','sumHoldTime','talking','total','type','abandoned','waiting','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2ef3,0xba));var _0x32ef=function(_0x2ce2a8,_0x433c7a){_0x2ce2a8=_0x2ce2a8-0x0;var _0x1f5262=_0x2ef3[_0x2ce2a8];return _0x1f5262;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var jayson=require(_0x32ef('0x2'));var schema=require(_0x32ef('0x3'));var BPromise=require(_0x32ef('0x4'));var moment=require(_0x32ef('0x5'));var config=require('../../../config/environment');var properties=require(_0x32ef('0x6'));var ami=require(_0x32ef('0x7'));exports['listen']=function(_0x402857,_0x37dd1d,_0x4c8104){return new BPromise(function(_0x5dfa09,_0x2c0089){var _0x4bfcf8={'QueuePause':function(_0x367c39){return new Promise(function(_0x2fb8eb,_0x234863){var _0x298066=util[_0x32ef('0x8')](_0x32ef('0x9'),_0x32ef('0xa'),_0x367c39[_0x32ef('0xb')]);if(_0x402857['timers']&&_0x402857['timers'][_0x298066]&&_0x402857[_0x32ef('0xc')][_0x298066][_0x32ef('0xd')]){_0x402857[_0x32ef('0xc')][_0x298066][_0x32ef('0xe')]();}if(_0x402857['agents'][_0x298066]){_0x402857[_0x32ef('0xf')][_0x298066]['updateStatusRealtime']({'statePause':_0x367c39[_0x32ef('0x10')]?!![]:![]});}_0x2fb8eb({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x3e98df){var _0x1ef1ae=this;return new Promise(function(_0x5c3eb9,_0x539d18){if(ami[_0x32ef('0x11')]()==![]){return _0x539d18(_0x1ef1ae['error'](0x1f4,[config[_0x32ef('0x12')]['ip'],config[_0x32ef('0x12')][_0x32ef('0x13')],_0x32ef('0x14')]['join']('\x20')));}_0x3e98df=_['pick'](_0x3e98df,_['keys'](properties[_0x32ef('0x15')]));_0x3e98df[_0x32ef('0x16')]=_0x32ef('0x17');return ami['Action'](_0x3e98df)['then'](function(_0x1eb468){_0x5c3eb9({'code':0xc8,'message':_0x1eb468[_0x32ef('0x18')]});})[_0x32ef('0x19')](function(_0x57863c){_0x539d18(_0x1ef1ae[_0x32ef('0x1a')](0x1f5,_0x57863c[_0x32ef('0x18')]));});});},'Command':function(_0x4f4c98){var _0x304505=this;return new Promise(function(_0x314ef1,_0x26aff3){if(ami[_0x32ef('0x11')]()==![]){return _0x26aff3(_0x304505[_0x32ef('0x1a')](0x1f4,[config[_0x32ef('0x12')]['ip'],config['asterisk'][_0x32ef('0x13')],'ami\x20disconnected'][_0x32ef('0x1b')]('\x20')));}_0x4f4c98=_[_0x32ef('0x1c')](_0x4f4c98,'command');_0x4f4c98[_0x32ef('0x16')]=_0x32ef('0x1d');return ami[_0x32ef('0x1e')](_0x4f4c98)['then'](function(_0x57f5e5){_0x314ef1({'code':0xc8,'message':_0x57f5e5[_0x32ef('0x1f')]});})[_0x32ef('0x19')](function(_0x225feb){_0x26aff3(_0x304505['error'](0x1f5,_0x225feb['message']));});});},'VoiceQueues':function(_0x19ea6){return new Promise(function(_0x4d584b,_0x51a412){var _0x278495=[];for(var _0x14d4b3 in _0x402857[_0x32ef('0x20')]){if(_0x402857[_0x32ef('0x20')][_0x32ef('0x21')](_0x14d4b3)){var _0x234175=_0x402857[_0x32ef('0x20')][_0x14d4b3];var _0x38aed5={'id':_0x234175['id'],'name':_0x234175[_0x32ef('0xb')],'strategy':_0x234175[_0x32ef('0x22')],'answered':_0x234175[_0x32ef('0x23')],'available':_0x234175[_0x32ef('0x24')],'loggedIn':_0x234175['loggedIn'],'pTalking':_0x234175[_0x32ef('0x25')],'sumBillable':_0x234175[_0x32ef('0x26')],'sumDuration':_0x234175['sumDuration'],'sumHoldTime':_0x234175[_0x32ef('0x27')]||0x0,'talking':_0x234175[_0x32ef('0x28')],'total':_0x234175[_0x32ef('0x29')],'type':_0x234175[_0x32ef('0x2a')],'unmanaged':_0x234175['unmanaged'],'abandoned':_0x234175[_0x32ef('0x2b')],'waiting':_0x234175[_0x32ef('0x2c')],'loggedInDb':_0x234175[_0x32ef('0x2d')]};if(_0x234175[_0x32ef('0x2a')]===_0x32ef('0x2e')){_0x38aed5[_0x32ef('0x2f')]=_0x234175[_0x32ef('0x2f')];_0x38aed5['dialMethod']=_0x234175[_0x32ef('0x30')];_0x38aed5['dialOriginateCallerIdName']=_0x234175[_0x32ef('0x31')];_0x38aed5[_0x32ef('0x32')]=_0x234175['dialOriginateCallerIdNumber'];_0x38aed5[_0x32ef('0x33')]=_0x234175[_0x32ef('0x33')];_0x38aed5[_0x32ef('0x34')]=_0x234175[_0x32ef('0x34')];_0x38aed5[_0x32ef('0x35')]=_0x234175['temp'];_0x38aed5['outboundAnswerAgiCallsDay']=_0x234175[_0x32ef('0x36')];_0x38aed5['outboundAnswerCallsDay']=_0x234175[_0x32ef('0x37')];_0x38aed5[_0x32ef('0x38')]=_0x234175[_0x32ef('0x38')];_0x38aed5[_0x32ef('0x39')]=_0x234175[_0x32ef('0x39')];_0x38aed5[_0x32ef('0x3a')]=_0x234175['outboundCongestionCallsDay'];_0x38aed5['outboundDropCallsDayACS']=_0x234175['outboundDropCallsDayACS'];_0x38aed5[_0x32ef('0x3b')]=_0x234175[_0x32ef('0x3b')];_0x38aed5[_0x32ef('0x3c')]=_0x234175['outboundDropCallsDayTimeout'];_0x38aed5['outboundNoAnswerCallsDay']=_0x234175[_0x32ef('0x3d')];_0x38aed5[_0x32ef('0x3e')]=_0x234175[_0x32ef('0x3e')];_0x38aed5['outboundOriginateFailureCallsDay']=_0x234175['outboundOriginateFailureCallsDay'];_0x38aed5[_0x32ef('0x3f')]=_0x234175[_0x32ef('0x3f')];_0x38aed5[_0x32ef('0x40')]=_0x234175[_0x32ef('0x40')];_0x38aed5[_0x32ef('0x41')]=_0x234175[_0x32ef('0x41')];_0x38aed5[_0x32ef('0x42')]=_0x234175[_0x32ef('0x42')];_0x38aed5[_0x32ef('0x43')]=_0x234175['predictiveIntervalAvgHoldtime'];_0x38aed5[_0x32ef('0x44')]=_0x234175[_0x32ef('0x44')];_0x38aed5[_0x32ef('0x45')]=_0x234175['predictiveIntervalDroppedCallsCallersExit'];_0x38aed5[_0x32ef('0x46')]=_0x234175[_0x32ef('0x46')];_0x38aed5[_0x32ef('0x47')]=_0x234175[_0x32ef('0x47')];_0x38aed5[_0x32ef('0x48')]=_0x234175[_0x32ef('0x48')];_0x38aed5[_0x32ef('0x49')]=_0x234175[_0x32ef('0x49')];_0x38aed5[_0x32ef('0x4a')]=_0x234175[_0x32ef('0x4a')];_0x38aed5[_0x32ef('0x4b')]=_0x234175[_0x32ef('0x4b')];_0x38aed5['predictiveIntervalAvailable']=_0x234175[_0x32ef('0x4c')];_0x38aed5[_0x32ef('0x4d')]=_0x234175[_0x32ef('0x4d')];_0x38aed5[_0x32ef('0x18')]=_0x234175[_0x32ef('0x18')];_0x38aed5[_0x32ef('0x4e')]=_0x234175[_0x32ef('0x4e')];_0x38aed5['erlangCalls']=_0x234175['erlangCalls'];_0x38aed5[_0x32ef('0x4f')]=_0x234175[_0x32ef('0x4f')];_0x38aed5[_0x32ef('0x50')]=_0x234175[_0x32ef('0x50')];_0x38aed5['erlangBusyFactor']=_0x234175[_0x32ef('0x51')];_0x38aed5[_0x32ef('0x52')]=_0x234175['startPredictive'];_0x38aed5[_0x32ef('0x53')]=_0x234175['startProgressive'];}if(_0x234175[_0x32ef('0x54')]){_0x38aed5[_0x32ef('0x54')]={'id':_0x234175[_0x32ef('0x54')]['id'],'name':_0x234175[_0x32ef('0x54')][_0x32ef('0xb')],'active':_0x234175[_0x32ef('0x54')][_0x32ef('0x55')],'callerid':_0x234175[_0x32ef('0x54')][_0x32ef('0x56')]};}if(_0x234175[_0x32ef('0x57')]){_0x38aed5['Interval']={'id':_0x234175[_0x32ef('0x57')]['id'],'name':_0x234175['Interval'][_0x32ef('0xb')]};}_0x278495[_0x32ef('0x58')](_0x38aed5);}}_0x4d584b({'count':_0x278495[_0x32ef('0x59')],'rows':_0x278495});});},'UpdateVoiceQueue':function(_0x4d8393){return new Promise(function(_0x502113,_0x230ac9){var _0x37b954=_[_0x32ef('0x5a')](_0x402857[_0x32ef('0x20')],{'id':parseInt(_0x4d8393['id'])});var _0x40bf12=_[_0x32ef('0x5b')](_0x4d8393,['id']);if(_0x37b954){for(var _0x47dbe1 in _0x40bf12){if(typeof _0x40bf12[_0x47dbe1]!=='undefined'&&typeof _0x37b954[_0x47dbe1]!==_0x32ef('0x5c')){_0x37b954[_0x47dbe1]=_0x40bf12[_0x47dbe1];}}_0x502113(_0x37b954);}else{_0x230ac9();}});},'VoiceChannels':function(_0x270826){return new Promise(function(_0x27d65b,_0x13b270){var _0x209361=_[_0x32ef('0x5d')](_0x402857[_0x32ef('0x5e')]);_0x27d65b({'count':_0x209361[_0x32ef('0x59')],'rows':_0x209361});});},'VoiceChannelMixMonitor':function(_0xc10e7){var _0x1ebedf=this;return new Promise(function(_0x35a294,_0x30ad49){if(ami[_0x32ef('0x11')]()==![]){return _0x30ad49(_0x1ebedf['error'](0x1f4,[config[_0x32ef('0x12')]['ip'],config[_0x32ef('0x12')][_0x32ef('0x13')],_0x32ef('0x14')][_0x32ef('0x1b')]('\x20')));}var _0x4353f0=schema(properties[_0x32ef('0x5f')])[_0x32ef('0x3')](_0xc10e7);if(_0x4353f0[_0x32ef('0x59')]>0x0){return _0x30ad49(_0x1ebedf[_0x32ef('0x1a')](0x1f4,_[_0x32ef('0x60')](_0x4353f0,_0x32ef('0x18'))[_0x32ef('0x1b')](',\x20')));}var _0x326445=_[_0x32ef('0x5a')](_0x402857[_0x32ef('0x5e')],{'uniqueid':_0xc10e7[_0x32ef('0x61')]});if(_0x326445&&_0x326445[_0x32ef('0x62')]){var _0x4e0d6b=util['format'](_0x32ef('0x63'),_0xc10e7[_0x32ef('0x64')]||_0xc10e7[_0x32ef('0x61')],_0xc10e7[_0x32ef('0x8')]||_0x32ef('0x65'));return ami[_0x32ef('0x1e')]({'action':_0x32ef('0x66'),'channel':_0x326445[_0x32ef('0x62')],'file':_0x4e0d6b,'options':_0x32ef('0x67')})[_0x32ef('0x68')](function(_0x3697a7){var _0x4a6fd2=_[_0x32ef('0x5a')](_0x326445[_0x32ef('0x69')],{'filename':_0x32ef('0x6a')+_0x4e0d6b[_0x32ef('0x6b')]()});if(_[_0x32ef('0x6c')](_0x4a6fd2)){_0x326445[_0x32ef('0x69')]['push']({'filename':_0x32ef('0x6a')+_0x4e0d6b[_0x32ef('0x6b')](),'createdAt':moment()[_0x32ef('0x8')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':_0x3697a7[_0x32ef('0x6d')],'status':'rec'});}else{_0x4a6fd2[_0x32ef('0x6d')]=_0x3697a7[_0x32ef('0x6d')];_0x4a6fd2['status']=_0x32ef('0x6e');}_0x35a294({'code':0xc8,'message':[_0xc10e7['uniqueid'],_0x32ef('0x6f'),_0x3697a7[_0x32ef('0x6d')]][_0x32ef('0x1b')]('\x20'),'mixmonitorid':_0x3697a7[_0x32ef('0x6d')]});})[_0x32ef('0x19')](function(_0x30e377){_0x30ad49(_0x1ebedf[_0x32ef('0x1a')](0x1f5,[_0xc10e7['uniqueid'],_0x30e377['message'][_0x32ef('0x6b')]()]['join']('\x20')));});}else{return _0x30ad49(_0x1ebedf['error'](0x1f5,_0x32ef('0x70')));}});},'VoiceChannelStopMixMonitor':function(_0x89d0b3){var _0x2ef0f8=this;return new Promise(function(_0x6aae59,_0x2468e6){if(ami[_0x32ef('0x11')]()==![]){return _0x2468e6(_0x2ef0f8[_0x32ef('0x1a')](0x1f4,[config[_0x32ef('0x12')]['ip'],config[_0x32ef('0x12')][_0x32ef('0x13')],'ami\x20disconnected']['join']('\x20')));}var _0x120d9d=schema(properties[_0x32ef('0x5f')])['validate'](_0x89d0b3);if(_0x120d9d[_0x32ef('0x59')]>0x0){return _0x2468e6(_0x2ef0f8[_0x32ef('0x1a')](0x1f4,_[_0x32ef('0x60')](_0x120d9d,'message')[_0x32ef('0x1b')](',\x20')));}var _0x3c31d0=_[_0x32ef('0x5a')](_0x402857['channels'],{'uniqueid':_0x89d0b3['uniqueid']});if(_0x3c31d0){return BPromise[_0x32ef('0x71')]()['then'](function(){if(_0x3c31d0[_0x32ef('0x62')]){return ami['Action']({'action':'StopMixMonitor','channel':_0x3c31d0[_0x32ef('0x62')],'mixmonitorid':_0x89d0b3[_0x32ef('0x6d')]})[_0x32ef('0x19')](function(_0x5dca6a){});}})[_0x32ef('0x68')](function(){if(_0x3c31d0[_0x32ef('0x72')]){return ami[_0x32ef('0x1e')]({'action':'StopMixMonitor','channel':_0x3c31d0[_0x32ef('0x72')],'mixmonitorid':_0x89d0b3[_0x32ef('0x6d')]})['catch'](function(_0x4a4eaa){});}})[_0x32ef('0x68')](function(_0x3a6697){var _0x2518a0=_[_0x32ef('0x5a')](_0x3c31d0[_0x32ef('0x69')],{'mixmonitorid':_0x89d0b3[_0x32ef('0x6d')]});if(_0x2518a0){_0x2518a0['status']=_0x32ef('0x73');}})[_0x32ef('0x68')](function(){var _0x25b6d6=util[_0x32ef('0x8')](_0x32ef('0x63'),_0x89d0b3[_0x32ef('0x64')]||_0x89d0b3[_0x32ef('0x61')],_0x89d0b3[_0x32ef('0x8')]||_0x32ef('0x65'));var _0x4fa4df=_[_0x32ef('0x5a')](_0x3c31d0[_0x32ef('0x69')],{'filename':_0x32ef('0x6a')+_0x25b6d6[_0x32ef('0x6b')]()});if(_0x4fa4df){_0x4fa4df[_0x32ef('0x74')]='stop';}})['then'](function(){_0x6aae59({'code':0xc8,'message':[_0x89d0b3[_0x32ef('0x61')],_0x32ef('0x75')][_0x32ef('0x1b')]('\x20')});})[_0x32ef('0x19')](function(_0x1a8bad){_0x2468e6(_0x2ef0f8['error'](0x1f5,[_0x89d0b3[_0x32ef('0x61')],_0x1a8bad['message'][_0x32ef('0x6b')]()][_0x32ef('0x1b')]('\x20')));});}else{return _0x2468e6(_0x2ef0f8['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannels':function(_0x2c9f7a){return new Promise(function(_0x1538d0,_0x2e0873){var _0x5b378b=_['values'](_0x402857[_0x32ef('0x76')]);_0x1538d0({'count':_0x5b378b[_0x32ef('0x59')],'rows':_0x5b378b});});},'VoiceQueuesChannel':function(_0x7d2c3a){var _0x416e62=this;return new Promise(function(_0x4f4006,_0x476bbf){var _0x10ab8c=schema(properties[_0x32ef('0x77')])[_0x32ef('0x3')](_0x7d2c3a);if(_0x10ab8c[_0x32ef('0x59')]>0x0){return _0x476bbf(_0x416e62[_0x32ef('0x1a')](0x1f4,_[_0x32ef('0x60')](_0x10ab8c,_0x32ef('0x18'))[_0x32ef('0x1b')](',\x20')));}var _0x1d0448=_[_0x32ef('0x5a')](_0x402857[_0x32ef('0x76')],{'uniqueid':_0x7d2c3a['uniqueid']});if(_0x1d0448){_0x4f4006(_0x1d0448);}else{return _0x476bbf(_0x416e62['error'](0x1f5,_0x32ef('0x70')));}});},'VoiceQueuesChannelHangup':function(_0x3c0b29){var _0x57a40e=this;return new Promise(function(_0x3a4be1,_0x5b3e58){if(ami[_0x32ef('0x11')]()==![]){return _0x5b3e58(_0x57a40e[_0x32ef('0x1a')](0x1f4,[config[_0x32ef('0x12')]['ip'],config['asterisk'][_0x32ef('0x13')],'ami\x20disconnected'][_0x32ef('0x1b')]('\x20')));}var _0x29b826=schema(properties['voicequeuechannelhangup'])['validate'](_0x3c0b29);if(_0x29b826[_0x32ef('0x59')]>0x0){return _0x5b3e58(_0x57a40e['error'](0x1f4,_[_0x32ef('0x60')](_0x29b826,'message')[_0x32ef('0x1b')](',\x20')));}var _0x199df6=_[_0x32ef('0x5a')](_0x402857['queueChannels'],{'uniqueid':_0x3c0b29['uniqueid']});if(_0x199df6&&_0x199df6['channel']){return ami[_0x32ef('0x1e')]({'action':'Hangup','channel':_0x199df6[_0x32ef('0x62')]})[_0x32ef('0x68')](function(_0x281541){_0x3a4be1({'code':0xc8,'message':[_0x3c0b29[_0x32ef('0x61')],_0x281541[_0x32ef('0x18')][_0x32ef('0x6b')]()]['join']('\x20')});})[_0x32ef('0x19')](function(_0x4e4a31){_0x5b3e58(_0x57a40e['error'](0x1f5,[_0x3c0b29[_0x32ef('0x61')],_0x4e4a31['message'][_0x32ef('0x6b')]()][_0x32ef('0x1b')]('\x20')));});}else{return _0x5b3e58(_0x57a40e['error'](0x1f5,_0x32ef('0x70')));}});},'VoiceQueuesChannelRedirect':function(_0x282805){var _0xf7cba1=this;return new Promise(function(_0x4712dc,_0x1fa36d){if(ami[_0x32ef('0x11')]()==![]){return _0x1fa36d(_0xf7cba1['error'](0x1f4,[config['asterisk']['ip'],config[_0x32ef('0x12')]['username'],_0x32ef('0x14')][_0x32ef('0x1b')]('\x20')));}var _0x114d8e=schema(properties[_0x32ef('0x78')])[_0x32ef('0x3')](_0x282805);if(_0x114d8e[_0x32ef('0x59')]>0x0){return _0x1fa36d(_0xf7cba1['error'](0x1f4,_[_0x32ef('0x60')](_0x114d8e,_0x32ef('0x18'))[_0x32ef('0x1b')](',\x20')));}var _0x2aeb11=_[_0x32ef('0x5a')](_0x402857['queueChannels'],{'uniqueid':_0x282805['uniqueid']});if(_0x2aeb11&&_0x2aeb11[_0x32ef('0x62')]){return ami[_0x32ef('0x1e')]({'action':'Redirect','channel':_0x2aeb11[_0x32ef('0x62')],'exten':_0x282805[_0x32ef('0x79')],'context':_0x282805[_0x32ef('0x7a')]||_0x2aeb11[_0x32ef('0x7a')],'priority':0x1})[_0x32ef('0x68')](function(_0xed05ca){_0x4712dc({'code':0xc8,'message':[_0x282805[_0x32ef('0x61')],_0xed05ca[_0x32ef('0x18')][_0x32ef('0x6b')]()]['join']('\x20')});})[_0x32ef('0x19')](function(_0xefbbf2){_0x1fa36d(_0xf7cba1['error'](0x1f5,[_0x282805[_0x32ef('0x61')],_0xefbbf2['message'][_0x32ef('0x6b')]()]['join']('\x20')));});}else{return _0x1fa36d(_0xf7cba1[_0x32ef('0x1a')](0x1f5,_0x32ef('0x70')));}});},'Agents':function(_0x28dc47){return new Promise(function(_0x3e000c,_0x49dc18){var _0x3f1d56=_[_0x32ef('0x5d')](_0x402857[_0x32ef('0xf')]);_0x3e000c({'count':_0x3f1d56['length'],'rows':_0x3f1d56});});},'Telephones':function(_0x526c8c){return new Promise(function(_0x4b787d,_0x1aff33){var _0x12f5ef=_[_0x32ef('0x5d')](_0x402857[_0x32ef('0x7b')]);_0x4b787d({'count':_0x12f5ef[_0x32ef('0x59')],'rows':_0x12f5ef});});},'Trunks':function(_0x5a1696){return new Promise(function(_0x2678e3,_0x5b3deb){var _0x471de6=_[_0x32ef('0x5d')](_0x402857[_0x32ef('0x7c')]);_0x2678e3({'count':_0x471de6['length'],'rows':_0x471de6});});},'OutboundChannels':function(_0x14399d){return new Promise(function(_0x42d2d4,_0x307c76){var _0x2ab385=_[_0x32ef('0x5d')](_0x402857['outboundChannels']);_0x42d2d4({'count':_0x2ab385[_0x32ef('0x59')],'rows':_0x2ab385});});},'Outbound':function(_0x484df0){return new Promise(function(_0x4f0433,_0x42a57f){_0x4f0433(_0x402857['outbound']);});},'Campaigns':function(_0x48af8a){return new Promise(function(_0x170479,_0x3cac07){var _0xf6bc02=_[_0x32ef('0x5d')](_0x402857['campaigns']);_0x170479({'count':_0xf6bc02[_0x32ef('0x59')],'rows':_0xf6bc02});});},'VoiceQueuesPreview':function(_0x51ca6e){var _0x503461=this;return new Promise(function(_0x4f7803,_0x56aede){_0x37dd1d[_0x32ef('0x7d')](_0x51ca6e['id'])[_0x32ef('0x68')](function(_0x20a92b){_0x4f7803({'code':0xc8,'message':_0x20a92b['message']});})['catch'](function(_0x33a7f6){_0x56aede(_0x503461[_0x32ef('0x1a')](0x1f4,_0x33a7f6[_0x32ef('0x18')]));});});},'EventManager':function(_0x3741f8){var _0xfa0379=this;return new Promise(function(_0x14b995,_0x182471){if(!_0x3741f8['event']){return _0x182471(_0xfa0379[_0x32ef('0x1a')](0x1f4,_0x32ef('0x7e')));}ami[_0x32ef('0x7f')](_0x32ef('0x80')+_0x3741f8['event'],_0x3741f8['message']);_0x14b995({'code':0xc8,'message':_0x3741f8});});},'FaxAccounts':function(_0x2148cd){return new Promise(function(_0x5eb320,_0x116951){var _0x1d3a37=_['values'](_0x402857['faxAccounts']);_0x5eb320({'count':_0x1d3a37['length'],'rows':_0x1d3a37});});},'SendFax':function(_0x201675){var _0x33f6c3=this;return new Promise(function(_0xa53375,_0x275995){_0x4c8104['send'](_0x201675)[_0x32ef('0x68')](function(_0xe52b7f){_0xa53375({'code':0xc8,'message':_0xe52b7f[_0x32ef('0x18')]});})['catch'](function(_0x2895ad){_0x275995(_0x33f6c3['error'](0x1f4,_0x2895ad[_0x32ef('0x18')]));});});},'CheckAfterSend':function(_0x6c8ba){var _0x5f4890=this;return new Promise(function(_0x4eaef9,_0x2d6a9a){_0x4c8104[_0x32ef('0x81')](_0x6c8ba)[_0x32ef('0x68')](function(_0x2e75c4){_0x4eaef9({'code':0xc8,'message':_0x2e75c4[_0x32ef('0x18')]});})[_0x32ef('0x19')](function(_0x33c450){_0x2d6a9a(_0x5f4890[_0x32ef('0x1a')](0x1f4,_0x33c450[_0x32ef('0x18')]));});});}};var _0x4cdefc=jayson[_0x32ef('0x82')](_0x4bfcf8)['http']();_0x4cdefc['on'](_0x32ef('0x1a'),function(_0x7e47b9){return _0x2c0089(_0x7e47b9);});_0x4cdefc[_0x32ef('0x83')](0x232a,_0x32ef('0x84'),function(){console[_0x32ef('0x85')]('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0x5dfa09(_0x32ef('0x86')+0x232a);});});};
\ No newline at end of file
+var _0xc9c3=['exten','context','trunks','outboundChannels','run','event','Event\x20name\x20mandatory','custom:','faxAccounts','send','checkAfterSend','http','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','moment','../../../config/environment','../properties','../ami','listen','format','%s/%s','SIP','name','timers','agents','updateStatusRealtime','pause','asterisk','username','ami\x20disconnected','join','pick','module','then','message','catch','error','command','action','Command','Action','content','voiceQueues','hasOwnProperty','strategy','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','total','unmanaged','abandoned','waiting','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','Interval','find','omit','undefined','values','channels','length','isConnected','voicechannel','validate','map','uniqueid','channel','wav','monitors','/var/spool/asterisk/monitor/','toLowerCase','isNil','push','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','resolve','destinationchannel','StopMixMonitor','status','stop','%s.%s','filename','StopMixMonitor\x20Success','voicequeuechannel','voicequeuechannelhangup','queueChannels','Redirect'];(function(_0x45cde7,_0x39f056){var _0x2a0443=function(_0x2e83ee){while(--_0x2e83ee){_0x45cde7['push'](_0x45cde7['shift']());}};_0x2a0443(++_0x39f056);}(_0xc9c3,0x96));var _0x3c9c=function(_0x2ba232,_0x242965){_0x2ba232=_0x2ba232-0x0;var _0x1eb5b=_0xc9c3[_0x2ba232];return _0x1eb5b;};'use strict';var _=require('lodash');var util=require('util');var jayson=require(_0x3c9c('0x0'));var schema=require('validate');var BPromise=require(_0x3c9c('0x1'));var moment=require(_0x3c9c('0x2'));var config=require(_0x3c9c('0x3'));var properties=require(_0x3c9c('0x4'));var ami=require(_0x3c9c('0x5'));exports[_0x3c9c('0x6')]=function(_0x143bfe,_0x512e80,_0x48b219){return new BPromise(function(_0x5c86bd,_0x5a2836){var _0x3ca0ce={'QueuePause':function(_0xc35e75){return new Promise(function(_0x2eb946,_0x3e5ccb){var _0x355ef3=util[_0x3c9c('0x7')](_0x3c9c('0x8'),_0x3c9c('0x9'),_0xc35e75[_0x3c9c('0xa')]);if(_0x143bfe['timers']&&_0x143bfe[_0x3c9c('0xb')][_0x355ef3]&&_0x143bfe[_0x3c9c('0xb')][_0x355ef3]['timer']){_0x143bfe[_0x3c9c('0xb')][_0x355ef3]['updateAcw']();}if(_0x143bfe[_0x3c9c('0xc')][_0x355ef3]){_0x143bfe[_0x3c9c('0xc')][_0x355ef3][_0x3c9c('0xd')]({'statePause':_0xc35e75[_0x3c9c('0xe')]?!![]:![]});}_0x2eb946({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x50cf96){var _0x4a60d9=this;return new Promise(function(_0x857b1f,_0x59bbc6){if(ami['isConnected']()==![]){return _0x59bbc6(_0x4a60d9['error'](0x1f4,[config[_0x3c9c('0xf')]['ip'],config['asterisk'][_0x3c9c('0x10')],_0x3c9c('0x11')][_0x3c9c('0x12')]('\x20')));}_0x50cf96=_[_0x3c9c('0x13')](_0x50cf96,_['keys'](properties[_0x3c9c('0x14')]));_0x50cf96['action']='Reload';return ami['Action'](_0x50cf96)[_0x3c9c('0x15')](function(_0x32d94a){_0x857b1f({'code':0xc8,'message':_0x32d94a[_0x3c9c('0x16')]});})[_0x3c9c('0x17')](function(_0x3e63e0){_0x59bbc6(_0x4a60d9[_0x3c9c('0x18')](0x1f5,_0x3e63e0[_0x3c9c('0x16')]));});});},'Command':function(_0x56fa79){var _0x15a90a=this;return new Promise(function(_0x4c7122,_0x461711){if(ami['isConnected']()==![]){return _0x461711(_0x15a90a[_0x3c9c('0x18')](0x1f4,[config[_0x3c9c('0xf')]['ip'],config['asterisk'][_0x3c9c('0x10')],_0x3c9c('0x11')][_0x3c9c('0x12')]('\x20')));}_0x56fa79=_['pick'](_0x56fa79,_0x3c9c('0x19'));_0x56fa79[_0x3c9c('0x1a')]=_0x3c9c('0x1b');return ami[_0x3c9c('0x1c')](_0x56fa79)[_0x3c9c('0x15')](function(_0x3bc5c4){_0x4c7122({'code':0xc8,'message':_0x3bc5c4[_0x3c9c('0x1d')]});})[_0x3c9c('0x17')](function(_0x509bf7){_0x461711(_0x15a90a[_0x3c9c('0x18')](0x1f5,_0x509bf7['message']));});});},'VoiceQueues':function(_0x497145){return new Promise(function(_0xe04fca,_0x4ca078){var _0x527bb9=[];for(var _0x379880 in _0x143bfe[_0x3c9c('0x1e')]){if(_0x143bfe[_0x3c9c('0x1e')][_0x3c9c('0x1f')](_0x379880)){var _0x4c283d=_0x143bfe[_0x3c9c('0x1e')][_0x379880];var _0x65b831={'id':_0x4c283d['id'],'name':_0x4c283d['name'],'strategy':_0x4c283d[_0x3c9c('0x20')],'answered':_0x4c283d['answered'],'available':_0x4c283d['available'],'loggedIn':_0x4c283d[_0x3c9c('0x21')],'pTalking':_0x4c283d[_0x3c9c('0x22')],'sumBillable':_0x4c283d[_0x3c9c('0x23')],'sumDuration':_0x4c283d[_0x3c9c('0x24')],'sumHoldTime':_0x4c283d[_0x3c9c('0x25')]||0x0,'talking':_0x4c283d['talking'],'total':_0x4c283d[_0x3c9c('0x26')],'type':_0x4c283d['type'],'unmanaged':_0x4c283d[_0x3c9c('0x27')],'abandoned':_0x4c283d[_0x3c9c('0x28')],'waiting':_0x4c283d[_0x3c9c('0x29')],'loggedInDb':_0x4c283d[_0x3c9c('0x2a')]};if(_0x4c283d['type']===_0x3c9c('0x2b')){_0x65b831[_0x3c9c('0x2c')]=_0x4c283d[_0x3c9c('0x2c')];_0x65b831[_0x3c9c('0x2d')]=_0x4c283d[_0x3c9c('0x2d')];_0x65b831[_0x3c9c('0x2e')]=_0x4c283d[_0x3c9c('0x2e')];_0x65b831[_0x3c9c('0x2f')]=_0x4c283d['dialOriginateCallerIdNumber'];_0x65b831[_0x3c9c('0x30')]=_0x4c283d[_0x3c9c('0x30')];_0x65b831[_0x3c9c('0x31')]=_0x4c283d[_0x3c9c('0x31')];_0x65b831[_0x3c9c('0x32')]=_0x4c283d[_0x3c9c('0x32')];_0x65b831[_0x3c9c('0x33')]=_0x4c283d[_0x3c9c('0x33')];_0x65b831[_0x3c9c('0x34')]=_0x4c283d[_0x3c9c('0x34')];_0x65b831[_0x3c9c('0x35')]=_0x4c283d[_0x3c9c('0x35')];_0x65b831[_0x3c9c('0x36')]=_0x4c283d[_0x3c9c('0x36')];_0x65b831['outboundCongestionCallsDay']=_0x4c283d[_0x3c9c('0x37')];_0x65b831[_0x3c9c('0x38')]=_0x4c283d[_0x3c9c('0x38')];_0x65b831['outboundDropCallsDayCallersExit']=_0x4c283d[_0x3c9c('0x39')];_0x65b831[_0x3c9c('0x3a')]=_0x4c283d[_0x3c9c('0x3a')];_0x65b831[_0x3c9c('0x3b')]=_0x4c283d['outboundNoAnswerCallsDay'];_0x65b831['outboundNoSuchCallsDay']=_0x4c283d[_0x3c9c('0x3c')];_0x65b831[_0x3c9c('0x3d')]=_0x4c283d[_0x3c9c('0x3d')];_0x65b831['outboundReCallsDay']=_0x4c283d['outboundReCallsDay'];_0x65b831[_0x3c9c('0x3e')]=_0x4c283d['outboundRejectCallsDay'];_0x65b831['outboundUnknownCallsDay']=_0x4c283d[_0x3c9c('0x3f')];_0x65b831[_0x3c9c('0x40')]=_0x4c283d[_0x3c9c('0x40')];_0x65b831['predictiveIntervalAvgHoldtime']=_0x4c283d[_0x3c9c('0x41')];_0x65b831[_0x3c9c('0x42')]=_0x4c283d[_0x3c9c('0x42')];_0x65b831['predictiveIntervalDroppedCallsCallersExit']=_0x4c283d['predictiveIntervalDroppedCallsCallersExit'];_0x65b831['predictiveIntervalDroppedCallsTimeout']=_0x4c283d[_0x3c9c('0x43')];_0x65b831[_0x3c9c('0x44')]=_0x4c283d[_0x3c9c('0x44')];_0x65b831[_0x3c9c('0x45')]=_0x4c283d[_0x3c9c('0x45')];_0x65b831[_0x3c9c('0x46')]=_0x4c283d['predictiveIntervalHitRate'];_0x65b831['predictiveIntervalMultiplicativeFactor']=_0x4c283d[_0x3c9c('0x47')];_0x65b831[_0x3c9c('0x48')]=_0x4c283d[_0x3c9c('0x48')];_0x65b831['predictiveIntervalAvailable']=_0x4c283d[_0x3c9c('0x49')];_0x65b831[_0x3c9c('0x4a')]=_0x4c283d[_0x3c9c('0x4a')];_0x65b831['message']=_0x4c283d['message'];_0x65b831[_0x3c9c('0x4b')]=_0x4c283d[_0x3c9c('0x4b')];_0x65b831[_0x3c9c('0x4c')]=_0x4c283d['erlangCalls'];_0x65b831[_0x3c9c('0x4d')]=_0x4c283d[_0x3c9c('0x4d')];_0x65b831[_0x3c9c('0x4e')]=_0x4c283d[_0x3c9c('0x4e')];_0x65b831['erlangBusyFactor']=_0x4c283d[_0x3c9c('0x4f')];_0x65b831[_0x3c9c('0x50')]=_0x4c283d['startPredictive'];_0x65b831['startProgressive']=_0x4c283d[_0x3c9c('0x51')];}if(_0x4c283d[_0x3c9c('0x52')]){_0x65b831['Trunk']={'id':_0x4c283d[_0x3c9c('0x52')]['id'],'name':_0x4c283d[_0x3c9c('0x52')][_0x3c9c('0xa')],'active':_0x4c283d[_0x3c9c('0x52')][_0x3c9c('0x53')],'callerid':_0x4c283d[_0x3c9c('0x52')]['callerid']};}if(_0x4c283d[_0x3c9c('0x54')]){_0x65b831[_0x3c9c('0x54')]={'id':_0x4c283d[_0x3c9c('0x54')]['id'],'name':_0x4c283d[_0x3c9c('0x54')][_0x3c9c('0xa')]};}_0x527bb9['push'](_0x65b831);}}_0xe04fca({'count':_0x527bb9['length'],'rows':_0x527bb9});});},'UpdateVoiceQueue':function(_0x55a6ba){return new Promise(function(_0x3ff47a,_0x1da3e7){var _0x25285d=_[_0x3c9c('0x55')](_0x143bfe['voiceQueues'],{'id':parseInt(_0x55a6ba['id'])});var _0x798651=_[_0x3c9c('0x56')](_0x55a6ba,['id']);if(_0x25285d){for(var _0x27a013 in _0x798651){if(typeof _0x798651[_0x27a013]!==_0x3c9c('0x57')&&typeof _0x25285d[_0x27a013]!==_0x3c9c('0x57')){_0x25285d[_0x27a013]=_0x798651[_0x27a013];}}_0x3ff47a(_0x25285d);}else{_0x1da3e7();}});},'VoiceChannels':function(_0x58f6b7){return new Promise(function(_0x184c22,_0x1177b3){var _0x1804e3=_[_0x3c9c('0x58')](_0x143bfe[_0x3c9c('0x59')]);_0x184c22({'count':_0x1804e3[_0x3c9c('0x5a')],'rows':_0x1804e3});});},'VoiceChannelMixMonitor':function(_0x475fd6){var _0x5a74ce=this;return new Promise(function(_0x260d3b,_0x3a59f9){if(ami[_0x3c9c('0x5b')]()==![]){return _0x3a59f9(_0x5a74ce[_0x3c9c('0x18')](0x1f4,[config[_0x3c9c('0xf')]['ip'],config[_0x3c9c('0xf')]['username'],_0x3c9c('0x11')][_0x3c9c('0x12')]('\x20')));}var _0x2b0691=schema(properties[_0x3c9c('0x5c')])[_0x3c9c('0x5d')](_0x475fd6);if(_0x2b0691[_0x3c9c('0x5a')]>0x0){return _0x3a59f9(_0x5a74ce[_0x3c9c('0x18')](0x1f4,_[_0x3c9c('0x5e')](_0x2b0691,_0x3c9c('0x16'))[_0x3c9c('0x12')](',\x20')));}var _0x39b9d8=_[_0x3c9c('0x55')](_0x143bfe[_0x3c9c('0x59')],{'uniqueid':_0x475fd6[_0x3c9c('0x5f')]});if(_0x39b9d8&&_0x39b9d8[_0x3c9c('0x60')]){var _0x2b022f=util['format']('%s.%s',_0x475fd6['filename']||_0x475fd6[_0x3c9c('0x5f')],_0x475fd6[_0x3c9c('0x7')]||_0x3c9c('0x61'));return ami[_0x3c9c('0x1c')]({'action':'MixMonitor','channel':_0x39b9d8[_0x3c9c('0x60')],'file':_0x2b022f,'options':'ai(mixmonitorid)'})['then'](function(_0x34cd84){var _0x2849c6=_[_0x3c9c('0x55')](_0x39b9d8[_0x3c9c('0x62')],{'filename':_0x3c9c('0x63')+_0x2b022f[_0x3c9c('0x64')]()});if(_[_0x3c9c('0x65')](_0x2849c6)){_0x39b9d8[_0x3c9c('0x62')][_0x3c9c('0x66')]({'filename':'/var/spool/asterisk/monitor/'+_0x2b022f[_0x3c9c('0x64')](),'createdAt':moment()[_0x3c9c('0x7')](_0x3c9c('0x67')),'mixmonitorid':_0x34cd84[_0x3c9c('0x68')],'status':_0x3c9c('0x69')});}else{_0x2849c6[_0x3c9c('0x68')]=_0x34cd84[_0x3c9c('0x68')];_0x2849c6['status']='rec';}_0x260d3b({'code':0xc8,'message':[_0x475fd6[_0x3c9c('0x5f')],_0x3c9c('0x6a'),_0x34cd84[_0x3c9c('0x68')]][_0x3c9c('0x12')]('\x20'),'mixmonitorid':_0x34cd84[_0x3c9c('0x68')]});})[_0x3c9c('0x17')](function(_0x287ca1){_0x3a59f9(_0x5a74ce[_0x3c9c('0x18')](0x1f5,[_0x475fd6[_0x3c9c('0x5f')],_0x287ca1[_0x3c9c('0x16')][_0x3c9c('0x64')]()][_0x3c9c('0x12')]('\x20')));});}else{return _0x3a59f9(_0x5a74ce[_0x3c9c('0x18')](0x1f5,_0x3c9c('0x6b')));}});},'VoiceChannelStopMixMonitor':function(_0x581523){var _0x423891=this;return new Promise(function(_0x4306fe,_0x1b6f0a){if(ami[_0x3c9c('0x5b')]()==![]){return _0x1b6f0a(_0x423891[_0x3c9c('0x18')](0x1f4,[config['asterisk']['ip'],config[_0x3c9c('0xf')][_0x3c9c('0x10')],'ami\x20disconnected']['join']('\x20')));}var _0x1d810d=schema(properties[_0x3c9c('0x5c')])['validate'](_0x581523);if(_0x1d810d[_0x3c9c('0x5a')]>0x0){return _0x1b6f0a(_0x423891[_0x3c9c('0x18')](0x1f4,_[_0x3c9c('0x5e')](_0x1d810d,_0x3c9c('0x16'))[_0x3c9c('0x12')](',\x20')));}var _0x2264b7=_[_0x3c9c('0x55')](_0x143bfe[_0x3c9c('0x59')],{'uniqueid':_0x581523[_0x3c9c('0x5f')]});if(_0x2264b7){return BPromise[_0x3c9c('0x6c')]()[_0x3c9c('0x15')](function(){if(_0x2264b7['channel']){return ami[_0x3c9c('0x1c')]({'action':'StopMixMonitor','channel':_0x2264b7['channel'],'mixmonitorid':_0x581523[_0x3c9c('0x68')]})[_0x3c9c('0x17')](function(_0x1a1485){});}})[_0x3c9c('0x15')](function(){if(_0x2264b7[_0x3c9c('0x6d')]){return ami[_0x3c9c('0x1c')]({'action':_0x3c9c('0x6e'),'channel':_0x2264b7['destinationchannel'],'mixmonitorid':_0x581523[_0x3c9c('0x68')]})[_0x3c9c('0x17')](function(_0x31fb57){});}})[_0x3c9c('0x15')](function(_0x1cfaea){var _0x4fb887=_['find'](_0x2264b7[_0x3c9c('0x62')],{'mixmonitorid':_0x581523[_0x3c9c('0x68')]});if(_0x4fb887){_0x4fb887[_0x3c9c('0x6f')]=_0x3c9c('0x70');}})[_0x3c9c('0x15')](function(){var _0x990934=util[_0x3c9c('0x7')](_0x3c9c('0x71'),_0x581523[_0x3c9c('0x72')]||_0x581523[_0x3c9c('0x5f')],_0x581523[_0x3c9c('0x7')]||_0x3c9c('0x61'));var _0x4311c0=_[_0x3c9c('0x55')](_0x2264b7[_0x3c9c('0x62')],{'filename':_0x3c9c('0x63')+_0x990934[_0x3c9c('0x64')]()});if(_0x4311c0){_0x4311c0['status']=_0x3c9c('0x70');}})['then'](function(){_0x4306fe({'code':0xc8,'message':[_0x581523['uniqueid'],_0x3c9c('0x73')][_0x3c9c('0x12')]('\x20')});})[_0x3c9c('0x17')](function(_0x4b1b16){_0x1b6f0a(_0x423891[_0x3c9c('0x18')](0x1f5,[_0x581523[_0x3c9c('0x5f')],_0x4b1b16['message'][_0x3c9c('0x64')]()][_0x3c9c('0x12')]('\x20')));});}else{return _0x1b6f0a(_0x423891['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannels':function(_0x5e4146){return new Promise(function(_0x1e93d7,_0x2fc65b){var _0xbc5b78=_[_0x3c9c('0x58')](_0x143bfe['queueChannels']);_0x1e93d7({'count':_0xbc5b78['length'],'rows':_0xbc5b78});});},'VoiceQueuesChannel':function(_0x2f2628){var _0x2dc609=this;return new Promise(function(_0x260a90,_0x94bc44){var _0x4342a9=schema(properties[_0x3c9c('0x74')])[_0x3c9c('0x5d')](_0x2f2628);if(_0x4342a9[_0x3c9c('0x5a')]>0x0){return _0x94bc44(_0x2dc609[_0x3c9c('0x18')](0x1f4,_['map'](_0x4342a9,'message')[_0x3c9c('0x12')](',\x20')));}var _0x5cf82a=_['find'](_0x143bfe['queueChannels'],{'uniqueid':_0x2f2628[_0x3c9c('0x5f')]});if(_0x5cf82a){_0x260a90(_0x5cf82a);}else{return _0x94bc44(_0x2dc609[_0x3c9c('0x18')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelHangup':function(_0x56effa){var _0x53ccaf=this;return new Promise(function(_0x482612,_0x77afb5){if(ami['isConnected']()==![]){return _0x77afb5(_0x53ccaf[_0x3c9c('0x18')](0x1f4,[config[_0x3c9c('0xf')]['ip'],config[_0x3c9c('0xf')]['username'],'ami\x20disconnected'][_0x3c9c('0x12')]('\x20')));}var _0x5ca292=schema(properties[_0x3c9c('0x75')])[_0x3c9c('0x5d')](_0x56effa);if(_0x5ca292[_0x3c9c('0x5a')]>0x0){return _0x77afb5(_0x53ccaf[_0x3c9c('0x18')](0x1f4,_['map'](_0x5ca292,_0x3c9c('0x16'))[_0x3c9c('0x12')](',\x20')));}var _0x5c1a13=_[_0x3c9c('0x55')](_0x143bfe[_0x3c9c('0x76')],{'uniqueid':_0x56effa['uniqueid']});if(_0x5c1a13&&_0x5c1a13[_0x3c9c('0x60')]){return ami[_0x3c9c('0x1c')]({'action':'Hangup','channel':_0x5c1a13[_0x3c9c('0x60')]})[_0x3c9c('0x15')](function(_0xab562a){_0x482612({'code':0xc8,'message':[_0x56effa['uniqueid'],_0xab562a['message'][_0x3c9c('0x64')]()][_0x3c9c('0x12')]('\x20')});})['catch'](function(_0x386197){_0x77afb5(_0x53ccaf[_0x3c9c('0x18')](0x1f5,[_0x56effa[_0x3c9c('0x5f')],_0x386197['message'][_0x3c9c('0x64')]()][_0x3c9c('0x12')]('\x20')));});}else{return _0x77afb5(_0x53ccaf['error'](0x1f5,_0x3c9c('0x6b')));}});},'VoiceQueuesChannelRedirect':function(_0x2cb21d){var _0xc4b7c9=this;return new Promise(function(_0x3caddb,_0x1ecabd){if(ami[_0x3c9c('0x5b')]()==![]){return _0x1ecabd(_0xc4b7c9[_0x3c9c('0x18')](0x1f4,[config[_0x3c9c('0xf')]['ip'],config[_0x3c9c('0xf')][_0x3c9c('0x10')],'ami\x20disconnected'][_0x3c9c('0x12')]('\x20')));}var _0x150a27=schema(properties['voicequeuechannelredirect'])[_0x3c9c('0x5d')](_0x2cb21d);if(_0x150a27[_0x3c9c('0x5a')]>0x0){return _0x1ecabd(_0xc4b7c9['error'](0x1f4,_[_0x3c9c('0x5e')](_0x150a27,_0x3c9c('0x16'))[_0x3c9c('0x12')](',\x20')));}var _0x17d23e=_[_0x3c9c('0x55')](_0x143bfe['queueChannels'],{'uniqueid':_0x2cb21d[_0x3c9c('0x5f')]});if(_0x17d23e&&_0x17d23e[_0x3c9c('0x60')]){return ami[_0x3c9c('0x1c')]({'action':_0x3c9c('0x77'),'channel':_0x17d23e[_0x3c9c('0x60')],'exten':_0x2cb21d[_0x3c9c('0x78')],'context':_0x2cb21d[_0x3c9c('0x79')]||_0x17d23e[_0x3c9c('0x79')],'priority':0x1})[_0x3c9c('0x15')](function(_0x36018f){_0x3caddb({'code':0xc8,'message':[_0x2cb21d[_0x3c9c('0x5f')],_0x36018f[_0x3c9c('0x16')][_0x3c9c('0x64')]()]['join']('\x20')});})[_0x3c9c('0x17')](function(_0x296e46){_0x1ecabd(_0xc4b7c9['error'](0x1f5,[_0x2cb21d[_0x3c9c('0x5f')],_0x296e46[_0x3c9c('0x16')][_0x3c9c('0x64')]()]['join']('\x20')));});}else{return _0x1ecabd(_0xc4b7c9[_0x3c9c('0x18')](0x1f5,_0x3c9c('0x6b')));}});},'Agents':function(_0x21c7c3){return new Promise(function(_0x285ebc,_0x478572){var _0x773eea=_['values'](_0x143bfe[_0x3c9c('0xc')]);_0x285ebc({'count':_0x773eea['length'],'rows':_0x773eea});});},'Telephones':function(_0x2265e8){return new Promise(function(_0x48a57f,_0x4950c3){var _0x263270=_['values'](_0x143bfe['telephones']);_0x48a57f({'count':_0x263270[_0x3c9c('0x5a')],'rows':_0x263270});});},'Trunks':function(_0x2f3a98){return new Promise(function(_0x14ccbc,_0x9b3118){var _0x2f4e79=_[_0x3c9c('0x58')](_0x143bfe[_0x3c9c('0x7a')]);_0x14ccbc({'count':_0x2f4e79[_0x3c9c('0x5a')],'rows':_0x2f4e79});});},'OutboundChannels':function(_0x2e6b96){return new Promise(function(_0x13e236,_0x1528a6){var _0x570ae6=_['values'](_0x143bfe[_0x3c9c('0x7b')]);_0x13e236({'count':_0x570ae6['length'],'rows':_0x570ae6});});},'Outbound':function(_0x552ec1){return new Promise(function(_0x3bb0c1,_0x1838d7){_0x3bb0c1(_0x143bfe[_0x3c9c('0x2b')]);});},'Campaigns':function(_0x1748c7){return new Promise(function(_0x2dec50,_0x57746d){var _0x105e67=_[_0x3c9c('0x58')](_0x143bfe['campaigns']);_0x2dec50({'count':_0x105e67['length'],'rows':_0x105e67});});},'VoiceQueuesPreview':function(_0x308a24){var _0x5f42c1=this;return new Promise(function(_0x2e3cab,_0x1ceaa3){_0x512e80[_0x3c9c('0x7c')](_0x308a24['id'])[_0x3c9c('0x15')](function(_0x327e63){_0x2e3cab({'code':0xc8,'message':_0x327e63[_0x3c9c('0x16')]});})[_0x3c9c('0x17')](function(_0x18012e){_0x1ceaa3(_0x5f42c1[_0x3c9c('0x18')](0x1f4,_0x18012e[_0x3c9c('0x16')]));});});},'EventManager':function(_0x52af3a){var _0x32690f=this;return new Promise(function(_0x2f5738,_0xf6f1ea){if(!_0x52af3a[_0x3c9c('0x7d')]){return _0xf6f1ea(_0x32690f['error'](0x1f4,_0x3c9c('0x7e')));}ami['emit'](_0x3c9c('0x7f')+_0x52af3a[_0x3c9c('0x7d')],_0x52af3a['message']);_0x2f5738({'code':0xc8,'message':_0x52af3a});});},'FaxAccounts':function(_0x22d2bd){return new Promise(function(_0x4cd7b9,_0x49559f){var _0x3d34e3=_[_0x3c9c('0x58')](_0x143bfe[_0x3c9c('0x80')]);_0x4cd7b9({'count':_0x3d34e3[_0x3c9c('0x5a')],'rows':_0x3d34e3});});},'SendFax':function(_0x17e5ce){var _0x5c96ad=this;return new Promise(function(_0x3e2f73,_0x48c11d){_0x48b219[_0x3c9c('0x81')](_0x17e5ce)['then'](function(_0x12bb7b){_0x3e2f73({'code':0xc8,'message':_0x12bb7b[_0x3c9c('0x16')]});})[_0x3c9c('0x17')](function(_0x19db8a){_0x48c11d(_0x5c96ad[_0x3c9c('0x18')](0x1f4,_0x19db8a[_0x3c9c('0x16')]));});});},'CheckAfterSend':function(_0x1fe080){var _0x41c07b=this;return new Promise(function(_0x557dc6,_0xa1de30){_0x48b219[_0x3c9c('0x82')](_0x1fe080)[_0x3c9c('0x15')](function(_0x5614df){_0x557dc6({'code':0xc8,'message':_0x5614df[_0x3c9c('0x16')]});})[_0x3c9c('0x17')](function(_0x37d2b6){_0xa1de30(_0x41c07b[_0x3c9c('0x18')](0x1f4,_0x37d2b6[_0x3c9c('0x16')]));});});}};var _0xdfe4f7=jayson['server'](_0x3ca0ce)[_0x3c9c('0x83')]();_0xdfe4f7['on'](_0x3c9c('0x18'),function(_0x2e158c){return _0x5a2836(_0x2e158c);});_0xdfe4f7[_0x3c9c('0x6')](0x232a,'127.0.0.1',function(){console[_0x3c9c('0x84')](_0x3c9c('0x85'),0x232a);return _0x5c86bd(_0x3c9c('0x86')+0x232a);});});};
\ No newline at end of file
index 1cfbd93..4ffc380 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6184=['redis','localhost','socket.io-emitter','info','[CM][%s][%s]','stringify','exec','data2','xmd-contactid','data3','split','map','routeId','destcalleridnum','calleridnum','lastName','phone','mobile','fax','createdAt','scheduledAt','updatedAt','resolve','getContacts','then','isEmpty','[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','isNil','firstName','calleridname','<unknown>','Unknown','destcalleridname','createContact','push','format','user:%s','name','trigger:%s','action','length','lodash','bluebird','util','../../../../config/environment','../../rpc/cmContact'];(function(_0xc4e092,_0x5059f7){var _0xa4f542=function(_0x302769){while(--_0x302769){_0xc4e092['push'](_0xc4e092['shift']());}};_0xa4f542(++_0x5059f7);}(_0x6184,0x97));var _0x4618=function(_0x51ed62,_0x574379){_0x51ed62=_0x51ed62-0x0;var _0x34aee3=_0x6184[_0x51ed62];return _0x34aee3;};'use strict';var _=require(_0x4618('0x0'));var BPromise=require(_0x4618('0x1'));var Redis=require('ioredis');var util=require(_0x4618('0x2'));var config=require(_0x4618('0x3'));var logger=require('../../../../config/logger')('trigger');var cmContactRpc=require(_0x4618('0x4'));config['redis']=_['defaults'](config[_0x4618('0x5')],{'host':_0x4618('0x6'),'port':0x18eb});var io=require(_0x4618('0x7'))(new Redis(config[_0x4618('0x5')]));function emit(_0x50fe7a,_0x379ee2,_0x349e15,_0x2aa2cc,_0x906aeb){logger[_0x4618('0x8')](_0x4618('0x9'),_0x50fe7a,_0x379ee2['id'],_0x349e15,_0x2aa2cc,JSON[_0x4618('0xa')](_0x906aeb));io['to'](_0x349e15)['emit'](_0x2aa2cc,_0x906aeb);}exports[_0x4618('0xb')]=function(_0x5a608e,_0x5507b1,_0x4d439d,_0x19677c){var _0x4636c9,_0x49eff3;var _0x421d6b={};var _0x1f5c8a=Number(_0x4d439d['data1']);var _0x43bf70=_0x4d439d[_0x4618('0xc')]?Boolean(Number(_0x4d439d[_0x4618('0xc')])):![];var _0x2cb657;if(_0x19677c['xmd-contactid']){_0x421d6b['id']=_0x19677c[_0x4618('0xd')];}if(!_0x421d6b['id']){_0x421d6b['ListId']=_0x1f5c8a;_0x2cb657=_0x4d439d[_0x4618('0xe')]&&_0x4d439d[_0x4618('0xe')]!=='0'?_0x4d439d['data3'][_0x4618('0xf')](','):['phone'];_0x421d6b['$or']=_[_0x4618('0x10')](_0x2cb657,function(_0x37684f){var _0x3312a9={};_0x3312a9[_0x37684f]=_0x19677c[_0x4618('0x11')]?_0x19677c[_0x4618('0x12')]:_0x19677c[_0x4618('0x13')];return _0x3312a9;});}var _0x59eac3=['id','firstName',_0x4618('0x14'),_0x4618('0x15'),_0x4618('0x16'),_0x4618('0x17'),'ListId',_0x4618('0x18'),_0x4618('0x19'),_0x4618('0x1a')];var _0x2b06af=_['union'](_0x59eac3,_0x2cb657);BPromise[_0x4618('0x1b')]()['then'](cmContactRpc[_0x4618('0x1c')]({'attributes':_0x2b06af,'where':_0x421d6b}))[_0x4618('0x1d')](function(_0x4f1ea5){_0x49eff3=_0x4f1ea5;if(!_[_0x4618('0x1e')](_0x49eff3)){if(_0x49eff3['length']===0x1){_0x4636c9=_0x49eff3[0x0];logger[_0x4618('0x8')](_0x4618('0x1f'),_0x19677c[_0x4618('0x20')],_0x5507b1['id'],_0x4636c9['id']);}else{logger['info'](_0x4618('0x21'),_0x19677c[_0x4618('0x20')],_0x5507b1['id'],_['map'](_0x49eff3,'id')[_0x4618('0x22')](','));}return;}else{logger[_0x4618('0x8')](_0x4618('0x23'),_0x19677c[_0x4618('0x20')],_0x5507b1['id']);var _0x1df657={'ListId':_0x1f5c8a};var _0x17ef6b=_0x4d439d[_0x4618('0x24')]&&_0x4d439d[_0x4618('0x24')]!=='0'?_0x4d439d[_0x4618('0x24')]:_0x4618('0x15');if(_0x43bf70){logger[_0x4618('0x8')](_0x4618('0x25'),_0x19677c['uniqueid'],_0x5507b1['id']);_0x1df657[_0x17ef6b]=_['isNil'](_0x19677c[_0x4618('0x11')])?_0x19677c[_0x4618('0x13')]:_0x19677c[_0x4618('0x12')];if(_[_0x4618('0x26')](_0x19677c[_0x4618('0x11')])){_0x1df657[_0x4618('0x27')]=_0x19677c[_0x4618('0x28')]&&_0x19677c[_0x4618('0x28')]!==_0x4618('0x29')?_0x19677c[_0x4618('0x28')]:_0x4618('0x2a');}else{_0x1df657['firstName']=_0x19677c[_0x4618('0x2b')]&&_0x19677c[_0x4618('0x2b')]!==_0x4618('0x29')?_0x19677c['destcalleridname']:_0x4618('0x2a');}return BPromise['resolve']()['then'](cmContactRpc[_0x4618('0x2c')](_0x1df657))[_0x4618('0x1d')](function(_0x525a18){_0x4636c9=_0x525a18;_0x49eff3[_0x4618('0x2d')](_0x525a18);if(_0x4636c9){logger[_0x4618('0x8')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x19677c[_0x4618('0x20')],_0x5507b1['id'],_0x4636c9['id']);}return;});}else{logger['info']('[CM][%s][%s]\x20Autocreate\x20disabled',_0x19677c[_0x4618('0x20')],_0x5507b1['id']);_0x1df657[_0x17ef6b]=_['isNil'](_0x19677c[_0x4618('0x11')])?_0x19677c['calleridnum']:_0x19677c[_0x4618('0x12')];if(_['isNil'](_0x19677c[_0x4618('0x11')])){_0x1df657['firstName']=_0x19677c[_0x4618('0x28')]&&_0x19677c[_0x4618('0x28')]!==_0x4618('0x29')?_0x19677c[_0x4618('0x28')]:'Unknown';}else{_0x1df657[_0x4618('0x27')]=_0x19677c['destcalleridname']&&_0x19677c[_0x4618('0x2b')]!==_0x4618('0x29')?_0x19677c[_0x4618('0x2b')]:_0x4618('0x2a');}_0x4636c9=_0x1df657;_0x49eff3['push'](_0x1df657);return;}}})['then'](function(){if(_0x5a608e){emit(_0x19677c[_0x4618('0x20')],_0x5507b1,util[_0x4618('0x2e')](_0x4618('0x2f'),_0x5a608e[_0x4618('0x30')]),util['format'](_0x4618('0x31'),_0x4d439d[_0x4618('0x32')]['toLowerCase']()),{'evt':_['merge'](_0x19677c,{'autoCreate':_0x43bf70}),'contact':_0x4636c9===undefined?{}:_0x4636c9,'contacts':_0x49eff3[_0x4618('0x33')]===0x0?undefined:_0x49eff3});}});};
\ No newline at end of file
+var _0xac00=['resolve','then','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','isNil','calleridnum','calleridname','<unknown>','Unknown','destcalleridname','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','user:%s','name','format','trigger:%s','action','toLowerCase','bluebird','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','defaults','redis','localhost','info','[CM][%s][%s]','stringify','exec','data2','xmd-contactid','ListId','data3','split','phone','$or','map','routeId','destcalleridnum','firstName','mobile','fax','createdAt','updatedAt','union'];(function(_0x583f7d,_0x5e9fd7){var _0x318051=function(_0x578c8e){while(--_0x578c8e){_0x583f7d['push'](_0x583f7d['shift']());}};_0x318051(++_0x5e9fd7);}(_0xac00,0x1c1));var _0x0ac0=function(_0xf72786,_0x1a0ddd){_0xf72786=_0xf72786-0x0;var _0x113f3e=_0xac00[_0xf72786];return _0x113f3e;};'use strict';var _=require('lodash');var BPromise=require(_0x0ac0('0x0'));var Redis=require('ioredis');var util=require('util');var config=require(_0x0ac0('0x1'));var logger=require(_0x0ac0('0x2'))(_0x0ac0('0x3'));var cmContactRpc=require(_0x0ac0('0x4'));config['redis']=_[_0x0ac0('0x5')](config[_0x0ac0('0x6')],{'host':_0x0ac0('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0ac0('0x6')]));function emit(_0x869b09,_0x7b0c71,_0x499317,_0x280db0,_0x2c3700){logger[_0x0ac0('0x8')](_0x0ac0('0x9'),_0x869b09,_0x7b0c71['id'],_0x499317,_0x280db0,JSON[_0x0ac0('0xa')](_0x2c3700));io['to'](_0x499317)['emit'](_0x280db0,_0x2c3700);}exports[_0x0ac0('0xb')]=function(_0x2b0f1c,_0x524d90,_0x12e311,_0x132eb0){var _0x3c9f42,_0x54f08f;var _0x58f4e3={};var _0x187f47=Number(_0x12e311['data1']);var _0x3a1504=_0x12e311[_0x0ac0('0xc')]?Boolean(Number(_0x12e311[_0x0ac0('0xc')])):![];var _0x4785b2;if(_0x132eb0[_0x0ac0('0xd')]){_0x58f4e3['id']=_0x132eb0[_0x0ac0('0xd')];}if(!_0x58f4e3['id']){_0x58f4e3[_0x0ac0('0xe')]=_0x187f47;_0x4785b2=_0x12e311[_0x0ac0('0xf')]&&_0x12e311[_0x0ac0('0xf')]!=='0'?_0x12e311[_0x0ac0('0xf')][_0x0ac0('0x10')](','):[_0x0ac0('0x11')];_0x58f4e3[_0x0ac0('0x12')]=_[_0x0ac0('0x13')](_0x4785b2,function(_0x53537c){var _0x819fd7={};_0x819fd7[_0x53537c]=_0x132eb0[_0x0ac0('0x14')]?_0x132eb0[_0x0ac0('0x15')]:_0x132eb0['calleridnum'];return _0x819fd7;});}var _0x564e8c=['id',_0x0ac0('0x16'),'lastName','phone',_0x0ac0('0x17'),_0x0ac0('0x18'),'ListId',_0x0ac0('0x19'),'scheduledAt',_0x0ac0('0x1a')];var _0x32edb3=_[_0x0ac0('0x1b')](_0x564e8c,_0x4785b2);BPromise[_0x0ac0('0x1c')]()[_0x0ac0('0x1d')](cmContactRpc['getContacts']({'attributes':_0x32edb3,'where':_0x58f4e3}))[_0x0ac0('0x1d')](function(_0x25b30e){_0x54f08f=_0x25b30e;if(!_[_0x0ac0('0x1e')](_0x54f08f)){if(_0x54f08f[_0x0ac0('0x1f')]===0x1){_0x3c9f42=_0x54f08f[0x0];logger[_0x0ac0('0x8')](_0x0ac0('0x20'),_0x132eb0[_0x0ac0('0x21')],_0x524d90['id'],_0x3c9f42['id']);}else{logger[_0x0ac0('0x8')](_0x0ac0('0x22'),_0x132eb0[_0x0ac0('0x21')],_0x524d90['id'],_[_0x0ac0('0x13')](_0x54f08f,'id')[_0x0ac0('0x23')](','));}return;}else{logger['info'](_0x0ac0('0x24'),_0x132eb0[_0x0ac0('0x21')],_0x524d90['id']);var _0x299fcd={'ListId':_0x187f47};var _0x464e23=_0x12e311[_0x0ac0('0x25')]&&_0x12e311[_0x0ac0('0x25')]!=='0'?_0x12e311[_0x0ac0('0x25')]:'phone';if(_0x3a1504){logger['info']('[CM][%s][%s]\x20Autocreate\x20enabled',_0x132eb0['uniqueid'],_0x524d90['id']);_0x299fcd[_0x464e23]=_[_0x0ac0('0x26')](_0x132eb0[_0x0ac0('0x14')])?_0x132eb0[_0x0ac0('0x27')]:_0x132eb0[_0x0ac0('0x15')];if(_[_0x0ac0('0x26')](_0x132eb0['routeId'])){_0x299fcd[_0x0ac0('0x16')]=_0x132eb0[_0x0ac0('0x28')]&&_0x132eb0[_0x0ac0('0x28')]!==_0x0ac0('0x29')?_0x132eb0[_0x0ac0('0x28')]:_0x0ac0('0x2a');}else{_0x299fcd[_0x0ac0('0x16')]=_0x132eb0[_0x0ac0('0x2b')]&&_0x132eb0['destcalleridname']!==_0x0ac0('0x29')?_0x132eb0[_0x0ac0('0x2b')]:_0x0ac0('0x2a');}return BPromise['resolve']()[_0x0ac0('0x1d')](cmContactRpc[_0x0ac0('0x2c')](_0x299fcd))[_0x0ac0('0x1d')](function(_0x4872e9){_0x3c9f42=_0x4872e9;_0x54f08f[_0x0ac0('0x2d')](_0x4872e9);if(_0x3c9f42){logger[_0x0ac0('0x8')](_0x0ac0('0x2e'),_0x132eb0['uniqueid'],_0x524d90['id'],_0x3c9f42['id']);}return;});}else{logger[_0x0ac0('0x8')]('[CM][%s][%s]\x20Autocreate\x20disabled',_0x132eb0[_0x0ac0('0x21')],_0x524d90['id']);_0x299fcd[_0x464e23]=_[_0x0ac0('0x26')](_0x132eb0[_0x0ac0('0x14')])?_0x132eb0[_0x0ac0('0x27')]:_0x132eb0['destcalleridnum'];if(_[_0x0ac0('0x26')](_0x132eb0[_0x0ac0('0x14')])){_0x299fcd[_0x0ac0('0x16')]=_0x132eb0['calleridname']&&_0x132eb0[_0x0ac0('0x28')]!=='<unknown>'?_0x132eb0['calleridname']:'Unknown';}else{_0x299fcd[_0x0ac0('0x16')]=_0x132eb0[_0x0ac0('0x2b')]&&_0x132eb0[_0x0ac0('0x2b')]!==_0x0ac0('0x29')?_0x132eb0[_0x0ac0('0x2b')]:_0x0ac0('0x2a');}_0x3c9f42=_0x299fcd;_0x54f08f[_0x0ac0('0x2d')](_0x299fcd);return;}}})[_0x0ac0('0x1d')](function(){if(_0x2b0f1c){emit(_0x132eb0[_0x0ac0('0x21')],_0x524d90,util['format'](_0x0ac0('0x2f'),_0x2b0f1c[_0x0ac0('0x30')]),util[_0x0ac0('0x31')](_0x0ac0('0x32'),_0x12e311[_0x0ac0('0x33')][_0x0ac0('0x34')]()),{'evt':_['merge'](_0x132eb0,{'autoCreate':_0x3a1504}),'contact':_0x3c9f42===undefined?{}:_0x3c9f42,'contacts':_0x54f08f[_0x0ac0('0x1f')]===0x0?undefined:_0x54f08f});}});};
\ No newline at end of file
index d7ae6d9..349d6e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a84=['search','replace','channel','every','AllConditions','checkConditions','AnyConditions','chat','operator','value','ChatWebsiteId','upperFirst','interaction','message','event','queue','agent','membername','lastevent','util','lodash','url','mustache','ioredis','./urlforward','./integration','./script','../../../config/environment','trigger','redis','defaults','localhost','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','salesforceAccounts','custom:agentcalled','custom:agentconnect','syncCustomEvent','custom:agentringnoanswer','bind','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:queuecallerabandon','custom:timeout','syncAgentDial','custom:dialconnect','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','emit','stringify','prototype','clone','motionChannel','undefined','voice','checkTriggers','interface','hasOwnProperty','status','checkTrigger','merge','variables','Actions','length','action','toLowerCase','motionbar','data1','popup','TemplateId','data2','render','html','uri','buildUri','isNil','data3','uriLocation','data4','data5','600','data6','winArguments','user:%s','name','trigger:%s:%s','jscripty','format','trigger:%s','exec','integration','routeId','urlforward','script','parse','query'];(function(_0x48ec2b,_0x21a36c){var _0x25ba49=function(_0x1d906e){while(--_0x1d906e){_0x48ec2b['push'](_0x48ec2b['shift']());}};_0x25ba49(++_0x21a36c);}(_0x2a84,0x101));var _0x42a8=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x2a84[_0x501510];return _0x1e6ee5;};'use strict';var util=require(_0x42a8('0x0'));var _=require(_0x42a8('0x1'));var url=require(_0x42a8('0x2'));var Mustache=require(_0x42a8('0x3'));var Redis=require(_0x42a8('0x4'));var urlforward=require(_0x42a8('0x5'));var integration=require(_0x42a8('0x6'));var cmContact=require('./cmContact');var script=require(_0x42a8('0x7'));var config=require(_0x42a8('0x8'));var logger=require('../../../config/logger')(_0x42a8('0x9'));var ami=require('../ami');config[_0x42a8('0xa')]=_[_0x42a8('0xb')](config[_0x42a8('0xa')],{'host':_0x42a8('0xc'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x42a8('0xa')]));var operators={'equals':function(_0x20610c,_0xae4c4){return _0x20610c==_0xae4c4;},'not_equals':function(_0x28b95e,_0x1f28a1){return _0x28b95e!=_0x1f28a1;}};var barAndWebActions=['popup',_0x42a8('0x2'),_0x42a8('0xd')];function Trigger(_0x583099){this[_0x42a8('0xe')]=_0x583099[_0x42a8('0xe')];this['agents']=_0x583099[_0x42a8('0xf')];this[_0x42a8('0x10')]=_0x583099['voiceQueues'];this[_0x42a8('0x11')]=_0x583099['templates'];this[_0x42a8('0x12')]=_0x583099[_0x42a8('0x12')];this[_0x42a8('0x13')]=_0x583099[_0x42a8('0x13')];this[_0x42a8('0x14')]=_0x583099[_0x42a8('0x14')];this['salesforceAccounts']=_0x583099['salesforceAccounts'];this[_0x42a8('0x15')]=_0x583099['sugarcrmAccounts'];this[_0x42a8('0x16')]=_0x583099[_0x42a8('0x16')];this[_0x42a8('0x17')]=_0x583099[_0x42a8('0x17')];this[_0x42a8('0x18')]=_0x583099[_0x42a8('0x18')];this[_0x42a8('0x19')]=_0x583099['servicenowAccounts'];this['dynamics365Accounts']=_0x583099[_0x42a8('0x1a')];this[_0x42a8('0x1b')]=_0x583099[_0x42a8('0x1b')];this[_0x42a8('0x1c')]={'zendesk':this[_0x42a8('0x13')],'salesforce':this[_0x42a8('0x1d')],'freshdesk':this[_0x42a8('0x14')],'sugarcrm':this[_0x42a8('0x15')],'zoho':this['zohoAccounts'],'desk':this['deskAccounts'],'vtiger':this['vtigerAccounts'],'dynamics365':this[_0x42a8('0x1a')],'freshsales':this[_0x42a8('0x1b')],'servicenow':this[_0x42a8('0x19')]};ami['on'](_0x42a8('0x1e'),this['syncCustomEvent']['bind'](this));ami['on'](_0x42a8('0x1f'),this[_0x42a8('0x20')]['bind'](this));ami['on'](_0x42a8('0x21'),this[_0x42a8('0x20')][_0x42a8('0x22')](this));ami['on'](_0x42a8('0x23'),this[_0x42a8('0x20')]['bind'](this));ami['on'](_0x42a8('0x24'),this['syncCustomEvent']['bind'](this));ami['on'](_0x42a8('0x25'),this['syncCustomEvent']['bind'](this));ami['on'](_0x42a8('0x26'),this[_0x42a8('0x20')]['bind'](this));ami['on'](_0x42a8('0x27'),this['syncCustomEvent'][_0x42a8('0x22')](this));ami['on'](_0x42a8('0x28'),this['syncCustomEvent']['bind'](this));ami['on']('custom:amd',this[_0x42a8('0x20')][_0x42a8('0x22')](this));ami['on'](_0x42a8('0x29'),this['syncCustomEvent'][_0x42a8('0x22')](this));ami['on'](_0x42a8('0x2a'),this[_0x42a8('0x20')]['bind'](this));ami['on']('custom:dialbegin',this[_0x42a8('0x2b')]['bind'](this));ami['on'](_0x42a8('0x2c'),this[_0x42a8('0x2b')][_0x42a8('0x22')](this));ami['on'](_0x42a8('0x2d'),this[_0x42a8('0x2b')][_0x42a8('0x22')](this));ami['on'](_0x42a8('0x2e'),this[_0x42a8('0x20')][_0x42a8('0x22')](this));ami['on'](_0x42a8('0x2f'),this['syncCustomEvent'][_0x42a8('0x22')](this));ami['on'](_0x42a8('0x30'),this[_0x42a8('0x20')]['bind'](this));ami['on'](_0x42a8('0x31'),this[_0x42a8('0x20')]['bind'](this));ami['on'](_0x42a8('0x32'),this[_0x42a8('0x20')][_0x42a8('0x22')](this));ami['on'](_0x42a8('0x33'),this[_0x42a8('0x20')][_0x42a8('0x22')](this));}Trigger['prototype'][_0x42a8('0x34')]=function(_0x24324d,_0x27e9c3,_0x2ae506){logger['info'](_0x24324d,_0x27e9c3,JSON[_0x42a8('0x35')](_0x2ae506));io['to'](_0x24324d)[_0x42a8('0x34')](_0x27e9c3,_0x2ae506);};Trigger[_0x42a8('0x36')]['syncCustomEvent']=function(_0x5e355b){var _0x2f6395=_[_0x42a8('0x37')](_0x5e355b);if(typeof _0x2f6395[_0x42a8('0x38')]===_0x42a8('0x39')){_0x2f6395[_0x42a8('0x38')]=_0x42a8('0x3a');}this[_0x42a8('0x3b')](_0x2f6395);};Trigger['prototype'][_0x42a8('0x2b')]=function(_0x3b695a){if(this['agents'][_0x3b695a[_0x42a8('0x3c')]]){this[_0x42a8('0x20')](_0x3b695a);}};Trigger['prototype'][_0x42a8('0x3b')]=function(_0x1a1192){var _0x50d2c6;for(var _0xf83e5f in this[_0x42a8('0xe')]){if(this['triggers'][_0x42a8('0x3d')](_0xf83e5f)){if(this[_0x42a8('0xe')][_0xf83e5f][_0x42a8('0x3e')]){_0x50d2c6=this[_0x42a8('0x3f')](this[_0x42a8('0xe')][_0xf83e5f],_0x1a1192);if(_0x50d2c6){_[_0x42a8('0x40')](_0x1a1192,_0x1a1192[_0x42a8('0x41')]);for(var _0x3b7866=0x0,_0x4290ca,_0xa5362c,_0x863fd5;_0x3b7866<this[_0x42a8('0xe')][_0xf83e5f][_0x42a8('0x42')][_0x42a8('0x43')];_0x3b7866+=0x1){_0x4290ca=this[_0x42a8('0xe')][_0xf83e5f][_0x42a8('0x42')][_0x3b7866];if(this[_0x42a8('0xf')][_0x1a1192[_0x42a8('0x3c')]]){switch(_0x4290ca[_0x42a8('0x44')][_0x42a8('0x45')]()){case'contactmanager':break;case _0x42a8('0x46'):case'browser':var _0x51e048={};switch(barAndWebActions[_0x4290ca[_0x42a8('0x47')]]){case _0x42a8('0x48'):_0x51e048[_0x42a8('0x49')]=_0x4290ca[_0x42a8('0x4a')];_0x51e048['html']=this['templates'][_0x4290ca[_0x42a8('0x4a')]]?Mustache[_0x42a8('0x4b')](this[_0x42a8('0x11')][_0x4290ca['data2']][_0x42a8('0x4c')],_0x1a1192):'template\x20not\x20found';break;case'url':_0x51e048[_0x42a8('0x4d')]=this[_0x42a8('0x4e')](_0x4290ca[_0x42a8('0x4a')],_0x1a1192,_[_0x42a8('0x4f')](_0x4290ca[_0x42a8('0x50')])?!![]:parseInt(_0x4290ca[_0x42a8('0x50')],0xa));if(_[_0x42a8('0x4f')](_0x4290ca['data4'])){_0x51e048['location']='0';}else{_0x51e048[_0x42a8('0x51')]=_0x4290ca[_0x42a8('0x52')];_0x51e048['windowWidth']=_['isNil'](_0x4290ca[_0x42a8('0x53')])?'800':_0x4290ca[_0x42a8('0x53')];_0x51e048['windowHeight']=_[_0x42a8('0x4f')](_0x4290ca['data6'])?_0x42a8('0x54'):_0x4290ca[_0x42a8('0x55')];}break;case _0x42a8('0xd'):_0x51e048['winApplication']=_0x4290ca['data2']?Mustache[_0x42a8('0x4b')](_0x4290ca['data2'],_0x1a1192):'';_0x51e048[_0x42a8('0x56')]=_0x4290ca[_0x42a8('0x50')]?Mustache[_0x42a8('0x4b')](_0x4290ca[_0x42a8('0x50')],_0x1a1192):'';break;}this[_0x42a8('0x34')](util['format'](_0x42a8('0x57'),this[_0x42a8('0xf')][_0x1a1192['interface']][_0x42a8('0x58')]),util['format'](_0x42a8('0x59'),_0x4290ca[_0x42a8('0x44')]['toLowerCase'](),barAndWebActions[_0x4290ca[_0x42a8('0x47')]]),_[_0x42a8('0x40')](_0x51e048,_0x1a1192));break;case _0x42a8('0x5a'):this['emit'](util['format'](_0x42a8('0x57'),this[_0x42a8('0xf')][_0x1a1192[_0x42a8('0x3c')]][_0x42a8('0x58')]),util[_0x42a8('0x5b')](_0x42a8('0x5c'),_0x4290ca[_0x42a8('0x44')][_0x42a8('0x45')]()),_[_0x42a8('0x40')]({'ProjectId':parseInt(_0x4290ca[_0x42a8('0x47')],0xa)},_0x1a1192));break;default:this[_0x42a8('0x34')](util[_0x42a8('0x5b')](_0x42a8('0x57'),this[_0x42a8('0xf')][_0x1a1192[_0x42a8('0x3c')]][_0x42a8('0x58')]),util['format'](_0x42a8('0x5c'),_0x4290ca[_0x42a8('0x44')][_0x42a8('0x45')]()),_[_0x42a8('0x40')]({},_0x4290ca,_0x1a1192));}}switch(_0x4290ca['action']['toLowerCase']()){case'contactmanager':cmContact[_0x42a8('0x5d')](this['agents'][_0x1a1192[_0x42a8('0x3c')]],this[_0x42a8('0xe')][_0xf83e5f],_0x4290ca,_0x1a1192);break;case _0x42a8('0x5e'):integration[_0x42a8('0x5d')](_0x4290ca,_0x1a1192,this[_0x42a8('0x1c')],this[_0x42a8('0xf')][_0x1a1192[_0x42a8('0x3c')]],this[_0x42a8('0x10')][_0x1a1192['queue']],this[_0x42a8('0x12')][_0x1a1192[_0x42a8('0x5f')]]);break;case _0x42a8('0x60'):urlforward[_0x42a8('0x5d')](_0x4290ca,_0x1a1192);break;case _0x42a8('0x61'):script[_0x42a8('0x5d')](_0x4290ca,_0x1a1192);break;}}}}}}};Trigger[_0x42a8('0x36')][_0x42a8('0x4e')]=function(_0x5a1e54,_0x4d4e0d,_0x1eb2cd){var _0x5edfb1=url[_0x42a8('0x62')](Mustache[_0x42a8('0x4b')](_0x5a1e54,_0x4d4e0d),!![]);if(_0x1eb2cd){_['merge'](_0x5edfb1[_0x42a8('0x63')],_0x4d4e0d);}delete _0x5edfb1[_0x42a8('0x64')];var _0x247c9d=url['format'](_0x5edfb1);_0x247c9d=_0x247c9d[_0x42a8('0x65')](/\/\?/g,'?');return _0x247c9d;};Trigger[_0x42a8('0x36')][_0x42a8('0x3f')]=function(_0x12fb8f,_0x350139){var _0x2eeb83=!![];var _0x2d2a54=!![];var _0x510add=![];if(_0x12fb8f[_0x42a8('0x66')]===_0x350139[_0x42a8('0x38')]){_0x510add=!![];}if(_0x12fb8f['AllConditions'][_0x42a8('0x43')]){_0x2eeb83=_[_0x42a8('0x67')](_0x12fb8f[_0x42a8('0x68')],this[_0x42a8('0x69')](_0x350139,_0x12fb8f[_0x42a8('0x66')]));}if(_0x12fb8f['AnyConditions'][_0x42a8('0x43')]){_0x2d2a54=_['some'](_0x12fb8f[_0x42a8('0x6a')],this[_0x42a8('0x69')](_0x350139,_0x12fb8f[_0x42a8('0x66')]));}return _0x510add&&_0x2eeb83&&_0x2d2a54;};Trigger['prototype'][_0x42a8('0x69')]=function(_0x18a898,_0x1c34ca){return function(_0x4508b1){switch(_0x4508b1['field']){case'account':if(_0x18a898[_0x42a8('0x66')]===_0x1c34ca){if(_0x1c34ca===_0x42a8('0x6b')){return _0x18a898['ChatWebsiteId']?operators[_0x4508b1[_0x42a8('0x6c')]](Number(_0x4508b1[_0x42a8('0x6d')]),_0x18a898[_0x42a8('0x6e')]):![];}else{return _0x18a898[_[_0x42a8('0x6f')](_0x1c34ca)+'AccountId']?operators[_0x4508b1['operator']](Number(_0x4508b1[_0x42a8('0x6d')]),_0x18a898[_[_0x42a8('0x6f')](_0x1c34ca)+'AccountId']):![];}}break;case _0x42a8('0x70'):case _0x42a8('0x71'):if(_0x18a898[_0x42a8('0x66')]===_0x1c34ca){return _0x18a898[_0x42a8('0x72')]?operators[_0x4508b1[_0x42a8('0x6c')]](_0x4508b1[_0x42a8('0x6d')],_0x18a898[_0x42a8('0x72')]):![];}break;case _0x42a8('0x73'):return _0x18a898['queue']?operators[_0x4508b1['operator']](_0x4508b1[_0x42a8('0x6d')],_0x18a898[_0x42a8('0x73')]):![];case _0x42a8('0x74'):return _0x18a898[_0x42a8('0x75')]?operators[_0x4508b1[_0x42a8('0x6c')]](_0x4508b1[_0x42a8('0x6d')],_0x18a898['membername']):![];case _0x42a8('0x76'):return _0x18a898[_0x42a8('0x76')]?operators[_0x4508b1[_0x42a8('0x6c')]](_0x4508b1[_0x42a8('0x6d')],_0x18a898[_0x42a8('0x76')]):![];case _0x42a8('0x5f'):return _0x18a898[_0x42a8('0x5f')]?operators[_0x4508b1[_0x42a8('0x6c')]](_0x4508b1[_0x42a8('0x6d')],_0x18a898[_0x42a8('0x5f')]):![];}return![];};};module['exports']=Trigger;
\ No newline at end of file
+var _0xab57=['query','search','replace','AllConditions','every','channel','AnyConditions','checkConditions','field','account','value','ChatWebsiteId','upperFirst','operator','AccountId','interaction','message','event','agent','membername','lastevent','exports','util','lodash','url','mustache','./urlforward','../../../config/environment','../../../config/logger','../ami','defaults','redis','localhost','socket.io-emitter','popup','triggers','agents','voiceQueues','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','syncCustomEvent','bind','custom:agentconnect','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:newinteraction','custom:outgoingmessage','info','stringify','clone','checkTriggers','prototype','hasOwnProperty','checkTrigger','Actions','length','motionbar','browser','data1','data2','html','templates','render','template\x20not\x20found','uri','buildUri','isNil','data3','data4','uriLocation','windowWidth','data5','windowHeight','data6','600','winapp','winApplication','winArguments','emit','format','user:%s','interface','trigger:%s:%s','action','toLowerCase','merge','jscripty','name','trigger:%s','contactmanager','integration','exec','accounts','queue','routeId','urlforward','parse'];(function(_0x25b59c,_0xc4cf14){var _0x89c4b4=function(_0x563ad8){while(--_0x563ad8){_0x25b59c['push'](_0x25b59c['shift']());}};_0x89c4b4(++_0xc4cf14);}(_0xab57,0x1e6));var _0x7ab5=function(_0x56bc44,_0x4b9e7c){_0x56bc44=_0x56bc44-0x0;var _0x592a81=_0xab57[_0x56bc44];return _0x592a81;};'use strict';var util=require(_0x7ab5('0x0'));var _=require(_0x7ab5('0x1'));var url=require(_0x7ab5('0x2'));var Mustache=require(_0x7ab5('0x3'));var Redis=require('ioredis');var urlforward=require(_0x7ab5('0x4'));var integration=require('./integration');var cmContact=require('./cmContact');var script=require('./script');var config=require(_0x7ab5('0x5'));var logger=require(_0x7ab5('0x6'))('trigger');var ami=require(_0x7ab5('0x7'));config['redis']=_[_0x7ab5('0x8')](config[_0x7ab5('0x9')],{'host':_0x7ab5('0xa'),'port':0x18eb});var io=require(_0x7ab5('0xb'))(new Redis(config[_0x7ab5('0x9')]));var operators={'equals':function(_0x1957f1,_0x431792){return _0x1957f1==_0x431792;},'not_equals':function(_0x3e9023,_0x3bf8d9){return _0x3e9023!=_0x3bf8d9;}};var barAndWebActions=[_0x7ab5('0xc'),'url','winapp'];function Trigger(_0x9a9671){this[_0x7ab5('0xd')]=_0x9a9671[_0x7ab5('0xd')];this['agents']=_0x9a9671[_0x7ab5('0xe')];this['voiceQueues']=_0x9a9671[_0x7ab5('0xf')];this['templates']=_0x9a9671['templates'];this[_0x7ab5('0x10')]=_0x9a9671[_0x7ab5('0x10')];this[_0x7ab5('0x11')]=_0x9a9671['zendeskAccounts'];this[_0x7ab5('0x12')]=_0x9a9671[_0x7ab5('0x12')];this[_0x7ab5('0x13')]=_0x9a9671[_0x7ab5('0x13')];this[_0x7ab5('0x14')]=_0x9a9671[_0x7ab5('0x14')];this[_0x7ab5('0x15')]=_0x9a9671[_0x7ab5('0x15')];this[_0x7ab5('0x16')]=_0x9a9671['deskAccounts'];this[_0x7ab5('0x17')]=_0x9a9671[_0x7ab5('0x17')];this[_0x7ab5('0x18')]=_0x9a9671['servicenowAccounts'];this[_0x7ab5('0x19')]=_0x9a9671[_0x7ab5('0x19')];this['freshsalesAccounts']=_0x9a9671[_0x7ab5('0x1a')];this['accounts']={'zendesk':this['zendeskAccounts'],'salesforce':this[_0x7ab5('0x13')],'freshdesk':this[_0x7ab5('0x12')],'sugarcrm':this[_0x7ab5('0x14')],'zoho':this[_0x7ab5('0x15')],'desk':this[_0x7ab5('0x16')],'vtiger':this[_0x7ab5('0x17')],'dynamics365':this['dynamics365Accounts'],'freshsales':this['freshsalesAccounts'],'servicenow':this[_0x7ab5('0x18')]};ami['on']('custom:agentcalled',this[_0x7ab5('0x1b')][_0x7ab5('0x1c')](this));ami['on'](_0x7ab5('0x1d'),this[_0x7ab5('0x1b')][_0x7ab5('0x1c')](this));ami['on'](_0x7ab5('0x1e'),this[_0x7ab5('0x1b')][_0x7ab5('0x1c')](this));ami['on'](_0x7ab5('0x1f'),this[_0x7ab5('0x1b')][_0x7ab5('0x1c')](this));ami['on'](_0x7ab5('0x20'),this[_0x7ab5('0x1b')]['bind'](this));ami['on'](_0x7ab5('0x21'),this[_0x7ab5('0x1b')][_0x7ab5('0x1c')](this));ami['on'](_0x7ab5('0x22'),this[_0x7ab5('0x1b')]['bind'](this));ami['on'](_0x7ab5('0x23'),this['syncCustomEvent'][_0x7ab5('0x1c')](this));ami['on']('custom:agentreject',this[_0x7ab5('0x1b')]['bind'](this));ami['on'](_0x7ab5('0x24'),this['syncCustomEvent'][_0x7ab5('0x1c')](this));ami['on'](_0x7ab5('0x25'),this[_0x7ab5('0x1b')][_0x7ab5('0x1c')](this));ami['on'](_0x7ab5('0x26'),this[_0x7ab5('0x1b')]['bind'](this));ami['on'](_0x7ab5('0x27'),this[_0x7ab5('0x28')][_0x7ab5('0x1c')](this));ami['on'](_0x7ab5('0x29'),this[_0x7ab5('0x28')][_0x7ab5('0x1c')](this));ami['on']('custom:dialend',this[_0x7ab5('0x28')][_0x7ab5('0x1c')](this));ami['on'](_0x7ab5('0x2a'),this['syncCustomEvent'][_0x7ab5('0x1c')](this));ami['on']('custom:closedinteraction',this[_0x7ab5('0x1b')]['bind'](this));ami['on']('custom:incomingmessage',this['syncCustomEvent'][_0x7ab5('0x1c')](this));ami['on'](_0x7ab5('0x2b'),this[_0x7ab5('0x1b')][_0x7ab5('0x1c')](this));ami['on']('custom:acceptmessage',this[_0x7ab5('0x1b')][_0x7ab5('0x1c')](this));ami['on']('custom:rejectmessage',this[_0x7ab5('0x1b')]['bind'](this));}Trigger['prototype']['emit']=function(_0x25a266,_0x23dcf9,_0x2c1506){logger[_0x7ab5('0x2c')](_0x25a266,_0x23dcf9,JSON[_0x7ab5('0x2d')](_0x2c1506));io['to'](_0x25a266)['emit'](_0x23dcf9,_0x2c1506);};Trigger['prototype'][_0x7ab5('0x1b')]=function(_0x1b0c8d){var _0x116b5f=_[_0x7ab5('0x2e')](_0x1b0c8d);this[_0x7ab5('0x2f')](_0x116b5f);};Trigger[_0x7ab5('0x30')]['syncAgentDial']=function(_0x258404){if(this[_0x7ab5('0xe')][_0x258404['interface']]){this[_0x7ab5('0x1b')](_0x258404);}};Trigger[_0x7ab5('0x30')][_0x7ab5('0x2f')]=function(_0x1a98c6){var _0x1c6d62;for(var _0x257073 in this[_0x7ab5('0xd')]){if(this['triggers'][_0x7ab5('0x31')](_0x257073)){if(this[_0x7ab5('0xd')][_0x257073]['status']){_0x1c6d62=this[_0x7ab5('0x32')](this[_0x7ab5('0xd')][_0x257073],_0x1a98c6);if(_0x1c6d62){_['merge'](_0x1a98c6,_0x1a98c6['variables']);for(var _0x4befc5=0x0,_0x5c4539,_0x171474,_0xaa1f8;_0x4befc5<this[_0x7ab5('0xd')][_0x257073][_0x7ab5('0x33')][_0x7ab5('0x34')];_0x4befc5+=0x1){_0x5c4539=this['triggers'][_0x257073]['Actions'][_0x4befc5];if(this[_0x7ab5('0xe')][_0x1a98c6['interface']]){switch(_0x5c4539['action']['toLowerCase']()){case'contactmanager':break;case _0x7ab5('0x35'):case _0x7ab5('0x36'):var _0x55cd59={};switch(barAndWebActions[_0x5c4539[_0x7ab5('0x37')]]){case _0x7ab5('0xc'):_0x55cd59['TemplateId']=_0x5c4539[_0x7ab5('0x38')];_0x55cd59[_0x7ab5('0x39')]=this[_0x7ab5('0x3a')][_0x5c4539[_0x7ab5('0x38')]]?Mustache[_0x7ab5('0x3b')](this[_0x7ab5('0x3a')][_0x5c4539['data2']][_0x7ab5('0x39')],_0x1a98c6):_0x7ab5('0x3c');break;case _0x7ab5('0x2'):_0x55cd59[_0x7ab5('0x3d')]=this[_0x7ab5('0x3e')](_0x5c4539[_0x7ab5('0x38')],_0x1a98c6,_[_0x7ab5('0x3f')](_0x5c4539[_0x7ab5('0x40')])?!![]:parseInt(_0x5c4539['data3'],0xa));if(_[_0x7ab5('0x3f')](_0x5c4539[_0x7ab5('0x41')])){_0x55cd59['location']='0';}else{_0x55cd59[_0x7ab5('0x42')]=_0x5c4539['data4'];_0x55cd59[_0x7ab5('0x43')]=_['isNil'](_0x5c4539[_0x7ab5('0x44')])?'800':_0x5c4539[_0x7ab5('0x44')];_0x55cd59[_0x7ab5('0x45')]=_[_0x7ab5('0x3f')](_0x5c4539[_0x7ab5('0x46')])?_0x7ab5('0x47'):_0x5c4539[_0x7ab5('0x46')];}break;case _0x7ab5('0x48'):_0x55cd59[_0x7ab5('0x49')]=_0x5c4539[_0x7ab5('0x38')]?Mustache[_0x7ab5('0x3b')](_0x5c4539[_0x7ab5('0x38')],_0x1a98c6):'';_0x55cd59[_0x7ab5('0x4a')]=_0x5c4539['data3']?Mustache[_0x7ab5('0x3b')](_0x5c4539['data3'],_0x1a98c6):'';break;}this[_0x7ab5('0x4b')](util[_0x7ab5('0x4c')](_0x7ab5('0x4d'),this['agents'][_0x1a98c6[_0x7ab5('0x4e')]]['name']),util[_0x7ab5('0x4c')](_0x7ab5('0x4f'),_0x5c4539[_0x7ab5('0x50')][_0x7ab5('0x51')](),barAndWebActions[_0x5c4539[_0x7ab5('0x37')]]),_[_0x7ab5('0x52')](_0x55cd59,_0x1a98c6));break;case _0x7ab5('0x53'):this[_0x7ab5('0x4b')](util[_0x7ab5('0x4c')]('user:%s',this[_0x7ab5('0xe')][_0x1a98c6[_0x7ab5('0x4e')]][_0x7ab5('0x54')]),util[_0x7ab5('0x4c')](_0x7ab5('0x55'),_0x5c4539[_0x7ab5('0x50')][_0x7ab5('0x51')]()),_[_0x7ab5('0x52')]({'ProjectId':parseInt(_0x5c4539[_0x7ab5('0x37')],0xa)},_0x1a98c6));break;default:this[_0x7ab5('0x4b')](util[_0x7ab5('0x4c')](_0x7ab5('0x4d'),this[_0x7ab5('0xe')][_0x1a98c6['interface']]['name']),util[_0x7ab5('0x4c')]('trigger:%s',_0x5c4539[_0x7ab5('0x50')][_0x7ab5('0x51')]()),_['merge']({},_0x5c4539,_0x1a98c6));}}switch(_0x5c4539[_0x7ab5('0x50')][_0x7ab5('0x51')]()){case _0x7ab5('0x56'):cmContact['exec'](this[_0x7ab5('0xe')][_0x1a98c6[_0x7ab5('0x4e')]],this[_0x7ab5('0xd')][_0x257073],_0x5c4539,_0x1a98c6);break;case _0x7ab5('0x57'):integration[_0x7ab5('0x58')](_0x5c4539,_0x1a98c6,this[_0x7ab5('0x59')],this[_0x7ab5('0xe')][_0x1a98c6[_0x7ab5('0x4e')]],this[_0x7ab5('0xf')][_0x1a98c6[_0x7ab5('0x5a')]],this[_0x7ab5('0x10')][_0x1a98c6[_0x7ab5('0x5b')]]);break;case _0x7ab5('0x5c'):urlforward['exec'](_0x5c4539,_0x1a98c6);break;case'script':script[_0x7ab5('0x58')](_0x5c4539,_0x1a98c6);break;}}}}}}};Trigger[_0x7ab5('0x30')][_0x7ab5('0x3e')]=function(_0x434503,_0x309ad3,_0x2c43ef){var _0x2c32ca=url[_0x7ab5('0x5d')](Mustache[_0x7ab5('0x3b')](_0x434503,_0x309ad3),!![]);if(_0x2c43ef){_[_0x7ab5('0x52')](_0x2c32ca[_0x7ab5('0x5e')],_0x309ad3);}delete _0x2c32ca[_0x7ab5('0x5f')];var _0x1054fb=url[_0x7ab5('0x4c')](_0x2c32ca);_0x1054fb=_0x1054fb[_0x7ab5('0x60')](/\/\?/g,'?');return _0x1054fb;};Trigger[_0x7ab5('0x30')]['checkTrigger']=function(_0x5225c4,_0x3e1c98){var _0x540882=!![],_0xaa789=!![];if(_0x5225c4[_0x7ab5('0x61')]['length']){_0x540882=_[_0x7ab5('0x62')](_0x5225c4[_0x7ab5('0x61')],this['checkConditions'](_0x3e1c98,_0x5225c4[_0x7ab5('0x63')]));}if(_0x5225c4['AnyConditions'][_0x7ab5('0x34')]){_0xaa789=_['some'](_0x5225c4[_0x7ab5('0x64')],this['checkConditions'](_0x3e1c98,_0x5225c4[_0x7ab5('0x63')]));}return _0x540882&&_0xaa789;};Trigger[_0x7ab5('0x30')][_0x7ab5('0x65')]=function(_0x36381e,_0xaa4b7d){return function(_0xa2a0ff){switch(_0xa2a0ff[_0x7ab5('0x66')]){case _0x7ab5('0x67'):if(_0x36381e[_0x7ab5('0x63')]===_0xaa4b7d){if(_0xaa4b7d==='chat'){return _0x36381e['ChatWebsiteId']?operators[_0xa2a0ff['operator']](Number(_0xa2a0ff[_0x7ab5('0x68')]),_0x36381e[_0x7ab5('0x69')]):![];}else{return _0x36381e[_[_0x7ab5('0x6a')](_0xaa4b7d)+'AccountId']?operators[_0xa2a0ff[_0x7ab5('0x6b')]](Number(_0xa2a0ff[_0x7ab5('0x68')]),_0x36381e[_[_0x7ab5('0x6a')](_0xaa4b7d)+_0x7ab5('0x6c')]):![];}}break;case _0x7ab5('0x6d'):case _0x7ab5('0x6e'):if(_0x36381e[_0x7ab5('0x63')]===_0xaa4b7d){return _0x36381e[_0x7ab5('0x6f')]?operators[_0xa2a0ff[_0x7ab5('0x6b')]](_0xa2a0ff[_0x7ab5('0x68')],_0x36381e['event']):![];}break;case'queue':return _0x36381e[_0x7ab5('0x5a')]?operators[_0xa2a0ff['operator']](_0xa2a0ff['value'],_0x36381e['queue']):![];case _0x7ab5('0x70'):return _0x36381e[_0x7ab5('0x71')]?operators[_0xa2a0ff[_0x7ab5('0x6b')]](_0xa2a0ff['value'],_0x36381e['membername']):![];case _0x7ab5('0x72'):return _0x36381e[_0x7ab5('0x72')]?operators[_0xa2a0ff[_0x7ab5('0x6b')]](_0xa2a0ff[_0x7ab5('0x68')],_0x36381e['lastevent']):![];case'routeId':return _0x36381e['routeId']?operators[_0xa2a0ff['operator']](_0xa2a0ff[_0x7ab5('0x68')],_0x36381e[_0x7ab5('0x5b')]):![];}return![];};};module[_0x7ab5('0x73')]=Trigger;
\ No newline at end of file
index dfc16ad..40f3a0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['calleridname','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger','desk','redis','defaults','localhost','emit','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','%s/users','then','total_entries','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','debug','[HTTP]','%s:%s','authType','token','username','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','length','string','nameField','toLowerCase','content','picklist','idField','customField','custom_fields','type','variableName','customVariable','Variable','name','priority','merge','getString','Subjects','xCALLY','CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','The\x20User\x20ID\x20is:','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','https://xcally.desk.com/web/agent/case/%d','catch','error','stringify','recordingFormat','none','[OUTBOUND]','destcalleridnum','Displaying\x20ticket\x20to\x20agent...','unmanaged','lastevent'];(function(_0x584b30,_0x49578a){var _0x17def7=function(_0x916253){while(--_0x916253){_0x584b30['push'](_0x584b30['shift']());}};_0x17def7(++_0x49578a);}(_0x814b,0x1a2));var _0xb814=function(_0x29d623,_0x1a5c9c){_0x29d623=_0x29d623-0x0;var _0x242e59=_0x814b[_0x29d623];return _0x242e59;};'use strict';var _=require(_0xb814('0x0'));var rp=require(_0xb814('0x1'));var md5=require(_0xb814('0x2'));var util=require(_0xb814('0x3'));var Redis=require(_0xb814('0x4'));var intUtil=require(_0xb814('0x5'));var config=require('../../../../config/environment');var logger=require(_0xb814('0x6'))(_0xb814('0x7'));config[_0xb814('0x8')]=_[_0xb814('0x9')](config[_0xb814('0x8')],{'host':_0xb814('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb814('0x8')]));function emit(_0x2e6272,_0x5c8539,_0x271af9){io['to'](_0x2e6272)[_0xb814('0xb')](_0x5c8539,_0x271af9);}var headers={'Content-Type':_0xb814('0xc'),'Accept':_0xb814('0xc')};function getUser(_0x1fea33,_0x21d4a5){if(intUtil[_0xb814('0xd')](_0x21d4a5)===!![]){logger[_0xb814('0xe')](_0xb814('0xf'),_0x21d4a5);return request({'uri':util[_0xb814('0x10')](_0xb814('0x11'),_0x1fea33['remoteUri'])})[_0xb814('0x12')](function(_0x56278f){if(_0x56278f[_0xb814('0x13')]){return _[_0xb814('0x14')](_0x56278f[_0xb814('0x15')][_0xb814('0x16')],{'email':_0x21d4a5});}})[_0xb814('0x12')](function(_0x3bde14){if(_0x3bde14){logger[_0xb814('0xe')](_0xb814('0x17'));return _0x3bde14;}else{logger[_0xb814('0xe')](_0xb814('0x18'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x19'),_0x1fea33[_0xb814('0x1a')])});}});}else{logger[_0xb814('0xe')](_0xb814('0x1b'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x19'),_0x1fea33[_0xb814('0x1a')])});}}function request(_0x125ce2){logger[_0xb814('0x1c')](_0xb814('0x1d'),JSON['stringify'](_0x125ce2));return rp(_[_0xb814('0x9')](_0x125ce2,{'method':'GET','headers':headers,'json':!![]}));}function getAuth(_0x270598){var _0xfac75b;if(_0x270598['authType']==='basic'){_0xfac75b=util['format'](_0xb814('0x1e'),_0x270598['username'],_0x270598['password']);}else if(_0x270598[_0xb814('0x1f')]===_0xb814('0x20')){_0xfac75b=util[_0xb814('0x10')]('%s/token:%s',_0x270598[_0xb814('0x21')],_0x270598['token']);}return util[_0xb814('0x10')](_0xb814('0x22'),new Buffer(_0xfac75b)[_0xb814('0x23')](_0xb814('0x24')));}function getEndUser(_0x27352e,_0x2bd039,_0x1f5d40){logger['info'](_0xb814('0x25'),_0x1f5d40);return request({'uri':util['format'](_0xb814('0x26'),_0x27352e[_0xb814('0x1a')]),'qs':{'phone':_0x1f5d40}})[_0xb814('0x12')](function(_0x208927){if(_0x208927[_0xb814('0x13')]){logger[_0xb814('0xe')](_0xb814('0x27'));return _0x208927['_embedded'][_0xb814('0x16')][0x0];}else{logger[_0xb814('0xe')](_0xb814('0x28'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x29'),_0x27352e[_0xb814('0x1a')]),'method':_0xb814('0x2a'),'body':{'first_name':_0x2bd039,'title':_0x2bd039,'phone_numbers':[{'type':_0xb814('0x2b'),'value':_0x1f5d40}]}});}});}function getTags(_0x5a6291,_0x271aa8){var _0x328a08=[];if(_0x5a6291&&_0x5a6291['length']>0x0){_0x328a08=_[_0xb814('0x2c')](_0x5a6291,_0x271aa8);}return _0x328a08;}function getCustomFields(_0x37d24d,_0x530744){var _0x499f22=[];var _0x20577b={'custom_fields':{}};if(_0x37d24d[_0xb814('0x2d')]>0x0){_['forEach'](_0x37d24d,function(_0x338a28){if(_['includes']([_0xb814('0x2e'),'picklist'],_0x338a28['type'])&&_0x338a28[_0xb814('0x2f')]&&!_0x338a28['customField']){_0x20577b[_0x338a28[_0xb814('0x2f')][_0xb814('0x30')]()]=_0x338a28[_0xb814('0x31')]['toString']();}else if(_['includes']([_0xb814('0x2e'),_0xb814('0x32')],_0x338a28['type'])&&_0x338a28[_0xb814('0x33')]&&_0x338a28[_0xb814('0x34')]){_0x20577b[_0xb814('0x35')][_0x338a28[_0xb814('0x33')]]=_0x338a28[_0xb814('0x31')][_0xb814('0x23')]();}else if(_0x338a28[_0xb814('0x36')]==='variable'&&_0x338a28[_0xb814('0x37')]&&_0x338a28[_0xb814('0x33')]&&_0x338a28[_0xb814('0x34')]){_0x530744[_0x338a28[_0xb814('0x37')]]&&(_0x20577b[_0xb814('0x35')][_0x338a28['idField']]=_0x530744[_0x338a28[_0xb814('0x37')]]['toString']());}else if(_0x338a28[_0xb814('0x36')]===_0xb814('0x38')&&_0x338a28[_0xb814('0x39')]&&_0x338a28['Variable'][_0xb814('0x3a')]&&_0x338a28[_0xb814('0x33')]&&_0x338a28['customField']){_0x530744[_0x338a28[_0xb814('0x39')][_0xb814('0x3a')][_0xb814('0x30')]()]&&(_0x20577b[_0xb814('0x35')][_0x338a28[_0xb814('0x33')]]=_0x530744[_0x338a28[_0xb814('0x39')]['name'][_0xb814('0x30')]()]['toString']());}});}if(_0x20577b[_0xb814('0x3b')]){_0x20577b['priority']=Number(_0x20577b[_0xb814('0x3b')]);}return _0x20577b;}function getTicket(_0x4b9233,_0x2f8a2e,_0x26675a,_0x54a7fb,_0x4d308a){logger['info']('Creating\x20new\x20ticket...');var _0x17549e=_[_0xb814('0x3c')]({'subject':intUtil[_0xb814('0x3d')](_0x54a7fb[_0xb814('0x3e')],_0x4d308a,'\x20'),'type':'phone','status':'new','labels':[_0xb814('0x3f'),'Motion',_0xb814('0x40')][_0xb814('0x41')](getTags(_0x54a7fb[_0xb814('0x42')],_0xb814('0x3a'))),'description':intUtil[_0xb814('0x3d')](_0x54a7fb[_0xb814('0x43')],_0x4d308a,'\x0a'),'_links':{'assigned_user':{'href':util[_0xb814('0x10')](_0xb814('0x44'),_0x2f8a2e['id']),'class':_0xb814('0x45')}},'message':{'direction':'in','body':intUtil['getString'](_0x54a7fb['Descriptions'],_0x4d308a,'\x0a')}},getCustomFields(_0x54a7fb['Fields'],_0x4d308a));return request({'uri':util[_0xb814('0x10')]('%s/customers/%d/cases',_0x4b9233[_0xb814('0x1a')],_0x26675a['id']),'method':'POST','body':_0x17549e});}exports[_0xb814('0x46')]=function(_0x44ff56,_0x9ef639,_0x2e97cc,_0x4fae23,_0x30fc57,_0x15f01a){var _0x2b23c7,_0x22cf27;_0x15f01a[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x15f01a['remoteUri']);_0x15f01a[_0xb814('0x48')]=intUtil[_0xb814('0x47')](_0x15f01a[_0xb814('0x48')]);if(_0x30fc57&&_0x30fc57[_0xb814('0x49')]){logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x4b'));_0x9ef639['recordingURL']=util['format'](_0xb814('0x4c'),_0x15f01a[_0xb814('0x48')],_0x9ef639[_0xb814('0x4d')],md5(_0x9ef639[_0xb814('0x4d')]));}else{_0x9ef639[_0xb814('0x4e')]='';}headers[_0xb814('0x4f')]=getAuth(_0x15f01a);return getUser(_0x15f01a,_0x4fae23[_0xb814('0x50')])[_0xb814('0x12')](function(_0x2eb9b6){_0x2b23c7=_0x2eb9b6;logger[_0xb814('0xe')](_0xb814('0x51'),_0x2b23c7['id']);return getEndUser(_0x15f01a,_0x9ef639['calleridname'],_0x9ef639[_0xb814('0x52')]);})[_0xb814('0x12')](function(_0x4a76bb){_0x22cf27=_0x4a76bb;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x22cf27['id']);return getTicket(_0x15f01a,_0x2b23c7,_0x22cf27,_0x2e97cc,_0x9ef639);})[_0xb814('0x12')](function(_0x37866f){if(_0x37866f){logger[_0xb814('0xe')](_0xb814('0x53'));logger[_0xb814('0xe')](_0xb814('0x54'),_0x37866f['id']);switch(_0x15f01a[_0xb814('0x36')]){case _0xb814('0x55'):logger[_0xb814('0xe')](_0xb814('0x4a'),'Displaying\x20ticket\x20to\x20agent...');emit(util['format'](_0xb814('0x56'),_0x4fae23[_0xb814('0x3a')]),_0xb814('0x57'),{'recordId':_0x37866f['id']});break;case _0xb814('0x58'):logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x59'));emit(util['format'](_0xb814('0x56'),_0x4fae23[_0xb814('0x3a')]),_0xb814('0x5a'),{'uri':util['format'](_0xb814('0x5b'),_0x37866f['id'])});break;default:logger['error'](_0xb814('0x4a'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0xb814('0x5c')](function(_0x3cf8f8){console['error'](_0x3cf8f8);logger[_0xb814('0x5d')](_0xb814('0x4a'),JSON[_0xb814('0x5e')](_0x3cf8f8));});};exports['outbound']=function(_0x3da050,_0x5f0e58,_0x13bdcf,_0x158893,_0x4aed78,_0x39952d,_0x4a3f84){var _0x539be7,_0x3b9709;_0x39952d[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x39952d['remoteUri']);_0x39952d[_0xb814('0x48')]=intUtil['stripTrailingSlash'](_0x39952d[_0xb814('0x48')]);if(_0x4a3f84&&_0x4a3f84[_0xb814('0x5f')]&&_0x4a3f84['recordingFormat']!==_0xb814('0x60')){logger['info'](_0xb814('0x61'),_0xb814('0x4b'));_0x5f0e58[_0xb814('0x4e')]=util[_0xb814('0x10')](_0xb814('0x4c'),_0x39952d[_0xb814('0x48')],_0x5f0e58[_0xb814('0x4d')],md5(_0x5f0e58[_0xb814('0x4d')]));}headers['Authorization']=getAuth(_0x39952d);return getUser(_0x39952d,_0x158893[_0xb814('0x50')])[_0xb814('0x12')](function(_0x5d71d5){_0x539be7=_0x5d71d5;logger[_0xb814('0xe')](_0xb814('0x51'),_0x539be7['id']);return getEndUser(_0x39952d,_0x5f0e58['destcalleridname'],_0x5f0e58[_0xb814('0x62')]);})['then'](function(_0x48362c){_0x3b9709=_0x48362c;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x3b9709['id']);return getTicket(_0x39952d,_0x539be7,_0x3b9709,_0x13bdcf,_0x5f0e58);})[_0xb814('0x12')](function(_0xd1cd8b){if(_0xd1cd8b){logger[_0xb814('0xe')]('Ticket\x20created!');logger[_0xb814('0xe')]('The\x20Ticket\x20ID\x20is:',_0xd1cd8b['id']);switch(_0x39952d[_0xb814('0x36')]){case _0xb814('0x55'):logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x63'));emit(util[_0xb814('0x10')](_0xb814('0x56'),_0x158893[_0xb814('0x3a')]),_0xb814('0x57'),{'recordId':_0xd1cd8b['id']});break;case'newTab':logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x59'));emit(util[_0xb814('0x10')](_0xb814('0x56'),_0x158893[_0xb814('0x3a')]),'trigger:browser:url',{'uri':util[_0xb814('0x10')]('%s/agent/tickets/%s',_0x39952d[_0xb814('0x1a')],_0xd1cd8b['id'])});break;default:logger[_0xb814('0x5d')](_0xb814('0x61'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0xb814('0x5c')](function(_0x579351){logger[_0xb814('0x5d')]('[OUTBOUND]',JSON[_0xb814('0x5e')](_0x579351));});};exports[_0xb814('0x64')]=function(_0xa03cd2,_0x1b024f,_0x3377d4,_0x167d82,_0x143518,_0x4d44e3){var _0x44088d,_0x51ca51;_0x4d44e3[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x4d44e3[_0xb814('0x1a')]);_0x4d44e3[_0xb814('0x48')]=intUtil[_0xb814('0x47')](_0x4d44e3[_0xb814('0x48')]);if(_0x143518&&_0x143518['monitor_format']){logger[_0xb814('0xe')]('['+_0x1b024f[_0xb814('0x65')]['toUpperCase']()+']',_0xb814('0x4b'));_0x1b024f[_0xb814('0x4e')]=util[_0xb814('0x10')](_0xb814('0x4c'),_0x4d44e3[_0xb814('0x48')],_0x1b024f['uniqueid'],md5(_0x1b024f[_0xb814('0x4d')]));}else{_0x1b024f['recordingURL']='';}headers[_0xb814('0x4f')]=getAuth(_0x4d44e3);return getUser(_0x4d44e3)[_0xb814('0x12')](function(_0x2645f6){_0x44088d=_0x2645f6;logger[_0xb814('0xe')](_0xb814('0x51'),_0x44088d['id']);return getEndUser(_0x4d44e3,_0x1b024f[_0xb814('0x66')],_0x1b024f['calleridnum']);})['then'](function(_0x5d064b){_0x51ca51=_0x5d064b;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x51ca51['id']);return getTicket(_0x4d44e3,_0x44088d,_0x51ca51,_0x3377d4,_0x1b024f);})[_0xb814('0x12')](function(_0x1d3954){if(_0x1d3954){logger[_0xb814('0xe')]('Ticket\x20created!');logger[_0xb814('0xe')](_0xb814('0x54'),_0x1d3954['id']);}})[_0xb814('0x5c')](function(_0x5aabbe){logger[_0xb814('0x5d')]('['+_0x1b024f[_0xb814('0x65')][_0xb814('0x67')]()+']',JSON[_0xb814('0x5e')](_0x5aabbe));});};
\ No newline at end of file
+var _0x3e74=['customField','content','idField','custom_fields','variable','variableName','name','Variable','toLowerCase','priority','Creating\x20new\x20ticket...','getString','phone','new','xCALLY','Motion','CTI','concat','Descriptions','/api/v2/users/%d','user','Fields','%s/customers/%d/cases','stripTrailingSlash','serverUrl','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','newTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','catch','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridnum','The\x20Enduser\x20ID\x20is:','trigger:desk:display','trigger:browser:url','%s/agent/tickets/%s','stringify','unmanaged','monitor_format','lastevent','toUpperCase','calleridnum','lodash','md5','util','ioredis','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','Getting\x20agent\x20with\x20email','%s/users','then','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','format','debug','[HTTP]','GET','authType','basic','%s:%s','username','password','token','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','total_entries','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','length','forEach','includes','string','picklist','type','nameField'];(function(_0x59daf4,_0x3f1ff7){var _0x501d4e=function(_0x5f6e97){while(--_0x5f6e97){_0x59daf4['push'](_0x59daf4['shift']());}};_0x501d4e(++_0x3f1ff7);}(_0x3e74,0x175));var _0x43e7=function(_0x1a2ef4,_0xfc984d){_0x1a2ef4=_0x1a2ef4-0x0;var _0x173dbb=_0x3e74[_0x1a2ef4];return _0x173dbb;};'use strict';var _=require(_0x43e7('0x0'));var rp=require('request-promise');var md5=require(_0x43e7('0x1'));var util=require(_0x43e7('0x2'));var Redis=require(_0x43e7('0x3'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x43e7('0x4'))('desk');config[_0x43e7('0x5')]=_[_0x43e7('0x6')](config[_0x43e7('0x5')],{'host':_0x43e7('0x7'),'port':0x18eb});var io=require(_0x43e7('0x8'))(new Redis(config['redis']));function emit(_0x45a0d1,_0x3491d6,_0x2ede2d){io['to'](_0x45a0d1)[_0x43e7('0x9')](_0x3491d6,_0x2ede2d);}var headers={'Content-Type':_0x43e7('0xa'),'Accept':'application/json'};function getUser(_0x212c6c,_0x554d44){if(intUtil['validateEmail'](_0x554d44)===!![]){logger[_0x43e7('0xb')](_0x43e7('0xc'),_0x554d44);return request({'uri':util['format'](_0x43e7('0xd'),_0x212c6c['remoteUri'])})[_0x43e7('0xe')](function(_0x37302c){if(_0x37302c['total_entries']){return _[_0x43e7('0xf')](_0x37302c[_0x43e7('0x10')][_0x43e7('0x11')],{'email':_0x554d44});}})[_0x43e7('0xe')](function(_0x4e008c){if(_0x4e008c){logger['info'](_0x43e7('0x12'));return _0x4e008c;}else{logger[_0x43e7('0xb')](_0x43e7('0x13'));return request({'uri':util['format']('%s/users/me',_0x212c6c[_0x43e7('0x14')])});}});}else{logger[_0x43e7('0xb')](_0x43e7('0x15'));return request({'uri':util[_0x43e7('0x16')]('%s/users/me',_0x212c6c['remoteUri'])});}}function request(_0xdf16c){logger[_0x43e7('0x17')](_0x43e7('0x18'),JSON['stringify'](_0xdf16c));return rp(_['defaults'](_0xdf16c,{'method':_0x43e7('0x19'),'headers':headers,'json':!![]}));}function getAuth(_0x1ca758){var _0x9037d3;if(_0x1ca758[_0x43e7('0x1a')]===_0x43e7('0x1b')){_0x9037d3=util[_0x43e7('0x16')](_0x43e7('0x1c'),_0x1ca758[_0x43e7('0x1d')],_0x1ca758[_0x43e7('0x1e')]);}else if(_0x1ca758[_0x43e7('0x1a')]===_0x43e7('0x1f')){_0x9037d3=util[_0x43e7('0x16')]('%s/token:%s',_0x1ca758[_0x43e7('0x1d')],_0x1ca758[_0x43e7('0x1f')]);}return util['format'](_0x43e7('0x20'),new Buffer(_0x9037d3)[_0x43e7('0x21')](_0x43e7('0x22')));}function getEndUser(_0x28aacc,_0x4077fb,_0x2f4cb4){logger['info'](_0x43e7('0x23'),_0x2f4cb4);return request({'uri':util['format']('%s/customers/search',_0x28aacc[_0x43e7('0x14')]),'qs':{'phone':_0x2f4cb4}})[_0x43e7('0xe')](function(_0x4b2b9f){if(_0x4b2b9f[_0x43e7('0x24')]){logger['info'](_0x43e7('0x25'));return _0x4b2b9f['_embedded'][_0x43e7('0x11')][0x0];}else{logger[_0x43e7('0xb')](_0x43e7('0x26'));return request({'uri':util[_0x43e7('0x16')]('%s/customers',_0x28aacc['remoteUri']),'method':_0x43e7('0x27'),'body':{'first_name':_0x4077fb,'title':_0x4077fb,'phone_numbers':[{'type':'work','value':_0x2f4cb4}]}});}});}function getTags(_0x2dd5f,_0x40dc8f){var _0x3565cf=[];if(_0x2dd5f&&_0x2dd5f[_0x43e7('0x28')]>0x0){_0x3565cf=_['map'](_0x2dd5f,_0x40dc8f);}return _0x3565cf;}function getCustomFields(_0x33a1a5,_0x4690a6){var _0x45b675=[];var _0x50f9f5={'custom_fields':{}};if(_0x33a1a5[_0x43e7('0x28')]>0x0){_[_0x43e7('0x29')](_0x33a1a5,function(_0x2b85a5){if(_[_0x43e7('0x2a')]([_0x43e7('0x2b'),_0x43e7('0x2c')],_0x2b85a5[_0x43e7('0x2d')])&&_0x2b85a5[_0x43e7('0x2e')]&&!_0x2b85a5[_0x43e7('0x2f')]){_0x50f9f5[_0x2b85a5[_0x43e7('0x2e')]['toLowerCase']()]=_0x2b85a5[_0x43e7('0x30')][_0x43e7('0x21')]();}else if(_[_0x43e7('0x2a')]([_0x43e7('0x2b'),_0x43e7('0x2c')],_0x2b85a5['type'])&&_0x2b85a5[_0x43e7('0x31')]&&_0x2b85a5[_0x43e7('0x2f')]){_0x50f9f5[_0x43e7('0x32')][_0x2b85a5[_0x43e7('0x31')]]=_0x2b85a5['content']['toString']();}else if(_0x2b85a5['type']===_0x43e7('0x33')&&_0x2b85a5[_0x43e7('0x34')]&&_0x2b85a5[_0x43e7('0x31')]&&_0x2b85a5[_0x43e7('0x2f')]){_0x4690a6[_0x2b85a5[_0x43e7('0x34')]]&&(_0x50f9f5[_0x43e7('0x32')][_0x2b85a5['idField']]=_0x4690a6[_0x2b85a5['variableName']]['toString']());}else if(_0x2b85a5['type']==='customVariable'&&_0x2b85a5['Variable']&&_0x2b85a5['Variable'][_0x43e7('0x35')]&&_0x2b85a5['idField']&&_0x2b85a5[_0x43e7('0x2f')]){_0x4690a6[_0x2b85a5[_0x43e7('0x36')][_0x43e7('0x35')][_0x43e7('0x37')]()]&&(_0x50f9f5[_0x43e7('0x32')][_0x2b85a5[_0x43e7('0x31')]]=_0x4690a6[_0x2b85a5[_0x43e7('0x36')]['name']['toLowerCase']()]['toString']());}});}if(_0x50f9f5[_0x43e7('0x38')]){_0x50f9f5[_0x43e7('0x38')]=Number(_0x50f9f5[_0x43e7('0x38')]);}return _0x50f9f5;}function getTicket(_0x16cdba,_0x1b1440,_0x1ed538,_0x1d4589,_0x2ffd43){logger['info'](_0x43e7('0x39'));var _0x2b0ffe=_['merge']({'subject':intUtil[_0x43e7('0x3a')](_0x1d4589['Subjects'],_0x2ffd43,'\x20'),'type':_0x43e7('0x3b'),'status':_0x43e7('0x3c'),'labels':[_0x43e7('0x3d'),_0x43e7('0x3e'),_0x43e7('0x3f')][_0x43e7('0x40')](getTags(_0x1d4589['Tags'],'name')),'description':intUtil[_0x43e7('0x3a')](_0x1d4589[_0x43e7('0x41')],_0x2ffd43,'\x0a'),'_links':{'assigned_user':{'href':util[_0x43e7('0x16')](_0x43e7('0x42'),_0x1b1440['id']),'class':_0x43e7('0x43')}},'message':{'direction':'in','body':intUtil['getString'](_0x1d4589[_0x43e7('0x41')],_0x2ffd43,'\x0a')}},getCustomFields(_0x1d4589[_0x43e7('0x44')],_0x2ffd43));return request({'uri':util['format'](_0x43e7('0x45'),_0x16cdba['remoteUri'],_0x1ed538['id']),'method':_0x43e7('0x27'),'body':_0x2b0ffe});}exports['queue']=function(_0x3d81ae,_0x3b4235,_0x3a5807,_0x1c2c6b,_0x49b866,_0x47d6a1){var _0x103393,_0x40c509;_0x47d6a1[_0x43e7('0x14')]=intUtil[_0x43e7('0x46')](_0x47d6a1['remoteUri']);_0x47d6a1['serverUrl']=intUtil['stripTrailingSlash'](_0x47d6a1[_0x43e7('0x47')]);if(_0x49b866&&_0x49b866['monitor_format']){logger[_0x43e7('0xb')]('[QUEUE]','Recording\x20is\x20enabled!');_0x3b4235[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x47d6a1[_0x43e7('0x47')],_0x3b4235[_0x43e7('0x4a')],md5(_0x3b4235[_0x43e7('0x4a')]));}else{_0x3b4235['recordingURL']='';}headers[_0x43e7('0x4b')]=getAuth(_0x47d6a1);return getUser(_0x47d6a1,_0x1c2c6b[_0x43e7('0x4c')])[_0x43e7('0xe')](function(_0x1fd277){_0x103393=_0x1fd277;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0x103393['id']);return getEndUser(_0x47d6a1,_0x3b4235['calleridname'],_0x3b4235['calleridnum']);})[_0x43e7('0xe')](function(_0x36a09e){_0x40c509=_0x36a09e;logger[_0x43e7('0xb')]('The\x20Enduser\x20ID\x20is:',_0x40c509['id']);return getTicket(_0x47d6a1,_0x103393,_0x40c509,_0x3a5807,_0x3b4235);})['then'](function(_0x56489b){if(_0x56489b){logger[_0x43e7('0xb')](_0x43e7('0x4e'));logger['info'](_0x43e7('0x4f'),_0x56489b['id']);switch(_0x47d6a1[_0x43e7('0x2d')]){case _0x43e7('0x50'):logger['info']('[QUEUE]','Displaying\x20ticket\x20to\x20agent...');emit(util['format'](_0x43e7('0x51'),_0x1c2c6b[_0x43e7('0x35')]),'trigger:desk:display',{'recordId':_0x56489b['id']});break;case _0x43e7('0x52'):logger[_0x43e7('0xb')](_0x43e7('0x53'),_0x43e7('0x54'));emit(util['format'](_0x43e7('0x51'),_0x1c2c6b['name']),'trigger:browser:url',{'uri':util[_0x43e7('0x16')](_0x43e7('0x55'),_0x56489b['id'])});break;default:logger[_0x43e7('0x56')](_0x43e7('0x53'),_0x43e7('0x57'));}}})[_0x43e7('0x58')](function(_0x1cd87c){console[_0x43e7('0x56')](_0x1cd87c);logger[_0x43e7('0x56')](_0x43e7('0x53'),JSON['stringify'](_0x1cd87c));});};exports[_0x43e7('0x59')]=function(_0x46c910,_0x499c03,_0x39e3ca,_0x4e6f6d,_0x35b799,_0x520857,_0x34e2ec){var _0x1f561f,_0xfe13fa;_0x520857['remoteUri']=intUtil['stripTrailingSlash'](_0x520857[_0x43e7('0x14')]);_0x520857[_0x43e7('0x47')]=intUtil[_0x43e7('0x46')](_0x520857[_0x43e7('0x47')]);if(_0x34e2ec&&_0x34e2ec[_0x43e7('0x5a')]&&_0x34e2ec[_0x43e7('0x5a')]!==_0x43e7('0x5b')){logger[_0x43e7('0xb')](_0x43e7('0x5c'),_0x43e7('0x5d'));_0x499c03[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x520857[_0x43e7('0x47')],_0x499c03['uniqueid'],md5(_0x499c03[_0x43e7('0x4a')]));}headers[_0x43e7('0x4b')]=getAuth(_0x520857);return getUser(_0x520857,_0x4e6f6d[_0x43e7('0x4c')])['then'](function(_0x5d63c6){_0x1f561f=_0x5d63c6;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0x1f561f['id']);return getEndUser(_0x520857,_0x499c03['destcalleridname'],_0x499c03[_0x43e7('0x5e')]);})['then'](function(_0x49a6ce){_0xfe13fa=_0x49a6ce;logger[_0x43e7('0xb')](_0x43e7('0x5f'),_0xfe13fa['id']);return getTicket(_0x520857,_0x1f561f,_0xfe13fa,_0x39e3ca,_0x499c03);})[_0x43e7('0xe')](function(_0x40155c){if(_0x40155c){logger[_0x43e7('0xb')]('Ticket\x20created!');logger[_0x43e7('0xb')](_0x43e7('0x4f'),_0x40155c['id']);switch(_0x520857['type']){case _0x43e7('0x50'):logger[_0x43e7('0xb')](_0x43e7('0x53'),'Displaying\x20ticket\x20to\x20agent...');emit(util['format']('user:%s',_0x4e6f6d[_0x43e7('0x35')]),_0x43e7('0x60'),{'recordId':_0x40155c['id']});break;case _0x43e7('0x52'):logger[_0x43e7('0xb')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x43e7('0x16')](_0x43e7('0x51'),_0x4e6f6d[_0x43e7('0x35')]),_0x43e7('0x61'),{'uri':util['format'](_0x43e7('0x62'),_0x520857[_0x43e7('0x14')],_0x40155c['id'])});break;default:logger[_0x43e7('0x56')](_0x43e7('0x5c'),_0x43e7('0x57'));}}})[_0x43e7('0x58')](function(_0x4665db){logger[_0x43e7('0x56')](_0x43e7('0x5c'),JSON[_0x43e7('0x63')](_0x4665db));});};exports[_0x43e7('0x64')]=function(_0x57fdfe,_0x5f3824,_0x2b0711,_0x58a3a8,_0x501616,_0x50edb2){var _0xb3e981,_0xe666b0;_0x50edb2['remoteUri']=intUtil[_0x43e7('0x46')](_0x50edb2[_0x43e7('0x14')]);_0x50edb2[_0x43e7('0x47')]=intUtil['stripTrailingSlash'](_0x50edb2[_0x43e7('0x47')]);if(_0x501616&&_0x501616[_0x43e7('0x65')]){logger[_0x43e7('0xb')]('['+_0x5f3824[_0x43e7('0x66')][_0x43e7('0x67')]()+']',_0x43e7('0x5d'));_0x5f3824[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x50edb2[_0x43e7('0x47')],_0x5f3824[_0x43e7('0x4a')],md5(_0x5f3824['uniqueid']));}else{_0x5f3824['recordingURL']='';}headers[_0x43e7('0x4b')]=getAuth(_0x50edb2);return getUser(_0x50edb2)['then'](function(_0x5cb26e){_0xb3e981=_0x5cb26e;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0xb3e981['id']);return getEndUser(_0x50edb2,_0x5f3824['calleridname'],_0x5f3824[_0x43e7('0x68')]);})[_0x43e7('0xe')](function(_0x1e2fed){_0xe666b0=_0x1e2fed;logger[_0x43e7('0xb')](_0x43e7('0x5f'),_0xe666b0['id']);return getTicket(_0x50edb2,_0xb3e981,_0xe666b0,_0x2b0711,_0x5f3824);})[_0x43e7('0xe')](function(_0x398a78){if(_0x398a78){logger['info'](_0x43e7('0x4e'));logger[_0x43e7('0xb')]('The\x20Ticket\x20ID\x20is:',_0x398a78['id']);}})[_0x43e7('0x58')](function(_0x5c2c5f){logger[_0x43e7('0x56')]('['+_0x5f3824[_0x43e7('0x66')][_0x43e7('0x67')]()+']',JSON[_0x43e7('0x63')](_0x5c2c5f));});};
\ No newline at end of file
index 4d5a8ea..d06e7f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67e8=['phonecalls','assign','queue','callDirection','Fields','headers','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','serverUrl','stripTrailingSlash','unmanaged','%s/api/data/v9.0/','%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:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','error',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','lodash','bluebird','request-promise','md5','ioredis','../../../../config/environment','defaults','redis','socket.io-emitter','POST','remoteUri','password','clientSecret','then','access_token','catch',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','value','isNil','email','userEmail','internalemailaddress','isdisabled','toUpperCase',']\x20Agent\x20found\x20','systemuserid','userId','info','username','length','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','4.0','odata-entityid','lastIndexOf','enduserId','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','%2b','telephone1','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','includes','string','picklist','type','nameField','idField','substring','indexOf','content','incident','getString','Subjects','Descriptions','/contacts(','ticketType'];(function(_0x109019,_0x2be7a6){var _0x592ba8=function(_0x2d5781){while(--_0x2d5781){_0x109019['push'](_0x109019['shift']());}};_0x592ba8(++_0x2be7a6);}(_0x67e8,0x86));var _0x867e=function(_0x120791,_0x4a9447){_0x120791=_0x120791-0x0;var _0x2a02a8=_0x67e8[_0x120791];return _0x2a02a8;};'use strict';var _=require(_0x867e('0x0'));var BPromise=require(_0x867e('0x1'));var rp=require(_0x867e('0x2'));var util=require('util');var intUtil=require('./util');var md5=require(_0x867e('0x3'));var Redis=require(_0x867e('0x4'));var logger=require('../../../../config/logger')('dynamics365');var config=require(_0x867e('0x5'));config['redis']=_[_0x867e('0x6')](config[_0x867e('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x867e('0x8'))(new Redis(config[_0x867e('0x7')]));function getAuthToken(_0x28a0a7,_0xa2d1b3,_0x4b4a1e){var _0x24ee76={'method':_0x867e('0x9'),'uri':_0xa2d1b3,'form':{'client_id':_0x28a0a7['clientId'],'resource':_0x28a0a7[_0x867e('0xa')],'username':_0x28a0a7['username'],'password':_0x28a0a7[_0x867e('0xb')],'grant_type':_0x867e('0xb'),'client_secret':_0x28a0a7[_0x867e('0xc')]},'json':!![]};return rp(_0x24ee76)[_0x867e('0xd')](function(_0x3cb8ca){return _0x3cb8ca[_0x867e('0xe')];})[_0x867e('0xf')](function(_0x5b50e0){logger['error']('['+[_0x4b4a1e['toUpperCase']()]+_0x867e('0x10'));return _0x5b50e0[_0x867e('0x11')];});}function getUser(_0x187336,_0x225ab8,_0x47d51c,_0x22db9c,_0x343b8f,_0x4dcfb3){return new BPromise(function(_0x384eaf,_0x5dbda4){return getAuthToken(_0x225ab8,_0x22db9c,_0x4dcfb3)[_0x867e('0xd')](function(_0xd680f5){var _0x29e7f9={'method':_0x867e('0x12'),'uri':_0x343b8f+_0x867e('0x13'),'headers':{'Authorization':_0x867e('0x14')+_0xd680f5,'OData-Version':'4.0'},'json':!![]};return rp(_0x29e7f9);})['then'](function(_0x3bbbf0){var _0x4e23af=_0x3bbbf0[_0x867e('0x15')];var _0x5e8e1b=![];var _0x4e8389=null;if(!_[_0x867e('0x16')](_0x47d51c)){if(intUtil['validateEmail'](_0x47d51c[_0x867e('0x17')])){_0x187336[_0x867e('0x18')]=_0x47d51c[_0x867e('0x17')];for(_0x4e8389=0x0;_0x4e8389<_0x4e23af['length'];_0x4e8389++){if(_0x4e23af[_0x4e8389][_0x867e('0x19')]===_0x47d51c[_0x867e('0x17')]&&!_0x4e23af[_0x4e8389][_0x867e('0x1a')]){_0x5e8e1b=!![];logger['info']('['+[_0x4dcfb3[_0x867e('0x1b')]()]+_0x867e('0x1c')+_0x4e23af[_0x4e8389][_0x867e('0x1d')]+'!');_0x187336[_0x867e('0x1e')]=_0x4e23af[_0x4e8389][_0x867e('0x1d')];}}}}if(!_0x5e8e1b){logger[_0x867e('0x1f')]('['+[_0x4dcfb3[_0x867e('0x1b')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x187336[_0x867e('0x18')]=_0x225ab8[_0x867e('0x20')];for(_0x4e8389=0x0;_0x4e8389<_0x4e23af[_0x867e('0x21')];_0x4e8389++){if(_0x4e23af[_0x4e8389][_0x867e('0x19')]===_0x225ab8[_0x867e('0x20')]){_0x187336[_0x867e('0x1e')]=_0x4e23af[_0x4e8389]['systemuserid'];}}}_0x384eaf(_0x187336);})[_0x867e('0xf')](function(_0x32ac3f){_0x5dbda4(_0x32ac3f[_0x867e('0x11')]);});});}function createEndUser(_0x45c088,_0x274e99,_0x392ee2,_0x11d42b,_0x3b2d3b,_0x155ba4){return new BPromise(function(_0x16bf47,_0x182f36){return getAuthToken(_0x274e99,_0x392ee2,_0x155ba4)[_0x867e('0xd')](function(_0x345ef0){var _0x467e9c=_0x155ba4[_0x867e('0x22')]()===_0x867e('0x23')?_0x3b2d3b[_0x867e('0x24')]:_0x3b2d3b[_0x867e('0x25')];var _0xb033a4={'method':_0x867e('0x9'),'uri':_0x11d42b+_0x867e('0x26'),'body':{'telephone1':_0x467e9c,'fullname':_0x467e9c,'firstname':_0x467e9c,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x867e('0x27')+_0x45c088[_0x867e('0x1e')]+')'},'headers':{'Authorization':_0x867e('0x14')+_0x345ef0,'OData-Version':_0x867e('0x28')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0xb033a4);})[_0x867e('0xd')](function(_0x5b66df){var _0x346526=_0x5b66df['headers'][_0x867e('0x29')];var _0x4061ec=_0x346526['substring'](_0x346526[_0x867e('0x2a')]('(')+0x1,_0x346526[_0x867e('0x2a')](')'));_0x45c088[_0x867e('0x2b')]=_0x4061ec;_0x16bf47(_0x45c088);})['catch'](function(_0x1eb4fe){_0x182f36(_0x1eb4fe['message']);});});}function getEndUser(_0x5b72f6,_0x38e931,_0x12c4bb,_0x56c68d,_0x8f429b,_0x35a4f7){return new BPromise(function(_0xbec786,_0x227809){var _0x2d2cc6=_0x35a4f7[_0x867e('0x22')]()===_0x867e('0x23')?_0x8f429b[_0x867e('0x24')]:_0x8f429b[_0x867e('0x25')];return getAuthToken(_0x38e931,_0x12c4bb,_0x35a4f7)['then'](function(_0x16f8ae){var _0x4342bd={'method':'GET','uri':_0x56c68d+_0x867e('0x2c')+_0x2d2cc6['replace']('+',_0x867e('0x2d'))+'\x27','headers':{'Authorization':'Bearer\x20'+_0x16f8ae,'If-None-Match':null,'OData-Version':_0x867e('0x28')},'json':!![]};return rp(_0x4342bd);})['then'](function(_0x173640){var _0x295f76=null;if(_0x173640){var _0x4cf6f5=_0x173640[_0x867e('0x15')];var _0x4d59b8=![];for(_0x295f76=0x0;_0x295f76<_0x4cf6f5[_0x867e('0x21')];_0x295f76++){if(_0x4cf6f5[_0x295f76][_0x867e('0x2e')]===_0x2d2cc6){_0x4d59b8=!![];_0x5b72f6[_0x867e('0x2b')]=_0x4cf6f5[_0x295f76][_0x867e('0x2f')];}}if(_0x4d59b8){_0xbec786(_0x5b72f6);}else{return createEndUser(_0x5b72f6,_0x38e931,_0x12c4bb,_0x56c68d,_0x8f429b,_0x35a4f7)[_0x867e('0xd')](function(_0x143a38){logger[_0x867e('0x1f')]('['+[_0x35a4f7[_0x867e('0x1b')]()]+_0x867e('0x30'),_0x143a38[_0x867e('0x2b')]);_0xbec786(_0x143a38);});}}else{return createEndUser(_0x5b72f6,_0x38e931,_0x12c4bb,_0x56c68d,_0x8f429b,_0x35a4f7)[_0x867e('0xd')](function(_0x2d0619){logger[_0x867e('0x1f')]('['+[_0x35a4f7[_0x867e('0x1b')]()]+_0x867e('0x31'),_0x2d0619[_0x867e('0x2b')]);_0xbec786(_0x2d0619);});}});});}function getCustomFields(_0x47548f,_0x51122f,_0x53bf6f){var _0x7e4e71={};if(_0x47548f[_0x867e('0x21')]>0x0){_[_0x867e('0x32')](_0x47548f,function(_0x8c084f){if(_[_0x867e('0x33')]([_0x867e('0x34'),_0x867e('0x35')],_0x8c084f[_0x867e('0x36')])&&_0x8c084f[_0x867e('0x37')]&&!_0x8c084f['customField']){var _0x20f05a=_0x8c084f[_0x867e('0x38')]['toLowerCase']();var _0x1a6514=_0x20f05a[_0x867e('0x39')](0x0,_0x20f05a['indexOf']('_'));var _0x6ebc21=_0x20f05a['substring'](_0x20f05a[_0x867e('0x3a')]('_')+0x1);if(_0x1a6514===_0x53bf6f){_0x7e4e71[_0x6ebc21]=_0x8c084f[_0x867e('0x3b')];}}});}return _0x7e4e71;}function getTicket(_0x21792b,_0xcc127c,_0x3c4f19,_0x57fbcb,_0x37172c,_0x1db66d,_0x5a4c02){return new BPromise(function(_0x4e808e,_0x3db321){var _0x261606;return getAuthToken(_0xcc127c,_0x3c4f19,_0x5a4c02)[_0x867e('0xd')](function(_0x5c2b7a){if(_0x1db66d['ticketType']===_0x867e('0x3c')){_0x261606={'method':'POST','uri':_0x57fbcb+'incidents','body':Object['assign']({},{'title':intUtil[_0x867e('0x3d')](_0x1db66d[_0x867e('0x3e')],_0x37172c,'\x20'),'description':intUtil[_0x867e('0x3d')](_0x1db66d[_0x867e('0x3f')],_0x37172c,'\x0a'),'customerid_contact@odata.bind':_0x867e('0x40')+_0x21792b[_0x867e('0x2b')]+')','ownerid@odata.bind':_0x867e('0x27')+_0x21792b[_0x867e('0x1e')]+')','caseorigincode':'1'},getCustomFields(_0x1db66d['Fields'],_0x37172c,_0x1db66d[_0x867e('0x41')])),'headers':{'Authorization':'Bearer\x20'+_0x5c2b7a,'OData-Version':_0x867e('0x28')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x1db66d[_0x867e('0x41')]==='phonecall'){_0x261606={'method':_0x867e('0x9'),'uri':_0x57fbcb+_0x867e('0x42'),'body':Object[_0x867e('0x43')]({},{'subject':intUtil[_0x867e('0x3d')](_0x1db66d[_0x867e('0x3e')],_0x37172c,'\x20'),'phonenumber':String(_0x37172c[_0x867e('0x25')]),'description':intUtil[_0x867e('0x3d')](_0x1db66d[_0x867e('0x3f')],_0x37172c,'\x0a'),'regardingobjectid_contact@odata.bind':_0x867e('0x40')+_0x21792b[_0x867e('0x2b')]+')','ownerid@odata.bind':'/systemusers('+_0x21792b[_0x867e('0x1e')]+')','directioncode':_0x21792b['callDirection']===_0x867e('0x44')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x867e('0x27')+_0x21792b[_0x867e('0x1e')]+')','participationtypemask':_0x21792b[_0x867e('0x45')]===_0x867e('0x44')?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x21792b['enduserId']+')','participationtypemask':_0x21792b['callDirection']===_0x867e('0x44')?0x1:0x2}]},getCustomFields(_0x1db66d[_0x867e('0x46')],_0x37172c,_0x1db66d[_0x867e('0x41')])),'headers':{'Authorization':_0x867e('0x14')+_0x5c2b7a,'OData-Version':_0x867e('0x28')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x261606);})[_0x867e('0xd')](function(_0x48c75d){var _0x409dec=_0x48c75d[_0x867e('0x47')][_0x867e('0x29')];var _0x8c42e8=_0x409dec[_0x867e('0x39')](_0x409dec[_0x867e('0x2a')]('(')+0x1,_0x409dec['lastIndexOf'](')'));_0x21792b[_0x867e('0x48')]=_0x8c42e8;_0x4e808e(_0x21792b);})[_0x867e('0xf')](function(_0x56a7b5){_0x3db321(_0x56a7b5[_0x867e('0x11')]);});});}function emit(_0x4a9a01,_0x2e2cd7,_0x18f9c1,_0x3afe52){var _0x5ccfad={'uri':util[_0x867e('0x49')](_0x867e('0x4a'),_0x4a9a01,_0x18f9c1,_0x3afe52)};io['to'](util[_0x867e('0x49')](_0x867e('0x4b'),_0x2e2cd7))[_0x867e('0x4c')](_0x867e('0x4d'),_0x5ccfad);}exports['cs']=function(_0x51f27a,_0xc4bbc6,_0x164f58,_0x3d1db5,_0xeb9d53,_0x5b8513,_0x390540,_0x33d87f){var _0x1958ed={};_0x5b8513[_0x867e('0xa')]=intUtil['stripTrailingSlash'](_0x5b8513[_0x867e('0xa')]);_0x5b8513[_0x867e('0x4e')]=intUtil[_0x867e('0x4f')](_0x5b8513[_0x867e('0x4e')]);_0x1958ed[_0x867e('0x45')]=_0x33d87f==='queue'||_0x33d87f===_0x867e('0x50')?_0x867e('0x44'):_0x867e('0x23');var _0x443b09=util[_0x867e('0x49')](_0x867e('0x51'),_0x5b8513[_0x867e('0xa')]);var _0x582d24=util[_0x867e('0x49')]('https://login.microsoftonline.com/%s/oauth2/token',_0x5b8513['tenantId']);var _0x39086d=util[_0x867e('0x49')](_0x867e('0x52'),_0x5b8513['serverUrl'],_0xc4bbc6[_0x867e('0x53')],md5(_0xc4bbc6[_0x867e('0x53')]));if(_0xeb9d53&&_0xeb9d53[_0x867e('0x54')]){logger[_0x867e('0x1f')](_0x867e('0x55'),'Recording\x20is\x20enabled!');_0xc4bbc6[_0x867e('0x56')]=_0x39086d;}else if(_0x390540&&_0x390540['recordingFormat']&&_0x390540[_0x867e('0x57')]!==_0x867e('0x58')){logger[_0x867e('0x1f')](_0x867e('0x59'),_0x867e('0x5a'));_0xc4bbc6[_0x867e('0x56')]=_0x39086d;}else{_0xc4bbc6[_0x867e('0x56')]='';}return getUser(_0x1958ed,_0x5b8513,_0x3d1db5,_0x582d24,_0x443b09,_0x33d87f)[_0x867e('0xd')](function(_0x47a342){logger[_0x867e('0x1f')]('['+_0x33d87f[_0x867e('0x1b')]()+_0x867e('0x5b'),_0x47a342[_0x867e('0x1e')]);logger['info']('['+_0x33d87f[_0x867e('0x1b')]()+_0x867e('0x5c'),_0x47a342[_0x867e('0x18')]);return getEndUser(_0x47a342,_0x5b8513,_0x582d24,_0x443b09,_0xc4bbc6,_0x33d87f);})[_0x867e('0xd')](function(_0x334ee3){logger[_0x867e('0x1f')]('['+_0x33d87f[_0x867e('0x1b')]()+_0x867e('0x5d'),_0x334ee3['enduserId']);logger[_0x867e('0x1f')]('['+_0x33d87f['toUpperCase']()+']\x20The\x20Enduser\x20phone\x20is:',_0xc4bbc6[_0x867e('0x25')]);return getTicket(_0x334ee3,_0x5b8513,_0x582d24,_0x443b09,_0xc4bbc6,_0x164f58,_0x33d87f);})[_0x867e('0xd')](function(_0x585814){logger[_0x867e('0x1f')](util[_0x867e('0x49')]('['+_0x33d87f[_0x867e('0x1b')]()+_0x867e('0x5e'),_0x164f58[_0x867e('0x41')],_0x585814[_0x867e('0x48')]));logger[_0x867e('0x1f')](util[_0x867e('0x49')]('['+_0x33d87f[_0x867e('0x1b')]()+_0x867e('0x5f'),_0x33d87f));if(_0x33d87f!==_0x867e('0x50')){logger[_0x867e('0x1f')]('['+_0x33d87f[_0x867e('0x1b')]()+']',_0x867e('0x60'));emit(_0x5b8513['remoteUri'],_0x3d1db5['name'],_0x164f58['ticketType'],_0x585814[_0x867e('0x48')]);}})[_0x867e('0xf')](function(_0x37b619){logger[_0x867e('0x61')]('['+_0x33d87f[_0x867e('0x1b')]()+_0x867e('0x62'),util[_0x867e('0x63')](_0x37b619,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x85fb=['https://login.microsoftonline.com/%s/oauth2/token','tenantId','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','name',']\x20Error\x20running\x20Dynamics365\x20integration','bluebird','request-promise','util','./util','md5','ioredis','../../../../config/logger','redis','defaults','socket.io-emitter','POST','clientId','remoteUri','username','password','clientSecret','then','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','GET','Bearer\x20','4.0','value','isNil','validateEmail','userEmail','length','internalemailaddress','email',']\x20Agent\x20found\x20','userId','systemuserid','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','headers','odata-entityid','substring','lastIndexOf','enduserId','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','replace','%2b','telephone1','contactid','info',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','includes','picklist','type','nameField','customField','idField','indexOf','content','incident','incidents','getString','Subjects','Descriptions','/contacts(','/systemusers(','ticketType','phonecall','phonecalls','assign','callDirection','queue','Fields','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/'];(function(_0x46ab02,_0x46f430){var _0x39d9a4=function(_0x6ec26a){while(--_0x6ec26a){_0x46ab02['push'](_0x46ab02['shift']());}};_0x39d9a4(++_0x46f430);}(_0x85fb,0x146));var _0xb85f=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x85fb[_0x40a045];return _0x1a687c;};'use strict';var _=require('lodash');var BPromise=require(_0xb85f('0x0'));var rp=require(_0xb85f('0x1'));var util=require(_0xb85f('0x2'));var intUtil=require(_0xb85f('0x3'));var md5=require(_0xb85f('0x4'));var Redis=require(_0xb85f('0x5'));var logger=require(_0xb85f('0x6'))('dynamics365');var config=require('../../../../config/environment');config[_0xb85f('0x7')]=_[_0xb85f('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xb85f('0x9'))(new Redis(config['redis']));function getAuthToken(_0x19572e,_0x19e2ac,_0x80298b){var _0x202d9e={'method':_0xb85f('0xa'),'uri':_0x19e2ac,'form':{'client_id':_0x19572e[_0xb85f('0xb')],'resource':_0x19572e[_0xb85f('0xc')],'username':_0x19572e[_0xb85f('0xd')],'password':_0x19572e['password'],'grant_type':_0xb85f('0xe'),'client_secret':_0x19572e[_0xb85f('0xf')]},'json':!![]};return rp(_0x202d9e)[_0xb85f('0x10')](function(_0x3b89a0){return _0x3b89a0[_0xb85f('0x11')];})[_0xb85f('0x12')](function(_0x37d58a){logger[_0xb85f('0x13')]('['+[_0x80298b[_0xb85f('0x14')]()]+_0xb85f('0x15'));return _0x37d58a[_0xb85f('0x16')];});}function getUser(_0x444447,_0x1d08e3,_0x14ad4b,_0x36b089,_0x3cd417,_0x56e94a){return new BPromise(function(_0x5d84e8,_0x48893c){return getAuthToken(_0x1d08e3,_0x36b089,_0x56e94a)['then'](function(_0x4c1e34){var _0x5f10c4={'method':_0xb85f('0x17'),'uri':_0x3cd417+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0xb85f('0x18')+_0x4c1e34,'OData-Version':_0xb85f('0x19')},'json':!![]};return rp(_0x5f10c4);})[_0xb85f('0x10')](function(_0x47df0e){var _0x2dcee0=_0x47df0e[_0xb85f('0x1a')];var _0x1b8d8d=![];var _0x90d43a=null;if(!_[_0xb85f('0x1b')](_0x14ad4b)){if(intUtil[_0xb85f('0x1c')](_0x14ad4b['email'])){_0x444447[_0xb85f('0x1d')]=_0x14ad4b['email'];for(_0x90d43a=0x0;_0x90d43a<_0x2dcee0[_0xb85f('0x1e')];_0x90d43a++){if(_0x2dcee0[_0x90d43a][_0xb85f('0x1f')]===_0x14ad4b[_0xb85f('0x20')]&&!_0x2dcee0[_0x90d43a]['isdisabled']){_0x1b8d8d=!![];logger['info']('['+[_0x56e94a['toUpperCase']()]+_0xb85f('0x21')+_0x2dcee0[_0x90d43a]['systemuserid']+'!');_0x444447[_0xb85f('0x22')]=_0x2dcee0[_0x90d43a]['systemuserid'];}}}}if(!_0x1b8d8d){logger['info']('['+[_0x56e94a[_0xb85f('0x14')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x444447[_0xb85f('0x1d')]=_0x1d08e3[_0xb85f('0xd')];for(_0x90d43a=0x0;_0x90d43a<_0x2dcee0['length'];_0x90d43a++){if(_0x2dcee0[_0x90d43a][_0xb85f('0x1f')]===_0x1d08e3[_0xb85f('0xd')]){_0x444447[_0xb85f('0x22')]=_0x2dcee0[_0x90d43a][_0xb85f('0x23')];}}}_0x5d84e8(_0x444447);})['catch'](function(_0x2bdb40){_0x48893c(_0x2bdb40['message']);});});}function createEndUser(_0x3dae91,_0x375e04,_0x47e8a8,_0x4112a8,_0x4f6dee,_0x2948f3){return new BPromise(function(_0x1d6181,_0x44c141){return getAuthToken(_0x375e04,_0x47e8a8,_0x2948f3)[_0xb85f('0x10')](function(_0x42dd35){var _0x48e289=_0x2948f3[_0xb85f('0x24')]()===_0xb85f('0x25')?_0x4f6dee[_0xb85f('0x26')]:_0x4f6dee[_0xb85f('0x27')];var _0xbf721b={'method':_0xb85f('0xa'),'uri':_0x4112a8+_0xb85f('0x28'),'body':{'telephone1':_0x48e289,'fullname':_0x48e289,'firstname':_0x48e289,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x3dae91[_0xb85f('0x22')]+')'},'headers':{'Authorization':'Bearer\x20'+_0x42dd35,'OData-Version':_0xb85f('0x19')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0xbf721b);})['then'](function(_0x45bd23){var _0x4c5291=_0x45bd23[_0xb85f('0x29')][_0xb85f('0x2a')];var _0x5671a4=_0x4c5291[_0xb85f('0x2b')](_0x4c5291[_0xb85f('0x2c')]('(')+0x1,_0x4c5291['lastIndexOf'](')'));_0x3dae91[_0xb85f('0x2d')]=_0x5671a4;_0x1d6181(_0x3dae91);})[_0xb85f('0x12')](function(_0x24239a){_0x44c141(_0x24239a['message']);});});}function getEndUser(_0x18281e,_0x5846fa,_0x58eae7,_0x213226,_0x271c05,_0x215385){return new BPromise(function(_0xc4f560,_0x360575){var _0x4c5ff0=_0x215385['toLowerCase']()===_0xb85f('0x25')?_0x271c05[_0xb85f('0x26')]:_0x271c05['calleridnum'];return getAuthToken(_0x5846fa,_0x58eae7,_0x215385)[_0xb85f('0x10')](function(_0xe9692){var _0x580c5f={'method':'GET','uri':_0x213226+_0xb85f('0x2e')+_0x4c5ff0[_0xb85f('0x2f')]('+',_0xb85f('0x30'))+'\x27','headers':{'Authorization':_0xb85f('0x18')+_0xe9692,'If-None-Match':null,'OData-Version':_0xb85f('0x19')},'json':!![]};return rp(_0x580c5f);})['then'](function(_0x388ee5){var _0x3ee3ae=null;if(_0x388ee5){var _0x5e689e=_0x388ee5[_0xb85f('0x1a')];var _0x426f21=![];for(_0x3ee3ae=0x0;_0x3ee3ae<_0x5e689e[_0xb85f('0x1e')];_0x3ee3ae++){if(_0x5e689e[_0x3ee3ae][_0xb85f('0x31')]===_0x4c5ff0){_0x426f21=!![];_0x18281e[_0xb85f('0x2d')]=_0x5e689e[_0x3ee3ae][_0xb85f('0x32')];}}if(_0x426f21){_0xc4f560(_0x18281e);}else{return createEndUser(_0x18281e,_0x5846fa,_0x58eae7,_0x213226,_0x271c05,_0x215385)[_0xb85f('0x10')](function(_0x219673){logger[_0xb85f('0x33')]('['+[_0x215385[_0xb85f('0x14')]()]+_0xb85f('0x34'),_0x219673['enduserId']);_0xc4f560(_0x219673);});}}else{return createEndUser(_0x18281e,_0x5846fa,_0x58eae7,_0x213226,_0x271c05,_0x215385)['then'](function(_0x4e72f6){logger[_0xb85f('0x33')]('['+[_0x215385[_0xb85f('0x14')]()]+_0xb85f('0x35'),_0x4e72f6[_0xb85f('0x2d')]);_0xc4f560(_0x4e72f6);});}});});}function getCustomFields(_0x1cec1d,_0xc44c4e,_0x2250d8){var _0x127d9e={};if(_0x1cec1d[_0xb85f('0x1e')]>0x0){_['forEach'](_0x1cec1d,function(_0x2d3d28){if(_[_0xb85f('0x36')](['string',_0xb85f('0x37')],_0x2d3d28[_0xb85f('0x38')])&&_0x2d3d28[_0xb85f('0x39')]&&!_0x2d3d28[_0xb85f('0x3a')]){var _0x3b11b3=_0x2d3d28[_0xb85f('0x3b')][_0xb85f('0x24')]();var _0x1bcfd8=_0x3b11b3[_0xb85f('0x2b')](0x0,_0x3b11b3[_0xb85f('0x3c')]('_'));var _0x21fdfc=_0x3b11b3['substring'](_0x3b11b3[_0xb85f('0x3c')]('_')+0x1);if(_0x1bcfd8===_0x2250d8){_0x127d9e[_0x21fdfc]=_0x2d3d28[_0xb85f('0x3d')];}}});}return _0x127d9e;}function getTicket(_0x1242e8,_0x2aa907,_0x28335e,_0x3dc72c,_0xd9c616,_0x23e86a,_0x389dc8){return new BPromise(function(_0x1e55cf,_0x2d758b){var _0x287ae2;return getAuthToken(_0x2aa907,_0x28335e,_0x389dc8)[_0xb85f('0x10')](function(_0x55b1d8){if(_0x23e86a['ticketType']===_0xb85f('0x3e')){_0x287ae2={'method':_0xb85f('0xa'),'uri':_0x3dc72c+_0xb85f('0x3f'),'body':Object['assign']({},{'title':intUtil[_0xb85f('0x40')](_0x23e86a[_0xb85f('0x41')],_0xd9c616,'\x20'),'description':intUtil['getString'](_0x23e86a[_0xb85f('0x42')],_0xd9c616,'\x0a'),'customerid_contact@odata.bind':_0xb85f('0x43')+_0x1242e8['enduserId']+')','ownerid@odata.bind':_0xb85f('0x44')+_0x1242e8[_0xb85f('0x22')]+')','caseorigincode':'1'},getCustomFields(_0x23e86a['Fields'],_0xd9c616,_0x23e86a['ticketType'])),'headers':{'Authorization':_0xb85f('0x18')+_0x55b1d8,'OData-Version':_0xb85f('0x19')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x23e86a[_0xb85f('0x45')]===_0xb85f('0x46')){_0x287ae2={'method':_0xb85f('0xa'),'uri':_0x3dc72c+_0xb85f('0x47'),'body':Object[_0xb85f('0x48')]({},{'subject':intUtil[_0xb85f('0x40')](_0x23e86a[_0xb85f('0x41')],_0xd9c616,'\x20'),'phonenumber':String(_0xd9c616[_0xb85f('0x27')]),'description':intUtil[_0xb85f('0x40')](_0x23e86a[_0xb85f('0x42')],_0xd9c616,'\x0a'),'regardingobjectid_contact@odata.bind':_0xb85f('0x43')+_0x1242e8[_0xb85f('0x2d')]+')','ownerid@odata.bind':_0xb85f('0x44')+_0x1242e8['userId']+')','directioncode':_0x1242e8[_0xb85f('0x49')]===_0xb85f('0x4a')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0xb85f('0x44')+_0x1242e8[_0xb85f('0x22')]+')','participationtypemask':_0x1242e8[_0xb85f('0x49')]===_0xb85f('0x4a')?0x2:0x1},{'partyid_contact@odata.bind':_0xb85f('0x43')+_0x1242e8[_0xb85f('0x2d')]+')','participationtypemask':_0x1242e8[_0xb85f('0x49')]===_0xb85f('0x4a')?0x1:0x2}]},getCustomFields(_0x23e86a[_0xb85f('0x4b')],_0xd9c616,_0x23e86a[_0xb85f('0x45')])),'headers':{'Authorization':_0xb85f('0x18')+_0x55b1d8,'OData-Version':_0xb85f('0x19')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x287ae2);})[_0xb85f('0x10')](function(_0xa20fe8){var _0x34925d=_0xa20fe8[_0xb85f('0x29')][_0xb85f('0x2a')];var _0x2fde9b=_0x34925d[_0xb85f('0x2b')](_0x34925d[_0xb85f('0x2c')]('(')+0x1,_0x34925d[_0xb85f('0x2c')](')'));_0x1242e8[_0xb85f('0x4c')]=_0x2fde9b;_0x1e55cf(_0x1242e8);})[_0xb85f('0x12')](function(_0x5aae8e){_0x2d758b(_0x5aae8e[_0xb85f('0x16')]);});});}function emit(_0x501bd6,_0x520d79,_0x3f3912,_0x443095){var _0x426daa={'uri':util[_0xb85f('0x4d')](_0xb85f('0x4e'),_0x501bd6,_0x3f3912,_0x443095)};io['to'](util[_0xb85f('0x4d')](_0xb85f('0x4f'),_0x520d79))[_0xb85f('0x50')](_0xb85f('0x51'),_0x426daa);}exports['cs']=function(_0x513c78,_0x1b9e8b,_0x305876,_0x5c4fac,_0x1d19e0,_0x2c0758,_0x2eef44,_0x5bfb13){var _0xecd791={};_0x2c0758[_0xb85f('0xc')]=intUtil[_0xb85f('0x52')](_0x2c0758[_0xb85f('0xc')]);_0x2c0758['serverUrl']=intUtil[_0xb85f('0x52')](_0x2c0758[_0xb85f('0x53')]);_0xecd791['callDirection']=_0x5bfb13===_0xb85f('0x4a')||_0x5bfb13===_0xb85f('0x54')?_0xb85f('0x4a'):'outbound';var _0x535d5d=util[_0xb85f('0x4d')](_0xb85f('0x55'),_0x2c0758['remoteUri']);var _0x12fff=util[_0xb85f('0x4d')](_0xb85f('0x56'),_0x2c0758[_0xb85f('0x57')]);var _0x1074e7=util[_0xb85f('0x4d')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2c0758[_0xb85f('0x53')],_0x1b9e8b[_0xb85f('0x58')],md5(_0x1b9e8b['uniqueid']));if(_0x1d19e0&&_0x1d19e0[_0xb85f('0x59')]){logger[_0xb85f('0x33')](_0xb85f('0x5a'),_0xb85f('0x5b'));_0x1b9e8b['recordingURL']=_0x1074e7;}else if(_0x2eef44&&_0x2eef44[_0xb85f('0x5c')]&&_0x2eef44['recordingFormat']!==_0xb85f('0x5d')){logger[_0xb85f('0x33')](_0xb85f('0x5e'),_0xb85f('0x5b'));_0x1b9e8b['recordingURL']=_0x1074e7;}else{_0x1b9e8b[_0xb85f('0x5f')]='';}return getUser(_0xecd791,_0x2c0758,_0x5c4fac,_0x12fff,_0x535d5d,_0x5bfb13)['then'](function(_0x5a0bfe){logger[_0xb85f('0x33')]('['+_0x5bfb13[_0xb85f('0x14')]()+_0xb85f('0x60'),_0x5a0bfe[_0xb85f('0x22')]);logger[_0xb85f('0x33')]('['+_0x5bfb13[_0xb85f('0x14')]()+_0xb85f('0x61'),_0x5a0bfe[_0xb85f('0x1d')]);return getEndUser(_0x5a0bfe,_0x2c0758,_0x12fff,_0x535d5d,_0x1b9e8b,_0x5bfb13);})['then'](function(_0x358257){logger[_0xb85f('0x33')]('['+_0x5bfb13[_0xb85f('0x14')]()+_0xb85f('0x62'),_0x358257['enduserId']);logger['info']('['+_0x5bfb13[_0xb85f('0x14')]()+']\x20The\x20Enduser\x20phone\x20is:',_0x1b9e8b[_0xb85f('0x27')]);return getTicket(_0x358257,_0x2c0758,_0x12fff,_0x535d5d,_0x1b9e8b,_0x305876,_0x5bfb13);})['then'](function(_0x2ad5d0){logger[_0xb85f('0x33')](util[_0xb85f('0x4d')]('['+_0x5bfb13[_0xb85f('0x14')]()+_0xb85f('0x63'),_0x305876['ticketType'],_0x2ad5d0[_0xb85f('0x4c')]));logger[_0xb85f('0x33')](util[_0xb85f('0x4d')]('['+_0x5bfb13['toUpperCase']()+_0xb85f('0x64'),_0x5bfb13));if(_0x5bfb13!==_0xb85f('0x54')){logger[_0xb85f('0x33')]('['+_0x5bfb13[_0xb85f('0x14')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x2c0758['remoteUri'],_0x5c4fac[_0xb85f('0x65')],_0x305876[_0xb85f('0x45')],_0x2ad5d0['ticketId']);}})[_0xb85f('0x12')](function(_0x3508cc){logger[_0xb85f('0x13')]('['+_0x5bfb13[_0xb85f('0x14')]()+_0xb85f('0x66'),util['inspect'](_0x3508cc,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 5700e82..f41894f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3dc=['<br>','Tags','name','Fields','mapValues','custom_fields','value','format','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','length','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','debug','[HTTP]','stringify','GET','map','includes','string','type','nameField','customField','toLowerCase','toString','idField','push','content','variable','variableName','Variable','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','%s/helpdesk/tickets/%d','catch','error','lastevent','toUpperCase','request-promise','md5','./util','../../../../config/environment','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','Caller\x20-\x20%s','calleridname','calleridnum','getString','Descriptions'];(function(_0x58b8b6,_0x5e6a8a){var _0x45101c=function(_0x33ef20){while(--_0x33ef20){_0x58b8b6['push'](_0x58b8b6['shift']());}};_0x45101c(++_0x5e6a8a);}(_0xd3dc,0x161));var _0xcd3d=function(_0x388ba1,_0x29c5e2){_0x388ba1=_0x388ba1-0x0;var _0x1cd8d4=_0xd3dc[_0x388ba1];return _0x1cd8d4;};'use strict';var _=require('lodash');var rp=require(_0xcd3d('0x0'));var md5=require(_0xcd3d('0x1'));var util=require('util');var Redis=require('ioredis');var intUtil=require(_0xcd3d('0x2'));var config=require(_0xcd3d('0x3'));var logger=require('../../../../config/logger')(_0xcd3d('0x4'));config[_0xcd3d('0x5')]=_[_0xcd3d('0x6')](config['redis'],{'host':_0xcd3d('0x7'),'port':0x18eb});var io=require(_0xcd3d('0x8'))(new Redis(config[_0xcd3d('0x5')]));var headers={'Content-Type':_0xcd3d('0x9'),'Accept':_0xcd3d('0x9')};function emit(_0x41a537,_0x2821a7,_0x536c04){io['to'](_0x41a537)[_0xcd3d('0xa')](_0x2821a7,_0x536c04);}function getTicket(_0x140e3c,_0x493735,_0x432be1,_0x5d020a,_0x52ac30){logger[_0xcd3d('0xb')](_0xcd3d('0xc'));var _0x5b7f93=_[_0xcd3d('0xd')]({'responder_id':_0x493735['id'],'requester_id':_0x432be1['id'],'name':util['format'](_0xcd3d('0xe'),_0x52ac30[_0xcd3d('0xf')]),'phone':_0x52ac30[_0xcd3d('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xcd3d('0x11')](_0x5d020a['Subjects'],_0x52ac30,'\x20'),'description':intUtil[_0xcd3d('0x11')](_0x5d020a[_0xcd3d('0x12')],_0x52ac30,_0xcd3d('0x13')),'tags':getTags(_0x5d020a[_0xcd3d('0x14')],_0xcd3d('0x15'))},getCustomFields(_0x5d020a[_0xcd3d('0x16')],_0x52ac30));_0x5b7f93['custom_fields']=_[_0xcd3d('0x17')](_['keyBy'](_0x5b7f93[_0xcd3d('0x18')],'id'),_0xcd3d('0x19'));return request({'uri':util[_0xcd3d('0x1a')](_0xcd3d('0x1b'),_0x140e3c[_0xcd3d('0x1c')]),'method':_0xcd3d('0x1d'),'body':_0x5b7f93})[_0xcd3d('0x1e')](function(_0x203e4f){logger['info'](_0xcd3d('0x1f'));return _0x203e4f;});}function getUser(_0x2584cf,_0x538620){if(intUtil[_0xcd3d('0x20')](_0x538620)){return request({'uri':util['format'](_0xcd3d('0x21'),_0x2584cf[_0xcd3d('0x1c')]),'qs':{'email':_0x538620}})[_0xcd3d('0x1e')](function(_0x244a8e){if(_0x244a8e['length']){logger[_0xcd3d('0xb')](_0xcd3d('0x22'));return _[_0xcd3d('0x23')](_0x244a8e,function(_0x558dd8){return _0x558dd8[_0xcd3d('0x24')][_0xcd3d('0x25')]===_0x538620;});}else{logger[_0xcd3d('0xb')](_0xcd3d('0x26'));return request({'uri':util['format'](_0xcd3d('0x27'),_0x2584cf[_0xcd3d('0x1c')])})[_0xcd3d('0x1e')](function(_0x1dcfdc){logger[_0xcd3d('0xb')]('Admin\x20account\x20selected.');return _0x1dcfdc;});}});}else{logger[_0xcd3d('0xb')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xcd3d('0x1a')](_0xcd3d('0x27'),_0x2584cf[_0xcd3d('0x1c')])})['then'](function(_0x3604a1){logger[_0xcd3d('0xb')]('Admin\x20account\x20selected.');return _0x3604a1;});}}function getEndUser(_0x4126e4,_0x49bc27,_0x40e631){logger[_0xcd3d('0xb')](_0xcd3d('0x28'),_0x40e631);return request({'uri':util['format'](_0xcd3d('0x29'),_0x4126e4[_0xcd3d('0x1c')]),'qs':{'phone':_0x40e631}})[_0xcd3d('0x1e')](function(_0x4dd911){if(_0x4dd911[_0xcd3d('0x2a')]){logger[_0xcd3d('0xb')](_0xcd3d('0x2b'));return _[_0xcd3d('0x23')](_0x4dd911,{'phone':_0x40e631});}else{logger['info'](_0xcd3d('0x2c'));return request({'uri':util[_0xcd3d('0x1a')](_0xcd3d('0x29'),_0x4126e4[_0xcd3d('0x1c')]),'method':_0xcd3d('0x1d'),'body':{'name':_0x49bc27,'phone':_0x40e631}})[_0xcd3d('0x1e')](function(_0xd32a37){logger['info'](_0xcd3d('0x2d'));return _0xd32a37;});}});}function getAuth(_0x3a92a0){return util[_0xcd3d('0x1a')](_0xcd3d('0x2e'),new Buffer(_0x3a92a0[_0xcd3d('0x2f')]+':X')['toString']('base64'));}function request(_0x1b68b2){logger[_0xcd3d('0x30')](_0xcd3d('0x31'),JSON[_0xcd3d('0x32')](_0x1b68b2));return rp(_[_0xcd3d('0x6')](_0x1b68b2,{'method':_0xcd3d('0x33'),'headers':headers,'json':!![]}));}function getTags(_0xe9d37e,_0x20086f){var _0x41021c=[];if(_0xe9d37e&&_0xe9d37e[_0xcd3d('0x2a')]>0x0){_0x41021c=_[_0xcd3d('0x34')](_0xe9d37e,_0x20086f);}return _0x41021c;}function getCustomFields(_0x4003ae,_0x436f83){var _0x50caa7=[];var _0x3d5056={'custom_fields':[]};if(_0x4003ae[_0xcd3d('0x2a')]>0x0){_['forEach'](_0x4003ae,function(_0x5083cd){if(_[_0xcd3d('0x35')]([_0xcd3d('0x36'),'picklist'],_0x5083cd[_0xcd3d('0x37')])&&_0x5083cd[_0xcd3d('0x38')]&&!_0x5083cd[_0xcd3d('0x39')]){_0x3d5056[_0x5083cd[_0xcd3d('0x38')][_0xcd3d('0x3a')]()]=_0x5083cd['content'][_0xcd3d('0x3b')]();}else if(_[_0xcd3d('0x35')](['string','picklist'],_0x5083cd[_0xcd3d('0x37')])&&_0x5083cd[_0xcd3d('0x3c')]&&_0x5083cd[_0xcd3d('0x39')]){_0x3d5056[_0xcd3d('0x18')][_0xcd3d('0x3d')]({'id':_0x5083cd[_0xcd3d('0x3c')],'value':_0x5083cd[_0xcd3d('0x3e')][_0xcd3d('0x3b')]()});}else if(_0x5083cd[_0xcd3d('0x37')]===_0xcd3d('0x3f')&&_0x5083cd[_0xcd3d('0x40')]&&_0x5083cd[_0xcd3d('0x3c')]&&_0x5083cd[_0xcd3d('0x39')]){_0x436f83[_0x5083cd[_0xcd3d('0x40')]]&&_0x3d5056[_0xcd3d('0x18')][_0xcd3d('0x3d')]({'id':_0x5083cd[_0xcd3d('0x3c')],'value':_0x436f83[_0x5083cd[_0xcd3d('0x40')]][_0xcd3d('0x3b')]()});}else if(_0x5083cd[_0xcd3d('0x37')]==='customVariable'&&_0x5083cd[_0xcd3d('0x41')]&&_0x5083cd[_0xcd3d('0x41')][_0xcd3d('0x15')]&&_0x5083cd[_0xcd3d('0x3c')]&&_0x5083cd[_0xcd3d('0x39')]){_0x436f83[_0x5083cd[_0xcd3d('0x41')]['name'][_0xcd3d('0x3a')]()]&&_0x3d5056[_0xcd3d('0x18')][_0xcd3d('0x3d')]({'id':_0x5083cd[_0xcd3d('0x3c')],'value':_0x436f83[_0x5083cd[_0xcd3d('0x41')][_0xcd3d('0x15')][_0xcd3d('0x3a')]()]['toString']()});}});}return _0x3d5056;}exports[_0xcd3d('0x42')]=function(_0xd3186a,_0x2f6e45,_0x2d93ab,_0xbb89f5,_0x511ee9,_0x368917){var _0x21fcd4,_0x46f6c5;_0x368917[_0xcd3d('0x1c')]=intUtil['stripTrailingSlash'](_0x368917['remoteUri']);_0x368917[_0xcd3d('0x43')]=intUtil[_0xcd3d('0x44')](_0x368917[_0xcd3d('0x43')]);if(_0x511ee9&&_0x511ee9[_0xcd3d('0x45')]){logger['info'](_0xcd3d('0x46'),_0xcd3d('0x47'));_0x2f6e45[_0xcd3d('0x48')]=util['format'](_0xcd3d('0x49'),_0x368917['serverUrl'],_0x2f6e45[_0xcd3d('0x4a')],md5(_0x2f6e45[_0xcd3d('0x4a')]));}else{_0x2f6e45[_0xcd3d('0x48')]='';}headers[_0xcd3d('0x4b')]=getAuth(_0x368917);return getUser(_0x368917,_0xbb89f5[_0xcd3d('0x25')])[_0xcd3d('0x1e')](function(_0x591764){_0x21fcd4=_0x591764;logger[_0xcd3d('0xb')]('The\x20User\x20ID\x20is:',_0x21fcd4['id']);return getEndUser(_0x368917,_0x2f6e45[_0xcd3d('0xf')],_0x2f6e45[_0xcd3d('0x10')]);})[_0xcd3d('0x1e')](function(_0x3e4e1c){_0x46f6c5=_0x3e4e1c;logger[_0xcd3d('0xb')](_0xcd3d('0x4c'),_0x46f6c5['id']);return getTicket(_0x368917,_0x21fcd4,_0x46f6c5,_0x2d93ab,_0x2f6e45);})['then'](function(_0x2d2a8b){if(_0x2d2a8b&&_0x2d2a8b['id']){logger['info'](_0xcd3d('0x1f'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x2d2a8b['id']);logger[_0xcd3d('0xb')]('[QUEUE]',_0xcd3d('0x4d'));emit(util[_0xcd3d('0x1a')](_0xcd3d('0x4e'),_0xbb89f5['name']),_0xcd3d('0x4f'),{'uri':util[_0xcd3d('0x1a')]('%s/helpdesk/tickets/%d',_0x368917[_0xcd3d('0x1c')],_0x2d2a8b['id'])});}})['catch'](function(_0x2968d8){logger['error'](_0xcd3d('0x46'),JSON[_0xcd3d('0x32')](_0x2968d8));});};exports[_0xcd3d('0x50')]=function(_0x2e2f91,_0x1b92cc,_0x1f1f6e,_0x5cc195,_0x76638,_0x184754,_0x46e5d5){var _0x4763c1,_0x461ece;_0x184754[_0xcd3d('0x1c')]=intUtil['stripTrailingSlash'](_0x184754[_0xcd3d('0x1c')]);_0x184754['serverUrl']=intUtil[_0xcd3d('0x44')](_0x184754[_0xcd3d('0x43')]);if(_0x46e5d5&&_0x46e5d5[_0xcd3d('0x51')]&&_0x46e5d5[_0xcd3d('0x51')]!==_0xcd3d('0x52')){logger[_0xcd3d('0xb')](_0xcd3d('0x53'),_0xcd3d('0x47'));_0x1b92cc[_0xcd3d('0x48')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x184754[_0xcd3d('0x43')],_0x1b92cc[_0xcd3d('0x4a')],md5(_0x1b92cc[_0xcd3d('0x4a')]));}headers['Authorization']=getAuth(_0x184754);return getUser(_0x184754,_0x5cc195['email'])[_0xcd3d('0x1e')](function(_0xbd2319){_0x4763c1=_0xbd2319;logger[_0xcd3d('0xb')](_0xcd3d('0x54'),_0x4763c1['id']);return getEndUser(_0x184754,_0x1b92cc[_0xcd3d('0x55')],_0x1b92cc[_0xcd3d('0x56')]);})[_0xcd3d('0x1e')](function(_0xe75cc2){_0x461ece=_0xe75cc2;logger[_0xcd3d('0xb')]('The\x20Enduser\x20ID\x20is:',_0x461ece['id']);return getTicket(_0x184754,_0x4763c1,_0x461ece,_0x1f1f6e,_0x1b92cc);})[_0xcd3d('0x1e')](function(_0x4c21a5){if(_0x4c21a5&&_0x4c21a5['id']){logger[_0xcd3d('0xb')](_0xcd3d('0x1f'));logger[_0xcd3d('0xb')](_0xcd3d('0x57'),_0x4c21a5['id']);logger['info'](_0xcd3d('0x53'),_0xcd3d('0x4d'));emit(util[_0xcd3d('0x1a')](_0xcd3d('0x4e'),_0x5cc195['name']),'trigger:browser:url',{'uri':util['format'](_0xcd3d('0x58'),_0x184754[_0xcd3d('0x1c')],_0x4c21a5['id'])});}})[_0xcd3d('0x59')](function(_0x30a0ee){logger[_0xcd3d('0x5a')](_0xcd3d('0x53'),JSON[_0xcd3d('0x32')](_0x30a0ee));});};exports['unmanaged']=function(_0x3fc05c,_0x11329f,_0x502bf0,_0x4c0a74,_0x16424d,_0x2a8acb){var _0x2f360f,_0x47771f;_0x2a8acb['remoteUri']=intUtil[_0xcd3d('0x44')](_0x2a8acb[_0xcd3d('0x1c')]);_0x2a8acb[_0xcd3d('0x43')]=intUtil[_0xcd3d('0x44')](_0x2a8acb[_0xcd3d('0x43')]);if(_0x16424d&&_0x16424d[_0xcd3d('0x45')]){logger[_0xcd3d('0xb')]('['+_0x11329f[_0xcd3d('0x5b')][_0xcd3d('0x5c')]()+']',_0xcd3d('0x47'));_0x11329f[_0xcd3d('0x48')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2a8acb[_0xcd3d('0x43')],_0x11329f[_0xcd3d('0x4a')],md5(_0x11329f['uniqueid']));}else{_0x11329f[_0xcd3d('0x48')]='';}headers[_0xcd3d('0x4b')]=getAuth(_0x2a8acb);return getUser(_0x2a8acb,'')[_0xcd3d('0x1e')](function(_0x5b07c8){_0x2f360f=_0x5b07c8;logger['info'](_0xcd3d('0x54'),_0x2f360f['id']);return getEndUser(_0x2a8acb,_0x11329f[_0xcd3d('0xf')],_0x11329f[_0xcd3d('0x10')]);})['then'](function(_0x1a019a){_0x47771f=_0x1a019a;logger[_0xcd3d('0xb')]('The\x20Enduser\x20ID\x20is:',_0x47771f['id']);return getTicket(_0x2a8acb,_0x2f360f,_0x47771f,_0x502bf0,_0x11329f);})[_0xcd3d('0x1e')](function(_0xd8798f){if(_0xd8798f){logger[_0xcd3d('0xb')](_0xcd3d('0x1f'));logger['info']('The\x20Ticket\x20ID\x20is:',_0xd8798f['id']);}})[_0xcd3d('0x59')](function(_0x539035){logger[_0xcd3d('0x5a')]('['+_0x11329f[_0xcd3d('0x5b')][_0xcd3d('0x5c')]()+']',JSON[_0xcd3d('0x32')](_0x539035));});};
\ No newline at end of file
+var _0xf305=['forEach','string','picklist','type','nameField','toLowerCase','content','includes','customField','custom_fields','push','idField','variable','variableName','Variable','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','calleridname','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','catch','error','outbound','recordingFormat','none','[OUTBOUND]','uniqueid','The\x20User\x20ID\x20is:','destcalleridname','The\x20Ticket\x20ID\x20is:','trigger:browser:url','unmanaged','lastevent','toUpperCase','lodash','request-promise','md5','util','../../../../config/environment','../../../../config/logger','freshdesk','defaults','redis','application/json','info','Creating\x20new\x20ticket...','merge','Caller\x20-\x20%s','calleridnum','getString','Subjects','Tags','name','mapValues','keyBy','value','format','%s/api/v2/tickets','remoteUri','POST','Ticket\x20created!','validateEmail','%s/api/v2/agents','then','length','Agent\x20found!','find','email','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','apiKey','toString','debug','[HTTP]','stringify','map'];(function(_0x5a70a9,_0x18fbc9){var _0xe56623=function(_0x1e19f3){while(--_0x1e19f3){_0x5a70a9['push'](_0x5a70a9['shift']());}};_0xe56623(++_0x18fbc9);}(_0xf305,0x1e6));var _0x5f30=function(_0x888385,_0x9cdc66){_0x888385=_0x888385-0x0;var _0x22d5c2=_0xf305[_0x888385];return _0x22d5c2;};'use strict';var _=require(_0x5f30('0x0'));var rp=require(_0x5f30('0x1'));var md5=require(_0x5f30('0x2'));var util=require(_0x5f30('0x3'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x5f30('0x4'));var logger=require(_0x5f30('0x5'))(_0x5f30('0x6'));config['redis']=_[_0x5f30('0x7')](config[_0x5f30('0x8')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var headers={'Content-Type':_0x5f30('0x9'),'Accept':'application/json'};function emit(_0x2c7711,_0x18201a,_0x24d2d0){io['to'](_0x2c7711)['emit'](_0x18201a,_0x24d2d0);}function getTicket(_0x39ec49,_0x5f1ef3,_0x4044d5,_0x408a12,_0x45f5c0){logger[_0x5f30('0xa')](_0x5f30('0xb'));var _0x396504=_[_0x5f30('0xc')]({'responder_id':_0x5f1ef3['id'],'requester_id':_0x4044d5['id'],'name':util['format'](_0x5f30('0xd'),_0x45f5c0['calleridname']),'phone':_0x45f5c0[_0x5f30('0xe')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x5f30('0xf')](_0x408a12[_0x5f30('0x10')],_0x45f5c0,'\x20'),'description':intUtil['getString'](_0x408a12['Descriptions'],_0x45f5c0,'<br>'),'tags':getTags(_0x408a12[_0x5f30('0x11')],_0x5f30('0x12'))},getCustomFields(_0x408a12['Fields'],_0x45f5c0));_0x396504['custom_fields']=_[_0x5f30('0x13')](_[_0x5f30('0x14')](_0x396504['custom_fields'],'id'),_0x5f30('0x15'));return request({'uri':util[_0x5f30('0x16')](_0x5f30('0x17'),_0x39ec49[_0x5f30('0x18')]),'method':_0x5f30('0x19'),'body':_0x396504})['then'](function(_0x5a2aa1){logger[_0x5f30('0xa')](_0x5f30('0x1a'));return _0x5a2aa1;});}function getUser(_0x28d41d,_0x19826a){if(intUtil[_0x5f30('0x1b')](_0x19826a)){return request({'uri':util[_0x5f30('0x16')](_0x5f30('0x1c'),_0x28d41d[_0x5f30('0x18')]),'qs':{'email':_0x19826a}})[_0x5f30('0x1d')](function(_0x1ae6f4){if(_0x1ae6f4[_0x5f30('0x1e')]){logger['info'](_0x5f30('0x1f'));return _[_0x5f30('0x20')](_0x1ae6f4,function(_0x1cb8a2){return _0x1cb8a2['contact'][_0x5f30('0x21')]===_0x19826a;});}else{logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x5f30('0x16')](_0x5f30('0x22'),_0x28d41d['remoteUri'])})[_0x5f30('0x1d')](function(_0x2a3f09){logger[_0x5f30('0xa')](_0x5f30('0x23'));return _0x2a3f09;});}});}else{logger[_0x5f30('0xa')](_0x5f30('0x24'));return request({'uri':util[_0x5f30('0x16')]('%s/api/v2/agents/me',_0x28d41d[_0x5f30('0x18')])})[_0x5f30('0x1d')](function(_0x82905){logger['info'](_0x5f30('0x23'));return _0x82905;});}}function getEndUser(_0x2b7d60,_0x1b3a93,_0x4be412){logger[_0x5f30('0xa')](_0x5f30('0x25'),_0x4be412);return request({'uri':util[_0x5f30('0x16')]('%s/api/v2/contacts',_0x2b7d60[_0x5f30('0x18')]),'qs':{'phone':_0x4be412}})['then'](function(_0x348a4b){if(_0x348a4b['length']){logger[_0x5f30('0xa')]('Enduser\x20found!');return _[_0x5f30('0x20')](_0x348a4b,{'phone':_0x4be412});}else{logger[_0x5f30('0xa')](_0x5f30('0x26'));return request({'uri':util[_0x5f30('0x16')](_0x5f30('0x27'),_0x2b7d60['remoteUri']),'method':'POST','body':{'name':_0x1b3a93,'phone':_0x4be412}})[_0x5f30('0x1d')](function(_0x482a72){logger[_0x5f30('0xa')](_0x5f30('0x28'));return _0x482a72;});}});}function getAuth(_0x31e446){return util[_0x5f30('0x16')](_0x5f30('0x29'),new Buffer(_0x31e446[_0x5f30('0x2a')]+':X')[_0x5f30('0x2b')]('base64'));}function request(_0xa27c48){logger[_0x5f30('0x2c')](_0x5f30('0x2d'),JSON[_0x5f30('0x2e')](_0xa27c48));return rp(_[_0x5f30('0x7')](_0xa27c48,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x13cc93,_0x5152db){var _0xca2dc1=[];if(_0x13cc93&&_0x13cc93[_0x5f30('0x1e')]>0x0){_0xca2dc1=_[_0x5f30('0x2f')](_0x13cc93,_0x5152db);}return _0xca2dc1;}function getCustomFields(_0x3c4426,_0x1c0c84){var _0x4b373b=[];var _0x2c8faf={'custom_fields':[]};if(_0x3c4426['length']>0x0){_[_0x5f30('0x30')](_0x3c4426,function(_0x424c2d){if(_['includes']([_0x5f30('0x31'),_0x5f30('0x32')],_0x424c2d[_0x5f30('0x33')])&&_0x424c2d['nameField']&&!_0x424c2d['customField']){_0x2c8faf[_0x424c2d[_0x5f30('0x34')][_0x5f30('0x35')]()]=_0x424c2d[_0x5f30('0x36')]['toString']();}else if(_[_0x5f30('0x37')]([_0x5f30('0x31'),_0x5f30('0x32')],_0x424c2d[_0x5f30('0x33')])&&_0x424c2d['idField']&&_0x424c2d[_0x5f30('0x38')]){_0x2c8faf[_0x5f30('0x39')][_0x5f30('0x3a')]({'id':_0x424c2d[_0x5f30('0x3b')],'value':_0x424c2d['content'][_0x5f30('0x2b')]()});}else if(_0x424c2d[_0x5f30('0x33')]===_0x5f30('0x3c')&&_0x424c2d[_0x5f30('0x3d')]&&_0x424c2d[_0x5f30('0x3b')]&&_0x424c2d[_0x5f30('0x38')]){_0x1c0c84[_0x424c2d[_0x5f30('0x3d')]]&&_0x2c8faf[_0x5f30('0x39')][_0x5f30('0x3a')]({'id':_0x424c2d[_0x5f30('0x3b')],'value':_0x1c0c84[_0x424c2d[_0x5f30('0x3d')]][_0x5f30('0x2b')]()});}else if(_0x424c2d['type']==='customVariable'&&_0x424c2d[_0x5f30('0x3e')]&&_0x424c2d['Variable'][_0x5f30('0x12')]&&_0x424c2d[_0x5f30('0x3b')]&&_0x424c2d[_0x5f30('0x38')]){_0x1c0c84[_0x424c2d[_0x5f30('0x3e')]['name'][_0x5f30('0x35')]()]&&_0x2c8faf['custom_fields'][_0x5f30('0x3a')]({'id':_0x424c2d['idField'],'value':_0x1c0c84[_0x424c2d[_0x5f30('0x3e')][_0x5f30('0x12')][_0x5f30('0x35')]()][_0x5f30('0x2b')]()});}});}return _0x2c8faf;}exports[_0x5f30('0x3f')]=function(_0x4c1fb2,_0x32bc58,_0x588685,_0x47c948,_0x4bce68,_0x5c89c6){var _0x37d50f,_0x4380c7;_0x5c89c6[_0x5f30('0x18')]=intUtil[_0x5f30('0x40')](_0x5c89c6[_0x5f30('0x18')]);_0x5c89c6[_0x5f30('0x41')]=intUtil['stripTrailingSlash'](_0x5c89c6[_0x5f30('0x41')]);if(_0x4bce68&&_0x4bce68['monitor_format']){logger[_0x5f30('0xa')](_0x5f30('0x42'),_0x5f30('0x43'));_0x32bc58[_0x5f30('0x44')]=util[_0x5f30('0x16')](_0x5f30('0x45'),_0x5c89c6[_0x5f30('0x41')],_0x32bc58['uniqueid'],md5(_0x32bc58['uniqueid']));}else{_0x32bc58[_0x5f30('0x44')]='';}headers[_0x5f30('0x46')]=getAuth(_0x5c89c6);return getUser(_0x5c89c6,_0x47c948[_0x5f30('0x21')])[_0x5f30('0x1d')](function(_0x4ee5c2){_0x37d50f=_0x4ee5c2;logger[_0x5f30('0xa')]('The\x20User\x20ID\x20is:',_0x37d50f['id']);return getEndUser(_0x5c89c6,_0x32bc58[_0x5f30('0x47')],_0x32bc58[_0x5f30('0xe')]);})[_0x5f30('0x1d')](function(_0x25ed21){_0x4380c7=_0x25ed21;logger[_0x5f30('0xa')](_0x5f30('0x48'),_0x4380c7['id']);return getTicket(_0x5c89c6,_0x37d50f,_0x4380c7,_0x588685,_0x32bc58);})['then'](function(_0x59419d){if(_0x59419d&&_0x59419d['id']){logger[_0x5f30('0xa')](_0x5f30('0x1a'));logger[_0x5f30('0xa')]('The\x20Ticket\x20ID\x20is:',_0x59419d['id']);logger[_0x5f30('0xa')](_0x5f30('0x42'),_0x5f30('0x49'));emit(util['format'](_0x5f30('0x4a'),_0x47c948[_0x5f30('0x12')]),'trigger:browser:url',{'uri':util[_0x5f30('0x16')]('%s/helpdesk/tickets/%d',_0x5c89c6[_0x5f30('0x18')],_0x59419d['id'])});}})[_0x5f30('0x4b')](function(_0xd95613){logger[_0x5f30('0x4c')]('[QUEUE]',JSON['stringify'](_0xd95613));});};exports[_0x5f30('0x4d')]=function(_0x4fd924,_0x476795,_0x378725,_0x1660a0,_0x532ffe,_0x307fc1,_0x3223c6){var _0x11896c,_0x37323f;_0x307fc1[_0x5f30('0x18')]=intUtil[_0x5f30('0x40')](_0x307fc1['remoteUri']);_0x307fc1['serverUrl']=intUtil['stripTrailingSlash'](_0x307fc1[_0x5f30('0x41')]);if(_0x3223c6&&_0x3223c6[_0x5f30('0x4e')]&&_0x3223c6[_0x5f30('0x4e')]!==_0x5f30('0x4f')){logger['info'](_0x5f30('0x50'),_0x5f30('0x43'));_0x476795[_0x5f30('0x44')]=util[_0x5f30('0x16')](_0x5f30('0x45'),_0x307fc1['serverUrl'],_0x476795[_0x5f30('0x51')],md5(_0x476795[_0x5f30('0x51')]));}headers[_0x5f30('0x46')]=getAuth(_0x307fc1);return getUser(_0x307fc1,_0x1660a0[_0x5f30('0x21')])[_0x5f30('0x1d')](function(_0x47b93c){_0x11896c=_0x47b93c;logger[_0x5f30('0xa')](_0x5f30('0x52'),_0x11896c['id']);return getEndUser(_0x307fc1,_0x476795[_0x5f30('0x53')],_0x476795['destcalleridnum']);})[_0x5f30('0x1d')](function(_0x5f5b07){_0x37323f=_0x5f5b07;logger[_0x5f30('0xa')](_0x5f30('0x48'),_0x37323f['id']);return getTicket(_0x307fc1,_0x11896c,_0x37323f,_0x378725,_0x476795);})[_0x5f30('0x1d')](function(_0x12bbc9){if(_0x12bbc9&&_0x12bbc9['id']){logger[_0x5f30('0xa')](_0x5f30('0x1a'));logger[_0x5f30('0xa')](_0x5f30('0x54'),_0x12bbc9['id']);logger[_0x5f30('0xa')](_0x5f30('0x50'),_0x5f30('0x49'));emit(util[_0x5f30('0x16')](_0x5f30('0x4a'),_0x1660a0[_0x5f30('0x12')]),_0x5f30('0x55'),{'uri':util[_0x5f30('0x16')]('%s/helpdesk/tickets/%d',_0x307fc1[_0x5f30('0x18')],_0x12bbc9['id'])});}})[_0x5f30('0x4b')](function(_0x57af33){logger[_0x5f30('0x4c')](_0x5f30('0x50'),JSON[_0x5f30('0x2e')](_0x57af33));});};exports[_0x5f30('0x56')]=function(_0x4d1d4a,_0x1534f1,_0x1a16ac,_0x10a9f1,_0x466d8c,_0x39adce){var _0x3a6971,_0x55cc0c;_0x39adce[_0x5f30('0x18')]=intUtil['stripTrailingSlash'](_0x39adce[_0x5f30('0x18')]);_0x39adce[_0x5f30('0x41')]=intUtil[_0x5f30('0x40')](_0x39adce['serverUrl']);if(_0x466d8c&&_0x466d8c['monitor_format']){logger[_0x5f30('0xa')]('['+_0x1534f1[_0x5f30('0x57')][_0x5f30('0x58')]()+']','Recording\x20is\x20enabled!');_0x1534f1[_0x5f30('0x44')]=util[_0x5f30('0x16')](_0x5f30('0x45'),_0x39adce['serverUrl'],_0x1534f1[_0x5f30('0x51')],md5(_0x1534f1[_0x5f30('0x51')]));}else{_0x1534f1[_0x5f30('0x44')]='';}headers[_0x5f30('0x46')]=getAuth(_0x39adce);return getUser(_0x39adce,'')[_0x5f30('0x1d')](function(_0xd85f86){_0x3a6971=_0xd85f86;logger[_0x5f30('0xa')]('The\x20User\x20ID\x20is:',_0x3a6971['id']);return getEndUser(_0x39adce,_0x1534f1['calleridname'],_0x1534f1['calleridnum']);})['then'](function(_0x25f895){_0x55cc0c=_0x25f895;logger['info'](_0x5f30('0x48'),_0x55cc0c['id']);return getTicket(_0x39adce,_0x3a6971,_0x55cc0c,_0x1a16ac,_0x1534f1);})[_0x5f30('0x1d')](function(_0x2a1b7f){if(_0x2a1b7f){logger[_0x5f30('0xa')](_0x5f30('0x1a'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x2a1b7f['id']);}})[_0x5f30('0x4b')](function(_0x3cf0d8){logger['error']('['+_0x1534f1['lastevent'][_0x5f30('0x58')]()+']',JSON[_0x5f30('0x2e')](_0x3cf0d8));});};
\ No newline at end of file
index c5a06ff..376b564 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d9c=['/api/lookup?q=','&f=','contacts','format','contactNumber','mobile_number','endUserId','Contact\x20found\x20work_number:','Contact\x20created:','catch','POST','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','/api/tasks','getString','Subjects','Contact','YYYY-MM-DDTHH:mm:ss','add','task','Task\x20created:','ticketId','user:%s','emit','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','adminEmail','username','toLowerCase','outbound','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','util','moment','bluebird','ioredis','../../../../config/environment','../../../../config/logger','freshsales','defaults','redis','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminId','Requested\x20Resource\x20not\x20Found','error','message','Getting\x20user\x20list','Getting\x20user\x20with\x20email','userEmail','agentEmail','userId','User\x20found:','toUpperCase'];(function(_0x93e6a1,_0x11e83d){var _0x37a194=function(_0x40144b){while(--_0x40144b){_0x93e6a1['push'](_0x93e6a1['shift']());}};_0x37a194(++_0x11e83d);}(_0x4d9c,0x79));var _0xc4d9=function(_0x5a7fc5,_0x4fd801){_0x5a7fc5=_0x5a7fc5-0x0;var _0x5f7d4b=_0x4d9c[_0x5a7fc5];return _0x5f7d4b;};'use strict';var _=require(_0xc4d9('0x0'));var rp=require(_0xc4d9('0x1'));var md5=require('md5');var util=require(_0xc4d9('0x2'));var moment=require(_0xc4d9('0x3'));var Promise=require(_0xc4d9('0x4'));var Redis=require(_0xc4d9('0x5'));var intUtil=require('./util');var config=require(_0xc4d9('0x6'));var logger=require(_0xc4d9('0x7'))(_0xc4d9('0x8'));config['redis']=_[_0xc4d9('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xc4d9('0xa')]));function getAdminId(_0x75b2cc,_0x1ee999,_0x55d6f3,_0x3c88e8){return new Promise(function(_0x2baede,_0x160ce8){var _0x649b2a=![];var _0x5640cd={'method':_0xc4d9('0xb'),'uri':_0x3c88e8+_0xc4d9('0xc'),'json':!![]};_0x5640cd[_0xc4d9('0xd')]=_0x55d6f3;logger[_0xc4d9('0xe')](_0xc4d9('0xf'));return rp(_0x5640cd)[_0xc4d9('0x10')](function(_0x237af6){if(_0x237af6){var _0x1c8ba6=_0x237af6[_0xc4d9('0x11')];var _0x82e9ad=null;for(_0x82e9ad=0x0;_0x82e9ad<_0x1c8ba6[_0xc4d9('0x12')];_0x82e9ad++){if(_0x1c8ba6[_0x82e9ad][_0xc4d9('0x13')]===_0x75b2cc['adminEmail']){_0x75b2cc[_0xc4d9('0x14')]=_0x1c8ba6[_0x82e9ad]['id'];_0x649b2a=!![];}}if(_0x649b2a){logger['info']('Admin\x20found:',_0x75b2cc['adminId']);_0x2baede(_0x75b2cc);}else{_0x160ce8({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x160ce8({'statusCode':0x194,'message':_0xc4d9('0x15')});}})['catch'](function(_0x2b82a8){logger[_0xc4d9('0x16')]('['+[_0x1ee999['toUpperCase']()]+']',_0x2b82a8[_0xc4d9('0x17')]);_0x160ce8(_0x2b82a8);});});}function getUser(_0x204b82,_0x2385fb,_0x17a8aa){return function(_0x53446a){return new Promise(function(_0x23b5b4,_0x364553){var _0x44f55c={'method':_0xc4d9('0xb'),'uri':_0x17a8aa+_0xc4d9('0xc'),'json':!![]};_0x44f55c[_0xc4d9('0xd')]=_0x2385fb;logger[_0xc4d9('0xe')](_0xc4d9('0x18'));return rp(_0x44f55c)[_0xc4d9('0x10')](function(_0x453ac1){if(_0x453ac1){var _0x2c07bf=_0x453ac1[_0xc4d9('0x11')];var _0x24c7ff=![];var _0x31a6fb=null;if(_0x53446a['agentEmail']!==null){logger[_0xc4d9('0xe')](_0xc4d9('0x19'),_0x53446a['agentEmail']);_0x53446a[_0xc4d9('0x1a')]=_0x53446a[_0xc4d9('0x1b')];for(_0x31a6fb=0x0;_0x31a6fb<_0x2c07bf['length'];_0x31a6fb++){if(_0x2c07bf[_0x31a6fb]['email']===_0x53446a[_0xc4d9('0x1b')]){_0x24c7ff=!![];_0x53446a[_0xc4d9('0x1c')]=_0x2c07bf[_0x31a6fb]['id'];logger[_0xc4d9('0xe')](_0xc4d9('0x1d'),_0x53446a[_0xc4d9('0x1c')]);}}}if(!_0x24c7ff){logger[_0xc4d9('0xe')]('Admin\x20selected');_0x53446a[_0xc4d9('0x1a')]=_0x53446a['adminEmail'];_0x53446a['userId']=_0x53446a['adminId'];_0x24c7ff=!![];}if(_0x24c7ff){_0x23b5b4(_0x53446a);}else{_0x364553({'statusCode':0x194,'message':_0xc4d9('0x15')});}}else{_0x364553({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0x56a81d){logger[_0xc4d9('0x16')]('['+[_0x204b82[_0xc4d9('0x1e')]()]+']',_0x56a81d[_0xc4d9('0x17')]);_0x364553(_0x56a81d);});});};}function searchContact(_0x3cca5d,_0x4c0d12,_0x8ed810,_0x3cd747){return new Promise(function(_0x244271,_0x39b37f){var _0x30b313={'method':'GET','headers':_0x4c0d12,'uri':_0x3cca5d+_0xc4d9('0x1f')+_0x3cd747+_0xc4d9('0x20')+_0x8ed810+'&entities=contact','json':!![]};rp(_0x30b313)[_0xc4d9('0x10')](function(_0x7e1020){var _0x5d3866=_['find'](_0x7e1020[_0xc4d9('0x21')][_0xc4d9('0x21')],[_0x8ed810,_0x3cd747]);_0x244271(_0x5d3866);})['catch'](function(_0x2332e8){_0x39b37f(_0x2332e8);});});}function getEndUser(_0x3bb365,_0x1f6ca6,_0x1a5cc5){return function(_0x7fb22d){return new Promise(function(_0x5f5186,_0x11a638){logger[_0xc4d9('0xe')](util[_0xc4d9('0x22')]('Searching\x20contact\x20with\x20phone\x20%s',_0x7fb22d[_0xc4d9('0x23')]));searchContact(_0x1a5cc5,_0x1f6ca6,_0xc4d9('0x24'),_0x7fb22d[_0xc4d9('0x23')])[_0xc4d9('0x10')](function(_0xe94f13){if(_0xe94f13){_0x7fb22d['endUserId']=_0xe94f13['id'];logger['info']('Contact\x20found\x20mobile_number:',_0x7fb22d[_0xc4d9('0x25')]);return _0x5f5186(_0x7fb22d);}searchContact(_0x1a5cc5,_0x1f6ca6,'work_number',_0x7fb22d[_0xc4d9('0x23')])['then'](function(_0x45ce57){if(_0x45ce57){_0x7fb22d[_0xc4d9('0x25')]=_0x45ce57['id'];logger[_0xc4d9('0xe')](_0xc4d9('0x26'),_0x7fb22d[_0xc4d9('0x25')]);return _0x5f5186(_0x7fb22d);}createEndUser(_0x7fb22d,_0x3bb365,_0x1f6ca6,_0x1a5cc5)[_0xc4d9('0x10')](function(_0x1baafc){logger[_0xc4d9('0xe')](_0xc4d9('0x27'),_0x1baafc[_0xc4d9('0x25')]);return _0x5f5186(_0x1baafc);});});})[_0xc4d9('0x28')](function(_0x2d8ca1){_0x11a638(_0x2d8ca1);});});};}function createEndUser(_0x307754,_0x342fca,_0x57b878,_0x19f77f){return new Promise(function(_0x27ad7f,_0x3b9585){var _0x5e0355=moment();var _0xea21dd={'method':_0xc4d9('0x29'),'uri':_0x19f77f+'/api/contacts','body':{'contact':{'last_name':_0x307754[_0xc4d9('0x23')],'work_number':_0x307754['contactNumber'],'mobile_number':_0x307754[_0xc4d9('0x23')],'owner_id':_0x307754[_0xc4d9('0x1c')],'created_at':_0x5e0355['format']('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0xea21dd[_0xc4d9('0xd')]=_0x57b878;logger[_0xc4d9('0xe')](_0xc4d9('0x2a'));return rp(_0xea21dd)[_0xc4d9('0x10')](function(_0xb02f8c){_0x307754[_0xc4d9('0x25')]=_0xb02f8c[_0xc4d9('0x2b')]['id'];_0x27ad7f(_0x307754);})['catch'](function(_0x2db568){logger['error']('['+[_0x342fca['toUpperCase']()]+']',_0x2db568[_0xc4d9('0x17')]);_0x3b9585(_0x2db568[_0xc4d9('0x17')]);});});}function getTicket(_0x2906ff,_0x42b589,_0x446d9b,_0x5dd148,_0x58dcd3){return function(_0x3a0de0){logger[_0xc4d9('0xe')]('Creating\x20new\x20task');return new Promise(function(_0x21d7a2,_0x4befdd){var _0xf04c1d=moment();var _0x2827bb={'method':_0xc4d9('0x29'),'uri':_0x446d9b+_0xc4d9('0x2c'),'body':{'title':intUtil[_0xc4d9('0x2d')](_0x5dd148[_0xc4d9('0x2e')],_0x58dcd3,'\x20'),'description':intUtil[_0xc4d9('0x2d')](_0x5dd148['Descriptions'],_0x58dcd3,'\x0a'),'owner_id':_0x3a0de0[_0xc4d9('0x1c')],'creater_id':_0x3a0de0[_0xc4d9('0x14')],'targetable_id':_0x3a0de0['endUserId'],'targetable_type':_0xc4d9('0x2f'),'created_at':_0xf04c1d[_0xc4d9('0x22')](_0xc4d9('0x30')),'due_date':_0xf04c1d[_0xc4d9('0x31')](0x1e,'m')[_0xc4d9('0x22')](_0xc4d9('0x30'))},'json':!![]};_0x2827bb['headers']=_0x42b589;return rp(_0x2827bb)[_0xc4d9('0x10')](function(_0x25a6c7){_0x3a0de0['ticketId']=_0x25a6c7[_0xc4d9('0x32')]['id'];logger[_0xc4d9('0xe')](_0xc4d9('0x33'),_0x3a0de0[_0xc4d9('0x34')]);_0x21d7a2(_0x3a0de0);})[_0xc4d9('0x28')](function(_0x284cad){logger[_0xc4d9('0x16')]('['+[_0x2906ff['toUpperCase']()]+']',_0x284cad['message']);_0x4befdd(_0x284cad['message']);});});};}function emit(_0x2bc214,_0x189ded,_0x678eaf){var _0x118a31={'uri':_0x2bc214+'/contacts/'+_0x678eaf};io['to'](util['format'](_0xc4d9('0x35'),_0x189ded))[_0xc4d9('0x36')]('trigger:browser:url',_0x118a31);}exports['cs']=function(_0x1a898a,_0xca63de,_0x2159da,_0x3c7885,_0x591eab,_0x3f15ff,_0x1376d3,_0x5039db){var _0x1be7b0={};var _0x4a2016={'Authorization':_0xc4d9('0x37')+_0x3f15ff[_0xc4d9('0x38')]};_0x3f15ff[_0xc4d9('0x39')]=intUtil[_0xc4d9('0x3a')](_0x3f15ff[_0xc4d9('0x39')]);_0x3f15ff[_0xc4d9('0x3b')]=intUtil['stripTrailingSlash'](_0x3f15ff[_0xc4d9('0x3b')]);var _0xb07b53=_0x3f15ff[_0xc4d9('0x39')];_0x1be7b0[_0xc4d9('0x3c')]=_0x3f15ff[_0xc4d9('0x3d')];_0x1be7b0[_0xc4d9('0x23')]=_0x5039db[_0xc4d9('0x3e')]()===_0xc4d9('0x3f')?_0xca63de['destcalleridnum']:_0xca63de['calleridnum'];_0x1be7b0['callDirection']=_0x5039db===_0xc4d9('0x40')||_0x5039db===_0xc4d9('0x41')?_0xc4d9('0x40'):_0xc4d9('0x3f');if(_0x3c7885){_0x1be7b0['agentEmail']=_0x3c7885['email'];}var _0x59a891=util[_0xc4d9('0x22')](_0xc4d9('0x42'),_0x3f15ff[_0xc4d9('0x3b')],_0xca63de[_0xc4d9('0x43')],md5(_0xca63de[_0xc4d9('0x43')]));if(_0x591eab&&_0x591eab[_0xc4d9('0x44')]){logger[_0xc4d9('0xe')]('[QUEUE]',_0xc4d9('0x45'));_0xca63de[_0xc4d9('0x46')]=_0x59a891;}else if(_0x1376d3&&_0x1376d3['recordingFormat']&&_0x1376d3[_0xc4d9('0x47')]!=='none'){logger['info']('[OUTBOUND]','Recording\x20is\x20enabled!');_0xca63de[_0xc4d9('0x46')]=_0x59a891;}else{_0xca63de[_0xc4d9('0x46')]='';}return getAdminId(_0x1be7b0,_0x5039db,_0x4a2016,_0xb07b53)[_0xc4d9('0x10')](getUser(_0x5039db,_0x4a2016,_0xb07b53))['then'](getEndUser(_0x5039db,_0x4a2016,_0xb07b53))[_0xc4d9('0x10')](getTicket(_0x5039db,_0x4a2016,_0xb07b53,_0x2159da,_0xca63de))[_0xc4d9('0x10')](function(_0x357b4e){logger[_0xc4d9('0xe')](util[_0xc4d9('0x22')]('The\x20ticket\x20ID\x20is:\x20%s',_0x357b4e[_0xc4d9('0x34')]));if(_0x5039db!==_0xc4d9('0x41')){logger['info']('['+[_0x5039db[_0xc4d9('0x1e')]()]+']',_0xc4d9('0x48'));emit(_0xb07b53,_0x3c7885[_0xc4d9('0x49')],_0x357b4e[_0xc4d9('0x25')]);}})[_0xc4d9('0x28')](function(_0x50007f){logger[_0xc4d9('0x16')]('['+[_0x5039db[_0xc4d9('0x1e')]()]+_0xc4d9('0x4a'),util[_0xc4d9('0x4b')](_0x50007f,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xdedd=['userEmail','userId','User\x20found:','Admin\x20selected','find','format','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','/api/tasks','getString','Subjects','Descriptions','Contact','add','ticketId','task','Task\x20created:','/contacts/','Token\x20token=','apiKey','remoteUri','serverUrl','stripTrailingSlash','toLowerCase','outbound','destcalleridnum','calleridnum','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','unmanaged','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','lodash','md5','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email'];(function(_0x1d188e,_0x148a81){var _0xc79d38=function(_0x94b78f){while(--_0x94b78f){_0x1d188e['push'](_0x1d188e['shift']());}};_0xc79d38(++_0x148a81);}(_0xdedd,0x1c8));var _0xdded=function(_0x3e52da,_0x5245f9){_0x3e52da=_0x3e52da-0x0;var _0x22ee7d=_0xdedd[_0x3e52da];return _0x22ee7d;};'use strict';var _=require(_0xdded('0x0'));var rp=require('request-promise');var md5=require(_0xdded('0x1'));var util=require('util');var moment=require(_0xdded('0x2'));var Promise=require(_0xdded('0x3'));var Redis=require(_0xdded('0x4'));var intUtil=require(_0xdded('0x5'));var config=require(_0xdded('0x6'));var logger=require(_0xdded('0x7'))(_0xdded('0x8'));config['redis']=_['defaults'](config[_0xdded('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0xdded('0xa'))(new Redis(config[_0xdded('0x9')]));function getAdminId(_0x3929b3,_0x120bcc,_0xcb371,_0x24f8e2){return new Promise(function(_0x3345b3,_0x29b946){var _0x39f450=![];var _0x44c9e6={'method':_0xdded('0xb'),'uri':_0x24f8e2+_0xdded('0xc'),'json':!![]};_0x44c9e6[_0xdded('0xd')]=_0xcb371;logger[_0xdded('0xe')](_0xdded('0xf'));return rp(_0x44c9e6)[_0xdded('0x10')](function(_0x50ef65){if(_0x50ef65){var _0x525e6f=_0x50ef65[_0xdded('0x11')];var _0x470771=null;for(_0x470771=0x0;_0x470771<_0x525e6f['length'];_0x470771++){if(_0x525e6f[_0x470771][_0xdded('0x12')]===_0x3929b3[_0xdded('0x13')]){_0x3929b3[_0xdded('0x14')]=_0x525e6f[_0x470771]['id'];_0x39f450=!![];}}if(_0x39f450){logger[_0xdded('0xe')](_0xdded('0x15'),_0x3929b3['adminId']);_0x3345b3(_0x3929b3);}else{_0x29b946({'statusCode':0x194,'message':_0xdded('0x16')});}}else{_0x29b946({'statusCode':0x194,'message':_0xdded('0x16')});}})[_0xdded('0x17')](function(_0x310a3c){logger[_0xdded('0x18')]('['+[_0x120bcc[_0xdded('0x19')]()]+']',_0x310a3c[_0xdded('0x1a')]);_0x29b946(_0x310a3c);});});}function getUser(_0x485462,_0x4d7d99,_0xd54e82){return function(_0x556488){return new Promise(function(_0x2d99e0,_0x985363){var _0x42fac1={'method':_0xdded('0xb'),'uri':_0xd54e82+'/api/selector/owners','json':!![]};_0x42fac1[_0xdded('0xd')]=_0x4d7d99;logger['info'](_0xdded('0x1b'));return rp(_0x42fac1)[_0xdded('0x10')](function(_0x26ff03){if(_0x26ff03){var _0x537b9e=_0x26ff03[_0xdded('0x11')];var _0x53d9bf=![];var _0x80dc06=null;if(_0x556488[_0xdded('0x1c')]!==null){logger[_0xdded('0xe')](_0xdded('0x1d'),_0x556488[_0xdded('0x1c')]);_0x556488[_0xdded('0x1e')]=_0x556488[_0xdded('0x1c')];for(_0x80dc06=0x0;_0x80dc06<_0x537b9e['length'];_0x80dc06++){if(_0x537b9e[_0x80dc06][_0xdded('0x12')]===_0x556488[_0xdded('0x1c')]){_0x53d9bf=!![];_0x556488[_0xdded('0x1f')]=_0x537b9e[_0x80dc06]['id'];logger[_0xdded('0xe')](_0xdded('0x20'),_0x556488[_0xdded('0x1f')]);}}}if(!_0x53d9bf){logger['info'](_0xdded('0x21'));_0x556488[_0xdded('0x1e')]=_0x556488['adminEmail'];_0x556488[_0xdded('0x1f')]=_0x556488[_0xdded('0x14')];_0x53d9bf=!![];}if(_0x53d9bf){_0x2d99e0(_0x556488);}else{_0x985363({'statusCode':0x194,'message':_0xdded('0x16')});}}else{_0x985363({'statusCode':0x194,'message':_0xdded('0x16')});}})[_0xdded('0x17')](function(_0x5640ad){logger['error']('['+[_0x485462['toUpperCase']()]+']',_0x5640ad[_0xdded('0x1a')]);_0x985363(_0x5640ad);});});};}function searchContact(_0x20363c,_0x460e92,_0x30b476,_0x2dec91){return new Promise(function(_0x42f422,_0x3669ec){var _0xa14879={'method':_0xdded('0xb'),'headers':_0x460e92,'uri':_0x20363c+'/api/lookup?q='+_0x2dec91+'&f='+_0x30b476+'&entities=contact','json':!![]};rp(_0xa14879)[_0xdded('0x10')](function(_0x250c1b){var _0x563d28=_[_0xdded('0x22')](_0x250c1b['contacts']['contacts'],[_0x30b476,_0x2dec91]);_0x42f422(_0x563d28);})[_0xdded('0x17')](function(_0x15cf3c){_0x3669ec(_0x15cf3c);});});}function getEndUser(_0x2950df,_0x4eb80e,_0x136894){return function(_0x5de50b){return new Promise(function(_0x51e26a,_0x56b3cd){logger['info'](util[_0xdded('0x23')]('Searching\x20contact\x20with\x20phone\x20%s',_0x5de50b[_0xdded('0x24')]));searchContact(_0x136894,_0x4eb80e,_0xdded('0x25'),_0x5de50b[_0xdded('0x24')])[_0xdded('0x10')](function(_0x4e5543){if(_0x4e5543){_0x5de50b[_0xdded('0x26')]=_0x4e5543['id'];logger[_0xdded('0xe')](_0xdded('0x27'),_0x5de50b[_0xdded('0x26')]);return _0x51e26a(_0x5de50b);}searchContact(_0x136894,_0x4eb80e,_0xdded('0x28'),_0x5de50b[_0xdded('0x24')])[_0xdded('0x10')](function(_0x230e59){if(_0x230e59){_0x5de50b['endUserId']=_0x230e59['id'];logger[_0xdded('0xe')](_0xdded('0x29'),_0x5de50b[_0xdded('0x26')]);return _0x51e26a(_0x5de50b);}createEndUser(_0x5de50b,_0x2950df,_0x4eb80e,_0x136894)['then'](function(_0x256b0f){logger[_0xdded('0xe')](_0xdded('0x2a'),_0x256b0f[_0xdded('0x26')]);return _0x51e26a(_0x256b0f);});});})[_0xdded('0x17')](function(_0x107761){_0x56b3cd(_0x107761);});});};}function createEndUser(_0x17d5a2,_0x120e4a,_0x3d8c5e,_0x3b17a4){return new Promise(function(_0x1f9717,_0x322a38){var _0x1718b5=moment();var _0x4ecbee={'method':_0xdded('0x2b'),'uri':_0x3b17a4+'/api/contacts','body':{'contact':{'last_name':_0x17d5a2[_0xdded('0x24')],'work_number':_0x17d5a2[_0xdded('0x24')],'mobile_number':_0x17d5a2[_0xdded('0x24')],'owner_id':_0x17d5a2[_0xdded('0x1f')],'created_at':_0x1718b5[_0xdded('0x23')](_0xdded('0x2c'))}},'json':!![]};_0x4ecbee['headers']=_0x3d8c5e;logger['info'](_0xdded('0x2d'));return rp(_0x4ecbee)[_0xdded('0x10')](function(_0x58361b){_0x17d5a2['endUserId']=_0x58361b[_0xdded('0x2e')]['id'];_0x1f9717(_0x17d5a2);})['catch'](function(_0x5ecd3d){logger[_0xdded('0x18')]('['+[_0x120e4a[_0xdded('0x19')]()]+']',_0x5ecd3d['message']);_0x322a38(_0x5ecd3d[_0xdded('0x1a')]);});});}function getTicket(_0x4a2146,_0x5ef69e,_0x3bb4c5,_0x3bffc5,_0x319281){return function(_0x391af4){logger[_0xdded('0xe')]('Creating\x20new\x20task');return new Promise(function(_0x4aabaa,_0x2a990f){var _0x5aa95f=moment();var _0x1f962b={'method':_0xdded('0x2b'),'uri':_0x3bb4c5+_0xdded('0x2f'),'body':{'title':intUtil[_0xdded('0x30')](_0x3bffc5[_0xdded('0x31')],_0x319281,'\x20'),'description':intUtil['getString'](_0x3bffc5[_0xdded('0x32')],_0x319281,'\x0a'),'owner_id':_0x391af4[_0xdded('0x1f')],'creater_id':_0x391af4[_0xdded('0x14')],'targetable_id':_0x391af4[_0xdded('0x26')],'targetable_type':_0xdded('0x33'),'created_at':_0x5aa95f[_0xdded('0x23')](_0xdded('0x2c')),'due_date':_0x5aa95f[_0xdded('0x34')](0x1e,'m')[_0xdded('0x23')](_0xdded('0x2c'))},'json':!![]};_0x1f962b[_0xdded('0xd')]=_0x5ef69e;return rp(_0x1f962b)[_0xdded('0x10')](function(_0x442660){_0x391af4[_0xdded('0x35')]=_0x442660[_0xdded('0x36')]['id'];logger[_0xdded('0xe')](_0xdded('0x37'),_0x391af4[_0xdded('0x35')]);_0x4aabaa(_0x391af4);})[_0xdded('0x17')](function(_0x1c1b8e){logger[_0xdded('0x18')]('['+[_0x4a2146[_0xdded('0x19')]()]+']',_0x1c1b8e[_0xdded('0x1a')]);_0x2a990f(_0x1c1b8e[_0xdded('0x1a')]);});});};}function emit(_0x2be673,_0x344a50,_0x54efa7){var _0x688326={'uri':_0x2be673+_0xdded('0x38')+_0x54efa7};io['to'](util['format']('user:%s',_0x344a50))['emit']('trigger:browser:url',_0x688326);}exports['cs']=function(_0x2d3d0e,_0x5a7198,_0x36ac71,_0x40fbf6,_0x583006,_0x51886b,_0x166dcd,_0x2763e7){var _0x5e5c83={};var _0x1ae4c1={'Authorization':_0xdded('0x39')+_0x51886b[_0xdded('0x3a')]};_0x51886b[_0xdded('0x3b')]=intUtil['stripTrailingSlash'](_0x51886b[_0xdded('0x3b')]);_0x51886b[_0xdded('0x3c')]=intUtil[_0xdded('0x3d')](_0x51886b[_0xdded('0x3c')]);var _0x24a4b7=_0x51886b[_0xdded('0x3b')];_0x5e5c83['adminEmail']=_0x51886b['username'];_0x5e5c83[_0xdded('0x24')]=_0x2763e7[_0xdded('0x3e')]()===_0xdded('0x3f')?_0x5a7198[_0xdded('0x40')]:_0x5a7198[_0xdded('0x41')];_0x5e5c83['callDirection']=_0x2763e7===_0xdded('0x42')||_0x2763e7==='unmanaged'?'queue':_0xdded('0x3f');if(_0x40fbf6){_0x5e5c83[_0xdded('0x1c')]=_0x40fbf6[_0xdded('0x12')];}var _0x44e4b4=util['format'](_0xdded('0x43'),_0x51886b[_0xdded('0x3c')],_0x5a7198[_0xdded('0x44')],md5(_0x5a7198[_0xdded('0x44')]));if(_0x583006&&_0x583006[_0xdded('0x45')]){logger[_0xdded('0xe')](_0xdded('0x46'),_0xdded('0x47'));_0x5a7198['recordingURL']=_0x44e4b4;}else if(_0x166dcd&&_0x166dcd[_0xdded('0x48')]&&_0x166dcd[_0xdded('0x48')]!==_0xdded('0x49')){logger[_0xdded('0xe')](_0xdded('0x4a'),_0xdded('0x47'));_0x5a7198[_0xdded('0x4b')]=_0x44e4b4;}else{_0x5a7198[_0xdded('0x4b')]='';}return getAdminId(_0x5e5c83,_0x2763e7,_0x1ae4c1,_0x24a4b7)[_0xdded('0x10')](getUser(_0x2763e7,_0x1ae4c1,_0x24a4b7))[_0xdded('0x10')](getEndUser(_0x2763e7,_0x1ae4c1,_0x24a4b7))[_0xdded('0x10')](getTicket(_0x2763e7,_0x1ae4c1,_0x24a4b7,_0x36ac71,_0x5a7198))['then'](function(_0x660550){logger[_0xdded('0xe')](util['format'](_0xdded('0x4c'),_0x660550[_0xdded('0x35')]));if(_0x2763e7!==_0xdded('0x4d')){logger[_0xdded('0xe')]('['+[_0x2763e7[_0xdded('0x19')]()]+']',_0xdded('0x4e'));emit(_0x24a4b7,_0x40fbf6[_0xdded('0x4f')],_0x660550[_0xdded('0x26')]);}})[_0xdded('0x17')](function(_0x218056){logger['error']('['+[_0x2763e7[_0xdded('0x19')]()]+_0xdded('0x50'),util['inspect'](_0x218056,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 13b6073..cdd47a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ce=['data3','queue','routeId','outbound','EVENT\x20UNKNOWN','unmanaged','toLowerCase','dynamics365','log','unknown\x20integration','../../../../config/logger','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','error','%s\x20account\x20#%s\x20not\x20found','lodash','util','./zendesk','./salesforce','./sugarcrm','./freshdesk','./zoho','./desk','./vtiger','./servicenow','./dynamics365','./freshsales','zendesk','salesforce','sugarcrm','freshdesk','zoho','desk','vtiger','servicenow','exec','includes','data1','data2','find'];(function(_0x11b818,_0x5af3ff){var _0x17bcb5=function(_0x24decc){while(--_0x24decc){_0x11b818['push'](_0x11b818['shift']());}};_0x17bcb5(++_0x5af3ff);}(_0x24ce,0x106));var _0xe24c=function(_0x101041,_0x4292dc){_0x101041=_0x101041-0x0;var _0x28fc66=_0x24ce[_0x101041];return _0x28fc66;};'use strict';var _=require(_0xe24c('0x0'));var util=require(_0xe24c('0x1'));var zendesk=require(_0xe24c('0x2'));var salesforce=require(_0xe24c('0x3'));var sugarcrm=require(_0xe24c('0x4'));var freshdesk=require(_0xe24c('0x5'));var zoho=require(_0xe24c('0x6'));var desk=require(_0xe24c('0x7'));var vtiger=require(_0xe24c('0x8'));var servicenow=require(_0xe24c('0x9'));var dynamics365=require(_0xe24c('0xa'));var freshsales=require(_0xe24c('0xb'));var integrations=[_0xe24c('0xc'),_0xe24c('0xd'),_0xe24c('0xe'),_0xe24c('0xf'),_0xe24c('0x10'),_0xe24c('0x11'),_0xe24c('0x12'),'dynamics365','freshsales',_0xe24c('0x13')];exports[_0xe24c('0x14')]=function(_0x297624,_0x39eba1,_0x24360c,_0x40c56c,_0x2330e1,_0x35effe){if(_0x24360c){if(_[_0xe24c('0x15')](integrations,_0x297624[_0xe24c('0x16')]['toLowerCase']())){try{var _0x39a0f4=null;var _0x192f9c='';var _0xd36e18=_0x24360c[_0x297624[_0xe24c('0x16')]['toLowerCase']()];if(_0xd36e18){var _0xc63da2=_0xd36e18[_0x297624[_0xe24c('0x17')]];if(_0xc63da2){var _0x85f717=_[_0xe24c('0x18')](_0xc63da2['Configurations'],{'id':parseInt(_0x297624[_0xe24c('0x19')],0xa)});if(_0x85f717){if(_0x40c56c){if(_0x2330e1&&_0x39eba1[_0xe24c('0x1a')]){_0x192f9c=_0xe24c('0x1a');}else if(_0x39eba1[_0xe24c('0x1b')]){_0x192f9c=_0xe24c('0x1c');}else{console['log'](_0xe24c('0x1d'),_0x39eba1);}}else{_0x192f9c=_0xe24c('0x1e');}switch(_0x297624[_0xe24c('0x16')][_0xe24c('0x1f')]()){case'zendesk':zendesk[_0x192f9c](_0x297624,_0x39eba1,_0x85f717,_0x40c56c,_0x2330e1,_0xc63da2,_0x35effe);break;case'salesforce':salesforce[_0x192f9c](_0x297624,_0x39eba1,_0x85f717,_0x40c56c,_0x2330e1,_0xc63da2,_0x35effe);break;case'sugarcrm':sugarcrm[_0x192f9c](_0x297624,_0x39eba1,_0x85f717,_0x40c56c,_0x2330e1,_0xc63da2,_0x35effe);break;case _0xe24c('0xf'):freshdesk[_0x192f9c](_0x297624,_0x39eba1,_0x85f717,_0x40c56c,_0x2330e1,_0xc63da2,_0x35effe);break;case _0xe24c('0x10'):zoho[_0x192f9c](_0x297624,_0x39eba1,_0x85f717,_0x40c56c,_0x2330e1,_0xc63da2,_0x35effe);break;case'desk':desk[_0x192f9c](_0x297624,_0x39eba1,_0x85f717,_0x40c56c,_0x2330e1,_0xc63da2,_0x35effe);break;case _0xe24c('0x12'):vtiger[_0x192f9c](_0x297624,_0x39eba1,_0x85f717,_0x40c56c,_0x2330e1,_0xc63da2,_0x35effe);break;case'freshsales':freshsales['cs'](_0x297624,_0x39eba1,_0x85f717,_0x40c56c,_0x2330e1,_0xc63da2,_0x35effe,_0x192f9c);break;case'servicenow':servicenow['cs'](_0x297624,_0x39eba1,_0x85f717,_0x40c56c,_0x2330e1,_0xc63da2,_0x35effe,_0x192f9c);break;case _0xe24c('0x20'):dynamics365['cs'](_0x297624,_0x39eba1,_0x85f717,_0x40c56c,_0x2330e1,_0xc63da2,_0x35effe,_0x192f9c);break;default:console[_0xe24c('0x21')](_0xe24c('0x22'));}}else{_0x39a0f4=require(_0xe24c('0x23'))(_0x297624[_0xe24c('0x16')]['toLowerCase']());_0x39a0f4['error'](_0xe24c('0x24'),util[_0xe24c('0x25')](_0xe24c('0x26'),_0x297624[_0xe24c('0x16')][_0xe24c('0x1f')](),_0x297624['data3']));}}else{_0x39a0f4=require(_0xe24c('0x23'))(_0x297624[_0xe24c('0x16')]['toLowerCase']());_0x39a0f4[_0xe24c('0x27')](_0xe24c('0x24'),util[_0xe24c('0x25')](_0xe24c('0x28'),_0x297624['data1'][_0xe24c('0x1f')](),_0x297624[_0xe24c('0x17')]));}}else{}}catch(_0x16e84c){console[_0xe24c('0x27')](_0x16e84c);}}}};
\ No newline at end of file
+var _0x544e=['log','EVENT\x20UNKNOWN','unmanaged','desk','servicenow','unknown\x20integration','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','%s\x20account\x20#%s\x20not\x20found','lodash','./zendesk','./salesforce','./sugarcrm','./freshdesk','./desk','./dynamics365','./freshsales','zendesk','sugarcrm','freshdesk','zoho','dynamics365','freshsales','exec','includes','data1','toLowerCase','find','Configurations','data3','queue','routeId','outbound'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x544e,0xe4));var _0xe544=function(_0x1455a9,_0x203030){_0x1455a9=_0x1455a9-0x0;var _0x442892=_0x544e[_0x1455a9];return _0x442892;};'use strict';var _=require(_0xe544('0x0'));var util=require('util');var zendesk=require(_0xe544('0x1'));var salesforce=require(_0xe544('0x2'));var sugarcrm=require(_0xe544('0x3'));var freshdesk=require(_0xe544('0x4'));var zoho=require('./zoho');var desk=require(_0xe544('0x5'));var vtiger=require('./vtiger');var servicenow=require('./servicenow');var dynamics365=require(_0xe544('0x6'));var freshsales=require(_0xe544('0x7'));var integrations=[_0xe544('0x8'),'salesforce',_0xe544('0x9'),_0xe544('0xa'),_0xe544('0xb'),'desk','vtiger',_0xe544('0xc'),_0xe544('0xd'),'servicenow'];exports[_0xe544('0xe')]=function(_0x13342e,_0x1572ac,_0x40ffcd,_0x3b6e7e,_0x545e8d,_0x5002ac){if(_0x40ffcd){if(_[_0xe544('0xf')](integrations,_0x13342e[_0xe544('0x10')][_0xe544('0x11')]())){try{var _0x51cd87=null;var _0x340df0='';var _0x225b33=_0x40ffcd[_0x13342e[_0xe544('0x10')][_0xe544('0x11')]()];if(_0x225b33){var _0x580b57=_0x225b33[_0x13342e['data2']];if(_0x580b57){var _0x2a886c=_[_0xe544('0x12')](_0x580b57[_0xe544('0x13')],{'id':parseInt(_0x13342e[_0xe544('0x14')],0xa)});if(_0x2a886c){if(_0x3b6e7e){if(_0x545e8d&&_0x1572ac['queue']){_0x340df0=_0xe544('0x15');}else if(_0x1572ac[_0xe544('0x16')]){_0x340df0=_0xe544('0x17');}else{console[_0xe544('0x18')](_0xe544('0x19'),_0x1572ac);}}else{_0x340df0=_0xe544('0x1a');}switch(_0x13342e[_0xe544('0x10')][_0xe544('0x11')]()){case'zendesk':zendesk[_0x340df0](_0x13342e,_0x1572ac,_0x2a886c,_0x3b6e7e,_0x545e8d,_0x580b57,_0x5002ac);break;case'salesforce':salesforce[_0x340df0](_0x13342e,_0x1572ac,_0x2a886c,_0x3b6e7e,_0x545e8d,_0x580b57,_0x5002ac);break;case _0xe544('0x9'):sugarcrm[_0x340df0](_0x13342e,_0x1572ac,_0x2a886c,_0x3b6e7e,_0x545e8d,_0x580b57,_0x5002ac);break;case _0xe544('0xa'):freshdesk[_0x340df0](_0x13342e,_0x1572ac,_0x2a886c,_0x3b6e7e,_0x545e8d,_0x580b57,_0x5002ac);break;case _0xe544('0xb'):zoho[_0x340df0](_0x13342e,_0x1572ac,_0x2a886c,_0x3b6e7e,_0x545e8d,_0x580b57,_0x5002ac);break;case _0xe544('0x1b'):desk[_0x340df0](_0x13342e,_0x1572ac,_0x2a886c,_0x3b6e7e,_0x545e8d,_0x580b57,_0x5002ac);break;case'vtiger':vtiger[_0x340df0](_0x13342e,_0x1572ac,_0x2a886c,_0x3b6e7e,_0x545e8d,_0x580b57,_0x5002ac);break;case _0xe544('0xd'):freshsales['cs'](_0x13342e,_0x1572ac,_0x2a886c,_0x3b6e7e,_0x545e8d,_0x580b57,_0x5002ac,_0x340df0);break;case _0xe544('0x1c'):servicenow['cs'](_0x13342e,_0x1572ac,_0x2a886c,_0x3b6e7e,_0x545e8d,_0x580b57,_0x5002ac,_0x340df0);break;case _0xe544('0xc'):dynamics365['cs'](_0x13342e,_0x1572ac,_0x2a886c,_0x3b6e7e,_0x545e8d,_0x580b57,_0x5002ac,_0x340df0);break;default:console[_0xe544('0x18')](_0xe544('0x1d'));}}else{_0x51cd87=require(_0xe544('0x1e'))(_0x13342e[_0xe544('0x10')][_0xe544('0x11')]());_0x51cd87[_0xe544('0x1f')](_0xe544('0x20'),util[_0xe544('0x21')](_0xe544('0x22'),_0x13342e['data1'][_0xe544('0x11')](),_0x13342e['data3']));}}else{_0x51cd87=require(_0xe544('0x1e'))(_0x13342e[_0xe544('0x10')]['toLowerCase']());_0x51cd87['error'](_0xe544('0x20'),util[_0xe544('0x21')](_0xe544('0x23'),_0x13342e[_0xe544('0x10')][_0xe544('0x11')](),_0x13342e['data2']));}}else{}}catch(_0x2b6a92){console[_0xe544('0x1f')](_0x2b6a92);}}}};
\ No newline at end of file
index ed3cdd2..eff5d74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1d9=['User','find','execute','then','length','Email','Agent\x20%s\x20found.','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','resolve','user_id','display_name','moduleSearch','additionalSearchContact','Contact','cloneDeep','additionalSearchLead','merge','$or','additionalSearchAccount','Account','Lead','first','Name','Phone','attributes','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','<unknown>','format','LastName','Caller\x20-\x20%s','upperFirst','forEach','includes','string','picklist','idField','toString','variable','variableName','customVariable','Variable','name','password','Connection','https://login.salesforce.com','clientId','clientSecret','username','Connection\x20established.','queue','serverUrl','remoteUri','stripTrailingSlash','monitor_format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','email','calleridname','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','user:%s','trigger:salesforce:display','newTab','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','outbound','none','[OUTBOUND]','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','unmanaged','lastevent','toUpperCase','Recording\x20is\x20enabled!','lodash','request-promise','moment','bluebird','md5','jsforce','util','./util','../../../../config/logger','salesforce','redis','defaults','localhost','emit','assign','Subjects','Descriptions','utc','IsReminderSet','endUserType','lead','account','WhatId','ticketType','Case','contact','ContactId','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xb1d9,0x149));var _0x9b1d=function(_0x44bfb4,_0x2010d8){_0x44bfb4=_0x44bfb4-0x0;var _0x4e38c1=_0xb1d9[_0x44bfb4];return _0x4e38c1;};'use strict';var _=require(_0x9b1d('0x0'));var rp=require(_0x9b1d('0x1'));var moment=require(_0x9b1d('0x2'));var BPromise=require(_0x9b1d('0x3'));var md5=require(_0x9b1d('0x4'));var jsforce=require(_0x9b1d('0x5'));var util=require(_0x9b1d('0x6'));var Redis=require('ioredis');var intUtil=require(_0x9b1d('0x7'));var config=require('../../../../config/environment');var logger=require(_0x9b1d('0x8'))(_0x9b1d('0x9'));config[_0x9b1d('0xa')]=_[_0x9b1d('0xb')](config['redis'],{'host':_0x9b1d('0xc'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x9b1d('0xa')]));function emit(_0x59f605,_0x5df892,_0x1e4f6a){io['to'](_0x59f605)[_0x9b1d('0xd')](_0x5df892,_0x1e4f6a);}function getTicket(_0x3600a0,_0x4351c9,_0x28cb1b,_0x2c85dd,_0x2e3eaa,_0x19b8f4,_0x4a317a,_0x12063e){var _0xa6cf58=Object[_0x9b1d('0xe')]({},{'OwnerId':_0x4351c9['id'],'Subject':intUtil['getString'](_0x2c85dd[_0x9b1d('0xf')],_0x2e3eaa,'\x20'),'Description':intUtil['getString'](_0x2c85dd[_0x9b1d('0x10')],_0x2e3eaa,'\x0a')},getCustomFields(_0x19b8f4,_0x2e3eaa));if(_0x28cb1b){if(_0x2c85dd['ticketType']==='Task'){_0xa6cf58['ActivityDate']=moment[_0x9b1d('0x11')]();_0xa6cf58[_0x9b1d('0x12')]=![];_0xa6cf58['IsRecurrence']=![];if(_0x28cb1b[_0x9b1d('0x13')]==='contact'||_0x28cb1b[_0x9b1d('0x13')]===_0x9b1d('0x14')){_0xa6cf58['WhoId']=_0x28cb1b['id'];}else if(_0x28cb1b['endUserType']===_0x9b1d('0x15')){_0xa6cf58[_0x9b1d('0x16')]=_0x28cb1b['id'];}}else if(_0x2c85dd[_0x9b1d('0x17')]===_0x9b1d('0x18')){if(_0x28cb1b[_0x9b1d('0x13')]===_0x9b1d('0x19')){_0xa6cf58[_0x9b1d('0x1a')]=_0x28cb1b['id'];}else if(_0x28cb1b[_0x9b1d('0x13')]===_0x9b1d('0x15')){_0xa6cf58[_0x9b1d('0x1b')]=_0x28cb1b['id'];}else if(_0x28cb1b[_0x9b1d('0x13')]===_0x9b1d('0x14')&&_0x2c85dd['leadId']){_0xa6cf58[_0x2c85dd[_0x9b1d('0x1c')]]=_0x28cb1b['id'];}else{logger[_0x9b1d('0x1d')](_0x9b1d('0x1e'));}}}return _0x4a317a[_0x9b1d('0x1f')](_0x2c85dd[_0x9b1d('0x17')])[_0x9b1d('0x20')](_0xa6cf58);}function getUser(_0x5deaa8,_0x5f26b0,_0x368b0b){if(!_[_0x9b1d('0x21')](_0x5f26b0)&&intUtil['validateEmail'](_0x5f26b0)){var _0x3df084={'Email':_0x5f26b0};var _0xb7903d={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x368b0b[_0x9b1d('0x1f')](_0x9b1d('0x22'))[_0x9b1d('0x23')](_0x3df084,_0xb7903d)[_0x9b1d('0x24')]()[_0x9b1d('0x25')](function(_0x1233e7){if(_0x1233e7[_0x9b1d('0x26')]){var _0x4b9c38=_[_0x9b1d('0x23')](_0x1233e7,function(_0x3b187e){return _0x3b187e[_0x9b1d('0x27')]===_0x5f26b0;});if(_0x4b9c38){logger[_0x9b1d('0x1d')](_0x9b1d('0x28'),_0x5f26b0);return BPromise['resolve']({'id':_0x4b9c38['Id'],'name':_0x4b9c38['Name']});}}else{logger[_0x9b1d('0x1d')](_0x9b1d('0x29'),_0x5f26b0);return _0x368b0b[_0x9b1d('0x2a')]()[_0x9b1d('0x25')](function(_0x2a2753){return BPromise[_0x9b1d('0x2b')]({'id':_0x2a2753[_0x9b1d('0x2c')],'name':_0x2a2753[_0x9b1d('0x2d')]});});}});}else{logger['info'](_0x9b1d('0x29'),_0x5f26b0);return _0x368b0b[_0x9b1d('0x2a')]()['then'](function(_0x389307){return BPromise[_0x9b1d('0x2b')]({'id':_0x389307[_0x9b1d('0x2c')],'name':_0x389307[_0x9b1d('0x2d')]});});}}function getEndUser(_0x9196b8,_0xa94899,_0x3e8138,_0x59f6d7,_0x179261){var _0x3d07fd={'$or':{'Phone':_0x59f6d7}};var _0x21fb7b={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x9b1d('0x2b')]()[_0x9b1d('0x25')](function(){logger[_0x9b1d('0x1d')]('Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.',_0x59f6d7,_0xa94899[_0x9b1d('0x2e')]);switch(_0xa94899[_0x9b1d('0x2e')]){case'contact_lead':var _0x5a5c74=_['cloneDeep'](_0x3d07fd);if(_0xa94899[_0x9b1d('0x2f')]){var _0x46a134={};_0x46a134[_0xa94899['additionalSearchContact']]=_0x59f6d7;_['merge'](_0x5a5c74['$or'],_0x46a134);}return _0x179261['sobject'](_0x9b1d('0x30'))['find'](_0x5a5c74,_0x21fb7b)['execute']()['then'](function(_0x33e32c){if(_0x33e32c&&_0x33e32c[_0x9b1d('0x26')]){return _0x33e32c;}else{var _0x1fd68a=_[_0x9b1d('0x31')](_0x3d07fd);if(_0xa94899[_0x9b1d('0x32')]){var _0x242882={};_0x242882[_0xa94899[_0x9b1d('0x32')]]=_0x59f6d7;_[_0x9b1d('0x33')](_0x1fd68a[_0x9b1d('0x34')],_0x242882);}return _0x179261[_0x9b1d('0x1f')]('Lead')[_0x9b1d('0x23')](_0x1fd68a,_0x21fb7b);}});case'account_contact_lead':var _0xcf045b=_['cloneDeep'](_0x3d07fd);if(_0xa94899['additionalSearchAccount']){var _0x46a134={};_0x46a134[_0xa94899[_0x9b1d('0x35')]]=_0x59f6d7;_['merge'](_0xcf045b[_0x9b1d('0x34')],_0x46a134);}return _0x179261[_0x9b1d('0x1f')](_0x9b1d('0x36'))['find'](_0xcf045b,_0x21fb7b)[_0x9b1d('0x24')]()[_0x9b1d('0x25')](function(_0x39146d){if(_0x39146d&&_0x39146d[_0x9b1d('0x26')]){return _0x39146d;}else{var _0x5185be=_[_0x9b1d('0x31')](_0x3d07fd);if(_0xa94899[_0x9b1d('0x2f')]){var _0x5f50bd={};_0x5f50bd[_0xa94899[_0x9b1d('0x2f')]]=_0x59f6d7;_[_0x9b1d('0x33')](_0x5185be[_0x9b1d('0x34')],_0x5f50bd);}return _0x179261['sobject'](_0x9b1d('0x30'))[_0x9b1d('0x23')](_0x5185be,_0x21fb7b)['then'](function(_0x44fbca){if(_0x44fbca&&_0x44fbca['length']){return _0x44fbca;}else{var _0x402305=_[_0x9b1d('0x31')](_0x3d07fd);if(_0xa94899['additionalSearchLead']){var _0x20d1df={};_0x20d1df[_0xa94899['additionalSearchLead']]=_0x59f6d7;_['merge'](_0x402305['$or'],_0x20d1df);}return _0x179261[_0x9b1d('0x1f')]('Lead')[_0x9b1d('0x23')](_0x402305,_0x21fb7b);}});}});case _0x9b1d('0x19'):var _0x5a5c74=_[_0x9b1d('0x31')](_0x3d07fd);if(_0xa94899[_0x9b1d('0x2f')]){var _0x46a134={};_0x46a134[_0xa94899['additionalSearchContact']]=_0x59f6d7;_[_0x9b1d('0x33')](_0x5a5c74['$or'],_0x46a134);}return _0x179261[_0x9b1d('0x1f')]('Contact')[_0x9b1d('0x23')](_0x5a5c74,_0x21fb7b)[_0x9b1d('0x24')]();case _0x9b1d('0x14'):var _0x299052=_[_0x9b1d('0x31')](_0x3d07fd);if(_0xa94899[_0x9b1d('0x32')]){var _0x46a134={};_0x46a134[_0xa94899[_0x9b1d('0x32')]]=_0x59f6d7;_[_0x9b1d('0x33')](_0x299052[_0x9b1d('0x34')],_0x46a134);}return _0x179261[_0x9b1d('0x1f')](_0x9b1d('0x37'))['find'](_0x299052,_0x21fb7b);case _0x9b1d('0x15'):var _0xcf045b=_[_0x9b1d('0x31')](_0x3d07fd);if(_0xa94899[_0x9b1d('0x35')]){var _0x46a134={};_0x46a134[_0xa94899[_0x9b1d('0x35')]]=_0x59f6d7;_[_0x9b1d('0x33')](_0xcf045b[_0x9b1d('0x34')],_0x46a134);}return _0x179261[_0x9b1d('0x1f')](_0x9b1d('0x36'))[_0x9b1d('0x23')](_0xcf045b,_0x21fb7b);default:return null;}})[_0x9b1d('0x25')](function(_0x4d1beb){if(_0x4d1beb&&_0x4d1beb[_0x9b1d('0x26')]){var _0x276018=_[_0x9b1d('0x38')](_0x4d1beb);if(_0x276018){return BPromise[_0x9b1d('0x2b')]({'id':_0x276018['Id'],'name':_0x276018[_0x9b1d('0x39')],'phone':_0x276018[_0x9b1d('0x3a')],'endUserType':_0x276018[_0x9b1d('0x3b')][_0x9b1d('0x3c')][_0x9b1d('0x3d')]()});}}})[_0x9b1d('0x25')](function(_0x486ab2){if(_0x486ab2){logger[_0x9b1d('0x1d')](_0x9b1d('0x3e'),_0x486ab2[_0x9b1d('0x13')],_0x59f6d7);return BPromise['resolve'](_0x486ab2);}else{logger['info']('Enduser\x20with\x20phone\x20%s\x20not\x20found',_0x59f6d7);var _0x543227={'Phone':_0x59f6d7};if(_0xa94899['moduleCreate']){if(_0xa94899[_0x9b1d('0x3f')]==='contact'){logger['info'](_0x9b1d('0x40'),_0x59f6d7,_0xa94899[_0x9b1d('0x3f')]);_0x543227['LastName']=_0x3e8138!==_0x9b1d('0x41')?_0x3e8138:util[_0x9b1d('0x42')]('Caller\x20-\x20%s',_0x59f6d7);}else if(_0xa94899[_0x9b1d('0x3f')]===_0x9b1d('0x14')){logger['info'](_0x9b1d('0x40'),_0x59f6d7,_0xa94899[_0x9b1d('0x3f')]);_0x543227[_0x9b1d('0x43')]=_0x3e8138!=='<unknown>'?_0x3e8138:util[_0x9b1d('0x42')]('Caller\x20-\x20%s',_0x59f6d7);_0x543227['Company']='No\x20Company';}else if(_0xa94899[_0x9b1d('0x3f')]===_0x9b1d('0x15')){logger[_0x9b1d('0x1d')](_0x9b1d('0x40'),_0x59f6d7,_0xa94899[_0x9b1d('0x3f')]);_0x543227[_0x9b1d('0x39')]=_0x3e8138!=='<unknown>'?_0x3e8138:util['format'](_0x9b1d('0x44'),_0x59f6d7);}else{return null;}}return _0x179261[_0x9b1d('0x1f')](_[_0x9b1d('0x45')](_0xa94899[_0x9b1d('0x3f')]))[_0x9b1d('0x20')](_0x543227)[_0x9b1d('0x25')](function(_0x29641a){return BPromise[_0x9b1d('0x2b')]({'id':_0x29641a['id'],'endUserType':_0xa94899['moduleCreate']});});}});}function getCustomFields(_0xf8f5a1,_0x18a717){var _0x5acf0f={};if(_0xf8f5a1[_0x9b1d('0x26')]>0x0){_[_0x9b1d('0x46')](_0xf8f5a1,function(_0x590ce0){if(_[_0x9b1d('0x47')]([_0x9b1d('0x48'),_0x9b1d('0x49')],_0x590ce0[_0x9b1d('0x3c')])&&_0x590ce0[_0x9b1d('0x4a')]){_0x5acf0f[_0x590ce0[_0x9b1d('0x4a')]]=_0x590ce0['content'][_0x9b1d('0x4b')]();}else if(_0x590ce0[_0x9b1d('0x3c')]===_0x9b1d('0x4c')&&_0x590ce0[_0x9b1d('0x4d')]&&_0x590ce0['idField']){_0x18a717[_0x590ce0[_0x9b1d('0x4d')]]&&(_0x5acf0f[_0x590ce0[_0x9b1d('0x4a')]]=_0x18a717[_0x590ce0['variableName']]['toString']());}else if(_0x590ce0[_0x9b1d('0x3c')]===_0x9b1d('0x4e')&&_0x590ce0['Variable']&&_0x590ce0[_0x9b1d('0x4f')]['name']&&_0x590ce0['idField']){_0x18a717[_0x590ce0['Variable'][_0x9b1d('0x50')][_0x9b1d('0x3d')]()]&&(_0x5acf0f[_0x590ce0[_0x9b1d('0x4a')]]=_0x18a717[_0x590ce0['Variable'][_0x9b1d('0x50')][_0x9b1d('0x3d')]()][_0x9b1d('0x4b')]());}});}return _0x5acf0f;}function getConnection(_0x49a0dd){var _0x260887=_0x49a0dd[_0x9b1d('0x51')]['concat'](_0x49a0dd['securityToken']);var _0x30f9e6=new jsforce[(_0x9b1d('0x52'))]({'oauth2':{'loginUrl':_0x49a0dd['remoteUri']||_0x9b1d('0x53'),'clientId':_0x49a0dd[_0x9b1d('0x54')],'clientSecret':_0x49a0dd[_0x9b1d('0x55')]}});return _0x30f9e6['login'](_0x49a0dd[_0x9b1d('0x56')],_0x260887)[_0x9b1d('0x25')](function(){logger[_0x9b1d('0x1d')](_0x9b1d('0x57'));return _0x30f9e6;});}exports[_0x9b1d('0x58')]=function(_0x573025,_0x49bcaf,_0x29d874,_0x1bfb3a,_0x25843f,_0x394388){var _0x5ce55a,_0x3bf9ae,_0x3d36fc,_0x5bc3eb;_0x394388[_0x9b1d('0x59')]=intUtil['stripTrailingSlash'](_0x394388[_0x9b1d('0x59')]);_0x394388[_0x9b1d('0x5a')]=intUtil[_0x9b1d('0x5b')](_0x394388[_0x9b1d('0x5a')]);if(_0x25843f&&_0x25843f[_0x9b1d('0x5c')]){logger[_0x9b1d('0x1d')]('[QUEUE]','Recording\x20is\x20enabled!');_0x49bcaf['recordingURL']=util['format'](_0x9b1d('0x5d'),_0x394388['serverUrl'],_0x49bcaf[_0x9b1d('0x5e')],md5(_0x49bcaf['uniqueid']));}else{_0x49bcaf[_0x9b1d('0x5f')]='';}return getConnection(_0x394388)[_0x9b1d('0x25')](function(_0x164b6a){_0x5bc3eb=_0x164b6a;return getUser(_0x394388,_0x1bfb3a[_0x9b1d('0x60')],_0x5bc3eb);})['then'](function(_0x3cb26d){_0x5ce55a=_0x3cb26d;return getEndUser(_0x394388,_0x29d874,_0x49bcaf[_0x9b1d('0x61')],_0x49bcaf[_0x9b1d('0x62')],_0x5bc3eb);})['then'](function(_0x1cc8af){_0x3bf9ae=_0x1cc8af;return getTicket(_0x394388,_0x5ce55a,_0x3bf9ae,_0x29d874,_0x49bcaf,_0x29d874[_0x9b1d('0x63')],_0x5bc3eb,_0x9b1d('0x58'));})[_0x9b1d('0x25')](function(_0xf4e7e0){_0x3d36fc=_0xf4e7e0;logger[_0x9b1d('0x1d')](_0x9b1d('0x64'),_0x3d36fc['id']);logger['info'](_0x9b1d('0x65'),_0x3d36fc['id'],_0x1bfb3a[_0x9b1d('0x50')],_0x394388[_0x9b1d('0x3c')]);switch(_0x394388['type']){case'integrationTab':emit(util[_0x9b1d('0x42')](_0x9b1d('0x66'),_0x1bfb3a[_0x9b1d('0x50')]),_0x9b1d('0x67'),{'recordId':_0x3d36fc['id']});break;case _0x9b1d('0x68'):emit(util['format'](_0x9b1d('0x66'),_0x1bfb3a[_0x9b1d('0x50')]),_0x9b1d('0x69'),{'uri':util[_0x9b1d('0x42')](_0x9b1d('0x6a'),_0x5bc3eb[_0x9b1d('0x6b')],_0x3d36fc['id'])});break;default:logger[_0x9b1d('0x6c')](_0x9b1d('0x6d'));}})[_0x9b1d('0x6e')](function(_0x3952bf){logger[_0x9b1d('0x6c')]('[QUEUE]',_0x3952bf);});};exports[_0x9b1d('0x6f')]=function(_0x36426e,_0x27df6c,_0x309c0d,_0xb394ac,_0x5ba3e6,_0x5f4bf3,_0x14fd87){var _0x7d7809,_0x228181,_0x32de5c,_0x1fc907;_0x5f4bf3[_0x9b1d('0x59')]=intUtil[_0x9b1d('0x5b')](_0x5f4bf3[_0x9b1d('0x59')]);_0x5f4bf3[_0x9b1d('0x5a')]=intUtil[_0x9b1d('0x5b')](_0x5f4bf3[_0x9b1d('0x5a')]);if(_0x14fd87&&_0x14fd87['recordingFormat']&&_0x14fd87['recordingFormat']!==_0x9b1d('0x70')){logger[_0x9b1d('0x1d')](_0x9b1d('0x71'),'Recording\x20is\x20enabled!');_0x27df6c[_0x9b1d('0x5f')]=util['format'](_0x9b1d('0x5d'),_0x5f4bf3[_0x9b1d('0x59')],_0x27df6c[_0x9b1d('0x5e')],md5(_0x27df6c[_0x9b1d('0x5e')]));}return getConnection(_0x5f4bf3)[_0x9b1d('0x25')](function(_0x44dc16){_0x1fc907=_0x44dc16;return getUser(_0x5f4bf3,_0xb394ac[_0x9b1d('0x60')],_0x1fc907);})[_0x9b1d('0x25')](function(_0x39a1ee){_0x7d7809=_0x39a1ee;return getEndUser(_0x5f4bf3,_0x309c0d,_0x27df6c['destcalleridname'],_0x27df6c[_0x9b1d('0x72')],_0x1fc907);})[_0x9b1d('0x25')](function(_0x32eef6){_0x228181=_0x32eef6;return getTicket(_0x5f4bf3,_0x7d7809,_0x228181,_0x309c0d,_0x27df6c,_0x309c0d[_0x9b1d('0x63')],_0x1fc907,_0x9b1d('0x6f'));})[_0x9b1d('0x25')](function(_0x1217e8){_0x32de5c=_0x1217e8;logger[_0x9b1d('0x1d')](_0x9b1d('0x73'),_0x32de5c['id']);logger[_0x9b1d('0x1d')](_0x9b1d('0x74'),_0x32de5c['id'],_0xb394ac[_0x9b1d('0x50')],_0x5f4bf3[_0x9b1d('0x3c')]);switch(_0x5f4bf3[_0x9b1d('0x3c')]){case'integrationTab':emit(util['format'](_0x9b1d('0x66'),_0xb394ac[_0x9b1d('0x50')]),_0x9b1d('0x67'),{'recordId':_0x32de5c['id']});break;case _0x9b1d('0x68'):emit(util[_0x9b1d('0x42')](_0x9b1d('0x66'),_0xb394ac[_0x9b1d('0x50')]),_0x9b1d('0x69'),{'uri':util['format'](_0x9b1d('0x6a'),_0x1fc907[_0x9b1d('0x6b')],_0x32de5c['id'])});break;default:logger['error'](_0x9b1d('0x71'),'Salesforce\x20account\x20type\x20not\x20recognized');}})[_0x9b1d('0x6e')](function(_0x54e7eb){logger[_0x9b1d('0x6c')](_0x9b1d('0x71'),_0x54e7eb);});};exports[_0x9b1d('0x75')]=function(_0x252b2a,_0x4c771d,_0x47f0fd,_0x229ded,_0x8f13d4,_0x391298){var _0x5de34e,_0x4e0396,_0x1f6e03,_0x4cd0e8;_0x391298[_0x9b1d('0x59')]=intUtil[_0x9b1d('0x5b')](_0x391298[_0x9b1d('0x59')]);_0x391298[_0x9b1d('0x5a')]=intUtil['stripTrailingSlash'](_0x391298[_0x9b1d('0x5a')]);if(_0x8f13d4&&_0x8f13d4['monitor_format']){logger[_0x9b1d('0x1d')]('['+_0x4c771d[_0x9b1d('0x76')][_0x9b1d('0x77')]()+']',_0x9b1d('0x78'));_0x4c771d[_0x9b1d('0x5f')]=util[_0x9b1d('0x42')](_0x9b1d('0x5d'),_0x391298[_0x9b1d('0x59')],_0x4c771d[_0x9b1d('0x5e')],md5(_0x4c771d[_0x9b1d('0x5e')]));}else{_0x4c771d['recordingURL']='';}return getConnection(_0x391298)[_0x9b1d('0x25')](function(_0x2f01a4){_0x4cd0e8=_0x2f01a4;if(!_[_0x9b1d('0x21')](_0x229ded)){return getUser(_0x391298,_0x229ded[_0x9b1d('0x50')],_0x4cd0e8);}else{return getUser(_0x391298,null,_0x4cd0e8);}})['then'](function(_0x4363ec){_0x5de34e=_0x4363ec;return getEndUser(_0x391298,_0x47f0fd,_0x4c771d[_0x9b1d('0x61')],_0x4c771d[_0x9b1d('0x62')],_0x4cd0e8);})[_0x9b1d('0x25')](function(_0x2b0b96){_0x4e0396=_0x2b0b96;return getTicket(_0x391298,_0x5de34e,_0x4e0396,_0x47f0fd,_0x4c771d,_0x47f0fd['Fields'],_0x4cd0e8);})['then'](function(_0x9a4376){_0x1f6e03=_0x9a4376;logger[_0x9b1d('0x1d')]('['+_0x4c771d[_0x9b1d('0x76')][_0x9b1d('0x77')]()+']\x20Ticket\x20%s\x20created.',_0x1f6e03['id']);logger['info']('['+_0x4c771d[_0x9b1d('0x76')][_0x9b1d('0x77')]()+']\x20Integration\x20account\x20type\x20%s.',_0x391298[_0x9b1d('0x3c')]);})[_0x9b1d('0x6e')](function(_0x4ccf63){logger[_0x9b1d('0x6c')]('['+_0x4c771d[_0x9b1d('0x76')][_0x9b1d('0x77')]()+']',_0x4ccf63);});};
\ No newline at end of file
+var _0x3042=['info','sobject','isNil','validateEmail','find','then','Email','Agent\x20%s\x20found.','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','resolve','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','$or','Contact','length','additionalSearchLead','Lead','account_contact_lead','additionalSearchAccount','Account','execute','Phone','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','LastName','format','Caller\x20-\x20%s','<unknown>','No\x20Company','upperFirst','forEach','includes','picklist','idField','content','toString','variable','variableName','customVariable','Variable','name','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','recordingURL','email','calleridname','calleridnum','integrationTab','user:%s','trigger:browser:url','instanceUrl','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','error','outbound','none','[OUTBOUND]','Recording\x20is\x20enabled!','uniqueid','destcalleridnum','Fields','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','trigger:salesforce:display','%s/%s/e','Salesforce\x20account\x20type\x20not\x20recognized','lastevent','toUpperCase',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','bluebird','util','ioredis','../../../../config/environment','../../../../config/logger','defaults','redis','socket.io-emitter','assign','getString','Subjects','Descriptions','ticketType','Task','ActivityDate','IsReminderSet','endUserType','contact','lead','WhoId','account','WhatId','Case','ContactId','AccountId','leadId'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x3042,0x1bf));var _0x2304=function(_0x7feb90,_0x28e700){_0x7feb90=_0x7feb90-0x0;var _0x3c5b33=_0x3042[_0x7feb90];return _0x3c5b33;};'use strict';var _=require(_0x2304('0x0'));var rp=require(_0x2304('0x1'));var moment=require(_0x2304('0x2'));var BPromise=require(_0x2304('0x3'));var md5=require('md5');var jsforce=require('jsforce');var util=require(_0x2304('0x4'));var Redis=require(_0x2304('0x5'));var intUtil=require('./util');var config=require(_0x2304('0x6'));var logger=require(_0x2304('0x7'))('salesforce');config['redis']=_[_0x2304('0x8')](config[_0x2304('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x2304('0xa'))(new Redis(config[_0x2304('0x9')]));function emit(_0x40d594,_0x3589d2,_0x42538d){io['to'](_0x40d594)['emit'](_0x3589d2,_0x42538d);}function getTicket(_0x49a2a6,_0x5903c5,_0x25044f,_0x289ede,_0x4d2cc1,_0x3e33d1,_0x275282,_0x1fd070){var _0x3c0210=Object[_0x2304('0xb')]({},{'OwnerId':_0x5903c5['id'],'Subject':intUtil[_0x2304('0xc')](_0x289ede[_0x2304('0xd')],_0x4d2cc1,'\x20'),'Description':intUtil[_0x2304('0xc')](_0x289ede[_0x2304('0xe')],_0x4d2cc1,'\x0a')},getCustomFields(_0x3e33d1,_0x4d2cc1));if(_0x25044f){if(_0x289ede[_0x2304('0xf')]===_0x2304('0x10')){_0x3c0210[_0x2304('0x11')]=moment['utc']();_0x3c0210[_0x2304('0x12')]=![];_0x3c0210['IsRecurrence']=![];if(_0x25044f[_0x2304('0x13')]===_0x2304('0x14')||_0x25044f[_0x2304('0x13')]===_0x2304('0x15')){_0x3c0210[_0x2304('0x16')]=_0x25044f['id'];}else if(_0x25044f[_0x2304('0x13')]===_0x2304('0x17')){_0x3c0210[_0x2304('0x18')]=_0x25044f['id'];}}else if(_0x289ede[_0x2304('0xf')]===_0x2304('0x19')){if(_0x25044f[_0x2304('0x13')]===_0x2304('0x14')){_0x3c0210[_0x2304('0x1a')]=_0x25044f['id'];}else if(_0x25044f[_0x2304('0x13')]===_0x2304('0x17')){_0x3c0210[_0x2304('0x1b')]=_0x25044f['id'];}else if(_0x25044f['endUserType']===_0x2304('0x15')&&_0x289ede['leadId']){_0x3c0210[_0x289ede[_0x2304('0x1c')]]=_0x25044f['id'];}else{logger[_0x2304('0x1d')]('Association\x20between\x20Case\x20and\x20Lead\x20skipped');}}}return _0x275282[_0x2304('0x1e')](_0x289ede['ticketType'])['create'](_0x3c0210);}function getUser(_0x4491b6,_0x5d15d6,_0x44a50c){if(!_[_0x2304('0x1f')](_0x5d15d6)&&intUtil[_0x2304('0x20')](_0x5d15d6)){var _0x5aa7e8={'Email':_0x5d15d6};var _0x148b43={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x44a50c[_0x2304('0x1e')]('User')[_0x2304('0x21')](_0x5aa7e8,_0x148b43)['execute']()[_0x2304('0x22')](function(_0x56fceb){if(_0x56fceb['length']){var _0x51522f=_[_0x2304('0x21')](_0x56fceb,function(_0x6fb06c){return _0x6fb06c[_0x2304('0x23')]===_0x5d15d6;});if(_0x51522f){logger[_0x2304('0x1d')](_0x2304('0x24'),_0x5d15d6);return BPromise['resolve']({'id':_0x51522f['Id'],'name':_0x51522f[_0x2304('0x25')]});}}else{logger['info'](_0x2304('0x26'),_0x5d15d6);return _0x44a50c['identity']()['then'](function(_0x5f2808){return BPromise[_0x2304('0x27')]({'id':_0x5f2808[_0x2304('0x28')],'name':_0x5f2808[_0x2304('0x29')]});});}});}else{logger[_0x2304('0x1d')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x5d15d6);return _0x44a50c['identity']()['then'](function(_0x55798b){return BPromise[_0x2304('0x27')]({'id':_0x55798b[_0x2304('0x28')],'name':_0x55798b[_0x2304('0x29')]});});}}function getEndUser(_0x4513ce,_0x828953,_0x5988a3,_0x57610e,_0x105e31){var _0x41a4b7={'$or':{'Phone':_0x57610e}};var _0x19de03={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x2304('0x27')]()['then'](function(){logger[_0x2304('0x1d')](_0x2304('0x2a'),_0x57610e,_0x828953[_0x2304('0x2b')]);switch(_0x828953[_0x2304('0x2b')]){case _0x2304('0x2c'):var _0x39edd8=_[_0x2304('0x2d')](_0x41a4b7);if(_0x828953[_0x2304('0x2e')]){var _0xb784a1={};_0xb784a1[_0x828953[_0x2304('0x2e')]]=_0x57610e;_[_0x2304('0x2f')](_0x39edd8[_0x2304('0x30')],_0xb784a1);}return _0x105e31['sobject'](_0x2304('0x31'))[_0x2304('0x21')](_0x39edd8,_0x19de03)['execute']()[_0x2304('0x22')](function(_0x4c24d2){if(_0x4c24d2&&_0x4c24d2[_0x2304('0x32')]){return _0x4c24d2;}else{var _0x410ef5=_[_0x2304('0x2d')](_0x41a4b7);if(_0x828953[_0x2304('0x33')]){var _0x545586={};_0x545586[_0x828953['additionalSearchLead']]=_0x57610e;_['merge'](_0x410ef5['$or'],_0x545586);}return _0x105e31[_0x2304('0x1e')](_0x2304('0x34'))['find'](_0x410ef5,_0x19de03);}});case _0x2304('0x35'):var _0x27872b=_[_0x2304('0x2d')](_0x41a4b7);if(_0x828953[_0x2304('0x36')]){var _0xb784a1={};_0xb784a1[_0x828953[_0x2304('0x36')]]=_0x57610e;_[_0x2304('0x2f')](_0x27872b[_0x2304('0x30')],_0xb784a1);}return _0x105e31['sobject'](_0x2304('0x37'))[_0x2304('0x21')](_0x27872b,_0x19de03)[_0x2304('0x38')]()[_0x2304('0x22')](function(_0x3b240f){if(_0x3b240f&&_0x3b240f[_0x2304('0x32')]){return _0x3b240f;}else{var _0x1cf7e4=_['cloneDeep'](_0x41a4b7);if(_0x828953['additionalSearchContact']){var _0x425c22={};_0x425c22[_0x828953[_0x2304('0x2e')]]=_0x57610e;_[_0x2304('0x2f')](_0x1cf7e4[_0x2304('0x30')],_0x425c22);}return _0x105e31[_0x2304('0x1e')](_0x2304('0x31'))[_0x2304('0x21')](_0x1cf7e4,_0x19de03)[_0x2304('0x22')](function(_0x3df5e1){if(_0x3df5e1&&_0x3df5e1['length']){return _0x3df5e1;}else{var _0x1d6849=_[_0x2304('0x2d')](_0x41a4b7);if(_0x828953['additionalSearchLead']){var _0x1ef088={};_0x1ef088[_0x828953[_0x2304('0x33')]]=_0x57610e;_[_0x2304('0x2f')](_0x1d6849[_0x2304('0x30')],_0x1ef088);}return _0x105e31[_0x2304('0x1e')](_0x2304('0x34'))[_0x2304('0x21')](_0x1d6849,_0x19de03);}});}});case'contact':var _0x39edd8=_[_0x2304('0x2d')](_0x41a4b7);if(_0x828953[_0x2304('0x2e')]){var _0xb784a1={};_0xb784a1[_0x828953[_0x2304('0x2e')]]=_0x57610e;_[_0x2304('0x2f')](_0x39edd8[_0x2304('0x30')],_0xb784a1);}return _0x105e31[_0x2304('0x1e')]('Contact')['find'](_0x39edd8,_0x19de03)[_0x2304('0x38')]();case _0x2304('0x15'):var _0xec651a=_['cloneDeep'](_0x41a4b7);if(_0x828953[_0x2304('0x33')]){var _0xb784a1={};_0xb784a1[_0x828953[_0x2304('0x33')]]=_0x57610e;_[_0x2304('0x2f')](_0xec651a[_0x2304('0x30')],_0xb784a1);}return _0x105e31['sobject'](_0x2304('0x34'))[_0x2304('0x21')](_0xec651a,_0x19de03);case _0x2304('0x17'):var _0x27872b=_[_0x2304('0x2d')](_0x41a4b7);if(_0x828953[_0x2304('0x36')]){var _0xb784a1={};_0xb784a1[_0x828953[_0x2304('0x36')]]=_0x57610e;_[_0x2304('0x2f')](_0x27872b['$or'],_0xb784a1);}return _0x105e31[_0x2304('0x1e')](_0x2304('0x37'))[_0x2304('0x21')](_0x27872b,_0x19de03);default:return null;}})['then'](function(_0xa9237){if(_0xa9237&&_0xa9237[_0x2304('0x32')]){var _0x58ee6d=_['first'](_0xa9237);if(_0x58ee6d){return BPromise[_0x2304('0x27')]({'id':_0x58ee6d['Id'],'name':_0x58ee6d[_0x2304('0x25')],'phone':_0x58ee6d[_0x2304('0x39')],'endUserType':_0x58ee6d['attributes'][_0x2304('0x3a')][_0x2304('0x3b')]()});}}})['then'](function(_0x77e25){if(_0x77e25){logger[_0x2304('0x1d')](_0x2304('0x3c'),_0x77e25[_0x2304('0x13')],_0x57610e);return BPromise[_0x2304('0x27')](_0x77e25);}else{logger[_0x2304('0x1d')](_0x2304('0x3d'),_0x57610e);var _0x1ae8b1={'Phone':_0x57610e};if(_0x828953['moduleCreate']){if(_0x828953['moduleCreate']==='contact'){logger[_0x2304('0x1d')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x57610e,_0x828953[_0x2304('0x3e')]);_0x1ae8b1[_0x2304('0x3f')]=_0x5988a3!=='<unknown>'?_0x5988a3:util[_0x2304('0x40')](_0x2304('0x41'),_0x57610e);}else if(_0x828953[_0x2304('0x3e')]==='lead'){logger['info']('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x57610e,_0x828953[_0x2304('0x3e')]);_0x1ae8b1[_0x2304('0x3f')]=_0x5988a3!==_0x2304('0x42')?_0x5988a3:util[_0x2304('0x40')](_0x2304('0x41'),_0x57610e);_0x1ae8b1['Company']=_0x2304('0x43');}else if(_0x828953['moduleCreate']===_0x2304('0x17')){logger[_0x2304('0x1d')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x57610e,_0x828953[_0x2304('0x3e')]);_0x1ae8b1['Name']=_0x5988a3!==_0x2304('0x42')?_0x5988a3:util[_0x2304('0x40')](_0x2304('0x41'),_0x57610e);}else{return null;}}return _0x105e31[_0x2304('0x1e')](_[_0x2304('0x44')](_0x828953[_0x2304('0x3e')]))['create'](_0x1ae8b1)[_0x2304('0x22')](function(_0x55bcc0){return BPromise['resolve']({'id':_0x55bcc0['id'],'endUserType':_0x828953[_0x2304('0x3e')]});});}});}function getCustomFields(_0x5ff146,_0x39aed5){var _0x4c0b9d={};if(_0x5ff146[_0x2304('0x32')]>0x0){_[_0x2304('0x45')](_0x5ff146,function(_0x4633f5){if(_[_0x2304('0x46')](['string',_0x2304('0x47')],_0x4633f5[_0x2304('0x3a')])&&_0x4633f5[_0x2304('0x48')]){_0x4c0b9d[_0x4633f5[_0x2304('0x48')]]=_0x4633f5[_0x2304('0x49')][_0x2304('0x4a')]();}else if(_0x4633f5[_0x2304('0x3a')]===_0x2304('0x4b')&&_0x4633f5[_0x2304('0x4c')]&&_0x4633f5[_0x2304('0x48')]){_0x39aed5[_0x4633f5[_0x2304('0x4c')]]&&(_0x4c0b9d[_0x4633f5[_0x2304('0x48')]]=_0x39aed5[_0x4633f5[_0x2304('0x4c')]][_0x2304('0x4a')]());}else if(_0x4633f5[_0x2304('0x3a')]===_0x2304('0x4d')&&_0x4633f5[_0x2304('0x4e')]&&_0x4633f5[_0x2304('0x4e')]['name']&&_0x4633f5[_0x2304('0x48')]){_0x39aed5[_0x4633f5[_0x2304('0x4e')][_0x2304('0x4f')][_0x2304('0x3b')]()]&&(_0x4c0b9d[_0x4633f5[_0x2304('0x48')]]=_0x39aed5[_0x4633f5[_0x2304('0x4e')]['name'][_0x2304('0x3b')]()][_0x2304('0x4a')]());}});}return _0x4c0b9d;}function getConnection(_0xddebd4){var _0x147b8a=_0xddebd4['password'][_0x2304('0x50')](_0xddebd4[_0x2304('0x51')]);var _0x29ba54=new jsforce[(_0x2304('0x52'))]({'oauth2':{'loginUrl':_0xddebd4[_0x2304('0x53')]||_0x2304('0x54'),'clientId':_0xddebd4['clientId'],'clientSecret':_0xddebd4['clientSecret']}});return _0x29ba54['login'](_0xddebd4[_0x2304('0x55')],_0x147b8a)[_0x2304('0x22')](function(){logger[_0x2304('0x1d')](_0x2304('0x56'));return _0x29ba54;});}exports[_0x2304('0x57')]=function(_0x2616f5,_0x42ca49,_0x4d6a39,_0x18465d,_0x11971c,_0x2d1658){var _0x3b56e5,_0x39ed2c,_0x49e922,_0x57ee0e;_0x2d1658[_0x2304('0x58')]=intUtil[_0x2304('0x59')](_0x2d1658[_0x2304('0x58')]);_0x2d1658[_0x2304('0x53')]=intUtil[_0x2304('0x59')](_0x2d1658['remoteUri']);if(_0x11971c&&_0x11971c[_0x2304('0x5a')]){logger[_0x2304('0x1d')](_0x2304('0x5b'),'Recording\x20is\x20enabled!');_0x42ca49['recordingURL']=util[_0x2304('0x40')](_0x2304('0x5c'),_0x2d1658[_0x2304('0x58')],_0x42ca49['uniqueid'],md5(_0x42ca49['uniqueid']));}else{_0x42ca49[_0x2304('0x5d')]='';}return getConnection(_0x2d1658)[_0x2304('0x22')](function(_0x40f04f){_0x57ee0e=_0x40f04f;return getUser(_0x2d1658,_0x18465d[_0x2304('0x5e')],_0x57ee0e);})[_0x2304('0x22')](function(_0x2b5e70){_0x3b56e5=_0x2b5e70;return getEndUser(_0x2d1658,_0x4d6a39,_0x42ca49[_0x2304('0x5f')],_0x42ca49[_0x2304('0x60')],_0x57ee0e);})[_0x2304('0x22')](function(_0x5e9a62){_0x39ed2c=_0x5e9a62;return getTicket(_0x2d1658,_0x3b56e5,_0x39ed2c,_0x4d6a39,_0x42ca49,_0x4d6a39['Fields'],_0x57ee0e,'queue');})['then'](function(_0x241e89){_0x49e922=_0x241e89;logger[_0x2304('0x1d')]('[QUEUE]\x20Ticket\x20%s\x20created',_0x49e922['id']);logger[_0x2304('0x1d')]('[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x49e922['id'],_0x18465d[_0x2304('0x4f')],_0x2d1658[_0x2304('0x3a')]);switch(_0x2d1658[_0x2304('0x3a')]){case _0x2304('0x61'):emit(util[_0x2304('0x40')](_0x2304('0x62'),_0x18465d[_0x2304('0x4f')]),'trigger:salesforce:display',{'recordId':_0x49e922['id']});break;case'newTab':emit(util[_0x2304('0x40')](_0x2304('0x62'),_0x18465d[_0x2304('0x4f')]),_0x2304('0x63'),{'uri':util[_0x2304('0x40')]('%s/%s/e',_0x57ee0e[_0x2304('0x64')],_0x49e922['id'])});break;default:logger['error'](_0x2304('0x65'));}})[_0x2304('0x66')](function(_0x358808){logger[_0x2304('0x67')](_0x2304('0x5b'),_0x358808);});};exports[_0x2304('0x68')]=function(_0x1325e7,_0x130df2,_0x20b093,_0x31bd6c,_0x1fd3d2,_0x3c367b,_0x421647){var _0x1f80c3,_0x512b82,_0x3fc1c4,_0x30111d;_0x3c367b[_0x2304('0x58')]=intUtil[_0x2304('0x59')](_0x3c367b[_0x2304('0x58')]);_0x3c367b[_0x2304('0x53')]=intUtil[_0x2304('0x59')](_0x3c367b[_0x2304('0x53')]);if(_0x421647&&_0x421647['recordingFormat']&&_0x421647['recordingFormat']!==_0x2304('0x69')){logger['info'](_0x2304('0x6a'),_0x2304('0x6b'));_0x130df2['recordingURL']=util['format'](_0x2304('0x5c'),_0x3c367b[_0x2304('0x58')],_0x130df2['uniqueid'],md5(_0x130df2[_0x2304('0x6c')]));}return getConnection(_0x3c367b)[_0x2304('0x22')](function(_0x54707b){_0x30111d=_0x54707b;return getUser(_0x3c367b,_0x31bd6c[_0x2304('0x5e')],_0x30111d);})[_0x2304('0x22')](function(_0x50b86f){_0x1f80c3=_0x50b86f;return getEndUser(_0x3c367b,_0x20b093,_0x130df2['destcalleridname'],_0x130df2[_0x2304('0x6d')],_0x30111d);})[_0x2304('0x22')](function(_0x106457){_0x512b82=_0x106457;return getTicket(_0x3c367b,_0x1f80c3,_0x512b82,_0x20b093,_0x130df2,_0x20b093[_0x2304('0x6e')],_0x30111d,_0x2304('0x68'));})[_0x2304('0x22')](function(_0x35280d){_0x3fc1c4=_0x35280d;logger[_0x2304('0x1d')](_0x2304('0x6f'),_0x3fc1c4['id']);logger[_0x2304('0x1d')](_0x2304('0x70'),_0x3fc1c4['id'],_0x31bd6c[_0x2304('0x4f')],_0x3c367b[_0x2304('0x3a')]);switch(_0x3c367b[_0x2304('0x3a')]){case _0x2304('0x61'):emit(util[_0x2304('0x40')]('user:%s',_0x31bd6c[_0x2304('0x4f')]),_0x2304('0x71'),{'recordId':_0x3fc1c4['id']});break;case'newTab':emit(util[_0x2304('0x40')](_0x2304('0x62'),_0x31bd6c[_0x2304('0x4f')]),_0x2304('0x63'),{'uri':util['format'](_0x2304('0x72'),_0x30111d[_0x2304('0x64')],_0x3fc1c4['id'])});break;default:logger[_0x2304('0x67')](_0x2304('0x6a'),_0x2304('0x73'));}})[_0x2304('0x66')](function(_0x502869){logger[_0x2304('0x67')]('[OUTBOUND]',_0x502869);});};exports['unmanaged']=function(_0x18f796,_0x2027a2,_0x28e1c4,_0x52a87f,_0xb1a471,_0x1839d6){var _0x2eb60e,_0x36a97d,_0x5cf33b,_0x6b1002;_0x1839d6[_0x2304('0x58')]=intUtil[_0x2304('0x59')](_0x1839d6[_0x2304('0x58')]);_0x1839d6['remoteUri']=intUtil[_0x2304('0x59')](_0x1839d6[_0x2304('0x53')]);if(_0xb1a471&&_0xb1a471[_0x2304('0x5a')]){logger['info']('['+_0x2027a2[_0x2304('0x74')]['toUpperCase']()+']',_0x2304('0x6b'));_0x2027a2[_0x2304('0x5d')]=util[_0x2304('0x40')](_0x2304('0x5c'),_0x1839d6[_0x2304('0x58')],_0x2027a2['uniqueid'],md5(_0x2027a2[_0x2304('0x6c')]));}else{_0x2027a2['recordingURL']='';}return getConnection(_0x1839d6)[_0x2304('0x22')](function(_0x494507){_0x6b1002=_0x494507;if(!_['isNil'](_0x52a87f)){return getUser(_0x1839d6,_0x52a87f['name'],_0x6b1002);}else{return getUser(_0x1839d6,null,_0x6b1002);}})[_0x2304('0x22')](function(_0x528bbd){_0x2eb60e=_0x528bbd;return getEndUser(_0x1839d6,_0x28e1c4,_0x2027a2[_0x2304('0x5f')],_0x2027a2[_0x2304('0x60')],_0x6b1002);})['then'](function(_0xb6df81){_0x36a97d=_0xb6df81;return getTicket(_0x1839d6,_0x2eb60e,_0x36a97d,_0x28e1c4,_0x2027a2,_0x28e1c4['Fields'],_0x6b1002);})[_0x2304('0x22')](function(_0x4a037f){_0x5cf33b=_0x4a037f;logger[_0x2304('0x1d')]('['+_0x2027a2[_0x2304('0x74')][_0x2304('0x75')]()+']\x20Ticket\x20%s\x20created.',_0x5cf33b['id']);logger[_0x2304('0x1d')]('['+_0x2027a2[_0x2304('0x74')][_0x2304('0x75')]()+_0x2304('0x76'),_0x1839d6[_0x2304('0x3a')]);})[_0x2304('0x66')](function(_0x14ceb6){logger['error']('['+_0x2027a2[_0x2304('0x74')]['toUpperCase']()+']',_0x14ceb6);});};
\ No newline at end of file
index 731f548..6ea46b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8961=['includes','string','picklist','nameField','toLowerCase','content','toString','type','idField','customField','variable','variableName','Variable','name',']\x20getTicket\x20input\x20crm','incident','assign','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number',']\x20getTicket\x20crm','?sysparm_query=name%3D','Incident','push',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','all','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','trigger:browser:url','username','password','sysparm_display_value=true','remoteUri','serverUrl','stripTrailingSlash','format','isNil','email','outbound','destcalleridnum','calleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','unmanaged',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','bluebird','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','info','toUpperCase','],\x20getAdminUser\x20crm','catch','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','userId','sys_id','adminId','],\x20getUser\x20crm','error',']\x20using\x20admin\x20profile','adminEmail','],\x20createEndUser\x20input\x20crm','POST','user','System','endUserNumber','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','forEach'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8961,0x11d));var _0x1896=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0x8961[_0x411add];return _0x238242;};'use strict';var _=require('lodash');var Promise=require(_0x1896('0x0'));var rp=require(_0x1896('0x1'));var util=require(_0x1896('0x2'));var md5=require('md5');var Redis=require(_0x1896('0x3'));var intUtil=require(_0x1896('0x4'));var config=require(_0x1896('0x5'));var logger=require(_0x1896('0x6'))(_0x1896('0x7'));config[_0x1896('0x8')]=_[_0x1896('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x1896('0xa'))(new Redis(config[_0x1896('0x8')]));function getAdminUser(_0x4af711,_0x339b11,_0x4564a5,_0x2c7ccd,_0x5a716c,_0x47d436){return new Promise(function(_0x168582,_0x156ab3){var _0x2dacf0={'method':_0x1896('0xb'),'uri':_0x2c7ccd+_0x1896('0xc')+'&'+_0x5a716c+'&'+_0x47d436,'auth':_0x339b11,'json':!![]};return rp(_0x2dacf0)[_0x1896('0xd')](function(_0x19c738){if(_0x19c738[_0x1896('0xe')][_0x1896('0xf')]>0x0){_0x4564a5['adminId']=_0x19c738[_0x1896('0xe')][0x0]['sys_id'];}logger[_0x1896('0x10')]('['+[_0x4af711[_0x1896('0x11')]()]+_0x1896('0x12'),_0x4564a5);_0x168582(_0x4564a5);})[_0x1896('0x13')](function(_0x2bde02){logger['error']('['+[_0x4af711[_0x1896('0x11')]()]+']',_0x2bde02[_0x1896('0x14')]);_0x156ab3(_0x2bde02[_0x1896('0x14')]);});});}function getUser(_0x2652c8,_0x5e76d5,_0x529748,_0x317ba2,_0xc1dd10){return function(_0x293b26){logger[_0x1896('0x10')]('['+[_0x2652c8['toUpperCase']()]+_0x1896('0x15'),_0x293b26);return new Promise(function(_0x30c535,_0x3dbea7){if(intUtil[_0x1896('0x16')](_0x293b26[_0x1896('0x17')])){var _0x87af47={'method':_0x1896('0xb'),'uri':_0x529748+_0x1896('0x18')+_0x293b26[_0x1896('0x17')]+'&'+_0x317ba2+'&'+_0xc1dd10,'auth':_0x5e76d5,'json':!![]};logger['info']('['+[_0x2652c8[_0x1896('0x11')]()]+_0x1896('0x19'),_0x87af47);return rp(_0x87af47)['then'](function(_0x1ba618){logger[_0x1896('0x10')]('['+[_0x2652c8[_0x1896('0x11')]()]+_0x1896('0x1a'),_0x1ba618);if(_0x1ba618[_0x1896('0xe')]['length']>0x0&&String(_0x1ba618['result'][0x0]['active'])==='true'){_0x293b26[_0x1896('0x1b')]=_0x1ba618[_0x1896('0xe')][0x0][_0x1896('0x1c')];}else{_0x293b26[_0x1896('0x1b')]=_0x293b26[_0x1896('0x1d')];_0x293b26[_0x1896('0x17')]=_0x293b26['adminEmail'];}logger[_0x1896('0x10')]('['+[_0x2652c8[_0x1896('0x11')]()]+_0x1896('0x1e'),_0x293b26);_0x30c535(_0x293b26);})['catch'](function(_0x290cde){logger[_0x1896('0x1f')]('['+[_0x2652c8['toUpperCase']()]+']',_0x290cde[_0x1896('0x14')]);_0x3dbea7(_0x290cde[_0x1896('0x14')]);});}else{logger[_0x1896('0x10')]('['+[_0x2652c8[_0x1896('0x11')]()]+_0x1896('0x20'));_0x293b26[_0x1896('0x1b')]=_0x293b26[_0x1896('0x1d')];_0x293b26[_0x1896('0x17')]=_0x293b26[_0x1896('0x21')];_0x30c535(_0x293b26);}});};}function createEndUser(_0x22075b,_0x522a52,_0x1b2a9e,_0x58d7db,_0x493807){logger[_0x1896('0x10')]('['+[_0x22075b[_0x1896('0x11')]()]+_0x1896('0x22'),_0x1b2a9e);return new Promise(function(_0x3fddc7,_0x265d69){var _0x202b2e={'method':_0x1896('0x23'),'uri':_0x58d7db+'sys_user?'+_0x493807,'body':{'user_name':_0x1b2a9e['endUserNumber'],'roles':_0x1896('0x24'),'first_name':_0x1b2a9e['endUserNumber'],'active':'true','date_format':_0x1896('0x25'),'phone':_0x1b2a9e[_0x1896('0x26')]},'auth':_0x522a52,'json':!![]};return rp(_0x202b2e)[_0x1896('0xd')](function(_0x2d5a72){logger[_0x1896('0x10')]('['+[_0x22075b[_0x1896('0x11')]()]+_0x1896('0x27'),_0x2d5a72[_0x1896('0xe')]);_0x1b2a9e[_0x1896('0x28')]=_0x2d5a72[_0x1896('0xe')][_0x1896('0x1c')];_0x3fddc7(_0x1b2a9e);})[_0x1896('0x13')](function(_0x22fb4e){logger['error']('['+[_0x22075b[_0x1896('0x11')]()]+']',_0x22fb4e['message']);_0x265d69(_0x22fb4e[_0x1896('0x14')]);});});}function getEndUser(_0x3c0f8e,_0x1a7223,_0x3e215,_0x416b91,_0x1c76b2){return function(_0x235148){logger[_0x1896('0x10')]('['+[_0x3c0f8e[_0x1896('0x11')]()]+_0x1896('0x29'),_0x235148);return new Promise(function(_0x5b3a39,_0x1991d3){var _0x14c46d={'method':_0x1896('0xb'),'uri':_0x3e215+_0x1896('0x2a')+_0x235148['endUserNumber']+'&'+_0x416b91+'&'+_0x1c76b2,'auth':_0x1a7223,'json':!![]};return rp(_0x14c46d)['then'](function(_0x429298){if(_0x429298['result'][_0x1896('0xf')]>0x0){_0x235148['endUserId']=_0x429298[_0x1896('0xe')][0x0][_0x1896('0x1c')];logger[_0x1896('0x10')]('['+[_0x3c0f8e['toUpperCase']()]+_0x1896('0x2b'),_0x235148);_0x5b3a39(_0x235148);}else{return createEndUser(_0x3c0f8e,_0x1a7223,_0x235148,_0x3e215,_0x416b91)[_0x1896('0xd')](function(_0x45253d){logger[_0x1896('0x10')]('['+[_0x3c0f8e[_0x1896('0x11')]()]+'],\x20createEndUser\x20crm',_0x45253d);_0x5b3a39(_0x45253d);});}})[_0x1896('0x13')](function(_0x893d9c){logger[_0x1896('0x1f')]('['+[_0x3c0f8e[_0x1896('0x11')]()]+']',_0x893d9c['message']);_0x1991d3(_0x893d9c[_0x1896('0x14')]);});});};}function getCustomFields(_0xc3658b,_0x56f312){var _0xf3cf9b={};if(_0xc3658b[_0x1896('0xf')]>0x0){_[_0x1896('0x2c')](_0xc3658b,function(_0x3d0b78){if(_[_0x1896('0x2d')]([_0x1896('0x2e'),_0x1896('0x2f')],_0x3d0b78['type'])&&_0x3d0b78['nameField']&&!_0x3d0b78['customField']){_0xf3cf9b[_0x3d0b78[_0x1896('0x30')][_0x1896('0x31')]()]=_0x3d0b78[_0x1896('0x32')][_0x1896('0x33')]();}else if(_[_0x1896('0x2d')]([_0x1896('0x2e'),_0x1896('0x2f')],_0x3d0b78[_0x1896('0x34')])&&_0x3d0b78[_0x1896('0x35')]&&_0x3d0b78[_0x1896('0x36')]){_0xf3cf9b[_0x3d0b78['idField'][_0x1896('0x31')]()]=_0x3d0b78['content']['toString']();}else if(_0x3d0b78['type']===_0x1896('0x37')&&_0x3d0b78[_0x1896('0x38')]&&_0x3d0b78[_0x1896('0x35')]&&_0x3d0b78['customField']){_0xf3cf9b[_0x3d0b78['idField'][_0x1896('0x31')]()]=_0x56f312[_0x3d0b78[_0x1896('0x38')]][_0x1896('0x33')]();}else if(_0x3d0b78[_0x1896('0x34')]==='customVariable'&&_0x3d0b78[_0x1896('0x39')]&&_0x3d0b78[_0x1896('0x39')][_0x1896('0x3a')]&&_0x3d0b78[_0x1896('0x35')]&&_0x3d0b78[_0x1896('0x36')]){_0xf3cf9b[_0x3d0b78[_0x1896('0x35')][_0x1896('0x31')]()]=_0x56f312[_0x3d0b78['Variable'][_0x1896('0x3a')]['toLowerCase']()]['toString']();}});}return _0xf3cf9b;}function getTicket(_0x5f121d,_0x485be4,_0x8720b1,_0x2d230,_0x19d9e3,_0xd20e38){return function(_0x483ae8){logger[_0x1896('0x10')]('['+[_0x5f121d[_0x1896('0x11')]()]+_0x1896('0x3b'),_0x483ae8);return new Promise(function(_0x4be019,_0x37e204){var _0x331437=_0x5f121d[_0x1896('0x31')]()==='outbound'?_0x483ae8[_0x1896('0x1b')]:_0x483ae8[_0x1896('0x28')];var _0xe91960={'method':'POST','uri':_0x8720b1+_0x1896('0x3c')+'?'+_0xd20e38,'body':Object[_0x1896('0x3d')]({},{'active':'true','caller_id':_0x331437,'assigned_to':_0x483ae8[_0x1896('0x1b')],'short_description':intUtil[_0x1896('0x3e')](_0x2d230[_0x1896('0x3f')],_0x19d9e3,'\x20'),'description':intUtil[_0x1896('0x3e')](_0x2d230[_0x1896('0x40')],_0x19d9e3,'\x0a')},getCustomFields(_0x2d230[_0x1896('0x41')],_0x19d9e3)),'auth':_0x485be4,'json':!![]};return rp(_0xe91960)[_0x1896('0xd')](function(_0x170125){logger[_0x1896('0x10')]('['+[_0x5f121d[_0x1896('0x11')]()]+_0x1896('0x42'),_0x170125[_0x1896('0xe')]);_0x483ae8[_0x1896('0x43')]=_0x170125['result'][_0x1896('0x1c')];_0x483ae8[_0x1896('0x44')]=_0x170125[_0x1896('0xe')][_0x1896('0x45')];logger['info']('['+[_0x5f121d[_0x1896('0x11')]()]+_0x1896('0x46'),_0x483ae8);_0x4be019(_0x483ae8);})['catch'](function(_0xf95cd4){logger['error']('['+[_0x5f121d[_0x1896('0x11')]()]+']',_0xf95cd4['message']);_0x37e204(_0xf95cd4['message']);});});};}function createRemoteTag(_0xb65c7b,_0x58842d,_0x275e95,_0x4773e1){return new Promise(function(_0x23fd6c,_0x556a8d){var _0x1004d6={'method':_0x1896('0x23'),'uri':_0x275e95+'label'+'?'+_0x4773e1,'body':{'short_description':_0xb65c7b,'global':!![],'active':!![],'name':_0xb65c7b},'auth':_0x58842d,'json':!![]};return rp(_0x1004d6)['then'](function(_0x36dd66){var _0x219edd=_0x36dd66[_0x1896('0xe')]['sys_id'];_0x23fd6c(_0x219edd);});});}function getRemoteTag(_0x337d90,_0x12f1a8,_0x8eb28b,_0x379413,_0x6904c8){return new Promise(function(_0x2c42f9,_0x52ee5c){var _0x184228={'method':_0x1896('0xb'),'uri':_0x8eb28b+'label'+_0x1896('0x47')+_0x337d90+'&'+_0x379413,'auth':_0x12f1a8,'json':!![]};return rp(_0x184228)[_0x1896('0xd')](function(_0x1ac136){if(_0x1ac136[_0x1896('0xe')][_0x1896('0xf')]>0x0){var _0x58dd6d=_0x1ac136[_0x1896('0xe')][0x0]['sys_id'];_0x2c42f9(_0x58dd6d);}else{return createRemoteTag(_0x337d90,_0x12f1a8,_0x8eb28b,_0x379413)[_0x1896('0xd')](function(_0x266652){_0x2c42f9(_0x266652);});}});});}function assignTagToIncident(_0x52552c,_0x569203,_0x106787,_0x5dfe93,_0x5a1eaa){return new Promise(function(_0x3c9593,_0x2729be){var _0x44e35e={'method':_0x1896('0x23'),'uri':_0x106787+'label_entry'+'?'+_0x5a1eaa,'body':{'label':_0x52552c,'table':'incident','id_type':_0x1896('0x48'),'table_key':_0x5dfe93[_0x1896('0x43')],'title':'Incident\x20-\x20'+_0x5dfe93['ticketNumber'],'id_display':_0x5dfe93['ticketNumber']},'auth':_0x569203,'json':!![]};return rp(_0x44e35e)[_0x1896('0xd')](function(_0x569f93){_0x3c9593();})[_0x1896('0x13')](function(){_0x3c9593();});});}function manageTags(_0x25f34d,_0x3ca242,_0xebf5f5,_0x4c2eff,_0x2b6157,_0x9e5252,_0x44b8b0){return new Promise(function(_0x365eeb,_0x5bb948){var _0x18a59d=[];_0x3ca242[_0x1896('0x2c')](function(_0x478066){_0x18a59d[_0x1896('0x49')](getRemoteTag(_0x478066,_0xebf5f5,_0x4c2eff,_0x9e5252,_0x44b8b0));});return Promise['all'](_0x18a59d)[_0x1896('0xd')](function(_0x1cce2f){if(_0x1cce2f[_0x1896('0xf')]){logger[_0x1896('0x10')]('['+[_0x25f34d[_0x1896('0x11')]()]+_0x1896('0x4a'),_0x1cce2f);var _0x583694=[];_0x1cce2f[_0x1896('0x2c')](function(_0x109741){_0x583694[_0x1896('0x49')](assignTagToIncident(_0x109741,_0xebf5f5,_0x4c2eff,_0x2b6157,_0x9e5252));});return Promise[_0x1896('0x4b')](_0x583694)[_0x1896('0xd')](function(){_0x365eeb();})[_0x1896('0x13')](function(){_0x365eeb();});}else{_0x365eeb();}});});}function getTags(_0x4bc315,_0x128146,_0xb6e7c2,_0x3a7b04,_0x1dc035,_0x26e835){return function(_0x14503e){return new Promise(function(_0x21c3b7,_0x1f897e){var _0x28b475=[];var _0x24e1ee=_0x3a7b04['Tags'];if(_0x24e1ee&&_0x24e1ee[_0x1896('0xf')]>0x0){_0x28b475=_[_0x1896('0x4c')](_0x24e1ee,'name');}if(_0x28b475[_0x1896('0xf')]>0x0){return manageTags(_0x4bc315,_0x28b475,_0x128146,_0xb6e7c2,_0x14503e,_0x1dc035,_0x26e835)['then'](function(){_0x21c3b7(_0x14503e);});}else{_0x21c3b7(_0x14503e);}});};}function emit(_0xb38f8a,_0x278d87,_0x1ca6ab){var _0x237899=_0x1896('0x4d')+_0x1896('0x4e')+_0x1896('0x4f')+_0x1896('0x50');var _0x2cc4c9={'uri':_0xb38f8a+_0x1896('0x51')+_0x1ca6ab+_0x237899};io['to'](util['format']('user:%s',_0x278d87))['emit'](_0x1896('0x52'),_0x2cc4c9);}exports['cs']=function(_0x1e5501,_0x30da0f,_0x50bc57,_0x10d6d7,_0x110a3b,_0x4df228,_0xd22e47,_0x24bde3){var _0x4a5b64={};var _0x5cce8b={'user':_0x4df228[_0x1896('0x53')],'pass':_0x4df228[_0x1896('0x54')]};var _0x114d45='sysparm_limit=1';var _0xabcf71=_0x1896('0x55');_0x4df228[_0x1896('0x56')]=intUtil['stripTrailingSlash'](_0x4df228['remoteUri']);_0x4df228[_0x1896('0x57')]=intUtil[_0x1896('0x58')](_0x4df228[_0x1896('0x57')]);var _0x12362f=util[_0x1896('0x59')]('%s/api/now/table/',_0x4df228['remoteUri']);_0x4a5b64[_0x1896('0x17')]=!_[_0x1896('0x5a')](_0x10d6d7)?_0x10d6d7[_0x1896('0x5b')]:null;_0x4a5b64[_0x1896('0x21')]=_0x4df228[_0x1896('0x5b')];_0x4a5b64[_0x1896('0x26')]=_0x24bde3[_0x1896('0x31')]()===_0x1896('0x5c')?_0x30da0f[_0x1896('0x5d')]:_0x30da0f[_0x1896('0x5e')];_0x4a5b64[_0x1896('0x5f')]=_0x24bde3===_0x1896('0x60')||_0x24bde3==='unmanaged'?_0x1896('0x60'):_0x1896('0x5c');var _0xe22c20=util[_0x1896('0x59')](_0x1896('0x61'),_0x4df228['serverUrl'],_0x30da0f[_0x1896('0x62')],md5(_0x30da0f[_0x1896('0x62')]));if(_0x110a3b&&_0x110a3b[_0x1896('0x63')]){logger['info'](_0x1896('0x64'),_0x1896('0x65'));_0x30da0f[_0x1896('0x66')]=_0xe22c20;}else if(_0xd22e47&&_0xd22e47[_0x1896('0x67')]&&_0xd22e47['recordingFormat']!==_0x1896('0x68')){logger['info'](_0x1896('0x69'),_0x1896('0x65'));_0x30da0f['recordingURL']=_0xe22c20;}else{_0x30da0f['recordingURL']='';}return getAdminUser(_0x24bde3,_0x5cce8b,_0x4a5b64,_0x12362f,_0xabcf71,_0x114d45)[_0x1896('0xd')](getUser(_0x24bde3,_0x5cce8b,_0x12362f,_0xabcf71,_0x114d45))[_0x1896('0xd')](getEndUser(_0x24bde3,_0x5cce8b,_0x12362f,_0xabcf71,_0x114d45))[_0x1896('0xd')](getTicket(_0x24bde3,_0x5cce8b,_0x12362f,_0x50bc57,_0x30da0f,_0xabcf71))[_0x1896('0xd')](function(_0xcd4746){logger[_0x1896('0x10')](util[_0x1896('0x59')](_0x1896('0x6a'),_0xcd4746['ticketId']));logger[_0x1896('0x10')](util[_0x1896('0x59')]('call\x20direction:\x20%s',_0x24bde3));if(_0x24bde3!==_0x1896('0x6b')){logger[_0x1896('0x10')]('['+[_0x24bde3[_0x1896('0x11')]()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x4df228[_0x1896('0x56')],_0x10d6d7['name'],_0xcd4746['ticketId']);}})[_0x1896('0x13')](function(_0x314e68){logger[_0x1896('0x1f')]('['+[_0x24bde3[_0x1896('0x11')]()]+_0x1896('0x6c'),util[_0x1896('0x6d')](_0x314e68,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x0696=['picklist','nameField','content','toString','customField','idField','toLowerCase','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','getString','Subjects','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','incident','Incident','Incident\x20-\x20','forEach','push',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','all','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','calleridnum','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','request-promise','util','md5','../../../../config/environment','../../../../config/logger','servicenow','redis','localhost','GET','result','length','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','message','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','true','userId','adminEmail','catch','error',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','endUserNumber','then','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','includes','string'];(function(_0x2e9d2c,_0x125cc4){var _0x1027d0=function(_0x143ace){while(--_0x143ace){_0x2e9d2c['push'](_0x2e9d2c['shift']());}};_0x1027d0(++_0x125cc4);}(_0x0696,0x1e2));var _0x6069=function(_0x1e06f1,_0x59d7e1){_0x1e06f1=_0x1e06f1-0x0;var _0x34f77e=_0x0696[_0x1e06f1];return _0x34f77e;};'use strict';var _=require('lodash');var Promise=require('bluebird');var rp=require(_0x6069('0x0'));var util=require(_0x6069('0x1'));var md5=require(_0x6069('0x2'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x6069('0x3'));var logger=require(_0x6069('0x4'))(_0x6069('0x5'));config['redis']=_['defaults'](config[_0x6069('0x6')],{'host':_0x6069('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6069('0x6')]));function getAdminUser(_0x3d818d,_0x401847,_0x53d6f2,_0x14cdfc,_0xbb03df,_0x4df1f8){return new Promise(function(_0x39f2d5,_0xa58d26){var _0x13832d={'method':_0x6069('0x8'),'uri':_0x14cdfc+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0xbb03df+'&'+_0x4df1f8,'auth':_0x401847,'json':!![]};return rp(_0x13832d)['then'](function(_0x265407){if(_0x265407[_0x6069('0x9')][_0x6069('0xa')]>0x0){_0x53d6f2['adminId']=_0x265407[_0x6069('0x9')][0x0][_0x6069('0xb')];}logger[_0x6069('0xc')]('['+[_0x3d818d[_0x6069('0xd')]()]+_0x6069('0xe'),_0x53d6f2);_0x39f2d5(_0x53d6f2);})['catch'](function(_0x3fffed){logger['error']('['+[_0x3d818d[_0x6069('0xd')]()]+']',_0x3fffed[_0x6069('0xf')]);_0xa58d26(_0x3fffed['message']);});});}function getUser(_0x5b3cfb,_0x3d6d19,_0x5e0e8c,_0x364a59,_0xda3cf8){return function(_0x13e2a5){logger[_0x6069('0xc')]('['+[_0x5b3cfb[_0x6069('0xd')]()]+'],\x20getUser\x20input\x20crm',_0x13e2a5);return new Promise(function(_0x290cff,_0x5c6aa2){if(intUtil['validateEmail'](_0x13e2a5[_0x6069('0x10')])){var _0x2df38d={'method':'GET','uri':_0x5e0e8c+_0x6069('0x11')+_0x13e2a5['userEmail']+'&'+_0x364a59+'&'+_0xda3cf8,'auth':_0x3d6d19,'json':!![]};logger['info']('['+[_0x5b3cfb[_0x6069('0xd')]()]+_0x6069('0x12'),_0x2df38d);return rp(_0x2df38d)['then'](function(_0x204a36){logger[_0x6069('0xc')]('['+[_0x5b3cfb[_0x6069('0xd')]()]+_0x6069('0x13'),_0x204a36);if(_0x204a36['result'][_0x6069('0xa')]>0x0&&String(_0x204a36[_0x6069('0x9')][0x0][_0x6069('0x14')])===_0x6069('0x15')){_0x13e2a5[_0x6069('0x16')]=_0x204a36[_0x6069('0x9')][0x0]['sys_id'];}else{_0x13e2a5['userId']=_0x13e2a5['adminId'];_0x13e2a5[_0x6069('0x10')]=_0x13e2a5[_0x6069('0x17')];}logger[_0x6069('0xc')]('['+[_0x5b3cfb[_0x6069('0xd')]()]+'],\x20getUser\x20crm',_0x13e2a5);_0x290cff(_0x13e2a5);})[_0x6069('0x18')](function(_0x37b7d8){logger[_0x6069('0x19')]('['+[_0x5b3cfb[_0x6069('0xd')]()]+']',_0x37b7d8[_0x6069('0xf')]);_0x5c6aa2(_0x37b7d8['message']);});}else{logger[_0x6069('0xc')]('['+[_0x5b3cfb[_0x6069('0xd')]()]+_0x6069('0x1a'));_0x13e2a5[_0x6069('0x16')]=_0x13e2a5['adminId'];_0x13e2a5[_0x6069('0x10')]=_0x13e2a5[_0x6069('0x17')];_0x290cff(_0x13e2a5);}});};}function createEndUser(_0x3b8f1d,_0x1c88b4,_0x4ae89a,_0xebc5db,_0x21b676){logger[_0x6069('0xc')]('['+[_0x3b8f1d[_0x6069('0xd')]()]+_0x6069('0x1b'),_0x4ae89a);return new Promise(function(_0x190af4,_0x5a2a0b){var _0x2aa33b={'method':_0x6069('0x1c'),'uri':_0xebc5db+'sys_user?'+_0x21b676,'body':{'user_name':_0x4ae89a[_0x6069('0x1d')],'roles':'user','first_name':_0x4ae89a[_0x6069('0x1d')],'active':_0x6069('0x15'),'date_format':'System','phone':_0x4ae89a[_0x6069('0x1d')]},'auth':_0x1c88b4,'json':!![]};return rp(_0x2aa33b)[_0x6069('0x1e')](function(_0x451c73){logger[_0x6069('0xc')]('['+[_0x3b8f1d[_0x6069('0xd')]()]+_0x6069('0x1f'),_0x451c73[_0x6069('0x9')]);_0x4ae89a[_0x6069('0x20')]=_0x451c73[_0x6069('0x9')][_0x6069('0xb')];_0x190af4(_0x4ae89a);})[_0x6069('0x18')](function(_0xe2decc){logger[_0x6069('0x19')]('['+[_0x3b8f1d[_0x6069('0xd')]()]+']',_0xe2decc['message']);_0x5a2a0b(_0xe2decc[_0x6069('0xf')]);});});}function getEndUser(_0x5ca231,_0x2d878a,_0x1f56d9,_0x3b15b7,_0x5e597b){return function(_0x5970a8){logger[_0x6069('0xc')]('['+[_0x5ca231['toUpperCase']()]+_0x6069('0x21'),_0x5970a8);return new Promise(function(_0x286423,_0x283841){var _0x583b10={'method':_0x6069('0x8'),'uri':_0x1f56d9+_0x6069('0x22')+_0x5970a8[_0x6069('0x1d')]+'&'+_0x3b15b7+'&'+_0x5e597b,'auth':_0x2d878a,'json':!![]};return rp(_0x583b10)[_0x6069('0x1e')](function(_0x3275e2){if(_0x3275e2[_0x6069('0x9')]['length']>0x0){_0x5970a8[_0x6069('0x20')]=_0x3275e2[_0x6069('0x9')][0x0][_0x6069('0xb')];logger[_0x6069('0xc')]('['+[_0x5ca231[_0x6069('0xd')]()]+_0x6069('0x23'),_0x5970a8);_0x286423(_0x5970a8);}else{return createEndUser(_0x5ca231,_0x2d878a,_0x5970a8,_0x1f56d9,_0x3b15b7)[_0x6069('0x1e')](function(_0x58e616){logger[_0x6069('0xc')]('['+[_0x5ca231[_0x6069('0xd')]()]+'],\x20createEndUser\x20crm',_0x58e616);_0x286423(_0x58e616);});}})[_0x6069('0x18')](function(_0x2d2901){logger['error']('['+[_0x5ca231[_0x6069('0xd')]()]+']',_0x2d2901['message']);_0x283841(_0x2d2901[_0x6069('0xf')]);});});};}function getCustomFields(_0xf33285,_0x3a5732){var _0x4f7903={};if(_0xf33285[_0x6069('0xa')]>0x0){_['forEach'](_0xf33285,function(_0x1bf572){if(_[_0x6069('0x24')]([_0x6069('0x25'),_0x6069('0x26')],_0x1bf572['type'])&&_0x1bf572[_0x6069('0x27')]&&!_0x1bf572['customField']){_0x4f7903[_0x1bf572[_0x6069('0x27')]['toLowerCase']()]=_0x1bf572[_0x6069('0x28')][_0x6069('0x29')]();}else if(_[_0x6069('0x24')](['string',_0x6069('0x26')],_0x1bf572['type'])&&_0x1bf572['idField']&&_0x1bf572[_0x6069('0x2a')]){_0x4f7903[_0x1bf572[_0x6069('0x2b')][_0x6069('0x2c')]()]=_0x1bf572[_0x6069('0x28')][_0x6069('0x29')]();}else if(_0x1bf572['type']===_0x6069('0x2d')&&_0x1bf572[_0x6069('0x2e')]&&_0x1bf572[_0x6069('0x2b')]&&_0x1bf572[_0x6069('0x2a')]){_0x4f7903[_0x1bf572[_0x6069('0x2b')]['toLowerCase']()]=_0x3a5732[_0x1bf572[_0x6069('0x2e')]]['toString']();}else if(_0x1bf572['type']===_0x6069('0x2f')&&_0x1bf572['Variable']&&_0x1bf572[_0x6069('0x30')][_0x6069('0x31')]&&_0x1bf572[_0x6069('0x2b')]&&_0x1bf572[_0x6069('0x2a')]){_0x4f7903[_0x1bf572[_0x6069('0x2b')]['toLowerCase']()]=_0x3a5732[_0x1bf572[_0x6069('0x30')][_0x6069('0x31')]['toLowerCase']()][_0x6069('0x29')]();}});}return _0x4f7903;}function getTicket(_0x26731f,_0x52e8ab,_0x359abd,_0x4ab2a9,_0x1b0b1e,_0x2ef972){return function(_0x39a16b){logger[_0x6069('0xc')]('['+[_0x26731f[_0x6069('0xd')]()]+_0x6069('0x32'),_0x39a16b);return new Promise(function(_0x48ad8a,_0x1a8587){var _0x4c8ce4=_0x26731f['toLowerCase']()===_0x6069('0x33')?_0x39a16b[_0x6069('0x16')]:_0x39a16b[_0x6069('0x20')];var _0x2e0c78={'method':_0x6069('0x1c'),'uri':_0x359abd+'incident'+'?'+_0x2ef972,'body':Object['assign']({},{'active':_0x6069('0x15'),'caller_id':_0x4c8ce4,'assigned_to':_0x39a16b[_0x6069('0x16')],'short_description':intUtil[_0x6069('0x34')](_0x4ab2a9[_0x6069('0x35')],_0x1b0b1e,'\x20'),'description':intUtil['getString'](_0x4ab2a9['Descriptions'],_0x1b0b1e,'\x0a')},getCustomFields(_0x4ab2a9[_0x6069('0x36')],_0x1b0b1e)),'auth':_0x52e8ab,'json':!![]};return rp(_0x2e0c78)[_0x6069('0x1e')](function(_0x50428d){logger['info']('['+[_0x26731f['toUpperCase']()]+_0x6069('0x37'),_0x50428d['result']);_0x39a16b[_0x6069('0x38')]=_0x50428d['result'][_0x6069('0xb')];_0x39a16b[_0x6069('0x39')]=_0x50428d[_0x6069('0x9')][_0x6069('0x3a')];logger[_0x6069('0xc')]('['+[_0x26731f[_0x6069('0xd')]()]+_0x6069('0x3b'),_0x39a16b);_0x48ad8a(_0x39a16b);})[_0x6069('0x18')](function(_0x27c333){logger[_0x6069('0x19')]('['+[_0x26731f['toUpperCase']()]+']',_0x27c333[_0x6069('0xf')]);_0x1a8587(_0x27c333[_0x6069('0xf')]);});});};}function createRemoteTag(_0x4d9bc8,_0x1b5631,_0x252cae,_0x22dcbd){return new Promise(function(_0x59fad5,_0x1d07f1){var _0x39ed06={'method':_0x6069('0x1c'),'uri':_0x252cae+'label'+'?'+_0x22dcbd,'body':{'short_description':_0x4d9bc8,'global':!![],'active':!![],'name':_0x4d9bc8},'auth':_0x1b5631,'json':!![]};return rp(_0x39ed06)[_0x6069('0x1e')](function(_0x38a054){var _0xcaab39=_0x38a054['result'][_0x6069('0xb')];_0x59fad5(_0xcaab39);});});}function getRemoteTag(_0x2cc96b,_0x224c0a,_0x537ab9,_0x2969a4,_0x5ac2fb){return new Promise(function(_0x282a24,_0x3f8403){var _0x5dd5ce={'method':_0x6069('0x8'),'uri':_0x537ab9+_0x6069('0x3c')+'?sysparm_query=name%3D'+_0x2cc96b+'&'+_0x2969a4,'auth':_0x224c0a,'json':!![]};return rp(_0x5dd5ce)[_0x6069('0x1e')](function(_0x36bbbe){if(_0x36bbbe[_0x6069('0x9')][_0x6069('0xa')]>0x0){var _0x5dc9d8=_0x36bbbe[_0x6069('0x9')][0x0][_0x6069('0xb')];_0x282a24(_0x5dc9d8);}else{return createRemoteTag(_0x2cc96b,_0x224c0a,_0x537ab9,_0x2969a4)[_0x6069('0x1e')](function(_0x2ab803){_0x282a24(_0x2ab803);});}});});}function assignTagToIncident(_0x3c8895,_0x376ada,_0x2e8c01,_0x2a7945,_0x5a08d4){return new Promise(function(_0x2959ef,_0x5bdf5b){var _0x5d5630={'method':_0x6069('0x1c'),'uri':_0x2e8c01+'label_entry'+'?'+_0x5a08d4,'body':{'label':_0x3c8895,'table':_0x6069('0x3d'),'id_type':_0x6069('0x3e'),'table_key':_0x2a7945['ticketId'],'title':_0x6069('0x3f')+_0x2a7945[_0x6069('0x39')],'id_display':_0x2a7945['ticketNumber']},'auth':_0x376ada,'json':!![]};return rp(_0x5d5630)[_0x6069('0x1e')](function(_0x373218){_0x2959ef();})[_0x6069('0x18')](function(){_0x2959ef();});});}function manageTags(_0xc033fd,_0x2f2a2b,_0x456b8b,_0x588675,_0x41a722,_0x284280,_0x37a1c8){return new Promise(function(_0xfee43d,_0xd02f90){var _0x115032=[];_0x2f2a2b[_0x6069('0x40')](function(_0xa59f6e){_0x115032[_0x6069('0x41')](getRemoteTag(_0xa59f6e,_0x456b8b,_0x588675,_0x284280,_0x37a1c8));});return Promise['all'](_0x115032)[_0x6069('0x1e')](function(_0xfb64b6){if(_0xfb64b6[_0x6069('0xa')]){logger[_0x6069('0xc')]('['+[_0xc033fd[_0x6069('0xd')]()]+_0x6069('0x42'),_0xfb64b6);var _0x590789=[];_0xfb64b6[_0x6069('0x40')](function(_0x7440e4){_0x590789[_0x6069('0x41')](assignTagToIncident(_0x7440e4,_0x456b8b,_0x588675,_0x41a722,_0x284280));});return Promise[_0x6069('0x43')](_0x590789)[_0x6069('0x1e')](function(){_0xfee43d();})[_0x6069('0x18')](function(){_0xfee43d();});}else{_0xfee43d();}});});}function getTags(_0x25907b,_0x244f03,_0xafc95,_0x1f3db1,_0x2375ce,_0x2745dd){return function(_0x2bd0d1){return new Promise(function(_0x4753df,_0x19afdd){var _0x3c9a09=[];var _0x290a33=_0x1f3db1[_0x6069('0x44')];if(_0x290a33&&_0x290a33[_0x6069('0xa')]>0x0){_0x3c9a09=_[_0x6069('0x45')](_0x290a33,_0x6069('0x31'));}if(_0x3c9a09[_0x6069('0xa')]>0x0){return manageTags(_0x25907b,_0x3c9a09,_0x244f03,_0xafc95,_0x2bd0d1,_0x2375ce,_0x2745dd)[_0x6069('0x1e')](function(){_0x4753df(_0x2bd0d1);});}else{_0x4753df(_0x2bd0d1);}});};}function emit(_0x1e3051,_0x2ef03f,_0x4d78d1){var _0x27924f=_0x6069('0x46')+_0x6069('0x47')+_0x6069('0x48')+_0x6069('0x49');var _0x161a68={'uri':_0x1e3051+_0x6069('0x4a')+_0x4d78d1+_0x27924f};io['to'](util[_0x6069('0x4b')](_0x6069('0x4c'),_0x2ef03f))[_0x6069('0x4d')](_0x6069('0x4e'),_0x161a68);}exports['cs']=function(_0x3fd046,_0x1f50f1,_0x3770c4,_0xc67907,_0x1601a9,_0x333c1e,_0xa9cf73,_0x1d6327){var _0x48df22={};var _0x1dc95a={'user':_0x333c1e[_0x6069('0x4f')],'pass':_0x333c1e[_0x6069('0x50')]};var _0x16d763=_0x6069('0x51');var _0x4b72b7=_0x6069('0x52');_0x333c1e[_0x6069('0x53')]=intUtil['stripTrailingSlash'](_0x333c1e[_0x6069('0x53')]);_0x333c1e['serverUrl']=intUtil[_0x6069('0x54')](_0x333c1e[_0x6069('0x55')]);var _0xfe8a12=util[_0x6069('0x4b')](_0x6069('0x56'),_0x333c1e['remoteUri']);_0x48df22[_0x6069('0x10')]=!_[_0x6069('0x57')](_0xc67907)?_0xc67907['email']:null;_0x48df22[_0x6069('0x17')]=_0x333c1e['email'];_0x48df22[_0x6069('0x1d')]=_0x1d6327[_0x6069('0x2c')]()===_0x6069('0x33')?_0x1f50f1['destcalleridnum']:_0x1f50f1[_0x6069('0x58')];_0x48df22['callDirection']=_0x1d6327===_0x6069('0x59')||_0x1d6327==='unmanaged'?'queue':_0x6069('0x33');var _0x45acd7=util['format'](_0x6069('0x5a'),_0x333c1e[_0x6069('0x55')],_0x1f50f1[_0x6069('0x5b')],md5(_0x1f50f1['uniqueid']));if(_0x1601a9&&_0x1601a9[_0x6069('0x5c')]){logger[_0x6069('0xc')](_0x6069('0x5d'),_0x6069('0x5e'));_0x1f50f1[_0x6069('0x5f')]=_0x45acd7;}else if(_0xa9cf73&&_0xa9cf73[_0x6069('0x60')]&&_0xa9cf73[_0x6069('0x60')]!==_0x6069('0x61')){logger[_0x6069('0xc')](_0x6069('0x62'),'Recording\x20is\x20enabled!');_0x1f50f1[_0x6069('0x5f')]=_0x45acd7;}else{_0x1f50f1[_0x6069('0x5f')]='';}return getAdminUser(_0x1d6327,_0x1dc95a,_0x48df22,_0xfe8a12,_0x4b72b7,_0x16d763)['then'](getUser(_0x1d6327,_0x1dc95a,_0xfe8a12,_0x4b72b7,_0x16d763))[_0x6069('0x1e')](getEndUser(_0x1d6327,_0x1dc95a,_0xfe8a12,_0x4b72b7,_0x16d763))[_0x6069('0x1e')](getTicket(_0x1d6327,_0x1dc95a,_0xfe8a12,_0x3770c4,_0x1f50f1,_0x4b72b7))[_0x6069('0x1e')](function(_0x5b8bb1){logger['info'](util[_0x6069('0x4b')](_0x6069('0x63'),_0x5b8bb1['ticketId']));logger[_0x6069('0xc')](util[_0x6069('0x4b')](_0x6069('0x64'),_0x1d6327));if(_0x1d6327!==_0x6069('0x65')){logger[_0x6069('0xc')]('['+[_0x1d6327[_0x6069('0xd')]()]+']',_0x6069('0x66'));emit(_0x333c1e['remoteUri'],_0xc67907[_0x6069('0x31')],_0x5b8bb1[_0x6069('0x38')]);}})[_0x6069('0x18')](function(_0x5865c5){logger[_0x6069('0x19')]('['+[_0x1d6327[_0x6069('0xd')]()]+_0x6069('0x67'),util['inspect'](_0x5865c5,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 319dbdd..03fbf81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf56e=['resolve','value','user_id','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','debug','merge','map','type','nameField','customField','toLowerCase','content','toString','custom_fields','idField','variable','Variable','login','username','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','queue','remoteUri','serverUrl','stripTrailingSlash','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','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','contacts','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','user:%s','trigger:browser:url','catch','error','outbound','recordingFormat','[OUTBOUND]','destcalleridnum','Outbound','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','lastevent','toUpperCase','calleridnum','Inbound','The\x20Ticket\x20ID\x20is:','users','lodash','request-promise','bluebird','md5','util','ioredis','../../../../config/logger','sugarcrm','redis','defaults','socket.io-emitter','emit','info','name','getString','Subjects','assigned_user_id','created_by','description','Descriptions','date_start','toISOString','slice','replace','duration_hours','parent_id','parent_type','Contacts','parent_name','direction','forEach','variableName','push','set_entry','JSON','Calls','format','Basic\x20%s','apiKey','base64','get_server_info','stringify','isNil','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','then','entry_list','length','find','name_value_list','user_name'];(function(_0x1030ce,_0xbe3f74){var _0x3367fd=function(_0x387153){while(--_0x387153){_0x1030ce['push'](_0x1030ce['shift']());}};_0x3367fd(++_0xbe3f74);}(_0xf56e,0x134));var _0xef56=function(_0x10113d,_0x13a861){_0x10113d=_0x10113d-0x0;var _0xf52f5d=_0xf56e[_0x10113d];return _0xf52f5d;};'use strict';var _=require(_0xef56('0x0'));var rp=require(_0xef56('0x1'));var BPromise=require(_0xef56('0x2'));var md5=require(_0xef56('0x3'));var util=require(_0xef56('0x4'));var Redis=require(_0xef56('0x5'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0xef56('0x6'))(_0xef56('0x7'));config[_0xef56('0x8')]=_[_0xef56('0x9')](config[_0xef56('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0xef56('0xa'))(new Redis(config[_0xef56('0x8')]));var def={'method':'POST','json':!![]};function emit(_0xd34cc,_0x220250,_0x1a1943){io['to'](_0xd34cc)[_0xef56('0xb')](_0x220250,_0x1a1943);}function getTicket(_0x3948d3,_0x21af2c,_0x558b24,_0xde4f5f,_0x1393b4,_0x13040c,_0x31f5ec,_0x4b5d6c){logger[_0xef56('0xc')]('Creating\x20new\x20ticket...');var _0x9960e1=new Date();var _0xa3b8db=[{'name':_0xef56('0xd'),'value':intUtil[_0xef56('0xe')](_0xde4f5f[_0xef56('0xf')],_0x1393b4,'\x20')},{'name':_0xef56('0x10'),'value':_0x21af2c['id']},{'name':_0xef56('0x11'),'value':_0x21af2c['id']},{'name':_0xef56('0x12'),'value':intUtil[_0xef56('0xe')](_0xde4f5f[_0xef56('0x13')],_0x1393b4,'\x0a')},{'name':_0xef56('0x14'),'value':_0x9960e1[_0xef56('0x15')]()[_0xef56('0x16')](0x0,0x13)[_0xef56('0x17')]('T','\x20')},{'name':_0xef56('0x18'),'value':'0'},{'name':'duration_minutes','value':'15'},{'name':_0xef56('0x19'),'value':_0x558b24['id']},{'name':_0xef56('0x1a'),'value':_0xef56('0x1b')},{'name':_0xef56('0x1c'),'value':_0x558b24[_0xef56('0xd')]},{'name':_0xef56('0x1d'),'value':_0x4b5d6c}];if(_0x13040c['length']){_[_0xef56('0x1e')](_0x13040c,function(_0x4d6d74){if(_0x1393b4[_0x4d6d74[_0xef56('0x1f')]]){_0xa3b8db[_0xef56('0x20')]({'name':_0x4d6d74['idField'],'value':_0x1393b4[_0x4d6d74[_0xef56('0x1f')]]});}});}return request({'form':{'method':_0xef56('0x21'),'input_type':_0xef56('0x22'),'response_type':_0xef56('0x22'),'rest_data':JSON['stringify']({'session':_0x31f5ec['id'],'module_name':_0xef56('0x23'),'name_value_list':_0xa3b8db})}});}function getAuth(_0x496c1d){return util[_0xef56('0x24')](_0xef56('0x25'),new Buffer(_0x496c1d[_0xef56('0x26')]+':X')['toString'](_0xef56('0x27')));}function getServerInfo(_0x3ec8dc){return request({'form':{'method':_0xef56('0x28'),'input_type':_0xef56('0x22'),'response_type':_0xef56('0x22'),'rest_data':JSON[_0xef56('0x29')]({'session':_0x3ec8dc['id']})}});}function getUser(_0x2207b4,_0x5be79b,_0x5e092b){if(!_[_0xef56('0x2a')](_0x5be79b)){logger[_0xef56('0xc')]('Getting\x20agent\x20with\x20name',_0x5be79b);return request({'form':{'method':_0xef56('0x2b'),'input_type':_0xef56('0x22'),'response_type':_0xef56('0x22'),'rest_data':JSON['stringify']({'session':_0x5e092b['id'],'module_name':_0xef56('0x2c'),'query':util['format'](_0xef56('0x2d'),_0x5be79b),'order_by':'','offset':'0','select_fields':['id',_0xef56('0xd'),'user_name'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xef56('0x2e')](function(_0x32fc76){if(_0x32fc76[_0xef56('0x2f')][_0xef56('0x30')]){var _0x54751e=_[_0xef56('0x31')](_0x32fc76[_0xef56('0x2f')],function(_0xb9a568){return _0xb9a568[_0xef56('0x32')][_0xef56('0x33')]['value']===_0x5be79b;});if(_0x54751e){logger[_0xef56('0xc')]('Agent\x20found!');return BPromise[_0xef56('0x34')]({'id':_0x54751e[_0xef56('0x32')]['id'][_0xef56('0x35')],'name':_0x54751e['name_value_list']['name'][_0xef56('0x35')]});}}logger[_0xef56('0xc')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0xef56('0x34')]({'id':_0x5e092b[_0xef56('0x32')][_0xef56('0x36')]['value'],'name':_0x5e092b[_0xef56('0x32')][_0xef56('0x33')][_0xef56('0x35')]});});}else{logger[_0xef56('0xc')]('Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!');return BPromise[_0xef56('0x34')]({'id':_0x5e092b[_0xef56('0x32')][_0xef56('0x36')][_0xef56('0x35')],'name':_0x5e092b[_0xef56('0x32')][_0xef56('0x33')][_0xef56('0x35')]});}}function getEndUser(_0x3c1223,_0xef734b,_0x5b3c99,_0x284e3d){logger[_0xef56('0xc')](_0xef56('0x37'),_0x5b3c99);return request({'form':{'method':_0xef56('0x2b'),'input_type':_0xef56('0x22'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x284e3d['id'],'module_name':'Contacts','query':util[_0xef56('0x24')](_0xef56('0x38'),_0x5b3c99),'order_by':'','offset':'0','select_fields':['id',_0xef56('0xd'),_0xef56('0x39')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xef56('0x2e')](function(_0xbd380e){if(_0xbd380e[_0xef56('0x2f')][_0xef56('0x30')]){var _0x36b22c=_[_0xef56('0x31')](_0xbd380e['entry_list'],function(_0x395513){return _0x395513[_0xef56('0x32')][_0xef56('0x39')][_0xef56('0x35')]===_0x5b3c99;});if(_0x36b22c){logger[_0xef56('0xc')](_0xef56('0x3a'));return BPromise[_0xef56('0x34')]({'id':_0x36b22c['name_value_list']['id'][_0xef56('0x35')],'name':_0x36b22c[_0xef56('0x32')][_0xef56('0xd')][_0xef56('0x35')],'phone':_0x36b22c[_0xef56('0x32')][_0xef56('0x39')]['value']});}}else{logger[_0xef56('0xc')](_0xef56('0x3b'));return request({'form':{'method':_0xef56('0x21'),'input_type':'JSON','response_type':_0xef56('0x22'),'rest_data':JSON[_0xef56('0x29')]({'session':_0x284e3d['id'],'module_name':_0xef56('0x1b'),'name_value_list':[{'name':_0xef56('0x3c'),'value':_0xef734b!=='<unknown>'?_0xef734b:util['format']('Caller\x20-\x20%s',_0x5b3c99)},{'name':_0xef56('0x39'),'value':_0x5b3c99}]})}})['then'](function(_0x2e8ba5){logger['info']('Enduser\x20created.');return BPromise['resolve']({'id':_0x2e8ba5['id'],'name':_0x2e8ba5[_0xef56('0x2f')][_0xef56('0x3c')][_0xef56('0x35')],'phone':_0x2e8ba5['entry_list'][_0xef56('0x39')][_0xef56('0x35')]});});}});}function request(_0x26ff48){logger[_0xef56('0x3d')]('[HTTP]',JSON[_0xef56('0x29')](_0x26ff48));return rp(_[_0xef56('0x3e')](def,_0x26ff48));}function getTags(_0x1eff1f,_0x1d5e71){var _0x215423=[];if(_0x1eff1f&&_0x1eff1f[_0xef56('0x30')]>0x0){_0x215423=_[_0xef56('0x3f')](_0x1eff1f,_0x1d5e71);}return _0x215423;}function getCustomFields(_0x34a340,_0x27ed93){var _0xce166b=[];var _0x54000e={'custom_fields':[]};if(_0x34a340['length']>0x0){_['forEach'](_0x34a340,function(_0x58468e){if(_0x58468e[_0xef56('0x40')]==='string'&&_0x58468e[_0xef56('0x41')]&&!_0x58468e[_0xef56('0x42')]){_0x54000e[_0x58468e[_0xef56('0x41')][_0xef56('0x43')]()]=_0x58468e[_0xef56('0x44')][_0xef56('0x45')]();}else if(_0x58468e[_0xef56('0x40')]==='string'&&_0x58468e['idField']&&_0x58468e['customField']){_0x54000e[_0xef56('0x46')][_0xef56('0x20')]({'id':_0x58468e[_0xef56('0x47')],'value':_0x58468e[_0xef56('0x44')][_0xef56('0x45')]()});}else if(_0x58468e[_0xef56('0x40')]===_0xef56('0x48')&&_0x58468e[_0xef56('0x1f')]&&_0x58468e[_0xef56('0x47')]&&_0x58468e[_0xef56('0x42')]){_0x27ed93[_0x58468e['variableName']]&&_0x54000e[_0xef56('0x46')][_0xef56('0x20')]({'id':_0x58468e[_0xef56('0x47')],'value':_0x27ed93[_0x58468e[_0xef56('0x1f')]][_0xef56('0x45')]()});}else if(_0x58468e[_0xef56('0x40')]==='customVariable'&&_0x58468e['Variable']&&_0x58468e[_0xef56('0x49')][_0xef56('0xd')]&&_0x58468e[_0xef56('0x47')]&&_0x58468e['customField']){_0x27ed93[_0x58468e[_0xef56('0x49')][_0xef56('0xd')][_0xef56('0x43')]()]&&_0x54000e[_0xef56('0x46')]['push']({'id':_0x58468e['idField'],'value':_0x27ed93[_0x58468e[_0xef56('0x49')]['name'][_0xef56('0x43')]()][_0xef56('0x45')]()});}});}return _0x54000e;}function getConnection(_0x246fc0){return request({'method':'POST','form':{'method':_0xef56('0x4a'),'input_type':_0xef56('0x22'),'response_type':_0xef56('0x22'),'rest_data':JSON[_0xef56('0x29')]({'user_auth':{'user_name':_0x246fc0[_0xef56('0x4b')],'password':_0x246fc0[_0xef56('0x4c')],'encryption':_0xef56('0x4d')},'application':_0xef56('0x4e')})}})[_0xef56('0x2e')](function(_0x3a57f6){var _0x443606=_0x3a57f6;if(_0x443606['id']){def[_0xef56('0x4f')]=_0x443606['id'];return BPromise[_0xef56('0x34')](_0x443606);}else{throw new Error(util[_0xef56('0x24')](_0xef56('0x50'),_0x246fc0['id']));}});}function setRelationship(_0x1d0a64,_0x1e7fcc,_0x4a7922,_0x1f0935){return request({'form':{'method':'set_relationship','input_type':_0xef56('0x22'),'response_type':'JSON','rest_data':JSON[_0xef56('0x29')]({'session':_0x1d0a64['id'],'module_name':_0xef56('0x23'),'module_id':_0x4a7922['id'],'link_field_name':_0x1f0935,'related_ids':[_0x1e7fcc['id']],'name_value_list':[],'delete':0x0})}});}exports[_0xef56('0x51')]=function(_0x43bf38,_0x32b109,_0x1f5b60,_0xd4186e,_0x576519,_0x9fb9fe){var _0x136410,_0xb275b1,_0xf2eb7,_0x3dc55d;_0x9fb9fe[_0xef56('0x52')]=intUtil['stripTrailingSlash'](_0x9fb9fe[_0xef56('0x52')]);_0x9fb9fe[_0xef56('0x53')]=intUtil[_0xef56('0x54')](_0x9fb9fe[_0xef56('0x53')]);def[_0xef56('0x55')]=util[_0xef56('0x24')](_0xef56('0x56'),_0x9fb9fe[_0xef56('0x52')]);if(_0x576519&&_0x576519[_0xef56('0x57')]){logger[_0xef56('0xc')](_0xef56('0x58'),_0xef56('0x59'));_0x32b109[_0xef56('0x5a')]=util[_0xef56('0x24')](_0xef56('0x5b'),_0x9fb9fe[_0xef56('0x53')],_0x32b109[_0xef56('0x5c')],md5(_0x32b109['uniqueid']));}else{_0x32b109[_0xef56('0x5a')]='';}return getConnection(_0x9fb9fe)[_0xef56('0x2e')](function(_0xdaac47){_0x3dc55d=_0xdaac47;return getUser(_0x9fb9fe,_0xd4186e[_0xef56('0xd')],_0x3dc55d);})[_0xef56('0x2e')](function(_0x20a01e){_0x136410=_0x20a01e;logger['info'](_0xef56('0x5d'),_0x136410['id']);return getEndUser(_0x9fb9fe,_0x32b109[_0xef56('0x5e')],_0x32b109['calleridnum'],_0x3dc55d);})[_0xef56('0x2e')](function(_0x4f0a12){_0xb275b1=_0x4f0a12;logger['info'](_0xef56('0x5f'),_0xb275b1['id']);return getTicket(_0x9fb9fe,_0x136410,_0xb275b1,_0x1f5b60,_0x32b109,_0x1f5b60[_0xef56('0x60')],_0x3dc55d,'Inbound');})[_0xef56('0x2e')](function(_0x1b5d01){_0xf2eb7=_0x1b5d01;logger[_0xef56('0xc')](_0xef56('0x61'));logger['info']('The\x20Ticket\x20ID\x20is:',_0xf2eb7['id']);return setRelationship(_0x3dc55d,_0x136410,_0xf2eb7,'users');})['then'](function(){return setRelationship(_0x3dc55d,_0xb275b1,_0xf2eb7,_0xef56('0x62'));})[_0xef56('0x2e')](function(){return getServerInfo(_0x3dc55d);})[_0xef56('0x2e')](function(_0x2371ef){var _0x2d8470=parseInt(_0x2371ef[_0xef56('0x63')][_0xef56('0x64')](0x0));var _0x3d7e85=util[_0xef56('0x24')](_0xef56('0x65'),_0x9fb9fe['remoteUri'],_0xf2eb7['id']);if(_0x2d8470>0x6){_0x3d7e85=util['format']('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x9fb9fe[_0xef56('0x52')],_0xf2eb7['id']);}logger[_0xef56('0xc')](_0xef56('0x58'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xef56('0x24')](_0xef56('0x66'),_0xd4186e[_0xef56('0xd')]),_0xef56('0x67'),{'uri':_0x3d7e85});})[_0xef56('0x68')](function(_0x14ec9b){logger[_0xef56('0x69')](_0xef56('0x58'),JSON[_0xef56('0x29')](_0x14ec9b));});};exports[_0xef56('0x6a')]=function(_0x1d804b,_0x24415f,_0x5444fb,_0x3fef87,_0x4b201c,_0x3b317e,_0x42f5f4){var _0x2b00fd,_0x2e8f1f,_0x4a8675,_0x527210;_0x3b317e[_0xef56('0x52')]=intUtil['stripTrailingSlash'](_0x3b317e[_0xef56('0x52')]);_0x3b317e[_0xef56('0x53')]=intUtil[_0xef56('0x54')](_0x3b317e[_0xef56('0x53')]);def['uri']=util[_0xef56('0x24')](_0xef56('0x56'),_0x3b317e[_0xef56('0x52')]);if(_0x42f5f4&&_0x42f5f4[_0xef56('0x6b')]&&_0x42f5f4['recordingFormat']!=='none'){logger['info'](_0xef56('0x6c'),_0xef56('0x59'));_0x24415f['recordingURL']=util[_0xef56('0x24')](_0xef56('0x5b'),_0x3b317e[_0xef56('0x53')],_0x24415f[_0xef56('0x5c')],md5(_0x24415f['uniqueid']));}return getConnection(_0x3b317e)[_0xef56('0x2e')](function(_0x22fd38){_0x527210=_0x22fd38;return getUser(_0x3b317e,_0x3fef87[_0xef56('0xd')],_0x527210);})[_0xef56('0x2e')](function(_0x6fa970){_0x2b00fd=_0x6fa970;logger['info'](_0xef56('0x5d'),_0x2b00fd['id']);return getEndUser(_0x3b317e,_0x24415f['destcalleridname'],_0x24415f[_0xef56('0x6d')],_0x527210);})[_0xef56('0x2e')](function(_0x104e1a){_0x2e8f1f=_0x104e1a;logger[_0xef56('0xc')](_0xef56('0x5f'),_0x2e8f1f['id']);return getTicket(_0x3b317e,_0x2b00fd,_0x2e8f1f,_0x5444fb,_0x24415f,_0x5444fb[_0xef56('0x60')],_0x527210,_0xef56('0x6e'));})[_0xef56('0x2e')](function(_0x470df8){_0x4a8675=_0x470df8;logger[_0xef56('0xc')]('Ticket\x20created!');logger[_0xef56('0xc')]('The\x20Ticket\x20ID\x20is:',_0x4a8675['id']);return setRelationship(_0x527210,_0x2b00fd,_0x4a8675,'users');})['then'](function(){return setRelationship(_0x527210,_0x2e8f1f,_0x4a8675,_0xef56('0x62'));})[_0xef56('0x2e')](function(){return getServerInfo(_0x527210);})['then'](function(_0x32f4c2){var _0x915902=parseInt(_0x32f4c2['version'][_0xef56('0x64')](0x0));var _0x3659a6=util[_0xef56('0x24')](_0xef56('0x65'),_0x3b317e[_0xef56('0x52')],_0x4a8675['id']);if(_0x915902>0x6){_0x3659a6=util['format'](_0xef56('0x6f'),_0x3b317e[_0xef56('0x52')],_0x4a8675['id']);}logger['info'](_0xef56('0x6c'),_0xef56('0x70'));emit(util[_0xef56('0x24')](_0xef56('0x66'),_0x3fef87[_0xef56('0xd')]),_0xef56('0x67'),{'uri':_0x3659a6});})[_0xef56('0x68')](function(_0x45fee0){logger[_0xef56('0x69')](_0xef56('0x6c'),JSON[_0xef56('0x29')](_0x45fee0));});};exports[_0xef56('0x71')]=function(_0x4f2f12,_0x44c6ac,_0xcb644c,_0x469ebf,_0x1bc410,_0x2d9808){var _0x28f9d1,_0x25abaa,_0x2d6b58,_0x105d5a;_0x2d9808[_0xef56('0x52')]=intUtil[_0xef56('0x54')](_0x2d9808['remoteUri']);_0x2d9808[_0xef56('0x53')]=intUtil[_0xef56('0x54')](_0x2d9808[_0xef56('0x53')]);def[_0xef56('0x55')]=util[_0xef56('0x24')](_0xef56('0x56'),_0x2d9808[_0xef56('0x52')]);if(_0x1bc410&&_0x1bc410[_0xef56('0x57')]){logger[_0xef56('0xc')]('['+_0x44c6ac[_0xef56('0x72')][_0xef56('0x73')]()+']',_0xef56('0x59'));_0x44c6ac['recordingURL']=util[_0xef56('0x24')](_0xef56('0x5b'),_0x2d9808[_0xef56('0x53')],_0x44c6ac[_0xef56('0x5c')],md5(_0x44c6ac[_0xef56('0x5c')]));}else{_0x44c6ac['recordingURL']='';}return getConnection(_0x2d9808)[_0xef56('0x2e')](function(_0x3ef175){_0x105d5a=_0x3ef175;if(!_['isNil'](_0x469ebf)){return getUser(_0x2d9808,_0x469ebf['name'],_0x105d5a);}else{return getUser(_0x2d9808,null,_0x105d5a);}})[_0xef56('0x2e')](function(_0x2a8e4b){_0x28f9d1=_0x2a8e4b;logger[_0xef56('0xc')](_0xef56('0x5d'),_0x28f9d1['id']);return getEndUser(_0x2d9808,_0x44c6ac[_0xef56('0x5e')],_0x44c6ac[_0xef56('0x74')],_0x105d5a);})['then'](function(_0x5d9808){_0x25abaa=_0x5d9808;logger[_0xef56('0xc')](_0xef56('0x5f'),_0x25abaa['id']);return getTicket(_0x2d9808,_0x28f9d1,_0x25abaa,_0xcb644c,_0x44c6ac,_0xcb644c[_0xef56('0x60')],_0x105d5a,_0xef56('0x75'));})[_0xef56('0x2e')](function(_0x3a97c6){_0x2d6b58=_0x3a97c6;logger[_0xef56('0xc')](_0xef56('0x61'));logger[_0xef56('0xc')](_0xef56('0x76'),_0x2d6b58['id']);return setRelationship(_0x105d5a,_0x28f9d1,_0x2d6b58,_0xef56('0x77'));})[_0xef56('0x2e')](function(){return setRelationship(_0x105d5a,_0x25abaa,_0x2d6b58,'contacts');})['then'](function(){return getServerInfo(_0x105d5a);})[_0xef56('0x68')](function(_0x12f5b0){logger['error']('['+_0x44c6ac[_0xef56('0x72')]['toUpperCase']()+']',JSON[_0xef56('0x29')](_0x12f5b0));});};
\ No newline at end of file
+var _0x613a=['date_start','toISOString','slice','duration_hours','duration_minutes','parent_id','parent_type','parent_name','length','variableName','idField','set_entry','JSON','stringify','Calls','format','Basic\x20%s','toString','get_server_info','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','find','entry_list','value','Agent\x20found!','resolve','name_value_list','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','Contacts','then','Enduser\x20found!','phone_home','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','debug','[HTTP]','merge','map','forEach','string','nameField','customField','toLowerCase','content','type','custom_fields','push','variable','customVariable','Variable','POST','login','username','password','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','queue','stripTrailingSlash','remoteUri','serverUrl','uri','%s/service/v4_1/rest.php','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','outbound','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum','Fields','Outbound','version','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','user:%s','error','unmanaged','monitor_format','lastevent','toUpperCase','calleridname','catch','lodash','request-promise','bluebird','md5','./util','../../../../config/environment','../../../../config/logger','sugarcrm','redis','localhost','socket.io-emitter','emit','info','Creating\x20new\x20ticket...','name','assigned_user_id','created_by','description','getString','Descriptions'];(function(_0x3abc17,_0x29e41b){var _0x134348=function(_0xe65377){while(--_0xe65377){_0x3abc17['push'](_0x3abc17['shift']());}};_0x134348(++_0x29e41b);}(_0x613a,0x1d4));var _0xa613=function(_0x1e081a,_0x2ce645){_0x1e081a=_0x1e081a-0x0;var _0x3e742f=_0x613a[_0x1e081a];return _0x3e742f;};'use strict';var _=require(_0xa613('0x0'));var rp=require(_0xa613('0x1'));var BPromise=require(_0xa613('0x2'));var md5=require(_0xa613('0x3'));var util=require('util');var Redis=require('ioredis');var intUtil=require(_0xa613('0x4'));var config=require(_0xa613('0x5'));var logger=require(_0xa613('0x6'))(_0xa613('0x7'));config[_0xa613('0x8')]=_['defaults'](config[_0xa613('0x8')],{'host':_0xa613('0x9'),'port':0x18eb});var io=require(_0xa613('0xa'))(new Redis(config[_0xa613('0x8')]));var def={'method':'POST','json':!![]};function emit(_0x5f1907,_0x4d13d4,_0x3bcb14){io['to'](_0x5f1907)[_0xa613('0xb')](_0x4d13d4,_0x3bcb14);}function getTicket(_0x46fe6c,_0x4718c6,_0x16d1bf,_0x4d969d,_0x2f4338,_0x54ab9d,_0x337c7d,_0x557f5a){logger[_0xa613('0xc')](_0xa613('0xd'));var _0x5396b4=new Date();var _0x13757a=[{'name':_0xa613('0xe'),'value':intUtil['getString'](_0x4d969d['Subjects'],_0x2f4338,'\x20')},{'name':_0xa613('0xf'),'value':_0x4718c6['id']},{'name':_0xa613('0x10'),'value':_0x4718c6['id']},{'name':_0xa613('0x11'),'value':intUtil[_0xa613('0x12')](_0x4d969d[_0xa613('0x13')],_0x2f4338,'\x0a')},{'name':_0xa613('0x14'),'value':_0x5396b4[_0xa613('0x15')]()[_0xa613('0x16')](0x0,0x13)['replace']('T','\x20')},{'name':_0xa613('0x17'),'value':'0'},{'name':_0xa613('0x18'),'value':'15'},{'name':_0xa613('0x19'),'value':_0x16d1bf['id']},{'name':_0xa613('0x1a'),'value':'Contacts'},{'name':_0xa613('0x1b'),'value':_0x16d1bf['name']},{'name':'direction','value':_0x557f5a}];if(_0x54ab9d[_0xa613('0x1c')]){_['forEach'](_0x54ab9d,function(_0x2ec91a){if(_0x2f4338[_0x2ec91a[_0xa613('0x1d')]]){_0x13757a['push']({'name':_0x2ec91a[_0xa613('0x1e')],'value':_0x2f4338[_0x2ec91a[_0xa613('0x1d')]]});}});}return request({'form':{'method':_0xa613('0x1f'),'input_type':_0xa613('0x20'),'response_type':_0xa613('0x20'),'rest_data':JSON[_0xa613('0x21')]({'session':_0x337c7d['id'],'module_name':_0xa613('0x22'),'name_value_list':_0x13757a})}});}function getAuth(_0x378e4a){return util[_0xa613('0x23')](_0xa613('0x24'),new Buffer(_0x378e4a['apiKey']+':X')[_0xa613('0x25')]('base64'));}function getServerInfo(_0x4ac291){return request({'form':{'method':_0xa613('0x26'),'input_type':_0xa613('0x20'),'response_type':_0xa613('0x20'),'rest_data':JSON['stringify']({'session':_0x4ac291['id']})}});}function getUser(_0x1a78c2,_0x24cfc5,_0x332314){if(!_['isNil'](_0x24cfc5)){logger[_0xa613('0xc')]('Getting\x20agent\x20with\x20name',_0x24cfc5);return request({'form':{'method':_0xa613('0x27'),'input_type':_0xa613('0x20'),'response_type':'JSON','rest_data':JSON[_0xa613('0x21')]({'session':_0x332314['id'],'module_name':_0xa613('0x28'),'query':util[_0xa613('0x23')](_0xa613('0x29'),_0x24cfc5),'order_by':'','offset':'0','select_fields':['id',_0xa613('0xe'),_0xa613('0x2a')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x25750f){if(_0x25750f['entry_list'][_0xa613('0x1c')]){var _0x4053ea=_[_0xa613('0x2b')](_0x25750f[_0xa613('0x2c')],function(_0x43aa6b){return _0x43aa6b['name_value_list'][_0xa613('0x2a')][_0xa613('0x2d')]===_0x24cfc5;});if(_0x4053ea){logger[_0xa613('0xc')](_0xa613('0x2e'));return BPromise[_0xa613('0x2f')]({'id':_0x4053ea[_0xa613('0x30')]['id']['value'],'name':_0x4053ea['name_value_list'][_0xa613('0xe')][_0xa613('0x2d')]});}}logger['info'](_0xa613('0x31'));return BPromise[_0xa613('0x2f')]({'id':_0x332314[_0xa613('0x30')][_0xa613('0x32')]['value'],'name':_0x332314[_0xa613('0x30')][_0xa613('0x2a')][_0xa613('0x2d')]});});}else{logger['info'](_0xa613('0x33'));return BPromise[_0xa613('0x2f')]({'id':_0x332314[_0xa613('0x30')]['user_id'][_0xa613('0x2d')],'name':_0x332314['name_value_list'][_0xa613('0x2a')][_0xa613('0x2d')]});}}function getEndUser(_0x35c1a0,_0x531f9b,_0x34d3d4,_0x4a4872){logger[_0xa613('0xc')]('Searching\x20enduser\x20with\x20phone',_0x34d3d4);return request({'form':{'method':'get_entry_list','input_type':_0xa613('0x20'),'response_type':_0xa613('0x20'),'rest_data':JSON['stringify']({'session':_0x4a4872['id'],'module_name':_0xa613('0x34'),'query':util[_0xa613('0x23')]('contacts.phone_home\x20=\x20\x22%s\x22',_0x34d3d4),'order_by':'','offset':'0','select_fields':['id',_0xa613('0xe'),'phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xa613('0x35')](function(_0x261cd8){if(_0x261cd8[_0xa613('0x2c')][_0xa613('0x1c')]){var _0x3e9a28=_[_0xa613('0x2b')](_0x261cd8[_0xa613('0x2c')],function(_0x522968){return _0x522968[_0xa613('0x30')]['phone_home']['value']===_0x34d3d4;});if(_0x3e9a28){logger[_0xa613('0xc')](_0xa613('0x36'));return BPromise[_0xa613('0x2f')]({'id':_0x3e9a28[_0xa613('0x30')]['id'][_0xa613('0x2d')],'name':_0x3e9a28[_0xa613('0x30')][_0xa613('0xe')][_0xa613('0x2d')],'phone':_0x3e9a28[_0xa613('0x30')][_0xa613('0x37')][_0xa613('0x2d')]});}}else{logger['info'](_0xa613('0x38'));return request({'form':{'method':_0xa613('0x1f'),'input_type':_0xa613('0x20'),'response_type':_0xa613('0x20'),'rest_data':JSON[_0xa613('0x21')]({'session':_0x4a4872['id'],'module_name':_0xa613('0x34'),'name_value_list':[{'name':_0xa613('0x39'),'value':_0x531f9b!==_0xa613('0x3a')?_0x531f9b:util['format'](_0xa613('0x3b'),_0x34d3d4)},{'name':_0xa613('0x37'),'value':_0x34d3d4}]})}})['then'](function(_0x8c7e93){logger[_0xa613('0xc')](_0xa613('0x3c'));return BPromise[_0xa613('0x2f')]({'id':_0x8c7e93['id'],'name':_0x8c7e93[_0xa613('0x2c')][_0xa613('0x39')][_0xa613('0x2d')],'phone':_0x8c7e93[_0xa613('0x2c')]['phone_home'][_0xa613('0x2d')]});});}});}function request(_0x3b4202){logger[_0xa613('0x3d')](_0xa613('0x3e'),JSON[_0xa613('0x21')](_0x3b4202));return rp(_[_0xa613('0x3f')](def,_0x3b4202));}function getTags(_0x35ff0b,_0x1eb43b){var _0x2d3771=[];if(_0x35ff0b&&_0x35ff0b[_0xa613('0x1c')]>0x0){_0x2d3771=_[_0xa613('0x40')](_0x35ff0b,_0x1eb43b);}return _0x2d3771;}function getCustomFields(_0x35fe3a,_0x272e86){var _0x754d63=[];var _0xddb760={'custom_fields':[]};if(_0x35fe3a[_0xa613('0x1c')]>0x0){_[_0xa613('0x41')](_0x35fe3a,function(_0x1ed0ab){if(_0x1ed0ab['type']===_0xa613('0x42')&&_0x1ed0ab[_0xa613('0x43')]&&!_0x1ed0ab[_0xa613('0x44')]){_0xddb760[_0x1ed0ab[_0xa613('0x43')][_0xa613('0x45')]()]=_0x1ed0ab[_0xa613('0x46')]['toString']();}else if(_0x1ed0ab[_0xa613('0x47')]==='string'&&_0x1ed0ab[_0xa613('0x1e')]&&_0x1ed0ab[_0xa613('0x44')]){_0xddb760[_0xa613('0x48')][_0xa613('0x49')]({'id':_0x1ed0ab['idField'],'value':_0x1ed0ab[_0xa613('0x46')][_0xa613('0x25')]()});}else if(_0x1ed0ab['type']===_0xa613('0x4a')&&_0x1ed0ab[_0xa613('0x1d')]&&_0x1ed0ab[_0xa613('0x1e')]&&_0x1ed0ab['customField']){_0x272e86[_0x1ed0ab['variableName']]&&_0xddb760[_0xa613('0x48')][_0xa613('0x49')]({'id':_0x1ed0ab[_0xa613('0x1e')],'value':_0x272e86[_0x1ed0ab[_0xa613('0x1d')]][_0xa613('0x25')]()});}else if(_0x1ed0ab['type']===_0xa613('0x4b')&&_0x1ed0ab[_0xa613('0x4c')]&&_0x1ed0ab[_0xa613('0x4c')][_0xa613('0xe')]&&_0x1ed0ab['idField']&&_0x1ed0ab[_0xa613('0x44')]){_0x272e86[_0x1ed0ab[_0xa613('0x4c')][_0xa613('0xe')][_0xa613('0x45')]()]&&_0xddb760[_0xa613('0x48')]['push']({'id':_0x1ed0ab[_0xa613('0x1e')],'value':_0x272e86[_0x1ed0ab[_0xa613('0x4c')][_0xa613('0xe')][_0xa613('0x45')]()][_0xa613('0x25')]()});}});}return _0xddb760;}function getConnection(_0x3ad6ae){return request({'method':_0xa613('0x4d'),'form':{'method':_0xa613('0x4e'),'input_type':_0xa613('0x20'),'response_type':_0xa613('0x20'),'rest_data':JSON[_0xa613('0x21')]({'user_auth':{'user_name':_0x3ad6ae[_0xa613('0x4f')],'password':_0x3ad6ae[_0xa613('0x50')],'encryption':'PLAIN'},'application':_0xa613('0x51')})}})[_0xa613('0x35')](function(_0x7f3b1f){var _0x3f03bd=_0x7f3b1f;if(_0x3f03bd['id']){def[_0xa613('0x52')]=_0x3f03bd['id'];return BPromise[_0xa613('0x2f')](_0x3f03bd);}else{throw new Error(util[_0xa613('0x23')](_0xa613('0x53'),_0x3ad6ae['id']));}});}function setRelationship(_0x56e163,_0x4102b0,_0x3ac97a,_0x229aa6){return request({'form':{'method':'set_relationship','input_type':_0xa613('0x20'),'response_type':_0xa613('0x20'),'rest_data':JSON[_0xa613('0x21')]({'session':_0x56e163['id'],'module_name':'Calls','module_id':_0x3ac97a['id'],'link_field_name':_0x229aa6,'related_ids':[_0x4102b0['id']],'name_value_list':[],'delete':0x0})}});}exports[_0xa613('0x54')]=function(_0x508b5b,_0xb44140,_0x509ce4,_0x3490b7,_0x9962f2,_0x36d4f4){var _0x56263b,_0x5d8417,_0x1132a4,_0x391c27;_0x36d4f4['remoteUri']=intUtil[_0xa613('0x55')](_0x36d4f4[_0xa613('0x56')]);_0x36d4f4[_0xa613('0x57')]=intUtil[_0xa613('0x55')](_0x36d4f4[_0xa613('0x57')]);def[_0xa613('0x58')]=util[_0xa613('0x23')](_0xa613('0x59'),_0x36d4f4[_0xa613('0x56')]);if(_0x9962f2&&_0x9962f2['monitor_format']){logger[_0xa613('0xc')]('[QUEUE]','Recording\x20is\x20enabled!');_0xb44140[_0xa613('0x5a')]=util[_0xa613('0x23')](_0xa613('0x5b'),_0x36d4f4['serverUrl'],_0xb44140['uniqueid'],md5(_0xb44140[_0xa613('0x5c')]));}else{_0xb44140['recordingURL']='';}return getConnection(_0x36d4f4)[_0xa613('0x35')](function(_0x39dac4){_0x391c27=_0x39dac4;return getUser(_0x36d4f4,_0x3490b7[_0xa613('0xe')],_0x391c27);})[_0xa613('0x35')](function(_0x772e4d){_0x56263b=_0x772e4d;logger['info'](_0xa613('0x5d'),_0x56263b['id']);return getEndUser(_0x36d4f4,_0xb44140['calleridname'],_0xb44140[_0xa613('0x5e')],_0x391c27);})['then'](function(_0x2ebde9){_0x5d8417=_0x2ebde9;logger[_0xa613('0xc')](_0xa613('0x5f'),_0x5d8417['id']);return getTicket(_0x36d4f4,_0x56263b,_0x5d8417,_0x509ce4,_0xb44140,_0x509ce4['Fields'],_0x391c27,_0xa613('0x60'));})[_0xa613('0x35')](function(_0x3c59a9){_0x1132a4=_0x3c59a9;logger[_0xa613('0xc')](_0xa613('0x61'));logger['info'](_0xa613('0x62'),_0x1132a4['id']);return setRelationship(_0x391c27,_0x56263b,_0x1132a4,_0xa613('0x63'));})[_0xa613('0x35')](function(){return setRelationship(_0x391c27,_0x5d8417,_0x1132a4,_0xa613('0x64'));})[_0xa613('0x35')](function(){return getServerInfo(_0x391c27);})[_0xa613('0x35')](function(_0x2aadd6){var _0x1ca0e8=parseInt(_0x2aadd6['version'][_0xa613('0x65')](0x0));var _0x7480a8=util[_0xa613('0x23')](_0xa613('0x66'),_0x36d4f4[_0xa613('0x56')],_0x1132a4['id']);if(_0x1ca0e8>0x6){_0x7480a8=util[_0xa613('0x23')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x36d4f4['remoteUri'],_0x1132a4['id']);}logger['info']('[QUEUE]',_0xa613('0x67'));emit(util[_0xa613('0x23')]('user:%s',_0x3490b7[_0xa613('0xe')]),_0xa613('0x68'),{'uri':_0x7480a8});})['catch'](function(_0x35ca7d){logger['error']('[QUEUE]',JSON['stringify'](_0x35ca7d));});};exports[_0xa613('0x69')]=function(_0x760634,_0x3480b9,_0x2e82bc,_0x40c647,_0x4f4f33,_0x497757,_0x13b212){var _0x3043da,_0xd5138b,_0x1b1d1f,_0x1d8a35;_0x497757[_0xa613('0x56')]=intUtil[_0xa613('0x55')](_0x497757['remoteUri']);_0x497757['serverUrl']=intUtil[_0xa613('0x55')](_0x497757[_0xa613('0x57')]);def[_0xa613('0x58')]=util[_0xa613('0x23')](_0xa613('0x59'),_0x497757['remoteUri']);if(_0x13b212&&_0x13b212[_0xa613('0x6a')]&&_0x13b212[_0xa613('0x6a')]!=='none'){logger[_0xa613('0xc')](_0xa613('0x6b'),'Recording\x20is\x20enabled!');_0x3480b9['recordingURL']=util[_0xa613('0x23')](_0xa613('0x5b'),_0x497757[_0xa613('0x57')],_0x3480b9[_0xa613('0x5c')],md5(_0x3480b9['uniqueid']));}return getConnection(_0x497757)[_0xa613('0x35')](function(_0x1d2c34){_0x1d8a35=_0x1d2c34;return getUser(_0x497757,_0x40c647[_0xa613('0xe')],_0x1d8a35);})[_0xa613('0x35')](function(_0x411b72){_0x3043da=_0x411b72;logger[_0xa613('0xc')]('The\x20User\x20ID\x20is:',_0x3043da['id']);return getEndUser(_0x497757,_0x3480b9[_0xa613('0x6c')],_0x3480b9[_0xa613('0x6d')],_0x1d8a35);})[_0xa613('0x35')](function(_0x410455){_0xd5138b=_0x410455;logger[_0xa613('0xc')](_0xa613('0x5f'),_0xd5138b['id']);return getTicket(_0x497757,_0x3043da,_0xd5138b,_0x2e82bc,_0x3480b9,_0x2e82bc[_0xa613('0x6e')],_0x1d8a35,_0xa613('0x6f'));})[_0xa613('0x35')](function(_0x4f9b31){_0x1b1d1f=_0x4f9b31;logger[_0xa613('0xc')](_0xa613('0x61'));logger[_0xa613('0xc')](_0xa613('0x62'),_0x1b1d1f['id']);return setRelationship(_0x1d8a35,_0x3043da,_0x1b1d1f,'users');})[_0xa613('0x35')](function(){return setRelationship(_0x1d8a35,_0xd5138b,_0x1b1d1f,_0xa613('0x64'));})['then'](function(){return getServerInfo(_0x1d8a35);})[_0xa613('0x35')](function(_0xf47aac){var _0x3b4f3a=parseInt(_0xf47aac[_0xa613('0x70')][_0xa613('0x65')](0x0));var _0xfab453=util[_0xa613('0x23')](_0xa613('0x66'),_0x497757['remoteUri'],_0x1b1d1f['id']);if(_0x3b4f3a>0x6){_0xfab453=util['format'](_0xa613('0x71'),_0x497757['remoteUri'],_0x1b1d1f['id']);}logger[_0xa613('0xc')](_0xa613('0x6b'),_0xa613('0x67'));emit(util[_0xa613('0x23')](_0xa613('0x72'),_0x40c647[_0xa613('0xe')]),_0xa613('0x68'),{'uri':_0xfab453});})['catch'](function(_0xefe56c){logger[_0xa613('0x73')](_0xa613('0x6b'),JSON[_0xa613('0x21')](_0xefe56c));});};exports[_0xa613('0x74')]=function(_0x4e1453,_0xe7c21a,_0x3c8d60,_0x426b30,_0x278e6e,_0x4ea6d9){var _0x33026e,_0x1d326f,_0x2d5495,_0x4b715c;_0x4ea6d9[_0xa613('0x56')]=intUtil[_0xa613('0x55')](_0x4ea6d9['remoteUri']);_0x4ea6d9[_0xa613('0x57')]=intUtil[_0xa613('0x55')](_0x4ea6d9[_0xa613('0x57')]);def[_0xa613('0x58')]=util[_0xa613('0x23')]('%s/service/v4_1/rest.php',_0x4ea6d9[_0xa613('0x56')]);if(_0x278e6e&&_0x278e6e[_0xa613('0x75')]){logger['info']('['+_0xe7c21a[_0xa613('0x76')][_0xa613('0x77')]()+']','Recording\x20is\x20enabled!');_0xe7c21a['recordingURL']=util[_0xa613('0x23')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4ea6d9[_0xa613('0x57')],_0xe7c21a[_0xa613('0x5c')],md5(_0xe7c21a['uniqueid']));}else{_0xe7c21a['recordingURL']='';}return getConnection(_0x4ea6d9)['then'](function(_0x4dcf7d){_0x4b715c=_0x4dcf7d;if(!_['isNil'](_0x426b30)){return getUser(_0x4ea6d9,_0x426b30[_0xa613('0xe')],_0x4b715c);}else{return getUser(_0x4ea6d9,null,_0x4b715c);}})[_0xa613('0x35')](function(_0xcac2a2){_0x33026e=_0xcac2a2;logger[_0xa613('0xc')](_0xa613('0x5d'),_0x33026e['id']);return getEndUser(_0x4ea6d9,_0xe7c21a[_0xa613('0x78')],_0xe7c21a[_0xa613('0x5e')],_0x4b715c);})[_0xa613('0x35')](function(_0x2155bd){_0x1d326f=_0x2155bd;logger['info']('The\x20Enduser\x20ID\x20is:',_0x1d326f['id']);return getTicket(_0x4ea6d9,_0x33026e,_0x1d326f,_0x3c8d60,_0xe7c21a,_0x3c8d60['Fields'],_0x4b715c,_0xa613('0x60'));})[_0xa613('0x35')](function(_0x4b2c97){_0x2d5495=_0x4b2c97;logger['info'](_0xa613('0x61'));logger[_0xa613('0xc')](_0xa613('0x62'),_0x2d5495['id']);return setRelationship(_0x4b715c,_0x33026e,_0x2d5495,_0xa613('0x63'));})[_0xa613('0x35')](function(){return setRelationship(_0x4b715c,_0x1d326f,_0x2d5495,_0xa613('0x64'));})[_0xa613('0x35')](function(){return getServerInfo(_0x4b715c);})[_0xa613('0x79')](function(_0x4c30bd){logger[_0xa613('0x73')]('['+_0xe7c21a[_0xa613('0x76')]['toUpperCase']()+']',JSON[_0xa613('0x21')](_0x4c30bd));});};
\ No newline at end of file
index 7c18b36..0a79b46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b6c=['keyType','key','format','%s:\x20%s','stripTrailingSlash','slice','lastIndexOf','isNil','test','lodash','util','getString','length','sortBy','type','string','push','variable','variableName','customVariable','name','Variable','toLowerCase','toString','keyValue'];(function(_0x5a5122,_0x2aca0f){var _0x45e3af=function(_0x4ceea3){while(--_0x4ceea3){_0x5a5122['push'](_0x5a5122['shift']());}};_0x45e3af(++_0x2aca0f);}(_0x3b6c,0xea));var _0xc3b6=function(_0x779c7d,_0x2ea100){_0x779c7d=_0x779c7d-0x0;var _0x57e98=_0x3b6c[_0x779c7d];return _0x57e98;};'use strict';var _=require(_0xc3b6('0x0'));var util=require(_0xc3b6('0x1'));exports[_0xc3b6('0x2')]=function(_0x464fc6,_0x5adb07,_0x4311be){var _0x43614d=[];if(_0x464fc6[_0xc3b6('0x3')]>0x0){var _0x19797d=_[_0xc3b6('0x4')](_0x464fc6,['id']);for(var _0x57537e=0x0;_0x57537e<_0x19797d['length'];_0x57537e++){var _0x372e94=_0x19797d[_0x57537e];if(_0x372e94[_0xc3b6('0x5')]===_0xc3b6('0x6')){_0x43614d[_0xc3b6('0x7')](_0x372e94['content']);}else if(_0x372e94['type']===_0xc3b6('0x8')&&_0x372e94['variableName']){_0x5adb07[_0x372e94[_0xc3b6('0x9')]]&&_0x43614d[_0xc3b6('0x7')](_0x5adb07[_0x372e94[_0xc3b6('0x9')]]['toString']());}else if(_0x372e94[_0xc3b6('0x5')]===_0xc3b6('0xa')&&_0x372e94['Variable']&&_0x372e94['Variable'][_0xc3b6('0xb')]){_0x5adb07[_0x372e94[_0xc3b6('0xc')][_0xc3b6('0xb')][_0xc3b6('0xd')]()]&&_0x43614d[_0xc3b6('0x7')](_0x5adb07[_0x372e94[_0xc3b6('0xc')]['name'][_0xc3b6('0xd')]()][_0xc3b6('0xe')]());}else if(_0x372e94['type']===_0xc3b6('0xf')){if(_0x372e94[_0xc3b6('0x10')]===_0xc3b6('0x6')&&_0x372e94['key']){_0x43614d[_0xc3b6('0x7')](util['format']('%s:\x20%s',_0x372e94['key'],_0x372e94['keyContent']));}else if(_0x372e94[_0xc3b6('0x10')]===_0xc3b6('0x8')&&_0x372e94[_0xc3b6('0x9')]&&_0x372e94[_0xc3b6('0x11')]){_0x5adb07[_0x372e94['variableName']]&&_0x43614d[_0xc3b6('0x7')](util[_0xc3b6('0x12')]('%s:\x20%s',_0x372e94[_0xc3b6('0x11')],_0x5adb07[_0x372e94[_0xc3b6('0x9')]]));}else if(_0x372e94['keyType']===_0xc3b6('0xa')&&_0x372e94['Variable']&&_0x372e94[_0xc3b6('0xc')][_0xc3b6('0xb')]&&_0x372e94[_0xc3b6('0x11')]){_0x5adb07[_0x372e94[_0xc3b6('0xc')][_0xc3b6('0xb')]['toLowerCase']()]&&_0x43614d[_0xc3b6('0x7')](util[_0xc3b6('0x12')](_0xc3b6('0x13'),_0x372e94[_0xc3b6('0x11')],_0x5adb07[_0x372e94['Variable'][_0xc3b6('0xb')][_0xc3b6('0xd')]()]));}}}}return _0x43614d['join'](_0x4311be);};exports[_0xc3b6('0x14')]=function(_0x26763b){var _0x43f4b1=_0x26763b[_0xc3b6('0x15')](-0x1);if(_0x43f4b1==='/'){_0x26763b=_0x26763b['substring'](0x0,_0x26763b[_0xc3b6('0x16')](_0x43f4b1));}return _0x26763b;};exports['validateEmail']=function(_0x5520dd){if(!_[_0xc3b6('0x17')](_0x5520dd)&&_0x5520dd!==''){var _0x416daa=/^(([^<>()\[\]\\.,;:\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 _0x416daa[_0xc3b6('0x18')](String(_0x5520dd)['toLowerCase']());}else{return![];}};
\ No newline at end of file
+var _0x5c02=['util','length','type','string','content','variable','variableName','push','toString','customVariable','Variable','name','toLowerCase','keyValue','keyType','format','%s:\x20%s','key','keyContent','join','stripTrailingSlash','slice','substring','lastIndexOf','validateEmail','test','lodash'];(function(_0x5d2331,_0x33970a){var _0x165126=function(_0x1e72da){while(--_0x1e72da){_0x5d2331['push'](_0x5d2331['shift']());}};_0x165126(++_0x33970a);}(_0x5c02,0xbc));var _0x25c0=function(_0x79d488,_0xbb0bb0){_0x79d488=_0x79d488-0x0;var _0x3cf3c9=_0x5c02[_0x79d488];return _0x3cf3c9;};'use strict';var _=require(_0x25c0('0x0'));var util=require(_0x25c0('0x1'));exports['getString']=function(_0x2f25ba,_0x1d888f,_0x23fd34){var _0xe38c3c=[];if(_0x2f25ba[_0x25c0('0x2')]>0x0){var _0x3bd57f=_['sortBy'](_0x2f25ba,['id']);for(var _0x236dd5=0x0;_0x236dd5<_0x3bd57f[_0x25c0('0x2')];_0x236dd5++){var _0x510504=_0x3bd57f[_0x236dd5];if(_0x510504[_0x25c0('0x3')]===_0x25c0('0x4')){_0xe38c3c['push'](_0x510504[_0x25c0('0x5')]);}else if(_0x510504['type']===_0x25c0('0x6')&&_0x510504[_0x25c0('0x7')]){_0x1d888f[_0x510504[_0x25c0('0x7')]]&&_0xe38c3c[_0x25c0('0x8')](_0x1d888f[_0x510504['variableName']][_0x25c0('0x9')]());}else if(_0x510504[_0x25c0('0x3')]===_0x25c0('0xa')&&_0x510504[_0x25c0('0xb')]&&_0x510504['Variable']['name']){_0x1d888f[_0x510504[_0x25c0('0xb')][_0x25c0('0xc')][_0x25c0('0xd')]()]&&_0xe38c3c[_0x25c0('0x8')](_0x1d888f[_0x510504[_0x25c0('0xb')][_0x25c0('0xc')][_0x25c0('0xd')]()][_0x25c0('0x9')]());}else if(_0x510504['type']===_0x25c0('0xe')){if(_0x510504[_0x25c0('0xf')]===_0x25c0('0x4')&&_0x510504['key']){_0xe38c3c[_0x25c0('0x8')](util[_0x25c0('0x10')](_0x25c0('0x11'),_0x510504[_0x25c0('0x12')],_0x510504[_0x25c0('0x13')]));}else if(_0x510504[_0x25c0('0xf')]===_0x25c0('0x6')&&_0x510504[_0x25c0('0x7')]&&_0x510504['key']){_0x1d888f[_0x510504[_0x25c0('0x7')]]&&_0xe38c3c[_0x25c0('0x8')](util[_0x25c0('0x10')](_0x25c0('0x11'),_0x510504['key'],_0x1d888f[_0x510504[_0x25c0('0x7')]]));}else if(_0x510504[_0x25c0('0xf')]===_0x25c0('0xa')&&_0x510504[_0x25c0('0xb')]&&_0x510504['Variable'][_0x25c0('0xc')]&&_0x510504['key']){_0x1d888f[_0x510504[_0x25c0('0xb')][_0x25c0('0xc')][_0x25c0('0xd')]()]&&_0xe38c3c[_0x25c0('0x8')](util[_0x25c0('0x10')](_0x25c0('0x11'),_0x510504[_0x25c0('0x12')],_0x1d888f[_0x510504[_0x25c0('0xb')][_0x25c0('0xc')]['toLowerCase']()]));}}}}return _0xe38c3c[_0x25c0('0x14')](_0x23fd34);};exports[_0x25c0('0x15')]=function(_0x514b02){var _0x53ab76=_0x514b02[_0x25c0('0x16')](-0x1);if(_0x53ab76==='/'){_0x514b02=_0x514b02[_0x25c0('0x17')](0x0,_0x514b02[_0x25c0('0x18')](_0x53ab76));}return _0x514b02;};exports[_0x25c0('0x19')]=function(_0x56982e){if(!_['isNil'](_0x56982e)&&_0x56982e!==''){var _0x26f670=/^(([^<>()\[\]\\.,;:\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 _0x26f670[_0x25c0('0x1a')](String(_0x56982e)[_0x25c0('0xd')]());}else{return![];}};
\ No newline at end of file
index d2f5c46..35d3ca0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['stringify','validateEmail','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','length','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','getUser','admin','Searching\x20end\x20user\x20with\x20phone','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','login','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','stripTrailingSlash','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','recordingURL','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','The\x20Ticket\x20ID\x20is:','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridnum','lastevent','bluebird','md5','util','ioredis','./util','../../../../config/environment','redis','localhost','socket.io-emitter','emit','forEach','string','picklist','idField','content','type','variable','variableName','toString','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','getString','Subjects','POST','remoteUri','create','username','sessionName','then','resolve','result','format','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s'];(function(_0x3582e6,_0x29ac34){var _0x10228f=function(_0x791a48){while(--_0x791a48){_0x3582e6['push'](_0x3582e6['shift']());}};_0x10228f(++_0x29ac34);}(_0x9c44,0x178));var _0x49c4=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x9c44[_0x1035c1];return _0x308d67;};'use strict';var _=require('lodash');var rp=require('request-promise');var BPromise=require(_0x49c4('0x0'));var md5=require(_0x49c4('0x1'));var util=require(_0x49c4('0x2'));var Redis=require(_0x49c4('0x3'));var intUtil=require(_0x49c4('0x4'));var config=require(_0x49c4('0x5'));var logger=require('../../../../config/logger')('vTiger');config[_0x49c4('0x6')]=_['defaults'](config[_0x49c4('0x6')],{'host':_0x49c4('0x7'),'port':0x18eb});var io=require(_0x49c4('0x8'))(new Redis(config[_0x49c4('0x6')]));function emit(_0x436234,_0x511d53,_0x11c586){io['to'](_0x436234)[_0x49c4('0x9')](_0x511d53,_0x11c586);}function getCustomFields(_0x1d13fb,_0x4487ca){var _0x4c7d3a={};if(_0x1d13fb['length']>0x0){_[_0x49c4('0xa')](_0x1d13fb,function(_0x313e73){if(_['includes']([_0x49c4('0xb'),_0x49c4('0xc')],_0x313e73['type'])&&_0x313e73['idField']){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x313e73[_0x49c4('0xe')]['toString']();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x10')&&_0x313e73['variableName']&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x11')]]){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x4487ca[_0x313e73[_0x49c4('0x11')]][_0x49c4('0x12')]();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x13')&&_0x313e73[_0x49c4('0x14')]&&_0x313e73['Variable'][_0x49c4('0x15')]&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')][_0x49c4('0x16')]()]){_0x4c7d3a[_0x313e73['idField']]=_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')]['toLowerCase']()]['toString']();}});}return _0x4c7d3a;}function createTicket(_0x3c782d,_0x2f82d5,_0x3addb2,_0x59f29b,_0x24856d,_0x50b151,_0x2cbd50){logger[_0x49c4('0x17')](_0x49c4('0x18'));var _0x291526=_[_0x49c4('0x19')]({'parent_id':'','assigned_user_id':_0x2f82d5['id'],'ticketpriorities':_0x49c4('0x1a'),'ticketstatus':_0x49c4('0x1b'),'ticket_title':intUtil[_0x49c4('0x1c')](_0x59f29b[_0x49c4('0x1d')],_0x24856d,'\x20'),'description':intUtil['getString'](_0x59f29b['Descriptions'],_0x24856d,'\x0a'),'contact_id':_0x3addb2['id']},getCustomFields(_0x50b151,_0x24856d));var _0x57f502={'method':_0x49c4('0x1e'),'uri':util['format']('%s/webservice.php',_0x3c782d[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x20'),'username':_0x3c782d[_0x49c4('0x21')],'sessionName':_0x2cbd50[_0x49c4('0x22')],'elementType':'HelpDesk','element':JSON['stringify'](_0x291526)},'json':!![]};return request(_0x57f502)[_0x49c4('0x23')](function(_0x9cb797){if(_0x9cb797['success']){return BPromise[_0x49c4('0x24')]({'id':_0x9cb797[_0x49c4('0x25')]['id']});}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x27'),JSON['stringify'](_0x9cb797['error'])));}})[_0x49c4('0x28')](function(_0x53c199){var _0x3800b7=_0x53c199[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'createTicket',_0x3800b7,JSON[_0x49c4('0x2c')](_0x53c199));});}function getUser(_0x2b2793,_0x46e04d,_0x4f28a2){if(intUtil[_0x49c4('0x2d')](_0x46e04d)){logger[_0x49c4('0x17')](_0x49c4('0x2e'),_0x46e04d);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2b2793[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x2b2793['username'],'sessionName':_0x4f28a2['sessionName'],'query':util[_0x49c4('0x26')](_0x49c4('0x31'),_0x46e04d)},'json':!![]})[_0x49c4('0x23')](function(_0x27e467){if(_0x27e467[_0x49c4('0x32')]&&_0x27e467['result'][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x34'));return BPromise[_0x49c4('0x24')]({'id':_0x27e467['result'][0x0]['id'],'email':_0x27e467['result'][0x0][_0x49c4('0x35')],'name':_0x27e467[_0x49c4('0x25')][0x0][_0x49c4('0x36')]+'\x20'+_0x27e467[_0x49c4('0x25')][_0x49c4('0x37')]});}else{logger['info'](_0x49c4('0x38'));return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2[_0x49c4('0x39')],'email':_0x2b2793['username'],'name':'admin'});}})[_0x49c4('0x28')](function(_0x1991e9){var _0x3bec0a=_0x1991e9[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x3a'),_0x3bec0a,JSON[_0x49c4('0x2c')](_0x1991e9));});}else{logger[_0x49c4('0x17')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2['userId'],'email':_0x2b2793[_0x49c4('0x21')],'name':_0x49c4('0x3b')})[_0x49c4('0x28')](function(_0x1c2830){var _0x4ed4f8=_0x1c2830[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'getUser',_0x4ed4f8,JSON[_0x49c4('0x2c')](_0x1c2830));});}}function getEndUser(_0x21d8c7,_0x178987,_0x5e5366,_0x1ba7a0){logger[_0x49c4('0x17')](_0x49c4('0x3c'),_0x5e5366);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x21d8c7[_0x49c4('0x21')],'sessionName':_0x1ba7a0[_0x49c4('0x22')],'query':util[_0x49c4('0x26')](_0x49c4('0x3d'),_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366)},'json':!![]})[_0x49c4('0x23')](function(_0x29dd5d){if(_0x29dd5d[_0x49c4('0x32')]&&_0x29dd5d[_0x49c4('0x25')][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x3e'));return BPromise[_0x49c4('0x24')]({'id':_0x29dd5d[_0x49c4('0x25')][0x0]['id'],'name':_0x29dd5d['result'][0x0][_0x49c4('0x3f')]+'\x20'+_0x29dd5d['result'][0x0][_0x49c4('0x40')],'phone':_0x5e5366});}else{logger[_0x49c4('0x17')](_0x49c4('0x41'));return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7['remoteUri']),'form':{'operation':'create','sessionName':_0x1ba7a0[_0x49c4('0x22')],'elementType':_0x49c4('0x42'),'element':JSON[_0x49c4('0x2c')]({'lastname':_0x178987,'phone':_0x5e5366,'assigned_user_id':'\x20'})},'json':!![]})[_0x49c4('0x23')](function(_0x490823){logger[_0x49c4('0x17')](_0x49c4('0x43'));return BPromise[_0x49c4('0x24')]({'id':_0x490823[_0x49c4('0x25')]['id'],'name':_0x490823[_0x49c4('0x25')][_0x49c4('0x40')],'phone':_0x490823[_0x49c4('0x25')][_0x49c4('0x44')]});})[_0x49c4('0x28')](function(_0x5640d3){var _0x2ad771=_0x5640d3['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x45'),_0x2ad771,JSON[_0x49c4('0x2c')](_0x5640d3));});}});}function getConnection(_0x2d93d8){var _0x5b296d=_0x2d93d8[_0x49c4('0x21')];var _0x15b674=_0x2d93d8[_0x49c4('0x46')];return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'qs':{'operation':'getchallenge','username':_0x5b296d},'json':!![]})[_0x49c4('0x23')](function(_0x5cfff9){if(_0x5cfff9[_0x49c4('0x32')]){return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x47'),'username':_0x5b296d,'accessKey':md5(_0x5cfff9[_0x49c4('0x25')]['token']+_0x15b674)},'json':!![]});}})[_0x49c4('0x23')](function(_0x3feaf0){if(_0x3feaf0['success']){return BPromise[_0x49c4('0x24')](_0x3feaf0[_0x49c4('0x25')]);}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x48'),_0x2d93d8['id']));}})['catch'](function(_0x5d8bf0){var _0x144fd2=_0x5d8bf0['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x49'),_0x144fd2,JSON[_0x49c4('0x2c')](_0x5d8bf0));});}function request(_0x240c20){logger[_0x49c4('0x17')](_0x49c4('0x4a'),JSON['stringify'](_0x240c20));return rp(_0x240c20);}exports[_0x49c4('0x4b')]=function(_0x1550ce,_0x3936d3,_0x3d944c,_0x17ef75,_0x2644c0,_0x156748){var _0x25d174,_0x1e0b4f,_0x1856be,_0x5b822f;_0x156748['remoteUri']=intUtil[_0x49c4('0x4c')](_0x156748[_0x49c4('0x1f')]);if(_0x2644c0&&_0x2644c0['monitor_format']){logger['info'](_0x49c4('0x4d'),'Recording\x20is\x20enabled!');_0x3936d3['recordingURL']=util[_0x49c4('0x26')](_0x49c4('0x4e'),_0x156748[_0x49c4('0x4f')],_0x3936d3[_0x49c4('0x50')],md5(_0x3936d3[_0x49c4('0x50')]));}else{_0x3936d3[_0x49c4('0x51')]='';}return getConnection(_0x156748)[_0x49c4('0x23')](function(_0x50798e){_0x5b822f=_0x50798e;return getUser(_0x156748,_0x17ef75[_0x49c4('0x52')],_0x5b822f);})[_0x49c4('0x23')](function(_0x207572){_0x25d174=_0x207572;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x25d174['id']);return getEndUser(_0x156748,_0x3936d3[_0x49c4('0x54')],_0x3936d3['calleridnum'],_0x5b822f);})['then'](function(_0x1ef0c1){_0x1e0b4f=_0x1ef0c1;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0x1e0b4f['id']);return createTicket(_0x156748,_0x25d174,_0x1e0b4f,_0x3d944c,_0x3936d3,_0x3d944c[_0x49c4('0x56')],_0x5b822f);})[_0x49c4('0x23')](function(_0x6b2592){_0x1856be=_0x6b2592;logger[_0x49c4('0x17')]('Ticket\x20created!');logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x1856be['id']);var _0x4ba4eb=util[_0x49c4('0x26')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x156748[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x1856be['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x4d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x17ef75[_0x49c4('0x15')]),'trigger:browser:url',{'uri':_0x4ba4eb});})[_0x49c4('0x28')](function(_0x27b9c2){logger['error'](_0x49c4('0x4d'),JSON[_0x49c4('0x2c')](_0x27b9c2));});};exports['outbound']=function(_0x39c455,_0x42e0e6,_0x4f50bf,_0x4dc54d,_0x589484,_0x513879,_0xc43386){var _0x54947d,_0xb20a5d,_0x32f344,_0x515240;_0x513879[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x513879['remoteUri']);_0x513879[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x513879[_0x49c4('0x4f')]);if(_0xc43386&&_0xc43386[_0x49c4('0x5b')]&&_0xc43386['recordingFormat']!==_0x49c4('0x5c')){logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x5e'));_0x42e0e6['recordingURL']=util[_0x49c4('0x26')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x513879['serverUrl'],_0x42e0e6['uniqueid'],md5(_0x42e0e6['uniqueid']));}return getConnection(_0x513879)[_0x49c4('0x23')](function(_0x32eaef){_0x515240=_0x32eaef;return getUser(_0x513879,_0x4dc54d[_0x49c4('0x52')],_0x515240);})[_0x49c4('0x23')](function(_0x5b056e){_0x54947d=_0x5b056e;logger['info'](_0x49c4('0x53'),_0x54947d['id']);return getEndUser(_0x513879,_0x42e0e6[_0x49c4('0x5f')],_0x42e0e6[_0x49c4('0x60')],_0x515240);})[_0x49c4('0x23')](function(_0x102c15){_0xb20a5d=_0x102c15;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0xb20a5d['id']);return createTicket(_0x513879,_0x54947d,_0xb20a5d,_0x4f50bf,_0x42e0e6,_0x4f50bf[_0x49c4('0x56')],_0x515240);})['then'](function(_0x2276db){_0x32f344=_0x2276db;logger['info'](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x32f344['id']);var _0x1ea1b4=util[_0x49c4('0x26')](_0x49c4('0x62'),_0x513879[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x32f344['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x4dc54d[_0x49c4('0x15')]),_0x49c4('0x63'),{'uri':_0x1ea1b4});})[_0x49c4('0x28')](function(_0x371e49){logger[_0x49c4('0x2a')]('[OUTBOUND]',JSON['stringify'](_0x371e49));});};exports[_0x49c4('0x64')]=function(_0x16b3e8,_0x4af680,_0x1a15f3,_0x38ad50,_0x2939fd,_0x16e7b1){var _0x4d6aaa,_0x5a14a5,_0x4a85d4,_0x2e90d8;_0x16e7b1[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x1f')]);_0x16e7b1[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x4f')]);if(_0x2939fd&&_0x2939fd[_0x49c4('0x65')]){logger[_0x49c4('0x17')]('['+_0x4af680['lastevent'][_0x49c4('0x66')]()+']',_0x49c4('0x5e'));_0x4af680[_0x49c4('0x51')]=util['format'](_0x49c4('0x4e'),_0x16e7b1[_0x49c4('0x4f')],_0x4af680[_0x49c4('0x50')],md5(_0x4af680[_0x49c4('0x50')]));}else{_0x4af680[_0x49c4('0x51')]='';}return getConnection(_0x16e7b1)[_0x49c4('0x23')](function(_0x35fa39){_0x2e90d8=_0x35fa39;return getUser(_0x16e7b1,'',_0x2e90d8);})[_0x49c4('0x23')](function(_0x4ba198){_0x4d6aaa=_0x4ba198;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x4d6aaa['id']);return getEndUser(_0x16e7b1,_0x4af680[_0x49c4('0x54')],_0x4af680[_0x49c4('0x67')],_0x2e90d8);})[_0x49c4('0x23')](function(_0x4a204d){_0x5a14a5=_0x4a204d;logger['info'](_0x49c4('0x55'),_0x5a14a5['id']);return createTicket(_0x16e7b1,_0x4d6aaa,_0x5a14a5,_0x1a15f3,_0x4af680,_0x1a15f3['Fields'],_0x2e90d8);})[_0x49c4('0x23')](function(_0x558880){_0x4a85d4=_0x558880;logger[_0x49c4('0x17')](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x4a85d4['id']);})['catch'](function(_0x123060){logger[_0x49c4('0x2a')]('['+_0x4af680[_0x49c4('0x68')][_0x49c4('0x66')]()+']',JSON[_0x49c4('0x2c')](_0x123060));});};
\ No newline at end of file
+var _0x9c44=['stringify','validateEmail','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','length','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','getUser','admin','Searching\x20end\x20user\x20with\x20phone','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','login','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','stripTrailingSlash','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','recordingURL','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','The\x20Ticket\x20ID\x20is:','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridnum','lastevent','bluebird','md5','util','ioredis','./util','../../../../config/environment','redis','localhost','socket.io-emitter','emit','forEach','string','picklist','idField','content','type','variable','variableName','toString','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','getString','Subjects','POST','remoteUri','create','username','sessionName','then','resolve','result','format','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s'];(function(_0x1bc40c,_0x36041c){var _0x2ab19e=function(_0x3f7550){while(--_0x3f7550){_0x1bc40c['push'](_0x1bc40c['shift']());}};_0x2ab19e(++_0x36041c);}(_0x9c44,0x178));var _0x49c4=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x9c44[_0x1035c1];return _0x308d67;};'use strict';var _=require('lodash');var rp=require('request-promise');var BPromise=require(_0x49c4('0x0'));var md5=require(_0x49c4('0x1'));var util=require(_0x49c4('0x2'));var Redis=require(_0x49c4('0x3'));var intUtil=require(_0x49c4('0x4'));var config=require(_0x49c4('0x5'));var logger=require('../../../../config/logger')('vTiger');config[_0x49c4('0x6')]=_['defaults'](config[_0x49c4('0x6')],{'host':_0x49c4('0x7'),'port':0x18eb});var io=require(_0x49c4('0x8'))(new Redis(config[_0x49c4('0x6')]));function emit(_0x436234,_0x511d53,_0x11c586){io['to'](_0x436234)[_0x49c4('0x9')](_0x511d53,_0x11c586);}function getCustomFields(_0x1d13fb,_0x4487ca){var _0x4c7d3a={};if(_0x1d13fb['length']>0x0){_[_0x49c4('0xa')](_0x1d13fb,function(_0x313e73){if(_['includes']([_0x49c4('0xb'),_0x49c4('0xc')],_0x313e73['type'])&&_0x313e73['idField']){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x313e73[_0x49c4('0xe')]['toString']();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x10')&&_0x313e73['variableName']&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x11')]]){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x4487ca[_0x313e73[_0x49c4('0x11')]][_0x49c4('0x12')]();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x13')&&_0x313e73[_0x49c4('0x14')]&&_0x313e73['Variable'][_0x49c4('0x15')]&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')][_0x49c4('0x16')]()]){_0x4c7d3a[_0x313e73['idField']]=_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')]['toLowerCase']()]['toString']();}});}return _0x4c7d3a;}function createTicket(_0x3c782d,_0x2f82d5,_0x3addb2,_0x59f29b,_0x24856d,_0x50b151,_0x2cbd50){logger[_0x49c4('0x17')](_0x49c4('0x18'));var _0x291526=_[_0x49c4('0x19')]({'parent_id':'','assigned_user_id':_0x2f82d5['id'],'ticketpriorities':_0x49c4('0x1a'),'ticketstatus':_0x49c4('0x1b'),'ticket_title':intUtil[_0x49c4('0x1c')](_0x59f29b[_0x49c4('0x1d')],_0x24856d,'\x20'),'description':intUtil['getString'](_0x59f29b['Descriptions'],_0x24856d,'\x0a'),'contact_id':_0x3addb2['id']},getCustomFields(_0x50b151,_0x24856d));var _0x57f502={'method':_0x49c4('0x1e'),'uri':util['format']('%s/webservice.php',_0x3c782d[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x20'),'username':_0x3c782d[_0x49c4('0x21')],'sessionName':_0x2cbd50[_0x49c4('0x22')],'elementType':'HelpDesk','element':JSON['stringify'](_0x291526)},'json':!![]};return request(_0x57f502)[_0x49c4('0x23')](function(_0x9cb797){if(_0x9cb797['success']){return BPromise[_0x49c4('0x24')]({'id':_0x9cb797[_0x49c4('0x25')]['id']});}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x27'),JSON['stringify'](_0x9cb797['error'])));}})[_0x49c4('0x28')](function(_0x53c199){var _0x3800b7=_0x53c199[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'createTicket',_0x3800b7,JSON[_0x49c4('0x2c')](_0x53c199));});}function getUser(_0x2b2793,_0x46e04d,_0x4f28a2){if(intUtil[_0x49c4('0x2d')](_0x46e04d)){logger[_0x49c4('0x17')](_0x49c4('0x2e'),_0x46e04d);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2b2793[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x2b2793['username'],'sessionName':_0x4f28a2['sessionName'],'query':util[_0x49c4('0x26')](_0x49c4('0x31'),_0x46e04d)},'json':!![]})[_0x49c4('0x23')](function(_0x27e467){if(_0x27e467[_0x49c4('0x32')]&&_0x27e467['result'][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x34'));return BPromise[_0x49c4('0x24')]({'id':_0x27e467['result'][0x0]['id'],'email':_0x27e467['result'][0x0][_0x49c4('0x35')],'name':_0x27e467[_0x49c4('0x25')][0x0][_0x49c4('0x36')]+'\x20'+_0x27e467[_0x49c4('0x25')][_0x49c4('0x37')]});}else{logger['info'](_0x49c4('0x38'));return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2[_0x49c4('0x39')],'email':_0x2b2793['username'],'name':'admin'});}})[_0x49c4('0x28')](function(_0x1991e9){var _0x3bec0a=_0x1991e9[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x3a'),_0x3bec0a,JSON[_0x49c4('0x2c')](_0x1991e9));});}else{logger[_0x49c4('0x17')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2['userId'],'email':_0x2b2793[_0x49c4('0x21')],'name':_0x49c4('0x3b')})[_0x49c4('0x28')](function(_0x1c2830){var _0x4ed4f8=_0x1c2830[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'getUser',_0x4ed4f8,JSON[_0x49c4('0x2c')](_0x1c2830));});}}function getEndUser(_0x21d8c7,_0x178987,_0x5e5366,_0x1ba7a0){logger[_0x49c4('0x17')](_0x49c4('0x3c'),_0x5e5366);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x21d8c7[_0x49c4('0x21')],'sessionName':_0x1ba7a0[_0x49c4('0x22')],'query':util[_0x49c4('0x26')](_0x49c4('0x3d'),_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366)},'json':!![]})[_0x49c4('0x23')](function(_0x29dd5d){if(_0x29dd5d[_0x49c4('0x32')]&&_0x29dd5d[_0x49c4('0x25')][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x3e'));return BPromise[_0x49c4('0x24')]({'id':_0x29dd5d[_0x49c4('0x25')][0x0]['id'],'name':_0x29dd5d['result'][0x0][_0x49c4('0x3f')]+'\x20'+_0x29dd5d['result'][0x0][_0x49c4('0x40')],'phone':_0x5e5366});}else{logger[_0x49c4('0x17')](_0x49c4('0x41'));return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7['remoteUri']),'form':{'operation':'create','sessionName':_0x1ba7a0[_0x49c4('0x22')],'elementType':_0x49c4('0x42'),'element':JSON[_0x49c4('0x2c')]({'lastname':_0x178987,'phone':_0x5e5366,'assigned_user_id':'\x20'})},'json':!![]})[_0x49c4('0x23')](function(_0x490823){logger[_0x49c4('0x17')](_0x49c4('0x43'));return BPromise[_0x49c4('0x24')]({'id':_0x490823[_0x49c4('0x25')]['id'],'name':_0x490823[_0x49c4('0x25')][_0x49c4('0x40')],'phone':_0x490823[_0x49c4('0x25')][_0x49c4('0x44')]});})[_0x49c4('0x28')](function(_0x5640d3){var _0x2ad771=_0x5640d3['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x45'),_0x2ad771,JSON[_0x49c4('0x2c')](_0x5640d3));});}});}function getConnection(_0x2d93d8){var _0x5b296d=_0x2d93d8[_0x49c4('0x21')];var _0x15b674=_0x2d93d8[_0x49c4('0x46')];return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'qs':{'operation':'getchallenge','username':_0x5b296d},'json':!![]})[_0x49c4('0x23')](function(_0x5cfff9){if(_0x5cfff9[_0x49c4('0x32')]){return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x47'),'username':_0x5b296d,'accessKey':md5(_0x5cfff9[_0x49c4('0x25')]['token']+_0x15b674)},'json':!![]});}})[_0x49c4('0x23')](function(_0x3feaf0){if(_0x3feaf0['success']){return BPromise[_0x49c4('0x24')](_0x3feaf0[_0x49c4('0x25')]);}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x48'),_0x2d93d8['id']));}})['catch'](function(_0x5d8bf0){var _0x144fd2=_0x5d8bf0['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x49'),_0x144fd2,JSON[_0x49c4('0x2c')](_0x5d8bf0));});}function request(_0x240c20){logger[_0x49c4('0x17')](_0x49c4('0x4a'),JSON['stringify'](_0x240c20));return rp(_0x240c20);}exports[_0x49c4('0x4b')]=function(_0x1550ce,_0x3936d3,_0x3d944c,_0x17ef75,_0x2644c0,_0x156748){var _0x25d174,_0x1e0b4f,_0x1856be,_0x5b822f;_0x156748['remoteUri']=intUtil[_0x49c4('0x4c')](_0x156748[_0x49c4('0x1f')]);if(_0x2644c0&&_0x2644c0['monitor_format']){logger['info'](_0x49c4('0x4d'),'Recording\x20is\x20enabled!');_0x3936d3['recordingURL']=util[_0x49c4('0x26')](_0x49c4('0x4e'),_0x156748[_0x49c4('0x4f')],_0x3936d3[_0x49c4('0x50')],md5(_0x3936d3[_0x49c4('0x50')]));}else{_0x3936d3[_0x49c4('0x51')]='';}return getConnection(_0x156748)[_0x49c4('0x23')](function(_0x50798e){_0x5b822f=_0x50798e;return getUser(_0x156748,_0x17ef75[_0x49c4('0x52')],_0x5b822f);})[_0x49c4('0x23')](function(_0x207572){_0x25d174=_0x207572;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x25d174['id']);return getEndUser(_0x156748,_0x3936d3[_0x49c4('0x54')],_0x3936d3['calleridnum'],_0x5b822f);})['then'](function(_0x1ef0c1){_0x1e0b4f=_0x1ef0c1;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0x1e0b4f['id']);return createTicket(_0x156748,_0x25d174,_0x1e0b4f,_0x3d944c,_0x3936d3,_0x3d944c[_0x49c4('0x56')],_0x5b822f);})[_0x49c4('0x23')](function(_0x6b2592){_0x1856be=_0x6b2592;logger[_0x49c4('0x17')]('Ticket\x20created!');logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x1856be['id']);var _0x4ba4eb=util[_0x49c4('0x26')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x156748[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x1856be['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x4d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x17ef75[_0x49c4('0x15')]),'trigger:browser:url',{'uri':_0x4ba4eb});})[_0x49c4('0x28')](function(_0x27b9c2){logger['error'](_0x49c4('0x4d'),JSON[_0x49c4('0x2c')](_0x27b9c2));});};exports['outbound']=function(_0x39c455,_0x42e0e6,_0x4f50bf,_0x4dc54d,_0x589484,_0x513879,_0xc43386){var _0x54947d,_0xb20a5d,_0x32f344,_0x515240;_0x513879[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x513879['remoteUri']);_0x513879[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x513879[_0x49c4('0x4f')]);if(_0xc43386&&_0xc43386[_0x49c4('0x5b')]&&_0xc43386['recordingFormat']!==_0x49c4('0x5c')){logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x5e'));_0x42e0e6['recordingURL']=util[_0x49c4('0x26')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x513879['serverUrl'],_0x42e0e6['uniqueid'],md5(_0x42e0e6['uniqueid']));}return getConnection(_0x513879)[_0x49c4('0x23')](function(_0x32eaef){_0x515240=_0x32eaef;return getUser(_0x513879,_0x4dc54d[_0x49c4('0x52')],_0x515240);})[_0x49c4('0x23')](function(_0x5b056e){_0x54947d=_0x5b056e;logger['info'](_0x49c4('0x53'),_0x54947d['id']);return getEndUser(_0x513879,_0x42e0e6[_0x49c4('0x5f')],_0x42e0e6[_0x49c4('0x60')],_0x515240);})[_0x49c4('0x23')](function(_0x102c15){_0xb20a5d=_0x102c15;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0xb20a5d['id']);return createTicket(_0x513879,_0x54947d,_0xb20a5d,_0x4f50bf,_0x42e0e6,_0x4f50bf[_0x49c4('0x56')],_0x515240);})['then'](function(_0x2276db){_0x32f344=_0x2276db;logger['info'](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x32f344['id']);var _0x1ea1b4=util[_0x49c4('0x26')](_0x49c4('0x62'),_0x513879[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x32f344['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x4dc54d[_0x49c4('0x15')]),_0x49c4('0x63'),{'uri':_0x1ea1b4});})[_0x49c4('0x28')](function(_0x371e49){logger[_0x49c4('0x2a')]('[OUTBOUND]',JSON['stringify'](_0x371e49));});};exports[_0x49c4('0x64')]=function(_0x16b3e8,_0x4af680,_0x1a15f3,_0x38ad50,_0x2939fd,_0x16e7b1){var _0x4d6aaa,_0x5a14a5,_0x4a85d4,_0x2e90d8;_0x16e7b1[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x1f')]);_0x16e7b1[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x4f')]);if(_0x2939fd&&_0x2939fd[_0x49c4('0x65')]){logger[_0x49c4('0x17')]('['+_0x4af680['lastevent'][_0x49c4('0x66')]()+']',_0x49c4('0x5e'));_0x4af680[_0x49c4('0x51')]=util['format'](_0x49c4('0x4e'),_0x16e7b1[_0x49c4('0x4f')],_0x4af680[_0x49c4('0x50')],md5(_0x4af680[_0x49c4('0x50')]));}else{_0x4af680[_0x49c4('0x51')]='';}return getConnection(_0x16e7b1)[_0x49c4('0x23')](function(_0x35fa39){_0x2e90d8=_0x35fa39;return getUser(_0x16e7b1,'',_0x2e90d8);})[_0x49c4('0x23')](function(_0x4ba198){_0x4d6aaa=_0x4ba198;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x4d6aaa['id']);return getEndUser(_0x16e7b1,_0x4af680[_0x49c4('0x54')],_0x4af680[_0x49c4('0x67')],_0x2e90d8);})[_0x49c4('0x23')](function(_0x4a204d){_0x5a14a5=_0x4a204d;logger['info'](_0x49c4('0x55'),_0x5a14a5['id']);return createTicket(_0x16e7b1,_0x4d6aaa,_0x5a14a5,_0x1a15f3,_0x4af680,_0x1a15f3['Fields'],_0x2e90d8);})[_0x49c4('0x23')](function(_0x558880){_0x4a85d4=_0x558880;logger[_0x49c4('0x17')](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x4a85d4['id']);})['catch'](function(_0x123060){logger[_0x49c4('0x2a')]('['+_0x4af680[_0x49c4('0x68')][_0x49c4('0x66')]()+']',JSON[_0x49c4('0x2c')](_0x123060));});};
\ No newline at end of file
index b1bdbda..ebc9987 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbeba=['Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','%s/agent/tickets/%s','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','user:%s','[OUTBOUND]','unmanaged','lastevent','toUpperCase','The\x20Ticket\x20ID\x20is:','\x20Error\x20running\x20Zendesk\x20integration','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','Tags','name','getString','Descriptions','ticket','validateEmail','%s/search.json','type:user\x20role:agent\x20email:%s','then','count','find','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','length','results','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','end-user','Caller\x20-\x20%s','Enduser\x20created.','authType','%s:%s','username','password','token','Basic\x20%s','toString','base64','[HTTP]','GET','map','forEach','string','picklist','customField','nameField','content','includes','idField','push','variableName','type','customVariable','Variable','custom_fields','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','integrationTab'];(function(_0x5b4d50,_0x1b988f){var _0x51641e=function(_0x5550e8){while(--_0x5550e8){_0x5b4d50['push'](_0x5b4d50['shift']());}};_0x51641e(++_0x1b988f);}(_0xbeba,0xf1));var _0xabeb=function(_0x3a8069,_0x54b293){_0x3a8069=_0x3a8069-0x0;var _0x5e384f=_0xbeba[_0x3a8069];return _0x5e384f;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0xabeb('0x0'));var util=require(_0xabeb('0x1'));var Redis=require(_0xabeb('0x2'));var intUtil=require(_0xabeb('0x3'));var config=require(_0xabeb('0x4'));var logger=require(_0xabeb('0x5'))(_0xabeb('0x6'));config[_0xabeb('0x7')]=_[_0xabeb('0x8')](config[_0xabeb('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xabeb('0x9'))(new Redis(config[_0xabeb('0x7')]));function emit(_0x470c16,_0x1f253e,_0x501afc){io['to'](_0x470c16)[_0xabeb('0xa')](_0x1f253e,_0x501afc);}var headers={'Content-Type':_0xabeb('0xb'),'Accept':'application/json'};function getTicket(_0x508be5,_0x1f692e,_0x24fce8,_0x3da186,_0x2ccf89){logger[_0xabeb('0xc')](_0xabeb('0xd'));return request({'uri':util[_0xabeb('0xe')](_0xabeb('0xf'),_0x508be5[_0xabeb('0x10')]),'method':_0xabeb('0x11'),'body':{'ticket':_[_0xabeb('0x12')]({'requester_id':_0x24fce8['id'],'submitter_id':_0x1f692e?_0x1f692e['id']:undefined,'assignee_id':_0x1f692e?_0x1f692e['id']:undefined,'tags':getTags(_0x3da186[_0xabeb('0x13')],_0xabeb('0x14')),'subject':intUtil[_0xabeb('0x15')](_0x3da186['Subjects'],_0x2ccf89,'\x20'),'description':intUtil['getString'](_0x3da186[_0xabeb('0x16')],_0x2ccf89,'\x0a'),'comment':{'public':![],'body':intUtil[_0xabeb('0x15')](_0x3da186[_0xabeb('0x16')],_0x2ccf89,'\x0a')}},getCustomFields(_0x3da186['Fields'],_0x2ccf89))}})['then'](function(_0x270b75){logger[_0xabeb('0xc')]('Ticket\x20created!');return _0x270b75[_0xabeb('0x17')];});}function getUser(_0x2a1f20,_0x51db2e){if(intUtil[_0xabeb('0x18')](_0x51db2e)){logger[_0xabeb('0xc')]('Getting\x20agent\x20with\x20email',_0x51db2e);return request({'uri':util['format'](_0xabeb('0x19'),_0x2a1f20[_0xabeb('0x10')]),'qs':{'query':util['format'](_0xabeb('0x1a'),_0x51db2e)}})[_0xabeb('0x1b')](function(_0x586964){if(_0x586964[_0xabeb('0x1c')]){logger[_0xabeb('0xc')]('Agent\x20found!');return _[_0xabeb('0x1d')](_0x586964['results'],{'email':_0x51db2e,'role':_0xabeb('0x1e')});}else{logger[_0xabeb('0xc')](_0xabeb('0x1f'));return request({'uri':util[_0xabeb('0xe')]('%s/users/me.json',_0x2a1f20['remoteUri'])})['then'](function(_0x44c60d){logger[_0xabeb('0xc')]('Admin\x20account\x20selected.');return _0x44c60d['user'];});}});}else{logger[_0xabeb('0xc')](_0xabeb('0x1f'));return request({'uri':util['format'](_0xabeb('0x20'),_0x2a1f20[_0xabeb('0x10')])})[_0xabeb('0x1b')](function(_0x28ff41){logger[_0xabeb('0xc')](_0xabeb('0x21'));return _0x28ff41[_0xabeb('0x22')];});}}function getEndUser(_0x31ddd5,_0x26a45a,_0x2cf497){logger[_0xabeb('0xc')](_0xabeb('0x23'),_0x2cf497);return request({'uri':util['format'](_0xabeb('0x19'),_0x31ddd5[_0xabeb('0x10')]),'qs':{'query':util['format']('type:user\x20role:end-user\x20phone:%s',_0x2cf497)}})[_0xabeb('0x1b')](function(_0x40c62e){var _0x44be21;if(_0x40c62e['results'][_0xabeb('0x24')]){_0x40c62e['results']=_['filter'](_0x40c62e['results'],{'suspended':![],'role':'end-user'});if(_0x40c62e[_0xabeb('0x25')][_0xabeb('0x24')]){_0x44be21=_['first'](_0x40c62e[_0xabeb('0x25')]);}}if(_0x44be21){logger[_0xabeb('0xc')](_0xabeb('0x26'));return _0x44be21;}else{logger[_0xabeb('0xc')](_0xabeb('0x27'));return request({'uri':util[_0xabeb('0xe')](_0xabeb('0x28'),_0x31ddd5[_0xabeb('0x10')]),'method':_0xabeb('0x11'),'body':{'user':{'role':_0xabeb('0x29'),'name':util['format'](_0xabeb('0x2a'),_0x26a45a||_0x2cf497),'phone':_0x2cf497}}})[_0xabeb('0x1b')](function(_0x4afd70){logger[_0xabeb('0xc')](_0xabeb('0x2b'));return _0x4afd70['user'];});}});}function getAuth(_0xaf9e07){var _0x2e9f62;if(_0xaf9e07[_0xabeb('0x2c')]==='password'){_0x2e9f62=util[_0xabeb('0xe')](_0xabeb('0x2d'),_0xaf9e07[_0xabeb('0x2e')],_0xaf9e07[_0xabeb('0x2f')]);}else if(_0xaf9e07[_0xabeb('0x2c')]==='token'){_0x2e9f62=util[_0xabeb('0xe')]('%s/token:%s',_0xaf9e07[_0xabeb('0x2e')],_0xaf9e07[_0xabeb('0x30')]);}return util[_0xabeb('0xe')](_0xabeb('0x31'),new Buffer(_0x2e9f62)[_0xabeb('0x32')](_0xabeb('0x33')));}function request(_0xa5bf11){logger['debug'](_0xabeb('0x34'),JSON['stringify'](_0xa5bf11));return rp(_[_0xabeb('0x8')](_0xa5bf11,{'method':_0xabeb('0x35'),'headers':headers,'json':!![]}));}function getTags(_0x35b4cc,_0x29c781){var _0x259fde=[];if(_0x35b4cc&&_0x35b4cc['length']>0x0){_0x259fde=_[_0xabeb('0x36')](_0x35b4cc,_0x29c781);}return _0x259fde;}function getCustomFields(_0x40c07f,_0x205b22){var _0x3d4ce6=[];var _0x515610={'custom_fields':[]};if(_0x40c07f['length']>0x0){_[_0xabeb('0x37')](_0x40c07f,function(_0x4b0c5b){if(_['includes']([_0xabeb('0x38'),_0xabeb('0x39')],_0x4b0c5b['type'])&&_0x4b0c5b['nameField']&&!_0x4b0c5b[_0xabeb('0x3a')]){_0x515610[_0x4b0c5b[_0xabeb('0x3b')]['toLowerCase']()]=_0x4b0c5b[_0xabeb('0x3c')][_0xabeb('0x32')]();}else if(_[_0xabeb('0x3d')]([_0xabeb('0x38'),_0xabeb('0x39')],_0x4b0c5b['type'])&&_0x4b0c5b[_0xabeb('0x3e')]&&_0x4b0c5b[_0xabeb('0x3a')]){_0x515610['custom_fields'][_0xabeb('0x3f')]({'id':_0x4b0c5b[_0xabeb('0x3e')],'value':_0x4b0c5b[_0xabeb('0x3c')][_0xabeb('0x32')]()});}else if(_0x4b0c5b['type']==='variable'&&_0x4b0c5b[_0xabeb('0x40')]&&_0x4b0c5b[_0xabeb('0x3e')]&&_0x4b0c5b['customField']){_0x205b22[_0x4b0c5b[_0xabeb('0x40')]]&&_0x515610['custom_fields'][_0xabeb('0x3f')]({'id':_0x4b0c5b[_0xabeb('0x3e')],'value':_0x205b22[_0x4b0c5b['variableName']][_0xabeb('0x32')]()});}else if(_0x4b0c5b[_0xabeb('0x41')]===_0xabeb('0x42')&&_0x4b0c5b['Variable']&&_0x4b0c5b[_0xabeb('0x43')]['name']&&_0x4b0c5b[_0xabeb('0x3e')]&&_0x4b0c5b['customField']){_0x205b22[_0x4b0c5b[_0xabeb('0x43')][_0xabeb('0x14')]['toLowerCase']()]&&_0x515610[_0xabeb('0x44')][_0xabeb('0x3f')]({'id':_0x4b0c5b[_0xabeb('0x3e')],'value':_0x205b22[_0x4b0c5b['Variable'][_0xabeb('0x14')]['toLowerCase']()]['toString']()});}});}return _0x515610;}exports[_0xabeb('0x45')]=function(_0x3af8a7,_0x46382d,_0x16649e,_0x4a6188,_0x45fb4f,_0x4a694e){var _0x3210fc,_0x326652;_0x4a694e[_0xabeb('0x10')]=intUtil[_0xabeb('0x46')](_0x4a694e['remoteUri']);_0x4a694e[_0xabeb('0x47')]=intUtil[_0xabeb('0x46')](_0x4a694e['serverUrl']);if(_0x45fb4f&&_0x45fb4f[_0xabeb('0x48')]){logger[_0xabeb('0xc')](_0xabeb('0x49'),'Recording\x20is\x20enabled!');_0x46382d[_0xabeb('0x4a')]=util['format'](_0xabeb('0x4b'),_0x4a694e[_0xabeb('0x47')],_0x46382d[_0xabeb('0x4c')],md5(_0x46382d['uniqueid']));}else{_0x46382d['recordingURL']='';}headers[_0xabeb('0x4d')]=getAuth(_0x4a694e);return getUser(_0x4a694e,_0x4a6188[_0xabeb('0x4e')])[_0xabeb('0x1b')](function(_0x294611){_0x3210fc=_0x294611;logger[_0xabeb('0xc')](_0xabeb('0x4f'),_0x3210fc['id']);return getEndUser(_0x4a694e,_0x46382d[_0xabeb('0x50')],_0x46382d[_0xabeb('0x51')]);})[_0xabeb('0x1b')](function(_0x315a14){_0x326652=_0x315a14;logger[_0xabeb('0xc')]('The\x20Enduser\x20ID\x20is:',_0x326652['id']);return getTicket(_0x4a694e,_0x3210fc,_0x326652,_0x16649e,_0x46382d);})[_0xabeb('0x1b')](function(_0x13d053){if(_0x13d053){logger[_0xabeb('0xc')]('The\x20Ticket\x20ID\x20is:',_0x13d053['id']);switch(_0x4a694e[_0xabeb('0x41')]){case _0xabeb('0x52'):logger[_0xabeb('0xc')](_0xabeb('0x49'),_0xabeb('0x53'));return request({'uri':util['format'](_0xabeb('0x54'),_0x4a694e[_0xabeb('0x10')],_0x3210fc['id'],_0x13d053['id']),'method':_0xabeb('0x11')});case _0xabeb('0x55'):logger['info'](_0xabeb('0x49'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0x4a6188[_0xabeb('0x14')]),'trigger:browser:url',{'uri':util[_0xabeb('0xe')](_0xabeb('0x56'),_0x4a694e[_0xabeb('0x10')][_0xabeb('0x57')](_0xabeb('0x58'),''),_0x13d053['id'])});break;default:logger[_0xabeb('0x59')]('[QUEUE]',_0xabeb('0x5a'));}}})[_0xabeb('0x5b')](function(_0x1db211){logger[_0xabeb('0x59')](_0xabeb('0x5c'),util[_0xabeb('0x5d')](_0x1db211,{'showHidden':!![],'depth':null}));});};exports[_0xabeb('0x5e')]=function(_0x2a91b7,_0x2c5b14,_0x3357fa,_0x4b65b4,_0x501066,_0x3f20d0,_0x56f053){var _0x37ada1,_0x31a50e;_0x3f20d0['remoteUri']=intUtil[_0xabeb('0x46')](_0x3f20d0['remoteUri']);_0x3f20d0[_0xabeb('0x47')]=intUtil['stripTrailingSlash'](_0x3f20d0['serverUrl']);if(_0x56f053&&_0x56f053[_0xabeb('0x5f')]&&_0x56f053['recordingFormat']!==_0xabeb('0x60')){logger[_0xabeb('0xc')]('[OUTBOUND]',_0xabeb('0x61'));_0x2c5b14['recordingURL']=util['format'](_0xabeb('0x4b'),_0x3f20d0['serverUrl'],_0x2c5b14[_0xabeb('0x4c')],md5(_0x2c5b14[_0xabeb('0x4c')]));}headers[_0xabeb('0x4d')]=getAuth(_0x3f20d0);return getUser(_0x3f20d0,_0x4b65b4[_0xabeb('0x4e')])['then'](function(_0x590f65){_0x37ada1=_0x590f65;logger[_0xabeb('0xc')]('The\x20User\x20ID\x20is:',_0x37ada1['id']);return getEndUser(_0x3f20d0,_0x2c5b14[_0xabeb('0x62')],_0x2c5b14[_0xabeb('0x63')]);})[_0xabeb('0x1b')](function(_0x340bfe){_0x31a50e=_0x340bfe;logger[_0xabeb('0xc')](_0xabeb('0x64'),_0x31a50e['id']);return getTicket(_0x3f20d0,_0x37ada1,_0x31a50e,_0x3357fa,_0x2c5b14);})[_0xabeb('0x1b')](function(_0x4732a3){if(_0x4732a3){logger['info']('The\x20Ticket\x20ID\x20is:',_0x4732a3['id']);switch(_0x3f20d0[_0xabeb('0x41')]){case _0xabeb('0x52'):logger[_0xabeb('0xc')]('[OUTBOUND]',_0xabeb('0x53'));return request({'uri':util[_0xabeb('0xe')](_0xabeb('0x54'),_0x3f20d0[_0xabeb('0x10')],_0x37ada1['id'],_0x4732a3['id']),'method':_0xabeb('0x11')});case _0xabeb('0x55'):logger[_0xabeb('0xc')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0xabeb('0x65'),_0x4b65b4['name']),'trigger:browser:url',{'uri':util[_0xabeb('0xe')](_0xabeb('0x56'),_0x3f20d0[_0xabeb('0x10')][_0xabeb('0x57')](_0xabeb('0x58'),''),_0x4732a3['id'])});break;default:logger[_0xabeb('0x59')](_0xabeb('0x66'),_0xabeb('0x5a'));}}})['catch'](function(_0x443dd7){logger[_0xabeb('0x59')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0xabeb('0x5d')](_0x443dd7,{'showHidden':!![],'depth':null}));});};exports[_0xabeb('0x67')]=function(_0x1b5fb3,_0x380c44,_0x46965c,_0x231269,_0x44967a,_0x349656){var _0xa7cb4,_0xace6f9;_0x349656[_0xabeb('0x10')]=intUtil[_0xabeb('0x46')](_0x349656['remoteUri']);_0x349656[_0xabeb('0x47')]=intUtil['stripTrailingSlash'](_0x349656[_0xabeb('0x47')]);if(_0x44967a&&_0x44967a['monitor_format']){logger[_0xabeb('0xc')]('['+_0x380c44[_0xabeb('0x68')][_0xabeb('0x69')]()+']',_0xabeb('0x61'));_0x380c44['recordingURL']=util[_0xabeb('0xe')](_0xabeb('0x4b'),_0x349656[_0xabeb('0x47')],_0x380c44[_0xabeb('0x4c')],md5(_0x380c44[_0xabeb('0x4c')]));}else{_0x380c44[_0xabeb('0x4a')]='';}headers[_0xabeb('0x4d')]=getAuth(_0x349656);return getUser(_0x349656)[_0xabeb('0x1b')](function(_0x5b9d87){_0xa7cb4=_0x5b9d87;logger[_0xabeb('0xc')]('The\x20User\x20ID\x20is:',_0xa7cb4['id']);return getEndUser(_0x349656,_0x380c44[_0xabeb('0x50')],_0x380c44[_0xabeb('0x51')]);})[_0xabeb('0x1b')](function(_0x5be921){_0xace6f9=_0x5be921;logger['info']('The\x20Enduser\x20ID\x20is:',_0xace6f9['id']);return getTicket(_0x349656,_0xa7cb4,_0xace6f9,_0x46965c,_0x380c44);})[_0xabeb('0x1b')](function(_0x119d17){if(_0x119d17){logger['info'](_0xabeb('0x6a'),_0x119d17['id']);}})[_0xabeb('0x5b')](function(_0x756589){logger[_0xabeb('0x59')]('['+_0x380c44[_0xabeb('0x68')][_0xabeb('0x69')]()+']'+_0xabeb('0x6b'),util[_0xabeb('0x5d')](_0x756589,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x9ee5=['Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','filter','end-user','length','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','authType','password','token','%s/token:%s','username','toString','base64','debug','[HTTP]','GET','map','forEach','includes','string','picklist','nameField','toLowerCase','idField','customField','custom_fields','push','content','type','variable','variableName','customVariable','Variable','name','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/agent/tickets/%s','/api/v2','error','catch','inspect','outbound','serverUrl','recordingFormat','none','The\x20User\x20ID\x20is:','destcalleridname','[OUTBOUND]','Displaying\x20ticket\x20to\x20agent...','user:%s','Zendesk\x20account\x20type\x20not\x20recognized','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','calleridname','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','localhost','socket.io-emitter','emit','application/json','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','getString','Subjects','Descriptions','Fields','then','info','ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json'];(function(_0x46f5d8,_0x43f6d6){var _0x43acbe=function(_0xadd8d8){while(--_0xadd8d8){_0x46f5d8['push'](_0x46f5d8['shift']());}};_0x43acbe(++_0x43f6d6);}(_0x9ee5,0x19e));var _0x59ee=function(_0xb21fa3,_0x4ce1bc){_0xb21fa3=_0xb21fa3-0x0;var _0x4c66fe=_0x9ee5[_0xb21fa3];return _0x4c66fe;};'use strict';var _=require(_0x59ee('0x0'));var rp=require(_0x59ee('0x1'));var md5=require(_0x59ee('0x2'));var util=require(_0x59ee('0x3'));var Redis=require(_0x59ee('0x4'));var intUtil=require(_0x59ee('0x5'));var config=require(_0x59ee('0x6'));var logger=require(_0x59ee('0x7'))(_0x59ee('0x8'));config[_0x59ee('0x9')]=_[_0x59ee('0xa')](config[_0x59ee('0x9')],{'host':_0x59ee('0xb'),'port':0x18eb});var io=require(_0x59ee('0xc'))(new Redis(config[_0x59ee('0x9')]));function emit(_0x3fee6c,_0x2fc193,_0x3891b2){io['to'](_0x3fee6c)[_0x59ee('0xd')](_0x2fc193,_0x3891b2);}var headers={'Content-Type':_0x59ee('0xe'),'Accept':_0x59ee('0xe')};function getTicket(_0x2e9784,_0x347cde,_0x3ab293,_0x3c0e9d,_0x3cabfb){logger['info'](_0x59ee('0xf'));return request({'uri':util[_0x59ee('0x10')](_0x59ee('0x11'),_0x2e9784[_0x59ee('0x12')]),'method':_0x59ee('0x13'),'body':{'ticket':_['merge']({'requester_id':_0x3ab293['id'],'submitter_id':_0x347cde?_0x347cde['id']:undefined,'assignee_id':_0x347cde?_0x347cde['id']:undefined,'tags':getTags(_0x3c0e9d['Tags'],'name'),'subject':intUtil[_0x59ee('0x14')](_0x3c0e9d[_0x59ee('0x15')],_0x3cabfb,'\x20'),'description':intUtil[_0x59ee('0x14')](_0x3c0e9d[_0x59ee('0x16')],_0x3cabfb,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x3c0e9d[_0x59ee('0x16')],_0x3cabfb,'\x0a')}},getCustomFields(_0x3c0e9d[_0x59ee('0x17')],_0x3cabfb))}})[_0x59ee('0x18')](function(_0x1c96dd){logger[_0x59ee('0x19')]('Ticket\x20created!');return _0x1c96dd[_0x59ee('0x1a')];});}function getUser(_0x4e2742,_0x1de2cb){if(intUtil[_0x59ee('0x1b')](_0x1de2cb)){logger['info'](_0x59ee('0x1c'),_0x1de2cb);return request({'uri':util[_0x59ee('0x10')](_0x59ee('0x1d'),_0x4e2742[_0x59ee('0x12')]),'qs':{'query':util[_0x59ee('0x10')](_0x59ee('0x1e'),_0x1de2cb)}})[_0x59ee('0x18')](function(_0x40dbcf){if(_0x40dbcf[_0x59ee('0x1f')]){logger[_0x59ee('0x19')](_0x59ee('0x20'));return _[_0x59ee('0x21')](_0x40dbcf[_0x59ee('0x22')],{'email':_0x1de2cb,'role':_0x59ee('0x23')});}else{logger[_0x59ee('0x19')](_0x59ee('0x24'));return request({'uri':util['format'](_0x59ee('0x25'),_0x4e2742[_0x59ee('0x12')])})['then'](function(_0x3d25c0){logger['info'](_0x59ee('0x26'));return _0x3d25c0[_0x59ee('0x27')];});}});}else{logger[_0x59ee('0x19')](_0x59ee('0x24'));return request({'uri':util[_0x59ee('0x10')](_0x59ee('0x25'),_0x4e2742['remoteUri'])})['then'](function(_0x5ed5f2){logger['info'](_0x59ee('0x26'));return _0x5ed5f2[_0x59ee('0x27')];});}}function getEndUser(_0x4d4638,_0x1b6037,_0x9f9e54){logger[_0x59ee('0x19')](_0x59ee('0x28'),_0x9f9e54);return request({'uri':util['format'](_0x59ee('0x1d'),_0x4d4638[_0x59ee('0x12')]),'qs':{'query':util[_0x59ee('0x10')]('type:user\x20role:end-user\x20phone:%s',_0x9f9e54)}})[_0x59ee('0x18')](function(_0x49cc9b){var _0x4f5edf;if(_0x49cc9b[_0x59ee('0x22')]['length']){_0x49cc9b[_0x59ee('0x22')]=_[_0x59ee('0x29')](_0x49cc9b[_0x59ee('0x22')],{'suspended':![],'role':_0x59ee('0x2a')});if(_0x49cc9b[_0x59ee('0x22')][_0x59ee('0x2b')]){_0x4f5edf=_['first'](_0x49cc9b[_0x59ee('0x22')]);}}if(_0x4f5edf){logger[_0x59ee('0x19')]('Enduser\x20found!');return _0x4f5edf;}else{logger[_0x59ee('0x19')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x59ee('0x10')](_0x59ee('0x2c'),_0x4d4638[_0x59ee('0x12')]),'method':'POST','body':{'user':{'role':_0x59ee('0x2a'),'name':util['format'](_0x59ee('0x2d'),_0x1b6037||_0x9f9e54),'phone':_0x9f9e54}}})[_0x59ee('0x18')](function(_0x4572cc){logger['info'](_0x59ee('0x2e'));return _0x4572cc[_0x59ee('0x27')];});}});}function getAuth(_0x2b0b40){var _0x511239;if(_0x2b0b40[_0x59ee('0x2f')]===_0x59ee('0x30')){_0x511239=util[_0x59ee('0x10')]('%s:%s',_0x2b0b40['username'],_0x2b0b40['password']);}else if(_0x2b0b40[_0x59ee('0x2f')]===_0x59ee('0x31')){_0x511239=util[_0x59ee('0x10')](_0x59ee('0x32'),_0x2b0b40[_0x59ee('0x33')],_0x2b0b40['token']);}return util['format']('Basic\x20%s',new Buffer(_0x511239)[_0x59ee('0x34')](_0x59ee('0x35')));}function request(_0x3beffa){logger[_0x59ee('0x36')](_0x59ee('0x37'),JSON['stringify'](_0x3beffa));return rp(_[_0x59ee('0xa')](_0x3beffa,{'method':_0x59ee('0x38'),'headers':headers,'json':!![]}));}function getTags(_0x3b3175,_0x2d7817){var _0x284ade=[];if(_0x3b3175&&_0x3b3175[_0x59ee('0x2b')]>0x0){_0x284ade=_[_0x59ee('0x39')](_0x3b3175,_0x2d7817);}return _0x284ade;}function getCustomFields(_0x5dcf72,_0x253eb9){var _0x43225a=[];var _0x36e52e={'custom_fields':[]};if(_0x5dcf72[_0x59ee('0x2b')]>0x0){_[_0x59ee('0x3a')](_0x5dcf72,function(_0x3867cd){if(_[_0x59ee('0x3b')]([_0x59ee('0x3c'),_0x59ee('0x3d')],_0x3867cd['type'])&&_0x3867cd[_0x59ee('0x3e')]&&!_0x3867cd['customField']){_0x36e52e[_0x3867cd[_0x59ee('0x3e')][_0x59ee('0x3f')]()]=_0x3867cd['content'][_0x59ee('0x34')]();}else if(_[_0x59ee('0x3b')](['string',_0x59ee('0x3d')],_0x3867cd['type'])&&_0x3867cd[_0x59ee('0x40')]&&_0x3867cd[_0x59ee('0x41')]){_0x36e52e[_0x59ee('0x42')][_0x59ee('0x43')]({'id':_0x3867cd[_0x59ee('0x40')],'value':_0x3867cd[_0x59ee('0x44')]['toString']()});}else if(_0x3867cd[_0x59ee('0x45')]===_0x59ee('0x46')&&_0x3867cd[_0x59ee('0x47')]&&_0x3867cd[_0x59ee('0x40')]&&_0x3867cd[_0x59ee('0x41')]){_0x253eb9[_0x3867cd[_0x59ee('0x47')]]&&_0x36e52e['custom_fields'][_0x59ee('0x43')]({'id':_0x3867cd[_0x59ee('0x40')],'value':_0x253eb9[_0x3867cd[_0x59ee('0x47')]][_0x59ee('0x34')]()});}else if(_0x3867cd[_0x59ee('0x45')]===_0x59ee('0x48')&&_0x3867cd[_0x59ee('0x49')]&&_0x3867cd['Variable'][_0x59ee('0x4a')]&&_0x3867cd[_0x59ee('0x40')]&&_0x3867cd[_0x59ee('0x41')]){_0x253eb9[_0x3867cd[_0x59ee('0x49')][_0x59ee('0x4a')][_0x59ee('0x3f')]()]&&_0x36e52e[_0x59ee('0x42')]['push']({'id':_0x3867cd['idField'],'value':_0x253eb9[_0x3867cd[_0x59ee('0x49')][_0x59ee('0x4a')][_0x59ee('0x3f')]()][_0x59ee('0x34')]()});}});}return _0x36e52e;}exports['queue']=function(_0x18fc9b,_0x101f28,_0x4ae370,_0x17ff41,_0x3da625,_0x374a71){var _0x34c9a3,_0x489fd0;_0x374a71[_0x59ee('0x12')]=intUtil['stripTrailingSlash'](_0x374a71[_0x59ee('0x12')]);_0x374a71['serverUrl']=intUtil[_0x59ee('0x4b')](_0x374a71['serverUrl']);if(_0x3da625&&_0x3da625[_0x59ee('0x4c')]){logger[_0x59ee('0x19')](_0x59ee('0x4d'),_0x59ee('0x4e'));_0x101f28[_0x59ee('0x4f')]=util[_0x59ee('0x10')](_0x59ee('0x50'),_0x374a71['serverUrl'],_0x101f28[_0x59ee('0x51')],md5(_0x101f28['uniqueid']));}else{_0x101f28[_0x59ee('0x4f')]='';}headers[_0x59ee('0x52')]=getAuth(_0x374a71);return getUser(_0x374a71,_0x17ff41[_0x59ee('0x53')])[_0x59ee('0x18')](function(_0x577b55){_0x34c9a3=_0x577b55;logger['info']('The\x20User\x20ID\x20is:',_0x34c9a3['id']);return getEndUser(_0x374a71,_0x101f28['calleridname'],_0x101f28[_0x59ee('0x54')]);})[_0x59ee('0x18')](function(_0x503597){_0x489fd0=_0x503597;logger[_0x59ee('0x19')](_0x59ee('0x55'),_0x489fd0['id']);return getTicket(_0x374a71,_0x34c9a3,_0x489fd0,_0x4ae370,_0x101f28);})[_0x59ee('0x18')](function(_0x29403f){if(_0x29403f){logger[_0x59ee('0x19')](_0x59ee('0x56'),_0x29403f['id']);switch(_0x374a71[_0x59ee('0x45')]){case _0x59ee('0x57'):logger[_0x59ee('0x19')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x59ee('0x10')](_0x59ee('0x58'),_0x374a71[_0x59ee('0x12')],_0x34c9a3['id'],_0x29403f['id']),'method':'POST'});case _0x59ee('0x59'):logger[_0x59ee('0x19')]('[QUEUE]',_0x59ee('0x5a'));emit(util[_0x59ee('0x10')]('user:%s',_0x17ff41[_0x59ee('0x4a')]),_0x59ee('0x5b'),{'uri':util[_0x59ee('0x10')](_0x59ee('0x5c'),_0x374a71[_0x59ee('0x12')]['replace'](_0x59ee('0x5d'),''),_0x29403f['id'])});break;default:logger[_0x59ee('0x5e')](_0x59ee('0x4d'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x59ee('0x5f')](function(_0x22b9e7){logger[_0x59ee('0x5e')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0x59ee('0x60')](_0x22b9e7,{'showHidden':!![],'depth':null}));});};exports[_0x59ee('0x61')]=function(_0x2ef8f7,_0x3b4868,_0x54ef31,_0x4e4b77,_0x2bd9be,_0x2d4de5,_0x2dafb3){var _0x1a0206,_0x11e011;_0x2d4de5[_0x59ee('0x12')]=intUtil['stripTrailingSlash'](_0x2d4de5[_0x59ee('0x12')]);_0x2d4de5[_0x59ee('0x62')]=intUtil[_0x59ee('0x4b')](_0x2d4de5[_0x59ee('0x62')]);if(_0x2dafb3&&_0x2dafb3[_0x59ee('0x63')]&&_0x2dafb3[_0x59ee('0x63')]!==_0x59ee('0x64')){logger[_0x59ee('0x19')]('[OUTBOUND]',_0x59ee('0x4e'));_0x3b4868[_0x59ee('0x4f')]=util[_0x59ee('0x10')](_0x59ee('0x50'),_0x2d4de5[_0x59ee('0x62')],_0x3b4868['uniqueid'],md5(_0x3b4868[_0x59ee('0x51')]));}headers[_0x59ee('0x52')]=getAuth(_0x2d4de5);return getUser(_0x2d4de5,_0x4e4b77['email'])['then'](function(_0xfdc6d8){_0x1a0206=_0xfdc6d8;logger['info'](_0x59ee('0x65'),_0x1a0206['id']);return getEndUser(_0x2d4de5,_0x3b4868[_0x59ee('0x66')],_0x3b4868['destcalleridnum']);})[_0x59ee('0x18')](function(_0x1a9909){_0x11e011=_0x1a9909;logger[_0x59ee('0x19')](_0x59ee('0x55'),_0x11e011['id']);return getTicket(_0x2d4de5,_0x1a0206,_0x11e011,_0x54ef31,_0x3b4868);})[_0x59ee('0x18')](function(_0x30b9dc){if(_0x30b9dc){logger[_0x59ee('0x19')]('The\x20Ticket\x20ID\x20is:',_0x30b9dc['id']);switch(_0x2d4de5[_0x59ee('0x45')]){case _0x59ee('0x57'):logger[_0x59ee('0x19')](_0x59ee('0x67'),_0x59ee('0x68'));return request({'uri':util[_0x59ee('0x10')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x2d4de5[_0x59ee('0x12')],_0x1a0206['id'],_0x30b9dc['id']),'method':_0x59ee('0x13')});case'newTab':logger[_0x59ee('0x19')](_0x59ee('0x67'),_0x59ee('0x5a'));emit(util[_0x59ee('0x10')](_0x59ee('0x69'),_0x4e4b77[_0x59ee('0x4a')]),_0x59ee('0x5b'),{'uri':util[_0x59ee('0x10')](_0x59ee('0x5c'),_0x2d4de5[_0x59ee('0x12')]['replace'](_0x59ee('0x5d'),''),_0x30b9dc['id'])});break;default:logger[_0x59ee('0x5e')](_0x59ee('0x67'),_0x59ee('0x6a'));}}})[_0x59ee('0x5f')](function(_0x518f33){logger[_0x59ee('0x5e')](_0x59ee('0x6b'),util[_0x59ee('0x60')](_0x518f33,{'showHidden':!![],'depth':null}));});};exports[_0x59ee('0x6c')]=function(_0x29ce63,_0x3707cb,_0x53b514,_0x2dcbdd,_0x3d7b2f,_0x4ff286){var _0x4dcd22,_0x272b23;_0x4ff286['remoteUri']=intUtil[_0x59ee('0x4b')](_0x4ff286[_0x59ee('0x12')]);_0x4ff286[_0x59ee('0x62')]=intUtil['stripTrailingSlash'](_0x4ff286[_0x59ee('0x62')]);if(_0x3d7b2f&&_0x3d7b2f['monitor_format']){logger['info']('['+_0x3707cb[_0x59ee('0x6d')][_0x59ee('0x6e')]()+']',_0x59ee('0x4e'));_0x3707cb[_0x59ee('0x4f')]=util['format'](_0x59ee('0x50'),_0x4ff286[_0x59ee('0x62')],_0x3707cb[_0x59ee('0x51')],md5(_0x3707cb[_0x59ee('0x51')]));}else{_0x3707cb['recordingURL']='';}headers['Authorization']=getAuth(_0x4ff286);return getUser(_0x4ff286)[_0x59ee('0x18')](function(_0x20f560){_0x4dcd22=_0x20f560;logger['info'](_0x59ee('0x65'),_0x4dcd22['id']);return getEndUser(_0x4ff286,_0x3707cb[_0x59ee('0x6f')],_0x3707cb[_0x59ee('0x54')]);})[_0x59ee('0x18')](function(_0x531b7c){_0x272b23=_0x531b7c;logger[_0x59ee('0x19')](_0x59ee('0x55'),_0x272b23['id']);return getTicket(_0x4ff286,_0x4dcd22,_0x272b23,_0x53b514,_0x3707cb);})[_0x59ee('0x18')](function(_0x3f78f5){if(_0x3f78f5){logger[_0x59ee('0x19')](_0x59ee('0x56'),_0x3f78f5['id']);}})['catch'](function(_0x49d3c5){logger[_0x59ee('0x5e')]('['+_0x3707cb[_0x59ee('0x6d')]['toUpperCase']()+']'+_0x59ee('0x70'),util['inspect'](_0x49d3c5,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index d1ad8be..f1ffaeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe303=['access_token','zone','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','refresh_token','then','error','Failing\x20creating\x20the\x20access_token','info','Search\x20user','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','users','email','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','Administrator','user','The\x20failing\x20result\x20is','stringify','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','catch','data','enduserType','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','role','first_name','last_name','code','SUCCESS','Error:\x20','log','CREATE\x20ERROR','GET','moduleSearch','/crm/v2/Contacts/search?criteria=((Phone:equals:','uri','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','contact','Contacts','lead','Creating\x20new\x20call...','Owner','Subjects','Description','getString','Descriptions','Who_Id','Full_Name','First_Name','Last_Name','What_Id','$se_module','talktime','Call_Duration','mm:ss','utc','endtime','YYYY-MM-DDTHH:mm:ss','diff','starttime','lastevent','called','Call_Result','Called','connect','Answered','rejected','Rejected','abandoned','Abandoned','timeout','Call_Start_Time','outbound','agentcalledAt','Call_Type','Inbound','merge','Fields','/crm/v2/Calls','Call\x20created!','err','host','stripTrailingSlash','serverUrl','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','zoho.eu','com','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Call\x20ID\x20is:','[QUEUE]','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','[OUTBOUND]','destcalleridname','https://crm.','unmanaged','toUpperCase','lodash','md5','./util','moment','../../../../config/environment','zoho','redis','defaults','localhost','socket.io-emitter','emit','debug','[HTTP]','includes','string','picklist','type','idField','content','variable','variableName','toString','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','expires_in'];(function(_0x56cdef,_0x53b645){var _0x36b9ab=function(_0x1efad7){while(--_0x1efad7){_0x56cdef['push'](_0x56cdef['shift']());}};_0x36b9ab(++_0x53b645);}(_0xe303,0x112));var _0x3e30=function(_0x2d4ab3,_0x17cf62){_0x2d4ab3=_0x2d4ab3-0x0;var _0x4a3ad4=_0xe303[_0x2d4ab3];return _0x4a3ad4;};'use strict';var _=require(_0x3e30('0x0'));var rp=require('request-promise');var md5=require(_0x3e30('0x1'));var util=require('util');var intUtil=require(_0x3e30('0x2'));var moment=require(_0x3e30('0x3'));var Redis=require('ioredis');var BPromise=require('bluebird');var config=require(_0x3e30('0x4'));var logger=require('../../../../config/logger')(_0x3e30('0x5'));config[_0x3e30('0x6')]=_[_0x3e30('0x7')](config[_0x3e30('0x6')],{'host':_0x3e30('0x8'),'port':0x18eb});var io=require(_0x3e30('0x9'))(new Redis(config[_0x3e30('0x6')]));function emit(_0x4fdb81,_0x31fba7,_0x471771){io['to'](_0x4fdb81)[_0x3e30('0xa')](_0x31fba7,_0x471771);}function request(_0x22225f){logger[_0x3e30('0xb')](_0x3e30('0xc'),JSON['stringify'](_0x22225f));return rp(_0x22225f);}function getCustomFields(_0x23d67a,_0x2d3693){var _0x493de9={};if(_0x23d67a['length']>0x0){_['forEach'](_0x23d67a,function(_0x26e27e){if(_[_0x3e30('0xd')]([_0x3e30('0xe'),_0x3e30('0xf')],_0x26e27e[_0x3e30('0x10')])&&_0x26e27e[_0x3e30('0x11')]){_0x493de9[_0x26e27e[_0x3e30('0x11')]]=_0x26e27e[_0x3e30('0x12')]['toString']();}else if(_0x26e27e[_0x3e30('0x10')]===_0x3e30('0x13')&&_0x26e27e[_0x3e30('0x14')]&&_0x26e27e[_0x3e30('0x11')]&&_0x2d3693[_0x26e27e[_0x3e30('0x14')]]){_0x493de9[_0x26e27e[_0x3e30('0x11')]]=_0x2d3693[_0x26e27e[_0x3e30('0x14')]][_0x3e30('0x15')]();}else if(_0x26e27e[_0x3e30('0x10')]===_0x3e30('0x16')&&_0x26e27e[_0x3e30('0x17')]&&_0x26e27e[_0x3e30('0x17')]['name']&&_0x26e27e[_0x3e30('0x11')]&&_0x2d3693[_0x26e27e[_0x3e30('0x17')][_0x3e30('0x18')][_0x3e30('0x19')]()]){_0x493de9[_0x26e27e['idField']]=_0x2d3693[_0x26e27e['Variable'][_0x3e30('0x18')][_0x3e30('0x19')]()][_0x3e30('0x15')]();}});}return _0x493de9;}function getName(_0x50cbc6){if(_0x50cbc6[_0x3e30('0x1a')]('\x20')>0x0){var _0x56d5b5=_0x50cbc6[_0x3e30('0x1b')](/ (.+)/);if(_0x56d5b5[0x1]){return _0x56d5b5;}}return[_0x50cbc6,_0x50cbc6];}var accountsTokens={};function getAccessToken(_0x245817){return new Promise(function(_0x5ce0d6,_0x5b491b){if(!_[_0x3e30('0x1c')](accountsTokens[_0x245817['id']])&&!_[_0x3e30('0x1c')](accountsTokens[_0x245817['id']]['access_token'])){if(moment()['isBefore'](accountsTokens[_0x245817['id']][_0x3e30('0x1d')])){_0x5ce0d6(accountsTokens[_0x245817['id']][_0x3e30('0x1e')]);}}var _0x2b5051;switch(_0x245817[_0x3e30('0x1f')]){case'US':_0x2b5051='https://accounts.zoho.com';break;case'AU':_0x2b5051=_0x3e30('0x20');break;case'EU':_0x2b5051=_0x3e30('0x21');break;case'IN':_0x2b5051=_0x3e30('0x22');break;case'CN':_0x2b5051=_0x3e30('0x23');break;default:_0x2b5051=_0x3e30('0x21');break;}var _0x4980b9={'method':_0x3e30('0x24'),'uri':_0x2b5051+_0x3e30('0x25'),'qs':{'refresh_token':_0x245817[_0x3e30('0x26')],'client_id':_0x245817[_0x3e30('0x27')],'client_secret':_0x245817['clientSecret'],'grant_type':_0x3e30('0x28')},'json':!![]};return rp(_0x4980b9)[_0x3e30('0x29')](function(_0x30f5e9){accountsTokens[_0x245817['id']]={'access_token':_0x30f5e9[_0x3e30('0x1e')],'expires_in':moment()['add'](_0x30f5e9[_0x3e30('0x1d')],'seconds')};_0x5ce0d6(_0x30f5e9[_0x3e30('0x1e')]);})['catch'](function(_0x3cacd3){logger[_0x3e30('0x2a')](_0x3e30('0x2b'),_0x3cacd3['stack']);_0x5b491b(_0x3cacd3);});});}function getUser(_0x33425d,_0x35b1df,_0xb0c246,_0x4d79e0){logger[_0x3e30('0x2c')](_0x3e30('0x2d'));return request({'method':'GET','uri':util[_0x3e30('0x2e')](_0x3e30('0x2f'),_0x35b1df),'qs':{'type':_0x3e30('0x30')},'headers':{'Authorization':_0x3e30('0x31')+_0x33425d},'json':!![]})[_0x3e30('0x29')](function(_0xe2ce74){if(_0xe2ce74[_0x3e30('0x32')]){var _0x5f4c5f=-0x1;if(_['isArrayLikeObject'](_0xe2ce74['users'])){if(!_[_0x3e30('0x1c')](_0x4d79e0)){_0x5f4c5f=_['findIndex'](_0xe2ce74[_0x3e30('0x32')],function(_0x3d94b9){return _0x3d94b9[_0x3e30('0x33')]===_0x4d79e0;});}if(_0x5f4c5f>=0x0){logger[_0x3e30('0x2c')](_0x3e30('0x34'));}else{logger['info'](_0x3e30('0x35'));_0x5f4c5f=_['findIndex'](_0xe2ce74[_0x3e30('0x32')],function(_0x1b9df4){return _0x1b9df4[_0x3e30('0x36')][_0x3e30('0x18')]===_0x3e30('0x37');});}return _0xe2ce74[_0x3e30('0x32')][_0x5f4c5f];}else{if(_0xe2ce74[_0x3e30('0x38')][_0x3e30('0x36')]['name']===_0x3e30('0x37')){logger[_0x3e30('0x2c')](_0x3e30('0x35'));user=_0xe2ce74[_0x3e30('0x38')];return user;}else{logger['error'](_0x3e30('0x39'),JSON[_0x3e30('0x3a')](_0xe2ce74));throw new Error(_0x3e30('0x3b')+JSON['stringify'](_0xe2ce74));}}}else{logger[_0x3e30('0x2a')]('The\x20failing\x20result\x20is',JSON[_0x3e30('0x3a')](_0xe2ce74));throw new Error(_0x3e30('0x3b')+JSON[_0x3e30('0x3a')](_0xe2ce74));}})[_0x3e30('0x3c')](function(_0x3423c6){console['error'](_0x3423c6);});}function getZohoUser(_0x379991,_0xf14a8d){return new BPromise(function(_0x14b56a,_0x3a4d23){request(_0x379991)[_0x3e30('0x29')](function(_0x68d649){var _0x469cb9=null;if(_0x68d649){_0x469cb9=_0x68d649[_0x3e30('0x3d')][0x0];_0x469cb9[_0x3e30('0x3e')]=_0xf14a8d;}_0x14b56a(_0x469cb9);})[_0x3e30('0x3c')](function(_0x534445){_0x3a4d23(_0x534445);});});}function createEndUser(_0x48b078,_0x3fe441,_0x2fc1d3,_0x3952b7,_0x16bf5e,_0x1c8104){var _0x2fc1d3=getName(_0x2fc1d3);return request({'method':_0x3e30('0x24'),'uri':_0x3e30('0x3f')+_0x3fe441+_0x3e30('0x40')+_[_0x3e30('0x41')](_0x1c8104[_0x3e30('0x42')])+'s','body':{'data':[{'Last_Name':_0x2fc1d3[0x1],'First_Name':_0x2fc1d3[0x0],'Phone':_0x3952b7,'Owner':{'name':!_[_0x3e30('0x1c')](_0x16bf5e[_0x3e30('0x43')][_0x3e30('0x18')])?_0x16bf5e[_0x3e30('0x43')][_0x3e30('0x18')]:!_[_0x3e30('0x1c')](_0x16bf5e[_0x3e30('0x44')])?_0x16bf5e['first_name']+'\x20'+_0x16bf5e[_0x3e30('0x45')]:_0x16bf5e['last_name'],'id':_0x16bf5e['id']}}]},'headers':{'Authorization':_0x3e30('0x31')+_0x48b078},'json':!![]})[_0x3e30('0x29')](function(_0x183e55){if(_0x183e55&&_0x183e55['data'][0x0][_0x3e30('0x46')]===_0x3e30('0x47')){var _0x1a816c=_0x183e55['data'][0x0]['details'];_0x1a816c[_0x3e30('0x3e')]=_['startCase'](_0x1c8104[_0x3e30('0x42')])+'s';return _0x1a816c;}logger['error'](_0x3e30('0x39'),JSON[_0x3e30('0x3a')](data));throw new Error(_0x3e30('0x48')+JSON['stringify'](data));})['catch'](function(_0x581be1){console[_0x3e30('0x49')](_0x3e30('0x4a'),_0x581be1);});}function getEndUser(_0x488e85,_0x10b3ee,_0x361e1b,_0x21ceca,_0x1fd8a8,_0xb1cb16,_0x4b1173){var _0x304daa={'method':_0x3e30('0x4b'),'uri':'','headers':{'Authorization':_0x3e30('0x31')+_0x488e85},'json':!![]};switch(_0x4b1173[_0x3e30('0x4c')]){case'contact_lead':_0x304daa['uri']=_0x3e30('0x3f')+_0x10b3ee+_0x3e30('0x4d')+_0x1fd8a8+'))';return getZohoUser(_0x304daa,'Contacts')[_0x3e30('0x29')](function(_0x5d073a){if(_0x5d073a)return _0x5d073a;_0x304daa[_0x3e30('0x4e')]=_0x3e30('0x3f')+_0x10b3ee+_0x3e30('0x4f')+_0x1fd8a8+'))';return getZohoUser(_0x304daa,_0x3e30('0x50'))[_0x3e30('0x29')](function(_0x5e734){if(_0x5e734)return _0x5e734;if(_0x4b1173[_0x3e30('0x42')]!=_0x3e30('0x51')){return createEndUser(_0x488e85,_0x10b3ee,_0x21ceca,_0x1fd8a8,_0xb1cb16,_0x4b1173);}else{return{};}});});break;case _0x3e30('0x52'):_0x304daa[_0x3e30('0x4e')]=_0x3e30('0x3f')+_0x10b3ee+_0x3e30('0x4d')+_0x1fd8a8+'))';return getZohoUser(_0x304daa,_0x3e30('0x53'))['then'](function(_0x147206){if(_0x147206)return _0x147206;if(_0x4b1173[_0x3e30('0x42')]!='nothing'){return createEndUser(_0x488e85,_0x10b3ee,_0x21ceca,_0x1fd8a8,_0xb1cb16,_0x4b1173);}else{return{};}});break;case _0x3e30('0x54'):_0x304daa['uri']=_0x3e30('0x3f')+_0x10b3ee+_0x3e30('0x4f')+_0x1fd8a8+'))';return getZohoUser(_0x304daa,_0x3e30('0x50'))['then'](function(_0x35351b){if(_0x35351b)return _0x35351b;if(_0x4b1173['moduleCreate']!=_0x3e30('0x51')){return createEndUser(_0x488e85,_0x10b3ee,_0x21ceca,_0x1fd8a8,_0xb1cb16,_0x4b1173);}else{return{};}});break;}}function getCall(_0x6550bd,_0x62da5e,_0x4511f8,_0x9c9bac,_0x2a6d02,_0x358c43,_0x4e01f3,_0x41c611){logger[_0x3e30('0x2c')](_0x3e30('0x55'));var _0x444600={};_0x444600[_0x3e30('0x56')]={'name':!_['isNil'](_0x9c9bac[_0x3e30('0x43')][_0x3e30('0x18')])&&!_[_0x3e30('0x1c')](_0x9c9bac[_0x3e30('0x36')][_0x3e30('0x18')])&&_0x9c9bac[_0x3e30('0x36')][_0x3e30('0x18')]==='administrator'?_0x9c9bac[_0x3e30('0x43')][_0x3e30('0x18')]:!_[_0x3e30('0x1c')](_0x9c9bac[_0x3e30('0x44')])?_0x9c9bac['first_name']+'\x20'+_0x9c9bac[_0x3e30('0x45')]:_0x9c9bac['last_name'],'id':_0x9c9bac['id']};_0x444600['Subject']=intUtil['getString'](_0x358c43[_0x3e30('0x57')],_0x4e01f3,'\x20');_0x444600[_0x3e30('0x58')]=intUtil[_0x3e30('0x59')](_0x358c43[_0x3e30('0x5a')],_0x4e01f3,'\x0a');if(_0x2a6d02[_0x3e30('0x3e')]===_0x3e30('0x53')){_0x444600[_0x3e30('0x5b')]={'name':!_[_0x3e30('0x1c')](_0x2a6d02[_0x3e30('0x5c')])?_0x2a6d02[_0x3e30('0x5c')]:!_[_0x3e30('0x1c')](_0x2a6d02[_0x3e30('0x5d')])?_0x2a6d02[_0x3e30('0x5d')]+'\x20'+_0x2a6d02[_0x3e30('0x5e')]:_0x2a6d02[_0x3e30('0x5e')],'id':_0x2a6d02['id']};}if(_0x2a6d02[_0x3e30('0x3e')]==='Leads'){_0x444600[_0x3e30('0x5f')]={'name':!_['isNil'](_0x2a6d02[_0x3e30('0x5c')])?_0x2a6d02[_0x3e30('0x5c')]:!_['isNil'](_0x2a6d02['First_Name'])?_0x2a6d02[_0x3e30('0x5d')]+'\x20'+_0x2a6d02[_0x3e30('0x5e')]:_0x2a6d02[_0x3e30('0x5e')],'id':_0x2a6d02['id']};_0x444600[_0x3e30('0x60')]=_['startCase'](_0x2a6d02[_0x3e30('0x3e')]);}if(_0x4e01f3[_0x3e30('0x61')]){_0x444600[_0x3e30('0x62')]=moment['utc'](parseInt(_0x4e01f3['talktime'])*0x3e8)[_0x3e30('0x2e')](_0x3e30('0x63'));}else if(_0x4e01f3['answertime']&&_0x4e01f3['endtime']){_0x444600['Call_Duration']=moment[_0x3e30('0x64')](moment(_0x4e01f3[_0x3e30('0x65')],_0x3e30('0x66'))[_0x3e30('0x67')](moment(_0x4e01f3[_0x3e30('0x68')],_0x3e30('0x66'))))[_0x3e30('0x2e')](_0x3e30('0x63'));}switch(_0x4e01f3[_0x3e30('0x69')]){case _0x3e30('0x6a'):_0x444600[_0x3e30('0x6b')]=_0x3e30('0x6c');break;case'complete':case _0x3e30('0x6d'):_0x444600[_0x3e30('0x6b')]=_0x3e30('0x6e');break;case _0x3e30('0x6f'):_0x444600[_0x3e30('0x6b')]=_0x3e30('0x70');break;case _0x3e30('0x71'):_0x444600['Call_Result']=_0x3e30('0x72');break;case _0x3e30('0x73'):_0x444600[_0x3e30('0x6b')]='Timeout';default:}_0x444600[_0x3e30('0x74')]=(_0x41c611===_0x3e30('0x75')?moment(_0x4e01f3[_0x3e30('0x68')])[_0x3e30('0x2e')]('YYYY-MM-DDTHH:mm:ss'):moment(_0x4e01f3[_0x3e30('0x76')])[_0x3e30('0x2e')](_0x3e30('0x66')))||moment()['format'](_0x3e30('0x66'));_0x444600[_0x3e30('0x77')]=_0x41c611||_0x3e30('0x78');_0x444600=_[_0x3e30('0x79')](_0x444600,getCustomFields(_0x358c43[_0x3e30('0x7a')],_0x4e01f3));return request({'method':'POST','uri':_0x3e30('0x3f')+_0x62da5e+_0x3e30('0x7b'),'headers':{'Authorization':_0x3e30('0x31')+_0x6550bd},'body':{'data':[_0x444600]},'json':!![]})[_0x3e30('0x29')](function(_0x230e59){if(_0x230e59&&_0x230e59[_0x3e30('0x3d')][0x0][_0x3e30('0x46')]===_0x3e30('0x47')){logger[_0x3e30('0x2c')](_0x3e30('0x7c'));return{'id':_0x230e59[_0x3e30('0x3d')][0x0]['details']['id']};}})[_0x3e30('0x3c')](function(_0x2e7787){logger['info'](_0x3e30('0x7d'),_0x2e7787['stack']);console[_0x3e30('0x49')]('err',_0x2e7787);});}exports['queue']=function(_0x3b1364,_0x226016,_0x310738,_0x23b7df,_0x200aea,_0x27ac15){var _0x1927b9,_0x5e6060,_0x8dfcb1;_0x27ac15[_0x3e30('0x7e')]=intUtil[_0x3e30('0x7f')](_0x27ac15[_0x3e30('0x7e')]);_0x27ac15['serverUrl']=intUtil['stripTrailingSlash'](_0x27ac15[_0x3e30('0x80')]);if(_0x200aea&&_0x200aea['monitor_format']){logger[_0x3e30('0x2c')]('[QUEUE]',_0x3e30('0x81'));_0x226016[_0x3e30('0x82')]=_0x27ac15[_0x3e30('0x80')]+_0x3e30('0x83')+_0x226016[_0x3e30('0x84')]+_0x3e30('0x85')+md5(_0x226016[_0x3e30('0x84')]);}else{_0x226016[_0x3e30('0x82')]='';}var _0x125919=_0x27ac15[_0x3e30('0x7e')]===_0x3e30('0x86')?'eu':_0x3e30('0x87');return getAccessToken(_0x27ac15)[_0x3e30('0x29')](function(_0x4c73e6){_0x8dfcb1=_0x4c73e6;return getUser(_0x8dfcb1,_0x125919,_0x27ac15,_0x23b7df[_0x3e30('0x33')]);})['then'](function(_0x26b8e3){_0x1927b9=_0x26b8e3;logger[_0x3e30('0x2c')](_0x3e30('0x88'),_0x1927b9['id']);return getEndUser(_0x8dfcb1,_0x125919,_0x27ac15,_0x226016[_0x3e30('0x89')],_0x226016[_0x3e30('0x8a')],_0x1927b9,_0x310738);})['then'](function(_0xaa9d57){_0x5e6060=_0xaa9d57;return getCall(_0x8dfcb1,_0x125919,_0x27ac15,_0x1927b9,_0x5e6060,_0x310738,_0x226016,'Inbound');})['then'](function(_0x4e7fca){if(_0x4e7fca){logger[_0x3e30('0x2c')](_0x3e30('0x8b'),_0x4e7fca['id']);logger[_0x3e30('0x2c')](_0x3e30('0x8c'),_0x3e30('0x8d'));emit(util[_0x3e30('0x2e')](_0x3e30('0x8e'),_0x23b7df[_0x3e30('0x18')]),_0x3e30('0x8f'),{'uri':'https://crm.'+_0x27ac15['host']+_0x3e30('0x90')+_0x4e7fca['id']});}})[_0x3e30('0x3c')](function(_0x59f571){logger[_0x3e30('0x2a')](_0x3e30('0x8c'),JSON['stringify'](_0x59f571));});};exports[_0x3e30('0x75')]=function(_0x2689fe,_0x3ef211,_0x4f3daf,_0x3ad784,_0x3f4c86,_0x40c4df,_0x8c7c8c){var _0x4f8f57,_0x20a6b8,_0x38d2d3;_0x40c4df['host']=intUtil[_0x3e30('0x7f')](_0x40c4df[_0x3e30('0x7e')]);_0x40c4df[_0x3e30('0x80')]=intUtil[_0x3e30('0x7f')](_0x40c4df[_0x3e30('0x80')]);if(_0x8c7c8c&&_0x8c7c8c[_0x3e30('0x91')]&&_0x8c7c8c['recordingFormat']!==_0x3e30('0x92')){logger[_0x3e30('0x2c')](_0x3e30('0x93'),_0x3e30('0x81'));_0x3ef211[_0x3e30('0x82')]=_0x40c4df['serverUrl']+_0x3e30('0x83')+_0x3ef211[_0x3e30('0x84')]+'/downloads?type=uniqueid&token='+md5(_0x3ef211[_0x3e30('0x84')]);}var _0x593c32=_0x40c4df['host']===_0x3e30('0x86')?'eu':'com';return getAccessToken(_0x40c4df)['then'](function(_0x2e9784){_0x38d2d3=_0x2e9784;return getUser(_0x38d2d3,_0x593c32,_0x40c4df,_0x3ad784[_0x3e30('0x33')]);})[_0x3e30('0x29')](function(_0x41118c){_0x4f8f57=_0x41118c;logger[_0x3e30('0x2c')](_0x3e30('0x88'),_0x4f8f57['id']);return getEndUser(_0x38d2d3,_0x593c32,_0x40c4df,_0x3ef211[_0x3e30('0x94')],_0x3ef211['destcalleridnum'],_0x4f8f57,_0x4f3daf);})[_0x3e30('0x29')](function(_0x21d43b){_0x20a6b8=_0x21d43b;return getCall(_0x38d2d3,_0x593c32,_0x40c4df,_0x4f8f57,_0x20a6b8,_0x4f3daf,_0x3ef211,'Outbound');})['then'](function(_0x2689ff){if(_0x2689ff){logger[_0x3e30('0x2c')]('The\x20Call\x20ID\x20is:',_0x2689ff['id']);logger[_0x3e30('0x2c')](_0x3e30('0x93'),_0x3e30('0x8d'));emit(util[_0x3e30('0x2e')](_0x3e30('0x8e'),_0x3ad784[_0x3e30('0x18')]),'trigger:browser:url',{'uri':_0x3e30('0x95')+_0x40c4df[_0x3e30('0x7e')]+'/crm/EntityInfo.do?module=Calls&id='+_0x2689ff['id']});}})[_0x3e30('0x3c')](function(_0x1558b7){logger[_0x3e30('0x2a')]('[OUTBOUND]',JSON['stringify'](_0x1558b7));});};exports[_0x3e30('0x96')]=function(_0xd9f337,_0x5eeffa,_0x2b871e,_0x368bca,_0x20a2cb,_0x25e2f2){var _0x21acda,_0x16f68e,_0x252d73;_0x25e2f2[_0x3e30('0x7e')]=intUtil['stripTrailingSlash'](_0x25e2f2[_0x3e30('0x7e')]);_0x25e2f2[_0x3e30('0x80')]=intUtil[_0x3e30('0x7f')](_0x25e2f2[_0x3e30('0x80')]);if(_0x20a2cb&&_0x20a2cb['monitor_format']){logger[_0x3e30('0x2c')]('['+_0x5eeffa['lastevent'][_0x3e30('0x97')]()+']',_0x3e30('0x81'));_0x5eeffa[_0x3e30('0x82')]=_0x25e2f2[_0x3e30('0x80')]+'/api/voice/recordings/'+_0x5eeffa[_0x3e30('0x84')]+_0x3e30('0x85')+md5(_0x5eeffa[_0x3e30('0x84')]);}else{_0x5eeffa[_0x3e30('0x82')]='';}var _0x1e1321=_0x25e2f2[_0x3e30('0x7e')]===_0x3e30('0x86')?'eu':_0x3e30('0x87');return getAccessToken(_0x25e2f2)[_0x3e30('0x29')](function(_0x15f055){_0x252d73=_0x15f055;return getUser(_0x252d73,_0x1e1321,_0x25e2f2);})['then'](function(_0xab55ea){_0x21acda=_0xab55ea;logger[_0x3e30('0x2c')](_0x3e30('0x88'),_0x21acda['id']);return getEndUser(_0x252d73,_0x1e1321,_0x25e2f2,_0x5eeffa[_0x3e30('0x89')],_0x5eeffa[_0x3e30('0x8a')],_0x21acda,_0x2b871e);})[_0x3e30('0x29')](function(_0x2e74c3){_0x16f68e=_0x2e74c3;return getCall(_0x252d73,_0x1e1321,_0x25e2f2,_0x21acda,_0x16f68e,_0x2b871e,_0x5eeffa,_0x3e30('0x78'));})['then'](function(_0x14f733){if(_0x14f733){logger[_0x3e30('0x2c')](_0x3e30('0x8b'),_0x14f733['id']);}})['catch'](function(_0x300307){logger['error']('['+_0x5eeffa['lastevent'][_0x3e30('0x97')]()+']',JSON[_0x3e30('0x3a')](_0x300307));});};
\ No newline at end of file
+var _0xcab6=['Who_Id','Full_Name','First_Name','Last_Name','What_Id','$se_module','talktime','Call_Duration','utc','mm:ss','answertime','endtime','YYYY-MM-DDTHH:mm:ss','diff','starttime','lastevent','called','Call_Result','Called','complete','connect','Answered','rejected','abandoned','Abandoned','timeout','Timeout','Call_Start_Time','outbound','Call_Type','merge','Fields','/crm/v2/Calls','code','Call\x20created!','err','host','stripTrailingSlash','monitor_format','[QUEUE]','serverUrl','/api/voice/recordings/','/downloads?type=uniqueid&token=','uniqueid','recordingURL','zoho.eu','com','The\x20User\x20ID\x20is:','calleridname','calleridnum','Inbound','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','recordingFormat','none','destcalleridnum','Outbound','[OUTBOUND]','unmanaged','toUpperCase','lodash','md5','util','./util','moment','ioredis','bluebird','../../../../config/logger','redis','defaults','socket.io-emitter','debug','[HTTP]','stringify','length','includes','picklist','toString','type','variable','variableName','idField','customVariable','Variable','toLowerCase','name','indexOf','split','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','refresh_token','then','add','seconds','error','stack','info','GET','format','Zoho-oauthtoken\x20','isArrayLikeObject','users','findIndex','email','Administrator','profile','Using\x20the\x20admin\x20account!','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','The\x20failing\x20result\x20is','catch','data','enduserType','POST','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','role','first_name','last_name','SUCCESS','details','log','moduleSearch','contact_lead','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','Leads','contact','lead','/crm/v2/Leads/search?criteria=((Phone:equals:','nothing','Creating\x20new\x20call...','Owner','administrator','Subject','getString','Subjects','Description'];(function(_0x532112,_0x37d94b){var _0x23e5fb=function(_0x690ac8){while(--_0x690ac8){_0x532112['push'](_0x532112['shift']());}};_0x23e5fb(++_0x37d94b);}(_0xcab6,0xd4));var _0x6cab=function(_0x5ef225,_0x3f9b24){_0x5ef225=_0x5ef225-0x0;var _0x3375db=_0xcab6[_0x5ef225];return _0x3375db;};'use strict';var _=require(_0x6cab('0x0'));var rp=require('request-promise');var md5=require(_0x6cab('0x1'));var util=require(_0x6cab('0x2'));var intUtil=require(_0x6cab('0x3'));var moment=require(_0x6cab('0x4'));var Redis=require(_0x6cab('0x5'));var BPromise=require(_0x6cab('0x6'));var config=require('../../../../config/environment');var logger=require(_0x6cab('0x7'))('zoho');config[_0x6cab('0x8')]=_[_0x6cab('0x9')](config[_0x6cab('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x6cab('0xa'))(new Redis(config[_0x6cab('0x8')]));function emit(_0x230f8b,_0xd520bd,_0x58d0ee){io['to'](_0x230f8b)['emit'](_0xd520bd,_0x58d0ee);}function request(_0x12c055){logger[_0x6cab('0xb')](_0x6cab('0xc'),JSON[_0x6cab('0xd')](_0x12c055));return rp(_0x12c055);}function getCustomFields(_0x161b9c,_0xe1e146){var _0x511e2c={};if(_0x161b9c[_0x6cab('0xe')]>0x0){_['forEach'](_0x161b9c,function(_0x5e5a48){if(_[_0x6cab('0xf')](['string',_0x6cab('0x10')],_0x5e5a48['type'])&&_0x5e5a48['idField']){_0x511e2c[_0x5e5a48['idField']]=_0x5e5a48['content'][_0x6cab('0x11')]();}else if(_0x5e5a48[_0x6cab('0x12')]===_0x6cab('0x13')&&_0x5e5a48[_0x6cab('0x14')]&&_0x5e5a48[_0x6cab('0x15')]&&_0xe1e146[_0x5e5a48[_0x6cab('0x14')]]){_0x511e2c[_0x5e5a48[_0x6cab('0x15')]]=_0xe1e146[_0x5e5a48[_0x6cab('0x14')]][_0x6cab('0x11')]();}else if(_0x5e5a48[_0x6cab('0x12')]===_0x6cab('0x16')&&_0x5e5a48[_0x6cab('0x17')]&&_0x5e5a48[_0x6cab('0x17')]['name']&&_0x5e5a48[_0x6cab('0x15')]&&_0xe1e146[_0x5e5a48[_0x6cab('0x17')]['name'][_0x6cab('0x18')]()]){_0x511e2c[_0x5e5a48[_0x6cab('0x15')]]=_0xe1e146[_0x5e5a48[_0x6cab('0x17')][_0x6cab('0x19')]['toLowerCase']()]['toString']();}});}return _0x511e2c;}function getName(_0x46848a){if(_0x46848a[_0x6cab('0x1a')]('\x20')>0x0){var _0x1b5565=_0x46848a[_0x6cab('0x1b')](/ (.+)/);if(_0x1b5565[0x1]){return _0x1b5565;}}return[_0x46848a,_0x46848a];}var accountsTokens={};function getAccessToken(_0xa36dad){return new Promise(function(_0x565a51,_0x555185){if(!_[_0x6cab('0x1c')](accountsTokens[_0xa36dad['id']])&&!_['isNil'](accountsTokens[_0xa36dad['id']][_0x6cab('0x1d')])){if(moment()[_0x6cab('0x1e')](accountsTokens[_0xa36dad['id']][_0x6cab('0x1f')])){_0x565a51(accountsTokens[_0xa36dad['id']][_0x6cab('0x1d')]);}}var _0x3588e9;switch(_0xa36dad[_0x6cab('0x20')]){case'US':_0x3588e9=_0x6cab('0x21');break;case'AU':_0x3588e9=_0x6cab('0x22');break;case'EU':_0x3588e9=_0x6cab('0x23');break;case'IN':_0x3588e9=_0x6cab('0x24');break;case'CN':_0x3588e9=_0x6cab('0x25');break;default:_0x3588e9=_0x6cab('0x23');break;}var _0xbfbeca={'method':'POST','uri':_0x3588e9+'/oauth/v2/token','qs':{'refresh_token':_0xa36dad['refreshToken'],'client_id':_0xa36dad['clientId'],'client_secret':_0xa36dad['clientSecret'],'grant_type':_0x6cab('0x26')},'json':!![]};return rp(_0xbfbeca)[_0x6cab('0x27')](function(_0x426531){accountsTokens[_0xa36dad['id']]={'access_token':_0x426531['access_token'],'expires_in':moment()[_0x6cab('0x28')](_0x426531[_0x6cab('0x1f')],_0x6cab('0x29'))};_0x565a51(_0x426531[_0x6cab('0x1d')]);})['catch'](function(_0x3b2690){logger[_0x6cab('0x2a')]('Failing\x20creating\x20the\x20access_token',_0x3b2690[_0x6cab('0x2b')]);_0x555185(_0x3b2690);});});}function getUser(_0x5b4bbf,_0x14e1de,_0x4abbe5,_0x550cc7){logger[_0x6cab('0x2c')]('Search\x20user');return request({'method':_0x6cab('0x2d'),'uri':util[_0x6cab('0x2e')]('https://www.zohoapis.%s/crm/v2/users',_0x14e1de),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':_0x6cab('0x2f')+_0x5b4bbf},'json':!![]})[_0x6cab('0x27')](function(_0xd4a4c4){if(_0xd4a4c4['users']){var _0x52ed72=-0x1;if(_[_0x6cab('0x30')](_0xd4a4c4[_0x6cab('0x31')])){if(!_[_0x6cab('0x1c')](_0x550cc7)){_0x52ed72=_[_0x6cab('0x32')](_0xd4a4c4[_0x6cab('0x31')],function(_0x20c637){return _0x20c637[_0x6cab('0x33')]===_0x550cc7;});}if(_0x52ed72>=0x0){logger[_0x6cab('0x2c')]('Agent\x20found!');}else{logger['info']('Using\x20the\x20admin\x20account!');_0x52ed72=_[_0x6cab('0x32')](_0xd4a4c4[_0x6cab('0x31')],function(_0xcde7c4){return _0xcde7c4['profile'][_0x6cab('0x19')]===_0x6cab('0x34');});}return _0xd4a4c4[_0x6cab('0x31')][_0x52ed72];}else{if(_0xd4a4c4['user'][_0x6cab('0x35')][_0x6cab('0x19')]===_0x6cab('0x34')){logger['info'](_0x6cab('0x36'));user=_0xd4a4c4['user'];return user;}else{logger['error']('The\x20failing\x20result\x20is',JSON[_0x6cab('0xd')](_0xd4a4c4));throw new Error(_0x6cab('0x37')+JSON['stringify'](_0xd4a4c4));}}}else{logger[_0x6cab('0x2a')](_0x6cab('0x38'),JSON[_0x6cab('0xd')](_0xd4a4c4));throw new Error(_0x6cab('0x37')+JSON[_0x6cab('0xd')](_0xd4a4c4));}})[_0x6cab('0x39')](function(_0x16ce84){console[_0x6cab('0x2a')](_0x16ce84);});}function getZohoUser(_0x45b00c,_0x106fdf){return new BPromise(function(_0x568660,_0x1389f8){request(_0x45b00c)['then'](function(_0x2dac29){var _0x5715ea=null;if(_0x2dac29){_0x5715ea=_0x2dac29[_0x6cab('0x3a')][0x0];_0x5715ea[_0x6cab('0x3b')]=_0x106fdf;}_0x568660(_0x5715ea);})[_0x6cab('0x39')](function(_0x5bc0c9){_0x1389f8(_0x5bc0c9);});});}function createEndUser(_0x239018,_0x452f19,_0x1b4784,_0x3e9a1f,_0xe3ca3b,_0x54792b){var _0x1b4784=getName(_0x1b4784);return request({'method':_0x6cab('0x3c'),'uri':_0x6cab('0x3d')+_0x452f19+_0x6cab('0x3e')+_[_0x6cab('0x3f')](_0x54792b[_0x6cab('0x40')])+'s','body':{'data':[{'Last_Name':_0x1b4784[0x1],'First_Name':_0x1b4784[0x0],'Phone':_0x3e9a1f,'Owner':{'name':!_[_0x6cab('0x1c')](_0xe3ca3b[_0x6cab('0x41')][_0x6cab('0x19')])?_0xe3ca3b['role']['name']:!_[_0x6cab('0x1c')](_0xe3ca3b[_0x6cab('0x42')])?_0xe3ca3b[_0x6cab('0x42')]+'\x20'+_0xe3ca3b[_0x6cab('0x43')]:_0xe3ca3b[_0x6cab('0x43')],'id':_0xe3ca3b['id']}}]},'headers':{'Authorization':_0x6cab('0x2f')+_0x239018},'json':!![]})[_0x6cab('0x27')](function(_0x1ecc1a){if(_0x1ecc1a&&_0x1ecc1a[_0x6cab('0x3a')][0x0]['code']===_0x6cab('0x44')){var _0x26ce12=_0x1ecc1a['data'][0x0][_0x6cab('0x45')];_0x26ce12[_0x6cab('0x3b')]=_[_0x6cab('0x3f')](_0x54792b['moduleCreate'])+'s';return _0x26ce12;}logger[_0x6cab('0x2a')]('The\x20failing\x20result\x20is',JSON['stringify'](data));throw new Error('Error:\x20'+JSON[_0x6cab('0xd')](data));})['catch'](function(_0x245d4e){console[_0x6cab('0x46')]('CREATE\x20ERROR',_0x245d4e);});}function getEndUser(_0x3ab218,_0x41e08e,_0x4bc6e8,_0x2691b3,_0x1272f8,_0xe77e9f,_0x53ca80){var _0x1d153f={'method':_0x6cab('0x2d'),'uri':'','headers':{'Authorization':_0x6cab('0x2f')+_0x3ab218},'json':!![]};switch(_0x53ca80[_0x6cab('0x47')]){case _0x6cab('0x48'):_0x1d153f[_0x6cab('0x49')]=_0x6cab('0x3d')+_0x41e08e+_0x6cab('0x4a')+_0x1272f8+'))';return getZohoUser(_0x1d153f,_0x6cab('0x4b'))[_0x6cab('0x27')](function(_0x1419ae){if(_0x1419ae)return _0x1419ae;_0x1d153f[_0x6cab('0x49')]=_0x6cab('0x3d')+_0x41e08e+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x1272f8+'))';return getZohoUser(_0x1d153f,_0x6cab('0x4c'))['then'](function(_0x41a889){if(_0x41a889)return _0x41a889;if(_0x53ca80[_0x6cab('0x40')]!='nothing'){return createEndUser(_0x3ab218,_0x41e08e,_0x2691b3,_0x1272f8,_0xe77e9f,_0x53ca80);}else{return{};}});});break;case _0x6cab('0x4d'):_0x1d153f[_0x6cab('0x49')]=_0x6cab('0x3d')+_0x41e08e+_0x6cab('0x4a')+_0x1272f8+'))';return getZohoUser(_0x1d153f,_0x6cab('0x4b'))[_0x6cab('0x27')](function(_0xde3984){if(_0xde3984)return _0xde3984;if(_0x53ca80[_0x6cab('0x40')]!='nothing'){return createEndUser(_0x3ab218,_0x41e08e,_0x2691b3,_0x1272f8,_0xe77e9f,_0x53ca80);}else{return{};}});break;case _0x6cab('0x4e'):_0x1d153f['uri']=_0x6cab('0x3d')+_0x41e08e+_0x6cab('0x4f')+_0x1272f8+'))';return getZohoUser(_0x1d153f,'Leads')[_0x6cab('0x27')](function(_0x52827d){if(_0x52827d)return _0x52827d;if(_0x53ca80[_0x6cab('0x40')]!=_0x6cab('0x50')){return createEndUser(_0x3ab218,_0x41e08e,_0x2691b3,_0x1272f8,_0xe77e9f,_0x53ca80);}else{return{};}});break;}}function getCall(_0xd36abd,_0xfd8fdd,_0x59d37e,_0x2c66e2,_0x30a0f2,_0x443689,_0x3584e3,_0x5c29b7){logger[_0x6cab('0x2c')](_0x6cab('0x51'));var _0x3b8e22={};_0x3b8e22[_0x6cab('0x52')]={'name':!_[_0x6cab('0x1c')](_0x2c66e2['role']['name'])&&!_['isNil'](_0x2c66e2[_0x6cab('0x35')]['name'])&&_0x2c66e2[_0x6cab('0x35')][_0x6cab('0x19')]===_0x6cab('0x53')?_0x2c66e2[_0x6cab('0x41')][_0x6cab('0x19')]:!_[_0x6cab('0x1c')](_0x2c66e2[_0x6cab('0x42')])?_0x2c66e2[_0x6cab('0x42')]+'\x20'+_0x2c66e2[_0x6cab('0x43')]:_0x2c66e2[_0x6cab('0x43')],'id':_0x2c66e2['id']};_0x3b8e22[_0x6cab('0x54')]=intUtil[_0x6cab('0x55')](_0x443689[_0x6cab('0x56')],_0x3584e3,'\x20');_0x3b8e22[_0x6cab('0x57')]=intUtil[_0x6cab('0x55')](_0x443689['Descriptions'],_0x3584e3,'\x0a');if(_0x30a0f2[_0x6cab('0x3b')]===_0x6cab('0x4b')){_0x3b8e22[_0x6cab('0x58')]={'name':!_[_0x6cab('0x1c')](_0x30a0f2['Full_Name'])?_0x30a0f2[_0x6cab('0x59')]:!_[_0x6cab('0x1c')](_0x30a0f2['First_Name'])?_0x30a0f2[_0x6cab('0x5a')]+'\x20'+_0x30a0f2['Last_Name']:_0x30a0f2[_0x6cab('0x5b')],'id':_0x30a0f2['id']};}if(_0x30a0f2[_0x6cab('0x3b')]===_0x6cab('0x4c')){_0x3b8e22[_0x6cab('0x5c')]={'name':!_[_0x6cab('0x1c')](_0x30a0f2[_0x6cab('0x59')])?_0x30a0f2['Full_Name']:!_['isNil'](_0x30a0f2['First_Name'])?_0x30a0f2[_0x6cab('0x5a')]+'\x20'+_0x30a0f2[_0x6cab('0x5b')]:_0x30a0f2[_0x6cab('0x5b')],'id':_0x30a0f2['id']};_0x3b8e22[_0x6cab('0x5d')]=_[_0x6cab('0x3f')](_0x30a0f2[_0x6cab('0x3b')]);}if(_0x3584e3[_0x6cab('0x5e')]){_0x3b8e22[_0x6cab('0x5f')]=moment[_0x6cab('0x60')](parseInt(_0x3584e3[_0x6cab('0x5e')])*0x3e8)[_0x6cab('0x2e')](_0x6cab('0x61'));}else if(_0x3584e3[_0x6cab('0x62')]&&_0x3584e3[_0x6cab('0x63')]){_0x3b8e22[_0x6cab('0x5f')]=moment[_0x6cab('0x60')](moment(_0x3584e3[_0x6cab('0x63')],_0x6cab('0x64'))[_0x6cab('0x65')](moment(_0x3584e3[_0x6cab('0x66')],_0x6cab('0x64'))))[_0x6cab('0x2e')](_0x6cab('0x61'));}switch(_0x3584e3[_0x6cab('0x67')]){case _0x6cab('0x68'):_0x3b8e22[_0x6cab('0x69')]=_0x6cab('0x6a');break;case _0x6cab('0x6b'):case _0x6cab('0x6c'):_0x3b8e22[_0x6cab('0x69')]=_0x6cab('0x6d');break;case _0x6cab('0x6e'):_0x3b8e22[_0x6cab('0x69')]='Rejected';break;case _0x6cab('0x6f'):_0x3b8e22['Call_Result']=_0x6cab('0x70');break;case _0x6cab('0x71'):_0x3b8e22[_0x6cab('0x69')]=_0x6cab('0x72');default:}_0x3b8e22[_0x6cab('0x73')]=(_0x5c29b7===_0x6cab('0x74')?moment(_0x3584e3[_0x6cab('0x66')])[_0x6cab('0x2e')](_0x6cab('0x64')):moment(_0x3584e3['agentcalledAt'])[_0x6cab('0x2e')](_0x6cab('0x64')))||moment()['format']('YYYY-MM-DDTHH:mm:ss');_0x3b8e22[_0x6cab('0x75')]=_0x5c29b7||'Inbound';_0x3b8e22=_[_0x6cab('0x76')](_0x3b8e22,getCustomFields(_0x443689[_0x6cab('0x77')],_0x3584e3));return request({'method':'POST','uri':_0x6cab('0x3d')+_0xfd8fdd+_0x6cab('0x78'),'headers':{'Authorization':_0x6cab('0x2f')+_0xd36abd},'body':{'data':[_0x3b8e22]},'json':!![]})[_0x6cab('0x27')](function(_0x57e9a8){if(_0x57e9a8&&_0x57e9a8['data'][0x0][_0x6cab('0x79')]===_0x6cab('0x44')){logger[_0x6cab('0x2c')](_0x6cab('0x7a'));return{'id':_0x57e9a8[_0x6cab('0x3a')][0x0][_0x6cab('0x45')]['id']};}})[_0x6cab('0x39')](function(_0x23c1c6){logger[_0x6cab('0x2c')](_0x6cab('0x7b'),_0x23c1c6[_0x6cab('0x2b')]);console[_0x6cab('0x46')]('err',_0x23c1c6);});}exports['queue']=function(_0x44f364,_0x415708,_0x350a0a,_0x21c285,_0x38fdfd,_0x471426){var _0x51f609,_0x308fb9,_0x202ebf;_0x471426[_0x6cab('0x7c')]=intUtil['stripTrailingSlash'](_0x471426[_0x6cab('0x7c')]);_0x471426['serverUrl']=intUtil[_0x6cab('0x7d')](_0x471426['serverUrl']);if(_0x38fdfd&&_0x38fdfd[_0x6cab('0x7e')]){logger[_0x6cab('0x2c')](_0x6cab('0x7f'),'Recording\x20is\x20enabled!');_0x415708['recordingURL']=_0x471426[_0x6cab('0x80')]+_0x6cab('0x81')+_0x415708['uniqueid']+_0x6cab('0x82')+md5(_0x415708[_0x6cab('0x83')]);}else{_0x415708[_0x6cab('0x84')]='';}var _0x27489a=_0x471426[_0x6cab('0x7c')]===_0x6cab('0x85')?'eu':_0x6cab('0x86');return getAccessToken(_0x471426)[_0x6cab('0x27')](function(_0x17c332){_0x202ebf=_0x17c332;return getUser(_0x202ebf,_0x27489a,_0x471426,_0x21c285[_0x6cab('0x33')]);})[_0x6cab('0x27')](function(_0x14e3e9){_0x51f609=_0x14e3e9;logger[_0x6cab('0x2c')](_0x6cab('0x87'),_0x51f609['id']);return getEndUser(_0x202ebf,_0x27489a,_0x471426,_0x415708[_0x6cab('0x88')],_0x415708[_0x6cab('0x89')],_0x51f609,_0x350a0a);})[_0x6cab('0x27')](function(_0x3e7a74){_0x308fb9=_0x3e7a74;return getCall(_0x202ebf,_0x27489a,_0x471426,_0x51f609,_0x308fb9,_0x350a0a,_0x415708,_0x6cab('0x8a'));})[_0x6cab('0x27')](function(_0x2a53a6){if(_0x2a53a6){logger['info'](_0x6cab('0x8b'),_0x2a53a6['id']);logger[_0x6cab('0x2c')]('[QUEUE]',_0x6cab('0x8c'));emit(util[_0x6cab('0x2e')](_0x6cab('0x8d'),_0x21c285['name']),_0x6cab('0x8e'),{'uri':'https://crm.'+_0x471426[_0x6cab('0x7c')]+'/crm/EntityInfo.do?module=Calls&id='+_0x2a53a6['id']});}})[_0x6cab('0x39')](function(_0xf6184b){logger[_0x6cab('0x2a')]('[QUEUE]',JSON[_0x6cab('0xd')](_0xf6184b));});};exports['outbound']=function(_0x592e36,_0x4c0f08,_0x2c92c7,_0x102898,_0x269ffc,_0x2a96be,_0x5dd1d9){var _0x101eb9,_0x1127d0,_0x411488;_0x2a96be[_0x6cab('0x7c')]=intUtil[_0x6cab('0x7d')](_0x2a96be[_0x6cab('0x7c')]);_0x2a96be[_0x6cab('0x80')]=intUtil['stripTrailingSlash'](_0x2a96be['serverUrl']);if(_0x5dd1d9&&_0x5dd1d9['recordingFormat']&&_0x5dd1d9[_0x6cab('0x8f')]!==_0x6cab('0x90')){logger[_0x6cab('0x2c')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x4c0f08['recordingURL']=_0x2a96be[_0x6cab('0x80')]+'/api/voice/recordings/'+_0x4c0f08[_0x6cab('0x83')]+'/downloads?type=uniqueid&token='+md5(_0x4c0f08[_0x6cab('0x83')]);}var _0x5603d7=_0x2a96be[_0x6cab('0x7c')]===_0x6cab('0x85')?'eu':_0x6cab('0x86');return getAccessToken(_0x2a96be)[_0x6cab('0x27')](function(_0x492477){_0x411488=_0x492477;return getUser(_0x411488,_0x5603d7,_0x2a96be,_0x102898[_0x6cab('0x33')]);})[_0x6cab('0x27')](function(_0x27eec2){_0x101eb9=_0x27eec2;logger[_0x6cab('0x2c')](_0x6cab('0x87'),_0x101eb9['id']);return getEndUser(_0x411488,_0x5603d7,_0x2a96be,_0x4c0f08['destcalleridname'],_0x4c0f08[_0x6cab('0x91')],_0x101eb9,_0x2c92c7);})['then'](function(_0x431847){_0x1127d0=_0x431847;return getCall(_0x411488,_0x5603d7,_0x2a96be,_0x101eb9,_0x1127d0,_0x2c92c7,_0x4c0f08,_0x6cab('0x92'));})['then'](function(_0x384f6f){if(_0x384f6f){logger[_0x6cab('0x2c')](_0x6cab('0x8b'),_0x384f6f['id']);logger[_0x6cab('0x2c')](_0x6cab('0x93'),_0x6cab('0x8c'));emit(util[_0x6cab('0x2e')](_0x6cab('0x8d'),_0x102898[_0x6cab('0x19')]),'trigger:browser:url',{'uri':'https://crm.'+_0x2a96be['host']+'/crm/EntityInfo.do?module=Calls&id='+_0x384f6f['id']});}})['catch'](function(_0x277c6a){logger[_0x6cab('0x2a')]('[OUTBOUND]',JSON[_0x6cab('0xd')](_0x277c6a));});};exports[_0x6cab('0x94')]=function(_0x216aa0,_0x167a84,_0x2274cb,_0x48656a,_0x7d54d6,_0x28a49c){var _0x2cae78,_0x8f036d,_0x4bf8dd;_0x28a49c[_0x6cab('0x7c')]=intUtil[_0x6cab('0x7d')](_0x28a49c[_0x6cab('0x7c')]);_0x28a49c['serverUrl']=intUtil['stripTrailingSlash'](_0x28a49c[_0x6cab('0x80')]);if(_0x7d54d6&&_0x7d54d6[_0x6cab('0x7e')]){logger[_0x6cab('0x2c')]('['+_0x167a84[_0x6cab('0x67')][_0x6cab('0x95')]()+']','Recording\x20is\x20enabled!');_0x167a84[_0x6cab('0x84')]=_0x28a49c['serverUrl']+'/api/voice/recordings/'+_0x167a84['uniqueid']+_0x6cab('0x82')+md5(_0x167a84[_0x6cab('0x83')]);}else{_0x167a84[_0x6cab('0x84')]='';}var _0x575f25=_0x28a49c['host']===_0x6cab('0x85')?'eu':_0x6cab('0x86');return getAccessToken(_0x28a49c)['then'](function(_0x516644){_0x4bf8dd=_0x516644;return getUser(_0x4bf8dd,_0x575f25,_0x28a49c);})[_0x6cab('0x27')](function(_0x46a498){_0x2cae78=_0x46a498;logger[_0x6cab('0x2c')](_0x6cab('0x87'),_0x2cae78['id']);return getEndUser(_0x4bf8dd,_0x575f25,_0x28a49c,_0x167a84[_0x6cab('0x88')],_0x167a84[_0x6cab('0x89')],_0x2cae78,_0x2274cb);})[_0x6cab('0x27')](function(_0x340dd8){_0x8f036d=_0x340dd8;return getCall(_0x4bf8dd,_0x575f25,_0x28a49c,_0x2cae78,_0x8f036d,_0x2274cb,_0x167a84,'Inbound');})[_0x6cab('0x27')](function(_0x1c98e6){if(_0x1c98e6){logger[_0x6cab('0x2c')]('The\x20Call\x20ID\x20is:',_0x1c98e6['id']);}})[_0x6cab('0x39')](function(_0xb848c9){logger[_0x6cab('0x2a')]('['+_0x167a84[_0x6cab('0x67')]['toUpperCase']()+']',JSON[_0x6cab('0xd')](_0xb848c9));});};
\ No newline at end of file
index 1929772..512175a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5c9=['exec','data2','Script','data3','error','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','format','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','shelljs'];(function(_0x46c677,_0x350c0a){var _0x20bd84=function(_0x4cb52e){while(--_0x4cb52e){_0x46c677['push'](_0x46c677['shift']());}};_0x20bd84(++_0x350c0a);}(_0xd5c9,0x17f));var _0x9d5c=function(_0x9e3edc,_0x594d61){_0x9e3edc=_0x9e3edc-0x0;var _0x44a387=_0xd5c9[_0x9e3edc];return _0x44a387;};'use strict';var util=require(_0x9d5c('0x0'));var sh=require(_0x9d5c('0x1'));var Mustache=require('mustache');var logger=require('../../../../config/logger')('trigger');exports[_0x9d5c('0x2')]=function(_0x32aabd,_0x34d4cd){var _0x34530d=_0x32aabd[_0x9d5c('0x3')]?_0x32aabd[_0x9d5c('0x3')]:_0x9d5c('0x4');var _0x2252e4=_0x32aabd[_0x9d5c('0x5')]?Mustache['render'](_0x32aabd[_0x9d5c('0x5')],_0x34d4cd):_0x34d4cd;sh[_0x9d5c('0x2')](_0x2252e4,function(_0x3e010b,_0x4430ba,_0x12b26e){if(_0x3e010b!==0x0){logger[_0x9d5c('0x6')](util['format'](_0x9d5c('0x7'),_0x34530d,_0x2252e4,_0x3e010b,_0x12b26e));}else{logger[_0x9d5c('0x8')](util[_0x9d5c('0x9')](_0x9d5c('0xa'),_0x34530d,_0x2252e4,_0x4430ba));}});};
\ No newline at end of file
+var _0x3aaf=['util','shelljs','mustache','exec','data2','Script','data3','render','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'];(function(_0x462577,_0x3a25c1){var _0x238cca=function(_0xe6f466){while(--_0xe6f466){_0x462577['push'](_0x462577['shift']());}};_0x238cca(++_0x3a25c1);}(_0x3aaf,0x1d4));var _0xf3aa=function(_0x23e7c1,_0x35110c){_0x23e7c1=_0x23e7c1-0x0;var _0x1add43=_0x3aaf[_0x23e7c1];return _0x1add43;};'use strict';var util=require(_0xf3aa('0x0'));var sh=require(_0xf3aa('0x1'));var Mustache=require(_0xf3aa('0x2'));var logger=require('../../../../config/logger')('trigger');exports[_0xf3aa('0x3')]=function(_0x7e7b9,_0xff1a45){var _0x18afde=_0x7e7b9[_0xf3aa('0x4')]?_0x7e7b9[_0xf3aa('0x4')]:_0xf3aa('0x5');var _0x579bca=_0x7e7b9[_0xf3aa('0x6')]?Mustache[_0xf3aa('0x7')](_0x7e7b9['data3'],_0xff1a45):_0xff1a45;sh['exec'](_0x579bca,function(_0x1737b5,_0x4f9949,_0x2e3aa0){if(_0x1737b5!==0x0){logger[_0xf3aa('0x8')](util[_0xf3aa('0x9')](_0xf3aa('0xa'),_0x18afde,_0x579bca,_0x1737b5,_0x2e3aa0));}else{logger[_0xf3aa('0xb')](util['format'](_0xf3aa('0xc'),_0x18afde,_0x579bca,_0x4f9949));}});};
\ No newline at end of file
index 9b00d35..41921df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffa5=['object','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','catch','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','name','message','request-promise','util','lodash','mustache','../../../../config/logger','trigger','data1','toUpperCase','render','data2','data5','number','headers','data6','parse','stack','GET','DELETE','POST','data7','error','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','body','info','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','isNil',',\x20request\x20body:\x20'];(function(_0x137a16,_0x2e614a){var _0x301425=function(_0x5817f1){while(--_0x5817f1){_0x137a16['push'](_0x137a16['shift']());}};_0x301425(++_0x2e614a);}(_0xffa5,0x1ab));var _0x5ffa=function(_0x418919,_0x2d0cc0){_0x418919=_0x418919-0x0;var _0x50eeb0=_0xffa5[_0x418919];return _0x50eeb0;};'use strict';var rp=require(_0x5ffa('0x0'));var util=require(_0x5ffa('0x1'));var _=require(_0x5ffa('0x2'));var Mustache=require(_0x5ffa('0x3'));var logger=require(_0x5ffa('0x4'))(_0x5ffa('0x5'));exports['exec']=function(_0x268d71,_0x14614e){var _0x518a6b,_0x2cd4a8;var _0x3d1d5a={'method':_0x268d71[_0x5ffa('0x6')][_0x5ffa('0x7')](),'uri':Mustache[_0x5ffa('0x8')](_0x268d71[_0x5ffa('0x9')],_0x14614e),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x268d71[_0x5ffa('0xa')])===_0x5ffa('0xb')&&parseInt(_0x268d71[_0x5ffa('0xa')])>=0x1&&parseInt(_0x268d71[_0x5ffa('0xa')])<=0xa?parseInt(_0x268d71[_0x5ffa('0xa')])*0x3e8:0x5*0x3e8};try{_0x3d1d5a[_0x5ffa('0xc')]=_0x268d71[_0x5ffa('0xd')]?JSON[_0x5ffa('0xe')](Mustache[_0x5ffa('0x8')](_0x268d71[_0x5ffa('0xd')],_0x14614e)):{};}catch(_0x36d89b){logger['error'](_0x36d89b[_0x5ffa('0xf')]);}switch(_0x268d71[_0x5ffa('0x6')]['toUpperCase']()){case _0x5ffa('0x10'):case _0x5ffa('0x11'):_0x518a6b=null;_0x3d1d5a['qs']=_0x14614e;break;case _0x5ffa('0x12'):case'PUT':if(_0x268d71['data7']){try{_0x518a6b=JSON[_0x5ffa('0xe')](Mustache[_0x5ffa('0x8')](_0x268d71[_0x5ffa('0x13')],_0x14614e));_0x3d1d5a['body']=_0x518a6b;}catch(_0x1bb501){logger[_0x5ffa('0x14')](_0x1bb501[_0x5ffa('0xf')]);logger['error'](_0x5ffa('0x15'));}}else{_0x518a6b=_0x14614e;_0x3d1d5a[_0x5ffa('0x16')]=_0x518a6b;}break;}logger[_0x5ffa('0x17')](util['format'](_0x5ffa('0x18'),_0x268d71['data1'],_0x268d71[_0x5ffa('0x9')],JSON[_0x5ffa('0x19')](_0x3d1d5a)));rp(_0x3d1d5a)['then'](function(_0x41269d){_0x518a6b=!_[_0x5ffa('0x1a')](_0x518a6b)?_0x5ffa('0x1b')+_0x518a6b:'';_0x2cd4a8=typeof _0x41269d['body']===_0x5ffa('0x1c')?JSON['stringify'](_0x41269d['body']):_0x41269d[_0x5ffa('0x16')];logger['info'](util['format'](_0x5ffa('0x1d'),_0x268d71[_0x5ffa('0x6')],_0x268d71[_0x5ffa('0x9')],_0x41269d[_0x5ffa('0x1e')],_0x2cd4a8));})[_0x5ffa('0x1f')](function(_0x5ae41a){logger['error'](util['format'](_0x5ffa('0x20'),_0x268d71[_0x5ffa('0x6')],_0x268d71[_0x5ffa('0x9')],_0x5ae41a['statusCode'],_0x5ae41a[_0x5ffa('0x21')],_0x5ae41a[_0x5ffa('0x22')]));});};
\ No newline at end of file
+var _0x0417=['isNil','object','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','catch','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','statusCode','name','message','util','lodash','mustache','trigger','exec','data1','toUpperCase','render','data2','data5','number','data6','parse','error','stack','POST','PUT','body','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','format','stringify','then'];(function(_0xd4e448,_0x588aba){var _0x19b0af=function(_0x3774df){while(--_0x3774df){_0xd4e448['push'](_0xd4e448['shift']());}};_0x19b0af(++_0x588aba);}(_0x0417,0xc2));var _0x7041=function(_0x2b99a3,_0x21cf2c){_0x2b99a3=_0x2b99a3-0x0;var _0x3a0450=_0x0417[_0x2b99a3];return _0x3a0450;};'use strict';var rp=require('request-promise');var util=require(_0x7041('0x0'));var _=require(_0x7041('0x1'));var Mustache=require(_0x7041('0x2'));var logger=require('../../../../config/logger')(_0x7041('0x3'));exports[_0x7041('0x4')]=function(_0x52fddc,_0x11ae45){var _0x56ddfd,_0x20ba68;var _0x1a066c={'method':_0x52fddc[_0x7041('0x5')][_0x7041('0x6')](),'uri':Mustache[_0x7041('0x7')](_0x52fddc[_0x7041('0x8')],_0x11ae45),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x52fddc[_0x7041('0x9')])===_0x7041('0xa')&&parseInt(_0x52fddc[_0x7041('0x9')])>=0x1&&parseInt(_0x52fddc['data5'])<=0xa?parseInt(_0x52fddc['data5'])*0x3e8:0x5*0x3e8};try{_0x1a066c['headers']=_0x52fddc[_0x7041('0xb')]?JSON[_0x7041('0xc')](Mustache[_0x7041('0x7')](_0x52fddc[_0x7041('0xb')],_0x11ae45)):{};}catch(_0x43f952){logger[_0x7041('0xd')](_0x43f952[_0x7041('0xe')]);}switch(_0x52fddc[_0x7041('0x5')][_0x7041('0x6')]()){case'GET':case'DELETE':_0x56ddfd=null;_0x1a066c['qs']=_0x11ae45;break;case _0x7041('0xf'):case _0x7041('0x10'):if(_0x52fddc['data7']){try{_0x56ddfd=JSON[_0x7041('0xc')](Mustache[_0x7041('0x7')](_0x52fddc['data7'],_0x11ae45));_0x1a066c[_0x7041('0x11')]=_0x56ddfd;}catch(_0x532f26){logger['error'](_0x532f26[_0x7041('0xe')]);logger['error'](_0x7041('0x12'));}}else{_0x56ddfd=_0x11ae45;_0x1a066c[_0x7041('0x11')]=_0x56ddfd;}break;}logger[_0x7041('0x13')](util[_0x7041('0x14')]('%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s',_0x52fddc['data1'],_0x52fddc[_0x7041('0x8')],JSON[_0x7041('0x15')](_0x1a066c)));rp(_0x1a066c)[_0x7041('0x16')](function(_0x55ec17){_0x56ddfd=!_[_0x7041('0x17')](_0x56ddfd)?',\x20request\x20body:\x20'+_0x56ddfd:'';_0x20ba68=typeof _0x55ec17[_0x7041('0x11')]===_0x7041('0x18')?JSON[_0x7041('0x15')](_0x55ec17[_0x7041('0x11')]):_0x55ec17['body'];logger[_0x7041('0x13')](util[_0x7041('0x14')](_0x7041('0x19'),_0x52fddc[_0x7041('0x5')],_0x52fddc[_0x7041('0x8')],_0x55ec17['statusCode'],_0x20ba68));})[_0x7041('0x1a')](function(_0x4beb52){logger['error'](util[_0x7041('0x14')](_0x7041('0x1b'),_0x52fddc[_0x7041('0x5')],_0x52fddc[_0x7041('0x8')],_0x4beb52[_0x7041('0x1c')],_0x4beb52[_0x7041('0x1d')],_0x4beb52[_0x7041('0x1e')]));});};
\ No newline at end of file
index 80f5bfd..f0084f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdac2=['debug','rpc','routing','error','message','catch','exports','jayson/promise','bluebird','../../config/logger','client','http','Request','then'];(function(_0x101e7b,_0x4ef05b){var _0x4995c0=function(_0x1a6488){while(--_0x1a6488){_0x101e7b['push'](_0x101e7b['shift']());}};_0x4995c0(++_0x4ef05b);}(_0xdac2,0x157));var _0x2dac=function(_0x12dd11,_0x52b882){_0x12dd11=_0x12dd11-0x0;var _0x3a502b=_0xdac2[_0x12dd11];return _0x3a502b;};'use strict';var jayson=require(_0x2dac('0x0'));var BPromise=require(_0x2dac('0x1'));var logger=require(_0x2dac('0x2'))('routing');var client=jayson[_0x2dac('0x3')][_0x2dac('0x4')]({'port':0x2329});client[_0x2dac('0x5')]=function(_0xf2cb26,_0x576d3d){return new BPromise(function(_0xf6aefb,_0x5b38ee){return client['request'](_0xf2cb26,_0x576d3d)[_0x2dac('0x6')](function(_0x67fcfb){logger[_0x2dac('0x7')](_0x2dac('0x8'),_0x2dac('0x9'),_0xf2cb26,_0x576d3d,_0x67fcfb);if(_0x67fcfb['error']){logger['error']('rpc',_0x2dac('0x9'),_0xf2cb26,_0x67fcfb[_0x2dac('0xa')][_0x2dac('0xb')],_0x576d3d);return _0x5b38ee(_0x67fcfb[_0x2dac('0xa')][_0x2dac('0xb')]);}else{return _0xf6aefb(_0x67fcfb['result']);}})[_0x2dac('0xc')](function(_0x4ad5af){logger['error']('rpc',_0x2dac('0x9'),_0xf2cb26,_0x4ad5af,_0x576d3d);return _0x5b38ee(_0x4ad5af);});});};module[_0x2dac('0xd')]=client;
\ No newline at end of file
+var _0xa8f2=['Request','then','debug','rpc','error','message','result','catch','exports','jayson/promise','bluebird','../../config/logger','routing','client','http'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0xa8f2,0xf9));var _0x2a8f=function(_0x48c9fe,_0x27e842){_0x48c9fe=_0x48c9fe-0x0;var _0x4dc475=_0xa8f2[_0x48c9fe];return _0x4dc475;};'use strict';var jayson=require(_0x2a8f('0x0'));var BPromise=require(_0x2a8f('0x1'));var logger=require(_0x2a8f('0x2'))(_0x2a8f('0x3'));var client=jayson[_0x2a8f('0x4')][_0x2a8f('0x5')]({'port':0x2329});client[_0x2a8f('0x6')]=function(_0x393183,_0x153ad7){return new BPromise(function(_0x45d310,_0x484e42){return client['request'](_0x393183,_0x153ad7)[_0x2a8f('0x7')](function(_0x37a91c){logger[_0x2a8f('0x8')](_0x2a8f('0x9'),_0x2a8f('0x3'),_0x393183,_0x153ad7,_0x37a91c);if(_0x37a91c[_0x2a8f('0xa')]){logger[_0x2a8f('0xa')](_0x2a8f('0x9'),_0x2a8f('0x3'),_0x393183,_0x37a91c[_0x2a8f('0xa')]['message'],_0x153ad7);return _0x484e42(_0x37a91c[_0x2a8f('0xa')][_0x2a8f('0xb')]);}else{return _0x45d310(_0x37a91c[_0x2a8f('0xc')]);}})[_0x2a8f('0xd')](function(_0x3daca6){logger[_0x2a8f('0xa')](_0x2a8f('0x9'),_0x2a8f('0x3'),_0x393183,_0x3daca6,_0x153ad7);return _0x484e42(_0x3daca6);});});};module[_0x2a8f('0xe')]=client;
\ No newline at end of file
index 99c638f..f94f4b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd12b=['./realtime','./lib/email','./rpc/mailAccount','./rpc/setting','resolve','getMailAccounts','then','initMailAccounts','refresh','mailAccounts','listen','loginMailFrequency','catch','log','bluebird','./server'];(function(_0x44b5d2,_0x323944){var _0x1dc9d4=function(_0x13110c){while(--_0x13110c){_0x44b5d2['push'](_0x44b5d2['shift']());}};_0x1dc9d4(++_0x323944);}(_0xd12b,0x17e));var _0xbd12=function(_0x4d180c,_0x45c68e){_0x4d180c=_0x4d180c-0x0;var _0x49b57e=_0xd12b[_0x4d180c];return _0x49b57e;};'use strict';var BPromise=require(_0xbd12('0x0'));var server=require(_0xbd12('0x1'));var Realtime=require(_0xbd12('0x2'));var EmailChannel=require(_0xbd12('0x3'));var mailAccount=require(_0xbd12('0x4'));var setting=require(_0xbd12('0x5'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0xbd12('0x6')]()['then'](mailAccount[_0xbd12('0x7')]())[_0xbd12('0x8')](realtime[_0xbd12('0x9')]())[_0xbd12('0x8')](function(){email[_0xbd12('0xa')](realtime[_0xbd12('0xb')]);return realtime;});}function main(){return server[_0xbd12('0xc')](realtime,email)[_0xbd12('0x8')](function(){return initRealtime();})[_0xbd12('0x8')](function(){return setting['getSettings']();})[_0xbd12('0x8')](function(_0x5d5457){return setInterval(initRealtime,_0x5d5457[_0xbd12('0xd')]*0x3e8);})[_0xbd12('0xe')](function(_0x2f2f8e){console[_0xbd12('0xf')](_0x2f2f8e);});}main();
\ No newline at end of file
+var _0xcd89=['then','initMailAccounts','mailAccounts','listen','getSettings','loginMailFrequency','log','./server','./realtime','./lib/email','./rpc/setting','resolve'];(function(_0x9d14e3,_0x5a6072){var _0x19bf32=function(_0x19da07){while(--_0x19da07){_0x9d14e3['push'](_0x9d14e3['shift']());}};_0x19bf32(++_0x5a6072);}(_0xcd89,0x67));var _0x9cd8=function(_0x2d8584,_0x354347){_0x2d8584=_0x2d8584-0x0;var _0x5c72e4=_0xcd89[_0x2d8584];return _0x5c72e4;};'use strict';var BPromise=require('bluebird');var server=require(_0x9cd8('0x0'));var Realtime=require(_0x9cd8('0x1'));var EmailChannel=require(_0x9cd8('0x2'));var mailAccount=require('./rpc/mailAccount');var setting=require(_0x9cd8('0x3'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0x9cd8('0x4')]()[_0x9cd8('0x5')](mailAccount['getMailAccounts']())[_0x9cd8('0x5')](realtime[_0x9cd8('0x6')]())[_0x9cd8('0x5')](function(){email['refresh'](realtime[_0x9cd8('0x7')]);return realtime;});}function main(){return server[_0x9cd8('0x8')](realtime,email)['then'](function(){return initRealtime();})[_0x9cd8('0x5')](function(){return setting[_0x9cd8('0x9')]();})[_0x9cd8('0x5')](function(_0x1aae21){return setInterval(initRealtime,_0x1aae21[_0x9cd8('0xa')]*0x3e8);})['catch'](function(_0x3c65a2){console[_0x9cd8('0xb')](_0x3c65a2);});}main();
\ No newline at end of file
index 4fd1e36..62fbe84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab15=['../../../config/logger','redis','defaults','./imap','../rpc/mailAccount','start\x20email\x20channel','imapAccounts','smtp','emit','mailAccounts','name','active','Imap','status','messageStatus','total','isNil','stringify','refresh','hasOwnProperty','email','box','handleImapBox','bind','handleImapEmail','handleImapEnd','handleImapError','disabled','prototype','connected','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','from','notify','then','info','Mail\x20accepted\x20from\x20routing','catch','error','sendMail','send','verifySmtp','Smtp','lastSync','verify','verified','exports','moment','bluebird','md5','ioredis'];(function(_0x137bb2,_0x184683){var _0xf1b85d=function(_0x219cd5){while(--_0x219cd5){_0x137bb2['push'](_0x137bb2['shift']());}};_0xf1b85d(++_0x184683);}(_0xab15,0x9b));var _0x5ab1=function(_0x342516,_0x559ddc){_0x342516=_0x342516-0x0;var _0x4c3db7=_0xab15[_0x342516];return _0x4c3db7;};'use strict';var _=require('lodash');var moment=require(_0x5ab1('0x0'));var BPromise=require(_0x5ab1('0x1'));var md5=require(_0x5ab1('0x2'));var Redis=require(_0x5ab1('0x3'));var config=require('../../../config/environment');var logger=require(_0x5ab1('0x4'))('email');config[_0x5ab1('0x5')]=_[_0x5ab1('0x6')](config[_0x5ab1('0x5')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x5ab1('0x5')]));var EmailImap=require(_0x5ab1('0x7'));var EmailSmtp=require('./smtp');var mailAccount=require(_0x5ab1('0x8'));var md5Accounts={};function EmailChannel(_0x2ba0de){logger['info'](_0x5ab1('0x9'));this['mailAccounts']=_0x2ba0de['mailAccounts'];this[_0x5ab1('0xa')]={};this[_0x5ab1('0xb')]=new EmailSmtp();}EmailChannel['prototype'][_0x5ab1('0xc')]=function(_0x13fd7e){var _0x1dacf6=this[_0x5ab1('0xd')][_0x13fd7e];var _0x12056b={'id':_0x1dacf6['id'],'name':_0x1dacf6[_0x5ab1('0xe')],'key':_0x1dacf6['key'],'active':_0x1dacf6[_0x5ab1('0xf')],'Imap':{'status':_0x1dacf6[_0x5ab1('0x10')][_0x5ab1('0x11')],'messageStatus':_0x1dacf6[_0x5ab1('0x10')][_0x5ab1('0x12')],'total':_0x1dacf6[_0x5ab1('0x10')][_0x5ab1('0x13')]}};if(_[_0x5ab1('0x14')](md5Accounts[_0x13fd7e])){md5Accounts[_0x13fd7e]={};}var _0x4e0645=md5(JSON[_0x5ab1('0x15')](_0x12056b));if(md5Accounts[_0x13fd7e][_0x5ab1('0x2')]!==_0x4e0645){md5Accounts[_0x13fd7e][_0x5ab1('0x2')]=_0x4e0645;io[_0x5ab1('0xc')]('mailAccount:update',_0x12056b);}};EmailChannel['prototype'][_0x5ab1('0x16')]=function(_0x11b111){for(var _0x1feb92 in _0x11b111){if(_0x11b111[_0x5ab1('0x17')](_0x1feb92)){if(_0x11b111[_0x1feb92][_0x5ab1('0x10')]&&_0x11b111[_0x1feb92][_0x5ab1('0xf')]){var _0xcdde63=_0x11b111[_0x1feb92][_0x5ab1('0x10')];if(!this[_0x5ab1('0xa')][_0x5ab1('0x17')](_0xcdde63['id'])){this[_0x5ab1('0xa')][_0xcdde63['id']]=new EmailImap(_0xcdde63,_0x11b111[_0x1feb92][_0x5ab1('0x18')]);this[_0x5ab1('0xa')][_0xcdde63['id']]['on'](_0x5ab1('0x19'),this[_0x5ab1('0x1a')][_0x5ab1('0x1b')](this,_0x1feb92));this['imapAccounts'][_0xcdde63['id']]['on']('email',this[_0x5ab1('0x1c')][_0x5ab1('0x1b')](this,_0x1feb92));this[_0x5ab1('0xa')][_0xcdde63['id']]['on']('end',this[_0x5ab1('0x1d')][_0x5ab1('0x1b')](this,_0x1feb92));this[_0x5ab1('0xa')][_0xcdde63['id']]['on']('error',this[_0x5ab1('0x1e')][_0x5ab1('0x1b')](this,_0x1feb92));}}else{if(_['isNil'](this[_0x5ab1('0xd')][_0x1feb92][_0x5ab1('0x10')])){this[_0x5ab1('0xd')][_0x1feb92][_0x5ab1('0x10')]={};}this[_0x5ab1('0xd')][_0x1feb92]['Imap'][_0x5ab1('0x11')]=_0x5ab1('0x1f');this[_0x5ab1('0xd')][_0x1feb92]['Imap'][_0x5ab1('0x12')]='';this[_0x5ab1('0xc')](_0x1feb92);}}}};EmailChannel[_0x5ab1('0x20')][_0x5ab1('0x1a')]=function(_0x149f34,_0x60e903){if(this[_0x5ab1('0xd')][_0x149f34]){this[_0x5ab1('0xd')][_0x149f34][_0x5ab1('0x10')][_0x5ab1('0x11')]=_0x5ab1('0x21');this[_0x5ab1('0xd')][_0x149f34][_0x5ab1('0x10')][_0x5ab1('0x12')]=_0x60e903[_0x5ab1('0xe')];if(_0x60e903[_0x5ab1('0x22')]){this[_0x5ab1('0xd')][_0x149f34][_0x5ab1('0x10')]['total']=_0x60e903['messages'][_0x5ab1('0x13')];}return this['emit'](_0x149f34);}};EmailChannel[_0x5ab1('0x20')]['handleImapEmail']=function(_0x333ba3,_0x4734fa){logger['info'](_0x5ab1('0x23'),_0x4734fa[_0x5ab1('0x24')],_0x4734fa[_0x5ab1('0x25')],_0x4734fa[_0x5ab1('0x26')],_0x333ba3);if(this['mailAccounts'][_0x333ba3]){return mailAccount[_0x5ab1('0x27')](_0x333ba3,_0x4734fa)[_0x5ab1('0x28')](function(_0x4ce546){if(_0x4ce546){logger[_0x5ab1('0x29')](_0x5ab1('0x2a'));}})[_0x5ab1('0x2b')](function(_0x49b6de){logger[_0x5ab1('0x2c')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON['stringify'](_0x49b6de));});}};EmailChannel[_0x5ab1('0x20')][_0x5ab1('0x1d')]=function(_0x6b0de9){if(this[_0x5ab1('0xd')][_0x6b0de9]&&this['mailAccounts'][_0x6b0de9][_0x5ab1('0x10')]){if(this['imapAccounts'][this[_0x5ab1('0xd')][_0x6b0de9][_0x5ab1('0x10')]['id']]){delete this[_0x5ab1('0xa')][this[_0x5ab1('0xd')][_0x6b0de9][_0x5ab1('0x10')]['id']];}this[_0x5ab1('0xd')][_0x6b0de9][_0x5ab1('0x10')]['lastSync']=moment();this[_0x5ab1('0xc')](_0x6b0de9);}};EmailChannel[_0x5ab1('0x20')][_0x5ab1('0x1e')]=function(_0x17d27d,_0x551ce7){if(this[_0x5ab1('0xd')][_0x17d27d]){this[_0x5ab1('0xd')][_0x17d27d][_0x5ab1('0x10')][_0x5ab1('0x11')]=_0x5ab1('0x2c');this['mailAccounts'][_0x17d27d][_0x5ab1('0x10')][_0x5ab1('0x12')]=_0x551ce7;return this[_0x5ab1('0xc')](_0x17d27d);}};EmailChannel[_0x5ab1('0x20')][_0x5ab1('0x2d')]=function(_0x576a78,_0x313d4e){return this[_0x5ab1('0xb')][_0x5ab1('0x2e')](_0x576a78,_0x313d4e);};EmailChannel[_0x5ab1('0x20')][_0x5ab1('0x2f')]=function(_0x206f4a){var _0x14800c=this;if(this[_0x5ab1('0xd')][_0x206f4a['id']]){if(_[_0x5ab1('0x14')](this[_0x5ab1('0xd')][_0x206f4a['id']][_0x5ab1('0x30')])){this['mailAccounts'][_0x206f4a['id']][_0x5ab1('0x30')]={};}this[_0x5ab1('0xd')][_0x206f4a['id']][_0x5ab1('0x30')][_0x5ab1('0x31')]=moment();return new BPromise(function(_0x1a7fc2,_0x2fdd49){return _0x14800c[_0x5ab1('0xb')][_0x5ab1('0x32')](_0x206f4a)['then'](function(_0x4f086c){_0x14800c[_0x5ab1('0xd')][_0x206f4a['id']][_0x5ab1('0x30')]['status']=_0x5ab1('0x33');_0x14800c[_0x5ab1('0xd')][_0x206f4a['id']]['Smtp']['messageStatus']='';_0x14800c[_0x5ab1('0xc')](_0x206f4a['id']);_0x1a7fc2(_0x4f086c);})[_0x5ab1('0x2b')](function(_0x348e42){_0x14800c[_0x5ab1('0xd')][_0x206f4a['id']][_0x5ab1('0x30')]['status']=_0x5ab1('0x2c');_0x14800c[_0x5ab1('0xd')][_0x206f4a['id']][_0x5ab1('0x30')]['messageStatus']=_0x348e42;_0x14800c[_0x5ab1('0xc')](_0x206f4a['id']);_0x2fdd49(_0x348e42);});});}return this[_0x5ab1('0xb')][_0x5ab1('0x32')](_0x206f4a);};module[_0x5ab1('0x34')]=EmailChannel;
\ No newline at end of file
+var _0xe8aa=['Mail\x20accepted\x20from\x20routing','Mail\x20not\x20accepted\x20from\x20routing\x20%s','stringify','lastSync','handleImapError','sendMail','send','verifySmtp','Smtp','verify','verified','catch','exports','lodash','bluebird','md5','ioredis','../../../config/logger','email','redis','localhost','socket.io-emitter','./imap','./smtp','../rpc/mailAccount','smtp','emit','key','active','Imap','status','total','isNil','prototype','refresh','hasOwnProperty','imapAccounts','box','handleImapBox','end','handleImapEnd','bind','error','mailAccounts','disabled','messageStatus','name','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','from','then','info'];(function(_0x4d934b,_0x52f8e9){var _0xc0338b=function(_0x1a356c){while(--_0x1a356c){_0x4d934b['push'](_0x4d934b['shift']());}};_0xc0338b(++_0x52f8e9);}(_0xe8aa,0x1f3));var _0xae8a=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xe8aa[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0xae8a('0x0'));var moment=require('moment');var BPromise=require(_0xae8a('0x1'));var md5=require(_0xae8a('0x2'));var Redis=require(_0xae8a('0x3'));var config=require('../../../config/environment');var logger=require(_0xae8a('0x4'))(_0xae8a('0x5'));config['redis']=_['defaults'](config[_0xae8a('0x6')],{'host':_0xae8a('0x7'),'port':0x18eb});var io=require(_0xae8a('0x8'))(new Redis(config[_0xae8a('0x6')]));var EmailImap=require(_0xae8a('0x9'));var EmailSmtp=require(_0xae8a('0xa'));var mailAccount=require(_0xae8a('0xb'));var md5Accounts={};function EmailChannel(_0x3bdf3a){logger['info']('start\x20email\x20channel');this['mailAccounts']=_0x3bdf3a['mailAccounts'];this['imapAccounts']={};this[_0xae8a('0xc')]=new EmailSmtp();}EmailChannel['prototype'][_0xae8a('0xd')]=function(_0x505125){var _0x33da65=this['mailAccounts'][_0x505125];var _0x1f9a3e={'id':_0x33da65['id'],'name':_0x33da65['name'],'key':_0x33da65[_0xae8a('0xe')],'active':_0x33da65[_0xae8a('0xf')],'Imap':{'status':_0x33da65[_0xae8a('0x10')][_0xae8a('0x11')],'messageStatus':_0x33da65[_0xae8a('0x10')]['messageStatus'],'total':_0x33da65[_0xae8a('0x10')][_0xae8a('0x12')]}};if(_[_0xae8a('0x13')](md5Accounts[_0x505125])){md5Accounts[_0x505125]={};}var _0x114935=md5(JSON['stringify'](_0x1f9a3e));if(md5Accounts[_0x505125][_0xae8a('0x2')]!==_0x114935){md5Accounts[_0x505125][_0xae8a('0x2')]=_0x114935;io[_0xae8a('0xd')]('mailAccount:update',_0x1f9a3e);}};EmailChannel[_0xae8a('0x14')][_0xae8a('0x15')]=function(_0x28a068){for(var _0x5c1cdf in _0x28a068){if(_0x28a068[_0xae8a('0x16')](_0x5c1cdf)){if(_0x28a068[_0x5c1cdf][_0xae8a('0x10')]&&_0x28a068[_0x5c1cdf][_0xae8a('0xf')]){var _0x1cafd3=_0x28a068[_0x5c1cdf][_0xae8a('0x10')];if(!this['imapAccounts'][_0xae8a('0x16')](_0x1cafd3['id'])){this['imapAccounts'][_0x1cafd3['id']]=new EmailImap(_0x1cafd3,_0x28a068[_0x5c1cdf][_0xae8a('0x5')]);this[_0xae8a('0x17')][_0x1cafd3['id']]['on'](_0xae8a('0x18'),this[_0xae8a('0x19')]['bind'](this,_0x5c1cdf));this[_0xae8a('0x17')][_0x1cafd3['id']]['on'](_0xae8a('0x5'),this['handleImapEmail']['bind'](this,_0x5c1cdf));this[_0xae8a('0x17')][_0x1cafd3['id']]['on'](_0xae8a('0x1a'),this[_0xae8a('0x1b')][_0xae8a('0x1c')](this,_0x5c1cdf));this['imapAccounts'][_0x1cafd3['id']]['on'](_0xae8a('0x1d'),this['handleImapError'][_0xae8a('0x1c')](this,_0x5c1cdf));}}else{if(_[_0xae8a('0x13')](this[_0xae8a('0x1e')][_0x5c1cdf]['Imap'])){this[_0xae8a('0x1e')][_0x5c1cdf]['Imap']={};}this[_0xae8a('0x1e')][_0x5c1cdf]['Imap'][_0xae8a('0x11')]=_0xae8a('0x1f');this[_0xae8a('0x1e')][_0x5c1cdf][_0xae8a('0x10')][_0xae8a('0x20')]='';this[_0xae8a('0xd')](_0x5c1cdf);}}}};EmailChannel[_0xae8a('0x14')][_0xae8a('0x19')]=function(_0x210361,_0x9efa04){if(this[_0xae8a('0x1e')][_0x210361]){this[_0xae8a('0x1e')][_0x210361][_0xae8a('0x10')][_0xae8a('0x11')]='connected';this[_0xae8a('0x1e')][_0x210361][_0xae8a('0x10')]['messageStatus']=_0x9efa04[_0xae8a('0x21')];if(_0x9efa04[_0xae8a('0x22')]){this[_0xae8a('0x1e')][_0x210361][_0xae8a('0x10')]['total']=_0x9efa04[_0xae8a('0x22')][_0xae8a('0x12')];}return this[_0xae8a('0xd')](_0x210361);}};EmailChannel[_0xae8a('0x14')]['handleImapEmail']=function(_0xa6594e,_0x15031d){logger['info'](_0xae8a('0x23'),_0x15031d[_0xae8a('0x24')],_0x15031d[_0xae8a('0x25')],_0x15031d[_0xae8a('0x26')],_0xa6594e);if(this['mailAccounts'][_0xa6594e]){return mailAccount['notify'](_0xa6594e,_0x15031d)[_0xae8a('0x27')](function(_0x57e5fb){if(_0x57e5fb){logger[_0xae8a('0x28')](_0xae8a('0x29'));}})['catch'](function(_0x234710){logger['error'](_0xae8a('0x2a'),JSON[_0xae8a('0x2b')](_0x234710));});}};EmailChannel[_0xae8a('0x14')][_0xae8a('0x1b')]=function(_0x19a7ca){if(this[_0xae8a('0x1e')][_0x19a7ca]&&this[_0xae8a('0x1e')][_0x19a7ca][_0xae8a('0x10')]){if(this[_0xae8a('0x17')][this[_0xae8a('0x1e')][_0x19a7ca]['Imap']['id']]){delete this[_0xae8a('0x17')][this[_0xae8a('0x1e')][_0x19a7ca][_0xae8a('0x10')]['id']];}this[_0xae8a('0x1e')][_0x19a7ca][_0xae8a('0x10')][_0xae8a('0x2c')]=moment();this['emit'](_0x19a7ca);}};EmailChannel[_0xae8a('0x14')][_0xae8a('0x2d')]=function(_0x5cbd01,_0x308235){if(this[_0xae8a('0x1e')][_0x5cbd01]){this[_0xae8a('0x1e')][_0x5cbd01][_0xae8a('0x10')][_0xae8a('0x11')]=_0xae8a('0x1d');this['mailAccounts'][_0x5cbd01][_0xae8a('0x10')]['messageStatus']=_0x308235;return this[_0xae8a('0xd')](_0x5cbd01);}};EmailChannel[_0xae8a('0x14')][_0xae8a('0x2e')]=function(_0x1fa134,_0x42c935){return this[_0xae8a('0xc')][_0xae8a('0x2f')](_0x1fa134,_0x42c935);};EmailChannel[_0xae8a('0x14')][_0xae8a('0x30')]=function(_0x28684d){var _0x42c74f=this;if(this[_0xae8a('0x1e')][_0x28684d['id']]){if(_[_0xae8a('0x13')](this['mailAccounts'][_0x28684d['id']][_0xae8a('0x31')])){this[_0xae8a('0x1e')][_0x28684d['id']]['Smtp']={};}this[_0xae8a('0x1e')][_0x28684d['id']][_0xae8a('0x31')]['lastSync']=moment();return new BPromise(function(_0x47c31b,_0xa978f8){return _0x42c74f['smtp'][_0xae8a('0x32')](_0x28684d)[_0xae8a('0x27')](function(_0x4bddd2){_0x42c74f[_0xae8a('0x1e')][_0x28684d['id']]['Smtp'][_0xae8a('0x11')]=_0xae8a('0x33');_0x42c74f[_0xae8a('0x1e')][_0x28684d['id']][_0xae8a('0x31')][_0xae8a('0x20')]='';_0x42c74f[_0xae8a('0xd')](_0x28684d['id']);_0x47c31b(_0x4bddd2);})[_0xae8a('0x34')](function(_0x591242){_0x42c74f[_0xae8a('0x1e')][_0x28684d['id']][_0xae8a('0x31')]['status']=_0xae8a('0x1d');_0x42c74f[_0xae8a('0x1e')][_0x28684d['id']]['Smtp']['messageStatus']=_0x591242;_0x42c74f[_0xae8a('0xd')](_0x28684d['id']);_0xa978f8(_0x591242);});});}return this[_0xae8a('0xc')][_0xae8a('0x32')](_0x28684d);};module[_0xae8a('0x35')]=EmailChannel;
\ No newline at end of file
index d145d5b..48ba361 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69ae=['UNSEEN','handleReadUnseen','handleError','length','fetch','message','handleFetchMessage','handleFetchEnd','closeBox','body','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','parser','handleFetchError','stringify','textCode','exports','path','util','imap','lodash','mailparser','simpleParser','iconv','EventEmitter','../../../config/logger','email','mailbox','INBOX','account','getAccount','once','ready','handleReady','bind','end','handleEnd','error','prototype','connTimeout','authTimeout','service','user','password','host','port','tls','autotls','required','getHost','anonymous@xcally.com','handleOpenBox','emit','readUnseen','handleCloseBox','search'];(function(_0x389147,_0x33482a){var _0xb67125=function(_0xe91539){while(--_0xe91539){_0x389147['push'](_0x389147['shift']());}};_0xb67125(++_0x33482a);}(_0x69ae,0x1b1));var _0xe69a=function(_0x7def7,_0x50aa05){_0x7def7=_0x7def7-0x0;var _0x1554f3=_0x69ae[_0x7def7];return _0x1554f3;};'use strict';var fs=require('fs');var path=require(_0xe69a('0x0'));var util=require(_0xe69a('0x1'));var Imap=require(_0xe69a('0x2'));var _=require(_0xe69a('0x3'));var rs=require('randomstring');var simpleParser=require(_0xe69a('0x4'))[_0xe69a('0x5')];var Iconv=require(_0xe69a('0x6'))['Iconv'];var EventEmitter=require('events')[_0xe69a('0x7')];var utils=require('./utils');var logger=require(_0xe69a('0x8'))(_0xe69a('0x9'));function EmailImap(_0x2819f9,_0x170a98){this[_0xe69a('0xa')]=_0xe69a('0xb');this[_0xe69a('0xc')]=this[_0xe69a('0xd')](_0x2819f9,_0x170a98);this[_0xe69a('0x2')]=new Imap(this['account']);this[_0xe69a('0x2')][_0xe69a('0xe')](_0xe69a('0xf'),this[_0xe69a('0x10')][_0xe69a('0x11')](this));this[_0xe69a('0x2')]['once'](_0xe69a('0x12'),this[_0xe69a('0x13')][_0xe69a('0x11')](this));this['imap']['on'](_0xe69a('0x14'),this['handleError']['bind'](this));this[_0xe69a('0x2')]['connect']();}util['inherits'](EmailImap,EventEmitter);EmailImap[_0xe69a('0x15')][_0xe69a('0xd')]=function(_0x8bed97,_0x577800){var _0x2b8146={'connTimeout':_0x8bed97[_0xe69a('0x16')]?_0x8bed97[_0xe69a('0x16')]*0x3e8:0x2710,'authTimeout':_0x8bed97[_0xe69a('0x17')]?_0x8bed97[_0xe69a('0x17')]*0x3e8:0x1388};if(_['isNil'](_0x8bed97[_0xe69a('0x18')])){if(_0x8bed97['authentication']){_0x2b8146['user']=_0x8bed97[_0xe69a('0x19')];_0x2b8146[_0xe69a('0x1a')]=_0x8bed97[_0xe69a('0x1a')];}_0x2b8146[_0xe69a('0x1b')]=_0x8bed97[_0xe69a('0x1b')];_0x2b8146[_0xe69a('0x1c')]=_0x8bed97[_0xe69a('0x1c')]||0x3e1;if(_0x8bed97['tls']){_0x2b8146[_0xe69a('0x1d')]=!![];}else{_0x2b8146[_0xe69a('0x1d')]=![];_0x2b8146[_0xe69a('0x1e')]=_0xe69a('0x1f');}}else{_0x2b8146['user']=_0x8bed97['user'];_0x2b8146[_0xe69a('0x1a')]=_0x8bed97[_0xe69a('0x1a')];_0x2b8146[_0xe69a('0x1b')]=utils[_0xe69a('0x20')](_0x8bed97[_0xe69a('0x18')]);_0x2b8146[_0xe69a('0x1c')]=0x3e1;_0x2b8146['tls']=!![];}_0x2b8146[_0xe69a('0x9')]=_0x577800||_0x8bed97[_0xe69a('0x19')]||_0xe69a('0x21');return _0x2b8146;};EmailImap[_0xe69a('0x15')]['handleReady']=function(){this[_0xe69a('0x2')]['openBox'](this[_0xe69a('0xa')],![],this[_0xe69a('0x22')][_0xe69a('0x11')](this));};EmailImap['prototype']['handleOpenBox']=function(_0xfb2b3c,_0x393cb7){if(_0xfb2b3c){this['handleError'](_0xfb2b3c,!![]);}else{this[_0xe69a('0x23')]('box',_0x393cb7);this[_0xe69a('0x24')]();}};EmailImap['prototype'][_0xe69a('0x25')]=function(_0xb85402){if(_0xb85402){this['handleError'](_0xb85402,!![]);}else{this['imap'][_0xe69a('0x12')]();}};EmailImap['prototype'][_0xe69a('0x24')]=function(){this[_0xe69a('0x2')][_0xe69a('0x26')]([_0xe69a('0x27')],this[_0xe69a('0x28')]['bind'](this));};EmailImap[_0xe69a('0x15')]['handleReadUnseen']=function(_0x3b59c6,_0x182cbe){if(_0x3b59c6){this[_0xe69a('0x29')](_0x3b59c6,!![]);}else{if(_0x182cbe[_0xe69a('0x2a')]){try{var _0x5863dc=this['imap'][_0xe69a('0x2b')](_0x182cbe,{'bodies':'','markSeen':!![]});_0x5863dc['on'](_0xe69a('0x2c'),this[_0xe69a('0x2d')][_0xe69a('0x11')](this));_0x5863dc[_0xe69a('0xe')](_0xe69a('0x14'),this['handleFetchError']['bind'](this));_0x5863dc[_0xe69a('0xe')]('end',this[_0xe69a('0x2e')][_0xe69a('0x11')](this));}catch(_0x19789d){logger[_0xe69a('0x14')](_0x19789d);}}else{this[_0xe69a('0x2')][_0xe69a('0x2f')](!![],this[_0xe69a('0x25')][_0xe69a('0x11')](this));}}};EmailImap[_0xe69a('0x15')][_0xe69a('0x2d')]=function(_0x1ac593,_0xbb750e){_0x1ac593['on'](_0xe69a('0x30'),this[_0xe69a('0x31')][_0xe69a('0x11')](this));_0x1ac593[_0xe69a('0xe')](_0xe69a('0x32'),this['handleMessageAttributes'][_0xe69a('0x11')](this));_0x1ac593[_0xe69a('0xe')](_0xe69a('0x12'),this['handleMessageEnd'][_0xe69a('0x11')](this));};EmailImap[_0xe69a('0x15')][_0xe69a('0x31')]=function(_0x2f6204,_0x5845cf){simpleParser(_0x2f6204,{'Iconv':Iconv},this['handleSimpleParser']['bind'](this));};EmailImap['prototype'][_0xe69a('0x33')]=function(_0x47d117){};EmailImap[_0xe69a('0x15')][_0xe69a('0x34')]=function(){};EmailImap[_0xe69a('0x15')][_0xe69a('0x35')]=function(_0x55bfce,_0x2f2dc5){if(_0x55bfce){logger[_0xe69a('0x14')](_0x55bfce);}else{var _0x1396a8=this;utils[_0xe69a('0x36')](this[_0xe69a('0xc')],_0x2f2dc5,function(_0x3103dd){_0x1396a8[_0xe69a('0x23')]('email',_0x3103dd);});}};EmailImap['prototype'][_0xe69a('0x2e')]=function(){this[_0xe69a('0x2')][_0xe69a('0x2f')](!![],this[_0xe69a('0x25')][_0xe69a('0x11')](this));};EmailImap[_0xe69a('0x15')][_0xe69a('0x37')]=function(_0x5b186a){this[_0xe69a('0x29')](_0x5b186a);this[_0xe69a('0x2')]['closeBox'](!![],this[_0xe69a('0x25')][_0xe69a('0x11')](this));};EmailImap[_0xe69a('0x15')][_0xe69a('0x13')]=function(){this[_0xe69a('0x23')](_0xe69a('0x12'));};EmailImap[_0xe69a('0x15')]['handleError']=function(_0x18d041,_0xc4698){logger[_0xe69a('0x14')]('handleError',this[_0xe69a('0xc')][_0xe69a('0x9')],JSON[_0xe69a('0x38')](_0x18d041));var _0x3ca174='';if(_0x18d041){if(_0x18d041[_0xe69a('0x39')]){_0x3ca174=_0x18d041['textCode'];}else{for(var _0x2a028b in _0x18d041){if(_0x18d041['hasOwnProperty'](_0x2a028b)){_0x3ca174+=_['upperFirst'](_0x2a028b)+':\x20'+_0x18d041[_0x2a028b]+'\x0a';}}}}if(_0xc4698){this[_0xe69a('0x2')][_0xe69a('0x12')]();}else{this['emit'](_0xe69a('0x14'),_0x3ca174);this[_0xe69a('0x23')](_0xe69a('0x12'));}};module[_0xe69a('0x3a')]=EmailImap;
\ No newline at end of file
+var _0xc36a=['handleError','bind','connect','inherits','getAccount','connTimeout','authTimeout','isNil','service','authentication','user','password','host','port','tls','getHost','anonymous@xcally.com','handleReady','openBox','prototype','handleCloseBox','readUnseen','search','UNSEEN','length','fetch','message','handleFetchMessage','error','handleFetchEnd','closeBox','body','attributes','handleMessageAttributes','handleMessageEnd','handleMessageBody','handleSimpleParser','parser','emit','account','textCode','exports','path','util','lodash','mailparser','simpleParser','events','./utils','../../../config/logger','email','INBOX','imap','once','ready','end','handleEnd'];(function(_0x3650a8,_0x44b7ad){var _0x8d27be=function(_0x244d1e){while(--_0x244d1e){_0x3650a8['push'](_0x3650a8['shift']());}};_0x8d27be(++_0x44b7ad);}(_0xc36a,0x180));var _0xac36=function(_0x27e670,_0x28479b){_0x27e670=_0x27e670-0x0;var _0x2029f8=_0xc36a[_0x27e670];return _0x2029f8;};'use strict';var fs=require('fs');var path=require(_0xac36('0x0'));var util=require(_0xac36('0x1'));var Imap=require('imap');var _=require(_0xac36('0x2'));var rs=require('randomstring');var simpleParser=require(_0xac36('0x3'))[_0xac36('0x4')];var Iconv=require('iconv')['Iconv'];var EventEmitter=require(_0xac36('0x5'))['EventEmitter'];var utils=require(_0xac36('0x6'));var logger=require(_0xac36('0x7'))(_0xac36('0x8'));function EmailImap(_0xa2f50e,_0x4a72ab){this['mailbox']=_0xac36('0x9');this['account']=this['getAccount'](_0xa2f50e,_0x4a72ab);this[_0xac36('0xa')]=new Imap(this['account']);this[_0xac36('0xa')][_0xac36('0xb')](_0xac36('0xc'),this['handleReady']['bind'](this));this[_0xac36('0xa')][_0xac36('0xb')](_0xac36('0xd'),this[_0xac36('0xe')]['bind'](this));this[_0xac36('0xa')]['on']('error',this[_0xac36('0xf')][_0xac36('0x10')](this));this[_0xac36('0xa')][_0xac36('0x11')]();}util[_0xac36('0x12')](EmailImap,EventEmitter);EmailImap['prototype'][_0xac36('0x13')]=function(_0x427799,_0x30b786){var _0x504ee1={'connTimeout':_0x427799['connTimeout']?_0x427799[_0xac36('0x14')]*0x3e8:0x2710,'authTimeout':_0x427799['authTimeout']?_0x427799[_0xac36('0x15')]*0x3e8:0x1388};if(_[_0xac36('0x16')](_0x427799[_0xac36('0x17')])){if(_0x427799[_0xac36('0x18')]){_0x504ee1[_0xac36('0x19')]=_0x427799['user'];_0x504ee1['password']=_0x427799[_0xac36('0x1a')];}_0x504ee1[_0xac36('0x1b')]=_0x427799['host'];_0x504ee1[_0xac36('0x1c')]=_0x427799['port']||0x3e1;if(_0x427799[_0xac36('0x1d')]){_0x504ee1['tls']=!![];}else{_0x504ee1[_0xac36('0x1d')]=![];_0x504ee1['autotls']='required';}}else{_0x504ee1['user']=_0x427799[_0xac36('0x19')];_0x504ee1['password']=_0x427799[_0xac36('0x1a')];_0x504ee1[_0xac36('0x1b')]=utils[_0xac36('0x1e')](_0x427799[_0xac36('0x17')]);_0x504ee1[_0xac36('0x1c')]=0x3e1;_0x504ee1[_0xac36('0x1d')]=!![];}_0x504ee1[_0xac36('0x8')]=_0x30b786||_0x427799[_0xac36('0x19')]||_0xac36('0x1f');return _0x504ee1;};EmailImap['prototype'][_0xac36('0x20')]=function(){this[_0xac36('0xa')][_0xac36('0x21')](this['mailbox'],![],this['handleOpenBox'][_0xac36('0x10')](this));};EmailImap[_0xac36('0x22')]['handleOpenBox']=function(_0x537cbd,_0x48bf58){if(_0x537cbd){this[_0xac36('0xf')](_0x537cbd,!![]);}else{this['emit']('box',_0x48bf58);this['readUnseen']();}};EmailImap[_0xac36('0x22')][_0xac36('0x23')]=function(_0x4fa0b5){if(_0x4fa0b5){this[_0xac36('0xf')](_0x4fa0b5,!![]);}else{this[_0xac36('0xa')][_0xac36('0xd')]();}};EmailImap[_0xac36('0x22')][_0xac36('0x24')]=function(){this['imap'][_0xac36('0x25')]([_0xac36('0x26')],this['handleReadUnseen'][_0xac36('0x10')](this));};EmailImap[_0xac36('0x22')]['handleReadUnseen']=function(_0x1a14e3,_0x382777){if(_0x1a14e3){this[_0xac36('0xf')](_0x1a14e3,!![]);}else{if(_0x382777[_0xac36('0x27')]){try{var _0x4fce15=this[_0xac36('0xa')][_0xac36('0x28')](_0x382777,{'bodies':'','markSeen':!![]});_0x4fce15['on'](_0xac36('0x29'),this[_0xac36('0x2a')][_0xac36('0x10')](this));_0x4fce15[_0xac36('0xb')](_0xac36('0x2b'),this['handleFetchError']['bind'](this));_0x4fce15['once'](_0xac36('0xd'),this[_0xac36('0x2c')][_0xac36('0x10')](this));}catch(_0x3c68e7){logger['error'](_0x3c68e7);}}else{this[_0xac36('0xa')][_0xac36('0x2d')](!![],this[_0xac36('0x23')][_0xac36('0x10')](this));}}};EmailImap[_0xac36('0x22')]['handleFetchMessage']=function(_0x5e7fa7,_0x6b8131){_0x5e7fa7['on'](_0xac36('0x2e'),this['handleMessageBody'][_0xac36('0x10')](this));_0x5e7fa7[_0xac36('0xb')](_0xac36('0x2f'),this[_0xac36('0x30')]['bind'](this));_0x5e7fa7['once'](_0xac36('0xd'),this[_0xac36('0x31')]['bind'](this));};EmailImap[_0xac36('0x22')][_0xac36('0x32')]=function(_0x4688b,_0x330438){simpleParser(_0x4688b,{'Iconv':Iconv},this[_0xac36('0x33')][_0xac36('0x10')](this));};EmailImap['prototype'][_0xac36('0x30')]=function(_0x173e72){};EmailImap[_0xac36('0x22')][_0xac36('0x31')]=function(){};EmailImap[_0xac36('0x22')][_0xac36('0x33')]=function(_0x2a0ea8,_0x454e1c){if(_0x2a0ea8){logger[_0xac36('0x2b')](_0x2a0ea8);}else{var _0x2f8cea=this;utils[_0xac36('0x34')](this['account'],_0x454e1c,function(_0x1962ca){_0x2f8cea['emit'](_0xac36('0x8'),_0x1962ca);});}};EmailImap[_0xac36('0x22')]['handleFetchEnd']=function(){this['imap'][_0xac36('0x2d')](!![],this['handleCloseBox'][_0xac36('0x10')](this));};EmailImap['prototype']['handleFetchError']=function(_0x4d6651){this[_0xac36('0xf')](_0x4d6651);this[_0xac36('0xa')]['closeBox'](!![],this[_0xac36('0x23')][_0xac36('0x10')](this));};EmailImap['prototype'][_0xac36('0xe')]=function(){this[_0xac36('0x35')](_0xac36('0xd'));};EmailImap['prototype'][_0xac36('0xf')]=function(_0x39cba1,_0x39fb36){logger['error'](_0xac36('0xf'),this[_0xac36('0x36')][_0xac36('0x8')],JSON['stringify'](_0x39cba1));var _0x52b32a='';if(_0x39cba1){if(_0x39cba1[_0xac36('0x37')]){_0x52b32a=_0x39cba1[_0xac36('0x37')];}else{for(var _0x3b3ea7 in _0x39cba1){if(_0x39cba1['hasOwnProperty'](_0x3b3ea7)){_0x52b32a+=_['upperFirst'](_0x3b3ea7)+':\x20'+_0x39cba1[_0x3b3ea7]+'\x0a';}}}}if(_0x39fb36){this[_0xac36('0xa')][_0xac36('0xd')]();}else{this[_0xac36('0x35')]('error',_0x52b32a);this['emit'](_0xac36('0xd'));}};module[_0xac36('0x38')]=EmailImap;
\ No newline at end of file
index bd2bafd..001519a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96be=['use','sendMail','toString','Not\x20verifired','exports','nodemailer','bluebird','nodemailer-plugin-inline-base64','prototype','createTransport'];(function(_0xe97c12,_0x3972b6){var _0x11d9b7=function(_0x687503){while(--_0x687503){_0xe97c12['push'](_0xe97c12['shift']());}};_0x11d9b7(++_0x3972b6);}(_0x96be,0x127));var _0xe96b=function(_0x2ddc9f,_0x4f2658){_0x2ddc9f=_0x2ddc9f-0x0;var _0x34ab5c=_0x96be[_0x2ddc9f];return _0x34ab5c;};'use strict';var nodemailer=require(_0xe96b('0x0'));var BPromise=require(_0xe96b('0x1'));var inlineBase64=require(_0xe96b('0x2'));function EmailSmtp(){}EmailSmtp[_0xe96b('0x3')]['send']=function(_0x3c9fb0,_0xe6e1cd){return new BPromise(function(_0x3e283a,_0x35e985){var _0x42832a=nodemailer[_0xe96b('0x4')](_0x3c9fb0);_0x42832a[_0xe96b('0x5')]('compile',inlineBase64());_0x42832a[_0xe96b('0x6')](_0xe6e1cd,function(_0x290f59,_0x36f320){if(_0x290f59){_0x35e985(_0x290f59[_0xe96b('0x7')]());}else{_0x3e283a(_0x36f320);}});});};EmailSmtp[_0xe96b('0x3')]['verify']=function(_0x434799){return new BPromise(function(_0x5dd01a,_0xe9832c){var _0x4c1c88=nodemailer[_0xe96b('0x4')](_0x434799);_0x4c1c88['verify'](function(_0x22a3d3,_0x3bee6d){if(_0x22a3d3){_0xe9832c(_0x22a3d3[_0xe96b('0x7')]());}else{if(_0x3bee6d){_0x5dd01a(_0x3bee6d);}else{_0xe9832c(_0xe96b('0x8'));}}});});};module[_0xe96b('0x9')]=EmailSmtp;
\ No newline at end of file
+var _0x3408=['compile','toString','Not\x20verifired','bluebird','nodemailer-plugin-inline-base64','prototype','send','createTransport','use'];(function(_0x29dda1,_0x508e13){var _0x21b0ef=function(_0x118906){while(--_0x118906){_0x29dda1['push'](_0x29dda1['shift']());}};_0x21b0ef(++_0x508e13);}(_0x3408,0x11a));var _0x8340=function(_0x55213a,_0x53e101){_0x55213a=_0x55213a-0x0;var _0x27249=_0x3408[_0x55213a];return _0x27249;};'use strict';var nodemailer=require('nodemailer');var BPromise=require(_0x8340('0x0'));var inlineBase64=require(_0x8340('0x1'));function EmailSmtp(){}EmailSmtp[_0x8340('0x2')][_0x8340('0x3')]=function(_0x1da938,_0x37f94d){return new BPromise(function(_0x1ad2bb,_0x75f560){var _0x5a2ae6=nodemailer[_0x8340('0x4')](_0x1da938);_0x5a2ae6[_0x8340('0x5')](_0x8340('0x6'),inlineBase64());_0x5a2ae6['sendMail'](_0x37f94d,function(_0x370cd8,_0x4007a0){if(_0x370cd8){_0x75f560(_0x370cd8['toString']());}else{_0x1ad2bb(_0x4007a0);}});});};EmailSmtp[_0x8340('0x2')]['verify']=function(_0x4da245){return new BPromise(function(_0x289203,_0x53062e){var _0xb6a1de=nodemailer[_0x8340('0x4')](_0x4da245);_0xb6a1de['verify'](function(_0x396286,_0xa6a06b){if(_0x396286){_0x53062e(_0x396286[_0x8340('0x7')]());}else{if(_0xa6a06b){_0x289203(_0xa6a06b);}else{_0x53062e(_0x8340('0x8'));}}});});};module['exports']=EmailSmtp;
\ No newline at end of file
index 2fb2aa6..740ec73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ccb=['includes','bcc','attachments','type','attachment','attachment-','format','%s-%s','join','root','server/files/attachments/','content','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','isAutoreply','parser','from','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','textAsHtml','application/ms-tnef','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','messageId','parseBuffer','first','<p>Empty\x20message</p>','Attachments','Title','Data','getHost','gmail','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','outlook365','outlook.office365.com','lodash','moment','randomstring','util','node-tnef','email','../../../config/environment','head','value','address','anonymous','generate','@xcally.com','name','substring','indexOf','split','length','pop','isEmpty','html','replace','<img','push','filename','_SRC','_IMG','\x20]</span>','body','message','originTo','originCc'];(function(_0x42f24a,_0x5972c7){var _0x1f119e=function(_0x5e450d){while(--_0x5e450d){_0x42f24a['push'](_0x42f24a['shift']());}};_0x1f119e(++_0x5972c7);}(_0x4ccb,0x196));var _0xb4cc=function(_0x235db0,_0x2c2333){_0x235db0=_0x235db0-0x0;var _0xd8b845=_0x4ccb[_0x235db0];return _0xd8b845;};'use strict';var _=require(_0xb4cc('0x0'));var moment=require(_0xb4cc('0x1'));var random=require(_0xb4cc('0x2'));var fs=require('fs');var path=require('path');var util=require(_0xb4cc('0x3'));var tnef=require(_0xb4cc('0x4'));var logger=require('../../../config/logger')(_0xb4cc('0x5'));var config=require(_0xb4cc('0x6'));function getAddress(_0x23c968){var _0x4cad3f=_[_0xb4cc('0x7')](_0x23c968[_0xb4cc('0x8')]);return _0x4cad3f&&_0x4cad3f[_0xb4cc('0x9')]?_0x4cad3f['address']:_0xb4cc('0xa')+random[_0xb4cc('0xb')](0x6)+_0xb4cc('0xc');}function getFirstName(_0x5327a4){var _0x7e4460=_[_0xb4cc('0x7')](_0x5327a4[_0xb4cc('0x8')]);if(_0x7e4460&&_0x7e4460[_0xb4cc('0xd')]){if(_0x7e4460[_0xb4cc('0xd')]==_0x7e4460['address']){return _0x7e4460[_0xb4cc('0xd')][_0xb4cc('0xe')](0x0,_0x7e4460['name'][_0xb4cc('0xf')]('@'));}var _0x4a54a5=_0x7e4460[_0xb4cc('0xd')][_0xb4cc('0x10')](/\s+/);return _0x4a54a5[_0xb4cc('0x11')]>0x1?_0x4a54a5['slice'](0x0,-0x1)['join']('\x20'):_0x7e4460[_0xb4cc('0xd')];}return'Anonymous';}function getLastName(_0x5cf92a){var _0x1b10ae=_['head'](_0x5cf92a['value']);if(_0x1b10ae&&_0x1b10ae[_0xb4cc('0xd')]){var _0x2b8b91=_0x1b10ae[_0xb4cc('0xd')]['split'](/\s+/);return _0x2b8b91[_0xb4cc('0x11')]>0x1?_0x2b8b91[_0xb4cc('0x12')]():'';}return'';}function getMails(_0x3aca2b,_0x926f2c){var _0x3cf8a4='';for(var _0x506ef9=0x0;_0x506ef9<_0x926f2c[_0xb4cc('0x8')][_0xb4cc('0x11')];_0x506ef9+=0x1){if(_0x926f2c[_0xb4cc('0x8')][_0x506ef9]['address']!==_0x3aca2b){if(!_[_0xb4cc('0x13')](_0x3cf8a4)){_0x3cf8a4+=',';}_0x3cf8a4+=_0x926f2c[_0xb4cc('0x8')][_0x506ef9][_0xb4cc('0xd')]||_0x926f2c[_0xb4cc('0x8')][_0x506ef9][_0xb4cc('0x9')]||'';_0x3cf8a4+='\x20<';_0x3cf8a4+=_0x926f2c['value'][_0x506ef9][_0xb4cc('0x9')]?_0x926f2c[_0xb4cc('0x8')][_0x506ef9][_0xb4cc('0x9')]:_0xb4cc('0xa')+random[_0xb4cc('0xb')](0x6)+'@xcally.com';_0x3cf8a4+='>';}}return _0x3cf8a4;}function parseEmail(_0x100c6a,_0x1bed69,_0x442d86){if(_0x1bed69[_0xb4cc('0x14')]){var _0x56f634=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x56f634['test'](_0x1bed69[_0xb4cc('0x14')])){_0x1bed69[_0xb4cc('0x14')]=_0x1bed69[_0xb4cc('0x14')][_0xb4cc('0x15')](_0x56f634,'');}if(_0x1bed69['html']['includes'](_0xb4cc('0x16'))){var _0x2d6fae=[];_0x1bed69['attachments']['forEach'](_0x1f1809=>{_0x2d6fae[_0xb4cc('0x17')](_0x1f1809[_0xb4cc('0x18')]);});var _0x154002=/<img.*? _SRC(.*?)[^>]+>/g;var _0x5af854=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x4efac8=_0x1bed69[_0xb4cc('0x14')]['replace'](_0x5af854,_0xb4cc('0x19'));var _0x195aa8=_0x4efac8[_0xb4cc('0x15')](_0x154002,_0xb4cc('0x1a'));for(let _0x6fb0fb=0x0;_0x6fb0fb<_0x2d6fae[_0xb4cc('0x11')];_0x6fb0fb++){var _0x1e43a7=_0x195aa8[_0xb4cc('0x15')](_0xb4cc('0x1a'),'<span\x20style=font-weight:bold>\x20[Attachment:\x20'+_0x2d6fae[_0x6fb0fb]+_0xb4cc('0x1b'));_0x195aa8=_0x1e43a7;}_0x1bed69[_0xb4cc('0x14')]=_0x195aa8;}_0x442d86[_0xb4cc('0x1c')]=_0x1bed69[_0xb4cc('0x14')];}else{_0x442d86[_0xb4cc('0x1c')]=_0x1bed69['textAsHtml'];}if(_0x442d86[_0xb4cc('0x1c')]){_0x442d86[_0xb4cc('0x1c')]=_0x442d86[_0xb4cc('0x1c')][_0xb4cc('0x15')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x1bed69['to']){_0x442d86[_0xb4cc('0x1d')][_0xb4cc('0x1e')]=getMails(null,_0x1bed69['to']);var _0x4e8e5f=getMails(_0x100c6a[_0xb4cc('0x5')],_0x1bed69['to']);if(!_[_0xb4cc('0x13')](_0x4e8e5f)){_0x442d86['message']['cc']+=_0x4e8e5f;}}if(_0x1bed69['cc']){_0x442d86[_0xb4cc('0x1d')][_0xb4cc('0x1f')]=getMails(null,_0x1bed69['cc']);var _0x26b9c1=getMails(_0x100c6a[_0xb4cc('0x5')],_0x1bed69['cc']);if(!_[_0xb4cc('0x13')](_0x26b9c1)){if(!_[_0xb4cc('0x13')](_0x442d86[_0xb4cc('0x1d')]['cc'])){_0x442d86[_0xb4cc('0x1d')]['cc']+=',';}_0x442d86[_0xb4cc('0x1d')]['cc']+=_0x26b9c1;}}if(!_['includes'](_0x442d86['message'][_0xb4cc('0x1e')],_0x100c6a[_0xb4cc('0x5')])&&!_[_0xb4cc('0x20')](_0x442d86[_0xb4cc('0x1d')][_0xb4cc('0x1f')],_0x100c6a['email'])){_0x442d86[_0xb4cc('0x1d')][_0xb4cc('0x21')]=_0x100c6a[_0xb4cc('0x5')];}if(_0x1bed69['attachments']&&_0x1bed69[_0xb4cc('0x22')][_0xb4cc('0x11')]){_0x442d86[_0xb4cc('0x1d')]['attach']=_0x1bed69[_0xb4cc('0x22')]['length'];for(var _0x2184f2=0x0,_0x29d105,_0x42c91d,_0x133c21;_0x2184f2<_0x1bed69['attachments'][_0xb4cc('0x11')];_0x2184f2+=0x1){if(_0x1bed69['attachments'][_0x2184f2][_0xb4cc('0x23')]===_0xb4cc('0x24')){_0x133c21=_0x1bed69[_0xb4cc('0x22')][_0x2184f2][_0xb4cc('0x18')]||_0xb4cc('0x25')+_0x2184f2;_0x29d105=util[_0xb4cc('0x26')](_0xb4cc('0x27'),Date['now'](),_0x133c21);_0x42c91d=path[_0xb4cc('0x28')](config[_0xb4cc('0x29')],_0xb4cc('0x2a'),_0x29d105);fs['writeFileSync'](_0x42c91d,_0x1bed69['attachments'][_0x2184f2][_0xb4cc('0x2b')]);_0x442d86[_0xb4cc('0x1d')][_0xb4cc('0x22')][_0xb4cc('0x17')]({'name':_0x133c21,'basename':_0x29d105,'type':_0x1bed69[_0xb4cc('0x22')][_0x2184f2]['contentType'],'filepath':_0x42c91d});}}}if(_0x1bed69[_0xb4cc('0x2c')]&&_0x1bed69['headerLines']['length']>0x0){var _0x3e428a=[_0xb4cc('0x2d'),_0xb4cc('0x2e'),_0xb4cc('0x2f')];for(var _0x133293=0x0;_0x133293<_0x1bed69['headerLines'][_0xb4cc('0x11')];_0x133293++){var _0x5509a7=_[_0xb4cc('0xf')](_0x3e428a,_0x1bed69[_0xb4cc('0x2c')][_0x133293][_0xb4cc('0x30')]);if(_0x5509a7>=0x0){_0x442d86[_0xb4cc('0x31')]=!![];}}}return _0x442d86;}exports[_0xb4cc('0x32')]=function(_0x35a6c8,_0x31521b,_0x2d5700){var _0xbbca42={'from':getAddress(_0x31521b[_0xb4cc('0x33')]),'firstName':getFirstName(_0x31521b[_0xb4cc('0x33')]),'lastName':getLastName(_0x31521b['from']),'mapKey':_0xb4cc('0x5'),'message':{'from':getMails(_0x35a6c8[_0xb4cc('0x5')],_0x31521b[_0xb4cc('0x33')]),'to':_0x35a6c8[_0xb4cc('0x5')],'cc':'','subject':_0x31521b['subject']||'','messageId':_0x31521b['messageId'],'inReplyTo':_0x31521b[_0xb4cc('0x34')],'sentAt':moment(_0x31521b[_0xb4cc('0x35')])['format'](_0xb4cc('0x36')),'attach':![],'attachments':[]}};if(!_0x31521b[_0xb4cc('0x14')]&&!_0x31521b[_0xb4cc('0x37')]){var _0x3785cf=_['filter'](_0x31521b[_0xb4cc('0x22')],{'contentType':_0xb4cc('0x38')});if(_0x3785cf[_0xb4cc('0x11')]){logger['info'](util[_0xb4cc('0x26')](_0xb4cc('0x39'),_0x31521b[_0xb4cc('0x3a')]));tnef[_0xb4cc('0x3b')](_[_0xb4cc('0x3c')](_0x3785cf)[_0xb4cc('0x2b')],function(_0x26caae,_0x303efa){if(_0x303efa){_0x31521b[_0xb4cc('0x14')]=_0x303efa['BodyHTML']||_0xb4cc('0x3d');if(_0x303efa['Attachments']){for(var _0x2b159b=0x0;_0x2b159b<_0x303efa[_0xb4cc('0x3e')][_0xb4cc('0x11')];_0x2b159b++){var _0x521740=_0x303efa[_0xb4cc('0x3e')][_0x2b159b];_0xbbca42[_0xb4cc('0x1d')][_0xb4cc('0x22')][_0xb4cc('0x17')]({'filename':_0x521740[_0xb4cc('0x3f')],'content':Buffer[_0xb4cc('0x33')](_0x521740[_0xb4cc('0x40')])});}}}_0x2d5700(parseEmail(_0x35a6c8,_0x31521b,_0xbbca42));});}else{_0x31521b[_0xb4cc('0x14')]='<p>Empty\x20message</p>';_0x2d5700(parseEmail(_0x35a6c8,_0x31521b,_0xbbca42));}}else{_0x2d5700(parseEmail(_0x35a6c8,_0x31521b,_0xbbca42));}};exports[_0xb4cc('0x41')]=function(_0x1e8e36){switch(_0x1e8e36){case _0xb4cc('0x42'):return _0xb4cc('0x43');case _0xb4cc('0x44'):return _0xb4cc('0x45');case _0xb4cc('0x46'):return'imap-mail.outlook.com';case _0xb4cc('0x47'):return _0xb4cc('0x48');}return'127.0.0.1';};
\ No newline at end of file
+var _0x96d8=['replace','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','originTo','message','attach','type','attachment','%s-%s','now','join','root','content','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','isAutoreply','parser','from','subject','messageId','inReplyTo','format','YYYY-MM-DD\x20HH:mm:ss','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','getHost','gmail','imap.mail.yahoo.com','hotmail','outlook365','outlook.office365.com','127.0.0.1','lodash','moment','randomstring','path','util','node-tnef','../../../config/logger','email','../../../config/environment','head','value','address','anonymous','generate','@xcally.com','name','substring','indexOf','split','length','Anonymous','pop','isEmpty','html','test','includes','<img','attachments','push'];(function(_0x5eb6a7,_0x4533c0){var _0x3896ab=function(_0x162114){while(--_0x162114){_0x5eb6a7['push'](_0x5eb6a7['shift']());}};_0x3896ab(++_0x4533c0);}(_0x96d8,0x1e2));var _0x896d=function(_0x145df3,_0x2044fb){_0x145df3=_0x145df3-0x0;var _0x4b27bb=_0x96d8[_0x145df3];return _0x4b27bb;};'use strict';var _=require(_0x896d('0x0'));var moment=require(_0x896d('0x1'));var random=require(_0x896d('0x2'));var fs=require('fs');var path=require(_0x896d('0x3'));var util=require(_0x896d('0x4'));var tnef=require(_0x896d('0x5'));var logger=require(_0x896d('0x6'))(_0x896d('0x7'));var config=require(_0x896d('0x8'));function getAddress(_0x384037){var _0x239960=_[_0x896d('0x9')](_0x384037[_0x896d('0xa')]);return _0x239960&&_0x239960[_0x896d('0xb')]?_0x239960['address']:_0x896d('0xc')+random[_0x896d('0xd')](0x6)+_0x896d('0xe');}function getFirstName(_0x280171){var _0x2790c0=_[_0x896d('0x9')](_0x280171[_0x896d('0xa')]);if(_0x2790c0&&_0x2790c0[_0x896d('0xf')]){if(_0x2790c0['name']==_0x2790c0[_0x896d('0xb')]){return _0x2790c0[_0x896d('0xf')][_0x896d('0x10')](0x0,_0x2790c0[_0x896d('0xf')][_0x896d('0x11')]('@'));}var _0x59590c=_0x2790c0[_0x896d('0xf')][_0x896d('0x12')](/\s+/);return _0x59590c[_0x896d('0x13')]>0x1?_0x59590c['slice'](0x0,-0x1)['join']('\x20'):_0x2790c0['name'];}return _0x896d('0x14');}function getLastName(_0x4a392f){var _0x72d0d1=_['head'](_0x4a392f['value']);if(_0x72d0d1&&_0x72d0d1[_0x896d('0xf')]){var _0x10d472=_0x72d0d1['name'][_0x896d('0x12')](/\s+/);return _0x10d472[_0x896d('0x13')]>0x1?_0x10d472[_0x896d('0x15')]():'';}return'';}function getMails(_0x332eba,_0x1cd959){var _0x28514a='';for(var _0x2adb40=0x0;_0x2adb40<_0x1cd959[_0x896d('0xa')][_0x896d('0x13')];_0x2adb40+=0x1){if(_0x1cd959['value'][_0x2adb40][_0x896d('0xb')]!==_0x332eba){if(!_[_0x896d('0x16')](_0x28514a)){_0x28514a+=',';}_0x28514a+=_0x1cd959['value'][_0x2adb40][_0x896d('0xf')]||_0x1cd959[_0x896d('0xa')][_0x2adb40][_0x896d('0xb')]||'';_0x28514a+='\x20<';_0x28514a+=_0x1cd959['value'][_0x2adb40][_0x896d('0xb')]?_0x1cd959[_0x896d('0xa')][_0x2adb40][_0x896d('0xb')]:_0x896d('0xc')+random['generate'](0x6)+_0x896d('0xe');_0x28514a+='>';}}return _0x28514a;}function parseEmail(_0xa7d681,_0x3e626a,_0xaa6c9e){if(_0x3e626a[_0x896d('0x17')]){var _0x1062fa=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x1062fa[_0x896d('0x18')](_0x3e626a[_0x896d('0x17')])){_0x3e626a[_0x896d('0x17')]=_0x3e626a[_0x896d('0x17')]['replace'](_0x1062fa,'');}if(_0x3e626a[_0x896d('0x17')][_0x896d('0x19')](_0x896d('0x1a'))){var _0xcd926=[];_0x3e626a[_0x896d('0x1b')]['forEach'](_0x5c5431=>{_0xcd926[_0x896d('0x1c')](_0x5c5431['filename']);});var _0x49985f=/<img.*? _SRC(.*?)[^>]+>/g;var _0x46e762=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x558921=_0x3e626a['html'][_0x896d('0x1d')](_0x46e762,_0x896d('0x1e'));var _0x36a04e=_0x558921[_0x896d('0x1d')](_0x49985f,_0x896d('0x1f'));for(let _0x449667=0x0;_0x449667<_0xcd926[_0x896d('0x13')];_0x449667++){var _0x5ecab6=_0x36a04e[_0x896d('0x1d')](_0x896d('0x1f'),_0x896d('0x20')+_0xcd926[_0x449667]+_0x896d('0x21'));_0x36a04e=_0x5ecab6;}_0x3e626a['html']=_0x36a04e;}_0xaa6c9e[_0x896d('0x22')]=_0x3e626a[_0x896d('0x17')];}else{_0xaa6c9e[_0x896d('0x22')]=_0x3e626a[_0x896d('0x23')];}if(_0xaa6c9e[_0x896d('0x22')]){_0xaa6c9e[_0x896d('0x22')]=_0xaa6c9e[_0x896d('0x22')]['replace'](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x3e626a['to']){_0xaa6c9e['message'][_0x896d('0x24')]=getMails(null,_0x3e626a['to']);var _0x4ce7d4=getMails(_0xa7d681[_0x896d('0x7')],_0x3e626a['to']);if(!_[_0x896d('0x16')](_0x4ce7d4)){_0xaa6c9e[_0x896d('0x25')]['cc']+=_0x4ce7d4;}}if(_0x3e626a['cc']){_0xaa6c9e[_0x896d('0x25')]['originCc']=getMails(null,_0x3e626a['cc']);var _0x272f3e=getMails(_0xa7d681[_0x896d('0x7')],_0x3e626a['cc']);if(!_[_0x896d('0x16')](_0x272f3e)){if(!_[_0x896d('0x16')](_0xaa6c9e[_0x896d('0x25')]['cc'])){_0xaa6c9e[_0x896d('0x25')]['cc']+=',';}_0xaa6c9e[_0x896d('0x25')]['cc']+=_0x272f3e;}}if(!_[_0x896d('0x19')](_0xaa6c9e[_0x896d('0x25')][_0x896d('0x24')],_0xa7d681[_0x896d('0x7')])&&!_[_0x896d('0x19')](_0xaa6c9e[_0x896d('0x25')]['originCc'],_0xa7d681[_0x896d('0x7')])){_0xaa6c9e[_0x896d('0x25')]['bcc']=_0xa7d681[_0x896d('0x7')];}if(_0x3e626a[_0x896d('0x1b')]&&_0x3e626a[_0x896d('0x1b')]['length']){_0xaa6c9e['message'][_0x896d('0x26')]=_0x3e626a[_0x896d('0x1b')][_0x896d('0x13')];for(var _0x4ce9c3=0x0,_0x322435,_0x2a092b,_0x502050;_0x4ce9c3<_0x3e626a[_0x896d('0x1b')][_0x896d('0x13')];_0x4ce9c3+=0x1){if(_0x3e626a[_0x896d('0x1b')][_0x4ce9c3][_0x896d('0x27')]===_0x896d('0x28')){_0x502050=_0x3e626a[_0x896d('0x1b')][_0x4ce9c3]['filename']||'attachment-'+_0x4ce9c3;_0x322435=util['format'](_0x896d('0x29'),Date[_0x896d('0x2a')](),_0x502050);_0x2a092b=path[_0x896d('0x2b')](config[_0x896d('0x2c')],'server/files/attachments/',_0x322435);fs['writeFileSync'](_0x2a092b,_0x3e626a[_0x896d('0x1b')][_0x4ce9c3][_0x896d('0x2d')]);_0xaa6c9e['message']['attachments'][_0x896d('0x1c')]({'name':_0x502050,'basename':_0x322435,'type':_0x3e626a[_0x896d('0x1b')][_0x4ce9c3]['contentType'],'filepath':_0x2a092b});}}}if(_0x3e626a[_0x896d('0x2e')]&&_0x3e626a[_0x896d('0x2e')][_0x896d('0x13')]>0x0){var _0x3367b8=[_0x896d('0x2f'),_0x896d('0x30'),'Precedence:\x20auto_reply'];for(var _0x56fd00=0x0;_0x56fd00<_0x3e626a[_0x896d('0x2e')][_0x896d('0x13')];_0x56fd00++){var _0x179cbf=_['indexOf'](_0x3367b8,_0x3e626a[_0x896d('0x2e')][_0x56fd00]['line']);if(_0x179cbf>=0x0){_0xaa6c9e[_0x896d('0x31')]=!![];}}}return _0xaa6c9e;}exports[_0x896d('0x32')]=function(_0x139a58,_0x4a4c90,_0x1701b0){var _0x29ade2={'from':getAddress(_0x4a4c90[_0x896d('0x33')]),'firstName':getFirstName(_0x4a4c90['from']),'lastName':getLastName(_0x4a4c90[_0x896d('0x33')]),'mapKey':'email','message':{'from':getMails(_0x139a58[_0x896d('0x7')],_0x4a4c90[_0x896d('0x33')]),'to':_0x139a58[_0x896d('0x7')],'cc':'','subject':_0x4a4c90[_0x896d('0x34')]||'','messageId':_0x4a4c90[_0x896d('0x35')],'inReplyTo':_0x4a4c90[_0x896d('0x36')],'sentAt':moment(_0x4a4c90['date'])[_0x896d('0x37')](_0x896d('0x38')),'attach':![],'attachments':[]}};if(!_0x4a4c90[_0x896d('0x17')]&&!_0x4a4c90['textAsHtml']){var _0x1f15fc=_['filter'](_0x4a4c90[_0x896d('0x1b')],{'contentType':'application/ms-tnef'});if(_0x1f15fc[_0x896d('0x13')]){logger[_0x896d('0x39')](util[_0x896d('0x37')](_0x896d('0x3a'),_0x4a4c90[_0x896d('0x35')]));tnef[_0x896d('0x3b')](_[_0x896d('0x3c')](_0x1f15fc)[_0x896d('0x2d')],function(_0xfda4a5,_0x2d2594){if(_0x2d2594){_0x4a4c90[_0x896d('0x17')]=_0x2d2594[_0x896d('0x3d')]||_0x896d('0x3e');if(_0x2d2594[_0x896d('0x3f')]){for(var _0x7860dc=0x0;_0x7860dc<_0x2d2594['Attachments'][_0x896d('0x13')];_0x7860dc++){var _0x4649cb=_0x2d2594[_0x896d('0x3f')][_0x7860dc];_0x29ade2[_0x896d('0x25')][_0x896d('0x1b')][_0x896d('0x1c')]({'filename':_0x4649cb[_0x896d('0x40')],'content':Buffer[_0x896d('0x33')](_0x4649cb[_0x896d('0x41')])});}}}_0x1701b0(parseEmail(_0x139a58,_0x4a4c90,_0x29ade2));});}else{_0x4a4c90[_0x896d('0x17')]=_0x896d('0x3e');_0x1701b0(parseEmail(_0x139a58,_0x4a4c90,_0x29ade2));}}else{_0x1701b0(parseEmail(_0x139a58,_0x4a4c90,_0x29ade2));}};exports[_0x896d('0x42')]=function(_0x3a912e){switch(_0x3a912e){case _0x896d('0x43'):return'imap.gmail.com';case'yahoo':return _0x896d('0x44');case _0x896d('0x45'):return'imap-mail.outlook.com';case _0x896d('0x46'):return _0x896d('0x47');}return _0x896d('0x48');};
\ No newline at end of file
index f0cc45b..29a09e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8556=['lodash','name','key','SERV','active','Imap','Smtp','exports'];(function(_0x18b849,_0x67bc7f){var _0x17a319=function(_0x793114){while(--_0x793114){_0x18b849['push'](_0x18b849['shift']());}};_0x17a319(++_0x67bc7f);}(_0x8556,0x1e0));var _0x6855=function(_0x5e6c43,_0x132a12){_0x5e6c43=_0x5e6c43-0x0;var _0x23d90e=_0x8556[_0x5e6c43];return _0x23d90e;};'use strict';var _=require(_0x6855('0x0'));function MailAccount(_0x322bb2){this['id']=_0x322bb2['id']||0x0;this['name']=_0x322bb2[_0x6855('0x1')]||'Service';this[_0x6855('0x2')]=_0x322bb2[_0x6855('0x2')]||_0x6855('0x3');this[_0x6855('0x4')]=_0x322bb2[_0x6855('0x4')]||![];this['Imap']=_0x322bb2[_0x6855('0x5')]||[];this['Smtp']=_0x322bb2[_0x6855('0x6')]||[];}module[_0x6855('0x7')]=MailAccount;
\ No newline at end of file
+var _0x5e9d=['SERV','active','Imap','Smtp','lodash','name','Service','key'];(function(_0x130fc1,_0x37c5a2){var _0x580652=function(_0x37b588){while(--_0x37b588){_0x130fc1['push'](_0x130fc1['shift']());}};_0x580652(++_0x37c5a2);}(_0x5e9d,0x134));var _0xd5e9=function(_0x278f84,_0xd5c5a5){_0x278f84=_0x278f84-0x0;var _0x10cbd5=_0x5e9d[_0x278f84];return _0x10cbd5;};'use strict';var _=require(_0xd5e9('0x0'));function MailAccount(_0x5503ee){this['id']=_0x5503ee['id']||0x0;this[_0xd5e9('0x1')]=_0x5503ee[_0xd5e9('0x1')]||_0xd5e9('0x2');this[_0xd5e9('0x3')]=_0x5503ee['key']||_0xd5e9('0x4');this[_0xd5e9('0x5')]=_0x5503ee['active']||![];this[_0xd5e9('0x6')]=_0x5503ee[_0xd5e9('0x6')]||[];this['Smtp']=_0x5503ee[_0xd5e9('0x7')]||[];}module['exports']=MailAccount;
\ No newline at end of file
index 65c7b16..e378e40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ca9=['../model/mailAccount','mailAccounts','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initMailAccounts','length','isUndefined','merge','exports','lodash'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x6ca9,0x8f));var _0x96ca=function(_0x7c87ee,_0x46c045){_0x7c87ee=_0x7c87ee-0x0;var _0x4b6d3d=_0x6ca9[_0x7c87ee];return _0x4b6d3d;};'use strict';var _=require(_0x96ca('0x0'));var MailAccount=require(_0x96ca('0x1'));var Realtime=function(){this[_0x96ca('0x2')]={};};function freeIsNotKey(_0x25290a,_0x11b9c4,_0x320814){var _0x4f1f3e=_[_0x96ca('0x3')](_0x25290a,function(_0x843790,_0x578c35){return _0x843790[_0x320814];});for(var _0x95d132 in _0x11b9c4){if(_0x11b9c4[_0x96ca('0x4')](_0x95d132)){if(!_0x4f1f3e[_0x95d132]){delete _0x11b9c4[_0x95d132];}}}}Realtime[_0x96ca('0x5')][_0x96ca('0x6')]=function(_0xfa763f,_0x175a17){for(var _0x5a177b in _0x175a17){if(_0xfa763f[_0x96ca('0x4')](_0x5a177b)){_0xfa763f[_0x5a177b]=_0x175a17[_0x5a177b];}}};Realtime[_0x96ca('0x5')][_0x96ca('0x7')]=function(){var _0xf162dc=this;return function(_0x9c708d){if(_0x9c708d){freeIsNotKey(_0x9c708d,_0xf162dc[_0x96ca('0x2')],'id');for(var _0x3481ca=0x0,_0x2086d8={},_0x3c14bf={};_0x3481ca<_0x9c708d[_0x96ca('0x8')];_0x3481ca+=0x1){_0x2086d8=_0x9c708d[_0x3481ca];if(_[_0x96ca('0x9')](_0xf162dc[_0x96ca('0x2')][_0x2086d8['id']])){_0xf162dc[_0x96ca('0x2')][_0x2086d8['id']]=new MailAccount(_0x2086d8);}else{_[_0x96ca('0xa')](_0xf162dc[_0x96ca('0x2')][_0x2086d8['id']],_0x2086d8);}}}return _0xf162dc[_0x96ca('0x2')];};};module[_0x96ca('0xb')]=Realtime;
\ No newline at end of file
+var _0x0ab4=['exports','lodash','../model/mailAccount','mailAccounts','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','isUndefined'];(function(_0x3f3053,_0x3940c9){var _0x105221=function(_0x98d89){while(--_0x98d89){_0x3f3053['push'](_0x3f3053['shift']());}};_0x105221(++_0x3940c9);}(_0x0ab4,0x145));var _0x40ab=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0ab4[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x40ab('0x0'));var MailAccount=require(_0x40ab('0x1'));var Realtime=function(){this[_0x40ab('0x2')]={};};function freeIsNotKey(_0xb5e048,_0x2ea6d4,_0xe80cf6){var _0x8cf68c=_[_0x40ab('0x3')](_0xb5e048,function(_0x2275b9,_0x22e1ac){return _0x2275b9[_0xe80cf6];});for(var _0x176aa2 in _0x2ea6d4){if(_0x2ea6d4[_0x40ab('0x4')](_0x176aa2)){if(!_0x8cf68c[_0x176aa2]){delete _0x2ea6d4[_0x176aa2];}}}}Realtime[_0x40ab('0x5')][_0x40ab('0x6')]=function(_0x29da88,_0x4902fb){for(var _0x249b3d in _0x4902fb){if(_0x29da88['hasOwnProperty'](_0x249b3d)){_0x29da88[_0x249b3d]=_0x4902fb[_0x249b3d];}}};Realtime['prototype']['initMailAccounts']=function(){var _0x16cee1=this;return function(_0x3a27a2){if(_0x3a27a2){freeIsNotKey(_0x3a27a2,_0x16cee1[_0x40ab('0x2')],'id');for(var _0x8b9ff=0x0,_0x2ff133={},_0x1c07df={};_0x8b9ff<_0x3a27a2['length'];_0x8b9ff+=0x1){_0x2ff133=_0x3a27a2[_0x8b9ff];if(_[_0x40ab('0x7')](_0x16cee1['mailAccounts'][_0x2ff133['id']])){_0x16cee1[_0x40ab('0x2')][_0x2ff133['id']]=new MailAccount(_0x2ff133);}else{_['merge'](_0x16cee1[_0x40ab('0x2')][_0x2ff133['id']],_0x2ff133);}}}return _0x16cee1[_0x40ab('0x2')];};};module[_0x40ab('0x8')]=Realtime;
\ No newline at end of file
index 5dde105..8cdb262 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4a6=['MailServerIn','Imap','Smtp','getMailAccount','notify','NotifyMailAccount','../client','getMailAccounts','Request','GetMailAccount','name','email','active','key','ListId','TemplateId'];(function(_0x4055cb,_0x5e6ce8){var _0x59a264=function(_0x405d62){while(--_0x405d62){_0x4055cb['push'](_0x4055cb['shift']());}};_0x59a264(++_0x5e6ce8);}(_0xc4a6,0x106));var _0x6c4a=function(_0x4502f1,_0x5720d6){_0x4502f1=_0x4502f1-0x0;var _0x4544dc=_0xc4a6[_0x4502f1];return _0x4544dc;};'use strict';var client=require(_0x6c4a('0x0'));exports[_0x6c4a('0x1')]=function(){return function(){return client[_0x6c4a('0x2')](_0x6c4a('0x3'),{'options':{'attributes':['id',_0x6c4a('0x4'),'service',_0x6c4a('0x5'),_0x6c4a('0x6'),_0x6c4a('0x7'),_0x6c4a('0x8'),_0x6c4a('0x9')],'raw':![],'include':[{'model':_0x6c4a('0xa'),'as':_0x6c4a('0xb')},{'model':'MailServerOut','as':_0x6c4a('0xc')}]},'log':_0x6c4a('0xd')});};};exports[_0x6c4a('0xe')]=function(_0x3b40e9,_0x5ed0aa){return client[_0x6c4a('0x2')](_0x6c4a('0xf'),{'account':{'id':_0x3b40e9},'body':_0x5ed0aa,'log':_0x6c4a('0xf')});};
\ No newline at end of file
+var _0xad3e=['notify','../client','getMailAccounts','Request','GetMailAccount','name','service','active','key','ListId','TemplateId','MailServerIn','Imap','MailServerOut'];(function(_0xa1671c,_0x57700d){var _0x2107f0=function(_0x436e27){while(--_0x436e27){_0xa1671c['push'](_0xa1671c['shift']());}};_0x2107f0(++_0x57700d);}(_0xad3e,0xa9));var _0xead3=function(_0xa65441,_0x436f86){_0xa65441=_0xa65441-0x0;var _0x3e73e2=_0xad3e[_0xa65441];return _0x3e73e2;};'use strict';var client=require(_0xead3('0x0'));exports[_0xead3('0x1')]=function(){return function(){return client[_0xead3('0x2')](_0xead3('0x3'),{'options':{'attributes':['id',_0xead3('0x4'),_0xead3('0x5'),'email',_0xead3('0x6'),_0xead3('0x7'),_0xead3('0x8'),_0xead3('0x9')],'raw':![],'include':[{'model':_0xead3('0xa'),'as':_0xead3('0xb')},{'model':_0xead3('0xc'),'as':'Smtp'}]},'log':'getMailAccount'});};};exports[_0xead3('0xd')]=function(_0x26c061,_0x496060){return client[_0xead3('0x2')]('NotifyMailAccount',{'account':{'id':_0x26c061},'body':_0x496060,'log':'NotifyMailAccount'});};
\ No newline at end of file
index b6bb048..adfe0d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4046=['GetSettings','../client','getSettings','Request','ShowSetting','loginMailFrequency'];(function(_0x18fc74,_0x143b78){var _0x233df6=function(_0x3c8068){while(--_0x3c8068){_0x18fc74['push'](_0x18fc74['shift']());}};_0x233df6(++_0x143b78);}(_0x4046,0x193));var _0x6404=function(_0x430e74,_0x41cf39){_0x430e74=_0x430e74-0x0;var _0xc5b842=_0x4046[_0x430e74];return _0xc5b842;};'use strict';var client=require(_0x6404('0x0'));exports[_0x6404('0x1')]=function(){return client[_0x6404('0x2')](_0x6404('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x6404('0x4')]},'log':_0x6404('0x5')});};
\ No newline at end of file
+var _0x72f4=['ShowSetting','loginMailFrequency','GetSettings','getSettings','Request'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x72f4,0x116));var _0x472f=function(_0x3bf8b1,_0x529616){_0x3bf8b1=_0x3bf8b1-0x0;var _0x4f54d5=_0x72f4[_0x3bf8b1];return _0x4f54d5;};'use strict';var client=require('../client');exports[_0x472f('0x0')]=function(){return client[_0x472f('0x1')](_0x472f('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x472f('0x3')]},'log':_0x472f('0x4')});};
\ No newline at end of file
index c5cef32..ea50ef1 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(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xa9e0[_0x28947d];return _0x12d2ee;};'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(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xa9e0[_0x3c4737];return _0x2bb926;};'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 59707c6..99b467b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80ed=['exports','lodash','http','express','ioredis','../../config/environment','createServer','timeout','listen','port','websocket','polling','redis','defaults','localhost','adapter','socket.io-redis','default','listening','Express\x20server\x20listening\x20on\x20port\x20%d!'];(function(_0x11af82,_0x5b9a76){var _0x4fc581=function(_0x5b6b82){while(--_0x5b6b82){_0x11af82['push'](_0x11af82['shift']());}};_0x4fc581(++_0x5b9a76);}(_0x80ed,0x65));var _0xd80e=function(_0x3bc419,_0x461134){_0x3bc419=_0x3bc419-0x0;var _0xfe1bd3=_0x80ed[_0x3bc419];return _0xfe1bd3;};'use strict';var _=require(_0xd80e('0x0'));var http=require(_0xd80e('0x1'));var express=require(_0xd80e('0x2'));var sticky=require('sticky-session');var Redis=require(_0xd80e('0x3'));var config=require(_0xd80e('0x4'));var app=express();var server=http[_0xd80e('0x5')](app);server[_0xd80e('0x6')]=0xdbba0;if(sticky[_0xd80e('0x7')](server,config[_0xd80e('0x8')])){var socketio=require('socket.io')(server,{'transports':[_0xd80e('0x9'),_0xd80e('0xa')]});config[_0xd80e('0xb')]=_[_0xd80e('0xc')](config[_0xd80e('0xb')],{'host':_0xd80e('0xd'),'port':0x18eb});socketio[_0xd80e('0xe')](require(_0xd80e('0xf'))({'pubClient':new Redis(config[_0xd80e('0xb')]),'subClient':new Redis(config[_0xd80e('0xb')])}));require('../../config/triggers')['default']();require('../../config/socketio')[_0xd80e('0x10')](socketio);require('../../config/express')[_0xd80e('0x10')](app);require('../../routes')['default'](app);}else{server['once'](_0xd80e('0x11'),function(){console['log'](_0xd80e('0x12'),config[_0xd80e('0x8')]);});}exports=module[_0xd80e('0x13')]=app;
\ No newline at end of file
+var _0x09d8=['defaults','localhost','adapter','../../config/triggers','default','../../config/socketio','../../routes','once','listening','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','express','ioredis','../../config/environment','createServer','timeout','port','socket.io','polling','redis'];(function(_0x82fe24,_0x27404d){var _0x4ba97c=function(_0x190828){while(--_0x190828){_0x82fe24['push'](_0x82fe24['shift']());}};_0x4ba97c(++_0x27404d);}(_0x09d8,0xbf));var _0x809d=function(_0xbbff90,_0x43494d){_0xbbff90=_0xbbff90-0x0;var _0x5aa508=_0x09d8[_0xbbff90];return _0x5aa508;};'use strict';var _=require('lodash');var http=require('http');var express=require(_0x809d('0x0'));var sticky=require('sticky-session');var Redis=require(_0x809d('0x1'));var config=require(_0x809d('0x2'));var app=express();var server=http[_0x809d('0x3')](app);server[_0x809d('0x4')]=0xdbba0;if(sticky['listen'](server,config[_0x809d('0x5')])){var socketio=require(_0x809d('0x6'))(server,{'transports':['websocket',_0x809d('0x7')]});config[_0x809d('0x8')]=_[_0x809d('0x9')](config['redis'],{'host':_0x809d('0xa'),'port':0x18eb});socketio[_0x809d('0xb')](require('socket.io-redis')({'pubClient':new Redis(config[_0x809d('0x8')]),'subClient':new Redis(config['redis'])}));require(_0x809d('0xc'))[_0x809d('0xd')]();require(_0x809d('0xe'))[_0x809d('0xd')](socketio);require('../../config/express')[_0x809d('0xd')](app);require(_0x809d('0xf'))['default'](app);}else{server[_0x809d('0x10')](_0x809d('0x11'),function(){console['log'](_0x809d('0x12'),config[_0x809d('0x5')]);});}exports=module[_0x809d('0x13')]=app;
\ No newline at end of file
index 382ad3e..825665f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24a4=['routing','client','http','Request','request','debug','rpc','error','message','result','exports','jayson/promise','bluebird'];(function(_0x4a9433,_0x5337cb){var _0x434947=function(_0x3ab6cd){while(--_0x3ab6cd){_0x4a9433['push'](_0x4a9433['shift']());}};_0x434947(++_0x5337cb);}(_0x24a4,0x177));var _0x424a=function(_0x1fe5bc,_0x4af866){_0x1fe5bc=_0x1fe5bc-0x0;var _0x3f8f68=_0x24a4[_0x1fe5bc];return _0x3f8f68;};'use strict';var jayson=require(_0x424a('0x0'));var BPromise=require(_0x424a('0x1'));var logger=require('../../config/logger')(_0x424a('0x2'));var client=jayson[_0x424a('0x3')][_0x424a('0x4')]({'port':0x2329});client[_0x424a('0x5')]=function(_0x27e9f3,_0x5c9771){return new BPromise(function(_0x5bee80,_0x1d0ced){return client[_0x424a('0x6')](_0x27e9f3,_0x5c9771)['then'](function(_0x31cb81){logger[_0x424a('0x7')](_0x424a('0x8'),'routing',_0x27e9f3,_0x5c9771,_0x31cb81);if(_0x31cb81[_0x424a('0x9')]){logger['error'](_0x424a('0x8'),'routing',_0x27e9f3,_0x31cb81['error'][_0x424a('0xa')],_0x5c9771);return _0x1d0ced(_0x31cb81['error'][_0x424a('0xa')]);}else{return _0x5bee80(_0x31cb81[_0x424a('0xb')]);}})['catch'](function(_0x407301){logger[_0x424a('0x9')](_0x424a('0x8'),_0x424a('0x2'),_0x27e9f3,_0x407301,_0x5c9771);return _0x1d0ced(_0x407301);});});};module[_0x424a('0xc')]=client;
\ No newline at end of file
+var _0x91b0=['../../config/logger','routing','client','http','Request','request','debug','rpc','error','message','result','catch','exports','jayson/promise','bluebird'];(function(_0x242a4f,_0x369c57){var _0x122117=function(_0x55a797){while(--_0x55a797){_0x242a4f['push'](_0x242a4f['shift']());}};_0x122117(++_0x369c57);}(_0x91b0,0x11b));var _0x091b=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0x91b0[_0x24237f];return _0x48298e;};'use strict';var jayson=require(_0x091b('0x0'));var BPromise=require(_0x091b('0x1'));var logger=require(_0x091b('0x2'))(_0x091b('0x3'));var client=jayson[_0x091b('0x4')][_0x091b('0x5')]({'port':0x2329});client[_0x091b('0x6')]=function(_0x2717f8,_0x3e5834){return new BPromise(function(_0x55df2a,_0x55ed64){return client[_0x091b('0x7')](_0x2717f8,_0x3e5834)['then'](function(_0x556cf2){logger[_0x091b('0x8')](_0x091b('0x9'),_0x091b('0x3'),_0x2717f8,_0x3e5834,_0x556cf2);if(_0x556cf2[_0x091b('0xa')]){logger[_0x091b('0xa')]('rpc',_0x091b('0x3'),_0x2717f8,_0x556cf2[_0x091b('0xa')][_0x091b('0xb')],_0x3e5834);return _0x55ed64(_0x556cf2['error'][_0x091b('0xb')]);}else{return _0x55df2a(_0x556cf2[_0x091b('0xc')]);}})[_0x091b('0xd')](function(_0x30ad6f){logger[_0x091b('0xa')](_0x091b('0x9'),_0x091b('0x3'),_0x2717f8,_0x30ad6f,_0x3e5834);return _0x55ed64(_0x30ad6f);});});};module[_0x091b('0xe')]=client;
\ No newline at end of file
index 3c8830e..1461b25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8175=['initSmsQueues','getMailQueues','initMailQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','catch','bluebird','./server','./realtime','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve','then','getAgents','initAgents','getIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','getSmsQueues'];(function(_0x3c8b20,_0x55eb5c){var _0x520716=function(_0x14affd){while(--_0x14affd){_0x3c8b20['push'](_0x3c8b20['shift']());}};_0x520716(++_0x55eb5c);}(_0x8175,0xc7));var _0x5817=function(_0x5b58d6,_0x3043cd){_0x5b58d6=_0x5b58d6-0x0;var _0x13e026=_0x8175[_0x5b58d6];return _0x13e026;};'use strict';var BPromise=require(_0x5817('0x0'));var server=require(_0x5817('0x1'));var Realtime=require(_0x5817('0x2'));var user=require(_0x5817('0x3'));var interval=require(_0x5817('0x4'));var openchannelQueue=require(_0x5817('0x5'));var chatQueue=require('./rpc/chatQueue');var smsQueue=require('./rpc/smsQueue');var mailQueue=require('./rpc/mailQueue');var faxQueue=require(_0x5817('0x6'));var whatsappQueue=require(_0x5817('0x7'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x5817('0x8')]()[_0x5817('0x9')](user[_0x5817('0xa')]())[_0x5817('0x9')](realtime[_0x5817('0xb')]())[_0x5817('0x9')](interval[_0x5817('0xc')]())[_0x5817('0x9')](realtime['initIntervals']())['then'](openchannelQueue[_0x5817('0xd')]())[_0x5817('0x9')](realtime[_0x5817('0xe')]())[_0x5817('0x9')](chatQueue[_0x5817('0xf')]())[_0x5817('0x9')](realtime['initChatQueues']())[_0x5817('0x9')](smsQueue[_0x5817('0x10')]())[_0x5817('0x9')](realtime[_0x5817('0x11')]())['then'](mailQueue[_0x5817('0x12')]())['then'](realtime[_0x5817('0x13')]())['then'](faxQueue['getFaxQueues']())['then'](realtime[_0x5817('0x14')]())[_0x5817('0x9')](whatsappQueue[_0x5817('0x15')]())['then'](realtime[_0x5817('0x16')]())[_0x5817('0x9')](function(){return realtime;});}function main(){return server['listen'](realtime)[_0x5817('0x9')](function(_0x3bc8a8){return initRealtime();})[_0x5817('0x9')](function(_0x51f79a){return setInterval(initRealtime,0x1388);})[_0x5817('0x17')](function(_0xd473ed){console['log'](_0xd473ed);});}main();
\ No newline at end of file
+var _0xcd31=['getIntervals','initIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initChatQueues','getMailQueues','initMailQueues','getFaxQueues','getWhatsappQueues','listen','catch','log','./server','./realtime','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/whatsappQueue','then','initAgents'];(function(_0x1d522f,_0x20749b){var _0x9ccbef=function(_0x43345e){while(--_0x43345e){_0x1d522f['push'](_0x1d522f['shift']());}};_0x9ccbef(++_0x20749b);}(_0xcd31,0x109));var _0x1cd3=function(_0x4e0733,_0xdd89d1){_0x4e0733=_0x4e0733-0x0;var _0x1879b8=_0xcd31[_0x4e0733];return _0x1879b8;};'use strict';var BPromise=require('bluebird');var server=require(_0x1cd3('0x0'));var Realtime=require(_0x1cd3('0x1'));var user=require('./rpc/user');var interval=require('./rpc/interval');var openchannelQueue=require('./rpc/openchannelQueue');var chatQueue=require(_0x1cd3('0x2'));var smsQueue=require(_0x1cd3('0x3'));var mailQueue=require(_0x1cd3('0x4'));var faxQueue=require('./rpc/faxQueue');var whatsappQueue=require(_0x1cd3('0x5'));var realtime=new Realtime();function initRealtime(){return BPromise['resolve']()['then'](user['getAgents']())[_0x1cd3('0x6')](realtime[_0x1cd3('0x7')]())[_0x1cd3('0x6')](interval[_0x1cd3('0x8')]())[_0x1cd3('0x6')](realtime[_0x1cd3('0x9')]())[_0x1cd3('0x6')](openchannelQueue[_0x1cd3('0xa')]())[_0x1cd3('0x6')](realtime[_0x1cd3('0xb')]())[_0x1cd3('0x6')](chatQueue[_0x1cd3('0xc')]())[_0x1cd3('0x6')](realtime[_0x1cd3('0xd')]())[_0x1cd3('0x6')](smsQueue['getSmsQueues']())[_0x1cd3('0x6')](realtime['initSmsQueues']())['then'](mailQueue[_0x1cd3('0xe')]())[_0x1cd3('0x6')](realtime[_0x1cd3('0xf')]())[_0x1cd3('0x6')](faxQueue[_0x1cd3('0x10')]())[_0x1cd3('0x6')](realtime['initFaxQueues']())[_0x1cd3('0x6')](whatsappQueue[_0x1cd3('0x11')]())[_0x1cd3('0x6')](realtime['initWhatsappQueues']())['then'](function(){return realtime;});}function main(){return server[_0x1cd3('0x12')](realtime)[_0x1cd3('0x6')](function(_0x23062f){return initRealtime();})['then'](function(_0x16d1bd){return setInterval(initRealtime,0x1388);})[_0x1cd3('0x13')](function(_0x54c771){console[_0x1cd3('0x14')](_0x54c771);});}main();
\ No newline at end of file
index 6a3dde1..251f282 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x5b9a30,_0x2b3667){var _0x35f722=function(_0xfb962b){while(--_0xfb962b){_0x5b9a30['push'](_0x5b9a30['shift']());}};_0x35f722(++_0x2b3667);}(_0x5fc3,0xa8));var _0x35fc=function(_0x4c7935,_0x4a53fb){_0x4c7935=_0x4c7935-0x0;var _0x30651d=_0x5fc3[_0x4c7935];return _0x30651d;};'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
+var _0x814b=['init','parse','map','object','lodash','util','events','EventEmitter','isNil','register','ignoreFactChanges','inherits','prototype','rules','isArray','concat','isObject','push','sync','filter','activeRules','orderBy','asc','execute','result','clone','name','ruleRef','call','next','isEqual','nextTick','restart','length','condition','matchPath','noop','findRules','matches','turn','prioritize','priority','toJSON','toString','consequence','fromJSON'];(function(_0x3da7ab,_0x2e00dc){var _0x4819ed=function(_0x484ce3){while(--_0x484ce3){_0x3da7ab['push'](_0x3da7ab['shift']());}};_0x4819ed(++_0x2e00dc);}(_0x814b,0x1a2));var _0xb814=function(_0x5b1aed,_0x322c17){_0x5b1aed=_0x5b1aed-0x0;var _0x26add8=_0x814b[_0x5b1aed];return _0x26add8;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var EventEmitter=require(_0xb814('0x2'))[_0xb814('0x3')];function RuleEngine(_0xfbb64b,_0x477725){this['init']();if(!_[_0xb814('0x4')](_0xfbb64b)){this[_0xb814('0x5')](_0xfbb64b);}if(_0x477725){this[_0xb814('0x6')]=_0x477725[_0xb814('0x6')];}return this;}util[_0xb814('0x7')](RuleEngine,EventEmitter);RuleEngine[_0xb814('0x8')]['init']=function(_0x3b0829){this[_0xb814('0x9')]=[];this['activeRules']=[];};RuleEngine[_0xb814('0x8')][_0xb814('0x5')]=function(_0x186d5a){if(Array[_0xb814('0xa')](_0x186d5a)){this[_0xb814('0x9')]=this[_0xb814('0x9')][_0xb814('0xb')](_0x186d5a);}else if(_0x186d5a!==null&&_[_0xb814('0xc')](_0x186d5a)){this[_0xb814('0x9')][_0xb814('0xd')](_0x186d5a);}this[_0xb814('0xe')]();};RuleEngine['prototype'][_0xb814('0xe')]=function(){this['activeRules']=this[_0xb814('0x9')][_0xb814('0xf')](function(_0x35b10d){if(_[_0xb814('0x4')](_0x35b10d['on'])){_0x35b10d['on']=!![];}if(_0x35b10d['on']===!![]){return _0x35b10d;}});this[_0xb814('0x10')]=_[_0xb814('0x11')](this[_0xb814('0x10')],['p'],[_0xb814('0x12')]);};RuleEngine[_0xb814('0x8')][_0xb814('0x13')]=function(_0x3f4881,_0x44fb96){var _0x17f5bd=![];_0x3f4881[_0xb814('0x14')]=!![];var _0x303aca=_[_0xb814('0x15')](_0x3f4881);var _0x45e0d0=_[_0xb814('0x15')](_0x3f4881);var _0x125ce2=this[_0xb814('0x10')];var _0x7a21ef=[];var _0x48c9df=this[_0xb814('0x6')];(function FnRuleLoop(_0x55ba16){var _0x270598={'rules':function(){return _0x125ce2;},'rule':function(){return _0x125ce2[_0x55ba16];},'when':function(_0xfac75b){if(_0xfac75b){var _0x4c3007=_0x125ce2[_0x55ba16]['consequence'];_0x4c3007['ruleRef']=_0x125ce2[_0x55ba16]['id']||_0x125ce2[_0x55ba16][_0xb814('0x16')]||'index_'+_0x55ba16;process['nextTick'](function(){_0x7a21ef[_0xb814('0xd')](_0x4c3007[_0xb814('0x17')]);_0x4c3007[_0xb814('0x18')](_0x303aca,_0x270598);});}else{process['nextTick'](function(){_0x270598[_0xb814('0x19')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x17f5bd=!![];return FnRuleLoop(0x0);},'next':function(_0x531032){if(!_0x48c9df&&!_[_0xb814('0x1a')](_0x45e0d0,_0x303aca)){_0x45e0d0=_[_0xb814('0x15')](_0x303aca);process[_0xb814('0x1b')](function(){_0x270598[_0xb814('0x1c')]();});}else{process[_0xb814('0x1b')](function(){if(_[_0xb814('0x4')](_0x531032)){return FnRuleLoop(_0x55ba16+0x1);}else{return FnRuleLoop(_0x531032);}});}}};if(_0x55ba16<_0x125ce2[_0xb814('0x1d')]&&_0x17f5bd===![]){var _0x594470=_0x125ce2[_0x55ba16][_0xb814('0x1e')];_0x594470['call'](_0x303aca,_0x270598);}else{process[_0xb814('0x1b')](function(){_0x303aca[_0xb814('0x1f')]=_0x7a21ef;return _0x44fb96?_0x44fb96(_0x303aca):_[_0xb814('0x20')]();});}}(0x0));};RuleEngine[_0xb814('0x8')][_0xb814('0x21')]=function(_0xb9e57d){if(_[_0xb814('0x4')](_0xb9e57d)){return this['rules'];}else{var _0x392222=_[_0xb814('0x22')](_0xb9e57d);return _[_0xb814('0xf')](this[_0xb814('0x9')],_0x392222);}};RuleEngine[_0xb814('0x8')][_0xb814('0x23')]=function(_0x3f0150,_0x1e4e89){var _0x5a6291=_0x3f0150==='on'||_0x3f0150==='ON'?!![]:![];var _0x271aa8=this[_0xb814('0x21')](_0x1e4e89);for(var _0x52ed64=0x0,_0x9008b2=_0x271aa8[_0xb814('0x1d')];_0x52ed64<_0x9008b2;_0x52ed64+=0x1){_0x271aa8[_0x52ed64]['on']=_0x5a6291;}this[_0xb814('0xe')]();};RuleEngine['prototype'][_0xb814('0x24')]=function(_0x2051d0,_0x58c3ca){_0x2051d0=parseInt(_0x2051d0,0xa);var _0x338a28=this['findRules'](_0x58c3ca);for(var _0x6efe9a=0x0,_0x5f3e9b=_0x338a28['length'];_0x6efe9a<_0x5f3e9b;_0x6efe9a+=0x1){_0x338a28[_0x6efe9a][_0xb814('0x25')]=_0x2051d0;}this['sync']();};RuleEngine[_0xb814('0x8')][_0xb814('0x26')]=function(){var _0x2b91bd=this['rules'];if(_0x2b91bd instanceof Array){_0x2b91bd=_0x2b91bd['map'](function(_0x26d3a9){_0x26d3a9[_0xb814('0x1e')]=_0x26d3a9['condition'][_0xb814('0x27')]();_0x26d3a9[_0xb814('0x28')]=_0x26d3a9[_0xb814('0x28')][_0xb814('0x27')]();return _0x26d3a9;});}else if(!_[_0xb814('0x4')](_0x2b91bd)){_0x2b91bd[_0xb814('0x1e')]=_0x2b91bd[_0xb814('0x1e')]['toString']();_0x2b91bd[_0xb814('0x28')]=_0x2b91bd[_0xb814('0x28')][_0xb814('0x27')]();}return _0x2b91bd;};RuleEngine[_0xb814('0x8')][_0xb814('0x29')]=function(_0x4ff31a){this[_0xb814('0x2a')]();if(_['isString'](_0x4ff31a)){_0x4ff31a=JSON[_0xb814('0x2b')](_0x4ff31a);}if(_0x4ff31a instanceof Array){_0x4ff31a=_0x4ff31a[_0xb814('0x2c')](function(_0xe0f509){_0xe0f509['condition']=eval('('+_0xe0f509[_0xb814('0x1e')]+')');_0xe0f509[_0xb814('0x28')]=eval('('+_0xe0f509['consequence']+')');return _0xe0f509;});}else if(_0x4ff31a!==null&&typeof _0x4ff31a==_0xb814('0x2d')){_0x4ff31a[_0xb814('0x1e')]=eval('('+_0x4ff31a[_0xb814('0x1e')]+')');_0x4ff31a[_0xb814('0x28')]=eval('('+_0x4ff31a[_0xb814('0x28')]+')');}this[_0xb814('0x5')](_0x4ff31a);};module['exports']=RuleEngine;
\ No newline at end of file
index f1508c9..01e677d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c91=['client','http','then','error','result','sendMailMessage','SendMail','bluebird','jayson/promise'];(function(_0x62f192,_0x19340e){var _0x413c61=function(_0x3be0c8){while(--_0x3be0c8){_0x62f192['push'](_0x62f192['shift']());}};_0x413c61(++_0x19340e);}(_0x8c91,0x115));var _0x18c9=function(_0x5e5b2b,_0x195e4b){_0x5e5b2b=_0x5e5b2b-0x0;var _0x2af10f=_0x8c91[_0x5e5b2b];return _0x2af10f;};'use strict';var BPromise=require(_0x18c9('0x0'));var jayson=require(_0x18c9('0x1'));var client=jayson[_0x18c9('0x2')][_0x18c9('0x3')]({'port':0x232b});function request(_0x41e8e6,_0x3827c5){return new BPromise(function(_0x4c33d6,_0x5e38b8){return client['request'](_0x41e8e6,_0x3827c5)[_0x18c9('0x4')](function(_0x871765){if(_0x871765[_0x18c9('0x5')]){return _0x5e38b8(_0x871765[_0x18c9('0x5')]['message']);}else{return _0x4c33d6(_0x871765[_0x18c9('0x6')]);}})['catch'](function(_0x288d2b){return _0x5e38b8(_0x288d2b);});});}exports[_0x18c9('0x7')]=function(_0x12c845,_0x3c4b06){return request(_0x18c9('0x8'),{'account':_0x12c845,'message':_0x3c4b06});};
\ No newline at end of file
+var _0xe6cb=['sendMailMessage','bluebird','http','request','then','error','message','result','catch'];(function(_0x46cf00,_0x457a43){var _0x3974dc=function(_0x4b5d0a){while(--_0x4b5d0a){_0x46cf00['push'](_0x46cf00['shift']());}};_0x3974dc(++_0x457a43);}(_0xe6cb,0x91));var _0xbe6c=function(_0x224bb9,_0x412dad){_0x224bb9=_0x224bb9-0x0;var _0x31f6e1=_0xe6cb[_0x224bb9];return _0x31f6e1;};'use strict';var BPromise=require(_0xbe6c('0x0'));var jayson=require('jayson/promise');var client=jayson['client'][_0xbe6c('0x1')]({'port':0x232b});function request(_0x24b7dc,_0x483c3d){return new BPromise(function(_0x46d65e,_0x2c51ec){return client[_0xbe6c('0x2')](_0x24b7dc,_0x483c3d)[_0xbe6c('0x3')](function(_0x2321bf){if(_0x2321bf[_0xbe6c('0x4')]){return _0x2c51ec(_0x2321bf['error'][_0xbe6c('0x5')]);}else{return _0x46d65e(_0x2321bf[_0xbe6c('0x6')]);}})[_0xbe6c('0x7')](function(_0x3ab94b){return _0x2c51ec(_0x3ab94b);});});}exports[_0xbe6c('0x8')]=function(_0x1ab6bf,_0x2b5622){return request('SendMail',{'account':_0x1ab6bf,'message':_0x2b5622});};
\ No newline at end of file
index b296056..beccfbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe834=['chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCurrentCapacity','faxStatus','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelCapacity','openchannelCurrentCapacity','busyQueue','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','mail','openchannel','fax','sms','whatsapp','length','StatusTime','toNumber','format','Status','mailCapacity','faxStatusTime','smsCurrentCapacity','whatsappStatus','openchannelStatusTime','busy','stringify','emit','user:save','exports','lodash','moment','md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime'];(function(_0x3686ca,_0x3ceb32){var _0x2756c9=function(_0xaada04){while(--_0xaada04){_0x3686ca['push'](_0x3686ca['shift']());}};_0x2756c9(++_0x3ceb32);}(_0xe834,0x132));var _0x4e83=function(_0x21d691,_0x114a69){_0x21d691=_0x21d691-0x0;var _0x5b6fe6=_0xe834[_0x21d691];return _0x5b6fe6;};'use strict';var _=require(_0x4e83('0x0'));var moment=require(_0x4e83('0x1'));var md5=require(_0x4e83('0x2'));var Redis=require(_0x4e83('0x3'));var config=require(_0x4e83('0x4'));config[_0x4e83('0x5')]=_[_0x4e83('0x6')](config['redis'],{'host':_0x4e83('0x7'),'port':0x18eb});var io=require(_0x4e83('0x8'))(new Redis(config['redis']));function Agent(_0x3440e9){this['id']=_0x3440e9['id']||0x0;this[_0x4e83('0x9')]=_0x3440e9[_0x4e83('0x9')]||'';this[_0x4e83('0xa')]=_0x3440e9[_0x4e83('0xa')]||!![];this[_0x4e83('0xb')]=_0x3440e9[_0x4e83('0xb')]||![];this['chatPause']=_0x3440e9['chatPause']||![];this[_0x4e83('0xc')]=_0x3440e9[_0x4e83('0xc')]||![];this['faxPause']=_0x3440e9[_0x4e83('0xd')]||![];this[_0x4e83('0xe')]=_0x3440e9[_0x4e83('0xe')]||![];this['openchannelPause']=_0x3440e9[_0x4e83('0xf')]||![];this[_0x4e83('0x10')]=_0x4e83('0x11');this[_0x4e83('0x12')]=0x0;this[_0x4e83('0x13')]=_0x3440e9[_0x4e83('0x13')]||0x0;this[_0x4e83('0x14')]=0x0;this[_0x4e83('0x15')]=_0x4e83('0x11');this[_0x4e83('0x16')]=0x0;this['mailCapacity']=_0x3440e9['mailCapacity']||0x0;this[_0x4e83('0x17')]=0x0;this[_0x4e83('0x18')]=_0x4e83('0x11');this['faxStatusTime']=0x0;this[_0x4e83('0x19')]=_0x3440e9[_0x4e83('0x19')]||0x0;this[_0x4e83('0x1a')]=0x0;this[_0x4e83('0x1b')]=_0x4e83('0x11');this[_0x4e83('0x1c')]=0x0;this[_0x4e83('0x1d')]=_0x3440e9[_0x4e83('0x1d')]||0x0;this['smsCurrentCapacity']=0x0;this['whatsappStatus']=_0x4e83('0x11');this[_0x4e83('0x1e')]=0x0;this[_0x4e83('0x1f')]=_0x3440e9[_0x4e83('0x1f')]||0x0;this[_0x4e83('0x20')]=0x0;this[_0x4e83('0x21')]=_0x4e83('0x11');this['openchannelStatusTime']=0x0;this[_0x4e83('0x22')]=_0x3440e9[_0x4e83('0x22')]||0x0;this[_0x4e83('0x23')]=0x0;this['busy']=![];this[_0x4e83('0x24')]=undefined;this['md5']='';this[_0x4e83('0x25')]();}Agent[_0x4e83('0x26')][_0x4e83('0x27')]=function(_0x1abcd1){if(this[_0x1abcd1+_0x4e83('0x28')]>0x0){if(this[_0x1abcd1+_0x4e83('0x29')]>0x0&&this[_0x1abcd1+_0x4e83('0x28')]>=this[_0x1abcd1+_0x4e83('0x29')]){return _0x4e83('0x2a');}else{return _0x4e83('0x2b');}}else{return _0x4e83('0x2c');}};Agent[_0x4e83('0x26')]['updateRealtime']=function(){var _0x38c442=[_0x4e83('0x2d'),'chat',_0x4e83('0x2e'),_0x4e83('0x2f'),_0x4e83('0x30'),_0x4e83('0x31')];for(var _0x4c2791=0x0;_0x4c2791<_0x38c442[_0x4e83('0x32')];_0x4c2791+=0x1){var _0x591978=this[_0x4e83('0x27')](_0x38c442[_0x4c2791]);if(this[_0x38c442[_0x4c2791]+'Status']!==_0x591978){this[_0x38c442[_0x4c2791]+_0x4e83('0x33')]=_[_0x4e83('0x34')](moment()[_0x4e83('0x35')]('x'));}this[_0x38c442[_0x4c2791]+_0x4e83('0x36')]=_0x591978;}var _0x5d7f1e={'id':this['id'],'name':this[_0x4e83('0x9')],'online':this['online'],'voicePause':this[_0x4e83('0xb')],'chatPause':this['chatPause'],'mailPause':this[_0x4e83('0xc')],'smsPause':this[_0x4e83('0xe')],'faxPause':this[_0x4e83('0xd')],'openchannelPause':this[_0x4e83('0xf')],'chatStatus':this[_0x4e83('0x10')],'chatStatusTime':this[_0x4e83('0x12')],'chatCapacity':this[_0x4e83('0x13')],'chatCurrentCapacity':this[_0x4e83('0x14')],'mailStatus':this[_0x4e83('0x15')],'mailStatusTime':this[_0x4e83('0x16')],'mailCapacity':this[_0x4e83('0x37')],'mailCurrentCapacity':this[_0x4e83('0x17')],'faxStatus':this[_0x4e83('0x18')],'faxStatusTime':this[_0x4e83('0x38')],'faxCapacity':this[_0x4e83('0x19')],'faxCurrentCapacity':this[_0x4e83('0x1a')],'smsStatus':this[_0x4e83('0x1b')],'smsStatusTime':this[_0x4e83('0x1c')],'smsCapacity':this[_0x4e83('0x1d')],'smsCurrentCapacity':this[_0x4e83('0x39')],'whatsappStatus':this[_0x4e83('0x3a')],'whatsappStatusTime':this[_0x4e83('0x1e')],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this['whatsappCurrentCapacity'],'openchannelStatus':this[_0x4e83('0x21')],'openchannelStatusTime':this[_0x4e83('0x3b')],'openchannelCapacity':this[_0x4e83('0x22')],'openchannelCurrentCapacity':this[_0x4e83('0x23')],'busy':this[_0x4e83('0x3c')],'busyQueue':this[_0x4e83('0x24')]};var _0x54b7fa=md5(JSON[_0x4e83('0x3d')](_0x5d7f1e));if(this['md5']!==_0x54b7fa){this[_0x4e83('0x2')]=_0x54b7fa;io[_0x4e83('0x3e')](_0x4e83('0x3f'),_0x5d7f1e);}};module[_0x4e83('0x40')]=Agent;
\ No newline at end of file
+var _0xcff9=['busy','busyQueue','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','working','mail','chat','fax','sms','whatsapp','length','Status','StatusTime','format','online','chatStatus','openchannelStatusTime','stringify','emit','user:save','exports','lodash','moment','md5','ioredis','redis','defaults','localhost','socket.io-emitter','name','voicePause','chatPause','mailPause','smsPause','openchannelPause','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailCapacity','mailCurrentCapacity','faxStatusTime','faxCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelCapacity','openchannelCurrentCapacity'];(function(_0xf26e77,_0x429091){var _0x3256fe=function(_0x3e6a51){while(--_0x3e6a51){_0xf26e77['push'](_0xf26e77['shift']());}};_0x3256fe(++_0x429091);}(_0xcff9,0x8c));var _0x9cff=function(_0x23db69,_0x4f4161){_0x23db69=_0x23db69-0x0;var _0x3b3c11=_0xcff9[_0x23db69];return _0x3b3c11;};'use strict';var _=require(_0x9cff('0x0'));var moment=require(_0x9cff('0x1'));var md5=require(_0x9cff('0x2'));var Redis=require(_0x9cff('0x3'));var config=require('../../../config/environment');config[_0x9cff('0x4')]=_[_0x9cff('0x5')](config['redis'],{'host':_0x9cff('0x6'),'port':0x18eb});var io=require(_0x9cff('0x7'))(new Redis(config[_0x9cff('0x4')]));function Agent(_0x18422f){this['id']=_0x18422f['id']||0x0;this[_0x9cff('0x8')]=_0x18422f[_0x9cff('0x8')]||'';this['online']=_0x18422f['online']||!![];this[_0x9cff('0x9')]=_0x18422f['voicePause']||![];this[_0x9cff('0xa')]=_0x18422f['chatPause']||![];this[_0x9cff('0xb')]=_0x18422f[_0x9cff('0xb')]||![];this['faxPause']=_0x18422f['faxPause']||![];this[_0x9cff('0xc')]=_0x18422f[_0x9cff('0xc')]||![];this[_0x9cff('0xd')]=_0x18422f[_0x9cff('0xd')]||![];this['chatStatus']=_0x9cff('0xe');this[_0x9cff('0xf')]=0x0;this[_0x9cff('0x10')]=_0x18422f[_0x9cff('0x10')]||0x0;this[_0x9cff('0x11')]=0x0;this[_0x9cff('0x12')]=_0x9cff('0xe');this['mailStatusTime']=0x0;this[_0x9cff('0x13')]=_0x18422f[_0x9cff('0x13')]||0x0;this[_0x9cff('0x14')]=0x0;this['faxStatus']='unknown';this[_0x9cff('0x15')]=0x0;this[_0x9cff('0x16')]=_0x18422f[_0x9cff('0x16')]||0x0;this['faxCurrentCapacity']=0x0;this[_0x9cff('0x17')]=_0x9cff('0xe');this[_0x9cff('0x18')]=0x0;this[_0x9cff('0x19')]=_0x18422f[_0x9cff('0x19')]||0x0;this[_0x9cff('0x1a')]=0x0;this[_0x9cff('0x1b')]=_0x9cff('0xe');this[_0x9cff('0x1c')]=0x0;this[_0x9cff('0x1d')]=_0x18422f['whatsappCapacity']||0x0;this[_0x9cff('0x1e')]=0x0;this[_0x9cff('0x1f')]=_0x9cff('0xe');this['openchannelStatusTime']=0x0;this[_0x9cff('0x20')]=_0x18422f[_0x9cff('0x20')]||0x0;this[_0x9cff('0x21')]=0x0;this[_0x9cff('0x22')]=![];this[_0x9cff('0x23')]=undefined;this[_0x9cff('0x2')]='';this[_0x9cff('0x24')]();}Agent[_0x9cff('0x25')][_0x9cff('0x26')]=function(_0x1babfb){if(this[_0x1babfb+_0x9cff('0x27')]>0x0){if(this[_0x1babfb+_0x9cff('0x28')]>0x0&&this[_0x1babfb+'CurrentCapacity']>=this[_0x1babfb+_0x9cff('0x28')]){return'maxcapacity';}else{return _0x9cff('0x29');}}else{return'idle';}};Agent[_0x9cff('0x25')][_0x9cff('0x24')]=function(){var _0x3088b8=[_0x9cff('0x2a'),_0x9cff('0x2b'),'openchannel',_0x9cff('0x2c'),_0x9cff('0x2d'),_0x9cff('0x2e')];for(var _0x481eb9=0x0;_0x481eb9<_0x3088b8[_0x9cff('0x2f')];_0x481eb9+=0x1){var _0x479d72=this[_0x9cff('0x26')](_0x3088b8[_0x481eb9]);if(this[_0x3088b8[_0x481eb9]+_0x9cff('0x30')]!==_0x479d72){this[_0x3088b8[_0x481eb9]+_0x9cff('0x31')]=_['toNumber'](moment()[_0x9cff('0x32')]('x'));}this[_0x3088b8[_0x481eb9]+'Status']=_0x479d72;}var _0x56dfa8={'id':this['id'],'name':this[_0x9cff('0x8')],'online':this[_0x9cff('0x33')],'voicePause':this['voicePause'],'chatPause':this[_0x9cff('0xa')],'mailPause':this[_0x9cff('0xb')],'smsPause':this[_0x9cff('0xc')],'faxPause':this['faxPause'],'openchannelPause':this['openchannelPause'],'chatStatus':this[_0x9cff('0x34')],'chatStatusTime':this[_0x9cff('0xf')],'chatCapacity':this['chatCapacity'],'chatCurrentCapacity':this[_0x9cff('0x11')],'mailStatus':this[_0x9cff('0x12')],'mailStatusTime':this['mailStatusTime'],'mailCapacity':this[_0x9cff('0x13')],'mailCurrentCapacity':this['mailCurrentCapacity'],'faxStatus':this['faxStatus'],'faxStatusTime':this[_0x9cff('0x15')],'faxCapacity':this[_0x9cff('0x16')],'faxCurrentCapacity':this['faxCurrentCapacity'],'smsStatus':this['smsStatus'],'smsStatusTime':this[_0x9cff('0x18')],'smsCapacity':this[_0x9cff('0x19')],'smsCurrentCapacity':this[_0x9cff('0x1a')],'whatsappStatus':this[_0x9cff('0x1b')],'whatsappStatusTime':this[_0x9cff('0x1c')],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this[_0x9cff('0x1e')],'openchannelStatus':this[_0x9cff('0x1f')],'openchannelStatusTime':this[_0x9cff('0x35')],'openchannelCapacity':this['openchannelCapacity'],'openchannelCurrentCapacity':this['openchannelCurrentCapacity'],'busy':this[_0x9cff('0x22')],'busyQueue':this[_0x9cff('0x23')]};var _0x5d3cfa=md5(JSON[_0x9cff('0x36')](_0x56dfa8));if(this['md5']!==_0x5d3cfa){this[_0x9cff('0x2')]=_0x5d3cfa;io[_0x9cff('0x37')](_0x9cff('0x38'),_0x56dfa8);}};module[_0x9cff('0x39')]=Agent;
\ No newline at end of file
index 10d0f41..73045d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84b7=['updateRealtime','prototype','_rr','map','length','chatPause','paused','available','loggedIn','waiting','stringify','chat:queue:%s','emit','lodash','md5','util','ioredis','../../../config/environment','redis','localhost','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting'];(function(_0x444c70,_0x58d3d9){var _0x93886f=function(_0x103bd2){while(--_0x103bd2){_0x444c70['push'](_0x444c70['shift']());}};_0x93886f(++_0x58d3d9);}(_0x84b7,0x11b));var _0x784b=function(_0x1bd3ab,_0x352c42){_0x1bd3ab=_0x1bd3ab-0x0;var _0x37e394=_0x84b7[_0x1bd3ab];return _0x37e394;};'use strict';var _=require(_0x784b('0x0'));var md5=require(_0x784b('0x1'));var util=require(_0x784b('0x2'));var Redis=require(_0x784b('0x3'));var config=require(_0x784b('0x4'));config[_0x784b('0x5')]=_['defaults'](config[_0x784b('0x5')],{'host':_0x784b('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x784b('0x5')]));function ChatQueue(_0x3ee2fb){this['id']=_0x3ee2fb['id']||0x0;this[_0x784b('0x7')]=_0x3ee2fb[_0x784b('0x7')]||'';this[_0x784b('0x8')]=_0x3ee2fb[_0x784b('0x8')]||0xa;this[_0x784b('0x9')]=_0x3ee2fb[_0x784b('0x9')]||_0x784b('0xa');this[_0x784b('0xb')]=_0x3ee2fb[_0x784b('0xb')];this[_0x784b('0xc')]={};this['waiting']=0x0;this[_0x784b('0x1')]='';this[_0x784b('0xd')]();this[_0x784b('0xe')]();}ChatQueue[_0x784b('0xf')][_0x784b('0xd')]=function(){var _0x4fa194=this['mapAgentsId'][_0x784b('0x10')];this[_0x784b('0xc')]=_[_0x784b('0x11')](this[_0x784b('0xb')],'id');this[_0x784b('0xc')][_0x784b('0x10')]=_0x4fa194;};ChatQueue[_0x784b('0xf')]['updateRealtime']=function(){this['loggedIn']=0x0;this['paused']=0x0;for(var _0xa27815=0x0;_0xa27815<this['Agents'][_0x784b('0x12')];_0xa27815+=0x1){if(this['Agents'][_0xa27815]['online']){this['loggedIn']+=0x1;}if(this[_0x784b('0xb')][_0xa27815][_0x784b('0x13')]){this[_0x784b('0x14')]+=0x1;}}this[_0x784b('0x15')]=this['loggedIn']-this['paused'];this[_0x784b('0x15')]=this['available']>=0x0?this[_0x784b('0x15')]:0x0;var _0x3d554c={'id':this['id'],'available':this[_0x784b('0x15')],'loggedIn':this[_0x784b('0x16')],'name':this[_0x784b('0x7')],'paused':this[_0x784b('0x14')],'waiting':this[_0x784b('0x17')]};var _0x1a05a2=md5(JSON[_0x784b('0x18')](_0x3d554c));if(this[_0x784b('0x1')]!==_0x1a05a2){this['md5']=_0x1a05a2;io['to'](util['format'](_0x784b('0x19'),_0x3d554c['name']))[_0x784b('0x1a')]('chat_queue:save',_0x3d554c);}};module['exports']=ChatQueue;
\ No newline at end of file
+var _0x9005=['name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','loggedIn','paused','length','online','chatPause','available','stringify','format','chat:queue:%s','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x9005,0x154));var _0x5900=function(_0x3c9def,_0x5384ea){_0x3c9def=_0x3c9def-0x0;var _0x591e39=_0x9005[_0x3c9def];return _0x591e39;};'use strict';var _=require(_0x5900('0x0'));var md5=require(_0x5900('0x1'));var util=require(_0x5900('0x2'));var Redis=require(_0x5900('0x3'));var config=require(_0x5900('0x4'));config[_0x5900('0x5')]=_[_0x5900('0x6')](config['redis'],{'host':_0x5900('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function ChatQueue(_0x1494df){this['id']=_0x1494df['id']||0x0;this[_0x5900('0x8')]=_0x1494df['name']||'';this['timeout']=_0x1494df[_0x5900('0x9')]||0xa;this['strategy']=_0x1494df[_0x5900('0xa')]||_0x5900('0xb');this[_0x5900('0xc')]=_0x1494df[_0x5900('0xc')];this[_0x5900('0xd')]={};this[_0x5900('0xe')]=0x0;this[_0x5900('0x1')]='';this[_0x5900('0xf')]();this[_0x5900('0x10')]();}ChatQueue[_0x5900('0x11')][_0x5900('0xf')]=function(){var _0x56dbc0=this[_0x5900('0xd')][_0x5900('0x12')];this[_0x5900('0xd')]=_['map'](this[_0x5900('0xc')],'id');this['mapAgentsId'][_0x5900('0x12')]=_0x56dbc0;};ChatQueue[_0x5900('0x11')][_0x5900('0x10')]=function(){this[_0x5900('0x13')]=0x0;this[_0x5900('0x14')]=0x0;for(var _0x1956a3=0x0;_0x1956a3<this['Agents'][_0x5900('0x15')];_0x1956a3+=0x1){if(this[_0x5900('0xc')][_0x1956a3][_0x5900('0x16')]){this[_0x5900('0x13')]+=0x1;}if(this[_0x5900('0xc')][_0x1956a3][_0x5900('0x17')]){this[_0x5900('0x14')]+=0x1;}}this[_0x5900('0x18')]=this[_0x5900('0x13')]-this['paused'];this[_0x5900('0x18')]=this[_0x5900('0x18')]>=0x0?this[_0x5900('0x18')]:0x0;var _0x1a2efd={'id':this['id'],'available':this['available'],'loggedIn':this[_0x5900('0x13')],'name':this[_0x5900('0x8')],'paused':this['paused'],'waiting':this[_0x5900('0xe')]};var _0x228133=md5(JSON[_0x5900('0x19')](_0x1a2efd));if(this[_0x5900('0x1')]!==_0x228133){this[_0x5900('0x1')]=_0x228133;io['to'](util[_0x5900('0x1a')](_0x5900('0x1b'),_0x1a2efd[_0x5900('0x8')]))['emit']('chat_queue:save',_0x1a2efd);}};module[_0x5900('0x1c')]=ChatQueue;
\ No newline at end of file
index a4f1bda..37dd79d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f09=['util','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','_rr','loggedIn','paused','online','available','stringify','format','fax:queue:%s','emit','fax_queue:save','exports','lodash','md5'];(function(_0x248ccc,_0x218ef3){var _0x535509=function(_0x5b7eab){while(--_0x5b7eab){_0x248ccc['push'](_0x248ccc['shift']());}};_0x535509(++_0x218ef3);}(_0x8f09,0xc2));var _0x98f0=function(_0x41f448,_0x5236ce){_0x41f448=_0x41f448-0x0;var _0x26040e=_0x8f09[_0x41f448];return _0x26040e;};'use strict';var _=require(_0x98f0('0x0'));var md5=require(_0x98f0('0x1'));var util=require(_0x98f0('0x2'));var Redis=require(_0x98f0('0x3'));var config=require(_0x98f0('0x4'));config[_0x98f0('0x5')]=_['defaults'](config[_0x98f0('0x5')],{'host':_0x98f0('0x6'),'port':0x18eb});var io=require(_0x98f0('0x7'))(new Redis(config[_0x98f0('0x5')]));function FaxQueue(_0x51d761){this['id']=_0x51d761['id']||0x0;this[_0x98f0('0x8')]=_0x51d761[_0x98f0('0x8')]||'';this[_0x98f0('0x9')]=_0x51d761[_0x98f0('0x9')]||0xa;this['strategy']=_0x51d761[_0x98f0('0xa')]||_0x98f0('0xb');this[_0x98f0('0xc')]=_0x51d761[_0x98f0('0xc')];this[_0x98f0('0xd')]={};this[_0x98f0('0xe')]=0x0;this[_0x98f0('0x1')]='';this[_0x98f0('0xf')]();this[_0x98f0('0x10')]();}FaxQueue['prototype'][_0x98f0('0xf')]=function(){var _0x375796=this['mapAgentsId'][_0x98f0('0x11')];this[_0x98f0('0xd')]=_['map'](this[_0x98f0('0xc')],'id');this[_0x98f0('0xd')]['_rr']=_0x375796;};FaxQueue['prototype']['updateRealtime']=function(){this[_0x98f0('0x12')]=0x0;this[_0x98f0('0x13')]=0x0;for(var _0x3957d4=0x0;_0x3957d4<this[_0x98f0('0xc')]['length'];_0x3957d4+=0x1){if(this[_0x98f0('0xc')][_0x3957d4][_0x98f0('0x14')]){this[_0x98f0('0x12')]+=0x1;}if(this[_0x98f0('0xc')][_0x3957d4]['faxPause']){this['paused']+=0x1;}}this[_0x98f0('0x15')]=this[_0x98f0('0x12')]-this[_0x98f0('0x13')];this[_0x98f0('0x15')]=this[_0x98f0('0x15')]>=0x0?this[_0x98f0('0x15')]:0x0;var _0x53b964={'id':this['id'],'available':this['available'],'loggedIn':this[_0x98f0('0x12')],'name':this[_0x98f0('0x8')],'paused':this[_0x98f0('0x13')],'waiting':this[_0x98f0('0xe')]};var _0x3edf23=md5(JSON[_0x98f0('0x16')](_0x53b964));if(this[_0x98f0('0x1')]!==_0x3edf23){this[_0x98f0('0x1')]=_0x3edf23;io['to'](util[_0x98f0('0x17')](_0x98f0('0x18'),_0x53b964[_0x98f0('0x8')]))[_0x98f0('0x19')](_0x98f0('0x1a'),_0x53b964);}};module[_0x98f0('0x1b')]=FaxQueue;
\ No newline at end of file
+var _0xf21b=['updateRealtime','prototype','_rr','map','Agents','paused','online','loggedIn','faxPause','available','stringify','fax:queue:%s','emit','md5','util','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','beepall','mapAgentsId','waiting','updateRouting'];(function(_0x2dcef1,_0x60a4ce){var _0x12dadb=function(_0x47e21c){while(--_0x47e21c){_0x2dcef1['push'](_0x2dcef1['shift']());}};_0x12dadb(++_0x60a4ce);}(_0xf21b,0x1d8));var _0xbf21=function(_0x2d367c,_0x4e505a){_0x2d367c=_0x2d367c-0x0;var _0x3e30af=_0xf21b[_0x2d367c];return _0x3e30af;};'use strict';var _=require('lodash');var md5=require(_0xbf21('0x0'));var util=require(_0xbf21('0x1'));var Redis=require(_0xbf21('0x2'));var config=require(_0xbf21('0x3'));config[_0xbf21('0x4')]=_[_0xbf21('0x5')](config[_0xbf21('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0xbf21('0x6'))(new Redis(config[_0xbf21('0x4')]));function FaxQueue(_0x465ff5){this['id']=_0x465ff5['id']||0x0;this[_0xbf21('0x7')]=_0x465ff5['name']||'';this[_0xbf21('0x8')]=_0x465ff5['timeout']||0xa;this[_0xbf21('0x9')]=_0x465ff5[_0xbf21('0x9')]||_0xbf21('0xa');this['Agents']=_0x465ff5['Agents'];this[_0xbf21('0xb')]={};this[_0xbf21('0xc')]=0x0;this[_0xbf21('0x0')]='';this[_0xbf21('0xd')]();this[_0xbf21('0xe')]();}FaxQueue[_0xbf21('0xf')][_0xbf21('0xd')]=function(){var _0x3a4af6=this[_0xbf21('0xb')][_0xbf21('0x10')];this['mapAgentsId']=_[_0xbf21('0x11')](this[_0xbf21('0x12')],'id');this[_0xbf21('0xb')]['_rr']=_0x3a4af6;};FaxQueue[_0xbf21('0xf')]['updateRealtime']=function(){this['loggedIn']=0x0;this[_0xbf21('0x13')]=0x0;for(var _0x3239d9=0x0;_0x3239d9<this['Agents']['length'];_0x3239d9+=0x1){if(this['Agents'][_0x3239d9][_0xbf21('0x14')]){this[_0xbf21('0x15')]+=0x1;}if(this[_0xbf21('0x12')][_0x3239d9][_0xbf21('0x16')]){this[_0xbf21('0x13')]+=0x1;}}this[_0xbf21('0x17')]=this[_0xbf21('0x15')]-this[_0xbf21('0x13')];this[_0xbf21('0x17')]=this[_0xbf21('0x17')]>=0x0?this['available']:0x0;var _0x1ed251={'id':this['id'],'available':this[_0xbf21('0x17')],'loggedIn':this[_0xbf21('0x15')],'name':this[_0xbf21('0x7')],'paused':this[_0xbf21('0x13')],'waiting':this[_0xbf21('0xc')]};var _0x21aa91=md5(JSON[_0xbf21('0x18')](_0x1ed251));if(this['md5']!==_0x21aa91){this['md5']=_0x21aa91;io['to'](util['format'](_0xbf21('0x19'),_0x1ed251[_0xbf21('0x7')]))[_0xbf21('0x1a')]('fax_queue:save',_0x1ed251);}};module['exports']=FaxQueue;
\ No newline at end of file
index 974838b..8d8f46d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f19=['exports','name','Intervals'];(function(_0x2e0cca,_0x1d988c){var _0x13eeb8=function(_0x3acfec){while(--_0x3acfec){_0x2e0cca['push'](_0x2e0cca['shift']());}};_0x13eeb8(++_0x1d988c);}(_0x0f19,0x1c3));var _0x90f1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0f19[_0x3dd15e];return _0x231fd0;};'use strict';function Interval(_0x4a9537){this['id']=_0x4a9537['id']||0x0;this[_0x90f1('0x0')]=_0x4a9537['name']||'';this['Intervals']=_0x4a9537[_0x90f1('0x1')]||{};}module[_0x90f1('0x2')]=Interval;
\ No newline at end of file
+var _0x974d=['name','Intervals','exports'];(function(_0x3e0f29,_0x2ae461){var _0x3ddb82=function(_0x86438e){while(--_0x86438e){_0x3e0f29['push'](_0x3e0f29['shift']());}};_0x3ddb82(++_0x2ae461);}(_0x974d,0x19b));var _0xd974=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x974d[_0x2c91e9];return _0x13f0ff;};'use strict';function Interval(_0x309f14){this['id']=_0x309f14['id']||0x0;this[_0xd974('0x0')]=_0x309f14[_0xd974('0x0')]||'';this[_0xd974('0x1')]=_0x309f14[_0xd974('0x1')]||{};}module[_0xd974('0x2')]=Interval;
\ No newline at end of file
index b916cd5..7148208 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x957f=['length','online','mailPause','available','paused','waiting','stringify','mail:queue:%s','emit','mail_queue:save','exports','md5','util','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRealtime','prototype','_rr','map','loggedIn'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x957f,0x123));var _0xf957=function(_0x4a6979,_0x5f3d1a){_0x4a6979=_0x4a6979-0x0;var _0x226f93=_0x957f[_0x4a6979];return _0x226f93;};'use strict';var _=require('lodash');var md5=require(_0xf957('0x0'));var util=require(_0xf957('0x1'));var Redis=require('ioredis');var config=require(_0xf957('0x2'));config[_0xf957('0x3')]=_['defaults'](config[_0xf957('0x3')],{'host':_0xf957('0x4'),'port':0x18eb});var io=require(_0xf957('0x5'))(new Redis(config[_0xf957('0x3')]));function MailQueue(_0x23e426){this['id']=_0x23e426['id']||0x0;this['name']=_0x23e426[_0xf957('0x6')]||'';this[_0xf957('0x7')]=_0x23e426['timeout']||0xa;this[_0xf957('0x8')]=_0x23e426[_0xf957('0x8')]||_0xf957('0x9');this[_0xf957('0xa')]=_0x23e426[_0xf957('0xa')];this[_0xf957('0xb')]={};this['waiting']=0x0;this[_0xf957('0x0')]='';this['updateRouting']();this[_0xf957('0xc')]();}MailQueue[_0xf957('0xd')]['updateRouting']=function(){var _0x9232c7=this[_0xf957('0xb')][_0xf957('0xe')];this[_0xf957('0xb')]=_[_0xf957('0xf')](this[_0xf957('0xa')],'id');this[_0xf957('0xb')][_0xf957('0xe')]=_0x9232c7;};MailQueue[_0xf957('0xd')][_0xf957('0xc')]=function(){this[_0xf957('0x10')]=0x0;this['paused']=0x0;for(var _0x1a3dc2=0x0;_0x1a3dc2<this[_0xf957('0xa')][_0xf957('0x11')];_0x1a3dc2+=0x1){if(this[_0xf957('0xa')][_0x1a3dc2][_0xf957('0x12')]){this['loggedIn']+=0x1;}if(this[_0xf957('0xa')][_0x1a3dc2][_0xf957('0x13')]){this['paused']+=0x1;}}this[_0xf957('0x14')]=this[_0xf957('0x10')]-this['paused'];this['available']=this[_0xf957('0x14')]>=0x0?this[_0xf957('0x14')]:0x0;var _0x1adbcf={'id':this['id'],'available':this[_0xf957('0x14')],'loggedIn':this[_0xf957('0x10')],'name':this[_0xf957('0x6')],'paused':this[_0xf957('0x15')],'waiting':this[_0xf957('0x16')]};var _0x4b22d8=md5(JSON[_0xf957('0x17')](_0x1adbcf));if(this[_0xf957('0x0')]!==_0x4b22d8){this[_0xf957('0x0')]=_0x4b22d8;io['to'](util['format'](_0xf957('0x18'),_0x1adbcf[_0xf957('0x6')]))[_0xf957('0x19')](_0xf957('0x1a'),_0x1adbcf);}};module[_0xf957('0x1b')]=MailQueue;
\ No newline at end of file
+var _0xf2f8=['format','mail_queue:save','lodash','md5','util','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','waiting','updateRouting','updateRealtime','prototype','mapAgentsId','_rr','map','Agents','loggedIn','paused','online','mailPause','available','stringify'];(function(_0x290ceb,_0x1941ca){var _0x205565=function(_0x31bd18){while(--_0x31bd18){_0x290ceb['push'](_0x290ceb['shift']());}};_0x205565(++_0x1941ca);}(_0xf2f8,0xc6));var _0x8f2f=function(_0xaa0309,_0x1c8008){_0xaa0309=_0xaa0309-0x0;var _0x5de7ce=_0xf2f8[_0xaa0309];return _0x5de7ce;};'use strict';var _=require(_0x8f2f('0x0'));var md5=require(_0x8f2f('0x1'));var util=require(_0x8f2f('0x2'));var Redis=require('ioredis');var config=require(_0x8f2f('0x3'));config[_0x8f2f('0x4')]=_[_0x8f2f('0x5')](config[_0x8f2f('0x4')],{'host':_0x8f2f('0x6'),'port':0x18eb});var io=require(_0x8f2f('0x7'))(new Redis(config[_0x8f2f('0x4')]));function MailQueue(_0x2aadb9){this['id']=_0x2aadb9['id']||0x0;this[_0x8f2f('0x8')]=_0x2aadb9['name']||'';this[_0x8f2f('0x9')]=_0x2aadb9[_0x8f2f('0x9')]||0xa;this[_0x8f2f('0xa')]=_0x2aadb9['strategy']||_0x8f2f('0xb');this['Agents']=_0x2aadb9['Agents'];this['mapAgentsId']={};this[_0x8f2f('0xc')]=0x0;this['md5']='';this[_0x8f2f('0xd')]();this[_0x8f2f('0xe')]();}MailQueue[_0x8f2f('0xf')][_0x8f2f('0xd')]=function(){var _0x2a81c3=this[_0x8f2f('0x10')][_0x8f2f('0x11')];this[_0x8f2f('0x10')]=_[_0x8f2f('0x12')](this[_0x8f2f('0x13')],'id');this['mapAgentsId'][_0x8f2f('0x11')]=_0x2a81c3;};MailQueue[_0x8f2f('0xf')][_0x8f2f('0xe')]=function(){this[_0x8f2f('0x14')]=0x0;this[_0x8f2f('0x15')]=0x0;for(var _0x47ebbe=0x0;_0x47ebbe<this[_0x8f2f('0x13')]['length'];_0x47ebbe+=0x1){if(this[_0x8f2f('0x13')][_0x47ebbe][_0x8f2f('0x16')]){this[_0x8f2f('0x14')]+=0x1;}if(this[_0x8f2f('0x13')][_0x47ebbe][_0x8f2f('0x17')]){this[_0x8f2f('0x15')]+=0x1;}}this['available']=this[_0x8f2f('0x14')]-this[_0x8f2f('0x15')];this[_0x8f2f('0x18')]=this[_0x8f2f('0x18')]>=0x0?this['available']:0x0;var _0x5ade63={'id':this['id'],'available':this[_0x8f2f('0x18')],'loggedIn':this['loggedIn'],'name':this[_0x8f2f('0x8')],'paused':this[_0x8f2f('0x15')],'waiting':this[_0x8f2f('0xc')]};var _0x5f4c9b=md5(JSON[_0x8f2f('0x19')](_0x5ade63));if(this[_0x8f2f('0x1')]!==_0x5f4c9b){this[_0x8f2f('0x1')]=_0x5f4c9b;io['to'](util[_0x8f2f('0x1a')]('mail:queue:%s',_0x5ade63['name']))['emit'](_0x8f2f('0x1b'),_0x5ade63);}};module['exports']=MailQueue;
\ No newline at end of file
index a7def71..6743f83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['prototype','map','_rr','loggedIn','paused','length','online','openchannelPause','available','format','openchannel_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime'];(function(_0x1034f3,_0x50405b){var _0x9f35a7=function(_0x56e80a){while(--_0x56e80a){_0x1034f3['push'](_0x1034f3['shift']());}};_0x9f35a7(++_0x50405b);}(_0x814b,0x1a2));var _0xb814=function(_0x2bc1fe,_0x45da98){_0x2bc1fe=_0x2bc1fe-0x0;var _0x1a47a5=_0x814b[_0x2bc1fe];return _0x1a47a5;};'use strict';var _=require(_0xb814('0x0'));var md5=require(_0xb814('0x1'));var util=require(_0xb814('0x2'));var Redis=require(_0xb814('0x3'));var config=require(_0xb814('0x4'));config[_0xb814('0x5')]=_['defaults'](config[_0xb814('0x5')],{'host':_0xb814('0x6'),'port':0x18eb});var io=require(_0xb814('0x7'))(new Redis(config[_0xb814('0x5')]));function OpenchannelQueue(_0x44931c){this['id']=_0x44931c['id']||0x0;this[_0xb814('0x8')]=_0x44931c['name']||'';this[_0xb814('0x9')]=_0x44931c[_0xb814('0x9')]||0xa;this['strategy']=_0x44931c[_0xb814('0xa')]||_0xb814('0xb');this[_0xb814('0xc')]=_0x44931c[_0xb814('0xc')];this[_0xb814('0xd')]={};this[_0xb814('0xe')]=0x0;this[_0xb814('0x1')]='';this[_0xb814('0xf')]();this[_0xb814('0x10')]();}OpenchannelQueue[_0xb814('0x11')][_0xb814('0xf')]=function(){var _0x4b5f14=this[_0xb814('0xd')]['_rr'];this[_0xb814('0xd')]=_[_0xb814('0x12')](this[_0xb814('0xc')],'id');this[_0xb814('0xd')][_0xb814('0x13')]=_0x4b5f14;};OpenchannelQueue[_0xb814('0x11')][_0xb814('0x10')]=function(){this[_0xb814('0x14')]=0x0;this[_0xb814('0x15')]=0x0;for(var _0x2ab627=0x0;_0x2ab627<this[_0xb814('0xc')][_0xb814('0x16')];_0x2ab627+=0x1){if(this[_0xb814('0xc')][_0x2ab627][_0xb814('0x17')]){this[_0xb814('0x14')]+=0x1;}if(this[_0xb814('0xc')][_0x2ab627][_0xb814('0x18')]){this[_0xb814('0x15')]+=0x1;}}this[_0xb814('0x19')]=this[_0xb814('0x14')]-this[_0xb814('0x15')];this['available']=this[_0xb814('0x19')]>=0x0?this['available']:0x0;var _0x270598={'id':this['id'],'available':this[_0xb814('0x19')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this['paused'],'waiting':this[_0xb814('0xe')]};var _0x4d5276=md5(JSON['stringify'](_0x270598));if(this[_0xb814('0x1')]!==_0x4d5276){this[_0xb814('0x1')]=_0x4d5276;io['to'](util[_0xb814('0x1a')]('openchannel:queue:%s',_0x270598[_0xb814('0x8')]))['emit'](_0xb814('0x1b'),_0x270598);}};module[_0xb814('0x1c')]=OpenchannelQueue;
\ No newline at end of file
+var _0x814b=['prototype','map','_rr','loggedIn','paused','length','online','openchannelPause','available','format','openchannel_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime'];(function(_0x4f01e1,_0x320904){var _0x1f949f=function(_0x54f4f3){while(--_0x54f4f3){_0x4f01e1['push'](_0x4f01e1['shift']());}};_0x1f949f(++_0x320904);}(_0x814b,0x1a2));var _0xb814=function(_0x36de10,_0xfe25e8){_0x36de10=_0x36de10-0x0;var _0x58100f=_0x814b[_0x36de10];return _0x58100f;};'use strict';var _=require(_0xb814('0x0'));var md5=require(_0xb814('0x1'));var util=require(_0xb814('0x2'));var Redis=require(_0xb814('0x3'));var config=require(_0xb814('0x4'));config[_0xb814('0x5')]=_['defaults'](config[_0xb814('0x5')],{'host':_0xb814('0x6'),'port':0x18eb});var io=require(_0xb814('0x7'))(new Redis(config[_0xb814('0x5')]));function OpenchannelQueue(_0x44931c){this['id']=_0x44931c['id']||0x0;this[_0xb814('0x8')]=_0x44931c['name']||'';this[_0xb814('0x9')]=_0x44931c[_0xb814('0x9')]||0xa;this['strategy']=_0x44931c[_0xb814('0xa')]||_0xb814('0xb');this[_0xb814('0xc')]=_0x44931c[_0xb814('0xc')];this[_0xb814('0xd')]={};this[_0xb814('0xe')]=0x0;this[_0xb814('0x1')]='';this[_0xb814('0xf')]();this[_0xb814('0x10')]();}OpenchannelQueue[_0xb814('0x11')][_0xb814('0xf')]=function(){var _0x4b5f14=this[_0xb814('0xd')]['_rr'];this[_0xb814('0xd')]=_[_0xb814('0x12')](this[_0xb814('0xc')],'id');this[_0xb814('0xd')][_0xb814('0x13')]=_0x4b5f14;};OpenchannelQueue[_0xb814('0x11')][_0xb814('0x10')]=function(){this[_0xb814('0x14')]=0x0;this[_0xb814('0x15')]=0x0;for(var _0x2ab627=0x0;_0x2ab627<this[_0xb814('0xc')][_0xb814('0x16')];_0x2ab627+=0x1){if(this[_0xb814('0xc')][_0x2ab627][_0xb814('0x17')]){this[_0xb814('0x14')]+=0x1;}if(this[_0xb814('0xc')][_0x2ab627][_0xb814('0x18')]){this[_0xb814('0x15')]+=0x1;}}this[_0xb814('0x19')]=this[_0xb814('0x14')]-this[_0xb814('0x15')];this['available']=this[_0xb814('0x19')]>=0x0?this['available']:0x0;var _0x270598={'id':this['id'],'available':this[_0xb814('0x19')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this['paused'],'waiting':this[_0xb814('0xe')]};var _0x4d5276=md5(JSON['stringify'](_0x270598));if(this[_0xb814('0x1')]!==_0x4d5276){this[_0xb814('0x1')]=_0x4d5276;io['to'](util[_0xb814('0x1a')]('openchannel:queue:%s',_0x270598[_0xb814('0x8')]))['emit'](_0xb814('0x1b'),_0x270598);}};module[_0xb814('0x1c')]=OpenchannelQueue;
\ No newline at end of file
index 3eecb81..ebbf636 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc1e=['redis','defaults','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','md5','updateRealtime','prototype','updateRouting','_rr','map','loggedIn','paused','length','online','smsPause','available','sms:queue:%s','emit','sms_queue:save','ioredis','../../../config/environment'];(function(_0x16db8b,_0xca7d28){var _0x5ba017=function(_0x35b933){while(--_0x35b933){_0x16db8b['push'](_0x16db8b['shift']());}};_0x5ba017(++_0xca7d28);}(_0xfc1e,0x1c9));var _0xefc1=function(_0x334599,_0x4b1cfa){_0x334599=_0x334599-0x0;var _0x4cdff2=_0xfc1e[_0x334599];return _0x4cdff2;};'use strict';var _=require('lodash');var md5=require('md5');var util=require('util');var Redis=require(_0xefc1('0x0'));var config=require(_0xefc1('0x1'));config[_0xefc1('0x2')]=_[_0xefc1('0x3')](config[_0xefc1('0x2')],{'host':'localhost','port':0x18eb});var io=require(_0xefc1('0x4'))(new Redis(config[_0xefc1('0x2')]));function SmsQueue(_0x489ead){this['id']=_0x489ead['id']||0x0;this['name']=_0x489ead[_0xefc1('0x5')]||'';this[_0xefc1('0x6')]=_0x489ead[_0xefc1('0x6')]||0xa;this[_0xefc1('0x7')]=_0x489ead[_0xefc1('0x7')]||_0xefc1('0x8');this[_0xefc1('0x9')]=_0x489ead[_0xefc1('0x9')];this[_0xefc1('0xa')]={};this[_0xefc1('0xb')]=0x0;this[_0xefc1('0xc')]='';this['updateRouting']();this[_0xefc1('0xd')]();}SmsQueue[_0xefc1('0xe')][_0xefc1('0xf')]=function(){var _0x1f4846=this[_0xefc1('0xa')][_0xefc1('0x10')];this[_0xefc1('0xa')]=_[_0xefc1('0x11')](this[_0xefc1('0x9')],'id');this[_0xefc1('0xa')][_0xefc1('0x10')]=_0x1f4846;};SmsQueue['prototype'][_0xefc1('0xd')]=function(){this[_0xefc1('0x12')]=0x0;this[_0xefc1('0x13')]=0x0;for(var _0x36633f=0x0;_0x36633f<this[_0xefc1('0x9')][_0xefc1('0x14')];_0x36633f+=0x1){if(this[_0xefc1('0x9')][_0x36633f][_0xefc1('0x15')]){this['loggedIn']+=0x1;}if(this[_0xefc1('0x9')][_0x36633f][_0xefc1('0x16')]){this[_0xefc1('0x13')]+=0x1;}}this['available']=this[_0xefc1('0x12')]-this[_0xefc1('0x13')];this[_0xefc1('0x17')]=this[_0xefc1('0x17')]>=0x0?this[_0xefc1('0x17')]:0x0;var _0x38923c={'id':this['id'],'available':this[_0xefc1('0x17')],'loggedIn':this[_0xefc1('0x12')],'name':this['name'],'paused':this[_0xefc1('0x13')],'waiting':this[_0xefc1('0xb')]};var _0x2670a9=md5(JSON['stringify'](_0x38923c));if(this['md5']!==_0x2670a9){this[_0xefc1('0xc')]=_0x2670a9;io['to'](util['format'](_0xefc1('0x18'),_0x38923c['name']))[_0xefc1('0x19')](_0xefc1('0x1a'),_0x38923c);}};module['exports']=SmsQueue;
\ No newline at end of file
+var _0x222f=['lodash','md5','util','ioredis','defaults','redis','localhost','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','prototype','map','_rr','updateRealtime','loggedIn','length','online','smsPause','paused','available','stringify','sms:queue:%s','emit','sms_queue:save','exports'];(function(_0x3972f3,_0x3c5b39){var _0xf20dee=function(_0x29f555){while(--_0x29f555){_0x3972f3['push'](_0x3972f3['shift']());}};_0xf20dee(++_0x3c5b39);}(_0x222f,0x1a4));var _0xf222=function(_0x1b95a1,_0x529852){_0x1b95a1=_0x1b95a1-0x0;var _0x57aef1=_0x222f[_0x1b95a1];return _0x57aef1;};'use strict';var _=require(_0xf222('0x0'));var md5=require(_0xf222('0x1'));var util=require(_0xf222('0x2'));var Redis=require(_0xf222('0x3'));var config=require('../../../config/environment');config['redis']=_[_0xf222('0x4')](config[_0xf222('0x5')],{'host':_0xf222('0x6'),'port':0x18eb});var io=require(_0xf222('0x7'))(new Redis(config['redis']));function SmsQueue(_0x3a2751){this['id']=_0x3a2751['id']||0x0;this['name']=_0x3a2751[_0xf222('0x8')]||'';this[_0xf222('0x9')]=_0x3a2751['timeout']||0xa;this[_0xf222('0xa')]=_0x3a2751[_0xf222('0xa')]||'beepall';this[_0xf222('0xb')]=_0x3a2751[_0xf222('0xb')];this[_0xf222('0xc')]={};this[_0xf222('0xd')]=0x0;this[_0xf222('0x1')]='';this[_0xf222('0xe')]();this['updateRealtime']();}SmsQueue[_0xf222('0xf')][_0xf222('0xe')]=function(){var _0x226dbd=this[_0xf222('0xc')]['_rr'];this[_0xf222('0xc')]=_[_0xf222('0x10')](this[_0xf222('0xb')],'id');this[_0xf222('0xc')][_0xf222('0x11')]=_0x226dbd;};SmsQueue[_0xf222('0xf')][_0xf222('0x12')]=function(){this[_0xf222('0x13')]=0x0;this['paused']=0x0;for(var _0x5b8f97=0x0;_0x5b8f97<this[_0xf222('0xb')][_0xf222('0x14')];_0x5b8f97+=0x1){if(this['Agents'][_0x5b8f97][_0xf222('0x15')]){this[_0xf222('0x13')]+=0x1;}if(this[_0xf222('0xb')][_0x5b8f97][_0xf222('0x16')]){this[_0xf222('0x17')]+=0x1;}}this[_0xf222('0x18')]=this[_0xf222('0x13')]-this['paused'];this[_0xf222('0x18')]=this[_0xf222('0x18')]>=0x0?this[_0xf222('0x18')]:0x0;var _0xfb4ddf={'id':this['id'],'available':this[_0xf222('0x18')],'loggedIn':this[_0xf222('0x13')],'name':this[_0xf222('0x8')],'paused':this['paused'],'waiting':this[_0xf222('0xd')]};var _0x1bdd0a=md5(JSON[_0xf222('0x19')](_0xfb4ddf));if(this[_0xf222('0x1')]!==_0x1bdd0a){this['md5']=_0x1bdd0a;io['to'](util['format'](_0xf222('0x1a'),_0xfb4ddf[_0xf222('0x8')]))[_0xf222('0x1b')](_0xf222('0x1c'),_0xfb4ddf);}};module[_0xf222('0x1d')]=SmsQueue;
\ No newline at end of file
index 383d6a1..8a76d27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9944=['updateRouting','prototype','_rr','updateRealtime','paused','length','online','loggedIn','whatsappPause','available','format','whatsapp:queue:%s','emit','whatsapp_queue:save','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting'];(function(_0x596272,_0x482fcf){var _0x176d04=function(_0x3d67b4){while(--_0x3d67b4){_0x596272['push'](_0x596272['shift']());}};_0x176d04(++_0x482fcf);}(_0x9944,0x194));var _0x4994=function(_0x5a16b3,_0x4e1239){_0x5a16b3=_0x5a16b3-0x0;var _0x9c0272=_0x9944[_0x5a16b3];return _0x9c0272;};'use strict';var _=require(_0x4994('0x0'));var md5=require(_0x4994('0x1'));var util=require(_0x4994('0x2'));var Redis=require(_0x4994('0x3'));var config=require(_0x4994('0x4'));config[_0x4994('0x5')]=_[_0x4994('0x6')](config[_0x4994('0x5')],{'host':_0x4994('0x7'),'port':0x18eb});var io=require(_0x4994('0x8'))(new Redis(config[_0x4994('0x5')]));function WhatsappQueue(_0x1ff467){this['id']=_0x1ff467['id']||0x0;this[_0x4994('0x9')]=_0x1ff467[_0x4994('0x9')]||'';this[_0x4994('0xa')]=_0x1ff467[_0x4994('0xa')]||0xa;this[_0x4994('0xb')]=_0x1ff467[_0x4994('0xb')]||_0x4994('0xc');this[_0x4994('0xd')]=_0x1ff467[_0x4994('0xd')];this[_0x4994('0xe')]={};this[_0x4994('0xf')]=0x0;this['md5']='';this[_0x4994('0x10')]();this['updateRealtime']();}WhatsappQueue[_0x4994('0x11')][_0x4994('0x10')]=function(){var _0x23abb7=this['mapAgentsId'][_0x4994('0x12')];this[_0x4994('0xe')]=_['map'](this[_0x4994('0xd')],'id');this['mapAgentsId'][_0x4994('0x12')]=_0x23abb7;};WhatsappQueue['prototype'][_0x4994('0x13')]=function(){this['loggedIn']=0x0;this[_0x4994('0x14')]=0x0;for(var _0x26a931=0x0;_0x26a931<this[_0x4994('0xd')][_0x4994('0x15')];_0x26a931+=0x1){if(this[_0x4994('0xd')][_0x26a931][_0x4994('0x16')]){this[_0x4994('0x17')]+=0x1;}if(this[_0x4994('0xd')][_0x26a931][_0x4994('0x18')]){this[_0x4994('0x14')]+=0x1;}}this[_0x4994('0x19')]=this['loggedIn']-this[_0x4994('0x14')];this[_0x4994('0x19')]=this[_0x4994('0x19')]>=0x0?this[_0x4994('0x19')]:0x0;var _0x1cb83b={'id':this['id'],'available':this[_0x4994('0x19')],'loggedIn':this[_0x4994('0x17')],'name':this[_0x4994('0x9')],'paused':this[_0x4994('0x14')],'waiting':this[_0x4994('0xf')]};var _0x1259cd=md5(JSON['stringify'](_0x1cb83b));if(this['md5']!==_0x1259cd){this['md5']=_0x1259cd;io['to'](util[_0x4994('0x1a')](_0x4994('0x1b'),_0x1cb83b[_0x4994('0x9')]))[_0x4994('0x1c')](_0x4994('0x1d'),_0x1cb83b);}};module['exports']=WhatsappQueue;
\ No newline at end of file
+var _0x834a=['length','online','available','format','whatsapp:queue:%s','emit','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRealtime','prototype','_rr','map','loggedIn','paused'];(function(_0x1762b4,_0x33d836){var _0x29beda=function(_0x31c2fa){while(--_0x31c2fa){_0x1762b4['push'](_0x1762b4['shift']());}};_0x29beda(++_0x33d836);}(_0x834a,0x93));var _0xa834=function(_0x143f3f,_0xf84b8f){_0x143f3f=_0x143f3f-0x0;var _0x218368=_0x834a[_0x143f3f];return _0x218368;};'use strict';var _=require(_0xa834('0x0'));var md5=require(_0xa834('0x1'));var util=require(_0xa834('0x2'));var Redis=require(_0xa834('0x3'));var config=require(_0xa834('0x4'));config[_0xa834('0x5')]=_[_0xa834('0x6')](config[_0xa834('0x5')],{'host':_0xa834('0x7'),'port':0x18eb});var io=require(_0xa834('0x8'))(new Redis(config[_0xa834('0x5')]));function WhatsappQueue(_0x188942){this['id']=_0x188942['id']||0x0;this[_0xa834('0x9')]=_0x188942[_0xa834('0x9')]||'';this[_0xa834('0xa')]=_0x188942[_0xa834('0xa')]||0xa;this[_0xa834('0xb')]=_0x188942[_0xa834('0xb')]||'beepall';this[_0xa834('0xc')]=_0x188942['Agents'];this[_0xa834('0xd')]={};this[_0xa834('0xe')]=0x0;this[_0xa834('0x1')]='';this['updateRouting']();this[_0xa834('0xf')]();}WhatsappQueue[_0xa834('0x10')]['updateRouting']=function(){var _0x47772a=this['mapAgentsId'][_0xa834('0x11')];this[_0xa834('0xd')]=_[_0xa834('0x12')](this[_0xa834('0xc')],'id');this[_0xa834('0xd')][_0xa834('0x11')]=_0x47772a;};WhatsappQueue[_0xa834('0x10')][_0xa834('0xf')]=function(){this[_0xa834('0x13')]=0x0;this[_0xa834('0x14')]=0x0;for(var _0x16120b=0x0;_0x16120b<this['Agents'][_0xa834('0x15')];_0x16120b+=0x1){if(this['Agents'][_0x16120b][_0xa834('0x16')]){this[_0xa834('0x13')]+=0x1;}if(this[_0xa834('0xc')][_0x16120b]['whatsappPause']){this['paused']+=0x1;}}this[_0xa834('0x17')]=this['loggedIn']-this[_0xa834('0x14')];this[_0xa834('0x17')]=this['available']>=0x0?this[_0xa834('0x17')]:0x0;var _0x56acbf={'id':this['id'],'available':this['available'],'loggedIn':this['loggedIn'],'name':this[_0xa834('0x9')],'paused':this[_0xa834('0x14')],'waiting':this[_0xa834('0xe')]};var _0x49cd1a=md5(JSON['stringify'](_0x56acbf));if(this[_0xa834('0x1')]!==_0x49cd1a){this[_0xa834('0x1')]=_0x49cd1a;io['to'](util[_0xa834('0x18')](_0xa834('0x19'),_0x56acbf[_0xa834('0x9')]))[_0xa834('0x1a')]('whatsapp_queue:save',_0x56acbf);}};module[_0xa834('0x1b')]=WhatsappQueue;
\ No newline at end of file
index 8f9d975..906143a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xa9e0[_0x4154a6];return _0x3b2786;};'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
+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(_0xcb3b44,_0x296e30){var _0x2d7e92=function(_0x2fad20){while(--_0x2fad20){_0xcb3b44['push'](_0xcb3b44['shift']());}};_0x2d7e92(++_0x296e30);}(_0xb10b,0x12a));var _0xbb10=function(_0x245efb,_0x2c636b){_0x245efb=_0x245efb-0x0;var _0x59ee7b=_0xb10b[_0x245efb];return _0x59ee7b;};'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
index d66dd7a..8e5640a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf01c=['addTagsToChatInteraction','../client','update','Request','UpdateChatInteraction','updateChatInteraction','AddTagsToChatInteraction'];(function(_0x479dc6,_0xa65782){var _0x2e153e=function(_0x539ffa){while(--_0x539ffa){_0x479dc6['push'](_0x479dc6['shift']());}};_0x2e153e(++_0xa65782);}(_0xf01c,0x1f2));var _0xcf01=function(_0x51fd41,_0x2afa87){_0x51fd41=_0x51fd41-0x0;var _0x219f17=_0xf01c[_0x51fd41];return _0x219f17;};'use strict';var client=require(_0xcf01('0x0'));exports[_0xcf01('0x1')]=function(_0x32756a,_0x3e3987){return client[_0xcf01('0x2')](_0xcf01('0x3'),{'body':_0x3e3987,'options':{'where':{'id':_0x32756a}},'log':_0xcf01('0x4')});};exports['addTags']=function(_0x2859e4,_0x7f89b){return client[_0xcf01('0x2')](_0xcf01('0x5'),{'body':_0x7f89b,'options':{'where':{'id':_0x2859e4}},'log':_0xcf01('0x6')});};
\ No newline at end of file
+var _0xf781=['update','UpdateChatInteraction','updateChatInteraction','addTags','Request','AddTagsToChatInteraction','addTagsToChatInteraction','../client'];(function(_0x1e3f81,_0x409420){var _0x2b9247=function(_0x2df523){while(--_0x2df523){_0x1e3f81['push'](_0x1e3f81['shift']());}};_0x2b9247(++_0x409420);}(_0xf781,0x8f));var _0x1f78=function(_0x47af2f,_0x344bcf){_0x47af2f=_0x47af2f-0x0;var _0x59dd9a=_0xf781[_0x47af2f];return _0x59dd9a;};'use strict';var client=require(_0x1f78('0x0'));exports[_0x1f78('0x1')]=function(_0x2193d1,_0x2c7595){return client['Request'](_0x1f78('0x2'),{'body':_0x2c7595,'options':{'where':{'id':_0x2193d1}},'log':_0x1f78('0x3')});};exports[_0x1f78('0x4')]=function(_0xc654d7,_0x38068c){return client[_0x1f78('0x5')](_0x1f78('0x6'),{'body':_0x38068c,'options':{'where':{'id':_0xc654d7}},'log':_0x1f78('0x7')});};
\ No newline at end of file
index fceae41..c0abc88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7f9=['../client','create','CreateChatMessage'];(function(_0x125ff8,_0x41925f){var _0x2d9ef=function(_0x4ef34c){while(--_0x4ef34c){_0x125ff8['push'](_0x125ff8['shift']());}};_0x2d9ef(++_0x41925f);}(_0xc7f9,0xd2));var _0x9c7f=function(_0x5a93cb,_0x2c8f4f){_0x5a93cb=_0x5a93cb-0x0;var _0x494493=_0xc7f9[_0x5a93cb];return _0x494493;};'use strict';var client=require(_0x9c7f('0x0'));exports[_0x9c7f('0x1')]=function(_0x3405f3){return client['Request'](_0x9c7f('0x2'),{'body':_0x3405f3,'log':'createChatMessage'});};
\ No newline at end of file
+var _0xaef4=['createChatMessage','create','Request','CreateChatMessage'];(function(_0x3e9424,_0x450199){var _0x2728ee=function(_0x19018b){while(--_0x19018b){_0x3e9424['push'](_0x3e9424['shift']());}};_0x2728ee(++_0x450199);}(_0xaef4,0x95));var _0x4aef=function(_0x5b7daf,_0x4be25f){_0x5b7daf=_0x5b7daf-0x0;var _0x337a7a=_0xaef4[_0x5b7daf];return _0x337a7a;};'use strict';var client=require('../client');exports[_0x4aef('0x0')]=function(_0x241b52){return client[_0x4aef('0x1')](_0x4aef('0x2'),{'body':_0x241b52,'log':_0x4aef('0x3')});};
\ No newline at end of file
index d9f35dd..334aed0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1738=['strategy','online','chatPause','../client','getChatQueues','name','timeout'];(function(_0x55b351,_0x1bb062){var _0x3f684f=function(_0x4aab3a){while(--_0x4aab3a){_0x55b351['push'](_0x55b351['shift']());}};_0x3f684f(++_0x1bb062);}(_0x1738,0x1bc));var _0x8173=function(_0x43df14,_0x317c1d){_0x43df14=_0x43df14-0x0;var _0x11ce70=_0x1738[_0x43df14];return _0x11ce70;};'use strict';var client=require(_0x8173('0x0'));exports[_0x8173('0x1')]=function(){return function(){return client['Request']('GetChatQueue',{'options':{'raw':![],'attributes':['id',_0x8173('0x2'),_0x8173('0x3'),_0x8173('0x4')],'include':[{'model':'User','as':'Agents','attributes':['id',_0x8173('0x2'),_0x8173('0x5'),_0x8173('0x6')]}]},'log':_0x8173('0x1')});};};
\ No newline at end of file
+var _0x4ce6=['../client','Request','GetChatQueue','name','timeout','strategy','User','getChatQueues'];(function(_0x4d7775,_0x808554){var _0x4ff7db=function(_0x1f582e){while(--_0x1f582e){_0x4d7775['push'](_0x4d7775['shift']());}};_0x4ff7db(++_0x808554);}(_0x4ce6,0x108));var _0x64ce=function(_0x43dc7e,_0x49a390){_0x43dc7e=_0x43dc7e-0x0;var _0x21e12d=_0x4ce6[_0x43dc7e];return _0x21e12d;};'use strict';var client=require(_0x64ce('0x0'));exports['getChatQueues']=function(){return function(){return client[_0x64ce('0x1')](_0x64ce('0x2'),{'options':{'raw':![],'attributes':['id',_0x64ce('0x3'),_0x64ce('0x4'),_0x64ce('0x5')],'include':[{'model':_0x64ce('0x6'),'as':'Agents','attributes':['id',_0x64ce('0x3'),'online','chatPause']}]},'log':_0x64ce('0x7')});};};
\ No newline at end of file
index 9dc859a..ee99e39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x340c=['Request','CreateChatQueueReport','update','UpdateChatQueueReport','DESC','../client','create'];(function(_0x2f45ea,_0x15c656){var _0x485a84=function(_0x4a1fe3){while(--_0x4a1fe3){_0x2f45ea['push'](_0x2f45ea['shift']());}};_0x485a84(++_0x15c656);}(_0x340c,0xe5));var _0xc340=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x340c[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xc340('0x0'));exports[_0xc340('0x1')]=function(_0x4053b6){return client[_0xc340('0x2')]('CreateChatQueueReport',{'body':_0x4053b6,'log':_0xc340('0x3')});};exports[_0xc340('0x4')]=function(_0x1d4fa7,_0x43c651){return client['Request'](_0xc340('0x5'),{'body':_0x43c651,'options':{'where':{'uniqueid':_0x1d4fa7},'order':[['id',_0xc340('0x6')]],'limit':0x1},'log':_0xc340('0x5')});};
\ No newline at end of file
+var _0x1159=['CreateChatQueueReport','update','UpdateChatQueueReport','../client','Request'];(function(_0x36f6da,_0x2f166b){var _0x57155e=function(_0x5bed0e){while(--_0x5bed0e){_0x36f6da['push'](_0x36f6da['shift']());}};_0x57155e(++_0x2f166b);}(_0x1159,0xf3));var _0x9115=function(_0x9e78a7,_0x4d32e2){_0x9e78a7=_0x9e78a7-0x0;var _0x46022e=_0x1159[_0x9e78a7];return _0x46022e;};'use strict';var client=require(_0x9115('0x0'));exports['create']=function(_0x5d2146){return client[_0x9115('0x1')](_0x9115('0x2'),{'body':_0x5d2146,'log':_0x9115('0x2')});};exports[_0x9115('0x3')]=function(_0x4554f6,_0x4661fc){return client[_0x9115('0x1')](_0x9115('0x4'),{'body':_0x4661fc,'options':{'where':{'uniqueid':_0x4554f6},'order':[['id','DESC']],'limit':0x1},'log':_0x9115('0x4')});};
\ No newline at end of file
index 8c4e03d..e6d39dc 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(_0x3a2850,_0x250e8b){var _0x315228=function(_0x3217a0){while(--_0x3217a0){_0x3a2850['push'](_0x3a2850['shift']());}};_0x315228(++_0x250e8b);}(_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 _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x271537,_0x8b7b3b){var _0x19dc22=function(_0x459bbf){while(--_0x459bbf){_0x271537['push'](_0x271537['shift']());}};_0x19dc22(++_0x8b7b3b);}(_0x7a54,0x106));var _0x47a5=function(_0x40544b,_0xefac1b){_0x40544b=_0x40544b-0x0;var _0x43e91d=_0x7a54[_0x40544b];return _0x43e91d;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(_0x44b31e,_0x58157c){return client[_0x47a5('0x2')](_0x47a5('0x3'),{'body':_0x58157c,'options':{'where':{'id':_0x44b31e}},'log':'updateFaxInteraction'});};exports[_0x47a5('0x4')]=function(_0x11bf85,_0x2a1a7e){return client[_0x47a5('0x2')](_0x47a5('0x5'),{'body':_0x2a1a7e,'options':{'where':{'id':_0x11bf85}},'log':'addTagsToFaxInteraction'});};
\ No newline at end of file
index 25ddad6..225b08e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fdf=['create','createFaxMessage'];(function(_0x25f2c,_0x30c372){var _0x1b48b3=function(_0x197edd){while(--_0x197edd){_0x25f2c['push'](_0x25f2c['shift']());}};_0x1b48b3(++_0x30c372);}(_0x1fdf,0xce));var _0xf1fd=function(_0x37909b,_0xbd548c){_0x37909b=_0x37909b-0x0;var _0x1a949b=_0x1fdf[_0x37909b];return _0x1a949b;};'use strict';var client=require('../client');exports[_0xf1fd('0x0')]=function(_0x57f293){return client['Request']('CreateFaxMessage',{'body':_0x57f293,'log':_0xf1fd('0x1')});};
\ No newline at end of file
+var _0x9b01=['../client','create','Request'];(function(_0x53126e,_0x4c55eb){var _0x2dd805=function(_0x2a4c0c){while(--_0x2a4c0c){_0x53126e['push'](_0x53126e['shift']());}};_0x2dd805(++_0x4c55eb);}(_0x9b01,0x6f));var _0x19b0=function(_0x36c6eb,_0x4fb127){_0x36c6eb=_0x36c6eb-0x0;var _0x30675b=_0x9b01[_0x36c6eb];return _0x30675b;};'use strict';var client=require(_0x19b0('0x0'));exports[_0x19b0('0x1')]=function(_0x47e33b){return client[_0x19b0('0x2')]('CreateFaxMessage',{'body':_0x47e33b,'log':'createFaxMessage'});};
\ No newline at end of file
index 1940737..cfacf24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a0a=['getFaxQueues','Request','GetFaxQueue','strategy','Agents','name','faxPause','../client'];(function(_0x3c5d17,_0x3de656){var _0x30f3b9=function(_0xb07c56){while(--_0xb07c56){_0x3c5d17['push'](_0x3c5d17['shift']());}};_0x30f3b9(++_0x3de656);}(_0x6a0a,0xff));var _0xa6a0=function(_0x291b93,_0x44b715){_0x291b93=_0x291b93-0x0;var _0x4183c8=_0x6a0a[_0x291b93];return _0x4183c8;};'use strict';var client=require(_0xa6a0('0x0'));exports[_0xa6a0('0x1')]=function(){return function(){return client[_0xa6a0('0x2')](_0xa6a0('0x3'),{'options':{'raw':![],'attributes':['id','name','timeout',_0xa6a0('0x4')],'include':[{'model':'User','as':_0xa6a0('0x5'),'attributes':['id',_0xa6a0('0x6'),'online',_0xa6a0('0x7')]}]},'log':_0xa6a0('0x1')});};};
\ No newline at end of file
+var _0x6249=['timeout','strategy','User','online','faxPause','getFaxQueues','GetFaxQueue','name'];(function(_0x36186e,_0x1705a7){var _0x4dea23=function(_0x3d7ee9){while(--_0x3d7ee9){_0x36186e['push'](_0x36186e['shift']());}};_0x4dea23(++_0x1705a7);}(_0x6249,0x95));var _0x9624=function(_0x5e322c,_0x317e5f){_0x5e322c=_0x5e322c-0x0;var _0x488865=_0x6249[_0x5e322c];return _0x488865;};'use strict';var client=require('../client');exports[_0x9624('0x0')]=function(){return function(){return client['Request'](_0x9624('0x1'),{'options':{'raw':![],'attributes':['id',_0x9624('0x2'),_0x9624('0x3'),_0x9624('0x4')],'include':[{'model':_0x9624('0x5'),'as':'Agents','attributes':['id','name',_0x9624('0x6'),_0x9624('0x7')]}]},'log':'getFaxQueues'});};};
\ No newline at end of file
index 307e79c..0485b01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3630=['UpdateFaxQueueReport','DESC','../client','create','Request','CreateFaxQueueReport','update'];(function(_0x153136,_0x2be1b6){var _0x35abfd=function(_0xc9e71f){while(--_0xc9e71f){_0x153136['push'](_0x153136['shift']());}};_0x35abfd(++_0x2be1b6);}(_0x3630,0x1ec));var _0x0363=function(_0x23c776,_0x4d7c4e){_0x23c776=_0x23c776-0x0;var _0x57a337=_0x3630[_0x23c776];return _0x57a337;};'use strict';var client=require(_0x0363('0x0'));exports[_0x0363('0x1')]=function(_0x2177bf){return client[_0x0363('0x2')]('CreateFaxQueueReport',{'body':_0x2177bf,'log':_0x0363('0x3')});};exports[_0x0363('0x4')]=function(_0x550320,_0x1515d2){return client['Request'](_0x0363('0x5'),{'body':_0x1515d2,'options':{'where':{'uniqueid':_0x550320},'order':[['id',_0x0363('0x6')]],'limit':0x1},'log':_0x0363('0x5')});};
\ No newline at end of file
+var _0x07d7=['update','UpdateFaxQueueReport','../client','create','CreateFaxQueueReport'];(function(_0x525d4f,_0x25fa07){var _0x3aa209=function(_0x17fda3){while(--_0x17fda3){_0x525d4f['push'](_0x525d4f['shift']());}};_0x3aa209(++_0x25fa07);}(_0x07d7,0xa7));var _0x707d=function(_0x4f6d08,_0x1b3dd0){_0x4f6d08=_0x4f6d08-0x0;var _0x53a9c6=_0x07d7[_0x4f6d08];return _0x53a9c6;};'use strict';var client=require(_0x707d('0x0'));exports[_0x707d('0x1')]=function(_0x5eeabb){return client['Request'](_0x707d('0x2'),{'body':_0x5eeabb,'log':_0x707d('0x2')});};exports[_0x707d('0x3')]=function(_0x201148,_0x4f8de5){return client['Request'](_0x707d('0x4'),{'body':_0x4f8de5,'options':{'where':{'uniqueid':_0x201148},'order':[['id','DESC']],'limit':0x1},'log':_0x707d('0x4')});};
\ No newline at end of file
index 4560317..ee99cec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5c9=['getIntervals','GetInterval','name','Intervals','interval','../client'];(function(_0x394426,_0x542438){var _0xdf061f=function(_0x54a695){while(--_0x54a695){_0x394426['push'](_0x394426['shift']());}};_0xdf061f(++_0x542438);}(_0xc5c9,0x15b));var _0x9c5c=function(_0xdff529,_0x46c509){_0xdff529=_0xdff529-0x0;var _0x4c7b77=_0xc5c9[_0xdff529];return _0x4c7b77;};'use strict';var client=require(_0x9c5c('0x0'));exports[_0x9c5c('0x1')]=function(){return function(){return client['Request'](_0x9c5c('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x9c5c('0x3')],'include':[{'model':'Interval','as':_0x9c5c('0x4'),'attributes':['id',_0x9c5c('0x3'),_0x9c5c('0x5')]}]},'log':_0x9c5c('0x1')});};};
\ No newline at end of file
+var _0x59ab=['GetInterval','name','Interval','interval','getIntervals'];(function(_0x9cfe28,_0x1a335c){var _0x54a1d0=function(_0x46bc02){while(--_0x46bc02){_0x9cfe28['push'](_0x9cfe28['shift']());}};_0x54a1d0(++_0x1a335c);}(_0x59ab,0xd6));var _0xb59a=function(_0x377e4c,_0x2860d2){_0x377e4c=_0x377e4c-0x0;var _0x529cb9=_0x59ab[_0x377e4c];return _0x529cb9;};'use strict';var client=require('../client');exports[_0xb59a('0x0')]=function(){return function(){return client['Request'](_0xb59a('0x1'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xb59a('0x2')],'include':[{'model':_0xb59a('0x3'),'as':'Intervals','attributes':['id',_0xb59a('0x2'),_0xb59a('0x4')]}]},'log':_0xb59a('0x0')});};};
\ No newline at end of file
index fad801e..c30350f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5430=['Request','UpdateMailInteraction','AddTagsToMailInteraction','addTagsToChatInteraction','../client','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5430,0x10c));var _0x0543=function(_0x1525e0,_0x50044a){_0x1525e0=_0x1525e0-0x0;var _0x4ada87=_0x5430[_0x1525e0];return _0x4ada87;};'use strict';var client=require(_0x0543('0x0'));exports[_0x0543('0x1')]=function(_0xa1b1a7,_0x4078bf){return client[_0x0543('0x2')](_0x0543('0x3'),{'body':_0x4078bf,'options':{'where':{'id':_0xa1b1a7}},'log':'updateMailInteraction'});};exports['addTags']=function(_0x1c5ab7,_0x4ee416){return client['Request'](_0x0543('0x4'),{'body':_0x4ee416,'options':{'where':{'id':_0x1c5ab7}},'log':_0x0543('0x5')});};
\ No newline at end of file
+var _0x0598=['AddTagsToMailInteraction','addTagsToChatInteraction','../client','update','updateMailInteraction','addTags'];(function(_0xb4e69c,_0x2c2f38){var _0x452c3=function(_0x412ccb){while(--_0x412ccb){_0xb4e69c['push'](_0xb4e69c['shift']());}};_0x452c3(++_0x2c2f38);}(_0x0598,0x92));var _0x8059=function(_0x46e263,_0x8d2901){_0x46e263=_0x46e263-0x0;var _0x598cd4=_0x0598[_0x46e263];return _0x598cd4;};'use strict';var client=require(_0x8059('0x0'));exports[_0x8059('0x1')]=function(_0x5c8253,_0x3386f0){return client['Request']('UpdateMailInteraction',{'body':_0x3386f0,'options':{'where':{'id':_0x5c8253}},'log':_0x8059('0x2')});};exports[_0x8059('0x3')]=function(_0x54b9a2,_0x54f42f){return client['Request'](_0x8059('0x4'),{'body':_0x54f42f,'options':{'where':{'id':_0x54b9a2}},'log':_0x8059('0x5')});};
\ No newline at end of file
index 3668d10..f28dac8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f76=['CreateMailMessage','createMailMessage','../client','create','Request'];(function(_0x4ccd07,_0x33e234){var _0x517d1c=function(_0x30dab0){while(--_0x30dab0){_0x4ccd07['push'](_0x4ccd07['shift']());}};_0x517d1c(++_0x33e234);}(_0x9f76,0x1d8));var _0x69f7=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9f76[_0x3947c9];return _0x2e7871;};'use strict';var client=require(_0x69f7('0x0'));exports[_0x69f7('0x1')]=function(_0x283b2a){return client[_0x69f7('0x2')](_0x69f7('0x3'),{'body':_0x283b2a,'log':_0x69f7('0x4')});};
\ No newline at end of file
+var _0x46af=['createMailMessage','CreateMailMessage'];(function(_0x2064e5,_0x4f6fa2){var _0x21a233=function(_0x1b2491){while(--_0x1b2491){_0x2064e5['push'](_0x2064e5['shift']());}};_0x21a233(++_0x4f6fa2);}(_0x46af,0xe5));var _0xf46a=function(_0x17d665,_0x38217a){_0x17d665=_0x17d665-0x0;var _0x5ab865=_0x46af[_0x17d665];return _0x5ab865;};'use strict';var client=require('../client');exports['create']=function(_0x39c782){return client['Request'](_0xf46a('0x0'),{'body':_0x39c782,'log':_0xf46a('0x1')});};
\ No newline at end of file
index 91ff806..9a59e5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3060=['name','mailPause','getMailQueues','../client','Request','GetMailQueue','Agents'];(function(_0x62bc59,_0x4a7f21){var _0x414cac=function(_0x5c0b03){while(--_0x5c0b03){_0x62bc59['push'](_0x62bc59['shift']());}};_0x414cac(++_0x4a7f21);}(_0x3060,0xce));var _0x0306=function(_0x498b38,_0x2d9583){_0x498b38=_0x498b38-0x0;var _0x10feb7=_0x3060[_0x498b38];return _0x10feb7;};'use strict';var client=require(_0x0306('0x0'));exports['getMailQueues']=function(){return function(){return client[_0x0306('0x1')](_0x0306('0x2'),{'options':{'raw':![],'attributes':['id','name','timeout','strategy'],'include':[{'model':'User','as':_0x0306('0x3'),'attributes':['id',_0x0306('0x4'),'online',_0x0306('0x5')]}]},'log':_0x0306('0x6')});};};
\ No newline at end of file
+var _0xb933=['timeout','strategy','User','online','mailPause','../client','getMailQueues','Request','GetMailQueue','name'];(function(_0x34119a,_0x4f315b){var _0x5ae3c1=function(_0x329157){while(--_0x329157){_0x34119a['push'](_0x34119a['shift']());}};_0x5ae3c1(++_0x4f315b);}(_0xb933,0x1ef));var _0x3b93=function(_0x2ef44b,_0x553359){_0x2ef44b=_0x2ef44b-0x0;var _0x2405b9=_0xb933[_0x2ef44b];return _0x2405b9;};'use strict';var client=require(_0x3b93('0x0'));exports[_0x3b93('0x1')]=function(){return function(){return client[_0x3b93('0x2')](_0x3b93('0x3'),{'options':{'raw':![],'attributes':['id',_0x3b93('0x4'),_0x3b93('0x5'),_0x3b93('0x6')],'include':[{'model':_0x3b93('0x7'),'as':'Agents','attributes':['id',_0x3b93('0x4'),_0x3b93('0x8'),_0x3b93('0x9')]}]},'log':_0x3b93('0x1')});};};
\ No newline at end of file
index 3649248..5e0bf94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x565d=['UpdateMailQueueReport','DESC','../client','create','Request','CreateMailQueueReport'];(function(_0x19a9b5,_0x198382){var _0x632733=function(_0x2b4f07){while(--_0x2b4f07){_0x19a9b5['push'](_0x19a9b5['shift']());}};_0x632733(++_0x198382);}(_0x565d,0x6e));var _0xd565=function(_0x18a349,_0x236999){_0x18a349=_0x18a349-0x0;var _0x43810b=_0x565d[_0x18a349];return _0x43810b;};'use strict';var client=require(_0xd565('0x0'));exports[_0xd565('0x1')]=function(_0x28b7c7){return client[_0xd565('0x2')](_0xd565('0x3'),{'body':_0x28b7c7,'log':_0xd565('0x3')});};exports['update']=function(_0xd0e315,_0x2f3922){return client[_0xd565('0x2')](_0xd565('0x4'),{'body':_0x2f3922,'options':{'where':{'uniqueid':_0xd0e315},'order':[['id',_0xd565('0x5')]],'limit':0x1},'log':'UpdateMailQueueReport'});};
\ No newline at end of file
+var _0xecfc=['CreateMailQueueReport','UpdateMailQueueReport','DESC','../client','create','Request'];(function(_0x41bfa8,_0x2222f0){var _0x5a689e=function(_0x9c9b27){while(--_0x9c9b27){_0x41bfa8['push'](_0x41bfa8['shift']());}};_0x5a689e(++_0x2222f0);}(_0xecfc,0x117));var _0xcecf=function(_0x81f4ea,_0xdeb3a5){_0x81f4ea=_0x81f4ea-0x0;var _0x4e641b=_0xecfc[_0x81f4ea];return _0x4e641b;};'use strict';var client=require(_0xcecf('0x0'));exports[_0xcecf('0x1')]=function(_0x39e7d4){return client[_0xcecf('0x2')](_0xcecf('0x3'),{'body':_0x39e7d4,'log':'CreateMailQueueReport'});};exports['update']=function(_0x25bada,_0x1e94fa){return client[_0xcecf('0x2')](_0xcecf('0x4'),{'body':_0x1e94fa,'options':{'where':{'uniqueid':_0x25bada},'order':[['id',_0xcecf('0x5')]],'limit':0x1},'log':_0xcecf('0x4')});};
\ No newline at end of file
index c546e7d..d712dc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6de=['../client','Request','UpdateOpenchannelInteraction','updateOpenchannelInteraction'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xb6de,0x15c));var _0xeb6d=function(_0x4bfd7f,_0xc726c){_0x4bfd7f=_0x4bfd7f-0x0;var _0x24e423=_0xb6de[_0x4bfd7f];return _0x24e423;};'use strict';var client=require(_0xeb6d('0x0'));exports['update']=function(_0x4a6db9,_0x145d2d){return client[_0xeb6d('0x1')](_0xeb6d('0x2'),{'body':_0x145d2d,'options':{'where':{'id':_0x4a6db9}},'log':_0xeb6d('0x3')});};exports['addTags']=function(_0x260aa9,_0x54205e){return client['Request']('AddTagsToOpenchannelInteraction',{'body':_0x54205e,'options':{'where':{'id':_0x260aa9}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0x1f4d=['updateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','update','Request','UpdateOpenchannelInteraction'];(function(_0x524c28,_0x5320e1){var _0x598a65=function(_0x362987){while(--_0x362987){_0x524c28['push'](_0x524c28['shift']());}};_0x598a65(++_0x5320e1);}(_0x1f4d,0xf4));var _0xd1f4=function(_0x320635,_0x33518f){_0x320635=_0x320635-0x0;var _0x46ea17=_0x1f4d[_0x320635];return _0x46ea17;};'use strict';var client=require(_0xd1f4('0x0'));exports[_0xd1f4('0x1')]=function(_0x2c2606,_0x87c797){return client[_0xd1f4('0x2')](_0xd1f4('0x3'),{'body':_0x87c797,'options':{'where':{'id':_0x2c2606}},'log':_0xd1f4('0x4')});};exports[_0xd1f4('0x5')]=function(_0x33d2f9,_0x5d0e45){return client[_0xd1f4('0x2')](_0xd1f4('0x6'),{'body':_0x5d0e45,'options':{'where':{'id':_0x33d2f9}},'log':_0xd1f4('0x7')});};
\ No newline at end of file
index 3b9274c..ad41848 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce69=['Request','CreateOpenchannelMessage','createOpenchannelMessage','../client','create'];(function(_0x11705f,_0x5fb4ff){var _0x43d0d1=function(_0x27fcc1){while(--_0x27fcc1){_0x11705f['push'](_0x11705f['shift']());}};_0x43d0d1(++_0x5fb4ff);}(_0xce69,0x80));var _0x9ce6=function(_0x1e91eb,_0x5829a3){_0x1e91eb=_0x1e91eb-0x0;var _0x2af75a=_0xce69[_0x1e91eb];return _0x2af75a;};'use strict';var client=require(_0x9ce6('0x0'));exports[_0x9ce6('0x1')]=function(_0x127393){return client[_0x9ce6('0x2')](_0x9ce6('0x3'),{'body':_0x127393,'log':_0x9ce6('0x4')});};
\ No newline at end of file
+var _0x5cd0=['CreateOpenchannelMessage','createOpenchannelMessage','../client','create','Request'];(function(_0x3d540f,_0x330ad3){var _0x470664=function(_0x463481){while(--_0x463481){_0x3d540f['push'](_0x3d540f['shift']());}};_0x470664(++_0x330ad3);}(_0x5cd0,0x1c4));var _0x05cd=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x5cd0[_0x199572];return _0x13cfa3;};'use strict';var client=require(_0x05cd('0x0'));exports[_0x05cd('0x1')]=function(_0x161cf4){return client[_0x05cd('0x2')](_0x05cd('0x3'),{'body':_0x161cf4,'log':_0x05cd('0x4')});};
\ No newline at end of file
index ca0f729..f7c302e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfbe=['strategy','online','../client','getOpenchannelQueues','Request','name','timeout'];(function(_0xc8a663,_0x17b8f1){var _0x2b74e0=function(_0xff0285){while(--_0xff0285){_0xc8a663['push'](_0xc8a663['shift']());}};_0x2b74e0(++_0x17b8f1);}(_0xdfbe,0x72));var _0xedfb=function(_0xbfa28,_0xe6f03b){_0xbfa28=_0xbfa28-0x0;var _0x5a4474=_0xdfbe[_0xbfa28];return _0x5a4474;};'use strict';var client=require(_0xedfb('0x0'));exports[_0xedfb('0x1')]=function(){return function(){return client[_0xedfb('0x2')]('GetOpenchannelQueue',{'options':{'raw':![],'attributes':['id',_0xedfb('0x3'),_0xedfb('0x4'),_0xedfb('0x5')],'include':[{'model':'User','as':'Agents','attributes':['id',_0xedfb('0x3'),_0xedfb('0x6'),'openchannelPause']}]},'log':_0xedfb('0x1')});};};
\ No newline at end of file
+var _0xe2c8=['Agents','name','openchannelPause','getOpenchannelQueues','../client','Request','strategy','User'];(function(_0xdcda3,_0x4252fb){var _0x2bec82=function(_0x589fe2){while(--_0x589fe2){_0xdcda3['push'](_0xdcda3['shift']());}};_0x2bec82(++_0x4252fb);}(_0xe2c8,0x8c));var _0x8e2c=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xe2c8[_0x4b369d];return _0x571a98;};'use strict';var client=require(_0x8e2c('0x0'));exports['getOpenchannelQueues']=function(){return function(){return client[_0x8e2c('0x1')]('GetOpenchannelQueue',{'options':{'raw':![],'attributes':['id','name','timeout',_0x8e2c('0x2')],'include':[{'model':_0x8e2c('0x3'),'as':_0x8e2c('0x4'),'attributes':['id',_0x8e2c('0x5'),'online',_0x8e2c('0x6')]}]},'log':_0x8e2c('0x7')});};};
\ No newline at end of file
index 16a0488..53d3133 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe350=['update','UpdateOpenchannelQueueReport','../client','create','Request','CreateOpenchannelQueueReport'];(function(_0x19691f,_0x159737){var _0x5677b6=function(_0x41a9b2){while(--_0x41a9b2){_0x19691f['push'](_0x19691f['shift']());}};_0x5677b6(++_0x159737);}(_0xe350,0x12e));var _0x0e35=function(_0x4d244a,_0x15674f){_0x4d244a=_0x4d244a-0x0;var _0x55fb74=_0xe350[_0x4d244a];return _0x55fb74;};'use strict';var client=require(_0x0e35('0x0'));exports[_0x0e35('0x1')]=function(_0x38cc64){return client[_0x0e35('0x2')](_0x0e35('0x3'),{'body':_0x38cc64,'log':_0x0e35('0x3')});};exports[_0x0e35('0x4')]=function(_0x2b3302,_0x181119){return client[_0x0e35('0x2')]('UpdateOpenchannelQueueReport',{'body':_0x181119,'options':{'where':{'uniqueid':_0x2b3302},'order':[['id','DESC']],'limit':0x1},'log':_0x0e35('0x5')});};
\ No newline at end of file
+var _0xf742=['Request','DESC','UpdateOpenchannelQueueReport','create','CreateOpenchannelQueueReport','update'];(function(_0x23d63e,_0x1a6044){var _0x28dafe=function(_0x4d6e12){while(--_0x4d6e12){_0x23d63e['push'](_0x23d63e['shift']());}};_0x28dafe(++_0x1a6044);}(_0xf742,0x75));var _0x2f74=function(_0x3b3f40,_0x5551ad){_0x3b3f40=_0x3b3f40-0x0;var _0x4413b8=_0xf742[_0x3b3f40];return _0x4413b8;};'use strict';var client=require('../client');exports[_0x2f74('0x0')]=function(_0x37a85e){return client['Request'](_0x2f74('0x1'),{'body':_0x37a85e,'log':_0x2f74('0x1')});};exports[_0x2f74('0x2')]=function(_0xc105fe,_0x4124af){return client[_0x2f74('0x3')]('UpdateOpenchannelQueueReport',{'body':_0x4124af,'options':{'where':{'uniqueid':_0xc105fe},'order':[['id',_0x2f74('0x4')]],'limit':0x1},'log':_0x2f74('0x5')});};
\ No newline at end of file
index 9e5754c..e99f17a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9865=['AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','update','Request','UpdateSmsInteraction','updateSmsInteraction','addTags'];(function(_0x505511,_0x507549){var _0x4c819b=function(_0x5861e1){while(--_0x5861e1){_0x505511['push'](_0x505511['shift']());}};_0x4c819b(++_0x507549);}(_0x9865,0x1ba));var _0x5986=function(_0x54fba8,_0x4f535f){_0x54fba8=_0x54fba8-0x0;var _0x5a62ce=_0x9865[_0x54fba8];return _0x5a62ce;};'use strict';var client=require(_0x5986('0x0'));exports[_0x5986('0x1')]=function(_0x27fc09,_0xac68cf){return client[_0x5986('0x2')](_0x5986('0x3'),{'body':_0xac68cf,'options':{'where':{'id':_0x27fc09}},'log':_0x5986('0x4')});};exports[_0x5986('0x5')]=function(_0x236420,_0xef2d15){return client['Request'](_0x5986('0x6'),{'body':_0xef2d15,'options':{'where':{'id':_0x236420}},'log':_0x5986('0x7')});};
\ No newline at end of file
+var _0xd04b=['addTags','AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','update','Request','updateSmsInteraction'];(function(_0x705771,_0x5e2ac0){var _0x366e89=function(_0x4e21c1){while(--_0x4e21c1){_0x705771['push'](_0x705771['shift']());}};_0x366e89(++_0x5e2ac0);}(_0xd04b,0x145));var _0xbd04=function(_0x4410f4,_0x1d1c17){_0x4410f4=_0x4410f4-0x0;var _0x20352e=_0xd04b[_0x4410f4];return _0x20352e;};'use strict';var client=require(_0xbd04('0x0'));exports[_0xbd04('0x1')]=function(_0x4775e2,_0x5186f0){return client[_0xbd04('0x2')]('UpdateSmsInteraction',{'body':_0x5186f0,'options':{'where':{'id':_0x4775e2}},'log':_0xbd04('0x3')});};exports[_0xbd04('0x4')]=function(_0xc1c02f,_0xe948b3){return client[_0xbd04('0x2')](_0xbd04('0x5'),{'body':_0xe948b3,'options':{'where':{'id':_0xc1c02f}},'log':_0xbd04('0x6')});};
\ No newline at end of file
index b085369..8ff8a08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bb9=['create','Request','CreateSmsMessage','../client'];(function(_0x11a962,_0x3cc338){var _0x55d423=function(_0xf4b236){while(--_0xf4b236){_0x11a962['push'](_0x11a962['shift']());}};_0x55d423(++_0x3cc338);}(_0x8bb9,0x1f3));var _0x98bb=function(_0x5ba74f,_0x200bf4){_0x5ba74f=_0x5ba74f-0x0;var _0x534d79=_0x8bb9[_0x5ba74f];return _0x534d79;};'use strict';var client=require(_0x98bb('0x0'));exports[_0x98bb('0x1')]=function(_0x304bea){return client[_0x98bb('0x2')](_0x98bb('0x3'),{'body':_0x304bea,'log':'createSmsMessage'});};
\ No newline at end of file
+var _0x972c=['create','createSmsMessage','../client'];(function(_0x57f621,_0x39f2b6){var _0x1534ee=function(_0x12be0c){while(--_0x12be0c){_0x57f621['push'](_0x57f621['shift']());}};_0x1534ee(++_0x39f2b6);}(_0x972c,0xd1));var _0xc972=function(_0x43bb1e,_0x184613){_0x43bb1e=_0x43bb1e-0x0;var _0x554c38=_0x972c[_0x43bb1e];return _0x554c38;};'use strict';var client=require(_0xc972('0x0'));exports[_0xc972('0x1')]=function(_0x4e493c){return client['Request']('CreateSmsMessage',{'body':_0x4e493c,'log':_0xc972('0x2')});};
\ No newline at end of file
index 88bfedb..6e11893 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['smsPause','Request','GetSmsQueue','name','timeout','User','Agents','online'];(function(_0x2adb52,_0x11bc42){var _0x26585=function(_0x4471fa){while(--_0x4471fa){_0x2adb52['push'](_0x2adb52['shift']());}};_0x26585(++_0x11bc42);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4c4042,_0x1ea485){_0x4c4042=_0x4c4042-0x0;var _0xbd10dc=_0xcb91[_0x4c4042];return _0xbd10dc;};'use strict';var client=require('../client');exports['getSmsQueues']=function(){return function(){return client[_0x1cb9('0x0')](_0x1cb9('0x1'),{'options':{'raw':![],'attributes':['id',_0x1cb9('0x2'),_0x1cb9('0x3'),'strategy'],'include':[{'model':_0x1cb9('0x4'),'as':_0x1cb9('0x5'),'attributes':['id','name',_0x1cb9('0x6'),_0x1cb9('0x7')]}]},'log':'getSmsQueues'});};};
\ No newline at end of file
+var _0xcb91=['smsPause','Request','GetSmsQueue','name','timeout','User','Agents','online'];(function(_0xda6cbb,_0x468e2e){var _0x4b4d87=function(_0x4926f7){while(--_0x4926f7){_0xda6cbb['push'](_0xda6cbb['shift']());}};_0x4b4d87(++_0x468e2e);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x270a54,_0x307ff6){_0x270a54=_0x270a54-0x0;var _0x4d07d0=_0xcb91[_0x270a54];return _0x4d07d0;};'use strict';var client=require('../client');exports['getSmsQueues']=function(){return function(){return client[_0x1cb9('0x0')](_0x1cb9('0x1'),{'options':{'raw':![],'attributes':['id',_0x1cb9('0x2'),_0x1cb9('0x3'),'strategy'],'include':[{'model':_0x1cb9('0x4'),'as':_0x1cb9('0x5'),'attributes':['id','name',_0x1cb9('0x6'),_0x1cb9('0x7')]}]},'log':'getSmsQueues'});};};
\ No newline at end of file
index 92aed61..4be0eb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['../client','create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x33b0bd,_0x182679){var _0x41b549=function(_0x14e3f4){while(--_0x14e3f4){_0x33b0bd['push'](_0x33b0bd['shift']());}};_0x41b549(++_0x182679);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3){return client[_0x7995('0x2')]('CreateSmsQueueReport',{'body':_0x2722a3,'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x1902b4,_0x462a03){return client['Request'](_0x7995('0x5'),{'body':_0x462a03,'options':{'where':{'uniqueid':_0x1902b4},'order':[['id',_0x7995('0x6')]],'limit':0x1},'log':_0x7995('0x5')});};
\ No newline at end of file
+var _0x34e8=['create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC','../client'];(function(_0x49a3a6,_0x2fd407){var _0x5cfa3b=function(_0x33462d){while(--_0x33462d){_0x49a3a6['push'](_0x49a3a6['shift']());}};_0x5cfa3b(++_0x2fd407);}(_0x34e8,0x12c));var _0x834e=function(_0x40e3e6,_0x5cb1bf){_0x40e3e6=_0x40e3e6-0x0;var _0x54210f=_0x34e8[_0x40e3e6];return _0x54210f;};'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
index 67dbc93..02216f3 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(_0x3c6827,_0xc9558e){var _0x1ae1cb=function(_0x41cd5a){while(--_0x41cd5a){_0x3c6827['push'](_0x3c6827['shift']());}};_0x1ae1cb(++_0xc9558e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xa9e0[_0x484e36];return _0xafc85d;};'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(_0x3b5332,_0x1c351f){var _0x2cebf6=function(_0x12c6b8){while(--_0x12c6b8){_0x3b5332['push'](_0x3b5332['shift']());}};_0x2cebf6(++_0x1c351f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xa9e0[_0x34bf97];return _0x292719;};'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 27ce669..efeb33e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc61d=['update','Request','UpdateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction','../client'];(function(_0x500d82,_0x1d3db0){var _0x371a97=function(_0x5be2c1){while(--_0x5be2c1){_0x500d82['push'](_0x500d82['shift']());}};_0x371a97(++_0x1d3db0);}(_0xc61d,0xfb));var _0xdc61=function(_0x4fc6f7,_0x10e344){_0x4fc6f7=_0x4fc6f7-0x0;var _0x3fcab8=_0xc61d[_0x4fc6f7];return _0x3fcab8;};'use strict';var client=require(_0xdc61('0x0'));exports[_0xdc61('0x1')]=function(_0x3078b6,_0x444fd6){return client[_0xdc61('0x2')](_0xdc61('0x3'),{'body':_0x444fd6,'options':{'where':{'id':_0x3078b6}},'log':'updateWhatsappInteraction'});};exports[_0xdc61('0x4')]=function(_0x237baa,_0x4ebd75){return client[_0xdc61('0x2')](_0xdc61('0x5'),{'body':_0x4ebd75,'options':{'where':{'id':_0x237baa}},'log':_0xdc61('0x6')});};
\ No newline at end of file
+var _0x1b65=['Request','AddTagsToWhatsappInteraction','../client','update','UpdateWhatsappInteraction','updateWhatsappInteraction','addTags'];(function(_0x44f190,_0x28b97d){var _0x33ed63=function(_0x4e6ae2){while(--_0x4e6ae2){_0x44f190['push'](_0x44f190['shift']());}};_0x33ed63(++_0x28b97d);}(_0x1b65,0x1b4));var _0x51b6=function(_0x30a19c,_0x379a40){_0x30a19c=_0x30a19c-0x0;var _0x4f3f36=_0x1b65[_0x30a19c];return _0x4f3f36;};'use strict';var client=require(_0x51b6('0x0'));exports[_0x51b6('0x1')]=function(_0x3e4953,_0x1a876f){return client['Request'](_0x51b6('0x2'),{'body':_0x1a876f,'options':{'where':{'id':_0x3e4953}},'log':_0x51b6('0x3')});};exports[_0x51b6('0x4')]=function(_0x2d5762,_0x1a1c26){return client[_0x51b6('0x5')](_0x51b6('0x6'),{'body':_0x1a1c26,'options':{'where':{'id':_0x2d5762}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
index 2ac223b..5d54216 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87f7=['Request','CreateWhatsappMessage','createWhatsappMessage','../client','create'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x87f7,0x161));var _0x787f=function(_0x5d882c,_0x1b47bf){_0x5d882c=_0x5d882c-0x0;var _0x920a9=_0x87f7[_0x5d882c];return _0x920a9;};'use strict';var client=require(_0x787f('0x0'));exports[_0x787f('0x1')]=function(_0x4fb15f){return client[_0x787f('0x2')](_0x787f('0x3'),{'body':_0x4fb15f,'log':_0x787f('0x4')});};
\ No newline at end of file
+var _0x8ee7=['createWhatsappMessage','../client','create','Request','CreateWhatsappMessage'];(function(_0x531495,_0x29cbfe){var _0x39766a=function(_0x5436ef){while(--_0x5436ef){_0x531495['push'](_0x531495['shift']());}};_0x39766a(++_0x29cbfe);}(_0x8ee7,0x128));var _0x78ee=function(_0x51a0c6,_0x4b3b74){_0x51a0c6=_0x51a0c6-0x0;var _0x249563=_0x8ee7[_0x51a0c6];return _0x249563;};'use strict';var client=require(_0x78ee('0x0'));exports[_0x78ee('0x1')]=function(_0x31375b){return client[_0x78ee('0x2')](_0x78ee('0x3'),{'body':_0x31375b,'log':_0x78ee('0x4')});};
\ No newline at end of file
index cc1a1fd..9fa0643 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13c0=['User','Agents','name','whatsappPause','../client','getWhatsappQueues','Request','timeout','strategy'];(function(_0x146e46,_0x53475e){var _0x5b1391=function(_0x1ff46){while(--_0x1ff46){_0x146e46['push'](_0x146e46['shift']());}};_0x5b1391(++_0x53475e);}(_0x13c0,0x8b));var _0x013c=function(_0x2ecdbe,_0x114206){_0x2ecdbe=_0x2ecdbe-0x0;var _0x44d6d4=_0x13c0[_0x2ecdbe];return _0x44d6d4;};'use strict';var client=require(_0x013c('0x0'));exports[_0x013c('0x1')]=function(){return function(){return client[_0x013c('0x2')]('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id','name',_0x013c('0x3'),_0x013c('0x4')],'include':[{'model':_0x013c('0x5'),'as':_0x013c('0x6'),'attributes':['id',_0x013c('0x7'),'online',_0x013c('0x8')]}]},'log':'getWhatsappQueues'});};};
\ No newline at end of file
+var _0xabec=['timeout','strategy','User','Agents','whatsappPause','../client','getWhatsappQueues','Request','GetWhatsappQueue','name'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xabec,0x16d));var _0xcabe=function(_0xcd81b8,_0x18d9fd){_0xcd81b8=_0xcd81b8-0x0;var _0xc3ae18=_0xabec[_0xcd81b8];return _0xc3ae18;};'use strict';var client=require(_0xcabe('0x0'));exports[_0xcabe('0x1')]=function(){return function(){return client[_0xcabe('0x2')](_0xcabe('0x3'),{'options':{'raw':![],'attributes':['id',_0xcabe('0x4'),_0xcabe('0x5'),_0xcabe('0x6')],'include':[{'model':_0xcabe('0x7'),'as':_0xcabe('0x8'),'attributes':['id',_0xcabe('0x4'),'online',_0xcabe('0x9')]}]},'log':_0xcabe('0x1')});};};
\ No newline at end of file
index ddb0552..8d0d115 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe6e=['Request','CreateWhatsappQueueReport','update','UpdateWhatsappQueueReport','DESC','../client','create'];(function(_0x4ab6a1,_0x4d64d5){var _0x2a24cc=function(_0x2625a0){while(--_0x2625a0){_0x4ab6a1['push'](_0x4ab6a1['shift']());}};_0x2a24cc(++_0x4d64d5);}(_0xfe6e,0x147));var _0xefe6=function(_0x160589,_0x485ffb){_0x160589=_0x160589-0x0;var _0x14a8ba=_0xfe6e[_0x160589];return _0x14a8ba;};'use strict';var client=require(_0xefe6('0x0'));exports[_0xefe6('0x1')]=function(_0x4a65fb){return client[_0xefe6('0x2')]('CreateWhatsappQueueReport',{'body':_0x4a65fb,'log':_0xefe6('0x3')});};exports[_0xefe6('0x4')]=function(_0x4a6be1,_0x2bce4c){return client[_0xefe6('0x2')](_0xefe6('0x5'),{'body':_0x2bce4c,'options':{'where':{'uniqueid':_0x4a6be1},'order':[['id',_0xefe6('0x6')]],'limit':0x1},'log':'UpdateWhatsappQueueReport'});};
\ No newline at end of file
+var _0x6e6e=['CreateWhatsappQueueReport','Request','UpdateWhatsappQueueReport','../client','create'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x6e6e,0xe9));var _0xe6e6=function(_0x247d58,_0x432aca){_0x247d58=_0x247d58-0x0;var _0x59ac25=_0x6e6e[_0x247d58];return _0x59ac25;};'use strict';var client=require(_0xe6e6('0x0'));exports[_0xe6e6('0x1')]=function(_0x141db0){return client['Request'](_0xe6e6('0x2'),{'body':_0x141db0,'log':_0xe6e6('0x2')});};exports['update']=function(_0x25d085,_0x3be2d9){return client[_0xe6e6('0x3')](_0xe6e6('0x4'),{'body':_0x3be2d9,'options':{'where':{'uniqueid':_0x25d085},'order':[['id','DESC']],'limit':0x1},'log':'UpdateWhatsappQueueReport'});};
\ No newline at end of file
index 26eb39b..e9d5ff1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeeb3=['[%s][QUEUE]\x20%s','stack','validate','seq-queue','../../../../config/logger','routing','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','map','join','find','timeout','createQueue','atimeout','channel','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','next','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','error'];(function(_0x3794a0,_0x1a9cfc){var _0x5bdaba=function(_0x14a764){while(--_0x14a764){_0x3794a0['push'](_0x3794a0['shift']());}};_0x5bdaba(++_0x1a9cfc);}(_0xeeb3,0x122));var _0x3eeb=function(_0x50c7e8,_0x197fdf){_0x50c7e8=_0x50c7e8-0x0;var _0x3860a2=_0xeeb3[_0x50c7e8];return _0x3860a2;};'use strict';var schema=require(_0x3eeb('0x0'));var _=require('lodash');var util=require('util');var seqqueue=require(_0x3eeb('0x1'));var logger=require(_0x3eeb('0x2'))(_0x3eeb('0x3'));var strategy=require('./strategy');var queue=schema({'name':{'type':_0x3eeb('0x4'),'required':!![],'message':_0x3eeb('0x5')},'timeout':{'type':_0x3eeb('0x6'),'message':'timeout\x20is\x20a\x20number'}});function writeLog(_0x34a444,_0x23614a,_0x479583){return logger[_0x3eeb('0x7')](util[_0x3eeb('0x8')](_0x3eeb('0x9'),_0x34a444,_0x23614a[_0x3eeb('0xa')],_0x479583));}function handleFindAgent(_0x37b28e){return function(_0x57aacc){return _0x57aacc[_0x3eeb('0xa')][_0x3eeb('0xb')]()===_0x37b28e[_0x3eeb('0xb')]();};}exports[_0x3eeb('0xc')]=function(_0x5a75a8,_0x443ada,_0x38af59,_0x383064){return function(_0x11b366){try{var _0x247483={'name':_0x443ada[0x0],'timeout':_0x443ada[0x1]};var _0x22184d=queue[_0x3eeb('0x0')](_0x247483,{'typecast':!![]});if(_0x22184d[_0x3eeb('0xd')]){logger['error']('[%s][AGENT]\x20%s',_0x5a75a8,_[_0x3eeb('0xe')](_0x22184d,'message')[_0x3eeb('0xf')](',\x20'));_0x11b366['stop']();}else{var _0xa9c23b=_[_0x3eeb('0x10')](_0x38af59['agents'],handleFindAgent(_0x247483[_0x3eeb('0xa')]));if(_0xa9c23b){var _0x2b389c=(_0x247483[_0x3eeb('0x11')]||0xa)*0x3e8;var _0x1a42b3,_0xc6178c;var _0x198657=seqqueue[_0x3eeb('0x12')](_0x2b389c);_0x198657['id']=_0x5a75a8;_0x198657[_0x3eeb('0x13')]=_0x2b389c;_0x198657['channel']=_0x383064[_0x3eeb('0x14')];writeLog(_0x5a75a8,_0xa9c23b,util[_0x3eeb('0x8')]('START:%s',_0x2b389c));_0x38af59[_0x3eeb('0x15')][_0x5a75a8]['on'](_0x3eeb('0x16'),function(){logger[_0x3eeb('0x7')](_0x3eeb('0x17'),_0x5a75a8);clearTimeout(_0xc6178c);_0xc6178c=undefined;_0x198657[_0x3eeb('0x18')]();if(_0x38af59['rules'][_0x5a75a8]){delete _0x38af59[_0x3eeb('0x15')][_0x5a75a8];}_0x11b366['stop']();});_0x38af59[_0x3eeb('0x15')][_0x5a75a8]['on']('complete',function(){if(_0x38af59[_0x3eeb('0x15')][_0x5a75a8]){delete _0x38af59[_0x3eeb('0x15')][_0x5a75a8];}});_0xc6178c=setTimeout(function(){logger[_0x3eeb('0x7')]('[%s][AGENT]\x20ROUTING\x20END',_0x5a75a8);clearTimeout(_0xc6178c);_0x198657[_0x3eeb('0x18')]();_0x11b366[_0x3eeb('0x19')]();},_0x2b389c);strategy[_0x3eeb('0x1a')](_0x198657,_0xa9c23b,_0x38af59,_0x383064);}else{logger['error'](_0x3eeb('0x1b'),_0x5a75a8,_0x247483['name']);_0x11b366['stop']();}}}catch(_0x21886a){console[_0x3eeb('0x1c')](_0x21886a);logger[_0x3eeb('0x1d')](_0x3eeb('0x1e'),_0x5a75a8,_0x21886a[_0x3eeb('0x1f')]);_0x11b366['stop']();}};};
\ No newline at end of file
+var _0xa094=['[%s][AGENT]\x20ROUTING\x20STOPPED','close','[%s][AGENT]\x20ROUTING\x20END','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','seq-queue','../../../../config/logger','routing','./strategy','string','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','error','[%s][AGENT]\x20%s','message','join','stop','find','agents','timeout','createQueue','channel','START:%s','rules'];(function(_0x357db8,_0x2aa371){var _0x51066a=function(_0x1dd4aa){while(--_0x1dd4aa){_0x357db8['push'](_0x357db8['shift']());}};_0x51066a(++_0x2aa371);}(_0xa094,0x6e));var _0x4a09=function(_0x103d1d,_0x1ee454){_0x103d1d=_0x103d1d-0x0;var _0x384499=_0xa094[_0x103d1d];return _0x384499;};'use strict';var schema=require(_0x4a09('0x0'));var _=require('lodash');var util=require('util');var seqqueue=require(_0x4a09('0x1'));var logger=require(_0x4a09('0x2'))(_0x4a09('0x3'));var strategy=require(_0x4a09('0x4'));var queue=schema({'name':{'type':_0x4a09('0x5'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0x4a09('0x6'),'message':_0x4a09('0x7')}});function writeLog(_0x7e1985,_0x31e02c,_0x553bf0){return logger[_0x4a09('0x8')](util[_0x4a09('0x9')](_0x4a09('0xa'),_0x7e1985,_0x31e02c[_0x4a09('0xb')],_0x553bf0));}function handleFindAgent(_0x2976e5){return function(_0x383ded){return _0x383ded[_0x4a09('0xb')][_0x4a09('0xc')]()===_0x2976e5['toLowerCase']();};}exports[_0x4a09('0xd')]=function(_0x37bd53,_0x582476,_0x56b7a3,_0x353dd7){return function(_0x34bf38){try{var _0x375d46={'name':_0x582476[0x0],'timeout':_0x582476[0x1]};var _0x397be1=queue[_0x4a09('0x0')](_0x375d46,{'typecast':!![]});if(_0x397be1['length']){logger[_0x4a09('0xe')](_0x4a09('0xf'),_0x37bd53,_['map'](_0x397be1,_0x4a09('0x10'))[_0x4a09('0x11')](',\x20'));_0x34bf38[_0x4a09('0x12')]();}else{var _0x250106=_[_0x4a09('0x13')](_0x56b7a3[_0x4a09('0x14')],handleFindAgent(_0x375d46[_0x4a09('0xb')]));if(_0x250106){var _0x53dab7=(_0x375d46[_0x4a09('0x15')]||0xa)*0x3e8;var _0x438879,_0xafd7cf;var _0xce23b0=seqqueue[_0x4a09('0x16')](_0x53dab7);_0xce23b0['id']=_0x37bd53;_0xce23b0['atimeout']=_0x53dab7;_0xce23b0['channel']=_0x353dd7[_0x4a09('0x17')];writeLog(_0x37bd53,_0x250106,util['format'](_0x4a09('0x18'),_0x53dab7));_0x56b7a3[_0x4a09('0x19')][_0x37bd53]['on']('end',function(){logger[_0x4a09('0x8')](_0x4a09('0x1a'),_0x37bd53);clearTimeout(_0xafd7cf);_0xafd7cf=undefined;_0xce23b0[_0x4a09('0x1b')]();if(_0x56b7a3[_0x4a09('0x19')][_0x37bd53]){delete _0x56b7a3[_0x4a09('0x19')][_0x37bd53];}_0x34bf38[_0x4a09('0x12')]();});_0x56b7a3[_0x4a09('0x19')][_0x37bd53]['on']('complete',function(){if(_0x56b7a3[_0x4a09('0x19')][_0x37bd53]){delete _0x56b7a3[_0x4a09('0x19')][_0x37bd53];}});_0xafd7cf=setTimeout(function(){logger[_0x4a09('0x8')](_0x4a09('0x1c'),_0x37bd53);clearTimeout(_0xafd7cf);_0xce23b0[_0x4a09('0x1b')]();_0x34bf38['next']();},_0x53dab7);strategy[_0x4a09('0x1d')](_0xce23b0,_0x250106,_0x56b7a3,_0x353dd7);}else{logger[_0x4a09('0xe')](_0x4a09('0x1e'),_0x37bd53,_0x375d46[_0x4a09('0xb')]);_0x34bf38['stop']();}}}catch(_0x5dbed5){console[_0x4a09('0x1f')](_0x5dbed5);logger[_0x4a09('0xe')](_0x4a09('0x20'),_0x37bd53,_0x5dbed5[_0x4a09('0x21')]);_0x34bf38[_0x4a09('0x12')]();}};};
\ No newline at end of file
index f3d5951..5b7b082 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe063=['created','isEmpty','body','getMustacheRender','Message','create','then','catch','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','LexRuntime','$LATEST','message','postText','providerName','amazonlex','providerResponse','dialogState','lodash','moment','./utils','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','interaction','UserId','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','YYYY-MM-DD\x20HH:mm:ss','channel','whatsapp','phone','chat','account','AccountId','upperFirst','InteractionId'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xe063,0xcd));var _0x3e06=function(_0x10efdb,_0x39fe3f){_0x10efdb=_0x10efdb-0x0;var _0xb2c7fe=_0xe063[_0x10efdb];return _0xb2c7fe;};'use strict';var _=require(_0x3e06('0x0'));var moment=require(_0x3e06('0x1'));var AWS=require('aws-sdk');var utils=require(_0x3e06('0x2'));var logger=require('../../../../config/logger')(_0x3e06('0x3'));var rpc={'chatMessage':require(_0x3e06('0x4')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x3e06('0x5')),'smsMessage':require(_0x3e06('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x3e06('0x7'))};exports[_0x3e06('0x8')]=function(_0x2123a9,_0x429a7c){return function(_0x5b6cc8){try{if(!_['isNil'](this[_0x3e06('0x9')][_0x3e06('0xa')])){logger[_0x3e06('0xb')](_0x3e06('0xc'),_0x2123a9,_0x3e06('0xd'));return _0x5b6cc8[_0x3e06('0xe')]();}var _0x381337={'ContactId':this[_0x3e06('0xf')]['id'],'sentAt':moment()['format'](_0x3e06('0x10')),'direction':'out'};if(this[_0x3e06('0x11')]==='sms'||this[_0x3e06('0x11')]===_0x3e06('0x12')){_0x381337['phone']=this[_0x3e06('0x9')][_0x3e06('0x13')];}var _0x57f6cc=this['channel'];if(_0x57f6cc===_0x3e06('0x14')){_0x381337['ChatWebsiteId']=this[_0x3e06('0x15')]['id'];}else{_0x381337[_['upperFirst'](_0x57f6cc)+_0x3e06('0x16')]=this[_0x3e06('0x15')]['id'];}_0x381337[_[_0x3e06('0x17')](_0x57f6cc)+_0x3e06('0x18')]=this[_0x3e06('0x9')]['id'];if(this[_0x3e06('0x9')][_0x3e06('0x19')]){var _0x42f92b=_0x429a7c[0x4];if(!_[_0x3e06('0x1a')](_0x42f92b)){_0x381337[_0x3e06('0x1b')]=utils[_0x3e06('0x1c')](_0x42f92b,this);return rpc[_0x57f6cc+_0x3e06('0x1d')][_0x3e06('0x1e')](_0x381337)[_0x3e06('0x1f')](function(_0x549f40){logger[_0x3e06('0xb')](_0x3e06('0xc'),_0x2123a9,_0x381337[_0x3e06('0x1b')]);})[_0x3e06('0x20')](function(_0x74a9ea){logger[_0x3e06('0x21')](_0x3e06('0xc'),_0x2123a9,JSON[_0x3e06('0x22')](_0x74a9ea));})[_0x3e06('0x23')](function(){logger[_0x3e06('0xb')](_0x3e06('0x24'),_0x2123a9);_0x5b6cc8[_0x3e06('0x25')]();});}else{logger[_0x3e06('0xb')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x2123a9);_0x5b6cc8['stop']();}}else{var _0x16a383=this;var _0x41d339=new AWS[(_0x3e06('0x26'))]({'accessKeyId':_0x429a7c[0x0],'secretAccessKey':_0x429a7c[0x1],'region':_0x429a7c[0x2]});var _0x319f66={'botAlias':_0x3e06('0x27'),'botName':_0x429a7c[0x3],'inputText':this[_0x3e06('0x28')][_0x3e06('0x1b')],'userId':this[_0x3e06('0x11')]+':'+this[_0x3e06('0x9')]['id']['toString']()};_0x41d339[_0x3e06('0x29')](_0x319f66,function(_0x268fbe,_0x397d6a){if(_0x268fbe){logger['error'](_0x3e06('0xc'),_0x2123a9,_0x268fbe['message']);_0x5b6cc8[_0x3e06('0xe')]();}else if(_0x397d6a&&_0x397d6a[_0x3e06('0x28')]){_0x16a383[_0x3e06('0x1b')]['amazonlex']=_0x397d6a;_0x381337[_0x3e06('0x1b')]=_0x397d6a['message'];_0x381337[_0x3e06('0x2a')]=_0x3e06('0x2b');_0x381337[_0x3e06('0x2c')]=JSON[_0x3e06('0x22')](_0x397d6a);return rpc[_0x57f6cc+_0x3e06('0x1d')][_0x3e06('0x1e')](_0x381337)[_0x3e06('0x1f')](function(_0x2e3dd6){logger[_0x3e06('0xb')](_0x3e06('0xc'),_0x2123a9,_0x381337[_0x3e06('0x1b')]);if(_0x397d6a[_0x3e06('0x2d')]=='Failed'){_0x5b6cc8[_0x3e06('0xe')]();}else{_0x5b6cc8[_0x3e06('0x25')]();}})[_0x3e06('0x20')](function(_0x12e415){logger[_0x3e06('0x21')](_0x3e06('0xc'),_0x2123a9,JSON['stringify'](_0x12e415));_0x5b6cc8[_0x3e06('0xe')]();});}else{_0x5b6cc8['next']();}});}}catch(_0x4500bb){logger[_0x3e06('0x21')](_0x3e06('0xc'),_0x2123a9,JSON[_0x3e06('0x22')](_0x4500bb));_0x5b6cc8[_0x3e06('0x25')]();}};};
\ No newline at end of file
+var _0x3a09=['../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','isNil','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','phone','interaction','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','body','Message','create','then','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','toString','message','amazonlex','providerResponse','dialogState','Failed','moment','../../rpc/chatMessage'];(function(_0x2194e7,_0x1ee2c0){var _0x44c5dd=function(_0x420f44){while(--_0x420f44){_0x2194e7['push'](_0x2194e7['shift']());}};_0x44c5dd(++_0x1ee2c0);}(_0x3a09,0x1ac));var _0x93a0=function(_0x373294,_0x554274){_0x373294=_0x373294-0x0;var _0x59fbf1=_0x3a09[_0x373294];return _0x59fbf1;};'use strict';var _=require('lodash');var moment=require(_0x93a0('0x0'));var AWS=require('aws-sdk');var utils=require('./utils');var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require(_0x93a0('0x1')),'openchannelMessage':require(_0x93a0('0x2')),'mailMessage':require(_0x93a0('0x3')),'smsMessage':require(_0x93a0('0x4')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x93a0('0x5'))};exports[_0x93a0('0x6')]=function(_0x34a9b7,_0x3790b4){return function(_0x2bab93){try{if(!_[_0x93a0('0x7')](this['interaction']['UserId'])){logger[_0x93a0('0x8')](_0x93a0('0x9'),_0x34a9b7,_0x93a0('0xa'));return _0x2bab93[_0x93a0('0xb')]();}var _0x1f562f={'ContactId':this[_0x93a0('0xc')]['id'],'sentAt':moment()[_0x93a0('0xd')](_0x93a0('0xe')),'direction':_0x93a0('0xf')};if(this[_0x93a0('0x10')]==='sms'||this[_0x93a0('0x10')]===_0x93a0('0x11')){_0x1f562f[_0x93a0('0x12')]=this[_0x93a0('0x13')]['phone'];}var _0x3b2a30=this[_0x93a0('0x10')];if(_0x3b2a30==='chat'){_0x1f562f[_0x93a0('0x14')]=this[_0x93a0('0x15')]['id'];}else{_0x1f562f[_[_0x93a0('0x16')](_0x3b2a30)+_0x93a0('0x17')]=this[_0x93a0('0x15')]['id'];}_0x1f562f[_[_0x93a0('0x16')](_0x3b2a30)+_0x93a0('0x18')]=this[_0x93a0('0x13')]['id'];if(this[_0x93a0('0x13')]['created']){var _0x29d18a=_0x3790b4[0x4];if(!_['isEmpty'](_0x29d18a)){_0x1f562f[_0x93a0('0x19')]=utils['getMustacheRender'](_0x29d18a,this);return rpc[_0x3b2a30+_0x93a0('0x1a')][_0x93a0('0x1b')](_0x1f562f)[_0x93a0('0x1c')](function(_0x5d3a33){logger[_0x93a0('0x8')](_0x93a0('0x9'),_0x34a9b7,_0x1f562f[_0x93a0('0x19')]);})[_0x93a0('0x1d')](function(_0x35b348){logger[_0x93a0('0x1e')](_0x93a0('0x9'),_0x34a9b7,JSON[_0x93a0('0x1f')](_0x35b348));})[_0x93a0('0x20')](function(){logger[_0x93a0('0x8')](_0x93a0('0x21'),_0x34a9b7);_0x2bab93[_0x93a0('0x22')]();});}else{logger['info'](_0x93a0('0x23'),_0x34a9b7);_0x2bab93[_0x93a0('0x22')]();}}else{var _0x4c3bd0=this;var _0x6f03ba=new AWS[(_0x93a0('0x24'))]({'accessKeyId':_0x3790b4[0x0],'secretAccessKey':_0x3790b4[0x1],'region':_0x3790b4[0x2]});var _0x31a4af={'botAlias':'$LATEST','botName':_0x3790b4[0x3],'inputText':this['message'][_0x93a0('0x19')],'userId':this[_0x93a0('0x10')]+':'+this[_0x93a0('0x13')]['id'][_0x93a0('0x25')]()};_0x6f03ba['postText'](_0x31a4af,function(_0x1f4a0f,_0x33ca4d){if(_0x1f4a0f){logger['error']('[%s][AMAZONLEX]\x20%s',_0x34a9b7,_0x1f4a0f[_0x93a0('0x26')]);_0x2bab93[_0x93a0('0xb')]();}else if(_0x33ca4d&&_0x33ca4d[_0x93a0('0x26')]){_0x4c3bd0[_0x93a0('0x19')][_0x93a0('0x27')]=_0x33ca4d;_0x1f562f[_0x93a0('0x19')]=_0x33ca4d['message'];_0x1f562f['providerName']='amazonlex';_0x1f562f[_0x93a0('0x28')]=JSON[_0x93a0('0x1f')](_0x33ca4d);return rpc[_0x3b2a30+_0x93a0('0x1a')]['create'](_0x1f562f)[_0x93a0('0x1c')](function(_0x336faa){logger[_0x93a0('0x8')](_0x93a0('0x9'),_0x34a9b7,_0x1f562f['body']);if(_0x33ca4d[_0x93a0('0x29')]==_0x93a0('0x2a')){_0x2bab93[_0x93a0('0xb')]();}else{_0x2bab93[_0x93a0('0x22')]();}})[_0x93a0('0x1d')](function(_0x3dc606){logger[_0x93a0('0x1e')](_0x93a0('0x9'),_0x34a9b7,JSON[_0x93a0('0x1f')](_0x3dc606));_0x2bab93[_0x93a0('0xb')]();});}else{_0x2bab93[_0x93a0('0xb')]();}});}}catch(_0xcdbbb2){logger[_0x93a0('0x1e')]('[%s][AMAZONLEX]\x20%s',_0x34a9b7,JSON[_0x93a0('0x1f')](_0xcdbbb2));_0x2bab93[_0x93a0('0x22')]();}};};
\ No newline at end of file
index f5e8562..ec8ac24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe19=['auto_reply','sendMailMessage','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','Message','create','stringify','catch','error','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','Interaction','update','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel','mail','isAutoreply','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','isNil','created','info','Autoreply\x20already\x20sent','next','interaction','autoreplyExecuted','contact','format','out','body','getMustacheRender','message','from','read','subject','startsWith','Re:','Re:\x20','ChatWebsiteId','account','upperFirst','InteractionId','Smtp','service','host','port','secure','authentication','auth','user','pass','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22>','<div\x20id=\x22xm-mail-content\x22','headers','auto-replied','All'];(function(_0x5dc6f7,_0x19ecdb){var _0x51f076=function(_0x3b8b68){while(--_0x3b8b68){_0x5dc6f7['push'](_0x5dc6f7['shift']());}};_0x51f076(++_0x19ecdb);}(_0xfe19,0x1e5));var _0x9fe1=function(_0x5edb80,_0x104bef){_0x5edb80=_0x5edb80-0x0;var _0x113ad2=_0xfe19[_0x5edb80];return _0x113ad2;};'use strict';var _=require(_0x9fe1('0x0'));var moment=require('moment');var utils=require(_0x9fe1('0x1'));var logger=require(_0x9fe1('0x2'))(_0x9fe1('0x3'));var rpc={'chatMessage':require(_0x9fe1('0x4')),'openchannelMessage':require(_0x9fe1('0x5')),'mailMessage':require(_0x9fe1('0x6')),'smsMessage':require(_0x9fe1('0x7')),'faxMessage':require(_0x9fe1('0x8')),'whatsappMessage':require('../../rpc/whatsappMessage'),'chatInteraction':require(_0x9fe1('0x9')),'openchannelInteraction':require(_0x9fe1('0xa')),'mailInteraction':require('../../rpc/mailInteraction'),'smsInteraction':require(_0x9fe1('0xb')),'faxInteraction':require(_0x9fe1('0xc')),'whatsappInteraction':require(_0x9fe1('0xd'))};var mailRpc=require(_0x9fe1('0xe'));exports[_0x9fe1('0xf')]=function(_0x5e4e49,_0x14ca33,_0x2d790e,_0x24b09e){return function(_0x21acb7){try{var _0x413606=this[_0x9fe1('0x10')];if(_0x413606===_0x9fe1('0x11')&&_0x24b09e['body'][_0x9fe1('0x12')]){logger['info'](_0x9fe1('0x13'),_0x5e4e49,_0x9fe1('0x14'));return _0x21acb7['next']();}if(_0x14ca33[0x0]==='1'&&(_[_0x9fe1('0x15')](this['interaction'][_0x9fe1('0x16')])||!this['interaction'][_0x9fe1('0x16')])){logger[_0x9fe1('0x17')](_0x9fe1('0x13'),_0x5e4e49,_0x9fe1('0x18'));return _0x21acb7[_0x9fe1('0x19')]();}if(_0x14ca33[0x0]==='2'&&this[_0x9fe1('0x1a')][_0x9fe1('0x1b')]){logger[_0x9fe1('0x17')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x5e4e49,'One\x20Time\x20already\x20sent');return _0x21acb7[_0x9fe1('0x19')]();}var _0x467248={'ContactId':this[_0x9fe1('0x1c')]['id'],'sentAt':moment()[_0x9fe1('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x9fe1('0x1e')};if(this[_0x9fe1('0x10')]===_0x9fe1('0x11')){_0x467248[_0x9fe1('0x1f')]=utils[_0x9fe1('0x20')](_0x14ca33[0x2],this);}else{_0x467248[_0x9fe1('0x1f')]=utils[_0x9fe1('0x20')](_0x14ca33[0x1],this);}if(this[_0x9fe1('0x21')]){_0x467248['to']=this['message'][_0x9fe1('0x22')]||'';if(this['channel']==='mail'&&_0x14ca33[0x1]==='1'){_0x467248['cc']=this[_0x9fe1('0x21')]['cc']||'';}_0x467248['from']=this['message']['to']||'';_0x467248['phone']=this['message']['phone']||'';_0x467248[_0x9fe1('0x23')]=!![];if(this[_0x9fe1('0x21')][_0x9fe1('0x24')]){_0x467248[_0x9fe1('0x24')]='';_0x467248['subject']+=_[_0x9fe1('0x25')](this[_0x9fe1('0x21')][_0x9fe1('0x24')],_0x9fe1('0x26'))?'':_0x9fe1('0x27');_0x467248[_0x9fe1('0x24')]+=this[_0x9fe1('0x21')][_0x9fe1('0x24')];}}if(this['channel']==='chat'){_0x467248[_0x9fe1('0x28')]=this[_0x9fe1('0x29')]['id'];}else{_0x467248[_[_0x9fe1('0x2a')](this['channel'])+'AccountId']=this[_0x9fe1('0x29')]['id'];}_0x467248[_[_0x9fe1('0x2a')](this['channel'])+_0x9fe1('0x2b')]=this[_0x9fe1('0x1a')]['id'];var _0x89f60f=this[_0x9fe1('0x1a')];if(rpc[this['channel']+'Message']){if(this[_0x9fe1('0x10')]===_0x9fe1('0x11')){var _0x4d8072={'tls':{'rejectUnauthorized':![]}};if(this[_0x9fe1('0x29')][_0x9fe1('0x2c')][_0x9fe1('0x2d')]){_0x4d8072[_0x9fe1('0x2d')]=this[_0x9fe1('0x29')][_0x9fe1('0x2c')][_0x9fe1('0x2d')];}else{_0x4d8072[_0x9fe1('0x2e')]=this['account'][_0x9fe1('0x2c')][_0x9fe1('0x2e')];_0x4d8072[_0x9fe1('0x2f')]=this[_0x9fe1('0x29')][_0x9fe1('0x2c')][_0x9fe1('0x2f')];_0x4d8072[_0x9fe1('0x30')]=this['account']['Smtp'][_0x9fe1('0x30')];}if(this[_0x9fe1('0x29')][_0x9fe1('0x2c')][_0x9fe1('0x31')]){_0x4d8072[_0x9fe1('0x32')]={'user':this[_0x9fe1('0x29')][_0x9fe1('0x2c')][_0x9fe1('0x33')],'pass':this[_0x9fe1('0x29')]['Smtp'][_0x9fe1('0x34')]};}_0x467248[_0x9fe1('0x35')]=this[_0x9fe1('0x21')][_0x9fe1('0x36')];_0x467248[_0x9fe1('0x37')]=_0x9fe1('0x38')+_['replace'](_0x467248[_0x9fe1('0x1f')],_0x9fe1('0x39'),'<div')+'</div>';_0x467248[_0x9fe1('0x3a')]={'Auto-Submitted':_0x9fe1('0x3b'),'X-Auto-Response-Suppress':_0x9fe1('0x3c'),'Precedence':_0x9fe1('0x3d')};return mailRpc[_0x9fe1('0x3e')](_0x4d8072,_0x467248)[_0x9fe1('0x3f')](function(_0x484f19){logger[_0x9fe1('0x17')](_0x9fe1('0x40'),_0x5e4e49);_0x467248['messageId']=_0x484f19[_0x9fe1('0x21')][_0x9fe1('0x36')];return rpc[_0x413606+_0x9fe1('0x41')][_0x9fe1('0x42')](_0x467248);})[_0x9fe1('0x3f')](function(_0x19e977){logger[_0x9fe1('0x17')]('[%s][AUTOREPLY]\x20%s',_0x5e4e49,JSON[_0x9fe1('0x43')](_0x19e977));})[_0x9fe1('0x44')](function(_0x3be092){logger[_0x9fe1('0x45')](_0x9fe1('0x46'),_0x5e4e49,JSON[_0x9fe1('0x43')](_0x3be092));})[_0x9fe1('0x47')](function(){Promise[_0x9fe1('0x48')]()[_0x9fe1('0x3f')](function(){if(_0x14ca33[0x0]!=='2'||_0x89f60f[_0x9fe1('0x1b')])return;return rpc[_0x413606+_0x9fe1('0x49')][_0x9fe1('0x4a')](_0x89f60f['id'],{'autoreplyExecuted':!![]})[_0x9fe1('0x3f')](function(_0x224e73){logger[_0x9fe1('0x17')](_0x9fe1('0x4b'),_0x5e4e49,JSON[_0x9fe1('0x43')](_0x224e73));})['catch'](function(_0x330bed){logger[_0x9fe1('0x45')](_0x9fe1('0x4c'),_0x5e4e49,JSON['stringify'](_0x330bed));});})[_0x9fe1('0x3f')](function(){_0x21acb7[_0x9fe1('0x19')]();});});}else{return rpc[this[_0x9fe1('0x10')]+_0x9fe1('0x41')][_0x9fe1('0x42')](_0x467248)['then'](function(_0x597ccf){logger['info'](_0x9fe1('0x13'),_0x5e4e49,_0x467248[_0x9fe1('0x1f')]);})[_0x9fe1('0x44')](function(_0x6f37f7){logger[_0x9fe1('0x45')](_0x9fe1('0x13'),_0x5e4e49,JSON[_0x9fe1('0x43')](_0x6f37f7));})[_0x9fe1('0x47')](function(){Promise['resolve']()[_0x9fe1('0x3f')](function(){if(_0x14ca33[0x0]!=='2'||_0x89f60f[_0x9fe1('0x1b')])return;return rpc[_0x413606+_0x9fe1('0x49')][_0x9fe1('0x4a')](_0x89f60f['id'],{'autoreplyExecuted':!![]})[_0x9fe1('0x3f')](function(_0x14af35){logger['info'](_0x9fe1('0x4b'),_0x5e4e49,JSON[_0x9fe1('0x43')](_0x14af35));})[_0x9fe1('0x44')](function(_0x16d62a){logger[_0x9fe1('0x45')](_0x9fe1('0x4c'),_0x5e4e49,JSON['stringify'](_0x16d62a));});})[_0x9fe1('0x3f')](function(){_0x21acb7['next']();});});}}}catch(_0x3f30e4){logger[_0x9fe1('0x45')](_0x9fe1('0x13'),_0x5e4e49,JSON[_0x9fe1('0x43')](_0x3f30e4));_0x21acb7[_0x9fe1('0x4d')]();}};};
\ No newline at end of file
+var _0x4a24=['create','error','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','autoreplyExecuted','Interaction','update','stringify','catch','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','lodash','moment','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../mailRpc','mail','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','isNil','interaction','created','Autoreply\x20already\x20sent','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','contact','format','YYYY-MM-DD\x20HH:mm:ss','getMustacheRender','message','channel','from','phone','read','subject','startsWith','Re:\x20','chat','ChatWebsiteId','account','AccountId','upperFirst','InteractionId','Message','service','Smtp','host','port','secure','authentication','auth','user','messageId','<div\x20id=\x22xm-mail-content\x22>','<div\x20id=\x22xm-mail-content\x22','<div','headers','auto-replied','All','auto_reply','then','[%s][AUTOREPLY]\x20SMTP\x20SENT'];(function(_0x93f929,_0x5945b9){var _0x278195=function(_0x5a66f1){while(--_0x5a66f1){_0x93f929['push'](_0x93f929['shift']());}};_0x278195(++_0x5945b9);}(_0x4a24,0x1c8));var _0x44a2=function(_0x3b7a0c,_0xf1a4c2){_0x3b7a0c=_0x3b7a0c-0x0;var _0x3bb70f=_0x4a24[_0x3b7a0c];return _0x3bb70f;};'use strict';var _=require(_0x44a2('0x0'));var moment=require(_0x44a2('0x1'));var utils=require('./utils');var logger=require(_0x44a2('0x2'))(_0x44a2('0x3'));var rpc={'chatMessage':require(_0x44a2('0x4')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x44a2('0x5')),'smsMessage':require(_0x44a2('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x44a2('0x7')),'chatInteraction':require(_0x44a2('0x8')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'mailInteraction':require(_0x44a2('0x9')),'smsInteraction':require(_0x44a2('0xa')),'faxInteraction':require(_0x44a2('0xb')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var mailRpc=require(_0x44a2('0xc'));exports['consequence']=function(_0x4b95e2,_0x24a59f,_0x503a42,_0x39ce9c){return function(_0x1f847b){try{var _0x3f107e=this['channel'];if(_0x3f107e===_0x44a2('0xd')&&_0x39ce9c[_0x44a2('0xe')][_0x44a2('0xf')]){logger[_0x44a2('0x10')](_0x44a2('0x11'),_0x4b95e2,_0x44a2('0x12'));return _0x1f847b[_0x44a2('0x13')]();}if(_0x24a59f[0x0]==='1'&&(_[_0x44a2('0x14')](this[_0x44a2('0x15')][_0x44a2('0x16')])||!this[_0x44a2('0x15')][_0x44a2('0x16')])){logger[_0x44a2('0x10')]('[%s][AUTOREPLY]\x20%s',_0x4b95e2,_0x44a2('0x17'));return _0x1f847b[_0x44a2('0x13')]();}if(_0x24a59f[0x0]==='2'&&this[_0x44a2('0x15')]['autoreplyExecuted']){logger[_0x44a2('0x10')](_0x44a2('0x18'),_0x4b95e2,'One\x20Time\x20already\x20sent');return _0x1f847b['next']();}var _0x16add5={'ContactId':this[_0x44a2('0x19')]['id'],'sentAt':moment()[_0x44a2('0x1a')](_0x44a2('0x1b')),'direction':'out'};if(this['channel']===_0x44a2('0xd')){_0x16add5['body']=utils[_0x44a2('0x1c')](_0x24a59f[0x2],this);}else{_0x16add5[_0x44a2('0xe')]=utils[_0x44a2('0x1c')](_0x24a59f[0x1],this);}if(this[_0x44a2('0x1d')]){_0x16add5['to']=this[_0x44a2('0x1d')]['from']||'';if(this[_0x44a2('0x1e')]==='mail'&&_0x24a59f[0x1]==='1'){_0x16add5['cc']=this[_0x44a2('0x1d')]['cc']||'';}_0x16add5[_0x44a2('0x1f')]=this[_0x44a2('0x1d')]['to']||'';_0x16add5[_0x44a2('0x20')]=this[_0x44a2('0x1d')][_0x44a2('0x20')]||'';_0x16add5[_0x44a2('0x21')]=!![];if(this[_0x44a2('0x1d')][_0x44a2('0x22')]){_0x16add5[_0x44a2('0x22')]='';_0x16add5['subject']+=_[_0x44a2('0x23')](this[_0x44a2('0x1d')][_0x44a2('0x22')],'Re:')?'':_0x44a2('0x24');_0x16add5[_0x44a2('0x22')]+=this['message'][_0x44a2('0x22')];}}if(this[_0x44a2('0x1e')]===_0x44a2('0x25')){_0x16add5[_0x44a2('0x26')]=this[_0x44a2('0x27')]['id'];}else{_0x16add5[_['upperFirst'](this[_0x44a2('0x1e')])+_0x44a2('0x28')]=this[_0x44a2('0x27')]['id'];}_0x16add5[_[_0x44a2('0x29')](this['channel'])+_0x44a2('0x2a')]=this[_0x44a2('0x15')]['id'];var _0x40b451=this[_0x44a2('0x15')];if(rpc[this[_0x44a2('0x1e')]+_0x44a2('0x2b')]){if(this['channel']===_0x44a2('0xd')){var _0x578947={'tls':{'rejectUnauthorized':![]}};if(this[_0x44a2('0x27')]['Smtp'][_0x44a2('0x2c')]){_0x578947['service']=this['account'][_0x44a2('0x2d')][_0x44a2('0x2c')];}else{_0x578947[_0x44a2('0x2e')]=this['account'][_0x44a2('0x2d')][_0x44a2('0x2e')];_0x578947[_0x44a2('0x2f')]=this[_0x44a2('0x27')]['Smtp'][_0x44a2('0x2f')];_0x578947['secure']=this[_0x44a2('0x27')][_0x44a2('0x2d')][_0x44a2('0x30')];}if(this[_0x44a2('0x27')][_0x44a2('0x2d')][_0x44a2('0x31')]){_0x578947[_0x44a2('0x32')]={'user':this[_0x44a2('0x27')]['Smtp'][_0x44a2('0x33')],'pass':this[_0x44a2('0x27')][_0x44a2('0x2d')]['pass']};}_0x16add5['inReplyTo']=this['message'][_0x44a2('0x34')];_0x16add5['html']=_0x44a2('0x35')+_['replace'](_0x16add5[_0x44a2('0xe')],_0x44a2('0x36'),_0x44a2('0x37'))+'</div>';_0x16add5[_0x44a2('0x38')]={'Auto-Submitted':_0x44a2('0x39'),'X-Auto-Response-Suppress':_0x44a2('0x3a'),'Precedence':_0x44a2('0x3b')};return mailRpc['sendMailMessage'](_0x578947,_0x16add5)[_0x44a2('0x3c')](function(_0x2df3c2){logger[_0x44a2('0x10')](_0x44a2('0x3d'),_0x4b95e2);_0x16add5['messageId']=_0x2df3c2['message'][_0x44a2('0x34')];return rpc[_0x3f107e+'Message'][_0x44a2('0x3e')](_0x16add5);})[_0x44a2('0x3c')](function(_0x342f60){logger[_0x44a2('0x10')]('[%s][AUTOREPLY]\x20%s',_0x4b95e2,JSON['stringify'](_0x342f60));})['catch'](function(_0x1b3d9b){logger[_0x44a2('0x3f')](_0x44a2('0x40'),_0x4b95e2,JSON['stringify'](_0x1b3d9b));})[_0x44a2('0x41')](function(){Promise[_0x44a2('0x42')]()[_0x44a2('0x3c')](function(){if(_0x24a59f[0x0]!=='2'||_0x40b451[_0x44a2('0x43')])return;return rpc[_0x3f107e+_0x44a2('0x44')][_0x44a2('0x45')](_0x40b451['id'],{'autoreplyExecuted':!![]})['then'](function(_0x3d7111){logger[_0x44a2('0x10')](_0x44a2('0x18'),_0x4b95e2,JSON[_0x44a2('0x46')](_0x3d7111));})['catch'](function(_0x213d9e){logger[_0x44a2('0x3f')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x4b95e2,JSON['stringify'](_0x213d9e));});})[_0x44a2('0x3c')](function(){_0x1f847b[_0x44a2('0x13')]();});});}else{return rpc[this[_0x44a2('0x1e')]+_0x44a2('0x2b')][_0x44a2('0x3e')](_0x16add5)[_0x44a2('0x3c')](function(_0x43bdfb){logger['info'](_0x44a2('0x11'),_0x4b95e2,_0x16add5[_0x44a2('0xe')]);})[_0x44a2('0x47')](function(_0x41b5d8){logger[_0x44a2('0x3f')](_0x44a2('0x11'),_0x4b95e2,JSON[_0x44a2('0x46')](_0x41b5d8));})[_0x44a2('0x41')](function(){Promise[_0x44a2('0x42')]()[_0x44a2('0x3c')](function(){if(_0x24a59f[0x0]!=='2'||_0x40b451['autoreplyExecuted'])return;return rpc[_0x3f107e+_0x44a2('0x44')][_0x44a2('0x45')](_0x40b451['id'],{'autoreplyExecuted':!![]})[_0x44a2('0x3c')](function(_0x244a62){logger[_0x44a2('0x10')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x4b95e2,JSON[_0x44a2('0x46')](_0x244a62));})['catch'](function(_0x4f51d5){logger['error'](_0x44a2('0x48'),_0x4b95e2,JSON[_0x44a2('0x46')](_0x4f51d5));});})['then'](function(){_0x1f847b[_0x44a2('0x13')]();});});}}}catch(_0x49b13a){logger[_0x44a2('0x3f')](_0x44a2('0x11'),_0x4b95e2,JSON['stringify'](_0x49b13a));_0x1f847b[_0x44a2('0x49')]();}};};
\ No newline at end of file
index 3dc9b01..ee8bd23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00d8=['Interaction','interaction','info','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','error','[%s][CLOSE]\x20%s','stringify','finally','stop','moment','../../../../config/logger','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','consequence','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','system','channel'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x00d8,0x199));var _0x800d=function(_0x47dd46,_0x4d47eb){_0x47dd46=_0x47dd46-0x0;var _0x56759b=_0x00d8[_0x47dd46];return _0x56759b;};'use strict';var moment=require(_0x800d('0x0'));var logger=require(_0x800d('0x1'))('routing');var rpc={'chatInteraction':require(_0x800d('0x2')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0x800d('0x3')),'mailInteraction':require(_0x800d('0x4')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports[_0x800d('0x5')]=function(_0x3be509,_0x22c1e5,_0x481bb3,_0x14791c){return function(_0x4e1bed){try{logger['info'](_0x800d('0x6'),_0x3be509,_0x22c1e5[0x0]);var _0x307713={'closed':0x1,'closedAt':moment()[_0x800d('0x7')](_0x800d('0x8')),'closeReason':_0x800d('0x9'),'disposition':_0x22c1e5[0x0]};if(rpc[_0x14791c[_0x800d('0xa')]+_0x800d('0xb')]){rpc[_0x14791c[_0x800d('0xa')]+_0x800d('0xb')]['update'](_0x14791c[_0x800d('0xc')]['id'],_0x307713)['then'](function(_0x270802){logger[_0x800d('0xd')](_0x800d('0xe'),_0x3be509,_0x14791c[_0x800d('0xc')]['id']);})[_0x800d('0xf')](function(_0x2e46f7){logger[_0x800d('0x10')](_0x800d('0x11'),_0x3be509,JSON[_0x800d('0x12')](_0x2e46f7));})[_0x800d('0x13')](function(){_0x4e1bed[_0x800d('0x14')]();});}}catch(_0x22c85c){logger[_0x800d('0x10')](_0x800d('0x11'),_0x3be509,JSON[_0x800d('0x12')](_0x22c85c));_0x4e1bed[_0x800d('0x14')]();}};};
\ No newline at end of file
+var _0x99c1=['interaction','then','info','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','error','[%s][CLOSE]\x20%s','stringify','finally','stop','../../../../config/logger','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','[%s][CLOSE]\x20reason\x20%s','format','channel','update'];(function(_0x4a39de,_0x51a207){var _0x3b8523=function(_0x37d83f){while(--_0x37d83f){_0x4a39de['push'](_0x4a39de['shift']());}};_0x3b8523(++_0x51a207);}(_0x99c1,0x1e9));var _0x199c=function(_0x42e266,_0x1898bd){_0x42e266=_0x42e266-0x0;var _0x32ac6a=_0x99c1[_0x42e266];return _0x32ac6a;};'use strict';var moment=require('moment');var logger=require(_0x199c('0x0'))('routing');var rpc={'chatInteraction':require(_0x199c('0x1')),'openchannelInteraction':require(_0x199c('0x2')),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0x199c('0x3')),'faxInteraction':require(_0x199c('0x4')),'whatsappInteraction':require(_0x199c('0x5'))};exports[_0x199c('0x6')]=function(_0x4918cc,_0x4b8f9b,_0x2687c0,_0x5764aa){return function(_0x1b4b36){try{logger['info'](_0x199c('0x7'),_0x4918cc,_0x4b8f9b[0x0]);var _0x3ed276={'closed':0x1,'closedAt':moment()[_0x199c('0x8')]('YYYY-MM-DD\x20HH:mm:ss'),'closeReason':'system','disposition':_0x4b8f9b[0x0]};if(rpc[_0x5764aa['channel']+'Interaction']){rpc[_0x5764aa[_0x199c('0x9')]+'Interaction'][_0x199c('0xa')](_0x5764aa[_0x199c('0xb')]['id'],_0x3ed276)[_0x199c('0xc')](function(_0x1ae532){logger[_0x199c('0xd')](_0x199c('0xe'),_0x4918cc,_0x5764aa[_0x199c('0xb')]['id']);})['catch'](function(_0x16966e){logger[_0x199c('0xf')](_0x199c('0x10'),_0x4918cc,JSON[_0x199c('0x11')](_0x16966e));})[_0x199c('0x12')](function(){_0x1b4b36['stop']();});}}catch(_0x37b5ee){logger[_0x199c('0xf')](_0x199c('0x10'),_0x4918cc,JSON[_0x199c('0x11')](_0x37b5ee));_0x1b4b36[_0x199c('0x13')]();}};};
\ No newline at end of file
index 5e124ce..d2a8fda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x042a=['contact','YYYY-MM-DD\x20HH:mm:ss','channel','whatsapp','phone','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','getMustacheRender','Message','create','then','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','textRequest','body','dialogflow','result','fulfillment','speech','providerName','providerResponse','metadata','endConversation','catch','error','message','lodash','apiai-promise','md5','./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','interaction','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next'];(function(_0x14f418,_0xe8c131){var _0x5e5cdb=function(_0x539847){while(--_0x539847){_0x14f418['push'](_0x14f418['shift']());}};_0x5e5cdb(++_0xe8c131);}(_0x042a,0x1d9));var _0xa042=function(_0x3ad031,_0x4e13d2){_0x3ad031=_0x3ad031-0x0;var _0x4f3f3d=_0x042a[_0x3ad031];return _0x4f3f3d;};'use strict';var _=require(_0xa042('0x0'));var moment=require('moment');var apiai=require(_0xa042('0x1'));var md5=require(_0xa042('0x2'));var utils=require(_0xa042('0x3'));var logger=require('../../../../config/logger')(_0xa042('0x4'));var rpc={'chatMessage':require(_0xa042('0x5')),'openchannelMessage':require(_0xa042('0x6')),'mailMessage':require(_0xa042('0x7')),'smsMessage':require(_0xa042('0x8')),'faxMessage':require(_0xa042('0x9')),'whatsappMessage':require(_0xa042('0xa'))};exports[_0xa042('0xb')]=function(_0x47981b,_0x15774e){return function(_0x5cfa15){try{if(!_['isNil'](this[_0xa042('0xc')]['UserId'])){logger[_0xa042('0xd')](_0xa042('0xe'),_0x47981b,_0xa042('0xf'));return _0x5cfa15[_0xa042('0x10')]();}var _0x172c37={'ContactId':this[_0xa042('0x11')]['id'],'sentAt':moment()['format'](_0xa042('0x12')),'direction':'out'};if(this[_0xa042('0x13')]==='sms'||this[_0xa042('0x13')]===_0xa042('0x14')){_0x172c37[_0xa042('0x15')]=this['interaction'][_0xa042('0x15')];}var _0x73e681=this[_0xa042('0x13')];if(_0x73e681==='chat'){_0x172c37[_0xa042('0x16')]=this[_0xa042('0x17')]['id'];}else{_0x172c37[_[_0xa042('0x18')](_0x73e681)+_0xa042('0x19')]=this['account']['id'];}_0x172c37[_[_0xa042('0x18')](_0x73e681)+_0xa042('0x1a')]=this[_0xa042('0xc')]['id'];if(this[_0xa042('0xc')][_0xa042('0x1b')]){var _0x260c59=_0x15774e[0x2];if(!_['isEmpty'](_0x260c59)){_0x172c37['body']=utils[_0xa042('0x1c')](_0x260c59,this);return rpc[_0x73e681+_0xa042('0x1d')][_0xa042('0x1e')](_0x172c37)[_0xa042('0x1f')](function(_0x20879b){logger[_0xa042('0xd')](_0xa042('0xe'),_0x47981b,_0x172c37['body']);})['catch'](function(_0x514ba3){logger['error']('[%s][DIALOGFLOW]\x20%s',_0x47981b,JSON[_0xa042('0x20')](_0x514ba3));})[_0xa042('0x21')](function(){logger[_0xa042('0xd')](_0xa042('0x22'),_0x47981b);_0x5cfa15[_0xa042('0x23')]();});}else{logger[_0xa042('0xd')]('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x47981b);_0x5cfa15[_0xa042('0x23')]();}}else{var _0x38ac84=this;var _0x3e164f=apiai(_0x15774e[0x0],{'language':_0x15774e[0x1]||'en'});return _0x3e164f[_0xa042('0x24')](this['message'][_0xa042('0x25')],{'sessionId':md5(this[_0xa042('0xc')]['id'])})[_0xa042('0x1f')](function(_0x290944){_0x38ac84[_0xa042('0x25')][_0xa042('0x26')]=_0x290944;_0x172c37[_0xa042('0x25')]=_0x290944[_0xa042('0x27')][_0xa042('0x28')][_0xa042('0x29')];_0x172c37[_0xa042('0x2a')]=_0xa042('0x26');_0x172c37[_0xa042('0x2b')]=JSON[_0xa042('0x20')](_0x290944);return rpc[_0x73e681+'Message'][_0xa042('0x1e')](_0x172c37)[_0xa042('0x1f')](function(_0x50b9ad){logger[_0xa042('0xd')](_0xa042('0xe'),_0x47981b,_0x172c37['body']);if(_0x290944[_0xa042('0x27')][_0xa042('0x2c')][_0xa042('0x2d')]){_0x5cfa15[_0xa042('0x10')]();}else{_0x5cfa15[_0xa042('0x23')]();}})[_0xa042('0x2e')](function(_0x32b82a){logger[_0xa042('0x2f')](_0xa042('0xe'),_0x47981b,JSON[_0xa042('0x20')](_0x32b82a));_0x5cfa15[_0xa042('0x10')]();});})['catch'](function(_0x566665){logger[_0xa042('0x2f')](_0xa042('0xe'),_0x47981b,_0x566665[_0xa042('0x30')]);_0x5cfa15[_0xa042('0x10')]();});}}catch(_0x59bec8){logger[_0xa042('0x2f')]('[%s][DIALOGFLOW]\x20%s',_0x47981b,JSON[_0xa042('0x20')](_0x59bec8));_0x5cfa15[_0xa042('0x23')]();}};};
\ No newline at end of file
+var _0xdc03=['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!','message','result','fulfillment','speech','providerName','dialogflow','metadata','lodash','apiai-promise','md5','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','channel','sms','interaction','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','body','getMustacheRender','Message','then','catch'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xdc03,0x65));var _0x3dc0=function(_0x218a48,_0x2569c3){_0x218a48=_0x218a48-0x0;var _0x537867=_0xdc03[_0x218a48];return _0x537867;};'use strict';var _=require(_0x3dc0('0x0'));var moment=require('moment');var apiai=require(_0x3dc0('0x1'));var md5=require(_0x3dc0('0x2'));var utils=require('./utils');var logger=require(_0x3dc0('0x3'))(_0x3dc0('0x4'));var rpc={'chatMessage':require(_0x3dc0('0x5')),'openchannelMessage':require(_0x3dc0('0x6')),'mailMessage':require(_0x3dc0('0x7')),'smsMessage':require(_0x3dc0('0x8')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x3dc0('0x9'))};exports[_0x3dc0('0xa')]=function(_0xb96fd0,_0x519e01){return function(_0x1c1884){try{if(!_['isNil'](this['interaction']['UserId'])){logger[_0x3dc0('0xb')](_0x3dc0('0xc'),_0xb96fd0,_0x3dc0('0xd'));return _0x1c1884[_0x3dc0('0xe')]();}var _0x2967f6={'ContactId':this[_0x3dc0('0xf')]['id'],'sentAt':moment()[_0x3dc0('0x10')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':'out'};if(this[_0x3dc0('0x11')]===_0x3dc0('0x12')||this[_0x3dc0('0x11')]==='whatsapp'){_0x2967f6['phone']=this[_0x3dc0('0x13')]['phone'];}var _0x2dabd8=this['channel'];if(_0x2dabd8==='chat'){_0x2967f6[_0x3dc0('0x14')]=this[_0x3dc0('0x15')]['id'];}else{_0x2967f6[_[_0x3dc0('0x16')](_0x2dabd8)+_0x3dc0('0x17')]=this[_0x3dc0('0x15')]['id'];}_0x2967f6[_[_0x3dc0('0x16')](_0x2dabd8)+_0x3dc0('0x18')]=this[_0x3dc0('0x13')]['id'];if(this['interaction'][_0x3dc0('0x19')]){var _0x3bcee6=_0x519e01[0x2];if(!_['isEmpty'](_0x3bcee6)){_0x2967f6[_0x3dc0('0x1a')]=utils[_0x3dc0('0x1b')](_0x3bcee6,this);return rpc[_0x2dabd8+_0x3dc0('0x1c')]['create'](_0x2967f6)[_0x3dc0('0x1d')](function(_0x2e7771){logger[_0x3dc0('0xb')]('[%s][DIALOGFLOW]\x20%s',_0xb96fd0,_0x2967f6[_0x3dc0('0x1a')]);})[_0x3dc0('0x1e')](function(_0xd5d90a){logger[_0x3dc0('0x1f')](_0x3dc0('0xc'),_0xb96fd0,JSON[_0x3dc0('0x20')](_0xd5d90a));})[_0x3dc0('0x21')](function(){logger[_0x3dc0('0xb')](_0x3dc0('0x22'),_0xb96fd0);_0x1c1884[_0x3dc0('0x23')]();});}else{logger['info'](_0x3dc0('0x24'),_0xb96fd0);_0x1c1884[_0x3dc0('0x23')]();}}else{var _0x273ea2=this;var _0x5ee6b3=apiai(_0x519e01[0x0],{'language':_0x519e01[0x1]||'en'});return _0x5ee6b3['textRequest'](this[_0x3dc0('0x25')][_0x3dc0('0x1a')],{'sessionId':md5(this[_0x3dc0('0x13')]['id'])})[_0x3dc0('0x1d')](function(_0x503332){_0x273ea2[_0x3dc0('0x1a')]['dialogflow']=_0x503332;_0x2967f6['body']=_0x503332[_0x3dc0('0x26')][_0x3dc0('0x27')][_0x3dc0('0x28')];_0x2967f6[_0x3dc0('0x29')]=_0x3dc0('0x2a');_0x2967f6['providerResponse']=JSON['stringify'](_0x503332);return rpc[_0x2dabd8+_0x3dc0('0x1c')]['create'](_0x2967f6)[_0x3dc0('0x1d')](function(_0x1ec992){logger['info'](_0x3dc0('0xc'),_0xb96fd0,_0x2967f6['body']);if(_0x503332[_0x3dc0('0x26')][_0x3dc0('0x2b')]['endConversation']){_0x1c1884['next']();}else{_0x1c1884[_0x3dc0('0x23')]();}})['catch'](function(_0x58add0){logger['error'](_0x3dc0('0xc'),_0xb96fd0,JSON[_0x3dc0('0x20')](_0x58add0));_0x1c1884[_0x3dc0('0xe')]();});})['catch'](function(_0xde1690){logger[_0x3dc0('0x1f')](_0x3dc0('0xc'),_0xb96fd0,_0xde1690['message']);_0x1c1884[_0x3dc0('0xe')]();});}}catch(_0x4dc781){logger[_0x3dc0('0x1f')](_0x3dc0('0xc'),_0xb96fd0,JSON[_0x3dc0('0x20')](_0x4dc781));_0x1c1884[_0x3dc0('0x23')]();}};};
\ No newline at end of file
index e8f384f..2aab9a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcad2=['dialogflow','md5','moment','bluebird','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','body','Message','create','then','info','[%s][DIALOGFLOWV2]\x20%s','catch','error','consequence','isNil','interaction','UserId','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','whatsapp','channel','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','getMustacheRender','stringify','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','message','detectIntent','length','queryResult','fields','diagnosticInfo','end_conversation','boolValue','DIALOGFLOWV2_ACTION','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_INTENTNAME','intent','name','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','dialogflowV2','providerResponse','fulfillmentText','push'];(function(_0x515a5d,_0x695c17){var _0x2795d8=function(_0x1ad110){while(--_0x1ad110){_0x515a5d['push'](_0x515a5d['shift']());}};_0x2795d8(++_0x695c17);}(_0xcad2,0x120));var _0x2cad=function(_0x294abe,_0x178f51){_0x294abe=_0x294abe-0x0;var _0x16682b=_0xcad2[_0x294abe];return _0x16682b;};'use strict';var _=require('lodash');var dialogflow=require(_0x2cad('0x0'));var md5=require(_0x2cad('0x1'));var moment=require(_0x2cad('0x2'));var Promise=require(_0x2cad('0x3'));var logger=require(_0x2cad('0x4'))(_0x2cad('0x5'));var utils=require('./utils');var rpc={'chatMessage':require(_0x2cad('0x6')),'openchannelMessage':require(_0x2cad('0x7')),'mailMessage':require(_0x2cad('0x8')),'smsMessage':require(_0x2cad('0x9')),'faxMessage':require(_0x2cad('0xa')),'whatsappMessage':require(_0x2cad('0xb'))};function createMessage(_0x27acb0,_0x4816e3,_0x114b24,_0x353d95){return new Promise(function(_0xd1e602,_0x4b5afc){var _0x4c71d4=_['clone'](_0x114b24);_0x4c71d4[_0x2cad('0xc')]=_0x353d95;return rpc[_0x4816e3+_0x2cad('0xd')][_0x2cad('0xe')](_0x4c71d4)[_0x2cad('0xf')](function(){logger[_0x2cad('0x10')](_0x2cad('0x11'),_0x27acb0,_0x4c71d4[_0x2cad('0xc')]);_0xd1e602();})[_0x2cad('0x12')](function(_0x4a4723){logger[_0x2cad('0x13')](_0x2cad('0x11'),_0x27acb0,JSON['stringify'](_0x4a4723));_0x4b5afc(_0x4a4723);});});}exports[_0x2cad('0x14')]=function(_0x3a08f5,_0x3d5458){return function(_0x395c4c){try{if(!_[_0x2cad('0x15')](this[_0x2cad('0x16')][_0x2cad('0x17')])){logger[_0x2cad('0x10')](_0x2cad('0x11'),_0x3a08f5,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x395c4c[_0x2cad('0x18')]();}var _0x50f8b9={'ContactId':this[_0x2cad('0x19')]['id'],'sentAt':moment()[_0x2cad('0x1a')](_0x2cad('0x1b')),'direction':_0x2cad('0x1c')};if(this['channel']==='sms'||this['channel']===_0x2cad('0x1d')){_0x50f8b9['phone']=this['interaction']['phone'];}var _0x15a27a=this[_0x2cad('0x1e')];if(_0x15a27a===_0x2cad('0x1f')){_0x50f8b9[_0x2cad('0x20')]=this[_0x2cad('0x21')]['id'];}else{_0x50f8b9[_[_0x2cad('0x22')](_0x15a27a)+_0x2cad('0x23')]=this[_0x2cad('0x21')]['id'];}_0x50f8b9[_[_0x2cad('0x22')](_0x15a27a)+_0x2cad('0x24')]=this[_0x2cad('0x16')]['id'];if(this[_0x2cad('0x16')][_0x2cad('0x25')]){var _0x41a71d=_0x3d5458[0x4];if(!_[_0x2cad('0x26')](_0x41a71d)){_0x50f8b9[_0x2cad('0xc')]=utils[_0x2cad('0x27')](_0x41a71d,this);return rpc[_0x15a27a+_0x2cad('0xd')]['create'](_0x50f8b9)['then'](function(_0x252b84){logger[_0x2cad('0x10')](_0x2cad('0x11'),_0x3a08f5,_0x50f8b9[_0x2cad('0xc')]);})[_0x2cad('0x12')](function(_0x1a19b2){logger[_0x2cad('0x13')](_0x2cad('0x11'),_0x3a08f5,JSON[_0x2cad('0x28')](_0x1a19b2));})[_0x2cad('0x29')](function(){logger['info'](_0x2cad('0x2a'),_0x3a08f5);_0x395c4c[_0x2cad('0x2b')]();});}else{logger[_0x2cad('0x10')](_0x2cad('0x2c'),_0x3a08f5);_0x395c4c['stop']();}}else{var _0x5b2909=this;var _0x16dd43=_0x3d5458[0x2][_0x2cad('0x2d')](/\\n/g,'\x0a');var _0x474204={'credentials':{'private_key':_0x16dd43,'client_email':_0x3d5458[0x1]}};var _0x4bbe73=new dialogflow['SessionsClient'](_0x474204);var _0x5300c9=_0x4bbe73['sessionPath'](_0x3d5458[0x0],md5(_0x5b2909['interaction']['id']));var _0x35068e={'session':_0x5300c9,'queryInput':{'text':{'text':_0x5b2909[_0x2cad('0x2e')][_0x2cad('0xc')],'languageCode':_0x3d5458[0x3]||'en'}}};return _0x4bbe73[_0x2cad('0x2f')](_0x35068e)[_0x2cad('0xf')](function(_0x541819){if(_0x541819&&_0x541819[_0x2cad('0x30')]){_0x5b2909[_0x2cad('0xc')]['dialogflowV2']=_0x541819;var _0x4dad50=_0x541819[0x0];var _0x589a24=_0x4dad50[_0x2cad('0x31')]['diagnosticInfo']&&_0x4dad50[_0x2cad('0x31')]['diagnosticInfo'][_0x2cad('0x32')]?_0x4dad50['queryResult'][_0x2cad('0x33')][_0x2cad('0x32')][_0x2cad('0x34')][_0x2cad('0x35')]:![];_0x5b2909[_0x2cad('0xc')][_0x2cad('0x36')]=_0x4dad50[_0x2cad('0x31')]['action'];_0x5b2909[_0x2cad('0xc')][_0x2cad('0x37')]=_0x4dad50[_0x2cad('0x31')][_0x2cad('0x38')];_0x5b2909[_0x2cad('0xc')]['DIALOGFLOWV2_ENDCONVERSATION']=_0x4dad50['queryResult']['diagnosticInfo']&&_0x4dad50['queryResult']['diagnosticInfo'][_0x2cad('0x32')]?_0x4dad50[_0x2cad('0x31')][_0x2cad('0x33')][_0x2cad('0x32')][_0x2cad('0x34')][_0x2cad('0x35')]:![];_0x5b2909[_0x2cad('0xc')][_0x2cad('0x39')]=_0x4dad50[_0x2cad('0x31')][_0x2cad('0x3a')][_0x2cad('0x3b')];_0x5b2909[_0x2cad('0xc')]['DIALOGFLOWV2_INTENTDISPLAYNAME']=_0x4dad50[_0x2cad('0x31')]['intent'][_0x2cad('0x3c')];_0x5b2909[_0x2cad('0xc')][_0x2cad('0x3d')]=_0x4dad50[_0x2cad('0x31')][_0x2cad('0x3a')][_0x2cad('0x3e')];_0x5b2909[_0x2cad('0xc')][_0x2cad('0x3f')]=_0x4dad50[_0x2cad('0x31')][_0x2cad('0x40')];_0x5b2909[_0x2cad('0xc')]['DIALOGFLOWV2_QUERYTEXT']=_0x4dad50[_0x2cad('0x31')][_0x2cad('0x41')];_0x5b2909[_0x2cad('0xc')][_0x2cad('0x42')]=_0x4dad50[_0x2cad('0x31')][_0x2cad('0x43')];_0x50f8b9['providerName']=_0x2cad('0x44');_0x50f8b9[_0x2cad('0x45')]=JSON[_0x2cad('0x28')](_0x541819);var _0x3dcac0=[];for(var _0x251863=0x0;_0x251863<_0x541819[_0x2cad('0x30')];_0x251863++){var _0x1e1f6c=_0x541819[_0x251863];if(_0x1e1f6c&&_0x1e1f6c[_0x2cad('0x31')]&&_0x1e1f6c[_0x2cad('0x31')][_0x2cad('0x46')]){_0x3dcac0[_0x2cad('0x47')](createMessage(_0x3a08f5,_0x15a27a,_0x50f8b9,_0x1e1f6c['queryResult'][_0x2cad('0x46')]));}}return Promise['all'](_0x3dcac0)[_0x2cad('0xf')](function(){if(_0x589a24){_0x395c4c['next']();}else{_0x395c4c[_0x2cad('0x2b')]();}})[_0x2cad('0x12')](function(_0x9fdfb6){logger['error'](_0x2cad('0x11'),_0x3a08f5,JSON[_0x2cad('0x28')](_0x9fdfb6));_0x395c4c['next']();});}})[_0x2cad('0x12')](function(_0x3e1453){logger['error'](_0x2cad('0x11'),_0x3a08f5,_0x3e1453[_0x2cad('0x2e')]);_0x395c4c[_0x2cad('0x18')]();});}}catch(_0x37dfdf){logger[_0x2cad('0x13')]('[%s][DIALOGFLOWV2]\x20%s',_0x3a08f5,JSON[_0x2cad('0x28')](_0x37dfdf));_0x395c4c['stop']();}};};
\ No newline at end of file
+var _0x3fde=['DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','boolValue','DIALOGFLOWV2_INTENTNAME','name','intent','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerResponse','fulfillmentText','lodash','dialogflow','md5','moment','bluebird','routing','./utils','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','Message','then','info','body','catch','error','[%s][DIALOGFLOWV2]\x20%s','stringify','consequence','isNil','interaction','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','getMustacheRender','finally','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','SessionsClient','sessionPath','message','detectIntent','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation'];(function(_0x10839c,_0x1e9d8){var _0x2a77b9=function(_0x20b576){while(--_0x20b576){_0x10839c['push'](_0x10839c['shift']());}};_0x2a77b9(++_0x1e9d8);}(_0x3fde,0xa1));var _0xe3fd=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x3fde[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0xe3fd('0x0'));var dialogflow=require(_0xe3fd('0x1'));var md5=require(_0xe3fd('0x2'));var moment=require(_0xe3fd('0x3'));var Promise=require(_0xe3fd('0x4'));var logger=require('../../../../config/logger')(_0xe3fd('0x5'));var utils=require(_0xe3fd('0x6'));var rpc={'chatMessage':require(_0xe3fd('0x7')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xe3fd('0x8')),'smsMessage':require(_0xe3fd('0x9')),'faxMessage':require(_0xe3fd('0xa')),'whatsappMessage':require(_0xe3fd('0xb'))};function createMessage(_0x301363,_0x1085cc,_0x221ee7,_0x446f39){return new Promise(function(_0x31c094,_0x145cfa){var _0x1dce67=_[_0xe3fd('0xc')](_0x221ee7);_0x1dce67['body']=_0x446f39;return rpc[_0x1085cc+_0xe3fd('0xd')]['create'](_0x1dce67)[_0xe3fd('0xe')](function(){logger[_0xe3fd('0xf')]('[%s][DIALOGFLOWV2]\x20%s',_0x301363,_0x1dce67[_0xe3fd('0x10')]);_0x31c094();})[_0xe3fd('0x11')](function(_0x40ad3f){logger[_0xe3fd('0x12')](_0xe3fd('0x13'),_0x301363,JSON[_0xe3fd('0x14')](_0x40ad3f));_0x145cfa(_0x40ad3f);});});}exports[_0xe3fd('0x15')]=function(_0x3fe8a6,_0x42c547){return function(_0x32f04d){try{if(!_[_0xe3fd('0x16')](this[_0xe3fd('0x17')][_0xe3fd('0x18')])){logger['info'](_0xe3fd('0x13'),_0x3fe8a6,_0xe3fd('0x19'));return _0x32f04d[_0xe3fd('0x1a')]();}var _0x48e2a0={'ContactId':this[_0xe3fd('0x1b')]['id'],'sentAt':moment()[_0xe3fd('0x1c')](_0xe3fd('0x1d')),'direction':_0xe3fd('0x1e')};if(this[_0xe3fd('0x1f')]===_0xe3fd('0x20')||this[_0xe3fd('0x1f')]===_0xe3fd('0x21')){_0x48e2a0['phone']=this['interaction']['phone'];}var _0x388f3a=this[_0xe3fd('0x1f')];if(_0x388f3a==='chat'){_0x48e2a0[_0xe3fd('0x22')]=this[_0xe3fd('0x23')]['id'];}else{_0x48e2a0[_[_0xe3fd('0x24')](_0x388f3a)+_0xe3fd('0x25')]=this[_0xe3fd('0x23')]['id'];}_0x48e2a0[_[_0xe3fd('0x24')](_0x388f3a)+_0xe3fd('0x26')]=this[_0xe3fd('0x17')]['id'];if(this[_0xe3fd('0x17')][_0xe3fd('0x27')]){var _0x37fb6e=_0x42c547[0x4];if(!_[_0xe3fd('0x28')](_0x37fb6e)){_0x48e2a0[_0xe3fd('0x10')]=utils[_0xe3fd('0x29')](_0x37fb6e,this);return rpc[_0x388f3a+_0xe3fd('0xd')]['create'](_0x48e2a0)['then'](function(_0x159f57){logger[_0xe3fd('0xf')](_0xe3fd('0x13'),_0x3fe8a6,_0x48e2a0['body']);})[_0xe3fd('0x11')](function(_0x56c9f0){logger['error'](_0xe3fd('0x13'),_0x3fe8a6,JSON[_0xe3fd('0x14')](_0x56c9f0));})[_0xe3fd('0x2a')](function(){logger[_0xe3fd('0xf')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x3fe8a6);_0x32f04d[_0xe3fd('0x2b')]();});}else{logger[_0xe3fd('0xf')](_0xe3fd('0x2c'),_0x3fe8a6);_0x32f04d[_0xe3fd('0x2b')]();}}else{var _0x2a56fa=this;var _0x464e47=_0x42c547[0x2]['replace'](/\\n/g,'\x0a');var _0x1cb7f5={'credentials':{'private_key':_0x464e47,'client_email':_0x42c547[0x1]}};var _0x5d9b4d=new dialogflow[(_0xe3fd('0x2d'))](_0x1cb7f5);var _0xf614ad=_0x5d9b4d[_0xe3fd('0x2e')](_0x42c547[0x0],md5(_0x2a56fa[_0xe3fd('0x17')]['id']));var _0x21e35c={'session':_0xf614ad,'queryInput':{'text':{'text':_0x2a56fa[_0xe3fd('0x2f')][_0xe3fd('0x10')],'languageCode':_0x42c547[0x3]||'en'}}};return _0x5d9b4d[_0xe3fd('0x30')](_0x21e35c)[_0xe3fd('0xe')](function(_0x2c4365){if(_0x2c4365&&_0x2c4365[_0xe3fd('0x31')]){_0x2a56fa['body'][_0xe3fd('0x32')]=_0x2c4365;var _0x2e2139=_0x2c4365[0x0];var _0x2dcc9e=_0x2e2139[_0xe3fd('0x33')]['diagnosticInfo']&&_0x2e2139[_0xe3fd('0x33')][_0xe3fd('0x34')][_0xe3fd('0x35')]?_0x2e2139[_0xe3fd('0x33')][_0xe3fd('0x34')]['fields'][_0xe3fd('0x36')]['boolValue']:![];_0x2a56fa[_0xe3fd('0x10')][_0xe3fd('0x37')]=_0x2e2139[_0xe3fd('0x33')][_0xe3fd('0x38')];_0x2a56fa[_0xe3fd('0x10')][_0xe3fd('0x39')]=_0x2e2139[_0xe3fd('0x33')]['allRequiredParamsPresent'];_0x2a56fa['body']['DIALOGFLOWV2_ENDCONVERSATION']=_0x2e2139['queryResult'][_0xe3fd('0x34')]&&_0x2e2139[_0xe3fd('0x33')][_0xe3fd('0x34')][_0xe3fd('0x35')]?_0x2e2139['queryResult']['diagnosticInfo'][_0xe3fd('0x35')][_0xe3fd('0x36')][_0xe3fd('0x3a')]:![];_0x2a56fa[_0xe3fd('0x10')][_0xe3fd('0x3b')]=_0x2e2139[_0xe3fd('0x33')]['intent'][_0xe3fd('0x3c')];_0x2a56fa[_0xe3fd('0x10')]['DIALOGFLOWV2_INTENTDISPLAYNAME']=_0x2e2139['queryResult'][_0xe3fd('0x3d')][_0xe3fd('0x3e')];_0x2a56fa[_0xe3fd('0x10')][_0xe3fd('0x3f')]=_0x2e2139[_0xe3fd('0x33')][_0xe3fd('0x3d')][_0xe3fd('0x40')];_0x2a56fa[_0xe3fd('0x10')][_0xe3fd('0x41')]=_0x2e2139[_0xe3fd('0x33')][_0xe3fd('0x42')];_0x2a56fa['body'][_0xe3fd('0x43')]=_0x2e2139[_0xe3fd('0x33')]['queryText'];_0x2a56fa[_0xe3fd('0x10')][_0xe3fd('0x44')]=_0x2e2139['queryResult'][_0xe3fd('0x45')];_0x48e2a0['providerName']=_0xe3fd('0x32');_0x48e2a0[_0xe3fd('0x46')]=JSON[_0xe3fd('0x14')](_0x2c4365);var _0x21e91f=[];for(var _0x3dff81=0x0;_0x3dff81<_0x2c4365[_0xe3fd('0x31')];_0x3dff81++){var _0x1d0964=_0x2c4365[_0x3dff81];if(_0x1d0964&&_0x1d0964[_0xe3fd('0x33')]&&_0x1d0964[_0xe3fd('0x33')]['fulfillmentText']){_0x21e91f['push'](createMessage(_0x3fe8a6,_0x388f3a,_0x48e2a0,_0x1d0964[_0xe3fd('0x33')][_0xe3fd('0x47')]));}}return Promise['all'](_0x21e91f)[_0xe3fd('0xe')](function(){if(_0x2dcc9e){_0x32f04d[_0xe3fd('0x1a')]();}else{_0x32f04d[_0xe3fd('0x2b')]();}})[_0xe3fd('0x11')](function(_0xfd95de){logger[_0xe3fd('0x12')](_0xe3fd('0x13'),_0x3fe8a6,JSON[_0xe3fd('0x14')](_0xfd95de));_0x32f04d['next']();});}})[_0xe3fd('0x11')](function(_0x508560){logger['error'](_0xe3fd('0x13'),_0x3fe8a6,_0x508560[_0xe3fd('0x2f')]);_0x32f04d['next']();});}}catch(_0x47c504){logger[_0xe3fd('0x12')](_0xe3fd('0x13'),_0x3fe8a6,JSON['stringify'](_0x47c504));_0x32f04d[_0xe3fd('0x2b')]();}};};
\ No newline at end of file
index 749fcf4..f871fe4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9095=['lodash','html-to-text','../../../../config/logger','routing','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','fromString','replace','length','error','message','join','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','stop','[%s][GOTOIF]\x20eval\x20error:\x20%s','[%s][GOTOIF]\x20%s','stringify','validate'];(function(_0x18f468,_0x5c7eae){var _0xdfdd13=function(_0x253f82){while(--_0x253f82){_0x18f468['push'](_0x18f468['shift']());}};_0xdfdd13(++_0x5c7eae);}(_0x9095,0x103));var _0x5909=function(_0xce6f11,_0x3c3137){_0xce6f11=_0xce6f11-0x0;var _0x35b709=_0x9095[_0xce6f11];return _0x35b709;};'use strict';var schema=require(_0x5909('0x0'));var _=require(_0x5909('0x1'));var htmlToText=require(_0x5909('0x2'));var utils=require('./utils');var logger=require(_0x5909('0x3'))(_0x5909('0x4'));var gotoif=schema({'condition':{'type':_0x5909('0x5'),'required':!![],'message':_0x5909('0x6')},'priorityTrue':{'type':_0x5909('0x7'),'message':_0x5909('0x8')},'priorityFalse':{'type':_0x5909('0x7'),'message':'priority\x20false\x20is\x20a\x20number'}});exports['consequence']=function(_0x580424,_0x1870e6){return function(_0x5f4807){try{var _0x560972={'condition':htmlToText[_0x5909('0x9')](utils['getMustacheRender'](_0x1870e6[0x0],this),{'wordwrap':![]})[_0x5909('0xa')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x1870e6[0x1],'priorityFalse':_0x1870e6[0x2]};var _0x129866=gotoif[_0x5909('0x0')](_0x560972,{'typecast':!![]});if(_0x129866[_0x5909('0xb')]){logger[_0x5909('0xc')]('[%s][GOTOIF]\x20%s',_0x580424,_['map'](_0x129866,_0x5909('0xd'))[_0x5909('0xe')](',\x20'));_0x5f4807['stop']();}else{try{var _0x51ef63=eval('('+_0x560972['condition']+')');var _0x7e3086=_0x51ef63?_0x560972['priorityTrue']:_0x560972[_0x5909('0xf')];logger[_0x5909('0x10')](_0x5909('0x11'),_0x580424,_0x560972['condition'],_0x51ef63,_0x7e3086||'next');if(_0x7e3086){var _0x4cb902=_[_0x5909('0x12')](_0x5f4807[_0x5909('0x13')](),{'p':_0x7e3086});if(_0x4cb902>=0x0){logger[_0x5909('0x10')](_0x5909('0x14'),_0x580424,_0x7e3086||_0x5909('0x15'),_0x4cb902);_0x5f4807['next'](_0x4cb902);}else{logger[_0x5909('0x10')]('[%s][GOTOIF]\x20priority\x20%s\x20not\x20found',_0x580424,_0x7e3086||_0x5909('0x15'));_0x5f4807[_0x5909('0x16')]();}}else{_0x5f4807[_0x5909('0x15')]();}}catch(_0x45219e){logger[_0x5909('0xc')](_0x5909('0x17'),_0x580424,_0x45219e['message']);_0x5f4807['stop']();}}}catch(_0x112b8d){logger['error'](_0x5909('0x18'),_0x580424,JSON[_0x5909('0x19')](_0x112b8d));_0x5f4807[_0x5909('0x16')]();}};};
\ No newline at end of file
+var _0x317b=['replace','length','[%s][GOTOIF]\x20%s','map','message','join','stop','condition','priorityTrue','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','next','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','error','[%s][GOTOIF]\x20eval\x20error:\x20%s','validate','lodash','html-to-text','./utils','routing','string','number','fromString','getMustacheRender'];(function(_0x58b978,_0x229688){var _0x44954c=function(_0x283bbd){while(--_0x283bbd){_0x58b978['push'](_0x58b978['shift']());}};_0x44954c(++_0x229688);}(_0x317b,0x1b1));var _0xb317=function(_0x41cb86,_0x2ff3da){_0x41cb86=_0x41cb86-0x0;var _0x383429=_0x317b[_0x41cb86];return _0x383429;};'use strict';var schema=require(_0xb317('0x0'));var _=require(_0xb317('0x1'));var htmlToText=require(_0xb317('0x2'));var utils=require(_0xb317('0x3'));var logger=require('../../../../config/logger')(_0xb317('0x4'));var gotoif=schema({'condition':{'type':_0xb317('0x5'),'required':!![],'message':'condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'priorityTrue':{'type':'number','message':'priority\x20true\x20is\x20a\x20number'},'priorityFalse':{'type':_0xb317('0x6'),'message':'priority\x20false\x20is\x20a\x20number'}});exports['consequence']=function(_0x168be3,_0x49a3f1){return function(_0x3ffc08){try{var _0x5bf310={'condition':htmlToText[_0xb317('0x7')](utils[_0xb317('0x8')](_0x49a3f1[0x0],this),{'wordwrap':![]})[_0xb317('0x9')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x49a3f1[0x1],'priorityFalse':_0x49a3f1[0x2]};var _0xba0ccd=gotoif['validate'](_0x5bf310,{'typecast':!![]});if(_0xba0ccd[_0xb317('0xa')]){logger['error'](_0xb317('0xb'),_0x168be3,_[_0xb317('0xc')](_0xba0ccd,_0xb317('0xd'))[_0xb317('0xe')](',\x20'));_0x3ffc08[_0xb317('0xf')]();}else{try{var _0x582d36=eval('('+_0x5bf310[_0xb317('0x10')]+')');var _0x3157e2=_0x582d36?_0x5bf310[_0xb317('0x11')]:_0x5bf310['priorityFalse'];logger[_0xb317('0x12')](_0xb317('0x13'),_0x168be3,_0x5bf310[_0xb317('0x10')],_0x582d36,_0x3157e2||_0xb317('0x14'));if(_0x3157e2){var _0x2bf054=_['findIndex'](_0x3ffc08[_0xb317('0x15')](),{'p':_0x3157e2});if(_0x2bf054>=0x0){logger[_0xb317('0x12')](_0xb317('0x16'),_0x168be3,_0x3157e2||_0xb317('0x14'),_0x2bf054);_0x3ffc08[_0xb317('0x14')](_0x2bf054);}else{logger['info'](_0xb317('0x17'),_0x168be3,_0x3157e2||_0xb317('0x14'));_0x3ffc08['stop']();}}else{_0x3ffc08['next']();}}catch(_0x4a2687){logger[_0xb317('0x18')](_0xb317('0x19'),_0x168be3,_0x4a2687[_0xb317('0xd')]);_0x3ffc08[_0xb317('0xf')]();}}}catch(_0x190fc4){logger[_0xb317('0x18')](_0xb317('0xb'),_0x168be3,JSON['stringify'](_0x190fc4));_0x3ffc08['stop']();}};};
\ No newline at end of file
index 2b990f7..3ad9dc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4c6=['map','message','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','stringify','validate','lodash','routing','number','consequence','length','error','[%s][GOTOP]\x20%s'];(function(_0xf83277,_0x55487e){var _0x361e0e=function(_0xa2b602){while(--_0xa2b602){_0xf83277['push'](_0xf83277['shift']());}};_0x361e0e(++_0x55487e);}(_0xe4c6,0x1f0));var _0x6e4c=function(_0x101944,_0x28384b){_0x101944=_0x101944-0x0;var _0x28f012=_0xe4c6[_0x101944];return _0x28f012;};'use strict';var schema=require(_0x6e4c('0x0'));var _=require(_0x6e4c('0x1'));var logger=require('../../../../config/logger')(_0x6e4c('0x2'));var gotop=schema({'priority':{'type':_0x6e4c('0x3'),'required':!![],'message':'priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required'}});exports[_0x6e4c('0x4')]=function(_0x3eaa61,_0x136bb2){return function(_0x249dba){try{var _0x29e92e={'priority':_0x136bb2[0x0]};var _0x3a30fe=gotop[_0x6e4c('0x0')](_0x29e92e,{'typecast':!![]});if(_0x3a30fe[_0x6e4c('0x5')]){logger[_0x6e4c('0x6')](_0x6e4c('0x7'),_0x3eaa61,_[_0x6e4c('0x8')](_0x3a30fe,_0x6e4c('0x9'))[_0x6e4c('0xa')](',\x20'));_0x249dba[_0x6e4c('0xb')]();}else{logger[_0x6e4c('0xc')](_0x6e4c('0xd'),_0x3eaa61,_0x29e92e[_0x6e4c('0xe')]);if(_0x29e92e['priority']){var _0x5d2605=_[_0x6e4c('0xf')](_0x249dba[_0x6e4c('0x10')](),{'p':_0x29e92e[_0x6e4c('0xe')]});if(_0x5d2605>=0x0){logger[_0x6e4c('0xc')](_0x6e4c('0x11'),_0x3eaa61,_0x29e92e[_0x6e4c('0xe')]||_0x6e4c('0x12'),_0x5d2605);_0x249dba[_0x6e4c('0x12')](_0x5d2605);}else{logger[_0x6e4c('0xc')](_0x6e4c('0x13'),_0x3eaa61,_0x29e92e['priority']||_0x6e4c('0x12'));_0x249dba['stop']();}}else{_0x249dba['next']();}}}catch(_0x527c8a){logger[_0x6e4c('0x6')]('[%s][GOTOP]\x20%s',_0x3eaa61,JSON[_0x6e4c('0x14')](_0x527c8a));_0x249dba[_0x6e4c('0xb')]();}};};
\ No newline at end of file
+var _0x0326=['[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stringify','validate','lodash','../../../../config/logger','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','length','error','[%s][GOTOP]\x20%s','map','message','join','stop','info','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','next'];(function(_0x22268f,_0x1d6577){var _0x38158f=function(_0x4a1d43){while(--_0x4a1d43){_0x22268f['push'](_0x22268f['shift']());}};_0x38158f(++_0x1d6577);}(_0x0326,0x152));var _0x6032=function(_0x361ee1,_0x37fed8){_0x361ee1=_0x361ee1-0x0;var _0x1fcaad=_0x0326[_0x361ee1];return _0x1fcaad;};'use strict';var schema=require(_0x6032('0x0'));var _=require(_0x6032('0x1'));var logger=require(_0x6032('0x2'))(_0x6032('0x3'));var gotop=schema({'priority':{'type':_0x6032('0x4'),'required':!![],'message':_0x6032('0x5')}});exports[_0x6032('0x6')]=function(_0x297b89,_0x3d1cfe){return function(_0x19463e){try{var _0x4adb3b={'priority':_0x3d1cfe[0x0]};var _0x4daab5=gotop[_0x6032('0x0')](_0x4adb3b,{'typecast':!![]});if(_0x4daab5[_0x6032('0x7')]){logger[_0x6032('0x8')](_0x6032('0x9'),_0x297b89,_[_0x6032('0xa')](_0x4daab5,_0x6032('0xb'))[_0x6032('0xc')](',\x20'));_0x19463e[_0x6032('0xd')]();}else{logger[_0x6032('0xe')](_0x6032('0xf'),_0x297b89,_0x4adb3b['priority']);if(_0x4adb3b[_0x6032('0x10')]){var _0x336996=_[_0x6032('0x11')](_0x19463e['rules'](),{'p':_0x4adb3b['priority']});if(_0x336996>=0x0){logger[_0x6032('0xe')]('[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x297b89,_0x4adb3b[_0x6032('0x10')]||_0x6032('0x12'),_0x336996);_0x19463e[_0x6032('0x12')](_0x336996);}else{logger[_0x6032('0xe')](_0x6032('0x13'),_0x297b89,_0x4adb3b[_0x6032('0x10')]||'next');_0x19463e['stop']();}}else{_0x19463e['next']();}}}catch(_0x184346){logger[_0x6032('0x8')](_0x6032('0x9'),_0x297b89,JSON[_0x6032('0x14')](_0x184346));_0x19463e[_0x6032('0xd')]();}};};
\ No newline at end of file
index c22dceb..7d738a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4849=['body','next','catch','stringify','error','lodash','./utils','../../../../config/logger','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','contact','chat','ChatWebsiteId','account','upperFirst','channel','AccountId','InteractionId','interaction','Message','then','info','[%s][MESSAGE]\x20%s'];(function(_0x2326c3,_0x2edd94){var _0x153179=function(_0x1f06e4){while(--_0x1f06e4){_0x2326c3['push'](_0x2326c3['shift']());}};_0x153179(++_0x2edd94);}(_0x4849,0xf8));var _0x9484=function(_0x59c07c,_0xd3d651){_0x59c07c=_0x59c07c-0x0;var _0x5d7615=_0x4849[_0x59c07c];return _0x5d7615;};'use strict';var _=require(_0x9484('0x0'));var utils=require(_0x9484('0x1'));var logger=require(_0x9484('0x2'))('routing');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x9484('0x3')),'mailMessage':require(_0x9484('0x4')),'smsMessage':require(_0x9484('0x5')),'faxMessage':require(_0x9484('0x6')),'whatsappMessage':require(_0x9484('0x7'))};exports[_0x9484('0x8')]=function(_0x453476,_0x94e9bd){return function(_0xc4337e){try{var _0x536b43={'body':utils['getMustacheRender'](_0x94e9bd[0x0],this),'ContactId':this[_0x9484('0x9')]['id']};if(this['channel']===_0x9484('0xa')){_0x536b43[_0x9484('0xb')]=this[_0x9484('0xc')]['id'];}else{_0x536b43[_[_0x9484('0xd')](this[_0x9484('0xe')])+_0x9484('0xf')]=this[_0x9484('0xc')]['id'];}_0x536b43[_[_0x9484('0xd')](this[_0x9484('0xe')])+_0x9484('0x10')]=this[_0x9484('0x11')]['id'];if(rpc[this[_0x9484('0xe')]+_0x9484('0x12')]){return rpc[this[_0x9484('0xe')]+_0x9484('0x12')]['create'](_0x536b43)[_0x9484('0x13')](function(_0x4c4b4d){logger[_0x9484('0x14')](_0x9484('0x15'),_0x453476,_0x536b43[_0x9484('0x16')]);_0xc4337e[_0x9484('0x17')]();})[_0x9484('0x18')](function(_0x4362ce){logger['error'](_0x9484('0x15'),_0x453476,JSON[_0x9484('0x19')](_0x4362ce));_0xc4337e['stop']();});}}catch(_0x48faf9){logger[_0x9484('0x1a')]('[%s][MESSAGE]\x20%s',_0x453476,JSON[_0x9484('0x19')](_0x48faf9));_0xc4337e['stop']();}};};
\ No newline at end of file
+var _0x8ee8=['./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','contact','channel','chat','account','upperFirst','AccountId','InteractionId','interaction','Message','create','then','body','next','error','stringify','stop','[%s][MESSAGE]\x20%s','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8ee8,0x9b));var _0x88ee=function(_0x4bd795,_0x4b5438){_0x4bd795=_0x4bd795-0x0;var _0x5e37f8=_0x8ee8[_0x4bd795];return _0x5e37f8;};'use strict';var _=require(_0x88ee('0x0'));var utils=require(_0x88ee('0x1'));var logger=require(_0x88ee('0x2'))(_0x88ee('0x3'));var rpc={'chatMessage':require(_0x88ee('0x4')),'openchannelMessage':require(_0x88ee('0x5')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x88ee('0x6')),'whatsappMessage':require(_0x88ee('0x7'))};exports[_0x88ee('0x8')]=function(_0x4c90f5,_0x1919c9){return function(_0x4e325a){try{var _0x4e5b23={'body':utils['getMustacheRender'](_0x1919c9[0x0],this),'ContactId':this[_0x88ee('0x9')]['id']};if(this[_0x88ee('0xa')]===_0x88ee('0xb')){_0x4e5b23['ChatWebsiteId']=this[_0x88ee('0xc')]['id'];}else{_0x4e5b23[_[_0x88ee('0xd')](this[_0x88ee('0xa')])+_0x88ee('0xe')]=this[_0x88ee('0xc')]['id'];}_0x4e5b23[_['upperFirst'](this['channel'])+_0x88ee('0xf')]=this[_0x88ee('0x10')]['id'];if(rpc[this[_0x88ee('0xa')]+'Message']){return rpc[this[_0x88ee('0xa')]+_0x88ee('0x11')][_0x88ee('0x12')](_0x4e5b23)[_0x88ee('0x13')](function(_0x414cd3){logger['info']('[%s][MESSAGE]\x20%s',_0x4c90f5,_0x4e5b23[_0x88ee('0x14')]);_0x4e325a[_0x88ee('0x15')]();})['catch'](function(_0x2978b7){logger[_0x88ee('0x16')]('[%s][MESSAGE]\x20%s',_0x4c90f5,JSON[_0x88ee('0x17')](_0x2978b7));_0x4e325a[_0x88ee('0x18')]();});}}catch(_0x336e87){logger['error'](_0x88ee('0x19'),_0x4c90f5,JSON[_0x88ee('0x17')](_0x336e87));_0x4e325a[_0x88ee('0x18')]();}};};
\ No newline at end of file
index 53e343b..6225896 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb6d=['./utils','../../../../config/logger','routing','consequence','info','[%s][NOOP]\x20%s','getMustacheRender','next','error','stop'];(function(_0x5cff32,_0x371623){var _0x5af039=function(_0x3326c8){while(--_0x3326c8){_0x5cff32['push'](_0x5cff32['shift']());}};_0x5af039(++_0x371623);}(_0xcb6d,0x6e));var _0xdcb6=function(_0x534703,_0x423ac3){_0x534703=_0x534703-0x0;var _0x35eb00=_0xcb6d[_0x534703];return _0x35eb00;};'use strict';var utils=require(_0xdcb6('0x0'));var logger=require(_0xdcb6('0x1'))(_0xdcb6('0x2'));exports[_0xdcb6('0x3')]=function(_0x43f98d,_0x29bd31){return function(_0x4e1ae2){try{logger[_0xdcb6('0x4')](_0xdcb6('0x5'),_0x43f98d,utils[_0xdcb6('0x6')](_0x29bd31[0x0],this));_0x4e1ae2[_0xdcb6('0x7')]();}catch(_0x21c6ab){logger[_0xdcb6('0x8')]('[%s][NOOP]\x20%s',_0x43f98d,JSON['stringify'](_0x21c6ab));_0x4e1ae2[_0xdcb6('0x9')]();}};};
\ No newline at end of file
+var _0xe2dd=['stringify','stop','./utils','../../../../config/logger','routing','consequence','[%s][NOOP]\x20%s','getMustacheRender','error'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe2dd,0x92));var _0xde2d=function(_0x575b72,_0x1a7eb1){_0x575b72=_0x575b72-0x0;var _0x561c57=_0xe2dd[_0x575b72];return _0x561c57;};'use strict';var utils=require(_0xde2d('0x0'));var logger=require(_0xde2d('0x1'))(_0xde2d('0x2'));exports[_0xde2d('0x3')]=function(_0x45983a,_0x1072a8){return function(_0x548bd3){try{logger['info'](_0xde2d('0x4'),_0x45983a,utils[_0xde2d('0x5')](_0x1072a8[0x0],this));_0x548bd3['next']();}catch(_0x38f2a2){logger[_0xde2d('0x6')](_0xde2d('0x4'),_0x45983a,JSON[_0xde2d('0x7')](_0x38f2a2));_0x548bd3[_0xde2d('0x8')]();}};};
\ No newline at end of file
index 875ec84..e622af3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4138=['save','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/smsQueueReport','../../rpc/whatsappQueueReport','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','body','contact','list','upperFirst','channel','QueueId','interaction','MessageId','message','AccountId','WebsiteId','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','create\x20queue\x20report','waiting','YYYY-MM-DD\x20HH:mm:ss','accepted','info','[%s][STOP:QUEUE][NAME:%s]','update','update\x20queue\x20report','timeout','error','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','find','Queues','createQueue','atimeout','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','stop','complete','next','strategy','rrmemory','beepall','log','stack','util','moment','ioredis','../../../../config/environment','../../../../config/logger','defaults','redis','localhost','queue_id','account','queue','joinAt','emit','clone','format','%sQueuesWaitingInteractions','pick','%s:queue:%s','%s_queue_waiting_interaction:%s'];(function(_0x4ae829,_0x2c842c){var _0x256b31=function(_0x34f104){while(--_0x34f104){_0x4ae829['push'](_0x4ae829['shift']());}};_0x256b31(++_0x2c842c);}(_0x4138,0xce));var _0x8413=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x4138[_0x160c73];return _0xd9302;};'use strict';var schema=require('validate');var _=require('lodash');var util=require(_0x8413('0x0'));var seqqueue=require('seq-queue');var moment=require(_0x8413('0x1'));var Redis=require(_0x8413('0x2'));var config=require(_0x8413('0x3'));var logger=require(_0x8413('0x4'))('routing');var strategy=require('./strategy');config['redis']=_[_0x8413('0x5')](config[_0x8413('0x6')],{'host':_0x8413('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x8413('0x6')]));var attributes=['id',_0x8413('0x8'),_0x8413('0x9'),_0x8413('0xa'),'from',_0x8413('0xb')];function emit(_0x3326d1,_0x583241,_0x79c45a){io['to'](_0x3326d1)[_0x8413('0xc')](_0x583241,_0x79c45a);}function emitChannelQueueInteraction(_0x13dd2b,_0xdaf441,_0x22a991,_0x5a99a7,_0xe0a811,_0x3012df,_0x50ec50,_0x259631){var _0xf10f14=_[_0x8413('0xd')](_0x22a991);_0xf10f14[_0x8413('0x8')]=_0x259631;_0xf10f14[_0x8413('0xa')]=_0xdaf441;_0xf10f14[_0x8413('0x9')]=_0x5a99a7;_0xf10f14['id']=_0xe0a811;if(_0x3012df){_0x50ec50[util[_0x8413('0xe')](_0x8413('0xf'),_0x13dd2b)][_0xe0a811]=_[_0x8413('0x10')](_0xf10f14,attributes);}else{delete _0x50ec50[util[_0x8413('0xe')]('%sQueuesWaitingInteractions',_0x13dd2b)][_0xe0a811];}emit(util[_0x8413('0xe')](_0x8413('0x11'),_0x13dd2b,_0xdaf441),util[_0x8413('0xe')](_0x8413('0x12'),_0x13dd2b,_0x3012df?_0x8413('0x13'):_0x8413('0x14')),_['pick'](_0xf10f14,attributes));}var rpc={'openchannelQueueReport':require(_0x8413('0x15')),'mailQueueReport':require(_0x8413('0x16')),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require(_0x8413('0x17')),'faxQueueReport':require('../../rpc/faxQueueReport'),'whatsappQueueReport':require(_0x8413('0x18'))};var queue=schema({'name':{'type':'string','required':!![],'message':_0x8413('0x19')},'timeout':{'type':_0x8413('0x1a'),'message':_0x8413('0x1b')}});function startRouting(_0x312bb7,_0x358032,_0x262e67,_0x4a5c09){if(_0x312bb7&&_0x358032&&_0x262e67){_0x358032['waiting']+=0x1;var _0x9ea2d3={'uniqueid':_0x312bb7,'from':_0x262e67[_0x8413('0x1c')]?_0x262e67[_0x8413('0x1c')]['from']:'','joinAt':moment()[_0x8413('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x262e67[_0x8413('0x1d')]?_0x262e67[_0x8413('0x1d')]['id']:null,'ListId':_0x262e67[_0x8413('0x1e')]?_0x262e67[_0x8413('0x1e')]['id']:null};_0x9ea2d3[_[_0x8413('0x1f')](_0x262e67[_0x8413('0x20')])+_0x8413('0x21')]=_0x358032['id']||null;_0x9ea2d3[_[_0x8413('0x1f')](_0x262e67[_0x8413('0x20')])+'InteractionId']=_0x262e67['interaction']?_0x262e67[_0x8413('0x22')]['id']:null;_0x9ea2d3[_[_0x8413('0x1f')](_0x262e67['channel'])+_0x8413('0x23')]=_0x262e67[_0x8413('0x24')]?_0x262e67[_0x8413('0x24')]['id']:null;_0x9ea2d3[_['upperFirst'](_0x262e67[_0x8413('0x20')])+(_0x262e67[_0x8413('0x20')]!=='chat'?_0x8413('0x25'):_0x8413('0x26'))]=_0x262e67[_0x8413('0x9')]?_0x262e67[_0x8413('0x9')]['id']:null;logger['info'](util['format'](_0x8413('0x27'),_0x312bb7,_0x358032['name']));emitChannelQueueInteraction(_0x262e67[_0x8413('0x20')],_0x358032[_0x8413('0x28')],_0x9ea2d3,_0x262e67[_0x8413('0x9')][_0x8413('0x28')],_0x262e67[_0x8413('0x24')]['id'],!![],_0x4a5c09,_0x358032['id']);if(rpc[_0x262e67['channel']+_0x8413('0x29')]){return rpc[_0x262e67[_0x8413('0x20')]+'QueueReport'][_0x8413('0x2a')](_0x9ea2d3)[_0x8413('0x2b')](function(_0x7663cc){logger['error'](_0x8413('0x2c'));});}}}function stopRouting(_0x216bf3,_0x20a27d,_0xcdb1b7,_0x120b82){if(_0x216bf3&&_0x20a27d){_0x20a27d[_0x8413('0x2d')]-=0x1;var _0x5e2297={'leaveAt':moment()[_0x8413('0xe')](_0x8413('0x2e')),'acceptAt':moment()[_0x8413('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0x8413('0x2f')};logger[_0x8413('0x30')](util['format'](_0x8413('0x31'),_0x216bf3,_0x20a27d['name']));emitChannelQueueInteraction(_0xcdb1b7[_0x8413('0x20')],_0x20a27d[_0x8413('0x28')],_0xcdb1b7[_0x8413('0x1c')],_0xcdb1b7[_0x8413('0x9')][_0x8413('0x28')],_0xcdb1b7[_0x8413('0x24')]['id'],![],_0x120b82,_0x20a27d['id']);if(rpc[_0xcdb1b7[_0x8413('0x20')]+'QueueReport']){return rpc[_0xcdb1b7[_0x8413('0x20')]+_0x8413('0x29')][_0x8413('0x32')](_0x216bf3,_0x5e2297)['catch'](function(_0xc3b1ba){logger['error'](_0x8413('0x33'));});}}}function endRouting(_0x17cda7,_0x446b0f,_0x55bbb5,_0x2d32bf){if(_0x17cda7&&_0x446b0f){_0x446b0f[_0x8413('0x2d')]-=0x1;var _0x30bfc9={'leaveAt':moment()['format'](_0x8413('0x2e')),'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0x8413('0x34')};logger[_0x8413('0x30')](util[_0x8413('0xe')]('[%s][END:QUEUE][NAME:%s]',_0x17cda7,_0x446b0f[_0x8413('0x28')]));emitChannelQueueInteraction(_0x55bbb5[_0x8413('0x20')],_0x446b0f[_0x8413('0x28')],_0x55bbb5[_0x8413('0x1c')],_0x55bbb5['account'][_0x8413('0x28')],_0x55bbb5[_0x8413('0x24')]['id'],![],_0x2d32bf);if(rpc[_0x55bbb5['channel']+_0x8413('0x29')]){return rpc[_0x55bbb5[_0x8413('0x20')]+'QueueReport'][_0x8413('0x32')](_0x17cda7,_0x30bfc9)[_0x8413('0x2b')](function(_0x3f33ba){logger[_0x8413('0x35')](_0x8413('0x33'));});}}}function handleFindQueue(_0x436fa4){return function(_0x5d8354){return _0x5d8354[_0x8413('0x28')][_0x8413('0x36')]()===_0x436fa4[_0x8413('0x36')]();};}exports[_0x8413('0x37')]=function(_0x4b56a4,_0x7dc16,_0x13355c,_0x802c77){return function(_0xc2ad36){try{var _0x4b19d2={'name':_0x7dc16[0x0],'timeout':_0x7dc16[0x1]};var _0x4ae845=queue['validate'](_0x4b19d2,{'typecast':!![]});if(_0x4ae845[_0x8413('0x38')]){logger['error'](_0x8413('0x39'),_0x4b56a4,_['map'](_0x4ae845,'message')['join'](',\x20'));_0xc2ad36['stop']();}else{var _0xc76796=_[_0x8413('0x3a')](_0x13355c[_0x802c77['channel']+_0x8413('0x3b')],handleFindQueue(_0x4b19d2[_0x8413('0x28')]));if(_0xc76796){startRouting(_0x4b56a4,_0xc76796,_0x802c77,_0x13355c);var _0xdba6d5=(_0xc76796[_0x8413('0x34')]||0xa)*0x3e8;var _0xe10396=(_0x4b19d2[_0x8413('0x34')]||0x14)*0x3e8;var _0x299516,_0x3ab3a2;if(_0xdba6d5>_0xe10396){_0xe10396=_0xdba6d5;}var _0x182532=seqqueue[_0x8413('0x3c')](_0xdba6d5);_0x182532['id']=_0x4b56a4;_0x182532[_0x8413('0x3d')]=_0xdba6d5;_0x182532[_0x8413('0x3e')]=_0xe10396;_0x182532[_0x8413('0x20')]=_0x802c77[_0x8413('0x20')];_0x13355c[_0x8413('0x3f')][_0x4b56a4]['on'](_0x8413('0x40'),function(){logger['info'](_0x8413('0x41'),_0x4b56a4);stopRouting(_0x4b56a4,_0xc76796,_0x802c77,_0x13355c);clearTimeout(_0x299516);_0x299516=undefined;_0x182532[_0x8413('0x42')](!![]);if(_0x13355c[_0x8413('0x3f')][_0x4b56a4]){delete _0x13355c[_0x8413('0x3f')][_0x4b56a4];}_0xc2ad36[_0x8413('0x43')]();});_0x13355c[_0x8413('0x3f')][_0x4b56a4]['on'](_0x8413('0x44'),function(){if(_0x13355c[_0x8413('0x3f')][_0x4b56a4]){delete _0x13355c[_0x8413('0x3f')][_0x4b56a4];}});_0x299516=setTimeout(function(){logger[_0x8413('0x30')]('[%s][QUEUE]\x20APPLICATION\x20END',_0x4b56a4);endRouting(_0x4b56a4,_0xc76796,_0x802c77,_0x13355c);clearTimeout(_0x299516);_0x182532['close'](!![]);_0xc2ad36[_0x8413('0x45')]();},_0xe10396);switch(_0xc76796[_0x8413('0x46')]){case'rrmemory':strategy[_0x8413('0x47')](_0x182532,_0xc76796,_0x13355c,_0x802c77);break;default:strategy[_0x8413('0x48')](_0x182532,_0xc76796,_0x13355c,_0x802c77);}}else{logger[_0x8413('0x35')]('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x4b56a4,_0x4b19d2[_0x8413('0x28')]);_0xc2ad36[_0x8413('0x43')]();}}}catch(_0x318539){console[_0x8413('0x49')](_0x318539);logger[_0x8413('0x35')](_0x8413('0x39'),_0x4b56a4,_0x318539[_0x8413('0x4a')]);_0xc2ad36[_0x8413('0x43')]();}};};
\ No newline at end of file
+var _0x4608=['account','queue','from','joinAt','emit','clone','%sQueuesWaitingInteractions','pick','format','%s:queue:%s','%s_queue_waiting_interaction:%s','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/smsQueueReport','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','channel','QueueId','InteractionId','interaction','message','chat','AccountId','WebsiteId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','accepted','[%s][STOP:QUEUE][NAME:%s]','update','error','update\x20queue\x20report','[%s][END:QUEUE][NAME:%s]','toLowerCase','length','map','join','stop','find','Queues','timeout','qtimeout','rules','end','close','[%s][QUEUE]\x20APPLICATION\x20END','strategy','rrmemory','beepall','log','stack','validate','util','seq-queue','ioredis','../../../../config/logger','routing','./strategy','redis','defaults','localhost','socket.io-emitter','queue_id'];(function(_0x1f71f9,_0x28d756){var _0x305cbd=function(_0x46d211){while(--_0x46d211){_0x1f71f9['push'](_0x1f71f9['shift']());}};_0x305cbd(++_0x28d756);}(_0x4608,0x1b6));var _0x8460=function(_0x390c4e,_0x17df15){_0x390c4e=_0x390c4e-0x0;var _0x17c4a4=_0x4608[_0x390c4e];return _0x17c4a4;};'use strict';var schema=require(_0x8460('0x0'));var _=require('lodash');var util=require(_0x8460('0x1'));var seqqueue=require(_0x8460('0x2'));var moment=require('moment');var Redis=require(_0x8460('0x3'));var config=require('../../../../config/environment');var logger=require(_0x8460('0x4'))(_0x8460('0x5'));var strategy=require(_0x8460('0x6'));config[_0x8460('0x7')]=_[_0x8460('0x8')](config[_0x8460('0x7')],{'host':_0x8460('0x9'),'port':0x18eb});var io=require(_0x8460('0xa'))(new Redis(config[_0x8460('0x7')]));var attributes=['id',_0x8460('0xb'),_0x8460('0xc'),_0x8460('0xd'),_0x8460('0xe'),_0x8460('0xf')];function emit(_0x291234,_0x22e704,_0x1f3d6c){io['to'](_0x291234)[_0x8460('0x10')](_0x22e704,_0x1f3d6c);}function emitChannelQueueInteraction(_0x277b45,_0x1a3de3,_0x42b8ec,_0x2887ee,_0xe36c16,_0x3c4f62,_0x52aa5b,_0x54c22c){var _0x33b034=_[_0x8460('0x11')](_0x42b8ec);_0x33b034['queue_id']=_0x54c22c;_0x33b034[_0x8460('0xd')]=_0x1a3de3;_0x33b034[_0x8460('0xc')]=_0x2887ee;_0x33b034['id']=_0xe36c16;if(_0x3c4f62){_0x52aa5b[util['format'](_0x8460('0x12'),_0x277b45)][_0xe36c16]=_[_0x8460('0x13')](_0x33b034,attributes);}else{delete _0x52aa5b[util[_0x8460('0x14')](_0x8460('0x12'),_0x277b45)][_0xe36c16];}emit(util[_0x8460('0x14')](_0x8460('0x15'),_0x277b45,_0x1a3de3),util['format'](_0x8460('0x16'),_0x277b45,_0x3c4f62?'save':_0x8460('0x17')),_['pick'](_0x33b034,attributes));}var rpc={'openchannelQueueReport':require(_0x8460('0x18')),'mailQueueReport':require(_0x8460('0x19')),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require(_0x8460('0x1a')),'faxQueueReport':require('../../rpc/faxQueueReport'),'whatsappQueueReport':require('../../rpc/whatsappQueueReport')};var queue=schema({'name':{'type':_0x8460('0x1b'),'required':!![],'message':_0x8460('0x1c')},'timeout':{'type':_0x8460('0x1d'),'message':_0x8460('0x1e')}});function startRouting(_0x456013,_0x1ab9fe,_0x767ef4,_0x5103c8){if(_0x456013&&_0x1ab9fe&&_0x767ef4){_0x1ab9fe[_0x8460('0x1f')]+=0x1;var _0x38f75d={'uniqueid':_0x456013,'from':_0x767ef4[_0x8460('0x20')]?_0x767ef4['body'][_0x8460('0xe')]:'','joinAt':moment()[_0x8460('0x14')](_0x8460('0x21')),'ContactId':_0x767ef4[_0x8460('0x22')]?_0x767ef4[_0x8460('0x22')]['id']:null,'ListId':_0x767ef4[_0x8460('0x23')]?_0x767ef4[_0x8460('0x23')]['id']:null};_0x38f75d[_[_0x8460('0x24')](_0x767ef4[_0x8460('0x25')])+_0x8460('0x26')]=_0x1ab9fe['id']||null;_0x38f75d[_[_0x8460('0x24')](_0x767ef4[_0x8460('0x25')])+_0x8460('0x27')]=_0x767ef4[_0x8460('0x28')]?_0x767ef4[_0x8460('0x28')]['id']:null;_0x38f75d[_[_0x8460('0x24')](_0x767ef4[_0x8460('0x25')])+'MessageId']=_0x767ef4[_0x8460('0x29')]?_0x767ef4[_0x8460('0x29')]['id']:null;_0x38f75d[_[_0x8460('0x24')](_0x767ef4['channel'])+(_0x767ef4[_0x8460('0x25')]!==_0x8460('0x2a')?_0x8460('0x2b'):_0x8460('0x2c'))]=_0x767ef4[_0x8460('0xc')]?_0x767ef4[_0x8460('0xc')]['id']:null;logger[_0x8460('0x2d')](util[_0x8460('0x14')](_0x8460('0x2e'),_0x456013,_0x1ab9fe[_0x8460('0x2f')]));emitChannelQueueInteraction(_0x767ef4['channel'],_0x1ab9fe[_0x8460('0x2f')],_0x38f75d,_0x767ef4['account'][_0x8460('0x2f')],_0x767ef4[_0x8460('0x29')]['id'],!![],_0x5103c8,_0x1ab9fe['id']);if(rpc[_0x767ef4['channel']+_0x8460('0x30')]){return rpc[_0x767ef4[_0x8460('0x25')]+_0x8460('0x30')][_0x8460('0x31')](_0x38f75d)[_0x8460('0x32')](function(_0x2adff7){logger['error']('create\x20queue\x20report');});}}}function stopRouting(_0x508962,_0x3ed102,_0x5ca035,_0x2eb68f){if(_0x508962&&_0x3ed102){_0x3ed102[_0x8460('0x1f')]-=0x1;var _0x325f92={'leaveAt':moment()[_0x8460('0x14')](_0x8460('0x21')),'acceptAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0x8460('0x33')};logger[_0x8460('0x2d')](util[_0x8460('0x14')](_0x8460('0x34'),_0x508962,_0x3ed102[_0x8460('0x2f')]));emitChannelQueueInteraction(_0x5ca035[_0x8460('0x25')],_0x3ed102[_0x8460('0x2f')],_0x5ca035[_0x8460('0x20')],_0x5ca035[_0x8460('0xc')][_0x8460('0x2f')],_0x5ca035[_0x8460('0x29')]['id'],![],_0x2eb68f,_0x3ed102['id']);if(rpc[_0x5ca035[_0x8460('0x25')]+_0x8460('0x30')]){return rpc[_0x5ca035[_0x8460('0x25')]+_0x8460('0x30')][_0x8460('0x35')](_0x508962,_0x325f92)[_0x8460('0x32')](function(_0x27a004){logger[_0x8460('0x36')](_0x8460('0x37'));});}}}function endRouting(_0x349591,_0x33fca8,_0x1be9ef,_0x1ea0f0){if(_0x349591&&_0x33fca8){_0x33fca8['waiting']-=0x1;var _0x147baa={'leaveAt':moment()[_0x8460('0x14')]('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()[_0x8460('0x14')](_0x8460('0x21')),'reason':'timeout'};logger[_0x8460('0x2d')](util['format'](_0x8460('0x38'),_0x349591,_0x33fca8[_0x8460('0x2f')]));emitChannelQueueInteraction(_0x1be9ef[_0x8460('0x25')],_0x33fca8[_0x8460('0x2f')],_0x1be9ef[_0x8460('0x20')],_0x1be9ef[_0x8460('0xc')][_0x8460('0x2f')],_0x1be9ef[_0x8460('0x29')]['id'],![],_0x1ea0f0);if(rpc[_0x1be9ef['channel']+'QueueReport']){return rpc[_0x1be9ef[_0x8460('0x25')]+_0x8460('0x30')][_0x8460('0x35')](_0x349591,_0x147baa)[_0x8460('0x32')](function(_0x3709a2){logger[_0x8460('0x36')](_0x8460('0x37'));});}}}function handleFindQueue(_0x42004c){return function(_0x5db814){return _0x5db814[_0x8460('0x2f')][_0x8460('0x39')]()===_0x42004c[_0x8460('0x39')]();};}exports['consequence']=function(_0x54b905,_0x5d3845,_0xfdcab1,_0x3979cd){return function(_0x2dc3f2){try{var _0x5b1331={'name':_0x5d3845[0x0],'timeout':_0x5d3845[0x1]};var _0x894c86=queue[_0x8460('0x0')](_0x5b1331,{'typecast':!![]});if(_0x894c86[_0x8460('0x3a')]){logger[_0x8460('0x36')]('[%s][QUEUE]\x20%s',_0x54b905,_[_0x8460('0x3b')](_0x894c86,_0x8460('0x29'))[_0x8460('0x3c')](',\x20'));_0x2dc3f2[_0x8460('0x3d')]();}else{var _0x3103e5=_[_0x8460('0x3e')](_0xfdcab1[_0x3979cd[_0x8460('0x25')]+_0x8460('0x3f')],handleFindQueue(_0x5b1331[_0x8460('0x2f')]));if(_0x3103e5){startRouting(_0x54b905,_0x3103e5,_0x3979cd,_0xfdcab1);var _0x558073=(_0x3103e5[_0x8460('0x40')]||0xa)*0x3e8;var _0x298c9e=(_0x5b1331['timeout']||0x14)*0x3e8;var _0x2f872c,_0x208395;if(_0x558073>_0x298c9e){_0x298c9e=_0x558073;}var _0x5edf4d=seqqueue['createQueue'](_0x558073);_0x5edf4d['id']=_0x54b905;_0x5edf4d['atimeout']=_0x558073;_0x5edf4d[_0x8460('0x41')]=_0x298c9e;_0x5edf4d[_0x8460('0x25')]=_0x3979cd[_0x8460('0x25')];_0xfdcab1[_0x8460('0x42')][_0x54b905]['on'](_0x8460('0x43'),function(){logger[_0x8460('0x2d')]('[%s][QUEUE]\x20ROUTING\x20STOPPED',_0x54b905);stopRouting(_0x54b905,_0x3103e5,_0x3979cd,_0xfdcab1);clearTimeout(_0x2f872c);_0x2f872c=undefined;_0x5edf4d[_0x8460('0x44')](!![]);if(_0xfdcab1[_0x8460('0x42')][_0x54b905]){delete _0xfdcab1[_0x8460('0x42')][_0x54b905];}_0x2dc3f2['stop']();});_0xfdcab1['rules'][_0x54b905]['on']('complete',function(){if(_0xfdcab1[_0x8460('0x42')][_0x54b905]){delete _0xfdcab1[_0x8460('0x42')][_0x54b905];}});_0x2f872c=setTimeout(function(){logger[_0x8460('0x2d')](_0x8460('0x45'),_0x54b905);endRouting(_0x54b905,_0x3103e5,_0x3979cd,_0xfdcab1);clearTimeout(_0x2f872c);_0x5edf4d[_0x8460('0x44')](!![]);_0x2dc3f2['next']();},_0x298c9e);switch(_0x3103e5[_0x8460('0x46')]){case _0x8460('0x47'):strategy[_0x8460('0x47')](_0x5edf4d,_0x3103e5,_0xfdcab1,_0x3979cd);break;default:strategy[_0x8460('0x48')](_0x5edf4d,_0x3103e5,_0xfdcab1,_0x3979cd);}}else{logger[_0x8460('0x36')]('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x54b905,_0x5b1331[_0x8460('0x2f')]);_0x2dc3f2[_0x8460('0x3d')]();}}}catch(_0x107665){console[_0x8460('0x49')](_0x107665);logger['error']('[%s][QUEUE]\x20%s',_0x54b905,_0x107665[_0x8460('0x4a')]);_0x2dc3f2[_0x8460('0x3d')]();}};};
\ No newline at end of file
index b9f52a1..fadf7fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b56=['busy','showNotification','writeLog','RINGING',':FORCED','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','STOP','TIMEOUT','exports','uuid','./util','../../../../../config/logger','routing','notificationId','agent','realtime','squeue','push','bind','timeout','handleTimeout','drained','handleDrained','prototype','handleRun','info','[%s][AGENT]\x20try\x20with\x20%s','agents','forcedOwnership','isAgentAvailable','channel'];(function(_0x31a37b,_0x826249){var _0x49ae16=function(_0x2e8d52){while(--_0x2e8d52){_0x31a37b['push'](_0x31a37b['shift']());}};_0x49ae16(++_0x826249);}(_0x8b56,0x101));var _0x68b5=function(_0x57c1f8,_0x5b5a86){_0x57c1f8=_0x57c1f8-0x0;var _0xea1019=_0x8b56[_0x57c1f8];return _0xea1019;};'use strict';var _=require('lodash');var uuid=require(_0x68b5('0x0'));var util=require(_0x68b5('0x1'));var logger=require(_0x68b5('0x2'))(_0x68b5('0x3'));var Agent=function(_0x14014b,_0x31852f,_0x57967d,_0x4faacd){this[_0x68b5('0x4')]=uuid['v4']();this['squeue']=_0x14014b;this[_0x68b5('0x5')]=_0x31852f;this[_0x68b5('0x6')]=_0x57967d;this[_0x68b5('0x3')]=_0x4faacd;this[_0x68b5('0x7')][_0x68b5('0x8')](this['handleRun'][_0x68b5('0x9')](this),this['handleTimeout'][_0x68b5('0x9')](this));this[_0x68b5('0x7')]['on'](_0x68b5('0xa'),this[_0x68b5('0xb')][_0x68b5('0x9')](this));this[_0x68b5('0x7')]['on'](_0x68b5('0xc'),this[_0x68b5('0xd')]['bind'](this));};Agent[_0x68b5('0xe')][_0x68b5('0x8')]=function(){this[_0x68b5('0x7')][_0x68b5('0x8')](this[_0x68b5('0xf')][_0x68b5('0x9')](this),this[_0x68b5('0xb')][_0x68b5('0x9')](this));};Agent[_0x68b5('0xe')]['handleDrained']=function(){this[_0x68b5('0xb')](!![]);};Agent[_0x68b5('0xe')]['handleRun']=function(_0x3e43bd){logger[_0x68b5('0x10')](_0x68b5('0x11'),this[_0x68b5('0x7')]['id'],this['agent']['id']);if(_['isNil'](this[_0x68b5('0x6')][_0x68b5('0x12')][this[_0x68b5('0x5')]['id']])){logger[_0x68b5('0x10')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x68b5('0x7')]['id'],this[_0x68b5('0x5')]['id']);setTimeout(this[_0x68b5('0x8')][_0x68b5('0x9')](this),0x3e8);}else{if(this[_0x68b5('0x3')][_0x68b5('0x13')]||util[_0x68b5('0x14')](this[_0x68b5('0x7')]['id'],this[_0x68b5('0x6')]['agents'][this[_0x68b5('0x5')]['id']],this[_0x68b5('0x7')][_0x68b5('0x15')],![])){this[_0x68b5('0x6')][_0x68b5('0x12')][this[_0x68b5('0x5')]['id']][_0x68b5('0x16')]=!![];this[_0x68b5('0x6')][_0x68b5('0x12')][this['agent']['id']]['busyQueue']=undefined;util[_0x68b5('0x17')](this[_0x68b5('0x4')],this[_0x68b5('0x7')]['id'],this[_0x68b5('0x6')][_0x68b5('0x12')][this[_0x68b5('0x5')]['id']],null,this[_0x68b5('0x3')]);util[_0x68b5('0x18')](this[_0x68b5('0x7')]['id'],this['realtime']['agents'][this[_0x68b5('0x5')]['id']],_0x68b5('0x19')+(this['routing'][_0x68b5('0x13')]?_0x68b5('0x1a'):''));}else{logger[_0x68b5('0x10')]('[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available',this[_0x68b5('0x7')]['id'],this['agent']['id']);setTimeout(this[_0x68b5('0x8')]['bind'](this),0x3e8);}}};Agent[_0x68b5('0xe')][_0x68b5('0xb')]=function(_0x46c78c){if(_['isNil'](this[_0x68b5('0x6')][_0x68b5('0x12')][this[_0x68b5('0x5')]['id']])){return logger['info'](_0x68b5('0x1b'),this[_0x68b5('0x7')]['id'],this['agent']['id']);}else{logger[_0x68b5('0x10')]('[%s][AGENT]\x20timeout\x20with\x20%s',this[_0x68b5('0x7')]['id'],this[_0x68b5('0x5')]['id']);util['hideNotification'](this[_0x68b5('0x4')],this['squeue']['id'],this['realtime'][_0x68b5('0x12')][this[_0x68b5('0x5')]['id']],null,this['routing']);this['realtime']['agents'][this[_0x68b5('0x5')]['id']]['busy']=![];this[_0x68b5('0x6')][_0x68b5('0x12')][this['agent']['id']]['busyQueue']=undefined;util[_0x68b5('0x18')](this[_0x68b5('0x7')]['id'],this[_0x68b5('0x6')][_0x68b5('0x12')][this[_0x68b5('0x5')]['id']],_0x46c78c?_0x68b5('0x1c'):_0x68b5('0x1d'));}if(!_0x46c78c){setTimeout(this[_0x68b5('0x8')][_0x68b5('0x9')](this),0x3e8);}};function agent(_0x30d01c,_0x3b0214,_0x3224de,_0x3ed00e){return new Agent(_0x30d01c,_0x3b0214,_0x3224de,_0x3ed00e);}module[_0x68b5('0x1e')]=agent;
\ No newline at end of file
+var _0x2a23=['showNotification','writeLog','RINGING','forcedOwnership','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','isNil','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','STOP','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','notificationId','squeue','agent','realtime','routing','handleRun','bind','handleTimeout','timeout','drained','prototype','push','handleDrained','info','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','agents','channel','busyQueue'];(function(_0x3b681a,_0x5ce177){var _0x3791de=function(_0x21dfe1){while(--_0x21dfe1){_0x3b681a['push'](_0x3b681a['shift']());}};_0x3791de(++_0x5ce177);}(_0x2a23,0x71));var _0x32a2=function(_0x5b57f0,_0x2d83a6){_0x5b57f0=_0x5b57f0-0x0;var _0x336a47=_0x2a23[_0x5b57f0];return _0x336a47;};'use strict';var _=require(_0x32a2('0x0'));var uuid=require(_0x32a2('0x1'));var util=require(_0x32a2('0x2'));var logger=require(_0x32a2('0x3'))('routing');var Agent=function(_0x53f2af,_0xad645d,_0x5af6ae,_0x202495){this[_0x32a2('0x4')]=uuid['v4']();this[_0x32a2('0x5')]=_0x53f2af;this[_0x32a2('0x6')]=_0xad645d;this[_0x32a2('0x7')]=_0x5af6ae;this[_0x32a2('0x8')]=_0x202495;this[_0x32a2('0x5')]['push'](this[_0x32a2('0x9')][_0x32a2('0xa')](this),this[_0x32a2('0xb')][_0x32a2('0xa')](this));this[_0x32a2('0x5')]['on'](_0x32a2('0xc'),this[_0x32a2('0xb')][_0x32a2('0xa')](this));this['squeue']['on'](_0x32a2('0xd'),this['handleDrained']['bind'](this));};Agent[_0x32a2('0xe')][_0x32a2('0xf')]=function(){this[_0x32a2('0x5')][_0x32a2('0xf')](this[_0x32a2('0x9')]['bind'](this),this['handleTimeout'][_0x32a2('0xa')](this));};Agent[_0x32a2('0xe')][_0x32a2('0x10')]=function(){this['handleTimeout'](!![]);};Agent[_0x32a2('0xe')]['handleRun']=function(_0x15846f){logger[_0x32a2('0x11')]('[%s][AGENT]\x20try\x20with\x20%s',this[_0x32a2('0x5')]['id'],this[_0x32a2('0x6')]['id']);if(_['isNil'](this[_0x32a2('0x7')]['agents'][this[_0x32a2('0x6')]['id']])){logger[_0x32a2('0x11')](_0x32a2('0x12'),this[_0x32a2('0x5')]['id'],this[_0x32a2('0x6')]['id']);setTimeout(this['push'][_0x32a2('0xa')](this),0x3e8);}else{if(this[_0x32a2('0x8')]['forcedOwnership']||util[_0x32a2('0x13')](this['squeue']['id'],this[_0x32a2('0x7')][_0x32a2('0x14')][this['agent']['id']],this[_0x32a2('0x5')][_0x32a2('0x15')],![])){this[_0x32a2('0x7')]['agents'][this[_0x32a2('0x6')]['id']]['busy']=!![];this['realtime'][_0x32a2('0x14')][this[_0x32a2('0x6')]['id']][_0x32a2('0x16')]=undefined;util[_0x32a2('0x17')](this[_0x32a2('0x4')],this[_0x32a2('0x5')]['id'],this[_0x32a2('0x7')][_0x32a2('0x14')][this[_0x32a2('0x6')]['id']],null,this[_0x32a2('0x8')]);util[_0x32a2('0x18')](this[_0x32a2('0x5')]['id'],this[_0x32a2('0x7')][_0x32a2('0x14')][this['agent']['id']],_0x32a2('0x19')+(this[_0x32a2('0x8')][_0x32a2('0x1a')]?':FORCED':''));}else{logger[_0x32a2('0x11')](_0x32a2('0x1b'),this[_0x32a2('0x5')]['id'],this[_0x32a2('0x6')]['id']);setTimeout(this[_0x32a2('0xf')]['bind'](this),0x3e8);}}};Agent[_0x32a2('0xe')][_0x32a2('0xb')]=function(_0x206a4b){if(_[_0x32a2('0x1c')](this[_0x32a2('0x7')][_0x32a2('0x14')][this[_0x32a2('0x6')]['id']])){return logger['info'](_0x32a2('0x12'),this['squeue']['id'],this[_0x32a2('0x6')]['id']);}else{logger[_0x32a2('0x11')](_0x32a2('0x1d'),this[_0x32a2('0x5')]['id'],this['agent']['id']);util[_0x32a2('0x1e')](this[_0x32a2('0x4')],this[_0x32a2('0x5')]['id'],this[_0x32a2('0x7')][_0x32a2('0x14')][this[_0x32a2('0x6')]['id']],null,this[_0x32a2('0x8')]);this[_0x32a2('0x7')][_0x32a2('0x14')][this[_0x32a2('0x6')]['id']]['busy']=![];this['realtime']['agents'][this[_0x32a2('0x6')]['id']][_0x32a2('0x16')]=undefined;util[_0x32a2('0x18')](this['squeue']['id'],this[_0x32a2('0x7')][_0x32a2('0x14')][this[_0x32a2('0x6')]['id']],_0x206a4b?_0x32a2('0x1f'):_0x32a2('0x20'));}if(!_0x206a4b){setTimeout(this['push'][_0x32a2('0xa')](this),0x3e8);}};function agent(_0x5c0f2e,_0x3b327b,_0x11e483,_0x35d1d2){return new Agent(_0x5c0f2e,_0x3b327b,_0x11e483,_0x35d1d2);}module[_0x32a2('0x21')]=agent;
\ No newline at end of file
index c4df4b7..e0e2b04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78d3=['info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','writeLog','RINGING','busy','busyQueue','name','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','hideNotification','STOP','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','queue','realtime','handleRun','handleTimeout','bind','timeout','drained','handleDrained','push','prototype','isNil','Agents','length','agents'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x78d3,0x73));var _0x378d=function(_0x35fd91,_0x132c07){_0x35fd91=_0x35fd91-0x0;var _0x1022f2=_0x78d3[_0x35fd91];return _0x1022f2;};'use strict';var _=require(_0x378d('0x0'));var uuid=require(_0x378d('0x1'));var util=require(_0x378d('0x2'));var logger=require(_0x378d('0x3'))(_0x378d('0x4'));var Beepall=function(_0x1d87b8,_0x367f93,_0x29273c,_0x52f934){this[_0x378d('0x5')]=uuid['v4']();this[_0x378d('0x6')]=_0x1d87b8;this[_0x378d('0x7')]=_0x367f93;this[_0x378d('0x8')]=_0x29273c;this[_0x378d('0x4')]=_0x52f934;this['squeue']['push'](this[_0x378d('0x9')]['bind'](this),this[_0x378d('0xa')][_0x378d('0xb')](this));this[_0x378d('0x6')]['on'](_0x378d('0xc'),this[_0x378d('0xa')][_0x378d('0xb')](this));this['squeue']['on'](_0x378d('0xd'),this[_0x378d('0xe')][_0x378d('0xb')](this));};Beepall['prototype'][_0x378d('0xf')]=function(){this['squeue']['push'](this[_0x378d('0x9')][_0x378d('0xb')](this),this['handleTimeout'][_0x378d('0xb')](this));};Beepall[_0x378d('0x10')][_0x378d('0xe')]=function(_0x54ad14){this[_0x378d('0xa')](!![]);};Beepall['prototype'][_0x378d('0x9')]=function(_0x331f32){var _0x1f2f89=!![];if(!_[_0x378d('0x11')](this[_0x378d('0x7')])&&!_['isNil'](this[_0x378d('0x7')]['Agents'])&&this[_0x378d('0x7')][_0x378d('0x12')][_0x378d('0x13')]>0x0){for(var _0x254ff5=0x0,_0x300b21;_0x254ff5<this['queue'][_0x378d('0x12')]['length'];_0x254ff5+=0x1){_0x300b21=this[_0x378d('0x7')][_0x378d('0x12')][_0x254ff5]['id'];if(_[_0x378d('0x11')](this[_0x378d('0x8')][_0x378d('0x14')][_0x300b21])){logger[_0x378d('0x15')](_0x378d('0x16'),this['squeue']['id'],_0x300b21);}else{if(util['isAgentAvailable'](this[_0x378d('0x6')]['id'],this[_0x378d('0x8')]['agents'][_0x300b21],this[_0x378d('0x6')][_0x378d('0x17')],!![])){_0x1f2f89=![];util[_0x378d('0x18')](this[_0x378d('0x6')]['id'],this[_0x378d('0x8')]['agents'][_0x300b21],_0x378d('0x19'));this['realtime'][_0x378d('0x14')][_0x300b21][_0x378d('0x1a')]=!![];this[_0x378d('0x8')]['agents'][_0x300b21][_0x378d('0x1b')]=this[_0x378d('0x7')][_0x378d('0x1c')];util['showNotification'](this[_0x378d('0x5')],this[_0x378d('0x6')]['id'],this[_0x378d('0x8')][_0x378d('0x14')][_0x300b21],this[_0x378d('0x7')],this[_0x378d('0x4')]);}}}if(_0x1f2f89){logger[_0x378d('0x15')](_0x378d('0x1d'),this['squeue']['id']);setTimeout(this['push'][_0x378d('0xb')](this),0x3e8);}}else{logger['info'](_0x378d('0x1e'),this[_0x378d('0x6')]['id']);setTimeout(this[_0x378d('0xf')][_0x378d('0xb')](this),0x3e8);}};Beepall['prototype']['handleTimeout']=function(_0x3de1af){if(!_['isNil'](this['queue'])&&!_['isNil'](this[_0x378d('0x7')]['Agents'])){for(var _0x4d1de5=0x0,_0x217ffc;_0x4d1de5<this['queue'][_0x378d('0x12')][_0x378d('0x13')];_0x4d1de5+=0x1){_0x217ffc=this[_0x378d('0x7')]['Agents'][_0x4d1de5]['id'];if(_[_0x378d('0x11')](this[_0x378d('0x8')][_0x378d('0x14')][_0x217ffc])){logger[_0x378d('0x15')](_0x378d('0x16'),this['squeue']['id'],_0x217ffc);}else{util[_0x378d('0x1f')](this[_0x378d('0x5')],this[_0x378d('0x6')]['id'],this[_0x378d('0x8')]['agents'][_0x217ffc],this[_0x378d('0x7')],this['routing']);util['writeLog'](this[_0x378d('0x6')]['id'],this[_0x378d('0x8')]['agents'][_0x217ffc],_0x3de1af?_0x378d('0x20'):'TIMEOUT');this['realtime']['agents'][_0x217ffc][_0x378d('0x1a')]=![];this[_0x378d('0x8')][_0x378d('0x14')][_0x217ffc][_0x378d('0x1b')]=undefined;}}}if(!_0x3de1af){setTimeout(this[_0x378d('0xf')]['bind'](this),0x3e8);}};function beepall(_0x3989f0,_0x128d20,_0x3a4430,_0x59917d){return new Beepall(_0x3989f0,_0x128d20,_0x3a4430,_0x59917d);}module[_0x378d('0x21')]=beepall;
\ No newline at end of file
+var _0x8e0f=['push','handleRun','handleTimeout','bind','drained','handleDrained','prototype','Agents','length','agents','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','writeLog','realtime','busyQueue','name','showNotification','notificationId','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','isNil','STOP','TIMEOUT','busy','lodash','uuid','./util','../../../../../config/logger','routing','squeue','queue'];(function(_0x56b47b,_0x1032f5){var _0x561db3=function(_0x45a94c){while(--_0x45a94c){_0x56b47b['push'](_0x56b47b['shift']());}};_0x561db3(++_0x1032f5);}(_0x8e0f,0x12f));var _0xf8e0=function(_0x408a86,_0x39beb1){_0x408a86=_0x408a86-0x0;var _0x522185=_0x8e0f[_0x408a86];return _0x522185;};'use strict';var _=require(_0xf8e0('0x0'));var uuid=require(_0xf8e0('0x1'));var util=require(_0xf8e0('0x2'));var logger=require(_0xf8e0('0x3'))(_0xf8e0('0x4'));var Beepall=function(_0x15a893,_0x2ce589,_0x5e954c,_0x40d121){this['notificationId']=uuid['v4']();this[_0xf8e0('0x5')]=_0x15a893;this[_0xf8e0('0x6')]=_0x2ce589;this['realtime']=_0x5e954c;this[_0xf8e0('0x4')]=_0x40d121;this[_0xf8e0('0x5')][_0xf8e0('0x7')](this[_0xf8e0('0x8')]['bind'](this),this[_0xf8e0('0x9')][_0xf8e0('0xa')](this));this['squeue']['on']('timeout',this[_0xf8e0('0x9')][_0xf8e0('0xa')](this));this[_0xf8e0('0x5')]['on'](_0xf8e0('0xb'),this[_0xf8e0('0xc')][_0xf8e0('0xa')](this));};Beepall[_0xf8e0('0xd')][_0xf8e0('0x7')]=function(){this[_0xf8e0('0x5')]['push'](this[_0xf8e0('0x8')][_0xf8e0('0xa')](this),this[_0xf8e0('0x9')][_0xf8e0('0xa')](this));};Beepall['prototype'][_0xf8e0('0xc')]=function(_0x5e958d){this[_0xf8e0('0x9')](!![]);};Beepall[_0xf8e0('0xd')][_0xf8e0('0x8')]=function(_0x506587){var _0x173f34=!![];if(!_['isNil'](this[_0xf8e0('0x6')])&&!_['isNil'](this[_0xf8e0('0x6')][_0xf8e0('0xe')])&&this[_0xf8e0('0x6')][_0xf8e0('0xe')][_0xf8e0('0xf')]>0x0){for(var _0x49e649=0x0,_0x616054;_0x49e649<this['queue'][_0xf8e0('0xe')][_0xf8e0('0xf')];_0x49e649+=0x1){_0x616054=this[_0xf8e0('0x6')][_0xf8e0('0xe')][_0x49e649]['id'];if(_['isNil'](this['realtime'][_0xf8e0('0x10')][_0x616054])){logger[_0xf8e0('0x11')](_0xf8e0('0x12'),this[_0xf8e0('0x5')]['id'],_0x616054);}else{if(util['isAgentAvailable'](this[_0xf8e0('0x5')]['id'],this['realtime'][_0xf8e0('0x10')][_0x616054],this[_0xf8e0('0x5')]['channel'],!![])){_0x173f34=![];util[_0xf8e0('0x13')](this[_0xf8e0('0x5')]['id'],this[_0xf8e0('0x14')][_0xf8e0('0x10')][_0x616054],'RINGING');this[_0xf8e0('0x14')][_0xf8e0('0x10')][_0x616054]['busy']=!![];this['realtime']['agents'][_0x616054][_0xf8e0('0x15')]=this[_0xf8e0('0x6')][_0xf8e0('0x16')];util[_0xf8e0('0x17')](this[_0xf8e0('0x18')],this[_0xf8e0('0x5')]['id'],this[_0xf8e0('0x14')]['agents'][_0x616054],this[_0xf8e0('0x6')],this[_0xf8e0('0x4')]);}}}if(_0x173f34){logger['info'](_0xf8e0('0x19'),this[_0xf8e0('0x5')]['id']);setTimeout(this[_0xf8e0('0x7')][_0xf8e0('0xa')](this),0x3e8);}}else{logger['info'](_0xf8e0('0x1a'),this['squeue']['id']);setTimeout(this['push'][_0xf8e0('0xa')](this),0x3e8);}};Beepall[_0xf8e0('0xd')][_0xf8e0('0x9')]=function(_0x19b773){if(!_[_0xf8e0('0x1b')](this[_0xf8e0('0x6')])&&!_[_0xf8e0('0x1b')](this[_0xf8e0('0x6')][_0xf8e0('0xe')])){for(var _0x2d891c=0x0,_0x599229;_0x2d891c<this[_0xf8e0('0x6')][_0xf8e0('0xe')][_0xf8e0('0xf')];_0x2d891c+=0x1){_0x599229=this['queue'][_0xf8e0('0xe')][_0x2d891c]['id'];if(_['isNil'](this[_0xf8e0('0x14')][_0xf8e0('0x10')][_0x599229])){logger['info'](_0xf8e0('0x12'),this[_0xf8e0('0x5')]['id'],_0x599229);}else{util['hideNotification'](this[_0xf8e0('0x18')],this[_0xf8e0('0x5')]['id'],this['realtime'][_0xf8e0('0x10')][_0x599229],this['queue'],this[_0xf8e0('0x4')]);util['writeLog'](this['squeue']['id'],this[_0xf8e0('0x14')][_0xf8e0('0x10')][_0x599229],_0x19b773?_0xf8e0('0x1c'):_0xf8e0('0x1d'));this[_0xf8e0('0x14')][_0xf8e0('0x10')][_0x599229][_0xf8e0('0x1e')]=![];this[_0xf8e0('0x14')][_0xf8e0('0x10')][_0x599229][_0xf8e0('0x15')]=undefined;}}}if(!_0x19b773){setTimeout(this[_0xf8e0('0x7')][_0xf8e0('0xa')](this),0x3e8);}};function beepall(_0x248d91,_0x5431dc,_0x2266b0,_0x2270ef){return new Beepall(_0x248d91,_0x5431dc,_0x2266b0,_0x2270ef);}module['exports']=beepall;
\ No newline at end of file
index d5db2a0..3f1dd33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68b7=['./beepall','./agent','exports'];(function(_0x567bcb,_0x4978c1){var _0x4eebc2=function(_0x42a456){while(--_0x42a456){_0x567bcb['push'](_0x567bcb['shift']());}};_0x4eebc2(++_0x4978c1);}(_0x68b7,0x1d6));var _0x768b=function(_0x4316a5,_0x54052a){_0x4316a5=_0x4316a5-0x0;var _0x19ef3c=_0x68b7[_0x4316a5];return _0x19ef3c;};'use strict';module[_0x768b('0x0')]={'rrmemory':require('./rrmemory'),'beepall':require(_0x768b('0x1')),'agent':require(_0x768b('0x2'))};
\ No newline at end of file
+var _0x81a3=['./agent','exports','./rrmemory','./beepall'];(function(_0x5008ca,_0x418211){var _0x2600bb=function(_0xee5758){while(--_0xee5758){_0x5008ca['push'](_0x5008ca['shift']());}};_0x2600bb(++_0x418211);}(_0x81a3,0x199));var _0x381a=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x81a3[_0x321bb2];return _0x9c12ed;};'use strict';module[_0x381a('0x0')]={'rrmemory':require(_0x381a('0x1')),'beepall':require(_0x381a('0x2')),'agent':require(_0x381a('0x3'))};
\ No newline at end of file
index 001b676..46f3f5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51ad=['agentId','channel','info','mapAgentsId','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','done','busy','busyQueue','queue','name','writeLog','RINGING','[%s][QUEUE]\x20timeout\x20with\x20%s','isNil','hideNotification','TIMEOUT','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','realtime','intervals','squeue','push','handleTimeout','timeout','bind','drained','handleDrained','prototype','handleRun','handleCheckReject','isAgentAvailable','agents'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x51ad,0xc4));var _0xd51a=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x51ad[_0x2641f9];return _0x585741;};'use strict';var rr=require('rr');var _=require(_0xd51a('0x0'));var uuid=require(_0xd51a('0x1'));var util=require(_0xd51a('0x2'));var logger=require(_0xd51a('0x3'))(_0xd51a('0x4'));var RRMemory=function(_0x12af15,_0x415927,_0x3a953e,_0x11caff){this[_0xd51a('0x5')]=uuid['v4']();this['squeue']=_0x12af15;this['queue']=_0x415927;this[_0xd51a('0x6')]=_0x3a953e;this['routing']=_0x11caff;this[_0xd51a('0x7')]={};this[_0xd51a('0x8')][_0xd51a('0x9')](this['handleRun']['bind'](this),this[_0xd51a('0xa')]['bind'](this),this['module']);this[_0xd51a('0x8')]['on'](_0xd51a('0xb'),this[_0xd51a('0xa')][_0xd51a('0xc')](this));this[_0xd51a('0x8')]['on'](_0xd51a('0xd'),this[_0xd51a('0xe')][_0xd51a('0xc')](this));};RRMemory[_0xd51a('0xf')][_0xd51a('0x9')]=function(){this[_0xd51a('0x8')][_0xd51a('0x9')](this[_0xd51a('0x10')][_0xd51a('0xc')](this),this[_0xd51a('0xa')][_0xd51a('0xc')](this));};RRMemory[_0xd51a('0xf')]['handleDrained']=function(_0x28df8a){this[_0xd51a('0xa')](!![]);};RRMemory['prototype'][_0xd51a('0x11')]=function(_0x54d2dd){if(util[_0xd51a('0x12')](this[_0xd51a('0x8')]['id'],this[_0xd51a('0x6')][_0xd51a('0x13')][this[_0xd51a('0x14')]],this[_0xd51a('0x8')][_0xd51a('0x15')],!![])){logger[_0xd51a('0x16')]('[%s][QUEUE]\x20available\x20again\x20%s',this[_0xd51a('0x8')]['id'],this[_0xd51a('0x14')]);clearInterval(this[_0xd51a('0x7')][this[_0xd51a('0x14')]]);_0x54d2dd['done']();setTimeout(this[_0xd51a('0x9')]['bind'](this),0x3e8);}};RRMemory['prototype']['handleRun']=function(_0x5cecd6){this[_0xd51a('0x14')]=rr(this['queue'][_0xd51a('0x17')]);logger[_0xd51a('0x16')]('[%s][QUEUE]\x20try\x20with\x20%s',this[_0xd51a('0x8')]['id'],this['agentId']);if(_['isNil'](this[_0xd51a('0x6')][_0xd51a('0x13')][this['agentId']])){logger[_0xd51a('0x16')](_0xd51a('0x18'),this[_0xd51a('0x8')]['id'],this[_0xd51a('0x14')]);_0x5cecd6[_0xd51a('0x19')]();setTimeout(this[_0xd51a('0x9')]['bind'](this),0x3e8);}else{if(util[_0xd51a('0x12')](this[_0xd51a('0x8')]['id'],this[_0xd51a('0x6')]['agents'][this[_0xd51a('0x14')]],this[_0xd51a('0x8')][_0xd51a('0x15')],!![])){this[_0xd51a('0x6')][_0xd51a('0x13')][this[_0xd51a('0x14')]][_0xd51a('0x1a')]=!![];this['realtime'][_0xd51a('0x13')][this[_0xd51a('0x14')]][_0xd51a('0x1b')]=this[_0xd51a('0x1c')][_0xd51a('0x1d')];util['showNotification'](this[_0xd51a('0x5')],this['squeue']['id'],this[_0xd51a('0x6')]['agents'][this[_0xd51a('0x14')]],this[_0xd51a('0x1c')],this[_0xd51a('0x4')]);util[_0xd51a('0x1e')](this[_0xd51a('0x8')]['id'],this[_0xd51a('0x6')]['agents'][this[_0xd51a('0x14')]],_0xd51a('0x1f'));this[_0xd51a('0x7')][this[_0xd51a('0x14')]]=setInterval(this['handleCheckReject'][_0xd51a('0xc')](this,_0x5cecd6),0x3e8);}else{logger[_0xd51a('0x16')]('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this[_0xd51a('0x8')]['id'],this['agentId']);_0x5cecd6['done']();setTimeout(this['push'][_0xd51a('0xc')](this),0x3e8);}}};RRMemory['prototype'][_0xd51a('0xa')]=function(_0x403601){logger['info'](_0xd51a('0x20'),this['squeue']['id'],this[_0xd51a('0x14')]);if(_[_0xd51a('0x21')](this[_0xd51a('0x6')][_0xd51a('0x13')][this[_0xd51a('0x14')]])){logger[_0xd51a('0x16')](_0xd51a('0x18'),this[_0xd51a('0x8')]['id'],this[_0xd51a('0x14')]);}else{clearInterval(this[_0xd51a('0x7')][this[_0xd51a('0x14')]]);util[_0xd51a('0x22')](this[_0xd51a('0x5')],this[_0xd51a('0x8')]['id'],this[_0xd51a('0x6')][_0xd51a('0x13')][this['agentId']],this[_0xd51a('0x1c')],this[_0xd51a('0x4')]);util[_0xd51a('0x1e')](this[_0xd51a('0x8')]['id'],this[_0xd51a('0x6')][_0xd51a('0x13')][this[_0xd51a('0x14')]],_0xd51a('0x23'));this[_0xd51a('0x6')][_0xd51a('0x13')][this[_0xd51a('0x14')]][_0xd51a('0x1a')]=![];this['realtime']['agents'][this[_0xd51a('0x14')]][_0xd51a('0x1b')]=undefined;}if(!_0x403601){setTimeout(this[_0xd51a('0x9')]['bind'](this),0x3e8);}};function rrmemory(_0xbedf31,_0x2534b0,_0x20ba20,_0x3026ae){return new RRMemory(_0xbedf31,_0x2534b0,_0x20ba20,_0x3026ae);}module['exports']=rrmemory;
\ No newline at end of file
+var _0x1f49=['[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','done','busyQueue','name','showNotification','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','hideNotification','writeLog','exports','uuid','routing','notificationId','squeue','queue','intervals','push','bind','handleTimeout','module','handleDrained','prototype','isAgentAvailable','realtime','agents','agentId','channel','info','[%s][QUEUE]\x20available\x20again\x20%s','handleRun','mapAgentsId','isNil'];(function(_0x5b6cf1,_0x32fdcd){var _0x46278c=function(_0x53fd9b){while(--_0x53fd9b){_0x5b6cf1['push'](_0x5b6cf1['shift']());}};_0x46278c(++_0x32fdcd);}(_0x1f49,0xea));var _0x91f4=function(_0x8b8564,_0x162976){_0x8b8564=_0x8b8564-0x0;var _0x360c61=_0x1f49[_0x8b8564];return _0x360c61;};'use strict';var rr=require('rr');var _=require('lodash');var uuid=require(_0x91f4('0x0'));var util=require('./util');var logger=require('../../../../../config/logger')(_0x91f4('0x1'));var RRMemory=function(_0x5e1664,_0x372d90,_0x100777,_0x57b05d){this[_0x91f4('0x2')]=uuid['v4']();this[_0x91f4('0x3')]=_0x5e1664;this[_0x91f4('0x4')]=_0x372d90;this['realtime']=_0x100777;this[_0x91f4('0x1')]=_0x57b05d;this[_0x91f4('0x5')]={};this[_0x91f4('0x3')][_0x91f4('0x6')](this['handleRun'][_0x91f4('0x7')](this),this[_0x91f4('0x8')][_0x91f4('0x7')](this),this[_0x91f4('0x9')]);this[_0x91f4('0x3')]['on']('timeout',this[_0x91f4('0x8')][_0x91f4('0x7')](this));this[_0x91f4('0x3')]['on']('drained',this[_0x91f4('0xa')][_0x91f4('0x7')](this));};RRMemory[_0x91f4('0xb')][_0x91f4('0x6')]=function(){this[_0x91f4('0x3')]['push'](this['handleRun'][_0x91f4('0x7')](this),this[_0x91f4('0x8')][_0x91f4('0x7')](this));};RRMemory['prototype'][_0x91f4('0xa')]=function(_0x2c5170){this[_0x91f4('0x8')](!![]);};RRMemory[_0x91f4('0xb')]['handleCheckReject']=function(_0x4ecd80){if(util[_0x91f4('0xc')](this['squeue']['id'],this[_0x91f4('0xd')][_0x91f4('0xe')][this[_0x91f4('0xf')]],this['squeue'][_0x91f4('0x10')],!![])){logger[_0x91f4('0x11')](_0x91f4('0x12'),this[_0x91f4('0x3')]['id'],this[_0x91f4('0xf')]);clearInterval(this[_0x91f4('0x5')][this['agentId']]);_0x4ecd80['done']();setTimeout(this[_0x91f4('0x6')][_0x91f4('0x7')](this),0x3e8);}};RRMemory[_0x91f4('0xb')][_0x91f4('0x13')]=function(_0x97b18a){this[_0x91f4('0xf')]=rr(this[_0x91f4('0x4')][_0x91f4('0x14')]);logger['info']('[%s][QUEUE]\x20try\x20with\x20%s',this[_0x91f4('0x3')]['id'],this['agentId']);if(_[_0x91f4('0x15')](this['realtime'][_0x91f4('0xe')][this[_0x91f4('0xf')]])){logger[_0x91f4('0x11')](_0x91f4('0x16'),this[_0x91f4('0x3')]['id'],this['agentId']);_0x97b18a[_0x91f4('0x17')]();setTimeout(this[_0x91f4('0x6')][_0x91f4('0x7')](this),0x3e8);}else{if(util[_0x91f4('0xc')](this[_0x91f4('0x3')]['id'],this[_0x91f4('0xd')]['agents'][this[_0x91f4('0xf')]],this['squeue']['channel'],!![])){this['realtime'][_0x91f4('0xe')][this[_0x91f4('0xf')]]['busy']=!![];this[_0x91f4('0xd')][_0x91f4('0xe')][this[_0x91f4('0xf')]][_0x91f4('0x18')]=this['queue'][_0x91f4('0x19')];util[_0x91f4('0x1a')](this[_0x91f4('0x2')],this[_0x91f4('0x3')]['id'],this['realtime']['agents'][this[_0x91f4('0xf')]],this['queue'],this['routing']);util['writeLog'](this[_0x91f4('0x3')]['id'],this[_0x91f4('0xd')]['agents'][this[_0x91f4('0xf')]],'RINGING');this[_0x91f4('0x5')][this[_0x91f4('0xf')]]=setInterval(this['handleCheckReject']['bind'](this,_0x97b18a),0x3e8);}else{logger['info'](_0x91f4('0x1b'),this['squeue']['id'],this['agentId']);_0x97b18a['done']();setTimeout(this[_0x91f4('0x6')][_0x91f4('0x7')](this),0x3e8);}}};RRMemory['prototype'][_0x91f4('0x8')]=function(_0x5625f1){logger[_0x91f4('0x11')](_0x91f4('0x1c'),this['squeue']['id'],this[_0x91f4('0xf')]);if(_[_0x91f4('0x15')](this['realtime'][_0x91f4('0xe')][this[_0x91f4('0xf')]])){logger['info'](_0x91f4('0x16'),this[_0x91f4('0x3')]['id'],this[_0x91f4('0xf')]);}else{clearInterval(this[_0x91f4('0x5')][this['agentId']]);util[_0x91f4('0x1d')](this[_0x91f4('0x2')],this[_0x91f4('0x3')]['id'],this[_0x91f4('0xd')][_0x91f4('0xe')][this[_0x91f4('0xf')]],this[_0x91f4('0x4')],this[_0x91f4('0x1')]);util[_0x91f4('0x1e')](this[_0x91f4('0x3')]['id'],this[_0x91f4('0xd')]['agents'][this[_0x91f4('0xf')]],'TIMEOUT');this[_0x91f4('0xd')]['agents'][this[_0x91f4('0xf')]]['busy']=![];this[_0x91f4('0xd')][_0x91f4('0xe')][this['agentId']]['busyQueue']=undefined;}if(!_0x5625f1){setTimeout(this[_0x91f4('0x6')][_0x91f4('0x7')](this),0x3e8);}};function rrmemory(_0x35d2b0,_0x59eaba,_0x5f5408,_0x10107e){return new RRMemory(_0x35d2b0,_0x59eaba,_0x5f5408,_0x10107e);}module[_0x91f4('0x1f')]=rrmemory;
\ No newline at end of file
index 57e5a3e..dd6f477 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90b1=['remove','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY','online','OFFLINE','hasOwnProperty','Capacity','toUpperCase','showNotification','lodash','util','../utils','../../../../../config/environment','../../../../../config/logger','routing','redis','emit','format','user:%s','name','user:save','split','\x20interaction','account','notificationSound','notificationShake','body','queue','msg','getMustacheRender','I\x20can\x27t\x20render\x20your\x20template','error','[%s][QUEUE]\x20%s','notification:%s'];(function(_0x48a7a9,_0x41286c){var _0xa5fc04=function(_0x103d9a){while(--_0x103d9a){_0x48a7a9['push'](_0x48a7a9['shift']());}};_0xa5fc04(++_0x41286c);}(_0x90b1,0x1bb));var _0x190b=function(_0x1beafa,_0x3343a7){_0x1beafa=_0x1beafa-0x0;var _0xfc70e4=_0x90b1[_0x1beafa];return _0xfc70e4;};'use strict';var _=require(_0x190b('0x0'));var util=require(_0x190b('0x1'));var utils=require(_0x190b('0x2'));var Mustache=require('mustache');var Redis=require('ioredis');var config=require(_0x190b('0x3'));var logger=require(_0x190b('0x4'))(_0x190b('0x5'));config[_0x190b('0x6')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x190b('0x6')]));function emit(_0x34a689,_0x3b57f7,_0x626aa1){io['to'](_0x34a689)[_0x190b('0x7')](_0x3b57f7,_0x626aa1);}function sendNotification(_0x802924,_0x32c30c,_0x5cf2b4,_0x14b93d,_0x186101,_0x163966){io['to'](util[_0x190b('0x8')](_0x190b('0x9'),_0x14b93d[_0x190b('0xa')]))[_0x190b('0x7')](_0x190b('0xb'),_0x14b93d);var _0x5d6497=_0x163966||{};var _0xb3f47b=_0x5cf2b4[_0x190b('0xc')]('.');var _0x5701ad={'uniqueid':_0x32c30c,'channel':_0xb3f47b[0x0],'id':_0xb3f47b[0x1],'title':_0xb3f47b[0x0]+_0x190b('0xd'),'interactionId':_0xb3f47b[0x2],'queue':_0x186101?_0x186101[_0x190b('0xa')]:null,'sound':_0x5d6497[_0x190b('0xe')][_0x190b('0xf')],'shake':_0x5d6497[_0x190b('0xe')][_0x190b('0x10')]};try{if(!_0x5d6497[_0x190b('0x11')]){_0x5d6497[_0x190b('0x11')]={};}if(_0x186101){_0x5d6497[_0x190b('0x11')][_0x190b('0x12')]=_0x186101;}else if(_0x5d6497[_0x190b('0x11')][_0x190b('0x12')]){delete _0x5d6497[_0x190b('0x11')][_0x190b('0x12')];}_0x5701ad[_0x190b('0x13')]=utils[_0x190b('0x14')](_0x5d6497[_0x190b('0xe')]['notificationTemplate'],_0x5d6497);}catch(_0x428fec){_0x5701ad['msg']=_0x190b('0x15');logger[_0x190b('0x16')](util[_0x190b('0x8')](_0x190b('0x17'),_0x32c30c,_0x428fec['message']));}io['to'](util[_0x190b('0x8')](_0x190b('0x9'),_0x14b93d[_0x190b('0xa')]))[_0x190b('0x7')](util[_0x190b('0x8')](_0x190b('0x18'),_0x802924?'save':_0x190b('0x19')),_0x5701ad);}function writeLog(_0x14f0a5,_0x5092dd,_0xb4c32b){return logger['info'](util['format'](_0x190b('0x1a'),_0x14f0a5,_0x5092dd[_0x190b('0xa')],_0xb4c32b));}exports[_0x190b('0x1b')]=function(_0x4c0b6e,_0x37465e,_0x2e633e,_0x16e989){if(_0x37465e[_0x190b('0x1c')]){writeLog(_0x4c0b6e,_0x37465e,_0x190b('0x1d'));return![];}if(!_0x37465e[_0x190b('0x1e')]){writeLog(_0x4c0b6e,_0x37465e,_0x190b('0x1f'));return![];}if(_0x37465e[_0x2e633e+'Pause']){writeLog(_0x4c0b6e,_0x37465e,'PAUSE');return![];}if(_0x16e989&&_0x37465e[_0x190b('0x20')](_0x2e633e+_0x190b('0x21'))&&_0x37465e['hasOwnProperty'](_0x2e633e+'CurrentCapacity')){if(_0x37465e[_0x2e633e+_0x190b('0x21')]>0x0&&_0x37465e[_0x2e633e+'CurrentCapacity']>=_0x37465e[_0x2e633e+_0x190b('0x21')]){writeLog(_0x4c0b6e,_0x37465e,_0x2e633e[_0x190b('0x22')]()+'\x20MAXCAPACITY');return![];}}return!![];};exports[_0x190b('0x23')]=function(_0x1deea6,_0x5c89ab,_0xa9d6f7,_0x2c47ae,_0x359b4a){return sendNotification(!![],_0x1deea6,_0x5c89ab,_0xa9d6f7,_0x2c47ae,_0x359b4a);};exports['hideNotification']=function(_0x536d7b,_0x3730cc,_0x4d5f3f,_0x14be2c,_0x19e421){return sendNotification(![],_0x536d7b,_0x3730cc,_0x4d5f3f,_0x14be2c,_0x19e421);};exports['writeLog']=writeLog;
\ No newline at end of file
+var _0xeda8=['OFFLINE','Pause','hasOwnProperty','Capacity','CurrentCapacity','\x20MAXCAPACITY','showNotification','writeLog','lodash','util','mustache','ioredis','../../../../../config/environment','../../../../../config/logger','routing','redis','defaults','localhost','socket.io-emitter','emit','format','user:%s','name','user:save','split','\x20interaction','account','notificationSound','body','queue','msg','I\x20can\x27t\x20render\x20your\x20template','error','message','notification:%s','save','remove','info','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY'];(function(_0xcf07d2,_0x34d380){var _0x2c141b=function(_0x6870ac){while(--_0x6870ac){_0xcf07d2['push'](_0xcf07d2['shift']());}};_0x2c141b(++_0x34d380);}(_0xeda8,0x104));var _0x8eda=function(_0x8d8d50,_0x2b388f){_0x8d8d50=_0x8d8d50-0x0;var _0x572d28=_0xeda8[_0x8d8d50];return _0x572d28;};'use strict';var _=require(_0x8eda('0x0'));var util=require(_0x8eda('0x1'));var utils=require('../utils');var Mustache=require(_0x8eda('0x2'));var Redis=require(_0x8eda('0x3'));var config=require(_0x8eda('0x4'));var logger=require(_0x8eda('0x5'))(_0x8eda('0x6'));config[_0x8eda('0x7')]=_[_0x8eda('0x8')](config[_0x8eda('0x7')],{'host':_0x8eda('0x9'),'port':0x18eb});var io=require(_0x8eda('0xa'))(new Redis(config[_0x8eda('0x7')]));function emit(_0x32abe8,_0x4e2ebb,_0x28b721){io['to'](_0x32abe8)[_0x8eda('0xb')](_0x4e2ebb,_0x28b721);}function sendNotification(_0x5aa93d,_0x6b544f,_0x4be9df,_0x4f7893,_0x488849,_0x4fbf0a){io['to'](util[_0x8eda('0xc')](_0x8eda('0xd'),_0x4f7893[_0x8eda('0xe')]))['emit'](_0x8eda('0xf'),_0x4f7893);var _0x5a80ca=_0x4fbf0a||{};var _0x3f34c=_0x4be9df[_0x8eda('0x10')]('.');var _0x2fdec0={'uniqueid':_0x6b544f,'channel':_0x3f34c[0x0],'id':_0x3f34c[0x1],'title':_0x3f34c[0x0]+_0x8eda('0x11'),'interactionId':_0x3f34c[0x2],'queue':_0x488849?_0x488849[_0x8eda('0xe')]:null,'sound':_0x5a80ca[_0x8eda('0x12')][_0x8eda('0x13')],'shake':_0x5a80ca[_0x8eda('0x12')]['notificationShake']};try{if(!_0x5a80ca['body']){_0x5a80ca[_0x8eda('0x14')]={};}if(_0x488849){_0x5a80ca[_0x8eda('0x14')]['queue']=_0x488849;}else if(_0x5a80ca[_0x8eda('0x14')][_0x8eda('0x15')]){delete _0x5a80ca[_0x8eda('0x14')]['queue'];}_0x2fdec0[_0x8eda('0x16')]=utils['getMustacheRender'](_0x5a80ca[_0x8eda('0x12')]['notificationTemplate'],_0x5a80ca);}catch(_0x24aed4){_0x2fdec0['msg']=_0x8eda('0x17');logger[_0x8eda('0x18')](util['format']('[%s][QUEUE]\x20%s',_0x6b544f,_0x24aed4[_0x8eda('0x19')]));}io['to'](util[_0x8eda('0xc')](_0x8eda('0xd'),_0x4f7893[_0x8eda('0xe')]))[_0x8eda('0xb')](util[_0x8eda('0xc')](_0x8eda('0x1a'),_0x5aa93d?_0x8eda('0x1b'):_0x8eda('0x1c')),_0x2fdec0);}function writeLog(_0x232786,_0x279ade,_0x57f336){return logger[_0x8eda('0x1d')](util['format'](_0x8eda('0x1e'),_0x232786,_0x279ade['name'],_0x57f336));}exports[_0x8eda('0x1f')]=function(_0x2dab25,_0x4f3e0a,_0x58e54b,_0x56dba4){if(_0x4f3e0a[_0x8eda('0x20')]){writeLog(_0x2dab25,_0x4f3e0a,_0x8eda('0x21'));return![];}if(!_0x4f3e0a['online']){writeLog(_0x2dab25,_0x4f3e0a,_0x8eda('0x22'));return![];}if(_0x4f3e0a[_0x58e54b+_0x8eda('0x23')]){writeLog(_0x2dab25,_0x4f3e0a,'PAUSE');return![];}if(_0x56dba4&&_0x4f3e0a[_0x8eda('0x24')](_0x58e54b+_0x8eda('0x25'))&&_0x4f3e0a[_0x8eda('0x24')](_0x58e54b+_0x8eda('0x26'))){if(_0x4f3e0a[_0x58e54b+_0x8eda('0x25')]>0x0&&_0x4f3e0a[_0x58e54b+'CurrentCapacity']>=_0x4f3e0a[_0x58e54b+_0x8eda('0x25')]){writeLog(_0x2dab25,_0x4f3e0a,_0x58e54b['toUpperCase']()+_0x8eda('0x27'));return![];}}return!![];};exports[_0x8eda('0x28')]=function(_0x8337b4,_0x567f69,_0x23e892,_0x244400,_0x1dd12){return sendNotification(!![],_0x8337b4,_0x567f69,_0x23e892,_0x244400,_0x1dd12);};exports['hideNotification']=function(_0x1616ea,_0x11a999,_0x5dd315,_0x27d2ce,_0x29e6f4){return sendNotification(![],_0x1616ea,_0x11a999,_0x5dd315,_0x27d2ce,_0x29e6f4);};exports[_0x8eda('0x29')]=writeLog;
\ No newline at end of file
index 11251ac..3a3f06e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7aa7=['[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','isObject','stringify','lodash','./utils','../../../../config/logger','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][SYSTEM]\x20%s','map','message','join','info','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','isNil','isEmpty','body'];(function(_0x525e84,_0x225bb0){var _0x4b81e8=function(_0x51b687){while(--_0x51b687){_0x525e84['push'](_0x525e84['shift']());}};_0x4b81e8(++_0x225bb0);}(_0x7aa7,0xfd));var _0x77aa=function(_0x7b4f3b,_0x4dcd9a){_0x7b4f3b=_0x7b4f3b-0x0;var _0x363840=_0x7aa7[_0x7b4f3b];return _0x363840;};'use strict';var schema=require('validate');var sh=require('shelljs');var _=require(_0x77aa('0x0'));var utils=require(_0x77aa('0x1'));var logger=require(_0x77aa('0x2'))('routing');var system=schema({'command':{'type':_0x77aa('0x3'),'required':!![],'message':_0x77aa('0x4')}});exports[_0x77aa('0x5')]=function(_0x1be643,_0x321bf2){return function(_0x8fcddd){try{var _0x211587={'command':_0x321bf2[0x0]};var _0x4726da=system['validate'](_0x211587,{'typecast':!![]});if(_0x4726da[_0x77aa('0x6')]){logger[_0x77aa('0x7')](_0x77aa('0x8'),_0x1be643,_[_0x77aa('0x9')](_0x4726da,_0x77aa('0xa'))[_0x77aa('0xb')](',\x20'));logger[_0x77aa('0xc')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x1be643);_0x8fcddd[_0x77aa('0xd')]();}else{var _0x58d844=this;var _0x5c17bb=utils[_0x77aa('0xe')](_0x321bf2[0x0],this);logger[_0x77aa('0xc')](_0x77aa('0xf'),_0x1be643,_0x5c17bb);sh[_0x77aa('0x10')](_[_0x77aa('0x11')](_0x5c17bb),function(_0x5856bb,_0xf9f5dd){logger[_0x77aa('0xc')](_0x77aa('0x12'),_0x1be643,_0x5856bb);if(_0x5856bb==0x0){var _0x425852=_0xf9f5dd['replace'](/(\r\n|\n|\r)/gm,'');if(_[_0x77aa('0x13')](_0x321bf2[0x1])||_[_0x77aa('0x14')](_0x321bf2[0x1])){logger[_0x77aa('0xc')]('[%s][SYSTEM]\x20no\x20variable',_0x1be643);_0x58d844[_0x77aa('0x15')][_0x321bf2[0x1]]=_0x425852;}else{logger['info'](_0x77aa('0x16'),_0x1be643,_0x321bf2[0x1],_0x425852);_0x58d844[_0x77aa('0x15')][_0x321bf2[0x1]]=_0x425852;}}_0x8fcddd[_0x77aa('0xd')]();});}}catch(_0x412bef){logger[_0x77aa('0x7')](_0x77aa('0x8'),_0x1be643,_[_0x77aa('0x17')](_0x412bef)?JSON[_0x77aa('0x18')](_0x412bef):_0x412bef);logger[_0x77aa('0xc')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x1be643);_0x8fcddd[_0x77aa('0xd')]();}};};
\ No newline at end of file
+var _0x0585=['[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','isEmpty','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','body','error','isObject','stringify','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','validate','shelljs','./utils','routing','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','[%s][SYSTEM]\x20%s','map','message','join','info','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','trim'];(function(_0xc183d4,_0x1d8e6c){var _0x2e38a8=function(_0x34b7b2){while(--_0x34b7b2){_0xc183d4['push'](_0xc183d4['shift']());}};_0x2e38a8(++_0x1d8e6c);}(_0x0585,0x1ba));var _0x5058=function(_0x6d0e63,_0x245774){_0x6d0e63=_0x6d0e63-0x0;var _0x233650=_0x0585[_0x6d0e63];return _0x233650;};'use strict';var schema=require(_0x5058('0x0'));var sh=require(_0x5058('0x1'));var _=require('lodash');var utils=require(_0x5058('0x2'));var logger=require('../../../../config/logger')(_0x5058('0x3'));var system=schema({'command':{'type':_0x5058('0x4'),'required':!![],'message':_0x5058('0x5')}});exports[_0x5058('0x6')]=function(_0x43f4ed,_0x373feb){return function(_0xcca164){try{var _0x58841b={'command':_0x373feb[0x0]};var _0x3992c9=system[_0x5058('0x0')](_0x58841b,{'typecast':!![]});if(_0x3992c9[_0x5058('0x7')]){logger['error'](_0x5058('0x8'),_0x43f4ed,_[_0x5058('0x9')](_0x3992c9,_0x5058('0xa'))[_0x5058('0xb')](',\x20'));logger[_0x5058('0xc')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x43f4ed);_0xcca164[_0x5058('0xd')]();}else{var _0x22d47a=this;var _0x4025f3=utils[_0x5058('0xe')](_0x373feb[0x0],this);logger[_0x5058('0xc')](_0x5058('0xf'),_0x43f4ed,_0x4025f3);sh['exec'](_[_0x5058('0x10')](_0x4025f3),function(_0x3d7845,_0x5503a6){logger[_0x5058('0xc')](_0x5058('0x11'),_0x43f4ed,_0x3d7845);if(_0x3d7845==0x0){var _0x3e21a8=_0x5503a6[_0x5058('0x12')](/(\r\n|\n|\r)/gm,'');if(_[_0x5058('0x13')](_0x373feb[0x1])||_[_0x5058('0x14')](_0x373feb[0x1])){logger[_0x5058('0xc')]('[%s][SYSTEM]\x20no\x20variable',_0x43f4ed);_0x22d47a['body'][_0x373feb[0x1]]=_0x3e21a8;}else{logger[_0x5058('0xc')](_0x5058('0x15'),_0x43f4ed,_0x373feb[0x1],_0x3e21a8);_0x22d47a[_0x5058('0x16')][_0x373feb[0x1]]=_0x3e21a8;}}_0xcca164[_0x5058('0xd')]();});}}catch(_0xeb3584){logger[_0x5058('0x17')](_0x5058('0x8'),_0x43f4ed,_[_0x5058('0x18')](_0xeb3584)?JSON[_0x5058('0x19')](_0xeb3584):_0xeb3584);logger[_0x5058('0xc')](_0x5058('0x1a'),_0x43f4ed);_0xcca164[_0x5058('0xd')]();}};};
\ No newline at end of file
index fa01690..c323d74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeef3=['message','join','next','channel','Interaction','addTags','interaction','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','stringify','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','finally','isObject','validate','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/whatsappInteraction','../../../../config/logger','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','error','[%s][TAG]\x20%s','map'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xeef3,0x7a));var _0x3eef=function(_0x31a371,_0x50828e){_0x31a371=_0x31a371-0x0;var _0x2a5bd6=_0xeef3[_0x31a371];return _0x2a5bd6;};'use strict';var schema=require(_0x3eef('0x0'));var _=require('lodash');var rpc={'chatInteraction':require(_0x3eef('0x1')),'openchannelInteraction':require(_0x3eef('0x2')),'smsInteraction':require(_0x3eef('0x3')),'mailInteraction':require(_0x3eef('0x4')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0x3eef('0x5'))};var logger=require(_0x3eef('0x6'))('routing');var tag=schema({'tag':{'type':_0x3eef('0x7'),'required':!![],'message':_0x3eef('0x8')}});exports[_0x3eef('0x9')]=function(_0x163eed,_0x16df2b,_0x144b78,_0x14f9b4){return function(_0x32bd21){try{var _0x1dbfdb={'tag':_0x16df2b[0x0]};var _0x3818dc=tag[_0x3eef('0x0')](_0x1dbfdb,{'typecast':!![]});if(_0x3818dc['length']){logger[_0x3eef('0xa')](_0x3eef('0xb'),_0x163eed,_[_0x3eef('0xc')](_0x3818dc,_0x3eef('0xd'))[_0x3eef('0xe')](',\x20'));logger['info']('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x163eed);_0x32bd21[_0x3eef('0xf')]();}else{var _0x32a5a5={'ids':[_0x16df2b[0x0]]};if(rpc[_0x14f9b4[_0x3eef('0x10')]+'Interaction']){rpc[_0x14f9b4[_0x3eef('0x10')]+_0x3eef('0x11')][_0x3eef('0x12')](_0x14f9b4[_0x3eef('0x13')]['id'],_0x32a5a5)['then'](function(_0x341adf){logger['info'](_0x3eef('0x14'),_0x163eed,_0x16df2b[0x1],_0x14f9b4[_0x3eef('0x10')],_0x14f9b4['interaction']['id']);})[_0x3eef('0x15')](function(_0x152c0c){logger['error'](_0x3eef('0xb'),_0x163eed,JSON[_0x3eef('0x16')](_0x152c0c));logger[_0x3eef('0x17')](_0x3eef('0x18'),_0x163eed);})[_0x3eef('0x19')](function(){_0x32bd21[_0x3eef('0xf')]();});}}}catch(_0x1eb332){logger['error'](_0x3eef('0xb'),_0x163eed,_[_0x3eef('0x1a')](_0x1eb332)?JSON['stringify'](_0x1eb332):_0x1eb332);logger[_0x3eef('0x17')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x163eed);_0x32bd21[_0x3eef('0xf')]();}};};
\ No newline at end of file
+var _0x53af=['../../rpc/whatsappInteraction','../../../../config/logger','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][TAG]\x20%s','map','message','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','Interaction','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','interaction','catch','stringify','validate','lodash','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction'];(function(_0xdc4d33,_0x1afbfe){var _0xc2afdc=function(_0x30e38c){while(--_0x30e38c){_0xdc4d33['push'](_0xdc4d33['shift']());}};_0xc2afdc(++_0x1afbfe);}(_0x53af,0x1e8));var _0xf53a=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x53af[_0x19950b];return _0x3c6b41;};'use strict';var schema=require(_0xf53a('0x0'));var _=require(_0xf53a('0x1'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0xf53a('0x2')),'smsInteraction':require(_0xf53a('0x3')),'mailInteraction':require(_0xf53a('0x4')),'faxInteraction':require(_0xf53a('0x5')),'whatsappInteraction':require(_0xf53a('0x6'))};var logger=require(_0xf53a('0x7'))('routing');var tag=schema({'tag':{'type':_0xf53a('0x8'),'required':!![],'message':_0xf53a('0x9')}});exports[_0xf53a('0xa')]=function(_0x419dc5,_0x46a691,_0x1595cf,_0x1bbba7){return function(_0x19ecfc){try{var _0x33d92b={'tag':_0x46a691[0x0]};var _0x59591f=tag['validate'](_0x33d92b,{'typecast':!![]});if(_0x59591f[_0xf53a('0xb')]){logger[_0xf53a('0xc')](_0xf53a('0xd'),_0x419dc5,_[_0xf53a('0xe')](_0x59591f,_0xf53a('0xf'))[_0xf53a('0x10')](',\x20'));logger[_0xf53a('0x11')](_0xf53a('0x12'),_0x419dc5);_0x19ecfc[_0xf53a('0x13')]();}else{var _0x23068f={'ids':[_0x46a691[0x0]]};if(rpc[_0x1bbba7[_0xf53a('0x14')]+_0xf53a('0x15')]){rpc[_0x1bbba7[_0xf53a('0x14')]+_0xf53a('0x15')]['addTags'](_0x1bbba7['interaction']['id'],_0x23068f)['then'](function(_0x5d5c22){logger[_0xf53a('0x11')](_0xf53a('0x16'),_0x419dc5,_0x46a691[0x1],_0x1bbba7[_0xf53a('0x14')],_0x1bbba7[_0xf53a('0x17')]['id']);})[_0xf53a('0x18')](function(_0x229279){logger[_0xf53a('0xc')]('[%s][TAG]\x20%s',_0x419dc5,JSON[_0xf53a('0x19')](_0x229279));logger[_0xf53a('0x11')](_0xf53a('0x12'),_0x419dc5);})['finally'](function(){_0x19ecfc['next']();});}}}catch(_0x28705e){logger[_0xf53a('0xc')](_0xf53a('0xd'),_0x419dc5,_['isObject'](_0x28705e)?JSON[_0xf53a('0x19')](_0x28705e):_0x28705e);logger['info']('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x419dc5);_0x19ecfc['next']();}};};
\ No newline at end of file
index 593357a..57ed138 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['list','lodash','exports','render','merge','contact','message','account','interaction'];(function(_0x1c3800,_0x558212){var _0x3662f4=function(_0x49f12f){while(--_0x49f12f){_0x1c3800['push'](_0x1c3800['shift']());}};_0x3662f4(++_0x558212);}(_0xbaf0,0x12a));var _0x0baf=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xbaf0[_0x501510];return _0x1e6ee5;};'use strict';var Mustache=require('mustache');var _=require(_0x0baf('0x0'));module[_0x0baf('0x1')]={'getMustacheRender':function(_0x1e212d,_0x263f79){return Mustache[_0x0baf('0x2')](_0x1e212d,_[_0x0baf('0x3')](_0x263f79['body'],{'contact':_0x263f79[_0x0baf('0x4')],'message':_0x263f79[_0x0baf('0x5')],'account':_0x263f79[_0x0baf('0x6')],'interaction':_0x263f79[_0x0baf('0x7')],'list':_0x263f79[_0x0baf('0x8')]}))||'';}};
\ No newline at end of file
+var _0xa9e0=['message','account','interaction','mustache','lodash','exports','render','body','contact'];(function(_0x368116,_0xcd35ab){var _0x2af10a=function(_0x4a3c6b){while(--_0x4a3c6b){_0x368116['push'](_0x368116['shift']());}};_0x2af10a(++_0xcd35ab);}(_0xa9e0,0x123));var _0x0a9e=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0xa9e0[_0x46aff0];return _0x9d78cf;};'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
index bed355c..7668cfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b9a=['updateRealtime','agent\x20not\x20found','values','chatQueues','loggedIn','paused','waiting','mailQueues','available','name','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','path','jayson/promise','bluebird','uuid','../../../config/environment','routing','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../lib/rule-engine','format','%s.%s.%s','isNil','IntervalId','Intervals','interval','listen','rules','message','interaction','isArray','applications','length','existsSync','join','.js','app','autoreply','appdata','split','mail','push','slice','dialogflow','dialogflowv2','amazonlex','tag','condition','intervals','consequence','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','execute','Applications\x20executed','stringify','emit','complete','agent','agents','busyQueue','channel','QueueReport','UserId','error\x20update\x20queue\x20report','message\x20is\x20empty','stack','end','hasOwnProperty','capacity','CurrentCapacity'];(function(_0x5b8300,_0x55e108){var _0x48f06a=function(_0x1658e0){while(--_0x1658e0){_0x5b8300['push'](_0x5b8300['shift']());}};_0x48f06a(++_0x55e108);}(_0x2b9a,0x127));var _0xa2b9=function(_0xcf505b,_0x1607ba){_0xcf505b=_0xcf505b-0x0;var _0x20f871=_0x2b9a[_0xcf505b];return _0x20f871;};'use strict';var _=require('lodash');var util=require('util');var path=require(_0xa2b9('0x0'));var fs=require('fs');var jayson=require(_0xa2b9('0x1'));var BPromise=require(_0xa2b9('0x2'));var uuid=require(_0xa2b9('0x3'));var config=require(_0xa2b9('0x4'));var logger=require('../../../config/logger')(_0xa2b9('0x5'));var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require(_0xa2b9('0x6')),'chatQueueReport':require(_0xa2b9('0x7')),'smsQueueReport':require(_0xa2b9('0x8')),'faxQueueReport':require(_0xa2b9('0x9')),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require(_0xa2b9('0xa'));function getId(_0xc84ec,_0x1b0b90,_0x1cf1e3){return util[_0xa2b9('0xb')](_0xa2b9('0xc'),_0xc84ec,_0x1b0b90||0x0,_0x1cf1e3||0x0);}function getIntervals(_0xeec56f,_0x20dc80){var _0x5de38a=[];if(!_[_0xa2b9('0xd')](_0x20dc80[_0xa2b9('0xe')])&&!_['isNil'](_0xeec56f[_0x20dc80[_0xa2b9('0xe')]])&&!_[_0xa2b9('0xd')](_0xeec56f[_0x20dc80[_0xa2b9('0xe')]][_0xa2b9('0xf')])){_0x5de38a=_['map'](_0xeec56f[_0x20dc80[_0xa2b9('0xe')]][_0xa2b9('0xf')],'interval');}else if(!_['isNil'](_0x20dc80['interval'])){_0x5de38a=[_0x20dc80[_0xa2b9('0x10')]];}return _0x5de38a;}exports[_0xa2b9('0x11')]=function(_0x33d743){_0x33d743[_0xa2b9('0x12')]={};return new BPromise(function(_0x4ec1ce,_0x5e1509){var _0x3e141a={'Start':function(_0x4d4c3f){var _0x59cf62=this;return new Promise(function(_0xd67ee2,_0x28d131){if(_0x4d4c3f){try{var _0x40f00e=[];var _0x30cf34=getId(_0x4d4c3f['channel'],_0x4d4c3f[_0xa2b9('0x13')]?_0x4d4c3f[_0xa2b9('0x13')]['id']:0x0,_0x4d4c3f[_0xa2b9('0x14')]?_0x4d4c3f['interaction']['id']:0x0);if(_0x4d4c3f['applications']&&_[_0xa2b9('0x15')](_0x4d4c3f[_0xa2b9('0x16')])&&_0x4d4c3f[_0xa2b9('0x16')][_0xa2b9('0x17')]){for(var _0x2e293a=0x0;_0x2e293a<_0x4d4c3f[_0xa2b9('0x16')]['length'];_0x2e293a+=0x1){var _0x1b4757=_0x4d4c3f[_0xa2b9('0x16')][_0x2e293a];if(fs[_0xa2b9('0x18')](path[_0xa2b9('0x19')](__dirname,_0xa2b9('0x16'),_0x1b4757['app']+_0xa2b9('0x1a')))){var _0x5708db=[];switch(_0x1b4757[_0xa2b9('0x1b')]['toLowerCase']()){case _0xa2b9('0x1c'):var _0x3bd69d=_0x1b4757[_0xa2b9('0x1d')][_0xa2b9('0x1e')](',');if(_0x4d4c3f['channel']===_0xa2b9('0x1f')){_0x5708db[_0xa2b9('0x20')](_0x3bd69d[0x0]);_0x5708db[_0xa2b9('0x20')](_0x3bd69d[0x1]);_0x5708db['push'](_0x3bd69d['slice'](0x2,_0x3bd69d[_0xa2b9('0x17')])[_0xa2b9('0x19')](','));}else{_0x5708db['push'](_0x3bd69d[0x0]);_0x5708db[_0xa2b9('0x20')](_0x3bd69d[_0xa2b9('0x21')](0x1,_0x3bd69d[_0xa2b9('0x17')])[_0xa2b9('0x19')](','));}break;case _0xa2b9('0x22'):var _0x20ef99=_0x1b4757[_0xa2b9('0x1d')][_0xa2b9('0x1e')](',');_0x5708db[_0xa2b9('0x20')](_0x20ef99[0x0]);_0x5708db[_0xa2b9('0x20')](_0x20ef99[0x1]);_0x5708db['push'](_0x20ef99[_0xa2b9('0x21')](0x2,_0x20ef99['length'])[_0xa2b9('0x19')](','));break;case _0xa2b9('0x23'):var _0x384c26=_0x1b4757[_0xa2b9('0x1d')]['split'](',');_0x5708db[_0xa2b9('0x20')](_0x384c26[0x0]);_0x5708db['push'](_0x384c26[0x1]);_0x5708db['push'](_0x384c26[0x2]);_0x5708db[_0xa2b9('0x20')](_0x384c26[0x3]);_0x5708db['push'](_0x384c26[_0xa2b9('0x21')](0x4,_0x384c26[_0xa2b9('0x17')])[_0xa2b9('0x19')](','));break;case _0xa2b9('0x24'):var _0x5fdf0a=_0x1b4757[_0xa2b9('0x1d')][_0xa2b9('0x1e')](',');_0x5708db[_0xa2b9('0x20')](_0x5fdf0a[0x0]);_0x5708db[_0xa2b9('0x20')](_0x5fdf0a[0x1]);_0x5708db[_0xa2b9('0x20')](_0x5fdf0a[0x2]);_0x5708db[_0xa2b9('0x20')](_0x5fdf0a[0x3]);_0x5708db[_0xa2b9('0x20')](_0x5fdf0a[_0xa2b9('0x21')](0x4,_0x5fdf0a[_0xa2b9('0x17')])['join'](','));break;case'message':_0x5708db[_0xa2b9('0x20')](_0x1b4757['appdata']);break;case _0xa2b9('0x25'):_0x5708db['push'](_0x1b4757['TagId']);_0x5708db[_0xa2b9('0x20')](_0x1b4757[_0xa2b9('0x1d')]);break;default:_0x5708db=_['isNil'](_0x1b4757['appdata'])?[]:_0x1b4757[_0xa2b9('0x1d')][_0xa2b9('0x1e')](',');}var _0x42c7af={'id':util[_0xa2b9('0xb')]('%s:%s:%s',_0x30cf34,_0x1b4757['id'],_0x1b4757[_0xa2b9('0x1b')]),'condition':require('./interval')[_0xa2b9('0x26')](_0x30cf34,getIntervals(_0x33d743[_0xa2b9('0x27')],_0x1b4757),_0x33d743),'consequence':require('./applications/'+_0x1b4757[_0xa2b9('0x1b')])[_0xa2b9('0x28')](_0x30cf34,_0x5708db,_0x33d743,_0x4d4c3f),'p':_0x1b4757['priority']||0x0};logger[_0xa2b9('0x29')](_0xa2b9('0x2a'),_0x42c7af['id'],_0xa2b9('0x2b'),getIntervals(_0x33d743[_0xa2b9('0x27')],_0x1b4757)[_0xa2b9('0x19')](_0xa2b9('0x2c')));_0x40f00e['push'](_0x42c7af);}else{logger[_0xa2b9('0x2d')](_0xa2b9('0x2e'),path[_0xa2b9('0x19')](__dirname,_0xa2b9('0x16'),_0x1b4757[_0xa2b9('0x1b')]+_0xa2b9('0x1a')));}}_0x33d743['rules'][_0x30cf34]=new RuleEngine(_0x40f00e);_0x33d743[_0xa2b9('0x12')][_0x30cf34][_0xa2b9('0x2f')](_0x4d4c3f,function(_0x927202){logger['info'](_0xa2b9('0x30'),JSON[_0xa2b9('0x31')](_0x927202['matchPath']));if(_0x33d743[_0xa2b9('0x12')][_0x30cf34]){_0x33d743[_0xa2b9('0x12')][_0x30cf34][_0xa2b9('0x32')](_0xa2b9('0x33'));}});return _0xd67ee2({'code':0xc8,'message':_0x4d4c3f});}else{logger['info']('No\x20applications\x20to\x20execute');return _0xd67ee2({'code':0xc8,'message':_0x4d4c3f});}}catch(_0x2a0156){logger[_0xa2b9('0x2d')](_0x2a0156['stack']);return _0x28d131(_0x59cf62[_0xa2b9('0x2d')](0x1f4,_0x2a0156));}}return _0x28d131('routing\x20is\x20empty');});},'AcceptMessage':function(_0x354f6e){var _0xa3b6ef=this;return new Promise(function(_0x43b0c6,_0x35fec1){if(_0x354f6e[_0xa2b9('0x34')]&&_0x354f6e[_0xa2b9('0x34')]['id']){if(_0x33d743['agents'][_0x354f6e['agent']['id']]){_0x33d743[_0xa2b9('0x35')][_0x354f6e['agent']['id']]['busy']=![];_0x33d743['agents'][_0x354f6e[_0xa2b9('0x34')]['id']][_0xa2b9('0x36')]=undefined;}}if(_0x354f6e[_0xa2b9('0x13')]&&_0x354f6e[_0xa2b9('0x13')]['id']){try{var _0x59d5b8=getId(_0x354f6e[_0xa2b9('0x37')],_0x354f6e['message']?_0x354f6e[_0xa2b9('0x13')]['id']:0x0,_0x354f6e[_0xa2b9('0x14')]?_0x354f6e[_0xa2b9('0x14')]['id']:0x0);if(_0x33d743[_0xa2b9('0x12')][_0x59d5b8]){_0x33d743['rules'][_0x59d5b8][_0xa2b9('0x32')]('end');if(rpc[_0x354f6e[_0xa2b9('0x37')]+'QueueReport']){rpc[_0x354f6e[_0xa2b9('0x37')]+_0xa2b9('0x38')]['update'](_0x59d5b8,{'UserId':_0x354f6e['message'][_0xa2b9('0x39')]})['catch'](function(_0x5065c8){logger[_0xa2b9('0x2d')](_0xa2b9('0x3a'));});}}return _0x43b0c6({'code':0xc8,'message':_0x354f6e});}catch(_0x5019e1){logger['error'](_0x5019e1['stack']);return _0x35fec1(_0xa3b6ef['error'](0x1f4,_0x5019e1));}}logger[_0xa2b9('0x2d')](_0xa2b9('0x3b'));return _0x35fec1(_0xa3b6ef[_0xa2b9('0x2d')](0x1f4,_0xa2b9('0x3b')));});},'RejectMessage':function(_0x328499){var _0x1aec72=this;return new Promise(function(_0x5a1310,_0xc3e8c7){if(_0x328499['agent']&&_0x328499[_0xa2b9('0x34')]['id']){try{if(_0x33d743['agents'][_0x328499['agent']['id']]){_0x33d743[_0xa2b9('0x35')][_0x328499[_0xa2b9('0x34')]['id']]['busy']=![];_0x33d743[_0xa2b9('0x35')][_0x328499[_0xa2b9('0x34')]['id']][_0xa2b9('0x36')]=undefined;}return _0x5a1310({'code':0xc8,'message':_0x328499});}catch(_0x3ecbc2){logger[_0xa2b9('0x2d')](_0x3ecbc2[_0xa2b9('0x3c')]);return _0xc3e8c7(_0x1aec72[_0xa2b9('0x2d')](0x1f4,_0x3ecbc2));}}logger[_0xa2b9('0x2d')](_0xa2b9('0x3b'));return _0xc3e8c7(_0x1aec72[_0xa2b9('0x2d')](0x1f4,_0xa2b9('0x3b')));});},'AbandonInteraction':function(_0x331787){var _0x25afb1=this;return new Promise(function(_0x2b8259,_0x467c23){if(_0x331787[_0xa2b9('0x37')]&&_0x331787[_0xa2b9('0x14')]&&_0x331787[_0xa2b9('0x14')]['id']){try{var _0x1fab7d=getId(_0x331787['channel'],_0x331787[_0xa2b9('0x13')]?_0x331787[_0xa2b9('0x13')]['id']:0x0,_0x331787[_0xa2b9('0x14')]?_0x331787[_0xa2b9('0x14')]['id']:0x0);if(_0x33d743['rules'][_0x1fab7d]){_0x33d743[_0xa2b9('0x12')][_0x1fab7d][_0xa2b9('0x32')](_0xa2b9('0x3d'));}return _0x2b8259({'code':0xc8,'message':_0x331787});}catch(_0x4e6de4){logger[_0xa2b9('0x2d')](_0x4e6de4['stack']);return _0x467c23(_0x25afb1[_0xa2b9('0x2d')](0x1f4,_0x4e6de4));}}logger[_0xa2b9('0x2d')](_0xa2b9('0x3b'));return _0x467c23(_0x25afb1[_0xa2b9('0x2d')](0x1f4,_0xa2b9('0x3b')));});},'AgentCapacity':function(_0x5ba4d7){var _0x41085c=this;return new Promise(function(_0x5baa6a,_0x57dca1){if(_0x33d743['agents'][_0xa2b9('0x3e')](_0x5ba4d7['id'])){for(var _0xeb7b59 in _0x5ba4d7['capacity']){if(_0x5ba4d7[_0xa2b9('0x3f')][_0xa2b9('0x3e')](_0xeb7b59)){if(_0x33d743['agents'][_0x5ba4d7['id']][_0xa2b9('0x3e')](_0xeb7b59+_0xa2b9('0x40'))){_0x33d743[_0xa2b9('0x35')][_0x5ba4d7['id']][_0xeb7b59+'CurrentCapacity']=parseInt(_0x5ba4d7[_0xa2b9('0x3f')][_0xeb7b59],0xa);}}}_0x33d743['agents'][_0x5ba4d7['id']][_0xa2b9('0x41')]();return _0x5baa6a({'code':0xc8,'message':_0x33d743['agents'][_0x5ba4d7['id']]});}else{return _0x57dca1(_0x41085c[_0xa2b9('0x2d')](0x1f4,_0xa2b9('0x42')));}});},'Agents':function(_0x122f1c){return new Promise(function(_0x309f47,_0x3c6f1c){var _0x240e28=_[_0xa2b9('0x43')](_0x33d743[_0xa2b9('0x35')]);_0x309f47({'count':_0x240e28[_0xa2b9('0x17')],'rows':_0x240e28});});},'ChatQueues':function(_0x11135f){return new Promise(function(_0x3fb7e0,_0x374362){var _0x3a286d=[];for(var _0x30136b in _0x33d743[_0xa2b9('0x44')]){if(_0x33d743[_0xa2b9('0x44')][_0xa2b9('0x3e')](_0x30136b)){var _0x5e4ca1=_0x33d743['chatQueues'][_0x30136b];var _0x5e89da={'id':_0x5e4ca1['id'],'available':_0x5e4ca1['available'],'loggedIn':_0x5e4ca1[_0xa2b9('0x45')],'name':_0x5e4ca1['name'],'paused':_0x5e4ca1[_0xa2b9('0x46')],'waiting':_0x5e4ca1[_0xa2b9('0x47')]};_0x3a286d[_0xa2b9('0x20')](_0x5e89da);}}_0x3fb7e0({'count':_0x3a286d[_0xa2b9('0x17')],'rows':_0x3a286d});});},'MailQueues':function(_0x297883){return new Promise(function(_0x129a6f,_0x4e4ac6){var _0x4b9145=[];for(var _0x3d61bd in _0x33d743['mailQueues']){if(_0x33d743[_0xa2b9('0x48')][_0xa2b9('0x3e')](_0x3d61bd)){var _0x45ef64=_0x33d743[_0xa2b9('0x48')][_0x3d61bd];var _0x523216={'id':_0x45ef64['id'],'available':_0x45ef64[_0xa2b9('0x49')],'loggedIn':_0x45ef64[_0xa2b9('0x45')],'name':_0x45ef64[_0xa2b9('0x4a')],'paused':_0x45ef64[_0xa2b9('0x46')],'waiting':_0x45ef64[_0xa2b9('0x47')]};_0x4b9145['push'](_0x523216);}}_0x129a6f({'count':_0x4b9145['length'],'rows':_0x4b9145});});},'OpenchannelQueues':function(_0x570879){return new Promise(function(_0x18954f,_0x352f23){var _0x5a662d=[];for(var _0x213b13 in _0x33d743[_0xa2b9('0x4b')]){if(_0x33d743[_0xa2b9('0x4b')][_0xa2b9('0x3e')](_0x213b13)){var _0x483d8b=_0x33d743[_0xa2b9('0x4b')][_0x213b13];var _0x38b868={'id':_0x483d8b['id'],'available':_0x483d8b[_0xa2b9('0x49')],'loggedIn':_0x483d8b[_0xa2b9('0x45')],'name':_0x483d8b[_0xa2b9('0x4a')],'paused':_0x483d8b[_0xa2b9('0x46')],'waiting':_0x483d8b[_0xa2b9('0x47')]};_0x5a662d['push'](_0x38b868);}}_0x18954f({'count':_0x5a662d[_0xa2b9('0x17')],'rows':_0x5a662d});});},'SmsQueues':function(_0x2b90fb){return new Promise(function(_0x3cc4bc,_0x3aa821){var _0x34384d=[];for(var _0x31962b in _0x33d743[_0xa2b9('0x4c')]){if(_0x33d743[_0xa2b9('0x4c')][_0xa2b9('0x3e')](_0x31962b)){var _0x359383=_0x33d743[_0xa2b9('0x4c')][_0x31962b];var _0x323c14={'id':_0x359383['id'],'available':_0x359383[_0xa2b9('0x49')],'loggedIn':_0x359383[_0xa2b9('0x45')],'name':_0x359383['name'],'paused':_0x359383['paused'],'waiting':_0x359383[_0xa2b9('0x47')]};_0x34384d['push'](_0x323c14);}}_0x3cc4bc({'count':_0x34384d[_0xa2b9('0x17')],'rows':_0x34384d});});},'FaxQueues':function(_0x2e713b){return new Promise(function(_0x47bde4,_0x3abad2){var _0x458559=[];for(var _0x221a1c in _0x33d743[_0xa2b9('0x4d')]){if(_0x33d743['faxQueues']['hasOwnProperty'](_0x221a1c)){var _0x32370e=_0x33d743[_0xa2b9('0x4d')][_0x221a1c];var _0x2fb5f7={'id':_0x32370e['id'],'available':_0x32370e['available'],'loggedIn':_0x32370e['loggedIn'],'name':_0x32370e[_0xa2b9('0x4a')],'paused':_0x32370e[_0xa2b9('0x46')],'waiting':_0x32370e[_0xa2b9('0x47')]};_0x458559['push'](_0x2fb5f7);}}_0x47bde4({'count':_0x458559['length'],'rows':_0x458559});});},'WhatsappQueues':function(_0x4871e1){return new Promise(function(_0x49d6fb,_0x345411){var _0x377655=[];for(var _0x4f58b9 in _0x33d743[_0xa2b9('0x4e')]){if(_0x33d743['whatsappQueues'][_0xa2b9('0x3e')](_0x4f58b9)){var _0x13903c=_0x33d743[_0xa2b9('0x4e')][_0x4f58b9];var _0x44bde8={'id':_0x13903c['id'],'available':_0x13903c[_0xa2b9('0x49')],'loggedIn':_0x13903c[_0xa2b9('0x45')],'name':_0x13903c[_0xa2b9('0x4a')],'paused':_0x13903c[_0xa2b9('0x46')],'waiting':_0x13903c[_0xa2b9('0x47')]};_0x377655[_0xa2b9('0x20')](_0x44bde8);}}_0x49d6fb({'count':_0x377655[_0xa2b9('0x17')],'rows':_0x377655});});},'ChatQueuesWaitingInteractions':function(_0x421d61){return new Promise(function(_0xbbba0c,_0x437696){var _0x5b8deb=_['values'](_0x33d743[_0xa2b9('0x4f')]);_0xbbba0c({'count':_0x5b8deb['length'],'rows':_0x5b8deb});});},'MailQueuesWaitingInteractions':function(_0x251d73){return new Promise(function(_0x50a0c3,_0x4cbae8){var _0xfb1113=_[_0xa2b9('0x43')](_0x33d743['mailQueuesWaitingInteractions']);_0x50a0c3({'count':_0xfb1113[_0xa2b9('0x17')],'rows':_0xfb1113});});},'OpenchannelQueuesWaitingInteractions':function(_0xa07850){return new Promise(function(_0x3a121f,_0x27303d){var _0x14e510=_[_0xa2b9('0x43')](_0x33d743[_0xa2b9('0x50')]);_0x3a121f({'count':_0x14e510[_0xa2b9('0x17')],'rows':_0x14e510});});},'SmsQueuesWaitingInteractions':function(_0x57473d){return new Promise(function(_0x51479e,_0x268d0c){var _0x3cfb83=_[_0xa2b9('0x43')](_0x33d743[_0xa2b9('0x51')]);_0x51479e({'count':_0x3cfb83[_0xa2b9('0x17')],'rows':_0x3cfb83});});},'FaxQueuesWaitingInteractions':function(_0x446f53){return new Promise(function(_0x159c67,_0x18eed2){var _0x328ce4=_[_0xa2b9('0x43')](_0x33d743[_0xa2b9('0x52')]);_0x159c67({'count':_0x328ce4['length'],'rows':_0x328ce4});});},'WhatsappQueuesWaitingInteractions':function(_0x1acc80){return new Promise(function(_0x20ce7d,_0x177f3c){var _0x4c313f=_[_0xa2b9('0x43')](_0x33d743[_0xa2b9('0x53')]);_0x20ce7d({'count':_0x4c313f[_0xa2b9('0x17')],'rows':_0x4c313f});});}};var _0x1afa68=jayson[_0xa2b9('0x54')](_0x3e141a)[_0xa2b9('0x55')]();_0x1afa68['on'](_0xa2b9('0x2d'),function(_0x54eaac){logger['error'](JSON[_0xa2b9('0x31')](_0x54eaac));return _0x5e1509(_0x54eaac);});_0x1afa68['listen'](0x232c,_0xa2b9('0x56'),function(){console[_0xa2b9('0x57')](_0xa2b9('0x58'),0x232c);return _0x4ec1ce(_0xa2b9('0x59')+0x232c);});});};
\ No newline at end of file
+var _0x0c5d=['faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','http','listen','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','jayson/promise','uuid','../../../config/environment','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/whatsappQueueReport','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','rules','message','interaction','applications','isArray','length','existsSync','join','app','.js','appdata','split','channel','push','slice','dialogflow','dialogflowv2','amazonlex','tag','TagId','format','%s:%s:%s','./interval','condition','intervals','./applications/','consequence','priority','info','\x20|\x20','Please\x20create\x20a\x20new\x20file\x20under','execute','Applications\x20executed','stringify','matchPath','emit','No\x20applications\x20to\x20execute','error','stack','agent','agents','busy','busyQueue','end','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','agent\x20not\x20found','values','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues'];(function(_0xad3841,_0x5b60ba){var _0x5366bc=function(_0x236ba6){while(--_0x236ba6){_0xad3841['push'](_0xad3841['shift']());}};_0x5366bc(++_0x5b60ba);}(_0x0c5d,0x6c));var _0xd0c5=function(_0x2418b5,_0x4e599b){_0x2418b5=_0x2418b5-0x0;var _0x45a3d0=_0x0c5d[_0x2418b5];return _0x45a3d0;};'use strict';var _=require(_0xd0c5('0x0'));var util=require(_0xd0c5('0x1'));var path=require('path');var fs=require('fs');var jayson=require(_0xd0c5('0x2'));var BPromise=require('bluebird');var uuid=require(_0xd0c5('0x3'));var config=require(_0xd0c5('0x4'));var logger=require(_0xd0c5('0x5'))(_0xd0c5('0x6'));var rpc={'openchannelQueueReport':require(_0xd0c5('0x7')),'mailQueueReport':require(_0xd0c5('0x8')),'chatQueueReport':require(_0xd0c5('0x9')),'smsQueueReport':require(_0xd0c5('0xa')),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require(_0xd0c5('0xb'))};var RuleEngine=require('../lib/rule-engine');function getId(_0x47f0f4,_0x365e04,_0x4be307){return util['format'](_0xd0c5('0xc'),_0x47f0f4,_0x365e04||0x0,_0x4be307||0x0);}function getIntervals(_0x227cb7,_0x50ed33){var _0x33a77b=[];if(!_[_0xd0c5('0xd')](_0x50ed33['IntervalId'])&&!_[_0xd0c5('0xd')](_0x227cb7[_0x50ed33[_0xd0c5('0xe')]])&&!_[_0xd0c5('0xd')](_0x227cb7[_0x50ed33[_0xd0c5('0xe')]][_0xd0c5('0xf')])){_0x33a77b=_[_0xd0c5('0x10')](_0x227cb7[_0x50ed33[_0xd0c5('0xe')]][_0xd0c5('0xf')],_0xd0c5('0x11'));}else if(!_[_0xd0c5('0xd')](_0x50ed33[_0xd0c5('0x11')])){_0x33a77b=[_0x50ed33[_0xd0c5('0x11')]];}return _0x33a77b;}exports['listen']=function(_0x11511d){_0x11511d[_0xd0c5('0x12')]={};return new BPromise(function(_0x1fc98d,_0x408e02){var _0x553c38={'Start':function(_0x280e22){var _0x23d941=this;return new Promise(function(_0x242615,_0x639e72){if(_0x280e22){try{var _0x556487=[];var _0x2be13d=getId(_0x280e22['channel'],_0x280e22[_0xd0c5('0x13')]?_0x280e22['message']['id']:0x0,_0x280e22[_0xd0c5('0x14')]?_0x280e22[_0xd0c5('0x14')]['id']:0x0);if(_0x280e22[_0xd0c5('0x15')]&&_[_0xd0c5('0x16')](_0x280e22[_0xd0c5('0x15')])&&_0x280e22[_0xd0c5('0x15')][_0xd0c5('0x17')]){for(var _0x287961=0x0;_0x287961<_0x280e22['applications'][_0xd0c5('0x17')];_0x287961+=0x1){var _0x2cd03c=_0x280e22['applications'][_0x287961];if(fs[_0xd0c5('0x18')](path[_0xd0c5('0x19')](__dirname,_0xd0c5('0x15'),_0x2cd03c[_0xd0c5('0x1a')]+_0xd0c5('0x1b')))){var _0x3f0b74=[];switch(_0x2cd03c[_0xd0c5('0x1a')]['toLowerCase']()){case'autoreply':var _0x25fd73=_0x2cd03c[_0xd0c5('0x1c')][_0xd0c5('0x1d')](',');if(_0x280e22[_0xd0c5('0x1e')]==='mail'){_0x3f0b74[_0xd0c5('0x1f')](_0x25fd73[0x0]);_0x3f0b74['push'](_0x25fd73[0x1]);_0x3f0b74['push'](_0x25fd73[_0xd0c5('0x20')](0x2,_0x25fd73[_0xd0c5('0x17')])[_0xd0c5('0x19')](','));}else{_0x3f0b74[_0xd0c5('0x1f')](_0x25fd73[0x0]);_0x3f0b74[_0xd0c5('0x1f')](_0x25fd73[_0xd0c5('0x20')](0x1,_0x25fd73[_0xd0c5('0x17')])[_0xd0c5('0x19')](','));}break;case _0xd0c5('0x21'):var _0x198e39=_0x2cd03c[_0xd0c5('0x1c')][_0xd0c5('0x1d')](',');_0x3f0b74[_0xd0c5('0x1f')](_0x198e39[0x0]);_0x3f0b74[_0xd0c5('0x1f')](_0x198e39[0x1]);_0x3f0b74[_0xd0c5('0x1f')](_0x198e39[_0xd0c5('0x20')](0x2,_0x198e39[_0xd0c5('0x17')])['join'](','));break;case _0xd0c5('0x22'):var _0x36415f=_0x2cd03c[_0xd0c5('0x1c')][_0xd0c5('0x1d')](',');_0x3f0b74[_0xd0c5('0x1f')](_0x36415f[0x0]);_0x3f0b74[_0xd0c5('0x1f')](_0x36415f[0x1]);_0x3f0b74[_0xd0c5('0x1f')](_0x36415f[0x2]);_0x3f0b74['push'](_0x36415f[0x3]);_0x3f0b74[_0xd0c5('0x1f')](_0x36415f['slice'](0x4,_0x36415f[_0xd0c5('0x17')])[_0xd0c5('0x19')](','));break;case _0xd0c5('0x23'):var _0x3799c7=_0x2cd03c[_0xd0c5('0x1c')][_0xd0c5('0x1d')](',');_0x3f0b74[_0xd0c5('0x1f')](_0x3799c7[0x0]);_0x3f0b74['push'](_0x3799c7[0x1]);_0x3f0b74['push'](_0x3799c7[0x2]);_0x3f0b74[_0xd0c5('0x1f')](_0x3799c7[0x3]);_0x3f0b74['push'](_0x3799c7[_0xd0c5('0x20')](0x4,_0x3799c7[_0xd0c5('0x17')])[_0xd0c5('0x19')](','));break;case _0xd0c5('0x13'):_0x3f0b74['push'](_0x2cd03c[_0xd0c5('0x1c')]);break;case _0xd0c5('0x24'):_0x3f0b74['push'](_0x2cd03c[_0xd0c5('0x25')]);_0x3f0b74['push'](_0x2cd03c[_0xd0c5('0x1c')]);break;default:_0x3f0b74=_[_0xd0c5('0xd')](_0x2cd03c[_0xd0c5('0x1c')])?[]:_0x2cd03c['appdata'][_0xd0c5('0x1d')](',');}var _0x263d3b={'id':util[_0xd0c5('0x26')](_0xd0c5('0x27'),_0x2be13d,_0x2cd03c['id'],_0x2cd03c[_0xd0c5('0x1a')]),'condition':require(_0xd0c5('0x28'))[_0xd0c5('0x29')](_0x2be13d,getIntervals(_0x11511d[_0xd0c5('0x2a')],_0x2cd03c),_0x11511d),'consequence':require(_0xd0c5('0x2b')+_0x2cd03c[_0xd0c5('0x1a')])[_0xd0c5('0x2c')](_0x2be13d,_0x3f0b74,_0x11511d,_0x280e22),'p':_0x2cd03c[_0xd0c5('0x2d')]||0x0};logger[_0xd0c5('0x2e')]('Push\x20new\x20rule',_0x263d3b['id'],'on\x20interval',getIntervals(_0x11511d[_0xd0c5('0x2a')],_0x2cd03c)['join'](_0xd0c5('0x2f')));_0x556487[_0xd0c5('0x1f')](_0x263d3b);}else{logger['error'](_0xd0c5('0x30'),path[_0xd0c5('0x19')](__dirname,'applications',_0x2cd03c[_0xd0c5('0x1a')]+_0xd0c5('0x1b')));}}_0x11511d[_0xd0c5('0x12')][_0x2be13d]=new RuleEngine(_0x556487);_0x11511d[_0xd0c5('0x12')][_0x2be13d][_0xd0c5('0x31')](_0x280e22,function(_0x9e4a1c){logger[_0xd0c5('0x2e')](_0xd0c5('0x32'),JSON[_0xd0c5('0x33')](_0x9e4a1c[_0xd0c5('0x34')]));if(_0x11511d[_0xd0c5('0x12')][_0x2be13d]){_0x11511d[_0xd0c5('0x12')][_0x2be13d][_0xd0c5('0x35')]('complete');}});return _0x242615({'code':0xc8,'message':_0x280e22});}else{logger[_0xd0c5('0x2e')](_0xd0c5('0x36'));return _0x242615({'code':0xc8,'message':_0x280e22});}}catch(_0x215048){logger[_0xd0c5('0x37')](_0x215048[_0xd0c5('0x38')]);return _0x639e72(_0x23d941['error'](0x1f4,_0x215048));}}return _0x639e72('routing\x20is\x20empty');});},'AcceptMessage':function(_0x13db1a){var _0x2c51c1=this;return new Promise(function(_0xfdffaa,_0x35d9c3){if(_0x13db1a['agent']&&_0x13db1a[_0xd0c5('0x39')]['id']){if(_0x11511d[_0xd0c5('0x3a')][_0x13db1a[_0xd0c5('0x39')]['id']]){_0x11511d[_0xd0c5('0x3a')][_0x13db1a[_0xd0c5('0x39')]['id']][_0xd0c5('0x3b')]=![];_0x11511d[_0xd0c5('0x3a')][_0x13db1a['agent']['id']][_0xd0c5('0x3c')]=undefined;}}if(_0x13db1a[_0xd0c5('0x13')]&&_0x13db1a['message']['id']){try{var _0x26dd8a=getId(_0x13db1a[_0xd0c5('0x1e')],_0x13db1a[_0xd0c5('0x13')]?_0x13db1a['message']['id']:0x0,_0x13db1a['interaction']?_0x13db1a['interaction']['id']:0x0);if(_0x11511d['rules'][_0x26dd8a]){_0x11511d[_0xd0c5('0x12')][_0x26dd8a]['emit'](_0xd0c5('0x3d'));if(rpc[_0x13db1a['channel']+_0xd0c5('0x3e')]){rpc[_0x13db1a['channel']+_0xd0c5('0x3e')][_0xd0c5('0x3f')](_0x26dd8a,{'UserId':_0x13db1a[_0xd0c5('0x13')][_0xd0c5('0x40')]})[_0xd0c5('0x41')](function(_0x560d35){logger[_0xd0c5('0x37')](_0xd0c5('0x42'));});}}return _0xfdffaa({'code':0xc8,'message':_0x13db1a});}catch(_0xb240b6){logger[_0xd0c5('0x37')](_0xb240b6[_0xd0c5('0x38')]);return _0x35d9c3(_0x2c51c1[_0xd0c5('0x37')](0x1f4,_0xb240b6));}}logger['error'](_0xd0c5('0x43'));return _0x35d9c3(_0x2c51c1[_0xd0c5('0x37')](0x1f4,_0xd0c5('0x43')));});},'RejectMessage':function(_0x38324c){var _0x5b935c=this;return new Promise(function(_0x3616b6,_0x1b1b26){if(_0x38324c[_0xd0c5('0x39')]&&_0x38324c[_0xd0c5('0x39')]['id']){try{if(_0x11511d[_0xd0c5('0x3a')][_0x38324c[_0xd0c5('0x39')]['id']]){_0x11511d[_0xd0c5('0x3a')][_0x38324c[_0xd0c5('0x39')]['id']][_0xd0c5('0x3b')]=![];_0x11511d[_0xd0c5('0x3a')][_0x38324c[_0xd0c5('0x39')]['id']][_0xd0c5('0x3c')]=undefined;}return _0x3616b6({'code':0xc8,'message':_0x38324c});}catch(_0x592ff6){logger['error'](_0x592ff6[_0xd0c5('0x38')]);return _0x1b1b26(_0x5b935c[_0xd0c5('0x37')](0x1f4,_0x592ff6));}}logger[_0xd0c5('0x37')](_0xd0c5('0x43'));return _0x1b1b26(_0x5b935c[_0xd0c5('0x37')](0x1f4,_0xd0c5('0x43')));});},'AbandonInteraction':function(_0x5bf9bb){var _0x208334=this;return new Promise(function(_0x2c2485,_0x1f7d24){if(_0x5bf9bb[_0xd0c5('0x1e')]&&_0x5bf9bb[_0xd0c5('0x14')]&&_0x5bf9bb[_0xd0c5('0x14')]['id']){try{var _0x3441eb=getId(_0x5bf9bb[_0xd0c5('0x1e')],_0x5bf9bb[_0xd0c5('0x13')]?_0x5bf9bb[_0xd0c5('0x13')]['id']:0x0,_0x5bf9bb[_0xd0c5('0x14')]?_0x5bf9bb[_0xd0c5('0x14')]['id']:0x0);if(_0x11511d[_0xd0c5('0x12')][_0x3441eb]){_0x11511d['rules'][_0x3441eb][_0xd0c5('0x35')](_0xd0c5('0x3d'));}return _0x2c2485({'code':0xc8,'message':_0x5bf9bb});}catch(_0x5b929e){logger[_0xd0c5('0x37')](_0x5b929e['stack']);return _0x1f7d24(_0x208334['error'](0x1f4,_0x5b929e));}}logger[_0xd0c5('0x37')](_0xd0c5('0x43'));return _0x1f7d24(_0x208334[_0xd0c5('0x37')](0x1f4,_0xd0c5('0x43')));});},'AgentCapacity':function(_0x4243ad){var _0x10e938=this;return new Promise(function(_0x23fcd6,_0x1924a4){if(_0x11511d[_0xd0c5('0x3a')][_0xd0c5('0x44')](_0x4243ad['id'])){for(var _0x1b25e0 in _0x4243ad[_0xd0c5('0x45')]){if(_0x4243ad[_0xd0c5('0x45')][_0xd0c5('0x44')](_0x1b25e0)){if(_0x11511d[_0xd0c5('0x3a')][_0x4243ad['id']][_0xd0c5('0x44')](_0x1b25e0+_0xd0c5('0x46'))){_0x11511d['agents'][_0x4243ad['id']][_0x1b25e0+'CurrentCapacity']=parseInt(_0x4243ad[_0xd0c5('0x45')][_0x1b25e0],0xa);}}}_0x11511d[_0xd0c5('0x3a')][_0x4243ad['id']]['updateRealtime']();return _0x23fcd6({'code':0xc8,'message':_0x11511d['agents'][_0x4243ad['id']]});}else{return _0x1924a4(_0x10e938[_0xd0c5('0x37')](0x1f4,_0xd0c5('0x47')));}});},'Agents':function(_0x3a5bf9){return new Promise(function(_0x164646,_0x268fb0){var _0x2890b7=_[_0xd0c5('0x48')](_0x11511d[_0xd0c5('0x3a')]);_0x164646({'count':_0x2890b7[_0xd0c5('0x17')],'rows':_0x2890b7});});},'ChatQueues':function(_0x54b571){return new Promise(function(_0x20b422,_0x2141c1){var _0x4ec681=[];for(var _0x1330a5 in _0x11511d['chatQueues']){if(_0x11511d[_0xd0c5('0x49')]['hasOwnProperty'](_0x1330a5)){var _0x2e8b0d=_0x11511d['chatQueues'][_0x1330a5];var _0x261e81={'id':_0x2e8b0d['id'],'available':_0x2e8b0d[_0xd0c5('0x4a')],'loggedIn':_0x2e8b0d[_0xd0c5('0x4b')],'name':_0x2e8b0d[_0xd0c5('0x4c')],'paused':_0x2e8b0d[_0xd0c5('0x4d')],'waiting':_0x2e8b0d[_0xd0c5('0x4e')]};_0x4ec681[_0xd0c5('0x1f')](_0x261e81);}}_0x20b422({'count':_0x4ec681[_0xd0c5('0x17')],'rows':_0x4ec681});});},'MailQueues':function(_0x6b4081){return new Promise(function(_0x3b7ac2,_0x1eb9d1){var _0x3c7e4b=[];for(var _0x5599cf in _0x11511d[_0xd0c5('0x4f')]){if(_0x11511d['mailQueues'][_0xd0c5('0x44')](_0x5599cf)){var _0x37e731=_0x11511d['mailQueues'][_0x5599cf];var _0x35287f={'id':_0x37e731['id'],'available':_0x37e731[_0xd0c5('0x4a')],'loggedIn':_0x37e731[_0xd0c5('0x4b')],'name':_0x37e731[_0xd0c5('0x4c')],'paused':_0x37e731[_0xd0c5('0x4d')],'waiting':_0x37e731[_0xd0c5('0x4e')]};_0x3c7e4b['push'](_0x35287f);}}_0x3b7ac2({'count':_0x3c7e4b[_0xd0c5('0x17')],'rows':_0x3c7e4b});});},'OpenchannelQueues':function(_0x269a24){return new Promise(function(_0x12f8ad,_0x22815a){var _0x5c170d=[];for(var _0x3440db in _0x11511d[_0xd0c5('0x50')]){if(_0x11511d[_0xd0c5('0x50')][_0xd0c5('0x44')](_0x3440db)){var _0x19b799=_0x11511d[_0xd0c5('0x50')][_0x3440db];var _0x2b5558={'id':_0x19b799['id'],'available':_0x19b799[_0xd0c5('0x4a')],'loggedIn':_0x19b799[_0xd0c5('0x4b')],'name':_0x19b799[_0xd0c5('0x4c')],'paused':_0x19b799['paused'],'waiting':_0x19b799[_0xd0c5('0x4e')]};_0x5c170d[_0xd0c5('0x1f')](_0x2b5558);}}_0x12f8ad({'count':_0x5c170d[_0xd0c5('0x17')],'rows':_0x5c170d});});},'SmsQueues':function(_0x427461){return new Promise(function(_0x383e7c,_0xed6cca){var _0x4ebf38=[];for(var _0x1f002c in _0x11511d['smsQueues']){if(_0x11511d[_0xd0c5('0x51')][_0xd0c5('0x44')](_0x1f002c)){var _0x38ee47=_0x11511d[_0xd0c5('0x51')][_0x1f002c];var _0x14b90f={'id':_0x38ee47['id'],'available':_0x38ee47['available'],'loggedIn':_0x38ee47['loggedIn'],'name':_0x38ee47[_0xd0c5('0x4c')],'paused':_0x38ee47[_0xd0c5('0x4d')],'waiting':_0x38ee47[_0xd0c5('0x4e')]};_0x4ebf38[_0xd0c5('0x1f')](_0x14b90f);}}_0x383e7c({'count':_0x4ebf38[_0xd0c5('0x17')],'rows':_0x4ebf38});});},'FaxQueues':function(_0x313a4c){return new Promise(function(_0x7d38d7,_0x381362){var _0x3d4f41=[];for(var _0x7dd009 in _0x11511d[_0xd0c5('0x52')]){if(_0x11511d[_0xd0c5('0x52')][_0xd0c5('0x44')](_0x7dd009)){var _0x1543fe=_0x11511d[_0xd0c5('0x52')][_0x7dd009];var _0x18ecc4={'id':_0x1543fe['id'],'available':_0x1543fe[_0xd0c5('0x4a')],'loggedIn':_0x1543fe['loggedIn'],'name':_0x1543fe[_0xd0c5('0x4c')],'paused':_0x1543fe['paused'],'waiting':_0x1543fe[_0xd0c5('0x4e')]};_0x3d4f41[_0xd0c5('0x1f')](_0x18ecc4);}}_0x7d38d7({'count':_0x3d4f41['length'],'rows':_0x3d4f41});});},'WhatsappQueues':function(_0x24f21b){return new Promise(function(_0x3d4785,_0xaabd2f){var _0x3a52d2=[];for(var _0x3af153 in _0x11511d[_0xd0c5('0x53')]){if(_0x11511d[_0xd0c5('0x53')][_0xd0c5('0x44')](_0x3af153)){var _0x33314e=_0x11511d['whatsappQueues'][_0x3af153];var _0x51a1e2={'id':_0x33314e['id'],'available':_0x33314e[_0xd0c5('0x4a')],'loggedIn':_0x33314e['loggedIn'],'name':_0x33314e['name'],'paused':_0x33314e[_0xd0c5('0x4d')],'waiting':_0x33314e[_0xd0c5('0x4e')]};_0x3a52d2[_0xd0c5('0x1f')](_0x51a1e2);}}_0x3d4785({'count':_0x3a52d2[_0xd0c5('0x17')],'rows':_0x3a52d2});});},'ChatQueuesWaitingInteractions':function(_0x3b64ae){return new Promise(function(_0x51910f,_0x5873e4){var _0x25c918=_[_0xd0c5('0x48')](_0x11511d[_0xd0c5('0x54')]);_0x51910f({'count':_0x25c918[_0xd0c5('0x17')],'rows':_0x25c918});});},'MailQueuesWaitingInteractions':function(_0x1eeb74){return new Promise(function(_0x3eecb6,_0x3cd5ff){var _0x4e1fa9=_[_0xd0c5('0x48')](_0x11511d[_0xd0c5('0x55')]);_0x3eecb6({'count':_0x4e1fa9[_0xd0c5('0x17')],'rows':_0x4e1fa9});});},'OpenchannelQueuesWaitingInteractions':function(_0x34107b){return new Promise(function(_0x554ddf,_0x403987){var _0x5cf467=_[_0xd0c5('0x48')](_0x11511d[_0xd0c5('0x56')]);_0x554ddf({'count':_0x5cf467[_0xd0c5('0x17')],'rows':_0x5cf467});});},'SmsQueuesWaitingInteractions':function(_0x3595f3){return new Promise(function(_0x235818,_0x4c997f){var _0x2529b0=_[_0xd0c5('0x48')](_0x11511d[_0xd0c5('0x57')]);_0x235818({'count':_0x2529b0[_0xd0c5('0x17')],'rows':_0x2529b0});});},'FaxQueuesWaitingInteractions':function(_0x1d0db1){return new Promise(function(_0x141104,_0x5ab587){var _0x3fe4f5=_['values'](_0x11511d[_0xd0c5('0x58')]);_0x141104({'count':_0x3fe4f5[_0xd0c5('0x17')],'rows':_0x3fe4f5});});},'WhatsappQueuesWaitingInteractions':function(_0x464989){return new Promise(function(_0x97b101,_0x1ed824){var _0x37c6b8=_[_0xd0c5('0x48')](_0x11511d[_0xd0c5('0x59')]);_0x97b101({'count':_0x37c6b8['length'],'rows':_0x37c6b8});});}};var _0x3aaa55=jayson['server'](_0x553c38)[_0xd0c5('0x5a')]();_0x3aaa55['on'](_0xd0c5('0x37'),function(_0x351ba1){logger[_0xd0c5('0x37')](JSON[_0xd0c5('0x33')](_0x351ba1));return _0x408e02(_0x351ba1);});_0x3aaa55[_0xd0c5('0x5b')](0x232c,_0xd0c5('0x5c'),function(){console[_0xd0c5('0x5d')](_0xd0c5('0x5e'),0x232c);return _0x1fc98d('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
index 2570376..64c5de1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6c2=['indexOf','true','[%s][INTERVAL]\x20%s','all','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','when','log','stack','util','bluebird','jayson/promise','../../../config/logger','routing','client','http','request','then','error','result','catch','condition','rules','info','stop','push','Command','format','iftime\x20%s','message'];(function(_0x9fde74,_0x3bf177){var _0x1dc9d4=function(_0x4381ac){while(--_0x4381ac){_0x9fde74['push'](_0x9fde74['shift']());}};_0x1dc9d4(++_0x3bf177);}(_0xc6c2,0xc4));var _0x2c6c=function(_0x28aea5,_0x3bb12e){_0x28aea5=_0x28aea5-0x0;var _0x6a55f9=_0xc6c2[_0x28aea5];return _0x6a55f9;};'use strict';var util=require(_0x2c6c('0x0'));var BPromise=require(_0x2c6c('0x1'));var jayson=require(_0x2c6c('0x2'));var _=require('lodash');var logger=require(_0x2c6c('0x3'))(_0x2c6c('0x4'));var client=jayson[_0x2c6c('0x5')][_0x2c6c('0x6')]({'port':0x232a});function request(_0x559e57,_0x1d3670){return new BPromise(function(_0xd097c2,_0x11fff7){return client[_0x2c6c('0x7')](_0x559e57,_0x1d3670)[_0x2c6c('0x8')](function(_0x51dfd5){if(_0x51dfd5[_0x2c6c('0x9')]){return _0x11fff7(_0x51dfd5[_0x2c6c('0x9')]['message']);}else{return _0xd097c2(_0x51dfd5[_0x2c6c('0xa')]);}})[_0x2c6c('0xb')](function(_0x296013){return _0x11fff7(_0x296013);});});}exports[_0x2c6c('0xc')]=function(_0x31213c,_0x3d1ffe,_0x1fada1){return function(_0x4f3afe){if(_0x1fada1[_0x2c6c('0xd')]&&!_0x1fada1[_0x2c6c('0xd')][_0x31213c]){logger[_0x2c6c('0xe')]('[%s][INTERVAL]\x20ROUTING\x20STOPPED',_0x31213c);return _0x4f3afe[_0x2c6c('0xf')]();}var _0x13a483=[];for(var _0xb849a1=0x0;_0xb849a1<_0x3d1ffe['length'];_0xb849a1+=0x1){_0x13a483[_0x2c6c('0x10')](request(_0x2c6c('0x11'),{'command':util[_0x2c6c('0x12')](_0x2c6c('0x13'),_0x3d1ffe[_0xb849a1])})['then'](function(_0x42fbfa){return _0x42fbfa&&_0x42fbfa[_0x2c6c('0x14')]&&_0x42fbfa['message'][_0x2c6c('0x15')](_0x2c6c('0x16'))>=0x0?!![]:![];})[_0x2c6c('0xb')](function(_0x27f56a){logger[_0x2c6c('0x9')](_0x2c6c('0x17'),_0x31213c,_0x3d1ffe[_0xb849a1]);}));}BPromise[_0x2c6c('0x18')](_0x13a483)[_0x2c6c('0x8')](function(_0x181bb0){var _0x14d969=_['some'](_0x181bb0);logger[_0x2c6c('0xe')](_0x2c6c('0x19'),_0x31213c,_0x3d1ffe[_0x2c6c('0x1a')](_0x2c6c('0x1b')),_0x14d969);_0x4f3afe[_0x2c6c('0x1c')](_0x14d969);})['catch'](function(_0x2b3753){console[_0x2c6c('0x1d')](_0x2b3753);logger['error'](_0x2c6c('0x19'),_0x31213c,_0x3d1ffe[_0x2c6c('0x1a')](_0x2c6c('0x1b')),_0x2b3753[_0x2c6c('0x1e')]);_0x4f3afe[_0x2c6c('0xf')]();});};};
\ No newline at end of file
+var _0xb9a7=['some','[%s][INTERVAL]\x20%s\x20%s','\x20|\x20','when','log','join','stack','stop','bluebird','jayson/promise','lodash','../../../config/logger','client','http','request','then','error','message','catch','condition','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','Command','format','indexOf','true','[%s][INTERVAL]\x20%s','all'];(function(_0x25a54d,_0x2d84e8){var _0x36b530=function(_0x1dea9d){while(--_0x1dea9d){_0x25a54d['push'](_0x25a54d['shift']());}};_0x36b530(++_0x2d84e8);}(_0xb9a7,0xd3));var _0x7b9a=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0xb9a7[_0x199572];return _0x13cfa3;};'use strict';var util=require('util');var BPromise=require(_0x7b9a('0x0'));var jayson=require(_0x7b9a('0x1'));var _=require(_0x7b9a('0x2'));var logger=require(_0x7b9a('0x3'))('routing');var client=jayson[_0x7b9a('0x4')][_0x7b9a('0x5')]({'port':0x232a});function request(_0x472b8a,_0xed2655){return new BPromise(function(_0x46b9da,_0x5b759f){return client[_0x7b9a('0x6')](_0x472b8a,_0xed2655)[_0x7b9a('0x7')](function(_0x4d3dce){if(_0x4d3dce[_0x7b9a('0x8')]){return _0x5b759f(_0x4d3dce[_0x7b9a('0x8')][_0x7b9a('0x9')]);}else{return _0x46b9da(_0x4d3dce['result']);}})[_0x7b9a('0xa')](function(_0x4c40e3){return _0x5b759f(_0x4c40e3);});});}exports[_0x7b9a('0xb')]=function(_0x39b1eb,_0x4f7aec,_0x1ca636){return function(_0xd92130){if(_0x1ca636[_0x7b9a('0xc')]&&!_0x1ca636['rules'][_0x39b1eb]){logger[_0x7b9a('0xd')](_0x7b9a('0xe'),_0x39b1eb);return _0xd92130['stop']();}var _0x323097=[];for(var _0x5c5625=0x0;_0x5c5625<_0x4f7aec['length'];_0x5c5625+=0x1){_0x323097['push'](request(_0x7b9a('0xf'),{'command':util[_0x7b9a('0x10')]('iftime\x20%s',_0x4f7aec[_0x5c5625])})['then'](function(_0x5c2849){return _0x5c2849&&_0x5c2849[_0x7b9a('0x9')]&&_0x5c2849[_0x7b9a('0x9')][_0x7b9a('0x11')](_0x7b9a('0x12'))>=0x0?!![]:![];})[_0x7b9a('0xa')](function(_0x57c43d){logger[_0x7b9a('0x8')](_0x7b9a('0x13'),_0x39b1eb,_0x4f7aec[_0x5c5625]);}));}BPromise[_0x7b9a('0x14')](_0x323097)[_0x7b9a('0x7')](function(_0x1c26eb){var _0x5ca2fd=_[_0x7b9a('0x15')](_0x1c26eb);logger[_0x7b9a('0xd')](_0x7b9a('0x16'),_0x39b1eb,_0x4f7aec['join'](_0x7b9a('0x17')),_0x5ca2fd);_0xd92130[_0x7b9a('0x18')](_0x5ca2fd);})[_0x7b9a('0xa')](function(_0x53abf6){console[_0x7b9a('0x19')](_0x53abf6);logger[_0x7b9a('0x8')](_0x7b9a('0x16'),_0x39b1eb,_0x4f7aec[_0x7b9a('0x1a')](_0x7b9a('0x17')),_0x53abf6[_0x7b9a('0x1b')]);_0xd92130[_0x7b9a('0x1c')]();});};};
\ No newline at end of file
index 952d9cc..d6832a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb49a=['[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','queue','membername','interface','calleridnum','connectedlinenum','lastevent','then','type','acw','acwtime','agentacw','acwTimeout','request','CreateVoiceAgentReport','uniqueid','destuniqueid','agentcalled','debug','[%s][agents][agentcalled]','agentcalledAt','now','called','connectedlinename','info','error','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','timeout','holdtime','ringtime','push','reason','abandoned','talktime','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','forIn','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','complete','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','blind','transferexten','extension','transferuniqueid','attendedtransfer','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','transfertype','ATTENDED','transfereeuniqueid','agententerreason','clone','calleridname','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','[%s][agents][attendedtransfer]','hangup','[%s][agents][hangup]','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','agentcomplete','agent','lodash','util','./utils','format'];(function(_0x47bea1,_0x6103a6){var _0x383afd=function(_0x273f7f){while(--_0x273f7f){_0x47bea1['push'](_0x47bea1['shift']());}};_0x383afd(++_0x6103a6);}(_0xb49a,0xfb));var _0xab49=function(_0xa24985,_0x1d2c15){_0xa24985=_0xa24985-0x0;var _0x2f7c36=_0xb49a[_0xa24985];return _0x2f7c36;};'use strict';var _=require(_0xab49('0x0'));var util=require(_0xab49('0x1'));var utils=require(_0xab49('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x1d512a,_0x8db649){utils['info'](util[_0xab49('0x3')](_0xab49('0x4'),_0x1d512a['uniqueid'],_0x1d512a['channel'],_0x1d512a[_0xab49('0x5')],_0x1d512a[_0xab49('0x6')],_0x1d512a[_0xab49('0x7')],_0x1d512a[_0xab49('0x8')],_0x1d512a[_0xab49('0x9')],_0x1d512a[_0xab49('0xa')]));if(_0x1d512a[_0xab49('0x5')]){utils['getVoiceQueueByName'](_0x1d512a[_0xab49('0x5')])[_0xab49('0xb')](function(_0xf12653){if(_0xf12653){_0x1d512a[_0xab49('0xc')]=_0xf12653[_0xab49('0xc')];_0x1d512a['agentacw']=_0x1d512a['agentcomplete']?_0xf12653[_0xab49('0xd')]:![];_0x1d512a[_0xab49('0xe')]=_0x1d512a[_0xab49('0xf')]?_0xf12653[_0xab49('0x10')]:0x0;}utils[_0xab49('0x11')]('CreateVoiceAgentReport',_0x1d512a);});}else{utils[_0xab49('0x11')](_0xab49('0x12'),_0x1d512a);}if(_0x8db649){delete transfers[_0x1d512a[_0xab49('0x13')]];}else{delete agents[_0x1d512a[_0xab49('0x14')]];}}exports[_0xab49('0x15')]=function(_0x36091a){try{utils[_0xab49('0x16')](util[_0xab49('0x3')](_0xab49('0x17'),_0x36091a[_0xab49('0x13')]),_0x36091a);agents[_0x36091a[_0xab49('0x14')]]=_0x36091a;agents[_0x36091a['destuniqueid']][_0xab49('0x18')]=utils[_0xab49('0x19')]();agents[_0x36091a[_0xab49('0x14')]][_0xab49('0xa')]=_0xab49('0x1a');agents[_0x36091a['destuniqueid']][_0xab49('0x9')]=null;agents[_0x36091a[_0xab49('0x14')]][_0xab49('0x1b')]=null;utils[_0xab49('0x1c')](util[_0xab49('0x3')]('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x36091a[_0xab49('0x13')],agents[_0x36091a[_0xab49('0x14')]][_0xab49('0x6')],_0x36091a['destuniqueid']));}catch(_0x4c22cd){utils[_0xab49('0x1d')](util[_0xab49('0x3')]('[%s][agents][agentcalled]',_0x36091a[_0xab49('0x13')]),_0x4c22cd);}};exports[_0xab49('0x1e')]=function(_0x49b716){try{if(!_[_0xab49('0x1f')](agents[_0x49b716['destuniqueid']])){utils[_0xab49('0x16')](util[_0xab49('0x3')]('[%s][agents][agentringnoanswer]',_0x49b716['uniqueid']),_0x49b716);utils[_0xab49('0x1c')](util['format'](_0xab49('0x20'),_0x49b716['uniqueid'],agents[_0x49b716[_0xab49('0x14')]][_0xab49('0x6')],_0x49b716[_0xab49('0x14')]));agents[_0x49b716['destuniqueid']][_0xab49('0x1e')]=!![];agents[_0x49b716['destuniqueid']][_0xab49('0x21')]=utils[_0xab49('0x19')]();agents[_0x49b716['destuniqueid']][_0xab49('0xa')]=_0xab49('0x22');agents[_0x49b716['destuniqueid']]['reason']=_0xab49('0x22');agents[_0x49b716[_0xab49('0x14')]][_0xab49('0x23')]=_0x49b716['ringtime']?parseInt(_0x49b716[_0xab49('0x24')])/0x3e8:0x0;agents[_0x49b716[_0xab49('0x14')]]['talktime']=0x0;unanswered[_0xab49('0x25')](_0x49b716[_0xab49('0x14')]);}}catch(_0x342fdf){utils['error'](util[_0xab49('0x3')]('[%s][agents][agentringnoanswer]',_0x49b716[_0xab49('0x13')]),_0x342fdf);}};exports['queuecallerabandon']=function(_0x19f094){try{_['forIn'](agents,function(_0x134a03,_0x24bd0f){if(_0x134a03[_0xab49('0x13')]==_0x19f094[_0xab49('0x13')]&&!_['includes'](unanswered,_0x134a03[_0xab49('0x14')])){utils[_0xab49('0x16')](util[_0xab49('0x3')]('[%s][agents][queuecallerabandon]',_0x19f094[_0xab49('0x13')]),_0x19f094);utils['info'](util[_0xab49('0x3')]('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x19f094['uniqueid'],_0x134a03['membername'],_0x134a03[_0xab49('0x14')]));_0x134a03['agentringnoanswer']=!![];_0x134a03[_0xab49('0x21')]=utils[_0xab49('0x19')]();_0x134a03[_0xab49('0xa')]='abandoned';_0x134a03[_0xab49('0x26')]=_0xab49('0x27');_0x134a03[_0xab49('0x23')]=_0x19f094[_0xab49('0x23')];_0x134a03[_0xab49('0x28')]=0x0;writeDB(_0x134a03);}});}catch(_0x56b768){utils[_0xab49('0x1d')](util[_0xab49('0x3')]('[%s][agents][queuecallerabandon]',_0x19f094['uniqueid']),_0x56b768);}};exports[_0xab49('0x29')]=function(_0x29c6cf){try{if(agents[_0x29c6cf[_0xab49('0x14')]]){utils[_0xab49('0x16')](util[_0xab49('0x3')](_0xab49('0x2a'),_0x29c6cf[_0xab49('0x13')]),_0x29c6cf);utils[_0xab49('0x1c')](util[_0xab49('0x3')](_0xab49('0x2b'),_0x29c6cf[_0xab49('0x13')],agents[_0x29c6cf[_0xab49('0x14')]][_0xab49('0x6')],_0x29c6cf['destuniqueid']));agents[_0x29c6cf[_0xab49('0x14')]][_0xab49('0x2c')]=utils[_0xab49('0x19')]();agents[_0x29c6cf[_0xab49('0x14')]][_0xab49('0x9')]=_0x29c6cf['connectedlinenum'];agents[_0x29c6cf[_0xab49('0x14')]]['connectedlinename']=_0x29c6cf['connectedlinename'];agents[_0x29c6cf[_0xab49('0x14')]][_0xab49('0x23')]=_0x29c6cf[_0xab49('0x24')];agents[_0x29c6cf[_0xab49('0x14')]][_0xab49('0xa')]='connect';_[_0xab49('0x2d')](agents,function(_0x2cdcbf,_0x2016a9){if(_0x2cdcbf[_0xab49('0x14')]!=_0x29c6cf[_0xab49('0x14')]&&_0x2cdcbf['uniqueid']==_0x29c6cf['uniqueid']){_0x2cdcbf[_0xab49('0x28')]=0x0;_0x2cdcbf[_0xab49('0x23')]=_0x29c6cf[_0xab49('0x24')];_0x2cdcbf['agentringnoanswer']=!![];_0x2cdcbf[_0xab49('0x21')]=utils['now']();_0x2cdcbf['lastevent']='answered_elsewhere';_0x2cdcbf['reason']=_0xab49('0x2e');_0x2cdcbf[_0xab49('0x2f')]=_0x29c6cf[_0xab49('0x14')];_0x2cdcbf[_0xab49('0x30')]=_0x29c6cf[_0xab49('0x6')];writeDB(_0x2cdcbf);}});}}catch(_0x3f3776){utils[_0xab49('0x1d')](util[_0xab49('0x3')](_0xab49('0x2a'),_0x29c6cf[_0xab49('0x13')]),_0x3f3776);}};exports['agentcomplete']=function(_0x158042){try{if(!_[_0xab49('0x1f')](agents[_0x158042['destuniqueid']])){utils[_0xab49('0x16')](util[_0xab49('0x3')](_0xab49('0x31'),_0x158042[_0xab49('0x13')]),_0x158042);utils[_0xab49('0x1c')](util[_0xab49('0x3')](_0xab49('0x32'),_0x158042[_0xab49('0x13')],agents[_0x158042['destuniqueid']][_0xab49('0x6')],_0x158042[_0xab49('0x14')]));agents[_0x158042[_0xab49('0x14')]]['agentcomplete']=!![];agents[_0x158042[_0xab49('0x14')]][_0xab49('0x33')]=utils[_0xab49('0x19')]();agents[_0x158042[_0xab49('0x14')]][_0xab49('0x28')]=utils[_0xab49('0x34')](agents[_0x158042['destuniqueid']][_0xab49('0x33')],agents[_0x158042[_0xab49('0x14')]][_0xab49('0x2c')]);agents[_0x158042[_0xab49('0x14')]][_0xab49('0x26')]=_0x158042[_0xab49('0x26')];agents[_0x158042['destuniqueid']][_0xab49('0xa')]=_0xab49('0x35');writeDB(agents[_0x158042[_0xab49('0x14')]]);}}catch(_0xca56ce){utils[_0xab49('0x1d')](util[_0xab49('0x3')](_0xab49('0x31'),_0x158042[_0xab49('0x13')]),_0xca56ce);}};exports[_0xab49('0x36')]=function(_0xfb7d69){try{if(!_[_0xab49('0x1f')](agents[_0xfb7d69[_0xab49('0x37')]])){utils['debug'](util[_0xab49('0x3')](_0xab49('0x38'),_0xfb7d69[_0xab49('0x13')]),_0xfb7d69);utils[_0xab49('0x1c')](util[_0xab49('0x3')](_0xab49('0x39'),_0xfb7d69[_0xab49('0x13')],agents[_0xfb7d69['transfereruniqueid']][_0xab49('0x6')],agents[_0xfb7d69['transfereruniqueid']][_0xab49('0x13')]));agents[_0xfb7d69['transfereruniqueid']][_0xab49('0x3a')]=!![];agents[_0xfb7d69[_0xab49('0x37')]]['transfertype']=_0xab49('0x3b');agents[_0xfb7d69[_0xab49('0x37')]][_0xab49('0x3c')]=_0xfb7d69[_0xab49('0x3d')];agents[_0xfb7d69[_0xab49('0x37')]][_0xab49('0x3e')]=agents[_0xfb7d69[_0xab49('0x37')]][_0xab49('0x13')];}}catch(_0x37cf42){utils[_0xab49('0x1d')](util[_0xab49('0x3')](_0xab49('0x38'),_0xfb7d69[_0xab49('0x13')]),_0x37cf42);}};exports[_0xab49('0x3f')]=function(_0x235ba8){try{utils[_0xab49('0x16')](util[_0xab49('0x3')]('[%s][agents][attendedtransfer]',_0x235ba8[_0xab49('0x40')]),_0x235ba8);if(_0x235ba8[_0xab49('0x40')]==_0x235ba8[_0xab49('0x41')]){if(!_[_0xab49('0x1f')](agents[_0x235ba8[_0xab49('0x42')]])){utils['info'](util[_0xab49('0x3')](_0xab49('0x43'),_0x235ba8[_0xab49('0x40')],agents[_0x235ba8[_0xab49('0x42')]][_0xab49('0x6')]));agents[_0x235ba8[_0xab49('0x42')]]['transfer']=!![];agents[_0x235ba8[_0xab49('0x42')]][_0xab49('0x44')]=_0xab49('0x45');agents[_0x235ba8[_0xab49('0x42')]]['transferexten']=_0x235ba8['origtransfererexten'];agents[_0x235ba8[_0xab49('0x42')]]['transferuniqueid']=_0x235ba8[_0xab49('0x40')];}if(_0x235ba8[_0xab49('0x46')]&&agents[_0x235ba8[_0xab49('0x46')]]){agents[_0x235ba8[_0xab49('0x46')]][_0xab49('0x47')]=0x1;transfers[_0x235ba8[_0xab49('0x46')]]=_[_0xab49('0x48')](agents[_0x235ba8[_0xab49('0x46')]]);transfers[_0x235ba8['transfereeuniqueid']][_0xab49('0x8')]=agents[_0x235ba8[_0xab49('0x42')]][_0xab49('0x8')];transfers[_0x235ba8[_0xab49('0x46')]][_0xab49('0x49')]=agents[_0x235ba8['secondtransfereruniqueid']][_0xab49('0x49')];transfers[_0x235ba8[_0xab49('0x46')]][_0xab49('0x18')]=utils[_0xab49('0x19')]();transfers[_0x235ba8[_0xab49('0x46')]][_0xab49('0x2c')]=utils[_0xab49('0x19')]();transfers[_0x235ba8[_0xab49('0x46')]][_0xab49('0x23')]=0x0;transfers[_0x235ba8[_0xab49('0x46')]][_0xab49('0x47')]=0x2;}}else if(_0x235ba8[_0xab49('0x42')]==_0x235ba8[_0xab49('0x4a')]){if(!_['isNil'](agents[_0x235ba8[_0xab49('0x40')]])){utils[_0xab49('0x1c')](util[_0xab49('0x3')](_0xab49('0x43'),_0x235ba8[_0xab49('0x40')],agents[_0x235ba8[_0xab49('0x40')]][_0xab49('0x6')]));agents[_0x235ba8[_0xab49('0x40')]][_0xab49('0x3a')]=!![];agents[_0x235ba8[_0xab49('0x40')]]['transfertype']=_0xab49('0x45');agents[_0x235ba8[_0xab49('0x40')]]['transferexten']=_0x235ba8[_0xab49('0x4b')];agents[_0x235ba8[_0xab49('0x40')]][_0xab49('0x3e')]=_0x235ba8['secondtransfereruniqueid'];}if(_0x235ba8[_0xab49('0x4c')]&&agents[_0x235ba8[_0xab49('0x4c')]]){agents[_0x235ba8['transfertargetuniqueid']]['agententerreason']=0x1;transfers[_0x235ba8[_0xab49('0x4c')]]=_[_0xab49('0x48')](agents[_0x235ba8[_0xab49('0x4c')]]);transfers[_0x235ba8['transfertargetuniqueid']]['calleridnum']=agents[_0x235ba8[_0xab49('0x40')]][_0xab49('0x8')];transfers[_0x235ba8[_0xab49('0x4c')]][_0xab49('0x49')]=agents[_0x235ba8[_0xab49('0x40')]][_0xab49('0x49')];transfers[_0x235ba8[_0xab49('0x4c')]][_0xab49('0x18')]=utils['now']();transfers[_0x235ba8['transfertargetuniqueid']][_0xab49('0x2c')]=utils[_0xab49('0x19')]();transfers[_0x235ba8[_0xab49('0x4c')]][_0xab49('0x23')]=0x0;transfers[_0x235ba8[_0xab49('0x4c')]][_0xab49('0x47')]=0x2;}}}catch(_0x108755){utils[_0xab49('0x1d')](util[_0xab49('0x3')](_0xab49('0x4d'),_0x235ba8['origtransfereruniqueid']),_0x108755);}};exports[_0xab49('0x4e')]=function(_0x24fb84){try{utils[_0xab49('0x16')](util[_0xab49('0x3')](_0xab49('0x4f'),_0x24fb84[_0xab49('0x13')]),_0x24fb84);if(agents[_0x24fb84[_0xab49('0x13')]]&&agents[_0x24fb84[_0xab49('0x13')]]['reason']===_0xab49('0x22')){if(_0x24fb84['cause']==='21'){agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0x26')]=_0xab49('0x50');agents[_0x24fb84['uniqueid']][_0xab49('0xa')]=_0xab49('0x50');}utils['info'](util[_0xab49('0x3')](_0xab49('0x51'),_0x24fb84[_0xab49('0x13')],agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0x6')],agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0x26')],agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0xa')]));writeDB(agents[_0x24fb84[_0xab49('0x13')]]);var _0x366a3c=unanswered[_0xab49('0x52')](_0x24fb84[_0xab49('0x13')]);if(_0x366a3c>-0x1){unanswered['splice'](_0x366a3c,0x1);}}if(transfers[_0x24fb84[_0xab49('0x13')]]){transfers[_0x24fb84[_0xab49('0x13')]][_0xab49('0x53')]=!![];transfers[_0x24fb84['uniqueid']][_0xab49('0x33')]=utils[_0xab49('0x19')]();transfers[_0x24fb84['uniqueid']][_0xab49('0x28')]=utils[_0xab49('0x34')](transfers[_0x24fb84['uniqueid']][_0xab49('0x33')],transfers[_0x24fb84[_0xab49('0x13')]][_0xab49('0x2c')]);transfers[_0x24fb84[_0xab49('0x13')]][_0xab49('0x26')]=_0xab49('0x54');transfers[_0x24fb84[_0xab49('0x13')]][_0xab49('0xa')]='complete';utils['info'](util[_0xab49('0x3')](_0xab49('0x51'),_0x24fb84[_0xab49('0x13')],transfers[_0x24fb84[_0xab49('0x13')]][_0xab49('0x6')],transfers[_0x24fb84[_0xab49('0x13')]][_0xab49('0x26')],transfers[_0x24fb84[_0xab49('0x13')]]['lastevent']));writeDB(transfers[_0x24fb84[_0xab49('0x13')]],!![]);}if(agents[_0x24fb84['uniqueid']]&&agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0x2c')]){agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0x53')]=!![];agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0x33')]=utils[_0xab49('0x19')]();agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0x28')]=utils[_0xab49('0x34')](agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0x33')],agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0x2c')]);agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0x26')]=agents[_0x24fb84['uniqueid']]['transfer']?_0xab49('0x3a'):_0xab49('0x54');agents[_0x24fb84[_0xab49('0x13')]][_0xab49('0xa')]=_0xab49('0x35');utils[_0xab49('0x1c')](util['format'](_0xab49('0x51'),_0x24fb84['uniqueid'],agents[_0x24fb84['uniqueid']][_0xab49('0x6')],agents[_0x24fb84['uniqueid']][_0xab49('0x26')],agents[_0x24fb84[_0xab49('0x13')]]['lastevent']));writeDB(agents[_0x24fb84[_0xab49('0x13')]]);}}catch(_0x271ee4){utils[_0xab49('0x1d')](util['format']('[%s][agents][hangup]',_0x24fb84[_0xab49('0x13')]),_0x271ee4);}};
\ No newline at end of file
+var _0x6c76=['answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diffTime','agentcompleteAt','agentconnectAt','complete','[%s][agents][agentcomplete]','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfertype','transferexten','extension','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','transfer','ATTENDED','origtransfererexten','transfereeuniqueid','agententerreason','calleridnum','calleridname','agentcalledAt','secondtransfererexten','transfertargetuniqueid','clone','hangup','[%s][agents][hangup]','cause','rejected','splice','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','agent','lodash','util','./utils','info','uniqueid','channel','membername','interface','connectedlinenum','getVoiceQueueByName','queue','then','type','agentacw','agentcomplete','acwtime','acwTimeout','request','CreateVoiceAgentReport','destuniqueid','agentcalled','debug','format','[%s][agents][agentcalled]','now','lastevent','called','error','isNil','[%s][agents][agentringnoanswer]','agentringnoanswer','timeout','holdtime','ringtime','talktime','push','queuecallerabandon','forIn','[%s][agents][queuecallerabandon]','agentringnoanswerAt','abandoned','reason','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','connectedlinename','answered_elsewhere'];(function(_0x342b59,_0x50285f){var _0x19c5c1=function(_0x6a378){while(--_0x6a378){_0x342b59['push'](_0x342b59['shift']());}};_0x19c5c1(++_0x50285f);}(_0x6c76,0x184));var _0x66c7=function(_0x2d07f1,_0x112dc6){_0x2d07f1=_0x2d07f1-0x0;var _0x38701e=_0x6c76[_0x2d07f1];return _0x38701e;};'use strict';var _=require(_0x66c7('0x0'));var util=require(_0x66c7('0x1'));var utils=require(_0x66c7('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x55604c,_0x203e75){utils[_0x66c7('0x3')](util['format']('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x55604c[_0x66c7('0x4')],_0x55604c[_0x66c7('0x5')],_0x55604c['queue'],_0x55604c[_0x66c7('0x6')],_0x55604c[_0x66c7('0x7')],_0x55604c['calleridnum'],_0x55604c[_0x66c7('0x8')],_0x55604c['lastevent']));if(_0x55604c['queue']){utils[_0x66c7('0x9')](_0x55604c[_0x66c7('0xa')])[_0x66c7('0xb')](function(_0x53a81c){if(_0x53a81c){_0x55604c[_0x66c7('0xc')]=_0x53a81c[_0x66c7('0xc')];_0x55604c[_0x66c7('0xd')]=_0x55604c[_0x66c7('0xe')]?_0x53a81c['acw']:![];_0x55604c[_0x66c7('0xf')]=_0x55604c[_0x66c7('0xd')]?_0x53a81c[_0x66c7('0x10')]:0x0;}utils[_0x66c7('0x11')](_0x66c7('0x12'),_0x55604c);});}else{utils[_0x66c7('0x11')](_0x66c7('0x12'),_0x55604c);}if(_0x203e75){delete transfers[_0x55604c['uniqueid']];}else{delete agents[_0x55604c[_0x66c7('0x13')]];}}exports[_0x66c7('0x14')]=function(_0x35cbc2){try{utils[_0x66c7('0x15')](util[_0x66c7('0x16')](_0x66c7('0x17'),_0x35cbc2[_0x66c7('0x4')]),_0x35cbc2);agents[_0x35cbc2[_0x66c7('0x13')]]=_0x35cbc2;agents[_0x35cbc2[_0x66c7('0x13')]]['agentcalledAt']=utils[_0x66c7('0x18')]();agents[_0x35cbc2['destuniqueid']][_0x66c7('0x19')]=_0x66c7('0x1a');agents[_0x35cbc2[_0x66c7('0x13')]][_0x66c7('0x8')]=null;agents[_0x35cbc2[_0x66c7('0x13')]]['connectedlinename']=null;utils['info'](util['format']('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x35cbc2[_0x66c7('0x4')],agents[_0x35cbc2[_0x66c7('0x13')]]['membername'],_0x35cbc2['destuniqueid']));}catch(_0x256b0a){utils[_0x66c7('0x1b')](util[_0x66c7('0x16')](_0x66c7('0x17'),_0x35cbc2['uniqueid']),_0x256b0a);}};exports['agentringnoanswer']=function(_0x1853b2){try{if(!_[_0x66c7('0x1c')](agents[_0x1853b2[_0x66c7('0x13')]])){utils[_0x66c7('0x15')](util[_0x66c7('0x16')](_0x66c7('0x1d'),_0x1853b2['uniqueid']),_0x1853b2);utils[_0x66c7('0x3')](util[_0x66c7('0x16')]('[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout',_0x1853b2[_0x66c7('0x4')],agents[_0x1853b2[_0x66c7('0x13')]][_0x66c7('0x6')],_0x1853b2[_0x66c7('0x13')]));agents[_0x1853b2['destuniqueid']][_0x66c7('0x1e')]=!![];agents[_0x1853b2[_0x66c7('0x13')]]['agentringnoanswerAt']=utils[_0x66c7('0x18')]();agents[_0x1853b2[_0x66c7('0x13')]][_0x66c7('0x19')]=_0x66c7('0x1f');agents[_0x1853b2[_0x66c7('0x13')]]['reason']='timeout';agents[_0x1853b2['destuniqueid']][_0x66c7('0x20')]=_0x1853b2[_0x66c7('0x21')]?parseInt(_0x1853b2['ringtime'])/0x3e8:0x0;agents[_0x1853b2[_0x66c7('0x13')]][_0x66c7('0x22')]=0x0;unanswered[_0x66c7('0x23')](_0x1853b2[_0x66c7('0x13')]);}}catch(_0x36a830){utils[_0x66c7('0x1b')](util['format'](_0x66c7('0x1d'),_0x1853b2[_0x66c7('0x4')]),_0x36a830);}};exports[_0x66c7('0x24')]=function(_0x33be23){try{_[_0x66c7('0x25')](agents,function(_0x592f0e,_0x263b48){if(_0x592f0e['uniqueid']==_0x33be23[_0x66c7('0x4')]&&!_['includes'](unanswered,_0x592f0e[_0x66c7('0x13')])){utils[_0x66c7('0x15')](util[_0x66c7('0x16')](_0x66c7('0x26'),_0x33be23[_0x66c7('0x4')]),_0x33be23);utils[_0x66c7('0x3')](util['format']('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x33be23[_0x66c7('0x4')],_0x592f0e[_0x66c7('0x6')],_0x592f0e[_0x66c7('0x13')]));_0x592f0e[_0x66c7('0x1e')]=!![];_0x592f0e[_0x66c7('0x27')]=utils[_0x66c7('0x18')]();_0x592f0e[_0x66c7('0x19')]=_0x66c7('0x28');_0x592f0e[_0x66c7('0x29')]=_0x66c7('0x28');_0x592f0e[_0x66c7('0x20')]=_0x33be23[_0x66c7('0x20')];_0x592f0e['talktime']=0x0;writeDB(_0x592f0e);}});}catch(_0x562283){utils[_0x66c7('0x1b')](util[_0x66c7('0x16')](_0x66c7('0x26'),_0x33be23[_0x66c7('0x4')]),_0x562283);}};exports[_0x66c7('0x2a')]=function(_0x2bf7c2){try{if(agents[_0x2bf7c2[_0x66c7('0x13')]]){utils['debug'](util[_0x66c7('0x16')](_0x66c7('0x2b'),_0x2bf7c2[_0x66c7('0x4')]),_0x2bf7c2);utils[_0x66c7('0x3')](util[_0x66c7('0x16')](_0x66c7('0x2c'),_0x2bf7c2[_0x66c7('0x4')],agents[_0x2bf7c2[_0x66c7('0x13')]][_0x66c7('0x6')],_0x2bf7c2[_0x66c7('0x13')]));agents[_0x2bf7c2[_0x66c7('0x13')]]['agentconnectAt']=utils['now']();agents[_0x2bf7c2[_0x66c7('0x13')]][_0x66c7('0x8')]=_0x2bf7c2[_0x66c7('0x8')];agents[_0x2bf7c2['destuniqueid']]['connectedlinename']=_0x2bf7c2[_0x66c7('0x2d')];agents[_0x2bf7c2[_0x66c7('0x13')]]['holdtime']=_0x2bf7c2[_0x66c7('0x21')];agents[_0x2bf7c2[_0x66c7('0x13')]][_0x66c7('0x19')]='connect';_[_0x66c7('0x25')](agents,function(_0x16b754,_0x9f6ca8){if(_0x16b754[_0x66c7('0x13')]!=_0x2bf7c2[_0x66c7('0x13')]&&_0x16b754[_0x66c7('0x4')]==_0x2bf7c2[_0x66c7('0x4')]){_0x16b754[_0x66c7('0x22')]=0x0;_0x16b754[_0x66c7('0x20')]=_0x2bf7c2['ringtime'];_0x16b754[_0x66c7('0x1e')]=!![];_0x16b754[_0x66c7('0x27')]=utils[_0x66c7('0x18')]();_0x16b754[_0x66c7('0x19')]=_0x66c7('0x2e');_0x16b754[_0x66c7('0x29')]=_0x66c7('0x2e');_0x16b754[_0x66c7('0x2f')]=_0x2bf7c2[_0x66c7('0x13')];_0x16b754[_0x66c7('0x30')]=_0x2bf7c2['membername'];writeDB(_0x16b754);}});}}catch(_0x5bb5fc){utils['error'](util[_0x66c7('0x16')](_0x66c7('0x2b'),_0x2bf7c2['uniqueid']),_0x5bb5fc);}};exports['agentcomplete']=function(_0x34d002){try{if(!_[_0x66c7('0x1c')](agents[_0x34d002[_0x66c7('0x13')]])){utils[_0x66c7('0x15')](util[_0x66c7('0x16')]('[%s][agents][agentcomplete]',_0x34d002[_0x66c7('0x4')]),_0x34d002);utils['info'](util['format'](_0x66c7('0x31'),_0x34d002[_0x66c7('0x4')],agents[_0x34d002[_0x66c7('0x13')]][_0x66c7('0x6')],_0x34d002['destuniqueid']));agents[_0x34d002['destuniqueid']][_0x66c7('0xe')]=!![];agents[_0x34d002['destuniqueid']]['agentcompleteAt']=utils[_0x66c7('0x18')]();agents[_0x34d002[_0x66c7('0x13')]][_0x66c7('0x22')]=utils[_0x66c7('0x32')](agents[_0x34d002['destuniqueid']][_0x66c7('0x33')],agents[_0x34d002[_0x66c7('0x13')]][_0x66c7('0x34')]);agents[_0x34d002['destuniqueid']][_0x66c7('0x29')]=_0x34d002[_0x66c7('0x29')];agents[_0x34d002[_0x66c7('0x13')]][_0x66c7('0x19')]=_0x66c7('0x35');writeDB(agents[_0x34d002[_0x66c7('0x13')]]);}}catch(_0x2e3f06){utils[_0x66c7('0x1b')](util['format'](_0x66c7('0x36'),_0x34d002[_0x66c7('0x4')]),_0x2e3f06);}};exports[_0x66c7('0x37')]=function(_0x1386a2){try{if(!_[_0x66c7('0x1c')](agents[_0x1386a2[_0x66c7('0x38')]])){utils[_0x66c7('0x15')](util[_0x66c7('0x16')](_0x66c7('0x39'),_0x1386a2[_0x66c7('0x4')]),_0x1386a2);utils[_0x66c7('0x3')](util[_0x66c7('0x16')](_0x66c7('0x3a'),_0x1386a2[_0x66c7('0x4')],agents[_0x1386a2['transfereruniqueid']][_0x66c7('0x6')],agents[_0x1386a2[_0x66c7('0x38')]][_0x66c7('0x4')]));agents[_0x1386a2[_0x66c7('0x38')]]['transfer']=!![];agents[_0x1386a2[_0x66c7('0x38')]][_0x66c7('0x3b')]='blind';agents[_0x1386a2[_0x66c7('0x38')]][_0x66c7('0x3c')]=_0x1386a2[_0x66c7('0x3d')];agents[_0x1386a2[_0x66c7('0x38')]][_0x66c7('0x3e')]=agents[_0x1386a2[_0x66c7('0x38')]][_0x66c7('0x4')];}}catch(_0x5cd4e9){utils[_0x66c7('0x1b')](util[_0x66c7('0x16')]('[%s][agents][blindtransfer]',_0x1386a2[_0x66c7('0x4')]),_0x5cd4e9);}};exports[_0x66c7('0x3f')]=function(_0x3ef4cf){try{utils['debug'](util[_0x66c7('0x16')](_0x66c7('0x40'),_0x3ef4cf[_0x66c7('0x41')]),_0x3ef4cf);if(_0x3ef4cf[_0x66c7('0x41')]==_0x3ef4cf[_0x66c7('0x42')]){if(!_[_0x66c7('0x1c')](agents[_0x3ef4cf[_0x66c7('0x43')]])){utils[_0x66c7('0x3')](util['format'](_0x66c7('0x44'),_0x3ef4cf[_0x66c7('0x41')],agents[_0x3ef4cf['secondtransfereruniqueid']][_0x66c7('0x6')]));agents[_0x3ef4cf[_0x66c7('0x43')]][_0x66c7('0x45')]=!![];agents[_0x3ef4cf['secondtransfereruniqueid']]['transfertype']=_0x66c7('0x46');agents[_0x3ef4cf['secondtransfereruniqueid']][_0x66c7('0x3c')]=_0x3ef4cf[_0x66c7('0x47')];agents[_0x3ef4cf[_0x66c7('0x43')]][_0x66c7('0x3e')]=_0x3ef4cf[_0x66c7('0x41')];}if(_0x3ef4cf[_0x66c7('0x48')]&&agents[_0x3ef4cf['transfereeuniqueid']]){agents[_0x3ef4cf['transfereeuniqueid']][_0x66c7('0x49')]=0x1;transfers[_0x3ef4cf[_0x66c7('0x48')]]=_['clone'](agents[_0x3ef4cf['transfereeuniqueid']]);transfers[_0x3ef4cf[_0x66c7('0x48')]]['calleridnum']=agents[_0x3ef4cf[_0x66c7('0x43')]][_0x66c7('0x4a')];transfers[_0x3ef4cf[_0x66c7('0x48')]][_0x66c7('0x4b')]=agents[_0x3ef4cf['secondtransfereruniqueid']][_0x66c7('0x4b')];transfers[_0x3ef4cf[_0x66c7('0x48')]][_0x66c7('0x4c')]=utils[_0x66c7('0x18')]();transfers[_0x3ef4cf[_0x66c7('0x48')]][_0x66c7('0x34')]=utils['now']();transfers[_0x3ef4cf[_0x66c7('0x48')]][_0x66c7('0x20')]=0x0;transfers[_0x3ef4cf[_0x66c7('0x48')]]['agententerreason']=0x2;}}else if(_0x3ef4cf[_0x66c7('0x43')]==_0x3ef4cf['secondtransfererlinkedid']){if(!_[_0x66c7('0x1c')](agents[_0x3ef4cf[_0x66c7('0x41')]])){utils[_0x66c7('0x3')](util[_0x66c7('0x16')](_0x66c7('0x44'),_0x3ef4cf[_0x66c7('0x41')],agents[_0x3ef4cf['origtransfereruniqueid']][_0x66c7('0x6')]));agents[_0x3ef4cf[_0x66c7('0x41')]][_0x66c7('0x45')]=!![];agents[_0x3ef4cf[_0x66c7('0x41')]][_0x66c7('0x3b')]='ATTENDED';agents[_0x3ef4cf[_0x66c7('0x41')]][_0x66c7('0x3c')]=_0x3ef4cf[_0x66c7('0x4d')];agents[_0x3ef4cf[_0x66c7('0x41')]][_0x66c7('0x3e')]=_0x3ef4cf[_0x66c7('0x43')];}if(_0x3ef4cf[_0x66c7('0x4e')]&&agents[_0x3ef4cf[_0x66c7('0x4e')]]){agents[_0x3ef4cf[_0x66c7('0x4e')]][_0x66c7('0x49')]=0x1;transfers[_0x3ef4cf[_0x66c7('0x4e')]]=_[_0x66c7('0x4f')](agents[_0x3ef4cf['transfertargetuniqueid']]);transfers[_0x3ef4cf[_0x66c7('0x4e')]][_0x66c7('0x4a')]=agents[_0x3ef4cf[_0x66c7('0x41')]][_0x66c7('0x4a')];transfers[_0x3ef4cf[_0x66c7('0x4e')]][_0x66c7('0x4b')]=agents[_0x3ef4cf[_0x66c7('0x41')]]['calleridname'];transfers[_0x3ef4cf[_0x66c7('0x4e')]][_0x66c7('0x4c')]=utils[_0x66c7('0x18')]();transfers[_0x3ef4cf[_0x66c7('0x4e')]][_0x66c7('0x34')]=utils[_0x66c7('0x18')]();transfers[_0x3ef4cf[_0x66c7('0x4e')]][_0x66c7('0x20')]=0x0;transfers[_0x3ef4cf[_0x66c7('0x4e')]][_0x66c7('0x49')]=0x2;}}}catch(_0x21eb0a){utils[_0x66c7('0x1b')](util[_0x66c7('0x16')](_0x66c7('0x40'),_0x3ef4cf[_0x66c7('0x41')]),_0x21eb0a);}};exports[_0x66c7('0x50')]=function(_0x5bca99){try{utils[_0x66c7('0x15')](util[_0x66c7('0x16')](_0x66c7('0x51'),_0x5bca99[_0x66c7('0x4')]),_0x5bca99);if(agents[_0x5bca99[_0x66c7('0x4')]]&&agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x29')]===_0x66c7('0x1f')){if(_0x5bca99[_0x66c7('0x52')]==='21'){agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x29')]=_0x66c7('0x53');agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x19')]=_0x66c7('0x53');}utils[_0x66c7('0x3')](util[_0x66c7('0x16')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x5bca99[_0x66c7('0x4')],agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x6')],agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x29')],agents[_0x5bca99[_0x66c7('0x4')]]['lastevent']));writeDB(agents[_0x5bca99['uniqueid']]);var _0x34d4f7=unanswered['indexOf'](_0x5bca99[_0x66c7('0x4')]);if(_0x34d4f7>-0x1){unanswered[_0x66c7('0x54')](_0x34d4f7,0x1);}}if(transfers[_0x5bca99[_0x66c7('0x4')]]){transfers[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0xe')]=!![];transfers[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x33')]=utils[_0x66c7('0x18')]();transfers[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x22')]=utils[_0x66c7('0x32')](transfers[_0x5bca99[_0x66c7('0x4')]]['agentcompleteAt'],transfers[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x34')]);transfers[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x29')]='agent';transfers[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x19')]='complete';utils[_0x66c7('0x3')](util[_0x66c7('0x16')](_0x66c7('0x55'),_0x5bca99[_0x66c7('0x4')],transfers[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x6')],transfers[_0x5bca99['uniqueid']]['reason'],transfers[_0x5bca99[_0x66c7('0x4')]]['lastevent']));writeDB(transfers[_0x5bca99['uniqueid']],!![]);}if(agents[_0x5bca99[_0x66c7('0x4')]]&&agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x34')]){agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0xe')]=!![];agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x33')]=utils[_0x66c7('0x18')]();agents[_0x5bca99['uniqueid']][_0x66c7('0x22')]=utils[_0x66c7('0x32')](agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x33')],agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x34')]);agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x29')]=agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x45')]?_0x66c7('0x45'):_0x66c7('0x56');agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x19')]=_0x66c7('0x35');utils[_0x66c7('0x3')](util[_0x66c7('0x16')](_0x66c7('0x55'),_0x5bca99[_0x66c7('0x4')],agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x6')],agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x29')],agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x19')]));writeDB(agents[_0x5bca99[_0x66c7('0x4')]]);}}catch(_0x331acc){utils['error'](util[_0x66c7('0x16')](_0x66c7('0x51'),_0x5bca99[_0x66c7('0x4')]),_0x331acc);}};
\ No newline at end of file
index 0a0da78..765eccd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0261=['calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','diffTime','starttime','[%s][calls][hangup]','attendedtransfer','[%s][calls][attendedtransfer]','origtransfereruniqueid','localtwolinkedid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','[%s][calls][musiconholdstop]','varset','[%s][calls][varset]','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','\x22\x20<','xmd-callerid-preview','xmd-callerid','xmd-queue','xmcs-queue','lastapplication','Queue','lastdata','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','set','toLowerCase','cdr','appdata','substring','lastIndexOf','includes','noop','execif','lodash','util','./utils','./transfers.controller','NO\x20ANSWER','FAILED','ANSWERED','blinds','uniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','connectedlinenum','getUserByInternal','accountcode','then','UserId','request','CreateVoiceCallReport','newchannel','debug','[%s][calls][newchannel]','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','exten','calleridnum','context','now','DOCUMENTATION','error','newstate','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','linkedid','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','hangup','callerid'];(function(_0x24f31b,_0x44b8f3){var _0x488401=function(_0x204caf){while(--_0x204caf){_0x24f31b['push'](_0x24f31b['shift']());}};_0x488401(++_0x44b8f3);}(_0x0261,0x187));var _0x1026=function(_0x40c402,_0x42ee7d){_0x40c402=_0x40c402-0x0;var _0x4e7680=_0x0261[_0x40c402];return _0x4e7680;};'use strict';var _=require(_0x1026('0x0'));var util=require(_0x1026('0x1'));var utils=require(_0x1026('0x2'));var transfers=require(_0x1026('0x3'));var dispositions=[_0x1026('0x4'),_0x1026('0x5'),_0x1026('0x5'),_0x1026('0x4'),'NO\x20ANSWER',_0x1026('0x4'),_0x1026('0x6'),'BUSY',_0x1026('0x5'),_0x1026('0x5'),'FAILED'];var channels={};function writeDB(_0x24d99a){var _0x42cf9b;if(transfers[_0x1026('0x7')][_0x24d99a[_0x1026('0x8')]]){_0x42cf9b=_0x24d99a[_0x1026('0x8')];_0x24d99a['uniqueid']=transfers['blinds'][_0x24d99a[_0x1026('0x8')]]['transfereeuniqueid'];}utils[_0x1026('0x9')](util[_0x1026('0xa')](_0x1026('0xb'),_0x24d99a[_0x1026('0x8')],_0x24d99a[_0x1026('0xc')],_0x24d99a[_0x1026('0xd')],_0x24d99a[_0x1026('0xe')],_0x24d99a['interface'],_0x24d99a['calleridnum'],_0x24d99a[_0x1026('0xf')],_0x24d99a['lastevent']));if(_0x24d99a['accountcode']){utils[_0x1026('0x10')](_0x24d99a[_0x1026('0x11')])[_0x1026('0x12')](function(_0x5c7c97){if(_0x5c7c97){_0x24d99a[_0x1026('0x13')]=_0x5c7c97['id'];}utils[_0x1026('0x14')](_0x1026('0x15'),_0x24d99a);});}else{utils[_0x1026('0x14')](_0x1026('0x15'),_0x24d99a);}if(channels[_0x24d99a[_0x1026('0x8')]]){delete channels[_0x24d99a[_0x1026('0x8')]];}else if(_0x42cf9b&&channels[_0x42cf9b]){delete transfers[_0x1026('0x7')][_0x42cf9b];delete channels[_0x42cf9b];}}exports[_0x1026('0x16')]=function(_0x10921d){try{utils[_0x1026('0x17')](util['format'](_0x1026('0x18'),_0x10921d[_0x1026('0x8')]),_0x10921d);if(_0x10921d['uniqueid']==_0x10921d['linkedid']&&_0x10921d[_0x1026('0xc')]!=_0x1026('0x19')){utils[_0x1026('0x9')](util[_0x1026('0xa')](_0x1026('0x1a'),_0x10921d[_0x1026('0x8')],_0x10921d['context'],_0x10921d[_0x1026('0x1b')]));channels[_0x10921d[_0x1026('0x8')]]={'uniqueid':_0x10921d[_0x1026('0x8')],'accountcode':_0x10921d[_0x1026('0x11')],'source':_0x10921d[_0x1026('0x1c')],'destination':_0x10921d['exten'],'destinationcontext':_0x10921d[_0x1026('0x1d')],'channel':_0x10921d[_0x1026('0xc')],'starttime':utils[_0x1026('0x1e')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x1026('0x4'),'amaflags':_0x1026('0x1f')};}}catch(_0x26f9bb){utils[_0x1026('0x20')](util['format'](_0x1026('0x18'),_0x10921d[_0x1026('0x8')]),_0x26f9bb);}};exports[_0x1026('0x21')]=function(_0x428119){try{utils[_0x1026('0x17')](util[_0x1026('0xa')]('[%s][calls][newstate]',_0x428119[_0x1026('0x8')]),_0x428119);if(!_[_0x1026('0x22')](channels[_0x428119[_0x1026('0x8')]])&&_0x428119[_0x1026('0x23')]==0x6){utils['info'](util[_0x1026('0xa')](_0x1026('0x24'),_0x428119['uniqueid'],_0x428119[_0x1026('0x1d')],_0x428119['channel']));if(_[_0x1026('0x22')](channels[_0x428119[_0x1026('0x8')]][_0x1026('0x25')])){channels[_0x428119['uniqueid']][_0x1026('0x25')]=utils['now']();}}else if(!_['isNil'](channels[_0x428119[_0x1026('0x26')]])&&_0x428119[_0x1026('0x23')]==0x6&&_0x428119[_0x1026('0x1d')]!='transfer'){utils['info'](util['format'](_0x1026('0x27'),_0x428119[_0x1026('0x8')],_0x428119[_0x1026('0x26')],_0x428119['context'],_0x428119[_0x1026('0xc')]));channels[_0x428119['linkedid']][_0x1026('0x11')]=_0x428119[_0x1026('0x11')];channels[_0x428119[_0x1026('0x26')]][_0x1026('0x28')]=_0x428119[_0x1026('0xc')];if(_[_0x1026('0x22')](channels[_0x428119[_0x1026('0x26')]][_0x1026('0x29')])){channels[_0x428119[_0x1026('0x26')]]['answertime']=utils[_0x1026('0x1e')]();}channels[_0x428119['linkedid']][_0x1026('0x2a')]=dispositions[_['toNumber'](_0x428119['channelstate'])]||_0x1026('0x6');}}catch(_0x4eb684){utils[_0x1026('0x20')](util[_0x1026('0xa')]('[%s][calls][newstate]',_0x428119[_0x1026('0x8')]),_0x4eb684);}};exports[_0x1026('0x2b')]=function(_0x294010){try{if(!_['isNil'](channels[_0x294010[_0x1026('0x8')]])){utils[_0x1026('0x17')](util[_0x1026('0xa')]('[%s][calls][hangup]',_0x294010[_0x1026('0x8')]),_0x294010);if(_['isNil'](channels[_0x294010['uniqueid']][_0x1026('0x2c')])){channels[_0x294010[_0x1026('0x8')]][_0x1026('0x2c')]=_0x294010[_0x1026('0x2d')]+'\x20<'+_0x294010[_0x1026('0x1c')]+'>';}utils['info'](util[_0x1026('0xa')](_0x1026('0x2e'),_0x294010['uniqueid'],channels[_0x294010[_0x1026('0x8')]][_0x1026('0x2c')],_0x294010[_0x1026('0x2f')]));channels[_0x294010[_0x1026('0x8')]][_0x1026('0x30')]=utils[_0x1026('0x1e')]();channels[_0x294010[_0x1026('0x8')]][_0x1026('0x31')]=utils[_0x1026('0x32')](channels[_0x294010[_0x1026('0x8')]][_0x1026('0x30')],channels[_0x294010['uniqueid']][_0x1026('0x33')]);channels[_0x294010['uniqueid']]['billableseconds']=channels[_0x294010[_0x1026('0x8')]]['answertime']?utils['diffTime'](channels[_0x294010[_0x1026('0x8')]][_0x1026('0x30')],channels[_0x294010[_0x1026('0x8')]]['answertime']):0x0;writeDB(channels[_0x294010[_0x1026('0x8')]]);}}catch(_0x176161){utils[_0x1026('0x20')](util[_0x1026('0xa')](_0x1026('0x34'),_0x294010[_0x1026('0x8')]),_0x176161);}};exports[_0x1026('0x35')]=function(_0xa5e210){try{if(!_[_0x1026('0x22')](channels[_0xa5e210['localtwolinkedid']])){utils['debug'](util['format'](_0x1026('0x36'),_0xa5e210[_0x1026('0x37')]),_0xa5e210);if(channels[_0xa5e210[_0x1026('0x38')]][_0x1026('0xc')]==_0xa5e210[_0x1026('0x39')]){utils[_0x1026('0x9')](util['format'](_0x1026('0x3a'),_0xa5e210[_0x1026('0x37')],_0xa5e210['localtwolinkedid'],_0xa5e210[_0x1026('0x3b')]));channels[_0xa5e210[_0x1026('0x38')]][_0x1026('0x28')]=_0xa5e210[_0x1026('0x3b')];channels[_0xa5e210[_0x1026('0x38')]][_0x1026('0x3c')]=_0x1026('0x3d');}else if(channels[_0xa5e210[_0x1026('0x38')]]['channel']=_0xa5e210['transfertargetchannel']){utils[_0x1026('0x9')](util[_0x1026('0xa')](_0x1026('0x3a'),_0xa5e210[_0x1026('0x37')],_0xa5e210[_0x1026('0x38')],_0xa5e210[_0x1026('0x3e')]));channels[_0xa5e210[_0x1026('0x38')]]['destinationchannel']=_0xa5e210['origtransfererchannel'];channels[_0xa5e210[_0x1026('0x38')]][_0x1026('0x3c')]=_0x1026('0x3d');}}}catch(_0x5d9a86){utils[_0x1026('0x20')](util[_0x1026('0xa')](_0x1026('0x36'),_0xa5e210['origtransfereruniqueid']),_0x5d9a86);}};exports[_0x1026('0x3f')]=function(_0x14cb7d){try{if(!_[_0x1026('0x22')](channels[_0x14cb7d[_0x1026('0x8')]])){utils[_0x1026('0x17')](util['format'](_0x1026('0x40'),_0x14cb7d[_0x1026('0x8')]),_0x14cb7d);channels[_0x14cb7d[_0x1026('0x8')]][_0x1026('0x41')]=utils[_0x1026('0x1e')]();utils['info'](util[_0x1026('0xa')](_0x1026('0x42'),_0x14cb7d[_0x1026('0x8')],channels[_0x14cb7d[_0x1026('0x8')]][_0x1026('0x41')]));}}catch(_0x1e6cb4){utils[_0x1026('0x20')](util[_0x1026('0xa')](_0x1026('0x40'),_0x14cb7d[_0x1026('0x8')]),_0x1e6cb4);}};exports[_0x1026('0x43')]=function(_0x2ac70a){try{if(!_[_0x1026('0x22')](channels[_0x2ac70a[_0x1026('0x8')]])){utils[_0x1026('0x17')](util[_0x1026('0xa')]('[%s][calls][musiconholdstop]',_0x2ac70a[_0x1026('0x8')]),_0x2ac70a);if(!_[_0x1026('0x22')](channels[_0x2ac70a[_0x1026('0x8')]][_0x1026('0x41')])){channels[_0x2ac70a[_0x1026('0x8')]][_0x1026('0x44')]+=utils[_0x1026('0x32')](utils['now'](),channels[_0x2ac70a[_0x1026('0x8')]][_0x1026('0x41')]);utils[_0x1026('0x9')](util[_0x1026('0xa')](_0x1026('0x45'),_0x2ac70a[_0x1026('0x8')],channels[_0x2ac70a[_0x1026('0x8')]][_0x1026('0x44')]));delete channels[_0x2ac70a[_0x1026('0x8')]][_0x1026('0x41')];}}}catch(_0x21e0a8){utils[_0x1026('0x20')](util[_0x1026('0xa')](_0x1026('0x46'),_0x2ac70a[_0x1026('0x8')]),_0x21e0a8);}};exports[_0x1026('0x47')]=function(_0x5415fa){try{if(!_['isNil'](channels[_0x5415fa[_0x1026('0x8')]])){utils[_0x1026('0x17')](util[_0x1026('0xa')](_0x1026('0x48'),_0x5415fa['uniqueid']),_0x5415fa);if(!_[_0x1026('0x22')](_0x5415fa[_0x1026('0x49')][_0x1026('0x4a')])){utils[_0x1026('0x9')](util[_0x1026('0xa')](_0x1026('0x4b'),_0x5415fa[_0x1026('0x8')],_0x5415fa[_0x1026('0x4c')]));channels[_0x5415fa[_0x1026('0x8')]][_0x1026('0x4d')]=_0x5415fa[_0x1026('0x4c')];}if(!_[_0x1026('0x22')](_0x5415fa[_0x1026('0x49')][_0x1026('0x4e')])){utils['info'](util[_0x1026('0xa')](_0x1026('0x4f'),_0x5415fa[_0x1026('0x8')],_0x5415fa[_0x1026('0x4c')]));channels[_0x5415fa['uniqueid']]['destination']=_0x5415fa['value'];channels[_0x5415fa[_0x1026('0x8')]][_0x1026('0x2c')]='\x22'+_0x5415fa[_0x1026('0x4c')]+_0x1026('0x50')+_0x5415fa['value']+'>';}if(!_['isNil'](_0x5415fa[_0x1026('0x49')][_0x1026('0x51')])||!_[_0x1026('0x22')](_0x5415fa[_0x1026('0x49')][_0x1026('0x52')])){utils[_0x1026('0x9')](util[_0x1026('0xa')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x5415fa['uniqueid'],!_['isNil'](_0x5415fa[_0x1026('0x49')][_0x1026('0x51')])?_0x1026('0x51'):_0x1026('0x52'),_0x5415fa[_0x1026('0x4c')]));channels[_0x5415fa[_0x1026('0x8')]][_0x1026('0x2c')]=_0x5415fa[_0x1026('0x4c')];}if(!_[_0x1026('0x22')](_0x5415fa[_0x1026('0x49')]['xmd-queue'])||!_[_0x1026('0x22')](_0x5415fa['variable']['xmcs-queue'])){utils['info'](util[_0x1026('0xa')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x5415fa[_0x1026('0x8')],!_[_0x1026('0x22')](_0x5415fa['variable'][_0x1026('0x53')])?'xmd-queue':_0x1026('0x54'),_0x5415fa[_0x1026('0x4c')]));channels[_0x5415fa['uniqueid']][_0x1026('0x55')]=_0x1026('0x56');channels[_0x5415fa[_0x1026('0x8')]][_0x1026('0x57')]=_0x5415fa[_0x1026('0x4c')];channels[_0x5415fa[_0x1026('0x8')]]['queue']=!![];}if(!_[_0x1026('0x22')](_0x5415fa['variable']['xmd-contactid'])){utils[_0x1026('0x9')](util[_0x1026('0xa')](_0x1026('0x58'),_0x5415fa[_0x1026('0x8')],_0x5415fa['value']));channels[_0x5415fa[_0x1026('0x8')]]['ContactId']=_0x5415fa['value'];}if(!_[_0x1026('0x22')](_0x5415fa[_0x1026('0x49')][_0x1026('0x59')])){utils[_0x1026('0x9')](util[_0x1026('0xa')](_0x1026('0x5a'),_0x5415fa[_0x1026('0x8')],_0x5415fa[_0x1026('0x4c')]));channels[_0x5415fa[_0x1026('0x8')]][_0x1026('0x5b')]=_0x5415fa[_0x1026('0x4c')];}if(!_[_0x1026('0x22')](_0x5415fa['variable'][_0x1026('0x5c')])){utils[_0x1026('0x9')](util[_0x1026('0xa')](_0x1026('0x5d'),_0x5415fa[_0x1026('0x8')],_0x5415fa[_0x1026('0x4c')]));channels[_0x5415fa['uniqueid']][_0x1026('0x5e')]=_0x5415fa[_0x1026('0x4c')];}if(!_[_0x1026('0x22')](_0x5415fa[_0x1026('0x49')][_0x1026('0x5f')])){utils['info'](util['format'](_0x1026('0x60'),_0x5415fa[_0x1026('0x8')],_0x5415fa['value']));channels[_0x5415fa[_0x1026('0x8')]][_0x1026('0x5f')]=_0x5415fa[_0x1026('0x4c')];}}}catch(_0x16b871){utils[_0x1026('0x20')](util[_0x1026('0xa')](_0x1026('0x48'),_0x5415fa['uniqueid']),_0x16b871);}};exports['newexten']=function(_0x42414d){try{if(!_[_0x1026('0x22')](channels[_0x42414d[_0x1026('0x8')]])){utils[_0x1026('0x17')](util['format'](_0x1026('0x61'),_0x42414d[_0x1026('0x8')]),_0x42414d);utils['info'](util[_0x1026('0xa')](_0x1026('0x62'),_0x42414d[_0x1026('0x8')],_0x42414d['application'],_0x42414d['appdata']));if(_0x42414d[_0x1026('0x63')]['toLowerCase']()==_0x1026('0x64')&&_['startsWith'](_0x42414d['appdata'][_0x1026('0x65')](),_0x1026('0x66'))){var _0x5a3c03=_0x42414d[_0x1026('0x67')]['split']('=');var _0x35c173=_0x5a3c03[0x0][_0x1026('0x68')](_0x5a3c03[0x0][_0x1026('0x69')]('(')+0x1,_0x5a3c03[0x0][_0x1026('0x69')](')'));var _0x1fffa8=_0x5a3c03[0x1];channels[_0x42414d[_0x1026('0x8')]][_0x35c173]=_0x1fffa8;}if(!_[_0x1026('0x6a')]([_0x1026('0x2b'),_0x1026('0x6b'),_0x1026('0x6c'),_0x1026('0x64'),'gotoif'],_0x42414d[_0x1026('0x63')]['toLowerCase']())){channels[_0x42414d[_0x1026('0x8')]]['lastapplication']=_0x42414d[_0x1026('0x63')];channels[_0x42414d['uniqueid']][_0x1026('0x57')]=_0x42414d[_0x1026('0x67')];}}}catch(_0xe64fa7){utils['error'](util[_0x1026('0xa')](_0x1026('0x61'),_0x42414d['uniqueid']),_0xe64fa7);}};
\ No newline at end of file
+var _0xb449=['FAILED','NO\x20ANSWER','BUSY','uniqueid','blinds','transfereeuniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','interface','calleridnum','connectedlinenum','getUserByInternal','accountcode','then','UserId','request','CreateVoiceCallReport','newchannel','debug','linkedid','OutgoingSpoolFailed','context','exten','DOCUMENTATION','error','[%s][calls][newchannel]','isNil','channelstate','systemanswertime','now','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','ANSWERED','[%s][calls][newstate]','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','duration','endtime','starttime','diffTime','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','transfertargetchannel','musiconholdstart','[%s][calls][musiconholdstart]','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstartAt','musiconholdstop','mohtime','varset','[%s][calls][varset]','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid-preview','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-callerid','xmcs-queue','xmd-queue','lastapplication','Queue','lastdata','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','newexten','[%s][calls][newexten]','application','appdata','set','startsWith','toLowerCase','cdr','substring','lastIndexOf','includes','hangup','noop','execif','gotoif','lodash','./utils'];(function(_0x2674d0,_0x927e65){var _0xe8ecd9=function(_0x56295e){while(--_0x56295e){_0x2674d0['push'](_0x2674d0['shift']());}};_0xe8ecd9(++_0x927e65);}(_0xb449,0x1ae));var _0x9b44=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb449[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x9b44('0x0'));var util=require('util');var utils=require(_0x9b44('0x1'));var transfers=require('./transfers.controller');var dispositions=['NO\x20ANSWER','FAILED',_0x9b44('0x2'),_0x9b44('0x3'),_0x9b44('0x3'),_0x9b44('0x3'),'ANSWERED',_0x9b44('0x4'),_0x9b44('0x2'),_0x9b44('0x2'),_0x9b44('0x2')];var channels={};function writeDB(_0x1ebccf){var _0xde2303;if(transfers['blinds'][_0x1ebccf[_0x9b44('0x5')]]){_0xde2303=_0x1ebccf['uniqueid'];_0x1ebccf[_0x9b44('0x5')]=transfers[_0x9b44('0x6')][_0x1ebccf[_0x9b44('0x5')]][_0x9b44('0x7')];}utils[_0x9b44('0x8')](util[_0x9b44('0x9')](_0x9b44('0xa'),_0x1ebccf[_0x9b44('0x5')],_0x1ebccf[_0x9b44('0xb')],_0x1ebccf[_0x9b44('0xc')],_0x1ebccf[_0x9b44('0xd')],_0x1ebccf[_0x9b44('0xe')],_0x1ebccf[_0x9b44('0xf')],_0x1ebccf[_0x9b44('0x10')],_0x1ebccf['lastevent']));if(_0x1ebccf['accountcode']){utils[_0x9b44('0x11')](_0x1ebccf[_0x9b44('0x12')])[_0x9b44('0x13')](function(_0x510335){if(_0x510335){_0x1ebccf[_0x9b44('0x14')]=_0x510335['id'];}utils[_0x9b44('0x15')](_0x9b44('0x16'),_0x1ebccf);});}else{utils[_0x9b44('0x15')](_0x9b44('0x16'),_0x1ebccf);}if(channels[_0x1ebccf[_0x9b44('0x5')]]){delete channels[_0x1ebccf['uniqueid']];}else if(_0xde2303&&channels[_0xde2303]){delete transfers[_0x9b44('0x6')][_0xde2303];delete channels[_0xde2303];}}exports[_0x9b44('0x17')]=function(_0x3611d5){try{utils[_0x9b44('0x18')](util['format']('[%s][calls][newchannel]',_0x3611d5[_0x9b44('0x5')]),_0x3611d5);if(_0x3611d5['uniqueid']==_0x3611d5[_0x9b44('0x19')]&&_0x3611d5[_0x9b44('0xb')]!=_0x9b44('0x1a')){utils['info'](util[_0x9b44('0x9')]('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0x3611d5[_0x9b44('0x5')],_0x3611d5[_0x9b44('0x1b')],_0x3611d5[_0x9b44('0x1c')]));channels[_0x3611d5['uniqueid']]={'uniqueid':_0x3611d5[_0x9b44('0x5')],'accountcode':_0x3611d5[_0x9b44('0x12')],'source':_0x3611d5['calleridnum'],'destination':_0x3611d5[_0x9b44('0x1c')],'destinationcontext':_0x3611d5[_0x9b44('0x1b')],'channel':_0x3611d5['channel'],'starttime':utils['now'](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x9b44('0x3'),'amaflags':_0x9b44('0x1d')};}}catch(_0x3a39f7){utils[_0x9b44('0x1e')](util['format'](_0x9b44('0x1f'),_0x3611d5[_0x9b44('0x5')]),_0x3a39f7);}};exports['newstate']=function(_0x502a57){try{utils['debug'](util[_0x9b44('0x9')]('[%s][calls][newstate]',_0x502a57[_0x9b44('0x5')]),_0x502a57);if(!_[_0x9b44('0x20')](channels[_0x502a57[_0x9b44('0x5')]])&&_0x502a57[_0x9b44('0x21')]==0x6){utils['info'](util['format']('[%s][calls][newstate]\x20context:%s\x20channel:%s',_0x502a57[_0x9b44('0x5')],_0x502a57[_0x9b44('0x1b')],_0x502a57['channel']));if(_['isNil'](channels[_0x502a57['uniqueid']][_0x9b44('0x22')])){channels[_0x502a57[_0x9b44('0x5')]]['systemanswertime']=utils[_0x9b44('0x23')]();}}else if(!_[_0x9b44('0x20')](channels[_0x502a57[_0x9b44('0x19')]])&&_0x502a57['channelstate']==0x6&&_0x502a57[_0x9b44('0x1b')]!=_0x9b44('0x24')){utils['info'](util[_0x9b44('0x9')](_0x9b44('0x25'),_0x502a57[_0x9b44('0x5')],_0x502a57[_0x9b44('0x19')],_0x502a57[_0x9b44('0x1b')],_0x502a57[_0x9b44('0xb')]));channels[_0x502a57['linkedid']][_0x9b44('0x12')]=_0x502a57[_0x9b44('0x12')];channels[_0x502a57[_0x9b44('0x19')]][_0x9b44('0x26')]=_0x502a57[_0x9b44('0xb')];if(_['isNil'](channels[_0x502a57[_0x9b44('0x19')]]['answertime'])){channels[_0x502a57[_0x9b44('0x19')]][_0x9b44('0x27')]=utils[_0x9b44('0x23')]();}channels[_0x502a57[_0x9b44('0x19')]][_0x9b44('0x28')]=dispositions[_[_0x9b44('0x29')](_0x502a57[_0x9b44('0x21')])]||_0x9b44('0x2a');}}catch(_0x1af553){utils[_0x9b44('0x1e')](util[_0x9b44('0x9')](_0x9b44('0x2b'),_0x502a57[_0x9b44('0x5')]),_0x1af553);}};exports['hangup']=function(_0x24e690){try{if(!_[_0x9b44('0x20')](channels[_0x24e690[_0x9b44('0x5')]])){utils[_0x9b44('0x18')](util[_0x9b44('0x9')](_0x9b44('0x2c'),_0x24e690[_0x9b44('0x5')]),_0x24e690);if(_[_0x9b44('0x20')](channels[_0x24e690[_0x9b44('0x5')]][_0x9b44('0x2d')])){channels[_0x24e690[_0x9b44('0x5')]][_0x9b44('0x2d')]=_0x24e690[_0x9b44('0x2e')]+'\x20<'+_0x24e690[_0x9b44('0xf')]+'>';}utils[_0x9b44('0x8')](util['format'](_0x9b44('0x2f'),_0x24e690[_0x9b44('0x5')],channels[_0x24e690[_0x9b44('0x5')]][_0x9b44('0x2d')],_0x24e690['cause-txt']));channels[_0x24e690[_0x9b44('0x5')]]['endtime']=utils[_0x9b44('0x23')]();channels[_0x24e690[_0x9b44('0x5')]][_0x9b44('0x30')]=utils['diffTime'](channels[_0x24e690[_0x9b44('0x5')]][_0x9b44('0x31')],channels[_0x24e690[_0x9b44('0x5')]][_0x9b44('0x32')]);channels[_0x24e690[_0x9b44('0x5')]]['billableseconds']=channels[_0x24e690[_0x9b44('0x5')]][_0x9b44('0x27')]?utils[_0x9b44('0x33')](channels[_0x24e690[_0x9b44('0x5')]][_0x9b44('0x31')],channels[_0x24e690[_0x9b44('0x5')]]['answertime']):0x0;writeDB(channels[_0x24e690[_0x9b44('0x5')]]);}}catch(_0x36d160){utils['error'](util[_0x9b44('0x9')](_0x9b44('0x2c'),_0x24e690[_0x9b44('0x5')]),_0x36d160);}};exports[_0x9b44('0x34')]=function(_0x1264ee){try{if(!_[_0x9b44('0x20')](channels[_0x1264ee[_0x9b44('0x35')]])){utils['debug'](util[_0x9b44('0x9')](_0x9b44('0x36'),_0x1264ee[_0x9b44('0x37')]),_0x1264ee);if(channels[_0x1264ee[_0x9b44('0x35')]][_0x9b44('0xb')]==_0x1264ee['transfereechannel']){utils[_0x9b44('0x8')](util[_0x9b44('0x9')](_0x9b44('0x38'),_0x1264ee[_0x9b44('0x37')],_0x1264ee[_0x9b44('0x35')],_0x1264ee[_0x9b44('0x39')]));channels[_0x1264ee[_0x9b44('0x35')]][_0x9b44('0x26')]=_0x1264ee['secondtransfererchannel'];channels[_0x1264ee[_0x9b44('0x35')]][_0x9b44('0x3a')]=_0x9b44('0x3b');}else if(channels[_0x1264ee['localtwolinkedid']][_0x9b44('0xb')]=_0x1264ee[_0x9b44('0x3c')]){utils[_0x9b44('0x8')](util['format']('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x1264ee['origtransfereruniqueid'],_0x1264ee['localtwolinkedid'],_0x1264ee['origtransfererchannel']));channels[_0x1264ee[_0x9b44('0x35')]][_0x9b44('0x26')]=_0x1264ee['origtransfererchannel'];channels[_0x1264ee[_0x9b44('0x35')]]['userfield']=_0x9b44('0x3b');}}}catch(_0x364473){utils[_0x9b44('0x1e')](util['format'](_0x9b44('0x36'),_0x1264ee[_0x9b44('0x37')]),_0x364473);}};exports[_0x9b44('0x3d')]=function(_0xd5ac1f){try{if(!_[_0x9b44('0x20')](channels[_0xd5ac1f[_0x9b44('0x5')]])){utils['debug'](util[_0x9b44('0x9')](_0x9b44('0x3e'),_0xd5ac1f[_0x9b44('0x5')]),_0xd5ac1f);channels[_0xd5ac1f[_0x9b44('0x5')]]['musiconholdstartAt']=utils[_0x9b44('0x23')]();utils[_0x9b44('0x8')](util[_0x9b44('0x9')](_0x9b44('0x3f'),_0xd5ac1f[_0x9b44('0x5')],channels[_0xd5ac1f[_0x9b44('0x5')]][_0x9b44('0x40')]));}}catch(_0xc609ae){utils[_0x9b44('0x1e')](util[_0x9b44('0x9')](_0x9b44('0x3e'),_0xd5ac1f[_0x9b44('0x5')]),_0xc609ae);}};exports[_0x9b44('0x41')]=function(_0x12dc0a){try{if(!_[_0x9b44('0x20')](channels[_0x12dc0a[_0x9b44('0x5')]])){utils[_0x9b44('0x18')](util[_0x9b44('0x9')]('[%s][calls][musiconholdstop]',_0x12dc0a[_0x9b44('0x5')]),_0x12dc0a);if(!_[_0x9b44('0x20')](channels[_0x12dc0a[_0x9b44('0x5')]]['musiconholdstartAt'])){channels[_0x12dc0a[_0x9b44('0x5')]]['mohtime']+=utils[_0x9b44('0x33')](utils['now'](),channels[_0x12dc0a['uniqueid']]['musiconholdstartAt']);utils[_0x9b44('0x8')](util[_0x9b44('0x9')]('[%s][calls][musiconholdstop]\x20mohtime:%s',_0x12dc0a[_0x9b44('0x5')],channels[_0x12dc0a[_0x9b44('0x5')]][_0x9b44('0x42')]));delete channels[_0x12dc0a['uniqueid']]['musiconholdstartAt'];}}}catch(_0x49155c){utils['error'](util[_0x9b44('0x9')]('[%s][calls][musiconholdstop]',_0x12dc0a[_0x9b44('0x5')]),_0x49155c);}};exports[_0x9b44('0x43')]=function(_0x39931b){try{if(!_['isNil'](channels[_0x39931b[_0x9b44('0x5')]])){utils[_0x9b44('0x18')](util[_0x9b44('0x9')](_0x9b44('0x44'),_0x39931b[_0x9b44('0x5')]),_0x39931b);if(!_[_0x9b44('0x20')](_0x39931b[_0x9b44('0x45')][_0x9b44('0x46')])){utils[_0x9b44('0x8')](util['format'](_0x9b44('0x47'),_0x39931b[_0x9b44('0x5')],_0x39931b['value']));channels[_0x39931b[_0x9b44('0x5')]]['source']=_0x39931b[_0x9b44('0x48')];}if(!_['isNil'](_0x39931b['variable'][_0x9b44('0x49')])){utils[_0x9b44('0x8')](util[_0x9b44('0x9')](_0x9b44('0x4a'),_0x39931b[_0x9b44('0x5')],_0x39931b['value']));channels[_0x39931b[_0x9b44('0x5')]][_0x9b44('0x4b')]=_0x39931b[_0x9b44('0x48')];channels[_0x39931b[_0x9b44('0x5')]][_0x9b44('0x2d')]='\x22'+_0x39931b[_0x9b44('0x48')]+_0x9b44('0x4c')+_0x39931b[_0x9b44('0x48')]+'>';}if(!_['isNil'](_0x39931b[_0x9b44('0x45')][_0x9b44('0x4d')])||!_[_0x9b44('0x20')](_0x39931b[_0x9b44('0x45')]['xmd-callerid'])){utils[_0x9b44('0x8')](util[_0x9b44('0x9')](_0x9b44('0x4e'),_0x39931b['uniqueid'],!_[_0x9b44('0x20')](_0x39931b[_0x9b44('0x45')][_0x9b44('0x4d')])?_0x9b44('0x4d'):_0x9b44('0x4f'),_0x39931b[_0x9b44('0x48')]));channels[_0x39931b['uniqueid']][_0x9b44('0x2d')]=_0x39931b[_0x9b44('0x48')];}if(!_['isNil'](_0x39931b['variable']['xmd-queue'])||!_[_0x9b44('0x20')](_0x39931b[_0x9b44('0x45')][_0x9b44('0x50')])){utils[_0x9b44('0x8')](util[_0x9b44('0x9')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x39931b['uniqueid'],!_['isNil'](_0x39931b['variable'][_0x9b44('0x51')])?_0x9b44('0x51'):_0x9b44('0x50'),_0x39931b[_0x9b44('0x48')]));channels[_0x39931b['uniqueid']][_0x9b44('0x52')]=_0x9b44('0x53');channels[_0x39931b[_0x9b44('0x5')]][_0x9b44('0x54')]=_0x39931b[_0x9b44('0x48')];channels[_0x39931b[_0x9b44('0x5')]]['queue']=!![];}if(!_[_0x9b44('0x20')](_0x39931b[_0x9b44('0x45')][_0x9b44('0x55')])){utils[_0x9b44('0x8')](util[_0x9b44('0x9')](_0x9b44('0x56'),_0x39931b[_0x9b44('0x5')],_0x39931b[_0x9b44('0x48')]));channels[_0x39931b[_0x9b44('0x5')]]['ContactId']=_0x39931b['value'];}if(!_[_0x9b44('0x20')](_0x39931b[_0x9b44('0x45')][_0x9b44('0x57')])){utils[_0x9b44('0x8')](util[_0x9b44('0x9')](_0x9b44('0x58'),_0x39931b[_0x9b44('0x5')],_0x39931b[_0x9b44('0x48')]));channels[_0x39931b[_0x9b44('0x5')]]['type']=_0x39931b[_0x9b44('0x48')];}if(!_[_0x9b44('0x20')](_0x39931b[_0x9b44('0x45')]['outboundrouteid'])){utils[_0x9b44('0x8')](util[_0x9b44('0x9')](_0x9b44('0x59'),_0x39931b[_0x9b44('0x5')],_0x39931b[_0x9b44('0x48')]));channels[_0x39931b[_0x9b44('0x5')]][_0x9b44('0x5a')]=_0x39931b[_0x9b44('0x48')];}if(!_[_0x9b44('0x20')](_0x39931b[_0x9b44('0x45')][_0x9b44('0x5b')])){utils[_0x9b44('0x8')](util['format'](_0x9b44('0x5c'),_0x39931b['uniqueid'],_0x39931b[_0x9b44('0x48')]));channels[_0x39931b[_0x9b44('0x5')]][_0x9b44('0x5b')]=_0x39931b[_0x9b44('0x48')];}}}catch(_0x2c2692){utils[_0x9b44('0x1e')](util['format'](_0x9b44('0x44'),_0x39931b[_0x9b44('0x5')]),_0x2c2692);}};exports[_0x9b44('0x5d')]=function(_0x2234c3){try{if(!_[_0x9b44('0x20')](channels[_0x2234c3[_0x9b44('0x5')]])){utils[_0x9b44('0x18')](util[_0x9b44('0x9')](_0x9b44('0x5e'),_0x2234c3[_0x9b44('0x5')]),_0x2234c3);utils[_0x9b44('0x8')](util[_0x9b44('0x9')]('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x2234c3[_0x9b44('0x5')],_0x2234c3[_0x9b44('0x5f')],_0x2234c3[_0x9b44('0x60')]));if(_0x2234c3[_0x9b44('0x5f')]['toLowerCase']()==_0x9b44('0x61')&&_[_0x9b44('0x62')](_0x2234c3[_0x9b44('0x60')][_0x9b44('0x63')](),_0x9b44('0x64'))){var _0x69dcca=_0x2234c3[_0x9b44('0x60')]['split']('=');var _0x43ebc9=_0x69dcca[0x0][_0x9b44('0x65')](_0x69dcca[0x0][_0x9b44('0x66')]('(')+0x1,_0x69dcca[0x0][_0x9b44('0x66')](')'));var _0x2af198=_0x69dcca[0x1];channels[_0x2234c3[_0x9b44('0x5')]][_0x43ebc9]=_0x2af198;}if(!_[_0x9b44('0x67')]([_0x9b44('0x68'),_0x9b44('0x69'),_0x9b44('0x6a'),'set',_0x9b44('0x6b')],_0x2234c3[_0x9b44('0x5f')]['toLowerCase']())){channels[_0x2234c3['uniqueid']]['lastapplication']=_0x2234c3[_0x9b44('0x5f')];channels[_0x2234c3[_0x9b44('0x5')]][_0x9b44('0x54')]=_0x2234c3[_0x9b44('0x60')];}}}catch(_0x7520e0){utils[_0x9b44('0x1e')](util[_0x9b44('0x9')](_0x9b44('0x5e'),_0x2234c3['uniqueid']),_0x7520e0);}};
\ No newline at end of file
index 9840748..ba6adbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93a8=['shutdown','[core]\x20shutdown','fullybooted','[core]\x20fullybooted','error','[core]\x20error','[core]\x20close','connect','info'];(function(_0x534fb9,_0x466466){var _0x57d679=function(_0x3ae759){while(--_0x3ae759){_0x534fb9['push'](_0x534fb9['shift']());}};_0x57d679(++_0x466466);}(_0x93a8,0x6a));var _0x893a=function(_0x60db55,_0x4dc1e7){_0x60db55=_0x60db55-0x0;var _0x21842d=_0x93a8[_0x60db55];return _0x21842d;};'use strict';var utils=require('./utils');exports[_0x893a('0x0')]=function(){utils[_0x893a('0x1')]('[core]\x20connected');};exports[_0x893a('0x2')]=function(){utils[_0x893a('0x1')](_0x893a('0x3'));};exports[_0x893a('0x4')]=function(){utils[_0x893a('0x1')](_0x893a('0x5'));};exports['error']=function(_0x2dfb6d){utils[_0x893a('0x6')](_0x893a('0x7'),_0x2dfb6d);};exports['close']=function(){utils[_0x893a('0x1')](_0x893a('0x8'));};exports['managerevent']=function(_0x2348e3){};
\ No newline at end of file
+var _0x4389=['./utils','connect','info','[core]\x20connected','shutdown','fullybooted','[core]\x20fullybooted','error','[core]\x20error','close','managerevent'];(function(_0x5f365a,_0x5da547){var _0x276814=function(_0x3a74f0){while(--_0x3a74f0){_0x5f365a['push'](_0x5f365a['shift']());}};_0x276814(++_0x5da547);}(_0x4389,0xfd));var _0x9438=function(_0x145a51,_0x3a9647){_0x145a51=_0x145a51-0x0;var _0x44bf14=_0x4389[_0x145a51];return _0x44bf14;};'use strict';var utils=require(_0x9438('0x0'));exports[_0x9438('0x1')]=function(){utils[_0x9438('0x2')](_0x9438('0x3'));};exports[_0x9438('0x4')]=function(){utils[_0x9438('0x2')]('[core]\x20shutdown');};exports[_0x9438('0x5')]=function(){utils['info'](_0x9438('0x6'));};exports[_0x9438('0x7')]=function(_0x13d5a5){utils['error'](_0x9438('0x8'),_0x13d5a5);};exports[_0x9438('0x9')]=function(){utils[_0x9438('0x2')]('[core]\x20close');};exports[_0x9438('0xa')]=function(_0x2016b6){};
\ No newline at end of file
index 41fdfbd..ec0ba8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93e8=['[%s][dials][newexten]','info','format','[%s][dials][newexten]\x20application:%s\x20appdata:%s','toLowerCase','set','startsWith','appdata','split','error','[%s][dials][varset]','outboundrouteid','value','dialbegin','isNil','[%s][dials][dialbegin]','assign','starttime','now','lastevent','[%s][dials][dialend]','dialstatus','ANSWER','answertime','[%s][dials][dialend]\x20dialstatus:%s','hangup','calleridname','cause-txt','complete','duration','diffTime','holdtime','endtime','util','./utils','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','dialstring','calleridnum','request','CreateVoiceDialReport','newexten','debug'];(function(_0x2c92ae,_0x226850){var _0x2486e3=function(_0x34abef){while(--_0x34abef){_0x2c92ae['push'](_0x2c92ae['shift']());}};_0x2486e3(++_0x226850);}(_0x93e8,0x1a4));var _0x893e=function(_0x50007c,_0x1cbf11){_0x50007c=_0x50007c-0x0;var _0x5c1ec7=_0x93e8[_0x50007c];return _0x5c1ec7;};'use strict';var _=require('lodash');var util=require(_0x893e('0x0'));var utils=require(_0x893e('0x1'));var dials={};function writeDB(_0x9fd06b){utils['info'](util['format'](_0x893e('0x2'),_0x9fd06b[_0x893e('0x3')],_0x9fd06b['channel'],_0x9fd06b[_0x893e('0x4')],_0x9fd06b[_0x893e('0x5')],_0x9fd06b['connectedlinenum'],_0x9fd06b['dialstatus']));utils[_0x893e('0x6')](_0x893e('0x7'),_0x9fd06b);delete dials[_0x9fd06b[_0x893e('0x3')]];}exports[_0x893e('0x8')]=function(_0x6ceb54){try{utils[_0x893e('0x9')](util['format'](_0x893e('0xa'),_0x6ceb54[_0x893e('0x3')]),_0x6ceb54);utils[_0x893e('0xb')](util[_0x893e('0xc')](_0x893e('0xd'),_0x6ceb54[_0x893e('0x3')],_0x6ceb54['application'],_0x6ceb54['appdata']));if(_0x6ceb54['application'][_0x893e('0xe')]()==_0x893e('0xf')&&_[_0x893e('0x10')](_0x6ceb54['appdata'][_0x893e('0xe')](),'cdr(routeid)')){var _0x386430=_0x6ceb54[_0x893e('0x11')][_0x893e('0x12')]('=');dials[_0x6ceb54['uniqueid']]={'routeId':_0x386430[0x1]};}}catch(_0x1a8eba){utils[_0x893e('0x13')](util['format'](_0x893e('0xa'),_0x6ceb54[_0x893e('0x3')]),_0x1a8eba);}};exports['varset']=function(_0x37aaef){try{utils[_0x893e('0x9')](util[_0x893e('0xc')](_0x893e('0x14'),_0x37aaef[_0x893e('0x3')]),_0x37aaef);if(!_['isNil'](_0x37aaef['variable'][_0x893e('0x15')])){utils[_0x893e('0xb')](util[_0x893e('0xc')]('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x37aaef[_0x893e('0x3')],_0x37aaef[_0x893e('0x16')]));dials[_0x37aaef[_0x893e('0x3')]]={'routeId':_0x37aaef['value']};}}catch(_0x4654a4){utils[_0x893e('0x13')](util['format'](_0x893e('0x14'),_0x37aaef['uniqueid']),_0x4654a4);}};exports[_0x893e('0x17')]=function(_0x5b7a92){try{if(!_[_0x893e('0x18')](dials[_0x5b7a92[_0x893e('0x3')]])){utils[_0x893e('0x9')](util[_0x893e('0xc')](_0x893e('0x19'),_0x5b7a92[_0x893e('0x3')]),_0x5b7a92);dials[_0x5b7a92[_0x893e('0x3')]]=_[_0x893e('0x1a')](dials[_0x5b7a92[_0x893e('0x3')]],_0x5b7a92);dials[_0x5b7a92[_0x893e('0x3')]][_0x893e('0x1b')]=utils[_0x893e('0x1c')]();dials[_0x5b7a92['uniqueid']][_0x893e('0x1d')]='called';utils[_0x893e('0xb')](util[_0x893e('0xc')]('[%s][dials][hangup]\x20starttime:%s\x20lastevent:called',_0x5b7a92[_0x893e('0x3')],dials[_0x5b7a92[_0x893e('0x3')]]['starttime']));}}catch(_0x2952f5){utils[_0x893e('0x13')](util['format']('[%s][dials][dialbegin]',_0x5b7a92[_0x893e('0x3')]),_0x2952f5);}};exports['dialend']=function(_0x1322fa){try{if(!_[_0x893e('0x18')](dials[_0x1322fa['uniqueid']])){utils['debug'](util[_0x893e('0xc')](_0x893e('0x1e'),_0x1322fa[_0x893e('0x3')]),_0x1322fa);dials[_0x1322fa[_0x893e('0x3')]][_0x893e('0x1f')]=_0x1322fa['dialstatus'];if(_0x1322fa[_0x893e('0x1f')]==_0x893e('0x20')){dials[_0x1322fa['uniqueid']]=_[_0x893e('0x1a')](dials[_0x1322fa[_0x893e('0x3')]],_0x1322fa);dials[_0x1322fa[_0x893e('0x3')]][_0x893e('0x21')]=utils[_0x893e('0x1c')]();dials[_0x1322fa['uniqueid']]['lastevent']='connect';utils['info'](util[_0x893e('0xc')]('[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect',_0x1322fa[_0x893e('0x3')],_0x1322fa[_0x893e('0x1f')],dials[_0x1322fa[_0x893e('0x3')]]['answertime']));}else{utils[_0x893e('0xb')](util[_0x893e('0xc')](_0x893e('0x22'),_0x1322fa[_0x893e('0x3')],_0x1322fa[_0x893e('0x1f')]));}}}catch(_0x498af7){utils[_0x893e('0x13')](util[_0x893e('0xc')](_0x893e('0x1e'),_0x1322fa[_0x893e('0x3')]),_0x498af7);}};exports[_0x893e('0x23')]=function(_0x40a586){try{if(!_[_0x893e('0x18')](dials[_0x40a586[_0x893e('0x3')]])){utils['debug'](util[_0x893e('0xc')]('[%s][dials][hangup]',_0x40a586[_0x893e('0x3')]),_0x40a586);utils['info'](util['format']('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x40a586[_0x893e('0x3')],_0x40a586[_0x893e('0x5')],_0x40a586[_0x893e('0x24')],_0x40a586[_0x893e('0x25')]));dials[_0x40a586[_0x893e('0x3')]]=_[_0x893e('0x1a')](dials[_0x40a586[_0x893e('0x3')]],{'endtime':utils[_0x893e('0x1c')](),'lastevent':_0x893e('0x26')});dials[_0x40a586[_0x893e('0x3')]][_0x893e('0x27')]=utils[_0x893e('0x28')](dials[_0x40a586['uniqueid']]['endtime'],dials[_0x40a586['uniqueid']][_0x893e('0x1b')]);dials[_0x40a586[_0x893e('0x3')]][_0x893e('0x29')]=utils['diffTime'](dials[_0x40a586[_0x893e('0x3')]][_0x893e('0x21')]||dials[_0x40a586[_0x893e('0x3')]]['endtime'],dials[_0x40a586[_0x893e('0x3')]][_0x893e('0x1b')]);dials[_0x40a586[_0x893e('0x3')]]['billableseconds']=dials[_0x40a586[_0x893e('0x3')]][_0x893e('0x21')]?utils[_0x893e('0x28')](dials[_0x40a586[_0x893e('0x3')]][_0x893e('0x2a')],dials[_0x40a586[_0x893e('0x3')]][_0x893e('0x21')]):0x0;writeDB(dials[_0x40a586[_0x893e('0x3')]]);}}catch(_0x4750fd){utils[_0x893e('0x13')](util[_0x893e('0xc')]('[%s][dials][hangup]',_0x40a586[_0x893e('0x3')]),_0x4750fd);}};
\ No newline at end of file
+var _0x1436=['now','called','[%s][dials][dialbegin]','dialend','ANSWER','answertime','lastevent','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','[%s][dials][dialend]','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridnum','calleridname','cause-txt','duration','starttime','diffTime','endtime','billableseconds','lodash','./utils','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','connectedlinenum','dialstatus','request','CreateVoiceDialReport','newexten','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','cdr(routeid)','error','[%s][dials][newexten]','debug','isNil','variable','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','[%s][dials][varset]','assign'];(function(_0x666df1,_0x2a4b08){var _0x552c3e=function(_0x33dea3){while(--_0x33dea3){_0x666df1['push'](_0x666df1['shift']());}};_0x552c3e(++_0x2a4b08);}(_0x1436,0xa4));var _0x6143=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x1436[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x6143('0x0'));var util=require('util');var utils=require(_0x6143('0x1'));var dials={};function writeDB(_0x1ed24d){utils[_0x6143('0x2')](util[_0x6143('0x3')](_0x6143('0x4'),_0x1ed24d[_0x6143('0x5')],_0x1ed24d[_0x6143('0x6')],_0x1ed24d[_0x6143('0x7')],_0x1ed24d['calleridnum'],_0x1ed24d[_0x6143('0x8')],_0x1ed24d[_0x6143('0x9')]));utils[_0x6143('0xa')](_0x6143('0xb'),_0x1ed24d);delete dials[_0x1ed24d[_0x6143('0x5')]];}exports[_0x6143('0xc')]=function(_0x5c1174){try{utils['debug'](util[_0x6143('0x3')]('[%s][dials][newexten]',_0x5c1174[_0x6143('0x5')]),_0x5c1174);utils[_0x6143('0x2')](util[_0x6143('0x3')](_0x6143('0xd'),_0x5c1174['uniqueid'],_0x5c1174[_0x6143('0xe')],_0x5c1174[_0x6143('0xf')]));if(_0x5c1174['application'][_0x6143('0x10')]()==_0x6143('0x11')&&_['startsWith'](_0x5c1174['appdata'][_0x6143('0x10')](),_0x6143('0x12'))){var _0x2aa979=_0x5c1174[_0x6143('0xf')]['split']('=');dials[_0x5c1174[_0x6143('0x5')]]={'routeId':_0x2aa979[0x1]};}}catch(_0x543668){utils[_0x6143('0x13')](util[_0x6143('0x3')](_0x6143('0x14'),_0x5c1174[_0x6143('0x5')]),_0x543668);}};exports['varset']=function(_0x4e8e6f){try{utils[_0x6143('0x15')](util['format']('[%s][dials][varset]',_0x4e8e6f[_0x6143('0x5')]),_0x4e8e6f);if(!_[_0x6143('0x16')](_0x4e8e6f[_0x6143('0x17')]['outboundrouteid'])){utils[_0x6143('0x2')](util[_0x6143('0x3')](_0x6143('0x18'),_0x4e8e6f[_0x6143('0x5')],_0x4e8e6f[_0x6143('0x19')]));dials[_0x4e8e6f[_0x6143('0x5')]]={'routeId':_0x4e8e6f[_0x6143('0x19')]};}}catch(_0x134cb9){utils['error'](util[_0x6143('0x3')](_0x6143('0x1a'),_0x4e8e6f[_0x6143('0x5')]),_0x134cb9);}};exports['dialbegin']=function(_0xae27b6){try{if(!_[_0x6143('0x16')](dials[_0xae27b6[_0x6143('0x5')]])){utils[_0x6143('0x15')](util[_0x6143('0x3')]('[%s][dials][dialbegin]',_0xae27b6[_0x6143('0x5')]),_0xae27b6);dials[_0xae27b6['uniqueid']]=_[_0x6143('0x1b')](dials[_0xae27b6[_0x6143('0x5')]],_0xae27b6);dials[_0xae27b6[_0x6143('0x5')]]['starttime']=utils[_0x6143('0x1c')]();dials[_0xae27b6[_0x6143('0x5')]]['lastevent']=_0x6143('0x1d');utils[_0x6143('0x2')](util[_0x6143('0x3')]('[%s][dials][hangup]\x20starttime:%s\x20lastevent:called',_0xae27b6[_0x6143('0x5')],dials[_0xae27b6['uniqueid']]['starttime']));}}catch(_0x5473fc){utils[_0x6143('0x13')](util['format'](_0x6143('0x1e'),_0xae27b6[_0x6143('0x5')]),_0x5473fc);}};exports[_0x6143('0x1f')]=function(_0x225ac1){try{if(!_[_0x6143('0x16')](dials[_0x225ac1[_0x6143('0x5')]])){utils[_0x6143('0x15')](util[_0x6143('0x3')]('[%s][dials][dialend]',_0x225ac1[_0x6143('0x5')]),_0x225ac1);dials[_0x225ac1[_0x6143('0x5')]][_0x6143('0x9')]=_0x225ac1[_0x6143('0x9')];if(_0x225ac1[_0x6143('0x9')]==_0x6143('0x20')){dials[_0x225ac1[_0x6143('0x5')]]=_[_0x6143('0x1b')](dials[_0x225ac1[_0x6143('0x5')]],_0x225ac1);dials[_0x225ac1[_0x6143('0x5')]][_0x6143('0x21')]=utils[_0x6143('0x1c')]();dials[_0x225ac1['uniqueid']][_0x6143('0x22')]='connect';utils[_0x6143('0x2')](util[_0x6143('0x3')](_0x6143('0x23'),_0x225ac1[_0x6143('0x5')],_0x225ac1[_0x6143('0x9')],dials[_0x225ac1[_0x6143('0x5')]][_0x6143('0x21')]));}else{utils[_0x6143('0x2')](util[_0x6143('0x3')](_0x6143('0x24'),_0x225ac1[_0x6143('0x5')],_0x225ac1[_0x6143('0x9')]));}}}catch(_0x3f3c62){utils['error'](util[_0x6143('0x3')](_0x6143('0x25'),_0x225ac1[_0x6143('0x5')]),_0x3f3c62);}};exports['hangup']=function(_0x50e5e1){try{if(!_[_0x6143('0x16')](dials[_0x50e5e1[_0x6143('0x5')]])){utils[_0x6143('0x15')](util[_0x6143('0x3')](_0x6143('0x26'),_0x50e5e1[_0x6143('0x5')]),_0x50e5e1);utils[_0x6143('0x2')](util[_0x6143('0x3')](_0x6143('0x27'),_0x50e5e1['uniqueid'],_0x50e5e1[_0x6143('0x28')],_0x50e5e1[_0x6143('0x29')],_0x50e5e1[_0x6143('0x2a')]));dials[_0x50e5e1['uniqueid']]=_[_0x6143('0x1b')](dials[_0x50e5e1[_0x6143('0x5')]],{'endtime':utils[_0x6143('0x1c')](),'lastevent':'complete'});dials[_0x50e5e1['uniqueid']][_0x6143('0x2b')]=utils['diffTime'](dials[_0x50e5e1['uniqueid']]['endtime'],dials[_0x50e5e1['uniqueid']][_0x6143('0x2c')]);dials[_0x50e5e1[_0x6143('0x5')]]['holdtime']=utils[_0x6143('0x2d')](dials[_0x50e5e1[_0x6143('0x5')]][_0x6143('0x21')]||dials[_0x50e5e1[_0x6143('0x5')]][_0x6143('0x2e')],dials[_0x50e5e1[_0x6143('0x5')]][_0x6143('0x2c')]);dials[_0x50e5e1[_0x6143('0x5')]][_0x6143('0x2f')]=dials[_0x50e5e1[_0x6143('0x5')]][_0x6143('0x21')]?utils['diffTime'](dials[_0x50e5e1[_0x6143('0x5')]][_0x6143('0x2e')],dials[_0x50e5e1[_0x6143('0x5')]]['answertime']):0x0;writeDB(dials[_0x50e5e1[_0x6143('0x5')]]);}}catch(_0x3cc86e){utils['error'](util[_0x6143('0x3')](_0x6143('0x26'),_0x50e5e1[_0x6143('0x5')]),_0x3cc86e);}};
\ No newline at end of file
index 40d6313..1499dff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2f3=['disabled','XDR\x20DISABLED','./agents.controller','./calls.controller','./queues.controller','./recordings.controller','./members.controller','./dials.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','device','format','[%s][index][devicestatechange]','agentcalled','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][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]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','[%s][index][blindtransfer]','blindtransfer','attendedtransfer','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','[%s][index][dialbegin]','dialbegin','[%s]dialbegin','dialend','[%s][index][dialend]','../../config/environment','./utils','port','asterisk','username','password','xdr'];(function(_0xdecd33,_0x574f59){var _0x4d0988=function(_0x1d7b3a){while(--_0x1d7b3a){_0xdecd33['push'](_0xdecd33['shift']());}};_0x4d0988(++_0x574f59);}(_0xc2f3,0xbf));var _0x3c2f=function(_0x5e2b04,_0x928035){_0x5e2b04=_0x5e2b04-0x0;var _0x448dcc=_0xc2f3[_0x5e2b04];return _0x448dcc;};var AsteriskManager=require('asterisk-manager');var config=require(_0x3c2f('0x0'));var utils=require(_0x3c2f('0x1'));var util=require('util');var ami=new AsteriskManager(config['asterisk'][_0x3c2f('0x2')],config[_0x3c2f('0x3')]['ip'],config[_0x3c2f('0x3')][_0x3c2f('0x4')],config[_0x3c2f('0x3')][_0x3c2f('0x5')],!![]);ami['keepConnected']();if(config[_0x3c2f('0x6')]&&config[_0x3c2f('0x6')][_0x3c2f('0x7')]){utils['info'](_0x3c2f('0x8'));}else{var agents=require(_0x3c2f('0x9'));var calls=require(_0x3c2f('0xa'));var queues=require(_0x3c2f('0xb'));var recordings=require(_0x3c2f('0xc'));var members=require(_0x3c2f('0xd'));var dials=require(_0x3c2f('0xe'));var transfers=require('./transfers.controller');var core=require(_0x3c2f('0xf'));ami['on'](_0x3c2f('0x10'),core[_0x3c2f('0x10')]);ami['on']('shutdown',core[_0x3c2f('0x11')]);ami['on'](_0x3c2f('0x12'),core[_0x3c2f('0x12')]);ami['on'](_0x3c2f('0x13'),core[_0x3c2f('0x13')]);ami['on'](_0x3c2f('0x14'),core[_0x3c2f('0x14')]);ami['on'](_0x3c2f('0x15'),core['managerevent']);ami['on'](_0x3c2f('0x16'),function(_0x34c597){try{utils[_0x3c2f('0x17')](util['format']('[%s][index][devicestatechange]',_0x34c597[_0x3c2f('0x18')]),_0x34c597);members[_0x3c2f('0x16')](_0x34c597);}catch(_0x183ae4){utils['error'](util[_0x3c2f('0x19')](_0x3c2f('0x1a'),_0x34c597[_0x3c2f('0x18')]),_0x183ae4);}});ami['on'](_0x3c2f('0x1b'),function(_0x4a7541){try{utils[_0x3c2f('0x17')](util['format']('[%s][index][agentcalled]',_0x4a7541['uniqueid']),_0x4a7541);agents['agentcalled'](_0x4a7541);}catch(_0x4f3d86){utils[_0x3c2f('0x13')](util[_0x3c2f('0x19')]('[%s][index][agentcalled]',_0x4a7541[_0x3c2f('0x1c')]),_0x4f3d86);}});ami['on'](_0x3c2f('0x1d'),function(_0x1fafa6){try{utils['debug'](util[_0x3c2f('0x19')](_0x3c2f('0x1e'),_0x1fafa6['uniqueid']),_0x1fafa6);agents[_0x3c2f('0x1d')](_0x1fafa6);}catch(_0x12246f){utils[_0x3c2f('0x13')](util[_0x3c2f('0x19')](_0x3c2f('0x1e'),_0x1fafa6[_0x3c2f('0x1c')]),_0x12246f);}});ami['on']('agentconnect',function(_0x48e03d){try{utils['debug'](util[_0x3c2f('0x19')]('[%s][index][agentconnect]',_0x48e03d[_0x3c2f('0x1c')]),_0x48e03d);agents[_0x3c2f('0x1f')](_0x48e03d);queues[_0x3c2f('0x1f')](_0x48e03d);}catch(_0x23dd54){utils[_0x3c2f('0x13')](util['format'](_0x3c2f('0x20'),_0x48e03d['uniqueid']),_0x23dd54);}});ami['on'](_0x3c2f('0x21'),function(_0x4b8332){try{utils[_0x3c2f('0x17')](util['format'](_0x3c2f('0x22'),_0x4b8332[_0x3c2f('0x1c')]),_0x4b8332);agents[_0x3c2f('0x21')](_0x4b8332);queues[_0x3c2f('0x21')](_0x4b8332);members[_0x3c2f('0x21')](_0x4b8332);}catch(_0xd23105){utils[_0x3c2f('0x13')](util[_0x3c2f('0x19')](_0x3c2f('0x22'),_0x4b8332['uniqueid']),_0xd23105);}});ami['on'](_0x3c2f('0x23'),function(_0x1bb71e){try{utils['debug'](util[_0x3c2f('0x19')](_0x3c2f('0x24'),_0x1bb71e[_0x3c2f('0x1c')]),_0x1bb71e);agents[_0x3c2f('0x23')](_0x1bb71e);queues[_0x3c2f('0x23')](_0x1bb71e);}catch(_0x5c8106){utils[_0x3c2f('0x13')](util[_0x3c2f('0x19')](_0x3c2f('0x24'),_0x1bb71e[_0x3c2f('0x1c')]),_0x5c8106);}});ami['on'](_0x3c2f('0x25'),function(_0x2117b9){try{utils['debug'](util[_0x3c2f('0x19')]('[%s][index][queuecallerjoin]',_0x2117b9[_0x3c2f('0x1c')]),_0x2117b9);queues[_0x3c2f('0x25')](_0x2117b9);recordings[_0x3c2f('0x25')](_0x2117b9);}catch(_0x174535){utils[_0x3c2f('0x13')](util['format'](_0x3c2f('0x26'),_0x2117b9[_0x3c2f('0x1c')]),_0x174535);}});ami['on'](_0x3c2f('0x27'),function(_0x160d75){try{utils[_0x3c2f('0x17')](util['format'](_0x3c2f('0x28'),_0x160d75[_0x3c2f('0x1c')]),_0x160d75);queues[_0x3c2f('0x27')](_0x160d75);}catch(_0x5148e2){utils[_0x3c2f('0x13')](util[_0x3c2f('0x19')](_0x3c2f('0x28'),_0x160d75[_0x3c2f('0x1c')]),_0x5148e2);}});ami['on'](_0x3c2f('0x29'),function(_0x38bc2f){try{utils[_0x3c2f('0x17')](util[_0x3c2f('0x19')](_0x3c2f('0x2a'),_0x38bc2f['uniqueid']),_0x38bc2f);queues[_0x3c2f('0x29')](_0x38bc2f);calls['musiconholdstart'](_0x38bc2f);}catch(_0x41af4c){utils[_0x3c2f('0x13')](util['format'](_0x3c2f('0x2a'),_0x38bc2f[_0x3c2f('0x1c')]),_0x41af4c);}});ami['on'](_0x3c2f('0x2b'),function(_0x36a3eb){try{utils[_0x3c2f('0x17')](util[_0x3c2f('0x19')](_0x3c2f('0x2c'),_0x36a3eb[_0x3c2f('0x1c')]),_0x36a3eb);queues['musiconholdstop'](_0x36a3eb);calls[_0x3c2f('0x2b')](_0x36a3eb);}catch(_0x4842e1){utils[_0x3c2f('0x13')](util[_0x3c2f('0x19')](_0x3c2f('0x2c'),_0x36a3eb[_0x3c2f('0x1c')]),_0x4842e1);}});ami['on'](_0x3c2f('0x2d'),function(_0x3487f9){try{utils['debug'](util['format']('[%s][index][newstate]',_0x3487f9[_0x3c2f('0x1c')]),_0x3487f9);calls[_0x3c2f('0x2d')](_0x3487f9);recordings[_0x3c2f('0x2d')](_0x3487f9);}catch(_0x334c35){utils[_0x3c2f('0x13')](util[_0x3c2f('0x19')](_0x3c2f('0x2e'),_0x3487f9[_0x3c2f('0x1c')]),_0x334c35);}});ami['on'](_0x3c2f('0x2f'),function(_0xaf50bf){try{utils[_0x3c2f('0x17')](util[_0x3c2f('0x19')](_0x3c2f('0x30'),_0xaf50bf[_0x3c2f('0x1c')]),_0xaf50bf);calls[_0x3c2f('0x2f')](_0xaf50bf);recordings[_0x3c2f('0x2f')](_0xaf50bf);dials[_0x3c2f('0x2f')](_0xaf50bf);agents['hangup'](_0xaf50bf);queues[_0x3c2f('0x2f')](_0xaf50bf);}catch(_0x326e4d){utils[_0x3c2f('0x13')](util[_0x3c2f('0x19')](_0x3c2f('0x30'),_0xaf50bf[_0x3c2f('0x1c')]),_0x326e4d);}});ami['on'](_0x3c2f('0x31'),function(_0x32fa16){try{utils[_0x3c2f('0x17')](util[_0x3c2f('0x19')]('[%s][index][cdr]',_0x32fa16[_0x3c2f('0x1c')]),_0x32fa16);members[_0x3c2f('0x31')](_0x32fa16);}catch(_0x650712){utils[_0x3c2f('0x13')](util[_0x3c2f('0x19')](_0x3c2f('0x32'),_0x32fa16[_0x3c2f('0x1c')]),_0x650712);}});ami['on']('blindtransfer',function(_0x18da58){try{utils['debug'](util['format'](_0x3c2f('0x33'),_0x18da58[_0x3c2f('0x1c')]),_0x18da58);queues[_0x3c2f('0x34')](_0x18da58);agents['blindtransfer'](_0x18da58);transfers[_0x3c2f('0x34')](_0x18da58);}catch(_0x317f74){utils[_0x3c2f('0x13')](util[_0x3c2f('0x19')]('[%s][index][blindtransfer]',_0x18da58[_0x3c2f('0x1c')]),_0x317f74);}});ami['on'](_0x3c2f('0x35'),function(_0x1e9327){try{utils[_0x3c2f('0x17')](util['format']('[%s][index][attendedtransfer]',_0x1e9327[_0x3c2f('0x36')]),_0x1e9327);queues[_0x3c2f('0x35')](_0x1e9327);transfers['attendedtransfer'](_0x1e9327);agents[_0x3c2f('0x35')](_0x1e9327);calls[_0x3c2f('0x35')](_0x1e9327);}catch(_0x28e1b9){utils['error'](util[_0x3c2f('0x19')]('[%s][index][attendedtransfer]',_0x1e9327[_0x3c2f('0x36')]),_0x28e1b9);}});ami['on'](_0x3c2f('0x37'),function(_0x4ae3b4){try{utils[_0x3c2f('0x17')](util['format'](_0x3c2f('0x38'),_0x4ae3b4[_0x3c2f('0x1c')]),_0x4ae3b4);queues[_0x3c2f('0x37')](_0x4ae3b4);recordings[_0x3c2f('0x37')](_0x4ae3b4);calls[_0x3c2f('0x37')](_0x4ae3b4);dials[_0x3c2f('0x37')](_0x4ae3b4);}catch(_0x3918c9){utils[_0x3c2f('0x13')](util[_0x3c2f('0x19')](_0x3c2f('0x38'),_0x4ae3b4[_0x3c2f('0x1c')]),_0x3918c9);}});ami['on'](_0x3c2f('0x39'),function(_0x1fbea2){try{utils['debug'](util['format'](_0x3c2f('0x3a'),_0x1fbea2[_0x3c2f('0x1c')]),_0x1fbea2);calls[_0x3c2f('0x39')](_0x1fbea2);recordings['newexten'](_0x1fbea2);dials['newexten'](_0x1fbea2);}catch(_0x3f51af){utils[_0x3c2f('0x13')](util[_0x3c2f('0x19')](_0x3c2f('0x3a'),_0x1fbea2['uniqueid']),_0x3f51af);}});ami['on'](_0x3c2f('0x3b'),function(_0x135842){try{utils[_0x3c2f('0x17')](util[_0x3c2f('0x19')](_0x3c2f('0x3c'),_0x135842[_0x3c2f('0x1c')]),_0x135842);calls[_0x3c2f('0x3b')](_0x135842);recordings[_0x3c2f('0x3b')](_0x135842);}catch(_0x5848b5){utils[_0x3c2f('0x13')](util[_0x3c2f('0x19')]('[%s][index][newchannel]',_0x135842[_0x3c2f('0x1c')]),_0x5848b5);}});ami['on']('dialbegin',function(_0x3d190){try{utils['debug'](util[_0x3c2f('0x19')](_0x3c2f('0x3d'),_0x3d190['uniqueid']),_0x3d190);dials[_0x3c2f('0x3e')](_0x3d190);}catch(_0x5d2942){utils[_0x3c2f('0x13')](util[_0x3c2f('0x19')](_0x3c2f('0x3f'),_0x3d190[_0x3c2f('0x1c')]),_0x5d2942);}});ami['on'](_0x3c2f('0x40'),function(_0x4630c3){try{utils[_0x3c2f('0x17')](util['format']('[%s][index][dialend]',_0x4630c3[_0x3c2f('0x1c')]),_0x4630c3);dials[_0x3c2f('0x40')](_0x4630c3);}catch(_0x1e5d7a){utils[_0x3c2f('0x13')](util[_0x3c2f('0x19')](_0x3c2f('0x41'),_0x4630c3['uniqueid']),_0x1e5d7a);}});}
\ No newline at end of file
+var _0xe6ad=['device','devicestatechange','format','[%s][index][agentcalled]','uniqueid','agentcalled','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','agentcomplete','[%s][index][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]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','[%s][index][blindtransfer]','blindtransfer','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','[%s][index][newchannel]','newchannel','dialbegin','[%s][index][dialend]','asterisk-manager','./utils','util','asterisk','username','xdr','disabled','info','XDR\x20DISABLED','./agents.controller','./calls.controller','./members.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','debug','[%s][index][devicestatechange]'];(function(_0x154075,_0x8b3c38){var _0x3ea7ba=function(_0x78e624){while(--_0x78e624){_0x154075['push'](_0x154075['shift']());}};_0x3ea7ba(++_0x8b3c38);}(_0xe6ad,0x1da));var _0xde6a=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0xe6ad[_0x13d07a];return _0x5ee0ee;};var AsteriskManager=require(_0xde6a('0x0'));var config=require('../../config/environment');var utils=require(_0xde6a('0x1'));var util=require(_0xde6a('0x2'));var ami=new AsteriskManager(config[_0xde6a('0x3')]['port'],config[_0xde6a('0x3')]['ip'],config[_0xde6a('0x3')][_0xde6a('0x4')],config['asterisk']['password'],!![]);ami['keepConnected']();if(config[_0xde6a('0x5')]&&config[_0xde6a('0x5')][_0xde6a('0x6')]){utils[_0xde6a('0x7')](_0xde6a('0x8'));}else{var agents=require(_0xde6a('0x9'));var calls=require(_0xde6a('0xa'));var queues=require('./queues.controller');var recordings=require('./recordings.controller');var members=require(_0xde6a('0xb'));var dials=require('./dials.controller');var transfers=require(_0xde6a('0xc'));var core=require(_0xde6a('0xd'));ami['on']('connect',core[_0xde6a('0xe')]);ami['on'](_0xde6a('0xf'),core[_0xde6a('0xf')]);ami['on'](_0xde6a('0x10'),core[_0xde6a('0x10')]);ami['on'](_0xde6a('0x11'),core[_0xde6a('0x11')]);ami['on'](_0xde6a('0x12'),core[_0xde6a('0x12')]);ami['on'](_0xde6a('0x13'),core['managerevent']);ami['on']('devicestatechange',function(_0x153a35){try{utils[_0xde6a('0x14')](util['format'](_0xde6a('0x15'),_0x153a35[_0xde6a('0x16')]),_0x153a35);members[_0xde6a('0x17')](_0x153a35);}catch(_0x5d1377){utils[_0xde6a('0x11')](util['format'](_0xde6a('0x15'),_0x153a35['device']),_0x5d1377);}});ami['on']('agentcalled',function(_0x332c5c){try{utils[_0xde6a('0x14')](util[_0xde6a('0x18')](_0xde6a('0x19'),_0x332c5c[_0xde6a('0x1a')]),_0x332c5c);agents[_0xde6a('0x1b')](_0x332c5c);}catch(_0x49b0db){utils[_0xde6a('0x11')](util[_0xde6a('0x18')](_0xde6a('0x19'),_0x332c5c[_0xde6a('0x1a')]),_0x49b0db);}});ami['on'](_0xde6a('0x1c'),function(_0x3685ab){try{utils['debug'](util['format'](_0xde6a('0x1d'),_0x3685ab[_0xde6a('0x1a')]),_0x3685ab);agents[_0xde6a('0x1c')](_0x3685ab);}catch(_0x4393e3){utils[_0xde6a('0x11')](util[_0xde6a('0x18')](_0xde6a('0x1d'),_0x3685ab[_0xde6a('0x1a')]),_0x4393e3);}});ami['on'](_0xde6a('0x1e'),function(_0xf93cb9){try{utils[_0xde6a('0x14')](util[_0xde6a('0x18')]('[%s][index][agentconnect]',_0xf93cb9['uniqueid']),_0xf93cb9);agents[_0xde6a('0x1e')](_0xf93cb9);queues['agentconnect'](_0xf93cb9);}catch(_0x58375e){utils[_0xde6a('0x11')](util[_0xde6a('0x18')]('[%s][index][agentconnect]',_0xf93cb9['uniqueid']),_0x58375e);}});ami['on'](_0xde6a('0x1f'),function(_0x279a4c){try{utils[_0xde6a('0x14')](util['format'](_0xde6a('0x20'),_0x279a4c[_0xde6a('0x1a')]),_0x279a4c);agents[_0xde6a('0x1f')](_0x279a4c);queues[_0xde6a('0x1f')](_0x279a4c);members['agentcomplete'](_0x279a4c);}catch(_0x1889be){utils[_0xde6a('0x11')](util[_0xde6a('0x18')](_0xde6a('0x20'),_0x279a4c['uniqueid']),_0x1889be);}});ami['on'](_0xde6a('0x21'),function(_0x367945){try{utils['debug'](util[_0xde6a('0x18')](_0xde6a('0x22'),_0x367945[_0xde6a('0x1a')]),_0x367945);agents[_0xde6a('0x21')](_0x367945);queues[_0xde6a('0x21')](_0x367945);}catch(_0x4fd0ce){utils[_0xde6a('0x11')](util[_0xde6a('0x18')](_0xde6a('0x22'),_0x367945[_0xde6a('0x1a')]),_0x4fd0ce);}});ami['on'](_0xde6a('0x23'),function(_0x378f15){try{utils[_0xde6a('0x14')](util[_0xde6a('0x18')](_0xde6a('0x24'),_0x378f15['uniqueid']),_0x378f15);queues[_0xde6a('0x23')](_0x378f15);recordings['queuecallerjoin'](_0x378f15);}catch(_0x533345){utils[_0xde6a('0x11')](util[_0xde6a('0x18')]('[%s][index][queuecallerjoin]',_0x378f15[_0xde6a('0x1a')]),_0x533345);}});ami['on'](_0xde6a('0x25'),function(_0x55ef32){try{utils[_0xde6a('0x14')](util[_0xde6a('0x18')](_0xde6a('0x26'),_0x55ef32[_0xde6a('0x1a')]),_0x55ef32);queues['queuecallerleave'](_0x55ef32);}catch(_0x54aefd){utils[_0xde6a('0x11')](util[_0xde6a('0x18')](_0xde6a('0x26'),_0x55ef32[_0xde6a('0x1a')]),_0x54aefd);}});ami['on'](_0xde6a('0x27'),function(_0x4410cc){try{utils[_0xde6a('0x14')](util[_0xde6a('0x18')](_0xde6a('0x28'),_0x4410cc[_0xde6a('0x1a')]),_0x4410cc);queues[_0xde6a('0x27')](_0x4410cc);calls[_0xde6a('0x27')](_0x4410cc);}catch(_0x1359ab){utils['error'](util[_0xde6a('0x18')](_0xde6a('0x28'),_0x4410cc[_0xde6a('0x1a')]),_0x1359ab);}});ami['on'](_0xde6a('0x29'),function(_0x4caff6){try{utils[_0xde6a('0x14')](util[_0xde6a('0x18')](_0xde6a('0x2a'),_0x4caff6[_0xde6a('0x1a')]),_0x4caff6);queues[_0xde6a('0x29')](_0x4caff6);calls[_0xde6a('0x29')](_0x4caff6);}catch(_0x4c779c){utils['error'](util[_0xde6a('0x18')](_0xde6a('0x2a'),_0x4caff6[_0xde6a('0x1a')]),_0x4c779c);}});ami['on'](_0xde6a('0x2b'),function(_0x44db67){try{utils[_0xde6a('0x14')](util[_0xde6a('0x18')](_0xde6a('0x2c'),_0x44db67['uniqueid']),_0x44db67);calls[_0xde6a('0x2b')](_0x44db67);recordings[_0xde6a('0x2b')](_0x44db67);}catch(_0x3d358d){utils[_0xde6a('0x11')](util[_0xde6a('0x18')](_0xde6a('0x2c'),_0x44db67[_0xde6a('0x1a')]),_0x3d358d);}});ami['on'](_0xde6a('0x2d'),function(_0x42a983){try{utils[_0xde6a('0x14')](util[_0xde6a('0x18')]('[%s][index][hangup]',_0x42a983[_0xde6a('0x1a')]),_0x42a983);calls[_0xde6a('0x2d')](_0x42a983);recordings['hangup'](_0x42a983);dials[_0xde6a('0x2d')](_0x42a983);agents[_0xde6a('0x2d')](_0x42a983);queues[_0xde6a('0x2d')](_0x42a983);}catch(_0x7dad37){utils[_0xde6a('0x11')](util[_0xde6a('0x18')](_0xde6a('0x2e'),_0x42a983[_0xde6a('0x1a')]),_0x7dad37);}});ami['on'](_0xde6a('0x2f'),function(_0x51685e){try{utils[_0xde6a('0x14')](util['format'](_0xde6a('0x30'),_0x51685e[_0xde6a('0x1a')]),_0x51685e);members[_0xde6a('0x2f')](_0x51685e);}catch(_0x41a419){utils['error'](util[_0xde6a('0x18')](_0xde6a('0x30'),_0x51685e[_0xde6a('0x1a')]),_0x41a419);}});ami['on']('blindtransfer',function(_0x182b0d){try{utils[_0xde6a('0x14')](util['format'](_0xde6a('0x31'),_0x182b0d[_0xde6a('0x1a')]),_0x182b0d);queues['blindtransfer'](_0x182b0d);agents['blindtransfer'](_0x182b0d);transfers[_0xde6a('0x32')](_0x182b0d);}catch(_0x41d749){utils[_0xde6a('0x11')](util[_0xde6a('0x18')](_0xde6a('0x31'),_0x182b0d['uniqueid']),_0x41d749);}});ami['on'](_0xde6a('0x33'),function(_0x39affa){try{utils[_0xde6a('0x14')](util[_0xde6a('0x18')](_0xde6a('0x34'),_0x39affa[_0xde6a('0x35')]),_0x39affa);queues[_0xde6a('0x33')](_0x39affa);transfers[_0xde6a('0x33')](_0x39affa);agents[_0xde6a('0x33')](_0x39affa);calls[_0xde6a('0x33')](_0x39affa);}catch(_0x9407d8){utils[_0xde6a('0x11')](util[_0xde6a('0x18')](_0xde6a('0x34'),_0x39affa[_0xde6a('0x35')]),_0x9407d8);}});ami['on'](_0xde6a('0x36'),function(_0x44f5f2){try{utils[_0xde6a('0x14')](util[_0xde6a('0x18')](_0xde6a('0x37'),_0x44f5f2['uniqueid']),_0x44f5f2);queues[_0xde6a('0x36')](_0x44f5f2);recordings[_0xde6a('0x36')](_0x44f5f2);calls[_0xde6a('0x36')](_0x44f5f2);dials[_0xde6a('0x36')](_0x44f5f2);}catch(_0x11868c){utils['error'](util[_0xde6a('0x18')](_0xde6a('0x37'),_0x44f5f2[_0xde6a('0x1a')]),_0x11868c);}});ami['on'](_0xde6a('0x38'),function(_0x4e7bdb){try{utils[_0xde6a('0x14')](util[_0xde6a('0x18')](_0xde6a('0x39'),_0x4e7bdb[_0xde6a('0x1a')]),_0x4e7bdb);calls[_0xde6a('0x38')](_0x4e7bdb);recordings[_0xde6a('0x38')](_0x4e7bdb);dials['newexten'](_0x4e7bdb);}catch(_0x13066d){utils['error'](util[_0xde6a('0x18')](_0xde6a('0x39'),_0x4e7bdb[_0xde6a('0x1a')]),_0x13066d);}});ami['on']('newchannel',function(_0x593f17){try{utils[_0xde6a('0x14')](util[_0xde6a('0x18')](_0xde6a('0x3a'),_0x593f17['uniqueid']),_0x593f17);calls[_0xde6a('0x3b')](_0x593f17);recordings[_0xde6a('0x3b')](_0x593f17);}catch(_0x414a8d){utils['error'](util[_0xde6a('0x18')](_0xde6a('0x3a'),_0x593f17[_0xde6a('0x1a')]),_0x414a8d);}});ami['on'](_0xde6a('0x3c'),function(_0x3aac42){try{utils[_0xde6a('0x14')](util[_0xde6a('0x18')]('[%s][index][dialbegin]',_0x3aac42[_0xde6a('0x1a')]),_0x3aac42);dials[_0xde6a('0x3c')](_0x3aac42);}catch(_0x142c38){utils[_0xde6a('0x11')](util[_0xde6a('0x18')]('[%s]dialbegin',_0x3aac42['uniqueid']),_0x142c38);}});ami['on']('dialend',function(_0x3e9550){try{utils['debug'](util[_0xde6a('0x18')](_0xde6a('0x3d'),_0x3e9550[_0xde6a('0x1a')]),_0x3e9550);dials['dialend'](_0x3e9550);}catch(_0x724267){utils['error'](util['format'](_0xde6a('0x3d'),_0x3e9550['uniqueid']),_0x724267);}});}
\ No newline at end of file
index 0b880aa..f1dfe51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe023=['[%s][members][devicestatechange]\x20state:%s\x20interface:%s','uniqueid','state','TALKING','agent','NOT_INUSE','exitAt','now','diffTime','enterAt','agentcomplete','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','[%s][members][agentcomplete]','cdr','isNil','data1','source','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','assign','data3','[%s][members][cdr]','lodash','util','Local/_attended@transfer','Queue:','info','format','channel','data2','membername','type','getUserByInterface','then','internal','request','CreateMemberReport','getUserByName','interface','split','name','catch','error','[%s][members][writeDB]','some','startsWith','debug','device'];(function(_0x165462,_0x5e17b8){var _0x41a72e=function(_0x1a1cdd){while(--_0x1a1cdd){_0x165462['push'](_0x165462['shift']());}};_0x41a72e(++_0x5e17b8);}(_0xe023,0x1da));var _0x3e02=function(_0x302df0,_0x1dae73){_0x302df0=_0x302df0-0x0;var _0x5241dc=_0xe023[_0x302df0];return _0x5241dc;};'use strict';var _=require(_0x3e02('0x0'));var util=require(_0x3e02('0x1'));var utils=require('./utils');var members={};var exclude=[_0x3e02('0x2'),_0x3e02('0x3')];function writeDB(_0x316f92){utils[_0x3e02('0x4')](util[_0x3e02('0x5')]('[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s',_0x316f92['uniqueid'],_0x316f92['interface'],_0x316f92[_0x3e02('0x6')],_0x316f92[_0x3e02('0x7')],_0x316f92[_0x3e02('0x8')],_0x316f92[_0x3e02('0x9')]));if(_0x316f92['interface']){utils[_0x3e02('0xa')](_0x316f92['interface'])[_0x3e02('0xb')](function(_0x5f1165){if(_0x5f1165){_0x316f92['membername']=_0x5f1165['name'];_0x316f92[_0x3e02('0xc')]=_0x5f1165[_0x3e02('0xc')];utils[_0x3e02('0xd')](_0x3e02('0xe'),_0x316f92);}else{utils[_0x3e02('0xf')](_0x316f92[_0x3e02('0x10')][_0x3e02('0x11')]('/')[0x1])[_0x3e02('0xb')](function(_0x44abde){if(_0x44abde){_0x316f92[_0x3e02('0x8')]=_0x44abde[_0x3e02('0x12')];_0x316f92[_0x3e02('0xc')]=_0x44abde[_0x3e02('0xc')];utils[_0x3e02('0xd')](_0x3e02('0xe'),_0x316f92);}});}})[_0x3e02('0x13')](function(_0x307d8e){utils[_0x3e02('0x14')](util[_0x3e02('0x5')](_0x3e02('0x15'),_0x316f92['uniqueid']),_0x307d8e);});}delete members[_0x316f92[_0x3e02('0x10')]];}function startsWith(_0x5bad9c,_0xa83b8d){return _[_0x3e02('0x16')](_0x5bad9c,function(_0x477ce8){return _[_0x3e02('0x17')](_0xa83b8d,_0x477ce8);});}exports['devicestatechange']=function(_0x593ce8){try{utils[_0x3e02('0x18')](util['format']('[%s][members][devicestatechange]',members[_0x593ce8['device']]?members[_0x593ce8[_0x3e02('0x19')]]['uniqueid']:_0x593ce8[_0x3e02('0x19')]),_0x593ce8);utils[_0x3e02('0x4')](util['format'](_0x3e02('0x1a'),members[_0x593ce8[_0x3e02('0x19')]]?members[_0x593ce8[_0x3e02('0x19')]][_0x3e02('0x1b')]:_0x593ce8['device'],_0x593ce8[_0x3e02('0x1c')],_0x593ce8[_0x3e02('0x19')]));switch(_0x593ce8[_0x3e02('0x1c')]){case'INUSE':case'BUSY':if(!startsWith(exclude,_0x593ce8[_0x3e02('0x19')])){members[_0x593ce8[_0x3e02('0x19')]]={'channel':'voice','interface':_0x593ce8[_0x3e02('0x19')],'type':_0x3e02('0x1d'),'enterAt':utils['now'](),'role':_0x3e02('0x1e')};}break;case _0x3e02('0x1f'):if(!_['isNil'](members[_0x593ce8[_0x3e02('0x19')]])){members[_0x593ce8[_0x3e02('0x19')]][_0x3e02('0x20')]=utils[_0x3e02('0x21')]();members[_0x593ce8['device']]['duration']=utils[_0x3e02('0x22')](members[_0x593ce8['device']][_0x3e02('0x20')],members[_0x593ce8[_0x3e02('0x19')]][_0x3e02('0x23')]);if(members[_0x593ce8['device']]['uniqueid']){writeDB(members[_0x593ce8[_0x3e02('0x19')]]);}}break;default:break;}}catch(_0x299bf3){utils[_0x3e02('0x14')](util[_0x3e02('0x5')]('[%s][members][devicestatechange]',members[_0x593ce8[_0x3e02('0x19')]]?members[_0x593ce8[_0x3e02('0x19')]][_0x3e02('0x1b')]:_0x593ce8[_0x3e02('0x19')]),_0x299bf3);}};exports[_0x3e02('0x24')]=function(_0x60bcf2){try{if(!_['isNil'](members[_0x60bcf2['interface']])){utils[_0x3e02('0x18')](util[_0x3e02('0x5')]('[%s][members][agentcomplete]',_0x60bcf2[_0x3e02('0x1b')]),_0x60bcf2);utils[_0x3e02('0x4')](util[_0x3e02('0x5')](_0x3e02('0x25'),_0x60bcf2[_0x3e02('0x1b')],_0x60bcf2['interface'],_0x60bcf2[_0x3e02('0x26')]));members[_0x60bcf2[_0x3e02('0x10')]]=_['assign'](members[_0x60bcf2[_0x3e02('0x10')]],{'data4':_0x60bcf2[_0x3e02('0x26')],'uniqueid':_0x60bcf2['uniqueid']});}}catch(_0x4a65b2){utils[_0x3e02('0x14')](util[_0x3e02('0x5')](_0x3e02('0x27'),_0x60bcf2[_0x3e02('0x1b')]),_0x4a65b2);}};exports[_0x3e02('0x28')]=function(_0x38a32e){try{utils[_0x3e02('0x18')](util[_0x3e02('0x5')]('[%s][members][cdr]',_0x38a32e[_0x3e02('0x1b')]),_0x38a32e);if(_0x38a32e['channel']){var _0xb922b=_0x38a32e[_0x3e02('0x6')]['split']('-')[0x0];if(!_[_0x3e02('0x29')](members[_0xb922b])){members[_0xb922b]=_['assign'](members[_0xb922b],{'data1':members[_0xb922b][_0x3e02('0x2a')]||_0x38a32e['type'],'data2':members[_0xb922b][_0x3e02('0x7')]||_0x38a32e[_0x3e02('0x2b')],'data3':members[_0xb922b]['data3']||_0x38a32e[_0x3e02('0x2c')],'uniqueid':members[_0xb922b][_0x3e02('0x1b')]||_0x38a32e['uniqueid']});utils[_0x3e02('0x4')](util[_0x3e02('0x5')](_0x3e02('0x2d'),_0x38a32e[_0x3e02('0x1b')],members[_0xb922b][_0x3e02('0x2a')],members[_0xb922b]['data2'],members[_0xb922b]['data3']));if(members[_0xb922b][_0x3e02('0x20')]){writeDB(members[_0xb922b]);}}}if(_0x38a32e[_0x3e02('0x2e')]){var _0x2e293f=_0x38a32e[_0x3e02('0x2e')][_0x3e02('0x11')]('-')[0x0];if(!_[_0x3e02('0x29')](members[_0x2e293f])){members[_0x2e293f]=_[_0x3e02('0x2f')](members[_0x2e293f],{'data1':members[_0x2e293f]['data1']||_0x38a32e['type'],'data2':members[_0x2e293f]['data2']||_0x38a32e[_0x3e02('0x2b')],'data3':members[_0x2e293f][_0x3e02('0x30')]||_0x38a32e[_0x3e02('0x2c')],'uniqueid':members[_0x2e293f]['uniqueid']||_0x38a32e[_0x3e02('0x1b')]});utils[_0x3e02('0x4')](util[_0x3e02('0x5')](_0x3e02('0x2d'),_0x38a32e[_0x3e02('0x1b')],members[_0x2e293f]['data1'],members[_0x2e293f][_0x3e02('0x7')],members[_0x2e293f][_0x3e02('0x30')]));if(members[_0x2e293f][_0x3e02('0x20')]){writeDB(members[_0x2e293f]);}}}}catch(_0x725edb){utils[_0x3e02('0x14')](util[_0x3e02('0x5')](_0x3e02('0x31'),_0x38a32e['uniqueid']),_0x725edb);}};
\ No newline at end of file
+var _0x177a=['debug','device','INUSE','voice','now','agent','NOT_INUSE','duration','diffTime','enterAt','[%s][members][devicestatechange]','isNil','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','cdr','split','assign','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','exitAt','destinationchannel','data1','lodash','Local/_attended@transfer','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','interface','channel','data2','membername','type','getUserByInterface','name','internal','request','CreateMemberReport','getUserByName','then','error','[%s][members][writeDB]','uniqueid','some','startsWith','devicestatechange'];(function(_0x39c8f2,_0x23df6c){var _0x445526=function(_0x56376c){while(--_0x56376c){_0x39c8f2['push'](_0x39c8f2['shift']());}};_0x445526(++_0x23df6c);}(_0x177a,0xdd));var _0xa177=function(_0x4dc061,_0x5292cd){_0x4dc061=_0x4dc061-0x0;var _0x25dbce=_0x177a[_0x4dc061];return _0x25dbce;};'use strict';var _=require(_0xa177('0x0'));var util=require('util');var utils=require('./utils');var members={};var exclude=[_0xa177('0x1'),_0xa177('0x2')];function writeDB(_0x5becaa){utils[_0xa177('0x3')](util[_0xa177('0x4')](_0xa177('0x5'),_0x5becaa['uniqueid'],_0x5becaa[_0xa177('0x6')],_0x5becaa[_0xa177('0x7')],_0x5becaa[_0xa177('0x8')],_0x5becaa[_0xa177('0x9')],_0x5becaa[_0xa177('0xa')]));if(_0x5becaa[_0xa177('0x6')]){utils[_0xa177('0xb')](_0x5becaa[_0xa177('0x6')])['then'](function(_0x807734){if(_0x807734){_0x5becaa['membername']=_0x807734[_0xa177('0xc')];_0x5becaa[_0xa177('0xd')]=_0x807734[_0xa177('0xd')];utils[_0xa177('0xe')](_0xa177('0xf'),_0x5becaa);}else{utils[_0xa177('0x10')](_0x5becaa[_0xa177('0x6')]['split']('/')[0x1])[_0xa177('0x11')](function(_0x3b116a){if(_0x3b116a){_0x5becaa[_0xa177('0x9')]=_0x3b116a[_0xa177('0xc')];_0x5becaa[_0xa177('0xd')]=_0x3b116a[_0xa177('0xd')];utils[_0xa177('0xe')]('CreateMemberReport',_0x5becaa);}});}})['catch'](function(_0xca78d4){utils[_0xa177('0x12')](util[_0xa177('0x4')](_0xa177('0x13'),_0x5becaa[_0xa177('0x14')]),_0xca78d4);});}delete members[_0x5becaa[_0xa177('0x6')]];}function startsWith(_0x258985,_0xbc9fa4){return _[_0xa177('0x15')](_0x258985,function(_0x3c1443){return _[_0xa177('0x16')](_0xbc9fa4,_0x3c1443);});}exports[_0xa177('0x17')]=function(_0x5445da){try{utils[_0xa177('0x18')](util[_0xa177('0x4')]('[%s][members][devicestatechange]',members[_0x5445da[_0xa177('0x19')]]?members[_0x5445da[_0xa177('0x19')]][_0xa177('0x14')]:_0x5445da[_0xa177('0x19')]),_0x5445da);utils['info'](util['format']('[%s][members][devicestatechange]\x20state:%s\x20interface:%s',members[_0x5445da[_0xa177('0x19')]]?members[_0x5445da[_0xa177('0x19')]][_0xa177('0x14')]:_0x5445da[_0xa177('0x19')],_0x5445da['state'],_0x5445da[_0xa177('0x19')]));switch(_0x5445da['state']){case _0xa177('0x1a'):case'BUSY':if(!startsWith(exclude,_0x5445da[_0xa177('0x19')])){members[_0x5445da[_0xa177('0x19')]]={'channel':_0xa177('0x1b'),'interface':_0x5445da[_0xa177('0x19')],'type':'TALKING','enterAt':utils[_0xa177('0x1c')](),'role':_0xa177('0x1d')};}break;case _0xa177('0x1e'):if(!_['isNil'](members[_0x5445da['device']])){members[_0x5445da['device']]['exitAt']=utils[_0xa177('0x1c')]();members[_0x5445da[_0xa177('0x19')]][_0xa177('0x1f')]=utils[_0xa177('0x20')](members[_0x5445da[_0xa177('0x19')]]['exitAt'],members[_0x5445da[_0xa177('0x19')]][_0xa177('0x21')]);if(members[_0x5445da['device']]['uniqueid']){writeDB(members[_0x5445da[_0xa177('0x19')]]);}}break;default:break;}}catch(_0x5b42a1){utils['error'](util['format'](_0xa177('0x22'),members[_0x5445da['device']]?members[_0x5445da[_0xa177('0x19')]][_0xa177('0x14')]:_0x5445da[_0xa177('0x19')]),_0x5b42a1);}};exports['agentcomplete']=function(_0x41949a){try{if(!_[_0xa177('0x23')](members[_0x41949a['interface']])){utils[_0xa177('0x18')](util[_0xa177('0x4')](_0xa177('0x24'),_0x41949a[_0xa177('0x14')]),_0x41949a);utils[_0xa177('0x3')](util[_0xa177('0x4')](_0xa177('0x25'),_0x41949a[_0xa177('0x14')],_0x41949a['interface'],_0x41949a[_0xa177('0x26')]));members[_0x41949a[_0xa177('0x6')]]=_['assign'](members[_0x41949a[_0xa177('0x6')]],{'data4':_0x41949a[_0xa177('0x26')],'uniqueid':_0x41949a['uniqueid']});}}catch(_0x2b5cdc){utils[_0xa177('0x12')](util['format'](_0xa177('0x24'),_0x41949a[_0xa177('0x14')]),_0x2b5cdc);}};exports[_0xa177('0x27')]=function(_0x5cf398){try{utils['debug'](util['format']('[%s][members][cdr]',_0x5cf398['uniqueid']),_0x5cf398);if(_0x5cf398[_0xa177('0x7')]){var _0xd57ceb=_0x5cf398[_0xa177('0x7')][_0xa177('0x28')]('-')[0x0];if(!_[_0xa177('0x23')](members[_0xd57ceb])){members[_0xd57ceb]=_[_0xa177('0x29')](members[_0xd57ceb],{'data1':members[_0xd57ceb]['data1']||_0x5cf398[_0xa177('0xa')],'data2':members[_0xd57ceb][_0xa177('0x8')]||_0x5cf398[_0xa177('0x2a')],'data3':members[_0xd57ceb][_0xa177('0x2b')]||_0x5cf398[_0xa177('0x2c')],'uniqueid':members[_0xd57ceb][_0xa177('0x14')]||_0x5cf398[_0xa177('0x14')]});utils[_0xa177('0x3')](util['format'](_0xa177('0x2d'),_0x5cf398[_0xa177('0x14')],members[_0xd57ceb]['data1'],members[_0xd57ceb][_0xa177('0x8')],members[_0xd57ceb]['data3']));if(members[_0xd57ceb][_0xa177('0x2e')]){writeDB(members[_0xd57ceb]);}}}if(_0x5cf398[_0xa177('0x2f')]){var _0x4b51fc=_0x5cf398[_0xa177('0x2f')][_0xa177('0x28')]('-')[0x0];if(!_[_0xa177('0x23')](members[_0x4b51fc])){members[_0x4b51fc]=_[_0xa177('0x29')](members[_0x4b51fc],{'data1':members[_0x4b51fc][_0xa177('0x30')]||_0x5cf398[_0xa177('0xa')],'data2':members[_0x4b51fc][_0xa177('0x8')]||_0x5cf398[_0xa177('0x2a')],'data3':members[_0x4b51fc][_0xa177('0x2b')]||_0x5cf398[_0xa177('0x2c')],'uniqueid':members[_0x4b51fc][_0xa177('0x14')]||_0x5cf398[_0xa177('0x14')]});utils['info'](util['format'](_0xa177('0x2d'),_0x5cf398[_0xa177('0x14')],members[_0x4b51fc][_0xa177('0x30')],members[_0x4b51fc][_0xa177('0x8')],members[_0x4b51fc][_0xa177('0x2b')]));if(members[_0x4b51fc][_0xa177('0x2e')]){writeDB(members[_0x4b51fc]);}}}}catch(_0x2d7e2d){utils[_0xa177('0x12')](util['format']('[%s][members][cdr]',_0x5cf398[_0xa177('0x14')]),_0x2d7e2d);}};
\ No newline at end of file
index f4e708d..a2b49dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9584=['[%s][queues][hangup]','queuecallerleaveAt','queuecallerexit','queuecallerexitreason','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','name','queuecallerenterreason','varset','[%s][queues][varset]','variable','queuestatus','value','toUpperCase','CONTINUE','queuecallerabandon','queuecallerabandonAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','ABANDONED','queuecallerleave','[%s][queues][queuecallerleave]','connectedlinenum','connectedlinename','diffTime','queuecallerjoinAt','count','agentconnect','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','assigned','destaccountcode','lastAssignedTo','[%s][queues][agentconnect]','agentcomplete','[%s][queues][agentcomplete]','queuecallercomplete','queuecallercompleteAt','reason','transfer','TRANSFER','COMPLETEDBY','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','BLIND','transferexten','extension','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfereruniqueid','origtransfererexten','ATTENDED','transfereelinkedid','clone','calleridname','holdtime','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','secondtransfereruniqueid','secondtransfererexten','ATTENDEDTRANSFER','transfertargetlinkedid','transfertargetuniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','[%s][queues][attendedtransfer]','musiconholdstart','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop','[%s][queues][musiconholdstop]','lodash','util','./utils','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','queue','calleridnum','accountcode','getVoiceQueueByName','then','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]','position','assign','now','error','hangup','isNil'];(function(_0x6c2a02,_0x52d4bb){var _0x2473a1=function(_0x39c986){while(--_0x39c986){_0x6c2a02['push'](_0x6c2a02['shift']());}};_0x2473a1(++_0x52d4bb);}(_0x9584,0x11f));var _0x4958=function(_0x57c4f1,_0x2d24da){_0x57c4f1=_0x57c4f1-0x0;var _0x1b944b=_0x9584[_0x57c4f1];return _0x1b944b;};'use strict';var _=require(_0x4958('0x0'));var util=require(_0x4958('0x1'));var utils=require(_0x4958('0x2'));var queues={};function writeDB(_0xc71e14){utils[_0x4958('0x3')](util[_0x4958('0x4')](_0x4958('0x5'),_0xc71e14[_0x4958('0x6')],_0xc71e14[_0x4958('0x7')],_0xc71e14[_0x4958('0x8')],_0xc71e14['lastAssignedTo'],_0xc71e14[_0x4958('0x9')],_0xc71e14[_0x4958('0xa')],_0xc71e14['queuecallerexitreason']));if(_0xc71e14[_0x4958('0x8')]){utils[_0x4958('0xb')](_0xc71e14['queue'])[_0x4958('0xc')](function(_0x310c1c){if(_0x310c1c){_0xc71e14['type']=_0x310c1c['type'];}utils[_0x4958('0xd')](_0x4958('0xe'),_0xc71e14);});}else{utils['request'](_0x4958('0xe'),_0xc71e14);}if(_0xc71e14['transfereduniqueid']){delete queues[_0xc71e14[_0x4958('0xf')]];}else{delete queues[_0xc71e14[_0x4958('0x6')]];}}exports[_0x4958('0x10')]=function(_0x3d5459){try{utils[_0x4958('0x11')](util[_0x4958('0x4')](_0x4958('0x12'),_0x3d5459[_0x4958('0x6')]),_0x3d5459);utils[_0x4958('0x3')](util[_0x4958('0x4')]('[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s',_0x3d5459['uniqueid'],_0x3d5459[_0x4958('0x8')],_0x3d5459[_0x4958('0x13')]));queues[_0x3d5459[_0x4958('0x6')]]=_[_0x4958('0x14')](_0x3d5459,{'originalposition':_0x3d5459[_0x4958('0x13')],'queuecallerjoinAt':utils[_0x4958('0x15')](),'mohtime':0x0});}catch(_0x558dd0){utils[_0x4958('0x16')](util[_0x4958('0x4')]('[%s][queues][queuecallerjoin]',_0x3d5459[_0x4958('0x6')]),_0x558dd0);}};exports[_0x4958('0x17')]=function(_0x2ff44d){try{if(!_[_0x4958('0x18')](queues[_0x2ff44d[_0x4958('0x6')]])){utils['debug'](util[_0x4958('0x4')](_0x4958('0x19'),_0x2ff44d[_0x4958('0x6')]),_0x2ff44d);if(queues[_0x2ff44d['uniqueid']][_0x4958('0x1a')]){if(!queues[_0x2ff44d[_0x4958('0x6')]]['queuecallerabandon']&&!queues[_0x2ff44d[_0x4958('0x6')]][_0x4958('0x1b')]){queues[_0x2ff44d['uniqueid']]['queuecallercomplete']=!![];queues[_0x2ff44d[_0x4958('0x6')]]['queuecallercompleteAt']=utils['now']();queues[_0x2ff44d['uniqueid']][_0x4958('0x1c')]='COMPLETEDBYAGENT';}utils['info'](util['format']('[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s',_0x2ff44d[_0x4958('0x6')],queues[_0x2ff44d[_0x4958('0x6')]]['name'],queues[_0x2ff44d['uniqueid']][_0x4958('0x1c')]));writeDB(queues[_0x2ff44d[_0x4958('0x6')]]);}else if(queues[_0x2ff44d[_0x4958('0x6')]][_0x4958('0xf')]){utils[_0x4958('0x3')](util[_0x4958('0x4')](_0x4958('0x1d'),_0x2ff44d[_0x4958('0x6')],queues[_0x2ff44d[_0x4958('0x6')]][_0x4958('0x1e')],queues[_0x2ff44d[_0x4958('0x6')]][_0x4958('0xf')]));queues[queues[_0x2ff44d[_0x4958('0x6')]][_0x4958('0xf')]]=queues[_0x2ff44d[_0x4958('0x6')]];queues[queues[_0x2ff44d[_0x4958('0x6')]]['transfereduniqueid']][_0x4958('0x1f')]=0x2;delete queues[_0x2ff44d[_0x4958('0x6')]];}}}catch(_0x25f600){utils[_0x4958('0x16')](util['format'](_0x4958('0x19'),_0x2ff44d[_0x4958('0x6')]),_0x25f600);}};exports[_0x4958('0x20')]=function(_0x9d6fd3){try{utils['debug'](util[_0x4958('0x4')](_0x4958('0x21'),_0x9d6fd3[_0x4958('0x6')]),_0x9d6fd3);if(!_[_0x4958('0x18')](_0x9d6fd3[_0x4958('0x22')][_0x4958('0x23')])&&_0x9d6fd3[_0x4958('0x24')][_0x4958('0x25')]()!==_0x4958('0x26')){if(!_['isNil'](queues[_0x9d6fd3[_0x4958('0x6')]])){queues[_0x9d6fd3[_0x4958('0x6')]][_0x4958('0x27')]=![];queues[_0x9d6fd3['uniqueid']][_0x4958('0x28')]=null;queues[_0x9d6fd3[_0x4958('0x6')]][_0x4958('0x1b')]=!![];queues[_0x9d6fd3['uniqueid']]['queuecallerexitAt']=utils[_0x4958('0x15')]();queues[_0x9d6fd3['uniqueid']][_0x4958('0x1c')]=_0x9d6fd3['value'][_0x4958('0x25')]();utils[_0x4958('0x3')](util[_0x4958('0x4')](_0x4958('0x29'),_0x9d6fd3[_0x4958('0x6')],queues[_0x9d6fd3[_0x4958('0x6')]][_0x4958('0x1e')],_0x9d6fd3[_0x4958('0x24')],queues[_0x9d6fd3[_0x4958('0x6')]][_0x4958('0x1c')]));writeDB(queues[_0x9d6fd3[_0x4958('0x6')]]);}}else if(!_[_0x4958('0x18')](_0x9d6fd3[_0x4958('0x22')][_0x4958('0x2a')])){if(!_[_0x4958('0x18')](queues[_0x9d6fd3[_0x4958('0x6')]])&&!queues[_0x9d6fd3[_0x4958('0x6')]][_0x4958('0x27')]){queues[_0x9d6fd3[_0x4958('0x6')]][_0x4958('0x27')]=![];queues[_0x9d6fd3[_0x4958('0x6')]][_0x4958('0x28')]=null;queues[_0x9d6fd3['uniqueid']]['queuecallerexit']=!![];queues[_0x9d6fd3[_0x4958('0x6')]][_0x4958('0x2b')]=utils[_0x4958('0x15')]();queues[_0x9d6fd3[_0x4958('0x6')]][_0x4958('0x1c')]='EXITWITHKEY';utils[_0x4958('0x3')](util[_0x4958('0x4')](_0x4958('0x2c'),_0x9d6fd3[_0x4958('0x6')],queues[_0x9d6fd3['uniqueid']]['name'],_0x9d6fd3[_0x4958('0x24')],queues[_0x9d6fd3[_0x4958('0x6')]]['queuecallerexitreason']));}}}catch(_0x310187){utils['error'](util[_0x4958('0x4')](_0x4958('0x21'),_0x9d6fd3[_0x4958('0x6')]),_0x310187);}};exports['queuecallerabandon']=function(_0x5a482c){try{if(!_[_0x4958('0x18')](queues[_0x5a482c['uniqueid']])){utils[_0x4958('0x11')](util[_0x4958('0x4')](_0x4958('0x2d'),_0x5a482c['uniqueid']),_0x5a482c);queues[_0x5a482c[_0x4958('0x6')]][_0x4958('0x1b')]=![];queues[_0x5a482c[_0x4958('0x6')]][_0x4958('0x2b')]=null;queues[_0x5a482c[_0x4958('0x6')]][_0x4958('0x27')]=!![];queues[_0x5a482c[_0x4958('0x6')]][_0x4958('0x28')]=utils[_0x4958('0x15')]();queues[_0x5a482c[_0x4958('0x6')]][_0x4958('0x1c')]=_0x4958('0x2e');utils['info'](util[_0x4958('0x4')]('[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s',_0x5a482c['uniqueid'],queues[_0x5a482c[_0x4958('0x6')]][_0x4958('0x1e')],queues[_0x5a482c[_0x4958('0x6')]][_0x4958('0x1c')]));}}catch(_0x5ab186){utils[_0x4958('0x16')](util[_0x4958('0x4')]('[%s][queues][queuecallerabandon]',_0x5a482c[_0x4958('0x6')]),_0x5ab186);}};exports[_0x4958('0x2f')]=function(_0x28cc79){try{if(!_[_0x4958('0x18')](queues[_0x28cc79[_0x4958('0x6')]])){utils[_0x4958('0x11')](util[_0x4958('0x4')](_0x4958('0x30'),_0x28cc79[_0x4958('0x6')]),_0x28cc79);utils[_0x4958('0x3')](util[_0x4958('0x4')]('[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x28cc79[_0x4958('0x6')],queues[_0x28cc79['uniqueid']][_0x4958('0x1e')],_0x28cc79[_0x4958('0x31')],_0x28cc79[_0x4958('0x32')]));queues[_0x28cc79['uniqueid']][_0x4958('0x2f')]=!![];queues[_0x28cc79[_0x4958('0x6')]][_0x4958('0x1a')]=utils[_0x4958('0x15')]();queues[_0x28cc79[_0x4958('0x6')]]['holdtime']=utils[_0x4958('0x33')](queues[_0x28cc79[_0x4958('0x6')]][_0x4958('0x1a')],queues[_0x28cc79[_0x4958('0x6')]][_0x4958('0x34')]);queues[_0x28cc79[_0x4958('0x6')]][_0x4958('0x13')]=_0x28cc79[_0x4958('0x13')];queues[_0x28cc79[_0x4958('0x6')]][_0x4958('0x35')]=_0x28cc79[_0x4958('0x35')];queues[_0x28cc79['uniqueid']][_0x4958('0x31')]=_0x28cc79[_0x4958('0x31')];queues[_0x28cc79['uniqueid']][_0x4958('0x32')]=_0x28cc79['connectedlinename'];}}catch(_0x1a4afe){utils[_0x4958('0x16')](util[_0x4958('0x4')](_0x4958('0x30'),_0x28cc79['uniqueid']),_0x1a4afe);}};exports[_0x4958('0x36')]=function(_0x38e6fd){try{if(!_['isNil'](queues[_0x38e6fd[_0x4958('0x6')]])){utils['debug'](util[_0x4958('0x4')]('[%s][queues][agentconnect]',_0x38e6fd[_0x4958('0x6')]),_0x38e6fd);utils[_0x4958('0x3')](util['format'](_0x4958('0x37'),_0x38e6fd[_0x4958('0x6')],queues[_0x38e6fd[_0x4958('0x6')]]['name'],_0x38e6fd[_0x4958('0x38')],_0x38e6fd['destaccountcode']));queues[_0x38e6fd['uniqueid']]['queuecallerabandon']=![];queues[_0x38e6fd[_0x4958('0x6')]]['queuecallerabandon']=![];queues[_0x38e6fd[_0x4958('0x6')]][_0x4958('0x28')]=null;queues[_0x38e6fd['uniqueid']][_0x4958('0x1b')]=![];queues[_0x38e6fd['uniqueid']][_0x4958('0x1c')]=null;queues[_0x38e6fd[_0x4958('0x6')]][_0x4958('0x2b')]=null;queues[_0x38e6fd[_0x4958('0x6')]][_0x4958('0x39')]=!![];queues[_0x38e6fd[_0x4958('0x6')]]['accountcode']=_0x38e6fd[_0x4958('0x3a')];queues[_0x38e6fd[_0x4958('0x6')]][_0x4958('0x3b')]=_0x38e6fd['membername'];}}catch(_0x40b0c3){utils[_0x4958('0x16')](util[_0x4958('0x4')](_0x4958('0x3c'),_0x38e6fd[_0x4958('0x6')]),_0x40b0c3);}};exports[_0x4958('0x3d')]=function(_0x4ddcbc){try{if(!_[_0x4958('0x18')](queues[_0x4ddcbc[_0x4958('0x6')]])){if(queues[_0x4ddcbc[_0x4958('0x6')]][_0x4958('0x1a')]){utils[_0x4958('0x11')](util[_0x4958('0x4')](_0x4958('0x3e'),_0x4ddcbc[_0x4958('0x6')]),_0x4ddcbc);queues[_0x4ddcbc['uniqueid']]['queuecallerabandon']=![];queues[_0x4ddcbc[_0x4958('0x6')]][_0x4958('0x27')]=![];queues[_0x4ddcbc['uniqueid']]['queuecallerabandonAt']=null;queues[_0x4ddcbc[_0x4958('0x6')]][_0x4958('0x1b')]=![];queues[_0x4ddcbc['uniqueid']]['queuecallerexitAt']=null;queues[_0x4ddcbc[_0x4958('0x6')]][_0x4958('0x39')]=!![];queues[_0x4ddcbc[_0x4958('0x6')]][_0x4958('0x3b')]=_0x4ddcbc[_0x4958('0x38')];queues[_0x4ddcbc[_0x4958('0x6')]][_0x4958('0x3f')]=!![];queues[_0x4ddcbc[_0x4958('0x6')]][_0x4958('0x40')]=utils[_0x4958('0x15')]();if(_0x4ddcbc[_0x4958('0x41')]==_0x4958('0x42')){if(!queues[_0x4ddcbc[_0x4958('0x6')]][_0x4958('0x42')]){queues[_0x4ddcbc[_0x4958('0x6')]][_0x4958('0x1c')]=_0x4958('0x43');}}else{queues[_0x4ddcbc[_0x4958('0x6')]][_0x4958('0x1c')]=_0x4958('0x44')+_0x4ddcbc[_0x4958('0x41')][_0x4958('0x25')]();}utils[_0x4958('0x3')](util[_0x4958('0x4')]('[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s',_0x4ddcbc[_0x4958('0x6')],queues[_0x4ddcbc[_0x4958('0x6')]]['name'],_0x4ddcbc[_0x4958('0x38')],queues[_0x4ddcbc[_0x4958('0x6')]][_0x4958('0x1c')]));writeDB(queues[_0x4ddcbc[_0x4958('0x6')]]);}}}catch(_0x24d669){utils['error'](util[_0x4958('0x4')](_0x4958('0x3e'),_0x4ddcbc[_0x4958('0x6')]),_0x24d669);}};exports[_0x4958('0x45')]=function(_0xb5295){try{if(!_[_0x4958('0x18')](queues[_0xb5295[_0x4958('0x46')]])){utils[_0x4958('0x11')](util[_0x4958('0x4')](_0x4958('0x47'),_0xb5295[_0x4958('0x6')]),_0xb5295);queues[_0xb5295[_0x4958('0x46')]][_0x4958('0x42')]=!![];queues[_0xb5295[_0x4958('0x46')]][_0x4958('0x48')]=_0x4958('0x49');queues[_0xb5295['transfereeuniqueid']][_0x4958('0x4a')]=_0xb5295[_0x4958('0x4b')];queues[_0xb5295['transfereeuniqueid']][_0x4958('0x4c')]=_0xb5295[_0x4958('0x46')];queues[_0xb5295['transfereeuniqueid']][_0x4958('0x1c')]=_0x4958('0x4d');utils[_0x4958('0x3')](util['format'](_0x4958('0x4e'),_0xb5295['uniqueid'],queues[_0xb5295['transfereeuniqueid']]['name'],_0xb5295[_0x4958('0x46')],_0xb5295[_0x4958('0x4b')]));}}catch(_0x560e53){utils[_0x4958('0x16')](util[_0x4958('0x4')](_0x4958('0x47'),_0xb5295[_0x4958('0x6')]),_0x560e53);}};exports[_0x4958('0x4f')]=function(_0x5e5da2){try{utils[_0x4958('0x11')](util[_0x4958('0x4')]('[%s][queues][attendedtransfer]',_0x5e5da2['origtransfereruniqueid']),_0x5e5da2);if(_0x5e5da2['origtransfereruniqueid']==_0x5e5da2[_0x4958('0x50')]){if(!_['isNil'](queues[_0x5e5da2[_0x4958('0x51')]])){utils['info'](util[_0x4958('0x4')](_0x4958('0x52'),_0x5e5da2[_0x4958('0x53')],queues[_0x5e5da2[_0x4958('0x51')]]['name'],_0x5e5da2[_0x4958('0x54')]));queues[_0x5e5da2[_0x4958('0x51')]][_0x4958('0x42')]=!![];queues[_0x5e5da2['secondtransfererlinkedid']][_0x4958('0x48')]=_0x4958('0x55');queues[_0x5e5da2[_0x4958('0x51')]][_0x4958('0x4a')]=_0x5e5da2[_0x4958('0x54')];queues[_0x5e5da2[_0x4958('0x51')]]['transferuniqueid']=_0x5e5da2['origtransfereruniqueid'];queues[_0x5e5da2[_0x4958('0x51')]][_0x4958('0x1c')]='ATTENDEDTRANSFER';}if(!_['isNil'](queues[_0x5e5da2[_0x4958('0x50')]])){if(_0x5e5da2[_0x4958('0x56')]&&queues[_0x5e5da2[_0x4958('0x56')]]){queues[_0x5e5da2[_0x4958('0x56')]]['queuecallerenterreason']=0x1;queues[_0x5e5da2['transfereeuniqueid']]=_[_0x4958('0x57')](queues[_0x5e5da2[_0x4958('0x56')]]);queues[_0x5e5da2[_0x4958('0x46')]]['transfereduniqueid']=_0x5e5da2['transfertargetuniqueid'];queues[_0x5e5da2[_0x4958('0x46')]][_0x4958('0x1f')]=0x2;queues[_0x5e5da2[_0x4958('0x46')]][_0x4958('0x9')]=queues[_0x5e5da2[_0x4958('0x51')]][_0x4958('0x9')];queues[_0x5e5da2[_0x4958('0x46')]][_0x4958('0x58')]=queues[_0x5e5da2['secondtransfererlinkedid']][_0x4958('0x58')];queues[_0x5e5da2['transfereeuniqueid']][_0x4958('0x34')]=utils['now']();queues[_0x5e5da2[_0x4958('0x46')]][_0x4958('0x1a')]=utils[_0x4958('0x15')]();queues[_0x5e5da2[_0x4958('0x46')]][_0x4958('0x59')]=0x0;queues[_0x5e5da2[_0x4958('0x46')]][_0x4958('0x5a')]=0x0;utils[_0x4958('0x3')](util[_0x4958('0x4')](_0x4958('0x5b'),_0x5e5da2[_0x4958('0x53')],queues[_0x5e5da2[_0x4958('0x46')]][_0x4958('0x1e')],queues[_0x5e5da2[_0x4958('0x46')]]['calleridnum'],queues[_0x5e5da2[_0x4958('0x46')]][_0x4958('0x58')]));}else{utils[_0x4958('0x3')](util[_0x4958('0x4')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x5e5da2[_0x4958('0x53')],queues[_0x5e5da2[_0x4958('0x50')]]['name'],_0x5e5da2[_0x4958('0x51')]));queues[_0x5e5da2['origtransfererlinkedid']][_0x4958('0xf')]=_0x5e5da2[_0x4958('0x51')];}}}else if(_0x5e5da2['secondtransfereruniqueid']==_0x5e5da2[_0x4958('0x51')]){if(!_[_0x4958('0x18')](queues[_0x5e5da2[_0x4958('0x50')]])){utils['info'](util[_0x4958('0x4')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x5e5da2[_0x4958('0x53')],queues[_0x5e5da2[_0x4958('0x50')]][_0x4958('0x1e')],_0x5e5da2[_0x4958('0x5c')],_0x5e5da2['secondtransfererexten']));queues[_0x5e5da2[_0x4958('0x50')]][_0x4958('0x42')]=!![];queues[_0x5e5da2[_0x4958('0x50')]][_0x4958('0x48')]=_0x4958('0x55');queues[_0x5e5da2[_0x4958('0x50')]][_0x4958('0x4a')]=_0x5e5da2[_0x4958('0x5d')];queues[_0x5e5da2['origtransfererlinkedid']][_0x4958('0x4c')]=_0x5e5da2[_0x4958('0x5c')];queues[_0x5e5da2[_0x4958('0x50')]][_0x4958('0x1c')]=_0x4958('0x5e');}if(!_[_0x4958('0x18')](queues[_0x5e5da2[_0x4958('0x51')]])){if(_0x5e5da2[_0x4958('0x5f')]&&queues[_0x5e5da2['transfertargetlinkedid']]){queues[_0x5e5da2[_0x4958('0x5f')]]['queuecallerenterreason']=0x1;queues[_0x5e5da2[_0x4958('0x60')]]=_[_0x4958('0x57')](queues[_0x5e5da2[_0x4958('0x5f')]]);queues[_0x5e5da2[_0x4958('0x60')]][_0x4958('0xf')]=_0x5e5da2[_0x4958('0x60')];queues[_0x5e5da2[_0x4958('0x60')]][_0x4958('0x1f')]=0x2;queues[_0x5e5da2[_0x4958('0x60')]]['calleridnum']=queues[_0x5e5da2['origtransfererlinkedid']][_0x4958('0x9')];queues[_0x5e5da2[_0x4958('0x60')]][_0x4958('0x58')]=queues[_0x5e5da2[_0x4958('0x50')]]['calleridname'];queues[_0x5e5da2[_0x4958('0x60')]][_0x4958('0x34')]=utils['now']();queues[_0x5e5da2[_0x4958('0x60')]]['queuecallerleaveAt']=utils[_0x4958('0x15')]();queues[_0x5e5da2[_0x4958('0x60')]][_0x4958('0x59')]=0x0;queues[_0x5e5da2[_0x4958('0x60')]][_0x4958('0x5a')]=0x0;utils[_0x4958('0x3')](util[_0x4958('0x4')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s',_0x5e5da2['origtransfereruniqueid'],queues[_0x5e5da2[_0x4958('0x60')]]['name'],queues[_0x5e5da2[_0x4958('0x60')]]['transfereduniqueid'],queues[_0x5e5da2[_0x4958('0x60')]][_0x4958('0x9')],queues[_0x5e5da2[_0x4958('0x60')]][_0x4958('0x58')]));}else{utils[_0x4958('0x3')](util[_0x4958('0x4')](_0x4958('0x61'),_0x5e5da2[_0x4958('0x53')],queues[_0x5e5da2[_0x4958('0x51')]]['name'],_0x5e5da2['origtransfererlinkedid']));queues[_0x5e5da2[_0x4958('0x51')]][_0x4958('0xf')]=_0x5e5da2[_0x4958('0x50')];}}}}catch(_0x3b98ab){utils['error'](util[_0x4958('0x4')](_0x4958('0x62'),_0x5e5da2[_0x4958('0x53')]),_0x3b98ab);}};exports[_0x4958('0x63')]=function(_0x40e575){try{if(!_[_0x4958('0x18')](queues[_0x40e575[_0x4958('0x6')]])){utils[_0x4958('0x11')](util[_0x4958('0x4')]('[%s][queues][musiconholdstart]',_0x40e575[_0x4958('0x6')]),_0x40e575);queues[_0x40e575[_0x4958('0x6')]][_0x4958('0x64')]=utils['now']();utils['info'](util[_0x4958('0x4')](_0x4958('0x65'),_0x40e575[_0x4958('0x6')],queues[_0x40e575['uniqueid']]['name'],queues[_0x40e575[_0x4958('0x6')]][_0x4958('0x64')]));}}catch(_0x5b58ed){utils['error'](util[_0x4958('0x4')]('[%s][queues][musiconholdstart]',_0x40e575[_0x4958('0x6')]),_0x5b58ed);}};exports[_0x4958('0x66')]=function(_0x5cf535){try{if(!_[_0x4958('0x18')](queues[_0x5cf535[_0x4958('0x6')]])){if(!_[_0x4958('0x18')](queues[_0x5cf535['uniqueid']][_0x4958('0x64')])){utils['debug'](util[_0x4958('0x4')](_0x4958('0x67'),_0x5cf535[_0x4958('0x6')]),_0x5cf535);queues[_0x5cf535['uniqueid']]['mohtime']+=utils[_0x4958('0x33')](utils[_0x4958('0x15')](),queues[_0x5cf535[_0x4958('0x6')]][_0x4958('0x64')]);utils[_0x4958('0x3')](util[_0x4958('0x4')]('[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s',_0x5cf535[_0x4958('0x6')],queues[_0x5cf535[_0x4958('0x6')]][_0x4958('0x1e')],queues[_0x5cf535['uniqueid']][_0x4958('0x5a')]));delete queues[_0x5cf535[_0x4958('0x6')]][_0x4958('0x64')];}}}catch(_0xdc2a95){utils['error'](util[_0x4958('0x4')]('[%s][queues][musiconholdstop]',_0x5cf535[_0x4958('0x6')]),_0xdc2a95);}};
\ No newline at end of file
+var _0x5042=['type','request','CreateVoiceQueueReport','transfereduniqueid','debug','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','now','[%s][queues][queuecallerjoin]','hangup','[%s][queues][hangup]','queuecallerabandon','queuecallerexit','queuecallercompleteAt','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','name','[%s][queues][varset]','isNil','value','toUpperCase','CONTINUE','queuecallerabandonAt','queuecallerexitAt','variable','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','queuecallerleaveAt','holdtime','diffTime','queuecallerjoinAt','count','connectedlinename','error','agentconnect','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','assigned','[%s][queues][agentconnect]','agentcomplete','[%s][queues][agentcomplete]','queuecallercomplete','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','[%s][queues][blindtransfer]','transfereeuniqueid','BLIND','transferexten','extension','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','[%s][queues][attendedtransfer]','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfereruniqueid','origtransfererexten','transfertype','ATTENDED','transferuniqueid','ATTENDEDTRANSFER','transfereelinkedid','transfertargetuniqueid','calleridnum','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfereruniqueid','secondtransfererexten','transfertargetlinkedid','queuecallerenterreason','clone','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','[%s][queues][musiconholdstop]','lodash','util','./utils','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','lastAssignedTo','queuecallerexitreason','getVoiceQueueByName','then'];(function(_0x364b32,_0x4dec35){var _0x3f3ea0=function(_0x1911a8){while(--_0x1911a8){_0x364b32['push'](_0x364b32['shift']());}};_0x3f3ea0(++_0x4dec35);}(_0x5042,0x132));var _0x2504=function(_0x117099,_0x4e87c0){_0x117099=_0x117099-0x0;var _0x2d0438=_0x5042[_0x117099];return _0x2d0438;};'use strict';var _=require(_0x2504('0x0'));var util=require(_0x2504('0x1'));var utils=require(_0x2504('0x2'));var queues={};function writeDB(_0x30a4a7){utils[_0x2504('0x3')](util[_0x2504('0x4')](_0x2504('0x5'),_0x30a4a7[_0x2504('0x6')],_0x30a4a7[_0x2504('0x7')],_0x30a4a7['queue'],_0x30a4a7[_0x2504('0x8')],_0x30a4a7['calleridnum'],_0x30a4a7['accountcode'],_0x30a4a7[_0x2504('0x9')]));if(_0x30a4a7['queue']){utils[_0x2504('0xa')](_0x30a4a7['queue'])[_0x2504('0xb')](function(_0x178605){if(_0x178605){_0x30a4a7[_0x2504('0xc')]=_0x178605[_0x2504('0xc')];}utils[_0x2504('0xd')](_0x2504('0xe'),_0x30a4a7);});}else{utils[_0x2504('0xd')](_0x2504('0xe'),_0x30a4a7);}if(_0x30a4a7[_0x2504('0xf')]){delete queues[_0x30a4a7[_0x2504('0xf')]];}else{delete queues[_0x30a4a7[_0x2504('0x6')]];}}exports['queuecallerjoin']=function(_0x5ab468){try{utils[_0x2504('0x10')](util[_0x2504('0x4')]('[%s][queues][queuecallerjoin]',_0x5ab468['uniqueid']),_0x5ab468);utils[_0x2504('0x3')](util[_0x2504('0x4')](_0x2504('0x11'),_0x5ab468['uniqueid'],_0x5ab468['queue'],_0x5ab468[_0x2504('0x12')]));queues[_0x5ab468[_0x2504('0x6')]]=_[_0x2504('0x13')](_0x5ab468,{'originalposition':_0x5ab468['position'],'queuecallerjoinAt':utils[_0x2504('0x14')](),'mohtime':0x0});}catch(_0x5b5abf){utils['error'](util[_0x2504('0x4')](_0x2504('0x15'),_0x5ab468['uniqueid']),_0x5b5abf);}};exports[_0x2504('0x16')]=function(_0x3fc6c2){try{if(!_['isNil'](queues[_0x3fc6c2['uniqueid']])){utils[_0x2504('0x10')](util[_0x2504('0x4')](_0x2504('0x17'),_0x3fc6c2[_0x2504('0x6')]),_0x3fc6c2);if(queues[_0x3fc6c2[_0x2504('0x6')]]['queuecallerleaveAt']){if(!queues[_0x3fc6c2[_0x2504('0x6')]][_0x2504('0x18')]&&!queues[_0x3fc6c2[_0x2504('0x6')]][_0x2504('0x19')]){queues[_0x3fc6c2[_0x2504('0x6')]]['queuecallercomplete']=!![];queues[_0x3fc6c2[_0x2504('0x6')]][_0x2504('0x1a')]=utils['now']();queues[_0x3fc6c2[_0x2504('0x6')]]['queuecallerexitreason']=_0x2504('0x1b');}utils[_0x2504('0x3')](util['format'](_0x2504('0x1c'),_0x3fc6c2[_0x2504('0x6')],queues[_0x3fc6c2['uniqueid']]['name'],queues[_0x3fc6c2['uniqueid']][_0x2504('0x9')]));writeDB(queues[_0x3fc6c2[_0x2504('0x6')]]);}else if(queues[_0x3fc6c2['uniqueid']][_0x2504('0xf')]){utils['info'](util[_0x2504('0x4')](_0x2504('0x1d'),_0x3fc6c2['uniqueid'],queues[_0x3fc6c2[_0x2504('0x6')]][_0x2504('0x1e')],queues[_0x3fc6c2[_0x2504('0x6')]][_0x2504('0xf')]));queues[queues[_0x3fc6c2[_0x2504('0x6')]][_0x2504('0xf')]]=queues[_0x3fc6c2[_0x2504('0x6')]];queues[queues[_0x3fc6c2[_0x2504('0x6')]][_0x2504('0xf')]]['queuecallerenterreason']=0x2;delete queues[_0x3fc6c2[_0x2504('0x6')]];}}}catch(_0x16b759){utils['error'](util[_0x2504('0x4')](_0x2504('0x17'),_0x3fc6c2[_0x2504('0x6')]),_0x16b759);}};exports['varset']=function(_0x2026f7){try{utils[_0x2504('0x10')](util[_0x2504('0x4')](_0x2504('0x1f'),_0x2026f7[_0x2504('0x6')]),_0x2026f7);if(!_[_0x2504('0x20')](_0x2026f7['variable']['queuestatus'])&&_0x2026f7[_0x2504('0x21')][_0x2504('0x22')]()!==_0x2504('0x23')){if(!_[_0x2504('0x20')](queues[_0x2026f7[_0x2504('0x6')]])){queues[_0x2026f7[_0x2504('0x6')]][_0x2504('0x18')]=![];queues[_0x2026f7['uniqueid']][_0x2504('0x24')]=null;queues[_0x2026f7['uniqueid']]['queuecallerexit']=!![];queues[_0x2026f7[_0x2504('0x6')]][_0x2504('0x25')]=utils[_0x2504('0x14')]();queues[_0x2026f7['uniqueid']][_0x2504('0x9')]=_0x2026f7[_0x2504('0x21')][_0x2504('0x22')]();utils[_0x2504('0x3')](util[_0x2504('0x4')]('[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s',_0x2026f7['uniqueid'],queues[_0x2026f7[_0x2504('0x6')]][_0x2504('0x1e')],_0x2026f7['value'],queues[_0x2026f7[_0x2504('0x6')]][_0x2504('0x9')]));writeDB(queues[_0x2026f7[_0x2504('0x6')]]);}}else if(!_['isNil'](_0x2026f7[_0x2504('0x26')]['queueposition'])){if(!_['isNil'](queues[_0x2026f7[_0x2504('0x6')]])&&!queues[_0x2026f7[_0x2504('0x6')]][_0x2504('0x18')]){queues[_0x2026f7['uniqueid']][_0x2504('0x18')]=![];queues[_0x2026f7[_0x2504('0x6')]][_0x2504('0x24')]=null;queues[_0x2026f7[_0x2504('0x6')]][_0x2504('0x19')]=!![];queues[_0x2026f7[_0x2504('0x6')]]['queuecallerexitAt']=utils['now']();queues[_0x2026f7[_0x2504('0x6')]]['queuecallerexitreason']=_0x2504('0x27');utils[_0x2504('0x3')](util[_0x2504('0x4')](_0x2504('0x28'),_0x2026f7[_0x2504('0x6')],queues[_0x2026f7[_0x2504('0x6')]][_0x2504('0x1e')],_0x2026f7[_0x2504('0x21')],queues[_0x2026f7['uniqueid']][_0x2504('0x9')]));}}}catch(_0x4bd1a9){utils['error'](util[_0x2504('0x4')]('[%s][queues][varset]',_0x2026f7[_0x2504('0x6')]),_0x4bd1a9);}};exports['queuecallerabandon']=function(_0x16cf49){try{if(!_[_0x2504('0x20')](queues[_0x16cf49['uniqueid']])){utils[_0x2504('0x10')](util['format'](_0x2504('0x29'),_0x16cf49[_0x2504('0x6')]),_0x16cf49);queues[_0x16cf49[_0x2504('0x6')]][_0x2504('0x19')]=![];queues[_0x16cf49[_0x2504('0x6')]][_0x2504('0x25')]=null;queues[_0x16cf49['uniqueid']][_0x2504('0x18')]=!![];queues[_0x16cf49['uniqueid']][_0x2504('0x24')]=utils[_0x2504('0x14')]();queues[_0x16cf49[_0x2504('0x6')]][_0x2504('0x9')]=_0x2504('0x2a');utils[_0x2504('0x3')](util[_0x2504('0x4')](_0x2504('0x2b'),_0x16cf49[_0x2504('0x6')],queues[_0x16cf49[_0x2504('0x6')]][_0x2504('0x1e')],queues[_0x16cf49[_0x2504('0x6')]]['queuecallerexitreason']));}}catch(_0x5625b0){utils['error'](util[_0x2504('0x4')](_0x2504('0x29'),_0x16cf49[_0x2504('0x6')]),_0x5625b0);}};exports[_0x2504('0x2c')]=function(_0x583c79){try{if(!_[_0x2504('0x20')](queues[_0x583c79['uniqueid']])){utils[_0x2504('0x10')](util[_0x2504('0x4')](_0x2504('0x2d'),_0x583c79[_0x2504('0x6')]),_0x583c79);utils[_0x2504('0x3')](util[_0x2504('0x4')](_0x2504('0x2e'),_0x583c79[_0x2504('0x6')],queues[_0x583c79['uniqueid']][_0x2504('0x1e')],_0x583c79[_0x2504('0x2f')],_0x583c79['connectedlinename']));queues[_0x583c79[_0x2504('0x6')]][_0x2504('0x2c')]=!![];queues[_0x583c79['uniqueid']][_0x2504('0x30')]=utils['now']();queues[_0x583c79['uniqueid']][_0x2504('0x31')]=utils[_0x2504('0x32')](queues[_0x583c79[_0x2504('0x6')]][_0x2504('0x30')],queues[_0x583c79[_0x2504('0x6')]][_0x2504('0x33')]);queues[_0x583c79[_0x2504('0x6')]][_0x2504('0x12')]=_0x583c79['position'];queues[_0x583c79[_0x2504('0x6')]]['count']=_0x583c79[_0x2504('0x34')];queues[_0x583c79[_0x2504('0x6')]][_0x2504('0x2f')]=_0x583c79[_0x2504('0x2f')];queues[_0x583c79[_0x2504('0x6')]][_0x2504('0x35')]=_0x583c79[_0x2504('0x35')];}}catch(_0x17739f){utils[_0x2504('0x36')](util[_0x2504('0x4')]('[%s][queues][queuecallerleave]',_0x583c79[_0x2504('0x6')]),_0x17739f);}};exports[_0x2504('0x37')]=function(_0x1d5307){try{if(!_[_0x2504('0x20')](queues[_0x1d5307['uniqueid']])){utils['debug'](util[_0x2504('0x4')]('[%s][queues][agentconnect]',_0x1d5307[_0x2504('0x6')]),_0x1d5307);utils[_0x2504('0x3')](util[_0x2504('0x4')](_0x2504('0x38'),_0x1d5307[_0x2504('0x6')],queues[_0x1d5307['uniqueid']][_0x2504('0x1e')],_0x1d5307[_0x2504('0x39')],_0x1d5307[_0x2504('0x3a')]));queues[_0x1d5307[_0x2504('0x6')]]['queuecallerabandon']=![];queues[_0x1d5307[_0x2504('0x6')]][_0x2504('0x18')]=![];queues[_0x1d5307[_0x2504('0x6')]]['queuecallerabandonAt']=null;queues[_0x1d5307['uniqueid']][_0x2504('0x19')]=![];queues[_0x1d5307[_0x2504('0x6')]][_0x2504('0x9')]=null;queues[_0x1d5307[_0x2504('0x6')]][_0x2504('0x25')]=null;queues[_0x1d5307[_0x2504('0x6')]][_0x2504('0x3b')]=!![];queues[_0x1d5307[_0x2504('0x6')]]['accountcode']=_0x1d5307['destaccountcode'];queues[_0x1d5307[_0x2504('0x6')]][_0x2504('0x8')]=_0x1d5307[_0x2504('0x39')];}}catch(_0x80e57e){utils[_0x2504('0x36')](util[_0x2504('0x4')](_0x2504('0x3c'),_0x1d5307['uniqueid']),_0x80e57e);}};exports[_0x2504('0x3d')]=function(_0x28554c){try{if(!_[_0x2504('0x20')](queues[_0x28554c[_0x2504('0x6')]])){if(queues[_0x28554c['uniqueid']]['queuecallerleaveAt']){utils['debug'](util[_0x2504('0x4')](_0x2504('0x3e'),_0x28554c[_0x2504('0x6')]),_0x28554c);queues[_0x28554c[_0x2504('0x6')]][_0x2504('0x18')]=![];queues[_0x28554c[_0x2504('0x6')]][_0x2504('0x18')]=![];queues[_0x28554c[_0x2504('0x6')]]['queuecallerabandonAt']=null;queues[_0x28554c[_0x2504('0x6')]][_0x2504('0x19')]=![];queues[_0x28554c[_0x2504('0x6')]]['queuecallerexitAt']=null;queues[_0x28554c[_0x2504('0x6')]][_0x2504('0x3b')]=!![];queues[_0x28554c['uniqueid']][_0x2504('0x8')]=_0x28554c[_0x2504('0x39')];queues[_0x28554c[_0x2504('0x6')]][_0x2504('0x3f')]=!![];queues[_0x28554c[_0x2504('0x6')]][_0x2504('0x1a')]=utils[_0x2504('0x14')]();if(_0x28554c[_0x2504('0x40')]==_0x2504('0x41')){if(!queues[_0x28554c[_0x2504('0x6')]]['transfer']){queues[_0x28554c[_0x2504('0x6')]][_0x2504('0x9')]=_0x2504('0x42');}}else{queues[_0x28554c[_0x2504('0x6')]][_0x2504('0x9')]=_0x2504('0x43')+_0x28554c[_0x2504('0x40')][_0x2504('0x22')]();}utils[_0x2504('0x3')](util[_0x2504('0x4')](_0x2504('0x44'),_0x28554c[_0x2504('0x6')],queues[_0x28554c['uniqueid']][_0x2504('0x1e')],_0x28554c[_0x2504('0x39')],queues[_0x28554c['uniqueid']]['queuecallerexitreason']));writeDB(queues[_0x28554c[_0x2504('0x6')]]);}}}catch(_0x201610){utils['error'](util['format'](_0x2504('0x3e'),_0x28554c['uniqueid']),_0x201610);}};exports[_0x2504('0x45')]=function(_0xcb1433){try{if(!_[_0x2504('0x20')](queues[_0xcb1433['transfereeuniqueid']])){utils[_0x2504('0x10')](util['format'](_0x2504('0x46'),_0xcb1433[_0x2504('0x6')]),_0xcb1433);queues[_0xcb1433[_0x2504('0x47')]][_0x2504('0x41')]=!![];queues[_0xcb1433['transfereeuniqueid']]['transfertype']=_0x2504('0x48');queues[_0xcb1433[_0x2504('0x47')]][_0x2504('0x49')]=_0xcb1433[_0x2504('0x4a')];queues[_0xcb1433[_0x2504('0x47')]]['transferuniqueid']=_0xcb1433['transfereeuniqueid'];queues[_0xcb1433['transfereeuniqueid']][_0x2504('0x9')]=_0x2504('0x4b');utils[_0x2504('0x3')](util[_0x2504('0x4')](_0x2504('0x4c'),_0xcb1433[_0x2504('0x6')],queues[_0xcb1433[_0x2504('0x47')]]['name'],_0xcb1433['transfereeuniqueid'],_0xcb1433[_0x2504('0x4a')]));}}catch(_0xee9e5b){utils[_0x2504('0x36')](util[_0x2504('0x4')](_0x2504('0x46'),_0xcb1433[_0x2504('0x6')]),_0xee9e5b);}};exports[_0x2504('0x4d')]=function(_0x30bf9d){try{utils[_0x2504('0x10')](util[_0x2504('0x4')](_0x2504('0x4e'),_0x30bf9d['origtransfereruniqueid']),_0x30bf9d);if(_0x30bf9d['origtransfereruniqueid']==_0x30bf9d[_0x2504('0x4f')]){if(!_[_0x2504('0x20')](queues[_0x30bf9d[_0x2504('0x50')]])){utils[_0x2504('0x3')](util['format'](_0x2504('0x51'),_0x30bf9d[_0x2504('0x52')],queues[_0x30bf9d[_0x2504('0x50')]]['name'],_0x30bf9d[_0x2504('0x53')]));queues[_0x30bf9d[_0x2504('0x50')]]['transfer']=!![];queues[_0x30bf9d[_0x2504('0x50')]][_0x2504('0x54')]=_0x2504('0x55');queues[_0x30bf9d[_0x2504('0x50')]][_0x2504('0x49')]=_0x30bf9d['origtransfererexten'];queues[_0x30bf9d[_0x2504('0x50')]][_0x2504('0x56')]=_0x30bf9d[_0x2504('0x52')];queues[_0x30bf9d[_0x2504('0x50')]]['queuecallerexitreason']=_0x2504('0x57');}if(!_[_0x2504('0x20')](queues[_0x30bf9d[_0x2504('0x4f')]])){if(_0x30bf9d[_0x2504('0x58')]&&queues[_0x30bf9d['transfereelinkedid']]){queues[_0x30bf9d[_0x2504('0x58')]]['queuecallerenterreason']=0x1;queues[_0x30bf9d['transfereeuniqueid']]=_['clone'](queues[_0x30bf9d[_0x2504('0x58')]]);queues[_0x30bf9d[_0x2504('0x47')]][_0x2504('0xf')]=_0x30bf9d[_0x2504('0x59')];queues[_0x30bf9d[_0x2504('0x47')]]['queuecallerenterreason']=0x2;queues[_0x30bf9d[_0x2504('0x47')]]['calleridnum']=queues[_0x30bf9d[_0x2504('0x50')]][_0x2504('0x5a')];queues[_0x30bf9d[_0x2504('0x47')]]['calleridname']=queues[_0x30bf9d[_0x2504('0x50')]][_0x2504('0x5b')];queues[_0x30bf9d[_0x2504('0x47')]][_0x2504('0x33')]=utils['now']();queues[_0x30bf9d[_0x2504('0x47')]][_0x2504('0x30')]=utils[_0x2504('0x14')]();queues[_0x30bf9d['transfereeuniqueid']]['holdtime']=0x0;queues[_0x30bf9d[_0x2504('0x47')]][_0x2504('0x5c')]=0x0;utils['info'](util[_0x2504('0x4')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x30bf9d[_0x2504('0x52')],queues[_0x30bf9d['transfereeuniqueid']][_0x2504('0x1e')],queues[_0x30bf9d[_0x2504('0x47')]][_0x2504('0x5a')],queues[_0x30bf9d['transfereeuniqueid']]['calleridname']));}else{utils[_0x2504('0x3')](util[_0x2504('0x4')](_0x2504('0x5d'),_0x30bf9d[_0x2504('0x52')],queues[_0x30bf9d[_0x2504('0x4f')]][_0x2504('0x1e')],_0x30bf9d[_0x2504('0x50')]));queues[_0x30bf9d['origtransfererlinkedid']][_0x2504('0xf')]=_0x30bf9d[_0x2504('0x50')];}}}else if(_0x30bf9d['secondtransfereruniqueid']==_0x30bf9d[_0x2504('0x50')]){if(!_[_0x2504('0x20')](queues[_0x30bf9d[_0x2504('0x4f')]])){utils['info'](util[_0x2504('0x4')](_0x2504('0x5e'),_0x30bf9d[_0x2504('0x52')],queues[_0x30bf9d[_0x2504('0x4f')]][_0x2504('0x1e')],_0x30bf9d[_0x2504('0x5f')],_0x30bf9d[_0x2504('0x60')]));queues[_0x30bf9d[_0x2504('0x4f')]]['transfer']=!![];queues[_0x30bf9d[_0x2504('0x4f')]][_0x2504('0x54')]=_0x2504('0x55');queues[_0x30bf9d[_0x2504('0x4f')]]['transferexten']=_0x30bf9d['secondtransfererexten'];queues[_0x30bf9d[_0x2504('0x4f')]]['transferuniqueid']=_0x30bf9d['secondtransfereruniqueid'];queues[_0x30bf9d['origtransfererlinkedid']][_0x2504('0x9')]=_0x2504('0x57');}if(!_[_0x2504('0x20')](queues[_0x30bf9d[_0x2504('0x50')]])){if(_0x30bf9d[_0x2504('0x61')]&&queues[_0x30bf9d[_0x2504('0x61')]]){queues[_0x30bf9d[_0x2504('0x61')]][_0x2504('0x62')]=0x1;queues[_0x30bf9d[_0x2504('0x59')]]=_[_0x2504('0x63')](queues[_0x30bf9d['transfertargetlinkedid']]);queues[_0x30bf9d[_0x2504('0x59')]][_0x2504('0xf')]=_0x30bf9d[_0x2504('0x59')];queues[_0x30bf9d[_0x2504('0x59')]]['queuecallerenterreason']=0x2;queues[_0x30bf9d['transfertargetuniqueid']][_0x2504('0x5a')]=queues[_0x30bf9d['origtransfererlinkedid']][_0x2504('0x5a')];queues[_0x30bf9d[_0x2504('0x59')]][_0x2504('0x5b')]=queues[_0x30bf9d[_0x2504('0x4f')]][_0x2504('0x5b')];queues[_0x30bf9d[_0x2504('0x59')]]['queuecallerjoinAt']=utils[_0x2504('0x14')]();queues[_0x30bf9d[_0x2504('0x59')]][_0x2504('0x30')]=utils['now']();queues[_0x30bf9d[_0x2504('0x59')]][_0x2504('0x31')]=0x0;queues[_0x30bf9d[_0x2504('0x59')]][_0x2504('0x5c')]=0x0;utils['info'](util['format'](_0x2504('0x64'),_0x30bf9d[_0x2504('0x52')],queues[_0x30bf9d[_0x2504('0x59')]][_0x2504('0x1e')],queues[_0x30bf9d[_0x2504('0x59')]][_0x2504('0xf')],queues[_0x30bf9d['transfertargetuniqueid']][_0x2504('0x5a')],queues[_0x30bf9d[_0x2504('0x59')]][_0x2504('0x5b')]));}else{utils[_0x2504('0x3')](util[_0x2504('0x4')](_0x2504('0x5d'),_0x30bf9d[_0x2504('0x52')],queues[_0x30bf9d['secondtransfererlinkedid']][_0x2504('0x1e')],_0x30bf9d[_0x2504('0x4f')]));queues[_0x30bf9d['secondtransfererlinkedid']][_0x2504('0xf')]=_0x30bf9d[_0x2504('0x4f')];}}}}catch(_0x389333){utils[_0x2504('0x36')](util['format'](_0x2504('0x4e'),_0x30bf9d[_0x2504('0x52')]),_0x389333);}};exports[_0x2504('0x65')]=function(_0x4057cd){try{if(!_['isNil'](queues[_0x4057cd['uniqueid']])){utils[_0x2504('0x10')](util['format'](_0x2504('0x66'),_0x4057cd[_0x2504('0x6')]),_0x4057cd);queues[_0x4057cd[_0x2504('0x6')]][_0x2504('0x67')]=utils[_0x2504('0x14')]();utils[_0x2504('0x3')](util[_0x2504('0x4')](_0x2504('0x68'),_0x4057cd[_0x2504('0x6')],queues[_0x4057cd[_0x2504('0x6')]][_0x2504('0x1e')],queues[_0x4057cd[_0x2504('0x6')]][_0x2504('0x67')]));}}catch(_0x36b835){utils[_0x2504('0x36')](util['format']('[%s][queues][musiconholdstart]',_0x4057cd['uniqueid']),_0x36b835);}};exports['musiconholdstop']=function(_0x172086){try{if(!_[_0x2504('0x20')](queues[_0x172086['uniqueid']])){if(!_[_0x2504('0x20')](queues[_0x172086[_0x2504('0x6')]][_0x2504('0x67')])){utils['debug'](util[_0x2504('0x4')](_0x2504('0x69'),_0x172086[_0x2504('0x6')]),_0x172086);queues[_0x172086[_0x2504('0x6')]][_0x2504('0x5c')]+=utils[_0x2504('0x32')](utils['now'](),queues[_0x172086[_0x2504('0x6')]]['musiconholdstartAt']);utils['info'](util['format']('[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s',_0x172086[_0x2504('0x6')],queues[_0x172086['uniqueid']][_0x2504('0x1e')],queues[_0x172086['uniqueid']][_0x2504('0x5c')]));delete queues[_0x172086[_0x2504('0x6')]]['musiconholdstartAt'];}}}catch(_0x10186a){utils['error'](util[_0x2504('0x4')](_0x2504('0x69'),_0x172086[_0x2504('0x6')]),_0x10186a);}};
\ No newline at end of file
index 97586f7..c5ce331 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf979=['uniqueid','accountcode','getUserByInternal','then','membername','UserId','request','CreateVoiceRecording','newchannel','debug','context','exten','channel','error','[%s][recordings][newchannel]','newstate','[%s][recordings][newstate]','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','transfer','linkedid','varset','variable','mixmonitor_filename','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','.wav49','replace','.WAV','find','monitors','push','[%s][recordings][varset]','hangup','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','outbound','forEach','[%s][recordings][hangup]','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','set','startsWith','toLowerCase','split','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','queue','lodash','util','./utils','info','format','[%s][recordings][writeDB]'];(function(_0x139f28,_0x2ed8a0){var _0x48ca7b=function(_0x11d89b){while(--_0x11d89b){_0x139f28['push'](_0x139f28['shift']());}};_0x48ca7b(++_0x2ed8a0);}(_0xf979,0x13f));var _0x9f97=function(_0x329000,_0x220523){_0x329000=_0x329000-0x0;var _0x3a8072=_0xf979[_0x329000];return _0x3a8072;};'use strict';var _=require(_0x9f97('0x0'));var util=require(_0x9f97('0x1'));var utils=require(_0x9f97('0x2'));var recordings={};function writeDB(_0x3ba871){utils[_0x9f97('0x3')](util[_0x9f97('0x4')](_0x9f97('0x5'),_0x3ba871[_0x9f97('0x6')]));if(_0x3ba871[_0x9f97('0x7')]){utils[_0x9f97('0x8')](_0x3ba871[_0x9f97('0x7')])[_0x9f97('0x9')](function(_0x32d5bc){if(_0x32d5bc){_0x3ba871[_0x9f97('0xa')]=_0x32d5bc['name'];_0x3ba871[_0x9f97('0xb')]=_0x32d5bc['id'];}utils[_0x9f97('0xc')](_0x9f97('0xd'),_0x3ba871);});}else{utils['request'](_0x9f97('0xd'),_0x3ba871);}}exports[_0x9f97('0xe')]=function(_0x547140){try{utils[_0x9f97('0xf')](util[_0x9f97('0x4')]('[%s][recordings][newchannel]',_0x547140['uniqueid']),_0x547140);if(_0x547140['uniqueid']==_0x547140['linkedid']){utils['info'](util['format']('[%s][recordings][newchannel]\x20context:%s\x20exten:%s',_0x547140[_0x9f97('0x6')],_0x547140[_0x9f97('0x10')],_0x547140[_0x9f97('0x11')]));recordings[_0x547140['uniqueid']]={'uniqueid':_0x547140[_0x9f97('0x6')],'accountcode':_0x547140[_0x9f97('0x7')],'exten':_0x547140[_0x9f97('0x11')],'context':_0x547140['context'],'channel':_0x547140[_0x9f97('0x12')],'monitors':[]};}}catch(_0x17f3f5){utils[_0x9f97('0x13')](util['format'](_0x9f97('0x14'),_0x547140[_0x9f97('0x6')]),_0x17f3f5);}};exports[_0x9f97('0x15')]=function(_0x9d61c2){try{utils[_0x9f97('0xf')](util[_0x9f97('0x4')](_0x9f97('0x16'),_0x9d61c2[_0x9f97('0x6')]),_0x9d61c2);if(!_[_0x9f97('0x17')](recordings[_0x9d61c2[_0x9f97('0x6')]])&&_0x9d61c2[_0x9f97('0x18')]==0x6){utils[_0x9f97('0x3')](util['format'](_0x9f97('0x19'),_0x9d61c2[_0x9f97('0x6')],_0x9d61c2[_0x9f97('0x10')],_0x9d61c2['channel']));}else if(!_[_0x9f97('0x17')](recordings[_0x9d61c2['linkedid']])&&_0x9d61c2['channelstate']==0x6&&_0x9d61c2[_0x9f97('0x10')]!=_0x9f97('0x1a')){utils[_0x9f97('0x3')](util[_0x9f97('0x4')]('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x9d61c2[_0x9f97('0x6')],_0x9d61c2[_0x9f97('0x1b')],_0x9d61c2['context'],_0x9d61c2[_0x9f97('0x12')]));recordings[_0x9d61c2[_0x9f97('0x1b')]][_0x9f97('0x7')]=_0x9d61c2['accountcode'];}}catch(_0x5e5393){utils[_0x9f97('0x13')](util['format']('[%s][recordings][newstate]',_0x9d61c2[_0x9f97('0x6')]),_0x5e5393);}};exports[_0x9f97('0x1c')]=function(_0x35a5ee){try{if(!_['isNil'](_0x35a5ee[_0x9f97('0x1d')])&&!_[_0x9f97('0x17')](_0x35a5ee[_0x9f97('0x1d')][_0x9f97('0x1e')])){utils[_0x9f97('0xf')](util[_0x9f97('0x4')]('[%s][recordings][varset]',_0x35a5ee[_0x9f97('0x6')]),_0x35a5ee);utils[_0x9f97('0x3')](util['format'](_0x9f97('0x1f'),_0x35a5ee['uniqueid'],_0x35a5ee[_0x9f97('0x1d')],_0x35a5ee[_0x9f97('0x20')]));if(_[_0x9f97('0x21')](_0x35a5ee[_0x9f97('0x20')],_0x9f97('0x22'))){_0x35a5ee['value']=_0x35a5ee['value'][_0x9f97('0x23')](_0x9f97('0x22'),_0x9f97('0x24'));}if(recordings[_0x35a5ee['linkedid']]){var _0x3b1b62=_[_0x9f97('0x25')](recordings[_0x35a5ee[_0x9f97('0x1b')]][_0x9f97('0x26')],{'value':_0x35a5ee[_0x9f97('0x20')]});if(_[_0x9f97('0x17')](_0x3b1b62)){recordings[_0x35a5ee[_0x9f97('0x1b')]][_0x9f97('0x26')][_0x9f97('0x27')]({'value':_0x35a5ee[_0x9f97('0x20')]});}}}}catch(_0x394e26){utils['error'](util['format'](_0x9f97('0x28'),_0x35a5ee['uniqueid']),_0x394e26);}};exports[_0x9f97('0x29')]=function(_0x135e86){try{if(!_[_0x9f97('0x17')](recordings[_0x135e86[_0x9f97('0x6')]])){utils[_0x9f97('0xf')](util['format']('[%s][recordings][hangup]',_0x135e86[_0x9f97('0x6')]),_0x135e86);utils[_0x9f97('0x3')](util[_0x9f97('0x4')](_0x9f97('0x2a'),_0x135e86[_0x9f97('0x6')],_0x135e86[_0x9f97('0x2b')],_0x135e86[_0x9f97('0x2c')],_0x135e86[_0x9f97('0x2d')]));recordings[_0x135e86[_0x9f97('0x6')]][_0x9f97('0x2b')]=_0x135e86['calleridnum'];recordings[_0x135e86['uniqueid']][_0x9f97('0x2c')]=_0x135e86[_0x9f97('0x2c')];recordings[_0x135e86[_0x9f97('0x6')]][_0x9f97('0x2e')]=_0x135e86[_0x9f97('0x2e')];recordings[_0x135e86[_0x9f97('0x6')]][_0x9f97('0x2f')]=_0x135e86[_0x9f97('0x2f')];if(recordings[_0x135e86[_0x9f97('0x6')]]['type']==_0x9f97('0x30')&&recordings[_0x135e86[_0x9f97('0x6')]]['accountcode']){recordings[_0x135e86[_0x9f97('0x6')]]['connectedlinenum']=recordings[_0x135e86['uniqueid']][_0x9f97('0x7')];recordings[_0x135e86[_0x9f97('0x6')]]['connectedlinename']='';}recordings[_0x135e86[_0x9f97('0x6')]][_0x9f97('0x26')][_0x9f97('0x31')](function(_0x17c6e0){var _0x3ca1d8=_['clone'](recordings[_0x135e86[_0x9f97('0x6')]]);_0x3ca1d8[_0x9f97('0x20')]=_0x17c6e0['value'];writeDB(_0x3ca1d8);});delete recordings[_0x135e86[_0x9f97('0x6')]];}}catch(_0x5290a2){utils[_0x9f97('0x13')](util['format'](_0x9f97('0x32'),_0x135e86[_0x9f97('0x6')]),_0x5290a2);}};exports[_0x9f97('0x33')]=function(_0x48612f){try{if(!_[_0x9f97('0x17')](recordings[_0x48612f['uniqueid']])){utils[_0x9f97('0xf')](util['format'](_0x9f97('0x34'),_0x48612f[_0x9f97('0x6')]),_0x48612f);utils[_0x9f97('0x3')](util[_0x9f97('0x4')](_0x9f97('0x35'),_0x48612f['uniqueid'],_0x48612f[_0x9f97('0x36')],_0x48612f[_0x9f97('0x37')]));if(_0x48612f[_0x9f97('0x36')]['toLowerCase']()==_0x9f97('0x38')&&_[_0x9f97('0x39')](_0x48612f[_0x9f97('0x37')][_0x9f97('0x3a')](),'cdr')){var _0x5b18e5=_0x48612f[_0x9f97('0x37')][_0x9f97('0x3b')]('=');var _0x26837b=_0x5b18e5[0x0][_0x9f97('0x3c')](_0x5b18e5[0x0]['lastIndexOf']('(')+0x1,_0x5b18e5[0x0][_0x9f97('0x3d')](')'));var _0xef4119=_0x5b18e5[0x1];recordings[_0x48612f[_0x9f97('0x6')]][_0x26837b]=_0xef4119;}}}catch(_0xb250f5){utils[_0x9f97('0x13')](util[_0x9f97('0x4')]('[%s][recordings][newexten]',_0x48612f['uniqueid']),_0xb250f5);}};exports[_0x9f97('0x3e')]=function(_0x59cb9e){try{if(!_['isNil'](recordings[_0x59cb9e[_0x9f97('0x6')]])){utils['debug'](util[_0x9f97('0x4')](_0x9f97('0x3f'),_0x59cb9e[_0x9f97('0x6')]),_0x59cb9e);utils['info'](util['format']('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x59cb9e[_0x9f97('0x6')],_0x59cb9e[_0x9f97('0x40')]));recordings[_0x59cb9e[_0x9f97('0x6')]][_0x9f97('0x40')]=_0x59cb9e[_0x9f97('0x40')];}}catch(_0x55f9ca){utils['error'](util[_0x9f97('0x4')]('[%s][recordings][queuecallerjoin]',_0x59cb9e['uniqueid']),_0x55f9ca);}};
\ No newline at end of file
+var _0x5ee1=['split','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','lodash','util','./utils','info','format','[%s][recordings][writeDB]','uniqueid','getUserByInternal','accountcode','membername','name','UserId','request','CreateVoiceRecording','newchannel','debug','[%s][recordings][newchannel]','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','error','newstate','[%s][recordings][newstate]','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','isNil','linkedid','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','variable','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','endsWith','value','replace','.wav49','.WAV','monitors','push','hangup','[%s][recordings][hangup]','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','clone','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','startsWith'];(function(_0xb7e9b8,_0x45eec8){var _0x41d33c=function(_0x4c551e){while(--_0x4c551e){_0xb7e9b8['push'](_0xb7e9b8['shift']());}};_0x41d33c(++_0x45eec8);}(_0x5ee1,0x10a));var _0x15ee=function(_0x22c5c7,_0x3b5bca){_0x22c5c7=_0x22c5c7-0x0;var _0x2c49ea=_0x5ee1[_0x22c5c7];return _0x2c49ea;};'use strict';var _=require(_0x15ee('0x0'));var util=require(_0x15ee('0x1'));var utils=require(_0x15ee('0x2'));var recordings={};function writeDB(_0x18665e){utils[_0x15ee('0x3')](util[_0x15ee('0x4')](_0x15ee('0x5'),_0x18665e[_0x15ee('0x6')]));if(_0x18665e['accountcode']){utils[_0x15ee('0x7')](_0x18665e[_0x15ee('0x8')])['then'](function(_0x10926b){if(_0x10926b){_0x18665e[_0x15ee('0x9')]=_0x10926b[_0x15ee('0xa')];_0x18665e[_0x15ee('0xb')]=_0x10926b['id'];}utils[_0x15ee('0xc')](_0x15ee('0xd'),_0x18665e);});}else{utils[_0x15ee('0xc')](_0x15ee('0xd'),_0x18665e);}}exports[_0x15ee('0xe')]=function(_0x3ebf58){try{utils[_0x15ee('0xf')](util[_0x15ee('0x4')](_0x15ee('0x10'),_0x3ebf58[_0x15ee('0x6')]),_0x3ebf58);if(_0x3ebf58['uniqueid']==_0x3ebf58['linkedid']){utils[_0x15ee('0x3')](util[_0x15ee('0x4')](_0x15ee('0x11'),_0x3ebf58[_0x15ee('0x6')],_0x3ebf58[_0x15ee('0x12')],_0x3ebf58[_0x15ee('0x13')]));recordings[_0x3ebf58['uniqueid']]={'uniqueid':_0x3ebf58[_0x15ee('0x6')],'accountcode':_0x3ebf58['accountcode'],'exten':_0x3ebf58[_0x15ee('0x13')],'context':_0x3ebf58[_0x15ee('0x12')],'channel':_0x3ebf58[_0x15ee('0x14')],'monitors':[]};}}catch(_0xc4dc20){utils[_0x15ee('0x15')](util[_0x15ee('0x4')](_0x15ee('0x10'),_0x3ebf58['uniqueid']),_0xc4dc20);}};exports[_0x15ee('0x16')]=function(_0x278470){try{utils[_0x15ee('0xf')](util['format'](_0x15ee('0x17'),_0x278470[_0x15ee('0x6')]),_0x278470);if(!_['isNil'](recordings[_0x278470['uniqueid']])&&_0x278470[_0x15ee('0x18')]==0x6){utils[_0x15ee('0x3')](util[_0x15ee('0x4')](_0x15ee('0x19'),_0x278470[_0x15ee('0x6')],_0x278470['context'],_0x278470[_0x15ee('0x14')]));}else if(!_[_0x15ee('0x1a')](recordings[_0x278470[_0x15ee('0x1b')]])&&_0x278470['channelstate']==0x6&&_0x278470[_0x15ee('0x12')]!=_0x15ee('0x1c')){utils[_0x15ee('0x3')](util[_0x15ee('0x4')](_0x15ee('0x1d'),_0x278470['uniqueid'],_0x278470['linkedid'],_0x278470[_0x15ee('0x12')],_0x278470[_0x15ee('0x14')]));recordings[_0x278470[_0x15ee('0x1b')]][_0x15ee('0x8')]=_0x278470[_0x15ee('0x8')];}}catch(_0xcd42cb){utils[_0x15ee('0x15')](util[_0x15ee('0x4')](_0x15ee('0x17'),_0x278470['uniqueid']),_0xcd42cb);}};exports[_0x15ee('0x1e')]=function(_0x35ef3f){try{if(!_['isNil'](_0x35ef3f['variable'])&&!_[_0x15ee('0x1a')](_0x35ef3f[_0x15ee('0x1f')][_0x15ee('0x20')])){utils['debug'](util[_0x15ee('0x4')](_0x15ee('0x21'),_0x35ef3f['uniqueid']),_0x35ef3f);utils[_0x15ee('0x3')](util['format'](_0x15ee('0x22'),_0x35ef3f[_0x15ee('0x6')],_0x35ef3f[_0x15ee('0x1f')],_0x35ef3f['value']));if(_[_0x15ee('0x23')](_0x35ef3f[_0x15ee('0x24')],'.wav49')){_0x35ef3f[_0x15ee('0x24')]=_0x35ef3f[_0x15ee('0x24')][_0x15ee('0x25')](_0x15ee('0x26'),_0x15ee('0x27'));}if(recordings[_0x35ef3f[_0x15ee('0x1b')]]){var _0x4dcf97=_['find'](recordings[_0x35ef3f['linkedid']][_0x15ee('0x28')],{'value':_0x35ef3f[_0x15ee('0x24')]});if(_[_0x15ee('0x1a')](_0x4dcf97)){recordings[_0x35ef3f[_0x15ee('0x1b')]][_0x15ee('0x28')][_0x15ee('0x29')]({'value':_0x35ef3f[_0x15ee('0x24')]});}}}}catch(_0x143918){utils[_0x15ee('0x15')](util[_0x15ee('0x4')](_0x15ee('0x21'),_0x35ef3f['uniqueid']),_0x143918);}};exports[_0x15ee('0x2a')]=function(_0x1934e5){try{if(!_['isNil'](recordings[_0x1934e5['uniqueid']])){utils[_0x15ee('0xf')](util[_0x15ee('0x4')](_0x15ee('0x2b'),_0x1934e5[_0x15ee('0x6')]),_0x1934e5);utils[_0x15ee('0x3')](util['format']('[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s',_0x1934e5[_0x15ee('0x6')],_0x1934e5[_0x15ee('0x2c')],_0x1934e5[_0x15ee('0x2d')],_0x1934e5[_0x15ee('0x2e')]));recordings[_0x1934e5[_0x15ee('0x6')]]['calleridnum']=_0x1934e5[_0x15ee('0x2c')];recordings[_0x1934e5['uniqueid']][_0x15ee('0x2d')]=_0x1934e5[_0x15ee('0x2d')];recordings[_0x1934e5[_0x15ee('0x6')]]['connectedlinenum']=_0x1934e5[_0x15ee('0x2f')];recordings[_0x1934e5[_0x15ee('0x6')]]['connectedlinename']=_0x1934e5[_0x15ee('0x30')];if(recordings[_0x1934e5[_0x15ee('0x6')]][_0x15ee('0x31')]==_0x15ee('0x32')&&recordings[_0x1934e5[_0x15ee('0x6')]][_0x15ee('0x8')]){recordings[_0x1934e5['uniqueid']][_0x15ee('0x2f')]=recordings[_0x1934e5[_0x15ee('0x6')]]['accountcode'];recordings[_0x1934e5[_0x15ee('0x6')]][_0x15ee('0x30')]='';}recordings[_0x1934e5[_0x15ee('0x6')]]['monitors']['forEach'](function(_0x2d0ed7){var _0x2b4c5e=_[_0x15ee('0x33')](recordings[_0x1934e5[_0x15ee('0x6')]]);_0x2b4c5e[_0x15ee('0x24')]=_0x2d0ed7[_0x15ee('0x24')];writeDB(_0x2b4c5e);});delete recordings[_0x1934e5[_0x15ee('0x6')]];}}catch(_0x42a8e5){utils[_0x15ee('0x15')](util[_0x15ee('0x4')](_0x15ee('0x2b'),_0x1934e5[_0x15ee('0x6')]),_0x42a8e5);}};exports[_0x15ee('0x34')]=function(_0x9e04ce){try{if(!_[_0x15ee('0x1a')](recordings[_0x9e04ce[_0x15ee('0x6')]])){utils[_0x15ee('0xf')](util['format'](_0x15ee('0x35'),_0x9e04ce[_0x15ee('0x6')]),_0x9e04ce);utils[_0x15ee('0x3')](util[_0x15ee('0x4')](_0x15ee('0x36'),_0x9e04ce[_0x15ee('0x6')],_0x9e04ce[_0x15ee('0x37')],_0x9e04ce[_0x15ee('0x38')]));if(_0x9e04ce[_0x15ee('0x37')][_0x15ee('0x39')]()=='set'&&_[_0x15ee('0x3a')](_0x9e04ce[_0x15ee('0x38')][_0x15ee('0x39')](),'cdr')){var _0x4f3d45=_0x9e04ce[_0x15ee('0x38')][_0x15ee('0x3b')]('=');var _0x469889=_0x4f3d45[0x0]['substring'](_0x4f3d45[0x0][_0x15ee('0x3c')]('(')+0x1,_0x4f3d45[0x0][_0x15ee('0x3c')](')'));var _0xf170cf=_0x4f3d45[0x1];recordings[_0x9e04ce['uniqueid']][_0x469889]=_0xf170cf;}}}catch(_0x821e68){utils[_0x15ee('0x15')](util[_0x15ee('0x4')](_0x15ee('0x35'),_0x9e04ce[_0x15ee('0x6')]),_0x821e68);}};exports[_0x15ee('0x3d')]=function(_0x19f0d3){try{if(!_['isNil'](recordings[_0x19f0d3['uniqueid']])){utils['debug'](util[_0x15ee('0x4')](_0x15ee('0x3e'),_0x19f0d3[_0x15ee('0x6')]),_0x19f0d3);utils[_0x15ee('0x3')](util['format'](_0x15ee('0x3f'),_0x19f0d3['uniqueid'],_0x19f0d3[_0x15ee('0x40')]));recordings[_0x19f0d3[_0x15ee('0x6')]][_0x15ee('0x40')]=_0x19f0d3[_0x15ee('0x40')];}}catch(_0x356812){utils[_0x15ee('0x15')](util[_0x15ee('0x4')](_0x15ee('0x3e'),_0x19f0d3[_0x15ee('0x6')]),_0x356812);}};
\ No newline at end of file
index 05d9589..7a4cad6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2f4=['format','[%s][transfers][writeDB]\x20type:%s','origtransfereruniqueid','uniqueid','type','request','CreateVoiceTransferReport','blinds','debug','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','blind','transfereruniqueid','error','attendedtransfer','[%s][transfers][attendedtransfer]','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransfererchannel','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererexten','isNil','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','lodash','util','./utils','info'];(function(_0x57c40d,_0x49c7d0){var _0x3f16fe=function(_0x29713c){while(--_0x29713c){_0x57c40d['push'](_0x57c40d['shift']());}};_0x3f16fe(++_0x49c7d0);}(_0xb2f4,0x176));var _0x4b2f=function(_0x5dc2fa,_0x56279d){_0x5dc2fa=_0x5dc2fa-0x0;var _0x16eaf9=_0xb2f4[_0x5dc2fa];return _0x16eaf9;};'use strict';var _=require(_0x4b2f('0x0'));var util=require(_0x4b2f('0x1'));var utils=require(_0x4b2f('0x2'));function writeDB(_0x1f709b){utils[_0x4b2f('0x3')](util[_0x4b2f('0x4')](_0x4b2f('0x5'),_0x1f709b['type']==='attended'?_0x1f709b[_0x4b2f('0x6')]:_0x1f709b[_0x4b2f('0x7')],_0x1f709b[_0x4b2f('0x8')]));utils[_0x4b2f('0x9')](_0x4b2f('0xa'),_0x1f709b);}exports[_0x4b2f('0xb')]={};exports['blindtransfer']=function(_0x510763){try{utils[_0x4b2f('0xc')](util[_0x4b2f('0x4')](_0x4b2f('0xd'),_0x510763[_0x4b2f('0x7')]),_0x510763);utils['info'](util['format'](_0x4b2f('0xe'),_0x510763[_0x4b2f('0x7')],_0x510763[_0x4b2f('0xf')],_0x510763[_0x4b2f('0x10')],_0x510763[_0x4b2f('0x11')],_0x510763['transfereecalleridname']));_0x510763[_0x4b2f('0x8')]=_0x4b2f('0x12');exports['blinds'][_0x510763[_0x4b2f('0x13')]]=_0x510763;writeDB(_0x510763);}catch(_0x493520){utils[_0x4b2f('0x14')](util[_0x4b2f('0x4')](_0x4b2f('0xd'),_0x510763[_0x4b2f('0x7')]),_0x493520);}};exports[_0x4b2f('0x15')]=function(_0x27cd49){try{utils[_0x4b2f('0xc')](util[_0x4b2f('0x4')](_0x4b2f('0x16'),_0x27cd49[_0x4b2f('0x6')]),_0x27cd49);utils[_0x4b2f('0x3')](util['format']('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x27cd49[_0x4b2f('0x6')],_0x27cd49[_0x4b2f('0x17')],_0x27cd49[_0x4b2f('0x18')],_0x27cd49[_0x4b2f('0x19')],_0x27cd49[_0x4b2f('0x1a')]));_0x27cd49=_[_0x4b2f('0x1b')](_0x27cd49,{'transfererchannel':_0x27cd49[_0x4b2f('0x1c')],'transferercalleridnum':_0x27cd49[_0x4b2f('0x17')],'transferercalleridname':_0x27cd49[_0x4b2f('0x18')],'transfererconnectedlinenum':_0x27cd49[_0x4b2f('0x1d')],'transfererconnectedlinename':_0x27cd49[_0x4b2f('0x1e')],'transfereraccountcode':_0x27cd49[_0x4b2f('0x1f')],'transferercontext':_0x27cd49[_0x4b2f('0x20')],'transfererexten':_0x27cd49[_0x4b2f('0x21')],'transfererlinkedid':_0x27cd49['origtransfererlinkedid'],'context':_0x27cd49['origtransferercontext'],'extension':_0x27cd49[_0x4b2f('0x22')],'type':'attended'});if(_[_0x4b2f('0x23')](_0x27cd49['transfereechannel'])){_0x27cd49=_[_0x4b2f('0x1b')](_0x27cd49,{'transfereechannel':_0x27cd49[_0x4b2f('0x24')],'transfereecalleridnum':_0x27cd49[_0x4b2f('0x19')],'transfereecalleridname':_0x27cd49['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x27cd49[_0x4b2f('0x25')],'transfereeconnectedlinename':_0x27cd49[_0x4b2f('0x26')],'transfereeaccountcode':_0x27cd49[_0x4b2f('0x27')],'transfereecontext':_0x27cd49[_0x4b2f('0x28')],'transfereeexten':_0x27cd49[_0x4b2f('0x29')],'transfereelinkedid':_0x27cd49['transfertargetlinkedid']});}writeDB(_0x27cd49);}catch(_0x4cc286){utils['error'](util[_0x4b2f('0x4')](_0x4b2f('0x16'),_0x27cd49[_0x4b2f('0x6')]),_0x4cc286);}};
\ No newline at end of file
+var _0xb64e=['type','attended','origtransfereruniqueid','uniqueid','CreateVoiceTransferReport','blinds','blindtransfer','debug','format','transferercalleridname','transfereecalleridnum','transfereecalleridname','blind','transfereruniqueid','attendedtransfer','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','assign','origtransfererchannel','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfererexten','isNil','transfereechannel','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','lodash','util','./utils','info'];(function(_0x4cbf20,_0x1bfa66){var _0x582ae4=function(_0x5eca38){while(--_0x5eca38){_0x4cbf20['push'](_0x4cbf20['shift']());}};_0x582ae4(++_0x1bfa66);}(_0xb64e,0x149));var _0xeb64=function(_0x4bbc15,_0x5ed722){_0x4bbc15=_0x4bbc15-0x0;var _0x192991=_0xb64e[_0x4bbc15];return _0x192991;};'use strict';var _=require(_0xeb64('0x0'));var util=require(_0xeb64('0x1'));var utils=require(_0xeb64('0x2'));function writeDB(_0x455194){utils[_0xeb64('0x3')](util['format']('[%s][transfers][writeDB]\x20type:%s',_0x455194[_0xeb64('0x4')]===_0xeb64('0x5')?_0x455194[_0xeb64('0x6')]:_0x455194[_0xeb64('0x7')],_0x455194['type']));utils['request'](_0xeb64('0x8'),_0x455194);}exports[_0xeb64('0x9')]={};exports[_0xeb64('0xa')]=function(_0x317c11){try{utils[_0xeb64('0xb')](util[_0xeb64('0xc')]('[%s][transfers][blindtransfer]',_0x317c11[_0xeb64('0x7')]),_0x317c11);utils[_0xeb64('0x3')](util['format']('[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x317c11['uniqueid'],_0x317c11['transferercalleridnum'],_0x317c11[_0xeb64('0xd')],_0x317c11[_0xeb64('0xe')],_0x317c11[_0xeb64('0xf')]));_0x317c11[_0xeb64('0x4')]=_0xeb64('0x10');exports[_0xeb64('0x9')][_0x317c11[_0xeb64('0x11')]]=_0x317c11;writeDB(_0x317c11);}catch(_0x38e921){utils['error'](util[_0xeb64('0xc')]('[%s][transfers][blindtransfer]',_0x317c11[_0xeb64('0x7')]),_0x38e921);}};exports[_0xeb64('0x12')]=function(_0x129b1c){try{utils[_0xeb64('0xb')](util[_0xeb64('0xc')](_0xeb64('0x13'),_0x129b1c[_0xeb64('0x6')]),_0x129b1c);utils['info'](util[_0xeb64('0xc')](_0xeb64('0x14'),_0x129b1c[_0xeb64('0x6')],_0x129b1c[_0xeb64('0x15')],_0x129b1c[_0xeb64('0x16')],_0x129b1c[_0xeb64('0x17')],_0x129b1c['transfertargetcalleridname']));_0x129b1c=_[_0xeb64('0x18')](_0x129b1c,{'transfererchannel':_0x129b1c[_0xeb64('0x19')],'transferercalleridnum':_0x129b1c[_0xeb64('0x15')],'transferercalleridname':_0x129b1c[_0xeb64('0x16')],'transfererconnectedlinenum':_0x129b1c[_0xeb64('0x1a')],'transfererconnectedlinename':_0x129b1c[_0xeb64('0x1b')],'transfereraccountcode':_0x129b1c['origtransfereraccountcode'],'transferercontext':_0x129b1c['secondtransferercontext'],'transfererexten':_0x129b1c['secondtransfererexten'],'transfererlinkedid':_0x129b1c['origtransfererlinkedid'],'context':_0x129b1c['origtransferercontext'],'extension':_0x129b1c[_0xeb64('0x1c')],'type':_0xeb64('0x5')});if(_[_0xeb64('0x1d')](_0x129b1c[_0xeb64('0x1e')])){_0x129b1c=_[_0xeb64('0x18')](_0x129b1c,{'transfereechannel':_0x129b1c['transfertargetchannel'],'transfereecalleridnum':_0x129b1c['transfertargetcalleridnum'],'transfereecalleridname':_0x129b1c[_0xeb64('0x1f')],'transfereeconnectedlinenum':_0x129b1c[_0xeb64('0x20')],'transfereeconnectedlinename':_0x129b1c[_0xeb64('0x21')],'transfereeaccountcode':_0x129b1c[_0xeb64('0x22')],'transfereecontext':_0x129b1c[_0xeb64('0x23')],'transfereeexten':_0x129b1c[_0xeb64('0x24')],'transfereelinkedid':_0x129b1c['transfertargetlinkedid']});}writeDB(_0x129b1c);}catch(_0x4b1aab){utils['error'](util[_0xeb64('0xc')]('[%s][transfers][attendedtransfer]',_0x129b1c[_0xeb64('0x6')]),_0x4b1aab);}};
\ No newline at end of file
index 6977068..59610ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca8b=['seconds','YYYY-MM-DD\x20HH:mm:ss','subtractTime','format','diffTime','diff','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','moment','client','http','../../config/logger','xdr','info','debug','inspect','error','request','then','[utils][request]\x20name:%s','catch','GetUser','internal','name','[utils][getUser]\x20where:%s','stringify','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInternal]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','type','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','[utils][getVoiceQueueByName]','addTime','add'];(function(_0x5ee823,_0x24650b){var _0x209bd2=function(_0xa72379){while(--_0xa72379){_0x5ee823['push'](_0x5ee823['shift']());}};_0x209bd2(++_0x24650b);}(_0xca8b,0x130));var _0xbca8=function(_0x4aebb4,_0x3a30e0){_0x4aebb4=_0x4aebb4-0x0;var _0x205db0=_0xca8b[_0x4aebb4];return _0x205db0;};'use strict';var BPromise=require(_0xbca8('0x0'));var jayson=require(_0xbca8('0x1'));var moment=require(_0xbca8('0x2'));var util=require('util');var client=jayson[_0xbca8('0x3')][_0xbca8('0x4')]({'port':0x2329});var logger=require(_0xbca8('0x5'))(_0xbca8('0x6'));exports['info']=function(_0x214d7d,_0x59a9be){logger[_0xbca8('0x7')](_0x214d7d,_0x59a9be?util['inspect'](_0x59a9be,{'showHidden':![],'depth':null}):'');};exports['debug']=function(_0x139730,_0x507f40){logger[_0xbca8('0x8')](_0x139730,_0x507f40?util[_0xbca8('0x9')](_0x507f40,{'showHidden':![],'depth':null}):'');};exports[_0xbca8('0xa')]=function(_0x31c91f,_0x32cdff){logger[_0xbca8('0xa')](_0x31c91f,_0x32cdff?util[_0xbca8('0x9')](_0x32cdff,{'showHidden':![],'depth':null}):'');};exports['request']=function(_0x35f0fc,_0x636d1f){return client[_0xbca8('0xb')](_0x35f0fc,{'body':_0x636d1f})[_0xbca8('0xc')](function(_0x4e9d4b){logger[_0xbca8('0x8')](_0xbca8('0xd'),_0x35f0fc,_0x4e9d4b?util['inspect'](_0x4e9d4b,{'showHidden':![],'depth':null}):'');})[_0xbca8('0xe')](function(_0x11a0a3){logger[_0xbca8('0xa')](_0xbca8('0xd'),_0x35f0fc,_0x11a0a3?util[_0xbca8('0x9')](_0x11a0a3,{'showHidden':![],'depth':null}):'');});};function getUser(_0x1bfead){return client[_0xbca8('0xb')](_0xbca8('0xf'),{'options':{'raw':!![],'attributes':['id',_0xbca8('0x10'),_0xbca8('0x11'),'interface'],'where':_0x1bfead,'limit':0x1}})['then'](function(_0x254f70){logger[_0xbca8('0x8')](_0xbca8('0x12'),JSON[_0xbca8('0x13')](_0x1bfead),_0x254f70?util[_0xbca8('0x9')](_0x254f70,{'showHidden':![],'depth':null}):'');return _0x254f70[_0xbca8('0x14')][_0xbca8('0x15')]?_0x254f70[_0xbca8('0x14')][0x0]:null;});}exports[_0xbca8('0x16')]=function(_0x30f365){return new BPromise(function(_0x96cd7f,_0x4cef19){if(_0x30f365){return getUser({'internal':_0x30f365})[_0xbca8('0xc')](function(_0x3a5689){logger[_0xbca8('0x7')](_0xbca8('0x17'),_0x30f365,_0x3a5689?_0xbca8('0x18'):_0xbca8('0x19'));return _0x96cd7f(_0x3a5689);})[_0xbca8('0xe')](function(_0x30ce6f){logger[_0xbca8('0xa')](_0xbca8('0x1a'),_0x30ce6f?util[_0xbca8('0x9')](_0x30ce6f,{'showHidden':![],'depth':null}):'');return _0x96cd7f(null);});}return _0x96cd7f(null);});};exports['getUserByInterface']=function(_0x5457f8){return new BPromise(function(_0x18d8e5,_0x1a1e24){if(_0x5457f8){return getUser({'interface':_0x5457f8})[_0xbca8('0xc')](function(_0x242838){logger[_0xbca8('0x7')]('[utils][getUserByInterface]\x20interface:%s\x20%s',_0x5457f8,_0x242838?'found':_0xbca8('0x19'));return _0x18d8e5(_0x242838);})[_0xbca8('0xe')](function(_0x459295){logger[_0xbca8('0xa')]('[utils][getUserByInterface]',_0x459295?util[_0xbca8('0x9')](_0x459295,{'showHidden':![],'depth':null}):'');return _0x18d8e5(null);});}return _0x18d8e5(null);});};exports[_0xbca8('0x1b')]=function(_0x5f4e0e){return new BPromise(function(_0x7ecfb6,_0x17785e){if(_0x5f4e0e){return getUser({'name':_0x5f4e0e})[_0xbca8('0xc')](function(_0x87a4bf){logger[_0xbca8('0x7')](_0xbca8('0x1c'),_0x5f4e0e,_0x87a4bf?_0xbca8('0x18'):_0xbca8('0x19'));return _0x7ecfb6(_0x87a4bf);})[_0xbca8('0xe')](function(_0x54b934){logger['error'](_0xbca8('0x1d'),_0x54b934?util[_0xbca8('0x9')](_0x54b934,{'showHidden':![],'depth':null}):'');return _0x7ecfb6(null);});}return _0x7ecfb6(null);});};exports[_0xbca8('0x1e')]=function(_0x440786){return new BPromise(function(_0x554083,_0x41ba73){if(_0x440786){return client['request'](_0xbca8('0x1f'),{'options':{'raw':!![],'attributes':['id',_0xbca8('0x11'),_0xbca8('0x20'),'acw',_0xbca8('0x21')],'where':{'name':_0x440786},'limit':0x1}})['then'](function(_0x5e97ea){logger[_0xbca8('0x8')](_0xbca8('0x22'),_0x440786,_0x5e97ea?util[_0xbca8('0x9')](_0x5e97ea,{'showHidden':![],'depth':null}):'');logger[_0xbca8('0x7')](_0xbca8('0x23'),_0x440786,_0x5e97ea?_0xbca8('0x18'):_0xbca8('0x19'));return _0x554083(_0x5e97ea['result'][_0xbca8('0x15')]?_0x5e97ea['result'][0x0]:null);})[_0xbca8('0xe')](function(_0x309328){logger[_0xbca8('0xa')](_0xbca8('0x24'),_0x309328?util[_0xbca8('0x9')](_0x309328,{'showHidden':![],'depth':null}):'');return _0x554083(null);});}return _0x554083(null);});};exports[_0xbca8('0x25')]=function(_0x4392c3,_0x17db68){return moment(_0x4392c3)[_0xbca8('0x26')](_0x17db68,_0xbca8('0x27'))['format'](_0xbca8('0x28'));};exports[_0xbca8('0x29')]=function(_0x202029,_0x72f215){return moment(_0x202029)['subtract'](_0x72f215,'seconds')[_0xbca8('0x2a')](_0xbca8('0x28'));};exports[_0xbca8('0x2b')]=function(_0xbc1247,_0x4074da){return moment(_0xbc1247)[_0xbca8('0x2c')](moment(_0x4074da),_0xbca8('0x27'));};exports[_0xbca8('0x2d')]=function(_0x21787d,_0x4f22ee){return parseInt(_0x21787d,0xa)+parseInt(_0x4f22ee,0xa);};exports[_0xbca8('0x2e')]=function(){return moment()[_0xbca8('0x2a')](_0xbca8('0x28'));};exports['isAfter']=function(_0x3fe9b0,_0x313d39){if(_0x313d39){return moment(_0x3fe9b0)[_0xbca8('0x2f')](_0x313d39);}return!![];};exports['isBefore']=function(_0x4d94e9,_0x36bb80){if(_0x36bb80){return moment(_0x4d94e9)[_0xbca8('0x30')](_0x36bb80);}else if(_0x4d94e9){return!![];}return![];};
\ No newline at end of file
+var _0x6889=['info','debug','inspect','request','catch','GetUser','internal','interface','then','[utils][getUser]\x20where:%s','stringify','result','length','getUserByInternal','found','notfound','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','error','[utils][getUserByInterface]','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','name','type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','[utils][getVoiceQueueByName]','addTime','seconds','subtractTime','subtract','format','diffTime','diff','sumTime','isAfter','isBefore','bluebird','jayson/promise','moment','util','client','../../config/logger'];(function(_0x2ad3de,_0x5eb5c2){var _0x3e8ba2=function(_0x228458){while(--_0x228458){_0x2ad3de['push'](_0x2ad3de['shift']());}};_0x3e8ba2(++_0x5eb5c2);}(_0x6889,0x114));var _0x9688=function(_0x22f7aa,_0x5c01d8){_0x22f7aa=_0x22f7aa-0x0;var _0x9f6274=_0x6889[_0x22f7aa];return _0x9f6274;};'use strict';var BPromise=require(_0x9688('0x0'));var jayson=require(_0x9688('0x1'));var moment=require(_0x9688('0x2'));var util=require(_0x9688('0x3'));var client=jayson[_0x9688('0x4')]['http']({'port':0x2329});var logger=require(_0x9688('0x5'))('xdr');exports['info']=function(_0x36070d,_0x293b45){logger[_0x9688('0x6')](_0x36070d,_0x293b45?util['inspect'](_0x293b45,{'showHidden':![],'depth':null}):'');};exports[_0x9688('0x7')]=function(_0x2b8881,_0x340fe0){logger['debug'](_0x2b8881,_0x340fe0?util[_0x9688('0x8')](_0x340fe0,{'showHidden':![],'depth':null}):'');};exports['error']=function(_0x5428eb,_0x4567ac){logger['error'](_0x5428eb,_0x4567ac?util['inspect'](_0x4567ac,{'showHidden':![],'depth':null}):'');};exports['request']=function(_0x3171ed,_0x396ab2){return client[_0x9688('0x9')](_0x3171ed,{'body':_0x396ab2})['then'](function(_0x123c50){logger['debug']('[utils][request]\x20name:%s',_0x3171ed,_0x123c50?util['inspect'](_0x123c50,{'showHidden':![],'depth':null}):'');})[_0x9688('0xa')](function(_0x31017a){logger['error']('[utils][request]\x20name:%s',_0x3171ed,_0x31017a?util[_0x9688('0x8')](_0x31017a,{'showHidden':![],'depth':null}):'');});};function getUser(_0x1aa35b){return client[_0x9688('0x9')](_0x9688('0xb'),{'options':{'raw':!![],'attributes':['id',_0x9688('0xc'),'name',_0x9688('0xd')],'where':_0x1aa35b,'limit':0x1}})[_0x9688('0xe')](function(_0x2daabc){logger[_0x9688('0x7')](_0x9688('0xf'),JSON[_0x9688('0x10')](_0x1aa35b),_0x2daabc?util[_0x9688('0x8')](_0x2daabc,{'showHidden':![],'depth':null}):'');return _0x2daabc[_0x9688('0x11')][_0x9688('0x12')]?_0x2daabc[_0x9688('0x11')][0x0]:null;});}exports[_0x9688('0x13')]=function(_0x20a0f5){return new BPromise(function(_0x51fe0e,_0x1fa88b){if(_0x20a0f5){return getUser({'internal':_0x20a0f5})[_0x9688('0xe')](function(_0x3f3f76){logger[_0x9688('0x6')]('[utils][getUserByInternal]\x20internal:%s\x20%s',_0x20a0f5,_0x3f3f76?_0x9688('0x14'):_0x9688('0x15'));return _0x51fe0e(_0x3f3f76);})['catch'](function(_0x24b3da){logger['error']('[utils][getUserByInternal]',_0x24b3da?util[_0x9688('0x8')](_0x24b3da,{'showHidden':![],'depth':null}):'');return _0x51fe0e(null);});}return _0x51fe0e(null);});};exports[_0x9688('0x16')]=function(_0x5b3adc){return new BPromise(function(_0x146729,_0x56ac53){if(_0x5b3adc){return getUser({'interface':_0x5b3adc})[_0x9688('0xe')](function(_0x477a58){logger['info'](_0x9688('0x17'),_0x5b3adc,_0x477a58?_0x9688('0x14'):_0x9688('0x15'));return _0x146729(_0x477a58);})[_0x9688('0xa')](function(_0xb250da){logger[_0x9688('0x18')](_0x9688('0x19'),_0xb250da?util[_0x9688('0x8')](_0xb250da,{'showHidden':![],'depth':null}):'');return _0x146729(null);});}return _0x146729(null);});};exports['getUserByName']=function(_0x6471c){return new BPromise(function(_0x283fd5,_0x430341){if(_0x6471c){return getUser({'name':_0x6471c})[_0x9688('0xe')](function(_0x4ff594){logger['info'](_0x9688('0x1a'),_0x6471c,_0x4ff594?_0x9688('0x14'):_0x9688('0x15'));return _0x283fd5(_0x4ff594);})[_0x9688('0xa')](function(_0x1e645c){logger[_0x9688('0x18')](_0x9688('0x1b'),_0x1e645c?util[_0x9688('0x8')](_0x1e645c,{'showHidden':![],'depth':null}):'');return _0x283fd5(null);});}return _0x283fd5(null);});};exports[_0x9688('0x1c')]=function(_0x2be019){return new BPromise(function(_0x54f5c3,_0x338caa){if(_0x2be019){return client[_0x9688('0x9')](_0x9688('0x1d'),{'options':{'raw':!![],'attributes':['id',_0x9688('0x1e'),_0x9688('0x1f'),_0x9688('0x20'),_0x9688('0x21')],'where':{'name':_0x2be019},'limit':0x1}})['then'](function(_0x4a8168){logger['debug'](_0x9688('0x22'),_0x2be019,_0x4a8168?util[_0x9688('0x8')](_0x4a8168,{'showHidden':![],'depth':null}):'');logger['info'](_0x9688('0x23'),_0x2be019,_0x4a8168?_0x9688('0x14'):_0x9688('0x15'));return _0x54f5c3(_0x4a8168[_0x9688('0x11')]['length']?_0x4a8168[_0x9688('0x11')][0x0]:null);})[_0x9688('0xa')](function(_0x49725e){logger[_0x9688('0x18')](_0x9688('0x24'),_0x49725e?util[_0x9688('0x8')](_0x49725e,{'showHidden':![],'depth':null}):'');return _0x54f5c3(null);});}return _0x54f5c3(null);});};exports[_0x9688('0x25')]=function(_0x1249a9,_0x4bb748){return moment(_0x1249a9)['add'](_0x4bb748,_0x9688('0x26'))['format']('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x9688('0x27')]=function(_0xea231e,_0x2c262f){return moment(_0xea231e)[_0x9688('0x28')](_0x2c262f,_0x9688('0x26'))[_0x9688('0x29')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x9688('0x2a')]=function(_0x51dbf4,_0x32f573){return moment(_0x51dbf4)[_0x9688('0x2b')](moment(_0x32f573),_0x9688('0x26'));};exports[_0x9688('0x2c')]=function(_0xb01f17,_0x2f583f){return parseInt(_0xb01f17,0xa)+parseInt(_0x2f583f,0xa);};exports['now']=function(){return moment()['format']('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x9688('0x2d')]=function(_0x481a6a,_0xac2cfd){if(_0xac2cfd){return moment(_0x481a6a)[_0x9688('0x2d')](_0xac2cfd);}return!![];};exports[_0x9688('0x2e')]=function(_0x26814c,_0x379691){if(_0x379691){return moment(_0x26814c)[_0x9688('0x2e')](_0x379691);}else if(_0x26814c){return!![];}return![];};
\ No newline at end of file